From 3c3e2eda8bbc0874f258d739ce53154b474fc7bf Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Mon, 31 Aug 2020 19:19:34 -0400 Subject: [PATCH 01/11] Use more AndroidX preference --- .../src/main/java/org/microg/gms/auth/AuthManager.java | 3 ++- .../src/main/java/org/microg/gms/checkin/CheckinPrefs.java | 3 ++- .../src/main/java/org/microg/gms/gcm/GcmPrefs.java | 3 ++- play-services-core/src/main/res/xml/preferences_account.xml | 4 ++-- .../src/main/res/xml/preferences_gcm_advanced.xml | 2 +- .../src/main/res/xml/preferences_google_more.xml | 4 ++-- .../src/main/res/xml/preferences_push_notifications_app.xml | 4 ++-- 7 files changed, 13 insertions(+), 10 deletions(-) diff --git a/play-services-core/src/main/java/org/microg/gms/auth/AuthManager.java b/play-services-core/src/main/java/org/microg/gms/auth/AuthManager.java index 19cbb621..8c5348d9 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/AuthManager.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/AuthManager.java @@ -21,9 +21,10 @@ import android.accounts.AccountManager; import android.content.Context; import android.content.pm.PackageManager; import android.os.Build; -import android.preference.PreferenceManager; import android.util.Log; +import androidx.preference.PreferenceManager; + import org.microg.gms.common.PackageUtils; import java.io.IOException; diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinPrefs.java b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinPrefs.java index c6172bdb..76309ade 100755 --- a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinPrefs.java +++ b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinPrefs.java @@ -8,7 +8,8 @@ package org.microg.gms.checkin; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; -import android.preference.PreferenceManager; + +import androidx.preference.PreferenceManager; public class CheckinPrefs implements SharedPreferences.OnSharedPreferenceChangeListener { public static final String PREF_ENABLE_CHECKIN = "checkin_enable_service"; diff --git a/play-services-core/src/main/java/org/microg/gms/gcm/GcmPrefs.java b/play-services-core/src/main/java/org/microg/gms/gcm/GcmPrefs.java index b552ff86..a59bc60d 100644 --- a/play-services-core/src/main/java/org/microg/gms/gcm/GcmPrefs.java +++ b/play-services-core/src/main/java/org/microg/gms/gcm/GcmPrefs.java @@ -21,9 +21,10 @@ import android.content.Intent; import android.content.SharedPreferences; import android.net.ConnectivityManager; import android.net.NetworkInfo; -import android.preference.PreferenceManager; import android.util.Log; +import androidx.preference.PreferenceManager; + import java.util.Arrays; import java.util.Collections; import java.util.List; diff --git a/play-services-core/src/main/res/xml/preferences_account.xml b/play-services-core/src/main/res/xml/preferences_account.xml index 32aa3ae9..b3049888 100755 --- a/play-services-core/src/main/res/xml/preferences_account.xml +++ b/play-services-core/src/main/res/xml/preferences_account.xml @@ -18,12 +18,12 @@ - - - - - - - Date: Mon, 31 Aug 2020 19:20:37 -0400 Subject: [PATCH 02/11] Use StandardCharsets --- .../gms/clearcut/LogEventParcelable.java | 4 +-- .../gms/cast/CastMediaRouteProvider.java | 30 +++++++------------ 2 files changed, 12 insertions(+), 22 deletions(-) diff --git a/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java b/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java index 81042a97..5bd0c3c9 100644 --- a/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java +++ b/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java @@ -25,8 +25,8 @@ import org.microg.safeparcel.SafeParceled; import java.nio.ByteBuffer; import java.nio.CharBuffer; -import java.nio.charset.Charset; import java.nio.charset.CharsetDecoder; +import java.nio.charset.StandardCharsets; import java.util.Arrays; public class LogEventParcelable extends AutoSafeParcelable { @@ -92,7 +92,7 @@ public class LogEventParcelable extends AutoSafeParcelable { private String getBytesAsString() { if (bytes == null) return "null"; try { - CharsetDecoder d = Charset.forName("US-ASCII").newDecoder(); + CharsetDecoder d = StandardCharsets.US_ASCII.newDecoder(); CharBuffer r = d.decode(ByteBuffer.wrap(bytes)); return r.toString(); } catch (Exception e) { diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java b/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java index 0b1e3a86..fad3258a 100644 --- a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java +++ b/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java @@ -19,12 +19,9 @@ package org.microg.gms.cast; import android.annotation.SuppressLint; import android.content.Context; import android.content.IntentFilter; -import android.net.Uri; import android.net.nsd.NsdManager; import android.net.nsd.NsdServiceInfo; -import android.os.Build; import android.os.Bundle; -import android.os.AsyncTask; import android.os.Handler; import android.util.Log; @@ -35,22 +32,15 @@ import androidx.mediarouter.media.MediaRouteProvider; import androidx.mediarouter.media.MediaRouteProviderDescriptor; import androidx.mediarouter.media.MediaRouter; -import com.google.android.gms.common.images.WebImage; import com.google.android.gms.cast.CastDevice; import com.google.android.gms.cast.CastMediaControlIntent; import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.Inet4Address; -import java.net.UnknownHostException; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.lang.Thread; -import java.lang.Runnable; -import java.util.List; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; -import java.util.Map; import java.util.HashMap; +import java.util.List; +import java.util.Map; public class CastMediaRouteProvider extends MediaRouteProvider { private static final String TAG = CastMediaRouteProvider.class.getSimpleName(); @@ -215,15 +205,15 @@ public class CastMediaRouteProvider extends MediaRouteProvider { return; } try { - String id = new String(attributes.get("id"), "UTF-8"); - String deviceVersion = new String(attributes.get("ve"), "UTF-8"); - String friendlyName = new String(attributes.get("fn"), "UTF-8"); - String modelName = new String(attributes.get("md"), "UTF-8"); - String iconPath = new String(attributes.get("ic"), "UTF-8"); - int status = Integer.parseInt(new String(attributes.get("st"), "UTF-8")); + String id = new String(attributes.get("id"), StandardCharsets.UTF_8); + String deviceVersion = new String(attributes.get("ve"), StandardCharsets.UTF_8); + String friendlyName = new String(attributes.get("fn"), StandardCharsets.UTF_8); + String modelName = new String(attributes.get("md"), StandardCharsets.UTF_8); + String iconPath = new String(attributes.get("ic"), StandardCharsets.UTF_8); + int status = Integer.parseInt(new String(attributes.get("st"), StandardCharsets.UTF_8)); onChromeCastDiscovered(id, name, host, port, deviceVersion, friendlyName, modelName, iconPath, status); - } catch (UnsupportedEncodingException | NullPointerException ex) { + } catch (NullPointerException ex) { Log.e(TAG, "Error getting cast details from DNS-SD response", ex); return; } From 3dc63b80d13f5dbdfa0ba2dcef9023b8616ab14b Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Mon, 31 Aug 2020 19:21:48 -0400 Subject: [PATCH 03/11] Remove unnecessary interface modifiers --- .../gms/common/api/GoogleApiClient.java | 4 ++-- .../android/gms/common/api/PendingResult.java | 12 +++++------ .../google/android/gms/common/api/Result.java | 2 +- .../gms/common/api/ResultCallback.java | 2 +- .../java/org/microg/tools/ui/SwitchBar.java | 2 +- .../org/microg/gms/common/HttpFormClient.java | 20 +++++++++---------- .../android/gms/tasks/OnCanceledListener.java | 2 +- 7 files changed, 22 insertions(+), 22 deletions(-) diff --git a/play-services-base/src/main/java/com/google/android/gms/common/api/GoogleApiClient.java b/play-services-base/src/main/java/com/google/android/gms/common/api/GoogleApiClient.java index fb7088e6..51832e17 100644 --- a/play-services-base/src/main/java/com/google/android/gms/common/api/GoogleApiClient.java +++ b/play-services-base/src/main/java/com/google/android/gms/common/api/GoogleApiClient.java @@ -143,7 +143,7 @@ public interface GoogleApiClient { * @see #registerConnectionFailedListener(OnConnectionFailedListener) * @see #unregisterConnectionFailedListener(OnConnectionFailedListener) */ - public boolean isConnectionFailedListenerRegistered(OnConnectionFailedListener listener); + boolean isConnectionFailedListenerRegistered(OnConnectionFailedListener listener); /** * Closes the current connection to Google Play services and creates a new connection. @@ -198,7 +198,7 @@ public interface GoogleApiClient { * @param listener the listener where the results of the asynchronous {@link #connect()} call * are delivered. */ - public void registerConnectionFailedListener(OnConnectionFailedListener listener); + void registerConnectionFailedListener(OnConnectionFailedListener listener); /** * Disconnects the client and stops automatic lifecycle management. Use this before creating a diff --git a/play-services-base/src/main/java/com/google/android/gms/common/api/PendingResult.java b/play-services-base/src/main/java/com/google/android/gms/common/api/PendingResult.java index ec162920..e3881366 100644 --- a/play-services-base/src/main/java/com/google/android/gms/common/api/PendingResult.java +++ b/play-services-base/src/main/java/com/google/android/gms/common/api/PendingResult.java @@ -40,20 +40,20 @@ public interface PendingResult { * Blocks until the task is completed. This is not allowed on the UI thread. The returned * result object can have an additional failure mode of INTERRUPTED. */ - public R await(); + R await(); /** * Blocks until the task is completed or has timed out waiting for the result. This is not * allowed on the UI thread. The returned result object can have an additional failure mode * of either INTERRUPTED or TIMEOUT. */ - public R await(long time, TimeUnit unit); + R await(long time, TimeUnit unit); - public void cancel(); + void cancel(); - public boolean isCanceled(); + boolean isCanceled(); - public void setResultCallback(ResultCallback callback, long time, TimeUnit unit); + void setResultCallback(ResultCallback callback, long time, TimeUnit unit); - public void setResultCallback(ResultCallback callback); + void setResultCallback(ResultCallback callback); } diff --git a/play-services-basement/src/main/java/com/google/android/gms/common/api/Result.java b/play-services-basement/src/main/java/com/google/android/gms/common/api/Result.java index 3ed0bd7e..6c4f6921 100644 --- a/play-services-basement/src/main/java/com/google/android/gms/common/api/Result.java +++ b/play-services-basement/src/main/java/com/google/android/gms/common/api/Result.java @@ -23,5 +23,5 @@ import org.microg.gms.common.PublicApi; */ @PublicApi public interface Result { - public Status getStatus(); + Status getStatus(); } diff --git a/play-services-basement/src/main/java/com/google/android/gms/common/api/ResultCallback.java b/play-services-basement/src/main/java/com/google/android/gms/common/api/ResultCallback.java index 1cac879c..f6c46b06 100644 --- a/play-services-basement/src/main/java/com/google/android/gms/common/api/ResultCallback.java +++ b/play-services-basement/src/main/java/com/google/android/gms/common/api/ResultCallback.java @@ -29,5 +29,5 @@ public interface ResultCallback { * * @param result The result from the API call. May not be null. */ - public void onResult(R result); + void onResult(R result); } diff --git a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java index ab282dd5..53916aba 100644 --- a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java +++ b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java @@ -40,7 +40,7 @@ import static android.os.Build.VERSION.SDK_INT; public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedChangeListener, View.OnClickListener { - public static interface OnSwitchChangeListener { + public interface OnSwitchChangeListener { /** * Called when the checked state of the Switch has changed. * diff --git a/play-services-core/src/main/java/org/microg/gms/common/HttpFormClient.java b/play-services-core/src/main/java/org/microg/gms/common/HttpFormClient.java index 8aee1df7..5838258f 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/HttpFormClient.java +++ b/play-services-core/src/main/java/org/microg/gms/common/HttpFormClient.java @@ -217,25 +217,25 @@ public class HttpFormClient { @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface RequestHeader { - public String[] value(); + String[] value(); - public boolean truePresent() default true; + boolean truePresent() default true; - public boolean falsePresent() default false; + boolean falsePresent() default false; - public boolean nullPresent() default false; + boolean nullPresent() default false; } @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface RequestContent { - public String[] value(); + String[] value(); - public boolean truePresent() default true; + boolean truePresent() default true; - public boolean falsePresent() default false; + boolean falsePresent() default false; - public boolean nullPresent() default false; + boolean nullPresent() default false; } @Retention(RetentionPolicy.RUNTIME) @@ -246,13 +246,13 @@ public class HttpFormClient { @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface ResponseField { - public String value(); + String value(); } @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.FIELD) public @interface ResponseHeader { - public String value(); + String value(); } @Retention(RetentionPolicy.RUNTIME) diff --git a/play-services-tasks/src/main/java/com/google/android/gms/tasks/OnCanceledListener.java b/play-services-tasks/src/main/java/com/google/android/gms/tasks/OnCanceledListener.java index 32fd7b0f..a52e4622 100644 --- a/play-services-tasks/src/main/java/com/google/android/gms/tasks/OnCanceledListener.java +++ b/play-services-tasks/src/main/java/com/google/android/gms/tasks/OnCanceledListener.java @@ -18,5 +18,5 @@ public interface OnCanceledListener { /** * Called when the Task is canceled successfully. */ - public abstract void onCanceled(); + void onCanceled(); } From 5b711fcec68f8ebdb5a7c068922b3dfc5908464d Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Mon, 31 Aug 2020 19:23:19 -0400 Subject: [PATCH 04/11] Lint: control flow issues --- .../java/org/microg/gms/cast/CastDeviceControllerImpl.java | 6 ++---- .../java/org/microg/gms/common/DeviceConfiguration.java | 6 ++---- .../src/main/java/org/microg/gms/gcm/McsService.java | 7 ++----- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java b/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java index e93e3c13..60879308 100644 --- a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java +++ b/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java @@ -147,12 +147,10 @@ public class CastDeviceControllerImpl extends ICastDeviceController.Stub impleme switch (message.getPayloadType()) { case STRING: String response = message.getPayloadUtf8(); - if (requestId == null) { - this.onTextMessageReceived(message.getNamespace(), response); - } else { + if (requestId != null) { this.onSendMessageSuccess(response, requestId); - this.onTextMessageReceived(message.getNamespace(), response); } + this.onTextMessageReceived(message.getNamespace(), response); break; case BINARY: byte[] payload = message.getPayloadBinary(); diff --git a/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java b/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java index 411de8aa..66843495 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java +++ b/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java @@ -153,9 +153,7 @@ public class DeviceConfiguration { if (eglcontext != EGL10.EGL_NO_CONTEXT) { javax.microedition.khronos.egl.EGLSurface eglsurface = egl10.eglCreatePbufferSurface(egldisplay, eglconfig, ai); - if (eglsurface == EGL10.EGL_NO_SURFACE) { - egl10.eglDestroyContext(egldisplay, eglcontext); - } else { + if (eglsurface != EGL10.EGL_NO_SURFACE) { egl10.eglMakeCurrent(egldisplay, eglsurface, eglsurface, eglcontext); String s = GLES10.glGetString(7939); if (s != null && !s.isEmpty()) { @@ -168,8 +166,8 @@ public class DeviceConfiguration { } egl10.eglMakeCurrent(egldisplay, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_CONTEXT); egl10.eglDestroySurface(egldisplay, eglsurface); - egl10.eglDestroyContext(egldisplay, eglcontext); } + egl10.eglDestroyContext(egldisplay, eglcontext); } } } diff --git a/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java b/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java index c18a3e56..1dd26a95 100644 --- a/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java +++ b/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java @@ -647,11 +647,8 @@ public class McsService extends Service implements Handler.Callback { } private void handleOutputDone(android.os.Message msg) { - switch (msg.arg1) { - case MCS_HEARTBEAT_PING_TAG: - wakeLock.release(); - break; - default: + if (msg.arg1 == MCS_HEARTBEAT_PING_TAG) { + wakeLock.release(); } } From 7df0c1824a9fcb2a6ca3676b842d6733480e83ac Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Mon, 31 Aug 2020 19:26:02 -0400 Subject: [PATCH 05/11] Java 5 migration --- .../google/android/gms/common/images/WebImage.java | 2 +- .../org/microg/gms/common/DeviceConfiguration.java | 14 +++++--------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/play-services-base-api/src/main/java/com/google/android/gms/common/images/WebImage.java b/play-services-base-api/src/main/java/com/google/android/gms/common/images/WebImage.java index c8f8f2a2..7239c1c9 100644 --- a/play-services-base-api/src/main/java/com/google/android/gms/common/images/WebImage.java +++ b/play-services-base-api/src/main/java/com/google/android/gms/common/images/WebImage.java @@ -59,6 +59,6 @@ public class WebImage extends AutoSafeParcelable { } public String toString() { - return String.format(Locale.getDefault(), "Image %dx%d %s", new Object[]{Integer.valueOf(width), Integer.valueOf(height), uri.toString()}); + return String.format(Locale.getDefault(), "Image %dx%d %s", width, height, uri.toString()); } } diff --git a/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java b/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java index 66843495..c4886368 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java +++ b/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java @@ -117,7 +117,7 @@ public class DeviceConfiguration { if (egl10 != null) { EGLDisplay display = egl10.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY); egl10.eglInitialize(display, new int[2]); - int cf[] = new int[1]; + int[] cf = new int[1]; if (egl10.eglGetConfigs(display, null, 0, cf)) { EGLConfig[] configs = new EGLConfig[cf[0]]; if (egl10.eglGetConfigs(display, configs, cf[0], cf)) { @@ -147,8 +147,8 @@ public class DeviceConfiguration { } } - private static void addExtensionsForConfig(EGL10 egl10, EGLDisplay egldisplay, EGLConfig eglconfig, int ai[], - int ai1[], Set set) { + private static void addExtensionsForConfig(EGL10 egl10, EGLDisplay egldisplay, EGLConfig eglconfig, int[] ai, + int[] ai1, Set set) { EGLContext eglcontext = egl10.eglCreateContext(egldisplay, eglconfig, EGL10.EGL_NO_CONTEXT, ai1); if (eglcontext != EGL10.EGL_NO_CONTEXT) { javax.microedition.khronos.egl.EGLSurface eglsurface = @@ -157,12 +157,8 @@ public class DeviceConfiguration { egl10.eglMakeCurrent(egldisplay, eglsurface, eglsurface, eglcontext); String s = GLES10.glGetString(7939); if (s != null && !s.isEmpty()) { - String as[] = s.split(" "); - int i = as.length; - for (int j = 0; j < i; j++) { - set.add(as[j]); - } - + String[] as = s.split(" "); + set.addAll(Arrays.asList(as).subList(0, as.length)); } egl10.eglMakeCurrent(egldisplay, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_SURFACE, EGL10.EGL_NO_CONTEXT); egl10.eglDestroySurface(egldisplay, eglsurface); From 9b0a17ab0a4e1c29b067f0f0e9c66a77ced5fcbe Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Mon, 31 Aug 2020 19:27:05 -0400 Subject: [PATCH 06/11] Java 7 migration --- .../android/gms/auth/AccountChangeEvent.java | 2 +- .../gms/auth/AccountChangeEventsRequest.java | 2 +- .../gms/auth/AccountChangeEventsResponse.java | 4 ++-- .../com/google/android/gms/auth/TokenData.java | 2 +- .../gms/auth/api/credentials/Credential.java | 15 ++++++++------- .../api/credentials/CredentialPickerConfig.java | 2 +- .../auth/api/credentials/CredentialRequest.java | 2 +- .../android/gms/auth/api/credentials/IdToken.java | 2 +- .../api/credentials/internal/DeleteRequest.java | 2 +- .../internal/GeneratePasswordRequest.java | 2 +- .../api/credentials/internal/SaveRequest.java | 2 +- .../AccountRecoveryGuidanceRequest.java | 2 +- .../dataservice/AccountRemovalRequest.java | 2 +- .../dataservice/ConfirmCredentialsRequest.java | 2 +- .../auth/firstparty/dataservice/TokenRequest.java | 2 +- .../ConfirmCredentialsWorkflowRequest.java | 2 +- .../firstparty/shared/AccountCredentials.java | 2 +- .../auth/firstparty/shared/AppDescription.java | 2 +- .../auth/firstparty/shared/CaptchaSolution.java | 2 +- .../android/gms/clearcut/LogEventParcelable.java | 2 +- .../common/internal/GoogleCertificatesQuery.java | 2 +- .../gms/common/server/FavaDiagnosticsEntity.java | 2 +- .../internal/ParcelableLoadImageOptions.java | 2 +- .../android/gms/people/model/AccountMetadata.java | 2 +- .../android/gms/people/model/AvatarReference.java | 2 +- .../android/gms/playlog/internal/LogEvent.java | 2 +- .../gms/playlog/internal/PlayLoggerContext.java | 2 +- .../gms/auth/api/signin/GoogleSignInAccount.java | 2 +- .../android/gms/common/data/DataHolder.java | 12 ++++++------ .../android/gms/common/images/WebImage.java | 2 +- .../android/gms/common/api/AccountInfo.java | 2 +- .../android/gms/common/api/GoogleApiClient.java | 8 ++++---- .../java/org/microg/gms/common/GmsConnector.java | 4 ++-- .../microg/gms/common/MultiConnectionKeeper.java | 4 ++-- .../gms/common/api/AbstractPendingResult.java | 2 +- .../gms/common/api/GoogleApiClientImpl.java | 8 ++++---- .../microg/gms/common/api/GoogleApiManager.java | 11 ++++++----- .../gms/common/api/ResultCallbackHandler.java | 2 +- .../com/google/android/gms/common/api/Scope.java | 2 +- .../com/google/android/gms/common/api/Status.java | 2 +- .../gms/common/internal/GetServiceRequest.java | 2 +- .../common/internal/ValidateAccountRequest.java | 2 +- .../google/android/gms/dynamic/ObjectWrapper.java | 2 +- .../android/gms/cast/ApplicationMetadata.java | 2 +- .../android/gms/cast/ApplicationStatus.java | 2 +- .../com/google/android/gms/cast/CastDevice.java | 4 ++-- .../google/android/gms/cast/CastDeviceStatus.java | 2 +- .../com/google/android/gms/cast/JoinOptions.java | 2 +- .../google/android/gms/cast/LaunchOptions.java | 2 +- .../android/gms/cast/framework/CastOptions.java | 2 +- .../cast/framework/media/CastMediaOptions.java | 2 +- .../cast/framework/media/NotificationOptions.java | 2 +- .../java/com/google/android/gms/cast/Cast.java | 2 +- .../android/gms/cast/CastRemoteDisplay.java | 2 +- .../microg/tools/ui/AbstractAboutFragment.java | 2 +- .../tools/ui/AbstractDashboardActivity.java | 2 +- .../main/java/org/microg/tools/ui/SwitchBar.java | 2 +- .../framework/internal/SessionManagerImpl.java | 2 +- .../microg/gms/auth/AuthManagerServiceImpl.java | 2 +- .../microg/gms/cast/CastDeviceControllerImpl.java | 4 ++-- .../microg/gms/cast/CastMediaRouteProvider.java | 10 +++++----- .../org/microg/gms/checkin/CheckinClient.java | 2 +- .../org/microg/gms/checkin/CheckinManager.java | 2 +- .../microg/gms/common/DeviceConfiguration.java | 12 ++++++------ .../org/microg/gms/common/MultiListenerProxy.java | 6 +++--- .../microg/gms/common/RemoteListenerProxy.java | 4 ++-- .../org/microg/gms/gservices/DatabaseHelper.java | 2 +- .../microg/gms/gservices/GServicesProvider.java | 4 ++-- 68 files changed, 109 insertions(+), 107 deletions(-) diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java index 0485f3a2..d9a19568 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEvent.java @@ -19,5 +19,5 @@ package com.google.android.gms.auth; import org.microg.safeparcel.AutoSafeParcelable; public class AccountChangeEvent extends AutoSafeParcelable { - public static Creator CREATOR = new AutoCreator(AccountChangeEvent.class); + public static Creator CREATOR = new AutoCreator<>(AccountChangeEvent.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java index 0d7f5cd8..78a84c71 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsRequest.java @@ -27,6 +27,6 @@ public class AccountChangeEventsRequest extends AutoSafeParcelable { @SafeParceled(3) private String s; - public static Creator CREATOR = new AutoCreator(AccountChangeEventsRequest.class); + public static Creator CREATOR = new AutoCreator<>(AccountChangeEventsRequest.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java index 0bff57a8..df9e72e8 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/AccountChangeEventsResponse.java @@ -29,8 +29,8 @@ public class AccountChangeEventsResponse extends AutoSafeParcelable { private List events; public AccountChangeEventsResponse() { - events = new ArrayList(); + events = new ArrayList<>(); } - public static Creator CREATOR = new AutoCreator(AccountChangeEventsResponse.class); + public static Creator CREATOR = new AutoCreator<>(AccountChangeEventsResponse.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/TokenData.java b/play-services-api/src/main/java/com/google/android/gms/auth/TokenData.java index 3b7d45f5..da762be9 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/TokenData.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/TokenData.java @@ -60,5 +60,5 @@ public class TokenData extends AutoSafeParcelable { this.scopes = null; } - public static final Creator CREATOR = new AutoCreator(TokenData.class); + public static final Creator CREATOR = new AutoCreator<>(TokenData.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java index 13ee988e..4edaa335 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java @@ -26,6 +26,7 @@ import org.microg.safeparcel.SafeParceled; import java.util.Arrays; import java.util.List; import java.util.Locale; +import java.util.Objects; @PublicApi public class Credential extends AutoSafeParcelable { @@ -143,15 +144,15 @@ public class Credential extends AutoSafeParcelable { Credential that = (Credential) o; - if (id != null ? !id.equals(that.id) : that.id != null) return false; - if (name != null ? !name.equals(that.name) : that.name != null) return false; - if (profilePictureUri != null ? !profilePictureUri.equals(that.profilePictureUri) : that.profilePictureUri != null) + if (!Objects.equals(id, that.id)) return false; + if (!Objects.equals(name, that.name)) return false; + if (!Objects.equals(profilePictureUri, that.profilePictureUri)) return false; - if (password != null ? !password.equals(that.password) : that.password != null) + if (!Objects.equals(password, that.password)) return false; - if (accountType != null ? !accountType.equals(that.accountType) : that.accountType != null) + if (!Objects.equals(accountType, that.accountType)) return false; - return generatedPassword != null ? generatedPassword.equals(that.generatedPassword) : that.generatedPassword == null; + return Objects.equals(generatedPassword, that.generatedPassword); } @@ -245,5 +246,5 @@ public class Credential extends AutoSafeParcelable { } } - public static final Creator CREATOR = new AutoCreator(Credential.class); + public static final Creator CREATOR = new AutoCreator<>(Credential.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java index 67d66c05..d76cd287 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java @@ -88,5 +88,5 @@ public class CredentialPickerConfig extends AutoSafeParcelable { } } - public static final Creator CREATOR = new AutoCreator(CredentialPickerConfig.class); + public static final Creator CREATOR = new AutoCreator<>(CredentialPickerConfig.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java index 80819c71..d8f313bd 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialRequest.java @@ -71,5 +71,5 @@ public class CredentialRequest extends AutoSafeParcelable { return passwordLoginSupported; } - public static final Creator CREATOR = new AutoCreator(CredentialRequest.class); + public static final Creator CREATOR = new AutoCreator<>(CredentialRequest.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java index 2ef78f95..6e17f550 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/IdToken.java @@ -54,5 +54,5 @@ public class IdToken extends AutoSafeParcelable { return id; } - public static final Creator CREATOR = new AutoCreator(IdToken.class); + public static final Creator CREATOR = new AutoCreator<>(IdToken.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java index bd7ae6f2..e560ddc5 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/DeleteRequest.java @@ -19,5 +19,5 @@ package com.google.android.gms.auth.api.credentials.internal; import org.microg.safeparcel.AutoSafeParcelable; public class DeleteRequest extends AutoSafeParcelable { - public static final Creator CREATOR = new AutoCreator(DeleteRequest.class); + public static final Creator CREATOR = new AutoCreator<>(DeleteRequest.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java index 3da7a72a..5fd6fcb7 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/GeneratePasswordRequest.java @@ -19,5 +19,5 @@ package com.google.android.gms.auth.api.credentials.internal; import org.microg.safeparcel.AutoSafeParcelable; public class GeneratePasswordRequest extends AutoSafeParcelable { - public static final Creator CREATOR = new AutoCreator(GeneratePasswordRequest.class); + public static final Creator CREATOR = new AutoCreator<>(GeneratePasswordRequest.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java index 5ec25998..24a9d92f 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/internal/SaveRequest.java @@ -19,5 +19,5 @@ package com.google.android.gms.auth.api.credentials.internal; import org.microg.safeparcel.AutoSafeParcelable; public class SaveRequest extends AutoSafeParcelable { - public static final Creator CREATOR = new AutoCreator(SaveRequest.class); + public static final Creator CREATOR = new AutoCreator<>(SaveRequest.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRecoveryGuidanceRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRecoveryGuidanceRequest.java index 6c73b4bc..037427cb 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRecoveryGuidanceRequest.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRecoveryGuidanceRequest.java @@ -42,5 +42,5 @@ public class AccountRecoveryGuidanceRequest extends AutoSafeParcelable { this.account = account; } - public static final Creator CREATOR = new AutoCreator(AccountRecoveryGuidanceRequest.class); + public static final Creator CREATOR = new AutoCreator<>(AccountRecoveryGuidanceRequest.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRemovalRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRemovalRequest.java index cd56eb1a..740b36f8 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRemovalRequest.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/AccountRemovalRequest.java @@ -42,5 +42,5 @@ public class AccountRemovalRequest extends AutoSafeParcelable { this.account = account; } - public static final Creator CREATOR = new AutoCreator(AccountRemovalRequest.class); + public static final Creator CREATOR = new AutoCreator<>(AccountRemovalRequest.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/ConfirmCredentialsRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/ConfirmCredentialsRequest.java index c7db433b..2b55b7cb 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/ConfirmCredentialsRequest.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/ConfirmCredentialsRequest.java @@ -30,5 +30,5 @@ public class ConfirmCredentialsRequest extends AutoSafeParcelable { @SafeParceled(3) public CaptchaSolution captchaSolution; - public static final Creator CREATOR = new AutoCreator(ConfirmCredentialsRequest.class); + public static final Creator CREATOR = new AutoCreator<>(ConfirmCredentialsRequest.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenRequest.java index 4a200050..20efadb4 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenRequest.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/dataservice/TokenRequest.java @@ -40,5 +40,5 @@ public class TokenRequest extends AutoSafeParcelable{ return new Account(accountName, accountType); } - public static final Creator CREATOR = new AutoCreator(TokenRequest.class); + public static final Creator CREATOR = new AutoCreator<>(TokenRequest.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/delegate/ConfirmCredentialsWorkflowRequest.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/delegate/ConfirmCredentialsWorkflowRequest.java index 0091dee5..9e1903dd 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/delegate/ConfirmCredentialsWorkflowRequest.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/delegate/ConfirmCredentialsWorkflowRequest.java @@ -39,5 +39,5 @@ public class ConfirmCredentialsWorkflowRequest extends AutoSafeParcelable { @SafeParceled(6) public AccountAuthenticatorResponse accountAuthenticatorResponse; - public static final Creator CREATOR = new AutoCreator(ConfirmCredentialsWorkflowRequest.class); + public static final Creator CREATOR = new AutoCreator<>(ConfirmCredentialsWorkflowRequest.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AccountCredentials.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AccountCredentials.java index 4b57130d..f8315516 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AccountCredentials.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AccountCredentials.java @@ -34,5 +34,5 @@ public class AccountCredentials extends AutoSafeParcelable { return new Account(accountName, accountType); } - public static final Creator CREATOR = new AutoCreator(AccountCredentials.class); + public static final Creator CREATOR = new AutoCreator<>(AccountCredentials.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AppDescription.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AppDescription.java index 9e339e81..8b63ab12 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AppDescription.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/AppDescription.java @@ -31,5 +31,5 @@ public class AppDescription extends AutoSafeParcelable { @SafeParceled(5) public String callingPkg; - public static final Creator CREATOR = new AutoCreator(AppDescription.class); + public static final Creator CREATOR = new AutoCreator<>(AppDescription.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/CaptchaSolution.java b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/CaptchaSolution.java index 9563798e..6fe2b279 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/CaptchaSolution.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/firstparty/shared/CaptchaSolution.java @@ -25,5 +25,5 @@ public class CaptchaSolution extends AutoSafeParcelable { @SafeParceled(1) private int versionCode = 1; - public static final Creator CREATOR = new AutoCreator(CaptchaSolution.class); + public static final Creator CREATOR = new AutoCreator<>(CaptchaSolution.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java b/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java index 5bd0c3c9..19a5017b 100644 --- a/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java +++ b/play-services-api/src/main/java/com/google/android/gms/clearcut/LogEventParcelable.java @@ -100,5 +100,5 @@ public class LogEventParcelable extends AutoSafeParcelable { } } - public static final Creator CREATOR = new AutoCreator(LogEventParcelable.class); + public static final Creator CREATOR = new AutoCreator<>(LogEventParcelable.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java b/play-services-api/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java index c8240279..f47be78c 100644 --- a/play-services-api/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java +++ b/play-services-api/src/main/java/com/google/android/gms/common/internal/GoogleCertificatesQuery.java @@ -71,5 +71,5 @@ public class GoogleCertificatesQuery extends AutoSafeParcelable { return certData; } - public static final Creator CREATOR = new AutoCreator(GoogleCertificatesQuery.class); + public static final Creator CREATOR = new AutoCreator<>(GoogleCertificatesQuery.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/common/server/FavaDiagnosticsEntity.java b/play-services-api/src/main/java/com/google/android/gms/common/server/FavaDiagnosticsEntity.java index 6f10959a..d32e668b 100644 --- a/play-services-api/src/main/java/com/google/android/gms/common/server/FavaDiagnosticsEntity.java +++ b/play-services-api/src/main/java/com/google/android/gms/common/server/FavaDiagnosticsEntity.java @@ -20,5 +20,5 @@ import org.microg.safeparcel.AutoSafeParcelable; public class FavaDiagnosticsEntity extends AutoSafeParcelable { - public static final Creator CREATOR = new AutoCreator(FavaDiagnosticsEntity.class); + public static final Creator CREATOR = new AutoCreator<>(FavaDiagnosticsEntity.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/people/internal/ParcelableLoadImageOptions.java b/play-services-api/src/main/java/com/google/android/gms/people/internal/ParcelableLoadImageOptions.java index 61180fd4..24b3872d 100644 --- a/play-services-api/src/main/java/com/google/android/gms/people/internal/ParcelableLoadImageOptions.java +++ b/play-services-api/src/main/java/com/google/android/gms/people/internal/ParcelableLoadImageOptions.java @@ -32,5 +32,5 @@ public class ParcelableLoadImageOptions extends AutoSafeParcelable { @SafeParceled(3) public boolean useLargePictureForCp2Images; - public static final Creator CREATOR = new AutoCreator(ParcelableLoadImageOptions.class); + public static final Creator CREATOR = new AutoCreator<>(ParcelableLoadImageOptions.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/people/model/AccountMetadata.java b/play-services-api/src/main/java/com/google/android/gms/people/model/AccountMetadata.java index 814a6574..103c572c 100644 --- a/play-services-api/src/main/java/com/google/android/gms/people/model/AccountMetadata.java +++ b/play-services-api/src/main/java/com/google/android/gms/people/model/AccountMetadata.java @@ -36,5 +36,5 @@ public class AccountMetadata extends AutoSafeParcelable { @SafeParceled(5) public boolean hasFeature4 = true; - public static Creator CREATOR = new AutoCreator(AccountMetadata.class); + public static Creator CREATOR = new AutoCreator<>(AccountMetadata.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/people/model/AvatarReference.java b/play-services-api/src/main/java/com/google/android/gms/people/model/AvatarReference.java index b03af386..3dbaba62 100644 --- a/play-services-api/src/main/java/com/google/android/gms/people/model/AvatarReference.java +++ b/play-services-api/src/main/java/com/google/android/gms/people/model/AvatarReference.java @@ -30,5 +30,5 @@ public class AvatarReference extends AutoSafeParcelable { @SafeParceled(2) public String location; - public static final Creator CREATOR = new AutoCreator(AvatarReference.class); + public static final Creator CREATOR = new AutoCreator<>(AvatarReference.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java b/play-services-api/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java index 791c19b8..4fc0e62a 100644 --- a/play-services-api/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java +++ b/play-services-api/src/main/java/com/google/android/gms/playlog/internal/LogEvent.java @@ -50,5 +50,5 @@ public class LogEvent extends AutoSafeParcelable { '}'; } - public static Creator CREATOR = new AutoCreator(LogEvent.class); + public static Creator CREATOR = new AutoCreator<>(LogEvent.class); } diff --git a/play-services-api/src/main/java/com/google/android/gms/playlog/internal/PlayLoggerContext.java b/play-services-api/src/main/java/com/google/android/gms/playlog/internal/PlayLoggerContext.java index ca31fb9b..6cf82935 100644 --- a/play-services-api/src/main/java/com/google/android/gms/playlog/internal/PlayLoggerContext.java +++ b/play-services-api/src/main/java/com/google/android/gms/playlog/internal/PlayLoggerContext.java @@ -97,5 +97,5 @@ public class PlayLoggerContext extends AutoSafeParcelable { return sb.toString(); } - public static Creator CREATOR = new AutoCreator(PlayLoggerContext.class); + public static Creator CREATOR = new AutoCreator<>(PlayLoggerContext.class); } diff --git a/play-services-base-api/src/main/java/com/google/android/gms/auth/api/signin/GoogleSignInAccount.java b/play-services-base-api/src/main/java/com/google/android/gms/auth/api/signin/GoogleSignInAccount.java index 802db9a3..031c5b37 100644 --- a/play-services-base-api/src/main/java/com/google/android/gms/auth/api/signin/GoogleSignInAccount.java +++ b/play-services-base-api/src/main/java/com/google/android/gms/auth/api/signin/GoogleSignInAccount.java @@ -8,5 +8,5 @@ package com.google.android.gms.auth.api.signin; import org.microg.safeparcel.AutoSafeParcelable; public class GoogleSignInAccount extends AutoSafeParcelable { - public static final Creator CREATOR = new AutoCreator(GoogleSignInAccount.class); + public static final Creator CREATOR = new AutoCreator<>(GoogleSignInAccount.class); } diff --git a/play-services-base-api/src/main/java/com/google/android/gms/common/data/DataHolder.java b/play-services-base-api/src/main/java/com/google/android/gms/common/data/DataHolder.java index 2867e413..6ae43d22 100644 --- a/play-services-base-api/src/main/java/com/google/android/gms/common/data/DataHolder.java +++ b/play-services-base-api/src/main/java/com/google/android/gms/common/data/DataHolder.java @@ -211,7 +211,7 @@ public class DataHolder extends AutoSafeParcelable implements Closeable { @SuppressWarnings("deprecation") private static CursorWindow[] createCursorWindows(Builder builder) { if (builder.columns.length == 0) return new CursorWindow[0]; - List windows = new ArrayList(); + List windows = new ArrayList<>(); try { CursorWindow current = null; for (int rowIndex = 0; rowIndex < builder.rows.size(); rowIndex++) { @@ -261,7 +261,7 @@ public class DataHolder extends AutoSafeParcelable implements Closeable { private static CursorWindow[] createCursorWindows(Cursor cursor) { if (cursor.getColumnCount() == 0) return new CursorWindow[0]; - List windows = new ArrayList(); + List windows = new ArrayList<>(); CursorWindow current = null; int rowIndex = 0; while (cursor.moveToNext()) { @@ -436,7 +436,7 @@ public class DataHolder extends AutoSafeParcelable implements Closeable { } public void validateContents() { - columnIndices = new HashMap(); + columnIndices = new HashMap<>(); for (int i = 0; i < columns.length; i++) { columnIndices.put(columns[i], i); } @@ -455,9 +455,9 @@ public class DataHolder extends AutoSafeParcelable implements Closeable { private Builder(String[] columns, String uniqueColumn) { this.columns = columns; - this.rows = new ArrayList>(); + this.rows = new ArrayList<>(); this.uniqueColumn = uniqueColumn; - this.uniqueIndizes = new HashMap(); + this.uniqueIndizes = new HashMap<>(); } /** @@ -509,7 +509,7 @@ public class DataHolder extends AutoSafeParcelable implements Closeable { * @return {@link DataHolder.Builder} to continue construction. */ public Builder withRow(ContentValues values) { - HashMap row = new HashMap(); + HashMap row = new HashMap<>(); for (Map.Entry entry : values.valueSet()) { row.put(entry.getKey(), entry.getValue()); } diff --git a/play-services-base-api/src/main/java/com/google/android/gms/common/images/WebImage.java b/play-services-base-api/src/main/java/com/google/android/gms/common/images/WebImage.java index 7239c1c9..1843f847 100644 --- a/play-services-base-api/src/main/java/com/google/android/gms/common/images/WebImage.java +++ b/play-services-base-api/src/main/java/com/google/android/gms/common/images/WebImage.java @@ -24,7 +24,7 @@ import org.microg.safeparcel.AutoSafeParcelable; import org.microg.safeparcel.SafeParceled; public class WebImage extends AutoSafeParcelable { - public static final Creator CREATOR = new AutoCreator(WebImage.class); + public static final Creator CREATOR = new AutoCreator<>(WebImage.class); public WebImage () { this.uri = null; diff --git a/play-services-base/src/main/java/com/google/android/gms/common/api/AccountInfo.java b/play-services-base/src/main/java/com/google/android/gms/common/api/AccountInfo.java index 30d6a169..fd400c45 100644 --- a/play-services-base/src/main/java/com/google/android/gms/common/api/AccountInfo.java +++ b/play-services-base/src/main/java/com/google/android/gms/common/api/AccountInfo.java @@ -20,5 +20,5 @@ import org.microg.safeparcel.AutoSafeParcelable; @Deprecated public class AccountInfo extends AutoSafeParcelable { - public static final Creator CREATOR = new AutoCreator(AccountInfo.class); + public static final Creator CREATOR = new AutoCreator<>(AccountInfo.class); } diff --git a/play-services-base/src/main/java/com/google/android/gms/common/api/GoogleApiClient.java b/play-services-base/src/main/java/com/google/android/gms/common/api/GoogleApiClient.java index 51832e17..ec1482bf 100644 --- a/play-services-base/src/main/java/com/google/android/gms/common/api/GoogleApiClient.java +++ b/play-services-base/src/main/java/com/google/android/gms/common/api/GoogleApiClient.java @@ -241,10 +241,10 @@ public interface GoogleApiClient { @PublicApi class Builder { private final Context context; - private final Map apis = new HashMap(); - private final Set connectionCallbacks = new HashSet(); - private final Set connectionFailedListeners = new HashSet(); - private final Set scopes = new HashSet(); + private final Map apis = new HashMap<>(); + private final Set connectionCallbacks = new HashSet<>(); + private final Set connectionFailedListeners = new HashSet<>(); + private final Set scopes = new HashSet<>(); private String accountName; private int clientId = -1; private FragmentActivity fragmentActivity; diff --git a/play-services-base/src/main/java/org/microg/gms/common/GmsConnector.java b/play-services-base/src/main/java/org/microg/gms/common/GmsConnector.java index 8013d70f..41c39d40 100644 --- a/play-services-base/src/main/java/org/microg/gms/common/GmsConnector.java +++ b/play-services-base/src/main/java/org/microg/gms/common/GmsConnector.java @@ -44,7 +44,7 @@ public class GmsConnector { } public static PendingResult call(GoogleApiClient client, Api api, GmsConnector.Callback callback) { - return new GmsConnector(client, api, callback).connect(); + return new GmsConnector<>(client, api, callback).connect(); } public AbstractPendingResult connect() { @@ -52,7 +52,7 @@ public class GmsConnector { apiClient.incrementUsageCounter(); apiClient.getApiConnection(api); Looper looper = apiClient.getLooper(); - final AbstractPendingResult result = new AbstractPendingResult(looper); + final AbstractPendingResult result = new AbstractPendingResult<>(looper); Message msg = new Message(); msg.obj = result; new Handler(looper).sendMessage(msg); diff --git a/play-services-base/src/main/java/org/microg/gms/common/MultiConnectionKeeper.java b/play-services-base/src/main/java/org/microg/gms/common/MultiConnectionKeeper.java index ea4cfbe6..d3484f37 100644 --- a/play-services-base/src/main/java/org/microg/gms/common/MultiConnectionKeeper.java +++ b/play-services-base/src/main/java/org/microg/gms/common/MultiConnectionKeeper.java @@ -39,7 +39,7 @@ public class MultiConnectionKeeper { private static MultiConnectionKeeper INSTANCE; private final Context context; - private final Map connections = new HashMap(); + private final Map connections = new HashMap<>(); public MultiConnectionKeeper(Context context) { this.context = context; @@ -83,7 +83,7 @@ public class MultiConnectionKeeper { public class Connection { private final String actionString; - private final Set connectionForwards = new HashSet(); + private final Set connectionForwards = new HashSet<>(); private boolean bound = false; private boolean connected = false; private IBinder binder; diff --git a/play-services-base/src/main/java/org/microg/gms/common/api/AbstractPendingResult.java b/play-services-base/src/main/java/org/microg/gms/common/api/AbstractPendingResult.java index 15aac9e3..560f3681 100644 --- a/play-services-base/src/main/java/org/microg/gms/common/api/AbstractPendingResult.java +++ b/play-services-base/src/main/java/org/microg/gms/common/api/AbstractPendingResult.java @@ -34,7 +34,7 @@ public class AbstractPendingResult implements PendingResult private ResultCallback resultCallback; public AbstractPendingResult(Looper looper) { - handler = new ResultCallbackHandler(looper); + handler = new ResultCallbackHandler<>(looper); } private R getResult() { diff --git a/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiClientImpl.java b/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiClientImpl.java index 11233697..f2b3ed0a 100644 --- a/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiClientImpl.java +++ b/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiClientImpl.java @@ -43,10 +43,10 @@ public class GoogleApiClientImpl implements GoogleApiClient { private final Context context; private final Looper looper; private final ApiClientSettings clientSettings; - private final Map apis = new HashMap(); - private final Map apiConnections = new HashMap(); - private final Set connectionCallbacks = new HashSet(); - private final Set connectionFailedListeners = new HashSet(); + private final Map apis = new HashMap<>(); + private final Map apiConnections = new HashMap<>(); + private final Set connectionCallbacks = new HashSet<>(); + private final Set connectionFailedListeners = new HashSet<>(); private final int clientId; private final ConnectionCallbacks baseConnectionCallbacks = new ConnectionCallbacks() { @Override diff --git a/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiManager.java b/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiManager.java index 1662ca31..addad6a7 100644 --- a/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiManager.java +++ b/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiManager.java @@ -17,6 +17,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; public class GoogleApiManager { private static GoogleApiManager instance; @@ -52,7 +53,7 @@ public class GoogleApiManager { if (connected) { apiCall.execute(client, completionSource); } else { - waitingApiCallMap.get(new ApiInstance(api)).add(new WaitingApiCall((PendingGoogleApiCall) apiCall, completionSource)); + waitingApiCallMap.get(new ApiInstance(api)).add(new WaitingApiCall<>((PendingGoogleApiCall) apiCall, completionSource)); if (!connecting) { client.connect(); } @@ -134,8 +135,8 @@ public class GoogleApiManager { WaitingApiCall that = (WaitingApiCall) o; - if (apiCall != null ? !apiCall.equals(that.apiCall) : that.apiCall != null) return false; - return completionSource != null ? completionSource.equals(that.completionSource) : that.completionSource == null; + if (!Objects.equals(apiCall, that.apiCall)) return false; + return Objects.equals(completionSource, that.completionSource); } @Override @@ -166,8 +167,8 @@ public class GoogleApiManager { ApiInstance that = (ApiInstance) o; - if (apiClass != null ? !apiClass.equals(that.apiClass) : that.apiClass != null) return false; - return apiOptions != null ? apiOptions.equals(that.apiOptions) : that.apiOptions == null; + if (!Objects.equals(apiClass, that.apiClass)) return false; + return Objects.equals(apiOptions, that.apiOptions); } @Override diff --git a/play-services-base/src/main/java/org/microg/gms/common/api/ResultCallbackHandler.java b/play-services-base/src/main/java/org/microg/gms/common/api/ResultCallbackHandler.java index c19c849c..1ddb4d47 100644 --- a/play-services-base/src/main/java/org/microg/gms/common/api/ResultCallbackHandler.java +++ b/play-services-base/src/main/java/org/microg/gms/common/api/ResultCallbackHandler.java @@ -50,7 +50,7 @@ class ResultCallbackHandler extends Handler { public void sendResultCallback(ResultCallback callback, R result) { Message message = new Message(); message.what = CALLBACK_ON_COMPLETE; - message.obj = new OnCompleteObject(callback, result); + message.obj = new OnCompleteObject<>(callback, result); sendMessage(message); } diff --git a/play-services-basement/src/main/java/com/google/android/gms/common/api/Scope.java b/play-services-basement/src/main/java/com/google/android/gms/common/api/Scope.java index d99932b2..28211ee6 100644 --- a/play-services-basement/src/main/java/com/google/android/gms/common/api/Scope.java +++ b/play-services-basement/src/main/java/com/google/android/gms/common/api/Scope.java @@ -61,5 +61,5 @@ public class Scope extends AutoSafeParcelable { return scopeUri; } - public static final Creator CREATOR = new AutoCreator(Scope.class); + public static final Creator CREATOR = new AutoCreator<>(Scope.class); } diff --git a/play-services-basement/src/main/java/com/google/android/gms/common/api/Status.java b/play-services-basement/src/main/java/com/google/android/gms/common/api/Status.java index 6a80ff39..d7e6f9a5 100644 --- a/play-services-basement/src/main/java/com/google/android/gms/common/api/Status.java +++ b/play-services-basement/src/main/java/com/google/android/gms/common/api/Status.java @@ -176,5 +176,5 @@ public final class Status extends AutoSafeParcelable implements Result { } } - public static final Creator CREATOR = new AutoCreator(Status.class); + public static final Creator CREATOR = new AutoCreator<>(Status.class); } diff --git a/play-services-basement/src/main/java/com/google/android/gms/common/internal/GetServiceRequest.java b/play-services-basement/src/main/java/com/google/android/gms/common/internal/GetServiceRequest.java index 488feba9..cb9dccd0 100644 --- a/play-services-basement/src/main/java/com/google/android/gms/common/internal/GetServiceRequest.java +++ b/play-services-basement/src/main/java/com/google/android/gms/common/internal/GetServiceRequest.java @@ -79,5 +79,5 @@ public class GetServiceRequest extends AutoSafeParcelable { '}'; } - public static Creator CREATOR = new AutoCreator(GetServiceRequest.class); + public static Creator CREATOR = new AutoCreator<>(GetServiceRequest.class); } diff --git a/play-services-basement/src/main/java/com/google/android/gms/common/internal/ValidateAccountRequest.java b/play-services-basement/src/main/java/com/google/android/gms/common/internal/ValidateAccountRequest.java index 71337291..75e59d95 100644 --- a/play-services-basement/src/main/java/com/google/android/gms/common/internal/ValidateAccountRequest.java +++ b/play-services-basement/src/main/java/com/google/android/gms/common/internal/ValidateAccountRequest.java @@ -19,5 +19,5 @@ package com.google.android.gms.common.internal; import org.microg.safeparcel.AutoSafeParcelable; public class ValidateAccountRequest extends AutoSafeParcelable { - public static Creator CREATOR = new AutoCreator(ValidateAccountRequest.class); + public static Creator CREATOR = new AutoCreator<>(ValidateAccountRequest.class); } diff --git a/play-services-basement/src/main/java/com/google/android/gms/dynamic/ObjectWrapper.java b/play-services-basement/src/main/java/com/google/android/gms/dynamic/ObjectWrapper.java index 6f26194b..967d8cc6 100644 --- a/play-services-basement/src/main/java/com/google/android/gms/dynamic/ObjectWrapper.java +++ b/play-services-basement/src/main/java/com/google/android/gms/dynamic/ObjectWrapper.java @@ -72,6 +72,6 @@ public class ObjectWrapper extends IObjectWrapper.Stub { } public static ObjectWrapper wrap(T t) { - return new ObjectWrapper(t); + return new ObjectWrapper<>(t); } } diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationMetadata.java b/play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationMetadata.java index 71dee27b..f8614ce1 100644 --- a/play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationMetadata.java +++ b/play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationMetadata.java @@ -81,5 +81,5 @@ public class ApplicationMetadata extends AutoSafeParcelable { return sb.toString(); } - public static final Creator CREATOR = new AutoCreator(ApplicationMetadata.class); + public static final Creator CREATOR = new AutoCreator<>(ApplicationMetadata.class); } diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationStatus.java b/play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationStatus.java index 96537689..2eafc853 100644 --- a/play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationStatus.java +++ b/play-services-cast-api/src/main/java/com/google/android/gms/cast/ApplicationStatus.java @@ -32,5 +32,5 @@ public class ApplicationStatus extends AutoSafeParcelable { @SafeParceled(2) private String applicationStatus; - public static final Creator CREATOR = new AutoCreator(ApplicationStatus.class); + public static final Creator CREATOR = new AutoCreator<>(ApplicationStatus.class); } diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java b/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java index f185c8a5..21a41fae 100644 --- a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java +++ b/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java @@ -47,7 +47,7 @@ public class CastDevice extends AutoSafeParcelable { this.servicePort = port; this.deviceVersion = deviceVersion; this.friendlyName = friendlyName; - this.icons = new ArrayList(); + this.icons = new ArrayList<>(); this.icons.add(new WebImage(Uri.parse(String.format("http://%s:8008%s", this.address, iconPath)))); this.modelName = modelName; this.capabilities = capabilities; @@ -190,5 +190,5 @@ public class CastDevice extends AutoSafeParcelable { "}"; } - public static Creator CREATOR = new AutoCreator(CastDevice.class); + public static Creator CREATOR = new AutoCreator<>(CastDevice.class); } diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDeviceStatus.java b/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDeviceStatus.java index 67dba193..b44251f3 100644 --- a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDeviceStatus.java +++ b/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDeviceStatus.java @@ -45,5 +45,5 @@ public class CastDeviceStatus extends AutoSafeParcelable { @SafeParceled(6) private int standbyState; - public static final Creator CREATOR = new AutoCreator(CastDeviceStatus.class); + public static final Creator CREATOR = new AutoCreator<>(CastDeviceStatus.class); } diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/JoinOptions.java b/play-services-cast-api/src/main/java/com/google/android/gms/cast/JoinOptions.java index 022af3d2..9c938e08 100644 --- a/play-services-cast-api/src/main/java/com/google/android/gms/cast/JoinOptions.java +++ b/play-services-cast-api/src/main/java/com/google/android/gms/cast/JoinOptions.java @@ -25,5 +25,5 @@ public class JoinOptions extends AutoSafeParcelable { @SafeParceled(2) private int connectionType = 0; - public static Creator CREATOR = new AutoCreator(JoinOptions.class); + public static Creator CREATOR = new AutoCreator<>(JoinOptions.class); } diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/LaunchOptions.java b/play-services-cast-api/src/main/java/com/google/android/gms/cast/LaunchOptions.java index 7c30fbe3..5e0f0562 100644 --- a/play-services-cast-api/src/main/java/com/google/android/gms/cast/LaunchOptions.java +++ b/play-services-cast-api/src/main/java/com/google/android/gms/cast/LaunchOptions.java @@ -43,5 +43,5 @@ public class LaunchOptions extends AutoSafeParcelable { this.relaunchIfRunning = relaunchIfRunning; } - public static Creator CREATOR = new AutoCreator(LaunchOptions.class); + public static Creator CREATOR = new AutoCreator<>(LaunchOptions.class); } diff --git a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastOptions.java b/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastOptions.java index 2592c821..3ba41b78 100644 --- a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastOptions.java +++ b/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastOptions.java @@ -61,5 +61,5 @@ public class CastOptions extends AutoSafeParcelable { return this.launchOptions; } - public static Creator CREATOR = new AutoCreator(CastOptions.class); + public static Creator CREATOR = new AutoCreator<>(CastOptions.class); } diff --git a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/CastMediaOptions.java b/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/CastMediaOptions.java index 3db58f3e..e1a8b1c9 100644 --- a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/CastMediaOptions.java +++ b/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/CastMediaOptions.java @@ -32,5 +32,5 @@ public class CastMediaOptions extends AutoSafeParcelable { @SafeParceled(5) public NotificationOptions notificationOptions; - public static Creator CREATOR = new AutoCreator(CastMediaOptions.class); + public static Creator CREATOR = new AutoCreator<>(CastMediaOptions.class); } diff --git a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/NotificationOptions.java b/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/NotificationOptions.java index bfed1ad4..fad5e21c 100644 --- a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/NotificationOptions.java +++ b/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/media/NotificationOptions.java @@ -92,5 +92,5 @@ public class NotificationOptions extends AutoSafeParcelable { @SafeParceled(33) public INotificationActionsProvider notificationActionsProvider; - public static Creator CREATOR = new AutoCreator(NotificationOptions.class); + public static Creator CREATOR = new AutoCreator<>(NotificationOptions.class); } diff --git a/play-services-cast/src/main/java/com/google/android/gms/cast/Cast.java b/play-services-cast/src/main/java/com/google/android/gms/cast/Cast.java index 33f7be44..aa5e06a5 100755 --- a/play-services-cast/src/main/java/com/google/android/gms/cast/Cast.java +++ b/play-services-cast/src/main/java/com/google/android/gms/cast/Cast.java @@ -89,7 +89,7 @@ public final class Cast { /** * Token to pass to {@link GoogleApiClient.Builder#addApi(Api)} to enable the Cast features. */ - public static final Api API = new Api(new CastApiClientBuilder()); + public static final Api API = new Api<>(new CastApiClientBuilder()); /** * An implementation of the CastApi interface. The interface is used to interact with a cast device. diff --git a/play-services-cast/src/main/java/com/google/android/gms/cast/CastRemoteDisplay.java b/play-services-cast/src/main/java/com/google/android/gms/cast/CastRemoteDisplay.java index 30c20e73..0cd3d5af 100755 --- a/play-services-cast/src/main/java/com/google/android/gms/cast/CastRemoteDisplay.java +++ b/play-services-cast/src/main/java/com/google/android/gms/cast/CastRemoteDisplay.java @@ -32,7 +32,7 @@ public final class CastRemoteDisplay { /** * Token to pass to {@link GoogleApiClient.Builder#addApi(Api)} to enable the CastRemoteDisplay features. */ - public static final Api API = new Api(new CastRemoteDisplayApiClientBuilder()); + public static final Api API = new Api<>(new CastRemoteDisplayApiClientBuilder()); /** * An implementation of the CastRemoteDisplayAPI interface. The interface is used to interact with a cast device. diff --git a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractAboutFragment.java b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractAboutFragment.java index e0b53f47..6795cc2d 100644 --- a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractAboutFragment.java +++ b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractAboutFragment.java @@ -102,7 +102,7 @@ public abstract class AbstractAboutFragment extends Fragment { aboutRoot.findViewById(android.R.id.summary).setVisibility(View.VISIBLE); } - List libraries = new ArrayList(); + List libraries = new ArrayList<>(); collectLibraries(libraries); Collections.sort(libraries); ((ListView) aboutRoot.findViewById(android.R.id.list)).setAdapter(new LibraryAdapter(getContext(), libraries.toArray(new Library[libraries.size()]))); diff --git a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractDashboardActivity.java b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractDashboardActivity.java index caac607b..f926b4c1 100644 --- a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractDashboardActivity.java +++ b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractDashboardActivity.java @@ -12,7 +12,7 @@ import java.util.List; public abstract class AbstractDashboardActivity extends AppCompatActivity { protected int preferencesResource = 0; - private final List conditions = new ArrayList(); + private final List conditions = new ArrayList<>(); private ViewGroup conditionContainer; @Override diff --git a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java index 53916aba..6b405646 100644 --- a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java +++ b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java @@ -58,7 +58,7 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC private String mSummary; private ArrayList mSwitchChangeListeners = - new ArrayList(); + new ArrayList<>(); public SwitchBar(Context context) { this(context, null); diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java b/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java index d10f8b21..dfb73e7f 100644 --- a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java +++ b/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java @@ -44,7 +44,7 @@ public class SessionManagerImpl extends ISessionManager.Stub { private Set sessionManagerListeners = new HashSet(); private Set castStateListeners = new HashSet(); - private Map routeSessions = new HashMap(); + private Map routeSessions = new HashMap<>(); private SessionImpl currentSession; diff --git a/play-services-core/src/main/java/org/microg/gms/auth/AuthManagerServiceImpl.java b/play-services-core/src/main/java/org/microg/gms/auth/AuthManagerServiceImpl.java index 6b779a26..2205eb3f 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/AuthManagerServiceImpl.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/AuthManagerServiceImpl.java @@ -137,7 +137,7 @@ public class AuthManagerServiceImpl extends IAuthManagerService.Stub { private List getScopes(String scope) { if (!scope.startsWith("oauth2:")) return null; String[] strings = scope.substring(7).split(" "); - List res = new ArrayList(); + List res = new ArrayList<>(); for (String string : strings) { res.add(new Scope(string)); } diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java b/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java index 60879308..158ed447 100644 --- a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java +++ b/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java @@ -107,8 +107,8 @@ public class CastDeviceControllerImpl extends ICastDeviceController.Stub impleme metadata.name = app.name; Log.d(TAG, "unimplemented: ApplicationMetadata.images"); Log.d(TAG, "unimplemented: ApplicationMetadata.senderAppLaunchUri"); - metadata.images = new ArrayList(); - metadata.namespaces = new ArrayList(); + metadata.images = new ArrayList<>(); + metadata.namespaces = new ArrayList<>(); for(Namespace namespace : app.namespaces) { metadata.namespaces.add(namespace.name); } diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java b/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java index fad3258a..379bbf41 100644 --- a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java +++ b/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java @@ -45,13 +45,13 @@ import java.util.Map; public class CastMediaRouteProvider extends MediaRouteProvider { private static final String TAG = CastMediaRouteProvider.class.getSimpleName(); - private Map castDevices = new HashMap(); - private Map serviceCastIds = new HashMap(); + private Map castDevices = new HashMap<>(); + private Map serviceCastIds = new HashMap<>(); private NsdManager mNsdManager; private NsdManager.DiscoveryListener mDiscoveryListener; - private List customCategories = new ArrayList(); + private List customCategories = new ArrayList<>(); private enum State { NOT_DISCOVERING, @@ -61,7 +61,7 @@ public class CastMediaRouteProvider extends MediaRouteProvider { } private State state = State.NOT_DISCOVERING; - private static final ArrayList BASE_CONTROL_FILTERS = new ArrayList(); + private static final ArrayList BASE_CONTROL_FILTERS = new ArrayList<>(); static { IntentFilter filter; @@ -318,7 +318,7 @@ public class CastMediaRouteProvider extends MediaRouteProvider { private void publishRoutes() { MediaRouteProviderDescriptor.Builder builder = new MediaRouteProviderDescriptor.Builder(); for (CastDevice castDevice : this.castDevices.values()) { - ArrayList controlFilters = new ArrayList(BASE_CONTROL_FILTERS); + ArrayList controlFilters = new ArrayList<>(BASE_CONTROL_FILTERS); // Include any app-specific control filters that have been requested. // TODO: Do we need to check with the device? for (String category : this.customCategories) { diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java index 3ecc0999..0a084d83 100755 --- a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java +++ b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java @@ -46,7 +46,7 @@ import java.util.zip.GZIPOutputStream; public class CheckinClient { private static final String TAG = "GmsCheckinClient"; private static final Object TODO = null; // TODO - private static final List TODO_LIST_STRING = new ArrayList(); // TODO + private static final List TODO_LIST_STRING = new ArrayList<>(); // TODO private static final List TODO_LIST_CHECKIN = new ArrayList(); // TODO private static final String SERVICE_URL = "https://android.clients.google.com/checkin"; diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java index 631db813..9249d4f1 100755 --- a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java +++ b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java @@ -43,7 +43,7 @@ public class CheckinManager { return null; if (!CheckinPrefs.get(context).isEnabled()) return null; - List accounts = new ArrayList(); + List accounts = new ArrayList<>(); AccountManager accountManager = AccountManager.get(context); String accountType = AuthConstants.DEFAULT_ACCOUNT_TYPE; for (Account account : accountManager.getAccountsByType(accountType)) { diff --git a/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java b/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java index c4886368..99fed5ef 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java +++ b/play-services-core/src/main/java/org/microg/gms/common/DeviceConfiguration.java @@ -69,7 +69,7 @@ public class DeviceConfiguration { glEsVersion = configurationInfo.reqGlEsVersion; PackageManager packageManager = context.getPackageManager(); String[] systemSharedLibraryNames = packageManager.getSystemSharedLibraryNames(); - sharedLibraries = new ArrayList(); + sharedLibraries = new ArrayList<>(); if (systemSharedLibraryNames != null) sharedLibraries.addAll(Arrays.asList(systemSharedLibraryNames)); for (String s : new String[]{"com.google.android.maps", "com.google.android.media.effects", "com.google.widevine.software.drm"}) { if (!sharedLibraries.contains(s)) { @@ -77,7 +77,7 @@ public class DeviceConfiguration { } } Collections.sort(sharedLibraries); - availableFeatures = new ArrayList(); + availableFeatures = new ArrayList<>(); if (packageManager.getSystemAvailableFeatures() != null) { for (FeatureInfo featureInfo : packageManager.getSystemAvailableFeatures()) { if (featureInfo != null && featureInfo.name != null) availableFeatures.add(featureInfo.name); @@ -87,14 +87,14 @@ public class DeviceConfiguration { this.nativePlatforms = getNativePlatforms(); widthPixels = displayMetrics.widthPixels; heightPixels = displayMetrics.heightPixels; - locales = new ArrayList(Arrays.asList(context.getAssets().getLocales())); + locales = new ArrayList<>(Arrays.asList(context.getAssets().getLocales())); for (int i = 0; i < locales.size(); i++) { locales.set(i, locales.get(i).replace("-", "_")); } Collections.sort(locales); - Set glExtensions = new HashSet(); + Set glExtensions = new HashSet<>(); addEglExtensions(glExtensions); - this.glExtensions = new ArrayList(glExtensions); + this.glExtensions = new ArrayList<>(glExtensions); Collections.sort(this.glExtensions); } @@ -104,7 +104,7 @@ public class DeviceConfiguration { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { return Arrays.asList(Build.SUPPORTED_ABIS); } else { - nativePlatforms = new ArrayList(); + nativePlatforms = new ArrayList<>(); nativePlatforms.add(Build.CPU_ABI); if (Build.CPU_ABI2 != null && !Build.CPU_ABI2.equals("unknown")) nativePlatforms.add(Build.CPU_ABI2); diff --git a/play-services-core/src/main/java/org/microg/gms/common/MultiListenerProxy.java b/play-services-core/src/main/java/org/microg/gms/common/MultiListenerProxy.java index b453ee6e..48011224 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/MultiListenerProxy.java +++ b/play-services-core/src/main/java/org/microg/gms/common/MultiListenerProxy.java @@ -33,11 +33,11 @@ public class MultiListenerProxy implements InvocationHandl private static final String TAG = "GmsMultiListener"; public static T get(Class tClass, final Collection listeners) { - return get(tClass, new CollectionListenerPool(listeners)); + return get(tClass, new CollectionListenerPool<>(listeners)); } public static T get(Class tClass, final ListenerPool listenerPool) { - return (T) Proxy.newProxyInstance(tClass.getClassLoader(), new Class[]{tClass}, new MultiListenerProxy(listenerPool)); + return (T) Proxy.newProxyInstance(tClass.getClassLoader(), new Class[]{tClass}, new MultiListenerProxy<>(listenerPool)); } private final ListenerPool listeners; @@ -48,7 +48,7 @@ public class MultiListenerProxy implements InvocationHandl @Override public Object invoke(Object proxy, Method method, Object[] args) { - for (T listener : new HashSet(listeners)) { + for (T listener : new HashSet<>(listeners)) { try { method.invoke(listener, args); } catch (Exception e) { diff --git a/play-services-core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java b/play-services-core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java index 46ebca3b..b562ee84 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java +++ b/play-services-core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java @@ -38,12 +38,12 @@ public class RemoteListenerProxy implements ServiceConnect private final String bindAction; private IBinder remote; private boolean connecting; - private List waiting = new ArrayList(); + private List waiting = new ArrayList<>(); private Class tClass; public static T get(Context context, Intent intent, Class tClass, String bindAction) { return (T) Proxy.newProxyInstance(tClass.getClassLoader(), new Class[]{tClass}, - new RemoteListenerProxy(context, intent, tClass, bindAction)); + new RemoteListenerProxy<>(context, intent, tClass, bindAction)); } private RemoteListenerProxy(Context context, Intent intent, Class tClass, String bindAction) { diff --git a/play-services-core/src/main/java/org/microg/gms/gservices/DatabaseHelper.java b/play-services-core/src/main/java/org/microg/gms/gservices/DatabaseHelper.java index 9aa1ee4b..74554610 100644 --- a/play-services-core/src/main/java/org/microg/gms/gservices/DatabaseHelper.java +++ b/play-services-core/src/main/java/org/microg/gms/gservices/DatabaseHelper.java @@ -75,7 +75,7 @@ public class DatabaseHelper extends SQLiteOpenHelper { } public Map search(String search) { - Map map = new HashMap(); + Map map = new HashMap<>(); Cursor cursor = getReadableDatabase().query("overrides", new String[]{"name", "value"}, "name LIKE ?", new String[]{search}, null, null, null, null); if (cursor != null) { diff --git a/play-services-core/src/main/java/org/microg/gms/gservices/GServicesProvider.java b/play-services-core/src/main/java/org/microg/gms/gservices/GServicesProvider.java index 698836cb..d1bc56ed 100644 --- a/play-services-core/src/main/java/org/microg/gms/gservices/GServicesProvider.java +++ b/play-services-core/src/main/java/org/microg/gms/gservices/GServicesProvider.java @@ -46,8 +46,8 @@ public class GServicesProvider extends ContentProvider { private static final String TAG = "GmsServicesProvider"; private DatabaseHelper databaseHelper; - private Map cache = new HashMap(); - private Set cachedPrefixes = new HashSet(); + private Map cache = new HashMap<>(); + private Set cachedPrefixes = new HashSet<>(); @Override public boolean onCreate() { From cbef592f8d1da4c0c3b95671d00232a4d6a0aaa6 Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Mon, 31 Aug 2020 19:29:33 -0400 Subject: [PATCH 07/11] Java 8 migration --- .../org/microg/gms/common/GmsConnector.java | 9 +-- .../gms/common/api/GoogleApiClientImpl.java | 20 +++--- .../tools/ui/AbstractDashboardActivity.java | 20 +++--- .../java/org/microg/tools/ui/Condition.java | 17 +++--- .../java/org/microg/tools/ui/SwitchBar.java | 7 +-- .../gms/auth/AskPermissionActivity.java | 61 ++++++------------- .../gms/auth/login/AssistantActivity.java | 15 +---- .../gms/cast/CastMediaRouteProvider.java | 7 +-- .../org/microg/gms/common/HttpFormClient.java | 13 ++-- .../gms/common/RemoteListenerProxy.java | 15 ++--- .../microg/gms/gcm/UnregisterReceiver.java | 21 +++---- .../microg/gms/people/PeopleServiceImpl.java | 31 ++++------ .../org/microg/gms/ui/AskPushPermission.java | 36 ++++------- .../java/org/microg/gms/ui/Conditions.java | 13 ++-- 14 files changed, 97 insertions(+), 188 deletions(-) diff --git a/play-services-base/src/main/java/org/microg/gms/common/GmsConnector.java b/play-services-base/src/main/java/org/microg/gms/common/GmsConnector.java index 41c39d40..9a56566c 100644 --- a/play-services-base/src/main/java/org/microg/gms/common/GmsConnector.java +++ b/play-services-base/src/main/java/org/microg/gms/common/GmsConnector.java @@ -78,12 +78,9 @@ public class GmsConnector { final AbstractPendingResult result = (AbstractPendingResult) msg.obj; try { C connection = (C) apiClient.getApiConnection(api); - callback.onClientAvailable(connection, new GmsConnector.Callback.ResultProvider() { - @Override - public void onResultAvailable(R realResult) { - result.deliverResult(realResult); - apiClient.decrementUsageCounter(); - } + callback.onClientAvailable(connection, realResult -> { + result.deliverResult(realResult); + apiClient.decrementUsageCounter(); }); } catch (RemoteException ignored) { diff --git a/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiClientImpl.java b/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiClientImpl.java index f2b3ed0a..e59f68f6 100644 --- a/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiClientImpl.java +++ b/play-services-base/src/main/java/org/microg/gms/common/api/GoogleApiClientImpl.java @@ -19,12 +19,10 @@ package org.microg.gms.common.api; import android.content.Context; import android.os.Bundle; import android.os.Looper; -import android.os.Message; +import android.util.Log; import androidx.fragment.app.FragmentActivity; -import android.util.Log; - import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.api.Api; import com.google.android.gms.common.api.GoogleApiClient; @@ -65,16 +63,12 @@ public class GoogleApiClientImpl implements GoogleApiClient { } } }; - private final OnConnectionFailedListener baseConnectionFailedListener = new - OnConnectionFailedListener() { - @Override - public void onConnectionFailed(ConnectionResult result) { - Log.d(TAG, "OnConnectionFailedListener : onConnectionFailed()"); - for (OnConnectionFailedListener listener : connectionFailedListeners) { - listener.onConnectionFailed(result); - } - } - }; + private final OnConnectionFailedListener baseConnectionFailedListener = result -> { + Log.d(TAG, "OnConnectionFailedListener : onConnectionFailed()"); + for (OnConnectionFailedListener listener : connectionFailedListeners) { + listener.onConnectionFailed(result); + } + }; private int usageCounter = 0; private boolean shouldDisconnect = false; diff --git a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractDashboardActivity.java b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractDashboardActivity.java index f926b4c1..30bf98c8 100644 --- a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractDashboardActivity.java +++ b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractDashboardActivity.java @@ -47,19 +47,13 @@ public abstract class AbstractDashboardActivity extends AppCompatActivity { private void evaluateConditionAsync(final Condition condition) { if (condition.willBeEvaluating()) { - new Thread(new Runnable() { - @Override - public void run() { - if (condition.isActive(AbstractDashboardActivity.this)) { - runOnUiThread(new Runnable() { - @Override - public void run() { - if (conditions.contains(condition) && condition.isEvaluated()) { - addConditionToView(condition); - } - } - }); - } + new Thread(() -> { + if (condition.isActive(AbstractDashboardActivity.this)) { + runOnUiThread(() -> { + if (conditions.contains(condition) && condition.isEvaluated()) { + addConditionToView(condition); + } + }); } }).start(); } diff --git a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/Condition.java b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/Condition.java index 7ea35cd8..5adeeb88 100644 --- a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/Condition.java +++ b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/Condition.java @@ -108,16 +108,13 @@ public class Condition { } final View detailGroup = view.findViewById(R.id.detail_group); final ImageView expandIndicator = (ImageView) view.findViewById(R.id.expand_indicator); - View.OnClickListener expandListener = new View.OnClickListener() { - @Override - public void onClick(View v) { - if (detailGroup.getVisibility() == View.VISIBLE) { - expandIndicator.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.ic_expand_more, context.getTheme())); - detailGroup.setVisibility(View.GONE); - } else { - expandIndicator.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.ic_expand_less, context.getTheme())); - detailGroup.setVisibility(View.VISIBLE); - } + View.OnClickListener expandListener = v -> { + if (detailGroup.getVisibility() == View.VISIBLE) { + expandIndicator.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.ic_expand_more, context.getTheme())); + detailGroup.setVisibility(View.GONE); + } else { + expandIndicator.setImageDrawable(ResourcesCompat.getDrawable(context.getResources(), R.drawable.ic_expand_less, context.getTheme())); + detailGroup.setVisibility(View.VISIBLE); } }; view.findViewById(R.id.collapsed_group).setOnClickListener(expandListener); diff --git a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java index 6b405646..61f28ae5 100644 --- a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java +++ b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/SwitchBar.java @@ -85,12 +85,7 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC mSwitch.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO); } - addOnSwitchChangeListener(new OnSwitchChangeListener() { - @Override - public void onSwitchChanged(SwitchCompat switchView, boolean isChecked) { - setTextViewLabel(isChecked); - } - }); + addOnSwitchChangeListener((switchView, isChecked) -> setTextViewLabel(isChecked)); setOnClickListener(this); diff --git a/play-services-core/src/main/java/org/microg/gms/auth/AskPermissionActivity.java b/play-services-core/src/main/java/org/microg/gms/auth/AskPermissionActivity.java index ebc24dfa..e3317d71 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/AskPermissionActivity.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/AskPermissionActivity.java @@ -25,7 +25,6 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.graphics.Bitmap; import android.graphics.drawable.Drawable; -import android.os.Build; import android.os.Bundle; import android.text.Html; import android.util.Log; @@ -39,7 +38,6 @@ import android.widget.ListView; import android.widget.TextView; import com.mgoogle.android.gms.R; -import com.squareup.wire.Wire; import org.microg.gms.common.PackageUtils; import org.microg.gms.people.PeopleManager; @@ -119,18 +117,10 @@ public class AskPermissionActivity extends AccountAuthenticatorActivity { if (profileIcon != null) { ((ImageView) findViewById(R.id.account_photo)).setImageBitmap(profileIcon); } else { - new Thread(new Runnable() { - @Override - public void run() { - final Bitmap profileIcon = PeopleManager.getOwnerAvatarBitmap(AskPermissionActivity.this, account.name, true); - runOnUiThread(new Runnable() { - @Override - public void run() { - ((ImageView) findViewById(R.id.account_photo)).setImageBitmap(profileIcon); - } - }); + new Thread(() -> { + final Bitmap profileIcon1 = PeopleManager.getOwnerAvatarBitmap(AskPermissionActivity.this, account.name, true); + runOnUiThread(() -> ((ImageView) findViewById(R.id.account_photo)).setImageBitmap(profileIcon1)); - } }).start(); } @@ -140,18 +130,8 @@ public class AskPermissionActivity extends AccountAuthenticatorActivity { } else { ((TextView) findViewById(R.id.title)).setText(getString(R.string.ask_service_permission_title, appLabel)); } - findViewById(android.R.id.button1).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - onAllow(); - } - }); - findViewById(android.R.id.button2).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - onDeny(); - } - }); + findViewById(android.R.id.button1).setOnClickListener(v -> onAllow()); + findViewById(android.R.id.button2).setOnClickListener(v -> onDeny()); ((ListView) findViewById(R.id.permissions)).setAdapter(new PermissionAdapter()); } @@ -161,24 +141,21 @@ public class AskPermissionActivity extends AccountAuthenticatorActivity { findViewById(android.R.id.button2).setEnabled(false); findViewById(R.id.progress_bar).setVisibility(VISIBLE); findViewById(R.id.no_progress_bar).setVisibility(GONE); - new Thread(new Runnable() { - @Override - public void run() { - try { - AuthResponse response = authManager.requestAuth(fromAccountManager); - Bundle result = new Bundle(); - result.putString(KEY_AUTHTOKEN, response.auth); - result.putString(KEY_ACCOUNT_NAME, account.name); - result.putString(KEY_ACCOUNT_TYPE, account.type); - result.putString(KEY_ANDROID_PACKAGE_NAME, packageName); - result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true); - setAccountAuthenticatorResult(result); - } catch (IOException e) { - Log.w(TAG, e); - } - finish(); - + new Thread(() -> { + try { + AuthResponse response = authManager.requestAuth(fromAccountManager); + Bundle result = new Bundle(); + result.putString(KEY_AUTHTOKEN, response.auth); + result.putString(KEY_ACCOUNT_NAME, account.name); + result.putString(KEY_ACCOUNT_TYPE, account.type); + result.putString(KEY_ANDROID_PACKAGE_NAME, packageName); + result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, true); + setAccountAuthenticatorResult(result); + } catch (IOException e) { + Log.w(TAG, e); } + finish(); + }).start(); } diff --git a/play-services-core/src/main/java/org/microg/gms/auth/login/AssistantActivity.java b/play-services-core/src/main/java/org/microg/gms/auth/login/AssistantActivity.java index 21164946..a967e501 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/login/AssistantActivity.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/login/AssistantActivity.java @@ -23,7 +23,6 @@ import android.os.Bundle; import android.util.DisplayMetrics; import android.view.View; import android.widget.Button; -import android.widget.RelativeLayout; import android.widget.TextView; import androidx.annotation.StringRes; @@ -39,18 +38,8 @@ public abstract class AssistantActivity extends Activity { super.onCreate(savedInstanceState); setContentView(R.layout.login_assistant); formatTitle(); - findViewById(R.id.next_button).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - onNextButtonClicked(); - } - }); - findViewById(R.id.back_button).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - onBackButtonClicked(); - } - }); + findViewById(R.id.next_button).setOnClickListener(v -> onNextButtonClicked()); + findViewById(R.id.back_button).setOnClickListener(v -> onBackButtonClicked()); } @SuppressLint("WrongViewCast") diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java b/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java index 379bbf41..0a2d8b0e 100644 --- a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java +++ b/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java @@ -307,12 +307,7 @@ public class CastMediaRouteProvider extends MediaRouteProvider { private void publishRoutesInMainThread() { Handler mainHandler = new Handler(this.getContext().getMainLooper()); - mainHandler.post(new Runnable() { - @Override - public void run() { - publishRoutes(); - } - }); + mainHandler.post(this::publishRoutes); } private void publishRoutes() { diff --git a/play-services-core/src/main/java/org/microg/gms/common/HttpFormClient.java b/play-services-core/src/main/java/org/microg/gms/common/HttpFormClient.java index 5838258f..2ad23c70 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/HttpFormClient.java +++ b/play-services-core/src/main/java/org/microg/gms/common/HttpFormClient.java @@ -191,14 +191,11 @@ public class HttpFormClient { public static void requestAsync(final String url, final Request request, final Class tClass, final Callback callback) { - new Thread(new Runnable() { - @Override - public void run() { - try { - callback.onResponse(request(url, request, tClass)); - } catch (Exception e) { - callback.onException(e); - } + new Thread(() -> { + try { + callback.onResponse(request(url, request, tClass)); + } catch (Exception e) { + callback.onException(e); } }).start(); } diff --git a/play-services-core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java b/play-services-core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java index b562ee84..e14aea00 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java +++ b/play-services-core/src/main/java/org/microg/gms/common/RemoteListenerProxy.java @@ -117,15 +117,12 @@ public class RemoteListenerProxy implements ServiceConnect @Override public Object invoke(Object proxy, final Method method, final Object[] args) throws Throwable { if (method.getDeclaringClass().equals(tClass)) { - runOncePossible(new Runnable() { - @Override - public void run() { - try { - Object asInterface = Class.forName(tClass.getName() + "$Stub").getMethod("asInterface", IBinder.class).invoke(null, remote); - method.invoke(asInterface, args); - } catch (Exception e) { - Log.w(TAG, e); - } + runOncePossible(() -> { + try { + Object asInterface = Class.forName(tClass.getName() + "$Stub").getMethod("asInterface", IBinder.class).invoke(null, remote); + method.invoke(asInterface, args); + } catch (Exception e) { + Log.w(TAG, e); } }); connect(); diff --git a/play-services-core/src/main/java/org/microg/gms/gcm/UnregisterReceiver.java b/play-services-core/src/main/java/org/microg/gms/gcm/UnregisterReceiver.java index bba2e414..ebc3cf72 100644 --- a/play-services-core/src/main/java/org/microg/gms/gcm/UnregisterReceiver.java +++ b/play-services-core/src/main/java/org/microg/gms/gcm/UnregisterReceiver.java @@ -28,19 +28,16 @@ public class UnregisterReceiver extends BroadcastReceiver { Log.d(TAG, "Package removed or data cleared: " + packageName); final GcmDatabase.App app = database.getApp(packageName); if (app != null) { - new Thread(new Runnable() { - @Override - public void run() { - List registrations = database.getRegistrationsByApp(packageName); - boolean deletedAll = true; - for (GcmDatabase.Registration registration : registrations) { - deletedAll &= PushRegisterManager.unregister(context, registration.packageName, registration.signature, null, null).deleted != null; - } - if (deletedAll) { - database.removeApp(packageName); - } - database.close(); + new Thread(() -> { + List registrations = database.getRegistrationsByApp(packageName); + boolean deletedAll = true; + for (GcmDatabase.Registration registration : registrations) { + deletedAll &= PushRegisterManager.unregister(context, registration.packageName, registration.signature, null, null).deleted != null; } + if (deletedAll) { + database.removeApp(packageName); + } + database.close(); }).start(); } else { database.close(); diff --git a/play-services-core/src/main/java/org/microg/gms/people/PeopleServiceImpl.java b/play-services-core/src/main/java/org/microg/gms/people/PeopleServiceImpl.java index d68e23d2..dbccb1c8 100644 --- a/play-services-core/src/main/java/org/microg/gms/people/PeopleServiceImpl.java +++ b/play-services-core/src/main/java/org/microg/gms/people/PeopleServiceImpl.java @@ -16,11 +16,9 @@ package org.microg.gms.people; -import android.Manifest; import android.accounts.Account; import android.accounts.AccountManager; import android.content.Context; -import android.content.pm.PackageManager; import android.database.Cursor; import android.os.Bundle; import android.os.Parcel; @@ -118,23 +116,20 @@ public class PeopleServiceImpl extends IPeopleService.Stub { public ICancelToken loadOwnerAvatar(final IPeopleCallbacks callbacks, final String account, String pageId, int size, int flags) { Log.d(TAG, "loadOwnerAvatar: " + account + ", " + pageId + ", " + size + ", " + flags); PackageUtils.assertExtendedAccess(context); - final Thread thread = new Thread(new Runnable() { - @Override - public void run() { - Bundle extras = new Bundle(); - extras.putBoolean("rewindable", false); - extras.putInt("width", 0); - extras.putInt("height", 0); - File avaterFile = PeopleManager.getOwnerAvaterFile(context, account, true); - try { - ParcelFileDescriptor fileDescriptor = null; - if (avaterFile != null) { - fileDescriptor = ParcelFileDescriptor.open(avaterFile, ParcelFileDescriptor.MODE_READ_ONLY); - } - callbacks.onParcelFileDescriptor(0, extras, fileDescriptor, extras); - } catch (Exception e) { - Log.w(TAG, e); + final Thread thread = new Thread(() -> { + Bundle extras = new Bundle(); + extras.putBoolean("rewindable", false); + extras.putInt("width", 0); + extras.putInt("height", 0); + File avaterFile = PeopleManager.getOwnerAvaterFile(context, account, true); + try { + ParcelFileDescriptor fileDescriptor = null; + if (avaterFile != null) { + fileDescriptor = ParcelFileDescriptor.open(avaterFile, ParcelFileDescriptor.MODE_READ_ONLY); } + callbacks.onParcelFileDescriptor(0, extras, fileDescriptor, extras); + } catch (Exception e) { + Log.w(TAG, e); } }); thread.start(); diff --git a/play-services-core/src/main/java/org/microg/gms/ui/AskPushPermission.java b/play-services-core/src/main/java/org/microg/gms/ui/AskPushPermission.java index 8e5014bc..bd1d4f37 100755 --- a/play-services-core/src/main/java/org/microg/gms/ui/AskPushPermission.java +++ b/play-services-core/src/main/java/org/microg/gms/ui/AskPushPermission.java @@ -5,7 +5,6 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.os.Bundle; import android.text.Html; -import android.view.View; import android.widget.TextView; import androidx.fragment.app.FragmentActivity; @@ -58,30 +57,19 @@ public class AskPushPermission extends FragmentActivity { CharSequence label = pm.getApplicationLabel(info); ((TextView) findViewById(R.id.permission_message)).setText(Html.fromHtml("Allow " + label + " to register for push notifications?")); - findViewById(R.id.permission_allow_button).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (answered) return; - database.noteAppKnown(packageName, true); - answered = true; - new Thread(new Runnable() { - @Override - public void run() { - PushRegisterService.registerAndReply(AskPushPermission.this, database, intent, packageName, requestId); - } - }).start(); - finish(); - } + findViewById(R.id.permission_allow_button).setOnClickListener(v -> { + if (answered) return; + database.noteAppKnown(packageName, true); + answered = true; + new Thread(() -> PushRegisterService.registerAndReply(AskPushPermission.this, database, intent, packageName, requestId)).start(); + finish(); }); - findViewById(R.id.permission_deny_button).setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (answered) return; - database.noteAppKnown(packageName, false); - answered = true; - PushRegisterService.replyNotAvailable(AskPushPermission.this, intent, packageName, requestId); - finish(); - } + findViewById(R.id.permission_deny_button).setOnClickListener(v -> { + if (answered) return; + database.noteAppKnown(packageName, false); + answered = true; + PushRegisterService.replyNotAvailable(AskPushPermission.this, intent, packageName, requestId); + finish(); }); } catch (PackageManager.NameNotFoundException e) { finish(); diff --git a/play-services-core/src/main/java/org/microg/gms/ui/Conditions.java b/play-services-core/src/main/java/org/microg/gms/ui/Conditions.java index a1d54823..8f852e0c 100755 --- a/play-services-core/src/main/java/org/microg/gms/ui/Conditions.java +++ b/play-services-core/src/main/java/org/microg/gms/ui/Conditions.java @@ -55,14 +55,11 @@ public class Conditions { return !pm.isIgnoringBatteryOptimizations(context.getPackageName()); } }) - .firstAction(R.string.cond_gcm_bat_action, new View.OnClickListener() { - @Override - public void onClick(View v) { - if (SDK_INT < 23) return; - Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); - intent.setData(Uri.parse("package:" + v.getContext().getPackageName())); - v.getContext().startActivity(intent); - } + .firstAction(R.string.cond_gcm_bat_action, v -> { + if (SDK_INT < 23) return; + Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS); + intent.setData(Uri.parse("package:" + v.getContext().getPackageName())); + v.getContext().startActivity(intent); }).build(); } From 6370dcf9dd481e566f4b155b75e3c1c3dbb10f48 Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Mon, 31 Aug 2020 19:34:24 -0400 Subject: [PATCH 08/11] Super tiny code improvements --- .../gms/auth/api/credentials/Credential.java | 2 +- .../credentials/CredentialPickerConfig.java | 2 +- .../playlog/internal/PlayLoggerContext.java | 23 +++++++++---------- .../android/gms/common/data/DataHolder.java | 8 +++---- .../tools/ui/AbstractAboutFragment.java | 2 +- .../java/org/microg/gms/auth/AuthManager.java | 5 +--- .../loginservice/AccountAuthenticator.java | 4 +++- .../gms/cast/CastDeviceControllerImpl.java | 8 ++----- .../gms/cast/CastMediaRouteProvider.java | 1 - .../org/microg/gms/checkin/CheckinClient.java | 4 ++-- .../java/org/microg/gms/common/Build.java | 6 +++-- .../microg/gms/common/DeviceIdentifier.java | 12 ++++++---- .../microg/gms/provision/ProvisionService.kt | 2 +- 13 files changed, 38 insertions(+), 41 deletions(-) diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java index 4edaa335..7f8835cf 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/Credential.java @@ -140,7 +140,7 @@ public class Credential extends AutoSafeParcelable { @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || !(o instanceof Credential)) return false; + if (!(o instanceof Credential)) return false; Credential that = (Credential) o; diff --git a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java index d76cd287..184ad4bc 100644 --- a/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java +++ b/play-services-api/src/main/java/com/google/android/gms/auth/api/credentials/CredentialPickerConfig.java @@ -54,7 +54,7 @@ public class CredentialPickerConfig extends AutoSafeParcelable { return showCancelButton; } - public class Builder { + public static class Builder { private boolean showAddAccountButton; private boolean showCancelButton; private boolean forNewAccount; diff --git a/play-services-api/src/main/java/com/google/android/gms/playlog/internal/PlayLoggerContext.java b/play-services-api/src/main/java/com/google/android/gms/playlog/internal/PlayLoggerContext.java index 6cf82935..2c7fa4be 100644 --- a/play-services-api/src/main/java/com/google/android/gms/playlog/internal/PlayLoggerContext.java +++ b/play-services-api/src/main/java/com/google/android/gms/playlog/internal/PlayLoggerContext.java @@ -83,18 +83,17 @@ public class PlayLoggerContext extends AutoSafeParcelable { @Override public String toString() { - final StringBuilder sb = new StringBuilder("PlayLoggerContext[").append(versionCode); - sb.append(", package=").append(packageName); - sb.append(", packageVersionCode=").append(packageVersionCode); - sb.append(", logSource=").append(logSource); - sb.append(", uploadAccount=").append(uploadAccount); - sb.append(", loggingId=").append(loggingId); - sb.append(", logAndroidId=").append(logAndroidId); - sb.append(", logSourceName=").append(logSourceName); - sb.append(", isAnonymous=").append(isAnonymous); - sb.append(", qosTier=").append(qosTier); - sb.append(']'); - return sb.toString(); + return "PlayLoggerContext[" + versionCode + + ", package=" + packageName + + ", packageVersionCode=" + packageVersionCode + + ", logSource=" + logSource + + ", uploadAccount=" + uploadAccount + + ", loggingId=" + loggingId + + ", logAndroidId=" + logAndroidId + + ", logSourceName=" + logSourceName + + ", isAnonymous=" + isAnonymous + + ", qosTier=" + qosTier + + ']'; } public static Creator CREATOR = new AutoCreator<>(PlayLoggerContext.class); diff --git a/play-services-base-api/src/main/java/com/google/android/gms/common/data/DataHolder.java b/play-services-base-api/src/main/java/com/google/android/gms/common/data/DataHolder.java index 6ae43d22..2d9113d0 100644 --- a/play-services-base-api/src/main/java/com/google/android/gms/common/data/DataHolder.java +++ b/play-services-base-api/src/main/java/com/google/android/gms/common/data/DataHolder.java @@ -223,7 +223,7 @@ public class DataHolder extends AutoSafeParcelable implements Closeable { windows.add(current); if (!current.allocRow()) { windows.remove(current); - return windows.toArray(new CursorWindow[windows.size()]); + return windows.toArray(new CursorWindow[0]); } } for (int columnIndex = 0; columnIndex < builder.columns.length; columnIndex++) { @@ -256,7 +256,7 @@ public class DataHolder extends AutoSafeParcelable implements Closeable { } throw e; } - return windows.toArray(new CursorWindow[windows.size()]); + return windows.toArray(new CursorWindow[0]); } private static CursorWindow[] createCursorWindows(Cursor cursor) { @@ -272,7 +272,7 @@ public class DataHolder extends AutoSafeParcelable implements Closeable { windows.add(current); if (!current.allocRow()) { windows.remove(current); - return windows.toArray(new CursorWindow[windows.size()]); + return windows.toArray(new CursorWindow[0]); } } for (int i = 0; i < cursor.getColumnCount(); i++) { @@ -297,7 +297,7 @@ public class DataHolder extends AutoSafeParcelable implements Closeable { rowIndex++; } cursor.close(); - return windows.toArray(new CursorWindow[windows.size()]); + return windows.toArray(new CursorWindow[0]); } /** diff --git a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractAboutFragment.java b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractAboutFragment.java index 6795cc2d..bb065aca 100644 --- a/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractAboutFragment.java +++ b/play-services-core/microg-ui-tools/src/main/java/org/microg/tools/ui/AbstractAboutFragment.java @@ -105,7 +105,7 @@ public abstract class AbstractAboutFragment extends Fragment { List libraries = new ArrayList<>(); collectLibraries(libraries); Collections.sort(libraries); - ((ListView) aboutRoot.findViewById(android.R.id.list)).setAdapter(new LibraryAdapter(getContext(), libraries.toArray(new Library[libraries.size()]))); + ((ListView) aboutRoot.findViewById(android.R.id.list)).setAdapter(new LibraryAdapter(getContext(), libraries.toArray(new Library[0]))); return aboutRoot; } diff --git a/play-services-core/src/main/java/org/microg/gms/auth/AuthManager.java b/play-services-core/src/main/java/org/microg/gms/auth/AuthManager.java index 8c5348d9..bba07496 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/AuthManager.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/AuthManager.java @@ -118,10 +118,7 @@ public class AuthManager { } } String perm = getUserData(buildPermKey()); - if (!"1".equals(perm)) { - return false; - } - return true; + return "1".equals(perm); } public void setExpiry(long expiry) { diff --git a/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java b/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java index 9d476d2b..d0063a20 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java @@ -147,8 +147,10 @@ class AccountAuthenticator extends AbstractAccountAuthenticator { if (services != null) { List servicesList = Arrays.asList(services.split(",")); for (String feature : features) { - if (feature.startsWith("service_") && !servicesList.contains(feature.substring(8))) + if (feature.startsWith("service_") && !servicesList.contains(feature.substring(8))) { res = false; + break; + } } } else { res = false; diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java b/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java index 158ed447..62c00175 100644 --- a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java +++ b/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java @@ -119,8 +119,6 @@ public class CastDeviceControllerImpl extends ICastDeviceController.Stub impleme @Override public void spontaneousEventReceived(ChromeCastSpontaneousEvent event) { switch (event.getType()) { - case MEDIA_STATUS: - break; case STATUS: su.litvak.chromecast.api.v2.Status status = (su.litvak.chromecast.api.v2.Status)event.getData(); Application app = status.getRunningApp(); @@ -132,11 +130,11 @@ public class CastDeviceControllerImpl extends ICastDeviceController.Stub impleme int standbyState = status.standBy ? 1 : 0; this.onDeviceStatusChanged(new CastDeviceStatus(status.volume.level, status.volume.muted, activeInputState, metadata, standbyState)); break; - case APPEVENT: - break; case CLOSE: this.onApplicationDisconnected(CommonStatusCodes.SUCCESS); break; + case MEDIA_STATUS: + case APPEVENT: default: break; } @@ -165,7 +163,6 @@ public class CastDeviceControllerImpl extends ICastDeviceController.Stub impleme this.chromecast.disconnect(); } catch (IOException e) { Log.e(TAG, "Error disconnecting chromecast: " + e.getMessage()); - return; } } @@ -176,7 +173,6 @@ public class CastDeviceControllerImpl extends ICastDeviceController.Stub impleme } catch (IOException e) { Log.w(TAG, "Error sending cast message: " + e.getMessage()); this.onSendMessageFailure("", requestId, CommonStatusCodes.NETWORK_ERROR); - return; } } diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java b/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java index 0a2d8b0e..09d3b623 100644 --- a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java +++ b/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteProvider.java @@ -215,7 +215,6 @@ public class CastMediaRouteProvider extends MediaRouteProvider { onChromeCastDiscovered(id, name, host, port, deviceVersion, friendlyName, modelName, iconPath, status); } catch (NullPointerException ex) { Log.e(TAG, "Error getting cast details from DNS-SD response", ex); - return; } } }); diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java index 0a084d83..b11e6183 100755 --- a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java +++ b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java @@ -151,8 +151,8 @@ public class CheckinClient { } if (builder.accountCookie.isEmpty()) builder.accountCookie.add(""); if (deviceIdent.wifiMac != null) { - builder.macAddress(Arrays.asList(deviceIdent.wifiMac)) - .macAddressType(Arrays.asList("wifi")); + builder.macAddress(Collections.singletonList(deviceIdent.wifiMac)) + .macAddressType(Collections.singletonList("wifi")); } if (checkinInfo.securityToken != 0) { builder.securityToken(checkinInfo.securityToken) diff --git a/play-services-core/src/main/java/org/microg/gms/common/Build.java b/play-services-core/src/main/java/org/microg/gms/common/Build.java index 532a6845..423d90d5 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/Build.java +++ b/play-services-core/src/main/java/org/microg/gms/common/Build.java @@ -44,10 +44,12 @@ public class Build { } private String generateSerialNumber() { - String serial = "008741"; + String serial; Random rand = new Random(); + StringBuilder serialBuilder = new StringBuilder("008741"); for (int i = 0; i < 10; i++) - serial += Integer.toString(rand.nextInt(16), 16); + serialBuilder.append(Integer.toString(rand.nextInt(16), 16)); + serial = serialBuilder.toString(); serial = serial.toUpperCase(Locale.US); return serial; } diff --git a/play-services-core/src/main/java/org/microg/gms/common/DeviceIdentifier.java b/play-services-core/src/main/java/org/microg/gms/common/DeviceIdentifier.java index bc718020..ab5d22cb 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/DeviceIdentifier.java +++ b/play-services-core/src/main/java/org/microg/gms/common/DeviceIdentifier.java @@ -25,22 +25,24 @@ public class DeviceIdentifier { private static String randomMacAddress() { - String mac = "b407f9"; + StringBuilder mac = new StringBuilder("b407f9"); Random rand = new Random(); for (int i = 0; i < 6; i++) { - mac += Integer.toString(rand.nextInt(16), 16); + mac.append(Integer.toString(rand.nextInt(16), 16)); } - return mac; + return mac.toString(); } private static String randomMeid() { // http://en.wikipedia.org/wiki/International_Mobile_Equipment_Identity // We start with a known base, and generate random MEID - String meid = "35503104"; + String meid; Random rand = new Random(); + StringBuilder meidBuilder = new StringBuilder("35503104"); for (int i = 0; i < 6; i++) { - meid += Integer.toString(rand.nextInt(10)); + meidBuilder.append(rand.nextInt(10)); } + meid = meidBuilder.toString(); // Luhn algorithm (check digit) int sum = 0; diff --git a/play-services-core/src/main/kotlin/org/microg/gms/provision/ProvisionService.kt b/play-services-core/src/main/kotlin/org/microg/gms/provision/ProvisionService.kt index 4fff1603..e454bde3 100755 --- a/play-services-core/src/main/kotlin/org/microg/gms/provision/ProvisionService.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/provision/ProvisionService.kt @@ -24,7 +24,7 @@ class ProvisionService : LifecycleService() { super.onStartCommand(intent, flags, startId) lifecycleScope.launchWhenStarted { intent?.extras?.let { - val s = it.keySet().map { key -> "$key = ${it[key]}" }.joinToString(", ") + val s = it.keySet().joinToString(", ") { key -> "$key = ${it[key]}" } Log.d(TAG, "Provisioning: $s") } From 2231c9d1feb6e344a3842b428f23263dc9b85e7b Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Mon, 31 Aug 2020 19:37:29 -0400 Subject: [PATCH 09/11] Delete unused imports --- .../google/android/gms/cast/CastDevice.java | 1 - .../gms/cast/framework/CastOptions.java | 1 - .../framework/internal/CastContextImpl.java | 1 - .../internal/CastDynamiteModuleImpl.java | 2 -- .../internal/MediaRouterCallbackImpl.java | 3 --- .../internal/SessionManagerImpl.java | 1 - .../media/CastMediaRouteProviderService.java | 2 -- .../microg/gms/auth/login/LoginActivity.java | 2 -- .../loginservice/AccountAuthenticator.java | 2 -- .../gms/cast/CastDeviceControllerImpl.java | 8 ------- .../gms/cast/CastDeviceControllerService.java | 12 ---------- .../gms/cast/CastMediaRouteController.java | 23 ------------------- .../org/microg/gms/checkin/CheckinClient.java | 4 ---- .../microg/gms/checkin/CheckinManager.java | 1 - .../microg/gms/checkin/CheckinService.java | 1 - .../microg/gms/checkin/TriggerReceiver.java | 1 - .../gms/common/ForegroundServiceContext.java | 1 - .../microg/gms/common/MultiListenerProxy.java | 1 - .../java/org/microg/gms/common/Utils.java | 2 +- .../org/microg/gms/gcm/McsInputStream.java | 1 - .../java/org/microg/gms/gcm/McsService.java | 1 - .../measurement/MeasurementBrokerService.java | 8 +++---- .../org/microg/gms/people/DatabaseHelper.java | 2 -- .../org/microg/gms/people/PeopleManager.java | 3 --- .../java/org/microg/gms/ui/AboutFragment.java | 2 -- .../gms/ui/AccountSettingsActivity.java | 1 - .../java/org/microg/gms/ui/Conditions.java | 13 ----------- .../org/microg/gms/ui/SettingsFragment.java | 1 - .../microg/tools/AccountPickerActivity.java | 1 - .../main/kotlin/org/microg/gms/ui/Utils.kt | 1 - 30 files changed, 4 insertions(+), 99 deletions(-) diff --git a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java b/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java index 21a41fae..b340325b 100644 --- a/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java +++ b/play-services-cast-api/src/main/java/com/google/android/gms/cast/CastDevice.java @@ -27,7 +27,6 @@ import org.microg.safeparcel.AutoSafeParcelable; import org.microg.safeparcel.SafeParceled; import java.net.InetAddress; -import java.net.Inet4Address; import java.util.ArrayList; import java.util.List; diff --git a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastOptions.java b/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastOptions.java index 3ba41b78..b29d8c0d 100644 --- a/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastOptions.java +++ b/play-services-cast-framework-api/src/main/java/com/google/android/gms/cast/framework/CastOptions.java @@ -23,7 +23,6 @@ import com.google.android.gms.cast.framework.media.CastMediaOptions; import com.google.android.gms.cast.LaunchOptions; import java.util.ArrayList; -import java.util.List; public class CastOptions extends AutoSafeParcelable { @SafeParceled(1) diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastContextImpl.java b/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastContextImpl.java index be1c5935..96d805e4 100644 --- a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastContextImpl.java +++ b/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastContextImpl.java @@ -30,7 +30,6 @@ import com.google.android.gms.cast.framework.CastOptions; import com.google.android.gms.cast.framework.IAppVisibilityListener; import com.google.android.gms.cast.framework.ICastContext; import com.google.android.gms.cast.framework.IDiscoveryManager; -import com.google.android.gms.cast.framework.ISessionManager; import com.google.android.gms.cast.framework.ISessionProvider; import com.google.android.gms.dynamic.IObjectWrapper; import com.google.android.gms.dynamic.ObjectWrapper; diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastDynamiteModuleImpl.java b/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastDynamiteModuleImpl.java index e7dcf488..03615bbe 100644 --- a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastDynamiteModuleImpl.java +++ b/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/CastDynamiteModuleImpl.java @@ -16,7 +16,6 @@ package com.google.android.gms.cast.framework.internal; -import android.content.Context; import android.os.RemoteException; import android.util.Log; @@ -30,7 +29,6 @@ import com.google.android.gms.cast.framework.ISessionProxy; import com.google.android.gms.cast.framework.media.CastMediaOptions; import com.google.android.gms.cast.framework.internal.CastContextImpl; import com.google.android.gms.cast.framework.internal.CastSessionImpl; -import com.google.android.gms.cast.framework.internal.MediaRouterCallbackImpl; import com.google.android.gms.cast.framework.internal.SessionImpl; import com.google.android.gms.cast.framework.media.IMediaNotificationService; import com.google.android.gms.cast.framework.media.internal.IFetchBitmapTask; diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/MediaRouterCallbackImpl.java b/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/MediaRouterCallbackImpl.java index 9be564a5..9f65d8ba 100644 --- a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/MediaRouterCallbackImpl.java +++ b/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/MediaRouterCallbackImpl.java @@ -16,14 +16,11 @@ package com.google.android.gms.cast.framework.internal; -import android.content.Intent; import android.os.Bundle; import android.os.RemoteException; import android.util.Log; import com.google.android.gms.cast.CastDevice; -import com.google.android.gms.cast.framework.ISession; -import com.google.android.gms.dynamic.IObjectWrapper; import com.google.android.gms.dynamic.ObjectWrapper; public class MediaRouterCallbackImpl extends IMediaRouterCallback.Stub { diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java b/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java index dfb73e7f..918968fe 100644 --- a/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java +++ b/play-services-core/src/main/java/com/google/android/gms/cast/framework/internal/SessionManagerImpl.java @@ -22,7 +22,6 @@ import android.util.Log; import com.google.android.gms.cast.framework.CastState; import com.google.android.gms.cast.framework.ICastStateListener; -import com.google.android.gms.cast.framework.ISession; import com.google.android.gms.cast.framework.ISessionManager; import com.google.android.gms.cast.framework.ISessionManagerListener; import com.google.android.gms.cast.framework.internal.CastContextImpl; diff --git a/play-services-core/src/main/java/com/google/android/gms/cast/media/CastMediaRouteProviderService.java b/play-services-core/src/main/java/com/google/android/gms/cast/media/CastMediaRouteProviderService.java index aa91eff4..e2502eea 100644 --- a/play-services-core/src/main/java/com/google/android/gms/cast/media/CastMediaRouteProviderService.java +++ b/play-services-core/src/main/java/com/google/android/gms/cast/media/CastMediaRouteProviderService.java @@ -18,8 +18,6 @@ package com.google.android.gms.cast.media; import org.microg.gms.cast.CastMediaRouteProvider; -import android.util.Log; - import androidx.mediarouter.media.MediaRouteProvider; import androidx.mediarouter.media.MediaRouteProviderService; diff --git a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java index ae5e96d5..9b9829a9 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/login/LoginActivity.java @@ -21,7 +21,6 @@ import android.accounts.AccountManager; import android.annotation.SuppressLint; import android.annotation.TargetApi; import android.content.Context; -import android.graphics.Bitmap; import android.graphics.Color; import android.net.ConnectivityManager; import android.net.NetworkInfo; @@ -36,7 +35,6 @@ import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.webkit.CookieManager; import android.webkit.JavascriptInterface; -import android.webkit.ValueCallback; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; diff --git a/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java b/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java index d0063a20..069379c8 100644 --- a/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java +++ b/play-services-core/src/main/java/org/microg/gms/auth/loginservice/AccountAuthenticator.java @@ -27,8 +27,6 @@ import android.os.Bundle; import android.util.Base64; import android.util.Log; -import com.mgoogle.android.gms.R; - import org.microg.gms.auth.AskPermissionActivity; import org.microg.gms.auth.AuthConstants; import org.microg.gms.auth.AuthManager; diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java b/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java index 62c00175..8dffb214 100644 --- a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java +++ b/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerImpl.java @@ -18,14 +18,10 @@ package org.microg.gms.cast; import java.io.IOException; import java.util.ArrayList; -import java.util.Collections; import android.content.Context; -import android.net.Uri; import android.os.Bundle; -import android.os.Parcel; import android.os.RemoteException; -import android.util.Base64; import android.util.Log; import com.google.android.gms.cast.ApplicationMetadata; @@ -37,10 +33,7 @@ import com.google.android.gms.cast.LaunchOptions; import com.google.android.gms.cast.internal.ICastDeviceController; import com.google.android.gms.cast.internal.ICastDeviceControllerListener; import com.google.android.gms.common.api.CommonStatusCodes; -import com.google.android.gms.common.api.Status; -import com.google.android.gms.common.images.WebImage; import com.google.android.gms.common.internal.BinderWrapper; -import com.google.android.gms.common.internal.GetServiceRequest; import su.litvak.chromecast.api.v2.Application; import su.litvak.chromecast.api.v2.ChromeCast; @@ -51,7 +44,6 @@ import su.litvak.chromecast.api.v2.ChromeCastRawMessageListener; import su.litvak.chromecast.api.v2.ChromeCastConnectionEvent; import su.litvak.chromecast.api.v2.ChromeCastSpontaneousEvent; import su.litvak.chromecast.api.v2.ChromeCastRawMessage; -import su.litvak.chromecast.api.v2.AppEvent; public class CastDeviceControllerImpl extends ICastDeviceController.Stub implements ChromeCastConnectionEventListener, diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerService.java b/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerService.java index d494a012..68d61775 100644 --- a/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerService.java +++ b/play-services-core/src/main/java/org/microg/gms/cast/CastDeviceControllerService.java @@ -16,26 +16,14 @@ package org.microg.gms.cast; -import android.os.IBinder; import android.os.RemoteException; -import android.os.Parcel; -import android.util.ArrayMap; -import android.util.Log; -import com.google.android.gms.cast.CastDevice; -import com.google.android.gms.cast.internal.ICastDeviceControllerListener; import com.google.android.gms.common.internal.GetServiceRequest; -import com.google.android.gms.common.internal.BinderWrapper; import com.google.android.gms.common.internal.IGmsCallbacks; import org.microg.gms.BaseService; import org.microg.gms.common.GmsService; -import su.litvak.chromecast.api.v2.ChromeCast; -import su.litvak.chromecast.api.v2.ChromeCasts; -import su.litvak.chromecast.api.v2.Status; -import su.litvak.chromecast.api.v2.ChromeCastsListener; - public class CastDeviceControllerService extends BaseService { private static final String TAG = CastDeviceControllerService.class.getSimpleName(); diff --git a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteController.java b/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteController.java index f8ca7a1a..6f2bdda6 100644 --- a/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteController.java +++ b/play-services-core/src/main/java/org/microg/gms/cast/CastMediaRouteController.java @@ -16,36 +16,13 @@ package org.microg.gms.cast; -import android.content.Context; import android.content.Intent; -import android.content.IntentFilter; -import android.net.Uri; -import android.os.Bundle; -import android.os.AsyncTask; -import android.os.Handler; import android.util.Log; import androidx.mediarouter.media.MediaRouteProvider; import androidx.mediarouter.media.MediaRouter; -import com.google.android.gms.common.images.WebImage; -import com.google.android.gms.cast.CastDevice; - -import java.net.InetAddress; -import java.net.InetSocketAddress; -import java.net.Inet4Address; -import java.net.UnknownHostException; -import java.io.IOException; -import java.lang.Thread; -import java.lang.Runnable; -import java.util.ArrayList; -import java.util.Map; -import java.util.HashMap; - import su.litvak.chromecast.api.v2.ChromeCast; -import su.litvak.chromecast.api.v2.ChromeCasts; -import su.litvak.chromecast.api.v2.Status; -import su.litvak.chromecast.api.v2.ChromeCastsListener; public class CastMediaRouteController extends MediaRouteProvider.RouteController { private static final String TAG = CastMediaRouteController.class.getSimpleName(); diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java index b11e6183..aff6da93 100755 --- a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java +++ b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinClient.java @@ -18,22 +18,18 @@ package org.microg.gms.checkin; import android.util.Log; -import com.squareup.wire.Wire; - import org.microg.gms.common.Build; import org.microg.gms.common.DeviceConfiguration; import org.microg.gms.common.DeviceIdentifier; import org.microg.gms.common.PhoneInfo; import org.microg.gms.common.Utils; -import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.Date; import java.util.List; diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java index 9249d4f1..df9bd9d9 100755 --- a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java +++ b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinManager.java @@ -20,7 +20,6 @@ import android.accounts.Account; import android.accounts.AccountManager; import android.content.ContentResolver; import android.content.Context; -import android.preference.PreferenceManager; import org.microg.gms.auth.AuthConstants; import org.microg.gms.auth.AuthRequest; diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinService.java b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinService.java index 1f775a93..beb7f56b 100755 --- a/play-services-core/src/main/java/org/microg/gms/checkin/CheckinService.java +++ b/play-services-core/src/main/java/org/microg/gms/checkin/CheckinService.java @@ -22,7 +22,6 @@ import android.app.IntentService; import android.content.Intent; import android.os.IBinder; import android.os.RemoteException; -import android.preference.PreferenceManager; import android.util.Log; import androidx.legacy.content.WakefulBroadcastReceiver; diff --git a/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java b/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java index 123d76d3..b531928b 100755 --- a/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java +++ b/play-services-core/src/main/java/org/microg/gms/checkin/TriggerReceiver.java @@ -20,7 +20,6 @@ import android.content.Context; import android.content.Intent; import android.net.ConnectivityManager; import android.net.NetworkInfo; -import android.preference.PreferenceManager; import android.util.Log; import androidx.legacy.content.WakefulBroadcastReceiver; diff --git a/play-services-core/src/main/java/org/microg/gms/common/ForegroundServiceContext.java b/play-services-core/src/main/java/org/microg/gms/common/ForegroundServiceContext.java index bb97cc2e..58655cef 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/ForegroundServiceContext.java +++ b/play-services-core/src/main/java/org/microg/gms/common/ForegroundServiceContext.java @@ -10,7 +10,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.ContextWrapper; import android.content.Intent; -import android.content.res.Resources; import android.os.Build; import android.os.PowerManager; import android.provider.Settings; diff --git a/play-services-core/src/main/java/org/microg/gms/common/MultiListenerProxy.java b/play-services-core/src/main/java/org/microg/gms/common/MultiListenerProxy.java index 48011224..958b9cd5 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/MultiListenerProxy.java +++ b/play-services-core/src/main/java/org/microg/gms/common/MultiListenerProxy.java @@ -22,7 +22,6 @@ import android.util.Log; import androidx.annotation.NonNull; import java.lang.reflect.InvocationHandler; -import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.Collection; diff --git a/play-services-core/src/main/java/org/microg/gms/common/Utils.java b/play-services-core/src/main/java/org/microg/gms/common/Utils.java index bd6b891c..e13700a5 100644 --- a/play-services-core/src/main/java/org/microg/gms/common/Utils.java +++ b/play-services-core/src/main/java/org/microg/gms/common/Utils.java @@ -18,7 +18,7 @@ package org.microg.gms.common; import android.content.Context; import android.util.Log; -import android.widget.Toast; + import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; diff --git a/play-services-core/src/main/java/org/microg/gms/gcm/McsInputStream.java b/play-services-core/src/main/java/org/microg/gms/gcm/McsInputStream.java index c1913ba3..75374e50 100644 --- a/play-services-core/src/main/java/org/microg/gms/gcm/McsInputStream.java +++ b/play-services-core/src/main/java/org/microg/gms/gcm/McsInputStream.java @@ -20,7 +20,6 @@ import android.os.Handler; import android.util.Log; import com.squareup.wire.Message; -import com.squareup.wire.Wire; import org.microg.gms.gcm.mcs.Close; import org.microg.gms.gcm.mcs.DataMessageStanza; diff --git a/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java b/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java index 1dd26a95..9a459d00 100644 --- a/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java +++ b/play-services-core/src/main/java/org/microg/gms/gcm/McsService.java @@ -72,7 +72,6 @@ import okio.ByteString; import static android.app.AlarmManager.ELAPSED_REALTIME_WAKEUP; import static android.os.Build.VERSION.SDK_INT; -import static org.microg.gms.common.ForegroundServiceContext.EXTRA_FOREGROUND; import static org.microg.gms.gcm.GcmConstants.ACTION_C2DM_RECEIVE; import static org.microg.gms.gcm.GcmConstants.EXTRA_APP; import static org.microg.gms.gcm.GcmConstants.EXTRA_COLLAPSE_KEY; diff --git a/play-services-core/src/main/java/org/microg/gms/measurement/MeasurementBrokerService.java b/play-services-core/src/main/java/org/microg/gms/measurement/MeasurementBrokerService.java index 49dcda79..04495420 100644 --- a/play-services-core/src/main/java/org/microg/gms/measurement/MeasurementBrokerService.java +++ b/play-services-core/src/main/java/org/microg/gms/measurement/MeasurementBrokerService.java @@ -16,12 +16,10 @@ package org.microg.gms.measurement; -import android.os.RemoteException; -import android.util.Log; +import android.os.RemoteException; -import com.google.android.gms.common.api.CommonStatusCodes; -import com.google.android.gms.common.api.Status; -import com.google.android.gms.common.internal.GetServiceRequest; +import com.google.android.gms.common.api.CommonStatusCodes; +import com.google.android.gms.common.internal.GetServiceRequest; import com.google.android.gms.common.internal.IGmsCallbacks; import org.microg.gms.BaseService; diff --git a/play-services-core/src/main/java/org/microg/gms/people/DatabaseHelper.java b/play-services-core/src/main/java/org/microg/gms/people/DatabaseHelper.java index 29527e38..a15d4cca 100644 --- a/play-services-core/src/main/java/org/microg/gms/people/DatabaseHelper.java +++ b/play-services-core/src/main/java/org/microg/gms/people/DatabaseHelper.java @@ -22,8 +22,6 @@ import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; -import java.util.Set; - public class DatabaseHelper extends SQLiteOpenHelper { private static final int DB_VERSION = 5; private static final String DB_NAME = "pluscontacts.db"; diff --git a/play-services-core/src/main/java/org/microg/gms/people/PeopleManager.java b/play-services-core/src/main/java/org/microg/gms/people/PeopleManager.java index 1450fba3..c7ed2c0e 100644 --- a/play-services-core/src/main/java/org/microg/gms/people/PeopleManager.java +++ b/play-services-core/src/main/java/org/microg/gms/people/PeopleManager.java @@ -17,7 +17,6 @@ package org.microg.gms.people; import android.accounts.Account; -import android.accounts.AccountManager; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; @@ -25,10 +24,8 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.util.Log; -import org.json.JSONException; import org.json.JSONObject; import org.microg.gms.auth.AuthManager; -import org.microg.gms.auth.AuthRequest; import org.microg.gms.auth.AuthResponse; import org.microg.gms.common.Constants; import org.microg.gms.common.Utils; diff --git a/play-services-core/src/main/java/org/microg/gms/ui/AboutFragment.java b/play-services-core/src/main/java/org/microg/gms/ui/AboutFragment.java index 9623e7ac..a4100de7 100755 --- a/play-services-core/src/main/java/org/microg/gms/ui/AboutFragment.java +++ b/play-services-core/src/main/java/org/microg/gms/ui/AboutFragment.java @@ -18,8 +18,6 @@ package org.microg.gms.ui; import androidx.fragment.app.Fragment; -import com.mgoogle.android.gms.BuildConfig; - import org.microg.tools.ui.AbstractAboutFragment; import org.microg.tools.ui.AbstractSettingsActivity; diff --git a/play-services-core/src/main/java/org/microg/gms/ui/AccountSettingsActivity.java b/play-services-core/src/main/java/org/microg/gms/ui/AccountSettingsActivity.java index 6408e6c7..0804d384 100755 --- a/play-services-core/src/main/java/org/microg/gms/ui/AccountSettingsActivity.java +++ b/play-services-core/src/main/java/org/microg/gms/ui/AccountSettingsActivity.java @@ -28,7 +28,6 @@ import androidx.preference.Preference; import com.mgoogle.android.gms.R; import org.microg.gms.auth.AuthConstants; -import org.microg.gms.auth.AuthManager; import org.microg.tools.ui.AbstractSettingsActivity; import org.microg.tools.ui.ResourceSettingsFragment; diff --git a/play-services-core/src/main/java/org/microg/gms/ui/Conditions.java b/play-services-core/src/main/java/org/microg/gms/ui/Conditions.java index 8f852e0c..fa47e1be 100755 --- a/play-services-core/src/main/java/org/microg/gms/ui/Conditions.java +++ b/play-services-core/src/main/java/org/microg/gms/ui/Conditions.java @@ -16,30 +16,17 @@ package org.microg.gms.ui; -import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; -import android.os.Build; import android.os.PowerManager; import android.provider.Settings; -import android.view.View; - -import androidx.core.app.ActivityCompat; -import androidx.core.content.ContextCompat; import com.mgoogle.android.gms.R; import org.microg.gms.gcm.GcmPrefs; import org.microg.tools.ui.Condition; -import static android.Manifest.permission.ACCESS_COARSE_LOCATION; -import static android.Manifest.permission.ACCESS_FINE_LOCATION; -import static android.Manifest.permission.GET_ACCOUNTS; -import static android.Manifest.permission.READ_EXTERNAL_STORAGE; -import static android.Manifest.permission.READ_PHONE_STATE; -import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; -import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.os.Build.VERSION.SDK_INT; public class Conditions { diff --git a/play-services-core/src/main/java/org/microg/gms/ui/SettingsFragment.java b/play-services-core/src/main/java/org/microg/gms/ui/SettingsFragment.java index e8bcd0ee..6c9a0a33 100755 --- a/play-services-core/src/main/java/org/microg/gms/ui/SettingsFragment.java +++ b/play-services-core/src/main/java/org/microg/gms/ui/SettingsFragment.java @@ -3,7 +3,6 @@ package org.microg.gms.ui; import android.os.Bundle; import androidx.annotation.Nullable; -import androidx.navigation.NavOptions; import androidx.navigation.fragment.NavHostFragment; import com.mgoogle.android.gms.R; diff --git a/play-services-core/src/main/java/org/microg/tools/AccountPickerActivity.java b/play-services-core/src/main/java/org/microg/tools/AccountPickerActivity.java index 09fa611a..4c596f32 100755 --- a/play-services-core/src/main/java/org/microg/tools/AccountPickerActivity.java +++ b/play-services-core/src/main/java/org/microg/tools/AccountPickerActivity.java @@ -20,7 +20,6 @@ import android.app.Activity; import android.content.ComponentName; import android.content.Intent; import android.os.Bundle; -import android.util.Log; /** * This is just an activity that forwards to the systems native account picker diff --git a/play-services-core/src/main/kotlin/org/microg/gms/ui/Utils.kt b/play-services-core/src/main/kotlin/org/microg/gms/ui/Utils.kt index 0d3c421b..69d526d7 100644 --- a/play-services-core/src/main/kotlin/org/microg/gms/ui/Utils.kt +++ b/play-services-core/src/main/kotlin/org/microg/gms/ui/Utils.kt @@ -8,7 +8,6 @@ package org.microg.gms.ui import android.content.Context import android.content.pm.ApplicationInfo import android.content.pm.PackageManager -import android.os.Build import android.os.Bundle import android.provider.Settings import android.util.Log From 33633e05112748b7305be18c60ab9245402cc205 Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Mon, 31 Aug 2020 19:54:12 -0400 Subject: [PATCH 10/11] Optimize images, update vector icons --- .../main/res/drawable-hdpi/ic_generic_man.png | Bin 2375 -> 1902 bytes .../main/res/drawable-mdpi/ic_generic_man.png | Bin 1657 -> 1351 bytes .../res/drawable-xhdpi/ic_generic_man.png | Bin 3149 -> 2439 bytes ...proprietary_auth_ic_scope_icon_default.png | Bin 1228 -> 1204 bytes .../res/drawable-xxhdpi/ic_generic_man.png | Bin 3607 -> 2373 bytes .../src/main/res/drawable/dots_horizontal.xml | 7 +------ .../src/main/res/drawable/ic_add_account.xml | 9 ++------- .../src/main/res/drawable/ic_device_login.xml | 7 ++----- .../src/main/res/drawable/ic_expand_apps.xml | 19 +++++------------- .../src/main/res/drawable/ic_info_outline.xml | 16 ++++----------- .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 5021 -> 4734 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 6965 -> 6442 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 11869 -> 10331 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 16582 -> 14817 bytes 14 files changed, 14 insertions(+), 44 deletions(-) diff --git a/play-services-core/src/main/res/drawable-hdpi/ic_generic_man.png b/play-services-core/src/main/res/drawable-hdpi/ic_generic_man.png index b6b3129f54ec5b786af15f74aaeb0170f3219dd0..e1e346239ba2cbffd6cf108752e7165a35084fcb 100644 GIT binary patch literal 1902 zcmeHH`9IVN0R2uF$C7K%GR8Eru5oW-*q97v2$NAnt^1~gWL;s5+hB5(YX@bKBkO1v zQyEMK8AqgqW``WPubf%?2kd{)`+VMepZDwgyw6L)Tbm0BNDBY}AcVtWY)>5fANjaW z)J@0aE&!a8!(X;DJ&Bv&@x6inX`mK$M(SiDO`*2d1ONb?;^O83^YZZv2nq>{h>Alb zB&E(s%Rpsea`3YVd4-=8Rgr4ynp)>|FX-u`elbR0GQ;95EH7K*33gZQ9UPr*+;nzv zb#wRd^!D-f^A89N3JwVkyB84^6B|cLOioEBXJ%7!^70Fdic8AMA3v$6tg5c5t$)_= zXJgCrzgydBFFNR*-Hg{g%wE>u@W|-cyYUYblb_g}nc2Ddg~cyR%PVW^8=G6(J70JA z_74t^zEPt3hXH`w0*67{Idm@Pe{s5M3SqDebP7AWyRb~L>>PDzH_1HDYiAU4J$hIKYYn?W(Gwz2-2?YbK) zem63XZ2$EH9c}lYv-bxyBgT{fN3JVGDw(A_?Pv%iK;XWCL2YFuZy^^pmQhAfh7ND! zgXfWA)MrMyCXO)#5UIcG*ZxmgdG(&Sct#*6M=&cnkYr{?y7&fyLBWg{X$cHzF9C#d z01?MalYu9PE?M;n3A`&77R9jVDNRJ3@Z=If%9dW4hbg#?s4cHHjbmD&<%I2K_6RVQ zAMFmj@hMn#c(gXwz1u^xr#{{qT)Pnmrvz#;lUnjh;p}K8budzvxPs%FbR+tA8Bovy z+wL9IJ}YMTwMr;oyE(n1V1|=qrg8HlXM~yT+A=sLSf2-4QO-GFww4ZcD#J#61G&M%BM<0dcBZrC0>XIY?-qT?d_vDL z)`pEIyg$q5gVeWt9p_JB)xa0f5yR^f1=`}ggOz%ixm^dwGakr`G6h*9-QJuJBwk0cqOkdicXM_k8xHfU_6F~(kU5K7-G1Cy0$sRn^b$MN-ts&Vce{9P zV|@vdUYQA3k==6Vb5>n7hGy%%Bb?iS6hE)VjrN*X74Mr*+@Dyx#3 zJ94AQ$BR|!(;xujV_>fOn@#2IIbn|;z=!XAkq`%n#n9r1g!Fae!@6UT XT9Vrg{&0+O@`?b?)EZNF$tC_@ynTd# literal 2375 zcmZWrdpy$%8~@pCE}1NrtPvU_v|-DZLt|`9xlV_aW_B@`ESDtFL?RtFH6fA|hJ;0R z9NH10RCeSN$t9;wZYkI9?|R?&pZD{Ap3n1qKi}{3d_UiRpG+?g3QQfT4gdg*MkV_w zkovP#p^E7@C#5JrnM>M70)YCQbzg%a3a%96LvaRbpQ7F=h+zoTXCDBZFa-cX8UTD& zNP>R=APxfn(+mJ0<^zB(zvy>w2gL%)bf=JkA3y7AOT`6+qQ<8N#3=CJnSfh&xFZ0l z>e9$0`tjkp%ZZhAKb_7~T+aM5fqkRJ(kjtQf>0B$2rMlVzXbNj!=Wc z5n_oBEjMK&eaX-w(f=BQx_>`C>=AB{n?>Aw@pu2kQR%az&+NG+wzd|Fe_~dz5V-Ff z?@I@U!*8|VZ_C{_NB(!DgGtpyYw@1tN8WO$a~;gSzax+&O=pmy%2K}P4z>Ekn1LiQ zM|*&O8kGtY%nwBpu4-=sk_0w&h#}?$u5c&Xl{)&jYP41=t`dZS+9T`@>_PUxrcl*s z=pNYt2CfdYrr{r!5svhR8Fd*y#Fwe_w_)`2l~KiYKhzh%3#J&|HMuFNB0yzD_^&>Xm7b8eMWAuXZp3@r+ zfH;6>;Op+^Qzz4EDxMfHJQnsipA@{s&cT2ypp8l{d+#UQFCXn9r&`W+ zZ~pTvcpY5jplMN+G(BAvGM+f@-0mqsNgB7|NSe`Zz?S^?4e(ZZZ}I?$3*Ig@Hb;;) z62kU>QQ873E2Mf9UGJ9#$Zq8we1&G;SRrnI!h;j?zdw>q$f|d%Or(v&qE0i*{gmca zOq()_>}eHB>o13s_P!!7a0X*5ElxTt5PHXi{SB@d`KFoJad&aw!=69vx<23y?4~XT z?$u1I_fpCfouDnsuh}_L8@VWc=Dj?gMlL99j}cHe(0$2E+DUIF%;vY57%no}$Fl+^cvB2D=0Js> z)0NuVIx(@Yd*VI+I##HRtFE`;`cURxr!GC25?t`T-KSA`Fhq2o&D`f{Tlb5wQhdD_ z54RZPqepW$wIY=p=8?T&&}s7F@$vkxaYi?xjbSwJ9T(4|>VBO)aEMw)0y~sM;h%f2 zE+-6e1;Z2jbGU(-4bNP7c2}oHc-p}#w}KvjvO_*U6EQodJ_M@C>OQRdS7`6y*5W2$ zbBfbR)^fp_*b(-+I@Ak9TpaR6Oq4OGP24;mT?2eKI_QGGXsGI|?=I-Z&GVKmD_AGl zt&8ZT%Rz9ygzj_N4fI%u3DUooyaTjf>04;F>EA;A!3P3&D}o)jQMn6|)j@7p3lp{$ zh-FNMLn(1)l`|gX;G;olqSzi*hfAbmNEN-S-m<&%)U4-+yo?w+F_%M8w#eybg z{Xc;gVx-;%9j&>7H1xvkyCmyi^`@dF*Bi9qYC;_7F!-S!DLPLuBW(ZV$+|nj`#k96 z7n5#eV)J0HQ^Iu+OJf5V(!s=jh`8LDS+y||VvzH#+*||}?Hnq>xK6e}d{c`w8BMO) zlWHy=1|dN-(XkQANF@*jeycsI+qd%*ln*IQU)D6v#P?SkCP4Bz!#DH4J2@ZoPpnue zkNnbp6+M=nPfrQm=c)GrwkU*z+_`5aPY;@PoGa7XYK9s7u6!h``%)M`h_7Q^lp2~# z3`EeQ zcAR>BNv==*JWMMlX~WQ%F(qlzN+t~uUciy?v_a4gq8L4|DS^=*3x8=^POtMIyJUkr zcK58RW`&yUS|8y&S&|WO!^F(?Gz!fVca+K=%k;=I+TfRs=MZhfp*M@0PQ5qM(4~jB z0<|s{JvJt0zKTmp9i)AV1E|1nwt6+h_SSw|JQCgunJHM7g~--XE%OM30_`co?rcA( z5nHws^w8emH=Q%D2WkQN#TRd+*a1rU6l;%{coET*I$&4}Hs=#{?K^~iHOB6cfTdbz z=d@LUr!+DU;IBTlHJU9PNv2H4R*W`uDsJN+-$HdQ_9 z%?*f9;bJwFtSJ^Ax_~s}N`3F0(dM>zSlh&!-}cCoSR4itaG(dAY_{avv^R+S$+Tzo zEsk0Zm?^~@EqD&_gsoN8ymy5GwiJm-fpC|$IYTgS#MS$ZFLsAWBl zr+OixO*cia;C{TPGIVFn?;(xw!H#BWvr<%vvG&8yXmme{j*u3nTW%p{bP{+Id(Lv; z6%sr`5G7g*-`9ff|KfJBNJ1@ad)3mVp7Q#FUvt%`GSSI?M%!}Glk124j8F+zGG&1g zB^o2*tMA5FMN13#W5V1xO`ANO_ilLAw}qYYe$j^0E^%e0<>kav=lh-GL0h&;{qh_u z#9oVq88z>#I9u-YrRA>x4va4Oi?H~%y=_+J6%BM-1ny=?N^?)+XeLU3EOeZ6IqU9& zY^|w(YcMUy;bn&Hen(k81a9&-SjYJk37!b~16zD+4D=$Vj-iBIq5lK20W7t<*$ z+dfs?@^Vo3#O<%3aRRE*TzC{ApAa5Nhr hv7(r4Lt11om+iw2W+fc$X8(L>0Gg`@xz?F+`d{TW6$=0W diff --git a/play-services-core/src/main/res/drawable-mdpi/ic_generic_man.png b/play-services-core/src/main/res/drawable-mdpi/ic_generic_man.png index f763dd259c9fc2b4987cf1a04564c31f2679dec8..63c44cb9d5f6f7e9095c6b0c0a4cfe893602c821 100644 GIT binary patch literal 1351 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 PY6GCG9jvM?y;J@N(f-eF literal 3149 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 Wws=ALb>QRx0000$97Rx&a#T()Y`Fv! zMdgsogQJ|HP|hL>sQ5RtuOS^0h8cI$ADDri$>e=^W zb2B&ZLdO3<^4&@S-W1t92UWwBFaUPot_+?^Is zYq+JL=Y^OI^y1ZLp`J)>{V!i3W58>%vb{z~h1K%-1|jO8MabLey1cUnY0_%rdp{F0 zR6krfGOB8nx*-l^F#7|>j*U;aCZm*cKN&JLfpH%jKYf43@t5ftL7AmO<^}*l^D()w zD5}yD4dPt}2&|mVq(Y>8r9oED{UiF(6Qn`J4l6afzL6mzggA{Z%%Sfz$QnXcjjnZo zFb$G{kPY+CY?Jtjx5U2KKI_?mUMCTC5mqcWk}2mK$@sLiae!P~yzK;@ws=9Yk(y)x0000$6rK+s@thTqekB*Lx^tn)(@yv*)z5b##B$(>J(aXk=_+hB8NE zEU?x#ws!Uoj+gLG1lP-Mzq%8zczThpdHeYK`3D4Ezwukpt&rQ~(6I0b3NudJ@EbGV;3Hot6b?|kL$ z?(Kj3esK6h8n_(^0>Pqfu^1Q1C+;NIOVU+RU^8gx+LC*+!-*?WC(jp_p7+^Kr=J$T6hm(&yL9Iw)M`wc@fE|L#@q1U$}(b&&Y zuuh0`@H&55ea3>VIPvhDP3Oj!kHFn~5=c$<9bFv#HC(ME%mfj5s7>me-F5-E63vo! z=AtWM!d1l{4xqEpR2M1`KMko+Y~|;^-i!tKWNNR=Q)(0>Y9kXSp@bv~@<@S3Z^9ce z;pi^$8)|egJv{{~^fn2m_eUWO2iC5W1*8@z$Q~je{sNK>xfnQNa9WVD#P9kv5=fIN zLbSr%3rsNkv^;TR3}PH;xat9PfKmK9OiUDW*#nS{!W)Tekc5=@(iD-<*pA!%IUrMe z@be{5ehFx57W9=sD_+)*kE5v#_5!l<^jNt}EHpAnE)xemOXBxq(x!d*mzXqME+&{o zGxz3i{04Zw;u-)Ek1(1B0IC=GY5?T-0vhskhFnoKot9laz>6VJtWo2b87CUigptT| zqNS2)JCcBi7=6YVY|~MrbF*dFW0|PIo{R5(i@xUn0qOjD(HiV&<|B-UaRT6~9o< zD2UPcT;Ve?sdME1m%AP@$lM=Syjn#ZS=vi5^T?3)9m}cSUj#gpv>49?9H`-=DVytI zFwFt1**mp)Tgx9Z+zejK`|`qd7GWdHD-agFT_@^C)m@ta@NcSI2I z%%>)9Za&hhCKB3&?^`}$DowcTjj`^LrgG=9?53E>3jwo%nJXVcO#2(tU!?RKsCt!r zw~-a%s)GkULi;RvvO{eVU#D5^nCKLXMl+Mj`I<_3-MYi!U$^HN!&#?T9muD%{`+*jmh%NZykc0X=%+j2gt)^}Kvv_LPOM&bwzddS-?Zhjzic z)NMK%htF%C&s$MFf{V$U$|my*{b!Y#7`~L1=y?;O|NHBU{#8r?*doE$Y_czS%OiV8 zm$Eq;9Ke-apH2Yb_B-|um{-%*s(6AkQKfDB_HIh;aG^4?Q6lfi*)zRSU0t)Q%5Urk zVVOD=bufKd2hY+zh+ZQ!^&-ETr$T6&8OW$h3a@9SNyz7aY!I+JUTi(CFlw*m&vCIK}!hDfrgj$wk|YL}NUxGt1iv z8E<9C^eq>}2P$>ugr`vP(9T@%H$bR6io~i1!*;rb0ohtP KVk<02asL3mW~m5=tV2$TCVw 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 - + android:pathData="M6,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM18,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2zM12,10c-1.1,0 -2,0.9 -2,2s0.9,2 2,2 2,-0.9 2,-2 -0.9,-2 -2,-2z" /> diff --git a/play-services-core/src/main/res/drawable/ic_add_account.xml b/play-services-core/src/main/res/drawable/ic_add_account.xml index 1ff91a0e..9d33d75d 100644 --- a/play-services-core/src/main/res/drawable/ic_add_account.xml +++ b/play-services-core/src/main/res/drawable/ic_add_account.xml @@ -1,14 +1,9 @@ - - - + android:fillColor="#000000" + android:pathData="M15,12c2.21,0 4,-1.79 4,-4s-1.79,-4 -4,-4 -4,1.79 -4,4 1.79,4 4,4zM6,10L6,7L4,7v3L1,10v2h3v3h2v-3h3v-2L6,10zM15,14c-2.67,0 -8,1.34 -8,4v2h16v-2c0,-2.66 -5.33,-4 -8,-4z" /> diff --git a/play-services-core/src/main/res/drawable/ic_device_login.xml b/play-services-core/src/main/res/drawable/ic_device_login.xml index c0bce50c..4ca91e6f 100644 --- a/play-services-core/src/main/res/drawable/ic_device_login.xml +++ b/play-services-core/src/main/res/drawable/ic_device_login.xml @@ -1,12 +1,9 @@ - - - + android:pathData="M10,17V14H3V10H10V7L15,12L10,17M10,2H19A2,2 0 0,1 21,4V20A2,2 0 0,1 19,22H10A2,2 0 0,1 8,20V18H10V20H19V4H10V6H8V4A2,2 0 0,1 10,2Z" /> + \ No newline at end of file diff --git a/play-services-core/src/main/res/drawable/ic_expand_apps.xml b/play-services-core/src/main/res/drawable/ic_expand_apps.xml index 20634f05..34d81694 100755 --- a/play-services-core/src/main/res/drawable/ic_expand_apps.xml +++ b/play-services-core/src/main/res/drawable/ic_expand_apps.xml @@ -1,19 +1,10 @@ - - - - + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#000000" + android:pathData="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z" /> diff --git a/play-services-core/src/main/res/drawable/ic_info_outline.xml b/play-services-core/src/main/res/drawable/ic_info_outline.xml index 8e049cce..419edc7a 100755 --- a/play-services-core/src/main/res/drawable/ic_info_outline.xml +++ b/play-services-core/src/main/res/drawable/ic_info_outline.xml @@ -1,17 +1,9 @@ - - - + android:viewportWidth="24" + android:viewportHeight="24"> + android:fillColor="#000000" + android:pathData="M11,7h2v2h-2zM11,11h2v6h-2zM12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8 8,3.59 8,8 -3.59,8 -8,8z" /> diff --git a/play-services-core/src/main/res/mipmap-hdpi/ic_launcher.png b/play-services-core/src/main/res/mipmap-hdpi/ic_launcher.png index 31758af3f0c8bbf5f93e2f92000972f7a4db6ba9..077f5708c24ef4ec52d6a891c57d72fd404f6bb6 100644 GIT binary patch literal 4734 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 diff --git a/play-services-core/src/main/res/mipmap-xhdpi/ic_launcher.png b/play-services-core/src/main/res/mipmap-xhdpi/ic_launcher.png index 6aec4d5a3fadae019f3edb3aa5142bfcbf24ceb2..477a98039941664d2395ad15bd9739e6cfb83439 100644 GIT binary patch literal 6442 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 Ef}G$P_W%F@ literal 6965 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 literal 11869 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 XwDAvRnLx6r00000NkvXXu0mjfafCFy diff --git a/play-services-core/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/play-services-core/src/main/res/mipmap-xxxhdpi/ic_launcher.png index efbb9ac4dd74d33da79361a10f6eb673cf873afa..a077676a8b41fbae091cc20cb87c36b2075ca667 100644 GIT binary patch literal 14817 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 literal 16582 zcmZu&by$<{*Wbo~(W6^7y1OJd8YM-#kp^k$9F25$gOq?E0@9&?poG$`v>@H}?)&@u z-L+@iwd>j0dCqh=F)=SxDNj$#iBp}v~yrY$;mm72{pE@t^$GUvBe$dm?Z&~sFf6w|y zU+G9S%A6+x_sYVXtGlVQ=<}u=Q(jFr*_R&dJ-?RWrh(zpja7Ug?h;}gvLa_pgLxvi z-g4s`(lseqI}DPH^hBnty2C@5m>VVy#i`h{YmJpm?+Js4z&WHhkz~)M({i;wZKeml z$|A>T4_+)>kEHiaVes+jVn5gu{h7adk+*s8Iajx{nzm*0%kWfi-mv+FxSbwIHk)Gf zM=pi-YMjTTbnp0`9g*yL>t)-qzWJYsqI`!9AB(n<#ZOkB4&qdTCdp`}2WalhuB1l- zT77nX%EYYd&3OGQd|&d(TNi?)y)DyAtc`fa4-azsul^jyoVq^wSW}W{INRT&4q34|^lA20_U3x^SQ0D?q` zPN;SHSO)R&$EMd+8Wz9y1Z3~!ysV_|;K^Z+lRc`p*=@jnO}n044kUcOw;p2+plhj4 zTNInQw}F86vUL;4!eG+2x-9oIO)qW=Y-D$RD1s^=U|b{u4q*oaBVol*Fc~UT4ypwK zp}#B;<4G^1Bv;{!IjNwGyq;o+^qXS9^qYE)GT9UCNy3+RODMva^__Ps$ikF$|6tQ^ z_f?=rX8b}%tIn=Vp>Cj_8L{Ji(jhoY>bu(_Fh$Gs_CoAqp`Za-%Qny7rXr#_v4O1N z?j|Qx!vPiuYpwWo_*t>K{3v_`uxqJG|7NhVN6lpzkFKRY%rzNXoVAq`0qu1k4Gx8c zlFlVlUOn*(OZzP-9@*LJaQZ?#p|h8|*$PntJ;72OrX}kq8pg|~+#JB%z~sd}U1K}} z$>QD&^THue$S>XCL^9-rM?w}$S0bz}4AwR>g2?1;y;stf9k*ydi2X&b*0&lP*cu%a zvgHp-H4Ms7NQr!a3ogwCZyC5x&E_3o-L2Xs%CCDy!;c~dEX3FNAs8@ei`gXq7jdCDClxE(#A1{8 z#{jzF&5yG>xGgf1YtVkVUuFEXJ*#?CDRk_kt6IPKnQd(P`2gL`=7x)ffK{X69oykk z;fK}WZQ`TYpKe#b9H?M`Doy$*6=LwOZNhNtB1z!^$_sT5$EY@XME~Nsj#z5Rhmfn)faJ0L&1E3`1_uA?paNcmmiag;QKxD?4v5m=%;y+-Vu>X$D?sm@Qx`lI#TDb=SJUj&!9vead<6Y2GrRM38#_B} z)xH2$sXdnFreu9+ql{ zZ74-qwHYt~M)G&E$Dk5W3gV1o4@A)Nex5Y4t9kLr&#&{BPTp##qCI?wotT$)u$L|< zt1D3=Duc5fBoy##K%TxZEv(HCrT*~Y;NKrh?4|;jKbBdG;=8=F0>et9-W`ciNhy?b ze*{S+F#7BuDD~85*-kk)Ew<}WCO1qR{W~pppNx6;F?g60QMjMX5vMGP%=SAOEbz#1 zsZYDEtXi>d&)hnBV1HR`xAb@R=bakLO*SyG0S=Dc%5&o9SfT{D#|q-WZbF>phG z_)~yd@_}2(XPf9-@p-~lcSytsNQ3}-qeLSczt-a_8MDf#4&&8LvtRtk7WkvjV@VACTT7yYQXn|Q)VPWjyw*57`@ zd9d92Ml3Hqiy`V(wnhRfPJ_oqI zQJE{1zEjGlQ_}|3#`yqT=i^+)+lhcCui9DW`RHLh=kt8Pq7*Aa8QN*RN`#xd^WOLO z6SkWRHPlI*L?UhAa6;7If^a~z92J=31l%M`3~rsDBviUD8WMK_Gx#e7*{dVz%W++FQdlkYbLX}I z4bgV5Gkaly+Tjo*ez4E{ha)D*yO4XYFVBypUAGPSvm}&*Xyx6fy|#grVmCh`)Vqb& zq*r%&AfWkM8J+bYa4+^s+G3nixj!-%YvfgI{MWibKoptIR6w)XbQ}JLu^bGAX#*>b__qB z#%I?`$~|#ndVA9TPrjjto}Y5%xCrC$X57VZ)|CQe$?A+SE9QZSmQ04E2NAd7?o&^; zzUpR|GIAt=$ie{40V<2!8+5PxNjK0i+m3gl_S@~(r(a-OtS@kDHn13<0 z`WAtwMo@55>%AQl)D~$Bb(RCDx$Wce#vd`@L`;9}BZ^!j@{Zrv^j5=*S`+0W$@Stf zt9VbpBLLT?jFM8iQA%MdaOyFo{Ro)BlEM26+HS3re`3+Kw1qH+j=iCW04txwS26tj zt?q2`&izUr7K6zG4k=6CF*QwkWkP??j#jEaS=q{Yx~QDN!i3-kL=D!o#~Osyl*i|Pi{%2D*?!QYnGqKf2U+!3E(zI_37;A}r3 zs{`BT2+K+BvK>PBRT??d7wFxWI24ZNyo=KKRD9SP@t|w*tF@^$lOSKkx#vepJ8xfr zfh~d?eqfLwIYf^Mf+dj=&M}@(T$MY9Vv1lHroEejgD1&QfG{X#!{5(O1STfk?O;2D zzcU3!#eMTGuAkY)ZexG8Vl!doQ}r|TRJLo4wifO{oX#f?Cp`_(J>b!S#x6(=RPFK!rnj7= zQVfkKQR35mA>2cDI=K?9vmPpx=2@U?tk>Dk9EYiy-&wQSc=+IUox68SK|H_75f_I} z>wE)(8<-2I;vW@!kTyo8P$MhGM1Yy##V#4xeD`{p{BI*(MjD-_AoyF#BL{HtqlMAh zSV*Q)H*SLx?`uC1D;x`*NDFF`kQ(M{<+#B_Cqnf=a|5oJ=mv0(o8AQWk0Z}Dc3FDw zQ<6157yb-~L=H8IhykC<$T;clQn@RnLGj!S`*1h|X1g0s zm|M=fxsf+=H8B8U55he`_E^ecXe_RiorK zi2WJCeXN;o{rop2(7?*=fUFI$CK=e{n6^1S{417P`|*o0Tm!nUP8;_#L0@X%Q4=m$ z2=p$z9GkVn+eBbrfG@dK=Bb0(g8|g!k9DuO#<XNidKYc~)Q8e$%ANXQ50L+^-<-f9b$#$9)!qPNZ!epqy^FzL_-4Dc*5 z7~| z{7_CXDTpmR+jUxKdkAyIZLG;?5>kr?yGlvJLgp9x@i}V~p2cd<$-@n*{<@Jl40N_q zOmHkZNM%^%b?jcZiLGC^>GF&Z)ki1}$GSQcF%gF<33c1F;VnqrtC0564Z7-Ut*6N zDeqQD4$_do3ip5hf}2wItqq+7r*mI{9qDX;GmcaF_}2!keViTWSgb#0{&)X}t&EZ1 z%!)}9E}<51v9_VrA`8;D-m^IWnyku0no2E_3dawXByI$x=|MK!LtLjc9@b{R{j-bO z>TQC5(_|+Bisg^EY3}de4+JP0_WsqozNFps762Rj9e4eHvi_y1NODfo4I6pXuamg? zJJq+~$wI_mjtWd;7M_B%Gtn`1qg6pMclxpC26(5WM)J_Z}C1dP5-(f;wL*p@Rg31}8wGm2P zRg^WBhcd_h4Z8ON6J8Qc?XW_o+PfOcOiN;eI)b9zG~6=DaX(2!-M1{`vCA{Oty!zK ztE}k4{;9L-l#|%m8^1w-h%O#M3T=pt6G-g$DF>~;3r)ANf375#? z)a`k$!vdCP|9TwWErS0k`WMgx9X|K#zgdvk*D|K)jPF-wt@|v=5+nqJRB==v_Wk;G z3sqAF_!^wAsP8|uMK;bl__oUN$1_Yg9h#@c5-hpAgCEk9;RaPRTxFFc2A6*Nj?1xa z|K^V=rFfXX6&vp6r2}Eh^#8J)f4bDfkzld$%SNf^AGueI!X9x^{{wCXD7!if`3}X z9tt(i*?~IOL?{X`=`iu6qxu3b`}k*DaBMq-VYGne{M!NUcShN}FA0R`xhyN?WwY0{ zfI|DDmQkkEo%;rOk|sk-vajm$;Jt+wdF&WwWP`nUD0W{%C_%$XnI&eESn~S~#Xe3K z<|c?Q>AZ2io56RSa1qv$qe@l&P8SkL1J&&S-q&va)j8TqssKdu2cZp`=LoCP>qyb1 zw;#LG99?Jzd&z=s2UI*w=#BJ=)$6bJ;^JTb{c7hDiDS5EA@@~uUSR`s2Z|qKQk+6d z{hA)b6ZEd{Z`=E4J8#j|23}mZ+_!%oZOtZY&5fdNGIe;_*njW0IcfH9)_H%%5&p~z ztmOJZeN>3c;JY3!S{TMtm}XHsr0_-i`MyQ?D9VKKV)q- z`GMxvSH3SX6swMDB`Gdwz{s?evcQsOI?#Q`4z3pbA~U~CdO~jrtby38`P?V>PoF-# zN=zJIAk?%AVh*ASPyRr@18p;^ZjB>u;GOluw_i4j3@iQ#y-U=$G8Awl#CbocB82DK zCK6!0O}Z9-i#9^PS5P#muTKf<+s%!#p5D1q7jBZrt9^QYUe69^DctZKXnK@X*@GO{ zVP7NjiLL?7F)l`5NW_|^p75BESK6Vc-leDWb~0h0KTE!?a%e_kA4Cw^EG%+ETX{|J z=;8cBgDR`5*@g~eX|knU9AP0vbI-E1w>(i`T?BkvMs^!V4f%|P>VTlCqj+haR#(3N zlN&6iX5Vf}g*U#l$WXBf^4}}GoZW2vqR7W-^*y-=UCQ3Z^m!`D*OF%reEHE zMYU|_GrF^10722C_2LHg>ea36e)hff@`c-exhEvW2b<#d+3my5HTgWbC$|HRAhVK6 zu{^WMlvGuA&C$&Lj>eS9Lk~9+H!*@x{v@S?Qfcd7O5%PqtjW zz+A+0&2`rqiict$lEyQH2}f6n1~viv83c#T*gMcGiAu)}*6)h_S*{<^)v_prmrB8D zW1hmDZXJtFog74s0%$Pt!6pT0o=b%W`)CAx!+CpDvnnI}NQ!`d#Fw|6aB~KuZhpP# z-K^;uk}h(>J^eGgbST<~nBall#la>9a{)z6p-lM^*f4Z&rhOCLF(Tj|kugb?|LJfU z|1gYl5)^%qDPPk;K(*vgFF^DtgCdE9c&KgQ^X#``i$YK@Nic{YLnZ!?Z^?MZ3@&Q% zE5|Q&GQtCX$OEZ^P@#SLwCPAgcZcDOc`FgOzV3=*~Z5BOY&@;d<5 z81)qAFBRk$AWTah(B?VlMi9iR3kgO-^9ABCLrnjfEFhM7)|0g3A7g^Tab=^oP@3gv zF$&Se;{OyA$Tf5DoGrY6FXDq8LlNbDjO~~0+9%@*(Q9^TFL%lRC{WcO9+A5Y&d^&X zr`Al=)P3&}qYMT@K#s|Dp|?=*=Pjpy?2IMvt$s>lAY0{&M?A-Bp4Ph+k((f}TN6 zM5rEy#dP29Z_*y3-Gu?zo-iJgZL&}L+6sg z9l0zfObY`{L4(zs^NROT>OFiI z-K}+-V&2t8|o$0$gO3g1qVjnm8V4|nAI>y0dj-!cME$sMvNginYU6DiE zQd&atPfP-SFOLNhLBQ7ShjIvSuQ?#YGMBKncv#zy(b7cs)IRkrp}d%)^ESUwkD`i_ zcL87Ga!*`~EAJXVVgb=>%;A`+w}cM|t?kCY|IgifGhbDbj|U3yfq?VdPrzBkV12*& zDV?R4!_!$s92P2z11EC;H>Uo|U_H}de4v|xk&ZXj4ixOG???bRaUnxTHo~w^fQjBy zImFfqx`$<_fBkfdLF)#QcYmUZkI?-h zP*bzdj&?Pimd%$wKzz-RqA&yjbk1=k_M8Ms?_veqiJhmxSCI!%qH4aKLr@RjUbY+yUKko~qTqth`W+~$|? zWK;BrV|IxQy4Q$hMUb{o{O$=hKt3hsak%?l1F;(Srzx0x2!K%>0b}xuoN1Y*IOgg5 zHm2w@GwA$Xx_7dl$mG3TuQ3S$oX{b8Pa6}X-?mSfIT#D29FE8X_!=hzwiU0@ix&!O z;~vhSU#|#j=C#9`Jbnd)u??-r+_&T6BYH?*nv-Eo!ef#Omrs+ni09=cQ0qBY=yV`~ z6DA5g>V%O5L&=xI*FdPXR9KS4*YQvl>E=y^JFFxOzz?9Bl+@oD{j=LA$*Nph=y(Sc z_Vqn{`bXa$ZyHHT1(5)vW$FcL5V=Nr1VgtXWa*X89lNt6rel)pw4s{`iTzOQ}stHuR?A-e$Awtr|%iDJso zxk&^9NX@J{P5Eaci2qO#^yZ{bOW_qbM{s{%Z z(88y^itS+{V1x3=QUKPU1|_ZV$N|Xoiz?%4HTr@e8fT8jTs%KmiVOwx!qD#28}v*w zZuBLLy(F13ln6W$!bI>+iV$#>mEcaVRrHPYk!&VEvUE@ACGj`RbST-m^o0Tdb|{)M zmaaYlN1LxPh>KS@tTNj+S3BCQ?Psgl3v2u-~C{OdP4*sb%BW1 zW&l+x%SN`0?z_hy4bn*fapldj|B?i<=Z_{n;AwYwHs=c(@B&t^_FE5eB*iWnG+oDT zY;;{-`>U+VfT6;u659C0*JZm$84 z0h!hrH&4Lizc|4C0j0wE;CIA4w6cT%`0l21@OMSP#&qGk6USh5b}*^mO`9{Subn=%;uVHr(Z5j~i3tA$va`m4_7pFtp>#r7V*I5sFv% zwmJj^pw}Qozew~eJzY-dSy>~S0bJ#dI{G+?6vP2^OZvX-|3Pz^Wk)9Fo1LGJ zpbVV=;11MaQSs9Mcrmss=OBagKaJM|m9LZtd(nPmp!Z@3o%6@=B%_7*RX;jku>%^1 z8FH|hc^@PKdToYxLsI0hyde9gg8tHgk#39}>97BjFai=2cQpNpi#p`4tzx1e=THCR zL+3CTWuJ3j1z0QZ8{@Lt`&S3lhjsj8%t-J6N`PIur@M^qK;2YP<*y??7%oyn?4fh^ z!~h${kn25Rdek4i>0h&uP|if`73eFCk7Ik>fNz;QZ5{PF;Xd~ZbvL!iB5NcWx|dAo z5JbSRS__O(E_>YB{|`~HVF3TLr$x3QGu@}%Ra~?zkzbS)o5?QLkMJ4($)<<0bh%;4 zez;JJ*O*DRVF*FfUV~N+J9VWzH228rFyWr(-opOEn<}R{FARbCpQumbhJ*lmlq)gd zmirkz#^x9cE$4&@Sgd^UBCgFg_>~|{J@RX4ZIfC$-UK{mWMzWuOA^s-t%ezo>{Wom zk0E?8C)B`+7%Tt2|9uJ6x?@TmXQk;Nq9*}*BrGXQf&g7XR(sCw1GLRlbJ5*lS zbNZGm!s5`eYV_W~eb46M9X^;Iflk~CcqZiMs=|;&6)Y`mbaie@<&&|Gz4h}OOk$Z< zrJXA36u^~~?RPsxm6?fJrfe;{2|G8_xoY80UvxI zXHmfdc$pj7kDdj;hlw*&!|ul_X=>VJqLaN3VxlCwAWGPw>N_8jeP_5eUw7g-oX=KN zpU;L8BHd27j946>jMEKLm|46gMRC7;_^ISlVqr&#@z3QN`b3aMFx4!&rj(BiJBW-+ zqr(!mLkC^}^>UBm`@JTiM}?>Q@4Ebbro!K}8q@Mzcr2I>V6c(&#pJ{4TzZ%oykb3y zyJh`zJRvf0ciV_5*r$kdSTWX5d(+{|ij5KW+c?~*$@)90mz>6(Sx=%CQswc%Nf2~> z)TsRe$9zs~5>}N(-}E~D^@kdOxlBXGekO{zu2KPf~&0rW0LpM9XP=xg!H8u`O4yPlUQC^1aDtwbMW}1 ziC#ax;F7J|ftY=AMgRX*fuaEZ6~Xi1NY1de(4aK0)^gc&w;(ryWa-KJ<1)3d8jVOA zXk4Az!HX>xk>#ktuvTl;1Tkwbh}CHKgcP8X@RCaxjatY-uK^ZarY+BMywmod-`dXG zs*?NC8gLKfvMh-B{^HP@&VhBN+LjE7?&k3y+2UP*R54s%KtRRv7LM!H?trG<%>}eN zSYeewx2?tAU^Yd|LK4*Y0k*a|3_4@1t3u#q5I%yRyyI>g`qB>NTV5^fF;27ee%Nip-k4(rvEG0bFqpW#7Qom5;$S@Z4=5@1+nA%f91v*dYn{fP7=W= z&xO#Y#Yq@17Ox+&2tR^i)mx!}R>a}q{L3o@tpbAZ2rwGwKH*OZ zq4^lquRon9e?Ps;9(=4+=(v$c@_W%KNG!_yQ+0+_?()MiBs5}cF*)?V$f-)8j|}aH zs)It`S^p2&p+AlCdovv$vP8kJ1|6#KfdJR%HGR3?hfW`71~I5)G(dH^kY+TeDpv9! zO7BS*`RX0lAe=85hP@^O)&QQ~M7O%23HaTQj4 zEj)dD5k#(A4Ms_O@bR16lnfx)H?ZjtG;dgqHt({o%teU!8TlMXMToMg-u4%_ZJFD+ ztGC*`hat>*U&_Dx8Z&09Ef`$zUrldt`d;`XzTk>vZd2kW*x?fhG%sWAbl})$X5I*O zO1Gch=^1>iK_eY$z>pqJUl7r1JgpbDRj#Yfv3hG5VVLpY&)j3c7O!tg;{PDR(R-1T zc&GOy7FmngdQe!IcbSyMr#CBnDtS*8$|@C_{U6BzH~xSmGRmh5Sc!8ak~{h_)Ms4e z(Vb{ix$~{;i=2|JgZ9gy4`fZI&YV#0+&~Z$j0Y{efE3OL#!&B0f$WM zNmuS%2uUIOI7-TWeDN9ivOHJ${WVGG;vEc3GR}BD3(9#qA`QhrUdmf=X+6%n#o7WJ zmxJi`-DrJ?Pz5S?9i~IQwCs1pJG2_C=Z~3>Z*H2)cC~D%$aV@&A9kt0h_hmID4+-3 zQ(5c$zK7lW3&^(hzZM25V9ci~UB8qQJ_nDs;BLWW>67P4<@^1o(|$e4Qa@6*#uA#< z8Cy0X`o^7%Bxr1Hm4lA3TF%0SwA2=`Pk#6vF>wG@`Gp_)ZbDl-cJKI18iJmidbcN( zt#~*C_~dJ+4bl|ymg@0C7I4D{8K{dR^1F83~fheVgI>=Qc&P(ntbAqp} z>;*_WJUC0~PYaL+`~f2bltM%Kwf`@l0Mtte%oSd!yLjpao$FU(zWZ*LhIS21`85IL z=N~rW*0CTWMgo5*PpYmS^J9X zbBE|?2I>19n&TKy_=5hAxt~$R?%Y=cNn| z49GZs4TJo~EKLUNLI)XvaR;w{k@9^VSA;&GJ9i0CsXroeJmXWdzX(LH)gmuH5JTKJ zE-1$B%AJ;!b`4Ry`VafGg3^>%K#e5?>uFAspQw1Zg%3K2=l8|=vQcpj$usue9p%mC4!u_wI zReC{o6uE3JZ^eld*0_ak?=1t6Ii9Mmva+6qRGEIV1hgufyV8)(ciMScRKf!vwnDHz z*RcwoJ3JS*ud1KySq=h;Q}SQd&r?kW;`K*8s4C)X1JId|$vwqCm-Tv9PMky*138Q2 z9|-|LrrmhG!sX$ef0Al7>{_DG1f6r5xch-?Gs)qxBzf95kB%6K9Q>bMq0Nci!BIZD zc47m`R|CnEF?1)&T#(X~t3kr!y?Kf4pGn7HQ*d8-=!iv0)U>&|j;6u3tg-f+XE0w% zU}K*hR?EySHPtJ94`WT`hUCGAvq^LFg5UZDB%8_9a4Gst7c261_O@f12%`JvQA(CM zoM8ApA%!gFIgnZa(79r6V`Y@Qsg<%Gv#|bQP?5( zyi$*0lVZJm--_1C;ZOmfSnBre`+t)??@dBAXE2YjPkmxS*6rD8f(D|OU*jkPs^r!R zuTVx#s)HJ;YnkXSer?jK<`}xxjI=O2dr@`lh^6m&&SNzrnc2V4>({737z#q2&tY7R zI~x8I0mgCv?qQ2IlT3>VZ-|}i;o&RJCl=K82TIHTH0s&=^H|Cc*~IYSxP~m@qE>sq z@hCHO#9c8;LM2&42RrcT!lO~o2f=P{bGgMXtL%C)j5nB%(iatuu>UTG_$i=OL9E- zms+eBQckexW+NAeC%Vc1v~e8%-NUBe)4ec#4*${ueqj;^n{Nk@(0Rg^M1ip@v{xo6 zMn$UG;!r&_Ge;!s6dfymFaXzNqmBNEVX#UPUCkn9E%>SL3u0!}go$ruolSdFp?e%| zKg`L0`I5^K1K2sRbRqq>MHnURP7Sj5c^{(H3?R%$O^?FhUXTIl*?th@Zu{HJ?RZ7u zDHYCxRF=<3>>;nhE60M%ko52tMQfKCa>Hc#y;?R@o-6Vyxu^U!5~|fn+a{%>1ktQI zZkNm67ctScrtDmM06J!)kFsoVlA^Vlz4#DaayCIG0w~(4(7`R4G6QV&S1xRvOV?q82^SK zcjV(cuF1@%EoCmH$4{J!nB~IL1PwFC&VMMdf0;*2Sc;R~JimZ}eR^jaqKF4cZI4CW z(UUwz#SDkP9!~Rny_mmD8noB?Tg;Jqfy*(K;APX}`3#&7(${OjdX}WJ1kRmNq*i3O z%b2NF70@c(%d2!Qdmu9nVI_vq(K?9llWv%va;4b6i11AgRCN$Af}A;X?YA zH!FNA<-ma#_p+kscYe!*M{;1sRlRWFjyVwmYWB#KZG_Da+TGk@_K2dC-x}~RF`>Np zEe%;gJh9LnX51Zp5Gr1%KcbmZr@#p^iOKZ+Ph>jur##$A@Xe-8uYl7D@8ikgT3-)x zm_MIL3W8LbZiSI`2*~YL*zzRz=J)Q#?M)qJ{X;fNfq~Gb7=IpnnRs`nyP?5eYhj$A zB?n{rjFP1KL<;lQk#Zz*O-Zpf6M?G>I#3jtL1Mo_6b{+*QCayDO{{h(_&kh2jVOQN z^B@iK$baW;+gPqYeI!DsQ#ovK?u4a|JfpzOi2lZl441<$l5Uvtgk0j>@UQ+QMg)Er zmppWMA)@&A^EIcDk+k?Xeb1y;aapl7!YWeYzP*q@^Q9<9Go!ni^ZwlmUqPf+2Wa3% z?&aTa?1OfGYJbT02pfy!w!M0b5xsv*>jp$=vy;Uk&yP=;e zDrs;nAKp;G?dq1omwUaB!dQYN*x#_L0B^6$>F_KsKF(zP28H z*FF$pmSDnJKq*X%dvMCPv%70!rJg)#PJQY0ajLoF1h`4@Ozm^hlST1WfmhQR023kM z{f5j7805V)j%_Nxl7aMK{&y)0qbtw2RL9K~5UB6>u)YA8$1{8z+5T$x&8H_F+00#M zJc-hR{|?n;ik&~WXm)?(%lppZK4uhfZwXZpHkmZQh!Bn9{_S3RJD@7J>Q0AY!Mf7e)v(O7sqNdM zsa+OIX%0Q!RKwJ2UJ&rzn82R|u7`73xt-*Wsf$XL5AAF{V3We9OcL*__k<%~G$?(k z%=JYddeFhTFX#`{+1qQ^eMLe`2dfNttwaW*#iW3$@Q|Ac%B}F*oUG&7Mc^5(qsNZa@Eh)@ znpVNGR*4E2(!pQ1do+?HI9zcH>6>B;JO^7Zgv|spTUxES$MLXCz)neWXi8rbLX}%B z))edXXy#jl$a|PUXcuCibFY0aqv>7vHsW*8zgDapEb5J?w`q17MgOcXy^mW(q#a8= zAAeD^Rj^IW&L(|?P<@_#cO$;GP{N;1`4Jnq^5<_(6Pd4^lT!MgL`s?~kfmE5Jzw&9X7YtlaaMlDU^UNX+%RAYp2f3;+qft4 z)pK6@V765 zHqkhKClM}=uyNKs^6~zI5KR0lV1LwF_0*>u!bzgtE6ls5nb7JCS*AUW+`%RKXYyE!xT~7q7WnkHozZR%P}WLU2Mm<@ob}HaXa-gON5UutDQu1(n`{XL?F3iz(DmEBrNb3x z4dZp2!AFP zdq+Y55C!iprL#&o9B?~1(&28DpW7#?^ru%*lBIRg@@qsWU|0@d9i$*#(2_t?)Q*Y8 zRu|D-B6R3)p!C}I?}t-|vTj*Fti+GW(aLWxb8-sNw;+jI^UkM^@wX+n2_^f6!!qF^ zp%ozmGDTBCk67sK8M9TSEq;bA)0gVc4rVvhkb^N#n@2V-UG}lqL$i&1FFSehxBfwY zPZQz(p&Tgg?BZv3Wx)T=^nNDeV8$5PNQy-3G>=U9z5=JuYazg5c^_3X9QlZ~U=wUL zEa;NHYW$^&LFHdNo*!1`Mvhyyuemfl#iJ(uAHmWvzCtJo7=x*qSnnac`-EryCyB|u zv_kO&I}O8*^c5kCY(F`0f*3rKa8(yt1Z!EB7|fstJYGdw9BM=4bd(Q_tI6lX-+8h! zN2y12Q`3@d>QsiS@eAi*CsNU9mNu(8kzz zCia&|Hf8tqz@foq{9tzo`W6+KtZzs4q*aUy7yU>7X_6PLa_4tjP23((mC_zyJtnkaR zZS2Viv=>z1wYTbRn4M;8n>RzNG_pAD;>Kc~ykT4^D>bm4-4A$IqA3kehxo+lwLTZ& zzQ3U;rLC8v!+rZZFF56^*lHydEQpWz-AkJUMtVOoz@vlHNt&br^Iv>_I@}p1~$TuNhIZ$@wG8Mu?hadk&F1+R`I>2V$g&~e_R{>k7>MA}@7dDOmm()`l8REBZVC>Gsa!JE%6s5_$;_Sh^_Jl2tJhnn65VW^|M|*~jHTza9CfRq&Kzaw2<0_MAya-K~;N4$P=sO^JAK>H2Fm5%?rNa;L9VoIk6x zh}_5TQ$)g&S;{6{H8dE@r&Lp56HZhoE;97>c$pc$DX2SHgRz8ZcA{Brao`+s*F*uTyOh$ zhmbpk6mGz=C(*VbKl2c;ENrd|x;;GpVGtx;ex?(HxR!H%JWY;K3IT(di8@s)gjbR) zMOV;_oTisx1Put*_0SXr7w4|!l2)6}c#=MoMOU6YB8_~!3)0HzqJH*b1r%PY^gztpo2Q}O{qjE=blu}?YOXSCcx9EQ(-|^mG8rly ziSg%1Us48R1$p`)RKF?>YZ_kbn;Z>#))P`Mf~6LzcO*Ac$}@QbZ4MG8dA_#pMjTNe zUs^!NR2ieU8w!TeH;+;S8A5@P5FBod;Iv-B4Vze>??YxdeEE1Iw?|1asrOKw2NC9% z1)=2&p2-qxB-X`JjHHoDhUfY=hLEUzU{-bh=jShrJ~LFy-1EI?zvt8PyC2uNZjsf( zY}u|t$q7pLbiy}WQhiU!HQi|ZP&!%> zBpY(+us?%sjb|{j^g!S>WBL*%DqX1XNk)-Moz)Bu_(EvH zZm;3WxeoeyP1U3U-@VhmtV?k01M?+H^B)1zof#oY&`?jKXsQeK9v8pxBY$k65O_*y z2Fl!NAT1qkf`PGa0sg9{Q`@NTY~mp*;XfU?Pa(DE)U)%H4fUI{08ib}n?um^e0rzO z$7OKS8C|e!cP++3@+0beLNta=LYR2pY))5|S7b3-6-iQ(2pmWjg_f9id_G@(eVF|L z$xRp>Io?`iW6?`n_ipHi{2{e6X#n)V6EitC(8l*qHKV_A#-!QPf@(Dv>UCKlY^UW9 zxdQV;OQ|20T`JW#qH9_=V> zQM{5b2guhkrcXUdt2{$8^!(Z)xUToVrL4pSifK!hbvCL@#-h^;#*R3`2Dh6YQN$4(1`*2I>%u8|oYML=9ePh5#X zTun+qQqf*Rb^n+@vMQcB+sM}7@O)(;uJc`XAl4?Nfvi)o5=~;YtAE6mH%72aM+o3> zwJC&xQVnuREOSXyjG%p-NbOt^ftwzVka5)A`=@?9IwuRD6El;Om9HO(yLtNl`!#PE zl04>9F+a1FaH$_YApyyg@8KV9zCCVFJ^YAZ^}}!j{MTptn0(?uO0!2I_@}r*t#s{T0Q#Y-sG(3V HXMy@ZMCE@q From ca47cc6f8441be88423525de55790ec09168848b Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Mon, 31 Aug 2020 19:55:43 -0400 Subject: [PATCH 11/11] Update gradle wrapper --- gradle/wrapper/gradle-wrapper.jar | Bin 49896 -> 58910 bytes gradle/wrapper/gradle-wrapper.properties | 3 +- gradlew | 149 +++++++++++++---------- gradlew.bat | 104 ++++++++++++++++ 4 files changed, 190 insertions(+), 66 deletions(-) create mode 100644 gradlew.bat diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 8c0fb64a8698b08ecc4158d828ca593c4928e9dd..62d4c053550b91381bbd28b1afc82d634bf73a8a 100644 GIT binary patch literal 58910 zcma&ObC74zk}X`WF59+k+qTVL*+!RbS9RI8Z5v&-ZFK4Nn|tqzcjwK__x+Iv5xL`> zj94dg?X`0sMHx^qXds{;KY)OMg#H>35XgTVfq6#vc9ww|9) z@UMfwUqk)B9p!}NrNqTlRO#i!ALOPcWo78-=iy}NsAr~T8T0X0%G{DhX~u-yEwc29WQ4D zuv2j{a&j?qB4wgCu`zOXj!~YpTNFg)TWoV>DhYlR^Gp^rkOEluvxkGLB?!{fD!T@( z%3cy>OkhbIKz*R%uoKqrg1%A?)uTZD&~ssOCUBlvZhx7XHQ4b7@`&sPdT475?*zWy z>xq*iK=5G&N6!HiZaD{NSNhWL;+>Quw_#ZqZbyglna!Fqn3N!$L`=;TFPrhodD-Q` z1l*=DP2gKJP@)cwI@-M}?M$$$%u~=vkeC%>cwR$~?y6cXx-M{=wdT4|3X(@)a|KkZ z`w$6CNS@5gWS7s7P86L<=vg$Mxv$?)vMj3`o*7W4U~*Nden}wz=y+QtuMmZ{(Ir1D zGp)ZsNiy{mS}Au5;(fYf93rs^xvi(H;|H8ECYdC`CiC&G`zw?@)#DjMc7j~daL_A$ z7e3nF2$TKlTi=mOftyFBt8*Xju-OY@2k@f3YBM)-v8+5_o}M?7pxlNn)C0Mcd@87?+AA4{Ti2ptnYYKGp`^FhcJLlT%RwP4k$ad!ho}-^vW;s{6hnjD0*c39k zrm@PkI8_p}mnT&5I@=O1^m?g}PN^8O8rB`;t`6H+?Su0IR?;8txBqwK1Au8O3BZAX zNdJB{bpQWR@J|e=Z>XSXV1DB{uhr3pGf_tb)(cAkp)fS7*Qv))&Vkbb+cvG!j}ukd zxt*C8&RN}5ck{jkw0=Q7ldUp0FQ&Pb_$M7a@^nf`8F%$ftu^jEz36d#^M8Ia{VaTy z5(h$I)*l3i!VpPMW+XGgzL~fcN?{~1QWu9!Gu0jOWWE zNW%&&by0DbXL&^)r-A*7R@;T$P}@3eOj#gqJ!uvTqBL5bupU91UK#d|IdxBUZAeh1 z>rAI#*Y4jv>uhOh7`S@mnsl0g@1C;k$Z%!d*n8#_$)l}-1&z2kr@M+xWoKR z!KySy-7h&Bf}02%JeXmQGjO3ntu={K$jy$rFwfSV8!zqAL_*&e2|CJ06`4&0+ceI026REfNT>JzAdwmIlKLEr2? zaZ#d*XFUN*gpzOxq)cysr&#6zNdDDPH% zd8_>3B}uA7;bP4fKVdd~Og@}dW#74ceETOE- zlZgQqQfEc?-5ly(Z5`L_CCM!&Uxk5#wgo=OLs-kFHFG*cTZ)$VE?c_gQUW&*!2@W2 z7Lq&_Kf88OCo?BHCtwe*&fu&8PQ(R5&lnYo8%+U73U)Ec2&|A)Y~m7(^bh299REPe zn#gyaJ4%o4>diN3z%P5&_aFUmlKytY$t21WGwx;3?UC}vlxi-vdEQgsKQ;=#sJ#ll zZeytjOad$kyON4XxC}frS|Ybh`Yq!<(IrlOXP3*q86ImyV*mJyBn$m~?#xp;EplcM z+6sez%+K}Xj3$YN6{}VL;BZ7Fi|iJj-ywlR+AP8lq~mnt5p_%VmN{Sq$L^z!otu_u znVCl@FgcVXo510e@5(wnko%Pv+^r^)GRh;>#Z(|#cLnu_Y$#_xG&nvuT+~gzJsoSi zBvX`|IS~xaold!`P!h(v|=>!5gk)Q+!0R1Ge7!WpRP{*Ajz$oGG$_?Ajvz6F0X?809o`L8prsJ*+LjlGfSziO;+ zv>fyRBVx#oC0jGK8$%$>Z;0+dfn8x;kHFQ?Rpi7(Rc{Uq{63Kgs{IwLV>pDK7yX-2 zls;?`h!I9YQVVbAj7Ok1%Y+F?CJa-Jl>1x#UVL(lpzBBH4(6v0^4 z3Tf`INjml5`F_kZc5M#^J|f%7Hgxg3#o}Zwx%4l9yYG!WaYUA>+dqpRE3nw#YXIX%= ziH3iYO~jr0nP5xp*VIa#-aa;H&%>{mfAPPlh5Fc!N7^{!z$;p-p38aW{gGx z)dFS62;V;%%fKp&i@+5x=Cn7Q>H`NofJGXmNeh{sOL+Nk>bQJJBw3K*H_$}%*xJM=Kh;s#$@RBR z|75|g85da@#qT=pD777m$wI!Q8SC4Yw3(PVU53bzzGq$IdGQoFb-c_(iA_~qD|eAy z@J+2!tc{|!8fF;%6rY9`Q!Kr>MFwEH%TY0y>Q(D}xGVJM{J{aGN0drG&|1xO!Ttdw z-1^gQ&y~KS5SeslMmoA$Wv$ly={f}f9<{Gm!8ycp*D9m*5Ef{ymIq!MU01*)#J1_! zM_i4{LYButqlQ>Q#o{~W!E_#(S=hR}kIrea_67Z5{W>8PD>g$f;dTvlD=X@T$8D0;BWkle@{VTd&D5^)U>(>g(jFt4lRV6A2(Te->ooI{nk-bZ(gwgh zaH4GT^wXPBq^Gcu%xW#S#p_&x)pNla5%S5;*OG_T^PhIIw1gXP&u5c;{^S(AC*+$> z)GuVq(FT@zq9;i{*9lEsNJZ)??BbSc5vF+Kdh-kL@`(`l5tB4P!9Okin2!-T?}(w% zEpbEU67|lU#@>DppToestmu8Ce=gz=e#V+o)v)#e=N`{$MI5P0O)_fHt1@aIC_QCv=FO`Qf=Ga%^_NhqGI)xtN*^1n{ z&vgl|TrKZ3Vam@wE0p{c3xCCAl+RqFEse@r*a<3}wmJl-hoJoN<|O2zcvMRl<#BtZ z#}-bPCv&OTw`GMp&n4tutf|er`@#d~7X+);##YFSJ)BitGALu}-N*DJdCzs(cQ?I- z6u(WAKH^NUCcOtpt5QTsQRJ$}jN28ZsYx+4CrJUQ%egH zo#tMoywhR*oeIkS%}%WUAIbM`D)R6Ya&@sZvvUEM7`fR0Ga03*=qaEGq4G7-+30Ck zRkje{6A{`ebq?2BTFFYnMM$xcQbz0nEGe!s%}O)m={`075R0N9KTZ>vbv2^eml>@}722%!r#6Wto}?vNst? zs`IasBtcROZG9+%rYaZe^=5y3chDzBf>;|5sP0!sP(t^= z^~go8msT@|rp8LJ8km?4l?Hb%o10h7(ixqV65~5Y>n_zG3AMqM3UxUNj6K-FUgMT7 z*Dy2Y8Ws+%`Z*~m9P zCWQ8L^kA2$rf-S@qHow$J86t)hoU#XZ2YK~9GXVR|*`f6`0&8j|ss_Ai-x=_;Df^*&=bW$1nc{Gplm zF}VF`w)`5A;W@KM`@<9Bw_7~?_@b{Z`n_A6c1AG#h#>Z$K>gX6reEZ*bZRjCup|0# zQ{XAb`n^}2cIwLTN%5Ix`PB*H^(|5S{j?BwItu+MS`1)VW=TnUtt6{3J!WR`4b`LW z?AD#ZmoyYpL=903q3LSM=&5eNP^dwTDRD~iP=}FXgZ@2WqfdyPYl$9do?wX{RU*$S zgQ{OqXK-Yuf4+}x6P#A*la&^G2c2TC;aNNZEYuB(f25|5eYi|rd$;i0qk7^3Ri8of ziP~PVT_|4$n!~F-B1_Et<0OJZ*e+MN;5FFH`iec(lHR+O%O%_RQhvbk-NBQ+$)w{D+dlA0jxI;z|P zEKW`!X)${xzi}Ww5G&@g0akBb_F`ziv$u^hs0W&FXuz=Ap>SUMw9=M?X$`lgPRq11 zqq+n44qL;pgGO+*DEc+Euv*j(#%;>p)yqdl`dT+Og zZH?FXXt`<0XL2@PWYp|7DWzFqxLK)yDXae&3P*#+f+E{I&h=$UPj;ey9b`H?qe*Oj zV|-qgI~v%&oh7rzICXfZmg$8$B|zkjliQ=e4jFgYCLR%yi!9gc7>N z&5G#KG&Hr+UEfB;M(M>$Eh}P$)<_IqC_WKOhO4(cY@Gn4XF(#aENkp&D{sMQgrhDT zXClOHrr9|POHqlmm+*L6CK=OENXbZ+kb}t>oRHE2xVW<;VKR@ykYq04LM9L-b;eo& zl!QQo!Sw{_$-qosixZJWhciN>Gbe8|vEVV2l)`#5vKyrXc6E`zmH(76nGRdL)pqLb@j<&&b!qJRLf>d`rdz}^ZSm7E;+XUJ ziy;xY&>LM?MA^v0Fu8{7hvh_ynOls6CI;kQkS2g^OZr70A}PU;i^~b_hUYN1*j-DD zn$lHQG9(lh&sDii)ip*{;Sb_-Anluh`=l~qhqbI+;=ZzpFrRp&T+UICO!OoqX@Xr_ z32iJ`xSpx=lDDB_IG}k+GTYG@K8{rhTS)aoN8D~Xfe?ul&;jv^E;w$nhu-ICs&Q)% zZ=~kPNZP0-A$pB8)!`TEqE`tY3Mx^`%O`?EDiWsZpoP`e-iQ#E>fIyUx8XN0L z@S-NQwc;0HjSZKWDL}Au_Zkbh!juuB&mGL0=nO5)tUd_4scpPy&O7SNS^aRxUy0^< zX}j*jPrLP4Pa0|PL+nrbd4G;YCxCK-=G7TG?dby~``AIHwxqFu^OJhyIUJkO0O<>_ zcpvg5Fk$Wpj}YE3;GxRK67P_Z@1V#+pu>pRj0!mFf(m_WR3w3*oQy$s39~U7Cb}p(N&8SEwt+)@%o-kW9Ck=^?tvC2$b9% ze9(Jn+H`;uAJE|;$Flha?!*lJ0@lKfZM>B|c)3lIAHb;5OEOT(2453m!LgH2AX=jK zQ93An1-#l@I@mwB#pLc;M7=u6V5IgLl>E%gvE|}Hvd4-bE1>gs(P^C}gTv*&t>W#+ zASLRX$y^DD3Jrht zwyt`yuA1j(TcP*0p*Xkv>gh+YTLrcN_HuaRMso~0AJg`^nL#52dGBzY+_7i)Ud#X) zVwg;6$WV20U2uyKt8<)jN#^1>PLg`I`@Mmut*Zy!c!zshSA!e^tWVoKJD%jN&ml#{ z@}B$j=U5J_#rc%T7(DGKF+WwIblEZ;Vq;CsG~OKxhWYGJx#g7fxb-_ya*D0=_Ys#f zhXktl=Vnw#Z_neW>Xe#EXT(4sT^3p6srKby4Ma5LLfh6XrHGFGgM;5Z}jv-T!f~=jT&n>Rk z4U0RT-#2fsYCQhwtW&wNp6T(im4dq>363H^ivz#>Sj;TEKY<)dOQU=g=XsLZhnR>e zd}@p1B;hMsL~QH2Wq>9Zb; zK`0`09fzuYg9MLJe~cdMS6oxoAD{kW3sFAqDxvFM#{GpP^NU@9$d5;w^WgLYknCTN z0)N425mjsJTI@#2kG-kB!({*+S(WZ-{SckG5^OiyP%(6DpRsx60$H8M$V65a_>oME z^T~>oG7r!ew>Y)&^MOBrgc-3PezgTZ2xIhXv%ExMFgSf5dQbD=Kj*!J4k^Xx!Z>AW ziZfvqJvtm|EXYsD%A|;>m1Md}j5f2>kt*gngL=enh<>#5iud0dS1P%u2o+>VQ{U%(nQ_WTySY(s#~~> zrTsvp{lTSup_7*Xq@qgjY@1#bisPCRMMHnOL48qi*jQ0xg~TSW%KMG9zN1(tjXix()2$N}}K$AJ@GUth+AyIhH6Aeh7qDgt#t*`iF5#A&g4+ zWr0$h9Zx6&Uo2!Ztcok($F>4NA<`dS&Js%L+67FT@WmI)z#fF~S75TUut%V($oUHw z$IJsL0X$KfGPZYjB9jaj-LaoDD$OMY4QxuQ&vOGo?-*9@O!Nj>QBSA6n$Lx|^ zky)4+sy{#6)FRqRt6nM9j2Lzba!U;aL%ZcG&ki1=3gFx6(&A3J-oo|S2_`*w9zT)W z4MBOVCp}?4nY)1))SOX#6Zu0fQQ7V{RJq{H)S#;sElY)S)lXTVyUXTepu4N)n85Xo zIpWPT&rgnw$D2Fsut#Xf-hO&6uA0n~a;a3!=_!Tq^TdGE&<*c?1b|PovU}3tfiIUu z){4W|@PY}zJOXkGviCw^x27%K_Fm9GuKVpd{P2>NJlnk^I|h2XW0IO~LTMj>2<;S* zZh2uRNSdJM$U$@=`zz}%;ucRx{aKVxxF7?0hdKh6&GxO6f`l2kFncS3xu0Ly{ew0& zeEP*#lk-8-B$LD(5yj>YFJ{yf5zb41PlW7S{D9zC4Aa4nVdkDNH{UsFJp)q-`9OYt zbOKkigbmm5hF?tttn;S4g^142AF^`kiLUC?e7=*JH%Qe>uW=dB24NQa`;lm5yL>Dyh@HbHy-f%6Vz^ zh&MgwYsh(z#_fhhqY$3*f>Ha}*^cU-r4uTHaT?)~LUj5``FcS46oyoI5F3ZRizVD% zPFY(_S&5GN8$Nl2=+YO6j4d|M6O7CmUyS&}m4LSn6}J`$M0ZzT&Ome)ZbJDFvM&}A zZdhDn(*viM-JHf84$!I(8eakl#zRjJH4qfw8=60 z11Ely^FyXjVvtv48-Fae7p=adlt9_F^j5#ZDf7)n!#j?{W?@j$Pi=k`>Ii>XxrJ?$ z^bhh|X6qC8d{NS4rX5P!%jXy=>(P+r9?W(2)|(=a^s^l~x*^$Enw$~u%WRuRHHFan{X|S;FD(Mr z@r@h^@Bs#C3G;~IJMrERd+D!o?HmFX&#i|~q(7QR3f8QDip?ms6|GV_$86aDb|5pc?_-jo6vmWqYi{P#?{m_AesA4xX zi&ki&lh0yvf*Yw~@jt|r-=zpj!bw<6zI3Aa^Wq{|*WEC}I=O!Re!l~&8|Vu<$yZ1p zs-SlwJD8K!$(WWyhZ+sOqa8cciwvyh%zd`r$u;;fsHn!hub0VU)bUv^QH?x30#;tH zTc_VbZj|prj7)d%ORU;Vs{#ERb>K8>GOLSImnF7JhR|g$7FQTU{(a7RHQ*ii-{U3X z^7+vM0R$8b3k1aSU&kxvVPfOz3~)0O2iTYinV9_5{pF18j4b{o`=@AZIOAwwedB2@ ztXI1F04mg{<>a-gdFoRjq$6#FaevDn$^06L)k%wYq03&ysdXE+LL1#w$rRS1Y;BoS zH1x}{ms>LHWmdtP(ydD!aRdAa(d@csEo z0EF9L>%tppp`CZ2)jVb8AuoYyu;d^wfje6^n6`A?6$&%$p>HcE_De-Zh)%3o5)LDa zskQ}%o7?bg$xUj|n8gN9YB)z!N&-K&!_hVQ?#SFj+MpQA4@4oq!UQ$Vm3B`W_Pq3J z=ngFP4h_y=`Iar<`EESF9){%YZVyJqLPGq07TP7&fSDmnYs2NZQKiR%>){imTBJth zPHr@p>8b+N@~%43rSeNuOz;rgEm?14hNtI|KC6Xz1d?|2J`QS#`OW7gTF_;TPPxu@ z)9J9>3Lx*bc>Ielg|F3cou$O0+<b34_*ZJhpS&$8DP>s%47a)4ZLw`|>s=P_J4u z?I_%AvR_z8of@UYWJV?~c4Yb|A!9n!LEUE6{sn@9+D=0w_-`szJ_T++x3MN$v-)0d zy`?1QG}C^KiNlnJBRZBLr4G~15V3$QqC%1G5b#CEB0VTr#z?Ug%Jyv@a`QqAYUV~^ zw)d|%0g&kl{j#FMdf$cn(~L@8s~6eQ)6{`ik(RI(o9s0g30Li{4YoxcVoYd+LpeLz zai?~r)UcbYr@lv*Z>E%BsvTNd`Sc?}*}>mzJ|cr0Y(6rA7H_6&t>F{{mJ^xovc2a@ zFGGDUcGgI-z6H#o@Gj29C=Uy{wv zQHY2`HZu8+sBQK*_~I-_>fOTKEAQ8_Q~YE$c?cSCxI;vs-JGO`RS464Ft06rpjn+a zqRS0Y3oN(9HCP@{J4mOWqIyD8PirA!pgU^Ne{LHBG;S*bZpx3|JyQDGO&(;Im8!ed zNdpE&?3U?E@O~>`@B;oY>#?gXEDl3pE@J30R1;?QNNxZ?YePc)3=NS>!STCrXu*lM z69WkLB_RBwb1^-zEm*tkcHz3H;?v z;q+x0Jg$|?5;e1-kbJnuT+^$bWnYc~1qnyVTKh*cvM+8yJT-HBs1X@cD;L$su65;i z2c1MxyL~NuZ9+)hF=^-#;dS#lFy^Idcb>AEDXu1!G4Kd8YPy~0lZz$2gbv?su}Zn} zGtIbeYz3X8OA9{sT(aleold_?UEV{hWRl(@)NH6GFH@$<8hUt=dNte%e#Jc>7u9xi zuqv!CRE@!fmZZ}3&@$D>p0z=*dfQ_=IE4bG0hLmT@OP>x$e`qaqf_=#baJ8XPtOpWi%$ep1Y)o2(sR=v)M zt(z*pGS$Z#j_xq_lnCr+x9fwiT?h{NEn#iK(o)G&Xw-#DK?=Ms6T;%&EE${Gq_%99 z6(;P~jPKq9llc+cmI(MKQ6*7PcL)BmoI}MYFO)b3-{j>9FhNdXLR<^mnMP`I7z0v` zj3wxcXAqi4Z0kpeSf>?V_+D}NULgU$DBvZ^=0G8Bypd7P2>;u`yW9`%4~&tzNJpgp zqB+iLIM~IkB;ts!)exn643mAJ8-WlgFE%Rpq!UMYtB?$5QAMm)%PT0$$2{>Yu7&U@ zh}gD^Qdgu){y3ANdB5{75P;lRxSJPSpQPMJOiwmpMdT|?=q;&$aTt|dl~kvS z+*i;6cEQJ1V`R4Fd>-Uzsc=DPQ7A7#VPCIf!R!KK%LM&G%MoZ0{-8&99H!|UW$Ejv zhDLX3ESS6CgWTm#1ZeS2HJb`=UM^gsQ84dQpX(ESWSkjn>O zVxg%`@mh(X9&&wN$lDIc*@>rf?C0AD_mge3f2KkT6kGySOhXqZjtA?5z`vKl_{(5g z&%Y~9p?_DL{+q@siT~*3Q*$nWXQfNN;%s_eHP_A;O`N`SaoB z6xYR;z_;HQ2xAa9xKgx~2f2xEKiEDpGPH1d@||v#f#_Ty6_gY>^oZ#xac?pc-F`@ z*}8sPV@xiz?efDMcmmezYVw~qw=vT;G1xh+xRVBkmN66!u(mRG3G6P#v|;w@anEh7 zCf94arw%YB*=&3=RTqX?z4mID$W*^+&d6qI*LA-yGme;F9+wTsNXNaX~zl2+qIK&D-aeN4lr0+yP;W>|Dh?ms_ogT{DT+ ztXFy*R7j4IX;w@@R9Oct5k2M%&j=c_rWvoul+` z<18FH5D@i$P38W9VU2(EnEvlJ(SHCqTNBa)brkIjGP|jCnK&Qi%97tikU}Y#3L?s! z2ujL%YiHO-#!|g5066V01hgT#>fzls7P>+%D~ogOT&!Whb4iF=CnCto82Yb#b`YoVsj zS2q^W0Rj!RrM@=_GuPQy5*_X@Zmu`TKSbqEOP@;Ga&Rrr>#H@L41@ZX)LAkbo{G8+ z;!5EH6vv-ip0`tLB)xUuOX(*YEDSWf?PIxXe`+_B8=KH#HFCfthu}QJylPMTNmoV; zC63g%?57(&osaH^sxCyI-+gwVB|Xs2TOf=mgUAq?V~N_5!4A=b{AXbDae+yABuuu3B_XSa4~c z1s-OW>!cIkjwJf4ZhvT|*IKaRTU)WAK=G|H#B5#NB9<{*kt?7`+G*-^<)7$Iup@Um z7u*ABkG3F*Foj)W9-I&@BrN8(#$7Hdi`BU#SR1Uz4rh&=Ey!b76Qo?RqBJ!U+rh(1 znw@xw5$)4D8OWtB_^pJO*d~2Mb-f~>I!U#*=Eh*xa6$LX?4Evp4%;ENQR!mF4`f7F zpG!NX=qnCwE8@NAbQV`*?!v0;NJ(| zBip8}VgFVsXFqslXUV>_Z>1gmD(7p#=WACXaB|Y`=Kxa=p@_ALsL&yAJ`*QW^`2@% zW7~Yp(Q@ihmkf{vMF?kqkY%SwG^t&CtfRWZ{syK@W$#DzegcQ1>~r7foTw3^V1)f2Tq_5f$igmfch;8 zT-<)?RKcCdQh6x^mMEOS;4IpQ@F2q-4IC4%*dU@jfHR4UdG>Usw4;7ESpORL|2^#jd+@zxz{(|RV*1WKrw-)ln*8LnxVkKDfGDHA%7`HaiuvhMu%*mY9*Ya{Ti#{DW?i0 zXXsp+Bb(_~wv(3t70QU3a$*<$1&zm1t++x#wDLCRI4K)kU?Vm9n2c0m@TyUV&&l9%}fulj!Z9)&@yIcQ3gX}l0b1LbIh4S z5C*IDrYxR%qm4LVzSk{0;*npO_SocYWbkAjA6(^IAwUnoAzw_Uo}xYFo?Y<-4Zqec z&k7HtVlFGyt_pA&kX%P8PaRD8y!Wsnv}NMLNLy-CHZf(ObmzV|t-iC#@Z9*d-zUsx zxcYWw{H)nYXVdnJu5o-U+fn~W z-$h1ax>h{NlWLA7;;6TcQHA>UJB$KNk74T1xNWh9)kwK~wX0m|Jo_Z;g;>^E4-k4R zRj#pQb-Hg&dAh}*=2;JY*aiNZzT=IU&v|lQY%Q|=^V5pvTR7^t9+@+ST&sr!J1Y9a z514dYZn5rg6@4Cy6P`-?!3Y& z?B*5zw!mTiD2)>f@3XYrW^9V-@%YFkE_;PCyCJ7*?_3cR%tHng9%ZpIU}LJM=a+0s z(SDDLvcVa~b9O!cVL8)Q{d^R^(bbG=Ia$)dVN_tGMee3PMssZ7Z;c^Vg_1CjZYTnq z)wnF8?=-MmqVOMX!iE?YDvHCN?%TQtKJMFHp$~kX4}jZ;EDqP$?jqJZjoa2PM@$uZ zF4}iab1b5ep)L;jdegC3{K4VnCH#OV;pRcSa(&Nm50ze-yZ8*cGv;@+N+A?ncc^2z9~|(xFhwOHmPW@ zR5&)E^YKQj@`g=;zJ_+CLamsPuvppUr$G1#9urUj+p-mPW_QSSHkPMS!52t>Hqy|g z_@Yu3z%|wE=uYq8G>4`Q!4zivS}+}{m5Zjr7kMRGn_p&hNf|pc&f9iQ`^%78rl#~8 z;os@rpMA{ZioY~(Rm!Wf#Wx##A0PthOI341QiJ=G*#}pDAkDm+{0kz&*NB?rC0-)glB{0_Tq*^o zVS1>3REsv*Qb;qg!G^9;VoK)P*?f<*H&4Su1=}bP^Y<2PwFpoqw#up4IgX3L z`w~8jsFCI3k~Y9g(Y9Km`y$0FS5vHb)kb)Jb6q-9MbO{Hbb zxg?IWQ1ZIGgE}wKm{axO6CCh~4DyoFU+i1xn#oyfe+<{>=^B5tm!!*1M?AW8c=6g+%2Ft97_Hq&ZmOGvqGQ!Bn<_Vw`0DRuDoB6q8ME<;oL4kocr8E$NGoLI zXWmI7Af-DR|KJw!vKp2SI4W*x%A%5BgDu%8%Iato+pWo5`vH@!XqC!yK}KLzvfS(q z{!y(S-PKbk!qHsgVyxKsQWk_8HUSSmslUA9nWOjkKn0%cwn%yxnkfxn?Y2rysXKS=t-TeI%DN$sQ{lcD!(s>(4y#CSxZ4R} zFDI^HPC_l?uh_)-^ppeYRkPTPu~V^0Mt}#jrTL1Q(M;qVt4zb(L|J~sxx7Lva9`mh zz!#A9tA*6?q)xThc7(gB2Ryam$YG4qlh00c}r&$y6u zIN#Qxn{7RKJ+_r|1G1KEv!&uKfXpOVZ8tK{M775ws%nDyoZ?bi3NufNbZs)zqXiqc zqOsK@^OnlFMAT&mO3`@3nZP$3lLF;ds|;Z{W(Q-STa2>;)tjhR17OD|G>Q#zJHb*> zMO<{WIgB%_4MG0SQi2;%f0J8l_FH)Lfaa>*GLobD#AeMttYh4Yfg22@q4|Itq};NB z8;o*+@APqy@fPgrc&PTbGEwdEK=(x5K!If@R$NiO^7{#j9{~w=RBG)ZkbOw@$7Nhl zyp{*&QoVBd5lo{iwl2gfyip@}IirZK;ia(&ozNl!-EEYc=QpYH_= zJkv7gA{!n4up6$CrzDJIBAdC7D5D<_VLH*;OYN>_Dx3AT`K4Wyx8Tm{I+xplKP6k7 z2sb!i7)~%R#J0$|hK?~=u~rnH7HCUpsQJujDDE*GD`qrWWog+C+E~GGy|Hp_t4--} zrxtrgnPh}r=9o}P6jpAQuDN}I*GI`8&%Lp-C0IOJt#op)}XSr!ova@w{jG2V=?GXl3zEJJFXg)U3N>BQP z*Lb@%Mx|Tu;|u>$-K(q^-HG!EQ3o93%w(A7@ngGU)HRWoO&&^}U$5x+T&#zri>6ct zXOB#EF-;z3j311K`jrYyv6pOPF=*`SOz!ack=DuEi({UnAkL5H)@R?YbRKAeP|06U z?-Ns0ZxD0h9D8)P66Sq$w-yF+1hEVTaul%&=kKDrQtF<$RnQPZ)ezm1`aHIjAY=!S z`%vboP`?7mItgEo4w50C*}Ycqp9_3ZEr^F1;cEhkb`BNhbc6PvnXu@wi=AoezF4~K zkxx%ps<8zb=wJ+9I8o#do)&{(=yAlNdduaDn!=xGSiuo~fLw~Edw$6;l-qaq#Z7?# zGrdU(Cf-V@$x>O%yRc6!C1Vf`b19ly;=mEu8u9|zitcG^O`lbNh}k=$%a)UHhDwTEKis2yc4rBGR>l*(B$AC7ung&ssaZGkY-h(fpwcPyJSx*9EIJMRKbMP9}$nVrh6$g-Q^5Cw)BeWqb-qi#37ZXKL!GR;ql)~ z@PP*-oP?T|ThqlGKR84zi^CN z4TZ1A)7vL>ivoL2EU_~xl-P{p+sE}9CRwGJDKy{>0KP+gj`H9C+4fUMPnIB1_D`A- z$1`G}g0lQmqMN{Y&8R*$xYUB*V}dQPxGVZQ+rH!DVohIoTbh%#z#Tru%Px@C<=|og zGDDwGq7yz`%^?r~6t&>x*^We^tZ4!E4dhwsht#Pb1kCY{q#Kv;z%Dp#Dq;$vH$-(9 z8S5tutZ}&JM2Iw&Y-7KY4h5BBvS=Ove0#+H2qPdR)WyI zYcj)vB=MA{7T|3Ij_PN@FM@w(C9ANBq&|NoW30ccr~i#)EcH)T^3St~rJ0HKKd4wr z@_+132;Bj+>UC@h)Ap*8B4r5A1lZ!Dh%H7&&hBnlFj@eayk=VD*i5AQc z$uN8YG#PL;cuQa)Hyt-}R?&NAE1QT>svJDKt*)AQOZAJ@ zyxJoBebiobHeFlcLwu_iI&NEZuipnOR;Tn;PbT1Mt-#5v5b*8ULo7m)L-eti=UcGf zRZXidmxeFgY!y80-*PH-*=(-W+fK%KyUKpg$X@tuv``tXj^*4qq@UkW$ZrAo%+hay zU@a?z&2_@y)o@D!_g>NVxFBO!EyB&6Z!nd4=KyDP^hl!*(k{dEF6@NkXztO7gIh zQ&PC+p-8WBv;N(rpfKdF^@Z~|E6pa)M1NBUrCZvLRW$%N%xIbv^uv?=C!=dDVq3%* zgvbEBnG*JB*@vXx8>)7XL*!{1Jh=#2UrByF7U?Rj_}VYw88BwqefT_cCTv8aTrRVjnn z1HNCF=44?*&gs2`vCGJVHX@kO z240eo#z+FhI0=yy6NHQwZs}a+J~4U-6X`@ zZ7j+tb##m`x%J66$a9qXDHG&^kp|GkFFMmjD(Y-k_ClY~N$H|n@NkSDz=gg?*2ga5 z)+f)MEY>2Lp15;~o`t`qj;S>BaE;%dv@Ux11yq}I(k|o&`5UZFUHn}1kE^gIK@qV& z!S2IhyU;->VfA4Qb}m7YnkIa9%z{l~iPWo2YPk-`hy2-Eg=6E$21plQA5W2qMZDFU z-a-@Dndf%#on6chT`dOKnU9}BJo|kJwgGC<^nfo34zOKH96LbWY7@Wc%EoFF=}`VU zksP@wd%@W;-p!e^&-)N7#oR331Q)@9cx=mOoU?_Kih2!Le*8fhsZ8Qvo6t2vt+UOZ zw|mCB*t2%z21YqL>whu!j?s~}-L`OS+jdg1(XnmYw$rg~r(?5Y+qTg`$F}q3J?GtL z@BN&8#`u2RqkdG4yGGTus@7U_%{6C{XAhFE!2SelH?KtMtX@B1GBhEIDL-Bj#~{4! zd}p7!#XE9Lt;sy@p5#Wj*jf8zGv6tTotCR2X$EVOOup;GnRPRVU5A6N@Lh8?eA7k? zn~hz&gY;B0ybSpF?qwQ|sv_yO=8}zeg2$0n3A8KpE@q26)?707pPw?H76lCpjp=5r z6jjp|auXJDnW}uLb6d7rsxekbET9(=zdTqC8(F5@NNqII2+~yB;X5iJNQSiv`#ozm zf&p!;>8xAlwoxUC3DQ#!31ylK%VrcwS<$WeCY4V63V!|221oj+5#r}fGFQ}|uwC0) zNl8(CF}PD`&Sj+p{d!B&&JtC+VuH z#>US`)YQrhb6lIAYb08H22y(?)&L8MIQsA{26X`R5Km{YU)s!x(&gIsjDvq63@X`{ z=7{SiH*_ZsPME#t2m|bS76Uz*z{cpp1m|s}HIX}Ntx#v7Eo!1%G9__4dGSGl`p+xi zZ!VK#Qe;Re=9bqXuW+0DSP{uZ5-QXrNn-7qW19K0qU}OhVru7}3vqsG?#D67 zb}crN;QwsH*vymw(maZr_o|w&@sQki(X+D)gc5Bt&@iXisFG;eH@5d43~Wxq|HO(@ zV-rip4n#PEkHCWCa5d?@cQp^B;I-PzOfag|t-cuvTapQ@MWLmh*41NH`<+A+JGyKX zyYL6Ba7qqa5j@3lOk~`OMO7f0!@FaOeZxkbG@vXP(t3#U*fq8=GAPqUAS>vW2uxMk{a(<0=IxB;# zMW;M+owrHaZBp`3{e@7gJCHP!I(EeyGFF;pdFPdeP+KphrulPSVidmg#!@W`GpD&d z9p6R`dpjaR2E1Eg)Ws{BVCBU9-aCgN57N~uLvQZH`@T+2eOBD%73rr&sV~m#2~IZx zY_8f8O;XLu2~E3JDXnGhFvsyb^>*!D>5EtlKPe%kOLv6*@=Jpci`8h0z?+fbBUg_7 zu6DjqO=$SjAv{|Om5)nz41ZkS4E_|fk%NDY509VV5yNeo%O|sb>7C#wj8mL9cEOFh z>nDz%?vb!h*!0dHdnxDA>97~EoT~!N40>+)G2CeYdOvJr5^VnkGz)et&T9hrD(VAgCAJjQ7V$O?csICB*HFd^k@$M5*v$PZJD-OVL?Ze(U=XGqZPVG8JQ z<~ukO%&%nNXYaaRibq#B1KfW4+XMliC*Tng2G(T1VvP;2K~;b$EAqthc${gjn_P!b zs62UT(->A>!ot}cJXMZHuy)^qfqW~xO-In2);e>Ta{LD6VG2u&UT&a@>r-;4<)cJ9 zjpQThb4^CY)Ev0KR7TBuT#-v}W?Xzj{c7$S5_zJA57Qf=$4^npEjl9clH0=jWO8sX z3Fuu0@S!WY>0XX7arjH`?)I<%2|8HfL!~#c+&!ZVmhbh`wbzy0Ux|Jpy9A{_7GGB0 zadZ48dW0oUwUAHl%|E-Q{gA{z6TXsvU#Hj09<7i)d}wa+Iya)S$CVwG{4LqtB>w%S zKZx(QbV7J9pYt`W4+0~f{hoo5ZG<0O&&5L57oF%hc0xGJ@Zrg_D&lNO=-I^0y#3mxCSZFxN2-tN_mU@7<@PnWG?L5OSqkm8TR!`| zRcTeWH~0z1JY^%!N<(TtxSP5^G9*Vw1wub`tC-F`=U)&sJVfvmh#Pi`*44kSdG};1 zJbHOmy4Ot|%_?@$N?RA9fF?|CywR8Sf(SCN_luM8>(u0NSEbKUy7C(Sk&OuWffj)f za`+mo+kM_8OLuCUiA*CNE|?jra$M=$F3t+h-)?pXz&r^F!ck;r##`)i)t?AWq-9A9 zSY{m~TC1w>HdEaiR*%j)L);H{IULw)uxDO>#+WcBUe^HU)~L|9#0D<*Ld459xTyew zbh5vCg$a>`RCVk)#~ByCv@Ce!nm<#EW|9j><#jQ8JfTmK#~jJ&o0Fs9jz0Ux{svdM4__<1 zrb>H(qBO;v(pXPf5_?XDq!*3KW^4>(XTo=6O2MJdM^N4IIcYn1sZZpnmMAEdt}4SU zPO54j2d|(xJtQ9EX-YrlXU1}6*h{zjn`in-N!Ls}IJsG@X&lfycsoCemt_Ym(PXhv zc*QTnkNIV=Ia%tg%pwJtT^+`v8ng>;2~ps~wdqZSNI7+}-3r+#r6p`8*G;~bVFzg= z!S3&y)#iNSUF6z;%o)%h!ORhE?CUs%g(k2a-d576uOP2@QwG-6LT*G!I$JQLpd`cz z-2=Brr_+z96a0*aIhY2%0(Sz=|D`_v_7h%Yqbw2)8@1DwH4s*A82krEk{ zoa`LbCdS)R?egRWNeHV8KJG0Ypy!#}kslun?67}^+J&02!D??lN~t@;h?GS8#WX`)6yC**~5YNhN_Hj}YG<%2ao^bpD8RpgV|V|GQwlL27B zEuah|)%m1s8C6>FLY0DFe9Ob66fo&b8%iUN=y_Qj;t3WGlNqP9^d#75ftCPA*R4E8 z)SWKBKkEzTr4JqRMEs`)0;x8C35yRAV++n(Cm5++?WB@ya=l8pFL`N0ag`lWhrYo3 zJJ$< zQ*_YAqIGR*;`VzAEx1Pd4b3_oWtdcs7LU2#1#Ls>Ynvd8k^M{Ef?8`RxA3!Th-?ui{_WJvhzY4FiPxA?E4+NFmaC-Uh*a zeLKkkECqy>Qx&1xxEhh8SzMML=8VP}?b*sgT9ypBLF)Zh#w&JzP>ymrM?nnvt!@$2 zh>N$Q>mbPAC2kNd&ab;FkBJ}39s*TYY0=@e?N7GX>wqaM>P=Y12lciUmve_jMF0lY zBfI3U2{33vWo(DiSOc}!5##TDr|dgX1Uojq9!vW3$m#zM_83EGsP6&O`@v-PDdO3P z>#!BEbqpOXd5s?QNnN!p+92SHy{sdpePXHL{d@c6UilT<#~I!tH$S(~o}c#(j<2%! zQvm}MvAj-95Ekx3D4+|e%!?lO(F+DFw9bxb-}rsWQl)b44###eUg4N?N-P(sFH2hF z`{zu?LmAxn2=2wCE8?;%ZDi#Y;Fzp+RnY8fWlzVz_*PDO6?Je&aEmuS>=uCXgdP6r zoc_JB^TA~rU5*geh{G*gl%_HnISMS~^@{@KVC;(aL^ZA-De+1zwUSXgT>OY)W?d6~ z72znET0m`53q%AVUcGraYxIcAB?OZA8AT!uK8jU+=t;WneL~|IeQ>$*dWa#x%rB(+ z5?xEkZ&b{HsZ4Ju9TQ|)c_SIp`7r2qMJgaglfSBHhl)QO1aNtkGr0LUn{@mvAt=}nd7#>7ru}&I)FNsa*x?Oe3-4G`HcaR zJ}c%iKlwh`x)yX1vBB;-Nr=7>$~(u=AuPX2#&Eh~IeFw%afU+U)td0KC!pHd zyn+X$L|(H3uNit-bpn7%G%{&LsAaEfEsD?yM<;U2}WtD4KuVKuX=ec9X zIe*ibp1?$gPL7<0uj*vmj2lWKe`U(f9E{KVbr&q*RsO;O>K{i-7W)8KG5~~uS++56 zm@XGrX@x+lGEjDQJp~XCkEyJG5Y57omJhGN{^2z5lj-()PVR&wWnDk2M?n_TYR(gM zw4kQ|+i}3z6YZq8gVUN}KiYre^sL{ynS}o{z$s&I z{(rWaLXxcQ=MB(Cz7W$??Tn*$1y(7XX)tv;I-{7F$fPB%6YC7>-Dk#=Y8o1=&|>t5 zV_VVts>Eb@)&4%m}!K*WfLoLl|3FW)V~E1Z!yu`Sn+bAP5sRDyu7NEbLt?khAyz-ZyL-}MYb&nQ zU16f@q7E1rh!)d%f^tTHE3cVoa%Xs%rKFc|temN1sa)aSlT*)*4k?Z>b3NP(IRXfq zlB^#G6BDA1%t9^Nw1BD>lBV(0XW5c?l%vyB3)q*;Z5V~SU;HkN;1kA3Nx!$!9wti= zB8>n`gt;VlBt%5xmDxjfl0>`K$fTU-C6_Z;!A_liu0@Os5reMLNk;jrlVF^FbLETI zW+Z_5m|ozNBn7AaQ<&7zk}(jmEdCsPgmo%^GXo>YYt82n&7I-uQ%A;k{nS~VYGDTn zlr3}HbWQG6xu8+bFu^9%%^PYCbkLf=*J|hr>Sw+#l(Y#ZGKDufa#f-f0k-{-XOb4i zwVG1Oa0L2+&(u$S7TvedS<1m45*>a~5tuOZ;3x%!f``{=2QQlJk|b4>NpD4&L+xI+ z+}S(m3}|8|Vv(KYAGyZK5x*sgwOOJklN0jsq|BomM>OuRDVFf_?cMq%B*iQ*&|vS9 zVH7Kh)SjrCBv+FYAE=$0V&NIW=xP>d-s7@wM*sdfjVx6-Y@=~>rz%2L*rKp|*WXIz z*vR^4tV&7MQpS9%{9b*>E9d_ls|toL7J|;srnW{l-}1gP_Qr-bBHt=}PL@WlE|&KH zCUmDLZb%J$ZzNii-5VeygOM?K8e$EcK=z-hIk63o4y63^_*RdaitO^THC{boKstphXZ2Z+&3ToeLQUG(0Frs?b zCxB+65h7R$+LsbmL51Kc)pz_`YpGEzFEclzb=?FJ=>rJwgcp0QH-UuKRS1*yCHsO) z-8t?Zw|6t($Eh&4K+u$I7HqVJBOOFCRcmMMH};RX_b?;rnk`rz@vxT_&|6V@q0~Uk z9ax|!pA@Lwn8h7syrEtDluZ6G!;@=GL> zse#PRQrdDs=qa_v@{Wv(3YjYD0|qocDC;-F~&{oaTP?@pi$n z1L6SlmFU2~%)M^$@C(^cD!y)-2SeHo3t?u3JiN7UBa7E2 z;<+_A$V084@>&u)*C<4h7jw9joHuSpVsy8GZVT;(>lZ(RAr!;)bwM~o__Gm~exd`K zKEgh2)w?ReH&syI`~;Uo4`x4$&X+dYKI{e`dS~bQuS|p zA`P_{QLV3r$*~lb=9vR^H0AxK9_+dmHX}Y} zIV*#65%jRWem5Z($ji{!6ug$En4O*=^CiG=K zp4S?+xE|6!cn$A%XutqNEgUqYY3fw&N(Z6=@W6*bxdp~i_yz5VcgSj=lf-6X1Nz75 z^DabwZ4*70$$8NsEy@U^W67tcy7^lNbu;|kOLcJ40A%J#pZe0d#n zC{)}+p+?8*ftUlxJE*!%$`h~|KZSaCb=jpK3byAcuHk7wk@?YxkT1!|r({P*KY^`u z!hw#`5$JJZGt@nkBK_nwWA31_Q9UGvv9r-{NU<&7HHMQsq=sn@O?e~fwl20tnSBG* zO%4?Ew6`aX=I5lqmy&OkmtU}bH-+zvJ_CFy z_nw#!8Rap5Wcex#5}Ldtqhr_Z$}@jPuYljTosS1+WG+TxZ>dGeT)?ZP3#3>sf#KOG z0)s%{cEHBkS)019}-1A2kd*it>y65-C zh7J9zogM74?PU)0c0YavY7g~%j%yiWEGDb+;Ew5g5Gq@MpVFFBNOpu0x)>Yn>G6uo zKE%z1EhkG_N5$a8f6SRm(25iH#FMeaJ1^TBcBy<04ID47(1(D)q}g=_6#^V@yI?Y&@HUf z`;ojGDdsvRCoTmasXndENqfWkOw=#cV-9*QClpI03)FWcx(m5(P1DW+2-{Hr-`5M{v##Zu-i-9Cvt;V|n)1pR^y ztp3IXzHjYWqabuPqnCY9^^;adc!a%Z35VN~TzwAxq{NU&Kp35m?fw_^D{wzB}4FVXX5Zk@#={6jRh%wx|!eu@Xp;%x+{2;}!&J4X*_SvtkqE#KDIPPn@ z5BE$3uRlb>N<2A$g_cuRQM1T#5ra9u2x9pQuqF1l2#N{Q!jVJ<>HlLeVW|fN|#vqSnRr<0 zTVs=)7d`=EsJXkZLJgv~9JB&ay16xDG6v(J2eZy;U%a@EbAB-=C?PpA9@}?_Yfb&) zBpsih5m1U9Px<+2$TBJ@7s9HW>W){i&XKLZ_{1Wzh-o!l5_S+f$j^RNYo85}uVhN# zq}_mN-d=n{>fZD2Lx$Twd2)}X2ceasu91}n&BS+4U9=Y{aZCgV5# z?z_Hq-knIbgIpnkGzJz-NW*=p?3l(}y3(aPCW=A({g9CpjJfYuZ%#Tz81Y)al?!S~ z9AS5#&nzm*NF?2tCR#|D-EjBWifFR=da6hW^PHTl&km-WI9*F4o>5J{LBSieVk`KO z2(^9R(zC$@g|i3}`mK-qFZ33PD34jd_qOAFj29687wCUy>;(Hwo%Me&c=~)V$ua)V zsaM(aThQ3{TiM~;gTckp)LFvN?%TlO-;$y+YX4i`SU0hbm<})t0zZ!t1=wY&j#N>q zONEHIB^RW6D5N*cq6^+?T}$3m|L{Fe+L!rxJ=KRjlJS~|z-&CC{#CU8`}2|lo~)<| zk?Wi1;Cr;`?02-C_3^gD{|Ryhw!8i?yx5i0v5?p)9wZxSkwn z3C;pz25KR&7{|rc4H)V~y8%+6lX&KN&=^$Wqu+}}n{Y~K4XpI-#O?L=(2qncYNePX zTsB6_3`7q&e0K67=Kg7G=j#?r!j0S^w7;0?CJbB3_C4_8X*Q%F1%cmB{g%XE&|IA7 z(#?AeG{l)s_orNJp!$Q~qGrj*YnuKlV`nVdg4vkTNS~w$4d^Oc3(dxi(W5jq0e>x} z(GN1?u2%Sy;GA|B%Sk)ukr#v*UJU%(BE9X54!&KL9A^&rR%v zIdYt0&D59ggM}CKWyxGS@ z>T#})2Bk8sZMGJYFJtc>D#k0+Rrrs)2DG;(u(DB_v-sVg=GFMlSCx<&RL;BH}d6AG3VqP!JpC0Gv6f8d|+7YRC@g|=N=C2 zo>^0CE0*RW?W))S(N)}NKA)aSwsR{1*rs$(cZIs?nF9)G*bSr%%SZo^YQ|TSz={jX z4Z+(~v_>RH0(|IZ-_D_h@~p_i%k^XEi+CJVC~B zsPir zA0Jm2yIdo4`&I`hd%$Bv=Rq#-#bh{Mxb_{PN%trcf(#J3S1UKDfC1QjH2E;>wUf5= ze8tY9QSYx0J;$JUR-0ar6fuiQTCQP#P|WEq;Ez|*@d?JHu-(?*tTpGHC+=Q%H>&I> z*jC7%nJIy+HeoURWN%3X47UUusY2h7nckRxh8-)J61Zvn@j-uPA@99|y48pO)0XcW zX^d&kW^p7xsvdX?2QZ8cEUbMZ7`&n{%Bo*xgFr4&fd#tHOEboQos~xm8q&W;fqrj} z%KYnnE%R`=`+?lu-O+J9r@+$%YnqYq!SVs>xp;%Q8p^$wA~oynhnvIFp^)Z2CvcyC zIN-_3EUHW}1^VQ0;Oj>q?mkPx$Wj-i7QoXgQ!HyRh6Gj8p~gH22k&nmEqUR^)9qni{%uNeV{&0-H60C zibHZtbV=8=aX!xFvkO}T@lJ_4&ki$d+0ns3FXb+iP-VAVN`B7f-hO)jyh#4#_$XG%Txk6M<+q6D~ zi*UcgRBOoP$7P6RmaPZ2%MG}CMfs=>*~(b97V4+2qdwvwA@>U3QQAA$hiN9zi%Mq{ z*#fH57zUmi)GEefh7@`Uy7?@@=BL7cXbd{O9)*lJh*v!@ z-6}p9u0AreiGauxn7JBEa-2w&d=!*TLJ49`U@D7%2ppIh)ynMaAE2Q4dl@47cNu{9 z&3vT#pG$#%hrXzXsj=&Ss*0;W`Jo^mcy4*L8b^sSi;H{*`zW9xX2HAtQ*sO|x$c6UbRA(7*9=;D~(%wfo(Z6#s$S zuFk`dr%DfVX5KC|Af8@AIr8@OAVj=6iX!~8D_P>p7>s!Hj+X0_t}Y*T4L5V->A@Zx zcm1wN;TNq=h`5W&>z5cNA99U1lY6+!!u$ib|41VMcJk8`+kP{PEOUvc@2@fW(bh5pp6>C3T55@XlpsAd#vn~__3H;Dz2w=t9v&{v*)1m4)vX;4 zX4YAjM66?Z7kD@XX{e`f1t_ZvYyi*puSNhVPq%jeyBteaOHo7vOr8!qqp7wV;)%jtD5>}-a?xavZ;i|2P3~7c)vP2O#Fb`Y&Kce zQNr7%fr4#S)OOV-1piOf7NgQvR{lcvZ*SNbLMq(olrdDC6su;ubp5un!&oT=jVTC3uTw7|r;@&y*s)a<{J zkzG(PApmMCpMmuh6GkM_`AsBE@t~)EDcq1AJ~N@7bqyW_i!mtHGnVgBA`Dxi^P93i z5R;}AQ60wy=Q2GUnSwz+W6C^}qn`S-lY7=J(3#BlOK%pCl=|RVWhC|IDj1E#+|M{TV0vE;vMZLy7KpD1$Yk zi0!9%qy8>CyrcRK`juQ)I};r)5|_<<9x)32b3DT1M`>v^ld!yabX6@ihf`3ZVTgME zfy(l-ocFuZ(L&OM4=1N#Mrrm_<>1DZpoWTO70U8+x4r3BpqH6z@(4~sqv!A9_L}@7 z7o~;|?~s-b?ud&Wx6==9{4uTcS|0-p@dKi0y#tPm2`A!^o3fZ8Uidxq|uz2vxf;wr zM^%#9)h^R&T;}cxVI(XX7kKPEVb);AQO?cFT-ub=%lZPwxefymBk+!H!W(o(>I{jW z$h;xuNUr#^0ivvSB-YEbUqe$GLSGrU$B3q28&oA55l)ChKOrwiTyI~e*uN;^V@g-Dm4d|MK!ol8hoaSB%iOQ#i_@`EYK_9ZEjFZ8Ho7P^er z^2U6ZNQ{*hcEm?R-lK)pD_r(e=Jfe?5VkJ$2~Oq^7YjE^5(6a6Il--j@6dBHx2Ulq z!%hz{d-S~i9Eo~WvQYDt7O7*G9CP#nrKE#DtIEbe_uxptcCSmYZMqT2F}7Kw0AWWC zPjwo0IYZ6klc(h9uL|NY$;{SGm4R8Bt^^q{e#foMxfCSY^-c&IVPl|A_ru!ebwR#7 z3<4+nZL(mEsU}O9e`^XB4^*m)73hd04HH%6ok^!;4|JAENnEr~%s6W~8KWD)3MD*+ zRc46yo<}8|!|yW-+KulE86aB_T4pDgL$XyiRW(OOcnP4|2;v!m2fB7Hw-IkY#wYfF zP4w;k-RInWr4fbz=X$J;z2E8pvAuy9kLJUSl8_USi;rW`kZGF?*Ur%%(t$^{Rg!=v zg;h3@!Q$eTa7S0#APEDHLvK%RCn^o0u!xC1Y0Jg!Baht*a4mmKHy~88md{YmN#x) zBOAp_i-z2h#V~*oO-9k(BizR^l#Vm%uSa^~3337d;f=AhVp?heJ)nlZGm`}D(U^2w z#vC}o1g1h?RAV^90N|Jd@M00PoNUPyA?@HeX0P7`TKSA=*4s@R;Ulo4Ih{W^CD{c8 ze(ipN{CAXP(KHJ7UvpOc@9SUAS^wKo3h-}BDZu}-qjdNlVtp^Z{|CxKOEo?tB}-4; zEXyDzGbXttJ3V$lLo-D?HYwZm7vvwdRo}P#KVF>F|M&eJ44n*ZO~0)#0e0Vy&j00I z{%IrnUvKp70P?>~J^$^0Wo%>le>re2ZSvRfes@dC-*e=DD1-j%<$^~4^4>Id5w^Fr z{RWL>EbUCcyC%1980kOYqZAcgdz5cS8c^7%vvrc@CSPIx;X=RuodO2dxk17|am?HJ@d~Mp_l8H?T;5l0&WGFoTKM{eP!L-a0O8?w zgBPhY78tqf^+xv4#OK2I#0L-cSbEUWH2z+sDur85*!hjEhFfD!i0Eyr-RRLFEm5(n z-RV6Zf_qMxN5S6#8fr9vDL01PxzHr7wgOn%0Htmvk9*gP^Um=n^+7GLs#GmU&a#U^4jr)BkIubQO7oUG!4CneO2Ixa`e~+Jp9m{l6apL8SOqA^ zvrfEUPwnHQ8;yBt!&(hAwASmL?Axitiqvx%KZRRP?tj2521wyxN3ZD9buj4e;2y6U zw=TKh$4%tt(eh|y#*{flUJ5t4VyP*@3af`hyY^YU3LCE3Z|22iRK7M7E;1SZVHbXF zKVw!L?2bS|kl7rN4(*4h2qxyLjWG0vR@`M~QFPsf^KParmCX;Gh4OX6Uy9#4e_%oK zv1DRnfvd$pu(kUoV(MmAc09ckDiuqS$a%!AQ1Z>@DM#}-yAP$l`oV`BDYpkqpk(I|+qk!yoo$TwWr6dRzLy(c zi+qbVlYGz0XUq@;Fm3r~_p%by)S&SVWS+wS0rC9bk^3K^_@6N5|2rtF)wI>WJ=;Fz zn8$h<|Dr%kN|nciMwJAv;_%3XG9sDnO@i&pKVNEfziH_gxKy{l zo`2m4rnUT(qenuq9B0<#Iy(RPxP8R)=5~9wBku=%&EBoZ82x1GlV<>R=hIqf0PK!V zw?{z9e^B`bGyg2nH!^x}06oE%J_JLk)^QyHLipoCs2MWIqc>vaxsJj(=gg1ZSa=u{ zt}od#V;e7sA4S(V9^<^TZ#InyVBFT(V#$fvI7Q+pgsr_2X`N~8)IOZtX}e(Bn(;eF zsNj#qOF_bHl$nw5!ULY{lNx@93Fj}%R@lewUuJ*X*1$K`DNAFpE z7_lPE+!}uZ6c?+6NY1!QREg#iFy=Z!OEW}CXBd~wW|r_9%zkUPR0A3m+@Nk%4p>)F zXVut7$aOZ6`w}%+WV$te6-IX7g2yms@aLygaTlIv3=Jl#Nr}nN zp|vH-3L03#%-1-!mY`1z?+K1E>8K09G~JcxfS)%DZbteGQnQhaCGE2Y<{ut#(k-DL zh&5PLpi9x3$HM82dS!M?(Z zEsqW?dx-K_GMQu5K54pYJD=5+Rn&@bGjB?3$xgYl-|`FElp}?zP&RAd<522c$Rv6} zcM%rYClU%JB#GuS>FNb{P2q*oHy}UcQ-pZ2UlT~zXt5*k-ZalE(`p7<`0n7i(r2k{ zb84&^LA7+aW1Gx5!wK!xTbw0slM?6-i32CaOcLC2B>ZRI16d{&-$QBEu1fKF0dVU>GTP05x2>Tmdy`75Qx! z^IG;HB9V1-D5&&)zjJ&~G}VU1-x7EUlT3QgNT<&eIDUPYey$M|RD6%mVkoDe|;2`8Z+_{0&scCq>Mh3hj|E*|W3;y@{$qhu77D)QJ` znD9C1AHCKSAHQqdWBiP`-cAjq7`V%~JFES1=i-s5h6xVT<50kiAH_dn0KQB4t*=ua zz}F@mcKjhB;^7ka@WbSJFZRPeYI&JFkpJ-!B z!ju#!6IzJ;D@$Qhvz9IGY5!%TD&(db3<*sCpZ?U#1^9RWQ zs*O-)j!E85SMKtoZzE^8{w%E0R0b2lwwSJ%@E}Lou)iLmPQyO=eirG8h#o&E4~eew z;h><=|4m0$`ANTOixHQOGpksXlF0yy17E&JksB4_(vKR5s$Ve+i;gco2}^RRJI+~R zWJ82WGigLIUwP!uSELh3AAs9HmY-kz=_EL-w|9}noKE#(a;QBpEx9 z4BT-zY=6dJT>72Hkz=9J1E=}*MC;zzzUWb@x(Ho8cU_aRZ?fxse5_Ru2YOvcr?kg&pt@v;{ai7G--k$LQtoYj+Wjk+nnZty;XzANsrhoH#7=xVqfPIW(p zX5{YF+5=k4_LBnhLUZxX*O?29olfPS?u*ybhM_y z*XHUqM6OLB#lyTB`v<BZ&YRs$N)S@5Kn_b3;gjz6>fh@^j%y2-ya({>Hd@kv{CZZ2e)tva7gxLLp z`HoGW);eRtov~Ro5tetU2y72~ zQh>D`@dt@s^csdfN-*U&o*)i3c4oBufCa0e|BwT2y%Y~=U7A^ny}tx zHwA>Wm|!SCko~UN?hporyQHRUWl3djIc722EKbTIXQ6>>iC!x+cq^sUxVSj~u)dsY zW8QgfZlE*2Os%=K;_vy3wx{0u!2%A)qEG-$R^`($%AOfnA^LpkB_}Dd7AymC)zSQr z>C&N8V57)aeX8ap!|7vWaK6=-3~ko9meugAlBKYGOjc#36+KJwQKRNa_`W@7;a>ot zdRiJkz?+QgC$b}-Owzuaw3zBVLEugOp6UeMHAKo2$m4w zpw?i%Lft^UtuLI}wd4(-9Z^*lVoa}11~+0|Hs6zAgJ01`dEA&^>Ai=mr0nC%eBd_B zzgv2G_~1c1wr*q@QqVW*Wi1zn=}KCtSwLjwT>ndXE_Xa22HHL_xCDhkM( zhbw+j4uZM|r&3h=Z#YrxGo}GX`)AZyv@7#7+nd-D?BZV>thtc|3jt30j$9{aIw9)v zDY)*fsSLPQTNa&>UL^RWH(vpNXT7HBv@9=*=(Q?3#H*crA2>KYx7Ab?-(HU~a275)MBp~`P)hhzSsbj|d`aBe(L*(;zif{iFJu**ZR zkL-tPyh!#*r-JVQJq>5b0?cCy!uSKef+R=$s3iA7*k*_l&*e!$F zYwGI;=S^0)b`mP8&Ry@{R(dPfykD&?H)na^ihVS7KXkxb36TbGm%X1!QSmbV9^#>A z-%X>wljnTMU0#d;tpw?O1W@{X-k*>aOImeG z#N^x?ehaaQd}ReQykp>i;92q@%$a!y1PNyPYDIvMm& zyYVwn;+0({W@3h(r&i#FuCDE)AC(y&Vu>4?1@j0|CWnhHUx4|zL7cdaA32RSk?wl% zMK^n42@i5AU>f70(huWfOwaucbaToxj%+)7hnG^CjH|O`A}+GHZyQ-X57(WuiyRXV zPf>0N3GJ<2Myg!sE4XJY?Z7@K3ZgHy8f7CS5ton0Eq)Cp`iLROAglnsiEXpnI+S8; zZn>g2VqLxi^p8#F#Laf3<00AcT}Qh&kQnd^28u!9l1m^`lfh9+5$VNv=?(~Gl2wAl zx(w$Z2!_oESg_3Kk0hUsBJ<;OTPyL(?z6xj6LG5|Ic4II*P+_=ac7KRJZ`(k2R$L# zv|oWM@116K7r3^EL*j2ktjEEOY9c!IhnyqD&oy7+645^+@z5Y|;0+dyR2X6^%7GD* zXrbPqTO}O={ z4cGaI#DdpP;5u?lcNb($V`l>H7k7otl_jQFu1hh>=(?CTPN#IPO%O_rlVX}_Nq;L< z@YNiY>-W~&E@=EC5%o_z<^3YEw)i_c|NXxHF{=7U7Ev&C`c^0Z4-LGKXu*Hkk&Av= zG&RAv{cR7o4${k~f{F~J48Ks&o(D@j-PQ2`LL@I~b=ifx3q!p6`d>~Y!<-^mMk3)e zhi1;(YLU5KH}zzZNhl^`0HT(r`5FfmDEzxa zk&J7WQ|!v~TyDWdXQ)!AN_Y%xM*!jv^`s)A`|F%;eGg27KYsrCE2H}7*r)zvum6B{ z$k5Har9pv!dcG%f|3hE(#hFH+12RZPycVi?2y`-9I7JHryMn3 z9Y8?==_(vOAJ7PnT<0&85`_jMD0#ipta~Q3M!q5H1D@Nj-YXI$W%OQplM(GWZ5Lpq z-He6ul|3<;ZQsqs!{Y7x`FV@pOQc4|N;)qgtRe(Uf?|YqZv^$k8On7DJ5>f2%M=TV zw~x}9o=mh$JVF{v4H5Su1pq66+mhTG6?F>Do}x{V(TgFwuLfvNP^ijkrp5#s4UT!~ zEU7pr8aA)2z1zb|X9IpmJykQcqI#(rS|A4&=TtWu@g^;JCN`2kL}%+K!KlgC z>P)v+uCeI{1KZpewf>C=?N7%1e10Y3pQCZST1GT5fVyB1`q)JqCLXM zSN0qlreH1=%Zg-5`(dlfSHI&2?^SQdbEE&W4#%Eve2-EnX>NfboD<2l((>>34lE%) zS6PWibEvuBG7)KQo_`?KHSPk+2P;`}#xEs}0!;yPaTrR#j(2H|#-CbVnTt_?9aG`o z(4IPU*n>`cw2V~HM#O`Z^bv|cK|K};buJ|#{reT8R)f+P2<3$0YGh!lqx3&a_wi2Q zN^U|U$w4NP!Z>5|O)>$GjS5wqL3T8jTn%Vfg3_KnyUM{M`?bm)9oqZP&1w1)o=@+(5eUF@=P~ zk2B5AKxQ96n-6lyjh&xD!gHCzD$}OOdKQQk7LXS-fk2uy#h{ktqDo{o&>O!6%B|)` zg?|JgcH{P*5SoE3(}QyGc=@hqlB5w;bnmF#pL4iH`TSuft$dE5j^qP2S)?)@pjRQZ zBfo6g>c!|bN-Y|(Wah2o61Vd|OtXS?1`Fu&mFZ^yzUd4lgu7V|MRdGj3e#V`=mnk- zZ@LHn?@dDi=I^}R?}mZwduik!hC%=Hcl56u{Wrk1|1SxlgnzG&e7Vzh*wNM(6Y!~m z`cm8Ygc1$@z9u9=m5vs1(XXvH;q16fxyX4&e5dP-{!Kd555FD6G^sOXHyaCLka|8j zKKW^E>}>URx736WWNf?U6Dbd37Va3wQkiE;5F!quSnVKnmaIRl)b5rM_ICu4txs+w zj}nsd0I_VG^<%DMR8Zf}vh}kk;heOQTbl ziEoE;9@FBIfR7OO9y4Pwyz02OeA$n)mESpj zdd=xPwA`nO06uGGsXr4n>Cjot7m^~2X~V4yH&- zv2llS{|und45}Pm1-_W@)a-`vFBpD~>eVP(-rVHIIA|HD@%7>k8JPI-O*<7X{L*Ik zh^K`aEN!BteiRaY82FVo6<^8_22=aDIa8P&2A3V<(BQ;;x8Zs-1WuLRWjQvKv1rd2 zt%+fZ!L|ISVKT?$3iCK#7whp|1ivz1rV*R>yc5dS3kIKy_0`)n*%bfNyw%e7Uo}Mnnf>QwDgeH$X5eg_)!pI4EJjh6?kkG2oc6Af0py z(txE}$ukD|Zn=c+R`Oq;m~CSY{ebu9?!is}01sOK_mB?{lSY33E=!KkKtMeI*FO2b z%95awv9;Z|UDp3xm+aP*5I!R-_M2;GxeCRx3ATS0iF<_Do2Mi)Hk2 zjBF35VB>(oamIYjunu?g0O-?LuOvtfs5F(iiIicbu$HMPPF%F>pE@hIRjzT)>aa=m zwe;H9&+2|S!m74!E3xfO{l3E_ab`Q^tZ4yH9=~o2DUEtEMDqG=&D*8!>?2uao%w`&)THr z^>=L3HJquY>6)>dW4pCWbzrIB+>rdr{s}}cL_?#!sOPztRwPm1B=!jP7lQG|Iy6rP zVqZDNA;xaUx&xUt?Ox|;`9?oz`C0#}mc<1Urs#vTW4wd{1_r`eX=BeSV z_9WV*9mz>PH6b^z{VYQJ1nSTSqOFHE9u>cY)m`Q>=w1NzUShxcHsAxasnF2BG;NQ; zqL1tjLjImz_`q=|bAOr_i5_NEijqYZ^;d5y3ZFj6kCYakJh**N_wbfH;ICXq?-p#r z{{ljNDPSytOaG#7=yPmA&5gyYI%^7pLnMOw-RK}#*dk=@usL;|4US?{@K%7esmc&n z5$D*+l&C9)Bo@$d;Nwipd!68&+NnOj^<~vRcKLX>e03E|;to;$ndgR;9~&S-ly5gf z{rzj+j-g$;O|u?;wwxrEpD=8iFzUHQfl{B>bLHqH(9P zI59SS2PEBE;{zJUlcmf(T4DrcO?XRWR}?fekN<($1&AJTRDyW+D*2(Gyi?Qx-i}gy z&BpIO!NeVdLReO!YgdUfnT}7?5Z#~t5rMWqG+$N2n%5o#Np6ccNly}#IZQsW4?|NV zR9hrcyP(l#A+U4XcQvT;4{#i)dU>HK>aS!k1<3s2LyAhm2(!Nu%vRC9T`_yn9D+r} z1i&U~IcQ?4xhZYyH6WL-f%}qIhZkc&}n2N0PM| z6|XA9d-y;!`D{p;xu*gv7a|zaZ*MiQ)}zPzW4GB0mr)}N-DmB&hl1&x`2@sxN572_ zS)RdJyR%<7kW0v3Q_|57JKy&9tUdbqz}|hwn84}U*0r^jt6Ssrp+#1y=JBcZ+F`f(N?O0XL1OFGN`1-r?S<#t4*C9|y~e)!UYZ zRQ3M8m%~M)VriIvn~XzoP;5qeu(ZI>Y#r zAd)J)G9)*BeE%gmm&M@Olg3DI_zokjh9NvdGbT z+u4(Y&uC6tBBefIg~e=J#8i1Zxr>RT)#rGaB2C71usdsT=}mm`<#WY^6V{L*J6v&l z1^Tkr6-+^PA)yC;s1O^3Q!)Reb=fxs)P~I*?i&j{Vbb(Juc?La;cA5(H7#FKIj0Or zgV0BO{DUs`I9HgQ{-!g@5P^Vr|C4}~w6b=#`Zx0XcVSd?(04HUHwK(gJNafgQNB9Z zCi3TgNXAeJ+x|X|b@27$RxuYYuNSUBqo#uyiH6H(b~K*#!@g__4i%HP5wb<+Q7GSb zTZjJw96htUaGZ89$K_iBo4xEOJ#DT#KRu9ozu!GH0cqR>hP$nk=KXM%Y!(%vWQ#}s zy=O#BZ>xjUejMH^F39Bf0}>D}yiAh^toa-ts#gt6Mk9h1D<9_mGMBhLT0Ce2O3d_U znaTkBaxd-8XgwSp5)x-pqX5=+{cSuk6kyl@k|5DQ!5zLUVV%1X9vjY0gerbuG6nwZu5KDMdq(&UMLZ zy?jW#F6joUtVyz`Y?-#Yc0=i*htOFwQ3`hk$8oq35D}0m$FAOp#UFTV3|U3F>@N?d zeXLZCZjRC($%?dz(41e~)CN10qjh^1CdAcY(<=GMGk@`b1ptA&L*{L@_M{%Vd5b*x#b1(qh=7((<_l%ZUaHtmgq} zjchBdiis{Afxf@3CjPR09E*2#X(`W#-n`~6PcbaL_(^3tfDLk?Nb6CkW9v!v#&pWJ3iV-9hz zngp#Q`w`r~2wt&cQ9#S7z0CA^>Mzm7fpt72g<0y-KT{G~l-@L#edmjZQ}7{*$mLgSdJfS$Ge{hrD=mr;GD)uYq8}xS zT>(w_;}894Kb}(P5~FOpFIEjadhmxD(PsZbKwa-qxVa7Oc7~ebPKMeN(pCRzq8s@l z`|l^*X1eK1+Spz--WkSW_nK`Cs@JmkY4+p=U91nJoy{tSH;TzuIyS)Q_(S@;Iakua zpuDo5W54Mo;jY@Ly1dY)j|+M%$FJ0`C=FW#%UvOd&?p}0QqL20Xt!#pr8ujy6CA-2 zFz6Ex5H1i)c9&HUNwG{8K%FRK7HL$RJwvGakleLLo}tsb>t_nBCIuABNo$G--_j!gV&t8L^4N6wC|aLC)l&w04CD6Vc#h^(YH@Zs4nwUGkhc_-yt{dK zMZ<%$swLmUl8`E~RLihGt@J5v;r;vT&*Q!Cx zZ55-zpb;W7_Q{tf$mQvF61(K>kwTq0x{#Din||)B{+6O#ArLi)kiHWVC4`fOT&B(h zw&YV`J1|^FLx~9Q%r-SFhYl4PywI7sF2Q$>4o50~dfp5nn}XHv-_DM?RGs#+4gM;% znU>k=81G~f6u%^Z{bcX&sUv*h|L+|mNq=W43y@{~C zpL-TW3hYPs0^*OqS#KQwA^CGG_A-6#`_{1LBCD&*3nY0UHWJj1D|VP%oQlFxLllaA zVI@2^)HZ%E*=RbQcFOKIP7?+|_xVK+2oG(t_EGl2y;Ovox zZb^qVpe!4^reKvpIBFzx;Ji=PmrV>uu-Hb>`s?k?YZQ?>av45>i(w0V!|n?AP|v5H zm`e&Tgli#lqGEt?=(?~fy<(%#nDU`O@}Vjib6^rfE2xn;qgU6{u36j_+Km%v*2RLnGpsvS+THbZ>p(B zgb{QvqE?~50pkLP^0(`~K& zjT=2Pt2nSnwmnDFi2>;*C|OM1dY|CAZ5R|%SAuU|5KkjRM!LW_)LC*A zf{f>XaD+;rl6Y>Umr>M8y>lF+=nSxZX_-Z7lkTXyuZ(O6?UHw^q; z&$Zsm4U~}KLWz8>_{p*WQ!OgxT1JC&B&>|+LE3Z2mFNTUho<0u?@r^d=2 z-av!n8r#5M|F%l;=D=S1mGLjgFsiYAOODAR}#e^a8 zfVt$k=_o}kt3PTz?EpLkt54dY}kyd$rU zVqc9SN>0c z753j-gdN~UiW*FUDMOpYEkVzP)}{Ds*3_)ZBi)4v26MQr140|QRqhFoP=a|;C{#KS zD^9b-9HM11W+cb1Y)HAuk<^GUUo(ut!5kILBzAe)Vaxwu4Up!7Ql*#DDu z>EB84&xSrh>0jT!*X81jJQq$CRHqNj29!V3FN9DCx)~bvZbLwSlo3l^zPb1sqBnp) zfZpo|amY^H*I==3#8D%x3>zh#_SBf?r2QrD(Y@El!wa;Ja6G9Y1947P*DC|{9~nO& z*vDnnU!8(cV%HevsraF%Y%2{Z>CL0?64eu9r^t#WjW4~3uw8d}WHzsV%oq-T)Y z0-c!FWX5j1{1##?{aTeCW2b$PEnwe;t`VPCm@sQ`+$$L2=3kBR%2XU1{_|__XJ$xt zibjY2QlDVs)RgHH*kl&+jn*JqquF)k_Ypibo00lcc<2RYqsi-G%}k0r(N97H7JEn7@E3ZTH0JK>d8)E~A-D z!B&z9zJw0Bi^fgQZI%LirYaBKnWBXgc`An*qvO^*$xymqKOp(+3}IsnVhu?YnN7qz zNJxDN-JWd7-vIiv2M9ih>x3gNVY%DzzY~dCnA}76IRl!`VM=6=TYQ=o&uuE8kHqZT zoUNod0v+s9D)7aLJ|hVqL0li1hg)%&MAciI(4YJ=%D4H$fGQ&Lu-?@>>@pEgC;ERrL= zI^cS&3q8fvEGTJZgZwL5j&jp%j9U^Of6pR{wA^u=tVt#yCQepXNIbynGnuWbsC_EE zRyMFq{5DK692-*kyGy~An>AdVR9u___fzmmJ4;^s0yAGgO^h{YFmqJ%ZJ_^0BgCET zE6(B*SzeZ4pAxear^B-YW<%BK->X&Cr`g9_;qH~pCle# zdY|UB5cS<}DFRMO;&czbmV(?vzikf)Ks`d$LL801@HTP5@r><}$xp}+Ip`u_AZ~!K zT}{+R9Wkj}DtC=4QIqJok5(~0Ll&_6PPVQ`hZ+2iX1H{YjI8axG_Bw#QJy`6T>1Nn z%u^l`>XJ{^vX`L0 z1%w-ie!dE|!SP<>#c%ma9)8K4gm=!inHn2U+GR+~ zqZVoa!#aS0SP(|**WfQSe?cA=1|Jwk`UDsny%_y{@AV??N>xWekf>_IZLUEK3{Ksi zWWW$if&Go~@Oz)`#=6t_bNtD$d9FMBN#&97+XKa+K2C@I9xWgTE{?Xnhc9_KKPcujj@NprM@e|KtV_SR+ zSpeJ!1FGJ=Te6={;;+;a46-*DW*FjTnBfeuzI_=I1yk8M(}IwEIGWV0Y~wia;}^dg z{BK#G7^J`SE10z4(_Me=kF&4ld*}wpNs91%2Ute>Om`byv9qgK4VfwPj$`axsiZ)wxS4k4KTLb-d~!7I@^Jq`>?TrixHk|9 zqCX7@sWcVfNP8N;(T>>PJgsklQ#GF>F;fz_Rogh3r!dy*0qMr#>hvSua;$d z3TCZ4tlkyWPTD<=5&*bUck~J;oaIzSQ0E03_2x{?weax^jL3o`ZP#uvK{Z5^%H4b6 z%Kbp6K?>{;8>BnQy64Jy$~DN?l(ufkcs6TpaO&i~dC>0fvi-I^7YT#h?m;TVG|nba%CKRG%}3P*wejg) zI(ow&(5X3HR_xk{jrnkA-hbwxEQh|$CET9Qv6UpM+-bY?E!XVorBvHoU59;q<9$hK z%w5K-SK zWT#1OX__$ceoq0cRt>9|)v}$7{PlfwN}%Wh3rwSl;%JD|k~@IBMd5}JD#TOvp=S57 zae=J#0%+oH`-Av}a(Jqhd4h5~eG5ASOD)DfuqujI6p!;xF_GFcc;hZ9k^a7c%%h(J zhY;n&SyJWxju<+r`;pmAAWJmHDs{)V-x7(0-;E?I9FWK@Z6G+?7Py8uLc2~Fh1^0K zzC*V#P88(6U$XBjLmnahi2C!a+|4a)5Ho5>owQw$jaBm<)H2fR=-B*AI8G@@P-8I8 zHios92Q6Nk-n0;;c|WV$Q);Hu4;+y%C@3alP`cJ2{z~*m-@de%OKVgiWp;4Q)qf9n zJ!vmx(C=_>{+??w{U^Bh|LFJ<6t}Er<-Tu{C{dv8eb(kVQ4!fOuopTo!^x1OrG}0D zR{A#SrmN`=7T29bzQ}bwX8OUufW9d9T4>WY2n15=k3_rfGOp6sK0oj7(0xGaEe+-C zVuWa;hS*MB{^$=0`bWF(h|{}?53{5Wf!1M%YxVw}io4u-G2AYN|FdmhI13HvnoK zNS2fStm=?8ZpKt}v1@Dmz0FD(9pu}N@aDG3BY8y`O*xFsSz9f+Y({hFx;P_h>ER_& z`~{z?_vCNS>agYZI?ry*V96_uh;|EFc0*-x*`$f4A$*==p`TUVG;YDO+I4{gJGrj^ zn?ud(B4BlQr;NN?vaz_7{&(D9mfd z8esj=a4tR-ybJjCMtqV8>zn`r{0g$hwoWRUI3}X5=dofN){;vNoftEwX>2t@nUJro z#%7rpie2eH1sRa9i6TbBA4hLE8SBK@blOs=ouBvk{zFCYn4xY;v3QSM%y6?_+FGDn z4A;m)W?JL!gw^*tRx$gqmBXk&VU=Nh$gYp+Swu!h!+e(26(6*3Q!(!MsrMiLri`S= zKItik^R9g!0q7y$lh+L4zBc-?Fsm8`CX1+f>4GK7^X2#*H|oK}reQnT{Mm|0ar<+S zRc_dM%M?a3bC2ILD`|;6vKA`a3*N~(cjw~Xy`zhuY2s{(7KLB{S>QtR3NBQ3>vd+= z#}Q)AJr7Y_-eV(sMN#x!uGX08oE*g=grB*|bBs}%^3!RVA4f%m3=1f0K=T^}iI&2K zuM2GG5_%+#v-&V>?x4W9wQ|jE2Q7Be8mOyJtZrqn#gXy-1fF1P$C8+We&B*-pi#q5 zETp%H6g+%#sH+L4=ww?-h;MRCd2J9zwQUe4gHAbCbH08gDJY;F6F)HtWCRW1fLR;)ysGZanlz*a+|V&@(ipWdB!tz=m_0 z6F}`d$r%33bw?G*azn*}Z;UMr{z4d9j~s`0*foZkUPwpJsGgoR0aF>&@DC;$A&(av z?b|oo;`_jd>_5nye`DVOcMLr-*Nw&nA z82E8Dw^$Lpso)gEMh?N|Uc^X*NIhg=U%enuzZOGi-xcZRUZmkmq~(cP{S|*+A6P;Q zprIkJkIl51@ng)8cR6QSXJtoa$AzT@*(zN3M+6`BTO~ZMo0`9$s;pg0HE3C;&;D@q zd^0zcpT+jC%&=cYJF+j&uzX87d(gP9&kB9|-zN=69ymQS9_K@h3ph&wD5_!4q@qI@ zBMbd`2JJ2%yNX?`3(u&+nUUJLZ=|{t7^Rpw#v-pqD2_3}UEz!QazhRty%|Q~WCo7$ z+sIugHA%Lmm{lBP#bnu_>G}Ja<*6YOvSC;89z67M%iG0dagOt1HDpDn$<&H0DWxMU zxOYaaks6%R@{`l~zlZ*~2}n53mn2|O&gE+j*^ypbrtBv{xd~G(NF?Z%F3>S6+qcry z?ZdF9R*a;3lqX_!rI(Cov8ER_mOqSn6g&ZU(I|DHo7Jj`GJ}mF;T(vax`2+B8)H_D zD0I;%I?*oGD616DsC#j0x*p+ZpBfd=9gR|TvB)832CRhsW_7g&WI@zp@r7dhg}{+4f=(cO2s+)jg0x(*6|^+6W_=YIfSH0lTcK* z%)LyaOL6em@*-_u)}Swe8rU)~#zT-vNiW(D*~?Zp3NWl1y#fo!3sK-5Ek6F$F5l3| zrFFD~WHz1}WHmzzZ!n&O8rTgfytJG*7iE~0`0;HGXgWTgx@2fD`oodipOM*MOWN-} zJY-^>VMEi8v23ZlOn0NXp{7!QV3F1FY_URZjRKMcY(2PV_ms}EIC^x z=EYB5UUQ{@R~$2Mwiw$_JAcF+szKB*n(`MYpDCl>~ss54uDQ%Xf-8|dgO zY)B_qju=IaShS|XsQo=nSYxV$_vQR@hd~;qW)TEfU|BA0&-JSwO}-a*T;^}l;MgLM zz}CjPlJX|W2vCzm3oHw3vqsRc3RY=2()}iw_k2#eKf&VEP7TQ;(DDzEAUgj!z_h2Br;Z3u=K~LqM6YOrlh)v9`!n|6M-s z?XvA~y<5?WJ{+yM~uPh7uVM&g-(;IC3>uA}ud?B3F zelSyc)Nx>(?F=H88O&_70%{ATsLVTAp88F-`+|egQ7C4rpIgOf;1tU1au+D3 zlz?k$jJtTOrl&B2%}D}8d=+$NINOZjY$lb{O<;oT<zXoAp01KYG$Y4*=)!&4g|FL(!54OhR-?)DXC&VS5E|1HGk8LY;)FRJqnz zb_rV2F7=BGwHgDK&4J3{%&IK~rQx<&Kea|qEre;%A~5YD6x`mo>mdR)l?Nd%T2(5U z_ciT02-zt_*C|vn?BYDuqSFrk3R(4B0M@CRFmG{5sovIq4%8AhjXA5UwRGo)MxZlI zI%vz`v8B+#ff*XtGnciczFG}l(I}{YuCco#2E6|+5WJ|>BSDfz0oT+F z%QI^ixD|^(AN`MS6J$ zXlKNTFhb>KDkJp*4*LaZ2WWA5YR~{`={F^hwXGG*rJYQA7kx|nwnC58!eogSIvy{F zm1C#9@$LhK^Tl>&iM0wsnbG7Y^MnQ=q))MgApj4)DQt!Q5S`h+5a%c7M!m%)?+h65 z0NHDiEM^`W+M4)=q^#sk(g!GTpB}edwIe>FJQ+jAbCo#b zXmtd3raGJNH8vnqMtjem<_)9`gU_-RF&ZK!aIenv7B2Y0rZhon=2yh&VsHzM|`y|0x$Zez$bUg5Nqj?@~^ zPN43MB}q0kF&^=#3C;2T*bDBTyO(+#nZnULkVy0JcGJ36or7yl1wt7HI_>V7>mdud zv2II9P61FyEXZuF$=69dn%Z6F;SOwyGL4D5mKfW)q4l$8yUhv7|>>h_-4T*_CwAyu7;DW}_H zo>N_7Gm6eed=UaiEp_7aZko@CC61@(E1be&5I9TUq%AOJW>s^9w%pR5g2{7HW9qyF zh+ZvX;5}PN0!B4q2FUy+C#w5J?0Tkd&S#~94(AP4%fRb^742pgH7Tb1))siXWXHUT z1Wn5CG&!mGtr#jq6(P#!ck@K+FNprcWP?^wA2>mHA03W?kj>5b|P0ErXS) zg2qDTjQ|grCgYhrH-RapWCvMq5vCaF?{R%*mu}1)UDll~6;}3Q*^QOfj!dlt02lSzK z?+P)02Rrq``NbU3j&s*;<%i4Y>y9NK&=&KsYwvEmf5jwTG6?+Pu1q9M8lLlx)uZZ7 zizhr~e0ktGs-=$li-2jz^_48-jk**y&5u0`B2gc#i$T1~t+AS*kEfR*b{^Ec>2-F~ zKYRl&uQ5yO@EtAZX8ZSqx;8+AKf+CqhlUSpp*VfyBMv+%wxN5GukZEi^_to%MFRc0 zdXqJ*jk?#uYT6EJe446@(f6G4vhnxQP|pGeJ?-#|Ksq?g*ky=}x+Qnx+!<>Y(XStN zQIND`{KU}&l)E*ntI^}kJ=ly8DML{!(58Xk4_bzIc@v~e;>wKl_`7G%pGz~4KH*CTp;_|52)d!+ximd$|8v@zzEq%j68QXkgf$7eM~xdM5q5i z{?qFx_W|eq@L03bWJfjy^z@()-iCjzjREuf zb_a(yTz)ZKWCF%Lp>^2-%Q?*t{06}x#DLN3cO=i>h6#-a`z;<5rBGGM6GA(WqvRcX%Pn?Uvs1#e|ePSNJEC%+X(YI$x)`s$%>O#%}D9dgqWfq4yfVz^%FglokdFR}uJQhx|}_w`9Ulx38Ha>ZslKs58c-@IFI&f;?xM zbK>rKNfPFsf>%+k6%(A6=7Aac^_qrOCNqb3ZVJ;8pt!?1DR*ynJb#@II9h?)xB)A~ zm9Kk)Hy}!Z+W}i6ZJDy+?yY_=#kWrzgV)2eZAx_E=}Nh7*#<&mQz`Umfe$+l^P(xd zN}PA2qII4}ddCU+PN+yxkH%y!Qe(;iH3W%bwM3NKbU_saBo<8x9fGNtTAc_SizU=o zC3n2;c%LoU^j90Sz>B_p--Fzqv7x7*?|~-x{haH8RP)p|^u$}S9pD-}5;88pu0J~9 zj}EC`Q^Fw}`^pvAs4qOIuxKvGN@DUdRQ8p-RXh=3S#<`3{+Qv6&nEm)uV|kRVnu6f zco{(rJaWw(T0PWim?kkj9pJ)ZsUk9)dSNLDHf`y&@wbd;_ita>6RXFJ+8XC*-wsiN z(HR|9IF283fn=DI#3Ze&#y3yS5;!yoIBAH(v}3p5_Zr+F99*%+)cp!Sy8e+lG?dOc zuEz<;3X9Z5kkpL_ZYQa`sioR_@_cG z8tT~GOSTWnO~#?$u)AcaBSaV7P~RT?Nn8(OSL1RmzPWRWQ$K2`6*)+&7^zZBeWzud z*xb3|Fc~|R9eH+lQ#4wF#c;)Gka6lL(63C;>(bZob!i8F-3EhYU3|6-JBC0*5`y0| zBs!Frs=s!Sy0qmQNgIH|F`6(SrD1js2prni_QbG9Sv@^Pu2szR9NZl8GU89gWWvVg z2^-b*t+F{Nt>v?js7hnlC`tRU(an0qQG7;h6T~ z-`vf#R-AE$pzk`M{gCaia}F`->O2)60AuGFAJg> z*O2IZqTx=AzDvC49?A92>bQLdb&32_4>0Bgp0ESXXnd4B)!$t$g{*FG%HYdt3b3a^J9#so%BJMyr2 z{y?rzW!>lr097b9(75#&4&@lkB1vT*w&0E>!dS+a|ZOu6t^zro2tiP)bhcNNxn zbJs3_Fz+?t;4bkd8GfDI7ccJ5zU`Bs~ zN~bci`c`a%DoCMel<-KUCBdZRmew`MbZEPYE|R#|*hhvhyhOL#9Yt7$g_)!X?fK^F z8UDz)(zpsvriJ5aro5>qy`Fnz%;IR$@Kg3Z3EE!fv9CAdrAym6QU82=_$_N5*({_1 z7!-=zy(R{xg9S519S6W{HpJZ8Is|kQ!0?`!vxDggmslD59)>iQ15f z7J8NqdR`9f8H|~iFGNsPV!N)(CC9JRmzL9S}7U-K@`X893f3f<8|8Ls!^eA^#(O6nA+ByFIXcz_WLbfeG|nHJ5_sJJ^gNJ%SI9#XEfNRbzV+!RkI zXS$MOVYb2!0vU}Gt7oUy*|WpF^*orBot~b2J@^be?Gq;U%#am8`PmH-UCFZ&uTJlnetYij0z{K1mmivk$bdPbLodu;-R@@#gAV!=d%(caz$E?r zURX0pqAn7UuF6dULnoF1dZ$WM)tHAM{eZK6DbU1J`V5Dw<;xk}Nl`h+nfMO_Rdv z3SyOMzAbYaD;mkxA7_I_DOs#Bk;e5D%gsS3q)hlmi1w{FsjKNJE22`AjmNiAPRnIc zcIkN25;rOn3FipAFd(PnlK9{03w6Q<(68#1Jw`{axEGQE{Ac>^U$h);h2ADICmaNxrfpb`Jdr*)Y1SicpYKCFv$3vf~;5aW>n^7QGa63MJ z;B1+Z>WQ615R2D8JmmT`T{QcgZ+Kz1hTu{9FOL}Q8+iFx-Vyi}ZVVcGjTe>QfA`7W zFoS__+;E_rQIQxd(Bq4$egKeKsk#-9=&A!)(|hBvydsr5ts0Zjp*%*C0lM2sIOx1s zg$xz?Fh?x!P^!vWa|}^+SY8oZHub7f;E!S&Q;F?dZmvBxuFEISC}$^B_x*N-xRRJh zn4W*ThEWaPD*$KBr8_?}XRhHY7h^U1aN6>m=n~?YJQd8+!Uyq_3^)~4>XjelM&!c9 zCo|0KsGq7!KsZ~9@%G?i>LaU7#uSTMpypocm*oqJHR|wOgVWc7_8PVuuw>x{kEG4T z$p^DV`}jUK39zqFc(d5;N+M!Zd3zhZN&?Ww(<@AV-&f!v$uV>%z+dg9((35o@4rqLvTC-se@hkn^6k7+xHiK-vTRvM8{bCejbU;1@U=*r}GTI?Oc$!b6NRcj83-zF; z=TB#ESDB`F`jf4)z=OS76Se}tQDDHh{VKJk#Ad6FDB_=afpK#pyRkGrk~OuzmQG)} z*$t!nZu$KN&B;|O-aD=H<|n6aGGJZ=K9QFLG0y=Jye_ElJFNZJT;fU8P8CZcLBERjioAOC0Vz_pIXIc};)8HjfPwNy zE!g|lkRv3qpmU?shz(BBt5%TbpJC3HzP9!t7k*Fh48!-HlJ4TTgdCr3rCU!iF}kgu z4Qs;K@XOY~4f~N}Jl8V_mGbwzvNLbl&0e9UG4W;kvjTK|5`-Ld+eQ6YRF`N0ct%u% z^3J_{7r#_W1zm|>IPN!yWCRrN)N!7v`~ptNkIXKipQ6ogFvcnI5ugxdoa{d;uD67g zgo^}QuZRkB540Vc!@c80(wFG=$ct}oHq(#W0+-XX(;Rrt`x=<45X}ficNtI2(&}=~ zb(!}tNz?s`wm{gK?2tdf+OEF;tzx<(3fMd7_tM@Ghs$Z(Os-H(kYq#qB|J-aC9Ku?fsWwJhB36c)A zu|a7ZF?V8X7l2g5~xqZf>2=6Dsi5lfo zKIRL&@MLJyaBE)V_9=pJYu%U2wxR*-(0MI5_|yqP`?h@cks(5LR@XUKLMI_xuVtiu zRvpDS8MyUMRFM6`P+Sjc!A_e^H38Qu7b{b7QZ>NHyA6k-YYygQuW&C_OGO(7V7?}r)zedSVpBI zuk29Z4GW3C0GpfozbZQya454sjt@ndQmsp=DA&@sWw&xmOlDk1JIcMNp~-ES$&A~k zG#W(6hBj?!Fu8Q4WYexoSBa8_5=v20xnx6H?e;$t)5|f&{7=vOye^&3_c-Ug?|a@e z=X`&qT_5B7N9vZoPBhXOTEDV;4&x2Je4}T(UB~O-$D#CjX77$R?RZ*`ed~$G;$4YS z4n*|Pop(!NN79Hk2}U#cfEEwdxM)xQm}$~rV03xc=#U@@Y*}qEmot5KvDb=8{!E-n zl4p?}&g2h^sUGyTcGh=0aQzQb*k;K;dvbeZUgmwEv>%#(EPtj=gHKdi|E8@w+|>KC zxEU>b>P+9Xf}pEyQK(}#QrBG4Jaf!iE!qpMbTu>gb!gtdq<`@xO+roQl+S_7)!G(% zdy)$iGmJ1cwP?F=IyyV1-$|kf|EKM3B@I&lZ%NI@VV;*mQdLWjc#t|Vbk_Q~>&O03 zIcSr$(qLAINj7a z;!||v&1D5SX#X@5jNd}jUsi-CH_Scjyht&}q2p*CJCC-`&NyXf)vD5{e!HO629D-O z%bZelTcq=DoRX>zeWCa^RmR3*{x9;3lZ75M#S)!W0bRIFH#P6b%{|HRSZ5!!I#s)W z_|XXZQ<0_`>b^^0Z>LU64Yg1w)8}#M^9se(OZ9~baZ7fsKFc;EtnB>kesci#>=icG zuHdjax2^=!_(9?0l7;G7^-}9>Y#M zm;9*GT~dBuYWdk49%mZM0=H#FY1)}7NE5DE_vsqrA0`?0R0q535qHjWXcl|gz9Fq$ zMKxgL;68l!gm3y0durIr3LHv~y*ABm` zYhQG0UW#hg@*A{&G!;$FS43}rIF$e6yRdGJWVR<}uuJ_5_8qa3xaHH^!VzUteVp;> z<0`M>3tnY$ZFb$(`0sg93TwGyP;`9UYUWxO&CvAnSzei&ap))NcW;R`tA=y^?mBmG+M*&bqW5kL$V(O;(p)aEk`^ci?2Jwxu>0sy>a7+Wa9t z5#I2o;+gr^9^&km^z7>xJWbN&Ft>Vna34E zI@BBzwX)R}K3SL?)enrDJ45QLt;-7CFJk{`cF3L4Z^CtG_r5)0)HV>BOYPIUh#D%| zYQAu31f{bm-D*`_k7DTTr?Nkw_gY%J1cb2&TdtibY?V=|SSIOlA;|5C!2@?YQ z-$?G0jj^mG|MP>DmbF7}T~C$H6=CpZ~hd zZ1C|xV@=h#^~`3LSCnmI(vZ|5r3>eq5*UB)dhdy``*gKY3Eg%jSK8I-`G+OWWlD)T zt$wSQ=||lSkiKy}YF-k}@W9EiS?)z`hK{R!dd-$BCJvBtAN-yXn3njU$MisEtp!?Q z%Vk-*(wy9dd15(-WFw_&^tT;;IpF?ox1`Qq3-0zVTk+$W_?q}GfAQlPcrB^?&tWSI z2BB!K=sH7FUYmXa_dcV^Z3>5z8}~W{S!$jVR_3hu_|wl2|gmRH8ftn^z@fW75*;-`;wU+fY+BR_yx6BZnE5_Hna({jrPiubRp$jZ=T=t$hx&NeCV1!vuCcl4PJ0p0Fjp>6K} zHkoD1gQk=P2hYcT%)cJ2Q5WuA|5_x+dX0%hnozfTF>$#Wz~X!MY>){H4#fB#7^ID* z1*o2Hzp}?WVs&gbS?Uq(CT0sP+F)u9{xfgg6o_{8J#m;|NeJqDHhb(Q8%z8aM_qeM zn83>d`uDd47WIuKp78JBYo2SYupGcNXIzeou^eMY`@%Bv8elZ>q~3uq#~IX)g%g;h zoUXymEd>|kVsMkyb&1l~lrE-`w(0PObapYa35DJ4Y03Jv_!DKp}0HTbOgZRM=;PSsuAJJJ1 zItc+tu9;ANG;qHaCI|T85!euhFK~VK^G2LZV1+cbzS?>ar@>emg;JTI5VAn1g5U~| zU=p&k0OlSzc$U=s#9_uL3&n|6A1X$XvrE9vFV@`A4G#!D1QcFCeE`F2N(deJx>)*A z$XIW0P~-NbAd=5i6`s<~(vAQX9t$dbVqc5|E|CHRtb$1(l&KSNh_t2#k_l95KnP86 z)ns_DGspv-M0z0#h2a+*oH|{5~j{ zXGD=}cLrBSESQ0u$XmQlFfWMCAWaS;wKK%#aSSYK=qljBiY(s zT$v;We24&$w=avIILsMt0%1fDyah|AlLNg#WL$Lu)tf}YfqO%+pH~QC*bZO4aM*i9 zrPFf|5!hv@XY8CzaFh*Dy9vH|2fKKr(@x}`L#9^*vOae|lk`adG#oZZAyk|TOV8`9L zc-sQu%y1MQes&J?)a1}Zc*>-P!6j-T#75V$lLC!TuMB(!G-+D2;XptUxymSPFI-K&0x}B1?h$ z3-9**-9!);fwyiWB5gS$i;P~c=^}5-6G@{4TWDBRDc6(M|%qa-mS`z`u9kWo{Xl_uc;hXOkRd literal 49896 zcmagFb986H(k`5d^NVfUwr$(C?M#x1ZQHiZiEVpg+jrjgoQrerx!>1o_ul)D>ebz~ zs=Mmxr&>W81QY-S1PKWQ%N-;H^tS;2*XwVA`dej1RRn1z<;3VgfE4~kaG`A%QSPsR z#ovnZe+tS9%1MfeDyz`RirvdjPRK~p(#^q2(^5@O&NM19EHdvN-A&StN>0g6QA^VN z0Gx%Gq#PD$QMRFzmK+utjS^Y1F0e8&u&^=w5K<;4Rz|i3A=o|IKLY+g`iK6vfr9?+ z-`>gmU&i?FGSL5&F?TXFu`&Js6h;15QFkXp2M1H9|Eq~bpov-GU(uz%mH0n55wUl- zv#~ccAz`F5wlQ>e_KlJS3@{)B?^v*EQM=IxLa&76^y51a((wq|2-`qON>+4dLc{Oo z51}}o^Zen(oAjxDK7b++9_Yg`67p$bPo3~BCpGM7uAWmvIhWc5Gi+gQZ|Pwa-Gll@<1xmcPy z|NZmu6m)g5Ftu~BG&Xdxclw7Cij{xbBMBn-LMII#Slp`AElb&2^Hw+w>(3crLH!;I zN+Vk$D+wP1#^!MDCiad@vM>H#6+`Ct#~6VHL4lzmy;lSdk>`z6)=>Wh15Q2)dQtGqvn0vJU@+(B5{MUc*qs4!T+V=q=wy)<6$~ z!G>e_4dN@lGeF_$q9`Ju6Ncb*x?O7=l{anm7Eahuj_6lA{*#Gv*TaJclevPVbbVYu z(NY?5q+xxbO6%g1xF0r@Ix8fJ~u)VRUp`S%&rN$&e!Od`~s+64J z5*)*WSi*i{k%JjMSIN#X;jC{HG$-^iX+5f5BGOIHWAl*%15Z#!xntpk($-EGKCzKa zT7{siZ9;4TICsWQ$pu&wKZQTCvpI$Xvzwxoi+XkkpeE&&kFb!B?h2hi%^YlXt|-@5 zHJ~%AN!g_^tmn1?HSm^|gCE#!GRtK2(L{9pL#hp0xh zME}|DB>(5)`iE7CM)&_+S}-Bslc#@B5W4_+k4Cp$l>iVyg$KP>CN?SVGZ(&02>iZK zB<^HP$g$Lq*L$BWd?2(F?-MUbNWTJVQdW7$#8a|k_30#vHAD1Z{c#p;bETk0VnU5A zBgLe2HFJ3032$G<`m*OB!KM$*sdM20jm)It5OSru@tXpK5LT>#8)N!*skNu1$TpIw zufjjdp#lyH5bZ%|Iuo|iu9vG1HrIVWLH>278xo>aVBkPN3V$~!=KnlXQ4eDqS7%E% zQ!z^$Q$b^6Q)g#cLpwur(|<0gWHo6A6jc;n`t(V9T;LzTAU{IAu*uEQ%Ort1k+Kn+f_N`9|bxYC+~Z1 zCC1UCWv*Orx$_@ydv9mIe(liLfOr7mhbV@tKw{6)q^1DH1nmvZ0cj215R<~&I<4S| zgnr;9Cdjqpz#o8i0CQjtl`}{c*P)aSdH|abxGdrR)-3z+02-eX(k*B)Uqv6~^nh** z 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 +cd "`dirname \"$PRG\"`/" >/dev/null APP_HOME="`pwd -P`" -cd "$SAVED" >&- +cd "$SAVED" >/dev/null + +APP_NAME="Gradle" +APP_BASE_NAME=`basename "$0"` + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD="maximum" + +warn () { + echo "$*" +} + +die () { + echo + echo "$*" + echo + exit 1 +} + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "`uname`" in + CYGWIN* ) + cygwin=true + ;; + Darwin* ) + darwin=true + ;; + MINGW* ) + msys=true + ;; + NONSTOP* ) + nonstop=true + ;; +esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar + # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then @@ -90,7 +106,7 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then @@ -110,10 +126,12 @@ if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi -# For Cygwin, switch paths to Windows format before running java -if $cygwin ; then +# For Cygwin or MSYS, switch paths to Windows format before running java +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` @@ -138,27 +156,30 @@ if $cygwin ; then else eval `echo args$i`="\"$arg\"" fi - i=$((i+1)) + i=`expr $i + 1` done case $i in - (0) set -- ;; - (1) set -- "$args0" ;; - (2) set -- "$args0" "$args1" ;; - (3) set -- "$args0" "$args1" "$args2" ;; - (4) set -- "$args0" "$args1" "$args2" "$args3" ;; - (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; + 0) set -- ;; + 1) set -- "$args0" ;; + 2) set -- "$args0" "$args1" ;; + 3) set -- "$args0" "$args1" "$args2" ;; + 4) set -- "$args0" "$args1" "$args2" "$args3" ;; + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi -# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules -function splitJvmOpts() { - JVM_OPTS=("$@") +# Escape application args +save () { + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done + echo " " } -eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS -JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" +APP_ARGS=`save "$@"` -exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" +# Collect all arguments for the java command, following the shell quoting and substitution rules +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" + +exec "$JAVACMD" "$@" diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 00000000..5093609d --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,104 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem + +@if "%DEBUG%" == "" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%" == "" set DIRNAME=. +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if "%ERRORLEVEL%" == "0" goto init + +echo. +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto init + +echo. +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% +echo. +echo Please set the JAVA_HOME variable in your environment to match the +echo location of your Java installation. + +goto fail + +:init +@rem Get command-line arguments, handling Windows variants + +if not "%OS%" == "Windows_NT" goto win9xME_args + +:win9xME_args +@rem Slurp the command line arguments. +set CMD_LINE_ARGS= +set _SKIP=2 + +:win9xME_args_slurp +if "x%~1" == "x" goto execute + +set CMD_LINE_ARGS=%* + +:execute +@rem Setup the command line + +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% + +:end +@rem End local scope for the variables with windows NT shell +if "%ERRORLEVEL%"=="0" goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 +exit /b 1 + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega