From 3b13524ae95204c0d8d4d5feb10a0463e535ea8d Mon Sep 17 00:00:00 2001 From: Rene de Groot Date: Sun, 4 Nov 2012 18:57:16 +0100 Subject: [PATCH 01/12] Removed osmdroid --- .../libs/osmdroid-android-3.0.8.jar | Bin 268396 -> 0 bytes .../application/libs/osmdroid-android.README | 72 --- .../application/res/layout/map_osm.xml | 18 - .../application/res/values/array.xml | 1 - .../application/res/values/array_values.xml | 1 - .../android/gpstracker/util/Constants.java | 2 +- .../viewer/map/CommonLoggerMap.java | 3 - .../viewer/map/LoggerMapHelper.java | 9 - .../gpstracker/viewer/map/OsmLoggerMap.java | 515 ------------------ .../viewer/map/overlay/AsyncOverlay.java | 48 -- .../viewer/map/overlay/OverlayProvider.java | 6 +- 11 files changed, 2 insertions(+), 673 deletions(-) delete mode 100644 OpenGPSTracker/application/libs/osmdroid-android-3.0.8.jar delete mode 100644 OpenGPSTracker/application/libs/osmdroid-android.README delete mode 100644 OpenGPSTracker/application/res/layout/map_osm.xml delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/OsmLoggerMap.java diff --git a/OpenGPSTracker/application/libs/osmdroid-android-3.0.8.jar b/OpenGPSTracker/application/libs/osmdroid-android-3.0.8.jar deleted file mode 100644 index 50962f4f202ae39a450bf0106f2327380bf77c46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268396 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

{F+egDpE>;D^-He%p-L%Fd)ug#wa=80=_5T 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

55dzHBmzr^Aq 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 diff --git a/OpenGPSTracker/application/libs/osmdroid-android.README b/OpenGPSTracker/application/libs/osmdroid-android.README deleted file mode 100644 index 9fea250a..00000000 --- a/OpenGPSTracker/application/libs/osmdroid-android.README +++ /dev/null @@ -1,72 +0,0 @@ - -osmdroid-android-1.06.jar is licensed under the GNU Lesser General Public License and hosted at http://code.google.com/p/osmdroid/ - - - - - -GNU LESSER GENERAL PUBLIC LICENSE - -Version 3, 29 June 2007 - -Copyright © 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. -0. Additional Definitions. - -As used herein, “this License” refers to version 3 of the GNU Lesser General Public License, and the “GNU GPL” refers to version 3 of the GNU General Public License. - -“The Library” refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. - -An “Application” is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. - -A “Combined Work” is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the “Linked Version”. - -The “Minimal Corresponding Source” for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. - -The “Corresponding Application Code” for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. -1. Exception to Section 3 of the GNU GPL. - -You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. -2. Conveying Modified Versions. - -If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: - - * a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or - * b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. - -3. Object Code Incorporating Material from Library Header Files. - -The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: - - * a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. - * b) Accompany the object code with a copy of the GNU GPL and this license document. - -4. Combined Works. - -You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: - - * a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. - * b) Accompany the Combined Work with a copy of the GNU GPL and this license document. - * c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. - * d) Do one of the following: - o 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. - o 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. - * e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) - -5. Combined Libraries. - -You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: - - * a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. - * b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. - -6. Revised Versions of the GNU Lesser General Public License. - -The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. - -If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. diff --git a/OpenGPSTracker/application/res/layout/map_osm.xml b/OpenGPSTracker/application/res/layout/map_osm.xml deleted file mode 100644 index 15220e72..00000000 --- a/OpenGPSTracker/application/res/layout/map_osm.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/OpenGPSTracker/application/res/values/array.xml b/OpenGPSTracker/application/res/values/array.xml index 6bdcc686..7d80a9bb 100644 --- a/OpenGPSTracker/application/res/values/array.xml +++ b/OpenGPSTracker/application/res/values/array.xml @@ -14,7 +14,6 @@ Google Maps - OpenStreetMap Mapquest diff --git a/OpenGPSTracker/application/res/values/array_values.xml b/OpenGPSTracker/application/res/values/array_values.xml index d8cef65e..860894c7 100644 --- a/OpenGPSTracker/application/res/values/array_values.xml +++ b/OpenGPSTracker/application/res/values/array_values.xml @@ -10,7 +10,6 @@ 0 - 1 2 diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/util/Constants.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/util/Constants.java index c633b437..6793664a 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/util/Constants.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/util/Constants.java @@ -78,7 +78,6 @@ public class Constants public static final String TMPICTUREFILE_SUBPATH = "media_tmp.tmp"; public static final Uri NAME_URI = Uri.parse( "content://" + GPStracking.AUTHORITY+".string" ); public static final int GOOGLE = 0; - public static final int OSM = 1; public static final int MAPQUEST = 2; public static final String JOGRUNNER_AUTH = "JOGRUNNER_AUTH"; public static final String EXPORT_TYPE = "SHARE_TYPE"; @@ -91,6 +90,7 @@ public class Constants public static final int OSM_MAKNIK = 1; public static final int OSM_CYCLE = 2; public static final String OSMBASEOVERLAY = "OSM_BASE_OVERLAY"; + public static final String MAPFORGE_BASEOVERLAY = "MAPFORGE_BASEOVERLAY"; public static final String LOGGING_INTERVAL = "customprecisiontime"; public static final String LOGGING_DISTANCE = "customprecisiondistance"; diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/CommonLoggerMap.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/CommonLoggerMap.java index 6e06bff2..ca483122 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/CommonLoggerMap.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/CommonLoggerMap.java @@ -43,9 +43,6 @@ protected void onCreate(Bundle savedInstanceState) case Constants.GOOGLE: mapClass = GoogleLoggerMap.class; break; - case Constants.OSM: - mapClass = OsmLoggerMap.class; - break; case Constants.MAPQUEST: mapClass = MapQuestLoggerMap.class; break; diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java index cb5e6a1b..2a5b4543 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java @@ -934,12 +934,6 @@ protected void onPrepareDialog(int id, Dialog dialog) dialog.findViewById(R.id.shared_layers).setVisibility(View.VISIBLE); dialog.findViewById(R.id.google_overlays).setVisibility(View.VISIBLE); break; - case Constants.OSM: - dialog.findViewById(R.id.osm_backgrounds).setVisibility(View.VISIBLE); - dialog.findViewById(R.id.google_backgrounds).setVisibility(View.GONE); - dialog.findViewById(R.id.shared_layers).setVisibility(View.VISIBLE); - dialog.findViewById(R.id.google_overlays).setVisibility(View.GONE); - break; default: dialog.findViewById(R.id.osm_backgrounds).setVisibility(View.GONE); dialog.findViewById(R.id.google_backgrounds).setVisibility(View.GONE); @@ -1022,9 +1016,6 @@ private void updateMapProvider() case Constants.GOOGLE: mapClass = GoogleLoggerMap.class; break; - case Constants.OSM: - mapClass = OsmLoggerMap.class; - break; case Constants.MAPQUEST: mapClass = MapQuestLoggerMap.class; break; diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/OsmLoggerMap.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/OsmLoggerMap.java deleted file mode 100644 index 4a4dd6eb..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/OsmLoggerMap.java +++ /dev/null @@ -1,515 +0,0 @@ -/*------------------------------------------------------------------------------ - ** Ident: Delivery Center Java - ** Author: rene - ** Copyright: (c) Feb 26, 2012 Sogeti Nederland B.V. All Rights Reserved. - **------------------------------------------------------------------------------ - ** Sogeti Nederland B.V. | No part of this file may be reproduced - ** Distributed Software Engineering | or transmitted in any form or by any - ** Lange Dreef 17 | means, electronic or mechanical, for the - ** 4131 NJ Vianen | purpose, without the express written - ** The Netherlands | permission of the copyright holder. - *------------------------------------------------------------------------------ - */ -package nl.sogeti.android.gpstracker.viewer.map; - -import nl.sogeti.android.gpstracker.R; -import nl.sogeti.android.gpstracker.util.Constants; -import nl.sogeti.android.gpstracker.util.SlidingIndicatorView; -import nl.sogeti.android.gpstracker.viewer.map.overlay.OverlayProvider; - -import org.osmdroid.api.IGeoPoint; -import org.osmdroid.tileprovider.tilesource.TileSourceFactory; -import org.osmdroid.tileprovider.util.CloudmadeUtil; -import org.osmdroid.views.MapView; -import org.osmdroid.views.MapView.Projection; -import org.osmdroid.views.overlay.MyLocationOverlay; -import org.osmdroid.views.overlay.Overlay; - -import android.app.Activity; -import android.app.Dialog; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Point; -import android.os.Bundle; -import android.util.Log; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.MenuItem; -import android.widget.BaseAdapter; -import android.widget.TextView; - -import com.google.android.maps.GeoPoint; - -/** - * ???? - * - * @version $Id:$ - * @author rene (c) Feb 26, 2012, Sogeti B.V. - */ -public class OsmLoggerMap extends Activity implements LoggerMap -{ - protected static final String TAG = "OsmLoggerMap"; - LoggerMapHelper mHelper; - private MapView mMapView; - private TextView[] mSpeedtexts; - private TextView mLastGPSSpeedView; - private TextView mLastGPSAltitudeView; - private TextView mDistanceView; - private MyLocationOverlay mMylocation; - private Projection mProjecton; - - /** - * Called when the activity is first created. - */ - @Override - protected void onCreate(Bundle load) - { - super.onCreate(load); - setContentView(R.layout.map_osm); - - mMapView = (MapView) findViewById(R.id.myMapView); - TextView[] speeds = { (TextView) findViewById(R.id.speedview05), (TextView) findViewById(R.id.speedview04), (TextView) findViewById(R.id.speedview03), - (TextView) findViewById(R.id.speedview02), (TextView) findViewById(R.id.speedview01), (TextView) findViewById(R.id.speedview00) }; - mSpeedtexts = speeds; - mLastGPSSpeedView = (TextView) findViewById(R.id.currentSpeed); - mLastGPSAltitudeView = (TextView) findViewById(R.id.currentAltitude); - mDistanceView = (TextView) findViewById(R.id.currentDistance); - - mHelper = new LoggerMapHelper(this); - mMapView.setBuiltInZoomControls(true); - mProjecton = mMapView.getProjection(); - mHelper.onCreate(load); - - mMylocation = new MyLocationOverlay(this, mMapView); - mMapView.getOverlays().add( new Overlay(this) - { - - @Override - protected void draw(Canvas arg0, MapView map, boolean arg2) - { - Projection projecton = map.getProjection(); - mProjecton = projecton; - IGeoPoint gepoint = map.getMapCenter(); - Point point = projecton.toPixels(gepoint, null); - Log.d(TAG, "Found center ("+gepoint.getLatitudeE6()+","+gepoint.getLongitudeE6()+") matching screen point ("+point.x+","+point.y+") "); - } - } ); - } - - @Override - protected void onResume() - { - super.onResume(); - mHelper.onResume(); - } - - @Override - protected void onPause() - { - mHelper.onPause(); - super.onPause(); - } - - @Override - protected void onDestroy() - { - mHelper.onDestroy(); - super.onDestroy(); - } - - @Override - public void onNewIntent(Intent newIntent) - { - mHelper.onNewIntent(newIntent); - } - - @Override - protected void onRestoreInstanceState(Bundle load) - { - if (load != null) - { - super.onRestoreInstanceState(load); - } - mHelper.onRestoreInstanceState(load); - } - - @Override - protected void onSaveInstanceState(Bundle save) - { - super.onSaveInstanceState(save); - mHelper.onSaveInstanceState(save); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) - { - boolean result = super.onCreateOptionsMenu(menu); - mHelper.onCreateOptionsMenu(menu); - return result; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) - { - mHelper.onPrepareOptionsMenu(menu); - return super.onPrepareOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) - { - boolean handled = mHelper.onOptionsItemSelected(item); - if( !handled ) - { - handled = super.onOptionsItemSelected(item); - } - return handled; - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent intent) - { - super.onActivityResult(requestCode, resultCode, intent); - mHelper.onActivityResult(requestCode, resultCode, intent); - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) - { - boolean propagate = true; - switch (keyCode) - { - default: - propagate = mHelper.onKeyDown(keyCode, event); - if( propagate ) - { - propagate = super.onKeyDown(keyCode, event); - } - break; - } - return propagate; - } - - @Override - protected Dialog onCreateDialog(int id) - { - Dialog dialog = mHelper.onCreateDialog(id); - if( dialog == null ) - { - dialog = super.onCreateDialog(id); - } - return dialog; - } - - @Override - protected void onPrepareDialog(int id, Dialog dialog) - { - mHelper.onPrepareDialog(id, dialog); - super.onPrepareDialog(id, dialog); - } - - /******************************/ - /** Own methods **/ - /******************************/ - - private void setTrafficOverlay(boolean b) - { - SharedPreferences sharedPreferences = mHelper.getPreferences(); - Editor editor = sharedPreferences.edit(); - editor.putBoolean(Constants.TRAFFIC, b); - editor.commit(); - } - - private void setSatelliteOverlay(boolean b) - { - SharedPreferences sharedPreferences = mHelper.getPreferences(); - Editor editor = sharedPreferences.edit(); - editor.putBoolean(Constants.SATELLITE, b); - editor.commit(); - } - - /******************************/ - /** Loggermap methods **/ - /******************************/ - - @Override - public void updateOverlays() - { - SharedPreferences sharedPreferences = mHelper.getPreferences(); - int renderer = sharedPreferences.getInt(Constants.OSMBASEOVERLAY, 0); - switch( renderer ) - { - case Constants.OSM_CLOUDMADE: - CloudmadeUtil.retrieveCloudmadeKey(this.getApplicationContext()); - mMapView.setTileSource(TileSourceFactory.CLOUDMADESTANDARDTILES); - break; - case Constants.OSM_MAKNIK: - mMapView.setTileSource(TileSourceFactory.MAPNIK); - break; - case Constants.OSM_CYCLE: - mMapView.setTileSource(TileSourceFactory.CYCLEMAP); - break; - default: - break; - } - } - - @Override - public void setDrawingCacheEnabled(boolean b) - { - findViewById(R.id.mapScreen).setDrawingCacheEnabled(true); - } - - @Override - public Activity getActivity() - { - return this; - } - - @Override - public void onLayerCheckedChanged(int checkedId, boolean isChecked) - { - switch (checkedId) - { - case R.id.layer_google_satellite: - setSatelliteOverlay(true); - break; - case R.id.layer_google_regular: - setSatelliteOverlay(false); - break; - case R.id.layer_traffic: - setTrafficOverlay(isChecked); - break; - default: - break; - } - } - - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) - { - if (key.equals(Constants.TRAFFIC)) - { - updateOverlays(); - } - else if (key.equals(Constants.SATELLITE)) - { - updateOverlays(); - } - } - - @Override - public Bitmap getDrawingCache() - { - return findViewById(R.id.mapScreen).getDrawingCache(); - } - - @Override - public void showMediaDialog(BaseAdapter mediaAdapter) - { - mHelper.showMediaDialog(mediaAdapter); - } - - public void onDateOverlayChanged() - { - mMapView.postInvalidate(); - } - - @Override - public String getDataSourceId() - { - return LoggerMapHelper.GOOGLE_PROVIDER; - } - - @Override - public boolean isOutsideScreen(GeoPoint lastPoint) - { - Point out = new Point(); - mProjecton.toMapPixels(convertGeoPoint(lastPoint), out); - int height = this.mMapView.getHeight(); - int width = this.mMapView.getWidth(); - return (out.x < 0 || out.y < 0 || out.y > height || out.x > width); - } - - @Override - public boolean isNearScreenEdge(GeoPoint lastPoint) - { - Point out = new Point(); - mProjecton.toMapPixels(convertGeoPoint(lastPoint), out); - int height = this.mMapView.getHeight(); - int width = this.mMapView.getWidth(); - return (out.x < width / 4 || out.y < height / 4 || out.x > (width / 4) * 3 || out.y > (height / 4) * 3); - } - - @Override - public void executePostponedActions() - { - // NOOP for Google Maps - } - - @Override - public void enableCompass() - { - mMylocation.enableCompass(); - } - - @Override - public void enableMyLocation() - { - mMylocation.enableMyLocation(); - } - @Override - public void disableMyLocation() - { - mMylocation.disableMyLocation(); - } - - @Override - public void disableCompass() - { - mMylocation.disableCompass(); - } - - @Override - public void setZoom(int zoom) - { - mMapView.getController().setZoom(zoom); - } - - @Override - public void animateTo(GeoPoint storedPoint) - { - mMapView.getController().animateTo(convertGeoPoint(storedPoint)); - } - - @Override - public int getZoomLevel() - { - return mMapView.getZoomLevel(); - } - - @Override - public GeoPoint getMapCenter() - { - return convertOSMGeoPoint(mMapView.getMapCenter()); - } - - @Override - public boolean zoomOut() - { - return mMapView.getController().zoomOut(); - } - - @Override - public boolean zoomIn() - { - return mMapView.getController().zoomIn(); - } - - @Override - public void postInvalidate() - { - mMapView.postInvalidate(); - } - - @Override - public void addOverlay(OverlayProvider overlay) - { - mMapView.getOverlays().add(overlay.getOSMOverlay()); - } - - @Override - public void clearAnimation() - { - mMapView.clearAnimation(); - } - - @Override - public void setCenter(GeoPoint lastPoint) - { - mMapView.getController().setCenter( convertGeoPoint(lastPoint)); - } - - @Override - public int getMaxZoomLevel() - { - return mMapView.getMaxZoomLevel(); - } - - @Override - public GeoPoint fromPixels(int x, int y) - { - IGeoPoint osmGeopoint = mProjecton.fromPixels(x, y); - GeoPoint geopoint = convertOSMGeoPoint(osmGeopoint); - return geopoint; - } - - @Override - public void toPixels(GeoPoint geoPoint, Point screenPoint) - { - org.osmdroid.util.GeoPoint localGeopoint = convertGeoPoint(geoPoint); - mProjecton.toMapPixels( localGeopoint, screenPoint); - } - - @Override - public boolean hasProjection() - { - return mProjecton != null; - } - - @Override - public float metersToEquatorPixels(float float1) - { - return mProjecton.metersToEquatorPixels(float1); - } - - @Override - public TextView[] getSpeedTextViews() - { - return mSpeedtexts; - } - - @Override - public TextView getAltitideTextView() - { - return mLastGPSAltitudeView; - } - - @Override - public TextView getSpeedTextView() - { - return mLastGPSSpeedView; - } - - @Override - public TextView getDistanceTextView() - { - return mDistanceView; - } - - static org.osmdroid.util.GeoPoint convertGeoPoint( GeoPoint point ) - { - org.osmdroid.util.GeoPoint geopoint = new org.osmdroid.util.GeoPoint(point.getLatitudeE6(), point.getLongitudeE6()); - return geopoint; - } - - static GeoPoint convertOSMGeoPoint( IGeoPoint point ) - { - return new GeoPoint(point.getLatitudeE6(), point.getLongitudeE6() ); - } - - @Override - public void clearOverlays() - { - mMapView.getOverlayManager().clear(); - } - - @Override - public SlidingIndicatorView getScaleIndicatorView() - { - return (SlidingIndicatorView) findViewById(R.id.scaleindicator); - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java index 4c118f8a..9451d712 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java @@ -1,15 +1,12 @@ package nl.sogeti.android.gpstracker.viewer.map.overlay; import nl.sogeti.android.gpstracker.viewer.map.LoggerMap; -import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Point; import android.os.Handler; -import android.util.Log; -import android.view.MotionEvent; import com.google.android.maps.GeoPoint; import com.google.android.maps.MapView; @@ -46,8 +43,6 @@ public abstract class AsyncOverlay extends Overlay implements OverlayProvider private LoggerMap mLoggerMap; - SegmentOsmOverlay mOsmOverlay; - private SegmentMapQuestOverlay mMapQuestOverlay; private int mActiveZoomLevel; @@ -89,7 +84,6 @@ public void run() mActivePointTopLeft = new Point(); mCalculationBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888); - mOsmOverlay = new SegmentOsmOverlay(mLoggerMap.getActivity(), mLoggerMap, this); mMapQuestOverlay = new SegmentMapQuestOverlay(this); } @@ -195,12 +189,6 @@ public Overlay getGoogleOverlay() return this; } - @Override - public org.osmdroid.views.overlay.Overlay getOSMOverlay() - { - return mOsmOverlay; - } - @Override public com.mapquest.android.maps.Overlay getMapQuestOverlay() { @@ -209,42 +197,6 @@ public com.mapquest.android.maps.Overlay getMapQuestOverlay() protected abstract boolean commonOnTap(GeoPoint tappedGeoPoint); - static class SegmentOsmOverlay extends org.osmdroid.views.overlay.Overlay - { - AsyncOverlay mSegmentOverlay; - LoggerMap mLoggerMap; - - public SegmentOsmOverlay(Context ctx, LoggerMap map, AsyncOverlay segmentOverlay) - { - super(ctx); - mLoggerMap = map; - mSegmentOverlay = segmentOverlay; - } - - public AsyncOverlay getSegmentOverlay() - { - return mSegmentOverlay; - } - - @Override - public boolean onSingleTapUp(MotionEvent e, org.osmdroid.views.MapView openStreetMapView) - { - int x = (int) e.getX(); - int y = (int) e.getY(); - GeoPoint tappedGeoPoint = mLoggerMap.fromPixels(x, y); - return mSegmentOverlay.commonOnTap(tappedGeoPoint); - } - - @Override - protected void draw(Canvas canvas, org.osmdroid.views.MapView view, boolean shadow) - { - if (!shadow) - { - mSegmentOverlay.draw(canvas); - } - } - } - static class SegmentMapQuestOverlay extends com.mapquest.android.maps.Overlay { AsyncOverlay mSegmentOverlay; diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/OverlayProvider.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/OverlayProvider.java index cbd526c6..0fc18753 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/OverlayProvider.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/OverlayProvider.java @@ -28,12 +28,8 @@ */ package nl.sogeti.android.gpstracker.viewer.map.overlay; -import com.mapquest.android.maps.Overlay; - - public interface OverlayProvider { public com.google.android.maps.Overlay getGoogleOverlay(); - public org.osmdroid.views.overlay.Overlay getOSMOverlay(); - public Overlay getMapQuestOverlay(); + public com.mapquest.android.maps.Overlay getMapQuestOverlay(); } From ed5938e5000c5cff4c81407ea37eb4b7bf45f454 Mon Sep 17 00:00:00 2001 From: Rene de Groot Date: Sun, 4 Nov 2012 22:45:26 +0100 Subject: [PATCH 02/12] Shoehorn Mapquest and GoogleMaps into fragments --- .../application/AndroidManifest.xml | 22 +- .../application/res/layout/activity_map.xml | 5 + ...{map_google.xml => fragment_googlemap.xml} | 0 ...map_mapquest.xml => fragment_mapquest.xml} | 0 .../gpstracker/actions/ShareTrack.java | 4 +- .../activity/LoggerMapActivity.java | 88 ++++++ .../fragment/AbstractLoggerFragment.java | 151 +++++++++++ .../GoogleMapFragment.java} | 255 ++++-------------- .../LoggerMapFragment.java} | 12 +- .../MapQuestFragment.java} | 236 ++++------------ .../ActivityHostFragment.java | 84 ++++++ .../FixedMyLocationOverlay.java | 2 +- .../LocalActivityManagerFragment.java | 97 +++++++ .../MyGoogleMapActivity.java | 43 +++ .../MyMapquestMapActivity.java | 44 +++ .../gpstracker/logger/GPSLoggerService.java | 8 +- .../android/gpstracker/viewer/TrackList.java | 8 +- .../viewer/map/CommonLoggerMap.java | 67 ----- .../viewer/map/LoggerMapHelper.java | 100 +++---- .../viewer/map/overlay/AsyncOverlay.java | 8 +- .../map/overlay/BitmapSegmentsOverlay.java | 6 +- .../viewer/map/overlay/SegmentRendering.java | 6 +- .../tests/demo/OpenGPSTrackerDemo.java | 8 +- .../tests/perf/LoggerStressTest.java | 6 +- .../gpstracker/tests/perf/MapStressTest.java | 6 +- .../tests/userinterface/LoggerMapTest.java | 8 +- 26 files changed, 692 insertions(+), 582 deletions(-) create mode 100644 OpenGPSTracker/application/res/layout/activity_map.xml rename OpenGPSTracker/application/res/layout/{map_google.xml => fragment_googlemap.xml} (100%) rename OpenGPSTracker/application/res/layout/{map_mapquest.xml => fragment_mapquest.xml} (100%) create mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java create mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java rename OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/{viewer/map/GoogleLoggerMap.java => fragment/GoogleMapFragment.java} (56%) rename OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/{viewer/map/LoggerMap.java => fragment/LoggerMapFragment.java} (94%) rename OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/{viewer/map/MapQuestLoggerMap.java => fragment/MapQuestFragment.java} (50%) create mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/ActivityHostFragment.java rename OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/{viewer/map/overlay => googlemapfragment}/FixedMyLocationOverlay.java (98%) create mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/LocalActivityManagerFragment.java create mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyGoogleMapActivity.java create mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyMapquestMapActivity.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/CommonLoggerMap.java diff --git a/OpenGPSTracker/application/AndroidManifest.xml b/OpenGPSTracker/application/AndroidManifest.xml index cf966592..739d19e4 100644 --- a/OpenGPSTracker/application/AndroidManifest.xml +++ b/OpenGPSTracker/application/AndroidManifest.xml @@ -45,7 +45,7 @@ android:value="534dfce474894e218f363a5473248ff6" /> @@ -64,23 +64,11 @@ - - - + android:name=".googlemapfragment.MyGoogleMapActivity" + android:label="@string/app_name" /> - + android:name=".googlemapfragment.MyMapquestMapActivity" + android:label="@string/app_name" /> diff --git a/OpenGPSTracker/application/res/layout/activity_map.xml b/OpenGPSTracker/application/res/layout/activity_map.xml new file mode 100644 index 00000000..32073bc4 --- /dev/null +++ b/OpenGPSTracker/application/res/layout/activity_map.xml @@ -0,0 +1,5 @@ + + diff --git a/OpenGPSTracker/application/res/layout/map_google.xml b/OpenGPSTracker/application/res/layout/fragment_googlemap.xml similarity index 100% rename from OpenGPSTracker/application/res/layout/map_google.xml rename to OpenGPSTracker/application/res/layout/fragment_googlemap.xml diff --git a/OpenGPSTracker/application/res/layout/map_mapquest.xml b/OpenGPSTracker/application/res/layout/fragment_mapquest.xml similarity index 100% rename from OpenGPSTracker/application/res/layout/map_mapquest.xml rename to OpenGPSTracker/application/res/layout/fragment_mapquest.xml diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java index 7a48b50f..28dfce39 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java @@ -48,9 +48,9 @@ import nl.sogeti.android.gpstracker.breadcrumbs.BreadcrumbsService; import nl.sogeti.android.gpstracker.breadcrumbs.BreadcrumbsService.LocalBinder; import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; import nl.sogeti.android.gpstracker.util.Constants; import nl.sogeti.android.gpstracker.util.UnitsI18n; -import nl.sogeti.android.gpstracker.viewer.map.LoggerMap; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; @@ -774,7 +774,7 @@ public void startNotification() CharSequence tickerText = getString(R.string.ticker_saving) + "\"" + mFileName + "\""; mNotification = new Notification(); - PendingIntent contentIntent = PendingIntent.getActivity(ShareTrack.this, 0, new Intent(ShareTrack.this, LoggerMap.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), + PendingIntent contentIntent = PendingIntent.getActivity(ShareTrack.this, 0, new Intent(ShareTrack.this, LoggerMapFragment.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), PendingIntent.FLAG_UPDATE_CURRENT); mNotification.contentIntent = contentIntent; diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java new file mode 100644 index 00000000..f8165609 --- /dev/null +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java @@ -0,0 +1,88 @@ +/*------------------------------------------------------------------------------ + ** Ident: Delivery Center Java + ** Author: rene + ** Copyright: (c) Nov 4, 2012 Sogeti Nederland B.V. All Rights Reserved. + **------------------------------------------------------------------------------ + ** Sogeti Nederland B.V. | No part of this file may be reproduced + ** Distributed Software Engineering | or transmitted in any form or by any + ** Lange Dreef 17 | means, electronic or mechanical, for the + ** 4131 NJ Vianen | purpose, without the express written + ** The Netherlands | permission of the copyright holder. + *------------------------------------------------------------------------------ + */ +package nl.sogeti.android.gpstracker.activity; + +import nl.sogeti.android.gpstracker.R; +import nl.sogeti.android.gpstracker.fragment.GoogleMapFragment; +import nl.sogeti.android.gpstracker.fragment.MapQuestFragment; +import nl.sogeti.android.gpstracker.util.Constants; +import nl.sogeti.android.gpstracker.viewer.map.LoggerMapHelper; +import android.app.Activity; +import android.app.Fragment; +import android.os.Bundle; +import android.preference.PreferenceManager; +import android.util.Log; + +/** + * ???? + * + * @version $Id:$ + * @author rene (c) Nov 4, 2012, Sogeti B.V. + */ +public class LoggerMapActivity extends Activity +{ + private static final String TAG = "LoggerMapActivity"; + + @Override + protected void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_map); + + if (savedInstanceState == null) + { + Fragment mapFragment = null; + int provider = Integer.valueOf(PreferenceManager.getDefaultSharedPreferences(this).getString(Constants.MAPPROVIDER, "" + Constants.GOOGLE)).intValue(); + switch (provider) + { + case Constants.GOOGLE: + mapFragment = new GoogleMapFragment(); + mapFragment.setArguments(getIntent().getExtras()); + break; + case Constants.MAPQUEST: + mapFragment = new MapQuestFragment(); + mapFragment.setArguments(getIntent().getExtras()); + break; + default: + mapFragment = new GoogleMapFragment(); + mapFragment.setArguments(getIntent().getExtras()); + Log.e(TAG, "Fault in value " + provider + " as MapProvider, defaulting to Google Maps."); + break; + } + getFragmentManager().beginTransaction().add(R.id.activity_logmapview, mapFragment).commit(); + } + } + + public void updateMapProvider() + { + int provider = Integer.valueOf(PreferenceManager.getDefaultSharedPreferences(this).getString(Constants.MAPPROVIDER, "" + Constants.GOOGLE)).intValue(); + Fragment mapFragment = null; + switch (provider) + { + case Constants.GOOGLE: + mapFragment = new GoogleMapFragment(); + mapFragment.setArguments(getIntent().getExtras()); + break; + case Constants.MAPQUEST: + mapFragment = new MapQuestFragment(); + mapFragment.setArguments(getIntent().getExtras()); + break; + default: + mapFragment = new GoogleMapFragment(); + mapFragment.setArguments(getIntent().getExtras()); + Log.e(TAG, "Fault in value " + provider + " as MapProvider, defaulting to Google Maps."); + break; + } + getFragmentManager().beginTransaction().replace(R.id.activity_logmapview, mapFragment).commit(); + } +} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java new file mode 100644 index 00000000..305aa553 --- /dev/null +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java @@ -0,0 +1,151 @@ +/*------------------------------------------------------------------------------ + ** Ident: Delivery Center Java + ** Author: rene + ** Copyright: (c) Nov 4, 2012 Sogeti Nederland B.V. All Rights Reserved. + **------------------------------------------------------------------------------ + ** Sogeti Nederland B.V. | No part of this file may be reproduced + ** Distributed Software Engineering | or transmitted in any form or by any + ** Lange Dreef 17 | means, electronic or mechanical, for the + ** 4131 NJ Vianen | purpose, without the express written + ** The Netherlands | permission of the copyright holder. + *------------------------------------------------------------------------------ + */ +package nl.sogeti.android.gpstracker.fragment; + +import nl.sogeti.android.gpstracker.R; +import nl.sogeti.android.gpstracker.viewer.map.LoggerMapHelper; +import android.app.Fragment; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuInflater; +import android.view.MenuItem; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +/** + * ???? + * + * @version $Id:$ + * @author rene (c) Nov 4, 2012, Sogeti B.V. + */ +public abstract class AbstractLoggerFragment extends Fragment implements LoggerMapFragment +{ + + protected LoggerMapHelper mHelper; + private TextView[] mSpeedtexts; + private TextView mLastGPSSpeedView; + private TextView mLastGPSAltitudeView; + private TextView mDistanceView; + private View mSpeedbar; + + /** + * Constructor: create a new AbstractLoggerFragment. + */ + public AbstractLoggerFragment() + { + } + + public void didCreateView(View v, Bundle savedInstanceState) + { + TextView[] speeds = { (TextView) v.findViewById(R.id.speedview05), (TextView) v.findViewById(R.id.speedview04), (TextView) v.findViewById(R.id.speedview03), + (TextView) v.findViewById(R.id.speedview02), (TextView) v.findViewById(R.id.speedview01), (TextView) v.findViewById(R.id.speedview00) }; + mSpeedtexts = speeds; + mLastGPSSpeedView = (TextView) v.findViewById(R.id.currentSpeed); + mLastGPSAltitudeView = (TextView) v.findViewById(R.id.currentAltitude); + mDistanceView = (TextView) v.findViewById(R.id.currentDistance); + mSpeedbar = v.findViewById(R.id.speedbar); + mHelper.onCreateView(); + } + + @Override + public void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + mHelper = new LoggerMapHelper(this); + mHelper.onCreate(savedInstanceState); + } + + @Override + public void onResume() + { + super.onResume(); + mHelper.onResume(); + } + + @Override + public void onPause() + { + mHelper.onPause(); + super.onPause(); + } + + @Override + public void onStop() + { + super.onStop(); + } + + @Override + public void onSaveInstanceState(Bundle save) + { + super.onSaveInstanceState(save); + mHelper.onSaveInstanceState(save); + } + + @Override + public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) + { + super.onCreateOptionsMenu(menu, inflater); + mHelper.onCreateOptionsMenu(menu); + } + + @Override + public void onPrepareOptionsMenu(Menu menu) + { + mHelper.onPrepareOptionsMenu(menu); + super.onPrepareOptionsMenu(menu); + } + + @Override + public boolean onOptionsItemSelected(MenuItem item) + { + boolean handled = mHelper.onOptionsItemSelected(item); + if( !handled ) + { + handled = super.onOptionsItemSelected(item); + } + return handled; + } + + @Override + public TextView[] getSpeedTextViews() + { + return mSpeedtexts; + } + + @Override + public TextView getAltitideTextView() + { + return mLastGPSAltitudeView; + } + + @Override + public TextView getSpeedTextView() + { + return mLastGPSSpeedView; + } + + @Override + public TextView getDistanceTextView() + { + return mDistanceView; + } + + @Override + public View getSpeedbar() + { + return mSpeedbar; + } +} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/GoogleLoggerMap.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/GoogleMapFragment.java similarity index 56% rename from OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/GoogleLoggerMap.java rename to OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/GoogleMapFragment.java index 900e3817..da6b62b5 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/GoogleLoggerMap.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/GoogleMapFragment.java @@ -26,194 +26,79 @@ * along with OpenGPSTracker. If not, see . * */ -package nl.sogeti.android.gpstracker.viewer.map; +package nl.sogeti.android.gpstracker.fragment; import nl.sogeti.android.gpstracker.R; +import nl.sogeti.android.gpstracker.googlemapfragment.ActivityHostFragment; +import nl.sogeti.android.gpstracker.googlemapfragment.FixedMyLocationOverlay; +import nl.sogeti.android.gpstracker.googlemapfragment.MyGoogleMapActivity; import nl.sogeti.android.gpstracker.util.Constants; import nl.sogeti.android.gpstracker.util.SlidingIndicatorView; -import nl.sogeti.android.gpstracker.viewer.map.overlay.FixedMyLocationOverlay; +import nl.sogeti.android.gpstracker.viewer.map.LoggerMapHelper; import nl.sogeti.android.gpstracker.viewer.map.overlay.OverlayProvider; import android.app.Activity; -import android.app.Dialog; -import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.graphics.Bitmap; import android.graphics.Point; import android.os.Bundle; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.MenuItem; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; import android.widget.BaseAdapter; -import android.widget.TextView; import com.google.android.maps.GeoPoint; -import com.google.android.maps.MapActivity; import com.google.android.maps.MapView; /** - * Main activity showing a track and allowing logging control + * Fragment showing a track and allowing logging control * * @version $Id$ * @author rene (c) Jan 18, 2009, Sogeti B.V. */ -public class GoogleLoggerMap extends MapActivity implements LoggerMap +public class GoogleMapFragment extends ActivityHostFragment { - LoggerMapHelper mHelper; private MapView mMapView; - private TextView[] mSpeedtexts; - private TextView mLastGPSSpeedView; - private TextView mLastGPSAltitudeView; - private TextView mDistanceView; private FixedMyLocationOverlay mMylocation; - - /** - * Called when the activity is first created. - */ - @Override - protected void onCreate(Bundle load) - { - super.onCreate(load); - setContentView(R.layout.map_google); - - mHelper = new LoggerMapHelper(this); - mMapView = (MapView) findViewById(R.id.myMapView); - mMylocation = new FixedMyLocationOverlay(this, mMapView); - mMapView.setBuiltInZoomControls(true); - TextView[] speeds = { (TextView) findViewById(R.id.speedview05), (TextView) findViewById(R.id.speedview04), (TextView) findViewById(R.id.speedview03), - (TextView) findViewById(R.id.speedview02), (TextView) findViewById(R.id.speedview01), (TextView) findViewById(R.id.speedview00) }; - mSpeedtexts = speeds; - mLastGPSSpeedView = (TextView) findViewById(R.id.currentSpeed); - mLastGPSAltitudeView = (TextView) findViewById(R.id.currentAltitude); - mDistanceView = (TextView) findViewById(R.id.currentDistance); - - mHelper.onCreate(load); - } - - @Override - protected void onResume() - { - super.onResume(); - mHelper.onResume(); - } - - @Override - protected void onPause() - { - mHelper.onPause(); - super.onPause(); - } - - @Override - protected void onDestroy() - { - mHelper.onDestroy(); - super.onDestroy(); - } - - @Override - public void onNewIntent(Intent newIntent) - { - mHelper.onNewIntent(newIntent); - } @Override - protected void onRestoreInstanceState(Bundle load) - { - if (load != null) - { - super.onRestoreInstanceState(load); - } - mHelper.onRestoreInstanceState(load); - } - - @Override - protected void onSaveInstanceState(Bundle save) - { - super.onSaveInstanceState(save); - mHelper.onSaveInstanceState(save); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) + protected Class< ? extends Activity> getActivityClass() { - boolean result = super.onCreateOptionsMenu(menu); - mHelper.onCreateOptionsMenu(menu); - return result; + return MyGoogleMapActivity.class; } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) - { - mHelper.onPrepareOptionsMenu(menu); - return super.onPrepareOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) - { - boolean handled = mHelper.onOptionsItemSelected(item); - if( !handled ) - { - handled = super.onOptionsItemSelected(item); - } - return handled; - } - + @Override - protected void onActivityResult(int requestCode, int resultCode, Intent intent) + public void onAttach(Activity activity) { - super.onActivityResult(requestCode, resultCode, intent); - mHelper.onActivityResult(requestCode, resultCode, intent); + super.onAttach(activity); } - + @Override - public boolean onKeyDown(int keyCode, KeyEvent event) + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - boolean propagate = true; - switch (keyCode) - { - case KeyEvent.KEYCODE_S: - setSatelliteOverlay(!this.mMapView.isSatellite()); - propagate = false; - break; - case KeyEvent.KEYCODE_A: - setTrafficOverlay(!this.mMapView.isTraffic()); - propagate = false; - break; - default: - propagate = mHelper.onKeyDown(keyCode, event); - if( propagate ) - { - propagate = super.onKeyDown(keyCode, event); - } - break; - } - return propagate; + View v = super.onCreateView(inflater, container, savedInstanceState); + mMapView = (MapView) getHostedActivity().findViewById(R.id.myMapView); + mMapView.setBuiltInZoomControls(true); + mMylocation = new FixedMyLocationOverlay(this.getActivity(), mMapView); + super.didCreateView(v, savedInstanceState); + + return v; } - + @Override - protected Dialog onCreateDialog(int id) + public void onCreate(Bundle savedInstanceState) { - Dialog dialog = mHelper.onCreateDialog(id); - if( dialog == null ) - { - dialog = super.onCreateDialog(id); - } - return dialog; + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); } - + @Override - protected void onPrepareDialog(int id, Dialog dialog) + public void onDestroyView() { - mHelper.onPrepareDialog(id, dialog); - super.onPrepareDialog(id, dialog); + mMapView = null; + super.onDestroyView(); } - - /******************************/ - /** Own methods **/ - /******************************/ - + private void setTrafficOverlay(boolean b) { SharedPreferences sharedPreferences = mHelper.getPreferences(); @@ -229,42 +114,23 @@ private void setSatelliteOverlay(boolean b) editor.putBoolean(Constants.SATELLITE, b); editor.commit(); } - - @Override - protected boolean isRouteDisplayed() - { - return true; - } - - @Override - protected boolean isLocationDisplayed() - { - SharedPreferences sharedPreferences = mHelper.getPreferences(); - return sharedPreferences.getBoolean(Constants.LOCATION, false) || mHelper.isLogging(); - } /******************************/ - /** Loggermap methods **/ + /** Loggermap methods **/ /******************************/ - + @Override public void updateOverlays() { SharedPreferences sharedPreferences = mHelper.getPreferences(); - GoogleLoggerMap.this.mMapView.setSatellite(sharedPreferences.getBoolean(Constants.SATELLITE, false)); - GoogleLoggerMap.this.mMapView.setTraffic(sharedPreferences.getBoolean(Constants.TRAFFIC, false)); + mMapView.setSatellite(sharedPreferences.getBoolean(Constants.SATELLITE, false)); + mMapView.setTraffic(sharedPreferences.getBoolean(Constants.TRAFFIC, false)); } - + @Override public void setDrawingCacheEnabled(boolean b) { - findViewById(R.id.mapScreen).setDrawingCacheEnabled(true); - } - - @Override - public Activity getActivity() - { - return this; + mMapView.getRootView().setDrawingCacheEnabled(true); } @Override @@ -302,7 +168,7 @@ else if (key.equals(Constants.SATELLITE)) @Override public Bitmap getDrawingCache() { - return findViewById(R.id.mapScreen).getDrawingCache(); + return mMapView.getRootView().getDrawingCache(); } @Override @@ -315,7 +181,7 @@ public void onDateOverlayChanged() { mMapView.postInvalidate(); } - + @Override public String getDataSourceId() { @@ -347,7 +213,7 @@ public void executePostponedActions() { // NOOP for Google Maps } - + @Override public void enableCompass() { @@ -357,8 +223,9 @@ public void enableCompass() @Override public void enableMyLocation() { - mMylocation.enableMyLocation(); + mMylocation.enableMyLocation(); } + @Override public void disableMyLocation() { @@ -404,7 +271,7 @@ public boolean zoomOut() @Override public boolean zoomIn() { - return mMapView.getController().zoomIn(); + return mMapView.getController().zoomIn(); } @Override @@ -455,30 +322,6 @@ public void toPixels(GeoPoint geoPoint, Point screenPoint) mMapView.getProjection().toPixels(geoPoint, screenPoint); } - @Override - public TextView[] getSpeedTextViews() - { - return mSpeedtexts; - } - - @Override - public TextView getAltitideTextView() - { - return mLastGPSAltitudeView; - } - - @Override - public TextView getSpeedTextView() - { - return mLastGPSSpeedView; - } - - @Override - public TextView getDistanceTextView() - { - return mDistanceView; - } - @Override public void addOverlay(OverlayProvider overlay) { @@ -487,13 +330,13 @@ public void addOverlay(OverlayProvider overlay) @Override public void clearOverlays() - { + { mMapView.getOverlays().clear(); } - + @Override public SlidingIndicatorView getScaleIndicatorView() { - return (SlidingIndicatorView) findViewById(R.id.scaleindicator); + return (SlidingIndicatorView) getView().findViewById(R.id.scaleindicator); } -} \ No newline at end of file +} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMap.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragment.java similarity index 94% rename from OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMap.java rename to OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragment.java index de0dfe1b..c964dab9 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMap.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragment.java @@ -10,14 +10,16 @@ ** The Netherlands | permission of the copyright holder. *------------------------------------------------------------------------------ */ -package nl.sogeti.android.gpstracker.viewer.map; +package nl.sogeti.android.gpstracker.fragment; import nl.sogeti.android.gpstracker.util.SlidingIndicatorView; import nl.sogeti.android.gpstracker.viewer.map.overlay.OverlayProvider; import android.app.Activity; +import android.content.Context; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.Point; +import android.view.View; import android.widget.BaseAdapter; import android.widget.TextView; @@ -29,13 +31,11 @@ * @version $Id$ * @author rene (c) Feb 26, 2012, Sogeti B.V. */ -public interface LoggerMap +public interface LoggerMapFragment { void setDrawingCacheEnabled(boolean b); - Activity getActivity(); - void updateOverlays(); void onLayerCheckedChanged(int checkedId, boolean b); @@ -103,4 +103,8 @@ public interface LoggerMap void clearOverlays(); SlidingIndicatorView getScaleIndicatorView(); + + Activity getActivity(); + + View getSpeedbar(); } diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/MapQuestLoggerMap.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/MapQuestFragment.java similarity index 50% rename from OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/MapQuestLoggerMap.java rename to OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/MapQuestFragment.java index 6a7c66f4..1c9f4fbe 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/MapQuestLoggerMap.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/MapQuestFragment.java @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------------ ** Ident: Delivery Center Java ** Author: rene - ** Copyright: (c) Mar 3, 2012 Sogeti Nederland B.V. All Rights Reserved. + ** Copyright: (c) Nov 4, 2012 Sogeti Nederland B.V. All Rights Reserved. **------------------------------------------------------------------------------ ** Sogeti Nederland B.V. | No part of this file may be reproduced ** Distributed Software Engineering | or transmitted in any form or by any @@ -10,181 +10,80 @@ ** The Netherlands | permission of the copyright holder. *------------------------------------------------------------------------------ */ -package nl.sogeti.android.gpstracker.viewer.map; +package nl.sogeti.android.gpstracker.fragment; import nl.sogeti.android.gpstracker.R; +import nl.sogeti.android.gpstracker.googlemapfragment.ActivityHostFragment; +import nl.sogeti.android.gpstracker.googlemapfragment.MyGoogleMapActivity; +import nl.sogeti.android.gpstracker.googlemapfragment.MyMapquestMapActivity; import nl.sogeti.android.gpstracker.util.SlidingIndicatorView; +import nl.sogeti.android.gpstracker.viewer.map.LoggerMapHelper; import nl.sogeti.android.gpstracker.viewer.map.overlay.OverlayProvider; import android.app.Activity; -import android.app.Dialog; -import android.content.Intent; import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.Point; import android.os.Bundle; -import android.view.KeyEvent; -import android.view.Menu; -import android.view.MenuItem; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; import android.widget.BaseAdapter; -import android.widget.TextView; import com.google.android.maps.GeoPoint; -import com.mapquest.android.maps.MapActivity; import com.mapquest.android.maps.MapView; import com.mapquest.android.maps.MyLocationOverlay; /** * ???? - * + * * @version $Id:$ - * @author rene (c) Mar 3, 2012, Sogeti B.V. + * @author rene (c) Nov 4, 2012, Sogeti B.V. */ -public class MapQuestLoggerMap extends MapActivity implements LoggerMap +public class MapQuestFragment extends ActivityHostFragment { - LoggerMapHelper mHelper; private MapView mMapView; - private TextView[] mSpeedtexts; - private TextView mLastGPSSpeedView; - private TextView mLastGPSAltitudeView; - private TextView mDistanceView; - private MyLocationOverlay mMylocation; - + private MyLocationOverlay mMylocation; + /** - * Called when the activity is first created. + * Constructor: create a new MapQuestFragment. */ - @Override - protected void onCreate(Bundle load) - { - super.onCreate(load); - setContentView(R.layout.map_mapquest); - - mMapView = (MapView) findViewById(R.id.myMapView); - mHelper = new LoggerMapHelper(this); - mMapView = (MapView) findViewById(R.id.myMapView); - mMylocation = new MyLocationOverlay(this, mMapView); - mMapView.setBuiltInZoomControls(true); - TextView[] speeds = { (TextView) findViewById(R.id.speedview05), (TextView) findViewById(R.id.speedview04), (TextView) findViewById(R.id.speedview03), - (TextView) findViewById(R.id.speedview02), (TextView) findViewById(R.id.speedview01), (TextView) findViewById(R.id.speedview00) }; - mSpeedtexts = speeds; - mLastGPSSpeedView = (TextView) findViewById(R.id.currentSpeed); - mLastGPSAltitudeView = (TextView) findViewById(R.id.currentAltitude); - mDistanceView = (TextView) findViewById(R.id.currentDistance); - - mHelper.onCreate(load); - } - - @Override - protected void onResume() + public MapQuestFragment() { - super.onResume(); - mHelper.onResume(); } @Override - protected void onPause() + protected Class< ? extends Activity> getActivityClass() { - mHelper.onPause(); - super.onPause(); - } - - @Override - protected void onDestroy() - { - mHelper.onDestroy(); - super.onDestroy(); - } - - @Override - public void onNewIntent(Intent newIntent) - { - mHelper.onNewIntent(newIntent); + return MyMapquestMapActivity.class; } @Override - protected void onRestoreInstanceState(Bundle load) - { - if (load != null) - { - super.onRestoreInstanceState(load); - } - mHelper.onRestoreInstanceState(load); - } - - @Override - protected void onSaveInstanceState(Bundle save) - { - super.onSaveInstanceState(save); - mHelper.onSaveInstanceState(save); - } - - @Override - public boolean onCreateOptionsMenu(Menu menu) - { - boolean result = super.onCreateOptionsMenu(menu); - mHelper.onCreateOptionsMenu(menu); - return result; - } - - @Override - public boolean onPrepareOptionsMenu(Menu menu) + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - mHelper.onPrepareOptionsMenu(menu); - return super.onPrepareOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) - { - boolean handled = mHelper.onOptionsItemSelected(item); - if( !handled ) - { - handled = super.onOptionsItemSelected(item); - } - return handled; - } - - @Override - protected void onActivityResult(int requestCode, int resultCode, Intent intent) - { - super.onActivityResult(requestCode, resultCode, intent); - mHelper.onActivityResult(requestCode, resultCode, intent); - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) - { - boolean propagate = true; - switch (keyCode) - { - default: - propagate = mHelper.onKeyDown(keyCode, event); - if( propagate ) - { - propagate = super.onKeyDown(keyCode, event); - } - break; - } - return propagate; - } - + View v = super.onCreateView(inflater, container, savedInstanceState); + mMapView = (MapView) v.findViewById(R.id.myMapView); + mMapView.setBuiltInZoomControls(true); + mMylocation = new MyLocationOverlay(getActivity(), mMapView); + super.didCreateView(v, savedInstanceState); + + return v; + }; + @Override - protected Dialog onCreateDialog(int id) + public void onCreate(Bundle savedInstanceState) { - Dialog dialog = mHelper.onCreateDialog(id); - if( dialog == null ) - { - dialog = super.onCreateDialog(id); - } - return dialog; - } + super.onCreate(savedInstanceState); + setHasOptionsMenu(true); + + } @Override - protected void onPrepareDialog(int id, Dialog dialog) + public void onDestroyView() { - mHelper.onPrepareDialog(id, dialog); - super.onPrepareDialog(id, dialog); + mMapView = null; + super.onDestroyView(); } - + /******************************/ /** Loggermap methods **/ /******************************/ @@ -197,15 +96,9 @@ public void updateOverlays() @Override public void setDrawingCacheEnabled(boolean b) { - findViewById(R.id.mapScreen).setDrawingCacheEnabled(true); + mMapView.getRootView().setDrawingCacheEnabled(true); } - @Override - public Activity getActivity() - { - return this; - } - @Override public void onLayerCheckedChanged(int checkedId, boolean isChecked) { @@ -219,7 +112,7 @@ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, Strin @Override public Bitmap getDrawingCache() { - return findViewById(R.id.mapScreen).getDrawingCache(); + return mMapView.getRootView().getDrawingCache(); } @Override @@ -243,7 +136,7 @@ public String getDataSourceId() public boolean isOutsideScreen(GeoPoint lastPoint) { Point out = new Point(); - this.mMapView.getProjection().toPixels(MapQuestLoggerMap.convertGeoPoint(lastPoint), out); + this.mMapView.getProjection().toPixels(convertGeoPoint(lastPoint), out); int height = this.mMapView.getHeight(); int width = this.mMapView.getWidth(); return (out.x < 0 || out.y < 0 || out.y > height || out.x > width); @@ -253,7 +146,7 @@ public boolean isOutsideScreen(GeoPoint lastPoint) public boolean isNearScreenEdge(GeoPoint lastPoint) { Point out = new Point(); - this.mMapView.getProjection().toPixels(MapQuestLoggerMap.convertGeoPoint(lastPoint), out); + this.mMapView.getProjection().toPixels(convertGeoPoint(lastPoint), out); int height = this.mMapView.getHeight(); int width = this.mMapView.getWidth(); return (out.x < width / 4 || out.y < height / 4 || out.x > (width / 4) * 3 || out.y > (height / 4) * 3); @@ -296,7 +189,7 @@ public void setZoom(int zoom) @Override public void animateTo(GeoPoint storedPoint) { - mMapView.getController().animateTo(MapQuestLoggerMap.convertGeoPoint(storedPoint)); + mMapView.getController().animateTo(convertGeoPoint(storedPoint)); } @Override @@ -308,7 +201,7 @@ public int getZoomLevel() @Override public GeoPoint getMapCenter() { - return MapQuestLoggerMap.convertMapQuestGeoPoint(mMapView.getMapCenter()); + return convertMapQuestGeoPoint(mMapView.getMapCenter()); } @Override @@ -344,7 +237,7 @@ public void clearAnimation() @Override public void setCenter(GeoPoint lastPoint) { - mMapView.getController().setCenter( MapQuestLoggerMap.convertGeoPoint(lastPoint)); + mMapView.getController().setCenter( convertGeoPoint(lastPoint)); } @Override @@ -375,33 +268,9 @@ public float metersToEquatorPixels(float float1) @Override public void toPixels(GeoPoint geoPoint, Point screenPoint) { - com.mapquest.android.maps.GeoPoint mqGeopoint = MapQuestLoggerMap.convertGeoPoint(geoPoint); + com.mapquest.android.maps.GeoPoint mqGeopoint = convertGeoPoint(geoPoint); mMapView.getProjection().toPixels( mqGeopoint, screenPoint); } - - @Override - public TextView[] getSpeedTextViews() - { - return mSpeedtexts; - } - - @Override - public TextView getAltitideTextView() - { - return mLastGPSAltitudeView; - } - - @Override - public TextView getSpeedTextView() - { - return mLastGPSSpeedView; - } - - @Override - public TextView getDistanceTextView() - { - return mDistanceView; - } static com.mapquest.android.maps.GeoPoint convertGeoPoint( GeoPoint point ) { @@ -422,17 +291,6 @@ public void clearOverlays() @Override public SlidingIndicatorView getScaleIndicatorView() { - return (SlidingIndicatorView) findViewById(R.id.scaleindicator); - } - - /******************************/ - /** Own methods **/ - /******************************/ - - @Override - public boolean isRouteDisplayed() - { - return true; - } - + return (SlidingIndicatorView) getView().findViewById(R.id.scaleindicator); + } } diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/ActivityHostFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/ActivityHostFragment.java new file mode 100644 index 00000000..7747d429 --- /dev/null +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/ActivityHostFragment.java @@ -0,0 +1,84 @@ +/* + * Copyright (C) 2011 Ievgenii Nazaruk + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package nl.sogeti.android.gpstracker.googlemapfragment; + +import android.app.Activity; +import android.content.Intent; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewParent; +import android.view.Window; + +/** + * This is a fragment that will be used during transition from activities to fragments. + */ +public abstract class ActivityHostFragment extends LocalActivityManagerFragment +{ + + protected abstract Class< ? extends Activity> getActivityClass(); + + private final static String ACTIVITY_TAG = "hosted"; + + @SuppressWarnings("deprecation") + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) + { + Intent intent = new Intent(getActivity(), getActivityClass()); + + final Window w = getLocalActivityManager().startActivity(ACTIVITY_TAG, intent); + final View wd = w != null ? w.getDecorView() : null; + + if (wd != null) + { + ViewParent parent = wd.getParent(); + if (parent != null) + { + ViewGroup v = (ViewGroup) parent; + v.removeView(wd); + } + + wd.setVisibility(View.VISIBLE); + wd.setFocusableInTouchMode(true); + if (wd instanceof ViewGroup) + { + ((ViewGroup) wd).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); + } + } + return wd; + } + + /* + * (non-Javadoc) + * @see android.support.v4.app.Fragment#onDestroyView() + */ + @Override + public void onDestroyView() + { + super.onDestroyView(); + } + + /** + * For accessing public methods of the hosted activity + */ + @SuppressWarnings("deprecation") + public Activity getHostedActivity() + { + return getLocalActivityManager().getActivity(ACTIVITY_TAG); + } +} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/FixedMyLocationOverlay.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/FixedMyLocationOverlay.java similarity index 98% rename from OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/FixedMyLocationOverlay.java rename to OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/FixedMyLocationOverlay.java index 2501542f..69ea57ae 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/FixedMyLocationOverlay.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/FixedMyLocationOverlay.java @@ -17,7 +17,7 @@ * along with OpenGPSTracker. If not, see . * */ -package nl.sogeti.android.gpstracker.viewer.map.overlay; +package nl.sogeti.android.gpstracker.googlemapfragment; import nl.sogeti.android.gpstracker.R; import android.content.Context; diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/LocalActivityManagerFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/LocalActivityManagerFragment.java new file mode 100644 index 00000000..e758bfbe --- /dev/null +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/LocalActivityManagerFragment.java @@ -0,0 +1,97 @@ +/* + * Copyright (C) 2011 Ievgenii Nazaruk + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package nl.sogeti.android.gpstracker.googlemapfragment; + +import nl.sogeti.android.gpstracker.fragment.AbstractLoggerFragment; +import nl.sogeti.android.gpstracker.fragment.GoogleMapFragment; +import android.app.LocalActivityManager; +import android.os.Bundle; +import android.app.Fragment; +import android.util.Log; + +/** + * This is a fragment that will be used during transition from activities to fragments. + */ +@SuppressWarnings("deprecation") +public abstract class LocalActivityManagerFragment extends AbstractLoggerFragment +{ + + private static final String TAG = LocalActivityManagerFragment.class.getSimpleName(); + private static final String KEY_STATE_BUNDLE = "localActivityManagerState"; + + private LocalActivityManager mLocalActivityManager; + + protected LocalActivityManager getLocalActivityManager() + { + return mLocalActivityManager; + } + + @Override + public void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + Log.d(TAG, "onCreate(): " + getClass().getSimpleName()); + + Bundle state = null; + if (savedInstanceState != null) + { + state = savedInstanceState.getBundle(KEY_STATE_BUNDLE); + } + + mLocalActivityManager = new LocalActivityManager(getActivity(), true); + mLocalActivityManager.dispatchCreate(state); + } + + @Override + public void onSaveInstanceState(Bundle outState) + { + super.onSaveInstanceState(outState); + outState.putBundle(KEY_STATE_BUNDLE, mLocalActivityManager.saveInstanceState()); + } + + @Override + public void onResume() + { + super.onResume(); + Log.d(TAG, "onResume(): " + getClass().getSimpleName()); + mLocalActivityManager.dispatchResume(); + } + + @Override + public void onPause() + { + super.onPause(); + Log.d(TAG, "onPause(): " + getClass().getSimpleName()); + mLocalActivityManager.dispatchPause(getActivity().isFinishing()); + } + + @Override + public void onStop() + { + super.onStop(); + Log.d(TAG, "onStop(): " + getClass().getSimpleName()); + mLocalActivityManager.dispatchStop(); + } + + @Override + public void onDestroy() + { + super.onDestroy(); + Log.d(TAG, "onDestroy(): " + getClass().getSimpleName()); + mLocalActivityManager.dispatchDestroy(getActivity().isFinishing()); + } +} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyGoogleMapActivity.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyGoogleMapActivity.java new file mode 100644 index 00000000..344b3281 --- /dev/null +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyGoogleMapActivity.java @@ -0,0 +1,43 @@ +/* + * Copyright (C) 2011 Ievgenii Nazaruk + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package nl.sogeti.android.gpstracker.googlemapfragment; + +import nl.sogeti.android.gpstracker.R; +import android.os.Bundle; + +import com.google.android.maps.MapActivity; + +public class MyGoogleMapActivity extends MapActivity { + + @Override + protected void onCreate(Bundle icicle) { + super.onCreate(icicle); + setContentView(R.layout.fragment_googlemap); + } + + @Override + protected boolean isRouteDisplayed() + { + return true; + } + + @Override + protected boolean isLocationDisplayed() + { + return true; + } +} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyMapquestMapActivity.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyMapquestMapActivity.java new file mode 100644 index 00000000..ad21695f --- /dev/null +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyMapquestMapActivity.java @@ -0,0 +1,44 @@ +/* + * Copyright (C) 2011 Ievgenii Nazaruk + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package nl.sogeti.android.gpstracker.googlemapfragment; + +import com.mapquest.android.maps.MapActivity; + +import nl.sogeti.android.gpstracker.R; +import android.os.Bundle; + + +public class MyMapquestMapActivity extends MapActivity { + + @Override + protected void onCreate(Bundle icicle) { + super.onCreate(icicle); + setContentView(R.layout.fragment_mapquest); + } + + @Override + protected boolean isLocationDisplayed() + { + return true; + } + + @Override + public boolean isRouteDisplayed() + { + return true; + } +} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/logger/GPSLoggerService.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/logger/GPSLoggerService.java index 69013d0e..31cdb1fe 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/logger/GPSLoggerService.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/logger/GPSLoggerService.java @@ -40,13 +40,13 @@ import java.util.concurrent.Semaphore; import nl.sogeti.android.gpstracker.R; +import nl.sogeti.android.gpstracker.activity.LoggerMapActivity; import nl.sogeti.android.gpstracker.db.GPStracking.Media; import nl.sogeti.android.gpstracker.db.GPStracking.MetaData; import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; import nl.sogeti.android.gpstracker.db.GPStracking.Waypoints; import nl.sogeti.android.gpstracker.streaming.StreamUtils; import nl.sogeti.android.gpstracker.util.Constants; -import nl.sogeti.android.gpstracker.viewer.map.CommonLoggerMap; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; @@ -993,7 +993,7 @@ private void updateNotification() } break; } - Intent notificationIntent = new Intent(this, CommonLoggerMap.class); + Intent notificationIntent = new Intent(this, LoggerMapActivity.class); notificationIntent.setData(ContentUris.withAppendedId(Tracks.CONTENT_URI, mTrackId)); mNotification.contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK); mNotification.setLatestEventInfo(this, contentTitle, contentText, mNotification.contentIntent); @@ -1028,7 +1028,7 @@ private void notifyOnPoorSignal(int resId) long when = System.currentTimeMillis(); Notification signalNotification = new Notification(icon, tickerText, when); CharSequence contentTitle = getResources().getString(R.string.app_name); - Intent notificationIntent = new Intent(this, CommonLoggerMap.class); + Intent notificationIntent = new Intent(this, LoggerMapActivity.class); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK); signalNotification.setLatestEventInfo(this, contentTitle, tickerText, contentIntent); signalNotification.flags |= Notification.FLAG_AUTO_CANCEL; @@ -1046,7 +1046,7 @@ private void notifyOnDisabledProvider(int resId) CharSequence contentTitle = getResources().getString(R.string.app_name); CharSequence contentText = getResources().getString(resId); - Intent notificationIntent = new Intent(this, CommonLoggerMap.class); + Intent notificationIntent = new Intent(this, LoggerMapActivity.class); notificationIntent.setData(ContentUris.withAppendedId(Tracks.CONTENT_URI, mTrackId)); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, Intent.FLAG_ACTIVITY_NEW_TASK); gpsNotification.setLatestEventInfo(this, contentTitle, contentText, contentIntent); diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java index b9abff92..e7bfa1fd 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java @@ -33,6 +33,7 @@ import nl.sogeti.android.gpstracker.actions.Statistics; import nl.sogeti.android.gpstracker.actions.tasks.GpxParser; import nl.sogeti.android.gpstracker.actions.utils.ProgressListener; +import nl.sogeti.android.gpstracker.activity.LoggerMapActivity; import nl.sogeti.android.gpstracker.adapter.BreadcrumbsAdapter; import nl.sogeti.android.gpstracker.adapter.SectionedListAdapter; import nl.sogeti.android.gpstracker.breadcrumbs.BreadcrumbsService; @@ -40,10 +41,9 @@ import nl.sogeti.android.gpstracker.db.DatabaseHelper; import nl.sogeti.android.gpstracker.db.GPStracking; import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; import nl.sogeti.android.gpstracker.util.Constants; import nl.sogeti.android.gpstracker.util.Pair; -import nl.sogeti.android.gpstracker.viewer.map.CommonLoggerMap; -import nl.sogeti.android.gpstracker.viewer.map.LoggerMap; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.app.Dialog; @@ -333,7 +333,7 @@ public void run() } else { - intent.setClass(this, CommonLoggerMap.class); + intent.setClass(this, LoggerMapActivity.class); startActivity(intent); } } @@ -569,7 +569,7 @@ else if (Intent.ACTION_VIEW.equals(queryAction)) if ("content".equals(uri.getScheme()) && GPStracking.AUTHORITY.equals(uri.getAuthority())) { // Got to VIEW a single track, instead hand it of to the LoggerMap - Intent notificationIntent = new Intent(this, LoggerMap.class); + Intent notificationIntent = new Intent(this, LoggerMapFragment.class); notificationIntent.setData(uri); startActivity(notificationIntent); finish(); diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/CommonLoggerMap.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/CommonLoggerMap.java deleted file mode 100644 index ca483122..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/CommonLoggerMap.java +++ /dev/null @@ -1,67 +0,0 @@ -/*------------------------------------------------------------------------------ - ** Ident: Delivery Center Java - ** Author: rene - ** Copyright: (c) Feb 26, 2012 Sogeti Nederland B.V. All Rights Reserved. - **------------------------------------------------------------------------------ - ** Sogeti Nederland B.V. | No part of this file may be reproduced - ** Distributed Software Engineering | or transmitted in any form or by any - ** Lange Dreef 17 | means, electronic or mechanical, for the - ** 4131 NJ Vianen | purpose, without the express written - ** The Netherlands | permission of the copyright holder. - *------------------------------------------------------------------------------ - */ -package nl.sogeti.android.gpstracker.viewer.map; - -import nl.sogeti.android.gpstracker.util.Constants; -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.preference.PreferenceManager; -import android.util.Log; - -/** - * ???? - * - * @version $Id:$ - * @author rene (c) Feb 26, 2012, Sogeti B.V. - */ -public class CommonLoggerMap extends Activity -{ - private static final String TAG = "OGT.CommonLoggerMap"; - - @Override - protected void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - Intent myIntent = getIntent(); - Intent realIntent; - - Class mapClass = GoogleLoggerMap.class; - int provider = Integer.valueOf(PreferenceManager.getDefaultSharedPreferences(this).getString(Constants.MAPPROVIDER, "" + Constants.GOOGLE)).intValue(); - switch (provider) - { - case Constants.GOOGLE: - mapClass = GoogleLoggerMap.class; - break; - case Constants.MAPQUEST: - mapClass = MapQuestLoggerMap.class; - break; - default: - mapClass = GoogleLoggerMap.class; - Log.e(TAG, "Fault in value " + provider + " as MapProvider, defaulting to Google Maps."); - break; - } - if( myIntent != null ) - { - realIntent = new Intent(myIntent.getAction(), myIntent.getData(), this, mapClass); - realIntent.putExtras(myIntent); - } - else - { - realIntent = new Intent(this, mapClass); - realIntent.putExtras(myIntent); - } - startActivity(realIntent); - finish(); - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java index 2a5b4543..896f68b8 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java @@ -19,10 +19,12 @@ import nl.sogeti.android.gpstracker.actions.InsertNote; import nl.sogeti.android.gpstracker.actions.ShareTrack; import nl.sogeti.android.gpstracker.actions.Statistics; +import nl.sogeti.android.gpstracker.activity.LoggerMapActivity; import nl.sogeti.android.gpstracker.db.GPStracking.Media; import nl.sogeti.android.gpstracker.db.GPStracking.Segments; import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; import nl.sogeti.android.gpstracker.db.GPStracking.Waypoints; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; import nl.sogeti.android.gpstracker.logger.GPSLoggerServiceManager; import nl.sogeti.android.gpstracker.util.Constants; import nl.sogeti.android.gpstracker.util.SlidingIndicatorView; @@ -149,23 +151,31 @@ public class LoggerMapHelper private Runnable speedCalculator; private Runnable heightCalculator; - private LoggerMap mLoggerMap; + private LoggerMapFragment mLoggerMap; private BitmapSegmentsOverlay mBitmapSegmentsOverlay; private float mSpeed; private double mAltitude; private float mDistance; + private int mZoom; + private GeoPoint mStoredPoint; - public LoggerMapHelper(LoggerMap loggerMap) + public LoggerMapHelper(LoggerMapFragment loggerMap) { mLoggerMap = loggerMap; } + + public void onCreateView() + { + mLoggerMap.setDrawingCacheEnabled(true); + + } + /** * Called when the activity is first created. */ - protected void onCreate(Bundle load) + public void onCreate(Bundle load) { - mLoggerMap.setDrawingCacheEnabled(true); mUnits = new UnitsI18n(mLoggerMap.getActivity()); mLoggerServiceManager = new GPSLoggerServiceManager(mLoggerMap.getActivity()); @@ -195,13 +205,10 @@ public void run() mBitmapSegmentsOverlay = new BitmapSegmentsOverlay(mLoggerMap, mHandler); createListeners(); onRestoreInstanceState(load); - mLoggerMap.updateOverlays(); } - protected void onResume() + public void onResume() { - updateMapProvider(); - mLoggerServiceManager.startup(mLoggerMap.getActivity(), mServiceConnected); mSharedPreferences.registerOnSharedPreferenceChangeListener(mSharedPreferenceChangeListener); @@ -223,6 +230,7 @@ protected void onResume() resolver.registerContentObserver(lastSegmentUri, true, this.mSegmentWaypointsObserver); resolver.registerContentObserver(mediaUri, true, this.mTrackMediasObserver); } + mLoggerMap.updateOverlays(); updateDataOverlays(); updateSpeedColoring(); @@ -231,13 +239,17 @@ protected void onResume() updateDistanceDisplayVisibility(); updateCompassDisplayVisibility(); updateLocationDisplayVisibility(); - updateTrackNumbers(); + + mLoggerMap.setZoom(mZoom); + moveToTrack(mTrackId, true); + mLoggerMap.animateTo(mStoredPoint); + mLoggerMap.executePostponedActions(); } - protected void onPause() + public void onPause() { if (this.mWakeLock != null && this.mWakeLock.isHeld()) { @@ -258,7 +270,7 @@ protected void onPause() this.mLoggerServiceManager.shutdown(mLoggerMap.getActivity()); } - protected void onDestroy() + public void onDestroy() { mLoggerMap.clearOverlays(); mHandler.post(new Runnable() @@ -291,13 +303,13 @@ public void onNewIntent(Intent newIntent) } } - protected void onRestoreInstanceState(Bundle load) + public void onRestoreInstanceState(Bundle load) { Uri data = mLoggerMap.getActivity().getIntent().getData(); if (load != null && load.containsKey(INSTANCE_TRACK)) // 1st method: track from a previous instance of this activity { long loadTrackId = load.getLong(INSTANCE_TRACK); - moveToTrack(loadTrackId, false); + mTrackId = loadTrackId; if (load.containsKey(INSTANCE_AVGSPEED)) { mAverageSpeed = load.getDouble(INSTANCE_AVGSPEED); @@ -322,7 +334,7 @@ protected void onRestoreInstanceState(Bundle load) else if (data != null) // 2nd method: track ordered to make { long loadTrackId = Long.parseLong(data.getLastPathSegment()); - moveToTrack(loadTrackId, true); + mTrackId = loadTrackId; } else // 3rd method: just try the last track @@ -332,26 +344,24 @@ else if (data != null) // 2nd method: track ordered to make if (load != null && load.containsKey(INSTANCE_ZOOM)) { - mLoggerMap.setZoom(load.getInt(INSTANCE_ZOOM)); + mZoom = load.getInt(INSTANCE_ZOOM); } else { - mLoggerMap.setZoom(ZOOM_LEVEL); + mZoom = ZOOM_LEVEL; } - + if (load != null && load.containsKey(INSTANCE_E6LAT) && load.containsKey(INSTANCE_E6LONG)) { - GeoPoint storedPoint = new GeoPoint(load.getInt(INSTANCE_E6LAT), load.getInt(INSTANCE_E6LONG)); - mLoggerMap.animateTo(storedPoint); + mStoredPoint = new GeoPoint(load.getInt(INSTANCE_E6LAT), load.getInt(INSTANCE_E6LONG)); } else { - GeoPoint lastPoint = getLastTrackPoint(); - mLoggerMap.animateTo(lastPoint); + mStoredPoint = getLastTrackPoint(); } } - protected void onSaveInstanceState(Bundle save) + public void onSaveInstanceState(Bundle save) { save.putLong(INSTANCE_TRACK, this.mTrackId); save.putDouble(INSTANCE_AVGSPEED, mAverageSpeed); @@ -655,7 +665,8 @@ else if (key.equals(Constants.LOCATION)) } else if (key.equals(Constants.MAPPROVIDER)) { - updateMapProvider(); + LoggerMapActivity activity = (LoggerMapActivity) mLoggerMap.getActivity(); + activity.updateMapProvider(); } else if (key.equals(Constants.OSMBASEOVERLAY)) { @@ -1007,42 +1018,6 @@ private void updateTitleBar() } } - private void updateMapProvider() - { - Class< ? > mapClass = null; - int provider = Integer.valueOf(mSharedPreferences.getString(Constants.MAPPROVIDER, "" + Constants.GOOGLE)).intValue(); - switch (provider) - { - case Constants.GOOGLE: - mapClass = GoogleLoggerMap.class; - break; - case Constants.MAPQUEST: - mapClass = MapQuestLoggerMap.class; - break; - default: - mapClass = GoogleLoggerMap.class; - Log.e(TAG, "Fault in value " + provider + " as MapProvider, defaulting to Google Maps."); - break; - } - if (mapClass != mLoggerMap.getActivity().getClass()) - { - Intent myIntent = mLoggerMap.getActivity().getIntent(); - Intent realIntent; - if (myIntent != null) - { - realIntent = new Intent(myIntent.getAction(), myIntent.getData(), mLoggerMap.getActivity(), mapClass); - realIntent.putExtras(myIntent); - } - else - { - realIntent = new Intent(mLoggerMap.getActivity(), mapClass); - realIntent.putExtras(myIntent); - } - mLoggerMap.getActivity().startActivity(realIntent); - mLoggerMap.getActivity().finish(); - } - } - protected void updateMapProviderAdministration(String provider) { mLoggerServiceManager.storeDerivedDataSource(provider); @@ -1077,7 +1052,7 @@ private void updateBlankingBehavior() private void updateSpeedColoring() { int trackColoringMethod = Integer.valueOf(mSharedPreferences.getString(Constants.TRACKCOLORING, "3")).intValue(); - View speedbar = mLoggerMap.getActivity().findViewById(R.id.speedbar); + View speedbar = mLoggerMap.getSpeedbar(); SlidingIndicatorView scaleIndicator = mLoggerMap.getScaleIndicatorView(); TextView[] speedtexts = mLoggerMap.getSpeedTextViews(); @@ -1616,7 +1591,6 @@ private GeoPoint getLastTrackPoint() private void moveToLastTrack() { - int trackId = -1; Cursor track = null; try { @@ -1624,8 +1598,7 @@ private void moveToLastTrack() track = resolver.query(Tracks.CONTENT_URI, new String[] { "max(" + Tracks._ID + ")", Tracks.NAME, }, null, null, null); if (track != null && track.moveToLast()) { - trackId = track.getInt(0); - moveToTrack(trackId, false); + mTrackId = track.getInt(0); } } finally @@ -1658,5 +1631,4 @@ public boolean isLogging() { return mLoggerServiceManager.getLoggingState() == Constants.LOGGING; } - } diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java index 9451d712..673e9ca1 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java @@ -1,6 +1,6 @@ package nl.sogeti.android.gpstracker.viewer.map.overlay; -import nl.sogeti.android.gpstracker.viewer.map.LoggerMap; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; @@ -41,7 +41,7 @@ public abstract class AsyncOverlay extends Overlay implements OverlayProvider private Paint mPaint; - private LoggerMap mLoggerMap; + private LoggerMapFragment mLoggerMap; private SegmentMapQuestOverlay mMapQuestOverlay; @@ -71,7 +71,7 @@ public void run() private boolean postedBitmapUpdater; - AsyncOverlay(LoggerMap loggermap, Handler handler) + AsyncOverlay(LoggerMapFragment loggermap, Handler handler) { mLoggerMap = loggermap; mHandler = handler; @@ -136,7 +136,7 @@ public void onDateOverlayChanged() } } - protected abstract void redrawOffscreen(Canvas asyncBuffer, LoggerMap loggermap); + protected abstract void redrawOffscreen(Canvas asyncBuffer, LoggerMapFragment loggermap); protected abstract void scheduleRecalculation(); diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java index f028bf06..4e893353 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java @@ -3,7 +3,7 @@ import java.util.LinkedList; import java.util.List; -import nl.sogeti.android.gpstracker.viewer.map.LoggerMap; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; import android.graphics.Canvas; import android.os.Handler; @@ -18,7 +18,7 @@ public class BitmapSegmentsOverlay extends AsyncOverlay List mOverlays; Handler mOverlayHandler; - public BitmapSegmentsOverlay(LoggerMap loggermap, Handler handler) + public BitmapSegmentsOverlay(LoggerMapFragment loggermap, Handler handler) { super(loggermap, handler); mOverlays = new LinkedList(); @@ -26,7 +26,7 @@ public BitmapSegmentsOverlay(LoggerMap loggermap, Handler handler) } @Override - synchronized protected void redrawOffscreen(Canvas asyncBuffer, LoggerMap loggermap) + synchronized protected void redrawOffscreen(Canvas asyncBuffer, LoggerMapFragment loggermap) { for (SegmentRendering segment : mOverlays) { diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java index 8ccf3079..8b5431f7 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java @@ -38,8 +38,8 @@ import nl.sogeti.android.gpstracker.db.GPStracking; import nl.sogeti.android.gpstracker.db.GPStracking.Media; import nl.sogeti.android.gpstracker.db.GPStracking.Waypoints; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; import nl.sogeti.android.gpstracker.util.UnitsI18n; -import nl.sogeti.android.gpstracker.viewer.map.LoggerMap; import android.content.ContentResolver; import android.content.ContentUris; import android.content.Context; @@ -100,7 +100,7 @@ public class SegmentRendering private int mTrackColoringMethod = DRAW_CALCULATED; private ContentResolver mResolver; - private LoggerMap mLoggerMap; + private LoggerMapFragment mLoggerMap; private int mPlacement = SegmentRendering.MIDDLE_SEGMENT; private Uri mWaypointsUri; @@ -176,7 +176,7 @@ public void run() * @param avgSpeed * @param handler */ - public SegmentRendering(LoggerMap loggermap, Uri segmentUri, int color, double avgSpeed, double avgHeight, Handler handler) + public SegmentRendering(LoggerMapFragment loggermap, Uri segmentUri, int color, double avgSpeed, double avgHeight, Handler handler) { super(); mHandler = handler; diff --git a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/demo/OpenGPSTrackerDemo.java b/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/demo/OpenGPSTrackerDemo.java index a6a2e81d..74979b3e 100644 --- a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/demo/OpenGPSTrackerDemo.java +++ b/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/demo/OpenGPSTrackerDemo.java @@ -28,9 +28,9 @@ */ package nl.sogeti.android.gpstracker.tests.demo; +import nl.sogeti.android.gpstracker.activity.LoggerMapActivity; import nl.sogeti.android.gpstracker.logger.GPSLoggerServiceManager; import nl.sogeti.android.gpstracker.tests.utils.MockGPSLoggerDriver; -import nl.sogeti.android.gpstracker.viewer.map.CommonLoggerMap; import android.test.ActivityInstrumentationTestCase2; import android.test.suitebuilder.annotation.LargeTest; import android.test.suitebuilder.annotation.SmallTest; @@ -42,13 +42,13 @@ * @version $Id$ * @author rene (c) Jan 22, 2009, Sogeti B.V. */ -public class OpenGPSTrackerDemo extends ActivityInstrumentationTestCase2 +public class OpenGPSTrackerDemo extends ActivityInstrumentationTestCase2 { private static final int ZOOM_LEVEL = 16; - private static final Class CLASS = CommonLoggerMap.class; + private static final Class CLASS = LoggerMapActivity.class; private static final String PACKAGE = "nl.sogeti.android.gpstracker"; - private CommonLoggerMap mLoggermap; + private LoggerMapActivity mLoggermap; private GPSLoggerServiceManager mLoggerServiceManager; private MapView mMapView; private MockGPSLoggerDriver mSender; diff --git a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/perf/LoggerStressTest.java b/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/perf/LoggerStressTest.java index bb46ef96..7ad88c66 100644 --- a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/perf/LoggerStressTest.java +++ b/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/perf/LoggerStressTest.java @@ -28,9 +28,9 @@ */ package nl.sogeti.android.gpstracker.tests.perf; +import nl.sogeti.android.gpstracker.activity.LoggerMapActivity; import nl.sogeti.android.gpstracker.tests.R; import nl.sogeti.android.gpstracker.tests.utils.MockGPSLoggerDriver; -import nl.sogeti.android.gpstracker.viewer.map.CommonLoggerMap; import android.os.Debug; import android.test.ActivityInstrumentationTestCase2; import android.test.PerformanceTestCase; @@ -42,9 +42,9 @@ * @version $Id$ * @author rene (c) Mar 15, 2009, Sogeti B.V. */ -public class LoggerStressTest extends ActivityInstrumentationTestCase2 implements PerformanceTestCase +public class LoggerStressTest extends ActivityInstrumentationTestCase2 implements PerformanceTestCase { - private static final Class CLASS = CommonLoggerMap.class; + private static final Class CLASS = LoggerMapActivity.class; private static final String PACKAGE = "nl.sogeti.android.gpstracker"; private Intermediates mIntermediates; diff --git a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/perf/MapStressTest.java b/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/perf/MapStressTest.java index 762af10e..e459a19f 100644 --- a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/perf/MapStressTest.java +++ b/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/perf/MapStressTest.java @@ -32,9 +32,9 @@ import java.io.IOException; import java.util.StringTokenizer; +import nl.sogeti.android.gpstracker.activity.LoggerMapActivity; import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; import nl.sogeti.android.gpstracker.db.GPStracking.Waypoints; -import nl.sogeti.android.gpstracker.viewer.map.CommonLoggerMap; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; @@ -55,9 +55,9 @@ * @version $Id: LoggerMapStressTest.java 47 2009-05-17 19:15:00Z rcgroot $ * @author rene (c) Mar 15, 2009, Sogeti B.V. */ -public class MapStressTest extends ActivityInstrumentationTestCase2 implements PerformanceTestCase +public class MapStressTest extends ActivityInstrumentationTestCase2 implements PerformanceTestCase { - private static final Class CLASS = CommonLoggerMap.class; + private static final Class CLASS = LoggerMapActivity.class; private static final String PACKAGE = "nl.sogeti.android.gpstracker"; private static final String TAG = "OGT.MapStressTest"; private Intermediates mIntermediates; diff --git a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/userinterface/LoggerMapTest.java b/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/userinterface/LoggerMapTest.java index a0c552eb..59e8e496 100644 --- a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/userinterface/LoggerMapTest.java +++ b/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/userinterface/LoggerMapTest.java @@ -30,11 +30,11 @@ import junit.framework.Assert; import nl.sogeti.android.gpstracker.R; +import nl.sogeti.android.gpstracker.activity.LoggerMapActivity; import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; import nl.sogeti.android.gpstracker.db.GPStracking.Waypoints; import nl.sogeti.android.gpstracker.logger.GPSLoggerServiceManager; import nl.sogeti.android.gpstracker.util.Constants; -import nl.sogeti.android.gpstracker.viewer.map.CommonLoggerMap; import android.content.ContentResolver; import android.content.ContentValues; import android.content.Intent; @@ -53,11 +53,11 @@ * @version $Id$ * @author rene (c) Jan 22, 2009, Sogeti B.V. */ -public class LoggerMapTest extends ActivityInstrumentationTestCase2 +public class LoggerMapTest extends ActivityInstrumentationTestCase2 { - private static final Class CLASS = CommonLoggerMap.class; + private static final Class CLASS = LoggerMapActivity.class; private static final String PACKAGE = "nl.sogeti.android.gpstracker"; - private CommonLoggerMap mLoggermap; + private LoggerMapActivity mLoggermap; private MapView mMapView; public LoggerMapTest() From 4b9e8b15d82b8af56f012bc604849aaa3607767d Mon Sep 17 00:00:00 2001 From: Rene de Groot Date: Sat, 17 Nov 2012 16:51:50 +0100 Subject: [PATCH 03/12] Tracking control is moved to a fragment --- .../application/AndroidManifest.xml | 7 +- .../res/layout/activity_trackingcontrol.xml | 17 ++ .../gpstracker/actions/ControlTracking.java | 249 ------------------ .../gpstracker/actions/ShareTrack.java | 4 +- .../activity/ControlTrackingActivity.java | 129 +++++++++ .../fragment/AbstractLoggerFragment.java | 2 +- .../fragment/ControlTrackingFragment.java | 190 +++++++++++++ .../fragment/GoogleMapFragment.java | 6 - ...t.java => LoggerMapFragmentInterface.java} | 2 +- .../android/gpstracker/viewer/TrackList.java | 4 +- .../viewer/map/LoggerMapHelper.java | 11 +- .../viewer/map/overlay/AsyncOverlay.java | 8 +- .../map/overlay/BitmapSegmentsOverlay.java | 6 +- .../viewer/map/overlay/SegmentRendering.java | 6 +- .../widget/ControlWidgetProvider.java | 4 +- 15 files changed, 364 insertions(+), 281 deletions(-) create mode 100644 OpenGPSTracker/application/res/layout/activity_trackingcontrol.xml delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ControlTracking.java create mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/ControlTrackingActivity.java create mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/ControlTrackingFragment.java rename OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/{LoggerMapFragment.java => LoggerMapFragmentInterface.java} (98%) diff --git a/OpenGPSTracker/application/AndroidManifest.xml b/OpenGPSTracker/application/AndroidManifest.xml index 739d19e4..30697bc1 100644 --- a/OpenGPSTracker/application/AndroidManifest.xml +++ b/OpenGPSTracker/application/AndroidManifest.xml @@ -7,12 +7,13 @@ + android:targetSdkVersion="17" /> + android:smallScreens="true" + android:xlargeScreens="true" /> @@ -79,7 +80,7 @@ android:name=".actions.DescribeTrack" android:theme="@android:style/Theme.Translucent.NoTitleBar" /> + + + + + + \ No newline at end of file diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ControlTracking.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ControlTracking.java deleted file mode 100644 index 265a69ae..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ControlTracking.java +++ /dev/null @@ -1,249 +0,0 @@ -/*------------------------------------------------------------------------------ - ** Ident: Sogeti Smart Mobile Solutions - ** Author: rene - ** Copyright: (c) Apr 24, 2011 Sogeti Nederland B.V. All Rights Reserved. - **------------------------------------------------------------------------------ - ** Sogeti Nederland B.V. | No part of this file may be reproduced - ** Distributed Software Engineering | or transmitted in any form or by any - ** Lange Dreef 17 | means, electronic or mechanical, for the - ** 4131 NJ Vianen | purpose, without the express written - ** The Netherlands | permission of the copyright holder. - *------------------------------------------------------------------------------ - * - * This file is part of OpenGPSTracker. - * - * OpenGPSTracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenGPSTracker is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with OpenGPSTracker. If not, see . - * - */ -package nl.sogeti.android.gpstracker.actions; - -import nl.sogeti.android.gpstracker.R; -import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; -import nl.sogeti.android.gpstracker.logger.GPSLoggerServiceManager; -import nl.sogeti.android.gpstracker.util.Constants; -import android.app.Activity; -import android.app.AlertDialog; -import android.app.AlertDialog.Builder; -import android.app.Dialog; -import android.content.ComponentName; -import android.content.ContentUris; -import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; -import android.content.DialogInterface.OnDismissListener; -import android.content.Intent; -import android.os.Bundle; -import android.util.Log; -import android.view.LayoutInflater; -import android.view.View; -import android.widget.Button; - -/** - * Empty Activity that pops up the dialog to name the track - * - * @version $Id$ - * @author rene (c) Jul 27, 2010, Sogeti B.V. - */ -public class ControlTracking extends Activity -{ - private static final int DIALOG_LOGCONTROL = 26; - private static final String TAG = "OGT.ControlTracking"; - - private GPSLoggerServiceManager mLoggerServiceManager; - private Button start; - private Button pause; - private Button resume; - private Button stop; - private boolean paused; - - private final View.OnClickListener mLoggingControlListener = new View.OnClickListener() - { - @Override - public void onClick( View v ) - { - int id = v.getId(); - Intent intent = new Intent(); - switch( id ) - { - case R.id.logcontrol_start: - long loggerTrackId = mLoggerServiceManager.startGPSLogging( null ); - - // Start a naming of the track - Intent namingIntent = new Intent( ControlTracking.this, NameTrack.class ); - namingIntent.setData( ContentUris.withAppendedId( Tracks.CONTENT_URI, loggerTrackId ) ); - startActivity( namingIntent ); - - // Create data for the caller that a new track has been started - ComponentName caller = ControlTracking.this.getCallingActivity(); - if( caller != null ) - { - intent.setData( ContentUris.withAppendedId( Tracks.CONTENT_URI, loggerTrackId ) ); - setResult( RESULT_OK, intent ); - } - break; - case R.id.logcontrol_pause: - mLoggerServiceManager.pauseGPSLogging(); - setResult( RESULT_OK, intent ); - break; - case R.id.logcontrol_resume: - mLoggerServiceManager.resumeGPSLogging(); - setResult( RESULT_OK, intent ); - break; - case R.id.logcontrol_stop: - mLoggerServiceManager.stopGPSLogging(); - setResult( RESULT_OK, intent ); - break; - default: - setResult( RESULT_CANCELED, intent ); - break; - } - finish(); - } - }; - private OnClickListener mDialogClickListener = new OnClickListener() - { - @Override - public void onClick( DialogInterface dialog, int which ) - { - setResult( RESULT_CANCELED, new Intent() ); - finish(); - } - }; - - @Override - protected void onCreate( Bundle savedInstanceState ) - { - super.onCreate( savedInstanceState ); - - this.setVisible( false ); - paused = false; - mLoggerServiceManager = new GPSLoggerServiceManager( this ); - } - - @Override - protected void onResume() - { - super.onResume(); - mLoggerServiceManager.startup( this, new Runnable() - { - @Override - public void run() - { - showDialog( DIALOG_LOGCONTROL ); - } - } ); - } - - @Override - protected void onPause() - { - super.onPause(); - mLoggerServiceManager.shutdown( this ); - paused = true; - } - - @Override - protected Dialog onCreateDialog( int id ) - { - Dialog dialog = null; - LayoutInflater factory = null; - View view = null; - Builder builder = null; - switch( id ) - { - case DIALOG_LOGCONTROL: - builder = new AlertDialog.Builder( this ); - factory = LayoutInflater.from( this ); - view = factory.inflate( R.layout.logcontrol, null ); - builder.setTitle( R.string.dialog_tracking_title ). - setIcon( android.R.drawable.ic_dialog_alert ). - setNegativeButton( R.string.btn_cancel, mDialogClickListener ). - setView( view ); - dialog = builder.create(); - start = (Button) view.findViewById( R.id.logcontrol_start ); - pause = (Button) view.findViewById( R.id.logcontrol_pause ); - resume = (Button) view.findViewById( R.id.logcontrol_resume ); - stop = (Button) view.findViewById( R.id.logcontrol_stop ); - start.setOnClickListener( mLoggingControlListener ); - pause.setOnClickListener( mLoggingControlListener ); - resume.setOnClickListener( mLoggingControlListener ); - stop.setOnClickListener( mLoggingControlListener ); - dialog.setOnDismissListener( new OnDismissListener() - { - @Override - public void onDismiss( DialogInterface dialog ) - { - if( !paused ) - { - finish(); - } - } - }); - return dialog; - default: - return super.onCreateDialog( id ); - } - } - - /* - * (non-Javadoc) - * @see android.app.Activity#onPrepareDialog(int, android.app.Dialog) - */ - @Override - protected void onPrepareDialog( int id, Dialog dialog ) - { - switch( id ) - { - case DIALOG_LOGCONTROL: - updateDialogState( mLoggerServiceManager.getLoggingState() ); - break; - default: - break; - } - super.onPrepareDialog( id, dialog ); - } - - - - private void updateDialogState( int state ) - { - switch( state ) - { - case Constants.STOPPED: - start.setEnabled( true ); - pause.setEnabled( false ); - resume.setEnabled( false ); - stop.setEnabled( false ); - break; - case Constants.LOGGING: - start.setEnabled( false ); - pause.setEnabled( true ); - resume.setEnabled( false ); - stop.setEnabled( true ); - break; - case Constants.PAUSED: - start.setEnabled( false ); - pause.setEnabled( false ); - resume.setEnabled( true ); - stop.setEnabled( true ); - break; - default: - Log.w( TAG, String.format( "State %d of logging, enabling and hope for the best....", state ) ); - start.setEnabled( false ); - pause.setEnabled( false ); - resume.setEnabled( false ); - stop.setEnabled( false ); - break; - } - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java index 28dfce39..d7b5edfd 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java @@ -48,7 +48,7 @@ import nl.sogeti.android.gpstracker.breadcrumbs.BreadcrumbsService; import nl.sogeti.android.gpstracker.breadcrumbs.BreadcrumbsService.LocalBinder; import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; import nl.sogeti.android.gpstracker.util.Constants; import nl.sogeti.android.gpstracker.util.UnitsI18n; import android.app.Activity; @@ -774,7 +774,7 @@ public void startNotification() CharSequence tickerText = getString(R.string.ticker_saving) + "\"" + mFileName + "\""; mNotification = new Notification(); - PendingIntent contentIntent = PendingIntent.getActivity(ShareTrack.this, 0, new Intent(ShareTrack.this, LoggerMapFragment.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), + PendingIntent contentIntent = PendingIntent.getActivity(ShareTrack.this, 0, new Intent(ShareTrack.this, LoggerMapFragmentInterface.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), PendingIntent.FLAG_UPDATE_CURRENT); mNotification.contentIntent = contentIntent; diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/ControlTrackingActivity.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/ControlTrackingActivity.java new file mode 100644 index 00000000..4e4d9bf7 --- /dev/null +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/ControlTrackingActivity.java @@ -0,0 +1,129 @@ +/*------------------------------------------------------------------------------ + ** Ident: Delivery Center Java + ** Author: rene + ** Copyright: (c) Nov 17, 2012 Sogeti Nederland B.V. All Rights Reserved. + **------------------------------------------------------------------------------ + ** Sogeti Nederland B.V. | No part of this file may be reproduced + ** Distributed Software Engineering | or transmitted in any form or by any + ** Lange Dreef 17 | means, electronic or mechanical, for the + ** 4131 NJ Vianen | purpose, without the express written + ** The Netherlands | permission of the copyright holder. + *------------------------------------------------------------------------------ + */ +package nl.sogeti.android.gpstracker.activity; + +import nl.sogeti.android.gpstracker.R; +import nl.sogeti.android.gpstracker.actions.NameTrack; +import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; +import nl.sogeti.android.gpstracker.fragment.ControlTrackingFragment; +import nl.sogeti.android.gpstracker.fragment.ControlTrackingFragment.ControlTrackingListener; +import nl.sogeti.android.gpstracker.logger.GPSLoggerServiceManager; +import android.app.Activity; +import android.content.ComponentName; +import android.content.ContentUris; +import android.content.Intent; +import android.os.Bundle; +import android.view.View; +import android.view.View.OnClickListener; + +/** + * ???? + * + * @version $Id:$ + * @author rene (c) Nov 17, 2012, Sogeti B.V. + */ +public class ControlTrackingActivity extends Activity implements ControlTrackingListener +{ + + private GPSLoggerServiceManager mLoggerServiceManager; + + @Override + protected void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_trackingcontrol); + + findViewById(R.id.activity_trackingcontrol_main).setOnClickListener(new OnClickListener() + { + @Override + public void onClick(View v) + { + dismiss(); + } + }); + mLoggerServiceManager = new GPSLoggerServiceManager(this); + } + + @Override + protected void onResume() + { + super.onResume(); + mLoggerServiceManager.startup(this, new Runnable() + { + @Override + public void run() + { + ControlTrackingFragment details = ControlTrackingFragment.newInstance(mLoggerServiceManager.getLoggingState()); + getFragmentManager().beginTransaction().add(R.id.activity_trackingcontrol_centerframe, details).commit(); + } + }); + } + + @Override + protected void onPause() + { + super.onPause(); + mLoggerServiceManager.shutdown(this); + } + + @Override + public void start() + { + Intent intent = new Intent(); + long loggerTrackId = mLoggerServiceManager.startGPSLogging(null); + + // Start a naming of the track + Intent namingIntent = new Intent(this, NameTrack.class); + namingIntent.setData(ContentUris.withAppendedId(Tracks.CONTENT_URI, loggerTrackId)); + startActivity(namingIntent); + + // Create data for the caller that a new track has been started + ComponentName caller = this.getCallingActivity(); + if (caller != null) + { + intent.setData(ContentUris.withAppendedId(Tracks.CONTENT_URI, loggerTrackId)); + this.setResult(Activity.RESULT_OK, intent); + } + } + + @Override + public void pause() + { + Intent intent = new Intent(); + mLoggerServiceManager.pauseGPSLogging(); + this.setResult(Activity.RESULT_OK, intent); + } + + @Override + public void resume() + { + Intent intent = new Intent(); + mLoggerServiceManager.resumeGPSLogging(); + this.setResult(Activity.RESULT_OK, intent); + } + + @Override + public void stop() + { + Intent intent = new Intent(); + mLoggerServiceManager.stopGPSLogging(); + this.setResult(Activity.RESULT_OK, intent); + } + + @Override + public void dismiss() + { + finish(); + } + +} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java index 305aa553..0751e834 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java @@ -30,7 +30,7 @@ * @version $Id:$ * @author rene (c) Nov 4, 2012, Sogeti B.V. */ -public abstract class AbstractLoggerFragment extends Fragment implements LoggerMapFragment +public abstract class AbstractLoggerFragment extends Fragment implements LoggerMapFragmentInterface { protected LoggerMapHelper mHelper; diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/ControlTrackingFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/ControlTrackingFragment.java new file mode 100644 index 00000000..95d62bfd --- /dev/null +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/ControlTrackingFragment.java @@ -0,0 +1,190 @@ +/*------------------------------------------------------------------------------ + ** Ident: Sogeti Smart Mobile Solutions + ** Author: rene + ** Copyright: (c) Apr 24, 2011 Sogeti Nederland B.V. All Rights Reserved. + **------------------------------------------------------------------------------ + ** Sogeti Nederland B.V. | No part of this file may be reproduced + ** Distributed Software Engineering | or transmitted in any form or by any + ** Lange Dreef 17 | means, electronic or mechanical, for the + ** 4131 NJ Vianen | purpose, without the express written + ** The Netherlands | permission of the copyright holder. + *------------------------------------------------------------------------------ + * + * This file is part of OpenGPSTracker. + * + * OpenGPSTracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * OpenGPSTracker is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with OpenGPSTracker. If not, see . + * + */ +package nl.sogeti.android.gpstracker.fragment; + +import nl.sogeti.android.gpstracker.R; +import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; +import nl.sogeti.android.gpstracker.logger.GPSLoggerServiceManager; +import nl.sogeti.android.gpstracker.util.Constants; +import android.app.Activity; +import android.app.Fragment; +import android.content.ComponentName; +import android.content.ContentUris; +import android.content.Intent; +import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.widget.Button; + +/** + * Empty Activity that pops up the dialog to name the track + * + * @version $Id$ + * @author rene (c) Jul 27, 2010, Sogeti B.V. + */ +public class ControlTrackingFragment extends Fragment +{ + private static final String TAG = "OGT.ControlTracking"; + + private Button start; + private Button pause; + private Button resume; + private Button stop; + + private ControlTrackingListener mListener; + + private int mLoggingState; + + public static ControlTrackingFragment newInstance(int index) + { + ControlTrackingFragment f = new ControlTrackingFragment(); + + // Supply index input as an argument. + Bundle args = new Bundle(); + args.putInt("state", index); + f.setArguments(args); + + return f; + } + + @Override + public void onAttach(Activity activity) + { + super.onAttach(activity); + try + { + mListener = (ControlTrackingListener) activity; + } + catch (ClassCastException e) + { + throw new ClassCastException(activity.toString() + " must implement OnArticleSelectedListener"); + } + } + + @Override + public void onCreate(Bundle savedInstanceState) + { + super.onCreate(savedInstanceState); + mLoggingState = getArguments().getInt("state"); + } + + @Override + public View onCreateView(LayoutInflater inflater, android.view.ViewGroup container, Bundle savedInstanceState) + { + View view = null; + view = inflater.inflate(R.layout.logcontrol, null); + start = (Button) view.findViewById(R.id.logcontrol_start); + pause = (Button) view.findViewById(R.id.logcontrol_pause); + resume = (Button) view.findViewById(R.id.logcontrol_resume); + stop = (Button) view.findViewById(R.id.logcontrol_stop); + start.setOnClickListener(mLoggingControlListener); + pause.setOnClickListener(mLoggingControlListener); + resume.setOnClickListener(mLoggingControlListener); + stop.setOnClickListener(mLoggingControlListener); + + updateDialogState(); + + return view; + } + + public void updateDialogState() + { + switch (mLoggingState) + { + case Constants.STOPPED: + start.setEnabled(true); + pause.setEnabled(false); + resume.setEnabled(false); + stop.setEnabled(false); + break; + case Constants.LOGGING: + start.setEnabled(false); + pause.setEnabled(true); + resume.setEnabled(false); + stop.setEnabled(true); + break; + case Constants.PAUSED: + start.setEnabled(false); + pause.setEnabled(false); + resume.setEnabled(true); + stop.setEnabled(true); + break; + default: + Log.w(TAG, String.format("State %d of logging, enabling and hope for the best....", mLoggingState)); + start.setEnabled(false); + pause.setEnabled(false); + resume.setEnabled(false); + stop.setEnabled(false); + break; + } + } + + public interface ControlTrackingListener + { + + void start(); + + void pause(); + + void resume(); + + void stop(); + + void dismiss(); + + } + + private final View.OnClickListener mLoggingControlListener = new View.OnClickListener() + { + @Override + public void onClick(View v) + { + int id = v.getId(); + switch (id) + { + case R.id.logcontrol_start: + mListener.start(); + break; + case R.id.logcontrol_pause: + mListener.pause(); + break; + case R.id.logcontrol_resume: + mListener.resume(); + break; + case R.id.logcontrol_stop: + mListener.stop(); + break; + default: + break; + } + mListener.dismiss(); + } + }; +} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/GoogleMapFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/GoogleMapFragment.java index da6b62b5..9013ed12 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/GoogleMapFragment.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/GoogleMapFragment.java @@ -67,12 +67,6 @@ public class GoogleMapFragment extends ActivityHostFragment return MyGoogleMapActivity.class; } - @Override - public void onAttach(Activity activity) - { - super.onAttach(activity); - } - @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragmentInterface.java similarity index 98% rename from OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragment.java rename to OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragmentInterface.java index c964dab9..64d4c7bf 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragment.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragmentInterface.java @@ -31,7 +31,7 @@ * @version $Id$ * @author rene (c) Feb 26, 2012, Sogeti B.V. */ -public interface LoggerMapFragment +public interface LoggerMapFragmentInterface { void setDrawingCacheEnabled(boolean b); diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java index e7bfa1fd..e23de9d8 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java @@ -41,7 +41,7 @@ import nl.sogeti.android.gpstracker.db.DatabaseHelper; import nl.sogeti.android.gpstracker.db.GPStracking; import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; import nl.sogeti.android.gpstracker.util.Constants; import nl.sogeti.android.gpstracker.util.Pair; import android.app.AlertDialog; @@ -569,7 +569,7 @@ else if (Intent.ACTION_VIEW.equals(queryAction)) if ("content".equals(uri.getScheme()) && GPStracking.AUTHORITY.equals(uri.getAuthority())) { // Got to VIEW a single track, instead hand it of to the LoggerMap - Intent notificationIntent = new Intent(this, LoggerMapFragment.class); + Intent notificationIntent = new Intent(this, LoggerMapFragmentInterface.class); notificationIntent.setData(uri); startActivity(notificationIntent); finish(); diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java index 896f68b8..8176323f 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java @@ -15,16 +15,17 @@ import java.util.concurrent.Semaphore; import nl.sogeti.android.gpstracker.R; -import nl.sogeti.android.gpstracker.actions.ControlTracking; import nl.sogeti.android.gpstracker.actions.InsertNote; import nl.sogeti.android.gpstracker.actions.ShareTrack; import nl.sogeti.android.gpstracker.actions.Statistics; +import nl.sogeti.android.gpstracker.activity.ControlTrackingActivity; import nl.sogeti.android.gpstracker.activity.LoggerMapActivity; import nl.sogeti.android.gpstracker.db.GPStracking.Media; import nl.sogeti.android.gpstracker.db.GPStracking.Segments; import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; import nl.sogeti.android.gpstracker.db.GPStracking.Waypoints; -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; +import nl.sogeti.android.gpstracker.fragment.ControlTrackingFragment; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; import nl.sogeti.android.gpstracker.logger.GPSLoggerServiceManager; import nl.sogeti.android.gpstracker.util.Constants; import nl.sogeti.android.gpstracker.util.SlidingIndicatorView; @@ -151,7 +152,7 @@ public class LoggerMapHelper private Runnable speedCalculator; private Runnable heightCalculator; - private LoggerMapFragment mLoggerMap; + private LoggerMapFragmentInterface mLoggerMap; private BitmapSegmentsOverlay mBitmapSegmentsOverlay; private float mSpeed; private double mAltitude; @@ -159,7 +160,7 @@ public class LoggerMapHelper private int mZoom; private GeoPoint mStoredPoint; - public LoggerMapHelper(LoggerMapFragment loggerMap) + public LoggerMapHelper(LoggerMapFragmentInterface loggerMap) { mLoggerMap = loggerMap; } @@ -782,7 +783,7 @@ public boolean onOptionsItemSelected(MenuItem item) switch (item.getItemId()) { case MENU_TRACKING: - intent = new Intent(mLoggerMap.getActivity(), ControlTracking.class); + intent = new Intent(mLoggerMap.getActivity(), ControlTrackingActivity.class); mLoggerMap.getActivity().startActivityForResult(intent, MENU_TRACKING); handled = true; break; diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java index 673e9ca1..f7287194 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java @@ -1,6 +1,6 @@ package nl.sogeti.android.gpstracker.viewer.map.overlay; -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; @@ -41,7 +41,7 @@ public abstract class AsyncOverlay extends Overlay implements OverlayProvider private Paint mPaint; - private LoggerMapFragment mLoggerMap; + private LoggerMapFragmentInterface mLoggerMap; private SegmentMapQuestOverlay mMapQuestOverlay; @@ -71,7 +71,7 @@ public void run() private boolean postedBitmapUpdater; - AsyncOverlay(LoggerMapFragment loggermap, Handler handler) + AsyncOverlay(LoggerMapFragmentInterface loggermap, Handler handler) { mLoggerMap = loggermap; mHandler = handler; @@ -136,7 +136,7 @@ public void onDateOverlayChanged() } } - protected abstract void redrawOffscreen(Canvas asyncBuffer, LoggerMapFragment loggermap); + protected abstract void redrawOffscreen(Canvas asyncBuffer, LoggerMapFragmentInterface loggermap); protected abstract void scheduleRecalculation(); diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java index 4e893353..59f08010 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java @@ -3,7 +3,7 @@ import java.util.LinkedList; import java.util.List; -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; import android.graphics.Canvas; import android.os.Handler; @@ -18,7 +18,7 @@ public class BitmapSegmentsOverlay extends AsyncOverlay List mOverlays; Handler mOverlayHandler; - public BitmapSegmentsOverlay(LoggerMapFragment loggermap, Handler handler) + public BitmapSegmentsOverlay(LoggerMapFragmentInterface loggermap, Handler handler) { super(loggermap, handler); mOverlays = new LinkedList(); @@ -26,7 +26,7 @@ public BitmapSegmentsOverlay(LoggerMapFragment loggermap, Handler handler) } @Override - synchronized protected void redrawOffscreen(Canvas asyncBuffer, LoggerMapFragment loggermap) + synchronized protected void redrawOffscreen(Canvas asyncBuffer, LoggerMapFragmentInterface loggermap) { for (SegmentRendering segment : mOverlays) { diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java index 8b5431f7..c36f7000 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java @@ -38,7 +38,7 @@ import nl.sogeti.android.gpstracker.db.GPStracking; import nl.sogeti.android.gpstracker.db.GPStracking.Media; import nl.sogeti.android.gpstracker.db.GPStracking.Waypoints; -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragment; +import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; import nl.sogeti.android.gpstracker.util.UnitsI18n; import android.content.ContentResolver; import android.content.ContentUris; @@ -100,7 +100,7 @@ public class SegmentRendering private int mTrackColoringMethod = DRAW_CALCULATED; private ContentResolver mResolver; - private LoggerMapFragment mLoggerMap; + private LoggerMapFragmentInterface mLoggerMap; private int mPlacement = SegmentRendering.MIDDLE_SEGMENT; private Uri mWaypointsUri; @@ -176,7 +176,7 @@ public void run() * @param avgSpeed * @param handler */ - public SegmentRendering(LoggerMapFragment loggermap, Uri segmentUri, int color, double avgSpeed, double avgHeight, Handler handler) + public SegmentRendering(LoggerMapFragmentInterface loggermap, Uri segmentUri, int color, double avgSpeed, double avgHeight, Handler handler) { super(); mHandler = handler; diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/widget/ControlWidgetProvider.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/widget/ControlWidgetProvider.java index a524bb53..919aa2e4 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/widget/ControlWidgetProvider.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/widget/ControlWidgetProvider.java @@ -29,8 +29,8 @@ package nl.sogeti.android.gpstracker.widget; import nl.sogeti.android.gpstracker.R; -import nl.sogeti.android.gpstracker.actions.ControlTracking; import nl.sogeti.android.gpstracker.actions.InsertNote; +import nl.sogeti.android.gpstracker.activity.ControlTrackingActivity; import nl.sogeti.android.gpstracker.util.Constants; import android.app.PendingIntent; import android.appwidget.AppWidgetManager; @@ -187,7 +187,7 @@ else if (intent.hasCategory(Intent.CATEGORY_ALTERNATIVE)) int buttonId = Integer.parseInt(data.getSchemeSpecificPart()); if (buttonId == BUTTON_TRACKINGCONTROL) { - Intent controlIntent = new Intent( context, ControlTracking.class ); + Intent controlIntent = new Intent( context, ControlTrackingActivity.class ); controlIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(controlIntent); } From e2ed01bfad82b8579aa5d9822e01249e8be24aaf Mon Sep 17 00:00:00 2001 From: Rene de Groot Date: Sat, 5 Jan 2013 19:18:03 +0100 Subject: [PATCH 04/12] remove old style goolge and mapquest maps --- .../libs/mapquest-android-sdk-1.0.1.jar | Bin 305103 -> 0 bytes OpenGPSTracker/application/project.properties | 2 +- .../gpstracker/actions/ShareTrack.java | 46 +- .../gpstracker/actions/tasks/OsmSharing.java | 44 +- .../activity/LoggerMapActivity.java | 54 +- .../breadcrumbs/BreadcrumbsTracks.java | 2 +- .../DownloadBreadcrumbsTrackTask.java | 40 +- .../fragment/AbstractLoggerFragment.java | 151 -- .../fragment/GoogleMapFragment.java | 336 ---- .../fragment/LoggerMapFragmentInterface.java | 110 -- .../gpstracker/fragment/MapQuestFragment.java | 296 --- .../ActivityHostFragment.java | 84 - .../FixedMyLocationOverlay.java | 108 -- .../LocalActivityManagerFragment.java | 97 - .../MyGoogleMapActivity.java | 43 - .../MyMapquestMapActivity.java | 44 - .../android/gpstracker/util/Constants.java | 107 +- .../android/gpstracker/viewer/TrackList.java | 3 +- .../viewer/map/LoggerMapHelper.java | 1635 ----------------- .../viewer/map/overlay/AsyncOverlay.java | 232 --- .../map/overlay/BitmapSegmentsOverlay.java | 90 - .../viewer/map/overlay/OverlayProvider.java | 35 - .../viewer/map/overlay/SegmentRendering.java | 1404 -------------- .../tests/demo/OpenGPSTrackerDemo.java | 309 ---- .../userinterface/TrackingOverlayTest.java | 61 - 25 files changed, 118 insertions(+), 5215 deletions(-) delete mode 100644 OpenGPSTracker/application/libs/mapquest-android-sdk-1.0.1.jar delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/GoogleMapFragment.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragmentInterface.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/MapQuestFragment.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/ActivityHostFragment.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/FixedMyLocationOverlay.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/LocalActivityManagerFragment.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyGoogleMapActivity.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyMapquestMapActivity.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/OverlayProvider.java delete mode 100644 OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java delete mode 100644 OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/demo/OpenGPSTrackerDemo.java delete mode 100644 OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/userinterface/TrackingOverlayTest.java diff --git a/OpenGPSTracker/application/libs/mapquest-android-sdk-1.0.1.jar b/OpenGPSTracker/application/libs/mapquest-android-sdk-1.0.1.jar deleted file mode 100644 index d328c803c82572d4a534cdd7b2d6e529b8f01c55..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305103 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¥pw%o$yb~4^+X8yZy8FAgiL-|hR&K1 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

7X;Rna`A#>>}jt^fz+xMIVy>2A*=hbY@{A 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�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 diff --git a/OpenGPSTracker/application/project.properties b/OpenGPSTracker/application/project.properties index 2556c812..59d9bb3e 100644 --- a/OpenGPSTracker/application/project.properties +++ b/OpenGPSTracker/application/project.properties @@ -10,7 +10,7 @@ # Indicates whether an apk should be generated for each density. split.density=false # Project target. -target=Google Inc.:Google APIs:16 +target=android-17 apk-configurations= android.library.reference.1=../external_sources/signpost/signpost-commonshttp4 android.library.reference.2=../external_sources/httpclient-4.1.1/httpclient diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java index d7b5edfd..a1c641ab 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/ShareTrack.java @@ -45,10 +45,10 @@ import nl.sogeti.android.gpstracker.actions.utils.ProgressListener; import nl.sogeti.android.gpstracker.actions.utils.StatisticsCalulator; import nl.sogeti.android.gpstracker.actions.utils.StatisticsDelegate; +import nl.sogeti.android.gpstracker.activity.LoggerMapActivity; import nl.sogeti.android.gpstracker.breadcrumbs.BreadcrumbsService; import nl.sogeti.android.gpstracker.breadcrumbs.BreadcrumbsService.LocalBinder; import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; import nl.sogeti.android.gpstracker.util.Constants; import nl.sogeti.android.gpstracker.util.UnitsI18n; import android.app.Activity; @@ -276,7 +276,7 @@ protected void onDestroy() } super.onDestroy(); } - + /** * @see android.app.Activity#onCreateDialog(int) */ @@ -748,35 +748,35 @@ public void onServiceDisconnected(ComponentName arg0) }; private OnClickListener mBreadcrumbsDialogListener = new OnClickListener() - { - @Override - public void onClick(DialogInterface dialog, int which) { - mService.collectBreadcrumbsOauthToken(); - } - }; + @Override + public void onClick(DialogInterface dialog, int which) + { + mService.collectBreadcrumbsOauthToken(); + } + }; public class ShareProgressListener implements ProgressListener { private String mFileName; private int mProgress; - + public ShareProgressListener(String sharename) { mFileName = sharename; } - + public void startNotification() { String ns = Context.NOTIFICATION_SERVICE; mNotificationManager = (NotificationManager) ShareTrack.this.getSystemService(ns); int icon = android.R.drawable.ic_menu_save; CharSequence tickerText = getString(R.string.ticker_saving) + "\"" + mFileName + "\""; - + mNotification = new Notification(); - PendingIntent contentIntent = PendingIntent.getActivity(ShareTrack.this, 0, new Intent(ShareTrack.this, LoggerMapFragmentInterface.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), + PendingIntent contentIntent = PendingIntent.getActivity(ShareTrack.this, 0, new Intent(ShareTrack.this, LoggerMapActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK), PendingIntent.FLAG_UPDATE_CURRENT); - + mNotification.contentIntent = contentIntent; mNotification.tickerText = tickerText; mNotification.icon = icon; @@ -784,10 +784,10 @@ public void startNotification() mContentView = new RemoteViews(getPackageName(), R.layout.savenotificationprogress); mContentView.setImageViewResource(R.id.icon, icon); mContentView.setTextViewText(R.id.progresstext, tickerText); - + mNotification.contentView = mContentView; } - + private void updateNotification() { // Log.d( "TAG", "Progress " + progress + " of " + goal ); @@ -811,42 +811,42 @@ else if (mProgress >= Window.PROGRESS_END) mNotificationManager.notify(R.layout.savenotificationprogress, mNotification); } } - + public void endNotification(Uri file) { mNotificationManager.cancel(R.layout.savenotificationprogress); } - + @Override public void setIndeterminate(boolean indeterminate) { Log.w(TAG, "Unsupported indeterminate progress display"); } - + @Override public void started() { startNotification(); } - + @Override public void setProgress(int value) { mProgress = value; updateNotification(); } - + @Override public void finished(Uri result) { endNotification(result); } - + @Override public void showError(String task, String errorDialogMessage, Exception errorDialogException) { endNotification(null); - + mErrorDialogMessage = errorDialogMessage; mErrorDialogException = errorDialogException; if (!isFinishing()) @@ -859,6 +859,6 @@ public void showError(String task, String errorDialogMessage, Exception errorDia toast.show(); } } - + } } diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/tasks/OsmSharing.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/tasks/OsmSharing.java index bf577a4d..562815ef 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/tasks/OsmSharing.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/tasks/OsmSharing.java @@ -40,7 +40,6 @@ import nl.sogeti.android.gpstracker.db.GPStracking.MetaData; import nl.sogeti.android.gpstracker.oauth.PrepareRequestTokenActivity; import nl.sogeti.android.gpstracker.util.Constants; -import nl.sogeti.android.gpstracker.viewer.map.LoggerMapHelper; import oauth.signpost.commonshttp.CommonsHttpOAuthConsumer; import oauth.signpost.exception.OAuthCommunicationException; import oauth.signpost.exception.OAuthExpectationFailedException; @@ -70,7 +69,7 @@ /** * ???? - * + * * @version $Id:$ * @author rene (c) Jul 9, 2011, Sogeti B.V. */ @@ -88,7 +87,7 @@ public OsmSharing(Activity context, Uri trackUri, boolean attachments, ProgressL { super(context, trackUri, OSM_FILENAME, attachments, listener); } - + public void resumeOsmSharing(Uri fileUri, Uri trackUri) { mFileUri = fileUri; @@ -99,27 +98,26 @@ public void resumeOsmSharing(Uri fileUri, Uri trackUri) @Override protected Uri doInBackground(Void... params) { - if( mFileUri == null ) + if (mFileUri == null) { mFileUri = super.doInBackground(params); } sendToOsm(mFileUri, mTrackUri); return mFileUri; } - + @Override protected void onPostExecute(Uri resultFilename) { super.onPostExecute(resultFilename); - + CharSequence text = mContext.getString(R.string.osm_success) + responseText; Toast toast = Toast.makeText(mContext, text, Toast.LENGTH_LONG); toast.show(); } - + /** - * POST a (GPX) file to the 0.6 API of the OpenStreetMap.org website - * publishing this track to the public. + * POST a (GPX) file to the 0.6 API of the OpenStreetMap.org website publishing this track to the public. * * @param fileUri * @param contentType @@ -127,12 +125,12 @@ protected void onPostExecute(Uri resultFilename) private void sendToOsm(final Uri fileUri, final Uri trackUri) { CommonsHttpOAuthConsumer consumer = osmConnectionSetup(); - if( consumer == null ) + if (consumer == null) { requestOpenstreetmapOauthToken(); handleError(mContext.getString(R.string.osm_task), null, mContext.getString(R.string.osmauth_message)); } - + String visibility = PreferenceManager.getDefaultSharedPreferences(mContext).getString(Constants.OSM_VISIBILITY, "trackable"); File gpxFile = new File(fileUri.getEncodedPath()); @@ -151,20 +149,20 @@ private void sendToOsm(final Uri fileUri, final Uri trackUri) { sources = metaData.getString(0); } - if (sources != null && sources.contains(LoggerMapHelper.GOOGLE_PROVIDER)) + if (sources != null && sources.contains(Constants.GOOGLE_PROVIDER)) { throw new IOException("Unable to upload track with materials derived from Google Maps."); } // The POST to the create node HttpPost method = new HttpPost(url); - - String tags = mContext.getString(R.string.osm_tag) + " " +queryForNotes(); - + + String tags = mContext.getString(R.string.osm_tag) + " " + queryForNotes(); + // Build the multipart body with the upload data MultipartEntity entity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); entity.addPart("file", new FileBody(gpxFile)); - entity.addPart("description", new StringBody( ShareTrack.queryForTrackName(mContext.getContentResolver(), mTrackUri))); + entity.addPart("description", new StringBody(ShareTrack.queryForTrackName(mContext.getContentResolver(), mTrackUri))); entity.addPart("tags", new StringBody(tags)); entity.addPart("visibility", new StringBody(visibility)); method.setEntity(entity); @@ -185,7 +183,7 @@ private void sendToOsm(final Uri fileUri, final Uri trackUri) editor.remove(OAUTH_TOKEN); editor.remove(OAUTH_TOKEN_SECRET); editor.commit(); - + responseText = mContext.getString(R.string.osm_failed) + e.getLocalizedMessage(); handleError(mContext.getString(R.string.osm_task), e, responseText); } @@ -195,7 +193,7 @@ private void sendToOsm(final Uri fileUri, final Uri trackUri) editor.remove(OAUTH_TOKEN); editor.remove(OAUTH_TOKEN_SECRET); editor.commit(); - + responseText = mContext.getString(R.string.osm_failed) + e.getLocalizedMessage(); handleError(mContext.getString(R.string.osm_task), e, responseText); } @@ -205,7 +203,7 @@ private void sendToOsm(final Uri fileUri, final Uri trackUri) editor.remove(OAUTH_TOKEN); editor.remove(OAUTH_TOKEN_SECRET); editor.commit(); - + responseText = mContext.getString(R.string.osm_failed) + e.getLocalizedMessage(); handleError(mContext.getString(R.string.osm_task), e, responseText); } @@ -237,18 +235,18 @@ private void sendToOsm(final Uri fileUri, final Uri trackUri) { Log.e(TAG, "Failed to upload to error code " + statusCode + " " + responseText); String text = mContext.getString(R.string.osm_failed) + responseText; - if( statusCode == 401 ) + if (statusCode == 401) { Editor editor = PreferenceManager.getDefaultSharedPreferences(mContext).edit(); editor.remove(OAUTH_TOKEN); editor.remove(OAUTH_TOKEN_SECRET); editor.commit(); } - + handleError(mContext.getString(R.string.osm_task), new HttpException("Unexpected status reported by OSM"), text); } } - + private CommonsHttpOAuthConsumer osmConnectionSetup() { final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(mContext); @@ -317,5 +315,5 @@ public void requestOpenstreetmapOauthToken() intent.putExtra(PrepareRequestTokenActivity.AUTHORIZE_URL, Constants.OSM_AUTHORIZE_URL); mContext.startActivity(intent); - } + } } diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java index f8165609..c959a13d 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java @@ -13,15 +13,8 @@ package nl.sogeti.android.gpstracker.activity; import nl.sogeti.android.gpstracker.R; -import nl.sogeti.android.gpstracker.fragment.GoogleMapFragment; -import nl.sogeti.android.gpstracker.fragment.MapQuestFragment; -import nl.sogeti.android.gpstracker.util.Constants; -import nl.sogeti.android.gpstracker.viewer.map.LoggerMapHelper; import android.app.Activity; -import android.app.Fragment; import android.os.Bundle; -import android.preference.PreferenceManager; -import android.util.Log; /** * ???? @@ -38,51 +31,6 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); - - if (savedInstanceState == null) - { - Fragment mapFragment = null; - int provider = Integer.valueOf(PreferenceManager.getDefaultSharedPreferences(this).getString(Constants.MAPPROVIDER, "" + Constants.GOOGLE)).intValue(); - switch (provider) - { - case Constants.GOOGLE: - mapFragment = new GoogleMapFragment(); - mapFragment.setArguments(getIntent().getExtras()); - break; - case Constants.MAPQUEST: - mapFragment = new MapQuestFragment(); - mapFragment.setArguments(getIntent().getExtras()); - break; - default: - mapFragment = new GoogleMapFragment(); - mapFragment.setArguments(getIntent().getExtras()); - Log.e(TAG, "Fault in value " + provider + " as MapProvider, defaulting to Google Maps."); - break; - } - getFragmentManager().beginTransaction().add(R.id.activity_logmapview, mapFragment).commit(); - } - } - - public void updateMapProvider() - { - int provider = Integer.valueOf(PreferenceManager.getDefaultSharedPreferences(this).getString(Constants.MAPPROVIDER, "" + Constants.GOOGLE)).intValue(); - Fragment mapFragment = null; - switch (provider) - { - case Constants.GOOGLE: - mapFragment = new GoogleMapFragment(); - mapFragment.setArguments(getIntent().getExtras()); - break; - case Constants.MAPQUEST: - mapFragment = new MapQuestFragment(); - mapFragment.setArguments(getIntent().getExtras()); - break; - default: - mapFragment = new GoogleMapFragment(); - mapFragment.setArguments(getIntent().getExtras()); - Log.e(TAG, "Fault in value " + provider + " as MapProvider, defaulting to Google Maps."); - break; - } - getFragmentManager().beginTransaction().replace(R.id.activity_logmapview, mapFragment).commit(); } + } diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/breadcrumbs/BreadcrumbsTracks.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/breadcrumbs/BreadcrumbsTracks.java index 2400ab1b..f043bcd9 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/breadcrumbs/BreadcrumbsTracks.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/breadcrumbs/BreadcrumbsTracks.java @@ -393,7 +393,7 @@ public List> getAllItems() for (Integer bundleId : sBundlesWithTracks.keySet()) { items.add(Pair.create(Constants.BREADCRUMBS_BUNDLE_ITEM_VIEW_TYPE, bundleId)); - for(Integer trackId : sBundlesWithTracks.get(bundleId)) + for (Integer trackId : sBundlesWithTracks.get(bundleId)) { items.add(Pair.create(Constants.BREADCRUMBS_TRACK_ITEM_VIEW_TYPE, trackId)); } diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/breadcrumbs/DownloadBreadcrumbsTrackTask.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/breadcrumbs/DownloadBreadcrumbsTrackTask.java index 9d8a83e1..cd6c77da 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/breadcrumbs/DownloadBreadcrumbsTrackTask.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/breadcrumbs/DownloadBreadcrumbsTrackTask.java @@ -62,10 +62,8 @@ import android.util.Log; /** - * An asynchronous task that communicates with Twitter to retrieve a request - * token. (OAuthGetRequestToken) After receiving the request token from Twitter, - * pop a browser to the user to authorize the Request Token. - * (OAuthAuthorizeToken) + * An asynchronous task that communicates with Twitter to retrieve a request token. (OAuthGetRequestToken) After receiving the request token from Twitter, pop a browser to the user to authorize the + * Request Token. (OAuthAuthorizeToken) */ public class DownloadBreadcrumbsTrackTask extends GpxParser { @@ -76,10 +74,9 @@ public class DownloadBreadcrumbsTrackTask extends GpxParser private DefaultHttpClient mHttpclient; private Pair mTrack; - /** - * * Constructor: create a new DownloadBreadcrumbsTrackTask. + * * @param context * @param progressListener * @param adapter @@ -87,8 +84,8 @@ public class DownloadBreadcrumbsTrackTask extends GpxParser * @param consumer * @param track */ - public DownloadBreadcrumbsTrackTask(Context context, ProgressListener progressListener, BreadcrumbsService adapter, DefaultHttpClient httpclient, - OAuthConsumer consumer, Pair track) + public DownloadBreadcrumbsTrackTask(Context context, ProgressListener progressListener, BreadcrumbsService adapter, DefaultHttpClient httpclient, OAuthConsumer consumer, + Pair track) { super(context, progressListener); mAdapter = adapter; @@ -98,8 +95,7 @@ public DownloadBreadcrumbsTrackTask(Context context, ProgressListener progressLi } /** - * Retrieve the OAuth Request Token and present a browser to the user to - * authorize the token. + * Retrieve the OAuth Request Token and present a browser to the user to authorize the token. */ @Override protected Uri doInBackground(Uri... params) @@ -117,19 +113,19 @@ protected Uri doInBackground(Uri... params) throw new IOException("Fail to execute request due to canceling"); } mConsumer.sign(request); - if( BreadcrumbsAdapter.DEBUG ) + if (BreadcrumbsAdapter.DEBUG) { - Log.d( TAG, "Execute request: "+request.getURI() ); - for( Header header : request.getAllHeaders() ) + Log.d(TAG, "Execute request: " + request.getURI()); + for (Header header : request.getAllHeaders()) { - Log.d( TAG, " with header: "+header.toString()); + Log.d(TAG, " with header: " + header.toString()); } } HttpResponse response = mHttpclient.execute(request); responseEntity = response.getEntity(); InputStream is = responseEntity.getContent(); InputStream stream = new BufferedInputStream(is, 8192); - if( BreadcrumbsAdapter.DEBUG ) + if (BreadcrumbsAdapter.DEBUG) { stream = XmlCreator.convertStreamToLoggedStream(TAG, stream); } @@ -161,7 +157,7 @@ protected Uri doInBackground(Uri... params) } catch (IOException e) { - Log.e( TAG, "Failed to close the content stream", e); + Log.e(TAG, "Failed to close the content stream", e); } } } @@ -210,15 +206,15 @@ protected void onPostExecute(Uri result) { metaValues.add(buildContentValues(BreadcrumbsTracks.BUNDLE_ID, Integer.toString(bcBundleId))); } -// if (bcActivityId != null) -// { -// metaValues.add(buildContentValues(BreadcrumbsTracks.ACTIVITY_ID, Integer.toString(bcActivityId))); -// } + // if (bcActivityId != null) + // { + // metaValues.add(buildContentValues(BreadcrumbsTracks.ACTIVITY_ID, Integer.toString(bcActivityId))); + // } ContentResolver resolver = mContext.getContentResolver(); resolver.bulkInsert(metadataUri, metaValues.toArray(new ContentValues[1])); - + tracks.addSyncedTrack(ogtTrackId, mTrack.second); - + } private ContentValues buildContentValues(String key, String value) diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java deleted file mode 100644 index 0751e834..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/AbstractLoggerFragment.java +++ /dev/null @@ -1,151 +0,0 @@ -/*------------------------------------------------------------------------------ - ** Ident: Delivery Center Java - ** Author: rene - ** Copyright: (c) Nov 4, 2012 Sogeti Nederland B.V. All Rights Reserved. - **------------------------------------------------------------------------------ - ** Sogeti Nederland B.V. | No part of this file may be reproduced - ** Distributed Software Engineering | or transmitted in any form or by any - ** Lange Dreef 17 | means, electronic or mechanical, for the - ** 4131 NJ Vianen | purpose, without the express written - ** The Netherlands | permission of the copyright holder. - *------------------------------------------------------------------------------ - */ -package nl.sogeti.android.gpstracker.fragment; - -import nl.sogeti.android.gpstracker.R; -import nl.sogeti.android.gpstracker.viewer.map.LoggerMapHelper; -import android.app.Fragment; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -/** - * ???? - * - * @version $Id:$ - * @author rene (c) Nov 4, 2012, Sogeti B.V. - */ -public abstract class AbstractLoggerFragment extends Fragment implements LoggerMapFragmentInterface -{ - - protected LoggerMapHelper mHelper; - private TextView[] mSpeedtexts; - private TextView mLastGPSSpeedView; - private TextView mLastGPSAltitudeView; - private TextView mDistanceView; - private View mSpeedbar; - - /** - * Constructor: create a new AbstractLoggerFragment. - */ - public AbstractLoggerFragment() - { - } - - public void didCreateView(View v, Bundle savedInstanceState) - { - TextView[] speeds = { (TextView) v.findViewById(R.id.speedview05), (TextView) v.findViewById(R.id.speedview04), (TextView) v.findViewById(R.id.speedview03), - (TextView) v.findViewById(R.id.speedview02), (TextView) v.findViewById(R.id.speedview01), (TextView) v.findViewById(R.id.speedview00) }; - mSpeedtexts = speeds; - mLastGPSSpeedView = (TextView) v.findViewById(R.id.currentSpeed); - mLastGPSAltitudeView = (TextView) v.findViewById(R.id.currentAltitude); - mDistanceView = (TextView) v.findViewById(R.id.currentDistance); - mSpeedbar = v.findViewById(R.id.speedbar); - mHelper.onCreateView(); - } - - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - mHelper = new LoggerMapHelper(this); - mHelper.onCreate(savedInstanceState); - } - - @Override - public void onResume() - { - super.onResume(); - mHelper.onResume(); - } - - @Override - public void onPause() - { - mHelper.onPause(); - super.onPause(); - } - - @Override - public void onStop() - { - super.onStop(); - } - - @Override - public void onSaveInstanceState(Bundle save) - { - super.onSaveInstanceState(save); - mHelper.onSaveInstanceState(save); - } - - @Override - public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) - { - super.onCreateOptionsMenu(menu, inflater); - mHelper.onCreateOptionsMenu(menu); - } - - @Override - public void onPrepareOptionsMenu(Menu menu) - { - mHelper.onPrepareOptionsMenu(menu); - super.onPrepareOptionsMenu(menu); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) - { - boolean handled = mHelper.onOptionsItemSelected(item); - if( !handled ) - { - handled = super.onOptionsItemSelected(item); - } - return handled; - } - - @Override - public TextView[] getSpeedTextViews() - { - return mSpeedtexts; - } - - @Override - public TextView getAltitideTextView() - { - return mLastGPSAltitudeView; - } - - @Override - public TextView getSpeedTextView() - { - return mLastGPSSpeedView; - } - - @Override - public TextView getDistanceTextView() - { - return mDistanceView; - } - - @Override - public View getSpeedbar() - { - return mSpeedbar; - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/GoogleMapFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/GoogleMapFragment.java deleted file mode 100644 index 9013ed12..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/GoogleMapFragment.java +++ /dev/null @@ -1,336 +0,0 @@ -/*------------------------------------------------------------------------------ - ** Ident: Sogeti Smart Mobile Solutions - ** Author: rene - ** Copyright: (c) Apr 24, 2011 Sogeti Nederland B.V. All Rights Reserved. - **------------------------------------------------------------------------------ - ** Sogeti Nederland B.V. | No part of this file may be reproduced - ** Distributed Software Engineering | or transmitted in any form or by any - ** Lange Dreef 17 | means, electronic or mechanical, for the - ** 4131 NJ Vianen | purpose, without the express written - ** The Netherlands | permission of the copyright holder. - *------------------------------------------------------------------------------ - * - * This file is part of OpenGPSTracker. - * - * OpenGPSTracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenGPSTracker is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with OpenGPSTracker. If not, see . - * - */ -package nl.sogeti.android.gpstracker.fragment; - -import nl.sogeti.android.gpstracker.R; -import nl.sogeti.android.gpstracker.googlemapfragment.ActivityHostFragment; -import nl.sogeti.android.gpstracker.googlemapfragment.FixedMyLocationOverlay; -import nl.sogeti.android.gpstracker.googlemapfragment.MyGoogleMapActivity; -import nl.sogeti.android.gpstracker.util.Constants; -import nl.sogeti.android.gpstracker.util.SlidingIndicatorView; -import nl.sogeti.android.gpstracker.viewer.map.LoggerMapHelper; -import nl.sogeti.android.gpstracker.viewer.map.overlay.OverlayProvider; -import android.app.Activity; -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; -import android.graphics.Bitmap; -import android.graphics.Point; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; - -import com.google.android.maps.GeoPoint; -import com.google.android.maps.MapView; - -/** - * Fragment showing a track and allowing logging control - * - * @version $Id$ - * @author rene (c) Jan 18, 2009, Sogeti B.V. - */ -public class GoogleMapFragment extends ActivityHostFragment -{ - private MapView mMapView; - private FixedMyLocationOverlay mMylocation; - - @Override - protected Class< ? extends Activity> getActivityClass() - { - return MyGoogleMapActivity.class; - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) - { - View v = super.onCreateView(inflater, container, savedInstanceState); - mMapView = (MapView) getHostedActivity().findViewById(R.id.myMapView); - mMapView.setBuiltInZoomControls(true); - mMylocation = new FixedMyLocationOverlay(this.getActivity(), mMapView); - super.didCreateView(v, savedInstanceState); - - return v; - } - - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); - } - - @Override - public void onDestroyView() - { - mMapView = null; - super.onDestroyView(); - } - - private void setTrafficOverlay(boolean b) - { - SharedPreferences sharedPreferences = mHelper.getPreferences(); - Editor editor = sharedPreferences.edit(); - editor.putBoolean(Constants.TRAFFIC, b); - editor.commit(); - } - - private void setSatelliteOverlay(boolean b) - { - SharedPreferences sharedPreferences = mHelper.getPreferences(); - Editor editor = sharedPreferences.edit(); - editor.putBoolean(Constants.SATELLITE, b); - editor.commit(); - } - - /******************************/ - /** Loggermap methods **/ - /******************************/ - - @Override - public void updateOverlays() - { - SharedPreferences sharedPreferences = mHelper.getPreferences(); - mMapView.setSatellite(sharedPreferences.getBoolean(Constants.SATELLITE, false)); - mMapView.setTraffic(sharedPreferences.getBoolean(Constants.TRAFFIC, false)); - } - - @Override - public void setDrawingCacheEnabled(boolean b) - { - mMapView.getRootView().setDrawingCacheEnabled(true); - } - - @Override - public void onLayerCheckedChanged(int checkedId, boolean isChecked) - { - switch (checkedId) - { - case R.id.layer_google_satellite: - setSatelliteOverlay(true); - break; - case R.id.layer_google_regular: - setSatelliteOverlay(false); - break; - case R.id.layer_traffic: - setTrafficOverlay(isChecked); - break; - default: - break; - } - } - - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) - { - if (key.equals(Constants.TRAFFIC)) - { - updateOverlays(); - } - else if (key.equals(Constants.SATELLITE)) - { - updateOverlays(); - } - } - - @Override - public Bitmap getDrawingCache() - { - return mMapView.getRootView().getDrawingCache(); - } - - @Override - public void showMediaDialog(BaseAdapter mediaAdapter) - { - mHelper.showMediaDialog(mediaAdapter); - } - - public void onDateOverlayChanged() - { - mMapView.postInvalidate(); - } - - @Override - public String getDataSourceId() - { - return LoggerMapHelper.GOOGLE_PROVIDER; - } - - @Override - public boolean isOutsideScreen(GeoPoint lastPoint) - { - Point out = new Point(); - this.mMapView.getProjection().toPixels(lastPoint, out); - int height = this.mMapView.getHeight(); - int width = this.mMapView.getWidth(); - return (out.x < 0 || out.y < 0 || out.y > height || out.x > width); - } - - @Override - public boolean isNearScreenEdge(GeoPoint lastPoint) - { - Point out = new Point(); - this.mMapView.getProjection().toPixels(lastPoint, out); - int height = this.mMapView.getHeight(); - int width = this.mMapView.getWidth(); - return (out.x < width / 4 || out.y < height / 4 || out.x > (width / 4) * 3 || out.y > (height / 4) * 3); - } - - @Override - public void executePostponedActions() - { - // NOOP for Google Maps - } - - @Override - public void enableCompass() - { - mMylocation.enableCompass(); - } - - @Override - public void enableMyLocation() - { - mMylocation.enableMyLocation(); - } - - @Override - public void disableMyLocation() - { - mMylocation.disableMyLocation(); - } - - @Override - public void disableCompass() - { - mMylocation.disableCompass(); - } - - @Override - public void setZoom(int zoom) - { - mMapView.getController().setZoom(zoom); - } - - @Override - public void animateTo(GeoPoint storedPoint) - { - mMapView.getController().animateTo(storedPoint); - } - - @Override - public int getZoomLevel() - { - return mMapView.getZoomLevel(); - } - - @Override - public GeoPoint getMapCenter() - { - return mMapView.getMapCenter(); - } - - @Override - public boolean zoomOut() - { - return mMapView.getController().zoomOut(); - } - - @Override - public boolean zoomIn() - { - return mMapView.getController().zoomIn(); - } - - @Override - public void postInvalidate() - { - mMapView.postInvalidate(); - } - - @Override - public void clearAnimation() - { - mMapView.clearAnimation(); - } - - @Override - public void setCenter(GeoPoint lastPoint) - { - mMapView.getController().setCenter(lastPoint); - } - - @Override - public int getMaxZoomLevel() - { - return mMapView.getMaxZoomLevel(); - } - - @Override - public GeoPoint fromPixels(int x, int y) - { - return mMapView.getProjection().fromPixels(x, y); - } - - @Override - public boolean hasProjection() - { - return mMapView.getProjection() != null; - } - - @Override - public float metersToEquatorPixels(float float1) - { - return mMapView.getProjection().metersToEquatorPixels(float1); - } - - @Override - public void toPixels(GeoPoint geoPoint, Point screenPoint) - { - mMapView.getProjection().toPixels(geoPoint, screenPoint); - } - - @Override - public void addOverlay(OverlayProvider overlay) - { - mMapView.getOverlays().add(overlay.getGoogleOverlay()); - } - - @Override - public void clearOverlays() - { - mMapView.getOverlays().clear(); - } - - @Override - public SlidingIndicatorView getScaleIndicatorView() - { - return (SlidingIndicatorView) getView().findViewById(R.id.scaleindicator); - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragmentInterface.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragmentInterface.java deleted file mode 100644 index 64d4c7bf..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/LoggerMapFragmentInterface.java +++ /dev/null @@ -1,110 +0,0 @@ -/*------------------------------------------------------------------------------ - ** Ident: Delivery Center Java - ** Author: rene - ** Copyright: (c) Feb 26, 2012 Sogeti Nederland B.V. All Rights Reserved. - **------------------------------------------------------------------------------ - ** Sogeti Nederland B.V. | No part of this file may be reproduced - ** Distributed Software Engineering | or transmitted in any form or by any - ** Lange Dreef 17 | means, electronic or mechanical, for the - ** 4131 NJ Vianen | purpose, without the express written - ** The Netherlands | permission of the copyright holder. - *------------------------------------------------------------------------------ - */ -package nl.sogeti.android.gpstracker.fragment; - -import nl.sogeti.android.gpstracker.util.SlidingIndicatorView; -import nl.sogeti.android.gpstracker.viewer.map.overlay.OverlayProvider; -import android.app.Activity; -import android.content.Context; -import android.content.SharedPreferences; -import android.graphics.Bitmap; -import android.graphics.Point; -import android.view.View; -import android.widget.BaseAdapter; -import android.widget.TextView; - -import com.google.android.maps.GeoPoint; - -/** - * ???? - * - * @version $Id$ - * @author rene (c) Feb 26, 2012, Sogeti B.V. - */ -public interface LoggerMapFragmentInterface -{ - - void setDrawingCacheEnabled(boolean b); - - void updateOverlays(); - - void onLayerCheckedChanged(int checkedId, boolean b); - - void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key); - - Bitmap getDrawingCache(); - - void showMediaDialog(BaseAdapter mediaAdapter); - - String getDataSourceId(); - - boolean isOutsideScreen(GeoPoint lastPoint); - - boolean isNearScreenEdge(GeoPoint lastPoint); - - void executePostponedActions(); - - void disableMyLocation(); - - void disableCompass(); - - void setZoom(int int1); - - void animateTo(GeoPoint storedPoint); - - int getZoomLevel(); - - GeoPoint getMapCenter(); - - boolean zoomOut(); - - boolean zoomIn(); - - void postInvalidate(); - - void enableCompass(); - - void enableMyLocation(); - - void addOverlay(OverlayProvider overlay); - - void clearAnimation(); - - void setCenter(GeoPoint lastPoint); - - int getMaxZoomLevel(); - - GeoPoint fromPixels(int x, int y); - - boolean hasProjection(); - - float metersToEquatorPixels(float float1); - - void toPixels(GeoPoint geopoint, Point screenPoint); - - TextView[] getSpeedTextViews(); - - TextView getAltitideTextView(); - - TextView getSpeedTextView(); - - TextView getDistanceTextView(); - - void clearOverlays(); - - SlidingIndicatorView getScaleIndicatorView(); - - Activity getActivity(); - - View getSpeedbar(); -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/MapQuestFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/MapQuestFragment.java deleted file mode 100644 index 1c9f4fbe..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/fragment/MapQuestFragment.java +++ /dev/null @@ -1,296 +0,0 @@ -/*------------------------------------------------------------------------------ - ** Ident: Delivery Center Java - ** Author: rene - ** Copyright: (c) Nov 4, 2012 Sogeti Nederland B.V. All Rights Reserved. - **------------------------------------------------------------------------------ - ** Sogeti Nederland B.V. | No part of this file may be reproduced - ** Distributed Software Engineering | or transmitted in any form or by any - ** Lange Dreef 17 | means, electronic or mechanical, for the - ** 4131 NJ Vianen | purpose, without the express written - ** The Netherlands | permission of the copyright holder. - *------------------------------------------------------------------------------ - */ -package nl.sogeti.android.gpstracker.fragment; - -import nl.sogeti.android.gpstracker.R; -import nl.sogeti.android.gpstracker.googlemapfragment.ActivityHostFragment; -import nl.sogeti.android.gpstracker.googlemapfragment.MyGoogleMapActivity; -import nl.sogeti.android.gpstracker.googlemapfragment.MyMapquestMapActivity; -import nl.sogeti.android.gpstracker.util.SlidingIndicatorView; -import nl.sogeti.android.gpstracker.viewer.map.LoggerMapHelper; -import nl.sogeti.android.gpstracker.viewer.map.overlay.OverlayProvider; -import android.app.Activity; -import android.content.SharedPreferences; -import android.graphics.Bitmap; -import android.graphics.Point; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; - -import com.google.android.maps.GeoPoint; -import com.mapquest.android.maps.MapView; -import com.mapquest.android.maps.MyLocationOverlay; - -/** - * ???? - * - * @version $Id:$ - * @author rene (c) Nov 4, 2012, Sogeti B.V. - */ -public class MapQuestFragment extends ActivityHostFragment -{ - private MapView mMapView; - private MyLocationOverlay mMylocation; - - /** - * Constructor: create a new MapQuestFragment. - */ - public MapQuestFragment() - { - } - - @Override - protected Class< ? extends Activity> getActivityClass() - { - return MyMapquestMapActivity.class; - } - - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) - { - View v = super.onCreateView(inflater, container, savedInstanceState); - mMapView = (MapView) v.findViewById(R.id.myMapView); - mMapView.setBuiltInZoomControls(true); - mMylocation = new MyLocationOverlay(getActivity(), mMapView); - super.didCreateView(v, savedInstanceState); - - return v; - }; - - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); - - } - - @Override - public void onDestroyView() - { - mMapView = null; - super.onDestroyView(); - } - - /******************************/ - /** Loggermap methods **/ - /******************************/ - - @Override - public void updateOverlays() - { - } - - @Override - public void setDrawingCacheEnabled(boolean b) - { - mMapView.getRootView().setDrawingCacheEnabled(true); - } - - @Override - public void onLayerCheckedChanged(int checkedId, boolean isChecked) - { - } - - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) - { - } - - @Override - public Bitmap getDrawingCache() - { - return mMapView.getRootView().getDrawingCache(); - } - - @Override - public void showMediaDialog(BaseAdapter mediaAdapter) - { - mHelper.showMediaDialog(mediaAdapter); - } - - public void onDateOverlayChanged() - { - mMapView.postInvalidate(); - } - - @Override - public String getDataSourceId() - { - return LoggerMapHelper.MAPQUEST_PROVIDER; - } - - @Override - public boolean isOutsideScreen(GeoPoint lastPoint) - { - Point out = new Point(); - this.mMapView.getProjection().toPixels(convertGeoPoint(lastPoint), out); - int height = this.mMapView.getHeight(); - int width = this.mMapView.getWidth(); - return (out.x < 0 || out.y < 0 || out.y > height || out.x > width); - } - - @Override - public boolean isNearScreenEdge(GeoPoint lastPoint) - { - Point out = new Point(); - this.mMapView.getProjection().toPixels(convertGeoPoint(lastPoint), out); - int height = this.mMapView.getHeight(); - int width = this.mMapView.getWidth(); - return (out.x < width / 4 || out.y < height / 4 || out.x > (width / 4) * 3 || out.y > (height / 4) * 3); - } - - @Override - public void executePostponedActions() - { - } - - @Override - public void enableCompass() - { - mMylocation.enableCompass(); - } - - @Override - public void enableMyLocation() - { - mMylocation.enableMyLocation(); - } - @Override - public void disableMyLocation() - { - mMylocation.disableMyLocation(); - } - - @Override - public void disableCompass() - { - mMylocation.disableCompass(); - } - - @Override - public void setZoom(int zoom) - { - mMapView.getController().setZoom(zoom); - } - - @Override - public void animateTo(GeoPoint storedPoint) - { - mMapView.getController().animateTo(convertGeoPoint(storedPoint)); - } - - @Override - public int getZoomLevel() - { - return mMapView.getZoomLevel(); - } - - @Override - public GeoPoint getMapCenter() - { - return convertMapQuestGeoPoint(mMapView.getMapCenter()); - } - - @Override - public boolean zoomOut() - { - return mMapView.getController().zoomOut(); - } - - @Override - public boolean zoomIn() - { - return mMapView.getController().zoomIn(); - } - - @Override - public void postInvalidate() - { - mMapView.postInvalidate(); - } - - @Override - public void addOverlay(OverlayProvider overlay) - { - mMapView.getOverlays().add(overlay.getMapQuestOverlay()); - } - - @Override - public void clearAnimation() - { - mMapView.clearAnimation(); - } - - @Override - public void setCenter(GeoPoint lastPoint) - { - mMapView.getController().setCenter( convertGeoPoint(lastPoint)); - } - - @Override - public int getMaxZoomLevel() - { - return mMapView.getMaxZoomLevel(); - } - - @Override - public GeoPoint fromPixels(int x, int y) - { - com.mapquest.android.maps.GeoPoint mqGeopoint = mMapView.getProjection().fromPixels(x, y); - return convertMapQuestGeoPoint(mqGeopoint); - } - - @Override - public boolean hasProjection() - { - return mMapView.getProjection() != null; - } - - @Override - public float metersToEquatorPixels(float float1) - { - return mMapView.getProjection().metersToEquatorPixels(float1); - } - - @Override - public void toPixels(GeoPoint geoPoint, Point screenPoint) - { - com.mapquest.android.maps.GeoPoint mqGeopoint = convertGeoPoint(geoPoint); - mMapView.getProjection().toPixels( mqGeopoint, screenPoint); - } - - static com.mapquest.android.maps.GeoPoint convertGeoPoint( GeoPoint point ) - { - return new com.mapquest.android.maps.GeoPoint(point.getLatitudeE6(), point.getLongitudeE6() ); - } - - static GeoPoint convertMapQuestGeoPoint( com.mapquest.android.maps.GeoPoint mqPoint ) - { - return new GeoPoint(mqPoint.getLatitudeE6(), mqPoint.getLongitudeE6() ); - } - - @Override - public void clearOverlays() - { - mMapView.getOverlays().clear(); - } - - @Override - public SlidingIndicatorView getScaleIndicatorView() - { - return (SlidingIndicatorView) getView().findViewById(R.id.scaleindicator); - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/ActivityHostFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/ActivityHostFragment.java deleted file mode 100644 index 7747d429..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/ActivityHostFragment.java +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright (C) 2011 Ievgenii Nazaruk - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package nl.sogeti.android.gpstracker.googlemapfragment; - -import android.app.Activity; -import android.content.Intent; -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.ViewParent; -import android.view.Window; - -/** - * This is a fragment that will be used during transition from activities to fragments. - */ -public abstract class ActivityHostFragment extends LocalActivityManagerFragment -{ - - protected abstract Class< ? extends Activity> getActivityClass(); - - private final static String ACTIVITY_TAG = "hosted"; - - @SuppressWarnings("deprecation") - @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) - { - Intent intent = new Intent(getActivity(), getActivityClass()); - - final Window w = getLocalActivityManager().startActivity(ACTIVITY_TAG, intent); - final View wd = w != null ? w.getDecorView() : null; - - if (wd != null) - { - ViewParent parent = wd.getParent(); - if (parent != null) - { - ViewGroup v = (ViewGroup) parent; - v.removeView(wd); - } - - wd.setVisibility(View.VISIBLE); - wd.setFocusableInTouchMode(true); - if (wd instanceof ViewGroup) - { - ((ViewGroup) wd).setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS); - } - } - return wd; - } - - /* - * (non-Javadoc) - * @see android.support.v4.app.Fragment#onDestroyView() - */ - @Override - public void onDestroyView() - { - super.onDestroyView(); - } - - /** - * For accessing public methods of the hosted activity - */ - @SuppressWarnings("deprecation") - public Activity getHostedActivity() - { - return getLocalActivityManager().getActivity(ACTIVITY_TAG); - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/FixedMyLocationOverlay.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/FixedMyLocationOverlay.java deleted file mode 100644 index 69ea57ae..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/FixedMyLocationOverlay.java +++ /dev/null @@ -1,108 +0,0 @@ -/* - * Written by Pieter @ android-developers on groups.google.com - * - * This file is part of OpenGPSTracker. - * - * OpenGPSTracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenGPSTracker is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with OpenGPSTracker. If not, see . - * - */ -package nl.sogeti.android.gpstracker.googlemapfragment; - -import nl.sogeti.android.gpstracker.R; -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Paint; -import android.graphics.Paint.Style; -import android.graphics.Point; -import android.graphics.drawable.Drawable; -import android.location.Location; - -import com.google.android.maps.GeoPoint; -import com.google.android.maps.MapView; -import com.google.android.maps.MyLocationOverlay; -import com.google.android.maps.Projection; - -/** - * Fix for a ClassCastException found on some Google Maps API's implementations. - * @see www.spectrekking.com - * @version $Id$ - */ -public class FixedMyLocationOverlay extends MyLocationOverlay { - private boolean bugged = false; - - private Paint accuracyPaint; - private Point center; - private Point left; - private Drawable drawable; - private int width; - private int height; - - public FixedMyLocationOverlay(Context context, MapView mapView) { - super(context, mapView); - } - - @Override - protected void drawMyLocation(Canvas canvas, MapView mapView, Location lastFix, GeoPoint myLoc, long when) { - if (!bugged) { - try { - super.drawMyLocation(canvas, mapView, lastFix, myLoc, when); - } catch (Exception e) { - bugged = true; - } - } - - if (bugged) { - if (drawable == null) { - if( accuracyPaint == null ) - { - accuracyPaint = new Paint(); - accuracyPaint.setAntiAlias(true); - accuracyPaint.setStrokeWidth(2.0f); - } - drawable = mapView.getContext().getResources().getDrawable(R.drawable.mylocation); - width = drawable.getIntrinsicWidth(); - height = drawable.getIntrinsicHeight(); - center = new Point(); - left = new Point(); - } - Projection projection = mapView.getProjection(); - - double latitude = lastFix.getLatitude(); - double longitude = lastFix.getLongitude(); - float accuracy = lastFix.getAccuracy(); - - float[] result = new float[1]; - - Location.distanceBetween(latitude, longitude, latitude, longitude + 1, result); - float longitudeLineDistance = result[0]; - - GeoPoint leftGeo = new GeoPoint((int)(latitude*1e6), (int)((longitude-accuracy/longitudeLineDistance)*1e6)); - projection.toPixels(leftGeo, left); - projection.toPixels(myLoc, center); - int radius = center.x - left.x; - - accuracyPaint.setColor(0xff6666ff); - accuracyPaint.setStyle(Style.STROKE); - canvas.drawCircle(center.x, center.y, radius, accuracyPaint); - - accuracyPaint.setColor(0x186666ff); - accuracyPaint.setStyle(Style.FILL); - canvas.drawCircle(center.x, center.y, radius, accuracyPaint); - - drawable.setBounds(center.x - width / 2, center.y - height / 2, center.x + width / 2, center.y + height / 2); - drawable.draw(canvas); - } - } - -} \ No newline at end of file diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/LocalActivityManagerFragment.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/LocalActivityManagerFragment.java deleted file mode 100644 index e758bfbe..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/LocalActivityManagerFragment.java +++ /dev/null @@ -1,97 +0,0 @@ -/* - * Copyright (C) 2011 Ievgenii Nazaruk - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package nl.sogeti.android.gpstracker.googlemapfragment; - -import nl.sogeti.android.gpstracker.fragment.AbstractLoggerFragment; -import nl.sogeti.android.gpstracker.fragment.GoogleMapFragment; -import android.app.LocalActivityManager; -import android.os.Bundle; -import android.app.Fragment; -import android.util.Log; - -/** - * This is a fragment that will be used during transition from activities to fragments. - */ -@SuppressWarnings("deprecation") -public abstract class LocalActivityManagerFragment extends AbstractLoggerFragment -{ - - private static final String TAG = LocalActivityManagerFragment.class.getSimpleName(); - private static final String KEY_STATE_BUNDLE = "localActivityManagerState"; - - private LocalActivityManager mLocalActivityManager; - - protected LocalActivityManager getLocalActivityManager() - { - return mLocalActivityManager; - } - - @Override - public void onCreate(Bundle savedInstanceState) - { - super.onCreate(savedInstanceState); - Log.d(TAG, "onCreate(): " + getClass().getSimpleName()); - - Bundle state = null; - if (savedInstanceState != null) - { - state = savedInstanceState.getBundle(KEY_STATE_BUNDLE); - } - - mLocalActivityManager = new LocalActivityManager(getActivity(), true); - mLocalActivityManager.dispatchCreate(state); - } - - @Override - public void onSaveInstanceState(Bundle outState) - { - super.onSaveInstanceState(outState); - outState.putBundle(KEY_STATE_BUNDLE, mLocalActivityManager.saveInstanceState()); - } - - @Override - public void onResume() - { - super.onResume(); - Log.d(TAG, "onResume(): " + getClass().getSimpleName()); - mLocalActivityManager.dispatchResume(); - } - - @Override - public void onPause() - { - super.onPause(); - Log.d(TAG, "onPause(): " + getClass().getSimpleName()); - mLocalActivityManager.dispatchPause(getActivity().isFinishing()); - } - - @Override - public void onStop() - { - super.onStop(); - Log.d(TAG, "onStop(): " + getClass().getSimpleName()); - mLocalActivityManager.dispatchStop(); - } - - @Override - public void onDestroy() - { - super.onDestroy(); - Log.d(TAG, "onDestroy(): " + getClass().getSimpleName()); - mLocalActivityManager.dispatchDestroy(getActivity().isFinishing()); - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyGoogleMapActivity.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyGoogleMapActivity.java deleted file mode 100644 index 344b3281..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyGoogleMapActivity.java +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2011 Ievgenii Nazaruk - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package nl.sogeti.android.gpstracker.googlemapfragment; - -import nl.sogeti.android.gpstracker.R; -import android.os.Bundle; - -import com.google.android.maps.MapActivity; - -public class MyGoogleMapActivity extends MapActivity { - - @Override - protected void onCreate(Bundle icicle) { - super.onCreate(icicle); - setContentView(R.layout.fragment_googlemap); - } - - @Override - protected boolean isRouteDisplayed() - { - return true; - } - - @Override - protected boolean isLocationDisplayed() - { - return true; - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyMapquestMapActivity.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyMapquestMapActivity.java deleted file mode 100644 index ad21695f..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/googlemapfragment/MyMapquestMapActivity.java +++ /dev/null @@ -1,44 +0,0 @@ -/* - * Copyright (C) 2011 Ievgenii Nazaruk - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package nl.sogeti.android.gpstracker.googlemapfragment; - -import com.mapquest.android.maps.MapActivity; - -import nl.sogeti.android.gpstracker.R; -import android.os.Bundle; - - -public class MyMapquestMapActivity extends MapActivity { - - @Override - protected void onCreate(Bundle icicle) { - super.onCreate(icicle); - setContentView(R.layout.fragment_mapquest); - } - - @Override - protected boolean isLocationDisplayed() - { - return true; - } - - @Override - public boolean isRouteDisplayed() - { - return true; - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/util/Constants.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/util/Constants.java index 6793664a..ee91e602 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/util/Constants.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/util/Constants.java @@ -36,7 +36,6 @@ import android.os.Environment; import android.preference.PreferenceManager; - /** * Various application wide constants * @@ -65,18 +64,18 @@ public class Constants public static final String SERVICENAME = "nl.sogeti.android.gpstracker.intent.action.GPSLoggerService"; public static final String STREAMBROADCAST = "nl.sogeti.android.gpstracker.intent.action.STREAMBROADCAST"; public static final String UNITS = "units"; - public static final int UNITS_DEFAULT = 0; - public static final int UNITS_IMPERIAL = 1; - public static final int UNITS_METRIC = 2; - public static final int UNITS_NAUTIC = 3; - public static final int UNITS_METRICPACE = 4; + public static final int UNITS_DEFAULT = 0; + public static final int UNITS_IMPERIAL = 1; + public static final int UNITS_METRIC = 2; + public static final int UNITS_NAUTIC = 3; + public static final int UNITS_METRICPACE = 4; public static final int UNITS_IMPERIALPACE = 5; public static final int UNITS_IMPERIALSURFACE = 6; public static final int UNITS_METRICSURFACE = 7; - public static final String SDDIR_DIR = "SDDIR_DIR"; - public static final String DEFAULT_EXTERNAL_DIR = "/OpenGPSTracker/"; + public static final String SDDIR_DIR = "SDDIR_DIR"; + public static final String DEFAULT_EXTERNAL_DIR = "/OpenGPSTracker/"; public static final String TMPICTUREFILE_SUBPATH = "media_tmp.tmp"; - public static final Uri NAME_URI = Uri.parse( "content://" + GPStracking.AUTHORITY+".string" ); + public static final Uri NAME_URI = Uri.parse("content://" + GPStracking.AUTHORITY + ".string"); public static final int GOOGLE = 0; public static final int MAPQUEST = 2; public static final String JOGRUNNER_AUTH = "JOGRUNNER_AUTH"; @@ -84,14 +83,14 @@ public class Constants public static final String EXPORT_GPXTARGET = "EXPORT_GPXTARGET"; public static final String EXPORT_KMZTARGET = "EXPORT_KMZTARGET"; public static final String EXPORT_TXTTARGET = "EXPORT_TXTTARGET"; - + public static final double MIN_STATISTICS_SPEED = 1.0d; public static final int OSM_CLOUDMADE = 0; - public static final int OSM_MAKNIK = 1; - public static final int OSM_CYCLE = 2; + public static final int OSM_MAKNIK = 1; + public static final int OSM_CYCLE = 2; public static final String OSMBASEOVERLAY = "OSM_BASE_OVERLAY"; public static final String MAPFORGE_BASEOVERLAY = "MAPFORGE_BASEOVERLAY"; - + public static final String LOGGING_INTERVAL = "customprecisiontime"; public static final String LOGGING_DISTANCE = "customprecisiondistance"; public static final String STATUS_MONITOR = "gpsstatusmonitor"; @@ -99,17 +98,16 @@ public class Constants public static final String OSM_PASSWORD = "OSM_PASSWORD"; public static final String OSM_VISIBILITY = "OSM_VISIBILITY"; public static final String DATASOURCES_KEY = "DATASOURCES"; - + /** - * Broadcast intent action indicating that the logger service state has - * changed. Includes the logging state and its precision. - * + * Broadcast intent action indicating that the logger service state has changed. Includes the logging state and its precision. + * * @see #EXTRA_LOGGING_PRECISION * @see #EXTRA_LOGGING_STATE */ public static final String LOGGING_STATE_CHANGED_ACTION = "nl.sogeti.android.gpstracker.LOGGING_STATE_CHANGED"; - + /** * The precision the service is logging on. * @@ -118,10 +116,9 @@ public class Constants * @see #LOGGING_COARSE * @see #LOGGING_GLOBAL * @see #LOGGING_CUSTOM - * */ public static final String EXTRA_LOGGING_PRECISION = "nl.sogeti.android.gpstracker.EXTRA_LOGGING_PRECISION"; - + /** * The state the service is. * @@ -136,51 +133,50 @@ public class Constants * The state of the service is unknown */ public static final int UNKNOWN = -1; - + /** * The service is actively logging, it has requested location update from the location provider. */ public static final int LOGGING = 1; - + /** - * The service is not active, but can be resumed to become active and store location changes as - * part of a new segment of the current track. + * The service is not active, but can be resumed to become active and store location changes as part of a new segment of the current track. */ public static final int PAUSED = 2; - + /** * The service is not active and can not resume a current track but must start a new one when becoming active. */ public static final int STOPPED = 3; - + /** * The precision of the GPS provider is based on the custom time interval and distance. */ public static final int LOGGING_CUSTOM = 0; - + /** * The GPS location provider is asked to update every 10 seconds or every 5 meters. */ - public static final int LOGGING_FINE = 1; - + public static final int LOGGING_FINE = 1; + /** * The GPS location provider is asked to update every 15 seconds or every 10 meters. */ public static final int LOGGING_NORMAL = 2; - + /** * The GPS location provider is asked to update every 30 seconds or every 25 meters. */ public static final int LOGGING_COARSE = 3; - + /** * The radio location provider is asked to update every 5 minutes or every 500 meters. */ public static final int LOGGING_GLOBAL = 4; - - public static final String REQUEST_URL = "http://api.gobreadcrumbs.com/oauth/request_token"; - public static final String ACCESS_URL = "http://api.gobreadcrumbs.com/oauth/access_token"; - public static final String AUTHORIZE_URL = "http://api.gobreadcrumbs.com/oauth/authorize"; + + public static final String REQUEST_URL = "http://api.gobreadcrumbs.com/oauth/request_token"; + public static final String ACCESS_URL = "http://api.gobreadcrumbs.com/oauth/access_token"; + public static final String AUTHORIZE_URL = "http://api.gobreadcrumbs.com/oauth/authorize"; public static final String OSM_REQUEST_URL = "http://www.openstreetmap.org/oauth/request_token"; public static final String OSM_ACCESS_URL = "http://www.openstreetmap.org/oauth/access_token"; @@ -191,52 +187,50 @@ public class Constants public static final String OAUTH_CALLBACK_URL = OAUTH_CALLBACK_SCHEME + "://" + OAUTH_CALLBACK_HOST; public static final String NAME = "NAME"; - /** - * Based on preference return the SD-Card directory in which Open GPS Tracker creates and stores files - * shared tracks, + * Based on preference return the SD-Card directory in which Open GPS Tracker creates and stores files shared tracks, * * @param ctx - * @return + * @return */ - public static String getSdCardDirectory( Context ctx ) + public static String getSdCardDirectory(Context ctx) { // Read preference and ensure start and end with '/' symbol String dir = PreferenceManager.getDefaultSharedPreferences(ctx).getString(SDDIR_DIR, DEFAULT_EXTERNAL_DIR); - if( !dir.startsWith("/") ) + if (!dir.startsWith("/")) { dir = "/" + dir; } - if( !dir.endsWith("/") ) + if (!dir.endsWith("/")) { - dir = dir + "/" ; + dir = dir + "/"; } dir = Environment.getExternalStorageDirectory().getAbsolutePath() + dir; - + // If neither exists or can be created fall back to default File dirHandle = new File(dir); - if( !dirHandle.exists() && !dirHandle.mkdirs() ) + if (!dirHandle.exists() && !dirHandle.mkdirs()) { dir = Environment.getExternalStorageDirectory().getAbsolutePath() + DEFAULT_EXTERNAL_DIR; } return dir; } - - public static String getSdCardTmpFile( Context ctx ) + + public static String getSdCardTmpFile(Context ctx) { - String dir = getSdCardDirectory( ctx ) + TMPICTUREFILE_SUBPATH; + String dir = getSdCardDirectory(ctx) + TMPICTUREFILE_SUBPATH; return dir; } public static final String BREADCRUMBS_CONNECT = "breadcrumbs_connect"; - public static final int BREADCRUMBS_CONNECT_ITEM_VIEW_TYPE = 0; - public static final int BREADCRUMBS_BUNDLE_ITEM_VIEW_TYPE = 2; - public static final int BREADCRUMBS_TRACK_ITEM_VIEW_TYPE = 3; + public static final int BREADCRUMBS_CONNECT_ITEM_VIEW_TYPE = 0; + public static final int BREADCRUMBS_BUNDLE_ITEM_VIEW_TYPE = 2; + public static final int BREADCRUMBS_TRACK_ITEM_VIEW_TYPE = 3; public static final int BREADCRUMBS_ACTIVITY_ITEM_VIEW_TYPE = 4; public static final int SECTIONED_HEADER_ITEM_VIEW_TYPE = 0; public static final String BROADCAST_STREAM = "STREAM_ENABLED"; - + /** * A distance in meters */ @@ -246,12 +240,15 @@ public static String getSdCardTmpFile( Context ctx ) */ public static final String EXTRA_TIME = "nl.sogeti.android.gpstracker.EXTRA_TIME"; /** - * The location that pushed beyond the set minimum time or distance + * The location that pushed beyond the set minimum time or distance */ public static final String EXTRA_LOCATION = "nl.sogeti.android.gpstracker.EXTRA_LOCATION"; /** * The track that is being logged */ - public static final String EXTRA_TRACK = "nl.sogeti.android.gpstracker.EXTRA_TRACK"; - + public static final String EXTRA_TRACK = "nl.sogeti.android.gpstracker.EXTRA_TRACK"; + public static final String OSM_PROVIDER = "OSM"; + public static final String GOOGLE_PROVIDER = "GOOGLE"; + public static final String MAPQUEST_PROVIDER = "MAPQUEST"; + } diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java index e23de9d8..0bfeee49 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java @@ -41,7 +41,6 @@ import nl.sogeti.android.gpstracker.db.DatabaseHelper; import nl.sogeti.android.gpstracker.db.GPStracking; import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; import nl.sogeti.android.gpstracker.util.Constants; import nl.sogeti.android.gpstracker.util.Pair; import android.app.AlertDialog; @@ -569,7 +568,7 @@ else if (Intent.ACTION_VIEW.equals(queryAction)) if ("content".equals(uri.getScheme()) && GPStracking.AUTHORITY.equals(uri.getAuthority())) { // Got to VIEW a single track, instead hand it of to the LoggerMap - Intent notificationIntent = new Intent(this, LoggerMapFragmentInterface.class); + Intent notificationIntent = new Intent(this, LoggerMapActivity.class); notificationIntent.setData(uri); startActivity(notificationIntent); finish(); diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java deleted file mode 100644 index 8176323f..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/LoggerMapHelper.java +++ /dev/null @@ -1,1635 +0,0 @@ -/*------------------------------------------------------------------------------ - ** Ident: Delivery Center Java - ** Author: rene - ** Copyright: (c) Feb 26, 2012 Sogeti Nederland B.V. All Rights Reserved. - **------------------------------------------------------------------------------ - ** Sogeti Nederland B.V. | No part of this file may be reproduced - ** Distributed Software Engineering | or transmitted in any form or by any - ** Lange Dreef 17 | means, electronic or mechanical, for the - ** 4131 NJ Vianen | purpose, without the express written - ** The Netherlands | permission of the copyright holder. - *------------------------------------------------------------------------------ - */ -package nl.sogeti.android.gpstracker.viewer.map; - -import java.util.concurrent.Semaphore; - -import nl.sogeti.android.gpstracker.R; -import nl.sogeti.android.gpstracker.actions.InsertNote; -import nl.sogeti.android.gpstracker.actions.ShareTrack; -import nl.sogeti.android.gpstracker.actions.Statistics; -import nl.sogeti.android.gpstracker.activity.ControlTrackingActivity; -import nl.sogeti.android.gpstracker.activity.LoggerMapActivity; -import nl.sogeti.android.gpstracker.db.GPStracking.Media; -import nl.sogeti.android.gpstracker.db.GPStracking.Segments; -import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; -import nl.sogeti.android.gpstracker.db.GPStracking.Waypoints; -import nl.sogeti.android.gpstracker.fragment.ControlTrackingFragment; -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; -import nl.sogeti.android.gpstracker.logger.GPSLoggerServiceManager; -import nl.sogeti.android.gpstracker.util.Constants; -import nl.sogeti.android.gpstracker.util.SlidingIndicatorView; -import nl.sogeti.android.gpstracker.util.UnitsI18n; -import nl.sogeti.android.gpstracker.viewer.About; -import nl.sogeti.android.gpstracker.viewer.ApplicationPreferenceActivity; -import nl.sogeti.android.gpstracker.viewer.TrackList; -import nl.sogeti.android.gpstracker.viewer.map.overlay.BitmapSegmentsOverlay; -import nl.sogeti.android.gpstracker.viewer.map.overlay.SegmentRendering; -import android.app.Activity; -import android.app.AlertDialog; -import android.app.AlertDialog.Builder; -import android.app.Dialog; -import android.content.ContentResolver; -import android.content.ContentUris; -import android.content.Context; -import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; -import android.content.Intent; -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; -import android.content.SharedPreferences.OnSharedPreferenceChangeListener; -import android.database.ContentObserver; -import android.database.Cursor; -import android.graphics.Bitmap; -import android.location.Location; -import android.location.LocationManager; -import android.net.Uri; -import android.os.Bundle; -import android.os.Handler; -import android.os.Looper; -import android.os.PowerManager; -import android.os.PowerManager.WakeLock; -import android.preference.PreferenceManager; -import android.util.Log; -import android.view.ContextMenu; -import android.view.KeyEvent; -import android.view.LayoutInflater; -import android.view.Menu; -import android.view.MenuItem; -import android.view.View; -import android.widget.AdapterView; -import android.widget.AdapterView.OnItemSelectedListener; -import android.widget.BaseAdapter; -import android.widget.CheckBox; -import android.widget.CompoundButton; -import android.widget.CompoundButton.OnCheckedChangeListener; -import android.widget.Gallery; -import android.widget.RadioButton; -import android.widget.RadioGroup; -import android.widget.TextView; - -import com.google.android.maps.GeoPoint; - -/** - * ???? - * - * @version $Id:$ - * @author rene (c) Feb 26, 2012, Sogeti B.V. - */ -public class LoggerMapHelper -{ - - public static final String OSM_PROVIDER = "OSM"; - public static final String GOOGLE_PROVIDER = "GOOGLE"; - public static final String MAPQUEST_PROVIDER = "MAPQUEST"; - - private static final String INSTANCE_E6LONG = "e6long"; - private static final String INSTANCE_E6LAT = "e6lat"; - private static final String INSTANCE_ZOOM = "zoom"; - private static final String INSTANCE_AVGSPEED = "averagespeed"; - private static final String INSTANCE_HEIGHT = "averageheight"; - private static final String INSTANCE_TRACK = "track"; - private static final String INSTANCE_SPEED = "speed"; - private static final String INSTANCE_ALTITUDE = "altitude"; - private static final String INSTANCE_DISTANCE = "distance"; - - private static final int ZOOM_LEVEL = 16; - // MENU'S - private static final int MENU_SETTINGS = 1; - private static final int MENU_TRACKING = 2; - private static final int MENU_TRACKLIST = 3; - private static final int MENU_STATS = 4; - private static final int MENU_ABOUT = 5; - private static final int MENU_LAYERS = 6; - private static final int MENU_NOTE = 7; - private static final int MENU_SHARE = 13; - private static final int MENU_CONTRIB = 14; - private static final int DIALOG_NOTRACK = 24; - private static final int DIALOG_LAYERS = 31; - private static final int DIALOG_URIS = 34; - private static final int DIALOG_CONTRIB = 35; - private static final String TAG = "OGT.LoggerMap"; - - private double mAverageSpeed = 33.33d / 3d; - private double mAverageHeight = 33.33d / 3d; - private long mTrackId = -1; - private long mLastSegment = -1; - private UnitsI18n mUnits; - private WakeLock mWakeLock = null; - private SharedPreferences mSharedPreferences; - private GPSLoggerServiceManager mLoggerServiceManager; - private SegmentRendering mLastSegmentOverlay; - private BaseAdapter mMediaAdapter; - - private Handler mHandler; - - private ContentObserver mTrackSegmentsObserver; - private ContentObserver mSegmentWaypointsObserver; - private ContentObserver mTrackMediasObserver; - private DialogInterface.OnClickListener mNoTrackDialogListener; - private OnItemSelectedListener mGalerySelectListener; - private Uri mSelected; - private OnClickListener mNoteSelectDialogListener; - private OnCheckedChangeListener mCheckedChangeListener; - private android.widget.RadioGroup.OnCheckedChangeListener mGroupCheckedChangeListener; - private OnSharedPreferenceChangeListener mSharedPreferenceChangeListener; - private UnitsI18n.UnitsChangeListener mUnitsChangeListener; - - /** - * Run after the ServiceManager completes the binding to the remote service - */ - private Runnable mServiceConnected; - private Runnable speedCalculator; - private Runnable heightCalculator; - - private LoggerMapFragmentInterface mLoggerMap; - private BitmapSegmentsOverlay mBitmapSegmentsOverlay; - private float mSpeed; - private double mAltitude; - private float mDistance; - private int mZoom; - private GeoPoint mStoredPoint; - - public LoggerMapHelper(LoggerMapFragmentInterface loggerMap) - { - mLoggerMap = loggerMap; - } - - - public void onCreateView() - { - mLoggerMap.setDrawingCacheEnabled(true); - - } - - /** - * Called when the activity is first created. - */ - public void onCreate(Bundle load) - { - mUnits = new UnitsI18n(mLoggerMap.getActivity()); - mLoggerServiceManager = new GPSLoggerServiceManager(mLoggerMap.getActivity()); - - final Semaphore calulatorSemaphore = new Semaphore(0); - Thread calulator = new Thread("OverlayCalculator") - { - @Override - public void run() - { - Looper.prepare(); - mHandler = new Handler(); - calulatorSemaphore.release(); - Looper.loop(); - } - }; - calulator.start(); - try - { - calulatorSemaphore.acquire(); - } - catch (InterruptedException e) - { - Log.e(TAG, "Failed waiting for a semaphore", e); - } - mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(mLoggerMap.getActivity()); - - mBitmapSegmentsOverlay = new BitmapSegmentsOverlay(mLoggerMap, mHandler); - createListeners(); - onRestoreInstanceState(load); - } - - public void onResume() - { - mLoggerServiceManager.startup(mLoggerMap.getActivity(), mServiceConnected); - - mSharedPreferences.registerOnSharedPreferenceChangeListener(mSharedPreferenceChangeListener); - mUnits.setUnitsChangeListener(mUnitsChangeListener); - updateTitleBar(); - updateBlankingBehavior(); - - if (mTrackId >= 0) - { - ContentResolver resolver = mLoggerMap.getActivity().getContentResolver(); - Uri trackUri = Uri.withAppendedPath(Tracks.CONTENT_URI, mTrackId + "/segments"); - Uri lastSegmentUri = Uri.withAppendedPath(Tracks.CONTENT_URI, mTrackId + "/segments/" + mLastSegment + "/waypoints"); - Uri mediaUri = ContentUris.withAppendedId(Media.CONTENT_URI, mTrackId); - - resolver.unregisterContentObserver(this.mTrackSegmentsObserver); - resolver.unregisterContentObserver(this.mSegmentWaypointsObserver); - resolver.unregisterContentObserver(this.mTrackMediasObserver); - resolver.registerContentObserver(trackUri, false, this.mTrackSegmentsObserver); - resolver.registerContentObserver(lastSegmentUri, true, this.mSegmentWaypointsObserver); - resolver.registerContentObserver(mediaUri, true, this.mTrackMediasObserver); - } - mLoggerMap.updateOverlays(); - updateDataOverlays(); - - updateSpeedColoring(); - updateSpeedDisplayVisibility(); - updateAltitudeDisplayVisibility(); - updateDistanceDisplayVisibility(); - updateCompassDisplayVisibility(); - updateLocationDisplayVisibility(); - updateTrackNumbers(); - - - mLoggerMap.setZoom(mZoom); - moveToTrack(mTrackId, true); - mLoggerMap.animateTo(mStoredPoint); - - mLoggerMap.executePostponedActions(); - } - - public void onPause() - { - if (this.mWakeLock != null && this.mWakeLock.isHeld()) - { - this.mWakeLock.release(); - Log.w(TAG, "onPause(): Released lock to keep screen on!"); - } - mLoggerMap.clearOverlays(); - mBitmapSegmentsOverlay.clearSegments(); - mLastSegmentOverlay = null; - ContentResolver resolver = mLoggerMap.getActivity().getContentResolver(); - resolver.unregisterContentObserver(this.mTrackSegmentsObserver); - resolver.unregisterContentObserver(this.mSegmentWaypointsObserver); - resolver.unregisterContentObserver(this.mTrackMediasObserver); - mSharedPreferences.unregisterOnSharedPreferenceChangeListener(this.mSharedPreferenceChangeListener); - mUnits.setUnitsChangeListener(null); - mLoggerMap.disableMyLocation(); - mLoggerMap.disableCompass(); - this.mLoggerServiceManager.shutdown(mLoggerMap.getActivity()); - } - - public void onDestroy() - { - mLoggerMap.clearOverlays(); - mHandler.post(new Runnable() - { - @Override - public void run() - { - Looper.myLooper().quit(); - } - }); - - if (mWakeLock != null && mWakeLock.isHeld()) - { - mWakeLock.release(); - Log.w(TAG, "onDestroy(): Released lock to keep screen on!"); - } - if (mLoggerServiceManager.getLoggingState() == Constants.STOPPED) - { - mLoggerMap.getActivity().stopService(new Intent(Constants.SERVICENAME)); - } - mUnits = null; - } - - public void onNewIntent(Intent newIntent) - { - Uri data = newIntent.getData(); - if (data != null) - { - moveToTrack(Long.parseLong(data.getLastPathSegment()), true); - } - } - - public void onRestoreInstanceState(Bundle load) - { - Uri data = mLoggerMap.getActivity().getIntent().getData(); - if (load != null && load.containsKey(INSTANCE_TRACK)) // 1st method: track from a previous instance of this activity - { - long loadTrackId = load.getLong(INSTANCE_TRACK); - mTrackId = loadTrackId; - if (load.containsKey(INSTANCE_AVGSPEED)) - { - mAverageSpeed = load.getDouble(INSTANCE_AVGSPEED); - } - if (load.containsKey(INSTANCE_HEIGHT)) - { - mAverageHeight = load.getDouble(INSTANCE_HEIGHT); - } - if( load.containsKey(INSTANCE_SPEED)) - { - mSpeed = load.getFloat(INSTANCE_SPEED); - } - if( load.containsKey(INSTANCE_ALTITUDE)) - { - mAltitude = load.getDouble(INSTANCE_HEIGHT); - } - if( load.containsKey(INSTANCE_DISTANCE)) - { - mDistance = load.getFloat(INSTANCE_DISTANCE); - } - } - else if (data != null) // 2nd method: track ordered to make - { - long loadTrackId = Long.parseLong(data.getLastPathSegment()); - mTrackId = loadTrackId; - } - else - // 3rd method: just try the last track - { - moveToLastTrack(); - } - - if (load != null && load.containsKey(INSTANCE_ZOOM)) - { - mZoom = load.getInt(INSTANCE_ZOOM); - } - else - { - mZoom = ZOOM_LEVEL; - } - - if (load != null && load.containsKey(INSTANCE_E6LAT) && load.containsKey(INSTANCE_E6LONG)) - { - mStoredPoint = new GeoPoint(load.getInt(INSTANCE_E6LAT), load.getInt(INSTANCE_E6LONG)); - } - else - { - mStoredPoint = getLastTrackPoint(); - } - } - - public void onSaveInstanceState(Bundle save) - { - save.putLong(INSTANCE_TRACK, this.mTrackId); - save.putDouble(INSTANCE_AVGSPEED, mAverageSpeed); - save.putDouble(INSTANCE_HEIGHT, mAverageHeight); - save.putInt(INSTANCE_ZOOM, mLoggerMap.getZoomLevel()); - save.putFloat(INSTANCE_SPEED, mSpeed); - save.putDouble(INSTANCE_ALTITUDE, mAltitude); - save.putFloat(INSTANCE_DISTANCE, mDistance); - GeoPoint point = mLoggerMap.getMapCenter(); - save.putInt(INSTANCE_E6LAT, point.getLatitudeE6()); - save.putInt(INSTANCE_E6LONG, point.getLongitudeE6()); - } - - public boolean onKeyDown(int keyCode, KeyEvent event) - { - boolean propagate = true; - switch (keyCode) - { - case KeyEvent.KEYCODE_T: - propagate = mLoggerMap.zoomIn(); - propagate = false; - break; - case KeyEvent.KEYCODE_G: - propagate = mLoggerMap.zoomOut(); - propagate = false; - break; - case KeyEvent.KEYCODE_F: - moveToTrack(this.mTrackId - 1, true); - propagate = false; - break; - case KeyEvent.KEYCODE_H: - moveToTrack(this.mTrackId + 1, true); - propagate = false; - break; - } - return propagate; - } - - private void setSpeedOverlay(boolean b) - { - Editor editor = mSharedPreferences.edit(); - editor.putBoolean(Constants.SPEED, b); - editor.commit(); - } - - private void setAltitudeOverlay(boolean b) - { - Editor editor = mSharedPreferences.edit(); - editor.putBoolean(Constants.ALTITUDE, b); - editor.commit(); - } - - private void setDistanceOverlay(boolean b) - { - Editor editor = mSharedPreferences.edit(); - editor.putBoolean(Constants.DISTANCE, b); - editor.commit(); - } - - private void setCompassOverlay(boolean b) - { - Editor editor = mSharedPreferences.edit(); - editor.putBoolean(Constants.COMPASS, b); - editor.commit(); - } - - private void setLocationOverlay(boolean b) - { - Editor editor = mSharedPreferences.edit(); - editor.putBoolean(Constants.LOCATION, b); - editor.commit(); - } - - private void setOsmBaseOverlay(int b) - { - Editor editor = mSharedPreferences.edit(); - editor.putInt(Constants.OSMBASEOVERLAY, b); - editor.commit(); - } - - private void createListeners() - { - /******************************************************* - * 8 Runnable listener actions - */ - speedCalculator = new Runnable() - { - @Override - public void run() - { - double avgspeed = 0.0; - ContentResolver resolver = mLoggerMap.getActivity().getContentResolver(); - Cursor waypointsCursor = null; - try - { - waypointsCursor = resolver.query(Uri.withAppendedPath(Tracks.CONTENT_URI, LoggerMapHelper.this.mTrackId + "/waypoints"), new String[] { - "avg(" + Waypoints.SPEED + ")", "max(" + Waypoints.SPEED + ")" }, null, null, null); - - if (waypointsCursor != null && waypointsCursor.moveToLast()) - { - double average = waypointsCursor.getDouble(0); - double maxBasedAverage = waypointsCursor.getDouble(1) / 2; - avgspeed = Math.min(average, maxBasedAverage); - } - if (avgspeed < 2) - { - avgspeed = 5.55d / 2; - } - } - finally - { - if (waypointsCursor != null) - { - waypointsCursor.close(); - } - } - mAverageSpeed = avgspeed; - mLoggerMap.getActivity().runOnUiThread(new Runnable() - { - @Override - public void run() - { - updateSpeedColoring(); - } - }); - } - }; - heightCalculator = new Runnable() - { - @Override - public void run() - { - double avgHeight = 0.0; - ContentResolver resolver = mLoggerMap.getActivity().getContentResolver(); - Cursor waypointsCursor = null; - try - { - waypointsCursor = resolver.query(Uri.withAppendedPath(Tracks.CONTENT_URI, LoggerMapHelper.this.mTrackId + "/waypoints"), new String[] { - "avg(" + Waypoints.ALTITUDE + ")", "max(" + Waypoints.ALTITUDE + ")" }, null, null, null); - - if (waypointsCursor != null && waypointsCursor.moveToLast()) - { - double average = waypointsCursor.getDouble(0); - double maxBasedAverage = waypointsCursor.getDouble(1) / 2; - avgHeight = Math.min(average, maxBasedAverage); - } - } - finally - { - if (waypointsCursor != null) - { - waypointsCursor.close(); - } - } - mAverageHeight = avgHeight; - mLoggerMap.getActivity().runOnUiThread(new Runnable() - { - @Override - public void run() - { - updateSpeedColoring(); - } - }); - } - }; - mServiceConnected = new Runnable() - { - @Override - public void run() - { - updateBlankingBehavior(); - } - }; - /******************************************************* - * 8 Various dialog listeners - */ - mGalerySelectListener = new AdapterView.OnItemSelectedListener() - { - @Override - public void onItemSelected(AdapterView< ? > parent, View view, int pos, long id) - { - mSelected = (Uri) parent.getSelectedItem(); - } - - @Override - public void onNothingSelected(AdapterView< ? > arg0) - { - mSelected = null; - } - }; - mNoteSelectDialogListener = new DialogInterface.OnClickListener() - { - - @Override - public void onClick(DialogInterface dialog, int which) - { - SegmentRendering.handleMedia(mLoggerMap.getActivity(), mSelected); - mSelected = null; - } - }; - mGroupCheckedChangeListener = new android.widget.RadioGroup.OnCheckedChangeListener() - { - @Override - public void onCheckedChanged(RadioGroup group, int checkedId) - { - switch (checkedId) - { - case R.id.layer_osm_cloudmade: - setOsmBaseOverlay(Constants.OSM_CLOUDMADE); - break; - case R.id.layer_osm_maknik: - setOsmBaseOverlay(Constants.OSM_MAKNIK); - break; - case R.id.layer_osm_bicycle: - setOsmBaseOverlay(Constants.OSM_CYCLE); - break; - default: - mLoggerMap.onLayerCheckedChanged(checkedId, true); - break; - } - } - }; - mCheckedChangeListener = new OnCheckedChangeListener() - { - @Override - public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) - { - int checkedId; - checkedId = buttonView.getId(); - switch (checkedId) - { - case R.id.layer_speed: - setSpeedOverlay(isChecked); - break; - case R.id.layer_altitude: - setAltitudeOverlay(isChecked); - break; - case R.id.layer_distance: - setDistanceOverlay(isChecked); - break; - case R.id.layer_compass: - setCompassOverlay(isChecked); - break; - case R.id.layer_location: - setLocationOverlay(isChecked); - break; - default: - mLoggerMap.onLayerCheckedChanged(checkedId, isChecked); - break; - } - } - }; - mNoTrackDialogListener = new DialogInterface.OnClickListener() - { - @Override - public void onClick(DialogInterface dialog, int which) - { - // Log.d( TAG, "mNoTrackDialogListener" + which); - Intent tracklistIntent = new Intent(mLoggerMap.getActivity(), TrackList.class); - tracklistIntent.putExtra(Tracks._ID, mTrackId); - mLoggerMap.getActivity().startActivityForResult(tracklistIntent, MENU_TRACKLIST); - } - }; - /** - * Listeners to events outside this mapview - */ - mSharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() - { - @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) - { - if (key.equals(Constants.TRACKCOLORING)) - { - mAverageSpeed = 0.0; - mAverageHeight = 0.0; - updateSpeedColoring(); - } - else if (key.equals(Constants.DISABLEBLANKING) || key.equals(Constants.DISABLEDIMMING)) - { - updateBlankingBehavior(); - } - else if (key.equals(Constants.SPEED)) - { - updateSpeedDisplayVisibility(); - } - else if (key.equals(Constants.ALTITUDE)) - { - updateAltitudeDisplayVisibility(); - } - else if (key.equals(Constants.DISTANCE)) - { - updateDistanceDisplayVisibility(); - } - else if (key.equals(Constants.COMPASS)) - { - updateCompassDisplayVisibility(); - } - else if (key.equals(Constants.LOCATION)) - { - updateLocationDisplayVisibility(); - } - else if (key.equals(Constants.MAPPROVIDER)) - { - LoggerMapActivity activity = (LoggerMapActivity) mLoggerMap.getActivity(); - activity.updateMapProvider(); - } - else if (key.equals(Constants.OSMBASEOVERLAY)) - { - mLoggerMap.updateOverlays(); - } - else - { - mLoggerMap.onSharedPreferenceChanged(sharedPreferences, key); - } - } - }; - mTrackMediasObserver = new ContentObserver(new Handler()) - { - @Override - public void onChange(boolean selfUpdate) - { - if (!selfUpdate) - { - if (mLastSegmentOverlay != null) - { - mLastSegmentOverlay.calculateMedia(); - } - } - else - { - Log.w(TAG, "mTrackMediasObserver skipping change on " + mLastSegment); - } - } - }; - mTrackSegmentsObserver = new ContentObserver(new Handler()) - { - @Override - public void onChange(boolean selfUpdate) - { - if (!selfUpdate) - { - updateDataOverlays(); - } - else - { - Log.w(TAG, "mTrackSegmentsObserver skipping change on " + mLastSegment); - } - } - }; - mSegmentWaypointsObserver = new ContentObserver(new Handler()) - { - @Override - public void onChange(boolean selfUpdate) - { - if (!selfUpdate) - { - updateTrackNumbers(); - if (mLastSegmentOverlay != null) - { - moveActiveViewWindow(); - updateMapProviderAdministration(mLoggerMap.getDataSourceId()); - } - else - { - Log.e(TAG, "Error the last segment changed but it is not on screen! " + mLastSegment); - } - } - else - { - Log.w(TAG, "mSegmentWaypointsObserver skipping change on " + mLastSegment); - } - } - }; - mUnitsChangeListener = new UnitsI18n.UnitsChangeListener() - { - @Override - public void onUnitsChange() - { - mAverageSpeed = 0.0; - mAverageHeight = 0.0; - updateTrackNumbers(); - updateSpeedColoring(); - } - }; - } - - public void onCreateOptionsMenu(Menu menu) - { - menu.add(ContextMenu.NONE, MENU_TRACKING, ContextMenu.NONE, R.string.menu_tracking).setIcon(R.drawable.ic_menu_movie).setAlphabeticShortcut('T'); - menu.add(ContextMenu.NONE, MENU_LAYERS, ContextMenu.NONE, R.string.menu_showLayers).setIcon(R.drawable.ic_menu_mapmode).setAlphabeticShortcut('L'); - menu.add(ContextMenu.NONE, MENU_NOTE, ContextMenu.NONE, R.string.menu_insertnote).setIcon(R.drawable.ic_menu_myplaces); - - menu.add(ContextMenu.NONE, MENU_STATS, ContextMenu.NONE, R.string.menu_statistics).setIcon(R.drawable.ic_menu_picture).setAlphabeticShortcut('S'); - menu.add(ContextMenu.NONE, MENU_SHARE, ContextMenu.NONE, R.string.menu_shareTrack).setIcon(R.drawable.ic_menu_share).setAlphabeticShortcut('I'); - // More - - menu.add(ContextMenu.NONE, MENU_TRACKLIST, ContextMenu.NONE, R.string.menu_tracklist).setIcon(R.drawable.ic_menu_show_list).setAlphabeticShortcut('P'); - menu.add(ContextMenu.NONE, MENU_SETTINGS, ContextMenu.NONE, R.string.menu_settings).setIcon(R.drawable.ic_menu_preferences).setAlphabeticShortcut('C'); - menu.add(ContextMenu.NONE, MENU_ABOUT, ContextMenu.NONE, R.string.menu_about).setIcon(R.drawable.ic_menu_info_details).setAlphabeticShortcut('A'); - menu.add(ContextMenu.NONE, MENU_CONTRIB, ContextMenu.NONE, R.string.menu_contrib).setIcon(R.drawable.ic_menu_allfriends); - } - - public void onPrepareOptionsMenu(Menu menu) - { - MenuItem noteMenu = menu.findItem(MENU_NOTE); - noteMenu.setEnabled(mLoggerServiceManager.isMediaPrepared()); - - MenuItem shareMenu = menu.findItem(MENU_SHARE); - shareMenu.setEnabled(mTrackId >= 0); - } - - public boolean onOptionsItemSelected(MenuItem item) - { - boolean handled = false; - - Uri trackUri; - Intent intent; - switch (item.getItemId()) - { - case MENU_TRACKING: - intent = new Intent(mLoggerMap.getActivity(), ControlTrackingActivity.class); - mLoggerMap.getActivity().startActivityForResult(intent, MENU_TRACKING); - handled = true; - break; - case MENU_LAYERS: - mLoggerMap.getActivity().showDialog(DIALOG_LAYERS); - handled = true; - break; - case MENU_NOTE: - intent = new Intent(mLoggerMap.getActivity(), InsertNote.class); - mLoggerMap.getActivity().startActivityForResult(intent, MENU_NOTE); - handled = true; - break; - case MENU_SETTINGS: - intent = new Intent(mLoggerMap.getActivity(), ApplicationPreferenceActivity.class); - mLoggerMap.getActivity().startActivity(intent); - handled = true; - break; - case MENU_TRACKLIST: - intent = new Intent(mLoggerMap.getActivity(), TrackList.class); - intent.putExtra(Tracks._ID, this.mTrackId); - mLoggerMap.getActivity().startActivityForResult(intent, MENU_TRACKLIST); - handled = true; - break; - case MENU_STATS: - if (this.mTrackId >= 0) - { - intent = new Intent(mLoggerMap.getActivity(), Statistics.class); - trackUri = ContentUris.withAppendedId(Tracks.CONTENT_URI, mTrackId); - intent.setData(trackUri); - mLoggerMap.getActivity().startActivity(intent); - break; - } - else - { - mLoggerMap.getActivity().showDialog(DIALOG_NOTRACK); - } - handled = true; - break; - case MENU_ABOUT: - intent = new Intent(mLoggerMap.getActivity(), About.class); - mLoggerMap.getActivity().startActivity(intent); - break; - case MENU_SHARE: - intent = new Intent(Intent.ACTION_RUN); - trackUri = ContentUris.withAppendedId(Tracks.CONTENT_URI, mTrackId); - intent.setDataAndType(trackUri, Tracks.CONTENT_ITEM_TYPE); - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - Bitmap bm = mLoggerMap.getDrawingCache(); - Uri screenStreamUri = ShareTrack.storeScreenBitmap(bm); - intent.putExtra(Intent.EXTRA_STREAM, screenStreamUri); - mLoggerMap.getActivity().startActivityForResult(Intent.createChooser(intent, mLoggerMap.getActivity().getString(R.string.share_track)), MENU_SHARE); - handled = true; - break; - case MENU_CONTRIB: - mLoggerMap.getActivity().showDialog(DIALOG_CONTRIB); - default: - handled = false; - break; - } - return handled; - } - - protected Dialog onCreateDialog(int id) - { - Dialog dialog = null; - LayoutInflater factory = null; - View view = null; - Builder builder = null; - switch (id) - { - case DIALOG_LAYERS: - builder = new AlertDialog.Builder(mLoggerMap.getActivity()); - factory = LayoutInflater.from(mLoggerMap.getActivity()); - view = factory.inflate(R.layout.layerdialog, null); - - CheckBox traffic = (CheckBox) view.findViewById(R.id.layer_traffic); - CheckBox speed = (CheckBox) view.findViewById(R.id.layer_speed); - CheckBox altitude = (CheckBox) view.findViewById(R.id.layer_altitude); - CheckBox distance = (CheckBox) view.findViewById(R.id.layer_distance); - CheckBox compass = (CheckBox) view.findViewById(R.id.layer_compass); - CheckBox location = (CheckBox) view.findViewById(R.id.layer_location); - - ((RadioGroup) view.findViewById(R.id.google_backgrounds)).setOnCheckedChangeListener(mGroupCheckedChangeListener); - ((RadioGroup) view.findViewById(R.id.osm_backgrounds)).setOnCheckedChangeListener(mGroupCheckedChangeListener); - - traffic.setOnCheckedChangeListener(mCheckedChangeListener); - speed.setOnCheckedChangeListener(mCheckedChangeListener); - altitude.setOnCheckedChangeListener(mCheckedChangeListener); - distance.setOnCheckedChangeListener(mCheckedChangeListener); - compass.setOnCheckedChangeListener(mCheckedChangeListener); - location.setOnCheckedChangeListener(mCheckedChangeListener); - - builder.setTitle(R.string.dialog_layer_title).setIcon(android.R.drawable.ic_dialog_map).setPositiveButton(R.string.btn_okay, null).setView(view); - dialog = builder.create(); - return dialog; - case DIALOG_NOTRACK: - builder = new AlertDialog.Builder(mLoggerMap.getActivity()); - builder.setTitle(R.string.dialog_notrack_title).setMessage(R.string.dialog_notrack_message).setIcon(android.R.drawable.ic_dialog_alert) - .setPositiveButton(R.string.btn_selecttrack, mNoTrackDialogListener).setNegativeButton(R.string.btn_cancel, null); - dialog = builder.create(); - return dialog; - case DIALOG_URIS: - builder = new AlertDialog.Builder(mLoggerMap.getActivity()); - factory = LayoutInflater.from(mLoggerMap.getActivity()); - view = factory.inflate(R.layout.mediachooser, null); - builder.setTitle(R.string.dialog_select_media_title).setMessage(R.string.dialog_select_media_message).setIcon(android.R.drawable.ic_dialog_alert) - .setNegativeButton(R.string.btn_cancel, null).setPositiveButton(R.string.btn_okay, mNoteSelectDialogListener).setView(view); - dialog = builder.create(); - return dialog; - case DIALOG_CONTRIB: - builder = new AlertDialog.Builder(mLoggerMap.getActivity()); - factory = LayoutInflater.from(mLoggerMap.getActivity()); - view = factory.inflate(R.layout.contrib, null); - TextView contribView = (TextView) view.findViewById(R.id.contrib_view); - contribView.setText(R.string.dialog_contrib_message); - builder.setTitle(R.string.dialog_contrib_title).setView(view).setIcon(android.R.drawable.ic_dialog_email) - .setPositiveButton(R.string.btn_okay, null); - dialog = builder.create(); - return dialog; - default: - return null; - } - } - - protected void onPrepareDialog(int id, Dialog dialog) - { - RadioButton satellite; - RadioButton regular; - RadioButton cloudmade; - RadioButton mapnik; - RadioButton cycle; - switch (id) - { - case DIALOG_LAYERS: - satellite = (RadioButton) dialog.findViewById(R.id.layer_google_satellite); - regular = (RadioButton) dialog.findViewById(R.id.layer_google_regular); - satellite.setChecked(mSharedPreferences.getBoolean(Constants.SATELLITE, false)); - regular.setChecked(!mSharedPreferences.getBoolean(Constants.SATELLITE, false)); - - int osmbase = mSharedPreferences.getInt(Constants.OSMBASEOVERLAY, 0); - cloudmade = (RadioButton) dialog.findViewById(R.id.layer_osm_cloudmade); - mapnik = (RadioButton) dialog.findViewById(R.id.layer_osm_maknik); - cycle = (RadioButton) dialog.findViewById(R.id.layer_osm_bicycle); - cloudmade.setChecked(osmbase == Constants.OSM_CLOUDMADE); - mapnik.setChecked(osmbase == Constants.OSM_MAKNIK); - cycle.setChecked(osmbase == Constants.OSM_CYCLE); - - ((CheckBox) dialog.findViewById(R.id.layer_traffic)).setChecked(mSharedPreferences.getBoolean(Constants.TRAFFIC, false)); - ((CheckBox) dialog.findViewById(R.id.layer_speed)).setChecked(mSharedPreferences.getBoolean(Constants.SPEED, false)); - ((CheckBox) dialog.findViewById(R.id.layer_altitude)).setChecked(mSharedPreferences.getBoolean(Constants.ALTITUDE, false)); - ((CheckBox) dialog.findViewById(R.id.layer_distance)).setChecked(mSharedPreferences.getBoolean(Constants.DISTANCE, false)); - ((CheckBox) dialog.findViewById(R.id.layer_compass)).setChecked(mSharedPreferences.getBoolean(Constants.COMPASS, false)); - ((CheckBox) dialog.findViewById(R.id.layer_location)).setChecked(mSharedPreferences.getBoolean(Constants.LOCATION, false)); - int provider = Integer.valueOf(mSharedPreferences.getString(Constants.MAPPROVIDER, "" + Constants.GOOGLE)).intValue(); - switch (provider) - { - case Constants.GOOGLE: - dialog.findViewById(R.id.google_backgrounds).setVisibility(View.VISIBLE); - dialog.findViewById(R.id.osm_backgrounds).setVisibility(View.GONE); - dialog.findViewById(R.id.shared_layers).setVisibility(View.VISIBLE); - dialog.findViewById(R.id.google_overlays).setVisibility(View.VISIBLE); - break; - default: - dialog.findViewById(R.id.osm_backgrounds).setVisibility(View.GONE); - dialog.findViewById(R.id.google_backgrounds).setVisibility(View.GONE); - dialog.findViewById(R.id.shared_layers).setVisibility(View.VISIBLE); - dialog.findViewById(R.id.google_overlays).setVisibility(View.GONE); - break; - } - break; - case DIALOG_URIS: - Gallery gallery = (Gallery) dialog.findViewById(R.id.gallery); - gallery.setAdapter(mMediaAdapter); - gallery.setOnItemSelectedListener(mGalerySelectListener); - default: - break; - } - } - - protected void onActivityResult(int requestCode, int resultCode, Intent intent) - { - Uri trackUri; - long trackId; - switch (requestCode) - { - case MENU_TRACKLIST: - if (resultCode == Activity.RESULT_OK) - { - trackUri = intent.getData(); - trackId = Long.parseLong(trackUri.getLastPathSegment()); - moveToTrack(trackId, true); - } - break; - case MENU_TRACKING: - if (resultCode == Activity.RESULT_OK) - { - trackUri = intent.getData(); - if (trackUri != null) - { - trackId = Long.parseLong(trackUri.getLastPathSegment()); - moveToTrack(trackId, true); - } - } - break; - case MENU_SHARE: - ShareTrack.clearScreenBitmap(); - break; - default: - Log.e(TAG, "Returned form unknow activity: " + requestCode); - break; - } - } - - private void updateTitleBar() - { - ContentResolver resolver = mLoggerMap.getActivity().getContentResolver(); - Cursor trackCursor = null; - try - { - trackCursor = resolver.query(ContentUris.withAppendedId(Tracks.CONTENT_URI, this.mTrackId), new String[] { Tracks.NAME }, null, null, null); - if (trackCursor != null && trackCursor.moveToLast()) - { - String trackName = trackCursor.getString(0); - mLoggerMap.getActivity().setTitle(mLoggerMap.getActivity().getString(R.string.app_name) + ": " + trackName); - } - } - finally - { - if (trackCursor != null) - { - trackCursor.close(); - } - } - } - - protected void updateMapProviderAdministration(String provider) - { - mLoggerServiceManager.storeDerivedDataSource(provider); - } - - private void updateBlankingBehavior() - { - boolean disableblanking = mSharedPreferences.getBoolean(Constants.DISABLEBLANKING, false); - boolean disabledimming = mSharedPreferences.getBoolean(Constants.DISABLEDIMMING, false); - if (disableblanking) - { - if (mWakeLock == null) - { - PowerManager pm = (PowerManager) mLoggerMap.getActivity().getSystemService(Context.POWER_SERVICE); - if (disabledimming) - { - mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, TAG); - } - else - { - mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, TAG); - } - } - if (mLoggerServiceManager.getLoggingState() == Constants.LOGGING && !mWakeLock.isHeld()) - { - mWakeLock.acquire(); - Log.w(TAG, "Acquired lock to keep screen on!"); - } - } - } - - private void updateSpeedColoring() - { - int trackColoringMethod = Integer.valueOf(mSharedPreferences.getString(Constants.TRACKCOLORING, "3")).intValue(); - View speedbar = mLoggerMap.getSpeedbar(); - SlidingIndicatorView scaleIndicator = mLoggerMap.getScaleIndicatorView(); - - TextView[] speedtexts = mLoggerMap.getSpeedTextViews(); - switch (trackColoringMethod) - { - case SegmentRendering.DRAW_MEASURED: - case SegmentRendering.DRAW_CALCULATED: - // mAverageSpeed is set to 0 if unknown or to trigger an recalculation here - if (mAverageSpeed == 0.0) - { - mHandler.removeCallbacks(speedCalculator); - mHandler.post(speedCalculator); - } - else - { - drawSpeedTexts(); - speedtexts = mLoggerMap.getSpeedTextViews(); - speedbar.setVisibility(View.VISIBLE); - scaleIndicator.setVisibility(View.VISIBLE); - for (int i = 0; i < speedtexts.length; i++) - { - speedtexts[i].setVisibility(View.VISIBLE); - } - } - break; - case SegmentRendering.DRAW_DOTS: - case SegmentRendering.DRAW_GREEN: - case SegmentRendering.DRAW_RED: - speedbar.setVisibility(View.INVISIBLE); - scaleIndicator.setVisibility(View.INVISIBLE); - for (int i = 0; i < speedtexts.length; i++) - { - speedtexts[i].setVisibility(View.INVISIBLE); - } - break; - case SegmentRendering.DRAW_HEIGHT: - if (mAverageHeight == 0.0) - { - mHandler.removeCallbacks(heightCalculator); - mHandler.post(heightCalculator); - } - else - { - drawHeightTexts(); - speedtexts = mLoggerMap.getSpeedTextViews(); - speedbar.setVisibility(View.VISIBLE); - scaleIndicator.setVisibility(View.VISIBLE); - for (int i = 0; i < speedtexts.length; i++) - { - speedtexts[i].setVisibility(View.VISIBLE); - } - } - break; - default: - break; - } - mBitmapSegmentsOverlay.setTrackColoringMethod(trackColoringMethod, mAverageSpeed, mAverageHeight); - } - - private void updateSpeedDisplayVisibility() - { - boolean showspeed = mSharedPreferences.getBoolean(Constants.SPEED, false); - TextView lastGPSSpeedView = mLoggerMap.getSpeedTextView(); - if (showspeed) - { - lastGPSSpeedView.setVisibility(View.VISIBLE); - } - else - { - lastGPSSpeedView.setVisibility(View.GONE); - } - updateScaleDisplayVisibility(); - } - - private void updateAltitudeDisplayVisibility() - { - boolean showaltitude = mSharedPreferences.getBoolean(Constants.ALTITUDE, false); - TextView lastGPSAltitudeView = mLoggerMap.getAltitideTextView(); - if (showaltitude) - { - lastGPSAltitudeView.setVisibility(View.VISIBLE); - } - else - { - lastGPSAltitudeView.setVisibility(View.GONE); - } - updateScaleDisplayVisibility(); - } - - private void updateScaleDisplayVisibility() - { - SlidingIndicatorView scaleIndicator = mLoggerMap.getScaleIndicatorView(); - boolean showspeed = mSharedPreferences.getBoolean(Constants.SPEED, false); - boolean showaltitude = mSharedPreferences.getBoolean(Constants.ALTITUDE, false); - int trackColoringMethod = Integer.valueOf(mSharedPreferences.getString(Constants.TRACKCOLORING, "3")).intValue(); - switch (trackColoringMethod) - { - case SegmentRendering.DRAW_MEASURED: - case SegmentRendering.DRAW_CALCULATED: - if( showspeed ) - { - scaleIndicator.setVisibility(View.VISIBLE); - } - else - { - scaleIndicator.setVisibility(View.GONE); - } - break; - case SegmentRendering.DRAW_HEIGHT: - default: - if( showaltitude ) - { - scaleIndicator.setVisibility(View.VISIBLE); - } - else - { - scaleIndicator.setVisibility(View.GONE); - } - break; - } - } - - private void updateDistanceDisplayVisibility() - { - boolean showdistance = mSharedPreferences.getBoolean(Constants.DISTANCE, false); - TextView distanceView = mLoggerMap.getDistanceTextView(); - if (showdistance) - { - distanceView.setVisibility(View.VISIBLE); - } - else - { - distanceView.setVisibility(View.GONE); - } - } - - private void updateCompassDisplayVisibility() - { - boolean compass = mSharedPreferences.getBoolean(Constants.COMPASS, false); - if (compass) - { - mLoggerMap.enableCompass(); - } - else - { - mLoggerMap.disableCompass(); - } - } - - private void updateLocationDisplayVisibility() - { - boolean location = mSharedPreferences.getBoolean(Constants.LOCATION, false); - if (location) - { - mLoggerMap.enableMyLocation(); - } - else - { - mLoggerMap.disableMyLocation(); - } - } - - /** - * Retrieves the numbers of the measured speed and altitude from the most - * recent waypoint and updates UI components with this latest bit of - * information. - */ - private void updateTrackNumbers() - { - Location lastWaypoint = mLoggerServiceManager.getLastWaypoint(); - UnitsI18n units = mUnits; - if (lastWaypoint != null && units != null) - { - // Speed number - mSpeed = lastWaypoint.getSpeed(); - mAltitude = lastWaypoint.getAltitude(); - mDistance = mLoggerServiceManager.getTrackedDistance(); - } - - //Distance number - double distance = units.conversionFromMeter(mDistance); - String distanceText = String.format("%.2f %s", distance, units.getDistanceUnit()); - TextView mDistanceView = mLoggerMap.getDistanceTextView(); - mDistanceView.setText(distanceText); - - //Speed number - double speed = units.conversionFromMetersPerSecond(mSpeed); - String speedText = units.formatSpeed(speed, false); - TextView lastGPSSpeedView = mLoggerMap.getSpeedTextView(); - lastGPSSpeedView.setText(speedText); - - //Altitude number - double altitude = units.conversionFromMeterToHeight(mAltitude); - String altitudeText = String.format("%.0f %s", altitude, units.getHeightUnit()); - TextView mLastGPSAltitudeView = mLoggerMap.getAltitideTextView(); - mLastGPSAltitudeView.setText(altitudeText); - - // Slider indicator - SlidingIndicatorView currentScaleIndicator = mLoggerMap.getScaleIndicatorView(); - int trackColoringMethod = Integer.valueOf(mSharedPreferences.getString(Constants.TRACKCOLORING, "3")).intValue(); - if( trackColoringMethod == SegmentRendering.DRAW_MEASURED || trackColoringMethod == SegmentRendering.DRAW_CALCULATED) - { - currentScaleIndicator.setValue((float) speed); - // Speed color bar and reference numbers - if (speed > 2 * mAverageSpeed ) - { - mAverageSpeed = 0.0; - updateSpeedColoring(); - mBitmapSegmentsOverlay.scheduleRecalculation(); - } - } - else if(trackColoringMethod == SegmentRendering.DRAW_HEIGHT) - { - currentScaleIndicator.setValue((float) altitude); - // Speed color bar and reference numbers - if (altitude > 2 * mAverageHeight ) - { - mAverageHeight = 0.0; - updateSpeedColoring(); - mLoggerMap.postInvalidate(); - } - } - - - } - - /** - * For the current track identifier the route of that track is drawn by - * adding a OverLay for each segments in the track - * - * @param trackId - * @see SegmentRendering - */ - private void createDataOverlays() - { - mLastSegmentOverlay = null; - mBitmapSegmentsOverlay.clearSegments(); - mLoggerMap.clearOverlays(); - mLoggerMap.addOverlay(mBitmapSegmentsOverlay); - - ContentResolver resolver = mLoggerMap.getActivity().getContentResolver(); - Cursor segments = null; - int trackColoringMethod = Integer.valueOf(mSharedPreferences.getString(Constants.TRACKCOLORING, "2")).intValue(); - - try - { - Uri segmentsUri = Uri.withAppendedPath(Tracks.CONTENT_URI, this.mTrackId + "/segments"); - segments = resolver.query(segmentsUri, new String[] { Segments._ID }, null, null, null); - if (segments != null && segments.moveToFirst()) - { - do - { - long segmentsId = segments.getLong(0); - Uri segmentUri = ContentUris.withAppendedId(segmentsUri, segmentsId); - SegmentRendering segmentOverlay = new SegmentRendering(mLoggerMap, segmentUri, trackColoringMethod, mAverageSpeed, mAverageHeight, mHandler); - mBitmapSegmentsOverlay.addSegment(segmentOverlay); - mLastSegmentOverlay = segmentOverlay; - if (segments.isFirst()) - { - segmentOverlay.addPlacement(SegmentRendering.FIRST_SEGMENT); - } - if (segments.isLast()) - { - segmentOverlay.addPlacement(SegmentRendering.LAST_SEGMENT); - } - mLastSegment = segmentsId; - } - while (segments.moveToNext()); - } - } - finally - { - if (segments != null) - { - segments.close(); - } - } - - Uri lastSegmentUri = Uri.withAppendedPath(Tracks.CONTENT_URI, mTrackId + "/segments/" + mLastSegment + "/waypoints"); - resolver.unregisterContentObserver(this.mSegmentWaypointsObserver); - resolver.registerContentObserver(lastSegmentUri, false, this.mSegmentWaypointsObserver); - } - - private void updateDataOverlays() - { - ContentResolver resolver = mLoggerMap.getActivity().getContentResolver(); - Uri segmentsUri = Uri.withAppendedPath(Tracks.CONTENT_URI, this.mTrackId + "/segments"); - Cursor segmentsCursor = null; - int segmentOverlaysCount = mBitmapSegmentsOverlay.size(); - try - { - segmentsCursor = resolver.query(segmentsUri, new String[] { Segments._ID }, null, null, null); - if (segmentsCursor != null && segmentsCursor.getCount() == segmentOverlaysCount) - { - // Log.d( TAG, "Alignment of segments" ); - } - else - { - createDataOverlays(); - } - } - finally - { - if (segmentsCursor != null) - { - segmentsCursor.close(); - } - } - } - - /** - * Call when an overlay has recalulated and has new information to be redrawn - */ - - private void moveActiveViewWindow() - { - GeoPoint lastPoint = getLastTrackPoint(); - if (lastPoint != null && mLoggerServiceManager.getLoggingState() == Constants.LOGGING) - { - if (mLoggerMap.isOutsideScreen(lastPoint)) - { - mLoggerMap.clearAnimation(); - mLoggerMap.setCenter(lastPoint); - } - else if (mLoggerMap.isNearScreenEdge(lastPoint)) - { - mLoggerMap.clearAnimation(); - mLoggerMap.animateTo(lastPoint); - } - } - } - - /** - * Updates the labels next to the color bar with speeds - */ - private void drawSpeedTexts() - { - UnitsI18n units = mUnits; - if (units != null) - { - double avgSpeed = units.conversionFromMetersPerSecond(mAverageSpeed); - TextView[] mSpeedtexts = mLoggerMap.getSpeedTextViews(); - SlidingIndicatorView currentScaleIndicator = mLoggerMap.getScaleIndicatorView(); - for (int i = 0; i < mSpeedtexts.length; i++) - { - mSpeedtexts[i].setVisibility(View.VISIBLE); - double speed; - if (mUnits.isUnitFlipped()) - { - speed = ((avgSpeed * 2d) / 5d) * (mSpeedtexts.length - i - 1); - } - else - { - speed = ((avgSpeed * 2d) / 5d) * i; - } - if( i == 0 ) - { - currentScaleIndicator.setMin((float) speed); - } - else - { - currentScaleIndicator.setMax((float) speed); - } - String speedText = units.formatSpeed(speed, false); - mSpeedtexts[i].setText(speedText); - } - } - } - /** - * Updates the labels next to the color bar with heights - */ - private void drawHeightTexts() - { - UnitsI18n units = mUnits; - if (units != null) - { - double avgHeight = units.conversionFromMeterToHeight(mAverageHeight); - TextView[] mSpeedtexts = mLoggerMap.getSpeedTextViews(); - SlidingIndicatorView currentScaleIndicator = mLoggerMap.getScaleIndicatorView(); - for (int i = 0; i < mSpeedtexts.length; i++) - { - mSpeedtexts[i].setVisibility(View.VISIBLE); - double height = ((avgHeight * 2d) / 5d) * i; - String heightText = String.format( "%d %s", (int)height, units.getHeightUnit() ); - mSpeedtexts[i].setText(heightText); - if( i == 0 ) - { - currentScaleIndicator.setMin((float) height); - } - else - { - currentScaleIndicator.setMax((float) height); - } - } - } - } - - /** - * Alter this to set a new track as current. - * - * @param trackId - * @param center center on the end of the track - */ - private void moveToTrack(long trackId, boolean center) - { - if( trackId == mTrackId ) - { - return; - } - Cursor track = null; - try - { - ContentResolver resolver = mLoggerMap.getActivity().getContentResolver(); - Uri trackUri = ContentUris.withAppendedId(Tracks.CONTENT_URI, trackId); - track = resolver.query(trackUri, new String[] { Tracks.NAME }, null, null, null); - if (track != null && track.moveToFirst()) - { - this.mTrackId = trackId; - mLastSegment = -1; - resolver.unregisterContentObserver(this.mTrackSegmentsObserver); - resolver.unregisterContentObserver(this.mTrackMediasObserver); - Uri tracksegmentsUri = Uri.withAppendedPath(Tracks.CONTENT_URI, trackId + "/segments"); - - resolver.registerContentObserver(tracksegmentsUri, false, this.mTrackSegmentsObserver); - resolver.registerContentObserver(Media.CONTENT_URI, true, this.mTrackMediasObserver); - - mLoggerMap.clearOverlays(); - mBitmapSegmentsOverlay.clearSegments(); - mAverageSpeed = 0.0; - mAverageHeight = 0.0; - - updateTitleBar(); - updateDataOverlays(); - updateSpeedColoring(); - if (center) - { - GeoPoint lastPoint = getLastTrackPoint(); - mLoggerMap.animateTo(lastPoint); - } - } - } - finally - { - if (track != null) - { - track.close(); - } - } - } - - /** - * Get the last know position from the GPS provider and return that - * information wrapped in a GeoPoint to which the Map can navigate. - * - * @see GeoPoint - * @return - */ - private GeoPoint getLastKnowGeopointLocation() - { - int microLatitude = 0; - int microLongitude = 0; - LocationManager locationManager = (LocationManager) mLoggerMap.getActivity().getApplication().getSystemService(Context.LOCATION_SERVICE); - Location locationFine = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); - if (locationFine != null) - { - microLatitude = (int) (locationFine.getLatitude() * 1E6d); - microLongitude = (int) (locationFine.getLongitude() * 1E6d); - } - if (locationFine == null || microLatitude == 0 || microLongitude == 0) - { - Location locationCoarse = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); - if (locationCoarse != null) - { - microLatitude = (int) (locationCoarse.getLatitude() * 1E6d); - microLongitude = (int) (locationCoarse.getLongitude() * 1E6d); - } - if (locationCoarse == null || microLatitude == 0 || microLongitude == 0) - { - microLatitude = 51985105; - microLongitude = 5106132; - } - } - GeoPoint geoPoint = new GeoPoint(microLatitude, microLongitude); - return geoPoint; - } - - /** - * Retrieve the last point of the current track - * - * @param context - */ - private GeoPoint getLastTrackPoint() - { - Cursor waypoint = null; - GeoPoint lastPoint = null; - // First try the service which might have a cached version - Location lastLoc = mLoggerServiceManager.getLastWaypoint(); - if (lastLoc != null) - { - int microLatitude = (int) (lastLoc.getLatitude() * 1E6d); - int microLongitude = (int) (lastLoc.getLongitude() * 1E6d); - lastPoint = new GeoPoint(microLatitude, microLongitude); - } - - // If nothing yet, try the content resolver and query the track - if (lastPoint == null || lastPoint.getLatitudeE6() == 0 || lastPoint.getLongitudeE6() == 0) - { - try - { - ContentResolver resolver = mLoggerMap.getActivity().getContentResolver(); - waypoint = resolver.query(Uri.withAppendedPath(Tracks.CONTENT_URI, mTrackId + "/waypoints"), new String[] { Waypoints.LATITUDE, - Waypoints.LONGITUDE, "max(" + Waypoints.TABLE + "." + Waypoints._ID + ")" }, null, null, null); - if (waypoint != null && waypoint.moveToLast()) - { - int microLatitude = (int) (waypoint.getDouble(0) * 1E6d); - int microLongitude = (int) (waypoint.getDouble(1) * 1E6d); - lastPoint = new GeoPoint(microLatitude, microLongitude); - } - } - finally - { - if (waypoint != null) - { - waypoint.close(); - } - } - } - - // If nothing yet, try the last generally known location - if (lastPoint == null || lastPoint.getLatitudeE6() == 0 || lastPoint.getLongitudeE6() == 0) - { - lastPoint = getLastKnowGeopointLocation(); - } - return lastPoint; - } - - private void moveToLastTrack() - { - Cursor track = null; - try - { - ContentResolver resolver = mLoggerMap.getActivity().getContentResolver(); - track = resolver.query(Tracks.CONTENT_URI, new String[] { "max(" + Tracks._ID + ")", Tracks.NAME, }, null, null, null); - if (track != null && track.moveToLast()) - { - mTrackId = track.getInt(0); - } - } - finally - { - if (track != null) - { - track.close(); - } - } - } - - /** - * Enables a SegmentOverlay to call back to the MapActivity to show a dialog - * with choices of media - * - * @param mediaAdapter - */ - public void showMediaDialog(BaseAdapter mediaAdapter) - { - mMediaAdapter = mediaAdapter; - mLoggerMap.getActivity().showDialog(DIALOG_URIS); - } - - public SharedPreferences getPreferences() - { - return mSharedPreferences; - } - - public boolean isLogging() - { - return mLoggerServiceManager.getLoggingState() == Constants.LOGGING; - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java deleted file mode 100644 index f7287194..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/AsyncOverlay.java +++ /dev/null @@ -1,232 +0,0 @@ -package nl.sogeti.android.gpstracker.viewer.map.overlay; - -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; -import android.graphics.Bitmap; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Point; -import android.os.Handler; - -import com.google.android.maps.GeoPoint; -import com.google.android.maps.MapView; -import com.google.android.maps.Overlay; - -public abstract class AsyncOverlay extends Overlay implements OverlayProvider -{ - private static final int OFFSET = 20; - - private static final String TAG = "GG.AsyncOverlay"; - - /** - * Handler provided by the MapActivity to recalculate graphics - */ - private Handler mHandler; - - private GeoPoint mGeoTopLeft; - - private GeoPoint mGeoBottumRight; - - private int mWidth; - - private int mHeight; - - private Bitmap mActiveBitmap; - - private GeoPoint mActiveTopLeft; - - private Point mActivePointTopLeft; - - private Bitmap mCalculationBitmap; - - private Paint mPaint; - - private LoggerMapFragmentInterface mLoggerMap; - - private SegmentMapQuestOverlay mMapQuestOverlay; - - private int mActiveZoomLevel; - - private Runnable mBitmapUpdater = new Runnable() - { - @Override - public void run() - { - postedBitmapUpdater = false; - mCalculationBitmap.eraseColor(Color.TRANSPARENT); - mGeoTopLeft = mLoggerMap.fromPixels(0, 0); - mGeoBottumRight = mLoggerMap.fromPixels(mWidth, mHeight); - Canvas calculationCanvas = new Canvas(mCalculationBitmap); - redrawOffscreen(calculationCanvas, mLoggerMap); - synchronized (mActiveBitmap) - { - Bitmap oldActiveBitmap = mActiveBitmap; - mActiveBitmap = mCalculationBitmap; - mActiveTopLeft = mGeoTopLeft; - mCalculationBitmap = oldActiveBitmap; - } - mLoggerMap.postInvalidate(); - } - }; - - private boolean postedBitmapUpdater; - - AsyncOverlay(LoggerMapFragmentInterface loggermap, Handler handler) - { - mLoggerMap = loggermap; - mHandler = handler; - mWidth = 1; - mHeight = 1; - mPaint = new Paint(); - mActiveZoomLevel = -1; - mActiveBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888); - mActiveTopLeft = new GeoPoint(0, 0); - mActivePointTopLeft = new Point(); - mCalculationBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888); - - mMapQuestOverlay = new SegmentMapQuestOverlay(this); - } - - protected void reset() - { - synchronized (mActiveBitmap) - { - mCalculationBitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); - mActiveBitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888); - } - } - - protected void considerRedrawOffscreen() - { - int oldZoomLevel = mActiveZoomLevel; - mActiveZoomLevel = mLoggerMap.getZoomLevel(); - - boolean needNewCalculation = false; - - if (mCalculationBitmap.getWidth() != mWidth || mCalculationBitmap.getHeight() != mHeight) - { - mCalculationBitmap = Bitmap.createBitmap(mWidth, mHeight, Bitmap.Config.ARGB_8888); - needNewCalculation = true; - } - - boolean unaligned = isOutAlignment(); - if (needNewCalculation || mActiveZoomLevel != oldZoomLevel || unaligned) - { - scheduleRecalculation(); - } - } - - private boolean isOutAlignment() - { - Point screenPoint = new Point(0, 0); - if (mGeoTopLeft != null) - { - mLoggerMap.toPixels(mGeoTopLeft, screenPoint); - } - return mGeoTopLeft == null || mGeoBottumRight == null || screenPoint.x > OFFSET || screenPoint.y > OFFSET || screenPoint.x < -OFFSET - || screenPoint.y < -OFFSET; - } - - public void onDateOverlayChanged() - { - if (!postedBitmapUpdater) - { - postedBitmapUpdater = true; - mHandler.post(mBitmapUpdater); - } - } - - protected abstract void redrawOffscreen(Canvas asyncBuffer, LoggerMapFragmentInterface loggermap); - - protected abstract void scheduleRecalculation(); - - /** - * {@inheritDoc} - */ - @Override - public void draw(Canvas canvas, MapView mapView, boolean shadow) - { - if (!shadow) - { - draw(canvas); - } - } - - private void draw(Canvas canvas) - { - mWidth = canvas.getWidth(); - mHeight = canvas.getHeight(); - considerRedrawOffscreen(); - - if (mActiveBitmap.getWidth() > 1) - { - synchronized (mActiveBitmap) - { - mLoggerMap.toPixels(mActiveTopLeft, mActivePointTopLeft); - canvas.drawBitmap(mActiveBitmap, mActivePointTopLeft.x, mActivePointTopLeft.y, mPaint); - } - } - } - - protected boolean isPointOnScreen(Point point) - { - return point.x < 0 || point.y < 0 || point.x > mWidth || point.y > mHeight; - } - - @Override - public boolean onTap(GeoPoint tappedGeoPoint, MapView mapview) - { - return commonOnTap(tappedGeoPoint); - } - - /**************************************/ - /** Multi map support **/ - /**************************************/ - - @Override - public Overlay getGoogleOverlay() - { - return this; - } - - @Override - public com.mapquest.android.maps.Overlay getMapQuestOverlay() - { - return mMapQuestOverlay; - } - - protected abstract boolean commonOnTap(GeoPoint tappedGeoPoint); - - static class SegmentMapQuestOverlay extends com.mapquest.android.maps.Overlay - { - AsyncOverlay mSegmentOverlay; - - public SegmentMapQuestOverlay(AsyncOverlay segmentOverlay) - { - super(); - mSegmentOverlay = segmentOverlay; - } - - public AsyncOverlay getSegmentOverlay() - { - return mSegmentOverlay; - } - - @Override - public boolean onTap(com.mapquest.android.maps.GeoPoint p, com.mapquest.android.maps.MapView mapView) - { - GeoPoint tappedGeoPoint = new GeoPoint(p.getLatitudeE6(), p.getLongitudeE6()); - return mSegmentOverlay.commonOnTap(tappedGeoPoint); - } - - @Override - public void draw(Canvas canvas, com.mapquest.android.maps.MapView mapView, boolean shadow) - { - if (!shadow) - { - mSegmentOverlay.draw(canvas); - } - } - - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java deleted file mode 100644 index 59f08010..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/BitmapSegmentsOverlay.java +++ /dev/null @@ -1,90 +0,0 @@ -package nl.sogeti.android.gpstracker.viewer.map.overlay; - -import java.util.LinkedList; -import java.util.List; - -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; - -import android.graphics.Canvas; -import android.os.Handler; -import android.util.Log; - -import com.google.android.maps.GeoPoint; - -public class BitmapSegmentsOverlay extends AsyncOverlay -{ - private static final String TAG = "GG.BitmapSegmentsOverlay"; - - List mOverlays; - Handler mOverlayHandler; - - public BitmapSegmentsOverlay(LoggerMapFragmentInterface loggermap, Handler handler) - { - super(loggermap, handler); - mOverlays = new LinkedList(); - mOverlayHandler = handler; - } - - @Override - synchronized protected void redrawOffscreen(Canvas asyncBuffer, LoggerMapFragmentInterface loggermap) - { - for (SegmentRendering segment : mOverlays) - { - segment.draw(asyncBuffer); - } - } - - @Override - public synchronized void scheduleRecalculation() - { - for (SegmentRendering segment : mOverlays) - { - segment.calculateMedia(); - segment.calculateTrack(); - } - } - - @Override - synchronized protected boolean commonOnTap(GeoPoint tappedGeoPoint) - { - boolean handled = false; - for (SegmentRendering segment : mOverlays) - { - if (!handled) - { - handled = segment.commonOnTap(tappedGeoPoint); - } - } - return handled; - } - - synchronized public void addSegment(SegmentRendering segment) - { - segment.setBitmapHolder(this); - mOverlays.add(segment); - } - - synchronized public void clearSegments() - { - for (SegmentRendering segment : mOverlays) - { - segment.closeResources(); - } - mOverlays.clear(); - reset(); - } - - synchronized public void setTrackColoringMethod(int color, double speed, double height) - { - for (SegmentRendering segment : mOverlays) - { - segment.setTrackColoringMethod(color, speed, height); - } - scheduleRecalculation(); - } - - public int size() - { - return mOverlays.size(); - } -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/OverlayProvider.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/OverlayProvider.java deleted file mode 100644 index 0fc18753..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/OverlayProvider.java +++ /dev/null @@ -1,35 +0,0 @@ -/*------------------------------------------------------------------------------ - ** Ident: Sogeti Smart Mobile Solutions - ** Author: rene - ** Copyright: (c) Apr 24, 2011 Sogeti Nederland B.V. All Rights Reserved. - **------------------------------------------------------------------------------ - ** Sogeti Nederland B.V. | No part of this file may be reproduced - ** Distributed Software Engineering | or transmitted in any form or by any - ** Lange Dreef 17 | means, electronic or mechanical, for the - ** 4131 NJ Vianen | purpose, without the express written - ** The Netherlands | permission of the copyright holder. - *------------------------------------------------------------------------------ - * - * This file is part of OpenGPSTracker. - * - * OpenGPSTracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenGPSTracker is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with OpenGPSTracker. If not, see . - * - */ -package nl.sogeti.android.gpstracker.viewer.map.overlay; - -public interface OverlayProvider -{ - public com.google.android.maps.Overlay getGoogleOverlay(); - public com.mapquest.android.maps.Overlay getMapQuestOverlay(); -} diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java deleted file mode 100644 index c36f7000..00000000 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/map/overlay/SegmentRendering.java +++ /dev/null @@ -1,1404 +0,0 @@ -/*------------------------------------------------------------------------------ - ** Ident: Sogeti Smart Mobile Solutions - ** Author: rene - ** Copyright: (c) Apr 24, 2011 Sogeti Nederland B.V. All Rights Reserved. - **------------------------------------------------------------------------------ - ** Sogeti Nederland B.V. | No part of this file may be reproduced - ** Distributed Software Engineering | or transmitted in any form or by any - ** Lange Dreef 17 | means, electronic or mechanical, for the - ** 4131 NJ Vianen | purpose, without the express written - ** The Netherlands | permission of the copyright holder. - *------------------------------------------------------------------------------ - * - * This file is part of OpenGPSTracker. - * - * OpenGPSTracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenGPSTracker is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with OpenGPSTracker. If not, see . - * - */ -package nl.sogeti.android.gpstracker.viewer.map.overlay; - -import java.text.DateFormat; -import java.util.Date; -import java.util.List; -import java.util.Vector; - -import nl.sogeti.android.gpstracker.BuildConfig; -import nl.sogeti.android.gpstracker.R; -import nl.sogeti.android.gpstracker.db.GPStracking; -import nl.sogeti.android.gpstracker.db.GPStracking.Media; -import nl.sogeti.android.gpstracker.db.GPStracking.Waypoints; -import nl.sogeti.android.gpstracker.fragment.LoggerMapFragmentInterface; -import nl.sogeti.android.gpstracker.util.UnitsI18n; -import android.content.ContentResolver; -import android.content.ContentUris; -import android.content.Context; -import android.content.Intent; -import android.content.res.Resources; -import android.content.res.TypedArray; -import android.database.ContentObserver; -import android.database.Cursor; -import android.graphics.Bitmap; -import android.graphics.BitmapFactory; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.ComposeShader; -import android.graphics.CornerPathEffect; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.Point; -import android.graphics.PorterDuff.Mode; -import android.graphics.RadialGradient; -import android.graphics.Shader; -import android.graphics.Shader.TileMode; -import android.location.Location; -import android.net.Uri; -import android.os.Handler; -import android.util.Log; -import android.util.SparseArray; -import android.view.View; -import android.view.ViewGroup; -import android.widget.BaseAdapter; -import android.widget.ImageView; -import android.widget.Toast; - -import com.google.android.maps.GeoPoint; -import com.google.android.maps.MapView; - -/** - * Creates an overlay that can draw a single segment of connected waypoints - * - * @version $Id$ - * @author rene (c) Jan 11, 2009, Sogeti B.V. - */ -public class SegmentRendering -{ - public static final int MIDDLE_SEGMENT = 0; - public static final int FIRST_SEGMENT = 1; - public static final int LAST_SEGMENT = 2; - public static final int DRAW_GREEN = 0; - public static final int DRAW_RED = 1; - public static final int DRAW_MEASURED = 2; - public static final int DRAW_CALCULATED = 3; - public static final int DRAW_DOTS = 4; - public static final int DRAW_HEIGHT = 5; - private static final String TAG = "OGT.SegmentRendering"; - private static final float MINIMUM_PX_DISTANCE = 15; - - private static SparseArray sBitmapCache = new SparseArray();; - - private int mTrackColoringMethod = DRAW_CALCULATED; - - private ContentResolver mResolver; - private LoggerMapFragmentInterface mLoggerMap; - - private int mPlacement = SegmentRendering.MIDDLE_SEGMENT; - private Uri mWaypointsUri; - private Uri mMediaUri; - private double mAvgSpeed; - private double mAvgHeight; - private GeoPoint mGeoTopLeft; - private GeoPoint mGeoBottumRight; - - private Vector mDotPath; - private Vector mDotPathCalculation; - private Path mCalculatedPath; - private Point mCalculatedStart; - private Point mCalculatedStop; - private Path mPathCalculation; - private Shader mShader; - private Vector mMediaPath; - private Vector mMediaPathCalculation; - - private GeoPoint mStartPoint; - private GeoPoint mEndPoint; - private Point mPrevDrawnScreenPoint; - private Point mScreenPointBackup; - private Point mScreenPoint; - private Point mMediaScreenPoint; - private int mStepSize = -1; - private Location mLocation; - private Location mPrevLocation; - private Cursor mWaypointsCursor; - private Cursor mMediaCursor; - private Uri mSegmentUri; - private int mWaypointCount = -1; - private int mWidth; - private int mHeight; - private GeoPoint mPrevGeoPoint; - private int mCurrentColor; - private Paint dotpaint; - private Paint radiusPaint; - private Paint routePaint; - private Paint defaultPaint; - private boolean mRequeryFlag; - private Handler mHandler; - private static Bitmap sStartBitmap; - private static Bitmap sStopBitmap; - private AsyncOverlay mAsyncOverlay; - - private ContentObserver mTrackSegmentsObserver; - - private final Runnable mMediaCalculator = new Runnable() - { - @Override - public void run() - { - SegmentRendering.this.calculateMediaAsync(); - } - }; - - private final Runnable mTrackCalculator = new Runnable() - { - @Override - public void run() - { - SegmentRendering.this.calculateTrackAsync(); - } - }; - - /** - * Constructor: create a new TrackingOverlay. - * - * @param loggermap - * @param segmentUri - * @param color - * @param avgSpeed - * @param handler - */ - public SegmentRendering(LoggerMapFragmentInterface loggermap, Uri segmentUri, int color, double avgSpeed, double avgHeight, Handler handler) - { - super(); - mHandler = handler; - mLoggerMap = loggermap; - mTrackColoringMethod = color; - mAvgSpeed = avgSpeed; - mAvgHeight = avgHeight; - mSegmentUri = segmentUri; - mMediaUri = Uri.withAppendedPath(mSegmentUri, "media"); - mWaypointsUri = Uri.withAppendedPath(mSegmentUri, "waypoints"); - mResolver = mLoggerMap.getActivity().getContentResolver(); - mRequeryFlag = true; - mCurrentColor = Color.rgb(255, 0, 0); - - dotpaint = new Paint(); - radiusPaint = new Paint(); - radiusPaint.setColor(Color.YELLOW); - radiusPaint.setAlpha(100); - routePaint = new Paint(); - routePaint.setStyle(Paint.Style.STROKE); - routePaint.setStrokeWidth(6); - routePaint.setAntiAlias(true); - routePaint.setPathEffect(new CornerPathEffect(10)); - defaultPaint = new Paint(); - mScreenPoint = new Point(); - mMediaScreenPoint = new Point(); - mScreenPointBackup = new Point(); - mPrevDrawnScreenPoint = new Point(); - - mDotPath = new Vector(); - mDotPathCalculation = new Vector(); - mCalculatedPath = new Path(); - mPathCalculation = new Path(); - mMediaPath = new Vector(); - mMediaPathCalculation = new Vector(); - - mTrackSegmentsObserver = new ContentObserver(new Handler()) - { - - @Override - public void onChange(boolean selfUpdate) - { - if (!selfUpdate) - { - mRequeryFlag = true; - } - else - { - Log.w(TAG, "mTrackSegmentsObserver skipping change on " + mSegmentUri); - } - } - }; - openResources(); - } - - public void closeResources() - { - mResolver.unregisterContentObserver(mTrackSegmentsObserver); - mHandler.removeCallbacks(mMediaCalculator); - mHandler.removeCallbacks(mTrackCalculator); - mHandler.postAtFrontOfQueue(new Runnable() - { - @Override - public void run() - { - if (mWaypointsCursor != null) - { - mWaypointsCursor.close(); - mWaypointsCursor = null; - } - if (mMediaCursor != null) - { - mMediaCursor.close(); - mMediaCursor = null; - } - } - }); - SegmentRendering.sStopBitmap = null; - SegmentRendering.sStartBitmap = null; - } - - public void openResources() - { - mResolver.registerContentObserver(mWaypointsUri, false, mTrackSegmentsObserver); - } - - /** - * Private draw method called by both the draw from Google Overlay and the - * OSM Overlay - * - * @param canvas - */ - public void draw(Canvas canvas) - { - switch (mTrackColoringMethod) - { - case DRAW_HEIGHT: - case DRAW_CALCULATED: - case DRAW_MEASURED: - case DRAW_RED: - case DRAW_GREEN: - drawPath(canvas); - break; - case DRAW_DOTS: - drawDots(canvas); - break; - } - drawStartStopCircles(canvas); - drawMedia(canvas); - - mWidth = canvas.getWidth(); - mHeight = canvas.getHeight(); - } - - public void calculateTrack() - { - mHandler.removeCallbacks(mTrackCalculator); - mHandler.post(mTrackCalculator); - } - - /** - * Either the Path or the Dots are calculated based on he current track - * coloring method - */ - private synchronized void calculateTrackAsync() - { - mGeoTopLeft = mLoggerMap.fromPixels(0, 0); - mGeoBottumRight = mLoggerMap.fromPixels(mWidth, mHeight); - - calculateStepSize(); - - mScreenPoint.x = -1; - mScreenPoint.y = -1; - this.mPrevDrawnScreenPoint.x = -1; - this.mPrevDrawnScreenPoint.y = -1; - - switch (mTrackColoringMethod) - { - case DRAW_HEIGHT: - case DRAW_CALCULATED: - case DRAW_MEASURED: - case DRAW_RED: - case DRAW_GREEN: - calculatePath(); - synchronized (mCalculatedPath) // Switch the fresh path with the old Path object - { - Path oldPath = mCalculatedPath; - mCalculatedPath = mPathCalculation; - mPathCalculation = oldPath; - } - break; - case DRAW_DOTS: - calculateDots(); - synchronized (mDotPath) // Switch the fresh path with the old Path object - { - Vector oldDotPath = mDotPath; - mDotPath = mDotPathCalculation; - mDotPathCalculation = oldDotPath; - } - break; - } - calculateStartStopCircles(); - mAsyncOverlay.onDateOverlayChanged(); - } - - /** - * Calculated the new contents of segment in the mDotPathCalculation - */ - private void calculatePath() - { - mDotPathCalculation.clear(); - this.mPathCalculation.rewind(); - - this.mShader = null; - - GeoPoint geoPoint; - this.mPrevLocation = null; - - if (mWaypointsCursor == null) - { - mWaypointsCursor = this.mResolver.query(this.mWaypointsUri, new String[] { Waypoints.LATITUDE, Waypoints.LONGITUDE, Waypoints.SPEED, Waypoints.TIME, - Waypoints.ACCURACY, Waypoints.ALTITUDE }, null, null, null); - mRequeryFlag = false; - } - if (mRequeryFlag) - { - mWaypointsCursor.requery(); - mRequeryFlag = false; - } - if (mLoggerMap.hasProjection() && mWaypointsCursor.moveToFirst()) - { - // Start point of the segments, possible a dot - this.mStartPoint = extractGeoPoint(); - mPrevGeoPoint = mStartPoint; - this.mLocation = new Location(this.getClass().getName()); - this.mLocation.setLatitude(mWaypointsCursor.getDouble(0)); - this.mLocation.setLongitude(mWaypointsCursor.getDouble(1)); - this.mLocation.setTime(mWaypointsCursor.getLong(3)); - - moveToGeoPoint(this.mStartPoint); - - do - { - geoPoint = extractGeoPoint(); - // Do no include log wrong 0.0 lat 0.0 long, skip to next value in while-loop - if (geoPoint.getLatitudeE6() == 0 || geoPoint.getLongitudeE6() == 0) - { - continue; - } - - double speed = -1d; - switch (mTrackColoringMethod) - { - case DRAW_GREEN: - case DRAW_RED: - plainLineToGeoPoint(geoPoint); - break; - case DRAW_MEASURED: - speedLineToGeoPoint(geoPoint, mWaypointsCursor.getDouble(2)); - break; - case DRAW_CALCULATED: - this.mPrevLocation = this.mLocation; - this.mLocation = new Location(this.getClass().getName()); - this.mLocation.setLatitude(mWaypointsCursor.getDouble(0)); - this.mLocation.setLongitude(mWaypointsCursor.getDouble(1)); - this.mLocation.setTime(mWaypointsCursor.getLong(3)); - speed = calculateSpeedBetweenLocations(this.mPrevLocation, this.mLocation); - speedLineToGeoPoint(geoPoint, speed); - break; - case DRAW_HEIGHT: - heightLineToGeoPoint(geoPoint, mWaypointsCursor.getDouble(5)); - break; - default: - Log.w(TAG, "Unknown coloring method"); - break; - } - } - while (moveToNextWayPoint()); - - this.mEndPoint = extractGeoPoint(); // End point of the segments, possible a dot - - } - // Log.d( TAG, "transformSegmentToPath stop: points "+mCalculatedPoints+" from "+moves+" moves" ); - } - - /** - * @param canvas - * @param mapView - * @param shadow - * @see SegmentRendering#draw(Canvas, MapView, boolean) - */ - private void calculateDots() - { - mPathCalculation.reset(); - mDotPathCalculation.clear(); - - if (mWaypointsCursor == null) - { - mWaypointsCursor = this.mResolver.query(this.mWaypointsUri, new String[] { Waypoints.LATITUDE, Waypoints.LONGITUDE, Waypoints.SPEED, Waypoints.TIME, - Waypoints.ACCURACY }, null, null, null); - } - if (mRequeryFlag) - { - mWaypointsCursor.requery(); - mRequeryFlag = false; - } - if (mLoggerMap.hasProjection() && mWaypointsCursor.moveToFirst()) - { - GeoPoint geoPoint; - - mStartPoint = extractGeoPoint(); - mPrevGeoPoint = mStartPoint; - - do - { - geoPoint = extractGeoPoint(); - // Do no include log wrong 0.0 lat 0.0 long, skip to next value in while-loop - if (geoPoint.getLatitudeE6() == 0 || geoPoint.getLongitudeE6() == 0) - { - continue; - } - setScreenPoint(geoPoint); - - float distance = (float) distanceInPoints(this.mPrevDrawnScreenPoint, this.mScreenPoint); - if (distance > MINIMUM_PX_DISTANCE) - { - DotVO dotVO = new DotVO(); - dotVO.x = this.mScreenPoint.x; - dotVO.y = this.mScreenPoint.y; - dotVO.speed = mWaypointsCursor.getLong(2); - dotVO.time = mWaypointsCursor.getLong(3); - dotVO.radius = mLoggerMap.metersToEquatorPixels(mWaypointsCursor.getFloat(4)); - mDotPathCalculation.add(dotVO); - - this.mPrevDrawnScreenPoint.x = this.mScreenPoint.x; - this.mPrevDrawnScreenPoint.y = this.mScreenPoint.y; - } - } - while (moveToNextWayPoint()); - - this.mEndPoint = extractGeoPoint(); - DotVO pointVO = new DotVO(); - pointVO.x = this.mScreenPoint.x; - pointVO.y = this.mScreenPoint.y; - pointVO.speed = mWaypointsCursor.getLong(2); - pointVO.time = mWaypointsCursor.getLong(3); - pointVO.radius = mLoggerMap.metersToEquatorPixels(mWaypointsCursor.getFloat(4)); - mDotPathCalculation.add(pointVO); - } - } - - public void calculateMedia() - { - mHandler.removeCallbacks(mMediaCalculator); - mHandler.post(mMediaCalculator); - } - - public synchronized void calculateMediaAsync() - { - mMediaPathCalculation.clear(); - if (mMediaCursor == null) - { - mMediaCursor = this.mResolver.query(this.mMediaUri, new String[] { Media.WAYPOINT, Media.URI }, null, null, null); - } - else - { - mMediaCursor.requery(); - } - if (mLoggerMap.hasProjection() && mMediaCursor.moveToFirst()) - { - GeoPoint lastPoint = null; - int wiggle = 0; - do - { - MediaVO mediaVO = new MediaVO(); - mediaVO.waypointId = mMediaCursor.getLong(0); - mediaVO.uri = Uri.parse(mMediaCursor.getString(1)); - - Uri mediaWaypoint = ContentUris.withAppendedId(mWaypointsUri, mediaVO.waypointId); - Cursor waypointCursor = null; - try - { - waypointCursor = this.mResolver.query(mediaWaypoint, new String[] { Waypoints.LATITUDE, Waypoints.LONGITUDE }, null, null, null); - if (waypointCursor != null && waypointCursor.moveToFirst()) - { - int microLatitude = (int) (waypointCursor.getDouble(0) * 1E6d); - int microLongitude = (int) (waypointCursor.getDouble(1) * 1E6d); - mediaVO.geopoint = new GeoPoint(microLatitude, microLongitude); - } - } - finally - { - if (waypointCursor != null) - { - waypointCursor.close(); - } - } - if (isGeoPointOnScreen(mediaVO.geopoint)) - { - mLoggerMap.toPixels(mediaVO.geopoint, this.mMediaScreenPoint); - if (mediaVO.geopoint.equals(lastPoint)) - { - wiggle += 4; - } - else - { - wiggle = 0; - } - mediaVO.bitmapKey = getResourceForMedia(mLoggerMap.getActivity().getResources(), mediaVO.uri); - mediaVO.w = sBitmapCache.get(mediaVO.bitmapKey).getWidth(); - mediaVO.h = sBitmapCache.get(mediaVO.bitmapKey).getHeight(); - int left = (mediaVO.w * 3) / 7 + wiggle; - int up = (mediaVO.h * 6) / 7 - wiggle; - mediaVO.x = mMediaScreenPoint.x - left; - mediaVO.y = mMediaScreenPoint.y - up; - - lastPoint = mediaVO.geopoint; - } - mMediaPathCalculation.add(mediaVO); - } - while (mMediaCursor.moveToNext()); - } - - synchronized (mMediaPath) // Switch the fresh path with the old Path object - { - Vector oldmMediaPath = mMediaPath; - mMediaPath = mMediaPathCalculation; - mMediaPathCalculation = oldmMediaPath; - } - if (mMediaPathCalculation.size() != mMediaPath.size()) - { - mAsyncOverlay.onDateOverlayChanged(); - } - } - - private void calculateStartStopCircles() - { - if ((this.mPlacement == FIRST_SEGMENT || this.mPlacement == FIRST_SEGMENT + LAST_SEGMENT) && this.mStartPoint != null) - { - if (sStartBitmap == null) - { - sStartBitmap = BitmapFactory.decodeResource(this.mLoggerMap.getActivity().getResources(), R.drawable.stip); - } - if (mCalculatedStart == null) - { - mCalculatedStart = new Point(); - } - mLoggerMap.toPixels(this.mStartPoint, mCalculatedStart); - - } - if ((this.mPlacement == LAST_SEGMENT || this.mPlacement == FIRST_SEGMENT + LAST_SEGMENT) && this.mEndPoint != null) - { - if (sStopBitmap == null) - { - sStopBitmap = BitmapFactory.decodeResource(this.mLoggerMap.getActivity().getResources(), R.drawable.stip2); - } - if (mCalculatedStop == null) - { - mCalculatedStop = new Point(); - } - mLoggerMap.toPixels(this.mEndPoint, mCalculatedStop); - } - } - - /** - * @param canvas - * @see SegmentRendering#draw(Canvas, MapView, boolean) - */ - private void drawPath(Canvas canvas) - { - switch (mTrackColoringMethod) - { - case DRAW_HEIGHT: - case DRAW_CALCULATED: - case DRAW_MEASURED: - routePaint.setShader(this.mShader); - break; - case DRAW_RED: - routePaint.setShader(null); - routePaint.setColor(Color.RED); - break; - case DRAW_GREEN: - routePaint.setShader(null); - routePaint.setColor(Color.GREEN); - break; - default: - routePaint.setShader(null); - routePaint.setColor(Color.YELLOW); - break; - } - synchronized (mCalculatedPath) - { - canvas.drawPath(mCalculatedPath, routePaint); - } - } - - private void drawDots(Canvas canvas) - { - synchronized (mDotPath) - { - if (sStopBitmap == null) - { - sStopBitmap = BitmapFactory.decodeResource(this.mLoggerMap.getActivity().getResources(), R.drawable.stip2); - } - for (DotVO dotVO : mDotPath) - { - canvas.drawBitmap(sStopBitmap, dotVO.x - 8, dotVO.y - 8, dotpaint); - if (dotVO.radius > 8f) - { - canvas.drawCircle(dotVO.x, dotVO.y, dotVO.radius, radiusPaint); - } - } - } - } - - private void drawMedia(Canvas canvas) - { - synchronized (mMediaPath) - { - for (MediaVO mediaVO : mMediaPath) - { - if (mediaVO.bitmapKey != null) - { - Log.d(TAG, "Draw bitmap at (" + mediaVO.x + ", " + mediaVO.y + ") on " + canvas); - canvas.drawBitmap(sBitmapCache.get(mediaVO.bitmapKey), mediaVO.x, mediaVO.y, defaultPaint); - } - } - } - } - - private void drawStartStopCircles(Canvas canvas) - { - if (mCalculatedStart != null) - { - canvas.drawBitmap(sStartBitmap, mCalculatedStart.x - 8, mCalculatedStart.y - 8, defaultPaint); - } - if (mCalculatedStop != null) - { - canvas.drawBitmap(sStopBitmap, mCalculatedStop.x - 5, mCalculatedStop.y - 5, defaultPaint); - } - } - - private Integer getResourceForMedia(Resources resources, Uri uri) - { - int drawable = 0; - if (uri.getScheme().equals("file")) - { - if (uri.getLastPathSegment().endsWith("3gp")) - { - drawable = R.drawable.media_film; - } - else if (uri.getLastPathSegment().endsWith("jpg")) - { - drawable = R.drawable.media_camera; - } - else if (uri.getLastPathSegment().endsWith("txt")) - { - drawable = R.drawable.media_notepad; - } - } - else if (uri.getScheme().equals("content")) - { - if (uri.getAuthority().equals(GPStracking.AUTHORITY + ".string")) - { - drawable = R.drawable.media_mark; - } - else if (uri.getAuthority().equals("media")) - { - drawable = R.drawable.media_speech; - } - } - Bitmap bitmap = null; - int bitmapKey = drawable; - synchronized (sBitmapCache) - { - if (sBitmapCache.get(bitmapKey) == null) - { - bitmap = BitmapFactory.decodeResource(resources, drawable); - sBitmapCache.put(bitmapKey, bitmap); - - } - bitmap = sBitmapCache.get(bitmapKey); - } - return bitmapKey; - } - - /** - * Set the mPlace to the specified value. - * - * @see SegmentRendering.FIRST - * @see SegmentRendering.MIDDLE - * @see SegmentRendering.LAST - * @param place The placement of this segment in the line. - */ - public void addPlacement(int place) - { - this.mPlacement += place; - } - - public boolean isLast() - { - return (mPlacement >= LAST_SEGMENT); - } - - public long getSegmentId() - { - return Long.parseLong(mSegmentUri.getLastPathSegment()); - } - - /** - * Set the beginnging to the next contour of the line to the give GeoPoint - * - * @param geoPoint - */ - private void moveToGeoPoint(GeoPoint geoPoint) - { - setScreenPoint(geoPoint); - - if (this.mPathCalculation != null) - { - this.mPathCalculation.moveTo(this.mScreenPoint.x, this.mScreenPoint.y); - this.mPrevDrawnScreenPoint.x = this.mScreenPoint.x; - this.mPrevDrawnScreenPoint.y = this.mScreenPoint.y; - } - } - - /** - * Line to point without shaders - * - * @param geoPoint - */ - private void plainLineToGeoPoint(GeoPoint geoPoint) - { - shaderLineToGeoPoint(geoPoint, 0, 0); - } - - /** - * Line to point with speed - * - * @param geoPoint - * @param height - */ - private void heightLineToGeoPoint(GeoPoint geoPoint, double height) - { - shaderLineToGeoPoint(geoPoint, height, mAvgHeight); - } - - /** - * Line to point with speed - * - * @param geoPoint - * @param speed - */ - private void speedLineToGeoPoint(GeoPoint geoPoint, double speed) - { - shaderLineToGeoPoint(geoPoint, speed, mAvgSpeed); - } - - private void shaderLineToGeoPoint(GeoPoint geoPoint, double value, double average) - { - setScreenPoint(geoPoint); - - // Log.d( TAG, "Draw line to " + geoPoint+" with speed "+speed ); - - if (value > 0) - { - int greenfactor = (int) Math.min((127 * value) / average, 255); - int redfactor = 255 - greenfactor; - mCurrentColor = Color.rgb(redfactor, greenfactor, 0); - } - else - { - int greenfactor = Color.green(mCurrentColor); - int redfactor = Color.red(mCurrentColor); - mCurrentColor = Color.argb(128, redfactor, greenfactor, 0); - } - - float distance = (float) distanceInPoints(this.mPrevDrawnScreenPoint, this.mScreenPoint); - if (distance > MINIMUM_PX_DISTANCE) - { - // Log.d( TAG, "Circle between " + mPrevDrawnScreenPoint+" and "+mScreenPoint ); - int x_circle = (this.mPrevDrawnScreenPoint.x + this.mScreenPoint.x) / 2; - int y_circle = (this.mPrevDrawnScreenPoint.y + this.mScreenPoint.y) / 2; - float radius_factor = 0.4f; - Shader lastShader = new RadialGradient(x_circle, y_circle, distance, new int[] { mCurrentColor, mCurrentColor, Color.TRANSPARENT }, new float[] { 0, - radius_factor, 0.6f }, TileMode.CLAMP); - // Paint debug = new Paint(); - // debug.setStyle( Paint.Style.FILL_AND_STROKE ); - // this.mDebugCanvas.drawCircle( - // x_circle, - // y_circle, - // distance*radius_factor/2, - // debug ); - // this.mDebugCanvas.drawCircle( - // x_circle, - // y_circle, - // distance*radius_factor, - // debug ); - // if( distance > 100 ) - // { - // Log.d( TAG, "Created shader for speed " + speed + " on " + x_circle + "," + y_circle ); - // } - if (this.mShader != null) - { - this.mShader = new ComposeShader(this.mShader, lastShader, Mode.DST_OVER); - } - else - { - this.mShader = lastShader; - } - this.mPrevDrawnScreenPoint.x = this.mScreenPoint.x; - this.mPrevDrawnScreenPoint.y = this.mScreenPoint.y; - } - - this.mPathCalculation.lineTo(this.mScreenPoint.x, this.mScreenPoint.y); - } - - /** - * Use to update location/point state when calculating the line - * - * @param geoPoint - */ - private void setScreenPoint(GeoPoint geoPoint) - { - mScreenPointBackup.x = this.mScreenPoint.x; - mScreenPointBackup.y = this.mScreenPoint.x; - - mLoggerMap.toPixels(geoPoint, this.mScreenPoint); - } - - /** - * Move to a next waypoint, for on screen this are the points with mStepSize - * % position == 0 to avoid jittering in the rendering or the points on the - * either side of the screen edge. - * - * @return if a next waypoint is pointed to with the mWaypointsCursor - */ - private boolean moveToNextWayPoint() - { - boolean cursorReady = true; - boolean onscreen = isGeoPointOnScreen(extractGeoPoint()); - if (mWaypointsCursor.isLast()) // End of the line, cant move onward - { - cursorReady = false; - } - else if (onscreen) // Are on screen - { - cursorReady = moveOnScreenWaypoint(); - } - else - // Are off screen => accelerate - { - int acceleratedStepsize = mStepSize * (mWaypointCount / 1000 + 6); - cursorReady = moveOffscreenWaypoint(acceleratedStepsize); - } - return cursorReady; - } - - /** - * Move the cursor to the next waypoint modulo of the step size or less if - * the screen edge is reached - * - * @param trackCursor - * @return - */ - private boolean moveOnScreenWaypoint() - { - int nextPosition = mStepSize * (mWaypointsCursor.getPosition() / mStepSize) + mStepSize; - if (mWaypointsCursor.moveToPosition(nextPosition)) - { - if (isGeoPointOnScreen(extractGeoPoint())) // Remained on screen - { - return true; // Cursor is pointing to somewhere - } - else - { - mWaypointsCursor.move(-1 * mStepSize); // Step back - boolean nowOnScreen = true; // onto the screen - while (nowOnScreen) // while on the screen - { - mWaypointsCursor.moveToNext(); // inch forward to the edge - nowOnScreen = isGeoPointOnScreen(extractGeoPoint()); - } - return true; // with a cursor point to somewhere - } - } - else - { - return mWaypointsCursor.moveToLast(); // No full step can be taken, move to last - } - } - - /** - * Previous path GeoPoint was off screen and the next one will be to or the - * first on screen when the path reaches the projection. - * - * @return - */ - private boolean moveOffscreenWaypoint(int flexStepsize) - { - while (mWaypointsCursor.move(flexStepsize)) - { - if (mWaypointsCursor.isLast()) - { - return true; - } - GeoPoint evalPoint = extractGeoPoint(); - // Do no include log wrong 0.0 lat 0.0 long, skip to next value in while-loop - if (evalPoint.getLatitudeE6() == 0 || evalPoint.getLongitudeE6() == 0) - { - continue; - } - // Log.d( TAG, String.format( "Evaluate point number %d ", mWaypointsCursor.getPosition() ) ); - if (possibleScreenPass(mPrevGeoPoint, evalPoint)) - { - mPrevGeoPoint = evalPoint; - if (flexStepsize == 1) // Just stumbled over a border - { - return true; - } - else - { - mWaypointsCursor.move(-1 * flexStepsize); // Take 1 step back - return moveOffscreenWaypoint(flexStepsize / 2); // Continue at halve accelerated speed - } - } - else - { - moveToGeoPoint(evalPoint); - mPrevGeoPoint = evalPoint; - } - - } - return mWaypointsCursor.moveToLast(); - } - - /** - * If a segment contains more then 500 waypoints and is zoomed out more then - * twice then some waypoints will not be used to render the line, this - * speeding things along. - */ - private void calculateStepSize() - { - Cursor waypointsCursor = null; - if (mRequeryFlag || mStepSize < 1 || mWaypointCount < 0) - { - try - { - waypointsCursor = this.mResolver.query(this.mWaypointsUri, new String[] { Waypoints._ID }, null, null, null); - mWaypointCount = waypointsCursor.getCount(); - } - finally - { - if (waypointsCursor != null) - { - waypointsCursor.close(); - } - } - } - if (mWaypointCount < 250) - { - mStepSize = 1; - } - else - { - int zoomLevel = mLoggerMap.getZoomLevel(); - int maxZoomLevel = mLoggerMap.getMaxZoomLevel(); - if (zoomLevel >= maxZoomLevel - 2) - { - mStepSize = 1; - } - else - { - mStepSize = maxZoomLevel - zoomLevel; - } - } - } - - /** - * Is a given GeoPoint in the current projection of the map. - * - * @param eval - * @return - */ - protected boolean isGeoPointOnScreen(GeoPoint geopoint) - { - boolean onscreen = geopoint != null; - if (geopoint != null && mGeoTopLeft != null && mGeoBottumRight != null) - { - onscreen = onscreen && mGeoTopLeft.getLatitudeE6() > geopoint.getLatitudeE6(); - onscreen = onscreen && mGeoBottumRight.getLatitudeE6() < geopoint.getLatitudeE6(); - if (mGeoTopLeft.getLongitudeE6() < mGeoBottumRight.getLongitudeE6()) - { - onscreen = onscreen && mGeoTopLeft.getLongitudeE6() < geopoint.getLongitudeE6(); - onscreen = onscreen && mGeoBottumRight.getLongitudeE6() > geopoint.getLongitudeE6(); - } - else - { - onscreen = onscreen && (mGeoTopLeft.getLongitudeE6() < geopoint.getLongitudeE6() || mGeoBottumRight.getLongitudeE6() > geopoint.getLongitudeE6()); - } - } - return onscreen; - } - - /** - * Is a given coordinates are on the screen - * - * @param eval - * @return - */ - protected boolean isOnScreen(int x, int y) - { - boolean onscreen = x > 0 && y > 0 && x < mWidth && y < mHeight; - return onscreen; - } - - /** - * Calculates in which segment opposited to the projecting a geo point - * resides - * - * @param p1 - * @return - */ - private int toSegment(GeoPoint p1) - { - // Log.d( TAG, String.format( "Comparing %s to points TL %s and BR %s", p1, mTopLeft, mBottumRight )); - int nr; - if (p1.getLongitudeE6() < mGeoTopLeft.getLongitudeE6()) // left - { - nr = 1; - } - else if (p1.getLongitudeE6() > mGeoBottumRight.getLongitudeE6()) // right - { - nr = 3; - } - else - // middle - { - nr = 2; - } - - if (p1.getLatitudeE6() > mGeoTopLeft.getLatitudeE6()) // top - { - nr = nr + 0; - } - else if (p1.getLatitudeE6() < mGeoBottumRight.getLatitudeE6()) // bottom - { - nr = nr + 6; - } - else - // middle - { - nr = nr + 3; - } - return nr; - } - - private boolean possibleScreenPass(GeoPoint fromGeo, GeoPoint toGeo) - { - boolean safe = true; - if (fromGeo != null && toGeo != null) - { - int from = toSegment(fromGeo); - int to = toSegment(toGeo); - - switch (from) - { - case 1: - safe = to == 1 || to == 2 || to == 3 || to == 4 || to == 7; - break; - case 2: - safe = to == 1 || to == 2 || to == 3; - break; - case 3: - safe = to == 1 || to == 2 || to == 3 || to == 6 || to == 9; - break; - case 4: - safe = to == 1 || to == 4 || to == 7; - break; - case 5: - safe = false; - break; - case 6: - safe = to == 3 || to == 6 || to == 9; - break; - case 7: - safe = to == 1 || to == 4 || to == 7 || to == 8 || to == 9; - break; - case 8: - safe = to == 7 || to == 8 || to == 9; - break; - case 9: - safe = to == 3 || to == 6 || to == 7 || to == 8 || to == 9; - break; - default: - safe = false; - break; - } - // Log.d( TAG, String.format( "From %d to %d is safe: %s", from, to, safe ) ); - } - return !safe; - } - - public void setTrackColoringMethod(int coloring, double avgspeed, double avgHeight) - { - if (mTrackColoringMethod != coloring) - { - mTrackColoringMethod = coloring; - calculateTrack(); - } - mAvgSpeed = avgspeed; - mAvgHeight = avgHeight; - } - - /** - * For the current waypoint cursor returns the GeoPoint - * - * @return - */ - private GeoPoint extractGeoPoint() - { - int microLatitude = (int) (mWaypointsCursor.getDouble(0) * 1E6d); - int microLongitude = (int) (mWaypointsCursor.getDouble(1) * 1E6d); - return new GeoPoint(microLatitude, microLongitude); - } - - /** - * @param startLocation - * @param endLocation - * @return speed in m/s between 2 locations - */ - private static double calculateSpeedBetweenLocations(Location startLocation, Location endLocation) - { - double speed = -1d; - if (startLocation != null && endLocation != null) - { - float distance = startLocation.distanceTo(endLocation); - float seconds = (endLocation.getTime() - startLocation.getTime()) / 1000f; - speed = distance / seconds; - // Log.d( TAG, "Found a speed of "+speed+ " over a distance of "+ distance+" in a time of "+seconds); - } - if (speed > 0) - { - return speed; - } - else - { - return -1d; - } - } - - public static int extendPoint(int x1, int x2) - { - int diff = x2 - x1; - int next = x2 + diff; - return next; - } - - private static double distanceInPoints(Point start, Point end) - { - int x = Math.abs(end.x - start.x); - int y = Math.abs(end.y - start.y); - return (double) Math.sqrt(x * x + y * y); - } - - private boolean handleMediaTapList(List tappedUri) - { - if (tappedUri.size() == 1) - { - return handleMedia(mLoggerMap.getActivity(), tappedUri.get(0)); - } - else - { - BaseAdapter adapter = new MediaAdapter(mLoggerMap.getActivity(), tappedUri); - mLoggerMap.showMediaDialog(adapter); - return true; - } - } - - public static boolean handleMedia(Context ctx, Uri mediaUri) - { - if (mediaUri.getScheme().equals("file")) - { - Intent intent = new Intent(android.content.Intent.ACTION_VIEW); - if (mediaUri.getLastPathSegment().endsWith("3gp")) - { - intent.setDataAndType(mediaUri, "video/3gpp"); - ctx.startActivity(intent); - return true; - } - else if (mediaUri.getLastPathSegment().endsWith("jpg")) - { - //:// - Uri.Builder builder = new Uri.Builder(); - mediaUri = builder.scheme(mediaUri.getScheme()).authority(mediaUri.getAuthority()).path(mediaUri.getPath()).build(); - intent.setDataAndType(mediaUri, "image/jpeg"); - ctx.startActivity(intent); - return true; - } - else if (mediaUri.getLastPathSegment().endsWith("txt")) - { - intent.setDataAndType(mediaUri, "text/plain"); - ctx.startActivity(intent); - return true; - } - } - else if (mediaUri.getScheme().equals("content")) - { - if (mediaUri.getAuthority().equals(GPStracking.AUTHORITY + ".string")) - { - String text = mediaUri.getLastPathSegment(); - Toast toast = Toast.makeText(ctx, text, Toast.LENGTH_LONG); - toast.show(); - return true; - } - else if (mediaUri.getAuthority().equals("media")) - { - ctx.startActivity(new Intent(Intent.ACTION_VIEW, mediaUri)); - return true; - } - } - return false; - } - - public boolean commonOnTap(GeoPoint tappedGeoPoint) - { - List tappedUri = new Vector(); - - Point tappedPoint = new Point(); - mLoggerMap.toPixels(tappedGeoPoint, tappedPoint); - for (MediaVO media : mMediaPath) - { - if (media.x < tappedPoint.x && tappedPoint.x < media.x + media.w && media.y < tappedPoint.y && tappedPoint.y < media.y + media.h) - { - tappedUri.add(media.uri); - } - } - if (tappedUri.size() > 0) - { - return handleMediaTapList(tappedUri); - } - else - { - if (mTrackColoringMethod == DRAW_DOTS) - { - DotVO tapped = null; - synchronized (mDotPath) // Switch the fresh path with the old Path object - { - int w = 25; - for (DotVO dot : mDotPath) - { - // Log.d( TAG, "Compare ("+dot.x+","+dot.y+") with tap ("+tappedPoint.x+","+tappedPoint.y+")" ); - if (dot.x - w < tappedPoint.x && tappedPoint.x < dot.x + w && dot.y - w < tappedPoint.y && tappedPoint.y < dot.y + w) - { - if (tapped == null) - { - tapped = dot; - } - else - { - tapped = dot.distanceTo(tappedPoint) < tapped.distanceTo(tappedPoint) ? dot : tapped; - } - } - } - } - if (tapped != null) - { - DateFormat timeFormat = android.text.format.DateFormat.getTimeFormat(mLoggerMap.getActivity().getApplicationContext()); - String timetxt = timeFormat.format(new Date(tapped.time)); - UnitsI18n units = new UnitsI18n(mLoggerMap.getActivity(), null); - double speed = units.conversionFromMetersPerSecond(tapped.speed); - String speedtxt = String.format("%.1f %s", speed, units.getSpeedUnit()); - String text = mLoggerMap.getActivity().getString(R.string.time_and_speed, timetxt, speedtxt); - Toast toast = Toast.makeText(mLoggerMap.getActivity(), text, Toast.LENGTH_SHORT); - toast.show(); - } - } - return false; - } - } - - private static class MediaVO - { - @Override - public String toString() - { - return "MediaVO [bitmapKey=" + bitmapKey + ", uri=" + uri + ", geopoint=" + geopoint + ", x=" + x + ", y=" + y + ", w=" + w + ", h=" + h - + ", waypointId=" + waypointId + "]"; - } - - public Integer bitmapKey; - public Uri uri; - public GeoPoint geopoint; - public int x; - public int y; - public int w; - public int h; - public long waypointId; - } - - private static class DotVO - { - public long time; - public long speed; - public int x; - public int y; - public float radius; - - public int distanceTo(Point tappedPoint) - { - return Math.abs(tappedPoint.x - this.x) + Math.abs(tappedPoint.y - this.y); - } - } - - private class MediaAdapter extends BaseAdapter - { - private Context mContext; - private List mTappedUri; - private int itemBackground; - - public MediaAdapter(Context ctx, List tappedUri) - { - mContext = ctx; - mTappedUri = tappedUri; - TypedArray a = mContext.obtainStyledAttributes(R.styleable.gallery); - itemBackground = a.getResourceId(R.styleable.gallery_android_galleryItemBackground, 0); - a.recycle(); - - } - - @Override - public int getCount() - { - return mTappedUri.size(); - } - - @Override - public Object getItem(int position) - { - return mTappedUri.get(position); - } - - @Override - public long getItemId(int position) - { - return position; - } - - @Override - public View getView(int position, View convertView, ViewGroup parent) - { - ImageView imageView = new ImageView(mContext); - imageView.setImageBitmap(sBitmapCache.get(getResourceForMedia(mLoggerMap.getActivity().getResources(), mTappedUri.get(position)))); - imageView.setScaleType(ImageView.ScaleType.FIT_XY); - imageView.setBackgroundResource(itemBackground); - return imageView; - - } - } - - public void setBitmapHolder(AsyncOverlay bitmapOverlay) - { - mAsyncOverlay = bitmapOverlay; - } -} diff --git a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/demo/OpenGPSTrackerDemo.java b/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/demo/OpenGPSTrackerDemo.java deleted file mode 100644 index 74979b3e..00000000 --- a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/demo/OpenGPSTrackerDemo.java +++ /dev/null @@ -1,309 +0,0 @@ -/*------------------------------------------------------------------------------ - ** Ident: Innovation en Inspiration > Google Android - ** Author: rene - ** Copyright: (c) Jan 22, 2009 Sogeti Nederland B.V. All Rights Reserved. - **------------------------------------------------------------------------------ - ** Sogeti Nederland B.V. | No part of this file may be reproduced - ** Distributed Software Engineering | or transmitted in any form or by any - ** Lange Dreef 17 | means, electronic or mechanical, for the - ** 4131 NJ Vianen | purpose, without the express written - ** The Netherlands | permission of the copyright holder. - *------------------------------------------------------------------------------ - * - * This file is part of OpenGPSTracker. - * - * OpenGPSTracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * OpenGPSTracker is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with OpenGPSTracker. If not, see . - * - */ -package nl.sogeti.android.gpstracker.tests.demo; - -import nl.sogeti.android.gpstracker.activity.LoggerMapActivity; -import nl.sogeti.android.gpstracker.logger.GPSLoggerServiceManager; -import nl.sogeti.android.gpstracker.tests.utils.MockGPSLoggerDriver; -import android.test.ActivityInstrumentationTestCase2; -import android.test.suitebuilder.annotation.LargeTest; -import android.test.suitebuilder.annotation.SmallTest; - -import com.google.android.maps.GeoPoint; -import com.google.android.maps.MapView; - -/** - * @version $Id$ - * @author rene (c) Jan 22, 2009, Sogeti B.V. - */ -public class OpenGPSTrackerDemo extends ActivityInstrumentationTestCase2 -{ - - private static final int ZOOM_LEVEL = 16; - private static final Class CLASS = LoggerMapActivity.class; - private static final String PACKAGE = "nl.sogeti.android.gpstracker"; - private LoggerMapActivity mLoggermap; - private GPSLoggerServiceManager mLoggerServiceManager; - private MapView mMapView; - private MockGPSLoggerDriver mSender; - - public OpenGPSTrackerDemo() - { - super( PACKAGE, CLASS ); - } - - @Override - protected void setUp() throws Exception - { - super.setUp(); - this.mLoggermap = getActivity(); - this.mMapView = (MapView) this.mLoggermap.findViewById( nl.sogeti.android.gpstracker.R.id.myMapView ); - this.mSender = new MockGPSLoggerDriver(); - } - - protected void tearDown() throws Exception - { - this.mLoggerServiceManager.shutdown( getActivity() ); - super.tearDown(); - } - - - - /** - * Start tracking and allow it to go on for 30 seconds - * - * @throws InterruptedException - */ - @LargeTest - public void testTracking() throws InterruptedException - { - - a_introSingelUtrecht30Seconds(); - - c_startRoute10Seconds(); - - d_showDrawMethods30seconds(); - - e_statistics10Seconds(); - - f_showPrecision30seconds(); - - g_stopTracking10Seconds(); - - h_shareTrack30Seconds(); - - i_finish10Seconds(); - - } - - @SmallTest - public void a_introSingelUtrecht30Seconds() throws InterruptedException - { - this.mMapView.getController().setZoom( ZOOM_LEVEL); - Thread.sleep( 1 * 1000 ); - // Browse the Utrecht map - sendMessage( "Selecting a previous recorded track" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "MENU DPAD_RIGHT" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "L" ); - Thread.sleep( 2 * 1000 ); - sendMessage( "The walk around the \"singel\" in Utrecht" ); - this.sendKeys( "DPAD_CENTER" ); - Thread.sleep( 2 * 1000 ); - - Thread.sleep( 2 * 1000 ); - sendMessage( "Scrolling about" ); - this.mMapView.getController().animateTo( new GeoPoint( 52095829, 5118599 ) ); - Thread.sleep( 2 * 1000 ); - this.mMapView.getController().animateTo( new GeoPoint( 52096778, 5125090 ) ); - Thread.sleep( 2 * 1000 ); - this.mMapView.getController().animateTo( new GeoPoint( 52085117, 5128255 ) ); - Thread.sleep( 2 * 1000 ); - this.mMapView.getController().animateTo( new GeoPoint( 52081517, 5121646 ) ); - Thread.sleep( 2 * 1000 ); - this.mMapView.getController().animateTo( new GeoPoint( 52093535, 5116711 ) ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "G G" ); - Thread.sleep( 5 * 1000 ); - } - - @SmallTest - public void c_startRoute10Seconds() throws InterruptedException - { - sendMessage( "Lets start a new route" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "MENU DPAD_RIGHT DPAD_LEFT" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "T" );//Toggle start/stop tracker - Thread.sleep( 1 * 1000 ); - - this.mMapView.getController().setZoom( ZOOM_LEVEL); - - this.sendKeys( "D E M O SPACE R O U T E ENTER" ); - Thread.sleep( 5 * 1000 ); - sendMessage( "The GPS logger is already running as a background service" ); - Thread.sleep( 5 * 1000 ); - this.sendKeys( "ENTER" ); - - this.sendKeys( "T T T T" ); - - Thread.sleep( 30 * 1000 ); - - this.sendKeys( "G G" ); - } - - @SmallTest - public void d_showDrawMethods30seconds() throws InterruptedException - { - sendMessage( "Track drawing color has different options" ); - - this.mMapView.getController().setZoom( ZOOM_LEVEL ); - this.sendKeys( "MENU DPAD_RIGHT DPAD_RIGHT DPAD_RIGHT" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "S" ); - Thread.sleep( 3 * 1000 ); - this.sendKeys( "DPAD_CENTER" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "DPAD_UP DPAD_UP DPAD_UP DPAD_UP" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "DPAD_CENTER" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "BACK" ); - - sendMessage( "Plain green" ); - - Thread.sleep( 15 * 1000 ); - - this.sendKeys( "MENU DPAD_RIGHT DPAD_RIGHT DPAD_RIGHT" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "S" ); - Thread.sleep( 3 * 1000 ); - this.sendKeys( "MENU" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "DPAD_CENTER" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "DPAD_UP DPAD_UP DPAD_UP DPAD_UP" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "DPAD_DOWN" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "DPAD_DOWN" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "DPAD_DOWN" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "DPAD_DOWN DPAD_DOWN" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "DPAD_UP"); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "DPAD_CENTER" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "BACK" ); - - sendMessage( "Average speeds drawn" ); - - Thread.sleep( 15 * 1000 ); - } - - @SmallTest - public void e_statistics10Seconds() throws InterruptedException - { - // Show of the statistics screen - sendMessage( "Lets look at some statistics" ); - this.sendKeys( "MENU DPAD_RIGHT DPAD_RIGHT" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "E" ); - Thread.sleep( 2 * 1000 ); - sendMessage( "Shows the basics on time, speed and distance" ); - Thread.sleep( 10 * 1000 ); - this.sendKeys( "BACK" ); - } - - @SmallTest - public void f_showPrecision30seconds() throws InterruptedException - { - this.mMapView.getController().setZoom( ZOOM_LEVEL ); - - sendMessage( "There are options on the precision of tracking" ); - - this.sendKeys( "MENU DPAD_RIGHT DPAD_RIGHT DPAD_RIGHT" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "S" ); - Thread.sleep( 3 * 1000 ); - this.sendKeys( "DPAD_DOWN DPAD_DOWN" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "DPAD_CENTER" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "DPAD_UP DPAD_UP" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "DPAD_DOWN DPAD_DOWN" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "DPAD_UP" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "DPAD_CENTER" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "BACK" ); - - sendMessage( "Course will drain the battery the least" ); - Thread.sleep( 5 * 1000 ); - sendMessage( "Fine will store the best track" ); - - Thread.sleep( 10 * 1000 ); - } - - @SmallTest - public void g_stopTracking10Seconds() throws InterruptedException - { - this.mMapView.getController().setZoom( ZOOM_LEVEL ); - - Thread.sleep( 5 * 1000 ); - // Stop tracking - sendMessage( "Stopping tracking" ); - this.sendKeys( "MENU DPAD_RIGHT DPAD_LEFT" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "T" ); - Thread.sleep( 2 * 1000 ); - - sendMessage( "Is the track stored?" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "MENU DPAD_RIGHT" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "L" ); - this.sendKeys( "DPAD_DOWN DPAD_DOWN" ); - Thread.sleep( 2 * 1000 ); - this.sendKeys( "DPAD_CENTER" ); - Thread.sleep( 2 * 1000 ); - } - - private void h_shareTrack30Seconds() - { - // TODO Auto-generated method stub - - } - - @SmallTest - public void i_finish10Seconds() throws InterruptedException - { - this.mMapView.getController().setZoom( ZOOM_LEVEL ); - - this.sendKeys( "G G" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "G G" ); - Thread.sleep( 1 * 1000 ); - this.sendKeys( "G G" ); - sendMessage( "Thank you for watching this demo." ); - Thread.sleep( 10 * 1000 ); - - Thread.sleep( 5 * 1000 ); - } - - private void sendMessage( String string ) - { - this.mSender.sendSMS( string ); - } -} diff --git a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/userinterface/TrackingOverlayTest.java b/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/userinterface/TrackingOverlayTest.java deleted file mode 100644 index 8d4e84f6..00000000 --- a/OpenGPSTracker/test/src/nl/sogeti/android/gpstracker/tests/userinterface/TrackingOverlayTest.java +++ /dev/null @@ -1,61 +0,0 @@ -package nl.sogeti.android.gpstracker.tests.userinterface; - -import junit.framework.Assert; -import nl.sogeti.android.gpstracker.viewer.map.overlay.SegmentRendering; -import android.test.AndroidTestCase; -import android.test.suitebuilder.annotation.SmallTest; - -public class TrackingOverlayTest extends AndroidTestCase -{ - - - @Override - protected void setUp() - { -// mTrackingOverlay = new SegmentOverlay( getContext(), null, SegmentOverlay.DRAW_CALCULATED, 36d, null ); - } - - @SmallTest - public void testExtendDoubleNegative() - { - int extention = SegmentRendering.extendPoint(-9, -4 ); - Assert.assertEquals( "Extension should be", 1, extention); - } - - @SmallTest - public void testExtendDoubleFirstNegative() - { - int extention = SegmentRendering.extendPoint(-4, 9 ); - Assert.assertEquals( "Extension should be", 22, extention); - } - - - @SmallTest - public void testExtendDoublePositive() - { - int extention = SegmentRendering.extendPoint(9, 16 ); - Assert.assertEquals( "Extension should be", 23, extention); - } - - @SmallTest - public void testExtendDoublePositiveBack() - { - int extention = SegmentRendering.extendPoint(16, 9 ); - Assert.assertEquals( "Extension should be", 2, extention); - } - - @SmallTest - public void testExtendDoubleSecondNegativeBack() - { - int extention = SegmentRendering.extendPoint(9, -4 ); - Assert.assertEquals( "Extension should be", -17, extention); - } - - @SmallTest - public void testExtendDoubleNegativeBack() - { - int extention = SegmentRendering.extendPoint(-4, -16 ); - Assert.assertEquals( "Extension should be", -28, extention); - } - -} From 580f253b9275065bb1dbb15161d42e3ad2c48eda Mon Sep 17 00:00:00 2001 From: Rene de Groot Date: Sun, 6 Jan 2013 08:48:04 +0100 Subject: [PATCH 05/12] added play services --- .../google-play-services_lib/.classpath | 8 +++ .../google-play-services_lib/.gitignore | 2 + .../google-play-services_lib/.project | 33 ++++++++++++ .../AndroidManifest.xml | 9 ++++ .../google-play-services_lib/README.txt | 14 ++++++ .../libs/google-play-services.jar | Bin 0 -> 231342 bytes .../libs/google-play-services.jar.properties | 1 + .../project.properties | 15 ++++++ .../google-play-services_lib/res/.gitignore | 0 .../res/values-af/strings.xml | 16 ++++++ .../res/values-am/strings.xml | 16 ++++++ .../res/values-ar/strings.xml | 16 ++++++ .../res/values-be/strings.xml | 16 ++++++ .../res/values-bg/strings.xml | 16 ++++++ .../res/values-ca/strings.xml | 16 ++++++ .../res/values-cs/strings.xml | 16 ++++++ .../res/values-da/strings.xml | 16 ++++++ .../res/values-de/strings.xml | 16 ++++++ .../res/values-el/strings.xml | 16 ++++++ .../res/values-en-rGB/strings.xml | 16 ++++++ .../res/values-es-rUS/strings.xml | 16 ++++++ .../res/values-es/strings.xml | 16 ++++++ .../res/values-et/strings.xml | 16 ++++++ .../res/values-fa/strings.xml | 16 ++++++ .../res/values-fi/strings.xml | 16 ++++++ .../res/values-fr/strings.xml | 16 ++++++ .../res/values-hi/strings.xml | 16 ++++++ .../res/values-hr/strings.xml | 16 ++++++ .../res/values-hu/strings.xml | 16 ++++++ .../res/values-in/strings.xml | 16 ++++++ .../res/values-it/strings.xml | 16 ++++++ .../res/values-iw/strings.xml | 16 ++++++ .../res/values-ja/strings.xml | 16 ++++++ .../res/values-ko/strings.xml | 16 ++++++ .../res/values-lt/strings.xml | 16 ++++++ .../res/values-lv/strings.xml | 16 ++++++ .../res/values-ms/strings.xml | 15 ++++++ .../res/values-nb/strings.xml | 16 ++++++ .../res/values-nl/strings.xml | 16 ++++++ .../res/values-pl/strings.xml | 16 ++++++ .../res/values-pt-rPT/strings.xml | 16 ++++++ .../res/values-pt/strings.xml | 16 ++++++ .../res/values-ro/strings.xml | 16 ++++++ .../res/values-ru/strings.xml | 16 ++++++ .../res/values-sk/strings.xml | 16 ++++++ .../res/values-sl/strings.xml | 16 ++++++ .../res/values-sr/strings.xml | 16 ++++++ .../res/values-sv/strings.xml | 16 ++++++ .../res/values-sw/strings.xml | 16 ++++++ .../res/values-th/strings.xml | 16 ++++++ .../res/values-tl/strings.xml | 16 ++++++ .../res/values-tr/strings.xml | 16 ++++++ .../res/values-uk/strings.xml | 16 ++++++ .../res/values-vi/strings.xml | 16 ++++++ .../res/values-zh-rCN/strings.xml | 16 ++++++ .../res/values-zh-rTW/strings.xml | 16 ++++++ .../res/values-zu/strings.xml | 16 ++++++ .../res/values/maps_attrs.xml | 25 ++++++++++ .../res/values/strings.xml | 47 ++++++++++++++++++ .../google-play-services_lib/src/.readme | 1 + 60 files changed, 922 insertions(+) create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/.classpath create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/.gitignore create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/.project create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/AndroidManifest.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/README.txt create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/libs/google-play-services.jar create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/libs/google-play-services.jar.properties create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/project.properties create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/.gitignore create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-af/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-am/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-ar/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-be/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-bg/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-ca/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-cs/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-da/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-de/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-el/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-en-rGB/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-es-rUS/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-es/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-et/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-fa/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-fi/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-fr/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-hi/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-hr/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-hu/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-in/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-it/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-iw/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-ja/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-ko/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-lt/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-lv/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-ms/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-nb/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-nl/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-pl/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-pt-rPT/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-pt/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-ro/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-ru/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-sk/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-sl/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-sr/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-sv/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-sw/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-th/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-tl/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-tr/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-uk/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-vi/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-zh-rCN/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-zh-rTW/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values-zu/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values/maps_attrs.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/res/values/strings.xml create mode 100644 OpenGPSTracker/external_sources/google-play-services_lib/src/.readme diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/.classpath b/OpenGPSTracker/external_sources/google-play-services_lib/.classpath new file mode 100644 index 00000000..3f9691c5 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/.gitignore b/OpenGPSTracker/external_sources/google-play-services_lib/.gitignore new file mode 100644 index 00000000..7792e06b --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/.gitignore @@ -0,0 +1,2 @@ +bin/ +gen/ diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/.project b/OpenGPSTracker/external_sources/google-play-services_lib/.project new file mode 100644 index 00000000..06ae985e --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/.project @@ -0,0 +1,33 @@ + + + google-play-services_lib + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/AndroidManifest.xml b/OpenGPSTracker/external_sources/google-play-services_lib/AndroidManifest.xml new file mode 100644 index 00000000..84e6f748 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/AndroidManifest.xml @@ -0,0 +1,9 @@ + + + + + + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/README.txt b/OpenGPSTracker/external_sources/google-play-services_lib/README.txt new file mode 100644 index 00000000..cf6f1859 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/README.txt @@ -0,0 +1,14 @@ +Library Project including Google Play services client jar. + +This can be used by an Android project to use the API's provided +by Google Play services. + +There is technically no source, but the src folder is necessary +to ensure that the build system works. The content is actually +located in the libs/ directory. + + +USAGE: + +Make sure you import this Android library project into your IDE +and set this project as a dependency. diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/libs/google-play-services.jar b/OpenGPSTracker/external_sources/google-play-services_lib/libs/google-play-services.jar new file mode 100644 index 0000000000000000000000000000000000000000..b54200b1bea3890e4f14efc17f47112352d07f7b GIT binary patch literal 231342 zcmbq*bx_>f)@5)H?(XjH?(QCFym5C41R8gj;BLWPf)m``A-F?u$Z+p{_07zydH1_D zAI-0eD*k}I&R%D)z4ke+A`bzH@d5VzWtayN{qTQ$VZ8sWD5)XJD61sJtSG7^D-VH!(I@uf{URzV*|YNluYLR&m;`91j!Z3$|Er$0SD z04M-|Ar-BmuRbe+@z$h>uNNfNii-gT2BhWKNXBAT5iKA=WZ~IeO{nJ7K~sbnR=(7J z*t?8~(Yg}#yY3B(iVm!QgCZ#kKL^Yy|Y;dIi-s0+L$Y?&{rY`B7^6i3rZeSi_O zSu?7Fro5%Xge?%34^3vrHKE~+0>f3#Nh^YhwylVVTJjr)pX{9YH)#yPUtzmZQb0C5 zrfm=i)nJh&5P)UV=cdj~gKiK0whW}7tyy3Lh zXi?{~NJ$C#i5=s7TF*QZguHd&H|ahCcCQg8*zf$=&3B$wQ-T!T#562+CFX3?L?zM% z-4ub{g(E6oA8lp}?!28y+<7ON^3y}pi3TpmtW&Ud<)yXeR4t|Nn&Hsujy&dc^QbKB zAZ|vCW`7*tga=MbpA-cA`1h&D#W6%em=_n5fnNjuK8S7|ZK>=wt@N#RCn@w~&G-qs z6>s%fyi(2?{2dG(UfWg6SmtM>4Ygmm?$DC7%Ry%ky)K>uoz*4ZdLrsiPGkptFD=?IE2h$)0a?CaU*!H(Hd2ue{X99`L-{p z>8adGiM4hRv~vP+GI1bv+5_xaFN0i<6XvO%iWnBoU`nuZOh=6W$p*ADi=E0QcnNOm zIhE$<_~MImZfuM_E5TnN$n^k*q~CsyYLF{(?;ww%Bf{vWi7!5;p-0si5G3)J7yhVCEG2H@~ttkJYn$JfO0x0hKmTb@Ia zrff?Y18RvP#n>$_-XmUr@-!RrU8}vD&*Oubm}EY0k6u z)mU>u9Uail;BxDrA zrL|`#HzziPy+8KbLy8*^ZV-_Em!v3bSXN$FS&WN}P)%2yUojV|&pJ{vI_;05&6&R;YG z%?4~_z;5nl+iY#((tw)bX+}WauQ7WkwjS*)j{113-iOb48;vR2o7)@sd5DzwRUc8C z*dWI$DwCI8Ge_XWa;o5@w|alG>2AHyMq%(Q=4gYnLmY`EWx4B@gT60u0cQ|UWNd%; zJ2+Tq;xa|ij3GiQZ;gD%F_g73AciyWm8FP|ya+uL;fiS?iR1qPF!6)ehWlX* z4vX;wJ#WxRj!!Lill^p2B=c#YKmICZwXC}#wn3cB(#_1VAE}Pt(Orjz&~sf2sxFVu zJ=HVvh7@6gBPaN+qU6&qiQJay3Ys^`)HNyNECFi}pZ3a-+0lpADnEkOps@X6vL~5#E(ULU}_D@3RL%w_OzVB>2yxNj&~0G4<}{9E!)0edx~!{r%mQF zYClpeg9a?W+%&B^XWLPfN*~Dk@c4KZIsoopmSNFW$h1H9o7W!T#l}IX_5XYU>?@AY zf~Rcf(HRu|+I9v`0ML`o_Kp4^?rCPb2LR&3hjWxVUyXm#=;^P1Eatrm{X)SywA|jHGsSHPxwb;a9z#J2uuDYB> z(;$*GN(hPcR?b<5oV6$q2_gYe)>$WkJb@sYqD-_8O!kShzgGAo)EB2xp3+^0x&(q* zr;pgKQCm?lvIL7xgw(EU-+_ec!zXEjw1nL83r+~QgzUpdX~|vYaIMjah}&i(W`}ac za>$S9_H!-joEGo3t9;pfd-AUujU8RRl zU*94s0@tcw%Pt}B4P!+!JuSkeyUzIBpx0dqwxbt4JDFroH#ZmqRM5pwCXxc3K!)RG zUr1ky5k>%qYeH33-y0EK`5EikZeJVmK-pB!Q96!(wafV8{P%wL;|@xJQc|%D-FL&+ zC)r+Ihm!~6s`=b4eHFc#m>cN&`7m#f6u8j8!*TPU`Cf==!cS_xRDaHT#0rW3fZ-JNEQC79dq=wL;9mM`u^$O~QnJy;sVom@S^4T=j{*0a7naP%F&@62{Kv@i|eK5qCLbZ*}*E#y+9} zG~Yjbxi1+>?DuhD^J}h4O70+E6|u}?%#CNMHFTKz1?KGzB}iIHW}vc3)(daVH=Pnj zF$aBzk>3j4hBobRI7W+fsw6>a6A)>|q>x{ibUwb{mK?j(ih-e8Xq1PRe~UcZ8oDx9 zI)+Lq^{iXKSUK$;lZz7m3jPQ6?&9L*DBh`u1O0c@qxlEa133JpGrwv-2B0sZ{$@&9 zZtVE13r+zYBnz8jZW}@o2aR6J{CxmAh;;5KUZ^m%Luv)HB0099NIPL;d>Z{;CWB}y zrMOVi28}!TlT+r#yY*~(L_uY|)_sqcW(SF{fo$!PAf5Ojl=J%zkX|9OImQ2z<6=NI=9CMt= z{6G(UmSM-J9+Mhesr(i&rKGHnEFBTso*3NQEPaBAtu!X5xp3mD{ppdroQU_5(};_$ zS8f8;yZAgsyO|FSF%DOQ_m`gtH-|D^Up`#SU5R4_1alugz$qO*&~6m%T6#9e;HyI)#%#BP%k25e8gftrsV_&3UTiBGq3c&c*g7Ul|ag%;-ME0at! z%Oqx+41lfSL^%z#Eg-JY{u&vx;AExS_84H1B?B>mYoSczaouNMuNPMMf6C{z+KCg+~+6_a>d(M~wzUh3oi>lZfwj!;!0ngb*`rx1`|q_u!8~+*tUMwn; zTlr8MuVFInV&Osfxi1!4D^S{^w9WIGmwbzUDG~{tDLbZFh;}}kL$g%A%Y_&-F|aO zk^>aN7Qi}bG|GZ zLfUwJ9j>E&A}No~V4RCgxKeAi1iH9T&W<8fXMm$9sKx<4Z@$4pFTx_^&J9@XONfb* zThI-y;EV5*EsYT@ZRZC+Z`PzE!b5d$c(nQ4sV~>6y-o@41$e0Wt2^jR_&NQG5F?Ox z7`41z4Yk!_t9r#M{NbQLxQ2^p2Zo(HPkGd;!WQq`WgXtYRLt6+wBPTQFJ`7}V9I5n zoBA`Oy^+@?DZ=#6UAWOp9@iNAtFEWqP;DZYBzhZ(_##_4FH5EhZr-LgBQZ=lr)RHR zS{}Wu6eb2S-ScXWcx~;emYhE_O4#2_tv1Jl$Ks=^sZPx3Rn(4&5Ahs>cP;m6A@g%X zODWhNM3*?xh?!fZi^N{cif_`+*+nM>pO8&HO5fwE7Fg_ho$?WITfdS&O%!bQ^|a(Y zlVO<u-m$MI|nK)e4 zI1p4swXt>g>)>5es}l06yHPQ0n3`+%(Q~Dl*cG&$TE^Daj9swIu?1ArmX2}b zMV1U0D@2m2v4V_JOsyzJSSxpMifaVU0rxyu=w1UnbHlU}BT})u5>^cy9M@k2@a=!& zI3PCX6sBxZ`2;m_D{k*mEFdb7DOI%zpF$yf;3B{Z5Tv!LV%jQf#eA|pXlz)O((WL) zqW--L$jr;Syu9vXz+DU;-vRj4I1)B1>gx3%?QKtplv67t-O1GkBuwR|EzUX?C>3;n z;hveA`;GiZ0amLnaHN0Ny>iHZSAhRv)5`iUQ!Jtfu2%#@!qU{W0Jazst~EgIi{~ZD z!lhygC*Vfd?8|^x&4)-dZHDiGULAp6oy5u?kQT7$5o}a(PGe@EqdOn!GaXiNZI#LF z`5{r&mhuHV1wd$Ip4G5~I_R?M0%=FV#7rVj4r z&Hxizb0r5?pasy}Ow!ZT+|d>2VEOz!DbrC9sUm6Kmdsoh;j%{^5f$k z9GIl&j;-FxDsCEgkS5DtvCr}fHl@Eu*7CQp%l@O-RcrxX>gLYwKvQ!UQFj2)7GMIj z1-g3u8y?9jit>FT7+H2RgM$yM%<$PAMLlhv=yYOmWPwEex%X!l;T1>K6syL+6R|~6 z1s)(?RClN}E-5@Sylyr+?$ai}-6MY(!tq?XtXYN;os@=I{~+`P)`W_}v&}-v1D|+A zSb@u!HUhMkE4#i*Dyy7hD=?rZPs)=;*xg3zp?TT#z0jZoPQb3|SO$GwDqvl7$*}o~ z9rUJi<0ZM=yEYT4)y=TPhH1{&T1v&42$lImEaT@RIX1GCwWQ~BQFA$3+D1jKRNopb5PS2 zX!{owu>&XU>H@h*@_%R(d+=dC9c>{+ds_aB{`v7eoe zvGMEUNmOx@Y*<2JB9}Hx8l#8nX%t4>`)!iFw*%Kp=vaBK7p+zl%r6rQEZE&ohP%9ZwtW@CtfKXimKhdtznF^50Yg?$TqC=dG<{?Hb75%G{6b`kjy7)BiN5FbVy z`H&hG5cv=rCN1%zjX?r0#;Mg8UklIF=VHD>Wab$j#p#(B)##ZXg;IyO$SRPy?TveK zNd`(Cu?ik^4Bj3<&Ou5lK0pfULtJDr!^x&JCEr0@ z99e=i9BdtXfy8-lF0z?-1)|s~aH(*paI?oR2|%W7T=h#>APW$dJ6je^BI$r*eUz3C zeDReYNFT@E+>^Ku2IpMs60Sq3=hZVhXmY0tv6;O?y@&e}8gx(h0QV_xtK@;CPY|A{ z*ACtv^o%JmrYt;^iTMKlP2*Btf%XCOQ}x!OXF<^BmL|M^q&EEnVa0F3je;%Y%C||| zYi7iN0ey@YBoEpLn2oBf9M42D26DJOv>{B=&-e6Vn9dO-JB4CDT}#AhJLOT$Iuubc z)ad4RenqH+dcc)h*@t_#NQ;=d$mdv460FKd>@@v6PQgFg{#Dv;_`MCSMAad$Pg63~ zoodE%6}V3NB$rP-6Jv#{UY`&TSY)l-bD!K0LPoB!YM_{WQoAM8?Nji~m;}a5=*`U> z4Sznv+m$kKL0VmzSZT&&&GO2$8WmXXY)dBjS>L=YlJAn@L&agK(@j;O@8tJPq_xg^ zv3B2L;HYEl=c234^I{lDFv*J-yQ(`nF41;_{F+fj*{RaNO!bMa?&sr=WrR^;>4L~P zk-83pR;!ev)JY|wH~HGV%~YsrZw_!ujid;Zo!_&%YfSugTD^1fnXPY5-0Dp#^6A}I zSKPnT#HU-PQuFh5)(zw)g_J85(ytzt*E&4AV33JscI~@HQ&ezVAgncM-~5VxF)U~m zJzz(Q-PP2egQnPU5^W>c=CH8qd11BRJOH1eHfnWD7zHiCgMp!A|%eXpzu6?JY$tB7=(!-tP@agK38noW$Wty~I2O^cBlm7v5X6GM8C1b*Z>M)6{5YCEk6#vur6=!0;fnH03ad__Jtj!euLQC5lSeHs#_U$rM zxk+3wdMu7TU%fYo8X2&Y$S4%YPSxrY1Q^{Fbf1Kb$ZC;q-eB{3d99EP%!Te_mx@LN z0k)mu(WuSpgtFf*A*Yhn;$NuLE-BMTB$nLGss$~4WJNrIXpf*{UVay+tLJFbG}j}t z#8s@>UUTlkA-fS$>>Jz-cR~1R-}S?AvMYp_(lTRKx8MxE7bV;5I zPBf|HQgRpEH0c`1;IUCoV1Z8R^4Hn$`DA74UD~MbC9}mwi}j7P=zgJg>KQ-QIUDlO zBR|dev!7bqb0y})Fl>xQ^IxzhL_{5i9O!wUmt50o*b$!HtBtEdAWa45SyT32QZ)LG zbXR`}mm$9ce2x0XC~(fb7XEm)%#!Ei5~X`n3Xc@Do{@Msj*PMKado%48xt|%<^Wq! zVWPsp>XBf+BuuI}b(8OwKQf+HU(4VEX#Q53kGAZX$Qla^Mi5z{gSin@Z#E>zX8wlN>c1L$= z0DE=A!g?1s)p7g)q4}AcHEhK^f1VAs@l64p!Tc2&@mID7~~K)?eYl`8kF)eK!BwtOYjRCGWim~&9aasFtNazS%L z5Wg?fs*He$4gTgC{EXU(4R7Fx`%FU?v*)rJNA@M>aba!50*=k;9a$|UR%M#l>0J7; zc%TWmWFk3VG<74)$KA%mwAAeJj@CqX49>n{iwu*75;t4-pO>tv; z3}8!+{q^Wy$*sJ5-L(Ld+ceY3)B#~*IYof5pu8;-P(z1fl_@p(#$}|=`4-dsd~GA+ zja$XJXD#h0Y4b5&V3zHTKX0-jNGotb#1me5oOn0j4`qfFwO1(s_u<0^=HGQsLjR32 z`?v1t|IsG+{V9u4{1OKT3v2zGumrv23+g=4F+?RK4rNs@TNG1pfFAN~SOF(#3vviD_~`tq*)ISW{?LQ4Wh^8?*m!{k(&<41kXw5c zDj_76kg=}N*$sHX!32+6tyKFdT1kB6=S|3`cB5jli$AH{^Ps-0Ki5EZ`MOFTBrdZC?tO;~oh>~VGVy&Ds@7k9 z6p5lh4K(19G{Q_#3{Z?Ugh}1FMI$7kmMzcM-zcF8+>i^IcK+O$zT!h5Q6`)@*H5)A z&k~PME@2`$(UT|Cay)Kdi88U1Ej1kcix`x%I*i%Xp%fJ@lBYT9?Q6(M96ulbT44gS z`(7K`mmz&PN06_1)3BWj=-!s?tGE960R0E{jSX!OIPbV0{w?ZThs%A*3Eja%GTY1k}C%5l5@ST$c@aIDe$ip{+r!T8TE z&p%l;i~pM9s*l>gpIH)2z!Qo}NlHa(M8B{jRcATX zj2Gnea!*MvseqvcA<6h+?C{0XVTul<9C+_%@!qp~_`klrV1CCmn8+_S(HzK#aKpr> zQ^0h?L_(s)NXRP{?V&}Y!{RV=VvFTXa?R>9Vau8Z80$)-%kwd4xGwRG)>zH07`XR- zKUoqr<8KyNMg>FyCQ1cOO7SN+d~-spFZJ0|vR2eVCxZ-CdaFp@?%c3#T{YC6&DhJ? zQIa&R4i|CVMaw?4ph4AsS@$zX?S_^17tUrsruMr&o?EkKPI#}uCt(bnk@}^=gw}0Y z=B^*Pw$Ow<-|gA0JT}_$iG2d2a9pM3Q0<=tA|MrUEp^hI*&=fC9z4{f!wa5R8I-F8 zQ94PmLN{>g1Tsz;FM0OQBl`$&GBiHfyni#8sCrdRWbX-1HfH%udW7H$fAs3kq0xvH z{0N#i<+Vw=dOV_-Q^dC#1+dR?+abmD6eEzW!-2lJzEDQ@p3$@%tq6Kd0V5 znqr##wLKSU+PTb1q4+atF|48@1yjv277fXlRdtk3VMiopq@sMcg9Thp1>TJg@X?#> z@yAlYJk0!__CLPGE@Y2W7)7+}zLR!qOUN3eut>laxZYSlUS79!(DwNK@;pTU0o(E0 zXJ&+l^3UH8O0gXm``yqZsqE9N(jEr;o2gP1*H~-SB#27nD1>P8KHtmJ>?pvQ@}!3$ z%ku=yQg%ROht-Gka6_XL>ppRvIgCZTG_HJd6bxmB9XQs#k?j=NbOFWWJ)z6A^$(hz ztG2zfLeiFRo;3V?De1^;b$D_=Sk4%5Srrf~)UUcOXi@LQuCwLucO(-Hni{M_*otLM z#$T1V;|R-4=nx#t1~)_US1GH%e!{qMt0isqrPFh|j9S%`&1_Gw6+gPRKXeH547Jb? zr9Gl9Yh6`#i@DJ}cEDAO&KXDftX3jTBS#+*Vl7*}TDES}gPrj!iq!o1rOFHa%y7Xy zr^)ZbMRUmldf>)-0i#W}FG4{NJVL*-^AYKN_@gVy17U0?21( zL9QvphVuFoCEwxzzLV1f-#s{^N#e3$*VVIl<=ICoTM6AAUdW}3#QCdF2`WZ{Z9_5IK2g9B@q-`Bk4L3lfhwt*&jhk< zA7nm}jblWUbEKTw5!9C$8NYB-bR)jfuG4F?tPd$AFc#E4pgo2L3%Bupcx4D#@jLv+ z687P;;FbGY7%=vR@OXf;*$^O|4)F3uNc6C1VyR_&9(jPew{XF>ky>8r4bM@f$LH|+ zW{YBFUC;G|W{OO$Ef@wRLf-PMHmL+fa5Y4FN6MczWIEiR-f({S=|s0L|T|?;G(S#l&1Urr!6R&FTN+BSB^qY=2QYTFuY~UG%+}RN~g# z+v%CwL^lHQIhVDhC3DE~A(KT4gO=`(&TGE5r3bFFath0{&r!*dI+i1F9FwQ~YC0ej@aaP|sQRNdVqr+n?D*y_~_kNujrIage~8?S(x z{Noi|zL{eUf`klkear7K@nMk<^LD>tq(ny--s38CaF);HF2k zw0rL7OZ*JyS`jqA^ybn+9A#EWS~1AnYjhssvM}}oE`y4YAZ6u^b&2ier!e4FPum)lOi!oMs zpU6XI!g0MK{KP;sBIF2{3&`tY3-Xwic>6k@XTvYRmJMwY8vC*8ZBr>>MnTXq1Ygih zhQl|LeM|r~M+4~8kWZ^_9F@QWz6PotbnqAD2=LJNojea%>GTCF_=mDGO7CV$MkZq zVU3kr$NnEFwGtItrP>A3B$5U*6%aJucAulVgg%#Jqd}Pc5_A6C@CL_DOoHEsRUM_h zABOA1@aQj~JV%wy2VZ}0j9|qz7{{1@EgbBr^ka> z)^vAUdFRD)qgWo}8@u9H>eX#wcP~_?vZs4&=E#E&n}`|~L@&f&ssGr$?Ny#Wl)Sgb z2!GqaQUB-W`M<7tSo{@xNOUbyFAIjmg?N~3ZZ6<6>=Uy^uJZt5PJb;LZ*|(7C1vl6$s4Gxpszt{OLQ9WoPckg+*ijGl!>qu!37UYpuF8U9UI}yC3zcI zMSQ9zQXR{O&?VZd8j?>0_rbG9`&me#szkj?9Y0t7IL-{vv}od9b;OqTs&A@qjIidh z{|FFw;A{II6YZ||=RXV1e-a?@uK>SltUAxKpa_nPhnrf#QW_xG>B%uMGNn4pA3}tL zD$QPtgpOSnuk>m^Yn+agBIKbM6B#mFNuUJKEZ#(#%x)nZ!~uuFFnRcu02|LY zK(82PA{Lg)0!slvs}D0$D`SDhVY`j1HJTQ|!|{h0IyUYg{rmz~zz@3|`bqzeR>rKB z9+ees57VPn`dU~of?$sLN{yVmE8ISlqMwk2s|ete*j(E7I5LZOeDP=JG#l|T>j{$~ z^}7!{d6ywWrqfd!X8}*LlJvCatM&!nw@Zl8(`3H^3kk;|j{0mfg_hFSRNxf_I8ArI zM9qW`=@zN4Ll1F2#bTTt^1lk>rGCT z(94B8E+42;kb#a+Wv0LgJ8Z>YTNVooQ-=BPCA=es*5lAjvYx2KGhi>{@&p7B`{t$y z!iQBdafQSvei++cSs8Xj;MO^-h$4n`bAQhBteGigL2fT}C5QkwN%$1bk@f};Ww>^m zPf@DvlM>iEHwb}qwm~PSYiM8zv_0>lZ+!HdfwX?^j z#@R3q3MT8*rdT|IcAvtc!+k6S>+fNPmCzI(k@oL1$-ir#|OwvuP=AdV> z)|cBl#d$cSU16I`9tDa(QO^=ZE zcTw9g5|IGh$Fwv`vtX%fq4Q)`qWgWBeiDW`qImxvl)%S`s6b*|h}k3{)*g%aypAvR z&bl+-&7Z3)xw>o|`o4E^{;j6@Cl|opt(5;VQ{sE%AXwiWN1#Whd-Tde+b2xSrV~<6 zErBI<(aU{7_uYg#MdSJh1Nexo9+=C#ezU6PASw#8{ofYQZ@&JW0UvmzM_4SDOw(9S zk*6euMIi@!;vErdP^jpjxD%tqB&Q^l%{@yVVf1iyb|JrtMx&IRW- z7?Gx>1Iju1bZbOHhi;_8&Ydf<4CpUjg_@39HoemSavG+1#P@z&rr)s)mc#+nSV-9k zq8u=X{7f} zD>{a8pMtAQ+*Q2aFTY-4J`eFY*Y27u4rE9AVV}`O=+vt;JFfS7BSBRzsPr~sqTms6 zInDM#tTok~^$ewiez+GTFz)LkZGx5TUQgfA?`7|%cjI7_rPy<%$qw~$j^Eo&>{d+- z$0l}7DwibH-(I=^S&*2R?r4MyXL!biTUGuffs^Fs)!yb&n3qp3*V(V{@c2C@?^-RT zS4_qSH0tEaYgYLAyVLzqHb3!&wuhH9o~*KS24Gz$G4xIIZ9@X`TR|h<*J8F&4XGua zwfLH@TnK<=I6sO^-7nbK>L-QZg`!`ND5=)&v8ifTtn{@blh;6-WAtM`FH%W5H-?Sd zC%Q3STUgBk{wIO2KR`?SxXf3^{Eo+N{6inum9LUsd2b4DLTT&l@_!ujpPtpJLs{Y&_rM2>1@DA@3lU1KKOw;*aD&@5ZVdd{2z6zh&G%Dd=W@rAC!b zcmVnk=G($B9mL6Kp*RPo4s<<|bZc+p7gdE;CTR=$_5>SdOj-J$E=Vt?F+9Z%S0yQ~E4 z^m{jyKgngwcVsAk3P-)IsPC~**(jcB#-h12H8ht=BD!1D;KG=mdRvy@2ax_umk5Ev z@Gr7klm4#83EM=VW|ofRZ96uKj&xG`0wi`e$UF8l#Ck+tT%nXl$KXI3e}&;VU8;Ho zi@GRuHgE<6NA~a5@WnVA{c$P4hIZVK>>cr<$}75ty@p>qPqCx`Ip*hj7`zD*HIT6mLbQS$b0U`QQlkT*`u!Sp~)} zfl!-01@J_DKDZl`m#82Z93qWNL0_ew`zul?$`0io-7(q+%C7P)?T5M`qg{OXluJ&i zgR75F-GN10%?e)7)R-?Hy`Z{>Rxw||F0?Kgln;49*f^ieJaO;oAMpF=EAKpfb$Wy^ zMWKG1`TXv+q^yKPijhA=KvF7|qO&|M)0yF57_TugHQ2C3l3kMQlx4@4&$Qqx7@+HS zq9$QCd_Qq?+@p zH;%@aW^d4J&6DRxMn4@*4_O9%syvu!_=Y?m3G)%h6j#v8S8Q^21c;G641$(uC!fph z%kKZozWBvjX?)-Acpkfq`j>`Yy@`iP&imqa*Ib4<{~UZuHYxd_6XQVU&Z$1aO2g-Lt+3xV?i)?zqQ~lS3Tv%&=+V7T z`3k+`+Sbt)*IVVT_>kAX8BKv~$PFCn^9N(e61GOA`&;r;*n2;9bkci)2*>k@(67*{p@W{iM9*LPRLKlS!z# zk?UZY8j&T>D+@h|!G#kP?v6Nimg5*cix-{ML`lUj6?9b}#k z3RWDSO=U{l|2jH$&uBX1Ze?9p|uV@pDeu zh7^wpbk`^QJ=_p~-YE$u8V$#(+}Nm*Iagngd&U%j$yeH9xBLm)`|a+ul9M^lXmasl z|1hiEat?PQcOqjpd6E^*aCB1S33Y?!5hyZ?GYY)>ELU{gpRvhtXYECAIfJ;Mbuur+ zElCNfVA?CtYBZX`YXU#ZQ;Kz+VfPr9!hBiot!S$Db#^eiqiCk~f@z9hzeb83Bf&W) z>40O1{HxcUqFvo>Tp?38zfRih(ZOfyqpb8G$Sj&{##@RtnaK@z+nr{d`IUzdNrzd7 z)nDqjMMEiuCHGpIZ;IYrGqV*dZ+wE!6#l!}U2$arI&TU;4Qhs?*&BYhNRfzavE!=? zwke(V$i_ma-O)TCVa&b20B4}+nFo~LV%M$`P3>-%*vvB%7p>fQYR}UPT_gCI>*IEY zJ5sb&1?QpJS9<#<>OW+$L6$SkE?GZ25F7urG#-6~m!Ffo5X8YEB04E)@wugT^{vkw+95!~mWJgS5ZK$a|Tp(;JhBxLJwl$ivGy3F$Ru+(zx2Po3n2(_i5MsjKI%^2{ONqkd7UM!;-ls$8f7h)4GvW8I4^s$t2(~}?F*a|+3rMK1iG~%x zKU%}VwWBO#fNH_rRbO`+#rMfR-wzRyrC<9?SR5I65H${z7_5^q24CR75zHSFN8Z&U z|BqAVPk-xK{7qBgXzS*}tn&V*ZUu1u*D;1;84L0^?BE>dmi)3!S_Z(Oe_pf0PPg+M+$dkh3!tLG0wKjydFItHlm*?&ihf@{N zs`lS*?@FGF*G$x1BW1A;wIL z`Npb|7@K6=lxl?Yj2Klef-j==g&3-|TTTonpxzj-2W+9%J9*BEV;vvNwpS#x12;d9 zb`zZ@{cp>NqukSsLtMDU&zNR;)^kzoHr2d~-7tvg-M^v%^{7n|<1Dt&`JSi@*Y5mG zO<$A@PIKM{0<5be+QsBvOVob3w$}{(AS0dJ%5#0aL{(YGPvj}ms}=96iK9yCnTsn7<$;ksT&3v#eeCG z`kM(d5n0FFmryw2^PVs31P$4Hx+Ign_xPW+c>4A%qX@GBJM=S_82D-J##OGGA}Pxu zE@N0qto|`qa|+1WJ1L!awe$c_5lfIQXiqol?a#{(C2L}KLhnw7{Qul2b^A+tyCtqF z&xv3Rb}vJEj&Wi)GWB{7KeZDK~S~fp@%zA zy{Qhe7eyk>alG=m?0a;j^UglL9z3&trmQ@;Bnds>t=zjL3+06HKw`js|9FP@z*K0h z=jm8kbY2BuYoWQ`XjIB5l|ob|&iCLDvTEIy*i0;<-lj_&Cr~!0{yBsZ(n=V5KGj2`!-xHZa>O*$gb(&4h4(3E6hQ07T zgB1=P<&Mp^F|_jP7ZQ++G#d2Frb4=_&mz4wmSy1Vtd^JzZkgQiySGIRA3CJ=5pT*| zM|MVlTN43(*fUqRhDKrbC&#}Secmq@;CL@+inBx&X@rvY;p+vb7&0>H78B$3UAFca z<8*HQn40|ZnRr3-CJvChP(B?~9{(WnnEpi7XJAOkQ>|9boTb#{gThCoh$eH+-!Wj^ zMy97ef^CpM>c%IJQ+U@c$GSK9zgT<6=t#7+UAvQxZFX$iwr$(CJFeKaZQHhOCmnap z{<7BEdwk>kc=y<6yk}IZGV&uos^+X`-Vg3;-m5)Kl0lLc>0@x(kOeN|!dJ-jpsFS< zf@RbZfj-RPT_g0nWlr{7uMa8&8@4r_EI z`wLlHLa_w-t&hE_Bq}fGl&kON?^3T2`iPz6*ZvIn-|tV$fA(jS+L{`&8Ok46OhyR| zepUg0O`4@x`GTf=G)fWsu%dkG{8gJ&>49EjFf*i-b)SNYEo&O?`}?Ah6kcwsW`Z4^lSY_lJq=Z;yto-^2tp1x5QwAX7*>Y4>0u z?Ihi$`Ztia<8G>hW{AD7u3wR_^kP4A^x1puWA_jS5@2v(Mg++P$b`@b;t;&u!}rb* zBX6$1((hvmP)AsB^jEzk9^!JQ|n6HB5Vr~$q?veli z6HFis-6)1wPb7spqcsduC-DI#sc~mO1YCufm#Tk=!QbaYGg`0I#9^4XBs%6uh_Wx6IO ztM$1pzRLt&$1QyDn=%!ul&0$ZtRZLvMF?Y@qy{Nj|Keh!ZQA$r1O_ydK}W+9RIQ~* zqxQT9%V^7UC5s8yt%n-3$JPlB8*(*pmbdt7OWBw_rG2gNPfwHq45dYhlRvfMmy1p1 zB3YJp8R3XZq@2s+57ki`_RwB^}ep^Q5(FKTB6Ig3yny$v>8=^5(xt>ESEAmecP(jnw1j?5nW#pnuoX!PYw58_m9CgpjD1^9*Zg~0M5P9N?fs@aoQ;=u`vJ_Tn zWM}=77jZa=r9fQF=nE8i#~e)R6t*G+qS_i=&HzQ5*%i&wuk%Xexr4DR`5BNAo@J4l zC|N6-rZvgP9Hv@jo${bO%Q#KsE9PFemFg2vVp1KK=`%_ipM5vqwhoRX+W?%+3;4>C zfy&<)iLHM(CT!a{d?42EC2gDVQWX2t4$>|NL;7i=@cg(#5*uUlC`OGHIa=U}y zHL~jtnUX$bp2JM^m>40Pd+EPx&M$JxE;6WBl4O=8e0Wm8?1Gob6e_ZtW>JvSu;reV zuzB4!3GH^R^8oAPbO1QX4WARq+?7U$DhH1Ok2NR?SW zkhxAA^IElJUC^p*l{yrxp<=K1Onm0t(P>(^yQ7tGeG|L{IiKW8$DM3CPaUjE&(*cU zg~d)3)KJ`iY7|}N9*+b(ov7-cG@hA~K~a?7Wr9}(YFvC`s=R2*A=#4bymySc>VYH0 zf8uwcjO)Jz`u<%uJTzH$82M_!EW!S#)Z)K#?^^!5PM@SArL-Xbg|49pN`^Qp`W+vl zGLIJ8=`DWjYMm{|2%*}TC zMfS>VI?e0uqd2MY*t!C6fRS8{ zd)v&j)abL-)K>Jn>d?dPv}YANn~5CVuvnO5hE|wnC(h|Un(~O$URSlk(VCg6jYj7# z!Y4;rHs(TmX1(~lbB{wxZdeiKDG6OHgEKq*sJd9|4?#uFZ@F{MOT*GMW}Af^Lx^cE zk1T(h`5cr{ijCzhj|i{qD~7}9iL{4DYnv#q8d9oo?&c%T+wmCF@J3-eMs2`sxy9<{ zj*En?-Vv_?Pv)LvS`=n=QW&*E)cn)wdzK2PkXvvRCLzgiwVkHrI)k`mG(l{^S1_bk zwn{!wKurl}-MNcj!2YeQa>Og&LYa`S>@KCdVqQO~HQTx}D}x)u-DYeoG(x02e0Q zha!%-+3usE-z-uAXDAo{x06ASudJzY3!ko7Y9sh zvahG`1T-gL0BxQHp_sdeOo+S$%FI&7${2-h(>D`nLWImx46bl7&4d#>-M1pxI^7o{S~}e~BHTJtZ}*MpcyIR$(RVy< zyWj<2=!r3|ZjCsuOjeJ?n3@@^&BPfCF( z7)fW05fX3j*VE`6eN_Az2^p!oUkFLo{u=v7;th>4fC7?_-;5pu3MPd39YU*Lj-KQ_ zvNK4}p1+?0u&_$E=XUks4^EOf6y#TIucpW^)=EWkuCXBBFc+D(5pFAXAlj{ex`-Wr zCz<1iZD}7bD>Q7%h#OmSR7!f@b{c9^?pZyfuyel43)E*{@6QjdRRPsO22YNOyMvgW zMT8DDr#`G&qVi_0r$%XXSimtbY9ZO!KYCPUEJl-)3F z4H3V@MVFySt9la(G>S#u6<}4CR$I$<3Vdy=PG8;fW~2xIzI>AqWu5}m2FcNEMZt9K zMJA=hpx6seM9#`}rM$I8kxg;JHyI+lD<~PtH&`V|jc}X0%F28c!Sr&x!d!16OWBmm ze2H7vVu{Qsih7cUya4O@Bx@>D@g_l1l>$r3wNSq%Cy&G9qfpghW$0$hQC4XhpN)PGs2M8MC@>4r(mQB*P+_qSa@K^nQbqAXT%?A# z&W?7BJhCk(s9$Z~Tb(+bLv^RB@&e0B9Vg)Gj>1q7ZNBTD1^tyCMpJQ36ocmJ`iYi_ z^EA>>>hu-}#=l|O{a86i;(l{PD;pA$RYBkx17TyO5#4SHoej!+8sf)cWaoyu$q-xA zu<9IT_6c*cB1nyZY-*ngd9x@aFirQ0h#62OF`1|w$~_A#nIW*P&Lb)shDz9FNrOOFB&S1VK1PHd8@K8_6)_fIoyO`i>0Y>)ad?l zvT5ro0Im0;e!$Rce^h4RE1M{1wX_6A<7@$Lv%o$YniGiGW%WE@Bj~Ns_(ih|UbQfv zfd-uI{2DVL=i>>1jGGq+mrfwRG4F%s=9(jR_pDI~=`IzT*(Xy1WQN3(rsElY3SHW@ zk@u7-a5~Si<-1$#x2V+r3(0dhvu5bt#R*d9h%PT^x~{$+K8NU>vZXcpd76k__Lp0x zBRMcn8cRxjeDd)SdIOxrHsi7m!3Q8y%F=~Ld!PE4Ow%n%)XqL-`Dz|`s~^*uU0W~a zz$o~wpPEf#lhm>$(SoG%4Vxyg>rd~Bj1p^B{$8|iZ6f2GY}%^!^7$!EUJTLIsRJkK znx2`-n>KpBFqDqpiW5?Hac_WAYnR#Mgpl5Jxs-%SV8YxN(h#akN-(0-$Dw&jQyX|{~x&Ftde=xH>E){vG78{+l4hDog40f4LbGFtDsJ0m1N{ig+ zDF`*3cP#i0I98t}O09K5UqjOSmajgV)W1(<=l??sY4Bvq(sU zvvw&Na7YfnqYT2b!|eR|t0X%C+6ZU%2oOwaR#(2CUJ(w@&9WOdjUu_R{AFfu&&H|EPB-5<9fw$k#S(?YB=dh~5JW z?6XhUQ-!01qP*Ip0e}MBR5nL4D0z)D!bkv5DwX?0s5$h?@~U-x9U0U%dp4*!d(Giu z?s7w{QaMHnL+I{e`ob9+O~71GJR1-{EUZPh^Z6w+*1{dM@T<})$23~n{F$V} z=-WHn>grU>Rwgf#JZ%cpDbQCYfQ87W;HQ2=v9zJANB3%Q+DU2pZ`QxFp7j^vo8Aom z=IP)EPd1Q`-C@qcZhY|jR09R*DHPV05|um^pu8G5FQWM05*>G&b)XDvHfWnoI6Z>C zx>CYe!KnBPa1w4wb{(||Y(bwA|6yJnJ8~r2WZI;6rckH}>Pp_56A|@4!cInMz1JhA zw7No(U9fA3q!fsXPw#WwM73O)yS1E;m$gW#9;qus?Eu!OQHjb_jd+L{NilovKG6I* zspqk7pFV%UpO#D%@zW{AlU;Pbe(8BVs^3)~&&@ja!U6f(ix-ueo*&R^lX32B#4%r< zY_nh&x(!Rga;+6YI{t0yTQ1(gySfC{$&=(c2roY-FiHHIc^3a|(6sM;p@izFE4&*- ziUju8sWqbNqxxgNe}=otuwPJ6Jy+R6^W=W5&HEPuk>@Wpm@|r3PWKOzM6nQz>dA!o zl@qSiMR*1Wlq0E4+5E{t&~FO~J3?6(e}E)k#R`>P?x7>k5`NU4ERO_IIB12-0dFq) z_RY%OvQ`ggUa_H;06~Fcc)R*J&FBgidD4Ey3Fn_B3u8$Unz)QJZ}&N~X{3v33%13} z(;^rtuW-3vav8(hCqrNAm!HS>ZDkKQOM?UMKIrT}Il%7B_8+uU!h8On`UQot4|4cY zrl9{3r%3%@e4&M`Elg~k|B<9yYBp-fVkkcWDb#ck`oau^sIivfxms_AS_%0WgN91{ z9v1%1&h?nfO&L1VrnjpxAABG3GZteUp6htC@E@>W4nK(B zRVcHqHn%a;+z#QP$9>H+$~En+)AsTgJBqr|suF*>X0Q@?z9H+8r=1if&QyDM1_laXO07w(%k z^$i8_<63mMaz&;3sHhBC#M}ANA5_1eflbV>5vo2dR-KI%?eD)D=h3$?caZ1K%rf`v zj#{eB1w}Y)uis0)R69qC-Ls`w-|x85@}>X_LfsE_mN07~nNzl*1fP+g$t?|JRfbU#qwI0;bu#|<)^t^gL00$x;*U#73IUGC!wlb zr=oqmWQE2av> zt>?^nw1-*8!4&G#SB^a$u#$gb*`jX~Ahr0LBzMJ@1!z;Kp_L^3%$ zn3HbwMP973%8F7thuT%fdv{hiG8x~;30)|f>6qwa^B`KV$Q~;X=1K_|4X5P@f^8uS z4qL1bk=9>wLE8|ahRqfc0_M@ntOv{Q#VDQ8!}2mC$ekU&enp|x8>&o;QCc}@oJC={ zL4;70d3R;VG+ry8a<8fW>X2a-c#IH!`@2(3^#QDQ^c6m+;r>%%EBarA4>? zob6vN+poXBB8rifw1tziiS560-KeO#uQoP^kNgwio#0n}DCKAFcu8hJ>tS0tq4O1qxT4&zR#+ ze3<6R@=bG#s`?;@K`))P&?Ql`TZ@#nbY&6)+zi3O;X=(YIUP-PhiZ#kUJbQrOw!6v z(~_R;C`XStK`B`g=Sh_d2%)>7*C4cYa{#v>M2*AgBA0LiqIb^|$X}Z2ns3AIuQoQ) ze;nha`@i{&{)w_hDppP#!YDl9S>&oH>&Hs~;;8jTeJ)vHs677l#%Lo=f4m}BMN3?P zI@e5^`op?qiX-TE*q@?iy(anq%7+2$r4(rDAY0)DmS3a3rUNzN?fB8N2zAekg z#QA}U^v4FRlJlx5C@QGl@(-a?;+B_|mXgu~DzKEb6YO;c$kAAc_04AwB?q{W;=k&1 zj7X}?`81NPga#7*9Y~5u$t1?ko5StVz_w@P`$9Neqvxx^We13=F5VP-47~FS174in z{coJz!!kHt>I=6xwx_kXVbMO76rm(a$pLM~<@#Q-8z<2kPdt6x2FHc(0@gtcETFfA zN$V=~nT>*F@fTIc2_=q2Z^vg>e{gX6beO1wGp^l0Dr#|^jzc|0*OZ)6@SU|e$L6F= znKVk@WE%F~U{lgQN=2FIwQR}g@emHRWhJapvR6Zz&(?JZDrft2jfggPOW0O-rA^n2 zv~UQ#uQk^qoYyNqef+@}F_z&fCUUa+tS*_-DYk!0WD6zgZ=TH;&FU98)NI0p|)ws1?5 zo~#S>0)tAGEDc%wSkJypm$O(mm8F&FQy(fndJ2EBu_`I$hi;N&&?2AR<0(p~u`$E5 zr4kSFWV!#)eu$Fog>mTpUNAQ3e{C#oFkB~!H6@E5>0{cc-7)j?^7wyZqc`7hh{m;ko8-`;6WPmq+?9NiZXOmboOU$owfab59Ind1ADN^ zl5}ReyWX#I<}pW>`)rXV3q6LN5o^xqPCfXa+*QsFZ9Skm-xdiupCvf)4LSbAPa^^Gs zvltuE70cc|6h(gMnYdI5Ls6u5eB6;Lr=)mt`bQNV+Gm_?HIzJsL6A>hP|>jN?75SP zr*qetVQEG`L!PK?LED=%{`v3XAz!KH)xlSc<%0N6F_!kfh#&t*G~$0b#-n8a8VN$k zTuMzf-y;$>Y*H_gCV>bKUPk8;>^G5f42x;F0pgYHNOisAay6R{YjREDLKXQy`AjoMTh z8At#Q0o1|Y2HPnn)#i$?H~AOy?|-hL{s-RQ-!;^Kcz=H#F#kXAFX;;azHx~8r<|j( z)iPI7D4~(S7Gg3i0fTdV&Y6CNp^qp;YsA2yRyuBn-4bO?+%ZNc5~tSd!q^CV1&%e@ z29%SG2>XI}b!fHEw~kMr@1o%(>2Q$15jj34TW#j0d*+sR`ELA=t~X>atb3O~nmxXK zZAc&hzJ^7X@mGLL6)Ucg>Ph`)2KxEHe7o+ZxU5&$V&u!?pHa1I5TjxH?j9>$x5W|my za*bM=u2^}gBH?-cX0GxIfXWXRs4q_)irvJmjt^xg!3H4S=@;rNBEFAxn!4u-Ak??6V^Ok$G^;6 zp8Ca2E7Y*zaH4`I?6`b}wMM65_y$>B!)s2q;yx#j)(W?Dar7;Wvt$~3QYl5&{HuR{Wdocp2SVq__|>!asO4baG)=-_( zzda4Gp#c|Xwkk!>k4Ej%Pbx^a6vd$wLvulQIdKK5vPi&dDJS18t_s@Hvc%3v$HJDI zF&VjQYqMr_QFEl0`HW(4TWIAMh+`s6av7J$3E==vtesflEu(FanCJ>@S-tm&N^&QF zSj7|U*oQ?2>?ci>D4uCYa~?Ry=dWix={Q!Eq7!$lD}FyAbzB^Zxg>Ya{9bc+&ixAL zbAQ5H57uo85%U^r>KvO+NjmwyS(wgLgm#ClTz7!a4 z*#aNf)76}YrQNP|lBL}RE6r~(!`daWEQ`zEuY%6^=&ZzfWJe2#?V5Z+tpu!t?u`m( z{{ii%Ug!{21(t~#8`1$c!&D-IDH^%&owG=zNHNU|<_wle2%#WfT6z<=_PzOl|0g{K z#{fw@g1rhvN2_$Ct|77a@UTQ!+^mPH^pbd~6iQ!K(CN4DF2>KFVN(OgV`RU@8q(CZ zz~58w7qN$k?bX7z#yU5cPd2g+nvahsswW1V>4Q$J+=3jOSMUS#X9({kGZ^1Qp&OH9efil^|DiFTpEn3LS%tHF>&Z%BVr3BGnJEP zDx%lMVv}xRlEM38i2}F$;*NmekjmBfBZN?-kBHccgVTqxKEZzhX|C8uEIkWfGTut% z`?AJkyPms9&`m%%#KCjM1>fDt8cI-mwryO|Dye z*lqsj5z8CVe!TL&CxlOpdZi)M`p%FU8sQfZ1y1e^KknM_j%5bsj&Lr$<3N1P8>7VU zWzGDOKjgoBpUwM_!q4i+5QnGuGL58QlmuaBtlXs4R$uO^zNV+bQ>d-ryE1se8LfCalC%s(+CiCGs&9#U zeZxd>>%bT~5QsvDd-?{J$Qph*dMFQS$F;pG@yDS^%A#WT5|x-vmN&*IoVyW_;KmnN z@T0=EHik8Hp@11VR|hyvRnDj;1XlOHe?6+Ai`iL;({MX|2zJ|nw_btwQddL1Jh2ao zk#2X@372yB4#cYrtEQmuEh2FYBWg=8zbPd0XXdi*_-aaq*5}^>Zkt_AnTU5yF|kGDBMr#h(Q5_`#j6?iu0AkRWWzF-@Ox4ak-(c z4Af1{%#I&^asySyk%}WlB1=P*m?$_BQ67(z6I?FUb%&SV63)VE#WggQTeEBw{LZpy z*rzh2gPTtpw{B9vK9VZ2qv^1AA(eL9n>Z5ntl{=2Hn=4^F>TjJ!DrK4ORjyFV~5Xf z(A+MfpI0^XEfbnbrSC=fkQWX`e83h3Qo3*H9ZLB7W^T1jUOd~pM*(e-NfuTs6$`V7be_SFrFG{WI-}2Tf<~ z3rQKYt&-^dzq_Way8iY#AkLw#p19#qZ7p}OaiRqy zb2@_^(D;EdD*pQl+}_b$c4dpR8D8r!~QeqTnweN+E%oLZwZqO0K*T zB7(WqIcUlhfsVB6nd$eTa+l$rezKkWKHgmTvL(!t?$gtZKOr%^Tt9b6^MC{s9E?qU zcV4bi?qJD$-|r4)zKPy?eDeUsqnt&lq?|=HMimFOf^vj{f|3SJ4uA!93%J2Y3_=e> zSVu5&rvc#`{+pm&j6usJ9fBYlPcU=?JU~7W0Yk?S$;;CnM(I0?_DOl=>jFRlEtqJS$r#C)wxz969H?L!7?nC^&!OK}Q`HoV zm-}2$NhZrz2eB!eQ@bK6D4QK*hDK5q9AZ#&cEiJGR-bsQp&La+8G%QLh#Jzch(>3k^(*cxY#3!d+~Xq>fmaQZyZ{2PUIBbPus3jDK~ZF>9r~+=As#j?(x$7b=9u zX>3szIwmJgOeo9bP@yOR&crtse^X552BCizFg@Al*U_;c>{N`^uA~=F+y?SAysU`_ zZvQ%A>S?ES2~mU-(=3e?(zO|~XRDydT4dQ+W!fK$Pn(irTYX6mV6m=h;)H8ug?s$` zgG#-?{*!v1|L3R-)ID>3^`>dW$1@#P@t!u4d@))HS@H=wXs42@YJG2Vy3rbN-dRWc zrajCAHB>3)LgJ&cE)^O{T?u@3RC9WYkcwHkf;lkGo2|yK`UgvgR)^fNZWsSa-@~?* z`j|w4xq3)%S;;b)eZ6cCIdn3STgOp5j@W|Tb#!LCMv)x)>HM8y1Kk8mRiYcI^A=@V zbT9d(Xnj5QnB^w%rKls39wn(2bo?YWLI?4sOdt^)>mM=#`o&H2&|~h+a7=7CW*tL+ zCK(&{d4()83Nz~p`3|T!k~-!UYQuA}7Sh@5geHqA3s5vgCxQv>W|oH1Gv@wkE)om7 z8O`?OnmZM83DyB3xZAS&-o&DDb<^r*Y{Q5_t>(Q^j*2VNf$Gxz6P(nc3 zUBqp|>XjoPmRE$4{5e^L;j`;rUjgrMwhC1v<0AsBuurg@Re}aFj9Y!yM=DOk9{hU} z;JOir%Xg3mQc%v015t!`(>Oel8|wvR={26n}lv7ch0x*BO(*?D(eAT2BBJ_u&( zsB{O<@S%l1&ZiP@1wP%pzL+0jjIuur_w)C$9w|(??@$&j8~uGqc`WcO#xbf>#3tN% zFO4JuT)JF-GfgSMurfO|+_NY*&6T}TIs3*$KNAV_xWmY;|ABocy!6fI(p>OZ2(R#( ze;PX$fyKG-iuqhCRyr1(2HkY3O>ZNcMW;Sk-23>df{DBxgyCKbIrG}D-0-+%fmA_t znL6VV(@H}(?8DBd2c3yw{>kRr{|%&B>-N#-`*(lE<{Z3T=4%i;9_oL8Sp4hQ{31jC z%@{NaX?2ASnom}fM8*=-btbo?2n9XM7e|dj^B=S|gda{~s(#1cnWxi_S_BCLl|uUh z49ZHb1_R=bwP)sTyH2Jzb9%acz-xm?(ALqe)K}~6SNeINpJ=!n4ff*!6Ij)&-M|UDb7p`Dj$v0#WdWKd6m`4#^q0kx{dWWV6L3X)9(r6iWyDRcd|bDU_SUw4=wF6PR4zc%`__8 zVVXRw8LTJw!hUq-ex$SNARxn7{i&2q=M9|OS>XS`(Cw{#@ogEG=UKvN<5N*0YI(pc zA0U@|p$gDNkrW}pzJs({%)%*tYdaZB#4T{f=Y_G*`2H)vfFlkMDedQ`?4bNT zQCm)!biU+))!aQ=pCk!S0`m))18OC*R?z}w7Hqg|1y8@>ITfw9zb*`o_MZX|A*h6X z*>jAD5q0+d@J~iDb#{XbhRsI|vl#iacYck8EX1Nh_Tjb!`_H>Xav3UX1X`K*ROKpu z+L>IX#(%~%{mg)RcfZcH{I9yt|4w7L6aUNKU8MXkG-a!67M8uZkcCGhiABaL?7~&7 zq6sn@K7l`fz{6lOb;~ry5Zqzl>vwTj2((aCXkMrXSxuJ(P1gSS7$2UK>^F>^m%FDC zxo;t-n5!(cX1PYWR=o_n>9hJ&rBtn2LZB^{_pWB3oVHr6F)Gkn=H#tr2H5b_+S``_$TU5jtjV9^R296uw{9kOF?wO9k3HU#g3vVhGIPra&&jnkBE4s$Uw44kc<_wm~$&Ww1(H832stxULIXr1AB$VYW)M@^vlL zTDL+UFPwQTl{1pEf?9&KoeRr|pG`%cZY4d|3+W!G22Fj+Y1?tD6E)Y>C);A?_76Zq z^_0O+|8`~U zF$Mt==*3%%BH*mVawDyL*NP-aH+MeCcOEwuFJWOCdbXzZ{)RX1P9We=3`wocY}1qN z<>|Tb_kAPm!9wWG+UBjb2mRI1;2`O`EqsPGk&?xNuln)g!92hfx=&%fbt@;F#d*tl zD2ZkGa|-+e>_u^mgbLF0g=~o1)I=9Etw;b~(mA?WiY|-_{_wK3HAU05*@=_Ur1h!n zKNFKJZ!O$he0BC6_0Au|LlI$(l8}i$MZ%608tG7*NC37;menV+ypTv};7g95bcQyA zF^Fhz_V&QAw4hSegRxOX94Fc_Nd)$dr6kmZvl`UD^tq7`N&$wZKPL<)MQghs-_|?& z#O;-O@gS}IN}i*r;QTog?YqLbz)zAW)<$DZWgFm=U@U|Pgqr)NVv~=mAAV4nj%F8? zrxP7%AM;JKTefDibFBKeE4}~C39fqm<)QkuRulgZzSjRr9g389zWj_RpI5A^s!-8= z!U+D5`=@>Z;rUrgj4T=feGqde9o5V6)o#sM7dy9MW=KCv;fKla-U}j6;6h2+*^DwW zoqWAdI!-dZ?tK2-zCin_Sl=7f;gNt+L8+o{D%Do+b_ale2~-i#n6FF~)nd3PO&)PX z1r<`dT%3?+eW1NMsM9bZ_w<{x4P;1?bQ{fwcF^^#pJ{W|IvM^VJa9(sQ&cTR@qQIQDn+= zmQq<-{?Q#{oj|DCiUx-2&pIBU>q<@Q0&1^XL$jH4pSHP9m~7_ph7kksb4cYEYz#ru zB`0r8I#5%n0|29jQQGYcR_OJ|T%`8QDhiy4l71zYxX_0Qno!PBSggB~j+fw>+t8#2 z4}FuTzNJL*%Xa!i?DYd$sp-q)w!Ni_&2i;@+~b{du)><>di@2!n;OJB1U0^xm_p|V zCWR35xHt*$yhWJ|vz%X?`O)a~f^~AN&*8{@KO%Eit$Toh&lyDEtNT8L5O^$J!n!M( ze7+yMN7oH(0q93;YzW3{&>Z_?Sn%*jYhz5`31)H_%}?Ri2OtqshA<15#x`-tnO49U z({GkbZmoVJ0$V8Fk>@(`9$PuJbFiW6-L=Vvgs&H8NuOj6ykt&~6gy>j zah_~OOr1HmI(2UrS|lV-+PwdK+3}kB*m1h%`5G0o6VKtjy(#!sE52^^?fKd0d%km< z!-wa$gI6s~-0$=UXQrK7k#4ECR;KUmnAZ#kY*X%wkue#!9j4y%kvnV$3#Q)7k$lVt zF_X{e4a{TIs2L<38jh(&jt$BN$!O_Ck`2z`8k)w*Xc3bD?^%&{6VG0lJ8`%0jNMcRcqZ=&k-o_!BFXi}7WLF76Y(m^ zj>co8QcA`YYRSKiEy}575{l016X~RwjLZ0wp-jrelT|0?(<5E%0zT=G$7>@D%t)yR z&R|MR1z}}PM@?%P59wDiis=s-4;iFQQitgS^ZfE+^Fj?s2dDvtfHfE=jAPAQ5Gjmt zOiJq7Z&H}!7#C>dLzK{oeKR!rBSkP-X!f~7z^JWjz!CO1LO4P^Lf;3#05ULBXzDOM z#Jw;E>W zYXcstb`7ZPD?n8b452Fx*07$*26`Z7`)XqikiWxfMdyN0=Dcn{q30l-7b8`3iv(@Pu5W7K~cFOM0h^~ufD`)eZ&I0m2qNiY={ z%U>7tSsR<1nz!)Nye|X0+;BlJ4rrm7`^7-i#_yp3L}1P_%P~1InzeSBHx2w{*!B80 z?Ae6q2G(G}F{e$QQ3k%Ke@3kVdv{Q9ccCGexB@8wa`u;AFe4b*hVFnp4#3GRHK?y& zdH`K+`EG=^SCW|*>Wl$<%$_#@8iUrbHGYp0K*!*nwg(2tz_c}ZE)U=nZ3(Ek4PCim zg6f`5_YJ@W-Rb3l`b71C!WH8i;DBMC+qtm?-7$Iw$5puT>D2oIpYekJ34rr83fV@=fN?`2!njWrZfrQ(OCS<|OCZ8{U?4I+=!H5K5E#yk zT%%N|!R^YbTOsarBQ261u@$Zy;Du^|yIm@NH&-SOZJ$Dzw6BIz1~VgHSky>kfvH<8 zK5^R+-Uu8R?o2tM`gNC5Ba~2hBicZ?aY^S6gWy5*b|i^jfQr)(bpP=u8=Dd z#e5-9R0?I>+Xz`4#Fz$5-x~>S3|7P0C=|aIR*1_J)dG8k^Yp&x5<|Wa$32hG#bHF& zHhUUsdawfZt7JXhk1L|swmh}Fzs8(x!*-=a%!aF2$kV9^za51?qf`Ayh(0lyg%IWI zrHogt_u4^)^P@ZV7+Pi7(F4B`%fK~!+YhbMdMV)3zPAiCjET?x0Isyli+ftXh${C= zt)olRB&!s`K@xbbB$%=Vl$$s!2_H6udwZNyu6CsY*LqnHXkIuH6f%-Grn#p+P+zDQ z?~2Ak5&m@`kH(V!(!kUM*r{jas8}MMn^y)_*u&_oO?ao`u`Ee<>7?4a;KloDsoj9n z`C^`eONp8@W{3hnOKu~*fT5Jek)Ic5eZCC5Xix~3zOB5z+I#ealB`iqBT&}%a9~ji zD^Z|GH?A#z1xjj!#}v2CIp7NN-AIIUU{HcNcB$zU@;!v81?1iKce{SnIG85eoOnr3 z$^7M0$Jpwv(J7>=XDQ#VQdiP1-Ff+k9rM)|PeUVD>DHDxF%6u2rVF@`Mphb6m>hfJ zDUV-dSY;ie0v7cXwzmrammz4ydr~fDCMT%`!r&o~F+-pAm!dHRo%%Jk^9S}P7LR~N z&~R{4Ss8&vF4dA>;#4X(r}HQUBYCtGI5RZjn+H#IWj^UlhqrI!On@$h2^-$EQdrL! zG^k@%n%R>)XUU9`1S(7gwF=L!t#T*5n?HGRzqLllmc_|XSJrYpJJYQe^FDl0+|F#B z>Jg$mN7|i3k%w=y8<``8&K>|1kr1qJjp_E}hfj0U!dz=3BYM`_G4ygzzYZfpSlH*6 zavLhW^Ep+41}2 zSjU&)`D*k2Ye|RESC#m8j0iaKTdV`PJFJqGgS(*eQ<+9lWvB`tUSIK}d&Ny;I6!!r z%4QYnTfgqL;Qo?zMVUo;$Q&5k`eS&Df7Ivzh(^^8pq z;pzT$fLD!~_JxG$ma59!+HK#7bLnPIj)mlwRD_)4<&Ijq;JEk!EW_>hrglCO-KB7d zzSPmosx;Z6w%$r>6y>Vm&$;?Ec&eIUn5BJqmRg>3c=je;SHyg4(NWyHNP$#_&nnTY z3{JlIY8q#dO_htqmDKT#deI_HtcE1ss(Xuq>+d#GOENMjU^bUaG%ib3hpDTwT;?l9 ztx>LZRZSE{@JctkuCEula%4W_uqGGOuGEygfftFtsOCDe&Um^@3g7pGD0zOW)XV0O zIoBrD`00lp(6zH_ru?FUdkesAk#j<&)70I(+@qiGVVbifNfMM$)uH`4;Gkr*I<+gB z$|~DlP}5@M<>^J)BJWpWTcz=U2TYBTY5hd~)w!7wt)-uv~DLCR-&o5zJ@DFLUZMfp%2PQe;aD=>%bDf5Fw~2LMj`28;shCR}3HD2{E;!hB`|`Kkqp=wKrSDS{h{5@v_lWQP^M902SfR**ILPEI z&SHVjVg=7)`%#L>h%7AZAB*}3__8yGaWc>-w}^>X?v_ z;ApJi+LU3s{57YYZ4b}mspJCYMecY;l3GtEOsf37@%F5&UFdbRoF`BIx_o>**C}SX z0PFxW3|{bZOYQ8zS*=)B9r{InR1x=tw)(|~NUDi+bP%e9ID8*^LN-=(#c1yu5_jpG zBjkc<3>iftSns@HziKdYsl4sw;`=1IgmI*-U|1ue96iU8@)IJTXJa_o>S=|Whv3w! z8$tw`cuE)7dPt(9WBlhyYBTqvhKMqhQz4CsmrKj)QJCHzw3=ovlpc{$eet5H>w;@< z%B;YOt)8s|rxyxP>ECZi)cSX1BpQzHJvFis(N+-8UWP*q&Qsl&#g`7@)dRXM1Of=iGqj<`)$ z;$2+5@Ud~V;|6WGdqj-TW0p_m(>|}Pr3%*vaF*nY<~LjeeTe%2zx5LEge0se-W1XE ztJ~+%8)u}xI)-tgd~g9+Y?kkf120KCEY-B2bRtpl|o`>4gbg9H`1Hn(7 z5KM(&sX-xC`zc2QG2ib9zG2*6Kj-Uqm$W#&j0ksm<6W;ze90C{oA-+R?N0>o`$w_o zdfqF&SN1Sp#YHKJL@;j&x~S)H-SqqU(H{C=2eSIYU&0yT{AdUJff4z7=>_daVSNBb zQ|s5&c!jE{Rd{9E)_4KX7vF2|FcKXMVtQk2{Uq{V)5(3g2|Yi6K4Neq-=z$pbkL*c zT*!HE$QX2p^4ap+V|}&J+Kc`C8-Ye$!7s0{iGrL8Kp4YdFqOBh-4fyZN-hBc<_!}u zz3Bp{jo9FM6Si1E3zwLI_J9xaMc4WCpX?Cn1IZjPAy}k2!d+8~U>jMGM{cmAMXMDuk5relrt8>W1@g-rAUw?a5Yh9b+1wx{IKik{g-7Em z!`=lfWM4zK*fwp5&jCC;?kLGFsxbV}KCJM4B#6(fGaZ2jTteUjtbj-Gi(!a&Kh>_p zq%1L{dL^#&HyAY-#Mag6BnWQF!dF?{=ZQ*#Z=9o`0j_A=1LJMKQ7Uj|`EbMxB)k!q zGYOuRL8kW}_^O$5j*DP=T{(br(21H$elUE?ilJr0O3wH#?J>MzzzO|Z+Lf{Y39!4? z93iv%=T>Wx6N!g4%y$C)q&+x#O57x?YLs|i#lqcBs?Hq zV%QJ{D8qBK=E#qmgCC9@5PZ9BebmhJ0kz0U&-IxPjZSN>j4N}rK8`Dk6wQnE6-I|j ziN(e$%^dP-kRh75;GMUgV1*Bi*<4AsX@Cjz-zsld#k88qh(z*1c$~OcXxMp zr*U_8cY+h#-6gma+#$HTySqyu5bUyK?|WbNI(yvn(qr`ayZd4GoK-ceK7pj@^>J6R zg7p)oYE9})-vHKltWY%Ur>vJaD!G!HqOab>o(w?gY%y&ZG8$u2c&OmxVS1bn%QLf? z$?bF+c>t8nTur+L9u=Jn!|GR10&RYSdxbTRAHa0Vyc82p&mQZeXue8<84tQx^>=1j ziK)j0g7OT%u-QxOq^tyd>l6cw5c7mpMEu?)Jl{fIP8+m)A86;fjViE#O8=dZG#Yd6 z%IQb_m2tq6_eP|bmIUM8^9{c-A6)h7$DIwcHEBB}d)m?7>V#a35YZ9o&prAeW;LpY zTI}hfMkb=pu6g*--BOMWg)RLatB4iSrQ=0C zG6~njmRe{|Tsx>oZW#%b8-VCFx=jqnzNIw!%jju|jxd8UB@0%W7ZiJgmMxhRaTKYe zyKUy~Q@*ZfYFc?Go%AVAA&dJ~MP2tIg%9ml18xXlqz!l5pqT+dkgSFo5I-pUHTtV4 zG5rpUsG1V0z7mIcHXL+g}AOUA*!iS9X1|_@K*_;oW_wlSIqMM?GYqaUW z+s3meonGu|r${yw?=>RNQ$Ebb(oX|lUMj8aAw;TgS5ZBB6kBj{SfRrV_-@D#6D-MM zJN8>wvBXcQTvyJ_!mvMAM$-BNa(Udvc6^jJB^Le4qP7W0mESBY0pl@VLj~&(=?=?r z!&1;*?}HLN*)3>`;ycfpWL1N;wNCj`iA#mG=?+!jClA@i+YTim8sJ_aTm&-GySzga zbj`g=!R_Xdb+?p-e^0B=%n53s;Htzx?{S6_e>1@gv0n14ta*!d?nb(%ixc{wO5)yo zw5H;mAT>!5gsDb(;)!dc>@L9BAXK2AZ92vaVXt~SJ94h%{<;iX5%M7>r??ztsL!)c z&~*(Af8XDA-w8wCM5AN;Av#)Xj^Auf*euU8ky53J^9@2zWLK zNF48xeU|NgAUND`3WBoMLU&+iy~dIGP^&jR!|TN%2u_wAdPtey6b2s*$d=}Y^W~Yj zKmE2Ti3ILqgTWb55f#UskLEaD#IUczQX)vcGh{MWz*bR5keCnNEwkP}T%ezGCvB3Q zdDJRZiK0FXUQm2P#17CyY1LBz9$dW{V$L;4NV|w%&5B=K{uwy(We~V-FtzY&;giT_ zjq4?Ln%Cv0!RO(cL=cI}6Jdc01+c$KtS>`d$ z%IKj!+54DecX@W~C^7ne=E+anJvQ#2B)HrqW&>wgCQ&>D2C5;Ru#@htbM}nvYjPsY zr>nk@2oV`P9KXHzWC40qB*uuB!_Q-wdto#?^`A- zd?UQ3yfUmLDiwhyZG3zEn-bVg>ze<&9O+G|*rP}`L|iUEFnbsAc&qKtRL=eV@~1IM z>|lN*DLRrGpYpBdAR4*?XKkPkY9vl#YqfB%8v?cNe0(nm0muG? zs*r3qHu#0-(McgJkRM--Z{`-j3y?1Sn`^Xw^4N+6+09%3WNQ3i$Lt(3|LKQV&}_<< zhUI73l^K~}(UR8kmk(=g%VxPD?$QyfHE9G1qb76~_pizLt?zI{H9V39o;JfE62zaX zG8SFMm-F(5N1CyLEM*J`{ORIGS|60V`45D)Na=MG15JDb7;mh$Zcmdi6~@Tr{LI;x z9zo~v{l2;_39zPay{?N<=mqD{-|!l(v$9ad`*F5VU9uKX_;F$R_$(JgWof<91}xzF z0N8i=zJUBzXJxErhDjK&BqUrGyjPubtg&;r-Q?w|wbg>uf%IQk3FgcslQiEo>3AF% zw-9E)BfZrCTEnsLi14dPhcCUvuo97C6oEm&uS9ui+O;eBekNItX;rAJ(%PJpYt+t1 zcsk~9z}4w^LQ>+kmoQHNx|McTRq=v9kp^QetF518L2v1BSrk|zxA zbV|XYP64gSm%M@Jyd&x-Wu$WWT5jLX5H6msK8y{dVatKDdQV-gZr=NPcQ1Z>I^Gui z`05C2Fi=-uB0OBmgW;yT>?Ar|5zCI>;s$iv01*YYB%SoTqP}em+%RxnJKYO#9=CE& zPeO0VIk^x=0H;cR7_)?sZ81BdH$WXJF*%}PBG?j{>=4A+84vXwcX|+}2GW}%Bs&iF zaB%Y0BJc^x_llXDZ{Cg@?WEib(;MjCy|Ta`qer*M+w$a(R{#kMpG=O+lYa8}k^fRd z;{PSG`#v!d`;}egfFX<8eRZ8&HQTFfN3H}HJh#-Xq%F+6g!SCMHti>baPipPY{8g5 z{q?gO#$S2%Z7HYHv=9(5Z}EOTfB940WSdbVL(09n)D(a5G)HoH>1wo_r`mMz>Uo%T zb04!~pyTHP2H$oi<6Mj;;+UMU^PzVdf4O&{fr=r}H!oydtyJBF4e#6!3|+EUF^dT< zls8$4X|C;;o6-Ie71xXQg}^%eS(UV`@J6|~cZ!~MO^{N{SoRHu_rZn6Ij0`y%Aa#M z2Bk}vn6+cmKD>B=Ew6JK={8bBO_Th$62}^?^a|* zhUsXrs%lSMai<9C)WYTdN-cYL#AV1rF9&V5?<y+3 zeT6Mb^9Wy4TLC_&e?tRaljdc=;aiwD{Oa`tdoR6dQLe$J_!%EJ`3|?=mYrKl*{LAs zFB?}Q;rD_Buv4Thdkl9DXXbr@lXxVTgM?P3W--zU!#b8$T~~cE*sI1ONIxT<+lXFS zKxEPlXO}d;xW=#zGbk)2rL5gdR#7JR=u2vV9OiQJ?l8>BO(VXj39Q3rEUhtzVRwAA9y&C}D_0 zvHx*Quv~6MJfSp&91FEO6Y&P=%>rz%%ibZQq41OY%{b~S=2wLq%qVc1jgyikMWu5e zLH1ie>*m^hT{ab}nNLccP#o1+b^(KHg7#ossJX7ST9D`tqVDc`-u#EhBDDNzg}=xf zN}bGb=hz2xgvxH>$3M|VtBf#Ho}V~?Nx=Vo0{u7Is9M#|VNMa~$B?`=n-Y^RkKz`) zOXqNY)WKvylE>sjlu5U{AHq>ovVp1%5F8OS+>;=QxSbbxDvT~2ppHPbHqH{DJl;Ca zb(xl(Zn@6;^@Xc%oITqS&oLbjiHpFQZ_jh$Hh7lt97epnj0(YN}D(gO}aPMiw@tt;bt4z`A)41ur)8`${UZbZ-KJ&yH zq|~~sRKJfF9<9%cx}#ZKhr3rPEL#!96;Gx>eowzB(wMEhcBC72rLF#a9Zqtv^}m3U zeg2glb^DrWR`?*_iCIExy6uA-U55OyXDqUAywIRGTU^9aHXQ33ga%c-tHtqsi>#$E zl-6ha5&MxOSZ*9=;0%tW*+fffq z?SS%^EvQ%;LN+NVe4rldu`ngVud(c*$T)sebsN#o1O2prP-G8zHy+G*B={a&s3EihYuhrNRPb42a&h?+9?7qd3=+05V;quF2UyD@OXxq+r4fi63Uo zMU!;E2@++FFiEsI_#>s{_gS<-!yG(!Y0`gY)o=eXtNsVo=Ks#B&i|jJs;Z;#X@&S6 zYTsejAw|uJsVXMqZNQ*kOGNWS8cnqT0xeg!S+t>cle{A;4cb5aSAd3eqdvj!NofD% z+lgjK8nP#$ByN|fi9b2_IjpPi@AsePCDe4oPC7$H(bU-UEas*g$xf0(RnZ+RM?A9; z!jSk_N<_N_OqoogeY&Ve^-LN-F-Wmqp|2=_%8|WHIDB#Rdn`34g<$x;jbS%*B&L!* zVip>V5G|2RBcdEF=IqF0ZS>8Dhr5D9)mF~onQgy1Yfp-nQ@+HhDpsk}`jz_AJExhw zT$Q@#4Qk1+eBKnTN(Xgj_hwgFxlOpO`cjikDp|(z+%y&(SWxq&O=NeC+j!1P;vKZ> zLpGu<2&EOjVED$%L!(zZ4>fzgx^*6?bA7)%sUGzJA9wSCYP#Us(5Xk*J_bJK2uPbV z{m!<`CU!&JM6^9I!QwU%1BebIPkT)wJmt%Uw(hpnPp8{gYr1V#Oh$oZ>a_2pIv#Tk z8nXkuV~sG!D}fBy&0SXMybH@zb-$rx9neWqw@6Nsy)NV?xMGa<1QovyH)ADAUft5MmQy92-aMhvi zTJ6_STVPeU#lY^<_smyDx8SWcMu5cx?V-8Ww(g?}c% zBTA{o)k*#8LP{f@StL%nJwrGsORqf)Y1GahzYsj;j0}_ev-? zRm|8Ve<#8Pb7P%?>sxn_>9z1$e3qiofcz6A%qIMo$S45pN->?@gIj|FMH8x;`5N){l`P{zky5q zTh=^A)?M)o3u z(7~~j0TX-mUOYZMP{Ls}$u~`Z;tht;S z6hO2&XNPiR+5SBj2D9ipXOp@?Bp04UGnFhsxHD69QavEaISwGY?VwCN6`w`MQ7Fy! z>F=0|dn>%%U{Z%ZCYh&Z{>`0AY%>WjOw@zlcym|1OYtUM0a4 zcf3oOs=N*#3d9M}GhkB~at7CSh{0Q`>*v8|2&Y$|AW7V4@$6H4)-~ z9GcIoILFI!NcHZizZ3ll^SDmUOU92q0_hCE?f2!rmAD@y^1Vo6x+Zo`;UC*B_f7MV!uVnO2c8O2pjRWt5M$-$TR7@!;!GyP#KQM_~>MxTIpv+w1`qOXyBqPN{$dZ z&Un<-ezr-tOjdaQ-BX|MbWok>?14F5jzJLpiR%txtirZm^;u!L6q060h1|<9mXc8^ zjz?Zjp++agxq&U{HKJ=E{JFQ%ZT0dk@YKUEcTt07TKf389Fah`31nd4T-~!j6X@B` z!uenpB$Oa1?WD_g%u{`I&{=ob_zKz2j-&7B&E}$Qpqa%})z#E)uU^*KA$ef7-E^Uy zJIs{a<`ES1;=Wi<@1Oct+p(e~fNr(<6yq%PID;U@LU0>Ysa;qhi%@6|l>$=~M}t{D zo*+-aAob&=#LAO?nT~TZvS$@75d}Fkz*x2NB9KLZBNDQ|-Z${w1iwhbU5?{9FF=&i zLvQEx0}I-1S1LywH7h@&CuBZFawD6!I_+zJscYhx-r*x~sp^~CEOk3#i($bY+waW% zg|m|G?UK+^6@R&9jkMzHu+F)V|WQkW!RcopQY8KYHRVm*5@KXBB$qoUrhqXSeT%E+dlfjJNTeM= zxc)(zoj&nb z773$5riml+DkdVn*?)YC{N*yN#r$!7qZ=CPbbXMF%`h1!T#GyU7DgQWkNK8{dU7-w zh|PhhBc&(icc!?vnheB@{BAp;x?P#zg}h1bKnBq>-Q=>6qlH1Di` zNhYHcWe)ZP%Zy+01n0+807WTGTT-}5g0p-P(zJG+$@uu|;uR`~$HAn@zeKLh65jFM zmCWRx59x&8{wXZaa%psW`WZQzKe>SackMZk|I#2R{%2i>#Xm2S#vrPLT=`X-LCt#} z1>J$@t6HP9bc}?tkIouMZ{><()2>o*knjgzmQaiUmT&LCCoZmJ(^`s{+=y^Wx0}_a zo4euu?fw3eH^7Te#Zjj>D2Nx1fJRgOM(Q()s6obk#~Sd0#UzuHN(YbxxS*D(GRak9 z^^m80#Z=3TDu*HAi6$Q4LQUUqh3s`gqK!M)DT;39xq{N&vqU}fujGZl}Vi$HLO%&zKJpo3zyoh?xD9HiAm>>%^tHS zzvV~;-L;eoM~9ud%fJdSy-b|yaR%^NC~?_X#}@Je>io4hVwAPg5Y;N&H)-75DH->C z=NHe!vd(4Kxlt;mtD5Es^N4k85ka#lc$4G?TTIa&ZjIJzRTz4OMy=P_65b36MkN*u zTZMzoSUx(8l|hXs~Im0 zK!RO$KCDW^SV3)5HKvtJ9q$lx@P+95tQ~iax=ROVo&B=@iTtK3Gw6^QhVWGt&j%~% znlN0o#R`5)bn!v|r`faMo^0La+A(5*Q)Zl2i%gzg=KSo0DpxSVqPK|&`xj#li`J#b zbc)g;WFW|n26p#BmISl7zJy4O)ubrPS_wFpMh5djo3}Z-k$NX6#3f}r#cIP!|4f*6 z2&qw$JOwiulE-8pgtuFpz2emXXZ}L0Rj%dVwP~Du{^D#&r z3y2^s1v)&dctiFf|J^|Hq-m{b5_=^!Svf%!Apb+Y95f#~xbsi2wFAj-tH;k>S^T-2 z|94C2`L8l=Q&UF+O#}FjD91vK2-B<6X;6j$D_x;x6Ih_TAVE#?gMMvEp27q#VGm^3CtpTR``jHe7Md;$z#t75nryd9j5sBO+4M#)EUta0R!4W^{QaKM zdl+6%`nd@i{yGkZrTISTOUO&;hm!82WB(lU1Pz_DY{fgN4P~)xB|3qI)>*a^Zfm0d zn07MmgJTnpJ=Me7VHsi>a~*_XO1{R|h3#VX*Ah;84#lOcoKubogi>NXvi@e_n~XQ) zI+Oge2~c>Rjito?`wCNF0SUx2J+Z(t#4X*oW)`6*DN2dtr0}bj$N(aJ( z@`S0;rZmK;ZcGiM!H&mbuna6&1vVZIKx<*-^e_Aypbw;_S_<&KoVaNUr&V3*UNF$K9** zVM(R0ThnW*u<3Y$-rV6-{`FH{W$W_XN!{sB^b!ZX`lRm~-3%sdV29V@p+^Q?8=vCh z;T&=*klx9kAW@B`iK0<8uZ+Vn6MAWro5@MQ!azCcDzfR%W65t9>t5I9icE7%y3(Ht zJ?l1_p`u80KXT?G)bbl(!bQKni;9Etj=+?uV2uxjtN956_?QIu;^NABCsF(k^MSjad!pPBY7}4%rZ7O|z%&EPA}u3LSUZ-kGV}`V{!viWqKx zck|+TAOE99>S(Pev>qQBV_a9MU9(dnI-R;<%ydo&C+i9NbZ>-`MI%` zTb=S(-t%*%ule8Bjouc>@`}a*8Yj9+O!QX1?_@D$*j-gv#q^~m5A`B51jv{W&2$_Q z!B%Hhi+COj9dTDcU(L0JjuQB(0K0iF@{lxr)a(RCK{L6$CObG$-2z-I+)czliT20Y z&8Xb3K5sOm#?l=7G}|Xcj=5VRH$9ThCS0h$A-aUUFxLC^T55^$y2QtRxWb=11bnQV zCEGLw+L|WP_9xWTSSlLNYw^`f@tvY_qE5=zv*Sff7^-COM#YLB1&`}W@*zo+?pRZR0ziwvyV4}C$AfP5ZBONUbg3qpY(vNm#uv> zrsCYtT*EY0(tClObAd!kHA$efsB6=KlL-t3v95f>y)52oZ|ASM{!vOxHA&1c3qilR z^`jKeDA{5~rn0+~?fbwVXOB>hM7(^;JJx1BMm6O=O!$;f6QvsoShgu7KYb&`Ou~sh zK=H(PZ!4Mz(^A|=DYhM}?A}zVG+?(htxMA5B!GatO@JqC*q4fNUv(7WQbTTD1w7XQ zzrZoq#R3o?TKEuZm3Kj>u=XX%5%3xp#Q`jft(4Lyu@5j!-O@;U4K5-CF?E78h36>R z5N#BR+EPtZO=-=N$T7$>>3$;53j}FM;;+(*N;gdKi6yMpxDK{!R0zk z7vxjF?S$Dt8Wn)KkgebP|(@%YzB(y)$CqWz)E%E@JnyP?Sd4eQt8Xa5Xpp0a= zVaAax3_|`Oeux?2*pSLurXRpy-5Sh@&RxFCBX6TQfQ=xVzI0PfGX5mf56WJw4N45X zR$OwF<$fZV2i*GP57i19l);zowyF0!`WAB7a3h?mVL?edX>4GI(r1@AvEI;?YQa|9 zGoL(b|6IH%nXfe?7b)tQ?+8i@wvh4Osy{?O{cOIXwCY=GZ`iL5iKnYuhY(^-9Tv(^ zFMvEYE!*wqQzbOEb^joY!xkOGtScT8gf|!C$*i-pn>A6$RTxTo17F1iNV>Mv8EUpt z%oUXe#XX<$Gy$SYmXT>Z4&3UFfq@!n#|%H|7+A?F>_uq;DIwhwiFyB2QgeR&N87gg zh-RS5GbH^=O~08P>|`z-5m+1YF1XgGz6L7c<_w zVK;!3|F2ow71W*H1Hfw6qu~rqm}nwz>ml7Jl0c^IO>qpL((D`6A%gcjqlbZPTeH}3 zMeU`U(WiPT5>(~~Bb4XO9J@r4JrJKcTEwEzp^?gFR_hd~8iS>K} zFP02uuHp+5s%OAO5t8tcyu&NGn7b+qy(9&shZlrENf(nRg!xx)>Et4>$@TdU@#@)2 z{(=lu6KIU`6{=yVak7!u^i52T6xbRUoB)Adi((5dU_bnTh4L@bL38B<9)h!0fn+>+ zgnNufg=VHFYJoqlZsqs_NS((n+j7c;^36;espo~oqxl0WzXcI(KH6PGv9&QR1x3`3 zPqrAyS$=zr&R&zscI|QHjdeo)qp^mPBKkw~^J={HA7zx;{^y&-r|*ZIgFU0DgT1|( ziK~@^y|S5$o9(~llvC8!o#)kodX(-3D=8+Ta~MfqtOEDaqeS4lxOMTKk>#14<83|G z(xM&NYOp28R^aCSWS#@Nf9J~)PxJud_->Q{-s9?uJiV;GH$2+jKYh6+CD$FcyL=FK zXmF^tdx)?~u#`WAM65!wp<;|uiTmRhYioKJ6z7T9H)a*5e*}<+ssKtGW^TnXxU)x5 z^-MLV_ORs7TEp)Fn64XrZul)uAW8H}o~ym=*u0yR*cVL{sTB3(p7J@F&4(6fVTW}` z504no^!C-W-eFiSp*ln=+PgfmR!qV?aWQ9^Si~C2JB?#W5k-;7=I9);a1+`i!Jj@s zn#deZnWU)lxK>&j@!JNQ9KY%75Kc(*r6D9M)|E#HXY(B-(PgA{d;d7kZi@B#t(D}* z)W*wD`uLPz9-W)Dl00C-7ObUJC5_eA{OSiOi#1DXc9qtdF{z8dnUrg9@P=!|FamLU zdA{+*ZT_{_J*5%{)Z1OBY&I@lR==)|@oCkFk z_9}WE0ZVF~B?!3K#`Upe9ri=j<#XGy;S#5D*m2)OuCcWrY3Mp@bM9OwHVx`_W1Rw$mxY2P+`nnYcr}w@vAp z`J^4BfcC-DYZ30Bwu5u)faa6>vOU|8gN&SgUIkXQy4o*cFIh7Yp7ROf>KJbOVcm(+1IC;Ou2kP zKmb1ki_eOhNkI_DXP;)g5l$PE%6wO0!s!Ip^7NM_%?Ce&+qIA$UZqQw-yPv9R5#vu zY>e4FUDPI=MV#aG2U?qjQi<P9S_ZE^DORy3^X@)Al@i+s zR(52!4b`S5KnPJMPO2X+kaWp?W>}duznHpQQ8LKIl#?Q83Bh(ARKa}kkG9)ei&lpj z(|BY-AZHEL(f-&B-m&dAgjkNk73jU}8y4M>%tIBX#xR#t4;kIQN#Ajtpa9>zC2Npw zh&(bK{7sl-mLh=5Op_sFS-R{Y$Udi=w|Y0L@Zb#%t#GCgwXgNJF+x&EQLH(Lq?aNU zENT(Y<_7Po&!aU2J?w>hTXe?}mptqtT4%U^vrBj8t{f7f)Qbs@AaIl~qnqPZR2pUkm%r#wdIaWi9Ni`oUXTcjdq=-MjyP>X z&seF`9Z`82ZQWdEGXBnf@}~UP=PX&tA?pf?R$0}?T6&~pm}~7(W=2-DNgpF?g0mii zHMY#0Rz#IA)$YiYc9E#^wBn{=GLJ;ZQ=KjqWBV9BWUms_EC}|p1=q^GGFiR>*Q(mU zGK4ov4i(Tr=SUXUY+%k?(K=XkV6OZIZNgAv$28n{)o|I@jx21GSG`oNU54S2Tm<0@ zcJIpM@`n=-DSeE$BtU>^`h;~#7ys`PG(ODGZxxxJVm~+cy|G?#AO~)dHC*GJyiXRU zd%~`zIyXhHt5TYwjNP*R3zusmc>c!Ba%&B9o5VLh=CG^#bjAvpxW+9p8v z`A@G(789-hzVyd;uWW6D_I z{{4d~?)VbXFhVJsYluif1m-9T%_vjLq{uRb9ebJQc<%zHusRG>(&jRkM{8uGuB~G| z+DeU638%gk>!qvH&*5d z4#vc0X)J;<9EKm_qy!UHIXGb1sFX;|uk?f^*e|*BpP&(+eCzr4&s8D&j~y+Z{~zo2 z|H}Ms`gpajFS#9e`N5Z4tfl6WQYxfgSPVy)DY5kCB&R_TeNJ+|F#MROBKi_UBpgI0 z6l9v#7|~HIJ4bGpQzCs)+M@w4ofP-C$`-Ic}pRSQq(pkG>!@jGWqo;B2(ioZ6#cH_BHi%FdJEdbBh7 zCw}>-F8L>4`6pcYCms1G3q&fO9|r+?&==f4b_0B&@wj$oz(CNAc#a1FCeV%ej(Y(r z(AnHOoIE?6pRc?-EnGXi_%}NEH|uyeFZefIh))90uVB!x!qBgc;N2GizfJ=3oO(3y zZW<7uxS?OkpW!9E`vIQJO1^%(F%O@05x1w{b%f#3hZ4dt`*$*Yeu zA%bAQ2RFKD815vx3gXEc0b z3r%BwB?+B2^n~oU;OxojrDT334*iJU{bl&{6YG5)$`j@_3c(TTbr|7>>4_BZ0oVVl z_r`%U0NMw=|JTqBCvL!(4=Zrb-j9them9KFuN?@;5P3Z}<5+%>{XdPLKHq}*2kkO) z3ISiaLqDQ+2{~pe1VVOMLNS>-!*`FFFAP0l`;VD@!1^(nU#Ua=e}NG|3pRn}elh5~ z8OD0I1@DA>oq+PBeY%4p>fN>v!1DA1pYc=!JXInf4>xf=;e~#F@E3;=+^Y+~zYC0I zXPH9?Cpd{TU<^Pr*>a-kU-!KS2LHmO#MnFtZPGzk=ZtG6chu(Nj3Q z9|Y20!0+~*21odQQ7j*ZC#BAcxZVKxcQPN=&>!%Acmg{?)4lTyPp~IWy?H^j3{TQ9 zdN&q7)*<~7Q5ig8xAuYNXm*2+H+^Eqt> zy4P;qVkol}6v3*5CjjW>w;-5`)^Fk0@1##R$%Xkv>EXvU z;C%dpcgbNm1>J~B>wB8NPmC2F9G4W&ckQaOy;@m@c_1n+2>cTJ#Lsqt5J&}kWp9E~ zF>HFdKVKotc};gz!e;+;>`Koh$7M_F@rRjOnM`I1e4E_xHufJ*z^_RfFHnHv2V@l# z@ugo64&)Y{XibV;TB1wJ5&I#Oa#`ahur4EUEayhJ+2sYzB_*6FyHG4FdK}#>>Tzz> zOTrP}l(S08hfVW1em^4BA!@zRZr7_UId)ihRt(|E{7`e}(rCmTeThE};yj6O_w(=` z-fwgIC2CHy@nd*4?3*Y)wSnM)O=D<(%v=8X@a7-$a{YPF-=mb}ZD?LQ-=-?jKXscj zd`t8so08+rf8;z$VxT6HxX(`PvW9Wct%AgH5E4*4$r`N{0D(&jWV6bO)0}v-Xr~i} z7KquBRpf}=W=zWQs`fHie-pYKB%azS-1L(!6!5Ycwk>JrL>i`Z+Vsoqf8@Pq84C_* zI?UL3c|v1&bA8P2?#vcG$MLPVQfUo2wkwVoev6|6{c%iOIoD$x(3=|D;MbKD92onf zXYl)ohv=N>#TWl4Cge?9$b{ZF=#k%23%T=s#&2Z}5v_+9S3KA662LM8M{q8E=IC)C zL>~@qwN%HdFg1xiz2hS{*OY6{57zt1lZZ6&@*5dK#2a^)Wot>1Ho&F1BSp>@SSiX_ z=kH(3rCEB^Twvem#$h#u)a#D71j$}#p(_#QAHNt6Nu?cc&~Tt^=&TXKy7}x2Bc2=X zH**lm^y!wOKKqc2>(ZG@?~)8B)0AWN>(Ry60Wu6{e9vZ%;8gaMpEm|Ib0zq6G;VL6 zQ5&{DT>F?*^;Q{9_FS_>&$zZtG+04oa%^wkms_$j*U+j_jxH|Y0=Y)aY5MCzClKQr z$LnLV*|$y=69BFaVtUPSXZ3>5pNvGh^_I)jx&Fk4oA0eZi!7%~0>245Svr`Q+Tl*x zVdwQey2E<$xlSE5$KCwxgs9sTngp3FB()?c6Y%sHt%pf5>rvYlFzc~_27?2#dB=0h z9BBLVnKwAd4j^kK@^^u=V#cb;b_YZtwoOMJbvmVabg%A5Badz*7!D+*>l8bVl*p9z zI;>SD6W}~?`)B|NGsJbMtW?{CS`q_0lqRuRj8!Z3f=tRGBVXILO4*3A4m+b{K{td% zE%)Mps+nxXN%;rupmAbdS6k>WmPE8$KheSp~81HJLGhMa(3J15@ zX>v|h3b>kF7OZ=$d60J_hgpO8d@TC$JtY>e9`*F&A7J5%W`ZHbEr*u=1nI5oDsO6~ zut?cip=#&W&*dWNY>GDVj^1GyuZ^2g^PC2?8XQ}~6@$n4H*_r)ro5=^+EE#HE?d{a zcL`pJ2XoU{W!~@VlColUK_V=1NtPXUWFBfK1FC_<-oY}IXRb4JvYUKphGVm0`Jh-n zJ88tyDBaV)3^q#E9J~qBsr1|eb4nV>Pdl$tEFA4kk{!%ah za2W(3aXjIJwHJwuWmo(`CCaUGP6gt(WW{@p1*snbIQeNcWf*@HWwysqH;p4{iU*7e z_Z?_3r0={cs4VLo`OHj7)e^%KIKG!HUzKxhCutXrsB5TpUKVKrZdekeoKI2M`@iBW zzJbZ^Zgf2^RC`N{$4C@ONc~*5Rjg(vuumr{!oXEmj<$^rjgTmdSH9mb6C}7h)9UTF z7N-_>bh7D5wpOdjMLh6+C9|nh>Rmo#Pc%bH3Xi6#7U4H=z=#s#oBz!*pqd+_B36P6 z;z<9-lBM+aF27|6n&Lc9iW5ZCfUzZM!e&8{R*~inY2+VtOu8!a*u)rjN-PN%U5K`z zHrJSB5jWTXRzB1%AUs0mme;E~8L6Xj3~Ll_N&H+utpsbDTXgdpQq_#q`)yZu!EVlM zEL#M+F3;Ara;;YCXN+4hhR9+rnUB_sgKhGYEh|nvn(IBS>V5y zb|Ezpv@L;@MnL(*Fo_`YxuS$0BXX3*ha!tTRdOTl3P&Yo;FhCbgU0>i`5r%;#vB` zXR8$}wgHJWvI%4^m$`dU{LEyOHxV!>3W>V%<2KI3MNID^)qEKV?^069(7m~obc6JX z)2Ij?WcA-8FwBc|g&bNV!W}+Eh;^pwQxeNU@AZ|Zbkyie)XESuZXsT6y>*GB@VFo2 zNI?d4iiYcQEVwy`K^fW1>XhchTw_Pju4*v{VFY!&s(m;)mvIjPjI&sdetsi~-GOEi zBEBc&38S4zS#pF~axLu^EN1nn)Xk%G#WEwNYtMXIMNX!plQnU4FI!tX)Fc8Gl=CKa z+I%}XS_e6QPOPbwW)CVF6&(n?eTJs*#2MEa)?FU#r>(a5wX=Q`7HoMF;FMd|Ya+N8 z**6-L{!zpAy4oPX9~}S2ep$Wm%R#22hJD|&MMVZqV`ULPTv!Nl$dy?d(=AD~bN2NH zPThA|((W?0SnQ)p&yO}|HM*A2rqVhyr!us4#5s?l`)+1pMIPDgLP-ahB#vm)03JTSUbJFWk!&$pzgn1H5M$d5&A&T}ad^)jFf)eyOHYi{)Nq6=o5M^<6Cc>Ly(I=y1^tu`(6 zOnOqaN_PuCGn`yRn?|g%;D;Z%PGOsuyF&Qq?73`(szjT#8o#x@x#%>;b8A$SBP)VIjCNPI`(gd-B?RdD)lszMBht}^af9GrraqBSR{I4>Mz0uEMmOl4hfl1Krn zSCd0i?_*dk?_Pv)$LgyzkT4{qkH%&1+(QQAI|w zMz<`H-PkDk@)=BADe$~J*;F#{BG#j<0gFmv4Ha4`7KRryi)XX(TDcZ!VvC~IfJliT2Ps*Nt}Uo{55 zmapEBrO);h4jjH)4&~dBGqN|uQ+UMpt%7=M2FLY1YPF`52bCqlS99b$HLYZdPVJUP z3W8t_V?j9sJW3>YKyoH0_1NZBRoW}`-}ck}mFlioFwMMM0cC|c5}4;Ii6+=h z1VWsNC|;y~g(YqWKi{gYKZ?tnKIYi`chjK|gO%?ByGI5$&;37T)>|#_p!NBq@j22Vj*uoh&h-3uk~$m8oum23*$2UM6I6f zT};6q=4pXe@&JVj-OSb27k?W|^E0s;g`!qVjx}np3kiF^oRIWvy_qMYj=k|@9ywm@ z*afX}-Kui2B?Z{gMuRkw*+}f7LvvSEc`{AmG@Ey8v{T`hLtzJPASlv@4t$xg-`+bw zPl&1cx><$%a}=pg&z=11N-EOK2aLf#X7QpdYu3iqEqZ8ZM>Z+{4%5v>6(w6}6A(@3l2>S^)?2YjzkaWbHmwB-ljkmp+7 zx~ngpSov8!STs%g7tmI2zkN~TLUY|PVmZCy|~ zQ>75=cTCb82_BoBj-7iABJ`^EoSsY^dLm34sjuE$LoQVsfjebcs!YkBzQBPMYf`bT z@NHyNW5JX%-_4V1$7+N6+jJHa%ze5@GSmBZ%*Q9?QtIDZ=T|Q@v%jSP-jsm#+~1j_ z0YA|zQ5sTlE?>fOqvMd*L51a6&Ai#NnTfjP5)utoT_R4V(uydtxo+htkAr+l%xwn6&Mh5C96boC+Gp=Mx8v11gaQ| z9ih{Us}4`gr%p4|Xg~@m8WQQac2(jGZ#fhRsTFFI?AFL(-M3R~z$wHbmn5_0G^*B^ ze`ZxL?m18`m_x?kq3}2?K9ke)i+m3tJQxml1g|Una3O5H}kcv9|y!*c=i&R&_azADb<%5vwXD5q{x&FdK3y=h!i5|-fKBv zK*KW8TNDVW{@?~_ItSU3UhvyQYB^V2{bWv!l}bWfG@mx1Y7(o$9ChD3bkV{NM6A0n z?FR$h^qC@K!9rkMqOttrD;BAySqig{A`AhBDa@QvNjm3}$9ZXzP$!ot9?Y?rH(k<1 z=I2#h>{u3N+vh2sAej#vh_hfOF%CT7Gme%``te?=qma?hhZ%N`7ym zn|gb>azArz5A<0xer=zm>#=yvOQ3nQAE`Qw}d zPMp?INV#u~G<%c7x1#PY>bBsC)Y&s5jS~eb^O2!>q({s69Jv%cSHW$|F$l?vC#IC} zHPV!rutu4{CV^`_AJl!$$I+G3N0h81Dp4baDwT7bA}(=@EKe8+@oNrn60-a?kxSHr z;Jc*c&;Gc}PlpJ06U3DshDD#!P%*3DECPjd_PM`K+VKuDQp70RH6$>}np~LGX&Dd6 zbN9P$T*w&GnWt8X)rcnz`YdVB5=nI?7r=0?1)9iE@K9}u9D7FE8p2bVb* zsE%i>Wcv&rl_Df@na9n>UAgG0-V5#NWM|P%AX1r;3AKzFKFat$DvKQDP(9 z)R*+gXu(&Vga#mh8x6&B{OiskA$)LLw+Cp%LI7476u+HM)k*ds{P%J$I9z?`5}QKY z5GfyRLMq@A+f=*2iG%cod>}Gc>H67je|PA4MlylxU`uhhOY=AF4(YoId`Jviayz|9 zcIF7>8`RmJnGijkGE4;~a2C`gf3qfhHqz+IWIx7)SQI9FHB0KFZfOe&g%ba7=1Vi_ zX>izpLyD0T-fC0Ojez~Eyg@mKY~qTgP(x}A(~l27_%u384G+JeLZz072GE9RbTM*#J1{z zqvnV$QOEC7SX7}mMf)nkjL4)O@ zJbzpQx6S-|CwfmGG{OY+6cqDp5YXA_IyQ2lZtYWj23tGHDs9ml<%PJ*?WPPQ7yLG8 ze@*4VHR+IGJtSW3GxivwJ?3gNNB(vWnT_aB=;-7QztaJl-SpUiW2v9>llVO^O6~`Q zt!;Swk;TRlf+P_GbBrm~7%^T+HQkOmwZ|DZ43ZMdwU38R$GByUXrkJVYuWQ$?$`7- z&~WFtZ6pgL=9}HsdNt7-Xg)e)D1@#q8jLk99uCwN96T@wAxsUC(XEYQeEp4WY;sI1 zlhsAV$pWw;d-r_lKRL<;<89-9@y4=8D0aKN93=wf9r<}%NGzi$FO24K{2`ph)8p{5 z);U)$+?4MA3_VvYd}5tq%^@*)R^3TKX?ScW+M9bu012&LHB@JK2rRG~&0KHD60EHXSIqrezmu%j)H zD47W_x2H32|MUrFyrg&K8VK?=PcZ z5ie-&%`lU|QZ3Fm#OE7XfcGo(PC(rjt4~TbAXp`z$8*@)`pe1r;q7)Ht4DS_(Mtw+ z)-2VY7FE?8URMmJYTv8TtS`h?poAFx+Z)5_4%VxTJ6$zzSnS`m!5KE%_bVFOAJA?E zwGP>WAIV)dx{qrb-U!I7yA3;0p|1>~P_%wIE1lM0UT#~pKs=2=JpSs-*Uwa(dS3b$ z>~?#79Ju|?AYP)*mfm1ev)Goj{_kKtYp-`y(*Y=raqF`-5b(gZ0LYZva6G`-{3JiF zdVevtY+P^qDenj!qOr*808C$6FZhuKrc8B%L)KLKpl?K**XYjZfZ8I^c@MS#nb7*- zO=fZa2FiZH9>HFDc=dO-bO!UfXSeg<*V2YZgR^`?ngDCBZAR4Kt-JI&RJR-RHrRCS ztvg&1kizrCth8mP;ckM>c^j_5jh)7-^;%M?_H`{7Q{cNsT!a2`wu3I_3ng}ec*2Vd zzGIEgPRksdoznt%rEc@vH&GuX>7F|$^9(S|M~$2ABKz=aR#CObl?UdM#}nkeXMShp z$Xm51Mr*C}3DWJ0L`!!EPFJ8Iplyxf`tk5YmO5!N#OUoK0-~o)*iQ+|SMkIZ^kZg( z_ZeV^?^aXW-3J8+kAv^s7U)ZO&!G~@(U8A_*L_^HXKn3{%vD{-e~M(>`;H%=^^8F- z2Q+#-_u>5rCEh@!T+_hlq}fv3wE& zIKVC7Ew1G}!{;mF6hUu5n8x5SxO@PSw!4&G)^lIm_F4|KQ%_iMC#Vmj`wIPTsvXZ9 zP*?mTvg3(q0JQSu&A26pUd`Jc!02=>S96I8a19 za=5DN8J;rofXJS|ln1@FJ)9qTlY7BDrQ(odUx1d)#Jh*y<5p-p9@aISx2a~UK~!a{ zaeq*=*f6~c(A1l_8?vskdFBs%?+`;SxIb+zZvsiC)+Ig~$X9w0 zZx0@cjuka9REt`2nr*N*m#ym$!$!eC0!)JRz)?Gtb*aLo;`AUUaT{gAxd{kb)1}Z6 z%zpd4%GEl~GXoY5cn(S0qqyX$I->jKqkzexxy;H$sujk-)2q+H^;I+XO-CPj`VKKF z77+b6UAybEv`cZF!kM{318*+(;F$(pFTT>;aEDS6vpf}@(zi{4Qw0Cq7r?(xu#zHz zuIu}J-Wo zrJFd?CX#tKnJ%?0pIFLt>NVF&t-Kt?C$W05VoySSQhf!zq6XrI(0eQ!E#~em^O*?4jnd+$eEdICSB6`ldPX$Y5YnevQf`P~N z75gvs6!%y}?l4&R=(>ooo#@(Z{Ly3{e?xiL7D&2Ix8WU_^_TxB5ye1ahi!i!8~8sS z+rQagaQdG~W|E?|<-8oak4y%$C8p)mY}>0gC$qE$11<3B5T6Ty00%9$MA!HlJj0w& zg48vdJGY%;XYI_^OToagQ$r|~72?!e_IHfJBXj@O@q5Dik=>&-D_57dmlrN7e2_aX zH;XT~)Y?%^5EBmyvg}l8C_ap{F=vmbjN?o_UR%CTZv%A@b%f;?y?ei(cQIUt=h2J> z6VHae@=4beKzJiQ7D`P)^~ z)6+0*Leb22Jz;u=L&8%*QDit!iQNOH4-+{K-To~s^d^`tO|+na(bi4-7Nct zQQ|L!=raJAZ1s*CtiMo(Bq+DM@_kjjzd5`A_l?GXK-vG<#I+-)|1TphDEu!*9I_Bu zQ#z$Tx4+m^PBy<*EBy4ew4jyvuR;jisUWaxIfDTpHo6#Ax|*kbh}=O1!@N9Z%AiU9 zNVqyQ*ZNaTj-Utm0U6I}`nA$pMtx#5|GQ+hc8YtPHhKlxQJKE%=i-@nUgqy1=XKU- z0~?1fsHH-eupfpGg`7#UT-x1+a`RrtpFjU$x*8E!l|+6+qT{b^qn8)V z|NX`P`}gl4@wca2l+yaQ6(BtKI$st#5NRWY>s%w#R1tF#eC|&!CNXja-w-i;TpZ7^ z4UUeui^t!w_*Hy+K+og@RyNiGf)Z)W}{i;8Jw!M$ub`eIpT4pSm)JVHFHfJKmWNlQT@+eh9+* zZPKcgglj6+Wi7hcQ!>SX&P?E@29rs?htNL;!qMBa6~_iWo}jt3vm1AHTV9xJb1vDd z2TLDPhqvOqn(vV*69N_U%$OiA%t&8>92S?Fa8cY(U*s*shHuVTScFcSu2?u2cN2xz zR`RH|&|;F2$F-yHazJUC(dF2ZWjq4SzlBllKy0{5>whFx&|C2FgHf8jySy)}A4X?cE)$kQkT(`U@}4*yYD(`J8BBXs zY<{>*Us^bSem+hA{*l=y2$N&RRo!Qmuz;s)0&6Wz}tl5VFkOis#}I;N)~O5liWM;uUqkvY-dLl1;z zKhz`b71yf{1jS~mhfo5uF=PsQ*+Xv!mxEclCkgaqzuE)jWwX-}dCNTp?O9nuSl1_} z-Y21S9+GWHe=t;~%quQtctR^Z!4R25dL(o*6nC}OM6Sf3RkMcOQjGMEQ$g)kq;RmKt0!~p#rTuMLix!7q{M)hLzD%hhIP@RqLL?5He zUM|a4thXt{lhOWC**>+9}QFROW#zal3VJqnP^elj#Bhxs{-&o`vZja<5 zl+g*dm4?ozQ#(iBao$p-KS&-sd&LBoZv6UL?asg0s&Izu*}9@*H0=j_o%e29oOD7a z)(^U?-{0Arc!AJxZx^`wmjgLQxpq+wKL7J%Lc-2!@qecTe*d_}^KUdGtp8@oEA&cy zM=tM*I!nVvmFqp}dpX$%RZm4OU_t>9+UzAGEk%}&_{u%7XXXE7-kHb?e6h*6$!YGL zPe(B4$IEYEzKZAKR+8sp=MvB)B7pn$=`RWxS5YKI+Bz?Us>PMcyMW3vnnieIqoY+l zs}2iJ#k!64YZ%T*<$Y=5MBN(7nV)vvRZ}_IHs+U4&GouqZJNRNvXRfX%mpQKZmLkw zh{vVvwe8hmqIn>Xn)Sry@!Thoz_1$6i4u4x%VIlrv&Ka|vjS7}HF%$!_TIb&)c3$k zbpWu#Uj*T7jISHRlLOAy(N-?-tNb3;f!nB0^vj_iVDex833JvlGWc)bVb0+nH8}oN znEP7*EJ)$M8AygsW<(xAAqk(LwApBt9wa!ff2>?CxxzxeivMxdzQ+1@2GSLFf_9@t zvHREqb}b*e%0v;0ya>mbp2aw9YC1iwyZ!6OO5Z&3C2^hpZg)_9P;2+ot0RbSoBOd^enHJ8BX5YmQ8YK77^BUg1} z+qsa0lh)Q*TMgGwP=Oq#DOqlkCfcTT%o34tXlo^twHgpOWj(%Gf~R-JjX%_vw&@N< z-UDD8Fm2Eq-Z&5#OeV7BKZ6I+1Ry`+cij`l>s<(c6A^CDN2|b&x)|tM_6<$tg=e-% zfaG0uLcKsR=lfm1r|Nf?aqs{Uv2>6W;V}#14i`5#+<>A(eko4ZHd1BeT}Q7I79;T* zj9khxol7^;AJFa@mwt|OSYMELRlU~V9TgluHOj^7U&M1Wwx-}OnI_4Qy=ny7Xo5h8 z0T~O#&rh?a7 zZ5p`Swf$2fW9 zO=Kd#Xw=Vz1ZIqI<;Qb3wckovh-T<BzHcaua7uA%86cNWWI20><~LXKZ1VX0?R?qs$>%M+6C`Y_freT?_&462SY(S z5Nm`Jv)fqN}({ru*r(R+4 zY7ooZHK$}t)4N|)l}54$zTV6#dFq?YTWo_yO*&;+z*N53%)am4NHZ4XQ|YLdp)n@P zQw9>)p=uK3il}n;-mfV;*nuF(Vda~Ig|tY<1i|P zNc&eAE|sa#I=;5(+|28CkWEmag`IdZ%#vF!54mWoY8)bm1Nx;5<5kL-8QS4!`mJ)i z@$qSo%b~J$dKk>FP+vFj*=44Ib1GcVF+)k1M~Wqly8(~7+t#HZ=e+1%)U)#8^v7sp zvFM-xDal0yi`ir@jd&@BpXs0cHKCOv4i4?n`s}kuuOhauBY5{2xZcsh*NT}0uZe=X zi1QA6RHR<91qK;M%_V6BAnRD9FzQlobK5cWOM6vJmJw5`?&Zz8GGzG%I6w{y+bW)E zLznbE&kN5L_g8{b?zH1w+HhI%yR3iZ{+{sea!lVKOb7d?n)6@P)vo{3kqC;Hl>F9R z8vd$l(p-K}u3FS+vRJIDqRs}^1sfF11Cxj63bs)rTrWJYhI?1hp(K9>c$eENROVU` zh5em2@lK}C;O_a$2c$N@1GPaNnYvP4t)*5!&q9A(1acmfk%b|(QD47LZw%iw*0nY= zzc)Vs5*1nkmWBSfhq+WgTffq4s2~~qX$%JkkHKiH&I|saaKj=%f2fM3=H=&;KsDeM zVOSyLqvxn(aQr&@1n&083>rdM^Jeed@B5dWd#9*3!OqbnJo8gej>lJ+`@%G!G9!n9 zSf1H#Jv&T^u#<0aQyYK|VHAT>mPNX92)sa7{M>v5tO}5G({0bi@l+roRN%UQ#t}UH zB_BlN;FW#Nh%+u^F&N9d4&|X4yywb!%t{$&ZSS#-nAKf#vX5uD*Z- z;})h?yh-yBg1ox61XWo<7P-`pK29&t6=8)YV^ew+6T3b5jC4LcZKx8;vZ`NL7aj-q z*DtwPl`!t`U7h&+|9`swc8+F_9ES;@g9piZc}a(Yndu3a5QB#tccGPqfY+VexQ;&F3m-bLv$IH<1te6xU)+pQmB3Lj((1 z?gLA32xp3n2>if6CEvyU<@KL-AmF2TlG%6S;rRXkfA4+#tHk4Pf8ZjO^>5`-^e>#1 zS^_H)A%(TzMhfAK%9%!uSwz0^s;K-bfAT6c)OzWZVC@ZRWI4^Mr}cms9{MS^{fPZT z5@F5)o;T63?UoKdWR?>%lc}ro%cnP=?ZeE54BoHT2i6~^*T(xxs59VJ)vJts74#H^6_=V`_dRKMjOdDHo%i?gWuv&^1;LCxTYtDZvMOC!H&=$&~4zz z_jLCRnfh#4y#PjpZa;t!8VPau7l4v>5rTVB8}Tdn`qBFGB*{Vjiw{Ow;2e;d$IX*g&P`6rteMPjm+e@ppE)vCv>um>WBUkla^s)b<7d zbPmXFv9_L!*~r-Hz<;w|bNaz+mLb#8ak!0!&j82>r1q8Zox(@F z$rfpBs6Cq_gEF3$ua zrP{V}8Xek4iNp;#V}eG3SWHgYj409wXGug}ZV}vrmOG+~9e~1&Nl-%yxgm&D8Mnku zdNJzMGdZNZq~BAJbl)PntY%{l-rG{gyKHAIMAlzMZmG&f7-}!5R?z4V-_qD;@^n}2 z=t9H1TL<-EZ#KYjw%cT2aoxqK^;earbq{v8MNGgj z;Yke)RHd%)NfKgeoBsK5NZ{cG7(Hw$H~J+fZMAn|1p+}^1^(;Vdk-CfBz?LqGtcN4 zRA#&1FU>P_YGW`gRjXHU6tdkg%BwDHpJ`A47==qJsMx1Q#ll+EBLrBGsirjJ1l!IT zj6H&&ony(x+zLp$2_apKdKW^KIU%dTTR}_02Z)3w&ho8gWT8Ev&wI(!ZPql47`25-eqP$Y|07YM z;hMp?S4Q2zBL5|@1#hKH_K*Cp-citZKe1n8Mb7qFg4vF7B0yXCaZfjMpKbDL!6+{VWd06j(Cj6Tb`tjJUqJF01I-9wPpI6 z{n5eU!P+pM>csLRgh3cM&<$e~r(*auL{a8IRH>>at34b`(C3DWzG1>ZsLAMv#m=L4 zdMuh+9Qr%#-_`15Fc}WQlIS!h+}w?@cHU2c?K@GMH?8(Z;bWbRA!keE4OIC7ZFy7j z^j}$;tk9k&XDlacHt?<8wITQ|SgYBQ!sKnX!`u5)WB{Kbzg|}obiDdvxnQt+^_Yr~ zcgv;=#Dt)s3XDy)l7jBzvmn&yYFVshbgw(Ww4KnKhn;s_p_6WMAz@ZA$3x9x21{j- zazj0f-|iBa)m@^k;9xogy&4c>Pf~*M$Q%kOpVHE zN4WWa2E$N8(=n6l19dFoGH{y#rFaRxY78Fs7oeeg8@GM>_ojF_hJL^BqW@Sl{i|Hf?ti&jl#;e0qCC0}Y%bJUd0@JRo{5pys!0y2 z1jQqNoJwLbqju&>l)9;UDu`A2X|?X2bPIDrF8jRGChf_x(iQ)!9NlWfapu#TcTU5x z*W1ktl&^SYJA$jBNFNRa1%xZfM#8mR9}xrwL<|X6T+nMj}@7Er_*0JQ~CNwxxcX#xf`VmRqMbGbdVyncb=U`RE^`}fr^ZDdZ$u2W0Rq!Mlr2mhdS(_hx(YBAmFuXi$~w?8OARuC>7LJcIH#zeRiKsy z05Yf8b@IVe=KTy~5TGoAoup9dQ@MrIk}YRor77rMRpbwslvKw3O7kM(rT%Y9^OKvT zBa;dA4yd%MR^lEswL-l8XItugbSw^h- zS){=>YbKFivkPc$*`#Niu1KMEAJmuf7l;FNZap{i53l2wmDYEv{szI>U77P3$&t%S z+uAhmG89#g4f(X)xlhFbxKKR+Ijw7YVoOEr@u$i2Tf&H4phn`c$bkt)dgKZLw1}Jj zu1MT*I8Idyc2-E6cmzDb?pl^YQu2WbOKJy5?XLI<`@W%Xkg_O(JYf7*P#=v-^qo=r zu+*YFO!YI4b0Y?FuxM4&LZCG&{qhpaio&`mqT~y2#o@h;rL|E%`Xd<;u5IzLQPO)@ z-eJ#^HDRB%*FX&^z8V+zr1*d-vW z@uCV2Qj(dYb7XD4>)l)LVm~P;DwMaEwvyNBalECx#x<}( zm{}#XY?))35oqZnv!%H9>SzV}7>jO615|DkGpO7*7l!K=m+Mi(i)hXt-Xrxp z7cR`4r$#68OcYVNy8E~7SP$widBpemmNdh+4*5V&As4$)7l8xZzp`j`iuj34(B5j?bU(@Q_FI!f$&1&^qEU$ zdJx%z+X&4;7*QIG3J!bDh%LFH+c^G88Otv2^u%}MWR07+xYquR&wI92hufd^tGi*G+s=f0-<_-zRo5VL`H#q8A#~U>s^O% z0jY4PN$#B#SLsT+u-(U!A24e0EprF!#8`#1l*b%FNI()k1b#(etJ0k-m-Ytj zi1(-e1R~qk@%G?*qvsalXxODa+#Ip|9_)l}1WZ@|r^VPwvx=TH^y-=sQb4ncH6ia8 zRDW~vtk2dGgY^9c!7?Q1Vp)3Cs>cylurpWF1L;2;as|T1zRS@*U#CT#=~bcKwpyo zM+^uT0z4ueC4MDeZ>%o@z%=s0ewi;n2xTw|Q?4$*Ap|I}kW!}~=}u8NMr4KB02GR( zTaf{ZA>|Uh@(u2^a^-$gc%fPmU7mqvtSem^VHCQctr^o)Ri$Ny`Xqyw^*VD1YRsh9 zl3fXghV5m1OH^mbd!VJe&0%BVRk}*_#$w(q4ne8zppn%$E4A)?L@-<23{02j%IwS} z*V9bMRgvx@uM5>x`&l{EMa#`;>0Qe+o?P#*k43z~>srOd$<*Z2X?ihZ@8EP2PD{FP zvoVZIg>294UHTEO4DHD~?4O=v4D<~v{pi!r#nyu^_eo4mW%Z{R-LmRkD*}WF%PFV| zuSY{$w-OfoF=S8iRAq_Xb;(92t=@Fd(#zq-C!GZ(PLP*u!AV7uDjHTeSeNGh9q%L8 zgFNe|Cu_&s?5-tDlZ>qy?5STYXKF&J2Bn*50?>Z>n=V!n0t`-ZjF0k_4%tX^MR#=2 zv8v;%E;P1gN#PEn*`)2e8eBE($kG;(>FCdUYobb_vesDK*WMv>obEoDRD;8TiO1_S z6ztI@#xOYqK6mKr#AVBv9OnhDz@+7zrbW*dwQR}7L`b|$>)QN#>BS&u^!OKsf?tu^KI7L0* z0sS`h9x&3E3gQ4Y=4SB@(LI#L=s%DNhy!}t9i5P8P!sz=oKRE_x$L3j101HO_g>jK1(JH9J4C{)Nn zsz{imk}8cXA$1Es@&1(|p-J(do_?dJ>mMJ1f7M0!TUjwGaaQKrS1S0+TCyY&RRSdt z5=7o!a|Yx=ASf2TKL`RLK_y{tu`$ag*~)a%Nx}<6x3^@b0#W?DC=AY+tHFx8NqE(0 zYAXBX^D8rJ;_`cl(G9dRG>^Qb=r$o|vSQ>mavj>MzhbZ=L*$2LF12HVDSjZGi@``> zj7vsu+UEu8YCj(6481kFV^(Li%fRO)y!W!0^RO>hptnU20``$Y6^HciYC?Y!~ln0M)gERz&sj+`_p; zsK0M%u?KxvE`H;ou;i(9HichNEw$3E`k=kSjORneqrRYR0k`HYv6d~0BPuwkNo2-l z1K-Yj*KSqGZ`oAFZbQ2gedV5&^=cvcf_pre(Wh|{KNau zWnJJ;Kn%=HZ!D^cNN)I%h8AHs(4O=1(>Aa^QHt-zHYZ(T`-;1Vsra5UiG~2gYObqE z$;MT90jf8JJ;(i#fzyGc8Xxr2iFw#9>gKoY>_~RN;%yyn@!KISfoF~gw5!<7j}{`~ zIAr?vV{v*zWGvHEoY~5tbV7HmNkU_(B&%J<;;FdGhuG6!F!ljeLMskN+>$Giy)=~# zzvSL1od^X=2=9^FszuD=e1Pod>GIm(H@O6DdWI&B@#=!iIE%-*4Kqp)t8nK&V*CFi zST9Z)-SU?`sPjL@>VK7wf2SP(3)kO1X7b;x0E$hQ4hJw0B_Vi^f{5_apE|jKDpcsi zq^}0B>w*+EuJ#?|pU630_x!jsV9@F4UbEkZ7nu!>g?}h*>KTtGyd1d`UOxBtO@AEM zp$|p+S3ojA) z)XU7HK%Hj1AJ_x2LBZ+JTDU0B&Y{p0-ZkQW5DYe=zACXvoV3yqRy6XSd1^BRXFMYs z8^&WaGVrP12kEaqAz7zM6R0_pOe)uD*4kCuSa`uKa^2WYjTieUAC+uSwh6V;&*D99 zAFYc2>~S7b84ZXT^16*+)k9NV3feU>cILtTM2yH=hm*b$P&BSM*D;lIkZhPAkC24! z&D2I#*a5#>gAL&5Fb;)jvC>oq{b{S-H=5R|f#QVo%&6UM5WbsEFKm*T*LCC9x%EzZ zhZ~i*KTY}x$rZ|X_$*?~_AqUQ{)%}onQzdsSIZJiSF>c;?67<|w5AV+L23p&2j&=C z%`QHVT_~j&|A4tPe3w`YQllff{m&bKVZ<=l=7>wzSY2RuV#`tp0g%vP z#O;|07x3ngeE{Tm-P!ba{}HOdgtyRhFM)dm_CKpPTyz@)W|M+Y_84TbrDtYvak6FW z`9-LtHjlp_oV511py}?7^xdP~zEY*C7+bUAJDHmznnz9YFVf@^Iy*&{JIi^CrvZ zK9$UCg6R;#-+})MxGO90K#evQ(@ck(7~rY_?cdsUL$-!BOgp zMvjWq>q2AontuMI2}WHH2c+Dxu@R(O9h~&P-Q?YkWc0ZQ@+$QK2V{ix@x%BE`PF~3 zk1`G@AqBEh069tt8veT^xw{Z|2P@9UaAPVPFe!X1v}XHs3HN z1M=cL0!uxBEAdu6Jp??g(j6cOJc-mKI#WHEE3DQq3?SW|Ourht*`A-7tk=vEplnAl zmHUwZV5TriH`M?H!mM_21QsUN!Gb2ueVgT1ixtVs_2+HvnkYVL`hn1{&)zo7t(pxg zK))}S#>UPt`%BZhFia*hTx!;oFFEt&Vb$v!SkWa+)K07hZ_-sJ?<`>Stye84la*b8 zb~`%tZ`P6jyz^vb9C)&Aq##mtTGSOSgSra2n>NS$j6si9wb+cGxdtN1iOp|FYBVGN zyokc=E}(jIzLYk)%+|C9FM8_lesHM_%uMCBC9(}JeB-T(A7<=i3xjfQ!JVKpyQ6|? zupFm?u5+)UJn*M=+j)V0?R$!D#aiHQ8Pr>;rh0z?wQT~Hj=4H#(X|a7t!DfNu6`*i zh;!p-L-Cve`j$JWE{O}F97mo!M)XBHR&W9LBg*VOU|kkg{|`98%Z)7>tbTS2r@HwQ zgXIRXD4IEkdB+IN51O@<^eW}u?HW#lsi*F^j_i|PBIu-V38ZCS``+7n!ARch3a1CS zYVoWmBjI7f+m<#-UZo8S?3@kV(|B^W6+$SN!J>)T^{3e#M~*FnS-xzp7_dH`vd?go z+5K4DOi{oUOk`l}f5;Q`T=&|Vs)*>GvvlDG;+N+u8#Vqs4-B0)hx($PwujFpTtf6o zGI8b~`Nnxh`f1suHrb!6j_5+_=5H8h5vT-an_QCYStXds+Hv_ye1d@9{v!M!ihns4 zv*qdcJ0rdyDpt_DH6Y+s&`XIcfb6 zL&E0F?p&UqCj`nm@-v#Khz$ldTN*w(kts;LFHb=t>Y82TT4NVtD{_ZDzv!M; ztX6>|B`k)NL4!0+-1uIqJ!-jRjjhqrSFWuvUeac~iGE47RMKYughol&f@nVPU&mWlzzD}L-#=ew0ySz9nLk3`|;eJkZupoFZ`4l3_A)myJaXJjK?d*mtiyTK4qOZHF zoL>NJA!o2#_4d6(87%26G;6I^`_@=jE3F2GMS+Ng5fqvB1lQCV!YtEu?tYUHEM%*h z299e%5vF6QLwCk%Y?r%SI=8ivtXx`s>Tnfqv;7^Jnud3{$y{1NSG$-xH!}uzJX7w^ zKa}ClN-@-~Q5@3b-5h-p(!x@thJ0*A@8*{yc*5BY(S(^y|R;FvqjNk!k^x7U!bdY1&gOs_3$#lS9VMdOt$X^J}BW21>Gj@Yy}t`qq|DSeN@C zR*b=iX4}nO@$}=^KzDA9vo)6s!AiU&voA1nDsXP%ZOxmzD6LYNJFwjH__H%kZ+D9? zzuj{R#B5rMV+xmNuz7x&<<;n{*u>Z#YeWS_MCnDUtZynybgtB7+tOAilN@}5Z`5?B zjcHttGJh{duY8)KuW7BY+gMTAPykhO_b8+~$J8l}rcfB)s>$Rba?Fx23$hFB-J%5# z5JmC%Ix{?#Z;z`y)+x~dGA0}6TJc1$TlEor%Y8k)Gp$seMr0eyTJbyY-Lktg(wF7- zmX=PQ^lKh3)ttjhVy+Bba6-J~5nks4AR1%EFLy!ylp2+q- zPMt)}Sklx3+!l<4JMHieK}tKgY#d(7%EEwP(tm|IRN7pk0>3$R z#ejp6tl3r2{CI%CfH2Hn@@+WmjQs{D-1=4%nu@6znaF@%hMK8P&!D)T$x_CcA&C^8 zJ*f#xf~rKLA2h4kPx=C{#Dl%$HQ2ysn1>)2j#*usad9~IPlS8Oc{?&lxE?Z3bG7(U zYcW@RF(^fz_*Y7cPJ%*8bP) zh@X}OI`F2kv7sxqpLN^ z3-o6Zwq~I|*H0i=wbG`;W)4xbr)s4w9G@OiG(~jQ>=&oo|7-NnAJnM4v$~NLw2=^3 zP}13n5sJw*ni$96KlPts9t!#BeZO zMAk1hGJ<57vnNHj@bx=6uTIKlT;GYL0i#}(u=91S{`M^ym!zDKHnv0pBs}l>DUG)} zW8}_VmckxQp$JJyoIAdCxd_M`;bO_$xUqO$R?R)s58K7C1vaG&!D+>d-(tbU(Fo6w zG%sT}qb#n_yTpX9?0<{&uoGZP2rs}0+(Hl8o97n`C#_D3XINq5@=F(6op zCnQo6>=gSt13@4n^cV7EL;dLdPhg1xX)vHmj2HGJrJ5TAGLiCCg9Cjq^zTPv?Roq` zwdCl+`3VdltMvqWl?Q^*Rp_E9Kw7@donUDwTO%aD#}7)i#OP0fBj5E74@=_XVK^<` zchNJ4VRIZFou>FQ6x?39&OXmF*Icr$qp-ta2=-%GxuN~cLGVeH)Bt0WqBM9PJ-Pbx z2L^~LiDPfwVxr-C`%zl-hny>GRr&8z-g+rWjmEYjM7o4yO|8v)DakBa)EAc_r!M0D zov;z)B5sujJ^OVzyvjq0sKQcKHp8`I)^T_-cJ{2i3%X(CmP+PoZhH)LXL0d)0eWNm z<;Bs3U;aJNRlh|^Y}H>WSoVRR%Tgi=H9c-r4Xb*go!>F!nSy73Su*r5Y(qeOj@1vg z;GGWsRGi;TG@i3zr2fFO-xXPt9YEp-A(^5wHv}G90kkXZ4 z5Kk{w=a5!RH;y--N0dNRSWhI0ZJbFQN?dwnxJ#GeluSz_wnl)j>LAR`{h6;Y*qVz- zFwYl+TCOZFrzN*hR9#9wLTKYQc3R8Uiu-BfO$YaFI{*$y zjYdWD27!vlVvwIIyLRvYA?=-_EZeqi(af-I+qP}nnqk|@4BNJC+qN@o+sKHFh!<KjzOYqmABctG%__YwJ+^(;Kd@A)2kqq8T(nrKT|?RlzYswN{z0 z+jounN3ahc^^as<1Jp<5&NkFX!A=jt)a_}u--G*X-+eYJOmdw+-g5SA~v0dz#9+{ol9UR$pT^h8TfvrvrjttHm2(vBjabcfnXocX)xH7gSk7=iNCXIoo zZE%4XxqtobWS@7Z{?LAF#F(&5_w)fal^o&tfi{(Igqg}8IC7OgpfOCpu@dacU#NZa z_c(c~_UvRnqPI)kv%To;ukkm$5ar970_(g3KX8Oy`9u9g5Y zsE->~2KA9s^dn{}bCF)EbN<5R966U&{pczVgnU)uaG5Bh4i^x?I6(I}TeZUXLC#YR zGl=uxUAv)p^SnT8;sh9kMS0(NjhBD9Kqh{DS$&tMIC*T{=o1iu7tzVuxQc3oOeB>E z0H~{@Lke-Tw8+)Rm(^bx*vH@z`7++RSq!94lz@WicE!cAGo%h~H73j&hEm~<5?b{MjPJkwUebgco-ZamL20{ z(YyQmR2R4Ra5EbSS(R?3hfjM+20Fihq7QF1pgpAhGay@WjwX@>*WFR^RlN0YE#&Ik{e z@`+uVDY>hju_gJgw`RJ3j!=Vi^2ON33CycEq`0`~WpWx>ORPKdHvBw}BljA6Q**Iq zbhPp3Osy>p=*F|0c=E>PR0X-U92Eulke)MR;;Q{+Wq{t-k%K{tl_GY77(9mixi zo*hT^y2vv6fcMHSK9o2PaQlF)8#&ev1Qt~fe{l;Y*-tJ|Dj zOLs`xL#$ia_8@JpYn*H8LP^j7SJ=2|DSHI-8v9UKUw7gwUz=RfDSd*)nLjsb&%1TD zA1=#8bpzJ~%m})C^Hn36v?k)plsJ%z+OPdXMq8XH(jOFYjW3fTmaMtS9J4$zA+ zO=5-Ahj_tMWOrrYgBu zwZM{zFg3z!i(neTnC2bL3J=F5BI;!spBn{|R;^q}3W>Y67p`DtEd)y7ugRw-mUy>$ zQK06Ku&-AW8~!};dsHI?us`I=@nX-t{F*EY!DB*PH}`nJY1u8x+JPOB4(siIQ8whW zm3i4yNGN4w9YR{7>e@XB)MA!-UHci+vO$+lvpba|wVZo&9%Zh~<_nl_`A!A4ApcBB zQ{bvtCFRtTnvWA9tQh_(i{Q2p!}c?Gqv>`3``0H(20;X|5Ca_CJ!x`TI^06YqZkWA zW-SrODZtO=cE~6=mq`uptudjVj3d5ip~ZdQnySgA3NB~0xlrAa;{FZaT5BuH;YJ4+H>>+s?>6MNgEGrTW?e0H$y@^n| zoG7V`Y)fSa3kCb>x)$lnE@fhcbE?6t+p*mMaN5IA6GW;y5N8G=eAf>eh}@q&FiIIi z+Z2*d)T^JY@7V(jx5qj8KYMh@c+76aWmbRi`F%3Kb`kt`{V2yg{>=2H-=iG+0Xg&Y zQ!m-m7tDj+_Hg14EYO-&mnrh-}-!|%B-+QjP;b+*h~#OlhJ!YeNPxuz*Rzb;q% zu|HtSL45>T6VVo^)ixNH?2@2NP|&PCr&|7Y2&pDT_xPGPO-i_V_`VtAh&=QJ-M~#n z4OfteZ!vE(vKyNJCeV!GbEzqOcovLYP}`)1C6}lfJ;XyqAAy8R?0SzOTVRN~W?s%# znM|ud0c9ToSvWhGF(7=+It1rU733a7NJn;?B6|zvNR+V_l*o(zxX2xoA0FW0fr1_* zbeWeslh%s`l@JT5>u;!M{=xt4`x~FxcggT6QhuRg^daJhZ%`T!9;NFQsTtRdZu;(T3-Q zC>&9_DSSWKp+{@^4NLWC*^?08bi#eE7^7?awH>g(cfo?2Odys=cQ_EY#YtD;fm^p5 z?PUkYxBQZVvvq zVXSXchR)A--FTu1Alb>HGB+LTGDjgf45+*T@R*)uOM~ktFVZre+vA<;4U0!8Mnv`h zmZVxJVE~k?#f50jSEg-oCYXf=O1hsOKWlNI_v=d7Sd2x`s8u3)V$O&cA#+%J}Kpa1rtuJl)M)3AL z^DSb3AM1w?t1e^X%pv%{KQtTu-6hOY(^g*>L-;_$F&>OxIf{=j_Df{B zCCx27C9TpWA0ip7YWtdZF~bgVd*~H2wXCT*nU`la(97MvaNb!{&l)5>C`N~ zJdbf|{+cuYK_*VlOXFq0=W#BxS@7hkPM1`#68+KdFHgecsin($QmqZ^=e^pL zg$v5Jy)sws^gp+S8&_lJg1q!8%@p}+ulu*ccbp@2fp{uM8l4@2>c7E+skS@-(ITDs z9l^B^@ubAvzeGDCeDuIt<4%x>1_Xv1W%(x%#yL&;7+Mt`9g`&|nHiW4JoYxHG~16M zV*rH{zZZC~)hJ;WcyGq+kBzG)*R;5}t&H1^V@ctyaMv6T7aO==j&g?ho<}e$3;9h3qIj`Gxn5nVLc*m{2VZUop32 z^fm@098KZt4n)l1=X7%qGt*7hZ}6F*=U&9m=mT97dJGPZlc!@I7(jjyTgRap_UzGu zaYnG%pLznT`}Rj+L_D%GcGDGIlK<*8Mn>1lC)4{x7WNxkyiyKK20F#=v#;}0UU@#19W-#NvFvU|^7Hgcl4Ha$nTa{ruN;9-aUah3&8EC@SPXp@#I= zb(t^!AbK-9J2Pt&dVsC5qn(8@y_t;@{eRgC{qKXq!)GIY2z1eGMGz3hN1#A$wTvODv2oW2&wkLr6S?1jzZ48g zLQU^Zb$ZwZyLISSe=~K5MgVt*C7g|z6=D|)B^drj4|I8JOg)Q9?sD#fWj4-vPimqi zKmt^e2$hC>s3v{LBu|#$;Sk$NH#+80;H~-iT;*e;c?NRD86 zJ@)yDd!T|FTV`@uR@I@+5p$! zS7=WE@ir0d|2cRz0DC9;ze6VruqR>vJ3K{+y7GUCfwnEIMv{lnK=}pwg!0yDIjGPF z6U}9eVhds2Fz7?BYUymv(yzcilF1PMNc{Q!K{1e~gp5?s(I>7}cO2SimuT2%a-94??9{p=S4i^z9g&dTdE;d{EpZcdNO3Bn-^`D?Sxt&bX-nvX0K18>x@Y#g6P z@8{>|eTA%0AEv^Q}V+yYJ<4062F0loOTXLX)>5740V}ImQuB8 zc^q1TYzXaIlNHtQj_JF;xiE0j3Iwij#T?}2;=`a5W&(h%`;~9ZZ^ZfO-dXUVT-B@g zyXQP5dCVi7pH5THk$%8A_pJ$6|G zzr(dTy#;?SfVeH(oKm|-hl2n>H-@01j>=+*x@gfahg??gL|CDUp#NGu*>Xu>B9KN7=>R-pg38^=Y9HlLVu#pTLQJ{q{Y{C{2>1LFm0L;Y79%u zNj_t3dgXN8@VqrPx&8U)iTfvZtj&wgKz=YOtiI*f9PDMR?z!6h-MC;oR_~JCy5MV8 zp1D}NkZ1ttDT$W7WS=Ui7!st8w2-h=p8}H2D9KzjwIt5KAxXP^8E{r>^-i!qJgRr$ zPO*Oss&~GDNFOb(W+Y|mEMrUu)D?B=T;0#iXnKYcBTRVbKR@MND)*Yu{iW#| zpxYET`F1Nz2-yeGaasFA;CL-iLSPI1h-mOApAwelX#gTsr|Ae$qj{K%dR*&hR)|#t zDG!dMaLrWn#@O{86I%`)tzo5|)%mr3S3j>}`xncD-3>hWi2NNe!y|EJ6yWuwyrG2l zAblz{U3!Lb_5t>??%Nf@_(CF{YH^D7y|lRf3|q?4an=x;&bqFM36O?tZ7MdIU%uK@ z0}@nn2D0l|isu#?`kM%*0+Ts#{XC(P#AQE1pT zJ=;<1*ePerA69Tf55;SVu$B0XI9*24+^rL_sgC#lf-_Q-os=PO-8YzE8Lrd=0IXy} zO?fileHhverP}G)2KpA5lKp3Nn;tU5ZF|jgb0|wDofwaxKg9>2>nx5>=?v_$;wnkZ zI_7G!-JS@2=5KFLjTklP)?HV_rZ85$KfiY(KB-nKwMqTLiLBFd|4X zS3v7(MsbU&fo-Kf^HvJ?6m6ZQK@zf6l?YEZxlhfyo-y0Ew|HP|sx$9IN=0h;)Y9`d zlNS2nc~ZRHeq~!(&23YZ*_%xJu!-;S)Gz9^^-6a`@X|x&6f)qr9U{?3R6YRH$=0DD zAReElUISfnb8UMql}SGb>ABp@uL$02ZV>;8^wlMdAZE$N+{(8z#eVNN@ea%0b$&^8 z54%EFz!ww0%?f1^WDhQ2DQ51vK$W{7;!MZ*K;<1g#g@?7?E4MkE4XZaZiS3k)mY7lPbW<(!3*{}>oA1g@j^o1Zbi%sLRD&fBgV3^}=MIBTvY~1?x7NseVmJ=9 zkaY?b=E0_mIzLnjBVZ#E3p)&h#>#Y1P2r;~t5g|t#C@I_Sc-W?U|C|C|CWJQTy1aR zf5Fcu)IVi^zW)J&{#OE%xBbGQFGofrtABT2jEbs*`bzjBW~@gtjR-x0g3z27AQLD= zA{Q4k2OLQBZiMK6IH37^W02_4)QD^uY2Hjt@n_a?d$EYYh8c`QAu2@ESHr2Tl9F{& zJL^QJRS(@sE$P`((o6DXqt@u;18=u5R!Out$Z-LlEZ~ad?W1%SyIQB1fR74?=k7NI zzM5?2`GM-6GyPtBi<=p<^ z{Q+fw_sjtlO(h;>6ur+i0t?sYkYJR(-yA|T?TIl=2~W(izY8JfMX_554o@zo*vm;y z=A+XGN>2B?H8?^}hMRG}z<+}8D)(ZaZkkyKmMUtNgoueOJSo`M>D2ax9dJAVSX# zFbFZ4?EVmjBK;r&@@&R)Fk4gICTZi3NfE<`9rzn@%o2%Cgr+`OS68>Asm|4@_2-yn z_HQGl6)Q@0RfgiCqN1!(B=vD~ObW4MhH%hW;iDEBeeJ=pl@=?ag2J#KLirB%;;rV+ zZ}aRpl(;i&G62{jE6iwojBZYd$mx}BX7EStzUIre_mFDrz~d$3?I;g?elIwl>X zF(w_e0s*d%jl_-&_L{w3NEkdOpUF$)t~4%MjpmEc2(1Jz8x)uAetL8bL-D|nDsIDz z$Ot>evO~&p_kcK8_efwg{!Lr7*ToLsKuqiOOYy%+!aX0yC zXQ*r|beLuKdf;Z|SUs`a7`8jxv09yFDk3j}sUx#{QBIPGd8Q1l`cb2;iyja8=1oo>~ATZT#CRC0L~DcXkc0~H>n6dmRd)Q77H zsH7uBmIr0EJCxV+Q#d9tckbd<2i8%LooZ^$=P#Jmd0@BCUGlqXGbpnfSIbqlq3_%6kGcSFCRDG zsP?XU$Iv1+-GsDZRaZ|FJL)bF>+GxPO|}x*0&}ipM!7b(O7%f3)~-&P^aKE&w%mGj z)il%~*rq?qY(q40S6}|=+dMi)>l3^0I~D{9S|BhdC$d#~RG#2+>0;Nz}sPsW@iM5%uDP5(9^2!s4_ZR2gt! zr}9hl@fR@=dex;t%Tar8N{?P@K|!~5Ib5+AtfI0fJJ|%OirNDEre{>$L*NLhg(WtP z)BLv{=EzPf&n)hS!%?wugJ7?qPr;EJJn7~eEb&(eV^nM<^Qsr}OBWz+Mk z@tFlZ9*uId2U*AFKhPA6HX;KT^{~>~`F~@tRh*Q=UVj9b-m+wV2Dzi!i7Q?ivan@h&bt@9w_ z4PnnQB1XFV_}+g&YngYq~&HKt{GB2~8F z8jKE2lj`Z+Qm#`NQJ%`0!p&zEQvwT|KH8#Eievxs{)uR3%~f+?*i%GDzjF-^Zv;(b z;XIEv_EM3bu2yi!a-7#pcu_bw+hwZ!IVXLfi+Ju!tQN1aPW-D&tP;=ACPD)qt8RX9 z4YLl9o>){CG=Ov!_cnXc1DCKS=y^Nz>3$dPtENu#3z6>*CdsmaDu0Wq+eP4cW!ohQUX|7@UOaR*DkYJmj!tM3@vJZ zDi4a|g6%)I2Pfov4$>LgMmye&?9E9UA17A{*aoLEoScv#Td=q4saCNb+t)_93IpNV z&1(`697zNweKQCO<2bcK?312){zX1p>da=xze2+MkK|M6KMvZLGdjS=#1SBD4zM*d z`Tz2AMmT=~6p>?U|6E43YyspdHZ-+0MGRyZwI}_RFB@=3X`al#+=<0z$A$J$62>Mc zKA%S(!3@IufJX$k{iHRf0wmCh=D5a+3{cg%qC}N26zx}2qfO|%>5PZKZRWX_EW0?6 zg1L)~509-QSpp?Xw_<;oCXEuXHd(v&Uo1afR%|;-uKXF2?difa^9IDR7eUCUMOyYt z{HSHi3!u}A6TLBLg6taRZN%v%3W5OWl#4zs206Bq6ml`Jl>kdULeSNZa2q%B>l%X zd>nE8!ys@w9WgT;??-XYE6MrtfgN+ES6b*Tz${1NdMHZ{fNVx+R zUC~Opg9gVe(m07AtTcggbsw@(+osG`?SVQ$`TQ~s2_`vVM#oqvSqX`i*>DlBnWv#S zam@T%VP0F&hC)HB3CK+fb(sp&b_wG!Dc|B5=BvxCM$yhJw(2s`Y_aG+&a7$_JcHCq zy1)jtL9M`e?$Bu7v&6#WvQ6X3o2Cr|-q?iws{NZrxFUk^mv$rV$ldfToTsqpSX34^ z20mti+CeE9RG|-(rS>!ba!y6+hSR%CkR-Uj)qBS5boD zqk$|~WULa6`d4C_6J^Q1YS36#M*WmS%Z^eC4ZyJRw)D3_^!fur#?jJgE@qg%?9>}Q zqxGu^*3s4jK4Tx|oLSwpCc~i36=t(C-)5d7k!NiuXIyDtv6c`o(*QnnBM#K<#!o-M zenI%5;!+>FPyqG9$!y)+CK*}aaE&GmzptO`!{^_Arsi%~dh$SAk^R|kdp>&cOW2~%+hnO!4&}klN@%{_7m5?b?WW*yewJCQI^W z==D8mB@1O0a2|w)=SoBwH(p&sSDeT-K1=x|mb!qR_KA3Twl^@(-5#vocl4)f8Obb{ zip?S`=@y$tcut?Kw!{_%U9gYV5QwAISHy-0pH&NVx(7AKwooG&D;9c4JYt>Fqaxvx zYSn>XLhrGs%+29w_S5yXd}R<=zicEfVjswk?cXqrnL}}&6>Klf!}Os@1I;n!kn8XN zQtj53{sHj(CA9uW+2a3HO!#|W{ta0Qc1~Z%XFFRGAr}j4HBIUoWKF`S<5-?6c zPlB}R^IS3;*UJeAQQZmRNecyP-(LlfLZ6Ulmo&h)U=m@+gy^ zGIeKGnVEmR{Mmcf|Ms@hP-kMa9;_YGi!%Tm90DWlqLFH*VW45$x}DqG1!ii$+^1a0 zz~eC6-yXomhU?yW&ftvc`m#xPP4Wv=ul4eyF3jYsE^bj453uadgV~cAK1=L{aUt=d z`c?L7T+aY6>qx<{-y8$7)%x+!qJ7;RG^bE)xD^qjDB(*w1UK@@lW zrlWo7k{bA1`+G+tV(EhfIf3{0W1skwM)We8g|we;PF_qn=1IYl1PZvdtV!%PRzNkj zZ>;7R@{4Yy#7Q7``#U1|$BXmoS|~`15xGvZ>K3^c%3}kery-1tvQ47Uf+yh2%RY(fET zOhQhEwE-hVeP3dv%%$_2uACwP!$pb^l+F{zpkWoXOIH&`l086F&&P zh6E)kDir%qLb1&3$klUntJ-kLO{Y{|L#&9qn9fjpbcU z9IXK!^8ac!{nwO>BK5bw>fj$}{*VC0$e7TdV!&)PmWx^y{#xGy6j{QdP^~V>H2ddk zGp^_;)FcH(r4qXV>LczKD9h$ekk&Gxiv&+1dsudZ%mbIh9_`Sqje6Dv?|`(-fJ@Et3t+9oe`BCy(;J-OYTFC_y6TrIOhUW!U_49sii>2i8e_qtM)w_AsIAgY2qzS5 zXwyA=q5^={i0hOByezjkM0o;B!8K;swHTrM5I( zfr^SwQ==#gWYN_wpu}8N8cCB3smEAm`5M+XUR;(6#KyPry(SK}|dS=pr{xCv87S{2F=+GoxEvG&jw`XO%;ebN$?2)%a!W$LYLST4#UOFD zTU;++_eDz55x~rufGyXsvMtnO=0mpF{AqH9u8brU-$%79HP~AdCMdCF*T^%1oKj0A z%PR_roD`AyImKen04q}nW-9}=>b>LOxNSI>eI(Mo;ox{%K>hFsEDJ2`iTaI=7Vzrz zK+RL-zd#p@E@|SScw3Y6HFdxn?LHz6FB{oUN1Y3L44m6Ll&6A~`8Mczb{n%6V`9cJ zmCEy~wXcAV;#j)|p;S8jp`ZdB%Kepr$`|`@ESE0SWm(gTd^bO5NImgq>|x@owfBI4 zL@Tlu8Xx*8JkKgS>hGdE1g+$;%8PJ*L0|JztuD9*I}_)KyXk7dw}UR<+a%K+J&poG zyQP(T{MWweTV3*P%3UVYmAXo+t99@mH#+M!ty4$)3|pMyS+^YHdQDo4TsFt?F~KPo zqC5`o=5=r~5N(Qx+#Mh$THa}pfl}RR81EaF5yk|~+f4GdzoMyaiEzXe&8PEV6%yQ@ z7a6GHMJc^!@}w8$vd0`M&8CbXStznrfWFh9R|48{B^>z!K0&&dxH&7Ek6{C^5`cX= zW^sQ5M{^JdlotNTJwm6!h+V_7+eJ)y;B)0J{MJOnA0nBwtnlK6=P;sw{bE&wt-%#` zv|TIK>mq)H1ctK)G+ytoRkJt@y@RADkRz-iWGg3@*q`afTyk08J**hABnv%VIfYVn zYUj?YzFP+4Zb!KIlwzg2*&lwC4xOUYk#1d9#YwOsGJ!iJD1M7T=~;S7sa$80en}}} zo(84R*OQm|P1e}q=Wm{SuxyR4#eT1=qdVAW&c!JfcD=%-MCpKx2^)~;EfFh&X_B>< zH%WHqY1#-?!RUPpm0YM@Zy7ySek!H)lh!cTEXETudz zMl2|RQei_s#;Utiw7O6I=uqq|Tv4u7`y%^bf(mZbkvY9NyQ^dD2# zA5O>98*LfC-)HcDfH4HouS@pDJhNh8HM4r>0>lSGuy9~OVXMD<^6;%*NPd1R#ze!c zX4HYt1y1odAF)Q@(=m0A+l3n782}QF+&v^<(Se!Qn_(2eEXL3?OodeHgc#645Y#bo zCxyV>CE%*K;TeF2alpOa0TT`fD35fEp0$Q7WB$U}GG3Vl5RKh5NAomzRG!z`tA|X* zu&KFR05nJVlAXO(f-+!4Hb$_y;A->tl{?G#nT?%!cA9dC^Y)=PP|e|G$v{1Y6UuDb z$P0=a9p_k=87nt*f;JFt0^={3WxnPsuT=v~lZ3k$M7E_&F1%UH);X0$i;`TdiLs{+ zq31d`2x}Y0BZp1&I30)RFscFCjkP`XH(%E}t89`S!cw6~zd_I3IGDb@*pEemQ6EO4wm9xkCkL8p{h`VEqiryoKQh_ z5SLtbElm&RNkXw9)M33eE`1cXbp=TgdTe97tC5rNG{53 zrGy4mMS#fppj%ktZ@PDw08x2Ikih0jLb}>ZIZaUn59E;kC^t7mb@b8H31pUP%+e~cBHWo zJM8Wq+|MGTIIJ6KyM)xSeLMiEZfrluX%{Z(f(FvX)GI`a&f@2@;icXbpGVk8^&$cD z_EzWTl~oBiS)Dcc)yf_fs$mBbBr_gJ0Kg=3Va7M5}k~DeL;9KIu7KdtKenN$!cb2E^@;T|7S@>2dR=5$OYOkMHtuDYq(v;%aV~#E4OmbZmc&dHRMWFbk59FSQDB^(%rd^4{IW_1#MY!$Men z;ZM1;%e~vvm9U#FBU9$v_MsKjy%SBpwLw*Ufc-_0Ib{56(ZA?%)IaL8SpOr6EDLb7 zGI9JjZk(lNrM#|&z>97Ty}ow{GD+-1f?x?!md+xXASBthGf0a91m?fch}xVViZMoP zF`u(YpC+ddXTh9MlXe<&=B%EaX^JqEn#NmE;pBSV<>jLJ`97mx^Ib=j*EOUwP!|%O z^VvGvpt-77bxOMlCO(J!x8IYDvQ@fCsdl!} zYmEguH(xTS?EzGft7EmrwDP8AjaRWvTjD-}y7dpz5p={`vi$rYp|(lsuB-^d^$M4# ztQFX)vXiDZBD1XVrnsL$!(siO+*NYruccXO{`s!)pL*QCw_&-;JgM9E%~ro;Fm|>X(q(FIb)2hrCf8rkQFpUAo2JWi zOr~}}uk@PWZvT}@j_l$#x}yq;%hVS7If zp~H2VuuKJnF5iU?gj`}tW&yc8tq1u27)e_2qcjUu)8MO3)=_h8qt$Y#SZ%yC2P3>* za|=EwmLZGT-g1KO^wtAh-XRiTIMfU>|Ii5NAd{a(vC%Z`s`gU(ft4r|!#q4$yyBd) zEtkNuiMzo1e(cv0(%tUt|b{k$<@2oaZf8IQN3;NDz98oMW z(mYo`4jV(k5Y`w&sVDz;%g=McNI_X1(GP&}B*zd%18iXuHSFj(Mc0L@*uEV>SkCMx z)NR+?i*zP;|8KC@L~H+o2BZ-9M;3-s7*a}UC#CP$>;aMu59_%Z-mmN=Zb@m-^l`AF zF$~C|Us_mpNHiCIc(o6o2z;2A);n+|!gpX(U{9u8@z5)1w8a)-rgz-L4E1kD0$#Mh`COB&9ogU8An2)CBmcp`B7RyTCLf2B=3;l zM*a@fjuf@|plQjuP^|gxr?I|~@L?1j`X9R63(7O+wvo1abs*W&ZQgzq5B zL??a6-)+R^)5tah=(W^I&QpTAJJn;Kq8a{h$M2@J2&EF?7ZB47#ee>5vLsdg;{LZU zh++8>kN=+=n*SNZ{9RA|H*%AtdaaBtis6gauY1)=q>!uNFEI2ZVLhW(H7`UZTbeEA z51X%Hq3dYn>E32U2OjxB>FY2I&s3m)7KzNnw08You;@mw?jke4XZ*DKeC6@%@#Dhe zc?`ej18#@P-#0yWxHy~^HK(k#WX~_0Ud0}jo2r~j2eku>MJMGZIoh|gSXfZ5-vn}* zq?2yvx-M*1*q2F8J42_6iIH_5-~sU-qd2BCu{SJcH$5J~_)j$@8MM z!Mrz&PuS6|gB6|f8Ykde4;^|;Rr6;bt!x|<2u;@J$%U0e7A}33okS$M)kC}0%fVbK z&_Gz_H8$M(dtEBEx&TYR@dS4uW~gpUQ6geSpg$04t}ntZMFI`ihVo%}Y?HIYL13-2 zLR5D*6U#Qvr2gdWq_k5zj~(f-%X{UmB-D8^smzP07q4W5t5>C#)KsY-Oqd?S@mujv z(S2-sip`J5pLZx`?^@?|HrKT`-{!VzQEoIXvtQg{`S62|$Lz`w-e4m>7sy^+E;MLC zfX4X8`YAGFHci!jIR=2nuw&)-)o!-oW@TZ7n@WcW1ok zrFw8Y@${tG>>rJ}Rf-p-A+Je=iHf)z9+Qlj`-5m|Xl2dl5;!-g5}iAAv|7ObBiyBD zU=nh%3K>ItBo+76YEP&*tc^@>8rSI0Eo5WWY1m?*V`Lfj>DWU7i5b_@r>as8jl~(e zxeb?W%IF)U4=m-YqGjTHn>SsO4beisu`R(H^mHRbobo6};;=LH@qRK)RqP+`u~$T- zlshTc@~{*<(#`-waQQ=-mi=b{F#wF>NjzN4MwNmbHfQi+mR)^ znExX-q4G6k_un>p)PHSsHvTJ#PAUbV3?Lv>X$h?vwJ0bOR3*!TM1wGj{5`T3vXB(+ zP8^2U8Rud8v^o0A$OHzas_lPm^D?fZ`J(~8>yGEnw~w{1P5zHRmy|y<><35~{AW}y zDqfU^)TyYx_BRZw&`=8%4QdpIp}TN@2a?(z#J(C1RJHUhY3E;VSDKL5LwR2&BiYJG z$s`-GH>R05Ite#wI1U?$H@-OZyN?`=bcLkGBs5kOg!Fj?0O zhB&P?o&$27mR8*bH=gB2D{8*B2?R;hqA8XzzJf=i1*Smh=H;-h?Mg1#t|Jas>5~mM zoe`D?t%5T47eqfJ2xmI1)qd|x56kTeI&|pJ*vy?$D!9U+Lq%^sv|e61o~IsJ_MvV# z>41rSvE^pk4gaAG**Rkf4vhCck0B&zUiylGCvy2FUCJzolwX)m8}*sWfJxRV{GrU+ zC>&wyk;>H#Zdb~Y*bSy(%;8smW)dJ|!&DF3{6#unXOX;7hae)As{|#JRxW}c3r~So zPSVFEFwpdDTDjK8`o^yP_BO4)bA6c8H#v7=6-vl%x+S-j%IST)-Ipw~GtSmjDV_CP ztod}4TAKx=pWD{2ZD5%)TC2I#{b(gt)n66oC8u^Um^tNzo3qrAP6G=m;xL;;Nxobw zei5ZSK{uLR@&}Vh5@JkQH-={oK3J9_t449RQSZP5`ZVUqKUELe|`E+M_CLXpFg9AKo|(y_mx!h|*QKQuWjl&I@p_ROSI^Ynd6+Xnax_`!-{_lQ7b7*cxX~lQKC=BP9pFh zvRgSv?NvVGL@A?Sic88jF}{_KEZeull#J_Lk|Fh%@RCVMUQjT4ilR!<1<&}nKL5*1 z@?E0PHt!1o+Wrv%{JYoup zl<*eR{%EsNV6MX4Wx~bGD{@iXpI}HX6T_fnEH)&!;4fA>?Ml~KawO@g3K zUGJ~^_vqge+_8p`zcw}}q{r8(qEf=0WY^)~nB6^RG-JE}xfwwip#a8+F_3Z4KIu!d zlpgs_%=iv&6ao+{2#}aK=%OPAQVkAt2!_N|)Ct>%vt`&YZp9tZog8wAAsk>Bsr@M# ze9D2wh&qBaz_bo^p=+XHw9ZuwQk>|VccRi*zn@4eyl|Y6e6|nzMxhLH*mC>zX-DdOQr-l&gw2vnoSvtW*hphMQtRP?$xa zre1U9m;Pyb(YlF^kJUOwdp0qX)mkw(JptNj25RgdSBZ%^KF7o`ku_28q2?&d>3J*G z0x`0zUkyWbBrBNl+rRo2uU29UXcBAFKlQ6wYWHXT zEuF&w?Vz)HATQ7INS4!#ZXmX|uQC zm*bSJKnACr!+i4gFS9p|pQ@NiU)Czj|JbAC{*Myi|9koWTOv$SwfPzegyKs_(qXKN zVxA`piAL2dZP=0Dxb#giz1W5YDKK=X+&w{eV9ylYjh*4ujB6h}?N)i+K}c*kW#)t8 zaYOco){iWqZKkVjhVwYP<>1f9hmjG z@jw(|a2p0nAt((M#-KkCB<1(^pB~>^KsL~Bl7TSOg@zM=^pJ1bf3l-6*~|9Ig3|BE zez&7ma8T{DhpvWhB{Yy6!rDT#R~Jwm;%Zj$4$l1f42q&+UkRb1s)#0nd0kc-stoFZ z+VRD+sc9-|wQs7w5m~zD8p6A&ct?d$@qFiFf(cmD$=>Z`Q(rlJ(`ji_USbEDaV(D@ zY#T$EyAvW4)DD@=YB#|y7O#gE;ippBNY``OEVnt^VB}e5da#^Yw(^eYWtGvUzsVKw zwB2O%R?2`_`e4+ixlT{|85*M1ZDtkGB^~~gtg$~V_WayxqayVwAA)f?>4d-3YV*=L z>`sV%jA65c;oxJaT1Eo3T`9}0(>kL;bLPPBJkChh<4*2+Kxd-mO{-^>i+226%S=3b z>4z5jZ(CJ@h57hHjqj|VZPpG=iQ2R_+fz2i%lB6Q4`=WE9%;U>jZQ}$+qP}nHaoU$ zbVn82wo|d4RM;^(b~<*49ln`0Yrof7`e%moFXz+bEqjhNX`3 z^l*QK!TP0C!??{Q@*x#1Jr`u3L&Q8GXlRv+pW~goEXbi+yJFHdYiNSwa9?)isVYgk zYqoi_zA6)-5&YS2@($SNLhwDAdI(YGt(WI0?`JX*0w~^;u-c389UyzsW>9D9l80{6 zqle^yDDO-NyPk?_VdYg}6h0TZCuTQiP?*3g+$kOfz}kV@h@P9WildBUzEO|Xf08Y# zP!J+RV?Ez0%jE9mPd7e>mXlILh^FiTaq8!GQpCt9M86|f?uwKng@4M;cTZV7PmXVk z=Mj%ooW3$aGwmfwjm6)c`^s1t79QGw7WP#Tamy=ud?da#mZi%*gw7NkVS*CZt0YiM zO{(qjlqDHh;YCg;Frcm*DW|mhHh=Y^?@sQsKPZj&)^(czS*Uh7a*t3$x_G5V)#KL*Ox$eE`-2pBL&tF|^UVNR=_Xc!T~xBcwHlH|mNe2`QpB zW*x*Y<(CiB9+nT6(uTjrmLplb{>H4l#!YJXqmX)a*|EJvK3h(eAti>*(j=qFbw#rb zo^i2)pS{8X8PjI=jR-Jqe!IA=Z5cCt*|nUe8z(v$JEeNp?X8P#c{40@$<;EGp;4i3 z`1>O5^?PG;!P0Q%E&|E2Ij*tEbc<>lUKak*ZdMeGu^Dj6LoMZymrC9D=C)8s4np-M z{cHD6stu3OO+MRW#!zM6fXf|l>b}n_ z6`+>c<C#L#fErNbW!aD zg*;IB5%1u^Y;|n+BVw6_Y)}ssIdES=i(!Er01g0ucmeo0Hh30%H?aYbgKkAiK}LQ~1TGW!u=Vmj4=&mpWaH(b ztB`2R1T*gMSJBaj*Q_8q*3CW^06Yi+L=Hj+IpdUFCr39*vt-9R$L37;Cpzb@c=I#t zkt7<8wGaV0vQD|bk=h!=BhBI7y=k)t@4wx5*Y}q-1N!^ zan6}{3lq-g*)wy$&Gcjh+rHg-W_7vwsdCJJck^4HgU`7suP@tzB_iUfq@+hxd^8=Z zY`hu}FNy-nvh(7{NVfmM@wT>fp)nDXx!FIotfj8~biafZr&UbYW0K3#qi{o=Z13t^ z@(9eLn%M4w)lblnz~~GaqTn;gFIT6hyT9nE@(hs2k*QKZQPZFgro>#b&gz#48F%b` zR0QZmKBxKI-u&=M`g&pMUG@=nJlMOOQaBTwmi=MeP_E2~A-`)4@?*Or`EIilrqyvyo`pQIna_lsHz76L=o=vg|;Z z+?NVD-NkXZyw3D<3aik);&4H+3V6U0nPjIvXKgC0z-iHhW>Zv2wFdF!RaaK48YYRB z96b;7U}+~Ghf0g> z!KH_~j zsz5{m7Mt{E$4mGFzMRT|E&L7e3-lnitsQeZJ<)$fzg1nsH=X1eItFxV9@xX!J}?i zlKyqoS%gVFKgNzrhe#(#o+^uyPr)PbjCF;h0jFUL9N$F47t_+dh4)M95KW;_kk9zn zV5%>3kQE=P2dnq4 zG%K`!@$BVfxN7G9emxvv`eV9}!Ht2xWn0@zRRl&4_5{{}wyngdQ`V^n79k53SL0~8 zsXnSSh>!DPw7viI9S5 z9+m5xWN~gZ6j_S*4!-YL^k*4V@x%dsPD>5+xlmc4fDHB;(Ki9vGZ}T{ zK+;}ZfSI?JFd6Ba+_kmo-!8aH^*QzSzhqP4$h1V>a>ASpVrV&fKFO&wMJ1Lk)5vBv z<={G>!$m(h)ZP%>cN}f!DHPSQXe6}!qA3!av`tVA(0qnD2cb6CGDmj)WgC9KWiY$& zF%EG4?KtqyP?P@{2mbxpXxO^We*m*faoB5INLH%S`7@%hvf1igS)BZ`e*eF=N3nUmm|CkSL!V4Q~p+2TuWj z0muNRvE>2t@Rrz9tl6gA(;q-?;UGODiywtEo)(S;`NekWpuQhNefTs*&rlkwoS*ME z>xj#%&_UKPI(Q_UfWG9xxHkH0wk5ST()#bpL+%l{4$@YLL_4V=p>$x@rq%en*?l1_ zniU-i^Dg>T1q%BM{7W?%n)6&)HZgs`V}Oo|$WVPLT&(5vV|B= zs<+V9Ssf;hHmtJ*v1u~TDDM6hzlC~>Y-dkWReN|mcd`DN2p{KAm)p37uBcEYHGXzb5^>! z-zz1gqlI9YZ**)VN%z(Y^OFbKQ1n@_%Dzf*vB52`3I_eS>+s2=Q&LDGD%a(OW8b<= z7H~hC^x1=Lx7<8ksaEDL2mRMtqs>mr+dMvWj`8}8-I8y$ zX~|GONkD2>Z;|1W;`nxGpCJtF=1Db4OlA?Iw9y7-=e@&qN-!l=t3AUa(AIn)Zzbh* zQ*!R^J?D#tR%9;4;Xp7xRc*K|R1s+fuH0s^Ez0t2cZ_OOtrZft66&k_IlutoE8FTH zCES`{xiI~aOrU(Y3q+pK-4{h;M&3%weI>hrU%9n-9Py5l*On-) zYiCf*<_EB#YW&V!CTI@Z^&R^9XCn~DasR{X<5@TV?dm7;k0$;9_v-hbbH3)57M=w9 z8&o2_Oe<_MQ3-NjBx=KAb2BMwxF{@VDk?onXeBrKnw#^=&<3RJ>$%XJ>(c+#*JPhd${&P{*3&yX0j{1se4ah+Y_1mXFQ-depS}z$oiF5rV?eIK_NW`tENfh) zfN2Gm^=VxJgDz36M%2Mry2h?BLF{4xV*ttc6(i^i7;F;+MfczpZ}8L=6i5Rw2C*y6 z)-`;E2%-o1!jNBag8aZNnG?S0hK<8(VY|=@j<^HN0n_Tqb>#!%fjg!EcK`wgUt9lG z1#FfMUS7G=vg=hsq(F7~@<>o*Ft1;q@Ss3-1@|Ba#zTGOuI;+&HNr329x0U}ByH7e zvP~>2B?Wq@bgUye1$vpzGhPcFPksR*$5nICB=jwEJ;OuEhb*?R_Nm5Ni?zSJ`427# z(hB}E?7~tSw}9!UlZeuYo^Ev)kK4#Sb$YR{tor67^PWE$1JyX`yRCF3jklZ_ytS9_ z6h`h@>Ek}Xr*+je+b8>xG8X?b?%=}IF)%!_c97_x0DZ4pz$+NE9*POGgi~1~!pu0- zx9X2ybmKFU^qer71DV?qi9V~cjM^)tX$PA=^; znCUbUE?Gg*G~60in@?sYjF}?a*_MW9>M|RqzU86JrymWs`;mJY_%bEix?2USTJT@V zl&}s6{kJICDyDB2<)`6K)_%XUiE4EW6_oa~D}~wPPqf$YlP`Ime8Pqlk^@s|_+(co z4=n!N6tjwr(=8ujsH}w59JFfngl*b;MJAVb`;-016!tRz-VzAFvRrF4;hhu25n#iZ zujJvz)7YMDBXqSBkyHY(&a@Zgx{n_Bs?I$!Sa7_S5KvZe_ zUVbPR8EL(ysFw)BmA~%_CixDn{B*>tq!So)sJ;u(^i7D<*_ctyR{1YuPN_5xIj4)lAL9^n*EnXcPyy z6I2?{rV8?A&;cncS5NU|9$Jv8a7_-}49*2>biK6oU+#b?b2UBc8H*7lgCi2df!f&t zvL@t=v7MiM4~hP)ExKpFKA(To7Vy8VEzJL@wkSK=dD~e#{Cm&@YS{i6=_Sw#X*(_< zB8;*X-qCavi6kDC|EobaC9H6pOlM7@-J&yU1325eOLPUtl4yml;P)Y1!?9dtAa<*O z61rV)Z*)DFSntev{eAkOT=Ic;QiIoDUDU-4SFFmm_ZkADIEC&Z|CE4o1dptz!ptA&bskCU z4t=|Xm`l5w`#lQ}7I#_p5UfBxA$H!+fSq1TI5nmryzf5y7=bTU4Y{0(Eu|#5(0!mF z+Tr)Lf6Cp#_(gki4u@f)@21n?_(MaHi6-lCGM~fTriNRr%Kj9!mO%57$o$h%cqJ|J zF=X0KP4cYpK_&7t;ni6E${FERKQ8Ea0F?$kKQ8lvq3VVi@QS&u= zW8+Ret~JcAomVgel`gu-w8ux7*Z70_xTg)GlH5iai7be6qA5Ph1A&hR%fogvLG<9CA@(LoQ+^8KGFMwyYFAyb2poWJx-aTjcx zS_lPJZmTT{g3w?EEg!+=VS7RfwrNYz{f4dx6lorFV{W)4}2 z#5fug+6oR_y21Lt&nA~xuxGWozwb!m>v1)*uQ#yspB_n)mmFprc*d|`Q9+!D$r#kd zWJdn}Z0TO~Q$Y51b|IOAU`$tYafY-qqn<$kZA|fybp8ZBFl9D+G~PUWTGzs7c$Oha z%-~Y7YlmCFTQX}GyF+wrKak;)DsgOZ5F)HYFj-f3=DP$y-B*^)hvzJ?a_}9-P0w9P zgVYgdk@0i&hfyL&Mtvr{hJ~00Wq(qoT21d;rTTt4ueDWbV*p=GM+D)eJE#lyDAf|Cvm4o7PzEPIdfmY;;r-T%Hj})8By&!~2 zq=*etrm$Sxq?%Akk>R~@OAA8W&FTFFvXFH(UF7K9j;$gVKy(OA3>;jtwN zt6G`F+9Q)Xgp0v$~&3;Q>EXc@s1$#pgu&tb` zR^UUg?8}UVh5*wjLbd9(Zc27`w*Y98j3kk(f$7-})@H?8WL2W5976Is+AqiiI<%*( z;OE4yF+}#&q?BqJUCNfdB&8qFEH;JMD=_VAkCn&rn(e!_6x%uTD8f88WbP5N29{DZ zyU|(0B9Oa*!u6o|?$kU-3(wQ+k2$q1n_0b0x5IOt71OGz5-lY8q~KHxkH8vo@n)zm zvK5$;EQCu6yW(0k>S6&9kIkMfGFs* zhe2_rS5nP5CgRokndS34aSEk{rRDPnadV|6mM?voEwSCmtqlN)ZyZX+?RPn~e#=(C9<#!D`y ztz2>7B{C{BanIwGOmQ_0fkJVUH60|hhxIkpoCiCeKNepM!5z-D>b+6s9!WE;q8?fn zFzU*H-=1NAx_-(EFbv_}B&JJhaGtoSt*Hh3Zpwbo!oROL1t+BIt zrd6@D=Zslcj4d5FHRd%jF0Mu`pI|n($AOKfYB?0taWgwEm4bN~Fx{j%w*-|HpHWK~ zgdL8{gG;<-FDd02Go25|rRm=f{bhjArJtxv{Behi{aZfjKPRdE8+rTpT_yQaXR9ci(EC?{z&DSxmIoI5V8T20c{>>4SECOm){2KT* z`Px_CS+WIwi{Ep}SMcFW?Zf%Bp<&M_?Y_z&NXQ5Db*(F55rcjge3t0)a1(6_B!K#@ zNgWZ&msD0-bNTOW$uKlp#a~ibY4$S#-o+&oHf^ENfVEMZHgGYJKF>AuJTB}TFZ9zz=fqQ}JxGzgm6grty<} zxAnza;~Thz%V>LXOH}3`^lGXzjaTUAiZhf2y9>4_MdaTQ`^eDL9lHf=QbQCu zpp`h~Sm%Tt0@R_}BkvSG(U)hEm2ccl`Q{B)tHHWh@vsaKcgXm5K`;O$2KwTK_(CxF z3ZBBkg;;5uC+sv**2{K?LtSrLR1z7E4MC={s~%HA4gb!rYg2f)u_7U<=Pq=yBGXMV z-eJlVq?@^RqVR4B`qg-^3y6B7ls9Nxpp(fi_K^{*S@puP^z--cxN}`y*;pkD37s6GL;T6~j-42G?CHO9+Rq^UJ{5QFLq}TaVuc(Y}`=UUh2e?6p{)@5Pw+l&ec-cGkO4mk;rry>y?Z}O){9OjYNrS%uB1%(T;ww{x;w1DOdxT z9=ire@GO@1Eh0Qr*4hcw^5w@nkU^3KAC0I#3WDziv<(cO-Wb@L#0w?BTh~x7xf(IgNH1Bw>(O z;OWtEhSxKE0rZJ-)NM}CMU7j`5>489z}#}c6+^5w4YxGD*%f)xKl}Ud6{BS(2FS(g z7QuBj#nDLp-fPM$#{MJ{_hVa&U7nbujDF-wi*AAy;tBN53`-3QFK*7^7x6bk4hmshN2pLv> z0mwDJTCjm>n|?=P^}KWzzo^;r2y#wrCGE&7?9r7x4@?6yriYkS&NPLr6-hwMg+K_F zUsCIhW7WaTkofMNCiD}{=n1V?3zRqm@%>`>2AI-G)3+2vZFUWsR2|S@bOZM7xnB)vTvw5wSntHZ3+g8i{ZSkQ`GN~L!U z47qo84A}(M1vuFMP>Aqsy7?sP7h;4>>J;|k$?l+xG1XHreJki~+%Hq^GG^nUn70hywJib!DeaZqt`EKUmPG$^M#c*hXP2IQW(u%ymatZp2-JmT( zOu;dqo*20+dT^skQ4xZ?a|!nT<-F~R2!8PS1ARIC`2EjhjQ`C$`LA{DKfOl&U0k(} zJwI&t-Vt)l=FIYubw!uqXKXSd)X*VTNmGT{S9SB7OBf=P%&davGgveJfb?`00pdk| zBW+W`5G0=4ADu1A;~x?FzSo^0^F1(iKDFidM%wd5=d<3^<=5VK7$dTp2tG$Jlc2s} zE&=ZI{s+P@*G3D$RsTi7@S`>sACN*7OudQ-QKImp+=&jErtl;A5YcUEn2_X_hY;~$ z>tg4c9T|DW7K}v6@}Guc`F3A@urM~FX!$4WMxut6hi3MNP|2}9e64lZKzr~sOsRzl z#(ZLlJ2W5kjU4#r?sAI+o3qB{s}#kaEqt znRpFlkm?MJ8$1@Dc1=i+Q;EYlk?KnfVhuXl( zSVX+{`KQ^JeqxXhrqM?n92~6-PYfzZ^^j9FutmVB9)^G|Zo3`7=}~H> zp0nEI$U}v9k&(rMU(z>=#4+sP>j2Qv(t?*v*H>mDB6R?Cbamwr+V^}LTHk2DsqZ*G z=ToAJRl{y#QuAxHc zc}Tf)Wnif{1wFI*_tB9DYIOl1&5+_5^cG0d(B=v82%k{3k)gB#KFL9V-!tx_iZtuc zG+tC;(sV=KnvWe%U$Om?ZaLVMnLSRD3J$@w-pJFz^s$9tHdnCP;$k+9=LAnptEr7u zy(+#t^B8kpbCnn2D=(X8Jwy}WQV{V11Tx>*wAS>z7T;n=a~t)_WYblg)`^32;^G4z zqalq!efDT|Yq=~^BNJIcC!UEQnPKHAIjzi?N%k|Cgj?o3{6!(JQ4fESG7Zs%(6*T&@(yPa7HQ@4witH zE!zN0bL(amx$a;y47Nf^ZE>!0Af;H0b27tBk)~+e5;|42%b~PlwTq*=LRMGJ5;OB8 zWWp{40I@JtT4qrcHMhvT^lQE}<8qeNXq-PwLD;JWDA{TWz^ag$$EM$+Uw2oZ9Ma*) zBZ>trWnoYt{cju*Ch_>CgdldkHQR^E)~jl1`*dq|B7Go~&Z8K*;yC)iM1c*N2|&O;7Is(Bo}AwPQHz+<90!c3Hjv>vh=Hn4|>h66Fl8l$am-$Wp{e0 z(cGwVCQ?b;Q?Ol#6FJddqkMXGkzR5)@cs*Fw;$x3DIrq@ODMn4Fv2@@%6Bu_zP9uC zBA7S_1mAuJ6TnEw(*7|^hN{CB0VEJ$#04_OuCwco70E2D+I+h)=a9o^qwgKaMclPL zn!0s~wEU#<8}mgV;ZAT1f^;cLHRWZ>qqs7P_4fTc1O0i1u$}B~9hr*Qr^XD~)O;Je zwhIVxB{wOvZ^=%Yh~kA>+o-h??|^r(FBnUOU;DR)uZND=rlyQrDk<#>HSIcl>(y%qM zRe4^G3l&+4vaUU0m1Fe?u_L&tw1Dq`CQ=h}g9QmLZZF{?UHc${^K$1RUHw3Y)6vv3 zeqzwxQh+-$cwew-{Gc<`hIXx}mqhynqy?>|Y?G==L|7K9E&q;~OWJ|V8X$i4FMLo* zk6IV!!xaLE_;=0ce{+EStNHvtN#y@E*Pnj09^`lXB)6nVOj-H0D`fE0hLt99b;5#h z;Ye-z8~vr-9(ipcL@iMRKP{Em4Z|41~ABYZs}+IOaGhY3wJjpVWX z`oO~0%jap~aPj(_xApc%9U2!X9cizTSrBP2irHbbjeZXtrzP4NCl+37I69h+RWSKF zAv$giX=*C?D+;w&&W;g;O4q~{tXQnEbYS!={Acu#`m~*JQBGg%2G|U9Yy&mv-xPox z_*&L8ljRZSa^WFFNCNj|pb^5Ravf$EHX_~8AR-2qbMy`bh#G{0aaou@5K^#Cd-_B^qI;P@-rm)$%hl!U4VTYTpyXhusn%3Ew z`oV3xZ0>rS7!uo_xSwUY@kE58|EAI*Ov4CmBCwV2Rx$E8SL{Ks<=X7gvp9TIw3gDe zRdr|9@JaCm1O9ddOoLyD6WO+k7ONVc3%zljq2uvFD;#J1& z>9p5iO-rWpWN$to}K^xEWUMw{yA3SQ>U&@wK~J>|~W?0IUivEIQuU_P$}oce;* z^PMoo$m8`chHQk?@sZrq-78`04Nj<*K9ZG|-hQsuXT-osw>=1;1A^KwYtm@+)M6S4 zFpdBKK>_&CfY>gx-ut6tA{1E0;&;(oMA5*|+r03_L}_mse(_(N9qFNx0?o5~h%<1i z$oD7&e03tVCjQYk@{4$;i3V)zkH}dzFemUJ8-O6C=+ zLIk4VP==ccy$B*BReT>r5*KRxH7}aPF#To%OV}wZW_((Gh&c{dd`f+gl6mzm8jh`> zCmPX*Nk$keXMEB%4jiY>9-aIc^HpiIfIMsyjj5~PB-|~XX(++Duv}KAh76Pa`4I&Z znNy8N_a%-6@8xmq!3rXb>IeiR$o$p~WZt6O;5m=6R+H|d+xR`!K6ySxpR2p-9HoAo zcZa>!NP~4AM<~@j??Z}~++MF{#k6+dKVNrSA~0RYzy*r@y@(!`{4$n(@XK|GbcDSe z-NwU?tGk+qVq@Z`j*A|Te=Kmw{gs_iu~L9(z00L|DnO)FzI&+eK5Ki)NEu8*3MVj^L=9FMvl_y#D=cVs$Q3 zm|f}s5@NC`KcdIuUfCs#dT`E%e?aM9&M1l&ZUrZ=nO;5j zV!O|3F6}nV{(HMY2-V@7jR!eA#ctjMf>DqP0#sVoreXFzph9a~Jz<-t zOLK4iiLK`|Rr-w~t{Uc}a7QZI)TsQ5GhiI$P#pP)1yk|sHcsw7-|k3n{r)6y5^6uG zzi>IL=8k*ew;{dmw1lvfze27+_JUYedo{dL60dk)AiUMsG0h$8Aw(_tYY?c%=4Gb_ z?e<|lV52r3r_5U(ir$H5Hs`)nu)TP;y%u@$2F$~>-@*n;+rSlyb-i1mm3cuvWqS~f zVIJd)1PV5tzuc5E#a-#%^4QDe)&B0vbF<1p%_)0tFw;ZsEfgHc&x}-`Eh`nrc(o~v zG~m#ch+EZ^h*a7*K^x>E+6kpi6e4@f8uBeD(fBnZ;`g>ikI+~G(@+r0YC-%xy&pRm zY88ir7=_-6czaj($S7Xao-FqfQXlW+anv-sD$rq17FrhN&~FuI;hs49m!keA-gncJ z+M@vE$}Mq9bR-p2lwEyt#aN=<5@^naJild6h-d1Mn2@?+B;V))v91?*nj@^yXL8G* z=-1TFDbd~3bW=j@lw(o@zsg_D^FQ!Dc- z>x?H`^SLaWhsCDW<9fUy0giK7HD_96&+WY@Y4|4?)jRu6h;-5L7s=7P4S=*bdn%g_N{rCJdzB|VyK`1CFF(?NQC`At_Mn)(~C`>{q z4=7GaDDMxwe^+wh%LMxCi^*&L!um_1`cmZ2g`mWV7k=AGW=SX*guLp(2JzSI!7jJg z_~^oyUxUTj>UHQ@3Kj+y5d>u5QLX{9v}C~&E&(+GJ^=wfij{&B3%Bbguj_+g#Glj? zi-^=SwGuP3A}vtJg3$*M%Te3NXLh26v4Z~~LvCQJ1Cv1{R)VI6MYWut+nnm_La7e= z^l_&74BZdZR%!ky%;z7!|M_h5&#asOax?mCW==_7(VSOC2fWV*&T$eGE9UQh!(Fw> zmWbjm)YOxxEdP-;Gwjr)V1pKBc@5dMBf2KPc1XS= z6cF$Pwhc`<y>CxzEQrYDI`^4iUm@)fxLDu+|JQdrdQ*>=1Y_Klr>P`eB=<9tdklwi%+73J6 zK{_7m!!VGp^b)C^U0iXEuopW`LC@)`SKmqoeLoOz;%dd85UeNSJ$6g%^B>NN1;?5t z#^aF|i}=9OC7H8Gl^?%4vRWsq`(rkU0>zv{0nyxNZ3wFcR}MW)tr^L{c8+c4OVD z+-$p}IvSTd`rfwYH3K%|F~}?hS}tX(OnQrx=i1k26x0ljPV?PXk)opR2})7&An>i+XvVk%(Z+V^+YE=(#PfxC}s|M zDg@jQ?%elOOn>dz!);@{Otlu^UG^|J+Wx_GIdXbATqL+2!POBo`HBDJB*$9}Os=OZ zEFf>(s_&5X)Dj<_dFuC%_IkY>iY;Fpn6|V+BF8qoOWcNB+qu1%vR<-ZxU*NPH{g!| zX*N05kP^;perG#Sc-lVY>lDEX_?z9!zubJn=!?off1IK9|CY$|&!!^{7rQ_CtI95p z9@hWYemO?%U+IJbVxD~FI*=dcxgym>Z5xo9FMlwEH-yW`G?yEZ^QSj&u*xVtM+=ml-wKjZ1>UhL4^w1Yd!`mv0m4|VRk*03d?M{luFZyg%9x;7PJQ%LCKyLCm z*YqvzepgY~WA9vT#j{9?+r-s~Dy~I*f!~Hn^wnVu7&imt5eFeJk?vMpy!$>5+zM;y z6k71#*ETfkW=2ZM&6nSt}U_pJ?1v*&;Y-kYo7N^Iv0vt*mGyH{`i?(Cu0>@z39k^~o z_unmcCM(t8aTXSRsiXoXuVd#aU?~8xGmg52cz$?o1!N@^r>3{at4C2$jHO!WSTXV{ zlmX~sA(WG<$tVTO6_+FhWgfEy50|2^;^^d*tGQ4cqq|Qk{roUak$XOsU-M&Ys*^vm z4!;5#{QqdFzKkD0Tqsr_Y4^|G0A*Bng=%wtZ*WoFq)g$4XC+PokmlmzAa?{KGzw3D zD&7}xJ9IZC%BhX!-CY}icYu~sXXN@GUDN=xTZkTW!RQwwVBLDV!|OA=AF_V`X_ny@ z7nBh4Maq$vq_-6a+!C56dQSlTi$qx}s9=(YcI8~OjO&1L6=KP*=}lWZ`^AirqAV$KHtDautW&c~`hADEh$ z^1IQs5ER_n{B&l#F_0LV7-|kjhxuJ69a|wHCpd7O8o+E}3hRv*mENc_*cGFJZdYxb z7+>M=1+As(&c}bRt3uBq-yIotNiCqbUAZkv?zu{}>|P@7 zhU()?Z!)lxpW*R*9wAKF-^L?1#$$Yr^tA#Ng@(zkTTgWVt8!=&A^aQ!mr%H#d0yST z;UxqevP|X9yHWs-@&OB%7hJR`NsjF|9whI|9llT)`Nwx#w^$sAn+C1I~Iltp?bz9oJmy+XqjE@_lRzgMnflpK~kO9ZsnnRd;dygx5JJDZ3K2sNzU1k}dDkq$#x*zx-c$gl} zCSPyzwgNsoecI9#BqPA(hLoNmUr&fnt0UjZ4MBj(LcNfCR3ETJQQv`&($dK`zvhjC zh(g4KjZ(zar|+;;j+v)7s1iw+LQ%@D5MhaKb(K z#xlM2SNu(cp>l1qWKf1GRxyVFx$kkv8Iq`Yy6RNNn73$9j#238~ZEx!do_JH1E7{$0yN#=?l4v2as*QjNiVuJcr;hFK{b$~$2aGDIE4 zg1JXesVzUpPK1#5`eAH+p&0UKU3{=B(F>qD&rANdH=9IAFwm4?& zhrw0ig*>e}*z>@&xXo_-S#UUKp}3YG$yjk8-XaoOJ$rsip@p)MyJ+v9AV;wHN+j}x zK;J7)9r3yqBD|-#1dk4TQtGLG_pEtNx|5ry3+v@LJxgWUfg*XnVf~v;h)Tr6x*OZ& zyc-Nsz}&l)#(mtMOW)^GeO4`GHPV0>_%fK^suXRAQ&V~fxl(HVB~T`F`Z7~#R!D$% z{aOLbuwMyDi|O(7R@wQ^UaNJ^z-KHTzd#4z2Ro;gGGe7+f}s~q!%`nAS>ghxAnOL_ zOwkm|o6C7~6!Hr_VP(Y2819Y_1dzIVWA#eoXK{^nLpa6@GjT9IU_3aZ5%%t#nHH$;$Y|!x4XwU72j?v|B*5tmVbmw|-S*i~fiU-qRjR zt183$gl1!zJatdS{d@HDF$ES&UQwn<3X*?kR^6oXQT#T{C&#EV)`&f5a5||e?;jP7gkH0cvAU> zrcMfLgB-Mx7`_Izg5fgW2VdH8)am0z0h>^*9B4D)0)JkU{>FU*n{Xf6P|R;%VGFx9 zKK8J39v9ylP*YbcYkG;+eHVNGmx^^JAQ)-)qc2wct%_CXA6>`(I}Jh7*z|*p;QjCR zsIjK{v2*Evo}J-@_WJAy9a&O-9UEC#Qv40Ga;NZ)a80?;eojVJ>h;rmpU~CDICwtW zNu%K&7WV~$2%E{85uc7_ZBp~p=3(MToaLWe7y7M*%}n--2(zm3Hnn@Ii0O9Ef-Qgx z-Z2oD~dPeaurkj8TKT42PbftF&GOsG$zG%sIXs9GqBeK%a9aM~dnh+pi_cVBgt zufleT8R6Qk?rqa!%t}2*fO}e(A)U!=U|5=Ga8zW{h=^(uHuKZ;PwwKYssLlak2AAa z8c=8C*{2(3*C^p0zBY4_&&ia570)nl{<(n7Lr$5=d*a)C)^tL5K-qxfK1{{Kkux?|h6?R0FL-LajHjVHEk+eXK>ZQIWO zto45H{`bkZYE|vCoTVzc=e))obB-~L4Bq?9V6~tJ+I4AN<63XWvK5JLBXwk3D+O*N z?Aue5AEG2yXr>`!IOkv%E4f_x7)0DmPtLuwTuv%yZbRvEom%mIFt`{aNx&)*Epi)? z4L~-8-$Z?Eh$_FiFker9*_8Gm>25-h18)|7bMpcI@ZBZgN!Um1SPmVwA5q^?XF9E{ zkER_EqrmX20Z1uj(D(bv?C54;NXSm8a2J*z3 zF5hQs-do>q2djpftXbI=JI*?tu9)BZLm$7nBX@OJ?djfTR>m}&VCujk9olv}&AXqb zUjH5cUBn*q`d3^I&Oa)F$p803HM0gLpjqo#(wqLLAR}TXCBHHv40Ii>EUmnBL2dN$ zmltgf3;prWt*$0GLhfUcQF4kiLhd)Y-TL|@zjODC_B_WOgXwnkaa?-naql4>j!(q`7fNo~~J zQU$@8EwL7h#lkl30Qs3tgfIh zG{1*zUrU+Pu@aHG|JFf~Xw*Lr5T))CP_T z|2vrcH-Fv#Ns$SR9hJpqL;*zU4ef~%#B1eDf%?KJQkPjIcI)ShS6~T~I*}RRD;4X8l~yWYRO{N(3L^_GK=`f~L(7DHA438B{<#)8p9k0A@E2&R*C zaJ>`P-l$@P6rGH^e4-hP2tO1NmMxC+5^9n4B;XI#uuXr)RtrPuqjt_cBYU7;ZPQPw9@ELZy%D+l+b&N|`xPw1Dd~uqelt1*Qmd5g(@$iY z8lQF&=7TeVzj7M73-CW?{J%c^tbzNl9HJ{tP z-8Xym(%l^4D^P)|?aZqqlVmrT?^XlfvGnDjoVpEhho-bk{h6}~g66X!)Af@(S5`1$ zL8?B?G?Ta%WFCpr$2i1NP@5>ITAfJCSB`wj1BT^wiYf-TIB94x`#=t48P*yXd?M@X zI2VhgAvRTAK&O%Bt2^TFTHN`}zccg*C^JY(fdBo`e;g(L!OG$P)RvwVi5`jGe+sN3 zaZ_nk6k)Kdr`8BN1_Lx-B9%?X2V%4_c82U%QMBNWGNmuelp~-KKFEVr(uk7S%=Ag= zWll_&D}!NnrVxI=0;qA~T8}gA=4X;MK1o^cSZ!OKyx2$=`+R#n{Q1RtXOspFm4>32 zs+dw;(N^tG5!4AMg$sEU3LVsMiDKu#R+>3?!4CSl?}9q0C#mvEu7-AA7(&fV;Vg8; z$wCVKJl18+{-;!UKa{Rhu2Pa!uMwDm65aApm2LO%&`^4L#cMDlRP5#wePlpDJeyWj zJ*A#vnvRim@8cO@8ywJL*#>*DNFwb>$79^tk9!jp_ldb`1n6BWtU-KfTrC%w&J=Z% z@+$|fk{5t?3*%?V#ZjXuCX*KLGl+JT7G;TxOsScRj?L2>bC%$MbHJK&ib1uiOkeVp z8*@1F3KE&apwqc+%mKBoztqsCx8C((&UuS3*u108MHL4P1c%JvE4!FJ(tw*9N%%uN z>GlrgCi2FOpchPhw2{E;8RqEr*k(O$XHPkdP0B4yt&fHy~;k^2nSUtD( z7uuCSO5D{=xLD}2))tRC6NgzN6k2I`6A(UE#Q$WxzP?l{r+KEl4ZHPICB!vHlq-Og2 zSIqJS(frG4X!?f{fqg_f`lr@b`cIrcu*#IC33$>C-}&S^g16lRCZgXP%dFpRieIRu zB?-`6Cq#}7xkKd=0dZa)9+5L}T-_Cvt#kpGV~DaF5def6yV z(;Wh1{!ZZrY|abP66N~gKiM&mB+d>nixEj6BO$ZmG}E4ICdTW`T0wM;|3wxVr3?O0 zgvW7mI!JLgCa>G%&-(cV&+c%iufHS=5LOt5*4w#xOmEdab;a#pk_?>*fqT11qr!DT z7uQ>W%gEuy50CdIU~0_6MkWi4YL|=%b>XSgK9(-jB+(vgE%Q^*m3P$)xFJ>&)dHAj zH%PmORI4fufeAUR_p0N8xkfo7N&*(pyknT-hGmEWn#tlZoh8B#!W@M6?-w~3D{UfH zsl_OxG{G1=tzy2BdwzK75ZuQp;+3K~`L#ku^Bja-A5E=?*UA7)A>a}>-5!;?E@Ge2u>sUU4pz z7Xws6n7Tn;i}HI!p$|eyztB3F)DqirL7SE-Z-Y5+RwZ}G6efLhHF`1gTyMCN%}Myi z6Y?9PE_dgpwVxD3yzzm1=H*rU8*pA6d@q)zoG!jE`u=efJ#e_u`94%#J_X2 z4PeMI{v);=z{oUqA@gHELbOi^A@CE+E$)qjn%Hs$V1ic>R&C+PQa1abqpG`z_(o`e z!;ztC_XYTgT+lLV_eg*zaX$Q(rgZV&mH{+Ht6Z_^s@j6nQ#6mXI&(X45TXpe>=EP85r7Fx`8M)GHk$x5g}% z3;6144y6<*|6zd^p;ehi0UD6!(;+0gRwR!U%MMUPdyo%LmV}v?7Gnj@)f*gNuvjte z?v(#vNIVdbqdDKSQ*5x;w5uLaPW6xMGhbevOSR?zrfc-a%cM0eMrLg9EL7xkn#+!x z`D0uBdcIbNb$@i^Id5QU9<*a`{K}v&Sw?4{nh|p)F)XJ_%bOX>^B~m&nvpXIp z`|$9va>ZvP=O*Z_C=f8YQ5Mm1w3;n}O0F=lSTq-}G>Z0iT5;nwvdl9+uS2S2_aDx* zvHC7VsI}-G;g)veZLY-^ym>AsR|lt@*yT#o5L z_S=)3jG{?-D&0|+K$6F7rPa9=5laU9rN{38BET$qK7&YvWuokXhadft&qZ)jX@v6@ zMJK;S*wxX!PZ1jYp5|1`@%6L+*wrD#e)04n-1_vwt&gQP(R|4~@?qI-JJ(oeBAK({ zh+SfTNLeQHfWpUpqpUD?-QvjZGpkJm+w*-A znr^M5n1dBd+q&KCBSGGUa=)fO_eko-@%OePWaKZ)c{T>PjGk%`Dp==EgFZ-IBD5P+ zs?!g+Pim8!!L=s{C7^vZPnXesP{Uq=a$iz1xlK==VRKF)9@j)o_t697lya9s(*&*_ z0Xq~zTi-}-e7ch|Hg6QSumsA=KsvV}&H0-zeE3ViOWuWKh=z6b?djlH^d+|;J;P*Xd_;@z%6%rFTV3HmkatEm21(+dPSey<4GqSE9h zDZDTWK>p2AE>5Z7z}fFxisEkWdUgD$cFf&)Me{ugvHUb?$EyBGUS;e3UH4a-V+YM0 zX8wIp+1;Z`1pX3LXQHpa3gm-zg3peYSD*iWuJe5mk6Cf!;zWb;g-3fG`!rg6ARz5R zi1(C_bRgNT~ir|N9HO{?BNr zqT_(9g5f1wmnJhq94JU3&;NzmlKp3{y19RLyr`Oan0y%+D*Uin>jcn|I0U&$TDJ6)Y*7;eqFbYuDy&dPW@o=kqc8m!j&-UR3BXw2iuI zL%ro572u|WkKz}Y7-l*sOnaZaaWR83rmhjk_!U;KGzeNGbNdiOzpdXkiT^mmxV(W& z$~H@R+tq&WCww-eNAY*_tg!RFxnjpHS2%EAM^!xd-2x@)al*M9C z^MUS_Ut{D6==Y)PmKAx{pWqoQ^CUNZvb^J(GBuRHmS9z3R`&}G+x!#g%8Co#Ul8I( zTO1y$8)w5Rs~NV6>qz6u5tL@^I?%=2TzZa@V7d*}Dhn>RsA zk&MD(L`|zh_+i@$x44J(vN7X@%Q7?>3Zyq==s zd9OA9Jor6#ye(c3R9hIMPHOgdjsgYL*a?<1L z=o6Z#@qlCKUiw;si%VgaI?JUM_(QdG_I4)z^;-Jz70#>s(;{VaXR^_R z-0Lrauat+@BeB$Yj9a5s19Cb%O^RMXts`Q+laQj#w20a1ZlK<}<#lJy1 zrvEMU1Yn`B3Zw9zs;gR-?d3_#lEfpW=HC=i#Ct7~PH`|M2ju7HOx-B3-H5727Z8+9 zwcnDv?9{;D5ngS{{sK_a8v&fXV3}c@_c?ZD(^p)Kqf}QMCfD67+h0yMe|mqng`6O` zC}}R(Ax6cfvMyUvzOD)7rs7k&ZUIK`cwmZw)j`5+u|htBp&0%Zw-Xz{PNJO%yxXRR zBw-}i)AgexBqgLKB;OtfW6>5Tf+B`QJto;{F5dQBi>@xt@neNObcuwq`U>@&vEf&#PYl*`vug4c1^9 z?!=>M>1XSy8@sdH-~xqHt~#?U5E#wS%drJ3#tKAdGzLU;^wnZ4$pH&ksHJiH~D5G-%qpo780yN zn@hzTCU(fj!~kL%yyzY2$&33xC5+lf!zl%#WA}ez+x3*(NJl!=Y|?mX)~uomGpyBF zD4cs7*gY@UirE0On>+{~8>J@pMgCai9p=l|9E{4GMXXTqbqlNFlJFG6&YifytW|mV z!&eGvEHjFM=-ckUkMmrM2Dy|Mgs7s)|apFre@@>6uEduQj^~>Z_tbUpAQI6 znQDj}=V!eI^e^k z%YLHJ%|p&be=VPiK5^f^@DXFlW%($~nR*Hm4KFTvwMa8cO|rL7+npZNaK)Wq1IA=X zL{ZB~qw2Si4cN!km~gOSa(BZJH&E0}I9AJ{$KR3E6n&z+WQ?0 zv6Au%q#}2)em8XG*FQr~AHmz2hsY#Sl*c0+fP4J?AcA##Y-!E&0wxsI8(9vRn88mT z2x7@1>WaHlEf?FpyO*6w;uO#c(IZ9s{QHCuMK+qE1K1N3|KI1*{~D0~Ph2{*^%{wl z62Z3Og;h3OeXY-6X9I#BB@#p_(Y}?1O-9Ap`jAEGjRnsYhzE+kWt@J63MyVZvjY#% zU#9&1cJUGai>}^czZJT(_S$c|$^Pi=R(7l;lkV!>2(ld6clA>aL_RfzLZiLGl4~Wt zA|WxNYjU2fVwb4xd++?q(<&+^<+-92}bd%aWA`r2CP9xiPJ471S-5G25 zq~9@A=qWoPll{61&F*H#N?w274mNK;kLXKrY&4T6+HU2?97+=O)FI=MmIZnu5K)*W z7}T%KcE1bc+yw;r>E!{ukxC}|!4Z28=Hr-Ps${WZePn5FJpY7&GuMY@r{~;kLSs(a zYcf3x^i7ezDqw32A1OE{+Zi43AXB{!R7($`WA4|LdSDfcr!$w2H>coEWtK`D6|jiS z4DANI-FH2{Z9gdo%vB~RY+!brCZ{&5Ky8dDQz%*0S)Ay9YcNeec4QQtTq1&=3A?bW zi(bx!hnC8=$nnm;WZ)4>decJTG^|3rLBNH+uC^wOsJ$kCGT1)6MDtxIN$v1 zA(_^SL)rw6%z%Hqhxs>TxBh?dVnXcSH(r3rxq{WiPzZ2TeguK_QjY7^Z}eDYX)M#? zeiE03ZM#mkZ9-1pdTefc@VBCv+E*o|Oj!HECO8i{f7&=7EMDUChaAD$WnDZuE*81- zSv}vyPe)|0r==6-sZL$shcW+AiXnZQI-ru`3SXeRE>WSpq&5J7m%Os#pE1ZZ&B%`p zqnT(3b!B4nppmsbQqPrL;xoo`B%_WZJM@V`zYFb#?&;xy{$Q0bQawl!f38-lulQbB znfsn0^(nQaJebW8@pu@+QzK~tP+%ToN^w@w3l~=BSC$|4`XLh8kWiNs?o|1n7VcD4vE2J&Ok^cjV5U~YWuh$fq)-$%McS+f^QStCwY6Jy zYuD-C`MJmouCsJ0vT)v?A#9&BmRL_z$D^Rc%LCnrPrOf5q*(bt9FtW#Mm>W+Q?Azl zQ$utfN5*7`b=6&@NbV&%80&i!qPX{NW| z!g!Y8dxY~iH-4%mOyu<-Rf0`1uEO_ShFC-O({&vCAm-@9)UC(SgUY{$q%`e@*q-5B zbxT`*mb&V!G$^e!$XUQG=M@V1DUMs07{^(2?hWVSy=h)ySL0n6%$EK9d*+x@8h$i+8da zYiNo$H3IDNbC?{(|XKf;Vyw^??UzBVqp~h(o(+eIG@kPDg+alIJ8L#1C*h{l$TBPfMjxIzexq_@ zG8J%!#+okELlMFnuvHa8M8>+<2?ubRwFL>l-rE1h2Zx1^o~;f>gq3P8*3+mB;+UK& zfgiW4LV1!Mz7pz9w{MSy2!+9IV@GrO1(|gA)v)R9ckhGeDyryszb-uNV3_ch-J&`v z&}qyxP)|Nf=Abg#;LL{Xp1r_Zmi<&&W6%(e*Eo63+3C#3rkqpNRGM>|Ym=%y53gfRc|_>CKH%RQt&&1!(Ltz|j0WiOD%+U(Hp2B(70{5=sqf zP&Z~=D`8d!!V=J-4Q(sc1F4$wCIZ*qOo{rC_Wf^JYCz-i1LT3sjv1^Q2rosNwY;i z0NY~JYd>Hb`dL!}E%)2A==5wd8CJpf*lnZ=uHlUzOw4Z}I=wBAQyYRG7?lRqC$o~V zG19PI{*5~8oxVKaBUZjBsp6^lc2{`Q9-R>hb{yXI;ZB%2dtzAp+u~4Bq9Yu_@$bPC zkb!6wuDP^^J6yks-3>R5SUx}COmyknbb@mUxbCNKYVDK8LbL*6+qP=+HB%HH& zp&gu_@u0V2WjEC}!7wm!6?GL}-r3pN%|%`v;^WQFkB{%&v}XZV%02Y~n2>cyo$=8L zR|x@Cq+=3Km9R*ajf4SFy{7%Fe0R6o%zWC1y|8>RH`@+;Bu@+|g~+{n_1m)yJL zJf>{b2G}m3O=Vz=!0*Ta2g)74urvi2X-K&Xj=_y1p^mO?XiAJT6NWO0+&7j~LIDai zjQtLj7n&oLtz!NPzetT_8xHS?TAbrv8($PvBujObRV|eq#=tsH!cRf_gcIpwLo9K- zxe96c=aP!W(gst+=Qw9k4m;ftaU%UgW_L_m$E9^>DHkY;lKAFp(4xOzNX)5*toHYD zsr_M;Sv<1?nYp_;+g;mXI+s?00oh*8y0x5KfLTW(F!`O4GD|vNi$U9Vx_MRsD3M8% zZh-X?l?QiR5Jg6)Dv9?QRcSP8v{)(^RQw^{&|XK}N33)ZV;5x@EC#q8;^1M@)nHzB zonO;CfT6C*HCNhsKhzEIIX!$?%WnUMb+zLaB05U;!>qOkRNs})Ku+3Vkvi{(FQ|yI z2{b5CeiDon^&*3G8LH0essS5nJR0XXoq|lRR%t{3Yp(Wh>nSLjG8-%lWqX6H9n*#I z611?BZ;w$H3)crDi8XRHt1K2Obu1?QPHS;t*sC;hrUC}Ns;oB_v^WpPr; zlOw!m$+uNEJnB;#d z7&@DgF&WlL`vExOfMA3Br~ZzF9Q2M(OJ_^YJP*WXQ8`x(M|2X}x9ft(t}sIs=iwXh zakt?OK`x#*ay~5C58ol|tElduW{c#qngqBQUSUHP&adCs^8G#B1AD^q@!tX;IAfm; zi)@4GE@;SB0$=&$Dba5o? zJ9A>+@NOioP;NazJSRM3g6h>`zc{JW zH@uQ>@TZX8J=*K>YLm|y=X_9^T0`|wt%Jru5!oyg{8>iG3_!;+j?cKGf1oo~L_X7g z15I-MC3kVSrjcxBTpm?`>BN-(u1UBEW?cKoGQ+X=-mOL2^sTf^wNIv!hm0O$NW zy|Qj;`l}*u`Byx%r;?K*F(?uXpmELy`=~= z9P6{Dpgi?5KV$pkoPZ>t2*)XDO13MxD>$T$bh$bTB`*o2%FXG-deGYZa28Gw1 zhad}*D}eH_v=GjFGkCbl?W08lWA3ly-|{Er5BT=M2&eP=RQ|?Gya&Q)4X)y%=BCN& zt$>m_=~5Bh5I}yji_M-wCp3k@nQ_Dxox@~0F}eCJvB)wbOay?-E~x&V$}gD}`bI;f z{bAS1eM0IU4=< zwJA_p1zulceBz4Nl32Dh#G{pKR{WMAK-5A629ZOtvMJ`rXtvK;*+Xb0=`86`xRfor zb@Bi9xT=9a7rOU#OR;lIuVMZ`MGY%kP7haj+qBb2;wUYJQL4=ZL(fCVJ~py zW(T0@jbrS)`qB#m@P~nCgkjxg%(*ae@y^y!O6{z6#~8%foLgP1imhc{bnUwGL9iZbJ~L6ZKg!`9DzDLrD&y}N2bePPMcn;U zqe%uOjoy1v4>e}K38;X2NWOr2n6QAv5-0uwZdbF&xt5V?E7>x1DH}E$`uxyF9Tua~ za(cSv5^&F$ZaQ&hBlS#2nssTTLQ98n78+OO)Y@YA*q+nU%fz13HjOwvdIvY%NK4s_ zWB-+dq5HbRwIrwfi)EY>QL6zQv7gkarqZjLaN6kss^rC=5I?i)@X{2QD(4&Nj}~ac zh6sC^+7&=Zd3pH~xfx|rS^5Xi1puHm*YoY#cQC8=;B(gLs{sNgFU zugN4%t5GYhXf7d3dt8)A!_LrB;tRTRu1e-|>>U-_eWW_}sK5?qGY-TD_CmijMOUGBf0ddv;cvm{YWAD`VY?$3YXhI_m+SG zeU)q@UFSnr`B7_qfV=d}GV4tr%Nk}c>st;28>JQX;Zb7QA!Yu#)aZ=H=!)xlc_@|S zHaeNK7CE5DeMaG_J?}Ht3U%}=rrl9LD%@HH*oO3K>Ee3Cl|g+~Ko8o!_F9Ct{vmE} zTtQRXo6uErS4Mpqpnkav>SIkA>~k+Ey$p8+`a>}m7z)4^n-9!f&6I6>W6mC^GSK4L zAY7<<)w-e|`I&)qN>GC(Zhnmo5oRI$3gQVnMCK)Cv7;tTpF?>KoxA8Icxz@K-+bVX z@HR}ueKTc?rbj_y;#OH*y3HZbHVM*s0IjL^cI2~Z8ff}1K`ni1qluW?7)^q&&p%8S zo97jez)WI5LK{0yLT}GULLav#dh<=97S%h(vY==P&58s*J!MR0>Z8m{wvF1cA<9V0 z1NZf1v8L|CW6(C)=EXUv%*At4Ku7GO@cSx3Ux+RYE%3tH3~cLpSR;@`!4Cl_gPk&k!x&Vb6i{Zf9LnJny=q?yz_Pj(rl za56(al!BIEy-d{rvQmVQkH60~rz%zi+kwxD_5b@?&iKDQF+y2O4p{)@qtLQ#w013Y z|0E)8>9v%AN<`SYRYE8j3CWW&&Z*cUQD>>L82$sn+ZX=Eho012{|+1(=teq*CO%EX zcFf7`(0QAYayd3O`7^5vv^f%Zma8IN3cT`??59NqM`fnEC{3P66sTem;zEHDcMwPo zo6(LvsD(p)pMg1C~MKeRkF{U(c2jmzgqjZgw>vs7s6kr@M0Fa9Rec^I>!)4zov+DqKihQ z7xESO*R4f2#4m;9igwEZ7g5n&s&2BeLB$e+B17b}{0K(wV6OqfVEtntT+Ew@?%!!| zVQV_*r!o-~CUu9pZL#x$U~u=0GQ?jfL@&SDjVx&imta-%-VugdiE9Ugh-Ouk)5hVC z3>W;SY|}W7u!KEVnw}aEEGtBw7N*HrK*(CKXLW=#{T_T6kHz(k<#?haDA6J(r#205 z*q@oN(#T`Uxvd;(hU-(Or4hDA`c)RoK9}Q1M|DR#S ze~YL=O-l_Z>-qp_lR+{CopuCGl|}dJyh7Al?$8 z3DbnCBh?V;tMsJ?(~EeZ2L?ap25-M(fIj(z!M8N`i;$!1Xs;dY5Yx4`9BmW*5s3}k zz&NqX!}}e5iugwcQVAoPA!3qbZ7@B+$b&`?HxEhqPGV`NOe3FUFFLV%ihi5%5fdZv zm%exp-i4$~s2r&}M$9h*?H@lbGJh8kW$RpIszsz5nYYxN6(yLB4>4LO|Ij+_sWmrB zk^NA;xh$TXtFOd*zAH5_6U|&3?{wdszPoET=HA1pvW*-!8DDqYV7cXzdfmQlb8=H# zC)PW_I9JMW4dvuJIcUBZkpU5KO_cMi?NJd_EzMW!FSs(P8krZr;qbTLXFf@s;9^Eo z!i{4?WlXN6x$oX(BVGISuDD(bf5ymO%n5K%$GQMb@Of4~%e4Z$2G1i@Y zqywGGIL9eXJ8+Oi$l-_}I3*#aq@e&+b9l=7f}$D?Ae9ulGF2M^l z^z>TXO9m}*&H<6I?yXfPPB~-B>pTujg%fQEL`uU7uM+fWC>wM%Hl~~=ZCe}4#fX#O zEY@WYZ2TEs$;rl(jH#=diB9GZt;QDCr@KX$GcyZtql(}397YvbPb|NZCR3j{#!s63 zRw|GoYC`od$7q7O%sHLFGj!dm7MYsl`1%?kz?&jswp7HUZS zzp~mGO9_Ke4p8oNvltV3{|1Q6?5i^600WxJ`CUJ-#Gr`>xp@inO4)Emfw)D}R}lpe z9OrD>8D$O#=4x>CsC05Bi+|JIb%VejChjwx-)bFc6_ z=ft)t4VlgmNq_5rUGK0id{dGw@E3TBdkaPf9THF(&g=P|$*f&RaYV zqR!vJbTR>ZG>Dp7uD4)gBw^K@$#v)N0JcoQJw+GjxtaK&r*5J2@;z+$BtcK80zp2v|ZV~eK0(He|2A)zk?qYGDs5!F`k?#9@#J+ z2{6NJmI$g*ZCjOl3sf$BVP`D20earh2HuOhD-Kd z{nqwOFCMb!qV`2E<`9=XgPL^jYlp}&%(pNLM6ME%qh?xlaZ@a4uzDX-wIs5;>OyC3 zuae6Lnq^!^1!1$zcY@C*%z{_m1Ks||o@wvDk623xM<5=7n560-M_s}H$5#8FA-Et; z$7YrR1@JSeT%(R@gzpJs)A9$DIO1XkKwghRk(7)Kw!~R?ryx_?z3+nM0}K7_ixo8*X?d|^kyAQj|`EFwrH{Zp}(oIdTE$!Kb++eaE@fn=#GiMaa zqK4yQf17__c-~mDbV%?i3p-OpZB4|$Tllv)D9yojAC^bA z*+j8fyP>VX*Zw}}U7~jAPXP&Ya{F-=6nu<(8421AXi}yN;VOA;__9Rk{U(){pP43T zK_U=*+9W$;5_z;j+zXm}p8XZ5ELON9(hlsy;9qxP(h4eT6mZZRx)RsGi3Ribd1E{%g`>WF-7uiSlV5H&)C_BjdzY0+~seTYCv8Qh9l`Gl( zspi^onk%v{kR~`66L6qL)}%a-slQQI$f;{~%8HZ|*}+KVwBn+7TXnrem86GU3iS86 zY0<37t2dD1mT9$A2lYgLLFU5iWiFTRlx2?6_aFL7qb42XIu3FuN=hNAQO@?s{v68(a4oofw`!%D6vk_Df5LW;?2mg+6ILF4htT4?tZV#382(Axa8(6!&W;NtWu_kG(3(5}!DmeMXsvOqVnd})nAotAD^#@Kl032CZSA*24RL$sv`pZG zaApx~s)(zq2da*P6Z7a4VVIx$59DFGQDJP_CV$vfE!U7G(&uXGTRpWsVo3mP>RWME zdbI&1pn{?1NJz>-nSQIf&6fD$x~TNG*l?+oBUPP4g~)-Q;$F^ zJt=|_7Oh9jw92a7E>__%(_y9N5qdD(J3tMf-mnU_wM&lwDCZk zUi9779at9PSs%C=m{^PY>w+L(&v1hKwX$}9AuR5KJI)?OO}qF-YIyU#?O@^}7m6D= z3d7i`eYKf}K#&d=#WUe8#s)(r@vOw6Qiq&pZ;M#uM7u)&>Wkhhr!ypgQEIUDH$i+Pf9vta?zzi4&EU2E!{C>({r|kAgR-m zsU30L(>zxOI%DGlW{s>Ng)0a$B_%BU7VT!MX~MU3hx9-8d znlm@!^N!9w`J05k~X6ZtFHO)C89l;6Npx8n&fM z=STkn+V4|%WDv|Be4wp^7rimnw!S*&?CyK;dIU`%jc+vy@)0DKjD-BVtL8u`=0CV$ ztN86_0&qNIK>Vj}|F2Gr|9^g0)yx4!1%;Qs?oPUhkdPt3Czqy&VR&o^jX{6`5)&gr z0)|msyE?^;EP{DGrwvkgjeSi`+qRcib@=;SX||$~Swdjq2aLB5{+qQca8hUK1w)dV zPj}dKf85}E?0n>Uf92PHB{GC<*y_XgS7ifd71H+Bkipd1i zhT+6)i1~u?f_d=^7+2p5jH@T_jSh#Ua^lD3C5x2uBzUo}VUwt~XJ`89=#^M|9? zA1YGFfB}UEAOw}!`xQn6e6m;Z3iLwZis(Y^3Q3DzNaYIZf!ZY@sEV;2n5TK6VvEEH zZlf>!M~i~O1v?0}y|=8$O{zRFwpDYnCNw&VY{bp%EUG)ZhTfN$CgFbd#q(T*@0;G#*{h?&)!G5Iy@_9MloCI z5XuhD@ly2)uh`b7GR{F27k@Yp{@VOf;W+I8zIS23X*D-3(~Blw3&_#X5t(mf#j;Mx zyP%T-PM|hZFB)RH;fST(pg%n~?2t{H-(Yl4j?Qzt6*t#>{?cuj!s?u24(pn$4wWVx$6Zzcepgel&F!q((N|RVH$h9O45?enUOkjs6jB|Un}3} zY~iNYm%~o7yxjhS)~?I!bRV~9I=cYtq1fC^)LNTBklFpdop~n^-sG4D7de?fcZJvk zyIn{qtd%!^^~INH*^gWM&xjs_ulMj~DV{Q?DkgQIyP zIl~SdPhjP;#f!CM1^0f3ka!9=7E1>(`8fMB081Y8?j4z+P!6<*5sTJt&?lB7s8u*u zKw5u!ajT2sQ;FW)il_=}$7M$?pijg86)(+vYSshf_c%YX2UN^K76P9;UW{ivh3CRJ z!BdzIP~7p0Q!pRI7hv@BTG7X{PaA)W=bhsfzmjW9?giXTf)EbThLCJOH!682Kmv!5 zZ@V;rLxu+VQ&d~(jeSvwa(IAeN2TvJWHsb8_z__dnY#}? z^~vQB?K$(%;eoOVxMk3mCBa&Z{@o&*dNM7vQd+&bC$AvqfQ@CvX)>5soC*D{5PeasL z{iFV!uX*7nXsYt6fn>KC%*=<}w;6FMUZ2BE8OK+7GW=6+Gn77?Wt56NhsCX)&kR$czP&3geE$aDH53ZCMEkoDHOFV zp337qV%g0Z7)j?~7iZ(JdML2$g(9XaU%4+MVY=3@- zRq`YzhkRAr!e7smaw%nFu5Xz^hE`B7c~qngbK%!m-R@A=+(faKP9oBdY7vvMBGo+> zk5l1v_G><9snQ;n8$^UJ)xMdbC!$Adc#mwQ&V{`Qoxf^@l|sJsJU)pa737uO^lH_*vK<_{Pl__8cfmjQ|X0exkApA zmI5gj5Ub}tgdw?!w*p(x1^61k&_7u?eYM-vLTRUEk@Yjk3yZl zmp?8K;S^0-9Hb=lZk+FQ>;Vg3BWhB$tuYRY1{-)ctQVJ+Q;b51qqet6FCsJL^|vY5 zik|*)9*|9@|3^0YUw!;QsPf;Bzd~J04OtE4LzFDV5Q6}ONW{Vdl{GfanTA3TbXwh7 zw3OC-l@PPnlu5`$G+x(REbC=RN-fE$LHSjF^JNNue%@1-jF6qcZ2I>D-{BbN>uYDn zWcu*VrT51Za<{9;Wv?fsGbxSKlX?$15??|!(Y9|u5E7omlXMR(Sf#4r8 zb^U`#KcG#(S}!Vi7V)sOLOG#KFM3ox_F9Y z^G#bHdR$vPoECe z6!=ZyK>oo01yuCmCyOAc91y$H!ZfA*0J)whCE2?1rYiIK{}}tqpg0qC%>e=gcXxMp z4ess^jk~)BYusIfLvVL*G`PDH+&xHGX3pHZduw;+oFDzCtGc?XzkdA@u`qEAXutOhdBWSAJS zQz^DO=+5<6{IRCVs&1g1xpzJ1c zMAH5%Gil#q&voV_B@H~|1befdrfdla=B$m^^%_J?b1qkyFG-!{_eFnn1|6>_Zfi}6 zA{=C?#WJkVXApIdn5r=F7taM(8!l+~?46;vWLcit^;xi_X{{`Gm;HVXraf)QV*D+x>_JMtYU- zz`>TfH2fR%N#!z^)?Pn>qToh2ZC8>sZ2YEB>agfnapGN0;AeL{$>wbn|8SOT2@}R7 zY?ge?NDV19D6s;1A9(4=oB{a9d;FW$6KBs8XD!=QhK11!Qno8H?*L(@`&b6sKC-hk z;8=RWw5pgw(ne)`9I zay8%OT?`v^#!Kh!m$FBD-NP5y4Y$11-R|6Ab%CuWF4>A(f};ze2ZOfvf+}x1Xq`)} z^RY7?;*8K{(+9$`@xzhUbRMi*^WgEqFG8p-#2QF0hS1J?u13OkK`-8xITuMeHe-7R zx-rfWRfsMb)BE=Aac={CXg+$nc;{(co$Vm!xo9=HA%(t>dMaQc=Bv z_rR%(+1bXm;peSBDvs$}q*fNVA_rt{3rSt}BY7#aVo&x#*5|637MFK&cuq=yQIF1L zN(ki1;~Xv1j+yvF7$y^i#P7ev0L}+>ONu{If8IY%s{aW^?qe_cHy2hz_fKoD-<0yK zqjy62#X`br`^K5g5yTpnD4`-GxK=bxQeE5ZIJ1Grav3;`>L}O#Jv&vKSFy0x3r#^k zbm;wNio0JXZ&rx5;l{eC(iG;#{VJiq{thkaqXJUI=T9{ZR)kw9JW zk1Xp`wUWZtbViX6@*oVR<4o_r7owUxCRg)bESJ!}t!M_(uDI zf7{OMEp>zxGz-F@V8nVDdq<pD$Ey~ z?`&tC6Ti#1XDpm4z#uf%Dhd=)A}owkbigk-jjXb7WH!$S4R_Mm@agMvxtLZnWgxY; zC&-<~t{oEyZtvuU7*%Fb^=Ul!}Je+`EfQ_m4Sd6VxT3xhkQoK8Y1q$;yRk#xb0-`b- zIMW0h9lzQmnJ|l4td4P3OU~R2g7eV*J{;p z$M`83&L_xXSI1LU*=<$B!z`h9!pFOQC|e z)?R@@7VU|~G*HGxzgfn$Y5yy;Ymp7ZpZtj1;eZ3&=Tq7&9s3`valh&3k>`Apu0Bs- zdbOcgK^)}-CEKJ#5s{a~6YutxZoO2KDoH1ZdibFd;^e^LFhn(%0{*&8@gw8Ol! zk{J8!EBE-P4Qc;I(QU&JVl+c7-^?`d05o=Q+--ckqhDiDh)-d;!~$5yFbSrDPU)Tm zEaxQW#3gd%8&RmUPR600*{!MRdsqVj$Wx@`)Ygq~_-T^ha(Z~0j_!qrnvHjvs}60f-QEMR`f(n5xA;Zo3V zmNE5{_S;(t|DtP%ZdSh+JG%ZFtzO!*Ue=G&pDYe`)ZJfgxzvs{D;bWw>;e_HmI))d z5*f7f4L1#@Z&&+ipHpGqn%ItHuPdvkYbr4n5r`a7ov+Y?I0l0?)VVp+kZ_q`{h&40 z@|ui;my0=x-+z7C%`~1#YYc;%b;O{tb9 zzpQM%TG&VZ^nRw?&&=_t#r^yj7Pry*>9gfW`X2a4Lj>Oc=s@|W68Ya&&i})$rC8%d z@k595H=~bh95_TW4U%#?FK^=q%P#LTnky_KG7EA5jcx{qzU(R#(R+Lk_FmN2%%_To z4*=DAH3SP=Y`f`}womuvy30iym&J$t|1T&b?6^u9y;;>e{u zt}aJAjzEw$;-T^9JUSq9B1?!9EfiP|zPCwu9$PHsT?F2nqsB#=WC^TvRafB**nSP2*w)0>r-4D({Z51~!^|=L#vGtj9(#W=hT_{mbfi26B{#fhdA7lN^g&9D3 zr}o)j-r9EKw^wM#-rYUb#W=CnIFXEWAEZMsvCbkbarJNGx3!A1zw7NBcPh88l2;29 z&$nb2UWfP&0=I1h>|CovQ?^u-TUU_B^uc_(_JGvtr$e8$MORnGYGRm|j{+z*p^*DNtGfnP(=3hkmCQ`|29hO#E){{lg2w^ft zu8BHh<+naH*adgyWQulP!aW>5@(oS$Iq4A=KVnHwBb8I(vZm$>M2Dw%3eerH*AEU; z56UXc@2lse{eMCgDWez72-D5+^GsMk#+14X(u{Ck_igKBB2*Xe?C9VUnCeQ2gMe4G z0&a6Y63yzXAQ+m~DDJRjAGI%q*mvPBji%wY5Ankk1TSO98`1JV}z+u^>$Mh>-p0&AcCGl*u-Rze-wrjD70QM)%zN+2pwG zaQjLkL#*KvNA|OgPrxJk@DYa!XVXiTelK!(R0$w&`cee1n32w~ATv<&xkffapz#{k zreD2C002GOsuT}Z)(g=Odw-}X!nGBK3qUzMHQiEi`63iR(DJnCg5_8j%XhJu8$R6= zlFxf_V14yj0#WCit1850T5WgOLtOY`^E)p9>z;D|++w)_EKv@+u;(x0pQ09P7S9K< z2nFV!E&>0UmEHes6_64?CG(-6KGY*UXRm9b`>wYN9eWf2t?875RGfG*6RY*$aO z%c&iae@Q|3DOB()5{1G%bQuKOD|WX7RQFWPBf(eMY*_eDv7Z!pKNGhTH)~F;%&A~#AKOvN|E71j9{^dbeqh_4BZ;-%xvO%{rB7@D6*k>` zzk;uTO(9Q2j~53OW~?0)+2@BOdS_I6$^JHM`Zq|06^5rqh0QX&>ewIjRac#+@CGYK zgAf1#oGLPE>vGo6$ zBK^ONP5#btqRwW3|26>5Nqza#8gRI$#jbwzKm%0B5U2sGA&tizq++8(YiCJ5%h|+` zg88Atf!bV@)xOdkRB;*@~gf2jJ_=NT(nngA|JoQ`oWSsKzuzlYB{`leK#dr=M z+oS#D+ii`ZKSV9wm&MsXhzvBZN`hL@JFB+!Aunk>4f~*B8L6L?`dVNaUv`GcXsr{J zcEq^~<4`Q{P04Y>uoYP)aKdoVXwhBE8|AR}lqI5PK+D5NW_N6eWlD8v*W7zBL&PTG zEaOrv64)luP8eYD%(*Hg*R_$)tb`_K7WfICgj39{(c%$op6a{wuE5cB6aL{^Y)Bx( zH6r^^&;XCSU|8pX*Wx4@l@kgTxnO_tz_1zr7%_;7`$u}p6M7QrHx|L+IaI^#^ntW! zS!VL?e(8uBC%s*~ArEefYXNieY9pOpXneFXgcd4%N=RJLd2nV%-HilgCX-mw8!%(0 z%04j1RO-;8@WWyxYp#&Xx4t3tsFG81#NtlRRjC1bg1*gx{1L}aIO>3%4UeFK0pukg zCC8nOS_VhuHE52j(fTlj*LKtHGwSP#L5F0uNV6d`u_Cca@9ILre`&rxe;1wGJj#rw zP~9D$!qM94bgW6r!ZDb_33OpWb=(jg9j>t53f^tAT$HS&CY z3Jk1!vUE1(&%ni0+AW0e+xxEkToJC?4}R|?GruV3BQiE|dZx4q1}1EwPARY2vddGY zGz|ydq4}1wwJaGp{^RoC!Dp-Cfb(&dHA@w)T^x+HN{2DcaGtFSaxZ$bJS)Qw{5K1k zjrBvPI3%pR(MIH_Pq=zXsFrPZ_4AH)_OTlIy>sMNf#>S8TynZCatv4tn2@U%XY&#f z_8m!U-~_P?7chQ&HfNPWhqxB6YpF(=90Gu!77ngj=Ipw7qge0{MF!XA*~m%_?Hd*) ziU(Do7Qtz4#A%Rx0B1}Fl-nBS)eNW=a0?ZYL=NSJ7YdP@I+5Bk;ebvV9kg@Q_ns^C zEL(X~r(C8=o?JCGkM%#qA<@H6-a4a#)<9 zw!CwtC-aWEw7HYwimTVQEfuZxhg95@jhCo?ucQ3coU7E0@BR;@aR7fW^Y zxW&*TYjMk|7f!9+p^9}Ijeu_71oM&dmI6w}#ut5P*vyezNHdCg8kjhsXwUi&=~H}q z|N2Ekb0EZI75x_7sjR>|YWcD(KV48!+PbcaQA@jKzn`$X}U~N*PG0ZK-Q8DpgSNc)7lo|LuxR~ zE0f$NBEv@~sB%G_C~=j8DzV@V`*D#RF#nTtud#vDYksEVY`xEB9u1 zypupT^{RIv@{P2f?rc6q|L45TmCWF7exu>d^KtokvGc1ZsIL3rFKLW*(hkh$4}8+; zKQ@#9nY-41v6TLwSytm;fMP_FkL55rb)bq+UI9W8M**j}eJa#!iA2!XMx`c1Qz_^$ zoNOHXsx3uc2-xT!n@(iGBtM0g+5t!Ld!Tjj_!? z3{oc@19wP46ga54$yPU|e@X%Zcj!MP1j$%U2e5NZq?qNH8_m<3HmC&i&`v}%bfxtJMzIDg8Ae@!{zCi zN^{i#o`Ra!aSceejshm zP~dxg6^ok@p<>O-lvg$FPzTjEH`=xoZq2uIu<_9%XD+yuoY*fnis!?!r%EG#)=Z|D z_A1hoX>0FRsF)s*H5~(|s<0K}(x2c|Co8dsx!d$pVuCquTdS4lC4AJuDBt!w)G)g0 zHu)_t4`TJvnQdM~tgkdx*UV|g&yiH=ZY8Dz@5?@*qz?`j*;mkQ6fRx%6Q645irk2z zVXLrH{p1IyFSM8wg-he;D&r&Nao{HTXuat8G(EGWnzDt(U~H|s*IacGf2t#nD&Xov zi+q*Tv;(zR=9hEv8`m1b)YS*IT1AnpDM%;ao$%Rz{}Ie@Hb$%9y(mnGpeaBM&Jy=N zCL({eUATvdunaHR_d1V>F!Ew|C-(B10l_kS4AAz~+b0K-e|Mn(kS#WzreQ@2Lr*%r)g3jGgBp{ykcY(?+LX^ zyxLRh4cJv8w7mkWnbE4IKUjAtz(IS`(F(ehe}S;dt$9-L#l3m**L_@A&mUR?RIHh- z8m5hAm7`i|SGgfssGDh5fg!r6C#ZtS)0tv~HLTfYo;ku6%-FQ>E<946F#t|z95(n{ z9=Tm#L>?f&!KiQ_4$y^1ZYMgZLd!@??L+q~2+vbe7{P%>PvZ)Ok@g8Y4V~RdzYi8f zTTN}brw?gEU(IIQi!OEC;1-xDxYlan2gs=Yc|YNf&TY_xt7!lEwR#CpKVa?b#eb_w ze(V&odyeg8Ex*m~9QjFLjRQ|(K2Llq;sD{jdkL;0+d$hPTJ3FGuP&(iT;r7gHtTn` z>8+gC7A{o>0+lPLeuvp3!B&M}m6GOtkE^1~ZSF=)d4poZg=YeRXR3`39~&me%3Ts> z0PXbj`$pnBXhQm}fvU1(GcB#XdXHy@Bk)XxHQu@^Ys_XMRj6IU4H>zpY+hgr(YhJ~ z=uT}E-6H@FC%HiqNGG|Gt7D{_Ks2pVClg2E`0&MMjzH2%(#SlU7Vc=zoW^m-5)y?u zP75(mc1lC2TwgJ7x&dUrZM(|x&H0WrQb>u+^nB`4ml0-GpU!gGgUp&3w<-HKCQ?hK zqs=l)XaFZ3NBm1mi0KqzM*9BFh{QfphrZFtSZ~A`N5E6nOjlCr?Kk7RHIco-Zx^H~ ziUGT%L}x5DRO@n{6ae102&&`!tl&!enIik5w$xok~{C)`Oh1 z$?t2DC|U2hDB0iu3=_BDjj)FqYnS}}wh%+%4F~J-#t)PI9udkWU9XT=J9i$*DZ)nR z*2!FH+QC^;XdxAn)JZ3NatsrzOc06m1}F-NxVT67nOUGc7;R~6Kb@?@65mMYXXl8b z_D>;Meq;&Tu1W>$x}EwT6vSCS1v;N!okD&e^gW|$}SzVE@*lN*Ei{Kg1t0l)Tmy{Lb z62sCo&LkV5Dpxie)XQqEpY57MGot7=?mELIBm-^8vG>l zdSH6tGPQZQ?lP6@a&hqb@BzMtNbkqWVegAWfN2k5fVq^ZCAXFJR19LsC+|y8O1;Vt zi8CDu|M7V{F`97zvXlB_l@|0>?2nvq$Zb&aS32-&*mMkLs_o)G$o1f-GtwaW$&7S* zZ^2lv8oy@zf!;~Ht@Fo5_$SA5#3@)$h2DZ7j&)>5)m}VUdlDug_1XwCFdncP8s@9| zuS*!{kji2jfi&c3IFNi&bjyQ@L64{L=t2Yfj*yR^e7|a9_(r=yehVK~g!Bb!qWi|4 z!sq0Vl7lj)O|7FYugdx+MA%Q4+qKi3M%AGdscBq+R@N#y)ThAml_Hd~0= z6-JiI_T|mR6*D4r=nOY@;Ia$RN96{yO9%{w7_MVQeh?SkVeWIMx;mRAyN^mYpAJ;k zr4wr2(Iy}(Y|D#rP!aP4Y(yDE{F+lrvhK*RZ{GD} zhl*7gz8`QXY{pXA#_*-e$2RScc39#aoOEw|ZX&2IG`KY``(=#pfgr+gr&}B-_hSBW zk=TVVMLYhvzUzE3*)(WNnxr>MF*gRULfXLnP1fQFoN@#Jya+K%#kc3JSf{oT$tUE6 zlE_d=Ecw0y6PzZa6G7s8b7I!IZV$$$XXi2|oQYGS(0RK<*wkhn$5gt~3`eXm3}52G zo&{f4xXxUuFHgX5{Me{Gp>~M9UunSHrrJz%7tMCZ$`m)F%b)j_ z(+>c(bvAQa?EKTjhRd^hvG1WajIL%s@5-;||FW|-<+Xg6$=m#T#h`OsoH28TaJlpS zQmjEV?yhtzk4R|`CGS_96hdFyBzKgT*7%sQAZC)*IMH`wqbEFH@v}CoHp6PbmG06| zS~bBmpf_Yq8VruTo?Q+1XSfn!tfpgD(dCCowM9TE{;ith?Q~E}(26KrH!NuwW)UpZ zMkt{N3G%HbamPUzEmG_0&JuSIl9e4%>EZ+P%#!lpz9U9HZGVD5^lN=wbyGqf)e*vT zkjivV7#s@^^_Ih@V4aMBfpXCS>mw@H1*`Eb+*t2>c9KWjVeHG-@&%T61Qor7RgX#%R zq0HU%?z}L9-n3#iaK30(EV-DKR2ZXft$g_F`kG{*{!R4HiR&LbkbgIENjf-K*qX@$ z9LYri_9kYwfR9E*6kuy>3^1|z`y?A9fEXl%9&!kFLlt@rpJ~}t*FZI+h0XT@ZHuhu z4r9Zg9SVJ=B+7-w!g_$s`83!Ldbr5>FJ-+KEcYvCEuVBb1S7e)0GMQAtD~(EhMtrDuZdVpiNez z_@(1}*&&F5S*7oLyU<5%#K+mV;H0@Y>((5u!-zTxq ztA&FpF-Bd$8blI}=V@isKge!?Q`VL~7!<`b-r*TXgVh~~1jTuksbpD6h?0s|rLcY* z%#BET47VV^TYCyEa2`gR5`mgf(*l1zW*8yhRPy#lzlmva?@-Q=c*(jVFE$P9M*Csy z6PlC_t2-s%`1?|_0I-VEdbWfQ;8)RF8{?|N|-^BEY`}5j%G@9ai-rZ3SsDf_+QJ-Tv zUG@djS+1|vTNNWLR^Ho7)7ck^c;v(rQLS}K6xDmzOm0iSG@7hAVYZW&BFQ+{*f+m2 zCwXDQ`f79@K;k=`gM&6HWWE3h?dhx^2UdLgoG$S}n$(0`Ov=AQu`mf+ZGu}b$UOXz zJ@x}_cI-4ZQdvfvMyBD-#!9xwmILhX)s1@13s% zy&SFQPa>c+TugR)YtOtL8-y)Ot;H)PPz!GN+?5pQ5!Zj3m^aTvt1pFI=Smp0s2=Z7JOaS4k9PR8o&^B)03@)D9W07&D?%qc(=0Q`F3?r27-#s=%I2Ms{HH^+bm$iYQ$hI9%<;q6Y;{2zsV^h+G+w(;!aTTnmvutpGtIL zZk!iLK19QQXUTqI%hjbB);KbvU+^d2DC2GFuS9M7t>i*?+7BQ8>lTn61{2Y+nmuGh zFetSAl5xd*@5e~rx@B2gCIt=a$Q_qvlEJbtUV?jj!_+7{KeUGBZt$n^5s#8FP&Edt&n9GbStSwU zITKzJZ<*0v#-Lul(5MF1WzJP>fdLe1ZnsAl22()Avqe8*Jo1)yZG!Es`(!itfm3C@ zAr+X2dEd|jo;vKMT8`kG1X4wSiZ=@vUe%?4*nCoIWa{QTm1u;eOrgq-x&h(r{PE}3cs%So%Cz+5*cjz^U zm46d-H3|!I(qz0rNJ#VVEvCVQAl=2c+tAN56Yub-S>-(@$kRM8b3H3M^;#!=&Gtu7 z7Na9jL~@wnYKaNdFUl?S;l|5t=9ipeD?=(gzc&}dl?*Bhw5?9->W$DRmqY{g48xh4{!(m<8}z$ZgyITn0r5}*l9G-;Lyz9B2VMY?%9V1zB(lzY&K#dpw=7ZM@^J&`+8 z0-Og;(e} zXVyCG_-zL)68w<0A*J2Ds$_8@wb6Frs&TG1v)X}!Gx?m?tzwry@jk{|c5*D$b~TXx z^EhH^+e4-U1Mo5JjAIv5u-8qESir2M(phmK&C1@A<5+{BZL>7S%v=)^(TrAKT^~&s zQX}HLA+Psh$jD=A1~EI;jpH+a=_2BOB>7LrwVp0aZk=ChW1%_4`QS_!QrhOnF?K~n z>R+JO9x2lws%-2QEJvqV?o&;)+j--czAc!QA>cG|MVGpYVSbw{C|$D&eXr~8W?jsY zP=#6yvgoKcb~t*_po+>M_!3SZheh!7QyQd%Y&!|$c)iLjU6burT6gdGw8Ox|_z{nw zJ(}t=IN5_d(D7c&$l0;xCHvCjYtRC<*m*?nol+?5{+EM~vnoPe1rqt?xt|o_`O#}^ zH{zX+U8&3QSKUQtUC3Cvt(MBfez=*@6_ zv&9W6{j|f;&MTrC;)S-N2W|d9vAbZa;L7{}e*B@SVm>8)W`)beQV(6<<_q0H=FRwy zC+MT;Op};RJW9PHorr(2opjC~+Ff9LiJ20R)fL%*(jjr}1=mvFLwb*dYMYBz#KqEW zM)`Y?@j82VpnN8#2VlFqeaTHf-B-#K|BTZ?$COa1(k~hiibDO29@#2_iM^MA{WB}y zHv5uz_=lab1Cw;7=8F8;3axXrg*ka9@mL_L?mmS6P?vD@oBq&-aI~NP$I@o+mT^zG z=BZ2hdbI3m)c%WX$liYBTyTTXI|Y0_2KjG@Kf_ivR0qrGW9DD`$C>}%8C$EmIXXHx zyZ%3Vg(i)^WrXxFQ!$Vs2l0Zai>cvY3ouc{kc;#_bs`hFwi9s5KFqqNLA{C!W|f6g zJ_94Z{O~l_WrRw@L?b%LKF+@M{RkDFw_m4YTz|ZImKf>v6$K5$mY~bgc@`K+2+Qkq40&O|uBy%F$%aNo(P}eE&oGMXg#zK+%ET-P${oc) z$fzoJGBc$Bwcq%IZZ!5b*rF}KFez)#5Pt+T?CC3X5H6;ZA_&#qQcD5}B-F`g<{4}6 zoofY`(~*&FVdgq_eLr3@Mld$5x>(N4iJ;4m+RW@loCuF`eQ^k1bv<7VF=c+wLRNdD zQJaz64E@3ha)H=^dTyP^6J}*C5P!%Xv&*rd9ttJHrWRW3Ub(#&-|-AgUuG8LtmWqt zbG;yYy|-N)gY@<%9(QFOmJjEH|x-& zY98*Zj_CX}!kP-(L{yfaL?tQmz*W4WS?JIdP02DY1`L;B%!&5*6}_IvopRYYsQx}x zx)h>3S)p6ZUmnJ=1S^3}JKPm*G+m;vxj$rg@zQT$`O8NR_>kxjzG=eKGJ16rpicpc zN}SIKFs;_FmrH{_&6~~{zH7LH1lYZ2 zaD1&_R^<`v>~v&Pe?REPRg3TRgi|?N;9tIIkOS}5{n@>TS+4{~OJ1}YT;92Irdnl^ zZ8|UC5B||=#acohtAXV+MCY*8m$Vspr#bFW*I|55onlS9WOZ35IVQU zjRoSHFYOl5%@1zaQoW35%aFK7A58RSiAGNfepcd0wgMTH#Be0<7@^Fm4X9Ct-^=AE zVqah~&|1Ujif&XE2S9NQ;!67e6@%D-*b3s07zF)e4E_U;%7`t8=QTIrTXnPoL^ zN<%KPZ2h2Ra(P7ug~`hR!qwa_0X^@ZYJnUOaq!Dfe13=SM;cegOWhC9@C-I4#*2H}>5e=_^AI4^Iij8M}$HNn%xTMjyfZn4CQL$ee9Pl|DeFN^p%hp;gr)c!aRUzS5W$I>sdW`h)H*9$4MVc<_t+wlO&7MzJ!4b&Q%~J7x8PM= z<>1NU@ch7#oJ^!jLJJ^iQ|MuIrZ^#&$|6^M0VCG#f;mbq?Fi!AZ&NH~r91*3Uj?hw zdBdaZ`NQg!7PBE8>O2!)0L$8tMf*$0%JAK%2d;p;t8S;S-wn~BwijaI6o*gSrd9KYyj|mm|CSYa^h#{{#K~V*=#* zM}pFSz7gR5yDwAKmjxF_7x3WVvXgyjL}Fv0TZ=4i$)oNk{ZyPANr>e!H|R#09pkU5 zBnJ8R)nCnZ$rrXV6gQpEFwBL~g8Pz)$>9%oqZ8^At;M>6!Xgv(VI5Sb=unEBASklX zPZE;MA<=>Kl>Mw$MubsNsqt(|L(zcW8nIA+7{ypDrn5+JQ#Gj^^bWp8VczZ zKiO+8cNag1Y+nl*4RDQ?vHO1KpQ-E+mgW7#OM$K42ad6&@k2eN@Jow~ zR@@ORz@8X^%VTnm5^p5zHjl%bye22leCSYRd&Pk99x_4tvUHWyMWTR7t{TDN1dU;h(`!zV!Nj zbL{u+y`n?a{CHEqL=1$b0m5J6PKsfp(V`!Mi6!~=IXFfTs1#21iQ-ZxfG1K1)st89-Im{jd;YcliyIQ7>Z}zTC$w^lntvypI&PTpA z$RNfPScH>mE+#6YpeiL*D0?deg1@klGEoE3Q*w0nsv^`}ivs)p$Ot#AV-BK*`6hJNprJ0E}A zxD|1h81bO^; z7C|=L;j0Lg;6c_#!fFdYJ!6y|pnA+UlS)*ew4SP5=R$A4ry#0cG}HPn|!>QDqr{*JdK&3zwIMXN4Z6#la68E zTS9)I{1}&Fn~F!6DXiUVQy=8Wx^xIv8Dtgz6>~VH-fDK6{YGW8RctjO4)(L~Yb1PE znz;ZtFm{6|pB+9}8Fqwhml|mfYX|=sy}7&l^f{I6ceOzv$%R_LC-1Tsb|uLQ$%-># zcI%WXvT!9LFc2H=FtfOmH6wd9+_Pb#2H{Lu*y71(3q_ox0FU!$1|IM5)cs|WYQjIj z6k$z55|7+(SZ>P2IH|tu4$&N_nPhW+A6CzRn}?uq=lKOTu@z6@y5>=2wRi(lReFKj zRx#YF4lP=skY}H;BoXU)i%r1NDcRr@RPsR&2;e{rugO54Eh2t1?j-{4Z7;G|_c`fA zsY>iN;@0F^KmWBm-c3uIUHKqx-a-G`k5D2FK^~IWD}fn{t(#SsoO)AnWCCm* zZ+u%PS~%9%wbY4c@Uosdx_G|evAEpSuc~=}ereeP)BBnuA`NN>`rvZ1+gf{;0c1gB z2wTN7VP0mKv)H}1P%z`vw@y&frfmB!)WPTqX7NK|!PAa98EikY)g?5|6*96}50kak zhLjFES+Te;w%N?8X>K8hX&Ie;qt@^r>xQoX5RV;h?W>E)!spZ4@eHcr&Na>u-G&`z z?A~Ecq1i(X3$4JPx`L4u&k)cv=B}Dbk<(_QRnaI0Xw)8nlFbzcA=s_E4 zrCZ#K$o(8t7-6>3XF`vpypaVl#xf?nW!3pb0fio z4ieEn72!SzjB9dANCfn`CxlXXZ6|N|jz3ywT$^N0_jM4)8_+inoWF`tm@-!NNhT^CB3yF>%Q&6 zLC%W)?CD0_DE|4Za?L%YAAze*ObL>kFM&y%-7ERl7Y=u?339v*un1~qeU_^t;?C7? z*c=R20N-qrf@`Y327l~m(Kj{^+yKMiM%?%G>v?CSDqyoQ$yN|01p#8#=+PFpxZ zWytQz3tJ6LV=urLt%@bZD)QQX78TDlP|aC@nDW?2Q)@v`nt)_BRm%|TDpV^`rV!8V zxU&nM#2DpUn?RJQuqRaj^LNswr0*|KRL`Tp%hoToa<#*vl zE1cr6dN?`G$-KE`x}|;=`c)uE`CC`mnBZC-twyoY2}4I>3vSb>FJ=!CNxzX$Q>p7er{DWd zW9E{N&inKqn|=}$r}0bw1BiI&5r`0l?`#|Lzjy(*! zFS9(hIxZESpNF@4enaJ<@t`n;dnymek{V!KXNE6{carSNqc}u(>JD&`cHbAEo_1at zF@U^*(Ab2g%e~WsSI8g`d=@q#;K=;wTDaFlFnI@t=to@!08TU-P=Q2xVX}Ngc8d$7 z1{K1`vDun@u>OW?gY&-uus~mt4E)EVUi_}|m%^;i?u7esVW3&)g@Z`|;9=x)yF4(e z%fopx=|im{Ab3eFPr{OrG#1hwYL{W`Shj2 z9C+y`Tt(?8L`9h=LTQ*USFn@yzwkj`Ksfj>BosTean&s2MruM{p6YR-EMQ~(70t9O zMb*WL2_dN*3zaxC>SVJuxT~$XN->OJrz1(ztO+Rcc+wRKL4M>WVyr)~15?%J63P;l z-OR$wi^h{vi-%wDmch(KB8pPZq>3cxX3P8eDG1S#KR>pPfa+*~-M6+GP z(j8?0z_R-5a&wpamsU;QuF7dab=Ya4yUbJR@KfIvlJ`g&#!!YP)Ocs@GQDX9?aMpV z8f^MbiQb52lets2C)6@gR`REDN;`}@ALVzvoX?}$9!GoU(=*Q&-OM5nE)bY(_lh-8 zzXcF3P@(58Su}qU^OH`$z zWSIxgat2r)6S|bE6{CZ*%z4a`=$-w=7p*cxBbj|WRHYn5GMdMFR!T}$i2!5CSm#lG zccU^Z1IjKy7@o7XQjOFou}Ev zvNS`JHjyW6pCMe;X^QDFnWtdiWZZRDV??9I6D+Y}XqF&fZ`cUszj9dz1-5e81SPz3 z*#I?B-?NGv!WbOzsWVEL&kaI6(0Bo39zMme@!l}L_MUh{VT?wjfw5&K@?t^}yz@{_ z#X(Vp#!&QJT(>)Xqj}wQj4<)kysmQlX=Op#aKCl`#FExo&)w}Q3SU!?AdpmYbpeIm z*;J2ULOiyzf^47rQ#Wue7L(WBeSVYQo_Be*e`nfnnG}_!jb^-PK-S`1iVcHPZ-D$Ah2fPWG2xLaesBtGl%7Brc47Bz?00;otM>i0Jz@ zdOwYXe~+u%Gmd;~{gK~!Rvd7LuKODfMG1T@g(s}_okW4 z0GLFqn2vfROwh!D{N|rHv#G)5*H3Z2Jyx^N~cJog$38 zg#N}T@6G00$o#Nu-@wAY2R+}IWd`I0 z!(=O!hexnN@4|EZ5!VuP9gCEw*%q+zZg{)wP7##3mX|yp^)#ku^chl>X^(?TEEu#l zoip7mY>qfnJ<8}^AnR7>9+)5ak<6xOkAia#wHnM6<=|>kOW%KLSCO7NpYqO?=*ub+ znYZoRVOVCB@@n7E>$Y3jSK_u2_{*?RL^e}RGG+9)+~H_0;lQP8%{L6y>p!qMR|{F} z6n)b$pu~1LbGDk(;U6oWH*fc7&d6~+9$D<>ijTuSUY%gCZOW?h&Y4i%Sg{!j%EyAw zSSmfnHv9ekMvoO=6+L=oTM8GN-pb1YT?}}ht(0e0gg)um=cvC!%ia9O^imR%s->PmMHS=jd;MKyf#-qis=Q=;oboWEh6DaZ82`PQ zf#+|Ufnu$3sU@}|>Ar$y@)E%0%NSrQJCjrIMzcC^G?lFX9^Xe>*u_nM0kQ?At=VkR zAUm%T-?+TF(=>UbiTH!lfMwM-oH{oY^cgMv!54I(vZDJQOWjS^DNJQ}(BFDgFcWBz z!P|I^)Y4Nxb93S1)SwYF3gjI1N_^Jp5S zik({otbsxattUsDdFhoF$}&OGj08y=UtN%XggX1g^lp=+rQeY%8Nc|ad4oi`bD7u3 zMcCNNh^2Rl;F}LlV1yQ=15mko@2%H07GGRSL77&6rN|-CH>d?e?ltHjs=_k&SikT3 zi%Nb&YLDYramcXTZHDJw-&dTfWaB+KYe;CK{7@JqYLV>n7AypRIb64(^c*#|Y8_e9 zHj%Z$Pf2l3cYt_21Oc#1e6vNVdZq+9WmF$gbJlz8uop66f)_kq+|?6aQZ<=x(=*e$ z!mM`^4GZSVYrfWy!y<$+hF}f>N(rrs(g_V0wYDA=VJ^gFtr8ahi?p{4ibKu1g%d2e z6KLGs-QC?Cg1fsD+}+(>f;$9vcXtgQ+`m3&=AHA_tvhGt)>qYC)j#2p{j9zAUTZt( zRrT8jR$o~4{swdkZ{pS2EEtf4F5uSLEE?P)TFMQ#=|m(EE_TH_+a@Shst6p#I|X*U zsOV~STN-(rmQI0V;%*+DIx;K6eA@EU>@D<+T3+m;dhs{U5P0DppPk zDEb`OB9<{UY%qUA&{a+(#{D{lM#tlZ#C_tOQAt2DlI(PHq*$ZO9cs##$WFsUF^ikb z_HxhGclPq^^YO_phzQ-2_Ff0Oh25%0bPTlTX1Y5#hSdv?>-c$jfOUsE@&Z{WT>7+9 zUQpG%>PFe4vuWzbi^k6=nl*(9$0wvrJ!0S8ok&R>bc47OC zTWj58L+yZU_X5M#ku2iW_F#&wnNM$eulwh(IyhFeBk)wUoYz#DM*~bgfA$5z7>$R1 z2J(d)!0*5B3*!F|i~Fynhgi<$AF5DcV4IM%xucV@jj_W&ms@ts0z?3@axy*Z5mMm_ z1z8-P(QUzyP(XbpV7qeH~=2 zwrs9cDz~YYn&e(4MT1dA#~OwCD85uRA$t)_tAX#d&wCvKZ1SSTho&7QC*ol18`Bnd zh84O6j!y4f(d5H7?*TM@7nO_a*SMYR7;2a%(L+4X&Z<4v>Lg>AzjF|MXP!>4eHFDB zj@n?Mn^6^3nclX$pIX0AyOlU`^oZuCAxGDxTW_5)*VRVTfm7nas65#0J+(>%LI)}K z2lUypjxo#gUGWBu?r<^AdKhqmNL9O|T99CP?$%hCgaTIE+{IQFr;nD~;?mSx9|?l? zNw8R;a26j@9a-JM(`b^cQed-B20xs?J*DydgsLPtZ59%INWA27GzU`eSqy4rFR9h5 zYfuw0>cZm9f$o+1=>q-gJk$a9M~xu>oeFA z{KBg$x(p<U2rQ>^boRvc#R>drNXdK&_B1K5?5b= zbLvBTj=i(rzUu`^$RT%7RT*Pa#u+mbVNdbK^ZVEEr8)F=;wugf}1>iaySCWntnjt zgUVk~-y`%LQKgD4)7e37Nn0W-JsT&lu)3EI*v?FTq=j*c!A>sFJfQrs7niI&6b!(< zhzGK?|2{_jr<%sUF5Ew^TcakF7wQ7w<0mn_2_pfNsVvAoJ{eWGKUfeVVRbMu+-J=4 z*^vt)jpZx}S2oD|ng{($P0xbP69JkA!a<;p&-`4cvAOfoV*z({?Eb~%TV2B0#Tl4^ z&(GJN9c)`4ADs_}I9qEIZ&T~eY~LGuQ{*6E{Rv_Sa`O0lzM;M<_54JA)#~v@eO2pW zf_^W7Bo`znltX$7CztQ%78zFy%n!XmRVam2K@tg{MpdW`1rH}z5H2GeMXi-bia@PZ zN0LIV%|{GkAGZ?@@;_D1{Gt>To*PbxEuTkFnUC?JLd`EO0wt=PNSK=s8yqePTT$98 zfVL1?svd2rGB2oB3o@lvi>!cFVHXw7d8VWgQxPE#8UYk!g2OTdvkUp_NA4i@-NDis zxgqsM0CaopK>MTsx`S5^!D{p!@jEK8KTO=<`YZvuLv}=cr-04wE74#!hK{ry8dzIn zw~XKryTqM0SUjUg#6B?~=i?Q;LmLbgJjLLZ4Rn9<#JDhi1nE=5xG;RI4#wNT!NlzW zz{TuZV&e8Kv2aJ*n!AB)EnX4xmhb#{Ob!0I1N`oJV!r$3n7ctESh}Tak|ghXr>h4y zTjpc4ndkfGA+uTLLtoAavusv`VXo(g9l$oiQb{OR_6DSv_K`6w#L!vhe{QzOM?x?& zVByUTBlVI*nRqND)x5HoY1r*cH|w)bH#1FPVW*7Un)hmr^6^VAKE&OC9jvsQMz00& zAOxC);690k@PqOos4ILMt`kJ+V>`hNAN1B|((jk%*~KFGnSAD>;LUt-8l&+g@;mCp zK?haGoH%i>3AyYf4o7B5`p%Y(=h?JaGXROGkPOzq_V>7K<5lHx87tTEslzmI(0J%$ z+ifY*+)I_4dNe|3`UdL-8oAkT$Gj%^M97W7p4=vzg z!%bx?Ol4fJM+R=kj?Pft=0aDQ#k- zBU}4PmuzB{Jo-##I!l0gu@jNyTiGACyi6-6)o(y!YLDLQKz+$5>rEELsN?WJ&@Uw; zZn$B*3G`Wf5!HzI>L%nmhGSOD24AAo+xibzB&{M&^30(>$3W|v>K?M?7_v-ohL3@9 zupi~EA1c^Q78qyRIP&>um>NfK99Ie&XLk@yDHb+xba~2x$dKl8Rn@BFyNf@r2Qkq* zoaNfM7lc@oiR9pVq>DyZO|d*>qVWmckGxuLJdNBsdX8f<1$c)b<~dGb9*+fQIamoSL?#-P9XP&p7ArEO~QN{_xADsp5AB02p) zBGjKtwT3*Dk9@30>#OZ0UbE+FUzM8gvFlHLTMc#DU*9mL%Sl^|bF3KUKxJ&_%f*}Z zM&dm1_U`MzQjnT0e-vy>d0Uyjb9yhX0my2T*3k3Bkd)9u)5x!jyh$FL7&PMo3hI_+ zfBN{Kf#lVw7GKngM+!q3)s0CEF@BvkVC$7m}f z3Uf(^?q_gJZW1Ptiq0Y#OCC?%?UftBsq9m3Pu=~M8w21k9#0#@WxFOV>nx`l!^6Ghvh>Lw|WR9Q~X2{`j z0Yy!T%RzmfG*qjG*o=gAq*k03K;xp}eQ+ubmo76}t}Rmu_KOl{<%MzOkaVm@co`gxB6}hRAtf=P#BDp&p;0 zDX(B&F+lkCFZoAQw^O1WaFcuw$d8nsmZBX#C;48GPxT4DgG{`?P;g5(MSJ1)rVQ_W zQ7&&{@taMaTV9^^AXD9nNLMmr58I#0xwbjc5LJ!MT5{mRlwC#`dmLkbY6(m46^wYg zW+zAIo?-G+5vnSw-NDUJheW%vR^_l69na6)Z>p>ex2in1sZ4roFnS6d_(rD2P;m#( z996)EFhp)@Y=h+}x4LhTNIK#+8`VKV_Ebo0Tf8LC-{c&>?gA0c9-I%Q%;8U>0faGf+Fqwe2C2iWDUW3KR>tJ!euE%q1!Z*8}yWvZ9baL!27)7`yX?3W$$=9VDcaSjZe#4EPO0|9U z#gkb5ZPnwk?$2U!zCMYaRnb3@wx_exl(D!M5x*dV1v;d)<`K;5WDsu89b&lJnZ-XN z4+GUOJlYUEpQj+Hx~HS~n^CiPJ@%`j8Mjcq9ms;vh^P*QS);BSbkwVv$&Ce>E3HD1 zE9brZVtG1$()?BZAUM-VQ3FW){zA(}k!?V9SDDLJx^a=zR=Ryi#J)|4Q5a3DsA`*d zlRR0S)P=n`Z4JqqaZ!X3)rC`>SG7>xa}DQk(G%5h4HE2Um6b4iui{3nzh!aBaRZ{kCe1YL42P%B&U zRroJrbq7Wt{4NYDTd_K#_YX!X@ozXQgv7qe=2C?^_|~-z=?%uS$)pqi$p4k3Z99vB zwolije+U0W{vT3Q2^$kzHFFyyTUQ|~b3@DjBTtQD0BXDtMLx*=bAyua)6Mi*7r%Z* z4F)qPxr3(qoUGG}+?nyG%B!Y<{(aY&@rLo^sg3WG6}`hYI|ip6)TuGXX?&4pi6VV< zyrwCXlvJOjZsT-VEcLE4!LRdQ;uv2f!&Xz)G4vtp1EA+cau}12GwAADAerVuRSBql zcs70Sk$yn7|Lk~*DVCW0kttEF=)!(PXalMAR<#z0`+O|;wI^Uf2BYD2dIPfQyz5Vr zgaWMjpboeMB!8Qfa{RZ8^nbG(Nm4!igG>I5}bYzUN*RB{iGdMCK zbVp0~^pIT~u+1K^k6uXHFOms*z&m{h5Ns3d6Z{$6C)0#|%r1I|TPSgd@ek_}ST%qs zU>DX98WlJ&xrBd!0zAq6SpV3#C4Uzp+te+Lpo}oc9t{RK7?hf@!T@{;!ztK3I53>; z8l=yX(x%P>#gURV)p}b6&6S~IS4XE(G)!Xnab&cnQ||0E*%EdnhGf%5aM=zU_}%FT^D@kq_fRz?i%^1Px=h8p zT((zJHjdQpq`CXXOw1KKxlVrOUbli9ZW8Pm(0>ixtW-P-W#VUb_)( z3pow_iY7VnDtt{YBFUjR&NQgi6ob5`mRA@3RfX_H>Y_3(e|FRKS$owiW;OUiomE9i zxg@@qByg;R2bH?2=Ot+iZQWBAfitOx@O^+aTF}!|$z=2d9WlVDfrpUNjvW&(3llS| z&Bxq~krN3kBYZ#%eE+zAdRy7czY9x&GYBL}L2`9Q##B>|4saHGNdTU=p=?-ezC6>A zJ%Op=2Sb8)x`Bf<{g7P~;9A?<(Dg8fIkY<#EK`qC<-uuPg%P%BWwBw#GA^9+-IpsF|KN=>ZW6q72Tsp@&^+t;dx^JrRa$dgiJNd6 zjajew!xUzbSxRD=q=wOHQg{~c5WbOC(F$l~>%A)k8*y&CJ^yL|Kivxb3i}GRM!Z$h z8T<-Qo$YWJ*$YEI(ytfCWjhUis;M4Yc{%uzj%s(uRFY?=W2L*x(&J>u7Dc<81A6(~ zckD^@(s&_LKh^zd#as(`XK>B5fUP3u)}QU`M|@=xb+)WXn?uXibdQwt68*N_%{@kT)Q{-*42RY?D7>fpb4gFm@VJ84@R)Bo$M zQ48J6k0@-)LP{F0{sa!KIjmo$1C1m*yOJ|vPpo?(Nc(92)#p1N38~B1a4p!ej+LyT z8<#INJ>>j|dKmb`l_}hfBua~vG->o2);E!5v$cxKRm;*AgCc!VtJSiB*F6{-Lz?Vl zIQq${1*I)4l#A{jJFS*RV^9&_zCGCfYT$c-{kJd1f6s8S{11&OBL`dv?>SXUd2kVh zegwow$n?PgGRQE3;M7F7n@xVDa^sZgcLtQOnE<|SJmXA4bd-5gtGfF3dfTmW*-bC6 zu1?SvVU;1jXdxUiPD##D2{UoAL2&^A$|$r-z%YR!ehd$2J2?jXV6h)`9ay7_i(E^! zhBpVJ4u#GZgEd2{xUF7WK{xiwUiaDLE03pkCyEsf#d`GR9UcuGB+ia>I?@n5shH!F zJi2cP=7`^3Mlz0OZ`KY9jhvf)My~T?cx)?@_cw@aJ5O2mL{JcCsKKi3PdHofAY^(e zB4%_cR6EQjGLTOL*qI?R<2OXsVs@6QZ0DZpI2?xY-<5-)jci33F6*neGNr!=9f|J>I}8BcEv!70{Es2V0aL--k%u8UKKhm|(c4>+BW^8xh-Z#dmvD^mgdzX5-H!vB-z`LFxWNX+oh zQU-9uD6#-*Fi?~a>V)*mRY0psT~A<06-9=AQ_oNu-`axt+MzAdDPsfBYlHO>wR?rpbW0(M+`tHYY_ zRM$={2rwx(!v+*F*pd!BsaSP%AVgPe<2^LA6BIK~-^)%1nGqFiCA?yBeC z;;x^2*{UPC3q)LZ8w~aC`1Ay8D?m`ns$!}!--#^lsx3hn=uNh%7=peCkaOdd#U*#e z?xbq}Ons$?a5eGw!w%kEc=VQougEwrtj$?$|MFWL`r9wRNRW@&km&Qel`DOqThI2mVM(K#A-otZ zg?Acu^<>$8z55tg!&BEX&wLzuspEl>6Re~u0!Cjv2Ns-bsimXdc8z3F3)APi`ONv- zuNzb?BHz?TDyAL7t!B)#^=8bo@GmoWXBl>Tt}xiha`CAls3uMKGrsBhip=zqp?Yk^ zd2exw>>M%V@qaF=Z6t@mmsw(2C;1`$v*g;9TAEr6VnO=iPZ7mM9gXol@HoZ%ZCT(y zJt^ikPR0&4`c`xjf9Z6DjjfDLfz88z&3?&B-cni<1)8Xa7>{9m4hAE?RhuoW>K>$& zNkA6L00XVU3@Edg$hb|3MNkQgW2`GS-+Iouo%vy2?3}<$Z0mjuY#^?-B4bGH*-qPN zUu)lZGqYv+{qy7P2DKYxowy0uv|&}ctbAP*UKehShKBa7Y+1oxYG8@7OW}G0AL9A~ zU(wAJ5tFtMv5&ffLlvN^p?XsZtBO~nDNf)QLE-R1A4JfR(@TGgDr)Bg2|5f%5dFYh zxorpso?6*8T@&09objkF1chhb5@oEKWA=!f!t&Z3;@eLG_x1APcU^b|Ch=F6vz=gw zFH)F3y(J(F-ixTI^QIBWYH(i77LU$-+V-90u*qPgZEQ`I-N`I<-w4~!FR`L8xme7d zqS;@Z4Y%6lMt_W^*X}KDY@}054c&DXk*`F5&(GjCa;g_Q#wB&UZ|YX*MBk1>tVSR0 zuD2M(Ez0_JE(N=Ei~IEKUYC#dl_$jDM-FRm&#LqtG%8wo;lp(znLjV*?#|p>lA9pi zW}{D2WcmTepbJLJnZ#L`@sgv^FQ!I$-F5|vq?2bDR9*f`=)y&x+Jm=PXnFK$>8S*P zJd=gf_+(R0wtc~^{UCnLyeZxYvd-v~>Rx0FK3GC}m*YAx6W!XRgD$*L^eM8~hF>^a zBE2Jxb`I7l*gN|eWJ?s5lk3p0?XxDADjEsVXo?Gyc%A?d^k^Q(84CeyjRbTtPr-e; z(^2;nxy$hjkDp6)dYLs!&%cj_s>oPCWp+)XAdABiZZD5mDsQBTOHEKCmKxCdhlX2oHTY_Ld_r6d)6ICqqp|@*< zp{~2Jdpz>R4{MZsG;LBD!ZVqM>YYczbcoQ>^=fBW^;%0V#PQY{`||-YVA~emTX&C` zN}X_wa)NY(m*3Fh!nT7Y({w!)45Th(X_xY=z|J9GE6^b@DWjFmp!itD(g(oz`jO0B+0lqMkM$n8AM4c+vJG& zsBp&Lq3juMj`e;m%lnCGtO2tc(o|E2T97GFAjDKN%TZT=3DaXax%k!XVqkqf9&GgE z`)I zRiPu;t-3L}~_q0{OL|IW`w}+juXO7|vM>&p8_t8L2!q{GEERQ1C>T1Zk;! zsUOkXxRzG0OS4^W@yq8V3(LYq(d>sZ6a(*LpNe-?0-4RKDP%^HH(18c@4lGgvIJRg z#ipP#CKhzuzh(y_Lih+kBx#WbqvQbr9cYr>i>c$zAp`BBLZ3YiJEG#6Qc02RSl8a{ zTvKX)6A^Q@5p-?xS<1C+bi^dQ}#V|K==;u#`g+?x3 zYpj=>k4OCzucpuX0QMJw>~rKxhu0j#x-SDzihjLdE5Suj4v>>z9K*32uqz|6Z?GJr z%3Fa0_Ptw-YkkoU+#8bBS8#vqJINg#%pX#$&c6j_e^a*n*OuG<^(aLBF%3^1@g07x zXhShp$Ht!xar&YP?FZyB=&?|ONGP(57nf5^hTubDLsZJQ{tDtYUEJG=FTRQPlXVe@ zi~I?#nQ2cZlbIv84>^~7pQyLvKC6joh>3`)4AJ1gaN3-<6zti+bBf9s(HAeb7@&m9 zP_i2Lc9WoRM8f7Gpwo=+l?Ne*f4$fV5Bl<}rF2M}{K@k~;5m-UFI-!EHb z;j?IqBDVnHr)+jrB%2d=B1R0|N)WQP}f5?R2zp=plnpGFD+!LT5~&#1i^Zd~EwgVZdTzuSkGH=i8vi;T&_2(q6!ds2_jBgAzvbU9rdNkVPAA()^jr7XZ zMw%F#A$j|;qj@UjX}07>*X67JBFyRpt3y}ui#*a6dw*Mo%o~IA!v%& ze6GLrtyX0%s1)Ct4Sj>sA58}h%(u| z9AMJr332H2;pGLwF5K6j9A=H;41-xIY?Wa=5FG6vK#2XtSQ*=jxGqe^f79wtv6E~* zJxkSu8;JxFq-7LMRMaj5@eqFyG|645>_&^Z=8aCDYs@ca%(C_dBM zf9_jsHZ0ysJDWVw4%IOyKgsRemS`vvFF^0`|O%@V*ndL{72Vf>Pb`L(t$t!5Crbp?Ac(j@I?@ZI>& zjHiloy2LfxVZI*bV)A1pjMXuNDY`%6#Ii7+H8C(wRQ+w5^54V>=l>Nal>R49G)hsl zwXcKO;-j~tYhKfa6C>kcsxep)U!PC&%nLqX&#KP+5hucT1G=8JV;Cnj)CX#ynA6hc zY`fA%#xrkDADS;e9nyd6t_%wgD-TPDS_(AXEf3>BS@Klq&JDs2Zp57VRjF#InN>d> z;m3Qc*MQ&-yOP>3f(2i_T)Nj0h1H_BS3GEA?u?aUwccZl<;pNgf2NG7&5DA?!jt6j z-Y3o~;t->M>^sDi4Ms@HeWa|*FpvE+q8VmiO_wQ>eZ%6In@N^Po`z1DGBRk1AgF3S z!iW@k#E{M!B_wl@(|4#db!^%*jwB9t?Xm17F0$?m>|neFG{ou53%`{~Ts%d)9v&+8lPU;EZI{ z0MVF!9V$AV1G&k~jLd}86M|nnfm#qIFazU%_?q=CrTqm=tIp4hPouMRQZ{!UgaI!2>Qn0{e-|yQWt5}^$fK*1p2@t zEuZTWa%=V52+vn!3njkfj&W_^#N(XoY!!DDc8wmAqo6P9*~$i?h+EafRX^c&Nuo(1 zlZ}(FU@!(pQYRM~Ceh_{gf)zG0*12Y7;M&9KVuo&&@|n8;d|wu6LE;iO#^v=@c{8} zK_hD*-Thp;+lV81uH8U7-G!yY;#q^V`jIMMN;aKfAZp(ez@SYs&F*bLA|@_w5<$ z``9*ACFWyycL+o{gd~Iwpv8Kd2(-yB2F}YM*GkV2k#ti!AA!kZm>8)~%OiEM&z(nm zx=)0sqaefy8Ddl105K&VWAIeycxa6@Suag}Ff%NpML*v^GmLBXo})VT5u~2xiaJzqQ_7e}3KKIkeh>=U#lg2saCdco=Ztx5*$# zZfYDYKBrY~OFbLc$(p&&+Rd(H8>r(oq1d3A+pJr8^sVJFVqbXcKTm)PEIWxRv%wMw zBAq=5c|~eY*JiCOzvQe#5{A`wE!^A6l}uLFp|3#;-v8ywQhUlJ=>c0zQ)DM4bK&lv zY})n!vIkp$BLXaB-P*Wv?+@Euq*^OAB+^BT(-XI#575fQJNU{A;ewDA&JqkT%UX``ZPBo+fh!_Aqx&ga|x@70Ue# zJ88z3s0#$I(=J#cUU_M7zBkRxn0OD2GoAK@r5XJf6j1xMSM<$m93(@cd%` z{3U#fL6cNtEV>p{+WbhJb?E~}H)2or;*%konW^5s*BlL3hN z_>8%uusv;en=CR>Kl@0D8=bIqa4A}pcwIJ(e7&z8Gdfo{F##U_9T-#<8B3ZQEnfTx z3LrjATbNK2G0gOHhzP2)sB)memyjvFAnfvn=s4Z8aj$KoL;XP_v6UmCQuA^qaR)z} zkkwz{qiz)P8J+wjy3opZkQP*dZL3g8zdHSy0zu-va@T5`VlWS1YV=(^Y*G_v78%}{ zBR{?iC*M+iZ17gx_6Su;h*UYzYm#M$L|z0%O6t^ImNIW-s>!u;0LJI+Z(5L#U6vor zeX>=BZb4cAb2;upw}R7K)?s?qdiLoD-}3Q)V{P&m#4!3RegF*! z)lkHM@q;z3g_`Cw=wR2AKXYueq$Lf$I#jN}rgG#$)1p2Tb;Jm*X?@A!&uO|hfY*Yf z=DZL2)+=yC?i`nte^{XmKF85yR;%L?@6>u)M%K@dryIIYDGJfs@I%(oB+MBNTSpvolc)3&bi3iZYrk8Vg=|>0_KuUeyI( z_BcHl%J+nborD=G3-HiAr-P&s2r(GwLn;;a&qRA;5}Zt+uH^ zMGnXo&We9o>-T<-vW2xGGTo*yflai_(x+!=BhJh}S{?2WA|NF;n6`Lwd<58 zCxOI#CU)0}OcVxIlkkT!W1OvEc^C!XbErPyjFsj2jIUcq9Q5y79@Q zGeZhjlt#@#eVd!m#2(sa4#zm#1h+(k^tnmM8n!u%f6MD?^xlVJD_}Wn@K>~LyKGT_ z(IB$a+OBCF4b;%+<_*tUElB(hP%Qnz1WPTZ#(ngaB!KrLf&u{%5ZSROPN#;P6kfP< za#%D9CiF1_2tJMrFksg*ZKoQmrbGA)Ak0_P8e#!mv4Kmd?O5AClq7wsl{$ezaoHwmK=8Rvc<&g=OP>pVAw4#uh@# zVYfeFkj`?e66|uwpVe>i$ajX0o3X#|tY}+^vNnG1J zGN@coZMY!m=Q-INM_3aSn7yNwN>>6sZwrh?g^jEmbs2LB? zwKh-rSavbFKp*-*@wR!ftWB&;BX}kwjoeNAm3Hw{!yk4w)K6a^bOqm1pP$vd^MUbY zdifH=O(9En08X5VXOP5et_`HI}$EZMxtHc1bvC*mgT+#+*_0Zwq#E;$sm*4pqwB+M)hQZ^Vt?E1=wyU;9K&@bB*p8}#St~l&R z1v8%7lw~qGZCN1+XfkvrnUac?BtJD8zHeQAd|YLgqBVa>BCoitKP|L)HCP+c0->eU zyg15y45vV+$eVo|s=lE1{5%(j^iUyg7arIi`7_7{4AC^_LGf04r2{v(44lCPERr-$_pcGwyH++0&bfT72a#IzTdr-+0M+Abk8Pb5=LD(Hm; ziq|bhFy0*o&aiyB;?b1zdi`_{zYQ%Fu&Otur(a`h$KS$jtAkl7H}a(xyPe`L>rSW% zG$vh%kfxI1ke4@%$_yjE5P4!IJ*yvW&|HbFSgwvUiSfO&ON|m}|@XSPkn15X7tw^AF1pi-(%(XF;haJ(OM_$B+69vw<;dqMqTn8foFUDG2e_ zdE6^br-;$O;3vh3t=*_F2#(ckH#2BGu`zQbXl691gT87z6Kp2crC`K~qiYqjkPWmUK# z`6{+}x&-V8UTSz*;K!z|yfUYP_Mmpf%T_r(l1kP)%frBpnNTeAl7V?=9PB-57(?4D zK;AgdqK`XO+aiztMlX8T|`3Nc?XR*gsub{z^#xap$Z4IaEnj+<{S_o?nJy z0PFrM2(gGKTqByIVgV9)q5PHNkP)PL0)Ue#QIYP>XNlMKY1m+`j@7z?k`Q= zM?>u~F`Wx03H*6^QoY4=+e@H%%jH@95m&;~TMnKN2>o{~-eYX{=m_i-c4%xE>=X`I z_=LV)_5GIK+J5^aLk)jC1t>-c;)d;9Jlb0rw?PE9XlQnlZH>=;AiE&4FFSp6Akk3l zwD_cY^4(CMg+N5Xh`}`OO3l6@xsSJK` z(;W5)wQLj3xW;W zTP-$+RUOp|5+zNeiHen|Dt+{IJi+?j3S;U0OgI)DKBgcTj=kC|F-(Kk5EwYn9-|z_ zMaJ+4zFqbPM`RVz+-!)9LN&U~VJn`5KMtxAV7Yl27!z?b^z4SpC?P(E7b4s6vl~Y6 z$yj7qcEJajRoZwqYczL*%cuPcC8JrF;~K|552aahNb8$bm`gq_Gc|lX=+yAmcqL=F zEJezcifkyVz4UG?ja%68*HV)({akenCMaiBtY%dt2$OF_Qm`(3CMQDhuw-zuEf4(7 zx#r2m*xx)+n}W&no392kJ0Pk&Lb*{yU^XXBNr6EaQ;D{3hejfcU^RCdpvly$gc7V< zN!hHjaOmVw!+X=Rp=%gE5l6v5aEdxTsf@VRZYPpPGbyj(;-c7A7~L$m%OqoX_6UFH z)Tw!_>&yNX&KYFLng*24mcT1vZRY&)lK z;9dt};!MI$dIKhUyG(JvL-Qp3L%PCup4(5g7!ID5D$R#J6=UR{7VF?#G3nT}z2}b! z5qJ)JjAWBYap|!QKM%j_t3j#3X!K-}u1VjY!W5i-?U#*4=Z-Y<1+cEH5t`Q6|<5ca2o0wUPDNY7`&gS<;Q0 zG|8MqfU2ql&h_r@%ZBUKmGz6dk(E1BJgZRhs|)ham_VM(WbsMf@xG5giO0QRG58}O zUUG;3JG?~k@1yI#0;|RUIK?IX0RaS1--{bInkrGlwNK$bZ|JI_+J47Zo=!)DMULu9 z9dRj*IH$E)I_0|_5yRX6>`ktKQb3muL;_rDB6XXEL9iQ96%OTSx@A$A?TaVBl!*c zrrEpg(&Jp|f1!N)>Tir5$fX0bWh!p|w0Na+k)F@IVM3AP)^Dd`Ig~^%T~djTQ=*RS z!K6#A<}`L6Xn7OgC2$1SuqA~#>q+F^YMGT`u)4fW*P^@YqVV&mHCd;!=cs}8_x*zW zVTMtrKlus71MIHeuvv)MQo_9G2yZ&zc{MMLgxzo@nQbh0UlsjmNmUi_%E1{{B znvs35j0VACyVg6A#-V066(={wE+iMx;ZY4R_~7l<)#FKn?W3`*$Uk#4 zP$LiuRZI6QSifm`GJ3d&Wh!LVQp>Q8HIlGaEuUaLCCKvB>I5I2PV1O&{v!y@G+I5cg%VqPTeZonzm}A|AUL!YD6QYo(xMFA-eO> zp}kioChuXzai@zFJ0V5$o?KWvmjkKGiAIi^i-vAqL#sRmSEUc@1Cj+DuN17z@M%Oz zi@-D5Bw*eY!=0s7$d_@jJk&ezwRd>W3Y0~H9M7HR3FdQ?OwH8sLy!2IF!LQ~Pcvju z7g5U_T3(2-lT-U3{~L%QTrlnL-`L;k00mtlnT#fc@=Evk?|EODh^vD?i{jD!poxny zEo{L3P}O{{j&?$uaSinmB#U}32DwBsQu5oE&kf&{M%#F=GUCoUxw+gPR*iDXx4--J zc4UrSK!nQaGK*JSTrrJCMr8E64t(x|>sQmnMh3aIF9jyo}o*;<+d z(}k=Ymk%6{FE>j|wx7P%ruVSmr~pfORyYxy)u%0ad&SX31jpnU;s%0wj?glc%th1S zLA00{z3N|~GN%Xw>`_FTx)_B1OpE$HFWqMS99FuhiDf?N^+#`}62BvcOKzzCB-41~h$T1`D{h z+d}cI#TyRoaVkRH(Tos_!?&;eC|miDEHc)7s+A=Bkef|68cqdL_}0jla4c_}=UO`zKkJLI zlAh|^Tx~HaF?gdJx17{sG6t|>hwticw{;Mmc$qM_Ywa8z|a5ch5HLN|4-xx>S^6j zhS1)ZlDV5YAl5Q>A;s8Xld0i_x*-A>Fu)*`5Mw!+^=YbtY8p<(>v~S&SUWFYa@9N( zJPOToq5K-)PLi5Vytf{_w_Gz0C(Mk^i&!vMWFPN4v(nfuKaM8W(#U#=VtB9czc+@r zV?Ho-qyQzQ4-D%QS3W>NDJ_$>zT5Ym09ZVONBX`1V8=hM!6Rg!7=U;1%05_*o_qXC zB3O>WD}4tkc#7UDdB+hp#}ueRMF({CUl{}aV!V=eEMdQyK0@@d0lEgRtb@PJ=Yoh? z)O?bw>`}zN>kdNEzI8-8Bqi^S>T;0B_aa+sRj^!zSbgUwQALhge-0TMTfxQAXY zzwCL+i|*=*@xpKx=T1_QWDaC(X&89)MQ`15rKFA}&U4ekHD+>CanS1I{3x&Q73rRH?`9`(lVunw4r6XjY)t0 zZb`qMaT}k$S)a6bk)mjBA0g-@O`M|2;>ns7ZQ$2t%JElC7Zej* zrr}jmXiU9Yk)LSZ8*$JEV1^Ie{eB=IpbY2$-M8bE7%CF~q^9&ubw)J zc$Js(bh7d`g_u`Gjys6TEX|oD`nb^CT(Y1}0m$BcW`aTJCwdixyWC^7K)f?gXmaIL**X z)9M}E;BX=l1=C!#spTD(5Q04&9oIr0z0#+KNNVyWfLbtPSyDuQbKMtpYVSI!h@qFp zt6YC$5ksz!1Ov1zQDRfos-n6v`De72K6{;l2P`u-O~&>a0|tw{4YQs0nRuDHfJ*#yQfM*ikIK@KY_~ddw zR3~W@&aJy=`Yq&6E_2el6k8!>IrNK$kmqAim?(IpW2YJRIn(qoT<<_RBpwE$A0^Qb zk%!ejo0A7zJBnO|C2n6YX7+?$Ar44e=ZQ;dm8U~fO&n5sY@b5?0kz7LN9wlT)M%0x zprEyO)fHDMcvblN(UCfD&Pafb|el(jDn zR~DQS)5u?j70tHwc+(;pa@172QFEtaWs?L$<>qc>oL}a#phZqJ4nCr*&@+?Snwcs_ z9Ev`!Lc12yCb5QaiYSoyYh}q=h)V8p6-?tOdvgM$P6@l2>V9}Q@WY%EILec~K+IUi zcxD~Lq^0!_7*O*wl|mMl_c9(9Ke~s5%tKBc|$AYskjt-_;vWQ{qxg%PVYzY zY@IoNRjkX8F7$WL%AHGtRMOu&0xc&9)1Cl7T#tJ;Hp-NmIIQ+`?|I7bKe7rt@z1mL$;I#Z~Dk_xa}5I=COFl%G{{F|lg0v~7pr^Zd9@?2)(&j$Xvo zQElqTt*DB(n-p?QtsmTC$1cCdj@1ThSM_k_oyYRU`c3RFONA`-VEM#I>Y{08CK&i_rEKO~L-EvX$#BQSYRZFuBN*BS`WP04|H z6#+|IK6Ez2YUdPcflA0-Sy4^0@~8k4LxA50GsyYcGwTu^V>q~nNgPc-pAqiZ)ZNaY zQN@$Rc5m`rWupm7@O0Jpr4jFZ(=92;d3ddO|DHBap5-z086uz~u==+2$m4siyizL7 z`4=NKdO5fG){*#O@1^r`TtLd(`eWl}Gv)hA5?f7SxVwtg)TV71`9}ee% zo0op9U5HjXBW@|<{T*OOFqMZNju_`b%|`E0d)i(xhdF1r4Rcjr_DOrt4`v+J0v72; za|f7kGN~bs@_`EiiyoiNNlI*1h#T=HF{&Rb!4q^`jj+yb`%J&JVOp^;={i?g`wYwHv?Ro6qFrn}5K5NgnvswErcQ_|WvX-)q#}k02jxiCu!){V!?6uLLAi z*Q;NgAAt$-cC{yI>qS1|DHUk2|Ndp|Xdm~nhe3;M?RP5u9quIhnoti*TlIHpCo~0b zB^7{5WQ2$(QZ-6D5p&!3)W3!xP9!|XyX9h6S8kXJtHxL6wKqijIF zEk$b^I{MrFXyQnqm~nmk$gUL!*y`k%Nvza8dVHg*LPP8 zH)aLGw-b)F7ZFS|%B*_^RJqM8gR|6&H1nY}4(d_;tHubO;>*l|%S`yeyi44rER=C+ z(s;4x7W(DKYJ!O)OH>GMpHx#p>c>fb{E`T#7A(^b9A>essT?B7p;a?HNTJRk^68)w#4OxulPdEl|_^7)4qYTZ;>02|4X|#W`!R*LC#r@Z~{2n|qbSK-rJQuc0r`=}F(s=+l5wYM-s87re!&50(3mG5~6wc~k9XKgi< zhu8I6!6GcmBx^zj3g`IbO$0BA+qu7W@-}GPya@fz|E*oj|D#=;TeQpnqg@0BC?wQo zQzouDu+35V+cxK)5Pz2cA^tjK2fxDM3bh{gJ7_xs@B%<#8uN>J6og>}^INw_C#Ve? zqU&h}TNJK9yiog539*F@W+GXAMt>31*nO(5WugSY!=XcjKuGl;x^Ir^cZDKMf3v1I z)jSU|hQw!;I1i}eT%Oa@vxYvLlG-2MkdO`(K`Y2$^H=&t9R_{=3n|`OW$0(Im@V$^ zquSdRAbxX(uz!qz!b$Hf?)wFF$%n_Z(_8tmS+jpZiz`Bx6_Wwgb@GU2{&rxsdpeR! z9b}g(zaaQ76!W2|N?vP0T}`Jl?IP!wqntmlMG+$ky$Wpk`2Lpr`$tMo>wiC&T!-vu z0XW^ma8?W5vrmVX1Fr&g}As>gRj91|*` zQtAicDeRU=)SRx+c6^d;hIO?{rI8_y%rX~f*cL_m5 zP`Z@*q~-DeS~QIf9~e2FV610EH+!l{hATx=x5F%g-WYujnvr3NtTL3DlgzHnU)(9Y zH)k`xzVB$gJettfRO)J1(E$MP445sYtL}hv7+cE6uYDmfe2P~N$op=xLzvT&3i3!I zsxU&~7)5Rp;owx$QrGn`;4>BCf+@rlBD&%3Xw=hXgRTNW!JKF)tqjpn;rpTc;DDL} z(jhc}oxaLIhMS5I9tLY?#4^jqpb8*IU*xlx$N-)8yuP7=(B}zkFx|P?#9{PgmJLyj z?{rViWP3^yXFJ$J!Z{U8ne)e%8#a&Gn+%=J3SFihfZY@pu=oQ4|i?+j9rwF2QwW9IUC4o!l%Zz?11da0PP5stF1lWUFLTh%! z?g_jC3ESnEU;xSqit@6zomMJ{Ni8X^!Sz?f!_(cwL{*;;S(O`>HmdO^n|E+_+)K@2 z)1CEdv~<0>5Mv%m8!Mhtq>(=PXI7F+R`0+Y+_B}|NCd4I7dB3BaUJ+F!huBwt8tcY z^9~pLG=VZ}TD__o8~GF!N=%66!CZP@lW^`Eu=U2;{#+FuwMVp&mi2(-BQe?XJy?9V z8*u&1-NCP^oACPL{2S;mfDXt(2Hx6cB28VwX9Xrww~mmk1A*SD^*3q;?Lza2P4fs( zQjzdx$^yFka4p>V7Py8O9^~MLm`2W#4guWrL!h7)gZhmgpMZAvxs+l`AGeN5RPg7E zn6Y>oGL5QN&C+>9qJ0KF01}>Ov+zxZ3C(tj*}X+XF&PTJwk%ugp>6%hwAcQoVJ7IK zsnHdp6!m5~mvi?pRF`O`$)hS6rt`Zlvfi@`VY{Dw>lvW&)U9>V8=-8%vjJp0%)aW< zxglbD{x=&$eo+OhV7e_+yh?f&^s!%ZSIC$(+Z5O6>!&BF{NM>spi{DCWMlT*XU1kJ z(+5WGV9iSqa>pK$YXEZFcI?U<_?a`Y$2WFk{hN1^OyfsL#&#F~9GcDbK>)-xK(ErKysq2Dwt{hhXufP4*CC>4mx7cu-Q# z%J4{GkkaqvkphZ(h7MxfB1Pp=47o!ac%v!Wals{+;=;B^8sNA?k$*ZNWMAkPqr&nI zJ!cy#^4|88{FLryKEFOKnY?0)Dxs<%UGkwz4}6_f|NaUVHu2>9C$H*# zZa5hM%G-YZ?d7h2LZ|!}Xv+GxqC(c9!$yM&we1HE=-Nv_0F($SwSEEw)E_z};Ucfn z!qvgG>kT!>>rMcFHUycK@i`xOe21e1L(vd=kDS|aI?c|so7s#B2%X+x^pT%F)x#8{ zZOAhe>=XyMgSVj4Qnps@$RY~B1?}|tp<)PL?Pa2-6k^8heS?AtF5(~%{PdkD5b;77 zlD>RYUpqV%2C%F$NmOl!1dS#oUNK5kwntxGsxB%y1S6_aDH-D_&g?X}=N|m7-q|~q zZ-XT=^{w$W-T*x)t169vfz;?p^%kPVSz)@Fb9{t=d2)DdC>+D7B0q_?LK$6iLARVE z-Jrdn&0S+Z(Jr^^i-R~`(?QWP+pMYk1>X&HoGR8yWSZ3xUZnE{%J z#>91a?Njg}X0<_@umzWkM~%na8UyzcJe>E%Eb0)yU21SgZ|(tG3P#HhcC1cL$uUGt zpP~qzv}ptR+hVGp+G*U;xfegnsE)1sbfow=_u+WySkCQw5uaWRqCw9^OfhXa*HO_X z&_blKKsPL&gWJx(c^}upz}*gVDVb$ifQ=!ZM;d2Y+)I%6*#2lcb}3cQ*XO8aFzJm$ z;f^%86Q0D(8~y+xb3iGfV;-3F?S>O-p;t2;YNno2bcJfwd~x5jI9aZazfkO>Jny2y1d2Tnbf5_G2TDpd#;(|5~M#LrG=l!KGw>S8LwG6~;4}Z(1Q2);*_P@wS1MC0pG5)%8=W|Kv6iLl+AaVsr zZFSb72@j8a>=TI}3c@5KeIC+opD1-{Sy3Iz*|Up9cm&TU7ws|M19B-HwuOUO){Zl$ z?w->VQ>QiCIX$52gO=FK&Z%7Ce|!kI(49AC9hkqP4x@7B_yQ_TZVxn88vpJooIH0hN?#nju{rad|rSts^fX`uYm97^QtA|4?j?14k%5 zWOKy;Uu0vIvpUBh&D3hBp^1wSed>qh_2%pu{7Sh>TcNPm1d7U~yVi#L7=!C`6T^Y5 z>$t)L?8kmFu2|s4ec7ontcBk2VH5wd`OjVWsr3{bkQ5?U;@~>98j-8&OYRLRu;@;} zhIr*mm!(FSBQe#iGjL!uXdx6zAIl;_GZ2b%gajeOJOS@;PqN4y3RCUW znLJ7(!ejR?%+F2OA~#wr|K+{c{+b(Ni$v!&*#G+%aelJgx$kVC--9CX0viTZvJ+RE z=J1h=>uvIKboCvNgx2q4W%bq}Da$drl8(=DtOk!K$_JU(d?c=kZV^cig)pJrIg+Q+ z6y3GC1x zf`tFgp<8!UY9C(yi$X`E3Xm7DQe_Zlc{U_p&#P|kXw^~h4VUA4CPX;-EG!e*{Z|mL zDgtx9a{{lK=`{Pcm*e!o>-+5?jvw?!7;(j4^m#RPsvi~K}uKGG_xML zH^WNYINN(&8>bfH5EEl8ji{lk+g-0#GMK%ICh61;Q=<+jMv;-4au0Z^rls45({a8j zZ!+sF^3r0KO5BuIzBY+35xi(xxF&tU zYkWg9tcumgwe?9;hJ0?xr9AK6JnpgqIcF}EKdDq;~QO7 zR=(294WRrQPJ2+1tIMtF6@PAt`6KAaPih5@I{#U7DHup?WQ~tY-bP z=b!x~i^_tzC1P3B(%Ea!tFSCMx$pg>R$)5ND4W)hn*>BXn6|sG_?GeVL^mFL7{t~Y z`Z;qL0co#c(FX{P-6AYccvb6qNZ!K2BQ2jH&QLJdjm#;&%s`V_GM=doQW>EW``3pI z5Co)BIeiY1uk8G9{8b5{B6GfM_s4m zf4a^(+y1X`-o+Nxfr+LD29@&Q3t??WLx|AOWk7YVG-~2Tp0@JubfMi_1(W0ze3%CNc^+Mim0v%tw?yn0|=bTN7sk=|q z(5wDED{MchJ67=uPmKCM8F=|38xUZ$ys&dbpxQ9l3P|)L^}sYKtdz1Du?7KceO!8mr~5fO_#bYBT^F z`K7dBeePhjA%?2Y8vXs}M}<%nG-@bpraj^@Pki9%9L{Dh_umf$el;ssS8D?}2zI=a zp6dFK2X@XRS+~OHqzT%kt+N)B2^&|+8XA;w*9mL`X8iV2uX~WuY25^Yd0J0Y1h%CCPep*5;o;3>r-vVdmCuY706;ET@)N#E@vejhtc?@D~)(B&*!JZ)mm&% z7jmR8hq9Q#r}9)9PD}=og|X1VPwSF4ZkWkQ6vXjxG_H@XK=besQMmP(Di3>lhi$_n&1PC_E_CyIuQASQ^2cWHY~V1cJ%y6h1IDjd;(< z1`LC6i|-$NJOm;#v0`v7vY1(vF4 zQ|#v1pg|4k)%8Sl>~Lc$YA6^e-PutGB_YF>W}#iBM~G*6T}5>0K3H)t)IC}B#PD2E z^_#Bjw&UzH&uTND_vbtCUeF&Tt>pXpk>FS<#@fjaI>P|02&QD?1GGQ}dTDL{Kq`Z2 zC`Z*)M;PNwRm7n}h6NZ@Y2X@piE^QXZmK()nuEX)6AK!9oN`?N7FtWJq61C?^^aJ2 z1;ichSe^Wbt(cY%KZld3 z(`{A0blA2To?f`Mot-zMsAmt*wC8+$Y+xVCI?WWlnMI4j#WfAd(CB&f={a=uXVt$m zTv?ZF_{~swu2?Ch(1U%bhZ|Jlq^m!t*o?rdVipEy)ng|9UM_AzS*hM zpizn@0;q=10p5e^P(ydFa78^tH|TM9YQpe*Lhh2n6bRUGkvGV6!2-apBlbu1oQPm1 z@jaBmT>|^wFYG!re=B{zv}2qM*RhcXLn}rLev;QPX}s?Q44tSyiu;`-P0umo@0;An zxykVaH|=JPwT6OEr{*45(2&TWov2_Owoefs^m;Hq{vsZJMkY7r0BeNY-_{7hf1C-W z?Tifm+`v|{bN*&z@*mC0zmuSRog|n5oOi+b)TYN7)rvZ7_L6?pO6gF)f37}(*?#TF z&&fJwe4mUUf*r9i4S~(!abi;UgRahlxBcIMUMzT)Vr*{g4s1{C7nqFO1<0U;r~cs| zt(aM6LV1^lN;u2p3xSh5gm#o!4+)1;5r-_)L@s@JVk@^)QXr1Q&Z_oG`K$J zgU03M%kIQ9k8_`T_SsC|=agF?2gIZ*{L?Iv=za&jJZ@-oo6cNX9UuChjO_JPK0O4i z#{V$p0XMTHNU^>Z#}B3(ExVbH5;VZkJgajGI>1jeU=b!IS4@eA-Ax`k_{&3|6~uY| z9Qbfie_Le!38w=bPW&gO0FkN^Fr~aF7n1@&EZU&AzLpkaAj@Bao_t;knN&7NoWt5q zcB<-g8X(2`(i5tdHs|3!%TDmB5N!r4f;nEA#hJo;>}B?Hk(Q9t)9v%QHnamm8xIXA zU%TZ(ccMLOE#7aB#^F4{WR2@fRos`9p=2#vOoaY?EPcSh^m3#+}++8!3gZ$^bkx4z!-Q_#;`v1qZN8YTMDp0+4DLBJt#`uU0UKhL~MWslJYMzw7zU6tHG-zGw16+ZdlCN=0q zA{oFEYFx6Ps+;6h4&iuI5~`0u?GrGy=xpwPySviRz{_YQ;m$ButKXuOF|XXX5G25Lk&-CwDEn^ zWAwo(O_v6WFWq8q0L^38v##J5JXmeAxf35UwkPoNvyzvI^k?fk6p35*KShwef=^Zp zm<~+-wg~P` zk6oRK!YDQ5K!+Tb07CuD0Z-;%Z^!I*rduP&6F7d%%6lBhwKV#2Up0CSK#2-L6X2!U z7}|OdP(le4zM@h=lT}Krj1&icMkU2HlIn*JN0zMHE& zKn^@ST9k*`LCm>uSy4+1s92sUv`0gFqnvIGl6I!GP`JIv*x-ccO5VHq(b zUxF6axh;NX$(h+qA#AvU2V2!RC|+Ooz^8y)xtjZ(Is(0Ce*_n_?i=_N z14#mg#H|k5$EKHc>lXOpK_}-0g?ETIrWS}l9O|41+Rqoyhb-B(D|CQ7B=+hau-nD# zf6z*?A!cPHzHQ<4mta;U>qop5FyEvCf5ZQoNB$?j-@hTupMAUmAmR_6Eyzoxr?rNH zNR@??jzkhFlq7_3Nl1-7yVO1;9&BO!iF5^M1x7eoNKub;!GJ{qn$TKLriCLVHKF3L!!SO>w{6v>Dg>JrtM zJovOmBr*zoPZi5cyDab^>IT&AiQ0#3e)NrzFvq)5k`HqZhZ{5BlbWMt`A~SyDx_>y zkGr}AGxAY-_ho5zB^^pXn~VPXnpr6!uD;<47EPtC#!qbeD)iz^^aZ&;;codG0d5VL zqDB8UMgJpxF>oUGpB!DKBxSeo74f~k{pOZ~pTy(c5-R?(bYPLUF@3n`~K+t2G zW40RiGS0HhGVLVm=UNkmgqudB(^;rC=o=cKGncNZ4}?c?(XW{AHv;tZYAl<>RB)E< zlk<*PI<)Um(0+R-J@;*j--~>U$a`+tMUoRlO5i(Y$zf`hWfaLO)U z*xapYC2-`tYH1*i{~p)v#vQNV5<;}C;N7Rc>4_5FMXShUQu~=oWIoJ29j2XL#?H?n zc-#S2=t(^Zu0qTyW=P&-kDc)Q*n-5*DS1Gbzv6dww|zuA2I(%MZK*DCQ{p(D`vCZq z#N-FVxm|~i{at#YEWx({dEWrhym!*^V`Z`ZZCSwC`HjRz<9>h6Dc{eFP=5tw?WO}7)N7`=Ld}%Q33vh%XlqMR|9~NXX z45*=|cWZMH$6-J0gISKn%j0~4Wh;I|-_kvhNWRPxum&F1$)(APn&tflDS9w!2tk8c zJhG9jN!WUXtB`6uR9yi%YINMPIqu$32ANrdOeL$=$#+flWr$<%{-uPSK#s@CCa5a{T7LXHf_{FbQtwZ=6%|yGqXECnx4*Tg`bXjB_}}3c z^`CHa*c)^plE_F*R?`DJHc{F_)g&c`NAf5B3Jf+bt^N2)n)SWw2#+FU)Nv47TwsH_ z%Hp3d3X^PV%6mH%*`2oeFGLWq#DdL5{g=|i8ZSCpic8f=d+h5-qd%CW6Gg{7Q9^ni-o9tiU*6oZ1gs$N`t&z^kHfQ85R3=) zn+s758YT+FXMf$97e_LqMvGzIjGQn`;$8D1brGWbVgoloStfNTH1CP%JYx+}=sHGR zi9JWBY;8tecD^NTdWlR5ug4e?srU~$IPMObyYrZ*tt5Rw7W=^(r3mbwF&w;K8X7rj zwKCEXuSB-V38lh;|H8!z$A@|70y=~h?#E7q(%dbs&&G&IC2j6iyPCw9v-t*x8BdCGrn+Dy5lgEO__$Ce{0?0&`kVRN(i#P(r#ykuvajD*f{Ag$QVath zTz^X4*D&gz3Qwe~kb1G+;y0zb`Y#*`HE(_z++Y0-FtFWa%blvW#Bm981|x>~q~pi9 z#^}FQtX-L@0;_(}!lGf+c=fLBHYkQTi)B@z^f73j;^Nx;B90sq|NdV^-(K}C>yPgY z^4}JH-hbQ!{2!9_e|N*lR!S(0sKIiLibx8G3i8(hr9hs`@hjWa0l+y%mzk0;$(R)sM6!=@rA{}hoF32?WuK(&gQNF7>Du_5vFP8UzcM5bnr6ySbW9PGqe~tDRi6yMh|{PEOd>eQSz)vk-L>W2l%gs zUn-zM@pb_bMcD&ICM2B)go!3%6CUJV7sPj-t~5+7YV@|%rtn7Uu4r7`)M~rM6<1c| zm9Gls7ftt^>WUc>y)O3|*N=~`F-O4}Qj5iK7|rU$C-;H_>Zjj+-3m`7`}~^k!%4TU z9o*C?xDJoF&PQI4i@%()7TQ4+ZKH;c zY_?KdyY*I5%7UQeiQBi+s8noLLh%=%c8|QB?>vKw{1vX|_FN_zq+ZYm;a^t0F=-lq z@emHjUGMF$k80KP%f^>`S?iAq>Fg~iK&g{JhW!TizAS#qzl>9IUx3mN!_TGj(FKQW%E!z1a zD@c=-0k?3;E)qqe8$0!0o>Pmcy3b`Y@0LCOEo-_w01_wb&OCV-o|bRxh?R_lhW*EQ z8n0bZ^syo{bQBjBGn?lTgmXD|l6A_S{qvOy;N=qn_IphlEn+J;i(#1_10F%H6=- zP{51((DO-`L3I>07^baXd^h{*?$uPNKnJSY)aJDqa46bAem3vA;h}W?$fbu=e>i=k zrUpR(?Y_&~60tToDmaEnZe|zSPWj%cWt7J7#{RKG?&QTOoci0u7X{ygH3nHOC(yyf zC$c)q_1Rme?n1Gj)s|4}DI2*TPq9x@o%l`iOx2#87wM1?EAuanS~VF%&M+`*QU5Kv z`zK)dKcXvnM&S4x_%tB{@QB#h?UYpUXTmaJv9+jFiaz$KO(y4F7*CaUFQV!!uTteO%%=DL-SrG9^$iGz|XjkJ7U2|e|<9AcpnAPnD9k;dt%;rYuq8T zKXAlYFwlJh_&&OS`#%4KNc%53_`lQ>t1g}zxqcg6M7doxlmYU>AOht{m}J;dVVuoU zIt!P3m(E2P|y@XSSY62sSEv?(ETw5{kRxM!iXSn zkVyUJP&OQB0SF_gnL^5`g#lEhF!Q05sX~%{WOX{jfdN*bRO&+-;8>)n+8D7o#B?~Y2?5yA}{qgut;YBE|=v}dBa4fAj|aVI*#Zlp>C-9uHGs?zKnuI%UxX#&+eaJQ;XV5_*?ZVPT;%B54kulf_qd*Y(`ZzH$4H%1 z!A`##3EiF5v;_%WqSfr)7h_BhoV>7DJ6U!ovupuPrdw zaqG>ZTEkfFXV}Wd`X}#783VoJXh7mDYx9R>aRHu_(UoII^7iKNHkta6Ej{F*I>UkXHyRzx%GcnWrfW!ZH4p&#Z-lb8}LTcDCV=`M|0 zC*~2722tHIve12i#0!fL$u(b>p>wqBxdm=6&xx*$-PX zWXUNl4(^jpK$N^VPJ zwuWAPr2V(qmY92iZF~r5@He|ZpNbc}McyJ1A|V0q#sANJwdg;FNdNaS>3?JTBA^Os5jf_9Xm_Ck zUp*u*Z3UHdUAF=MLdhO=GBAu5g(>5O({7~n6WBqQ0>^w3s6&w6w|xXAJW4L${n!NN z-;Shb4quKkPl2L}zieF$@tecLVU&W3`V|~xhAP83(bzp=M`D9*BS%e?>5mVX=u>X7 zJs4IZ=p%m^?c3%l4>Dd(y zQ|kB?0zmr01V`Y?b67_MTJMT;hyhouaK3Y)U!J7L7>S+5K{_3&;95|;FA|3VRf2cG ziZX(rgcQPK?-nltkMmomdn(H>B)cJd*yqILo>|K0q=W`;+;R~SZf)S9dPVY$QX2D4 z6Eob6bw`5u#JSY547i)xmhrsKLl(FZBc~oh&Sa$(p#&` z@Z&igfxMte$s9RU56I>3$TDgOP}zl2(}1Z0K_(IWV2ib=*sh31)u#ae@F%P_`h$T3 zza~Q%py8DEAxdKmohw!fl|nl&_7v`^nBLq=s__(cJ@1{?k=)4<9}sTIkA71vrcrJ3 zBnZOQRei`!xYHoz##EPI`(iX6qZ2S~1U~`R5!sOjQEgmemZm)-9O08SY9ezhtdk?#&YCQeQkwq}n1;RF6V(3?_pfR6h>V$=W&izGmX0c^g|LK52u zr{a`CFAs23F#a_i+Jbvvlh}?ozdkvR&E|=!>x_&YI7CofJ0NbGi5WkrtfeXguVY$a zKF-{9yx$b#s)!q|(dG9A*+IWF)yJa5DaA}>yejk8g5YCj;Q#a)qe0w2xh>$E(RdUM zd)|gII#wiHK0=E0Mz0DAnRJGFFB(dOr3X%m3~kvQ7a!9#UUgdSbzQKs!`cr9)yyq@ zA6`V;P2@b2FC9Kvkg(V=b{Llpy}Mh2q%Vv&>)3bsRpf{HcnvJ%CNy(yjPRxRRH*DO zt2L81soS;9#yihZlr_G=3UjbO?%}ou_=BhY?EIhh466H~*>NfRVwP(-qkbJl0 z_XwBhDe;$7+PnC63}Z2cKjIcG7sM^8%9fHf>*k*xl4KPS(6{v}4>;K?!;bKOdn}o8 z<0d^UdvJb@+VLn>fE`t#QNq=)892WS6P|#?}67tj(DB2H%R8#EVtP8SO z^`{h`kGfXQygdke_cTo4NzBBp#7!14tk$`W;< zs07n(gSy5rJg~e|XuX80`Yqxo`D)jAs7vVX_#wak3FNF&NNaAQhY9&_xF;5$bk0G- zRr#QwpW58Jc++O}`0{j^Q~PKyI3k`XLD|Qg@~L0g7&*OV54gj|-j0Q<$;fezg>|K* zr!!I94^w|Oj-LM_JdSVd2$a6ZZdjP^c z#Jh@`eFOVdTlJ1mm%r~O+N+@5j-CrR!6l$md>=`3Np2^;`W^3X;h6K~FGf#&hDTNw z*bqp-{ava0N2(9we{}>&iZW8bjv#BPv99TN2Mm6ZBrjdIXJr*wVu1dPY=VWfgv-F? z-iY26h5HrcW5HlqexP45esGq1r~5C!&-IrHnopU1{s=gH*3Y&31JwwgpwXTsDS6Yz zmCl**!f04o!c5bZ(upJm3`wruAOqX(SV!RB7ROo7F7X z&%anX2R)7IXU2U4k4Pw@B?rw;A$rF;+(S9W+}|M6T>T);A-$6q-^Aq$zAGZmMWYlk zjm>WwEcgnNWyfk`f=C-^iW%=W0O})?=5j|e7@<@x->a~cg$aG4n$V7GY!&@Lsia(o zD|d{_)y$yXOs|h-*-Q7)ls+PDZr?MVF!BqAWW82ZaBY^B2=7X2ly5NtN-g4LD0?K@ zrsn#uAw1YsG36g+$qq1w{?B0HpWtes)7!siC;w3rkpD|bFs<4i%Mm7Hp|O@&g##ui zAWzf>i%qtmFaFaoqiUw}Hu4ed|Dz>Hrba8nMzWZmdd&7bdX6;n`FOek^rG4Z$EgC9 zX_WzvFw-=tYW50!WZ)@i+6qX$xq;RwoSIDZlxW2Rfj zsGf=_PI>=WlPSkD*OhvscrazEx6C>g=6VV2*)fe<2fxk!rRkCYIeYyTN9zB4gJ>mzHn_mrGV1t-o$J_BY=xPH_itpA40~87&1No(vNogUuGF7@2@; z5gXpr8)PXM^~uMuT9VQD=F|f#{+SM20rRG?k{OB?`QXV1bvytjBI=*cA(_^9L-}-$ zKUq`O@n@dkx@NLrADn-TT^o`_;fA&c99taYb;v((KF>FK)t#~Y6cjsD`286=dR_y; zuQ|9no=}AAEU?6aP24O;Vet;n>BIwprr?<5;7b76pj9Q7AvopmogP%3O}_W=*H5d1 za!zDEgse@uz=L5^OR1a`6VJi!Jfbg==M&o=pz^Zz*5eS8HZmkr zO0P;x08uK~HY}B56;?E;C{(MKEUih2*Yfp|({d--u%|+KOdh~m&MNo&B8N*`=9FYi zSYkEZu|%+wA0np$UnIq~tr&D2)^L4e+|kZO

5wE2()dBn(D*skx!1upE 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 literal 0 HcmV?d00001 diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/libs/google-play-services.jar.properties b/OpenGPSTracker/external_sources/google-play-services_lib/libs/google-play-services.jar.properties new file mode 100644 index 00000000..429687b7 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/libs/google-play-services.jar.properties @@ -0,0 +1 @@ +doc=../../../docs/reference diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/project.properties b/OpenGPSTracker/external_sources/google-play-services_lib/project.properties new file mode 100644 index 00000000..db721fd8 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/project.properties @@ -0,0 +1,15 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-8 +android.library=true diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/.gitignore b/OpenGPSTracker/external_sources/google-play-services_lib/res/.gitignore new file mode 100644 index 00000000..e69de29b diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-af/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-af/strings.xml new file mode 100644 index 00000000..495773ad --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-af/strings.xml @@ -0,0 +1,16 @@ + + + "Kry Google Play-dienste" + "Hierdie program sal nie sonder Google Play-dienste, wat nie op jou foon is nie, werk nie." + "Hierdie program sal nie sonder Google Play-dienste, wat nie op jou tablet is nie, werk nie." + "Kry Google Play-dienste" + "Aktiveer Google Play-dienste" + "Hierdie program sal nie werk nie tensy jy Google Play-dienste aktiveer." + "Aktiveer Google Play-dienste" + "Dateer Google Play-dienste op" + "Hierdie program sal nie werk nie, tensy jy Google Play-dienste opdateer." + + + "Dateer op" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-am/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-am/strings.xml new file mode 100644 index 00000000..147e0014 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-am/strings.xml @@ -0,0 +1,16 @@ + + + "Google Play አገልግሎቶችን አግኝ" + "ይህ መተግበሪያ ያለGoogle Play አገልግሎቶች አይሰራም፣ እሱ ደግሞ ስልክህ ላይ የለም።" + "ይህ መተግበሪያ ያለGoogle Play አገልግሎቶች አይሰራም፣ እሱ ደግሞ ጡባዊ ቱኮህ ላይ የለም።" + "Google Play አገልግሎቶችን አግኝ" + "Google Play አገልግሎቶችን አንቃ" + "Google Play አገልግሎቶችን እስካላነቃህ ድረስ ይህ መተግበሪያ አይሰራም።" + "Google Play አገልግሎቶችን አንቃ" + "Google Play አገልግሎቶችን አዘምን" + "Google Play አገልግሎቶችን እስክታዘምን ድረስ ይህ መተግበሪያ አይሰራም።" + + + "አዘምን" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ar/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ar/strings.xml new file mode 100644 index 00000000..c5a81230 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ar/strings.xml @@ -0,0 +1,16 @@ + + + "الحصول على خدمات Google Play" + "لن يتم تشغيل هذا التطبيق بدون خدمات Google Play، والتي لا تتوفر في هاتفك." + "لن يتم تشغيل هذا التطبيق بدون خدمات Google Play، والتي لا تتوفر في جهازك اللوحي." + "الحصول على خدمات Google Play" + "تمكين خدمات Google Play" + "لن يعمل هذا التطبيق ما لم يتم تمكين خدمات Google Play." + "تمكين خدمات Google Play" + "تحديث خدمات Google Play" + "لن يتم تشغيل هذا التطبيق ما لم تحدِّث خدمات Google Play." + + + "تحديث" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-be/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-be/strings.xml new file mode 100644 index 00000000..8d515653 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-be/strings.xml @@ -0,0 +1,16 @@ + + + "Атрымаць службы Google Play" + "Гэта прыкладанне не будзе працаваць без службаў Google Play, якіх няма ў вашым тэлефоне." + "Гэта прыкладанне не будзе працаваць без службаў Google Play, якіх няма на вашым планшэце." + "Атрымаць службы Google Play" + "Уключыць службы Google Play" + "Гэта прыкладанне не будзе працаваць, пакуль вы не ўключыце службы Google Play." + "Уключыць службы Google Play" + "Абнаўленне службаў Google Play" + "Гэта прыкладанне не будзе працаваць падчас абнаўлення службаў Google Play." + + + "Абнавіць" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-bg/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-bg/strings.xml new file mode 100644 index 00000000..51581d20 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-bg/strings.xml @@ -0,0 +1,16 @@ + + + "Изтегляне на услугите за Google Play" + "Това приложение няма да се изпълнява без услугите за Google Play, които липсват в телефона ви." + "Това приложение няма да се изпълнява без услугите за Google Play, които липсват в таблета ви." + "Услуги за Google Play: Изтегл." + "Активиране на услугите за Google Play" + "Това приложение няма да работи, освен ако не активирате услугите за Google Play." + "Услуги за Google Play: Акт." + "Актуализиране на услугите за Google Play" + "Това приложение няма да се изпълнява, освен ако не актуализирате услугите за Google Play." + + + "Актуализиране" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ca/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ca/strings.xml new file mode 100644 index 00000000..e0648f23 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ca/strings.xml @@ -0,0 +1,16 @@ + + + "Obtenció de Google Play Services" + "Aquesta aplicació no funcionarà sense Google Play Services, que falten al telèfon." + "Aquesta aplicació no funcionarà sense Google Play Services, que falten a la tauleta." + "Obtén Google Play Services" + "Activació de Google Play Services" + "Aquesta aplicació no funcionarà si no actives Google Play Services." + "Activa Google Play Services" + "Actualització de Google Play Services" + "Aquesta aplicació no s\'executarà si no actualitzes Google Play Services." + + + "Actualitza" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-cs/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-cs/strings.xml new file mode 100644 index 00000000..f8ded320 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-cs/strings.xml @@ -0,0 +1,16 @@ + + + "Nainstalovat služby Google Play" + "Ke spuštění této aplikace jsou potřeba služby Google Play, které v telefonu nemáte." + "Ke spuštění této aplikace jsou potřeba služby Google Play, které v tabletu nemáte." + "Nainstalovat služby Google Play" + "Aktivovat služby Google Play" + "Ke spuštění této aplikace je třeba aktivovat služby Google Play." + "Aktivovat služby Google Play" + "Aktualizovat služby Google Play" + "Ke spuštění této aplikace je třeba aktualizovat služby Google Play." + + + "Aktualizovat" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-da/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-da/strings.xml new file mode 100644 index 00000000..357616fd --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-da/strings.xml @@ -0,0 +1,16 @@ + + + "Hent Google Play Tjenester" + "Denne app kan ikke køre uden Google Play Tjenester, som mangler på din telefon." + "Denne app kan ikke køre uden Google Play Tjenester, som mangler på din tablet." + "Hent Google Play Tjenester" + "Aktivér Google Play Tjenester" + "Denne app virker ikke, medmindre du aktiverer Google Play Tjenester." + "Aktivér Google Play Tjenester" + "Opdater Google Play Tjenester" + "Denne app kan ikke køre, medmindre du opdaterer Google Play Tjenester." + + + "Opdater" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-de/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-de/strings.xml new file mode 100644 index 00000000..17748ca9 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-de/strings.xml @@ -0,0 +1,16 @@ + + + "Google Play-Dienste installieren" + "Zur Nutzung dieser App sind Google Play-Dienste erforderlich, die auf Ihrem Telefon nicht installiert sind." + "Zur Nutzung dieser App sind Google Play-Dienste erforderlich, die auf Ihrem Tablet nicht installiert sind." + "Play-Dienste installieren" + "Google Play-Dienste aktivieren" + "Diese App funktioniert nur, wenn Sie die Google Play-Dienste aktivieren." + "Google Play-Dienste aktivieren" + "Google Play-Dienste aktualisieren" + "Diese App wird nur ausgeführt, wenn Sie die Google Play-Dienste aktualisieren." + + + "Aktualisieren" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-el/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-el/strings.xml new file mode 100644 index 00000000..c3902c59 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-el/strings.xml @@ -0,0 +1,16 @@ + + + "Λήψη υπηρεσιών Google Play" + "Αυτή η εφαρμογή δεν θα εκτελεστεί χωρίς τις υπηρεσίες Google Play, οι οποίες λείπουν από το τηλέφωνό σας." + "Αυτή η εφαρμογή δεν θα εκτελεστεί χωρίς τις υπηρεσίες Google Play, οι οποίες λείπουν από το tablet σας." + "Λήψη υπηρεσιών Google Play" + "Ενεργοποίηση υπηρεσιών Google Play" + "Αυτή η εφαρμογή δεν θα λειτουργήσει εάν δεν έχετε ενεργοποιήσει τις Υπηρεσίες Google Play." + "Ενεργοπ. υπηρεσιών Google Play" + "Ενημέρωση υπηρεσιών Google Play" + "Αυτή η εφαρμογή θα εκτελεστεί αφού ενημερώσετε τις υπηρεσίες Google Play." + + + "Ενημέρωση" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-en-rGB/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-en-rGB/strings.xml new file mode 100644 index 00000000..7e35e405 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-en-rGB/strings.xml @@ -0,0 +1,16 @@ + + + "Get Google Play services" + "This app won\'t run without Google Play services, which are missing from your phone." + "This app won\'t run without Google Play services, which are missing from your tablet." + "Get Google Play services" + "Enable Google Play services" + "This app won\'t work unless you enable Google Play services." + "Enable Google Play services" + "Update Google Play services" + "This app won\'t run unless you update Google Play services." + + + "Update" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-es-rUS/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-es-rUS/strings.xml new file mode 100644 index 00000000..8a07da27 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-es-rUS/strings.xml @@ -0,0 +1,16 @@ + + + "Obtener Play Services" + "Esta aplicación no se ejecutará si no instalas Play Services en tu dispositivo." + "Esta aplicación no se ejecutará si no instalas Play Services en tu tableta." + "Obtener Play Services" + "Activar Play Services" + "Esta aplicación no funcionará si no activas Play Services." + "Activar Play Services" + "Actualizar Play Services" + "Esta aplicación no se ejecutará si no actualizas Play Services." + + + "Actualizar" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-es/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-es/strings.xml new file mode 100644 index 00000000..fe424eee --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-es/strings.xml @@ -0,0 +1,16 @@ + + + "Descarga Google Play Services" + "Esta aplicación no se ejecutará si tu teléfono no tiene instalado Google Play Services." + "Esta aplicación no se ejecutará si tu tablet no tiene instalado Google Play Services." + "Descargar Google Play Services" + "Habilita Google Play Services" + "Esta aplicación no funcionará si no habilitas Google Play Services." + "Habilitar Google Play Services" + "Actualiza Google Play Services" + "Esta aplicación no se ejecutará si no actualizas Google Play Services." + + + "Actualizar" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-et/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-et/strings.xml new file mode 100644 index 00000000..ae67e947 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-et/strings.xml @@ -0,0 +1,16 @@ + + + "Hangi Google Play teenused" + "Selle rakenduse käitamiseks on vaja Google Play teenuseid, mida teie telefonis pole." + "Selle rakenduse käitamiseks on vaja Google Play teenuseid, mida teie tahvelarvutis pole." + "Hangi Google Play teenused" + "Luba Google Play teenused" + "See rakendus ei tööta, kui te ei luba Google Play teenuseid." + "Luba Google Play teenused" + "Google Play teenuste värskendamine" + "Seda rakendust ei saa käitada, kui te ei värskenda Google Play teenuseid." + + + "Värskenda" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-fa/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-fa/strings.xml new file mode 100644 index 00000000..0970d3d7 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-fa/strings.xml @@ -0,0 +1,16 @@ + + + "دریافت سرویس‌های Google Play" + "این برنامه بدون سرویس‌های Google Play اجرا نمی‌شود، این سرویس‌ها در تلفن شما وجود ندارد." + "این برنامه بدون سرویس‌های Google Play اجرا نمی‌شود، این سرویس‌ها در رایانهٔ لوحی شما وجود ندارد." + "دریافت سرویس‌های Google Play" + "فعال کردن سرویس‌های Google Play" + "این برنامه کار نمی‌کند مگر اینکه سرویس‌های Google Play را فعال کنید." + "فعال کردن سرویس‌های Google Play" + "به‌روزرسانی سرویس‌های Google Play" + "این برنامه اجرا نمی‌شود مگر اینکه سرویس‌های Google Play را به‌روز کنید." + + + "به‌روزرسانی" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-fi/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-fi/strings.xml new file mode 100644 index 00000000..e9bea987 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-fi/strings.xml @@ -0,0 +1,16 @@ + + + "Asenna Google Play -palvelut" + "Tämä sovellus ei toimi ilman Google Play -palveluita, jotka puuttuvat puhelimesta." + "Tämä sovellus ei toimi ilman Google Play -palveluita, jotka puuttuvat tablet-laitteesta." + "Asenna Google Play -palvelut" + "Ota Google Play -palvelut käyttöön" + "Tämä sovellus ei toimi, ellet ota Google Play -palveluita käyttöön." + "Google Play -palv. käyttöön" + "Päivitä Google Play -palvelut" + "Tämä sovellus ei toimi, ellet päivitä Google Play -palveluita." + + + "Päivitä" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-fr/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-fr/strings.xml new file mode 100644 index 00000000..b107a4d3 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-fr/strings.xml @@ -0,0 +1,16 @@ + + + "Installer les services Google Play" + "Cette application ne fonctionnera pas sans les services Google Play, qui ne sont pas installés sur votre téléphone." + "Cette application ne fonctionnera pas sans les services Google Play, qui ne sont pas installés sur votre tablette." + "Installer services Google Play" + "Activer les services Google Play" + "Cette application ne fonctionnera pas tant que vous n\'aurez pas activé les services Google Play." + "Activer services Google Play" + "Mettre à jour les services Google Play" + "Cette application ne fonctionnera pas tant que vous n\'aurez pas mis à jour les services Google Play." + + + "Mettre à jour" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-hi/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-hi/strings.xml new file mode 100644 index 00000000..b98495ce --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-hi/strings.xml @@ -0,0 +1,16 @@ + + + "Google Play सेवाएं प्राप्त करें" + "यह एप्लिकेशन Google Play सेवाओं के बिना नहीं चलेगा, जो आपके फ़ोन में नहीं हैं." + "यह एप्लिकेशन Google Play सेवाओं के बिना नहीं चलेगा, जो आपके टेबलेट में नहीं हैं." + "Google Play सेवा प्राप्त करें" + "Google Play सेवाएं सक्षम करें" + "जब तक आप Google Play सेवाएं सक्षम नहीं करते, तब तक यह एप्लिकेशन कार्य नहीं करेगा." + "Google Play सेवाएं सक्षम करें" + "Google Play सेवाएं अपडेट करें" + "जब तक आप Google Play सेवाओं को अपडेट नहीं करते, तब तक यह एप्लिकेशन नहीं चलेगा." + + + "अपडेट करें" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-hr/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-hr/strings.xml new file mode 100644 index 00000000..7075ce1c --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-hr/strings.xml @@ -0,0 +1,16 @@ + + + "Preuzimanje usluga za Google Play" + "Ova aplikacija neće funkcionirati bez Usluga za Google Play koje nisu instalirane na vašem telefonu." + "Ova se aplikacija neće pokrenuti bez Usluga za Google Play koje nisu instalirane na vašem tabletu." + "Preuzmi Usluge za Google Play" + "Omogućavanje usluga za Google Play" + "Ova aplikacija neće raditi ako ne omogućite Usluge za Google Play." + "Omogući usluge za Google Play" + "Ažuriranje usluga za Google Play" + "Ova se aplikacija neće pokrenuti ako ne ažurirate Usluge za Google Play." + + + "Ažuriraj" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-hu/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-hu/strings.xml new file mode 100644 index 00000000..3b62351a --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-hu/strings.xml @@ -0,0 +1,16 @@ + + + "Google Play Szolgáltatások telepítése" + "Az alkalmazás működéséhez a Google Play Szolgáltatások szükségesek, ezek nincsenek telepítve a telefonon." + "Az alkalmazás működéséhez a Google Play Szolgáltatások szükségesek, ezek nincsenek telepítve a táblagépen." + "Play Szolgáltatások telepítése" + "Google Play Szolgáltatások engedélyezése" + "Az alkalmazás csak akkor fog működni, ha engedélyezi a Google Play Szolgáltatásokat." + "Play Szolgáltatások enged." + "Google Play Szolgáltatások frissítése" + "Az alkalmazás csak akkor fog működni, ha frissíti a Google Play Szolgáltatásokat." + + + "Frissítés" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-in/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-in/strings.xml new file mode 100644 index 00000000..a591d622 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-in/strings.xml @@ -0,0 +1,16 @@ + + + "Dapatkan layanan Google Play" + "Aplikasi ini tidak akan berjalan tanpa layanan Google Play, yang tidak ada di ponsel Anda." + "Aplikasi ini tidak akan berjalan tanpa layanan Google Play, yang tidak ada di tablet Anda." + "Dapatkan layanan Google Play" + "Aktifkan layanan Google Play" + "Aplikasi ini tidak akan bekerja sampai Anda mengaktifkan layanan Google Play." + "Aktifkan layanan Google Play" + "Perbarui layanan Google Play" + "Aplikasi ini tidak akan berjalan sampai Anda memperbarui layanan Google Play." + + + "Perbarui" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-it/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-it/strings.xml new file mode 100644 index 00000000..1f601ed2 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-it/strings.xml @@ -0,0 +1,16 @@ + + + "Installazione Google Play Services" + "L\'applicazione non funzionerà senza Google Play Services, non presente sul tuo telefono." + "L\'applicazione non funzionerà senza Google Play Services, non presente sul tuo tablet." + "Scarica Google Play Services" + "Attivazione Google Play Services" + "L\'applicazione non funzionerà se non attivi Google Play Services." + "Attiva Google Play Services" + "Aggiornamento Google Play Services" + "L\'applicazione non funzionerà se non aggiorni Google Play Services." + + + "Aggiorna" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-iw/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-iw/strings.xml new file mode 100644 index 00000000..a4235063 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-iw/strings.xml @@ -0,0 +1,16 @@ + + + "קבל את שירותי Google Play" + "יישום זה לא יפעל ללא שירותי Google Play, החסרים בטלפון שלך." + "יישום זה לא יפעל ללא שירותי Google Play, החסרים בטאבלט שלך." + "קבל את שירותי Google Play" + "הפעל את שירותי Google Play" + "יישום זה לא יעבוד אם לא תפעיל את שירותי Google Play." + "הפעל את שירותי Google Play" + "עדכן את שירותי Google Play" + "יישום זה לא יפעל אם לא תעדכן את שירותי Google Play." + + + "עדכן" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ja/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ja/strings.xml new file mode 100644 index 00000000..4bfc9bb3 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ja/strings.xml @@ -0,0 +1,16 @@ + + + "Google Play開発者サービスをインストール" + "このアプリの実行にはGoogle Play開発者サービスが必要ですが、お使いの携帯端末にはインストールされていません。" + "このアプリの実行にはGoogle Play開発者サービスが必要ですが、お使いのタブレットにはインストールされていません。" + "Play開発者サービスを入手" + "Google Play開発者サービスを有効化" + "このアプリの実行には、Google Play開発者サービスの有効化が必要です。" + "Play開発者サービスを有効化" + "Google Play開発者サービスの更新" + "このアプリの実行には、Google Play開発者サービスの更新が必要です。" + + + "更新" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ko/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ko/strings.xml new file mode 100644 index 00000000..749b112d --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ko/strings.xml @@ -0,0 +1,16 @@ + + + "Google Play 서비스 설치" + "휴대전화에 Google Play 서비스가 설치되어 있어야 이 앱이 실행됩니다." + "태블릿에 Google Play 서비스가 설치되어 있어야 이 앱이 실행됩니다." + "Google Play 서비스 설치" + "Google Play 서비스 사용" + "Google Play 서비스를 사용하도록 설정해야 이 앱이 작동합니다." + "Google Play 서비스 사용" + "Google Play 서비스 업데이트" + "Google Play 서비스를 업데이트해야만 이 앱이 실행됩니다." + + + "업데이트" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-lt/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-lt/strings.xml new file mode 100644 index 00000000..709acc7f --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-lt/strings.xml @@ -0,0 +1,16 @@ + + + "Gauti „Google Play“ pasl." + "Ši programa neveiks be „Google Play“ paslaugų, kurių nėra jūsų telefone." + "Ši programa neveiks be „Google Play“ paslaugų, kurių nėra jūsų planšetiniame kompiuteryje." + "Gauti „Google Play“ pasl." + "Įgalinti „Google Play“ pasl." + "Ši programa neveiks, nebent įgalinsite „Google Play“ paslaugas." + "Įgalinti „Google Play“ pasl." + "Atnaujinti „Google Play“ pasl." + "Ši programa neveiks, nebent atnaujinsite „Google Play“ paslaugas." + + + "Atnaujinti" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-lv/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-lv/strings.xml new file mode 100644 index 00000000..ed3de80b --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-lv/strings.xml @@ -0,0 +1,16 @@ + + + "Iegūt Google Play pakalpojumus" + "Lai šī lietotne darbotos, jūsu tālrunī ir jāinstalē Google Play pakalpojumi." + "Lai šī lietotne darbotos, jūsu planšetdatorā ir jāinstalē Google Play pakalpojumi." + "Iegūt Google Play pakalpojumus" + "Iespējot Google Play pakalpojumus" + "Lai šī lietotne darbotos, iespējojiet Google Play pakalpojumus." + "Iespējot Play pakalpojumus" + "Google Play pakalpojumu atjaunināšana" + "Lai šī lietotne darbotos, atjauniniet Google Play pakalpojumus." + + + "Atjaunināt" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ms/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ms/strings.xml new file mode 100644 index 00000000..a36cf422 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ms/strings.xml @@ -0,0 +1,15 @@ + + + "Dapatkan perkhidmatan Google Play" + "Apl ini tidak akan berjalan tanpa perkhidmatan Google Play dan apl ini tiada pada telefon anda." + "Apl ini tidak akan berjalan tanpa perkhidmatan Google Play dan apl ini tiada pada tablet anda." + "Dapatkan perkhidmatan Google Play" + "Dayakan perkhidmatan Google Play" + "Apl ini tidak akan berfungsi kecuali anda mendayakan perkhidmatan Google Play." + "Dayakan perkhidmatan Google Play" + "Kemas kini perkhidmatan Google Play" + "Apl ini tidak akan berjalan kecuali anda mengemas kini perkhidmatan Google Play." + "Isu tidak diketahui dengan perkhidmatan Google Play." + "Kemas kini" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-nb/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-nb/strings.xml new file mode 100644 index 00000000..8e29371d --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-nb/strings.xml @@ -0,0 +1,16 @@ + + + "Få Google Play Tjenester" + "Denne appen kan ikke kjøres uten Google Play Tjenester, som ikke er installert på telefonen din." + "Denne appen kan ikke kjøres uten Google Play Tjenester, som ikke er installert på nettbrettet ditt." + "Få Google Play Tjenester" + "Aktiver Google Play Tjenester" + "Denne appen fungerer ikke med mindre du aktiverer Google Play Tjenester." + "Aktiver Google Play Tjenester" + "Oppdater Google Play Tjenester" + "Denne appen kan ikke kjøres før du oppdaterer Google Play Tjenester." + + + "Oppdater" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-nl/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-nl/strings.xml new file mode 100644 index 00000000..dc62a4d9 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-nl/strings.xml @@ -0,0 +1,16 @@ + + + "Google Play-services ophalen" + "Deze app kan niet worden uitgevoerd zonder Google Play-services die ontbreken op uw telefoon." + "Deze app kan niet worden uitgevoerd zonder Google Play-services die ontbreken op uw tablet." + "Google Play-services ophalen" + "Google Play-services inschakelen" + "Deze app werkt niet, tenzij u Google Play-services inschakelt." + "Google Play-services inschak." + "Google Play-services bijwerken" + "Deze app kan niet worden uitgevoerd, tenzij u Google Play-services bijwerkt." + + + "Bijwerken" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-pl/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-pl/strings.xml new file mode 100644 index 00000000..648e53f4 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-pl/strings.xml @@ -0,0 +1,16 @@ + + + "Pobierz Usługi Google Play" + "Ta aplikacja nie będzie działać bez Usług Google Play, których brak na telefonie." + "Ta aplikacja nie będzie działać bez Usług Google Play, których brak na tablecie." + "Pobierz Usługi Google Play" + "Włącz Usługi Google Play" + "Ta aplikacja nie będzie działać, jeśli nie włączysz Usług Google Play." + "Włącz Usługi Google Play" + "Aktualizuj Usługi Google Play" + "Ta aplikacja nie będzie działać, jeśli nie zaktualizujesz Usług Google Play." + + + "Aktualizuj" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-pt-rPT/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-pt-rPT/strings.xml new file mode 100644 index 00000000..4e11bc3a --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-pt-rPT/strings.xml @@ -0,0 +1,16 @@ + + + "Obter serviços do Google Play" + "Esta aplicação não será executada sem os serviços do Google Play, que estão em falta no seu telemóvel." + "Esta aplicação não será executada sem os serviços do Google Play, que estão em falta no seu tablet." + "Obter serviços do Google Play" + "Ativar serviços do Google Play" + "Esta aplicação não funcionará enquanto não ativar os Serviços do Google Play." + "Ativar serviços do Google Play" + "Atualizar serviços do Google Play" + "Esta aplicação não será executada enquanto não atualizar os serviços do Google Play." + + + "Atualizar" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-pt/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-pt/strings.xml new file mode 100644 index 00000000..02ef8342 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-pt/strings.xml @@ -0,0 +1,16 @@ + + + "Obtenha o Google Play Services" + "Este aplicativo não funciona sem o Google Play Services, que não está instalado em seu telefone." + "Este aplicativo não funciona sem o Google Play Services, que não está instalado em seu tablet." + "Obter o Google Play Services" + "Ative o Gogle Play Services" + "Este aplicativo só funciona com o Google Play Services ativado." + "Ativar o Gogle Play Services" + "Atualize o Google Play Services" + "Este aplicativo não funciona sem uma versão atualizada do Google Play Services." + + + "Atualizar" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ro/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ro/strings.xml new file mode 100644 index 00000000..a256fa1d --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ro/strings.xml @@ -0,0 +1,16 @@ + + + "Obţineţi Servicii Google Play" + "Această aplicaţie nu va rula fără Servicii Google Play, care lipsesc de pe telefon." + "Această aplicaţie nu va rula fără Servicii Google Play, care lipsesc de pe tabletă." + "Obţineţi Servicii Google Play" + "Activaţi Servicii Google Play" + "Această aplicaţie nu va funcţiona decât dacă activaţi Servicii Google Play." + "Activaţi Servicii Google Play" + "Actualizaţi Servicii Google Play" + "Această aplicaţie nu va rula decât dacă actualizaţi Servicii Google Play." + + + "Actualizaţi" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ru/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ru/strings.xml new file mode 100644 index 00000000..79995130 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-ru/strings.xml @@ -0,0 +1,16 @@ + + + "Установите Сервисы Google Play" + "Для работы этого приложения требуется установить Сервисы Google Play." + "Для работы этого приложения требуется установить Сервисы Google Play." + "Установить" + "Включите Сервисы Google Play" + "Для работы этого приложения требуется включить Сервисы Google Play." + "Включить Сервисы Google Play" + "Обновите Сервисы Google Play" + "Для работы этого приложения требуется обновить Сервисы Google Play." + + + "Обновить" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sk/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sk/strings.xml new file mode 100644 index 00000000..8162a8ce --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sk/strings.xml @@ -0,0 +1,16 @@ + + + "Inštalovať služby Google Play" + "Na spustenie tejto aplikácie sa vyžadujú služby Google Play, ktoré v telefóne nemáte." + "Na spustenie tejto aplikácie sa vyžadujú služby Google Play, ktoré v tablete nemáte." + "Inštalovať služby Google Play" + "Povoliť služby Google Play" + "Táto aplikácia bude fungovať až po povolení služieb Google Play." + "Povoliť služby Google Play" + "Aktualizovať služby Google Play" + "Túto aplikáciu bude možné spustiť až po aktualizácii služieb Google Play." + + + "Aktualizovať" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sl/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sl/strings.xml new file mode 100644 index 00000000..9337802a --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sl/strings.xml @@ -0,0 +1,16 @@ + + + "Začnite uporabljati storitve Google Play" + "Ta aplikacija ne deluje brez storitev Google Play, ki niso v telefonu." + "Ta aplikacija ne deluje brez storitev Google Play, ki niso v tabličnem računalniku." + "Začnite uporabljati storitve Google Play" + "Omogočanje storitev Google Play" + "Aplikacija ne bo delovala, če ne omogočite storitev Google Play." + "Omogoči storitve Google Play" + "Posodobitev storitve Google Play" + "Ta aplikacija ne deluje, če ne posodobite storitev Google Play." + + + "Posodobi" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sr/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sr/strings.xml new file mode 100644 index 00000000..9f6ed9ae --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sr/strings.xml @@ -0,0 +1,16 @@ + + + "Преузимање Google Play услуга" + "Ова апликација не може да се покрене без Google Play услуга, које недостају на телефону." + "Ова апликација не може да се покрене без Google Play услуга, које недостају на таблету." + "Преузми Google Play услуге" + "Омогућавање Google Play услуга" + "Ова апликација неће функционисати осим ако не омогућите Google Play услуге." + "Омогући Google Play услуге" + "Ажурирање Google Play услуга" + "Ова апликација не може да се покрене осим ако не ажурирате Google Play услуге." + + + "Ажурирај" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sv/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sv/strings.xml new file mode 100644 index 00000000..8afa4c1a --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sv/strings.xml @@ -0,0 +1,16 @@ + + + "Få Google Play-tjänster" + "Den här appen kan inte köras utan Google Play-tjänsterna, som saknas på mobilen." + "Den här appen kan inte köras utan Google Play-tjänsterna, som saknas på pekdatorn." + "Få Google Play-tjänster" + "Aktivera Google Play-tjänster" + "Du måste aktivera Google Play-tjänsterna för att den här appen ska fungera." + "Aktivera Google Play-tjänster" + "Uppdatera Google Play-tjänster" + "Du måste uppdatera Google Play-tjänsterna innan du kan köra den här appen." + + + "Uppdatera" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sw/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sw/strings.xml new file mode 100644 index 00000000..3dcd9be2 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-sw/strings.xml @@ -0,0 +1,16 @@ + + + "Pata huduma za Google Play" + "Programu hii haiwezi kuendeshwa bila huduma za Google Play, ambazo hazipo kwenye simu yako." + "Programu hii haiwezi kuendeshwa bila huduma za Google Play, ambazo hazipo kwenye kompyuta kibao yako." + "Pata huduma za Google Play" + "Wezesha huduma za Google Play" + "Programu hii haitafanyakazi isipokuwa uwezeshe huduma za Google Play." + "Wezesha huduma za Google Play" + "Sasisha huduma za Google Play" + "Programu hii haiwezi kuendeshwa ila tu usasishe huduma za Google Play." + + + "Sasisha" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-th/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-th/strings.xml new file mode 100644 index 00000000..93c4704a --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-th/strings.xml @@ -0,0 +1,16 @@ + + + "รับบริการ Google Play" + "แอปพลิเคชันนี้จะไม่ทำงานหากไม่มีบริการ Google Play ซึ่งไม่มีในโทรศัพท์ของคุณ" + "แอปพลิเคชันนี้จะไม่ทำงานหากไม่มีบริการ Google Play ซึ่งไม่มีในแท็บเล็ตของคุณ" + "รับบริการ Google Play" + "เปิดใช้งานบริการ Google Play" + "แอปพลิเคชันนี้จะไม่ทำงานจนกว่าคุณจะเปิดใช้งานบริการ Google Play" + "เปิดใช้งานบริการ Google Play" + "อัปเดตบริการ Google Play" + "แอปพลิเคชันนี้จะไม่ทำงานจนกว่าคุณจะอัปเดตบริการ Google Play" + + + "อัปเดต" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-tl/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-tl/strings.xml new file mode 100644 index 00000000..28aeb64b --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-tl/strings.xml @@ -0,0 +1,16 @@ + + + "Kunin ang mga serbisyo ng Google Play" + "Hindi gagana ang app na ito nang wala ang mga serbisyo ng Google Play, na wala sa iyong telepono." + "Hindi gagana ang app na ito nang wala ang mga serbisyo ng Google Play, na wala sa iyong tablet." + "Kunin serbisyo ng Google Play" + "Paganahin ang serbisyo ng Google Play" + "Hindi gagana ang app na ito maliban na lang kung papaganahin mo ang mga serbisyo ng Google Play." + "Paganahin Google Play service" + "I-update ang mga serbisyo ng Google Play" + "Hindi gagana ang app na ito maliban na lang kung i-a-update mo ang mga serbisyo ng Google Play." + + + "I-update" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-tr/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-tr/strings.xml new file mode 100644 index 00000000..73395500 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-tr/strings.xml @@ -0,0 +1,16 @@ + + + "Google Play Hizmetleri\'ni edin" + "Google Play Hizmetleri telefonunuzda yok ve bu uygulama Google Play Hizmetleri olmadan çalışmaz." + "Google Play Hizmetleri tabletinizde yok ve bu uygulama Google Play Hizmetleri olmadan çalışmaz." + "Google Play Hizmetleri\'ni edin" + "Google Play Hizmetleri\'ni etkinleştir" + "Bu uygulama, Google Play Hizmetleri etkinleştirilmeden çalışmaz" + "Google Play Hizmetleri\'ni etkinleştir" + "Google Play Hizmetleri\'ni Güncelle" + "Bu uygulama Google Play Hizmetleri güncellenmeden çalışmaz." + + + "Güncelle" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-uk/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-uk/strings.xml new file mode 100644 index 00000000..915e6813 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-uk/strings.xml @@ -0,0 +1,16 @@ + + + "Установити Google Play Послуги" + "Ця програма не запуститься без Google Play Послуг, яких немає у вашому телефоні." + "Ця програма не запуститься без Google Play Послуг, яких немає на вашому планшетному ПК." + "Отримати Google Play Послуги" + "Увімкнути Google Play Послуги" + "Ця програма не працюватиме, поки ви не ввімкнете Google Play Послуги." + "Увімкнути Google Play Послуги" + "Оновити Google Play послуги" + "Ця програма не запуститься, поки ви не оновите Google Play Послуги." + + + "Оновити" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-vi/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-vi/strings.xml new file mode 100644 index 00000000..82b09678 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-vi/strings.xml @@ -0,0 +1,16 @@ + + + "Cài đặt dịch vụ của Google Play" + "Ứng dụng này sẽ không chạy nếu không có dịch vụ của Google Play. Điện thoại của bạn bị thiếu dịch vụ này." + "Ứng dụng này sẽ không chạy nếu không có dịch vụ của Google Play. Máy tính bảng của bạn bị thiếu dịch vụ này." + "Cài dịch vụ của Google Play" + "Bật dịch vụ của Google Play" + "Ứng dụng này sẽ không hoạt động trừ khi bạn bật dịch vụ của Google Play." + "Bật dịch vụ của Google Play" + "Cập nhật dịch vụ của Google Play" + "Ứng dụng này sẽ không chạy trừ khi bạn cập nhật dịch vụ của Google Play." + + + "Cập nhật" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-zh-rCN/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-zh-rCN/strings.xml new file mode 100644 index 00000000..78a82c38 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-zh-rCN/strings.xml @@ -0,0 +1,16 @@ + + + "获取 Google Play 服务" + "您的手机中没有 Google Play 服务,您必须先安装该服务才能运行此应用。" + "您的平板电脑中没有 Google Play 服务,您必须先安装该服务才能运行此应用。" + "获取 Google Play 服务" + "启用 Google Play 服务" + "您必须先启用 Google Play 服务才能运行此应用。" + "启用 Google Play 服务" + "更新 Google Play 服务" + "您必须先更新 Google Play 服务才能运行此应用。" + + + "更新" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-zh-rTW/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-zh-rTW/strings.xml new file mode 100644 index 00000000..24bf9df0 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-zh-rTW/strings.xml @@ -0,0 +1,16 @@ + + + "取得 Google Play 服務" + "您的手機並未安裝 Google Play 服務,所以無法執行這個應用程式。" + "您的平板電腦並未安裝 Google Play 服務,所以無法執行這個應用程式。" + "取得 Google Play 服務" + "啟用 Google Play 服務" + "您必須啟用 Google Play 服務,這個應用程式才能運作。" + "啟用 Google Play 服務" + "更新 Google Play 服務" + "您必須更新 Google Play 服務,才能執行這個應用程式。" + + + "更新" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values-zu/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-zu/strings.xml new file mode 100644 index 00000000..0f1af25b --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values-zu/strings.xml @@ -0,0 +1,16 @@ + + + "Thola amasevisi e-Google Play" + "Lolu hlelo lokusebenza ngeke lusebenze ngaphandle kwamasevisi e-Google Play, angekho efonini yakho." + "Lolu hlelo lokusebenza ngeke lusebenze ngaphandle kwamasevisi e-Google Play, angekho kuthebhulethi yakho." + "Thola amasevisi e-Google Play" + "Nika amandla amasevisi e-Google Play" + "Lolu hlelo lokusebenza ngeke lisebenze ngaphandle nje kokuthi unike amandla amasevisi e-Google Play." + "Nika amandla amasevisi e-Google Play" + "Buyekeza amasevisi e-Google Play" + "Lolu hlelo lokusebenza ngeke lusebenze ngaphandle nje kokuthi ubuyekeze amasevisi e-Google Play." + + + "Buyekeza" + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values/maps_attrs.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values/maps_attrs.xml new file mode 100644 index 00000000..ade282e9 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values/maps_attrs.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/res/values/strings.xml b/OpenGPSTracker/external_sources/google-play-services_lib/res/values/strings.xml new file mode 100644 index 00000000..d27bc068 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/res/values/strings.xml @@ -0,0 +1,47 @@ + + + + + Get Google Play services + + + This app won\'t run without Google Play services, which are missing from your phone. + + + This app won\'t run without Google Play services, which are missing from your tablet. + + + Get Google Play services + + + Enable Google Play services + + + This app won\'t work unless you enable Google Play services. + + + Enable Google Play services + + + Update Google Play services + + + This app won\'t run unless you update Google Play services. + + + Unknown issue with Google Play services. + + + Update + + diff --git a/OpenGPSTracker/external_sources/google-play-services_lib/src/.readme b/OpenGPSTracker/external_sources/google-play-services_lib/src/.readme new file mode 100644 index 00000000..145ea525 --- /dev/null +++ b/OpenGPSTracker/external_sources/google-play-services_lib/src/.readme @@ -0,0 +1 @@ +This hidden file is here to ensure there is a src folder. From e6c18fd6341a46df3022a7205a19a52b90479c2f Mon Sep 17 00:00:00 2001 From: Rene de Groot Date: Sun, 6 Jan 2013 11:58:54 +0100 Subject: [PATCH 06/12] migrating code... --- .../application/AndroidManifest.xml | 46 +- OpenGPSTracker/application/project.properties | 1 + .../res/layout-land/layerdialog.xml | 174 +++--- .../application/res/layout/activity_map.xml | 133 ++++- .../application/res/layout/layerdialog.xml | 156 +++--- .../application/res/menu/loggermap.xml | 60 ++ .../application/res/menu/statistics.xml | 23 + .../application/res/menu/tracklist.xml | 25 + .../gpstracker/actions/Statistics.java | 25 +- .../activity/LoggerMapActivity.java | 526 ++++++++++++++++++ .../android/gpstracker/viewer/TrackList.java | 22 +- 11 files changed, 944 insertions(+), 247 deletions(-) create mode 100644 OpenGPSTracker/application/res/menu/loggermap.xml create mode 100644 OpenGPSTracker/application/res/menu/statistics.xml create mode 100644 OpenGPSTracker/application/res/menu/tracklist.xml diff --git a/OpenGPSTracker/application/AndroidManifest.xml b/OpenGPSTracker/application/AndroidManifest.xml index 30697bc1..502859e4 100644 --- a/OpenGPSTracker/application/AndroidManifest.xml +++ b/OpenGPSTracker/application/AndroidManifest.xml @@ -3,22 +3,18 @@ package="nl.sogeti.android.gpstracker" android:installLocation="auto" android:versionCode="80" - android:versionName="1.3.4" > + android:versionName="1.4" > - - - + + + + - @@ -26,24 +22,38 @@ + + + + + - - + android:name="com.google.android.maps.v2.API_KEY" + android:value="AIzaSyBOvjftoANGhCgSZSpCAB6UecUBoeMFggA" /> + + - - diff --git a/OpenGPSTracker/application/project.properties b/OpenGPSTracker/application/project.properties index 59d9bb3e..d62646b0 100644 --- a/OpenGPSTracker/application/project.properties +++ b/OpenGPSTracker/application/project.properties @@ -17,3 +17,4 @@ android.library.reference.2=../external_sources/httpclient-4.1.1/httpclient android.library.reference.3=../external_sources/httpcore-4.1.1/httpcore android.library.reference.4=../external_sources/signpost/signpost-core android.library.reference.5=../external_sources/httpclient-4.1.1/httpmime +android.library.reference.6=../external_sources/google-play-services_lib diff --git a/OpenGPSTracker/application/res/layout-land/layerdialog.xml b/OpenGPSTracker/application/res/layout-land/layerdialog.xml index 0e9b5a34..ff3a3424 100644 --- a/OpenGPSTracker/application/res/layout-land/layerdialog.xml +++ b/OpenGPSTracker/application/res/layout-land/layerdialog.xml @@ -1,103 +1,77 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + \ No newline at end of file diff --git a/OpenGPSTracker/application/res/layout/activity_map.xml b/OpenGPSTracker/application/res/layout/activity_map.xml index 32073bc4..007f7043 100644 --- a/OpenGPSTracker/application/res/layout/activity_map.xml +++ b/OpenGPSTracker/application/res/layout/activity_map.xml @@ -1,5 +1,130 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OpenGPSTracker/application/res/layout/layerdialog.xml b/OpenGPSTracker/application/res/layout/layerdialog.xml index e49946a6..882f3222 100644 --- a/OpenGPSTracker/application/res/layout/layerdialog.xml +++ b/OpenGPSTracker/application/res/layout/layerdialog.xml @@ -1,94 +1,66 @@ - - + - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/OpenGPSTracker/application/res/menu/loggermap.xml b/OpenGPSTracker/application/res/menu/loggermap.xml new file mode 100644 index 00000000..54eeb701 --- /dev/null +++ b/OpenGPSTracker/application/res/menu/loggermap.xml @@ -0,0 +1,60 @@ + +

+ + + + + + + // More + + + + + + \ No newline at end of file diff --git a/OpenGPSTracker/application/res/menu/statistics.xml b/OpenGPSTracker/application/res/menu/statistics.xml new file mode 100644 index 00000000..c8b43b30 --- /dev/null +++ b/OpenGPSTracker/application/res/menu/statistics.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/OpenGPSTracker/application/res/menu/tracklist.xml b/OpenGPSTracker/application/res/menu/tracklist.xml new file mode 100644 index 00000000..3141eb52 --- /dev/null +++ b/OpenGPSTracker/application/res/menu/tracklist.xml @@ -0,0 +1,25 @@ + + + + + + + + + \ No newline at end of file diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/Statistics.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/Statistics.java index 9795a3ef..e10bd93a 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/Statistics.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/actions/Statistics.java @@ -72,9 +72,6 @@ public class Statistics extends Activity implements StatisticsDelegate { private static final int DIALOG_GRAPHTYPE = 3; - private static final int MENU_GRAPHTYPE = 11; - private static final int MENU_TRACKLIST = 12; - private static final int MENU_SHARE = 41; private static final String TRACKURI = "TRACKURI"; private static final String TAG = "OGT.Statistics"; @@ -285,11 +282,9 @@ protected void onResume() @Override public boolean onCreateOptionsMenu( Menu menu ) { - boolean result = super.onCreateOptionsMenu( menu ); - menu.add( ContextMenu.NONE, MENU_GRAPHTYPE, ContextMenu.NONE, R.string.menu_graphtype ).setIcon( R.drawable.ic_menu_picture ).setAlphabeticShortcut( 't' ); - menu.add( ContextMenu.NONE, MENU_TRACKLIST, ContextMenu.NONE, R.string.menu_tracklist ).setIcon( R.drawable.ic_menu_show_list ).setAlphabeticShortcut( 'l' ); - menu.add( ContextMenu.NONE, MENU_SHARE, ContextMenu.NONE, R.string.menu_shareTrack ).setIcon( R.drawable.ic_menu_share ).setAlphabeticShortcut( 's' ); - return result; + super.onCreateOptionsMenu( menu ); + getMenuInflater().inflate(R.menu.statistics, menu); + return true; } @Override @@ -299,23 +294,23 @@ public boolean onOptionsItemSelected( MenuItem item ) Intent intent; switch( item.getItemId() ) { - case MENU_GRAPHTYPE: + case R.id.menu_statistics_type: showDialog( DIALOG_GRAPHTYPE ); handled = true; break; - case MENU_TRACKLIST: + case R.id.menu_statistics_tracklist: intent = new Intent( this, TrackList.class ); intent.putExtra( Tracks._ID, mTrackUri.getLastPathSegment() ); - startActivityForResult( intent, MENU_TRACKLIST ); + startActivityForResult( intent, R.id.menu_statistics_tracklist ); break; - case MENU_SHARE: + case R.id.menu_statistics_share: intent = new Intent( Intent.ACTION_RUN ); intent.setDataAndType( mTrackUri, Tracks.CONTENT_ITEM_TYPE ); intent.addFlags( Intent.FLAG_GRANT_READ_URI_PERMISSION ); Bitmap bm = mViewFlipper.getDrawingCache(); Uri screenStreamUri = ShareTrack.storeScreenBitmap(bm); intent.putExtra(Intent.EXTRA_STREAM, screenStreamUri); - startActivityForResult(Intent.createChooser( intent, getString( R.string.share_track ) ), MENU_SHARE); + startActivityForResult(Intent.createChooser( intent, getString( R.string.share_track ) ), R.id.menu_statistics_share); handled = true; break; default: @@ -343,14 +338,14 @@ protected void onActivityResult( int requestCode, int resultCode, Intent intent super.onActivityResult( requestCode, resultCode, intent ); switch( requestCode ) { - case MENU_TRACKLIST: + case R.id.menu_statistics_tracklist: if( resultCode == RESULT_OK ) { mTrackUri = intent.getData(); drawTrackingStatistics(); } break; - case MENU_SHARE: + case R.id.menu_statistics_share: ShareTrack.clearScreenBitmap(); break; default: diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java index c959a13d..3c1117df 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java @@ -13,8 +13,51 @@ package nl.sogeti.android.gpstracker.activity; import nl.sogeti.android.gpstracker.R; +import nl.sogeti.android.gpstracker.actions.InsertNote; +import nl.sogeti.android.gpstracker.actions.ShareTrack; +import nl.sogeti.android.gpstracker.actions.Statistics; +import nl.sogeti.android.gpstracker.db.GPStracking.Tracks; +import nl.sogeti.android.gpstracker.logger.GPSLoggerServiceManager; +import nl.sogeti.android.gpstracker.util.Constants; +import nl.sogeti.android.gpstracker.viewer.ApplicationPreferenceActivity; +import nl.sogeti.android.gpstracker.viewer.TrackList; import android.app.Activity; +import android.app.AlertDialog; +import android.app.AlertDialog.Builder; +import android.app.Dialog; +import android.content.ActivityNotFoundException; +import android.content.ContentResolver; +import android.content.ContentUris; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; +import android.database.Cursor; +import android.graphics.Bitmap; +import android.net.Uri; import android.os.Bundle; +import android.os.PowerManager; +import android.os.PowerManager.WakeLock; +import android.preference.PreferenceManager; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.Menu; +import android.view.MenuItem; +import android.view.View; +import android.widget.AdapterView; +import android.widget.BaseAdapter; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.CompoundButton.OnCheckedChangeListener; +import android.widget.Gallery; +import android.widget.RadioButton; +import android.widget.RadioGroup; +import android.widget.SpinnerAdapter; +import android.widget.TextView; + +import com.google.android.gms.common.ConnectionResult; +import com.google.android.gms.common.GooglePlayServicesUtil; /** * ???? @@ -26,11 +69,494 @@ public class LoggerMapActivity extends Activity { private static final String TAG = "LoggerMapActivity"; + private static final int MENU_LOGGERMAP_TRACKLIST = 0; + private static final int MENU_LOGGERMAP_ABOUT = 2; + private static final int MENU_LOGGERMAP_TRACKING = 4; + private static final int MENU_LOGGERMAP_SHARE = 6; + private static final int MENU_LOGGERMAP_NOTE = 8; + private static final int DIALOG_NOTRACK = 24; + private static final int DIALOG_INSTALL_ABOUT = 29; + private static final int DIALOG_LAYERS = 31; + private static final int DIALOG_URIS = 34; + private static final int DIALOG_CONTRIB = 35; + private static final int DIALOG_PLAYERROR = 36; + + private long mTrackId = -1; + private GPSLoggerServiceManager mLoggerServiceManager; + private WakeLock mWakeLock; + private SharedPreferences mSharedPreferences; + + private BaseAdapter mMediaAdapter; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); + + mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); + mLoggerServiceManager = new GPSLoggerServiceManager(this); + } + + @Override + protected void onResume() + { + super.onResume(); + if (ConnectionResult.SUCCESS != GooglePlayServicesUtil.isGooglePlayServicesAvailable(this)) + { + showDialog(DIALOG_PLAYERROR); + } + + if (mWakeLock == null) + { + boolean disabledimming = mSharedPreferences.getBoolean(Constants.DISABLEDIMMING, false); + PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE); + if (disabledimming) + { + mWakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, TAG); + } + else + { + mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, TAG); + } + } + mLoggerServiceManager.startup(this, new ServiceConnected()); + } + + @Override + protected void onPause() + { + if (mWakeLock != null && mWakeLock.isHeld()) + { + mWakeLock.release(); + mWakeLock = null; + + Log.i(TAG, "onPause(): Released lock to keep screen on!"); + } + this.mLoggerServiceManager.shutdown(this); + + super.onPause(); + } + + @Override + protected void onDestroy() + { + if (mLoggerServiceManager.getLoggingState() == Constants.STOPPED) + { + stopService(new Intent(Constants.SERVICENAME)); + } + super.onDestroy(); + } + + @Override + public void onNewIntent(Intent newIntent) + { + Uri data = newIntent.getData(); + if (data != null) + { + moveToTrack(Long.parseLong(data.getLastPathSegment()), true); + } + } + + @Override + public boolean onCreateOptionsMenu(Menu menu) + { + super.onCreateOptionsMenu(menu); + getMenuInflater().inflate(R.menu.loggermap, menu); + return true; + } + + /* + * (non-Javadoc) + * @see android.app.Activity#onPrepareOptionsMenu(android.view.Menu) + */ + @Override + public boolean onPrepareOptionsMenu(Menu menu) + { + MenuItem noteMenu = menu.findItem(R.id.menu_loggermap_note); + noteMenu.setEnabled(mLoggerServiceManager.isMediaPrepared()); + + MenuItem shareMenu = menu.findItem(R.id.menu_loggermap_share); + shareMenu.setEnabled(mTrackId >= 0); + + return super.onPrepareOptionsMenu(menu); } + @Override + public boolean onOptionsItemSelected(MenuItem item) + { + boolean handled = false; + + Uri trackUri; + Intent intent; + switch (item.getItemId()) + { + case R.id.menu_loggermap_tracking: + intent = new Intent(this, ControlTrackingActivity.class); + startActivityForResult(intent, MENU_LOGGERMAP_TRACKING); + handled = true; + break; + case R.id.menu_loggermap_layers: + showDialog(DIALOG_LAYERS); + handled = true; + break; + case R.id.menu_loggermap_note: + intent = new Intent(this, InsertNote.class); + startActivityForResult(intent, MENU_LOGGERMAP_NOTE); + handled = true; + break; + case R.id.menu_loggermap_settings: + intent = new Intent(this, ApplicationPreferenceActivity.class); + startActivity(intent); + handled = true; + break; + case R.id.menu_loggermap_tracklist: + intent = new Intent(this, TrackList.class); + intent.putExtra(Tracks._ID, this.mTrackId); + startActivityForResult(intent, MENU_LOGGERMAP_TRACKLIST); + break; + case R.id.menu_loggermap_stats: + if (mTrackId >= 0) + { + intent = new Intent(this, Statistics.class); + trackUri = ContentUris.withAppendedId(Tracks.CONTENT_URI, mTrackId); + intent.setData(trackUri); + startActivity(intent); + handled = true; + break; + } + else + { + showDialog(DIALOG_NOTRACK); + } + handled = true; + break; + case R.id.menu_loggermap_about: + intent = new Intent("org.openintents.action.SHOW_ABOUT_DIALOG"); + try + { + startActivityForResult(intent, MENU_LOGGERMAP_ABOUT); + } + catch (ActivityNotFoundException e) + { + showDialog(DIALOG_INSTALL_ABOUT); + } + break; + case R.id.menu_loggermap_share: + intent = new Intent(Intent.ACTION_RUN); + trackUri = ContentUris.withAppendedId(Tracks.CONTENT_URI, mTrackId); + intent.setDataAndType(trackUri, Tracks.CONTENT_ITEM_TYPE); + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + Bitmap bm = findViewById(R.id.mapScreen).getDrawingCache(); + Uri screenStreamUri = ShareTrack.storeScreenBitmap(bm); + intent.putExtra(Intent.EXTRA_STREAM, screenStreamUri); + startActivityForResult(Intent.createChooser(intent, getString(R.string.share_track)), MENU_LOGGERMAP_SHARE); + handled = true; + break; + case R.id.menu_loggermap_contrib: + showDialog(DIALOG_CONTRIB); + default: + handled = super.onOptionsItemSelected(item); + break; + } + return handled; + } + + /* + * (non-Javadoc) + * @see android.app.Activity#onCreateDialog(int) + */ + @Override + protected Dialog onCreateDialog(int id, Bundle bundle) + { + Dialog dialog = null; + LayoutInflater factory = null; + View view = null; + Builder builder = null; + switch (id) + { + case DIALOG_LAYERS: + builder = new AlertDialog.Builder(this); + factory = LayoutInflater.from(this); + view = factory.inflate(R.layout.layerdialog, null); + + CheckBox traffic = (CheckBox) view.findViewById(R.id.layer_traffic); + CheckBox speed = (CheckBox) view.findViewById(R.id.layer_speed); + CheckBox altitude = (CheckBox) view.findViewById(R.id.layer_altitude); + CheckBox distance = (CheckBox) view.findViewById(R.id.layer_distance); + CheckBox location = (CheckBox) view.findViewById(R.id.layer_location); + + ((RadioGroup) view.findViewById(R.id.google_backgrounds)).setOnCheckedChangeListener(new BaseLayerChangeListener()); + OnCheckedChangeListener checkedChangeListener = new LayerCheckedChangeListener(); + traffic.setOnCheckedChangeListener(checkedChangeListener); + speed.setOnCheckedChangeListener(checkedChangeListener); + altitude.setOnCheckedChangeListener(checkedChangeListener); + distance.setOnCheckedChangeListener(checkedChangeListener); + location.setOnCheckedChangeListener(checkedChangeListener); + + builder.setTitle(R.string.dialog_layer_title).setIcon(android.R.drawable.ic_dialog_map).setPositiveButton(R.string.btn_okay, null).setView(view); + dialog = builder.create(); + return dialog; + case DIALOG_NOTRACK: + builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.dialog_notrack_title).setMessage(R.string.dialog_notrack_message).setIcon(android.R.drawable.ic_dialog_alert) + .setPositiveButton(R.string.btn_selecttrack, new NoTrackDialogListener()).setNegativeButton(R.string.btn_cancel, null); + dialog = builder.create(); + return dialog; + case DIALOG_URIS: + builder = new AlertDialog.Builder(this); + factory = LayoutInflater.from(this); + + view = factory.inflate(R.layout.mediachooser, null); + Gallery gallery = (Gallery) view.findViewById(R.id.gallery); + builder.setTitle(R.string.dialog_select_media_title).setMessage(R.string.dialog_select_media_message).setIcon(android.R.drawable.ic_dialog_alert) + .setNegativeButton(R.string.btn_cancel, null).setPositiveButton(R.string.btn_okay, new NoteSelectDialogListener(gallery)).setView(view); + dialog = builder.create(); + return dialog; + case DIALOG_CONTRIB: + builder = new AlertDialog.Builder(this); + factory = LayoutInflater.from(this); + view = factory.inflate(R.layout.contrib, null); + TextView contribView = (TextView) view.findViewById(R.id.contrib_view); + contribView.setText(R.string.dialog_contrib_message); + builder.setTitle(R.string.dialog_contrib_title).setView(view).setIcon(android.R.drawable.ic_dialog_email).setPositiveButton(R.string.btn_okay, null); + dialog = builder.create(); + return dialog; + case DIALOG_PLAYERROR: + int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); + dialog = GooglePlayServicesUtil.getErrorDialog(result, this, DIALOG_PLAYERROR); + return dialog; + default: + return super.onCreateDialog(id, bundle); + } + } + + /* + * (non-Javadoc) + * @see android.app.Activity#onPrepareDialog(int, android.app.Dialog) + */ + @Override + protected void onPrepareDialog(int id, Dialog dialog, Bundle bundle) + { + RadioButton satellite; + RadioButton regular; + switch (id) + { + case DIALOG_LAYERS: + satellite = (RadioButton) dialog.findViewById(R.id.layer_google_satellite); + satellite.setChecked(mSharedPreferences.getBoolean(Constants.SATELLITE, false)); + regular = (RadioButton) dialog.findViewById(R.id.layer_google_regular); + regular.setChecked(!mSharedPreferences.getBoolean(Constants.SATELLITE, false)); + + CheckBox traffic = (CheckBox) dialog.findViewById(R.id.layer_traffic); + traffic.setChecked(mSharedPreferences.getBoolean(Constants.TRAFFIC, false)); + CheckBox speed = (CheckBox) dialog.findViewById(R.id.layer_speed); + ; + speed.setChecked(mSharedPreferences.getBoolean(Constants.SPEED, false)); + CheckBox altitude = (CheckBox) dialog.findViewById(R.id.layer_altitude); + altitude.setChecked(mSharedPreferences.getBoolean(Constants.ALTITUDE, false)); + CheckBox distance = (CheckBox) dialog.findViewById(R.id.layer_distance); + distance.setChecked(mSharedPreferences.getBoolean(Constants.DISTANCE, false)); + CheckBox location = (CheckBox) dialog.findViewById(R.id.layer_location); + location.setChecked(mSharedPreferences.getBoolean(Constants.LOCATION, false)); + break; + case DIALOG_URIS: + Gallery gallery = (Gallery) dialog.findViewById(R.id.gallery); + gallery.setAdapter(mMediaAdapter); + break; + default: + break; + } + super.onPrepareDialog(id, dialog, bundle); + } + + private void moveToTrack(long trackId, boolean center) + { + Cursor track = null; + try + { + ContentResolver resolver = this.getContentResolver(); + Uri trackUri = ContentUris.withAppendedId(Tracks.CONTENT_URI, trackId); + track = resolver.query(trackUri, new String[] { Tracks.NAME }, null, null, null); + if (track != null && track.moveToFirst()) + { + this.mTrackId = trackId; + Uri tracksegmentsUri = Uri.withAppendedPath(Tracks.CONTENT_URI, trackId + "/segments"); + + updateTitleBar(); + } + } + finally + { + if (track != null) + { + track.close(); + } + } + } + + private void updateTitleBar() + { + ContentResolver resolver = this.getContentResolver(); + Cursor trackCursor = null; + try + { + trackCursor = resolver.query(ContentUris.withAppendedId(Tracks.CONTENT_URI, this.mTrackId), new String[] { Tracks.NAME }, null, null, null); + if (trackCursor != null && trackCursor.moveToLast()) + { + String trackName = trackCursor.getString(0); + this.setTitle(this.getString(R.string.app_name) + ": " + trackName); + } + } + finally + { + if (trackCursor != null) + { + trackCursor.close(); + } + } + } + + private void updateBlankingBehavior() + { + boolean disableblanking = mSharedPreferences.getBoolean(Constants.DISABLEBLANKING, false); + if (disableblanking && mWakeLock != null) + { + if (mLoggerServiceManager.getLoggingState() == Constants.LOGGING && !mWakeLock.isHeld()) + { + mWakeLock.acquire(); + Log.w(TAG, "Acquired lock to keep screen on!"); + } + } + } + + private void setTrafficOverlay(boolean b) + { + Editor editor = mSharedPreferences.edit(); + editor.putBoolean(Constants.TRAFFIC, b); + editor.commit(); + } + + private void setSatelliteOverlay(boolean b) + { + Editor editor = mSharedPreferences.edit(); + editor.putBoolean(Constants.SATELLITE, b); + editor.commit(); + } + + private void setSpeedOverlay(boolean b) + { + Editor editor = mSharedPreferences.edit(); + editor.putBoolean(Constants.SPEED, b); + editor.commit(); + } + + private void setAltitudeOverlay(boolean b) + { + Editor editor = mSharedPreferences.edit(); + editor.putBoolean(Constants.ALTITUDE, b); + editor.commit(); + } + + private void setDistanceOverlay(boolean b) + { + Editor editor = mSharedPreferences.edit(); + editor.putBoolean(Constants.DISTANCE, b); + editor.commit(); + } + + private void setLocationOverlay(boolean b) + { + Editor editor = mSharedPreferences.edit(); + editor.putBoolean(Constants.LOCATION, b); + editor.commit(); + } + + class ServiceConnected implements Runnable + { + @Override + public void run() + { + updateBlankingBehavior(); + } + }; + + class BaseLayerChangeListener implements android.widget.RadioGroup.OnCheckedChangeListener + { + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) + { + switch (checkedId) + { + case R.id.layer_google_satellite: + setSatelliteOverlay(true); + break; + case R.id.layer_google_regular: + setSatelliteOverlay(false); + break; + default: + break; + } + } + }; + + class LayerCheckedChangeListener implements OnCheckedChangeListener + { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) + { + int checkedId; + checkedId = buttonView.getId(); + switch (checkedId) + { + case R.id.layer_traffic: + setTrafficOverlay(isChecked); + break; + case R.id.layer_speed: + setSpeedOverlay(isChecked); + break; + case R.id.layer_altitude: + setAltitudeOverlay(isChecked); + break; + case R.id.layer_distance: + setDistanceOverlay(isChecked); + break; + case R.id.layer_location: + setLocationOverlay(isChecked); + break; + default: + break; + } + } + }; + + class NoTrackDialogListener implements DialogInterface.OnClickListener + { + @Override + public void onClick(DialogInterface dialog, int which) + { + Intent tracklistIntent = new Intent(LoggerMapActivity.this, TrackList.class); + tracklistIntent.putExtra(Tracks._ID, LoggerMapActivity.this.mTrackId); + startActivityForResult(tracklistIntent, MENU_LOGGERMAP_TRACKLIST); + } + }; + + class NoteSelectDialogListener implements DialogInterface.OnClickListener + { + private AdapterView mGallery; + + public NoteSelectDialogListener(Gallery gallery) + { + mGallery = gallery; + } + + @Override + public void onClick(DialogInterface dialog, int which) + { + Uri selected = (Uri) mGallery.getSelectedItem(); + // TODO not implemented + //SegmentOverlay.handleMedia(LoggerMap.this, selected); + Log.e(TAG, "Not implemented"); + } + }; } diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java index 0bfeee49..d1a59d3e 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/viewer/TrackList.java @@ -94,10 +94,6 @@ public class TrackList extends ListActivity implements ProgressListener private static final int MENU_SHARE = Menu.FIRST + 1; private static final int MENU_RENAME = Menu.FIRST + 2; private static final int MENU_STATS = Menu.FIRST + 3; - private static final int MENU_SEARCH = Menu.FIRST + 4; - private static final int MENU_VACUUM = Menu.FIRST + 5; - private static final int MENU_PICKER = Menu.FIRST + 6; - private static final int MENU_BREADCRUMBS = Menu.FIRST + 7; public static final int DIALOG_FILENAME = Menu.FIRST + 22; private static final int DIALOG_RENAME = Menu.FIRST + 23; @@ -241,13 +237,9 @@ protected void onSaveInstanceState(Bundle outState) @Override public boolean onCreateOptionsMenu(Menu menu) { - boolean result = super.onCreateOptionsMenu(menu); - - menu.add(ContextMenu.NONE, MENU_SEARCH, ContextMenu.NONE, android.R.string.search_go).setIcon(android.R.drawable.ic_search_category_default).setAlphabeticShortcut(SearchManager.MENU_KEY); - menu.add(ContextMenu.NONE, MENU_VACUUM, ContextMenu.NONE, R.string.menu_vacuum).setIcon(android.R.drawable.ic_menu_crop); - menu.add(ContextMenu.NONE, MENU_PICKER, ContextMenu.NONE, R.string.menu_picker).setIcon(android.R.drawable.ic_menu_add); - menu.add(ContextMenu.NONE, MENU_BREADCRUMBS, ContextMenu.NONE, R.string.dialog_breadcrumbsconnect).setIcon(android.R.drawable.ic_menu_revert); - return result; + super.onCreateOptionsMenu(menu); + getMenuInflater().inflate(R.menu.tracklist, menu); + return true; } @Override @@ -256,14 +248,14 @@ public boolean onOptionsItemSelected(MenuItem item) boolean handled = false; switch (item.getItemId()) { - case MENU_SEARCH: + case R.id.menu_tracklist_search: onSearchRequested(); handled = true; break; - case MENU_VACUUM: + case R.id.menu_tracklist_vacuum: showDialog(DIALOG_VACUUM); break; - case MENU_PICKER: + case R.id.menu_tracklist_picker: try { Intent intent = new Intent("org.openintents.action.PICK_FILE"); @@ -276,7 +268,7 @@ public boolean onOptionsItemSelected(MenuItem item) showDialog(DIALOG_INSTALL); } break; - case MENU_BREADCRUMBS: + case R.id.menu_tracklist_breadcrumbs: mService.removeAuthentication(); mService.clearAllCache(); mService.collectBreadcrumbsOauthToken(); From 48d07b2b410d7a9f3911a8d29395709015312b81 Mon Sep 17 00:00:00 2001 From: Rene de Groot Date: Sun, 6 Jan 2013 20:15:44 +0100 Subject: [PATCH 07/12] connect callback activity results --- .../activity/LoggerMapActivity.java | 47 ++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java index 3c1117df..6f3a15ef 100644 --- a/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java +++ b/OpenGPSTracker/application/src/nl/sogeti/android/gpstracker/activity/LoggerMapActivity.java @@ -148,6 +148,51 @@ protected void onDestroy() super.onDestroy(); } + /* + * (non-Javadoc) + * @see android.app.Activity#onActivityResult(int, int, android.content.Intent) + */ + @Override + protected void onActivityResult(int requestCode, int resultCode, Intent intent) + { + super.onActivityResult(requestCode, resultCode, intent); + Uri trackUri; + long trackId; + switch (requestCode) + { + case MENU_LOGGERMAP_TRACKLIST: + if (resultCode == RESULT_OK) + { + trackUri = intent.getData(); + trackId = Long.parseLong(trackUri.getLastPathSegment()); + moveToTrack(trackId, true); + } + break; + case MENU_LOGGERMAP_ABOUT: + break; + case MENU_LOGGERMAP_TRACKING: + if (resultCode == RESULT_OK) + { + trackUri = intent.getData(); + if (trackUri != null) + { + trackId = Long.parseLong(trackUri.getLastPathSegment()); + moveToTrack(trackId, true); + } + } + break; + case MENU_LOGGERMAP_SHARE: + ShareTrack.clearScreenBitmap(); + break; + case DIALOG_PLAYERROR: + Log.i(TAG, "Play services error dialog finished"); + break; + default: + Log.e(TAG, "Returned form unknow activity: " + requestCode); + break; + } + } + @Override public void onNewIntent(Intent newIntent) { @@ -380,7 +425,7 @@ private void moveToTrack(long trackId, boolean center) track = resolver.query(trackUri, new String[] { Tracks.NAME }, null, null, null); if (track != null && track.moveToFirst()) { - this.mTrackId = trackId; + mTrackId = trackId; Uri tracksegmentsUri = Uri.withAppendedPath(Tracks.CONTENT_URI, trackId + "/segments"); updateTitleBar(); From 20e850904d4993e8b9814349dc0795b14bd525ce Mon Sep 17 00:00:00 2001 From: Rene de Groot Date: Sun, 6 Jan 2013 21:05:47 +0100 Subject: [PATCH 08/12] Add play services license and use bunch of webview for notices --- .../application/AndroidManifest.xml | 4 + .../assets/apache_license_version_20.html | 196 +++++++++++++ .../application/assets/contrib.html | 28 ++ .../application/assets/contributions.html | 69 ++--- .../application/assets/license_short.html | 27 +- .../application/assets/notices.html | 268 ++++-------------- .../application/res/layout/about.xml | 32 ++- .../application/res/layout/contrib.xml | 19 +- .../application/res/menu/loggermap.xml | 20 +- .../application/res/raw/licence_short.txt | 12 - .../application/res/values/strings.xml | 16 +- .../activity/LoggerMapActivity.java | 57 ++-- .../android/gpstracker/viewer/About.java | 8 + .../android/gpstracker/viewer/TrackList.java | 2 +- 14 files changed, 436 insertions(+), 322 deletions(-) create mode 100644 OpenGPSTracker/application/assets/apache_license_version_20.html create mode 100644 OpenGPSTracker/application/assets/contrib.html delete mode 100644 OpenGPSTracker/application/res/raw/licence_short.txt diff --git a/OpenGPSTracker/application/AndroidManifest.xml b/OpenGPSTracker/application/AndroidManifest.xml index 502859e4..cb47c85c 100644 --- a/OpenGPSTracker/application/AndroidManifest.xml +++ b/OpenGPSTracker/application/AndroidManifest.xml @@ -166,6 +166,10 @@ android:scheme="x-oauthflow-opengpstracker" /> + + + + +
+

+ Apache License

Version 2.0, January 2004

http://www.apache.org/licenses/ +

+

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

+

+ 1. Definitions. +

+

"License" shall mean the terms and conditions for use, + reproduction, and distribution as defined by Sections 1 through 9 of + this document.

+

"Licensor" shall mean the copyright owner or entity authorized + by the copyright owner that is granting the License.

+ +

"Legal Entity" shall mean the union of the acting entity and + all other entities that control, are controlled by, or are under + common control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity.

+

"You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License.

+

"Source" form shall mean the preferred form for making + modifications, including but not limited to software source code, + documentation source, and configuration files.

+

"Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but not + limited to compiled object code, generated documentation, and + conversions to other media types.

+

"Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work (an + example is provided in the Appendix below).

+

"Derivative Works" shall mean any work, whether in Source or + Object form, that is based on (or derived from) the Work and for + which the editorial revisions, annotations, elaborations, or other + modifications represent, as a whole, an original work of authorship. + For the purposes of this License, Derivative Works shall not include + works that remain separable from, or merely link (or bind by name) to + the interfaces of, the Work and Derivative Works thereof.

+

"Contribution" shall mean any work of authorship, including the + original version of the Work and any modifications or additions to + that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright + owner or by an individual or Legal Entity authorized to submit on + behalf of the copyright owner. For the purposes of this definition, + "submitted" means any form of electronic, verbal, or written + communication sent to the Licensor or its representatives, including + but not limited to communication on electronic mailing lists, source + code control systems, and issue tracking systems that are managed by, + or on behalf of, the Licensor for the purpose of discussing and + improving the Work, but excluding communication that is conspicuously + marked or otherwise designated in writing by the copyright owner as + "Not a Contribution."

+

"Contributor" shall mean Licensor and any individual or Legal + Entity on behalf of whom a Contribution has been received by Licensor + and subsequently incorporated within the Work.

+

+ 2. Grant of Copyright + License. Subject to the terms and conditions of this License, each + Contributor hereby grants to You a perpetual, worldwide, + non-exclusive, no-charge, royalty-free, irrevocable copyright license + to reproduce, prepare Derivative Works of, publicly display, publicly + perform, sublicense, and distribute the Work and such Derivative + Works in Source or Object form. +

+ +

+ 3. Grant of Patent License. + Subject to the terms and conditions of this License, each Contributor + hereby grants to You a perpetual, worldwide, non-exclusive, + no-charge, royalty-free, irrevocable (except as stated in this + section) patent license to make, have made, use, offer to sell, sell, + import, and otherwise transfer the Work, where such license applies + only to those patent claims licensable by such Contributor that are + necessarily infringed by their Contribution(s) alone or by + combination of their Contribution(s) with the Work to which such + Contribution(s) was submitted. If You institute patent litigation + against any entity (including a cross-claim or counterclaim in a + lawsuit) alleging that the Work or a Contribution incorporated within + the Work constitutes direct or contributory patent infringement, then + any patent licenses granted to You under this License for that Work + shall terminate as of the date such litigation is filed. +

+

+ 4. Redistribution. You + may reproduce and distribute copies of the Work or Derivative Works + thereof in any medium, with or without modifications, and in Source + or Object form, provided that You meet the following conditions: +

+
    +
  1. +

    You must give any other recipients of the Work or Derivative + Works a copy of this License; and

    +
  2. +
  3. +

    You must cause any modified files to carry prominent notices + stating that You changed the files; and

    +
  4. +
  5. +

    You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, excluding + those notices that do not pertain to any part of the Derivative + Works; and

    + +
  6. +
  7. +

    If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained within + such NOTICE file, excluding those notices that do not pertain to + any part of the Derivative Works, in at least one of the following + places: within a NOTICE text file distributed as part of the + Derivative Works; within the Source form or documentation, if + provided along with the Derivative Works; or, within a display + generated by the Derivative Works, if and wherever such third-party + notices normally appear. The contents of the NOTICE file are for + informational purposes only and do not modify the License. You may + add Your own attribution notices within Derivative Works that You + distribute, alongside or as an addendum to the NOTICE text from the + Work, provided that such additional attribution notices cannot be + construed as modifying the License. You may add Your own copyright + statement to Your modifications and may provide additional or + different license terms and conditions for use, reproduction, or + distribution of Your modifications, or for any such Derivative + Works as a whole, provided Your use, reproduction, and distribution + of the Work otherwise complies with the conditions stated in this + License.

    +
  8. +
+

+ 5. Submission of + Contributions. Unless You explicitly state otherwise, any + Contribution intentionally submitted for inclusion in the Work by You + to the Licensor shall be under the terms and conditions of this + License, without any additional terms or conditions. Notwithstanding + the above, nothing herein shall supersede or modify the terms of any + separate license agreement you may have executed with Licensor + regarding such Contributions. +

+

+ 6. Trademarks. This License + does not grant permission to use the trade names, trademarks, service + marks, or product names of the Licensor, except as required for + reasonable and customary use in describing the origin of the Work and + reproducing the content of the NOTICE file. +

+

+ 7. Disclaimer of Warranty. + Unless required by applicable law or agreed to in writing, Licensor + provides the Work (and each Contributor provides its Contributions) + on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + either express or implied, including, without limitation, any + warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, + or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for + determining the appropriateness of using or redistributing the Work + and assume any risks associated with Your exercise of permissions + under this License. +

+

+ 8. Limitation of + Liability. In no event and under no legal theory, whether in tort + (including negligence), contract, or otherwise, unless required by + applicable law (such as deliberate and grossly negligent acts) or + agreed to in writing, shall any Contributor be liable to You for + damages, including any direct, indirect, special, incidental, or + consequential damages of any character arising as a result of this + License or out of the use or inability to use the Work (including but + not limited to damages for loss of goodwill, work stoppage, computer + failure or malfunction, or any and all other commercial damages or + losses), even if such Contributor has been advised of the possibility + of such damages. +

+ +

+ 9. Accepting Warranty or + Additional Liability. While redistributing the Work or Derivative + Works thereof, You may choose to offer, and charge a fee for, + acceptance of support, warranty, indemnity, or other liability + obligations and/or rights consistent with this License. However, in + accepting such obligations, You may act only on Your own behalf and + on Your sole responsibility, not on behalf of any other Contributor, + and only if You agree to indemnify, defend, and hold each Contributor + harmless for any liability incurred by, or claims asserted against, + such Contributor by reason of your accepting any such warranty or + additional liability. +

+

END OF TERMS AND CONDITIONS

+ + diff --git a/OpenGPSTracker/application/assets/contrib.html b/OpenGPSTracker/application/assets/contrib.html new file mode 100644 index 00000000..4552cd40 --- /dev/null +++ b/OpenGPSTracker/application/assets/contrib.html @@ -0,0 +1,28 @@ + + + + + + + +

Code

+ This application and the source code are publicly available. Feel free + to submit a patch. All code contributions are very welcome. The + complete application source is available under GPL license at + http://code.google.com/p/open-gpstracker/source + +

Errors

+ In case of an error, crash or fault please send a message. Log the + error at http://code.google.com/p/open-gpstracker/issues/entry and make + an important contribution to improve this application. + +

Idea's

+ Do you have an idea that could improve this application? Explain your + idea at http://code.google.com/p/open-gpstracker/issues/entry + +

Donate

+ Hopefully you enjoyed the application, I love to hear if you did. A + thank you or PayPal donation are appreciated at rcgroot@gmail.com + + + \ No newline at end of file diff --git a/OpenGPSTracker/application/assets/contributions.html b/OpenGPSTracker/application/assets/contributions.html index e83cb7b8..d80702b5 100644 --- a/OpenGPSTracker/application/assets/contributions.html +++ b/OpenGPSTracker/application/assets/contributions.html @@ -1,34 +1,39 @@ - - - -

Translations

-Translations hosted by Get Localization. -
    -
  • Chinese: 安智网汉化, NetDragon Websoft
  • -
  • Danish: Martin Larsen
  • -
  • Dutch: René de Groot, zwets
  • -
  • English: René de Groot
  • -
  • French: Paul Meier, mvl87, Fabrice Veniard
  • -
  • Finnish: Jani Pesonen
  • -
  • German: Werner Bogula, SkryBav, doopdoop
  • -
  • Hindi: vibin_nair
  • -
  • Italian: Paul Meier
  • -
  • Polish: Marcin Kost, Michał Podbielski, Wojciech Maj
  • -
  • Russian: Yuri Zaitsev
  • -
  • Spanish: Alfonso Montero López, Diego
  • -
  • Swedish: Jesper Falk
  • -
+ + + + + +

Translations

+ Translations hosted by + Get Localization. +
    +
  • Chinese: 安智网汉化, NetDragon Websoft
  • +
  • Danish: Martin Larsen
  • +
  • Dutch: René de Groot, zwets
  • +
  • English: René de Groot
  • +
  • French: Paul Meier, mvl87, Fabrice Veniard
  • +
  • Finnish: Jani Pesonen
  • +
  • German: Werner Bogula, SkryBav, doopdoop
  • +
  • Hindi: vibin_nair
  • +
  • Italian: Paul Meier
  • +
  • Polish: Marcin Kost, Michał Podbielski, Wojciech Maj
  • +
  • Russian: Yuri Zaitsev
  • +
  • Spanish: Alfonso Montero López, Diego
  • +
  • Swedish: Jesper Falk
  • +
-

Code

-Code hosted by Google Code. -
    -
  • Application: René de Groot
  • -
  • Start at boot: Tom Van Braeckel
  • -
+

Code

+ Code hosted by + Google Code. +
    +
  • Application: René de Groot
  • +
  • Start at boot: Tom Van Braeckel
  • +
-

Images

-
    -
  • Bubbles icons: ICONS etc. MySiteMyWay
  • -
- - \ No newline at end of file +

Images

+
    +
  • Bubbles icons: ICONS etc. MySiteMyWay
  • +
+ + + diff --git a/OpenGPSTracker/application/assets/license_short.html b/OpenGPSTracker/application/assets/license_short.html index 8c6c1e8c..aad93e40 100644 --- a/OpenGPSTracker/application/assets/license_short.html +++ b/OpenGPSTracker/application/assets/license_short.html @@ -1,9 +1,18 @@ - -

-Open GPS Tracker is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. -

-Open GPS Tracker is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. -

-You should have received a copy of the GNU General Public License along with Open GPS Tracker. If not, see http://www.gnu.org/licenses/. -

- \ No newline at end of file + + + +

Open GPS Tracker is free software: you can redistribute it + and/or modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version.

+

Open GPS Tracker is distributed in the hope that it will be + useful, but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details.

+

+ You should have received a copy of the GNU General Public License + along with Open GPS Tracker. If not, see http://www.gnu.org/licenses/. +

+ + diff --git a/OpenGPSTracker/application/assets/notices.html b/OpenGPSTracker/application/assets/notices.html index 83c201c3..9afbe8ba 100644 --- a/OpenGPSTracker/application/assets/notices.html +++ b/OpenGPSTracker/application/assets/notices.html @@ -1,212 +1,56 @@ - - -
-

Copyright (c) 2008 Google Inc.

-

Apache License Version 2.0

-
    -
  • UnicodeReader.java
  • -
- -
- -

Copyright (c) 2005-2008, The Android Open Source Project

-

Apache License Version 2.0

-
    -
  • compass_arrow.png
  • -
  • compass_base.png
  • -
  • ic_maps_indicator_current_position.png
  • -
  • ic_media_play_mirrored.png
  • -
  • ic_media_play.png
  • -
  • ic_menu_info_details.png
  • -
  • ic_menu_mapmode.png
  • -
  • ic_menu_movie.png
  • -
  • ic_menu_picture.png
  • -
  • ic_menu_preferences.png
  • -
  • ic_menu_show_list.png
  • -
  • ic_menu_view.png
  • -
  • icon.png
  • -
  • speedindexbar.png
  • -
  • stip.gif
  • -
  • stip2.gif
  • -
- -
- -

Copyright 1999-2011 The Apache Software Foundation

-

Apache License Version 2.0

-
    -
  • Apache HttpComponents Client
  • -
  • Apache HttpComponents Core
  • -
  • Apache HttpComponents Mime
  • -
- -
- -

Copyright (c) 2009 Matthias Kaeppler

-

Apache License Version 2.0

-
    -
  • OAuth Signpost
  • -
- -
- -
-

Apache License

Version 2.0, January 2004

-http://www.apache.org/licenses/

-

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

-

1. Definitions.

-

"License" shall mean the terms and conditions for use, reproduction, and -distribution as defined by Sections 1 through 9 of this document.

-

"Licensor" shall mean the copyright owner or entity authorized by the -copyright owner that is granting the License.

- -

"Legal Entity" shall mean the union of the acting entity and all other -entities that control, are controlled by, or are under common control with -that entity. For the purposes of this definition, "control" means (i) the -power, direct or indirect, to cause the direction or management of such -entity, whether by contract or otherwise, or (ii) ownership of fifty -percent (50%) or more of the outstanding shares, or (iii) beneficial -ownership of such entity.

-

"You" (or "Your") shall mean an individual or Legal Entity exercising -permissions granted by this License.

-

"Source" form shall mean the preferred form for making modifications, -including but not limited to software source code, documentation source, -and configuration files.

-

"Object" form shall mean any form resulting from mechanical transformation -or translation of a Source form, including but not limited to compiled -object code, generated documentation, and conversions to other media types.

-

"Work" shall mean the work of authorship, whether in Source or Object form, -made available under the License, as indicated by a copyright notice that -is included in or attached to the work (an example is provided in the -Appendix below).

-

"Derivative Works" shall mean any work, whether in Source or Object form, -that is based on (or derived from) the Work and for which the editorial -revisions, annotations, elaborations, or other modifications represent, as -a whole, an original work of authorship. For the purposes of this License, -Derivative Works shall not include works that remain separable from, or -merely link (or bind by name) to the interfaces of, the Work and Derivative -Works thereof.

-

"Contribution" shall mean any work of authorship, including the original -version of the Work and any modifications or additions to that Work or -Derivative Works thereof, that is intentionally submitted to Licensor for -inclusion in the Work by the copyright owner or by an individual or Legal -Entity authorized to submit on behalf of the copyright owner. For the -purposes of this definition, "submitted" means any form of electronic, -verbal, or written communication sent to the Licensor or its -representatives, including but not limited to communication on electronic -mailing lists, source code control systems, and issue tracking systems that -are managed by, or on behalf of, the Licensor for the purpose of discussing -and improving the Work, but excluding communication that is conspicuously -marked or otherwise designated in writing by the copyright owner as "Not a -Contribution."

-

"Contributor" shall mean Licensor and any individual or Legal Entity on -behalf of whom a Contribution has been received by Licensor and -subsequently incorporated within the Work.

-

2. Grant of Copyright License. Subject to the -terms and conditions of this License, each Contributor hereby grants to You -a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable -copyright license to reproduce, prepare Derivative Works of, publicly -display, publicly perform, sublicense, and distribute the Work and such -Derivative Works in Source or Object form.

- -

3. Grant of Patent License. Subject to the terms -and conditions of this License, each Contributor hereby grants to You a -perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable -(except as stated in this section) patent license to make, have made, use, -offer to sell, sell, import, and otherwise transfer the Work, where such -license applies only to those patent claims licensable by such Contributor -that are necessarily infringed by their Contribution(s) alone or by -combination of their Contribution(s) with the Work to which such -Contribution(s) was submitted. If You institute patent litigation against -any entity (including a cross-claim or counterclaim in a lawsuit) alleging -that the Work or a Contribution incorporated within the Work constitutes -direct or contributory patent infringement, then any patent licenses -granted to You under this License for that Work shall terminate as of the -date such litigation is filed.

-

4. Redistribution. You may reproduce and -distribute copies of the Work or Derivative Works thereof in any medium, -with or without modifications, and in Source or Object form, provided that -You meet the following conditions:

-
    -
  1. -

    You must give any other recipients of the Work or Derivative Works a -copy of this License; and

    -
  2. -
  3. -

    You must cause any modified files to carry prominent notices stating -that You changed the files; and

    -
  4. -
  5. -

    You must retain, in the Source form of any Derivative Works that You -distribute, all copyright, patent, trademark, and attribution notices from -the Source form of the Work, excluding those notices that do not pertain to -any part of the Derivative Works; and

    - -
  6. -
  7. -

    If the Work includes a "NOTICE" text file as part of its distribution, -then any Derivative Works that You distribute must include a readable copy -of the attribution notices contained within such NOTICE file, excluding -those notices that do not pertain to any part of the Derivative Works, in -at least one of the following places: within a NOTICE text file distributed -as part of the Derivative Works; within the Source form or documentation, -if provided along with the Derivative Works; or, within a display generated -by the Derivative Works, if and wherever such third-party notices normally -appear. The contents of the NOTICE file are for informational purposes only -and do not modify the License. You may add Your own attribution notices -within Derivative Works that You distribute, alongside or as an addendum to -the NOTICE text from the Work, provided that such additional attribution -notices cannot be construed as modifying the License. -You may add Your own copyright statement to Your modifications and may -provide additional or different license terms and conditions for use, -reproduction, or distribution of Your modifications, or for any such -Derivative Works as a whole, provided Your use, reproduction, and -distribution of the Work otherwise complies with the conditions stated in -this License.

    -
  8. -
-

5. Submission of Contributions. Unless You -explicitly state otherwise, any Contribution intentionally submitted for -inclusion in the Work by You to the Licensor shall be under the terms and -conditions of this License, without any additional terms or conditions. -Notwithstanding the above, nothing herein shall supersede or modify the -terms of any separate license agreement you may have executed with Licensor -regarding such Contributions.

-

6. Trademarks. This License does not grant -permission to use the trade names, trademarks, service marks, or product -names of the Licensor, except as required for reasonable and customary use -in describing the origin of the Work and reproducing the content of the -NOTICE file.

-

7. Disclaimer of Warranty. Unless required by -applicable law or agreed to in writing, Licensor provides the Work (and -each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT -WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, -without limitation, any warranties or conditions of TITLE, -NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You -are solely responsible for determining the appropriateness of using or -redistributing the Work and assume any risks associated with Your exercise -of permissions under this License.

-

8. Limitation of Liability. In no event and -under no legal theory, whether in tort (including negligence), contract, or -otherwise, unless required by applicable law (such as deliberate and -grossly negligent acts) or agreed to in writing, shall any Contributor be -liable to You for damages, including any direct, indirect, special, -incidental, or consequential damages of any character arising as a result -of this License or out of the use or inability to use the Work (including -but not limited to damages for loss of goodwill, work stoppage, computer -failure or malfunction, or any and all other commercial damages or losses), -even if such Contributor has been advised of the possibility of such -damages.

- -

9. Accepting Warranty or Additional Liability. -While redistributing the Work or Derivative Works thereof, You may choose -to offer, and charge a fee for, acceptance of support, warranty, indemnity, -or other liability obligations and/or rights consistent with this License. -However, in accepting such obligations, You may act only on Your own behalf -and on Your sole responsibility, not on behalf of any other Contributor, -and only if You agree to indemnify, defend, and hold each Contributor -harmless for any liability incurred by, or claims asserted against, such -Contributor by reason of your accepting any such warranty or additional -liability.

-

END OF TERMS AND CONDITIONS

- \ No newline at end of file + + + +
+

Copyright (c) 2008 Google Inc.

+

Apache License Version 2.0

+
    +
  • UnicodeReader.java
  • +
+ +
+ +

Copyright (c) 2005-2008, The Android Open Source Project

+

Apache License Version 2.0

+
    +
  • compass_arrow.png
  • +
  • compass_base.png
  • +
  • ic_maps_indicator_current_position.png
  • +
  • ic_media_play_mirrored.png
  • +
  • ic_media_play.png
  • +
  • ic_menu_info_details.png
  • +
  • ic_menu_mapmode.png
  • +
  • ic_menu_movie.png
  • +
  • ic_menu_picture.png
  • +
  • ic_menu_preferences.png
  • +
  • ic_menu_show_list.png
  • +
  • ic_menu_view.png
  • +
  • icon.png
  • +
  • speedindexbar.png
  • +
  • stip.gif
  • +
  • stip2.gif
  • +
+ +
+ +

Copyright 1999-2011 The Apache Software Foundation

+

Apache License Version 2.0

+
    +
  • Apache HttpComponents Client
  • +
  • Apache HttpComponents Core
  • +
  • Apache HttpComponents Mime
  • +
+ +
+ +

Copyright (c) 2009 Matthias Kaeppler

+

Apache License Version 2.0

+
    +
  • OAuth Signpost
  • +
+ +
+ +
+ + diff --git a/OpenGPSTracker/application/res/layout/about.xml b/OpenGPSTracker/application/res/layout/about.xml index 67693052..92f75a22 100644 --- a/OpenGPSTracker/application/res/layout/about.xml +++ b/OpenGPSTracker/application/res/layout/about.xml @@ -90,8 +90,7 @@ android:id="@+id/contribution_body" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_margin="3dip" - /> + android:layout_margin="3dip" /> + + + android:layout_margin="3dip" /> + + + + + + \ No newline at end of file diff --git a/OpenGPSTracker/application/res/layout/contrib.xml b/OpenGPSTracker/application/res/layout/contrib.xml index 7a157593..41b952a4 100644 --- a/OpenGPSTracker/application/res/layout/contrib.xml +++ b/OpenGPSTracker/application/res/layout/contrib.xml @@ -1,13 +1,20 @@ - - + +