{
  "abi": [],
  "allSourcePaths": {
    "54": "node_modules/@aave/protocol-v2/contracts/protocol/libraries/configuration/UserConfiguration.sol",
    "55": "node_modules/@aave/protocol-v2/contracts/protocol/libraries/helpers/Errors.sol"
  },
  "ast": {
    "absolutePath": "node_modules/@aave/protocol-v2/contracts/protocol/libraries/configuration/UserConfiguration.sol",
    "exportedSymbols": {
      "DataTypes": [
        22839
      ],
      "Errors": [
        27569
      ],
      "UserConfiguration": [
        24049
      ]
    },
    "id": 24050,
    "license": "agpl-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 23801,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "37:23:54"
      },
      {
        "absolutePath": "node_modules/@aave/protocol-v2/contracts/protocol/libraries/helpers/Errors.sol",
        "file": "../helpers/Errors.sol",
        "id": 23803,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 24050,
        "sourceUnit": 27570,
        "src": "62:45:54",
        "symbolAliases": [
          {
            "foreign": {
              "id": 23802,
              "name": "Errors",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "70:6:54",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@aave/protocol-v2/contracts/protocol/libraries/types/DataTypes.sol",
        "file": "../types/DataTypes.sol",
        "id": 23805,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 24050,
        "sourceUnit": 22840,
        "src": "108:49:54",
        "symbolAliases": [
          {
            "foreign": {
              "id": 23804,
              "name": "DataTypes",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "116:9:54",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 23806,
          "nodeType": "StructuredDocumentation",
          "src": "159:131:54",
          "text": " @title UserConfiguration library\n @author Aave\n @notice Implements the bitmap logic to handle the user configuration"
        },
        "fullyImplemented": true,
        "id": 24049,
        "linearizedBaseContracts": [
          24049
        ],
        "name": "UserConfiguration",
        "nameLocation": "299:17:54",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 23809,
            "mutability": "constant",
            "name": "BORROWING_MASK",
            "nameLocation": "347:14:54",
            "nodeType": "VariableDeclaration",
            "scope": 24049,
            "src": "321:113:54",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 23807,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "321:7:54",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "hexValue": "307835353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535",
              "id": 23808,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "368:66:54",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_38597363079105398474523661669562635951089994888546854679819194669304376546645_by_1",
                "typeString": "int_const 3859...(69 digits omitted)...6645"
              },
              "value": "0x5555555555555555555555555555555555555555555555555555555555555555"
            },
            "visibility": "internal"
          },
          {
            "body": {
              "id": 23859,
              "nodeType": "Block",
              "src": "848:186:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 23823,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23821,
                          "name": "reserveIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23815,
                          "src": "862:12:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "hexValue": "313238",
                          "id": 23822,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "877:3:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "862:18:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 23824,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27569,
                          "src": "882:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$27569_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 23825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "UL_INVALID_INDEX",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27548,
                        "src": "882:23:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 23820,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "854:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23826,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "854:52:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23827,
                  "nodeType": "ExpressionStatement",
                  "src": "854:52:54"
                },
                {
                  "expression": {
                    "id": 23857,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 23828,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23813,
                        "src": "912:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                        }
                      },
                      "id": 23830,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22833,
                      "src": "912:9:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 23856,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23841,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 23831,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23813,
                                "src": "931:4:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                }
                              },
                              "id": 23832,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22833,
                              "src": "931:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 23840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "~",
                              "prefix": true,
                              "src": "943:26:54",
                              "subExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 23838,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 23833,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "945:1:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 23836,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 23834,
                                            "name": "reserveIndex",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 23815,
                                            "src": "951:12:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "hexValue": "32",
                                            "id": 23835,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "966:1:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_2_by_1",
                                              "typeString": "int_const 2"
                                            },
                                            "value": "2"
                                          },
                                          "src": "951:16:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 23837,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "950:18:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "945:23:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 23839,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "944:25:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "931:38:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 23842,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "930:40:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "|",
                      "rightExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23854,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "condition": {
                                    "id": 23845,
                                    "name": "borrowing",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23817,
                                    "src": "988:9:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "hexValue": "30",
                                    "id": 23847,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1004:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "id": 23848,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "988:17:54",
                                  "trueExpression": {
                                    "hexValue": "31",
                                    "id": 23846,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1000:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "id": 23844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "980:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 23843,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "980:7:54",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 23849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "980:26:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 23852,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 23850,
                                    "name": "reserveIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23815,
                                    "src": "1011:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "hexValue": "32",
                                    "id": 23851,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1026:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "1011:16:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 23853,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1010:18:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "980:48:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 23855,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "979:50:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "930:99:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "912:117:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 23858,
                  "nodeType": "ExpressionStatement",
                  "src": "912:117:54"
                }
              ]
            },
            "documentation": {
              "id": 23810,
              "nodeType": "StructuredDocumentation",
              "src": "439:276:54",
              "text": " @dev Sets if the user is borrowing the reserve identified by reserveIndex\n @param self The configuration object\n @param reserveIndex The index of the reserve in the bitmap\n @param borrowing True if the user is borrowing the reserve, false otherwise*"
            },
            "id": 23860,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setBorrowing",
            "nameLocation": "727:12:54",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23818,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23813,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "784:4:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 23860,
                  "src": "745:43:54",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                    "typeString": "struct DataTypes.UserConfigurationMap"
                  },
                  "typeName": {
                    "id": 23812,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23811,
                      "name": "DataTypes.UserConfigurationMap",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22834,
                      "src": "745:30:54"
                    },
                    "referencedDeclaration": 22834,
                    "src": "745:30:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23815,
                  "mutability": "mutable",
                  "name": "reserveIndex",
                  "nameLocation": "802:12:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 23860,
                  "src": "794:20:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23814,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "794:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23817,
                  "mutability": "mutable",
                  "name": "borrowing",
                  "nameLocation": "825:9:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 23860,
                  "src": "820:14:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23816,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "820:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "739:99:54"
            },
            "returnParameters": {
              "id": 23819,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "848:0:54"
            },
            "scope": 24049,
            "src": "718:316:54",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 23914,
              "nodeType": "Block",
              "src": "1490:202:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 23874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23872,
                          "name": "reserveIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23866,
                          "src": "1504:12:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "hexValue": "313238",
                          "id": 23873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1519:3:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "1504:18:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 23875,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27569,
                          "src": "1524:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$27569_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 23876,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "UL_INVALID_INDEX",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27548,
                        "src": "1524:23:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 23871,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1496:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23877,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1496:52:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23878,
                  "nodeType": "ExpressionStatement",
                  "src": "1496:52:54"
                },
                {
                  "expression": {
                    "id": 23912,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 23879,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23864,
                        "src": "1554:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                        }
                      },
                      "id": 23881,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22833,
                      "src": "1554:9:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 23911,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23894,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 23882,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23864,
                                "src": "1573:4:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap storage pointer"
                                }
                              },
                              "id": 23883,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22833,
                              "src": "1573:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&",
                            "rightExpression": {
                              "id": 23893,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "~",
                              "prefix": true,
                              "src": "1585:30:54",
                              "subExpression": {
                                "components": [
                                  {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 23891,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "hexValue": "31",
                                      "id": 23884,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1587:1:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "<<",
                                    "rightExpression": {
                                      "components": [
                                        {
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 23889,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 23887,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 23885,
                                              "name": "reserveIndex",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 23866,
                                              "src": "1593:12:54",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "*",
                                            "rightExpression": {
                                              "hexValue": "32",
                                              "id": 23886,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "1608:1:54",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_2_by_1",
                                                "typeString": "int_const 2"
                                              },
                                              "value": "2"
                                            },
                                            "src": "1593:16:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "hexValue": "31",
                                            "id": 23888,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "1612:1:54",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "1593:20:54",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 23890,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "1592:22:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "1587:27:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 23892,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1586:29:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1573:42:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 23895,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1572:44:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "|",
                      "rightExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "condition": {
                                    "id": 23898,
                                    "name": "usingAsCollateral",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23868,
                                    "src": "1634:17:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseExpression": {
                                    "hexValue": "30",
                                    "id": 23900,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1658:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  },
                                  "id": 23901,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "Conditional",
                                  "src": "1634:25:54",
                                  "trueExpression": {
                                    "hexValue": "31",
                                    "id": 23899,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1654:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  }
                                ],
                                "id": 23897,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1626:7:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 23896,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1626:7:54",
                                  "typeDescriptions": {}
                                }
                              },
                              "id": 23902,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1626:34:54",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 23907,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 23905,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 23903,
                                      "name": "reserveIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23866,
                                      "src": "1665:12:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "hexValue": "32",
                                      "id": 23904,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1680:1:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "1665:16:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 23906,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "1684:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "1665:20:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 23908,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1664:22:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1626:60:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 23910,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1625:62:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "1572:115:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1554:133:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 23913,
                  "nodeType": "ExpressionStatement",
                  "src": "1554:133:54"
                }
              ]
            },
            "documentation": {
              "id": 23861,
              "nodeType": "StructuredDocumentation",
              "src": "1038:303:54",
              "text": " @dev Sets if the user is using as collateral the reserve identified by reserveIndex\n @param self The configuration object\n @param reserveIndex The index of the reserve in the bitmap\n @param usingAsCollateral True if the user is usin the reserve as collateral, false otherwise*"
            },
            "id": 23915,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setUsingAsCollateral",
            "nameLocation": "1353:20:54",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23869,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23864,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "1418:4:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 23915,
                  "src": "1379:43:54",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                    "typeString": "struct DataTypes.UserConfigurationMap"
                  },
                  "typeName": {
                    "id": 23863,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23862,
                      "name": "DataTypes.UserConfigurationMap",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22834,
                      "src": "1379:30:54"
                    },
                    "referencedDeclaration": 22834,
                    "src": "1379:30:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23866,
                  "mutability": "mutable",
                  "name": "reserveIndex",
                  "nameLocation": "1436:12:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 23915,
                  "src": "1428:20:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23865,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1428:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23868,
                  "mutability": "mutable",
                  "name": "usingAsCollateral",
                  "nameLocation": "1459:17:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 23915,
                  "src": "1454:22:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23867,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1454:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1373:107:54"
            },
            "returnParameters": {
              "id": 23870,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1490:0:54"
            },
            "scope": 24049,
            "src": "1344:348:54",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 23947,
              "nodeType": "Block",
              "src": "2160:118:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 23929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23927,
                          "name": "reserveIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23921,
                          "src": "2174:12:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "hexValue": "313238",
                          "id": 23928,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2189:3:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2174:18:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 23930,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27569,
                          "src": "2194:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$27569_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 23931,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "UL_INVALID_INDEX",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27548,
                        "src": "2194:23:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 23926,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2166:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2166:52:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23933,
                  "nodeType": "ExpressionStatement",
                  "src": "2166:52:54"
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 23945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 23943,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23940,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 23934,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23919,
                                "src": "2232:4:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_memory_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap memory"
                                }
                              },
                              "id": 23935,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22833,
                              "src": "2232:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 23938,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 23936,
                                    "name": "reserveIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23921,
                                    "src": "2246:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "hexValue": "32",
                                    "id": 23937,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2261:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "2246:16:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 23939,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2245:18:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2232:31:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 23941,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2231:33:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "hexValue": "33",
                        "id": 23942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2267:1:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_3_by_1",
                          "typeString": "int_const 3"
                        },
                        "value": "3"
                      },
                      "src": "2231:37:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 23944,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2272:1:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2231:42:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 23925,
                  "id": 23946,
                  "nodeType": "Return",
                  "src": "2224:49:54"
                }
              ]
            },
            "documentation": {
              "id": 23916,
              "nodeType": "StructuredDocumentation",
              "src": "1696:314:54",
              "text": " @dev Used to validate if a user has been using the reserve for borrowing or as collateral\n @param self The configuration object\n @param reserveIndex The index of the reserve in the bitmap\n @return True if the user has been using a reserve for borrowing or as collateral, false otherwise*"
            },
            "id": 23948,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isUsingAsCollateralOrBorrowing",
            "nameLocation": "2022:30:54",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23922,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23919,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "2096:4:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 23948,
                  "src": "2058:42:54",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_memory_ptr",
                    "typeString": "struct DataTypes.UserConfigurationMap"
                  },
                  "typeName": {
                    "id": 23918,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23917,
                      "name": "DataTypes.UserConfigurationMap",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22834,
                      "src": "2058:30:54"
                    },
                    "referencedDeclaration": 22834,
                    "src": "2058:30:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23921,
                  "mutability": "mutable",
                  "name": "reserveIndex",
                  "nameLocation": "2114:12:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 23948,
                  "src": "2106:20:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23920,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2106:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2052:78:54"
            },
            "returnParameters": {
              "id": 23925,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23924,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23948,
                  "src": "2154:4:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23923,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2154:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2153:6:54"
            },
            "scope": 24049,
            "src": "2013:265:54",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 23980,
              "nodeType": "Block",
              "src": "2695:118:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 23962,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23960,
                          "name": "reserveIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23954,
                          "src": "2709:12:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "hexValue": "313238",
                          "id": 23961,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2724:3:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "2709:18:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 23963,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27569,
                          "src": "2729:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$27569_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 23964,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "UL_INVALID_INDEX",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27548,
                        "src": "2729:23:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 23959,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2701:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23965,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2701:52:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23966,
                  "nodeType": "ExpressionStatement",
                  "src": "2701:52:54"
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 23978,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 23976,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 23973,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 23967,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23952,
                                "src": "2767:4:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_memory_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap memory"
                                }
                              },
                              "id": 23968,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22833,
                              "src": "2767:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 23971,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 23969,
                                    "name": "reserveIndex",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 23954,
                                    "src": "2781:12:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "*",
                                  "rightExpression": {
                                    "hexValue": "32",
                                    "id": 23970,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2796:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "2781:16:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 23972,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2780:18:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2767:31:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 23974,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2766:33:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "hexValue": "31",
                        "id": 23975,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2802:1:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "2766:37:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 23977,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2807:1:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "2766:42:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 23958,
                  "id": 23979,
                  "nodeType": "Return",
                  "src": "2759:49:54"
                }
              ]
            },
            "documentation": {
              "id": 23949,
              "nodeType": "StructuredDocumentation",
              "src": "2282:280:54",
              "text": " @dev Used to validate if a user has been using the reserve for borrowing\n @param self The configuration object\n @param reserveIndex The index of the reserve in the bitmap\n @return True if the user has been using a reserve for borrowing, false otherwise*"
            },
            "id": 23981,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isBorrowing",
            "nameLocation": "2574:11:54",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23955,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23952,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "2624:4:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 23981,
                  "src": "2586:42:54",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_memory_ptr",
                    "typeString": "struct DataTypes.UserConfigurationMap"
                  },
                  "typeName": {
                    "id": 23951,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23950,
                      "name": "DataTypes.UserConfigurationMap",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22834,
                      "src": "2586:30:54"
                    },
                    "referencedDeclaration": 22834,
                    "src": "2586:30:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23954,
                  "mutability": "mutable",
                  "name": "reserveIndex",
                  "nameLocation": "2638:12:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 23981,
                  "src": "2630:20:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23953,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2630:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2585:66:54"
            },
            "returnParameters": {
              "id": 23958,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23957,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23981,
                  "src": "2687:4:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23956,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2687:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2686:6:54"
            },
            "scope": 24049,
            "src": "2565:248:54",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24015,
              "nodeType": "Block",
              "src": "3238:122:54",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 23995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 23993,
                          "name": "reserveIndex",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23987,
                          "src": "3252:12:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "hexValue": "313238",
                          "id": 23994,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3267:3:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_128_by_1",
                            "typeString": "int_const 128"
                          },
                          "value": "128"
                        },
                        "src": "3252:18:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "expression": {
                          "id": 23996,
                          "name": "Errors",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 27569,
                          "src": "3272:6:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_Errors_$27569_$",
                            "typeString": "type(library Errors)"
                          }
                        },
                        "id": 23997,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "UL_INVALID_INDEX",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 27548,
                        "src": "3272:23:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 23992,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "3244:7:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 23998,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3244:52:54",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 23999,
                  "nodeType": "ExpressionStatement",
                  "src": "3244:52:54"
                },
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 24013,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 24011,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "components": [
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 24008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "expression": {
                                "id": 24000,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 23985,
                                "src": "3310:4:54",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_memory_ptr",
                                  "typeString": "struct DataTypes.UserConfigurationMap memory"
                                }
                              },
                              "id": 24001,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "data",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 22833,
                              "src": "3310:9:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "components": [
                                {
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 24006,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 24004,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 24002,
                                      "name": "reserveIndex",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 23987,
                                      "src": "3324:12:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "hexValue": "32",
                                      "id": 24003,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3339:1:54",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "src": "3324:16:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "hexValue": "31",
                                    "id": 24005,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3343:1:54",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "3324:20:54",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 24007,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "3323:22:54",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3310:35:54",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "id": 24009,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "3309:37:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "hexValue": "31",
                        "id": 24010,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3349:1:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "3309:41:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 24012,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3354:1:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3309:46:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 23991,
                  "id": 24014,
                  "nodeType": "Return",
                  "src": "3302:53:54"
                }
              ]
            },
            "documentation": {
              "id": 23982,
              "nodeType": "StructuredDocumentation",
              "src": "2817:280:54",
              "text": " @dev Used to validate if a user has been using the reserve as collateral\n @param self The configuration object\n @param reserveIndex The index of the reserve in the bitmap\n @return True if the user has been using a reserve as collateral, false otherwise*"
            },
            "id": 24016,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isUsingAsCollateral",
            "nameLocation": "3109:19:54",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23988,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23985,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "3167:4:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 24016,
                  "src": "3129:42:54",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_memory_ptr",
                    "typeString": "struct DataTypes.UserConfigurationMap"
                  },
                  "typeName": {
                    "id": 23984,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23983,
                      "name": "DataTypes.UserConfigurationMap",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22834,
                      "src": "3129:30:54"
                    },
                    "referencedDeclaration": 22834,
                    "src": "3129:30:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23987,
                  "mutability": "mutable",
                  "name": "reserveIndex",
                  "nameLocation": "3181:12:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 24016,
                  "src": "3173:20:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23986,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3173:7:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3128:66:54"
            },
            "returnParameters": {
              "id": 23991,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23990,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24016,
                  "src": "3230:4:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23989,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3230:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3229:6:54"
            },
            "scope": 24049,
            "src": "3100:260:54",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24032,
              "nodeType": "Block",
              "src": "3667:49:54",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 24030,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 24028,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "expression": {
                          "id": 24025,
                          "name": "self",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 24020,
                          "src": "3680:4:54",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_memory_ptr",
                            "typeString": "struct DataTypes.UserConfigurationMap memory"
                          }
                        },
                        "id": 24026,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "data",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 22833,
                        "src": "3680:9:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&",
                      "rightExpression": {
                        "id": 24027,
                        "name": "BORROWING_MASK",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23809,
                        "src": "3692:14:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3680:26:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 24029,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3710:1:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3680:31:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 24024,
                  "id": 24031,
                  "nodeType": "Return",
                  "src": "3673:38:54"
                }
              ]
            },
            "documentation": {
              "id": 24017,
              "nodeType": "StructuredDocumentation",
              "src": "3364:203:54",
              "text": " @dev Used to validate if a user has been borrowing from any reserve\n @param self The configuration object\n @return True if the user has been borrowing any reserve, false otherwise*"
            },
            "id": 24033,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isBorrowingAny",
            "nameLocation": "3579:14:54",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24020,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "3632:4:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 24033,
                  "src": "3594:42:54",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_memory_ptr",
                    "typeString": "struct DataTypes.UserConfigurationMap"
                  },
                  "typeName": {
                    "id": 24019,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24018,
                      "name": "DataTypes.UserConfigurationMap",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22834,
                      "src": "3594:30:54"
                    },
                    "referencedDeclaration": 22834,
                    "src": "3594:30:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3593:44:54"
            },
            "returnParameters": {
              "id": 24024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24023,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24033,
                  "src": "3661:4:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24022,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3661:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3660:6:54"
            },
            "scope": 24049,
            "src": "3570:146:54",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 24047,
              "nodeType": "Block",
              "src": "4011:32:54",
              "statements": [
                {
                  "expression": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 24045,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "expression": {
                        "id": 24042,
                        "name": "self",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 24037,
                        "src": "4024:4:54",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_memory_ptr",
                          "typeString": "struct DataTypes.UserConfigurationMap memory"
                        }
                      },
                      "id": 24043,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "data",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 22833,
                      "src": "4024:9:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "30",
                      "id": 24044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "4037:1:54",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "4024:14:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 24041,
                  "id": 24046,
                  "nodeType": "Return",
                  "src": "4017:21:54"
                }
              ]
            },
            "documentation": {
              "id": 24034,
              "nodeType": "StructuredDocumentation",
              "src": "3720:198:54",
              "text": " @dev Used to validate if a user has not been using any reserve\n @param self The configuration object\n @return True if the user has been borrowing any reserve, false otherwise*"
            },
            "id": 24048,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEmpty",
            "nameLocation": "3930:7:54",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 24038,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24037,
                  "mutability": "mutable",
                  "name": "self",
                  "nameLocation": "3976:4:54",
                  "nodeType": "VariableDeclaration",
                  "scope": 24048,
                  "src": "3938:42:54",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_memory_ptr",
                    "typeString": "struct DataTypes.UserConfigurationMap"
                  },
                  "typeName": {
                    "id": 24036,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 24035,
                      "name": "DataTypes.UserConfigurationMap",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22834,
                      "src": "3938:30:54"
                    },
                    "referencedDeclaration": 22834,
                    "src": "3938:30:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_UserConfigurationMap_$22834_storage_ptr",
                      "typeString": "struct DataTypes.UserConfigurationMap"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3937:44:54"
            },
            "returnParameters": {
              "id": 24041,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 24040,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 24048,
                  "src": "4005:4:54",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 24039,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4005:4:54",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4004:6:54"
            },
            "scope": 24049,
            "src": "3921:122:54",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 24050,
        "src": "291:3754:54",
        "usedErrors": []
      }
    ],
    "src": "37:4009:54"
  },
  "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069b15fb3032a6d5e16a8d5ef7db5f8aeeea7c48c9fe6f7c8a71cf42632f73f0664736f6c63430008060033",
  "bytecodeSha1": "1ce946f6a4eaa185320328620ccf999b9e86db7c",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "UserConfiguration",
  "coverageMap": {
    "branches": {
      "54": {},
      "55": {}
    },
    "statements": {
      "54": {},
      "55": {}
    }
  },
  "dependencies": [
    "Errors"
  ],
  "deployedBytecode": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122069b15fb3032a6d5e16a8d5ef7db5f8aeeea7c48c9fe6f7c8a71cf42632f73f0664736f6c63430008060033",
  "deployedSourceMap": "291:3754:54:-:0;;;;;;;;",
  "language": "Solidity",
  "natspec": {
    "author": "Aave",
    "kind": "dev",
    "methods": {},
    "notice": "Implements the bitmap logic to handle the user configuration",
    "title": "UserConfiguration library",
    "version": 1
  },
  "offset": [
    291,
    4045
  ],
  "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH10 0xB15FB3032A6D5E16A8D5 0xEF PUSH30 0xB5F8AEEEA7C48C9FE6F7C8A71CF42632F73F0664736F6C63430008060033 ",
  "pcMap": {
    "0": {
      "offset": [
        291,
        4045
      ],
      "op": "PUSH20",
      "path": "54",
      "value": "0x0"
    },
    "21": {
      "fn": null,
      "offset": [
        291,
        4045
      ],
      "op": "ADDRESS",
      "path": "54"
    },
    "22": {
      "fn": null,
      "offset": [
        291,
        4045
      ],
      "op": "EQ",
      "path": "54"
    },
    "23": {
      "fn": null,
      "offset": [
        291,
        4045
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x80"
    },
    "25": {
      "fn": null,
      "offset": [
        291,
        4045
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x40"
    },
    "27": {
      "fn": null,
      "offset": [
        291,
        4045
      ],
      "op": "MSTORE",
      "path": "54"
    },
    "28": {
      "fn": null,
      "offset": [
        291,
        4045
      ],
      "op": "PUSH1",
      "path": "54",
      "value": "0x0"
    },
    "30": {
      "fn": null,
      "offset": [
        291,
        4045
      ],
      "op": "DUP1",
      "path": "54"
    },
    "31": {
      "fn": null,
      "offset": [
        291,
        4045
      ],
      "op": "REVERT",
      "path": "54"
    }
  },
  "sha1": "4c9d7a1422f08c9a5914e686e31e715fe62cd62f",
  "source": "// SPDX-License-Identifier: agpl-3.0\npragma solidity ^0.8.0;\n\nimport {Errors} from '../helpers/Errors.sol';\nimport {DataTypes} from '../types/DataTypes.sol';\n\n/**\n * @title UserConfiguration library\n * @author Aave\n * @notice Implements the bitmap logic to handle the user configuration\n */\nlibrary UserConfiguration {\n  uint256 internal constant BORROWING_MASK =\n    0x5555555555555555555555555555555555555555555555555555555555555555;\n\n  /**\n   * @dev Sets if the user is borrowing the reserve identified by reserveIndex\n   * @param self The configuration object\n   * @param reserveIndex The index of the reserve in the bitmap\n   * @param borrowing True if the user is borrowing the reserve, false otherwise\n   **/\n  function setBorrowing(\n    DataTypes.UserConfigurationMap storage self,\n    uint256 reserveIndex,\n    bool borrowing\n  ) internal {\n    require(reserveIndex < 128, Errors.UL_INVALID_INDEX);\n    self.data =\n      (self.data & ~(1 << (reserveIndex * 2))) |\n      (uint256(borrowing ? 1 : 0) << (reserveIndex * 2));\n  }\n\n  /**\n   * @dev Sets if the user is using as collateral the reserve identified by reserveIndex\n   * @param self The configuration object\n   * @param reserveIndex The index of the reserve in the bitmap\n   * @param usingAsCollateral True if the user is usin the reserve as collateral, false otherwise\n   **/\n  function setUsingAsCollateral(\n    DataTypes.UserConfigurationMap storage self,\n    uint256 reserveIndex,\n    bool usingAsCollateral\n  ) internal {\n    require(reserveIndex < 128, Errors.UL_INVALID_INDEX);\n    self.data =\n      (self.data & ~(1 << (reserveIndex * 2 + 1))) |\n      (uint256(usingAsCollateral ? 1 : 0) << (reserveIndex * 2 + 1));\n  }\n\n  /**\n   * @dev Used to validate if a user has been using the reserve for borrowing or as collateral\n   * @param self The configuration object\n   * @param reserveIndex The index of the reserve in the bitmap\n   * @return True if the user has been using a reserve for borrowing or as collateral, false otherwise\n   **/\n  function isUsingAsCollateralOrBorrowing(\n    DataTypes.UserConfigurationMap memory self,\n    uint256 reserveIndex\n  ) internal pure returns (bool) {\n    require(reserveIndex < 128, Errors.UL_INVALID_INDEX);\n    return (self.data >> (reserveIndex * 2)) & 3 != 0;\n  }\n\n  /**\n   * @dev Used to validate if a user has been using the reserve for borrowing\n   * @param self The configuration object\n   * @param reserveIndex The index of the reserve in the bitmap\n   * @return True if the user has been using a reserve for borrowing, false otherwise\n   **/\n  function isBorrowing(DataTypes.UserConfigurationMap memory self, uint256 reserveIndex)\n    internal\n    pure\n    returns (bool)\n  {\n    require(reserveIndex < 128, Errors.UL_INVALID_INDEX);\n    return (self.data >> (reserveIndex * 2)) & 1 != 0;\n  }\n\n  /**\n   * @dev Used to validate if a user has been using the reserve as collateral\n   * @param self The configuration object\n   * @param reserveIndex The index of the reserve in the bitmap\n   * @return True if the user has been using a reserve as collateral, false otherwise\n   **/\n  function isUsingAsCollateral(DataTypes.UserConfigurationMap memory self, uint256 reserveIndex)\n    internal\n    pure\n    returns (bool)\n  {\n    require(reserveIndex < 128, Errors.UL_INVALID_INDEX);\n    return (self.data >> (reserveIndex * 2 + 1)) & 1 != 0;\n  }\n\n  /**\n   * @dev Used to validate if a user has been borrowing from any reserve\n   * @param self The configuration object\n   * @return True if the user has been borrowing any reserve, false otherwise\n   **/\n  function isBorrowingAny(DataTypes.UserConfigurationMap memory self) internal pure returns (bool) {\n    return self.data & BORROWING_MASK != 0;\n  }\n\n  /**\n   * @dev Used to validate if a user has not been using any reserve\n   * @param self The configuration object\n   * @return True if the user has been borrowing any reserve, false otherwise\n   **/\n  function isEmpty(DataTypes.UserConfigurationMap memory self) internal pure returns (bool) {\n    return self.data == 0;\n  }\n}\n",
  "sourceMap": "291:3754:54:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;291:3754:54;;;;;;;;;;;;;;;;;",
  "sourcePath": "node_modules/@aave/protocol-v2/contracts/protocol/libraries/configuration/UserConfiguration.sol",
  "type": "library"
}