Restyle UI (#690)

* enable testnet flavor
* v0.17.1.0
* migrate to androidx & material
* new color themes
* bump version v1.15.2
This commit is contained in:
m2049r 2020-10-16 02:52:08 +02:00 committed by GitHub
parent e5b15b7816
commit 1829d30b61
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
222 changed files with 5350 additions and 1200 deletions

View File

@ -7,9 +7,9 @@ android {
applicationId "com.m2049r.xmrwallet" applicationId "com.m2049r.xmrwallet"
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 28 targetSdkVersion 28
versionCode 408 versionCode 502
versionName "1.14.8 'On Board'" versionName "1.15.2 'Dark Fork'"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
externalNativeBuild { externalNativeBuild {
cmake { cmake {
cppFlags "-std=c++11" cppFlags "-std=c++11"
@ -17,6 +17,11 @@ android {
} }
} }
} }
bundle {
language {
enableSplit = false
}
}
flavorDimensions 'type', 'net' flavorDimensions 'type', 'net'
productFlavors { productFlavors {
@ -28,6 +33,11 @@ android {
applicationIdSuffix '.stage' applicationIdSuffix '.stage'
versionNameSuffix ' (stage)' versionNameSuffix ' (stage)'
} }
devnet {
dimension 'net'
applicationIdSuffix '.test'
versionNameSuffix ' (test)'
}
alpha { alpha {
dimension 'type' dimension 'type'
applicationIdSuffix '.alpha' applicationIdSuffix '.alpha'
@ -70,7 +80,8 @@ android {
def availableLocales = ["en"] def availableLocales = ["en"]
new File("app/src/main/res/").eachFileMatch(~/^values-.*/) { file -> new File("app/src/main/res/").eachFileMatch(~/^values-.*/) { file ->
def languageTag = file.name.substring(7).replace("-r", "-") def languageTag = file.name.substring(7).replace("-r", "-")
availableLocales.add(languageTag) if (languageTag != "night")
availableLocales.add(languageTag)
} }
// APKs for the same app that all have the same version information. // APKs for the same app that all have the same version information.
@ -100,30 +111,30 @@ android {
} }
dependencies { dependencies {
implementation "com.android.support:appcompat-v7:$rootProject.ext.supportVersion" implementation 'androidx.core:core:1.3.2'
implementation "com.android.support:design:$rootProject.ext.supportVersion" implementation 'androidx.appcompat:appcompat:1.2.0'
implementation "com.android.support:support-v4:$rootProject.ext.supportVersion" implementation group: 'com.google.android.material', name: 'material', version: '1.3.0-alpha03'
implementation "com.android.support:recyclerview-v7:$rootProject.ext.supportVersion" implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation "com.android.support:cardview-v7:$rootProject.ext.supportVersion" implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation "com.android.support:swiperefreshlayout:$rootProject.ext.supportVersion" implementation 'androidx.cardview:cardview:1.0.0'
implementation "com.android.support.constraint:constraint-layout:$rootProject.ext.constraintVersion" implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01'
implementation 'me.dm7.barcodescanner:zxing:1.9.8' implementation 'androidx.constraintlayout:constraintlayout:2.0.1'
implementation 'me.dm7.barcodescanner:zxing:1.9.8'
implementation "com.squareup.okhttp3:okhttp:$rootProject.ext.okHttpVersion" implementation "com.squareup.okhttp3:okhttp:$rootProject.ext.okHttpVersion"
implementation "com.burgstaller:okhttp-digest:1.18" implementation "com.burgstaller:okhttp-digest:2.0"
implementation "com.jakewharton.timber:timber:$rootProject.ext.timberVersion" implementation "com.jakewharton.timber:timber:$rootProject.ext.timberVersion"
implementation 'com.nulab-inc:zxcvbn:1.2.3' implementation 'com.nulab-inc:zxcvbn:1.3.0'
implementation 'dnsjava:dnsjava:2.1.8' implementation 'dnsjava:dnsjava:2.1.9'
implementation 'org.jitsi:dnssecjava:1.1.3' implementation 'org.jitsi:dnssecjava:1.2.0'
implementation 'org.slf4j:slf4j-nop:1.7.25' implementation 'org.slf4j:slf4j-nop:1.7.30'
implementation 'com.github.brnunes:swipeablerecyclerview:1.0.2' implementation 'com.github.brnunes:swipeablerecyclerview:1.0.2'
// https://mvnrepository.com/artifact/com.github.aelstad/keccakj // https://mvnrepository.com/artifact/com.github.aelstad/keccakj
implementation 'com.github.aelstad:keccakj:1.1.0' implementation 'com.github.aelstad:keccakj:1.1.0'
testImplementation "junit:junit:$rootProject.ext.junitVersion" testImplementation "junit:junit:$rootProject.ext.junitVersion"
testImplementation "org.mockito:mockito-all:$rootProject.ext.mockitoVersion" testImplementation "org.mockito:mockito-all:$rootProject.ext.mockitoVersion"
testImplementation "com.squareup.okhttp3:mockwebserver:$rootProject.ext.okHttpVersion" testImplementation "com.squareup.okhttp3:mockwebserver:$rootProject.ext.okHttpVersion"

View File

@ -20,8 +20,9 @@
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/MyMaterialTheme" android:theme="@style/MyMaterialTheme"
android:usesCleartextTraffic="true"> android:usesCleartextTraffic="true">
<activity android:name=".MainActivity" <activity
android:configChanges="orientation|keyboardHidden" android:name=".MainActivity"
android:configChanges="orientation|keyboardHidden|uiMode"
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="portrait"> android:screenOrientation="portrait">
<intent-filter> <intent-filter>
@ -31,13 +32,13 @@
</activity> </activity>
<activity <activity
android:name=".WalletActivity" android:name=".WalletActivity"
android:configChanges="orientation|keyboardHidden" android:configChanges="orientation|keyboardHidden|uiMode"
android:label="@string/wallet_activity_name" android:label="@string/wallet_activity_name"
android:launchMode="singleTask" android:launchMode="singleTask"
android:screenOrientation="behind" /> android:screenOrientation="behind"/>
<activity <activity
android:name=".LoginActivity" android:name=".LoginActivity"
android:configChanges="orientation|keyboardHidden" android:configChanges="orientation|keyboardHidden|uiMode"
android:label="@string/app_name" android:label="@string/app_name"
android:launchMode="singleTop" android:launchMode="singleTop"
android:screenOrientation="locked"> android:screenOrientation="locked">
@ -65,10 +66,11 @@
android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
android:resource="@xml/usb_device_filter" /> android:resource="@xml/usb_device_filter" />
</activity> </activity>
<activity android:name=".onboarding.OnBoardingActivity" <activity
android:configChanges="orientation|keyboardHidden" android:name=".onboarding.OnBoardingActivity"
android:configChanges="orientation|keyboardHidden|uiMode"
android:launchMode="singleTask" android:launchMode="singleTask"
android:screenOrientation="portrait"/> android:screenOrientation="portrait" />
<service <service
android:name=".service.WalletService" android:name=".service.WalletService"
@ -77,7 +79,7 @@
android:label="Monero Wallet Service" /> android:label="Monero Wallet Service" />
<provider <provider
android:name="android.support.v4.content.FileProvider" android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.fileprovider" android:authorities="${applicationId}.fileprovider"
android:exported="false" android:exported="false"
android:grantUriPermissions="true"> android:grantUriPermissions="true">

View File

@ -15,9 +15,9 @@ import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.os.PowerManager; import android.os.PowerManager;
import android.support.annotation.CallSuper; import androidx.annotation.CallSuper;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import android.support.v4.app.Fragment; import androidx.fragment.app.Fragment;
import android.widget.Toast; import android.widget.Toast;
import com.m2049r.xmrwallet.data.BarcodeData; import com.m2049r.xmrwallet.data.BarcodeData;

View File

@ -17,13 +17,9 @@
package com.m2049r.xmrwallet; package com.m2049r.xmrwallet;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TextInputLayout;
import android.support.v4.app.Fragment;
import android.text.Editable; import android.text.Editable;
import android.text.Html; import android.text.Html;
import android.text.InputType; import android.text.InputType;
@ -38,9 +34,15 @@ import android.view.WindowManager;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.widget.Button; import android.widget.Button;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.Switch;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.switchmaterial.SwitchMaterial;
import com.google.android.material.textfield.TextInputLayout;
import com.m2049r.xmrwallet.model.Wallet; import com.m2049r.xmrwallet.model.Wallet;
import com.m2049r.xmrwallet.model.WalletManager; import com.m2049r.xmrwallet.model.WalletManager;
import com.m2049r.xmrwallet.util.FingerprintHelper; import com.m2049r.xmrwallet.util.FingerprintHelper;
@ -202,13 +204,13 @@ public class GenerateFragment extends Fragment {
if (FingerprintHelper.isDeviceSupported(getContext())) { if (FingerprintHelper.isDeviceSupported(getContext())) {
llFingerprintAuth.setVisibility(View.VISIBLE); llFingerprintAuth.setVisibility(View.VISIBLE);
final Switch swFingerprintAllowed = (Switch) llFingerprintAuth.getChildAt(0); final SwitchMaterial swFingerprintAllowed = (SwitchMaterial) llFingerprintAuth.getChildAt(0);
swFingerprintAllowed.setOnClickListener(new View.OnClickListener() { swFingerprintAllowed.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View view) { public void onClick(View view) {
if (!swFingerprintAllowed.isChecked()) return; if (!swFingerprintAllowed.isChecked()) return;
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity());
builder.setMessage(Html.fromHtml(getString(R.string.generate_fingerprint_warn))) builder.setMessage(Html.fromHtml(getString(R.string.generate_fingerprint_warn)))
.setCancelable(false) .setCancelable(false)
.setPositiveButton(getString(R.string.label_ok), null) .setPositiveButton(getString(R.string.label_ok), null)
@ -507,7 +509,7 @@ public class GenerateFragment extends Fragment {
String name = etWalletName.getEditText().getText().toString(); String name = etWalletName.getEditText().getText().toString();
String password = etWalletPassword.getEditText().getText().toString(); String password = etWalletPassword.getEditText().getText().toString();
boolean fingerprintAuthAllowed = ((Switch) llFingerprintAuth.getChildAt(0)).isChecked(); boolean fingerprintAuthAllowed = ((SwitchMaterial) llFingerprintAuth.getChildAt(0)).isChecked();
// create the real wallet password // create the real wallet password
String crazyPass = KeyStoreHelper.getCrazyPass(getActivity(), password); String crazyPass = KeyStoreHelper.getCrazyPass(getActivity(), password);
@ -646,7 +648,7 @@ public class GenerateFragment extends Fragment {
if (ledgerDialog != null) return; if (ledgerDialog != null) return;
final Activity activity = getActivity(); final Activity activity = getActivity();
View promptsView = getLayoutInflater().inflate(R.layout.prompt_ledger_seed, null); View promptsView = getLayoutInflater().inflate(R.layout.prompt_ledger_seed, null);
android.app.AlertDialog.Builder alertDialogBuilder = new android.app.AlertDialog.Builder(activity); MaterialAlertDialogBuilder alertDialogBuilder = new MaterialAlertDialogBuilder(activity);
alertDialogBuilder.setView(promptsView); alertDialogBuilder.setView(promptsView);
final TextInputLayout etSeed = promptsView.findViewById(R.id.etSeed); final TextInputLayout etSeed = promptsView.findViewById(R.id.etSeed);

View File

@ -16,14 +16,10 @@
package com.m2049r.xmrwallet; package com.m2049r.xmrwallet;
import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TextInputLayout;
import android.support.v4.app.Fragment;
import android.text.Editable; import android.text.Editable;
import android.text.Html; import android.text.Html;
import android.text.TextWatcher; import android.text.TextWatcher;
@ -40,10 +36,17 @@ import android.widget.ImageButton;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.ScrollView; import android.widget.ScrollView;
import android.widget.Switch;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.switchmaterial.SwitchMaterial;
import com.google.android.material.textfield.TextInputLayout;
import com.m2049r.xmrwallet.ledger.Ledger; import com.m2049r.xmrwallet.ledger.Ledger;
import com.m2049r.xmrwallet.ledger.LedgerProgressDialog; import com.m2049r.xmrwallet.ledger.LedgerProgressDialog;
import com.m2049r.xmrwallet.model.NetworkType; import com.m2049r.xmrwallet.model.NetworkType;
@ -118,31 +121,11 @@ public class GenerateReviewFragment extends Fragment {
tvWalletSpendKey.setTextIsSelectable(allowCopy); tvWalletSpendKey.setTextIsSelectable(allowCopy);
tvWalletPassword.setTextIsSelectable(allowCopy); tvWalletPassword.setTextIsSelectable(allowCopy);
bAccept.setOnClickListener(new View.OnClickListener() { bAccept.setOnClickListener(v -> acceptWallet());
@Override view.findViewById(R.id.bCopyViewKey).setOnClickListener(v -> copyViewKey());
public void onClick(View v) { bCopyAddress.setEnabled(false);
acceptWallet(); bCopyAddress.setOnClickListener(v -> copyAddress());
} view.findViewById(R.id.bAdvancedInfo).setOnClickListener(v -> showAdvancedInfo());
});
view.findViewById(R.id.bCopyViewKey).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
copyViewKey();
}
});
bCopyAddress.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
copyAddress();
}
});
bCopyAddress.setClickable(false);
view.findViewById(R.id.bAdvancedInfo).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showAdvancedInfo();
}
});
Bundle args = getArguments(); Bundle args = getArguments();
type = args.getString(REQUEST_TYPE); type = args.getString(REQUEST_TYPE);
@ -287,8 +270,7 @@ public class GenerateReviewFragment extends Fragment {
showAdvanced = true; showAdvanced = true;
} }
if (showAdvanced) bAdvancedInfo.setVisibility(View.VISIBLE); if (showAdvanced) bAdvancedInfo.setVisibility(View.VISIBLE);
bCopyAddress.setClickable(true); bCopyAddress.setEnabled(true);
bCopyAddress.setImageResource(R.drawable.ic_content_copy_black_24dp);
activityCallback.setTitle(name, getString(R.string.details_title)); activityCallback.setTitle(name, getString(R.string.details_title));
activityCallback.setToolbarButton( activityCallback.setToolbarButton(
GenerateReviewFragment.VIEW_TYPE_ACCEPT.equals(type) ? Toolbar.BUTTON_NONE : Toolbar.BUTTON_BACK); GenerateReviewFragment.VIEW_TYPE_ACCEPT.equals(type) ? Toolbar.BUTTON_NONE : Toolbar.BUTTON_BACK);
@ -352,7 +334,7 @@ public class GenerateReviewFragment extends Fragment {
} }
@Override @Override
public void onAttach(Context context) { public void onAttach(@NonNull Context context) {
super.onAttach(context); super.onAttach(context);
if (context instanceof Listener) { if (context instanceof Listener) {
this.activityCallback = (Listener) context; this.activityCallback = (Listener) context;
@ -399,7 +381,7 @@ public class GenerateReviewFragment extends Fragment {
} }
@Override @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) {
String type = getArguments().getString(REQUEST_TYPE); // intance variable <type> not set yet String type = getArguments().getString(REQUEST_TYPE); // intance variable <type> not set yet
if (GenerateReviewFragment.VIEW_TYPE_ACCEPT.equals(type)) { if (GenerateReviewFragment.VIEW_TYPE_ACCEPT.equals(type)) {
inflater.inflate(R.menu.wallet_details_help_menu, menu); inflater.inflate(R.menu.wallet_details_help_menu, menu);
@ -448,7 +430,7 @@ public class GenerateReviewFragment extends Fragment {
protected Boolean doInBackground(String... params) { protected Boolean doInBackground(String... params) {
if (params.length != 2) return false; if (params.length != 2) return false;
final String userPassword = params[0]; final String userPassword = params[0];
final boolean fingerPassValid = Boolean.valueOf(params[1]); final boolean fingerPassValid = Boolean.parseBoolean(params[1]);
newPassword = KeyStoreHelper.getCrazyPass(getActivity(), userPassword); newPassword = KeyStoreHelper.getCrazyPass(getActivity(), userPassword);
final boolean success = changeWalletPassword(newPassword); final boolean success = changeWalletPassword(newPassword);
if (success) { if (success) {
@ -488,7 +470,7 @@ public class GenerateReviewFragment extends Fragment {
LayoutInflater li = LayoutInflater.from(getActivity()); LayoutInflater li = LayoutInflater.from(getActivity());
View promptsView = li.inflate(R.layout.prompt_changepw, null); View promptsView = li.inflate(R.layout.prompt_changepw, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()); AlertDialog.Builder alertDialogBuilder = new MaterialAlertDialogBuilder(getActivity());
alertDialogBuilder.setView(promptsView); alertDialogBuilder.setView(promptsView);
final TextInputLayout etPasswordA = promptsView.findViewById(R.id.etWalletPasswordA); final TextInputLayout etPasswordA = promptsView.findViewById(R.id.etWalletPasswordA);
@ -498,7 +480,7 @@ public class GenerateReviewFragment extends Fragment {
etPasswordB.setHint(getString(R.string.prompt_changepwB, walletName)); etPasswordB.setHint(getString(R.string.prompt_changepwB, walletName));
LinearLayout llFingerprintAuth = promptsView.findViewById(R.id.llFingerprintAuth); LinearLayout llFingerprintAuth = promptsView.findViewById(R.id.llFingerprintAuth);
final Switch swFingerprintAllowed = (Switch) llFingerprintAuth.getChildAt(0); final SwitchMaterial swFingerprintAllowed = (SwitchMaterial) llFingerprintAuth.getChildAt(0);
if (FingerprintHelper.isDeviceSupported(getActivity())) { if (FingerprintHelper.isDeviceSupported(getActivity())) {
llFingerprintAuth.setVisibility(View.VISIBLE); llFingerprintAuth.setVisibility(View.VISIBLE);
@ -507,7 +489,7 @@ public class GenerateReviewFragment extends Fragment {
public void onClick(View view) { public void onClick(View view) {
if (!swFingerprintAllowed.isChecked()) return; if (!swFingerprintAllowed.isChecked()) return;
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); AlertDialog.Builder builder = new MaterialAlertDialogBuilder(getActivity());
builder.setMessage(Html.fromHtml(getString(R.string.generate_fingerprint_warn))) builder.setMessage(Html.fromHtml(getString(R.string.generate_fingerprint_warn)))
.setCancelable(false) .setCancelable(false)
.setPositiveButton(getString(R.string.label_ok), null) .setPositiveButton(getString(R.string.label_ok), null)
@ -596,7 +578,7 @@ public class GenerateReviewFragment extends Fragment {
etPasswordA.setError(getString(R.string.generate_empty_passwordB)); etPasswordA.setError(getString(R.string.generate_empty_passwordB));
} else if (!newPasswordA.equals(newPasswordB)) { } else if (!newPasswordA.equals(newPasswordB)) {
etPasswordB.setError(getString(R.string.generate_bad_passwordB)); etPasswordB.setError(getString(R.string.generate_bad_passwordB));
} else if (newPasswordA.equals(newPasswordB)) { } else {
new AsyncChangePassword().execute(newPasswordA, Boolean.toString(swFingerprintAllowed.isChecked())); new AsyncChangePassword().execute(newPasswordA, Boolean.toString(swFingerprintAllowed.isChecked()));
Helper.hideKeyboardAlways(getActivity()); Helper.hideKeyboardAlways(getActivity());
openDialog.dismiss(); openDialog.dismiss();
@ -619,7 +601,7 @@ public class GenerateReviewFragment extends Fragment {
etPasswordA.setError(getString(R.string.generate_empty_passwordB)); etPasswordA.setError(getString(R.string.generate_empty_passwordB));
} else if (!newPasswordA.equals(newPasswordB)) { } else if (!newPasswordA.equals(newPasswordB)) {
etPasswordB.setError(getString(R.string.generate_bad_passwordB)); etPasswordB.setError(getString(R.string.generate_bad_passwordB));
} else if (newPasswordA.equals(newPasswordB)) { } else {
new AsyncChangePassword().execute(newPasswordA, Boolean.toString(swFingerprintAllowed.isChecked())); new AsyncChangePassword().execute(newPasswordA, Boolean.toString(swFingerprintAllowed.isChecked()));
Helper.hideKeyboardAlways(getActivity()); Helper.hideKeyboardAlways(getActivity());
openDialog.dismiss(); openDialog.dismiss();

View File

@ -16,7 +16,6 @@
package com.m2049r.xmrwallet; package com.m2049r.xmrwallet;
import android.app.AlertDialog;
import android.app.PendingIntent; import android.app.PendingIntent;
import android.content.BroadcastReceiver; import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
@ -30,10 +29,6 @@ import android.hardware.usb.UsbManager;
import android.media.MediaScannerConnection; import android.media.MediaScannerConnection;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MenuItem; import android.view.MenuItem;
@ -43,6 +38,14 @@ import android.widget.EditText;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.m2049r.xmrwallet.data.Node; import com.m2049r.xmrwallet.data.Node;
import com.m2049r.xmrwallet.data.NodeInfo; import com.m2049r.xmrwallet.data.NodeInfo;
import com.m2049r.xmrwallet.dialog.AboutFragment; import com.m2049r.xmrwallet.dialog.AboutFragment;
@ -55,10 +58,13 @@ import com.m2049r.xmrwallet.model.NetworkType;
import com.m2049r.xmrwallet.model.Wallet; import com.m2049r.xmrwallet.model.Wallet;
import com.m2049r.xmrwallet.model.WalletManager; import com.m2049r.xmrwallet.model.WalletManager;
import com.m2049r.xmrwallet.service.WalletService; import com.m2049r.xmrwallet.service.WalletService;
import com.m2049r.xmrwallet.util.ColorHelper;
import com.m2049r.xmrwallet.util.DayNightMode;
import com.m2049r.xmrwallet.util.Helper; import com.m2049r.xmrwallet.util.Helper;
import com.m2049r.xmrwallet.util.KeyStoreHelper; import com.m2049r.xmrwallet.util.KeyStoreHelper;
import com.m2049r.xmrwallet.util.LocaleHelper; import com.m2049r.xmrwallet.util.LocaleHelper;
import com.m2049r.xmrwallet.util.MoneroThreadPoolExecutor; import com.m2049r.xmrwallet.util.MoneroThreadPoolExecutor;
import com.m2049r.xmrwallet.util.NightmodeHelper;
import com.m2049r.xmrwallet.widget.Toolbar; import com.m2049r.xmrwallet.widget.Toolbar;
import java.io.File; import java.io.File;
@ -69,7 +75,6 @@ import java.nio.channels.FileChannel;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@ -85,6 +90,7 @@ public class LoginActivity extends BaseActivity
private static final String GENERATE_STACK = "gen"; private static final String GENERATE_STACK = "gen";
private static final String NODES_PREFS_NAME = "nodes"; private static final String NODES_PREFS_NAME = "nodes";
private static final String PREF_DAEMON_TESTNET = "daemon_testnet";
private static final String PREF_DAEMON_STAGENET = "daemon_stagenet"; private static final String PREF_DAEMON_STAGENET = "daemon_stagenet";
private static final String PREF_DAEMON_MAINNET = "daemon_mainnet"; private static final String PREF_DAEMON_MAINNET = "daemon_mainnet";
@ -163,6 +169,10 @@ public class LoginActivity extends BaseActivity
loadLegacyList(sharedPref.getString(PREF_DAEMON_STAGENET, null)); loadLegacyList(sharedPref.getString(PREF_DAEMON_STAGENET, null));
sharedPref.edit().remove(PREF_DAEMON_STAGENET).apply(); sharedPref.edit().remove(PREF_DAEMON_STAGENET).apply();
break; break;
case NetworkType_Testnet:
loadLegacyList(sharedPref.getString(PREF_DAEMON_TESTNET, null));
sharedPref.edit().remove(PREF_DAEMON_TESTNET).apply();
break;
default: default:
throw new IllegalStateException("unsupported net " + WalletManager.getInstance().getNetworkType()); throw new IllegalStateException("unsupported net " + WalletManager.getInstance().getNetworkType());
} }
@ -337,8 +347,8 @@ public class LoginActivity extends BaseActivity
} }
}; };
AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
AlertDialog diag = builder.setMessage(getString(R.string.details_alert_message)) builder.setMessage(getString(R.string.details_alert_message))
.setPositiveButton(getString(R.string.details_alert_yes), dialogClickListener) .setPositiveButton(getString(R.string.details_alert_yes), dialogClickListener)
.setNegativeButton(getString(R.string.details_alert_no), dialogClickListener) .setNegativeButton(getString(R.string.details_alert_no), dialogClickListener)
.show(); .show();
@ -426,7 +436,7 @@ public class LoginActivity extends BaseActivity
LayoutInflater li = LayoutInflater.from(this); LayoutInflater li = LayoutInflater.from(this);
View promptsView = li.inflate(R.layout.prompt_rename, null); View promptsView = li.inflate(R.layout.prompt_rename, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); AlertDialog.Builder alertDialogBuilder = new MaterialAlertDialogBuilder(this);
alertDialogBuilder.setView(promptsView); alertDialogBuilder.setView(promptsView);
final EditText etRename = promptsView.findViewById(R.id.etRename); final EditText etRename = promptsView.findViewById(R.id.etRename);
@ -581,7 +591,7 @@ public class LoginActivity extends BaseActivity
} }
}; };
AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
builder.setMessage(getString(R.string.archive_alert_message)) builder.setMessage(getString(R.string.archive_alert_message))
.setTitle(walletName) .setTitle(walletName)
.setPositiveButton(getString(R.string.archive_alert_yes), dialogClickListener) .setPositiveButton(getString(R.string.archive_alert_yes), dialogClickListener)
@ -653,11 +663,11 @@ public class LoginActivity extends BaseActivity
break; break;
case NetworkType_Testnet: case NetworkType_Testnet:
toolbar.setSubtitle(getString(R.string.connect_testnet)); toolbar.setSubtitle(getString(R.string.connect_testnet));
toolbar.setBackgroundResource(R.color.colorPrimaryDark); toolbar.setBackgroundResource(ColorHelper.getThemedResourceId(this, R.attr.colorPrimaryDark));
break; break;
case NetworkType_Stagenet: case NetworkType_Stagenet:
toolbar.setSubtitle(getString(R.string.connect_stagenet)); toolbar.setSubtitle(getString(R.string.connect_stagenet));
toolbar.setBackgroundResource(R.color.colorPrimaryDark); toolbar.setBackgroundResource(ColorHelper.getThemedResourceId(this, R.attr.colorPrimaryDark));
break; break;
default: default:
throw new IllegalStateException("NetworkType unknown: " + net); throw new IllegalStateException("NetworkType unknown: " + net);
@ -1124,41 +1134,54 @@ public class LoginActivity extends BaseActivity
public void onChangeLocale() { public void onChangeLocale() {
final ArrayList<Locale> availableLocales = LocaleHelper.getAvailableLocales(LoginActivity.this); final ArrayList<Locale> availableLocales = LocaleHelper.getAvailableLocales(LoginActivity.this);
String[] localeDisplayName = new String[1 + availableLocales.size()]; Collections.sort(availableLocales, (locale1, locale2) -> {
String localeString1 = LocaleHelper.getDisplayName(locale1, true);
Collections.sort(availableLocales, new Comparator<Locale>() { String localeString2 = LocaleHelper.getDisplayName(locale2, true);
@Override return localeString1.compareTo(localeString2);
public int compare(Locale locale1, Locale locale2) {
String localeString1 = LocaleHelper.getDisplayName(locale1, true);
String localeString2 = LocaleHelper.getDisplayName(locale2, true);
return localeString1.compareTo(localeString2);
}
}); });
localeDisplayName[0] = getString(R.string.language_system_default); String[] localeDisplayNames = new String[1 + availableLocales.size()];
for (int i = 1; i < localeDisplayName.length; i++) { localeDisplayNames[0] = getString(R.string.language_system_default);
Locale locale = availableLocales.get(i - 1); for (int i = 1; i < localeDisplayNames.length; i++) {
localeDisplayName[i] = LocaleHelper.getDisplayName(locale, true); localeDisplayNames[i] = LocaleHelper.getDisplayName(availableLocales.get(i - 1), true);
} }
int currentLocaleIndex = 0; int currentLocaleIndex = 0;
String currentLocaleName = LocaleHelper.getLocale(LoginActivity.this); String currentLocaleTag = LocaleHelper.getPreferredLanguageTag(LoginActivity.this);
if (!currentLocaleName.isEmpty()) { if (!currentLocaleTag.isEmpty()) {
Locale currentLocale = Locale.forLanguageTag(currentLocaleName); Locale currentLocale = Locale.forLanguageTag(currentLocaleTag);
String currentLocalizedString = LocaleHelper.getDisplayName(currentLocale, true); String currentLocaleName = LocaleHelper.getDisplayName(currentLocale, true);
currentLocaleIndex = Arrays.asList(localeDisplayName).indexOf(currentLocalizedString); currentLocaleIndex = Arrays.asList(localeDisplayNames).indexOf(currentLocaleName);
if (currentLocaleIndex < 0) currentLocaleIndex = 0;
} }
AlertDialog.Builder builder = new AlertDialog.Builder(LoginActivity.this); AlertDialog.Builder builder = new MaterialAlertDialogBuilder(LoginActivity.this);
builder.setTitle(getString(R.string.menu_language)); builder.setTitle(getString(R.string.menu_language));
builder.setSingleChoiceItems(localeDisplayName, currentLocaleIndex, new DialogInterface.OnClickListener() { builder.setSingleChoiceItems(localeDisplayNames, currentLocaleIndex, (dialog, i) -> {
@Override dialog.dismiss();
public void onClick(DialogInterface dialog, int i) {
dialog.dismiss();
LocaleHelper.setLocale(LoginActivity.this, LocaleHelper.setAndSaveLocale(this,
(i == 0) ? "" : availableLocales.get(i - 1).toLanguageTag()); (i == 0) ? "" : availableLocales.get(i - 1).toLanguageTag());
startActivity(getIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK)); startActivity(getIntent().addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK));
});
builder.show();
}
public void onChangeTheme() {
final DayNightMode currentDayNightSetting = DayNightMode.getValue(AppCompatDelegate.getDefaultNightMode());
// selection will be empty if UNKNOWN
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(LoginActivity.this);
builder.setTitle(getString(R.string.menu_daynight));
String[] modeNames = getResources().getStringArray(R.array.daynight_themes);
builder.setSingleChoiceItems(modeNames, currentDayNightSetting.ordinal(), (dialog, i) -> {
dialog.dismiss();
final DayNightMode mode = DayNightMode.values()[i];
if (currentDayNightSetting != mode) {
NightmodeHelper.setAndSavePreferredNightmode(LoginActivity.this, mode);
LoginActivity.this.recreate();
} }
}); });
builder.show(); builder.show();
@ -1227,6 +1250,9 @@ public class LoginActivity extends BaseActivity
case R.id.action_language: case R.id.action_language:
onChangeLocale(); onChangeLocale();
return true; return true;
case R.id.action_theme:
onChangeTheme();
return true;
case R.id.action_ledger_seed: case R.id.action_ledger_seed:
Fragment f = getSupportFragmentManager().findFragmentById(R.id.fragment_container); Fragment f = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
if (f instanceof GenerateFragment) { if (f instanceof GenerateFragment) {

View File

@ -19,11 +19,6 @@ package com.m2049r.xmrwallet;
import android.content.Context; import android.content.Context;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
@ -38,6 +33,12 @@ import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import com.google.android.material.floatingactionbutton.FloatingActionButton;
import com.m2049r.xmrwallet.data.NodeInfo; import com.m2049r.xmrwallet.data.NodeInfo;
import com.m2049r.xmrwallet.layout.NodeInfoAdapter; import com.m2049r.xmrwallet.layout.NodeInfoAdapter;
import com.m2049r.xmrwallet.layout.WalletInfoAdapter; import com.m2049r.xmrwallet.layout.WalletInfoAdapter;
@ -63,6 +64,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
private List<WalletManager.WalletInfo> walletList = new ArrayList<>(); private List<WalletManager.WalletInfo> walletList = new ArrayList<>();
private List<WalletManager.WalletInfo> displayedList = new ArrayList<>(); private List<WalletManager.WalletInfo> displayedList = new ArrayList<>();
private View tvGuntherSays;
private ImageView ivGunther; private ImageView ivGunther;
private TextView tvNodeName; private TextView tvNodeName;
private TextView tvNodeAddress; private TextView tvNodeAddress;
@ -143,6 +145,7 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
Timber.d("onCreateView"); Timber.d("onCreateView");
View view = inflater.inflate(R.layout.fragment_login, container, false); View view = inflater.inflate(R.layout.fragment_login, container, false);
tvGuntherSays = view.findViewById(R.id.tvGuntherSays);
ivGunther = view.findViewById(R.id.ivGunther); ivGunther = view.findViewById(R.id.ivGunther);
fabScreen = view.findViewById(R.id.fabScreen); fabScreen = view.findViewById(R.id.fabScreen);
fab = view.findViewById(R.id.fab); fab = view.findViewById(R.id.fab);
@ -275,13 +278,15 @@ public class LoginFragment extends Fragment implements WalletInfoAdapter.OnInter
if (displayedList.isEmpty()) { if (displayedList.isEmpty()) {
fab.startAnimation(fab_pulse); fab.startAnimation(fab_pulse);
if (ivGunther.getDrawable() == null) { if (ivGunther.getDrawable() == null) {
ivGunther.setImageResource(R.drawable.gunther_desaturated); ivGunther.setImageResource(R.drawable.ic_emptygunther);
tvGuntherSays.setVisibility(View.VISIBLE);
} }
} else { } else {
fab.clearAnimation(); fab.clearAnimation();
if (ivGunther.getDrawable() != null) { if (ivGunther.getDrawable() != null) {
ivGunther.setImageDrawable(null); ivGunther.setImageDrawable(null);
} }
tvGuntherSays.setVisibility(View.GONE);
} }
// remove information of non-existent wallet // remove information of non-existent wallet

View File

@ -18,13 +18,14 @@ package com.m2049r.xmrwallet;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.m2049r.xmrwallet.onboarding.OnBoardingActivity; import com.m2049r.xmrwallet.onboarding.OnBoardingActivity;
import com.m2049r.xmrwallet.onboarding.OnBoardingManager; import com.m2049r.xmrwallet.onboarding.OnBoardingManager;
public class MainActivity extends AppCompatActivity { public class MainActivity extends BaseActivity {
@Override @Override
protected void onCreate(@Nullable final Bundle savedInstanceState) { protected void onCreate(@Nullable final Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);

View File

@ -16,16 +16,19 @@
package com.m2049r.xmrwallet; package com.m2049r.xmrwallet;
import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import android.support.design.widget.TextInputLayout;
import android.support.v4.app.Fragment; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import android.support.v4.widget.SwipeRefreshLayout; import com.google.android.material.textfield.TextInputLayout;
import android.support.v7.widget.RecyclerView;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.Fragment;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;
import androidx.recyclerview.widget.RecyclerView;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
@ -445,7 +448,7 @@ public class NodeFragment extends Fragment
} }
EditDialog(final NodeInfo nodeInfo) { EditDialog(final NodeInfo nodeInfo) {
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(getActivity()); AlertDialog.Builder alertDialogBuilder = new MaterialAlertDialogBuilder(getActivity());
LayoutInflater li = LayoutInflater.from(alertDialogBuilder.getContext()); LayoutInflater li = LayoutInflater.from(alertDialogBuilder.getContext());
View promptsView = li.inflate(R.layout.prompt_editnode, null); View promptsView = li.inflate(R.layout.prompt_editnode, null);
alertDialogBuilder.setView(promptsView); alertDialogBuilder.setView(promptsView);

View File

@ -25,12 +25,6 @@ import android.net.Uri;
import android.nfc.NfcManager; import android.nfc.NfcManager;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.TextInputLayout;
import android.support.v4.app.Fragment;
import android.support.v4.content.FileProvider;
import android.support.v4.view.MenuItemCompat;
import android.support.v7.widget.ShareActionProvider;
import android.text.Editable; import android.text.Editable;
import android.text.InputType; import android.text.InputType;
import android.text.TextWatcher; import android.text.TextWatcher;
@ -42,7 +36,6 @@ import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo; import android.view.inputmethod.EditorInfo;
import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ImageButton; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
@ -50,6 +43,13 @@ import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.appcompat.widget.ShareActionProvider;
import androidx.core.content.FileProvider;
import androidx.core.view.MenuItemCompat;
import androidx.fragment.app.Fragment;
import com.google.android.material.textfield.TextInputLayout;
import com.google.zxing.BarcodeFormat; import com.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType; import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException; import com.google.zxing.WriterException;
@ -82,10 +82,11 @@ public class ReceiveFragment extends Fragment {
private ExchangeView evAmount; private ExchangeView evAmount;
private TextView tvQrCode; private TextView tvQrCode;
private ImageView ivQrCode; private ImageView ivQrCode;
private View cvQrCode;
private ImageView ivQrCodeFull; private ImageView ivQrCodeFull;
private EditText etDummy; private EditText etDummy;
private ImageButton bCopyAddress; private ImageButton bCopyAddress;
private Button bSubaddress; private ImageButton bSubaddress;
private Wallet wallet = null; private Wallet wallet = null;
private boolean isMyWallet = false; private boolean isMyWallet = false;
@ -109,6 +110,7 @@ public class ReceiveFragment extends Fragment {
tvAddress = view.findViewById(R.id.tvAddress); tvAddress = view.findViewById(R.id.tvAddress);
etNotes = view.findViewById(R.id.etNotes); etNotes = view.findViewById(R.id.etNotes);
evAmount = view.findViewById(R.id.evAmount); evAmount = view.findViewById(R.id.evAmount);
cvQrCode = view.findViewById(R.id.cvQrCode);
ivQrCode = view.findViewById(R.id.qrCode); ivQrCode = view.findViewById(R.id.qrCode);
tvQrCode = view.findViewById(R.id.tvQrCode); tvQrCode = view.findViewById(R.id.tvQrCode);
ivQrCodeFull = view.findViewById(R.id.qrCodeFull); ivQrCodeFull = view.findViewById(R.id.qrCodeFull);
@ -118,13 +120,9 @@ public class ReceiveFragment extends Fragment {
etDummy.setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS); etDummy.setRawInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);
bCopyAddress.setOnClickListener(new View.OnClickListener() { bCopyAddress.setOnClickListener(v -> copyAddress());
@Override
public void onClick(View v) {
copyAddress();
}
});
enableCopyAddress(false); enableCopyAddress(false);
enableSubaddressButton(false);
evAmount.setOnNewAmountListener(new ExchangeView.OnNewAmountListener() { evAmount.setOnNewAmountListener(new ExchangeView.OnNewAmountListener() {
@Override @Override
@ -190,7 +188,7 @@ public class ReceiveFragment extends Fragment {
} }
}); });
ivQrCode.setOnClickListener(new View.OnClickListener() { cvQrCode.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Helper.hideKeyboard(getActivity()); Helper.hideKeyboard(getActivity());
@ -315,13 +313,8 @@ public class ReceiveFragment extends Fragment {
return null; return null;
} }
void enableSubaddressButton(boolean enable) { private void enableSubaddressButton(boolean enable) {
bSubaddress.setEnabled(enable); bSubaddress.setEnabled(enable);
if (enable) {
bSubaddress.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_settings_orange_24dp, 0, 0);
} else {
bSubaddress.setCompoundDrawablesWithIntrinsicBounds(0, R.drawable.ic_settings_gray_24dp, 0, 0);
}
} }
void copyAddress() { void copyAddress() {
@ -371,16 +364,13 @@ public class ReceiveFragment extends Fragment {
listenerCallback.setSubtitle(wallet.getAccountLabel()); listenerCallback.setSubtitle(wallet.getAccountLabel());
tvAddress.setText(wallet.getAddress()); tvAddress.setText(wallet.getAddress());
enableCopyAddress(true); enableCopyAddress(true);
enableSubaddressButton(true);
hideProgress(); hideProgress();
generateQr(); generateQr();
} }
private void enableCopyAddress(boolean enable) { private void enableCopyAddress(boolean enable) {
bCopyAddress.setClickable(enable); bCopyAddress.setEnabled(enable);
if (enable)
bCopyAddress.setImageResource(R.drawable.ic_content_copy_black_24dp);
else
bCopyAddress.setImageResource(R.drawable.ic_content_nocopy_black_24dp);
} }
private void loadAndShow(String walletPath, String password) { private void loadAndShow(String walletPath, String password) {

View File

@ -19,7 +19,7 @@ package com.m2049r.xmrwallet;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.support.v4.app.Fragment; import androidx.fragment.app.Fragment;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;

View File

@ -17,13 +17,18 @@
package com.m2049r.xmrwallet; package com.m2049r.xmrwallet;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity; import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.m2049r.xmrwallet.util.Helper; import com.m2049r.xmrwallet.util.Helper;
import com.m2049r.xmrwallet.util.LocaleHelper; import com.m2049r.xmrwallet.util.LocaleHelper;
import java.util.Locale;
import static android.view.WindowManager.LayoutParams; import static android.view.WindowManager.LayoutParams;
public abstract class SecureActivity extends AppCompatActivity { public abstract class SecureActivity extends AppCompatActivity {
@ -37,7 +42,36 @@ public abstract class SecureActivity extends AppCompatActivity {
} }
@Override @Override
protected void attachBaseContext(Context context) { protected void attachBaseContext(Context newBase) {
super.attachBaseContext(LocaleHelper.setLocale(context, LocaleHelper.getLocale(context))); super.attachBaseContext(newBase);
applyOverrideConfiguration(new Configuration());
}
@Override
public void applyOverrideConfiguration(Configuration newConfig) {
super.applyOverrideConfiguration(updateConfigurationIfSupported(newConfig));
}
private Configuration updateConfigurationIfSupported(Configuration config) {
// Configuration.getLocales is added after 24 and Configuration.locale is deprecated in 24
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
if (!config.getLocales().isEmpty()) {
return config;
}
} else {
if (config.locale != null) {
return config;
}
}
Locale locale = LocaleHelper.getPreferredLocale(this);
if (locale != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
config.setLocale(locale);
} else {
config.locale = locale;
}
}
return config;
} }
} }

View File

@ -19,24 +19,24 @@ package com.m2049r.xmrwallet;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.text.InputType; import android.text.InputType;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import com.m2049r.xmrwallet.data.UserNotes;
import com.m2049r.xmrwallet.model.TransactionInfo; import com.m2049r.xmrwallet.model.TransactionInfo;
import com.m2049r.xmrwallet.model.Transfer; import com.m2049r.xmrwallet.model.Transfer;
import com.m2049r.xmrwallet.model.Wallet; import com.m2049r.xmrwallet.model.Wallet;
import com.m2049r.xmrwallet.util.Helper; import com.m2049r.xmrwallet.util.Helper;
import com.m2049r.xmrwallet.data.UserNotes;
import com.m2049r.xmrwallet.widget.Toolbar; import com.m2049r.xmrwallet.widget.Toolbar;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
@ -242,9 +242,9 @@ public class TxFragment extends Fragment {
} else if (info.isPending) { } else if (info.isPending) {
setTxColour(ContextCompat.getColor(getContext(), R.color.tx_pending)); setTxColour(ContextCompat.getColor(getContext(), R.color.tx_pending));
} else if (info.direction == TransactionInfo.Direction.Direction_In) { } else if (info.direction == TransactionInfo.Direction.Direction_In) {
setTxColour(ContextCompat.getColor(getContext(), R.color.tx_green)); setTxColour(ContextCompat.getColor(getContext(), R.color.tx_plus));
} else { } else {
setTxColour(ContextCompat.getColor(getContext(), R.color.tx_red)); setTxColour(ContextCompat.getColor(getContext(), R.color.tx_minus));
} }
Set<String> destinations = new HashSet<>(); Set<String> destinations = new HashSet<>();
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();

View File

@ -16,7 +16,6 @@
package com.m2049r.xmrwallet; package com.m2049r.xmrwallet;
import android.app.AlertDialog;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
@ -27,14 +26,6 @@ import android.content.pm.PackageManager;
import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.os.IBinder; import android.os.IBinder;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
@ -45,6 +36,17 @@ import android.widget.EditText;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AlertDialog;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.navigation.NavigationView;
import com.m2049r.xmrwallet.data.BarcodeData; import com.m2049r.xmrwallet.data.BarcodeData;
import com.m2049r.xmrwallet.data.TxData; import com.m2049r.xmrwallet.data.TxData;
import com.m2049r.xmrwallet.data.UserNotes; import com.m2049r.xmrwallet.data.UserNotes;
@ -58,6 +60,7 @@ import com.m2049r.xmrwallet.model.TransactionInfo;
import com.m2049r.xmrwallet.model.Wallet; import com.m2049r.xmrwallet.model.Wallet;
import com.m2049r.xmrwallet.model.WalletManager; import com.m2049r.xmrwallet.model.WalletManager;
import com.m2049r.xmrwallet.service.WalletService; import com.m2049r.xmrwallet.service.WalletService;
import com.m2049r.xmrwallet.util.ColorHelper;
import com.m2049r.xmrwallet.util.Helper; import com.m2049r.xmrwallet.util.Helper;
import com.m2049r.xmrwallet.util.MoneroThreadPoolExecutor; import com.m2049r.xmrwallet.util.MoneroThreadPoolExecutor;
import com.m2049r.xmrwallet.widget.Toolbar; import com.m2049r.xmrwallet.widget.Toolbar;
@ -312,11 +315,6 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
} }
private void updateStreetMode() { private void updateStreetMode() {
if (isStreetMode()) {
toolbar.setBackgroundResource(R.drawable.backgound_toolbar_streetmode);
} else {
showNet();
}
invalidateOptionsMenu(); invalidateOptionsMenu();
} }
@ -426,10 +424,10 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
toolbar.setBackgroundResource(R.drawable.backgound_toolbar_mainnet); toolbar.setBackgroundResource(R.drawable.backgound_toolbar_mainnet);
break; break;
case NetworkType_Testnet: case NetworkType_Testnet:
toolbar.setBackgroundResource(R.color.colorPrimaryDark); toolbar.setBackgroundResource(ColorHelper.getThemedResourceId(this, R.attr.colorPrimaryDark));
break; break;
case NetworkType_Stagenet: case NetworkType_Stagenet:
toolbar.setBackgroundResource(R.color.colorPrimaryDark); toolbar.setBackgroundResource(ColorHelper.getThemedResourceId(this, R.attr.colorPrimaryDark));
break; break;
default: default:
throw new IllegalStateException("Unsupported Network: " + WalletManager.getInstance().getNetworkType()); throw new IllegalStateException("Unsupported Network: " + WalletManager.getInstance().getNetworkType());
@ -667,7 +665,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
haveWallet = true; haveWallet = true;
invalidateOptionsMenu(); invalidateOptionsMenu();
enableStreetMode(requestStreetMode); if (requestStreetMode) onEnableStreetMode();
final WalletFragment walletFragment = (WalletFragment) final WalletFragment walletFragment = (WalletFragment)
getSupportFragmentManager().findFragmentById(R.id.fragment_container); getSupportFragmentManager().findFragmentById(R.id.fragment_container);
@ -872,7 +870,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
} }
}; };
AlertDialog.Builder builder = new AlertDialog.Builder(this); AlertDialog.Builder builder = new MaterialAlertDialogBuilder(this);
builder.setMessage(getString(R.string.details_alert_message)) builder.setMessage(getString(R.string.details_alert_message))
.setPositiveButton(getString(R.string.details_alert_yes), dialogClickListener) .setPositiveButton(getString(R.string.details_alert_yes), dialogClickListener)
.setNegativeButton(getString(R.string.details_alert_no), dialogClickListener) .setNegativeButton(getString(R.string.details_alert_no), dialogClickListener)
@ -1093,7 +1091,7 @@ public class WalletActivity extends BaseActivity implements WalletFragment.Liste
final LayoutInflater li = LayoutInflater.from(this); final LayoutInflater li = LayoutInflater.from(this);
final View promptsView = li.inflate(R.layout.prompt_rename, null); final View promptsView = li.inflate(R.layout.prompt_rename, null);
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this); final AlertDialog.Builder alertDialogBuilder = new MaterialAlertDialogBuilder(this);
alertDialogBuilder.setView(promptsView); alertDialogBuilder.setView(promptsView);
final EditText etRename = promptsView.findViewById(R.id.etRename); final EditText etRename = promptsView.findViewById(R.id.etRename);

View File

@ -17,12 +17,10 @@
package com.m2049r.xmrwallet; package com.m2049r.xmrwallet;
import android.content.Context; import android.content.Context;
import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
@ -38,6 +36,11 @@ import android.widget.ProgressBar;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
import androidx.recyclerview.widget.RecyclerView;
import com.github.brnunes.swipeablerecyclerview.SwipeableRecyclerViewTouchListener; import com.github.brnunes.swipeablerecyclerview.SwipeableRecyclerViewTouchListener;
import com.m2049r.xmrwallet.layout.TransactionInfoAdapter; import com.m2049r.xmrwallet.layout.TransactionInfoAdapter;
import com.m2049r.xmrwallet.model.TransactionInfo; import com.m2049r.xmrwallet.model.TransactionInfo;
@ -70,6 +73,8 @@ public class WalletFragment extends Fragment
private ProgressBar pbProgress; private ProgressBar pbProgress;
private Button bReceive; private Button bReceive;
private Button bSend; private Button bSend;
private ImageView ivStreetGunther;
private Drawable streetGunther = null;
private Spinner sCurrency; private Spinner sCurrency;
@ -97,11 +102,12 @@ public class WalletFragment extends Fragment
Bundle savedInstanceState) { Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_wallet, container, false); View view = inflater.inflate(R.layout.fragment_wallet, container, false);
ivStreetGunther = view.findViewById(R.id.ivStreetGunther);
tvStreetView = view.findViewById(R.id.tvStreetView); tvStreetView = view.findViewById(R.id.tvStreetView);
llBalance = view.findViewById(R.id.llBalance); llBalance = view.findViewById(R.id.llBalance);
flExchange = view.findViewById(R.id.flExchange); flExchange = view.findViewById(R.id.flExchange);
((ProgressBar) view.findViewById(R.id.pbExchange)).getIndeterminateDrawable(). ((ProgressBar) view.findViewById(R.id.pbExchange)).getIndeterminateDrawable().
setColorFilter(getResources().getColor(R.color.trafficGray), setColorFilter(getResources().getColor(R.color.progress_circle),
android.graphics.PorterDuff.Mode.MULTIPLY); android.graphics.PorterDuff.Mode.MULTIPLY);
tvProgress = view.findViewById(R.id.tvProgress); tvProgress = view.findViewById(R.id.tvProgress);
@ -199,13 +205,15 @@ public class WalletFragment extends Fragment
void showBalance(String balance) { void showBalance(String balance) {
tvBalance.setText(balance); tvBalance.setText(balance);
if (!activityCallback.isStreetMode()) { final boolean streetMode = activityCallback.isStreetMode();
if (!streetMode) {
llBalance.setVisibility(View.VISIBLE); llBalance.setVisibility(View.VISIBLE);
tvStreetView.setVisibility(View.INVISIBLE); tvStreetView.setVisibility(View.INVISIBLE);
} else { } else {
llBalance.setVisibility(View.INVISIBLE); llBalance.setVisibility(View.INVISIBLE);
tvStreetView.setVisibility(View.VISIBLE); tvStreetView.setVisibility(View.VISIBLE);
} }
setStreetModeBackground(streetMode);
} }
void showUnconfirmed(double unconfirmedAmount) { void showUnconfirmed(double unconfirmedAmount) {
@ -537,4 +545,13 @@ public class WalletFragment extends Fragment
} }
} }
public void setStreetModeBackground(boolean enable) {
//TODO figure out why gunther disappears on return from send although he is still set
if (enable) {
if (streetGunther == null)
streetGunther = ContextCompat.getDrawable(getContext(), R.drawable.ic_gunther_streetmode);
ivStreetGunther.setImageDrawable(streetGunther);
} else
ivStreetGunther.setImageDrawable(null);
}
} }

View File

@ -20,9 +20,12 @@ package com.m2049r.xmrwallet;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.os.Build;
import com.m2049r.xmrwallet.model.NetworkType; import com.m2049r.xmrwallet.model.NetworkType;
import com.m2049r.xmrwallet.util.DayNightMode;
import com.m2049r.xmrwallet.util.LocaleHelper; import com.m2049r.xmrwallet.util.LocaleHelper;
import com.m2049r.xmrwallet.util.NightmodeHelper;
import timber.log.Timber; import timber.log.Timber;
@ -34,18 +37,23 @@ public class XmrWalletApplication extends Application {
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
Timber.plant(new Timber.DebugTree()); Timber.plant(new Timber.DebugTree());
} }
NightmodeHelper.setPreferredNightmode(this);
} }
@Override @Override
protected void attachBaseContext(Context context) { protected void attachBaseContext(Context context) {
super.attachBaseContext(LocaleHelper.setLocale(context, LocaleHelper.getLocale(context))); super.attachBaseContext(LocaleHelper.setPreferredLocale(context));
} }
@Override @Override
public void onConfigurationChanged(Configuration configuration) { public void onConfigurationChanged(Configuration configuration) {
super.onConfigurationChanged(configuration); super.onConfigurationChanged(configuration);
LocaleHelper.updateSystemDefaultLocale(configuration.locale); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
LocaleHelper.setLocale(XmrWalletApplication.this, LocaleHelper.getLocale(XmrWalletApplication.this)); LocaleHelper.updateSystemDefaultLocale(configuration.getLocales().get(0));
} else {
LocaleHelper.updateSystemDefaultLocale(configuration.locale);
}
LocaleHelper.setPreferredLocale(this);
} }
static public NetworkType getNetworkType() { static public NetworkType getNetworkType() {
@ -54,7 +62,7 @@ public class XmrWalletApplication extends Application {
return NetworkType.NetworkType_Mainnet; return NetworkType.NetworkType_Mainnet;
case "stagenet": case "stagenet":
return NetworkType.NetworkType_Stagenet; return NetworkType.NetworkType_Stagenet;
case "testnet": case "devnet": // flavors cannot start with "test"
return NetworkType.NetworkType_Testnet; return NetworkType.NetworkType_Testnet;
default: default:
throw new IllegalStateException("unknown net flavor " + BuildConfig.FLAVOR_net); throw new IllegalStateException("unknown net flavor " + BuildConfig.FLAVOR_net);

View File

@ -16,26 +16,25 @@
package com.m2049r.xmrwallet.dialog; package com.m2049r.xmrwallet.dialog;
import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.DialogFragment; import androidx.fragment.app.DialogFragment;
import android.support.v4.app.Fragment; import androidx.fragment.app.Fragment;
import android.support.v4.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import android.support.v4.app.FragmentTransaction; import androidx.fragment.app.FragmentTransaction;
import android.text.Html; import android.text.Html;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.m2049r.xmrwallet.BuildConfig; import com.m2049r.xmrwallet.BuildConfig;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import java.io.BufferedReader; import java.io.BufferedReader;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import timber.log.Timber; import timber.log.Timber;
@ -63,15 +62,15 @@ public class AboutFragment extends DialogFragment {
((TextView) view.findViewById(R.id.tvHelp)).setText(Html.fromHtml(getLicencesHtml())); ((TextView) view.findViewById(R.id.tvHelp)).setText(Html.fromHtml(getLicencesHtml()));
((TextView) view.findViewById(R.id.tvVersion)).setText(getString(R.string.about_version, BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE)); ((TextView) view.findViewById(R.id.tvVersion)).setText(getString(R.string.about_version, BuildConfig.VERSION_NAME, BuildConfig.VERSION_CODE));
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity())
builder.setView(view); .setView(view)
builder.setNegativeButton(R.string.about_close, .setNegativeButton(R.string.about_close,
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
dialog.dismiss(); dialog.dismiss();
} }
}); });
return builder.create(); return builder.create();
} }

View File

@ -16,19 +16,20 @@
package com.m2049r.xmrwallet.dialog; package com.m2049r.xmrwallet.dialog;
import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.Html; import android.text.Html;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
public class CreditsFragment extends DialogFragment { public class CreditsFragment extends DialogFragment {
@ -54,16 +55,15 @@ public class CreditsFragment extends DialogFragment {
((TextView) view.findViewById(R.id.tvCredits)).setText(Html.fromHtml(getString(R.string.credits_text))); ((TextView) view.findViewById(R.id.tvCredits)).setText(Html.fromHtml(getString(R.string.credits_text)));
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity())
builder.setView(view); .setView(view)
builder.setNegativeButton(R.string.about_close, .setNegativeButton(R.string.about_close,
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
dialog.dismiss(); dialog.dismiss();
} }
}); });
return builder.create(); return builder.create();
} }
} }

View File

@ -16,19 +16,20 @@
package com.m2049r.xmrwallet.dialog; package com.m2049r.xmrwallet.dialog;
import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.Html; import android.text.Html;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
public class HelpFragment extends DialogFragment { public class HelpFragment extends DialogFragment {
@ -65,15 +66,15 @@ public class HelpFragment extends DialogFragment {
if (helpId > 0) if (helpId > 0)
((TextView) view.findViewById(R.id.tvHelp)).setText(Html.fromHtml(getString(helpId))); ((TextView) view.findViewById(R.id.tvHelp)).setText(Html.fromHtml(getString(helpId)));
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity())
builder.setView(view); .setView(view)
builder.setNegativeButton(R.string.help_ok, .setNegativeButton(R.string.help_ok,
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
dialog.dismiss(); dialog.dismiss();
} }
}); });
return builder.create(); return builder.create();
} }
} }

View File

@ -16,19 +16,20 @@
package com.m2049r.xmrwallet.dialog; package com.m2049r.xmrwallet.dialog;
import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.text.Html; import android.text.Html;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import androidx.fragment.app.DialogFragment;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
public class PrivacyFragment extends DialogFragment { public class PrivacyFragment extends DialogFragment {
@ -54,15 +55,15 @@ public class PrivacyFragment extends DialogFragment {
((TextView) view.findViewById(R.id.tvCredits)).setText(Html.fromHtml(getString(R.string.privacy_policy))); ((TextView) view.findViewById(R.id.tvCredits)).setText(Html.fromHtml(getString(R.string.privacy_policy)));
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); MaterialAlertDialogBuilder builder = new MaterialAlertDialogBuilder(getActivity())
builder.setView(view); .setView(view)
builder.setNegativeButton(R.string.about_close, .setNegativeButton(R.string.about_close,
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int id) { public void onClick(DialogInterface dialog, int id) {
dialog.dismiss(); dialog.dismiss();
} }
}); });
return builder.create(); return builder.create();
} }
} }

View File

@ -17,7 +17,6 @@ package com.m2049r.xmrwallet.dialog;
* limitations under the License. * limitations under the License.
*/ */
import android.app.AlertDialog;
import android.content.Context; import android.content.Context;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -26,6 +25,8 @@ import android.view.WindowManager;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.TextView; import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import com.m2049r.xmrwallet.BuildConfig; import com.m2049r.xmrwallet.BuildConfig;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import com.m2049r.xmrwallet.util.Helper; import com.m2049r.xmrwallet.util.Helper;

View File

@ -19,8 +19,6 @@ package com.m2049r.xmrwallet.fragment.send;
import android.content.Context; import android.content.Context;
import android.nfc.NfcManager; import android.nfc.NfcManager;
import android.os.Bundle; import android.os.Bundle;
import android.support.design.widget.TextInputLayout;
import android.support.v7.widget.CardView;
import android.text.Editable; import android.text.Editable;
import android.text.Html; import android.text.Html;
import android.text.InputType; import android.text.InputType;
@ -36,6 +34,7 @@ import android.widget.ImageButton;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.google.android.material.textfield.TextInputLayout;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import com.m2049r.xmrwallet.data.BarcodeData; import com.m2049r.xmrwallet.data.BarcodeData;
import com.m2049r.xmrwallet.data.TxData; import com.m2049r.xmrwallet.data.TxData;
@ -86,7 +85,7 @@ public class SendAddressWizardFragment extends SendWizardFragment {
private EditText etDummy; private EditText etDummy;
private TextInputLayout etAddress; private TextInputLayout etAddress;
private TextInputLayout etNotes; private TextInputLayout etNotes;
private CardView cvScan; private View cvScan;
private View tvPaymentIdIntegrated; private View tvPaymentIdIntegrated;
private TextView tvXmrTo; private TextView tvXmrTo;
private View llXmrTo; private View llXmrTo;

View File

@ -18,6 +18,12 @@ package com.m2049r.xmrwallet.fragment.send;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.textfield.TextInputLayout;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -25,6 +31,8 @@ import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import androidx.appcompat.app.AlertDialog;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import com.m2049r.xmrwallet.data.TxData; import com.m2049r.xmrwallet.data.TxData;
import com.m2049r.xmrwallet.data.TxDataBtc; import com.m2049r.xmrwallet.data.TxDataBtc;

View File

@ -80,12 +80,10 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment {
R.layout.fragment_send_btc_success, container, false); R.layout.fragment_send_btc_success, container, false);
bCopyTxId = view.findViewById(R.id.bCopyTxId); bCopyTxId = view.findViewById(R.id.bCopyTxId);
bCopyTxId.setOnClickListener(new View.OnClickListener() { bCopyTxId.setEnabled(false);
@Override bCopyTxId.setOnClickListener(v -> {
public void onClick(View v) { Helper.clipBoardCopy(getActivity(), getString(R.string.label_send_txid), tvTxId.getText().toString());
Helper.clipBoardCopy(getActivity(), getString(R.string.label_send_txid), tvTxId.getText().toString()); Toast.makeText(getActivity(), getString(R.string.message_copy_txid), Toast.LENGTH_SHORT).show();
Toast.makeText(getActivity(), getString(R.string.message_copy_txid), Toast.LENGTH_SHORT).show();
}
}); });
tvXmrToAmount = view.findViewById(R.id.tvXmrToAmount); tvXmrToAmount = view.findViewById(R.id.tvXmrToAmount);
@ -143,7 +141,6 @@ public class SendBtcSuccessWizardFragment extends SendWizardFragment {
if (committedTx != null) { if (committedTx != null) {
tvTxId.setText(committedTx.txId); tvTxId.setText(committedTx.txId);
bCopyTxId.setEnabled(true); bCopyTxId.setEnabled(true);
bCopyTxId.setImageResource(R.drawable.ic_content_copy_black_24dp);
tvTxAmount.setText(getString(R.string.send_amount, Helper.getDisplayAmount(committedTx.amount))); tvTxAmount.setText(getString(R.string.send_amount, Helper.getDisplayAmount(committedTx.amount)));
tvTxFee.setText(getString(R.string.send_fee, Helper.getDisplayAmount(committedTx.fee))); tvTxFee.setText(getString(R.string.send_fee, Helper.getDisplayAmount(committedTx.fee)));
if (btcData != null) { if (btcData != null) {

View File

@ -17,12 +17,18 @@
package com.m2049r.xmrwallet.fragment.send; package com.m2049r.xmrwallet.fragment.send;
import android.os.Bundle; import android.os.Bundle;
import android.support.v7.app.AlertDialog; import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.TextView; import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.textfield.TextInputLayout;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import com.m2049r.xmrwallet.data.TxData; import com.m2049r.xmrwallet.data.TxData;
import com.m2049r.xmrwallet.data.UserNotes; import com.m2049r.xmrwallet.data.UserNotes;
@ -147,7 +153,7 @@ public class SendConfirmWizardFragment extends SendWizardFragment implements Sen
} }
private void showAlert(String title, String message) { private void showAlert(String title, String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); AlertDialog.Builder builder = new MaterialAlertDialogBuilder(getActivity());
builder.setCancelable(true). builder.setCancelable(true).
setTitle(title). setTitle(title).
setMessage(message). setMessage(message).

View File

@ -18,13 +18,7 @@ package com.m2049r.xmrwallet.fragment.send;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.text.InputType; import android.text.InputType;
import android.util.SparseArray; import android.util.SparseArray;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -35,6 +29,12 @@ import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentStatePagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.m2049r.xmrwallet.OnBackPressedListener; import com.m2049r.xmrwallet.OnBackPressedListener;
import com.m2049r.xmrwallet.OnUriScannedListener; import com.m2049r.xmrwallet.OnUriScannedListener;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
@ -93,8 +93,6 @@ public class SendFragment extends Fragment
} }
private EditText etDummy; private EditText etDummy;
private Drawable arrowPrev;
private Drawable arrowNext;
private View llNavBar; private View llNavBar;
private DotBar dotBar; private DotBar dotBar;
@ -125,8 +123,6 @@ public class SendFragment extends Fragment
dotBar = view.findViewById(R.id.dotBar); dotBar = view.findViewById(R.id.dotBar);
bPrev = view.findViewById(R.id.bPrev); bPrev = view.findViewById(R.id.bPrev);
bNext = view.findViewById(R.id.bNext); bNext = view.findViewById(R.id.bNext);
arrowPrev = getResources().getDrawable(R.drawable.ic_navigate_prev_white_24dp);
arrowNext = getResources().getDrawable(R.drawable.ic_navigate_next_white_24dp);
ViewGroup llNotice = view.findViewById(R.id.llNotice); ViewGroup llNotice = view.findViewById(R.id.llNotice);
Notice.showAll(llNotice, ".*_send"); Notice.showAll(llNotice, ".*_send");
@ -214,16 +210,16 @@ public class SendFragment extends Fragment
CharSequence nextLabel = pagerAdapter.getPageTitle(position + 1); CharSequence nextLabel = pagerAdapter.getPageTitle(position + 1);
bNext.setText(nextLabel); bNext.setText(nextLabel);
if (nextLabel != null) { if (nextLabel != null) {
bNext.setCompoundDrawablesWithIntrinsicBounds(null, null, arrowNext, null); bNext.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_navigate_next_white_24dp, 0);
} else { } else {
bNext.setCompoundDrawables(null, null, null, null); bNext.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
} }
CharSequence prevLabel = pagerAdapter.getPageTitle(position - 1); CharSequence prevLabel = pagerAdapter.getPageTitle(position - 1);
bPrev.setText(prevLabel); bPrev.setText(prevLabel);
if (prevLabel != null) { if (prevLabel != null) {
bPrev.setCompoundDrawablesWithIntrinsicBounds(arrowPrev, null, null, null); bPrev.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_navigate_prev_white_24dp, 0, 0, 0);
} else { } else {
bPrev.setCompoundDrawables(null, null, null, null); bPrev.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
} }
} }

View File

@ -76,12 +76,10 @@ public class SendSuccessWizardFragment extends SendWizardFragment {
R.layout.fragment_send_success, container, false); R.layout.fragment_send_success, container, false);
bCopyTxId = view.findViewById(R.id.bCopyTxId); bCopyTxId = view.findViewById(R.id.bCopyTxId);
bCopyTxId.setOnClickListener(new View.OnClickListener() { bCopyTxId.setEnabled(false);
@Override bCopyTxId.setOnClickListener(v -> {
public void onClick(View v) { Helper.clipBoardCopy(getActivity(), getString(R.string.label_send_txid), tvTxId.getText().toString());
Helper.clipBoardCopy(getActivity(), getString(R.string.label_send_txid), tvTxId.getText().toString()); Toast.makeText(getActivity(), getString(R.string.message_copy_txid), Toast.LENGTH_SHORT).show();
Toast.makeText(getActivity(), getString(R.string.message_copy_txid), Toast.LENGTH_SHORT).show();
}
}); });
tvTxId = view.findViewById(R.id.tvTxId); tvTxId = view.findViewById(R.id.tvTxId);
@ -116,7 +114,6 @@ public class SendSuccessWizardFragment extends SendWizardFragment {
if (committedTx != null) { if (committedTx != null) {
tvTxId.setText(committedTx.txId); tvTxId.setText(committedTx.txId);
bCopyTxId.setEnabled(true); bCopyTxId.setEnabled(true);
bCopyTxId.setImageResource(R.drawable.ic_content_copy_black_24dp);
if (sendListener.getActivityCallback().isStreetMode() if (sendListener.getActivityCallback().isStreetMode()
&& (sendListener.getTxData().getAmount() == Wallet.SWEEP_ALL)) { && (sendListener.getTxData().getAmount() == Wallet.SWEEP_ALL)) {

View File

@ -16,7 +16,7 @@
package com.m2049r.xmrwallet.fragment.send; package com.m2049r.xmrwallet.fragment.send;
import android.support.v4.app.Fragment; import androidx.fragment.app.Fragment;
import com.m2049r.xmrwallet.layout.SpendViewPager; import com.m2049r.xmrwallet.layout.SpendViewPager;

View File

@ -17,8 +17,8 @@
package com.m2049r.xmrwallet.layout; package com.m2049r.xmrwallet.layout;
import android.content.Context; import android.content.Context;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.v7.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -170,16 +170,16 @@ public class NodeInfoAdapter extends RecyclerView.Adapter<NodeInfoAdapter.ViewHo
if (nodeInfo.isValid()) { if (nodeInfo.isValid()) {
final double ping = nodeInfo.getResponseTime(); final double ping = nodeInfo.getResponseTime();
if (ping < NodeInfo.PING_GOOD) { if (ping < NodeInfo.PING_GOOD) {
return R.drawable.ic_signal_wifi_4_bar_black_24dp; return R.drawable.ic_signal_wifi_4_bar_24dp;
} else if (ping < NodeInfo.PING_MEDIUM) { } else if (ping < NodeInfo.PING_MEDIUM) {
return R.drawable.ic_signal_wifi_3_bar_black_24dp; return R.drawable.ic_signal_wifi_3_bar_24dp;
} else if (ping < NodeInfo.PING_BAD) { } else if (ping < NodeInfo.PING_BAD) {
return R.drawable.ic_signal_wifi_2_bar_black_24dp; return R.drawable.ic_signal_wifi_2_bar_24dp;
} else { } else {
return R.drawable.ic_signal_wifi_1_bar_black_24dp; return R.drawable.ic_signal_wifi_1_bar_24dp;
} }
} else { } else {
return R.drawable.ic_signal_wifi_off_black_24dp; return R.drawable.ic_signal_wifi_off_24dp;
} }
} }

View File

@ -17,7 +17,7 @@
package com.m2049r.xmrwallet.layout; package com.m2049r.xmrwallet.layout;
import android.content.Context; import android.content.Context;
import android.support.v4.view.ViewPager; import androidx.viewpager.widget.ViewPager;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.MotionEvent; import android.view.MotionEvent;

View File

@ -17,8 +17,8 @@
package com.m2049r.xmrwallet.layout; package com.m2049r.xmrwallet.layout;
import android.content.Context; import android.content.Context;
import android.support.v4.content.ContextCompat; import androidx.core.content.ContextCompat;
import android.support.v7.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -30,7 +30,6 @@ import com.m2049r.xmrwallet.model.TransactionInfo;
import com.m2049r.xmrwallet.util.Helper; import com.m2049r.xmrwallet.util.Helper;
import com.m2049r.xmrwallet.data.UserNotes; import com.m2049r.xmrwallet.data.UserNotes;
import java.math.BigDecimal;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
@ -61,8 +60,8 @@ public class TransactionInfoAdapter extends RecyclerView.Adapter<TransactionInfo
public TransactionInfoAdapter(Context context, OnInteractionListener listener) { public TransactionInfoAdapter(Context context, OnInteractionListener listener) {
this.context = context; this.context = context;
inboundColour = ContextCompat.getColor(context, R.color.tx_green); inboundColour = ContextCompat.getColor(context, R.color.tx_plus);
outboundColour = ContextCompat.getColor(context, R.color.tx_red); outboundColour = ContextCompat.getColor(context, R.color.tx_minus);
pendingColour = ContextCompat.getColor(context, R.color.tx_pending); pendingColour = ContextCompat.getColor(context, R.color.tx_pending);
failedColour = ContextCompat.getColor(context, R.color.tx_failed); failedColour = ContextCompat.getColor(context, R.color.tx_failed);
infoItems = new ArrayList<>(); infoItems = new ArrayList<>();

View File

@ -17,8 +17,8 @@
package com.m2049r.xmrwallet.layout; package com.m2049r.xmrwallet.layout;
import android.content.Context; import android.content.Context;
import android.support.v7.widget.PopupMenu; import androidx.appcompat.widget.PopupMenu;
import android.support.v7.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;

View File

@ -16,8 +16,8 @@
package com.m2049r.xmrwallet.model; package com.m2049r.xmrwallet.model;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.Nullable; import androidx.annotation.Nullable;
import com.m2049r.xmrwallet.data.TxData; import com.m2049r.xmrwallet.data.TxData;

View File

@ -18,14 +18,15 @@ package com.m2049r.xmrwallet.onboarding;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.Button;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;
import com.google.android.material.tabs.TabLayout;
import com.m2049r.xmrwallet.LoginActivity; import com.m2049r.xmrwallet.LoginActivity;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import com.m2049r.xmrwallet.util.KeyStoreHelper; import com.m2049r.xmrwallet.util.KeyStoreHelper;
@ -44,7 +45,7 @@ public class OnBoardingActivity extends AppCompatActivity implements OnBoardingA
nextButton = findViewById(R.id.buttonNext); nextButton = findViewById(R.id.buttonNext);
pager = findViewById(R.id.pager); pager = findViewById(R.id.pager);
pagerAdapter = new OnBoardingAdapter(getApplicationContext(), this); pagerAdapter = new OnBoardingAdapter(this, this);
pager.setAdapter(pagerAdapter); pager.setAdapter(pagerAdapter);
int pixels = (int) TypedValue.applyDimension( int pixels = (int) TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP, 16, getResources().getDisplayMetrics()); TypedValue.COMPLEX_UNIT_DIP, 16, getResources().getDisplayMetrics());

View File

@ -18,9 +18,6 @@ package com.m2049r.xmrwallet.onboarding;
import android.content.Context; import android.content.Context;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.support.annotation.NonNull;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.PagerAdapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -28,6 +25,10 @@ import android.widget.CheckBox;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.PagerAdapter;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import timber.log.Timber; import timber.log.Timber;

View File

@ -18,10 +18,11 @@
package com.m2049r.xmrwallet.onboarding; package com.m2049r.xmrwallet.onboarding;
import android.content.Context; import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.MotionEvent; import android.view.MotionEvent;
import androidx.viewpager.widget.ViewPager;
public class OnBoardingViewPager extends ViewPager { public class OnBoardingViewPager extends ViewPager {
public enum SwipeDirection { public enum SwipeDirection {

View File

@ -31,9 +31,10 @@ import android.os.IBinder;
import android.os.Looper; import android.os.Looper;
import android.os.Message; import android.os.Message;
import android.os.Process; import android.os.Process;
import android.support.annotation.Nullable;
import android.support.annotation.RequiresApi; import androidx.annotation.Nullable;
import android.support.v4.app.NotificationCompat; import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationCompat;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import com.m2049r.xmrwallet.WalletActivity; import com.m2049r.xmrwallet.WalletActivity;
@ -429,7 +430,7 @@ public class WalletService extends Service {
@Override @Override
protected void attachBaseContext(Context context) { protected void attachBaseContext(Context context) {
super.attachBaseContext(LocaleHelper.setLocale(context, LocaleHelper.getLocale(context))); super.attachBaseContext(LocaleHelper.setPreferredLocale(context));
} }
public class WalletServiceBinder extends Binder { public class WalletServiceBinder extends Binder {

View File

@ -18,7 +18,7 @@
package com.m2049r.xmrwallet.service.exchange.api; package com.m2049r.xmrwallet.service.exchange.api;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
public interface ExchangeApi { public interface ExchangeApi {

View File

@ -18,8 +18,8 @@
package com.m2049r.xmrwallet.service.exchange.ecb; package com.m2049r.xmrwallet.service.exchange.ecb;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi; import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback; import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;

View File

@ -16,7 +16,7 @@
package com.m2049r.xmrwallet.service.exchange.ecb; package com.m2049r.xmrwallet.service.exchange.ecb;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate; import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;

View File

@ -16,8 +16,8 @@
package com.m2049r.xmrwallet.service.exchange.kraken; package com.m2049r.xmrwallet.service.exchange.kraken;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.support.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi; import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback; import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;

View File

@ -16,7 +16,7 @@
package com.m2049r.xmrwallet.service.exchange.kraken; package com.m2049r.xmrwallet.service.exchange.kraken;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeException; import com.m2049r.xmrwallet.service.exchange.api.ExchangeException;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate; import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;

View File

@ -18,7 +18,7 @@
package com.m2049r.xmrwallet.service.exchange.krakenEcb; package com.m2049r.xmrwallet.service.exchange.krakenEcb;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi; import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback; import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;

View File

@ -16,12 +16,10 @@
package com.m2049r.xmrwallet.service.exchange.krakenEcb; package com.m2049r.xmrwallet.service.exchange.krakenEcb;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate; import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;
import java.util.Date;
class ExchangeRateImpl implements ExchangeRate { class ExchangeRateImpl implements ExchangeRate {
private final String baseCurrency; private final String baseCurrency;
private final String quoteCurrency; private final String quoteCurrency;

View File

@ -0,0 +1,13 @@
package com.m2049r.xmrwallet.util;
import android.content.Context;
import android.content.res.TypedArray;
import com.m2049r.xmrwallet.R;
public class ColorHelper {
static public int getThemedResourceId(Context ctx, int attrId) {
TypedArray styledAttributes = ctx.getTheme().obtainStyledAttributes(R.style.MyMaterialTheme, new int[]{attrId});
return styledAttributes.getResourceId(0, 0);
}
}

View File

@ -0,0 +1,29 @@
package com.m2049r.xmrwallet.util;
import androidx.appcompat.app.AppCompatDelegate;
public enum DayNightMode {
// order must match R.array.daynight_themes
AUTO(AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM),
DAY(AppCompatDelegate.MODE_NIGHT_NO),
NIGHT(AppCompatDelegate.MODE_NIGHT_YES),
UNKNOWN(AppCompatDelegate.MODE_NIGHT_UNSPECIFIED);
final private int nightMode;
DayNightMode(int nightMode) {
this.nightMode = nightMode;
}
public int getNightMode() {
return nightMode;
}
static public DayNightMode getValue(int nightMode) {
for (DayNightMode mode : DayNightMode.values()) {
if (mode.nightMode == nightMode)
return mode;
}
return UNKNOWN;
}
}

View File

@ -18,7 +18,6 @@ package com.m2049r.xmrwallet.util;
import android.Manifest; import android.Manifest;
import android.app.Activity; import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog; import android.app.Dialog;
import android.content.ClipData; import android.content.ClipData;
import android.content.ClipDescription; import android.content.ClipDescription;
@ -38,8 +37,6 @@ import android.os.Build;
import android.os.CancellationSignal; import android.os.CancellationSignal;
import android.os.Environment; import android.os.Environment;
import android.os.StrictMode; import android.os.StrictMode;
import android.support.design.widget.TextInputLayout;
import android.support.v4.content.ContextCompat;
import android.system.ErrnoException; import android.system.ErrnoException;
import android.system.Os; import android.system.Os;
import android.text.Editable; import android.text.Editable;
@ -55,6 +52,11 @@ import android.view.inputmethod.InputMethodManager;
import android.widget.Button; import android.widget.Button;
import android.widget.TextView; import android.widget.TextView;
import androidx.appcompat.app.AlertDialog;
import androidx.core.content.ContextCompat;
import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import com.google.android.material.textfield.TextInputLayout;
import com.m2049r.xmrwallet.BuildConfig; import com.m2049r.xmrwallet.BuildConfig;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import com.m2049r.xmrwallet.model.NetworkType; import com.m2049r.xmrwallet.model.NetworkType;
@ -424,7 +426,7 @@ public class Helper {
LayoutInflater li = LayoutInflater.from(context); LayoutInflater li = LayoutInflater.from(context);
final View promptsView = li.inflate(R.layout.prompt_password, null); final View promptsView = li.inflate(R.layout.prompt_password, null);
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); AlertDialog.Builder alertDialogBuilder = new MaterialAlertDialogBuilder(context);
alertDialogBuilder.setView(promptsView); alertDialogBuilder.setView(promptsView);
final TextInputLayout etPassword = promptsView.findViewById(R.id.etPassword); final TextInputLayout etPassword = promptsView.findViewById(R.id.etPassword);

View File

@ -24,7 +24,7 @@ import android.os.Build;
import android.security.KeyPairGeneratorSpec; import android.security.KeyPairGeneratorSpec;
import android.security.keystore.KeyGenParameterSpec; import android.security.keystore.KeyGenParameterSpec;
import android.security.keystore.KeyProperties; import android.security.keystore.KeyProperties;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import android.util.Base64; import android.util.Base64;
import java.io.IOException; import java.io.IOException;

View File

@ -8,7 +8,6 @@ import android.preference.PreferenceManager;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashSet;
import java.util.Locale; import java.util.Locale;
public class LocaleHelper { public class LocaleHelper {
@ -17,6 +16,7 @@ public class LocaleHelper {
public static ArrayList<Locale> getAvailableLocales(Context context) { public static ArrayList<Locale> getAvailableLocales(Context context) {
ArrayList<Locale> locales = new ArrayList<>(); ArrayList<Locale> locales = new ArrayList<>();
// R.string.available_locales gets generated in build.gradle by enumerating values-* folders
String[] availableLocales = context.getString(R.string.available_locales).split(","); String[] availableLocales = context.getString(R.string.available_locales).split(",");
for (String localeName : availableLocales) { for (String localeName : availableLocales) {
@ -36,20 +36,22 @@ public class LocaleHelper {
return displayName; return displayName;
} }
public static String getLocale(Context context) { public static Context setPreferredLocale(Context context) {
return getPreferredLocale(context); return setLocale(context, getPreferredLanguageTag(context));
} }
public static Context setLocale(Context context, String locale) { public static Context setAndSaveLocale(Context context, String langaugeTag) {
setPreferredLocale(context, locale); savePreferredLangaugeTag(context, langaugeTag);
return setLocale(context, langaugeTag);
}
private static Context setLocale(Context context, String languageTag) {
Locale locale = (languageTag.isEmpty()) ? SYSTEM_DEFAULT_LOCALE : Locale.forLanguageTag(languageTag);
Locale.setDefault(locale);
Locale newLocale = (locale.isEmpty()) ? SYSTEM_DEFAULT_LOCALE : Locale.forLanguageTag(locale);
Configuration configuration = context.getResources().getConfiguration(); Configuration configuration = context.getResources().getConfiguration();
configuration.setLocale(locale);
Locale.setDefault(newLocale); configuration.setLayoutDirection(locale);
configuration.setLocale(newLocale);
configuration.setLayoutDirection(newLocale);
return context.createConfigurationContext(configuration); return context.createConfigurationContext(configuration);
} }
@ -68,13 +70,18 @@ public class LocaleHelper {
+ str.substring(firstCodePointLen); + str.substring(firstCodePointLen);
} }
private static String getPreferredLocale(Context context) { public static Locale getPreferredLocale(Context context) {
String languageTag = getPreferredLanguageTag(context);
return languageTag.isEmpty() ? SYSTEM_DEFAULT_LOCALE : Locale.forLanguageTag(languageTag);
}
public static String getPreferredLanguageTag(Context context) {
return PreferenceManager.getDefaultSharedPreferences(context) return PreferenceManager.getDefaultSharedPreferences(context)
.getString(PREFERRED_LOCALE_KEY, ""); .getString(PREFERRED_LOCALE_KEY, "");
} }
@SuppressLint("ApplySharedPref") @SuppressLint("ApplySharedPref")
private static void setPreferredLocale(Context context, String locale) { private static void savePreferredLangaugeTag(Context context, String locale) {
PreferenceManager.getDefaultSharedPreferences(context).edit() PreferenceManager.getDefaultSharedPreferences(context).edit()
.putString(PREFERRED_LOCALE_KEY, locale).commit(); .putString(PREFERRED_LOCALE_KEY, locale).commit();
} }

View File

@ -0,0 +1,32 @@
package com.m2049r.xmrwallet.util;
import android.content.Context;
import android.preference.PreferenceManager;
import androidx.appcompat.app.AppCompatDelegate;
public class NightmodeHelper {
private static final String PREFERRED_NIGHTMODE_KEY = "preferred_nightmode";
public static DayNightMode getPreferredNightmode(Context context) {
return DayNightMode.valueOf(PreferenceManager.getDefaultSharedPreferences(context)
.getString(PREFERRED_NIGHTMODE_KEY, "UNKNOWN"));
}
public static void setPreferredNightmode(Context context) {
final DayNightMode mode = DayNightMode.valueOf(PreferenceManager.getDefaultSharedPreferences(context)
.getString(PREFERRED_NIGHTMODE_KEY, "UNKNOWN"));
if (mode == DayNightMode.UNKNOWN) setAndSavePreferredNightmode(context, DayNightMode.AUTO);
setNightMode(mode);
}
public static void setAndSavePreferredNightmode(Context context, DayNightMode mode) {
PreferenceManager.getDefaultSharedPreferences(context).edit()
.putString(PREFERRED_NIGHTMODE_KEY, mode.name()).apply();
setNightMode(mode);
}
public static void setNightMode(DayNightMode mode) {
AppCompatDelegate.setDefaultNightMode(mode.getNightMode());
}
}

View File

@ -18,8 +18,8 @@ package com.m2049r.xmrwallet.util;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
import android.support.v4.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import android.support.v4.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;

View File

@ -19,7 +19,7 @@
package com.m2049r.xmrwallet.widget; package com.m2049r.xmrwallet.widget;
import android.content.Context; import android.content.Context;
import android.support.design.widget.TextInputLayout; import com.google.android.material.textfield.TextInputLayout;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.widget.EditText; import android.widget.EditText;

View File

@ -20,7 +20,7 @@ package com.m2049r.xmrwallet.widget;
import android.content.Context; import android.content.Context;
import android.graphics.Rect; import android.graphics.Rect;
import android.support.v7.widget.AppCompatAutoCompleteTextView; import androidx.appcompat.widget.AppCompatAutoCompleteTextView;
import android.util.AttributeSet; import android.util.AttributeSet;
public class DropDownEditText extends AppCompatAutoCompleteTextView { public class DropDownEditText extends AppCompatAutoCompleteTextView {

View File

@ -28,13 +28,13 @@ import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.ProgressBar; import android.widget.ProgressBar;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import com.google.android.material.textfield.TextInputLayout;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi; import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback; import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;
@ -51,7 +51,7 @@ import timber.log.Timber;
public class ExchangeEditText extends LinearLayout { public class ExchangeEditText extends LinearLayout {
private double getEnteredAmount() { private double getEnteredAmount() {
String enteredAmount = etAmountA.getText().toString(); String enteredAmount = etAmountA.getEditText().getText().toString();
try { try {
return Double.parseDouble(enteredAmount); return Double.parseDouble(enteredAmount);
} catch (NumberFormatException ex) { } catch (NumberFormatException ex) {
@ -98,7 +98,7 @@ public class ExchangeEditText extends LinearLayout {
public void setAmount(String nativeAmount) { public void setAmount(String nativeAmount) {
if (nativeAmount != null) { if (nativeAmount != null) {
etAmountA.setText(nativeAmount); etAmountA.getEditText().setText(nativeAmount);
tvAmountB.setText(null); tvAmountB.setText(null);
if (sCurrencyA.getSelectedItemPosition() != 0) if (sCurrencyA.getSelectedItemPosition() != 0)
sCurrencyA.setSelection(0, true); // set native currency & trigger exchange sCurrencyA.setSelection(0, true); // set native currency & trigger exchange
@ -116,12 +116,12 @@ public class ExchangeEditText extends LinearLayout {
public String getNativeAmount() { public String getNativeAmount() {
if (isExchangeInProgress()) return null; if (isExchangeInProgress()) return null;
if (getCurrencyA() == 0) if (getCurrencyA() == 0)
return getCleanAmountString(etAmountA.getText().toString()); return getCleanAmountString(etAmountA.getEditText().getText().toString());
else else
return getCleanAmountString(tvAmountB.getText().toString()); return getCleanAmountString(tvAmountB.getText().toString());
} }
EditText etAmountA; TextInputLayout etAmountA;
TextView tvAmountB; TextView tvAmountB;
Spinner sCurrencyA; Spinner sCurrencyA;
Spinner sCurrencyB; Spinner sCurrencyB;
@ -188,7 +188,7 @@ public class ExchangeEditText extends LinearLayout {
protected void onFinishInflate() { protected void onFinishInflate() {
super.onFinishInflate(); super.onFinishInflate();
etAmountA = findViewById(R.id.etAmountA); etAmountA = findViewById(R.id.etAmountA);
etAmountA.addTextChangedListener(new TextWatcher() { etAmountA.getEditText().addTextChangedListener(new TextWatcher() {
@Override @Override
public void afterTextChanged(Editable s) { public void afterTextChanged(Editable s) {
doExchange(); doExchange();
@ -223,7 +223,7 @@ public class ExchangeEditText extends LinearLayout {
// make progress circle gray // make progress circle gray
pbExchange.getIndeterminateDrawable(). pbExchange.getIndeterminateDrawable().
setColorFilter(getResources().getColor(R.color.trafficGray), setColorFilter(getResources().getColor(R.color.progress_circle),
android.graphics.PorterDuff.Mode.MULTIPLY); android.graphics.PorterDuff.Mode.MULTIPLY);
sCurrencyA.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { sCurrencyA.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@ -363,7 +363,7 @@ public class ExchangeEditText extends LinearLayout {
boolean prepareExchange() { boolean prepareExchange() {
Timber.d("prepareExchange()"); Timber.d("prepareExchange()");
String enteredAmount = etAmountA.getText().toString(); String enteredAmount = etAmountA.getEditText().getText().toString();
if (!enteredAmount.isEmpty()) { if (!enteredAmount.isEmpty()) {
String cleanAmount = getCleanAmountString(enteredAmount); String cleanAmount = getCleanAmountString(enteredAmount);
Timber.d("cleanAmount = %s", cleanAmount); Timber.d("cleanAmount = %s", cleanAmount);

View File

@ -21,7 +21,6 @@ package com.m2049r.xmrwallet.widget;
import android.content.Context; import android.content.Context;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.support.design.widget.TextInputLayout;
import android.text.Editable; import android.text.Editable;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.util.AttributeSet; import android.util.AttributeSet;
@ -37,11 +36,13 @@ import android.widget.ProgressBar;
import android.widget.Spinner; import android.widget.Spinner;
import android.widget.TextView; import android.widget.TextView;
import com.google.android.material.textfield.TextInputLayout;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import com.m2049r.xmrwallet.model.Wallet; import com.m2049r.xmrwallet.model.Wallet;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi; import com.m2049r.xmrwallet.service.exchange.api.ExchangeApi;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback; import com.m2049r.xmrwallet.service.exchange.api.ExchangeCallback;
import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate; import com.m2049r.xmrwallet.service.exchange.api.ExchangeRate;
import com.m2049r.xmrwallet.util.ColorHelper;
import com.m2049r.xmrwallet.util.Helper; import com.m2049r.xmrwallet.util.Helper;
import java.util.ArrayList; import java.util.ArrayList;
@ -178,10 +179,9 @@ public class ExchangeView extends LinearLayout {
// make progress circle gray // make progress circle gray
pbExchange.getIndeterminateDrawable(). pbExchange.getIndeterminateDrawable().
setColorFilter(getResources().getColor(R.color.trafficGray), setColorFilter(getResources().getColor(ColorHelper.getThemedResourceId(getContext(), R.attr.colorPrimaryVariant)),
android.graphics.PorterDuff.Mode.MULTIPLY); android.graphics.PorterDuff.Mode.MULTIPLY);
sCurrencyA.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { sCurrencyA.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override @Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) { public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
@ -203,12 +203,6 @@ public class ExchangeView extends LinearLayout {
if (position != 0) { // if not XMR, select XMR on other if (position != 0) { // if not XMR, select XMR on other
sCurrencyA.setSelection(0, true); sCurrencyA.setSelection(0, true);
} }
parentView.post(new Runnable() {
@Override
public void run() {
((TextView) parentView.getChildAt(0)).setTextColor(getResources().getColor(R.color.moneroGray));
}
});
doExchange(); doExchange();
} }

View File

@ -23,15 +23,16 @@ import android.os.Build;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.widget.Button; import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.TextView; import android.widget.TextView;
import com.google.android.material.appbar.MaterialToolbar;
import com.m2049r.xmrwallet.R; import com.m2049r.xmrwallet.R;
import timber.log.Timber; import timber.log.Timber;
public class Toolbar extends android.support.v7.widget.Toolbar { public class Toolbar extends MaterialToolbar {
public interface OnButtonListener { public interface OnButtonListener {
void onButton(int type); void onButton(int type);
} }
@ -45,7 +46,7 @@ public class Toolbar extends android.support.v7.widget.Toolbar {
ImageView toolbarImage; ImageView toolbarImage;
TextView toolbarTitle; TextView toolbarTitle;
TextView toolbarSubtitle; TextView toolbarSubtitle;
Button bCredits; ImageButton bCredits;
public Toolbar(Context context) { public Toolbar(Context context) {
super(context); super(context);
@ -125,33 +126,27 @@ public class Toolbar extends android.support.v7.widget.Toolbar {
switch (type) { switch (type) {
case BUTTON_BACK: case BUTTON_BACK:
Timber.d("BUTTON_BACK"); Timber.d("BUTTON_BACK");
bCredits.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_arrow_back_white_24dp, 0, 0, 0); bCredits.setImageResource(R.drawable.ic_arrow_back_white_24dp);
bCredits.setText(null);
bCredits.setVisibility(View.VISIBLE); bCredits.setVisibility(View.VISIBLE);
break; break;
case BUTTON_CLOSE: case BUTTON_CLOSE:
Timber.d("BUTTON_CLOSE"); Timber.d("BUTTON_CLOSE");
bCredits.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_close_white_24dp, 0, 0, 0); bCredits.setImageResource(R.drawable.ic_close_white_24dp);
bCredits.setText(R.string.label_close);
bCredits.setVisibility(View.VISIBLE); bCredits.setVisibility(View.VISIBLE);
break; break;
case BUTTON_CREDITS: case BUTTON_CREDITS:
Timber.d("BUTTON_CREDITS"); Timber.d("BUTTON_CREDITS");
bCredits.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_favorite_white_24dp, 0, 0, 0); bCredits.setImageResource(R.drawable.ic_favorite_white_24dp);
bCredits.setText(R.string.label_credits);
bCredits.setVisibility(View.VISIBLE); bCredits.setVisibility(View.VISIBLE);
break; break;
case BUTTON_CANCEL: case BUTTON_CANCEL:
Timber.d("BUTTON_CANCEL"); Timber.d("BUTTON_CANCEL");
bCredits.setCompoundDrawablesWithIntrinsicBounds(R.drawable.ic_close_white_24dp, 0, 0, 0); bCredits.setImageResource(R.drawable.ic_close_white_24dp);
bCredits.setText(R.string.label_cancel);
bCredits.setVisibility(View.VISIBLE); bCredits.setVisibility(View.VISIBLE);
break; break;
case BUTTON_NONE: case BUTTON_NONE:
default: default:
Timber.d("BUTTON_NONE"); Timber.d("BUTTON_NONE");
bCredits.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0);
bCredits.setText(null);
bCredits.setVisibility(View.INVISIBLE); bCredits.setVisibility(View.INVISIBLE);
} }
buttonType = type; buttonType = type;

View File

@ -16,7 +16,7 @@
package com.m2049r.xmrwallet.xmrto.api; package com.m2049r.xmrwallet.xmrto.api;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
public interface XmrToApi { public interface XmrToApi {

View File

@ -16,7 +16,7 @@
package com.m2049r.xmrwallet.xmrto.network; package com.m2049r.xmrwallet.xmrto.network;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import com.m2049r.xmrwallet.xmrto.api.CreateOrder; import com.m2049r.xmrwallet.xmrto.api.CreateOrder;
import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; import com.m2049r.xmrwallet.xmrto.api.XmrToCallback;

View File

@ -16,7 +16,7 @@
package com.m2049r.xmrwallet.xmrto.network; package com.m2049r.xmrwallet.xmrto.network;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; import com.m2049r.xmrwallet.xmrto.api.XmrToCallback;
import com.m2049r.xmrwallet.xmrto.api.QueryOrderParameters; import com.m2049r.xmrwallet.xmrto.api.QueryOrderParameters;

View File

@ -16,7 +16,7 @@
package com.m2049r.xmrwallet.xmrto.network; package com.m2049r.xmrwallet.xmrto.network;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import com.m2049r.xmrwallet.xmrto.api.XmrToCallback; import com.m2049r.xmrwallet.xmrto.api.XmrToCallback;
import com.m2049r.xmrwallet.xmrto.api.QueryOrderStatus; import com.m2049r.xmrwallet.xmrto.api.QueryOrderStatus;

View File

@ -16,7 +16,7 @@
package com.m2049r.xmrwallet.xmrto.network; package com.m2049r.xmrwallet.xmrto.network;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import org.json.JSONObject; import org.json.JSONObject;

View File

@ -16,7 +16,7 @@
package com.m2049r.xmrwallet.xmrto.network; package com.m2049r.xmrwallet.xmrto.network;
import android.support.annotation.NonNull; import androidx.annotation.NonNull;
import com.m2049r.xmrwallet.util.OkHttpHelper; import com.m2049r.xmrwallet.util.OkHttpHelper;
import com.m2049r.xmrwallet.xmrto.XmrToError; import com.m2049r.xmrwallet.xmrto.XmrToError;

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorSecondary" android:state_enabled="true"/>
<item android:color="?attr/colorOnBackground"/>
</selector>

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,72 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="774dp"
android:height="774dp"
android:viewportWidth="774"
android:viewportHeight="774">
<path
android:pathData="M595.29,577.34c-9.38,-25.79 -17.49,-52 -27,-77.78 -9.19,-25 -19,-49.82 -27.29,-75.15 -8.62,-26.23 -17.93,-52.24 -27.3,-78.21 -8.09,-22.43 -18.19,-44.59 -33.22,-63.28a223,223 0,0 0,-48.06 -44.33c-34.44,-23.42 -79.24,-35.76 -120.51,-26.7 -20.09,4.41 -39.15,14.47 -53.06,29.76C243.68,258.34 232,279.29 223.34,300c-18.75,45 -21.34,94.88 -13.26,142.5 4.52,26.73 12,52.85 19.94,78.73 7.86,25.65 16.56,50.84 27.47,75.38 10.75,24.17 23.89,46.71 38,69s27.69,44.76 42,66.86Q343.64,742 350,751.4c2.58,-1.38 5.16,-2.81 7.73,-4.24 -11.52,-17.58 -22.59,-35.45 -33.46,-53.44 -13.27,-22 -27.42,-43.5 -39.94,-65.91 -25.39,-45.44 -41.14,-95.93 -54.26,-146.08 -12.66,-48.42 -18.28,-98.42 -5.85,-147.53a211.69,211.69 0,0 1,25.54 -59.8c11.24,-18.07 24.06,-34 43.55,-43.5 36.69,-17.83 82.18,-10 117,8.56 18.45,9.84 34.55,23.17 48.86,38.34 15.7,16.65 27.24,35.37 36,56.51 9.9,24 18.06,48.89 26.46,73.45 8.49,24.82 16.9,49.59 26.12,74.16 18.45,49.18 33.46,99.53 54.69,147.65 0.76,1.73 1.54,3.45 2.32,5.18a12.83,12.83 0,0 0,1.38 -0.11,39.15 39.15,0 0,0 9.41,-5.86c0.12,-0.18 0.22,-0.36 0.33,-0.55Q604.66,603.14 595.29,577.34Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M443,535.05c-9.66,-14.47 -21.79,-27.21 -31.84,-41.43 -10.47,-14.83 -20,-30.6 -26.62,-47.55 -7.14,-18.3 -9.86,-37.42 -11,-56.94 -0.78,-13.7 0,-28.5 -3.77,-41.85 -3,-10.56 -10.65,-19.25 -22.53,-17.91 -12.71,1.44 -20.3,14.87 -24.9,25.38 -6.76,15.46 -8.81,31.15 -7.33,47.95 1.65,18.69 6.22,36.94 12.29,54.66 3.42,10 7.2,19.82 11.25,29.55s8.53,19.33 11.74,29.37c3,9.45 4,18.9 4.94,28.71 0.75,7.39 2.78,17.49 -3,23.42 -0.47,0.49 0.17,1.42 0.76,1 9.13,-7 6.65,-22.64 6,-32.59 -1.15,-17.94 -7.66,-34.25 -14.15,-50.79 -6.71,-17.09 -13.51,-34.11 -18.15,-51.91 -4.73,-18.15 -8.42,-38 -5.61,-56.71 1.91,-12.71 7.55,-28.31 16.85,-37.53 4.52,-4.47 10.76,-6.77 16.94,-4.31 5.31,2.11 8,7.5 9.47,12.7 3.6,13 2.5,27.56 3.26,40.88 1,18.45 3.34,36.79 9.59,54.27 6.4,17.89 15.86,34.49 26.79,50 10.74,15.24 22.42,31.16 36.23,43.76C441.68,538.41 444.16,536.76 443,535.05Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M424.89,538.23c-10.41,-8.27 -19.14,-16.77 -25.73,-28.46 -3.49,-6.19 -6.3,-12.72 -9.62,-19 -3.5,-6.59 -7.23,-13 -10.51,-19.76 -7.34,-15 -10.51,-31.46 -12.52,-48a224.34,224.34 0,0 1,-1.86 -24.84c-0.09,-8.38 0.27,-16.77 -0.2,-25.15s-1.77,-23.83 -13.14,-24.78 -16.51,14.32 -18.67,22.85c-7.16,28.24 -0.62,60 9.17,86.81 5.92,16.24 14.6,31.24 19.91,47.73 5.49,17 9.18,35.23 9.74,53.16a0.63,0.63 0,0 0,0.7 0.55,0.64 0.64,0 0,0 0.55,-0.55 173.37,173.37 0,0 0,-18.64 -82.25c-13.07,-26.27 -21.37,-55.43 -19.77,-85a92.86,92.86 0,0 1,3.55 -22.09c1.66,-5.49 4.37,-13.78 10.31,-16.09 13.33,-5.19 11.89,25.67 11.87,31.86 -0.12,29.29 1.57,60.74 14.6,87.53 3.37,6.94 7.26,13.61 10.9,20.41 3.56,6.65 6.55,13.59 10.38,20.1 6.53,11.11 15.39,21.56 26.81,27.82C424.42,542 426.54,539.55 424.89,538.23Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M390.13,523.12c-3.83,-9.46 -8.8,-18.37 -13.47,-27.43 -5.16,-10 -9.92,-20.29 -14.33,-30.65a282.84,282.84 0,0 1,-11.21 -32.67c-3,-10.33 -6.19,-20.71 -7.34,-31.45 -1,-9.14 -1.76,-22.56 4.35,-30.32 1.48,-1.88 2.09,-1.78 3.15,0.45a19.83,19.83 0,0 1,1.51 8.47c0,6 -1.57,12.18 -2.9,18a0.74,0.74 0,1 0,1.43 0.39c3.34,-8.48 7,-18 4.06,-27.15 -1.35,-4.25 -4.78,-8 -9,-4.39 -5,4.23 -6.44,12.42 -7.15,18.49 -1.19,10.21 0.09,20.46 2.39,30.41A328.17,328.17 0,0 0,363 478.36c4.44,9.7 9.19,19.2 14.12,28.65 5.09,9.75 10.05,19.7 12.62,30.46 1.1,4.61 2,9.3 1.18,14 -0.23,1.39 -1.74,9.19 -3.69,9 -1.42,-0.14 -2.63,-4.83 -3,-5.87a45.5,45.5 0,0 1,-1.63 -9.26c-0.5,-5.42 0.09,-11 -1.19,-16.27a1.51,1.51 0,0 0,-2.9 0c-2,8.35 -1.16,19.22 1.39,27.42 1.27,4.11 4.85,11.69 10.26,7.92 4.29,-3 5.51,-10.34 5.87,-15.12C396.68,540.57 393.35,531.08 390.13,523.12Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M428.88,498.85c-8.56,-13.8 -18.39,-26.51 -25.68,-41.12 -7.37,-14.77 -13.18,-30.43 -14.77,-47 -2.64,-27.47 4.25,-59.19 -14.31,-82.6 -7.55,-9.52 -20.55,-12.09 -32,-9.49 -12.73,2.88 -22.95,12.59 -29.13,23.77 -7.28,13.2 -9.05,28 -10,42.77 -0.51,7.77 -3,15.42 -2.07,23.25a163.68,163.68 0,0 0,5.22 25.09c5.29,19 13.2,37.26 19.69,55.87 3.39,9.73 7.1,19.44 9.3,29.52s2.57,20.63 6.19,30.25c0.57,1.52 3,1.4 3,-0.4 -0.06,-16.17 -4,-32.89 -9.13,-48.13 -5.58,-16.43 -11.58,-32.68 -17.58,-49 -2.75,-7.46 -5.21,-15 -7.21,-22.72s-4.44,-16.4 -4.4,-24.49c0,-7.45 2,-15 2.57,-22.5a116.16,116.16 0,0 1,3.37 -22.48c3.62,-13.31 11.17,-26.14 23.67,-32.82 11.24,-6 27.13,-5.32 35.19,5.52 17,22.88 9.89,53.54 12.79,79.92 1.79,16.28 7.17,32.17 14.71,46.68s17.2,29.69 28.93,41.37a1.12,1.12 0,0 0,1.53 -0.36A1.1,1.1 0,0 0,428.88 498.85Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M304.52,455.92c-4,-13.63 -5.61,-27.79 -7.6,-41.8 -0.8,-5.64 -2.6,-10.21 -6.69,-14.22 -4.57,-4.49 -6.78,-8.4 -6.94,-15 -0.29,-11.85 3.53,-24.52 7.28,-35.66 3.65,-10.86 9.25,-20.56 15,-30.39a68.62,68.62 0,0 1,8.7 -12.47c2,-2.1 7.48,-7.17 10.78,-4.37 3.68,3.13 -5.42,14.12 -7.32,16.65 -6.39,8.54 -12.2,17 -16.23,27a122.57,122.57 0,0 0,-8.5 40.58c0,0.53 0.84,0.66 0.93,0.13 4.07,-13.45 6.37,-27.47 11.95,-40.44 4.16,-9.67 10.22,-17.67 16.45,-26 3.4,-4.56 9.9,-12.46 7.86,-18.7 -2.55,-7.86 -13.38,-4.05 -17.67,-0.35 -7.41,6.4 -11.85,16.09 -16.74,24.39 -6.95,11.78 -11.31,24.56 -14.59,37.78 -2.61,10.52 -6.21,24.92 0,34.85 1.42,2.25 3.41,3.91 5.28,5.76a16.57,16.57 0,0 1,4.83 9c1.45,7.07 1.92,14.48 3.11,21.62 1.51,9.06 3.14,18.21 6.15,26.91 2.62,7.56 6.24,14.71 9.52,22a117.26,117.26 0,0 1,8.12 25.46c1.71,8.58 2.48,17.39 5.43,25.66 0.71,2 4.09,1.85 3.91,-0.53a177.26,177.26 0,0 0,-7.48 -40C315.86,480.75 308.39,469.05 304.52,455.92Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M456,454.71c-2.94,-8.71 -7.81,-16.54 -12.33,-24.48 -4.68,-8.2 -8.39,-16.39 -9.9,-25.77 -1.29,-8 -2.41,-17.12 -7.44,-23.78 -2.87,-3.81 -7.42,-5.36 -10.45,-0.82 -2.83,4.26 -3.36,10.53 -3.49,15.51 -0.47,19.29 6.36,40.89 16.45,57.24 4.21,6.82 13.87,16.75 11,25.59 -1.69,5.15 -6.19,-0.55 -8.11,-2.77a80.81,80.81 0,0 1,-8.95 -13.12,131.51 131.51,0 0,1 -17.28,-57.64c-1.13,-20.62 0.5,-41.91 -7,-61.59 -3.71,-9.76 -9.35,-19.35 -16.93,-26.61A36.51,36.51 0,0 0,368.31 308c-5.38,-1.86 -11.12,-2.31 -16.53,-4 -3.93,-1.26 -7.26,-3 -9.16,-6.76 -1.59,-3.15 -2.35,-6.66 -3.9,-9.83 -3.42,-7 -11.64,-11.75 -18,-5.4a0.73,0.73 0,0 0,0.07 1,0.72 0.72,0 0,0 0.79,0.1c10.93,-5.53 13.8,7.83 16.67,15.06 2.23,5.59 6.68,8.48 12.23,10.4 9.67,3.35 18.87,3.74 26.66,11.24 7,6.74 12.22,15.79 15.69,24.82 7.26,18.92 5.75,39.41 6.78,59.26A135.67,135.67 0,0 0,413.3 456,105.58 105.58,0 0,0 427,478.25c3.28,3.95 9.21,10.49 14.75,6.33 4.75,-3.57 4.2,-11.35 2.41,-16.27 -3,-8.21 -9.23,-14.74 -13.18,-22.44 -8.17,-16 -15.13,-35.81 -13.15,-54a27.17,27.17 0,0 1,1.71 -7.76c1.58,-3.64 2.91,-0.19 4.3,2.58 3.89,7.76 3.87,16.75 5.93,25 4.64,18.6 19.34,32.81 23,51.77 1.55,8 2.7,16.6 0.79,24.59 -2.16,9.07 -8.58,14.89 -17.14,18.09 -3.19,1.2 -1.8,6.37 1.42,5.15 14.65,-5.55 22.1,-17.22 21.93,-32.78A78.83,78.83 0,0 0,456 454.71Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M358.69,290.32c-8.36,-2.65 -12.15,-13.7 -17.89,-19.65 -7.71,-8 -17.73,-8.7 -26.49,-1.91 -8.54,6.63 -13,16.76 -17.82,26.14 -5.72,11.18 -13.16,21.4 -18.62,32.71 -9.22,19.12 -19.23,42.13 -14.72,63.78 2.29,11 10.44,19 13.74,29.51 1.88,6 2,12.42 2.73,18.59a83.79,83.79 0,0 0,4.5 20.56c4.71,12.41 12.69,23.39 15.92,36.38 2.66,10.69 2.73,24.55 10.42,33.1 1.35,1.5 4.29,-0.07 3.51,-2 -3.69,-9.41 -5.75,-18.7 -7.84,-28.57 -2.25,-10.6 -6.94,-19.81 -11.81,-29.41a88.23,88.23 0,0 1,-7.08 -17.33c-1.68,-6.35 -2.22,-12.89 -2.94,-19.4 -0.59,-5.39 -1.1,-10.8 -3.12,-15.88a90.79,90.79 0,0 0,-6.7 -12.53A46.77,46.77 0,0 1,268 373.54c1.38,-11.38 5.44,-22.43 9.94,-32.91a242.7,242.7 0,0 1,15.73 -29.69c5.56,-9.21 9.72,-19.23 15.45,-28.31 3.57,-5.64 8.83,-12 15.73,-13.39 6.22,-1.23 11.42,3 15.15,7.46 4.43,5.32 10.37,15.89 18.49,15.18a0.79,0.79 0,0 0,0.75 -0.84A0.81,0.81 0,0 0,358.69 290.32Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M297.64,518.14c-1.25,-3.28 -3.41,-6 -5.06,-9.1a82.66,82.66 0,0 1,-5.07 -12c-2.64,-7.65 -4.6,-15.51 -6.9,-23.27 -2.54,-8.58 -5.19,-16.95 -6.54,-25.84 -1.56,-10.19 -2.56,-20.63 -3.59,-30.89 -0.1,-1 -1.58,-1 -1.54,0 0.49,10.22 0,20.4 0.94,30.63 0.9,9.7 3.36,18.77 5.82,28.15 2.17,8.29 4.12,16.63 7,24.71 2.43,6.77 5.46,15.89 11.63,20.1C295.9,521.73 298.34,520 297.64,518.14Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M418.65,363.31c-2.4,-17.5 -12.15,-32.56 -22.54,-46.41a94,94 0,0 0,-12.95 -14.73c-3.82,-3.36 -8.54,-7 -13.94,-6.35a1,1 0,0 0,0 2c5,0.1 9.65,6.09 12.69,9.55a168.24,168.24 0,0 1,10.74 14.05c9.07,12.88 18,26.75 20.09,42.7a3,3 0,0 0,6 -0.17A3.4,3.4 0,0 0,418.65 363.31Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M450.43,406.58c-0.43,-2.25 -0.27,-4.52 -0.8,-6.8s-1.16,-4.36 -1.77,-6.52c-1.07,-3.8 -2.19,-7.6 -3.31,-11.39 -2.08,-7.06 -4.25,-14.1 -6.42,-21.14 -4.05,-13.16 -8.5,-26.3 -15.42,-38.28A98.61,98.61 0,0 0,395 291.57c-10.94,-8 -23.55,-15.88 -36.27,-20.61 -0.82,-0.3 -1.32,0.82 -0.8,1.38 8.88,9.65 21.8,15.38 32.32,23a96.75,96.75 0,0 1,28.2 32.11c6.51,11.89 10.57,24.84 14.47,37.76 2.17,7.19 4.37,14.38 6.45,21.6 1,3.53 2,7.06 3.1,10.56 1.22,3.86 3,7 4.67,10.59C448,410 450.8,408.47 450.43,406.58Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M472.66,471a90.48,90.48 0,0 0,-7 -25.72c-4.18,-9.37 -12,-16.84 -15.55,-26.39 -0.65,-1.75 -3.41,-1.07 -2.84,0.78 2.47,8.06 7.46,14.85 11.17,22.33a88.59,88.59 0,0 1,8.42 27.66c1.31,9.52 2,19.71 -1.38,28.9 -2.76,7.56 -8.83,13.82 -10.8,21.66 -0.72,2.88 3.46,4.86 4.93,2.08 3.81,-7.3 8.57,-14.57 11.39,-22.3C474.27,490.77 473.88,480.54 472.66,471Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M485.07,449c-2.52,-9.83 -6.61,-19.17 -10.83,-28.37 -4.51,-9.83 -8.84,-19.39 -11.55,-29.9s-4.46,-21.1 -7.25,-31.51a154.26,154.26 0,0 0,-32.81 -60.72c-0.49,-0.56 -1.26,0.15 -1,0.76 8.67,18.1 19.83,34.7 25.87,54.05 5.75,18.44 7.2,38.1 14.68,56S479.37,444.2 481,463.84s-0.83,42 -9,60.05a56.57,56.57 0,0 1,-18.64 22.38c-8.39,6 -17.37,8.49 -27.52,9.23a2.61,2.61 0,0 0,0 5.22c17,1.95 34.26,-9.83 44.19,-22.72 12.36,-16 16.34,-37.87 17.45,-57.64C488,469.75 487.72,459.37 485.07,449Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M287.29,290.18c-14.1,18.4 -27.62,39.15 -33.45,61.82a99,99 0,0 0,-3.11 30.18,87.8 87.8,0 0,0 1.57,13.13c0.68,3.29 1.62,8.2 5.07,9.69a1.79,1.79 0,0 0,2.65 -1.52c0.06,-3.57 -2,-7.31 -2.67,-10.83A87.1,87.1 0,0 1,256 379.86a94.94,94.94 0,0 1,3.84 -30.11c3.06,-10.77 8.13,-20.53 13.55,-30.27 5.29,-9.48 11.27,-18.59 14.54,-29C288.1,290 287.52,289.88 287.29,290.18Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M329.32,552.91c-4.84,-5.82 -12.83,-9.57 -19.07,-13.77a149.86,149.86 0,0 1,-20.07 -15.49c-12.5,-11.93 -18.12,-27.46 -22.31,-43.84a137,137 0,0 1,-4.5 -25.25c-0.52,-8 -0.67,-16 -2,-23.87 -1.43,-8.27 -4.83,-15.31 -9.1,-22.45 -5,-8.37 -8.78,-16.57 -9.48,-26.43 -0.73,-10.29 1,-20.58 3.7,-30.48 2.49,-9.23 6.24,-18.44 7,-28 0.08,-1.09 -1.45,-1.14 -1.79,-0.24 -6.25,16.78 -12.8,34.94 -13.56,53a56.52,56.52 0,0 0,4.75 26c3.75,8.22 9.25,15.45 11.58,24.3s2.41,17.75 2.92,26.69a138.92,138.92 0,0 0,4 25.48c4,16.28 9,32.54 20.39,45.3 6.12,6.85 13.5,12.54 21,17.73 4.11,2.84 8.31,5.54 12.5,8.27 3.86,2.52 7.48,5.33 11.82,7C329.45,557.63 330.63,554.48 329.32,552.91Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M411.88,559.77c-15.54,11 -36.18,15.5 -54.94,14.09a87.83,87.83 0,0 1,-27.51 -6.39c-5,-2.08 -10.48,-4.15 -14.66,-7.63 -3.32,-2.76 -6.1,-7.44 -10.62,-8.18a3,3 0,0 0,-2.9 5c7.2,8.29 16.48,13.45 26.53,17.56a88.14,88.14 0,0 0,29.83 6.51,83.69 83.69,0 0,0 29.76,-4.08 64.81,64.81 0,0 0,13.78 -6.38c4.47,-2.78 7.74,-6 11.42,-9.59C413,560.22 412.42,559.39 411.88,559.77Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M496.72,499.41a0.8,0.8 0,0 0,-1.59 0c-3.11,24.18 -18.63,45.85 -38.68,59.11a93.78,93.78 0,0 1,-16.17 8.66c-4.31,1.78 -8.74,3.12 -13,5.12s-8.34,4.25 -12.7,5.94c-3.69,1.43 -7.37,1.24 -11,2.35a2.71,2.71 0,0 0,-1.6 3.92c5.15,7.54 19.79,-1.44 25.45,-4.39 11,-5.72 22.51,-9.51 32.71,-16.79C479.64,549.4 498.82,524.68 496.72,499.41Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M401.35,275c-6.83,-4.7 -12.3,-11 -19,-15.85 -6.3,-4.58 -13.68,-7.58 -21.05,-10 -13.5,-4.38 -27,-6.56 -41.14,-4.4 -13.15,2 -26.08,7.63 -35.49,17.19 -5.37,5.45 -10.05,11.92 -14.49,18.13a71.91,71.91 0,0 0,-10.86 21.24c-0.6,2 2.43,3.32 3.37,1.43a120.45,120.45 0,0 1,13.09 -20.31c4.25,-5.42 8.43,-11.19 13.28,-16.1 8.9,-9 21.21,-14 33.64,-15.64 13.2,-1.73 25.94,0.71 38.48,4.79 6.92,2.25 13.76,4.86 19.87,8.88 6.39,4.2 12,9.49 19,12.75a1.25,1.25 0,0 0,1.3 -2.11Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M755.43,276.23c-33.74,10.51 -64.13,30.28 -98.23,39.52 -1.75,-17.53 2.86,-35.32 -1.9,-52.63a3.71,3.71 0,0 0,-3.52 -2.68c-18.33,1.44 -34.28,12.95 -50.1,21.25 -16.49,8.65 -35.43,12.15 -51.36,21.89 0.13,1.31 0.24,2.62 0.34,3.92q0.29,1.67 0.54,3.33h0c1.78,11.59 2.59,23.36 3.4,35.12h0c0.35,5.06 0.71,10.12 1.14,15.16a4.67,4.67 0,0 0,3.85 -0.2c21.28,-10 39.42,-25.08 59,-37.79 1.61,5.35 1.8,11.09 2.22,16.66 0.55,7.19 1.55,14.06 4.43,20.72 1,2.21 4.53,3 6.43,1.69A415.86,415.86 0,0 1,668 340.27q5.64,-4.39 11.4,-8.63 6.54,-4.8 13.23,-9.43l0.59,-0.41q6.67,-4.6 13.46,-9.05l0.76,-0.5q6.67,-4.37 13.46,-8.59l1,-0.65q2.07,-1.29 4.16,-2.56l5.33,-3.26 2.37,-1.44q3.6,-2.17 7.22,-4.33h0l1.69,-1q7.79,-5.87 15.64,-11.59a2.39,2.39 0,0 0,-2.11 -2.64A2.48,2.48 0,0 0,755.43 276.23ZM630.6,345.1q-0.14,-0.89 -0.24,-1.77a5.29,5.29 0,0 0,0.58 0.58C630.83,344.31 630.71,344.71 630.6,345.1ZM555.6,310.4a2.47,2.47 0,0 0,-0.36 -0.11l0.46,-0.27a1.8,1.8 0,0 1,-0.07 0.38ZM564.23,347.26a6.41,6.41 0,0 0,1.31 0.14l0.16,0.22 -2.61,1.51a4,4 0,0 0,1.17 -1.87ZM651.13,317.96v0.23h-0.07ZM636,293.1l0.32,-0.61 0.22,-0.21q-0.27,1.47 -0.57,2.94a4.09,4.09 0,0 0,-0.15 -0.85A4.53,4.53 0,0 0,636 293.1ZM560.67,350.1a4.85,4.85 0,0 0,1 -0.16l-1,0.54a0.74,0.74 0,0 0,0 -0.39ZM631.59,350.23a3.89,3.89 0,0 0,0.53 0.46l-0.37,0.24c-0.06,-0.24 -0.11,-0.48 -0.16,-0.71Z"
android:fillColor="#ff1a80"/>
<path
android:pathData="M194,538.15c-0.5,-1.21 -1,-2.44 -1.46,-3.66l-0.36,-0.91c-1.18,-3 -2.31,-6.06 -3.45,-9.07q-0.85,-2.24 -1.72,-4.46c-1.65,-4.19 -3.32,-8.37 -5,-12.52l-4.28,-8.61a4.66,4.66 0,0 0,-0.47 0.3c-29.93,22.34 -64.79,37.16 -93.61,61.1a3.42,3.42 0,0 0,-0.53 4.11c2.13,3.27 4.13,6.67 6.11,10.09A5,5 0,0 0,90 577.6a125.13,125.13 0,0 0,6.75 10.71A162.66,162.66 0,0 0,108 604.15v0.19a14.34,14.34 0,0 1,-3.19 6.31c-3.35,4.32 -7.41,8.07 -10.94,12.25 -6.48,7.7 -13.12,15.3 -19.63,23l-1.86,1.6c-7.6,6.7 -14.83,13.8 -22,20.94L46,674.12c-5.86,7.59 -11.7,15.31 -18,22.6 -2.57,3 -5.2,5.88 -7.95,8.68a3.08,3.08 0,0 0,0.46 2.25c1.8,-1.16 3.59,-2.34 5.38,-3.52h0l0.79,-0.52 3.52,-2.36L33.48,699q1.94,-1.32 3.86,-2.65l2.89,-2 1.17,-0.81h0c0.63,-0.43 1.25,-0.88 1.87,-1.32l1.61,-1.12 2,-1.43L50,687.54l2.59,-1.85L61,679.62l1.18,-0.86 9.62,-7 9,-6.51 14.42,-12.11c20,-16.74 40.14,-33.3 61.06,-48.89l1.51,-1.13a4.35,4.35 0,0 0,0 -2.15c-1.73,-6.42 -6.45,-11.27 -11.14,-15.73 -3.83,-3.64 -8.7,-7.39 -11.16,-12.27 16.89,-8.25 34.85,-15 49.77,-26.64 2.76,-2.15 6,-4.73 8.16,-7.77A1.46,1.46 0,0 0,194 538.15ZM124.15,600.57 L125.15,601.64 124.74,601.98 123.85,600.49ZM148.27,599.31 L147.83,599.46c-0.72,-1.17 -1.38,-2.39 -2,-3.58a23.06,23.06 0,0 1,2.46 3.43Z"
android:fillColor="#ff1a80"/>
<path
android:pathData="M228.62,219.16c-7.78,-6.19 -16.62,-10.91 -25.44,-15.45 -3,-1.53 -6.11,-2.74 -9,-4.44 -1.64,-1 -2.41,-2.34 -3.87,-3.46 1.65,-2.75 2.06,-6.62 3.3,-9.5a85.24,85.24 0,0 1,7.34 -13c5.1,-7.79 10.86,-15.13 15.76,-23 2.17,-3.52 3.93,-7.23 5.92,-10.85 1.26,-2.28 2.93,-4.69 3,-7.4a6.85,6.85 0,0 0,-0.8 -3.38l-7.2,-2.26L213.49,125c-24.37,-7.76 -48.58,-16 -72.4,-25.36 -4.14,-1.62 -8.25,-3.35 -12.36,-5.1h0c-9.74,-4.16 -19.44,-8.46 -29.45,-11.83C95.22,81.35 91.07,80 87,78.6v0.21c6.06,4.7 12,9.52 17.94,14.4l1.81,1.48q9.38,7.77 18.59,15.72l4,3.47c7.45,6.53 14.81,13.2 22.56,19.34 3.36,2.68 6.73,5.35 10.16,7.94 1.4,1.06 2.8,2.13 4.25,3.12 0.48,0.33 2.54,1.39 1.88,1.24a2.88,2.88 0,0 1,2.39 2.71c2.19,1.26 4.37,2.53 6.53,3.83q-11.21,14.41 -22.23,29 -5.88,9.8 -12.36,19.2l-1.4,2c-1.24,1.76 -2.49,3.52 -3.76,5.26 -0.7,0.94 -1.37,1.9 -2.08,2.84a2.61,2.61 0,0 1,-0.52 0.53q13.91,14.28 28.3,28c8.76,8.35 21,15.72 27.34,26.44a13.59,13.59 0,0 0,1 2.28c0.39,-0.49 0.77,-1 1.16,-1.49h0c0.1,-0.13 0.2,-0.27 0.31,-0.4l3.92,-5.11h0l3.81,-5A447.69,447.69 0,0 1,228.62 219.16ZM189.93,195.4a8,8 0,0 0,-0.82 -0.93C190.07,194.08 190.12,194.67 189.93,195.4ZM197.2,248.22 L197.72,247.63L196.8,249c0.14,-0.25 0.27,-0.52 0.4,-0.78ZM217.71,224.52a5.67,5.67 0,0 0,0.18 -1,2.7 2.7,0 0,0 0.94,-1.38l0.7,0.48c-0.6,0.65 -1.21,1.27 -1.82,1.9ZM135.59,118.09c1.51,1 3,1.87 4.57,2.78 0.75,0.55 1.48,1.11 2.22,1.66h0C140.1,121.07 137.84,119.6 135.59,118.09ZM192.36,254.74a17.92,17.92 0,0 0,2.82 -3.08c-0.75,1.28 -1.47,2.57 -2.12,3.88Z"
android:fillColor="#ff1a80"/>
<path
android:pathData="M486.2,151.26l1.2,-2.51c1.4,-2.9 2.8,-5.78 4.23,-8.66 0.45,-0.91 0.89,-1.82 1.34,-2.72q2.41,-4.83 4.89,-9.63 3.45,-6.7 7,-13.37a10.53,10.53 0,0 0,-1.3 -1.67c-7.51,-7.89 -20,-7.87 -30.48,-9.32 6,-14.72 14.94,-28.63 22.68,-42.36 7,-12.42 16.86,-25.44 17.35,-40.25a3.78,3.78 0,0 0,-3 -3.86c-1.55,1.39 -3.11,2.76 -4.67,4.09l-1.16,1a600.63,600.63 0,0 1,-54 52.55c-6.15,5.93 -12.51,11.64 -19.22,17 -2,2 -4,4 -5.95,6a3.9,3.9 0,0 0,1.1 3.69c5.58,5.72 12.88,8.42 19.29,12.94 2.46,1.73 6.23,4.63 6.41,7.92 0.15,2.67 -2,5.57 -3.13,7.82 -4.23,8.14 -7.69,16.7 -11.68,25 -4.44,9.18 -9.71,18.12 -13.74,27.48a2.69,2.69 0,0 0,-1.87 2c4.39,2.54 8.74,5.18 13.06,7.85h0q5.25,3.25 10.47,6.54l2.5,1.57q5.34,3 10.57,6.23a3.2,3.2 0,0 0,1 -0.34c3.33,-6.95 6.91,-13.81 10.56,-20.63q2.78,-5.18 5.56,-10.31 2.43,-5.55 5,-11.06c0.37,-0.83 0.75,-1.66 1.13,-2.49Q483.7,156.5 486.2,151.26Z"
android:fillColor="#ff1a80"/>
</vector>

View File

@ -0,0 +1,231 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="774dp"
android:height="774dp"
android:viewportWidth="774"
android:viewportHeight="774">
<path
android:pathData="M456.65,484.7c-0.75,-7.69 -4.75,-14.85 -12.11,-16.94a16.79,16.79 0,0 0,-13.36 1.75c-6.83,3 -11.81,10.07 -12.85,17.53a11.39,11.39 0,0 0,-0.56 2.51c-0.38,5 1.21,8.58 3.87,11 6.36,8.2 19.95,10.58 28.21,3.75a16.77,16.77 0,0 0,3.95 -4.87,7.65 7.65,0 0,0 2.28,-5.88 27.1,27.1 0,0 0,0.68 -5A17.11,17.11 0,0 0,456.65 484.7ZM433.83,490.44a7.15,7.15 0,0 1,-0.62 1.61,4.92 4.92,0 0,1 -0.28,0.45l-0.1,0.11a3.27,3.27 0,0 1,-0.24 0.27l-0.12,0.1a1.93,1.93 0,0 1,-0.27 0.3l-0.11,0.08a2.58,2.58 0,0 1,-0.32 0.18l-0.1,0 -0.37,0.14h-0.07a3.34,3.34 0,0 1,-0.43 0.1,3.91 3.91,0 0,1 -0.48,0.05h-0.55a3.77,3.77 0,0 1,-2.6 -1.29,3.39 3.39,0 0,1 -0.34,-0.5c-0.1,-0.18 -0.22,-0.35 -0.33,-0.53a3.72,3.72 0,0 1,-0.92 -2.42,5.27 5.27,0 0,1 0.7,-2.31c0.07,-0.18 0.15,-0.35 0.23,-0.52l0.16,-0.29 0.12,-0.18a1.55,1.55 0,0 1,0.24 -0.33l0.08,-0.09a3.22,3.22 0,0 1,0.32 -0.32,2.39 2.39,0 0,1 0.45,-0.31 4.32,4.32 0,0 1,1.8 -0.49,2.81 2.81,0 0,1 0.58,0 3.38,3.38 0,0 1,1.42 0.6l0.07,0.05a4.88,4.88 0,0 1,0.53 0.49l0.07,0.08a6.61,6.61 0,0 1,0.44 0.6,3.26 3.26,0 0,1 0.72,0.85c0.12,0.29 0.25,0.58 0.37,0.88A6,6 0,0 1,433.83 490.44ZM450.11,487.35v0.32a3.23,3.23 0,0 1,-0.12 1.16,2.67 2.67,0 0,1 0,0.4 2.78,2.78 0,0 1,-0.11 0.5c0,0.13 -0.08,0.25 -0.13,0.37v0.09a3.46,3.46 0,0 1,-0.52 0.82l-0.15,0.18a10.62,10.62 0,0 1,-3.17 1.73h-0.53l0.08,0a3.05,3.05 0,0 1,-0.54 -0.08,3.44 3.44,0 0,1 -2.38,-2.37 1.59,1.59 0,0 1,-0.21 -0.41l-0.06,-0.18a1.42,1.42 0,0 1,0 -0.22,2 2,0 0,1 -0.06,-0.6 1.89,1.89 0,0 1,0.13 -0.66,15.51 15.51,0 0,1 0.76,-2.27 1.81,1.81 0,0 1,0.33 -0.5,3.25 3.25,0 0,1 0.92,-1 3.4,3.4 0,0 1,2 -0.64,3.22 3.22,0 0,1 0.81,0.11 4.56,4.56 0,0 1,1.77 1.05l0.12,0.11a3.5,3.5 0,0 1,0.38 0.39,4 4,0 0,1 0.37,0.54s0.05,0.09 0.07,0.13a3.13,3.13 0,0 1,0.24 0.6c0,0.06 0,0.12 0.05,0.18Z"
android:fillColor="#ff1a80"/>
<path
android:pathData="M141.13,722.25c-0.08,-0.13 -0.15,-0.26 -0.22,-0.4v0.1a3.75,3.75 0,0 0,-1.28 -1.4,3.22 3.22,0 0,0 -3,-0.17 3.36,3.36 0,0 0,-1.8 4.4c0.06,0.13 0.12,0.25 0.19,0.37a6.2,6.2 0,0 0,0.87 1.1,3.31 3.31,0 0,0 5.19,-4Z"
android:fillColor="#ff1a80"/>
<path
android:pathData="M136.77,733.31a3.43,3.43 0,0 0,-1.69 -0.71,3.36 3.36,0 0,0 -2.28,0.43 4.29,4.29 0,0 0,-1.21 1.19,3.61 3.61,0 0,0 0.48,4.43 3.75,3.75 0,0 0,3.49 0.92,3.69 3.69,0 0,0 2.5,-2.5A3.62,3.62 0,0 0,136.77 733.31Z"
android:fillColor="#ff1a80"/>
<path
android:pathData="M362.14,573.91a3.57,3.57 0,0 0,-4.19 0.41c-2.48,2.28 -4.86,4.67 -7.18,7.11h0a23.81,23.81 0,0 0,-9.18 -6.35c0.22,-0.21 0.43,-0.41 0.67,-0.61 1.22,-1 2.37,-1.92 3.51,-2.92 2.3,-2 -0.79,-6.11 -3.26,-4.26s-6,3.65 -7.64,6.43a20.15,20.15 0,0 0,-8.75 1.71c-5.21,2.29 -9.52,6.24 -14.26,9.32 -4.15,2.7 -8.42,5.25 -12.13,8.56 -0.39,0.35 -0.77,0.71 -1.15,1.08 -5.1,3.69 -8.68,8.66 -8.55,15.63a15.45,15.45 0,0 0,5.25 11.92c-2.35,3.26 -4.78,6.47 -7.33,9.59A163.57,163.57 0,0 1,272.46 648c-4.5,4.15 -9.37,8 -15,10.52 -6.72,3 -14,3 -21.18,2.76 -15.1,-0.54 -29.8,-2.11 -44.69,1.45a77.27,77.27 0,0 0,-31 15.15c-9.85,8 -18.56,19.82 -21.74,32.25a4.41,4.41 0,0 0,3 5.31l0.26,0.09a3.67,3.67 0,0 0,3.71 -1c2,-1.85 2.81,-5.1 4,-7.44a72.26,72.26 0,0 1,4.53 -7.68,65.58 65.58,0 0,1 11,-12.58c8.47,-7.42 19,-12 30,-14.38 15.37,-3.29 30.59,-0.5 46.09,-0.49 14.7,0 26.45,-5.5 37.27,-15.22A157.6,157.6 0,0 0,296 638.55a106,106 0,0 0,7.14 -9.34,26.63 26.63,0 0,0 8,-0.72 27.81,27.81 0,0 0,7.53 -2.29c5.91,-1.33 11,-4.23 16.16,-7.56a71.75,71.75 0,0 0,17.85 -16.29,14.23 14.23,0 0,0 2,-14.76c3.22,-1.71 5.93,-5.16 8,-8.05l0.56,-0.52a3.07,3.07 0,0 0,0.05 -4.35A3.12,3.12 0,0 0,362.14 573.91ZM323.24,613.07a11.86,11.86 0,0 1,-2.17 3.37c-2.6,3 -6.37,4.44 -10.13,5.27a23.83,23.83 0,0 1,-4.58 0.36,14.61 14.61,0 0,0 0.38,-2.26 31.06,31.06 0,0 1,2.9 -3.28,2.62 2.62,0 0,0 0.58,-3.1A2.49,2.49 0,0 0,310 612a1.78,1.78 0,0 0,-3.09 -1.5,2.64 2.64,0 0,0 -1.26,0.68 43.64,43.64 0,0 0,-4 4.38c-0.32,0.17 -0.61,0.35 -0.9,0.54a9.81,9.81 0,0 1,-2.05 -4.76,11.88 11.88,0 0,1 2.27,-7.79c3.32,-5 10.14,-8.81 16,-6.2A12,12 0,0 1,323.24 613.07ZM345.77,600.72c-3.35,5.18 -8.94,9.31 -13.95,12.75 -0.78,0.57 -1.58,1.1 -2.39,1.63a17.53,17.53 0,0 0,-0.54 -14.08c-3.83,-7.52 -11.46,-9.91 -18.57,-8.46a67.16,67.16 0,0 0,7.3 -5.73c1.28,-1.19 2.48,-2.37 3.68,-3.52l0.75,-0.51c3.45,-2.38 7.08,-4.87 11.45,-3.95 4.12,0.87 7.89,3.93 10.7,6.94C348.32,590.21 349.17,595.47 345.77,600.72Z"
android:fillColor="#ff1a80"/>
<path
android:pathData="M545.77,296.5c-0.37,-5.69 -0.51,-11.39 -0.56,-17.08l-0.09,-1.2c-0.61,-8.89 -0.17,-17.78 0.16,-26.67v-14c0,-10.07 1.14,-20.37 1.08,-30.55v-0.43c-0.13,-0.45 -0.23,-0.91 -0.34,-1.36l-0.18,-0.82c-0.06,-0.28 -0.11,-0.57 -0.16,-0.85s-0.11,-0.61 -0.15,-0.91l-0.09,-0.62c-0.12,-0.91 -0.21,-1.82 -0.27,-2.74h0c-1.34,0 -2.68,0 -4,0.09h0c-17.55,0.46 -35.09,1.86 -52.64,2.38l-2.5,0.06c-2.42,0.06 -4.85,0.11 -7.28,0.12h0c-2.54,2 -5.11,3.89 -7.76,5.72l-0.74,0.63h0c-8.16,6.88 -16,14.13 -23.75,21.5v3.89l-0.06,1.3c-0.32,6.84 -1.12,13.66 -1.92,20.48 -1.23,10.65 -1.91,21.32 -2.46,32 -0.57,11.16 -0.89,22.25 -0.65,33.43 0,2 0.11,4.06 0.16,6.13 0.1,0.37 0.21,0.74 0.32,1.11l-0.29,0.1c0,1.18 0.06,2.37 0.07,3.55 13.74,-1.47 27.56,-1.74 41.36,-2.18a100.51,100.51 0,0 1,10.27 -0.38c1.63,-0.07 3.25,-0.17 4.88,-0.26h0l2.63,-0.14h0.58l0.33,0.06 0.26,0.05h0.12c0.57,-0.42 1.15,-0.82 1.72,-1.23s1.34,-0.94 2,-1.39 1.53,-1 2.31,-1.56 1.55,-1 2.33,-1.5 1.62,-1 2.43,-1.54c8.41,-5.22 17.13,-9.94 25.73,-14.87h0l1,-0.6c1.14,-0.66 2.29,-1.32 3.42,-2l0.07,-0.07c1,-0.61 2.09,-1.21 3.13,-1.84C546,300.46 545.9,298.49 545.77,296.5ZM484.61,206.88c10.81,-0.46 21.68,-0.73 32.49,-0.93q6.6,-0.12 13.25,-0.17c-2.92,1.91 -5.75,4 -8.46,6.14a136.35,136.35 0,0 0,-13.71 12.15c-0.11,-0.18 -0.2,-0.36 -0.31,-0.53a7.48,7.48 0,0 1,-1.88 0.65,2 2,0 0,1 -0.62,0.47 1.35,1.35 0,0 1,-0.32 0.11h-0.16a1.82,1.82 0,0 1,-0.57 0l-0.49,0.06a4.73,4.73 0,0 1,-0.75 0L503,224.83a1.14,1.14 0,0 1,-0.32 -0.07h-0.09c-6.2,0.29 -12.41,0.21 -18.61,0.24s-12.36,0.07 -18.5,0.65a76.66,76.66 0,0 0,-10.13 1.41c4.34,-3.15 9.14,-5.89 13.09,-9.11C473.65,213.81 478.69,209.88 484.61,206.88ZM477,323.23c-3.4,0.68 -6.77,1.49 -10.16,2.24 -4.15,0.64 -8.33,1.41 -12.51,1.69q-1,0.06 -1.95,0.06c0.74,-7.16 -0.92,-14.52 -0.75,-21.71q0.36,-15.06 0.75,-30.14c0.21,-8.15 0.78,-16.25 1.57,-24.35 0.24,-2.39 1.28,-8.81 -0.61,-11.81 7.24,-1.08 14.88,0.2 22.13,-0.43 5.56,-0.48 11.11,-1.5 16.6,-2.47 3.93,-0.7 8.23,-0.87 12.27,-1.65a3.44,3.44 0,0 0,-0.17 1c-0.48,16.78 -1.85,33.78 -1.38,50.56 0.19,6.87 0.88,13.71 1,20.57 0.08,3.44 0,6.91 -0.15,10.34 -0.08,1.45 -0.32,3 -0.46,4.55l-2.31,0.27c-7.61,-1.85 -16.6,-0.07 -23.87,1.32ZM529.33,305.69c-4.5,2.83 -9,5.59 -13.5,8.5L513,316c0,-2 -0.09,-4 -0.15,-5.93 -0.29,-11 -0.66,-22.1 -0.45,-33.14 0.18,-9.7 0.62,-19.39 0.07,-29.08A111.89,111.89 0,0 0,511 234c-0.14,-0.76 -0.28,-1.61 -0.45,-2.51l0.8,-0.06a2.5,2.5 0,0 1,-0.26 -1.35,2.36 2.36,0 0,1 0.08,-0.45v-0.08a1.4,1.4 0,0 1,0.16 -0.38l0.06,-0.11a2.43,2.43 0,0 1,0.24 -0.32,0.31 0.31,0 0,1 0.09,-0.11 3.09,3.09 0,0 1,0.43 -0.37c1.2,-0.82 2.38,-1.67 3.56,-2.52l1.36,-1c2.23,-1.64 4.43,-3.31 6.68,-4.93a1.76,1.76 0,0 1,0.8 -0.32l1.07,-0.82a103,103 0,0 1,9.13 -6.19c2,-1.17 4.13,-1.95 5.9,-3.27 0,1.91 0.1,3.8 0.12,5.66 0.08,12.9 -2.53,25.74 -2.9,38.64 -0.39,13.56 -0.82,27.26 0,40.82 0.1,1.73 0.2,3.46 0.29,5.19 -3.07,1.82 -6,4.45 -8.83,6.21Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M487.27,288.76a1.67,1.67 0,0 1,-2 -1.21,2.2 2.2,0 0,1 0,-0.36c0,-5.24 0.63,-10.57 0.32,-15.82 -2.16,4.18 -3.78,8.64 -6.5,12.53a1.5,1.5 0,0 1,-2 0.51,1.44 1.44,0 0,1 -0.5,-0.51c-2.25,-3.86 -3.63,-8.87 -6.78,-12.21 -0.18,5.29 -0.64,10.55 -0.75,15.84a1.29,1.29 0,0 1,-0.94 1.23,23.89 23.89,0 0,1 -8.8,-0.26c5.19,10.39 20.83,14.09 30,6.54a17.77,17.77 0,0 0,4.74 -6.38A55.13,55.13 0,0 0,487.27 288.76Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M483.83,258.48a16.77,16.77 0,0 0,-13.37 1.75c-9.09,4 -14.92,15.25 -12.48,25 0.12,0.48 0.27,0.94 0.42,1.4a43.66,43.66 0,0 0,8 -0.16c0,-5.91 0.48,-11.82 0.52,-17.73a1.43,1.43 0,0 1,1.45 -1.42,1.46 1.46,0 0,1 0.7,0.18c4.58,2.95 6.41,8.1 8.78,12.77 2.68,-4.65 4.33,-9.84 7.33,-14.32 0.67,-1 2.53,-1 2.79,0.37 1.21,6.36 0.69,12.73 0.53,19.14 2.2,-0.12 4.4,0 6.61,-0.12C498,274.88 494.36,261.47 483.83,258.48Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M507.09,416.58v-0.43a35.23,35.23 0,0 1,-1.2 -7.29l-4,0.08a0.11,0.11 0,0 0,0 0.05c-17,0.44 -34,1.77 -51,2.32h0c-1.54,0.06 -3.08,0.1 -4.61,0.14 -2.27,0.05 -4.54,0.1 -6.82,0.11h-0.06q-1.91,1.5 -3.84,2.92t-3.92,2.79l-0.74,0.63h0c-8.16,6.88 -16,14.13 -23.75,21.5 0,0.81 0,1.63 0,2.44 0,0.39 0,0.79 0,1.18l-0.09,2.18c-0.35,6.64 -1.13,13.26 -1.89,19.87 -1.24,10.66 -1.92,21.32 -2.47,32 -0.57,11.17 -0.88,22.25 -0.65,33.43 0,2 0.11,4.06 0.17,6.13 0.09,0.38 0.2,0.76 0.32,1.14l-0.29,0.09c0,1.17 0.05,2.36 0.07,3.54 1.29,-0.14 2.58,-0.25 3.87,-0.37l1.12,-0.1c1.21,-0.11 2.41,-0.2 3.61,-0.29l0.89,-0.07c10.6,-0.76 21.24,-1 31.87,-1.33a100.51,100.51 0,0 1,10.27 -0.38c2.49,-0.1 5,-0.24 7.46,-0.4h0a3.32,3.32 0,0 1,0.63 0l0.27,0a2.7,2.7 0,0 1,0.39 0.08l1.95,-1.39 0.67,-0.46h0q4.26,-2.94 8.67,-5.65v0c8.26,-5.1 16.81,-9.74 25.24,-14.58v0l2.42,-1.43c0.67,-0.39 1.35,-0.77 2,-1.17l0,0c1.05,-0.62 2.12,-1.23 3.17,-1.87 -0.08,-2 -0.19,-3.95 -0.32,-5.93 -0.37,-5.7 -0.51,-11.39 -0.55,-17.09 0,-0.4 -0.07,-0.8 -0.1,-1.2 -0.61,-8.89 -0.16,-17.78 0.17,-26.67 -0.06,-4.66 0,-9.32 0,-14C506,437.06 507.15,426.76 507.09,416.58ZM464.89,445.25C464.4,462 463,479 463.5,495.81c0.19,6.87 0.89,13.71 1,20.57 0.08,3.45 0.05,6.91 -0.15,10.35 -0.08,1.45 -0.32,3 -0.46,4.53l-2.3,0.28c-7.64,-1.86 -16.61,-0.12 -23.87,1.31 -3.4,0.68 -6.77,1.49 -10.15,2.24 -4.16,0.64 -8.34,1.42 -12.53,1.69 -0.65,0.05 -1.29,0.05 -1.94,0.05 0.74,-7.16 -0.92,-14.55 -0.75,-21.69q0.34,-15.08 0.75,-30.15c0.2,-8.14 0.77,-16.25 1.56,-24.35 0.23,-2.41 1.29,-8.91 -0.66,-11.87 7.24,-1.09 14.89,0.19 22.15,-0.44 5.56,-0.48 11.11,-1.5 16.6,-2.47 4,-0.71 8.3,-0.87 12.33,-1.65A3.63,3.63 0,0 0,464.89 445.25ZM468.64,433.16a7.56,7.56 0,0 1,-1.89 0.65,1.82 1.82,0 0,1 -0.59,0.45h0a2.08,2.08 0,0 1,-1.12 0.21l-0.12,0c-0.32,0 -0.64,0.07 -1,0.08h-0.26l-0.33,-0.07h-0.09c-6.19,0.29 -12.4,0.21 -18.6,0.24s-12.36,0.07 -18.51,0.65a75.85,75.85 0,0 0,-10.24 1.44c4.37,-3.18 9.22,-5.93 13.2,-9.18 5.23,-4.27 10.27,-8.19 16.18,-11.15 10.82,-0.47 21.69,-0.73 32.51,-0.94 4.42,-0.08 8.84,-0.12 13.26,-0.16a98,98 0,0 0,-8.47 6.13A120.26,120.26 0,0 0,469 433.7C468.84,433.52 468.75,433.33 468.64,433.16ZM498.69,463.09c-0.38,13.56 -0.82,27.27 0,40.82 0.05,1.75 0.13,3.48 0.21,5.21 -3.09,1.79 -6.06,4.43 -8.86,6.19 -4.5,2.83 -9,5.59 -13.5,8.5 -0.91,0.59 -1.83,1.2 -2.76,1.82 0,-2 -0.09,-3.93 -0.14,-5.9 -0.3,-11 -0.66,-22.1 -0.46,-33.14 0.18,-9.7 0.62,-19.39 0.07,-29.08a115.81,115.81 0,0 0,-1.48 -13.89c-0.14,-0.74 -0.29,-1.58 -0.45,-2.46l0.66,-0.05a2.4,2.4 0,0 1,-0.27 -1.35l0.07,-0.05a2.42,2.42 0,0 1,0.62 -1.43l0.08,-0.08 0.12,-0.1a2.32,2.32 0,0 1,0.3 -0.22c2.59,-1.76 5.09,-3.64 7.6,-5.52h0c1.33,-1 2.66,-2 4,-3a1.8,1.8 0,0 1,0.81 -0.32l1.07,-0.82a100.76,100.76 0,0 1,9.12 -6.19c2,-1.19 4.22,-2 6,-3.34 0,1.92 0.11,3.84 0.12,5.71C501.67,437.35 499.06,450.19 498.69,463.09Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M350.89,448.88c-0.37,-5.69 -0.5,-11.38 -0.55,-17.08l-0.09,-1.2c-0.62,-8.89 -0.17,-17.78 0.16,-26.67 -0.05,-4.66 0,-9.32 0,-14 0,-10.07 1.15,-20.37 1.09,-30.55L351.5,359c-0.13,-0.45 -0.23,-0.91 -0.34,-1.36l-0.18,-0.82c-0.06,-0.28 -0.11,-0.56 -0.16,-0.85s-0.11,-0.61 -0.15,-0.91 -0.06,-0.42 -0.09,-0.62c-0.12,-0.91 -0.21,-1.82 -0.28,-2.74h0l-4,0.09h0c-17.55,0.46 -35.09,1.86 -52.63,2.38l-2.51,0.06c-2.43,0.06 -4.85,0.11 -7.28,0.12h0q-3.81,3 -7.76,5.72l-0.74,0.63h0c-8.16,6.88 -16,14.13 -23.75,21.5v2.16c0,0.72 0,1.15 0,1.73l-0.06,1.3c-0.32,6.84 -1.13,13.66 -1.92,20.48 -1.23,10.65 -1.91,21.32 -2.46,32 -0.57,11.17 -0.89,22.25 -0.65,33.43 0,2 0.1,4.06 0.16,6.13 0.1,0.37 0.21,0.74 0.32,1.11l-0.29,0.11c0,1.17 0.06,2.36 0.07,3.54 13.74,-1.47 27.55,-1.74 41.36,-2.18a100.51,100.51 0,0 1,10.27 -0.38c1.63,-0.07 3.25,-0.17 4.87,-0.26h0l2.64,-0.14h0.58l0.32,0.06 0.27,0.05h0.12c0.57,-0.42 1.15,-0.82 1.72,-1.23s1.33,-0.94 2,-1.39 1.53,-1 2.31,-1.56l2.32,-1.5c0.81,-0.52 1.62,-1 2.44,-1.54 8.41,-5.22 17.13,-9.94 25.72,-14.87h0l1,-0.62c1.14,-0.65 2.29,-1.31 3.42,-2l0.06,-0.07c1.05,-0.61 2.1,-1.21 3.14,-1.84C351.13,452.79 351,450.82 350.89,448.88ZM289.77,359.25c10.81,-0.46 21.68,-0.73 32.49,-0.93q6.62,-0.12 13.25,-0.16a102.32,102.32 0,0 0,-8.46 6.13,135.38 135.38,0 0,0 -13.72,12.15c-0.1,-0.18 -0.19,-0.36 -0.3,-0.53a7.56,7.56 0,0 1,-1.89 0.65,1.85 1.85,0 0,1 -0.61,0.47 1.42,1.42 0,0 1,-0.33 0.11l-0.15,0.05a2.71,2.71 0,0 1,-0.57 0l-0.5,0.06a3.73,3.73 0,0 1,-0.74 0.05h-0.11l-0.32,-0.08h-0.09c-6.2,0.29 -12.41,0.21 -18.61,0.24s-12.36,0.07 -18.5,0.65a76.66,76.66 0,0 0,-10.13 1.41c4.34,-3.15 9.14,-5.89 13.09,-9.11C278.77,366.14 283.82,362.22 289.77,359.25ZM282.16,475.6c-3.4,0.68 -6.77,1.49 -10.16,2.24 -4.15,0.64 -8.34,1.41 -12.52,1.69 -0.64,0 -1.29,0.06 -1.94,0.06 0.74,-7.16 -0.92,-14.52 -0.75,-21.71q0.36,-15.06 0.75,-30.14c0.21,-8.14 0.78,-16.25 1.57,-24.35 0.23,-2.39 1.27,-8.81 -0.62,-11.8 7.24,-1.09 14.88,0.19 22.14,-0.44 5.55,-0.48 11.11,-1.5 16.6,-2.47 3.93,-0.7 8.23,-0.86 12.27,-1.65a3.44,3.44 0,0 0,-0.17 1c-0.48,16.78 -1.85,33.78 -1.38,50.56 0.19,6.87 0.88,13.71 1,20.57 0.08,3.44 0,6.91 -0.15,10.34 -0.08,1.46 -0.32,3 -0.46,4.55l-2.31,0.27c-7.64,-1.89 -16.63,-0.16 -23.9,1.28ZM334.49,458.06c-4.5,2.83 -9.05,5.59 -13.5,8.5l-2.81,1.85c0,-2 -0.08,-4 -0.14,-5.93 -0.3,-11 -0.66,-22.1 -0.45,-33.14 0.18,-9.7 0.62,-19.39 0.07,-29.08a115.84,115.84 0,0 0,-1.5 -13.89c-0.14,-0.76 -0.28,-1.61 -0.45,-2.51a3.51,3.51 0,0 0,0.79 -0.06,2.5 2.5,0 0,1 -0.26,-1.35 3.58,3.58 0,0 1,0.09 -0.45v-0.08a1.8,1.8 0,0 1,0.16 -0.38l0.06,-0.11a2.43,2.43 0,0 1,0.24 -0.32,0.31 0.31,0 0,1 0.09,-0.11 2.54,2.54 0,0 1,0.43 -0.37c1.2,-0.82 2.38,-1.67 3.55,-2.52l1.37,-1c2.23,-1.64 4.43,-3.31 6.68,-4.93a1.76,1.76 0,0 1,0.8 -0.32l1.07,-0.82a97.55,97.55 0,0 1,9.13 -6.19c2,-1.17 4.13,-2 5.89,-3.27 0.05,1.91 0.11,3.8 0.12,5.66 0.09,12.9 -2.52,25.74 -2.89,38.64 -0.39,13.56 -0.82,27.26 0,40.82 0.1,1.73 0.2,3.46 0.29,5.19 -3.1,1.78 -6.07,4.41 -8.86,6.17Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M292.4,441.09a1.64,1.64 0,0 1,-2 -1.19,1.58 1.58,0 0,1 -0.05,-0.38c0,-5.24 0.63,-10.57 0.31,-15.82 -2.15,4.18 -3.77,8.65 -6.49,12.53a1.5,1.5 0,0 1,-2.05 0.51,1.44 1.44,0 0,1 -0.5,-0.51c-2.25,-3.86 -3.64,-8.87 -6.78,-12.2 -0.18,5.28 -0.64,10.54 -0.75,15.83a1.29,1.29 0,0 1,-0.94 1.23,23.89 23.89,0 0,1 -8.8,-0.26c5.19,10.39 20.83,14.09 30,6.54a17.77,17.77 0,0 0,4.74 -6.38A57.24,57.24 0,0 0,292.4 441.09Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M289,410.81a16.77,16.77 0,0 0,-13.37 1.75c-9.09,4 -14.92,15.25 -12.48,25 0.12,0.48 0.26,0.94 0.42,1.4a43.66,43.66 0,0 0,8 -0.16c0,-5.91 0.48,-11.81 0.51,-17.73a1.43,1.43 0,0 1,1.46 -1.41,1.39 1.39,0 0,1 0.69,0.18c4.59,2.94 6.42,8.09 8.79,12.77 2.68,-4.66 4.32,-9.85 7.33,-14.33 0.67,-1 2.53,-1 2.79,0.37 1.2,6.36 0.69,12.73 0.53,19.14 2.2,-0.12 4.4,0 6.61,-0.12C303.15,427.19 299.49,413.8 289,410.81Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M340.68,263.07c-0.37,-5.69 -0.51,-11.38 -0.55,-17.08 0,-0.4 -0.07,-0.8 -0.09,-1.2 -0.62,-8.89 -0.17,-17.78 0.16,-26.67 -0.05,-4.66 0,-9.32 0,-14 0,-10.07 1.15,-20.37 1.09,-30.55v-0.43c-0.13,-0.45 -0.23,-0.9 -0.34,-1.36 -0.06,-0.27 -0.13,-0.55 -0.18,-0.82s-0.11,-0.56 -0.16,-0.84 -0.11,-0.62 -0.16,-0.92 -0.05,-0.41 -0.08,-0.62c-0.12,-0.91 -0.22,-1.82 -0.28,-2.73h0c-1.34,0 -2.68,0 -4,0.08h0c-17.55,0.46 -35.09,1.86 -52.63,2.38l-2.52,0.06c-2.42,0.06 -4.85,0.11 -7.27,0.12h0q-3.81,3 -7.76,5.72l-0.75,0.63h0c-8.17,6.88 -16,14.13 -23.75,21.5v2.16a15.37,15.37 0,0 1,-0.06 1.73v1.3c-0.32,6.84 -1.13,13.67 -1.92,20.48 -1.23,10.66 -1.92,21.32 -2.46,32 -0.57,11.17 -0.89,22.25 -0.66,33.43 0,2 0.11,4.06 0.17,6.13 0.1,0.37 0.2,0.74 0.32,1.11l-0.29,0.11c0,1.17 0.05,2.36 0.07,3.54 13.74,-1.47 27.55,-1.74 41.36,-2.18a100.51,100.51 0,0 1,10.27 -0.38c1.63,-0.07 3.25,-0.17 4.87,-0.26h0c0.88,0 1.76,-0.08 2.64,-0.14h0.57l0.33,0.05 0.27,0.05L297,295.47l1.73,-1.23 2,-1.39c0.77,-0.53 1.54,-1 2.32,-1.55l2.32,-1.51c0.81,-0.52 1.62,-1 2.44,-1.55 8.41,-5.21 17.13,-9.93 25.72,-14.86h0l1.05,-0.62c1.14,-0.66 2.28,-1.31 3.41,-2l0.06,-0.06c1,-0.62 2.1,-1.22 3.14,-1.85A57.79,57.79 0,0 1,340.68 263.07ZM279.53,173.5c10.81,-0.47 21.68,-0.74 32.49,-0.94q6.62,-0.12 13.25,-0.16a102.32,102.32 0,0 0,-8.46 6.13,135.38 135.38,0 0,0 -13.72,12.15c-0.1,-0.18 -0.19,-0.36 -0.3,-0.53a7.56,7.56 0,0 1,-1.89 0.65,1.85 1.85,0 0,1 -0.61,0.47 1.42,1.42 0,0 1,-0.33 0.11l-0.15,0.05a2.72,2.72 0,0 1,-0.57 0l-0.5,0.06a4.68,4.68 0,0 1,-0.74 0h-0.11l-0.32,-0.08h-0.09c-6.2,0.29 -12.41,0.21 -18.61,0.24s-12.36,0.07 -18.51,0.65a76.51,76.51 0,0 0,-10.12 1.41c4.33,-3.15 9.14,-5.88 13.08,-9.11C268.56,180.38 273.61,176.46 279.53,173.5ZM271.92,289.88c-3.4,0.68 -6.78,1.49 -10.16,2.24 -4.16,0.64 -8.34,1.41 -12.52,1.69 -0.64,0 -1.29,0.06 -1.94,0.06 0.74,-7.16 -0.92,-14.52 -0.75,-21.71q0.36,-15.06 0.75,-30.14c0.2,-8.14 0.77,-16.25 1.57,-24.35 0.23,-2.39 1.27,-8.81 -0.62,-11.8 7.24,-1.09 14.88,0.19 22.13,-0.44 5.56,-0.48 11.12,-1.5 16.6,-2.47 3.94,-0.7 8.24,-0.86 12.28,-1.65a3.44,3.44 0,0 0,-0.17 1c-0.48,16.78 -1.85,33.78 -1.38,50.56 0.19,6.87 0.88,13.71 1,20.57 0.08,3.45 0,6.91 -0.15,10.34 -0.08,1.46 -0.32,3 -0.46,4.55l-2.31,0.28C288.17,286.67 279.19,288.4 271.92,289.88ZM324.25,272.34c-4.5,2.83 -9.05,5.59 -13.5,8.5 -0.92,0.6 -1.86,1.22 -2.81,1.86q-0.06,-3 -0.14,-5.94c-0.3,-11 -0.66,-22.1 -0.45,-33.14 0.18,-9.7 0.61,-19.39 0.06,-29.08a113.82,113.82 0,0 0,-1.49 -13.89c-0.14,-0.76 -0.28,-1.61 -0.45,-2.51l0.79,0a2.55,2.55 0,0 1,-0.26 -1.36,3.58 3.58,0 0,1 0.09,-0.45v-0.08a2.11,2.11 0,0 1,0.17 -0.38,0.14 0.14,0 0,1 0.06,-0.11 1.72,1.72 0,0 1,0.23 -0.32l0.09,-0.11a2.61,2.61 0,0 1,0.44 -0.37c1.2,-0.82 2.38,-1.67 3.55,-2.52l1.36,-1c2.23,-1.65 4.44,-3.32 6.69,-4.94a1.76,1.76 0,0 1,0.8 -0.32l1.07,-0.82a97.55,97.55 0,0 1,9.13 -6.19c2,-1.16 4.13,-2 5.89,-3.27 0,1.91 0.11,3.8 0.12,5.66 0.08,12.9 -2.52,25.74 -2.89,38.64 -0.39,13.56 -0.83,27.27 0,40.82 0.1,1.73 0.21,3.46 0.3,5.19 -3.1,1.72 -6.06,4.38 -8.85,6.14Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M282.18,255.33a1.64,1.64 0,0 1,-2 -1.2,1.5 1.5,0 0,1 -0.05,-0.37c0,-5.24 0.63,-10.57 0.31,-15.82 -2.15,4.18 -3.77,8.65 -6.49,12.53a1.5,1.5 0,0 1,-2.05 0.51,1.44 1.44,0 0,1 -0.5,-0.51c-2.25,-3.86 -3.64,-8.87 -6.78,-12.2 -0.18,5.28 -0.64,10.54 -0.75,15.83a1.29,1.29 0,0 1,-0.94 1.23,24.11 24.11,0 0,1 -8.8,-0.25c5.19,10.38 20.83,14.08 30,6.53a17.63,17.63 0,0 0,4.73 -6.38A57.24,57.24 0,0 0,282.18 255.33Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M278.77,225.05a16.81,16.81 0,0 0,-13.37 1.75c-9.1,4 -14.93,15.25 -12.49,25a11.58,11.58 0,0 0,0.43 1.4,43.66 43.66,0 0,0 8,-0.16c0,-5.91 0.49,-11.81 0.52,-17.73a1.43,1.43 0,0 1,1.46 -1.41,1.39 1.39,0 0,1 0.69,0.18c4.59,2.94 6.42,8.09 8.79,12.77 2.68,-4.66 4.32,-9.85 7.33,-14.33 0.67,-1 2.52,-1 2.79,0.37 1.2,6.36 0.69,12.73 0.52,19.14 2.21,-0.11 4.41,0 6.62,-0.12C292.94,241.43 289.27,228 278.77,225.05Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M741.44,362.51c-0.37,-5.7 -0.51,-11.39 -0.55,-17.09 0,-0.4 -0.07,-0.8 -0.1,-1.2 -0.61,-8.89 -0.16,-17.78 0.17,-26.67 -0.06,-4.66 0,-9.32 0,-14 0,-10.07 1.15,-20.37 1.09,-30.55v-0.43c-0.12,-0.45 -0.23,-0.91 -0.33,-1.36 -0.07,-0.27 -0.13,-0.55 -0.19,-0.82l-0.15,-0.84c-0.06,-0.31 -0.11,-0.62 -0.16,-0.92s-0.06,-0.41 -0.08,-0.61c-0.12,-0.91 -0.22,-1.83 -0.28,-2.74h0l-4,0.08h0c-17.56,0.46 -35.09,1.87 -52.64,2.38l-2.51,0.07c-2.42,0 -4.85,0.1 -7.28,0.12h0c-2.53,2 -5.11,3.89 -7.75,5.71l-0.75,0.63h0c-8.17,6.88 -16,14.13 -23.76,21.5v3.89a10.14,10.14 0,0 1,0 1.3c-0.32,6.84 -1.13,13.67 -1.92,20.48 -1.24,10.66 -1.92,21.32 -2.47,32 -0.57,11.17 -0.88,22.25 -0.65,33.43 0,2 0.11,4.06 0.17,6.13 0.09,0.37 0.2,0.74 0.31,1.11l-0.28,0.11c0,1.17 0,2.36 0.07,3.54 13.73,-1.47 27.55,-1.74 41.36,-2.18a99.24,99.24 0,0 1,10.06 -0.3c1.62,-0.07 3.25,-0.17 4.87,-0.26h0c0.88,0 1.76,-0.08 2.63,-0.14h0.58l0.33,0.05 0.27,0.06h0.11l1.72,-1.22 2,-1.4 2.31,-1.55c0.77,-0.51 1.55,-1 2.33,-1.51s1.62,-1 2.44,-1.54c8.4,-5.22 17.13,-9.94 25.72,-14.87h0l1,-0.62c1.14,-0.65 2.28,-1.31 3.41,-2l0.07,-0.06c1,-0.62 2.1,-1.22 3.13,-1.85C741.68,366.46 741.57,364.49 741.44,362.51ZM680.28,272.93c10.82,-0.47 21.69,-0.73 32.49,-0.94q6.63,-0.12 13.25,-0.16a102.32,102.32 0,0 0,-8.46 6.13,136.35 136.35,0 0,0 -13.71,12.15c-0.1,-0.18 -0.19,-0.36 -0.3,-0.53a7.56,7.56 0,0 1,-1.89 0.65,1.85 1.85,0 0,1 -0.61,0.47 1.42,1.42 0,0 1,-0.33 0.11l-0.15,0.05a1.88,1.88 0,0 1,-0.58 0l-0.49,0.06a3.78,3.78 0,0 1,-0.75 0.05h-0.1l-0.33,-0.07h-0.09c-6.19,0.29 -12.4,0.21 -18.6,0.24s-12.36,0.07 -18.51,0.65A76.66,76.66 0,0 0,651 293.2c4.34,-3.15 9.15,-5.88 13.09,-9.11C669.32,279.81 674.37,275.88 680.28,272.93ZM672.68,389.27c-3.41,0.68 -6.78,1.49 -10.17,2.24 -4.15,0.64 -8.33,1.41 -12.51,1.69 -0.65,0.05 -1.3,0.06 -1.94,0.06 0.73,-7.16 -0.92,-14.52 -0.75,-21.7q0.35,-15.06 0.75,-30.15c0.2,-8.14 0.77,-16.25 1.57,-24.35 0.23,-2.39 1.27,-8.81 -0.62,-11.8 7.24,-1.09 14.88,0.19 22.13,-0.44 5.56,-0.48 11.11,-1.5 16.6,-2.47 3.94,-0.69 8.24,-0.86 12.28,-1.64a3.44,3.44 0,0 0,-0.17 1c-0.49,16.78 -1.86,33.78 -1.39,50.56 0.19,6.87 0.89,13.71 1,20.57 0.08,3.45 0,6.91 -0.14,10.35 -0.09,1.45 -0.32,3 -0.46,4.54l-2.32,0.28c-7.61,-1.91 -16.59,-0.13 -23.86,1.26ZM725,371.73c-4.5,2.83 -9,5.59 -13.5,8.5 -0.92,0.6 -1.86,1.22 -2.8,1.86 0,-2 -0.09,-4 -0.14,-5.94 -0.3,-11 -0.66,-22.1 -0.46,-33.14 0.18,-9.7 0.62,-19.39 0.07,-29.08A113.82,113.82 0,0 0,706.68 300c-0.14,-0.76 -0.29,-1.61 -0.46,-2.51h0.8a2.55,2.55 0,0 1,-0.26 -1.36,1.8 1.8,0 0,1 0.09,-0.45 0.11,0.11 0,0 1,0 -0.08,2.05 2.05,0 0,1 0.16,-0.38l0.06,-0.11a2.43,2.43 0,0 1,0.24 -0.32l0.09,-0.11a2.61,2.61 0,0 1,0.44 -0.37q1.8,-1.23 3.55,-2.52l1.37,-1c2.23,-1.65 4.43,-3.31 6.67,-4.93a1.8,1.8 0,0 1,0.81 -0.32l1.07,-0.82a97.55,97.55 0,0 1,9.13 -6.19,62.3 62.3,0 0,0 5.89,-3.26c0,1.9 0.11,3.79 0.12,5.65 0.08,12.9 -2.53,25.74 -2.9,38.64 -0.38,13.56 -0.82,27.27 0,40.82l0.3,5.19c-3.08,1.73 -6.08,4.36 -8.85,6.12Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M682.94,354.76a1.67,1.67 0,0 1,-2 -1.21,2.2 2.2,0 0,1 0,-0.36c0,-5.24 0.64,-10.57 0.32,-15.82 -2.15,4.19 -3.78,8.65 -6.49,12.53a1.5,1.5 0,0 1,-2.05 0.51,1.44 1.44,0 0,1 -0.5,-0.51c-2.25,-3.86 -3.64,-8.87 -6.78,-12.2 -0.19,5.28 -0.64,10.54 -0.75,15.83a1.29,1.29 0,0 1,-0.94 1.23,24.16 24.16,0 0,1 -8.81,-0.25c5.2,10.38 20.83,14.08 30,6.53a17.75,17.75 0,0 0,4.73 -6.38A57.07,57.07 0,0 0,682.94 354.76Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M679.5,324.48a16.79,16.79 0,0 0,-13.36 1.75c-9.1,4 -14.93,15.25 -12.49,25 0.12,0.47 0.27,0.94 0.43,1.39a43.66,43.66 0,0 0,8 -0.16c0,-5.91 0.49,-11.81 0.52,-17.73a1.41,1.41 0,0 1,1.43 -1.42,1.52 1.52,0 0,1 0.72,0.19c4.58,2.94 6.41,8.09 8.79,12.77 2.68,-4.65 4.32,-9.85 7.33,-14.32 0.67,-1 2.52,-1 2.78,0.36 1.21,6.36 0.7,12.73 0.53,19.14 2.2,-0.11 4.4,0 6.62,-0.11C693.69,340.88 690,327.47 679.5,324.48Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M182,259.29c-0.37,-5.69 -0.51,-11.39 -0.55,-17.08 0,-0.41 -0.07,-0.81 -0.09,-1.21 -0.62,-8.88 -0.17,-17.78 0.16,-26.67v-14c0,-10.07 1.15,-20.37 1.09,-30.55v-0.44c-0.13,-0.45 -0.23,-0.9 -0.34,-1.35 -0.06,-0.28 -0.13,-0.55 -0.18,-0.83s-0.11,-0.56 -0.16,-0.84 -0.11,-0.61 -0.16,-0.92a2.83,2.83 0,0 0,-0.08 -0.61c-0.12,-0.91 -0.22,-1.82 -0.28,-2.74h0l-4,0.08h0c-17.56,0.45 -35.09,1.86 -52.64,2.37l-2.5,0.07c-2.43,0.06 -4.86,0.11 -7.28,0.12h0c-2.54,2 -5.12,3.89 -7.76,5.72l-0.75,0.63h0c-8.17,6.87 -16,14.12 -23.75,21.5v2.16a15.37,15.37 0,0 1,-0.06 1.73v1.3c-0.32,6.84 -1.13,13.66 -1.92,20.48 -1.23,10.65 -1.92,21.32 -2.46,32 -0.57,11.16 -0.89,22.25 -0.66,33.43 0,2 0.11,4.05 0.17,6.13 0.1,0.37 0.2,0.74 0.32,1.1l-0.29,0.11c0,1.18 0,2.36 0.07,3.55 13.74,-1.47 27.55,-1.75 41.36,-2.18a100.51,100.51 0,0 1,10.27 -0.38l4.87,-0.26h0l2.64,-0.14a2.72,2.72 0,0 1,0.57 0l0.33,0.05 0.27,0.06h0.11l1.73,-1.22 2,-1.4c0.77,-0.52 1.54,-1 2.32,-1.55s1.54,-1 2.32,-1.5 1.62,-1 2.44,-1.55c8.4,-5.22 17.13,-9.94 25.72,-14.87h0l1,-0.61 3.42,-2 0.06,-0.07c1,-0.62 2.1,-1.22 3.14,-1.85Q182.15,262.27 182,259.29ZM120.82,169.71c10.81,-0.46 21.68,-0.73 32.49,-0.93 4.41,-0.09 8.83,-0.13 13.25,-0.17a104,104 0,0 0,-8.46 6.13,136 136,0 0,0 -13.69,12.14c-0.1,-0.17 -0.19,-0.36 -0.3,-0.52a7.56,7.56 0,0 1,-1.89 0.65,1.7 1.7,0 0,1 -0.61,0.46 2.19,2.19 0,0 1,-0.33 0.12h-0.15a2.71,2.71 0,0 1,-0.57 0L140,187.59a3.12,3.12 0,0 1,-0.74 0.06h-0.11a1.65,1.65 0,0 1,-0.32 -0.07h-0.09c-6.2,0.29 -12.41,0.22 -18.61,0.25s-12.36,0.06 -18.51,0.65a74.67,74.67 0,0 0,-10.12 1.41c4.33,-3.15 9.14,-5.89 13.08,-9.11C109.83,176.59 114.88,172.67 120.77,169.71ZM113.21,286.06c-3.4,0.67 -6.78,1.49 -10.16,2.23 -4.16,0.65 -8.34,1.42 -12.52,1.7 -0.65,0 -1.29,0.05 -1.94,0.05 0.74,-7.15 -0.92,-14.52 -0.75,-21.7q0.36,-15.06 0.75,-30.14c0.2,-8.15 0.77,-16.25 1.57,-24.36 0.23,-2.39 1.27,-8.8 -0.62,-11.8 7.24,-1.09 14.88,0.2 22.13,-0.43 5.56,-0.48 11.12,-1.51 16.6,-2.48 3.94,-0.69 8.24,-0.86 12.28,-1.64a3.44,3.44 0,0 0,-0.17 1c-0.48,16.79 -1.85,33.79 -1.38,50.57 0.19,6.86 0.88,13.7 1,20.57 0.08,3.44 0,6.9 -0.15,10.34 -0.08,1.45 -0.32,3 -0.46,4.54l-2.31,0.28c-7.59,-1.91 -16.57,-0.17 -23.84,1.27ZM165.54,268.51c-4.5,2.84 -9.05,5.6 -13.5,8.51l-2.78,1.86c0,-2 -0.09,-4 -0.14,-5.93 -0.3,-11 -0.66,-22.1 -0.45,-33.15 0.18,-9.7 0.61,-19.38 0.06,-29.08a112.8,112.8 0,0 0,-1.49 -13.84c-0.14,-0.76 -0.28,-1.61 -0.45,-2.51l0.79,-0.06a2.5,2.5 0,0 1,-0.26 -1.35,3.73 3.73,0 0,1 0.09,-0.46v-0.08a1,1 0,0 1,0.16 -0.37,0.34 0.34,0 0,1 0.07,-0.11 1.72,1.72 0,0 1,0.23 -0.32l0.1,-0.12a2.54,2.54 0,0 1,0.43 -0.37c1.2,-0.81 2.38,-1.66 3.55,-2.52l1.37,-1c2.22,-1.65 4.43,-3.32 6.68,-4.93a1.76,1.76 0,0 1,0.8 -0.32l1.07,-0.82a97.55,97.55 0,0 1,9.13 -6.19c2,-1.17 4.13,-2 5.89,-3.27 0,1.9 0.11,3.8 0.12,5.66 0.08,12.89 -2.52,25.74 -2.89,38.63 -0.39,13.57 -0.83,27.27 0,40.82 0.1,1.74 0.21,3.47 0.3,5.2 -3.1,1.74 -6.06,4.36 -8.85,6.12Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M123.45,251.54a1.63,1.63 0,0 1,-2 -1.18,1.58 1.58,0 0,1 0,-0.38c0,-5.24 0.63,-10.57 0.31,-15.82 -2.15,4.18 -3.77,8.64 -6.49,12.53a1.51,1.51 0,0 1,-2.07 0.49,1.41 1.41,0 0,1 -0.48,-0.49c-2.25,-3.87 -3.64,-8.88 -6.78,-12.21 -0.18,5.28 -0.64,10.55 -0.75,15.83a1.31,1.31 0,0 1,-0.94 1.24,23.89 23.89,0 0,1 -8.8,-0.26c5.19,10.38 20.83,14.09 30,6.54a17.58,17.58 0,0 0,4.73 -6.39A59.53,59.53 0,0 0,123.45 251.54Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M120,221.27A16.81,16.81 0,0 0,106.65 223c-9.1,4 -14.93,15.26 -12.49,25 0.12,0.48 0.27,0.94 0.43,1.4a43.66,43.66 0,0 0,8 -0.16c0,-5.92 0.49,-11.82 0.52,-17.73a1.43,1.43 0,0 1,1.45 -1.42,1.46 1.46,0 0,1 0.7,0.18c4.59,2.94 6.42,8.1 8.79,12.77 2.68,-4.65 4.32,-9.84 7.33,-14.32 0.67,-1 2.52,-1 2.79,0.36 1.2,6.37 0.69,12.73 0.52,19.15 2.21,-0.12 4.41,0 6.62,-0.12C134.21,237.64 130.54,224.25 120,221.27Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M491.52,140.72c-0.37,-5.69 -0.51,-11.39 -0.56,-17.08l-0.09,-1.2c-0.61,-8.89 -0.17,-17.78 0.16,-26.67 0,-4.66 0,-9.32 0,-14 0,-10.07 1.14,-20.37 1.08,-30.55v-0.43c-0.13,-0.45 -0.23,-0.91 -0.34,-1.36l-0.18,-0.82a5.08,5.08 0,0 0,-0.16 -0.85c-0.05,-0.28 -0.11,-0.61 -0.15,-0.91l-0.09,-0.62c-0.12,-0.91 -0.21,-1.82 -0.27,-2.74h0c-1.34,0 -2.68,0 -4,0.09h0c-17.55,0.46 -35.08,1.86 -52.63,2.38l-2.51,0.06c-2.43,0.06 -4.85,0.11 -7.28,0.12h0c-2.54,2 -5.11,3.89 -7.76,5.72l-0.74,0.63h0c-8.16,6.88 -16,14.13 -23.75,21.5v3.89a10.06,10.06 0,0 1,-0.05 1.3c-0.33,6.84 -1.13,13.66 -1.92,20.48 -1.24,10.65 -1.92,21.32 -2.47,32 -0.57,11.16 -0.88,22.25 -0.65,33.43 0,2 0.11,4.06 0.16,6.13 0.1,0.37 0.21,0.74 0.32,1.11l-0.28,0.1c0,1.18 0.05,2.37 0.06,3.55 13.74,-1.47 27.56,-1.74 41.36,-2.18a100.71,100.71 0,0 1,10.28 -0.38c1.62,-0.07 3.24,-0.17 4.87,-0.26h0l2.63,-0.14a5.61,5.61 0,0 1,0.58 0l0.33,0.06 0.27,0h0.11c0.57,-0.42 1.15,-0.82 1.72,-1.23l2,-1.4 2.31,-1.55 2.33,-1.5c0.81,-0.52 1.62,-1 2.44,-1.55 8.4,-5.22 17.13,-9.93 25.72,-14.86h0l1,-0.61c1.14,-0.66 2.28,-1.31 3.41,-2l0.07,-0.07c1,-0.61 2.1,-1.21 3.13,-1.84C491.77,144.68 491.65,142.71 491.52,140.72ZM430.36,51.14c10.82,-0.46 21.69,-0.73 32.49,-0.93q6.61,-0.12 13.25,-0.17c-2.92,1.91 -5.75,4 -8.46,6.14a136.35,136.35 0,0 0,-13.71 12.15c-0.11,-0.18 -0.2,-0.36 -0.31,-0.53a7.48,7.48 0,0 1,-1.88 0.65,1.85 1.85,0 0,1 -0.61,0.47 2.13,2.13 0,0 1,-0.33 0.11h-0.16a1.82,1.82 0,0 1,-0.57 0l-0.49,0.06a3.78,3.78 0,0 1,-0.75 0h-0.06a1.14,1.14 0,0 1,-0.33 -0.07h-0.09c-6.2,0.29 -12.4,0.21 -18.61,0.24s-12.36,0.07 -18.5,0.65a76.66,76.66 0,0 0,-10.13 1.41c4.34,-3.15 9.14,-5.89 13.09,-9.11C419.4,58 424.44,54.11 430.36,51.14ZM422.77,167.49c-3.4,0.68 -6.77,1.49 -10.16,2.24 -4.15,0.64 -8.33,1.41 -12.51,1.69q-1,0.06 -2,0.06c0.74,-7.16 -0.91,-14.52 -0.75,-21.71q0.36,-15.06 0.75,-30.14c0.21,-8.15 0.78,-16.25 1.57,-24.35 0.24,-2.39 1.28,-8.81 -0.61,-11.81 7.24,-1.08 14.88,0.2 22.13,-0.43 5.56,-0.48 11.11,-1.5 16.6,-2.47 3.93,-0.7 8.24,-0.87 12.27,-1.65a3.44,3.44 0,0 0,-0.17 1c-0.48,16.78 -1.85,33.78 -1.38,50.56 0.19,6.87 0.88,13.71 1,20.57 0.08,3.44 0,6.91 -0.15,10.34 -0.08,1.45 -0.32,3 -0.46,4.55l-2.31,0.27C439,164.32 430,166.05 422.77,167.49ZM475.1,150c-4.5,2.83 -9.05,5.59 -13.5,8.5l-2.8,1.85c-0.05,-2 -0.09,-4 -0.14,-5.93 -0.3,-11 -0.66,-22.1 -0.46,-33.14 0.18,-9.7 0.62,-19.39 0.07,-29.08a111.89,111.89 0,0 0,-1.5 -13.89c-0.13,-0.76 -0.28,-1.61 -0.45,-2.51l0.8,-0.06a2.5,2.5 0,0 1,-0.26 -1.35,2.36 2.36,0 0,1 0.08,-0.45v-0.08a1.8,1.8 0,0 1,0.16 -0.38l0.06,-0.11a2.43,2.43 0,0 1,0.24 -0.32l0.09,-0.11a2.61,2.61 0,0 1,0.44 -0.37c1.19,-0.82 2.37,-1.67 3.55,-2.52l1.37,-1c2.22,-1.65 4.43,-3.32 6.67,-4.93a1.76,1.76 0,0 1,0.8 -0.32c0.36,-0.27 0.71,-0.55 1.08,-0.82a99.38,99.38 0,0 1,9.12 -6.19c2,-1.17 4.13,-2 5.9,-3.27 0,1.91 0.11,3.8 0.12,5.66 0.08,12.9 -2.53,25.74 -2.9,38.64 -0.38,13.56 -0.82,27.26 0,40.82 0.1,1.73 0.2,3.46 0.29,5.19 -3.09,1.78 -6.06,4.41 -8.85,6.17Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M433,133a1.67,1.67 0,0 1,-2 -1.21,2.2 2.2,0 0,1 0,-0.36c0,-5.24 0.63,-10.57 0.32,-15.82 -2.15,4.18 -3.78,8.64 -6.5,12.53a1.48,1.48 0,0 1,-2 0.51,1.39 1.39,0 0,1 -0.51,-0.51c-2.26,-3.86 -3.64,-8.87 -6.79,-12.21 -0.18,5.29 -0.64,10.55 -0.75,15.84a1.29,1.29 0,0 1,-0.94 1.23,23.89 23.89,0 0,1 -8.8,-0.26c5.19,10.39 20.83,14.09 30,6.54a17.77,17.77 0,0 0,4.74 -6.38A55.13,55.13 0,0 0,433 133Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M429.58,102.7a16.75,16.75 0,0 0,-13.36 1.75c-9.1,4 -14.93,15.25 -12.49,25 0.12,0.48 0.27,0.94 0.43,1.4a43.66,43.66 0,0 0,8 -0.16c0,-5.91 0.49,-11.82 0.52,-17.73a1.43,1.43 0,0 1,1.45 -1.42,1.46 1.46,0 0,1 0.7,0.18c4.58,3 6.41,8.1 8.78,12.77 2.69,-4.65 4.33,-9.84 7.33,-14.32 0.68,-1 2.53,-1 2.79,0.37 1.21,6.36 0.69,12.73 0.53,19.14 2.2,-0.12 4.4,0 6.61,-0.12C443.77,119.08 440.11,105.69 429.58,102.7Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M671.84,227.66c-0.37,-5.69 -0.51,-11.39 -0.55,-17.09 0,-0.4 -0.07,-0.8 -0.09,-1.2 -0.62,-8.88 -0.17,-17.78 0.16,-26.67 -0.05,-4.66 0,-9.32 0,-14 0,-10.08 1.15,-20.37 1.09,-30.55v-0.44c-0.13,-0.45 -0.24,-0.9 -0.34,-1.35 -0.06,-0.28 -0.13,-0.55 -0.18,-0.83s-0.11,-0.56 -0.16,-0.84 -0.11,-0.61 -0.16,-0.92a2.83,2.83 0,0 0,-0.08 -0.61c-0.12,-0.91 -0.22,-1.82 -0.28,-2.74h0l-4,0.08h0c-17.55,0.46 -35.09,1.87 -52.64,2.38l-2.5,0.07q-3.65,0.09 -7.29,0.12h0c-2.54,2 -5.12,3.89 -7.76,5.71l-0.75,0.64h0c-8.17,6.87 -16,14.12 -23.75,21.5v2.15a15.64,15.64 0,0 1,-0.06 1.74,11.13 11.13,0 0,1 0,1.29c-0.32,6.85 -1.13,13.67 -1.92,20.49 -1.23,10.65 -1.92,21.32 -2.46,32 -0.57,11.16 -0.89,22.24 -0.66,33.42 0.05,2 0.11,4.06 0.17,6.13 0.1,0.38 0.2,0.75 0.32,1.11l-0.29,0.11c0,1.18 0,2.36 0.07,3.55 13.74,-1.48 27.55,-1.75 41.36,-2.18 3.41,-0.3 6.84,-0.43 10.27,-0.39 1.62,-0.07 3.25,-0.17 4.87,-0.26h0c0.88,0 1.76,-0.08 2.64,-0.14h0.57l0.33,0.05 0.28,0.06h0.1l1.73,-1.22 2,-1.4 2.31,-1.55 2.33,-1.5c0.78,-0.5 1.62,-1 2.44,-1.55 8.41,-5.22 17.13,-9.94 25.72,-14.87h0l1,-0.61 3.42,-2 0.06,-0.07c1,-0.62 2.1,-1.22 3.14,-1.85Q672,230.64 671.84,227.66ZM610.68,138.08c10.82,-0.47 21.69,-0.73 32.5,-0.94 4.41,-0.08 8.83,-0.12 13.24,-0.16a103.87,103.87 0,0 0,-8.45 6.13,136.47 136.47,0 0,0 -13.72,12.15c-0.1,-0.17 -0.19,-0.36 -0.3,-0.52a7.15,7.15 0,0 1,-1.89 0.64,1.73 1.73,0 0,1 -0.61,0.47 2.19,2.19 0,0 1,-0.33 0.12L631,155.97a2.81,2.81 0,0 1,-0.58 0l-0.49,0.05a3.11,3.11 0,0 1,-0.74 0h-0.11a1.65,1.65 0,0 1,-0.32 -0.07h-0.09c-6.2,0.29 -12.41,0.22 -18.61,0.24s-12.36,0.07 -18.51,0.66a74.67,74.67 0,0 0,-10.12 1.41c4.33,-3.15 9.14,-5.89 13.08,-9.12C599.77,145 604.77,141 610.68,138.08ZM603.08,254.43c-3.4,0.67 -6.78,1.49 -10.16,2.23 -4.16,0.65 -8.34,1.42 -12.52,1.7 -0.65,0 -1.29,0.05 -1.94,0.05 0.74,-7.15 -0.92,-14.52 -0.75,-21.7q0.36,-15.08 0.75,-30.14c0.2,-8.15 0.77,-16.25 1.57,-24.36 0.23,-2.39 1.27,-8.8 -0.62,-11.8 7.24,-1.09 14.88,0.2 22.13,-0.43 5.56,-0.48 11.12,-1.51 16.6,-2.48 3.94,-0.69 8.24,-0.86 12.28,-1.64a3.44,3.44 0,0 0,-0.17 1c-0.48,16.78 -1.85,33.79 -1.39,50.57 0.2,6.86 0.89,13.7 1,20.57 0.08,3.44 0,6.9 -0.15,10.34 -0.08,1.45 -0.32,3 -0.46,4.54l-2.31,0.28c-7.61,-1.91 -16.59,-0.17 -23.86,1.27ZM655.41,236.88c-4.5,2.84 -9,5.6 -13.51,8.51l-2.8,1.85c0,-2 -0.09,-4 -0.14,-5.93 -0.3,-11.05 -0.66,-22.1 -0.45,-33.15 0.18,-9.7 0.61,-19.38 0.06,-29.08a113.44,113.44 0,0 0,-1.49 -13.88c-0.14,-0.76 -0.28,-1.62 -0.45,-2.51a3.55,3.55 0,0 0,0.79 -0.06,2.5 2.5,0 0,1 -0.26,-1.35 1.87,1.87 0,0 1,0.09 -0.46v-0.08a1.73,1.73 0,0 1,0.16 -0.37,0.34 0.34,0 0,1 0.07,-0.11 1.5,1.5 0,0 1,0.23 -0.33l0.09,-0.11a2.61,2.61 0,0 1,0.44 -0.37c1.2,-0.81 2.38,-1.66 3.55,-2.52l1.38,-1c2.22,-1.64 4.42,-3.31 6.67,-4.93a1.64,1.64 0,0 1,0.8 -0.31l1.13,-0.81a103,103 0,0 1,9.13 -6.19c2,-1.16 4.13,-1.95 5.89,-3.26 0,1.9 0.11,3.8 0.12,5.66 0.08,12.89 -2.52,25.74 -2.89,38.63 -0.39,13.56 -0.83,27.27 0,40.82 0.1,1.74 0.21,3.47 0.3,5.2C661.16,232.5 658.2,235.12 655.41,236.88Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M613.34,219.88a1.63,1.63 0,0 1,-2 -1.18,1.58 1.58,0 0,1 -0.05,-0.38c0,-5.24 0.63,-10.57 0.31,-15.82 -2.15,4.18 -3.77,8.64 -6.49,12.53a1.51,1.51 0,0 1,-2.07 0.49,1.41 1.41,0 0,1 -0.48,-0.49c-2.25,-3.87 -3.64,-8.88 -6.78,-12.21 -0.18,5.28 -0.64,10.55 -0.75,15.83a1.31,1.31 0,0 1,-0.94 1.24,24.33 24.33,0 0,1 -8.8,-0.26c5.19,10.38 20.83,14.09 30,6.54a17.58,17.58 0,0 0,4.73 -6.39A59.53,59.53 0,0 0,613.34 219.88Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M609.91,189.63a16.85,16.85 0,0 0,-13.37 1.75c-9.1,4 -14.93,15.25 -12.49,25 0.12,0.48 0.27,0.94 0.43,1.4a43.66,43.66 0,0 0,8 -0.16c0,-5.92 0.49,-11.82 0.52,-17.74a1.43,1.43 0,0 1,1.46 -1.41,1.39 1.39,0 0,1 0.69,0.18c4.59,2.94 6.42,8.09 8.79,12.77 2.68,-4.65 4.32,-9.84 7.33,-14.32 0.67,-1 2.52,-1 2.79,0.36 1.2,6.37 0.69,12.73 0.52,19.15 2.21,-0.12 4.41,0 6.62,-0.12C624.1,206 620.43,192.62 609.91,189.63Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M684.87,580.4c-0.37,-5.7 -0.51,-11.39 -0.55,-17.09 0,-0.4 -0.07,-0.8 -0.09,-1.2 -0.62,-8.89 -0.17,-17.78 0.16,-26.67v-14c0,-10.07 1.15,-20.36 1.09,-30.54v-0.44c-0.13,-0.45 -0.23,-0.9 -0.34,-1.36 -0.06,-0.27 -0.13,-0.54 -0.18,-0.82s-0.11,-0.56 -0.16,-0.84 -0.11,-0.61 -0.16,-0.92a2.83,2.83 0,0 0,-0.08 -0.61c-0.12,-0.91 -0.22,-1.83 -0.28,-2.74h0l-4,0.08h0c-17.55,0.46 -35.09,1.87 -52.64,2.38l-2.5,0.07q-3.64,0.09 -7.28,0.12h0c-2.54,2 -5.12,3.89 -7.76,5.71l-0.75,0.64h0c-8.17,6.87 -16,14.12 -23.75,21.5v2.15c0,0.72 0,1.16 -0.05,1.73l-0.06,1.3c-0.32,6.85 -1.13,13.67 -1.92,20.49 -1.23,10.65 -1.92,21.32 -2.46,32 -0.57,11.17 -0.89,22.25 -0.65,33.43 0,2 0.1,4.06 0.16,6.13 0.1,0.38 0.21,0.75 0.32,1.11l-0.29,0.11c0,1.18 0.06,2.36 0.07,3.55 13.74,-1.48 27.55,-1.75 41.36,-2.18 3.41,-0.3 6.84,-0.43 10.27,-0.39 1.63,-0.07 3.25,-0.17 4.87,-0.26h0c0.88,0 1.76,-0.08 2.64,-0.14h0.57l0.33,0 0.27,0.06h0.11l1.73,-1.22 2,-1.4c0.77,-0.52 1.54,-1 2.32,-1.55l2.32,-1.51 2.44,-1.54c8.41,-5.22 17.13,-9.94 25.72,-14.87h0l1,-0.61 3.42,-2 0.06,-0.07c1.05,-0.62 2.1,-1.22 3.14,-1.85Q685.07,583.39 684.87,580.4ZM623.77,490.82c10.81,-0.47 21.68,-0.73 32.49,-0.94q6.62,-0.12 13.25,-0.16a102.32,102.32 0,0 0,-8.46 6.13A136.47,136.47 0,0 0,647.33 508c-0.1,-0.17 -0.19,-0.36 -0.3,-0.52a7.15,7.15 0,0 1,-1.89 0.64,1.73 1.73,0 0,1 -0.61,0.47l-0.33,0.12h-0.15a1.82,1.82 0,0 1,-0.57 0l-0.5,0.06a2.66,2.66 0,0 1,-0.74 0.05h-0.11l-0.32,-0.07h-0.09c-6.2,0.29 -12.41,0.22 -18.61,0.24s-12.36,0.07 -18.51,0.65a74.68,74.68 0,0 0,-10.12 1.42c4.34,-3.15 9.14,-5.89 13.09,-9.12C612.77,497.7 617.77,493.78 623.77,490.82ZM616.16,607.17c-3.4,0.67 -6.78,1.48 -10.16,2.23 -4.16,0.64 -8.34,1.42 -12.52,1.69 -0.64,0 -1.29,0.06 -1.94,0.06 0.74,-7.15 -0.92,-14.52 -0.75,-21.7q0.36,-15.08 0.75,-30.14c0.2,-8.15 0.77,-16.26 1.57,-24.36 0.23,-2.39 1.27,-8.8 -0.62,-11.8 7.24,-1.09 14.88,0.19 22.14,-0.43 5.55,-0.49 11.11,-1.51 16.59,-2.48 3.94,-0.69 8.24,-0.86 12.28,-1.64a3.44,3.44 0,0 0,-0.17 1c-0.48,16.78 -1.85,33.78 -1.38,50.56 0.19,6.87 0.88,13.71 1,20.58 0.08,3.44 0,6.9 -0.15,10.34 -0.08,1.45 -0.32,3 -0.46,4.54l-2.31,0.28c-7.66,-1.91 -16.65,-0.17 -23.92,1.27ZM668.49,589.62c-4.5,2.84 -9,5.6 -13.5,8.5L652.18,600c0,-2 -0.08,-4 -0.14,-5.94 -0.3,-11 -0.66,-22.09 -0.45,-33.14 0.18,-9.7 0.61,-19.38 0.06,-29.08a113.82,113.82 0,0 0,-1.49 -13.89c-0.14,-0.75 -0.28,-1.61 -0.45,-2.51l0.79,0a2.5,2.5 0,0 1,-0.26 -1.35,3.73 3.73,0 0,1 0.09,-0.46v-0.08a1.76,1.76 0,0 1,0.17 -0.37,0.34 0.34,0 0,1 0.06,-0.12 2.35,2.35 0,0 1,0.23 -0.32l0.1,-0.11a2.21,2.21 0,0 1,0.43 -0.37q1.8,-1.23 3.55,-2.52l1.37,-1c2.23,-1.65 4.43,-3.32 6.68,-4.94a1.64,1.64 0,0 1,0.8 -0.31l1.07,-0.83a99.53,99.53 0,0 1,9.13 -6.19c2,-1.16 4.13,-1.95 5.89,-3.26 0,1.9 0.11,3.8 0.12,5.66 0.09,12.89 -2.52,25.73 -2.89,38.63 -0.39,13.56 -0.82,27.27 0,40.82 0.11,1.73 0.21,3.47 0.3,5.2 -3.15,1.79 -6.11,4.43 -8.9,6.17Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M626.38,572.65a1.64,1.64 0,0 1,-2 -1.19,1.5 1.5,0 0,1 0,-0.37c0,-5.24 0.63,-10.57 0.31,-15.83 -2.15,4.19 -3.77,8.65 -6.49,12.54a1.51,1.51 0,0 1,-2.07 0.49,1.41 1.41,0 0,1 -0.48,-0.49c-2.25,-3.87 -3.64,-8.88 -6.78,-12.21 -0.18,5.28 -0.64,10.55 -0.75,15.83a1.29,1.29 0,0 1,-0.94 1.24,24.33 24.33,0 0,1 -8.8,-0.26c5.19,10.38 20.83,14.08 30,6.53a17.55,17.55 0,0 0,4.73 -6.38A59.35,59.35 0,0 0,626.38 572.65Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M622.94,542.37a16.85,16.85 0,0 0,-13.37 1.75c-9.09,4 -14.93,15.25 -12.48,25 0.12,0.47 0.26,0.94 0.42,1.39a44.56,44.56 0,0 0,8 -0.15c0,-5.92 0.48,-11.82 0.51,-17.74a1.43,1.43 0,0 1,1.46 -1.41,1.39 1.39,0 0,1 0.69,0.18c4.59,2.94 6.42,8.09 8.79,12.77 2.68,-4.65 4.32,-9.84 7.33,-14.32 0.67,-1 2.52,-1 2.79,0.36 1.2,6.37 0.69,12.73 0.52,19.14 2.21,-0.11 4.41,0 6.62,-0.11C637.13,558.75 633.47,545.36 622.94,542.37Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M176.77,428.77c-0.37,-5.69 -0.51,-11.38 -0.55,-17.08 0,-0.4 -0.07,-0.8 -0.09,-1.2 -0.62,-8.89 -0.17,-17.78 0.16,-26.67 0,-4.66 0,-9.32 0,-14 0,-10.07 1.15,-20.37 1.09,-30.55v-0.43c-0.13,-0.45 -0.24,-0.91 -0.34,-1.36 -0.06,-0.27 -0.13,-0.55 -0.18,-0.82s-0.11,-0.56 -0.16,-0.84 -0.11,-0.62 -0.16,-0.92a3.13,3.13 0,0 0,-0.08 -0.62c-0.12,-0.91 -0.22,-1.82 -0.28,-2.73h0c-1.34,0 -2.68,0 -4,0.08h0c-17.56,0.46 -35.09,1.87 -52.64,2.38l-2.5,0.06c-2.43,0.06 -4.86,0.11 -7.29,0.12h0q-3.81,3 -7.76,5.72l-0.75,0.63h0c-8.17,6.88 -16,14.13 -23.75,21.5v2.16a15.37,15.37 0,0 1,-0.06 1.73v1.3c-0.32,6.84 -1.13,13.66 -1.92,20.48 -1.23,10.66 -1.92,21.32 -2.46,32 -0.57,11.17 -0.89,22.25 -0.66,33.43 0,2 0.11,4.06 0.17,6.13 0.1,0.37 0.2,0.74 0.32,1.11l-0.29,0.11c0,1.17 0,2.36 0.07,3.54 13.74,-1.47 27.55,-1.74 41.36,-2.18a100.51,100.51 0,0 1,10.27 -0.38c1.62,-0.07 3.25,-0.17 4.87,-0.26h0c0.88,0 1.76,-0.08 2.64,-0.14h0.9l0.26,0.05h0.12l1.73,-1.23c0.66,-0.47 1.33,-0.93 2,-1.39s1.54,-1 2.32,-1.55l2.32,-1.51c0.81,-0.52 1.62,-1 2.44,-1.54 8.4,-5.22 17.13,-9.94 25.72,-14.87h0l1,-0.61 3.42,-2 0.06,-0.06c1,-0.62 2.1,-1.22 3.14,-1.85A53.62,53.62 0,0 1,176.77 428.77ZM115.61,339.2c10.82,-0.47 21.69,-0.74 32.5,-0.94q6.6,-0.12 13.24,-0.16a103.87,103.87 0,0 0,-8.45 6.13,135.38 135.38,0 0,0 -13.72,12.15c-0.1,-0.18 -0.19,-0.36 -0.3,-0.53a7.56,7.56 0,0 1,-1.89 0.65,1.85 1.85,0 0,1 -0.61,0.47 1.42,1.42 0,0 1,-0.33 0.11l-0.15,0.05a2.81,2.81 0,0 1,-0.58 0l-0.49,0.06a4.68,4.68 0,0 1,-0.74 0.05H134l-0.32,-0.08h-0.09c-6.2,0.29 -12.41,0.21 -18.61,0.24s-12.36,0.07 -18.51,0.65a76.51,76.51 0,0 0,-10.12 1.41c4.33,-3.15 9.14,-5.88 13.08,-9.11 5.19,-4.27 10.24,-8.19 16.15,-11.15ZM108,455.54c-3.4,0.68 -6.78,1.49 -10.16,2.24 -4.16,0.64 -8.34,1.41 -12.52,1.69 -0.65,0 -1.29,0.06 -1.94,0.06 0.74,-7.16 -0.92,-14.52 -0.75,-21.71q0.36,-15.06 0.75,-30.14c0.2,-8.14 0.77,-16.25 1.57,-24.35 0.23,-2.39 1.27,-8.81 -0.62,-11.8 7.24,-1.09 14.88,0.19 22.13,-0.44 5.56,-0.48 11.12,-1.5 16.6,-2.47 3.94,-0.7 8.24,-0.86 12.28,-1.65a3.44,3.44 0,0 0,-0.17 1c-0.48,16.78 -1.85,33.78 -1.39,50.56 0.2,6.87 0.89,13.71 1.05,20.57 0.08,3.45 0,6.91 -0.15,10.35 -0.08,1.45 -0.32,3 -0.46,4.54l-2.31,0.28c-7.71,-1.9 -16.69,-0.17 -24,1.27ZM160.34,438c-4.5,2.83 -9.05,5.59 -13.51,8.5l-2.8,1.86q-0.06,-3 -0.14,-5.94c-0.3,-11 -0.66,-22.1 -0.45,-33.14 0.18,-9.7 0.61,-19.39 0.06,-29.08A113.82,113.82 0,0 0,142 366.31c-0.14,-0.76 -0.28,-1.61 -0.45,-2.51l0.79,-0.05a2.55,2.55 0,0 1,-0.26 -1.36,1.8 1.8,0 0,1 0.09,-0.45v-0.08a2.05,2.05 0,0 1,0.16 -0.38l0.07,-0.11a1.72,1.72 0,0 1,0.23 -0.32l0.09,-0.11a2.61,2.61 0,0 1,0.44 -0.37c1.2,-0.82 2.38,-1.67 3.55,-2.52l1.37,-1c2.22,-1.64 4.43,-3.31 6.68,-4.93a1.76,1.76 0,0 1,0.8 -0.32l1.07,-0.82a99.62,99.62 0,0 1,9.13 -6.2c2,-1.16 4.13,-1.95 5.89,-3.27 0,1.91 0.11,3.8 0.12,5.66 0.08,12.9 -2.52,25.74 -2.89,38.64 -0.39,13.56 -0.83,27.27 0,40.82 0.1,1.73 0.21,3.46 0.3,5.19 -3.15,1.79 -6.11,4.42 -8.9,6.18Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M118.22,421a1.65,1.65 0,0 1,-2 -1.26,1.55 1.55,0 0,1 0,-0.31c0,-5.24 0.63,-10.57 0.31,-15.82 -2.15,4.18 -3.77,8.65 -6.49,12.53a1.5,1.5 0,0 1,-2.05 0.51,1.44 1.44,0 0,1 -0.5,-0.51c-2.25,-3.86 -3.64,-8.87 -6.78,-12.2 -0.18,5.28 -0.64,10.54 -0.75,15.83A1.29,1.29 0,0 1,99 421a24.11,24.11 0,0 1,-8.8 -0.25c5.19,10.38 20.83,14.08 30,6.53a17.63,17.63 0,0 0,4.73 -6.38A58.1,58.1 0,0 0,118.22 421Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M114.77,390.75a16.81,16.81 0,0 0,-13.37 1.75c-9.1,4 -14.93,15.25 -12.49,25 0.12,0.48 0.27,0.95 0.43,1.4a43.66,43.66 0,0 0,8 -0.16c0,-5.91 0.49,-11.81 0.52,-17.73a1.43,1.43 0,0 1,1.46 -1.41,1.39 1.39,0 0,1 0.69,0.18c4.59,2.94 6.42,8.09 8.79,12.77 2.68,-4.66 4.32,-9.85 7.33,-14.33 0.67,-1 2.52,-1 2.79,0.37 1.2,6.36 0.69,12.73 0.52,19.14 2.21,-0.11 4.41,0 6.62,-0.12C129,407.13 125.31,393.74 114.77,390.75Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M413.11,429.38c-5.08,-2.92 -11.2,-4.36 -16.81,-5.94 -6,-1.69 -12.11,-3.18 -18,-5.35 -5.66,-2.08 -11.2,-4.51 -17,-6.22 -4.28,-1.27 -11.8,-4.07 -15.57,-0.56a3,3 0,0 0,0 4.25h0c1.68,1.62 4.08,1.81 6.26,2.38a76.7,76.7 0,0 1,8.06 2.65c5.44,2.11 10.79,4.43 16.23,6.56 10.85,4.25 22.36,6.42 33.14,10.9C414.49,440.14 417.66,432 413.11,429.38Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M483.77,329.62c0.54,-4.13 -5.38,-4.89 -7.27,-2 -3.27,5.07 -3.54,12.28 -3.84,18.12 -0.33,6.73 -0.13,13.47 -0.48,20.2 -0.37,7 -1.42,13.93 -1.78,20.94 -0.41,7.75 -1.5,15.33 -2.2,23 -1.83,5.2 6.9,7.68 8.81,2.2 2.4,-6.93 2.26,-15.18 2.62,-22.45s1.34,-14.69 1.8,-22.05c0.41,-6.48 0.1,-13 0.22,-19.48S483,335.88 483.77,329.62Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M636.14,362.7c-6.31,2.88 -11.72,7.34 -17.12,11.64a166.31,166.31 0,0 1,-16.53 11.78c-12.06,7.43 -24.17,14.34 -35.47,22.94 -10.74,8.17 -21,16.91 -31.75,25.11a311.38,311.38 0,0 1,-33.73 22.2c-2.71,1.57 -0.92,6.28 2.19,5.19 12.75,-4.44 24.18,-12.26 35,-20.21s21.26,-16.47 32.1,-24.47c11.2,-8.25 23.15,-15 35,-22.21 12.13,-7.34 22.33,-17.47 34.76,-24.26C645.77,367.58 641.24,360.38 636.14,362.7Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M682.7,391.88a2.3,2.3 0,0 0,-2.56 -1c-3.39,0.77 -4.65,5.39 -5.85,8.23 -1.46,3.45 -2.81,6.94 -4,10.5 -2.72,8.26 -4.83,16.67 -6.76,25.15s-3.7,16.72 -5.52,25.09c-0.87,3.95 -1.76,7.91 -2.72,11.84 -0.85,3.45 -3.17,8.25 -1.89,11.7 1.13,3 4.23,3.69 6.7,1.77 2.77,-2.16 3.18,-7.21 4,-10.47 1,-3.92 1.86,-7.86 2.72,-11.8 1.84,-8.36 3.45,-16.77 5.24,-25.14 1.74,-8.12 3.57,-16.24 5.71,-24.27 1,-3.85 2.09,-7.7 3.31,-11.5C682.07,398.88 684.37,394.88 682.7,391.88Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M660.69,260.78c-3.68,-5.21 -7.88,-12.15 -13.45,-15.55a3.47,3.47 0,0 0,-5 3.89c1.39,5.6 6.45,10.52 9.59,15.21a68.73,68.73 0,0 1,4.85 8.07c1.09,2.26 1.12,4.91 2.85,6.8a4.46,4.46 0,0 0,6.29 0C670.3,274 663.84,265.24 660.69,260.78Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M471.32,211.46c-0.61,-9 -3.48,-17.42 -5.25,-26.19 -1.52,-7.53 -1.76,-16.68 -6.62,-23 -2.1,-2.72 -6.13,-1.18 -5.54,2.34 1.24,7.44 2.44,14.87 3.65,22.32 1.32,8.2 4,16.21 4.45,24.53C462.36,217.42 471.77,217.44 471.32,211.46Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M446.62,273.14c-2.5,-2.36 -6.89,-2.54 -10.1,-3.75 -3.68,-1.39 -7.22,-3.1 -10.86,-4.59 -9.45,-3.86 -19.48,-6.14 -29.15,-9.36 -10,-3.34 -19.94,-6.95 -30,-10.13 -9.69,-3.05 -20.44,-7.33 -30.7,-7.54a3.22,3.22 0,0 0,-1.61 6c4.54,2.52 9.84,3.93 14.73,5.6s10.08,3.3 15.09,5c10.23,3.52 20.29,7.5 30.51,11 9.29,3.21 19,5.55 28,9.43 3.73,1.6 7.41,3.32 11.21,4.75 3.43,1.29 8.61,3.47 11.94,1.09C448.06,278.93 449,275.42 446.62,273.14Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M239.77,243.47c-4.9,-3.25 -10.93,-5 -16.35,-7.22 -4.87,-2 -9.73,-3.86 -14.74,-5.44 -4.53,-1.44 -9.09,-2.8 -13.54,-4.47 -3.46,-1.29 -7.47,-2.77 -10.14,-5.42 -5,-5 -12.74,2.74 -7.76,7.76 6.81,6.86 17.81,9.25 26.76,11.92 5,1.48 9.83,3.23 14.72,5 6.07,2.16 12.6,5.13 19.15,4.92a3.8,3.8 0,0 0,1.9 -7.05Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M237.45,270c-4.22,0.3 -7.41,5.45 -9.8,8.52 -3.13,4 -6,8.19 -8.78,12.45 -6,9.09 -11.77,18.24 -18.56,26.74 -6.35,8 -12.91,15.76 -19,23.91 -2.28,3 -4.56,6.08 -6.66,9.25s-4.43,6.39 -2.77,10.31c1,2.31 4.08,2.46 6,1.57 2.62,-1.22 4.1,-5.46 5.66,-7.76 2,-3 4.21,-5.92 6.4,-8.82 6.08,-8.08 12.46,-15.93 18.61,-24a255.72,255.72 0,0 0,16.55 -25.26c2.65,-4.46 5.33,-8.92 8.09,-13.31 2,-3.16 6.51,-7.69 6.27,-11.58a2,2 0,0 0,-2 -2Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M529.77,76.1c-9.36,3.91 -15.86,12.16 -24.58,17.15 -3.42,1.92 -6.82,3.63 -10.16,5.63 -2.87,1.66 -6.76,3.65 -8.46,6.62 -2.15,3.74 2.05,7.43 5.64,5.64 2.81,-1.4 5.45,-3.41 8.24,-4.91 3.22,-1.74 6.53,-3.33 9.74,-5.09 8.35,-4.58 14.85,-11.75 23.12,-16.5C537.77,82.07 534.71,74 529.77,76.1Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M543.61,69.08a4.71,4.71 0,0 0,-3.19 -1.32,4.51 4.51,0 1,0 3.18,7.71h0a4.62,4.62 0,0 0,1.32 -3.19A4.55,4.55 0,0 0,543.61 69.08Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M550.56,61.34c-4.94,0 -4.95,7.68 0,7.68S555.51,61.34 550.56,61.34Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M341.45,59.68c-2.19,4.34 -3.2,9.44 -4.77,14.05C334.88,79 333,84.17 331,89.35c-3.73,9.9 -7.69,19.7 -11.54,29.56A275.72,275.72 0,0 0,309.4 149c-0.54,2.07 -5.28,24.91 0.27,22.87 3.37,-1.24 3.42,-6.83 4.18,-9.83 1.25,-4.93 2.6,-9.87 4.09,-14.74 3,-9.68 6.69,-19.1 10.41,-28.52s7.56,-19 11.17,-28.52c1.87,-5 3.69,-9.94 5.4,-15 1.51,-4.39 3.48,-9 3.91,-13.66C349.2,57.77 343.17,56.27 341.45,59.68Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M350.49,48.72a3,3 0,0 0,-0.37 -1.23,2.7 2.7,0 0,0 -1.59,-1.24 8,8 0,0 0,-0.75 -0.32,3.81 3.81,0 1,0 0.91,7 4,4 0,0 0,1.8 -4.2Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M352.22,35.88a6.46,6.46 0,0 0,-1 -0.74,3.54 3.54,0 0,0 -3.61,0A3.58,3.58 0,0 0,346.3 40a3.63,3.63 0,0 0,1.31 1.3,3.54 3.54,0 0,0 3.61,0 6.46,6.46 0,0 0,1 -0.74,3.32 3.32,0 0,0 0,-4.68Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M684.77,189c-1.09,0.93 -3.25,1.41 -4.56,2 -2,0.9 -3.92,1.85 -5.82,2.89 -3,1.67 -6.35,3.57 -8.23,6.59 -1.51,2.43 1.37,4.53 3.56,3.57 2.79,-1.22 5.36,-3 8.09,-4.31s6.7,-4 9.71,-4.11C694.52,195.55 690.55,184.16 684.77,189Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M165.05,116.47c-1.75,8.64 -2.18,17.52 -4.15,26.12 -1.83,8 -4.54,15.43 -3.37,23.7 0.6,4.2 7,3 7.17,-1 0.26,-7.74 3.49,-14.83 5,-22.32 1.67,-8 2.33,-16.15 4,-24.15C174.84,113.21 166.19,110.8 165.05,116.47Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M169.37,103.46c-4.63,0 -4.64,7.21 0,7.21S174,103.46 169.37,103.46Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M174.16,98.71a2.19,2.19 0,0 0,0.27 -1.1,2.8 2.8,0 0,0 -0.58,-1.62 2.64,2.64 0,0 0,-1.39 -1,3.12 3.12,0 0,0 -2.06,0.27 3.91,3.91 0,0 0,-1 0.7,3.08 3.08,0 0,0 -1.06,3.38 3.74,3.74 0,0 0,0.33 0.8,2.76 2.76,0 0,0 1.1,1.12h0l0.57,0.45A2.57,2.57 0,0 0,174.13 99Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M698.14,184.55c-4.45,0 -4.46,6.92 0,6.92S702.6,184.55 698.14,184.55Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M736,504.18a4.13,4.13 0,0 0,-2.35 -1.81,3.93 3.93,0 0,0 -3.82,1c-5.36,5.42 -13.92,7.93 -20.74,11 -4.58,2.06 -9,4.53 -13.43,6.8 -5.3,2.69 -10.89,4.69 -16.22,7.28 -2.32,1.14 -1.16,4.87 1.31,4.81 11.36,-0.31 21.84,-8.22 32,-12.51 4.31,-1.81 8.67,-3.51 12.9,-5.51 3.36,-1.59 7.3,-3.4 9.74,-6.31A4.07,4.07 0,0 0,736 504.18Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M745.63,499.09a4,4 0,0 0,-5.66 0l-0.05,0a4.14,4.14 0,0 0,-1.18 2.85,4.08 4.08,0 0,0 1.18,2.86 4.19,4.19 0,0 0,2.85 1.18,4 4,0 0,0 4,-4A4.15,4.15 0,0 0,745.63 499.09Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M751.1,493.88c-3.57,0 -3.57,5.54 0,5.54S754.66,493.88 751.1,493.88Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M448.4,304a2.47,2.47 0,0 0,-2.16 -1.24c-3.69,-0.09 -6.78,5 -9.41,7.13 -3.55,2.95 -7.52,5.4 -11.22,8.14 -9.28,6.88 -18.9,13.32 -28,20.38s-18,13.83 -26.81,21c-8.62,7 -17.45,14.13 -24.49,22.73 -1.63,2 0.52,5.65 3,3.9 19,-13.33 37.36,-27.52 56,-41.26 9.2,-6.77 19,-12.87 27.76,-20.21a108.92,108.92 0,0 0,10.57 -10.26C446.2,311.46 450.13,308.08 448.4,304Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M270.09,368.49c-2.3,-4.67 -6.49,-7.89 -10.34,-11.21 -4.33,-3.73 -8.73,-7.33 -13,-11.16 -9.65,-8.67 -19.31,-17.37 -29.19,-25.77 -9,-7.66 -18.27,-15 -27.22,-22.73 -9.34,-8.06 -17.65,-16.87 -26,-25.94 -2.78,-3 -7.88,0.9 -5.69,4.4 12.64,20.22 33.52,34.67 51.32,50 9.78,8.42 19.29,17.19 28.92,25.8 4.33,3.86 8.54,8.1 13.45,11.24a55.82,55.82 0,0 1,12 9.77C267.26,376.12 271.82,372 270.09,368.49Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M421.06,172.11c-0.59,-2.7 -5.15,-2.86 -5.62,0 -0.59,3.66 -2.93,7.26 -4.81,10.36 -2.62,4.29 -5.44,8.45 -8.16,12.67 -7.2,11.19 -12.58,23.64 -19,35.32 -7.25,13.29 -14.5,26.43 -21.14,40.06 -6.79,13.94 -14.73,27.28 -21.52,41.23 -3.45,7.08 -6.39,14.37 -10,21.35 -3.21,6.14 -6.61,12.16 -9,18.67 -1.68,4.54 5.9,7.81 7.89,3.33 2.47,-5.58 5.49,-10.94 8.32,-16.34 3.3,-6.28 6,-12.76 9,-19.17 6.69,-14.3 14.87,-27.82 21.81,-42 6.77,-13.79 14,-27.24 21.21,-40.78 6.57,-12.28 12.1,-25.27 19.18,-37.25 2.86,-4.84 5.91,-9.56 8.45,-14.58C419.69,181 422.05,176.65 421.06,172.11Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M248.15,401.2c2,-0.36 -1,-0.51 -1.62,-0.63a27.92,27.92 0,0 0,-3 -0.37c-3.35,-0.23 -6.74,-0.23 -10.1,-0.43 -6.8,-0.4 -13.58,-1 -20.36,-1.71 -7,-0.7 -14,-1.57 -21,-2.31 -3.5,-0.37 -7,-0.74 -10.51,-1.09 -3.28,-0.33 -6.78,-1.08 -9.94,0.06a3.55,3.55 0,0 0,-0.84 6.41c3.21,2 7.42,2 11.1,2.46 3.48,0.48 7,1 10.45,1.48q10.72,1.53 21.52,2.68c7,0.74 14,1.42 21,1.87 3,0.2 6.12,0.07 9.09,0.43 2.29,0.28 4.48,1.36 6.81,0.49a4.85,4.85 0,0 0,-2.6 -9.34Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M569.51,225.23c-5.21,1.77 -10.25,4.37 -15.22,6.71S544.11,237 540,240.88c-3.56,3.33 1.28,9.94 5.32,6.9a103.61,103.61 0,0 1,13.9 -8.73c4.64,-2.45 9.7,-4.85 13.23,-8.84C574.24,228.14 572.52,224.2 569.51,225.23Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M626.09,484.88c-4.41,-11.33 -12.25,-20.74 -19.3,-30.49 -7.77,-10.76 -15.14,-21.81 -22.2,-33 -14.2,-22.6 -27.12,-45.91 -39.2,-69.7q-4.93,-9.75 -10,-19.4c-3.58,-6.8 -7,-14 -11.53,-20.21 -1.88,-2.61 -7,-1.16 -5.67,2.39 4.64,12.19 11.2,24 16.91,35.68 5.86,12 11.85,24 18.22,35.82a690.66,690.66 0,0 0,41.79 67.84c7.93,11.32 16.84,22 22.79,34.58C620,492.88 628,489.64 626.09,484.88Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M391.77,113.29c-5.44,-6.89 -15.41,-10 -23.29,-13a241.12,241.12 0,0 1,-28.07 -13c-9.78,-5.22 -19.38,-10.78 -29.27,-15.81 -3.57,-1.82 -7.22,-3.35 -10.93,-4.85 -3.1,-1.26 -8,-2.53 -10.09,-5.32 -1.46,-1.94 -4.84,-0.92 -4.14,1.75 2,7.51 9.53,10 15.77,13.24 10,5.16 19.69,11.09 29.43,16.75a246.55,246.55 0,0 0,29.21 14.63c8.18,3.4 16.12,6 23.13,11.43a3,3 0,0 0,4.19 2.91,4.09 4.09,0 0,0 2.36,-0.6l0.71,-0.46C393.62,119.09 393.77,115.81 391.77,113.29Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M279.82,53.42c-4.79,0 -4.8,7.44 0,7.44S284.61,53.42 279.82,53.42Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M270,48.2h-0.47c-3.73,-0.12 -3.74,5.91 0,5.8H270a2.9,2.9 0,0 0,0 -5.8Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M228,73.36c-0.25,-0.13 -0.5,-0.26 -0.74,-0.4 -5.07,-2.71 -5.07,7.38 0,4.67l0.74,-0.4a2.25,2.25 0,0 0,0.76 -3.1A2.33,2.33 0,0 0,228 73.36Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M230.37,85.14a4.23,4.23 0,0 0,-0.41 -0.33c-0.12,-0.11 -0.26,-0.22 -0.39,-0.32a2.44,2.44 0,0 0,-1.29 -0.33,3.1 3.1,0 0,0 -1.55,0.41 3.83,3.83 0,0 0,-1.64 2.13,2.58 2.58,0 0,0 1.78,3.2 1.77,1.77 0,0 0,0.4 0.08,2.67 2.67,0 0,0 2.84,-1.77 1.87,1.87 0,0 0,0.78 -1.08A2,2 0,0 0,230.37 85.14Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M257.34,183.55c-2.8,-7.2 -4.83,-14.66 -7,-22.07s-4.8,-14.94 -6.79,-22.5c-1.93,-7.36 -3.23,-14.87 -4.86,-22.3a101.75,101.75 0,0 0,-2.75 -10.7c-0.9,-2.63 -1.67,-6.36 -4.69,-7.15a2.33,2.33 0,0 0,-2.56 1c-1.61,2.43 0.07,5.91 0.61,8.51 0.72,3.44 1.41,6.88 2,10.34 1.3,7.72 2.34,15.48 4.21,23.09 1.82,7.4 4.18,14.7 6.16,22.06a221.63,221.63 0,0 0,6.89 22.1,4.84 4.84,0 0,0 4.4,3.35 3.6,3.6 0,0 0,3.22 -1.33C257.15,186.81 258,185.12 257.34,183.55Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M577.71,193.77c-5.27,-8 -13.37,-13.17 -20.38,-19.46 -8.24,-7.39 -16,-15.3 -24.06,-22.86 -7.43,-7 -16,-12.54 -24.39,-18.21a91.08,91.08 0,0 0,-10.41 -6.1,50.38 50.38,0 0,1 -5.37,-3c-1.43,-0.93 -2.57,-2.14 -4.23,-2.62a2.37,2.37 0,0 0,-2.92 1.63,2.55 2.55,0 0,0 -0.08,0.61c-0.76,6.44 10.93,11.27 15.06,14.39 8.05,6.09 16.62,11.76 23.93,18.75 7.79,7.45 15.21,15.27 23.09,22.62 6.82,6.27 15.82,11.63 21,19.36C572.55,204.3 581.34,199.25 577.71,193.77Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M84,246.39c-2.36,-3.9 -9.25,-4.88 -13.32,-5.93 -4.69,-1.21 -9.93,-2.77 -14.81,-2.22 -6.1,0.69 -6.36,10.18 0,9.75 4.76,-0.32 9.32,0.95 13.91,2 4.06,1 10.28,2.88 13.79,-0.31A2.78,2.78 0,0 0,84 246.39Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M43.77,238a3,3 0,1 0,3 3A3,3 0,0 0,43.77 238Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M36.2,239.43h0C36.2,239.64 36.3,239.76 36.2,239.43Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M36.18,239.38h0v-0.14a3,3 0,0 0,0.08 -0.6,2.67 2.67,0 0,0 0,-0.4 2.54,2.54 0,0 0,-0.07 -0.47l-0.06,-0.2a1.5,1.5 0,0 0,-1.36 -1.07c-1.7,-0.09 -2.76,1.59 -3,3.08a2.33,2.33 0,0 0,1.56 2.9,2.26 2.26,0 0,0 0.69,0.1 2.38,2.38 0,0 0,2.34 -2.42,2.32 2.32,0 0,0 -0.08,-0.58A0.75,0.75 0,0 1,36.18 239.38Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M27.27,304l-0.36,-0.85 -0.52,-0.68a2.6,2.6 0,0 0,-1 -0.67,3.32 3.32,0 0,0 -4.6,1 3.18,3.18 0,0 0,-0.4 0.88,3.84 3.84,0 0,0 0.35,3 3.72,3.72 0,0 0,2.2 1.72,3.56 3.56,0 0,0 3.94,-1.61 4.41,4.41 0,0 0,0.42 -1A3.5,3.5 0,0 0,27.27 304Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M34.5,310.07a3.57,3.57 0,0 0,-0.39 -1.39,2.53 2.53,0 0,0 -1.3,-1.11 2.76,2.76 0,0 0,-1.77 -0.14,2.88 2.88,0 0,0 -1.88,1.69 4.5,4.5 0,0 0,-0.33 1.44,2.81 2.81,0 0,0 2.82,2.84l0.43,0a2.84,2.84 0,0 0,2.43 -3.21S34.5,310.1 34.5,310.07Z"
android:fillColor="#fffdfb"/>
<path
android:pathData="M90.77,349.53c-1.81,-1.19 -3.89,-1.35 -5.82,-2.33a41.93,41.93 0,0 1,-6.9 -4.69c-4.08,-3.23 -7.88,-6.9 -12.33,-9.63S56.46,327.5 52,324.5a57.26,57.26 0,0 1,-6.81 -5.2c-1.41,-1.28 -3.09,-3.36 -5.14,-3.28a2.11,2.11 0,0 0,-1.82 1c-2.23,4.52 5.37,9.4 8.28,11.61 5,3.79 10.34,7 15.57,10.41 4.81,3.16 8.89,7.4 13.47,10.88 3.6,2.74 10.62,8.24 15.21,4.84C91.78,353.59 91.12,351.28 90.77,349.53Z"
android:fillColor="#fffdfb"/>
</vector>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -13,10 +13,10 @@
android:startY="74.0" android:startY="74.0"
android:type="linear"> android:type="linear">
<item <item
android:color="#FFF0006B" android:color="@color/monerujoPink"
android:offset="0.0" /> android:offset="0.0" />
<item <item
android:color="#FFFF6600" android:color="@color/monerujoOrange"
android:offset="1.0" /> android:offset="1.0" />
</gradient> </gradient>
</aapt:attr> </aapt:attr>

View File

@ -17,10 +17,10 @@
android:startY="58.0" android:startY="58.0"
android:type="linear"> android:type="linear">
<item <item
android:color="#FFF0006B" android:color="@color/monerujoPink"
android:offset="0.0" /> android:offset="0.0" />
<item <item
android:color="#FFFF6600" android:color="@color/monerujoOrange"
android:offset="1.0" /> android:offset="1.0" />
</gradient> </gradient>
</aapt:attr> </aapt:attr>

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<solid android:color="@color/white" /> <solid android:color="@color/monerujoBackground" />
<padding <padding
android:bottom="8dp" android:bottom="8dp"
android:left="8dp" android:left="8dp"

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<padding
android:bottom="8dp"
android:left="8dp"
android:right="8dp"
android:top="8dp" />
<stroke
android:width="2dp"
android:color="@color/gradientOrange" />
</shape>

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<padding
android:bottom="8dp"
android:left="8dp"
android:right="8dp"
android:top="8dp" />
<stroke
android:width="2dp"
android:color="@color/moneroGray" />
</shape>

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/gradientOrange" />
</shape>

View File

@ -1,4 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/moneroGray" />
</shape>

View File

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/tx_green" /> <solid android:color="@color/monerujoReceive" />
</shape> </shape>

View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_disabled" android:state_enabled="false" />
<item android:drawable="@drawable/button_default" android:state_enabled="true" />
<item android:drawable="@drawable/button_default" android:state_pressed="false" />
</selector>

View File

@ -1,6 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/button_disabled" android:state_enabled="false" />
<item android:drawable="@drawable/button_green" android:state_enabled="true" /> <item android:drawable="@drawable/button_green" android:state_enabled="true" />
<item android:drawable="@drawable/button_green" android:state_pressed="false" /> <item android:drawable="@drawable/button_green" android:state_pressed="false" />
</selector> </selector>

View File

@ -6,7 +6,7 @@
android:shape="ring" android:shape="ring"
android:thickness="8dp" android:thickness="8dp"
android:useLevel="false"> android:useLevel="false">
<solid android:color="@color/gradientOrange" /> <solid android:color="?attr/colorSecondary" />
</shape> </shape>
</item> </item>
</layer-list> </layer-list>

View File

@ -6,7 +6,7 @@
android:shape="ring" android:shape="ring"
android:thickness="8dp" android:thickness="8dp"
android:useLevel="false"> android:useLevel="false">
<solid android:color="#CDD1D9" /> <solid android:color="?attr/colorSecondaryVariant" />
</shape> </shape>
</item> </item>
</layer-list> </layer-list>

View File

@ -2,8 +2,8 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle"> android:shape="rectangle">
<gradient <gradient
android:angle="45" android:angle="-90"
android:endColor="@color/gradientOrange" android:endColor="@color/gradientBottom"
android:startColor="@color/gradientPink" android:startColor="@color/gradientTop"
android:type="linear" /> android:type="linear" />
</shape> </shape>

View File

@ -2,8 +2,8 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android" <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval"> android:shape="oval">
<gradient <gradient
android:angle="45" android:angle="135"
android:endColor="@color/gradientOrange" android:endColor="@color/gradientBottom"
android:startColor="@color/gradientPink" android:startColor="@color/gradientTop"
android:type="linear" /> android:type="linear" />
</shape> </shape>

View File

@ -1,9 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp" android:width="24dp"
android:height="24dp" android:height="24dp"
android:viewportHeight="20.0" android:viewportWidth="20.0"
android:viewportWidth="20.0"> android:viewportHeight="20.0">
<path <path
android:fillColor="@color/moneroFab" android:fillColor="?colorPrimaryVariant"
android:pathData="M11,5L9,5L9,9L5,9L5,11L9,11L9,15L11,15L11,11L15,11L15,9L11,9L11,5L11,5ZM10,0C4.5,0 0,4.5 0,10C0,15.5 4.5,20 10,20C15.5,20 20,15.5 20,10C20,4.5 15.5,0 10,0L10,0ZM10,18C5.6,18 2,14.4 2,10C2,5.6 5.6,2 10,2C14.4,2 18,5.6 18,10C18,14.4 14.4,18 10,18L10,18Z" /> android:pathData="M11,5L9,5L9,9L5,9L5,11L9,11L9,15L11,15L11,11L15,11L15,9L11,9L11,5L11,5ZM10,0C4.5,0 0,4.5 0,10C0,15.5 4.5,20 10,20C15.5,20 20,15.5 20,10C20,4.5 15.5,0 10,0L10,0ZM10,18C5.6,18 2,14.4 2,10C2,5.6 5.6,2 10,2C14.4,2 18,5.6 18,10C18,14.4 14.4,18 10,18L10,18Z" />
</vector> </vector>

View File

@ -4,6 +4,6 @@
android:viewportHeight="20.0" android:viewportHeight="20.0"
android:viewportWidth="20.0"> android:viewportWidth="20.0">
<path <path
android:fillColor="@color/moneroWhite" android:fillColor="@color/monerujoPrimary"
android:pathData="M11,5L9,5L9,9L5,9L5,11L9,11L9,15L11,15L11,11L15,11L15,9L11,9L11,5L11,5ZM10,0C4.5,0 0,4.5 0,10C0,15.5 4.5,20 10,20C15.5,20 20,15.5 20,10C20,4.5 15.5,0 10,0L10,0ZM10,18C5.6,18 2,14.4 2,10C2,5.6 5.6,2 10,2C14.4,2 18,5.6 18,10C18,14.4 14.4,18 10,18L10,18Z" /> android:pathData="M11,5L9,5L9,9L5,9L5,11L9,11L9,15L11,15L11,11L15,11L15,9L11,9L11,5L11,5ZM10,0C4.5,0 0,4.5 0,10C0,15.5 4.5,20 10,20C15.5,20 20,15.5 20,10C20,4.5 15.5,0 10,0L10,0ZM10,18C5.6,18 2,14.4 2,10C2,5.6 5.6,2 10,2C14.4,2 18,5.6 18,10C18,14.4 14.4,18 10,18L10,18Z" />
</vector> </vector>

View File

@ -4,6 +4,6 @@
android:viewportHeight="24.0" android:viewportHeight="24.0"
android:viewportWidth="24.0"> android:viewportWidth="24.0">
<path <path
android:fillColor="@color/gradientOrange" android:fillColor="@color/gradientLeft"
android:pathData="M18.6,6.62c-1.44,0 -2.8,0.56 -3.77,1.53L12,10.66 10.48,12h0.01L7.8,14.39c-0.64,0.64 -1.49,0.99 -2.4,0.99 -1.87,0 -3.39,-1.51 -3.39,-3.38S3.53,8.62 5.4,8.62c0.91,0 1.76,0.35 2.44,1.03l1.13,1 1.51,-1.34L9.22,8.2C8.2,7.18 6.84,6.62 5.4,6.62 2.42,6.62 0,9.04 0,12s2.42,5.38 5.4,5.38c1.44,0 2.8,-0.56 3.77,-1.53l2.83,-2.5 0.01,0.01L13.52,12h-0.01l2.69,-2.39c0.64,-0.64 1.49,-0.99 2.4,-0.99 1.87,0 3.39,1.51 3.39,3.38s-1.52,3.38 -3.39,3.38c-0.9,0 -1.76,-0.35 -2.44,-1.03l-1.14,-1.01 -1.51,1.34 1.27,1.12c1.02,1.01 2.37,1.57 3.82,1.57 2.98,0 5.4,-2.41 5.4,-5.38s-2.42,-5.37 -5.4,-5.37z" /> android:pathData="M18.6,6.62c-1.44,0 -2.8,0.56 -3.77,1.53L12,10.66 10.48,12h0.01L7.8,14.39c-0.64,0.64 -1.49,0.99 -2.4,0.99 -1.87,0 -3.39,-1.51 -3.39,-3.38S3.53,8.62 5.4,8.62c0.91,0 1.76,0.35 2.44,1.03l1.13,1 1.51,-1.34L9.22,8.2C8.2,7.18 6.84,6.62 5.4,6.62 2.42,6.62 0,9.04 0,12s2.42,5.38 5.4,5.38c1.44,0 2.8,-0.56 3.77,-1.53l2.83,-2.5 0.01,0.01L13.52,12h-0.01l2.69,-2.39c0.64,-0.64 1.49,-0.99 2.4,-0.99 1.87,0 3.39,1.51 3.39,3.38s-1.52,3.38 -3.39,3.38c-0.9,0 -1.76,-0.35 -2.44,-1.03l-1.14,-1.01 -1.51,1.34 1.27,1.12c1.02,1.01 2.37,1.57 3.82,1.57 2.98,0 5.4,-2.41 5.4,-5.38s-2.42,-5.37 -5.4,-5.37z" />
</vector> </vector>

View File

@ -4,6 +4,6 @@
android:viewportHeight="24.0" android:viewportHeight="24.0"
android:viewportWidth="24.0"> android:viewportWidth="24.0">
<path <path
android:fillColor="#FFffffff" android:fillColor="@color/monerujoToolbarText"
android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z" /> android:pathData="M20,11H7.83l5.59,-5.59L12,4l-8,8 8,8 1.41,-1.41L7.83,13H20v-2z" />
</vector> </vector>

View File

@ -4,6 +4,6 @@
android:viewportHeight="74.0" android:viewportHeight="74.0"
android:viewportWidth="74.0"> android:viewportWidth="74.0">
<path <path
android:fillColor="@color/gradientPink" android:fillColor="@color/monerujoPink"
android:pathData="M21.83,29.97L16.65,35.15L33.3,51.8L70.3,14.8L65.12,9.62L33.3,41.44L21.83,29.97L21.83,29.97ZM66.6,37C66.6,53.28 53.28,66.6 37,66.6C20.72,66.6 7.4,53.28 7.4,37C7.4,20.72 20.72,7.4 37,7.4C39.96,7.4 42.55,7.77 45.14,8.51L51.06,2.59C46.62,1.11 41.81,0 37,0C16.65,0 0,16.65 0,37C0,57.35 16.65,74 37,74C57.35,74 74,57.35 74,37L66.6,37L66.6,37Z" /> android:pathData="M21.83,29.97L16.65,35.15L33.3,51.8L70.3,14.8L65.12,9.62L33.3,41.44L21.83,29.97L21.83,29.97ZM66.6,37C66.6,53.28 53.28,66.6 37,66.6C20.72,66.6 7.4,53.28 7.4,37C7.4,20.72 20.72,7.4 37,7.4C39.96,7.4 42.55,7.77 45.14,8.51L51.06,2.59C46.62,1.11 41.81,0 37,0C16.65,0 0,16.65 0,37C0,57.35 16.65,74 37,74C57.35,74 74,57.35 74,37L66.6,37L66.6,37Z" />
</vector> </vector>

View File

@ -4,7 +4,7 @@
android:viewportHeight="58.0" android:viewportHeight="58.0"
android:viewportWidth="58.0"> android:viewportWidth="58.0">
<path <path
android:fillColor="@color/gradientPink" android:fillColor="@color/monerujoPink"
android:pathData="M17.11,23.49L13.05,27.55L26.1,40.6L55.1,11.6L51.04,7.54L26.1,32.48L17.11,23.49L17.11,23.49ZM52.2,29C52.2,41.76 41.76,52.2 29,52.2C16.24,52.2 5.8,41.76 5.8,29C5.8,16.24 16.24,5.8 29,5.8C31.32,5.8 33.35,6.09 35.38,6.67L40.02,2.03C36.54,0.87 32.77,0 29,0C13.05,0 0,13.05 0,29C0,44.95 13.05,58 29,58C44.95,58 58,44.95 58,29L52.2,29L52.2,29Z" android:pathData="M17.11,23.49L13.05,27.55L26.1,40.6L55.1,11.6L51.04,7.54L26.1,32.48L17.11,23.49L17.11,23.49ZM52.2,29C52.2,41.76 41.76,52.2 29,52.2C16.24,52.2 5.8,41.76 5.8,29C5.8,16.24 16.24,5.8 29,5.8C31.32,5.8 33.35,6.09 35.38,6.67L40.02,2.03C36.54,0.87 32.77,0 29,0C13.05,0 0,13.05 0,29C0,44.95 13.05,58 29,58C44.95,58 58,44.95 58,29L52.2,29L52.2,29Z"
android:strokeColor="#00000000" android:strokeColor="#00000000"
android:strokeWidth="1" /> android:strokeWidth="1" />

View File

@ -4,6 +4,6 @@
android:viewportHeight="24.0" android:viewportHeight="24.0"
android:viewportWidth="24.0"> android:viewportWidth="24.0">
<path <path
android:fillColor="@color/moneroFab" android:fillColor="@color/monerujoPrimary"
android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z" /> android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z" />
</vector> </vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24.0" android:viewportWidth="24.0"
android:viewportHeight="24.0"> android:viewportHeight="24.0">
<path <path
android:fillColor="#FFffffff" android:fillColor="@color/monerujoToolbarText"
android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/> android:pathData="M19,6.41L17.59,5 12,10.59 6.41,5 5,6.41 10.59,12 5,17.59 6.41,19 12,13.41 17.59,19 19,17.59 13.41,12z"/>
</vector> </vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24.0" android:viewportWidth="24.0"
android:viewportHeight="24.0"> android:viewportHeight="24.0">
<path <path
android:fillColor="#FFffffff" android:fillColor="@color/btn_color_selector"
android:pathData="M16,1L4,1c-1.1,0 -2,0.9 -2,2v14h2L4,3h12L16,1zM19,5L8,5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h11c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM19,21L8,21L8,7h11v14z"/> android:pathData="M16,1L4,1c-1.1,0 -2,0.9 -2,2v14h2L4,3h12L16,1zM19,5L8,5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h11c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM19,21L8,21L8,7h11v14z"/>
</vector> </vector>

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportHeight="24.0"
android:viewportWidth="24.0">
<path
android:fillColor="#FF000000"
android:pathData="M16,1L4,1c-1.1,0 -2,0.9 -2,2v14h2L4,3h12L16,1zM19,5L8,5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h11c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM19,21L8,21L8,7h11v14z" />
</vector>

View File

@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24.0"
android:viewportHeight="24.0">
<path
android:fillColor="@color/moneroGray"
android:pathData="M16,1L4,1c-1.1,0 -2,0.9 -2,2v14h2L4,3h12L16,1zM19,5L8,5c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h11c1.1,0 2,-0.9 2,-2L21,7c0,-1.1 -0.9,-2 -2,-2zM19,21L8,21L8,7h11v14z"/>
</vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24.0" android:viewportWidth="24.0"
android:viewportHeight="24.0"> android:viewportHeight="24.0">
<path <path
android:fillColor="@color/gradientOrange" android:fillColor="@color/btn_color_selector"
android:pathData="M19,2h-4.18C14.4,0.84 13.3,0 12,0c-1.3,0 -2.4,0.84 -2.82,2L5,2c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,4c0,-1.1 -0.9,-2 -2,-2zM12,2c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM19,20L5,20L5,4h2v3h10L17,4h2v16z" /> android:pathData="M19,2h-4.18C14.4,0.84 13.3,0 12,0c-1.3,0 -2.4,0.84 -2.82,2L5,2c-1.1,0 -2,0.9 -2,2v16c0,1.1 0.9,2 2,2h14c1.1,0 2,-0.9 2,-2L21,4c0,-1.1 -0.9,-2 -2,-2zM12,2c0.55,0 1,0.45 1,1s-0.45,1 -1,1 -1,-0.45 -1,-1 0.45,-1 1,-1zM19,20L5,20L5,4h2v3h10L17,4h2v16z" />
</vector> </vector>

View File

@ -7,7 +7,7 @@
android:translateX="0.000000" android:translateX="0.000000"
android:translateY="+7.000000"> android:translateY="+7.000000">
<path <path
android:fillColor="#417505" android:fillColor="@color/monerujoGreen"
android:pathData="M17.6,1.4L16.2,0L9.9,6.3L11.3,7.7L17.6,1.4L17.6,1.4ZM21.8,0L11.3,10.6L7.1,6.4L5.7,7.8L11.3,13.4L23.3,1.4L21.8,0L21.8,0ZM0,7.8L5.6,13.4L7,12L1.4,6.4L0,7.8L0,7.8Z" /> android:pathData="M17.6,1.4L16.2,0L9.9,6.3L11.3,7.7L17.6,1.4L17.6,1.4ZM21.8,0L11.3,10.6L7.1,6.4L5.7,7.8L11.3,13.4L23.3,1.4L21.8,0L21.8,0ZM0,7.8L5.6,13.4L7,12L1.4,6.4L0,7.8L0,7.8Z" />
</group> </group>
</vector> </vector>

File diff suppressed because it is too large Load Diff

View File

@ -1,27 +1,12 @@
<!--
~ Copyright (C) 2015 The Android Open Source Project
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License
-->
<vector xmlns:android="http://schemas.android.com/apk/res/android" <vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="36dp" android:width="36dp"
android:height="36dp" android:height="36dp"
android:viewportWidth="36" android:viewportWidth="36"
android:viewportHeight="36" > android:viewportHeight="36">
<path <path
android:fillColor="#f4511e" android:fillColor="?colorError"
android:pathData="M18,18m -18, 0a 18, 18 0 1, 0 36, 0a 18, 18 0 1, 0 -36, 0" /> android:pathData="M18,18m -18, 0a 18, 18 0 1, 0 36, 0a 18, 18 0 1, 0 -36, 0" />
<path <path
android:fillColor="#ffffffff" android:fillColor="?colorOnError"
android:pathData="m16.665,24.915001l2.67,0l0,2.67l-2.67,0l0,-2.67zm0,-16.5l2.67,0l0,12.67l-2.67,0l0,-12.67z" /> android:pathData="m16.665,24.915001l2.67,0l0,2.67l-2.67,0l0,-2.67zm0,-16.5l2.67,0l0,12.67l-2.67,0l0,-12.67z" />
</vector> </vector>

View File

@ -4,6 +4,6 @@
android:viewportWidth="24.0" android:viewportWidth="24.0"
android:viewportHeight="24.0"> android:viewportHeight="24.0">
<path <path
android:fillColor="@color/gradientPink" android:fillColor="@color/gradientRight"
android:pathData="M12,21.35l-1.45,-1.32C5.4,15.36 2,12.28 2,8.5 2,5.42 4.42,3 7.5,3c1.74,0 3.41,0.81 4.5,2.09C13.09,3.81 14.76,3 16.5,3 19.58,3 22,5.42 22,8.5c0,3.78 -3.4,6.86 -8.55,11.54L12,21.35z"/> android:pathData="M12,21.35l-1.45,-1.32C5.4,15.36 2,12.28 2,8.5 2,5.42 4.42,3 7.5,3c1.74,0 3.41,0.81 4.5,2.09C13.09,3.81 14.76,3 16.5,3 19.58,3 22,5.42 22,8.5c0,3.78 -3.4,6.86 -8.55,11.54L12,21.35z"/>
</vector> </vector>

Some files were not shown because too many files have changed in this diff Show More