@Override
	public HolidayData getEncodedHolidayData(String dataFromStepsFile)
	{
		final List<String> stepV=Resources.getFileLineVector(new StringBuffer(dataFromStepsFile));
		for(int v=0;v<stepV.size();v++)
			stepV.set(v,CMStrings.replaceAll(stepV.get(v),"\\;",";"));
		final TriadList<String,String,Integer> settings=new TriadVector<String,String,Integer>();
		final TriadList<String,String,Integer> behaviors=new TriadVector<String,String,Integer>();
		final TriadList<String,String,Integer> properties=new TriadVector<String,String,Integer>();
		final TriadList<String,String,Integer> stats=new TriadVector<String,String,Integer>();
		Vector<String> lineV=null;
		String line=null;
		String var=null;
		String cmd=null;
		int pricingMobIndex=-1;
		final String[] SETTINGS={"NAME","WAIT","DATE","DURATION","MUDDAY","AREAGROUP","MOBGROUP"};
		for(int v=0;v<stepV.size();v++)
		{
			line=stepV.get(v);
			lineV=CMParms.parse(line);
			if(lineV.size()>1)
			{
				cmd=lineV.elementAt(0).toUpperCase();
				var=lineV.elementAt(1).toUpperCase();
				if(cmd.equals("SET")&&(CMParms.indexOf(SETTINGS,var)>=0))
				{
					if(!settings.containsFirst(var))
					{
						String str=CMParms.combineQuoted(lineV,2);
						if(str.toUpperCase().startsWith("ANY "))
							str=str.substring(4);
						if(str.toUpperCase().startsWith("RESELECT MASK="))
							str=str.substring(14);
						if(str.toUpperCase().startsWith("MASK="))
							str=str.substring(5);
						settings.add(var,str,Integer.valueOf(v));
					}
					else
					if((var.equalsIgnoreCase("MOBGROUP"))
					&&(pricingMobIndex<0)
					&&(CMParms.combine(lineV,2).toUpperCase().indexOf("SHOPKEEPER")>0))
						pricingMobIndex=v;
				}
				if(cmd.equals("GIVE")&&("BEHAVIOR".equalsIgnoreCase(var))&&(lineV.size()>2)&&(pricingMobIndex<0))
				{
					var=lineV.elementAt(2).toUpperCase();
					behaviors.add(var,CMParms.combineQuoted(lineV,3),Integer.valueOf(v));
				}
				if(cmd.equals("GIVE")&&("AFFECT".equalsIgnoreCase(var))&&(lineV.size()>2)&&(pricingMobIndex<0))
				{
					var=lineV.elementAt(2).toUpperCase();
					properties.add(var,CMParms.combineQuoted(lineV,3),Integer.valueOf(v));
				}
				if(cmd.equals("GIVE")&&("STAT".equalsIgnoreCase(var))&&(lineV.size()>2))
				{
					var=lineV.elementAt(2).toUpperCase();
					if((pricingMobIndex<0)||(var.equals("PRICEMASKS")))
						stats.add(var,CMParms.combineQuoted(lineV,3),Integer.valueOf(v));
				}
			}
		}
		final Integer pricingMobIndexI = Integer.valueOf(pricingMobIndex);
		return new HolidayData()
		{
			@Override
			public TriadList<String, String, Integer> settings()
			{
				return settings;
			}

			@Override
			public TriadList<String, String, Integer> behaviors()
			{
				return behaviors;
			}

			@Override
			public TriadList<String, String, Integer> properties()
			{
				return properties;
			}

			@Override
			public TriadList<String, String, Integer> stats()
			{
				return stats;
			}

			@Override
			public List<String> stepV()
			{
				return stepV;
			}

			@Override
			public Integer pricingMobIndex()
			{
				return pricingMobIndexI;
			}
		};
	}