{
    "Function": "_burn",
    "File": "contracts/src/vendor/openzeppelin-solidity/v4.8.3/contracts/token/ERC20/ERC20.sol",
    "Parent Contracts": [
        "contracts/src/vendor/openzeppelin-solidity/v4.8.3/contracts/token/ERC20/extensions/IERC20Metadata.sol",
        "contracts/src/vendor/openzeppelin-solidity/v4.8.3/contracts/token/ERC20/IERC20.sol",
        "contracts/src/vendor/openzeppelin-solidity/v4.8.3/contracts/utils/Context.sol"
    ],
    "High-Level Calls": [],
    "Internal Calls": [
        "require(bool,string)",
        "_afterTokenTransfer",
        "require(bool,string)",
        "_beforeTokenTransfer"
    ],
    "Library Calls": [],
    "Low-Level Calls": [],
    "Code": "function _burn(address account, uint256 amount) internal virtual {\n    require(account != address(0), \"ERC20: burn from the zero address\");\n\n    _beforeTokenTransfer(account, address(0), amount);\n\n    uint256 accountBalance = _balances[account];\n    require(accountBalance >= amount, \"ERC20: burn amount exceeds balance\");\n    unchecked {\n      _balances[account] = accountBalance - amount;\n      // Overflow not possible: amount <= accountBalance <= totalSupply.\n      _totalSupply -= amount;\n    }\n\n    emit Transfer(account, address(0), amount);\n\n    _afterTokenTransfer(account, address(0), amount);\n  }"
}