changeset 114:50855a25db8a v1.3

Merge pull request #13 from DennisTechnologies/beta Release Version 1.3 committer: GitHub <noreply@github.com>
author Dennis C. M. <dennis@denniscm.com>
date Thu, 05 Aug 2021 16:33:37 +0100
parents e0f1c852b9e0 (current diff) 887ea63452b5 (diff)
children 7ab9ed92b470
files Simoleon.xcodeproj/xcshareddata/xcschemes/Screenshots.xcscheme SimoleonScreenshots/Info.plist
diffstat 111 files changed, 1087 insertions(+), 229 deletions(-) [+]
line wrap: on
line diff
--- a/.github/workflows/ios.yml	Mon Aug 02 18:18:24 2021 +0100
+++ b/.github/workflows/ios.yml	Thu Aug 05 16:33:37 2021 +0100
@@ -2,9 +2,9 @@
 
 on:
   push:
-    branches: [ main ]
+    branches: [ development ]
   pull_request:
-    branches: [ main ]
+    branches: [ main, beta ]
 
 jobs:
   build:
@@ -14,15 +14,9 @@
     steps:
       - name: Checkout
         uses: actions/checkout@v2
-      - name: Set Default Scheme
-        run: |
-          scheme_list=$(xcodebuild -list -json | tr -d "\n")
-          default=$(echo $scheme_list | ruby -e "require 'json'; puts JSON.parse(STDIN.gets)['project']['targets'][0]")
-          echo $default | cat >default
-          echo Using default scheme: $default
       - name: Build
         env:
-          scheme: ${{ 'default' }}
+          scheme: ${{ 'Simoleon' }}
           platform: ${{ 'iOS Simulator' }}
         run: |
           # xcrun xctrace returns via stderr, not the expected stdout (see https://developer.apple.com/forums/thread/663959)
@@ -33,7 +27,7 @@
           xcodebuild build-for-testing -scheme "$scheme" -"$filetype_parameter" "$file_to_build" -destination "platform=$platform,name=$device"
       - name: Test
         env:
-          scheme: ${{ 'default' }}
+          scheme: ${{ 'Simoleon' }}
           platform: ${{ 'iOS Simulator' }}
         run: |
           # xcrun xctrace returns via stderr, not the expected stdout (see https://developer.apple.com/forums/thread/663959)
--- a/.gitignore	Mon Aug 02 18:18:24 2021 +0100
+++ b/.gitignore	Thu Aug 05 16:33:37 2021 +0100
@@ -30,4 +30,11 @@
 Temporary Items
 .apdisk
 
+# Fastlane builds
+Simoleon.ipa
+Simoleon.app.dSYM.zip
+fastlane/Preview.html
+fastlane/screenshots
+report.xml
+
 # End of https://www.toptal.com/developers/gitignore/api/macos
--- a/Configuration.storekit	Mon Aug 02 18:18:24 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-{
-  "identifier" : "DAA348ED",
-  "nonRenewingSubscriptions" : [
-
-  ],
-  "products" : [
-
-  ],
-  "settings" : {
-
-  },
-  "subscriptionGroups" : [
-    {
-      "id" : "22DC70A2",
-      "localizations" : [
-
-      ],
-      "name" : "Simoleon Subscription",
-      "subscriptions" : [
-        {
-          "adHocOffers" : [
-
-          ],
-          "displayPrice" : "0.99",
-          "familyShareable" : true,
-          "groupNumber" : 1,
-          "internalID" : "5C46FFC9",
-          "introductoryOffer" : null,
-          "localizations" : [
-            {
-              "description" : "",
-              "displayName" : "",
-              "locale" : "en_US"
-            }
-          ],
-          "productID" : "simoleon_all_monthly",
-          "recurringSubscriptionPeriod" : "P1M",
-          "referenceName" : "All Access",
-          "subscriptionGroupID" : "22DC70A2",
-          "type" : "RecurringSubscription"
-        }
-      ]
-    }
-  ],
-  "version" : {
-    "major" : 1,
-    "minor" : 1
-  }
-}
--- a/Simoleon.xcodeproj/project.pbxproj	Mon Aug 02 18:18:24 2021 +0100
+++ b/Simoleon.xcodeproj/project.pbxproj	Thu Aug 05 16:33:37 2021 +0100
@@ -21,13 +21,9 @@
 		9585BB1426A6B7F400E3193E /* NetworkRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9585BB1326A6B7F400E3193E /* NetworkRequest.swift */; };
 		9585BB1A26A6E8FD00E3193E /* SimpleSuccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9585BB1926A6E8FD00E3193E /* SimpleSuccess.swift */; };
 		9587598D26B2A68B004086F0 /* CurrencyMetadata.json in Resources */ = {isa = PBXBuildFile; fileRef = 9587598F26B2A68B004086F0 /* CurrencyMetadata.json */; };
-		9587599E26B2ACA6004086F0 /* Configuration.storekit in Resources */ = {isa = PBXBuildFile; fileRef = 9587599D26B2ACA6004086F0 /* Configuration.storekit */; };
-		9587599F26B2ACA6004086F0 /* Configuration.storekit in Resources */ = {isa = PBXBuildFile; fileRef = 9587599D26B2ACA6004086F0 /* Configuration.storekit */; };
-		958759A026B2ACA6004086F0 /* Configuration.storekit in Resources */ = {isa = PBXBuildFile; fileRef = 9587599D26B2ACA6004086F0 /* Configuration.storekit */; };
-		958759A226B2AE85004086F0 /* StoreKitTestCertificate.cer in Resources */ = {isa = PBXBuildFile; fileRef = 958759A126B2AE85004086F0 /* StoreKitTestCertificate.cer */; };
-		958759A326B2AE85004086F0 /* StoreKitTestCertificate.cer in Resources */ = {isa = PBXBuildFile; fileRef = 958759A126B2AE85004086F0 /* StoreKitTestCertificate.cer */; };
-		958759A426B2AE85004086F0 /* StoreKitTestCertificate.cer in Resources */ = {isa = PBXBuildFile; fileRef = 958759A126B2AE85004086F0 /* StoreKitTestCertificate.cer */; };
 		95909CB326B07BFC00D051AB /* SearchBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95909CB226B07BFC00D051AB /* SearchBar.swift */; };
+		959F6DEB26BBD53500101E53 /* SimoleonScreenshots.swift in Sources */ = {isa = PBXBuildFile; fileRef = 959F6DEA26BBD53500101E53 /* SimoleonScreenshots.swift */; };
+		959F6DF326BBD54400101E53 /* SnapshotHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 956088B526B9307600A4FD6C /* SnapshotHelper.swift */; };
 		95AEBC9526A03ECB00613729 /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AEBC9426A03ECB00613729 /* ContentView.swift */; };
 		95AEBC9B26A04A4200613729 /* CurrencyMetadataModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AEBC9A26A04A4200613729 /* CurrencyMetadataModel.swift */; };
 		95AEBC9D26A04D4600613729 /* CurrencyRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95AEBC9C26A04D4600613729 /* CurrencyRow.swift */; };
@@ -63,6 +59,13 @@
 /* End PBXBuildFile section */
 
 /* Begin PBXContainerItemProxy section */
+		959F6DED26BBD53500101E53 /* PBXContainerItemProxy */ = {
+			isa = PBXContainerItemProxy;
+			containerPortal = 95C5B21C2697752600941585 /* Project object */;
+			proxyType = 1;
+			remoteGlobalIDString = 95C5B2232697752600941585;
+			remoteInfo = Simoleon;
+		};
 		95C5B23B2697752700941585 /* PBXContainerItemProxy */ = {
 			isa = PBXContainerItemProxy;
 			containerPortal = 95C5B21C2697752600941585 /* Project object */;
@@ -100,6 +103,7 @@
 		95559339269B0AB8000FD726 /* ParseJson.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParseJson.swift; sourceTree = "<group>"; };
 		95561E3E26AF25EF00CCB543 /* SubscriptionFeature.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionFeature.swift; sourceTree = "<group>"; };
 		95562D4C26A8962A0047E778 /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = System/Library/Frameworks/StoreKit.framework; sourceTree = SDKROOT; };
+		956088B526B9307600A4FD6C /* SnapshotHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = SnapshotHelper.swift; path = fastlane/SnapshotHelper.swift; sourceTree = "<group>"; };
 		957065E126A5FE0400523E68 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; };
 		958526C226B41D60001FC826 /* CurrencyPairModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyPairModel.swift; sourceTree = "<group>"; };
 		9585BB0F26A6B58500E3193E /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = "<group>"; };
@@ -130,9 +134,10 @@
 		9587599A26B2A6A8004086F0 /* pt-PT */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = "pt-PT"; path = "pt-PT.lproj/CurrencyMetadata.json"; sourceTree = "<group>"; };
 		9587599B26B2A6A8004086F0 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = ru; path = ru.lproj/CurrencyMetadata.json; sourceTree = "<group>"; };
 		9587599C26B2A6AA004086F0 /* es */ = {isa = PBXFileReference; lastKnownFileType = text.json; name = es; path = es.lproj/CurrencyMetadata.json; sourceTree = "<group>"; };
-		9587599D26B2ACA6004086F0 /* Configuration.storekit */ = {isa = PBXFileReference; lastKnownFileType = text; path = Configuration.storekit; sourceTree = SOURCE_ROOT; };
-		958759A126B2AE85004086F0 /* StoreKitTestCertificate.cer */ = {isa = PBXFileReference; lastKnownFileType = file; path = StoreKitTestCertificate.cer; sourceTree = "<group>"; };
 		95909CB226B07BFC00D051AB /* SearchBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchBar.swift; sourceTree = "<group>"; };
+		959F6DE826BBD53500101E53 /* SimoleonScreenshots.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SimoleonScreenshots.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
+		959F6DEA26BBD53500101E53 /* SimoleonScreenshots.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SimoleonScreenshots.swift; sourceTree = "<group>"; };
+		959F6DEC26BBD53500101E53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		95A70BE926B0550000CC0273 /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS7.4.sdk/System/Library/Frameworks/CloudKit.framework; sourceTree = DEVELOPER_DIR; };
 		95AEBC9426A03ECB00613729 /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
 		95AEBC9A26A04A4200613729 /* CurrencyMetadataModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CurrencyMetadataModel.swift; sourceTree = "<group>"; };
@@ -178,6 +183,13 @@
 /* End PBXFileReference section */
 
 /* Begin PBXFrameworksBuildPhase section */
+		959F6DE526BBD53500101E53 /* Frameworks */ = {
+			isa = PBXFrameworksBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		95C5B2212697752600941585 /* Frameworks */ = {
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
@@ -239,6 +251,15 @@
 			path = Resources;
 			sourceTree = "<group>";
 		};
+		959F6DE926BBD53500101E53 /* SimoleonScreenshots */ = {
+			isa = PBXGroup;
+			children = (
+				959F6DEA26BBD53500101E53 /* SimoleonScreenshots.swift */,
+				959F6DEC26BBD53500101E53 /* Info.plist */,
+			);
+			path = SimoleonScreenshots;
+			sourceTree = "<group>";
+		};
 		95B5F52526AADE4B00BDCE89 /* Localization */ = {
 			isa = PBXGroup;
 			children = (
@@ -251,7 +272,6 @@
 			isa = PBXGroup;
 			children = (
 				95B5F52726AADE4B00BDCE89 /* Localized Contents */,
-				95B5F52926AADE4B00BDCE89 /* Notes */,
 				95B5F52A26AADE4B00BDCE89 /* contents.json */,
 				95B5F52B26AADE4B00BDCE89 /* Source Contents */,
 			);
@@ -266,13 +286,6 @@
 			path = "Localized Contents";
 			sourceTree = "<group>";
 		};
-		95B5F52926AADE4B00BDCE89 /* Notes */ = {
-			isa = PBXGroup;
-			children = (
-			);
-			path = Notes;
-			sourceTree = "<group>";
-		};
 		95B5F52B26AADE4B00BDCE89 /* Source Contents */ = {
 			isa = PBXGroup;
 			children = (
@@ -293,11 +306,11 @@
 		95C5B21B2697752600941585 = {
 			isa = PBXGroup;
 			children = (
-				9587599D26B2ACA6004086F0 /* Configuration.storekit */,
-				958759A126B2AE85004086F0 /* StoreKitTestCertificate.cer */,
+				956088B526B9307600A4FD6C /* SnapshotHelper.swift */,
 				95C5B2262697752600941585 /* Simoleon */,
 				95C5B23D2697752700941585 /* SimoleonTests */,
 				95C5B2482697752700941585 /* SimoleonUITests */,
+				959F6DE926BBD53500101E53 /* SimoleonScreenshots */,
 				95C5B2252697752600941585 /* Products */,
 				95E76438269E0037008E9F31 /* Frameworks */,
 			);
@@ -309,6 +322,7 @@
 				95C5B2242697752600941585 /* Simoleon.app */,
 				95C5B23A2697752700941585 /* SimoleonTests.xctest */,
 				95C5B2452697752700941585 /* SimoleonUITests.xctest */,
+				959F6DE826BBD53500101E53 /* SimoleonScreenshots.xctest */,
 			);
 			name = Products;
 			sourceTree = "<group>";
@@ -399,6 +413,24 @@
 /* End PBXGroup section */
 
 /* Begin PBXNativeTarget section */
+		959F6DE726BBD53500101E53 /* SimoleonScreenshots */ = {
+			isa = PBXNativeTarget;
+			buildConfigurationList = 959F6DF126BBD53500101E53 /* Build configuration list for PBXNativeTarget "SimoleonScreenshots" */;
+			buildPhases = (
+				959F6DE426BBD53500101E53 /* Sources */,
+				959F6DE526BBD53500101E53 /* Frameworks */,
+				959F6DE626BBD53500101E53 /* Resources */,
+			);
+			buildRules = (
+			);
+			dependencies = (
+				959F6DEE26BBD53500101E53 /* PBXTargetDependency */,
+			);
+			name = SimoleonScreenshots;
+			productName = SimoleonScreenshots;
+			productReference = 959F6DE826BBD53500101E53 /* SimoleonScreenshots.xctest */;
+			productType = "com.apple.product-type.bundle.ui-testing";
+		};
 		95C5B2232697752600941585 /* Simoleon */ = {
 			isa = PBXNativeTarget;
 			buildConfigurationList = 95C5B24E2697752700941585 /* Build configuration list for PBXNativeTarget "Simoleon" */;
@@ -465,6 +497,10 @@
 				LastSwiftUpdateCheck = 1250;
 				LastUpgradeCheck = 1250;
 				TargetAttributes = {
+					959F6DE726BBD53500101E53 = {
+						CreatedOnToolsVersion = 12.5.1;
+						TestTargetID = 95C5B2232697752600941585;
+					};
 					95C5B2232697752600941585 = {
 						CreatedOnToolsVersion = 12.5.1;
 					};
@@ -505,18 +541,24 @@
 				95C5B2232697752600941585 /* Simoleon */,
 				95C5B2392697752700941585 /* SimoleonTests */,
 				95C5B2442697752700941585 /* SimoleonUITests */,
+				959F6DE726BBD53500101E53 /* SimoleonScreenshots */,
 			);
 		};
 /* End PBXProject section */
 
 /* Begin PBXResourcesBuildPhase section */
+		959F6DE626BBD53500101E53 /* Resources */ = {
+			isa = PBXResourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		95C5B2222697752600941585 /* Resources */ = {
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
 				95DD4ABB269B33810027CA1F /* CurrencyPairs.json in Resources */,
-				9587599E26B2ACA6004086F0 /* Configuration.storekit in Resources */,
-				958759A226B2AE85004086F0 /* StoreKitTestCertificate.cer in Resources */,
 				95C5B22F2697752700941585 /* Preview Assets.xcassets in Resources */,
 				95E76436269DFC1A008E9F31 /* LaunchScreen.storyboard in Resources */,
 				9587598D26B2A68B004086F0 /* CurrencyMetadata.json in Resources */,
@@ -532,8 +574,6 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				9587599F26B2ACA6004086F0 /* Configuration.storekit in Resources */,
-				958759A326B2AE85004086F0 /* StoreKitTestCertificate.cer in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -541,14 +581,21 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				958759A026B2ACA6004086F0 /* Configuration.storekit in Resources */,
-				958759A426B2AE85004086F0 /* StoreKitTestCertificate.cer in Resources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 /* End PBXResourcesBuildPhase section */
 
 /* Begin PBXSourcesBuildPhase section */
+		959F6DE426BBD53500101E53 /* Sources */ = {
+			isa = PBXSourcesBuildPhase;
+			buildActionMask = 2147483647;
+			files = (
+				959F6DEB26BBD53500101E53 /* SimoleonScreenshots.swift in Sources */,
+				959F6DF326BBD54400101E53 /* SnapshotHelper.swift in Sources */,
+			);
+			runOnlyForDeploymentPostprocessing = 0;
+		};
 		95C5B2202697752600941585 /* Sources */ = {
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
@@ -608,6 +655,11 @@
 /* End PBXSourcesBuildPhase section */
 
 /* Begin PBXTargetDependency section */
+		959F6DEE26BBD53500101E53 /* PBXTargetDependency */ = {
+			isa = PBXTargetDependency;
+			target = 95C5B2232697752600941585 /* Simoleon */;
+			targetProxy = 959F6DED26BBD53500101E53 /* PBXContainerItemProxy */;
+		};
 		95C5B23C2697752700941585 /* PBXTargetDependency */ = {
 			isa = PBXTargetDependency;
 			target = 95C5B2232697752600941585 /* Simoleon */;
@@ -673,6 +725,46 @@
 /* End PBXVariantGroup section */
 
 /* Begin XCBuildConfiguration section */
+		959F6DEF26BBD53500101E53 /* Debug */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_STYLE = Automatic;
+				DEVELOPMENT_TEAM = MTX83R5H8X;
+				INFOPLIST_FILE = SimoleonScreenshots/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 14.5;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonScreenshots;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 5.0;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				TEST_TARGET_NAME = Simoleon;
+			};
+			name = Debug;
+		};
+		959F6DF026BBD53500101E53 /* Release */ = {
+			isa = XCBuildConfiguration;
+			buildSettings = {
+				CODE_SIGN_STYLE = Automatic;
+				DEVELOPMENT_TEAM = MTX83R5H8X;
+				INFOPLIST_FILE = SimoleonScreenshots/Info.plist;
+				IPHONEOS_DEPLOYMENT_TARGET = 14.5;
+				LD_RUNPATH_SEARCH_PATHS = (
+					"$(inherited)",
+					"@executable_path/Frameworks",
+					"@loader_path/Frameworks",
+				);
+				PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonScreenshots;
+				PRODUCT_NAME = "$(TARGET_NAME)";
+				SWIFT_VERSION = 5.0;
+				TARGETED_DEVICE_FAMILY = "1,2";
+				TEST_TARGET_NAME = Simoleon;
+			};
+			name = Release;
+		};
 		95C5B24C2697752700941585 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			buildSettings = {
@@ -800,7 +892,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_ENTITLEMENTS = Simoleon/Simoleon.entitlements;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 6;
 				DEVELOPMENT_ASSET_PATHS = "\"Simoleon/Preview Content\"";
 				DEVELOPMENT_TEAM = MTX83R5H8X;
 				ENABLE_PREVIEWS = YES;
@@ -825,7 +917,7 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_ENTITLEMENTS = Simoleon/Simoleon.entitlements;
 				CODE_SIGN_STYLE = Automatic;
-				CURRENT_PROJECT_VERSION = 1;
+				CURRENT_PROJECT_VERSION = 6;
 				DEVELOPMENT_ASSET_PATHS = "\"Simoleon/Preview Content\"";
 				DEVELOPMENT_TEAM = MTX83R5H8X;
 				ENABLE_PREVIEWS = YES;
@@ -930,6 +1022,15 @@
 /* End XCBuildConfiguration section */
 
 /* Begin XCConfigurationList section */
+		959F6DF126BBD53500101E53 /* Build configuration list for PBXNativeTarget "SimoleonScreenshots" */ = {
+			isa = XCConfigurationList;
+			buildConfigurations = (
+				959F6DEF26BBD53500101E53 /* Debug */,
+				959F6DF026BBD53500101E53 /* Release */,
+			);
+			defaultConfigurationIsVisible = 0;
+			defaultConfigurationName = Release;
+		};
 		95C5B21F2697752600941585 /* Build configuration list for PBXProject "Simoleon" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
Binary file Simoleon.xcodeproj/project.xcworkspace/xcuserdata/dennis.xcuserdatad/UserInterfaceState.xcuserstate has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Simoleon.xcodeproj/xcshareddata/xcschemes/Screenshots.xcscheme	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<Scheme
+   LastUpgradeVersion = "1250"
+   version = "1.3">
+   <BuildAction
+      parallelizeBuildables = "YES"
+      buildImplicitDependencies = "YES">
+      <BuildActionEntries>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "YES"
+            buildForArchiving = "YES"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "95C5B2232697752600941585"
+               BuildableName = "Simoleon.app"
+               BlueprintName = "Simoleon"
+               ReferencedContainer = "container:Simoleon.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "NO"
+            buildForProfiling = "NO"
+            buildForArchiving = "NO"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "95C5B2442697752700941585"
+               BuildableName = "SimoleonUITests.xctest"
+               BlueprintName = "SimoleonUITests"
+               ReferencedContainer = "container:Simoleon.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "NO"
+            buildForProfiling = "NO"
+            buildForArchiving = "NO"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "95C5B2392697752700941585"
+               BuildableName = "SimoleonTests.xctest"
+               BlueprintName = "SimoleonTests"
+               ReferencedContainer = "container:Simoleon.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+         <BuildActionEntry
+            buildForTesting = "YES"
+            buildForRunning = "YES"
+            buildForProfiling = "NO"
+            buildForArchiving = "NO"
+            buildForAnalyzing = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "959F6DE726BBD53500101E53"
+               BuildableName = "SimoleonScreenshots.xctest"
+               BlueprintName = "SimoleonScreenshots"
+               ReferencedContainer = "container:Simoleon.xcodeproj">
+            </BuildableReference>
+         </BuildActionEntry>
+      </BuildActionEntries>
+   </BuildAction>
+   <TestAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      disableMainThreadChecker = "YES">
+      <Testables>
+         <TestableReference
+            skipped = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "95C5B2392697752700941585"
+               BuildableName = "SimoleonTests.xctest"
+               BlueprintName = "SimoleonTests"
+               ReferencedContainer = "container:Simoleon.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+         <TestableReference
+            skipped = "YES">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "95C5B2442697752700941585"
+               BuildableName = "SimoleonUITests.xctest"
+               BlueprintName = "SimoleonUITests"
+               ReferencedContainer = "container:Simoleon.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "959F6DE726BBD53500101E53"
+               BuildableName = "SimoleonScreenshots.xctest"
+               BlueprintName = "SimoleonScreenshots"
+               ReferencedContainer = "container:Simoleon.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
+      </Testables>
+   </TestAction>
+   <LaunchAction
+      buildConfiguration = "Debug"
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
+      disableMainThreadChecker = "YES"
+      launchStyle = "0"
+      useCustomWorkingDirectory = "NO"
+      ignoresPersistentStateOnLaunch = "NO"
+      debugDocumentVersioning = "YES"
+      debugServiceExtension = "internal"
+      allowLocationSimulation = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "95C5B2232697752600941585"
+            BuildableName = "Simoleon.app"
+            BlueprintName = "Simoleon"
+            ReferencedContainer = "container:Simoleon.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </LaunchAction>
+   <ProfileAction
+      buildConfiguration = "Release"
+      shouldUseLaunchSchemeArgsEnv = "YES"
+      savedToolIdentifier = ""
+      useCustomWorkingDirectory = "NO"
+      debugDocumentVersioning = "YES">
+      <BuildableProductRunnable
+         runnableDebuggingMode = "0">
+         <BuildableReference
+            BuildableIdentifier = "primary"
+            BlueprintIdentifier = "95C5B2232697752600941585"
+            BuildableName = "Simoleon.app"
+            BlueprintName = "Simoleon"
+            ReferencedContainer = "container:Simoleon.xcodeproj">
+         </BuildableReference>
+      </BuildableProductRunnable>
+   </ProfileAction>
+   <AnalyzeAction
+      buildConfiguration = "Debug">
+   </AnalyzeAction>
+   <ArchiveAction
+      buildConfiguration = "Release"
+      revealArchiveInOrganizer = "YES">
+   </ArchiveAction>
+</Scheme>
--- a/Simoleon.xcodeproj/xcshareddata/xcschemes/Simoleon - StoreKit Test.xcscheme	Mon Aug 02 18:18:24 2021 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Scheme
-   LastUpgradeVersion = "1250"
-   version = "1.3">
-   <BuildAction
-      parallelizeBuildables = "YES"
-      buildImplicitDependencies = "YES">
-      <BuildActionEntries>
-         <BuildActionEntry
-            buildForTesting = "YES"
-            buildForRunning = "YES"
-            buildForProfiling = "YES"
-            buildForArchiving = "YES"
-            buildForAnalyzing = "YES">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "95C5B2232697752600941585"
-               BuildableName = "Simoleon.app"
-               BlueprintName = "Simoleon"
-               ReferencedContainer = "container:Simoleon.xcodeproj">
-            </BuildableReference>
-         </BuildActionEntry>
-      </BuildActionEntries>
-   </BuildAction>
-   <TestAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      shouldUseLaunchSchemeArgsEnv = "YES">
-      <Testables>
-         <TestableReference
-            skipped = "NO">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "95C5B2392697752700941585"
-               BuildableName = "SimoleonTests.xctest"
-               BlueprintName = "SimoleonTests"
-               ReferencedContainer = "container:Simoleon.xcodeproj">
-            </BuildableReference>
-         </TestableReference>
-         <TestableReference
-            skipped = "NO">
-            <BuildableReference
-               BuildableIdentifier = "primary"
-               BlueprintIdentifier = "95C5B2442697752700941585"
-               BuildableName = "SimoleonUITests.xctest"
-               BlueprintName = "SimoleonUITests"
-               ReferencedContainer = "container:Simoleon.xcodeproj">
-            </BuildableReference>
-         </TestableReference>
-      </Testables>
-   </TestAction>
-   <LaunchAction
-      buildConfiguration = "Debug"
-      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
-      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
-      launchStyle = "0"
-      useCustomWorkingDirectory = "NO"
-      ignoresPersistentStateOnLaunch = "NO"
-      debugDocumentVersioning = "YES"
-      debugServiceExtension = "internal"
-      allowLocationSimulation = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "95C5B2232697752600941585"
-            BuildableName = "Simoleon.app"
-            BlueprintName = "Simoleon"
-            ReferencedContainer = "container:Simoleon.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-      <StoreKitConfigurationFileReference
-         identifier = "../../Configuration.storekit">
-      </StoreKitConfigurationFileReference>
-   </LaunchAction>
-   <ProfileAction
-      buildConfiguration = "Release"
-      shouldUseLaunchSchemeArgsEnv = "YES"
-      savedToolIdentifier = ""
-      useCustomWorkingDirectory = "NO"
-      debugDocumentVersioning = "YES">
-      <BuildableProductRunnable
-         runnableDebuggingMode = "0">
-         <BuildableReference
-            BuildableIdentifier = "primary"
-            BlueprintIdentifier = "95C5B2232697752600941585"
-            BuildableName = "Simoleon.app"
-            BlueprintName = "Simoleon"
-            ReferencedContainer = "container:Simoleon.xcodeproj">
-         </BuildableReference>
-      </BuildableProductRunnable>
-   </ProfileAction>
-   <AnalyzeAction
-      buildConfiguration = "Debug">
-   </AnalyzeAction>
-   <ArchiveAction
-      buildConfiguration = "Release"
-      revealArchiveInOrganizer = "YES">
-   </ArchiveAction>
-</Scheme>
--- a/Simoleon.xcodeproj/xcshareddata/xcschemes/Simoleon.xcscheme	Mon Aug 02 18:18:24 2021 +0100
+++ b/Simoleon.xcodeproj/xcshareddata/xcschemes/Simoleon.xcscheme	Thu Aug 05 16:33:37 2021 +0100
@@ -48,10 +48,20 @@
                ReferencedContainer = "container:Simoleon.xcodeproj">
             </BuildableReference>
          </TestableReference>
+         <TestableReference
+            skipped = "NO">
+            <BuildableReference
+               BuildableIdentifier = "primary"
+               BlueprintIdentifier = "959F6DE726BBD53500101E53"
+               BuildableName = "SimoleonScreenshots.xctest"
+               BlueprintName = "SimoleonScreenshots"
+               ReferencedContainer = "container:Simoleon.xcodeproj">
+            </BuildableReference>
+         </TestableReference>
       </Testables>
    </TestAction>
    <LaunchAction
-      buildConfiguration = "Debug"
+      buildConfiguration = "Release"
       selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
       selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
       launchStyle = "0"
--- a/Simoleon.xcodeproj/xcuserdata/dennis.xcuserdatad/xcschemes/xcschememanagement.plist	Mon Aug 02 18:18:24 2021 +0100
+++ b/Simoleon.xcodeproj/xcuserdata/dennis.xcuserdatad/xcschemes/xcschememanagement.plist	Thu Aug 05 16:33:37 2021 +0100
@@ -25,7 +25,7 @@
 			<key>orderHint</key>
 			<integer>0</integer>
 		</dict>
-		<key>Simoleon - StoreKit Test.xcscheme_^#shared#^_</key>
+		<key>Screenshots.xcscheme_^#shared#^_</key>
 		<dict>
 			<key>orderHint</key>
 			<integer>0</integer>
@@ -53,11 +53,26 @@
 	</dict>
 	<key>SuppressBuildableAutocreation</key>
 	<dict>
+		<key>959F6DE726BBD53500101E53</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
 		<key>95C5B2232697752600941585</key>
 		<dict>
 			<key>primary</key>
 			<true/>
 		</dict>
+		<key>95C5B2392697752700941585</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
+		<key>95C5B2442697752700941585</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
 	</dict>
 </dict>
 </plist>
--- a/Simoleon/Favorites.swift	Mon Aug 02 18:18:24 2021 +0100
+++ b/Simoleon/Favorites.swift	Thu Aug 05 16:33:37 2021 +0100
@@ -23,7 +23,7 @@
                         .padding(.top, 5)
                 }
                 .multilineTextAlignment(.center)
-                .foregroundColor(Color(.systemGray))
+                .foregroundColor(.secondary)
                 .padding(.horizontal, 50)
             } else {
                 List {
@@ -46,6 +46,11 @@
         .if(UIDevice.current.userInterfaceIdiom == .phone) { content in
             NavigationView { content }
         }
+        .onAppear {
+            #if DEBUG
+            generateFavoritesToScreenshots()
+            #endif
+        }
     }
     
     private func removeFromFavorites(offsets: IndexSet) {
@@ -60,11 +65,34 @@
             }
         }
     }
+
+    #if DEBUG
+    private func generateFavoritesToScreenshots() {
+        if favorite.isEmpty {
+            let favoriteCurrencies = [
+                "EUR/USD", "BTC/USD", "USD/HKD", "USD/JPY", "AUD/USD",
+                "XAU/GBP", "DASH/ETH", "EUR/USD", "XAG/CAD"
+            ]
+            
+            for favoriteCurrency in favoriteCurrencies {
+                let favorite = Favorite(context: viewContext)
+                favorite.currencyPair = favoriteCurrency
+                
+                do {
+                    try viewContext.save()
+                } catch {
+                    let nsError = error as NSError
+                    fatalError("Unresolved error \(nsError), \(nsError.userInfo)")
+                }
+            }
+        }
+    }
+    #endif
 }
 
 struct Favorites_Previews: PreviewProvider {
     static var previews: some View {
         Favorites()
-//            .environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
+            .environment(\.managedObjectContext, PersistenceController.preview.container.viewContext)
     }
 }
--- a/Simoleon/Helpers/CurrencyRow.swift	Mon Aug 02 18:18:24 2021 +0100
+++ b/Simoleon/Helpers/CurrencyRow.swift	Thu Aug 05 16:33:37 2021 +0100
@@ -20,14 +20,14 @@
                 .aspectRatio(contentMode: .fill)
                 .frame(width: 30, height: 30)
                 .clipShape(Circle())
-                .overlay(Circle().stroke(Color(.systemGray), lineWidth: 1))
+                .overlay(Circle().stroke(Color(.secondaryLabel), lineWidth: 1))
             
             Image(currencyMetadata[String(currencies[1])]!.flag)
                 .resizable()
                 .aspectRatio(contentMode: .fill)
                 .frame(width: 30, height: 30)
                 .clipShape(Circle())
-                .overlay(Circle().stroke(Color(.systemGray), lineWidth: 1))
+                .overlay(Circle().stroke(Color(.secondaryLabel), lineWidth: 1))
                 .offset(x: -20)
                 .padding(.trailing, -20)
             
@@ -40,7 +40,7 @@
             
             if isLocked ?? false {
                 Image(systemName: "lock")
-                    .foregroundColor(Color(.systemGray))
+                    .foregroundColor(.secondary)
             }
         }
     }
@@ -48,6 +48,6 @@
 
 struct CurrencyRow_Previews: PreviewProvider {
     static var previews: some View {
-        CurrencyRow(currencyPairName: "USD/GBP")
+        CurrencyRow(currencyPairName: "USD/GBP", isLocked: true)
     }
 }
--- a/Simoleon/Helpers/CurrencySelector.swift	Mon Aug 02 18:18:24 2021 +0100
+++ b/Simoleon/Helpers/CurrencySelector.swift	Thu Aug 05 16:33:37 2021 +0100
@@ -41,24 +41,25 @@
                 SearchBar(placeholder: "Search...", text: $searchCurrency)
                     .padding()
                 
-                if entitlementIsActive {
-                    List(searchResults, id: \.self) { currencyPair in
-                        Button(action: {
-                            self.currencyPair = currencyPair.name
-                            showingCurrencySelector = false
-                        }) {
-                            CurrencyRow(currencyPairName: currencyPair.name)
+                List {
+                    if entitlementIsActive {
+                        ForEach(searchResults, id: \.self) { currencyPair in
+                            Button(action: {
+                                self.currencyPair = currencyPair.name
+                                showingCurrencySelector = false
+                            }) {
+                                CurrencyRow(currencyPairName: currencyPair.name)
+                            }
+                        }
+                    } else {
+                        ForEach(searchResults, id: \.self) { currencyPair in
+                            Button(action: { select(currencyPair) }) {
+                                CurrencyRow(currencyPairName: currencyPair.name, isLocked: currencyPair.isLocked)
+                            }
                         }
                     }
-                    .listStyle()
-                } else {
-                    List(searchResults, id: \.self) { currencyPair in
-                        Button(action: { select(currencyPair) }) {
-                            CurrencyRow(currencyPairName: currencyPair.name, isLocked: currencyPair.isLocked)
-                        }
-                    }
-                    .listStyle()
                 }
+                .id(UUID())
             }
             .navigationTitle("Currencies")
             .navigationBarTitleDisplayMode(.inline)
@@ -96,6 +97,9 @@
     
     // Check if user subscription is active
     private func checkEntitlement() {
+        #if DEBUG
+        entitlementIsActive = true
+        #else
         Purchases.shared.purchaserInfo { (purchaserInfo, error) in
             if purchaserInfo?.entitlements["all"]?.isActive == true {
                 entitlementIsActive = true
@@ -107,6 +111,7 @@
                 showingAlert = true
             }
         }
+        #endif
     }
 }
 extension View {
--- a/Simoleon/Helpers/LockedCurrencyPicker.swift	Mon Aug 02 18:18:24 2021 +0100
+++ b/Simoleon/Helpers/LockedCurrencyPicker.swift	Thu Aug 05 16:33:37 2021 +0100
@@ -16,10 +16,10 @@
             Text("Default currency")
             Spacer()
             Text(defaultCurrency.first?.pair ?? "USD/GBP")
-                .foregroundColor(Color(.systemGray))
+                .foregroundColor(.secondary)
             
             Image(systemName: "lock")
-                .foregroundColor(Color(.systemGray))
+                .foregroundColor(.secondary)
         }
     }
 }
--- a/Simoleon/Helpers/SearchBar.swift	Mon Aug 02 18:18:24 2021 +0100
+++ b/Simoleon/Helpers/SearchBar.swift	Thu Aug 05 16:33:37 2021 +0100
@@ -18,7 +18,7 @@
             .padding(10)
             .background(
                 RoundedRectangle(cornerRadius: 15)
-                    .foregroundColor(Color(.systemGray6))
+                    .foregroundColor(Color(.tertiarySystemFill))
             )
     }
 }
--- a/Simoleon/Info.plist	Mon Aug 02 18:18:24 2021 +0100
+++ b/Simoleon/Info.plist	Thu Aug 05 16:33:37 2021 +0100
@@ -23,7 +23,7 @@
 	<key>CFBundleShortVersionString</key>
 	<string>$(MARKETING_VERSION)</string>
 	<key>CFBundleVersion</key>
-	<string>$(CURRENT_PROJECT_VERSION)</string>
+	<string>6</string>
 	<key>LSRequiresIPhoneOS</key>
 	<true/>
 	<key>PURCHASES_KEY</key>
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/de.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/es.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/fr.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/it.lproj/Localizable.strings has changed
Binary file Simoleon/Localization/en.xcloc/Source Contents/Simoleon/nl.lproj/Localizable.strings has changed
--- a/Simoleon/Settings.swift	Mon Aug 02 18:18:24 2021 +0100
+++ b/Simoleon/Settings.swift	Thu Aug 05 16:33:37 2021 +0100
@@ -150,6 +150,9 @@
     
     // Check if user subscription is active
     private func checkEntitlement() {
+        #if DEBUG
+        entitlementIsActive = true
+        #else
         Purchases.shared.purchaserInfo { (purchaserInfo, error) in
             if purchaserInfo?.entitlements["all"]?.isActive == true {
                 entitlementIsActive = true
@@ -161,6 +164,7 @@
                 showingAlert = true
             }
         }
+        #endif
     }
 }
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SimoleonScreenshots/Info.plist	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>CFBundleDevelopmentRegion</key>
+	<string>$(DEVELOPMENT_LANGUAGE)</string>
+	<key>CFBundleExecutable</key>
+	<string>$(EXECUTABLE_NAME)</string>
+	<key>CFBundleIdentifier</key>
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
+	<key>CFBundleInfoDictionaryVersion</key>
+	<string>6.0</string>
+	<key>CFBundleName</key>
+	<string>$(PRODUCT_NAME)</string>
+	<key>CFBundlePackageType</key>
+	<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
+	<key>CFBundleShortVersionString</key>
+	<string>1.0</string>
+	<key>CFBundleVersion</key>
+	<string>1</string>
+</dict>
+</plist>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/SimoleonScreenshots/SimoleonScreenshots.swift	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,73 @@
+//
+//  SimoleonScreenshots.swift
+//  SimoleonScreenshots
+//
+//  Created by Dennis Concepción Martín on 5/8/21.
+//
+
+import XCTest
+
+class SimoleonScreenshots: XCTestCase {
+    var screnshotEndingName = ""
+
+    override func setUpWithError() throws {
+        // Put setup code here. This method is called before the invocation of each test method in the class.
+        if UIDevice.current.userInterfaceIdiom == .pad {
+            XCUIDevice.shared.orientation = .landscapeLeft
+            screnshotEndingName = "-force_landscapeleft"
+        }
+        
+        let app = XCUIApplication()
+        setupSnapshot(app)
+        app.launch()
+
+        // In UI tests it is usually best to stop immediately when a failure occurs.
+        continueAfterFailure = false
+
+        // In UI tests it’s important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
+    }
+
+    override func tearDownWithError() throws {
+        // Put teardown code here. This method is called after the invocation of each test method in the class.
+    }
+
+    // MARK: - Automate screenshots
+    func testLaunch() {
+        if UIDevice.current.userInterfaceIdiom == .pad {
+            XCUIApplication().tables.buttons.firstMatch.tap()
+        }
+        
+        snapshot("1Launch\(screnshotEndingName)")
+    }
+    
+    func testCurrencySelector() {
+        if UIDevice.current.userInterfaceIdiom == .pad {
+            XCUIApplication().tables.buttons.firstMatch.tap()
+        }
+        
+        XCUIApplication().scrollViews.buttons.firstMatch.tap()
+        snapshot("2CurrencySelector\(screnshotEndingName)")
+        
+        XCUIApplication().tables.buttons.element(boundBy: 6).tap()
+        let conversionTextfield = XCUIApplication().textFields.firstMatch
+        conversionTextfield.tap()
+        for _ in (0..<4) {
+            conversionTextfield.typeText(XCUIKeyboardKey.delete.rawValue)
+        }
+        
+        conversionTextfield.typeText("\n")
+        
+        snapshot("3Amount\(screnshotEndingName)")
+    }
+    
+    func testFavorites() throws {
+        // Go to favorites
+        if UIDevice.current.userInterfaceIdiom == .pad {
+            XCUIApplication().tables.buttons.element(boundBy: 1).tap()
+        } else {
+            XCUIApplication().tabBars.buttons.element(boundBy: 1).tap()
+        }
+
+        snapshot("4Favorites\(screnshotEndingName)")
+    }
+}
--- a/SimoleonTests/Info.plist	Mon Aug 02 18:18:24 2021 +0100
+++ b/SimoleonTests/Info.plist	Thu Aug 05 16:33:37 2021 +0100
@@ -17,6 +17,6 @@
 	<key>CFBundleShortVersionString</key>
 	<string>1.0</string>
 	<key>CFBundleVersion</key>
-	<string>1</string>
+	<string>6</string>
 </dict>
 </plist>
--- a/SimoleonTests/SimoleonTests.swift	Mon Aug 02 18:18:24 2021 +0100
+++ b/SimoleonTests/SimoleonTests.swift	Thu Aug 05 16:33:37 2021 +0100
@@ -17,11 +17,6 @@
     override func tearDownWithError() throws {
         // Put teardown code here. This method is called after the invocation of each test method in the class.
     }
-
-    func testExample() throws {
-        // This is an example of a functional test case.
-        // Use XCTAssert and related functions to verify your tests produce the correct results.
-    }
     
     func testMakeConversion() {
         // Given
--- a/SimoleonUITests/Info.plist	Mon Aug 02 18:18:24 2021 +0100
+++ b/SimoleonUITests/Info.plist	Thu Aug 05 16:33:37 2021 +0100
@@ -17,6 +17,6 @@
 	<key>CFBundleShortVersionString</key>
 	<string>1.0</string>
 	<key>CFBundleVersion</key>
-	<string>1</string>
+	<string>6</string>
 </dict>
 </plist>
--- a/SimoleonUITests/SimoleonUITests.swift	Mon Aug 02 18:18:24 2021 +0100
+++ b/SimoleonUITests/SimoleonUITests.swift	Thu Aug 05 16:33:37 2021 +0100
@@ -21,13 +21,7 @@
     override func tearDownWithError() throws {
         // Put teardown code here. This method is called after the invocation of each test method in the class.
     }
-    
-    // MARK: - Tab View
-    func testExample() throws {
-        let app = XCUIApplication()
-        app.launch()
-        // Put code here
-    }
+
 
     func testLaunchPerformance() throws {
         if #available(macOS 10.15, iOS 13.0, tvOS 13.0, watchOS 7.0, *) {
Binary file StoreKitTestCertificate.cer has changed
--- a/fastlane/Fastfile	Mon Aug 02 18:18:24 2021 +0100
+++ b/fastlane/Fastfile	Thu Aug 05 16:33:37 2021 +0100
@@ -16,10 +16,31 @@
 default_platform(:ios)
 
 platform :ios do
+
   desc "Push a new beta build to TestFlight"
   lane :beta do
-    increment_build_number(xcodeproj: "Simoleon.xcodeproj")
+    increment_build_number(
+      build_number: latest_testflight_build_number + 1,
+      xcodeproj: "Simoleon.xcodeproj"
+    )
+    
     build_app(scheme: "Simoleon")
-    upload_to_testflight
+    upload_to_testflight(
+      beta_app_review_info: {
+        contact_email: "dmartin@dennistech.io",
+        contact_first_name: "Dennis",
+        contact_last_name: "Concepcion Martin",
+        contact_phone: "+34 639 465 931",
+        notes: "Go and crash it. Thank you for reviewing <3"
+      }
+    )
   end
+
+  desc "Release new version to App Store"
+  lane :release do
+    capture_screenshots
+    build_app(scheme: "Simoleon")
+    upload_to_app_store
+  end
+  
 end
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/README.md	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,34 @@
+fastlane documentation
+================
+# Installation
+
+Make sure you have the latest version of the Xcode command line tools installed:
+
+```
+xcode-select --install
+```
+
+Install _fastlane_ using
+```
+[sudo] gem install fastlane -NV
+```
+or alternatively using `brew install fastlane`
+
+# Available Actions
+## iOS
+### ios beta
+```
+fastlane ios beta
+```
+Push a new beta build to TestFlight
+### ios release
+```
+fastlane ios release
+```
+Release new version to App Store
+
+----
+
+This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run.
+More information about fastlane can be found on [fastlane.tools](https://fastlane.tools).
+The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools).
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/Snapfile	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,39 @@
+# A list of devices you want to take the screenshots from
+devices([
+	"iPhone 8 Plus",
+	"iPhone 12 Pro Max",
+	"iPad Pro (12.9-inch) (5th generation)"
+])
+
+languages([
+	"en-US",
+	"es-ES",
+	"en-GB",
+	"de-DE",
+	"fr-FR",
+	"pt-PT",
+	"nl-NL",
+	"it",
+	"ru"
+])
+
+# The name of the scheme which contains the UI Tests.
+scheme("Screenshots")
+
+# Enabling this option will automatically uninstall the application before running it.
+# reinstall_app(true)
+
+# Should the project be cleaned before building it?
+clean(true)
+
+# Enabling this option will configure the Simulator's system language.
+localize_simulator(true)
+
+# Clear all previously generated screenshots before creating new ones.
+clear_previous_screenshots(true)
+
+# Remove the '#' to set the status bar to 9:41 AM, and show full battery and reception.
+override_status_bar(true)
+
+# For more information about all available options run
+# fastlane action snapshot
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/SnapshotHelper.swift	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,309 @@
+//
+//  SnapshotHelper.swift
+//  Example
+//
+//  Created by Felix Krause on 10/8/15.
+//
+
+// -----------------------------------------------------
+// IMPORTANT: When modifying this file, make sure to
+//            increment the version number at the very
+//            bottom of the file to notify users about
+//            the new SnapshotHelper.swift
+// -----------------------------------------------------
+
+import Foundation
+import XCTest
+
+var deviceLanguage = ""
+var locale = ""
+
+func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) {
+    Snapshot.setupSnapshot(app, waitForAnimations: waitForAnimations)
+}
+
+func snapshot(_ name: String, waitForLoadingIndicator: Bool) {
+    if waitForLoadingIndicator {
+        Snapshot.snapshot(name)
+    } else {
+        Snapshot.snapshot(name, timeWaitingForIdle: 0)
+    }
+}
+
+/// - Parameters:
+///   - name: The name of the snapshot
+///   - timeout: Amount of seconds to wait until the network loading indicator disappears. Pass `0` if you don't want to wait.
+func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) {
+    Snapshot.snapshot(name, timeWaitingForIdle: timeout)
+}
+
+enum SnapshotError: Error, CustomDebugStringConvertible {
+    case cannotFindSimulatorHomeDirectory
+    case cannotRunOnPhysicalDevice
+
+    var debugDescription: String {
+        switch self {
+        case .cannotFindSimulatorHomeDirectory:
+            return "Couldn't find simulator home location. Please, check SIMULATOR_HOST_HOME env variable."
+        case .cannotRunOnPhysicalDevice:
+            return "Can't use Snapshot on a physical device."
+        }
+    }
+}
+
+@objcMembers
+open class Snapshot: NSObject {
+    static var app: XCUIApplication?
+    static var waitForAnimations = true
+    static var cacheDirectory: URL?
+    static var screenshotsDirectory: URL? {
+        return cacheDirectory?.appendingPathComponent("screenshots", isDirectory: true)
+    }
+
+    open class func setupSnapshot(_ app: XCUIApplication, waitForAnimations: Bool = true) {
+
+        Snapshot.app = app
+        Snapshot.waitForAnimations = waitForAnimations
+
+        do {
+            let cacheDir = try getCacheDirectory()
+            Snapshot.cacheDirectory = cacheDir
+            setLanguage(app)
+            setLocale(app)
+            setLaunchArguments(app)
+        } catch let error {
+            NSLog(error.localizedDescription)
+        }
+    }
+
+    class func setLanguage(_ app: XCUIApplication) {
+        guard let cacheDirectory = self.cacheDirectory else {
+            NSLog("CacheDirectory is not set - probably running on a physical device?")
+            return
+        }
+
+        let path = cacheDirectory.appendingPathComponent("language.txt")
+
+        do {
+            let trimCharacterSet = CharacterSet.whitespacesAndNewlines
+            deviceLanguage = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet)
+            app.launchArguments += ["-AppleLanguages", "(\(deviceLanguage))"]
+        } catch {
+            NSLog("Couldn't detect/set language...")
+        }
+    }
+
+    class func setLocale(_ app: XCUIApplication) {
+        guard let cacheDirectory = self.cacheDirectory else {
+            NSLog("CacheDirectory is not set - probably running on a physical device?")
+            return
+        }
+
+        let path = cacheDirectory.appendingPathComponent("locale.txt")
+
+        do {
+            let trimCharacterSet = CharacterSet.whitespacesAndNewlines
+            locale = try String(contentsOf: path, encoding: .utf8).trimmingCharacters(in: trimCharacterSet)
+        } catch {
+            NSLog("Couldn't detect/set locale...")
+        }
+
+        if locale.isEmpty && !deviceLanguage.isEmpty {
+            locale = Locale(identifier: deviceLanguage).identifier
+        }
+
+        if !locale.isEmpty {
+            app.launchArguments += ["-AppleLocale", "\"\(locale)\""]
+        }
+    }
+
+    class func setLaunchArguments(_ app: XCUIApplication) {
+        guard let cacheDirectory = self.cacheDirectory else {
+            NSLog("CacheDirectory is not set - probably running on a physical device?")
+            return
+        }
+
+        let path = cacheDirectory.appendingPathComponent("snapshot-launch_arguments.txt")
+        app.launchArguments += ["-FASTLANE_SNAPSHOT", "YES", "-ui_testing"]
+
+        do {
+            let launchArguments = try String(contentsOf: path, encoding: String.Encoding.utf8)
+            let regex = try NSRegularExpression(pattern: "(\\\".+?\\\"|\\S+)", options: [])
+            let matches = regex.matches(in: launchArguments, options: [], range: NSRange(location: 0, length: launchArguments.count))
+            let results = matches.map { result -> String in
+                (launchArguments as NSString).substring(with: result.range)
+            }
+            app.launchArguments += results
+        } catch {
+            NSLog("Couldn't detect/set launch_arguments...")
+        }
+    }
+
+    open class func snapshot(_ name: String, timeWaitingForIdle timeout: TimeInterval = 20) {
+        if timeout > 0 {
+            waitForLoadingIndicatorToDisappear(within: timeout)
+        }
+
+        NSLog("snapshot: \(name)") // more information about this, check out https://docs.fastlane.tools/actions/snapshot/#how-does-it-work
+
+        if Snapshot.waitForAnimations {
+            sleep(1) // Waiting for the animation to be finished (kind of)
+        }
+
+        #if os(OSX)
+            guard let app = self.app else {
+                NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().")
+                return
+            }
+
+            app.typeKey(XCUIKeyboardKeySecondaryFn, modifierFlags: [])
+        #else
+
+            guard self.app != nil else {
+                NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().")
+                return
+            }
+
+            let screenshot = XCUIScreen.main.screenshot()
+            #if os(iOS)
+            let image = XCUIDevice.shared.orientation.isLandscape ?  fixLandscapeOrientation(image: screenshot.image) : screenshot.image
+            #else
+            let image = screenshot.image
+            #endif
+
+            guard var simulator = ProcessInfo().environment["SIMULATOR_DEVICE_NAME"], let screenshotsDir = screenshotsDirectory else { return }
+
+            do {
+                // The simulator name contains "Clone X of " inside the screenshot file when running parallelized UI Tests on concurrent devices
+                let regex = try NSRegularExpression(pattern: "Clone [0-9]+ of ")
+                let range = NSRange(location: 0, length: simulator.count)
+                simulator = regex.stringByReplacingMatches(in: simulator, range: range, withTemplate: "")
+
+                let path = screenshotsDir.appendingPathComponent("\(simulator)-\(name).png")
+                #if swift(<5.0)
+                    UIImagePNGRepresentation(image)?.write(to: path, options: .atomic)
+                #else
+                    try image.pngData()?.write(to: path, options: .atomic)
+                #endif
+            } catch let error {
+                NSLog("Problem writing screenshot: \(name) to \(screenshotsDir)/\(simulator)-\(name).png")
+                NSLog(error.localizedDescription)
+            }
+        #endif
+    }
+
+    class func fixLandscapeOrientation(image: UIImage) -> UIImage {
+        #if os(watchOS)
+            return image
+        #else
+            if #available(iOS 10.0, *) {
+                let format = UIGraphicsImageRendererFormat()
+                format.scale = image.scale
+                let renderer = UIGraphicsImageRenderer(size: image.size, format: format)
+                return renderer.image { context in
+                    image.draw(in: CGRect(x: 0, y: 0, width: image.size.width, height: image.size.height))
+                }
+            } else {
+                return image
+            }
+        #endif
+    }
+
+    class func waitForLoadingIndicatorToDisappear(within timeout: TimeInterval) {
+        #if os(tvOS)
+            return
+        #endif
+
+        guard let app = self.app else {
+            NSLog("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().")
+            return
+        }
+
+        let networkLoadingIndicator = app.otherElements.deviceStatusBars.networkLoadingIndicators.element
+        let networkLoadingIndicatorDisappeared = XCTNSPredicateExpectation(predicate: NSPredicate(format: "exists == false"), object: networkLoadingIndicator)
+        _ = XCTWaiter.wait(for: [networkLoadingIndicatorDisappeared], timeout: timeout)
+    }
+
+    class func getCacheDirectory() throws -> URL {
+        let cachePath = "Library/Caches/tools.fastlane"
+        // on OSX config is stored in /Users/<username>/Library
+        // and on iOS/tvOS/WatchOS it's in simulator's home dir
+        #if os(OSX)
+            let homeDir = URL(fileURLWithPath: NSHomeDirectory())
+            return homeDir.appendingPathComponent(cachePath)
+        #elseif arch(i386) || arch(x86_64) || arch(arm64)
+            guard let simulatorHostHome = ProcessInfo().environment["SIMULATOR_HOST_HOME"] else {
+                throw SnapshotError.cannotFindSimulatorHomeDirectory
+            }
+            let homeDir = URL(fileURLWithPath: simulatorHostHome)
+            return homeDir.appendingPathComponent(cachePath)
+        #else
+            throw SnapshotError.cannotRunOnPhysicalDevice
+        #endif
+    }
+}
+
+private extension XCUIElementAttributes {
+    var isNetworkLoadingIndicator: Bool {
+        if hasAllowListedIdentifier { return false }
+
+        let hasOldLoadingIndicatorSize = frame.size == CGSize(width: 10, height: 20)
+        let hasNewLoadingIndicatorSize = frame.size.width.isBetween(46, and: 47) && frame.size.height.isBetween(2, and: 3)
+
+        return hasOldLoadingIndicatorSize || hasNewLoadingIndicatorSize
+    }
+
+    var hasAllowListedIdentifier: Bool {
+        let allowListedIdentifiers = ["GeofenceLocationTrackingOn", "StandardLocationTrackingOn"]
+
+        return allowListedIdentifiers.contains(identifier)
+    }
+
+    func isStatusBar(_ deviceWidth: CGFloat) -> Bool {
+        if elementType == .statusBar { return true }
+        guard frame.origin == .zero else { return false }
+
+        let oldStatusBarSize = CGSize(width: deviceWidth, height: 20)
+        let newStatusBarSize = CGSize(width: deviceWidth, height: 44)
+
+        return [oldStatusBarSize, newStatusBarSize].contains(frame.size)
+    }
+}
+
+private extension XCUIElementQuery {
+    var networkLoadingIndicators: XCUIElementQuery {
+        let isNetworkLoadingIndicator = NSPredicate { (evaluatedObject, _) in
+            guard let element = evaluatedObject as? XCUIElementAttributes else { return false }
+
+            return element.isNetworkLoadingIndicator
+        }
+
+        return self.containing(isNetworkLoadingIndicator)
+    }
+
+    var deviceStatusBars: XCUIElementQuery {
+        guard let app = Snapshot.app else {
+            fatalError("XCUIApplication is not set. Please call setupSnapshot(app) before snapshot().")
+        }
+
+        let deviceWidth = app.windows.firstMatch.frame.width
+
+        let isStatusBar = NSPredicate { (evaluatedObject, _) in
+            guard let element = evaluatedObject as? XCUIElementAttributes else { return false }
+
+            return element.isStatusBar(deviceWidth)
+        }
+
+        return self.containing(isStatusBar)
+    }
+}
+
+private extension CGFloat {
+    func isBetween(_ numberA: CGFloat, and numberB: CGFloat) -> Bool {
+        return numberA...numberB ~= self
+    }
+}
+
+// Please don't remove the lines below
+// They are used to detect outdated configuration files
+// SnapshotHelperVersion [1.27]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/copyright.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+2021 Dennis Technologies Ltd.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/de-DE/description.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,10 @@
+Simoleon ist ein Echtzeit-Währungsumrechner, der über 170 globale Währungen und 2000 Währungspaare unterstützt. Die einfache Bedienung und der reale Wechselkurs machen es zur perfekten App für Reisende, die wissen wollen, wie viel ihre Währung in jedem Moment wert ist.
+
+- 170 Weltwährungen, Kryptowährungen wie Bitcoin, Ethereum und Dash sowie Rohstoffe wie Gold, Silber und Platin.
+- Kurse direkt von den europäischen Handelsplätzen.
+- Wählen Sie Ihr Standard-Währungspaar und speichern Sie Ihre Lieblingswährungen.
+- Simoleon wird auf all Ihren Geräten synchronisiert.
+- Schnelle und einfache Schnittstelle.
+
+Datenschutzbestimmungen: https://dennistech.io/simoleon-privacy-policy
+Nutzungsbedingungen: https://dennistech.io/simoleon-terms-of-use
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/de-DE/keywords.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+währung,forex,umrechner,geld,euro,dollar,yen,reisen,wechsel,märkte,finanz
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/de-DE/marketing_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/apps/simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/de-DE/name.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/de-DE/privacy_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/simoleon-privacy-policy
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/de-DE/release_notes.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,6 @@
+Hallo zusammen! Dies ist ein großes Update, wir hoffen es gefällt euch:
+- Simoleon ist jetzt in Spanisch, Deutsch, Französisch, Italienisch, Niederländisch, Portugiesisch und Russisch verfügbar. Wenn Sie eine falsche oder seltsame Übersetzung bemerken, kontaktieren Sie uns bitte: https://dennistech.io/contact
+- In-App-Werbekäufe implementiert.
+- Jetzt können Sie mit Simoleon kostenlos zwischen den gängigsten Währungspaaren umrechnen.
+- UI-Aktualisierungen.
+- Behebt Bugs.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/de-DE/subtitle.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Währungsumrechner in Echtzeit
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/de-DE/support_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/contact
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-GB/description.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,10 @@
+Simoleon is a real-time currency converter with over 170 global currencies and 2000 currency pairs supported. The ease of use and the real exchange rate makes it the perfect app for travellers who want to know how much their currency is worth at every moment.
+
+- 170 global currencies, cryptos like Bitcoin, Ethereum, and Dash, and raw materials like gold, silver, and platinum.
+- Quotes straight from European trading floors.
+- Select your default currency pair and save your favourite currencies.
+- Simoleon is synchronised across all your devices.
+- Fast and simple interface.
+
+Privacy policy: https://dennistech.io/simoleon-privacy-policy
+Terms of use: https://dennistech.io/simoleon-terms-of-use
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-GB/keywords.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+currency,forex,converter,money,euro,dollar,yen,travel,exchange,markets,finance
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-GB/marketing_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/apps/simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-GB/name.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-GB/privacy_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/simoleon-privacy-policy
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-GB/release_notes.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,6 @@
+Hi there! This is a big update, we hope you like it:
+- Simoleon is available in Spanish, German, French, Italian, Dutch, Portuguese, and Russian. If you notice a wrong or weird translation, please contact us: https://dennistech.io/contact
+- Implemented In-App promotional purchases.
+- Now, you can use Simoleon to convert between the most popular currency pairs for free.
+- UI updates.
+- Fixes bugs.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-GB/subtitle.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Real-time currency converter
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-GB/support_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/contact
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-US/description.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,10 @@
+Simoleon is a real-time currency converter with over 170 global currencies and 2000 currency pairs supported. The ease of use and the real exchange rate makes it the perfect app for travellers who want to know how much their currency is worth at every moment.
+
+- 170 global currencies, cryptos like Bitcoin, Ethereum, and Dash, and raw materials like gold, silver, and platinum.
+- Quotes straight from European trading floors.
+- Select your default currency pair and save your favorite currencies.
+- Simoleon is synchronised across all your devices.
+- Fast and simple interface.
+
+Privacy policy: https://dennistech.io/simoleon-privacy-policy
+Terms of use: https://dennistech.io/simoleon-terms-of-use
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-US/keywords.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+currency,forex,converter,money,euro,dollar,yen,travel,exchange,markets,finance
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-US/marketing_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/apps/simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-US/name.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-US/privacy_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/simoleon-privacy-policy
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-US/release_notes.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,6 @@
+Hi there! This is a big update, we hope you like it:
+- Simoleon is available in Spanish, German, French, Italian, Dutch, Portuguese, and Russian. If you notice a wrong or weird translation, please contact us: https://dennistech.io/contact
+- Implemented In-App promotional purchases.
+- Now, you can use Simoleon to convert between the most popular currency pairs for free.
+- UI updates.
+- Fixes bugs.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-US/subtitle.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Real-time currency converter
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/en-US/support_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/contact
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/es-ES/description.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,10 @@
+Simoleon es un conversor de divisas en tiempo real  con más de 170 monedas mundiales y 2000 pares de divisas. Su facilidad de uso y el tipo de cambio en tiempo real hace que Simoleon sea la app perfecta para viajeros que necesitan saber cuánto vale su divisa en cada momento.
+
+- 170 monedas mundiales, criptomonedas como Bitcoin, Ethereum, y Dash, y materias primas como el oro, la plata, o el platino.
+- Los tipos de cambios son recibidos directamente desde las salas de trading europeas.
+- Selecciona el par de divisas principal, y guarda tus divisas favoritas.
+- Simoleon se sincroniza con todos tus dispositivos.
+- Interfaz rápida y sencilla.
+
+Política de privacidad: https://dennistech.io/simoleon-privacy-policy
+Términos de uso: https://dennistech.io/simoleon-terms-of-use
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/es-ES/keywords.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Divisa,moneda,conversor,dinero,euro,dolar,yen,viaje,intercambio,mercado,finanzas
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/es-ES/marketing_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/apps/simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/es-ES/name.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/es-ES/privacy_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/simoleon-privacy-policy
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/es-ES/release_notes.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,6 @@
+¡Hola! Esta es la actualización más importante hasta el momento. Esperamos que te guste:
+- Simoleon está disponible es español, alemán, francés, italiano, holandés, portugués, y ruso. Si ves alguna tradución equivocada o rara, por favor contáctanos: https://dennistech.io/contact
+- Ya puedes comprar la suscripción directamente desde la App Store.
+- Ahora puede convertir entre las divisas más populares gratuitamente.
+- Mejoras en la interfaz.
+- Arreglo de bugs.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/es-ES/subtitle.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Conversor de divisas
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/es-ES/support_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/contact
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/fr-FR/description.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,10 @@
+Simoleon est un convertisseur de devises en temps réel qui prend en charge plus de 170 devises internationales et 2000 paires de devises. La facilité d'utilisation et le taux de change réel en font l'application parfaite pour les voyageurs qui veulent savoir combien vaut leur devise à chaque instant.
+
+- 170 devises internationales, des cryptomonnaies comme le bitcoin, l'ethereum et le dash, et des matières premières comme l'or, l'argent et le platine.
+- Des cotations en provenance directe des salles de marché européennes.
+- Sélectionnez votre paire de devises par défaut et enregistrez vos devises préférées.
+- Simoleon est synchronisé sur tous vos appareils.
+- Interface simple et rapide.
+
+Politique de confidentialité : https://dennistech.io/simoleon-privacy-policy
+Conditions d'utilisation : https://dennistech.io/simoleon-terms-of-use
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/fr-FR/keywords.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+monnaie,forex,convertisseur,argent,euro,dollar,yen,voyage,change,marchés,finance
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/fr-FR/marketing_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/apps/simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/fr-FR/name.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/fr-FR/privacy_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/simoleon-privacy-policy
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/fr-FR/release_notes.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,6 @@
+Bonjour à tous ! C'est une grosse mise à jour, nous espérons qu'elle vous plaira :
+- Simoleon est disponible en espagnol, allemand, français, italien, néerlandais, portugais et russe. Si vous remarquez une traduction erronée ou bizarre, veuillez nous contacter : https://dennistech.io/contact.
+- Mise en place des achats promotionnels In-App.
+- Désormais, vous pouvez utiliser Simoleon pour convertir gratuitement les paires de devises les plus populaires.
+- Mises à jour de l'interface utilisateur.
+- Correction de bugs.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/fr-FR/subtitle.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Convertisseur de devises
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/fr-FR/support_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/contact
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/it/description.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,10 @@
+Simoleon è un convertitore di valuta in tempo reale con oltre 170 valute globali e 2000 coppie di valute supportate. La facilità d'uso e il tasso di cambio reale lo rendono l'app perfetta per i viaggiatori che vogliono sapere quanto vale la loro valuta in ogni momento.
+
+- 170 valute globali, criptovalute come Bitcoin, Ethereum e Dash, e materie prime come oro, argento e platino.
+- Quotazioni direttamente dai trading floor europei.
+- Seleziona la tua coppia di valute predefinita e salva le tue valute preferite.
+- Simoleon è sincronizzato su tutti i tuoi dispositivi.
+- Interfaccia semplice e veloce.
+
+Informativa sulla privacy: https://dennistech.io/simoleon-privacy-policy
+Termini di utilizzo: https://dennistech.io/simoleon-terms-of-use
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/it/keywords.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+valuta, forex, convertitore, soldi, euro, dollaro, yen, viaggio, scambio, mercati, finanza
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/it/marketing_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/apps/simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/it/name.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/it/privacy_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/simoleon-privacy-policy
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/it/release_notes.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,6 @@
+Ciao a tutti! Questo è un grande aggiornamento, speriamo che vi piaccia:
+- Simoleon è disponibile in spagnolo, tedesco, francese, italiano, olandese, portoghese e russo. Se noti una traduzione sbagliata o strana, contattaci: https://dennistech.io/contact
+- Implementati gli acquisti promozionali In-App.
+- Ora, è possibile utilizzare Simoleon per convertire tra le coppie di valute più popolari gratuitamente.
+- Aggiornamenti dell'interfaccia utente.
+- Correzione di bug.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/it/subtitle.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Convertitore di valuta
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/it/support_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/contact
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/nl-NL/description.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,10 @@
+Simoleon is een real-time valuta converter met meer dan 170 wereldwijde valuta's en 2000 valutaparen ondersteund. Het gebruiksgemak en de reële wisselkoers maakt het de perfecte app voor reizigers die op elk moment willen weten hoeveel hun valuta waard is.
+
+- 170 wereldwijde valuta's, crypto's zoals Bitcoin, Ethereum, en Dash, en grondstoffen zoals goud, zilver, en platina.
+- Koersen rechtstreeks van Europese handelsvloeren.
+- Selecteer uw standaard valutapaar en sla uw favoriete valuta's op.
+- Simoleon wordt gesynchroniseerd op al uw apparaten.
+- Snelle en eenvoudige interface.
+
+Privacybeleid: https://dennistech.io/simoleon-privacy-policy
+Gebruiksvoorwaarden: https://dennistech.io/simoleon-terms-of-use
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/nl-NL/keywords.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+valuta, forex, converter, geld, euro, dollar, yen, reizen, uitwisseling, markten, financiën
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/nl-NL/marketing_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/apps/simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/nl-NL/name.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/nl-NL/privacy_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/simoleon-privacy-policy
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/nl-NL/release_notes.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,6 @@
+Hallo daar! Dit is een grote update, we hopen dat jullie het leuk vinden:
+- Simoleon is beschikbaar in het Spaans, Duits, Frans, Italiaans, Nederlands, Portugees, en Russisch. Als u een verkeerde of vreemde vertaling opmerkt, neem dan contact met ons op: https://dennistech.io/contact
+- Geïmplementeerde In-App promotionele aankopen.
+- Nu kun je Simoleon gebruiken om gratis om te rekenen tussen de meest populaire valuta paren.
+- UI updates.
+- Bugs opgelost.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/nl-NL/subtitle.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Realtime valutacalculator
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/nl-NL/support_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/contact
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/primary_category.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+UTILITIES
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/pt-PT/description.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,10 @@
+Simoleon é um conversor de moeda em tempo real com mais de 170 moedas globais e 2000 pares de moedas suportados. A facilidade de utilização e a taxa de câmbio real torna-a a aplicação perfeita para viajantes que querem saber quanto vale a sua moeda em cada momento.
+
+- 170 moedas globais, criptos como Bitcoin, Ethereum, e Dash, e matérias-primas como ouro, prata, e platina.
+- Cotações directamente dos pisos comerciais europeus.
+- Seleccione o seu par de moedas padrão e guarde as suas moedas favoritas.
+- O Simoleon está sincronizado em todos os seus dispositivos.
+- Interface rápida e simples.
+
+Política de privacidade: https://dennistech.io/simoleon-privacy-policy
+Termos de utilização: https://dennistech.io/simoleon-terms-of-use
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/pt-PT/keywords.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+moeda,forex,conversor,dinheiro,euro,dólar,iene,viagens,câmbio,mercados,finanças
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/pt-PT/marketing_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/apps/simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/pt-PT/name.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/pt-PT/privacy_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/simoleon-privacy-policy
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/pt-PT/release_notes.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,6 @@
+Olá! Esta é uma grande actualização, esperamos que gostem:
+- Simoleon está disponível em espanhol, alemão, francês, italiano, holandês, português, e russo. Se notar uma tradução errada ou estranha, por favor contacte-nos: https://dennistech.io/contact
+- Compras promocionais implementadas In-App.
+- Agora, pode usar o Simoleon para converter entre os pares de moedas mais populares gratuitamente.
+- Actualizações UI.
+- Corrige bugs.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/pt-PT/subtitle.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Conversor de moeda
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/pt-PT/support_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/contact
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/ru/description.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,10 @@
+Simoleon - это конвертер валют в реальном времени с поддержкой более 170 мировых валют и 2000 валютных пар. Простота использования и реальный обменный курс делают это приложение идеальным для путешественников, которые хотят знать, сколько стоит их валюта в каждый момент времени.
+
+- 170 мировых валют, криптовалюты, такие как Bitcoin, Ethereum и Dash, и сырьевые товары, такие как золото, серебро и платина.
+- Котировки прямо с европейских торговых площадок.
+- Выберите валютную пару по умолчанию и сохраните любимые валюты.
+- Simoleon синхронизируется на всех ваших устройствах.
+- Быстрый и простой интерфейс.
+
+Политика конфиденциальности: https://dennistech.io/simoleon-privacy-policy
+Условия использования: https://dennistech.io/simoleon-terms-of-use
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/ru/keywords.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+валюта,форекс,конвертер,деньги,евро,доллар,йена,путешествия,обмен,рынки,финансы
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/ru/marketing_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/apps/simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/ru/name.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Simoleon
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/ru/privacy_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/simoleon-privacy-policy
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/ru/release_notes.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,6 @@
+Привет! Это большое обновление, мы надеемся, что оно вам понравится:
+- Simoleon доступен на испанском, немецком, французском, итальянском, голландском, португальском и русском языках. Если вы заметили неправильный или странный перевод, пожалуйста, свяжитесь с нами: https://dennistech.io/contact.
+- Внедрены рекламные покупки In-App.
+- Теперь вы можете использовать Simoleon для конвертации между самыми популярными валютными парами бесплатно.
+- Обновления пользовательского интерфейса.
+- Исправлены ошибки.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/ru/subtitle.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Конвертер валют
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/ru/support_url.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+https://dennistech.io/contact
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/metadata/secondary_category.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+FINANCE
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/review_information/email_address.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+dmartin@dennistech.io
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/review_information/first_name.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Dennis
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/review_information/last_name.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
+Concepcion Martin
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fastlane/review_information/phone_number.txt	Thu Aug 05 16:33:37 2021 +0100
@@ -0,0 +1,1 @@
++34 639 465 931
\ No newline at end of file