```\n    function liquidate(\n        address _account,\n        uint256 _debtAmount,\n        uint256 _minExchangeRate\n    ) external onlyLiquidator whenNotPaused updateReward(_account) returns (bool) {\n        if (_debtAmount == 0) revert wrongLiquidationAmount();\n\n        UserDetails memory accDetails = userDetails[_account];\n\n        // Since Taurus accounts' debt continuously decreases, liquidators may pass in an arbitrarily large number in order to\n        // request to liquidate the entire account.\n        if (_debtAmount > accDetails.debt) {\n            _debtAmount = accDetails.debt;\n        }\n\n        // Get total fee charged to the user for this liquidation. Collateral equal to (liquidated taurus debt value * feeMultiplier) will be deducted from the user's account.\n        // This call reverts if the account is healthy or if the liquidation amount is too large.\n        (uint256 collateralToLiquidate, uint256 liquidationSurcharge) = _calcLiquidation(\n            accDetails.collateral,\n            accDetails.debt,\n            _debtAmount\n        );\n```\n