function checkEligibility(request, dictionary) {
	request.is_hrp_eligible = false;
	request.is_hpap_eligible = false;
	request.is_hafhr_eligible = false;
	if (request.program_name == 'nd_homeowner_assistance_fund') {
		// must be an ND address
		var invalidState = request.address_state != 'North Dakota';
		// must be the primary residence
		var isNotPrimaryResidence = request.is_primary_residence == 'false';
		// must meet income of 150% ami (hrp program threshold)
		var incomeTooHigh = request.hrp_eligible == 'false';
		// check if applicant is in persistent poverty county
		var persistentPovertyCounty = request.address_county == 'Sioux' || request.address_county == 'Benson';
		// JWerre NC-3087: must not indicate "No financial hardship experienced"
		var noFinancialHardship = request.haf_no_hardship_experienced.toString() === 'true';
	}
	// if income is too high OR state is not ND AND no categorical eligibilty or persistent poverty county, refuse
	if ((incomeTooHigh || invalidState || isNotPrimaryResidence || noFinancialHardship) && 
		(request.has_categorical_eligibility == 'false' && !persistentPovertyCounty)) {
		var message = '';
		var errorMessage = "<ul>";
		
		if (incomeTooHigh) errorMessage += "<li>" + dictionary.does_not_meet_income_requirements_haf + "</li>";
		if (invalidState) errorMessage += "<li>" + dictionary.must_reside_in_north_dakota_haf + "</li>";
		if (isNotPrimaryResidence) errorMessage += "<li>" + dictionary.this_program_only_applies_to_primary_residences_haf + "</li>";
		if (noFinancialHardship) errorMessage += "<li>" + dictionary.does_not_meet_financial_hardship_haf + "</li>";
		errorMessage += "</ul>";
		
		message = dictionary.ineligible_haf.replace(
			"Reason for ineligibilty",
			errorMessage
		);
		
		return {
			error: message,
		};
	} else if (invalidState || isNotPrimaryResidence || noFinancialHardship) {
		var message = '';
		var errorMessage = "<ul>";
		
		if (invalidState) errorMessage += "<li>" + dictionary.must_reside_in_north_dakota_haf + "</li>";
		if (isNotPrimaryResidence) errorMessage += "<li>" + dictionary.this_program_only_applies_to_primary_residences_haf + "</li>";
		if (noFinancialHardship) errorMessage += "<li>" + dictionary.does_not_meet_financial_hardship_haf + "</li>";
		errorMessage += "</ul>";
		
		message = dictionary.ineligible_haf.replace(
			"Reason for ineligibilty",
			errorMessage
		);
		
		return {
			error: message,
		};		
	} else {
		return {};
	}
}
