package test;
import java.util.Hashtable;
public class Test {
	public boolean combineScriptsExist() {
		File solvematchshift = new File(System.getProperty("user.dir"),
				"solvematchshift.com");
		File solvematchmod = new File(System.getProperty("user.dir"),
				"solvematchmod.com");
		File matchvol1 = new File(System.getProperty("user.dir"),
				"matchvol1.com");
		File matchorwarp = new File(System.getProperty("user.dir"),
				"matchorwarp.com");
		File patchcorr = new File(System.getProperty("user.dir"),
				"patchcorr.com");
		File volcombine = new File(System.getProperty("user.dir"),
				"volcombine.com");
		File warpvol = new File(System.getProperty("user.dir"), "warpvol.com");
		return solvematchshift.exists() && solvematchmod.exists()
				&& atchvol1.exists() && matchorwarp.exists()
				&& patchcorr.exists() && volcombine.exists()
				&& warpvol.exists();
	}
}