// Path: src/com/sebuilder/interpreter/webdriverfactory/WebDriverFactory.java
// public interface WebDriverFactory {
// 	/**
// 	 * @param config A key/value mapping of configuration options specific to this factory.
// 	 * @return A RemoteWebDriver of the type produced by this factory.
// 	 */
// 	public RemoteWebDriver make(HashMap<String, String> config) throws Exception;
// }


import com.sebuilder.interpreter.webdriverfactory.WebDriverFactory;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.Keys;
import org.openqa.selenium.remote.RemoteWebDriver;
	public RemoteWebDriver getDriver() { return driver; }
	public Script getScript() { return script; }

	public TestRun(Script script) {
		this.script = script;
		log = LogFactory.getFactory().getInstance(SeInterpreter.class);
	}

	public TestRun(Script script, int implicitlyWaitDriverTimeout, int pageLoadDriverTimeout) {
		this(script);
		setTimeouts(implicitlyWaitDriverTimeout, pageLoadDriverTimeout);
	}
	
	public TestRun(Script script, int implicitlyWaitDriverTimeout, int pageLoadDriverTimeout, Map<String, String> initialVars) {
		this(script);
		setTimeouts(implicitlyWaitDriverTimeout, pageLoadDriverTimeout);
		vars.putAll(initialVars);
	}
	
	public TestRun(Script script, Log log) {
		this.script = script;
		this.log = log;
	}
	
	public TestRun(Script script, Log log, WebDriverFactory webDriverFactory, HashMap<String, String> webDriverConfig) {
		this(script, log);
		this.webDriverFactory = webDriverFactory;
		this.webDriverConfig = webDriverConfig;
	}
	
// Path: src/com/sebuilder/interpreter/webdriverfactory/WebDriverFactory.java
// public interface WebDriverFactory {
// 	/**
// 	 * @param config A key/value mapping of configuration options specific to this factory.
// 	 * @return A RemoteWebDriver of the type produced by this factory.
// 	 */
// 	public RemoteWebDriver make(HashMap<String, String> config) throws Exception;
// }


// Path: src/com/sebuilder/interpreter/TestRun.java
import com.sebuilder.interpreter.webdriverfactory.WebDriverFactory;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openqa.selenium.Keys;
import org.openqa.selenium.remote.RemoteWebDriver;

	public RemoteWebDriver getDriver() { return driver; }
	public Script getScript() { return script; }

	public TestRun(Script script) {
		this.script = script;
		log = LogFactory.getFactory().getInstance(SeInterpreter.class);
	}

	public TestRun(Script script, int implicitlyWaitDriverTimeout, int pageLoadDriverTimeout) {
		this(script);
		setTimeouts(implicitlyWaitDriverTimeout, pageLoadDriverTimeout);
	}
	
	public TestRun(Script script, int implicitlyWaitDriverTimeout, int pageLoadDriverTimeout, Map<String, String> initialVars) {
		this(script);
		setTimeouts(implicitlyWaitDriverTimeout, pageLoadDriverTimeout);
		vars.putAll(initialVars);
	}
	
	public TestRun(Script script, Log log) {
		this.script = script;
		this.log = log;
	}
	
	public TestRun(Script script, Log log, WebDriverFactory webDriverFactory, HashMap<String, String> webDriverConfig) {
		this(script, log);
		this.webDriverFactory = webDriverFactory;
		this.webDriverConfig = webDriverConfig;
	}
	
	public TestRun(Script script, Log log, WebDriverFactory webDriverFactory, HashMap<String, String> webDriverConfig, Map<String, String> initialVars) {