Vulnerability: `recipientsCounter` should start from 1 in `DonationVotingMerkleDistributionBaseStrategy`
Severity: high

Description:
```\\n    function _registerRecipient(bytes memory _data, address _sender)\\n        internal\\n        override\\n        onlyActiveRegistration\\n        returns (address recipientId)\\n    {\\n        …\\n\\n        uint8 currentStatus = _getUintRecipientStatus(recipientId);\\n\\n        if (currentStatus == uint8(Status.None)) {\\n            // recipient registering new application\\n            recipientToStatusIndexes[recipientId] = recipientsCounter;\\n            _setRecipientStatus(recipientId, uint8(Status.Pending));\\n\\n            bytes memory extendedData = abi.encode(_data, recipientsCounter);\\n            emit Registered(recipientId, extendedData, _sender);\\n\\n            recipientsCounter++;\\n        } else {\\n            if (currentStatus == uint8(Status.Accepted)) {\\n                // recipient updating accepted application\\n                _setRecipientStatus(recipientId, uint8(Status.Pending));\\n            } else if (currentStatus == uint8(Status.Rejected)) {\\n                // recipient updating rejected application\\n                _setRecipientStatus(recipientId, uint8(Status.Appealed));\\n            }\\n            emit UpdatedRegistration(recipientId, _data, _sender, _getUintRecipientStatus(recipientId));\\n        }\\n    }\\n```\\n\\n```\\n    function _getUintRecipientStatus(address _recipientId) internal view returns (uint8 status) {\\n        // Get the column index and current row\\n        (, uint256 colIndex, uint256 currentRow) = _getStatusRowColumn(_recipientId);\\n\\n        // Get the status from the 'currentRow' shifting by the 'colIndex'\\n        status = uint8((currentRow  colIndex) & 15);\\n\\n        // Return the status\\n        return status;\\n    }\\n```\\n\\n```\\n    function _getStatusRowColumn(address _recipientId) internal view returns (uint256, uint256, uint256) {\\n        uint256 recipientIndex = recipientToStatusIndexes[_recipientId];\\n\\n        uint256 rowIndex = recipientIndex / 64; // 256 / 4\\n        uint256 colIndex = (recipientIndex % 64) * 4;\\n\\n        return (rowIndex, colIndex, statusesBitMap[rowIndex]);\\n    }\\n```\\n\\n```\\n    /// @notice The total number of recipients.\\n    uint256 public recipientsCounter;\\n```\\n\\nConsider the following situation:\\nAlice is the first recipient calls `registerRecipient`\\n```\\n// in _registerRecipient\\nrecipientToStatusIndexes[Alice] = recipientsCounter = 0;\\n_setRecipientStatus(Alice, uint8(Status.Pending));\\nrecipientCounter++\\n```\\n\\nBob calls `registerRecipient`.\\n```\\n// in _getStatusRowColumn\\nrecipientToStatusIndexes[Bob] = 0 // It would access the status of Alice\\n// in _registerRecipient\\ncurrentStatus = _getUintRecipientStatus(recipientId) = Status.Pending\\ncurrentStatus != uint8(Status.None) -> no new application is recorded in the pool.\\n```\\n\\nThis implementation error makes the pool can only record the first application.

Impact:

Recommended mitigation:
Make the counter start from 1. There are two methods to fix the issue.\\n\\n```\\n    /// @notice The total number of recipients.\\n// Add the line below\\n   uint256 public recipientsCounter;\\n// Remove the line below\\n   uint256 public recipientsCounter;\\n```\\n\\n\\n```\\n    function _registerRecipient(bytes memory _data, address _sender)\\n        internal\\n        override\\n        onlyActiveRegistration\\n        returns (address recipientId)\\n    {\\n        …\\n\\n        uint8 currentStatus = _getUintRecipientStatus(recipientId);\\n\\n        if (currentStatus == uint8(Status.None)) {\\n            // recipient registering new application\\n// Add the line below\\n           recipientToStatusIndexes[recipientId] = recipientsCounter // Add the line below\\n 1;\\n// Remove the line below\\n           recipientToStatusIndexes[recipientId] = recipientsCounter;\\n            _setRecipientStatus(recipientId, uint8(Status.Pending));\\n\\n            bytes memory extendedData = abi.encode(_data, recipientsCounter);\\n            emit Registered(recipientId, extendedData, _sender);\\n\\n            recipientsCounter// Add the line below\\n// Add the line below\\n;\\n        …\\n    }\\n```\\n