Update 939-hello-transformation-bcp test

OptionalLong class has been updated as a part of OpenJDK 11 integration,
and this CL updates class file and dex for unit test, adding new
methods.

Also, added a script that automates base64 encoded constant creation.

Bug: 199077736
Test: art/test/testrunner/testrunner.py --target --64 -t \
      939-hello-transformation-bcp
Change-Id: I3ae1b4b59b6ebc23a383e95f9f1092479006cc07
diff --git a/test/939-hello-transformation-bcp/convert-to-base64.sh b/test/939-hello-transformation-bcp/convert-to-base64.sh
new file mode 100755
index 0000000..b948b42
--- /dev/null
+++ b/test/939-hello-transformation-bcp/convert-to-base64.sh
@@ -0,0 +1,102 @@
+#
+# Copyright (C) 2021 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+#!/usr/bin/bash
+
+# This script prints two base64 encoded strings to be pasted in Main.java.
+
+# The first string is base64 encoded src-optional/java/util/OptionalLong.java.
+
+# The second is base64 encoded dex, compiled from
+# src-optional/java/util/OptionalLong.class, which in its turn compiled from
+# src-optional/java/util/OptionalLong.java.
+
+set -e
+
+if [ -t 1 ]; then
+  # Color sequences if terminal is a tty.
+  red='\033[0;31m'
+  green='\033[0;32m'
+  yellow='\033[0;33m'
+  magenta='\033[0;35m'
+  nc='\033[0m'
+fi
+
+function help {
+  cat << EOF
+Usage: $0 -d8 $ANDROID_HOME/build-tools/*/d8 \\
+          -android-jar $ANDROID_HOME/platforms/android-*/android.jar
+
+This script automates regeneration of CLASS_BYTES and DEX_BYTES variables in Main.java
+EOF
+
+  exit 0
+}
+
+while [ $# -gt 0 ]; do
+  key="$1"
+
+  case $key in
+    -d8)
+      d8="$2"
+      shift
+      shift
+      ;;
+    -android-jar)
+      android_jar="$2"
+      shift
+      shift
+      ;;
+    -h|--help)
+      help
+      ;;
+  esac
+done
+
+if [ -z $d8 ]; then
+  printf "${red}No path to d8 executable is specified${nc}\n"
+  help
+fi
+
+if [ -z $android_jar ]; then
+  printf "${red}No path to android.jar specified${nc}\n"
+  help
+fi
+
+if [ ! -f "src-optional/java/util/OptionalLong.java" ]; then
+  printf "${red}src-optional/OptionalLong.java does not exist${nc}\n"
+  exit 1
+fi
+
+printf "${green}Compiling OptionalLong.java... ${nc}"
+javac  -source 8 -target 8 src-optional/java/util/OptionalLong.java 1>/dev/null 2>/dev/null
+$d8 --lib $android_jar --release --output . src-optional/java/util/*.class
+printf "${green}Done\n${nc}\n"
+
+
+printf "CLASS_BYTES to be pasted in src/Main.java are below:\n"
+printf "${yellow}8<------------------------------------------------------------------------------${nc}\n"
+cat src-optional/java/util/OptionalLong.java | base64 | sed "s/\(.*\)/\"\1\" \+/g"
+printf "${yellow}8<------------------------------------------------------------------------------${nc}\n\n\n"
+
+printf "DEX_BYTES to be pasted in src/Main.java are below:\n"
+printf "${yellow}8<------------------------------------------------------------------------------${nc}\n"
+cat classes.dex | base64 | sed "s/\(.*\)/\"\1\" \+/g"
+printf "${yellow}8<------------------------------------------------------------------------------${nc}\n\n\n"
+
+printf "${green}Cleaning up...${nc} "
+rm -f src-optional/java/util/OptionalLong.class
+rm -f classes.dex
+printf "${green}Done${nc}\n"
diff --git a/test/939-hello-transformation-bcp/src-optional/java/util/OptionalLong.java b/test/939-hello-transformation-bcp/src-optional/java/util/OptionalLong.java
new file mode 100644
index 0000000..2b313aa
--- /dev/null
+++ b/test/939-hello-transformation-bcp/src-optional/java/util/OptionalLong.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package java.util;
+import java.util.function.LongConsumer;
+import java.util.function.LongSupplier;
+import java.util.function.Supplier;
+import java.util.stream.LongStream;
+public final class OptionalLong {
+  // Make sure we have a <clinit> function since the real implementation of OptionalLong does.
+  static { EMPTY = null; }
+  private static final OptionalLong EMPTY;
+  private final boolean isPresent;
+  private final long value;
+  private OptionalLong() { isPresent = false; value = 0; }
+  private OptionalLong(long l) { this(); }
+  public static OptionalLong empty() { return null; }
+  public static OptionalLong of(long value) { return null; }
+  public long getAsLong() { return 0; }
+  public boolean isPresent() { return false; }
+  public boolean isEmpty() { return false; }
+  public void ifPresent(LongConsumer c) { }
+  public void ifPresentOrElse(LongConsumer action, Runnable emptyAction) { }
+  public LongStream stream() { return null; }
+  public long orElse(long l) { return 0; }
+  public long orElseGet(LongSupplier s) { return 0; }
+  public long orElseThrow() { return 0; }
+  public<X extends Throwable> long orElseThrow(Supplier<? extends X> s) throws X { return 0; }
+  public boolean equals(Object o) { return false; }
+  public int hashCode() { return 0; }
+  public String toString() { return "Redefined OptionalLong!"; }
+}
diff --git a/test/939-hello-transformation-bcp/src/Main.java b/test/939-hello-transformation-bcp/src/Main.java
index 7bda667..f76760b 100644
--- a/test/939-hello-transformation-bcp/src/Main.java
+++ b/test/939-hello-transformation-bcp/src/Main.java
@@ -22,93 +22,93 @@
   /**
    * This is the base64 encoded class/dex.
    *
-   * package java.util;
-   * import java.util.function.LongConsumer;
-   * import java.util.function.LongSupplier;
-   * import java.util.function.Supplier;
-   * public final class OptionalLong {
-   *   // Make sure we have a <clinit> function since the real implementation of OptionalLong does.
-   *   static { EMPTY = null; }
-   *   private static final OptionalLong EMPTY;
-   *   private final boolean isPresent;
-   *   private final long value;
-   *   private OptionalLong() { isPresent = false; value = 0; }
-   *   private OptionalLong(long l) { this(); }
-   *   public static OptionalLong empty() { return null; }
-   *   public static OptionalLong of(long value) { return null; }
-   *   public long getAsLong() { return 0; }
-   *   public boolean isPresent() { return false; }
-   *   public void ifPresent(LongConsumer c) { }
-   *   public long orElse(long l) { return 0; }
-   *   public long orElseGet(LongSupplier s) { return 0; }
-   *   public<X extends Throwable> long orElseThrow(Supplier<X> s) throws X { return 0; }
-   *   public boolean equals(Object o) { return false; }
-   *   public int hashCode() { return 0; }
-   *   public String toString() { return "Redefined OptionalLong!"; }
-   * }
+   * To regenerate these constants:
+   *  1) Update src-optional/java/util/OptionalLong.java
+   *  2) run convert-to-base64.sh script, specifying
+   *     required parameters (path to d8 tool and path to android.jar;
+   *     both can be found in Android sdk)
+   *  3) copy and paste base64 text below
+   *
    */
   private static final byte[] CLASS_BYTES = Base64.getDecoder().decode(
-    "yv66vgAAADQAOAoACAAwCQAHADEJAAcAMgoABwAwCAAzCQAHADQHADUHADYBAAVFTVBUWQEAGExq" +
-    "YXZhL3V0aWwvT3B0aW9uYWxMb25nOwEACWlzUHJlc2VudAEAAVoBAAV2YWx1ZQEAAUoBAAY8aW5p" +
-    "dD4BAAMoKVYBAARDb2RlAQAPTGluZU51bWJlclRhYmxlAQAEKEopVgEABWVtcHR5AQAaKClMamF2" +
-    "YS91dGlsL09wdGlvbmFsTG9uZzsBAAJvZgEAGyhKKUxqYXZhL3V0aWwvT3B0aW9uYWxMb25nOwEA" +
-    "CWdldEFzTG9uZwEAAygpSgEAAygpWgEACWlmUHJlc2VudAEAJChMamF2YS91dGlsL2Z1bmN0aW9u" +
-    "L0xvbmdDb25zdW1lcjspVgEABm9yRWxzZQEABChKKUoBAAlvckVsc2VHZXQBACQoTGphdmEvdXRp" +
-    "bC9mdW5jdGlvbi9Mb25nU3VwcGxpZXI7KUoBAAtvckVsc2VUaHJvdwEAIChMamF2YS91dGlsL2Z1" +
-    "bmN0aW9uL1N1cHBsaWVyOylKAQAKRXhjZXB0aW9ucwcANwEACVNpZ25hdHVyZQEAQjxYOkxqYXZh" +
-    "L2xhbmcvVGhyb3dhYmxlOz4oTGphdmEvdXRpbC9mdW5jdGlvbi9TdXBwbGllcjxUWDs+OylKXlRY" +
-    "OwEABmVxdWFscwEAFShMamF2YS9sYW5nL09iamVjdDspWgEACGhhc2hDb2RlAQADKClJAQAIdG9T" +
-    "dHJpbmcBABQoKUxqYXZhL2xhbmcvU3RyaW5nOwEACDxjbGluaXQ+AQAKU291cmNlRmlsZQEAEU9w" +
-    "dGlvbmFsTG9uZy5qYXZhDAAPABAMAAsADAwADQAOAQAXUmVkZWZpbmVkIE9wdGlvbmFsTG9uZyEM" +
-    "AAkACgEAFmphdmEvdXRpbC9PcHRpb25hbExvbmcBABBqYXZhL2xhbmcvT2JqZWN0AQATamF2YS9s" +
-    "YW5nL1Rocm93YWJsZQAxAAcACAAAAAMAGgAJAAoAAAASAAsADAAAABIADQAOAAAADgACAA8AEAAB" +
-    "ABEAAAAnAAMAAQAAAA8qtwABKgO1AAIqCbUAA7EAAAABABIAAAAGAAEAAAALAAIADwATAAEAEQAA" +
-    "AB0AAQADAAAABSq3AASxAAAAAQASAAAABgABAAAADAAJABQAFQABABEAAAAaAAEAAAAAAAIBsAAA" +
-    "AAEAEgAAAAYAAQAAAA0ACQAWABcAAQARAAAAGgABAAIAAAACAbAAAAABABIAAAAGAAEAAAAOAAEA" +
-    "GAAZAAEAEQAAABoAAgABAAAAAgmtAAAAAQASAAAABgABAAAADwABAAsAGgABABEAAAAaAAEAAQAA" +
-    "AAIDrAAAAAEAEgAAAAYAAQAAABAAAQAbABwAAQARAAAAGQAAAAIAAAABsQAAAAEAEgAAAAYAAQAA" +
-    "ABEAAQAdAB4AAQARAAAAGgACAAMAAAACCa0AAAABABIAAAAGAAEAAAASAAEAHwAgAAEAEQAAABoA" +
-    "AgACAAAAAgmtAAAAAQASAAAABgABAAAAEwABACEAIgADABEAAAAaAAIAAgAAAAIJrQAAAAEAEgAA" +
-    "AAYAAQAAABQAIwAAAAQAAQAkACUAAAACACYAAQAnACgAAQARAAAAGgABAAIAAAACA6wAAAABABIA" +
-    "AAAGAAEAAAAVAAEAKQAqAAEAEQAAABoAAQABAAAAAgOsAAAAAQASAAAABgABAAAAFgABACsALAAB" +
-    "ABEAAAAbAAEAAQAAAAMSBbAAAAABABIAAAAGAAEAAAAXAAgALQAQAAEAEQAAAB0AAQAAAAAABQGz" +
-    "AAaxAAAAAQASAAAABgABAAAABwABAC4AAAACAC8=");
+      "LyoKICogQ29weXJpZ2h0IChDKSAyMDIxIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QK" +
+      "ICoKICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhl" +
+      "ICJMaWNlbnNlIik7CiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs" +
+      "aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBM" +
+      "aWNlbnNlIGF0CiAqCiAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VO" +
+      "U0UtMi4wCiAqCiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQg" +
+      "dG8gaW4gd3JpdGluZywgc29mdHdhcmUKICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2Ug" +
+      "aXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKICogV0lUSE9VVCBXQVJSQU5USUVT" +
+      "IE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAq" +
+      "IFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJt" +
+      "aXNzaW9ucyBhbmQKICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAqLwpwYWNrYWdl" +
+      "IGphdmEudXRpbDsKaW1wb3J0IGphdmEudXRpbC5mdW5jdGlvbi5Mb25nQ29uc3VtZXI7CmltcG9y" +
+      "dCBqYXZhLnV0aWwuZnVuY3Rpb24uTG9uZ1N1cHBsaWVyOwppbXBvcnQgamF2YS51dGlsLmZ1bmN0" +
+      "aW9uLlN1cHBsaWVyOwppbXBvcnQgamF2YS51dGlsLnN0cmVhbS5Mb25nU3RyZWFtOwpwdWJsaWMg" +
+      "ZmluYWwgY2xhc3MgT3B0aW9uYWxMb25nIHsKICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhIDxjbGlu" +
+      "aXQ+IGZ1bmN0aW9uIHNpbmNlIHRoZSByZWFsIGltcGxlbWVudGF0aW9uIG9mIE9wdGlvbmFsTG9u" +
+      "ZyBkb2VzLgogIHN0YXRpYyB7IEVNUFRZID0gbnVsbDsgfQogIHByaXZhdGUgc3RhdGljIGZpbmFs" +
+      "IE9wdGlvbmFsTG9uZyBFTVBUWTsKICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gaXNQcmVzZW50Owog" +
+      "IHByaXZhdGUgZmluYWwgbG9uZyB2YWx1ZTsKICBwcml2YXRlIE9wdGlvbmFsTG9uZygpIHsgaXNQ" +
+      "cmVzZW50ID0gZmFsc2U7IHZhbHVlID0gMDsgfQogIHByaXZhdGUgT3B0aW9uYWxMb25nKGxvbmcg" +
+      "bCkgeyB0aGlzKCk7IH0KICBwdWJsaWMgc3RhdGljIE9wdGlvbmFsTG9uZyBlbXB0eSgpIHsgcmV0" +
+      "dXJuIG51bGw7IH0KICBwdWJsaWMgc3RhdGljIE9wdGlvbmFsTG9uZyBvZihsb25nIHZhbHVlKSB7" +
+      "IHJldHVybiBudWxsOyB9CiAgcHVibGljIGxvbmcgZ2V0QXNMb25nKCkgeyByZXR1cm4gMDsgfQog" +
+      "IHB1YmxpYyBib29sZWFuIGlzUHJlc2VudCgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgcHVibGljIGJv" +
+      "b2xlYW4gaXNFbXB0eSgpIHsgcmV0dXJuIGZhbHNlOyB9CiAgcHVibGljIHZvaWQgaWZQcmVzZW50" +
+      "KExvbmdDb25zdW1lciBjKSB7IH0KICBwdWJsaWMgdm9pZCBpZlByZXNlbnRPckVsc2UoTG9uZ0Nv" +
+      "bnN1bWVyIGFjdGlvbiwgUnVubmFibGUgZW1wdHlBY3Rpb24pIHsgfQogIHB1YmxpYyBMb25nU3Ry" +
+      "ZWFtIHN0cmVhbSgpIHsgcmV0dXJuIG51bGw7IH0KICBwdWJsaWMgbG9uZyBvckVsc2UobG9uZyBs" +
+      "KSB7IHJldHVybiAwOyB9CiAgcHVibGljIGxvbmcgb3JFbHNlR2V0KExvbmdTdXBwbGllciBzKSB7" +
+      "IHJldHVybiAwOyB9CiAgcHVibGljIGxvbmcgb3JFbHNlVGhyb3coKSB7IHJldHVybiAwOyB9CiAg" +
+      "cHVibGljPFggZXh0ZW5kcyBUaHJvd2FibGU+IGxvbmcgb3JFbHNlVGhyb3coU3VwcGxpZXI8PyBl" +
+      "eHRlbmRzIFg+IHMpIHRocm93cyBYIHsgcmV0dXJuIDA7IH0KICBwdWJsaWMgYm9vbGVhbiBlcXVh" +
+      "bHMoT2JqZWN0IG8pIHsgcmV0dXJuIGZhbHNlOyB9CiAgcHVibGljIGludCBoYXNoQ29kZSgpIHsg" +
+      "cmV0dXJuIDA7IH0KICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeyByZXR1cm4gIlJlZGVmaW5l" +
+      "ZCBPcHRpb25hbExvbmchIjsgfQp9Cg==");
   private static final byte[] DEX_BYTES = Base64.getDecoder().decode(
-    "ZGV4CjAzNQCvAoivSJqk6GdYOgJmvrM/b2/flxhw99q8BwAAcAAAAHhWNBIAAAAAAAAAAPgGAAAq" +
-    "AAAAcAAAAA0AAAAYAQAADQAAAEwBAAADAAAA6AEAAA8AAAAAAgAAAQAAAHgCAAAkBQAAmAIAACoE" +
-    "AAA4BAAAPQQAAEcEAABPBAAAUwQAAFoEAABdBAAAYAQAAGQEAABoBAAAawQAAG8EAACOBAAAqgQA" +
-    "AL4EAADSBAAA6QQAAAMFAAAmBQAASQUAAGcFAACGBQAAmQUAALIFAAC1BQAAuQUAAL0FAADABQAA" +
-    "xAUAANgFAADfBQAA5wUAAPIFAAD8BQAABwYAABIGAAAWBgAAHgYAACkGAAA2BgAAQAYAAAYAAAAH" +
-    "AAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMAAAAVAAAAGAAAABsAAAAGAAAAAAAAAAAA" +
-    "AAAHAAAAAQAAAAAAAAAIAAAAAQAAAAQEAAAJAAAAAQAAAAwEAAAJAAAAAQAAABQEAAAKAAAABQAA" +
-    "AAAAAAAKAAAABwAAAAAAAAALAAAABwAAAAQEAAAYAAAACwAAAAAAAAAZAAAACwAAAAQEAAAaAAAA" +
-    "CwAAABwEAAAbAAAADAAAAAAAAAAcAAAADAAAACQEAAAHAAcABQAAAAcADAAjAAAABwABACkAAAAE" +
-    "AAgAAwAAAAcACAACAAAABwAIAAMAAAAHAAkAAwAAAAcABgAeAAAABwAMAB8AAAAHAAEAIAAAAAcA" +
-    "AAAhAAAABwAKACIAAAAHAAsAIwAAAAcABwAkAAAABwACACUAAAAHAAMAJgAAAAcABAAnAAAABwAF" +
-    "ACgAAAAHAAAAEQAAAAQAAAAAAAAAFgAAAOwDAACtBgAAAAAAAAIAAACVBgAApQYAAAEAAAAAAAAA" +
-    "RwYAAAQAAAASAGkAAAAOAAMAAQABAAAATQYAAAsAAABwEAAAAgASAFwgAQAWAAAAWiACAA4AAAAD" +
-    "AAMAAQAAAFIGAAAEAAAAcBACAAAADgABAAAAAAAAAFgGAAACAAAAEgARAAMAAgAAAAAAXQYAAAIA" +
-    "AAASABEAAwACAAAAAABjBgAAAgAAABIADwADAAEAAAAAAGkGAAADAAAAFgAAABAAAAACAAEAAAAA" +
-    "AG4GAAACAAAAEgAPAAIAAgAAAAAAcwYAAAEAAAAOAAAAAgABAAAAAAB5BgAAAgAAABIADwAFAAMA" +
-    "AAAAAH4GAAADAAAAFgAAABAAAAAEAAIAAAAAAIQGAAADAAAAFgAAABAAAAAEAAIAAAAAAIoGAAAD" +
-    "AAAAFgAAABAAAAACAAEAAAAAAJAGAAAEAAAAGwAXAAAAEQAAAAAAAAAAAAEAAAAAAAAADQAAAJgC" +
-    "AAABAAAAAQAAAAEAAAAJAAAAAQAAAAoAAAABAAAACAAAAAEAAAAEAAw8VFg7PjspSl5UWDsAAzxY" +
-    "OgAIPGNsaW5pdD4ABjxpbml0PgACPigABUVNUFRZAAFJAAFKAAJKSgACSkwAAUwAAkxKAB1MZGFs" +
-    "dmlrL2Fubm90YXRpb24vU2lnbmF0dXJlOwAaTGRhbHZpay9hbm5vdGF0aW9uL1Rocm93czsAEkxq" +
-    "YXZhL2xhbmcvT2JqZWN0OwASTGphdmEvbGFuZy9TdHJpbmc7ABVMamF2YS9sYW5nL1Rocm93YWJs" +
-    "ZTsAGExqYXZhL3V0aWwvT3B0aW9uYWxMb25nOwAhTGphdmEvdXRpbC9mdW5jdGlvbi9Mb25nQ29u" +
-    "c3VtZXI7ACFMamF2YS91dGlsL2Z1bmN0aW9uL0xvbmdTdXBwbGllcjsAHExqYXZhL3V0aWwvZnVu" +
-    "Y3Rpb24vU3VwcGxpZXIAHUxqYXZhL3V0aWwvZnVuY3Rpb24vU3VwcGxpZXI7ABFPcHRpb25hbExv" +
-    "bmcuamF2YQAXUmVkZWZpbmVkIE9wdGlvbmFsTG9uZyEAAVYAAlZKAAJWTAABWgACWkwAEmVtaXR0" +
-    "ZXI6IGphY2stNC4yMgAFZW1wdHkABmVxdWFscwAJZ2V0QXNMb25nAAhoYXNoQ29kZQAJaWZQcmVz" +
-    "ZW50AAlpc1ByZXNlbnQAAm9mAAZvckVsc2UACW9yRWxzZUdldAALb3JFbHNlVGhyb3cACHRvU3Ry" +
-    "aW5nAAV2YWx1ZQAHAAcOOQALAAcOAAwBAAcOAA0ABw4ADgEABw4AFQEABw4ADwAHDgAWAAcOABEB" +
-    "AAcOABAABw4AEgEABw4AEwEABw4AFAEABw4AFwAHDgACAgEpHAUXARcQFwQXFBcAAgMBKRwBGAYB" +
-    "AgUJABoBEgESAYiABKQFAYKABLwFAYKABOQFAQn8BQYJkAYFAaQGAQG4BgEB0AYBAeQGAQH4BgIB" +
-    "jAcBAaQHAQG8BwEB1AcAAAAQAAAAAAAAAAEAAAAAAAAAAQAAACoAAABwAAAAAgAAAA0AAAAYAQAA" +
-    "AwAAAA0AAABMAQAABAAAAAMAAADoAQAABQAAAA8AAAAAAgAABgAAAAEAAAB4AgAAAxAAAAEAAACY" +
-    "AgAAASAAAA4AAACkAgAABiAAAAEAAADsAwAAARAAAAUAAAAEBAAAAiAAACoAAAAqBAAAAyAAAA4A" +
-    "AABHBgAABCAAAAIAAACVBgAAACAAAAEAAACtBgAAABAAAAEAAAD4BgAA");
+      "ZGV4CjAzNQBVWRCACMU+HJ9PqTkRRt+Gpa1jx32x1C8kCQAAcAAAAHhWNBIAAAAAAAAAAGAIAAAw" +
+      "AAAAcAAAAA8AAAAwAQAADwAAAGwBAAADAAAAIAIAABMAAAA4AgAAAQAAANACAAA0BgAA8AIAAL4E" +
+      "AADMBAAA0QQAANsEAADjBAAA5wQAAO4EAADxBAAA9AQAAPgEAAD8BAAA/wQAAAMFAAAiBQAAPgUA" +
+      "AFIFAABoBQAAfAUAAJMFAACtBQAA0AUAAPMFAAASBgAAMQYAAFAGAABjBgAAfAYAAH8GAACDBgAA" +
+      "hwYAAIwGAACPBgAAkwYAAJoGAACiBgAArQYAALcGAADCBgAA0wYAANwGAADnBgAA6wYAAPMGAAD+" +
+      "BgAACwcAABMHAAAdBwAAJAcAAAYAAAAHAAAADAAAAA0AAAAOAAAADwAAABAAAAARAAAAEgAAABMA" +
+      "AAAUAAAAFQAAABcAAAAaAAAAHgAAAAYAAAAAAAAAAAAAAAcAAAABAAAAAAAAAAgAAAABAAAAkAQA" +
+      "AAkAAAABAAAAmAQAAAkAAAABAAAAoAQAAAoAAAAGAAAAAAAAAAoAAAAIAAAAAAAAAAsAAAAIAAAA" +
+      "kAQAAAoAAAAMAAAAAAAAABoAAAANAAAAAAAAABsAAAANAAAAkAQAABwAAAANAAAAqAQAAB0AAAAN" +
+      "AAAAsAQAAB4AAAAOAAAAAAAAAB8AAAAOAAAAuAQAAAgACAAFAAAACAAOACcAAAAIAAEALgAAAAQA" +
+      "CQADAAAACAAJAAIAAAAIAAkAAwAAAAgACgADAAAACAAGACAAAAAIAA4AIQAAAAgAAQAiAAAACAAA" +
+      "ACMAAAAIAAsAJAAAAAgADAAlAAAACAANACYAAAAIAA0AJwAAAAgABwAoAAAACAACACkAAAAIAAMA" +
+      "KgAAAAgAAQArAAAACAAEACsAAAAIAAgALAAAAAgABQAtAAAACAAAABEAAAAEAAAAAAAAABgAAABI" +
+      "CAAA3QcAAAAAAAACAAIAAAAAAAAAAAACAAAAEgEPAQIAAQAAAAAAAAAAAAIAAAASAA8AAgABAAAA" +
+      "AAAAAAAAAgAAABIADwACAAEAAAAAAAAAAAACAAAAEgAPAAIAAQAAAAAAAAAAAAMAAAAaABkAEQAA" +
+      "AAEAAAAAAAAAAAAAAAIAAAASABEAAgACAAAAAAAAAAAAAgAAABIAEQACAAEAAAAAAAAAAAACAAAA" +
+      "EgARAAMAAQAAAAAAAAAAAAMAAAAWAAAAEAAAAAMAAwAAAAAAAAAAAAMAAAAWAQAAEAEAAAQAAgAA" +
+      "AAAAAAAAAAMAAAAWAAAAEAAAAAMAAQAAAAAAAAAAAAMAAAAWAAAAEAAAAAQAAgAAAAAAAAAAAAMA" +
+      "AAAWAAAAEAAAAAAAAAAAAAAAAAAAAAEAAAAOAAAAAwABAAEAAACGBAAACwAAAHAQAAACABIAXCAB" +
+      "ABYAAABaIAIADgAAAAMAAwABAAAAigQAAAQAAABwEAIAAAAOAAIAAgAAAAAAAAAAAAEAAAAOAAAA" +
+      "AwADAAAAAAAAAAAAAQAAAA4AGwAOABwBAA4AAAEAAAABAAAAAQAAAAoAAAABAAAACwAAAAEAAAAJ" +
+      "AAAAAgAAAAkABQABAAAABAAMK1RYOz47KUpeVFg7AAM8WDoACDxjbGluaXQ+AAY8aW5pdD4AAj4o" +
+      "AAVFTVBUWQABSQABSgACSkoAAkpMAAFMAAJMSgAdTGRhbHZpay9hbm5vdGF0aW9uL1NpZ25hdHVy" +
+      "ZTsAGkxkYWx2aWsvYW5ub3RhdGlvbi9UaHJvd3M7ABJMamF2YS9sYW5nL09iamVjdDsAFExqYXZh" +
+      "L2xhbmcvUnVubmFibGU7ABJMamF2YS9sYW5nL1N0cmluZzsAFUxqYXZhL2xhbmcvVGhyb3dhYmxl" +
+      "OwAYTGphdmEvdXRpbC9PcHRpb25hbExvbmc7ACFMamF2YS91dGlsL2Z1bmN0aW9uL0xvbmdDb25z" +
+      "dW1lcjsAIUxqYXZhL3V0aWwvZnVuY3Rpb24vTG9uZ1N1cHBsaWVyOwAdTGphdmEvdXRpbC9mdW5j" +
+      "dGlvbi9TdXBwbGllcjsAHUxqYXZhL3V0aWwvZnVuY3Rpb24vU3VwcGxpZXI8AB1MamF2YS91dGls" +
+      "L3N0cmVhbS9Mb25nU3RyZWFtOwART3B0aW9uYWxMb25nLmphdmEAF1JlZGVmaW5lZCBPcHRpb25h" +
+      "bExvbmchAAFWAAJWSgACVkwAA1ZMTAABWgACWkwABWVtcHR5AAZlcXVhbHMACWdldEFzTG9uZwAI" +
+      "aGFzaENvZGUACWlmUHJlc2VudAAPaWZQcmVzZW50T3JFbHNlAAdpc0VtcHR5AAlpc1ByZXNlbnQA" +
+      "Am9mAAZvckVsc2UACW9yRWxzZUdldAALb3JFbHNlVGhyb3cABnN0cmVhbQAIdG9TdHJpbmcABXZh" +
+      "bHVlAJ4Bfn5EOHsiYmFja2VuZCI6ImRleCIsImNvbXBpbGF0aW9uLW1vZGUiOiJyZWxlYXNlIiwi" +
+      "aGFzLWNoZWNrc3VtcyI6ZmFsc2UsIm1pbi1hcGkiOjEsInNoYS0xIjoiOWM5OGM2ZGRmZDc0ZGVj" +
+      "ZThiOTdlOGEyODc4ZDIwOGEwNjJmZGJmNCIsInZlcnNpb24iOiIzLjAuNDEtZGV2In0AAgIBLhwF" +
+      "FwEXERcEFxYXAAIDAS4cARgHAQIFDQAaARIBEgGIgASMCAGCgASgCAGCgATICAEJ2AYICewGBQHw" +
+      "BQEBlAcBAawGAQHgCAEB9AgBAYQGAQGYBgIBrAcBAcQHAQHcBwEB9AcBAYAHAQHABgAAAAAAAAAC" +
+      "AAAAxQcAANUHAAA4CAAAAAAAAAEAAAAAAAAAEAAAADwIAAAQAAAAAAAAAAEAAAAAAAAAAQAAADAA" +
+      "AABwAAAAAgAAAA8AAAAwAQAAAwAAAA8AAABsAQAABAAAAAMAAAAgAgAABQAAABMAAAA4AgAABgAA" +
+      "AAEAAADQAgAAASAAABIAAADwAgAAAyAAAAIAAACGBAAAARAAAAYAAACQBAAAAiAAADAAAAC+BAAA" +
+      "BCAAAAIAAADFBwAAACAAAAEAAADdBwAAAxAAAAIAAAA4CAAABiAAAAEAAABICAAAABAAAAEAAABg" +
+      "CAAA");
 
   public static void main(String[] args) {
     // OptionalLong is a class that is unlikely to be used by the time this test starts and is not