From ae619c8feeeb11187c163ebd428818fd6f87240c Mon Sep 17 00:00:00 2001
From: Tsanie Lily <tsorgy@gmail.com>
Date: Tue, 8 Mar 2022 19:46:16 +0800
Subject: [PATCH] add microcharts

---
 Billing.Shared/Billing.Shared.projitems       |   9 +
 Billing.Shared/Views/RankPage.xaml            |  13 ++
 Billing.Shared/Views/RankPage.xaml.cs         |  29 +++
 .../Billing.Android/Billing.Android.csproj    |  15 ++
 .../Resources/Resource.designer.cs            | 181 +++++++++---------
 .../Resources/drawable-mdpi/rank.png          | Bin 0 -> 264 bytes
 .../Resources/drawable-xhdpi/rank.png         | Bin 0 -> 341 bytes
 .../Resources/drawable-xxhdpi/rank.png        | Bin 0 -> 584 bytes
 .../Resources/drawable/rank.png               | Bin 0 -> 374 bytes
 Billing/Billing.iOS/Billing.iOS.csproj        |  12 ++
 Billing/Billing.iOS/Resources/rank.png        | Bin 0 -> 264 bytes
 Billing/Billing.iOS/Resources/rank@2x.png     | Bin 0 -> 341 bytes
 Billing/Billing.iOS/Resources/rank@3x.png     | Bin 0 -> 584 bytes
 13 files changed, 172 insertions(+), 87 deletions(-)
 create mode 100644 Billing.Shared/Views/RankPage.xaml
 create mode 100644 Billing.Shared/Views/RankPage.xaml.cs
 create mode 100644 Billing/Billing.Android/Resources/drawable-mdpi/rank.png
 create mode 100644 Billing/Billing.Android/Resources/drawable-xhdpi/rank.png
 create mode 100644 Billing/Billing.Android/Resources/drawable-xxhdpi/rank.png
 create mode 100644 Billing/Billing.Android/Resources/drawable/rank.png
 create mode 100644 Billing/Billing.iOS/Resources/rank.png
 create mode 100644 Billing/Billing.iOS/Resources/rank@2x.png
 create mode 100644 Billing/Billing.iOS/Resources/rank@3x.png

diff --git a/Billing.Shared/Billing.Shared.projitems b/Billing.Shared/Billing.Shared.projitems
index fafb41c..7d6eba9 100644
--- a/Billing.Shared/Billing.Shared.projitems
+++ b/Billing.Shared/Billing.Shared.projitems
@@ -67,6 +67,10 @@
       <DependentUpon>IconSelectPage.xaml</DependentUpon>
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="$(MSBuildThisFileDirectory)Views\RankPage.xaml.cs">
+      <DependentUpon>RankPage.xaml</DependentUpon>
+      <SubType>Code</SubType>
+    </Compile>
     <Compile Include="$(MSBuildThisFileDirectory)Views\SettingPage.xaml.cs">
       <DependentUpon>SettingPage.xaml</DependentUpon>
     </Compile>
@@ -127,4 +131,9 @@
       <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
     </EmbeddedResource>
   </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="$(MSBuildThisFileDirectory)Views\RankPage.xaml">
+      <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+    </EmbeddedResource>
+  </ItemGroup>
 </Project>
\ No newline at end of file
diff --git a/Billing.Shared/Views/RankPage.xaml b/Billing.Shared/Views/RankPage.xaml
new file mode 100644
index 0000000..8827fe7
--- /dev/null
+++ b/Billing.Shared/Views/RankPage.xaml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<ui:BillingPage xmlns="http://xamarin.com/schemas/2014/forms"
+                xmlns:r="clr-namespace:Billing.Languages"
+                xmlns:ui="clr-namespace:Billing.UI"
+                xmlns:v="clr-namespace:Billing.Views"
+                xmlns:chart="clr-namespace:Microcharts.Forms;assembly=Microcharts.Forms"
+                xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+                x:Class="Billing.Views.RankPage"
+                x:Name="rankPage"
+                x:DataType="v:RankPage"
+                BindingContext="{x:Reference rankPage}">
+    <chart:ChartView Chart="{Binding Chart}"/>
+</ui:BillingPage>
\ No newline at end of file
diff --git a/Billing.Shared/Views/RankPage.xaml.cs b/Billing.Shared/Views/RankPage.xaml.cs
new file mode 100644
index 0000000..8f8d567
--- /dev/null
+++ b/Billing.Shared/Views/RankPage.xaml.cs
@@ -0,0 +1,29 @@
+using Billing.UI;
+using Microcharts;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+using Xamarin.Forms;
+using Xamarin.Forms.Xaml;
+
+namespace Billing.Views
+{
+    public partial class RankPage : BillingPage
+    {
+        private static readonly BindableProperty ChartProperty = Helper.Create<Chart, RankPage>(nameof(Chart));
+
+        public Chart Chart
+        {
+            get => (Chart)GetValue(ChartProperty);
+            set => SetValue(ChartProperty, value);
+        }
+
+        public RankPage()
+        {
+            InitializeComponent();
+        }
+    }
+}
\ No newline at end of file
diff --git a/Billing/Billing.Android/Billing.Android.csproj b/Billing/Billing.Android/Billing.Android.csproj
index 3d67096..a07205a 100644
--- a/Billing/Billing.Android/Billing.Android.csproj
+++ b/Billing/Billing.Android/Billing.Android.csproj
@@ -65,6 +65,9 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
+    <PackageReference Include="Microcharts.Forms">
+      <Version>0.9.5.9</Version>
+    </PackageReference>
     <PackageReference Include="SkiaSharp.Views.Forms" Version="2.80.3" />
     <PackageReference Include="Xamarin.Forms" Version="5.0.0.2337" />
     <PackageReference Include="Xamarin.Essentials" Version="1.7.1" />
@@ -503,6 +506,18 @@
   <ItemGroup>
     <AndroidResource Include="Resources\drawable-xxhdpi\taxi.png" />
   </ItemGroup>
+  <ItemGroup>
+    <AndroidResource Include="Resources\drawable\rank.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidResource Include="Resources\drawable-mdpi\rank.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidResource Include="Resources\drawable-xhdpi\rank.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <AndroidResource Include="Resources\drawable-xxhdpi\rank.png" />
+  </ItemGroup>
   <Import Project="..\..\Billing.Shared\Billing.Shared.projitems" Label="Shared" />
   <Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
 </Project>
\ No newline at end of file
diff --git a/Billing/Billing.Android/Resources/Resource.designer.cs b/Billing/Billing.Android/Resources/Resource.designer.cs
index 6c952fd..35206b9 100644
--- a/Billing/Billing.Android/Resources/Resource.designer.cs
+++ b/Billing/Billing.Android/Resources/Resource.designer.cs
@@ -14,7 +14,7 @@ namespace Billing.Droid
 {
 	
 	
-	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "1.0.0.0")]
+	[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Xamarin.Android.Build.Tasks", "12.2.0.155")]
 	public partial class Resource
 	{
 		
@@ -25,6 +25,7 @@ namespace Billing.Droid
 		
 		public static void UpdateIdValues()
 		{
+			global::Microcharts.Droid.Resource.String.library_name = global::Billing.Droid.Resource.String.library_name;
 			global::SkiaSharp.Views.Forms.Resource.Animation.abc_fade_in = global::Billing.Droid.Resource.Animation.abc_fade_in;
 			global::SkiaSharp.Views.Forms.Resource.Animation.abc_fade_out = global::Billing.Droid.Resource.Animation.abc_fade_out;
 			global::SkiaSharp.Views.Forms.Resource.Animation.abc_grow_fade_in_from_bottom = global::Billing.Droid.Resource.Animation.abc_grow_fade_in_from_bottom;
@@ -19239,52 +19240,55 @@ namespace Billing.Droid
 			public const int rail = 2131165357;
 			
 			// aapt resource value: 0x7F0700AE
-			public const int rcb = 2131165358;
+			public const int rank = 2131165358;
 			
 			// aapt resource value: 0x7F0700AF
-			public const int rent = 2131165359;
+			public const int rcb = 2131165359;
 			
 			// aapt resource value: 0x7F0700B0
-			public const int right = 2131165360;
+			public const int rent = 2131165360;
 			
 			// aapt resource value: 0x7F0700B1
-			public const int sackdollar = 2131165361;
+			public const int right = 2131165361;
 			
 			// aapt resource value: 0x7F0700B2
-			public const int settings = 2131165362;
+			public const int sackdollar = 2131165362;
 			
 			// aapt resource value: 0x7F0700B3
-			public const int splash_logo = 2131165363;
+			public const int settings = 2131165363;
 			
 			// aapt resource value: 0x7F0700B4
-			public const int splash_screen = 2131165364;
+			public const int splash_logo = 2131165364;
 			
 			// aapt resource value: 0x7F0700B5
-			public const int taxi = 2131165365;
+			public const int splash_screen = 2131165365;
 			
 			// aapt resource value: 0x7F0700B6
-			public const int test_custom_background = 2131165366;
+			public const int taxi = 2131165366;
 			
 			// aapt resource value: 0x7F0700B7
-			public const int tooltip_frame_dark = 2131165367;
+			public const int test_custom_background = 2131165367;
 			
 			// aapt resource value: 0x7F0700B8
-			public const int tooltip_frame_light = 2131165368;
+			public const int tooltip_frame_dark = 2131165368;
 			
 			// aapt resource value: 0x7F0700B9
-			public const int trans = 2131165369;
+			public const int tooltip_frame_light = 2131165369;
 			
 			// aapt resource value: 0x7F0700BA
-			public const int wallet = 2131165370;
+			public const int trans = 2131165370;
 			
 			// aapt resource value: 0x7F0700BB
-			public const int yuan = 2131165371;
+			public const int wallet = 2131165371;
 			
 			// aapt resource value: 0x7F0700BC
-			public const int yuebao = 2131165372;
+			public const int yuan = 2131165372;
 			
 			// aapt resource value: 0x7F0700BD
-			public const int zhaozhaoying = 2131165373;
+			public const int yuebao = 2131165373;
+			
+			// aapt resource value: 0x7F0700BE
+			public const int zhaozhaoying = 2131165374;
 			
 			static Drawable()
 			{
@@ -21586,214 +21590,217 @@ namespace Billing.Droid
 			public const int item_view_role_description = 2131623984;
 			
 			// aapt resource value: 0x7F0E0031
-			public const int material_clock_display_divider = 2131623985;
+			public const int library_name = 2131623985;
 			
 			// aapt resource value: 0x7F0E0032
-			public const int material_clock_toggle_content_description = 2131623986;
+			public const int material_clock_display_divider = 2131623986;
 			
 			// aapt resource value: 0x7F0E0033
-			public const int material_hour_selection = 2131623987;
+			public const int material_clock_toggle_content_description = 2131623987;
 			
 			// aapt resource value: 0x7F0E0034
-			public const int material_hour_suffix = 2131623988;
+			public const int material_hour_selection = 2131623988;
 			
 			// aapt resource value: 0x7F0E0035
-			public const int material_minute_selection = 2131623989;
+			public const int material_hour_suffix = 2131623989;
 			
 			// aapt resource value: 0x7F0E0036
-			public const int material_minute_suffix = 2131623990;
+			public const int material_minute_selection = 2131623990;
 			
 			// aapt resource value: 0x7F0E0037
-			public const int material_motion_easing_accelerated = 2131623991;
+			public const int material_minute_suffix = 2131623991;
 			
 			// aapt resource value: 0x7F0E0038
-			public const int material_motion_easing_decelerated = 2131623992;
+			public const int material_motion_easing_accelerated = 2131623992;
 			
 			// aapt resource value: 0x7F0E0039
-			public const int material_motion_easing_emphasized = 2131623993;
+			public const int material_motion_easing_decelerated = 2131623993;
 			
 			// aapt resource value: 0x7F0E003A
-			public const int material_motion_easing_linear = 2131623994;
+			public const int material_motion_easing_emphasized = 2131623994;
 			
 			// aapt resource value: 0x7F0E003B
-			public const int material_motion_easing_standard = 2131623995;
+			public const int material_motion_easing_linear = 2131623995;
 			
 			// aapt resource value: 0x7F0E003C
-			public const int material_slider_range_end = 2131623996;
+			public const int material_motion_easing_standard = 2131623996;
 			
 			// aapt resource value: 0x7F0E003D
-			public const int material_slider_range_start = 2131623997;
+			public const int material_slider_range_end = 2131623997;
 			
 			// aapt resource value: 0x7F0E003E
-			public const int material_timepicker_am = 2131623998;
+			public const int material_slider_range_start = 2131623998;
 			
 			// aapt resource value: 0x7F0E003F
-			public const int material_timepicker_clock_mode_description = 2131623999;
+			public const int material_timepicker_am = 2131623999;
 			
 			// aapt resource value: 0x7F0E0040
-			public const int material_timepicker_hour = 2131624000;
+			public const int material_timepicker_clock_mode_description = 2131624000;
 			
 			// aapt resource value: 0x7F0E0041
-			public const int material_timepicker_minute = 2131624001;
+			public const int material_timepicker_hour = 2131624001;
 			
 			// aapt resource value: 0x7F0E0042
-			public const int material_timepicker_pm = 2131624002;
+			public const int material_timepicker_minute = 2131624002;
 			
 			// aapt resource value: 0x7F0E0043
-			public const int material_timepicker_select_time = 2131624003;
+			public const int material_timepicker_pm = 2131624003;
 			
 			// aapt resource value: 0x7F0E0044
-			public const int material_timepicker_text_input_mode_description = 2131624004;
+			public const int material_timepicker_select_time = 2131624004;
 			
 			// aapt resource value: 0x7F0E0045
-			public const int mtrl_badge_numberless_content_description = 2131624005;
+			public const int material_timepicker_text_input_mode_description = 2131624005;
 			
 			// aapt resource value: 0x7F0E0046
-			public const int mtrl_chip_close_icon_content_description = 2131624006;
+			public const int mtrl_badge_numberless_content_description = 2131624006;
 			
 			// aapt resource value: 0x7F0E0047
-			public const int mtrl_exceed_max_badge_number_content_description = 2131624007;
+			public const int mtrl_chip_close_icon_content_description = 2131624007;
 			
 			// aapt resource value: 0x7F0E0048
-			public const int mtrl_exceed_max_badge_number_suffix = 2131624008;
+			public const int mtrl_exceed_max_badge_number_content_description = 2131624008;
 			
 			// aapt resource value: 0x7F0E0049
-			public const int mtrl_picker_a11y_next_month = 2131624009;
+			public const int mtrl_exceed_max_badge_number_suffix = 2131624009;
 			
 			// aapt resource value: 0x7F0E004A
-			public const int mtrl_picker_a11y_prev_month = 2131624010;
+			public const int mtrl_picker_a11y_next_month = 2131624010;
 			
 			// aapt resource value: 0x7F0E004B
-			public const int mtrl_picker_announce_current_selection = 2131624011;
+			public const int mtrl_picker_a11y_prev_month = 2131624011;
 			
 			// aapt resource value: 0x7F0E004C
-			public const int mtrl_picker_cancel = 2131624012;
+			public const int mtrl_picker_announce_current_selection = 2131624012;
 			
 			// aapt resource value: 0x7F0E004D
-			public const int mtrl_picker_confirm = 2131624013;
+			public const int mtrl_picker_cancel = 2131624013;
 			
 			// aapt resource value: 0x7F0E004E
-			public const int mtrl_picker_date_header_selected = 2131624014;
+			public const int mtrl_picker_confirm = 2131624014;
 			
 			// aapt resource value: 0x7F0E004F
-			public const int mtrl_picker_date_header_title = 2131624015;
+			public const int mtrl_picker_date_header_selected = 2131624015;
 			
 			// aapt resource value: 0x7F0E0050
-			public const int mtrl_picker_date_header_unselected = 2131624016;
+			public const int mtrl_picker_date_header_title = 2131624016;
 			
 			// aapt resource value: 0x7F0E0051
-			public const int mtrl_picker_day_of_week_column_header = 2131624017;
+			public const int mtrl_picker_date_header_unselected = 2131624017;
 			
 			// aapt resource value: 0x7F0E0052
-			public const int mtrl_picker_invalid_format = 2131624018;
+			public const int mtrl_picker_day_of_week_column_header = 2131624018;
 			
 			// aapt resource value: 0x7F0E0053
-			public const int mtrl_picker_invalid_format_example = 2131624019;
+			public const int mtrl_picker_invalid_format = 2131624019;
 			
 			// aapt resource value: 0x7F0E0054
-			public const int mtrl_picker_invalid_format_use = 2131624020;
+			public const int mtrl_picker_invalid_format_example = 2131624020;
 			
 			// aapt resource value: 0x7F0E0055
-			public const int mtrl_picker_invalid_range = 2131624021;
+			public const int mtrl_picker_invalid_format_use = 2131624021;
 			
 			// aapt resource value: 0x7F0E0056
-			public const int mtrl_picker_navigate_to_year_description = 2131624022;
+			public const int mtrl_picker_invalid_range = 2131624022;
 			
 			// aapt resource value: 0x7F0E0057
-			public const int mtrl_picker_out_of_range = 2131624023;
+			public const int mtrl_picker_navigate_to_year_description = 2131624023;
 			
 			// aapt resource value: 0x7F0E0058
-			public const int mtrl_picker_range_header_only_end_selected = 2131624024;
+			public const int mtrl_picker_out_of_range = 2131624024;
 			
 			// aapt resource value: 0x7F0E0059
-			public const int mtrl_picker_range_header_only_start_selected = 2131624025;
+			public const int mtrl_picker_range_header_only_end_selected = 2131624025;
 			
 			// aapt resource value: 0x7F0E005A
-			public const int mtrl_picker_range_header_selected = 2131624026;
+			public const int mtrl_picker_range_header_only_start_selected = 2131624026;
 			
 			// aapt resource value: 0x7F0E005B
-			public const int mtrl_picker_range_header_title = 2131624027;
+			public const int mtrl_picker_range_header_selected = 2131624027;
 			
 			// aapt resource value: 0x7F0E005C
-			public const int mtrl_picker_range_header_unselected = 2131624028;
+			public const int mtrl_picker_range_header_title = 2131624028;
 			
 			// aapt resource value: 0x7F0E005D
-			public const int mtrl_picker_save = 2131624029;
+			public const int mtrl_picker_range_header_unselected = 2131624029;
 			
 			// aapt resource value: 0x7F0E005E
-			public const int mtrl_picker_text_input_date_hint = 2131624030;
+			public const int mtrl_picker_save = 2131624030;
 			
 			// aapt resource value: 0x7F0E005F
-			public const int mtrl_picker_text_input_date_range_end_hint = 2131624031;
+			public const int mtrl_picker_text_input_date_hint = 2131624031;
 			
 			// aapt resource value: 0x7F0E0060
-			public const int mtrl_picker_text_input_date_range_start_hint = 2131624032;
+			public const int mtrl_picker_text_input_date_range_end_hint = 2131624032;
 			
 			// aapt resource value: 0x7F0E0061
-			public const int mtrl_picker_text_input_day_abbr = 2131624033;
+			public const int mtrl_picker_text_input_date_range_start_hint = 2131624033;
 			
 			// aapt resource value: 0x7F0E0062
-			public const int mtrl_picker_text_input_month_abbr = 2131624034;
+			public const int mtrl_picker_text_input_day_abbr = 2131624034;
 			
 			// aapt resource value: 0x7F0E0063
-			public const int mtrl_picker_text_input_year_abbr = 2131624035;
+			public const int mtrl_picker_text_input_month_abbr = 2131624035;
 			
 			// aapt resource value: 0x7F0E0064
-			public const int mtrl_picker_toggle_to_calendar_input_mode = 2131624036;
+			public const int mtrl_picker_text_input_year_abbr = 2131624036;
 			
 			// aapt resource value: 0x7F0E0065
-			public const int mtrl_picker_toggle_to_day_selection = 2131624037;
+			public const int mtrl_picker_toggle_to_calendar_input_mode = 2131624037;
 			
 			// aapt resource value: 0x7F0E0066
-			public const int mtrl_picker_toggle_to_text_input_mode = 2131624038;
+			public const int mtrl_picker_toggle_to_day_selection = 2131624038;
 			
 			// aapt resource value: 0x7F0E0067
-			public const int mtrl_picker_toggle_to_year_selection = 2131624039;
+			public const int mtrl_picker_toggle_to_text_input_mode = 2131624039;
 			
 			// aapt resource value: 0x7F0E0068
-			public const int nav_app_bar_navigate_up_description = 2131624040;
+			public const int mtrl_picker_toggle_to_year_selection = 2131624040;
 			
 			// aapt resource value: 0x7F0E0069
-			public const int nav_app_bar_open_drawer_description = 2131624041;
+			public const int nav_app_bar_navigate_up_description = 2131624041;
 			
 			// aapt resource value: 0x7F0E006A
-			public const int not_set = 2131624042;
+			public const int nav_app_bar_open_drawer_description = 2131624042;
 			
 			// aapt resource value: 0x7F0E006B
-			public const int overflow_tab_title = 2131624043;
+			public const int not_set = 2131624043;
 			
 			// aapt resource value: 0x7F0E006C
-			public const int password_toggle_content_description = 2131624044;
+			public const int overflow_tab_title = 2131624044;
 			
 			// aapt resource value: 0x7F0E006D
-			public const int path_password_eye = 2131624045;
+			public const int password_toggle_content_description = 2131624045;
 			
 			// aapt resource value: 0x7F0E006E
-			public const int path_password_eye_mask_strike_through = 2131624046;
+			public const int path_password_eye = 2131624046;
 			
 			// aapt resource value: 0x7F0E006F
-			public const int path_password_eye_mask_visible = 2131624047;
+			public const int path_password_eye_mask_strike_through = 2131624047;
 			
 			// aapt resource value: 0x7F0E0070
-			public const int path_password_strike_through = 2131624048;
+			public const int path_password_eye_mask_visible = 2131624048;
 			
 			// aapt resource value: 0x7F0E0071
-			public const int preference_copied = 2131624049;
+			public const int path_password_strike_through = 2131624049;
 			
 			// aapt resource value: 0x7F0E0072
-			public const int search_menu_title = 2131624050;
+			public const int preference_copied = 2131624050;
 			
 			// aapt resource value: 0x7F0E0073
-			public const int status_bar_notification_info_overflow = 2131624051;
+			public const int search_menu_title = 2131624051;
 			
 			// aapt resource value: 0x7F0E0074
-			public const int summary_collapsed_preference_list = 2131624052;
+			public const int status_bar_notification_info_overflow = 2131624052;
 			
 			// aapt resource value: 0x7F0E0075
-			public const int v7_preference_off = 2131624053;
+			public const int summary_collapsed_preference_list = 2131624053;
 			
 			// aapt resource value: 0x7F0E0076
-			public const int v7_preference_on = 2131624054;
+			public const int v7_preference_off = 2131624054;
+			
+			// aapt resource value: 0x7F0E0077
+			public const int v7_preference_on = 2131624055;
 			
 			static String()
 			{
diff --git a/Billing/Billing.Android/Resources/drawable-mdpi/rank.png b/Billing/Billing.Android/Resources/drawable-mdpi/rank.png
new file mode 100644
index 0000000000000000000000000000000000000000..d75f982debfa759c35a9e94e42baaeb678295c04
GIT binary patch
literal 264
zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOR<w@2nP_<aHMnq`TIRx978O6
z&t9?3V=@$Aeb9eZ%w;E|riKNB`y%i51>TZ{%;z>;+3A$$(0xfYR%Jp2*Phv;UTgkt
zbeWg(v-jBNG`Hm0|N8>Z?{L>K<ST3ZuGs1mV0JD0>4~-#|JwE(Tt0)n?ufLXGmH2Q
zmbzoYcDuOJbStE<9PVW;+sT;f`bn&P+YHuy$E}vh2(Q_&Yvbakl~H-B5pFg0YW{Xp
zLPW25{QEMAe`#edmwj&CW9<*=*YC6PCH_CcE!VX7_2fTxI~WYlN-bViHgze`D-52l
KelF{r5}E+_XJy_1

literal 0
HcmV?d00001

diff --git a/Billing/Billing.Android/Resources/drawable-xhdpi/rank.png b/Billing/Billing.Android/Resources/drawable-xhdpi/rank.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb04e142302362d9706f2ecf2b5b5061b43681b2
GIT binary patch
literal 341
zcmV-b0jmCqP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700004b3#c}2nYxW
zd<bNS0003DNkl<ZScUDFOA5j;5I~<lbnO+qhj=EJZuA0r1+^#9Gk63)-3eW(3#|)F
zku(X|#MsI_2!*6Gc}zPk1O!2-6eA!3Qf1tM<qy4brWEDgB?~lzsl8}e*0e661wTdv
zT`>ucfddc&r|cR7J75q-&CUgLw@n=K&MbLTU4W^AJ<BE?2f>f2?K@Z*{!-BPH}Foo
zM2y;PU7$}<JO$3ct;8NVJ|1xd?17^)_Q1+Dxevi1(9+DevNb1s2x>pDzVOi`Uu~K)
zf@;MoS3#A^RWK;hB(6x4xFSvBN^P6uVTn<XD6~fwhCH@vYxgt>Muva{*eY{#;HtUz
n0xXodO_oC^w>G#4f?(qbWA#N5-f!Qm00000NkvXXu0mjf7J-C!

literal 0
HcmV?d00001

diff --git a/Billing/Billing.Android/Resources/drawable-xxhdpi/rank.png b/Billing/Billing.Android/Resources/drawable-xxhdpi/rank.png
new file mode 100644
index 0000000000000000000000000000000000000000..19b6cb3bdbcb7237776df9a2ab52ce235bef802a
GIT binary patch
literal 584
zcmV-O0=NB%P)<h;3K|Lk000e1NJLTq002Ay002A)1^@s6I{evk00004b3#c}2nYxW
zd<bNS00061Nkl<ZXo2n8KWh|07{~EX^wd}=*l4Mhq_GujEX2kpg0DgB?FF&$b@&zp
zD+?hiT4^O1OKtoI7Ge`}cR7pQkRX}aJ>1#sPUZ^(cRa()^V@yqnP+#0LZMJ76b8e}
zVLQ;0i@1dg!amQii4FYf$**KQ!guUo5ol9<z@6AY$CA3)9oKPQJR&Dpt6Pw<2tKLZ
z@|)m9tixCYcSaGMJ4JBrOj_8_VzvIiqT2Izf3vp-{>FCK4))DeJj0gohCjzg+)n7n
zo5=kCwuiBSnnL;pZsJtK7?*Lch2w`#li*c*;T+>Q&iubS={a&qt4qP7c=F2e4liQH
z90f-stxLhtD?1c&yu(q7;M{4drMut?9^l%(`S#c0R4?G(;<4(zR5JPyd>8AQE4Fof
z!~K-b^bykMv@1_f*L{<6<ks-e1Sc;~`w+a0h~&jfAA$!}fekIBlT#iK6R^yM$RcSi
zvxY~Nv<8)&LX@PHfI%g*p{?O8lGZYeDrt>^A~<)3COC_vRUQuylP1Blx;3#7{`x;v
zeKc=kUiUqSZS5}HEHVa~1#i|ZCVGJ%cpb36!xz=D!4PwN#`}Q%C4P#Fo~ceEe2VmG
zd`-JiPqHR_!fi(-_<6wo6n}6@_2K*=b_Kr(*q`95>Tqf3CQVghUj^)iLZMJ742{1y
Wie`-|Af5XF0000<MNUMnLSTZAixe*a

literal 0
HcmV?d00001

diff --git a/Billing/Billing.Android/Resources/drawable/rank.png b/Billing/Billing.Android/Resources/drawable/rank.png
new file mode 100644
index 0000000000000000000000000000000000000000..f5aad8393c8a63cfb6e7a9e098d36bbc5ddc3dc6
GIT binary patch
literal 374
zcmV-+0g3*JP)<h;3K|Lk000e1NJLTq0015U0015c1^@s6J20-I00004b3#c}2nYxW
zd<bNS0003kNkl<ZNQv#%K}rKb5QX7SQH&xg2yTKK1zigs#3OhL&!bxpq(l&1#6<+f
zs6>Q7T+9SJO@ck+v~KdC8LF76zv+Hc6m$KN7BbY_#vWDz#sJslGn-D(!zfr?9EC3}
zW&m$uC(5<4nj4&?9N<yPOG{DQ#;M7pdd8)~94SgNYz*GT88(94JFY5#lN2BIas-8S
zw3>uY1J6>@z2yK`X*5Zj%;D;!P1XTl;0+(;dc}FwBC)GebgVGkSgkTwNlhJfW%K=8
z=c@BN{bZg-&D9934meaJ%_IibEt<_-RSGw1t}1s}%UpGbzh9ecfQKm8LqCY`F%04%
z?t-|F$EZeE(OzfnbPb0l2eVJy;-!oa6eH~T+Yz2{Q^s4^_dVV!p&gmW+qtId3yz30
U;sQ@pLI3~&07*qoM6N<$f)`7gzyJUM

literal 0
HcmV?d00001

diff --git a/Billing/Billing.iOS/Billing.iOS.csproj b/Billing/Billing.iOS/Billing.iOS.csproj
index 3d322fa..514c266 100644
--- a/Billing/Billing.iOS/Billing.iOS.csproj
+++ b/Billing/Billing.iOS/Billing.iOS.csproj
@@ -166,6 +166,9 @@
     <Reference Include="System.Numerics.Vectors" />
   </ItemGroup>
   <ItemGroup>
+    <PackageReference Include="Microcharts.Forms">
+      <Version>0.9.5.9</Version>
+    </PackageReference>
     <PackageReference Include="SkiaSharp.Views.Forms" Version="2.80.3" />
     <PackageReference Include="Xamarin.Forms" Version="5.0.0.2337" />
     <PackageReference Include="Xamarin.Essentials" Version="1.7.1" />
@@ -445,6 +448,15 @@
   <ItemGroup>
     <BundleResource Include="Resources\taxi%403x.png" />
   </ItemGroup>
+  <ItemGroup>
+    <BundleResource Include="Resources\rank.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <BundleResource Include="Resources\rank%402x.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <BundleResource Include="Resources\rank%403x.png" />
+  </ItemGroup>
   <Import Project="..\..\Billing.Shared\Billing.Shared.projitems" Label="Shared" />
   <Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
 </Project>
\ No newline at end of file
diff --git a/Billing/Billing.iOS/Resources/rank.png b/Billing/Billing.iOS/Resources/rank.png
new file mode 100644
index 0000000000000000000000000000000000000000..d75f982debfa759c35a9e94e42baaeb678295c04
GIT binary patch
literal 264
zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOR<w@2nP_<aHMnq`TIRx978O6
z&t9?3V=@$Aeb9eZ%w;E|riKNB`y%i51>TZ{%;z>;+3A$$(0xfYR%Jp2*Phv;UTgkt
zbeWg(v-jBNG`Hm0|N8>Z?{L>K<ST3ZuGs1mV0JD0>4~-#|JwE(Tt0)n?ufLXGmH2Q
zmbzoYcDuOJbStE<9PVW;+sT;f`bn&P+YHuy$E}vh2(Q_&Yvbakl~H-B5pFg0YW{Xp
zLPW25{QEMAe`#edmwj&CW9<*=*YC6PCH_CcE!VX7_2fTxI~WYlN-bViHgze`D-52l
KelF{r5}E+_XJy_1

literal 0
HcmV?d00001

diff --git a/Billing/Billing.iOS/Resources/rank@2x.png b/Billing/Billing.iOS/Resources/rank@2x.png
new file mode 100644
index 0000000000000000000000000000000000000000..cb04e142302362d9706f2ecf2b5b5061b43681b2
GIT binary patch
literal 341
zcmV-b0jmCqP)<h;3K|Lk000e1NJLTq001Ze001Zm1^@s6jQ+T700004b3#c}2nYxW
zd<bNS0003DNkl<ZScUDFOA5j;5I~<lbnO+qhj=EJZuA0r1+^#9Gk63)-3eW(3#|)F
zku(X|#MsI_2!*6Gc}zPk1O!2-6eA!3Qf1tM<qy4brWEDgB?~lzsl8}e*0e661wTdv
zT`>ucfddc&r|cR7J75q-&CUgLw@n=K&MbLTU4W^AJ<BE?2f>f2?K@Z*{!-BPH}Foo
zM2y;PU7$}<JO$3ct;8NVJ|1xd?17^)_Q1+Dxevi1(9+DevNb1s2x>pDzVOi`Uu~K)
zf@;MoS3#A^RWK;hB(6x4xFSvBN^P6uVTn<XD6~fwhCH@vYxgt>Muva{*eY{#;HtUz
n0xXodO_oC^w>G#4f?(qbWA#N5-f!Qm00000NkvXXu0mjf7J-C!

literal 0
HcmV?d00001

diff --git a/Billing/Billing.iOS/Resources/rank@3x.png b/Billing/Billing.iOS/Resources/rank@3x.png
new file mode 100644
index 0000000000000000000000000000000000000000..19b6cb3bdbcb7237776df9a2ab52ce235bef802a
GIT binary patch
literal 584
zcmV-O0=NB%P)<h;3K|Lk000e1NJLTq002Ay002A)1^@s6I{evk00004b3#c}2nYxW
zd<bNS00061Nkl<ZXo2n8KWh|07{~EX^wd}=*l4Mhq_GujEX2kpg0DgB?FF&$b@&zp
zD+?hiT4^O1OKtoI7Ge`}cR7pQkRX}aJ>1#sPUZ^(cRa()^V@yqnP+#0LZMJ76b8e}
zVLQ;0i@1dg!amQii4FYf$**KQ!guUo5ol9<z@6AY$CA3)9oKPQJR&Dpt6Pw<2tKLZ
z@|)m9tixCYcSaGMJ4JBrOj_8_VzvIiqT2Izf3vp-{>FCK4))DeJj0gohCjzg+)n7n
zo5=kCwuiBSnnL;pZsJtK7?*Lch2w`#li*c*;T+>Q&iubS={a&qt4qP7c=F2e4liQH
z90f-stxLhtD?1c&yu(q7;M{4drMut?9^l%(`S#c0R4?G(;<4(zR5JPyd>8AQE4Fof
z!~K-b^bykMv@1_f*L{<6<ks-e1Sc;~`w+a0h~&jfAA$!}fekIBlT#iK6R^yM$RcSi
zvxY~Nv<8)&LX@PHfI%g*p{?O8lGZYeDrt>^A~<)3COC_vRUQuylP1Blx;3#7{`x;v
zeKc=kUiUqSZS5}HEHVa~1#i|ZCVGJ%cpb36!xz=D!4PwN#`}Q%C4P#Fo~ceEe2VmG
zd`-JiPqHR_!fi(-_<6wo6n}6@_2K*=b_Kr(*q`95>Tqf3CQVghUj^)iLZMJ742{1y
Wie`-|Af5XF0000<MNUMnLSTZAixe*a

literal 0
HcmV?d00001