{
  "abi": [],
  "bytecode": {
    "object": "0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122067e4a312c25029eaaabf8e643ab6554cf3931f1380f949fcd531456541c7844664736f6c63430008160033",
    "sourceMap": "327:6487:45:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;327:6487:45;;;;;;;;;;;;;;;;;",
    "linkReferences": {}
  },
  "deployedBytecode": {
    "object": "0x73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122067e4a312c25029eaaabf8e643ab6554cf3931f1380f949fcd531456541c7844664736f6c63430008160033",
    "sourceMap": "327:6487:45:-:0;;;;;;;;",
    "linkReferences": {}
  },
  "methodIdentifiers": {},
  "rawMetadata": "{\"compiler\":{\"version\":\"0.8.22+commit.4fc1097e\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"title\":\"Liquidity amount functions\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"notice\":\"Provides functions for computing liquidity amounts from token amounts and prices\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":\"LiquidityAmounts\"},\"evmVersion\":\"paris\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"details\":{\"constantOptimizer\":true,\"cse\":true,\"deduplicate\":true,\"inliner\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"simpleCounterForLoopUncheckedIncrement\":true,\"yul\":true,\"yulDetails\":{\"optimizerSteps\":\"dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu\",\"stackAllocation\":true}},\"runs\":999999999},\"remappings\":[\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@uniswap/v3-core/=lib_uniswap/v3-core/\",\":@uniswap/v3-periphery/=lib_uniswap/v3-periphery/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":v3-core/=lib_uniswap/v3-core/\",\":v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/\"]},\"sources\":{\"lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol\":{\"keccak256\":\"0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d\",\"dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP\"]},\"lib_uniswap/v3-core/contracts/libraries/FullMath.sol\":{\"keccak256\":\"0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d\",\"dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2\"]},\"lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol\":{\"keccak256\":\"0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24\",\"license\":\"GPL-2.0-or-later\",\"urls\":[\"bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844\",\"dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w\"]}},\"version\":1}",
  "metadata": {
    "compiler": {
      "version": "0.8.22+commit.4fc1097e"
    },
    "language": "Solidity",
    "output": {
      "abi": [],
      "devdoc": {
        "kind": "dev",
        "methods": {},
        "version": 1
      },
      "userdoc": {
        "kind": "user",
        "methods": {},
        "version": 1
      }
    },
    "settings": {
      "remappings": [
        "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/",
        "@uniswap/v3-core/=lib_uniswap/v3-core/",
        "@uniswap/v3-periphery/=lib_uniswap/v3-periphery/",
        "ds-test/=lib/forge-std/lib/ds-test/src/",
        "forge-std/=lib/forge-std/src/",
        "openzeppelin-contracts/=lib/openzeppelin-contracts/",
        "v3-core/=lib_uniswap/v3-core/",
        "v3-periphery/libraries/=lib_uniswap/v3-periphery/contracts/libraries/"
      ],
      "optimizer": {
        "runs": 999999999,
        "details": {
          "peephole": true,
          "inliner": true,
          "jumpdestRemover": true,
          "orderLiterals": true,
          "deduplicate": true,
          "cse": true,
          "constantOptimizer": true,
          "yul": true,
          "yulDetails": {
            "stackAllocation": true,
            "optimizerSteps": "dhfoD[xarrscLMcCTU]uljmul:fDnTOcmu"
          }
        }
      },
      "metadata": {
        "bytecodeHash": "ipfs"
      },
      "compilationTarget": {
        "lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol": "LiquidityAmounts"
      },
      "libraries": {}
    },
    "sources": {
      "lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol": {
        "keccak256": "0x0ba8a9b95a956a4050749c0158e928398c447c91469682ca8a7cc7e77a7fe032",
        "urls": [
          "bzz-raw://186d3b528866065a5856f96d2aeec698efa99f8da913e9adf34f8cc296cc993d",
          "dweb:/ipfs/QmUAiMvtAQp8c9dy57bqJYzG7hkb1uChiPaQmt264skoqP"
        ],
        "license": "GPL-2.0-or-later"
      },
      "lib_uniswap/v3-core/contracts/libraries/FullMath.sol": {
        "keccak256": "0x77608bce1ddeb28ed9963b554b55e8a083277eda7be31e2c7255ef532cc408be",
        "urls": [
          "bzz-raw://8fcb307cf783b612ab9abd339296391d202974e7aa158deff23d9fb3aaac832d",
          "dweb:/ipfs/QmXhcwQajcGZADQtVoQpSWYNY4tB3Y42GPPyiaW62M5JH2"
        ],
        "license": "MIT"
      },
      "lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol": {
        "keccak256": "0xf149581d28e1c81736dfe72be73ee1301d4945340cc6282fcdd63fe3c85abf24",
        "urls": [
          "bzz-raw://0b67f375180bb62fe6753601cd09740496dcdcec4c0a4f9eaa6e94c5e1bb6844",
          "dweb:/ipfs/QmWYwkmqynRq7g81Nijg4eEkPgSRGnegDrbbEKkkTC1k2w"
        ],
        "license": "GPL-2.0-or-later"
      }
    },
    "version": 1
  },
  "ast": {
    "absolutePath": "lib_uniswap/v3-periphery/contracts/libraries/LiquidityAmounts.sol",
    "id": 45795,
    "exportedSymbols": {
      "FixedPoint96": [
        44338
      ],
      "FullMath": [
        44519
      ],
      "LiquidityAmounts": [
        45794
      ]
    },
    "nodeType": "SourceUnit",
    "src": "45:6770:45",
    "nodes": [
      {
        "id": 45456,
        "nodeType": "PragmaDirective",
        "src": "45:24:45",
        "nodes": [],
        "literals": [
          "solidity",
          ">=",
          "0.5",
          ".0"
        ]
      },
      {
        "id": 45457,
        "nodeType": "ImportDirective",
        "src": "71:59:45",
        "nodes": [],
        "absolutePath": "lib_uniswap/v3-core/contracts/libraries/FullMath.sol",
        "file": "@uniswap/v3-core/contracts/libraries/FullMath.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 45795,
        "sourceUnit": 44520,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 45458,
        "nodeType": "ImportDirective",
        "src": "131:63:45",
        "nodes": [],
        "absolutePath": "lib_uniswap/v3-core/contracts/libraries/FixedPoint96.sol",
        "file": "@uniswap/v3-core/contracts/libraries/FixedPoint96.sol",
        "nameLocation": "-1:-1:-1",
        "scope": 45795,
        "sourceUnit": 44339,
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "id": 45794,
        "nodeType": "ContractDefinition",
        "src": "327:6487:45",
        "nodes": [
          {
            "id": 45480,
            "nodeType": "FunctionDefinition",
            "src": "507:110:45",
            "nodes": [],
            "body": {
              "id": 45479,
              "nodeType": "Block",
              "src": "570:47:45",
              "nodes": [],
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 45476,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "components": [
                            {
                              "id": 45473,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 45468,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45465,
                                "src": "589:1:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "arguments": [
                                  {
                                    "id": 45471,
                                    "name": "x",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 45462,
                                    "src": "601:1:45",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 45470,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "593:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint128_$",
                                    "typeString": "type(uint128)"
                                  },
                                  "typeName": {
                                    "id": 45469,
                                    "name": "uint128",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "593:7:45",
                                    "typeDescriptions": {}
                                  }
                                },
                                "id": 45472,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "nameLocations": [],
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "593:10:45",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "src": "589:14:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            }
                          ],
                          "id": 45474,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "588:16:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "id": 45475,
                          "name": "x",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45462,
                          "src": "608:1:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "588:21:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 45467,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "580:7:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 45477,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "580:30:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 45478,
                  "nodeType": "ExpressionStatement",
                  "src": "580:30:45"
                }
              ]
            },
            "documentation": {
              "id": 45460,
              "nodeType": "StructuredDocumentation",
              "src": "358:144:45",
              "text": "@notice Downcasts uint256 to uint128\n @param x The uint258 to be downcasted\n @return y The passed value, downcasted to uint128"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toUint128",
            "nameLocation": "516:9:45",
            "parameters": {
              "id": 45463,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45462,
                  "mutability": "mutable",
                  "name": "x",
                  "nameLocation": "534:1:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45480,
                  "src": "526:9:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 45461,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "526:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "525:11:45"
            },
            "returnParameters": {
              "id": 45466,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45465,
                  "mutability": "mutable",
                  "name": "y",
                  "nameLocation": "567:1:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45480,
                  "src": "559:9:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 45464,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "559:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "558:11:45"
            },
            "scope": 45794,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "id": 45526,
            "nodeType": "FunctionDefinition",
            "src": "1085:475:45",
            "nodes": [],
            "body": {
              "id": 45525,
              "nodeType": "Block",
              "src": "1252:308:45",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    },
                    "id": 45494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 45492,
                      "name": "sqrtRatioAX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45483,
                      "src": "1266:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 45493,
                      "name": "sqrtRatioBX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45485,
                      "src": "1282:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "src": "1266:29:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 45503,
                  "nodeType": "IfStatement",
                  "src": "1262:98:45",
                  "trueBody": {
                    "expression": {
                      "id": 45501,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "components": [
                          {
                            "id": 45495,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45483,
                            "src": "1298:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45496,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45485,
                            "src": "1313:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45497,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "TupleExpression",
                        "src": "1297:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "components": [
                          {
                            "id": 45498,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45485,
                            "src": "1331:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45499,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45483,
                            "src": "1346:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45500,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1330:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "src": "1297:63:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 45502,
                    "nodeType": "ExpressionStatement",
                    "src": "1297:63:45"
                  }
                },
                {
                  "assignments": [
                    45505
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 45505,
                      "mutability": "mutable",
                      "name": "intermediate",
                      "nameLocation": "1378:12:45",
                      "nodeType": "VariableDeclaration",
                      "scope": 45525,
                      "src": "1370:20:45",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 45504,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1370:7:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 45513,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 45508,
                        "name": "sqrtRatioAX96",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45483,
                        "src": "1409:13:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      {
                        "id": 45509,
                        "name": "sqrtRatioBX96",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45485,
                        "src": "1424:13:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      {
                        "expression": {
                          "id": 45510,
                          "name": "FixedPoint96",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44338,
                          "src": "1439:12:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$44338_$",
                            "typeString": "type(library FixedPoint96)"
                          }
                        },
                        "id": 45511,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "1452:3:45",
                        "memberName": "Q96",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 44337,
                        "src": "1439:16:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 45506,
                        "name": "FullMath",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44519,
                        "src": "1393:8:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
                          "typeString": "type(library FullMath)"
                        }
                      },
                      "id": 45507,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "1402:6:45",
                      "memberName": "mulDiv",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 44474,
                      "src": "1393:15:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 45512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1393:63:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1370:86:45"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 45517,
                            "name": "amount0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45487,
                            "src": "1499:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "id": 45518,
                            "name": "intermediate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45505,
                            "src": "1508:12:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "id": 45521,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 45519,
                              "name": "sqrtRatioBX96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45485,
                              "src": "1522:13:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 45520,
                              "name": "sqrtRatioAX96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45483,
                              "src": "1538:13:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "src": "1522:29:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "expression": {
                            "id": 45515,
                            "name": "FullMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44519,
                            "src": "1483:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
                              "typeString": "type(library FullMath)"
                            }
                          },
                          "id": 45516,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "1492:6:45",
                          "memberName": "mulDiv",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 44474,
                          "src": "1483:15:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 45522,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1483:69:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 45514,
                      "name": "toUint128",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45480,
                      "src": "1473:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$",
                        "typeString": "function (uint256) pure returns (uint128)"
                      }
                    },
                    "id": 45523,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1473:80:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 45491,
                  "id": 45524,
                  "nodeType": "Return",
                  "src": "1466:87:45"
                }
              ]
            },
            "documentation": {
              "id": 45481,
              "nodeType": "StructuredDocumentation",
              "src": "623:457:45",
              "text": "@notice Computes the amount of liquidity received for a given amount of token0 and price range\n @dev Calculates amount0 * (sqrt(upper) * sqrt(lower)) / (sqrt(upper) - sqrt(lower))\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param amount0 The amount0 being sent in\n @return liquidity The amount of returned liquidity"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityForAmount0",
            "nameLocation": "1094:22:45",
            "parameters": {
              "id": 45488,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45483,
                  "mutability": "mutable",
                  "name": "sqrtRatioAX96",
                  "nameLocation": "1134:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45526,
                  "src": "1126:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45482,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "1126:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45485,
                  "mutability": "mutable",
                  "name": "sqrtRatioBX96",
                  "nameLocation": "1165:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45526,
                  "src": "1157:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45484,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "1157:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45487,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nameLocation": "1196:7:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45526,
                  "src": "1188:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 45486,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1188:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1116:93:45"
            },
            "returnParameters": {
              "id": 45491,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45490,
                  "mutability": "mutable",
                  "name": "liquidity",
                  "nameLocation": "1241:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45526,
                  "src": "1233:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 45489,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "1233:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1232:19:45"
            },
            "scope": 45794,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 45563,
            "nodeType": "FunctionDefinition",
            "src": "1999:383:45",
            "nodes": [],
            "body": {
              "id": 45562,
              "nodeType": "Block",
              "src": "2166:216:45",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    },
                    "id": 45540,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 45538,
                      "name": "sqrtRatioAX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45529,
                      "src": "2180:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 45539,
                      "name": "sqrtRatioBX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45531,
                      "src": "2196:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "src": "2180:29:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 45549,
                  "nodeType": "IfStatement",
                  "src": "2176:98:45",
                  "trueBody": {
                    "expression": {
                      "id": 45547,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "components": [
                          {
                            "id": 45541,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45529,
                            "src": "2212:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45542,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45531,
                            "src": "2227:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45543,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "TupleExpression",
                        "src": "2211:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "components": [
                          {
                            "id": 45544,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45531,
                            "src": "2245:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45545,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45529,
                            "src": "2260:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45546,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2244:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "src": "2211:63:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 45548,
                    "nodeType": "ExpressionStatement",
                    "src": "2211:63:45"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 45553,
                            "name": "amount1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45533,
                            "src": "2317:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "expression": {
                              "id": 45554,
                              "name": "FixedPoint96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44338,
                              "src": "2326:12:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$44338_$",
                                "typeString": "type(library FixedPoint96)"
                              }
                            },
                            "id": 45555,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "2339:3:45",
                            "memberName": "Q96",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 44337,
                            "src": "2326:16:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            },
                            "id": 45558,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 45556,
                              "name": "sqrtRatioBX96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45531,
                              "src": "2344:13:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "id": 45557,
                              "name": "sqrtRatioAX96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45529,
                              "src": "2360:13:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint160",
                                "typeString": "uint160"
                              }
                            },
                            "src": "2344:29:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "expression": {
                            "id": 45551,
                            "name": "FullMath",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 44519,
                            "src": "2301:8:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
                              "typeString": "type(library FullMath)"
                            }
                          },
                          "id": 45552,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberLocation": "2310:6:45",
                          "memberName": "mulDiv",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 44474,
                          "src": "2301:15:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 45559,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2301:73:45",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 45550,
                      "name": "toUint128",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45480,
                      "src": "2291:9:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$",
                        "typeString": "function (uint256) pure returns (uint128)"
                      }
                    },
                    "id": 45560,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2291:84:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "functionReturnParameters": 45537,
                  "id": 45561,
                  "nodeType": "Return",
                  "src": "2284:91:45"
                }
              ]
            },
            "documentation": {
              "id": 45527,
              "nodeType": "StructuredDocumentation",
              "src": "1566:428:45",
              "text": "@notice Computes the amount of liquidity received for a given amount of token1 and price range\n @dev Calculates amount1 / (sqrt(upper) - sqrt(lower)).\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param amount1 The amount1 being sent in\n @return liquidity The amount of returned liquidity"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityForAmount1",
            "nameLocation": "2008:22:45",
            "parameters": {
              "id": 45534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45529,
                  "mutability": "mutable",
                  "name": "sqrtRatioAX96",
                  "nameLocation": "2048:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45563,
                  "src": "2040:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45528,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "2040:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45531,
                  "mutability": "mutable",
                  "name": "sqrtRatioBX96",
                  "nameLocation": "2079:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45563,
                  "src": "2071:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45530,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "2071:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45533,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nameLocation": "2110:7:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45563,
                  "src": "2102:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 45532,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2102:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2030:93:45"
            },
            "returnParameters": {
              "id": 45537,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45536,
                  "mutability": "mutable",
                  "name": "liquidity",
                  "nameLocation": "2155:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45563,
                  "src": "2147:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 45535,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "2147:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2146:19:45"
            },
            "scope": 45794,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 45644,
            "nodeType": "FunctionDefinition",
            "src": "2982:901:45",
            "nodes": [],
            "body": {
              "id": 45643,
              "nodeType": "Block",
              "src": "3204:679:45",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    },
                    "id": 45581,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 45579,
                      "name": "sqrtRatioAX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45568,
                      "src": "3218:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 45580,
                      "name": "sqrtRatioBX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45570,
                      "src": "3234:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "src": "3218:29:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 45590,
                  "nodeType": "IfStatement",
                  "src": "3214:98:45",
                  "trueBody": {
                    "expression": {
                      "id": 45588,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "components": [
                          {
                            "id": 45582,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45568,
                            "src": "3250:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45583,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45570,
                            "src": "3265:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45584,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "TupleExpression",
                        "src": "3249:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "components": [
                          {
                            "id": 45585,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45570,
                            "src": "3283:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45586,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45568,
                            "src": "3298:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45587,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3282:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "src": "3249:63:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 45589,
                    "nodeType": "ExpressionStatement",
                    "src": "3249:63:45"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    },
                    "id": 45593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 45591,
                      "name": "sqrtRatioX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45566,
                      "src": "3327:12:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "id": 45592,
                      "name": "sqrtRatioAX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45568,
                      "src": "3343:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "src": "3327:29:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      },
                      "id": 45605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 45603,
                        "name": "sqrtRatioX96",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45566,
                        "src": "3466:12:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "id": 45604,
                        "name": "sqrtRatioBX96",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45570,
                        "src": "3481:13:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "src": "3466:28:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 45640,
                      "nodeType": "Block",
                      "src": "3779:98:45",
                      "statements": [
                        {
                          "expression": {
                            "id": 45638,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 45632,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45577,
                              "src": "3793:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 45634,
                                  "name": "sqrtRatioAX96",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45568,
                                  "src": "3828:13:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                {
                                  "id": 45635,
                                  "name": "sqrtRatioBX96",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45570,
                                  "src": "3843:13:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                {
                                  "id": 45636,
                                  "name": "amount1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45574,
                                  "src": "3858:7:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 45633,
                                "name": "getLiquidityForAmount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45563,
                                "src": "3805:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$",
                                  "typeString": "function (uint160,uint160,uint256) pure returns (uint128)"
                                }
                              },
                              "id": 45637,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3805:61:45",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "src": "3793:73:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "id": 45639,
                          "nodeType": "ExpressionStatement",
                          "src": "3793:73:45"
                        }
                      ]
                    },
                    "id": 45641,
                    "nodeType": "IfStatement",
                    "src": "3462:415:45",
                    "trueBody": {
                      "id": 45631,
                      "nodeType": "Block",
                      "src": "3496:277:45",
                      "statements": [
                        {
                          "assignments": [
                            45607
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 45607,
                              "mutability": "mutable",
                              "name": "liquidity0",
                              "nameLocation": "3518:10:45",
                              "nodeType": "VariableDeclaration",
                              "scope": 45631,
                              "src": "3510:18:45",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "typeName": {
                                "id": 45606,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "3510:7:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 45613,
                          "initialValue": {
                            "arguments": [
                              {
                                "id": 45609,
                                "name": "sqrtRatioX96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45566,
                                "src": "3554:12:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "id": 45610,
                                "name": "sqrtRatioBX96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45570,
                                "src": "3568:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "id": 45611,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45572,
                                "src": "3583:7:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 45608,
                              "name": "getLiquidityForAmount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45526,
                              "src": "3531:22:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$",
                                "typeString": "function (uint160,uint160,uint256) pure returns (uint128)"
                              }
                            },
                            "id": 45612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3531:60:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3510:81:45"
                        },
                        {
                          "assignments": [
                            45615
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 45615,
                              "mutability": "mutable",
                              "name": "liquidity1",
                              "nameLocation": "3613:10:45",
                              "nodeType": "VariableDeclaration",
                              "scope": 45631,
                              "src": "3605:18:45",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              },
                              "typeName": {
                                "id": 45614,
                                "name": "uint128",
                                "nodeType": "ElementaryTypeName",
                                "src": "3605:7:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "visibility": "internal"
                            }
                          ],
                          "id": 45621,
                          "initialValue": {
                            "arguments": [
                              {
                                "id": 45617,
                                "name": "sqrtRatioAX96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45568,
                                "src": "3649:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "id": 45618,
                                "name": "sqrtRatioX96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45566,
                                "src": "3664:12:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "id": 45619,
                                "name": "amount1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45574,
                                "src": "3678:7:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 45616,
                              "name": "getLiquidityForAmount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45563,
                              "src": "3626:22:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$",
                                "typeString": "function (uint160,uint160,uint256) pure returns (uint128)"
                              }
                            },
                            "id": 45620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3626:60:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "3605:81:45"
                        },
                        {
                          "expression": {
                            "id": 45629,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 45622,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45577,
                              "src": "3701:9:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                },
                                "id": 45625,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 45623,
                                  "name": "liquidity0",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45607,
                                  "src": "3713:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "id": 45624,
                                  "name": "liquidity1",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45615,
                                  "src": "3726:10:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                },
                                "src": "3713:23:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "id": 45627,
                                "name": "liquidity1",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45615,
                                "src": "3752:10:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "id": 45628,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "3713:49:45",
                              "trueExpression": {
                                "id": 45626,
                                "name": "liquidity0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45607,
                                "src": "3739:10:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint128",
                                "typeString": "uint128"
                              }
                            },
                            "src": "3701:61:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "id": 45630,
                          "nodeType": "ExpressionStatement",
                          "src": "3701:61:45"
                        }
                      ]
                    }
                  },
                  "id": 45642,
                  "nodeType": "IfStatement",
                  "src": "3323:554:45",
                  "trueBody": {
                    "id": 45602,
                    "nodeType": "Block",
                    "src": "3358:98:45",
                    "statements": [
                      {
                        "expression": {
                          "id": 45600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 45594,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45577,
                            "src": "3372:9:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 45596,
                                "name": "sqrtRatioAX96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45568,
                                "src": "3407:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "id": 45597,
                                "name": "sqrtRatioBX96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45570,
                                "src": "3422:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "id": 45598,
                                "name": "amount0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45572,
                                "src": "3437:7:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 45595,
                              "name": "getLiquidityForAmount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45526,
                              "src": "3384:22:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint256_$returns$_t_uint128_$",
                                "typeString": "function (uint160,uint160,uint256) pure returns (uint128)"
                              }
                            },
                            "id": 45599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3384:61:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint128",
                              "typeString": "uint128"
                            }
                          },
                          "src": "3372:73:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "id": 45601,
                        "nodeType": "ExpressionStatement",
                        "src": "3372:73:45"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 45564,
              "nodeType": "StructuredDocumentation",
              "src": "2388:589:45",
              "text": "@notice Computes the maximum amount of liquidity received for a given amount of token0, token1, the current\n pool prices and the prices at the tick boundaries\n @param sqrtRatioX96 A sqrt price representing the current pool prices\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param amount0 The amount of token0 being sent in\n @param amount1 The amount of token1 being sent in\n @return liquidity The maximum amount of liquidity received"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getLiquidityForAmounts",
            "nameLocation": "2991:22:45",
            "parameters": {
              "id": 45575,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45566,
                  "mutability": "mutable",
                  "name": "sqrtRatioX96",
                  "nameLocation": "3031:12:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45644,
                  "src": "3023:20:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45565,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "3023:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45568,
                  "mutability": "mutable",
                  "name": "sqrtRatioAX96",
                  "nameLocation": "3061:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45644,
                  "src": "3053:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45567,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "3053:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45570,
                  "mutability": "mutable",
                  "name": "sqrtRatioBX96",
                  "nameLocation": "3092:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45644,
                  "src": "3084:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45569,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "3084:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45572,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nameLocation": "3123:7:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45644,
                  "src": "3115:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 45571,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3115:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45574,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nameLocation": "3148:7:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45644,
                  "src": "3140:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 45573,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3140:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3013:148:45"
            },
            "returnParameters": {
              "id": 45578,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45577,
                  "mutability": "mutable",
                  "name": "liquidity",
                  "nameLocation": "3193:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45644,
                  "src": "3185:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 45576,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "3185:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3184:19:45"
            },
            "scope": 45794,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 45686,
            "nodeType": "FunctionDefinition",
            "src": "4241:498:45",
            "nodes": [],
            "body": {
              "id": 45685,
              "nodeType": "Block",
              "src": "4408:331:45",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    },
                    "id": 45658,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 45656,
                      "name": "sqrtRatioAX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45647,
                      "src": "4422:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 45657,
                      "name": "sqrtRatioBX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45649,
                      "src": "4438:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "src": "4422:29:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 45667,
                  "nodeType": "IfStatement",
                  "src": "4418:98:45",
                  "trueBody": {
                    "expression": {
                      "id": 45665,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "components": [
                          {
                            "id": 45659,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45647,
                            "src": "4454:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45660,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45649,
                            "src": "4469:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45661,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "TupleExpression",
                        "src": "4453:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "components": [
                          {
                            "id": 45662,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45649,
                            "src": "4487:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45663,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45647,
                            "src": "4502:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45664,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4486:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "src": "4453:63:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 45666,
                    "nodeType": "ExpressionStatement",
                    "src": "4453:63:45"
                  }
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 45683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "arguments": [
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 45676,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 45672,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45651,
                                "src": "4587:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "id": 45671,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4579:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 45670,
                                "name": "uint256",
                                "nodeType": "ElementaryTypeName",
                                "src": "4579:7:45",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 45673,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4579:18:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "expression": {
                              "id": 45674,
                              "name": "FixedPoint96",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 44338,
                              "src": "4601:12:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$44338_$",
                                "typeString": "type(library FixedPoint96)"
                              }
                            },
                            "id": 45675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberLocation": "4614:10:45",
                            "memberName": "RESOLUTION",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 44334,
                            "src": "4601:23:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "4579:45:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "commonType": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          },
                          "id": 45679,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 45677,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45649,
                            "src": "4642:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "id": 45678,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45647,
                            "src": "4658:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          "src": "4642:29:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        {
                          "id": 45680,
                          "name": "sqrtRatioBX96",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45649,
                          "src": "4689:13:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          },
                          {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        ],
                        "expression": {
                          "id": 45668,
                          "name": "FullMath",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44519,
                          "src": "4546:8:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
                            "typeString": "type(library FullMath)"
                          }
                        },
                        "id": 45669,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberLocation": "4555:6:45",
                        "memberName": "mulDiv",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 44474,
                        "src": "4546:15:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 45681,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "nameLocations": [],
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4546:170:45",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "id": 45682,
                      "name": "sqrtRatioAX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45647,
                      "src": "4719:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "src": "4546:186:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 45655,
                  "id": 45684,
                  "nodeType": "Return",
                  "src": "4527:205:45"
                }
              ]
            },
            "documentation": {
              "id": 45645,
              "nodeType": "StructuredDocumentation",
              "src": "3889:347:45",
              "text": "@notice Computes the amount of token0 for a given amount of liquidity and a price range\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param liquidity The liquidity being valued\n @return amount0 The amount of token0"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAmount0ForLiquidity",
            "nameLocation": "4250:22:45",
            "parameters": {
              "id": 45652,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45647,
                  "mutability": "mutable",
                  "name": "sqrtRatioAX96",
                  "nameLocation": "4290:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45686,
                  "src": "4282:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45646,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "4282:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45649,
                  "mutability": "mutable",
                  "name": "sqrtRatioBX96",
                  "nameLocation": "4321:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45686,
                  "src": "4313:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45648,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "4313:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45651,
                  "mutability": "mutable",
                  "name": "liquidity",
                  "nameLocation": "4352:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45686,
                  "src": "4344:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 45650,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "4344:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4272:95:45"
            },
            "returnParameters": {
              "id": 45655,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45654,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nameLocation": "4399:7:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45686,
                  "src": "4391:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 45653,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4391:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4390:17:45"
            },
            "scope": 45794,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 45721,
            "nodeType": "FunctionDefinition",
            "src": "5097:375:45",
            "nodes": [],
            "body": {
              "id": 45720,
              "nodeType": "Block",
              "src": "5264:208:45",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    },
                    "id": 45700,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 45698,
                      "name": "sqrtRatioAX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45689,
                      "src": "5278:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 45699,
                      "name": "sqrtRatioBX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45691,
                      "src": "5294:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "src": "5278:29:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 45709,
                  "nodeType": "IfStatement",
                  "src": "5274:98:45",
                  "trueBody": {
                    "expression": {
                      "id": 45707,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "components": [
                          {
                            "id": 45701,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45689,
                            "src": "5310:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45702,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45691,
                            "src": "5325:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45703,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "TupleExpression",
                        "src": "5309:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "components": [
                          {
                            "id": 45704,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45691,
                            "src": "5343:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45705,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45689,
                            "src": "5358:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45706,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "5342:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "src": "5309:63:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 45708,
                    "nodeType": "ExpressionStatement",
                    "src": "5309:63:45"
                  }
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 45712,
                        "name": "liquidity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45693,
                        "src": "5406:9:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        }
                      },
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        "id": 45715,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 45713,
                          "name": "sqrtRatioBX96",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45691,
                          "src": "5417:13:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "id": 45714,
                          "name": "sqrtRatioAX96",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 45689,
                          "src": "5433:13:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint160",
                            "typeString": "uint160"
                          }
                        },
                        "src": "5417:29:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      {
                        "expression": {
                          "id": 45716,
                          "name": "FixedPoint96",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 44338,
                          "src": "5448:12:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_FixedPoint96_$44338_$",
                            "typeString": "type(library FixedPoint96)"
                          }
                        },
                        "id": 45717,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberLocation": "5461:3:45",
                        "memberName": "Q96",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 44337,
                        "src": "5448:16:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint128",
                          "typeString": "uint128"
                        },
                        {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "id": 45710,
                        "name": "FullMath",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 44519,
                        "src": "5390:8:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_FullMath_$44519_$",
                          "typeString": "type(library FullMath)"
                        }
                      },
                      "id": 45711,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberLocation": "5399:6:45",
                      "memberName": "mulDiv",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 44474,
                      "src": "5390:15:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                      }
                    },
                    "id": 45718,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5390:75:45",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 45697,
                  "id": 45719,
                  "nodeType": "Return",
                  "src": "5383:82:45"
                }
              ]
            },
            "documentation": {
              "id": 45687,
              "nodeType": "StructuredDocumentation",
              "src": "4745:347:45",
              "text": "@notice Computes the amount of token1 for a given amount of liquidity and a price range\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param liquidity The liquidity being valued\n @return amount1 The amount of token1"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAmount1ForLiquidity",
            "nameLocation": "5106:22:45",
            "parameters": {
              "id": 45694,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45689,
                  "mutability": "mutable",
                  "name": "sqrtRatioAX96",
                  "nameLocation": "5146:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45721,
                  "src": "5138:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45688,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "5138:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45691,
                  "mutability": "mutable",
                  "name": "sqrtRatioBX96",
                  "nameLocation": "5177:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45721,
                  "src": "5169:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45690,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "5169:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45693,
                  "mutability": "mutable",
                  "name": "liquidity",
                  "nameLocation": "5208:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45721,
                  "src": "5200:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 45692,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "5200:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5128:95:45"
            },
            "returnParameters": {
              "id": 45697,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45696,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nameLocation": "5255:7:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45721,
                  "src": "5247:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 45695,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5247:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5246:17:45"
            },
            "scope": 45794,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "id": 45793,
            "nodeType": "FunctionDefinition",
            "src": "6013:799:45",
            "nodes": [],
            "body": {
              "id": 45792,
              "nodeType": "Block",
              "src": "6227:585:45",
              "nodes": [],
              "statements": [
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    },
                    "id": 45739,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 45737,
                      "name": "sqrtRatioAX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45726,
                      "src": "6241:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "id": 45738,
                      "name": "sqrtRatioBX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45728,
                      "src": "6257:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "src": "6241:29:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 45748,
                  "nodeType": "IfStatement",
                  "src": "6237:98:45",
                  "trueBody": {
                    "expression": {
                      "id": 45746,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftHandSide": {
                        "components": [
                          {
                            "id": 45740,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45726,
                            "src": "6273:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45741,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45728,
                            "src": "6288:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45742,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": true,
                        "nodeType": "TupleExpression",
                        "src": "6272:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "nodeType": "Assignment",
                      "operator": "=",
                      "rightHandSide": {
                        "components": [
                          {
                            "id": 45743,
                            "name": "sqrtRatioBX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45728,
                            "src": "6306:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          },
                          {
                            "id": 45744,
                            "name": "sqrtRatioAX96",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45726,
                            "src": "6321:13:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "id": 45745,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "6305:30:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint160_$_t_uint160_$",
                          "typeString": "tuple(uint160,uint160)"
                        }
                      },
                      "src": "6272:63:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_tuple$__$",
                        "typeString": "tuple()"
                      }
                    },
                    "id": 45747,
                    "nodeType": "ExpressionStatement",
                    "src": "6272:63:45"
                  }
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    },
                    "id": 45751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 45749,
                      "name": "sqrtRatioX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45724,
                      "src": "6350:12:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "id": 45750,
                      "name": "sqrtRatioAX96",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 45726,
                      "src": "6366:13:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      }
                    },
                    "src": "6350:29:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_uint160",
                        "typeString": "uint160"
                      },
                      "id": 45763,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 45761,
                        "name": "sqrtRatioX96",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45724,
                        "src": "6489:12:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "id": 45762,
                        "name": "sqrtRatioBX96",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 45728,
                        "src": "6504:13:45",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint160",
                          "typeString": "uint160"
                        }
                      },
                      "src": "6489:28:45",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "id": 45789,
                      "nodeType": "Block",
                      "src": "6708:98:45",
                      "statements": [
                        {
                          "expression": {
                            "id": 45787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 45781,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45735,
                              "src": "6722:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 45783,
                                  "name": "sqrtRatioAX96",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45726,
                                  "src": "6755:13:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                {
                                  "id": 45784,
                                  "name": "sqrtRatioBX96",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45728,
                                  "src": "6770:13:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                {
                                  "id": 45785,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45730,
                                  "src": "6785:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                ],
                                "id": 45782,
                                "name": "getAmount1ForLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45721,
                                "src": "6732:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$",
                                  "typeString": "function (uint160,uint160,uint128) pure returns (uint256)"
                                }
                              },
                              "id": 45786,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6732:63:45",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6722:73:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 45788,
                          "nodeType": "ExpressionStatement",
                          "src": "6722:73:45"
                        }
                      ]
                    },
                    "id": 45790,
                    "nodeType": "IfStatement",
                    "src": "6485:321:45",
                    "trueBody": {
                      "id": 45780,
                      "nodeType": "Block",
                      "src": "6519:183:45",
                      "statements": [
                        {
                          "expression": {
                            "id": 45770,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 45764,
                              "name": "amount0",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45733,
                              "src": "6533:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 45766,
                                  "name": "sqrtRatioX96",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45724,
                                  "src": "6566:12:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                {
                                  "id": 45767,
                                  "name": "sqrtRatioBX96",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45728,
                                  "src": "6580:13:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                {
                                  "id": 45768,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45730,
                                  "src": "6595:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                ],
                                "id": 45765,
                                "name": "getAmount0ForLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45686,
                                "src": "6543:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$",
                                  "typeString": "function (uint160,uint160,uint128) pure returns (uint256)"
                                }
                              },
                              "id": 45769,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6543:62:45",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6533:72:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 45771,
                          "nodeType": "ExpressionStatement",
                          "src": "6533:72:45"
                        },
                        {
                          "expression": {
                            "id": 45778,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "id": 45772,
                              "name": "amount1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45735,
                              "src": "6619:7:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "arguments": [
                                {
                                  "id": 45774,
                                  "name": "sqrtRatioAX96",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45726,
                                  "src": "6652:13:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                {
                                  "id": 45775,
                                  "name": "sqrtRatioX96",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45724,
                                  "src": "6667:12:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  }
                                },
                                {
                                  "id": 45776,
                                  "name": "liquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 45730,
                                  "src": "6681:9:45",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  {
                                    "typeIdentifier": "t_uint160",
                                    "typeString": "uint160"
                                  },
                                  {
                                    "typeIdentifier": "t_uint128",
                                    "typeString": "uint128"
                                  }
                                ],
                                "id": 45773,
                                "name": "getAmount1ForLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45721,
                                "src": "6629:22:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$",
                                  "typeString": "function (uint160,uint160,uint128) pure returns (uint256)"
                                }
                              },
                              "id": 45777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6629:62:45",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "6619:72:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 45779,
                          "nodeType": "ExpressionStatement",
                          "src": "6619:72:45"
                        }
                      ]
                    }
                  },
                  "id": 45791,
                  "nodeType": "IfStatement",
                  "src": "6346:460:45",
                  "trueBody": {
                    "id": 45760,
                    "nodeType": "Block",
                    "src": "6381:98:45",
                    "statements": [
                      {
                        "expression": {
                          "id": 45758,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 45752,
                            "name": "amount0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 45733,
                            "src": "6395:7:45",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "arguments": [
                              {
                                "id": 45754,
                                "name": "sqrtRatioAX96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45726,
                                "src": "6428:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "id": 45755,
                                "name": "sqrtRatioBX96",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45728,
                                "src": "6443:13:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                }
                              },
                              {
                                "id": 45756,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 45730,
                                "src": "6458:9:45",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint160",
                                  "typeString": "uint160"
                                },
                                {
                                  "typeIdentifier": "t_uint128",
                                  "typeString": "uint128"
                                }
                              ],
                              "id": 45753,
                              "name": "getAmount0ForLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 45686,
                              "src": "6405:22:45",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint160_$_t_uint160_$_t_uint128_$returns$_t_uint256_$",
                                "typeString": "function (uint160,uint160,uint128) pure returns (uint256)"
                              }
                            },
                            "id": 45757,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6405:63:45",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "6395:73:45",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 45759,
                        "nodeType": "ExpressionStatement",
                        "src": "6395:73:45"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 45722,
              "nodeType": "StructuredDocumentation",
              "src": "5478:530:45",
              "text": "@notice Computes the token0 and token1 value for a given amount of liquidity, the current\n pool prices and the prices at the tick boundaries\n @param sqrtRatioX96 A sqrt price representing the current pool prices\n @param sqrtRatioAX96 A sqrt price representing the first tick boundary\n @param sqrtRatioBX96 A sqrt price representing the second tick boundary\n @param liquidity The liquidity being valued\n @return amount0 The amount of token0\n @return amount1 The amount of token1"
            },
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAmountsForLiquidity",
            "nameLocation": "6022:22:45",
            "parameters": {
              "id": 45731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45724,
                  "mutability": "mutable",
                  "name": "sqrtRatioX96",
                  "nameLocation": "6062:12:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45793,
                  "src": "6054:20:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45723,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "6054:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45726,
                  "mutability": "mutable",
                  "name": "sqrtRatioAX96",
                  "nameLocation": "6092:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45793,
                  "src": "6084:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45725,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "6084:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45728,
                  "mutability": "mutable",
                  "name": "sqrtRatioBX96",
                  "nameLocation": "6123:13:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45793,
                  "src": "6115:21:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint160",
                    "typeString": "uint160"
                  },
                  "typeName": {
                    "id": 45727,
                    "name": "uint160",
                    "nodeType": "ElementaryTypeName",
                    "src": "6115:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint160",
                      "typeString": "uint160"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45730,
                  "mutability": "mutable",
                  "name": "liquidity",
                  "nameLocation": "6154:9:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45793,
                  "src": "6146:17:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  },
                  "typeName": {
                    "id": 45729,
                    "name": "uint128",
                    "nodeType": "ElementaryTypeName",
                    "src": "6146:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6044:125:45"
            },
            "returnParameters": {
              "id": 45736,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 45733,
                  "mutability": "mutable",
                  "name": "amount0",
                  "nameLocation": "6201:7:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45793,
                  "src": "6193:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 45732,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6193:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45735,
                  "mutability": "mutable",
                  "name": "amount1",
                  "nameLocation": "6218:7:45",
                  "nodeType": "VariableDeclaration",
                  "scope": 45793,
                  "src": "6210:15:45",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 45734,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6210:7:45",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6192:34:45"
            },
            "scope": 45794,
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "LiquidityAmounts",
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 45459,
          "nodeType": "StructuredDocumentation",
          "src": "196:131:45",
          "text": "@title Liquidity amount functions\n @notice Provides functions for computing liquidity amounts from token amounts and prices"
        },
        "fullyImplemented": true,
        "linearizedBaseContracts": [
          45794
        ],
        "name": "LiquidityAmounts",
        "nameLocation": "335:16:45",
        "scope": 45795,
        "usedErrors": [],
        "usedEvents": []
      }
    ],
    "license": "GPL-2.0-or-later"
  },
  "id": 45
}