From dcd676e15d07ca733791960cac1fe38ef9e98a8b Mon Sep 17 00:00:00 2001
From: chad <chad@totalium.com>
Date: Tue, 6 Dec 2022 00:10:28 -0700
Subject: [PATCH 1/9] personal data consents fix, reduce multi state subsection
 id

---
 .../datatype/encoder/Base64UrlEncoder.java    |  4 ---
 .../com/iab/gpp/encoder/section/UspCaV1.java  | 21 ++++++------
 .../com/iab/gpp/encoder/section/UspCoV1.java  | 12 +++----
 .../com/iab/gpp/encoder/section/UspCtV1.java  | 12 +++----
 .../com/iab/gpp/encoder/section/UspNatV1.java | 22 ++++++------
 .../com/iab/gpp/encoder/GppModelTest.java     |  8 ++---
 .../encoder/Base64UrlEncoderTest.java         |  4 +--
 .../iab/gpp/encoder/section/HeaderV1Test.java |  4 +--
 .../iab/gpp/encoder/section/TcfCaV2Test.java  |  2 +-
 .../iab/gpp/encoder/section/TcfEuV2Test.java  |  4 +--
 .../iab/gpp/encoder/section/UspCaV1Test.java  | 32 +++++++++++++----
 .../iab/gpp/encoder/section/UspCoV1Test.java  |  6 ++--
 .../iab/gpp/encoder/section/UspCtV1Test.java  |  6 ++--
 .../iab/gpp/encoder/section/UspNatV1Test.java | 34 ++++++++++++++++---
 .../iab/gpp/encoder/section/UspUtV1Test.java  |  6 ++--
 .../iab/gpp/encoder/section/UspV1Test.java    |  2 +-
 16 files changed, 109 insertions(+), 70 deletions(-)

diff --git a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoder.java b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoder.java
index a141ecea..72f02399 100644
--- a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoder.java
+++ b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoder.java
@@ -34,10 +34,6 @@ public static String encode(String bitString) throws EncodingException {
       throw new EncodingException("Unencodable Base64Url '" + bitString + "'");
     }
 
-    while (bitString.length() % 8 > 0) {
-      bitString += "0";
-    }
-
     while (bitString.length() % 6 > 0) {
       bitString += "0";
     }
diff --git a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCaV1.java b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCaV1.java
index 59f38f0d..ed015ed3 100644
--- a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCaV1.java
+++ b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCaV1.java
@@ -40,15 +40,15 @@ private void initFields() {
     fields.put(UspCaV1Field.SENSITIVE_DATA_LIMIT_USE_NOTICE, new EncodableFixedInteger(2, 0));
     fields.put(UspCaV1Field.SALE_OPT_OUT, new EncodableFixedInteger(2, 0));
     fields.put(UspCaV1Field.SHARING_OPT_OUT, new EncodableFixedInteger(2, 0));
-    fields.put(UspCaV1Field.SENSITIVE_DATA_PROCESSING, new EncodableFixedIntegerList(9, Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0, 0)));
+    fields.put(UspCaV1Field.SENSITIVE_DATA_PROCESSING, new EncodableFixedIntegerList(2, Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0, 0)));
     fields.put(UspCaV1Field.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS, new EncodableFixedIntegerList(2, Arrays.asList(0, 0)));
-    fields.put(UspCaV1Field.PERSONAL_DATA_CONSENTS, new EncodableFixedIntegerList(2, Arrays.asList(0, 0)));
+    fields.put(UspCaV1Field.PERSONAL_DATA_CONSENTS, new EncodableFixedInteger(2, 0));
     fields.put(UspCaV1Field.MSPA_COVERED_TRANSACTION, new EncodableFixedInteger(2, 0));
     fields.put(UspCaV1Field.MSPA_OPT_OUT_OPTION_MODE, new EncodableFixedInteger(2, 0));
     fields.put(UspCaV1Field.MSPA_SERVICE_PROVIDER_MODE, new EncodableFixedInteger(2, 0));
 
     // gpc segment
-    fields.put(UspCaV1Field.GPC_SEGMENT_TYPE, new EncodableFixedInteger(3, 1));
+    fields.put(UspCaV1Field.GPC_SEGMENT_TYPE, new EncodableFixedInteger(2, 1));
     fields.put(UspCaV1Field.GPC, new EncodableBoolean(false));
     
     //@formatter:off
@@ -100,18 +100,18 @@ public void decode(String encodedSection) throws DecodingException {
     String[] segmentBitStrings = new String[2];
     for (int i = 0; i < encodedSegments.length; i++) {
       /**
-       * first char will contain 6 bits, we only need the first 3. 
+       * first char will contain 6 bits, we only need the first 2. 
        * There is no segment type for the CORE string. Instead the first 6 bits are reserved for the
-       * encoding version, but because we're only on a maximum of encoding version 2 the first 3 bits in
+       * encoding version, but because we're only on a maximum of encoding version 2 the first 2 bits in
        * the core segment will evaluate to 0.
        */
       String segmentBitString = Base64UrlEncoder.decode(encodedSegments[i]);
-      switch (segmentBitString.substring(0, 3)) {
-        case "000": {
+      switch (segmentBitString.substring(0, 2)) {
+        case "00": {
           segmentBitStrings[0] = segmentBitString;
           break;
         }
-        case "001": {
+        case "01": {
           segmentBitStrings[1] = segmentBitString;
           break;
         }
@@ -167,9 +167,8 @@ public List<Integer> getKnownChildSensitiveDataConsents() {
     return (List<Integer>) this.fields.get(UspCaV1Field.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS).getValue();
   }
 
-  @SuppressWarnings("unchecked")
-  public List<Integer> getPersonalDataConsents() {
-    return (List<Integer>) this.fields.get(UspCaV1Field.PERSONAL_DATA_CONSENTS).getValue();
+  public Integer getPersonalDataConsents() {
+    return (Integer) this.fields.get(UspCaV1Field.PERSONAL_DATA_CONSENTS).getValue();
   }
 
   public Integer getMspaCoveredTransaction() {
diff --git a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCoV1.java b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCoV1.java
index 8d852be0..b69616e7 100644
--- a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCoV1.java
+++ b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCoV1.java
@@ -47,7 +47,7 @@ private void initFields() {
     fields.put(UspCoV1Field.MSPA_SERVICE_PROVIDER_MODE, new EncodableFixedInteger(2, 0));
 
     // gpc segment
-    fields.put(UspCoV1Field.GPC_SEGMENT_TYPE, new EncodableFixedInteger(3, 1));
+    fields.put(UspCoV1Field.GPC_SEGMENT_TYPE, new EncodableFixedInteger(2, 1));
     fields.put(UspCoV1Field.GPC, new EncodableBoolean(false));
 
 
@@ -99,18 +99,18 @@ public void decode(String encodedSection) throws DecodingException {
     String[] segmentBitStrings = new String[2];
     for (int i = 0; i < encodedSegments.length; i++) {
       /**
-       * first char will contain 6 bits, we only need the first 3. 
+       * first char will contain 6 bits, we only need the first 2. 
        * There is no segment type for the CORE string. Instead the first 6 bits are reserved for the
-       * encoding version, but because we're only on a maximum of encoding version 2 the first 3 bits in
+       * encoding version, but because we're only on a maximum of encoding version 2 the first 2 bits in
        * the core segment will evaluate to 0.
        */
       String segmentBitString = Base64UrlEncoder.decode(encodedSegments[i]);
-      switch (segmentBitString.substring(0, 3)) {
-        case "000": {
+      switch (segmentBitString.substring(0, 2)) {
+        case "00": {
           segmentBitStrings[0] = segmentBitString;
           break;
         }
-        case "001": {
+        case "01": {
           segmentBitStrings[1] = segmentBitString;
           break;
         }
diff --git a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCtV1.java b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCtV1.java
index 6b9bd3ba..82710a7d 100644
--- a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCtV1.java
+++ b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspCtV1.java
@@ -47,7 +47,7 @@ private void initFields() {
     fields.put(UspCtV1Field.MSPA_SERVICE_PROVIDER_MODE, new EncodableFixedInteger(2, 0));
 
     // gpc segment
-    fields.put(UspCtV1Field.GPC_SEGMENT_TYPE, new EncodableFixedInteger(3, 1));
+    fields.put(UspCtV1Field.GPC_SEGMENT_TYPE, new EncodableFixedInteger(2, 1));
     fields.put(UspCtV1Field.GPC, new EncodableBoolean(false));
     
     //@formatter:off
@@ -98,18 +98,18 @@ public void decode(String encodedSection) throws DecodingException {
     String[] segmentBitStrings = new String[2];
     for (int i = 0; i < encodedSegments.length; i++) {
       /**
-       * first char will contain 6 bits, we only need the first 3. 
+       * first char will contain 6 bits, we only need the first 2. 
        * There is no segment type for the CORE string. Instead the first 6 bits are reserved for the
-       * encoding version, but because we're only on a maximum of encoding version 2 the first 3 bits in
+       * encoding version, but because we're only on a maximum of encoding version 2 the first 2 bits in
        * the core segment will evaluate to 0.
        */
       String segmentBitString = Base64UrlEncoder.decode(encodedSegments[i]);
-      switch (segmentBitString.substring(0, 3)) {
-        case "000": {
+      switch (segmentBitString.substring(0, 2)) {
+        case "00": {
           segmentBitStrings[0] = segmentBitString;
           break;
         }
-        case "001": {
+        case "01": {
           segmentBitStrings[1] = segmentBitString;
           break;
         }
diff --git a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspNatV1.java b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspNatV1.java
index 422269e5..770e0778 100644
--- a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspNatV1.java
+++ b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/section/UspNatV1.java
@@ -46,13 +46,13 @@ private void initFields() {
     fields.put(UspNatV1Field.TARGETED_ADVERTISING_OPT_OUT, new EncodableFixedInteger(2, 0));
     fields.put(UspNatV1Field.SENSITIVE_DATA_PROCESSING, new EncodableFixedIntegerList(2, Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0)));
     fields.put(UspNatV1Field.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS, new EncodableFixedIntegerList(2, Arrays.asList(0, 0)));
-    fields.put(UspNatV1Field.PERSONAL_DATA_CONSENTS, new EncodableFixedIntegerList(2, Arrays.asList(0, 0)));
+    fields.put(UspNatV1Field.PERSONAL_DATA_CONSENTS, new EncodableFixedInteger(2, 0));
     fields.put(UspNatV1Field.MSPA_COVERED_TRANSACTION, new EncodableFixedInteger(2, 0));
     fields.put(UspNatV1Field.MSPA_OPT_OUT_OPTION_MODE, new EncodableFixedInteger(2, 0));
     fields.put(UspNatV1Field.MSPA_SERVICE_PROVIDER_MODE, new EncodableFixedInteger(2, 0));
 
     // gpc segment
-    fields.put(UspNatV1Field.GPC_SEGMENT_TYPE, new EncodableFixedInteger(3, 1));
+    fields.put(UspNatV1Field.GPC_SEGMENT_TYPE, new EncodableFixedInteger(2, 1));
     fields.put(UspNatV1Field.GPC, new EncodableBoolean(false));
 
 
@@ -109,17 +109,18 @@ public void decode(String encodedSection) throws DecodingException {
     String[] segmentBitStrings = new String[2];
     for (int i = 0; i < encodedSegments.length; i++) {
       /**
-       * first char will contain 6 bits, we only need the first 3. There is no segment type for the CORE
-       * string. Instead the first 6 bits are reserved for the encoding version, but because we're only on
-       * a maximum of encoding version 2 the first 3 bits in the core segment will evaluate to 0.
+       * first char will contain 6 bits, we only need the first 2. 
+       * There is no segment type for the CORE string. Instead the first 6 bits are reserved for the
+       * encoding version, but because we're only on a maximum of encoding version 2 the first 2 bits in
+       * the core segment will evaluate to 0.
        */
       String segmentBitString = Base64UrlEncoder.decode(encodedSegments[i]);
-      switch (segmentBitString.substring(0, 3)) {
-        case "000": {
+      switch (segmentBitString.substring(0, 2)) {
+        case "00": {
           segmentBitStrings[0] = segmentBitString;
           break;
         }
-        case "001": {
+        case "01": {
           segmentBitStrings[1] = segmentBitString;
           break;
         }
@@ -191,9 +192,8 @@ public List<Integer> getKnownChildSensitiveDataConsents() {
     return (List<Integer>) this.fields.get(UspNatV1Field.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS).getValue();
   }
 
-  @SuppressWarnings("unchecked")
-  public List<Integer> getPersonalDataConsents() {
-    return (List<Integer>) this.fields.get(UspNatV1Field.PERSONAL_DATA_CONSENTS).getValue();
+  public Integer getPersonalDataConsents() {
+    return (Integer) this.fields.get(UspNatV1Field.PERSONAL_DATA_CONSENTS).getValue();
   }
 
   public Integer getMspaCoveredTransaction() {
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java
index 565953a6..1723047d 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java
@@ -71,7 +71,7 @@ public void testEncodeUspv1() throws EncodingException {
     
     
     String gppString = gppModel.encode();
-    Assertions.assertEquals("DBABTA~BbA", gppString);
+    Assertions.assertEquals("DBABT~Bb", gppString);
 
     Assertions.assertEquals(Arrays.asList(6), gppModel.getSectionIds());
     Assertions.assertEquals(true, gppModel.hasSection(UspV1.ID));
@@ -119,7 +119,7 @@ public void testEncodeTcfEuV2() throws EncodingException {
 
     
     String gppString = gppModel.encode();
-    Assertions.assertEquals("DBABMA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA", gppString);
+    Assertions.assertEquals("DBABM~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAA.QAAA.IAAA", gppString);
 
     Assertions.assertEquals(2, gppString.split("~").length);
 
@@ -168,7 +168,7 @@ public void testEncodeUspV1AndTcfEuV2() throws EncodingException {
     Assertions.assertEquals(false, gppModel.hasSection(TcfCaV2.NAME));
 
     String gppString = gppModel.encode();
-    Assertions.assertEquals("DBACNYA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BbA", gppString);
+    Assertions.assertEquals("DBACNY~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~Bb", gppString);
 
     Assertions.assertEquals(3, gppString.split("~").length);
 
@@ -266,7 +266,7 @@ public void testEncodeUspV1AndTcfEuV2AndTcfCaV2() throws EncodingException {
 
     String gppString = gppModel.encode();
     Assertions.assertEquals(
-        "DBACOeA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~CPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgAMAAwADAAIACQAHg.fHHHA4444ao~BbA",
+        "DBACOe~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~CPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgAMAAwADAAIACQAHg.fHHHA4444ao~Bb",
         gppString);
 
     Assertions.assertEquals(4, gppString.split("~").length);
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoderTest.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoderTest.java
index 50640349..f0f6b828 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoderTest.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoderTest.java
@@ -9,12 +9,12 @@ public class Base64UrlEncoderTest {
 
   @Test
   public void testEncode1() throws EncodingException {
-    Assertions.assertEquals("DBABMA", Base64UrlEncoder.encode("0000110000010000000000010011"));
+    Assertions.assertEquals("DBABM", Base64UrlEncoder.encode("0000110000010000000000010011"));
   }
 
   @Test
   public void testEncode2() throws EncodingException {
-    Assertions.assertEquals("DBACNYA", Base64UrlEncoder.encode("000011000001000000000010001101011"));
+    Assertions.assertEquals("DBACNY", Base64UrlEncoder.encode("000011000001000000000010001101011"));
   }
 
   @Test
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/HeaderV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/HeaderV1Test.java
index 37eae863..77299810 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/HeaderV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/HeaderV1Test.java
@@ -65,14 +65,14 @@ public void testEncode1() throws EncodingException {
   public void testEncode2() throws EncodingException {
     HeaderV1 headerV1 = new HeaderV1();
     headerV1.setFieldValue("SectionIds", Arrays.asList(2));
-    Assertions.assertEquals("DBABMA", headerV1.encode());
+    Assertions.assertEquals("DBABM", headerV1.encode());
   }
 
   @Test
   public void testEncode3() throws EncodingException {
     HeaderV1 headerV1 = new HeaderV1();
     headerV1.setFieldValue("SectionIds", Arrays.asList(2, 7));
-    Assertions.assertEquals("DBACMMA", headerV1.encode());
+    Assertions.assertEquals("DBACMM", headerV1.encode());
   }
 
   @Test
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfCaV2Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfCaV2Test.java
index 7d2dacca..0af64291 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfCaV2Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfCaV2Test.java
@@ -16,7 +16,7 @@ public class TcfCaV2Test {
   public void testEncode1() throws EncodingException {
 
     TcfCaV2 tcfCaV2 = new TcfCaV2();
-    Assertions.assertEquals("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAA.YAAAAAAAAAA", tcfCaV2.encode());
+    Assertions.assertEquals("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAA.YAAAAAAAAA", tcfCaV2.encode());
   }
 
   @Test
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfEuV2Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfEuV2Test.java
index ed480997..eec3faf7 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfEuV2Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfEuV2Test.java
@@ -15,7 +15,7 @@ public class TcfEuV2Test {
   @Test
   public void testEncode1() throws EncodingException {
     TcfEuV2 tcfEuV2 = new TcfEuV2();
-    Assertions.assertEquals("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA", tcfEuV2.encode());
+    Assertions.assertEquals("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAAAAAA.QAAA.IAAA", tcfEuV2.encode());
   }
 
   @Test
@@ -24,7 +24,7 @@ public void testEncode2() throws EncodingException {
     tcfEuV2.setFieldValue(TcfEuV2Field.IS_SERVICE_SPECIFIC, true);
     tcfEuV2.setFieldValue(TcfEuV2Field.CREATED, ZonedDateTime.of(2022, 1, 1, 0, 0, 0, 0, ZoneId.of("UTC")));
     tcfEuV2.setFieldValue(TcfEuV2Field.LAST_UPDATED, ZonedDateTime.of(2022, 1, 1, 0, 0, 0, 0, ZoneId.of("UTC")));
-    Assertions.assertEquals("CPSG_8APSG_8AAAAAAENAACgAAAAAAAAAAAAAAAAAAA.YAAAAAAAAAA", tcfEuV2.encode());
+    Assertions.assertEquals("CPSG_8APSG_8AAAAAAENAACgAAAAAAAAAAAAAAAAAA.YAAAAAAAAA", tcfEuV2.encode());
   }
 
   @Test
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCaV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCaV1Test.java
index db05369a..58d469f8 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCaV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCaV1Test.java
@@ -14,7 +14,7 @@ public class UspCaV1Test {
   public void testEncode1() throws EncodingException {
 
     UspCaV1 uspCaV1 = new UspCaV1();
-    Assertions.assertEquals("BAAAAAAAAAAAAAAAAAA.IA", uspCaV1.encode());
+    Assertions.assertEquals("BAAAAAAA.Q", uspCaV1.encode());
   }
 
   @Test
@@ -28,18 +28,38 @@ public void testEncode2() throws EncodingException {
     uspCaV1.setFieldValue(UspCaV1Field.SHARING_OPT_OUT, 2);
     uspCaV1.setFieldValue(UspCaV1Field.SENSITIVE_DATA_PROCESSING, Arrays.asList(0, 1, 2, 3, 0, 1, 2, 3, 0));
     uspCaV1.setFieldValue(UspCaV1Field.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS, Arrays.asList(0, 1));
-    uspCaV1.setFieldValue(UspCaV1Field.PERSONAL_DATA_CONSENTS, Arrays.asList(2, 3));
+    uspCaV1.setFieldValue(UspCaV1Field.PERSONAL_DATA_CONSENTS, 1);
     uspCaV1.setFieldValue(UspCaV1Field.MSPA_COVERED_TRANSACTION, 3);
     uspCaV1.setFieldValue(UspCaV1Field.MSPA_OPT_OUT_OPTION_MODE, 1);
     uspCaV1.setFieldValue(UspCaV1Field.MSPA_SERVICE_PROVIDER_MODE, 2);
     uspCaV1.setFieldValue(UspCaV1Field.GPC, true);
     
-    Assertions.assertEquals("BbYAAEBAMAAEBAMADew.MA", uspCaV1.encode());
+    Assertions.assertEquals("BbYbGwXY.Y", uspCaV1.encode());
   }
   
   @Test
-  public void testDecodde1() throws DecodingException {
-    UspCaV1 uspCaV1 = new UspCaV1("BbYAAEBAMAAEBAMADew.MA");
+  public void testEncode3() throws EncodingException {
+    UspCaV1 uspCaV1 = new UspCaV1();
+    
+    uspCaV1.setFieldValue(UspCaV1Field.SALE_OPT_OUT_NOTICE, 1);
+    uspCaV1.setFieldValue(UspCaV1Field.SHARING_OPT_OUT_NOTICE, 1);
+    uspCaV1.setFieldValue(UspCaV1Field.SENSITIVE_DATA_LIMIT_USE_NOTICE, 0);
+    uspCaV1.setFieldValue(UspCaV1Field.SALE_OPT_OUT, 2);
+    uspCaV1.setFieldValue(UspCaV1Field.SHARING_OPT_OUT, 2);
+    uspCaV1.setFieldValue(UspCaV1Field.SENSITIVE_DATA_PROCESSING, Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0, 0));
+    uspCaV1.setFieldValue(UspCaV1Field.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS, Arrays.asList(0, 0));
+    uspCaV1.setFieldValue(UspCaV1Field.PERSONAL_DATA_CONSENTS, 0);
+    uspCaV1.setFieldValue(UspCaV1Field.MSPA_COVERED_TRANSACTION, 1);
+    uspCaV1.setFieldValue(UspCaV1Field.MSPA_OPT_OUT_OPTION_MODE, 1);
+    uspCaV1.setFieldValue(UspCaV1Field.MSPA_SERVICE_PROVIDER_MODE, 0);
+    uspCaV1.setFieldValue(UspCaV1Field.GPC, true);
+    
+    Assertions.assertEquals("BUoAAABQ.Y", uspCaV1.encode());
+  }
+  
+  @Test
+  public void testDecode1() throws DecodingException {
+    UspCaV1 uspCaV1 = new UspCaV1("BbYbGwXY.Y");
     
     Assertions.assertEquals(1, uspCaV1.getSaleOptOutNotice());
     Assertions.assertEquals(2, uspCaV1.getSharingOptOut());
@@ -48,7 +68,7 @@ public void testDecodde1() throws DecodingException {
     Assertions.assertEquals(2, uspCaV1.getSharingOptOut());
     Assertions.assertEquals(Arrays.asList(0, 1, 2, 3, 0, 1, 2, 3, 0), uspCaV1.getSensitiveDataProcessing());
     Assertions.assertEquals(Arrays.asList(0, 1), uspCaV1.getKnownChildSensitiveDataConsents());
-    Assertions.assertEquals(Arrays.asList(2, 3), uspCaV1.getPersonalDataConsents());
+    Assertions.assertEquals(1, uspCaV1.getPersonalDataConsents());
     Assertions.assertEquals(3, uspCaV1.getMspaCoveredTransaction());
     Assertions.assertEquals(1, uspCaV1.getMspaOptOutOptionMode());
     Assertions.assertEquals(2, uspCaV1.getMspaServiceProviderMode());
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCoV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCoV1Test.java
index 4d0d9a0b..3f4bbaef 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCoV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCoV1Test.java
@@ -13,7 +13,7 @@ public class UspCoV1Test {
   @Test
   public void testEncode1() throws EncodingException {
     UspCoV1 uspCoV1 = new UspCoV1();
-    Assertions.assertEquals("BAAAAAA.IA", uspCoV1.encode());
+    Assertions.assertEquals("BAAAAAA.Q", uspCoV1.encode());
   }
 
   @Test
@@ -32,12 +32,12 @@ public void testEncode2() throws EncodingException {
     uspCoV1.setFieldValue(UspCoV1Field.MSPA_SERVICE_PROVIDER_MODE, 3);
     uspCoV1.setFieldValue(UspCoV1Field.GPC, true);
     
-    Assertions.assertEquals("BbYbG2w.MA", uspCoV1.encode());    
+    Assertions.assertEquals("BbYbG2w.Y", uspCoV1.encode());    
   }
   
   @Test
   public void testDecode1() throws DecodingException {
-    UspCoV1 uspCoV1 = new UspCoV1("BbYbG2w.MA");
+    UspCoV1 uspCoV1 = new UspCoV1("BbYbG2w.Y");
     
     Assertions.assertEquals(1, uspCoV1.getSharingNotice()); 
     Assertions.assertEquals(2, uspCoV1.getSaleOptOutNotice()); 
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCtV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCtV1Test.java
index f6f146a0..910f121d 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCtV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCtV1Test.java
@@ -13,7 +13,7 @@ public class UspCtV1Test {
   @Test
   public void testEncode1() throws EncodingException {
     UspCtV1 uspCtV1 = new UspCtV1();
-    Assertions.assertEquals("BAAAAAAA.IA", uspCtV1.encode());
+    Assertions.assertEquals("BAAAAAAA.Q", uspCtV1.encode());
   }
 
   @Test
@@ -32,12 +32,12 @@ public void testEncode2() throws EncodingException {
     uspCtV1.setFieldValue(UspCtV1Field.MSPA_SERVICE_PROVIDER_MODE, 3);
     uspCtV1.setFieldValue(UspCtV1Field.GPC, true);
     
-    Assertions.assertEquals("BbYbG22w.MA", uspCtV1.encode());    
+    Assertions.assertEquals("BbYbG22w.Y", uspCtV1.encode());    
   }
   
   @Test
   public void testDecode1() throws DecodingException {
-    UspCtV1 uspCtV1 = new UspCtV1("BbYbG22w.MA");
+    UspCtV1 uspCtV1 = new UspCtV1("BbYbG22w.Y");
     
     Assertions.assertEquals(1, uspCtV1.getSharingNotice()); 
     Assertions.assertEquals(2, uspCtV1.getSaleOptOutNotice()); 
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspNatV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspNatV1Test.java
index eb9a4b83..d3517d76 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspNatV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspNatV1Test.java
@@ -14,7 +14,7 @@ public class UspNatV1Test {
   public void testEncode1() throws EncodingException {
 
     UspNatV1 uspNatV1 = new UspNatV1();
-    Assertions.assertEquals("BAAAAAAAAAA.IA", uspNatV1.encode());
+    Assertions.assertEquals("BAAAAAAAAA.Q", uspNatV1.encode());
   }
 
   @Test
@@ -32,18 +32,42 @@ public void testEncode2() throws EncodingException {
     uspNatV1.setFieldValue(UspNatV1Field.TARGETED_ADVERTISING_OPT_OUT, 3);
     uspNatV1.setFieldValue(UspNatV1Field.SENSITIVE_DATA_PROCESSING, Arrays.asList(0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3));
     uspNatV1.setFieldValue(UspNatV1Field.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS, Arrays.asList(0, 1));
-    uspNatV1.setFieldValue(UspNatV1Field.PERSONAL_DATA_CONSENTS, Arrays.asList(2, 3));
+    uspNatV1.setFieldValue(UspNatV1Field.PERSONAL_DATA_CONSENTS, 1);
     uspNatV1.setFieldValue(UspNatV1Field.MSPA_COVERED_TRANSACTION, 1);
     uspNatV1.setFieldValue(UspNatV1Field.MSPA_OPT_OUT_OPTION_MODE, 2);
     uspNatV1.setFieldValue(UspNatV1Field.MSPA_SERVICE_PROVIDER_MODE, 3);
     uspNatV1.setFieldValue(UspNatV1Field.GPC, true);
     
-    Assertions.assertEquals("BbbbGxsbG2w.MA", uspNatV1.encode());
+    Assertions.assertEquals("BbbbGxsbFb.Y", uspNatV1.encode());
+  }
+  
+  @Test
+  public void testEncode3() throws EncodingException {
+    UspNatV1 uspNatV1 = new UspNatV1();
+    
+    uspNatV1.setFieldValue(UspNatV1Field.SHARING_NOTICE, 1);
+    uspNatV1.setFieldValue(UspNatV1Field.SALE_OPT_OUT_NOTICE, 1);
+    uspNatV1.setFieldValue(UspNatV1Field.SHARING_OPT_OUT_NOTICE, 1);
+    uspNatV1.setFieldValue(UspNatV1Field.TARGETED_ADVERTISING_OPT_OUT_NOTICE, 1);
+    uspNatV1.setFieldValue(UspNatV1Field.SENSITIVE_DATA_PROCESSING_OPT_OUT_NOTICE, 0);
+    uspNatV1.setFieldValue(UspNatV1Field.SENSITIVE_DATA_LIMIT_USE_NOTICE, 0);
+    uspNatV1.setFieldValue(UspNatV1Field.SALE_OPT_OUT, 1);
+    uspNatV1.setFieldValue(UspNatV1Field.SHARING_OPT_OUT, 1);
+    uspNatV1.setFieldValue(UspNatV1Field.TARGETED_ADVERTISING_OPT_OUT, 1);
+    uspNatV1.setFieldValue(UspNatV1Field.SENSITIVE_DATA_PROCESSING, Arrays.asList(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0));
+    uspNatV1.setFieldValue(UspNatV1Field.KNOWN_CHILD_SENSITIVE_DATA_CONSENTS, Arrays.asList(0, 0));
+    uspNatV1.setFieldValue(UspNatV1Field.PERSONAL_DATA_CONSENTS, 0);
+    uspNatV1.setFieldValue(UspNatV1Field.MSPA_COVERED_TRANSACTION, 1);
+    uspNatV1.setFieldValue(UspNatV1Field.MSPA_OPT_OUT_OPTION_MODE, 1);
+    uspNatV1.setFieldValue(UspNatV1Field.MSPA_SERVICE_PROVIDER_MODE, 0);
+    uspNatV1.setFieldValue(UspNatV1Field.GPC, true);
+    
+    Assertions.assertEquals("BVQVAAAAAU.Y", uspNatV1.encode());
   }
   
   @Test
   public void testDecodde1() throws DecodingException {
-    UspNatV1 uspNatV1 = new UspNatV1("BbbbGxsbG2w.MA");
+    UspNatV1 uspNatV1 = new UspNatV1("BbbbGxsbFb.Y");
     
     Assertions.assertEquals(1, uspNatV1.getSharingNotice());
     Assertions.assertEquals(2, uspNatV1.getSaleOptOutNotice());
@@ -56,7 +80,7 @@ public void testDecodde1() throws DecodingException {
     Assertions.assertEquals(3, uspNatV1.getTargetedAdvertisingOptOut());
     Assertions.assertEquals(Arrays.asList(0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3), uspNatV1.getSensitiveDataProcessing());
     Assertions.assertEquals(Arrays.asList(0, 1), uspNatV1.getKnownChildSensitiveDataConsents());
-    Assertions.assertEquals(Arrays.asList(2, 3), uspNatV1.getPersonalDataConsents());
+    Assertions.assertEquals(1, uspNatV1.getPersonalDataConsents());
     Assertions.assertEquals(1, uspNatV1.getMspaCoveredTransaction());
     Assertions.assertEquals(2, uspNatV1.getMspaOptOutOptionMode());
     Assertions.assertEquals(3, uspNatV1.getMspaServiceProviderMode());
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspUtV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspUtV1Test.java
index e7962f94..961e05dd 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspUtV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspUtV1Test.java
@@ -13,7 +13,7 @@ public class UspUtV1Test {
   @Test
   public void testEncode1() throws EncodingException {
     UspUtV1 uspUtV1 = new UspUtV1();
-    Assertions.assertEquals("BAAAAAAA", uspUtV1.encode());
+    Assertions.assertEquals("BAAAAAA", uspUtV1.encode());
   }
 
   @Test
@@ -32,12 +32,12 @@ public void testEncode2() throws EncodingException {
     uspUtV1.setFieldValue(UspUtV1Field.MSPA_OPT_OUT_OPTION_MODE, 2);
     uspUtV1.setFieldValue(UspUtV1Field.MSPA_SERVICE_PROVIDER_MODE, 3);
     
-    Assertions.assertEquals("BbWGxvbA", uspUtV1.encode());    
+    Assertions.assertEquals("BbWGxvb", uspUtV1.encode());    
   }
   
   @Test
   public void testDecode1() throws DecodingException {
-    UspUtV1 uspUtV1 = new UspUtV1("BbWGxvbA");
+    UspUtV1 uspUtV1 = new UspUtV1("BbWGxvb");
     
     Assertions.assertEquals(1, uspUtV1.getSharingNotice()); 
     Assertions.assertEquals(2, uspUtV1.getSaleOptOutNotice()); 
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspV1Test.java
index b7ffa054..ae0a9c2e 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspV1Test.java
@@ -24,7 +24,7 @@ public void testEncode2() throws EncodingException {
     uspv1.setFieldValue("OptOutSale", 2);
     uspv1.setFieldValue("LspaCovered", 3);
 
-    Assertions.assertEquals("BbA", uspv1.encode());
+    Assertions.assertEquals("Bb", uspv1.encode());
   }
 
   @Test

From ca009edb6a578b3ca42a80849e49eb62b3a2b6ac Mon Sep 17 00:00:00 2001
From: chad <chad@totalium.com>
Date: Tue, 6 Dec 2022 18:16:59 -0700
Subject: [PATCH 2/9] scm

---
 pom.xml            | 19 +++++++++++++++++++
 release.properties | 11 +++++++++++
 2 files changed, 30 insertions(+)
 create mode 100644 release.properties

diff --git a/pom.xml b/pom.xml
index ecc031cf..090340e9 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,6 +18,25 @@
         </license>
     </licenses>
 
+    <scm>
+        <connection>scm:git:git@github.com:chuff/iabtcf-java.git</connection>
+        <developerConnection>scm:git:git@github.com:chuff/iabtcf-java.git</developerConnection>
+        <url>https://github.com/chuff/iabtcf-java</url>
+    </scm>
+
+    <distributionManagement>
+        <snapshotRepository>
+            <id>sonatype-nexus-snapshots</id>
+            <name>Sonatype Nexus Snapshots</name>
+            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
+        </snapshotRepository>
+        <repository>
+            <id>sonatype-nexus-staging</id>
+            <name>Nexus Release Repository</name>
+            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
+        </repository>
+    </distributionManagement>
+
     <modules>
         <module>iabgpp-encoder</module>
         <module>iabgpp-extras</module>
diff --git a/release.properties b/release.properties
new file mode 100644
index 00000000..6e731b57
--- /dev/null
+++ b/release.properties
@@ -0,0 +1,11 @@
+#release configuration
+#Tue Dec 06 18:16:35 MST 2022
+completedPhase=check-poms
+exec.snapshotReleasePluginAllowed=false
+preparationGoals=clean verify
+projectVersionPolicyId=default
+pushChanges=true
+remoteTagging=true
+scm.commentPrefix=[maven-release-plugin] 
+scm.tagNameFormat=@{project.artifactId}-@{project.version}
+scm.url=scm\:git\:git@github.com\:chuff/iabtcf-java.git

From 292e2ef08139450acdf87f17f0a2b6f64871fc08 Mon Sep 17 00:00:00 2001
From: chad <chad@totalium.com>
Date: Tue, 6 Dec 2022 18:17:47 -0700
Subject: [PATCH 3/9] [maven-release-plugin] prepare release iabgpp-core-3.0.0

---
 iabgpp-encoder/pom.xml        | 8 +++-----
 iabgpp-extras-jackson/pom.xml | 8 +++-----
 iabgpp-extras/pom.xml         | 6 ++----
 pom.xml                       | 9 ++++-----
 4 files changed, 12 insertions(+), 19 deletions(-)

diff --git a/iabgpp-encoder/pom.xml b/iabgpp-encoder/pom.xml
index 554e8cd5..27e783ac 100644
--- a/iabgpp-encoder/pom.xml
+++ b/iabgpp-encoder/pom.xml
@@ -1,19 +1,17 @@
 <?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">
+<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>
 
     <parent>
         <groupId>com.iabgpp</groupId>
         <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0-SNAPSHOT</version>
+        <version>3.0.0</version>
     </parent>
 
     <groupId>com.iabgpp</groupId>
     <artifactId>iabgpp-encoder</artifactId>
     <name>IAB GPP Java Encoder Library</name>
-    <version>3.0.0-SNAPSHOT</version>
+    <version>3.0.0</version>
     <description>Encode and decode consent information with the IAB GPP Framework</description>
     <packaging>jar</packaging>
 
diff --git a/iabgpp-extras-jackson/pom.xml b/iabgpp-extras-jackson/pom.xml
index a66edc22..010a50de 100644
--- a/iabgpp-extras-jackson/pom.xml
+++ b/iabgpp-extras-jackson/pom.xml
@@ -1,13 +1,11 @@
 <?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">
+<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>
 
     <parent>
         <artifactId>iabgpp-core</artifactId>
         <groupId>com.iabgpp</groupId>
-        <version>3.0.0-SNAPSHOT</version>
+        <version>3.0.0</version>
     </parent>
 
     <artifactId>iabgpp-extras-jackson</artifactId>
@@ -38,7 +36,7 @@
         <dependency>
             <groupId>com.iabgpp</groupId>
             <artifactId>iabgpp-extras</artifactId>
-            <version>3.0.0-SNAPSHOT</version>
+            <version>3.0.0</version>
         </dependency>
 
         <dependency>
diff --git a/iabgpp-extras/pom.xml b/iabgpp-extras/pom.xml
index 30c6fd8d..c2cbef22 100644
--- a/iabgpp-extras/pom.xml
+++ b/iabgpp-extras/pom.xml
@@ -1,13 +1,11 @@
 <?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">
+<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>
 
     <parent>
         <groupId>com.iabgpp</groupId>
         <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0-SNAPSHOT</version>
+        <version>3.0.0</version>
     </parent>
 
     <artifactId>iabgpp-extras</artifactId>
diff --git a/pom.xml b/pom.xml
index 090340e9..a78c81f5 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,12 +1,10 @@
 <?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">
+<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>
 
     <groupId>com.iabgpp</groupId>
     <artifactId>iabgpp-core</artifactId>
-    <version>3.0.0-SNAPSHOT</version>
+    <version>3.0.0</version>
     <name>IAB GPP Core Library</name>
     <description>Encode and decode consent information with the IAB GPP v3.0.</description>
     <packaging>pom</packaging>
@@ -22,7 +20,8 @@
         <connection>scm:git:git@github.com:chuff/iabtcf-java.git</connection>
         <developerConnection>scm:git:git@github.com:chuff/iabtcf-java.git</developerConnection>
         <url>https://github.com/chuff/iabtcf-java</url>
-    </scm>
+      <tag>iabgpp-core-3.0.0</tag>
+  </scm>
 
     <distributionManagement>
         <snapshotRepository>

From 6e0ffc6363cb53867e33bcf7aeb38b949f5f8eb8 Mon Sep 17 00:00:00 2001
From: chad <chad@totalium.com>
Date: Tue, 6 Dec 2022 18:21:01 -0700
Subject: [PATCH 4/9] scm

---
 iabgpp-encoder/pom.xml                       |  4 +-
 iabgpp-encoder/pom.xml.releaseBackup         | 53 ++++++++++++
 iabgpp-encoder/pom.xml.versionsBackup        | 51 +++++++++++
 iabgpp-extras-jackson/pom.xml                |  4 +-
 iabgpp-extras-jackson/pom.xml.releaseBackup  | 58 +++++++++++++
 iabgpp-extras-jackson/pom.xml.versionsBackup | 56 ++++++++++++
 iabgpp-extras/pom.xml                        |  2 +-
 iabgpp-extras/pom.xml.releaseBackup          | 89 ++++++++++++++++++++
 iabgpp-extras/pom.xml.versionsBackup         | 87 +++++++++++++++++++
 pom.xml                                      |  8 +-
 pom.xml.releaseBackup                        | 46 ++++++++++
 pom.xml.versionsBackup                       | 45 ++++++++++
 release.properties                           | 20 ++++-
 13 files changed, 512 insertions(+), 11 deletions(-)
 create mode 100644 iabgpp-encoder/pom.xml.releaseBackup
 create mode 100644 iabgpp-encoder/pom.xml.versionsBackup
 create mode 100644 iabgpp-extras-jackson/pom.xml.releaseBackup
 create mode 100644 iabgpp-extras-jackson/pom.xml.versionsBackup
 create mode 100644 iabgpp-extras/pom.xml.releaseBackup
 create mode 100644 iabgpp-extras/pom.xml.versionsBackup
 create mode 100644 pom.xml.releaseBackup
 create mode 100644 pom.xml.versionsBackup

diff --git a/iabgpp-encoder/pom.xml b/iabgpp-encoder/pom.xml
index 27e783ac..af4710f8 100644
--- a/iabgpp-encoder/pom.xml
+++ b/iabgpp-encoder/pom.xml
@@ -5,13 +5,13 @@
     <parent>
         <groupId>com.iabgpp</groupId>
         <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <groupId>com.iabgpp</groupId>
     <artifactId>iabgpp-encoder</artifactId>
     <name>IAB GPP Java Encoder Library</name>
-    <version>3.0.0</version>
+    <version>3.0.0-SNAPSHOT</version>
     <description>Encode and decode consent information with the IAB GPP Framework</description>
     <packaging>jar</packaging>
 
diff --git a/iabgpp-encoder/pom.xml.releaseBackup b/iabgpp-encoder/pom.xml.releaseBackup
new file mode 100644
index 00000000..554e8cd5
--- /dev/null
+++ b/iabgpp-encoder/pom.xml.releaseBackup
@@ -0,0 +1,53 @@
+<?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>
+
+    <parent>
+        <groupId>com.iabgpp</groupId>
+        <artifactId>iabgpp-core</artifactId>
+        <version>3.0.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>com.iabgpp</groupId>
+    <artifactId>iabgpp-encoder</artifactId>
+    <name>IAB GPP Java Encoder Library</name>
+    <version>3.0.0-SNAPSHOT</version>
+    <description>Encode and decode consent information with the IAB GPP Framework</description>
+    <packaging>jar</packaging>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+    </properties>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>5.9.0</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>surefire</artifactId>
+                <version>3.0.0-M7</version>
+            </plugin>
+        </plugins>
+    </build>
+</project>
+
diff --git a/iabgpp-encoder/pom.xml.versionsBackup b/iabgpp-encoder/pom.xml.versionsBackup
new file mode 100644
index 00000000..27e783ac
--- /dev/null
+++ b/iabgpp-encoder/pom.xml.versionsBackup
@@ -0,0 +1,51 @@
+<?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>
+
+    <parent>
+        <groupId>com.iabgpp</groupId>
+        <artifactId>iabgpp-core</artifactId>
+        <version>3.0.0</version>
+    </parent>
+
+    <groupId>com.iabgpp</groupId>
+    <artifactId>iabgpp-encoder</artifactId>
+    <name>IAB GPP Java Encoder Library</name>
+    <version>3.0.0</version>
+    <description>Encode and decode consent information with the IAB GPP Framework</description>
+    <packaging>jar</packaging>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+    </properties>
+
+
+    <dependencies>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>5.9.0</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>surefire</artifactId>
+                <version>3.0.0-M7</version>
+            </plugin>
+        </plugins>
+    </build>
+</project>
+
diff --git a/iabgpp-extras-jackson/pom.xml b/iabgpp-extras-jackson/pom.xml
index 010a50de..64d038a2 100644
--- a/iabgpp-extras-jackson/pom.xml
+++ b/iabgpp-extras-jackson/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <artifactId>iabgpp-core</artifactId>
         <groupId>com.iabgpp</groupId>
-        <version>3.0.0</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>iabgpp-extras-jackson</artifactId>
@@ -36,7 +36,7 @@
         <dependency>
             <groupId>com.iabgpp</groupId>
             <artifactId>iabgpp-extras</artifactId>
-            <version>3.0.0</version>
+            <version>3.0.0-SNAPSHOT</version>
         </dependency>
 
         <dependency>
diff --git a/iabgpp-extras-jackson/pom.xml.releaseBackup b/iabgpp-extras-jackson/pom.xml.releaseBackup
new file mode 100644
index 00000000..a66edc22
--- /dev/null
+++ b/iabgpp-extras-jackson/pom.xml.releaseBackup
@@ -0,0 +1,58 @@
+<?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>
+
+    <parent>
+        <artifactId>iabgpp-core</artifactId>
+        <groupId>com.iabgpp</groupId>
+        <version>3.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>iabgpp-extras-jackson</artifactId>
+    <name>IAB GPP Java GVL and CMP List Jackson</name>
+    <packaging>jar</packaging>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+    
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.13.2</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.iabgpp</groupId>
+            <artifactId>iabgpp-extras</artifactId>
+            <version>3.0.0-SNAPSHOT</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>2.10.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+            <version>2.10.3</version>
+        </dependency>
+
+    </dependencies>
+
+</project>
diff --git a/iabgpp-extras-jackson/pom.xml.versionsBackup b/iabgpp-extras-jackson/pom.xml.versionsBackup
new file mode 100644
index 00000000..010a50de
--- /dev/null
+++ b/iabgpp-extras-jackson/pom.xml.versionsBackup
@@ -0,0 +1,56 @@
+<?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>
+
+    <parent>
+        <artifactId>iabgpp-core</artifactId>
+        <groupId>com.iabgpp</groupId>
+        <version>3.0.0</version>
+    </parent>
+
+    <artifactId>iabgpp-extras-jackson</artifactId>
+    <name>IAB GPP Java GVL and CMP List Jackson</name>
+    <packaging>jar</packaging>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+    
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>4.13.2</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>com.iabgpp</groupId>
+            <artifactId>iabgpp-extras</artifactId>
+            <version>3.0.0</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+            <version>2.10.3</version>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.datatype</groupId>
+            <artifactId>jackson-datatype-jsr310</artifactId>
+            <version>2.10.3</version>
+        </dependency>
+
+    </dependencies>
+
+</project>
diff --git a/iabgpp-extras/pom.xml b/iabgpp-extras/pom.xml
index c2cbef22..a9a0977c 100644
--- a/iabgpp-extras/pom.xml
+++ b/iabgpp-extras/pom.xml
@@ -5,7 +5,7 @@
     <parent>
         <groupId>com.iabgpp</groupId>
         <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0</version>
+        <version>3.0.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>iabgpp-extras</artifactId>
diff --git a/iabgpp-extras/pom.xml.releaseBackup b/iabgpp-extras/pom.xml.releaseBackup
new file mode 100644
index 00000000..30c6fd8d
--- /dev/null
+++ b/iabgpp-extras/pom.xml.releaseBackup
@@ -0,0 +1,89 @@
+<?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>
+
+    <parent>
+        <groupId>com.iabgpp</groupId>
+        <artifactId>iabgpp-core</artifactId>
+        <version>3.0.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>iabgpp-extras</artifactId>
+    <name>IAB GPP Java GVL and CMP List</name>
+    <packaging>jar</packaging>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+    
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+    </properties>
+
+    <profiles>
+        <profile>
+            <id>release</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-gpg-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>license-maven-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <version>0.8.5</version>
+                <reportSets>
+                    <reportSet>
+                        <reports>
+                            <report>report</report>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>
+        </plugins>
+    </reporting>
+</project>
diff --git a/iabgpp-extras/pom.xml.versionsBackup b/iabgpp-extras/pom.xml.versionsBackup
new file mode 100644
index 00000000..c2cbef22
--- /dev/null
+++ b/iabgpp-extras/pom.xml.versionsBackup
@@ -0,0 +1,87 @@
+<?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>
+
+    <parent>
+        <groupId>com.iabgpp</groupId>
+        <artifactId>iabgpp-core</artifactId>
+        <version>3.0.0</version>
+    </parent>
+
+    <artifactId>iabgpp-extras</artifactId>
+    <name>IAB GPP Java GVL and CMP List</name>
+    <packaging>jar</packaging>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+    
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+    </properties>
+
+    <profiles>
+        <profile>
+            <id>release</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-gpg-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>license-maven-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-compiler-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-source-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-javadoc-plugin</artifactId>
+            </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-checkstyle-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+    <reporting>
+        <plugins>
+            <plugin>
+                <groupId>org.jacoco</groupId>
+                <artifactId>jacoco-maven-plugin</artifactId>
+                <version>0.8.5</version>
+                <reportSets>
+                    <reportSet>
+                        <reports>
+                            <report>report</report>
+                        </reports>
+                    </reportSet>
+                </reportSets>
+            </plugin>
+        </plugins>
+    </reporting>
+</project>
diff --git a/pom.xml b/pom.xml
index a78c81f5..c63b7216 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
 
     <groupId>com.iabgpp</groupId>
     <artifactId>iabgpp-core</artifactId>
-    <version>3.0.0</version>
+    <version>3.0.0-SNAPSHOT</version>
     <name>IAB GPP Core Library</name>
     <description>Encode and decode consent information with the IAB GPP v3.0.</description>
     <packaging>pom</packaging>
@@ -17,9 +17,9 @@
     </licenses>
 
     <scm>
-        <connection>scm:git:git@github.com:chuff/iabtcf-java.git</connection>
-        <developerConnection>scm:git:git@github.com:chuff/iabtcf-java.git</developerConnection>
-        <url>https://github.com/chuff/iabtcf-java</url>
+        <connection>scm:git:git@github.com:chuff/iabgpp-java.git</connection>
+        <developerConnection>scm:git:git@github.com:chuff/iabgpp-java.git</developerConnection>
+        <url>https://github.com/chuff/iabgpp-java</url>
       <tag>iabgpp-core-3.0.0</tag>
   </scm>
 
diff --git a/pom.xml.releaseBackup b/pom.xml.releaseBackup
new file mode 100644
index 00000000..090340e9
--- /dev/null
+++ b/pom.xml.releaseBackup
@@ -0,0 +1,46 @@
+<?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>
+
+    <groupId>com.iabgpp</groupId>
+    <artifactId>iabgpp-core</artifactId>
+    <version>3.0.0-SNAPSHOT</version>
+    <name>IAB GPP Core Library</name>
+    <description>Encode and decode consent information with the IAB GPP v3.0.</description>
+    <packaging>pom</packaging>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+
+    <scm>
+        <connection>scm:git:git@github.com:chuff/iabtcf-java.git</connection>
+        <developerConnection>scm:git:git@github.com:chuff/iabtcf-java.git</developerConnection>
+        <url>https://github.com/chuff/iabtcf-java</url>
+    </scm>
+
+    <distributionManagement>
+        <snapshotRepository>
+            <id>sonatype-nexus-snapshots</id>
+            <name>Sonatype Nexus Snapshots</name>
+            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
+        </snapshotRepository>
+        <repository>
+            <id>sonatype-nexus-staging</id>
+            <name>Nexus Release Repository</name>
+            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
+        </repository>
+    </distributionManagement>
+
+    <modules>
+        <module>iabgpp-encoder</module>
+        <module>iabgpp-extras</module>
+        <module>iabgpp-extras-jackson</module>
+    </modules>
+
+</project>
diff --git a/pom.xml.versionsBackup b/pom.xml.versionsBackup
new file mode 100644
index 00000000..13ddb508
--- /dev/null
+++ b/pom.xml.versionsBackup
@@ -0,0 +1,45 @@
+<?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>
+
+    <groupId>com.iabgpp</groupId>
+    <artifactId>iabgpp-core</artifactId>
+    <version>3.0.0</version>
+    <name>IAB GPP Core Library</name>
+    <description>Encode and decode consent information with the IAB GPP v3.0.</description>
+    <packaging>pom</packaging>
+
+    <licenses>
+        <license>
+            <name>The Apache Software License, Version 2.0</name>
+            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+        </license>
+    </licenses>
+
+    <scm>
+        <connection>scm:git:git@github.com:chuff/iabgpp-java.git</connection>
+        <developerConnection>scm:git:git@github.com:chuff/iabgpp-java.git</developerConnection>
+        <url>https://github.com/chuff/iabgpp-java</url>
+      <tag>iabgpp-core-3.0.0</tag>
+  </scm>
+
+    <distributionManagement>
+        <snapshotRepository>
+            <id>sonatype-nexus-snapshots</id>
+            <name>Sonatype Nexus Snapshots</name>
+            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
+        </snapshotRepository>
+        <repository>
+            <id>sonatype-nexus-staging</id>
+            <name>Nexus Release Repository</name>
+            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
+        </repository>
+    </distributionManagement>
+
+    <modules>
+        <module>iabgpp-encoder</module>
+        <module>iabgpp-extras</module>
+        <module>iabgpp-extras-jackson</module>
+    </modules>
+
+</project>
diff --git a/release.properties b/release.properties
index 6e731b57..0ed87f60 100644
--- a/release.properties
+++ b/release.properties
@@ -1,11 +1,27 @@
 #release configuration
-#Tue Dec 06 18:16:35 MST 2022
-completedPhase=check-poms
+#Tue Dec 06 18:17:47 MST 2022
+completedPhase=run-preparation-goals
 exec.snapshotReleasePluginAllowed=false
 preparationGoals=clean verify
+project.dev.com.iabgpp\:iabgpp-core=3.1.0-SNAPSHOT
+project.dev.com.iabgpp\:iabgpp-encoder=3.1.0-SNAPSHOT
+project.dev.com.iabgpp\:iabgpp-extras=3.1.0-SNAPSHOT
+project.dev.com.iabgpp\:iabgpp-extras-jackson=3.1.0-SNAPSHOT
+project.rel.com.iabgpp\:iabgpp-core=3.0.0
+project.rel.com.iabgpp\:iabgpp-encoder=3.0.0
+project.rel.com.iabgpp\:iabgpp-extras=3.0.0
+project.rel.com.iabgpp\:iabgpp-extras-jackson=3.0.0
+project.scm.com.iabgpp\:iabgpp-core.connection=scm\:git\:git@github.com\:chuff/iabtcf-java.git
+project.scm.com.iabgpp\:iabgpp-core.developerConnection=scm\:git\:git@github.com\:chuff/iabtcf-java.git
+project.scm.com.iabgpp\:iabgpp-core.tag=HEAD
+project.scm.com.iabgpp\:iabgpp-core.url=https\://github.com/chuff/iabtcf-java
+project.scm.com.iabgpp\:iabgpp-encoder.empty=true
+project.scm.com.iabgpp\:iabgpp-extras-jackson.empty=true
+project.scm.com.iabgpp\:iabgpp-extras.empty=true
 projectVersionPolicyId=default
 pushChanges=true
 remoteTagging=true
 scm.commentPrefix=[maven-release-plugin] 
+scm.tag=iabgpp-core-3.0.0
 scm.tagNameFormat=@{project.artifactId}-@{project.version}
 scm.url=scm\:git\:git@github.com\:chuff/iabtcf-java.git

From a9e494b52eca6e9b91bef8fdb809d39184d72dfa Mon Sep 17 00:00:00 2001
From: chad <chad@totalium.com>
Date: Tue, 6 Dec 2022 18:23:00 -0700
Subject: [PATCH 5/9] scm

---
 iabgpp-encoder/pom.xml.releaseBackup         | 53 ------------
 iabgpp-encoder/pom.xml.versionsBackup        | 51 -----------
 iabgpp-extras-jackson/pom.xml.releaseBackup  | 58 -------------
 iabgpp-extras-jackson/pom.xml.versionsBackup | 56 ------------
 iabgpp-extras/pom.xml.releaseBackup          | 89 --------------------
 iabgpp-extras/pom.xml.versionsBackup         | 87 -------------------
 pom.xml.releaseBackup                        | 46 ----------
 pom.xml.versionsBackup                       | 45 ----------
 8 files changed, 485 deletions(-)
 delete mode 100644 iabgpp-encoder/pom.xml.releaseBackup
 delete mode 100644 iabgpp-encoder/pom.xml.versionsBackup
 delete mode 100644 iabgpp-extras-jackson/pom.xml.releaseBackup
 delete mode 100644 iabgpp-extras-jackson/pom.xml.versionsBackup
 delete mode 100644 iabgpp-extras/pom.xml.releaseBackup
 delete mode 100644 iabgpp-extras/pom.xml.versionsBackup
 delete mode 100644 pom.xml.releaseBackup
 delete mode 100644 pom.xml.versionsBackup

diff --git a/iabgpp-encoder/pom.xml.releaseBackup b/iabgpp-encoder/pom.xml.releaseBackup
deleted file mode 100644
index 554e8cd5..00000000
--- a/iabgpp-encoder/pom.xml.releaseBackup
+++ /dev/null
@@ -1,53 +0,0 @@
-<?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>
-
-    <parent>
-        <groupId>com.iabgpp</groupId>
-        <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0-SNAPSHOT</version>
-    </parent>
-
-    <groupId>com.iabgpp</groupId>
-    <artifactId>iabgpp-encoder</artifactId>
-    <name>IAB GPP Java Encoder Library</name>
-    <version>3.0.0-SNAPSHOT</version>
-    <description>Encode and decode consent information with the IAB GPP Framework</description>
-    <packaging>jar</packaging>
-
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        </license>
-    </licenses>
-
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
-
-    <dependencies>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>5.9.0</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>surefire</artifactId>
-                <version>3.0.0-M7</version>
-            </plugin>
-        </plugins>
-    </build>
-</project>
-
diff --git a/iabgpp-encoder/pom.xml.versionsBackup b/iabgpp-encoder/pom.xml.versionsBackup
deleted file mode 100644
index 27e783ac..00000000
--- a/iabgpp-encoder/pom.xml.versionsBackup
+++ /dev/null
@@ -1,51 +0,0 @@
-<?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>
-
-    <parent>
-        <groupId>com.iabgpp</groupId>
-        <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0</version>
-    </parent>
-
-    <groupId>com.iabgpp</groupId>
-    <artifactId>iabgpp-encoder</artifactId>
-    <name>IAB GPP Java Encoder Library</name>
-    <version>3.0.0</version>
-    <description>Encode and decode consent information with the IAB GPP Framework</description>
-    <packaging>jar</packaging>
-
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        </license>
-    </licenses>
-
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
-
-    <dependencies>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-engine</artifactId>
-            <version>5.9.0</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>surefire</artifactId>
-                <version>3.0.0-M7</version>
-            </plugin>
-        </plugins>
-    </build>
-</project>
-
diff --git a/iabgpp-extras-jackson/pom.xml.releaseBackup b/iabgpp-extras-jackson/pom.xml.releaseBackup
deleted file mode 100644
index a66edc22..00000000
--- a/iabgpp-extras-jackson/pom.xml.releaseBackup
+++ /dev/null
@@ -1,58 +0,0 @@
-<?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>
-
-    <parent>
-        <artifactId>iabgpp-core</artifactId>
-        <groupId>com.iabgpp</groupId>
-        <version>3.0.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>iabgpp-extras-jackson</artifactId>
-    <name>IAB GPP Java GVL and CMP List Jackson</name>
-    <packaging>jar</packaging>
-
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        </license>
-    </licenses>
-    
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.13.2</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.iabgpp</groupId>
-            <artifactId>iabgpp-extras</artifactId>
-            <version>3.0.0-SNAPSHOT</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-            <version>2.10.3</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.datatype</groupId>
-            <artifactId>jackson-datatype-jsr310</artifactId>
-            <version>2.10.3</version>
-        </dependency>
-
-    </dependencies>
-
-</project>
diff --git a/iabgpp-extras-jackson/pom.xml.versionsBackup b/iabgpp-extras-jackson/pom.xml.versionsBackup
deleted file mode 100644
index 010a50de..00000000
--- a/iabgpp-extras-jackson/pom.xml.versionsBackup
+++ /dev/null
@@ -1,56 +0,0 @@
-<?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>
-
-    <parent>
-        <artifactId>iabgpp-core</artifactId>
-        <groupId>com.iabgpp</groupId>
-        <version>3.0.0</version>
-    </parent>
-
-    <artifactId>iabgpp-extras-jackson</artifactId>
-    <name>IAB GPP Java GVL and CMP List Jackson</name>
-    <packaging>jar</packaging>
-
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        </license>
-    </licenses>
-    
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.13.2</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>com.iabgpp</groupId>
-            <artifactId>iabgpp-extras</artifactId>
-            <version>3.0.0</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-            <version>2.10.3</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.fasterxml.jackson.datatype</groupId>
-            <artifactId>jackson-datatype-jsr310</artifactId>
-            <version>2.10.3</version>
-        </dependency>
-
-    </dependencies>
-
-</project>
diff --git a/iabgpp-extras/pom.xml.releaseBackup b/iabgpp-extras/pom.xml.releaseBackup
deleted file mode 100644
index 30c6fd8d..00000000
--- a/iabgpp-extras/pom.xml.releaseBackup
+++ /dev/null
@@ -1,89 +0,0 @@
-<?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>
-
-    <parent>
-        <groupId>com.iabgpp</groupId>
-        <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>iabgpp-extras</artifactId>
-    <name>IAB GPP Java GVL and CMP List</name>
-    <packaging>jar</packaging>
-
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        </license>
-    </licenses>
-    
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
-    <profiles>
-        <profile>
-            <id>release</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-gpg-plugin</artifactId>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>license-maven-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-javadoc-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
-    <reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.jacoco</groupId>
-                <artifactId>jacoco-maven-plugin</artifactId>
-                <version>0.8.5</version>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>report</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-        </plugins>
-    </reporting>
-</project>
diff --git a/iabgpp-extras/pom.xml.versionsBackup b/iabgpp-extras/pom.xml.versionsBackup
deleted file mode 100644
index c2cbef22..00000000
--- a/iabgpp-extras/pom.xml.versionsBackup
+++ /dev/null
@@ -1,87 +0,0 @@
-<?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>
-
-    <parent>
-        <groupId>com.iabgpp</groupId>
-        <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0</version>
-    </parent>
-
-    <artifactId>iabgpp-extras</artifactId>
-    <name>IAB GPP Java GVL and CMP List</name>
-    <packaging>jar</packaging>
-
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        </license>
-    </licenses>
-    
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
-    <profiles>
-        <profile>
-            <id>release</id>
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-gpg-plugin</artifactId>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>license-maven-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-javadoc-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
-    <reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.jacoco</groupId>
-                <artifactId>jacoco-maven-plugin</artifactId>
-                <version>0.8.5</version>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>report</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-        </plugins>
-    </reporting>
-</project>
diff --git a/pom.xml.releaseBackup b/pom.xml.releaseBackup
deleted file mode 100644
index 090340e9..00000000
--- a/pom.xml.releaseBackup
+++ /dev/null
@@ -1,46 +0,0 @@
-<?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>
-
-    <groupId>com.iabgpp</groupId>
-    <artifactId>iabgpp-core</artifactId>
-    <version>3.0.0-SNAPSHOT</version>
-    <name>IAB GPP Core Library</name>
-    <description>Encode and decode consent information with the IAB GPP v3.0.</description>
-    <packaging>pom</packaging>
-
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        </license>
-    </licenses>
-
-    <scm>
-        <connection>scm:git:git@github.com:chuff/iabtcf-java.git</connection>
-        <developerConnection>scm:git:git@github.com:chuff/iabtcf-java.git</developerConnection>
-        <url>https://github.com/chuff/iabtcf-java</url>
-    </scm>
-
-    <distributionManagement>
-        <snapshotRepository>
-            <id>sonatype-nexus-snapshots</id>
-            <name>Sonatype Nexus Snapshots</name>
-            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
-        </snapshotRepository>
-        <repository>
-            <id>sonatype-nexus-staging</id>
-            <name>Nexus Release Repository</name>
-            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
-        </repository>
-    </distributionManagement>
-
-    <modules>
-        <module>iabgpp-encoder</module>
-        <module>iabgpp-extras</module>
-        <module>iabgpp-extras-jackson</module>
-    </modules>
-
-</project>
diff --git a/pom.xml.versionsBackup b/pom.xml.versionsBackup
deleted file mode 100644
index 13ddb508..00000000
--- a/pom.xml.versionsBackup
+++ /dev/null
@@ -1,45 +0,0 @@
-<?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>
-
-    <groupId>com.iabgpp</groupId>
-    <artifactId>iabgpp-core</artifactId>
-    <version>3.0.0</version>
-    <name>IAB GPP Core Library</name>
-    <description>Encode and decode consent information with the IAB GPP v3.0.</description>
-    <packaging>pom</packaging>
-
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        </license>
-    </licenses>
-
-    <scm>
-        <connection>scm:git:git@github.com:chuff/iabgpp-java.git</connection>
-        <developerConnection>scm:git:git@github.com:chuff/iabgpp-java.git</developerConnection>
-        <url>https://github.com/chuff/iabgpp-java</url>
-      <tag>iabgpp-core-3.0.0</tag>
-  </scm>
-
-    <distributionManagement>
-        <snapshotRepository>
-            <id>sonatype-nexus-snapshots</id>
-            <name>Sonatype Nexus Snapshots</name>
-            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
-        </snapshotRepository>
-        <repository>
-            <id>sonatype-nexus-staging</id>
-            <name>Nexus Release Repository</name>
-            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
-        </repository>
-    </distributionManagement>
-
-    <modules>
-        <module>iabgpp-encoder</module>
-        <module>iabgpp-extras</module>
-        <module>iabgpp-extras-jackson</module>
-    </modules>
-
-</project>

From c33c767b72c8009bc15a18df8bbcf1d601f225d9 Mon Sep 17 00:00:00 2001
From: chad <chad@totalium.com>
Date: Tue, 6 Dec 2022 18:29:51 -0700
Subject: [PATCH 6/9] scm

---
 pom.xml | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/pom.xml b/pom.xml
index c63b7216..ce6c8303 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,11 +17,10 @@
     </licenses>
 
     <scm>
-        <connection>scm:git:git@github.com:chuff/iabgpp-java.git</connection>
-        <developerConnection>scm:git:git@github.com:chuff/iabgpp-java.git</developerConnection>
+        <connection>scm:git@github.com:chuff/iabgpp-java.git</connection>
+        <developerConnection>scm:git@github.com:chuff/iabgpp-java.git</developerConnection>
         <url>https://github.com/chuff/iabgpp-java</url>
-      <tag>iabgpp-core-3.0.0</tag>
-  </scm>
+    </scm>
 
     <distributionManagement>
         <snapshotRepository>

From 0817f12656b4756da1ebcf9a9cf62c8d71a928c4 Mon Sep 17 00:00:00 2001
From: chad <chad@totalium.com>
Date: Tue, 6 Dec 2022 18:32:21 -0700
Subject: [PATCH 7/9] scm

---
 pom.xml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/pom.xml b/pom.xml
index ce6c8303..b6420fa6 100644
--- a/pom.xml
+++ b/pom.xml
@@ -17,8 +17,8 @@
     </licenses>
 
     <scm>
-        <connection>scm:git@github.com:chuff/iabgpp-java.git</connection>
-        <developerConnection>scm:git@github.com:chuff/iabgpp-java.git</developerConnection>
+        <connection>scm:git:git@github.com:chuff/iabgpp-java.git</connection>
+        <developerConnection>scm:git:git@github.com:chuff/iabgpp-java.git</developerConnection>
         <url>https://github.com/chuff/iabgpp-java</url>
     </scm>
 

From b9a67592ec3e3f48d6e9559b55c1a976a1aebaa4 Mon Sep 17 00:00:00 2001
From: chad <chad@totalium.com>
Date: Fri, 9 Dec 2022 01:32:36 -0700
Subject: [PATCH 8/9] 3.0.0

---
 README.md                                     |   4 +-
 iabgpp-encoder/pom.xml                        |  54 +++++-----
 .../datatype/encoder/Base64UrlEncoder.java    |   2 +-
 .../com/iab/gpp/encoder/GppModelTest.java     |  23 ++--
 .../encoder/Base64UrlEncoderTest.java         |  12 +--
 .../iab/gpp/encoder/section/HeaderV1Test.java |   8 +-
 .../iab/gpp/encoder/section/TcfCaV2Test.java  |   8 +-
 .../iab/gpp/encoder/section/TcfEuV2Test.java  |   8 +-
 .../iab/gpp/encoder/section/UspCaV1Test.java  |   8 +-
 .../iab/gpp/encoder/section/UspCoV1Test.java  |   6 +-
 .../iab/gpp/encoder/section/UspCtV1Test.java  |   6 +-
 .../iab/gpp/encoder/section/UspNatV1Test.java |   8 +-
 .../iab/gpp/encoder/section/UspUtV1Test.java  |   6 +-
 .../iab/gpp/encoder/section/UspV1Test.java    |   4 +-
 .../iab/gpp/encoder/section/UspVaV1Test.java  |   6 +-
 iabgpp-extras-jackson/pom.xml                 |  43 +++++---
 iabgpp-extras/pom.xml                         |  76 +++----------
 pom.xml                                       | 102 ++++++++++++++++--
 release.properties                            |  27 -----
 19 files changed, 216 insertions(+), 195 deletions(-)
 delete mode 100644 release.properties

diff --git a/README.md b/README.md
index 77277d72..e69080b3 100644
--- a/README.md
+++ b/README.md
@@ -2,8 +2,6 @@
 
 Encode/decode consent information with the IAB GPP Framework
 
-https://iabtechlab.com/gpp/
-
 ### Usage
 
 #### Maven
@@ -25,7 +23,7 @@ import com.iab.gpp.encoder.GppModel;
 import com.iab.gpp.encoder.section.TcfEuV2;
 import com.iab.gpp.encoder.section.UspV1;
 
-String gppString = "DBACDMA~CPdBusAPdBusANwAAAENAwCAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BbA";
+String gppString = "DBACNYAA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BbAA";
 GppModel gppModel = new GppModel(gppString);
 
 TcfEuV2 tcfEuV2Section = (TcfEuV2)gppModel.getSection(TcfEuV2.NAME);
diff --git a/iabgpp-encoder/pom.xml b/iabgpp-encoder/pom.xml
index af4710f8..0ea18974 100644
--- a/iabgpp-encoder/pom.xml
+++ b/iabgpp-encoder/pom.xml
@@ -1,34 +1,18 @@
 <?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">
+<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>
 
     <parent>
         <groupId>com.iabgpp</groupId>
         <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0-SNAPSHOT</version>
+        <version>3.0.0</version>
     </parent>
 
-    <groupId>com.iabgpp</groupId>
     <artifactId>iabgpp-encoder</artifactId>
-    <name>IAB GPP Java Encoder Library</name>
-    <version>3.0.0-SNAPSHOT</version>
-    <description>Encode and decode consent information with the IAB GPP Framework</description>
     <packaging>jar</packaging>
 
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        </license>
-    </licenses>
-
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
-
     <dependencies>
         <dependency>
             <groupId>org.junit.jupiter</groupId>
@@ -38,14 +22,26 @@
         </dependency>
     </dependencies>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>surefire</artifactId>
-                <version>3.0.0-M7</version>
-            </plugin>
-        </plugins>
-    </build>
+    <profiles>
+        <profile>
+            <id>release</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-source-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-gpg-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 </project>
 
diff --git a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoder.java b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoder.java
index 72f02399..d2517f5e 100644
--- a/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoder.java
+++ b/iabgpp-encoder/src/main/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoder.java
@@ -34,7 +34,7 @@ public static String encode(String bitString) throws EncodingException {
       throw new EncodingException("Unencodable Base64Url '" + bitString + "'");
     }
 
-    while (bitString.length() % 6 > 0) {
+    while (bitString.length() % 24 > 0) {
       bitString += "0";
     }
 
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java
index 1723047d..56e2c82d 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/GppModelTest.java
@@ -71,7 +71,7 @@ public void testEncodeUspv1() throws EncodingException {
     
     
     String gppString = gppModel.encode();
-    Assertions.assertEquals("DBABT~Bb", gppString);
+    Assertions.assertEquals("DBABTAAA~BbAA", gppString);
 
     Assertions.assertEquals(Arrays.asList(6), gppModel.getSectionIds());
     Assertions.assertEquals(true, gppModel.hasSection(UspV1.ID));
@@ -119,7 +119,7 @@ public void testEncodeTcfEuV2() throws EncodingException {
 
     
     String gppString = gppModel.encode();
-    Assertions.assertEquals("DBABM~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAA.QAAA.IAAA", gppString);
+    Assertions.assertEquals("DBABMAAA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA", gppString);
 
     Assertions.assertEquals(2, gppString.split("~").length);
 
@@ -168,7 +168,7 @@ public void testEncodeUspV1AndTcfEuV2() throws EncodingException {
     Assertions.assertEquals(false, gppModel.hasSection(TcfCaV2.NAME));
 
     String gppString = gppModel.encode();
-    Assertions.assertEquals("DBACNY~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~Bb", gppString);
+    Assertions.assertEquals("DBACNYAA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BbAA", gppString);
 
     Assertions.assertEquals(3, gppString.split("~").length);
 
@@ -266,7 +266,7 @@ public void testEncodeUspV1AndTcfEuV2AndTcfCaV2() throws EncodingException {
 
     String gppString = gppModel.encode();
     Assertions.assertEquals(
-        "DBACOe~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~CPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgAMAAwADAAIACQAHg.fHHHA4444ao~Bb",
+        "DBACOeAA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~CPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgAMAAwADAAIACQAHg.fHHHA4444aoA~BbAA",
         gppString);
 
     Assertions.assertEquals(4, gppString.split("~").length);
@@ -298,7 +298,7 @@ public void testDecodeDefaults() throws DecodingException {
 
   @Test
   public void testDecodeUspv1() throws DecodingException {
-    String gppString = "DBABTA~BbA";
+    String gppString = "DBABTAAA~BbAA";
     GppModel gppModel = new GppModel(gppString);
 
     Assertions.assertEquals(Arrays.asList(6), gppModel.getSectionIds());
@@ -321,7 +321,7 @@ public void testDecodeUspv1() throws DecodingException {
 
   @Test
   public void testDecodeTcfEuV2() throws DecodingException {
-    String gppString = "DBABMA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA";
+    String gppString = "DBABMAAA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA";
     GppModel gppModel = new GppModel(gppString);
 
     Assertions.assertEquals(Arrays.asList(2), gppModel.getSectionIds());
@@ -364,7 +364,7 @@ public void testDecodeTcfEuV2() throws DecodingException {
 
   @Test
   public void testDecodeUspv1AndTcfEuV2() throws DecodingException {
-    String gppString = "DBACNYA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BbA";
+    String gppString = "DBACNYAA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BbAA";
     GppModel gppModel = new GppModel(gppString);
 
     Assertions.assertEquals(Arrays.asList(2, 6), gppModel.getSectionIds());
@@ -429,7 +429,7 @@ public void testDecodeUspv1AndTcfEuV2() throws DecodingException {
   @Test
   public void testDecodeUspv1AndTcfEuV2AndTcfCaV2() throws DecodingException {
     String gppString =
-        "DBACOeA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~CPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgAMAAwADAAIACQAHg.fHHHA4444ao~BbA";
+        "DBACOeAA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~CPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgAMAAwADAAIACQAHg.fHHHA4444aoA~BbAA";
     GppModel gppModel = new GppModel(gppString);
 
     Assertions.assertEquals(Arrays.asList(2, 5, 6), gppModel.getSectionIds());
@@ -506,4 +506,11 @@ public void testDecodeUspv1AndTcfEuV2AndTcfCaV2() throws DecodingException {
     Assertions.assertEquals(5, tcfCaV2Section.getId());
     Assertions.assertEquals(3, tcfCaV2Section.getPubPurposesSegmentType());
   }
+  
+  @Test
+  public void testFoo() throws DecodingException {
+    String gppString =
+        "DBACNYAA~CPSG_8APSG_8ANwAAAENAwCAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA~BbAA";
+    GppModel gppModel = new GppModel(gppString);
+  }
 }
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoderTest.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoderTest.java
index f0f6b828..b3a8e153 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoderTest.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/datatype/encoder/Base64UrlEncoderTest.java
@@ -9,32 +9,32 @@ public class Base64UrlEncoderTest {
 
   @Test
   public void testEncode1() throws EncodingException {
-    Assertions.assertEquals("DBABM", Base64UrlEncoder.encode("0000110000010000000000010011"));
+    Assertions.assertEquals("DBABMAAA", Base64UrlEncoder.encode("0000110000010000000000010011"));
   }
 
   @Test
   public void testEncode2() throws EncodingException {
-    Assertions.assertEquals("DBACNY", Base64UrlEncoder.encode("000011000001000000000010001101011"));
+    Assertions.assertEquals("DBACNYAA", Base64UrlEncoder.encode("000011000001000000000010001101011"));
   }
 
   @Test
   public void testEncode3() throws EncodingException {
-    Assertions.assertEquals("DBABjw", Base64UrlEncoder.encode("00001100000100000000000110001111"));
+    Assertions.assertEquals("DBABjwAA", Base64UrlEncoder.encode("00001100000100000000000110001111"));
   }
 
   @Test
   public void testDecode1() throws DecodingException {
-    Assertions.assertEquals("000011000001000000000001001100000000", Base64UrlEncoder.decode("DBABMA"));
+    Assertions.assertEquals("000011000001000000000001001100000000000000000000", Base64UrlEncoder.decode("DBABMAAA"));
   }
 
   @Test
   public void testDecode2() throws DecodingException {
-    Assertions.assertEquals("000011000001000000000010001101011000000000", Base64UrlEncoder.decode("DBACNYA"));
+    Assertions.assertEquals("000011000001000000000010001101011000000000000000", Base64UrlEncoder.decode("DBACNYAA"));
   }
 
   @Test
   public void testDecode3() throws DecodingException {
-    Assertions.assertEquals("000011000001000000000001100011110000", Base64UrlEncoder.decode("DBABjw"));
+    Assertions.assertEquals("000011000001000000000001100011110000000000000000", Base64UrlEncoder.decode("DBABjwAA"));
   }
 
 }
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/HeaderV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/HeaderV1Test.java
index 77299810..e04fa42c 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/HeaderV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/HeaderV1Test.java
@@ -65,14 +65,14 @@ public void testEncode1() throws EncodingException {
   public void testEncode2() throws EncodingException {
     HeaderV1 headerV1 = new HeaderV1();
     headerV1.setFieldValue("SectionIds", Arrays.asList(2));
-    Assertions.assertEquals("DBABM", headerV1.encode());
+    Assertions.assertEquals("DBABMAAA", headerV1.encode());
   }
 
   @Test
   public void testEncode3() throws EncodingException {
     HeaderV1 headerV1 = new HeaderV1();
     headerV1.setFieldValue("SectionIds", Arrays.asList(2, 7));
-    Assertions.assertEquals("DBACMM", headerV1.encode());
+    Assertions.assertEquals("DBACMMAA", headerV1.encode());
   }
 
   @Test
@@ -87,7 +87,7 @@ public void testDecode1() throws DecodingException {
   @Test
   public void testDecode2() throws DecodingException {
     HeaderV1 headerV1 = new HeaderV1();
-    headerV1.decode("DBABMA");
+    headerV1.decode("DBABMAAA");
     Assertions.assertEquals(Arrays.asList(2), headerV1.getFieldValue("SectionIds"));
     Assertions.assertEquals(headerV1.getFieldValue("Version"), headerV1.getVersion());
     Assertions.assertEquals(headerV1.getFieldValue("SectionIds"), headerV1.getSectionsIds());
@@ -96,7 +96,7 @@ public void testDecode2() throws DecodingException {
   @Test
   public void testDecode3() throws DecodingException {
     HeaderV1 headerV1 = new HeaderV1();
-    headerV1.decode("BDACNYA");
+    headerV1.decode("BDACNYAA");
     Assertions.assertEquals(Arrays.asList(2, 6), headerV1.getFieldValue("SectionIds"));
     Assertions.assertEquals(headerV1.getFieldValue("Version"), headerV1.getVersion());
     Assertions.assertEquals(headerV1.getFieldValue("SectionIds"), headerV1.getSectionsIds());
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfCaV2Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfCaV2Test.java
index 0af64291..60b1076d 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfCaV2Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfCaV2Test.java
@@ -16,7 +16,7 @@ public class TcfCaV2Test {
   public void testEncode1() throws EncodingException {
 
     TcfCaV2 tcfCaV2 = new TcfCaV2();
-    Assertions.assertEquals("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAA.YAAAAAAAAA", tcfCaV2.encode());
+    Assertions.assertEquals("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAAAA.YAAAAAAAAAAA", tcfCaV2.encode());
   }
 
   @Test
@@ -50,12 +50,12 @@ public void testEncode2() throws EncodingException {
     tcfCaV2.setFieldValue(TcfCaV2Field.CREATED, ZonedDateTime.of(2022, 1, 1, 0, 0, 0, 0, ZoneId.of("UTC")));
     tcfCaV2.setFieldValue(TcfCaV2Field.LAST_UPDATED, ZonedDateTime.of(2022, 1, 1, 0, 0, 0, 0, ZoneId.of("UTC")));
 
-    Assertions.assertEquals("CPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgAMAAwADAAIACQAHg.fHHHA4444ao", tcfCaV2.encode());
+    Assertions.assertEquals("CPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgAMAAwADAAIACQAHg.fHHHA4444aoA", tcfCaV2.encode());
   }
 
   @Test
   public void testDecode1() throws DecodingException {
-    TcfCaV2 tcfCaV2 = new TcfCaV2("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAA.YAAAAAAAAAA");
+    TcfCaV2 tcfCaV2 = new TcfCaV2("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAAAA.YAAAAAAAAAAA");
 
     Assertions.assertEquals(0, tcfCaV2.getCmpId());
     Assertions.assertEquals(0, tcfCaV2.getCmpVersion());
@@ -97,7 +97,7 @@ public void testDecode1() throws DecodingException {
 
   @Test
   public void testDecode2() throws DecodingException {
-    TcfCaV2 tcfCaV2 = new TcfCaV2("CPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgAMAAwADAAIACQAHg.fHHHA4444ao.fHHHA4444ao");
+    TcfCaV2 tcfCaV2 = new TcfCaV2("CPSG_8APSG_8AAyACAENGdCgf_gfgAfgfgBgAMAAwADAAIACQAHg.fHHHA4444aoA");
 
     Assertions.assertEquals(50, tcfCaV2.getCmpId());
     Assertions.assertEquals(2, tcfCaV2.getCmpVersion());
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfEuV2Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfEuV2Test.java
index eec3faf7..6a1b0c64 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfEuV2Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/TcfEuV2Test.java
@@ -15,7 +15,7 @@ public class TcfEuV2Test {
   @Test
   public void testEncode1() throws EncodingException {
     TcfEuV2 tcfEuV2 = new TcfEuV2();
-    Assertions.assertEquals("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAAAAAA.QAAA.IAAA", tcfEuV2.encode());
+    Assertions.assertEquals("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA", tcfEuV2.encode());
   }
 
   @Test
@@ -24,12 +24,12 @@ public void testEncode2() throws EncodingException {
     tcfEuV2.setFieldValue(TcfEuV2Field.IS_SERVICE_SPECIFIC, true);
     tcfEuV2.setFieldValue(TcfEuV2Field.CREATED, ZonedDateTime.of(2022, 1, 1, 0, 0, 0, 0, ZoneId.of("UTC")));
     tcfEuV2.setFieldValue(TcfEuV2Field.LAST_UPDATED, ZonedDateTime.of(2022, 1, 1, 0, 0, 0, 0, ZoneId.of("UTC")));
-    Assertions.assertEquals("CPSG_8APSG_8AAAAAAENAACgAAAAAAAAAAAAAAAAAA.YAAAAAAAAA", tcfEuV2.encode());
+    Assertions.assertEquals("CPSG_8APSG_8AAAAAAENAACgAAAAAAAAAAAAAAAAAAAA.YAAAAAAAAAAA", tcfEuV2.encode());
   }
 
   @Test
   public void testDecode1() throws DecodingException {
-    TcfEuV2 tcfEuV2 = new TcfEuV2("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA");
+    TcfEuV2 tcfEuV2 = new TcfEuV2("CAAAAAAAAAAAAAAAAAENAACAAAAAAAAAAAAAAAAAAAAA.QAAA.IAAA");
 
     Assertions.assertEquals(2, tcfEuV2.getVersion());
     Assertions.assertEquals(ZonedDateTime.of(1970, 1, 1, 0, 0, 0, 0, ZoneId.of("UTC")), tcfEuV2.getCreated());
@@ -75,7 +75,7 @@ public void testDecode1() throws DecodingException {
 
   @Test
   public void testDecode2() throws DecodingException {
-    TcfEuV2 tcfEuV2 = new TcfEuV2("CPSG_8APSG_8AAAAAAENAACgAAAAAAAAAAAAAAAAAAA.YAAAAAAAAAA");
+    TcfEuV2 tcfEuV2 = new TcfEuV2("CPSG_8APSG_8AAAAAAENAACgAAAAAAAAAAAAAAAAAAAA.YAAAAAAAAAAA");
 
     Assertions.assertEquals(2, tcfEuV2.getVersion());
     Assertions.assertEquals(ZonedDateTime.of(2022, 1, 1, 0, 0, 0, 0, ZoneId.of("UTC")), tcfEuV2.getCreated());
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCaV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCaV1Test.java
index 58d469f8..5c66f7b4 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCaV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCaV1Test.java
@@ -14,7 +14,7 @@ public class UspCaV1Test {
   public void testEncode1() throws EncodingException {
 
     UspCaV1 uspCaV1 = new UspCaV1();
-    Assertions.assertEquals("BAAAAAAA.Q", uspCaV1.encode());
+    Assertions.assertEquals("BAAAAAAA.QAAA", uspCaV1.encode());
   }
 
   @Test
@@ -34,7 +34,7 @@ public void testEncode2() throws EncodingException {
     uspCaV1.setFieldValue(UspCaV1Field.MSPA_SERVICE_PROVIDER_MODE, 2);
     uspCaV1.setFieldValue(UspCaV1Field.GPC, true);
     
-    Assertions.assertEquals("BbYbGwXY.Y", uspCaV1.encode());
+    Assertions.assertEquals("BbYbGwXY.YAAA", uspCaV1.encode());
   }
   
   @Test
@@ -54,12 +54,12 @@ public void testEncode3() throws EncodingException {
     uspCaV1.setFieldValue(UspCaV1Field.MSPA_SERVICE_PROVIDER_MODE, 0);
     uspCaV1.setFieldValue(UspCaV1Field.GPC, true);
     
-    Assertions.assertEquals("BUoAAABQ.Y", uspCaV1.encode());
+    Assertions.assertEquals("BUoAAABQ.YAAA", uspCaV1.encode());
   }
   
   @Test
   public void testDecode1() throws DecodingException {
-    UspCaV1 uspCaV1 = new UspCaV1("BbYbGwXY.Y");
+    UspCaV1 uspCaV1 = new UspCaV1("BbYbGwXY.YAAA");
     
     Assertions.assertEquals(1, uspCaV1.getSaleOptOutNotice());
     Assertions.assertEquals(2, uspCaV1.getSharingOptOut());
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCoV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCoV1Test.java
index 3f4bbaef..296e9aba 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCoV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCoV1Test.java
@@ -13,7 +13,7 @@ public class UspCoV1Test {
   @Test
   public void testEncode1() throws EncodingException {
     UspCoV1 uspCoV1 = new UspCoV1();
-    Assertions.assertEquals("BAAAAAA.Q", uspCoV1.encode());
+    Assertions.assertEquals("BAAAAAAA.QAAA", uspCoV1.encode());
   }
 
   @Test
@@ -32,12 +32,12 @@ public void testEncode2() throws EncodingException {
     uspCoV1.setFieldValue(UspCoV1Field.MSPA_SERVICE_PROVIDER_MODE, 3);
     uspCoV1.setFieldValue(UspCoV1Field.GPC, true);
     
-    Assertions.assertEquals("BbYbG2w.Y", uspCoV1.encode());    
+    Assertions.assertEquals("BbYbG2wA.YAAA", uspCoV1.encode());    
   }
   
   @Test
   public void testDecode1() throws DecodingException {
-    UspCoV1 uspCoV1 = new UspCoV1("BbYbG2w.Y");
+    UspCoV1 uspCoV1 = new UspCoV1("BbYbG2wA.YAAA");
     
     Assertions.assertEquals(1, uspCoV1.getSharingNotice()); 
     Assertions.assertEquals(2, uspCoV1.getSaleOptOutNotice()); 
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCtV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCtV1Test.java
index 910f121d..4a94a683 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCtV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspCtV1Test.java
@@ -13,7 +13,7 @@ public class UspCtV1Test {
   @Test
   public void testEncode1() throws EncodingException {
     UspCtV1 uspCtV1 = new UspCtV1();
-    Assertions.assertEquals("BAAAAAAA.Q", uspCtV1.encode());
+    Assertions.assertEquals("BAAAAAAA.QAAA", uspCtV1.encode());
   }
 
   @Test
@@ -32,12 +32,12 @@ public void testEncode2() throws EncodingException {
     uspCtV1.setFieldValue(UspCtV1Field.MSPA_SERVICE_PROVIDER_MODE, 3);
     uspCtV1.setFieldValue(UspCtV1Field.GPC, true);
     
-    Assertions.assertEquals("BbYbG22w.Y", uspCtV1.encode());    
+    Assertions.assertEquals("BbYbG22w.YAAA", uspCtV1.encode());    
   }
   
   @Test
   public void testDecode1() throws DecodingException {
-    UspCtV1 uspCtV1 = new UspCtV1("BbYbG22w.Y");
+    UspCtV1 uspCtV1 = new UspCtV1("BbYbG22w.YAAA");
     
     Assertions.assertEquals(1, uspCtV1.getSharingNotice()); 
     Assertions.assertEquals(2, uspCtV1.getSaleOptOutNotice()); 
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspNatV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspNatV1Test.java
index d3517d76..e65d830b 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspNatV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspNatV1Test.java
@@ -14,7 +14,7 @@ public class UspNatV1Test {
   public void testEncode1() throws EncodingException {
 
     UspNatV1 uspNatV1 = new UspNatV1();
-    Assertions.assertEquals("BAAAAAAAAA.Q", uspNatV1.encode());
+    Assertions.assertEquals("BAAAAAAAAAAA.QAAA", uspNatV1.encode());
   }
 
   @Test
@@ -38,7 +38,7 @@ public void testEncode2() throws EncodingException {
     uspNatV1.setFieldValue(UspNatV1Field.MSPA_SERVICE_PROVIDER_MODE, 3);
     uspNatV1.setFieldValue(UspNatV1Field.GPC, true);
     
-    Assertions.assertEquals("BbbbGxsbFb.Y", uspNatV1.encode());
+    Assertions.assertEquals("BbbbGxsbFbAA.YAAA", uspNatV1.encode());
   }
   
   @Test
@@ -62,12 +62,12 @@ public void testEncode3() throws EncodingException {
     uspNatV1.setFieldValue(UspNatV1Field.MSPA_SERVICE_PROVIDER_MODE, 0);
     uspNatV1.setFieldValue(UspNatV1Field.GPC, true);
     
-    Assertions.assertEquals("BVQVAAAAAU.Y", uspNatV1.encode());
+    Assertions.assertEquals("BVQVAAAAAUAA.YAAA", uspNatV1.encode());
   }
   
   @Test
   public void testDecodde1() throws DecodingException {
-    UspNatV1 uspNatV1 = new UspNatV1("BbbbGxsbFb.Y");
+    UspNatV1 uspNatV1 = new UspNatV1("BbbbGxsbFbAA.YAAA");
     
     Assertions.assertEquals(1, uspNatV1.getSharingNotice());
     Assertions.assertEquals(2, uspNatV1.getSaleOptOutNotice());
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspUtV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspUtV1Test.java
index 961e05dd..e7962f94 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspUtV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspUtV1Test.java
@@ -13,7 +13,7 @@ public class UspUtV1Test {
   @Test
   public void testEncode1() throws EncodingException {
     UspUtV1 uspUtV1 = new UspUtV1();
-    Assertions.assertEquals("BAAAAAA", uspUtV1.encode());
+    Assertions.assertEquals("BAAAAAAA", uspUtV1.encode());
   }
 
   @Test
@@ -32,12 +32,12 @@ public void testEncode2() throws EncodingException {
     uspUtV1.setFieldValue(UspUtV1Field.MSPA_OPT_OUT_OPTION_MODE, 2);
     uspUtV1.setFieldValue(UspUtV1Field.MSPA_SERVICE_PROVIDER_MODE, 3);
     
-    Assertions.assertEquals("BbWGxvb", uspUtV1.encode());    
+    Assertions.assertEquals("BbWGxvbA", uspUtV1.encode());    
   }
   
   @Test
   public void testDecode1() throws DecodingException {
-    UspUtV1 uspUtV1 = new UspUtV1("BbWGxvb");
+    UspUtV1 uspUtV1 = new UspUtV1("BbWGxvbA");
     
     Assertions.assertEquals(1, uspUtV1.getSharingNotice()); 
     Assertions.assertEquals(2, uspUtV1.getSaleOptOutNotice()); 
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspV1Test.java
index ae0a9c2e..3dd091f6 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspV1Test.java
@@ -24,7 +24,7 @@ public void testEncode2() throws EncodingException {
     uspv1.setFieldValue("OptOutSale", 2);
     uspv1.setFieldValue("LspaCovered", 3);
 
-    Assertions.assertEquals("Bb", uspv1.encode());
+    Assertions.assertEquals("BbAA", uspv1.encode());
   }
 
   @Test
@@ -44,7 +44,7 @@ public void testdecode1() throws DecodingException {
 
   @Test
   public void testDecode2() throws DecodingException {
-    UspV1 uspv1 = new UspV1("BbA");
+    UspV1 uspv1 = new UspV1("BbAA");
     Assertions.assertEquals(1, uspv1.getFieldValue("Notice"));
     Assertions.assertEquals(2, uspv1.getFieldValue("OptOutSale"));
     Assertions.assertEquals(3, uspv1.getFieldValue("LspaCovered"));
diff --git a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspVaV1Test.java b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspVaV1Test.java
index 54d2d8e4..9d620951 100644
--- a/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspVaV1Test.java
+++ b/iabgpp-encoder/src/test/java/com/iab/gpp/encoder/section/UspVaV1Test.java
@@ -13,7 +13,7 @@ public class UspVaV1Test {
   @Test
   public void testEncode1() throws EncodingException {
     UspVaV1 uspVaV1 = new UspVaV1();
-    Assertions.assertEquals("BAAAAAA", uspVaV1.encode());
+    Assertions.assertEquals("BAAAAAAA", uspVaV1.encode());
   }
 
   @Test
@@ -31,12 +31,12 @@ public void testEncode2() throws EncodingException {
     uspVaV1.setFieldValue(UspVaV1Field.MSPA_OPT_OUT_OPTION_MODE, 2);
     uspVaV1.setFieldValue(UspVaV1Field.MSPA_SERVICE_PROVIDER_MODE, 3);
     
-    Assertions.assertEquals("BbYbG9s", uspVaV1.encode());    
+    Assertions.assertEquals("BbYbG9sA", uspVaV1.encode());    
   }
   
   @Test
   public void testDecode1() throws DecodingException {
-    UspVaV1 uspVaV1 = new UspVaV1("BbYbG9s");
+    UspVaV1 uspVaV1 = new UspVaV1("BbYbG9sA");
     
     Assertions.assertEquals(1, uspVaV1.getSharingNotice()); 
     Assertions.assertEquals(2, uspVaV1.getSaleOptOutNotice()); 
diff --git a/iabgpp-extras-jackson/pom.xml b/iabgpp-extras-jackson/pom.xml
index 64d038a2..66352837 100644
--- a/iabgpp-extras-jackson/pom.xml
+++ b/iabgpp-extras-jackson/pom.xml
@@ -1,30 +1,18 @@
 <?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">
+<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>
 
     <parent>
         <artifactId>iabgpp-core</artifactId>
         <groupId>com.iabgpp</groupId>
-        <version>3.0.0-SNAPSHOT</version>
+        <version>3.0.0</version>
     </parent>
 
     <artifactId>iabgpp-extras-jackson</artifactId>
-    <name>IAB GPP Java GVL and CMP List Jackson</name>
     <packaging>jar</packaging>
 
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        </license>
-    </licenses>
-    
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
     <dependencies>
         <dependency>
             <groupId>junit</groupId>
@@ -36,7 +24,7 @@
         <dependency>
             <groupId>com.iabgpp</groupId>
             <artifactId>iabgpp-extras</artifactId>
-            <version>3.0.0-SNAPSHOT</version>
+            <version>3.0.0</version>
         </dependency>
 
         <dependency>
@@ -53,4 +41,25 @@
 
     </dependencies>
 
+    <profiles>
+        <profile>
+            <id>release</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-source-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-gpg-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/iabgpp-extras/pom.xml b/iabgpp-extras/pom.xml
index a9a0977c..b2628cce 100644
--- a/iabgpp-extras/pom.xml
+++ b/iabgpp-extras/pom.xml
@@ -1,35 +1,31 @@
 <?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">
+<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>
 
     <parent>
         <groupId>com.iabgpp</groupId>
         <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0-SNAPSHOT</version>
+        <version>3.0.0</version>
     </parent>
 
     <artifactId>iabgpp-extras</artifactId>
-    <name>IAB GPP Java GVL and CMP List</name>
     <packaging>jar</packaging>
 
-    <licenses>
-        <license>
-            <name>The Apache Software License, Version 2.0</name>
-            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-        </license>
-    </licenses>
-    
-    <properties>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
-    </properties>
-
-    <profiles>
+     <profiles>
         <profile>
             <id>release</id>
             <build>
                 <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-source-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                    </plugin>
                     <plugin>
                         <groupId>org.apache.maven.plugins</groupId>
                         <artifactId>maven-gpg-plugin</artifactId>
@@ -38,50 +34,4 @@
             </build>
         </profile>
     </profiles>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>license-maven-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-javadoc-plugin</artifactId>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-checkstyle-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-
-    <reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.jacoco</groupId>
-                <artifactId>jacoco-maven-plugin</artifactId>
-                <version>0.8.5</version>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>report</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-        </plugins>
-    </reporting>
 </project>
diff --git a/pom.xml b/pom.xml
index b6420fa6..e8977322 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,11 +1,14 @@
 <?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">
+<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>
 
     <groupId>com.iabgpp</groupId>
     <artifactId>iabgpp-core</artifactId>
-    <version>3.0.0-SNAPSHOT</version>
+    <version>3.0.0</version>
     <name>IAB GPP Core Library</name>
+    <url>https://github.com/IABTechLabs/iabtcf-java</url>
     <description>Encode and decode consent information with the IAB GPP v3.0.</description>
     <packaging>pom</packaging>
 
@@ -16,22 +19,31 @@
         </license>
     </licenses>
 
+    <developers>
+        <developer>
+            <name>Mayank Mishra</name>
+            <email>mayank@iabtechlab.com</email>
+            <organization>IAB Tech Lab</organization>
+            <organizationUrl>https://www.iabtechlab.com</organizationUrl>
+        </developer>
+    </developers>
+
     <scm>
-        <connection>scm:git:git@github.com:chuff/iabgpp-java.git</connection>
-        <developerConnection>scm:git:git@github.com:chuff/iabgpp-java.git</developerConnection>
-        <url>https://github.com/chuff/iabgpp-java</url>
+        <connection>scm:git:git@github.com:IABTechLabs/iabgpp-java.git</connection>
+        <developerConnection>scm:git:git@github.com:IABTechLabs/iabgpp-java.git</developerConnection>
+        <url>https://github.com/IABTechLabs/iabgpp-java</url>
     </scm>
 
     <distributionManagement>
         <snapshotRepository>
             <id>sonatype-nexus-snapshots</id>
             <name>Sonatype Nexus Snapshots</name>
-            <url>https://oss.sonatype.org/content/repositories/snapshots/</url>
+            <url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
         </snapshotRepository>
         <repository>
             <id>sonatype-nexus-staging</id>
             <name>Nexus Release Repository</name>
-            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
+            <url>https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/</url>
         </repository>
     </distributionManagement>
 
@@ -41,4 +53,80 @@
         <module>iabgpp-extras-jackson</module>
     </modules>
 
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+    </properties>
+
+    <build>
+        <pluginManagement>
+            <plugins>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-source-plugin</artifactId>
+                    <version>3.2.0</version>
+                    <executions>
+                        <execution>
+                            <id>attach-sources</id>
+                            <phase>verify</phase>
+                            <goals>
+                                <goal>jar-no-fork</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-javadoc-plugin</artifactId>
+                    <version>3.3.1</version>
+                    <executions>
+                        <execution>
+                            <id>attach-javadoc</id>
+                            <phase>verify</phase>
+                            <goals>
+                                <goal>jar</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+                <plugin>
+                    <groupId>org.apache.maven.plugins</groupId>
+                    <artifactId>maven-gpg-plugin</artifactId>
+                    <version>1.5</version>
+                    <executions>
+                        <execution>
+                            <id>sign-artifacts</id>
+                            <phase>verify</phase>
+                            <goals>
+                                <goal>sign</goal>
+                            </goals>
+                        </execution>
+                    </executions>
+                </plugin>
+            </plugins>
+        </pluginManagement>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>release</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-source-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                    </plugin>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-gpg-plugin</artifactId>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
 </project>
diff --git a/release.properties b/release.properties
deleted file mode 100644
index 0ed87f60..00000000
--- a/release.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-#release configuration
-#Tue Dec 06 18:17:47 MST 2022
-completedPhase=run-preparation-goals
-exec.snapshotReleasePluginAllowed=false
-preparationGoals=clean verify
-project.dev.com.iabgpp\:iabgpp-core=3.1.0-SNAPSHOT
-project.dev.com.iabgpp\:iabgpp-encoder=3.1.0-SNAPSHOT
-project.dev.com.iabgpp\:iabgpp-extras=3.1.0-SNAPSHOT
-project.dev.com.iabgpp\:iabgpp-extras-jackson=3.1.0-SNAPSHOT
-project.rel.com.iabgpp\:iabgpp-core=3.0.0
-project.rel.com.iabgpp\:iabgpp-encoder=3.0.0
-project.rel.com.iabgpp\:iabgpp-extras=3.0.0
-project.rel.com.iabgpp\:iabgpp-extras-jackson=3.0.0
-project.scm.com.iabgpp\:iabgpp-core.connection=scm\:git\:git@github.com\:chuff/iabtcf-java.git
-project.scm.com.iabgpp\:iabgpp-core.developerConnection=scm\:git\:git@github.com\:chuff/iabtcf-java.git
-project.scm.com.iabgpp\:iabgpp-core.tag=HEAD
-project.scm.com.iabgpp\:iabgpp-core.url=https\://github.com/chuff/iabtcf-java
-project.scm.com.iabgpp\:iabgpp-encoder.empty=true
-project.scm.com.iabgpp\:iabgpp-extras-jackson.empty=true
-project.scm.com.iabgpp\:iabgpp-extras.empty=true
-projectVersionPolicyId=default
-pushChanges=true
-remoteTagging=true
-scm.commentPrefix=[maven-release-plugin] 
-scm.tag=iabgpp-core-3.0.0
-scm.tagNameFormat=@{project.artifactId}-@{project.version}
-scm.url=scm\:git\:git@github.com\:chuff/iabtcf-java.git

From 5c42d5a76c664e90f9fb8d1791b0286bc4397059 Mon Sep 17 00:00:00 2001
From: chad <chad@totalium.com>
Date: Fri, 9 Dec 2022 01:33:56 -0700
Subject: [PATCH 9/9] 3.0.1-SNAPSHOT

---
 iabgpp-encoder/pom.xml        | 2 +-
 iabgpp-extras-jackson/pom.xml | 4 ++--
 iabgpp-extras/pom.xml         | 2 +-
 pom.xml                       | 2 +-
 4 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/iabgpp-encoder/pom.xml b/iabgpp-encoder/pom.xml
index 0ea18974..26bfb8aa 100644
--- a/iabgpp-encoder/pom.xml
+++ b/iabgpp-encoder/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>com.iabgpp</groupId>
         <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0</version>
+        <version>3.1.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>iabgpp-encoder</artifactId>
diff --git a/iabgpp-extras-jackson/pom.xml b/iabgpp-extras-jackson/pom.xml
index 66352837..6764dd30 100644
--- a/iabgpp-extras-jackson/pom.xml
+++ b/iabgpp-extras-jackson/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <artifactId>iabgpp-core</artifactId>
         <groupId>com.iabgpp</groupId>
-        <version>3.0.0</version>
+        <version>3.1.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>iabgpp-extras-jackson</artifactId>
@@ -24,7 +24,7 @@
         <dependency>
             <groupId>com.iabgpp</groupId>
             <artifactId>iabgpp-extras</artifactId>
-            <version>3.0.0</version>
+            <version>3.1.0-SNAPSHOT</version>
         </dependency>
 
         <dependency>
diff --git a/iabgpp-extras/pom.xml b/iabgpp-extras/pom.xml
index b2628cce..5fcbce60 100644
--- a/iabgpp-extras/pom.xml
+++ b/iabgpp-extras/pom.xml
@@ -7,7 +7,7 @@
     <parent>
         <groupId>com.iabgpp</groupId>
         <artifactId>iabgpp-core</artifactId>
-        <version>3.0.0</version>
+        <version>3.1.0-SNAPSHOT</version>
     </parent>
 
     <artifactId>iabgpp-extras</artifactId>
diff --git a/pom.xml b/pom.xml
index e8977322..7547ebfe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
 
     <groupId>com.iabgpp</groupId>
     <artifactId>iabgpp-core</artifactId>
-    <version>3.0.0</version>
+    <version>3.1.0-SNAPSHOT</version>
     <name>IAB GPP Core Library</name>
     <url>https://github.com/IABTechLabs/iabtcf-java</url>
     <description>Encode and decode consent information with the IAB GPP v3.0.</description>
