{
  "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.25+commit.b61c2a91\"},\"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\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"project:/contracts/libs/WitnetBuffer.sol\":{\"keccak256\":\"0xa14570492eb5a313ddbacae0185c850ec99c67211eb33989a5e21d31bf06a150\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e83c11edb49cab6a767c0b685825bc22ece0d3d2897e0d54fe1923df5cc76ba5\",\"dweb:/ipfs/QmdLDgCc3tnKbgRrXwfNzsg6uUDirNmjvBB8V3iMmnD69a\"]}},\"version\":1}",
  "bytecode": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059d672e4b579f35c2957323dec59756218cb8e897d05385285f72f66db69dbe464736f6c63430008190033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122059d672e4b579f35c2957323dec59756218cb8e897d05385285f72f66db69dbe464736f6c63430008190033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [],
  "sourceMap": "644:23086:65:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;644:23086:65;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "644:23086:65:-: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 bytecode indexed 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 string indexed 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 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\\witnet\\witnet-solidity-bridge\\contracts\\libs\\WitnetBuffer.sol",
  "ast": {
    "absolutePath": "project:/contracts/libs/WitnetBuffer.sol",
    "exportedSymbols": {
      "WitnetBuffer": [
        19191
      ]
    },
    "id": 19192,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17559,
        "literals": [
          "solidity",
          ">=",
          "0.8",
          ".0",
          "<",
          "0.9",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "35:31:65"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "WitnetBuffer",
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 17560,
          "nodeType": "StructuredDocumentation",
          "src": "70:574:65",
          "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": 19191,
        "linearizedBaseContracts": [
          19191
        ],
        "name": "WitnetBuffer",
        "nameLocation": "652:12:65",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "errorSelector": "240db51c",
            "id": 17562,
            "name": "EmptyBuffer",
            "nameLocation": "678:11:65",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 17561,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "689:2:65"
            },
            "src": "672:20:65"
          },
          {
            "errorSelector": "63a056dd",
            "id": 17568,
            "name": "IndexOutOfBounds",
            "nameLocation": "702:16:65",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 17567,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17564,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "724:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17568,
                  "src": "719:10:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17563,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "719:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17566,
                  "mutability": "mutable",
                  "name": "range",
                  "nameLocation": "736:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17568,
                  "src": "731:10:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17565,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "731:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "718:24:65"
            },
            "src": "696:47:65"
          },
          {
            "errorSelector": "19e1b81c",
            "id": 17574,
            "name": "MissingArgs",
            "nameLocation": "753:11:65",
            "nodeType": "ErrorDefinition",
            "parameters": {
              "id": 17573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17570,
                  "mutability": "mutable",
                  "name": "expected",
                  "nameLocation": "770:8:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17574,
                  "src": "765:13:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17569,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "765:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17572,
                  "mutability": "mutable",
                  "name": "given",
                  "nameLocation": "785:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17574,
                  "src": "780:10:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17571,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "780:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "764:27:65"
            },
            "src": "747:45:65"
          },
          {
            "canonicalName": "WitnetBuffer.Buffer",
            "documentation": {
              "id": 17575,
              "nodeType": "StructuredDocumentation",
              "src": "798:26:65",
              "text": "Iterable bytes buffer."
            },
            "id": 17580,
            "members": [
              {
                "constant": false,
                "id": 17577,
                "mutability": "mutable",
                "name": "data",
                "nameLocation": "857:4:65",
                "nodeType": "VariableDeclaration",
                "scope": 17580,
                "src": "851:10:65",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 17576,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "851:5:65",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 17579,
                "mutability": "mutable",
                "name": "cursor",
                "nameLocation": "875:6:65",
                "nodeType": "VariableDeclaration",
                "scope": 17580,
                "src": "870:11:65",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 17578,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "870:4:65",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "Buffer",
            "nameLocation": "835:6:65",
            "nodeType": "StructDefinition",
            "scope": 19191,
            "src": "828:59:65",
            "visibility": "public"
          },
          {
            "body": {
              "id": 17597,
              "nodeType": "Block",
              "src": "993:95:65",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17588,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 17586,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17582,
                      "src": "1004:5:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 17587,
                      "name": "_range",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17584,
                      "src": "1012:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1004:14:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17595,
                  "nodeType": "IfStatement",
                  "src": "1000:75:65",
                  "trueBody": {
                    "id": 17594,
                    "nodeType": "Block",
                    "src": "1020:55:65",
                    "statements": [
                      {
                        "errorCall": {
                          "arguments": [
                            {
                              "id": 17590,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17582,
                              "src": "1053:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17591,
                              "name": "_range",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17584,
                              "src": "1060:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17589,
                            "name": "IndexOutOfBounds",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17568,
                            "src": "1036:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256) pure"
                            }
                          },
                          "id": 17592,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1036:31:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17593,
                        "nodeType": "RevertStatement",
                        "src": "1029:38:65"
                      }
                    ]
                  }
                },
                {
                  "id": 17596,
                  "nodeType": "PlaceholderStatement",
                  "src": "1081:1:65"
                }
              ]
            },
            "id": 17598,
            "name": "withinRange",
            "nameLocation": "956:11:65",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 17585,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17582,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "973:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17598,
                  "src": "968:10:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17581,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "968:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17584,
                  "mutability": "mutable",
                  "name": "_range",
                  "nameLocation": "985:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17598,
                  "src": "980:11:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17583,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "980:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "967:25:65"
            },
            "src": "947:141:65",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17646,
              "nodeType": "Block",
              "src": "1327:1316:65",
              "statements": [
                {
                  "id": 17645,
                  "nodeType": "UncheckedBlock",
                  "src": "1334:1304:65",
                  "statements": [
                    {
                      "assignments": [
                        17608
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17608,
                          "mutability": "mutable",
                          "name": "destinationPointer",
                          "nameLocation": "1358:18:65",
                          "nodeType": "VariableDeclaration",
                          "scope": 17645,
                          "src": "1353:23:65",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17607,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1353:4:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 17609,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1353:23:65"
                    },
                    {
                      "assignments": [
                        17611
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17611,
                          "mutability": "mutable",
                          "name": "destinationLength",
                          "nameLocation": "1390:17:65",
                          "nodeType": "VariableDeclaration",
                          "scope": 17645,
                          "src": "1385:22:65",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17610,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1385:4:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 17612,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1385:22:65"
                    },
                    {
                      "AST": {
                        "nativeSrc": "1425:171:65",
                        "nodeType": "YulBlock",
                        "src": "1425:171:65",
                        "statements": [
                          {
                            "nativeSrc": "1474:21:65",
                            "nodeType": "YulAssignment",
                            "src": "1474:21:65",
                            "value": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "1490:4:65",
                                  "nodeType": "YulLiteral",
                                  "src": "1490:4:65",
                                  "type": "",
                                  "value": "0x40"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nativeSrc": "1484:5:65",
                                "nodeType": "YulIdentifier",
                                "src": "1484:5:65"
                              },
                              "nativeSrc": "1484:11:65",
                              "nodeType": "YulFunctionCall",
                              "src": "1484:11:65"
                            },
                            "variableNames": [
                              {
                                "name": "output",
                                "nativeSrc": "1474:6:65",
                                "nodeType": "YulIdentifier",
                                "src": "1474:6:65"
                              }
                            ]
                          },
                          {
                            "nativeSrc": "1550:37:65",
                            "nodeType": "YulAssignment",
                            "src": "1550:37:65",
                            "value": {
                              "arguments": [
                                {
                                  "name": "output",
                                  "nativeSrc": "1576:6:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "1576:6:65"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "1584:2:65",
                                  "nodeType": "YulLiteral",
                                  "src": "1584:2:65",
                                  "type": "",
                                  "value": "32"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "1572:3:65",
                                "nodeType": "YulIdentifier",
                                "src": "1572:3:65"
                              },
                              "nativeSrc": "1572:15:65",
                              "nodeType": "YulFunctionCall",
                              "src": "1572:15:65"
                            },
                            "variableNames": [
                              {
                                "name": "destinationPointer",
                                "nativeSrc": "1550:18:65",
                                "nodeType": "YulIdentifier",
                                "src": "1550:18:65"
                              }
                            ]
                          }
                        ]
                      },
                      "evmVersion": "paris",
                      "externalReferences": [
                        {
                          "declaration": 17608,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1550:18:65",
                          "valueSize": 1
                        },
                        {
                          "declaration": 17605,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1474:6:65",
                          "valueSize": 1
                        },
                        {
                          "declaration": 17605,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1576:6:65",
                          "valueSize": 1
                        }
                      ],
                      "id": 17613,
                      "nodeType": "InlineAssembly",
                      "src": "1416:180:65"
                    },
                    {
                      "body": {
                        "id": 17642,
                        "nodeType": "Block",
                        "src": "1656:768:65",
                        "statements": [
                          {
                            "assignments": [
                              17626
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 17626,
                                "mutability": "mutable",
                                "name": "source",
                                "nameLocation": "1674:6:65",
                                "nodeType": "VariableDeclaration",
                                "scope": 17642,
                                "src": "1669:11:65",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 17625,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1669:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 17627,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1669:11:65"
                          },
                          {
                            "assignments": [
                              17629
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 17629,
                                "mutability": "mutable",
                                "name": "sourceLength",
                                "nameLocation": "1696:12:65",
                                "nodeType": "VariableDeclaration",
                                "scope": 17642,
                                "src": "1691:17:65",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 17628,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1691:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 17630,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1691:17:65"
                          },
                          {
                            "assignments": [
                              17632
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 17632,
                                "mutability": "mutable",
                                "name": "sourcePointer",
                                "nameLocation": "1724:13:65",
                                "nodeType": "VariableDeclaration",
                                "scope": 17642,
                                "src": "1719:18:65",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 17631,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1719:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 17633,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1719:18:65"
                          },
                          {
                            "AST": {
                              "nativeSrc": "1765:265:65",
                              "nodeType": "YulBlock",
                              "src": "1765:265:65",
                              "statements": [
                                {
                                  "nativeSrc": "1819:41:65",
                                  "nodeType": "YulAssignment",
                                  "src": "1819:41:65",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "_buffs",
                                            "nativeSrc": "1839:6:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "1839:6:65"
                                          },
                                          {
                                            "arguments": [
                                              {
                                                "name": "ix",
                                                "nativeSrc": "1851:2:65",
                                                "nodeType": "YulIdentifier",
                                                "src": "1851:2:65"
                                              },
                                              {
                                                "kind": "number",
                                                "nativeSrc": "1855:2:65",
                                                "nodeType": "YulLiteral",
                                                "src": "1855:2:65",
                                                "type": "",
                                                "value": "32"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mul",
                                              "nativeSrc": "1847:3:65",
                                              "nodeType": "YulIdentifier",
                                              "src": "1847:3:65"
                                            },
                                            "nativeSrc": "1847:11:65",
                                            "nodeType": "YulFunctionCall",
                                            "src": "1847:11:65"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "1835:3:65",
                                          "nodeType": "YulIdentifier",
                                          "src": "1835:3:65"
                                        },
                                        "nativeSrc": "1835:24:65",
                                        "nodeType": "YulFunctionCall",
                                        "src": "1835:24:65"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "1829:5:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "1829:5:65"
                                    },
                                    "nativeSrc": "1829:31:65",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1829:31:65"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "source",
                                      "nativeSrc": "1819:6:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "1819:6:65"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "1905:29:65",
                                  "nodeType": "YulAssignment",
                                  "src": "1905:29:65",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "source",
                                        "nativeSrc": "1927:6:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "1927:6:65"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mload",
                                      "nativeSrc": "1921:5:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "1921:5:65"
                                    },
                                    "nativeSrc": "1921:13:65",
                                    "nodeType": "YulFunctionCall",
                                    "src": "1921:13:65"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "sourceLength",
                                      "nativeSrc": "1905:12:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "1905:12:65"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "1987:32:65",
                                  "nodeType": "YulAssignment",
                                  "src": "1987:32:65",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "source",
                                        "nativeSrc": "2008:6:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "2008:6:65"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "2016:2:65",
                                        "nodeType": "YulLiteral",
                                        "src": "2016:2:65",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "2004:3:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "2004:3:65"
                                    },
                                    "nativeSrc": "2004:15:65",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2004:15:65"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "sourcePointer",
                                      "nativeSrc": "1987:13:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "1987:13:65"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "paris",
                            "externalReferences": [
                              {
                                "declaration": 17602,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1839:6:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17615,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1851:2:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17626,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1819:6:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17626,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1927:6:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17626,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2008:6:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17629,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1905:12:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17632,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "1987:13:65",
                                "valueSize": 1
                              }
                            ],
                            "id": 17634,
                            "nodeType": "InlineAssembly",
                            "src": "1756:274:65"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "id": 17636,
                                  "name": "destinationPointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17608,
                                  "src": "2059:18:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 17637,
                                  "name": "sourcePointer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17632,
                                  "src": "2090:13:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "id": 17638,
                                  "name": "sourceLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17629,
                                  "src": "2116:12:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 17635,
                                "name": "memcpy",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19190,
                                "src": "2040:6:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                  "typeString": "function (uint256,uint256,uint256) pure"
                                }
                              },
                              "id": 17639,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2040:99:65",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 17640,
                            "nodeType": "ExpressionStatement",
                            "src": "2040:99:65"
                          },
                          {
                            "AST": {
                              "nativeSrc": "2159:256:65",
                              "nodeType": "YulBlock",
                              "src": "2159:256:65",
                              "statements": [
                                {
                                  "nativeSrc": "2230:57:65",
                                  "nodeType": "YulAssignment",
                                  "src": "2230:57:65",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "destinationLength",
                                        "nativeSrc": "2255:17:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "2255:17:65"
                                      },
                                      {
                                        "name": "sourceLength",
                                        "nativeSrc": "2274:12:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "2274:12:65"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "2251:3:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "2251:3:65"
                                    },
                                    "nativeSrc": "2251:36:65",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2251:36:65"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "destinationLength",
                                      "nativeSrc": "2230:17:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "2230:17:65"
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "2345:59:65",
                                  "nodeType": "YulAssignment",
                                  "src": "2345:59:65",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "destinationPointer",
                                        "nativeSrc": "2371:18:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "2371:18:65"
                                      },
                                      {
                                        "name": "sourceLength",
                                        "nativeSrc": "2391:12:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "2391:12:65"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "2367:3:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "2367:3:65"
                                    },
                                    "nativeSrc": "2367:37:65",
                                    "nodeType": "YulFunctionCall",
                                    "src": "2367:37:65"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "destinationPointer",
                                      "nativeSrc": "2345:18:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "2345:18:65"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "paris",
                            "externalReferences": [
                              {
                                "declaration": 17611,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2230:17:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17611,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2255:17:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17608,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2345:18:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17608,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2371:18:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17629,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2274:12:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17629,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "2391:12:65",
                                "valueSize": 1
                              }
                            ],
                            "id": 17641,
                            "nodeType": "InlineAssembly",
                            "src": "2150:265:65"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17621,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 17618,
                          "name": "ix",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17615,
                          "src": "1628:2:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "expression": {
                            "id": 17619,
                            "name": "_buffs",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17602,
                            "src": "1634:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                              "typeString": "bytes memory[] memory"
                            }
                          },
                          "id": 17620,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1641:6:65",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "1634:13:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1628:19:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 17643,
                      "initializationExpression": {
                        "assignments": [
                          17615
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17615,
                            "mutability": "mutable",
                            "name": "ix",
                            "nameLocation": "1620:2:65",
                            "nodeType": "VariableDeclaration",
                            "scope": 17643,
                            "src": "1615:7:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17614,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "1615:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17617,
                        "initialValue": {
                          "hexValue": "31",
                          "id": 17616,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1625:1:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1615:11:65"
                      },
                      "isSimpleCounterLoop": false,
                      "loopExpression": {
                        "expression": {
                          "id": 17623,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "1649:5:65",
                          "subExpression": {
                            "id": 17622,
                            "name": "ix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17615,
                            "src": "1649:2:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17624,
                        "nodeType": "ExpressionStatement",
                        "src": "1649:5:65"
                      },
                      "nodeType": "ForStatement",
                      "src": "1610:814:65"
                    },
                    {
                      "AST": {
                        "nativeSrc": "2441:190:65",
                        "nodeType": "YulBlock",
                        "src": "2441:190:65",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "output",
                                  "nativeSrc": "2492:6:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "2492:6:65"
                                },
                                {
                                  "name": "destinationLength",
                                  "nativeSrc": "2500:17:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "2500:17:65"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nativeSrc": "2485:6:65",
                                "nodeType": "YulIdentifier",
                                "src": "2485:6:65"
                              },
                              "nativeSrc": "2485:33:65",
                              "nodeType": "YulFunctionCall",
                              "src": "2485:33:65"
                            },
                            "nativeSrc": "2485:33:65",
                            "nodeType": "YulExpressionStatement",
                            "src": "2485:33:65"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nativeSrc": "2571:4:65",
                                  "nodeType": "YulLiteral",
                                  "src": "2571:4:65",
                                  "type": "",
                                  "value": "0x40"
                                },
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2587:4:65",
                                          "nodeType": "YulLiteral",
                                          "src": "2587:4:65",
                                          "type": "",
                                          "value": "0x40"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "mload",
                                        "nativeSrc": "2581:5:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "2581:5:65"
                                      },
                                      "nativeSrc": "2581:11:65",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2581:11:65"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "name": "destinationLength",
                                          "nativeSrc": "2598:17:65",
                                          "nodeType": "YulIdentifier",
                                          "src": "2598:17:65"
                                        },
                                        {
                                          "kind": "number",
                                          "nativeSrc": "2617:2:65",
                                          "nodeType": "YulLiteral",
                                          "src": "2617:2:65",
                                          "type": "",
                                          "value": "32"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nativeSrc": "2594:3:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "2594:3:65"
                                      },
                                      "nativeSrc": "2594:26:65",
                                      "nodeType": "YulFunctionCall",
                                      "src": "2594:26:65"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "2577:3:65",
                                    "nodeType": "YulIdentifier",
                                    "src": "2577:3:65"
                                  },
                                  "nativeSrc": "2577:44:65",
                                  "nodeType": "YulFunctionCall",
                                  "src": "2577:44:65"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nativeSrc": "2564:6:65",
                                "nodeType": "YulIdentifier",
                                "src": "2564:6:65"
                              },
                              "nativeSrc": "2564:58:65",
                              "nodeType": "YulFunctionCall",
                              "src": "2564:58:65"
                            },
                            "nativeSrc": "2564:58:65",
                            "nodeType": "YulExpressionStatement",
                            "src": "2564:58:65"
                          }
                        ]
                      },
                      "evmVersion": "paris",
                      "externalReferences": [
                        {
                          "declaration": 17611,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "2500:17:65",
                          "valueSize": 1
                        },
                        {
                          "declaration": 17611,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "2598:17:65",
                          "valueSize": 1
                        },
                        {
                          "declaration": 17605,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "2492:6:65",
                          "valueSize": 1
                        }
                      ],
                      "id": 17644,
                      "nodeType": "InlineAssembly",
                      "src": "2432:199:65"
                    }
                  ]
                }
              ]
            },
            "documentation": {
              "id": 17599,
              "nodeType": "StructuredDocumentation",
              "src": "1094:133:65",
              "text": "@notice Concatenate undefinite number of bytes chunks.\n @dev Faster than looping on `abi.encodePacked(output, _buffs[ix])`."
            },
            "id": 17647,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "concat",
            "nameLocation": "1240:6:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17603,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17602,
                  "mutability": "mutable",
                  "name": "_buffs",
                  "nameLocation": "1262:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17647,
                  "src": "1247:21:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                    "typeString": "bytes[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 17600,
                      "name": "bytes",
                      "nodeType": "ElementaryTypeName",
                      "src": "1247:5:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage_ptr",
                        "typeString": "bytes"
                      }
                    },
                    "id": 17601,
                    "nodeType": "ArrayTypeName",
                    "src": "1247:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                      "typeString": "bytes[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1246:23:65"
            },
            "returnParameters": {
              "id": 17606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17605,
                  "mutability": "mutable",
                  "name": "output",
                  "nameLocation": "1316:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17647,
                  "src": "1303:19:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 17604,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1303:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1302:21:65"
            },
            "scope": 19191,
            "src": "1231:1412:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17663,
              "nodeType": "Block",
              "src": "2762:75:65",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 17657,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17650,
                          "src": "2791:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 17658,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2798:4:65",
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17577,
                        "src": "2791:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "expression": {
                          "id": 17659,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17650,
                          "src": "2811:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 17660,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "2818:6:65",
                        "memberName": "cursor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17579,
                        "src": "2811:13:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17656,
                      "name": "Buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17580,
                      "src": "2776:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_struct$_Buffer_$17580_storage_ptr_$",
                        "typeString": "type(struct WitnetBuffer.Buffer storage pointer)"
                      }
                    },
                    "id": 17661,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "structConstructorCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2776:55:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                      "typeString": "struct WitnetBuffer.Buffer memory"
                    }
                  },
                  "functionReturnParameters": 17655,
                  "id": 17662,
                  "nodeType": "Return",
                  "src": "2769:62:65"
                }
              ]
            },
            "id": 17664,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "fork",
            "nameLocation": "2658:4:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17651,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17650,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "2690:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17664,
                  "src": "2663:33:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 17649,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17648,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "2663:12:65",
                        "2676:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "2663:19:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "2663:19:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2662:35:65"
            },
            "returnParameters": {
              "id": 17655,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17654,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17664,
                  "src": "2731:26:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 17653,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17652,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "2731:12:65",
                        "2744:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "2731:19:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "2731:19:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2730:28:65"
            },
            "scope": 19191,
            "src": "2649:188:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17741,
              "nodeType": "Block",
              "src": "3042:310:65",
              "statements": [
                {
                  "assignments": [
                    17689
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17689,
                      "mutability": "mutable",
                      "name": "parts",
                      "nameLocation": "3064:5:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 17741,
                      "src": "3049:20:65",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                        "typeString": "bytes[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 17687,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3049:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 17688,
                        "nodeType": "ArrayTypeName",
                        "src": "3049:7:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17695,
                  "initialValue": {
                    "arguments": [
                      {
                        "hexValue": "33",
                        "id": 17693,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3084:1:65",
                        "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": 17692,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "3072:11:65",
                      "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": 17690,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "3076:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        },
                        "id": 17691,
                        "nodeType": "ArrayTypeName",
                        "src": "3076:7:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_storage_$dyn_storage_ptr",
                          "typeString": "bytes[]"
                        }
                      }
                    },
                    "id": 17694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3072:14:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                      "typeString": "bytes memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3049:37:65"
                },
                {
                  "expression": {
                    "id": 17705,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 17696,
                        "name": "parts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17689,
                        "src": "3093:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      },
                      "id": 17698,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 17697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3099:1:65",
                        "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:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 17700,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17667,
                          "src": "3117:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        {
                          "hexValue": "30",
                          "id": 17701,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3132:1:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        {
                          "expression": {
                            "id": 17702,
                            "name": "buffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17667,
                            "src": "3142:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                              "typeString": "struct WitnetBuffer.Buffer memory"
                            }
                          },
                          "id": 17703,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3149:6:65",
                          "memberName": "cursor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17579,
                          "src": "3142:13:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          },
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 17699,
                        "name": "peek",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          17814,
                          17842
                        ],
                        "referencedDeclaration": 17814,
                        "src": "3104:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                          "typeString": "function (struct WitnetBuffer.Buffer memory,uint256,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 17704,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3104:58:65",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3093:69:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 17706,
                  "nodeType": "ExpressionStatement",
                  "src": "3093:69:65"
                },
                {
                  "expression": {
                    "id": 17711,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 17707,
                        "name": "parts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17689,
                        "src": "3169:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      },
                      "id": 17709,
                      "indexExpression": {
                        "hexValue": "31",
                        "id": 17708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3175:1:65",
                        "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:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 17710,
                      "name": "pokes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17671,
                      "src": "3180:5:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3169:16:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 17712,
                  "nodeType": "ExpressionStatement",
                  "src": "3169:16:65"
                },
                {
                  "expression": {
                    "id": 17731,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 17713,
                        "name": "parts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17689,
                        "src": "3192:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes_memory_ptr_$dyn_memory_ptr",
                          "typeString": "bytes memory[] memory"
                        }
                      },
                      "id": 17715,
                      "indexExpression": {
                        "hexValue": "32",
                        "id": 17714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3198:1:65",
                        "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:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 17717,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17667,
                          "src": "3216:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 17718,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17667,
                              "src": "3231:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                "typeString": "struct WitnetBuffer.Buffer memory"
                              }
                            },
                            "id": 17719,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "3238:6:65",
                            "memberName": "cursor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17579,
                            "src": "3231:13:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "+",
                          "rightExpression": {
                            "id": 17720,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17669,
                            "src": "3247:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3231:22:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17729,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 17727,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "expression": {
                                  "id": 17722,
                                  "name": "buffer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17667,
                                  "src": "3262:6:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                    "typeString": "struct WitnetBuffer.Buffer memory"
                                  }
                                },
                                "id": 17723,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "3269:4:65",
                                "memberName": "data",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 17577,
                                "src": "3262:11:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              "id": 17724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3274:6:65",
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "src": "3262:18:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "expression": {
                                "id": 17725,
                                "name": "buffer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17667,
                                "src": "3283:6:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                  "typeString": "struct WitnetBuffer.Buffer memory"
                                }
                              },
                              "id": 17726,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberLocation": "3290:6:65",
                              "memberName": "cursor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 17579,
                              "src": "3283:13:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3262:34:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 17728,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17669,
                            "src": "3299:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3262:43:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 17716,
                        "name": "peek",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          17814,
                          17842
                        ],
                        "referencedDeclaration": 17814,
                        "src": "3203:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                          "typeString": "function (struct WitnetBuffer.Buffer memory,uint256,uint256) pure returns (bytes memory)"
                        }
                      },
                      "id": 17730,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3203:109:65",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3192:120:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 17732,
                  "nodeType": "ExpressionStatement",
                  "src": "3192:120:65"
                },
                {
                  "expression": {
                    "id": 17739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 17733,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17667,
                        "src": "3319:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 17735,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "3326:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "3319:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 17737,
                          "name": "parts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17689,
                          "src": "3340:5:65",
                          "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": 17736,
                        "name": "concat",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17647,
                        "src": "3333:6:65",
                        "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": 17738,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3333:13:65",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3319:27:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 17740,
                  "nodeType": "ExpressionStatement",
                  "src": "3319:27:65"
                }
              ]
            },
            "id": 17742,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 17674,
                    "name": "length",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17669,
                    "src": "2991:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17682,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 17680,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "expression": {
                            "id": 17675,
                            "name": "buffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17667,
                            "src": "2999:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                              "typeString": "struct WitnetBuffer.Buffer memory"
                            }
                          },
                          "id": 17676,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "3006:4:65",
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17577,
                          "src": "2999:11:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 17677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3011:6:65",
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "2999:18:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "-",
                      "rightExpression": {
                        "expression": {
                          "id": 17678,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17667,
                          "src": "3020:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 17679,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "3027:6:65",
                        "memberName": "cursor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17579,
                        "src": "3020:13:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "2999:34:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 17681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3036:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "2999:38:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 17683,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 17673,
                  "name": "withinRange",
                  "nameLocations": [
                    "2979:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "2979:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "2979:59:65"
              }
            ],
            "name": "mutate",
            "nameLocation": "2852:6:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17672,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17667,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "2894:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17742,
                  "src": "2867:33:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 17666,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17665,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "2867:12:65",
                        "2880:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "2867:19:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "2867:19:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17669,
                  "mutability": "mutable",
                  "name": "length",
                  "nameLocation": "2914:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17742,
                  "src": "2909:11:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17668,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2909:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17671,
                  "mutability": "mutable",
                  "name": "pokes",
                  "nameLocation": "2942:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17742,
                  "src": "2929:18:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 17670,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2929:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2858:96:65"
            },
            "returnParameters": {
              "id": 17684,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3042:0:65"
            },
            "scope": 19191,
            "src": "2843:509:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17765,
              "nodeType": "Block",
              "src": "3677:145:65",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "expression": {
                        "id": 17758,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17746,
                        "src": "3787:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 17759,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3794:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "3787:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 17763,
                    "indexExpression": {
                      "id": 17762,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3799:16:65",
                      "subExpression": {
                        "expression": {
                          "id": 17760,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17746,
                          "src": "3799:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 17761,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "memberLocation": "3806:6:65",
                        "memberName": "cursor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17579,
                        "src": "3799:13:65",
                        "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:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes1",
                      "typeString": "bytes1"
                    }
                  },
                  "functionReturnParameters": 17757,
                  "id": 17764,
                  "nodeType": "Return",
                  "src": "3780:36:65"
                }
              ]
            },
            "documentation": {
              "id": 17743,
              "nodeType": "StructuredDocumentation",
              "src": "3358:183:65",
              "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": 17766,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 17749,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17746,
                      "src": "3617:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 17750,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "3624:6:65",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17579,
                    "src": "3617:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 17751,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17746,
                        "src": "3632:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 17752,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3639:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "3632:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 17753,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "3644:6:65",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "3632:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 17754,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 17748,
                  "name": "withinRange",
                  "nameLocations": [
                    "3605:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "3605:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "3605:46:65"
              }
            ],
            "name": "next",
            "nameLocation": "3554:4:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17747,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17746,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "3573:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17766,
                  "src": "3559:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 17745,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17744,
                      "name": "Buffer",
                      "nameLocations": [
                        "3559:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "3559:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "3559:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3558:22:65"
            },
            "returnParameters": {
              "id": 17757,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17756,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17766,
                  "src": "3666:6:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes1",
                    "typeString": "bytes1"
                  },
                  "typeName": {
                    "id": 17755,
                    "name": "bytes1",
                    "nodeType": "ElementaryTypeName",
                    "src": "3666:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes1",
                      "typeString": "bytes1"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3665:8:65"
            },
            "scope": 19191,
            "src": "3545:277:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17813,
              "nodeType": "Block",
              "src": "4035:365:65",
              "statements": [
                {
                  "assignments": [
                    17787
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17787,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "4055:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 17813,
                      "src": "4042:17:65",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 17786,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4042:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17790,
                  "initialValue": {
                    "expression": {
                      "id": 17788,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17769,
                      "src": "4062:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 17789,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "4069:4:65",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17577,
                    "src": "4062:11:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4042:31:65"
                },
                {
                  "assignments": [
                    17792
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17792,
                      "mutability": "mutable",
                      "name": "peeks",
                      "nameLocation": "4093:5:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 17813,
                      "src": "4080:18:65",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 17791,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4080:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17797,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 17795,
                        "name": "length",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17773,
                        "src": "4111:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17794,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4101:9:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 17793,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "4105:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 17796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4101:17:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4080:38:65"
                },
                {
                  "assignments": [
                    17799
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17799,
                      "mutability": "mutable",
                      "name": "destinationPointer",
                      "nameLocation": "4130:18:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 17813,
                      "src": "4125:23:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17798,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4125:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17800,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4125:23:65"
                },
                {
                  "assignments": [
                    17802
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17802,
                      "mutability": "mutable",
                      "name": "sourcePointer",
                      "nameLocation": "4160:13:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 17813,
                      "src": "4155:18:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 17801,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4155:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17803,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4155:18:65"
                },
                {
                  "AST": {
                    "nativeSrc": "4189:103:65",
                    "nodeType": "YulBlock",
                    "src": "4189:103:65",
                    "statements": [
                      {
                        "nativeSrc": "4198:36:65",
                        "nodeType": "YulAssignment",
                        "src": "4198:36:65",
                        "value": {
                          "arguments": [
                            {
                              "name": "peeks",
                              "nativeSrc": "4224:5:65",
                              "nodeType": "YulIdentifier",
                              "src": "4224:5:65"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "4231:2:65",
                              "nodeType": "YulLiteral",
                              "src": "4231:2:65",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "4220:3:65",
                            "nodeType": "YulIdentifier",
                            "src": "4220:3:65"
                          },
                          "nativeSrc": "4220:14:65",
                          "nodeType": "YulFunctionCall",
                          "src": "4220:14:65"
                        },
                        "variableNames": [
                          {
                            "name": "destinationPointer",
                            "nativeSrc": "4198:18:65",
                            "nodeType": "YulIdentifier",
                            "src": "4198:18:65"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "4242:43:65",
                        "nodeType": "YulAssignment",
                        "src": "4242:43:65",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "data",
                                  "nativeSrc": "4267:4:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "4267:4:65"
                                },
                                {
                                  "kind": "number",
                                  "nativeSrc": "4273:2:65",
                                  "nodeType": "YulLiteral",
                                  "src": "4273:2:65",
                                  "type": "",
                                  "value": "32"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "4263:3:65",
                                "nodeType": "YulIdentifier",
                                "src": "4263:3:65"
                              },
                              "nativeSrc": "4263:13:65",
                              "nodeType": "YulFunctionCall",
                              "src": "4263:13:65"
                            },
                            {
                              "name": "offset",
                              "nativeSrc": "4278:6:65",
                              "nodeType": "YulIdentifier",
                              "src": "4278:6:65"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "4259:3:65",
                            "nodeType": "YulIdentifier",
                            "src": "4259:3:65"
                          },
                          "nativeSrc": "4259:26:65",
                          "nodeType": "YulFunctionCall",
                          "src": "4259:26:65"
                        },
                        "variableNames": [
                          {
                            "name": "sourcePointer",
                            "nativeSrc": "4242:13:65",
                            "nodeType": "YulIdentifier",
                            "src": "4242:13:65"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "paris",
                  "externalReferences": [
                    {
                      "declaration": 17787,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4267:4:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 17799,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4198:18:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 17771,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4278:6:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 17792,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4224:5:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 17802,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "4242:13:65",
                      "valueSize": 1
                    }
                  ],
                  "id": 17804,
                  "nodeType": "InlineAssembly",
                  "src": "4180:112:65"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17806,
                        "name": "destinationPointer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17799,
                        "src": "4313:18:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17807,
                        "name": "sourcePointer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17802,
                        "src": "4340:13:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17808,
                        "name": "length",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17773,
                        "src": "4362:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17805,
                      "name": "memcpy",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19190,
                      "src": "4298:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (uint256,uint256,uint256) pure"
                      }
                    },
                    "id": 17809,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4298:77:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17810,
                  "nodeType": "ExpressionStatement",
                  "src": "4298:77:65"
                },
                {
                  "expression": {
                    "id": 17811,
                    "name": "peeks",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17792,
                    "src": "4389:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 17785,
                  "id": 17812,
                  "nodeType": "Return",
                  "src": "4382:12:65"
                }
              ]
            },
            "id": 17814,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17778,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 17776,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17771,
                      "src": "3967:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "id": 17777,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17773,
                      "src": "3976:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3967:15:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 17779,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17769,
                        "src": "3984:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 17780,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "3991:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "3984:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 17781,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "3996:6:65",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "3984:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 17782,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 17775,
                  "name": "withinRange",
                  "nameLocations": [
                    "3955:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "3955:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "3955:48:65"
              }
            ],
            "name": "peek",
            "nameLocation": "3837:4:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17774,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17769,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "3877:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17814,
                  "src": "3850:33:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 17768,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17767,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "3850:12:65",
                        "3863:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "3850:19:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "3850:19:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17771,
                  "mutability": "mutable",
                  "name": "offset",
                  "nameLocation": "3897:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17814,
                  "src": "3892:11:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17770,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3892:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17773,
                  "mutability": "mutable",
                  "name": "length",
                  "nameLocation": "3917:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17814,
                  "src": "3912:11:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17772,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3912:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3841:89:65"
            },
            "returnParameters": {
              "id": 17785,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17784,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17814,
                  "src": "4018:12:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 17783,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4018:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4017:14:65"
            },
            "scope": 19191,
            "src": "3828:572:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17841,
              "nodeType": "Block",
              "src": "4840:83:65",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17835,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17818,
                        "src": "4867:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      {
                        "expression": {
                          "id": 17836,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17818,
                          "src": "4882:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 17837,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4889:6:65",
                        "memberName": "cursor",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17579,
                        "src": "4882:13:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17838,
                        "name": "length",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17820,
                        "src": "4904:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17834,
                      "name": "peek",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        17814,
                        17842
                      ],
                      "referencedDeclaration": 17814,
                      "src": "4854:4:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$_t_uint256_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (struct WitnetBuffer.Buffer memory,uint256,uint256) pure returns (bytes memory)"
                      }
                    },
                    "id": 17839,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4854:63:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "functionReturnParameters": 17833,
                  "id": 17840,
                  "nodeType": "Return",
                  "src": "4847:70:65"
                }
              ]
            },
            "documentation": {
              "id": 17815,
              "nodeType": "StructuredDocumentation",
              "src": "4482:103:65",
              "text": "@param buffer An instance of `Buffer`.\n @param length How many bytes to peek from the Buffer."
            },
            "id": 17842,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 17823,
                    "name": "length",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 17820,
                    "src": "4765:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17829,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "expression": {
                          "id": 17824,
                          "name": "buffer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17818,
                          "src": "4773:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                            "typeString": "struct WitnetBuffer.Buffer memory"
                          }
                        },
                        "id": 17825,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4780:4:65",
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 17577,
                        "src": "4773:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 17826,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4785:6:65",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "4773:18:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "expression": {
                        "id": 17827,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17818,
                        "src": "4794:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 17828,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "4801:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "4794:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4773:34:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 17830,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 17822,
                  "name": "withinRange",
                  "nameLocations": [
                    "4753:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "4753:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "4753:55:65"
              }
            ],
            "name": "peek",
            "nameLocation": "4655:4:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17821,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17818,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "4695:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17842,
                  "src": "4668:33:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 17817,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17816,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "4668:12:65",
                        "4681:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "4668:19:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "4668:19:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17820,
                  "mutability": "mutable",
                  "name": "length",
                  "nameLocation": "4715:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17842,
                  "src": "4710:11:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17819,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4710:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4659:69:65"
            },
            "returnParameters": {
              "id": 17833,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17832,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17842,
                  "src": "4823:12:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 17831,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4823:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4822:14:65"
            },
            "scope": 19191,
            "src": "4646:277:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17903,
              "nodeType": "Block",
              "src": "5417:767:65",
              "statements": [
                {
                  "expression": {
                    "id": 17867,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 17862,
                      "name": "output",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17860,
                      "src": "5478:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 17865,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17848,
                          "src": "5497:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "id": 17864,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "5487:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (bytes memory)"
                        },
                        "typeName": {
                          "id": 17863,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "5491:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        }
                      },
                      "id": 17866,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5487:17:65",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "5478:26:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 17868,
                  "nodeType": "ExpressionStatement",
                  "src": "5478:26:65"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 17869,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17848,
                      "src": "5567:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 17870,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5576:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "5567:10:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17902,
                  "nodeType": "IfStatement",
                  "src": "5563:616:65",
                  "trueBody": {
                    "id": 17901,
                    "nodeType": "Block",
                    "src": "5579:600:65",
                    "statements": [
                      {
                        "assignments": [
                          17873
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17873,
                            "mutability": "mutable",
                            "name": "input",
                            "nameLocation": "5601:5:65",
                            "nodeType": "VariableDeclaration",
                            "scope": 17901,
                            "src": "5588:18:65",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes"
                            },
                            "typeName": {
                              "id": 17872,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "5588:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_storage_ptr",
                                "typeString": "bytes"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17876,
                        "initialValue": {
                          "expression": {
                            "id": 17874,
                            "name": "buffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17846,
                            "src": "5609:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                              "typeString": "struct WitnetBuffer.Buffer memory"
                            }
                          },
                          "id": 17875,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5616:4:65",
                          "memberName": "data",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17577,
                          "src": "5609:11:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5588:32:65"
                      },
                      {
                        "assignments": [
                          17878
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17878,
                            "mutability": "mutable",
                            "name": "offset",
                            "nameLocation": "5634:6:65",
                            "nodeType": "VariableDeclaration",
                            "scope": 17901,
                            "src": "5629:11:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17877,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5629:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17881,
                        "initialValue": {
                          "expression": {
                            "id": 17879,
                            "name": "buffer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17846,
                            "src": "5643:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                              "typeString": "struct WitnetBuffer.Buffer memory"
                            }
                          },
                          "id": 17880,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "5650:6:65",
                          "memberName": "cursor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 17579,
                          "src": "5643:13:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5629:27:65"
                      },
                      {
                        "assignments": [
                          17883
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17883,
                            "mutability": "mutable",
                            "name": "sourcePointer",
                            "nameLocation": "5724:13:65",
                            "nodeType": "VariableDeclaration",
                            "scope": 17901,
                            "src": "5719:18:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17882,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5719:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17884,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5719:18:65"
                      },
                      {
                        "assignments": [
                          17886
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 17886,
                            "mutability": "mutable",
                            "name": "destinationPointer",
                            "nameLocation": "5751:18:65",
                            "nodeType": "VariableDeclaration",
                            "scope": 17901,
                            "src": "5746:23:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 17885,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5746:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 17887,
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5746:23:65"
                      },
                      {
                        "AST": {
                          "nativeSrc": "5787:111:65",
                          "nodeType": "YulBlock",
                          "src": "5787:111:65",
                          "statements": [
                            {
                              "nativeSrc": "5798:44:65",
                              "nodeType": "YulAssignment",
                              "src": "5798:44:65",
                              "value": {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "name": "input",
                                        "nativeSrc": "5823:5:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "5823:5:65"
                                      },
                                      {
                                        "kind": "number",
                                        "nativeSrc": "5830:2:65",
                                        "nodeType": "YulLiteral",
                                        "src": "5830:2:65",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "5819:3:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "5819:3:65"
                                    },
                                    "nativeSrc": "5819:14:65",
                                    "nodeType": "YulFunctionCall",
                                    "src": "5819:14:65"
                                  },
                                  {
                                    "name": "offset",
                                    "nativeSrc": "5835:6:65",
                                    "nodeType": "YulIdentifier",
                                    "src": "5835:6:65"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "5815:3:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "5815:3:65"
                                },
                                "nativeSrc": "5815:27:65",
                                "nodeType": "YulFunctionCall",
                                "src": "5815:27:65"
                              },
                              "variableNames": [
                                {
                                  "name": "sourcePointer",
                                  "nativeSrc": "5798:13:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "5798:13:65"
                                }
                              ]
                            },
                            {
                              "nativeSrc": "5852:37:65",
                              "nodeType": "YulAssignment",
                              "src": "5852:37:65",
                              "value": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nativeSrc": "5878:6:65",
                                    "nodeType": "YulIdentifier",
                                    "src": "5878:6:65"
                                  },
                                  {
                                    "kind": "number",
                                    "nativeSrc": "5886:2:65",
                                    "nodeType": "YulLiteral",
                                    "src": "5886:2:65",
                                    "type": "",
                                    "value": "32"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nativeSrc": "5874:3:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "5874:3:65"
                                },
                                "nativeSrc": "5874:15:65",
                                "nodeType": "YulFunctionCall",
                                "src": "5874:15:65"
                              },
                              "variableNames": [
                                {
                                  "name": "destinationPointer",
                                  "nativeSrc": "5852:18:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "5852:18:65"
                                }
                              ]
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 17886,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5852:18:65",
                            "valueSize": 1
                          },
                          {
                            "declaration": 17873,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5823:5:65",
                            "valueSize": 1
                          },
                          {
                            "declaration": 17878,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5835:6:65",
                            "valueSize": 1
                          },
                          {
                            "declaration": 17860,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5878:6:65",
                            "valueSize": 1
                          },
                          {
                            "declaration": 17883,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "5798:13:65",
                            "valueSize": 1
                          }
                        ],
                        "id": 17888,
                        "nodeType": "InlineAssembly",
                        "src": "5778:120:65"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17890,
                              "name": "destinationPointer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17886,
                              "src": "5980:18:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17891,
                              "name": "sourcePointer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17883,
                              "src": "6009:13:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "id": 17892,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17848,
                              "src": "6033:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 17889,
                            "name": "memcpy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19190,
                            "src": "5963:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                              "typeString": "function (uint256,uint256,uint256) pure"
                            }
                          },
                          "id": 17893,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5963:85:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 17894,
                        "nodeType": "ExpressionStatement",
                        "src": "5963:85:65"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "id": 17896,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17846,
                              "src": "6124:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                "typeString": "struct WitnetBuffer.Buffer memory"
                              }
                            },
                            {
                              "id": 17897,
                              "name": "length",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17848,
                              "src": "6141:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "hexValue": "74727565",
                              "id": 17898,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6158:4:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                "typeString": "struct WitnetBuffer.Buffer memory"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 17895,
                            "name": "seek",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              19125,
                              19143
                            ],
                            "referencedDeclaration": 19125,
                            "src": "6109:4:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                              "typeString": "function (struct WitnetBuffer.Buffer memory,uint256,bool) pure returns (uint256)"
                            }
                          },
                          "id": 17899,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6109:62:65",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17900,
                        "nodeType": "ExpressionStatement",
                        "src": "6109:62:65"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 17843,
              "nodeType": "StructuredDocumentation",
              "src": "4929:317:65",
              "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": 17904,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17854,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 17851,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17846,
                        "src": "5335:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 17852,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5342:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "5335:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "id": 17853,
                      "name": "length",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17848,
                      "src": "5351:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5335:22:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 17855,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17846,
                        "src": "5359:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 17856,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5366:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "5359:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 17857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "5371:6:65",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "5359:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 17858,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 17850,
                  "name": "withinRange",
                  "nameLocations": [
                    "5323:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "5323:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "5323:55:65"
              }
            ],
            "name": "read",
            "nameLocation": "5259:4:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17849,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17846,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "5278:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17904,
                  "src": "5264:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 17845,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17844,
                      "name": "Buffer",
                      "nameLocations": [
                        "5264:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "5264:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "5264:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17848,
                  "mutability": "mutable",
                  "name": "length",
                  "nameLocation": "5291:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17904,
                  "src": "5286:11:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17847,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5286:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5263:35:65"
            },
            "returnParameters": {
              "id": 17861,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17860,
                  "mutability": "mutable",
                  "name": "output",
                  "nameLocation": "5406:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 17904,
                  "src": "5393:19:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 17859,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5393:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5392:21:65"
            },
            "scope": 19191,
            "src": "5250:934:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18054,
              "nodeType": "Block",
              "src": "7043:1153:65",
              "statements": [
                {
                  "assignments": [
                    17914
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17914,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "7057:5:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18054,
                      "src": "7050:12:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 17913,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7050:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17918,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 17916,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17908,
                        "src": "7076:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      ],
                      "id": 17915,
                      "name": "readUint16",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18553,
                      "src": "7065:10:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$returns$_t_uint16_$",
                        "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint16)"
                      }
                    },
                    "id": 17917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7065:18:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7050:33:65"
                },
                {
                  "assignments": [
                    17920
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17920,
                      "mutability": "mutable",
                      "name": "sign",
                      "nameLocation": "7127:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18054,
                      "src": "7120:11:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 17919,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7120:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17924,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    },
                    "id": 17923,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 17921,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17914,
                      "src": "7134:5:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&",
                    "rightExpression": {
                      "hexValue": "307838303030",
                      "id": 17922,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7142:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32768_by_1",
                        "typeString": "int_const 32768"
                      },
                      "value": "0x8000"
                    },
                    "src": "7134:14:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7120:28:65"
                },
                {
                  "assignments": [
                    17926
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17926,
                      "mutability": "mutable",
                      "name": "exponent",
                      "nameLocation": "7274:8:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18054,
                      "src": "7268:14:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      },
                      "typeName": {
                        "id": 17925,
                        "name": "int32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7268:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int32",
                          "typeString": "int32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17938,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    },
                    "id": 17937,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          },
                          "id": 17934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "id": 17931,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 17929,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17914,
                                  "src": "7292:5:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307837633030",
                                  "id": 17930,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7300:6:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_31744_by_1",
                                    "typeString": "int_const 31744"
                                  },
                                  "value": "0x7c00"
                                },
                                "src": "7292:14:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              ],
                              "id": 17928,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7286:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int32_$",
                                "typeString": "type(int32)"
                              },
                              "typeName": {
                                "id": 17927,
                                "name": "int32",
                                "nodeType": "ElementaryTypeName",
                                "src": "7286:5:65",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 17932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7286:21:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "3130",
                            "id": 17933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7311:2:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_10_by_1",
                              "typeString": "int_const 10"
                            },
                            "value": "10"
                          },
                          "src": "7286:27:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        }
                      ],
                      "id": 17935,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "7285:29:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "hexValue": "3135",
                      "id": 17936,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7317:2:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_15_by_1",
                        "typeString": "int_const 15"
                      },
                      "value": "15"
                    },
                    "src": "7285:34:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7268:51:65"
                },
                {
                  "assignments": [
                    17940
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17940,
                      "mutability": "mutable",
                      "name": "fraction",
                      "nameLocation": "7357:8:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18054,
                      "src": "7351:14:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      },
                      "typeName": {
                        "id": 17939,
                        "name": "int32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7351:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int32",
                          "typeString": "int32"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17947,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 17945,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 17943,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17914,
                          "src": "7374:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&",
                        "rightExpression": {
                          "hexValue": "307830336666",
                          "id": 17944,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7382:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1023_by_1",
                            "typeString": "int_const 1023"
                          },
                          "value": "0x03ff"
                        },
                        "src": "7374:14:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      ],
                      "id": 17942,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "7368:5:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int32_$",
                        "typeString": "type(int32)"
                      },
                      "typeName": {
                        "id": 17941,
                        "name": "int32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7368:5:65",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 17946,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7368:21:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7351:38:65"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    },
                    "id": 17951,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 17948,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17926,
                      "src": "7456:8:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 17950,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "-",
                      "prefix": true,
                      "src": "7468:3:65",
                      "subExpression": {
                        "hexValue": "3135",
                        "id": 17949,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7469:2:65",
                        "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:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      },
                      "id": 17959,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 17957,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17926,
                        "src": "7517:8:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int32",
                          "typeString": "int32"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "3136",
                        "id": 17958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7529:2:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_16_by_1",
                          "typeString": "int_const 16"
                        },
                        "value": "16"
                      },
                      "src": "7517:14:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 17978,
                    "nodeType": "IfStatement",
                    "src": "7513:206:65",
                    "trueBody": {
                      "id": 17977,
                      "nodeType": "Block",
                      "src": "7533:186:65",
                      "statements": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "5769746e65744275666665722e72656164466c6f617431363a20",
                                        "id": 17965,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7595:28:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_34f674675c8354d2881e0fe40ffc802ad882f0cf9f9efc9643de3b2bc1155054",
                                          "typeString": "literal_string \"WitnetBuffer.readFloat16: \""
                                        },
                                        "value": "WitnetBuffer.readFloat16: "
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint32",
                                            "typeString": "uint32"
                                          },
                                          "id": 17968,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 17966,
                                            "name": "sign",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17920,
                                            "src": "7636:4:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint32",
                                              "typeString": "uint32"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 17967,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "7644:1:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "7636:9:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "hexValue": "",
                                          "id": 17970,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "hexString",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7661:5:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          },
                                          "value": ""
                                        },
                                        "id": 17971,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "7636:30:65",
                                        "trueExpression": {
                                          "hexValue": "6e65676174697665",
                                          "id": 17969,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7648:10:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_5c5e2f1fbc734e42aa272c3420aeb7631dc1efac79a3bf6e1303c2b8c0ccc2e4",
                                            "typeString": "literal_string \"negative\""
                                          },
                                          "value": "negative"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "hexValue": "20696e66696e697479",
                                        "id": 17972,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "7679:11:65",
                                        "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": 17963,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "7566:3:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 17964,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "7570:12:65",
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "src": "7566:16:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 17973,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7566:135:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 17962,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7559:6:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 17961,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7559:6:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 17974,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7559:143:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 17960,
                              "name": "revert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                4294967277,
                                4294967277
                              ],
                              "referencedDeclaration": 4294967277,
                              "src": "7542:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (string memory) pure"
                              }
                            },
                            "id": 17975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7542:169:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 17976,
                          "nodeType": "ExpressionStatement",
                          "src": "7542:169:65"
                        }
                      ]
                    }
                  },
                  "id": 17979,
                  "nodeType": "IfStatement",
                  "src": "7452:267:65",
                  "trueBody": {
                    "id": 17956,
                    "nodeType": "Block",
                    "src": "7473:34:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 17954,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17952,
                            "name": "fraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17940,
                            "src": "7482:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "hexValue": "3078343030",
                            "id": 17953,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7494:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1024_by_1",
                              "typeString": "int_const 1024"
                            },
                            "value": "0x400"
                          },
                          "src": "7482:17:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "id": 17955,
                        "nodeType": "ExpressionStatement",
                        "src": "7482:17:65"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    },
                    "id": 17982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 17980,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17926,
                      "src": "7785:8:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int32",
                        "typeString": "int32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 17981,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7797:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "7785:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18042,
                    "nodeType": "Block",
                    "src": "7944:139:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 18040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18011,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17911,
                            "src": "7953:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 18038,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 18035,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 18021,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "id": 18018,
                                              "name": "fraction",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 17940,
                                              "src": "7986:8:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int32",
                                                "typeString": "int32"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_int32",
                                                "typeString": "int32"
                                              }
                                            ],
                                            "id": 18017,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "7982:3:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_int256_$",
                                              "typeString": "type(int256)"
                                            },
                                            "typeName": {
                                              "id": 18016,
                                              "name": "int",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "7982:3:65",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 18019,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7982:13:65",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "3130303030",
                                          "id": 18020,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "8009:5:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10000_by_1",
                                            "typeString": "int_const 10000"
                                          },
                                          "value": "10000"
                                        },
                                        "src": "7982:32:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "arguments": [
                                          {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 18033,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "hexValue": "31",
                                              "id": 18024,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "8032:1:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "<<",
                                            "rightExpression": {
                                              "arguments": [
                                                {
                                                  "arguments": [
                                                    {
                                                      "id": 18030,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "UnaryOperation",
                                                      "operator": "-",
                                                      "prefix": true,
                                                      "src": "8046:10:65",
                                                      "subExpression": {
                                                        "id": 18029,
                                                        "name": "exponent",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 17926,
                                                        "src": "8048:8:65",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_int32",
                                                          "typeString": "int32"
                                                        }
                                                      },
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_int32",
                                                        "typeString": "int32"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_int32",
                                                        "typeString": "int32"
                                                      }
                                                    ],
                                                    "id": 18028,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "8042:3:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_int256_$",
                                                      "typeString": "type(int256)"
                                                    },
                                                    "typeName": {
                                                      "id": 18027,
                                                      "name": "int",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "8042:3:65",
                                                      "typeDescriptions": {}
                                                    }
                                                  },
                                                  "id": 18031,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "nameLocations": [],
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "8042:15:65",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_int256",
                                                    "typeString": "int256"
                                                  }
                                                ],
                                                "id": 18026,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "8037:4:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_uint256_$",
                                                  "typeString": "type(uint256)"
                                                },
                                                "typeName": {
                                                  "id": 18025,
                                                  "name": "uint",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "8037:4:65",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 18032,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "8037:21:65",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "8032:26:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          ],
                                          "id": 18023,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "nodeType": "ElementaryTypeNameExpression",
                                          "src": "8028:3:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_int256_$",
                                            "typeString": "type(int256)"
                                          },
                                          "typeName": {
                                            "id": 18022,
                                            "name": "int",
                                            "nodeType": "ElementaryTypeName",
                                            "src": "8028:3:65",
                                            "typeDescriptions": {}
                                          }
                                        },
                                        "id": 18034,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "nameLocations": [],
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "8028:31:65",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "src": "7982:77:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 18015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7968:3:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int256_$",
                                      "typeString": "type(int256)"
                                    },
                                    "typeName": {
                                      "id": 18014,
                                      "name": "int",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7968:3:65",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18036,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7968:100:65",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "3130",
                                  "id": 18037,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8072:2:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "7968:106:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 18013,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7962:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int32_$",
                                "typeString": "type(int32)"
                              },
                              "typeName": {
                                "id": 18012,
                                "name": "int32",
                                "nodeType": "ElementaryTypeName",
                                "src": "7962:5:65",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 18039,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7962:113:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "src": "7953:122:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "id": 18041,
                        "nodeType": "ExpressionStatement",
                        "src": "7953:122:65"
                      }
                    ]
                  },
                  "id": 18043,
                  "nodeType": "IfStatement",
                  "src": "7781:302:65",
                  "trueBody": {
                    "id": 18010,
                    "nodeType": "Block",
                    "src": "7800:138:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 18008,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17983,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17911,
                            "src": "7809:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                },
                                "id": 18006,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "arguments": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      },
                                      "id": 18003,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        },
                                        "id": 18001,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 17998,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "hexValue": "31",
                                                "id": 17990,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "7842:1:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "<<",
                                              "rightExpression": {
                                                "arguments": [
                                                  {
                                                    "arguments": [
                                                      {
                                                        "id": 17995,
                                                        "name": "exponent",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 17926,
                                                        "src": "7862:8:65",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_int32",
                                                          "typeString": "int32"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_int32",
                                                          "typeString": "int32"
                                                        }
                                                      ],
                                                      "id": 17994,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "lValueRequested": false,
                                                      "nodeType": "ElementaryTypeNameExpression",
                                                      "src": "7855:6:65",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_type$_t_int256_$",
                                                        "typeString": "type(int256)"
                                                      },
                                                      "typeName": {
                                                        "id": 17993,
                                                        "name": "int256",
                                                        "nodeType": "ElementaryTypeName",
                                                        "src": "7855:6:65",
                                                        "typeDescriptions": {}
                                                      }
                                                    },
                                                    "id": 17996,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "typeConversion",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "7855:16:65",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_int256",
                                                      "typeString": "int256"
                                                    }
                                                  ],
                                                  "id": 17992,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "7847:7:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_uint256_$",
                                                    "typeString": "type(uint256)"
                                                  },
                                                  "typeName": {
                                                    "id": 17991,
                                                    "name": "uint256",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "7847:7:65",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 17997,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "7847:25:65",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "7842:30:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 17989,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "7838:3:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_int256_$",
                                              "typeString": "type(int256)"
                                            },
                                            "typeName": {
                                              "id": 17988,
                                              "name": "int",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "7838:3:65",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 17999,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "7838:35:65",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_int256",
                                            "typeString": "int256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "hexValue": "3130303030",
                                          "id": 18000,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "7887:5:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_10000_by_1",
                                            "typeString": "int_const 10000"
                                          },
                                          "value": "10000"
                                        },
                                        "src": "7838:54:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int256",
                                          "typeString": "int256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "id": 18002,
                                        "name": "fraction",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 17940,
                                        "src": "7906:8:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_int32",
                                          "typeString": "int32"
                                        }
                                      },
                                      "src": "7838:76:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    ],
                                    "id": 17987,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7824:3:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_int256_$",
                                      "typeString": "type(int256)"
                                    },
                                    "typeName": {
                                      "id": 17986,
                                      "name": "int",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7824:3:65",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18004,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7824:99:65",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">>",
                                "rightExpression": {
                                  "hexValue": "3130",
                                  "id": 18005,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7927:2:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10_by_1",
                                    "typeString": "int_const 10"
                                  },
                                  "value": "10"
                                },
                                "src": "7824:105:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_int256",
                                  "typeString": "int256"
                                }
                              ],
                              "id": 17985,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "7818:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int32_$",
                                "typeString": "type(int32)"
                              },
                              "typeName": {
                                "id": 17984,
                                "name": "int32",
                                "nodeType": "ElementaryTypeName",
                                "src": "7818:5:65",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 18007,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7818:112:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "src": "7809:121:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "id": 18009,
                        "nodeType": "ExpressionStatement",
                        "src": "7809:121:65"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    },
                    "id": 18046,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 18044,
                      "name": "sign",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17920,
                      "src": "8151:4:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 18045,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8159:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "8151:9:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18053,
                  "nodeType": "IfStatement",
                  "src": "8147:44:65",
                  "trueBody": {
                    "id": 18052,
                    "nodeType": "Block",
                    "src": "8162:29:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 18050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18047,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17911,
                            "src": "8171:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int32",
                              "typeString": "int32"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "id": 18049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "8181:2:65",
                            "subExpression": {
                              "hexValue": "31",
                              "id": 18048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "8182:1:65",
                              "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:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int32",
                            "typeString": "int32"
                          }
                        },
                        "id": 18051,
                        "nodeType": "ExpressionStatement",
                        "src": "8171:12:65"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 17905,
              "nodeType": "StructuredDocumentation",
              "src": "6192:754:65",
              "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": 18055,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readFloat16",
            "nameLocation": "6959:11:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17909,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17908,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "6985:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18055,
                  "src": "6971:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 17907,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 17906,
                      "name": "Buffer",
                      "nameLocations": [
                        "6971:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "6971:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "6971:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6970:22:65"
            },
            "returnParameters": {
              "id": 17912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17911,
                  "mutability": "mutable",
                  "name": "result",
                  "nameLocation": "7032:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18055,
                  "src": "7026:12:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int32",
                    "typeString": "int32"
                  },
                  "typeName": {
                    "id": 17910,
                    "name": "int32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7026:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int32",
                      "typeString": "int32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7025:14:65"
            },
            "scope": 19191,
            "src": "6950:1246:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18192,
              "nodeType": "Block",
              "src": "9031:1130:65",
              "statements": [
                {
                  "assignments": [
                    18065
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18065,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "9043:5:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18192,
                      "src": "9038:10:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18064,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9038:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18069,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 18067,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18059,
                        "src": "9062:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      ],
                      "id": 18066,
                      "name": "readUint32",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18589,
                      "src": "9051:10:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$returns$_t_uint32_$",
                        "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint32)"
                      }
                    },
                    "id": 18068,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9051:18:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9038:31:65"
                },
                {
                  "assignments": [
                    18071
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18071,
                      "mutability": "mutable",
                      "name": "sign",
                      "nameLocation": "9111:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18192,
                      "src": "9106:9:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18070,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9106:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18075,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18074,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 18072,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18065,
                      "src": "9118:5:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&",
                    "rightExpression": {
                      "hexValue": "30783830303030303030",
                      "id": 18073,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9126:10:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2147483648_by_1",
                        "typeString": "int_const 2147483648"
                      },
                      "value": "0x80000000"
                    },
                    "src": "9118:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9106:30:65"
                },
                {
                  "assignments": [
                    18077
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18077,
                      "mutability": "mutable",
                      "name": "exponent",
                      "nameLocation": "9262:8:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18192,
                      "src": "9258:12:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 18076,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "9258:3:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18089,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 18088,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 18085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18082,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 18080,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18065,
                                  "src": "9278:5:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783766383030303030",
                                  "id": 18081,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "9286:10:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2139095040_by_1",
                                    "typeString": "int_const 2139095040"
                                  },
                                  "value": "0x7f800000"
                                },
                                "src": "9278:18:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 18079,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9274:3:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 18078,
                                "name": "int",
                                "nodeType": "ElementaryTypeName",
                                "src": "9274:3:65",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 18083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9274:23:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "3233",
                            "id": 18084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9301:2:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_23_by_1",
                              "typeString": "int_const 23"
                            },
                            "value": "23"
                          },
                          "src": "9274:29:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "id": 18086,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "9273:31:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "hexValue": "313237",
                      "id": 18087,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9307:3:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_127_by_1",
                        "typeString": "int_const 127"
                      },
                      "value": "127"
                    },
                    "src": "9273:37:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9258:52:65"
                },
                {
                  "assignments": [
                    18091
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18091,
                      "mutability": "mutable",
                      "name": "fraction",
                      "nameLocation": "9346:8:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18192,
                      "src": "9342:12:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 18090,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "9342:3:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18098,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18096,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 18094,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18065,
                          "src": "9361:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&",
                        "rightExpression": {
                          "hexValue": "30783030376666666666",
                          "id": 18095,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "9369:10:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_8388607_by_1",
                            "typeString": "int_const 8388607"
                          },
                          "value": "0x007fffff"
                        },
                        "src": "9361:18:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 18093,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "9357:3:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": {
                        "id": 18092,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "9357:3:65",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 18097,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9357:23:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9342:38:65"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 18102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 18099,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18077,
                      "src": "9448:8:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 18101,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "-",
                      "prefix": true,
                      "src": "9460:4:65",
                      "subExpression": {
                        "hexValue": "313237",
                        "id": 18100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9461:3:65",
                        "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:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 18110,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 18108,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18077,
                        "src": "9513:8:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "313238",
                        "id": 18109,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9525:3:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_128_by_1",
                          "typeString": "int_const 128"
                        },
                        "value": "128"
                      },
                      "src": "9513:15:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 18129,
                    "nodeType": "IfStatement",
                    "src": "9509:207:65",
                    "trueBody": {
                      "id": 18128,
                      "nodeType": "Block",
                      "src": "9530:186:65",
                      "statements": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "5769746e65744275666665722e72656164466c6f617433323a20",
                                        "id": 18116,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9592:28:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_be0cb2789421943803792602cd42479bd61d90cbfea056011c494e84e6306fc0",
                                          "typeString": "literal_string \"WitnetBuffer.readFloat32: \""
                                        },
                                        "value": "WitnetBuffer.readFloat32: "
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18119,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 18117,
                                            "name": "sign",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18071,
                                            "src": "9633:4:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 18118,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9641:1:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "9633:9:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "hexValue": "",
                                          "id": 18121,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "hexString",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9658:5:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          },
                                          "value": ""
                                        },
                                        "id": 18122,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "9633:30:65",
                                        "trueExpression": {
                                          "hexValue": "6e65676174697665",
                                          "id": 18120,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "9645:10:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_5c5e2f1fbc734e42aa272c3420aeb7631dc1efac79a3bf6e1303c2b8c0ccc2e4",
                                            "typeString": "literal_string \"negative\""
                                          },
                                          "value": "negative"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "hexValue": "20696e66696e697479",
                                        "id": 18123,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "9676:11:65",
                                        "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": 18114,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "9563:3:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 18115,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "9567:12:65",
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "src": "9563:16:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 18124,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9563:135:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 18113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9556:6:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 18112,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9556:6:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 18125,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9556:143:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 18111,
                              "name": "revert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                4294967277,
                                4294967277
                              ],
                              "referencedDeclaration": 4294967277,
                              "src": "9539:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (string memory) pure"
                              }
                            },
                            "id": 18126,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9539:169:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 18127,
                          "nodeType": "ExpressionStatement",
                          "src": "9539:169:65"
                        }
                      ]
                    }
                  },
                  "id": 18130,
                  "nodeType": "IfStatement",
                  "src": "9444:272:65",
                  "trueBody": {
                    "id": 18107,
                    "nodeType": "Block",
                    "src": "9466:37:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 18105,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18103,
                            "name": "fraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18091,
                            "src": "9475:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "hexValue": "3078383030303030",
                            "id": 18104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9487:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8388608_by_1",
                              "typeString": "int_const 8388608"
                            },
                            "value": "0x800000"
                          },
                          "src": "9475:20:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 18106,
                        "nodeType": "ExpressionStatement",
                        "src": "9475:20:65"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 18133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 18131,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18077,
                      "src": "9782:8:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 18132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9794:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "9782:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18180,
                    "nodeType": "Block",
                    "src": "9924:124:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 18178,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18157,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18062,
                            "src": "9933:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 18177,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 18174,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 18163,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18158,
                                      "name": "fraction",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18091,
                                      "src": "9953:8:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_rational_1000000000_by_1",
                                            "typeString": "int_const 1000000000"
                                          },
                                          "id": 18161,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 18159,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9977:2:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "hexValue": "39",
                                            "id": 18160,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9983:1:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_9_by_1",
                                              "typeString": "int_const 9"
                                            },
                                            "value": "9"
                                          },
                                          "src": "9977:7:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000_by_1",
                                            "typeString": "int_const 1000000000"
                                          }
                                        }
                                      ],
                                      "id": 18162,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9976:9:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000_by_1",
                                        "typeString": "int_const 1000000000"
                                      }
                                    },
                                    "src": "9953:32:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18172,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "31",
                                          "id": 18166,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "10003:1:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "id": 18170,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "UnaryOperation",
                                              "operator": "-",
                                              "prefix": true,
                                              "src": "10013:9:65",
                                              "subExpression": {
                                                "id": 18169,
                                                "name": "exponent",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18077,
                                                "src": "10014:8:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            ],
                                            "id": 18168,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "10008:4:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 18167,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "10008:4:65",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 18171,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "10008:15:65",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "10003:20:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 18165,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9999:3:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 18164,
                                        "name": "int",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "9999:3:65",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 18173,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9999:25:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "9953:71:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "id": 18175,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9942:92:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "3233",
                              "id": 18176,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10038:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_23_by_1",
                                "typeString": "int_const 23"
                              },
                              "value": "23"
                            },
                            "src": "9942:98:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "9933:107:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 18179,
                        "nodeType": "ExpressionStatement",
                        "src": "9933:107:65"
                      }
                    ]
                  },
                  "id": 18181,
                  "nodeType": "IfStatement",
                  "src": "9778:270:65",
                  "trueBody": {
                    "id": 18156,
                    "nodeType": "Block",
                    "src": "9797:121:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 18154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18134,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18062,
                            "src": "9806:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 18153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 18150,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 18148,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18142,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "31",
                                            "id": 18137,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9830:1:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "id": 18140,
                                                "name": "exponent",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18077,
                                                "src": "9840:8:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "id": 18139,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "9835:4:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 18138,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "9835:4:65",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 18141,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "9835:14:65",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "9830:19:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 18136,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "9826:3:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 18135,
                                          "name": "int",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "9826:3:65",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 18143,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "9826:24:65",
                                      "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": 18146,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 18144,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9865:2:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "hexValue": "39",
                                            "id": 18145,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "9871:1:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_9_by_1",
                                              "typeString": "int_const 9"
                                            },
                                            "value": "9"
                                          },
                                          "src": "9865:7:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000_by_1",
                                            "typeString": "int_const 1000000000"
                                          }
                                        }
                                      ],
                                      "id": 18147,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "9864:9:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000_by_1",
                                        "typeString": "int_const 1000000000"
                                      }
                                    },
                                    "src": "9826:47:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 18149,
                                    "name": "fraction",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18091,
                                    "src": "9887:8:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "9826:69:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "id": 18151,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9815:89:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "3233",
                              "id": 18152,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9908:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_23_by_1",
                                "typeString": "int_const 23"
                              },
                              "value": "23"
                            },
                            "src": "9815:95:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "9806:104:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 18155,
                        "nodeType": "ExpressionStatement",
                        "src": "9806:104:65"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18184,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 18182,
                      "name": "sign",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18071,
                      "src": "10116:4:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 18183,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10124:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "10116:9:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18191,
                  "nodeType": "IfStatement",
                  "src": "10112:44:65",
                  "trueBody": {
                    "id": 18190,
                    "nodeType": "Block",
                    "src": "10127:29:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 18188,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18185,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18062,
                            "src": "10136:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "id": 18187,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "10146:2:65",
                            "subExpression": {
                              "hexValue": "31",
                              "id": 18186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10147:1:65",
                              "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:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 18189,
                        "nodeType": "ExpressionStatement",
                        "src": "10136:12:65"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 18056,
              "nodeType": "StructuredDocumentation",
              "src": "8202:734:65",
              "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": 18193,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readFloat32",
            "nameLocation": "8949:11:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18060,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18059,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "8975:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18193,
                  "src": "8961:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 18058,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18057,
                      "name": "Buffer",
                      "nameLocations": [
                        "8961:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "8961:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "8961:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8960:22:65"
            },
            "returnParameters": {
              "id": 18063,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18062,
                  "mutability": "mutable",
                  "name": "result",
                  "nameLocation": "9020:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18193,
                  "src": "9016:10:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 18061,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "9016:3:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9015:12:65"
            },
            "scope": 19191,
            "src": "8940:1221:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18330,
              "nodeType": "Block",
              "src": "10999:1171:65",
              "statements": [
                {
                  "assignments": [
                    18203
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18203,
                      "mutability": "mutable",
                      "name": "value",
                      "nameLocation": "11011:5:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18330,
                      "src": "11006:10:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18202,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11006:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18207,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 18205,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18197,
                        "src": "11030:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      ],
                      "id": 18204,
                      "name": "readUint64",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18625,
                      "src": "11019:10:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$returns$_t_uint64_$",
                        "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint64)"
                      }
                    },
                    "id": 18206,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11019:18:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11006:31:65"
                },
                {
                  "assignments": [
                    18209
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18209,
                      "mutability": "mutable",
                      "name": "sign",
                      "nameLocation": "11079:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18330,
                      "src": "11074:9:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18208,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11074:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18213,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18212,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 18210,
                      "name": "value",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18203,
                      "src": "11086:5:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&",
                    "rightExpression": {
                      "hexValue": "307838303030303030303030303030303030",
                      "id": 18211,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11094:18:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_9223372036854775808_by_1",
                        "typeString": "int_const 9223372036854775808"
                      },
                      "value": "0x8000000000000000"
                    },
                    "src": "11086:26:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11074:38:65"
                },
                {
                  "assignments": [
                    18215
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18215,
                      "mutability": "mutable",
                      "name": "exponent",
                      "nameLocation": "11241:8:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18330,
                      "src": "11237:12:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 18214,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "11237:3:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18227,
                  "initialValue": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 18226,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "components": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          },
                          "id": 18223,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 18220,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 18218,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18203,
                                  "src": "11257:5:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "307837666630303030303030303030303030",
                                  "id": 18219,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11265:18:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_9218868437227405312_by_1",
                                    "typeString": "int_const 9218868437227405312"
                                  },
                                  "value": "0x7ff0000000000000"
                                },
                                "src": "11257:26:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 18217,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11253:3:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_int256_$",
                                "typeString": "type(int256)"
                              },
                              "typeName": {
                                "id": 18216,
                                "name": "int",
                                "nodeType": "ElementaryTypeName",
                                "src": "11253:3:65",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 18221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11253:31:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">>",
                          "rightExpression": {
                            "hexValue": "3532",
                            "id": 18222,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11288:2:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_52_by_1",
                              "typeString": "int_const 52"
                            },
                            "value": "52"
                          },
                          "src": "11253:37:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        }
                      ],
                      "id": 18224,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "11252:39:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "-",
                    "rightExpression": {
                      "hexValue": "31303233",
                      "id": 18225,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11294:4:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1023_by_1",
                        "typeString": "int_const 1023"
                      },
                      "value": "1023"
                    },
                    "src": "11252:46:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11237:61:65"
                },
                {
                  "assignments": [
                    18229
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18229,
                      "mutability": "mutable",
                      "name": "fraction",
                      "nameLocation": "11334:8:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18330,
                      "src": "11330:12:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "typeName": {
                        "id": 18228,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "11330:3:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18236,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 18232,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18203,
                          "src": "11349:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&",
                        "rightExpression": {
                          "hexValue": "307830303066666666666666666666666666",
                          "id": 18233,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11357:18:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4503599627370495_by_1",
                            "typeString": "int_const 4503599627370495"
                          },
                          "value": "0x000fffffffffffff"
                        },
                        "src": "11349:26:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 18231,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "11345:3:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_int256_$",
                        "typeString": "type(int256)"
                      },
                      "typeName": {
                        "id": 18230,
                        "name": "int",
                        "nodeType": "ElementaryTypeName",
                        "src": "11345:3:65",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 18235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11345:31:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11330:46:65"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 18240,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 18237,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18215,
                      "src": "11445:8:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "id": 18239,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "-",
                      "prefix": true,
                      "src": "11457:5:65",
                      "subExpression": {
                        "hexValue": "31303233",
                        "id": 18238,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11458:4:65",
                        "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:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      },
                      "id": 18248,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 18246,
                        "name": "exponent",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18215,
                        "src": "11519:8:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "31303234",
                        "id": 18247,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "11531:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1024_by_1",
                          "typeString": "int_const 1024"
                        },
                        "value": "1024"
                      },
                      "src": "11519:16:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "id": 18267,
                    "nodeType": "IfStatement",
                    "src": "11515:208:65",
                    "trueBody": {
                      "id": 18266,
                      "nodeType": "Block",
                      "src": "11537:186:65",
                      "statements": [
                        {
                          "expression": {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "hexValue": "5769746e65744275666665722e72656164466c6f617436343a20",
                                        "id": 18254,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11599:28:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_e27e152ba6f409df83635474e0a4e498ab47d78b85d078a1e6a48e178626ecb5",
                                          "typeString": "literal_string \"WitnetBuffer.readFloat64: \""
                                        },
                                        "value": "WitnetBuffer.readFloat64: "
                                      },
                                      {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18257,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 18255,
                                            "name": "sign",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18209,
                                            "src": "11640:4:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "!=",
                                          "rightExpression": {
                                            "hexValue": "30",
                                            "id": 18256,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11648:1:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            "value": "0"
                                          },
                                          "src": "11640:9:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseExpression": {
                                          "hexValue": "",
                                          "id": 18259,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "hexString",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11665:5:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                            "typeString": "literal_string \"\""
                                          },
                                          "value": ""
                                        },
                                        "id": 18260,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "Conditional",
                                        "src": "11640:30:65",
                                        "trueExpression": {
                                          "hexValue": "6e65676174697665",
                                          "id": 18258,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11652:10:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_5c5e2f1fbc734e42aa272c3420aeb7631dc1efac79a3bf6e1303c2b8c0ccc2e4",
                                            "typeString": "literal_string \"negative\""
                                          },
                                          "value": "negative"
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      {
                                        "hexValue": "20696e66696e697479",
                                        "id": 18261,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11683:11:65",
                                        "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": 18252,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4294967295,
                                        "src": "11570:3:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 18253,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberLocation": "11574:12:65",
                                      "memberName": "encodePacked",
                                      "nodeType": "MemberAccess",
                                      "src": "11570:16:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 18262,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11570:135:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 18251,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11563:6:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                                    "typeString": "type(string storage pointer)"
                                  },
                                  "typeName": {
                                    "id": 18250,
                                    "name": "string",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11563:6:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 18263,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11563:143:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              ],
                              "id": 18249,
                              "name": "revert",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                4294967277,
                                4294967277
                              ],
                              "referencedDeclaration": 4294967277,
                              "src": "11546:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (string memory) pure"
                              }
                            },
                            "id": 18264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11546:169:65",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 18265,
                          "nodeType": "ExpressionStatement",
                          "src": "11546:169:65"
                        }
                      ]
                    }
                  },
                  "id": 18268,
                  "nodeType": "IfStatement",
                  "src": "11441:282:65",
                  "trueBody": {
                    "id": 18245,
                    "nodeType": "Block",
                    "src": "11464:45:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 18243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18241,
                            "name": "fraction",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18229,
                            "src": "11473:8:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "|=",
                          "rightHandSide": {
                            "hexValue": "30783130303030303030303030303030",
                            "id": 18242,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11485:16:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4503599627370496_by_1",
                              "typeString": "int_const 4503599627370496"
                            },
                            "value": "0x10000000000000"
                          },
                          "src": "11473:28:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 18244,
                        "nodeType": "ExpressionStatement",
                        "src": "11473:28:65"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    },
                    "id": 18271,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 18269,
                      "name": "exponent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18215,
                      "src": "11789:8:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_int256",
                        "typeString": "int256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 18270,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11801:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11789:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 18318,
                    "nodeType": "Block",
                    "src": "11932:125:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 18316,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18295,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18200,
                            "src": "11941:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 18315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 18312,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 18301,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18296,
                                      "name": "fraction",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18229,
                                      "src": "11961:8:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_int256",
                                        "typeString": "int256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_rational_1000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000"
                                          },
                                          "id": 18299,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 18297,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11985:2:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "hexValue": "3135",
                                            "id": 18298,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11991:2:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_15_by_1",
                                              "typeString": "int_const 15"
                                            },
                                            "value": "15"
                                          },
                                          "src": "11985:8:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000"
                                          }
                                        }
                                      ],
                                      "id": 18300,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "11984:10:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000"
                                      }
                                    },
                                    "src": "11961:33:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18310,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "hexValue": "31",
                                          "id": 18304,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "12012:1:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<<",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "id": 18308,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "UnaryOperation",
                                              "operator": "-",
                                              "prefix": true,
                                              "src": "12022:9:65",
                                              "subExpression": {
                                                "id": 18307,
                                                "name": "exponent",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18215,
                                                "src": "12023:8:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              },
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_int256",
                                                "typeString": "int256"
                                              }
                                            ],
                                            "id": 18306,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "12017:4:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 18305,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "12017:4:65",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 18309,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "12017:15:65",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "12012:20:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 18303,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "12008:3:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": {
                                        "id": 18302,
                                        "name": "int",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "12008:3:65",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 18311,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "12008:25:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "11961:72:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "id": 18313,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "11950:93:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "3532",
                              "id": 18314,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12047:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_52_by_1",
                                "typeString": "int_const 52"
                              },
                              "value": "52"
                            },
                            "src": "11950:99:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "11941:108:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 18317,
                        "nodeType": "ExpressionStatement",
                        "src": "11941:108:65"
                      }
                    ]
                  },
                  "id": 18319,
                  "nodeType": "IfStatement",
                  "src": "11785:272:65",
                  "trueBody": {
                    "id": 18294,
                    "nodeType": "Block",
                    "src": "11804:122:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 18292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18272,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18200,
                            "src": "11813:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "commonType": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            },
                            "id": 18291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  },
                                  "id": 18288,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    },
                                    "id": 18286,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "arguments": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18280,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "31",
                                            "id": 18275,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11837:1:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "<<",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "id": 18278,
                                                "name": "exponent",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18215,
                                                "src": "11847:8:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_int256",
                                                  "typeString": "int256"
                                                }
                                              ],
                                              "id": 18277,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "11842:4:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 18276,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "11842:4:65",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 18279,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "11842:14:65",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "11837:19:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "id": 18274,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "11833:3:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_int256_$",
                                          "typeString": "type(int256)"
                                        },
                                        "typeName": {
                                          "id": 18273,
                                          "name": "int",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "11833:3:65",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 18281,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11833:24:65",
                                      "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": 18284,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "hexValue": "3130",
                                            "id": 18282,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11872:2:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_10_by_1",
                                              "typeString": "int_const 10"
                                            },
                                            "value": "10"
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "**",
                                          "rightExpression": {
                                            "hexValue": "3135",
                                            "id": 18283,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11878:2:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_15_by_1",
                                              "typeString": "int_const 15"
                                            },
                                            "value": "15"
                                          },
                                          "src": "11872:8:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1000000000000000_by_1",
                                            "typeString": "int_const 1000000000000000"
                                          }
                                        }
                                      ],
                                      "id": 18285,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "11871:10:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1000000000000000_by_1",
                                        "typeString": "int_const 1000000000000000"
                                      }
                                    },
                                    "src": "11833:48:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "id": 18287,
                                    "name": "fraction",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18229,
                                    "src": "11895:8:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  },
                                  "src": "11833:70:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_int256",
                                    "typeString": "int256"
                                  }
                                }
                              ],
                              "id": 18289,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "11822:90:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_int256",
                                "typeString": "int256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "hexValue": "3532",
                              "id": 18290,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11916:2:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_52_by_1",
                                "typeString": "int_const 52"
                              },
                              "value": "52"
                            },
                            "src": "11822:96:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "src": "11813:105:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 18293,
                        "nodeType": "ExpressionStatement",
                        "src": "11813:105:65"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18322,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 18320,
                      "name": "sign",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18209,
                      "src": "12125:4:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 18321,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "12133:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "12125:9:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18329,
                  "nodeType": "IfStatement",
                  "src": "12121:44:65",
                  "trueBody": {
                    "id": 18328,
                    "nodeType": "Block",
                    "src": "12136:29:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 18326,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 18323,
                            "name": "result",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18200,
                            "src": "12145:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_int256",
                              "typeString": "int256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "*=",
                          "rightHandSide": {
                            "id": 18325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "12155:2:65",
                            "subExpression": {
                              "hexValue": "31",
                              "id": 18324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12156:1:65",
                              "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:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_int256",
                            "typeString": "int256"
                          }
                        },
                        "id": 18327,
                        "nodeType": "ExpressionStatement",
                        "src": "12145:12:65"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 18194,
              "nodeType": "StructuredDocumentation",
              "src": "10167:737:65",
              "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": 18331,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readFloat64",
            "nameLocation": "10917:11:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18197,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "10943:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18331,
                  "src": "10929:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 18196,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18195,
                      "name": "Buffer",
                      "nameLocations": [
                        "10929:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "10929:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "10929:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10928:22:65"
            },
            "returnParameters": {
              "id": 18201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18200,
                  "mutability": "mutable",
                  "name": "result",
                  "nameLocation": "10988:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18331,
                  "src": "10984:10:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 18199,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "10984:3:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10983:12:65"
            },
            "scope": 19191,
            "src": "10908:1262:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18483,
              "nodeType": "Block",
              "src": "12567:930:65",
              "statements": [
                {
                  "expression": {
                    "id": 18347,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 18342,
                      "name": "text",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18340,
                      "src": "12574:4:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 18345,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18337,
                          "src": "12591:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        ],
                        "id": 18344,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "NewExpression",
                        "src": "12581:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                          "typeString": "function (uint256) pure returns (bytes memory)"
                        },
                        "typeName": {
                          "id": 18343,
                          "name": "bytes",
                          "nodeType": "ElementaryTypeName",
                          "src": "12585:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_storage_ptr",
                            "typeString": "bytes"
                          }
                        }
                      },
                      "id": 18346,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12581:17:65",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "12574:24:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "id": 18348,
                  "nodeType": "ExpressionStatement",
                  "src": "12574:24:65"
                },
                {
                  "id": 18482,
                  "nodeType": "UncheckedBlock",
                  "src": "12605:887:65",
                  "statements": [
                    {
                      "body": {
                        "id": 18479,
                        "nodeType": "Block",
                        "src": "12673:715:65",
                        "statements": [
                          {
                            "assignments": [
                              18360
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 18360,
                                "mutability": "mutable",
                                "name": "char",
                                "nameLocation": "12690:4:65",
                                "nodeType": "VariableDeclaration",
                                "scope": 18479,
                                "src": "12684:10:65",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "typeName": {
                                  "id": 18359,
                                  "name": "uint8",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12684:5:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 18364,
                            "initialValue": {
                              "arguments": [
                                {
                                  "id": 18362,
                                  "name": "buffer",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18335,
                                  "src": "12707:6:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                    "typeString": "struct WitnetBuffer.Buffer memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                    "typeString": "struct WitnetBuffer.Buffer memory"
                                  }
                                ],
                                "id": 18361,
                                "name": "readUint8",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 18517,
                                "src": "12697:9:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$returns$_t_uint8_$",
                                  "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                }
                              },
                              "id": 18363,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12697:17:65",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12684:30:65"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "id": 18369,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                "id": 18367,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 18365,
                                  "name": "char",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18360,
                                  "src": "12729:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&",
                                "rightExpression": {
                                  "hexValue": "30783830",
                                  "id": 18366,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12736:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_128_by_1",
                                    "typeString": "int_const 128"
                                  },
                                  "value": "0x80"
                                },
                                "src": "12729:11:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 18368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12744:1:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "12729:16:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 18469,
                            "nodeType": "IfStatement",
                            "src": "12725:617:65",
                            "trueBody": {
                              "id": 18468,
                              "nodeType": "Block",
                              "src": "12747:595:65",
                              "statements": [
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 18372,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18370,
                                      "name": "char",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18360,
                                      "src": "12764:4:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<",
                                    "rightExpression": {
                                      "hexValue": "30786530",
                                      "id": 18371,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12771:4:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_224_by_1",
                                        "typeString": "int_const 224"
                                      },
                                      "value": "0xe0"
                                    },
                                    "src": "12764:11:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "id": 18396,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 18394,
                                        "name": "char",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18360,
                                        "src": "12911:4:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "<",
                                      "rightExpression": {
                                        "hexValue": "30786630",
                                        "id": 18395,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12918:4:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_240_by_1",
                                          "typeString": "int_const 240"
                                        },
                                        "value": "0xf0"
                                      },
                                      "src": "12911:11:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "id": 18465,
                                      "nodeType": "Block",
                                      "src": "13105:226:65",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 18459,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 18427,
                                              "name": "char",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18360,
                                              "src": "13120:4:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              },
                                              "id": 18458,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                },
                                                "id": 18451,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "id": 18442,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    },
                                                    "id": 18433,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "components": [
                                                        {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          },
                                                          "id": 18430,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "id": 18428,
                                                            "name": "char",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 18360,
                                                            "src": "13128:4:65",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint8",
                                                              "typeString": "uint8"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "&",
                                                          "rightExpression": {
                                                            "hexValue": "30783066",
                                                            "id": 18429,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13135:4:65",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_15_by_1",
                                                              "typeString": "int_const 15"
                                                            },
                                                            "value": "0x0f"
                                                          },
                                                          "src": "13128:11:65",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          }
                                                        }
                                                      ],
                                                      "id": 18431,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "TupleExpression",
                                                      "src": "13127:13:65",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<<",
                                                    "rightExpression": {
                                                      "hexValue": "3138",
                                                      "id": 18432,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "13144:2:65",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_18_by_1",
                                                        "typeString": "int_const 18"
                                                      },
                                                      "value": "18"
                                                    },
                                                    "src": "13127:19:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "|",
                                                  "rightExpression": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    },
                                                    "id": 18441,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "components": [
                                                        {
                                                          "commonType": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          },
                                                          "id": 18438,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "arguments": [
                                                              {
                                                                "id": 18435,
                                                                "name": "buffer",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 18335,
                                                                "src": "13175:6:65",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                                  "typeString": "struct WitnetBuffer.Buffer memory"
                                                                }
                                                              }
                                                            ],
                                                            "expression": {
                                                              "argumentTypes": [
                                                                {
                                                                  "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                                  "typeString": "struct WitnetBuffer.Buffer memory"
                                                                }
                                                              ],
                                                              "id": 18434,
                                                              "name": "readUint8",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 18517,
                                                              "src": "13165:9:65",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$returns$_t_uint8_$",
                                                                "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                              }
                                                            },
                                                            "id": 18436,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "kind": "functionCall",
                                                            "lValueRequested": false,
                                                            "nameLocations": [],
                                                            "names": [],
                                                            "nodeType": "FunctionCall",
                                                            "src": "13165:17:65",
                                                            "tryCall": false,
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_uint8",
                                                              "typeString": "uint8"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "&",
                                                          "rightExpression": {
                                                            "hexValue": "30783366",
                                                            "id": 18437,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "13185:4:65",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_63_by_1",
                                                              "typeString": "int_const 63"
                                                            },
                                                            "value": "0x3f"
                                                          },
                                                          "src": "13165:24:65",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          }
                                                        }
                                                      ],
                                                      "id": 18439,
                                                      "isConstant": false,
                                                      "isInlineArray": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "nodeType": "TupleExpression",
                                                      "src": "13164:26:65",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "<<",
                                                    "rightExpression": {
                                                      "hexValue": "3132",
                                                      "id": 18440,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "13194:2:65",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_12_by_1",
                                                        "typeString": "int_const 12"
                                                      },
                                                      "value": "12"
                                                    },
                                                    "src": "13164:32:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "src": "13127:69:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "|",
                                                "rightExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "id": 18450,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        },
                                                        "id": 18447,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "arguments": [
                                                            {
                                                              "id": 18444,
                                                              "name": "buffer",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 18335,
                                                              "src": "13225:6:65",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                                "typeString": "struct WitnetBuffer.Buffer memory"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                                "typeString": "struct WitnetBuffer.Buffer memory"
                                                              }
                                                            ],
                                                            "id": 18443,
                                                            "name": "readUint8",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 18517,
                                                            "src": "13215:9:65",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$returns$_t_uint8_$",
                                                              "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                            }
                                                          },
                                                          "id": 18445,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "13215:17:65",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&",
                                                        "rightExpression": {
                                                          "hexValue": "30783366",
                                                          "id": 18446,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "13235:4:65",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_63_by_1",
                                                            "typeString": "int_const 63"
                                                          },
                                                          "value": "0x3f"
                                                        },
                                                        "src": "13215:24:65",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        }
                                                      }
                                                    ],
                                                    "id": 18448,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "13214:26:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "<<",
                                                  "rightExpression": {
                                                    "hexValue": "36",
                                                    "id": 18449,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "13244:1:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_6_by_1",
                                                      "typeString": "int_const 6"
                                                    },
                                                    "value": "6"
                                                  },
                                                  "src": "13214:31:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "13127:118:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "|",
                                              "rightExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    },
                                                    "id": 18456,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "arguments": [
                                                        {
                                                          "id": 18453,
                                                          "name": "buffer",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 18335,
                                                          "src": "13276:6:65",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                            "typeString": "struct WitnetBuffer.Buffer memory"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                            "typeString": "struct WitnetBuffer.Buffer memory"
                                                          }
                                                        ],
                                                        "id": 18452,
                                                        "name": "readUint8",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 18517,
                                                        "src": "13266:9:65",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$returns$_t_uint8_$",
                                                          "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                        }
                                                      },
                                                      "id": 18454,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "nameLocations": [],
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "13266:17:65",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&",
                                                    "rightExpression": {
                                                      "hexValue": "30783366",
                                                      "id": 18455,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "13286:4:65",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_63_by_1",
                                                        "typeString": "int_const 63"
                                                      },
                                                      "value": "0x3f"
                                                    },
                                                    "src": "13266:24:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  }
                                                ],
                                                "id": 18457,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "13265:26:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "src": "13127:164:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "src": "13120:171:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "id": 18460,
                                          "nodeType": "ExpressionStatement",
                                          "src": "13120:171:65"
                                        },
                                        {
                                          "expression": {
                                            "id": 18463,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 18461,
                                              "name": "length",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18337,
                                              "src": "13306:6:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "-=",
                                            "rightHandSide": {
                                              "hexValue": "33",
                                              "id": 18462,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13316:1:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_3_by_1",
                                                "typeString": "int_const 3"
                                              },
                                              "value": "3"
                                            },
                                            "src": "13306:11:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "id": 18464,
                                          "nodeType": "ExpressionStatement",
                                          "src": "13306:11:65"
                                        }
                                      ]
                                    },
                                    "id": 18466,
                                    "nodeType": "IfStatement",
                                    "src": "12907:424:65",
                                    "trueBody": {
                                      "id": 18426,
                                      "nodeType": "Block",
                                      "src": "12924:175:65",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 18420,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 18397,
                                              "name": "char",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18360,
                                              "src": "12939:4:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "=",
                                            "rightHandSide": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              },
                                              "id": 18419,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                },
                                                "id": 18412,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "id": 18403,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        },
                                                        "id": 18400,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 18398,
                                                          "name": "char",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 18360,
                                                          "src": "12948:4:65",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&",
                                                        "rightExpression": {
                                                          "hexValue": "30783066",
                                                          "id": 18399,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "12955:4:65",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_15_by_1",
                                                            "typeString": "int_const 15"
                                                          },
                                                          "value": "0x0f"
                                                        },
                                                        "src": "12948:11:65",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        }
                                                      }
                                                    ],
                                                    "id": 18401,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "12947:13:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "<<",
                                                  "rightExpression": {
                                                    "hexValue": "3132",
                                                    "id": 18402,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "12964:2:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_12_by_1",
                                                      "typeString": "int_const 12"
                                                    },
                                                    "value": "12"
                                                  },
                                                  "src": "12947:19:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "|",
                                                "rightExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "id": 18411,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "components": [
                                                      {
                                                        "commonType": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        },
                                                        "id": 18408,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "arguments": [
                                                            {
                                                              "id": 18405,
                                                              "name": "buffer",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 18335,
                                                              "src": "12995:6:65",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                                "typeString": "struct WitnetBuffer.Buffer memory"
                                                              }
                                                            }
                                                          ],
                                                          "expression": {
                                                            "argumentTypes": [
                                                              {
                                                                "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                                "typeString": "struct WitnetBuffer.Buffer memory"
                                                              }
                                                            ],
                                                            "id": 18404,
                                                            "name": "readUint8",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 18517,
                                                            "src": "12985:9:65",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$returns$_t_uint8_$",
                                                              "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                            }
                                                          },
                                                          "id": 18406,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "kind": "functionCall",
                                                          "lValueRequested": false,
                                                          "nameLocations": [],
                                                          "names": [],
                                                          "nodeType": "FunctionCall",
                                                          "src": "12985:17:65",
                                                          "tryCall": false,
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_uint8",
                                                            "typeString": "uint8"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "&",
                                                        "rightExpression": {
                                                          "hexValue": "30783366",
                                                          "id": 18407,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "13005:4:65",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_63_by_1",
                                                            "typeString": "int_const 63"
                                                          },
                                                          "value": "0x3f"
                                                        },
                                                        "src": "12985:24:65",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_uint8",
                                                          "typeString": "uint8"
                                                        }
                                                      }
                                                    ],
                                                    "id": 18409,
                                                    "isConstant": false,
                                                    "isInlineArray": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "nodeType": "TupleExpression",
                                                    "src": "12984:26:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "<<",
                                                  "rightExpression": {
                                                    "hexValue": "36",
                                                    "id": 18410,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "13014:1:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_6_by_1",
                                                      "typeString": "int_const 6"
                                                    },
                                                    "value": "6"
                                                  },
                                                  "src": "12984:31:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                },
                                                "src": "12947:68:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "|",
                                              "rightExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    },
                                                    "id": 18417,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "arguments": [
                                                        {
                                                          "id": 18414,
                                                          "name": "buffer",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 18335,
                                                          "src": "13044:6:65",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                            "typeString": "struct WitnetBuffer.Buffer memory"
                                                          }
                                                        }
                                                      ],
                                                      "expression": {
                                                        "argumentTypes": [
                                                          {
                                                            "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                            "typeString": "struct WitnetBuffer.Buffer memory"
                                                          }
                                                        ],
                                                        "id": 18413,
                                                        "name": "readUint8",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 18517,
                                                        "src": "13034:9:65",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$returns$_t_uint8_$",
                                                          "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                        }
                                                      },
                                                      "id": 18415,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "kind": "functionCall",
                                                      "lValueRequested": false,
                                                      "nameLocations": [],
                                                      "names": [],
                                                      "nodeType": "FunctionCall",
                                                      "src": "13034:17:65",
                                                      "tryCall": false,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&",
                                                    "rightExpression": {
                                                      "hexValue": "30783366",
                                                      "id": 18416,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "13054:4:65",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_63_by_1",
                                                        "typeString": "int_const 63"
                                                      },
                                                      "value": "0x3f"
                                                    },
                                                    "src": "13034:24:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  }
                                                ],
                                                "id": 18418,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "13033:26:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "src": "12947:112:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "src": "12939:120:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "id": 18421,
                                          "nodeType": "ExpressionStatement",
                                          "src": "12939:120:65"
                                        },
                                        {
                                          "expression": {
                                            "id": 18424,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftHandSide": {
                                              "id": 18422,
                                              "name": "length",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18337,
                                              "src": "13074:6:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint64",
                                                "typeString": "uint64"
                                              }
                                            },
                                            "nodeType": "Assignment",
                                            "operator": "-=",
                                            "rightHandSide": {
                                              "hexValue": "32",
                                              "id": 18423,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "13084:1:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_2_by_1",
                                                "typeString": "int_const 2"
                                              },
                                              "value": "2"
                                            },
                                            "src": "13074:11:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "id": 18425,
                                          "nodeType": "ExpressionStatement",
                                          "src": "13074:11:65"
                                        }
                                      ]
                                    }
                                  },
                                  "id": 18467,
                                  "nodeType": "IfStatement",
                                  "src": "12760:571:65",
                                  "trueBody": {
                                    "id": 18393,
                                    "nodeType": "Block",
                                    "src": "12777:124:65",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 18387,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 18373,
                                            "name": "char",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18360,
                                            "src": "12792:4:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            },
                                            "id": 18386,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "commonType": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              },
                                              "id": 18379,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "components": [
                                                  {
                                                    "commonType": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    },
                                                    "id": 18376,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 18374,
                                                      "name": "char",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18360,
                                                      "src": "12800:4:65",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint8",
                                                        "typeString": "uint8"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "&",
                                                    "rightExpression": {
                                                      "hexValue": "30783166",
                                                      "id": 18375,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "12807:4:65",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_31_by_1",
                                                        "typeString": "int_const 31"
                                                      },
                                                      "value": "0x1f"
                                                    },
                                                    "src": "12800:11:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  }
                                                ],
                                                "id": 18377,
                                                "isConstant": false,
                                                "isInlineArray": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "TupleExpression",
                                                "src": "12799:13:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "<<",
                                              "rightExpression": {
                                                "hexValue": "36",
                                                "id": 18378,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "12816:1:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_6_by_1",
                                                  "typeString": "int_const 6"
                                                },
                                                "value": "6"
                                              },
                                              "src": "12799:18:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "|",
                                            "rightExpression": {
                                              "components": [
                                                {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  },
                                                  "id": 18384,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "arguments": [
                                                      {
                                                        "id": 18381,
                                                        "name": "buffer",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 18335,
                                                        "src": "12846:6:65",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                          "typeString": "struct WitnetBuffer.Buffer memory"
                                                        }
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                                          "typeString": "struct WitnetBuffer.Buffer memory"
                                                        }
                                                      ],
                                                      "id": 18380,
                                                      "name": "readUint8",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 18517,
                                                      "src": "12836:9:65",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$returns$_t_uint8_$",
                                                        "typeString": "function (struct WitnetBuffer.Buffer memory) pure returns (uint8)"
                                                      }
                                                    },
                                                    "id": 18382,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "kind": "functionCall",
                                                    "lValueRequested": false,
                                                    "nameLocations": [],
                                                    "names": [],
                                                    "nodeType": "FunctionCall",
                                                    "src": "12836:17:65",
                                                    "tryCall": false,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint8",
                                                      "typeString": "uint8"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "&",
                                                  "rightExpression": {
                                                    "hexValue": "30783366",
                                                    "id": 18383,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "12856:4:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_63_by_1",
                                                      "typeString": "int_const 63"
                                                    },
                                                    "value": "0x3f"
                                                  },
                                                  "src": "12836:24:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint8",
                                                    "typeString": "uint8"
                                                  }
                                                }
                                              ],
                                              "id": 18385,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "TupleExpression",
                                              "src": "12835:26:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint8",
                                                "typeString": "uint8"
                                              }
                                            },
                                            "src": "12799:62:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "12792:69:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "id": 18388,
                                        "nodeType": "ExpressionStatement",
                                        "src": "12792:69:65"
                                      },
                                      {
                                        "expression": {
                                          "id": 18391,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 18389,
                                            "name": "length",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18337,
                                            "src": "12876:6:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "-=",
                                          "rightHandSide": {
                                            "hexValue": "31",
                                            "id": 18390,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "12886:1:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "12876:11:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        },
                                        "id": 18392,
                                        "nodeType": "ExpressionStatement",
                                        "src": "12876:11:65"
                                      }
                                    ]
                                  }
                                }
                              ]
                            }
                          },
                          {
                            "expression": {
                              "id": 18477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "baseExpression": {
                                  "id": 18470,
                                  "name": "text",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18340,
                                  "src": "13352:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                },
                                "id": 18472,
                                "indexExpression": {
                                  "id": 18471,
                                  "name": "index",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18350,
                                  "src": "13357:5:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "13352:11:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 18475,
                                    "name": "char",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18360,
                                    "src": "13373:4:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "id": 18474,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "13366:6:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_bytes1_$",
                                    "typeString": "type(bytes1)"
                                  },
                                  "typeName": {
                                    "id": 18473,
                                    "name": "bytes1",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "13366:6:65",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 18476,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "13366:12:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                }
                              },
                              "src": "13352:26:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes1",
                                "typeString": "bytes1"
                              }
                            },
                            "id": 18478,
                            "nodeType": "ExpressionStatement",
                            "src": "13352:26:65"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 18355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 18353,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "12647:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 18354,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18337,
                          "src": "12655:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "12647:14:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 18480,
                      "initializationExpression": {
                        "assignments": [
                          18350
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 18350,
                            "mutability": "mutable",
                            "name": "index",
                            "nameLocation": "12636:5:65",
                            "nodeType": "VariableDeclaration",
                            "scope": 18480,
                            "src": "12629:12:65",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            },
                            "typeName": {
                              "id": 18349,
                              "name": "uint64",
                              "nodeType": "ElementaryTypeName",
                              "src": "12629:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "id": 18352,
                        "initialValue": {
                          "hexValue": "30",
                          "id": 18351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12644:1:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12629:16:65"
                      },
                      "isSimpleCounterLoop": true,
                      "loopExpression": {
                        "expression": {
                          "id": 18357,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "12663:8:65",
                          "subExpression": {
                            "id": 18356,
                            "name": "index",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18350,
                            "src": "12663:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "id": 18358,
                        "nodeType": "ExpressionStatement",
                        "src": "12663:8:65"
                      },
                      "nodeType": "ForStatement",
                      "src": "12624:764:65"
                    },
                    {
                      "AST": {
                        "nativeSrc": "13445:40:65",
                        "nodeType": "YulBlock",
                        "src": "13445:40:65",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "text",
                                  "nativeSrc": "13463:4:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "13463:4:65"
                                },
                                {
                                  "name": "length",
                                  "nativeSrc": "13469:6:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "13469:6:65"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nativeSrc": "13456:6:65",
                                "nodeType": "YulIdentifier",
                                "src": "13456:6:65"
                              },
                              "nativeSrc": "13456:20:65",
                              "nodeType": "YulFunctionCall",
                              "src": "13456:20:65"
                            },
                            "nativeSrc": "13456:20:65",
                            "nodeType": "YulExpressionStatement",
                            "src": "13456:20:65"
                          }
                        ]
                      },
                      "evmVersion": "paris",
                      "externalReferences": [
                        {
                          "declaration": 18337,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "13469:6:65",
                          "valueSize": 1
                        },
                        {
                          "declaration": 18340,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "13463:4:65",
                          "valueSize": 1
                        }
                      ],
                      "id": 18481,
                      "nodeType": "InlineAssembly",
                      "src": "13436:49:65"
                    }
                  ]
                }
              ]
            },
            "documentation": {
              "id": 18332,
              "nodeType": "StructuredDocumentation",
              "src": "12294:68:65",
              "text": "but it can be easily casted into a string with `string(result)`."
            },
            "id": 18484,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "readText",
            "nameLocation": "12432:8:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18338,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18335,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "12476:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18484,
                  "src": "12449:33:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 18334,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18333,
                      "name": "WitnetBuffer.Buffer",
                      "nameLocations": [
                        "12449:12:65",
                        "12462:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "12449:19:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "12449:19:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18337,
                  "mutability": "mutable",
                  "name": "length",
                  "nameLocation": "12498:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18484,
                  "src": "12491:13:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 18336,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "12491:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12440:71:65"
            },
            "returnParameters": {
              "id": 18341,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18340,
                  "mutability": "mutable",
                  "name": "text",
                  "nameLocation": "12558:4:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18484,
                  "src": "12545:17:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 18339,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12545:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "12544:19:65"
            },
            "scope": 19191,
            "src": "12423:1074:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18516,
              "nodeType": "Block",
              "src": "13873:173:65",
              "statements": [
                {
                  "assignments": [
                    18501
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18501,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "13893:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18516,
                      "src": "13880:17:65",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 18500,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "13880:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18504,
                  "initialValue": {
                    "expression": {
                      "id": 18502,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18488,
                      "src": "13900:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18503,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "13907:4:65",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17577,
                    "src": "13900:11:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13880:31:65"
                },
                {
                  "assignments": [
                    18506
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18506,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "13923:6:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18516,
                      "src": "13918:11:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18505,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13918:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18509,
                  "initialValue": {
                    "expression": {
                      "id": 18507,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18488,
                      "src": "13932:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18508,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "13939:6:65",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17579,
                    "src": "13932:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13918:27:65"
                },
                {
                  "AST": {
                    "nativeSrc": "13961:57:65",
                    "nodeType": "YulBlock",
                    "src": "13961:57:65",
                    "statements": [
                      {
                        "nativeSrc": "13970:41:65",
                        "nodeType": "YulAssignment",
                        "src": "13970:41:65",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "13993:4:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "13993:4:65"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "13999:1:65",
                                      "nodeType": "YulLiteral",
                                      "src": "13999:1:65",
                                      "type": "",
                                      "value": "1"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "13989:3:65",
                                    "nodeType": "YulIdentifier",
                                    "src": "13989:3:65"
                                  },
                                  "nativeSrc": "13989:12:65",
                                  "nodeType": "YulFunctionCall",
                                  "src": "13989:12:65"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "14003:6:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "14003:6:65"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "13985:3:65",
                                "nodeType": "YulIdentifier",
                                "src": "13985:3:65"
                              },
                              "nativeSrc": "13985:25:65",
                              "nodeType": "YulFunctionCall",
                              "src": "13985:25:65"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "13979:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "13979:5:65"
                          },
                          "nativeSrc": "13979:32:65",
                          "nodeType": "YulFunctionCall",
                          "src": "13979:32:65"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "13970:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "13970:5:65"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "paris",
                  "externalReferences": [
                    {
                      "declaration": 18501,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "13993:4:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18506,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14003:6:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18498,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "13970:5:65",
                      "valueSize": 1
                    }
                  ],
                  "id": 18510,
                  "nodeType": "InlineAssembly",
                  "src": "13952:66:65"
                },
                {
                  "expression": {
                    "id": 18514,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": false,
                    "src": "14024:16:65",
                    "subExpression": {
                      "expression": {
                        "id": 18511,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18488,
                        "src": "14024:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18513,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "14031:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "14024:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18515,
                  "nodeType": "ExpressionStatement",
                  "src": "14024:16:65"
                }
              ]
            },
            "documentation": {
              "id": 18485,
              "nodeType": "StructuredDocumentation",
              "src": "13503:224:65",
              "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": 18517,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "expression": {
                      "id": 18491,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18488,
                      "src": "13808:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18492,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "13815:6:65",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17579,
                    "src": "13808:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 18493,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18488,
                        "src": "13823:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18494,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "13830:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "13823:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 18495,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "13835:6:65",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "13823:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 18496,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 18490,
                  "name": "withinRange",
                  "nameLocations": [
                    "13796:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "13796:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "13796:46:65"
              }
            ],
            "name": "readUint8",
            "nameLocation": "13740:9:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18489,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18488,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "13764:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18517,
                  "src": "13750:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 18487,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18486,
                      "name": "Buffer",
                      "nameLocations": [
                        "13750:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "13750:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "13750:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13749:22:65"
            },
            "returnParameters": {
              "id": 18499,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18498,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "13863:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18517,
                  "src": "13857:11:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 18497,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "13857:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "13856:13:65"
            },
            "scope": 19191,
            "src": "13731:315:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18552,
              "nodeType": "Block",
              "src": "14436:175:65",
              "statements": [
                {
                  "assignments": [
                    18536
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18536,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "14456:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18552,
                      "src": "14443:17:65",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 18535,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "14443:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18539,
                  "initialValue": {
                    "expression": {
                      "id": 18537,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18521,
                      "src": "14463:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18538,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "14470:4:65",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17577,
                    "src": "14463:11:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14443:31:65"
                },
                {
                  "assignments": [
                    18541
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18541,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "14486:6:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18552,
                      "src": "14481:11:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18540,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14481:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18544,
                  "initialValue": {
                    "expression": {
                      "id": 18542,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18521,
                      "src": "14495:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18543,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "14502:6:65",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17579,
                    "src": "14495:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14481:27:65"
                },
                {
                  "AST": {
                    "nativeSrc": "14524:57:65",
                    "nodeType": "YulBlock",
                    "src": "14524:57:65",
                    "statements": [
                      {
                        "nativeSrc": "14533:41:65",
                        "nodeType": "YulAssignment",
                        "src": "14533:41:65",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "14556:4:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "14556:4:65"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "14562:1:65",
                                      "nodeType": "YulLiteral",
                                      "src": "14562:1:65",
                                      "type": "",
                                      "value": "2"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "14552:3:65",
                                    "nodeType": "YulIdentifier",
                                    "src": "14552:3:65"
                                  },
                                  "nativeSrc": "14552:12:65",
                                  "nodeType": "YulFunctionCall",
                                  "src": "14552:12:65"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "14566:6:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "14566:6:65"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "14548:3:65",
                                "nodeType": "YulIdentifier",
                                "src": "14548:3:65"
                              },
                              "nativeSrc": "14548:25:65",
                              "nodeType": "YulFunctionCall",
                              "src": "14548:25:65"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "14542:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "14542:5:65"
                          },
                          "nativeSrc": "14542:32:65",
                          "nodeType": "YulFunctionCall",
                          "src": "14542:32:65"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "14533:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "14533:5:65"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "paris",
                  "externalReferences": [
                    {
                      "declaration": 18536,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14556:4:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18541,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14566:6:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18533,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "14533:5:65",
                      "valueSize": 1
                    }
                  ],
                  "id": 18545,
                  "nodeType": "InlineAssembly",
                  "src": "14515:66:65"
                },
                {
                  "expression": {
                    "id": 18550,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 18546,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18521,
                        "src": "14587:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18548,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "14594:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "14587:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "32",
                      "id": 18549,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14604:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "14587:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18551,
                  "nodeType": "ExpressionStatement",
                  "src": "14587:18:65"
                }
              ]
            },
            "documentation": {
              "id": 18518,
              "nodeType": "StructuredDocumentation",
              "src": "14052:232:65",
              "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": 18553,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18527,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 18524,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18521,
                        "src": "14366:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18525,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14373:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "14366:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "32",
                      "id": 18526,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14382:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "2"
                    },
                    "src": "14366:17:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 18528,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18521,
                        "src": "14385:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18529,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14392:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "14385:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 18530,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "14397:6:65",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "14385:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 18531,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 18523,
                  "name": "withinRange",
                  "nameLocations": [
                    "14354:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "14354:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "14354:50:65"
              }
            ],
            "name": "readUint16",
            "nameLocation": "14297:10:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18522,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18521,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "14322:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18553,
                  "src": "14308:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 18520,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18519,
                      "name": "Buffer",
                      "nameLocations": [
                        "14308:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "14308:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "14308:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14307:22:65"
            },
            "returnParameters": {
              "id": 18534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18533,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "14426:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18553,
                  "src": "14419:12:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 18532,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "14419:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14418:14:65"
            },
            "scope": 19191,
            "src": "14288:323:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18588,
              "nodeType": "Block",
              "src": "15001:175:65",
              "statements": [
                {
                  "assignments": [
                    18572
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18572,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "15021:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18588,
                      "src": "15008:17:65",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 18571,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "15008:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18575,
                  "initialValue": {
                    "expression": {
                      "id": 18573,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18557,
                      "src": "15028:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18574,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "15035:4:65",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17577,
                    "src": "15028:11:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15008:31:65"
                },
                {
                  "assignments": [
                    18577
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18577,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "15051:6:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18588,
                      "src": "15046:11:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18576,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15046:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18580,
                  "initialValue": {
                    "expression": {
                      "id": 18578,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18557,
                      "src": "15060:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18579,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "15067:6:65",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17579,
                    "src": "15060:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15046:27:65"
                },
                {
                  "AST": {
                    "nativeSrc": "15089:57:65",
                    "nodeType": "YulBlock",
                    "src": "15089:57:65",
                    "statements": [
                      {
                        "nativeSrc": "15098:41:65",
                        "nodeType": "YulAssignment",
                        "src": "15098:41:65",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "15121:4:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "15121:4:65"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "15127:1:65",
                                      "nodeType": "YulLiteral",
                                      "src": "15127:1:65",
                                      "type": "",
                                      "value": "4"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "15117:3:65",
                                    "nodeType": "YulIdentifier",
                                    "src": "15117:3:65"
                                  },
                                  "nativeSrc": "15117:12:65",
                                  "nodeType": "YulFunctionCall",
                                  "src": "15117:12:65"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "15131:6:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "15131:6:65"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "15113:3:65",
                                "nodeType": "YulIdentifier",
                                "src": "15113:3:65"
                              },
                              "nativeSrc": "15113:25:65",
                              "nodeType": "YulFunctionCall",
                              "src": "15113:25:65"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "15107:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "15107:5:65"
                          },
                          "nativeSrc": "15107:32:65",
                          "nodeType": "YulFunctionCall",
                          "src": "15107:32:65"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "15098:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "15098:5:65"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "paris",
                  "externalReferences": [
                    {
                      "declaration": 18572,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15121:4:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18577,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15131:6:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18569,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15098:5:65",
                      "valueSize": 1
                    }
                  ],
                  "id": 18581,
                  "nodeType": "InlineAssembly",
                  "src": "15080:66:65"
                },
                {
                  "expression": {
                    "id": 18586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 18582,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18557,
                        "src": "15152:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18584,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "15159:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "15152:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "34",
                      "id": 18585,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15169:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "src": "15152:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18587,
                  "nodeType": "ExpressionStatement",
                  "src": "15152:18:65"
                }
              ]
            },
            "documentation": {
              "id": 18554,
              "nodeType": "StructuredDocumentation",
              "src": "14617:232:65",
              "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": 18589,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18563,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 18560,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18557,
                        "src": "14931:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18561,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14938:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "14931:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "34",
                      "id": 18562,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "14947:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "4"
                    },
                    "src": "14931:17:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 18564,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18557,
                        "src": "14950:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18565,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "14957:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "14950:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 18566,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "14962:6:65",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "14950:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 18567,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 18559,
                  "name": "withinRange",
                  "nameLocations": [
                    "14919:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "14919:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "14919:50:65"
              }
            ],
            "name": "readUint32",
            "nameLocation": "14862:10:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18558,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18557,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "14887:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18589,
                  "src": "14873:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 18556,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18555,
                      "name": "Buffer",
                      "nameLocations": [
                        "14873:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "14873:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "14873:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14872:22:65"
            },
            "returnParameters": {
              "id": 18570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18569,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "14991:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18589,
                  "src": "14984:12:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 18568,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14984:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "14983:14:65"
            },
            "scope": 19191,
            "src": "14853:323:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18624,
              "nodeType": "Block",
              "src": "15566:175:65",
              "statements": [
                {
                  "assignments": [
                    18608
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18608,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "15586:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18624,
                      "src": "15573:17:65",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 18607,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "15573:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18611,
                  "initialValue": {
                    "expression": {
                      "id": 18609,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18593,
                      "src": "15593:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18610,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "15600:4:65",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17577,
                    "src": "15593:11:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15573:31:65"
                },
                {
                  "assignments": [
                    18613
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18613,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "15616:6:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18624,
                      "src": "15611:11:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18612,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15611:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18616,
                  "initialValue": {
                    "expression": {
                      "id": 18614,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18593,
                      "src": "15625:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18615,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "15632:6:65",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17579,
                    "src": "15625:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15611:27:65"
                },
                {
                  "AST": {
                    "nativeSrc": "15654:57:65",
                    "nodeType": "YulBlock",
                    "src": "15654:57:65",
                    "statements": [
                      {
                        "nativeSrc": "15663:41:65",
                        "nodeType": "YulAssignment",
                        "src": "15663:41:65",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "15686:4:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "15686:4:65"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "15692:1:65",
                                      "nodeType": "YulLiteral",
                                      "src": "15692:1:65",
                                      "type": "",
                                      "value": "8"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "15682:3:65",
                                    "nodeType": "YulIdentifier",
                                    "src": "15682:3:65"
                                  },
                                  "nativeSrc": "15682:12:65",
                                  "nodeType": "YulFunctionCall",
                                  "src": "15682:12:65"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "15696:6:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "15696:6:65"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "15678:3:65",
                                "nodeType": "YulIdentifier",
                                "src": "15678:3:65"
                              },
                              "nativeSrc": "15678:25:65",
                              "nodeType": "YulFunctionCall",
                              "src": "15678:25:65"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "15672:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "15672:5:65"
                          },
                          "nativeSrc": "15672:32:65",
                          "nodeType": "YulFunctionCall",
                          "src": "15672:32:65"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "15663:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "15663:5:65"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "paris",
                  "externalReferences": [
                    {
                      "declaration": 18608,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15686:4:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18613,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15696:6:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18605,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "15663:5:65",
                      "valueSize": 1
                    }
                  ],
                  "id": 18617,
                  "nodeType": "InlineAssembly",
                  "src": "15645:66:65"
                },
                {
                  "expression": {
                    "id": 18622,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 18618,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18593,
                        "src": "15717:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18620,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "15724:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "15717:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "38",
                      "id": 18621,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15734:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_8_by_1",
                        "typeString": "int_const 8"
                      },
                      "value": "8"
                    },
                    "src": "15717:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18623,
                  "nodeType": "ExpressionStatement",
                  "src": "15717:18:65"
                }
              ]
            },
            "documentation": {
              "id": 18590,
              "nodeType": "StructuredDocumentation",
              "src": "15182:232:65",
              "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": 18625,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 18596,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18593,
                        "src": "15496:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18597,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15503:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "15496:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "38",
                      "id": 18598,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "15512:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_8_by_1",
                        "typeString": "int_const 8"
                      },
                      "value": "8"
                    },
                    "src": "15496:17:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 18600,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18593,
                        "src": "15515:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18601,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "15522:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "15515:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 18602,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "15527:6:65",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "15515:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 18603,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 18595,
                  "name": "withinRange",
                  "nameLocations": [
                    "15484:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "15484:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "15484:50:65"
              }
            ],
            "name": "readUint64",
            "nameLocation": "15427:10:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18594,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18593,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "15452:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18625,
                  "src": "15438:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 18592,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18591,
                      "name": "Buffer",
                      "nameLocations": [
                        "15438:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "15438:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "15438:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15437:22:65"
            },
            "returnParameters": {
              "id": 18606,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18605,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "15556:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18625,
                  "src": "15549:12:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 18604,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "15549:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15548:14:65"
            },
            "scope": 19191,
            "src": "15418:323:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18660,
              "nodeType": "Block",
              "src": "16138:177:65",
              "statements": [
                {
                  "assignments": [
                    18644
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18644,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "16158:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18660,
                      "src": "16145:17:65",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 18643,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "16145:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18647,
                  "initialValue": {
                    "expression": {
                      "id": 18645,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18629,
                      "src": "16165:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18646,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16172:4:65",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17577,
                    "src": "16165:11:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16145:31:65"
                },
                {
                  "assignments": [
                    18649
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18649,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "16188:6:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18660,
                      "src": "16183:11:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18648,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16183:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18652,
                  "initialValue": {
                    "expression": {
                      "id": 18650,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18629,
                      "src": "16197:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18651,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16204:6:65",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17579,
                    "src": "16197:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16183:27:65"
                },
                {
                  "AST": {
                    "nativeSrc": "16226:58:65",
                    "nodeType": "YulBlock",
                    "src": "16226:58:65",
                    "statements": [
                      {
                        "nativeSrc": "16235:42:65",
                        "nodeType": "YulAssignment",
                        "src": "16235:42:65",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "16258:4:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "16258:4:65"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "16264:2:65",
                                      "nodeType": "YulLiteral",
                                      "src": "16264:2:65",
                                      "type": "",
                                      "value": "16"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "16254:3:65",
                                    "nodeType": "YulIdentifier",
                                    "src": "16254:3:65"
                                  },
                                  "nativeSrc": "16254:13:65",
                                  "nodeType": "YulFunctionCall",
                                  "src": "16254:13:65"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "16269:6:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "16269:6:65"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "16250:3:65",
                                "nodeType": "YulIdentifier",
                                "src": "16250:3:65"
                              },
                              "nativeSrc": "16250:26:65",
                              "nodeType": "YulFunctionCall",
                              "src": "16250:26:65"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "16244:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "16244:5:65"
                          },
                          "nativeSrc": "16244:33:65",
                          "nodeType": "YulFunctionCall",
                          "src": "16244:33:65"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "16235:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "16235:5:65"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "paris",
                  "externalReferences": [
                    {
                      "declaration": 18644,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16258:4:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18649,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16269:6:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18641,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16235:5:65",
                      "valueSize": 1
                    }
                  ],
                  "id": 18653,
                  "nodeType": "InlineAssembly",
                  "src": "16217:67:65"
                },
                {
                  "expression": {
                    "id": 18658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 18654,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18629,
                        "src": "16290:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18656,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "16297:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "16290:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "3136",
                      "id": 18657,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16307:2:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_16_by_1",
                        "typeString": "int_const 16"
                      },
                      "value": "16"
                    },
                    "src": "16290:19:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18659,
                  "nodeType": "ExpressionStatement",
                  "src": "16290:19:65"
                }
              ]
            },
            "documentation": {
              "id": 18626,
              "nodeType": "StructuredDocumentation",
              "src": "15747:236:65",
              "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": 18661,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18635,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 18632,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18629,
                        "src": "16066:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18633,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16073:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "16066:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "3136",
                      "id": 18634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16082:2:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_16_by_1",
                        "typeString": "int_const 16"
                      },
                      "value": "16"
                    },
                    "src": "16066:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 18636,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18629,
                        "src": "16086:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18637,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16093:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "16086:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 18638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16098:6:65",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "16086:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 18639,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 18631,
                  "name": "withinRange",
                  "nameLocations": [
                    "16054:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "16054:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "16054:51:65"
              }
            ],
            "name": "readUint128",
            "nameLocation": "15996:11:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18629,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "16022:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18661,
                  "src": "16008:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 18628,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18627,
                      "name": "Buffer",
                      "nameLocations": [
                        "16008:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "16008:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "16008:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16007:22:65"
            },
            "returnParameters": {
              "id": 18642,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18641,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "16128:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18661,
                  "src": "16120:13:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 18640,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "16120:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16119:15:65"
            },
            "scope": 19191,
            "src": "15987:328:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18696,
              "nodeType": "Block",
              "src": "16712:177:65",
              "statements": [
                {
                  "assignments": [
                    18680
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18680,
                      "mutability": "mutable",
                      "name": "data",
                      "nameLocation": "16732:4:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18696,
                      "src": "16719:17:65",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 18679,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "16719:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18683,
                  "initialValue": {
                    "expression": {
                      "id": 18681,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18665,
                      "src": "16739:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18682,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16746:4:65",
                    "memberName": "data",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17577,
                    "src": "16739:11:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16719:31:65"
                },
                {
                  "assignments": [
                    18685
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18685,
                      "mutability": "mutable",
                      "name": "offset",
                      "nameLocation": "16762:6:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 18696,
                      "src": "16757:11:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18684,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16757:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18688,
                  "initialValue": {
                    "expression": {
                      "id": 18686,
                      "name": "buffer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18665,
                      "src": "16771:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                        "typeString": "struct WitnetBuffer.Buffer memory"
                      }
                    },
                    "id": 18687,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16778:6:65",
                    "memberName": "cursor",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 17579,
                    "src": "16771:13:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "16757:27:65"
                },
                {
                  "AST": {
                    "nativeSrc": "16800:58:65",
                    "nodeType": "YulBlock",
                    "src": "16800:58:65",
                    "statements": [
                      {
                        "nativeSrc": "16809:42:65",
                        "nodeType": "YulAssignment",
                        "src": "16809:42:65",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "data",
                                      "nativeSrc": "16832:4:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "16832:4:65"
                                    },
                                    {
                                      "kind": "number",
                                      "nativeSrc": "16838:2:65",
                                      "nodeType": "YulLiteral",
                                      "src": "16838:2:65",
                                      "type": "",
                                      "value": "32"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nativeSrc": "16828:3:65",
                                    "nodeType": "YulIdentifier",
                                    "src": "16828:3:65"
                                  },
                                  "nativeSrc": "16828:13:65",
                                  "nodeType": "YulFunctionCall",
                                  "src": "16828:13:65"
                                },
                                {
                                  "name": "offset",
                                  "nativeSrc": "16843:6:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "16843:6:65"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nativeSrc": "16824:3:65",
                                "nodeType": "YulIdentifier",
                                "src": "16824:3:65"
                              },
                              "nativeSrc": "16824:26:65",
                              "nodeType": "YulFunctionCall",
                              "src": "16824:26:65"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "16818:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "16818:5:65"
                          },
                          "nativeSrc": "16818:33:65",
                          "nodeType": "YulFunctionCall",
                          "src": "16818:33:65"
                        },
                        "variableNames": [
                          {
                            "name": "value",
                            "nativeSrc": "16809:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "16809:5:65"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "paris",
                  "externalReferences": [
                    {
                      "declaration": 18680,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16832:4:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18685,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16843:6:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18677,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "16809:5:65",
                      "valueSize": 1
                    }
                  ],
                  "id": 18689,
                  "nodeType": "InlineAssembly",
                  "src": "16791:67:65"
                },
                {
                  "expression": {
                    "id": 18694,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 18690,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18665,
                        "src": "16864:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18692,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "16871:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "16864:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "hexValue": "3332",
                      "id": 18693,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16881:2:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "src": "16864:19:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 18695,
                  "nodeType": "ExpressionStatement",
                  "src": "16864:19:65"
                }
              ]
            },
            "documentation": {
              "id": 18662,
              "nodeType": "StructuredDocumentation",
              "src": "16321:236:65",
              "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": 18697,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18671,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 18668,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18665,
                        "src": "16640:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18669,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16647:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "16640:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "+",
                    "rightExpression": {
                      "hexValue": "3332",
                      "id": 18670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "16656:2:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_32_by_1",
                        "typeString": "int_const 32"
                      },
                      "value": "32"
                    },
                    "src": "16640:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 18672,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18665,
                        "src": "16660:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 18673,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "16667:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "16660:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 18674,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "16672:6:65",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "16660:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 18675,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 18667,
                  "name": "withinRange",
                  "nameLocations": [
                    "16628:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "16628:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "16628:51:65"
              }
            ],
            "name": "readUint256",
            "nameLocation": "16570:11:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18666,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18665,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "16596:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18697,
                  "src": "16582:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 18664,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 18663,
                      "name": "Buffer",
                      "nameLocations": [
                        "16582:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "16582:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "16582:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16581:22:65"
            },
            "returnParameters": {
              "id": 18678,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18677,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "16702:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18697,
                  "src": "16694:13:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18676,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "16694:7:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16693:15:65"
            },
            "scope": 19191,
            "src": "16561:328:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 18814,
              "nodeType": "Block",
              "src": "17227:593:65",
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18708,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 18705,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18700,
                        "src": "17238:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 18706,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "17244:6:65",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "17238:12:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "hexValue": "33",
                      "id": 18707,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "17253:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "17238:16:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18712,
                  "nodeType": "IfStatement",
                  "src": "17234:47:65",
                  "trueBody": {
                    "id": 18711,
                    "nodeType": "Block",
                    "src": "17256:25:65",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "30",
                          "id": 18709,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17272:1:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "functionReturnParameters": 18704,
                        "id": 18710,
                        "nodeType": "Return",
                        "src": "17265:8:65"
                      }
                    ]
                  }
                },
                {
                  "id": 18813,
                  "nodeType": "UncheckedBlock",
                  "src": "17287:528:65",
                  "statements": [
                    {
                      "assignments": [
                        18714
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 18714,
                          "mutability": "mutable",
                          "name": "ix",
                          "nameLocation": "17311:2:65",
                          "nodeType": "VariableDeclaration",
                          "scope": 18813,
                          "src": "17306:7:65",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 18713,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "17306:4:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 18716,
                      "initialValue": {
                        "hexValue": "30",
                        "id": 18715,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "17316:1:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "17306:11:65"
                    },
                    {
                      "assignments": [
                        18718
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 18718,
                          "mutability": "mutable",
                          "name": "length",
                          "nameLocation": "17332:6:65",
                          "nodeType": "VariableDeclaration",
                          "scope": 18813,
                          "src": "17327:11:65",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 18717,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "17327:4:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 18723,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18722,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 18719,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18700,
                            "src": "17341:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 18720,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "17347:6:65",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "17341:12:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "hexValue": "32",
                          "id": 18721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "17356:1:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "17341:16:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "17327:30:65"
                    },
                    {
                      "body": {
                        "id": 18811,
                        "nodeType": "Block",
                        "src": "17388:420:65",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 18767,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 18756,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 18745,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 18734,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 18727,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18700,
                                        "src": "17415:5:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 18729,
                                      "indexExpression": {
                                        "id": 18728,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18714,
                                        "src": "17421:2:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "17415:9:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "5c",
                                          "id": 18732,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17435:4:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          },
                                          "value": "\\"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          }
                                        ],
                                        "id": 18731,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "17428:6:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes1_$",
                                          "typeString": "type(bytes1)"
                                        },
                                        "typeName": {
                                          "id": 18730,
                                          "name": "bytes1",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17428:6:65",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 18733,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17428:12:65",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "17415:25:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 18744,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 18735,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18700,
                                        "src": "17457:5:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 18739,
                                      "indexExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18738,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 18736,
                                          "name": "ix",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18714,
                                          "src": "17463:2:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "hexValue": "32",
                                          "id": 18737,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17468:1:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "17463:6:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "17457:13:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "5c",
                                          "id": 18742,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17481:4:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          },
                                          "value": "\\"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          }
                                        ],
                                        "id": 18741,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "17474:6:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes1_$",
                                          "typeString": "type(bytes1)"
                                        },
                                        "typeName": {
                                          "id": 18740,
                                          "name": "bytes1",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "17474:6:65",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 18743,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "17474:12:65",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "17457:29:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "17415:71:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 18755,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 18746,
                                      "name": "input",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18700,
                                      "src": "17503:5:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 18750,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 18749,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 18747,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18714,
                                        "src": "17509:2:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 18748,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17514:1:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "17509:6:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "17503:13:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 18753,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17527:3:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                          "typeString": "literal_string \"0\""
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                          "typeString": "literal_string \"0\""
                                        }
                                      ],
                                      "id": 18752,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "17520:6:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 18751,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17520:6:65",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 18754,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17520:11:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "src": "17503:28:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "17415:116:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                },
                                "id": 18766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 18757,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18700,
                                    "src": "17548:5:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 18761,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18760,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18758,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18714,
                                      "src": "17554:2:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 18759,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17559:1:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "17554:6:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "17548:13:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "39",
                                      "id": 18764,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17572:3:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
                                        "typeString": "literal_string \"9\""
                                      },
                                      "value": "9"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
                                        "typeString": "literal_string \"9\""
                                      }
                                    ],
                                    "id": 18763,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "17565:6:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 18762,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "17565:6:65",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18765,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17565:11:65",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "17548:28:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "17415:161:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 18809,
                              "nodeType": "Block",
                              "src": "17769:30:65",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 18807,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "17782:5:65",
                                    "subExpression": {
                                      "id": 18806,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18714,
                                      "src": "17782:2:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18808,
                                  "nodeType": "ExpressionStatement",
                                  "src": "17782:5:65"
                                }
                              ]
                            },
                            "id": 18810,
                            "nodeType": "IfStatement",
                            "src": "17399:400:65",
                            "trueBody": {
                              "id": 18805,
                              "nodeType": "Block",
                              "src": "17588:175:65",
                              "statements": [
                                {
                                  "assignments": [
                                    18769
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 18769,
                                      "mutability": "mutable",
                                      "name": "ax",
                                      "nameLocation": "17607:2:65",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 18805,
                                      "src": "17601:8:65",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "typeName": {
                                        "id": 18768,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17601:5:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 18791,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        "id": 18789,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "commonType": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          },
                                          "id": 18787,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "arguments": [
                                              {
                                                "baseExpression": {
                                                  "id": 18774,
                                                  "name": "input",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18700,
                                                  "src": "17624:5:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes_memory_ptr",
                                                    "typeString": "bytes memory"
                                                  }
                                                },
                                                "id": 18778,
                                                "indexExpression": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "id": 18777,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 18775,
                                                    "name": "ix",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 18714,
                                                    "src": "17630:2:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "+",
                                                  "rightExpression": {
                                                    "hexValue": "31",
                                                    "id": 18776,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "17635:1:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_1_by_1",
                                                      "typeString": "int_const 1"
                                                    },
                                                    "value": "1"
                                                  },
                                                  "src": "17630:6:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "isConstant": false,
                                                "isLValue": true,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "nodeType": "IndexAccess",
                                                "src": "17624:13:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              ],
                                              "id": 18773,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "17618:5:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint8_$",
                                                "typeString": "type(uint8)"
                                              },
                                              "typeName": {
                                                "id": 18772,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "17618:5:65",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 18779,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17618:20:65",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "arguments": [
                                              {
                                                "arguments": [
                                                  {
                                                    "hexValue": "30",
                                                    "id": 18784,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "string",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "17654:3:65",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                      "typeString": "literal_string \"0\""
                                                    },
                                                    "value": "0"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                      "typeString": "literal_string \"0\""
                                                    }
                                                  ],
                                                  "id": 18783,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "nodeType": "ElementaryTypeNameExpression",
                                                  "src": "17647:6:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_type$_t_bytes1_$",
                                                    "typeString": "type(bytes1)"
                                                  },
                                                  "typeName": {
                                                    "id": 18782,
                                                    "name": "bytes1",
                                                    "nodeType": "ElementaryTypeName",
                                                    "src": "17647:6:65",
                                                    "typeDescriptions": {}
                                                  }
                                                },
                                                "id": 18785,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "typeConversion",
                                                "lValueRequested": false,
                                                "nameLocations": [],
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "17647:11:65",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_bytes1",
                                                  "typeString": "bytes1"
                                                }
                                              ],
                                              "id": 18781,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "17641:5:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint8_$",
                                                "typeString": "type(uint8)"
                                              },
                                              "typeName": {
                                                "id": 18780,
                                                "name": "uint8",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "17641:5:65",
                                                "typeDescriptions": {}
                                              }
                                            },
                                            "id": 18786,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "nameLocations": [],
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17641:18:65",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "17618:41:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "hexValue": "31",
                                          "id": 18788,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "17662:1:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_1_by_1",
                                            "typeString": "int_const 1"
                                          },
                                          "value": "1"
                                        },
                                        "src": "17618:45:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 18771,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "17612:5:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint8_$",
                                        "typeString": "type(uint8)"
                                      },
                                      "typeName": {
                                        "id": 18770,
                                        "name": "uint8",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "17612:5:65",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 18790,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17612:52:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "17601:63:65"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    "id": 18794,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18792,
                                      "name": "ax",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18769,
                                      "src": "17681:2:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "id": 18793,
                                      "name": "count",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18703,
                                      "src": "17686:5:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      }
                                    },
                                    "src": "17681:10:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 18800,
                                  "nodeType": "IfStatement",
                                  "src": "17677:55:65",
                                  "trueBody": {
                                    "id": 18799,
                                    "nodeType": "Block",
                                    "src": "17693:39:65",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 18797,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 18795,
                                            "name": "count",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18703,
                                            "src": "17708:5:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "=",
                                          "rightHandSide": {
                                            "id": 18796,
                                            "name": "ax",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18769,
                                            "src": "17716:2:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            }
                                          },
                                          "src": "17708:10:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "id": 18798,
                                        "nodeType": "ExpressionStatement",
                                        "src": "17708:10:65"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "expression": {
                                    "id": 18803,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18801,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18714,
                                      "src": "17744:2:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "33",
                                      "id": 18802,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17750:1:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "src": "17744:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18804,
                                  "nodeType": "ExpressionStatement",
                                  "src": "17744:7:65"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 18724,
                          "name": "ix",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18714,
                          "src": "17373:2:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 18725,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18718,
                          "src": "17378:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "17373:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 18812,
                      "isSimpleCounterLoop": false,
                      "nodeType": "ForStatement",
                      "src": "17366:442:65"
                    }
                  ]
                }
              ]
            },
            "documentation": {
              "id": 18698,
              "nodeType": "StructuredDocumentation",
              "src": "16895:238:65",
              "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": 18815,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "argsCountOf",
            "nameLocation": "17146:11:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18701,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18700,
                  "mutability": "mutable",
                  "name": "input",
                  "nameLocation": "17171:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18815,
                  "src": "17158:18:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 18699,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "17158:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17157:20:65"
            },
            "returnParameters": {
              "id": 18704,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18703,
                  "mutability": "mutable",
                  "name": "count",
                  "nameLocation": "17217:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 18815,
                  "src": "17211:11:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 18702,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "17211:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "17210:13:65"
            },
            "scope": 19191,
            "src": "17137:683:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19061,
              "nodeType": "Block",
              "src": "18351:2340:65",
              "statements": [
                {
                  "assignments": [
                    18829
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18829,
                      "mutability": "mutable",
                      "name": "ix",
                      "nameLocation": "18363:2:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 19061,
                      "src": "18358:7:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18828,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18358:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18831,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 18830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "18368:1:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18358:11:65"
                },
                {
                  "assignments": [
                    18833
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18833,
                      "mutability": "mutable",
                      "name": "lix",
                      "nameLocation": "18376:3:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 19061,
                      "src": "18371:8:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18832,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18371:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18835,
                  "initialValue": {
                    "hexValue": "30",
                    "id": 18834,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "18382:1:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18371:12:65"
                },
                {
                  "assignments": [
                    18837
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18837,
                      "mutability": "mutable",
                      "name": "inputLength",
                      "nameLocation": "18395:11:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 19061,
                      "src": "18390:16:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18836,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18390:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18838,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18390:16:65"
                },
                {
                  "assignments": [
                    18840
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18840,
                      "mutability": "mutable",
                      "name": "inputPointer",
                      "nameLocation": "18418:12:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 19061,
                      "src": "18413:17:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18839,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18413:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18841,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18413:17:65"
                },
                {
                  "assignments": [
                    18843
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18843,
                      "mutability": "mutable",
                      "name": "outputLength",
                      "nameLocation": "18442:12:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 19061,
                      "src": "18437:17:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18842,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18437:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18844,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18437:17:65"
                },
                {
                  "assignments": [
                    18846
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18846,
                      "mutability": "mutable",
                      "name": "outputPointer",
                      "nameLocation": "18466:13:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 19061,
                      "src": "18461:18:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18845,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18461:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18847,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18461:18:65"
                },
                {
                  "assignments": [
                    18849
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18849,
                      "mutability": "mutable",
                      "name": "source",
                      "nameLocation": "18495:6:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 19061,
                      "src": "18490:11:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18848,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18490:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18850,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18490:11:65"
                },
                {
                  "assignments": [
                    18852
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18852,
                      "mutability": "mutable",
                      "name": "sourceLength",
                      "nameLocation": "18513:12:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 19061,
                      "src": "18508:17:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18851,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18508:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18853,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18508:17:65"
                },
                {
                  "assignments": [
                    18855
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 18855,
                      "mutability": "mutable",
                      "name": "sourcePointer",
                      "nameLocation": "18537:13:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 19061,
                      "src": "18532:18:65",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 18854,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18532:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 18856,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "18532:18:65"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 18860,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 18857,
                        "name": "input",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 18818,
                        "src": "18563:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 18858,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "18569:6:65",
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "18563:12:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "hexValue": "33",
                      "id": 18859,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "18578:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_3_by_1",
                        "typeString": "int_const 3"
                      },
                      "value": "3"
                    },
                    "src": "18563:16:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 18866,
                  "nodeType": "IfStatement",
                  "src": "18559:56:65",
                  "trueBody": {
                    "id": 18865,
                    "nodeType": "Block",
                    "src": "18581:34:65",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 18861,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18818,
                              "src": "18598:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 18862,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18605:1:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 18863,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "18597:10:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bytes memory,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 18827,
                        "id": 18864,
                        "nodeType": "Return",
                        "src": "18590:17:65"
                      }
                    ]
                  }
                },
                {
                  "AST": {
                    "nativeSrc": "18636:225:65",
                    "nodeType": "YulBlock",
                    "src": "18636:225:65",
                    "statements": [
                      {
                        "nativeSrc": "18682:30:65",
                        "nodeType": "YulAssignment",
                        "src": "18682:30:65",
                        "value": {
                          "arguments": [
                            {
                              "name": "input",
                              "nativeSrc": "18702:5:65",
                              "nodeType": "YulIdentifier",
                              "src": "18702:5:65"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "18709:2:65",
                              "nodeType": "YulLiteral",
                              "src": "18709:2:65",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "18698:3:65",
                            "nodeType": "YulIdentifier",
                            "src": "18698:3:65"
                          },
                          "nativeSrc": "18698:14:65",
                          "nodeType": "YulFunctionCall",
                          "src": "18698:14:65"
                        },
                        "variableNames": [
                          {
                            "name": "inputPointer",
                            "nativeSrc": "18682:12:65",
                            "nodeType": "YulIdentifier",
                            "src": "18682:12:65"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "18755:21:65",
                        "nodeType": "YulAssignment",
                        "src": "18755:21:65",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nativeSrc": "18771:4:65",
                              "nodeType": "YulLiteral",
                              "src": "18771:4:65",
                              "type": "",
                              "value": "0x40"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nativeSrc": "18765:5:65",
                            "nodeType": "YulIdentifier",
                            "src": "18765:5:65"
                          },
                          "nativeSrc": "18765:11:65",
                          "nodeType": "YulFunctionCall",
                          "src": "18765:11:65"
                        },
                        "variableNames": [
                          {
                            "name": "output",
                            "nativeSrc": "18755:6:65",
                            "nodeType": "YulIdentifier",
                            "src": "18755:6:65"
                          }
                        ]
                      },
                      {
                        "nativeSrc": "18822:32:65",
                        "nodeType": "YulAssignment",
                        "src": "18822:32:65",
                        "value": {
                          "arguments": [
                            {
                              "name": "output",
                              "nativeSrc": "18843:6:65",
                              "nodeType": "YulIdentifier",
                              "src": "18843:6:65"
                            },
                            {
                              "kind": "number",
                              "nativeSrc": "18851:2:65",
                              "nodeType": "YulLiteral",
                              "src": "18851:2:65",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nativeSrc": "18839:3:65",
                            "nodeType": "YulIdentifier",
                            "src": "18839:3:65"
                          },
                          "nativeSrc": "18839:15:65",
                          "nodeType": "YulFunctionCall",
                          "src": "18839:15:65"
                        },
                        "variableNames": [
                          {
                            "name": "outputPointer",
                            "nativeSrc": "18822:13:65",
                            "nodeType": "YulIdentifier",
                            "src": "18822:13:65"
                          }
                        ]
                      }
                    ]
                  },
                  "evmVersion": "paris",
                  "externalReferences": [
                    {
                      "declaration": 18818,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18702:5:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18840,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18682:12:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18824,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18755:6:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18824,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18843:6:65",
                      "valueSize": 1
                    },
                    {
                      "declaration": 18846,
                      "isOffset": false,
                      "isSlot": false,
                      "src": "18822:13:65",
                      "valueSize": 1
                    }
                  ],
                  "id": 18867,
                  "nodeType": "InlineAssembly",
                  "src": "18627:234:65"
                },
                {
                  "id": 19029,
                  "nodeType": "UncheckedBlock",
                  "src": "18878:1360:65",
                  "statements": [
                    {
                      "assignments": [
                        18869
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 18869,
                          "mutability": "mutable",
                          "name": "length",
                          "nameLocation": "18902:6:65",
                          "nodeType": "VariableDeclaration",
                          "scope": 19029,
                          "src": "18897:11:65",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 18868,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "18897:4:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 18874,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18873,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 18870,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18818,
                            "src": "18911:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 18871,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "18917:6:65",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "18911:12:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "hexValue": "32",
                          "id": 18872,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "18926:1:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "18911:16:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "18897:30:65"
                    },
                    {
                      "body": {
                        "id": 19022,
                        "nodeType": "Block",
                        "src": "18958:1243:65",
                        "statements": [
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 18918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 18907,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 18896,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 18885,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 18878,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18818,
                                        "src": "18985:5:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 18880,
                                      "indexExpression": {
                                        "id": 18879,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18829,
                                        "src": "18991:2:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "18985:9:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "5c",
                                          "id": 18883,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "19005:4:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          },
                                          "value": "\\"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          }
                                        ],
                                        "id": 18882,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "18998:6:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes1_$",
                                          "typeString": "type(bytes1)"
                                        },
                                        "typeName": {
                                          "id": 18881,
                                          "name": "bytes1",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "18998:6:65",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 18884,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18998:12:65",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "18985:25:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "&&",
                                  "rightExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    },
                                    "id": 18895,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "baseExpression": {
                                        "id": 18886,
                                        "name": "input",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18818,
                                        "src": "19027:5:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 18890,
                                      "indexExpression": {
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 18889,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 18887,
                                          "name": "ix",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 18829,
                                          "src": "19033:2:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "hexValue": "32",
                                          "id": 18888,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "19038:1:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_2_by_1",
                                            "typeString": "int_const 2"
                                          },
                                          "value": "2"
                                        },
                                        "src": "19033:6:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "19027:13:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "arguments": [
                                        {
                                          "hexValue": "5c",
                                          "id": 18893,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "19051:4:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          },
                                          "value": "\\"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_731553fa98541ade8b78284229adfe09a819380dee9244baac20dd1e0aa24095",
                                            "typeString": "literal_string \"\\\""
                                          }
                                        ],
                                        "id": 18892,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "19044:6:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes1_$",
                                          "typeString": "type(bytes1)"
                                        },
                                        "typeName": {
                                          "id": 18891,
                                          "name": "bytes1",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "19044:6:65",
                                          "typeDescriptions": {}
                                        }
                                      },
                                      "id": 18894,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "nameLocations": [],
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "19044:12:65",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes1",
                                        "typeString": "bytes1"
                                      }
                                    },
                                    "src": "19027:29:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "18985:71:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  },
                                  "id": 18906,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "baseExpression": {
                                      "id": 18897,
                                      "name": "input",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18818,
                                      "src": "19073:5:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    },
                                    "id": 18901,
                                    "indexExpression": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 18900,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 18898,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18829,
                                        "src": "19079:2:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "hexValue": "31",
                                        "id": 18899,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "19084:1:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "19079:6:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "19073:13:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "arguments": [
                                      {
                                        "hexValue": "30",
                                        "id": 18904,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "string",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "19097:3:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                          "typeString": "literal_string \"0\""
                                        },
                                        "value": "0"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                          "typeString": "literal_string \"0\""
                                        }
                                      ],
                                      "id": 18903,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "19090:6:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_bytes1_$",
                                        "typeString": "type(bytes1)"
                                      },
                                      "typeName": {
                                        "id": 18902,
                                        "name": "bytes1",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19090:6:65",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 18905,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19090:11:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes1",
                                      "typeString": "bytes1"
                                    }
                                  },
                                  "src": "19073:28:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "18985:116:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes1",
                                  "typeString": "bytes1"
                                },
                                "id": 18917,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "baseExpression": {
                                    "id": 18908,
                                    "name": "input",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18818,
                                    "src": "19118:5:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  },
                                  "id": 18912,
                                  "indexExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18911,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18909,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18829,
                                      "src": "19124:2:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "hexValue": "31",
                                      "id": 18910,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "19129:1:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "19124:6:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "19118:13:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<=",
                                "rightExpression": {
                                  "arguments": [
                                    {
                                      "hexValue": "39",
                                      "id": 18915,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "19142:3:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
                                        "typeString": "literal_string \"9\""
                                      },
                                      "value": "9"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_d2f8f61201b2b11a78d6e866abc9c3db2ae8631fa656bfe5cb53668255367afb",
                                        "typeString": "literal_string \"9\""
                                      }
                                    ],
                                    "id": 18914,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "19135:6:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_bytes1_$",
                                      "typeString": "type(bytes1)"
                                    },
                                    "typeName": {
                                      "id": 18913,
                                      "name": "bytes1",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "19135:6:65",
                                      "typeDescriptions": {}
                                    }
                                  },
                                  "id": 18916,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "nameLocations": [],
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19135:11:65",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes1",
                                    "typeString": "bytes1"
                                  }
                                },
                                "src": "19118:28:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "18985:161:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 19020,
                              "nodeType": "Block",
                              "src": "20162:30:65",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 19018,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "20175:5:65",
                                    "subExpression": {
                                      "id": 19017,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18829,
                                      "src": "20175:2:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19019,
                                  "nodeType": "ExpressionStatement",
                                  "src": "20175:5:65"
                                }
                              ]
                            },
                            "id": 19021,
                            "nodeType": "IfStatement",
                            "src": "18969:1223:65",
                            "trueBody": {
                              "id": 19016,
                              "nodeType": "Block",
                              "src": "19158:998:65",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 18924,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18919,
                                      "name": "inputLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18837,
                                      "src": "19171:11:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 18922,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 18920,
                                            "name": "ix",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18829,
                                            "src": "19186:2:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "id": 18921,
                                            "name": "lix",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18833,
                                            "src": "19191:3:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "19186:8:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 18923,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "19185:10:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "19171:24:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 18925,
                                  "nodeType": "ExpressionStatement",
                                  "src": "19171:24:65"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18928,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18926,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18829,
                                      "src": "19212:2:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "id": 18927,
                                      "name": "lix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18833,
                                      "src": "19217:3:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "19212:8:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "id": 18950,
                                    "nodeType": "Block",
                                    "src": "19454:46:65",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 18948,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 18946,
                                            "name": "inputPointer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18840,
                                            "src": "19469:12:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "hexValue": "33",
                                            "id": 18947,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "19485:1:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_3_by_1",
                                              "typeString": "int_const 3"
                                            },
                                            "value": "3"
                                          },
                                          "src": "19469:17:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 18949,
                                        "nodeType": "ExpressionStatement",
                                        "src": "19469:17:65"
                                      }
                                    ]
                                  },
                                  "id": 18951,
                                  "nodeType": "IfStatement",
                                  "src": "19208:292:65",
                                  "trueBody": {
                                    "id": 18945,
                                    "nodeType": "Block",
                                    "src": "19222:226:65",
                                    "statements": [
                                      {
                                        "expression": {
                                          "arguments": [
                                            {
                                              "id": 18930,
                                              "name": "outputPointer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18846,
                                              "src": "19260:13:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 18931,
                                              "name": "inputPointer",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18840,
                                              "src": "19290:12:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "id": 18932,
                                              "name": "inputLength",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18837,
                                              "src": "19319:11:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 18929,
                                            "name": "memcpy",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 19190,
                                            "src": "19237:6:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                              "typeString": "function (uint256,uint256,uint256) pure"
                                            }
                                          },
                                          "id": 18933,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "19237:108:65",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 18934,
                                        "nodeType": "ExpressionStatement",
                                        "src": "19237:108:65"
                                      },
                                      {
                                        "expression": {
                                          "id": 18939,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 18935,
                                            "name": "inputPointer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18840,
                                            "src": "19360:12:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 18938,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 18936,
                                              "name": "inputLength",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 18837,
                                              "src": "19376:11:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "hexValue": "33",
                                              "id": 18937,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "19390:1:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_3_by_1",
                                                "typeString": "int_const 3"
                                              },
                                              "value": "3"
                                            },
                                            "src": "19376:15:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "19360:31:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 18940,
                                        "nodeType": "ExpressionStatement",
                                        "src": "19360:31:65"
                                      },
                                      {
                                        "expression": {
                                          "id": 18943,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftHandSide": {
                                            "id": 18941,
                                            "name": "outputPointer",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18846,
                                            "src": "19406:13:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "Assignment",
                                          "operator": "+=",
                                          "rightHandSide": {
                                            "id": 18942,
                                            "name": "inputLength",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 18837,
                                            "src": "19423:11:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "19406:28:65",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 18944,
                                        "nodeType": "ExpressionStatement",
                                        "src": "19406:28:65"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "assignments": [
                                    18953
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 18953,
                                      "mutability": "mutable",
                                      "name": "ax",
                                      "nameLocation": "19517:2:65",
                                      "nodeType": "VariableDeclaration",
                                      "scope": 19016,
                                      "src": "19512:7:65",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 18952,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19512:4:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 18973,
                                  "initialValue": {
                                    "arguments": [
                                      {
                                        "commonType": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        "id": 18971,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "arguments": [
                                            {
                                              "baseExpression": {
                                                "id": 18958,
                                                "name": "input",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18818,
                                                "src": "19533:5:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes_memory_ptr",
                                                  "typeString": "bytes memory"
                                                }
                                              },
                                              "id": 18962,
                                              "indexExpression": {
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 18961,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 18959,
                                                  "name": "ix",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 18829,
                                                  "src": "19539:2:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "+",
                                                "rightExpression": {
                                                  "hexValue": "31",
                                                  "id": 18960,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "19544:1:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_1_by_1",
                                                    "typeString": "int_const 1"
                                                  },
                                                  "value": "1"
                                                },
                                                "src": "19539:6:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "nodeType": "IndexAccess",
                                              "src": "19533:13:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            ],
                                            "id": 18957,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "19527:5:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint8_$",
                                              "typeString": "type(uint8)"
                                            },
                                            "typeName": {
                                              "id": 18956,
                                              "name": "uint8",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "19527:5:65",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 18963,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "19527:20:65",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "-",
                                        "rightExpression": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "hexValue": "30",
                                                  "id": 18968,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "string",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "19563:3:65",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                    "typeString": "literal_string \"0\""
                                                  },
                                                  "value": "0"
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                                                    "typeString": "literal_string \"0\""
                                                  }
                                                ],
                                                "id": 18967,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "nodeType": "ElementaryTypeNameExpression",
                                                "src": "19556:6:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_type$_t_bytes1_$",
                                                  "typeString": "type(bytes1)"
                                                },
                                                "typeName": {
                                                  "id": 18966,
                                                  "name": "bytes1",
                                                  "nodeType": "ElementaryTypeName",
                                                  "src": "19556:6:65",
                                                  "typeDescriptions": {}
                                                }
                                              },
                                              "id": 18969,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "typeConversion",
                                              "lValueRequested": false,
                                              "nameLocations": [],
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "19556:11:65",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes1",
                                                "typeString": "bytes1"
                                              }
                                            ],
                                            "id": 18965,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "19550:5:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint8_$",
                                              "typeString": "type(uint8)"
                                            },
                                            "typeName": {
                                              "id": 18964,
                                              "name": "uint8",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "19550:5:65",
                                              "typeDescriptions": {}
                                            }
                                          },
                                          "id": 18970,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "19550:18:65",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint8",
                                            "typeString": "uint8"
                                          }
                                        },
                                        "src": "19527:41:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        }
                                      ],
                                      "id": 18955,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "19522:4:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 18954,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "19522:4:65",
                                        "typeDescriptions": {}
                                      }
                                    },
                                    "id": 18972,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19522:47:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "19512:57:65"
                                },
                                {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 18977,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 18974,
                                      "name": "ax",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18953,
                                      "src": "19586:2:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">=",
                                    "rightExpression": {
                                      "expression": {
                                        "id": 18975,
                                        "name": "args",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18821,
                                        "src": "19592:4:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "string memory[] memory"
                                        }
                                      },
                                      "id": 18976,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberLocation": "19597:6:65",
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "src": "19592:11:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "19586:17:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "id": 18987,
                                  "nodeType": "IfStatement",
                                  "src": "19582:91:65",
                                  "trueBody": {
                                    "id": 18986,
                                    "nodeType": "Block",
                                    "src": "19605:68:65",
                                    "statements": [
                                      {
                                        "errorCall": {
                                          "arguments": [
                                            {
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 18981,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 18979,
                                                "name": "ax",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18953,
                                                "src": "19639:2:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "+",
                                              "rightExpression": {
                                                "hexValue": "31",
                                                "id": 18980,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "19644:1:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_1_by_1",
                                                  "typeString": "int_const 1"
                                                },
                                                "value": "1"
                                              },
                                              "src": "19639:6:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            {
                                              "expression": {
                                                "id": 18982,
                                                "name": "args",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 18821,
                                                "src": "19647:4:65",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                                                  "typeString": "string memory[] memory"
                                                }
                                              },
                                              "id": 18983,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberLocation": "19652:6:65",
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "src": "19647:11:65",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 18978,
                                            "name": "MissingArgs",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 17574,
                                            "src": "19627:11:65",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_error_pure$_t_uint256_$_t_uint256_$returns$__$",
                                              "typeString": "function (uint256,uint256) pure"
                                            }
                                          },
                                          "id": 18984,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "nameLocations": [],
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "19627:32:65",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_tuple$__$",
                                            "typeString": "tuple()"
                                          }
                                        },
                                        "id": 18985,
                                        "nodeType": "RevertStatement",
                                        "src": "19620:39:65"
                                      }
                                    ]
                                  }
                                },
                                {
                                  "AST": {
                                    "nativeSrc": "19694:170:65",
                                    "nodeType": "YulBlock",
                                    "src": "19694:170:65",
                                    "statements": [
                                      {
                                        "nativeSrc": "19709:47:65",
                                        "nodeType": "YulAssignment",
                                        "src": "19709:47:65",
                                        "value": {
                                          "arguments": [
                                            {
                                              "arguments": [
                                                {
                                                  "name": "args",
                                                  "nativeSrc": "19729:4:65",
                                                  "nodeType": "YulIdentifier",
                                                  "src": "19729:4:65"
                                                },
                                                {
                                                  "arguments": [
                                                    {
                                                      "kind": "number",
                                                      "nativeSrc": "19739:2:65",
                                                      "nodeType": "YulLiteral",
                                                      "src": "19739:2:65",
                                                      "type": "",
                                                      "value": "32"
                                                    },
                                                    {
                                                      "arguments": [
                                                        {
                                                          "name": "ax",
                                                          "nativeSrc": "19747:2:65",
                                                          "nodeType": "YulIdentifier",
                                                          "src": "19747:2:65"
                                                        },
                                                        {
                                                          "kind": "number",
                                                          "nativeSrc": "19751:1:65",
                                                          "nodeType": "YulLiteral",
                                                          "src": "19751:1:65",
                                                          "type": "",
                                                          "value": "1"
                                                        }
                                                      ],
                                                      "functionName": {
                                                        "name": "add",
                                                        "nativeSrc": "19743:3:65",
                                                        "nodeType": "YulIdentifier",
                                                        "src": "19743:3:65"
                                                      },
                                                      "nativeSrc": "19743:10:65",
                                                      "nodeType": "YulFunctionCall",
                                                      "src": "19743:10:65"
                                                    }
                                                  ],
                                                  "functionName": {
                                                    "name": "mul",
                                                    "nativeSrc": "19735:3:65",
                                                    "nodeType": "YulIdentifier",
                                                    "src": "19735:3:65"
                                                  },
                                                  "nativeSrc": "19735:19:65",
                                                  "nodeType": "YulFunctionCall",
                                                  "src": "19735:19:65"
                                                }
                                              ],
                                              "functionName": {
                                                "name": "add",
                                                "nativeSrc": "19725:3:65",
                                                "nodeType": "YulIdentifier",
                                                "src": "19725:3:65"
                                              },
                                              "nativeSrc": "19725:30:65",
                                              "nodeType": "YulFunctionCall",
                                              "src": "19725:30:65"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "19719:5:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "19719:5:65"
                                          },
                                          "nativeSrc": "19719:37:65",
                                          "nodeType": "YulFunctionCall",
                                          "src": "19719:37:65"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "source",
                                            "nativeSrc": "19709:6:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "19709:6:65"
                                          }
                                        ]
                                      },
                                      {
                                        "nativeSrc": "19770:29:65",
                                        "nodeType": "YulAssignment",
                                        "src": "19770:29:65",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "source",
                                              "nativeSrc": "19792:6:65",
                                              "nodeType": "YulIdentifier",
                                              "src": "19792:6:65"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "mload",
                                            "nativeSrc": "19786:5:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "19786:5:65"
                                          },
                                          "nativeSrc": "19786:13:65",
                                          "nodeType": "YulFunctionCall",
                                          "src": "19786:13:65"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "sourceLength",
                                            "nativeSrc": "19770:12:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "19770:12:65"
                                          }
                                        ]
                                      },
                                      {
                                        "nativeSrc": "19813:32:65",
                                        "nodeType": "YulAssignment",
                                        "src": "19813:32:65",
                                        "value": {
                                          "arguments": [
                                            {
                                              "name": "source",
                                              "nativeSrc": "19834:6:65",
                                              "nodeType": "YulIdentifier",
                                              "src": "19834:6:65"
                                            },
                                            {
                                              "kind": "number",
                                              "nativeSrc": "19842:2:65",
                                              "nodeType": "YulLiteral",
                                              "src": "19842:2:65",
                                              "type": "",
                                              "value": "32"
                                            }
                                          ],
                                          "functionName": {
                                            "name": "add",
                                            "nativeSrc": "19830:3:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "19830:3:65"
                                          },
                                          "nativeSrc": "19830:15:65",
                                          "nodeType": "YulFunctionCall",
                                          "src": "19830:15:65"
                                        },
                                        "variableNames": [
                                          {
                                            "name": "sourcePointer",
                                            "nativeSrc": "19813:13:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "19813:13:65"
                                          }
                                        ]
                                      }
                                    ]
                                  },
                                  "evmVersion": "paris",
                                  "externalReferences": [
                                    {
                                      "declaration": 18821,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19729:4:65",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 18953,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19747:2:65",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 18849,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19709:6:65",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 18849,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19792:6:65",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 18849,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19834:6:65",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 18852,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19770:12:65",
                                      "valueSize": 1
                                    },
                                    {
                                      "declaration": 18855,
                                      "isOffset": false,
                                      "isSlot": false,
                                      "src": "19813:13:65",
                                      "valueSize": 1
                                    }
                                  ],
                                  "id": 18988,
                                  "nodeType": "InlineAssembly",
                                  "src": "19685:179:65"
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "id": 18990,
                                        "name": "outputPointer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18846,
                                        "src": "19905:13:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 18991,
                                        "name": "sourcePointer",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18855,
                                        "src": "19933:13:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "id": 18992,
                                        "name": "sourceLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18852,
                                        "src": "19961:12:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 18989,
                                      "name": "memcpy",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 19190,
                                      "src": "19884:6:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                        "typeString": "function (uint256,uint256,uint256) pure"
                                      }
                                    },
                                    "id": 18993,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "nameLocations": [],
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "19884:102:65",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 18994,
                                  "nodeType": "ExpressionStatement",
                                  "src": "19884:102:65"
                                },
                                {
                                  "expression": {
                                    "id": 18999,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 18995,
                                      "name": "outputLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18843,
                                      "src": "19999:12:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 18998,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 18996,
                                        "name": "inputLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18837,
                                        "src": "20015:11:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "id": 18997,
                                        "name": "sourceLength",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18852,
                                        "src": "20029:12:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "20015:26:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "19999:42:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19000,
                                  "nodeType": "ExpressionStatement",
                                  "src": "19999:42:65"
                                },
                                {
                                  "expression": {
                                    "id": 19003,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 19001,
                                      "name": "outputPointer",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18846,
                                      "src": "20054:13:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "id": 19002,
                                      "name": "sourceLength",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18852,
                                      "src": "20071:12:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "20054:29:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19004,
                                  "nodeType": "ExpressionStatement",
                                  "src": "20054:29:65"
                                },
                                {
                                  "expression": {
                                    "id": 19007,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 19005,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18829,
                                      "src": "20096:2:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "hexValue": "33",
                                      "id": 19006,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "20102:1:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_3_by_1",
                                        "typeString": "int_const 3"
                                      },
                                      "value": "3"
                                    },
                                    "src": "20096:7:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19008,
                                  "nodeType": "ExpressionStatement",
                                  "src": "20096:7:65"
                                },
                                {
                                  "expression": {
                                    "id": 19011,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "id": 19009,
                                      "name": "lix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18833,
                                      "src": "20116:3:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "id": 19010,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18829,
                                      "src": "20122:2:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "20116:8:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19012,
                                  "nodeType": "ExpressionStatement",
                                  "src": "20116:8:65"
                                },
                                {
                                  "expression": {
                                    "id": 19014,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "++",
                                    "prefix": false,
                                    "src": "20137:7:65",
                                    "subExpression": {
                                      "id": 19013,
                                      "name": "hits",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18826,
                                      "src": "20137:4:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 19015,
                                  "nodeType": "ExpressionStatement",
                                  "src": "20137:7:65"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 18877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 18875,
                          "name": "ix",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18829,
                          "src": "18943:2:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "id": 18876,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18869,
                          "src": "18948:6:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "18943:11:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 19023,
                      "isSimpleCounterLoop": false,
                      "nodeType": "ForStatement",
                      "src": "18936:1265:65"
                    },
                    {
                      "expression": {
                        "id": 19027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "id": 19024,
                          "name": "ix",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18829,
                          "src": "20209:2:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "expression": {
                            "id": 19025,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18818,
                            "src": "20214:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "id": 19026,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "20220:6:65",
                          "memberName": "length",
                          "nodeType": "MemberAccess",
                          "src": "20214:12:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "20209:17:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 19028,
                      "nodeType": "ExpressionStatement",
                      "src": "20209:17:65"
                    }
                  ]
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 19032,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 19030,
                      "name": "outputLength",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 18843,
                      "src": "20248:12:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 19031,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "20263:1:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "20248:16:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 19059,
                    "nodeType": "Block",
                    "src": "20652:34:65",
                    "statements": [
                      {
                        "expression": {
                          "components": [
                            {
                              "id": 19055,
                              "name": "input",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18818,
                              "src": "20669:5:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            {
                              "hexValue": "30",
                              "id": 19056,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "20676:1:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "id": 19057,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "20668:10:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_rational_0_by_1_$",
                            "typeString": "tuple(bytes memory,int_const 0)"
                          }
                        },
                        "functionReturnParameters": 18827,
                        "id": 19058,
                        "nodeType": "Return",
                        "src": "20661:17:65"
                      }
                    ]
                  },
                  "id": 19060,
                  "nodeType": "IfStatement",
                  "src": "20244:442:65",
                  "trueBody": {
                    "id": 19054,
                    "nodeType": "Block",
                    "src": "20266:375:65",
                    "statements": [
                      {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 19035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 19033,
                            "name": "ix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18829,
                            "src": "20279:2:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "id": 19034,
                            "name": "lix",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 18833,
                            "src": "20284:3:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "20279:8:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 19052,
                        "nodeType": "IfStatement",
                        "src": "20275:162:65",
                        "trueBody": {
                          "id": 19051,
                          "nodeType": "Block",
                          "src": "20290:147:65",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "id": 19037,
                                    "name": "outputPointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18846,
                                    "src": "20320:13:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "id": 19038,
                                    "name": "inputPointer",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 18840,
                                    "src": "20346:12:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 19041,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 19039,
                                      "name": "ix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18829,
                                      "src": "20371:2:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "id": 19040,
                                      "name": "lix",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 18833,
                                      "src": "20376:3:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "20371:8:65",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 19036,
                                  "name": "memcpy",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 19190,
                                  "src": "20301:6:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (uint256,uint256,uint256) pure"
                                  }
                                },
                                "id": 19042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "20301:89:65",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 19043,
                              "nodeType": "ExpressionStatement",
                              "src": "20301:89:65"
                            },
                            {
                              "expression": {
                                "id": 19049,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "id": 19044,
                                  "name": "outputLength",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 18843,
                                  "src": "20401:12:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "+=",
                                "rightHandSide": {
                                  "components": [
                                    {
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 19047,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 19045,
                                        "name": "ix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18829,
                                        "src": "20418:2:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 19046,
                                        "name": "lix",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 18833,
                                        "src": "20423:3:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "20418:8:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 19048,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "20417:10:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "20401:26:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 19050,
                              "nodeType": "ExpressionStatement",
                              "src": "20401:26:65"
                            }
                          ]
                        }
                      },
                      {
                        "AST": {
                          "nativeSrc": "20454:180:65",
                          "nodeType": "YulBlock",
                          "src": "20454:180:65",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "output",
                                    "nativeSrc": "20508:6:65",
                                    "nodeType": "YulIdentifier",
                                    "src": "20508:6:65"
                                  },
                                  {
                                    "name": "outputLength",
                                    "nativeSrc": "20516:12:65",
                                    "nodeType": "YulIdentifier",
                                    "src": "20516:12:65"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "20501:6:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "20501:6:65"
                                },
                                "nativeSrc": "20501:28:65",
                                "nodeType": "YulFunctionCall",
                                "src": "20501:28:65"
                              },
                              "nativeSrc": "20501:28:65",
                              "nodeType": "YulExpressionStatement",
                              "src": "20501:28:65"
                            },
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nativeSrc": "20579:4:65",
                                    "nodeType": "YulLiteral",
                                    "src": "20579:4:65",
                                    "type": "",
                                    "value": "0x40"
                                  },
                                  {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "kind": "number",
                                            "nativeSrc": "20595:4:65",
                                            "nodeType": "YulLiteral",
                                            "src": "20595:4:65",
                                            "type": "",
                                            "value": "0x40"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "20589:5:65",
                                          "nodeType": "YulIdentifier",
                                          "src": "20589:5:65"
                                        },
                                        "nativeSrc": "20589:11:65",
                                        "nodeType": "YulFunctionCall",
                                        "src": "20589:11:65"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "outputLength",
                                            "nativeSrc": "20606:12:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "20606:12:65"
                                          },
                                          {
                                            "kind": "number",
                                            "nativeSrc": "20620:2:65",
                                            "nodeType": "YulLiteral",
                                            "src": "20620:2:65",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nativeSrc": "20602:3:65",
                                          "nodeType": "YulIdentifier",
                                          "src": "20602:3:65"
                                        },
                                        "nativeSrc": "20602:21:65",
                                        "nodeType": "YulFunctionCall",
                                        "src": "20602:21:65"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nativeSrc": "20585:3:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "20585:3:65"
                                    },
                                    "nativeSrc": "20585:39:65",
                                    "nodeType": "YulFunctionCall",
                                    "src": "20585:39:65"
                                  }
                                ],
                                "functionName": {
                                  "name": "mstore",
                                  "nativeSrc": "20572:6:65",
                                  "nodeType": "YulIdentifier",
                                  "src": "20572:6:65"
                                },
                                "nativeSrc": "20572:53:65",
                                "nodeType": "YulFunctionCall",
                                "src": "20572:53:65"
                              },
                              "nativeSrc": "20572:53:65",
                              "nodeType": "YulExpressionStatement",
                              "src": "20572:53:65"
                            }
                          ]
                        },
                        "evmVersion": "paris",
                        "externalReferences": [
                          {
                            "declaration": 18824,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20508:6:65",
                            "valueSize": 1
                          },
                          {
                            "declaration": 18843,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20516:12:65",
                            "valueSize": 1
                          },
                          {
                            "declaration": 18843,
                            "isOffset": false,
                            "isSlot": false,
                            "src": "20606:12:65",
                            "valueSize": 1
                          }
                        ],
                        "id": 19053,
                        "nodeType": "InlineAssembly",
                        "src": "20445:189:65"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 18816,
              "nodeType": "StructuredDocumentation",
              "src": "17826:394:65",
              "text": "@notice Replace bytecode indexed 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": 19062,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "replace",
            "nameLocation": "18233:7:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 18822,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18818,
                  "mutability": "mutable",
                  "name": "input",
                  "nameLocation": "18254:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19062,
                  "src": "18241:18:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 18817,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "18241:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18821,
                  "mutability": "mutable",
                  "name": "args",
                  "nameLocation": "18277:4:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19062,
                  "src": "18261:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 18819,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "18261:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 18820,
                    "nodeType": "ArrayTypeName",
                    "src": "18261:8:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18240:42:65"
            },
            "returnParameters": {
              "id": 18827,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 18824,
                  "mutability": "mutable",
                  "name": "output",
                  "nameLocation": "18329:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19062,
                  "src": "18316:19:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 18823,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "18316:5:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 18826,
                  "mutability": "mutable",
                  "name": "hits",
                  "nameLocation": "18342:4:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19062,
                  "src": "18337:9:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 18825,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "18337:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "18315:32:65"
            },
            "scope": 19191,
            "src": "18224:2467:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19088,
              "nodeType": "Block",
              "src": "21152:106:65",
              "statements": [
                {
                  "assignments": [
                    19074,
                    null
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 19074,
                      "mutability": "mutable",
                      "name": "_outputBytes",
                      "nameLocation": "21173:12:65",
                      "nodeType": "VariableDeclaration",
                      "scope": 19088,
                      "src": "21160:25:65",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 19073,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "21160:5:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    },
                    null
                  ],
                  "id": 19082,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 19078,
                            "name": "input",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19065,
                            "src": "21205:5:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          ],
                          "id": 19077,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "21199:5:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                            "typeString": "type(bytes storage pointer)"
                          },
                          "typeName": {
                            "id": 19076,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "21199:5:65",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 19079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21199:12:65",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 19080,
                        "name": "args",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19068,
                        "src": "21213:4:65",
                        "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": 19075,
                      "name": "replace",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        19062,
                        19089
                      ],
                      "referencedDeclaration": 19062,
                      "src": "21191:7:65",
                      "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": 19081,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21191:27:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_bytes_memory_ptr_$_t_uint256_$",
                      "typeString": "tuple(bytes memory,uint256)"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "21159:59:65"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 19085,
                        "name": "_outputBytes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19074,
                        "src": "21239:12:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 19084,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "21232:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": {
                        "id": 19083,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "21232:6:65",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 19086,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "21232:20:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 19072,
                  "id": 19087,
                  "nodeType": "Return",
                  "src": "21225:27:65"
                }
              ]
            },
            "documentation": {
              "id": 19063,
              "nodeType": "StructuredDocumentation",
              "src": "20697:340:65",
              "text": "@notice Replace string indexed 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": 19089,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "replace",
            "nameLocation": "21050:7:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19069,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19065,
                  "mutability": "mutable",
                  "name": "input",
                  "nameLocation": "21072:5:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19089,
                  "src": "21058:19:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19064,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "21058:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19068,
                  "mutability": "mutable",
                  "name": "args",
                  "nameLocation": "21095:4:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19089,
                  "src": "21079:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_string_memory_ptr_$dyn_memory_ptr",
                    "typeString": "string[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 19066,
                      "name": "string",
                      "nodeType": "ElementaryTypeName",
                      "src": "21079:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_storage_ptr",
                        "typeString": "string"
                      }
                    },
                    "id": 19067,
                    "nodeType": "ArrayTypeName",
                    "src": "21079:8:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_string_storage_$dyn_storage_ptr",
                      "typeString": "string[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21057:43:65"
            },
            "returnParameters": {
              "id": 19072,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19071,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19089,
                  "src": "21134:13:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 19070,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "21134:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21133:15:65"
            },
            "scope": 19191,
            "src": "21041:217:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19124,
              "nodeType": "Block",
              "src": "21936:150:65",
              "statements": [
                {
                  "condition": {
                    "id": 19108,
                    "name": "relative",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19097,
                    "src": "21982:8:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 19115,
                  "nodeType": "IfStatement",
                  "src": "21978:54:65",
                  "trueBody": {
                    "id": 19114,
                    "nodeType": "Block",
                    "src": "21992:40:65",
                    "statements": [
                      {
                        "expression": {
                          "id": 19112,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19109,
                            "name": "offset",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19095,
                            "src": "22001:6:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "expression": {
                              "id": 19110,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 19093,
                              "src": "22011:6:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                                "typeString": "struct WitnetBuffer.Buffer memory"
                              }
                            },
                            "id": 19111,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "22018:6:65",
                            "memberName": "cursor",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 17579,
                            "src": "22011:13:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "22001:23:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19113,
                        "nodeType": "ExpressionStatement",
                        "src": "22001:23:65"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 19120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 19116,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19093,
                        "src": "22038:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 19118,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberLocation": "22045:6:65",
                      "memberName": "cursor",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17579,
                      "src": "22038:13:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 19119,
                      "name": "offset",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 19095,
                      "src": "22054:6:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "22038:22:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 19121,
                  "nodeType": "ExpressionStatement",
                  "src": "22038:22:65"
                },
                {
                  "expression": {
                    "id": 19122,
                    "name": "offset",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19095,
                    "src": "22074:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 19107,
                  "id": 19123,
                  "nodeType": "Return",
                  "src": "22067:13:65"
                }
              ]
            },
            "documentation": {
              "id": 19090,
              "nodeType": "StructuredDocumentation",
              "src": "21264:432:65",
              "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": 19125,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "id": 19100,
                    "name": "offset",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 19095,
                    "src": "21885:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  {
                    "expression": {
                      "expression": {
                        "id": 19101,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19093,
                        "src": "21893:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      "id": 19102,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "21900:4:65",
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 17577,
                      "src": "21893:11:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "id": 19103,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberLocation": "21905:6:65",
                    "memberName": "length",
                    "nodeType": "MemberAccess",
                    "src": "21893:18:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                ],
                "id": 19104,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 19099,
                  "name": "withinRange",
                  "nameLocations": [
                    "21873:11:65"
                  ],
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 17598,
                  "src": "21873:11:65"
                },
                "nodeType": "ModifierInvocation",
                "src": "21873:39:65"
              }
            ],
            "name": "seek",
            "nameLocation": "21766:4:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19098,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19093,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "21793:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19125,
                  "src": "21779:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 19092,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19091,
                      "name": "Buffer",
                      "nameLocations": [
                        "21779:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "21779:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "21779:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19095,
                  "mutability": "mutable",
                  "name": "offset",
                  "nameLocation": "21813:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19125,
                  "src": "21808:11:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19094,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21808:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19097,
                  "mutability": "mutable",
                  "name": "relative",
                  "nameLocation": "21833:8:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19125,
                  "src": "21828:13:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 19096,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "21828:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21770:78:65"
            },
            "returnParameters": {
              "id": 19107,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19106,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19125,
                  "src": "21927:4:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19105,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "21927:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "21926:6:65"
            },
            "scope": 19191,
            "src": "21757:329:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19142,
              "nodeType": "Block",
              "src": "22525:82:65",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 19137,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19129,
                        "src": "22552:6:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        }
                      },
                      {
                        "id": 19138,
                        "name": "relativeOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 19131,
                        "src": "22567:14:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "hexValue": "74727565",
                        "id": 19139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "22590:4:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                          "typeString": "struct WitnetBuffer.Buffer memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 19136,
                      "name": "seek",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        19125,
                        19143
                      ],
                      "referencedDeclaration": 19125,
                      "src": "22539:4:65",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_struct$_Buffer_$17580_memory_ptr_$_t_uint256_$_t_bool_$returns$_t_uint256_$",
                        "typeString": "function (struct WitnetBuffer.Buffer memory,uint256,bool) pure returns (uint256)"
                      }
                    },
                    "id": 19140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "22539:62:65",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 19135,
                  "id": 19141,
                  "nodeType": "Return",
                  "src": "22532:69:65"
                }
              ]
            },
            "documentation": {
              "id": 19126,
              "nodeType": "StructuredDocumentation",
              "src": "22092:309:65",
              "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": 19143,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "seek",
            "nameLocation": "22414:4:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19132,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19129,
                  "mutability": "mutable",
                  "name": "buffer",
                  "nameLocation": "22441:6:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19143,
                  "src": "22427:20:65",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Buffer_$17580_memory_ptr",
                    "typeString": "struct WitnetBuffer.Buffer"
                  },
                  "typeName": {
                    "id": 19128,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 19127,
                      "name": "Buffer",
                      "nameLocations": [
                        "22427:6:65"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 17580,
                      "src": "22427:6:65"
                    },
                    "referencedDeclaration": 17580,
                    "src": "22427:6:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Buffer_$17580_storage_ptr",
                      "typeString": "struct WitnetBuffer.Buffer"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19131,
                  "mutability": "mutable",
                  "name": "relativeOffset",
                  "nameLocation": "22461:14:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19143,
                  "src": "22456:19:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19130,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22456:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22418:64:65"
            },
            "returnParameters": {
              "id": 19135,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19134,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 19143,
                  "src": "22516:4:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19133,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "22516:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "22515:6:65"
            },
            "scope": 19191,
            "src": "22405:202:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 19189,
              "nodeType": "Block",
              "src": "23199:526:65",
              "statements": [
                {
                  "id": 19188,
                  "nodeType": "UncheckedBlock",
                  "src": "23206:514:65",
                  "statements": [
                    {
                      "body": {
                        "id": 19169,
                        "nodeType": "Block",
                        "src": "23303:118:65",
                        "statements": [
                          {
                            "AST": {
                              "nativeSrc": "23323:48:65",
                              "nodeType": "YulBlock",
                              "src": "23323:48:65",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dest",
                                        "nativeSrc": "23343:4:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "23343:4:65"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "23355:3:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "23355:3:65"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "23349:5:65",
                                          "nodeType": "YulIdentifier",
                                          "src": "23349:5:65"
                                        },
                                        "nativeSrc": "23349:10:65",
                                        "nodeType": "YulFunctionCall",
                                        "src": "23349:10:65"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nativeSrc": "23336:6:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "23336:6:65"
                                    },
                                    "nativeSrc": "23336:24:65",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23336:24:65"
                                  },
                                  "nativeSrc": "23336:24:65",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "23336:24:65"
                                }
                              ]
                            },
                            "evmVersion": "paris",
                            "externalReferences": [
                              {
                                "declaration": 19146,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "23343:4:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 19148,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "23355:3:65",
                                "valueSize": 1
                              }
                            ],
                            "id": 19160,
                            "nodeType": "InlineAssembly",
                            "src": "23314:57:65"
                          },
                          {
                            "expression": {
                              "id": 19163,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 19161,
                                "name": "dest",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19146,
                                "src": "23381:4:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "hexValue": "3332",
                                "id": 19162,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23389:2:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "23381:10:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19164,
                            "nodeType": "ExpressionStatement",
                            "src": "23381:10:65"
                          },
                          {
                            "expression": {
                              "id": 19167,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 19165,
                                "name": "src",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 19148,
                                "src": "23402:3:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "hexValue": "3332",
                                "id": 19166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23409:2:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "23402:9:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 19168,
                            "nodeType": "ExpressionStatement",
                            "src": "23402:9:65"
                          }
                        ]
                      },
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 19155,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 19153,
                          "name": "len",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19150,
                          "src": "23281:3:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "hexValue": "3332",
                          "id": 19154,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "23288:2:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_32_by_1",
                            "typeString": "int_const 32"
                          },
                          "value": "32"
                        },
                        "src": "23281:9:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 19170,
                      "isSimpleCounterLoop": false,
                      "loopExpression": {
                        "expression": {
                          "id": 19158,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 19156,
                            "name": "len",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 19150,
                            "src": "23292:3:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "hexValue": "3332",
                            "id": 19157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "23299:2:65",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "23292:9:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 19159,
                        "nodeType": "ExpressionStatement",
                        "src": "23292:9:65"
                      },
                      "nodeType": "ForStatement",
                      "src": "23274:147:65"
                    },
                    {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 19173,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 19171,
                          "name": "len",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 19150,
                          "src": "23433:3:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 19172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "23439:1:65",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "23433:7:65",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 19187,
                      "nodeType": "IfStatement",
                      "src": "23429:284:65",
                      "trueBody": {
                        "id": 19186,
                        "nodeType": "Block",
                        "src": "23442:271:65",
                        "statements": [
                          {
                            "assignments": [
                              19175
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 19175,
                                "mutability": "mutable",
                                "name": "_mask",
                                "nameLocation": "23491:5:65",
                                "nodeType": "VariableDeclaration",
                                "scope": 19186,
                                "src": "23486:10:65",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 19174,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "23486:4:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "visibility": "internal"
                              }
                            ],
                            "id": 19184,
                            "initialValue": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 19183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 19181,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "hexValue": "323536",
                                  "id": 19176,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "23499:3:65",
                                  "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": 19179,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "hexValue": "3332",
                                        "id": 19177,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "23507:2:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_32_by_1",
                                          "typeString": "int_const 32"
                                        },
                                        "value": "32"
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "id": 19178,
                                        "name": "len",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 19150,
                                        "src": "23512:3:65",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "23507:8:65",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 19180,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "23506:10:65",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "23499:17:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "hexValue": "31",
                                "id": 19182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "23519:1:65",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "23499:21:65",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "23486:34:65"
                          },
                          {
                            "AST": {
                              "nativeSrc": "23540:164:65",
                              "nodeType": "YulBlock",
                              "src": "23540:164:65",
                              "statements": [
                                {
                                  "nativeSrc": "23553:42:65",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "23553:42:65",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "src",
                                            "nativeSrc": "23578:3:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "23578:3:65"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "23572:5:65",
                                          "nodeType": "YulIdentifier",
                                          "src": "23572:5:65"
                                        },
                                        "nativeSrc": "23572:10:65",
                                        "nodeType": "YulFunctionCall",
                                        "src": "23572:10:65"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "_mask",
                                            "nativeSrc": "23588:5:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "23588:5:65"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "not",
                                          "nativeSrc": "23584:3:65",
                                          "nodeType": "YulIdentifier",
                                          "src": "23584:3:65"
                                        },
                                        "nativeSrc": "23584:10:65",
                                        "nodeType": "YulFunctionCall",
                                        "src": "23584:10:65"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nativeSrc": "23568:3:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "23568:3:65"
                                    },
                                    "nativeSrc": "23568:27:65",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23568:27:65"
                                  },
                                  "variables": [
                                    {
                                      "name": "srcpart",
                                      "nativeSrc": "23557:7:65",
                                      "nodeType": "YulTypedName",
                                      "src": "23557:7:65",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "nativeSrc": "23607:39:65",
                                  "nodeType": "YulVariableDeclaration",
                                  "src": "23607:39:65",
                                  "value": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "dest",
                                            "nativeSrc": "23633:4:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "23633:4:65"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nativeSrc": "23627:5:65",
                                          "nodeType": "YulIdentifier",
                                          "src": "23627:5:65"
                                        },
                                        "nativeSrc": "23627:11:65",
                                        "nodeType": "YulFunctionCall",
                                        "src": "23627:11:65"
                                      },
                                      {
                                        "name": "_mask",
                                        "nativeSrc": "23640:5:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "23640:5:65"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "and",
                                      "nativeSrc": "23623:3:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "23623:3:65"
                                    },
                                    "nativeSrc": "23623:23:65",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23623:23:65"
                                  },
                                  "variables": [
                                    {
                                      "name": "destpart",
                                      "nativeSrc": "23611:8:65",
                                      "nodeType": "YulTypedName",
                                      "src": "23611:8:65",
                                      "type": ""
                                    }
                                  ]
                                },
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "dest",
                                        "nativeSrc": "23665:4:65",
                                        "nodeType": "YulIdentifier",
                                        "src": "23665:4:65"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "destpart",
                                            "nativeSrc": "23674:8:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "23674:8:65"
                                          },
                                          {
                                            "name": "srcpart",
                                            "nativeSrc": "23684:7:65",
                                            "nodeType": "YulIdentifier",
                                            "src": "23684:7:65"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "or",
                                          "nativeSrc": "23671:2:65",
                                          "nodeType": "YulIdentifier",
                                          "src": "23671:2:65"
                                        },
                                        "nativeSrc": "23671:21:65",
                                        "nodeType": "YulFunctionCall",
                                        "src": "23671:21:65"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nativeSrc": "23658:6:65",
                                      "nodeType": "YulIdentifier",
                                      "src": "23658:6:65"
                                    },
                                    "nativeSrc": "23658:35:65",
                                    "nodeType": "YulFunctionCall",
                                    "src": "23658:35:65"
                                  },
                                  "nativeSrc": "23658:35:65",
                                  "nodeType": "YulExpressionStatement",
                                  "src": "23658:35:65"
                                }
                              ]
                            },
                            "evmVersion": "paris",
                            "externalReferences": [
                              {
                                "declaration": 19175,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "23588:5:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 19175,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "23640:5:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 19146,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "23633:4:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 19146,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "23665:4:65",
                                "valueSize": 1
                              },
                              {
                                "declaration": 19148,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "23578:3:65",
                                "valueSize": 1
                              }
                            ],
                            "id": 19185,
                            "nodeType": "InlineAssembly",
                            "src": "23531:173:65"
                          }
                        ]
                      }
                    }
                  ]
                }
              ]
            },
            "documentation": {
              "id": 19144,
              "nodeType": "StructuredDocumentation",
              "src": "22613:429:65",
              "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": 19190,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "memcpy",
            "nameLocation": "23112:6:65",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 19151,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 19146,
                  "mutability": "mutable",
                  "name": "dest",
                  "nameLocation": "23132:4:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19190,
                  "src": "23127:9:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19145,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "23127:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19148,
                  "mutability": "mutable",
                  "name": "src",
                  "nameLocation": "23150:3:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19190,
                  "src": "23145:8:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19147,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "23145:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19150,
                  "mutability": "mutable",
                  "name": "len",
                  "nameLocation": "23167:3:65",
                  "nodeType": "VariableDeclaration",
                  "scope": 19190,
                  "src": "23162:8:65",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 19149,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "23162:4:65",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "23118:59:65"
            },
            "returnParameters": {
              "id": 19152,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "23199:0:65"
            },
            "scope": 19191,
            "src": "23103:622:65",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          }
        ],
        "scope": 19192,
        "src": "644:23086:65",
        "usedErrors": [
          17562,
          17568,
          17574
        ],
        "usedEvents": []
      }
    ],
    "src": "35:23695:65"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.25+commit.b61c2a91.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.16",
  "updatedAt": "2024-12-05T09:36:04.551Z",
  "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
  }
}