diff --git a/ezgpx/gpx/gpx.py b/ezgpx/gpx/gpx.py index 8eea146..880fd17 100644 --- a/ezgpx/gpx/gpx.py +++ b/ezgpx/gpx/gpx.py @@ -28,8 +28,8 @@ def nb_points(self) -> int: """ nb_pts = 0 for track in self.gpx.tracks: - for track_segment in track.track_segments: - nb_pts += len(track_segment.track_points) + for track_segment in track.trkseg: + nb_pts += len(track_segment.trkpt) return nb_pts def distance(self) -> float: @@ -159,8 +159,21 @@ def remove_time(self): self.writer.time = False def remove_gps_errors(self): + """ + Remove GPS errors. + """ self.gpx.remove_gps_errors() + def simplify(self, epsilon: float = 1): + """ + Simplify the tracks using Rameur-Douglas-Peucker algorithm. + + Args: + epsilon (float, optional): Tolerance. Defaults to 1. + """ + logging.info("Simplify 1") + self.gpx.simplify(epsilon) + def compress(self, compression_method: str = "Ramer-Douglas-Peucker algorithm"): """ Compress GPX by removing points. diff --git a/ezgpx/gpx_elements/gpx.py b/ezgpx/gpx_elements/gpx.py index 93c4767..cfac674 100644 --- a/ezgpx/gpx_elements/gpx.py +++ b/ezgpx/gpx_elements/gpx.py @@ -1,11 +1,11 @@ -from datetime import datetime, timezone - +import logging import pandas as pd +from datetime import datetime, timezone from .metadata import * from .track import * -from ..utils import haversine_distance +from ..utils import haversine_distance, ramer_douglas_peucker class Gpx(): """ @@ -47,11 +47,11 @@ def distance(self) -> float: float: Distance (meters) """ dst = 0 - previous_latitude = self.tracks[0].track_segments[0].track_points[0].latitude - previous_longitude = self.tracks[0].track_segments[0].track_points[0].longitude + previous_latitude = self.tracks[0].trkseg[0].trkpt[0].latitude + previous_longitude = self.tracks[0].trkseg[0].trkpt[0].longitude for track in self.tracks: - for track_segment in track.track_segments: - for track_point in track_segment.track_points: + for track_segment in track.trkseg: + for track_point in track_segment.trkpt: dst += haversine_distance(previous_latitude, previous_longitude, track_point.latitude, track_point.longitude) previous_latitude = track_point.latitude previous_longitude = track_point.longitude @@ -65,10 +65,10 @@ def ascent(self) -> float: float: Ascent (meters) """ ascent = 0 - previous_elevation = self.tracks[0].track_segments[0].track_points[0].elevation + previous_elevation = self.tracks[0].trkseg[0].trkpt[0].elevation for track in self.tracks: - for track_segment in track.track_segments: - for track_point in track_segment.track_points: + for track_segment in track.trkseg: + for track_point in track_segment.trkpt: if track_point.elevation > previous_elevation: ascent += track_point.elevation - previous_elevation previous_elevation = track_point.elevation @@ -82,10 +82,10 @@ def descent(self) -> float: float: Descent (meters) """ descent = 0 - previous_elevation = self.tracks[0].track_segments[0].track_points[0].elevation + previous_elevation = self.tracks[0].trkseg[0].trkpt[0].elevation for track in self.tracks: - for track_segment in track.track_segments: - for track_point in track_segment.track_points: + for track_segment in track.trkseg: + for track_point in track_segment.trkpt: if track_point.elevation < previous_elevation: descent += previous_elevation - track_point.elevation previous_elevation = track_point.elevation @@ -98,10 +98,10 @@ def min_elevation(self) -> float: Returns: float: Minimum elevation (meters). """ - min_elevation = self.tracks[0].track_segments[0].track_points[0].elevation + min_elevation = self.tracks[0].trkseg[0].trkpt[0].elevation for track in self.tracks: - for track_segment in track.track_segments: - for track_point in track_segment.track_points: + for track_segment in track.trkseg: + for track_point in track_segment.trkpt: if track_point.elevation < min_elevation: min_elevation = track_point.elevation return min_elevation @@ -113,10 +113,10 @@ def max_elevation(self) -> float: Returns: float: Maximum elevation (meters). """ - max_elevation = self.tracks[0].track_segments[0].track_points[0].elevation + max_elevation = self.tracks[0].trkseg[0].trkpt[0].elevation for track in self.tracks: - for track_segment in track.track_segments: - for track_point in track_segment.track_points: + for track_segment in track.trkseg: + for track_point in track_segment.trkpt: if track_point.elevation > max_elevation: max_elevation = track_point.elevation return max_elevation @@ -128,7 +128,7 @@ def utc_start_time(self) -> datetime: Returns: datetime: UTC start time. """ - return self.tracks[0].track_segments[0].track_points[0].time + return self.tracks[0].trkseg[0].trkpt[0].time def utc_stop_time(self): """ @@ -137,7 +137,7 @@ def utc_stop_time(self): Returns: datetime: UTC stop time. """ - return self.tracks[-1].track_segments[-1].track_points[-1].time + return self.tracks[-1].trkseg[-1].trkpt[-1].time def start_time(self) -> datetime: """ @@ -146,7 +146,7 @@ def start_time(self) -> datetime: Returns: datetime: Start time. """ - return self.tracks[0].track_segments[0].track_points[0].time.replace(tzinfo=timezone.utc).astimezone(tz=None) + return self.tracks[0].trkseg[0].trkpt[0].time.replace(tzinfo=timezone.utc).astimezone(tz=None) def stop_time(self): """ @@ -155,7 +155,7 @@ def stop_time(self): Returns: datetime: Stop time. """ - return self.tracks[-1].track_segments[-1].track_points[-1].time.replace(tzinfo=timezone.utc).astimezone(tz=None) + return self.tracks[-1].trkseg[-1].trkpt[-1].time.replace(tzinfo=timezone.utc).astimezone(tz=None) def total_elapsed_time(self) -> datetime: """ @@ -191,8 +191,8 @@ def to_dataframe(self) -> pd.DataFrame: """ route_info = [] for track in self.tracks: - for segment in track.track_segments: - for point in segment.track_points: + for segment in track.trkseg: + for point in segment.trkpt: route_info.append({ "latitude": point.latitude, "longitude": point.longitude, @@ -215,15 +215,15 @@ def remove_gps_errors(self, error_distance=1000): gps_errors = [] for track in self.tracks: - for track_segment in track.track_segments: - for track_point in track_segment.track_points: + for track_segment in track.trkseg: + for track_point in track_segment.trkpt: # Create points if previous_point is not None and haversine_distance(previous_point.latitude, previous_point.longitude, track_point.latitude, track_point.longitude) < error_distance: gps_errors.append(track_point) - track_segment.track_points.remove(track_point) + track_segment.trkpt.remove(track_point) else: previous_point = track_point return gps_errors @@ -231,8 +231,20 @@ def remove_gps_errors(self, error_distance=1000): def remove_points(self, remove_factor: int = 2): count = 0 for track in self.tracks: - for track_segment in track.track_segments: - for track_point in track_segment.track_points: + for track_segment in track.trkseg: + for track_point in track_segment.trkpt: if count % remove_factor == 0: - track_segment.track_points.remove(track_point) - count += 1 \ No newline at end of file + track_segment.trkpt.remove(track_point) + count += 1 + + def simplify(self, epsilon): + """ + Simplify GPX tracks using Rameur-Douglas-Peucker algorithm. + + Args: + epsilon (float): Tolerance. + """ + logging.info("Simplify 2") + for track in self.tracks: + for segment in track.trkseg: + segment.trkpt = ramer_douglas_peucker(segment.trkpt, epsilon) \ No newline at end of file diff --git a/ezgpx/gpx_parser/parser.py b/ezgpx/gpx_parser/parser.py index 9640f72..055c5a6 100644 --- a/ezgpx/gpx_parser/parser.py +++ b/ezgpx/gpx_parser/parser.py @@ -279,9 +279,12 @@ def parse_point(self, point) -> TrackPoint: except: logging.error(f"{point} contains invalid elevation: {self.find_text(point, 'topo:ele')}") elevation = None + try: + time = datetime.strptime(self.find_text(point, "topo:time"), "%Y-%m-%dT%H:%M:%SZ") + except: + logging.error(f"{point} contains invalid time: {self.find_text(point, 'topo:time')}") + time = None - time = datetime.strptime(self.find_text(point, "topo:time"), "%Y-%m-%dT%H:%M:%SZ") - return TrackPoint(lat, lon, elevation, time) def parse_segment(self, segment) -> TrackSegment: diff --git a/ezgpx/utils/__init__.py b/ezgpx/utils/__init__.py index b98c74b..3882d48 100644 --- a/ezgpx/utils/__init__.py +++ b/ezgpx/utils/__init__.py @@ -1,2 +1,3 @@ +from .algorithms import * from .distance import * from .projections import * \ No newline at end of file diff --git a/ezgpx/utils/algorithms.py b/ezgpx/utils/algorithms.py new file mode 100644 index 0000000..617e9fc --- /dev/null +++ b/ezgpx/utils/algorithms.py @@ -0,0 +1,46 @@ +import logging + +from .distance import perpendicular_distance + +def ramer_douglas_peucker(points: list, epsilon: float = 1): + """ + Simplify a curve using the Ramer-Douglas-Peucker algorithm. + Source: https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm + + Args: + points (list[TrackPoint]): List of points defining the curve. + epsilon (float, optional): _description_. Defaults to 1. + + Returns: + list[TrackPoint]: List of points defining the simplified curve. + """ + # Find the point with the maximum distance + d_max = 0 + i_max = 0 + + start_point = points[0] + end_point = points[len(points)-1] + + for i in range(1, len(points)-1): + d = perpendicular_distance(start_point, end_point, points[i]) + if d > d_max: + d_max = d + i_max = i + + logging.info(f"d_max = {d_max}") + + result = [] + + # If max distance is greater than epsilon, recursively simplify + if d_max > epsilon: + # Recursive call + logging.info("rec") + result_1 = ramer_douglas_peucker(points[0:i_max+1], epsilon) + result_2 = ramer_douglas_peucker(points[i_max: len(points)], epsilon) + + # Build result list + result = result_1 + result_2[1:] + else: + result = [start_point, end_point] + + return result \ No newline at end of file diff --git a/ezgpx/utils/distance.py b/ezgpx/utils/distance.py index 647aa68..9e9747e 100644 --- a/ezgpx/utils/distance.py +++ b/ezgpx/utils/distance.py @@ -1,4 +1,5 @@ import math as m +import logging # latitude/longitude in GPX files is always in WGS84 datum # WGS84 defined the Earth semi-major axis with 6378.137 km @@ -30,3 +31,46 @@ def haversine_distance(latitude_1: float, longitude_1: float, latitude_2: float, return d +def perpendicular_distance(start_point, end_point, point): + """ + Distance between a point and a line. + + Args: + start_point (TrackPoint): A point on the line. + end_point (TrackPoint): A point on the line. + point (TrackPoint): A point to measure the distance from. + + Returns: + float: Perpendicular distance between the point *point* and the line defined by *start_point* and *end_point*. + """ + + def line_coefficients(point_1, point_2): + """ + Compute the coefficients of a line equation of the form: ax+by+c=0. + + Args: + point_1 (TrackPoint): A point on the line. + point_2 (TrackPoint): A point on the line. + + Returns: + tuple: Coefficients of the line equation. + """ + delta_x = point_1.longitude - point_2.longitude + delta_y = point_1.latitude - point_2.latitude + try: + a = delta_y / delta_x + b = -1 + c = point_1.latitude - a * point_1.longitude + except: + a = 1 + b = 0 + c = point_1.longitude + logging.warning("Vertical line") + + return a, b, c + + a, b, c = line_coefficients(start_point, end_point) + + d = abs(a*point.longitude + b*point.latitude + c) / m.sqrt(a*a + b*b) + logging.info(f"perpendicular_distance = {d}") + return d diff --git a/test_files/files/garmin_etrex32_hike_error_1_test.gpx b/test_files/files/garmin_etrex32_hike_error_1_test.gpx index 11b2d55..fc906a5 100644 --- a/test_files/files/garmin_etrex32_hike_error_1_test.gpx +++ b/test_files/files/garmin_etrex32_hike_error_1_test.gpx @@ -1,6215 +1 @@ - - - - - Garmin International - - - - - 29_04_2023 - - - 492.81 - - - - 492.81 - - - - 492.81 - - - - 493.77 - - - - 492.81 - - - - 492.81 - - - - 492.81 - - - - 493.77 - - - - 493.77 - - - - 493.77 - - - - 493.77 - - - - 493.29 - - - - 493.29 - - - - 493.29 - - - - 493.77 - - - - 493.29 - - - - 493.29 - - - - 493.29 - - - - 493.29 - - - - 493.29 - - - - 491.85 - - - - 493.29 - - - - 491.85 - - - - 493.29 - - - - 492.81 - - - - 492.81 - - - - 491.37 - - - - 491.37 - - - - 492.81 - - - - 492.81 - - - - 491.37 - - - - 491.37 - - - - 488.49 - - - - 487.53 - - - - 483.68 - - - - 482.72 - - - - 482.72 - - - - 482.24 - - - - 481.76 - - - - 482.72 - - - - 485.12 - - - - 486.56 - - - - 487.05 - - - - 487.53 - - - - 487.53 - - - - 488.49 - - - - 490.41 - - - - 490.41 - - - - 490.41 - - - - 489.93 - - - - 490.89 - - - - 494.26 - - - - 497.14 - - - - 497.62 - - - - 497.62 - - - - 497.62 - - - - 494.26 - - - - 500.02 - - - - 497.62 - - - - 497.14 - - - - 497.62 - - - - 496.18 - - - - 496.18 - - - - 497.14 - - - - 497.14 - - - - 500.02 - - - - 500.50 - - - - 503.39 - - - - 507.23 - - - - 509.16 - - - - 511.56 - - - - 513.48 - - - - 514.44 - - - - 515.40 - - - - 515.40 - - - - 515.88 - - - - 516.85 - - - - 517.81 - - - - 518.77 - - - - 518.29 - - - - 518.77 - - - - 521.65 - - - - 525.02 - - - - 527.90 - - - - 531.27 - - - - 533.67 - - - - 537.03 - - - - 538.96 - - - - 541.36 - - - - 544.24 - - - - 547.61 - - - - 547.61 - - - - 547.61 - - - - 548.09 - - - - 551.45 - - - - 554.34 - - - - 557.70 - - - - 560.59 - - - - 562.51 - - - - 565.87 - - - - 569.24 - - - - 570.20 - - - - 572.60 - - - - 575.01 - - - - 578.37 - - - - 580.77 - - - - 581.73 - - - - 582.70 - - - - 582.70 - - - - 581.25 - - - - 582.70 - - - - 585.10 - - - - 587.50 - - - - 588.46 - - - - 590.87 - - - - 593.75 - - - - 595.19 - - - - 595.19 - - - - 597.12 - - - - 599.52 - - - - 601.44 - - - - 604.33 - - - - 605.77 - - - - 606.25 - - - - 606.25 - - - - 608.17 - - - - 611.54 - - - - 612.50 - - - - 615.38 - - - - 617.78 - - - - 617.78 - - - - 619.23 - - - - 621.63 - - - - 623.55 - - - - 623.55 - - - - 624.03 - - - - 622.59 - - - - 625.96 - - - - 627.88 - - - - 630.28 - - - - 630.28 - - - - 630.28 - - - - 630.28 - - - - 630.76 - - - - 631.24 - - - - 631.24 - - - - 631.24 - - - - 634.61 - - - - 637.49 - - - - 638.45 - - - - 638.45 - - - - 639.89 - - - - 638.45 - - - - 637.97 - - - - 631.72 - - - - 637.97 - - - - 635.57 - - - - 634.61 - - - - 632.68 - - - - 631.24 - - - - 627.40 - - - - 630.76 - - - - 629.32 - - - - 627.40 - - - - 623.55 - - - - 628.84 - - - - 626.44 - - - - 625.47 - - - - 624.51 - - - - 624.03 - - - - 623.07 - - - - 622.11 - - - - 622.11 - - - - 622.11 - - - - 620.19 - - - - 620.19 - - - - 619.71 - - - - 617.30 - - - - 616.34 - - - - 615.38 - - - - 613.94 - - - - 611.54 - - - - 610.09 - - - - 609.13 - - - - 609.13 - - - - 607.69 - - - - 607.21 - - - - 606.25 - - - - 602.40 - - - - 606.25 - - - - 604.33 - - - - 601.92 - - - - 598.56 - - - - 602.40 - - - - 600.48 - - - - 598.56 - - - - 598.08 - - - - 597.60 - - - - 594.23 - - - - 597.60 - - - - 594.23 - - - - 591.83 - - - - 588.46 - - - - 587.02 - - - - 585.58 - - - - 585.10 - - - - 585.58 - - - - 587.98 - - - - 589.43 - - - - 589.43 - - - - 589.43 - - - - 589.43 - - - - 593.27 - - - - 595.19 - - - - 597.12 - - - - 599.52 - - - - 601.92 - - - - 603.85 - - - - 606.25 - - - - 609.13 - - - - 612.02 - - - - 612.50 - - - - 613.46 - - - - 614.42 - - - - 616.82 - - - - 619.23 - - - - 621.63 - - - - 623.07 - - - - 624.03 - - - - 624.51 - - - - 626.92 - - - - 629.32 - - - - 631.72 - - - - 634.13 - - - - 636.53 - - - - 638.93 - - - - 640.38 - - - - 641.34 - - - - 641.82 - - - - 643.26 - - - - 645.18 - - - - 647.10 - - - - 647.59 - - - - 648.55 - - - - 648.55 - - - - 649.51 - - - - 650.47 - - - - 652.39 - - - - 653.83 - - - - 655.28 - - - - 656.72 - - - - 656.72 - - - - 656.72 - - - - 657.20 - - - - 657.68 - - - - 661.04 - - - - 662.97 - - - - 663.45 - - - - 663.93 - - - - 666.81 - - - - 669.70 - - - - 672.10 - - - - 674.98 - - - - 675.94 - - - - 678.35 - - - - 681.71 - - - - 682.67 - - - - 683.15 - - - - 685.56 - - - - 686.52 - - - - 689.88 - - - - 689.40 - - - - 690.84 - - - - 694.21 - - - - 696.61 - - - - 699.50 - - - - 701.90 - - - - 705.26 - - - - 707.19 - - - - 710.07 - - - - 711.51 - - - - 711.99 - - - - 714.88 - - - - 717.28 - - - - 719.68 - - - - 720.16 - - - - 721.13 - - - - 724.01 - - - - 726.89 - - - - 730.26 - - - - 732.66 - - - - 736.03 - - - - 736.03 - - - - 736.03 - - - - 738.91 - - - - 742.28 - - - - 746.12 - - - - 748.04 - - - - 748.52 - - - - 750.45 - - - - 753.33 - - - - 756.21 - - - - 758.14 - - - - 758.14 - - - - 759.10 - - - - 759.10 - - - - 759.10 - - - - 759.10 - - - - 759.10 - - - - 759.10 - - - - 759.10 - - - - 759.10 - - - - 759.10 - - - - 760.06 - - - - 762.46 - - - - 765.83 - - - - 767.75 - - - - 767.27 - - - - 766.31 - - - - 766.31 - - - - 767.27 - - - - 767.75 - - - - 768.71 - - - - 767.27 - - - - 764.39 - - - - 762.46 - - - - 764.87 - - - - 764.87 - - - - 764.87 - - - - 764.87 - - - - 763.42 - - - - 764.87 - - - - 764.87 - - - - 765.35 - - - - 765.35 - - - - 765.35 - - - - 765.35 - - - - 765.35 - - - - 767.27 - - - - 767.75 - - - - 767.75 - - - - 767.75 - - - - 764.87 - - - - 764.87 - - - - 764.87 - - - - 764.87 - - - - 764.87 - - - - 764.87 - - - - 766.31 - - - - 766.31 - - - - 766.31 - - - - 766.31 - - - - 766.31 - - - - 766.79 - - - - 767.27 - - - - 767.27 - - - - 767.27 - - - - 767.75 - - - - 768.23 - - - - 768.23 - - - - 768.23 - - - - 767.75 - - - - 767.75 - - - - 766.31 - - - - 766.31 - - - - 767.75 - - - - 767.75 - - - - 767.75 - - - - 767.75 - - - - 767.75 - - - - 767.75 - - - - 768.23 - - - - 766.79 - - - - 766.79 - - - - 766.79 - - - - 766.79 - - - - 766.79 - - - - 766.79 - - - - 766.79 - - - - 767.27 - - - - 767.27 - - - - 767.75 - - - - 767.75 - - - - 769.19 - - - - 769.19 - - - - 769.19 - - - - 769.19 - - - - 769.19 - - - - 769.19 - - - - 769.19 - - - - 769.67 - - - - 769.67 - - - - 769.67 - - - - 769.67 - - - - 770.15 - - - - 770.15 - - - - 770.15 - - - - 770.63 - - - - 770.63 - - - - 770.63 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.60 - - - - 770.63 - - - - 770.63 - - - - 770.63 - - - - 770.63 - - - - 770.63 - - - - 770.63 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.11 - - - - 771.60 - - - - 771.60 - - - - 771.60 - - - - 771.60 - - - - 772.08 - - - - 772.08 - - - - 772.56 - - - - 768.71 - - - - 772.08 - - - - 774.96 - - - - 772.56 - - - - 771.60 - - - - 773.04 - - - - 773.52 - - - - 773.52 - - - - 773.52 - - - - 773.52 - - - - 774.48 - - - - 775.44 - - - - 775.92 - - - - 775.92 - - - - 775.92 - - - - 776.40 - - - - 774.96 - - - - 773.52 - - - - 771.11 - - - - 772.08 - - - - 773.04 - - - - 776.40 - - - - 774.48 - - - - 775.44 - - - - 774.96 - - - - 773.52 - - - - 773.52 - - - - 773.52 - - - - 773.04 - - - - 771.11 - - - - 771.11 - - - - 769.19 - - - - 768.23 - - - - 768.23 - - - - 767.75 - - - - 768.71 - - - - 769.67 - - - - 771.11 - - - - 772.56 - - - - 773.04 - - - - 772.56 - - - - 774.00 - - - - 774.00 - - - - 774.00 - - - - 774.00 - - - - 774.00 - - - - 771.11 - - - - 771.11 - - - - 770.63 - - - - 770.63 - - - - 770.63 - - - - 768.71 - - - - 768.23 - - - - 764.39 - - - - 763.90 - - - - 762.46 - - - - 760.54 - - - - 760.54 - - - - 761.02 - - - - 759.10 - - - - 759.10 - - - - 757.18 - - - - 756.69 - - - - 755.73 - - - - 755.25 - - - - 751.89 - - - - 749.00 - - - - 748.04 - - - - 747.56 - - - - 745.16 - - - - 745.16 - - - - 744.68 - - - - 746.12 - - - - 746.60 - - - - 746.60 - - - - 747.08 - - - - 747.08 - - - - 747.08 - - - - 747.08 - - - - 747.08 - - - - 747.56 - - - - 746.12 - - - - 746.12 - - - - 746.12 - - - - 746.12 - - - - 746.12 - - - - 747.08 - - - - 748.04 - - - - 748.04 - - - - 749.49 - - - - 748.04 - - - - 748.04 - - - - 749.97 - - - - 752.85 - - - - 753.81 - - - - 753.81 - - - - 753.81 - - - - 755.73 - - - - 751.89 - - - - 758.62 - - - - 754.77 - - - - 759.10 - - - - 756.69 - - - - 756.69 - - - - 756.69 - - - - 756.69 - - - - 756.69 - - - - 758.62 - - - - 756.69 - - - - 756.21 - - - - 755.73 - - - - 756.69 - - - - 758.62 - - - - 759.10 - - - - 759.10 - - - - 759.58 - - - - 758.14 - - - - 758.14 - - - - 757.66 - - - - 754.29 - - - - 750.93 - - - - 752.37 - - - - 754.77 - - - - 756.69 - - - - 756.69 - - - - 758.62 - - - - 761.98 - - - - 763.90 - - - - 764.87 - - - - 765.83 - - - - 768.23 - - - - 770.15 - - - - 772.56 - - - - 773.04 - - - - 774.96 - - - - 776.40 - - - - 778.32 - - - - 779.77 - - - - 778.81 - - - - 778.81 - - - - 779.77 - - - - 781.21 - - - - 782.65 - - - - 783.13 - - - - 785.53 - - - - 787.94 - - - - 786.98 - - - - 788.42 - - - - 788.42 - - - - 787.94 - - - - 789.38 - - - - 789.38 - - - - 789.38 - - - - 790.82 - - - - 790.34 - - - - 788.42 - - - - 786.02 - - - - 785.05 - - - - 784.57 - - - - 785.53 - - - - 785.53 - - - - 785.05 - - - - 784.57 - - - - 785.53 - - - - 786.50 - - - - 789.38 - - - - 790.34 - - - - 791.78 - - - - 792.26 - - - - 793.22 - - - - 794.67 - - - - 796.11 - - - - 798.99 - - - - 800.44 - - - - 802.84 - - - - 804.76 - - - - 807.64 - - - - 809.57 - - - - 810.05 - - - - 810.53 - - - - 813.41 - - - - 814.85 - - - - 815.34 - - - - 815.34 - - - - 815.82 - - - - 816.30 - - - - 818.22 - - - - 819.66 - - - - 822.06 - - - - 822.06 - - - - 823.99 - - - - 827.35 - - - - 825.43 - - - - 827.35 - - - - 829.76 - - - - 829.76 - - - - 829.76 - - - - 829.76 - - - - 828.79 - - - - 832.16 - - - - 834.56 - - - - 837.93 - - - - 841.29 - - - - 843.69 - - - - 845.14 - - - - 846.58 - - - - 846.58 - - - - 849.46 - - - - 852.35 - - - - 854.75 - - - - 857.63 - - - - 857.63 - - - - 857.63 - - - - 857.63 - - - - 860.52 - - - - 863.88 - - - - 866.29 - - - - 869.65 - - - - 871.57 - - - - 872.05 - - - - 874.94 - - - - 876.86 - - - - 879.74 - - - - 882.63 - - - - 883.11 - - - - 885.99 - - - - 889.36 - - - - 889.36 - - - - 893.20 - - - - 894.64 - - - - 897.53 - - - - 898.01 - - - - 901.37 - - - - 904.26 - - - - 907.14 - - - - 909.54 - - - - 908.58 - - - - 909.54 - - - - 908.58 - - - - 909.54 - - - - 909.54 - - - - 909.06 - - - - 909.54 - - - - 910.51 - - - - 910.99 - - - - 910.99 - - - - 911.47 - - - - 912.43 - - - - 913.87 - - - - 916.27 - - - - 917.72 - - - - 921.08 - - - - 924.45 - - - - 925.89 - - - - 929.25 - - - - 932.14 - - - - 935.98 - - - - 938.86 - - - - 939.35 - - - - 940.79 - - - - 944.63 - - - - 947.04 - - - - 949.92 - - - - 951.36 - - - - 950.40 - - - - 950.88 - - - - 951.84 - - - - 952.80 - - - - 954.25 - - - - 955.21 - - - - 956.17 - - - - 956.17 - - - - 956.17 - - - - 956.65 - - - - 956.65 - - - - 956.65 - - - - 957.13 - - - - 957.13 - - - - 957.61 - - - - 957.61 - - - - 957.61 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.57 - - - - 957.13 - - - - 957.13 - - - - 957.13 - - - - 958.57 - - - - 958.57 - - - - 959.05 - - - - 960.01 - - - - 960.49 - - - - 960.49 - - - - 959.53 - - - - 960.98 - - - - 959.53 - - - - 958.57 - - - - 953.28 - - - - 957.13 - - - - 958.57 - - - - 960.01 - - - - 958.57 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.09 - - - - 958.57 - - - - 958.57 - - - - 958.57 - - - - 960.01 - - - - 960.01 - - - - 960.01 - - - - 960.98 - - - - 960.98 - - - - 960.98 - - - - 959.53 - - - - 958.09 - - - - 958.09 - - - - 959.05 - - - - 959.05 - - - - 959.05 - - - - 959.05 - - - - 959.05 - - - - 960.98 - - - - 959.53 - - - - 960.01 - - - - 960.01 - - - - 962.42 - - - - 964.34 - - - - 964.34 - - - - 966.74 - - - - 968.67 - - - - 970.59 - - - - 972.51 - - - - 973.95 - - - - 975.39 - - - - 977.32 - - - - 979.72 - - - - 980.20 - - - - 981.64 - - - - 983.57 - - - - 984.53 - - - - 985.01 - - - - 986.45 - - - - 987.41 - - - - 987.89 - - - - 988.37 - - - - 988.37 - - - - 988.37 - - - - 989.33 - - - - 991.26 - - - - 992.70 - - - - 992.70 - - - - 994.14 - - - - 996.06 - - - - 997.51 - - - - 999.43 - - - - 1000.87 - - - - 1002.31 - - - - 1002.31 - - - - 1002.31 - - - - 998.95 - - - - 1004.23 - - - - 1002.79 - - - - 1003.27 - - - - 1002.79 - - - - 1004.72 - - - - 1007.60 - - - - 1011.44 - - - - 1013.37 - - - - 1014.81 - - - - 1017.21 - - - - 1020.58 - - - - 1021.54 - - - - 1021.54 - - - - 1022.02 - - - - 1024.42 - - - - 1027.79 - - - - 1030.67 - - - - 1032.11 - - - - 1034.52 - - - - 1035.96 - - - - 1034.52 - - - - 1035.96 - - - - 1037.40 - - - - 1039.32 - - - - 1041.73 - - - - 1044.61 - - - - 1045.57 - - - - 1046.05 - - - - 1045.57 - - - - 1046.05 - - - - 1047.97 - - - - 1049.90 - - - - 1050.38 - - - - 1049.90 - - - - 1049.90 - - - - 1050.86 - - - - 1052.78 - - - - 1056.63 - - - - 1053.74 - - - - 1052.78 - - - - 1054.22 - - - - 1056.15 - - - - 1056.63 - - - - 1057.59 - - - - 1059.99 - - - - 1060.95 - - - - 1061.91 - - - - 1061.91 - - - - 1062.39 - - - - 1063.36 - - - - 1065.28 - - - - 1065.28 - - - - 1065.76 - - - - 1067.20 - - - - 1067.20 - - - - 1064.32 - - - - 1068.64 - - - - 1067.68 - - - - 1067.68 - - - - 1067.68 - - - - 1067.68 - - - - 1069.12 - - - - 1070.57 - - - - 1072.97 - - - - 1074.89 - - - - 1076.33 - - - - 1076.81 - - - - 1079.22 - - - - 1081.14 - - - - 1083.06 - - - - 1084.02 - - - - 1084.50 - - - - 1084.50 - - - - 1083.06 - - - - 1081.62 - - - - 1079.70 - - - - 1077.78 - - - - 1076.81 - - - - 1074.89 - - - - 1072.97 - - - - 1071.05 - - - - 1068.64 - - - - 1065.76 - - - - 1063.36 - - - - 1060.95 - - - - 1059.03 - - - - 1057.59 - - - - 1056.15 - - - - 1055.18 - - - - 1055.18 - - - - 1055.18 - - - - 1055.18 - - - - 1055.18 - - - - 1055.18 - - - - 1055.18 - - - - 1054.70 - - - - 1054.22 - - - - 1053.74 - - - - 1053.26 - - - - 1052.78 - - - - 1051.82 - - - - 1050.86 - - - - 1049.90 - - - - 1049.90 - - - - 1049.90 - - - - 1049.42 - - - - 1048.94 - - - - 1047.49 - - - - 1045.09 - - - - 1042.69 - - - - 1040.28 - - - - 1039.32 - - - - 1036.44 - - - - 1033.55 - - - - 1031.15 - - - - 1029.23 - - - - 1026.34 - - - - 1024.42 - - - - 1022.50 - - - - 1021.06 - - - - 1021.06 - - - - 1018.65 - - - - 1018.17 - - - - 1017.21 - - - - 1018.17 - - - - 1016.73 - - - - 1018.17 - - - - 1015.29 - - - - 1013.37 - - - - 1011.93 - - - - 1010.00 - - - - 1009.52 - - - - 1007.12 - - - - 1005.68 - - - - 1003.75 - - - - 1001.83 - - - - 998.95 - - - - 997.02 - - - - 994.62 - - - - 992.70 - - - - 988.85 - - - - 987.41 - - - - 985.49 - - - - 983.57 - - - - 982.12 - - - - 980.20 - - - - 977.80 - - - - 974.43 - - - - 972.51 - - - - 969.63 - - - - 967.22 - - - - 964.82 - - - - 962.42 - - - - 959.53 - - - - 957.61 - - - - 954.73 - - - - 953.28 - - - - 950.88 - - - - 948.48 - - - - 945.11 - - - - 944.15 - - - - 941.75 - - - - 938.86 - - - - 935.98 - - - - 934.06 - - - - 931.65 - - - - 928.29 - - - - 926.37 - - - - 923.96 - - - - 922.04 - - - - 919.64 - - - - 917.24 - - - - 914.83 - - - - 913.39 - - - - 910.99 - - - - 908.58 - - - - 905.22 - - - - 903.78 - - - - 901.37 - - - - 899.45 - - - - 897.53 - - - - 895.61 - - - - 893.20 - - - - 890.80 - - - - 890.32 - - - - 889.36 - - - - 887.43 - - - - 884.55 - - - - 884.07 - - - - 883.59 - - - - 881.67 - - - - 880.22 - - - - 879.26 - - - - 877.34 - - - - 873.98 - - - - 871.57 - - - - 869.65 - - - - 867.73 - - - - 867.25 - - - - 864.36 - - - - 861.48 - - - - 858.11 - - - - 855.23 - - - - 852.35 - - - - 850.42 - - - - 850.42 - - - - 847.06 - - - - 845.62 - - - - 843.69 - - - - 843.21 - - - - 842.73 - - - - 842.73 - - - - 839.85 - - - - 838.89 - - - - 840.33 - - - - 839.37 - - - - 839.37 - - - - 838.89 - - - - 838.89 - - - - 838.89 - - - - 838.89 - - - - 838.89 - - - - 838.89 - - - - 838.89 - - - - 838.89 - - - - 837.93 - - - - 836.48 - - - - 836.48 - - - - 835.52 - - - - 833.60 - - - - 833.12 - - - - 832.16 - - - - 832.16 - - - - 831.68 - - - - 830.24 - - - - 828.79 - - - - 828.79 - - - - 828.79 - - - - 827.83 - - - - 824.95 - - - - 822.55 - - - - 821.58 - - - - 821.10 - - - - 820.62 - - - - 820.62 - - - - 820.62 - - - - 820.62 - - - - 820.62 - - - - 820.62 - - - - 822.06 - - - - 822.55 - - - - 820.62 - - - - 820.62 - - - - 823.03 - - - - 823.03 - - - - 823.03 - - - - 823.03 - - - - 823.03 - - - - 823.51 - - - - 822.55 - - - - 822.55 - - - - 822.55 - - - - 822.06 - - - - 822.06 - - - - 822.06 - - - - 822.06 - - - - 821.58 - - - - 820.62 - - - - 815.82 - - - - 820.14 - - - - 817.74 - - - - 817.26 - - - - 813.89 - - - - 811.97 - - - - 810.05 - - - - 808.61 - - - - 807.16 - - - - 806.68 - - - - 806.20 - - - - 803.80 - - - - 800.44 - - - - 799.47 - - - - 800.92 - - - - 801.40 - - - - 801.88 - - - - 802.84 - - - - 801.88 - - - - 800.92 - - - - 800.92 - - - - 800.92 - - - - 799.95 - - - - 799.47 - - - - 798.99 - - - - 798.99 - - - - 798.51 - - - - 797.07 - - - - 798.51 - - - - 798.51 - - - - 798.99 - - - - 798.99 - - - - 797.55 - - - - 795.63 - - - - 795.15 - - - - 794.19 - - - - 790.82 - - - - 790.82 - - - - 789.38 - - - - 786.98 - - - - 786.50 - - - - 787.46 - - - - 787.46 - - - - 788.42 - - - - 788.90 - - - - 789.38 - - - - 787.94 - - - - 789.38 - - - - 788.90 - - - - 789.38 - - - - 789.86 - - - - 789.38 - - - - 789.86 - - - - 789.86 - - - - 788.42 - - - - 787.94 - - - - 787.94 - - - - 787.94 - - - - 787.94 - - - - 787.94 - - - - 787.94 - - - - 787.94 - - - - 787.94 - - - - 787.46 - - - - 787.46 - - - - 787.94 - - - - 787.94 - - - - 787.94 - - - - 788.42 - - - - 788.42 - - - - 788.42 - - - - 788.90 - - - - 789.38 - - - - 789.86 - - - - 790.34 - - - - 790.82 - - - - 791.30 - - - - 791.78 - - - - 792.26 - - - - 792.26 - - - - 792.26 - - - - 792.74 - - - - 792.26 - - - - 792.74 - - - - 793.22 - - - - 793.22 - - - - 793.71 - - - - 794.19 - - - - 794.67 - - - - 794.67 - - - - 795.15 - - - - 795.15 - - - - 795.63 - - - - 796.11 - - - - 796.11 - - - - 796.59 - - - - 796.59 - - - - 796.59 - - - - 797.07 - - - - 797.07 - - - - 797.55 - - - - 798.03 - - - - 798.51 - - - - 798.51 - - - - 798.99 - - - - 798.99 - - - - 799.47 - - - - 799.95 - - - - 799.95 - - - - 800.44 - - - - 800.44 - - - - 800.44 - - - - 800.92 - - - - 800.92 - - - - 800.92 - - - - 802.36 - - - - 802.36 - - - - 802.36 - - - - 803.32 - - - - 803.80 - - - - 804.28 - - - - 804.76 - - - - 805.24 - - - - 806.20 - - - - 806.68 - - - - 808.61 - - - - 805.24 - - - - 811.01 - - - - 807.64 - - - - 807.64 - - - - 806.20 - - - - 804.28 - - - - 802.84 - - - - 801.88 - - - - 800.92 - - - - 801.88 - - - - 802.36 - - - - 802.36 - - - - 802.36 - - - - 801.88 - - - - 800.92 - - - - 800.44 - - - - 798.99 - - - - 798.51 - - - - 799.95 - - - - 799.47 - - - - 799.47 - - - - 798.03 - - - - 797.55 - - - - 796.11 - - - - 795.63 - - - - 795.15 - - - - 794.19 - - - - 791.30 - - - - 790.34 - - - - 786.98 - - - - 784.09 - - - - 783.61 - - - - 781.21 - - - - 780.73 - - - - 780.73 - - - - 777.36 - - - - 774.00 - - - - 771.60 - - - - 769.67 - - - - 766.79 - - - - 763.42 - - - - 763.42 - - - - 758.14 - - - - 762.94 - - - - 761.02 - - - - 757.66 - - - - 755.73 - - - - 754.29 - - - - 750.93 - - - - 749.00 - - - - 745.64 - - - - 742.76 - - - - 739.39 - - - - 737.47 - - - - 734.10 - - - - 731.70 - - - - 731.70 - - - - 728.82 - - - - 728.34 - - - - 724.97 - - - - 722.57 - - - - 719.68 - - - - 721.61 - - - - 717.76 - - - - 715.84 - - - - 713.44 - - - - 712.95 - - - - 709.59 - - - - 708.15 - - - - 705.26 - - - - 704.30 - - - - 702.86 - - - - 703.82 - - - - 702.38 - - - - 702.38 - - - - 702.38 - - - - 701.90 - - - - 703.34 - - - - 701.90 - - - - 702.38 - - - - 700.94 - - - - 699.02 - - - - 696.13 - - - - 694.21 - - - - 692.77 - - - - 692.29 - - - - 690.84 - - - - 688.44 - - - - 687.00 - - - - 684.60 - - - - 682.67 - - - - 682.67 - - - - 681.23 - - - - 680.27 - - - - 678.83 - - - - 677.87 - - - - 677.87 - - - - 677.39 - - - - 677.39 - - - - 675.94 - - - - 674.02 - - - - 672.58 - - - - 670.66 - - - - 670.18 - - - - 670.18 - - - - 667.77 - - - - 665.37 - - - - 663.45 - - - - 661.04 - - - - 658.16 - - - - 654.80 - - - - 651.91 - - - - 649.51 - - - - 647.10 - - - - 645.18 - - - - 643.26 - - - - 641.82 - - - - 640.86 - - - - 637.97 - - - - 636.05 - - - - 636.05 - - - - 634.61 - - - - 632.20 - - - - 629.80 - - - - 628.84 - - - - 625.47 - - - - 623.07 - - - - 619.71 - - - - 618.75 - - - - 617.30 - - - - 617.30 - - - - 615.86 - - - - 614.42 - - - - 612.50 - - - - 611.06 - - - - 609.61 - - - - 607.69 - - - - 604.81 - - - - 602.40 - - - - 599.52 - - - - 598.08 - - - - 597.12 - - - - 596.15 - - - - 595.19 - - - - 592.31 - - - - 590.87 - - - - 588.46 - - - - 586.54 - - - - 583.66 - - - - 581.73 - - - - 578.85 - - - - 575.49 - - - - 573.56 - - - - 570.20 - - - - 567.32 - - - - 564.43 - - - - 561.55 - - - - 558.66 - - - - 556.26 - - - - 556.74 - - - - 554.82 - - - - 551.45 - - - - 554.82 - - - - 551.45 - - - - 550.01 - - - - 548.09 - - - - 546.65 - - - - 545.69 - - - - 545.20 - - - - 543.28 - - - - 539.92 - - - - 543.28 - - - - 539.92 - - - - 537.03 - - - - 534.63 - - - - 531.27 - - - - 530.30 - - - - 527.42 - - - - 524.54 - - - - 521.17 - - - - 520.69 - - - - 519.73 - - - - 518.77 - - - - 514.92 - - - - 520.21 - - - - 516.85 - - - - 516.85 - - - - 513.00 - - - - 509.64 - - - - 507.71 - - - - 504.83 - - - - 502.43 - - - - 501.95 - - - - 501.95 - - - - 501.95 - - - - 501.95 - - - - 498.58 - - - - 495.22 - - - - 500.50 - - - - 497.62 - - - - 497.62 - - - - 497.14 - - - - 494.26 - - - - 492.33 - - - - 488.97 - - - - 488.97 - - - - 488.01 - - - - 488.01 - - - - 488.01 - - - - 485.60 - - - - 485.12 - - - - 483.20 - - - - 482.24 - - - - 482.24 - - - - 480.80 - - - - 479.35 - - - - 478.87 - - - - 479.35 - - - - 479.35 - - - - 479.35 - - - - 479.35 - - - - 479.35 - - - - 479.35 - - - - 479.35 - - - - 479.35 - - - - 479.35 - - - - 479.35 - - - - 479.35 - - - - 479.84 - - - - 480.32 - - - - 480.80 - - - - 480.80 - - - - 480.80 - - - - 481.28 - - - - 481.28 - - - - 481.28 - - - - 481.28 - - - - 481.76 - - - - 481.76 - - - - 482.24 - - - - 482.24 - - - - 482.72 - - - - 483.20 - - - - 483.20 - - - - 483.20 - - - - 483.68 - - - - 485.12 - - - - 485.12 - - - - 486.08 - - - - 486.56 - - - - 486.56 - - - - 486.56 - - - - 486.56 - - - - 487.53 - - - - 488.01 - - - - 486.56 - - - - 485.60 - - - - 484.16 - - - - 483.68 - - - - 483.68 - - - - 484.16 - - - - 485.60 - - - - 486.08 - - - - 486.08 - - - - 487.05 - - - - 487.05 - - - - 487.05 - - - - 487.05 - - - - 487.05 - - - - 487.05 - - - - 487.05 - - - - 485.12 - - - - 485.12 - - - - 484.64 - - - - 484.64 - - - - 484.64 - - - - 482.72 - - - - 482.72 - - - - 482.72 - - - - 482.72 - - - - 482.72 - - - - 482.24 - - - - 482.24 - - - - 481.76 - - - - 481.76 - - - - 483.20 - - - - 482.72 - - - - 483.68 - - - - 483.68 - - - - 482.24 - - - - 483.68 - - - - 483.68 - - - - 484.16 - - - - 483.68 - - - - 483.68 - - - - 483.68 - - - - 483.20 - - - - 482.72 - - - - 482.72 - - - - 484.16 - - - - 485.12 - - - - 485.60 - - - - 485.60 - - - - 485.60 - - - - 486.56 - - - - 488.01 - - - - 490.41 - - - - 490.41 - - - - 490.89 - - - - 492.33 - - - - 493.29 - - - - 493.77 - - - - 494.74 - - - - 496.18 - - - - 496.66 - - - - 497.62 - - - - 499.06 - - - - 500.02 - - - - 500.02 - - - - 501.46 - - - - 501.46 - - - - 501.95 - - - - 502.43 - - - - 504.35 - - - - 501.95 - - - - 501.95 - - - - 501.95 - - - - 501.46 - - - - 500.98 - - - - 500.50 - - - - 500.02 - - - - 499.54 - - - - 499.06 - - - - 498.58 - - - - 498.10 - - - - 497.14 - - - - 496.18 - - - - 496.18 - - - - 495.22 - - - - 494.26 - - - - 493.77 - - - - 493.29 - - - - 493.29 - - - - 492.81 - - - - 492.81 - - - - 493.29 - - - - 493.29 - - - - 493.29 - - - - 491.85 - - - - 740.35 - - - - 786.50 - - - - - \ No newline at end of file +Garmin International29_04_2023492.81492.81492.81493.77492.81492.81492.81493.77493.77493.77493.77493.29493.29493.29493.77493.29493.29493.29493.29493.29491.85493.29491.85493.29492.81492.81491.37491.37492.81492.81491.37491.37488.49487.53483.68482.72482.72482.24481.76482.72485.12486.56487.05487.53487.53488.49490.41490.41490.41489.93490.89494.26497.14497.62497.62497.62494.26500.02497.62497.14497.62496.18496.18497.14497.14500.02500.50503.39507.23509.16511.56513.48514.44515.40515.40515.88516.85517.81518.77518.29518.77521.65525.02527.90531.27533.67537.03538.96541.36544.24547.61547.61547.61548.09551.45554.34557.70560.59562.51565.87569.24570.20572.60575.01578.37580.77581.73582.70582.70581.25582.70585.10587.50588.46590.87593.75595.19595.19597.12599.52601.44604.33605.77606.25606.25608.17611.54612.50615.38617.78617.78619.23621.63623.55623.55624.03622.59625.96627.88630.28630.28630.28630.28630.76631.24631.24631.24634.61637.49638.45638.45639.89638.45637.97631.72637.97635.57634.61632.68631.24627.40630.76629.32627.40623.55628.84626.44625.47624.51624.03623.07622.11622.11622.11620.19620.19619.71617.30616.34615.38613.94611.54610.09609.13609.13607.69607.21606.25602.40606.25604.33601.92598.56602.40600.48598.56598.08597.60594.23597.60594.23591.83588.46587.02585.58585.10585.58587.98589.43589.43589.43589.43593.27595.19597.12599.52601.92603.85606.25609.13612.02612.50613.46614.42616.82619.23621.63623.07624.03624.51626.92629.32631.72634.13636.53638.93640.38641.34641.82643.26645.18647.10647.59648.55648.55649.51650.47652.39653.83655.28656.72656.72656.72657.20657.68661.04662.97663.45663.93666.81669.70672.10674.98675.94678.35681.71682.67683.15685.56686.52689.88689.40690.84694.21696.61699.50701.90705.26707.19710.07711.51711.99714.88717.28719.68720.16721.13724.01726.89730.26732.66736.03736.03736.03738.91742.28746.12748.04748.52750.45753.33756.21758.14758.14759.10759.10759.10759.10759.10759.10759.10759.10759.10760.06762.46765.83767.75767.27766.31766.31767.27767.75768.71767.27764.39762.46764.87764.87764.87764.87763.42764.87764.87765.35765.35765.35765.35765.35767.27767.75767.75767.75764.87764.87764.87764.87764.87764.87766.31766.31766.31766.31766.31766.79767.27767.27767.27767.75768.23768.23768.23767.75767.75766.31766.31767.75767.75767.75767.75767.75767.75768.23766.79766.79766.79766.79766.79766.79766.79767.27767.27767.75767.75769.19769.19769.19769.19769.19769.19769.19769.67769.67769.67769.67770.15770.15770.15770.63770.63770.63771.11771.11771.11771.11771.11771.11771.11771.11771.11771.11771.11771.60770.63770.63770.63770.63770.63770.63771.11771.11771.11771.11771.11771.11771.60771.60771.60771.60772.08772.08772.56768.71772.08774.96772.56771.60773.04773.52773.52773.52773.52774.48775.44775.92775.92775.92776.40774.96773.52771.11772.08773.04776.40774.48775.44774.96773.52773.52773.52773.04771.11771.11769.19768.23768.23767.75768.71769.67771.11772.56773.04772.56774.00774.00774.00774.00774.00771.11771.11770.63770.63770.63768.71768.23764.39763.90762.46760.54760.54761.02759.10759.10757.18756.69755.73755.25751.89749.00748.04747.56745.16745.16744.68746.12746.60746.60747.08747.08747.08747.08747.08747.56746.12746.12746.12746.12746.12747.08748.04748.04749.49748.04748.04749.97752.85753.81753.81753.81755.73751.89758.62754.77759.10756.69756.69756.69756.69756.69758.62756.69756.21755.73756.69758.62759.10759.10759.58758.14758.14757.66754.29750.93752.37754.77756.69756.69758.62761.98763.90764.87765.83768.23770.15772.56773.04774.96776.40778.32779.77778.81778.81779.77781.21782.65783.13785.53787.94786.98788.42788.42787.94789.38789.38789.38790.82790.34788.42786.02785.05784.57785.53785.53785.05784.57785.53786.50789.38790.34791.78792.26793.22794.67796.11798.99800.44802.84804.76807.64809.57810.05810.53813.41814.85815.34815.34815.82816.30818.22819.66822.06822.06823.99827.35825.43827.35829.76829.76829.76829.76828.79832.16834.56837.93841.29843.69845.14846.58846.58849.46852.35854.75857.63857.63857.63857.63860.52863.88866.29869.65871.57872.05874.94876.86879.74882.63883.11885.99889.36889.36893.20894.64897.53898.01901.37904.26907.14909.54908.58909.54908.58909.54909.54909.06909.54910.51910.99910.99911.47912.43913.87916.27917.72921.08924.45925.89929.25932.14935.98938.86939.35940.79944.63947.04949.92951.36950.40950.88951.84952.80954.25955.21956.17956.17956.17956.65956.65956.65957.13957.13957.61957.61957.61958.09958.09958.09958.09958.09958.09958.09958.57957.13957.13957.13958.57958.57959.05960.01960.49960.49959.53960.98959.53958.57953.28957.13958.57960.01958.57958.09958.09958.09958.09958.09958.09958.09958.09958.09958.09958.09958.57958.57958.57960.01960.01960.01960.98960.98960.98959.53958.09958.09959.05959.05959.05959.05959.05960.98959.53960.01960.01962.42964.34964.34966.74968.67970.59972.51973.95975.39977.32979.72980.20981.64983.57984.53985.01986.45987.41987.89988.37988.37988.37989.33991.26992.70992.70994.14996.06997.51999.431000.871002.311002.311002.31998.951004.231002.791003.271002.791004.721007.601011.441013.371014.811017.211020.581021.541021.541022.021024.421027.791030.671032.111034.521035.961034.521035.961037.401039.321041.731044.611045.571046.051045.571046.051047.971049.901050.381049.901049.901050.861052.781056.631053.741052.781054.221056.151056.631057.591059.991060.951061.911061.911062.391063.361065.281065.281065.761067.201067.201064.321068.641067.681067.681067.681067.681069.121070.571072.971074.891076.331076.811079.221081.141083.061084.021084.501084.501083.061081.621079.701077.781076.811074.891072.971071.051068.641065.761063.361060.951059.031057.591056.151055.181055.181055.181055.181055.181055.181055.181054.701054.221053.741053.261052.781051.821050.861049.901049.901049.901049.421048.941047.491045.091042.691040.281039.321036.441033.551031.151029.231026.341024.421022.501021.061021.061018.651018.171017.211018.171016.731018.171015.291013.371011.931010.001009.521007.121005.681003.751001.83998.95997.02994.62992.70988.85987.41985.49983.57982.12980.20977.80974.43972.51969.63967.22964.82962.42959.53957.61954.73953.28950.88948.48945.11944.15941.75938.86935.98934.06931.65928.29926.37923.96922.04919.64917.24914.83913.39910.99908.58905.22903.78901.37899.45897.53895.61893.20890.80890.32889.36887.43884.55884.07883.59881.67880.22879.26877.34873.98871.57869.65867.73867.25864.36861.48858.11855.23852.35850.42850.42847.06845.62843.69843.21842.73842.73839.85838.89840.33839.37839.37838.89838.89838.89838.89838.89838.89838.89838.89837.93836.48836.48835.52833.60833.12832.16832.16831.68830.24828.79828.79828.79827.83824.95822.55821.58821.10820.62820.62820.62820.62820.62820.62822.06822.55820.62820.62823.03823.03823.03823.03823.03823.51822.55822.55822.55822.06822.06822.06822.06821.58820.62815.82820.14817.74817.26813.89811.97810.05808.61807.16806.68806.20803.80800.44799.47800.92801.40801.88802.84801.88800.92800.92800.92799.95799.47798.99798.99798.51797.07798.51798.51798.99798.99797.55795.63795.15794.19790.82790.82789.38786.98786.50787.46787.46788.42788.90789.38787.94789.38788.90789.38789.86789.38789.86789.86788.42787.94787.94787.94787.94787.94787.94787.94787.94787.46787.46787.94787.94787.94788.42788.42788.42788.90789.38789.86790.34790.82791.30791.78792.26792.26792.26792.74792.26792.74793.22793.22793.71794.19794.67794.67795.15795.15795.63796.11796.11796.59796.59796.59797.07797.07797.55798.03798.51798.51798.99798.99799.47799.95799.95800.44800.44800.44800.92800.92800.92802.36802.36802.36803.32803.80804.28804.76805.24806.20806.68808.61805.24811.01807.64807.64806.20804.28802.84801.88800.92801.88802.36802.36802.36801.88800.92800.44798.99798.51799.95799.47799.47798.03797.55796.11795.63795.15794.19791.30790.34786.98784.09783.61781.21780.73780.73777.36774.00771.60769.67766.79763.42763.42758.14762.94761.02757.66755.73754.29750.93749.00745.64742.76739.39737.47734.10731.70731.70728.82728.34724.97722.57719.68721.61717.76715.84713.44712.95709.59708.15705.26704.30702.86703.82702.38702.38702.38701.90703.34701.90702.38700.94699.02696.13694.21692.77692.29690.84688.44687.00684.60682.67682.67681.23680.27678.83677.87677.87677.39677.39675.94674.02672.58670.66670.18670.18667.77665.37663.45661.04658.16654.80651.91649.51647.10645.18643.26641.82640.86637.97636.05636.05634.61632.20629.80628.84625.47623.07619.71618.75617.30617.30615.86614.42612.50611.06609.61607.69604.81602.40599.52598.08597.12596.15595.19592.31590.87588.46586.54583.66581.73578.85575.49573.56570.20567.32564.43561.55558.66556.26556.74554.82551.45554.82551.45550.01548.09546.65545.69545.20543.28539.92543.28539.92537.03534.63531.27530.30527.42524.54521.17520.69519.73518.77514.92520.21516.85516.85513.00509.64507.71504.83502.43501.95501.95501.95501.95498.58495.22500.50497.62497.62497.14494.26492.33488.97488.97488.01488.01488.01485.60485.12483.20482.24482.24480.80479.35478.87479.35479.35479.35479.35479.35479.35479.35479.35479.35479.35479.35479.84480.32480.80480.80480.80481.28481.28481.28481.28481.76481.76482.24482.24482.72483.20483.20483.20483.68485.12485.12486.08486.56486.56486.56486.56487.53488.01486.56485.60484.16483.68483.68484.16485.60486.08486.08487.05487.05487.05487.05487.05487.05487.05485.12485.12484.64484.64484.64482.72482.72482.72482.72482.72482.24482.24481.76481.76483.20482.72483.68483.68482.24483.68483.68484.16483.68483.68483.68483.20482.72482.72484.16485.12485.60485.60485.60486.56488.01490.41490.41490.89492.33493.29493.77494.74496.18496.66497.62499.06500.02500.02501.46501.46501.95502.43504.35501.95501.95501.95501.46500.98500.50500.02499.54499.06498.58498.10497.14496.18496.18495.22494.26493.77493.29493.29492.81492.81493.29493.29493.29491.85740.35786.50 \ No newline at end of file