<commit_before><?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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<packaging>jar</packaging>
	<artifactId>structured_si</artifactId>
	<name>${project.artifactId}-${envClassifier}</name>
	<description>Splice Engine Snapshot Isolation</description>

	<parent>
		<artifactId>spliceengine</artifactId>
		<groupId>com.splicemachine</groupId>
		<version>1.0.0RC2-SNAPSHOT</version>
	</parent>

	<dependencies>
		<dependency> <groupId>com.carrotsearch</groupId> <artifactId>hppc</artifactId> </dependency>
		<dependency> <groupId>com.github.stephenc.high-scale-lib</groupId> <artifactId>high-scale-lib</artifactId> </dependency>
		<dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> </dependency>
		<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency>
		<dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> </dependency>
		<dependency> <groupId>com.splicemachine</groupId> <artifactId>asynchbase</artifactId> </dependency>
		<dependency> <groupId>com.splicemachine</groupId> <artifactId>structured_constants</artifactId> <classifier>${envClassifier}</classifier> </dependency>
		<dependency> <groupId>com.splicemachine</groupId> <artifactId>utilities</artifactId> </dependency>
		<dependency> <groupId>com.stumbleupon</groupId> <artifactId>async</artifactId> </dependency>
		<dependency> <groupId>com.yammer.metrics</groupId> <artifactId>metrics-core</artifactId> </dependency>
		<dependency> <groupId>io.netty</groupId> <artifactId>netty</artifactId> </dependency>
		<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency>
		<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </dependency>
		<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency>
		<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> </dependency>
	</dependencies>

	<build>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
	</build>

	<profiles>
		<profile>
			<id>obfuscate</id>
			<activation>
				<property>
					<name>obfuscate</name>
					<value>true</value>
				</property>
			</activation>
			<properties>
				<obfuscate.si>-obfuscated</obfuscate.si>
			</properties>
			<build>
				<plugins>
					<plugin>
						<groupId>com.github.wvengen</groupId>
						<artifactId>proguard-maven-plugin</artifactId>
						<version>2.0.7</version>
						<configuration>
							<injar>${project.build.finalName}-${envClassifier}.jar</injar>
							<outputDirectory>${project.build.directory}</outputDirectory>
							<addMavenDescriptor>false</addMavenDescriptor>
							<appendClassifier>true</appendClassifier>
							<!-- archive></archive -->
							<attach>true</attach>
							<attachArtifactClassifier>${envClassifier}${obfuscate.si}</attachArtifactClassifier>
							<attachArtifactType>jar</attachArtifactType>
							<!-- exclusions></exclusions -->
							<!-- inFilter></inFilter -->
							<includeDependency>true</includeDependency>
							<injarNotExistsSkip>false</injarNotExistsSkip>
							<libs>
								<lib>${java.home}/lib/rt.jar</lib>
								<lib>${java.home}/lib/jsse.jar</lib>
								<lib>${java.home}/lib/jce.jar</lib>
								<lib>${java.home}/lib/charsets.jar</lib>
							</libs>
							<!-- maxMemory></maxMemory -->
							<options>
								<!-- This has to be set or all generics are lost.  -->
								<option>-keepattributes Signature</option>
								<option>-keepattributes Exceptions</option>
								<!-- # Write out an obfuscation mapping file for de-obfuscating any stack traces. -->
								<!-- # Or for incremental obfuscation of extensions... this will allow for patching obfuscated code if needed. -->
								<option>-printmapping
									${project.build.directory}/${project.build.finalName}-${envClassifier}.map
								</option>
								<!-- # Kick-ass option to list all classes and class members that match the various -keep options. -->
								<!-- # Awesome for debugging config files. -->
								<option>-printseeds
									${project.build.directory}/${project.build.finalName}-${envClassifier}.keep
								</option>
								<!-- ################################################# -->
								<!-- ### From the example for a typical library... ### -->
								<!-- ################################################# -->
								<!-- # SourceFile and LineNumberTable are needed for useful obfuscated stack traces.  Without these, the stack traces cannot be deciphered later on. -->
								<!-- # *Annotation* is needed to preserve @MXBean annotations for TransactionStatus. -->
								<!-- InnerClasses is needed for SI inner classes in SegmentedRollForward -->
								<option>-renamesourcefileattribute SourceFile</option>
								<option>-keepattributes SourceFile,LineNumberTable,MXBean,*Annotation*,InnerClasses</option>
								<!-- # Needed to keep enumerations working. -->
								<option>-keepclassmembers,allowoptimization enum * {
									public static **[] values();
									public static ** valueOf(java.lang.String);
									}
								</option>
								<!-- # Preserves methods and members for Serializable classes that are actually used. -->
								<!-- # TODO: Do we need to add Formattable too? -->
								<option>-keepclassmembers class * implements java.io.Serializable {
									static final long serialVersionUID;
									private 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>
								<!-- ################################################################ -->
								<!-- ### From the example of obfuscating the ProGuard jar file... ### -->
								<!-- ################################################################ -->
								<!-- # Allow methods with the same signature, except for the return type, to get the same obfuscation name. -->
								<option>-overloadaggressively</option>
								<!-- # Put all obfuscated classes into the nameless root package. -->
								<option>-repackageclasses ''</option>
								<!-- # Allow classes and class members to be made public. -->
								<option>-allowaccessmodification</option>
								<!-- ################################### -->
								<!-- ### Overrides for structured_si ### -->
								<!-- ################################### -->
								<!-- # Just ignore the duplicate class definitions for now.  Our class path is crazy long and probably needs to be cleaned up.-->
								<option>-dontnote</option>
								<!-- # Ignore bogus warnings that are being generated from the Apache Derby java/stubs source code.-->
								<!-- # I believe these files could just be deleted from our repo.  This should be confirmed before deletion.-->
								<option>-ignorewarnings</option>
								<!-- ################################### -->
								<!-- ### Overrides for structured_si ### -->
								<!-- ################################### -->
								<!-- # Preserve the classes accessed externally. -->
								<option>-keep public class com.splicemachine.si.impl.WriteConflict { public *; } </option>
                                <option>-keep public class com.splicemachine.si.impl.AdditiveWriteConflict { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.DDLFilter { public *; }</option>
								<option>-keep public class com.splicemachine.si.impl.PackedTxnFilter { public *; }</option>
								<option>-keep public class com.splicemachine.si.impl.PushBackIterator { public *; }</option>
								<option>-keep public class com.splicemachine.si.impl.Transaction { public *; }</option>
								<option>-keep public class com.splicemachine.si.impl.TransactionStore { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.RowAccumulator { public *; } </option>
								<option>-keep public class com.splicemachine.si.data.hbase.HRowAccumulator { public *; } </option>
								<option>-keep public class com.splicemachine.si.data.hbase.IHTable { public *; } </option>
								<option>-keep public class com.splicemachine.si.coprocessors.SIObserver { public *; } </option>
								<option>-keep public class com.splicemachine.si.coprocessors.SIFilter { public *; } </option>
								<option>-keep public class com.splicemachine.si.coprocessors.RollForwardQueueMap { public *; } </option>
								<option>-keep public class com.splicemachine.si.coprocessors.TimestampMasterObserver { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.timestamp.TimestampMasterManagement { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.timestamp.TimestampRegionManagement { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.timestamp.TimestampOracle { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.timestamp.TimestampClient { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.Tracer { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.Transactor { public *; }</option>
								<option>-keep public class com.splicemachine.si.impl.RootTransaction { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TransactionalFilter { public *; } </option>
								<option>-keep public class com.splicemachine.si.api.TransactionReadController { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.ConstraintChecker { public *; }</option>
								<!-- ### Method: beginTransaction ### -->
								<option>-keep public class com.splicemachine.si.api.TransactionManager { public *; } </option>
								<!-- ### Needed for SpliceDriver.registerJMX() during database booting. ### -->
								<option>-keep public class com.splicemachine.si.api.HTransactorFactory { public *; } </option> <!-- ### Method: beginTransaction ### -->
								<option>-keep public class com.splicemachine.si.impl.SITransactionManager { public *; } </option>
								<!-- ### Needed as return value from TransactionManager.beginTransaction() ### -->
								<option>-keep public class com.splicemachine.si.impl.TransactionId { public *; } </option>
								<!-- ### Needed as return value from HTransactorFactory.getTransactorStatus() in SpliceDriver.registerJMX(). ### -->
								<option>-keep public class com.splicemachine.si.jmx.ManagedTransactor { public *; } </option>
								<!-- ### Needed as return value from HTransactorFactory.getTransactorStatus() in SpliceDriver.registerJMX(). ### -->
								<option>-keep public class com.splicemachine.si.jmx.TransactorStatus { public *; } </option>
								<!-- ### Needed by ij for SELECT queries. ### -->
								<option>-keep public class com.splicemachine.si.impl.RowAccumulator { public *; } </option>
								<!-- ### Method, newFilterState, needed by ij for SELECT queries. TODO: only need method? ### -->
								<option>-keep public class com.splicemachine.si.api.TransactionReadController { public *; } </option>
								<!-- ### Method, newFilterState, needs this as a parameter. ### -->
								<option>-keep public class com.splicemachine.si.api.RollForwardQueue { public *; } </option>
								<!-- ### Method, newFilterState, needs this as a parameter. ### -->
								<option>-keep public class com.splicemachine.si.impl.TxnFilter { public *; }</option>
								<!-- ### Method, newFilterState, needs this as a parameter. ### -->
								<option>-keep public class com.splicemachine.si.impl.FilterState { public *; }</option>
								<!-- ### Needed by ij for INSERT statements. ### -->
								<option>-keep public class com.splicemachine.si.data.hbase.HbRegion { public *; } </option>
								<!-- ### Needed for ITs. ### -->
								<option>-keep public class com.splicemachine.si.api.TransactionStatus { public *; } </option>
								<option>-keep public class com.splicemachine.si.api.TransactorListener { public *; } </option>
								<option>-keep public class com.splicemachine.si.api.SIFilter { public *; }</option>
								<!-- ### Needed after Scott's re-factoring of SI. ### -->
								<option>-keep public class com.splicemachine.si.api.CannotCommitException { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.ReadOnlyModificationException { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.ReadResolver { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.RollForward { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TransactionalRegion { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TransactionLifecycle { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TransactionOperations { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TransactionStorage { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.Txn { public *; } </option>
								<option>-keep public enum com.splicemachine.si.api.Txn$IsolationLevel { public *; } </option>
								<option>-keep public enum com.splicemachine.si.api.Txn$State { public *; } </option>
								<option>-keep public class com.splicemachine.si.api.TxnDataStore { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TxnLifecycleManager { public *; }</option>
								<option>-keep public interface com.splicemachine.si.impl.txnclient.TxnStoreManagement {public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TxnOperationFactory { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TxnStore { public *; }</option><commit_msg>DB-2145 Fix Obfuscated Build Breakage<commit_after><?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/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<packaging>jar</packaging>
	<artifactId>structured_si</artifactId>
	<name>${project.artifactId}-${envClassifier}</name>
	<description>Splice Engine Snapshot Isolation</description>

	<parent>
		<artifactId>spliceengine</artifactId>
		<groupId>com.splicemachine</groupId>
		<version>1.0.0RC2-SNAPSHOT</version>
	</parent>

	<dependencies>
		<dependency> <groupId>com.carrotsearch</groupId> <artifactId>hppc</artifactId> </dependency>
		<dependency> <groupId>com.github.stephenc.high-scale-lib</groupId> <artifactId>high-scale-lib</artifactId> </dependency>
		<dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> </dependency>
		<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </dependency>
		<dependency> <groupId>com.lmax</groupId> <artifactId>disruptor</artifactId> </dependency>
		<dependency> <groupId>com.splicemachine</groupId> <artifactId>asynchbase</artifactId> </dependency>
		<dependency> <groupId>com.splicemachine</groupId> <artifactId>structured_constants</artifactId> <classifier>${envClassifier}</classifier> </dependency>
		<dependency> <groupId>com.splicemachine</groupId> <artifactId>utilities</artifactId> </dependency>
		<dependency> <groupId>com.stumbleupon</groupId> <artifactId>async</artifactId> </dependency>
		<dependency> <groupId>com.yammer.metrics</groupId> <artifactId>metrics-core</artifactId> </dependency>
		<dependency> <groupId>io.netty</groupId> <artifactId>netty</artifactId> </dependency>
		<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> </dependency>
		<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> </dependency>
		<dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency>
		<dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> </dependency>
	</dependencies>

	<build>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
				<filtering>true</filtering>
			</resource>
		</resources>
	</build>

	<profiles>
		<profile>
			<id>obfuscate</id>
			<activation>
				<property>
					<name>obfuscate</name>
					<value>true</value>
				</property>
			</activation>
			<properties>
				<obfuscate.si>-obfuscated</obfuscate.si>
			</properties>
			<build>
				<plugins>
					<plugin>
						<groupId>com.github.wvengen</groupId>
						<artifactId>proguard-maven-plugin</artifactId>
						<version>2.0.7</version>
						<configuration>
							<injar>${project.build.finalName}-${envClassifier}.jar</injar>
							<outputDirectory>${project.build.directory}</outputDirectory>
							<addMavenDescriptor>false</addMavenDescriptor>
							<appendClassifier>true</appendClassifier>
							<!-- archive></archive -->
							<attach>true</attach>
							<attachArtifactClassifier>${envClassifier}${obfuscate.si}</attachArtifactClassifier>
							<attachArtifactType>jar</attachArtifactType>
							<!-- exclusions></exclusions -->
							<!-- inFilter></inFilter -->
							<includeDependency>true</includeDependency>
							<injarNotExistsSkip>false</injarNotExistsSkip>
							<libs>
								<lib>${java.home}/lib/rt.jar</lib>
								<lib>${java.home}/lib/jsse.jar</lib>
								<lib>${java.home}/lib/jce.jar</lib>
								<lib>${java.home}/lib/charsets.jar</lib>
							</libs>
							<!-- maxMemory></maxMemory -->
							<options>
								<!-- This has to be set or all generics are lost.  -->
								<option>-keepattributes Signature</option>
								<option>-keepattributes Exceptions</option>
								<!-- # Write out an obfuscation mapping file for de-obfuscating any stack traces. -->
								<!-- # Or for incremental obfuscation of extensions... this will allow for patching obfuscated code if needed. -->
								<option>-printmapping
									${project.build.directory}/${project.build.finalName}-${envClassifier}.map
								</option>
								<!-- # Kick-ass option to list all classes and class members that match the various -keep options. -->
								<!-- # Awesome for debugging config files. -->
								<option>-printseeds
									${project.build.directory}/${project.build.finalName}-${envClassifier}.keep
								</option>
								<!-- ################################################# -->
								<!-- ### From the example for a typical library... ### -->
								<!-- ################################################# -->
								<!-- # SourceFile and LineNumberTable are needed for useful obfuscated stack traces.  Without these, the stack traces cannot be deciphered later on. -->
								<!-- # *Annotation* is needed to preserve @MXBean annotations for TransactionStatus. -->
								<!-- InnerClasses is needed for SI inner classes in SegmentedRollForward -->
								<option>-renamesourcefileattribute SourceFile</option>
								<option>-keepattributes SourceFile,LineNumberTable,MXBean,*Annotation*,InnerClasses</option>
								<!-- # Needed to keep enumerations working. -->
								<option>-keepclassmembers,allowoptimization enum * {
									public static **[] values();
									public static ** valueOf(java.lang.String);
									}
								</option>
								<!-- # Preserves methods and members for Serializable classes that are actually used. -->
								<!-- # TODO: Do we need to add Formattable too? -->
								<option>-keepclassmembers class * implements java.io.Serializable {
									static final long serialVersionUID;
									private 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>
								<!-- ################################################################ -->
								<!-- ### From the example of obfuscating the ProGuard jar file... ### -->
								<!-- ################################################################ -->
								<!-- # Allow methods with the same signature, except for the return type, to get the same obfuscation name. -->
								<option>-overloadaggressively</option>
								<!-- # Put all obfuscated classes into the nameless root package. -->
								<option>-repackageclasses ''</option>
								<!-- # Allow classes and class members to be made public. -->
								<option>-allowaccessmodification</option>
								<!-- ################################### -->
								<!-- ### Overrides for structured_si ### -->
								<!-- ################################### -->
								<!-- # Just ignore the duplicate class definitions for now.  Our class path is crazy long and probably needs to be cleaned up.-->
								<option>-dontnote</option>
								<!-- # Ignore bogus warnings that are being generated from the Apache Derby java/stubs source code.-->
								<!-- # I believe these files could just be deleted from our repo.  This should be confirmed before deletion.-->
								<option>-ignorewarnings</option>
								<!-- ################################### -->
								<!-- ### Overrides for structured_si ### -->
								<!-- ################################### -->
								<!-- # Preserve the classes accessed externally. -->
								<option>-keep public class com.splicemachine.si.impl.WriteConflict { public *; } </option>
                                <option>-keep public class com.splicemachine.si.impl.AdditiveWriteConflict { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.DDLFilter { public *; }</option>
								<option>-keep public class com.splicemachine.si.impl.PackedTxnFilter { public *; }</option>
								<option>-keep public class com.splicemachine.si.impl.PushBackIterator { public *; }</option>
								<option>-keep public class com.splicemachine.si.impl.Transaction { public *; }</option>
								<option>-keep public class com.splicemachine.si.impl.TransactionStore { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.RowAccumulator { public *; } </option>
								<option>-keep public class com.splicemachine.si.data.hbase.HRowAccumulator { public *; } </option>
								<option>-keep public class com.splicemachine.si.data.hbase.IHTable { public *; } </option>
								<option>-keep public class com.splicemachine.si.coprocessors.SIObserver { public *; } </option>
								<option>-keep public class com.splicemachine.si.coprocessors.SIFilter { public *; } </option>
								<option>-keep public class com.splicemachine.si.coprocessors.RollForwardQueueMap { public *; } </option>
								<option>-keep public class com.splicemachine.si.coprocessors.TimestampMasterObserver { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.timestamp.TimestampMasterManagement { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.timestamp.TimestampRegionManagement { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.timestamp.TimestampOracle { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.timestamp.TimestampClient { public *; } </option>
								<option>-keep public class com.splicemachine.si.impl.Tracer { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.Transactor { public *; }</option>
								<option>-keep public class com.splicemachine.si.impl.RootTransaction { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TransactionalFilter { public *; } </option>
								<option>-keep public class com.splicemachine.si.api.TransactionReadController { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.ConstraintChecker { public *; }</option>
								<!-- ### Method: beginTransaction ### -->
								<option>-keep public class com.splicemachine.si.api.TransactionManager { public *; } </option>
								<!-- ### Needed for SpliceDriver.registerJMX() during database booting. ### -->
								<option>-keep public class com.splicemachine.si.api.HTransactorFactory { public *; } </option> <!-- ### Method: beginTransaction ### -->
								<option>-keep public class com.splicemachine.si.impl.SITransactionManager { public *; } </option>
								<!-- ### Needed as return value from TransactionManager.beginTransaction() ### -->
								<option>-keep public class com.splicemachine.si.impl.TransactionId { public *; } </option>
								<!-- ### Needed as return value from HTransactorFactory.getTransactorStatus() in SpliceDriver.registerJMX(). ### -->
								<option>-keep public class com.splicemachine.si.jmx.ManagedTransactor { public *; } </option>
								<!-- ### Needed as return value from HTransactorFactory.getTransactorStatus() in SpliceDriver.registerJMX(). ### -->
								<option>-keep public class com.splicemachine.si.jmx.TransactorStatus { public *; } </option>
								<!-- ### Needed by ij for SELECT queries. ### -->
								<option>-keep public class com.splicemachine.si.impl.RowAccumulator { public *; } </option>
								<!-- ### Method, newFilterState, needed by ij for SELECT queries. TODO: only need method? ### -->
								<option>-keep public class com.splicemachine.si.api.TransactionReadController { public *; } </option>
								<!-- ### Method, newFilterState, needs this as a parameter. ### -->
								<option>-keep public class com.splicemachine.si.api.RollForwardQueue { public *; } </option>
								<!-- ### Method, newFilterState, needs this as a parameter. ### -->
								<option>-keep public class com.splicemachine.si.impl.TxnFilter { public *; }</option>
								<!-- ### Method, newFilterState, needs this as a parameter. ### -->
								<option>-keep public class com.splicemachine.si.impl.FilterState { public *; }</option>
								<!-- ### Needed by ij for INSERT statements. ### -->
								<option>-keep public class com.splicemachine.si.data.hbase.HbRegion { public *; } </option>
								<!-- ### Needed for ITs. ### -->
								<option>-keep public class com.splicemachine.si.api.TransactionStatus { public *; } </option>
								<option>-keep public class com.splicemachine.si.api.TransactorListener { public *; } </option>
								<option>-keep public class com.splicemachine.si.api.SIFilter { public *; }</option>
								<!-- ### Needed after Scott's re-factoring of SI. ### -->
								<option>-keep public class com.splicemachine.si.api.CannotCommitException { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TransactionTimestamps { public *; }</option>								
								<option>-keep public class com.splicemachine.si.api.ReadOnlyModificationException { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.ReadResolver { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.RollForward { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TransactionalRegion { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TransactionLifecycle { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TransactionOperations { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TransactionStorage { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.Txn { public *; } </option>
								<option>-keep public enum com.splicemachine.si.api.Txn$IsolationLevel { public *; } </option>
								<option>-keep public enum com.splicemachine.si.api.Txn$State { public *; } </option>
								<option>-keep public class com.splicemachine.si.api.TxnDataStore { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TxnLifecycleManager { public *; }</option>
								<option>-keep public interface com.splicemachine.si.impl.txnclient.TxnStoreManagement {public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TxnOperationFactory { public *; }</option>
								<option>-keep public class com.splicemachine.si.api.TxnStore { public *; }</option>
{'fraction_non_alphanumeric': 0.17349540675538788, 'fraction_numerical': 0.0023752139439030353, 'mean_word_length': 3.307854348480289, 'pattern_counts': {'":': 0, '<': 739, '<?xml version=': 2, '>': 739, 'https://': 0, 'lorem ipsum': 0, 'www.': 2, 'xml': 6}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7422762', 'n_tokens_mistral': 10712, 'n_tokens_neox': 8030, 'n_words': 1675}