From e7708b9ece2920e320c818cad21473b53406b413 Mon Sep 17 00:00:00 2001
From: antoine
Date: Fri, 20 Aug 2021 07:33:55 +0200
Subject: [PATCH 01/15] Add new sports with temporary pictures
---
fittrackee/database_utils.py | 20 ++++++++++++++++++
.../public/img/sports/alpine-skiing.png | Bin 0 -> 4406 bytes
.../img/sports/cross-country-skiing.png | Bin 0 -> 4406 bytes
.../img/sports/electric-mountain-biking.png | Bin 0 -> 4406 bytes
fittrackee_client/public/img/sports/trail.png | Bin 0 -> 3104 bytes
5 files changed, 20 insertions(+)
create mode 100644 fittrackee_client/public/img/sports/alpine-skiing.png
create mode 100644 fittrackee_client/public/img/sports/cross-country-skiing.png
create mode 100644 fittrackee_client/public/img/sports/electric-mountain-biking.png
create mode 100644 fittrackee_client/public/img/sports/trail.png
diff --git a/fittrackee/database_utils.py b/fittrackee/database_utils.py
index 6cda5066..7570a26b 100644
--- a/fittrackee/database_utils.py
+++ b/fittrackee/database_utils.py
@@ -33,14 +33,34 @@ def init_database(app: Flask) -> None:
sport.img = '/img/sports/mountain-biking.png'
sport.is_default = True
db.session.add(sport)
+ sport = Sport(label='Mountain Biking (Electric)')
+ sport.img = '/img/sports/electric-mountain-biking.png'
+ sport.is_default = True
+ db.session.add(sport)
sport = Sport(label='Running')
sport.img = '/img/sports/running.png'
sport.is_default = True
db.session.add(sport)
+ sport = Sport(label='Trail')
+ sport.img = '/img/sports/trail.png'
+ sport.is_default = True
+ db.session.add(sport)
sport = Sport(label='Walking')
sport.img = '/img/sports/walking.png'
sport.is_default = True
db.session.add(sport)
+ sport = Sport(label='Skiing (Alpine)')
+ sport.img = '/img/sports/alpine-skiing.png'
+ sport.is_default = True
+ db.session.add(sport)
+ sport = Sport(label='Skiing (Cross Country)')
+ sport.img = '/img/sports/cross-country-skiing.png'
+ sport.is_default = True
+ db.session.add(sport)
+ sport = Sport(label='Rowing')
+ sport.img = '/img/sports/rowing.png'
+ sport.is_default = True
+ db.session.add(sport)
db.session.commit()
_, db_app_config = init_config()
update_app_config_from_database(app, db_app_config)
diff --git a/fittrackee_client/public/img/sports/alpine-skiing.png b/fittrackee_client/public/img/sports/alpine-skiing.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b26acfc13e66f22270edd0a270966e76b5fbabd
GIT binary patch
literal 4406
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
literal 0
HcmV?d00001
diff --git a/fittrackee_client/public/img/sports/cross-country-skiing.png b/fittrackee_client/public/img/sports/cross-country-skiing.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b26acfc13e66f22270edd0a270966e76b5fbabd
GIT binary patch
literal 4406
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
literal 0
HcmV?d00001
diff --git a/fittrackee_client/public/img/sports/electric-mountain-biking.png b/fittrackee_client/public/img/sports/electric-mountain-biking.png
new file mode 100644
index 0000000000000000000000000000000000000000..9b26acfc13e66f22270edd0a270966e76b5fbabd
GIT binary patch
literal 4406
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
literal 0
HcmV?d00001
diff --git a/fittrackee_client/public/img/sports/trail.png b/fittrackee_client/public/img/sports/trail.png
new file mode 100644
index 0000000000000000000000000000000000000000..fe4a2814f150dfd95d4d5f96b48026ebba2b4730
GIT binary patch
literal 3104
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
literal 0
HcmV?d00001
From 660190d368cd54aa0c9c149126abc0891e4ce0df Mon Sep 17 00:00:00 2001
From: antoine
Date: Fri, 20 Aug 2021 07:35:50 +0200
Subject: [PATCH 02/15] Add elevation in stats and dashboard and update
translations
---
fittrackee/workouts/stats.py | 21 +++++++++++++++++--
.../components/Common/Stats/StatsChart.jsx | 18 ++++++++++++++++
.../src/components/Dashboard/WorkoutCard.jsx | 18 ++++++++++++++++
.../src/components/Workouts/WorkoutsList.jsx | 14 +++++++++++++
fittrackee_client/src/locales/en/sports.json | 7 ++++++-
.../src/locales/en/statistics.json | 2 ++
fittrackee_client/src/locales/fr/sports.json | 7 ++++++-
.../src/locales/fr/statistics.json | 2 ++
.../src/locales/fr/workouts.json | 4 ++--
fittrackee_client/src/utils/stats.js | 14 +++++++++++++
fittrackee_client/src/utils/workouts.js | 18 +++++++++-------
11 files changed, 112 insertions(+), 13 deletions(-)
diff --git a/fittrackee/workouts/stats.py b/fittrackee/workouts/stats.py
index 80de9480..de9a97a5 100644
--- a/fittrackee/workouts/stats.py
+++ b/fittrackee/workouts/stats.py
@@ -67,6 +67,8 @@ def get_workouts(
'nb_workouts': 0,
'total_distance': 0.0,
'total_duration': 0,
+ 'total_ascent': 0.0,
+ 'total_descent': 0.0,
}
workouts_list_by_sport[sport_id]['nb_workouts'] += 1
workouts_list_by_sport[sport_id]['total_distance'] += float(
@@ -75,6 +77,12 @@ def get_workouts(
workouts_list_by_sport[sport_id][
'total_duration'
] += convert_timedelta_to_integer(workout.moving)
+ workouts_list_by_sport[sport_id]['total_ascent'] += float(
+ workout.ascent
+ )
+ workouts_list_by_sport[sport_id]['total_descent'] += float(
+ workout.descent
+ )
# filter_type == 'by_time'
else:
@@ -110,6 +118,8 @@ def get_workouts(
'nb_workouts': 0,
'total_distance': 0.0,
'total_duration': 0,
+ 'total_ascent': 0.0,
+ 'total_descent': 0.0,
}
workouts_list_by_time[time_period][sport_id][
'nb_workouts'
@@ -119,8 +129,15 @@ def get_workouts(
] += float(workout.distance)
workouts_list_by_time[time_period][sport_id][
'total_duration'
- ] += convert_timedelta_to_integer(workout.moving)
-
+ ] += convert_timedelta_to_integer(workout.moving)
+ if workout.ascent:
+ workouts_list_by_time[time_period][sport_id][
+ 'total_ascent'
+ ] += float(workout.ascent / 1000)
+ if workout.descent:
+ workouts_list_by_time[time_period][sport_id][
+ 'total_descent'
+ ] += float(workout.descent / 1000)
return {
'status': 'success',
'data': {
diff --git a/fittrackee_client/src/components/Common/Stats/StatsChart.jsx b/fittrackee_client/src/components/Common/Stats/StatsChart.jsx
index ca3678f1..1862b0d5 100644
--- a/fittrackee_client/src/components/Common/Stats/StatsChart.jsx
+++ b/fittrackee_client/src/components/Common/Stats/StatsChart.jsx
@@ -53,6 +53,24 @@ export default class StatsCharts extends React.PureComponent {
/>
{t('statistics:duration')}
+
+
+ {workout.min_alt && workout.max_alt && (
+
+
+ {t('workouts:Min. altitude')}: {workout.min_alt}m
+
+ {t('workouts:Max. altitude')}: {workout.max_alt}m
+
+
+ )}
+ {workout.ascent && workout.descent && (
+
+
+ {t('workouts:Ascent')}: {workout.ascent}m
+
+ {t('workouts:Descent')}: {workout.descent}m
+
+ )}
diff --git a/fittrackee_client/src/components/Workouts/WorkoutsList.jsx b/fittrackee_client/src/components/Workouts/WorkoutsList.jsx
index 771fb68f..745a1a47 100644
--- a/fittrackee_client/src/components/Workouts/WorkoutsList.jsx
+++ b/fittrackee_client/src/components/Workouts/WorkoutsList.jsx
@@ -21,6 +21,8 @@ export default class WorkoutsList extends React.PureComponent {
{t('workouts:Duration')} |
{t('workouts:Ave. speed')} |
{t('workouts:Max. speed')} |
+ {t('workouts:Ascent')} |
+ {t('workouts:Descent')} |
@@ -85,6 +87,18 @@ export default class WorkoutsList extends React.PureComponent {
{workout.max_speed} km/h
+
+
+ {t('workouts:Ascent')}
+
+ {workout.ascent} m
+ |
+
+
+ {t('workouts:Descent')}
+
+ {workout.descent} m
+ |
))}
diff --git a/fittrackee_client/src/locales/en/sports.json b/fittrackee_client/src/locales/en/sports.json
index b8e9bb78..59eb4974 100644
--- a/fittrackee_client/src/locales/en/sports.json
+++ b/fittrackee_client/src/locales/en/sports.json
@@ -3,6 +3,11 @@
"Cycling (Transport)": "Cycling (Transport)",
"Hiking": "Hiking",
"Mountain Biking": "Mountain Biking",
+ "Mountain Biking (Electric)": "Mountain Biking (Electric)",
"Running": "Running",
- "Walking": "Walking"
+ "Walking": "Walking",
+ "Trail" : "Trail",
+ "Skiing (Alpine)" : "Skiing (Alpine)",
+ "Skiing (Cross Country)" : "Skiing (Cross Country)",
+ "Rowing" : "Rowing"
}
diff --git a/fittrackee_client/src/locales/en/statistics.json b/fittrackee_client/src/locales/en/statistics.json
index 04bb7011..1ef9b420 100644
--- a/fittrackee_client/src/locales/en/statistics.json
+++ b/fittrackee_client/src/locales/en/statistics.json
@@ -2,6 +2,8 @@
"workouts": "workouts",
"distance": "distance",
"duration": "duration",
+ "ascent": "ascent",
+ "descent": "descent",
"month": "month",
"Statistics": "Statistics",
"year": "year",
diff --git a/fittrackee_client/src/locales/fr/sports.json b/fittrackee_client/src/locales/fr/sports.json
index 3cc6591a..e2d7828c 100644
--- a/fittrackee_client/src/locales/fr/sports.json
+++ b/fittrackee_client/src/locales/fr/sports.json
@@ -3,6 +3,11 @@
"Cycling (Transport)": "Vélo (Transport)",
"Hiking": "Randonnée",
"Mountain Biking": "VTT",
+ "Mountain Biking (Electric)": "VTT (Electrique)",
"Running": "Course",
- "Walking": "Marche"
+ "Walking": "Marche",
+ "Trail" : "Trail",
+ "Skiing (Alpine)" : "Ski (Alpin)",
+ "Skiing (Cross Country)" : "Ski (Randonnée)",
+ "Rowing" : "Aviron"
}
diff --git a/fittrackee_client/src/locales/fr/statistics.json b/fittrackee_client/src/locales/fr/statistics.json
index 28178e12..7a90dfc0 100644
--- a/fittrackee_client/src/locales/fr/statistics.json
+++ b/fittrackee_client/src/locales/fr/statistics.json
@@ -2,6 +2,8 @@
"workouts": "séances",
"distance": "distance",
"duration": "durée",
+ "ascent": "dénivelé+",
+ "descent": "dénivelé-",
"month": "mois",
"Statistics": "Statistiques",
"year": "année",
diff --git a/fittrackee_client/src/locales/fr/workouts.json b/fittrackee_client/src/locales/fr/workouts.json
index 782a4073..ae510bb9 100644
--- a/fittrackee_client/src/locales/fr/workouts.json
+++ b/fittrackee_client/src/locales/fr/workouts.json
@@ -5,13 +5,13 @@
"Add a workout": "Ajouter une séance",
"Are you sure you want to delete this workout?": "Etes-vous sûr de vouloir supprimer cette séance ?",
"Ave. speed": "Vitesse moyenne",
- "Ascent": "Dénivelé positif",
+ "Ascent": "Dénivelé +",
"Average speed": "Vitesse moyenne",
"Chart": "Analyse",
"data from gpx, without any cleaning": "données issues du fichier gpx, sans correction",
"Date": "Date",
"Delete workout": "Supprimer l'séance",
- "Descent": "Dénivelé négatif",
+ "Descent": "Dénivelé -",
"Distance": "Distance",
"distance": "distance",
"Duration": "Durée",
diff --git a/fittrackee_client/src/utils/stats.js b/fittrackee_client/src/utils/stats.js
index 57fd83a8..441fd5ea 100644
--- a/fittrackee_client/src/utils/stats.js
+++ b/fittrackee_client/src/utils/stats.js
@@ -39,6 +39,10 @@ export const formatValue = (displayedData, value) =>
? `${value.toFixed(2)} km`
: displayedData === 'duration'
? formatDuration(value)
+ : displayedData === 'ascent'
+ ? `${value.toFixed(2)} km`
+ : displayedData === 'descent'
+ ? `${value.toFixed(2)} km`
: value
const dateIncrement = (duration, day) => {
@@ -69,6 +73,8 @@ export const formatStats = (stats, sports, params, displayedSports, weekm) => {
const nbWorkoutsStats = []
const distanceStats = []
const durationStats = []
+ const ascentStats = []
+ const descentStats = []
for (
let day = startDate(params.duration, params.start, weekm);
@@ -83,6 +89,8 @@ export const formatStats = (stats, sports, params, displayedSports, weekm) => {
const dataNbWorkouts = { date: xAxis }
const dataDistance = { date: xAxis }
const dataDuration = { date: xAxis }
+ const dataAscent = { date: xAxis }
+ const dataDescent = { date: xAxis }
if (stats[date]) {
Object.keys(stats[date])
@@ -94,17 +102,23 @@ export const formatStats = (stats, sports, params, displayedSports, weekm) => {
dataNbWorkouts[sportLabel] = stats[date][sportId].nb_workouts
dataDistance[sportLabel] = stats[date][sportId].total_distance
dataDuration[sportLabel] = stats[date][sportId].total_duration
+ dataAscent[sportLabel] = stats[date][sportId].total_ascent
+ dataDescent[sportLabel] = stats[date][sportId].total_descent
return null
})
}
nbWorkoutsStats.push(dataNbWorkouts)
distanceStats.push(dataDistance)
durationStats.push(dataDuration)
+ ascentStats.push(dataAscent)
+ descentStats.push(dataDescent)
}
return {
workouts: nbWorkoutsStats,
distance: distanceStats,
duration: durationStats,
+ ascent: ascentStats,
+ descent: descentStats,
}
}
diff --git a/fittrackee_client/src/utils/workouts.js b/fittrackee_client/src/utils/workouts.js
index f9a977bf..9bbdc551 100644
--- a/fittrackee_client/src/utils/workouts.js
+++ b/fittrackee_client/src/utils/workouts.js
@@ -4,13 +4,17 @@ import togeojson from '@mapbox/togeojson'
import { getDateWithTZ } from './index'
export const workoutColors = [
- '#55a8a3',
- '#98C3A9',
- '#D0838A',
- '#ECC77E',
- '#926692',
- '#929292',
- '#428bca',
+ '#F94144',
+ '#F3722C',
+ '#F8961E',
+ '#F9844A',
+ '#F9C74F',
+ '#90BE6D',
+ '#43AA8B',
+ '#4D908E',
+ '#577590',
+ '#277DA1',
+ '#272DA1',
]
export const recordsLabels = [
From 6b044a31ed640ad8011e17e1eeb0dde74a2a84c3 Mon Sep 17 00:00:00 2001
From: Sam
Date: Wed, 1 Sep 2021 11:19:11 +0200
Subject: [PATCH 03/15] API - lint fix
---
fittrackee/database_utils.py | 4 ++--
fittrackee/workouts/stats.py | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/fittrackee/database_utils.py b/fittrackee/database_utils.py
index 7570a26b..d84c3d77 100644
--- a/fittrackee/database_utils.py
+++ b/fittrackee/database_utils.py
@@ -44,7 +44,7 @@ def init_database(app: Flask) -> None:
sport = Sport(label='Trail')
sport.img = '/img/sports/trail.png'
sport.is_default = True
- db.session.add(sport)
+ db.session.add(sport)
sport = Sport(label='Walking')
sport.img = '/img/sports/walking.png'
sport.is_default = True
@@ -56,7 +56,7 @@ def init_database(app: Flask) -> None:
sport = Sport(label='Skiing (Cross Country)')
sport.img = '/img/sports/cross-country-skiing.png'
sport.is_default = True
- db.session.add(sport)
+ db.session.add(sport)
sport = Sport(label='Rowing')
sport.img = '/img/sports/rowing.png'
sport.is_default = True
diff --git a/fittrackee/workouts/stats.py b/fittrackee/workouts/stats.py
index de9a97a5..5ca9a23e 100644
--- a/fittrackee/workouts/stats.py
+++ b/fittrackee/workouts/stats.py
@@ -129,7 +129,7 @@ def get_workouts(
] += float(workout.distance)
workouts_list_by_time[time_period][sport_id][
'total_duration'
- ] += convert_timedelta_to_integer(workout.moving)
+ ] += convert_timedelta_to_integer(workout.moving)
if workout.ascent:
workouts_list_by_time[time_period][sport_id][
'total_ascent'
From 69467d8a6b1a6835c1d81448290a191c78effba2 Mon Sep 17 00:00:00 2001
From: Sam
Date: Wed, 1 Sep 2021 11:21:00 +0200
Subject: [PATCH 04/15] Client - add missing sport images
---
.../public/img/sports/alpine-skiing.png | Bin 4406 -> 9899 bytes
.../img/sports/cross-country-skiing.png | Bin 4406 -> 6610 bytes
.../img/sports/electric-mountain-biking.png | Bin 4406 -> 16475 bytes
.../public/img/sports/rowing.png | Bin 0 -> 7245 bytes
fittrackee_client/public/img/sports/trail.png | Bin 3104 -> 8271 bytes
5 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 fittrackee_client/public/img/sports/rowing.png
diff --git a/fittrackee_client/public/img/sports/alpine-skiing.png b/fittrackee_client/public/img/sports/alpine-skiing.png
index 9b26acfc13e66f22270edd0a270966e76b5fbabd..6372a9d36b4ea4ebc23892915fb6eec5dc873b00 100644
GIT binary patch
literal 9899
zcmZ{JWl$VJyY<52?!I{N;O-g-9w0abcMIKNfpA8q(IGNRd<62$h`|hb`9^h?A55u$!&X3xpEkv0#i>0;QV`*@Ujg
z@_C~S``>g)TB2}59Bgm8^GZ#f@`CsC2Lyj6~BZ
znympb`Q~zF$(Ln_JJHiE)N&_G7`i4<6U6Bs&s0|zxXwzON;9sCL`(N*Hgq3}lpao<
zo23+g`o?QpgN2k(Zu`X0({e+Yju&sn8eT2*`&JwR*9VfvBG{pzCmQQj?|)hyK+b
zI^>4F7d3VXWZeq3G3mfF6X11R&+JIU)p6XUlHAt36yh#iOqG9bYUIYtEIhih%mu`J
z!LHDtg!r|U8_#9)J&T=RkcE_j|S
ztomOaY4rsEL5&1(DZ@UpQ&i)9Xk_i61s{Zzy
zQPv}7Tl~ey;FkLrtmU<~L$#S{ZVcSh&7bM00ck(mKgwEZil(NjI6_Q$$)o2$_giyi
z4Wv|VHa~L=duFo&iB-d$o830W=fh5xAASRY@7Xex%jWFBzwdZ4vJhhXT1@y*)$^1=
zRVd%SU=XFu4l>qYV=&djCt!1qaGI+G
zcbKm184Q+^C$QW2^Z8yvTdxe`EGPT%&f40BbjxVafQ64l=;imr!;NZiaL`;oVz7MV
zdT=m5COBeGqafZ0SD6lh>GrH9Q-&tC(_4+r>*LiUw?9ARhVjz%Tk?cc(7lKlbTVT4
zJ4W{wS5@-{b(*S%>uTc$Cn0^PYp(*zsn?gmW^Bv|w{~31^_E?g6g=`Hl3)CYb!k*Q+2OS~|#n|f7
zC1dPnc`8o~s%q7MU((0%N+A{tM%SruFMH62PUv~pci8)53s86^Wc`
zlg-unx&vy(X2&ae0J8itJrIWJ(}x}qK*!5s2oL9L9%XJJE_+-_ROs+hv5~vTL(>)j
zV=O8G8e;O-(c3%R)ynGfypT4H=bL3)&esUkg_xEsPU6l&IZa{;y*gF-NCfDT!H;pB
z_@L+eyFkwMN;|C@63ET_IdfGvOh+gCv9@GHLIg3lUy!uwSXYU%qyS2-Mvd1Y*QJjw
z9mi)rF;UjI9JciZz1+UIpslxAoB%fj)$ARQu8T{Qm(^1AXN1mvHQW?`gW4+S{oL
zczcff$-*5pa9U3$E!Csm-sQECVBqF>`$&pJz!G%5+T#Hlfx4XHD$w%Gh?#&=Ufb#g
zS}huQa5Vhk`JOw`UQ5qQW%e_33eAUh-);H{l3Vay#MLzA#<2?wJ4m|D%?JtbdMb~A&COg~VJO+WC<^Zje%@?Eno
zb09l{qSr>FHM6J!$b`)g#$CUwkDXP9vYd=c%gWgkyssXNl}cLb;rU1(fcA|iV6OD7>hj7FqlGc|l1ma6+ajkbu3wz(Vv0gDy
zDDwznmXuxPW_&H4`%;OI((0nNTPTj5kihN|;J!ZrtljK~IhYN_*GnBd$){54BcA@6
zXxk9qMU(2ijlqRP>k8i(x*y>^IMN}qm@ECtrF=GZo{!$-4S8p%Pu7Ku8tc5CDI{aK
zswVx?MJD7xwAzS3*6#bgP99~_IycIj;Oz!RmB?&ufL$9oRt
zZ3!p52YZl%c9ypLtCbZ}2l
zk>81@#}t4~0J6})Rkba8pnauEs>MWa*dt|RY)wcn=NxqS&uV!R{QEh2R?>>L(|?{G
zuCCJ35=czi0Y&ZDOuw%&A)+1;J9POkT*j4|mDKk9fj@KVrAX;RwZdCsREURO)bm#A
znz8dEqhyF8Bg}6Oy3n5p$WxIB1%63L5WW+!85=sBz7dK&mq&p`RyWy`kX#8BXL2PA
z2V_1=v^mEC2M@C8uC6XAI0tT$K?z2XWj8oxz#&EC0`058Ir`?(FfeLO0ap{DqqO_{6W~j#7xd^0?^)
z#l>yRHxfu6DUoI!YB^?nnktwpH4EMi4gT#bEHH}oaiC@AS~CY
zXeJAK6thjAI3!ffH)*LgS@etjh-a(Mr9FOpfuYy!9R_@xNXY#@Ge%WJwey|KIT!mG
zkWuONZW@nWqk2S$EWP`q!mK7P%G%0A}!uu^YfTcaDHusb*~R
z2}hG<6l+9tx3G|Y{t!Du=Fjs*9M1S+-`QF->-poXV85Uly5dt)SAnZFA0PVIGV7bD
zsE_24e!qk1UHSkoFdqC866AoVM+9yZz^~2-EOFYK;iR2bRMKL0<8P)Q8(Gn{(-rd!
z+Rm!c74UDG1gF1*-aN(?%5Z4*16iM~W9~~7lc>uoZ08Qn
zx|EFu25ve!RIhq_e>*M%MkzRPDThHSQy0IzTz+n;j*hf4h<}Zb&oX50_H$7H0(4u~7rdp+#KaNA
z2xyYDT-o>$b57OK)Tp7WYZ~+2_h@e~Xndx@81zv?V&3ltuqEERH`Z0wA1uZ7U+
zS%@cRRsKmNH-7f4J!2vp2)OR@`+V`p!6A(09d`J`BM>?x7!I7_Y0uQwM2%o623$Nv
zMNXI>dJ{4-3hCW`m4ete%$tRb2P|8;2!-84F9fQW>p&M3B$z6g#z;($AqsO|NT`LD
zm5S8?JOwDY(ZUU3CjS0i=-c!_R{rn<9t9eXbYUzV-(^&m7Ar*b&w!vOFhRE#&5l1{caj`^?1iWXzQela%V-5zLx+B;
z7yN10buLtg6OTg%AiEpF2YOyXn55%a6lUPW?7yxE@29GljFYz==`55A;B9E)TSrz$ALcAvooqrn^P;fs7Tpnrp{|1)b^
z*J*4tbk~itj-2AUwqj*slR(F1zP}5thgUe_sx1hltP|O874iUg48NeAGO4qQR#qXV~?1~K>-fIteh-nljgcUN!FVA4@rhi|&`Z9=eqg6h6T>kP
zpWk4tE2y!L+ZWB-Z(3==iyJ8?%yJ;Q9q1G4aBF9Umbwa-umrISVg=r-%DOW|-E9y2
zJs&LX4ri1_DlAdjutp7nrcgxTeq_fs=*f4Lh>BXD8c1qJMxhcP^<>1YKDsD?{6eT<
zdE`;h(jxd4rPk1+hzmYr^LCJRyp#+Sey-eBNyQ@n^uN3q8KfQy@Jv6U5%_wMfyV~^MX^<9gwhWl^D_d`#CT7U&07p
z(}GXoIHYE{I0?W@ev2#=I~F2jYJyNEjMAZ78$Un}TnpF=Wt7h>!h3D-2_pA~JB?&M
zJLnnK8sq9FFomR{GI7XSY=~_cV}S|W+ea8>18O{Gu?)Oh+I;UG;j7{=mAn=GL&TR
ztcn#m5Ja|K2ZD4ozhSU@8^J)|=tBv9Bcw6CLDJcd)#n3J6}1YL4eQ<(yQLB#XzZm>
zJz3aZPu!tzJ1B$5#sZXCj1l9u!+RnrOv}@*md`u>N7mgr7_OkJm#V42G|ZS
zf5d#4wxARDJ{u4o03R>GyEr;wTlE$Uhlzk`=<*>o+DS6A+1BZ*CUL&p`K0zKZsB4<)TUpbYC+clC|J=Rdyi1#)CMLwgzQgeUBJ$gebVzd-8$LC%3QLMi8JpN_r-az5^Cdb91*Rbz8p@EtLQ
z3y&x1v&4p%hYAag374!g8-$?+&WuAr5@BPOtyVA%Ue
z)A)TVEA@C^y+(d)%t<#%3m+f*(RZspgmj*762{dm2RU1)jQ-$>0P4O>T
zkCQ0w{FWIxzO}o!?rv`j|LSmffB)=+9WXW=ou`@SSKv@XkDfjV-x=^9P6c@|N2K~*z`z}ESMWL1f6<+wo_GOQ;oLO_4hB5
z5M|E;sm$!jeI!rpW?Hl>U`y5_tA4o_DmMp{xRdmAD{ETBcFE4p&P6DUG8*hP#uGgr
zc_}%v$in3KeOOWJJC9O-scefT^&57^KKGvxP=&%pYbB-Dce7Tf`dEXg+#bhspG;FD
z%fo;_)zoUi3f(v0fCQ2bf9isX$iV73%1_%1#mIoua`W=?+t6~keOwyJxP=>j-$!0O
zxp(Uiq*S53JzIaY%vt!*5i^w2WdXvi_5*Eo;j#}aVP7^XG9Uln;JAe!YOYer(9oHHJyWTH&-M{yUJO8vxOd9zVk}JR~V@7E|kD(D`gFj9sBO
zo4}1j4>xH$>w5n&^FME+{a}?v`fAQHE;6{EeQUiG9pVojQ{?U~nuZHra(ZI|_P$^h*>zwrlzTE&mqld{+UIJ!-xV5mF8W2ednfPf4k;lhXhf*7x>6G~kKVarq=Rm8
znLl&Uwa~(7&oau{c=y{_!b}5KQ8*saXAPMTX&Q_c@g?J#n3(*pC*L*D3X|1EfF{WV
zvGf}Nia_AG=o9%tUvwf?1A-;Y_=`DLq`U&cQHr2(2&`d?Oc|AcLivxCStvtez7>Vb
zCf36YCDXW7AatD1SVJnr8(FN%3o4%|*(yx`D$3QM1I7Jy?tg?fiu5nBT1vF_Q+YRH
zcs?xKHyS)VfQ1-S1qB50I?GbgU~zmx9)Jpj_1hfEa=y5jf=P-2h)~-C(2pSMwNgec~2M2zw=d7^EpQ{OW|uNDJJ+%PA09T
z6|CWbPJ}HuTxY7y)oNE{Q2LS7`W%8Q#zS<^Z`a#a_tO6gaJ)>cQCi@C3)9WmZp2Ym
zI?a*(0t8~C>NHoIh$lweAibRtax_6J?hiSd5FRGeR)
zg_}>b*C;Uo546~MM}eOFl2&)*(8|hwYJWVKkXBVf!gS1R3A!DB$IG?KTM3ZTRVp@!
zkZ?%uZlSm(0wv?tCT|E^SxHj$ornaeEET!LVPVTiv+lp3nsD-%nLjSRpGF>3q@ttK
z_1wDFSJg4EVd`_m9AZI+URF2V1)};#maw%eu4}6cQ~89quhqU*k5n^YOD0o3)Mi>B
z{-sP$4a~F9(O)^7aXr!mBkzCZdR=zOU$$#lM$nY4cmkfC{aDXn#PN9C2L$h5{XA5V
zu-rWzIvG}th(+^7gUDr;Fu;{q%w>HfoKOt)r^i>E@9weHvC+4U^xmR6tGBnq9tE5#
z|0q4Iiezyf8xMVc>0cal#PX22m?Y2DFrnjQQ+8&Sq<5*&vafMZtee02;Z#!mw$^Z!
zd4}5Ne0}6SWZy^+j4u;l2>T7SONY|c@8CUvWu*9GL;vwo<
z?LAvJ=MvtU%n^7bseIk;vD5yUq`#@g*u-NlHP1$7_guCs@oUGt)=0E(CDT#06id
zKg8808{zD1{VGxPB-5K~3jW>RcoaCn=KR9^nVs3HtB{)2|Low+z_y^@=sq4U>b6@7
zwJ<4FZ#t_4>!9)16B=o(r;%iym@URtMMcV7b6F{u*f`dc^KWaibF#txK0ZCc`h-&r
zzZn>0fTSP&(I>-b)X({!Hbj2Dx+0SJ9wBECw*sS|uF74aR#)Gwa9FnaIYc=qgo;~^
z?upweCSnedjI1{4ltq-!j9i%MlD*mje)`7YSt1oG;f;kaHba&X|EpS;?01W!9(}bp
z($@1sAe2L)=JDccIZsTDv+G94_jtQ6uM;1NU}`4Ohb{8
z5Ey$wRHBIIi?vNZwgd8e3(I4=rUZh4ff~K(DM5_Yrix0vk{|R1)3SpC6y;IT{oKAX
zzq-0$`I+JUcYI2@bFheQ8CO?2o^QUajXf)WD><5S#B=jzsh%Nf5#H3N)*nPg%s+I5Wf+^#
z0T27Wyh(!P<2ery&-5w_Q{RJxr4P(TTCs6828YvzgLZeoccfg0ixbKlO7#!mpjR!(
zWJB|!!go7SmAp4-Kop$B0MIJ^C=+X(tBExz&(HSnI!`J&a!02nOI_hRYU(m)A$nAo
zjCCAH-*1!7-mkLXGn6x8$9ZJ>#>NUJe7=5dI&MZ~J6i=7m*#%HQ1
zZFp;esyo{gGWWGsgH&;&bEJ(UZ2Bk>2%|VRd3dbfd6p_wVZ24lY_zrJRgO?}bD1fe
zo1=bqgr6uCLTN(GXkUOxQyzCwHjuLgNxSTMcC2!q
zuQteJab99(fBM`h#y|9GMwyBIDo*tk6@_X67lDObuW
zM%vU(BL2&pR7UhMzu3D@-{Eh;+tA0-1aE_Tj(Fp$%A(NoeVJ4BL@KT4g0dY~cQ1L5r>eY@Gf6O~~;0S|aWIxp_Ot>@t2V3!egxF|~A5^3R)VU^z
z6b^e?|CKs1N`0wCPa)G~vI8y6=P1cBIOywP9dTQL`0T&J(GfG$U*W-r#t$5c#(rF?
zaBe3ugCQr&98KkMQx}vtKy^8HuO{BhUg_oIQ2{PqOlmGlT$k(c;x|1P$Ix--@sGr;
zl;YG7{*WYJ0#!p`srtqkoSi;@#fYEw-h%fth~Zqn#=Dz*VBhpEv({OC*pefFgqI4m
zjW&hS5{C{EZNXM662SBQEqXf;&!}5fN!k_lbG`KyNDr=-e|#2%JSnq<16f|}Wn!ou
z=ujr2;K;K!M|xUXg1sClr+BuohY6!2V-ge_1>KyXOS|Ro7$UUi=U__}P&7Cqw+z|*
z(EGpmJ
zudEctv>py8*2urC)z-tKk|r+;@F69Y>KV_tJDCqu^X&;1shY9Z#}>RjH_>v$Ja{uz
z^s4X*U^~UVq{_XBgGGLb8nq7r?FAFAgsM5aI*jXE(tB8JNed>w
z-}*pJEqk>*_qOUWhKR+GgS`WOnz~eo0M?x*T=e!v0id5{j%i{bY^{{T@n!Q=Rx~3c
zs;e*9hf6!T)hy-6E+SM2lP?P-;(jz$B*y-1WqtKp8@}DmFAF$Eo6;`ov
zirTF>PEom)C2_AzK#l61HrCKgBSsd2#?z6wtcOzZC*b0|bfHqi21DoRa+ir%R~RmT
z5idEcU&ra_G*OE?2K(;hs#art#&ZqjtUxmAD@%-`nD-3YQ<9{-!mDilZbyDGksogR
zQ~0&_KaN;)+S_}b=Sm#u=#XnO9v|pgpAm%CR{lwNWHQZNTz`WM8>5iVWif5Qs?pNY
z0eQK~L08N9p14bJZH++iYg|(NlPJ+&iiwOme{j5RZA0_{Nv&xMhTg8~WpndFCI;w@h4Z0ps&?Cqc@O|d0}Tq|DTxU|B?Hm>j1
z3kl@crPBI&>5RgFFfD{-(WGqJj=S0VkdQ`2Y$*HZG|3fnDY4GE%qxBU8HDxl)k2wY
zARf!&o|U++IWfgN0?{ra>7GWx=}Yd
delta 4324
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
MPF1$_-RE!r3vKJ#4*&oF
delta 4338
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
d?CuumaSnUe>-CbJ;~*~H4Y#K<-Je*hrFFzf&T
diff --git a/fittrackee_client/public/img/sports/electric-mountain-biking.png b/fittrackee_client/public/img/sports/electric-mountain-biking.png
index 9b26acfc13e66f22270edd0a270966e76b5fbabd..691db7a4d606091a5768d23a46dbebd2152de7b4 100644
GIT binary patch
literal 16475
zcmeIYbyS;A6E+-zySuxF;O^7+gAx|s007c~
z038D_Eel^7HxE}EdnX8um%kf?2I6OL0|59f)nw~?P>8n5KXb=X0lP@CoId6BlZVtL
zRu{7W?zX=vzru|L}`K;1Tv_^Sz&V+1Pr$aQnsu_pRqT(U%cuea8YdVdz-o7;*aeV~n7P>9zN66Z%OD9`K@5Xi>e2$E@k%JpEztwwHnN$KFG<>m$YJ
z#VUdH)em%ZPoxw_wl9~MoLvr=~F%hrtA&CZ9VKM($H
z8CBRc+dA}+B%_|y=zg097Cqju>ev;t7v}8P=@4~UpFdzyNeFousJeZ-vLDD#u>OcK
zmy%O~?Hhy&;^5gIWath%{gvF(7P#)?DrmAZ{Ow%rv@Mh8I8h>aWP}>*m885TY$Rzp
z)X|k44q@^9HQK2dD|#xTEZBFNTo;-)FNHLX=?RHgP1?hwZ`XJJkTjs`wUPLGzI@*J
zRUJAG-ASGSMmkmAcTR?kJkT2PUaS?PWFES1_As{AhSo*A?k^Gb
zy=8Nv*NV-WwEQ414?;MBpXHyFF|P@M}Gel^8R$9PCTy
zHLO(m=e4Rn)ZFYE0VuS;)if^|9_Hov)UMngkC6vZheYBkkol)+Dv$?jN$`&GU2-&K
zFWQ)eL?NnGcYUp_s_9uROY>Q=-!t)9b-tDTkmt6g#9ZL<)4n{^`g<00O>fZSLv_3F
z+~fDOH3Nyp;ktJhJ(2ji3_A%4_xqpyG?7^B>T(xyA78mbC>9uXtYYqW@^`k
zmWL&I2QyP-ZpUwXU0Q3cfghoD9>1KT%`xj8V!nR$p=EAQ%x!yn$X_Pr!$cBMietDY
zClR>F=}f}+kQxwIo|vY}`6WZR0~
zQEd{g%%(_9>Al>0O;9KrVOk16?kyN?==e=4dEk)uKRShZ1N5DvO?JD*7J{^t^A{7%i!A^6l=
zVmu#KOE}*V8>%zi3yHI@y?b>J<9cdl#%JE@=V065}
z
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
literal 4406
zcmZ{oc{J2t_{TqkF?JJ%ERm#|kg;aVzJ(}5h%Cv@j5TA48BNKaENPJtvTvD$nn5V*
z*vCG0ku5vnH{aiXzdwHWoaesJJ@@sT=bYz0_ug}F%xzNxb`}8^007u;8tR(U6#Jhs
zG1B^Gb*B!RFt};m(gJ|WB-VdUVA}Y+v!VGd00_NA`76J}pSn*dt0;r|SzedR3%0HEAAb+s%oqpO)AfkG{>
zNs)sB%#u&o&z?a!GX?+ABz06Np0BaC##CUntX&{Yl^GL`O;wM6`JGP^9rxrnR1%rv
z7mgllTL7A>K*i!OqeVG8>3OZS6@_g6Xg)wxRkEwp?IsC_1SRAb6cmK%_Y?QFqw9)`
zh-HWQb&2aoEL>b%SNYB?Hm|%TMrx)l-LMpMrR(qYhHmg`6Yp&uSaE7>b>4Sqxv%A%
zN#P;A>z5TNm2zy8%=sq4a610Iq(T2tg7-#f@Fd%tDLo=Att3tNqcgxR&DbUJnW;pLc_hXHRD?g-!`f(2
zhK9N2(M?w@^bRWaPQ1Fpkon!?;J<=ok5c0CSlSojxxA7z?KuftN~jkf&U!^7y0+Rm
zWUT*AhYehJlpbg}e&jaQXdrT0`>2r7PiQ1auGV>MqyGvbFD
z)sSk4^Hn$$Pry_bS(R9STPA4yZ%z$)sHv>HiR-J}1-Y+9p$@@MPe_^#wYFxfMV7^V
z6Mk0O;>bWSV)0WPd7LHO2S2t_104>Q^m+^>`&sFWn_Gb0Ur5D)4_!rWs``HIv~fC?
zSz{@bkIe@z_n?%=6}I2*XL>LZSV|)?P1&jwuT2XkY9;c`ue_nlsB!@>ZP7nG&TOsy
z-27eYbDl#$choQKxB!J2cl`b=hv1iqmlVNJ9zBq$`#n3W%;ozK3y5TnE$LR)`gl;s
zC`5RP`D(PX?PFG*E96^j@BcmuS1^6I)6_TA)q*+o&$+^?HCXumD+4+lE5JT%Hm+tmrIv72l2`bCEG_B`gw{cPC|o-aIOCY}BT
zWpWk}JJUBZLbi%7qek=iv-xr+#-Cljw|@I$u(X8sI!M4(`tZ_o^fT*+X;|LbVkxw|
zVlnr#$#;G?JGv99TpE9LaZl+i82}D<4H!!}k0v^j$zg!gQe5oCmBxD;;kkC0saLb{
z>%%CQMf>b>uCeWTflCWEL(Z!mr7*ph)g??pP)uh-$RPK1Gdsut%x29Dd;ixk$zr33
zJoD^P{mv`B^m1>e8c4=Q3%;M3vQNkBkpcRbn>6RJm7Fh<06m41j2hyfaW9|Mbl=Rx
z+FT!ukU2rM5xTjwjj83L&-)V=oQ4Pc-?@|)Tu#uC&3;U`JRdc|9>2rz<|GDku0Ck;
zLlu70Sw4X7dEe8aJu9bwb6@96e`!iXXegdH0NS{4Qr6gqI}IK+Rs;eB7q8mZk8}P>
zu?0>(-e3Du2Ge-#R0vz9OM(ybG)S$`%SNVbMyLs5&Ez82fgV*tjd-UU-&=AhfFv}q
z94-MiQ-0nO#YB=vK>0iJ#FyMW@T-K2<=A0pPAU5FYHW9RAR4otn-46~SA&S_gY*py
zC5-9HgdGj1Ur0&qJJ^)PYj2k8)Zwdg>ZSPk7E74I`|&Nb?SOs*t=bmXAGq{oc0{
zpP&rb1EU}zGGnJ?#V2(VBP!5)WzVVo?4|50noqoKE|5=o&wG`Rbwp$qmn0p#ekwOB
zX!@78=WJAS*;m5X$$IByBls?0rA&aeQWY&&B6<%G1KTNH9R_pP6;>AEZG?X&N3pT+
z!4^^`34cM|^#=J5We7bRF@@t%W0&7OoRN=GP?2NkN)4kUtkbQf*b@dlfq1aYdKC?bw
z*AJahZ7d@zoH&CR!Y0H&4?dW4cIvSz7>-?AO<`c&$Bq@eV*JI&m~XKK;ve3U8-HN5
zvzp;@#RP;O!lg%m8~VQHNb$OvA&Z=G;(lsj7=?;~R8P-$+6;HGj9-@w*+Xns0Cz1(
zVg#}%6Pw2HrzTcYVPjSa%%mouuy}>Fs|h=z!Ke*_FR`y$LZRpXUieNtjyl{s>9*IhIV?Q{q71JalOzOiIi(;&?t378Wk|4}e5K
zVfq$Y6HNAPuwdm5TM>41EZkCRL%qU4S9Y;En&gz|^Z2!dlWW(EmYQmt4@n`>2fUlb
zw#`g&H&Mnf35a}P>%!j9J71#R^pE9F*W)hF?mIa`UqJR7F8z2
zV2)Lv7CwvA%dR=G&$T#(p7(l@w|r&OIWJri;eub80!Mfnr3HsEngh*_i|#9~2m#dP
zq@GvsL3zh1C70dCn0$+)MMJsKvN>^**lX~$DF$<(7g=*@rk%fin!QWvKvFZ4tGXcq
zI;R+Yq@Q>cfP>{*d|#ENgKM^;HS7&cr;F6gUp=7%gi>ZBu7Lq1zWuN8G-+ZqX$25C
ze!?W-dX`S6Iy+?APd$aN?u!V_rXGVV5}?|ucPP_i`cggZ%J4YYhh~&5oV=%RuSXBP
zu&08D4`Ld6{gn~-E)Mqp>N%a}p}y{%vAWB0j|KH*tPJ|*K-1(*!w<;-g31+xocpuM
zQqbJ5Ee>2C8d9)sw+gGSnl|nNv@HZ%0#<)*kkvyY+f(V3JEgB+C
zSt@)!#^qZqas>_#vQ|x?j1*=%rR0mL-7Z63Brl!v;o$=0fX~PcOXq>FD2GgP4hQAF
zV2-K#7gMoi`2psh?2jB7y28C340hv~>6w*Lk+1Xpk~be@RxSKOfDw74kRDVvG_kQ7
zQx~|D@E`<&zU)lg^IPcQoEgY34qlzit~1^K?S8VxmxkLiYsY1gk!7_@J%n*vtWB
zkq*{@zCQZ)u6VwMnF?X&2PrNY61$B%*(p+0U%`~@>{&*M$Q%Zr0kT{E9me&ITu45Z
ze*YAuT=7_%lQm(!9Gq0iYm_0k12rAN
z&&;o?1M;}vfHCzC#n@G*AiJzzW#bwx94(Wx{LMf`t#dkZc(op8ssY
zP&trAS#GwKMg{$4YF5Se9V@i5@rj8vH^_ZO0;1BI+nS)rrZu
zHn+&xHtQuD14Nd;Y7f{0w3@&1v|ntvU*fbIrfoIFKKGep=y{x=w4Is<-Zq$Ce7#!a
zOo~aNXEbfY+0IvGJXMA6Te?aFtFG>LWl_Hd&OZ>k@y&|u+Y;sO_4mhiT=ApML@gFa
zqadZHXf=FGAhk7{@BX;>KE-JOK`eyd=mhak&$($
zeKl~@cv5S25n5Qsu3(#=6xdu@Do$$lBib<|K0z|Tc>Wm$Hgn8a#uKtS-?Mo2M1lF;
zd7j9Tnt_qX4|I0iU*v6+T2hzeaeOM?DNhCDF&Djletm+V=68J>yo=t}yj)t@y9TDNY5H_ZQp981jf4
z!#&B+-ChE5A3k1L8jWrK)G*j|%!VxDnM_B)tHpdr$#JUQ|CVL(weK6f=vNfpElQ%h
zycB0CLn>{AHz00wbupKz%osAmyoPY7lLe}ew8PYz1vtsgmczyMQD&uiF
zHgRXsAc$D}op!94Ip(eOeA6{QRs7L)v+$NL
z;DacPZL^hmUFDNlQ;TaiO
zQ||IMspp)3!nxcy9v`y57x(Skw^=IBfTg}yAZt$g(`rJ4S+300ip~mY-zfUP=>y%k
z;qSV*sT2vV1wJBxhLqbyX}5GgTBpW~8QOgZax3{MW0j>^ysG^4$;~*ijiKotu_UrA
zGqBBOfqlH`%8<9aa==QC;k%J5*wb^$)ZRQr9Qe)8BXWM0^=yr*wRZS6+wsCwyolEr
zUZ%N%N%VEaL+M$c@Qd+2&vpPMLJdccrRw5u7_&>#S-;Um%FsGizhSnQyA_ek7$cjf
z!nDu%QenH&X#LaH!rqi!wO{)Hf6{Cwd$`4T-z9wF+n!2^%b-1(P{S?!-<;vS_K_oW
z*?}(&;sj0;+_dDBQNOuaS|d3TJjfz3oGW#GLpyPm=W_|3vcx(sbkzC%=nTe8B4>
zHP-k{&Su_$oe${lJi&}r*lr44BqRp@tb`97x;zi4c861{QgsHkOTgwd(VUG94qb~l?A<~&7*uKDH40%2@{kFpT$MU2@FC4Q}
zz)@OU51i^PeZ_yY+&YVk02_AJUrmhwKcBH9;kho#41DrEgq`=@F2z?Zq(p$N1;1Qm
zuB;$9fJO~DkR|eVRKis(E#X_esfBWivOvr(01A{9R?OXqc@qVnmtHaU_F??T#y
z1+iARuybRfaFi46H9oU&3Uql`{2_BI@Y4Pa!~^xL10OmCx~Mq&yU+xXMaU>gArz!!
z6fI<~s~{9rfJD0n20Qt?0Kvh*
h*E~>O0nSdoF4xfhZg1Dr1ZWU&Q_oblOxrQ)e*g`bG&cYM
diff --git a/fittrackee_client/public/img/sports/rowing.png b/fittrackee_client/public/img/sports/rowing.png
new file mode 100644
index 0000000000000000000000000000000000000000..d8c69380f7b424d5ff9a76f98a130472c4c7772d
GIT binary patch
literal 7245
zcma($Ra9KdvO@^2!94+j1$P)UK+r)$aMuvr-Cc*^PH=Y}+$RKrWpDyy2m}U#yS_Q+
z-kN
zTL7R5jB{^}hWvhIsi>t20QfN@$3*}DxBraa1pqvG004v;007Ja0LWePx-`X+9q1M+
z3UWw@EH|>09Ld_T|cCW;x#GmYMxZ*z+>tTj9FA*_XG?s8s#KtfQ*u!fW5Tx4D
zZ%6A}tvR!b$6mufG%9E|DLgNm^nFTZx*Bs}eTM4R_jG-8Fm)i#e=5%JzB4HbfV$HB
zKWh3jC0c+kkmi8)pf|h7+^@9APUq9ZZ5XNlYX`d-X%Hcm*-DEovu$BgV1tsu%3uM8
z|E-2iIqbxZ6qOs0J~=?FrdCi;XRvLjZ{O6b9LZl9de`2*8;5^gtU&OZ0r#==>M0$v
zMO55iJp9fJTeqYnk~53D+UxJ!J&VQn)4x*puPz>4x8un}u_vcgn$9qmQ
zxQt?e0u)=uM#&+eOO|FDpQt}g9+Xbb}kV@+=^;f9PYc1^#RMr`mNz$#^2L^e&
zWTjeJSzSW{Qt!1=nb8wRG;X{YO0u~p@wS{dxDGk#xB;XIeDW8QffF-DlLW@&&R0$`
zyQr(5=1b$EFDi%|4Ldcu1rEHV3z<|(B_%)Ld=3*0s#l{FjPqh7R4_6=3HCt2A|o@y
zlre-Db-eyDK#_WON;tk#a#!_!2{gP^hezECU3snB(Cf~!DJ%Ip&e`ED!uYodHIM&f
zCL;OruU+~KDT{g`GZT?!w~cDmRv1&><{*V%GVLT3tWHChL7d!d84WY4s%S;n^r+6KfNk^Ets
zLPuw={?p#p>V3FL*go8DB2l&VM*EQyW!r+W?Qktyij$QR&E3VN!+9w=YTVQUBLChd
zwgE%z?ZXR4Yo_44Lb&qK_1GD0+W{x1D<);7F&2@j!s7JibE>!s`NU@ck4>~MmFN$A
zeUCk^7yGu1i^gRg``%V-D-iF5K^h}Y+(XlbD=#%#9-pthRa>T?{Ta~P}eYzi>
zKG}q$lWuF7zT63$)k{ek!U@qPG7sClyDGyk896OP|2^^nT)XpR3r(q3&b;>BSQd%sw
zWxFw{^y0B@c2l%(6rq-1npDHnnwuz7q2J=8E**SL9KzdOGRvDvKx0
zw(1~rvwp2k-8Z+fMe~JP>Yvv;xpH?gT_`P&2UuTmLgYLG_p;GNcdO==Y1K7(@o;43
zN)+b%$aQ+xNN71d#kZaOyFLwA6Q(6Y8C$S1XZ+q(K6rEL9WNds$<1~7iKCGl|WT})%CCO;{<-(Q3jzzoY+HBiz?pc$4#~iRQ)Vxs`v|J{
z<%+Zl=5aaKz#f1$;dC(1-h)SIjs3fBCNrv@XyiGKjyVK4;TWzm>LwZ8IPKQxYC%67
zS}aMnuMf!}c+OW611Tsd^k5^4znoEZcu-kDjrqsd4O&C{IXy{RAL_qyLbqC^tv-RMc4ZsnoE#lbgdU*tIkCsb6-k1&KpeKZgcbstHhwSU4K>rKj}Tf-e|
zbW+gf;tw0ECNf#jqi6{nwhtfMrJzvM%GZzkpggRlB@zz_$8TeQ{!;OVt$oC{w{%JZ
zfMjE;*r*egVya9FhmOVW&cRX|#88*LOUEotz8jOy0T_t>&T2!FGqU4M72<&fn2|&D
z)(+Hv!7Hbczy>IKdvad=&2)qBAF~6J*q@bUe(F^Cn?$>;M8W?Dhy0u4uyxus@E-e1
z7@J7TQ+)eQX?6}a`6-p<)7c+S^7tC(gdSH$zJCk1Izprd8{^-SeK08DLHbid0>$V{
zW%CBtj{%}o-P#$gEEWCN|FA4MYa4|H)ibxrGW%;@)BC#e4?bbXV9DEkw*&Tsfh8!o
zicEDlR5m(dP(*1bSBOa*Z+}xt<4W!A=#iqfuMfX7GiJtnu7&`+c3*z2UEG$tgBHGx
zTG13eOR0XjjpN+VmYr$t{qHBp+dgUl{fQ_H3uBEdCcGh|1$}xI4l(J92#rzLQq5hW
zsU>