{
  "abi": [],
  "allSourcePaths": {
    "25": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/Strings.sol",
    "30": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/math/Math.sol"
  },
  "ast": {
    "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/Strings.sol",
    "exportedSymbols": {
      "Math": [
        13636
      ],
      "Strings": [
        17301
      ]
    },
    "id": 17302,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 17128,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "101:23:25"
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/math/Math.sol",
        "file": "./math/Math.sol",
        "id": 17129,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 17302,
        "sourceUnit": 13637,
        "src": "126:25:25",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "Strings",
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": {
          "id": 17130,
          "nodeType": "StructuredDocumentation",
          "src": "153:34:25",
          "text": " @dev String operations."
        },
        "fullyImplemented": true,
        "id": 17301,
        "linearizedBaseContracts": [
          17301
        ],
        "name": "Strings",
        "nameLocation": "196:7:25",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": true,
            "id": 17133,
            "mutability": "constant",
            "name": "_SYMBOLS",
            "nameLocation": "235:8:25",
            "nodeType": "VariableDeclaration",
            "scope": 17301,
            "src": "210:54:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes16",
              "typeString": "bytes16"
            },
            "typeName": {
              "id": 17131,
              "name": "bytes16",
              "nodeType": "ElementaryTypeName",
              "src": "210:7:25",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes16",
                "typeString": "bytes16"
              }
            },
            "value": {
              "hexValue": "30313233343536373839616263646566",
              "id": 17132,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "string",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "246:18:25",
              "typeDescriptions": {
                "typeIdentifier": "t_stringliteral_cb29997ed99ead0db59ce4d12b7d3723198c827273e5796737c926d78019c39f",
                "typeString": "literal_string \"0123456789abcdef\""
              },
              "value": "0123456789abcdef"
            },
            "visibility": "private"
          },
          {
            "constant": true,
            "id": 17136,
            "mutability": "constant",
            "name": "_ADDRESS_LENGTH",
            "nameLocation": "293:15:25",
            "nodeType": "VariableDeclaration",
            "scope": 17301,
            "src": "270:43:25",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 17134,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "270:5:25",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": {
              "hexValue": "3230",
              "id": 17135,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "311:2:25",
              "typeDescriptions": {
                "typeIdentifier": "t_rational_20_by_1",
                "typeString": "int_const 20"
              },
              "value": "20"
            },
            "visibility": "private"
          },
          {
            "body": {
              "id": 17183,
              "nodeType": "Block",
              "src": "486:625:25",
              "statements": [
                {
                  "id": 17182,
                  "nodeType": "UncheckedBlock",
                  "src": "496:609:25",
                  "statements": [
                    {
                      "assignments": [
                        17145
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17145,
                          "mutability": "mutable",
                          "name": "length",
                          "nameLocation": "528:6:25",
                          "nodeType": "VariableDeclaration",
                          "scope": 17182,
                          "src": "520:14:25",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17144,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "520:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 17152,
                      "initialValue": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "id": 17148,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17139,
                              "src": "548:5:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "id": 17146,
                              "name": "Math",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 13636,
                              "src": "537:4:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_Math_$13636_$",
                                "typeString": "type(library Math)"
                              }
                            },
                            "id": 17147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberLocation": "542:5:25",
                            "memberName": "log10",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 13473,
                            "src": "537:10:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 17149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "nameLocations": [],
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "537:17:25",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "hexValue": "31",
                          "id": 17150,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "557:1:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "537:21:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "520:38:25"
                    },
                    {
                      "assignments": [
                        17154
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17154,
                          "mutability": "mutable",
                          "name": "buffer",
                          "nameLocation": "586:6:25",
                          "nodeType": "VariableDeclaration",
                          "scope": 17182,
                          "src": "572:20:25",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string"
                          },
                          "typeName": {
                            "id": 17153,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "572:6:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 17159,
                      "initialValue": {
                        "arguments": [
                          {
                            "id": 17157,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17145,
                            "src": "606:6:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 17156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "NewExpression",
                          "src": "595:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_string_memory_ptr_$",
                            "typeString": "function (uint256) pure returns (string memory)"
                          },
                          "typeName": {
                            "id": 17155,
                            "name": "string",
                            "nodeType": "ElementaryTypeName",
                            "src": "599:6:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_storage_ptr",
                              "typeString": "string"
                            }
                          }
                        },
                        "id": 17158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "595:18:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "572:41:25"
                    },
                    {
                      "assignments": [
                        17161
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 17161,
                          "mutability": "mutable",
                          "name": "ptr",
                          "nameLocation": "635:3:25",
                          "nodeType": "VariableDeclaration",
                          "scope": 17182,
                          "src": "627:11:25",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 17160,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "627:7:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "visibility": "internal"
                        }
                      ],
                      "id": 17162,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "627:11:25"
                    },
                    {
                      "AST": {
                        "nodeType": "YulBlock",
                        "src": "708:67:25",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "726:35:25",
                            "value": {
                              "arguments": [
                                {
                                  "name": "buffer",
                                  "nodeType": "YulIdentifier",
                                  "src": "737:6:25"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "749:2:25",
                                      "type": "",
                                      "value": "32"
                                    },
                                    {
                                      "name": "length",
                                      "nodeType": "YulIdentifier",
                                      "src": "753:6:25"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "745:3:25"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "745:15:25"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "733:3:25"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "733:28:25"
                            },
                            "variableNames": [
                              {
                                "name": "ptr",
                                "nodeType": "YulIdentifier",
                                "src": "726:3:25"
                              }
                            ]
                          }
                        ]
                      },
                      "documentation": "@solidity memory-safe-assembly",
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 17154,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "737:6:25",
                          "valueSize": 1
                        },
                        {
                          "declaration": 17145,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "753:6:25",
                          "valueSize": 1
                        },
                        {
                          "declaration": 17161,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "726:3:25",
                          "valueSize": 1
                        }
                      ],
                      "id": 17163,
                      "nodeType": "InlineAssembly",
                      "src": "699:76:25"
                    },
                    {
                      "body": {
                        "id": 17178,
                        "nodeType": "Block",
                        "src": "801:267:25",
                        "statements": [
                          {
                            "expression": {
                              "id": 17166,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "--",
                              "prefix": false,
                              "src": "819:5:25",
                              "subExpression": {
                                "id": 17165,
                                "name": "ptr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17161,
                                "src": "819:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17167,
                            "nodeType": "ExpressionStatement",
                            "src": "819:5:25"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "902:84:25",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "name": "ptr",
                                        "nodeType": "YulIdentifier",
                                        "src": "932:3:25"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "arguments": [
                                              {
                                                "name": "value",
                                                "nodeType": "YulIdentifier",
                                                "src": "946:5:25"
                                              },
                                              {
                                                "kind": "number",
                                                "nodeType": "YulLiteral",
                                                "src": "953:2:25",
                                                "type": "",
                                                "value": "10"
                                              }
                                            ],
                                            "functionName": {
                                              "name": "mod",
                                              "nodeType": "YulIdentifier",
                                              "src": "942:3:25"
                                            },
                                            "nodeType": "YulFunctionCall",
                                            "src": "942:14:25"
                                          },
                                          {
                                            "name": "_SYMBOLS",
                                            "nodeType": "YulIdentifier",
                                            "src": "958:8:25"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "byte",
                                          "nodeType": "YulIdentifier",
                                          "src": "937:4:25"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "937:30:25"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore8",
                                      "nodeType": "YulIdentifier",
                                      "src": "924:7:25"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "924:44:25"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "924:44:25"
                                }
                              ]
                            },
                            "documentation": "@solidity memory-safe-assembly",
                            "evmVersion": "istanbul",
                            "externalReferences": [
                              {
                                "declaration": 17133,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "958:8:25",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17161,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "932:3:25",
                                "valueSize": 1
                              },
                              {
                                "declaration": 17139,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "946:5:25",
                                "valueSize": 1
                              }
                            ],
                            "id": 17168,
                            "nodeType": "InlineAssembly",
                            "src": "893:93:25"
                          },
                          {
                            "expression": {
                              "id": 17171,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "id": 17169,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17139,
                                "src": "1003:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "/=",
                              "rightHandSide": {
                                "hexValue": "3130",
                                "id": 17170,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1012:2:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_10_by_1",
                                  "typeString": "int_const 10"
                                },
                                "value": "10"
                              },
                              "src": "1003:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 17172,
                            "nodeType": "ExpressionStatement",
                            "src": "1003:11:25"
                          },
                          {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17175,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17173,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17139,
                                "src": "1036:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "30",
                                "id": 17174,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1045:1:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1036:10:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 17177,
                            "nodeType": "IfStatement",
                            "src": "1032:21:25",
                            "trueBody": {
                              "id": 17176,
                              "nodeType": "Break",
                              "src": "1048:5:25"
                            }
                          }
                        ]
                      },
                      "condition": {
                        "hexValue": "74727565",
                        "id": 17164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "795:4:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "id": 17179,
                      "nodeType": "WhileStatement",
                      "src": "788:280:25"
                    },
                    {
                      "expression": {
                        "id": 17180,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17154,
                        "src": "1088:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 17143,
                      "id": 17181,
                      "nodeType": "Return",
                      "src": "1081:13:25"
                    }
                  ]
                }
              ]
            },
            "documentation": {
              "id": 17137,
              "nodeType": "StructuredDocumentation",
              "src": "320:90:25",
              "text": " @dev Converts a `uint256` to its ASCII `string` decimal representation."
            },
            "id": 17184,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toString",
            "nameLocation": "424:8:25",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17140,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17139,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "441:5:25",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "433:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17138,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "433:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "432:15:25"
            },
            "returnParameters": {
              "id": 17143,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17142,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17184,
                  "src": "471:13:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17141,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "471:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "470:15:25"
            },
            "scope": 17301,
            "src": "415:696:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17203,
              "nodeType": "Block",
              "src": "1290:100:25",
              "statements": [
                {
                  "id": 17202,
                  "nodeType": "UncheckedBlock",
                  "src": "1300:84:25",
                  "statements": [
                    {
                      "expression": {
                        "arguments": [
                          {
                            "id": 17193,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17187,
                            "src": "1343:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 17199,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "arguments": [
                                {
                                  "id": 17196,
                                  "name": "value",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 17187,
                                  "src": "1362:5:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "id": 17194,
                                  "name": "Math",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 13636,
                                  "src": "1350:4:25",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_Math_$13636_$",
                                    "typeString": "type(library Math)"
                                  }
                                },
                                "id": 17195,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberLocation": "1355:6:25",
                                "memberName": "log256",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 13596,
                                "src": "1350:11:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256) pure returns (uint256)"
                                }
                              },
                              "id": 17197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "nameLocations": [],
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1350:18:25",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "+",
                            "rightExpression": {
                              "hexValue": "31",
                              "id": 17198,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1371:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "1350:22:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 17192,
                          "name": "toHexString",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            17204,
                            17280,
                            17300
                          ],
                          "referencedDeclaration": 17280,
                          "src": "1331:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                            "typeString": "function (uint256,uint256) pure returns (string memory)"
                          }
                        },
                        "id": 17200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1331:42:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      "functionReturnParameters": 17191,
                      "id": 17201,
                      "nodeType": "Return",
                      "src": "1324:49:25"
                    }
                  ]
                }
              ]
            },
            "documentation": {
              "id": 17185,
              "nodeType": "StructuredDocumentation",
              "src": "1117:94:25",
              "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation."
            },
            "id": 17204,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toHexString",
            "nameLocation": "1225:11:25",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17187,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "1245:5:25",
                  "nodeType": "VariableDeclaration",
                  "scope": 17204,
                  "src": "1237:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17186,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1237:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1236:15:25"
            },
            "returnParameters": {
              "id": 17191,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17190,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17204,
                  "src": "1275:13:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17189,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1275:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1274:15:25"
            },
            "scope": 17301,
            "src": "1216:174:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17279,
              "nodeType": "Block",
              "src": "1603:347:25",
              "statements": [
                {
                  "assignments": [
                    17215
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 17215,
                      "mutability": "mutable",
                      "name": "buffer",
                      "nameLocation": "1626:6:25",
                      "nodeType": "VariableDeclaration",
                      "scope": 17279,
                      "src": "1613:19:25",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 17214,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1613:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 17224,
                  "initialValue": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 17220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "hexValue": "32",
                            "id": 17218,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1645:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "id": 17219,
                            "name": "length",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17209,
                            "src": "1649:6:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1645:10:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "+",
                        "rightExpression": {
                          "hexValue": "32",
                          "id": 17221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1658:1:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "src": "1645:14:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 17217,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "1635:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (bytes memory)"
                      },
                      "typeName": {
                        "id": 17216,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1639:5:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      }
                    },
                    "id": 17223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1635:25:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1613:47:25"
                },
                {
                  "expression": {
                    "id": 17229,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 17225,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17215,
                        "src": "1670:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 17227,
                      "indexExpression": {
                        "hexValue": "30",
                        "id": 17226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1677:1:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1670:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes1",
                        "typeString": "bytes1"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "30",
                      "id": 17228,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1682:3:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_044852b2a670ade5407e78fb2863c51de9fcb96542a07186fe3aeda6bb8a116d",
                        "typeString": "literal_string \"0\""
                      },
                      "value": "0"
                    },
                    "src": "1670:15:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes1",
                      "typeString": "bytes1"
                    }
                  },
                  "id": 17230,
                  "nodeType": "ExpressionStatement",
                  "src": "1670:15:25"
                },
                {
                  "expression": {
                    "id": 17235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "baseExpression": {
                        "id": 17231,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17215,
                        "src": "1695:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 17233,
                      "indexExpression": {
                        "hexValue": "31",
                        "id": 17232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1702:1:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "1695:9:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes1",
                        "typeString": "bytes1"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "78",
                      "id": 17234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "string",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1707:3:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_stringliteral_7521d1cadbcfa91eec65aa16715b94ffc1c9654ba57ea2ef1a2127bca1127a83",
                        "typeString": "literal_string \"x\""
                      },
                      "value": "x"
                    },
                    "src": "1695:15:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes1",
                      "typeString": "bytes1"
                    }
                  },
                  "id": 17236,
                  "nodeType": "ExpressionStatement",
                  "src": "1695:15:25"
                },
                {
                  "body": {
                    "id": 17265,
                    "nodeType": "Block",
                    "src": "1765:83:25",
                    "statements": [
                      {
                        "expression": {
                          "id": 17259,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 17251,
                              "name": "buffer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17215,
                              "src": "1779:6:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "id": 17253,
                            "indexExpression": {
                              "id": 17252,
                              "name": "i",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17238,
                              "src": "1786:1:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1779:9:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "baseExpression": {
                              "id": 17254,
                              "name": "_SYMBOLS",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 17133,
                              "src": "1791:8:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes16",
                                "typeString": "bytes16"
                              }
                            },
                            "id": 17258,
                            "indexExpression": {
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 17257,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 17255,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17207,
                                "src": "1800:5:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&",
                              "rightExpression": {
                                "hexValue": "307866",
                                "id": 17256,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1808:3:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_15_by_1",
                                  "typeString": "int_const 15"
                                },
                                "value": "0xf"
                              },
                              "src": "1800:11:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1791:21:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes1",
                              "typeString": "bytes1"
                            }
                          },
                          "src": "1779:33:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes1",
                            "typeString": "bytes1"
                          }
                        },
                        "id": 17260,
                        "nodeType": "ExpressionStatement",
                        "src": "1779:33:25"
                      },
                      {
                        "expression": {
                          "id": 17263,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "id": 17261,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 17207,
                            "src": "1826:5:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": ">>=",
                          "rightHandSide": {
                            "hexValue": "34",
                            "id": 17262,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1836:1:25",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_4_by_1",
                              "typeString": "int_const 4"
                            },
                            "value": "4"
                          },
                          "src": "1826:11:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 17264,
                        "nodeType": "ExpressionStatement",
                        "src": "1826:11:25"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 17247,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 17245,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 17238,
                      "src": "1753:1:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "hexValue": "31",
                      "id": 17246,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1757:1:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "1753:5:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 17266,
                  "initializationExpression": {
                    "assignments": [
                      17238
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 17238,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "1733:1:25",
                        "nodeType": "VariableDeclaration",
                        "scope": 17266,
                        "src": "1725:9:25",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 17237,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1725:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 17244,
                    "initialValue": {
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 17243,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17241,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "hexValue": "32",
                          "id": 17239,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1737:1:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_2_by_1",
                            "typeString": "int_const 2"
                          },
                          "value": "2"
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "id": 17240,
                          "name": "length",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17209,
                          "src": "1741:6:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1737:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "+",
                      "rightExpression": {
                        "hexValue": "31",
                        "id": 17242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1750:1:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      },
                      "src": "1737:14:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1725:26:25"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 17249,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "--",
                      "prefix": true,
                      "src": "1760:3:25",
                      "subExpression": {
                        "id": 17248,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17238,
                        "src": "1762:1:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 17250,
                    "nodeType": "ExpressionStatement",
                    "src": "1760:3:25"
                  },
                  "nodeType": "ForStatement",
                  "src": "1720:128:25"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 17270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 17268,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17207,
                          "src": "1865:5:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "30",
                          "id": 17269,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1874:1:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1865:10:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "537472696e67733a20686578206c656e67746820696e73756666696369656e74",
                        "id": 17271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1877:34:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                          "typeString": "literal_string \"Strings: hex length insufficient\""
                        },
                        "value": "Strings: hex length insufficient"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_04fc88320d7c9f639317c75102c103ff0044d3075a5c627e24e76e5bbb2733c2",
                          "typeString": "literal_string \"Strings: hex length insufficient\""
                        }
                      ],
                      "id": 17267,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1857:7:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 17272,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1857:55:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 17273,
                  "nodeType": "ExpressionStatement",
                  "src": "1857:55:25"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 17276,
                        "name": "buffer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17215,
                        "src": "1936:6:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 17275,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "1929:6:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_string_storage_ptr_$",
                        "typeString": "type(string storage pointer)"
                      },
                      "typeName": {
                        "id": 17274,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "1929:6:25",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 17277,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1929:14:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 17213,
                  "id": 17278,
                  "nodeType": "Return",
                  "src": "1922:21:25"
                }
              ]
            },
            "documentation": {
              "id": 17205,
              "nodeType": "StructuredDocumentation",
              "src": "1396:112:25",
              "text": " @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length."
            },
            "id": 17280,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toHexString",
            "nameLocation": "1522:11:25",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17210,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17207,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "1542:5:25",
                  "nodeType": "VariableDeclaration",
                  "scope": 17280,
                  "src": "1534:13:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17206,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1534:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17209,
                  "mutability": "mutable",
                  "name": "length",
                  "nameLocation": "1557:6:25",
                  "nodeType": "VariableDeclaration",
                  "scope": 17280,
                  "src": "1549:14:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 17208,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1549:7:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1533:31:25"
            },
            "returnParameters": {
              "id": 17213,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17212,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17280,
                  "src": "1588:13:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17211,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1588:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1587:15:25"
            },
            "scope": 17301,
            "src": "1513:437:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 17299,
              "nodeType": "Block",
              "src": "2175:76:25",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "id": 17293,
                                "name": "addr",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 17283,
                                "src": "2220:4:25",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 17292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2212:7:25",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint160_$",
                                "typeString": "type(uint160)"
                              },
                              "typeName": {
                                "id": 17291,
                                "name": "uint160",
                                "nodeType": "ElementaryTypeName",
                                "src": "2212:7:25",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 17294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "nameLocations": [],
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2212:13:25",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint160",
                              "typeString": "uint160"
                            }
                          ],
                          "id": 17290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2204:7:25",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": {
                            "id": 17289,
                            "name": "uint256",
                            "nodeType": "ElementaryTypeName",
                            "src": "2204:7:25",
                            "typeDescriptions": {}
                          }
                        },
                        "id": 17295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "nameLocations": [],
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2204:22:25",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 17296,
                        "name": "_ADDRESS_LENGTH",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17136,
                        "src": "2228:15:25",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      ],
                      "id": 17288,
                      "name": "toHexString",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        17204,
                        17280,
                        17300
                      ],
                      "referencedDeclaration": 17280,
                      "src": "2192:11:25",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (uint256,uint256) pure returns (string memory)"
                      }
                    },
                    "id": 17297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "nameLocations": [],
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2192:52:25",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 17287,
                  "id": 17298,
                  "nodeType": "Return",
                  "src": "2185:59:25"
                }
              ]
            },
            "documentation": {
              "id": 17281,
              "nodeType": "StructuredDocumentation",
              "src": "1956:141:25",
              "text": " @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation."
            },
            "id": 17300,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "toHexString",
            "nameLocation": "2111:11:25",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 17284,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17283,
                  "mutability": "mutable",
                  "name": "addr",
                  "nameLocation": "2131:4:25",
                  "nodeType": "VariableDeclaration",
                  "scope": 17300,
                  "src": "2123:12:25",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 17282,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2123:7:25",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2122:14:25"
            },
            "returnParameters": {
              "id": 17287,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 17286,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 17300,
                  "src": "2160:13:25",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 17285,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2160:6:25",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2159:15:25"
            },
            "scope": 17301,
            "src": "2102:149:25",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "internal"
          }
        ],
        "scope": 17302,
        "src": "188:2065:25",
        "usedErrors": []
      }
    ],
    "src": "101:2153:25"
  },
  "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c63aa9bc0c2143c7540cfb92c20e46a3045a60074751f74d84cbd57a297b863c64736f6c63430008130033",
  "bytecodeSha1": "1ce946f6a4eaa185320328620ccf999b9e86db7c",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.19+commit.7dd6d404"
  },
  "contractName": "Strings",
  "coverageMap": {
    "branches": {
      "25": {},
      "30": {}
    },
    "statements": {
      "25": {},
      "30": {}
    }
  },
  "dependencies": [
    "OpenZeppelin/openzeppelin-contracts@4.8.2/Math"
  ],
  "deployedBytecode": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220c63aa9bc0c2143c7540cfb92c20e46a3045a60074751f74d84cbd57a297b863c64736f6c63430008130033",
  "deployedSourceMap": "188:2065:25:-:0;;;;;;;;",
  "language": "Solidity",
  "natspec": {
    "details": "String operations.",
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    188,
    2253
  ],
  "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xC6 GASPRICE 0xA9 0xBC 0xC 0x21 NUMBER 0xC7 SLOAD 0xC 0xFB SWAP3 0xC2 0xE CHAINID LOG3 DIV GAS PUSH1 0x7 SELFBALANCE MLOAD 0xF7 0x4D DUP5 0xCB 0xD5 PUSH27 0x297B863C64736F6C63430008130033000000000000000000000000 ",
  "pcMap": {
    "0": {
      "offset": [
        188,
        2253
      ],
      "op": "PUSH20",
      "path": "25",
      "value": "0x0"
    },
    "21": {
      "fn": null,
      "offset": [
        188,
        2253
      ],
      "op": "ADDRESS",
      "path": "25"
    },
    "22": {
      "fn": null,
      "offset": [
        188,
        2253
      ],
      "op": "EQ",
      "path": "25"
    },
    "23": {
      "fn": null,
      "offset": [
        188,
        2253
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x80"
    },
    "25": {
      "fn": null,
      "offset": [
        188,
        2253
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x40"
    },
    "27": {
      "fn": null,
      "offset": [
        188,
        2253
      ],
      "op": "MSTORE",
      "path": "25"
    },
    "28": {
      "fn": null,
      "offset": [
        188,
        2253
      ],
      "op": "PUSH1",
      "path": "25",
      "value": "0x0"
    },
    "30": {
      "fn": null,
      "offset": [
        188,
        2253
      ],
      "op": "DUP1",
      "path": "25"
    },
    "31": {
      "fn": null,
      "offset": [
        188,
        2253
      ],
      "op": "REVERT",
      "path": "25"
    }
  },
  "sha1": "ff5ece3767b1d883dd71e4d905878d3af39eaa3e",
  "source": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)\n\npragma solidity ^0.8.0;\n\nimport \"./math/Math.sol\";\n\n/**\n * @dev String operations.\n */\nlibrary Strings {\n    bytes16 private constant _SYMBOLS = \"0123456789abcdef\";\n    uint8 private constant _ADDRESS_LENGTH = 20;\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` decimal representation.\n     */\n    function toString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            uint256 length = Math.log10(value) + 1;\n            string memory buffer = new string(length);\n            uint256 ptr;\n            /// @solidity memory-safe-assembly\n            assembly {\n                ptr := add(buffer, add(32, length))\n            }\n            while (true) {\n                ptr--;\n                /// @solidity memory-safe-assembly\n                assembly {\n                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))\n                }\n                value /= 10;\n                if (value == 0) break;\n            }\n            return buffer;\n        }\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation.\n     */\n    function toHexString(uint256 value) internal pure returns (string memory) {\n        unchecked {\n            return toHexString(value, Math.log256(value) + 1);\n        }\n    }\n\n    /**\n     * @dev Converts a `uint256` to its ASCII `string` hexadecimal representation with fixed length.\n     */\n    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {\n        bytes memory buffer = new bytes(2 * length + 2);\n        buffer[0] = \"0\";\n        buffer[1] = \"x\";\n        for (uint256 i = 2 * length + 1; i > 1; --i) {\n            buffer[i] = _SYMBOLS[value & 0xf];\n            value >>= 4;\n        }\n        require(value == 0, \"Strings: hex length insufficient\");\n        return string(buffer);\n    }\n\n    /**\n     * @dev Converts an `address` with fixed length of 20 bytes to its not checksummed ASCII `string` hexadecimal representation.\n     */\n    function toHexString(address addr) internal pure returns (string memory) {\n        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);\n    }\n}\n",
  "sourceMap": "188:2065:25:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;188:2065:25;;;;;;;;;;;;;;;;;",
  "sourcePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/utils/Strings.sol",
  "type": "library"
}