<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.browserstack</groupId>
  <artifactId>browserstack-java-sdk</artifactId>
  <name>browserstack-java-sdk</name>
  <version>1.40.5</version>
  <description>Java SDK for Browserstack Selenium Tests</description>
  <url>https://www.browserstack.com</url>
  <developers>
    <developer>
      <name>BrowserStack</name>
      <email>support@browserstack.com</email>
      <organization>BrowserStack</organization>
      <organizationUrl>https://www.browserstack.com</organizationUrl>
    </developer>
  </developers>
  <licenses>
    <license>
      <name>BrowserStack License</name>
      <url>${project.baseUri}LICENSE.txt</url>
    </license>
  </licenses>
  <scm>
    <connection>scm:git:git@github.com:browserstack/browserstack-javaagent.git</connection>
    <developerConnection>scm:git:git@github.com:browserstack/browserstack-javaagent.git</developerConnection>
    <url>https://github.com/browserstack/browserstack-javaagent</url>
  </scm>
  <build>
    <extensions>
      <extension>
        <groupId>kr.motd.maven</groupId>
        <artifactId>os-maven-plugin</artifactId>
        <version>1.7.1</version>
      </extension>
    </extensions>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>com.github.wvengen</groupId>
          <artifactId>proguard-maven-plugin</artifactId>
          <version>2.4.0</version>
          <executions>
            <execution>
              <id>proguard</id>
              <phase>package</phase>
              <goals>
                <goal>proguard</goal>
              </goals>
            </execution>
          </executions>
          <dependencies>
            <dependency>
              <groupId>com.guardsquare</groupId>
              <artifactId>proguard-base</artifactId>
              <version>${version.proguard-base}</version>
              <scope>runtime</scope>
            </dependency>
          </dependencies>
          <configuration>
            <includeDependency>false</includeDependency>
            <injar>${project.build.finalName}.${project.packaging}</injar>
            <outjar>${project.build.finalName}.${project.packaging}</outjar>
            <libs>
              <lib>${java.home}/lib/rt.jar</lib>
              <lib>${java.home}/lib/jce.jar</lib>
              <lib>${java.home}/lib/ext/sunjce_provider.jar</lib>
            </libs>
            <options>
              <option>-dontskipnonpubliclibraryclassmembers</option>
              <option>-allowaccessmodification</option>
              <option>-adaptclassstrings</option>
              <option>-adaptresourcefilenames **.properties</option>
              <option>-adaptresourcefilecontents **.properties,META-INF/MANIFEST.MF</option>
              <option>-verbose</option>
              <option>-dontnote</option>
              <option>-dontwarn</option>
              <option>-keepattributes *Annotation*</option>
              <option>-keepattributes Signature,InnerClasses,EnclosingMethod</option>
              <option>-ignorewarnings</option>
              <option>-keepclasseswithmembers class *</option>
              <option>-keepclasseswithmembers,allowshrinking public final @interface  * {
                                public private protected static final volatile transient synthetic &lt;fields&gt;;
                                }</option>
              <option>-keepclasseswithmembers public class * { public static void main(java.lang.String[]); }</option>
              <option>-keep public class * extends java.applet.Applet</option>
              <option>-keep public class * extends javax.servlet.Servlet</option>
              <option>-keep public class * extends javax.microedition.midlet.MIDlet</option>
              <option>-keep public class * extends javax.tv.xlet.Xlet</option>
              <option>-keep public class org.slf4j.** { *; }</option>
              <option>-keep class org.gradle.** { *; }</option>
              <option>-keep class org.apache.logging.** { *; }</option>
              <option>-keep public class ch.qos.logback.** { *; }</option>
              <option>-keep public class * {
                                public protected &lt;fields&gt;;
                                public protected &lt;methods&gt;;
                                }</option>
              <option>-keepclassmembers enum  * {
                                public static **[] values();
                                public static ** valueOf(java.lang.String);
                                }</option>
              <option>-keepclassmembers class * extends java.io.Serializable {
                                static final long serialVersionUID;
                                static final java.io.ObjectStreamField[] serialPersistentFields;
                                private void writeObject(java.io.ObjectOutputStream);
                                private void readObject(java.io.ObjectInputStream);
                                java.lang.Object writeReplace();
                                java.lang.Object readResolve();
                                }</option>
              <option>-keep class * extends java.beans.BeanInfo</option>
              <option>-keep class * {
                                void set*(***);
                                void set*(int,***);
                                boolean is*();
                                boolean is*(int);
                                *** get*();
                                *** get*(int);
                                }</option>
              <option>-keep class * extends java.sql.Driver</option>
              <option>-keep class * extends javax.swing.plaf.ComponentUI {
                                public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
                                }</option>
              <option>-keepclasseswithmembers,includedescriptorclasses,allowshrinking class * {
                                native &lt;methods&gt;;
                                }</option>
              <option>-keepclassmembers,allowshrinking class * {
                                java.lang.Class class$(java.lang.String);
                                java.lang.Class class$(java.lang.String,boolean);
                                }</option>
              <option>-keepclassmembers,allowshrinking class * {
                                @proguard.annotation.KeepName
                                &lt;fields&gt;;
                                @proguard.annotation.KeepName
                                &lt;methods&gt;;
                                }</option>
              <option>-keepclassmembers,allowshrinking @proguard.annotation.KeepClassMemberNames class * {
                                &lt;fields&gt;;
                                &lt;methods&gt;;
                                }</option>
              <option>-keepclassmembers,allowshrinking @proguard.annotation.KeepPublicClassMemberNames class * {
                                public &lt;fields&gt;;
                                public &lt;methods&gt;;
                                }</option>
              <option>-keepclassmembers,allowshrinking @proguard.annotation.KeepPublicProtectedClassMemberNames class * {
                                public protected &lt;fields&gt;;
                                public protected &lt;methods&gt;;
                                }</option>
              <option>-keep @interface com.browserstack.monitoring.Measured</option>
              <option>-keep enum com.browserstack.monitoring.Events { *; }</option>
              <option>-keep enum com.browserstack.monitoring.Stage { *; }</option>
              <option>-keepclassmembers class * { @com.browserstack.monitoring.Measured *; }</option>
              <option>-keep,allowshrinking @proguard.annotation.KeepName class *</option>
              <option>-keep class io.grpc.** { *; }</option>
              <option>-keepclassmembernames class **.shaded.org.jctools.queues.** {
                                long producerIndex;
                                long consumerIndex;
                                java.lang.Object[] elements;
                                }</option>
              <option>-keepclassmembers class **.io.netty.util.internal.PlatformDependent** { *; }</option>
              <option>-keep class **.shaded.org.jctools.util.UnsafeAccess { *; }</option>
              <option>-keep class **.shaded.io.grpc.netty.shaded.io.netty.util.internal.shaded.org.jctools.** { *; }</option>
              <option>-keep class **.shaded.io.grpc.** { *; }</option>
              <option>-keep class **.shaded.io.netty.** { *; }</option>
            </options>
          </configuration>
        </plugin>
      </plugins>
    </pluginManagement>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <compilerArgs>
            <arg>-XDignore.symbol.file</arg>
          </compilerArgs>
          <fork>true</fork>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>aspectj-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>test-compile</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
          <complianceLevel>1.8</complianceLevel>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.5.0</version>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-transform-maven-shade-plugin-extensions</artifactId>
            <version>0.1.0</version>
          </dependency>
        </dependencies>
        <configuration>
          <relocations>
            <relocation>
              <pattern>ch.qos.logback</pattern>
              <shadedPattern>browserstack.shaded.ch.qos.logback</shadedPattern>
            </relocation>
            <relocation>
              <rawString>true</rawString>
              <pattern>^logback.configurationFile$</pattern>
              <shadedPattern>browserstack.shaded.logback.configurationFile</shadedPattern>
            </relocation>
            <relocation>
              <rawString>true</rawString>
              <pattern>^logback(-test)?.xml$</pattern>
              <shadedPattern>browserstack-logback$1.xml</shadedPattern>
            </relocation>
            <relocation>
              <rawString>true</rawString>
              <pattern>^java:comp/env/logback/configuration-resource$</pattern>
              <shadedPattern>java:comp/env/browserstack.shaded.logback/configuration-resource</shadedPattern>
            </relocation>
            <relocation>
              <rawString>true</rawString>
              <pattern>^java:comp/env/logback/context-name$</pattern>
              <shadedPattern>java:comp/env/browserstack.shaded.logback/context-name</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.slf4j</pattern>
              <shadedPattern>browserstack.shaded.org.slf4j</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.apache.commons</pattern>
              <shadedPattern>browserstack.shaded.commons</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.javassist</pattern>
              <shadedPattern>browserstack.shaded.org.javassist</shadedPattern>
            </relocation>
            <relocation>
              <pattern>javassist</pattern>
              <shadedPattern>browserstack.shaded.javassist</shadedPattern>
            </relocation>
            <relocation>
              <pattern>okhttp3</pattern>
              <shadedPattern>browserstack.shaded.okhttp3</shadedPattern>
            </relocation>
            <relocation>
              <pattern>okio</pattern>
              <shadedPattern>browserstack.shaded.okio</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.json</pattern>
              <shadedPattern>browserstack.shaded.org.json</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.jsoup</pattern>
              <shadedPattern>browserstack.shaded.org.jsoup</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.eclipse.jgit</pattern>
              <shadedPattern>browserstack.shaded.org.eclipse.jgit</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.github.markusbernhardt</pattern>
              <shadedPattern>browserstack.shaded.com.github.markusbernhardt</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.fasterxml.jackson</pattern>
              <shadedPattern>browserstack.shaded.jackson</shadedPattern>
            </relocation>
            <relocation>
              <pattern>com.google</pattern>
              <shadedPattern>browserstack.shaded.com.google</shadedPattern>
            </relocation>
            <relocation>
              <pattern>io.grpc</pattern>
              <shadedPattern>browserstack.shaded.io.grpc</shadedPattern>
            </relocation>
            <relocation>
              <pattern>io.netty</pattern>
              <shadedPattern>browserstack.shaded.io.netty</shadedPattern>
            </relocation>
            <relocation>
              <pattern>org.bouncycastle</pattern>
              <shadedPattern>browserstack.shaded.org.bouncycastle</shadedPattern>
            </relocation>
          </relocations>
          <filters>
            <filter>
              <artifact>*:*</artifact>
              <excludes>
                <exclude>META-INF/*.SF</exclude>
                <exclude>META-INF/*.DSA</exclude>
                <exclude>META-INF/*.RSA</exclude>
                <exclude>org/testng/log4testng/*</exclude>
              </excludes>
            </filter>
          </filters>
          <transformers>
            <transformer />
            <transformer>
              <manifestEntries>
                <Premain-Class>com.browserstack.BrowserStackJavaAgent</Premain-Class>
                <Agent-Class>com.browserstack.BrowserStackJavaAgent</Agent-Class>
                <Can-Redefine-Classes>true</Can-Redefine-Classes>
                <Can-Retransform-Classes>true</Can-Retransform-Classes>
                <Specification-Title>${project.artifactId}</Specification-Title>
                <Specification-Version>${project.version}</Specification-Version>
                <Implementation-Title>${project.artifactId}</Implementation-Title>
                <Implementation-Version>${project.version}</Implementation-Version>
                <Implementation-Vendor-Id>${project.groupId}</Implementation-Vendor-Id>
              </manifestEntries>
            </transformer>
            <transformer />
          </transformers>
          <useDependencyReducedPomInJar>true</useDependencyReducedPomInJar>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
          <execution>
            <id>empty-javadoc-jar</id>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>javadoc</classifier>
              <classesDirectory>${basedir}/javadoc</classesDirectory>
            </configuration>
          </execution>
          <execution>
            <id>empty-sources-jar</id>
            <phase>package</phase>
            <goals>
              <goal>jar</goal>
            </goals>
            <configuration>
              <classifier>sources</classifier>
              <classesDirectory>${basedir}/sources</classesDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <argLine>--add-opens java.base/java.lang=ALL-UNNAMED
                        --add-opens java.base/java.nio=ALL-UNNAMED
                        --add-opens java.base/sun.nio.ch=ALL-UNNAMED
                        --add-opens java.base/java.util.concurrent=ALL-UNNAMED</argLine>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-gpg-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
          <execution>
            <id>sign-artifacts</id>
            <phase>verify</phase>
            <goals>
              <goal>sign</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.sonatype.central</groupId>
        <artifactId>central-publishing-maven-plugin</artifactId>
        <version>0.4.0</version>
        <extensions>true</extensions>
        <configuration>
          <publishingServerId>central</publishingServerId>
          <tokenAuth>true</tokenAuth>
          <autoPublish>true</autoPublish>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.xolstice.maven.plugins</groupId>
        <artifactId>protobuf-maven-plugin</artifactId>
        <version>0.6.1</version>
        <executions>
          <execution>
            <goals>
              <goal>compile</goal>
              <goal>compile-custom</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <protocArtifact>com.google.protobuf:protoc:3.25.3:exe:${os.detected.classifier}</protocArtifact>
          <pluginId>grpc-java</pluginId>
          <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.68.0:exe:${os.detected.classifier}</pluginArtifact>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <profiles>
    <profile>
      <id>java8-</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.wvengen</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <version>2.4.0</version>
            <executions>
              <execution>
                <id>proguard</id>
                <phase>package</phase>
                <goals>
                  <goal>proguard</goal>
                </goals>
                <configuration>
                  <libs>
                    <lib>/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar</lib>
                    <lib>/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar</lib>
                    <lib>/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar</lib>
                  </libs>
                  <includeDependency>false</includeDependency>
                  <injar>browserstack-java-sdk-1.40.5.jar</injar>
                  <outjar>browserstack-java-sdk-1.40.5.jar</outjar>
                  <options>
                    <option>-dontskipnonpubliclibraryclassmembers</option>
                    <option>-allowaccessmodification</option>
                    <option>-adaptclassstrings</option>
                    <option>-adaptresourcefilenames **.properties</option>
                    <option>-adaptresourcefilecontents **.properties,META-INF/MANIFEST.MF</option>
                    <option>-verbose</option>
                    <option>-dontnote</option>
                    <option>-dontwarn</option>
                    <option>-keepattributes *Annotation*</option>
                    <option>-keepattributes Signature,InnerClasses,EnclosingMethod</option>
                    <option>-ignorewarnings</option>
                    <option>-keepclasseswithmembers class *</option>
                    <option>-keepclasseswithmembers,allowshrinking public final @interface  * {
                                public private protected static final volatile transient synthetic &lt;fields&gt;;
                                }</option>
                    <option>-keepclasseswithmembers public class * { public static void main(java.lang.String[]); }</option>
                    <option>-keep public class * extends java.applet.Applet</option>
                    <option>-keep public class * extends javax.servlet.Servlet</option>
                    <option>-keep public class * extends javax.microedition.midlet.MIDlet</option>
                    <option>-keep public class * extends javax.tv.xlet.Xlet</option>
                    <option>-keep public class org.slf4j.** { *; }</option>
                    <option>-keep class org.gradle.** { *; }</option>
                    <option>-keep class org.apache.logging.** { *; }</option>
                    <option>-keep public class ch.qos.logback.** { *; }</option>
                    <option>-keep public class * {
                                public protected &lt;fields&gt;;
                                public protected &lt;methods&gt;;
                                }</option>
                    <option>-keepclassmembers enum  * {
                                public static **[] values();
                                public static ** valueOf(java.lang.String);
                                }</option>
                    <option>-keepclassmembers class * extends java.io.Serializable {
                                static final long serialVersionUID;
                                static final java.io.ObjectStreamField[] serialPersistentFields;
                                private void writeObject(java.io.ObjectOutputStream);
                                private void readObject(java.io.ObjectInputStream);
                                java.lang.Object writeReplace();
                                java.lang.Object readResolve();
                                }</option>
                    <option>-keep class * extends java.beans.BeanInfo</option>
                    <option>-keep class * {
                                void set*(***);
                                void set*(int,***);
                                boolean is*();
                                boolean is*(int);
                                *** get*();
                                *** get*(int);
                                }</option>
                    <option>-keep class * extends java.sql.Driver</option>
                    <option>-keep class * extends javax.swing.plaf.ComponentUI {
                                public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
                                }</option>
                    <option>-keepclasseswithmembers,includedescriptorclasses,allowshrinking class * {
                                native &lt;methods&gt;;
                                }</option>
                    <option>-keepclassmembers,allowshrinking class * {
                                java.lang.Class class$(java.lang.String);
                                java.lang.Class class$(java.lang.String,boolean);
                                }</option>
                    <option>-keepclassmembers,allowshrinking class * {
                                @proguard.annotation.KeepName
                                &lt;fields&gt;;
                                @proguard.annotation.KeepName
                                &lt;methods&gt;;
                                }</option>
                    <option>-keepclassmembers,allowshrinking @proguard.annotation.KeepClassMemberNames class * {
                                &lt;fields&gt;;
                                &lt;methods&gt;;
                                }</option>
                    <option>-keepclassmembers,allowshrinking @proguard.annotation.KeepPublicClassMemberNames class * {
                                public &lt;fields&gt;;
                                public &lt;methods&gt;;
                                }</option>
                    <option>-keepclassmembers,allowshrinking @proguard.annotation.KeepPublicProtectedClassMemberNames class * {
                                public protected &lt;fields&gt;;
                                public protected &lt;methods&gt;;
                                }</option>
                    <option>-keep @interface com.browserstack.monitoring.Measured</option>
                    <option>-keep enum com.browserstack.monitoring.Events { *; }</option>
                    <option>-keep enum com.browserstack.monitoring.Stage { *; }</option>
                    <option>-keepclassmembers class * { @com.browserstack.monitoring.Measured *; }</option>
                    <option>-keep,allowshrinking @proguard.annotation.KeepName class *</option>
                    <option>-keep class io.grpc.** { *; }</option>
                    <option>-keepclassmembernames class **.shaded.org.jctools.queues.** {
                                long producerIndex;
                                long consumerIndex;
                                java.lang.Object[] elements;
                                }</option>
                    <option>-keepclassmembers class **.io.netty.util.internal.PlatformDependent** { *; }</option>
                    <option>-keep class **.shaded.org.jctools.util.UnsafeAccess { *; }</option>
                    <option>-keep class **.shaded.io.grpc.netty.shaded.io.netty.util.internal.shaded.org.jctools.** { *; }</option>
                    <option>-keep class **.shaded.io.grpc.** { *; }</option>
                    <option>-keep class **.shaded.io.netty.** { *; }</option>
                  </options>
                </configuration>
              </execution>
            </executions>
            <dependencies>
              <dependency>
                <groupId>com.guardsquare</groupId>
                <artifactId>proguard-base</artifactId>
                <version>7.1.1</version>
                <scope>runtime</scope>
              </dependency>
            </dependencies>
            <configuration>
              <libs>
                <lib>/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/rt.jar</lib>
                <lib>/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jce.jar</lib>
                <lib>/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jsse.jar</lib>
              </libs>
              <includeDependency>false</includeDependency>
              <injar>browserstack-java-sdk-1.40.5.jar</injar>
              <outjar>browserstack-java-sdk-1.40.5.jar</outjar>
              <options>
                <option>-dontskipnonpubliclibraryclassmembers</option>
                <option>-allowaccessmodification</option>
                <option>-adaptclassstrings</option>
                <option>-adaptresourcefilenames **.properties</option>
                <option>-adaptresourcefilecontents **.properties,META-INF/MANIFEST.MF</option>
                <option>-verbose</option>
                <option>-dontnote</option>
                <option>-dontwarn</option>
                <option>-keepattributes *Annotation*</option>
                <option>-keepattributes Signature,InnerClasses,EnclosingMethod</option>
                <option>-ignorewarnings</option>
                <option>-keepclasseswithmembers class *</option>
                <option>-keepclasseswithmembers,allowshrinking public final @interface  * {
                                public private protected static final volatile transient synthetic &lt;fields&gt;;
                                }</option>
                <option>-keepclasseswithmembers public class * { public static void main(java.lang.String[]); }</option>
                <option>-keep public class * extends java.applet.Applet</option>
                <option>-keep public class * extends javax.servlet.Servlet</option>
                <option>-keep public class * extends javax.microedition.midlet.MIDlet</option>
                <option>-keep public class * extends javax.tv.xlet.Xlet</option>
                <option>-keep public class org.slf4j.** { *; }</option>
                <option>-keep class org.gradle.** { *; }</option>
                <option>-keep class org.apache.logging.** { *; }</option>
                <option>-keep public class ch.qos.logback.** { *; }</option>
                <option>-keep public class * {
                                public protected &lt;fields&gt;;
                                public protected &lt;methods&gt;;
                                }</option>
                <option>-keepclassmembers enum  * {
                                public static **[] values();
                                public static ** valueOf(java.lang.String);
                                }</option>
                <option>-keepclassmembers class * extends java.io.Serializable {
                                static final long serialVersionUID;
                                static final java.io.ObjectStreamField[] serialPersistentFields;
                                private void writeObject(java.io.ObjectOutputStream);
                                private void readObject(java.io.ObjectInputStream);
                                java.lang.Object writeReplace();
                                java.lang.Object readResolve();
                                }</option>
                <option>-keep class * extends java.beans.BeanInfo</option>
                <option>-keep class * {
                                void set*(***);
                                void set*(int,***);
                                boolean is*();
                                boolean is*(int);
                                *** get*();
                                *** get*(int);
                                }</option>
                <option>-keep class * extends java.sql.Driver</option>
                <option>-keep class * extends javax.swing.plaf.ComponentUI {
                                public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
                                }</option>
                <option>-keepclasseswithmembers,includedescriptorclasses,allowshrinking class * {
                                native &lt;methods&gt;;
                                }</option>
                <option>-keepclassmembers,allowshrinking class * {
                                java.lang.Class class$(java.lang.String);
                                java.lang.Class class$(java.lang.String,boolean);
                                }</option>
                <option>-keepclassmembers,allowshrinking class * {
                                @proguard.annotation.KeepName
                                &lt;fields&gt;;
                                @proguard.annotation.KeepName
                                &lt;methods&gt;;
                                }</option>
                <option>-keepclassmembers,allowshrinking @proguard.annotation.KeepClassMemberNames class * {
                                &lt;fields&gt;;
                                &lt;methods&gt;;
                                }</option>
                <option>-keepclassmembers,allowshrinking @proguard.annotation.KeepPublicClassMemberNames class * {
                                public &lt;fields&gt;;
                                public &lt;methods&gt;;
                                }</option>
                <option>-keepclassmembers,allowshrinking @proguard.annotation.KeepPublicProtectedClassMemberNames class * {
                                public protected &lt;fields&gt;;
                                public protected &lt;methods&gt;;
                                }</option>
                <option>-keep @interface com.browserstack.monitoring.Measured</option>
                <option>-keep enum com.browserstack.monitoring.Events { *; }</option>
                <option>-keep enum com.browserstack.monitoring.Stage { *; }</option>
                <option>-keepclassmembers class * { @com.browserstack.monitoring.Measured *; }</option>
                <option>-keep,allowshrinking @proguard.annotation.KeepName class *</option>
                <option>-keep class io.grpc.** { *; }</option>
                <option>-keepclassmembernames class **.shaded.org.jctools.queues.** {
                                long producerIndex;
                                long consumerIndex;
                                java.lang.Object[] elements;
                                }</option>
                <option>-keepclassmembers class **.io.netty.util.internal.PlatformDependent** { *; }</option>
                <option>-keep class **.shaded.org.jctools.util.UnsafeAccess { *; }</option>
                <option>-keep class **.shaded.io.grpc.netty.shaded.io.netty.util.internal.shaded.org.jctools.** { *; }</option>
                <option>-keep class **.shaded.io.grpc.** { *; }</option>
                <option>-keep class **.shaded.io.netty.** { *; }</option>
              </options>
            </configuration>
          </plugin>
        </plugins>
      </build>
      <properties>
        <os.detected.bitness>64</os.detected.bitness>
        <os.detected.release.version>20.04</os.detected.release.version>
        <os.detected.release.like.ubuntu>true</os.detected.release.like.ubuntu>
        <os.detected.release>ubuntu</os.detected.release>
        <os.detected.name>linux</os.detected.name>
        <os.detected.release.like.debian>true</os.detected.release.like.debian>
        <os.detected.classifier>linux-x86_64</os.detected.classifier>
        <os.detected.arch>x86_64</os.detected.arch>
      </properties>
    </profile>
    <profile>
      <id>java9+</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.wvengen</groupId>
            <artifactId>proguard-maven-plugin</artifactId>
            <configuration>
              <libs>
                <lib>${java.home}/jmods/java.base.jmod</lib>
              </libs>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
  <dependencies>
    <dependency>
      <groupId>org.testng</groupId>
      <artifactId>testng</artifactId>
      <version>7.5.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-remote-driver</artifactId>
      <version>3.141.59</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.microsoft.playwright</groupId>
      <artifactId>playwright</artifactId>
      <version>1.28.0</version>
      <scope>provided</scope>
      <exclusions>
        <exclusion>
          <artifactId>driver-bundle</artifactId>
          <groupId>com.microsoft.playwright</groupId>
        </exclusion>
      </exclusions>
    </dependency>
    <dependency>
      <groupId>io.cucumber</groupId>
      <artifactId>cucumber-core</artifactId>
      <version>7.8.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>io.cucumber</groupId>
      <artifactId>gherkin</artifactId>
      <version>24.0.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>io.appium</groupId>
      <artifactId>java-client</artifactId>
      <version>7.6.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.tomcat</groupId>
      <artifactId>annotations-api</artifactId>
      <version>6.0.53</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>
  <distributionManagement>
    <repository>
      <id>central</id>
      <url>https://central.sonatype.com/api/v1/publisher/deployments/upload/</url>
    </repository>
  </distributionManagement>
  <properties>
    <project.build.finalName>browserstack-javaagent</project.build.finalName>
    <org.eclipse.jgit.version>5.13.3.202401111512-r</org.eclipse.jgit.version>
    <commons.lang3.version>3.11</commons.lang3.version>
    <maven.compiler.testTarget>${maven.compiler.testSource}</maven.compiler.testTarget>
    <gson.version>2.9.1</gson.version>
    <selenium.version>3.141.59</selenium.version>
    <okhttp.version>3.14.9</okhttp.version>
    <testng.version>7.5.1</testng.version>
    <playwright.version>1.28.0</playwright.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <javassist.version>3.26.0-GA</javassist.version>
    <maven-site-plugin.version>3.3</maven-site-plugin.version>
    <jackson-databind.version>2.15.0</jackson-databind.version>
    <version.proguard-base>7.1.1</version.proguard-base>
    <snakeyml.version>2.0</snakeyml.version>
    <logback.version>1.2.13</logback.version>
    <slf4j.version>1.7.36</slf4j.version>
    <browserstack.local.version>[1.0.9,2.0.0)</browserstack.local.version>
    <jackson-core.version>2.15.0</jackson-core.version>
    <jsoup.version>1.15.3</jsoup.version>
    <maven.compiler.target>${maven.compiler.source}</maven.compiler.target>
    <json-simple.version>1.1.1</json-simple.version>
    <gherkin.version>24.0.0</gherkin.version>
    <maven.compiler.testSource>${maven.compiler.source}</maven.compiler.testSource>
    <log4j.version>2.20.0</log4j.version>
    <cucumber.version>7.8.1</cucumber.version>
  </properties>
</project>
