IndexOutOfRangeException

It has come up with the same error 9 times at the same time.
IndexOutOfRangeException: Array index is out of range.
BaseCharacter.GetVital (Int32 index) (at Assets/Scripts 1/Character Classes/BaseCharacter.cs:77)
GameSettings.SaveCharacterData () (at Assets/Scripts 1/GameSettings.cs:44)
CharacterGenerator.DisplayCreateButton () (at Assets/Scripts 1/Character Classes/CharacterGenerator.cs:151)
CharacterGenerator.OnGUI () (at Assets/Scripts 1/Character Classes/CharacterGenerator.cs:62)

Here is my script it says it is on line 77, Please Help:

using UnityEngine;
using System.Collections;
using System; //added to access the enum class

public class BaseCharacter : MonoBehaviour {
private string _name;
private int _level;
private uint _freeExp;

private Attribute[] _primaryAttribute;
private Vital[] _vital;
private Skill[] _skill;

public void Awake() {
	_name = string.Empty;
	_level = 0;
	_freeExp = 0;
	
	_primaryAttribute = new Attribute[Enum.GetValues(typeof(AttributeName)).Length];
	_vital = new Vital[Enum.GetValues(typeof(VitalName)).Length];
	_skill = new Skill[Enum.GetValues(typeof(SkillName)).Length];
	
	SetupPrimaryAttributes();
	SetupVitals();
	SetupSkills();
}


public string Name {
	get{ return _name; }
	set{ _name = value; }
}

public int Level {
	get{ return _level; }
	set{ _level = value; }
}

public uint FreeExp {
	get{ return _freeExp; }
	set{ _freeExp = value; }
}

public void AddExp(uint exp) {
	_freeExp += exp;
	
	CaluclateLevel();
}

//take the average of all of the players skills and assign that as the player level
public void CaluclateLevel() {	
}

private void SetupPrimaryAttributes(){
	for(int cnt = 0; cnt < _primaryAttribute.Length; cnt++) {
		_primaryAttribute[cnt] = new Attribute();
	}
}

private void SetupVitals(){
	for(int cnt = 0; cnt < _vital.Length; cnt++) 
		_vital[cnt] = new Vital();
	
	SetupVitalModifiers();
}

private void SetupSkills(){
	for(int cnt = 0; cnt < _skill.Length; cnt++) 
		_skill[cnt] = new Skill();
}	

public Attribute GetPrimaryAttribute(int index) {
	return _primaryAttribute[index];
}

public Vital GetVital(int index) {
	return _vital[index];
}

public Skill GetSkill(int index) {
	return _skill[index];
}

private void SetupVitalModifiers() {
	//health
	GetVital((int)VitalName.Health).AddModifier(new ModifiyingAttribute { attribute = GetPrimaryAttribute((int)AttributeName.Fitness), ratio = 0.5f});
	//Energy
	GetVital((int)VitalName.Energy).AddModifier(new ModifiyingAttribute { attribute = GetPrimaryAttribute((int)AttributeName.Fitness), ratio = 1f});
	//Mana
	GetVital((int)VitalName.Mana).AddModifier(new ModifiyingAttribute { attribute = GetPrimaryAttribute((int)AttributeName.Wisdom), ratio = 1f});
}
		
public void StatUpdate() {
	for(int cnt = 0; cnt < _vital.Length; cnt++)
		_vital[cnt].Update ();
	
	for(int cnt = 0; cnt < _skill.Length; cnt++)
		_skill[cnt].Update ();
}

}

try here