From e0df5a8c097cdb7ffc1fbd36d8bc64a47e3661bd Mon Sep 17 00:00:00 2001
From: Bye <bye@byecorps.com>
Date: Sat, 2 Mar 2024 12:41:57 +0000
Subject: [PATCH] Commit

---
 accounts_handler.php                        |  23 ++------
 admin_apps_create.php                       |  10 ++--
 admin_initdatabase.php                      |  17 ++++++
 api_handler.php                             |  24 ++++++++-
 assets/icons/apple-icon-180.png             | Bin 0 -> 698 bytes
 assets/icons/apple-splash-1125-2436.png     | Bin 0 -> 16356 bytes
 assets/icons/apple-splash-1136-640.png      | Bin 0 -> 4561 bytes
 assets/icons/apple-splash-1170-2532.png     | Bin 0 -> 17311 bytes
 assets/icons/apple-splash-1179-2556.png     | Bin 0 -> 17783 bytes
 assets/icons/apple-splash-1242-2208.png     | Bin 0 -> 15967 bytes
 assets/icons/apple-splash-1242-2688.png     | Bin 0 -> 19355 bytes
 assets/icons/apple-splash-1284-2778.png     | Bin 0 -> 20320 bytes
 assets/icons/apple-splash-1290-2796.png     | Bin 0 -> 19153 bytes
 assets/icons/apple-splash-1334-750.png      | Bin 0 -> 5868 bytes
 assets/icons/apple-splash-1488-2266.png     | Bin 0 -> 18170 bytes
 assets/icons/apple-splash-1536-2048.png     | Bin 0 -> 17136 bytes
 assets/icons/apple-splash-1620-2160.png     | Bin 0 -> 18407 bytes
 assets/icons/apple-splash-1640-2360.png     | Bin 0 -> 20641 bytes
 assets/icons/apple-splash-1668-2224.png     | Bin 0 -> 19755 bytes
 assets/icons/apple-splash-1668-2388.png     | Bin 0 -> 21173 bytes
 assets/icons/apple-splash-1792-828.png      | Bin 0 -> 7886 bytes
 assets/icons/apple-splash-2048-1536.png     | Bin 0 -> 16264 bytes
 assets/icons/apple-splash-2048-2732.png     | Bin 0 -> 28653 bytes
 assets/icons/apple-splash-2160-1620.png     | Bin 0 -> 17730 bytes
 assets/icons/apple-splash-2208-1242.png     | Bin 0 -> 13787 bytes
 assets/icons/apple-splash-2224-1668.png     | Bin 0 -> 18647 bytes
 assets/icons/apple-splash-2266-1488.png     | Bin 0 -> 16890 bytes
 assets/icons/apple-splash-2360-1640.png     | Bin 0 -> 19371 bytes
 assets/icons/apple-splash-2388-1668.png     | Bin 0 -> 19070 bytes
 assets/icons/apple-splash-2436-1125.png     | Bin 0 -> 13640 bytes
 assets/icons/apple-splash-2532-1170.png     | Bin 0 -> 14600 bytes
 assets/icons/apple-splash-2556-1179.png     | Bin 0 -> 14863 bytes
 assets/icons/apple-splash-2688-1242.png     | Bin 0 -> 16322 bytes
 assets/icons/apple-splash-2732-2048.png     | Bin 0 -> 26953 bytes
 assets/icons/apple-splash-2778-1284.png     | Bin 0 -> 17014 bytes
 assets/icons/apple-splash-2796-1290.png     | Bin 0 -> 17412 bytes
 assets/icons/apple-splash-640-1136.png      | Bin 0 -> 5494 bytes
 assets/icons/apple-splash-750-1334.png      | Bin 0 -> 7083 bytes
 assets/icons/apple-splash-828-1792.png      | Bin 0 -> 9836 bytes
 assets/icons/manifest-icon-192.maskable.png | Bin 0 -> 721 bytes
 assets/icons/manifest-icon-512.maskable.png | Bin 0 -> 2331 bytes
 dashboard.php                               |  12 +++++
 database.php                                |   9 ++++
 head.php                                    |  56 +++++++++++++++++---
 image_grabber.php                           |  17 ++++++
 index.php                                   |  26 ++++++---
 login_external_basic.php                    |   9 +++-
 manifest.json                               |  34 ++++++++++++
 profile.php                                 |  37 ++++++++++---
 signin.php                                  |  17 +++---
 signup.php                                  |   4 +-
 styles/design.css                           |  23 ++++++--
 styles/global.css                           |   6 +--
 styles/profiles.css                         |  30 +++++++++++
 styles/types.css                            |  31 +++++++++--
 55 files changed, 322 insertions(+), 63 deletions(-)
 create mode 100644 assets/icons/apple-icon-180.png
 create mode 100644 assets/icons/apple-splash-1125-2436.png
 create mode 100644 assets/icons/apple-splash-1136-640.png
 create mode 100644 assets/icons/apple-splash-1170-2532.png
 create mode 100644 assets/icons/apple-splash-1179-2556.png
 create mode 100644 assets/icons/apple-splash-1242-2208.png
 create mode 100644 assets/icons/apple-splash-1242-2688.png
 create mode 100644 assets/icons/apple-splash-1284-2778.png
 create mode 100644 assets/icons/apple-splash-1290-2796.png
 create mode 100644 assets/icons/apple-splash-1334-750.png
 create mode 100644 assets/icons/apple-splash-1488-2266.png
 create mode 100644 assets/icons/apple-splash-1536-2048.png
 create mode 100644 assets/icons/apple-splash-1620-2160.png
 create mode 100644 assets/icons/apple-splash-1640-2360.png
 create mode 100644 assets/icons/apple-splash-1668-2224.png
 create mode 100644 assets/icons/apple-splash-1668-2388.png
 create mode 100644 assets/icons/apple-splash-1792-828.png
 create mode 100644 assets/icons/apple-splash-2048-1536.png
 create mode 100644 assets/icons/apple-splash-2048-2732.png
 create mode 100644 assets/icons/apple-splash-2160-1620.png
 create mode 100644 assets/icons/apple-splash-2208-1242.png
 create mode 100644 assets/icons/apple-splash-2224-1668.png
 create mode 100644 assets/icons/apple-splash-2266-1488.png
 create mode 100644 assets/icons/apple-splash-2360-1640.png
 create mode 100644 assets/icons/apple-splash-2388-1668.png
 create mode 100644 assets/icons/apple-splash-2436-1125.png
 create mode 100644 assets/icons/apple-splash-2532-1170.png
 create mode 100644 assets/icons/apple-splash-2556-1179.png
 create mode 100644 assets/icons/apple-splash-2688-1242.png
 create mode 100644 assets/icons/apple-splash-2732-2048.png
 create mode 100644 assets/icons/apple-splash-2778-1284.png
 create mode 100644 assets/icons/apple-splash-2796-1290.png
 create mode 100644 assets/icons/apple-splash-640-1136.png
 create mode 100644 assets/icons/apple-splash-750-1334.png
 create mode 100644 assets/icons/apple-splash-828-1792.png
 create mode 100644 assets/icons/manifest-icon-192.maskable.png
 create mode 100644 assets/icons/manifest-icon-512.maskable.png
 create mode 100644 dashboard.php
 create mode 100644 image_grabber.php
 mode change 100644 => 100755 index.php
 create mode 100644 manifest.json

diff --git a/accounts_handler.php b/accounts_handler.php
index 5d862b9..34e6c0a 100644
--- a/accounts_handler.php
+++ b/accounts_handler.php
@@ -2,27 +2,14 @@
 // This file carries functions related to accounts.
 
 function get_avatar_url($bcid):string {
-	global $pdo;
-
-	$sql = "SELECT has_pfp FROM `accounts` WHERE id = ?";
-
-	try {
-		$stmt = $pdo -> prepare($sql);
-		$stmt->execute([$bcid]);
-		$has_pfp = $stmt->fetch();
-	} catch (PDOException $e) {
-		http_response_code(500);
-		die($e);
-	}
 
-	$appendix = "default.png";
+    $exists = db_execute('SELECT public FROM avatars WHERE id = ? LIMIT 1', [$bcid]);
 
-	if ($has_pfp['has_pfp']) {
-		$appendix = $bcid;
-	}
-
-	return 'https://cdn.byecorps.com/id/profile/'.$appendix;
+    if (empty($exists)) {
+        return '/assets/default.png';
+    }
 
+    return '/public/avatars/' . $bcid;
 }
 
 function get_display_name($bcid, $use_bcid_fallback=true, $put_bcid_in_parenthesis=false, $format_bcid=false):string {
diff --git a/admin_apps_create.php b/admin_apps_create.php
index 1e495fb..c769a22 100644
--- a/admin_apps_create.php
+++ b/admin_apps_create.php
@@ -23,11 +23,11 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") {
 
 <form method="post">
 	<label for="title">Title</label>
-	<input type="text" name="title" id="title">
+	<input type="text" required name="title" id="title">
 	<label for="description">Description</label>
 	<textarea name="description" id="description" cols="30" rows="10"></textarea>
 	<label for="owner">App owner</label>
-	<select name="owner" id="owner">
+	<select name="owner" required id="owner">
 		<?php
 			$users = db_query("SELECT * FROM accounts");
 			foreach ($users as $row) {
@@ -36,10 +36,14 @@ if ($_SERVER['REQUEST_METHOD'] == "POST") {
 		?>
 	</select>
     <label for="type">App type</label>
-    <select name="type" id="type">
+    <select name="type" required id="type">
         <option value="null">None</option>
         <option value="basic_login">Basic login</option>
     </select>
+
+    <label for="app_icon">App icon</label>
+    <input type="file" id="app_icon" name="app_icon" />
+
     <label for="callback">Callback</label>
     <input type="url" id="callback" name="callback" />
 	<button type="submit" class="primary">Create app</button>
diff --git a/admin_initdatabase.php b/admin_initdatabase.php
index 838580c..fb860c9 100644
--- a/admin_initdatabase.php
+++ b/admin_initdatabase.php
@@ -119,6 +119,23 @@ if ($_SERVER["REQUEST_METHOD"] == "POST") {
             echo('<p>An error occurred: '. $e->getMessage() .'. Most likely this is already set.');
         }
 
+        echo '<p>Create the `tokens` table';
+
+        try {
+            db_query('CREATE TABLE `badge_owners` (
+  `badge_id` int(11) NOT NULL,
+  `owner_id` varchar(7) NOT NULL,
+  `earned` timestamp NULL DEFAULT current_timestamp(),
+  `info` text DEFAULT NULL COMMENT \'App may attach more info about how the badge was won (Killed "CoolGamer69 in battle!")\',
+      
+    constraint badges_owners_badge
+        foreign key (badge_id) references badges (id),
+    constraint badges_owners_owner
+            foreign key (owner_id) references accounts (id)
+);');
+        } catch (PDOException $e) {
+            echo('<p>An error occurred: ' . $e->getMessage() . '. Most likely this is already set.');
+        }
 
         echo "<p>Database initialised.</p>";
     }
diff --git a/api_handler.php b/api_handler.php
index 64e3c59..34c5c5a 100644
--- a/api_handler.php
+++ b/api_handler.php
@@ -53,6 +53,19 @@ function api_health_check(): array
     return ["message" => "Science compels us to explode the sun!", "time" => time(), "response_code" => 200];
 }
 
+// Potentially authenticated image endpoints
+
+function get_avatar(): array
+{
+    if (!array_key_exists('id', $query)) {
+        return [
+            'response_code' => 404,
+            'message' => 'ID not assigned/found'
+        ];
+    }
+    $user_id = $query['id'];
+}
+
 // User (REQUIRES AUTHORISATION)
 
 function api_user_info() {
@@ -94,7 +107,10 @@ $api_routes = [ // base url is base_url.'/api'
     "/status" => "api_health_check",
 
     // Account stuff
-    "/account/me" => "api_user_info"
+    "/account/me" => "api_user_info",
+
+    // Get avatar
+    "/avatars/get" => "get_avatar"
 ];
 
 $path = str_replace("/api", "", $path);
@@ -107,7 +123,11 @@ if (isset($api_routes[$path])) {
             "message" => "Token expired or invalid."
         ]));
     }
-    echo json_encode($api_routes[$path]());
+    $response = $api_routes[$path]();
+    if (array_key_exists('response_code', $response)) {
+        http_response_code($response['response_code']);
+    }
+    echo json_encode($response);
 } else {
     http_response_code(404);
     echo (json_encode([
diff --git a/assets/icons/apple-icon-180.png b/assets/icons/apple-icon-180.png
new file mode 100644
index 0000000000000000000000000000000000000000..f07b87c89f135d2996cc9bca2cbc94c5493f5cc7
GIT binary patch
literal 698
zcmeAS@N?(olHy`uVBq!ia0y~yVAuk}9Bd2>47O+4j2IXg7>k44ofy`glX=O&z*OSt
z;uumf=k48xnTH%C8XiXNa!7yCF;`hRjm>=nw}ip97k6KO{v$H6dr!>-Wp}^lr8{dJ
zjyzv2&d{%t5yax#wZK!*M6*fF^}-U4St5>;l?F<%W^Wba_aFa$?)~+%GB)quyJ^|`
z3zuZSz8!V=UiQ!R>Ho$16P%D;7yPd1%}v%BAN^|AFJ4!8KJSu-53<u!PsR4xo;Q*C
z`RDM7^55@IwUFn-Wj0^mZZVC<Fgktz`uy&@(>~5X1Y6raO_`_9@=x#H=a!eEMs%1;
z{$i}pE572`A<3_eWEzX_sh4~7ribe@$sHxr?KF$rpUj%UdUey%0~{C_7#KWV{an^L
HB{Ts5bo&Wd

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1125-2436.png b/assets/icons/apple-splash-1125-2436.png
new file mode 100644
index 0000000000000000000000000000000000000000..50920b97b8336200fa3538251b3e401f13f82176
GIT binary patch
literal 16356
zcmeAS@N?(olHy`uVBq!ia0y~yU`b_Q;B4VwV_;xdqk4HK0|NtNage(c!@6@aFBupV
z7(87ZLn`LHxnan7K!M?a!2x@riw!Mjk5=gfUfBJ4-d`RD1_lPZt*<~-gS}BIh-O*_
z5_LE*g^_`Qfn$adNQ^NUWP?J&DG-OnN0Nbop`k&OnSp^pz+hC<Xh4jnh|#PuT1Jc(
zmZP->!)Wz6+9Vil8!?PF5=UFh45Lkg(I&xYlVG$-Fgi*wI$Xjq+9Y5YZ4!(&2}Xxh
z8Ah7~*qQ`;-rTyFdDwu#HIOUrfN_P(`G<nG&2Ab0nf{uz#D!X>H?<4376=LmK*rk_
zfd}awAcOQBkU{!D@F2YcWRTtkGDxoh9;6@D)G!(lv`G;;Ul|f|e-~a8jyqO+Rk&{E
z%bYZ$+s|42&y=iB-{oyQm)pklaxBxe$4iHMf&~Y}<9)9<^+BNl3J3<f*86euX1)C1
z{9b>}aqr=tA#c25JaFsV<2C9&r*D2ZvSWP}69Ys3vtb|aqlNEiEyOgKt78%FmbDBF
z@{>So0T>wYICaBS=7z1kzgMX<FfjO>969CH0U=P;#lTQutUufvR|%`x8QyP~Pq$^P
z*gW&yS8ySHKxofsGjcFzV7!@jL^k(9$(Z3l{LTK&^A6Y>zgs<zLFde{FRy+`eg7KU
z4_bls!z6CBlQ-Ji9c_7zwmk7P=SF1BFq$GpQ^e>PX~XDnCkt(cI|s7P{cyQYmK)Um
z<N35*?%2FT91<SjF~vr3_idEJz%UvHqhSErwlbOyM$^G)IvA}N7#c>yU^EOsyA?;%
s!Du=dO$Vd>h0!ho!)ViRkTeZhmM?RVYi_xx4eHZ-y85}Sb4q9e058GL+W-In

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1136-640.png b/assets/icons/apple-splash-1136-640.png
new file mode 100644
index 0000000000000000000000000000000000000000..235e1f97661f022be126214033da3ab1416f4e21
GIT binary patch
literal 4561
zcmeAS@N?(olHy`uVBq!ia0y~yU@2f=U~1rCV_;zTV$%PUfq{XsILO_JVcj{ImkbPo
z-JULvAr*7p-U`fp?I7ZMahnlivVqHEiH>6l9J)>6FINhmUAJ4T;bP~MC&{n(-M{{$
zhM9qZLE&}sR|XK+r~Uv$9pSV9QH4x=3=9koa~eQu1V*JsLxX{VVKi-wW{1(jfq?<7
zJiPsik-_G2-JIb2yVo0j-Fx$Q+U&oTKPB&{|7*Xm&#?Xh6FaD!^*g}Gz`)QUTmTBe
zM=UZ73=9nxjP#J&c9of-V%cx0;QP1xi(gf5{(f-skJ>*y|Fs$74zdn#!Irz4o#BJe
z@4|KSKCJz<Z`W_B)#?lke>C;zA4>F$kx{$I$qRYWwhRsFyVh^4Vq##hY2&727Qz-`
zx5M}u9?bmqIL5Y79O9@0^B)a{yq<BRzxXRl-Nc*sr-L#*Ged=x_-Lb!0i)a=uqN*I
zwQ>v$4yWtptXBV%_1!egpW#7c%mBB(@BFUqJ%3dhR5|@HA5AW!-5v%8hS5&o0B6e4
f?)Q+ax4yGx${UIO3c2?LRGfOc`njxgN@xNAI*I!T

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1170-2532.png b/assets/icons/apple-splash-1170-2532.png
new file mode 100644
index 0000000000000000000000000000000000000000..c6cd4a14d981cb7e3f5c66917698e312042b608c
GIT binary patch
literal 17311
zcmeAS@N?(olHy`uVBq!ia0y~yV41|g!1;uOje&t7%+Z^ffq{XsILO_JVcj{ImkbOF
z44y8IAr*7p+;HS=Fkm=v!0`X%4mK47&e#1D?r6T)eZ6>nIRgU&!-0c;tUz=_y}=|9
z?a`wGqJ)$=85kHEj(9LJFfb?>j!KP&1_Q%r+8E6aqlLq0dB`wYJB(I{qZQ(4g*e(i
z9BnO+b`TgCMk~b89^z<!nPId-9IX&XE5y+XakN4l9Wtfu5W$T%w=QPBb`WvBXcNG^
z>Y(Z>zNssuLY(fccjkD*e|YYZ?9c*<>YkfCofB9X7#JLsR2Uf;7$$Idf<~`YoP<Es
zsMKg^jHV3+hSBUWlnaMVzWfXo+wA*Za>n1eZfW~)_SJJ4uG)2ZAGlWE{V)3dR#rO8
z`c02&neR;&A3@n294ck;&%d<je>-jn4i%1u`9IG-3l012|7bVw`_tW!Sx!Z8ugwKA
zts@8-)NL82QrliKGMonmM`Go<j_@7pi>sIz81_#XN$Fz5wF9OERI9_*0*p3;Mq*WW
z`wK%u`u9>le+CAI2kdb}xvnEG_k!yJa1HrE?A_}*^B5Qo=s$5CL0y2H%ghayzaP(-
z$G{W$_TT;MmbQ!x4F^VG1vp$Q_ECR<hulz_Z<BJX7#JA-go4uj0r|rC=U-SF`uq9y
z!A-o55fNff?$^$pe_0tc))6s(w3RnH5X3Or*&iJV93A`|9SUY(V8Ao_ee!?V8wXIW
z;V@zUS1x7|Hzn{Oi7UA4u%QDyIwCd^RGc1A0#~OIF5uR5H+U2!K@dF7q%*2%G$2M(
z#AwzSEh8943(L`3qhYlA9BmSewv8A@n*^gxg3%_yXp?|pv`H}9Bw!eA640?pptn7t
sn}LDZ5p*uV=-9+)Lu9leLS92e=*x14d-3MCJV0Zlp00i_>zopr05%r%N&o-=

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1179-2556.png b/assets/icons/apple-splash-1179-2556.png
new file mode 100644
index 0000000000000000000000000000000000000000..5f90799a900db4524bee7e853a59e7aa7c9e28b3
GIT binary patch
literal 17783
zcmeAS@N?(olHy`uVBq!ia0y~yV42Op!1;%Rje&u|_2L721_lPk;vjb?hIQv;UNSH!
zFnGE+hE&XXbHkDMfC9q-hXemr7BO<p?o?AbJ-2C}_4&Gcj0_A642`AMAgbZN!E6wH
zVumk>N;#tjqKwjnL6qcXP6h^shMt=&3=9ko$8wk$7#I|i%|QAm7>;Ti4U*AR!Z4a~
zMhk_}a*~08VYKRCU|<-n7DrnOqm3s9hS6$qw5`lAS}l%Ni=(~8(GK+Jn8IkoaC8WX
zfnl^^INC5A9Yked7!nP`1IO3N&b8oU4HTHms=7czWYMF5jxI;VH+B5qjvI-5Ib7_=
zB7ReBS%y&(WDs;CWT^ZGc&OYBGE}Y%87dcq43&34M%a%)M%YKSF)*AM4H5<hh0#<3
zY9fzj90rDwT9$0~<!7i!w?FriQ-9v?S@S-e?K+>~y1F(mAnK#-hDZ5%N1wAy6|FC3
z&>NWr>CD_Jh6C2;YkmDIHp)N$(vlxm<Hqnu{(XVg>c93se|`GP76Yzm1cXLf_}u=&
z&`|#E@tk=ZY|eLFDvrM_%)szNV1y<UNu(x7$~?7Wu(bdT4x`NxP@@wmct(R{7&ltM
zg#xG^VPIf5z`tXpHN|r-Gc(+~*<W16^hXO+XD~24a2|1i0PR?8d&ziU&tHq>>I{d&
zYWQuwo7yrmG{_e~2BStx#nDm`nodSQpZxY01_p*7xuC|<f%b}b*;PyjxTlZI5s5SN
zpYQwU*AH6Z_`rCi7L6ky$&U`PjSjJmwASCqsn7`L?w{BDWVu15JkO`?^NyT5<N+Qf
z*)S1Y>*b_?yFk+5w%`G`Q7KSBjfTc(+5q*MN3+9d;lRMaFj`cO)()U*VYIFsZ61Kq
z!D#bfw0SVvJYZlLEe}V_!_o3^w0+1hBq~JB)zVH346Kr%a{)$6@6pnGbg*l5=nr&+
f$7t^!(z{pdU+c)XaAI^1s7m*A^>bP0l+XkK^pQ^R

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1242-2208.png b/assets/icons/apple-splash-1242-2208.png
new file mode 100644
index 0000000000000000000000000000000000000000..2e56b173c742033861397e73a5d43d13fa89bb5f
GIT binary patch
literal 15967
zcmeAS@N?(olHy`uVBq!ia0y~yV7bM>z_EaXje&vT<s|=^3=9m6#X;^)4C~IxykuZd
zVDNNt45^s&=7uA0g8{>V1BU-6cd)4#2xdDuy%YIz_w~-})(i{`3=PVkUxR3dAIyt+
zK@280X%NNIV+Nu)ByvHNfWa*grI4_Nk%581;Xnp6NNdAIkmU@FqZ&s8hk=1%H06xu
z4p2rIEjmVvM^HK#tvg2RM^HK#Z9I%NkU;5RwDmaJv>xp~FfcHTHjqXeNT337w1G6*
zKmw(M(FW3J0|}H4MjJ?@4W!Wq5;+Z|8*gr1%x!iMadmWE#F(|f<<$b0tOYGg8h@x;
zZRj=%J}4@-t@KMn!v)BA^+L!%w-aQby9F}P%>fzc7Jv+ND?o<w9H0%AQH`MTNr3dg
z(OJySa3}HZw~NAcrE`zJ;FLf6>r9&Y=X5UrnLmFgUn?(pmd@rs>#Hp54{h<$2ml2#
zBQ$lMe!<94zT;f-mzMaox9zG9xo@^JW|;T%dxQGfU-wT`GyIv_J(_UAvrv%C*_ir;
zp}~3$D5zdnq}e>R>c1$=!0<p!Z!|-Lk`>cvX$P)aM@#h4QUj^ffR(mH<c<VMTZRXG
z*DHJGF)%P3uz$R02(%(<(k{9(Fv#(O)&f9^NfJCvc2<Fe)az~i^B8IhK(#&tLjm__
z^^Vf`JpF?4KsBghXZqk|TwfmZ+^~v?fkFS-P)JquOG#uW!BLGPr<e!zF&G#=M{KYC
z!t!t8Ya2Iz29KSi9XC*`j|1AP{juxZ<LWOQAfXED(UKUYBqpNjA1zHrPH6(oF{BT5
zjA|UsRtyXbWDJsxrkv4~GjvkUhs%Ak+@O{O&!_G4j+{FLYE>jCfJfOzDTdJ?7!3l3
z(I6NN0*28b7!3kYH91-%j24HZWx;4!Fj^Lj_7O(ANu#ylK-Y!>5%cWAdKyKeKn0Sg
LtDnm{r-UW|@a2%`

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1242-2688.png b/assets/icons/apple-splash-1242-2688.png
new file mode 100644
index 0000000000000000000000000000000000000000..45c72d46c48e015edf310793b4ba6d92755a33fb
GIT binary patch
literal 19355
zcmeAS@N?(olHy`uVBq!ia0y~yV7bM>z}3LP#=yW(xiGqofq{XsILO_JVcj{ImkbOF
z44y8IAr*7p+;HS=Fkm=v!0`X%4mK47!E7g|cOqZzzTSD=nt_3Vp+WicYY@%wgLyG8
zh{5D04Wd|j%s>=}L@tODFt`Px6cV;DGB7YW9LQh>X>GU&vYdf&RO4viFfcHTrkv5-
z0m=xYMaO9I2ucT|b;oG^2ucT|jfc?&5-1&vwjM{D)}!4A1_p-F2GVE)2~;4CHjqXe
zNT75u+CUm@Ac4}sXai}qfi&7cBBz0L<ISy$xy=qDu8yvY7_%0*yjtLrwV-85;}3PK
z4c$h;2SvrUm40bxxBwZiUI-cJc7hCaw?GEEIUobw0+4}j1;|jI1GJ$ssu5H^35*8L
zXv$$=U{Dy%9iv4DXdZC1cpR-ez!Sm4q<+*{%+7Ep@$R>a!gZx{kH6rQKl|%Un)&B+
zF8`T7e<xonFL{>E=0EGJEb9+#@gdP%xO)0PBy24Js0QbtM=R&_3r2?W9p{q2w8XEy
zZC7>3eY2f0!@Q^88`RJKx__dY;m_3W(QJd1Z5mU*Ff>@N0R`3TiZq+2R{a-+85kaj
z>5Vo;L1~t0w4Dy_6pmK5qooE?sliBmFE&Bamf->4^~#=k3=9kh>>n>0?ZqJVVj!XO
zdRzZIhMEFUt<S(vz&$jocTn+2uPXgOHK;OY`ru?-Umo+^u!@O+LI2rkN&-c}Xn%OL
ziYB^>2K6x*7(PdAul>UEZ{lkkH-83?ouk8ypnL=?%6{xR_qh5C2S}*GdbA`SWP{cp
z4)@7&gW`tg)Ao5s&K&~9Q-T7xuQEz8j0VAI5HO4e!DtXLj0VAI5P+)5(Hdd2I2<ht
zM$3ZHvS752FxpKTtqn(O!_nGsAZkOm*v)zj4BWP$a{)%nq0w?^v>X~OhX$e?qP*-`
zA!{uLYE4T#$+zvC+bYPwz`zXINi<50hQw%M7|jo$(qXhL7%dB^ToyDlNZfT2`|F-R
Q36#J*UHx3vIVCg!0NswP?EnA(

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1284-2778.png b/assets/icons/apple-splash-1284-2778.png
new file mode 100644
index 0000000000000000000000000000000000000000..5d26b9d6a162b3aa78603bab754eabf5fa99b02b
GIT binary patch
literal 20320
zcmeAS@N?(olHy`uVBq!ia0y~yU}a%o;JU@Z#=yW3@<>3Jfq{XsILO_JVcj{ImkbOF
z44y8IAr*7p+%RN3puliogW-P<7iOUu-GwHB7j`GFuask8U|>*qxK|cLGyFL&z{0@5
z&>-L}0OC9GID#k+Ll#Dmsw1P43<{%xz%UvJquF7!OkiMO7!8EcKp3qe85l;}2@Iow
zFxp}qZ8neg9Y(tcquqni-tuV6cy!!kv{5+PC>$L|934v?UIWSv{jt_oxe{E9G&~%5
zSFlZ8VHL6{D}d9Jk@0^^%KYLqtsN&$n6<NV2tpbGF3=%!M@a981u~vKD#^ew8bYA4
zv(c0=ni59K1O}(kf{|e~5I}vV(Ubt{HBdP_<R5R}4O<H!FbtX^DYNAm3^MJ{z2wxl
z{cdXeaOu_g_pKxT8n=0_u0Ou!-@kSL{v_Ob_1@q>evu*vC{-yoDS)UJjwTQ#pv1w%
zz`)?pp)isqH~I22%=mKW`j?jJ-yYAI_u<m3^ZX54f669K`XA{qlY6vQB2XZ2d&$T!
z860xgZ0whT(jg-Q!@a)IfE%sJMmu{A!=aiPlAZSnxm64YmOS6LOr3#&;lTXS3J_;S
z53T^W$UpzW@_>Eb?^*L07#Q-8w~jUx7_hgNPMFy;{J0OQ@EHCiudY9C^WD^zk%3`f
z;b;?Uq&Fo;+tUmTH11S@avuXj#;yM1DyGEqwZ8rg5|5om+Zj088BZSXTz~$hAgHr<
z;C=zt0_xMzK3Q=0kK@yJxhID_z+J)v9gy*QL5LP*NC>;NfGdR_4sf4HLJ-`EG*AMM
z@F%#8Y6J!IXyA;d98fwK%^jmf2Phqk7LTKK2WXefX#F_acmNHykG8BvTaVzCK%-6T
z(e4ANfiT*)8tp%V(!prwn!W=Fhh7G)WnkcE0-X!Mz%bf88*QGAHqRIs7)HmhM#rx}
z)zR=9zsfq!2WogTu>6eXFG>V4N5^JH$7V*yW*8V4M%$kBZF`QkH%F7)=zQtuWHM-F
d+JMirGtN8YbZUF@+4rDkpQo#z%Q~loCIFE(<Hi60

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1290-2796.png b/assets/icons/apple-splash-1290-2796.png
new file mode 100644
index 0000000000000000000000000000000000000000..cee06dbbb8b2de6722bfbc0d2f5f7e9201eac4fa
GIT binary patch
literal 19153
zcmeAS@N?(olHy`uVBq!ia0y~yVC7<9;CjQs#=yWZgX4%E0|NtNage(c!@6@aFBupV
z7(87ZLn`LHxnan7K!M@F2BZHTF3du0JbXf|d#%6Cs%KzeU^sAj-)%-Pqt;CkL??(a
zfhY)PLLdi-lL8TwYz1)~My0?ZG#VPCX@h}*VKh6877n0dakQu$tsOw=V6?6THzP)~
z!)SIG%?_i@1BTJ^aI`!G6$GQ*rP1!vXm^QWv^*RgJ{lc9Vqjpv)<HOsc)c$xg>{ie
z*E@cm1&p099F(Lse31EIJo8S{y(lifRm{F+S_=h0)rp4&3y2cp0u5d^v^aq{3Zqh^
zp~1kwFq$?-vjeC+7%dz|i%JFthSAz#w5|jd2cyk{q19MgaBCSm!<q#9b1ym9&-*=V
z-iNHOpMN)9txulut@ZnvSLZ*9pA%TN_MZ&%A2V~X&ln)>KLIdjB<A|8*>VgUnx5}l
zroQJ^e{t2J)mP8+-*&vR9JUsq;p<QRMAm&f8~)Fg1`kg+1b_!6IKUhSC&)+@L`(%T
zt;abMqylm;Gc$y3kbnNA#lN`Dr}|xX6%zwP&Aib-0+pL1H(g8^d0Ao9%aj**kmBUS
zo$FsfV-ylkAtPQ2kOFnIkp05)fE`qyGcYjBe?A&EpduEU>q2gSVR-QVc7Jgd(}&}=
z4{bj~l2FBH3L2>`6KKLfG{z3tm%UxU=AgjQlrTAgf!D)@UC95iCxhhgl|csY&oMAC
zAe4e;TSjbYgAs6`&?xoeXJBC1@h-iJY0GtMTgHSb?%;$q;)`b4>b>{BfV%<-(?){?
zsYD*lP2dcIH8+ixE#Qf~5z#{)O#qa43r53mGz>vi%V?c4TBm^0!Dz(+ZgGxghtcdX
znjIJzMw<tt%>z(A7%dM+%R^8)7;epj1NZx6!4*Eot@%|G4{-=Vvil;)8YRf&NGD|B
z8f4eG3S=JN1(F<~Ygk4#Q4kP?Sv4LE3|z&aa{)$!e*y&|IU0JSq1P~4GL06|3Zr$^
oXr=8j+Iksn#*H=!@H7doI!$qU7xm-67pQ0B>FVdQ&MBb@0OW#ikN^Mx

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1334-750.png b/assets/icons/apple-splash-1334-750.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb37712491698fdc9d653d7e538d3a16259daeef
GIT binary patch
literal 5868
zcmeAS@N?(olHy`uVBq!ia0y~yU^Qc4V0y>F#=yWZ<$>oH1_lPk;vjb?hIQv;UNSI<
zE%S7745^s&_SV7N#||Q_j<*w-dKwjt`Zy;V8nFD{R<3I!XBr`T;DO_Wl8is+e@oq$
zX8-}k_|@znnqiOE4HgiisKpmVDY%bv85kHwLt`{CFpTDf(UM`bC>TohLVC0<1H-%w
z`*WH3_pi_R_U+8w&1e6_L?nOvelfo@{O5eehW$^Igh55y2|+VP1_p)(nZ&`&y&1;O
z(4f9+z2V!pe=U~pwJkRPQ2i(D`iKAA4E3jvs)0N*K{<yBL|Yyjl-%2|7#Tje{4QKK
z??e2m-LKzeubIcdz>t4@NH~6Q2I;7)7#J7^EZJ{fE62d#UlO1Em4$(!!9;vEDDye=
zZQumaPdEl8H)l0F!vW#9$9GmSDSkH%^Jida*#3CPm4oG5<e$Id{BZuw`^UAtE8jCS
z9N^I#3WfNPsA-0<Bj@CPWnf@<P!3Aphm`MLkFaHAkUKh*Dwxle@sF#&a)3&ZhVUJu
z9q`c(_~`fpC^L+9z(+gaqaE;})B(padR)h_@r2Q*&Q`Yzplt2w>gTe~DWM4f*?S7L

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1488-2266.png b/assets/icons/apple-splash-1488-2266.png
new file mode 100644
index 0000000000000000000000000000000000000000..657fcb31e56d3c00e846ffc45d9bea7062c82fd7
GIT binary patch
literal 18170
zcmeAS@N?(olHy`uVBq!ia0y~yV7<V=z;TO%je&t-YP+5}0|NtNage(c!@6@aFBupV
z7(87ZLn`LHxv^2OL4o0bLrT3{37h+bS-ZbP{qdh*b-j3fIRhB9|11U541Xpz@_|_g
z9oRv1L&5@P5ba=afe}P2NW1`13<5kQV48!?3QV&w%Yx~qQSA()LB}wfY#10uvkU{n
zXmP<XT2wMHFpO3c3=E@HBm=`}^MGNrdB8B*JYX1Y9)P+Fqs@cS<^d=jj5ZHOn+KqD
zFxosAZ5}X;HV;5qVRZC>E~5uIWp8h6OH}A;TEJ{}Kq_R>tAx%qjk*?FntNH8?x&v%
z`A{&y@6aPqnpA)egbF|hLOGxVp)AmWP$uX=C?j+rv;i`X>IfZ29o5d@FdB3W3Zuz}
zL0~k?FmR0I;^Ouf28MSV_usoLY*#k-_?MRcH8syxM}6JQ<iGLN-W{LrZhAHIu<)9i
z?F=6dbB~s;bV@2Wma#Jw^uM-Qre2d%zjwKMP0CYa_6E;7=gOwg|BvfxfA%r`dB!?g
z$+6J3f`>%I->>uLeXuw;M}5b+<SHfxh657%qs@-dx|4yNy7S<|kTBR<08r0jG#JSW
z#?hb~?eLJ>a?QES%&_BlsoZ5@P%8Q-I$D_1t0R;+TaMv??YHaIRZJiFW1kz^GBPkE
z^oWlpWpa};k^NUtxPQ3*X8rdsEDiR_Ppv;%^}pm~U^wt-&**qa!{}Jh=vWW~1HFpC
zp*I5gBkek$7efn^0+&+60UkG#cEPg=EV>{1PKnR)-0=K369WSwKRvq$TDAIPdg@&_
z|Ay;xkK0u-G4OvFEqZ8O^jxldbNz)NsFB0)!BlRvmZfnmODG$R4z!N!f!2{c$UN$I
z1{x1lj!x%|HsKgX$I?Kp9Xid?jOMt}95<TdKpAedUB|#MTE8<eFf@&>vm!VeGTIFs
zEiOij3vjhD{ECY^Z*Me$yw;#l|C-fJqlbYZfdjH=N`eWp6txXH?x}czv1qku2m=G#
z9MHJ{AWe9bj!H8yU<tv|U>OY-qzpBh97dDFXmS7_4MU~6gz?NGyHn9!A>E*?<>~6@
Jvd$@?2>_2Wu@3+M

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1536-2048.png b/assets/icons/apple-splash-1536-2048.png
new file mode 100644
index 0000000000000000000000000000000000000000..c313eec3775251e5d3334bcdf6937cf53be6848e
GIT binary patch
literal 17136
zcmeAS@N?(olHy`uVBq!ia0y~yU}Iol;9%eYQ4cQuFk@g~U@Q)DcVbv~PUa;8g93x6
zi(^Q|oHsWec@HQs95`V3-@}DjXhx^1%GtS1|E#~wdd|oI0zvm~Ll_7C^MLpa3>-!f
zTHyqQZct!`Fq%dcfCFMQ9KgZAFd7b{;lRMaFj_u9lEG*=jD`a!1V-ykP$)1kjE2K#
zIDkT6v^@z5h0%8PXmb&g4o1UaG#o~o&7;kO(P0*FIWXEh00+b9u-oY9A~+$?sd@0@
z#&+h*UJEt47O~_UkkYwmrE^hANAdC@gZfFQZ?6kI=xC?kc$O73#w-MO7K4HZgl<rP
zj2AOBu|NbkMiqbqVo-%c#%wu;13iB&maEr1*}48Dr+nn!-|O?f-sj(Q^VR$3uil@3
zbzlBo&e!kk4fT(iz|J3y&jC!=km!28Z<%^civ2lAbTJ?3`t$ec*+2hzKKSWDqG&V^
z4q!NJd&$Uf=0<;U)uGit|LwV19DiAufq^0JAgGXJU|?Y3gt$#W1wuPafY1z%(EK&3
z01_ah;V>Ewpb!|%7obpJpk?{6Pg_O`wiaNtI06UvpeU9vnAtKkNS?3t^#{4>0sBr6
z1)516z$VB@Z{FWp#?D}n3~GEG@V5PKYRkyL@IW*M5;21!(Tvm#oO_v>A#AJs^Dit7
zs%!t%*+JuG{SHXnjP^%I!vPcmqkSV#C@_qU(+q~;C{Sg>z;GZR)LmriseG4R#l*lo
zTA6@T=zw;RYi+-OwY7!x$bak~jgf(m5wu~G`Wu^>B|+1pj{mNG|KX*a0Bx5ZfHr>`
z6rpWoXGkP6v_XfVd7uVKK=Z!=bR1^X00xH9Fc=L3P);9B2czj=G#!9KU^E?oLSeK#
z7)=MG=>QZ0qv-$?3Zv!0XgU~82cQrbO$VS*7%dM*)4^yu0ENKNPY2cd`3?*WOp`$8
z0x%4H?~Hl@oGb@x3B5I)9lXDx`On(-AE&x8Ffia8ujR_>v=uW-*$E!M^>p=fS?83{
F1OVxYgG>Mb

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1620-2160.png b/assets/icons/apple-splash-1620-2160.png
new file mode 100644
index 0000000000000000000000000000000000000000..7e08f6d724ade8c556a3c48c08137261c8fde802
GIT binary patch
literal 18407
zcmeAS@N?(olHy`uVBq!ia0y~yU<+Yj;3(i=V_;y2=DB>7fq{XsILO_JVcj{ImkbOF
z44y8IAr*7p+%yzyFkm=vAn5<p4mOnl*1bIjf3#1`d%g3zH3Jw}%!+3RGZ_BNUC0Dx
z3Gj%5>4t<AV48u&nH9`XkkA6t3<m=k!3>Tzkc$`?91KFhe1@h`BSyo5fnhXVFpTCA
z28Pk{f?>4mWMCMrM;I7J>r{r(#=&Sq3Dim)Z5)g?4j4uo2cWDl+OZmK959SF4nSF9
zbmU-k6op}Q<N%ZvMn~5g&hC?)W5(kWD00?`cLm$j6;>gOvI4kos&{8M9p;~0tW{y~
z?M8v50ta+F(h)Wu*#sSr6o8FKE`SbcvOtG46<|Y}j?f{^Q6m^wM#G|EG+i(VjOG!B
zrU5B0Zhv85xVBOL`InaMmG82v4n?miQPYlm`k8f4+SJ_@OLu2aHD-+4eCaRi0UiC(
zf{kO47xLR)GBT`rymS3a&iu{bIE{Ge!_e^l&o$@hr~CgNZ+~xdz+^NU8HPkOCflET
z$yxKz=Yi?@T3>$#28IXypPfcq4x_c@kf<${z4k@G)&hV!7NgB%hS4qq!)SY-fngZ8
z_j4{YGejIOj=wAn%JL7wD_~1<Mw|Bo)VwFyUftl!&yXPdyU@>{;m5@1`<AIQFfe>L
zUO5_Z4uf<Y2h_y>f46SVWnqSYdqdwng2tK7Y3|Wsrh(}~6U<}7y~$d$DW6@H!HH48
zMNlV!O?lSgj<g?wCWjiP>wk)C+RM*9TI&z%T7QrZW50d_S}1(L`gYx!c?|Q-*A;(b
zVW>L<TTVPk9X;a95(b7u$?KKp<v?-A!0;heZgiSubdF>=_nAfuqS5BTX!8IxUNAZd
z$S_z(35I(QhJj&pe0p?znqhQ&nqjmm8m)>zAuw7MF)%O;)-mAG=@eQulnz{;C(8j!
z{~VvT%Oy5m0<+toOFSi@%P$f*phNA7&=pam3P3@|z<?thWcO_<W?*3N1f2`O&@dWk
z;J_LUhtW&~N(iHc31m&%XgG|911LX?R<e+(4;qGp+glskZ=rV6<Urx=>FVdQ&MBb@
E0GNe9ZU6uP

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1640-2360.png b/assets/icons/apple-splash-1640-2360.png
new file mode 100644
index 0000000000000000000000000000000000000000..b400cd308b32ad1d04bb18a3348f3e3a9d1b4270
GIT binary patch
literal 20641
zcmeAS@N?(olHy`uVBq!ia0y~yV9Q`&;I!aiV_;y&*>7}=fq{XsILO_JVcj{ImkbOF
z44y8IAr*7p+%#l7puljz;J|;CMU0%YyNh%JFYN#P=D92b7^GZ#3#J(w_8VqESV?TW
zV1~n)1&m-uholLZW-x39*~Y-2kahtgaD+z+%xIY5$P8u(7>^n<8YZLZWHj$Ej1~n9
zqs8NBmBBDt6pR)H45LK>!)Q@3S`;vh76qe40mEofz%W`Aj1~n9qea1JQNS=-6fg{}
zqM+u@?ZB0X9YkC&&X?$D^XTdG=xK|n;F8-S@NLTJC@wx9>!mqt9h|Ts(?;l!sTyp^
zlm#|q>Hr-w6^0F&GC{{(ePH9RqlP4nhRKZ4bTXQEM#~e1(W0PXv?x#*u0_GNtIP~D
za_!Gu6^{FS=lUzo^|MOMCj0!J!#IC-nZEz7^ULP)e%R?*F3GU}IQM7+VkkALZin$R
zBy4-WFU-H<Y~7sI>U**--DF^x|M55f{h43n4}6z@@Vx>ydrs}9;4d$~c-UG1@cg{P
zXxmbNx`BNA6(hr$ZSv1wasD}c^FaB$-%+-V3=9p9dqx}a)D7s-p1^4JKWwZ2(Ln*j
zp;V`jmTX7B4c50i*IyL|H7p)Hr&${YWIV%YyM=*f?G}dh74NdYvM?|(uzhSA_M?^m
zZftLsVq;Y3YRYV4G*J+g^>ASpx>a3WKl@NmQ~j;er<uSBZkQEE8&j(o81`Swoj;G^
zz;x@o&tBUsQ)ggcu$jj{+L;`!czj0tDx)>}k<m6NW}!drC1?wTL-O5kFF8Miulqb>
z9>am&pQG7jNM@IByUsnfwT0C04?Jr|CuB$Gmq#a+MkkdRMn{zxM(3AD=a(5qi-OUj
zfMK*KU>Ge5MvDT5VOJFNRIT~Mz#!lZIu~FdSJ8aPJm1F(8e?Vq8GSw}JQFnV%wP;%
z0bw8vT{k-_016_8(eMBV!)W?|tQ8+k4x`C|fnhW^jOGRghS9oVw5b3p4M$r_pimgi
v4WqdMlnzF711J<mbHiwE0Hp((<c7@*KTGY~ia5h`KvsCV`njxgN@xNAC-Fc4

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1668-2224.png b/assets/icons/apple-splash-1668-2224.png
new file mode 100644
index 0000000000000000000000000000000000000000..f01df0b8c790be0890a4044abbe50d231617cbd8
GIT binary patch
literal 19755
zcmeAS@N?(olHy`uVBq!ia0y~yU~6Gu;Ml;y#=yWJ`qjyTfq{XsILO_JVcj{ImkbOF
z44y8IAr*7p+;rqUpulk8fZ=}+7iOUuU9C%Y24AQ@9{1UX0Sr?1Zf6EF7=BDwWC61T
z(m5Exj3bgxV49(@O#sYrm@}$`fq`K(TtKN|G%<ieVKgy-Lt!*AfP-PQWB>)jXkq|`
z!f43=4u#Rg01k%Hk^vM9qlp0&3Zo?hI21+`12`B)O9oIdj3x$9D2$d2;7}M%4B%iG
zEg3+;Fq#-Zp)gu9fJ0%}C58jX_sPz&;Al-0xqG9*G-6R{#3Iuhhu&<GaeDN@_<FI{
zj|V4}AAVwZ#G(lHe}jc12biJYC%^<|bO^VA=}{%%U>FS-a4?Lf7f>*aCI(O_jFt@G
zP#6q}VMl5e1H<{PdB4B3M8`fiw0#)1^|R)x+TsJxv&zff)~%k)|6%SeS@r|}AGX3~
z+!Uaba_X>2IZoK5T+^r$1_psa87{h)nHeh9y|!7Vekbehx0jsTSIy;TD3IST{Gj-s
zIfKDb?$O$ufnhLYNXnX1(_S(%*j(TB_OkGg*3XUaW1bt@f@aR+_6(A?nf<E;uVHHe
z7=}ZDkG6tGqj9vq!@$5W+7AS`=|(%hpkNqki2>3IE}eV)3%G4t!J<DpgfWD(blyxk
zh6BZGZ`;{2J~%(<+CZZfCOH)*IE%iI-d<b9#E`%0?#=6!KK=|03=g>DM!TU53=D;|
z?0bJWyiay20|$$Ph|7is$({^8<yjAvGPo>j&Z*q^f1HWNwu9EUjt(&}FfcgG86A2V
zO$@Zm=tPF@+Rf~sR^I(hZ;!v>{1ExrD&3#q!E&3?Hq%gUGf7^rJTC_tEMj0dP(2!#
zqg~q3`CL#TH#%<#3WcFRGCn#`JKFCgr{780e9UO78%=eiscy6_HQJT}wIW8_QlL;6
zZA*bdf#K15O<_w02A;E^a{)%{N!r$v^S-@t03FPbFk$~!+kKZHD|TlHLl<rpJ3#~z
z{Gem$XE>qDfh?iND;TIl2X~&eK-PF2m;+r=GHM9JXqYsNrjyaU!!TMDj1~n9qeTJ3
lXi+d)6fley1tYO2;9h^luI%KUv-d$=98Xt2mvv4FO#qT}pUeON

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1668-2388.png b/assets/icons/apple-splash-1668-2388.png
new file mode 100644
index 0000000000000000000000000000000000000000..41f4ca6780f387ab26cb46b3839cfb4423c5b609
GIT binary patch
literal 21173
zcmeAS@N?(olHy`uVBq!ia0y~yU~6Gu;0)nlV_;yg3m1@JU|?V@4sv&5Sa(k5B?E&3
zgQtsQNX48tHywEoC@>s2VEEs|g;{7uSL>3U!58X}$9=Y80E3jh+nK=(h9A=vS->oT
zbPh%^<A|gam}V$!696+D=8P&~U|<*x7f@;#O$?w=7)=b|P#8@N;9wXn89>1>nixQ#
zFj_KzLt!*AfP-PQWB>)jXkq|`!f43=4u#Rg01k%Hk^vM9qlp0&3Zo?hI21+`12`B)
zO9oIdj3x$9D2$d2;7}NLiQ&NUeX@5fI9vh+_Do<f6i_M@P%@lw=w8j2gU5c|TBg;c
z&MS2@i`QX}0(5Lv9X2-02^*Vjf{o3NDglknj)n^Z1H))~0hbm>MiawmVi+wkL3yEY
zw3=XGU=SEh3{*@Er@t^T%*(#}?Iq{-UFVXk4z1049vt%fS;P6O@7~<{8)hy4z<R4S
zU&H^y+=?Ju85%4cIlv4BKLI8%qeHj_Ofx)U8CAl-K<#h|aa}qCwibXoAsxMpo#8{w
z^-3TA9and~y)2v;YAw(3z^+dH!1F)(3<+K0qpi~6(E8H7%*;@+uJrbD^$%^I8{fw~
zH?##U35nY?nr|5xMhh!&nN97&iaG_<s3{B#qZRFF>teK&qEl0IM`{%V!}-#=$G?C_
z=qgzBN1L=mxCF|ZDaUZ2c<pUFTgC_J>pstz2deAz<7hkTdO-enS->F!2A9AIPCPEo
zDsJv7Zq6!O#F&=qRL%|j;9p&tGdchaiU?W_=-n~0WoY<)EqDGrh6BD^XV*e=^S%ep
zbSgzgd&Z#X9UTq;g~I4C2`Cg8MiT=l7=~eD0JoSJ7(VE{-sbP$a2zyr$iz^8s(o}G
za|jPm?_Kw~!oMGsVi_17l-JO<y)-(#2@YslwT4F9nxNnv4P8(ujAk`ZC@_pB22e1J
zCI(O_j3x$fD2yfsa4?LP44_~bO$?w=7|bO@q=-Qx1A|aF=v;u|FhxDcm-Zc5ZfiXO
zG-odHB)_(Qy$NJS>RAh<lY3webRvC*Fm%C0u@hvZF~JYobvnZdT@hmmJ#)c89Xhcv
zYDmLqn2e?qhS9vkFj^Fh76lBWMZsuMz%W`AFpL%jqeTJ3Xi+d)6fley1q`D_!Dvyy
cK)<3uFKW5{KJNbie?h}wp00i_>zopr07EzoZ~y=R

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-1792-828.png b/assets/icons/apple-splash-1792-828.png
new file mode 100644
index 0000000000000000000000000000000000000000..2d7e31267eded3790d91f9c7cd70aaefa9b0e48a
GIT binary patch
literal 7886
zcmeAS@N?(olHy`uVBq!ia0y~yU}s=pV7B34V_;wic(COb0|NtNage(c!@6@aFBur*
zIy_w*Ln`LHxqUGAu>pgtWBNk2kY=wCS)D-B6)j7eY&i@(o~JHjtdrbUQ}N(>ZSQ+=
z1~8cLA^$6w!NBmKmc;?W<Pc<F1hW)e7+AoJ1_4F^FoVHqRMBV<jHUvH(I6NN0*28b
z7!3kYwK!TMj24H;Wx>rbeg=ky<=-C9DLPl%tNHv))x5~G+PoUQ{ef9~t}`(F$h|W%
z8dei>L9NS*SNo1lDF%nen&*smv&#=Y|5VSwa3KFNn*u2NFfg=mG(Z>vN(@Y3mO}>v
z2bjU2$TZ{?<*a6BU^o!`yKvpS4`ExMYwldXu?pl(n`a{=0ETz;j{0tx=U;dPZ(1wI
zz`)>t_j-gasE7O@c_-uWDW%}P#8L*|e#OYZ@Zn0`oYm?d-0wiWFIUVwGDZcqU1erq
zcyXh@_$y1r>d5;qe@g|QV`N}>kY6xD0$_B|XIM7zA<Z*}2VZZ2lJ>vH`;NWhWMKHv
zAw8^HWAJkBQ)&F;>aWlO{DCdq+vI;T&-0~#8o6vgqwhb~?gcR!7!q8dP2d9^uug&?
ztd>z`f)==LEYL=A4+nJ6RzeUOX$DHr(c4jjM#Bh{q(;-xXchsbgND&!1QZMm45KCF
jXe|Ot38NJx)hkGrUERig$}jUvLE-D^>gTe~DWM4fbBHpL

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2048-1536.png b/assets/icons/apple-splash-2048-1536.png
new file mode 100644
index 0000000000000000000000000000000000000000..a53ba1c6cf49be2e67de301f6eec55585a6a4d0b
GIT binary patch
literal 16264
zcmeAS@N?(olHy`uVBq!ia0y~y;9y{2U}NB5V_;x-G-E|B0|NtNage(c!@6@aFBupV
z7(87ZLn`LHxpR?|$&tswQB-;ZoA;JJ?T=YIgto9*7Mv_z)+8{k#`as)o7=yc7$Bgh
zEZP>rVqhqk2V*fXvA~!D3NTg!10#&d0&)tNqu>ChKm;SqOa=}C5Fdmc8bBl%j~dA^
z8kP*BiHLz=H1{x!78?u<qvhpjMZv%@T0=67wl)|>n+6P{O#_C}rU3)PXwv}HuN&=3
zjrJi&n+6P{O#_C}rUApSX&QXL%FMv<A-ey0_E(POGQYP~wFEDFU%%_+d-i`fzx=lR
z`_JdT{h!S*zq2zmy#E0oY#SXoBeivG_vVfvZwrHf>p?c=3<o8v2_0-YbDFdDj<+4}
zX_Dt!P!TzlMkJ@bWMp8t^V+KaC8vGl_S&jL{`3C*VSLb8Q(tNP|2zZ3`$zEB!sy7-
zaBe<s@Zo1*co6q`o4<dB>G}EQyU!(8fui1F7B@IOkJc5SU>F@?9_>bsb|XPKVRVF<
zVRVFfbc7j{6$Wz~`hbxw14Bb~>~lj~aGSruz5q;<<?iTC8w&;oc{9*jfYE^@P!JB0
zfux9K><kPA>q~DhS7*>KoqPNXXaz=ti8#m$AUrx_I-F-r8&azn7!F)sbKB0A@xjD-
z|NiZPw(Spu>w#h)ghyuzM~4GPyLh0SFxtf%?cxo|F5c-cpybQ&V>zgrKQQC9%`$Zc
zh63e*ujCu}t;++L7&sUl1%4;H7)v-h{}7lqlSMqia&!&`6lJtsx!JJsy3KxfkUb!r
zZv!Ghc(leJt?@@|d{9mpt?@@|{2^K6gXU*I33zlMa&#aPlnw^-K;-CNoza!Zqsxtk
z&vK*Dx@U-t{f};!9PR0j_H;*kx}XN)Xit~gJ>5HHZyi8;<`X9D|7yGM5qRr*0({$g
d10#I0osB70+fvM2T|gET5uUDoF6*2UngEbj95Vm_

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2048-2732.png b/assets/icons/apple-splash-2048-2732.png
new file mode 100644
index 0000000000000000000000000000000000000000..75dcd5f3ae0de1f09db1e13167367bab02147c34
GIT binary patch
literal 28653
zcmeAS@N?(olHy`uVBq!ia0y~y;9y{2;9A4M#=yYf{Y<!rfq{XsILO_JVcj{ImkbOF
z44y8IAr*7p+;S9bFkm>a!SMg&4mK47!Rmr9Lad?}Uhlka%>V%n@w4OEAxs8_=R7c$
zKmv@_z`zV+vPi&K3I|{;21bw@z&s8EFvY;Y;LyMbV=|2zIU1G>qlt)tVKnzJj20UV
zqva(7!)Qe@T0=50FpM@07)F~0qfG;b(WU_d!)Vh0)P)=EN{u!RMw<qsO#{&2$!ODH
zv}rKfGyvrUETaZD-rRBIWi}LGIq1(J)8@d_*DS%aus|ni<#MirUfZtCpT@|*!~)U_
z!U75)5`-HV;Ny}kpb=D%7=wZXm;w=uOdt}3IRro?2s<=@NH88Xl3_F~8AcNk1H)+U
z87($I9hTAZa<rmg7_A{0Mq3*UqfG;bLDn<~`LJypY%Kt&{W{uw9ZjQyEsc(*OHc@m
zrpwWE2}%c}-Kx=U70tU<6?5en7=G-3{nyg=P~iUewN)*Pubr>I`|B@z+1mZ}uYcG7
z{nHrx`nNoT*iZOq*=W;Yuolr3H+C)-;#jEBwa8w~pjq&2qKk1vqE}Dcjr_GN>@AY5
zXIVi7%ZP}-8_U=k817fU%dR@K;;+SW^`5A|KbaZU9Q!T5=JfaV_w5<3J%*20jFz;c
zB`wWMS^{$j8+`d081`+KfBuDqt@7W7b<g)LQwL?%4@%-73WP`JCKwn-CuJB$2N_2P
z89}QeMyE7K=N|{zAS0-j8WF8a0+spb8iUb!@xeVW-jG|x!0=%&td+^YQ2%VSJ2cu4
z95nqvr0x&{o6UDqThQoJgZNHR4Fkrb9f8q~0BCP9I5B{T0cdyRTxMoSI8-<1vM|Gg
z;?@8E+d|XngHSz?i$HjEImBRD4)G!RIiH6B*CK^3rHBJOZYIaw?(j%EI-mH@ulHPK
z2E+8mk+U51!`r(vk=Fu@_M=AoQJ~f3qpP4thge64SQ!{dXjwHp{{pJ!86H@z|DImO
zWbot-sHwVRCj1nY(b3w`(b|C?t$k4V?U!FaIGr*uF#LNA>Pvxn1JGt3tz$;(n9(|h
zq&jBgbWA{n(r9O7v@<f=83E;l(TZZUq8P0xKsjM_6qSNe)Cb4c$({g(BG0Go`;Ldp
zfLs5}@Yy~dc#GTsK5cyfvCVx{At>lTcr<uGp#a9Ci2@u93=9mTi2@c945Ntx78Ik2
z0u~aZiDI;Ng{FnkHpOU@3z`&0%SUKHFbsV8`1@gmJ_7@PGw6;0kgG<!1E5d<;n4zX
zw7>$TgV9z#!)R6*%?hJg0UQFOS%I2aVQV(K5hz%j|EzugQPds89QY;?$Q7f_AW$fP
z@MwakW`YNW=x7Qb9TWkl1BTIt)##uxG$k+?2nhH%<t2M$F93;ny85}Sb4q9e05@6~
A5&!@I

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2160-1620.png b/assets/icons/apple-splash-2160-1620.png
new file mode 100644
index 0000000000000000000000000000000000000000..760d67a888dd1719af2af0b503597299bd5bffa1
GIT binary patch
literal 17730
zcmeAS@N?(olHy`uVBq!ia0y~y;3!~VU<=`3V_;xtK9?@Sz`(#*9OUlAu<o49O9lo7
z22U5qkcv5PZW%HjP+&M<aKK*ZVnd7K;^RWBq8BR9{{!h`0D+mI>>vt+|IBS<2GI-*
z3<_xvpe%+CNedV=iH#4+Y?v{sbTkA;Ltr!nMnhmU1V%$(Gz3ONU^E0qLtr!nMnhmU
z1V%$(Gz3ONU^E0qLtq$&fSh%C&TRu8hrkQ1Vi$O%0*f<T&K?lGw8X1Rqp?9exLmlV
z!R+m$Mg|54p9750;X(o70w{~&2#XAiX~+m0dK|7wb5^o5Fnox4z3sYip7FWG^9s6W
zo=Z{NT(hqsJ8fro`mWt+mckEa&3vcNz;Lfy95K$ygcxUSfDg&4A%<i*N0pAC5V#S<
z&%p3t=dsEw!g-tXs%;;N8PDZp_%Qc=)sLGx|KG;z->+n7D1Xd4nrKEt09y!byTZ)C
zP_eG`_G`|XhdvKx70P{O0hPgOqe&)dw4@ykfzc2c4S``90_Xf5#lhABFpL&;qaiSu
zLI9~%3u=roJc$3mG~D}xqdj8sLLmATBLjoY^<8hjvNYIBJ`eN<rI-YxxX~W*Xb2!e
zK=&&H14CW<-EUP)2Ogg-67T=KLLHP)KAhwpL1Rwj<*<=BK=<L`IoSye94rn3E*lyo
zdoud^GurwW=*B!u7m8_k%D~VuI?Og20;3@?8Uo~nK(#HX@?rRKtT65?%a6U4{Z&j1
z4Bekb{G`Ze1%*8XwpI2omxIliZ7|{=ZL^Gqz-S1JhQMeDjE2By2#kinXb6mkz-S1J
zhQMeD46P8z-(98y8VN8salcBUx=R_vW?*QT2_FbB5QZ;iOM_2=9q@q<Y|r3?d)OGh
zpfo`ZzNGRD3w+hjsG*S1Wf%=pXh1MPlN4wEvA+xqEKfk^0x&Qzj3zHw_>AT*SV)W(
lF3^w|EnA@h!7wDNmdKaSEcYFKF*6_J3r|-+mvv4FO#u71l;;2d

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2208-1242.png b/assets/icons/apple-splash-2208-1242.png
new file mode 100644
index 0000000000000000000000000000000000000000..1b5012d4f0bab25c155c3e4734a7c13d4d5a58a0
GIT binary patch
literal 13787
zcmeAS@N?(olHy`uVBq!ia0y~y;8?)Gz;cU&je&t7|5wi)1_lPk;vjb?hIQv;UNSH!
zFnGE+hE&XXbLU`gvjc<cL6t>}SqogQJ9b`i;Phnvrs|(0ZW4U(dK9;v&Bt1~-|xj4
zpy1Et^Dh{oY=%3t8Caq02A2jVDAPg70j5GhZ~;`1VFE`0jOoFm0b{B#iNKgbj3DQO
zd7Y!iGBAt=0>fw^jAjRL2#lr#NHC0+38N`tG$o9-6BtGtOAHL7fdDEBMpMFQN&uyU
z(d+;Yh0*LV{IbKQ9ytaE2AlJ{_PY63ytesvQP^(Q*E4D6pYyrGXa4+Y_*!=E&od9a
zHs1?mV0bXEhH-REV(<<goCb{^9r!%wxLwtu=-1z*Y#%O;JkQgRT`6C%H1fanPId-{
z0{?xZV@V8yc0g@X>K6tEh6k0`-kMe&dTU|4u1N0p3r+?Gh7ZTj$zFEjVGR@sRS`B|
zb2i~~Heqx2=(>{m&1>eH^OhWOrdO{raDN)jpQGbi;JSKrG-Gr$1Dp^BZ*?^~J;A^*
zeCKF3`SLR`FkJh5=lT~Ga6+t`$UizY#V}~+=WZ@zXJBA>eY3x~is?i1^L@+IL9w<$
zL4I^<aq!NsLNZz0X8Gq|SRU~HeR}&NEW5=$VICdI9l%jcm+Geb3=E>3ptS&_Gxnp)
z78n>9MgxI{fdDB985s7xJ#J~+SpQ__`j?yx3<sQQM%T*>-h_AZcyavv%gUgJ1_)Qg
z+l?-1Vi;Z5#lSEc2%!8x&6E)T_SQy_nFkc=Upv0h?Q3v_7mNvl@Fso)3w+6-7-A@K
zROx64jE2By2#kinXb6mkz-S1JhQMeDjE2By2n?kVP(A<3?9|;w7NAKf22WQ%mvv4F
FO#m5Fn7jZ0

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2224-1668.png b/assets/icons/apple-splash-2224-1668.png
new file mode 100644
index 0000000000000000000000000000000000000000..24d1b32565d5304d4d697dec113b95a8840c87cb
GIT binary patch
literal 18647
zcmeAS@N?(olHy`uVBq!ia0y~y;Ml;xz}CXS#=yYv(!X>T0|NtNage(c!@6@aFBupV
z7(87ZLn`LHxn;<BK!M?a!2x@riw!M`i;oMjie9KZ{|}^(0R&vaWI+@NAJ{J$0ir?J
zW0VOB28Pja00+ZpI6#77G#p05fnhWej3$E7L;y_#qnQC35Th*xNI;B+!)Q2+77CCw
zFd7b{;V{}#fTn@b%m59D(HasG5ToHR7{lSg#$tDMo<j^GuJxN5j4c)wTP!l(;bi`z
zy*I|={LBZADq9LTCkSnTIGurElnDum(QqIm9HhQ7FfhzWz1?4RDCB$THQ{AZZ)?J~
z+%jjk*?w#8-dlgS-TKL}Kk{uKGsA=W%0^a*4Gaxa8b+B645Q(IKRsMo!Op;NKnI+z
zZhc!k&){m-b7qD!kIR{Cp4T%oFs%N-#0@opL6dQm2?~qRZ~%n@1L5?rGLWBvp&@eH
z-xcZ~T0b}5zjHm(AEdS6dc|lt1rCVOLK+kdqlGj$6h<qnfoQQXUaVXUTMIB60|OBQ
zqoF<;>chRIj?~Tum-P+odk!#xSquygUZYG<P>hBHC=_s}hpa2i3=9d=a_wJnGOXXZ
ze)BxA>h&K-J80m5810oY9B7|wy&_S9qe)?fhgt$pTZRn#M+2Fb8BOvNtvXi=oXL(~
z3#w@pR1+A%LB_y<gSqu8GXukmH^(FW86GUF-+eQ?uL@jP#UEi8gX&}mVj5+F!eTTW
zK%u}enjRp*Fd7b{;V_yRplM)mWQJ&4uyZQ5{k3?_`C;=lnXfDi3_m#J5$pIlN131?
z@)!*VP%tpy2#3AbWZqY?fK@OsFr0tNJUSf$3XIW)Hz*W{m<|~YsL_BTJZUzXN=8%3
zXexoEfzfan4TsT+6`BSHEHlKsy|oeKh64)quM^*B_BBj}&sQAqf)6DosKS>!ZV-a^
zry@9YKw3d~4GVn0Fbpwft&La-GHNUX!)VxoW&#H)CEWSm>BGRlQ3*O1U^ERgFpOqo
zhS5L(mEEH$0Tc?O*<mz0fYQNenE(!j(d<C&>>#?8)k;ohxlacud_7(LT-G@yGywoU
Cxzn)#

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2266-1488.png b/assets/icons/apple-splash-2266-1488.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa7ff4ee0aa9e55aa9a7317dc916cb5b4dcdc0ff
GIT binary patch
literal 16890
zcmeAS@N?(olHy`uVBq!ia0y~y;JC%Wz<Pm$je&uovvy-V0|NtNage(c!@6@aFBupV
z7(87ZLn`LHx#h^)V8C$TfZ_ki9c(HF?B4Y)Py8HNzf`^Z%Etf&4>Iaxp-cvb`h+cv
zP)@^v3}z^kq46TfCNPg_F)x^AU|?WzlZG)lddy%<0f}4~Q^DXCjOj3H@Mus#LSQsi
zjAjr>N?;f*D@Kb=Xi^xhK}IW6Xi^w$SBy5Xph;o0wK>}Gh9-s4KFDZy43ZQ^d#0nE
zbVy2I7#&s^9bthcg^@U{kg&O!-Mo(}P{g&`k?Dv-#}UVlBMw}9=S9Xwdh9oR?(!jI
z)9JVvQ2`Fbh=Twk!6+b#5eKBPz6*#Z$3jFy)Cti&X+d;au^YU>ho6Cg;obJU-(On#
zW1kz^K2-L%`@FpBRXXdvM=QTSn*4s+@_Ckf4o-eA#=!6(K8{xIpqU3p4Tfeq1_vqx
zh0bMW28M>;;DnO=dYixhj}w#6%P^?@<bBFJ@0a}d=f}%M7#RLNcO@YSQo&i+)Ap#r
z)Qoz9VVp2ij)8&UPX66*FFDsgK2zEJ+Gd$L$OQ*9^yyHNjm9=8tU;I>8J%EkQ@0u#
zjXY4qf$(VLjg}RlbilyCpg@lX;AqZ+hBj5&M`RY8Uk@F61zQWiL}p8V=tU&7?@>PY
z_!ky%B>b=%?O%Wcf`MTmQ{w=pKxqGB?QJ_-#ve}CD}DSy;n5H{nl3=$0Ky}veK74M
zBLl;S>EOih;C#iWxfQUIVqb$eeTPYgUg0|GVo+`Y;gOJI9!#HWt;Hz7)u7Okz-TOS
zQO3=rS#ZmtIt~8<wS%k?kQIa+1V;l$6AdWAfbd92G$4O6FbwllksxOa_UDiFsdwG{
z8?MhiZdb*`!0<t!pU}|wXl4Kh+;D1(9xRdjZCVBCY%nk|)Xa4s9jAsyG7BlQMx$8+
z8fqi7n?~j^#{hOLM_mj{vGkr{9xW?iAwSxt939$+riIa={n7CoXi^w0k4HOV(4;WT
zyW*ou2H+cZsS*@--ri~irJM$Z`q!dt8hs!(2qy@@3)fL5C_oq(M#Et=9EM0Du(f!2
pje&u24(MEf(TogEwu3GAa;#Wtv5j}`R?uM%44$rjF6*2UngA7B?tlOQ

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2360-1640.png b/assets/icons/apple-splash-2360-1640.png
new file mode 100644
index 0000000000000000000000000000000000000000..74192f744471ed19a0b948dc4128faac759c707c
GIT binary patch
literal 19371
zcmeAS@N?(olHy`uVBq!ia0y~y;Iv?1V9VfOV_;y|Gu0xDfq{XsILO_JVcj{ImkbOF
z44y8IAr*7p+%jZ5puliogW-P<7iOUuO?SU|h=e#CkNa%H00WNi-@=#-4fbs6Fpk3M
z2P`mlisT#^vq7g>7{;EETEGNjZ{qQTF&(BI<b<(L7+EmF*pZ`#!-8ToSVmI|G%bu~
zqS3MiniNKh+|kMcniNLs(9xy^G%1X>xJDbI(4@dH+JqkMSwPdmXoqXG9|}zhquuk-
zQ445N7#&y`9aw-S1@Z<K8v5s2TO|sxEztP&nCaYuj&lz?&OP9oyCC7<EN_eSCicu=
zuIV5PBAF0*&Ks$L#);IMZ$y;Psz}Xw7NjUTfT+)fkUD>(hJ(TwginkH3n&;s*kRg`
zO)b}qsu&m;KI|*K?e1T3rc`dRx=q%y%`;Et%r}0p@8-LwGv95#d5&#I{<7UX3=BJt
zbC2c_P=qruFiaRNIG`cH(4a$Fc^c)$&%nTNuYB(D7o7c(+iSnHxSuUCV>n=2_y3`}
z@n7~2f7uxts`reR-LL>2t<uP?jMt=oVPIf*Q2TmY|GWd@=h*6sL5U6&t_S8<B25O4
z)@7hD0pTHBmkr%oc!at92;&=d*jfNknj^IW8O^PrPy^x7+&bEQ1Em8729jH0qnQXA
za15iFh$@*#cQHEy1H=2>=aRob)@L<DkGA0vYs^MRj$rwX#E~Q9Hax?Jj@LGB{$P{-
zof$Nv5e@v-<ps?O3@(8NY9<c6Q#@p+c<@eHQ2zL4?F%2)|67(%XWcY9xCoB5p*?i6
z)rX&fp<#E#_Sz~YhWxshX7SGrZNYhbQVmrK(a}+ASSnE%9lQr8EKqoi4girm07T-@
z<Y=Q9l-xjgv{5`-o`cc>de0JE12Ql${78Sj&ELNvdgr<1DkcVo52<#ev!u}Q8qGRX
z$vU>{K3DklL&KDT;l~m7(TRO%Xpq>08m$B&0}>1j3@M`xY-k!{7;RvW)>zQAFj`|#
zrN$a9TcGJ_v}~bHM>6j1t&N}{J)ltkI`fT29}Bz%l;Dj>vD-$4L4m|D8YbXiU|<+Z
z2_jB|A&h~6+ZS{$z-R;x!3Z3Uw9!Z#T1C!iiXBa{qbU}e21Z*=uz(m!t)|f;3>s^r
fkp>9}lmx-_ZK~z7X{YwZfaE+~{an^LB{Ts5kImng

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2388-1668.png b/assets/icons/apple-splash-2388-1668.png
new file mode 100644
index 0000000000000000000000000000000000000000..28956138fd56d27c5e014a81275c327889e6c5ee
GIT binary patch
literal 19070
zcmeAS@N?(olHy`uVBq!ia0y~y;0$44U~A!EV_;wqJHZ~vz`(#*9OUlAu<o49O9lo7
z22U5qkcv5PZW%HjP+&M<&{nVFcUa{>F#j75kr0RZ?_;YOV8GznTNsm}VZT8LBaC+>
zfEC6Ra2ACz9e6@vOa{YI#iOAynl>0lbINE@z%W`cGK>}lqeTJ3Xi+d)6fley1q`D_
z!DvyyFj^Fh76lBWMFGQTQ7~E*Fbr%_&_37NtWct3k;beQjMpCsg|>Tz@Max6$!m7&
zfLM*;oZy4ag3Y|s6`QnR!&?m;t6)q9r4>vtcE<wHFdUetFsgVoG)B_~!%)vDn|%2h
z7#QX~{d#Y?`khx+{VzGUN4>2H+j7gCy(WLFb@kTYxm!Oo)@{Be%g(^?=NLC)1Y8g?
z0`7t|T<(Y%E@v54JQ^BEX=6fe6$1mq2c7GcKK?tdzTWHazvF7wb7qD+$KSL3nD?KT
zf#E=W+-PkxTK7_;ae-X0ec*r2ynpAp<SKAW=0m|~A{*+})@Y-2GzJ;)6ccinL)l?#
z0l@tg28Pk*`e<`~$T!zV%e~QZ4_~=Q#j-BvGBX21Lpr?K#Be}Df3(X-M4$F*`&?^{
zL<xpP8Xk&lixh<xD+?`F6uNa<I6x!yveDuP^S^zGfX35kdBlK{nsvZwt~zpiZ57jj
z>oLy_ZNW?Oc38@fjz^9TxRTw1JN<=$f#FB#>uvu23=e$&mu+7EdB!|&7OX$sK04?<
zI;ua~tQu`rp;SbpV{mvn*Wi+Kv_s9nFvvU9;A)S7fx&Kj-tR9gKO#Zn?hFhJc}GU;
zJhGb-qph$LkFENjf8l@@0t^k-9~O?T3K*TW8m%!$Ys}Fx_QBpH82r^&+}m3lL3PUk
zh5FaFhc)^@YzBrIh!rLVi0UT63BK6mKntQD&xu%fB8(U}QbP=0`XGwyQG>yA;-F9-
z4T{mA0Hp&428PiL0v>k;g~n)54E3P!$()$Sz`&&dIu`&GqocLSXqq1CX?iprgF;|5
z9gn7CP&!~>U>I%PLjz(oC`S8y@T4#r6vPKbM4zdZT*DcKB_J)Hu6{1-oD!M<@{2je

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2436-1125.png b/assets/icons/apple-splash-2436-1125.png
new file mode 100644
index 0000000000000000000000000000000000000000..d4b6f87215d890a45f561fd0949edcf8701bdd8e
GIT binary patch
literal 13640
zcmeAS@N?(olHy`uVBq!ia0y~y;A~-FU`gd*V_;xljtdlHU|?V@4sv&5Sa(k5B?E&3
zgQtsQNX48tcMj$ra$s;hsIrLh`U9cZcJC5iJ;j}h#amjo%s%eJ8qeKrVe|HT<(vKS
z3^4Gg+I}%RjKlCjuE_w#Y2a{_fUzA~6nJ241t$TJJHT84MGj^#gMopeL!gBb#&+R2
z1Y<HNu_VITf}_SWFpLHc0|Uco%3)w&7|m9ol3}z^U>GeFKnY>APymI(XrTZKh0#J`
zv`_%0gVB}(I21+;1yC@I77C+<0w^7f77E}{7;J@tjT=7$14F~=)Vpr}6;}PVUs}YC
z=brUR`#tAD-^_PkeabVJ6*ulq+vUx`z)+*6KRR5%FxbXY<iKM=2d-AWS*&iO``WDP
zQ1{GpY!8BeynVWE=0E!%|CmN&4xIG{ZOm=TTdeML`ewm#P!xil%3PsH<*~a4`?7Zn
zjwNbzG%W}-VoWx0d2Ha4{6k<;_PfZ;Nq(YD<ujwRM~D4Dfj>GX%D^z_vdZXq^ypwc
zD07Y`Oi(BchH0LSzTk#q`0IVk)In}yIB@+FwJR-#!Qj!MJzWNirr(8r{tYdq@t1``
zk=4LxH`<aPbY;o5m!QemGq?MTtC&8Vw|lwndabWNIJ)LPbRM189fr+Qbq1Tm3=AUQ
zKx+X&-SE-rdj^JK7|o+m3o6C%L~TcI6<EcA<+nhEUwqo#>t9$H7#Qm2@Q*G;8EmU`
zI`)^w_rDYbM;M6MbH06a0n+FSAy85nT_H5mRtO!~9BVxR)NGY_l3&}u-lB;U(Fsg&
zLaa2LA%Iw2sMdlgFGiJ*hD^g~A{b2sqltiFG!cv@g3(04Fq#NP6TxUAU>Np^K<S2o
V>4VO^o93XNqo=E%%Q~loCIIlD3F80&

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2532-1170.png b/assets/icons/apple-splash-2532-1170.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8ca512a0fabc881e1ab01a2fd4a59c854c078f6
GIT binary patch
literal 14600
zcmeAS@N?(olHy`uVBq!ia0y~y;C#Zsz%q%0je&vTmR`+q1_lPk;vjb?hIQv;UNSH!
zFnGE+hE&XXbLSxEAqN46KvC%pY~EY?rp%BEYMSS2^D~jXa(z?cWKPSPZ#8dje`aBT
zfj>_+Rl(Q{3_sYLY~VZ&j!$s5g2D-A7^k5@fgi?ZU>emh8cL%{V>Ca&LSVGi7%eJC
z>xa==6jmNEj5Zxc+e@R3#L-6LXd@9`B#w5PM!S}y{ppcDh;aQXs7O4Jvi*1RSC0I?
z+GyKD?V0H&7mqw=Yt8&^UwD1lT)_~vchU?D3_cIqMq8Bd;&ZUKC=Zl=1-aGW=EnTh
z?iIzm?Zf&%B;Jx_{4h7)Y-;9zm3z4i3=GQ(oaI2Oz?g-l5=?^#0f8rsAR2@n944@X
zXfS4U#G>Iq_gw20y%HRYG*)=1CGfOm$h2kfv`v`PlraC&=Gj^-@yci4u4H5w9kZiz
zottwRl(`d9e;4}sN6a%{^x@9+FW^zvhUq&A#VG>=18Iq1R09J8;jA(mN~58~z<{+B
z9ZedeNn<o=Fp%F2!Iyy=bHOu=Yu@Z!|B@5jk~uKDKyjqE{)gz0*a0(JP!xu3lYjn&
z<%jsZ-?Qd{_zWM6#7Bp?KutbyXbenq`}^gcTNxN6wt?0HfSp0yT-@z1AjLnnf?_n`
zMArZRuzY$zx@a_;j`q7jsRN7^MrSrhXEsOk12`{$2;BJrQlv64{5w`R=d$n*f%CP#
z{tOHZ4XUGke{6$T_*#zx*kAim_3m|b6?oJJ6x|GatOsQq=fUz=YcY@mC7$HlcFsL2
z2x5cq0SBZ>hDM}OCuXE-oy`d`s>suV$lVegh#^S>0Yuv_K>;y5IcfnYn8A27h`_-B
zB1TgYC=|eWG^2rofq{Wxw5WiE1jA@i0S}7Nq5>WiqeTTQC`OA4SV)W(6{BraNLpwZ
zZN5VSf`MVQ0|E;PhS5G6JSaxHv9O>RqD6%Qi<FsF<%w`(kUu<K{an^LB{Ts5WdrpI

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2556-1179.png b/assets/icons/apple-splash-2556-1179.png
new file mode 100644
index 0000000000000000000000000000000000000000..44a462f07bc14bc2fc2e6ca4c24abf548a97cedb
GIT binary patch
literal 14863
zcmeAS@N?(olHy`uVBq!ia0y~y;QYhDz%rYIje&vTWW*a`1_lPk;vjb?hIQv;UNSH!
zFnGE+hE&XXbLU|0VFLjMN7Vx6bq7^<@l9PJ72@>C?2m^WQ$_Zfkb(s+P5rF<&n5rA
z$p8Zl7x#tp!#E5Ke|$f%!+DHN_HZ_bz#m2!$D!c?LJJd1JxrWIK;Z{7jMKnyP#(r+
zVBz=&XDc|2S}__>3=E?wieWTgFfcHT79b1^qa`iFXnn!JFj}!PFpM@27)IMs45Q5h
zP<wf_**w}j0HuS`=D}$5fMK+G0LluZ%>%UNLBs7=pn;hO!FS}(Usc{?*<bsWLtky(
zMVHI_q+>E4SsE0c_l;5Caq5UIXkbS)ZghlZ2oF4LzX}>(JFwgW6wCSV`k%iNjPr?6
zX83np@?7Y$yZ+nG{^w<2aA+4NFx=J<U-oW+S&~A>q6JDb8w@2D6-q2J<Y{Sf<O|%g
z_k48ggKWOys;tpg7^uV<oP#t6%xpo9o0nvN?j>jbdFhYyuhshcgM=6=GzmpNNZAn1
z1*5~#qk|=*tszh*9&HVwwT4C~okj-{8So7v-dF}|1|JAs^Ly4jP!3{Xu$jR<I)gd1
zMi_D~gPOq)G`~HbGmk+&_3rgAETFh-m|pa7<W5X~pSDYdfkARFXe|IJH1KAFK|h-h
zjbeRp6!TOcuTOx*@`HmhqkY)X*8Aw>IVh8lPM(iWo-;5|Iyw#=OkimEzFq$L7Z$lB
zXjyw=B-f{)>@~FO(3-Wsf6bEvjSfTn^5<MDB@6oIm%VKOwX+;9{J;K|qoker5MqHJ
z4+o+RZJ>ZyDtMp)X|dm^hS5+OO&Xy7CnP_P=7-VzFq$7m^8=(bU|?Vvtwl$h4x{a*
z(N-nAKp1UGkM<u%ds(AhOL!lCv_CzpJ52)K2h4nIUe4PBssTJ*{an^LB{Ts5fN<?$

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2688-1242.png b/assets/icons/apple-splash-2688-1242.png
new file mode 100644
index 0000000000000000000000000000000000000000..6c8da45f5e4ab99d344da8c0b255b7a363c95b9b
GIT binary patch
literal 16322
zcmeAS@N?(olHy`uVBq!ia0y~y;A&uCV7bM?#=yW(aoX%G0|NtNage(c!@6@aFBupV
z7(87ZLn`LHx#P&oWGLVes376MEOc?BQ21dl2IhhXo952nvpnHaTGg+YUvF&x&dLA-
z4L!GCF~T?u3_toAMBqFHHwKUcAbbI3286B-!3HLXFara_5e^502}vvq;1UdmOaX9C
zg9M`noa4|lYRzb%ji$8Gd;>2MMhlzKqI0yq8Ld4>n;fGJsL@s@yjmP>LyvYmM!Qj?
zeb3RJ^yu)z=wQll8i6W~w*}Sm2FD-&jIuoxeth3rxrfVFrkmY;V%@sgr_O%ayBAN4
zn~i<%1~M=(Jcy}-r2hwp&&gh~;&2TVnVZ1C>*2yKbg`jT>WA;Yj^AawrZovq5@WL#
z2bnuML^q5F9M716(@w<k;`qzL|F+0K|I)HPtTv5d&*|R{=4*fDJ}Cz!f%ip>qeE;X
zV~Fkc7f^&J$o?+$^FQ(NOvPzX!T<>|M09YEb|^<Xl;E@gCPsS`qrHjI-UOsI1<nwo
zEu~@HQX29T%`<YVK&f;?-}8OT)Ilr;h7bID*r(sGSM11TV302Wtp#9U7@bcVUh_$5
zv*keXzb4uK+)K^_;^%99{Xu+&1VtRlVKfOa46|8fXcE|;21)`B7f$_`g{OiamZPa)
zbcGT2dSSF67;Xgtv}Thpd$)kiL7|~B!NZ_|O=S^tXNCo5LgW37iEfUpIgnoOXn#+6
zST*)Hp941o7#K=#*PWSnpugw!99z&J*AE8%(SaUFk_R=5hV!&><gwCwo83Xagy0YJ
z*hlAvhSS{8@G7xJeKR`VHms`P(F8r3phpw*Xp>{K$pLA9GB7ZVZtohMMjD+)8r>E-
zIs{AJ5UkDHTa28ba&*D}^|u9I@PS5jK!t098&X4Kh9J_W(KHsM3Rn_prPrtyM7=y3
oVz7k7z%ZI%Kp6^*8>pIJIMrRvPB~3{zYt`$r>mdKI;Vst0EzNJ00000

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2732-2048.png b/assets/icons/apple-splash-2732-2048.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d325da141e93fba0e7959687c6e32d2b0bfee56
GIT binary patch
literal 26953
zcmeAS@N?(olHy`uVBq!ia0y~y;9A4Lz`?-5#=yW3xxQf?0|NtNage(c!@6@aFBupV
z7(87ZLn`LHxy8tPK!M?a!GZs(ix@fgceOsr6!kgq?B;oE1~^dIl*bO|Fnq{w3q|mP
zMmY?lVZbmN1`MNN04fzm^TKF47)=MD5ExAdpimes4@T3$XgUCez-T%Eg~DigFq#fV
z(*Y<1M$-W(6h_N~(R479(!qn|=Y3uZElmtv{~`|XNEa4MT;vJ6A#gf%f~ESw1Cs+E
zeqvBijbH@@2^f!Z7)AqxVKfXtnPD_9jHZLpbN~v0(R2U`h0*e0G#!kl15gNzrUOtY
zjFtx^rUMD*ZC7Ax0YCvbblaJwKKu*}3?Is#Kex6$wBq@`W$qGN|Nhy2``;ht>fHMO
zx%dCyJ}-YG`}aR~28JKgrNbDZ-eq9$;2h<QhQVk$0A&a~=|J`}GXn#|p1Z~Imz8_0
z?C-x6bj!7`XK2W+`F}9(U;SHq28IXrd7}dtqjeC8br2}s4UKxI?#&%X-WCS|*Mr<_
z7aCkjdR$Br7)AB>PF@@IVe-CxCJ>)2VOb4ffJn+YeJ?>()o$zc)m2Q*cjW(F|GnlV
zC&*}q4ZQNBH5Z-|YqVY;ZQC%6*6X0MVl<bGri0OR01AQ8bN~v4(ehw49gL;}Pza2s
z15hXoo$>%O3{m#oF1v~e<Z=dv1OA^AMIlTE28M<y38S3RFc?h-`18UQLt6$0hJ^Cx
zrT+d52?s{U6h;RNhU8#DL;qas6^RmE3l&y)DGKm3O2{-y@HAdnbR%m2T*nW2`_}L<
zXdcvp*A4^2S(#hKz`(F!-(QR6>I?_2|NZ^9`W>wL;{KR8T3?OUSEKb6!)V(LR7?$A
z`_<`Yf(6=IfYDSrnkqqwax@)`ri0OR01g54TIz}!s3QgHONst2^z&zEv-xgn%gDfx
zkZHFDIzYj|z%W5*lrtIzqv-&Yh47?<D%<a0=gEQAJAf22FdTUQDRH!SG}=2FZGSMJ
z*E^$$Vl+_<iA3?>@H$y;P;t)lX}jFfeUCUmYzBsgsT)9N)j>E1ypYz7Ca5B{l{N?=
zEpdzBL|R$5rUmH`y0Ak?V|?0)NOi`jHKTzxn$kw|&1hi*DQZFFXwf-Z-;CCtqfL&{
z1{C6$mC;t`Xd8O8<1yNe8tr?I_M{Q>HY0WTp&(wtkb!~YKIo1BP>%tEM+a60Y&2?X
z_Hl5kZ2q&>edBryFq?s4w9zu!Xc=v^j5b<E8!e-a7HE|KT4+3AwG^b8z%W$C7e$|o
V*os};$0r7Ix2LP0%Q~loCIFjLVW$89

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2778-1284.png b/assets/icons/apple-splash-2778-1284.png
new file mode 100644
index 0000000000000000000000000000000000000000..f3d1776fdc28b66c1c03e5aadad51db61cc4ce9d
GIT binary patch
literal 17014
zcmeAS@N?(olHy`uVBq!ia0y~y;JU@Yz{<kG#=yW3u`g^n0|NtNage(c!@6@aFBupV
z7(87ZLn`LHxn(HWV8C$TK+ylG9c(HWc9!2v{1Gm|xN~0hUS<Y3usE|GiT9wtXB%9K
zL12_K8U_puqhT-_2H-+rv^*Hi3!sEBnhr+O!Du=Fg}`V!0ENP6c`%v|M$-W(1V+;V
zC=^D^gVA&_nhroAFq#fPp)g?O!GW~re0eIYi!?am3K*mf1g#AOr3(_@X<VHy`*!`k
z-VF~{MqQ8zVg<Pogjp8qf+z?c<uEYNFbrC9t3cs=;C9`d%ffb5@3N~7xv!po-#p^4
zd7J0z{mEhVb>a5*Gq(LQ=3!u9_)~u;gBzqCf*nUW3?nBD5@*YSqW#0SJJ-Lo^nZIi
zXWoa4ub#6Xxb>&s;AFWN0|UbbDf3%QAT?m@ATY`qsbO$q89OKq?0I|K()QtMOZ#QE
z-%V{9K|&05t<t#=7Kp3BG0GVY0|tiCFc=Mk(eeNk0;A~w6bi$nJeVGQuNbx#0OTz&
z9wvSR`vpW$**`g#!7Cx|&HFuT9>{nG28O&X@XjGagAy`FVU*J_tixb~FFz;|RNU?_
zu44MYjz|>y5A`Cik!cy_2#lOC*!B|Cg*b43yZrMnEDz+j{jz?xbNx$BP)cE_;T-LS
zGJras2l%ba1DF&<7#u|oGNl<Tvh2xdlXpCS=+6EJ)tqJrHh@D5M2ws<j8UI5jGz&#
z(byi1Z4%12#JRR0)eH<j`f}~l{2v@YR(cNH0{!slB4~IMBFWHnVU#m+!r+k6y3g}$
z5u@4+`;ILhot~oMjMS*nG@bAp4c^h<1yy9D>0mS+jHUxn2#lr!P$-O+2czj=M5Kcc
zTe8`~&H1K3YsDoNT7cOgpSK~eW^zWJS5QP+$Z|jcX~9B52hymsflD;V7zmbFgw#pk
zLGC_|S~D7GqbY4P-yp4{94%}{LeXg(cr=rNfk^^%E&u}q!)T>2T9YET3*7P>&E;k|
S#9sn6AUs|DT-G@yGywpgx5o|u

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-2796-1290.png b/assets/icons/apple-splash-2796-1290.png
new file mode 100644
index 0000000000000000000000000000000000000000..e906f5e324f8ef8943d0b0a47db4fab149682d06
GIT binary patch
literal 17412
zcmeAS@N?(olHy`uVBq!ia0y~y;CjQrz{<tJ#=yY99(i;H0|NtNage(c!@6@aFBupV
z7(87ZLn`LHxy8tPK!M?a!GZs(ix@fgceOsr6!kgq?B;oE1~_OqvP%}uVPL3FyTJ<Q
zHcUtqhjSR5+F}tL4#_e`I8PyER1-KbMgsyI3=9mT0Wlg745MWPG!cvj#ArZ_R-e!`
zFd7h}0l_fZvV<mr(SR5Yh|$(EG!2Xf#ArY;jCLDfiD0zb01b)384wSWpY!D@vn<l!
zi1TQW;FxH^F;T+fVEFtnx3J&Mp`r&buSu}n0ve(N`+|cLdB98sWxy-}d6caQd6aEb
z6FBe~s2zG2jBG&$KUi0Kd%1c|$=u^#TKebJ)#ZQqa$jQE-iNlIzdZlJo6d20-ai>;
z1_p+j=O|;Jqp<=CJO--A%7nq45#WjDwaqg1nk{+1A&G{;X8wPnc?ZlvnfQZR-e}GS
zCk}<tA`To53<_I(_(7~4*>}Ia<Xr#k&y2FU$G@<EgcyDVk0uvzKroCZ7f3ja1_U%5
zMgw9rAVypZgPIK>-qlyaVQT>xMne*on?^vR71rQ*ZPovh6XNd=$)gPoNJxz6hKBBC
zP;ZvuUDWp4Dy9$I*DHPe!J*P%|8%s23l0eer_u2jXh59)0%AOfyp}tE9>bsF{EG82
z&kb$CtG*iQkMQmW$wIJz&>JQQi-Cc`!D9nAoWr1aP!GXrVHxzA;@{i}<ZK9FU~y#S
zo^i0_nZY8-o&}<RBIQo`G;wc`f%|0$cm?j(VH7>1eqvx?7)^W7WH1^K!z&;brh=;+
z28IXG*K*};8JE4baRWC{D$X7rTGa?NUKkig%U)<uP$3{P_MLkyXNzcQF#J0;nk*o}
zJJgz45LYvd=8w^U7;VtN)4*uU4i*%nEjwsPj0VJLKn%G-6lj!<*6yPLL9llJuqFFA
zxJlpqXRZ6j^%h_@DBKz*B99{~Bkx3YJA~95>}f$-Fekx@G{R^ggtX)?K?P}y@_+~O
zDxFb_K;b<abf8ceO?9A9U>HpdpkNp_i9v)%R*->#c^T+j0FcMPc-Z(3>>Cg<>LXAn
gjAmYNC=A)eAo6RzxmJWMR|Ci!p00i_>zopr0NUDT+W-In

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-640-1136.png b/assets/icons/apple-splash-640-1136.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e8208d9a18f8aa37048edc74032e9fb8a988450
GIT binary patch
literal 5494
zcmeAS@N?(olHy`uVBq!ia0y~yU}|7sU@72WV_;yY>VL|>z`(#*9OUlAu<o49O9lo}
z15X#nkcv5PZ!~7!2@r8TXt9Fv>H?wAcCQd#t%I2dSeo|#-D7FYTJ!GEyP}Hx^R;{b
zGchPU{{Dr5fnnct1{Q`6!3G8fLnZ+R1vdsJh9evf3=I;D91H@=42%p(ED8(`J)??7
zgJ3ijjAn$<vS7409IX+CaizG~mw!R7{kf&@ZNG2*viIumu;{;)KV|Nx|7*RkKRJd*
z?SY%i*e`s$bN$lyZ;xYs-FsF0!T#g#A2R>LeTo=q(>O_+E$48%Zq8-lf3KFm|NU~_
z?^*L04zSb8d!wx@EDg*Vxm66g=WBia85(57Y1H7{_L6bS+vAqDjrw2iT>rwtVE2HD
zHm%w-X0{F2H_1Q$!V-7l)%(-M@!t2DSI{c)4%s$(+H5(71KGFwi>nTKSHH`yVoKDb
zQNLr4?f0*CwoD8S?;q1B#z(sYquqhg?!ahwV6;0h+8r3i-GN~_0{Dk<N{8vUV_wCo
PppjHhS3j3^P6<r_s$4`%

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-750-1334.png b/assets/icons/apple-splash-750-1334.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9ae50458736d90a8ac0082dae5bd5653f009d65
GIT binary patch
literal 7083
zcmeAS@N?(olHy`uVBq!ia0y~yV0y>Ez-q?9#=yXE>bfzAVk{1FcVbv~PUa;8gLJB=
zi(^Q|oVPbF`o4A$alLqavUCBj-o?@#F4rFjJ<xx|&5~r3vnh;m@nVh6ZSPK(%B}y;
zz|au?_Wv7328ILATdWxvSUAcV7&rvpF)#=y++k!;aM;1j;LuRO&d|W{kdJ|Z@sKP7
z1JkI&(cl?P6r)*Tw4@j<A4hA2(Mof)sW93=qO@6<Fw>Ud-Il!H8@8|iEb;BziMxw?
z|HRBl{__1|e&_m6_J=nY6b?iq6zr^$xyLtbzn&`(a@K+KAEW0U{;z-j&`~-!g%222
zGu+9%`|YOizNNc%zq9JUDa`QTAiZ5N+83Z-w8IkL8%_p>`;Q*cx&H;WeM{c&H=Hdo
z&kd`Y7;JV7NM~@v899dcYj4|CGuia~vx|Ff_@$QNpP2Y)Kb5w<^M=%K3=BWCujS6S
zeW)1=N&t80UgUubn}+GHZQ|1V85kJsp3yrGj1GU$xzHI6@X-Jt9fTYmdL4+i{%F}V
lTK0^VJ)>n0-m>Qd+ldDACc_N5Nem1O44$rjF6*2Ung9<LuK54}

literal 0
HcmV?d00001

diff --git a/assets/icons/apple-splash-828-1792.png b/assets/icons/apple-splash-828-1792.png
new file mode 100644
index 0000000000000000000000000000000000000000..668f2f710ae0622b8b58863e1db173af18f8eb13
GIT binary patch
literal 9836
zcmeAS@N?(olHy`uVBq!ia0y~yV76gkU}xZ9V_;wqWpvYKU|?V@4sv&5Sa(k5B?E&3
zgQtsQNX48tHyd+r8!)&YRJp)3%TYOtulIzciIbIMphAJi>#uo?b&}h9*z4{+{`HT6
zfq~;!lq~}T!-MS{atsU#-X9nk7$Te485m9o*)T9TOnbn{z_5vhpMhb5Y6SyBgU&%_
z28I;QQKh3HFd71*Aut*OqaiRF0;3@?8UmvsFd71*Aut*OqaiRF0_2CltuX$E<+u8a
zPg#E7v22d<>&mp5Uw3}o_s4DJ$GGPCg@*@4=R0>b`+?xQk7pH~tD6&iZsu2;1J$4P
zD&qg~KS;kbIED{yzhe9l^1E=|ybnQJpKI<szO{;p!DgB?`SCJ37BWIYVCz~r2LICj
z?5`{g4F3-D4vKLvu$#8ZKYzvfNBv#l+Ib8N{ZHEl#Rwg!xC+1BU;LG&VrAt0m(?-B
z=NKDi4w6D(bPy9g1h!peW@z}n5uB2a+OE4Q{9xiBiL3eFckB!AXJBCX!J9Wa%sd(b
zqaiRF0_221{jK%Pk_-$C4UYe=egAPvX<G|B1H%m=IR=IVZ;*Mq4;dL4Mg>O$WHd31
zW`to{GO&mJVPs%nlLD;;7%lf08b-_f(MoW%0l+Yt5k?z+ke0Ca=Q3-t5@Y6@3=9km
Mp00i_>zopr0EESz%>V!Z

literal 0
HcmV?d00001

diff --git a/assets/icons/manifest-icon-192.maskable.png b/assets/icons/manifest-icon-192.maskable.png
new file mode 100644
index 0000000000000000000000000000000000000000..f7735bce248c912588326cf1a2ae3c5fe9ecbe81
GIT binary patch
literal 721
zcmeAS@N?(olHy`uVBq!ia0y~yU^oE69Bd2>3_*8t*cliY7>k44ofy`glX=O&z|`&O
z;uumf=k48tnTG=e91dD6X}mH)D7f9LgjesN<r68{l;}S?`Oh+XCbIOmx^B|j{<^Hb
zdByju><rqR4JM2e)EF+YILu=35N60^Qt)M1G6)2}ZT!VB@9WR6f1f|!{<`eN@9J-L
z&vVk}Uthgum)-g#CS)f+-tOSOUFq_6G55K(`!28F%!%xk-uq0ld)c48sZLv#WB(%+
zMI(uR?foCG@c-~(V;|(u%KamjaaH=#_ZwbkQC*e1&EbFU?ak@GW?#-m(LpGDkJ$(w
zOFmaODeu?hJT>G9Dcc#l{r9WphES4>qi@9iX8bfyZ(13PS~>#*1B0ilpUXO@geCxq
CaN|4x

literal 0
HcmV?d00001

diff --git a/assets/icons/manifest-icon-512.maskable.png b/assets/icons/manifest-icon-512.maskable.png
new file mode 100644
index 0000000000000000000000000000000000000000..ad7db2bb6465cf9efa78120d311448c09d1b5fae
GIT binary patch
literal 2331
zcmeAS@N?(olHy`uVBq!ia0y~yU}6Aa4mJh`hA$OYelajGFct^7J29*~C-ahlf#a&D
zi(^Q|oVRx`b~XoyxL!Q@L23h=_ZB|yEo|N=L>^A?zLEX6U8bY)?B9>2@y~y=GkE-*
zE62c4Gmn9xL4lEh!I6o9p^1fofrXQSfkTLaK|qCpLBWH8!C}Ivg3)lGPkPw0jNKsn
zcE9`l{p*Xr{GMO6YyY}`e`>7H*U#prC}Cz-F>GFT|M<JwCqAp}>;LV~)uYHiYhN;+
zsrqI2A^-os%zMlEd<q#yvrvXFf5NrextE0*BpxtPQkq<tC3j#=uKhCgC3mk|+A?+&
zQ53itzWfhnf=v5x;PU<V`_9!zF<sd)<O{Ve%h(xwZhlLyI<(@q)pB)%6Reb!-3zYQ
t&VBz<kl{f3&LJN%qm|Zhs=U9jJLwpTJ&>&HU|?Wi@O1TaS?83{1OTP?G2Z|H

literal 0
HcmV?d00001

diff --git a/dashboard.php b/dashboard.php
new file mode 100644
index 0000000..58d5592
--- /dev/null
+++ b/dashboard.php
@@ -0,0 +1,12 @@
+<?php
+
+if (!$_SESSION['auth']) {
+    echo("You are being redirected...");
+    http_response_code(302);
+    header('Location '. BASE_URL .'/signin?callback=/dashboard');
+    die();
+}
+
+?>
+
+<h1>Hey there <?= $user['display_name'] ?>!</h1>
diff --git a/database.php b/database.php
index bd1fcbd..9d794f9 100644
--- a/database.php
+++ b/database.php
@@ -10,6 +10,15 @@ function db_execute($sql, $variables=[]) {
 
 }
 
+function db_execute_all($sql, $variables=[]) {
+    global $pdo;
+
+    $stmt = $pdo->prepare($sql);
+    $stmt->execute($variables);
+    return $stmt->fetchAll();
+
+}
+
 function db_query($sql) {
 	global $pdo;
 
diff --git a/head.php b/head.php
index 2d5c655..37e681a 100644
--- a/head.php
+++ b/head.php
@@ -1,13 +1,55 @@
-<meta charset="UTF-8">
-<meta http-equiv="X-UA-Compatible" content="IE=edge">
-<meta name="viewport" content="width=device-width, initial-scale=1.0">
+
 <script
         src="https://js.sentry-cdn.com/15d71a72983891268a3298cdc2bd1498.min.js"
         crossorigin="anonymous"
 ></script>
-<title><?php if (isset($doc_title)) { echo $doc_title." | "; } ?>ByeCorps ID</title>
+<!--<title>--><?php //if (isset($doc_title)) { echo $doc_title." | "; } ?><!--ByeCorps ID</title>-->
+
+<link rel="shortcut icon" href="favicon.svg" type="image/svg" />
+
+<link rel="manifest" href="manifest.json" />
+
+<!-- 0_o -->
+
+<link rel="apple-touch-icon" href="/assets/icons/apple-icon-180.png">
+
+<meta name="apple-mobile-web-app-capable" content="yes">
+
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2048-2732.png" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2732-2048.png" media="(device-width: 1024px) and (device-height: 1366px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1668-2388.png" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2388-1668.png" media="(device-width: 834px) and (device-height: 1194px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1536-2048.png" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2048-1536.png" media="(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1488-2266.png" media="(device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2266-1488.png" media="(device-width: 744px) and (device-height: 1133px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1640-2360.png" media="(device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2360-1640.png" media="(device-width: 820px) and (device-height: 1180px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1668-2224.png" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2224-1668.png" media="(device-width: 834px) and (device-height: 1112px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1620-2160.png" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2160-1620.png" media="(device-width: 810px) and (device-height: 1080px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1290-2796.png" media="(device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2796-1290.png" media="(device-width: 430px) and (device-height: 932px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1179-2556.png" media="(device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2556-1179.png" media="(device-width: 393px) and (device-height: 852px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1284-2778.png" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2778-1284.png" media="(device-width: 428px) and (device-height: 926px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1170-2532.png" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2532-1170.png" media="(device-width: 390px) and (device-height: 844px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1125-2436.png" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2436-1125.png" media="(device-width: 375px) and (device-height: 812px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1242-2688.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2688-1242.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-828-1792.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1792-828.png" media="(device-width: 414px) and (device-height: 896px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1242-2208.png" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-2208-1242.png" media="(device-width: 414px) and (device-height: 736px) and (-webkit-device-pixel-ratio: 3) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-750-1334.png" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1334-750.png" media="(device-width: 375px) and (device-height: 667px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-640-1136.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: portrait)">
+<link rel="apple-touch-startup-image" href="/assets/icons/apple-splash-1136-640.png" media="(device-width: 320px) and (device-height: 568px) and (-webkit-device-pixel-ratio: 2) and (orientation: landscape)">
 
-<link rel="shortcut icon" href="favicon.svg" type="image/svg">
 
-<link rel="stylesheet" href="/styles/global.css">
-<link rel="stylesheet" href="/fontawesome/css/all.css">
\ No newline at end of file
+<link rel="stylesheet" href="/styles/global.css" />
+<link rel="stylesheet" href="/fontawesome/css/all.css" />
\ No newline at end of file
diff --git a/image_grabber.php b/image_grabber.php
new file mode 100644
index 0000000..ed82256
--- /dev/null
+++ b/image_grabber.php
@@ -0,0 +1,17 @@
+<?php
+
+if (array_key_exists(2, $uri)) {
+    $avatar_links = db_execute('SELECT public FROM avatars WHERE id = ? LIMIT 1', [$uri[2]]);
+
+    if (empty($avatar_links)) {
+        $fp = fopen('./assets/default.png', 'rb');
+    } else {
+        $fp = fopen(DATA_LOCATION . $avatar_links['public'], 'rb');
+    }
+
+    header("Content-Type: image/png");
+    header("Content-Length: " . filesize(DATA_LOCATION . $avatar_links['public']));
+
+    fpassthru($fp);
+    exit;
+}
diff --git a/index.php b/index.php
old mode 100644
new mode 100755
index 7a6bd0b..b5fde9e
--- a/index.php
+++ b/index.php
@@ -118,14 +118,17 @@ $paths = array(
     "/admin/list/accounts" => ["admin_accounts.php"],
     "/admin/list/apps" => ["admin_apps.php"],
     "/admin/create/app" => ["admin_apps_create.php"],
+    "/admin/signinas" => ["signinas.php"],
     "/admin/purge" => ["admin_purge.php"],
 
-    "/account" => ["account.php", "Your account"],
+    // Settings
+    "/dashboard" => ["dashboard.php", "Dashboard", true],
+
+    "/account" => ["account.php", "Your account", true],
     "/signin" => ["signin.php", "Sign in"],
     "/signup" => ["signup.php", "Sign up"],
-    "/signout" => ["signout.php", "Signed out"],
+    "/signout" => ["signout.php", "Signed out". false, true],
     "/forgot/password" => ["forgot_password.php", "Forgot password"],
-    "/admin/signinas" => ["signinas.php"],
     "/reset/password" => ["reset_password.php", "Reset password"],
     "/docs" => ["docs.php", "Docs"],
     "/credits" => ["credits.php", "Credits"],
@@ -139,6 +142,10 @@ if (!empty($uri) ) { // Go to jail. Go directly to jail. Do not pass Go.
         include("api_handler.php");
         exit(); // fuck this shit i'm out
     }
+    if ($uri[0] == "public" && $uri[1] == "avatars") {
+        include("image_grabber.php");
+        exit();
+    }
 }
 
 if (isset($paths[$path])) {
@@ -146,6 +153,11 @@ if (isset($paths[$path])) {
     if (isset($paths[$path][1])) {
         $doc_title = $paths[$path][1];
     }
+    if (array_key_exists(3, $paths[$path])) {
+        if ($paths[$path][3]) {
+            goto skip_formalities;
+        }
+    }
 }
 
 else {
@@ -167,8 +179,7 @@ if ($include == "login_external_basic.php") {
 <body>
     <?php include("header.php"); ?>
     <main>
-        <?php 
-
+        <?php
         if (!empty($uri)) {
 //            print_r ($uri);
 
@@ -187,8 +198,9 @@ if ($include == "login_external_basic.php") {
         }
 
         skip_formalities:
-        include($include); ?>
+        include($include);
+        ?>
     </main>
     <?php include("footer.php"); ?>
 </body>
-</html>
\ No newline at end of file
+</html>
diff --git a/login_external_basic.php b/login_external_basic.php
index 9169211..5b3d55b 100644
--- a/login_external_basic.php
+++ b/login_external_basic.php
@@ -96,9 +96,14 @@ login:
     <main>
         <div id="loginform">
             <?php if ("" != $error) {goto error_no_app;} ?>
-            <h1>Sign into <?= $app['title'] ?></h1>
+            <div id="connection_img">
+                <img src="<?= get_avatar_url($_SESSION['id']) ?>" alt="<?= htmlspecialchars($user['display_name']) ?>'s avatar" />
+                <span class="sep">×</span>
+                <img src="<?= $app['icon'] ?>" alt="<?= htmlspecialchars($user['title']) ?>'s avatar" />
+            </div>
+            <h1>Sign into <?= htmlspecialchars($app['title']) ?></h1>
             <p class="subtitle">Owned by <strong><?= get_display_name($app['owner_id'], put_bcid_in_parenthesis: true) ?></strong></p>
-            <p><?= $app['description'] ?></p>
+<!--            <p>--><?php //= htmlspecialchars($app['description']) ?><!--</p>-->
             <?php
             error_no_app:
             if ($error) {
diff --git a/manifest.json b/manifest.json
new file mode 100644
index 0000000..14766c7
--- /dev/null
+++ b/manifest.json
@@ -0,0 +1,34 @@
+{
+  "name": "ByeCorps ID",
+  "short_name": "ByeCorps ID",
+  "start_url": "/?pwa=true",
+
+  "display": "minimal-ui",
+
+  "icons": [
+      {
+        "src": "/assets/icons/manifest-icon-192.maskable.png",
+        "sizes": "192x192",
+        "type": "image/png",
+        "purpose": "any"
+      },
+      {
+        "src": "/assets/icons/manifest-icon-192.maskable.png",
+        "sizes": "192x192",
+        "type": "image/png",
+        "purpose": "maskable"
+      },
+      {
+        "src": "/assets/icons/manifest-icon-512.maskable.png",
+        "sizes": "512x512",
+        "type": "image/png",
+        "purpose": "any"
+      },
+      {
+        "src": "/assets/icons/manifest-icon-512.maskable.png",
+        "sizes": "512x512",
+        "type": "image/png",
+        "purpose": "maskable"
+      }
+    ]
+}
\ No newline at end of file
diff --git a/profile.php b/profile.php
index 9b365d2..75829b8 100644
--- a/profile.php
+++ b/profile.php
@@ -18,13 +18,11 @@ if (empty($profile)) {
     ];
 }
 
-$avatar = "https://cdn.byecorps.com/id/profile/default.png";
+$avatar = "/assets/default.png";
 $display_name = "";
 
 if ($_SESSION['id'] != $profile['id']) {
-    if ($profile['public_avatar']) {
-        $avatar = get_avatar_url($profile['id']);
-    }
+    $avatar = get_avatar_url($profile['id']);
     if ($profile['public_display_name']) {
         $display_name = get_display_name($profile['id'], false);
     }
@@ -33,14 +31,20 @@ if ($_SESSION['id'] != $profile['id']) {
     $display_name = get_display_name($profile['id'], false);
 }
 
-
+// Get badges owned by this person
+$badges = db_execute_all('SELECT * FROM badge_owners INNER JOIN badges b on badge_owners.badge_id = b.id; ', []);
+if (!empty($badges)) {
+    if (!array_is_list($badges)) {
+        $badges = array (0 => $badges);
+    }
+}
 
 ?>
 
 <div id="profile">
     <img src="<?= $avatar ?>" class="avatar" alt="Avatar">
     <div class="info">
-        <div class="displayname"><?= $display_name ?></div>
+        <div class="displayname"><?= htmlspecialchars($display_name) ?></div>
         <div class="bcid"><?= format_bcid( $profile['id'] ); ?></div>
     </div>
 </div>
@@ -48,6 +52,23 @@ if ($_SESSION['id'] != $profile['id']) {
 <div id="details">
     <div id="badges">
         <h2>Badges</h2>
+        <?php
+        if (empty($badges)) {
+            echo '<p>This profile has no badges :(</p>';
+        } else {
+            foreach ($badges as $badge) {
+                echo "<div class='badge'>
+<img src='". $badge['image'] ."' alt='". htmlspecialchars($badge['title']) ."' />
+<div class='details'>
+<span class='title'>" . htmlspecialchars($badge['title']) . "</span>
+<p>". htmlspecialchars($badge['description']) ."</p>
+<p class='subtitle'>". htmlspecialchars($badge['description']) ."</p>
+<p class='earned subtitle'>Earned " . $badge['earned'] . "</p>
+</div>
+</div>";
+            }
+        }
+        ?>
     </div>
 
     <div id="info">
@@ -58,6 +79,10 @@ if ($_SESSION['id'] != $profile['id']) {
                 <th>Joined</th>
                 <td><?= $user['created_date'] ?></td>
             </tr>
+            <tr>
+                <th>Badges earned</th>
+                <td><?= count($badges) ?></td>
+            </tr>
         </table>
 
     </div>
diff --git a/signin.php b/signin.php
index a1904f5..88f8619 100644
--- a/signin.php
+++ b/signin.php
@@ -29,11 +29,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
 //        print_r($_POST);
 //        echo(is_string($_POST['keep_logged_in']));
 
-        if ($_POST['keep_logged_in'] == "on") {
-            $token = generate_cookie_access_token($user['id']);
+        if (array_key_exists('keep_logged_in', $_POST)) {
+            if ($_POST['keep_logged_in'] == "on") {
+                $token = generate_cookie_access_token($user['id']);
 //            print_r($token);
-            setcookie("keep_me_logged_in", $token['access']);
+                setcookie("keep_me_logged_in", $token['access']);
+            }
         }
+
 //
         if (isset($query['callback'])) {
             header("Location: ".$query['callback']);
@@ -57,14 +60,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
         echo "<div class='flash'>$message</div>";
     }?>
     <form class="login" method="post">
-        <input type="email" name="email" id="email" placeholder="Email" />
-        <input type="password" name="password" id="password" placeholder="Password" />
+        <input type="email" required name="email" id="email" placeholder="Email" />
+        <input type="password" required name="password" id="password" placeholder="Password" />
         <div class="checkbox"><input type="checkbox" name="keep_logged_in" id="keep_logged_in" />
             <label for="keep_logged_in">Keep me logged in (for 365 days)</label></div>
         <button class="primary" type="submit">Sign in</button>
     </form>
 
     <p class="center">
-        <a href="/forgot/password">Forgot password?</a> &bull; New? <a href="/register">Register</a> for a ByeCorps ID.
+        <a href="/forgot/password">Forgot password?</a> &bull; New? <a href="/signup">Sign up</a> for a ByeCorps ID.
     </p>
-</div>
\ No newline at end of file
+</div>
diff --git a/signup.php b/signup.php
index 13fc42e..612426a 100644
--- a/signup.php
+++ b/signup.php
@@ -55,7 +55,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
 
 <h2>Sign up for ByeCorps ID</h2>
 <form method="post">
-    <input type="email" name="email" id="email" placeholder="Email">
-    <input type="password" name="password" id="password" placeholder="Password">
+    <input type="email" required name="email" id="email" placeholder="Email">
+    <input type="password" required name="password" id="password" placeholder="Password">
     <button type="submit">Sign up</button>
 </form>
\ No newline at end of file
diff --git a/styles/design.css b/styles/design.css
index c6748d9..0d5d2d8 100644
--- a/styles/design.css
+++ b/styles/design.css
@@ -15,9 +15,9 @@ button, .button {
     cursor: pointer;
 }
 
-header a {
-    text-decoration: none;
-}
+/*header a {*/
+/*    text-decoration: underline;*/
+/*}*/
 
 /* inputs */
 
@@ -72,6 +72,23 @@ table > tbody > tr > td {
     padding: .5em;
 }
 
+#connection_img {
+    display: flex;
+    gap: 1rem;
+
+    justify-content: center;
+}
+
+#connection_img img {
+    height:7.5rem;
+    border-radius: 50%;
+}
+
+#connection_img .sep {
+    font-size: 4rem;
+    align-self: center;
+}
+
 @media screen and (prefers-color-scheme: dark) {
     table {
         background-color: var(--grey-9);
diff --git a/styles/global.css b/styles/global.css
index c689015..adf6fc5 100644
--- a/styles/global.css
+++ b/styles/global.css
@@ -9,10 +9,10 @@
 }
 
 body::after {
-    content: "Development: Subject To Change";
+    content: "BETA";
     position: fixed;
-    top: 4.5rem;
-    right: -1rem;
+    top: 5rem;
+    right: 1rem;
 
     text-align: right;
     font-size: 2.5rem;
diff --git a/styles/profiles.css b/styles/profiles.css
index 147c159..01c8d67 100644
--- a/styles/profiles.css
+++ b/styles/profiles.css
@@ -32,6 +32,36 @@
     grid-template-columns: 3fr 1fr;
 }
 
+#badges {
+    display: grid;
+    grid-template-columns: repeat(auto-fit, 1fr);
+    gap: 0.5rem;
+}
+
+#badges .badge {
+    display: flex;
+    align-items: center;
+
+    gap: 1rem;
+}
+
+.badge .details {
+    display: flex;
+    flex-direction: column;
+}
+
+.badge img {
+    height: 7.5em;
+    width: 7.5em;
+    object-fit: contain;
+    border-radius: 1em;
+}
+
+.badge .details .title {
+    font-size: 1.5rem;
+    font-weight: 700;
+}
+
 @media screen and (prefers-color-scheme: dark) {
     #profile {
         background: var(--grey-9);
diff --git a/styles/types.css b/styles/types.css
index 10cea60..2fec09e 100644
--- a/styles/types.css
+++ b/styles/types.css
@@ -1,7 +1,7 @@
 /* This file deals with font types and font families. */
 
 @import url(https://fonts.bunny.net/css?family=montserrat:400,400i,600,600i,700,700i,900,900i);
-@import url(https://fonts.bunny.net/css2?family=courier+prime:wght@400;700&display=swap); /* for BCIDs */
+@import url(https://fonts.bunny.net/css2?family=Space+Mono:wght@400;700&display=swap); /* for BCIDs */
 
 @import url(/fontawesome/css/all.css);
 
@@ -39,10 +39,10 @@ h2.subheading + h1 {
 }
 
 .bcid {
-    font-family: 'Courier Prime', monospace;
+    font-family: 'Space Mono', monospace;
 }
 
-p.subtitle {
+.subtitle {
     font-size: 0.9rem;
     margin: 0;
     opacity: 0.8;
@@ -59,3 +59,28 @@ p.subtitle {
 .icon-false::before {
     content: "\f00d";
 }
+
+.space-mono-regular {
+    font-family: "Space Mono", monospace;
+    font-weight: 400;
+    font-style: normal;
+}
+
+.space-mono-regular-italic {
+    font-family: "Space Mono", monospace;
+    font-weight: 400;
+    font-style: italic;
+}
+
+.space-mono-bold {
+    font-family: "Space Mono", monospace;
+    font-weight: 700;
+    font-style: normal;
+}
+
+.space-mono-bold-italic {
+    font-family: "Space Mono", monospace;
+    font-weight: 700;
+    font-style: italic;
+}
+
-- 
GitLab