// Path: src/main/java/me/alb_i986/selenium/tinafw/domain/SupportedBrowser.java
// public enum SupportedBrowser {
// 
// 	CHROME(ChromeDriver.class, DesiredCapabilities.chrome()),
// 	FIREFOX(FirefoxDriver.class, DesiredCapabilities.firefox()),
// 	SAFARI(SafariDriver.class, DesiredCapabilities.safari()),
// 	IE(InternetExplorerDriver.class, DesiredCapabilities.internetExplorer()),
// 	HTML_UNIT(HtmlUnitDriver.class, DesiredCapabilities.htmlUnit()),
// 	;
// 
// 	private DesiredCapabilities capabilities;
// 	private Class<? extends WebDriver> concreteWebDriverClass;
// 
// 	private SupportedBrowser(Class<? extends WebDriver> clazz, DesiredCapabilities capabilities) {
// 		this.concreteWebDriverClass = clazz;
// 		this.capabilities = capabilities;
// 	}
// 	
// 	/**
// 	 * @return the concrete WebDriver class corresponding to this SupportedBrowser
// 	 */
// 	public Class<? extends WebDriver> toClass() {
// 		return this.concreteWebDriverClass;
// 	}
// 
// 	public DesiredCapabilities toCapabilities() {
// 		return this.capabilities;
// 	}
// 
// 	/**
// 	 * @return the lower cased name of this enum constant
// 	 */
// 	@Override
// 	public String toString() {
// 		return super.toString().toLowerCase();
// 	}
// }
// 
// Path: src/main/java/me/alb_i986/selenium/tinafw/tests/rules/BrowserManager.java
// public class BrowserManager extends ExternalResource {
// 
// 	protected static final Logger logger = LogManager.getLogger(BrowserManager.class);
// 	
// 	protected Set<Browser> registeredBrowsers = new HashSet<>();
// 	private Mode mode;
// 
// 	/**
// 	 * Default constructor: create a BrowserManager that <i>does</i>
// 	 * close the registered browsers.
// 	 */
// 	public BrowserManager() {
// 		this(Mode.DEFAULT);
// 	}
// 
// 	/**
// 	 * Allows customizing the behavior.
// 	 *
// 	 * @param mode if true, the browsers will <i>not</i> be closed
// 	 */
// 	public BrowserManager(Mode mode) {
// 		if(mode == null) {
// 			throw new IllegalArgumentException("null mode");
// 		}
// 		this.mode = mode;
// 	}
// 
// 	@Override
// 	protected void after() {
// 		if(mode == Mode.DO_NOT_CLOSE_BROWSERS) {
// 			return;
// 		}
// 		logger.debug("Closing all registered browsers (" + registeredBrowsers.size() + ")");
// 		for (Browser browser : registeredBrowsers) {
// 			browser.close();
// 		}
// 	}
// 
// 	public void registerBrowsers(Browser... browsers) {
// 		this.registeredBrowsers.addAll(Arrays.asList(browsers));
// 	}
// 
// 	public void registerBrowser(Browser browser) {
// 		this.registeredBrowsers.add(browser);
// 	}
// 
// 	public enum Mode {
// 		DEFAULT,
// 		DO_NOT_CLOSE_BROWSERS,
// 	}
// }


import me.alb_i986.selenium.tinafw.domain.SupportedBrowser;
import java.net.URL;
import java.util.*;
import me.alb_i986.selenium.tinafw.tests.rules.BrowserManager;
import org.openqa.selenium.Platform;
		return (value == null) ? null : Long.parseLong(value);
	}

	/**
	 * @return the property {@value #PROP_TIMEOUT_EXPLICIT_WAIT}
	 * @throws SettingNotFoundException if the property is not defined
	 * 
	 * @see Integer#parseInt(String)
	 */
	public static int getExplicitWait() {
		return Integer.parseInt(getRequiredProperty(PROP_TIMEOUT_EXPLICIT_WAIT));
	}

	/**
	 * @return the property {@value #PROP_KEEP_BROWSERS_OPEN}
	 *         Please note, in case the property is defined and <i>empty</i>,
	 *         it will be considered as {@code false}.
	 * @throws SettingNotFoundException if the property is not defined
	 * 
	 * @see Boolean#parseBoolean(String)
	 */
	public static boolean getKeepBrowsersOpen() {
		return Boolean.parseBoolean(getRequiredProperty(PROP_KEEP_BROWSERS_OPEN));
	}

	/**
	 * @return the mode of the BrowserManager, based on the property {@value #PROP_KEEP_BROWSERS_OPEN}
	 * 
	 * @see #getKeepBrowsersOpen()
	 */
// Path: src/main/java/me/alb_i986/selenium/tinafw/domain/SupportedBrowser.java
// public enum SupportedBrowser {
// 
// 	CHROME(ChromeDriver.class, DesiredCapabilities.chrome()),
// 	FIREFOX(FirefoxDriver.class, DesiredCapabilities.firefox()),
// 	SAFARI(SafariDriver.class, DesiredCapabilities.safari()),
// 	IE(InternetExplorerDriver.class, DesiredCapabilities.internetExplorer()),
// 	HTML_UNIT(HtmlUnitDriver.class, DesiredCapabilities.htmlUnit()),
// 	;
// 
// 	private DesiredCapabilities capabilities;
// 	private Class<? extends WebDriver> concreteWebDriverClass;
// 
// 	private SupportedBrowser(Class<? extends WebDriver> clazz, DesiredCapabilities capabilities) {
// 		this.concreteWebDriverClass = clazz;
// 		this.capabilities = capabilities;
// 	}
// 	
// 	/**
// 	 * @return the concrete WebDriver class corresponding to this SupportedBrowser
// 	 */
// 	public Class<? extends WebDriver> toClass() {
// 		return this.concreteWebDriverClass;
// 	}
// 
// 	public DesiredCapabilities toCapabilities() {
// 		return this.capabilities;
// 	}
// 
// 	/**
// 	 * @return the lower cased name of this enum constant
// 	 */
// 	@Override
// 	public String toString() {
// 		return super.toString().toLowerCase();
// 	}
// }
// 
// Path: src/main/java/me/alb_i986/selenium/tinafw/tests/rules/BrowserManager.java
// public class BrowserManager extends ExternalResource {
// 
// 	protected static final Logger logger = LogManager.getLogger(BrowserManager.class);
// 	
// 	protected Set<Browser> registeredBrowsers = new HashSet<>();
// 	private Mode mode;
// 
// 	/**
// 	 * Default constructor: create a BrowserManager that <i>does</i>
// 	 * close the registered browsers.
// 	 */
// 	public BrowserManager() {
// 		this(Mode.DEFAULT);
// 	}
// 
// 	/**
// 	 * Allows customizing the behavior.
// 	 *
// 	 * @param mode if true, the browsers will <i>not</i> be closed
// 	 */
// 	public BrowserManager(Mode mode) {
// 		if(mode == null) {
// 			throw new IllegalArgumentException("null mode");
// 		}
// 		this.mode = mode;
// 	}
// 
// 	@Override
// 	protected void after() {
// 		if(mode == Mode.DO_NOT_CLOSE_BROWSERS) {
// 			return;
// 		}
// 		logger.debug("Closing all registered browsers (" + registeredBrowsers.size() + ")");
// 		for (Browser browser : registeredBrowsers) {
// 			browser.close();
// 		}
// 	}
// 
// 	public void registerBrowsers(Browser... browsers) {
// 		this.registeredBrowsers.addAll(Arrays.asList(browsers));
// 	}
// 
// 	public void registerBrowser(Browser browser) {
// 		this.registeredBrowsers.add(browser);
// 	}
// 
// 	public enum Mode {
// 		DEFAULT,
// 		DO_NOT_CLOSE_BROWSERS,
// 	}
// }


// Path: src/main/java/me/alb_i986/selenium/tinafw/config/Config.java
import me.alb_i986.selenium.tinafw.domain.SupportedBrowser;
import java.net.URL;
import java.util.*;
import me.alb_i986.selenium.tinafw.tests.rules.BrowserManager;
import org.openqa.selenium.Platform;

		return (value == null) ? null : Long.parseLong(value);
	}

	/**
	 * @return the property {@value #PROP_TIMEOUT_EXPLICIT_WAIT}
	 * @throws SettingNotFoundException if the property is not defined
	 * 
	 * @see Integer#parseInt(String)
	 */
	public static int getExplicitWait() {
		return Integer.parseInt(getRequiredProperty(PROP_TIMEOUT_EXPLICIT_WAIT));
	}

	/**
	 * @return the property {@value #PROP_KEEP_BROWSERS_OPEN}
	 *         Please note, in case the property is defined and <i>empty</i>,
	 *         it will be considered as {@code false}.
	 * @throws SettingNotFoundException if the property is not defined
	 * 
	 * @see Boolean#parseBoolean(String)
	 */
	public static boolean getKeepBrowsersOpen() {
		return Boolean.parseBoolean(getRequiredProperty(PROP_KEEP_BROWSERS_OPEN));
	}

	/**
	 * @return the mode of the BrowserManager, based on the property {@value #PROP_KEEP_BROWSERS_OPEN}
	 * 
	 * @see #getKeepBrowsersOpen()
	 */
	public static BrowserManager.Mode getBrowserManagerMode() {