{
  "contractName": "BitMath",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.6.6+commit.6c089d02\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"moonwalkerswap-libraries/contracts/libraries/BitMath.sol\":\"BitMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"moonwalkerswap-libraries/contracts/libraries/BitMath.sol\":{\"keccak256\":\"0x19f84d5268286794b44939ec0d85b3c6f59e133f826cdbd9e40112fc94919bb7\",\"urls\":[\"bzz-raw://d21c67ed58cf667d052e141df2fba76c46c159edcc45eb897c908c20c69d2727\",\"dweb:/ipfs/QmUyKz1992wgR8nYAzBuQzjBAKMxLAN3hTgzpYJxusbmVH\"]}},\"version\":1}",
  "bytecode": "0x60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209bbda0c1d621121e6dbca99f20273634d9686386bc69aa3fb739d20bda56967664736f6c63430006060033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209bbda0c1d621121e6dbca99f20273634d9686386bc69aa3fb739d20bda56967664736f6c63430006060033",
  "immutableReferences": {},
  "sourceMap": "71:2043:19:-:0;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "71:2043:19:-:0;;;;;;12:1:-1;9;2:12",
  "source": "// SPDX-License-Identifier: GPL-3.0-or-later\npragma solidity >=0.5.0;\n\nlibrary BitMath {\n    // returns the 0 indexed position of the most significant bit of the input x\n    // s.t. x >= 2**msb and x < 2**(msb+1)\n    function mostSignificantBit(uint256 x) internal pure returns (uint8 r) {\n        require(x > 0, 'BitMath::mostSignificantBit: zero');\n\n        if (x >= 0x100000000000000000000000000000000) {\n            x >>= 128;\n            r += 128;\n        }\n        if (x >= 0x10000000000000000) {\n            x >>= 64;\n            r += 64;\n        }\n        if (x >= 0x100000000) {\n            x >>= 32;\n            r += 32;\n        }\n        if (x >= 0x10000) {\n            x >>= 16;\n            r += 16;\n        }\n        if (x >= 0x100) {\n            x >>= 8;\n            r += 8;\n        }\n        if (x >= 0x10) {\n            x >>= 4;\n            r += 4;\n        }\n        if (x >= 0x4) {\n            x >>= 2;\n            r += 2;\n        }\n        if (x >= 0x2) r += 1;\n    }\n\n    // returns the 0 indexed position of the least significant bit of the input x\n    // s.t. (x & 2**lsb) != 0 and (x & (2**(lsb) - 1)) == 0)\n    // i.e. the bit at the index is set and the mask of all lower bits is 0\n    function leastSignificantBit(uint256 x) internal pure returns (uint8 r) {\n        require(x > 0, 'BitMath::leastSignificantBit: zero');\n\n        r = 255;\n        if (x & uint128(-1) > 0) {\n            r -= 128;\n        } else {\n            x >>= 128;\n        }\n        if (x & uint64(-1) > 0) {\n            r -= 64;\n        } else {\n            x >>= 64;\n        }\n        if (x & uint32(-1) > 0) {\n            r -= 32;\n        } else {\n            x >>= 32;\n        }\n        if (x & uint16(-1) > 0) {\n            r -= 16;\n        } else {\n            x >>= 16;\n        }\n        if (x & uint8(-1) > 0) {\n            r -= 8;\n        } else {\n            x >>= 8;\n        }\n        if (x & 0xf > 0) {\n            r -= 4;\n        } else {\n            x >>= 4;\n        }\n        if (x & 0x3 > 0) {\n            r -= 2;\n        } else {\n            x >>= 2;\n        }\n        if (x & 0x1 > 0) r -= 1;\n    }\n}\n",
  "sourcePath": "moonwalkerswap-libraries/contracts/libraries/BitMath.sol",
  "ast": {
    "absolutePath": "moonwalkerswap-libraries/contracts/libraries/BitMath.sol",
    "exportedSymbols": {
      "BitMath": [
        7229
      ]
    },
    "id": 7230,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6953,
        "literals": [
          "solidity",
          ">=",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "45:24:19"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 7229,
        "linearizedBaseContracts": [
          7229
        ],
        "name": "BitMath",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 7066,
              "nodeType": "Block",
              "src": "288:697:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6963,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6961,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6955,
                          "src": "306:1:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6962,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "310:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "306:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f",
                        "id": 6964,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "313:35:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_03c73b0187854c5090030bbfe0f7d97709bd7eabff8b89faf5be84b9d8c785d2",
                          "typeString": "literal_string \"BitMath::mostSignificantBit: zero\""
                        },
                        "value": "BitMath::mostSignificantBit: zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_03c73b0187854c5090030bbfe0f7d97709bd7eabff8b89faf5be84b9d8c785d2",
                          "typeString": "literal_string \"BitMath::mostSignificantBit: zero\""
                        }
                      ],
                      "id": 6960,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "298:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "298:51:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6966,
                  "nodeType": "ExpressionStatement",
                  "src": "298:51:19"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6969,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 6967,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6955,
                      "src": "364:1:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                      "id": 6968,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "369:35:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_340282366920938463463374607431768211456_by_1",
                        "typeString": "int_const 3402...(31 digits omitted)...1456"
                      },
                      "value": "0x100000000000000000000000000000000"
                    },
                    "src": "364:40:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6979,
                  "nodeType": "IfStatement",
                  "src": "360:102:19",
                  "trueBody": {
                    "id": 6978,
                    "nodeType": "Block",
                    "src": "406:56:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6970,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6955,
                            "src": "420:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "313238",
                            "id": 6971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "426:3:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "420:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6973,
                        "nodeType": "ExpressionStatement",
                        "src": "420:9:19"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6976,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6974,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6958,
                            "src": "443:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "313238",
                            "id": 6975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "448:3:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "443:8:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 6977,
                        "nodeType": "ExpressionStatement",
                        "src": "443:8:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 6980,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6955,
                      "src": "475:1:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30783130303030303030303030303030303030",
                      "id": 6981,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "480:19:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_18446744073709551616_by_1",
                        "typeString": "int_const 18446744073709551616"
                      },
                      "value": "0x10000000000000000"
                    },
                    "src": "475:24:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6992,
                  "nodeType": "IfStatement",
                  "src": "471:84:19",
                  "trueBody": {
                    "id": 6991,
                    "nodeType": "Block",
                    "src": "501:54:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6983,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6955,
                            "src": "515:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3634",
                            "id": 6984,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "521:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_64_by_1",
                              "typeString": "int_const 64"
                            },
                            "value": "64"
                          },
                          "src": "515:8:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6986,
                        "nodeType": "ExpressionStatement",
                        "src": "515:8:19"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6989,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6987,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6958,
                            "src": "537:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3634",
                            "id": 6988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "542:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_64_by_1",
                              "typeString": "int_const 64"
                            },
                            "value": "64"
                          },
                          "src": "537:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 6990,
                        "nodeType": "ExpressionStatement",
                        "src": "537:7:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6995,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 6993,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6955,
                      "src": "568:1:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3078313030303030303030",
                      "id": 6994,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "573:11:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4294967296_by_1",
                        "typeString": "int_const 4294967296"
                      },
                      "value": "0x100000000"
                    },
                    "src": "568:16:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7005,
                  "nodeType": "IfStatement",
                  "src": "564:76:19",
                  "trueBody": {
                    "id": 7004,
                    "nodeType": "Block",
                    "src": "586:54:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6998,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6996,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6955,
                            "src": "600:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3332",
                            "id": 6997,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "606:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "600:8:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6999,
                        "nodeType": "ExpressionStatement",
                        "src": "600:8:19"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7002,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7000,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6958,
                            "src": "622:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3332",
                            "id": 7001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "627:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "622:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7003,
                        "nodeType": "ExpressionStatement",
                        "src": "622:7:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7008,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7006,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6955,
                      "src": "653:1:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30783130303030",
                      "id": 7007,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "658:7:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_65536_by_1",
                        "typeString": "int_const 65536"
                      },
                      "value": "0x10000"
                    },
                    "src": "653:12:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7018,
                  "nodeType": "IfStatement",
                  "src": "649:72:19",
                  "trueBody": {
                    "id": 7017,
                    "nodeType": "Block",
                    "src": "667:54:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7009,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6955,
                            "src": "681:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3136",
                            "id": 7010,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "687:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_16_by_1",
                              "typeString": "int_const 16"
                            },
                            "value": "16"
                          },
                          "src": "681:8:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7012,
                        "nodeType": "ExpressionStatement",
                        "src": "681:8:19"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7015,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7013,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6958,
                            "src": "703:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3136",
                            "id": 7014,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "708:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_16_by_1",
                              "typeString": "int_const 16"
                            },
                            "value": "16"
                          },
                          "src": "703:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7016,
                        "nodeType": "ExpressionStatement",
                        "src": "703:7:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7019,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6955,
                      "src": "734:1:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "3078313030",
                      "id": 7020,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "739:5:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_256_by_1",
                        "typeString": "int_const 256"
                      },
                      "value": "0x100"
                    },
                    "src": "734:10:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7031,
                  "nodeType": "IfStatement",
                  "src": "730:68:19",
                  "trueBody": {
                    "id": 7030,
                    "nodeType": "Block",
                    "src": "746:52:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7024,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7022,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6955,
                            "src": "760:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 7023,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "766:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "760:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7025,
                        "nodeType": "ExpressionStatement",
                        "src": "760:7:19"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7028,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7026,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6958,
                            "src": "781:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 7027,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "786:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "781:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7029,
                        "nodeType": "ExpressionStatement",
                        "src": "781:6:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7032,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6955,
                      "src": "811:1:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30783130",
                      "id": 7033,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "816:4:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_16_by_1",
                        "typeString": "int_const 16"
                      },
                      "value": "0x10"
                    },
                    "src": "811:9:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7044,
                  "nodeType": "IfStatement",
                  "src": "807:67:19",
                  "trueBody": {
                    "id": 7043,
                    "nodeType": "Block",
                    "src": "822:52:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7035,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6955,
                            "src": "836:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 7036,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "842:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "836:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7038,
                        "nodeType": "ExpressionStatement",
                        "src": "836:7:19"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7041,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7039,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6958,
                            "src": "857:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 7040,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "862:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "857:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7042,
                        "nodeType": "ExpressionStatement",
                        "src": "857:6:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7047,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7045,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6955,
                      "src": "887:1:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "307834",
                      "id": 7046,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "892:3:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_4_by_1",
                        "typeString": "int_const 4"
                      },
                      "value": "0x4"
                    },
                    "src": "887:8:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7057,
                  "nodeType": "IfStatement",
                  "src": "883:66:19",
                  "trueBody": {
                    "id": 7056,
                    "nodeType": "Block",
                    "src": "897:52:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7048,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6955,
                            "src": "911:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 7049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "917:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "911:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7051,
                        "nodeType": "ExpressionStatement",
                        "src": "911:7:19"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7052,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6958,
                            "src": "932:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 7053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "937:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "932:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7055,
                        "nodeType": "ExpressionStatement",
                        "src": "932:6:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7060,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7058,
                      "name": "x",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6955,
                      "src": "962:1:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "307832",
                      "id": 7059,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "967:3:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_2_by_1",
                        "typeString": "int_const 2"
                      },
                      "value": "0x2"
                    },
                    "src": "962:8:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7065,
                  "nodeType": "IfStatement",
                  "src": "958:20:19",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 7063,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 7061,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6958,
                        "src": "972:1:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "+=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 7062,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "977:1:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "972:6:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 7064,
                    "nodeType": "ExpressionStatement",
                    "src": "972:6:19"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 7067,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "mostSignificantBit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6956,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6955,
                  "mutability": "mutable",
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7067,
                  "src": "245:9:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6954,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "245:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "244:11:19"
            },
            "returnParameters": {
              "id": 6959,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6958,
                  "mutability": "mutable",
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7067,
                  "src": "279:7:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6957,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "279:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "278:9:19"
            },
            "scope": 7229,
            "src": "217:768:19",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 7227,
              "nodeType": "Block",
              "src": "1282:830:19",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7075,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7069,
                          "src": "1300:1:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1304:1:19",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1300:5:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726f",
                        "id": 7078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1307:36:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cedc9c6217b2cedc06d11ed96db2989630b9045493eb849d6df363a9a5eb1c43",
                          "typeString": "literal_string \"BitMath::leastSignificantBit: zero\""
                        },
                        "value": "BitMath::leastSignificantBit: zero"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cedc9c6217b2cedc06d11ed96db2989630b9045493eb849d6df363a9a5eb1c43",
                          "typeString": "literal_string \"BitMath::leastSignificantBit: zero\""
                        }
                      ],
                      "id": 7074,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1292:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7079,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1292:52:19",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7080,
                  "nodeType": "ExpressionStatement",
                  "src": "1292:52:19"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7083,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 7081,
                      "name": "r",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7072,
                      "src": "1355:1:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "323535",
                      "id": 7082,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1359:3:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_255_by_1",
                        "typeString": "int_const 255"
                      },
                      "value": "255"
                    },
                    "src": "1355:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 7084,
                  "nodeType": "ExpressionStatement",
                  "src": "1355:7:19"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7093,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7091,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7085,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7069,
                        "src": "1376:1:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7089,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "1388:2:19",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 7088,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1389:1:19",
                              "subdenomination": null,
                              "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"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          ],
                          "id": 7087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1380:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint128_$",
                            "typeString": "type(uint128)"
                          },
                          "typeName": {
                            "id": 7086,
                            "name": "uint128",
                            "nodeType": "ElementaryTypeName",
                            "src": "1380:7:19",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 7090,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1380:11:19",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      "src": "1376:15:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7092,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1394:1:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1376:19:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7103,
                    "nodeType": "Block",
                    "src": "1436:34:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7099,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7069,
                            "src": "1450:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "313238",
                            "id": 7100,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1456:3:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "1450:9:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7102,
                        "nodeType": "ExpressionStatement",
                        "src": "1450:9:19"
                      }
                    ]
                  },
                  "id": 7104,
                  "nodeType": "IfStatement",
                  "src": "1372:98:19",
                  "trueBody": {
                    "id": 7098,
                    "nodeType": "Block",
                    "src": "1397:33:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7094,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7072,
                            "src": "1411:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "313238",
                            "id": 7095,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1416:3:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_128_by_1",
                              "typeString": "int_const 128"
                            },
                            "value": "128"
                          },
                          "src": "1411:8:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7097,
                        "nodeType": "ExpressionStatement",
                        "src": "1411:8:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7113,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7111,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7105,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7069,
                        "src": "1483:1:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7109,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "1494:2:19",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 7108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1495:1:19",
                              "subdenomination": null,
                              "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"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          ],
                          "id": 7107,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1487:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint64_$",
                            "typeString": "type(uint64)"
                          },
                          "typeName": {
                            "id": 7106,
                            "name": "uint64",
                            "nodeType": "ElementaryTypeName",
                            "src": "1487:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 7110,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1487:10:19",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "src": "1483:14:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7112,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1500:1:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1483:18:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7123,
                    "nodeType": "Block",
                    "src": "1541:33:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7119,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7069,
                            "src": "1555:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3634",
                            "id": 7120,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1561:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_64_by_1",
                              "typeString": "int_const 64"
                            },
                            "value": "64"
                          },
                          "src": "1555:8:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7122,
                        "nodeType": "ExpressionStatement",
                        "src": "1555:8:19"
                      }
                    ]
                  },
                  "id": 7124,
                  "nodeType": "IfStatement",
                  "src": "1479:95:19",
                  "trueBody": {
                    "id": 7118,
                    "nodeType": "Block",
                    "src": "1503:32:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7114,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7072,
                            "src": "1517:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3634",
                            "id": 7115,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1522:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_64_by_1",
                              "typeString": "int_const 64"
                            },
                            "value": "64"
                          },
                          "src": "1517:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7117,
                        "nodeType": "ExpressionStatement",
                        "src": "1517:7:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7131,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7125,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7069,
                        "src": "1587:1:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7129,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "1598:2:19",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 7128,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1599:1:19",
                              "subdenomination": null,
                              "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"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          ],
                          "id": 7127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1591:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint32_$",
                            "typeString": "type(uint32)"
                          },
                          "typeName": {
                            "id": 7126,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "1591:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 7130,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1591:10:19",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "src": "1587:14:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1604:1:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1587:18:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7143,
                    "nodeType": "Block",
                    "src": "1645:33:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7141,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7139,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7069,
                            "src": "1659:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3332",
                            "id": 7140,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1665:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "1659:8:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7142,
                        "nodeType": "ExpressionStatement",
                        "src": "1659:8:19"
                      }
                    ]
                  },
                  "id": 7144,
                  "nodeType": "IfStatement",
                  "src": "1583:95:19",
                  "trueBody": {
                    "id": 7138,
                    "nodeType": "Block",
                    "src": "1607:32:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7134,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7072,
                            "src": "1621:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3332",
                            "id": 7135,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1626:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_32_by_1",
                              "typeString": "int_const 32"
                            },
                            "value": "32"
                          },
                          "src": "1621:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7137,
                        "nodeType": "ExpressionStatement",
                        "src": "1621:7:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7153,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7151,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7145,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7069,
                        "src": "1691:1:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "1702:2:19",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 7148,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1703:1:19",
                              "subdenomination": null,
                              "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"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          ],
                          "id": 7147,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1695:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint16_$",
                            "typeString": "type(uint16)"
                          },
                          "typeName": {
                            "id": 7146,
                            "name": "uint16",
                            "nodeType": "ElementaryTypeName",
                            "src": "1695:6:19",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 7150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1695:10:19",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint16",
                          "typeString": "uint16"
                        }
                      },
                      "src": "1691:14:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7152,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1708:1:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1691:18:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7163,
                    "nodeType": "Block",
                    "src": "1749:33:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7161,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7159,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7069,
                            "src": "1763:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3136",
                            "id": 7160,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1769:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_16_by_1",
                              "typeString": "int_const 16"
                            },
                            "value": "16"
                          },
                          "src": "1763:8:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7162,
                        "nodeType": "ExpressionStatement",
                        "src": "1763:8:19"
                      }
                    ]
                  },
                  "id": 7164,
                  "nodeType": "IfStatement",
                  "src": "1687:95:19",
                  "trueBody": {
                    "id": 7158,
                    "nodeType": "Block",
                    "src": "1711:32:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7154,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7072,
                            "src": "1725:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "3136",
                            "id": 7155,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1730:2:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_16_by_1",
                              "typeString": "int_const 16"
                            },
                            "value": "16"
                          },
                          "src": "1725:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7157,
                        "nodeType": "ExpressionStatement",
                        "src": "1725:7:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7173,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7171,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7165,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7069,
                        "src": "1795:1:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7169,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "-",
                            "prefix": true,
                            "src": "1805:2:19",
                            "subExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 7168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1806:1:19",
                              "subdenomination": null,
                              "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"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_minus_1_by_1",
                              "typeString": "int_const -1"
                            }
                          ],
                          "id": 7167,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1799:5:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint8_$",
                            "typeString": "type(uint8)"
                          },
                          "typeName": {
                            "id": 7166,
                            "name": "uint8",
                            "nodeType": "ElementaryTypeName",
                            "src": "1799:5:19",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 7170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1799:9:19",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "src": "1795:13:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7172,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1811:1:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1795:17:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7183,
                    "nodeType": "Block",
                    "src": "1851:32:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7181,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7179,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7069,
                            "src": "1865:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 7180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1871:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "1865:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7182,
                        "nodeType": "ExpressionStatement",
                        "src": "1865:7:19"
                      }
                    ]
                  },
                  "id": 7184,
                  "nodeType": "IfStatement",
                  "src": "1791:92:19",
                  "trueBody": {
                    "id": 7178,
                    "nodeType": "Block",
                    "src": "1814:31:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7176,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7174,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7072,
                            "src": "1828:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 7175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1833:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "1828:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7177,
                        "nodeType": "ExpressionStatement",
                        "src": "1828:6:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7189,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7187,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7185,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7069,
                        "src": "1896:1:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "307866",
                        "id": 7186,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1900:3:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_15_by_1",
                          "typeString": "int_const 15"
                        },
                        "value": "0xf"
                      },
                      "src": "1896:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7188,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1906:1:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1896:11:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7199,
                    "nodeType": "Block",
                    "src": "1946:32:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7195,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7069,
                            "src": "1960:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 7196,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1966:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "1960:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7198,
                        "nodeType": "ExpressionStatement",
                        "src": "1960:7:19"
                      }
                    ]
                  },
                  "id": 7200,
                  "nodeType": "IfStatement",
                  "src": "1892:86:19",
                  "trueBody": {
                    "id": 7194,
                    "nodeType": "Block",
                    "src": "1909:31:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7192,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7190,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7072,
                            "src": "1923:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "34",
                            "id": 7191,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1928:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "1923:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7193,
                        "nodeType": "ExpressionStatement",
                        "src": "1923:6:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7205,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7203,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7201,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7069,
                        "src": "1991:1:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "307833",
                        "id": 7202,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1995:3:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "0x3"
                      },
                      "src": "1991:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7204,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2001:1:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "1991:11:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7215,
                    "nodeType": "Block",
                    "src": "2041:32:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7213,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7211,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7069,
                            "src": "2055:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 7212,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2061:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "2055:7:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7214,
                        "nodeType": "ExpressionStatement",
                        "src": "2055:7:19"
                      }
                    ]
                  },
                  "id": 7216,
                  "nodeType": "IfStatement",
                  "src": "1987:86:19",
                  "trueBody": {
                    "id": 7210,
                    "nodeType": "Block",
                    "src": "2004:31:19",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7208,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 7206,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7072,
                            "src": "2018:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "-=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 7207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2023:1:19",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "src": "2018:6:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7209,
                        "nodeType": "ExpressionStatement",
                        "src": "2018:6:19"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7221,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 7219,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 7217,
                        "name": "x",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7069,
                        "src": "2086:1:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "307831",
                        "id": 7218,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2090:3:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "0x1"
                      },
                      "src": "2086:7:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7220,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2096:1:19",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2086:11:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7226,
                  "nodeType": "IfStatement",
                  "src": "2082:23:19",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 7224,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "argumentTypes": null,
                        "id": 7222,
                        "name": "r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7072,
                        "src": "2099:1:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "-=",
                      "rightHandSide": {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 7223,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2104:1:19",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "2099:6:19",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "id": 7225,
                    "nodeType": "ExpressionStatement",
                    "src": "2099:6:19"
                  }
                }
              ]
            },
            "documentation": null,
            "id": 7228,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "leastSignificantBit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7070,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7069,
                  "mutability": "mutable",
                  "name": "x",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7228,
                  "src": "1239:9:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 7068,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1239:7:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1238:11:19"
            },
            "returnParameters": {
              "id": 7073,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7072,
                  "mutability": "mutable",
                  "name": "r",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7228,
                  "src": "1273:7:19",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 7071,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1273:5:19",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1272:9:19"
            },
            "scope": 7229,
            "src": "1210:902:19",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 7230,
        "src": "71:2043:19"
      }
    ],
    "src": "45:2070:19"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "moonwalkerswap-libraries/contracts/libraries/BitMath.sol",
      "exportedSymbols": {
        "BitMath": [
          7229
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            ">=",
            "0.5",
            ".0"
          ]
        },
        "id": 6953,
        "name": "PragmaDirective",
        "src": "45:24:19"
      },
      {
        "attributes": {
          "abstract": false,
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            7229
          ],
          "name": "BitMath",
          "scope": 7230
        },
        "children": [
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "mostSignificantBit",
              "overrides": null,
              "scope": 7229,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "x",
                      "overrides": null,
                      "scope": 7067,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6954,
                        "name": "ElementaryTypeName",
                        "src": "245:7:19"
                      }
                    ],
                    "id": 6955,
                    "name": "VariableDeclaration",
                    "src": "245:9:19"
                  }
                ],
                "id": 6956,
                "name": "ParameterList",
                "src": "244:11:19"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "r",
                      "overrides": null,
                      "scope": 7067,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 6957,
                        "name": "ElementaryTypeName",
                        "src": "279:5:19"
                      }
                    ],
                    "id": 6958,
                    "name": "VariableDeclaration",
                    "src": "279:7:19"
                  }
                ],
                "id": 6959,
                "name": "ParameterList",
                "src": "278:9:19"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_03c73b0187854c5090030bbfe0f7d97709bd7eabff8b89faf5be84b9d8c785d2",
                                  "typeString": "literal_string \"BitMath::mostSignificantBit: zero\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6960,
                            "name": "Identifier",
                            "src": "298:7:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6955,
                                  "type": "uint256",
                                  "value": "x"
                                },
                                "id": 6961,
                                "name": "Identifier",
                                "src": "306:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 6962,
                                "name": "Literal",
                                "src": "310:1:19"
                              }
                            ],
                            "id": 6963,
                            "name": "BinaryOperation",
                            "src": "306:5:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4269744d6174683a3a6d6f73745369676e69666963616e744269743a207a65726f",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"BitMath::mostSignificantBit: zero\"",
                              "value": "BitMath::mostSignificantBit: zero"
                            },
                            "id": 6964,
                            "name": "Literal",
                            "src": "313:35:19"
                          }
                        ],
                        "id": 6965,
                        "name": "FunctionCall",
                        "src": "298:51:19"
                      }
                    ],
                    "id": 6966,
                    "name": "ExpressionStatement",
                    "src": "298:51:19"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6955,
                              "type": "uint256",
                              "value": "x"
                            },
                            "id": 6967,
                            "name": "Identifier",
                            "src": "364:1:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3078313030303030303030303030303030303030303030303030303030303030303030",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 3402...(31 digits omitted)...1456",
                              "value": "0x100000000000000000000000000000000"
                            },
                            "id": 6968,
                            "name": "Literal",
                            "src": "369:35:19"
                          }
                        ],
                        "id": 6969,
                        "name": "BinaryOperation",
                        "src": "364:40:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6955,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 6970,
                                    "name": "Identifier",
                                    "src": "420:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 6971,
                                    "name": "Literal",
                                    "src": "426:3:19"
                                  }
                                ],
                                "id": 6972,
                                "name": "Assignment",
                                "src": "420:9:19"
                              }
                            ],
                            "id": 6973,
                            "name": "ExpressionStatement",
                            "src": "420:9:19"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6958,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 6974,
                                    "name": "Identifier",
                                    "src": "443:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 6975,
                                    "name": "Literal",
                                    "src": "448:3:19"
                                  }
                                ],
                                "id": 6976,
                                "name": "Assignment",
                                "src": "443:8:19"
                              }
                            ],
                            "id": 6977,
                            "name": "ExpressionStatement",
                            "src": "443:8:19"
                          }
                        ],
                        "id": 6978,
                        "name": "Block",
                        "src": "406:56:19"
                      }
                    ],
                    "id": 6979,
                    "name": "IfStatement",
                    "src": "360:102:19"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6955,
                              "type": "uint256",
                              "value": "x"
                            },
                            "id": 6980,
                            "name": "Identifier",
                            "src": "475:1:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30783130303030303030303030303030303030",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 18446744073709551616",
                              "value": "0x10000000000000000"
                            },
                            "id": 6981,
                            "name": "Literal",
                            "src": "480:19:19"
                          }
                        ],
                        "id": 6982,
                        "name": "BinaryOperation",
                        "src": "475:24:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6955,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 6983,
                                    "name": "Identifier",
                                    "src": "515:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3634",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 64",
                                      "value": "64"
                                    },
                                    "id": 6984,
                                    "name": "Literal",
                                    "src": "521:2:19"
                                  }
                                ],
                                "id": 6985,
                                "name": "Assignment",
                                "src": "515:8:19"
                              }
                            ],
                            "id": 6986,
                            "name": "ExpressionStatement",
                            "src": "515:8:19"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6958,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 6987,
                                    "name": "Identifier",
                                    "src": "537:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3634",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 64",
                                      "value": "64"
                                    },
                                    "id": 6988,
                                    "name": "Literal",
                                    "src": "542:2:19"
                                  }
                                ],
                                "id": 6989,
                                "name": "Assignment",
                                "src": "537:7:19"
                              }
                            ],
                            "id": 6990,
                            "name": "ExpressionStatement",
                            "src": "537:7:19"
                          }
                        ],
                        "id": 6991,
                        "name": "Block",
                        "src": "501:54:19"
                      }
                    ],
                    "id": 6992,
                    "name": "IfStatement",
                    "src": "471:84:19"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6955,
                              "type": "uint256",
                              "value": "x"
                            },
                            "id": 6993,
                            "name": "Identifier",
                            "src": "568:1:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3078313030303030303030",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 4294967296",
                              "value": "0x100000000"
                            },
                            "id": 6994,
                            "name": "Literal",
                            "src": "573:11:19"
                          }
                        ],
                        "id": 6995,
                        "name": "BinaryOperation",
                        "src": "568:16:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6955,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 6996,
                                    "name": "Identifier",
                                    "src": "600:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3332",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 32",
                                      "value": "32"
                                    },
                                    "id": 6997,
                                    "name": "Literal",
                                    "src": "606:2:19"
                                  }
                                ],
                                "id": 6998,
                                "name": "Assignment",
                                "src": "600:8:19"
                              }
                            ],
                            "id": 6999,
                            "name": "ExpressionStatement",
                            "src": "600:8:19"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6958,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7000,
                                    "name": "Identifier",
                                    "src": "622:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3332",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 32",
                                      "value": "32"
                                    },
                                    "id": 7001,
                                    "name": "Literal",
                                    "src": "627:2:19"
                                  }
                                ],
                                "id": 7002,
                                "name": "Assignment",
                                "src": "622:7:19"
                              }
                            ],
                            "id": 7003,
                            "name": "ExpressionStatement",
                            "src": "622:7:19"
                          }
                        ],
                        "id": 7004,
                        "name": "Block",
                        "src": "586:54:19"
                      }
                    ],
                    "id": 7005,
                    "name": "IfStatement",
                    "src": "564:76:19"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6955,
                              "type": "uint256",
                              "value": "x"
                            },
                            "id": 7006,
                            "name": "Identifier",
                            "src": "653:1:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30783130303030",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 65536",
                              "value": "0x10000"
                            },
                            "id": 7007,
                            "name": "Literal",
                            "src": "658:7:19"
                          }
                        ],
                        "id": 7008,
                        "name": "BinaryOperation",
                        "src": "653:12:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6955,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 7009,
                                    "name": "Identifier",
                                    "src": "681:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3136",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 16",
                                      "value": "16"
                                    },
                                    "id": 7010,
                                    "name": "Literal",
                                    "src": "687:2:19"
                                  }
                                ],
                                "id": 7011,
                                "name": "Assignment",
                                "src": "681:8:19"
                              }
                            ],
                            "id": 7012,
                            "name": "ExpressionStatement",
                            "src": "681:8:19"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6958,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7013,
                                    "name": "Identifier",
                                    "src": "703:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3136",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 16",
                                      "value": "16"
                                    },
                                    "id": 7014,
                                    "name": "Literal",
                                    "src": "708:2:19"
                                  }
                                ],
                                "id": 7015,
                                "name": "Assignment",
                                "src": "703:7:19"
                              }
                            ],
                            "id": 7016,
                            "name": "ExpressionStatement",
                            "src": "703:7:19"
                          }
                        ],
                        "id": 7017,
                        "name": "Block",
                        "src": "667:54:19"
                      }
                    ],
                    "id": 7018,
                    "name": "IfStatement",
                    "src": "649:72:19"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6955,
                              "type": "uint256",
                              "value": "x"
                            },
                            "id": 7019,
                            "name": "Identifier",
                            "src": "734:1:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "3078313030",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 256",
                              "value": "0x100"
                            },
                            "id": 7020,
                            "name": "Literal",
                            "src": "739:5:19"
                          }
                        ],
                        "id": 7021,
                        "name": "BinaryOperation",
                        "src": "734:10:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6955,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 7022,
                                    "name": "Identifier",
                                    "src": "760:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 7023,
                                    "name": "Literal",
                                    "src": "766:1:19"
                                  }
                                ],
                                "id": 7024,
                                "name": "Assignment",
                                "src": "760:7:19"
                              }
                            ],
                            "id": 7025,
                            "name": "ExpressionStatement",
                            "src": "760:7:19"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6958,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7026,
                                    "name": "Identifier",
                                    "src": "781:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 7027,
                                    "name": "Literal",
                                    "src": "786:1:19"
                                  }
                                ],
                                "id": 7028,
                                "name": "Assignment",
                                "src": "781:6:19"
                              }
                            ],
                            "id": 7029,
                            "name": "ExpressionStatement",
                            "src": "781:6:19"
                          }
                        ],
                        "id": 7030,
                        "name": "Block",
                        "src": "746:52:19"
                      }
                    ],
                    "id": 7031,
                    "name": "IfStatement",
                    "src": "730:68:19"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6955,
                              "type": "uint256",
                              "value": "x"
                            },
                            "id": 7032,
                            "name": "Identifier",
                            "src": "811:1:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30783130",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 16",
                              "value": "0x10"
                            },
                            "id": 7033,
                            "name": "Literal",
                            "src": "816:4:19"
                          }
                        ],
                        "id": 7034,
                        "name": "BinaryOperation",
                        "src": "811:9:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6955,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 7035,
                                    "name": "Identifier",
                                    "src": "836:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "34",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 4",
                                      "value": "4"
                                    },
                                    "id": 7036,
                                    "name": "Literal",
                                    "src": "842:1:19"
                                  }
                                ],
                                "id": 7037,
                                "name": "Assignment",
                                "src": "836:7:19"
                              }
                            ],
                            "id": 7038,
                            "name": "ExpressionStatement",
                            "src": "836:7:19"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6958,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7039,
                                    "name": "Identifier",
                                    "src": "857:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "34",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 4",
                                      "value": "4"
                                    },
                                    "id": 7040,
                                    "name": "Literal",
                                    "src": "862:1:19"
                                  }
                                ],
                                "id": 7041,
                                "name": "Assignment",
                                "src": "857:6:19"
                              }
                            ],
                            "id": 7042,
                            "name": "ExpressionStatement",
                            "src": "857:6:19"
                          }
                        ],
                        "id": 7043,
                        "name": "Block",
                        "src": "822:52:19"
                      }
                    ],
                    "id": 7044,
                    "name": "IfStatement",
                    "src": "807:67:19"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6955,
                              "type": "uint256",
                              "value": "x"
                            },
                            "id": 7045,
                            "name": "Identifier",
                            "src": "887:1:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "307834",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 4",
                              "value": "0x4"
                            },
                            "id": 7046,
                            "name": "Literal",
                            "src": "892:3:19"
                          }
                        ],
                        "id": 7047,
                        "name": "BinaryOperation",
                        "src": "887:8:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6955,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 7048,
                                    "name": "Identifier",
                                    "src": "911:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 7049,
                                    "name": "Literal",
                                    "src": "917:1:19"
                                  }
                                ],
                                "id": 7050,
                                "name": "Assignment",
                                "src": "911:7:19"
                              }
                            ],
                            "id": 7051,
                            "name": "ExpressionStatement",
                            "src": "911:7:19"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "+=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6958,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7052,
                                    "name": "Identifier",
                                    "src": "932:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 7053,
                                    "name": "Literal",
                                    "src": "937:1:19"
                                  }
                                ],
                                "id": 7054,
                                "name": "Assignment",
                                "src": "932:6:19"
                              }
                            ],
                            "id": 7055,
                            "name": "ExpressionStatement",
                            "src": "932:6:19"
                          }
                        ],
                        "id": 7056,
                        "name": "Block",
                        "src": "897:52:19"
                      }
                    ],
                    "id": 7057,
                    "name": "IfStatement",
                    "src": "883:66:19"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6955,
                              "type": "uint256",
                              "value": "x"
                            },
                            "id": 7058,
                            "name": "Identifier",
                            "src": "962:1:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "307832",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 2",
                              "value": "0x2"
                            },
                            "id": 7059,
                            "name": "Literal",
                            "src": "967:3:19"
                          }
                        ],
                        "id": 7060,
                        "name": "BinaryOperation",
                        "src": "962:8:19"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "+=",
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6958,
                                  "type": "uint8",
                                  "value": "r"
                                },
                                "id": 7061,
                                "name": "Identifier",
                                "src": "972:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 7062,
                                "name": "Literal",
                                "src": "977:1:19"
                              }
                            ],
                            "id": 7063,
                            "name": "Assignment",
                            "src": "972:6:19"
                          }
                        ],
                        "id": 7064,
                        "name": "ExpressionStatement",
                        "src": "972:6:19"
                      }
                    ],
                    "id": 7065,
                    "name": "IfStatement",
                    "src": "958:20:19"
                  }
                ],
                "id": 7066,
                "name": "Block",
                "src": "288:697:19"
              }
            ],
            "id": 7067,
            "name": "FunctionDefinition",
            "src": "217:768:19"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "leastSignificantBit",
              "overrides": null,
              "scope": 7229,
              "stateMutability": "pure",
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "x",
                      "overrides": null,
                      "scope": 7228,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 7068,
                        "name": "ElementaryTypeName",
                        "src": "1239:7:19"
                      }
                    ],
                    "id": 7069,
                    "name": "VariableDeclaration",
                    "src": "1239:9:19"
                  }
                ],
                "id": 7070,
                "name": "ParameterList",
                "src": "1238:11:19"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "r",
                      "overrides": null,
                      "scope": 7228,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 7071,
                        "name": "ElementaryTypeName",
                        "src": "1273:5:19"
                      }
                    ],
                    "id": 7072,
                    "name": "VariableDeclaration",
                    "src": "1273:7:19"
                  }
                ],
                "id": 7073,
                "name": "ParameterList",
                "src": "1272:9:19"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_cedc9c6217b2cedc06d11ed96db2989630b9045493eb849d6df363a9a5eb1c43",
                                  "typeString": "literal_string \"BitMath::leastSignificantBit: zero\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 7074,
                            "name": "Identifier",
                            "src": "1292:7:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7069,
                                  "type": "uint256",
                                  "value": "x"
                                },
                                "id": 7075,
                                "name": "Identifier",
                                "src": "1300:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "30",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 0",
                                  "value": "0"
                                },
                                "id": 7076,
                                "name": "Literal",
                                "src": "1304:1:19"
                              }
                            ],
                            "id": 7077,
                            "name": "BinaryOperation",
                            "src": "1300:5:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "4269744d6174683a3a6c656173745369676e69666963616e744269743a207a65726f",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"BitMath::leastSignificantBit: zero\"",
                              "value": "BitMath::leastSignificantBit: zero"
                            },
                            "id": 7078,
                            "name": "Literal",
                            "src": "1307:36:19"
                          }
                        ],
                        "id": 7079,
                        "name": "FunctionCall",
                        "src": "1292:52:19"
                      }
                    ],
                    "id": 7080,
                    "name": "ExpressionStatement",
                    "src": "1292:52:19"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7072,
                              "type": "uint8",
                              "value": "r"
                            },
                            "id": 7081,
                            "name": "Identifier",
                            "src": "1355:1:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "323535",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 255",
                              "value": "255"
                            },
                            "id": 7082,
                            "name": "Literal",
                            "src": "1359:3:19"
                          }
                        ],
                        "id": 7083,
                        "name": "Assignment",
                        "src": "1355:7:19"
                      }
                    ],
                    "id": 7084,
                    "name": "ExpressionStatement",
                    "src": "1355:7:19"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7069,
                                  "type": "uint256",
                                  "value": "x"
                                },
                                "id": 7085,
                                "name": "Identifier",
                                "src": "1376:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint128",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint128)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint128",
                                          "type": null
                                        },
                                        "id": 7086,
                                        "name": "ElementaryTypeName",
                                        "src": "1380:7:19"
                                      }
                                    ],
                                    "id": 7087,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "1380:7:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "prefix": true,
                                      "type": "int_const -1"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 7088,
                                        "name": "Literal",
                                        "src": "1389:1:19"
                                      }
                                    ],
                                    "id": 7089,
                                    "name": "UnaryOperation",
                                    "src": "1388:2:19"
                                  }
                                ],
                                "id": 7090,
                                "name": "FunctionCall",
                                "src": "1380:11:19"
                              }
                            ],
                            "id": 7091,
                            "name": "BinaryOperation",
                            "src": "1376:15:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 7092,
                            "name": "Literal",
                            "src": "1394:1:19"
                          }
                        ],
                        "id": 7093,
                        "name": "BinaryOperation",
                        "src": "1376:19:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7072,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7094,
                                    "name": "Identifier",
                                    "src": "1411:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 7095,
                                    "name": "Literal",
                                    "src": "1416:3:19"
                                  }
                                ],
                                "id": 7096,
                                "name": "Assignment",
                                "src": "1411:8:19"
                              }
                            ],
                            "id": 7097,
                            "name": "ExpressionStatement",
                            "src": "1411:8:19"
                          }
                        ],
                        "id": 7098,
                        "name": "Block",
                        "src": "1397:33:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7069,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 7099,
                                    "name": "Identifier",
                                    "src": "1450:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "313238",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 128",
                                      "value": "128"
                                    },
                                    "id": 7100,
                                    "name": "Literal",
                                    "src": "1456:3:19"
                                  }
                                ],
                                "id": 7101,
                                "name": "Assignment",
                                "src": "1450:9:19"
                              }
                            ],
                            "id": 7102,
                            "name": "ExpressionStatement",
                            "src": "1450:9:19"
                          }
                        ],
                        "id": 7103,
                        "name": "Block",
                        "src": "1436:34:19"
                      }
                    ],
                    "id": 7104,
                    "name": "IfStatement",
                    "src": "1372:98:19"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7069,
                                  "type": "uint256",
                                  "value": "x"
                                },
                                "id": 7105,
                                "name": "Identifier",
                                "src": "1483:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint64",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint64)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint64",
                                          "type": null
                                        },
                                        "id": 7106,
                                        "name": "ElementaryTypeName",
                                        "src": "1487:6:19"
                                      }
                                    ],
                                    "id": 7107,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "1487:6:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "prefix": true,
                                      "type": "int_const -1"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 7108,
                                        "name": "Literal",
                                        "src": "1495:1:19"
                                      }
                                    ],
                                    "id": 7109,
                                    "name": "UnaryOperation",
                                    "src": "1494:2:19"
                                  }
                                ],
                                "id": 7110,
                                "name": "FunctionCall",
                                "src": "1487:10:19"
                              }
                            ],
                            "id": 7111,
                            "name": "BinaryOperation",
                            "src": "1483:14:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 7112,
                            "name": "Literal",
                            "src": "1500:1:19"
                          }
                        ],
                        "id": 7113,
                        "name": "BinaryOperation",
                        "src": "1483:18:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7072,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7114,
                                    "name": "Identifier",
                                    "src": "1517:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3634",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 64",
                                      "value": "64"
                                    },
                                    "id": 7115,
                                    "name": "Literal",
                                    "src": "1522:2:19"
                                  }
                                ],
                                "id": 7116,
                                "name": "Assignment",
                                "src": "1517:7:19"
                              }
                            ],
                            "id": 7117,
                            "name": "ExpressionStatement",
                            "src": "1517:7:19"
                          }
                        ],
                        "id": 7118,
                        "name": "Block",
                        "src": "1503:32:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7069,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 7119,
                                    "name": "Identifier",
                                    "src": "1555:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3634",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 64",
                                      "value": "64"
                                    },
                                    "id": 7120,
                                    "name": "Literal",
                                    "src": "1561:2:19"
                                  }
                                ],
                                "id": 7121,
                                "name": "Assignment",
                                "src": "1555:8:19"
                              }
                            ],
                            "id": 7122,
                            "name": "ExpressionStatement",
                            "src": "1555:8:19"
                          }
                        ],
                        "id": 7123,
                        "name": "Block",
                        "src": "1541:33:19"
                      }
                    ],
                    "id": 7124,
                    "name": "IfStatement",
                    "src": "1479:95:19"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7069,
                                  "type": "uint256",
                                  "value": "x"
                                },
                                "id": 7125,
                                "name": "Identifier",
                                "src": "1587:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint32",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint32",
                                          "type": null
                                        },
                                        "id": 7126,
                                        "name": "ElementaryTypeName",
                                        "src": "1591:6:19"
                                      }
                                    ],
                                    "id": 7127,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "1591:6:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "prefix": true,
                                      "type": "int_const -1"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 7128,
                                        "name": "Literal",
                                        "src": "1599:1:19"
                                      }
                                    ],
                                    "id": 7129,
                                    "name": "UnaryOperation",
                                    "src": "1598:2:19"
                                  }
                                ],
                                "id": 7130,
                                "name": "FunctionCall",
                                "src": "1591:10:19"
                              }
                            ],
                            "id": 7131,
                            "name": "BinaryOperation",
                            "src": "1587:14:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 7132,
                            "name": "Literal",
                            "src": "1604:1:19"
                          }
                        ],
                        "id": 7133,
                        "name": "BinaryOperation",
                        "src": "1587:18:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7072,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7134,
                                    "name": "Identifier",
                                    "src": "1621:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3332",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 32",
                                      "value": "32"
                                    },
                                    "id": 7135,
                                    "name": "Literal",
                                    "src": "1626:2:19"
                                  }
                                ],
                                "id": 7136,
                                "name": "Assignment",
                                "src": "1621:7:19"
                              }
                            ],
                            "id": 7137,
                            "name": "ExpressionStatement",
                            "src": "1621:7:19"
                          }
                        ],
                        "id": 7138,
                        "name": "Block",
                        "src": "1607:32:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7069,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 7139,
                                    "name": "Identifier",
                                    "src": "1659:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3332",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 32",
                                      "value": "32"
                                    },
                                    "id": 7140,
                                    "name": "Literal",
                                    "src": "1665:2:19"
                                  }
                                ],
                                "id": 7141,
                                "name": "Assignment",
                                "src": "1659:8:19"
                              }
                            ],
                            "id": 7142,
                            "name": "ExpressionStatement",
                            "src": "1659:8:19"
                          }
                        ],
                        "id": 7143,
                        "name": "Block",
                        "src": "1645:33:19"
                      }
                    ],
                    "id": 7144,
                    "name": "IfStatement",
                    "src": "1583:95:19"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7069,
                                  "type": "uint256",
                                  "value": "x"
                                },
                                "id": 7145,
                                "name": "Identifier",
                                "src": "1691:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint16",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint16)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint16",
                                          "type": null
                                        },
                                        "id": 7146,
                                        "name": "ElementaryTypeName",
                                        "src": "1695:6:19"
                                      }
                                    ],
                                    "id": 7147,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "1695:6:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "prefix": true,
                                      "type": "int_const -1"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 7148,
                                        "name": "Literal",
                                        "src": "1703:1:19"
                                      }
                                    ],
                                    "id": 7149,
                                    "name": "UnaryOperation",
                                    "src": "1702:2:19"
                                  }
                                ],
                                "id": 7150,
                                "name": "FunctionCall",
                                "src": "1695:10:19"
                              }
                            ],
                            "id": 7151,
                            "name": "BinaryOperation",
                            "src": "1691:14:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 7152,
                            "name": "Literal",
                            "src": "1708:1:19"
                          }
                        ],
                        "id": 7153,
                        "name": "BinaryOperation",
                        "src": "1691:18:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7072,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7154,
                                    "name": "Identifier",
                                    "src": "1725:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3136",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 16",
                                      "value": "16"
                                    },
                                    "id": 7155,
                                    "name": "Literal",
                                    "src": "1730:2:19"
                                  }
                                ],
                                "id": 7156,
                                "name": "Assignment",
                                "src": "1725:7:19"
                              }
                            ],
                            "id": 7157,
                            "name": "ExpressionStatement",
                            "src": "1725:7:19"
                          }
                        ],
                        "id": 7158,
                        "name": "Block",
                        "src": "1711:32:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7069,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 7159,
                                    "name": "Identifier",
                                    "src": "1763:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "3136",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 16",
                                      "value": "16"
                                    },
                                    "id": 7160,
                                    "name": "Literal",
                                    "src": "1769:2:19"
                                  }
                                ],
                                "id": 7161,
                                "name": "Assignment",
                                "src": "1763:8:19"
                              }
                            ],
                            "id": 7162,
                            "name": "ExpressionStatement",
                            "src": "1763:8:19"
                          }
                        ],
                        "id": 7163,
                        "name": "Block",
                        "src": "1749:33:19"
                      }
                    ],
                    "id": 7164,
                    "name": "IfStatement",
                    "src": "1687:95:19"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7069,
                                  "type": "uint256",
                                  "value": "x"
                                },
                                "id": 7165,
                                "name": "Identifier",
                                "src": "1795:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint8",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_minus_1_by_1",
                                          "typeString": "int_const -1"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint8)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint8",
                                          "type": null
                                        },
                                        "id": 7166,
                                        "name": "ElementaryTypeName",
                                        "src": "1799:5:19"
                                      }
                                    ],
                                    "id": 7167,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "1799:5:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "operator": "-",
                                      "prefix": true,
                                      "type": "int_const -1"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "31",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 1",
                                          "value": "1"
                                        },
                                        "id": 7168,
                                        "name": "Literal",
                                        "src": "1806:1:19"
                                      }
                                    ],
                                    "id": 7169,
                                    "name": "UnaryOperation",
                                    "src": "1805:2:19"
                                  }
                                ],
                                "id": 7170,
                                "name": "FunctionCall",
                                "src": "1799:9:19"
                              }
                            ],
                            "id": 7171,
                            "name": "BinaryOperation",
                            "src": "1795:13:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 7172,
                            "name": "Literal",
                            "src": "1811:1:19"
                          }
                        ],
                        "id": 7173,
                        "name": "BinaryOperation",
                        "src": "1795:17:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7072,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7174,
                                    "name": "Identifier",
                                    "src": "1828:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 7175,
                                    "name": "Literal",
                                    "src": "1833:1:19"
                                  }
                                ],
                                "id": 7176,
                                "name": "Assignment",
                                "src": "1828:6:19"
                              }
                            ],
                            "id": 7177,
                            "name": "ExpressionStatement",
                            "src": "1828:6:19"
                          }
                        ],
                        "id": 7178,
                        "name": "Block",
                        "src": "1814:31:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7069,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 7179,
                                    "name": "Identifier",
                                    "src": "1865:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 7180,
                                    "name": "Literal",
                                    "src": "1871:1:19"
                                  }
                                ],
                                "id": 7181,
                                "name": "Assignment",
                                "src": "1865:7:19"
                              }
                            ],
                            "id": 7182,
                            "name": "ExpressionStatement",
                            "src": "1865:7:19"
                          }
                        ],
                        "id": 7183,
                        "name": "Block",
                        "src": "1851:32:19"
                      }
                    ],
                    "id": 7184,
                    "name": "IfStatement",
                    "src": "1791:92:19"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7069,
                                  "type": "uint256",
                                  "value": "x"
                                },
                                "id": 7185,
                                "name": "Identifier",
                                "src": "1896:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "307866",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 15",
                                  "value": "0xf"
                                },
                                "id": 7186,
                                "name": "Literal",
                                "src": "1900:3:19"
                              }
                            ],
                            "id": 7187,
                            "name": "BinaryOperation",
                            "src": "1896:7:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 7188,
                            "name": "Literal",
                            "src": "1906:1:19"
                          }
                        ],
                        "id": 7189,
                        "name": "BinaryOperation",
                        "src": "1896:11:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7072,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7190,
                                    "name": "Identifier",
                                    "src": "1923:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "34",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 4",
                                      "value": "4"
                                    },
                                    "id": 7191,
                                    "name": "Literal",
                                    "src": "1928:1:19"
                                  }
                                ],
                                "id": 7192,
                                "name": "Assignment",
                                "src": "1923:6:19"
                              }
                            ],
                            "id": 7193,
                            "name": "ExpressionStatement",
                            "src": "1923:6:19"
                          }
                        ],
                        "id": 7194,
                        "name": "Block",
                        "src": "1909:31:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7069,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 7195,
                                    "name": "Identifier",
                                    "src": "1960:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "34",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 4",
                                      "value": "4"
                                    },
                                    "id": 7196,
                                    "name": "Literal",
                                    "src": "1966:1:19"
                                  }
                                ],
                                "id": 7197,
                                "name": "Assignment",
                                "src": "1960:7:19"
                              }
                            ],
                            "id": 7198,
                            "name": "ExpressionStatement",
                            "src": "1960:7:19"
                          }
                        ],
                        "id": 7199,
                        "name": "Block",
                        "src": "1946:32:19"
                      }
                    ],
                    "id": 7200,
                    "name": "IfStatement",
                    "src": "1892:86:19"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7069,
                                  "type": "uint256",
                                  "value": "x"
                                },
                                "id": 7201,
                                "name": "Identifier",
                                "src": "1991:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "307833",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 3",
                                  "value": "0x3"
                                },
                                "id": 7202,
                                "name": "Literal",
                                "src": "1995:3:19"
                              }
                            ],
                            "id": 7203,
                            "name": "BinaryOperation",
                            "src": "1991:7:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 7204,
                            "name": "Literal",
                            "src": "2001:1:19"
                          }
                        ],
                        "id": 7205,
                        "name": "BinaryOperation",
                        "src": "1991:11:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "-=",
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7072,
                                      "type": "uint8",
                                      "value": "r"
                                    },
                                    "id": 7206,
                                    "name": "Identifier",
                                    "src": "2018:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 7207,
                                    "name": "Literal",
                                    "src": "2023:1:19"
                                  }
                                ],
                                "id": 7208,
                                "name": "Assignment",
                                "src": "2018:6:19"
                              }
                            ],
                            "id": 7209,
                            "name": "ExpressionStatement",
                            "src": "2018:6:19"
                          }
                        ],
                        "id": 7210,
                        "name": "Block",
                        "src": "2004:31:19"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">>=",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7069,
                                      "type": "uint256",
                                      "value": "x"
                                    },
                                    "id": 7211,
                                    "name": "Identifier",
                                    "src": "2055:1:19"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "32",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 2",
                                      "value": "2"
                                    },
                                    "id": 7212,
                                    "name": "Literal",
                                    "src": "2061:1:19"
                                  }
                                ],
                                "id": 7213,
                                "name": "Assignment",
                                "src": "2055:7:19"
                              }
                            ],
                            "id": 7214,
                            "name": "ExpressionStatement",
                            "src": "2055:7:19"
                          }
                        ],
                        "id": 7215,
                        "name": "Block",
                        "src": "2041:32:19"
                      }
                    ],
                    "id": 7216,
                    "name": "IfStatement",
                    "src": "1987:86:19"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "&",
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7069,
                                  "type": "uint256",
                                  "value": "x"
                                },
                                "id": 7217,
                                "name": "Identifier",
                                "src": "2086:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "307831",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "0x1"
                                },
                                "id": 7218,
                                "name": "Literal",
                                "src": "2090:3:19"
                              }
                            ],
                            "id": 7219,
                            "name": "BinaryOperation",
                            "src": "2086:7:19"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 7220,
                            "name": "Literal",
                            "src": "2096:1:19"
                          }
                        ],
                        "id": 7221,
                        "name": "BinaryOperation",
                        "src": "2086:11:19"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "-=",
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7072,
                                  "type": "uint8",
                                  "value": "r"
                                },
                                "id": 7222,
                                "name": "Identifier",
                                "src": "2099:1:19"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 7223,
                                "name": "Literal",
                                "src": "2104:1:19"
                              }
                            ],
                            "id": 7224,
                            "name": "Assignment",
                            "src": "2099:6:19"
                          }
                        ],
                        "id": 7225,
                        "name": "ExpressionStatement",
                        "src": "2099:6:19"
                      }
                    ],
                    "id": 7226,
                    "name": "IfStatement",
                    "src": "2082:23:19"
                  }
                ],
                "id": 7227,
                "name": "Block",
                "src": "1282:830:19"
              }
            ],
            "id": 7228,
            "name": "FunctionDefinition",
            "src": "1210:902:19"
          }
        ],
        "id": 7229,
        "name": "ContractDefinition",
        "src": "71:2043:19"
      }
    ],
    "id": 7230,
    "name": "SourceUnit",
    "src": "45:2070:19"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.6+commit.6c089d02.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.1",
  "updatedAt": "2022-01-17T23:40:22.233Z",
  "devdoc": {
    "methods": {}
  },
  "userdoc": {
    "methods": {}
  }
}