From fd0a7f77921f591e62d1de3c3f9b8c8a9b1c9e7b Mon Sep 17 00:00:00 2001 From: "P. Mark Anderson" Date: Sat, 27 Feb 2010 03:25:27 -0800 Subject: [PATCH 1/8] Annotate map with events. --- .gitignore | 1 + Classes/DetailedViewViewController.m | 4 +- Classes/GeoEvents_finalAppDelegate.h | 2 + Classes/GeoEvents_finalAppDelegate.m | 2 + Classes/MapMarker.h | 22 ++++++ Classes/MapMarker.m | 28 +++++++ Classes/MapViewController.h | 8 +- Classes/MapViewController.m | 111 ++++++++++++++++++++++++++- GeoEvents.xcodeproj/project.pbxproj | 14 ++-- IndexViewController.m | 3 +- SearchViewViewController.m | 7 +- 11 files changed, 188 insertions(+), 14 deletions(-) create mode 100644 Classes/MapMarker.h create mode 100644 Classes/MapMarker.m diff --git a/.gitignore b/.gitignore index c25414b..79a55f6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # xcode noise build/* *.pbxuser +*.perspectivev3 *.mode1v3 *.mode2v3 diff --git a/Classes/DetailedViewViewController.m b/Classes/DetailedViewViewController.m index cb5eaff..cfc810b 100644 --- a/Classes/DetailedViewViewController.m +++ b/Classes/DetailedViewViewController.m @@ -152,10 +152,10 @@ - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(N - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { //We create our link to the appDelegate - GeoEvents_finalAppDelegate * appDelegate = [UIApplication sharedApplication].delegate; + //GeoEvents_finalAppDelegate * appDelegate = [UIApplication sharedApplication].delegate; //Get our selected event from the delegate - Event * event = appDelegate.selectedEvent; + //Event * event = appDelegate.selectedEvent; if(section == eventSection) { return @"Event information"; diff --git a/Classes/GeoEvents_finalAppDelegate.h b/Classes/GeoEvents_finalAppDelegate.h index 50d50e7..6317c6a 100644 --- a/Classes/GeoEvents_finalAppDelegate.h +++ b/Classes/GeoEvents_finalAppDelegate.h @@ -18,6 +18,7 @@ SettingsViewController * settingsViewController; Event * selectedEvent; NSMutableArray * searchHistory; + CLLocation * location; NSNumber * lat; NSNumber * lon; bool isUsingGps; @@ -31,6 +32,7 @@ @property (nonatomic, retain) UIBarButtonItem * settingsButton; @property (nonatomic, retain) SettingsViewController * settingsViewController; @property (nonatomic, retain) Event * selectedEvent; +@property (nonatomic, retain) CLLocation * location; @property (nonatomic, retain) NSNumber * lat; @property (nonatomic, retain) NSNumber * lon; @property (nonatomic, retain) NSMutableArray * searchHistory; diff --git a/Classes/GeoEvents_finalAppDelegate.m b/Classes/GeoEvents_finalAppDelegate.m index 4444c12..38c618a 100644 --- a/Classes/GeoEvents_finalAppDelegate.m +++ b/Classes/GeoEvents_finalAppDelegate.m @@ -15,6 +15,7 @@ @implementation GeoEvents_finalAppDelegate @synthesize window, navigationController, selectedEvent, + location, lat, lon, settingsViewController, @@ -113,6 +114,7 @@ - (void)applicationWillTerminate:(UIApplication *)application { #pragma mark Memory management - (void)dealloc { + [location release]; [navigationController release]; [window release]; [super dealloc]; diff --git a/Classes/MapMarker.h b/Classes/MapMarker.h new file mode 100644 index 0000000..c8b7ba8 --- /dev/null +++ b/Classes/MapMarker.h @@ -0,0 +1,22 @@ +// +// MapMarker.h +// +// Created by P. Mark Anderson on 2/26/10. +// Copyright 2010 Bordertown Labs, LLC. All rights reserved. +// + +#import +#import "Mapkit/Mapkit.h" + +@interface MapMarker : CLLocation +{ + NSString* title; + NSString* subtitle; +} + +@property (nonatomic, retain) NSString* title; +@property (nonatomic, retain) NSString* subtitle; + +- (id)initWithLocation:(CLLocation*)loc; + +@end diff --git a/Classes/MapMarker.m b/Classes/MapMarker.m new file mode 100644 index 0000000..c537c68 --- /dev/null +++ b/Classes/MapMarker.m @@ -0,0 +1,28 @@ +// +// MapMarker.m +// +// Created by P. Mark Anderson on 2/26/10. +// Copyright 2010 Bordertown Labs, LLC. All rights reserved. +// + +#import "MapMarker.h" + + +@implementation MapMarker + +@synthesize title, subtitle; +@dynamic coordinate; + +- (id)initWithLocation:(CLLocation*)loc +{ + [super initWithLatitude:loc.coordinate.latitude longitude:loc.coordinate.longitude]; + return self; +} + +- (void) dealloc { + [title release]; + [subtitle release]; + [super dealloc]; +} + +@end diff --git a/Classes/MapViewController.h b/Classes/MapViewController.h index 9f6916b..af2fe03 100644 --- a/Classes/MapViewController.h +++ b/Classes/MapViewController.h @@ -9,8 +9,14 @@ #import #import -@interface MapViewController : UIViewController { +@interface MapViewController : UIViewController { MKMapView * mapView; + NSArray * events; } +@property (nonatomic, retain) MKMapView * mapView; +@property (nonatomic, retain) NSArray * events; + +-(void)loadEvents; + @end diff --git a/Classes/MapViewController.m b/Classes/MapViewController.m index f215609..d52b5cd 100644 --- a/Classes/MapViewController.m +++ b/Classes/MapViewController.m @@ -7,17 +7,124 @@ // #import "MapViewController.h" - +#import "MapMarker.h" +#import "GeoEvents_finalAppDelegate.h" @implementation MapViewController +@synthesize mapView, events; + -(void)viewDidLoad { [super viewDidLoad]; - mapView = [[MKMapView alloc] initWithFrame:self.view.bounds]; + self.mapView = [[MKMapView alloc] initWithFrame:self.view.bounds]; mapView.mapType = MKMapTypeStandard; mapView.showsUserLocation = YES; + mapView.delegate = self; + mapView.scrollEnabled = YES; [self.view insertSubview:mapView atIndex:0]; + + [self loadEvents]; +} + +- (void)zoomMapToFit { + if ([mapView.annotations count] == 0) + return; + + NSLog(@"zoomMapToFit %i markers", [mapView.annotations count]); + + CLLocationCoordinate2D topLeftCoord; + topLeftCoord.latitude = -90; + topLeftCoord.longitude = 180; + + CLLocationCoordinate2D bottomRightCoord; + bottomRightCoord.latitude = 90; + bottomRightCoord.longitude = -180; + + for (MapMarker* annotation in mapView.annotations) { + CLLocation *loc = (CLLocation*)annotation; + topLeftCoord.longitude = fmin(topLeftCoord.longitude, loc.coordinate.longitude); + topLeftCoord.latitude = fmax(topLeftCoord.latitude, loc.coordinate.latitude); + + bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, loc.coordinate.longitude); + bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, loc.coordinate.latitude); + } + MKCoordinateRegion region; + region.center.latitude = topLeftCoord.latitude - (topLeftCoord.latitude - bottomRightCoord.latitude) * 0.5; + region.center.longitude = topLeftCoord.longitude + (bottomRightCoord.longitude - topLeftCoord.longitude) * 0.5; + region.span.latitudeDelta = fabs(topLeftCoord.latitude - bottomRightCoord.latitude) * 1.1; // Add a little extra space on the sides + region.span.longitudeDelta = fabs(bottomRightCoord.longitude - topLeftCoord.longitude) * 1.1; // Add a little extra space on the sides + + region = [mapView regionThatFits:region]; + [mapView setRegion:region animated:YES]; +} + +-(void)loadEvents { + for (Event * event in events) { + CLLocationDegrees latitude = [event.lat doubleValue]; + CLLocationDegrees longitude = [event.lon doubleValue]; + + if (latitude == 0 && longitude == 0) + continue; + + CLLocation * markerLocation = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; + MapMarker * marker = [[MapMarker alloc] initWithLocation:markerLocation]; + marker.title = event.artist; + marker.subtitle = [NSString stringWithFormat:@"At %@ on %@", event.venue, event.startDate]; + [mapView addAnnotation:marker]; + [marker release]; + } + + [self zoomMapToFit]; +} + +-(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView { + NSLog(@"Map view did finish loading"); } + +-(void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error { + NSLog(@"ERROR: Map view failed to load. %@", error); +} + +-(void)setCurrentMapLocation:(CLLocation *)loc { + MKCoordinateRegion region = {{0.0f, 0.0f}, {0.0f, 0.0f}}; + region.center = loc.coordinate; + region.span.longitudeDelta = 0.1f; + region.span.latitudeDelta = 0.1f; + [mapView setRegion:region animated:YES]; +} + +-(MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id )annotation { + + MKPinAnnotationView * view = nil; + + if (annotation != theMapView.userLocation) { + + view = (MKPinAnnotationView *) + [theMapView dequeueReusableAnnotationViewWithIdentifier:@"identifier"]; + + if (view == nil) { + view = [[[MKPinAnnotationView alloc] + initWithAnnotation:annotation reuseIdentifier:@"identifier"] + autorelease]; + } + + [view setPinColor:MKPinAnnotationColorRed]; + [view setCanShowCallout:YES]; + [view setAnimatesDrop:YES]; + + } else { + // User's current position + //GeoEvents_finalAppDelegate * appDelegate = [UIApplication sharedApplication].delegate; + //[self setCurrentMapLocation:appDelegate.location]; + } + return view; +} + +-(void)dealloc { + [events release]; + [super dealloc]; +} + @end diff --git a/GeoEvents.xcodeproj/project.pbxproj b/GeoEvents.xcodeproj/project.pbxproj index 900b79f..0a47fd4 100644 --- a/GeoEvents.xcodeproj/project.pbxproj +++ b/GeoEvents.xcodeproj/project.pbxproj @@ -13,6 +13,7 @@ 1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; }; 2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; }; 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; }; + 4D8721F31139308000B3CB20 /* MapMarker.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D8721F21139308000B3CB20 /* MapMarker.m */; }; 5B3AA9A010D20A8200E81307 /* SettingsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B3AA99E10D20A8200E81307 /* SettingsViewController.m */; }; 5B3AA9A110D20A8200E81307 /* SettingsView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5B3AA99F10D20A8200E81307 /* SettingsView.xib */; }; 5B45527510D352780087F585 /* IndexViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B45527310D352780087F585 /* IndexViewController.m */; }; @@ -20,7 +21,6 @@ 5B85658C10D6020500C8E54D /* lastfm.png in Resources */ = {isa = PBXBuildFile; fileRef = 5B85658B10D6020500C8E54D /* lastfm.png */; }; 5BA1286F10CE6E140024ADC6 /* SearchViewViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BA1286E10CE6E140024ADC6 /* SearchViewViewController.m */; }; 5BA1288A10CE71310024ADC6 /* DetailedViewViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BA1288910CE71310024ADC6 /* DetailedViewViewController.m */; }; - 5BE1D6DB10CE8BB0002BFF08 /* icon.png in Resources */ = {isa = PBXBuildFile; fileRef = 5BE1D6DA10CE8BB0002BFF08 /* icon.png */; }; 5BF286E210CDA142005EB7AB /* TBXML.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BF286DE10CDA142005EB7AB /* TBXML.m */; }; 5BF286E310CDA142005EB7AB /* NSDataAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 5BF286E010CDA142005EB7AB /* NSDataAdditions.m */; }; 5BF286E510CDA153005EB7AB /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5BF286E410CDA153005EB7AB /* libz.dylib */; }; @@ -44,6 +44,8 @@ 28A0AAE50D9B0CCF005BE974 /* GeoEvents_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeoEvents_Prefix.pch; sourceTree = ""; }; 28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; }; 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 4D8721F11139308000B3CB20 /* MapMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapMarker.h; sourceTree = ""; }; + 4D8721F21139308000B3CB20 /* MapMarker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapMarker.m; sourceTree = ""; }; 5B3AA99D10D20A8200E81307 /* SettingsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SettingsViewController.h; sourceTree = ""; }; 5B3AA99E10D20A8200E81307 /* SettingsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SettingsViewController.m; sourceTree = ""; }; 5B3AA99F10D20A8200E81307 /* SettingsView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = SettingsView.xib; path = Classes/SettingsView.xib; sourceTree = ""; }; @@ -56,7 +58,6 @@ 5BA1286E10CE6E140024ADC6 /* SearchViewViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = SearchViewViewController.m; path = ../SearchViewViewController.m; sourceTree = ""; }; 5BA1288810CE71310024ADC6 /* DetailedViewViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DetailedViewViewController.h; sourceTree = ""; }; 5BA1288910CE71310024ADC6 /* DetailedViewViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DetailedViewViewController.m; sourceTree = ""; }; - 5BE1D6DA10CE8BB0002BFF08 /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = icon.png; path = ../Poster/icon.png; sourceTree = SOURCE_ROOT; }; 5BF286DE10CDA142005EB7AB /* TBXML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TBXML.m; sourceTree = ""; }; 5BF286DF10CDA142005EB7AB /* TBXML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TBXML.h; sourceTree = ""; }; 5BF286E010CDA142005EB7AB /* NSDataAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSDataAdditions.m; sourceTree = ""; }; @@ -152,7 +153,6 @@ children = ( 5B85658B10D6020500C8E54D /* lastfm.png */, 5B3AA99F10D20A8200E81307 /* SettingsView.xib */, - 5BE1D6DA10CE8BB0002BFF08 /* icon.png */, 28AD735F0D9D9599002E5188 /* MainWindow.xib */, 8D1107310486CEB800E47090 /* GeoEvents-Info.plist */, ); @@ -209,6 +209,8 @@ 8CC1A9DA11236E9800BA6497 /* Search */ = { isa = PBXGroup; children = ( + 4D8721F11139308000B3CB20 /* MapMarker.h */, + 4D8721F21139308000B3CB20 /* MapMarker.m */, 8C2A61A01135BA180039EC54 /* MapViewController.h */, 8C2A61A11135BA180039EC54 /* MapViewController.m */, 5BA1286D10CE6E140024ADC6 /* SearchViewViewController.h */, @@ -272,7 +274,6 @@ buildActionMask = 2147483647; files = ( 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */, - 5BE1D6DB10CE8BB0002BFF08 /* icon.png in Resources */, 5B3AA9A110D20A8200E81307 /* SettingsView.xib in Resources */, 5B85658C10D6020500C8E54D /* lastfm.png in Resources */, ); @@ -300,6 +301,7 @@ 8CC1A9C211236DEA00BA6497 /* FacebookViewController.m in Sources */, 8CC1A9C511236E0100BA6497 /* LastfmViewController.m in Sources */, 8C2A61A21135BA180039EC54 /* MapViewController.m in Sources */, + 4D8721F31139308000B3CB20 /* MapMarker.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -342,7 +344,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; PREBINDING = NO; - SDKROOT = iphoneos3.1.2; + SDKROOT = iphoneos3.1; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -356,7 +358,7 @@ GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; PREBINDING = NO; - SDKROOT = iphoneos3.1.2; + SDKROOT = iphoneos3.1; }; name = Release; }; diff --git a/IndexViewController.m b/IndexViewController.m index 68ead5d..a45ed98 100644 --- a/IndexViewController.m +++ b/IndexViewController.m @@ -50,10 +50,11 @@ - (void)dealloc { - (void)locationUpdate:(CLLocation *)location { bool simulator = YES; GeoEvents_finalAppDelegate * appDelegate = [UIApplication sharedApplication].delegate; - + latitude = [NSNumber numberWithDouble:[location coordinate].latitude]; longitude = [NSNumber numberWithDouble:[location coordinate].longitude]; + appDelegate.location = location; appDelegate.lat = latitude; appDelegate.lon = longitude; diff --git a/SearchViewViewController.m b/SearchViewViewController.m index 6983aab..832d15c 100644 --- a/SearchViewViewController.m +++ b/SearchViewViewController.m @@ -77,6 +77,7 @@ - (void)viewDidUnload { - (void)loadMap { //Load the mapview MapViewController * mapView = [[MapViewController alloc] init]; + mapView.events = events; self.mapViewController = mapView; [mapView release]; @@ -156,7 +157,7 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath - (void)loadXml:(NSString *)address { bool debug = NO; error = NO; - events = [[NSMutableArray alloc] initWithCapacity:10]; + self.events = [[NSMutableArray alloc] initWithCapacity:10]; // We load our xml from the url provided @@ -218,7 +219,9 @@ - (void)loadXml:(NSString *)address { NSLog(@"Something went wrong with our parsing."); error = YES; } - [events retain]; + + // NOTE: no need to retain events here if you use the setter (self.events= or [self setEvents:]) + //[events retain]; [tbXML release]; } From cb0e173971b19c43dcea5413a50f2d7a89440550 Mon Sep 17 00:00:00 2001 From: "P. Mark Anderson" Date: Thu, 14 Apr 2011 16:19:06 -0700 Subject: [PATCH 2/8] iOS 4 support. --- Classes/GeoEvents_finalAppDelegate.m | 2 +- GeoEvents.xcodeproj/project.pbxproj | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Classes/GeoEvents_finalAppDelegate.m b/Classes/GeoEvents_finalAppDelegate.m index 38c618a..f1d17ea 100644 --- a/Classes/GeoEvents_finalAppDelegate.m +++ b/Classes/GeoEvents_finalAppDelegate.m @@ -71,7 +71,7 @@ - (void)applicationDidFinishLaunching:(UIApplication *)application { // immediately released afterwards. CLLocationManager *manager = [[CLLocationManager alloc] init]; - if (manager.locationServicesEnabled == NO) { + if ([CLLocationManager locationServicesEnabled] == NO) { UIAlertView *servicesDisabledAlert = [[UIAlertView alloc] initWithTitle:@"Location Services Disabled" message:@"You currently have all location services for this device disabled. If you proceed, you will be asked to confirm whether location services should be reenabled." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; diff --git a/GeoEvents.xcodeproj/project.pbxproj b/GeoEvents.xcodeproj/project.pbxproj index 0a47fd4..76b552f 100644 --- a/GeoEvents.xcodeproj/project.pbxproj +++ b/GeoEvents.xcodeproj/project.pbxproj @@ -251,6 +251,7 @@ }; buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "GeoEvents" */; compatibilityVersion = "Xcode 3.1"; + developmentRegion = English; hasScannedForEncodings = 1; knownRegions = ( English, @@ -343,8 +344,9 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; PREBINDING = NO; - SDKROOT = iphoneos3.1; + SDKROOT = iphoneos; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -357,8 +359,9 @@ GCC_C_LANGUAGE_STANDARD = c99; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 4.0; PREBINDING = NO; - SDKROOT = iphoneos3.1; + SDKROOT = iphoneos; }; name = Release; }; From d25cd7e62000a9edecaf0aac24cccfaf14277353 Mon Sep 17 00:00:00 2001 From: "P. Mark Anderson" Date: Wed, 20 Apr 2011 18:27:39 -0700 Subject: [PATCH 3/8] Updates for demo. --- Classes/MapMarker.h | 2 + Classes/MapMarker.m | 3 +- Classes/MapViewController.h | 11 ++- Classes/MapViewController.m | 62 ++++++++++-- GeoEvents.xcodeproj/project.pbxproj | 145 +++++++++++++++++++++++++++- IndexViewController.m | 9 +- SearchViewViewController.m | 22 ++++- 7 files changed, 228 insertions(+), 26 deletions(-) diff --git a/Classes/MapMarker.h b/Classes/MapMarker.h index c8b7ba8..edffc53 100644 --- a/Classes/MapMarker.h +++ b/Classes/MapMarker.h @@ -12,10 +12,12 @@ { NSString* title; NSString* subtitle; + NSString* imageName; } @property (nonatomic, retain) NSString* title; @property (nonatomic, retain) NSString* subtitle; +@property (nonatomic, retain) NSString* imageName; - (id)initWithLocation:(CLLocation*)loc; diff --git a/Classes/MapMarker.m b/Classes/MapMarker.m index c537c68..c53119c 100644 --- a/Classes/MapMarker.m +++ b/Classes/MapMarker.m @@ -10,7 +10,7 @@ @implementation MapMarker -@synthesize title, subtitle; +@synthesize title, subtitle, imageName; @dynamic coordinate; - (id)initWithLocation:(CLLocation*)loc @@ -22,6 +22,7 @@ - (id)initWithLocation:(CLLocation*)loc - (void) dealloc { [title release]; [subtitle release]; + [imageName release]; [super dealloc]; } diff --git a/Classes/MapViewController.h b/Classes/MapViewController.h index af2fe03..1e7533c 100644 --- a/Classes/MapViewController.h +++ b/Classes/MapViewController.h @@ -8,14 +8,15 @@ #import #import +#import "SM3DARMapView.h" -@interface MapViewController : UIViewController { - MKMapView * mapView; - NSArray * events; +@interface MapViewController : UIViewController { + SM3DARMapView *mapView; + NSArray *events; } -@property (nonatomic, retain) MKMapView * mapView; -@property (nonatomic, retain) NSArray * events; +@property (nonatomic, retain) SM3DARMapView *mapView; +@property (nonatomic, retain) NSArray *events; -(void)loadEvents; diff --git a/Classes/MapViewController.m b/Classes/MapViewController.m index d52b5cd..b46d22e 100644 --- a/Classes/MapViewController.m +++ b/Classes/MapViewController.m @@ -16,15 +16,39 @@ @implementation MapViewController -(void)viewDidLoad { [super viewDidLoad]; - self.mapView = [[MKMapView alloc] initWithFrame:self.view.bounds]; + + self.mapView = [[[SM3DARMapView alloc] initWithFrame:CGRectMake(0, 0, 320, 416)] autorelease]; + + NSLog(@"mapView: %@", mapView); + mapView.mapType = MKMapTypeStandard; mapView.showsUserLocation = YES; mapView.delegate = self; mapView.scrollEnabled = YES; - [self.view insertSubview:mapView atIndex:0]; + [self.view addSubview:mapView]; - [self loadEvents]; + [mapView init3DAR]; +} + +- (void) viewWillAppear:(BOOL)animated +{ + [super viewWillAppear:animated]; +} + +- (void) viewDidAppear:(BOOL)animated +{ + [super viewDidAppear:animated]; + +// [mapView startCamera]; +} + +- (void) viewWillDisappear:(BOOL)animated +{ + [super viewWillDisappear:animated]; + +// [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; +// [mapView stopCamera]; } - (void)zoomMapToFit { @@ -61,17 +85,21 @@ - (void)zoomMapToFit { } -(void)loadEvents { - for (Event * event in events) { + for (Event *event in events) { + CLLocationDegrees latitude = [event.lat doubleValue]; CLLocationDegrees longitude = [event.lon doubleValue]; if (latitude == 0 && longitude == 0) continue; - CLLocation * markerLocation = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; - MapMarker * marker = [[MapMarker alloc] initWithLocation:markerLocation]; + CLLocation *markerLocation = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; + + MapMarker *marker = [[MapMarker alloc] initWithLocation:markerLocation]; marker.title = event.artist; marker.subtitle = [NSString stringWithFormat:@"At %@ on %@", event.venue, event.startDate]; + marker.imageName = @"music_icon.png"; + [mapView addAnnotation:marker]; [marker release]; } @@ -79,11 +107,16 @@ -(void)loadEvents { [self zoomMapToFit]; } --(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView { +- (void) sm3darLoadPoints:(SM3DAR_Controller *)sm3dar +{ + [self loadEvents]; +} + +-(void)mapViewDidFinishLoadingMap:(SM3DARMapView *)mapView { NSLog(@"Map view did finish loading"); } --(void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error { +-(void)mapViewDidFailLoadingMap:(SM3DARMapView *)mapView withError:(NSError *)error { NSLog(@"ERROR: Map view failed to load. %@", error); } @@ -95,7 +128,7 @@ -(void)setCurrentMapLocation:(CLLocation *)loc { [mapView setRegion:region animated:YES]; } --(MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id )annotation { +-(MKAnnotationView *)mapView:(SM3DARMapView *)theMapView viewForAnnotation:(id )annotation { MKPinAnnotationView * view = nil; @@ -127,4 +160,15 @@ -(void)dealloc { [super dealloc]; } + +#pragma mark - + +- (void) mapAnnotationView:(MKAnnotationView*)annotationView calloutAccessoryControlTapped:(UIControl*)control +{ + NSLog(@"calloutAccessoryControlTapped"); + +// SM3DAR_CustomAnnotationView *av = (SM3DAR_CustomAnnotationView*)annotationView; +// self.selectedPOI = av.poi; +} + @end diff --git a/GeoEvents.xcodeproj/project.pbxproj b/GeoEvents.xcodeproj/project.pbxproj index 76b552f..f636949 100644 --- a/GeoEvents.xcodeproj/project.pbxproj +++ b/GeoEvents.xcodeproj/project.pbxproj @@ -32,6 +32,33 @@ 8C4FD41D111B9F3700A332CA /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C4FD41C111B9F3700A332CA /* AboutViewController.m */; }; 8CC1A9C211236DEA00BA6497 /* FacebookViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CC1A9C111236DEA00BA6497 /* FacebookViewController.m */; }; 8CC1A9C511236E0100BA6497 /* LastfmViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CC1A9C411236E0100BA6497 /* LastfmViewController.m */; }; + A648D30F135E32AC00BC529E /* sky.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D30E135E32AC00BC529E /* sky.png */; }; + A648D329135E33B900BC529E /* SphereBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = A648D327135E33B900BC529E /* SphereBackgroundView.m */; }; + A648D331135E33F400BC529E /* sphere.obj in Resources */ = {isa = PBXBuildFile; fileRef = A648D330135E33F400BC529E /* sphere.obj */; }; + A648D387135E401100BC529E /* pano_bg.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D386135E401100BC529E /* pano_bg.png */; }; + A648D584135F9D5800BC529E /* music_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D583135F9D5800BC529E /* music_icon.png */; }; + A6645364135E017D00E93CF4 /* lib3DAR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6645363135E017D00E93CF4 /* lib3DAR.a */; }; + A6645377135E01D700E93CF4 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A6645375135E01D700E93CF4 /* Icon.png */; }; + A6645378135E01D700E93CF4 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = A6645376135E01D700E93CF4 /* Default.png */; }; + A69F2542135919D90091A696 /* 3dar.plist in Resources */ = {isa = PBXBuildFile; fileRef = A69F252E135919D80091A696 /* 3dar.plist */; }; + A69F2543135919D90091A696 /* 3dar_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F252F135919D80091A696 /* 3dar_logo.png */; }; + A69F2544135919D90091A696 /* 3dar_marker_icon1.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F2530135919D80091A696 /* 3dar_marker_icon1.png */; }; + A69F2545135919D90091A696 /* 3dar_marker_icon2.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F2531135919D80091A696 /* 3dar_marker_icon2.png */; }; + A69F2546135919D90091A696 /* 3dar_marker_icon3.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F2532135919D80091A696 /* 3dar_marker_icon3.png */; }; + A69F2547135919D90091A696 /* 3dar_marker_icon4.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F2533135919D80091A696 /* 3dar_marker_icon4.png */; }; + A69F2548135919D90091A696 /* 3dar_marker_icon5.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F2534135919D80091A696 /* 3dar_marker_icon5.png */; }; + A69F2549135919D90091A696 /* 3dar_marker_icon6.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F2535135919D80091A696 /* 3dar_marker_icon6.png */; }; + A69F254A135919D90091A696 /* bubble1.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F2536135919D80091A696 /* bubble1.png */; }; + A69F254B135919D90091A696 /* compass_rose.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F2537135919D80091A696 /* compass_rose.png */; }; + A69F254D135919D90091A696 /* pushpin_1.0.obj in Resources */ = {isa = PBXBuildFile; fileRef = A69F253A135919D90091A696 /* pushpin_1.0.obj */; }; + A69F254E135919D90091A696 /* PushpinView.m in Sources */ = {isa = PBXBuildFile; fileRef = A69F253C135919D90091A696 /* PushpinView.m */; }; + A69F254F135919D90091A696 /* red.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F253D135919D90091A696 /* red.png */; }; + A69F2550135919D90091A696 /* SM3DAR_keys.txt in Resources */ = {isa = PBXBuildFile; fileRef = A69F253F135919D90091A696 /* SM3DAR_keys.txt */; }; + A69F2551135919D90091A696 /* SM3DARMapView.m in Sources */ = {isa = PBXBuildFile; fileRef = A69F2541135919D90091A696 /* SM3DARMapView.m */; }; + A69F256B13591ACD0091A696 /* TexturedGeometryView.m in Sources */ = {isa = PBXBuildFile; fileRef = A69F256A13591ACD0091A696 /* TexturedGeometryView.m */; }; + A69F259813591BF10091A696 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A69F259713591BF10091A696 /* OpenGLES.framework */; }; + A69F259E13591C000091A696 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A69F259D13591C000091A696 /* QuartzCore.framework */; }; + A69F25A413591C0B0091A696 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A69F25A313591C0B0091A696 /* CoreMotion.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ @@ -79,6 +106,39 @@ 8CC1A9C311236E0100BA6497 /* LastfmViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LastfmViewController.h; sourceTree = ""; }; 8CC1A9C411236E0100BA6497 /* LastfmViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LastfmViewController.m; sourceTree = ""; }; 8D1107310486CEB800E47090 /* GeoEvents-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GeoEvents-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + A648D30E135E32AC00BC529E /* sky.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sky.png; sourceTree = ""; }; + A648D327135E33B900BC529E /* SphereBackgroundView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SphereBackgroundView.m; sourceTree = ""; }; + A648D328135E33B900BC529E /* SphereBackgroundView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SphereBackgroundView.h; sourceTree = ""; }; + A648D330135E33F400BC529E /* sphere.obj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = sphere.obj; sourceTree = ""; }; + A648D386135E401100BC529E /* pano_bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pano_bg.png; sourceTree = ""; }; + A648D583135F9D5800BC529E /* music_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = music_icon.png; sourceTree = ""; }; + A6645363135E017D00E93CF4 /* lib3DAR.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = lib3DAR.a; path = "../../../Library/iOS/build/Debug-iphoneos/lib3DAR.a"; sourceTree = SOURCE_ROOT; }; + A6645375135E01D700E93CF4 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = ""; }; + A6645376135E01D700E93CF4 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + A69F252E135919D80091A696 /* 3dar.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = 3dar.plist; sourceTree = ""; }; + A69F252F135919D80091A696 /* 3dar_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3dar_logo.png; sourceTree = ""; }; + A69F2530135919D80091A696 /* 3dar_marker_icon1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3dar_marker_icon1.png; sourceTree = ""; }; + A69F2531135919D80091A696 /* 3dar_marker_icon2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3dar_marker_icon2.png; sourceTree = ""; }; + A69F2532135919D80091A696 /* 3dar_marker_icon3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3dar_marker_icon3.png; sourceTree = ""; }; + A69F2533135919D80091A696 /* 3dar_marker_icon4.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3dar_marker_icon4.png; sourceTree = ""; }; + A69F2534135919D80091A696 /* 3dar_marker_icon5.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3dar_marker_icon5.png; sourceTree = ""; }; + A69F2535135919D80091A696 /* 3dar_marker_icon6.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3dar_marker_icon6.png; sourceTree = ""; }; + A69F2536135919D80091A696 /* bubble1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bubble1.png; sourceTree = ""; }; + A69F2537135919D80091A696 /* compass_rose.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = compass_rose.png; sourceTree = ""; }; + A69F2539135919D90091A696 /* Pushpin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pushpin.h; sourceTree = ""; }; + A69F253A135919D90091A696 /* pushpin_1.0.obj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pushpin_1.0.obj; sourceTree = ""; }; + A69F253B135919D90091A696 /* PushpinView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PushpinView.h; sourceTree = ""; }; + A69F253C135919D90091A696 /* PushpinView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PushpinView.m; sourceTree = ""; }; + A69F253D135919D90091A696 /* red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = red.png; sourceTree = ""; }; + A69F253E135919D90091A696 /* SM3DAR.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SM3DAR.h; sourceTree = ""; }; + A69F253F135919D90091A696 /* SM3DAR_keys.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SM3DAR_keys.txt; sourceTree = ""; }; + A69F2540135919D90091A696 /* SM3DARMapView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SM3DARMapView.h; sourceTree = ""; }; + A69F2541135919D90091A696 /* SM3DARMapView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SM3DARMapView.m; sourceTree = ""; }; + A69F256913591ACD0091A696 /* TexturedGeometryView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TexturedGeometryView.h; sourceTree = ""; }; + A69F256A13591ACD0091A696 /* TexturedGeometryView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TexturedGeometryView.m; sourceTree = ""; }; + A69F259713591BF10091A696 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; + A69F259D13591C000091A696 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; + A69F25A313591C0B0091A696 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -92,6 +152,10 @@ 5BF286E510CDA153005EB7AB /* libz.dylib in Frameworks */, 5BF2871310CDDE14005EB7AB /* CoreLocation.framework in Frameworks */, 8C2A61B71135BBB10039EC54 /* MapKit.framework in Frameworks */, + A69F259813591BF10091A696 /* OpenGLES.framework in Frameworks */, + A69F259E13591C000091A696 /* QuartzCore.framework in Frameworks */, + A69F25A413591C0B0091A696 /* CoreMotion.framework in Frameworks */, + A6645364135E017D00E93CF4 /* lib3DAR.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -129,6 +193,7 @@ 29B97314FDCFA39411CA2CEA /* CustomTemplate */ = { isa = PBXGroup; children = ( + A69F252D135919D80091A696 /* 3DAR */, 5BF286DB10CDA12F005EB7AB /* TBXML */, 080E96DDFE201D6D7F000001 /* Classes */, 29B97315FDCFA39411CA2CEA /* Other Sources */, @@ -151,6 +216,8 @@ 29B97317FDCFA39411CA2CEA /* Resources */ = { isa = PBXGroup; children = ( + A6645375135E01D700E93CF4 /* Icon.png */, + A6645376135E01D700E93CF4 /* Default.png */, 5B85658B10D6020500C8E54D /* lastfm.png */, 5B3AA99F10D20A8200E81307 /* SettingsView.xib */, 28AD735F0D9D9599002E5188 /* MainWindow.xib */, @@ -162,6 +229,9 @@ 29B97323FDCFA39411CA2CEA /* Frameworks */ = { isa = PBXGroup; children = ( + A69F259713591BF10091A696 /* OpenGLES.framework */, + A69F259D13591C000091A696 /* QuartzCore.framework */, + A69F25A313591C0B0091A696 /* CoreMotion.framework */, 8C2A61B61135BBB10039EC54 /* MapKit.framework */, 5BF286E410CDA153005EB7AB /* libz.dylib */, 5BF2871210CDDE14005EB7AB /* CoreLocation.framework */, @@ -221,6 +291,41 @@ name = Search; sourceTree = ""; }; + A69F252D135919D80091A696 /* 3DAR */ = { + isa = PBXGroup; + children = ( + A6645363135E017D00E93CF4 /* lib3DAR.a */, + A69F252E135919D80091A696 /* 3dar.plist */, + A69F252F135919D80091A696 /* 3dar_logo.png */, + A69F2530135919D80091A696 /* 3dar_marker_icon1.png */, + A69F2531135919D80091A696 /* 3dar_marker_icon2.png */, + A69F2532135919D80091A696 /* 3dar_marker_icon3.png */, + A69F2533135919D80091A696 /* 3dar_marker_icon4.png */, + A69F2534135919D80091A696 /* 3dar_marker_icon5.png */, + A69F2535135919D80091A696 /* 3dar_marker_icon6.png */, + A69F2536135919D80091A696 /* bubble1.png */, + A69F2537135919D80091A696 /* compass_rose.png */, + A648D583135F9D5800BC529E /* music_icon.png */, + A648D386135E401100BC529E /* pano_bg.png */, + A69F2539135919D90091A696 /* Pushpin.h */, + A69F253A135919D90091A696 /* pushpin_1.0.obj */, + A69F253B135919D90091A696 /* PushpinView.h */, + A69F253C135919D90091A696 /* PushpinView.m */, + A69F253D135919D90091A696 /* red.png */, + A648D30E135E32AC00BC529E /* sky.png */, + A69F253E135919D90091A696 /* SM3DAR.h */, + A69F253F135919D90091A696 /* SM3DAR_keys.txt */, + A69F2540135919D90091A696 /* SM3DARMapView.h */, + A69F2541135919D90091A696 /* SM3DARMapView.m */, + A648D330135E33F400BC529E /* sphere.obj */, + A648D328135E33B900BC529E /* SphereBackgroundView.h */, + A648D327135E33B900BC529E /* SphereBackgroundView.m */, + A69F256913591ACD0091A696 /* TexturedGeometryView.h */, + A69F256A13591ACD0091A696 /* TexturedGeometryView.m */, + ); + path = 3DAR; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -277,6 +382,25 @@ 28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */, 5B3AA9A110D20A8200E81307 /* SettingsView.xib in Resources */, 5B85658C10D6020500C8E54D /* lastfm.png in Resources */, + A69F2542135919D90091A696 /* 3dar.plist in Resources */, + A69F2543135919D90091A696 /* 3dar_logo.png in Resources */, + A69F2544135919D90091A696 /* 3dar_marker_icon1.png in Resources */, + A69F2545135919D90091A696 /* 3dar_marker_icon2.png in Resources */, + A69F2546135919D90091A696 /* 3dar_marker_icon3.png in Resources */, + A69F2547135919D90091A696 /* 3dar_marker_icon4.png in Resources */, + A69F2548135919D90091A696 /* 3dar_marker_icon5.png in Resources */, + A69F2549135919D90091A696 /* 3dar_marker_icon6.png in Resources */, + A69F254A135919D90091A696 /* bubble1.png in Resources */, + A69F254B135919D90091A696 /* compass_rose.png in Resources */, + A69F254D135919D90091A696 /* pushpin_1.0.obj in Resources */, + A69F254F135919D90091A696 /* red.png in Resources */, + A69F2550135919D90091A696 /* SM3DAR_keys.txt in Resources */, + A6645377135E01D700E93CF4 /* Icon.png in Resources */, + A6645378135E01D700E93CF4 /* Default.png in Resources */, + A648D30F135E32AC00BC529E /* sky.png in Resources */, + A648D331135E33F400BC529E /* sphere.obj in Resources */, + A648D387135E401100BC529E /* pano_bg.png in Resources */, + A648D584135F9D5800BC529E /* music_icon.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -303,6 +427,10 @@ 8CC1A9C511236E0100BA6497 /* LastfmViewController.m in Sources */, 8C2A61A21135BA180039EC54 /* MapViewController.m in Sources */, 4D8721F31139308000B3CB20 /* MapMarker.m in Sources */, + A69F254E135919D90091A696 /* PushpinView.m in Sources */, + A69F2551135919D90091A696 /* SM3DARMapView.m in Sources */, + A69F256B13591ACD0091A696 /* TexturedGeometryView.m in Sources */, + A648D329135E33B900BC529E /* SphereBackgroundView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -319,6 +447,11 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = GeoEvents_Prefix.pch; INFOPLIST_FILE = "GeoEvents-Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../../Library/iOS/build/Debug-iphoneos\"", + ); + OTHER_LDFLAGS = "-lstdc++"; PRODUCT_NAME = GeoEvents; }; name = Debug; @@ -331,6 +464,11 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = GeoEvents_Prefix.pch; INFOPLIST_FILE = "GeoEvents-Info.plist"; + LIBRARY_SEARCH_PATHS = ( + "$(inherited)", + "\"$(SRCROOT)/../../../Library/iOS/build/Debug-iphoneos\"", + ); + OTHER_LDFLAGS = "-lstdc++"; PRODUCT_NAME = GeoEvents; }; name = Release; @@ -339,14 +477,17 @@ isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer: Peter Anderson (PK484EQWS2)"; CURRENT_PROJECT_VERSION = 6; GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 4.0; PREBINDING = NO; + "PROVISIONING_PROFILE[sdk=iphoneos*]" = "249889C4-BEBC-4098-A78F-E04E2CA962FC"; SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -357,11 +498,13 @@ ARCHS = "$(ARCHS_STANDARD_32_BIT)"; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; GCC_C_LANGUAGE_STANDARD = c99; + GCC_THUMB_SUPPORT = NO; GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_UNUSED_VARIABLE = YES; IPHONEOS_DEPLOYMENT_TARGET = 4.0; PREBINDING = NO; SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; diff --git a/IndexViewController.m b/IndexViewController.m index a45ed98..1f5f798 100644 --- a/IndexViewController.m +++ b/IndexViewController.m @@ -48,7 +48,7 @@ - (void)dealloc { } - (void)locationUpdate:(CLLocation *)location { - bool simulator = YES; +// bool simulator = NO; // ?? GeoEvents_finalAppDelegate * appDelegate = [UIApplication sharedApplication].delegate; latitude = [NSNumber numberWithDouble:[location coordinate].latitude]; @@ -58,14 +58,13 @@ - (void)locationUpdate:(CLLocation *)location { appDelegate.lat = latitude; appDelegate.lon = longitude; - if(run == 5 || simulator) { + if(location.horizontalAccuracy < 1000.0) { // run == 5 || simulator) { locationFound = YES; [self.tableView reloadData]; [locationController.locationManager stopUpdatingLocation]; } - NSLog(@"Location: %f", [location coordinate].latitude); - NSLog(@"Location: %f", [longitude doubleValue]); + NSLog(@"New lat/lon/acc %f, %f, %f", location.coordinate.latitude, location.coordinate.longitude, location.horizontalAccuracy); } - (void)locationError:(NSError *)error { @@ -97,7 +96,7 @@ - (void)searchByGps { -(void)loadSearchView:(bool)isUsingGps { GeoEvents_finalAppDelegate * appDelegate = [UIApplication sharedApplication].delegate; appDelegate.isUsingGps = isUsingGps; - + SearchViewViewController * searchView = [[SearchViewViewController alloc] initWithStyle:UITableViewStylePlain]; self.searchViewViewController = searchView; [self.navigationController pushViewController:searchViewViewController animated:YES]; diff --git a/SearchViewViewController.m b/SearchViewViewController.m index 832d15c..b81f1fb 100644 --- a/SearchViewViewController.m +++ b/SearchViewViewController.m @@ -60,6 +60,12 @@ - (void)viewDidLoad { appForNetDelegate.networkActivityIndicatorVisible = NO; } +- (void)viewWillAppear:(BOOL)animated +{ + [super viewWillAppear:animated]; + + self.wantsFullScreenLayout = NO; +} - (void)didReceiveMemoryWarning { // Releases the view if it doesn't have a superview. @@ -80,10 +86,13 @@ - (void)loadMap { mapView.events = events; self.mapViewController = mapView; [mapView release]; - - [self.navigationController pushViewController:mapViewController animated:YES]; - NSLog(@"Her!"); - + + +// [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone]; +// self.wantsFullScreenLayout = YES; +// mapView.wantsFullScreenLayout = YES; + + [self.navigationController pushViewController:mapViewController animated:YES]; } #pragma mark Table view methods @@ -260,8 +269,11 @@ - (NSString*) createUrl:(NSString*)api latitude:(NSNumber*)lat longitude:(NSNumb NSString * modifiedSearch = [searchQuery stringByReplacingOccurrencesOfString:@" " withString:@"%20"]; [baseUrl appendFormat:@"&location=%@&api_key=%@", modifiedSearch, api]; } else { - [baseUrl appendFormat:@"&lat=%f&long=%f&api_key=%@", [lat doubleValue], [lon doubleValue], api]; + [baseUrl appendFormat:@"&lat=%f&long=%f&api_key=%@&distance=15&limit=30", [lat doubleValue], [lon doubleValue], api]; } + + NSLog(@"Fetching events: %@", baseUrl); + return baseUrl; } From 6a03693eaff10503da7067b2d73ef60db94f58ef Mon Sep 17 00:00:00 2001 From: "P. Mark Anderson" Date: Thu, 21 Apr 2011 01:21:56 -0700 Subject: [PATCH 4/8] Custom map annotations. --- 3DAR/3dar.plist | 22 + 3DAR/3dar_logo.png | Bin 0 -> 4822 bytes 3DAR/3dar_marker_icon1.png | Bin 0 -> 1337 bytes 3DAR/3dar_marker_icon2.png | Bin 0 -> 3443 bytes 3DAR/3dar_marker_icon3.png | Bin 0 -> 1341 bytes 3DAR/3dar_marker_icon4.png | Bin 0 -> 1221 bytes 3DAR/3dar_marker_icon5.png | Bin 0 -> 1340 bytes 3DAR/3dar_marker_icon6.png | Bin 0 -> 1356 bytes 3DAR/Pushpin.h | 1229 ++++++++++ 3DAR/PushpinView.h | 17 + 3DAR/PushpinView.m | 187 ++ 3DAR/SM3DAR.h | 367 +++ 3DAR/SM3DARMapView.h | 40 + 3DAR/SM3DARMapView.m | 538 +++++ 3DAR/SM3DAR_keys.txt | 9 + 3DAR/SphereBackgroundView.h | 12 + 3DAR/SphereBackgroundView.m | 63 + 3DAR/TexturedGeometryView.h | 36 + 3DAR/TexturedGeometryView.m | 87 + 3DAR/bubble1.png | Bin 0 -> 91697 bytes 3DAR/compass_rose.png | Bin 0 -> 116149 bytes 3DAR/music_icon copy 2.png | Bin 0 -> 2645 bytes 3DAR/music_icon copy.png | Bin 0 -> 1980 bytes 3DAR/music_icon.png | Bin 0 -> 3222 bytes 3DAR/music_icon@2x.png | Bin 0 -> 6217 bytes 3DAR/pano_bg copy 2.png | Bin 0 -> 1826 bytes 3DAR/pano_bg copy.png | Bin 0 -> 4298 bytes 3DAR/pano_bg.png | Bin 0 -> 3996 bytes 3DAR/pushpin_1.0.obj | 3382 +++++++++++++++++++++++++++ 3DAR/red.png | Bin 0 -> 190 bytes 3DAR/sky.png | Bin 0 -> 1315 bytes 3DAR/sphere.obj | 408 ++++ Classes/MapViewController.m | 34 +- Default.png | Bin 0 -> 8151 bytes GeoEvents.xcodeproj/project.pbxproj | 4 + Icon.png | Bin 0 -> 4822 bytes IndexViewController.m | 2 +- 37 files changed, 6408 insertions(+), 29 deletions(-) create mode 100644 3DAR/3dar.plist create mode 100644 3DAR/3dar_logo.png create mode 100644 3DAR/3dar_marker_icon1.png create mode 100644 3DAR/3dar_marker_icon2.png create mode 100644 3DAR/3dar_marker_icon3.png create mode 100644 3DAR/3dar_marker_icon4.png create mode 100644 3DAR/3dar_marker_icon5.png create mode 100644 3DAR/3dar_marker_icon6.png create mode 100644 3DAR/Pushpin.h create mode 100644 3DAR/PushpinView.h create mode 100644 3DAR/PushpinView.m create mode 100644 3DAR/SM3DAR.h create mode 100644 3DAR/SM3DARMapView.h create mode 100644 3DAR/SM3DARMapView.m create mode 100644 3DAR/SM3DAR_keys.txt create mode 100644 3DAR/SphereBackgroundView.h create mode 100644 3DAR/SphereBackgroundView.m create mode 100644 3DAR/TexturedGeometryView.h create mode 100644 3DAR/TexturedGeometryView.m create mode 100644 3DAR/bubble1.png create mode 100644 3DAR/compass_rose.png create mode 100644 3DAR/music_icon copy 2.png create mode 100644 3DAR/music_icon copy.png create mode 100644 3DAR/music_icon.png create mode 100644 3DAR/music_icon@2x.png create mode 100644 3DAR/pano_bg copy 2.png create mode 100644 3DAR/pano_bg copy.png create mode 100644 3DAR/pano_bg.png create mode 100644 3DAR/pushpin_1.0.obj create mode 100755 3DAR/red.png create mode 100644 3DAR/sky.png create mode 100755 3DAR/sphere.obj create mode 100644 Default.png create mode 100644 Icon.png diff --git a/3DAR/3dar.plist b/3DAR/3dar.plist new file mode 100644 index 0000000..69bc197 --- /dev/null +++ b/3DAR/3dar.plist @@ -0,0 +1,22 @@ + + + + + 3darAutofocusPoi + + 3darDrawGroundplaneGrid + + 3darMapMode + auto + 3darDisableLocationServices + + 3darDisableGyro + + 3darLookMode + free + 3darEnableMap + + 3darOverridePoiAltitude + + + diff --git a/3DAR/3dar_logo.png b/3DAR/3dar_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bf8ef4020186b0f44db61d57c68303775518fa64 GIT binary patch literal 4822 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 literal 0 HcmV?d00001 diff --git a/3DAR/3dar_marker_icon2.png b/3DAR/3dar_marker_icon2.png new file mode 100644 index 0000000000000000000000000000000000000000..db63b26a1e3011cbcdd558c976849d4fa426e4da GIT binary patch literal 3443 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 literal 0 HcmV?d00001 diff --git a/3DAR/3dar_marker_icon5.png b/3DAR/3dar_marker_icon5.png new file mode 100644 index 0000000000000000000000000000000000000000..98b280d3019757279bb80abd14f4a3a2adfc6aad GIT binary patch literal 1340 zcmV-C1;hG@P)-@5d&O@+y=v9-|K^FiI%`J9+Z;@$aT*^}F(FOt$%0OpFpX;CSx0q(J*s z*_}4|<;(qgzjOch+;h*lmjD3a!_xCBDek>aOkI~qR_$q$Qv5QBH4F)Z<7?F3vd~_E zKrliGIZB`2vXE_oF{P>T#=W8x%P84U^8qn+{>Xh#?YJ6)LjFxaVb^7%Z~BD9X#3+O zK7OY}BKKLDUp#~+*2B8>9T2K&0NEN9;QKj=k77J3vq!CKIKv75PXt(ysEn=m<7{UF zqAXx+`xdN&^H8-L?3C}AhrCVSL6Fjl7Rl_o)Q4K_-`|OV(*7Beko!cPKtMok8HK7n z02M<3R@*$3ZJ%AhHpjiE|EHF|25xR{pwtbv(eIfBn7gl#%<2;=9Q=l+_$XBG1srT{ z>A+6RK@Ijxv%X0^F`s6AE8X0El}$iS>p9}9h&|t`!`Ur6P7(Vr5yVgbWDLz=nm0Y+j5u$NEPvq`6`s0F~`{(nm@%| zPzxRs8TX`Z$EBb#u_{1KyRcjx(f#ibNtiwC&i324tA3o*Eiq6)+l> z)W{ifG)`x}SO9JF3Ah*Y1hvB?0HgmpD{F@fy$xV+XXZLjcs3oK;Sl?VBD9+BtYME7QK-E zDgu?ec(R`>&|7rb{347vd)1g8>jIO2BFtdu+EAgp__|VOTXr&{{V;uFIu`w*YxpR# zsQVggE%=R;VJ_Dczof@Vo=(hvhIdCe2A>A8yKcc};~=DM3c;~e`>E)no?l4O)}J|;1Qa}c(T=I}5-EJ-C!vpg?PPFVrIQzEJ6hWZVh`UR z@;04cSSy_E35Bp^n&-32zH)DIF5iTwM>jBdC~BKuvH|Ew&9ddNJ&3!4CK zze{2bJBg1h4POsoz1O zv-(`}zX-rP!vUHVy`{m&@#sbHTILca0ZFC;0$2Q#fWHBQKnRo|Jc1tp0000t^%_I+5&BXLI*9BjTg19mrH*TO^Px^d3>e}k+Q|3R0=f&oM>{j#NaFEaZkK3J!V^0I8(X=@ z@J3eH_sVr=h$mLdb!XGNi>}iNXvvvJK@#PRJhT+{Z_4=J5E06VI*|Ir%p>| zj;m$6I0cZEuN6SXTmp2sPLO%11TcKw;kYm>o9DD1P({`O_T&*N0TB=CyYc?PNZAUT z=l2@}V>ot#{S*))P41@>ke_r&#qgP1cEd$BpzbFNNY=EPJ_h{#D((+DDgk!G`zS0R z<8)Yn9`@mF7%p4glyTxMvTe~pW(e_1K1ccjm4F^x37d>_k*)%_8;1CCw#;s(7?JnP zs%LO)2!3nGdhekg+Dh14e1q);CE8O)#6vgp5}&&x!ntu0coxku68TF7$) zs09$nBt`1!Qe4}iMt`2&4ld&)PMVCDfHbaL=) zlfquh^*hyZ&Ayib4BGwxKW`Z*!fOr=+KBO=P*2g1EK~wI^1pV_S#S+KR*Rp5F0@;czvK6hSc}Ig9!K?2r{sDxp zo{$wc+Ss0V1+|#w?}17{edfCxXf}RGTJ(8*{&Q4FvicmwBzU?@7VL&g!Y0EUo5E|M zt^@1Yo%0FWk@#%3tE&jQ3K!W}7{($b-VvadwRDlyHX3F(Kqa6u{k08LrN2&o1@3O* zD@E#~Fj)=IoIQv8zTjq6`nfI5#t%4!Qwb?p0*P&$yrxfFquhV$CsR zR!s%EiM)Qtr541VfuP?uptGjDh{&ac3n~GI_%SDpBV+tN literal 0 HcmV?d00001 diff --git a/3DAR/Pushpin.h b/3DAR/Pushpin.h new file mode 100644 index 0000000..f68c544 --- /dev/null +++ b/3DAR/Pushpin.h @@ -0,0 +1,1229 @@ +/* +created with obj2opengl.pl + +source file : ./pushpin.obj +vertices : 129 +faces : 150 +normals : 0 +texture coords : 182 + + +// include generated arrays +#import "pushpin.h" + +// set input data to arrays +glVertexPointer(3, GL_FLOAT, 0, pushpinVerts); +glTexCoordPointer(2, GL_FLOAT, 0, pushpinTexCoords); + +// draw data +glDrawArrays(GL_TRIANGLES, 0, pushpinNumVerts); +*/ + +unsigned int pushpinNumVerts = 450; + +float pushpinVerts [] = { + // f 1/1 2/2 3/3 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + 0.0203438161267569, -0.0353637210849318, -0.00979707558282899, + 0.0225798682195881, -0.0353637210849318, 6.66810430999958e-09, + // f 1/1 4/4 2/2 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + 0.0140782252653672, -0.0353637210849318, -0.0176535794450617, + 0.0203438161267569, -0.0353637210849318, -0.00979707558282899, + // f 1/1 5/5 4/4 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + 0.00502434324840435, -0.0353637210849318, -0.0220138595214462, + 0.0140782252653672, -0.0353637210849318, -0.0176535794450617, + // f 1/1 6/6 5/5 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + -0.00502434324840435, -0.0353637210849318, -0.0220138595214462, + 0.00502434324840435, -0.0353637210849318, -0.0220138595214462, + // f 1/7 7/8 6/9 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + -0.0140782252653672, -0.0353637210849318, -0.0176535794450617, + -0.00502434324840435, -0.0353637210849318, -0.0220138595214462, + // f 1/7 8/10 7/8 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + -0.0203438161267569, -0.0353637210849318, -0.00979707558282899, + -0.0140782252653672, -0.0353637210849318, -0.0176535794450617, + // f 1/7 9/11 8/10 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + -0.0225798682195881, -0.0353637210849318, 6.66810430999958e-09, + -0.0203438161267569, -0.0353637210849318, -0.00979707558282899, + // f 1/7 10/12 9/11 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + -0.0203438161267569, -0.0353637210849318, 0.00979708891903761, + -0.0225798682195881, -0.0353637210849318, 6.66810430999958e-09, + // f 1/7 11/13 10/12 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + -0.0140782252653672, -0.0353637210849318, 0.0176535927812703, + -0.0203438161267569, -0.0353637210849318, 0.00979708891903761, + // f 1/7 12/14 11/13 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + -0.00502434324840435, -0.0353637210849318, 0.0220138728576548, + -0.0140782252653672, -0.0353637210849318, 0.0176535927812703, + // f 1/7 13/15 12/14 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + 0.00502434324840435, -0.0353637210849318, 0.0220138728576548, + -0.00502434324840435, -0.0353637210849318, 0.0220138728576548, + // f 1/7 14/16 13/15 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + 0.0140782252653672, -0.0353637210849318, 0.0176535927812703, + 0.00502434324840435, -0.0353637210849318, 0.0220138728576548, + // f 1/7 15/17 14/16 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + 0.0203438161267569, -0.0353637210849318, 0.00979708891903761, + 0.0140782252653672, -0.0353637210849318, 0.0176535927812703, + // f 1/1 3/3 15/17 + -4.14572644388855e-19, -0.918435701403889, 6.66810430999958e-09, + 0.0225798682195881, -0.0353637210849318, 6.66810430999958e-09, + 0.0203438161267569, -0.0353637210849318, 0.00979708891903761, + // f 2/18 4/19 5/20 15/21 + 0.0203438161267569, -0.0353637210849318, -0.00979707558282899, + 0.0140782252653672, -0.0353637210849318, -0.0176535794450617, + 0.00502434324840435, -0.0353637210849318, -0.0220138595214462, + // f 5/20 6/22 7/23 9/24 + 0.00502434324840435, -0.0353637210849318, -0.0220138595214462, + -0.00502434324840435, -0.0353637210849318, -0.0220138595214462, + -0.0140782252653672, -0.0353637210849318, -0.0176535794450617, + // f 7/23 8/25 9/24 + -0.0140782252653672, -0.0353637210849318, -0.0176535794450617, + -0.0203438161267569, -0.0353637210849318, -0.00979707558282899, + -0.0225798682195881, -0.0353637210849318, 6.66810430999958e-09, + // f 9/24 10/26 11/27 13/28 + -0.0225798682195881, -0.0353637210849318, 6.66810430999958e-09, + -0.0203438161267569, -0.0353637210849318, 0.00979708891903761, + -0.0140782252653672, -0.0353637210849318, 0.0176535927812703, + // f 11/27 12/29 13/28 + -0.0140782252653672, -0.0353637210849318, 0.0176535927812703, + -0.00502434324840435, -0.0353637210849318, 0.0220138728576548, + 0.00502434324840435, -0.0353637210849318, 0.0220138728576548, + // f 13/28 14/30 15/21 9/24 + 0.00502434324840435, -0.0353637210849318, 0.0220138728576548, + 0.0140782252653672, -0.0353637210849318, 0.0176535927812703, + 0.0203438161267569, -0.0353637210849318, 0.00979708891903761, + // f 5/20 9/24 15/21 + 0.00502434324840435, -0.0353637210849318, -0.0220138595214462, + -0.0225798682195881, -0.0353637210849318, 6.66810430999958e-09, + 0.0203438161267569, -0.0353637210849318, 0.00979708891903761, + // f 3/31 2/18 15/21 + 0.0225798682195881, -0.0353637210849318, 6.66810430999958e-09, + 0.0203438161267569, -0.0353637210849318, -0.00979707558282899, + 0.0203438161267569, -0.0353637210849318, 0.00979708891903761, + // f 16/32 17/33 18/34 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + -4.14572644388855e-19, 0.0762995335127595, -0.0264683299052609, + -0.0101291138369432, 0.0762995335127595, -0.0244533454746177, + // f 16/35 18/34 19/36 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + -0.0101291138369432, 0.0762995335127595, -0.0244533454746177, + -0.0187159151513066, 0.0762995335127595, -0.0187159084832023, + // f 16/37 19/36 20/38 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + -0.0187159151513066, 0.0762995335127595, -0.0187159084832023, + -0.024453352142722, 0.0762995335127595, -0.0101291071688389, + // f 16/39 20/38 21/40 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + -0.024453352142722, 0.0762995335127595, -0.0101291071688389, + -0.0264683365733652, 0.0762995335127595, 6.66810430999958e-09, + // f 16/41 21/40 22/42 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + -0.0264683365733652, 0.0762995335127595, 6.66810430999958e-09, + -0.024453352142722, 0.0762995335127595, 0.0101291205050476, + // f 16/43 22/42 23/44 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + -0.024453352142722, 0.0762995335127595, 0.0101291205050476, + -0.0187159151513066, 0.0762995335127595, 0.0187159218194109, + // f 16/45 23/44 24/46 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + -0.0187159151513066, 0.0762995335127595, 0.0187159218194109, + -0.0101291138369432, 0.0762995335127595, 0.0244533588108263, + // f 16/47 24/46 25/48 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + -0.0101291138369432, 0.0762995335127595, 0.0244533588108263, + -4.14572644388855e-19, 0.0762995335127595, 0.0264683432414695, + // f 16/49 25/48 26/50 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + -4.14572644388855e-19, 0.0762995335127595, 0.0264683432414695, + 0.0101291138369432, 0.0762995335127595, 0.0244533588108263, + // f 16/51 26/50 27/52 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + 0.0101291138369432, 0.0762995335127595, 0.0244533588108263, + 0.0187159151513066, 0.0762995335127595, 0.0187159218194109, + // f 16/53 27/52 28/54 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + 0.0187159151513066, 0.0762995335127595, 0.0187159218194109, + 0.024453352142722, 0.0762995335127595, 0.0101291205050476, + // f 16/55 28/54 29/56 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + 0.024453352142722, 0.0762995335127595, 0.0101291205050476, + 0.0264683365733652, 0.0762995335127595, 6.66810430999958e-09, + // f 16/57 29/56 30/58 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + 0.0264683365733652, 0.0762995335127595, 6.66810430999958e-09, + 0.024453352142722, 0.0762995335127595, -0.0101291071688389, + // f 16/59 30/58 31/60 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + 0.024453352142722, 0.0762995335127595, -0.0101291071688389, + 0.0187159151513066, 0.0762995335127595, -0.0187159084832023, + // f 16/61 31/60 32/62 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + 0.0187159151513066, 0.0762995335127595, -0.0187159084832023, + 0.0101291138369432, 0.0762995335127595, -0.0244533454746177, + // f 16/63 32/62 17/64 + -4.14572644388855e-19, 0.0815642985961114, 6.66810430999958e-09, + 0.0101291138369432, 0.0762995335127595, -0.0244533454746177, + -4.14572644388855e-19, 0.0762995335127595, -0.0264683299052609, + // f 17/33 33/65 34/66 18/34 + -4.14572644388855e-19, 0.0762995335127595, -0.0264683299052609, + -4.14572644388855e-19, 0.0613065010149529, -0.0489071277100676, + -0.0187159151513066, 0.0613065010149529, -0.0451842450565675, + // f 18/34 34/66 35/67 19/36 + -0.0101291138369432, 0.0762995335127595, -0.0244533454746177, + -0.0187159151513066, 0.0613065010149529, -0.0451842450565675, + -0.0345824659796652, 0.0613065010149529, -0.0345824593115609, + // f 19/36 35/67 36/68 20/38 + -0.0187159151513066, 0.0762995335127595, -0.0187159084832023, + -0.0345824659796652, 0.0613065010149529, -0.0345824593115609, + -0.0451842517246718, 0.0613065010149529, -0.0187159084832023, + // f 20/38 36/68 37/69 21/40 + -0.024453352142722, 0.0762995335127595, -0.0101291071688389, + -0.0451842517246718, 0.0613065010149529, -0.0187159084832023, + -0.0489071343781719, 0.0613065010149529, 6.66810430999958e-09, + // f 21/40 37/69 38/70 22/42 + -0.0264683365733652, 0.0762995335127595, 6.66810430999958e-09, + -0.0489071343781719, 0.0613065010149529, 6.66810430999958e-09, + -0.0451842517246718, 0.0613065010149529, 0.0187159218194109, + // f 22/42 38/70 39/71 23/44 + -0.024453352142722, 0.0762995335127595, 0.0101291205050476, + -0.0451842517246718, 0.0613065010149529, 0.0187159218194109, + -0.0345824659796652, 0.0613065010149529, 0.0345824726477695, + // f 23/44 39/71 40/72 24/46 + -0.0187159151513066, 0.0762995335127595, 0.0187159218194109, + -0.0345824659796652, 0.0613065010149529, 0.0345824726477695, + -0.0187159151513066, 0.0613065010149529, 0.0451842583927761, + // f 24/46 40/72 41/73 25/48 + -0.0101291138369432, 0.0762995335127595, 0.0244533588108263, + -0.0187159151513066, 0.0613065010149529, 0.0451842583927761, + -4.14572644388855e-19, 0.0613065010149529, 0.0489071410462762, + // f 25/48 41/73 42/74 26/50 + -4.14572644388855e-19, 0.0762995335127595, 0.0264683432414695, + -4.14572644388855e-19, 0.0613065010149529, 0.0489071410462762, + 0.0187159151513066, 0.0613065010149529, 0.0451842583927761, + // f 26/50 42/74 43/75 27/52 + 0.0101291138369432, 0.0762995335127595, 0.0244533588108263, + 0.0187159151513066, 0.0613065010149529, 0.0451842583927761, + 0.0345824659796652, 0.0613065010149529, 0.0345824726477695, + // f 27/52 43/75 44/76 28/54 + 0.0187159151513066, 0.0762995335127595, 0.0187159218194109, + 0.0345824659796652, 0.0613065010149529, 0.0345824726477695, + 0.0451842517246718, 0.0613065010149529, 0.0187159218194109, + // f 28/54 44/76 45/77 29/56 + 0.024453352142722, 0.0762995335127595, 0.0101291205050476, + 0.0451842517246718, 0.0613065010149529, 0.0187159218194109, + 0.0489071343781719, 0.0613065010149529, 6.66810430999958e-09, + // f 29/56 45/77 46/78 30/58 + 0.0264683365733652, 0.0762995335127595, 6.66810430999958e-09, + 0.0489071343781719, 0.0613065010149529, 6.66810430999958e-09, + 0.0451842517246718, 0.0613065010149529, -0.0187159084832023, + // f 30/58 46/78 47/79 31/60 + 0.024453352142722, 0.0762995335127595, -0.0101291071688389, + 0.0451842517246718, 0.0613065010149529, -0.0187159084832023, + 0.0345824659796652, 0.0613065010149529, -0.0345824593115609, + // f 31/60 47/79 48/80 32/62 + 0.0187159151513066, 0.0762995335127595, -0.0187159084832023, + 0.0345824659796652, 0.0613065010149529, -0.0345824593115609, + 0.0187159151513066, 0.0613065010149529, -0.0451842450565675, + // f 32/62 48/80 33/81 17/64 + 0.0101291138369432, 0.0762995335127595, -0.0244533454746177, + 0.0187159151513066, 0.0613065010149529, -0.0451842450565675, + -4.14572644388855e-19, 0.0613065010149529, -0.0489071277100676, + // f 33/65 49/82 50/83 34/66 + -4.14572644388855e-19, 0.0613065010149529, -0.0489071277100676, + -4.14572644388855e-19, 0.0388677032101462, -0.0639001602078741, + -0.024453352142722, 0.0388677032101462, -0.0590358114542829, + // f 34/66 50/83 51/84 35/67 + -0.0187159151513066, 0.0613065010149529, -0.0451842450565675, + -0.024453352142722, 0.0388677032101462, -0.0590358114542829, + -0.0451842517246718, 0.0388677032101462, -0.0451842450565675, + // f 35/67 51/84 52/85 36/68 + -0.0345824659796652, 0.0613065010149529, -0.0345824593115609, + -0.0451842517246718, 0.0388677032101462, -0.0451842450565675, + -0.0590358181223872, 0.0388677032101462, -0.0244533454746177, + // f 36/68 52/85 53/86 37/69 + -0.0451842517246718, 0.0613065010149529, -0.0187159084832023, + -0.0590358181223872, 0.0388677032101462, -0.0244533454746177, + -0.0639001668759785, 0.0388677032101462, 6.66810430999958e-09, + // f 37/69 53/86 54/87 38/70 + -0.0489071343781719, 0.0613065010149529, 6.66810430999958e-09, + -0.0639001668759785, 0.0388677032101462, 6.66810430999958e-09, + -0.0590358181223872, 0.0388677032101462, 0.0244533588108263, + // f 38/70 54/87 55/88 39/71 + -0.0451842517246718, 0.0613065010149529, 0.0187159218194109, + -0.0590358181223872, 0.0388677032101462, 0.0244533588108263, + -0.0451842517246718, 0.0388677032101462, 0.0451842583927761, + // f 39/71 55/88 56/89 40/72 + -0.0345824659796652, 0.0613065010149529, 0.0345824726477695, + -0.0451842517246718, 0.0388677032101462, 0.0451842583927761, + -0.024453352142722, 0.0388677032101462, 0.0590358247904915, + // f 40/72 56/89 57/90 41/73 + -0.0187159151513066, 0.0613065010149529, 0.0451842583927761, + -0.024453352142722, 0.0388677032101462, 0.0590358247904915, + -4.14572644388855e-19, 0.0388677032101462, 0.0639001735440828, + // f 41/73 57/90 58/91 42/74 + -4.14572644388855e-19, 0.0613065010149529, 0.0489071410462762, + -4.14572644388855e-19, 0.0388677032101462, 0.0639001735440828, + 0.024453352142722, 0.0388677032101462, 0.0590358247904915, + // f 42/74 58/91 59/92 43/75 + 0.0187159151513066, 0.0613065010149529, 0.0451842583927761, + 0.024453352142722, 0.0388677032101462, 0.0590358247904915, + 0.0451842517246718, 0.0388677032101462, 0.0451842583927761, + // f 43/75 59/92 60/93 44/76 + 0.0345824659796652, 0.0613065010149529, 0.0345824726477695, + 0.0451842517246718, 0.0388677032101462, 0.0451842583927761, + 0.0590358181223872, 0.0388677032101462, 0.0244533588108263, + // f 44/76 60/93 61/94 45/77 + 0.0451842517246718, 0.0613065010149529, 0.0187159218194109, + 0.0590358181223872, 0.0388677032101462, 0.0244533588108263, + 0.0639001668759785, 0.0388677032101462, 6.66810430999958e-09, + // f 45/77 61/94 62/95 46/78 + 0.0489071343781719, 0.0613065010149529, 6.66810430999958e-09, + 0.0639001668759785, 0.0388677032101462, 6.66810430999958e-09, + 0.0590358181223872, 0.0388677032101462, -0.0244533454746177, + // f 46/78 62/95 63/96 47/79 + 0.0451842517246718, 0.0613065010149529, -0.0187159084832023, + 0.0590358181223872, 0.0388677032101462, -0.0244533454746177, + 0.0451842517246718, 0.0388677032101462, -0.0451842450565675, + // f 47/79 63/96 64/97 48/80 + 0.0345824659796652, 0.0613065010149529, -0.0345824593115609, + 0.0451842517246718, 0.0388677032101462, -0.0451842450565675, + 0.024453352142722, 0.0388677032101462, -0.0590362415470109, + // f 48/80 64/97 49/98 33/81 + 0.0187159151513066, 0.0613065010149529, -0.0451842450565675, + 0.024453352142722, 0.0388677032101462, -0.0590362415470109, + -4.14572644388855e-19, 0.0388677032101462, -0.0639001602078741, + // f 49/82 65/99 66/100 50/83 + -4.14572644388855e-19, 0.0388677032101462, -0.0639001602078741, + -4.14572644388855e-19, 0.012399366636781, -0.0691649252912261, + -0.0264683365733652, 0.012399366636781, -0.0639001602078741, + // f 50/83 66/100 67/101 51/84 + -0.024453352142722, 0.0388677032101462, -0.0590358114542829, + -0.0264683365733652, 0.012399366636781, -0.0639001602078741, + -0.0489071343781719, 0.012399366636781, -0.0489071277100676, + // f 51/84 67/101 68/102 52/85 + -0.0451842517246718, 0.0388677032101462, -0.0451842450565675, + -0.0489071343781719, 0.012399366636781, -0.0489071277100676, + -0.0639001668759785, 0.012399366636781, -0.0264683299052609, + // f 52/85 68/102 69/103 53/86 + -0.0590358181223872, 0.0388677032101462, -0.0244533454746177, + -0.0639001668759785, 0.012399366636781, -0.0264683299052609, + -0.0691649319593304, 0.012399366636781, 6.66810430999958e-09, + // f 53/86 69/103 70/104 54/87 + -0.0639001668759785, 0.0388677032101462, 6.66810430999958e-09, + -0.0691649319593304, 0.012399366636781, 6.66810430999958e-09, + -0.0639001668759785, 0.012399366636781, 0.0264683432414695, + // f 54/87 70/104 71/105 55/88 + -0.0590358181223872, 0.0388677032101462, 0.0244533588108263, + -0.0639001668759785, 0.012399366636781, 0.0264683432414695, + -0.0489071343781719, 0.012399366636781, 0.0489071410462762, + // f 55/88 71/105 72/106 56/89 + -0.0451842517246718, 0.0388677032101462, 0.0451842583927761, + -0.0489071343781719, 0.012399366636781, 0.0489071410462762, + -0.0264683365733652, 0.012399366636781, 0.0639001735440828, + // f 56/89 72/106 73/107 57/90 + -0.024453352142722, 0.0388677032101462, 0.0590358247904915, + -0.0264683365733652, 0.012399366636781, 0.0639001735440828, + -4.14572644388855e-19, 0.012399366636781, 0.0691649386274347, + // f 57/90 73/107 74/108 58/91 + -4.14572644388855e-19, 0.0388677032101462, 0.0639001735440828, + -4.14572644388855e-19, 0.012399366636781, 0.0691649386274347, + 0.0264683365733652, 0.012399366636781, 0.0639001735440828, + // f 58/91 74/108 75/109 59/92 + 0.024453352142722, 0.0388677032101462, 0.0590358247904915, + 0.0264683365733652, 0.012399366636781, 0.0639001735440828, + 0.0489071343781719, 0.012399366636781, 0.0489071410462762, + // f 59/92 75/109 76/110 60/93 + 0.0451842517246718, 0.0388677032101462, 0.0451842583927761, + 0.0489071343781719, 0.012399366636781, 0.0489071410462762, + 0.0639001668759785, 0.012399366636781, 0.0264683432414695, + // f 60/93 76/110 77/111 61/94 + 0.0590358181223872, 0.0388677032101462, 0.0244533588108263, + 0.0639001668759785, 0.012399366636781, 0.0264683432414695, + 0.0691649319593304, 0.012399366636781, 6.66810430999958e-09, + // f 61/94 77/111 78/112 62/95 + 0.0639001668759785, 0.0388677032101462, 6.66810430999958e-09, + 0.0691649319593304, 0.012399366636781, 6.66810430999958e-09, + 0.0639001668759785, 0.012399366636781, -0.0264683299052609, + // f 62/95 78/112 79/113 63/96 + 0.0590358181223872, 0.0388677032101462, -0.0244533454746177, + 0.0639001668759785, 0.012399366636781, -0.0264683299052609, + 0.0489071343781719, 0.012399366636781, -0.0489071277100676, + // f 63/96 79/113 80/114 64/97 + 0.0451842517246718, 0.0388677032101462, -0.0451842450565675, + 0.0489071343781719, 0.012399366636781, -0.0489071277100676, + 0.0264683365733652, 0.012399366636781, -0.0639001602078741, + // f 64/97 80/114 65/115 49/98 + 0.024453352142722, 0.0388677032101462, -0.0590362415470109, + 0.0264683365733652, 0.012399366636781, -0.0639001602078741, + -4.14572644388855e-19, 0.012399366636781, -0.0691649252912261, + // f 65/99 81/116 82/117 66/100 + -4.14572644388855e-19, 0.012399366636781, -0.0691649252912261, + -4.14572644388855e-19, -0.0140689699365842, -0.0639001602078741, + -0.024453352142722, -0.0140689699365842, -0.0590358114542829, + // f 66/100 82/117 83/118 67/101 + -0.0264683365733652, 0.012399366636781, -0.0639001602078741, + -0.024453352142722, -0.0140689699365842, -0.0590358114542829, + -0.0451842517246718, -0.0140689699365842, -0.0451842450565675, + // f 67/101 83/118 84/119 68/102 + -0.0489071343781719, 0.012399366636781, -0.0489071277100676, + -0.0451842517246718, -0.0140689699365842, -0.0451842450565675, + -0.0590358181223872, -0.0140689699365842, -0.0244533454746177, + // f 68/102 84/119 85/120 69/103 + -0.0639001668759785, 0.012399366636781, -0.0264683299052609, + -0.0590358181223872, -0.0140689699365842, -0.0244533454746177, + -0.0639001668759785, -0.0140689699365842, 6.66810430999958e-09, + // f 69/103 85/120 86/121 70/104 + -0.0691649319593304, 0.012399366636781, 6.66810430999958e-09, + -0.0639001668759785, -0.0140689699365842, 6.66810430999958e-09, + -0.0590358181223872, -0.0140689699365842, 0.0244533588108263, + // f 70/104 86/121 87/122 71/105 + -0.0639001668759785, 0.012399366636781, 0.0264683432414695, + -0.0590358181223872, -0.0140689699365842, 0.0244533588108263, + -0.0451842517246718, -0.0140689699365842, 0.0451842583927761, + // f 71/105 87/122 88/123 72/106 + -0.0489071343781719, 0.012399366636781, 0.0489071410462762, + -0.0451842517246718, -0.0140689699365842, 0.0451842583927761, + -0.024453352142722, -0.0140689699365842, 0.0590358247904915, + // f 72/106 88/123 89/124 73/107 + -0.0264683365733652, 0.012399366636781, 0.0639001735440828, + -0.024453352142722, -0.0140689699365842, 0.0590358247904915, + -4.14572644388855e-19, -0.0140689699365842, 0.0639001735440828, + // f 73/107 89/124 90/125 74/108 + -4.14572644388855e-19, 0.012399366636781, 0.0691649386274347, + -4.14572644388855e-19, -0.0140689699365842, 0.0639001735440828, + 0.024453352142722, -0.0140689699365842, 0.0590358247904915, + // f 74/108 90/125 91/126 75/109 + 0.0264683365733652, 0.012399366636781, 0.0639001735440828, + 0.024453352142722, -0.0140689699365842, 0.0590358247904915, + 0.0451842517246718, -0.0140689699365842, 0.0451842583927761, + // f 75/109 91/126 92/127 76/110 + 0.0489071343781719, 0.012399366636781, 0.0489071410462762, + 0.0451842517246718, -0.0140689699365842, 0.0451842583927761, + 0.0590358181223872, -0.0140689699365842, 0.0244533588108263, + // f 76/110 92/127 93/128 77/111 + 0.0639001668759785, 0.012399366636781, 0.0264683432414695, + 0.0590358181223872, -0.0140689699365842, 0.0244533588108263, + 0.0639001668759785, -0.0140689699365842, 6.66810430999958e-09, + // f 77/111 93/128 94/129 78/112 + 0.0691649319593304, 0.012399366636781, 6.66810430999958e-09, + 0.0639001668759785, -0.0140689699365842, 6.66810430999958e-09, + 0.0590358181223872, -0.0140689699365842, -0.0244533454746177, + // f 78/112 94/129 95/130 79/113 + 0.0639001668759785, 0.012399366636781, -0.0264683299052609, + 0.0590358181223872, -0.0140689699365842, -0.0244533454746177, + 0.0451842517246718, -0.0140689699365842, -0.0451842450565675, + // f 79/113 95/130 96/131 80/114 + 0.0489071343781719, 0.012399366636781, -0.0489071277100676, + 0.0451842517246718, -0.0140689699365842, -0.0451842450565675, + 0.024453352142722, -0.0140689699365842, -0.0590362415470109, + // f 80/114 96/131 81/132 65/115 + 0.0264683365733652, 0.012399366636781, -0.0639001602078741, + 0.024453352142722, -0.0140689699365842, -0.0590362415470109, + -4.14572644388855e-19, -0.0140689699365842, -0.0639001602078741, + // f 81/116 97/133 98/134 82/117 + -4.14572644388855e-19, -0.0140689699365842, -0.0639001602078741, + -4.14572644388855e-19, -0.0365077677413909, -0.0489071277100676, + -0.0187159151513066, -0.0365077677413909, -0.0451842450565675, + // f 82/117 98/134 99/135 83/118 + -0.024453352142722, -0.0140689699365842, -0.0590358114542829, + -0.0187159151513066, -0.0365077677413909, -0.0451842450565675, + -0.0345824659796652, -0.0365077677413909, -0.0345824593115609, + // f 83/118 99/135 100/136 84/119 + -0.0451842517246718, -0.0140689699365842, -0.0451842450565675, + -0.0345824659796652, -0.0365077677413909, -0.0345824593115609, + -0.0451842517246718, -0.0365077677413909, -0.0187159084832023, + // f 84/119 100/136 101/137 85/120 + -0.0590358181223872, -0.0140689699365842, -0.0244533454746177, + -0.0451842517246718, -0.0365077677413909, -0.0187159084832023, + -0.0489071343781719, -0.0365077677413909, 6.66810430999958e-09, + // f 85/120 101/137 102/138 86/121 + -0.0639001668759785, -0.0140689699365842, 6.66810430999958e-09, + -0.0489071343781719, -0.0365077677413909, 6.66810430999958e-09, + -0.0451842517246718, -0.0365077677413909, 0.0187159218194109, + // f 86/121 102/138 103/139 87/122 + -0.0590358181223872, -0.0140689699365842, 0.0244533588108263, + -0.0451842517246718, -0.0365077677413909, 0.0187159218194109, + -0.0345824659796652, -0.0365077677413909, 0.0345824726477695, + // f 87/122 103/139 104/140 88/123 + -0.0451842517246718, -0.0140689699365842, 0.0451842583927761, + -0.0345824659796652, -0.0365077677413909, 0.0345824726477695, + -0.0187159151513066, -0.0365077677413909, 0.0451842583927761, + // f 88/123 104/140 105/141 89/124 + -0.024453352142722, -0.0140689699365842, 0.0590358247904915, + -0.0187159151513066, -0.0365077677413909, 0.0451842583927761, + -4.14572644388855e-19, -0.0365077677413909, 0.0489071410462762, + // f 89/124 105/141 106/142 90/125 + -4.14572644388855e-19, -0.0140689699365842, 0.0639001735440828, + -4.14572644388855e-19, -0.0365077677413909, 0.0489071410462762, + 0.0187159151513066, -0.0365077677413909, 0.0451842583927761, + // f 90/125 106/142 107/143 91/126 + 0.024453352142722, -0.0140689699365842, 0.0590358247904915, + 0.0187159151513066, -0.0365077677413909, 0.0451842583927761, + 0.0345824659796652, -0.0365077677413909, 0.0345824726477695, + // f 91/126 107/143 108/144 92/127 + 0.0451842517246718, -0.0140689699365842, 0.0451842583927761, + 0.0345824659796652, -0.0365077677413909, 0.0345824726477695, + 0.0451842517246718, -0.0365077677413909, 0.0187159218194109, + // f 92/127 108/144 109/145 93/128 + 0.0590358181223872, -0.0140689699365842, 0.0244533588108263, + 0.0451842517246718, -0.0365077677413909, 0.0187159218194109, + 0.0489071343781719, -0.0365077677413909, 6.66810430999958e-09, + // f 93/128 109/145 110/146 94/129 + 0.0639001668759785, -0.0140689699365842, 6.66810430999958e-09, + 0.0489071343781719, -0.0365077677413909, 6.66810430999958e-09, + 0.0451842517246718, -0.0365077677413909, -0.0187159084832023, + // f 94/129 110/146 111/147 95/130 + 0.0590358181223872, -0.0140689699365842, -0.0244533454746177, + 0.0451842517246718, -0.0365077677413909, -0.0187159084832023, + 0.0345824659796652, -0.0365077677413909, -0.0345824593115609, + // f 95/130 111/147 112/148 96/131 + 0.0451842517246718, -0.0140689699365842, -0.0451842450565675, + 0.0345824659796652, -0.0365077677413909, -0.0345824593115609, + 0.0187159151513066, -0.0365077677413909, -0.0451842450565675, + // f 96/131 112/148 97/149 81/132 + 0.024453352142722, -0.0140689699365842, -0.0590362415470109, + 0.0187159151513066, -0.0365077677413909, -0.0451842450565675, + -4.14572644388855e-19, -0.0365077677413909, -0.0489071277100676, + // f 97/133 113/150 114/151 98/134 + -4.14572644388855e-19, -0.0365077677413909, -0.0489071277100676, + -4.14572644388855e-19, -0.0515008002391975, -0.0264683299052609, + -0.0101291138369432, -0.0515008002391975, -0.0244533454746177, + // f 98/134 114/151 115/152 99/135 + -0.0187159151513066, -0.0365077677413909, -0.0451842450565675, + -0.0101291138369432, -0.0515008002391975, -0.0244533454746177, + -0.0187159151513066, -0.0515008002391975, -0.0187159084832023, + // f 99/135 115/152 116/153 100/136 + -0.0345824659796652, -0.0365077677413909, -0.0345824593115609, + -0.0187159151513066, -0.0515008002391975, -0.0187159084832023, + -0.024453352142722, -0.0515008002391975, -0.0101291071688389, + // f 100/136 116/153 117/154 101/137 + -0.0451842517246718, -0.0365077677413909, -0.0187159084832023, + -0.024453352142722, -0.0515008002391975, -0.0101291071688389, + -0.0264683365733652, -0.0515008002391975, 6.66810430999958e-09, + // f 101/137 117/154 118/155 102/138 + -0.0489071343781719, -0.0365077677413909, 6.66810430999958e-09, + -0.0264683365733652, -0.0515008002391975, 6.66810430999958e-09, + -0.024453352142722, -0.0515008002391975, 0.0101291205050476, + // f 102/138 118/155 119/156 103/139 + -0.0451842517246718, -0.0365077677413909, 0.0187159218194109, + -0.024453352142722, -0.0515008002391975, 0.0101291205050476, + -0.0187159151513066, -0.0515008002391975, 0.0187159218194109, + // f 103/139 119/156 120/157 104/140 + -0.0345824659796652, -0.0365077677413909, 0.0345824726477695, + -0.0187159151513066, -0.0515008002391975, 0.0187159218194109, + -0.0101291138369432, -0.0515008002391975, 0.0244533588108263, + // f 104/140 120/157 121/158 105/141 + -0.0187159151513066, -0.0365077677413909, 0.0451842583927761, + -0.0101291138369432, -0.0515008002391975, 0.0244533588108263, + -4.14572644388855e-19, -0.0515008002391975, 0.0264683432414695, + // f 105/141 121/158 122/159 106/142 + -4.14572644388855e-19, -0.0365077677413909, 0.0489071410462762, + -4.14572644388855e-19, -0.0515008002391975, 0.0264683432414695, + 0.0101291138369432, -0.0515008002391975, 0.0244533588108263, + // f 106/142 122/159 123/160 107/143 + 0.0187159151513066, -0.0365077677413909, 0.0451842583927761, + 0.0101291138369432, -0.0515008002391975, 0.0244533588108263, + 0.0187159151513066, -0.0515008002391975, 0.0187159218194109, + // f 107/143 123/160 124/161 108/144 + 0.0345824659796652, -0.0365077677413909, 0.0345824726477695, + 0.0187159151513066, -0.0515008002391975, 0.0187159218194109, + 0.024453352142722, -0.0515008002391975, 0.0101291205050476, + // f 108/144 124/161 125/162 109/145 + 0.0451842517246718, -0.0365077677413909, 0.0187159218194109, + 0.024453352142722, -0.0515008002391975, 0.0101291205050476, + 0.0264683365733652, -0.0515008002391975, 6.66810430999958e-09, + // f 109/145 125/162 126/163 110/146 + 0.0489071343781719, -0.0365077677413909, 6.66810430999958e-09, + 0.0264683365733652, -0.0515008002391975, 6.66810430999958e-09, + 0.024453352142722, -0.0515008002391975, -0.0101291071688389, + // f 110/146 126/163 127/164 111/147 + 0.0451842517246718, -0.0365077677413909, -0.0187159084832023, + 0.024453352142722, -0.0515008002391975, -0.0101291071688389, + 0.0187159151513066, -0.0515008002391975, -0.0187159084832023, + // f 111/147 127/164 128/165 112/148 + 0.0345824659796652, -0.0365077677413909, -0.0345824593115609, + 0.0187159151513066, -0.0515008002391975, -0.0187159084832023, + 0.0101291138369432, -0.0515008002391975, -0.0244533454746177, + // f 112/148 128/165 113/166 97/149 + 0.0187159151513066, -0.0365077677413909, -0.0451842450565675, + 0.0101291138369432, -0.0515008002391975, -0.0244533454746177, + -4.14572644388855e-19, -0.0515008002391975, -0.0264683299052609, + // f 129/167 114/151 113/150 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + -0.0101291138369432, -0.0515008002391975, -0.0244533454746177, + -4.14572644388855e-19, -0.0515008002391975, -0.0264683299052609, + // f 129/168 115/152 114/151 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + -0.0187159151513066, -0.0515008002391975, -0.0187159084832023, + -0.0101291138369432, -0.0515008002391975, -0.0244533454746177, + // f 129/169 116/153 115/152 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + -0.024453352142722, -0.0515008002391975, -0.0101291071688389, + -0.0187159151513066, -0.0515008002391975, -0.0187159084832023, + // f 129/170 117/154 116/153 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + -0.0264683365733652, -0.0515008002391975, 6.66810430999958e-09, + -0.024453352142722, -0.0515008002391975, -0.0101291071688389, + // f 129/171 118/155 117/154 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + -0.024453352142722, -0.0515008002391975, 0.0101291205050476, + -0.0264683365733652, -0.0515008002391975, 6.66810430999958e-09, + // f 129/172 119/156 118/155 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + -0.0187159151513066, -0.0515008002391975, 0.0187159218194109, + -0.024453352142722, -0.0515008002391975, 0.0101291205050476, + // f 129/173 120/157 119/156 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + -0.0101291138369432, -0.0515008002391975, 0.0244533588108263, + -0.0187159151513066, -0.0515008002391975, 0.0187159218194109, + // f 129/174 121/158 120/157 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + -4.14572644388855e-19, -0.0515008002391975, 0.0264683432414695, + -0.0101291138369432, -0.0515008002391975, 0.0244533588108263, + // f 129/175 122/159 121/158 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + 0.0101291138369432, -0.0515008002391975, 0.0244533588108263, + -4.14572644388855e-19, -0.0515008002391975, 0.0264683432414695, + // f 129/176 123/160 122/159 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + 0.0187159151513066, -0.0515008002391975, 0.0187159218194109, + 0.0101291138369432, -0.0515008002391975, 0.0244533588108263, + // f 129/177 124/161 123/160 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + 0.024453352142722, -0.0515008002391975, 0.0101291205050476, + 0.0187159151513066, -0.0515008002391975, 0.0187159218194109, + // f 129/178 125/162 124/161 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + 0.0264683365733652, -0.0515008002391975, 6.66810430999958e-09, + 0.024453352142722, -0.0515008002391975, 0.0101291205050476, + // f 129/179 126/163 125/162 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + 0.024453352142722, -0.0515008002391975, -0.0101291071688389, + 0.0264683365733652, -0.0515008002391975, 6.66810430999958e-09, + // f 129/180 127/164 126/163 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + 0.0187159151513066, -0.0515008002391975, -0.0187159084832023, + 0.024453352142722, -0.0515008002391975, -0.0101291071688389, + // f 129/181 128/165 127/164 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + 0.0101291138369432, -0.0515008002391975, -0.0244533454746177, + 0.0187159151513066, -0.0515008002391975, -0.0187159084832023, + // f 129/182 113/166 128/165 + -4.14572644388855e-19, -0.0567655653225495, 6.66810430999958e-09, + -4.14572644388855e-19, -0.0515008002391975, -0.0264683299052609, + 0.0101291138369432, -0.0515008002391975, -0.0244533454746177, +}; + +float pushpinTexCoords [] = { + // f 1/1 2/2 3/3 + 0.8929, 1, + 0.8214, 0, + 0.7500, 0, + // f 1/1 4/4 2/2 + 0.8929, 1, + 0.8929, 0, + 0.8214, 0, + // f 1/1 5/5 4/4 + 0.8929, 1, + 0.9643, 0, + 0.8929, 0, + // f 1/1 6/6 5/5 + 0.8929, 1, + 1.0357, 0, + 0.9643, 0, + // f 1/7 7/8 6/9 + 0.3571, 1, + 0.1071, 0, + 0.0357, 0, + // f 1/7 8/10 7/8 + 0.3571, 1, + 0.1786, 0, + 0.1071, 0, + // f 1/7 9/11 8/10 + 0.3571, 1, + 0.2500, 0, + 0.1786, 0, + // f 1/7 10/12 9/11 + 0.3571, 1, + 0.3214, 0, + 0.2500, 0, + // f 1/7 11/13 10/12 + 0.3571, 1, + 0.3929, 0, + 0.3214, 0, + // f 1/7 12/14 11/13 + 0.3571, 1, + 0.4643, 0, + 0.3929, 0, + // f 1/7 13/15 12/14 + 0.3571, 1, + 0.5357, 0, + 0.4643, 0, + // f 1/7 14/16 13/15 + 0.3571, 1, + 0.6071, 0, + 0.5357, 0, + // f 1/7 15/17 14/16 + 0.3571, 1, + 0.6786, 0, + 0.6071, 0, + // f 1/1 3/3 15/17 + 0.8929, 1, + 0.7500, 0, + 0.6786, 0, + // f 2/18 4/19 5/20 15/21 + 0.2831, 0.0495, + 0.1091, 0.1883, + 0.0125, 0.3887, + // f 5/20 6/22 7/23 9/24 + 0.0125, 0.3887, + 0.0125, 0.6113, + 0.1091, 0.8117, + // f 7/23 8/25 9/24 + 0.1091, 0.8117, + 0.2831, 0.9505, + 0.5000, 1, + // f 9/24 10/26 11/27 13/28 + 0.5000, 1, + 0.7169, 0.9505, + 0.8909, 0.8117, + // f 11/27 12/29 13/28 + 0.8909, 0.8117, + 0.9875, 0.6113, + 0.9875, 0.3887, + // f 13/28 14/30 15/21 9/24 + 0.9875, 0.3887, + 0.8909, 0.1883, + 0.7169, 0.0495, + // f 5/20 9/24 15/21 + 0.0125, 0.3887, + 0.5000, 1, + 0.7169, 0.0495, + // f 3/31 2/18 15/21 + 0.5000, 0, + 0.2831, 0.0495, + 0.7169, 0.0495, + // f 16/32 17/33 18/34 + 0.0000, 0, + 0.0000, 0.125, + 0.0625, 0.125, + // f 16/35 18/34 19/36 + 0.0625, 0, + 0.0625, 0.125, + 0.1250, 0.125, + // f 16/37 19/36 20/38 + 0.1250, 0, + 0.1250, 0.125, + 0.1875, 0.125, + // f 16/39 20/38 21/40 + 0.1875, 0, + 0.1875, 0.125, + 0.2500, 0.125, + // f 16/41 21/40 22/42 + 0.2500, 0, + 0.2500, 0.125, + 0.3125, 0.125, + // f 16/43 22/42 23/44 + 0.3125, 0, + 0.3125, 0.125, + 0.3750, 0.125, + // f 16/45 23/44 24/46 + 0.3750, 0, + 0.3750, 0.125, + 0.4375, 0.125, + // f 16/47 24/46 25/48 + 0.4375, 0, + 0.4375, 0.125, + 0.5000, 0.125, + // f 16/49 25/48 26/50 + 0.5000, 0, + 0.5000, 0.125, + 0.5625, 0.125, + // f 16/51 26/50 27/52 + 0.5625, 0, + 0.5625, 0.125, + 0.6250, 0.125, + // f 16/53 27/52 28/54 + 0.6250, 0, + 0.6250, 0.125, + 0.6875, 0.125, + // f 16/55 28/54 29/56 + 0.6875, 0, + 0.6875, 0.125, + 0.7500, 0.125, + // f 16/57 29/56 30/58 + 0.7500, 0, + 0.7500, 0.125, + 0.8125, 0.125, + // f 16/59 30/58 31/60 + 0.8125, 0, + 0.8125, 0.125, + 0.8750, 0.125, + // f 16/61 31/60 32/62 + 0.8750, 0, + 0.8750, 0.125, + 0.9375, 0.125, + // f 16/63 32/62 17/64 + 0.9375, 0, + 0.9375, 0.125, + 1.0000, 0.125, + // f 17/33 33/65 34/66 18/34 + 0.0000, 0.125, + 0.0000, 0.25, + 0.0625, 0.25, + // f 18/34 34/66 35/67 19/36 + 0.0625, 0.125, + 0.0625, 0.25, + 0.1250, 0.25, + // f 19/36 35/67 36/68 20/38 + 0.1250, 0.125, + 0.1250, 0.25, + 0.1875, 0.25, + // f 20/38 36/68 37/69 21/40 + 0.1875, 0.125, + 0.1875, 0.25, + 0.2500, 0.25, + // f 21/40 37/69 38/70 22/42 + 0.2500, 0.125, + 0.2500, 0.25, + 0.3125, 0.25, + // f 22/42 38/70 39/71 23/44 + 0.3125, 0.125, + 0.3125, 0.25, + 0.3750, 0.25, + // f 23/44 39/71 40/72 24/46 + 0.3750, 0.125, + 0.3750, 0.25, + 0.4375, 0.25, + // f 24/46 40/72 41/73 25/48 + 0.4375, 0.125, + 0.4375, 0.25, + 0.5000, 0.25, + // f 25/48 41/73 42/74 26/50 + 0.5000, 0.125, + 0.5000, 0.25, + 0.5625, 0.25, + // f 26/50 42/74 43/75 27/52 + 0.5625, 0.125, + 0.5625, 0.25, + 0.6250, 0.25, + // f 27/52 43/75 44/76 28/54 + 0.6250, 0.125, + 0.6250, 0.25, + 0.6875, 0.25, + // f 28/54 44/76 45/77 29/56 + 0.6875, 0.125, + 0.6875, 0.25, + 0.7500, 0.25, + // f 29/56 45/77 46/78 30/58 + 0.7500, 0.125, + 0.7500, 0.25, + 0.8125, 0.25, + // f 30/58 46/78 47/79 31/60 + 0.8125, 0.125, + 0.8125, 0.25, + 0.8750, 0.25, + // f 31/60 47/79 48/80 32/62 + 0.8750, 0.125, + 0.8750, 0.25, + 0.9375, 0.25, + // f 32/62 48/80 33/81 17/64 + 0.9375, 0.125, + 0.9375, 0.25, + 1.0000, 0.25, + // f 33/65 49/82 50/83 34/66 + 0.0000, 0.25, + 0.0000, 0.375, + 0.0625, 0.375, + // f 34/66 50/83 51/84 35/67 + 0.0625, 0.25, + 0.0625, 0.375, + 0.1250, 0.375, + // f 35/67 51/84 52/85 36/68 + 0.1250, 0.25, + 0.1250, 0.375, + 0.1875, 0.375, + // f 36/68 52/85 53/86 37/69 + 0.1875, 0.25, + 0.1875, 0.375, + 0.2500, 0.375, + // f 37/69 53/86 54/87 38/70 + 0.2500, 0.25, + 0.2500, 0.375, + 0.3125, 0.375, + // f 38/70 54/87 55/88 39/71 + 0.3125, 0.25, + 0.3125, 0.375, + 0.3750, 0.375, + // f 39/71 55/88 56/89 40/72 + 0.3750, 0.25, + 0.3750, 0.375, + 0.4375, 0.375, + // f 40/72 56/89 57/90 41/73 + 0.4375, 0.25, + 0.4375, 0.375, + 0.5000, 0.375, + // f 41/73 57/90 58/91 42/74 + 0.5000, 0.25, + 0.5000, 0.375, + 0.5625, 0.375, + // f 42/74 58/91 59/92 43/75 + 0.5625, 0.25, + 0.5625, 0.375, + 0.6250, 0.375, + // f 43/75 59/92 60/93 44/76 + 0.6250, 0.25, + 0.6250, 0.375, + 0.6875, 0.375, + // f 44/76 60/93 61/94 45/77 + 0.6875, 0.25, + 0.6875, 0.375, + 0.7500, 0.375, + // f 45/77 61/94 62/95 46/78 + 0.7500, 0.25, + 0.7500, 0.375, + 0.8125, 0.375, + // f 46/78 62/95 63/96 47/79 + 0.8125, 0.25, + 0.8125, 0.375, + 0.8750, 0.375, + // f 47/79 63/96 64/97 48/80 + 0.8750, 0.25, + 0.8750, 0.375, + 0.9375, 0.375, + // f 48/80 64/97 49/98 33/81 + 0.9375, 0.25, + 0.9375, 0.375, + 1.0000, 0.375, + // f 49/82 65/99 66/100 50/83 + 0.0000, 0.375, + 0.0000, 0.5, + 0.0625, 0.5, + // f 50/83 66/100 67/101 51/84 + 0.0625, 0.375, + 0.0625, 0.5, + 0.1250, 0.5, + // f 51/84 67/101 68/102 52/85 + 0.1250, 0.375, + 0.1250, 0.5, + 0.1875, 0.5, + // f 52/85 68/102 69/103 53/86 + 0.1875, 0.375, + 0.1875, 0.5, + 0.2500, 0.5, + // f 53/86 69/103 70/104 54/87 + 0.2500, 0.375, + 0.2500, 0.5, + 0.3125, 0.5, + // f 54/87 70/104 71/105 55/88 + 0.3125, 0.375, + 0.3125, 0.5, + 0.3750, 0.5, + // f 55/88 71/105 72/106 56/89 + 0.3750, 0.375, + 0.3750, 0.5, + 0.4375, 0.5, + // f 56/89 72/106 73/107 57/90 + 0.4375, 0.375, + 0.4375, 0.5, + 0.5000, 0.5, + // f 57/90 73/107 74/108 58/91 + 0.5000, 0.375, + 0.5000, 0.5, + 0.5625, 0.5, + // f 58/91 74/108 75/109 59/92 + 0.5625, 0.375, + 0.5625, 0.5, + 0.6250, 0.5, + // f 59/92 75/109 76/110 60/93 + 0.6250, 0.375, + 0.6250, 0.5, + 0.6875, 0.5, + // f 60/93 76/110 77/111 61/94 + 0.6875, 0.375, + 0.6875, 0.5, + 0.7500, 0.5, + // f 61/94 77/111 78/112 62/95 + 0.7500, 0.375, + 0.7500, 0.5, + 0.8125, 0.5, + // f 62/95 78/112 79/113 63/96 + 0.8125, 0.375, + 0.8125, 0.5, + 0.8750, 0.5, + // f 63/96 79/113 80/114 64/97 + 0.8750, 0.375, + 0.8750, 0.5, + 0.9375, 0.5, + // f 64/97 80/114 65/115 49/98 + 0.9375, 0.375, + 0.9375, 0.5, + 1.0000, 0.5, + // f 65/99 81/116 82/117 66/100 + 0.0000, 0.5, + 0.0000, 0.625, + 0.0625, 0.625, + // f 66/100 82/117 83/118 67/101 + 0.0625, 0.5, + 0.0625, 0.625, + 0.1250, 0.625, + // f 67/101 83/118 84/119 68/102 + 0.1250, 0.5, + 0.1250, 0.625, + 0.1875, 0.625, + // f 68/102 84/119 85/120 69/103 + 0.1875, 0.5, + 0.1875, 0.625, + 0.2500, 0.625, + // f 69/103 85/120 86/121 70/104 + 0.2500, 0.5, + 0.2500, 0.625, + 0.3125, 0.625, + // f 70/104 86/121 87/122 71/105 + 0.3125, 0.5, + 0.3125, 0.625, + 0.3750, 0.625, + // f 71/105 87/122 88/123 72/106 + 0.3750, 0.5, + 0.3750, 0.625, + 0.4375, 0.625, + // f 72/106 88/123 89/124 73/107 + 0.4375, 0.5, + 0.4375, 0.625, + 0.5000, 0.625, + // f 73/107 89/124 90/125 74/108 + 0.5000, 0.5, + 0.5000, 0.625, + 0.5625, 0.625, + // f 74/108 90/125 91/126 75/109 + 0.5625, 0.5, + 0.5625, 0.625, + 0.6250, 0.625, + // f 75/109 91/126 92/127 76/110 + 0.6250, 0.5, + 0.6250, 0.625, + 0.6875, 0.625, + // f 76/110 92/127 93/128 77/111 + 0.6875, 0.5, + 0.6875, 0.625, + 0.7500, 0.625, + // f 77/111 93/128 94/129 78/112 + 0.7500, 0.5, + 0.7500, 0.625, + 0.8125, 0.625, + // f 78/112 94/129 95/130 79/113 + 0.8125, 0.5, + 0.8125, 0.625, + 0.8750, 0.625, + // f 79/113 95/130 96/131 80/114 + 0.8750, 0.5, + 0.8750, 0.625, + 0.9375, 0.625, + // f 80/114 96/131 81/132 65/115 + 0.9375, 0.5, + 0.9375, 0.625, + 1.0000, 0.625, + // f 81/116 97/133 98/134 82/117 + 0.0000, 0.625, + 0.0000, 0.75, + 0.0625, 0.75, + // f 82/117 98/134 99/135 83/118 + 0.0625, 0.625, + 0.0625, 0.75, + 0.1250, 0.75, + // f 83/118 99/135 100/136 84/119 + 0.1250, 0.625, + 0.1250, 0.75, + 0.1875, 0.75, + // f 84/119 100/136 101/137 85/120 + 0.1875, 0.625, + 0.1875, 0.75, + 0.2500, 0.75, + // f 85/120 101/137 102/138 86/121 + 0.2500, 0.625, + 0.2500, 0.75, + 0.3125, 0.75, + // f 86/121 102/138 103/139 87/122 + 0.3125, 0.625, + 0.3125, 0.75, + 0.3750, 0.75, + // f 87/122 103/139 104/140 88/123 + 0.3750, 0.625, + 0.3750, 0.75, + 0.4375, 0.75, + // f 88/123 104/140 105/141 89/124 + 0.4375, 0.625, + 0.4375, 0.75, + 0.5000, 0.75, + // f 89/124 105/141 106/142 90/125 + 0.5000, 0.625, + 0.5000, 0.75, + 0.5625, 0.75, + // f 90/125 106/142 107/143 91/126 + 0.5625, 0.625, + 0.5625, 0.75, + 0.6250, 0.75, + // f 91/126 107/143 108/144 92/127 + 0.6250, 0.625, + 0.6250, 0.75, + 0.6875, 0.75, + // f 92/127 108/144 109/145 93/128 + 0.6875, 0.625, + 0.6875, 0.75, + 0.7500, 0.75, + // f 93/128 109/145 110/146 94/129 + 0.7500, 0.625, + 0.7500, 0.75, + 0.8125, 0.75, + // f 94/129 110/146 111/147 95/130 + 0.8125, 0.625, + 0.8125, 0.75, + 0.8750, 0.75, + // f 95/130 111/147 112/148 96/131 + 0.8750, 0.625, + 0.8750, 0.75, + 0.9375, 0.75, + // f 96/131 112/148 97/149 81/132 + 0.9375, 0.625, + 0.9375, 0.75, + 1.0000, 0.75, + // f 97/133 113/150 114/151 98/134 + 0.0000, 0.75, + 0.0000, 0.875, + 0.0625, 0.875, + // f 98/134 114/151 115/152 99/135 + 0.0625, 0.75, + 0.0625, 0.875, + 0.1250, 0.875, + // f 99/135 115/152 116/153 100/136 + 0.1250, 0.75, + 0.1250, 0.875, + 0.1875, 0.875, + // f 100/136 116/153 117/154 101/137 + 0.1875, 0.75, + 0.1875, 0.875, + 0.2500, 0.875, + // f 101/137 117/154 118/155 102/138 + 0.2500, 0.75, + 0.2500, 0.875, + 0.3125, 0.875, + // f 102/138 118/155 119/156 103/139 + 0.3125, 0.75, + 0.3125, 0.875, + 0.3750, 0.875, + // f 103/139 119/156 120/157 104/140 + 0.3750, 0.75, + 0.3750, 0.875, + 0.4375, 0.875, + // f 104/140 120/157 121/158 105/141 + 0.4375, 0.75, + 0.4375, 0.875, + 0.5000, 0.875, + // f 105/141 121/158 122/159 106/142 + 0.5000, 0.75, + 0.5000, 0.875, + 0.5625, 0.875, + // f 106/142 122/159 123/160 107/143 + 0.5625, 0.75, + 0.5625, 0.875, + 0.6250, 0.875, + // f 107/143 123/160 124/161 108/144 + 0.6250, 0.75, + 0.6250, 0.875, + 0.6875, 0.875, + // f 108/144 124/161 125/162 109/145 + 0.6875, 0.75, + 0.6875, 0.875, + 0.7500, 0.875, + // f 109/145 125/162 126/163 110/146 + 0.7500, 0.75, + 0.7500, 0.875, + 0.8125, 0.875, + // f 110/146 126/163 127/164 111/147 + 0.8125, 0.75, + 0.8125, 0.875, + 0.8750, 0.875, + // f 111/147 127/164 128/165 112/148 + 0.8750, 0.75, + 0.8750, 0.875, + 0.9375, 0.875, + // f 112/148 128/165 113/166 97/149 + 0.9375, 0.75, + 0.9375, 0.875, + 1.0000, 0.875, + // f 129/167 114/151 113/150 + 0.0000, 1, + 0.0625, 0.875, + 0.0000, 0.875, + // f 129/168 115/152 114/151 + 0.0625, 1, + 0.1250, 0.875, + 0.0625, 0.875, + // f 129/169 116/153 115/152 + 0.1250, 1, + 0.1875, 0.875, + 0.1250, 0.875, + // f 129/170 117/154 116/153 + 0.1875, 1, + 0.2500, 0.875, + 0.1875, 0.875, + // f 129/171 118/155 117/154 + 0.2500, 1, + 0.3125, 0.875, + 0.2500, 0.875, + // f 129/172 119/156 118/155 + 0.3125, 1, + 0.3750, 0.875, + 0.3125, 0.875, + // f 129/173 120/157 119/156 + 0.3750, 1, + 0.4375, 0.875, + 0.3750, 0.875, + // f 129/174 121/158 120/157 + 0.4375, 1, + 0.5000, 0.875, + 0.4375, 0.875, + // f 129/175 122/159 121/158 + 0.5000, 1, + 0.5625, 0.875, + 0.5000, 0.875, + // f 129/176 123/160 122/159 + 0.5625, 1, + 0.6250, 0.875, + 0.5625, 0.875, + // f 129/177 124/161 123/160 + 0.6250, 1, + 0.6875, 0.875, + 0.6250, 0.875, + // f 129/178 125/162 124/161 + 0.6875, 1, + 0.7500, 0.875, + 0.6875, 0.875, + // f 129/179 126/163 125/162 + 0.7500, 1, + 0.8125, 0.875, + 0.7500, 0.875, + // f 129/180 127/164 126/163 + 0.8125, 1, + 0.8750, 0.875, + 0.8125, 0.875, + // f 129/181 128/165 127/164 + 0.8750, 1, + 0.9375, 0.875, + 0.8750, 0.875, + // f 129/182 113/166 128/165 + 0.9375, 1, + 1.0000, 0.875, + 0.9375, 0.875, +}; + diff --git a/3DAR/PushpinView.h b/3DAR/PushpinView.h new file mode 100644 index 0000000..f484cab --- /dev/null +++ b/3DAR/PushpinView.h @@ -0,0 +1,17 @@ +// +// PushpinView.m +// +// + +#import +#import "TexturedGeometryView.h" + +@interface PushpinView : TexturedGeometryView +{ + CGFloat red, green, blue, colorAlpha; + UILabel *label; +} + +//@property (nonatomic, retain) UILabel *label; + +@end diff --git a/3DAR/PushpinView.m b/3DAR/PushpinView.m new file mode 100644 index 0000000..e091cbc --- /dev/null +++ b/3DAR/PushpinView.m @@ -0,0 +1,187 @@ +// +// PushpinView.m +// +// + +#import +#import "PushpinView.h" + +#import "Pushpin.h" // Statically stored pushpin geometry. + +#define PPV_SHADOW_VERTEX_COUNT 16 + +@implementation PushpinView + +static float ppvShadowVerts[PPV_SHADOW_VERTEX_COUNT][3]; +static unsigned short ppvShadowIndexes[PPV_SHADOW_VERTEX_COUNT]; +static Geometry *pushpinGeometry; +static Texture *pushpinTexture; + +//@synthesize label; + + +- (void) dealloc +{ + [label release]; + + [super dealloc]; +} + +- (void) buildView +{ + self.frame = CGRectZero; + self.color = [UIColor redColor]; + self.hidden = NO; + self.zrot = 0.0; + + self.sizeScalar = 20.0; // for pushpin_1.0 + +// self.sizeScalar = 5.0; // for pushpin_textured + + NSLog(@"[PushpinView] buildView"); + + if (!pushpinGeometry) + { + // Works + NSString *path = [[NSBundle mainBundle] pathForResource:@"pushpin_1.0" ofType:@"obj"]; + + // Experimental + //NSString *path = [[NSBundle mainBundle] pathForResource:@"pushpin_textured" ofType:@"obj"]; + + pushpinGeometry = [[Geometry newOBJFromResource:path] autorelease]; + } + + self.geometry = pushpinGeometry; + self.geometry.cullFace = YES; + + // Shadow + + CGFloat radius = 2.5; + + for (int i=0; i < PPV_SHADOW_VERTEX_COUNT; i++) + { + float theta = 2 * M_PI * i / PPV_SHADOW_VERTEX_COUNT; + + ppvShadowVerts[i][0] = radius * cos(theta); + ppvShadowVerts[i][1] = radius * sin(theta); + ppvShadowVerts[i][2] = 0.0; //GROUNDPLANE_ALTITUDE_METERS - POI_ALTITUDE_METERS; + + ppvShadowIndexes[i] = i; + } + + +// label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 20)]; +// label.font = [UIFont fontWithName:@"Courier" size:14]; +// [self addSubview:label]; + +} + +/* +static float rlLineVertex[2][3] = +{ + // x y z + { 0, 0, (POI_ALTITUDE_METERS-5.0) }, + { 0, 0, (GROUNDPLANE_ALTITUDE_METERS-POI_ALTITUDE_METERS) } +}; + +static unsigned short rlLineIndex[2] = +{ + 0, 1 +}; +*/ + +- (void) displayGeometry +{ + /* + if ([label.text length] == 0) + { + SM3DAR_PointOfInterest *poi = (SM3DAR_PointOfInterest *)self.point; + + if (poi) + { + label.text = [[poi formattedDistanceInMilesFromCurrentLocation] stringByAppendingString:@" mi"]; + [label sizeToFit]; + } + } + */ + + if (!texture) + { +// textureName = @"pushpin_textured2.jpg"; + textureName = @"red.png"; + } + + if (!texture && [textureName length] > 0) + { + if (!pushpinTexture) + { + NSLog(@"Loading texture named %@", textureName); + + NSString *textureExtension = [[textureName componentsSeparatedByString:@"."] objectAtIndex:1]; + NSString *textureBaseName = [textureName stringByDeletingPathExtension]; + NSString *imagePath = [[NSBundle mainBundle] pathForResource:textureBaseName ofType:textureExtension]; + NSData *imageData = [[NSData alloc] initWithContentsOfFile:imagePath]; + UIImage *textureImage = [[UIImage alloc] initWithData:imageData]; + CGImageRef cgi = textureImage.CGImage; + + pushpinTexture = [Texture newTextureFromImage:cgi]; + + [imageData release]; + [textureImage release]; + + } + + self.texture = pushpinTexture; + } + + + + // Scale last. + +// glTranslatef(0, 0, -100); + + glScalef(sizeScalar, sizeScalar, sizeScalar); //*0.85); + + + // Shadow + + glLineWidth(1.0); + glColor4f(.2, .2, .2, 0.6); + glVertexPointer(3, GL_FLOAT, 0, ppvShadowVerts); + glDrawElements(GL_TRIANGLE_FAN, PPV_SHADOW_VERTEX_COUNT, GL_UNSIGNED_SHORT, ppvShadowIndexes); + +// [self.geometry displayShaded:self.color]; + [self.geometry displayFilledWithTexture:texture]; + + + + + ///////// +/* +// glTranslatef(0, 0, -100); + glRotatef(90.0, 1.0, 0, 0); + + glScalef(100, 100, 100); + + glColor4f(1.0, 0, 0, 1.0); + glVertexPointer(3, GL_FLOAT, 0, pushpinVerts); + glTexCoordPointer(2, GL_FLOAT, 0, pushpinTexCoords); +// glNormalPointer(GL_FLOAT, 0, pushpinNormals); + glDrawArrays(GL_TRIANGLES, 0, pushpinNumVerts); + +*/ + +} + +- (void) didReceiveFocus +{ +// self.color = [UIColor colorWithRed:1.0 green:0 blue:0 alpha:0.25]; +} + +- (void) didLoseFocus +{ +// self.color = [UIColor redColor]; +} + + +@end diff --git a/3DAR/SM3DAR.h b/3DAR/SM3DAR.h new file mode 100644 index 0000000..7142b0b --- /dev/null +++ b/3DAR/SM3DAR.h @@ -0,0 +1,367 @@ +/* + * SM3DAR.h + * 3DAR API header + * + * Copyright 2010 Spot Metrix, Inc. All rights reserved. + * Please see http://spotmetrix.com + * + * Version 4.0.8 + * + */ + +#import +#import +#import + +@class SM3DAR_PointOfInterest; +@class SM3DAR_Session; +@class SM3DAR_FocusView; + +typedef struct +{ + CGFloat x, y, z; +} Coord3D; + +@protocol SM3DAR_Delegate; + + +// +// +// +@protocol SM3DAR_PointProtocol +@property (nonatomic, assign) Coord3D worldPoint; +@property (nonatomic, retain) UIView *view; +@property (nonatomic, retain) NSObject *selectionDelegate; +@property (assign) BOOL canReceiveFocus; +@property (assign) BOOL hasFocus; +- (Coord3D) worldCoordinate; +- (void) translateX:(CGFloat)x Y:(CGFloat)y Z:(CGFloat)z; +- (Coord3D) unitVectorFromOrigin; +@optional +@property (nonatomic, assign) Coord3D worldPointVector; +- (void) step; +@end + +typedef NSObject SM3DAR_Point; + + +@class SM3DAR_Controller; + +// +// +// +@protocol SM3DAR_Delegate +@optional +- (void) sm3darViewDidLoad:(SM3DAR_Controller *)sm3dar; +- (void) sm3darLoadPoints:(SM3DAR_Controller *)sm3dar; +- (void) sm3dar:(SM3DAR_Controller *)sm3dar didChangeFocusToPOI:(SM3DAR_Point*)newPOI fromPOI:(SM3DAR_Point*)oldPOI; +- (void) sm3dar:(SM3DAR_Controller *)sm3dar didChangeSelectionToPOI:(SM3DAR_Point*)newPOI fromPOI:(SM3DAR_Point*)oldPOI; +- (void) sm3dar:(SM3DAR_Controller *)sm3dar didChangeOrientationYaw:(CGFloat)yaw pitch:(CGFloat)pitch roll:(CGFloat)roll; +- (void) sm3darWillInitializeOrigin:(SM3DAR_Controller *)sm3dar; +- (void) sm3darLogoWasTapped:(SM3DAR_Controller *)sm3dar; +- (void) sm3darDidShowMap:(SM3DAR_Controller *)sm3dar; +- (void) sm3darDidHideMap:(SM3DAR_Controller *)sm3dar; +- (void) mapAnnotationView:(MKAnnotationView*)annotationView calloutAccessoryControlTapped:(UIControl*)control; + +/* +-(void)sm3darViewDidLoad; +-(void)loadPointsOfInterest; +-(void)didChangeFocusToPOI:(SM3DAR_Point*)newPOI fromPOI:(SM3DAR_Point*)oldPOI; +-(void)didChangeSelectionToPOI:(SM3DAR_Point*)newPOI fromPOI:(SM3DAR_Point*)oldPOI; +-(void)didChangeOrientationYaw:(CGFloat)yaw pitch:(CGFloat)pitch roll:(CGFloat)roll; +-(void)sm3darGLViewDidLoad; +-(void)sm3darWillInitializeOrigin; +-(void)logoWasTapped; +-(void)mapAnnotationView:(MKAnnotationView*)annotationView calloutAccessoryControlTapped:(UIControl*)control; +-(void)didShowMap; +-(void)didHideMap; +*/ +@end + + +// +// +// +@protocol SM3DAR_FocusDelegate +-(void)pointDidGainFocus:(SM3DAR_Point*)point; +@optional +-(void)pointDidLoseFocus:(SM3DAR_Point*)point; +-(void)updatePositionAndOrientation:(CGFloat)screenOrientationRadians; +@end + + +// +// +// +@interface SM3DAR_Controller : UIViewController { +} + +@property (assign) BOOL mapIsVisible; +@property (assign) BOOL originInitialized; +@property (nonatomic, retain) MKMapView *map; +@property (nonatomic, retain) UILabel *statusLabel; +@property (nonatomic, retain) UIImagePickerController *camera; +@property (nonatomic, assign) NSObject *delegate; +@property (nonatomic, retain) NSArray *pointsOfInterest; +@property (nonatomic, retain) SM3DAR_Point *focusedPOI; +@property (nonatomic, retain) SM3DAR_Point *selectedPOI; +@property (nonatomic, assign) Class markerViewClass; +@property (nonatomic, retain) NSString *mapAnnotationImageName; +@property (nonatomic, retain) NSObject *focusView; +@property (nonatomic, assign) CGFloat screenOrientationRadians; +@property (nonatomic, retain) UIView *glView; +@property (nonatomic, retain) UIView *hudView; +@property (nonatomic, assign) CGFloat nearClipMeters; +@property (nonatomic, assign) CGFloat farClipMeters; +@property (assign) NSTimeInterval locationUpdateInterval; +@property (nonatomic, assign) Coord3D worldPointTransform; +@property (nonatomic, assign) Coord3D worldPointVector; +@property (nonatomic, retain) UIButton *iconLogo; +@property (nonatomic, retain) CLLocation *currentLocation; +@property (nonatomic, retain) CLLocationManager *locationManager; +@property (nonatomic, retain) CLHeading *heading; +@property (nonatomic, assign) Coord3D currentPosition; +@property (nonatomic, assign) Coord3D downVector; +@property (nonatomic, assign) Coord3D northVector; +@property (nonatomic, assign) CGFloat currentYaw; +@property (nonatomic, assign) CGFloat currentPitch; +@property (nonatomic, assign) CGFloat currentRoll; +@property (nonatomic, assign) CGFloat mapZoomPadding; +@property (nonatomic, assign) CGFloat cameraAltitudeMeters; +@property (nonatomic, assign) BOOL running; +@property (nonatomic, retain) SM3DAR_Point *backgroundPoint; + ++ (void)printMemoryUsage:(NSString*)message; ++ (void)printMatrix:(CATransform3D)t; ++ (Coord3D) worldCoordinateFor:(CLLocation*)location; ++ (Coord3D) unitVector:(Coord3D)coord; +- (id)initWithDelegate:(NSObject *)delegate; +- (void)forceRelease; +- (void)setFrame:(CGRect)newFrame; +- (void)addPoint:(SM3DAR_Point*)point; +- (void)addPointOfInterest:(SM3DAR_Point*)point; +- (void)addPointsOfInterest:(NSArray*)points; +- (void)addPointsOfInterest:(NSArray*)points addToMap:(BOOL)addToMap; +- (void)removePointOfInterest:(SM3DAR_Point*)point; +- (void)removePointsOfInterest:(NSArray*)points; +- (void)removeAllPointsOfInterest; +- (void)removeAllPointsOfInterest:(BOOL)removeFixtures; +- (void)replaceAllPointsOfInterestWith:(NSArray*)points; +- (NSString*)loadJSONFromFile:(NSString*)fileName; +- (void)loadMarkersFromJSONFile:(NSString*)fileName; +- (void)loadMarkersFromJSON:(NSString*)json; +- (NSString*)loadCSVFromFile:(NSString*)fileName; +- (void)loadMarkersFromCSVFile:(NSString*)fileName hasHeader:(BOOL)hasHeader; +- (void)loadMarkersFromCSV:(NSString*)csv hasHeader:(BOOL)hasHeader; +- (SM3DAR_PointOfInterest*)initPointOfInterest:(NSDictionary*)properties; +- (SM3DAR_PointOfInterest*)initPointOfInterestWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude altitude:(CGFloat)altitude title:(NSString*)poiTitle subtitle:(NSString*)poiSubtitle markerViewClass:(Class)poiMarkerViewClass properties:(NSDictionary*)properties; +- (SM3DAR_PointOfInterest*)initPointOfInterest:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude altitude:(CGFloat)altitude title:(NSString*)poiTitle subtitle:(NSString*)poiSubtitle markerViewClass:(Class)poiMarkerViewClass properties:(NSDictionary*)properties; +- (void)addPointOfInterestWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude altitude:(CGFloat)altitude title:(NSString*)poiTitle subtitle:(NSString*)poiSubtitle markerViewClass:(Class)poiMarkerViewClass properties:(NSDictionary*)properties; +- (BOOL)changeCurrentLocation:(CLLocation*)newLocation; +- (BOOL)displayPoint:(SM3DAR_Point*)poi; +- (void)startCamera; +- (void)stopCamera; +- (void)suspend; +- (void)resume; +- (CATransform3D)cameraTransform; +- (Coord3D)cameraPosition; +- (void)debug:(NSString*)message; +- (CGRect)logoFrame; +- (BOOL)isTiltLookMode; +- (void)toggleLookMode; +- (NSString*)exportPointsOfInterestAsJSON; +- (NSString*)exportPointsOfInterestAsCSV; +- (void)initMap; +- (void)toggleMap; +- (void)showMap; +- (void)hideMap; +- (void)zoomMapToFit; +- (void)zoomMapToFitPointsIncludingUserLocation:(BOOL)includeUser; +- (void)setCurrentMapLocation:(CLLocation *)location; +- (void)fadeMapToAlpha:(CGFloat)alpha; +- (BOOL)setMapVisibility; +- (void)annotateMap; +- (void)centerMapOnCurrentLocation; +- (Coord3D)solarPosition; +- (Coord3D)solarPositionScaled:(CGFloat)meters; +- (void)initOrigin; +- (Coord3D)ray:(CGPoint)screenPoint; + +///////////// NEW 1/30/2011 +- (void) setCameraAltitudeMeters:(CGFloat)altitude; +- (void) setCameraOffset:(Coord3D)offset; +///////////// + +@end + + +// +// +// +@interface SM3DAR_Fixture : NSObject { +} +@property (nonatomic, assign) CGFloat gearPosition; +- (CGFloat)gearSpeed; +- (NSInteger)numberOfTeethInGear; +- (void) gearHasTurned; +- (Coord3D) unitVectorFromOrigin; +@end + + +// +// +// +@interface SM3DAR_PointOfInterest : CLLocation { +} + +@property (nonatomic, retain) NSString *title; +@property (nonatomic, retain) NSString *subtitle; +@property (nonatomic, retain) NSDictionary *properties; +@property (nonatomic, retain) NSURL *dataURL; +@property (nonatomic, assign) NSObject *delegate; +@property (nonatomic, retain) UIView *view; +@property (nonatomic, assign) Class annotationViewClass; +@property (nonatomic, retain) NSString *mapAnnotationImageName; +@property (assign) BOOL hasFocus; +@property (assign) BOOL canReceiveFocus; +@property (nonatomic, assign) CGFloat gearPosition; + +- (id)initWithLocation:(CLLocation*)loc properties:(NSDictionary*)props; +- (id)initWithLocation:(CLLocation*)loc title:(NSString*)title subtitle:(NSString*)subtitle url:(NSURL*)url; +- (CGFloat)distanceInMetersFrom:(CLLocation*)otherPoint; +- (CGFloat)distanceInMetersFromCurrentLocation; +- (NSString*)formattedDistanceInMetersFrom:(CLLocation*)otherPoint; +- (NSString*)formattedDistanceInMetersFromCurrentLocation; +- (CGFloat)distanceInMilesFrom:(CLLocation*)otherPoint; +- (CGFloat)distanceInMilesFromCurrentLocation; +- (NSString*)formattedDistanceInMilesFrom:(CLLocation*)otherPoint; +- (NSString*)formattedDistanceInMilesFromCurrentLocation; +- (BOOL)isInView:(CGPoint*)point; +- (CATransform3D)objectTransform; +- (CGFloat)gearSpeed; +- (NSInteger)numberOfTeethInGear; +- (void) gearHasTurned; +- (Coord3D) unitVectorFromOrigin; + +@end + + +// +// +// +@interface SM3DAR_PointView : UIView { +} + +@property (nonatomic, retain) SM3DAR_Point *point; + +- (void) buildView; +- (CGAffineTransform) pointTransform; +- (void) didReceiveFocus; +- (void) didLoseFocus; +- (void) resizeFrameAround:(UIView*)targetView; +@end + + +// +// +// +@interface SM3DAR_MarkerView : SM3DAR_PointView { +} + +@property (nonatomic, retain) SM3DAR_PointOfInterest *poi; + +- (id)initWithPointOfInterest:(SM3DAR_PointOfInterest*)pointOfInterest; +@end + + +// +// +// +@interface SM3DAR_IconMarkerView : SM3DAR_MarkerView { +} + +@property (nonatomic, retain) UIImageView *icon; + ++ (NSString*)randomIconName; +@end + + +// +// +// +@interface SM3DAR_GLMarkerView : SM3DAR_MarkerView { +} + +- (void) drawInGLContext; +@end + + +// +// +// +@interface SM3DAR_FocusView : UIView { +} + +@property (nonatomic, retain) SM3DAR_Point *focusPoint; +@property (nonatomic, retain) UILabel *content; +@property (nonatomic, assign) BOOL showDistance; +@property (nonatomic, assign) BOOL showTitle; +@property (nonatomic, assign) BOOL useMetricUnits; +@property (nonatomic, assign) CGPoint centerOffset; + +- (void)buildView; +@end + + +// +// +// +@interface Texture : NSObject { +} + +@property (nonatomic) unsigned int handle; + ++ (Texture*) newTexture; ++ (Texture*) newTextureFromImage:(CGImageRef)image; ++ (Texture*) newTextureFromResource:(NSString*)resource; +- (void) replaceTextureFromResource:(NSString*)resource; +- (void) replaceTextureWithImage:(CGImageRef)image; +@end + + +// +// +// +@interface Geometry : NSObject { +} + +@property (nonatomic) BOOL cullFace; + ++ (Geometry *) newOBJFromResource:(NSString *)resource; ++ (void) displayHemisphereWithTexture:(Texture *)texture; ++ (void) displaySphereWithTexture:(Texture *)texture; +- (void) displayWireframe; +- (void) displayFilledWithTexture:(Texture *)texture; +- (void) displayShaded:(UIColor *)color; +@end + + +// +// +// +@interface SM3DAR_CustomAnnotationView : MKAnnotationView { +} +@property (nonatomic, retain) NSString *imageName; +@property (nonatomic, retain) SM3DAR_PointOfInterest *poi; +@end + + +#define SM3DAR_POI_LATITUDE @"latitude" +#define SM3DAR_POI_ALTITUDE @"altitude" +#define SM3DAR_POI_LONGITUDE @"longitude" +#define SM3DAR_POI_TITLE @"title" +#define SM3DAR_POI_SUBTITLE @"subtitle" +#define SM3DAR_POI_URL @"url" +#define SM3DAR_POI_VIEW_CLASS_NAME @"view_class_name" +#define SM3DAR_POI_DEFAULT_VIEW_CLASS_NAME @"SM3DAR_IconMarkerView" + diff --git a/3DAR/SM3DARMapView.h b/3DAR/SM3DARMapView.h new file mode 100644 index 0000000..3e9d83a --- /dev/null +++ b/3DAR/SM3DARMapView.h @@ -0,0 +1,40 @@ +// +// SM3DARMapView.h +// +// Created by P. Mark Anderson on 3/8/11. +// Copyright 2011 Spot Metrix, Inc. All rights reserved. +// + +#import +#import +#import "SM3DAR.h" + +@interface SM3DARMapView : MKMapView +{ + SM3DAR_Controller *sm3dar; + CGFloat mapZoomPadding; + + IBOutlet UIView *hudView; + IBOutlet UIView *compassView; + IBOutlet UIView *overlayView; + UIView *containerView; +} + +@property (nonatomic, retain) UIView *containerView; + +- (void) init3DAR; +//- (void) add3darContainer; +- (void) add3darContainer:(SM3DAR_Controller *)sm3dar; +- (void) zoomMapToFit; +- (void) zoomMapToFitPointsIncludingUserLocation:(BOOL)includeUser; +- (void) startCamera; +- (void) stopCamera; +- (void) moveToLocation:(CLLocation *)newLocation; +- (void) addBackground; + +@end + + +@protocol SM3DARMapViewDelegate +@end + diff --git a/3DAR/SM3DARMapView.m b/3DAR/SM3DARMapView.m new file mode 100644 index 0000000..9e25d1c --- /dev/null +++ b/3DAR/SM3DARMapView.m @@ -0,0 +1,538 @@ +// +// SM3DARMapView.m +// +// Created by P. Mark Anderson on 3/8/11. +// Copyright 2011 Spot Metrix, Inc. All rights reserved. +// + +#import "SM3DARMapView.h" +#import "PushpinView.h" +#import "SphereBackgroundView.h" + +@implementation SM3DARMapView + +@synthesize containerView; + +- (void) dealloc +{ + [hudView release]; + hudView = nil; + + [overlayView release]; + overlayView = nil; + + self.containerView = nil; + + [sm3dar release]; + + [super dealloc]; +} + + +// TODO: Figure out how to know when this view is added as a subview +// so that the 3DAR view(s) can added too. + +// Or add the 3DAR views as subviews. + +- (void) init3DAR +{ + // Self will be the delegate until 3DAR is done initializing. + + sm3dar = [[SM3DAR_Controller alloc] initWithDelegate:self]; +} + +- (void) add3darContainer:(SM3DAR_Controller *)_sm3dar +{ + if (!_sm3dar.view) + { + NSLog(@"\n\nWARNING: SM3DARMapView could not init 3DAR.\n\n"); + return; + } + else if (!self.superview) + { + NSLog(@"\n\nWARNING: SM3DARMapView could not init 3DAR because there is no superview.\n\n"); + return; + } + + // Setup. + + [_sm3dar setFrame:self.bounds]; + _sm3dar.view.backgroundColor = [UIColor clearColor]; + _sm3dar.map = self; + _sm3dar.map.alpha = 1.0; + +// _sm3dar.markerViewClass = [PushpinView class]; + + _sm3dar.focusView = nil; + + if (hudView) + { + _sm3dar.hudView = hudView; + } + + + // Add 3DAR view to parent view. + + self.containerView = [[[UIView alloc] initWithFrame:self.frame] autorelease]; + NSLog(@"Inserting 3DAR view into container view."); + [containerView addSubview:_sm3dar.view]; + + + NSLog(@"Inserting map view container into superview."); + [self.superview insertSubview:containerView atIndex:0]; + + + // Add this map view to the container. + + NSLog(@"Inserting map view (self) into container view."); + self.frame = self.bounds; + [containerView addSubview:self]; + + [containerView addSubview:_sm3dar.iconLogo]; + + + // TODO: Add the overlay view. + +} + + +- (id) initWithFrame:(CGRect)frame +{ + if (self = [super initWithFrame:frame]); + { + // When no NIB is used, init3DAR must be called manually + // after the map view is added to its superview. + } + + return self; +} + +- (void) awakeFromNib +{ + [super awakeFromNib]; + + [self init3DAR]; +} + +- (void) addUserLocationDot +{ + NSLog(@"Adding user location dot."); + + SM3DAR_Fixture *f = [[SM3DAR_Fixture alloc] init]; + + UIImageView *iv = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"blue_dot.png"]] autorelease]; + f.view = iv; + + Coord3D coord = { + 0, 0, 0 + }; + + f.worldPoint = coord; + + [sm3dar addPoint:f]; + [f release]; +} + +- (void) sm3darLoadPoints:(SM3DAR_Controller *)_sm3dar +{ + if (self.showsUserLocation) + { + [self addUserLocationDot]; + } + + [self addBackground]; + + if (self.delegate && [self.delegate isKindOfClass:[NSObject class]] && + [self.delegate conformsToProtocol:@protocol(SM3DAR_Delegate)]) + { + NSObject *delegateAsObject = (NSObject *)self.delegate; + + if (delegateAsObject == self) + { + // Bad. + + NSLog(@"SM3DARMapView delegate should not be itself."); + } + else + { + sm3dar.delegate = delegateAsObject; + + // Send the call to the new delegate. + + if ([sm3dar.delegate respondsToSelector:@selector(sm3darLoadPoints:)]) + { + [sm3dar.delegate sm3darLoadPoints:sm3dar]; + } + + + // This map view will pass MKMapViewDelegate calls to the sm3dar.delegate. + + self.delegate = self; + + } + } + else + { + NSLog(@"3DAR points will not be automatically loaded because an SM3DAR_Delegate has not been set."); + } +} + +- (void) loadPointsOfInterest +{ + [self sm3darLoadPoints:sm3dar]; +} + +- (void) zoomMapToFitPointsIncludingUserLocation:(BOOL)includeUser +{ + if ([self.annotations count] == 0) + return; + + if ([self.annotations count] == 1) + { + id annotation = [self.annotations objectAtIndex:0]; + + NSLog(@"[SM3DARMapView] zooming map on single point: %@", annotation.title); + + [self setCenterCoordinate:annotation.coordinate animated:YES]; + + return; + } + + NSLog(@"[SM3DARMapView] zoomMapToFit %i markers", [self.annotations count]); + + CLLocationCoordinate2D topLeftCoord; + topLeftCoord.latitude = -90.0; + topLeftCoord.longitude = 180.0; + + CLLocationCoordinate2D bottomRightCoord; + bottomRightCoord.latitude = 90.0; + bottomRightCoord.longitude = -180.0; + + for (idannotation in self.annotations) + { + if (!includeUser && annotation == self.userLocation) + continue; + + if (![annotation conformsToProtocol:@protocol(MKAnnotation)]) + continue; + + topLeftCoord.longitude = fmin(topLeftCoord.longitude, annotation.coordinate.longitude); + topLeftCoord.latitude = fmax(topLeftCoord.latitude, annotation.coordinate.latitude); + + bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, annotation.coordinate.longitude); + bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, annotation.coordinate.latitude); + } + + MKCoordinateRegion region; + region.center.latitude = topLeftCoord.latitude - (topLeftCoord.latitude - bottomRightCoord.latitude) * 0.5; + region.center.longitude = topLeftCoord.longitude + (bottomRightCoord.longitude - topLeftCoord.longitude) * 0.5; + region.span.latitudeDelta = fabs(topLeftCoord.latitude - bottomRightCoord.latitude) * mapZoomPadding; // Add a little extra space on the sides + region.span.longitudeDelta = fabs(bottomRightCoord.longitude - topLeftCoord.longitude) * mapZoomPadding; // Add a little extra space on the sides + + region = [self regionThatFits:region]; + + if (abs(region.center.latitude) > 90.0) + { + if (abs(region.center.longitude) > 90.0) + { + NSLog(@"[SM3DARMapView] Warning: Could not zoom map to fit point. Invalid map region."); + return; + + } + else + { + NSLog(@"[SM3DARMapView] Warning: Invalid map region. \n\nSwitching map region's latitude and longitude."); + CLLocationDegrees oldLatitude = region.center.latitude; + region.center.latitude = region.center.longitude; + region.center.longitude = oldLatitude; + } + } + + [self setRegion:region animated:YES]; +} + +- (void) zoomMapToFit +{ + [self zoomMapToFitPointsIncludingUserLocation:YES]; +} + +#pragma mark Annotations + +- (id) poiFromAnnotation:(id)object +{ + id point = nil; + + if ([object conformsToProtocol:@protocol(SM3DAR_PointProtocol)]) + { + // The object is a 3DAR point. + + point = object; + } + else + { + // Create a 3DAR POI from the object. + + if ([object conformsToProtocol:@protocol(MKAnnotation)]) + { + // The object is an annotation so add it to the map. + + NSObject *annotation = (NSObject*)object; + NSString *title = nil; + NSString *subtitle = nil; + CLLocationCoordinate2D coord; + coord.latitude = annotation.coordinate.latitude; + coord.longitude = annotation.coordinate.longitude; + CLLocation *location = [[CLLocation alloc] initWithCoordinate:coord + altitude:0.0 + horizontalAccuracy:-1 + verticalAccuracy:-1 + timestamp:nil]; + + if ([annotation respondsToSelector:@selector(title)]) + title = [annotation title]; + + if ([annotation respondsToSelector:@selector(subtitle)]) + subtitle = [annotation subtitle]; + + SM3DAR_PointOfInterest *poi = [[[SM3DAR_PointOfInterest alloc] initWithLocation:location + title:title + subtitle:subtitle + url:nil] autorelease]; + + if ([annotation respondsToSelector:@selector(imageName)]) + poi.mapAnnotationImageName = [annotation performSelector:@selector(imageName)]; + + point = poi; + [location release]; + } + } + + return point; +} + +- (void) addAnnotation:(id)object +{ + if ([object conformsToProtocol:@protocol(MKAnnotation)]) + { + // The object is an annotation so add it to the map. + + NSObject *annotation = (NSObject*)object; + [super addAnnotation:annotation]; + } + + id p = [self poiFromAnnotation:object]; + [sm3dar addPoint:p]; +} + +- (void) addPoints:(NSArray *)points +{ + NSMutableArray *tmpPoints = [NSMutableArray arrayWithCapacity:[points count]]; + + for (id object in points) + { + id p = [self poiFromAnnotation:object]; + [tmpPoints addObject:p]; + } + + [sm3dar addPointsOfInterest:tmpPoints addToMap:NO]; +} + +- (void) addAnnotations:(NSArray *)annotations +{ + [super addAnnotations:annotations]; + + [self performSelectorOnMainThread:@selector(addPoints:) withObject:annotations waitUntilDone:NO]; +} + +- (void) startCamera +{ + [sm3dar startCamera]; +} + +- (void) stopCamera +{ + [sm3dar stopCamera]; +} + +- (void) moveToLocation:(CLLocation *)newLocation +{ + if (newLocation) + { + [sm3dar changeCurrentLocation:newLocation]; + + [self zoomMapToFitPointsIncludingUserLocation:NO]; + } +} + +- (void) sm3darViewDidLoad:(SM3DAR_Controller *)_sm3dar +{ + [self add3darContainer:_sm3dar]; +} + +- (SM3DAR_Fixture*) addFixtureWithView:(SM3DAR_PointView*)pointView +{ + SM3DAR_Fixture *point = [[[SM3DAR_Fixture alloc] init] autorelease]; + point.view = pointView; + [sm3dar addPoint:point]; + + return point; +} + +- (void) addBackground +{ + SphereBackgroundView *sphereView = [[SphereBackgroundView alloc] initWithTextureNamed:@"pano_bg.png"]; + sm3dar.backgroundPoint = [self addFixtureWithView:sphereView]; + [sphereView release]; +} + + +#pragma mark MKMapViewDelegate + +- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:viewForAnnotation:)]) + { + return [(id)sm3dar.delegate mapView:mapView viewForAnnotation:annotation]; + } + else + { + return [sm3dar mapView:mapView viewForAnnotation:annotation]; + } + + return nil; +} + +- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:annotationView:calloutAccessoryControlTapped:)]) + { + [(id)sm3dar.delegate mapView:mapView annotationView:view calloutAccessoryControlTapped:control]; + } +} + +- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:regionWillChangeAnimated:)]) + { + [(id)sm3dar.delegate mapView:mapView regionWillChangeAnimated:animated]; + } +} + +- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:regionDidChangeAnimated:)]) + { + [(id)sm3dar.delegate mapView:mapView regionDidChangeAnimated:animated]; + } +} + + +- (void)mapViewWillStartLoadingMap:(MKMapView *)mapView +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapViewWillStartLoadingMap:)]) + { + [(id)sm3dar.delegate mapViewWillStartLoadingMap:mapView]; + } +} + +- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapViewDidFinishLoadingMap:)]) + { + [(id)sm3dar.delegate mapViewDidFinishLoadingMap:mapView]; + } +} + +- (void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapViewDidFailLoadingMap:withError:)]) + { + [(id)sm3dar.delegate mapViewDidFailLoadingMap:mapView withError:error]; + } +} + +- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:didAddAnnotationViews:)]) + { + [(id)sm3dar.delegate mapView:mapView didAddAnnotationViews:views]; + } +} + +- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:didSelectAnnotationView:)]) + { + [(id)sm3dar.delegate mapView:mapView didSelectAnnotationView:view]; + } +} + +- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:didDeselectAnnotationView:)]) + { + [(id)sm3dar.delegate mapView:mapView didDeselectAnnotationView:view]; + } +} + +- (void)mapViewWillStartLocatingUser:(MKMapView *)mapView +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapViewWillStartLocatingUser:)]) + { + [(id)sm3dar.delegate mapViewWillStartLocatingUser:mapView]; + } +} + +- (void)mapViewDidStopLocatingUser:(MKMapView *)mapView +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapViewDidStopLocatingUser:)]) + { + [(id)sm3dar.delegate mapViewDidStopLocatingUser:mapView]; + } +} + +- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)_userLocation +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:didUpdateUserLocation:)]) + { + [(id)sm3dar.delegate mapView:mapView didUpdateUserLocation:_userLocation]; + } +} + +- (void)mapView:(MKMapView *)mapView didFailToLocateUserWithError:(NSError *)error +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:didFailToLocateUserWithError:)]) + { + [(id)sm3dar.delegate mapView:mapView didFailToLocateUserWithError:error]; + } +} + +- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view didChangeDragState:(MKAnnotationViewDragState)newState + fromOldState:(MKAnnotationViewDragState)oldState +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:annotationView:didChangeDragState:fromOldState:)]) + { + [(id)sm3dar.delegate mapView:mapView annotationView:view didChangeDragState:newState fromOldState:oldState]; + } +} + +- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id )overlay +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:viewForOverlay:)]) + { + return [(id)sm3dar.delegate mapView:mapView viewForOverlay:overlay]; + } + + return nil; +} + +- (void)mapView:(MKMapView *)mapView didAddOverlayViews:(NSArray *)overlayViews +{ + if ([sm3dar.delegate respondsToSelector:@selector(mapView:didAddOverlayViews:)]) + { + [(id)sm3dar.delegate mapView:mapView didAddOverlayViews:overlayViews]; + } +} + + +@end diff --git a/3DAR/SM3DAR_keys.txt b/3DAR/SM3DAR_keys.txt new file mode 100644 index 0000000..e94d63d --- /dev/null +++ b/3DAR/SM3DAR_keys.txt @@ -0,0 +1,9 @@ +20786511c9957cbb29936c811ff7dd562fe9aa0c +15052866360b2703cc33bff43cd8d69a8edb6e01 +cf947819aa418f518b2ec644dc602412b3508387 +be94390f940e182384b1e75bbee6a6f5f51c1dbc +58dc4f911d43fd7735c13b2b69e94296e4305f36 +12be78d40ec96e7c37cc1552c49324f7df86e4d1 +5f54831a54bb8227ed48b13ae73e409733dbeb2b +dcec28af8e634bd82edba144dcf997651dcca7c8 +390b9f321a2adb4cfdb898e4e3b3491a72f03e00 \ No newline at end of file diff --git a/3DAR/SphereBackgroundView.h b/3DAR/SphereBackgroundView.h new file mode 100644 index 0000000..4195992 --- /dev/null +++ b/3DAR/SphereBackgroundView.h @@ -0,0 +1,12 @@ +// +// SphereBackgroundView.m +// +// + +#import +#import "TexturedGeometryView.h" + +@interface SphereBackgroundView : TexturedGeometryView { +} + +@end diff --git a/3DAR/SphereBackgroundView.m b/3DAR/SphereBackgroundView.m new file mode 100644 index 0000000..360a43a --- /dev/null +++ b/3DAR/SphereBackgroundView.m @@ -0,0 +1,63 @@ +// +// SphereBackgroundView.m +// +// + +#import +#import "SphereBackgroundView.h" + +@implementation SphereBackgroundView + +- (void) buildView { + self.color = [UIColor whiteColor]; + self.hidden = NO; + self.sizeScalar = 10000.0f; + self.zrot = 0.0; + self.frame = CGRectZero; + NSString* path = [[NSBundle mainBundle] pathForResource:@"sphere" ofType:@"obj"]; + self.geometry = [[Geometry newOBJFromResource:path] autorelease]; + self.geometry.cullFace = YES; +} + +- (void) displayGeometry +{ + // If the texture has not been loaded, load it. + + if (texture == nil && [textureName length] > 0) + { + NSLog(@"Loading texture named %@", textureName); + NSString *textureExtension = [[textureName componentsSeparatedByString:@"."] objectAtIndex:1]; + NSString *textureBaseName = [textureName stringByDeletingPathExtension]; + NSString *imagePath = [[NSBundle mainBundle] pathForResource:textureBaseName ofType:textureExtension]; + NSData *imageData = [[NSData alloc] initWithContentsOfFile:imagePath]; + UIImage *textureImage = [[UIImage alloc] initWithData:imageData]; + CGImageRef cgi = textureImage.CGImage; + self.texture = [[Texture newTextureFromImage:cgi] autorelease]; + [imageData release]; + [textureImage release]; + } + + glScalef(-sizeScalar, sizeScalar, sizeScalar); + glRotatef(180, 1, 0, 0); + + //[self updateTexture]; + + if (texture) + { + // glDepthMask(0); + + [Geometry displaySphereWithTexture:self.texture]; + // glDepthMask(1); + } + else + { + [self.geometry displayShaded:self.color]; + //[self.geometry displayWireframe]; + } + + +// glPopMatrix(); +} + + +@end diff --git a/3DAR/TexturedGeometryView.h b/3DAR/TexturedGeometryView.h new file mode 100644 index 0000000..72827ca --- /dev/null +++ b/3DAR/TexturedGeometryView.h @@ -0,0 +1,36 @@ +// +// TexturedGeometryView.h +// +// + +#import +#import "SM3DAR.h" + + +@interface TexturedGeometryView : SM3DAR_PointView { + double zrot; + UIColor *color; + Geometry *geometry; + Texture *texture; + NSString *textureName; + NSURL *textureURL; + CGFloat sizeScalar; +} + +@property (nonatomic) double zrot; +@property (nonatomic, retain) UIColor *color; +@property (nonatomic, retain) Geometry *geometry; +@property (nonatomic, retain) Texture *texture; +@property (nonatomic, retain) NSString *textureName; +@property (nonatomic, retain) NSURL *textureURL; +@property (nonatomic, assign) CGFloat sizeScalar; + +- (id) initWithTextureNamed:(NSString*)name; +- (id) initWithTextureURL:(NSURL*)url; +- (void) drawInGLContext; +- (void) updateTexture:(UIImage*)textureImage; +- (void) updateImage:(UIImage*)newImage; +- (UIImage*) resizeImage:(UIImage*)originalImage; +- (void) displayGeometry; + +@end diff --git a/3DAR/TexturedGeometryView.m b/3DAR/TexturedGeometryView.m new file mode 100644 index 0000000..116ffbc --- /dev/null +++ b/3DAR/TexturedGeometryView.m @@ -0,0 +1,87 @@ +// +// TexturedGeometryView.m +// +// + +#import +#import "TexturedGeometryView.h" + +@implementation TexturedGeometryView + +@synthesize zrot, color, geometry, texture, textureName, textureURL, sizeScalar; + +- (id) initWithPointOfInterest:(SM3DAR_PointOfInterest*)poi { + if (self = [self initWithTextureNamed:nil]) { + self.point = poi; + } + return self; +} + +- (id) initWithTextureNamed:(NSString*)name { + self.textureName = name; + if (self = [super initWithFrame:CGRectZero]) { + } + return self; +} + +- (id) initWithTextureURL:(NSURL*)url { + self.textureURL = url; + if (self = [super initWithFrame:CGRectZero]) { + } + return self; +} + +- (void) dealloc { + NSLog(@"\n\n[TexturedGeometryView] dealloc\n\n"); + [color release]; + [geometry release]; + [texture release]; + [textureName release]; + [textureURL release]; + [super dealloc]; +} + + +#pragma mark - +/* +// Subclasses should implement didReceiveFocus +- (void) didReceiveFocus { +} +*/ + +#pragma mark - +- (void) updateTexture:(UIImage*)textureImage { + if (textureImage) { + NSLog(@"[TexturedGeometryView] updating texture with %@", textureImage); + [texture replaceTextureWithImage:textureImage.CGImage]; + } +} + +- (void) updateImage:(UIImage*)img { + NSLog(@"[TexturedGeometryView] resizing image from original: %f, %f", img.size.width, img.size.height); + img = [self resizeImage:img]; + //NSLog(@"[TexturedGeometryView] DONE: %f, %f", img.size.width, img.size.height); + [self updateTexture:img]; +} + +- (UIImage*) resizeImage:(UIImage*)originalImage { + //CGPoint topCorner = CGPointMake(0, 0); + CGSize targetSize = CGSizeMake(512, 256); + + UIGraphicsBeginImageContext(targetSize); + [originalImage drawInRect:CGRectMake(0, 0, 512, 256)]; + UIImage* result = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + return result; +} + +// Subclasses should implement displayGeometry +- (void) displayGeometry { +} + +- (void) drawInGLContext { + [self displayGeometry]; +} + +@end diff --git a/3DAR/bubble1.png b/3DAR/bubble1.png new file mode 100644 index 0000000000000000000000000000000000000000..7eec5b804ebd234fdff29873a9e10e6252bd39f9 GIT binary patch literal 91697 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 Ef^me{EC2ui literal 0 HcmV?d00001 diff --git a/3DAR/compass_rose.png b/3DAR/compass_rose.png new file mode 100644 index 0000000000000000000000000000000000000000..75794e0569112f4ca6cfc9db34d8655ec5b354cd GIT binary patch literal 116149 zcmaHTcRZEvANNt>RK_XN$;$d#Nmlke8Iiq0k)6HwOipB%8A9j~LUvY2Na7gTn}lq# z*YojvUeCXe>Xmxk=f1D|zOU=^d9O>Dx~c-{CF)BE1cFrYzN{t!LGbzP50VJ}N9f09 z8T>_L`anSzaeDUaU43pG{1364qKX{x-~}{+*j07g=S~O&142<&M%(M{a@vw3%~Ow4 z{MOH?-BflBCb`$K>>YzcB{N=2%Q-(f!)e7DO*6UGxw@}k*z{bOv!`XBsT{QrG3k5DhZ-kpnAwDj;utQcLXD_Z*4Za(vOTQqk`lnr^#7ERQ~ zL!!W8aghE)Hw7DA{((`w_rmOTLEAn|xetv7|M~Vz#of@-4!6 zP@t0xp^HHI)P3|9u_ki3`4^!+EnGx`n0x*D%HrDT$=acOFCE21|TI7xzP7fPA zB1?j2h1nRtDRRvD)ECXZ%jf)9TznoO&2p6>uKm~SH9B(as}SBq0hKr;qmch=PB5V9O{XtVQ-<|vFC7GWRnWKfP!xSNnMTKaFv*XZaKQ)zZ zV35J6EQGX3bT(JVxi;r#ysgg}rVN>__>xs4dCm1J^Q{f8Ai@JTt_L#i)YnSZzjK^A zaEpqY!mUtq>*!<}75B+!n|#PuqKP8Pi8l=~5m2(GL)aiQQ;L?T@mmJjJ>8v_WiXAY z!eq;vsq_wyPag8Lj;*irEH5uxwVQADHP;2eQZjt>hI7`2=pIqm=HcGipv6|t{(>yF! zFU~j#OFl6&awtEnM<8A_n-CzBYXgytx=MLB7+KVnZluqXrgnz>wB)ztORh;LH%I4u zv>s8-?)iTE_U$}F|1C-UHJHu0D?jo0%LtzPNO-m)qQ?QX^vPN5>IMDf28AK;)Dboz zCg0I!FXp{1?Cd`FMhxf%NgF>idBcxI3DT0?%hT?a(>MxnbuH^&srcE|RoZUeJ7OhZ zhegpe^N@K>9bYLMR_?Uqe_A$NL$&%o{s(%N4)NW8y@_}`y1^u4KKx72QXdt3?HLpb zTA^D}2w~CT86_Q^589kCg1@C)W>^#>_PayXs62A`qc*45hS$+IFQQC!t1+HPUau)b z0?bR8IOa^RUvB%@*J7JZ;`(jqzM_ehaIw#MJ=B#-nx`44B3@J&6n=_+1v=RVg?#b7 zqPX(+OEp%4sdI*Af)Wz`KX^z=>+1YWBWV!Na;zO9H=6OSi*8H^r}K?ryiOZlkJHl9 z{v&Co{BpcAs`HFk{!Rv7OfS)$5j%!tY%(oD!=OqG3WqGqDprnD2cxwH-E*_pUsqR) zTrqoF?Xzu@c}IQGRr`Rb2%lLEg+p#|`}Js*;~_gv9D`)HfASX|(kqrQrC4*Tl#rC_ z(yKUaWt=7-0_|HLZ86N(%+pnQ`@IURUH^Yu&ee~lktI7$ioRdB>PQ(`R!#z4XWyM` zRNYeeIW+XEj_`#`7pMCMYR( zXRY7UplmVci>kEOus3#d`*pO3_vnwz&d&bhChBiW`69$*NJnRUZ0(gfpZ>XLSH;&Q zHH2wB{%q|BY3BXDOA_oUO#92Bs*F3Sz|eMvfZ>C+!Fp>H4O2(yqog}ey0+_UBn!Lo zP20msOM}Iaywi7SLU@05IWVc*iTYk@C-C0^94S)JZy+90gR0+XrIFh95)bq{J>DIC z>K_w?pQkZJ|DkMsa{+-2ZAOL3P8Ae?>8+}&dRR8R+$A%=Km_$uxkRsSr=2b1=nk!h zqR;A>$QR8#FE_)RvdC($bT+ckU}w>^&uRN&*jKGQKhKt#-@hJ(gvzwfcz%V+;H5G) zS65g1=-KBrMYT8AdY!ekbzWdHrDZkVlQavkh^w}zPg`cDvZ>uQ6&Nd~n)0~g)`o&LNk8PQ|C9RuRiq? z9%!*!jKBY_j8?HZjD0Rih6;3C?cskwv?`J_ENUCCDe5;?sb5nR%%Uiefv3Q{RORRt zq>cjAuwoPao8_Vk5ixNglChUd^pt?B**f2RI1z0Vup+Y1PZ@*-aD z`$^hns;^&*kh|IXX4|KJXwfYzn<`mIj$^jDx!Fv}abip`wR17R_S1Y4#bimn+Mzx` zmzbCswf?1TEi9_dh%ChEO6jwoEA+T385K42H1pj2iI1xS5379m zlHcy7HteVV>+RK4lgMsrY9dftL?FbE{0zCTdx_HnVoOlc9^4LRQIxpr1YKD;Sy{Di zXT+9f{NyKRLO83Uref^-^1-ER7W$T3`*n&sI#9m;>}Ow~WXHWh&2$Ug=8=%FuXbD1 zoSUfkHC!|8%dPrHI_CNfdetIe%(#>s6$*@<6XCVOEcR!-A)0xzT6vVOEvk$1ZNw9l z3h&3p-=>O?u&*jFFPF{D$syuTjx7E1WumX*^W!20#&0J>czSAKl|H8uJpmTQAG_v3 zDnBjD=n%B0>*S}e7Ux96TTBgO-@oPRxB+NJow7xfostKG+z^k+@8_g#nqpMSQ|T)Q zu)`Y_9j!aF;WgPU!S?T7Jf2`{YwH|_oed&s?er zNAU^GC$+d#kA?Y33y7t-xw|yc^B@^b8qNc>!#Tv;-6jPXN7Jz4KW8-HVKJ}rJPqrl2%_2kR|NP-23uPW&^W9%|`5kJM5!d0n zR^L{?)g?yJZ?nybvHHi}sxs*Q-LlNh+dJ9L(ee5fjHg!KFZ<}(N`NTn5a%nZ3)|4~ zI>zZcw}dGuC;*53f;NMDnL8WXyUFpzkQvsuNJ7vUL(M70$wz=-z%nStTER6H6)4Jv?Q-Ks zd~fp%N3^%MziTnwz;|{|_xI~CDfW6)KMv4)z|m349c~(6W5cP%nea}XeaNPQ`Whj@ z&CH+A7_lU>Os|{T+ZEl-%(9;ttdl^GlbGY;;(7y>0*m5viXU8~t^_(jfw`KeZ9{{& z&-8j|%d2+Ws92jb-a`L#z_IAo83~yUXlO`mH}}aW^n=wvsgy_R!y>?l9paT73UaG{ z+}+`nU$i7>IH(reNQgij1vDg~_yUd(+<%sGX>(q)sT$oK`zUa^#tiWaNfg|ip!6RL z^4!wyVKOsi%%dxqJ7b@nvyCeZ1`qGLsRbRxpDsn%w|SMhkuUbqdWnS(3v@`6WYMy`TE1v+JLfQzXVNc@sH1bUuhor zFu1f7COfmG$CdbkYE_bh^ zw|DQk3DcVU`qr{}e~x4236o`d&VWoZ@}5h$`GMuG%Ds+`jzZR9D=w-I)~jLorR@VB zE-G8vmhQU`Y@S<|?fCs`$jFi(Hyu-zx#1Za`Fv8?@~wAMN7|6Sx(Y!CgfIdY9*Gd8Ng|* z1gQIC+ka=0(&6H51*miX{P|;42h$-eT>IZ}#+UEEIgDX7rYh&4nt7fgrqmTL7!ER~ zsnQJFCH}Ih@DfcsF-o+!5#2N8>Ez@DOC;92yx?1RH%gQ80$ZG-nifw_pP)Xh9)YW2 zBy(Hd-WC?P0(Vu_T-U3Joqv`$uO}lA#*rG58BdjPnh#&llZ7^0qC>WBo^IT%?G4@p zJ;H=LDkdiNsikGWCyqSbf=?wSnMq2xUsv!d7W&)|V$0jN>KGMcvvmtJ3i`tzwa2YK zM_omS+(>@=R<_}wzxcON)$=7+9)I#x?AD)DM^UN6<+3CMgWr&oxz?&9+=4k@@{ygZ zD?e%IDYQY8h zQMX|DMu^D8X+>H%4oP@!z;>|cc%eo^=Nd_~m4ff>((3ADRo1wSew&KlKYoOlR9Aa{ zIL!1W5Bc91Cj7QK(>*g6%cLX%k=w(m!^8SJfZnud+YB*Cy1zjjidPMdj0DZ~yF_TC zrCLl&2+K>fh?;p0;%uUg{I_*zk%Y^$v$OM=Z6Xm0md)-__gPHu!3Q&|#q=4jhPk;H z))bAZNfT2DNJ<7sqL4#R{I~lhG8Afx&NuU{EZ?;LW?F)6p5BY&>ZqQZv$z-g{+_oP zlJRnzbCSbEort^U*G>Nb<;li0X@~Kexx2~A58VvO1$-AOu=)9)YHIQw9UM6G^8*s@ zvwU$>)pxjs%=C}2fotf93kxs2efw6NSVF*stAmra&AsBm{X$)_UN@rLzA)PggNH9z zY1@YN5?3t35Gin=5PZNd*7>~Gn_$~RRNvg(oIKO(JtLj|Vkqnh{r&wC%oJ+RHN)Zh zZnidw7Rr5BQt3e@c@-&)7gb{Q?yoTy6!yw;6t|DC2PC?iN> z_T+q9DOcUe!P3vh#%I2Men;p2Er{0oZ0DPzCUa61MYNW*-8>z)sIybS>rqbPy8)H&Al?zAXMq= z!sGE7D^*9L`v2ru*|2Av>3kOZ7ipx(FK)@y&RA_uIg;l4|6L86Q^NIb5GS_H-nc{* zOqI0M{#7cH7mHzh%$eX7VltM+?qTTFdpR?#(=rul4R)*0{GUitW+d zpA=&*unN%4)7R3?Z)a*$e!yGu{vSBicpii9P ze10cK`+tuQcMmVjus!=iJZN@C?V@OeRAG)@?zH}PyM!kC=bX!bGN>;v+h(1uf}g#= z#?yLx``ApM%E))+uBDyb&nscF+}lhKgHW0^{|Q_SZO+j>P+NV`Zhj8L5Mf$Lx233T zkQA1YnMJ;iFf==stJMO6f`7cAsgemeAjrjqBb^@>*&`S>yu`VYU$0j`E^-_Cgfl_= z73$VH0RYpgUw$z%PjGzaT`07_A<5IDts9t^r#!_S=6v!{uC#UPGgNaMRy-P7f?b?q zw*D3r&xD0td?ZdEnD>Z$-O$Z&Ev5UtZUJ3>Sn)#*Qk@(Wi9y=r|0bCeNyvj6kzSBx5)ocJ2>m>6iW zKA$x69*0O!Z%SU&pfvIJ9{xVRB?elNTK(VC`y6tiD;v9;9d~ALJuE_EUnMcUzCZYl z@;O6%?SBF$`U5X`B}p2p+nJrk3XNHr+Qw_I$Y!TB8@Y#Zke3_cA6$)Mv*)B*NU_mVf= zuA&I=;Y;~!z`2?t(Y2}V=DLV?X{C$zoGGtdKs5gQC*X6uJ*eNz!%Y<2bkDm`0hfxQ zz`i;ZF7`ar4MYY+3^GU0#ToM~2$9UrEEP9&sj8{nY*(k-PO+u%VU5$D7G8CLb7%J~ zP;{8nhoYYIw#J=ZTo~4%sll+s9hmus<^cf#CK^9=uF94fF5|rGPt@y;mIuey| z&cg4wW)ztyo)M@2Xl*5O-QS$+^b(&adG$8OS}@VV@bsVB=`ZV`ixgq9T?SlDGE?yWfd{E9ffing5r`{oL!SxZan@4~sZUj8g zK|4SDRKIeNek}V{!NcO5=IKu*_4S5gkwOX_bL_bJvr>HFxV6)8`u$@8JQon4uSZ8m z{}~RRFZ?2}L8+&&&--`#z*3z4^sAlVQ*-_FzrRJv&$qsjhz>gMwccIhu|l1mmUj0p zb<~3C@|4%u0(Da zfGpHZUtO7ykkI=3H_M~qK?RtVJ}Gupqbn3i+=iIY8+Usz38s>Ey%h<*Aj31~Qf(5` zHv8KfbS>@j*|)o(1Gqs+yngA$dstK+nPF!lXGv9pcuxRRoFP!&*X`y%;8QE(JTO7* z(Pq1WM{R-cV|=+Y@K3k*{c=U3X#y89Ije?aIv%unH7$v6)G;h+1J;%kkoMW zpXv_vn_f4uB&m&;C_CS-x9CUQUWOgP7XEzfQtAh_p5~oih->PY9 zk{NAmlf$Z!^>y$AP|m~rwi*UQW6^Gf=Wk)53#N=N51$dd)lwgmK8R$wjO5iKrj zYbUE~WXsen;aS{@y_KDoW}EwU7b}q3NsY{$lV#En{povrFxbHT1fJxB*!Nn9^>K{>Us_oW0W}qOweI#( zE?K54FJ+nRBr`%~nRshTN~WvyxI}RRFo%Ip?=<>d?I^W~bbgS&Z32fq&(F8Fm-^#U zEj{S2#d7t^$aqMU30e$eHF>{@TQURBiF{7Z_?v<-DDCarZ<*>yx{CA_;m_j^dXFCQ zpO+q-AH2I(QTXKaU@+9%F$F4gZhc}Ae+XNKdALsF_<|$Za5X%YNc`9lidFu zmq@R>^3}BD&A5Z7ns{LG;ANxY>zzM;^6dMihskGW1MFcyo}2bI`sH5VSZZf|Cwt1H zHo>&y^DP1Exeim{yI~gk6bNWctdS+gXrfTwKTs}Vt}ktOl@qwvjx&VM^c(XaLrfNc zXJAo<`;($L?F-Mq*0K>y)yb>~s)RWk(Kb7*)khyDOK3Pa&ecICKuwy|ZvJ)J39X{6 zJY|HgP;jmtk8Ckr^x0dD5}H`Q5n^&Oj1TZw%Z`y0{kH@z3kNM(V0A^sHU_781vD74 zI!|^Sl2O2aY2bFBW58DG&}*s*V#Gm9h=S#r;rqqk_kd@=GAfER7!|9=a`l$e&#V>C zN&ms3{J$4+`}XG!*BT}(K6U14<#HR z;N2YWdLw&pZ~dEebZLYLsdBG7(70jV5Ys2!X93pxT{gQX3e2?DcbK7~5|1S%0 zcubW(PZzH#g!s(cx;!<-Ku1Gk77`jd&7Ni>Dkqv2B6YG6g98TRShJlDwY!c*@lLXG zjwAVE{mKQh7nnY@+1l^l<`1+e&z$#mqiPq6IgNhHjDba(&&)jh{LQ4Kq-l;7UsNI$e7s4EqK{hFzMzut9T^}&x$X@>Rdp&VDN`WwLs z0~e@>4HOImk+q*cN#Mzyx%VgxRrKsf@cJ0{ejT&f?76(V23qr6{XV9y?| zsY59j%fi9dv6;iwVI4jD!?G+H)UtHci~vcnP_nX@n;Yf+alrEKVbk=&$g@!9rY&*5 z-EmK+#a^5;+o9X)=2>-M$4xv0x#$Fx{n7V_rCdp&At7)Z3;$u?Q4!~-yj9KJooR_^ z@!ehB{@8xdcYiWij1V9n8RB!dja0iipEV2wk{y%WckXzyMDG2#RXkLvYx@wB0G3*Wz&iK3>Xdl9#gc{)uV*bRd7 zv1&}%2&sxLXM&^D@xQ+4mj+#FVr@wsbCD<*u$S1j6lCV}cUS zI?;kZjn4sr=psz{R?mm0rlwifHZHdD{A_{dFbB=y(@;&Jd<-?DkAJgCDFz%Y<|c_1=9{Bi`NhS@^7?MRWDf_^g7NkJZkOsv z$kPa@+%k#e2cug(j(rr-iWW1_!P8%WrV(NyJSBrH&o-(46EZb@UV@ga7BJlrc<%OS zqNi1(*6fs+X{XOmt7|}7H%8~I)GOVbJFDc3SZv18Z?=wx)8jRV=!b|+i zc+~a^urS+M?~@CFxZsr%+Yc5U9tT8#Jh5NUa8OY6$6ihY3!k8lXnB>NACJmHhrAvi z8ykB*@P32N1VjT;#5|HQbcBVTRrVsn>2Sv$nAjb*xb}Pf4=Qi4qL7h1B(u%vQ7|#6 zZ{Ey}i;Md(+PeDWWbO%xoW|-hr`c%x(NUc-x>Y&5=kwvq-pX4bU70lVQdw2C=3J0;n~)sXJ6}#ud=I2fx1^j-PyAtBxD@I>Qp0IZg3_qNon)~v z_3D@Ir_q(BobVm>421$f$J#n_IL-D~7S&0N90qWRVr-?XhVr_2F=d2Y-^fUc)7pdt z$jyyg;-z|AbWiT%Gzl~)-8CpjS4%>hr^_HUAbGMkTeRzQO-=*M`#CVd?a4GH7HTk9 z)Y{(OXR0XqTBD|G6L6inPdib#$grjt|!}PWLn1+}+&=KiI$TTl9@(v4<5)areToLzNmc zmW*yj>SNHXH@&^R{l!=ox>^yJTF{Sl;C@nDi@*pud%@Gd6cC8-(@t(&Pa#ug@Z^b5 zSk}-0-ps?pN6@Wn%`=30O!b0@=4j~$`b&#>ANvBG&FJE=~DiGf90itI8%vTKcmeg&4fjd zt9y4gpLvOsLFg%CA?Zm#7+jbW@rgd7WmPe@ypa7z7@tk8K*xE5bgB(@1s71G-RQkHR1p_eCmUkwj2s~>!!bWUe<5;1 zM5QlLjMsjK2g?_S~4X7d>j3=kXa;(9J9U6XytL0_j)C&D#1RuFo2b(892= zu-Y@_v__lLy)J$2GmxSyn3ptWW6tM^5$bu`AK1gAEUk9Ffwjg7mX|B^6gR$P5UwNV zfOI!i7(|WO3I1xm;cVsWn+n!!wa43!Ntx~SFnvR~I`qNOD$*^egZZ#7njK%0o142a zGGcJYwSp}g^!+On-t%b}n|WFdL<9kcRT!v5x0p_1La#X}AnKu?@YA;8&ZryRgJnKI zBrD6yN56q$&6R}e<@8zafu;`j7bada+2l=>0+z*#34Tyoc{ek=$k4hET=k|r}& z_%mQMqB&d{LGOTknPdH*l6C#CpfdEbdc7~1{3!1Qjp*pfU$yKC)$^{=fu!3=?F=lqM#sx3@`$PX`?^& zExrXSfH@^c#4CNCx0R4l+d{t*!$J3q*?}x(rU^~}otV<>?KuQcm2?Yzg?gi#nmX$fh}$CJp(OPh6M# zZLak$3dFK3ey4w+b=R8-6Q}kpJnOR=U-EKz7Sf^07f-&_^Yj|-*D(3RlbinJWb{ZS zb{u(Ce|VO(I6ZNq#WYy_Qo@jcpx*Y8$hgn4+I;b@Lv0--mrPXpXfyma+sCv27knEZ z8rq9^ax`;2H2v4dd`_-AclsbmMX#YmgFroCxmr(u8gv#%(Jc_sORNy0CcWHIT6@fX zDQ(u+I60c?u#}c%k3wp{cqmBJ+ia5 zUc4W21U=6yXjZs7t)5kk@X`xRE|6(SBUAv??{0UxuhZ+~HFyT>fYjbpFa@*n-)s1K zVj=iChsdQrzJcFT=c1AsbRQZXCWvS`Cyrn9aTwO-tmw_2qYvNScIUVnMhMwkm4Sf) zvch~8EEbfUG|&rgJ7Ov2g7A`ukpU4VSCs*-6O#H!$UfLa3oT(Oc0Tkh(=#$>#8&k#CgsTxOZ=(3icL%i8RevfwMg zL(1b0WlWZ4n1U2lHaLNN8Te4%R){Ne;8}?uMpwEV?Ci?xzJTt> z57CddmwvSUjdz>lBRefeA(EmK^Ww|D-UlDSZ1>ylf9TmUx2aqGcmmq`hr86I1ZK;f z^IKP-%ee~E>eh}&!}>a3^LrX#UJayAiU(^GI_B&^r}@*2u7M?8UQ=TuW_SM2csC1X zp*AWiDh{1876)8_C$;lyS68$lWlQMb)Nt9;U2%Fdai^VSeRm6sxo?-NL|a@(^Opt+ zA58>{#)HQI<_Y+ke97t+2HT|M$Ha}86+YC54 z9c2p4?A5XAduIq&Km~mINl&eRQ@e+^k&NV+@Ar_-3|Mm|YmL5gWzdnoQqT|76y1U# z9l^V~)Qs8BjD~B52Dawrgg{tA5DYzkZK|A#Pv3 zbvEQS=j6%LlU=p`;6PB2UZG}uwd-lfLNmO?ag^369tZFQTDL|9ma6|v!ITh3IIX@D zzl7iVR91FxT4oS|zIn3^w4=sFHwd3Lyy=+p8Q}cO1KH*Wu%xmKGO zo3EGnTLSt}3D=xr^t1d#vUj?h!B%*ppuIhO@2rur>E1)BXxuX1=ICRp}&^9 zRC9q=c{`~i)uYz%9#RB_F{vG=cN0ysjA^?ktFin+D7|AY(xv(>#J(P7v5%}xHaLoY z&mP^LF`&EU29}ix!pVPcI&^om{zTOo@`6SvEC9PmCafMTC({xHBlh6<Dbx{RajC?&bh{kReG^QFUf#>U3) zxWi|(N-l%38c*6REC!iW;}5+c>PZBi)InNzSwSc!Ki_G-i|(LJ>g0-IEDJOCY^g26 zve#$^x;zc)h)nIcq&+$$Sd-H%(hS}KcZW;KV{WOpkH;@H8Kao7emz#@IKE5J;+oJm zZFWYDXxq+~+K_3}G<~+K*$YlRYy?*;UAAZ|I1osk)cewgQhF2NND9 zpEbgXIz;1-cK}!%xD@)f*OOwjWJ}1*cED{mb6&Z9H;53#v|8SNv;f~gz{~HqfrN9# zjCU41KO|1TN1HK>tHY=IF_iSp0T5@62HhzTglC;%&gCLAGqX>vXt;PZdw30t;wV*w zg+ihQzTS5i(&vHNMpN(%|NiB46imIQpO~?L!(uXBv9HG3ZU*|zXpy|WFAJsWIy>&< zPo2!SQm)4}ZWn>SY82`|`_rOD|sV+ z7tAF{(O&$^`P-xRPW{2(g0bw|i2zajjyBp}spf7Q6z=$g`)Au9EX)Od@W-MhX4Tv+ zx9lFY07-Tv?*tH{c36NF9q(Fao%!H&E<4M^Gk^d7l{uwacB$^7wfwXgCtMU%rpLwp z`o3ODJ;(00p5u6p1?+H;I+I%?_hepXeMss6=Joz|Zl6BT+mA~=5YIfIBO|Wy+jl9X z2>*g#|Q+!05ef-YoQ+3RR}f%9XRjBAYL+TH{eojC;9z50U~?ppwYItz7mRPTHL_f zEN1cRL=K>d7JvNs)-n9j&VPWb`)%Ak)fex;__o3z6~W4Vs3Udb1AFyXdJPpMPijLl$8+NcWYSi_wemSI5+`XI{oKqv=05g$RN*i_ikjB8q2LgmK_#2}VRQieAe>}?;H@xywa=-_ei3d0ankqED%3TW` zkjyv}Vs#6y{de`^{J;Peq@|z$H%>cA3#Q6FXXw_<`xneKzrXJtgmR%mB&xYsxxm`8 zt1!4@8tGqaMALYBLkIvU2o21TzD-qd9gk(X2H?3+w;&lzHJNnUhk4q|fyaY^X^#vH zM0?!pR;H?XoWLO~H$hJXM?YYV1408d$RMQ6qpkXJ7aID!mXgH!o7d3bAq&CN`UZdx zoIDEF7R6$xy`7y^ruu?H=8rS{(7Lz$$g#e~IC2^?-&ui2vo~LJbwEcvTP41<)Tr1CRL-sou$E?<<$vkAV9E(TSu1I`}>b)SyR(dQ)6J2 z?*SzzOYKbbb<_GsiDdkS?guGqBE-j{qN0<9!*~{sJILo+ zIyxr|%nC?eM|=BZ0Hx{P7IXZLQz^&)ohPQN0)-3`bt*v{-4JST@sd8(JqcL8A40 zvx%VXXR5!N-Pmi5>-w+51+MNz9Yqw_O?gf!Z^hfH>qwdAGYEIDbz3K(e#PSFZ9#Xm z6*jJdQz?PFn7QBRJNCVV>vE7ZqKvBp$~xGi!Ezen&i>OL_Y#_nc|uXtQ^H;NQm%u8 zrD7S4_-_DjJXZv}ASy1H+b5E@bimT8$D7)@3#p@>fq_JEN%*>ZS7&5sXkjFT0fnSx z7l5d*R=nn|^1MPrF%nt?qRsh!EQ?X>dp7U?to;1MHH!y@YO1XvWKxrW;sfC@V?vAa zKd`1eNSd7lsH3z%TD25R?LUs(Gy$xJ%EH5+g*XM zGo#1MFGcf5vl-0?g{aj0{Pj+uNmTlLgNSjQ^nZ#!ErBPsLEBv~@g#O!dRx8Vvzw5bdM0(ckC)Hx8M2~UxJj6nk^;b_+9aao>$-Tu z+ExrmT3}fHcJSUG|C21>1RjnhIK1@leL$L++4!uA+_wP@dhP%P6I!>x9cA|O-qy@m z$JtzhB|c=%=M4KKK&=(gPyA1qQ6+@~w+&%z*p8NHvDRi<((gfKqo%AZe4DD{1_C|f z9RTiDQGAER#hvxoCw?0(`T6;|P*Mcf#%l*F@NBeXVs};e0n)_~(y+!^Uox``78Lx? zF)64SeJ{HQp&09>K^YkT02FO{C2IvjRy9)-lOPS9?ef0Gy1=!G`nF=`UM``be?IlU zcp@(X8Wa{5*0X)60s;g-q+?oVH$Grd#q8l9*~4wwtkk*4h=M6-+fcr$9^T3hvk8OvIf(=`EW*>$BU)ZGuHElexap`Y@9X>DOaxQaC@>)+(V!K_6=bom9^RO&^~57zV0K^;w3?O_ zU33FcxYPHdN{Uvk8lAgMW1Lk|(0K&RUUsSoeQ|nxOpbqssJjhT(_raOT|KDhQjCNF zhoh6LkHqhUo5H+;m>|L`g{ow9#V7;+@D^2seKnh`hBjD7g0=q2j|z1w2K%N{Q|lpp z-^FHMcT>orHd9e)Q7BXg%<7L&b6qmk(f_=}r9N1XpNCB~ORz479UQo8WganU#Vp`LUS!3cIP#H;m_9>m(St; zy>Jrt^YQSgyk0MTqhV62vve8TV!H2OYkP~pUb7n7^x?w7!V7~!k3@^%G@w{=;`Eat zR1&&Mi>#Oh1^XVcFb3pYeNmEp_7zF?x^deS!`mnX_U0)a<2P0$=3xSOK2o^yenC?K z`WVODzQsFwiQ{?wHcugybH}TG;`{?|11!As{~+M($K&=hjEM{@h{IQOoK zF99PmfNRbQ*te)O)k;mA+Rm7$R8+-9qeTICDSHhFRn#D23aO{ z#@~%$W01RJ!@dU$(jjrYll7Q8DNS`Ag>YKGk6uztr)@lcVGL%+fctpteU@{qaf%Wj z((?=hL?HfsJ4cfvf&sa&AS(ma*e^fzTpT!y*IT`&8cvoP z$Rtz@Vp(tyAA>+)2hY#=afd39+7m{vaNnVdIHRB|Krj~FqGKW>zo-4J+Z2|}a0JwE z2+mLClN$3ovz5@CU8^78PFALWa10xoTUI=n^%GZayNQ*ksHiMLRinFoYmpTn8RQG< za2i(!Jv%1^Oyvu8Z+)BH*!HL^hRC&EB3(!ueaPVr5y**oKp$cCC8 z6KozHn*qcA!4nw;b(^J}jr^s8ynL&+jzqKb+c!$MRXU+IVM)nop4Q;;A9O4K34jK3 z-Q$7G$Z^1mAhe7rVKNrQ(zSt>ZHzIWh=_;`N9RrEI%SAjgNSlFrp>HCn={v5kVcmh zM|a-9y81CUke-kn>!&H(-gLe%L;trWQvzT5@h0Q9uabj3My)D3I(wjaC{`HM!#tfrz1cVyd!&Qh@O^sC8LKx~ZsK&QIXCxUpQcr`8X6J$$FC!VNAlK7Zq#<=? zj3Nn*EcFMXc~4xS!!*%Td?LTh$P&TpafgeGw!rq(q+37*g5@61h^rMNH%fd}J>sMp zo?4-p zlyJM69F&(1eg0ulT*$B0kp4RVh+2|VeEWZd;(Q|{H+TFQIK$70iHX$=E*(>ijOl}! z_>BYSyIM}h2b~#GFZG*0Zbc3*k-li2P8v-JeUqME>FDT)ccNvpcW{`nS7397)D|h> zxg>PRMORu+sRSi|&tJ4nMqIaVFJfOkhT>&CC_?_+Ec^Yk%FHlEy3S~=>g+DF zmK%1hB_H4gGYZx2s`oGF?7GImQbcJcow@T zZL~qXk<`+Lmz!d2^xq9WaHOw9&oZqOE}qVcw|`!&Ap=(^A(Q<_6`-jV#;@R4eckfQ zGbkjh9$yWPPso9NDIV_b6%@A*YFf4Ir_O@<_Ea;g9R~+BWQZk5nwUM&h4_MSnkpHi zc`!4z$g`V?l%Ke0KqClE5H@R=47|knTMju6R;{>4QKm@5$^|S6GWK)XoNAB$qmL0{ zWo0D-yk8EAkF$3b>_t~*?UVg?TDF_hY5&-BXMJtL=#%3Z!juge{+{DO;$D({%Pg<_ zYYTo371lh>Ih~0=uIs@+h1C0hy%!HN)gS0qwDXSp9ThJd#Ncs`}_UCRw!U^nz+|a z@Mex?UdH%fkTe5`iGo#?l|&Q9S1-M2~;41RX4hl z&Whbbo6$h%Ly&8-7IaP4@GMu5<8QjBMGuXPWI>vDvtrQb*78FEAOqn>#dv1y^0CuZ z!~%KK70gsqFfkaC=Xiq6i?+JgL=4_e?>xC?>V+o-l#Tc@8PQl9t@?5r z+=Rh0uBp4uFs78*&n-q-g3r2s%Oiszm!2^D`R;;iptKn5c$5UuxB>|GYvmhe@G~l0 zn}u^_rV>~_!&V?~Bx9xOTHfH&Dl-&IDIL2H@i7rznd?(OiyMSRDA z9Ca*he;NOqXxjt`LZ_g=44KIWZ`J#!6ak>g8;Ca$-4uf$5JoDMxTa-ulMfef3ApCh z#jKm^Iu*)Dkx$c&YrAY08FS^Qp&RhP!k$`FM)Kz6i^daCD8@dH@BO*Cx!K(wXkqc< zY`Xx^C1Ql-&g!sP;ZwL!7|KVpP#6DYsCv;!xD}w+C}QewPMEor=xdtBEz$=LZ}R!q z?f6g3I1`w*edaZ9Gk)_}8M%vp)m2dJHHTaUCtp5&K9|h*3CmSRas278n64%xUNNyl zZJqvTa{pqMwk`3uQi1eO>bx|d_P9!BtUU)25h|+?hW$hS-(8^NdUsnlHk`BDX7#mo z5;BsL_jh3TK|ntHCC|AZ37M~cMlfLCbKrJN++3Y$*`RANG!=gQ2!!@`{m^Bg$6F$EsvyMM+2{BxEZx5|UL$e$R9N z9^XIiKkoY`=UngWeO<5DbG`i7AhjS-J?M7ntanSlHClQ7lq=O8l5_Ao4+`5O$lOPp-GV~ve=!rjyn9F6+t=s!W+A|o6t;jr z8kpYJW?Q;9tbHX~Or+_LUeVOsee}Fi*X-O)QABR=mGBYTj%gP+sK@F>0;^sxl$8CY znens7BAA`(T5PFkO-)T%uk*VpPrp1#ZV{feR+n>{3O3r zj@}=rILycPAS2MqO4+k!aDv%-G@E~Dc<%Qu!mo}~oCb_!w-~i!{nK_U+lUV&terV(X!LYKD?MikqY8l%?gKPBB(2d~uO)Ykt3zL2B| z%*)*)=c$Y6>Nl1vUcw0JWjaaZzTIkT5L*9C^6|nCNGLhHJJVhD6P$964hJk~4Oxm( zZ3JyzaH*)7-dB5q%Ti!pR8$yAAVWL2M|*P~K?f~&G!24)BX1{++(Tuw_um>dRD(Hs zQ?Dcrwk6)I8WJO8sIbXlKw|1&g3behaccIE_M4iY%dvW9L>8 z#J>(d;-?uq90#B?m-gjI+!Py+`@z?-s|w*eNU~reXy53pthY1*Lng?bu}uT8PQ}ZO z8MidQ@bL2?Bme$1E777`YA5pSzJ=|`S@iU2Caracy@ZL4J>;Rw$Cvddh05H&U@U-fcOlmuOG&#%VMHW3vi5O;l-o^`7=w{Wc)WS6q_su>*dlojC$ z+eaezJ$%G_VKRJxklEsvU%<+KH}8*?k(t@$f`Zk`G(XeQ-t>)8&do1ZQcACnBym+j zD(;cYbY3>Yki}XKZfN`1_CYQ@P!?;m#;@k&;a|8)cm<9@KqF!3Vsy;RW%JmjHLueyPf{w}tJaC(Y+JlT z@eO{>&OU|Vggz}Ujbf#)aC?6l^}x^V5WOFhXqfg(!_8lqV~ewxQ^CkW4%7 zFK!;8s6Hr|>AAIu8Q}`<$X-G7xLkcSBk_}sY)0%WM$V^=jg5NPB=Eab*@(-OeJna= z_fdky`Z}24ItfYSQotQ7dl|KtE)(w9?6Zo0RS*lK9o6`WiOQ=%*;_~ z7mwsoDL6a29m@NB(^{8D`}+EHZze%vkPhX2;-~EhUbqyU;-6vX6yegci!jph@Kjlc zy$zN`Y0-*i%YR*tQAwJO0FHx_6Yl{ZunYe#ar_UR0s=t9Va}_d7*3if53bF4*r5hz%Ax4GGo_Ms2Ib zZZdinRyu0LFa3A&(F>m^hVL_MmB-JWb_Hcn&J|{RzhNuydvPY(8z!)FO1wEICzxDs zndiYKMQf&Ly1_$PiEnS-P*FBYuXF02TVef<<-hAKb!H6`y-`BLIelm&NXeTn^nE5H z9ksH7!70AoGAbt8~AB8JCLuhd9}*)TUX)vZAGsM7Z2U()ip2(=h&AT^m%OgWMS9q*RQt*O=NgW z(Iw-+%3LQ*xSE(^8E_ z-g)=aIeL#f?B8yPvvKf2S~*Yogu?euBc+PnpN84`=4fSaXZ63#cSLO_Ri&oNhs_sw z;&p6{V{4IHGaZ@z4r)SuqiU}PsGLklnf zI*Ff1u7wrKZx?p;Te$8gn7UBXC}!JCS_Ve3B0yl*u|EjE`dv|!_8Yg-VNm0cYjAO8;$%$R*qIY-ZPg@r+% z3XQ?G@(x*AZT5OIxLsZ?tefUeKGDm6<}69k6UX7hf5zbi#0pt#DOs7BClhTiVj+y9xG zn>Rrl{n1%c$?U>~1De(ypFSmAFfeF9ni4~&{TR|g25rP!5$r_d-bN?dIB=wDi~NEw z5-O&kRn3k(nDOkz3m|%nd&vKZHKoBg68rSYlYGR2eR3@KLSoC!>@Uly?re6MAXY%e zrVDOWx=a-jQa@r$n5+zGz9@#nFQ|{x0X{T+Ve=QsNO-w}_z?fphcalM%~`cgn3+&a zPFF*|@^)^;8vi7+eA4(M%?rC6pBV`~(idb;wze=e6~b*%1tIMNPXl}cMrc^zfcnYL zVFSTj`e>!tA0-vQn^45kS(^gGRIoS}J9>!O`WuC8-qmQe@%#IGS(N;b4X4juu09ms zGhJ>hboW}XbEb84jA)aD|31*@6VkL*h<}20R|ml+uL6f+BMm=?i>d94`rZs>*Q8yV zL5v#j@wC=k9UUFdr@PEgTm=8eyc%G0I9)KrA2Bl-{!=y2(Z2JP2-!iZWv&@Dqw3LL zbV8z;j{0PVn519wmGvlQzLxU)J=0e1?z`urel&rtL6Oda>S^$p-X%gCapFVDvFK6h z;b(eDidkpBOMeVZ6xJ^7m5(E_R=axcJgkhYQqZ3h?lNGW72=Emwq@xW96wIyeU)$m z5*a%NbuD*F0RLU(9V;AxDGs%>n>DzJER^v%m?Ik~UNR^Ip#1)Yv2HT@L(mSVw z;37J=x3#6j6pQkZ$h~W^a+;00Wy|_m{fT)WC}-bf^Rwz3uy;C^*WpqXEA4#@e_NMG z-JfhQcx(-t24Ln)xJbWzYlq;|n_2aSVwhT)^ujfy)!?wIt6wb#7^&P2doN_<^f)}y z;kS9iEC-@Xj!EubPR>E8oX_wY%;Zu^G4rAo_`)5qPBCH}Cy6P{)&rRht2*Ixahfj0 zM$usX+y#^RnA`K&SrB*>i&DNKrq4W#Pvc;QwiMRjuXe~V)L4TqE8Pw$F>=QK*8S}3%385@?sQ9K z0y05!Ja>lQHm`9T4c9g>xPsrJYom@$DJW3X%)ccTE|7Ed>gI#5c@&_cwN*=p>HFKZ zKU|bo6b5X`OQOu?G}r#%)ef%qU9go(Q=uiqt#pq(w~XF_@6vPc&dfIL#s*3jkOIMT z(Y0@IFsGnk7LOp)a1jO_2`3P`+X)R5S;0YKOtcxSor-XTCFYU*8pd7KK zPd_I(S9{Ny$Bb6`Jkasc;B_N0v$GGrW{!ggC00=CC}J)Ue6~YcHQ_=-II`mk3bYs9 zTSc2j0e?2=44$|_wu&9C`~!`PBcYA2k3Z+|w<#i`WwsH}5adLQ-59MLV&EWwHke;% zQ+i1xP)9ZXp2^J$>N}^w%^I^0*@82#4V!B#{>zfq-d+z3WH8^UU&D53eed zB&+vYD-sVYyLUMnJn3>2kz^NzNQ^`dXizsOC`eT!vZwxMYHErcxY-~_&AI}F*0AM# z9*jA*jr$IRbQ9(_T9T10$-sj;!ZRsu9` zu}5?z)0TFvnwsymFE>GQg#BD$Eps!^zoU==j@Cgh%4@Etm*2X|2VcO z9S{s{&SFl+pj$`eIFb9mmEquEH}wuSVJ6z0Y|V`pzpSi@50*w%+z1T^Wn$Dqar|8` zPY2xmABp@EoD@x$0URgQFYL&^Ki3$n(?8iuTt1hLBZ!A=|GP}$9yklYfdG`UHW4*K zk)Pka1b>iga^Y_`U}jN_(m3ZH=-ff|Hs4q=5t)$3_(JCW3 z2FdT?R*6SszrN9vMBG6LFoQ`?`W!uwPX_^GsM5I6LlN!Bx4U=QuU4O_u?i)MFdIF? z<2(QXxh&R>@SW8Cf&An+0M|#w*Eg8Ei72l2(r&-oHo=e>T+%;tP?u=}$ub^mT_OW6 zD`ncbrATEgRD0;w?<|>PB(y9aFz_1TZ>WAh3JD9_(x-l9q~g9QHv8_sy#2_A&e6XV zt-DAUt*1#MYel5(eY=n`x$svW1fB|UOSG7$W9KY2vo%-Pi3d6)h(k`(Zb-QdkWfdo z+mY1=H{+FMjehpf4u_o%e zzdvcJz}8`>y+iN5(AWd2(pfx32vu42ChH>0WCMfJqIGm=WcC~I;Rj?UQzmIZ??EsV zM-0JTP<}b+WN$f7)u`gL41ntoI_#rg zmHJQSG)}>`RgQp}GQFhXEd*o;jH^8q`wLo@H*=!uV)5H2MMZ6Y(7#8!Q8cs%{GvZ2 z(j^~WxV2vQs-INXCja#ywS}Hr!YzGr7qx!t^VPeR2J;(crztN_f2<>w&HhKn#=wY!GJ&qp8F3(gB&ia6v zF?M`rDlErH?!`IF@%;)J;=4V_@kH=-oY*+C|MDHMKcV#_%R`U(1es`YTy8se$A4t6 zD$Cc(`q_pxWz^?B>wm;9OQv1!DFkMQAhO@DKYvaPL|Ac=t^q%jIIx~mL* z$Pa|6J$#^}DT1y3+i#m> zFJuZmfCk`mhBl!W9-`ZP0=G!-_K@G*AS(lKT8FHzqNb+sT?w4*x3Y;DD(<39uiV%K zlQhAnm02)S13dMOcB|ZPru=fa2({Z#?c)#31mZ7uS$e6oR=23ek_BuYIl_q*$kd** zb0Itk5!Yv2-;Gt!lcm}ID-oJNVV`Th1(sDq9i~gD*7wyg9-rGPqIwzb6@D$51U|+) zEswSnLhCK<{Y$N)W3IfIZ@SKMS9w&0_z_*JSX1ASZWsyYG+(^>WAgr!gBvQyM`=r! zDb*snA(Y7fg?Z8ED3hirNPn;b6VkC4koXayb^|rBqXcVU{@GorV?z6OMmCS4K=>q- zq)GGdvUyR(7kdfwJA4lAP)2bcINU_c;1F~v;`*&}OlN=?8(tm&HA-5uNx%B0;e^ayo+9=HBKEr5m|BrJ0{ zOMS0!%WCmbKL(r#=Fn7VpEqKTG!q^@s<-4f5KLN~ofYQ1r4ok9Ac+*>lX;59*AE|| zti1f-FL{eA4*J4JkH#Ep@`Nc%BRgv01Qhq4XJ5z?2;&NYUE1#2H}xE)SYr$ce^B>u zRL0N$4Y)%XIbbtWW-(@1)bkZJQ8wlp$`?kCIW3Axr<9D5YC z;z14BcRczSH9Qd;l^a$r88d&|pu2meU#zj5H zjPD+354R7g=h{w~Xlhd1NAQVibf@QD)T0fuc&DpOytIWY9(O9Dq7sGP=b)gtvcjIr z_Si_M8%v(A!|$w-kO*zebda@J+|OGHt#dG@rVTUQdKvEFv31& zbn4~XT_eUvUz!&k#=M5Uq*0%I{elBAYEO0eE3sIS4TNgqmLF8=s|EZy>fIrXOmH=SobUDg)kC3WXJ|L zQEsYUK>(YK7NVJ6Z7HAB{^cWY$6|fMM!ffG#SgSrbOh1df&!k%Z+9+KxMWZtzC5<@ zSGeuNhnpFh9?@>A$n$ys%3pBVI*$seMrHUST3E|8sd#lrHKib-6dk)>-Bc8`bR;61 zzq6p=5W2<#5hvgFzzgS-8H}i#fh#S>SEDRN^B@koCmq{RMB7r%_5SyQg> z6&nJ03vZCO=o{o9;w`n+whjs{43<#R6-@F3DZxg77haI8zE@RjBRKwZ-vd>zXt7+i zhhL$psI-@Ohf^9>+k8s=Y=1Vt3Bgjuz~FSD)@E?S{eYKQ6s8&fCd916@VaNdMaYWo zTO0AHu-lv$juo?CgBAK4dVlbSO&0%t-#d5dG!j)0p=>N`9(8yRtOMy5FU^gOWy*fG zi_j&FD6ao%FeW5BudJFcb|aqE;Ea*+7q+{O`UU|OU zpJa7=;2F}t9~cRd6|>IcB{`v+IMGAPoj58j+*{~1wRs$m^GLHBdc=8C?SkWRe_vj2 zUw$~e^3QznzpbwzBafvJSc_kdfg(6XB40HWdtTnR^iMg-^8Dq!M=4Bv&)rJk4n zuG(+?e3F-9P@F{fQF?CXXuSGu$MV&(;iF|6O*EVVq8b9b%A&?0;FPeY16G<@ehhb~ zP*XBYjJZ(TMe6l=Z(rZk;-ewlZm~fGW*!nybT!ewujKU%dU9UdkI4h3!iOh4WicCK zC!$*kgv3wxc-+EBjm+l=1XZB?hJ~LUkHb!N#@Nj4py=3m0p;;`IW90;A0s^5%o?C? zhW7@s(b`Du(5mQHI4RILW>Lu+>0+uNg`S(D0sfN=}FHtL>1Gp;2n{^(a|4ezrPi5-vMjq z>dx55?BI6b$f2yI0-;@p|IHO=XH$+h7Z+Y$AJfZc+8NORo?Vce@2+;Px7D*1dMP=% z!YdN2)J@4xdz~E_$+CoYceduj0!``IbNo59&2Ete1+=d=Z>OLLT#%0gcH*Wq1y((; zK+rOJJF*|T?Y5lA5HsAPS{zF%aDYhW&f&8K?VBkz8zx>GhkWpV+HIs5?lwe}hxt$O+<(WS0mw?QwuWfu`d2Eg zLaec+DcPT-x^g~g%;XIOxJ=(CX$D$15$+zpPgbM1_bzn%`wU*J9W@zFlv@0D&SIGBGiE*E79Tg_$ke zuh|!kJ+G|fhf1giY@$H9q@rTxm!Tn!o0w6ybVIm^!_zoP_8 z_@{j`rC|1j(K4sFSWG#$^B^TN^8s`4R>Dt4+dTwxwzJBV5N{h)H?W-t00M?{XB+n; zsL6H^Xy<)iPz7?ms8wB!peQi-BN0oqP^jV=`oGVbawZ&!QG7`MTiE1;^x^u65k~T4 zIS4nJT8Vp?N_(LU(Cl_BmohLo>Qvr$#Ueg$#tsLS9BLk%9e=%a*{tcnSxFJ-1`Y;| z_%37r?hI+yE$8EiyW>||hY3Ov3HN5C00Z{-_Ri-OL?T}%u9icD`1(abK^2zy)0q#r zq>z-qm2A%yN#F44sXRSSUrLCAqwu{W?@L}_gg- zTq|9+r2^tjY=`a$0Cs2v<_<%aJw{bn=SZM&EQKCeRaeL|dKdF(sJ^E5Uh0$#pWkCU zpc~uxGe0^IRkWA(MtFz)nAqQ`R-ZW>e_cNA@=NCVOIf}Xskp&_2aY=iY<7$sH~k| zVB8A9@}6EQC4hS1uAP=-QLJQ0#lzRL1*hVA0WJ(NIfVrs+~EETpv9ymFST2sH1U@_Y@4>H?}# zh3?VhY<{N@t`|)U>yO(eJb1!5X0lcS_Cg!w1uO6;fyi?PNuAS6!i1ZpMkH9moN;H%8o=xxl>dF=ECIgoBktT(H4kKkXUi2N93WSMW zE3Ey*0eNSnZnB8knlW0;VV83jHC^@7^j2FIvi-`lm=JujGsJmlHZ!Ax!5d39RsM99ZbzWO z2jYX%*n&HA691F(!-xiQ zDm8g>1x~DJN)k^xf8-?mbfLw?#aH~x!cI_!eq|##&mQ058O9%ZT$#is`s%=j#G@k~ zRcr$5aR-djJ)?JfZBk z!3P_0+=1r&Oxh|QCHqmBJZZJ{*8)a`)SFFXBU95i%+`P2Tl{+sG0QmOUe87WuS&ZZ z9j~3=vXN(4sD(Zug1)DeQ(7RQKZ>hMg{Nc8_g}6$pZnN)z-fXJlWH71pO(>_0L0>@~<%Giq~p~U9EEBw6P^4B@d3_xF>oh6T)%D;{j z5*Vkw4<9-d3EC5hdfp{s%%pH-7l>N1qmBYjsPPS^fLcQPI^Vv%Sp}XggB7x^Y`@w} z^j*`~Htk?NIoR31L+{#z<^iqJT|c*eX#r%R@~G;5pfEKXub4X_|JJ6bYkvL8y%k5byuV@pdiO>ie%Kr4cbm-3YHl@vUG+Z_y?)} z)Bb}06fBBdrG=1#QlzSThFaW2bMyJ*hp?+$nn&l?*qRj#{udQf zi)Br3_wNyoX}p-W^STElh>|Q3dSfFAS5-7r<=UfX= zoPc)hG`uW>-6xW9>5DhTUcTA4i#p{gx_F8MF%JZ3O;y!j>vEHstK&2jxE1z&WS8f5 zDuBbdrBIVL0d)UrhW7sT2F`!CP0+x&--+#?`HwI%JTUN6FeiYt8lSzmwxO)5dvPY< zb9FuBu-Z9#9`KpL-5u~x20oy=dv%FKZg8SMIayeA{V$&%K5#@m?aZN8E+>x$CPC!! zJl5eK0~p&wwo5YNkFH7*8n{Ww-o)e?z>-=F+hRl?BiS-C}SQE$@_bS>Sr3(CwGp?ED zuK&zlIN%SVI63+x zVgDNFVkUrjKGb9yD8Vm#c%_+5eJp_vK0aR-P^WiJQb?hKew%=)yc-UdDS^L2i=f(@Pjj_?uT%~^}PX7qX zKF8FUsLn?jqBPcgy?42!K{vw;*7}4d&Gs3Bq zr5hI3{iZ7+1>-|(SYXqaN$A^zOrdO1r9&i1ac5%UCwIjxrDBOoidj;+nsH{q{Wbd{y6br3 z)dk?P$t`e9B#FcD@o~9tITK<#z!C?-baE^N-do+dP-}k0;X8+4ks0M9K=iybx>y(K zcfr3~4nNU?4k^eCb5Pn3bYQGuF`VHR&j+b6T;~r`u&)EF8TQyOVxDdpT?@W=cp2$@ zxGg7B#qH4;Ok%K4bM!XuH;Omouh*S&g{43HPF@LA&21Bfpu4beD^|D<0!n+?SPmRm zK*N;*VdyL}nWvG-90tbvE36Bi%)atL>&)O+;7e0TNydaQDZ&YiYUq8vJ4Q`|Z+8pI zAuCOX^Bt&MrBD=$sBRdX*9YB+BZn1km!1McS>#NP)S5x)?@K(H0asX|kmXDaNS zAqf@lMONtY5P zbPreyEdje$3>1q2EISPhfnrJnjy|ncfHaD!CBF(FHP8X|)y0A4O-??6RuP#JznQH) z%1tsLdlp8$&_2Cn@8(u4W50BJKSDOraL<#AdZK79y;;77c)r53netPGey4{|ZXv5* zXrwW|3%~YO!X#{Bz|bD+X~M;u4?63ig(NqHii3mfVsReIU`SCOgW$utE*;n0AkV=t z=PKfpx0myzmAuyw{qaUrn4(_KoMb@Sk>y3LU1SI)E`%~yqDb9Kn-)A97dARMu zCz;sy7o$%JY&9s;+uT>xsQP{|ABOH%WTbN7p z#Z#P5q}g55a~zYNH8Rx0x@r(LPR?a-@q|rvA072E2+QF!7NQM#Hgt(<7vUA;uy^wF z^Le<(K43JdwkBJEzdsa6%CrdWRJ`7Qajx4_jU~dJ$yln2OLIO#F0e zIB0D~=H>8k7qth3cX(RA5Qw*<@nSrf)jMG2++5D%ngZpLd30l z21%GYbwANPS}b>&KQ zBqApQ8JYo8V;1g+>F;a87Ilx0vBs2Qcx`Df$4mR8U-6g)a-R5+8kh?sv$--SIz(?4 zrERwh49xhibLtQwpy&PZ{!)jO9_+FHnQ=%gW>0e3ynAY1D=R`I|3%oAS(`XTj-GO+ z>4ja2wRJR$sxDs$muRhd8x%_eb8AnpW`QEcj3>Om1(DhJZA)8t!$76$Xhz}d{J4>a zr5}jQP6qkY$smFY`o=!6awbJRH*hoM?T=yx{b#`ReOGj`&zB8Zdw1Tjvh=SGwdQuv zMf6O|L^XyG2q;_hk!V%4I(WMdq2UNJ>OKkvLV&BpmZU4g>wP>qWH|AbEDF;{+jt$JUu;;AX9d9 zjw@_86g58_6f5_vs!?n++OJ?O>A;Sjujva@H<;33+Qw zwY`WBaq#d|Prnw97KEy?@o6GH67j3JM;wHOJ&*gHJCN^g55zQEyXpXvP}TCu!aQ9S8#*Bu{|L zWnxFYR#Lh8T&NTgR|rTg&>fjV)<UBxZ=U3dzYX4Wd_0mMx}T1Ep*aKh15eBeE>RgJB@2JdR{wW%Hy|2D_ymxq zgpZKL%)(NP(F^bkz}eI^wX}Nj!0qrYnG?!IJ-qlIfQoWG?BI80vx9SV6su~7AXa1( zB=JqzF)kDZZ#W%*O^)*TcBWaN5WYr|-Jb7<37ke7^T3rtmQ(f!+ilg1bM3smW*vEGtE~ ze#e<6)n^ZnJ2hhM~Iyc;F3crFuY(6 z@M|?G%eYrZk|HS@OIW0wSA@ixD)j{qLRnn*NMKFP6$v;*!sQD$F{`Jb;D>Fo(Yi6; zIesR-(0Uz=G_c0U&N@_cci-$_O*6Q2E7a)IRkZ+mkzNCN^893F1BMSI!2S5RXZkyn zYD!i{#wFyNsJb~h74GqU1_a-!w3mtSte&Kf8rJ?Vglcc(Gx>nZk3vswlZ(u&fwUKX%=1k zKP>HkZc%0k(W+)pH9u7SM-Z9#zx+S8{_@}S-T z?6mTPb@%7L22rh#=3^9XZuP_GlNI+nr&uB6;g8JTNk|8tu7;7t@R1ao7e(x8-!XeY zvk@$rmE>3^V?{{{PdCxH$kD+iI4U&?;~RBnWkzQR&R)2)H>9h2#MP#Zbn z=|TK`H7RxY{rDs!S&eWFp~3Wz$M?}kOqq{)+4rqM(p`tTfK- z20B(stG^|1A-gph^*4HWd*8E)_Go|5>1bznYM<(Se*^<(H)YcDIbJCb1kkDxTUIVI zRY}pwC4jx!Z97Aa`8I`v!0_a-o1@i68-YWFpS&-;AyebwM7;?R-?Fqm6(>cRKSMfopHJh8Kx7DJ@Je985s@-^gfV}K zHgm!Xc7fK9AKkH)SygqP;m2^aS>l)2z8`}W*!F&+tg7x$X~%fL?_y010y&U_54w%k za01~LBj;@;Y;(xAw{midg7Eq+_mz_mblyUlFM^_-l5scZcbRXB+TZDoy2!Rg3gAvw z|A#QMZNdN5AXYFynNu;qXg?O?8L|~;K0?oon;>Q#fU4Hw>r(=#hb3P;aey=kb=dNQpE!6Cg?1F#(^s;-6$bDj} zwBL!u$k(=DDVf&s_AO@PvVh6~5X8ER`XmHb-f4~}L5&SW<+pfYR6AxQ1H*&AOk7w) z?|gVIvSVP{D8tY|%syHT62rfZDkt#IFRT963HWiY!ri@-**X;W!Tj0a)pNrKA1zyZ zdg>c6UDCVz-L#?^u4N{$4EZ;|A>#UFhmX8D#x5~%%KNxZZtxMwW(Ecb|FJ)OfL)P| zp0kF}&3P*(seK~6>Yw3}{{Q+BAX>9azlzh_Cgdi(YGNp}%e?jEeo``wp;H@2ibdQY zhc)haOe{pATHTE;vaWL{&zDLgt#NBp<>B|SF885lAd>6)Q!+87LoBQ9WvrMmc#qun z(c{&AOFyRN+wOtUeyJu`+lKB`AZJU{m*j@8Co)X##Dy3hxQbJ9$uDE3d>);^UhBs? znmgJSTJ5Y|XjO^28QOMZz8nZ~gp7T=@+)TR>m;6w(Y~7bCj`DDduh9}rOA_hu1nXsVZ!9Qo#!SNABxC?lUWcr1p>(4Ri5N0>~y)di440a1gH z=^jP*#vh4*8}Lvm4ez$>6?ru zSN8LU@i)6QV){aNE3llG&-Dc}P7!lJjmGQ$-L7nO-ry=E_}|eIm`C15`vqop144Ru zm$+*Nhwky8xO?d~p9TsI7z}@faOr3|#FF%od5iopPg%1FdQEwN1WQ{9!4n@hPYvFa zsBpVv{E|C9c}wip9lHrT^s=3M4SN^)YMdXc&Aha5Us^2_)3yAp>BB?r@(#%~dJkd7t4{jf4rp+nZvJ;Af(c0vG88KW5AwR>{| z{zFwOLwa|bQ9MiB%(e&RatQtb;sd1B-Zn2n@b@tQn}PSbkh{}>R4(|@PGP?GFNCS! zI&>~G(1>W8DAm!-kj-!@>~gwFfagpOgcWpjL(sxj=jI#|N1Y1Xp&WJ7F7p>Y^KZmu zLhIXqn@gK`%ZiHr8l120JV(7pRSdn00)e2lvYP;KV|fOB=yfh)+f`{XLR<^*(K|oq z=I#N=KYM?TUOy#3an8{@SiFfV%$14I-XnH)xT6DaYN_bbd2!#6sE49B z6WUFbPqodXzE49#klEI}yu4fhJ>kNBd0AOXQy>qfQMT2|=?3nJcVAtl5jfiH#G>?z?5eyf6jhzlTer}%ByAz7;GiHXnv$A zjf5s$p?wydY;0wI@*K{ky?*~*gm7I8P;5g0D=1B5YbIersc_rEJXlZ#hjNos5QMLB zqIg6g4X5Drg(d&?FHs2)jcWL|y65Y^t3?jHHXP=GhzCIF38hSfv*deV*n;oH$E2Uy zwRBx9euY6RDgwvnW@ohp4^p4nM&kp@rS+4IoW5YvZ_NIU=bL)b<*3kJ!ik0wSRiKt zpN6*{i*(xp7Za@&0yFw024E}neQhcF0(!*R)z#I9Sdh#=U+!w>fi(aliAL$tlTPa8 zl@-iDJpi*L4xy?`Zd&f|Cl(Ncw!UYQI~ht;9&Ve*ch0cT-tZGH-g^IR2)Jfy(2riT zX3okZCMouUxC~TMpsTki?<|17~3zF;7q>b&C#T&+VBNPe~!WfsDKBNI%45&^r(Skd3Qi=KX&iB8~=8nV4HvJXic{WnNW5L7(G zkT8f6z9U4k>Ep-Pu_eD;s1S|~O4s^1Jb&@x#fP0CBdb44+sK$w9s{-lNI&G*=@>uq z-Q>xkdzuFu>g%`ggLjWf82Tin`i7CyeJ)XtGNY{}v4at{421hC z(ep>BLm%W>@!DZP-*^yDyz8WAb=}sx4{u*e!Q=Lv|JJw)3dbUpWP?TqJ^kcMh zcfsw8s0*Zk9dAoVm0f5n&N6`z)ztyESJzKm!vF@oBG?cJU@sy6$F=u5|83$brl6lu zDrH#XsYKNfbCTE}djM>bJ}FGUxJ~8=DlkrKdH5gxPFTrfT+bG0B^haNNK`~)PEaXr zi0h#Y?JT3T6mzIuc)?{Nyyo%K4*M5~pmjdn+Yv@_2Mi9mx{x@ z@o#UnZUWpnf|-{K$nI_OvBgwsPEO7_jdxf;E{?eOSWfp^^RqicNbskA1?y@rwK@H> zw=@)!#{h$;<~%khg0)79Mz{|D;u*{Pbo@s_c0WSMPE@u!h@oN~e$i;R9<%e(vD@(Q z)QftiK`MV~Z@=B*ST4Khw-E>0S4C|Q7+Y%pj9TI+97DH@x*Q97^(0tx_C*~Gc6AlC zEjKy)h$U>$C1T!Z01aJ}Z{~2V@4~qD{*w`BcOeN3wlpk(oq>~OM%#ocw8t(ItTN>q z+YaBL@UB2s-7yUJ(LkP+rRB9yQlHSi)BOtU+@J9c1{a?N(gw0SLz{LiZkOki`1jwL zt$*^-E&~bLh=)zUdv2)w1w@&-tOe_fooDH|KO4LO>Z3ro_D8@>PsEaeQ}KhY=HTIc z$VzV^0g022TF&Js#`35&eK}xQczhO@2<%$lPjIyl>&R>e)4S`6c*-?Qyu(C{r=^Gy zR+db|1cU87VLwWQXrMV|w144nP@`Zg;W6RbxvO6^5^S~;JUvGR$HPPkT;IHEXmC{8 zB61W9C?3)9pl@VZ`lpv1Qs1Q0T4jM;nilo=5>8k|Y-qu!um!?D&D>5m^4kOWOiB>+ zc9kcdIm7@+at>*bbKfF3gKn-VT=^zVZ~DTA5h=djVS1_C+U8!E?)>)7JlmITKbe2M z^Q=;aQt-d^eCkcCM-CRN;P!>#98-8RJ*v{*f3;V-e=@f-V+&!?)12W1=T!>qq()Zn z{~8y#W*L^UCNn!!_caC=r;&y^)%6sIoG38sN@alzcF zBkp^sw!9g2E2*v3Li>aES|L3%lNzEeLiLwPOnAc!eD2Eq0=O+PYP&NqtZ{Un(hegf zivbLUBSymDx82KpT@Jgl(Lj1S0&BdT1Z(gp{^b3$w=Qs3?1an3=hujGI%&5}w3&V? zv5<$E?k*xW|03*Gqx7$z5^|Oah@&4Nkry;=H}nv-F~MT}pUaPLm~i~O!@k|+gX`c$ z{3Te_ZsLiURUPbt0f#}XDZ8(lFU$y3T@7oAKa;{9({dAb!!`eW{cO_fx@qQE9uo0w ziO}#Gvz@7L&=6v#5)=3-{JP3ylt|qd zyXbm!5l)-tzWnwP1`<4xNSnt}(T-ICaX;DzNZe|&lxM@NX>kJ)jJ#7|?ex@lk9#7%u-htTYjtYZN?S6GT({-e}gUf)=c zFRq7@i8NjRf+!U84S$Z3H$XTOK`ke;#o5G~pV=8i9heQxRjp!X6{OA_JE>w2znlMFZJN zghEl#V9Ww2G0dr4M?0k%lKZfo$=W$PZCclP%(Uo0-9G-J)~im&=M~>~_^BrV8KC?i z9JJvLR>%`@`WS{o5#=0G%S$k*(;I)LnrGQ?tUIhkE#Y12RHbdhSJ!7c{A|c--P8Ml zhMM{skH0qm%Ez6jptC0vBdU!rfU<_C>qM4Ugq_Y4!+O|NzWV?`K?<@ZF8OIy*I*RIcCrz$n4>#C`g6;~H6JrC>Ioio zulnQiqpze_=(1)!zGkfWyYDG&Cjy%EmZf<>gu%lG-$nL9vdBl zWaAaHlc&yJ>b)PQSQQi~z0kJAPtV(+CStN4=%E^?L|h4Ad^n6~{yb@zb}<4IZ#d2i zYhh*P(RozcT6Y4nXb{XRtn2a5bH}CEa}AcFUpj0cs;NcTp(npXl#4p<#8$*_>`gh- zd3YL1cpX0AhC8&Ykno>IXt(|T$C&_r*Br$U z<}d+k$<4Kn$s_^|tT+nEtr+m!>T^=22tTpFPWRazQJ8Xunk#I~g$LfrQOjs{&tnFE zWv=~}=L{z;Yq__2R6rTuAt0@wFms#FK@=fvZw6*JSC1>DJNS)aP6Ng!& z8l*4_tYY93!L8OpH%P2BX6eS6&pRH`gziuw!pb9YSsm#Mcp59)mH!-Mqd$#Ak8_KF z+mh4L8h|0Ap#LjtUmWLo(uLLt)VguPqj~@)%g<%E1I-|ilND~oE&xQNA~REq+@jq^ zAb`K$ZT<7r=)C8;a4HnAm%?rb?EV*KBfbOQ4#u={$+L4TvKhj|Q*2N7Oq88GOLa=X zAn=$*0^p#Z-m{7ONI=I&0I!*`r&qiVrC~_s(=bzoCJ94T3a+1HJ=u8#p5MC=*E63I zNGeOO0c&ZZqMP15y~J>0KmC!t2@Nh4Yg%cok{C^KJmVm32!TW1=Y);1OS+u5ixf@- z7t=!1(|ZZ+zy1cKGL)U|xBv8{UZrYTt#F^MBV=X(!#>WuD;dBIbbZ{vWqRo%<=^tE z8Kye*vCWUG;?Pa=qF~ItT?D?-{E8d-yA1U7kAfr@K?9<`0=Q}sd2EsQn()0sHR9Ae zXC94Dv-ldT2?E=d2}qHyKc zSbv;Ya06Xt5IyfDV)wLJgYw_;Iv<5j1QA!MZ!vD}6Vz;b$U#9fCw3n2rNCuSih~NT zm|NiO1B4Mb!&_oQcn(ECCA1ynpmbM4xN4{Qr7Fxm$^QJJj*i|Q=Kl}q1YTyD7#aB> z#3hD6Fp~N&6PMfI@NmQi)jFkiqkMBD#45${ZNJt$9H=~V#^COyb0Xijn(Z-t*r9W^ z41@)X^?E05k%hn1K^TE&h5+$7^@KOp(Q`-qPiO1p z+tXLS8ufMRGIzRhEQJoxxx3QLUjHpk(imf*|1eQ|pp({Y51{sf-P%>A;kKoJ^=stH z2nWNQDYmWL=1#Ob}&@YFx(DD3B+RA{HM5U?CDaO3OT2`u}J;^LVKG z{*50cO_8Qj4XKQ*l{LziYRVca*~>b}5@pR!nsUdWWXT>`vWE~7ZDR{XR1``j36&&; ze%Cy&*YB_AbwBrA!Qd1c9Ng zh{|0f;91$L30Du@-J-2f)}su%zfa|o1D(DtN=_Xpu! zi^5fe@@~fk5So4DS-z$wCUt)rpx2r}2oP{aYF9twc^1NHJp~|CsYxs1$8I1^BN#T% z{Rc-A44g^}J_#H@h&m*(-9a*GT)GswLwv*)E}75l^eqoShcci%_ghX6g8blNQ&UqT zG;O|pFJHRiWce!h=tfj^B%6mG z&zNzMF+6_%iRd)q@Uba!1%gDC2>b4yt81RvQ?WDFxnog?frtO{Izg71*X1Tq7ULZJ z^%6gphMf6W&u@CaXv78uo`g=f49H5yJH{|QMxbFgGS~AvKLlKS>ptYjtW7gGmCqH= zL;YFl$yGEr194_xoz|a=n0SG>l!i@oFexjY{KJV(A4!EtIT25JMA*HGQ73Fq zUvK2h8c(^)CIb8Unf2LiS9MnN`?mkZ2p{V1K4EyVm@M1*OHlb;I3HhX#4*fiY|^}?HK=a$&R5fKsl zZY>jql4c_Z@xVQ|ZNHF^EUOJoSMQxH;D%SyzdpXOk#!wWEY5Ai>>A~goCz=Il9bg} zDcvH3(5)a-sjH~5!Q&1^vYH_jWE3@QW));*ZGOVMb|5qTKz!AVwz+FzS#I&`23!RF zWG%649LSt@?)|c*8D9yw+oyme7B93$9dN)FE+~7zfEkZn4zf!E;B24q&8InaM-m{&=C zy2fS@W3`9_s@J`=U_FYJ^Y~bNx_5pv*xN_Zw_8+n91^CU^BS662~arJ=sySV2mcMG zwOq$90SW57tC!cVybWf8ParJ3IHGjxiFrRjIhWn-+i>Z*s5^ak9h=X2;BoRk9^Xmh zbfwQqb;3%z1^N?H*%I#&Vz7Pvlm(SU`;0dIS^N|D-W_*{cf4F8XrqChn__T53M(ai_8OTbxh8M8-yRqA&VFii$fD*w$6k4a@<+qEaiHF$T z*7jX=Zf8wYTW=>lscdNg`Ond(Q zp`a|^0SsXB<4qv4YHq$n%PRc{)~Q6-bOZU#I@}aD?^joEfZucV6oQPH<<5;*Vhl~4 zOAr5;c7UWh*b;9jc~#rHa4CZ_qRe<^AVhv;$4r3h@-KK{kIZT|Dx%g!+)Y7lr_{C9 zFuQUIpy{XTr3$Bx0sI+uM~IYCp~N^kBN7e2>7&9ohc{=PqzgFRo4TWWt>iY$>!SG2 zF($k5q#PDCxn>Uosfz>6-y`8ZG?zM4$4V+Xr6^GRb1D0&3C0?>uJ zb;f?d;)66_w{yY4!QAxuT||=_f^RYql-PLZ&I{w5Y%V0#y;#|p@YQXT_uY5!Zio@Y z%qOR0sER0zZ`d)4)wh1q)Y1aaqmsQHlCQz$9vX+<8J8F1HR`MWUkhMvZ9N1+(qOa^ zbOyVa<+f5B5j)$(ExzfK%25Fy3s29?d@0Ae1V{X*Ki7eh3dDTJ^{UtjaHGr}Po46C zBcfFFT559g1ALOj$12A@F`aG^#wDU=1tWfG1f)2tgu0 z?4dziMx;evb_AUsko3jFSx0{h5J$H$?!BM=I|_xA%3zr!JiLN7%z*~3oAD+pz2%m7 z&z_GU8!%&I_leSx3Hj1}@Luf`$_^;sRUH5qVAE&Iz%`6n$B|ND4?NA6b1!0G@!=#W zF9no9>(n7XoJUw{^Vb&;zdN-{BVD)EMqW)#jf?u!wZkQ$OT9E`qveRxnsXv+pNp7! z3ND8-1i@HVQ{D!1?3H=j)EZD`I$aofO~WAe{u7 zX~KQdsQr$kx`%PL7~4%g*3ioGA7PLS-FdKVhTCIfz@jf-e0OobcC^_}NU1D)$0dGz zD5yIG$wCekUXQUSu_W0t$nrmWO|32A8%-Ibf3qGKUP{x3L`Z7_iW@yTbHr`;afFTV zuhaN`Uqt5`bj4*g?Vlhl9Y1*RV4XqqHSpLW1X_2>(eXa4(jlX*in+P~_T1s(p^PXH zO)FGd?8KcF#va-%;UEk?3aHwlp1z!|v^?O7Si-oO!9K#O%%UgkkL=Az}HZUcSW0l zxU@>7yNYp*gMRK}2}j1kA^8$ACl$z}eoY*;d@U8l=6SFR|LPIsc(DXG$HXw?lKXVy z?uhEFh2i;(^v<34-c8SG?oZ0&OE*YzdtMiHOt(E<@N%Tri?vZtjB;=97dpxw$8Tu% zSWj!Y*EJfr{ckd6c#wR5GWbX!hB>Flxz$M_B=ipAM?_x6Z%2LAE-4jjD(o@$rMD@Xm#VYDr(NQr6*F6Y^l2D~;@ftL1I&m+& zit>7z78gUR!0;@wM`3#)*YNz9w}sc$e2K`Ldi;86YiOWalV{au5}Q&9xgg zY#3||nybi)NGil>VvJ{Z1}028 zJmXsjDuhV07SW%_l0E=Ux{dMdx=F!W+I2^!Pw@d7$yik9%Za>rk=E=dHV-LYG?HS; z5bmr^G^gT?&K1Ycv|==ckeG}gsRj2FA&e!{dawt6@w6Wk?Hq~7*?oV%R!Tg(d!G!_ z+~_IQy|;}wm`d;wP98FM9%4KfI`_k&3#3%It7-}2HN0`d*4X2(Ja^p7FD{Hci5F(H zUUI3?b}6mTA3T+xIVspnNzG-51F6G)6}p1g)dRFjVJkEL@-X1cs_Bi$sm=T<@%q{U zP3O%&`Qlndnka{F)HA&(wBHY1<_W*ky02foY8k|L6i91{MUF+eSX`Qj9TQY!chEx|Q7- zKc?*K-fj#Prer&%@?4?0n&i#P8!lYN(IU(Gnj~%ch2p;_7nwFU-E(zHqOYM&jVAx_ zQrlvx=<6Z49Ik>s{M8^eeJY+%!i;APRRke&z14f#`lS^sl@5>*TkC6R8>BwegsW8q zMb>6gRtEXU2*`N%F@|o*hs zLMu8{5HNz)5QAsyl<68V&I7NY$n83`1pB@s=5gosj}7Sdfn_in_Cn3KStstkBQt?a z8)e^JwZNr#`TN)AUW%3r@#M`}vneA52C+b&zH{7Qx^u&MgM3&2 z4GnCzB1jx3*$pn$8!BKVvyZdEuI?*-D`b5=pm*?Zh4>Ybf@f`K;X?;RT>O*RUP%Z|)r?`7_7@Xt}4XafymisaR2v~Z6(PD&VA7f!e?}Jj`Ao@qwkg z<*eYW6w6GQanA$JsiEHsi@OLyBGL}i5s6$lozlNp33W|xF;Bd?aB>~%cLFvfF{AE* zfq_51efxI7-MY~KlE%_zP}#Ce`;Asd!(rK;ZBDO zLXe`4k!(wjzx#%p3#=*FH5P6*F3yytybWIH^xCv#OUUh-nwQ_zu)hm`L^&rIagz(5 ztkxB{fBB)E&aG93^mzP*v>)@lKhv_cR~s>fxg6=9+I&Q0}rtI;~kPW zulkAM(y;$x?m{u_Wf6)m3W`<{`drDA`_UNu5^KZA_-9!gv zI1V$@sw6FW>aGePmoG(6%)0-{SwYwsq_2(o}We0B)#)i zDcQah*+lGLF>{iOeKSG+i}<778FFm11M5{+Lw|9g=>MKCmYIH(QR{RNFmNurA5cvF zGN#P)KKKv9jFBKtWf)|Ps{TsHu_%*Ip;x)*w1%{<3TrkAVVN~gE7iZ{g`B+nI9J{! zwj_z%he2oIm@qma^!ZmsbbiCXcM6_~pcOQwPLGo=n0#1g2LCem2F8Q`U{8Cby}Wr& zyv2cY4ptFbOBX)Z?(v8pwg*H_3r< zq)etD$21P%9Vt0&Q0ac)r*l=gZ^ymXANw3$1IR1grd-f&BgexXV(vOQ#azT97n`T3 zt?+bx4?S8D@`xo7Bp^~x3E&SAIHy<((!34%KAyk5C07H zeoU_AqZ*-Td2z23_$eie)isTct1+~ocFtm$_VZoDR*O{oPpHUI!)oDDQ0TravuMK< z6*V=ZReq`->j=VIO$MTY!npQ#@2H1J6L@;nTg9>a@~E;;!Dh8_1&7+03h39 z@vmVxD>!uG{!5Hm*k1Oo`t|9;x4N7M2uL;FLyt0hIJbKM1y9z^3w!D{uuR&>X@eQaa z=I>#rkfXRwUB~l;nb}#CQT+Km$^Jh-U&S(GeAT5sE~A(c$QedKJAQLas)K$4w~jIT zz81tIg!PwScM>WZ$;AxT|l=0W(IFJdaVS)NtMEMLh|LZRoPb?P0Q*8CE=g|l%F^$W+V z=rT$*h{&z??;iyDBhHqny^B-ke@dzb2@B`ppBoWyO zTp?S$1X+dKsjiIPMnKkwhZZM>K0y4ReXO^sDeQ@R%?Y?rexoWiQ%Ua=e2q+Cevs^8 z%QmX#OWOc;P4c^U@1h{`=z}!d+t2Sh_eENvenN@K_|9Af%L1c-IC0P&n)V1po8n@+ z5bLoRV7+<-S*iQE)2EADJl;IT7Z))YFkWJpAM3vK|Fyzx-KCiYH zs6Z_GME?W#-^b}D3fJrVn)1mvGL#RzY4qz zdUbQzE#VvAO!%0c5Jd+CNAl~Tp{cPwH5MiEL=!Yl11d|fE%*-+j|B0QM6G;cmn@sC zM=LQ29MjuiVI!YR0`dyaX6sH+L7$vI&k_4_{Nk9m0K3^MF#6)o8L%9gKSFRVd(^+( zhMWw4h{g(#S%U1h&2%0TRS|IMzu@{Z*jnCPTGmkvB#Z!J9RVHV$i&)O5xl^GDGw_NAq;3Hkv4VvfNS*5ha>CAs=Sf?2iTLx}w z9P?(`$xT5rm5lA0d47KW47QZthW;%K<%VdVIeYfX1u`$Za1abUMrilxW7^!mgVeE2 z@W(bkp;EktT6Lj0bYAQB%c(am zRh__3Sm=u#A9#Y{29hDw0U5*b3+3y3HlR#T_^K@447KpAXoA=3JUw>t17hVPp~8DJ zH$8f|WaU#1Vi*^|9?TKM(m`3${?!+GV%H5V&dg-EaPCo5ba+Hbg?gZU_|f=G%u?dj zzs0G4)g>p;30JJ4-9xxeGwgaXZ7n)iQ&AH2fb!d&R$Xs7@|KyJ1S;2sSU ze{bIs8VTM{u=##^i~Y=mYwzL0-`RY;&d~fgZ~BjS)vC*JBGELG9E0p3xW^uy*o1Fj zL62ZX(yA&8eS}3Ehu%c$LWv0kd7apZNCQ{~IRp$!d+TpvI&cLcDF9Wj&Qv|usl0dZ z-px@@?lH)!Eab575Nvjkwyfiu9~fFpL`OU)mhAl2^sDb*ei(~tj-LnDVgRn5Reh>D z@mCBBzuXXE{QP>u=);YQA7yi)M+_~@6H9P#V?vaQ>eH~9VtVLUF(hbhfm02pz1z=3 zW}6KT4J}veI;XfroWj$8r}JZgIXmPV;)5gY6<^UAKO6bJpV*Rm9;EooPwc)(?q!WQ zRwf6{^qMB&&`o2n1cz$9v??V}K{+oI`5vzW+g`5(%uzAu+6s}8_`m%5jH~;w%LKa0 zcM&b`P4FehmpBl0Njuo@Wn`dDNYH)ybrTp@6j;A^5;t<6FQuP6Kr%nia_86orgr8c zxjKP?G6AA00}*{^1o}-OQ_a_ClR@|!%mwB=YlBP@9j?7Tz4#rQ*FXnoItrR`o2j=s zR$g!!xApU*K)1aM-iLDE2O2w0)_J2L7f5H160W~Kyf$4s;g*o{N*t(!uO_+81X_NCY_?L~}GYqDJ+X^*diY=3AekUAI|N$Gw(|Aw%2Qn?ckG*F z1n@$GDTxXHV9yyP1qBA=(YJ(1z{6JYaN=t#hs6ztaCF+xdA0j5ZiK?# z!omkRI9L$z_(h<4?Rum5(2jox_naA2Kug5Uc!ov4s*;i{Ld!^$k;t9x>lsIV&Yry; zfaN9VY?fqBSNY@@r&E#WjJelM@qd>Mcrgl%IwV}$(9qBdUYpXMJrNeUKOs^s?%^rM z;@FnyF{jP93FH(w7|!n^QM)jaGbi@WfLFr*y{aOd(F|&(Ss#V<&dOV0DySxQX(zh@Ty_T;^&*O zAu1_yFfjeVF61nd%mZVivhPO7g@`$wVp5@kZ$oD`vL#j=ug!G7%TW#It;%F{;uLac zz9V`f6maMDND*5;ESC)GICt)ghaPDOWV^k%jyBA3lv9k`u*7_6OW4t6@5n}D9Qoa& z#+`0pisrpAr{Jv7iHkal7l4!4yOeNp)#$L7KN}FBQf$0bU59fC2fQzjkrNF){@hWC zJBXH9yCpXNv4}?n*OJ#nRd+u zE#7kth&JG$?me~q!xAFOv_U{u<(Z(pXe`)?-!{XrlTUU(>GS#s52b^&6a z_l^s#n2Le7_x0JcXEG%(F5}(D7uzfYZGcUFqTxc^iCwNY<2SI?7uDt`xNoE2G3R@N zWXi$aQFP|{lhVskonMB#s65d}>0CqNeup!r>i*uvpXkzy+4!|K9PEJ9{kz4v* zwn*Hf#DHX5KfEQp*@3&7mNi^qwo~(3tM_mDl&6tTvhAxZU|)>v^W1``H4l{DGYvC+ zuTYOFG<$4dQJN@8qB^<@D0q0VM88v!ZvtQF$Ppma zZPb!zecdSOA8{H=dbO=sQ-6B54HHyH^lCWfUIdlk0O^BCc)84Tk`P)RB|-G+^~y23 z4D|K0FgeK8zN(HfsMAvi176HV1!qul(_EIHk=H|XRg2%%s+ zzm1KJQ%0(;R~`7V8R>TZ+UX(jobKoBEGZuO{-n(7lY5fcv>i{hG^g%^N$C9Sz24}b znQ?o(+{z3KK=yr34|Qag_b)Eq|KxQSTBIGcTU-{Lh6%b)S}6mnE?Mf42(t`GAsg0W z>05Z`ueY-s&BP`0dv`~-l4tXqXf5aEwrt+Ibze?A3q+-M zBULSIzYw(K3O}KDo~Gp6-tiehs>lWsr$uRP(z5gW_e1uCLNT$BkBC*)olrE2257Z< z^9u)aE@rv)!I^!qmcmA&?U(T~C=qf6r{n!%4NgM&J<8}Pr?oZsPH*!a7cMFj zZ@+4en}!=B_~}yzNfCY-tC6$t))GIV3lAjzvZm5W#`!!Fv*CS;Bz`)Dej39^h$$EP zCVZ`rit*pO@@f4MOF>5OqelljmhSh@kijA?TV#ohRITCzitDYJ9HS8lLdE_pDXW@4 zO^Eci`d&a5_Om#kRjZX$e)x^UL#}BJ!59ae@sSrQmk_tqV~c(4?Ch?O&aE&{T#nd0 ze1oHqJ?&T3I;M(ya=&DPYSo+U_zYA=&)v(W+3r{l;^_61lz=lXE`@Fix%Ouiw#3f% zHq86&hW2S;@+oL^pH3UNisj$kp1N#!NO0c;Gi&QIHh%(FWn1%rErgYk5|Qbba@5a@ z=$K@TX11mw`%+UxXD!4&nOE)E8#AQObU{a?h2_56$4aYKH-G=+u8*FlG>$1?_Ld1= zV|{0T%r=Z&;aKH|M30Mxvt3poIuiZ!+anG4A`J2ej(6tvXPCpA`{(gv1`qYCnV1hB zvpnywCm$jE*|U~RFK(gqC~(}gmZ*x`kTF`qAOljIc;Uj*M}vbIj@AcIRUjPua%XIi zGC@`2<9yKVK6H>YlgN&g6+$s;n}S>q$%?izjw^DGSpBDznZ}9GvBNws_bZI-Nl;%P zdLvry{s*9zFhB6?1vZWyu*v(Y=fM5VWZFnTL&#@@zp<&SynB?DUn|yf5c}0LPf_T- zsZ$Rxa;p(dAZ-VFMnT20i>96L8$1`3A{n>R>IZz@^xCD9y?c8S=V_Ea^69c zP}u(@a=U)!$2-(!|6KWk6RjZs*?7bJAL)B9Ac@>hGS@-Txx&=b)zOVI5>i<`a)Xo= z-+zbW!UKX#Q-PE(OH!h1KdU!8njA z!3Np2d1A8h{(UR_nP)OGG9$jHPU-K&|Kbi=z>@Vi|1bEg^#FWDfa})Ln0h{lPbMJs zDy$U?q}Ct`$q4Jr&fNm5+I1YIKA%Z(K{$>=olev~n1^(3Y7mV}1W?ZhRgGk$f#Kz|_>V9jb|; z5M0q7n4QuwgwwL9`|L`s1*xZbSpi}T2wuF+cIiqL5wn=FwlK!gon&6i`DVO4HM z5QXL*Sx0ZnvNDvvZq#_*3MZh4v$wxLKWdz5q##ZxzUHn4j3*j>MkNvUwHe;scAa1U z8S}-+F|MqmwUB95cI8g|6sL4GNMqT4(FY?LnU+IKb*Em*-JqRqwXe9P&3t=*{&*M} z6-S=`nPe2dSk9QUyE?KRIE));B$-INW%QFk_M-2)*{0WYoVt^7)HqIr+v(s+8Gg=- zuKhH=CzC6nAKw)J@QbfZq%5m(WjF?~VA3hJUyCgkr@vj z9AF=mMAGHUEv^NA(Pa_`reoHj+53>dHeS5BP5;7$B*qD4)Wr%Ozf#dbjz#qcegjh z;Xtj0qvg40t=g&#F?pz^OHnjhTUo^jitb~2K%=$e^M0W5Ci(q6ae-kSi4f5_(Y)1K zIw@Z=_akgv@;jyy->@4U&lrNe)0TcQUxlR*g&wSL3$G0dM!BTGU!&LASD(o= zTS4t8e!7wvX3s3V>sHct=D!@@W_iW@un@zgVrS}k&4+O!1sIzL#D!TCV2&AgsNwZc z(*MfWRG4u~H=ZfS2O`QUY27BuE;*J$>L!riFpUlA+IZsXmb<4KB@Gi^l{ySLN#TKl#)aWxB_G%C|d;tTWSG5^y(9?ECeMe27MzsMBirqM?bP~q&LnZb$PEP*;?Tk5wm1Z58Wa|ccap`W`{c$;h%^r?b zo*b*f;4fZ;htH?n?CEwL!(BUY`YY)=Cm32BAWdwFW@+aisA|~H_e9LrSw2;k^@UlU zG5T%q5daQZA3o%KnYzg`cH5I@Ai9J?UopS(blysyik+^VyA$;DO)9Deq-R` zVzt!i*oFMlesaYAH>1<5=*)De@iWX%o_yL;k*0pX_S^-lidqAa8VJVF{(co=WL(`& zWjN~=Y!sy4g~sv#$tUGFm%VxQG2P5BUucr)`$>Cy6N@DE*V23~f@9oUCd~SN4U1Il z#?}PYkUx_C@KIn&91-C@ncykXMvC9^Od641$zGY znI|sG7_C27+(40KmW#A|4&=4Foa`M8e(2$rDMET!mdnLU5Mevpxlp%uTynQt65(-PF2@tmtsg;o<1;qo3a|R0Cq|kb6z&5y^}242D3UI|H~q?|Jn%R+vnE z1b^!H36>c)8jW6%ZuS1TWiZ)>?^7-JPO)~vk=xbPz6ABLRzx0HO9G6ejrZ=o=?khv zQ%Ge5w@h9gKdjrb z@B(`2qw-cQmk-N?DM0flcdT_e0da~X@a0A?dAp{;qI4q!u{(gj#EY?vfRd+ouwYwg#OP9{$I@GeV@ZS!Vz~Aywu>=%UZ1Y6-gFmwN0)CY zh^+p@22`y%^VVQp5=E|?tDf_Grz{|tXSNCy9O_%x>2iV2sp-pe1blmytv zDXK9SD>w^l?-x$pYfG?ccU5zUfg@%q%8Is%dA$QQCZ4HyKjKNaw>>f&i-mu8AmaLB z9G8aw7o6Orp{dX$x!uuno$TbobG!HKIk-Ul3@#?nMN^=@@4_Rq0yv>Cg7}6N zfsO81F~|)h=ayovLcSqSW!Y}RPceQ=XiC4;#D!sbyz!W{k zlkjLdXrw#$@ZM8yXj*nd&(1!~;Ctq$&rhTD>%+6S%l(Mdjrd78u&d28-nwg%A6j)q zN)R{lian}aKf8u269kRae22>hqN78S>24dMFZ>&i_q;^@QQ9-6wog@cz;iKgB?;mg ze$JI`gTGzFo}C}=51CBN{)Aa>j9j0u7ivDZMUzVBoOXa8X2WzAyK7ir&$<0=K`hw#}mQANT4u=jup(*u8IG*(O23G!4>g`1jD#9e&$6Y5}1CN6$GP`coa! zJ9t*WDyG6*XN-;a|+brL1fJX8#gRIr434QSN zc4Aol=v9aHl0Wvi4RQm@!TPNSMK+9@yqFo_7d9xW^St%dGUdKF>-r7tK$+l5Uh~9U z&6@`fq%xRtTmvOn6FH&RsMXC~nAMfcMM>n~Qc--VlvHF`KtcY4IPDPll{u+-&2Vel zF@4~K5As5`H%f&Wz0d}XJ@!&RfNoKhu6nMttn$2J!676pe0i@yS_LBiXLkILRHPjk zbSC({6?Jw4%?MnY#L=tDhmIWr*7i`HjYQNQ4no_iA;9N~+$U&w2JzB%^v^hQZp5J8 zXWYcu!Qo>nyP?Czd=SF^Sc}(_z1jwRPw=~L&g@EZU2J?{qm7cCyUnKp$K(Ubk?MM0 z+J6b;ZiVaniLf3USv9A{2KF&|U-^%k)Ccq#n&9BcvHn667LeC#CVmn)I+4iiO0%6R zLJU!ot-YID31RTe3|8rOwrn9Ctn8Fl`_sc7+fDPE=T*a({aXF3=DSkN`W;0g z^i$%Ouf3kPQ#J73`aC59&GxySC{JF(# zQpC_a_JF}n)+nb*f-ED%@KYL{#7gj_k6Q*8s-91HnykYf9ezGE^zRo2?3Z4SCs62- zy_W?faxq@N~sfS`tX1!wG;EPs=<3*DFcC=VaARX-sneDf6v-i{3a3 zL|ih#z}8U4e5Ke_XGg~ZUX#!Pa)--$V`g}UBc?)Z=tjKs3yU++Efd#!e~oy|ByjCV z$ILxmH`uH^OEe{xj-SYHb#h}YE-ntiuzDr?#cJcpsi|p%%*_N$(RXgRhOz3g=L*zA z9K`MJABVBb2DxzxdcogCk3@&@$3o9nUM+o3qH+=IncvTsjth~(n-%nHgh;n6*E%qh z8RW;xa74NFMLA;&A9Fp=8UFPX@?{$MYxdE!ff_Y)3i?^e{>N7%-|wlwcwMi&pA>we zYsPAp(>(Es?vugKa{B9V@KSdwG0P9XoXNBHWL$Zwye~2e;j8@A7mt*uG)OwAFz%L> zmATDk36W%X@7Bb{hRQ>-H?JZxJM4H}@Q$O#RTivwcU+rE)UkG%#-QS*KaeST_@xh4 zY{0Q7N67ucQ@mb|70I|FOwBQZ1sLrbHMW^vkCDl;Hi~Qhr2=O&?kP|C*s_6qTawB69;*5M(OjCjdR;*%Izvo#zT0 zRw<8er`;Ok-2h=>Tux#fJ!3sS<{jUKrAi-)147FVpH0bA=Gvj(!^wKZz2?Hr_{fT# zdxA?y)MTK(BD%+_^pKJC+ne+n2^)(3@?v{lGTrS5qthCtyw*I1QL{ zGq?z?sQI5i??8%Q7^SeOA}vBdI6RCdIFCIT{2fm zY^~X$+gG$jeu?PR!Q5M?*E3(+ck#5Ar($Va14iR-z-p)p1mSMF+)NMo+@_Mb8l7`1 z@RpNIn-*@$5)CK+z$W6vEIPq$cqTbmW~WMAyDtOZa$Sh@@VZ0Q-n)2%AD@M&Wm$3H zdKziMQ1_p;v2ot9q{&Jez=w;&!%cm?Qtk3&8Xv7?3Mo@XpImoA!1>Zed)d7o zk)yDMR?BTETf{7Pqy5*Zd?w(fRC|RjMe{^*>yb@` zg#yvK>nD_oq#q>bNvf=BQEtW(3Mq-ltr}0QWR`=(DzNq>;xm0Lr`Br75ybiX_tig- zkE?na1`0?d=-L!qdqp!g&V3znu8&r6W}&FgMdreVqhWc@52r$ARlRKAjRov4UiK&7 zY-hE-Vv%4}^GK8O5jmD`+D{qR66MahRA`g(Ew~G}v?BH(6)&Gy615Du^PxDi$FLQt z21Ao*io-qDId?f7;_pG1@XJD^HM(QI^2zpzu0Pf@p4|inU|m!4oA=-SD1@|vYt<7w zIS%@p3*<i$`NibhYII#Z!5YCIH(8x{`Rkb&2mjrf|0Q?abwK`#kYf> z{r5-LS6(2m&5eh^1Ga}S5uHE-%W)0@XAf1UoBP07_O-!uX4|9Wyw_?EfMj?e`&Ie8 zS4>8w!C>``_(;6Uz+<{>L5B_K^C_m!TAIolnq6qgdx==jxk(!x`3ru-N^inakOf=;o0? z#+8nMy?sPTIrevE7I8VIP?ptsTUy`hoDC2;hd1%l$Bz%)|5C^k@u&c+i+X$cTJ|O+ z-rijOsuN9erm(QidB$fP^2s5N`S&Ts8v+KdVx5e|pTIJrv2=X(=%-JDSma$^u{!t8 zYWf?86vr63UtUEWM~*}l+O4L4)lMxpEC5wq-q`qZy4HR^4Ww|T_E{8PRBYa4z8hag z!CL(cQJ1m-;re&DRhClYS(JRpY=4}6ssRCjGepW8!-p|0>VV|8nNk2$K)Zv_+a-W< z?ma89$!AHPGdkHU#K;!de5%wGB2%nj0Y+YBw5CJZ%Yn_9o(47y$^kmr3+YuOEH-R$ z%8TCKi$|`d{JUr4KGxy4Yd|pj_`~BMwU{jud z?^cJJ&A*S5sZ$#5&ipq&x_!;+P-{hjzl4v;aq5FsFRb^ty%07E?`GOFD&$>GhxfsB)x_N z*(xPD*?ju%!j_r=w}BUiFMaG&97Vxi(`&(Asv^&M5DiCBtBa_)k1)eZJ6x5EC!)%K z34t|2`uY7fE#os>OV1O$7ipT(NxNo${X%Hye;Za_>^&9ypac1#JW!>bFji!lIl#qm zD9`QfvM-1}PvUuWYhb^jv9XzzRUhi#Mz!Ac`<6klQ>UOGc!KYVl&-Tl%M8=Hd-e6H z-oCyn+lL!legogp0cGA)+LsADu2c5rRuFW#C>!jC13mz!e13Xvs&4LQR1OuEp9<64 zRA{#jNlL8@KZ+El+@8W>RRV$ySl5MnPamLZx0N0eX1{&y#)C=}&!vR{9&|9in;SFg zaVRE)SbpEYeOmCvZY+)bqtcebL68p}(>t!)jOKOIE&6|&bXzR+3<*((sAoZ6 zI%yMXktd&G>UW%ZTbJMuUSdV8<)2J?Q&_&c(_e*5dJ$a(f%PS&(KS5^3zQLfKo)&jUuLv|SBvTx;;MRf zuGjCuWm!Q#886~om2f|Th%nSMp_aL2uef7gc~Q<}4K2n!8Ptoa#>Rgauau~)D*Pfz zqHZJ(DUBi$X&?LKByM*pce#Uf$}wDfVo0j9+}N*tq_{3LC%!-BOCs;bbw{?kbK%_o zJvW-UK+3uzL_%u=+eA5nY~fmb9<}AL>qZilca?&K9Lug=6-jxhcN54dYGs)%S(_0 zzwbt&OTI0|daHO%VK0lqeLc@#xX&>-gqILz%0qYUyn!!v)@XaB0HYB-AEz|V!XFK%lzMFQIz)$JO=bxQu2R;5!2D;o zgT}puJ05O8)43L4&-!bLvaJ8sJs7JqFf4dcKv(OFGEVwg9P?OQ`$*3n5F(#I>by>r zY;c=o%S}|{NejAU`*TJ3w8E`Tu3cDetWZJMxOKihssBm zUwBaFsxywo;5UoJQyb~0t@)lr_??!kIpC{W&aHi-!SX=s&+WX zP*RIqm&|FyT%&a7n}wLWZh`+;x9B_YkEc8cT)cDAh>UTP~YdD*ejtDq;d%r-x7ZfLQQ6g7eSMtlm#7E5ZZxvAg z24=*wyGt;MHfDLNNa@DCFxgB8p~POlx{f<;W`VDt@2oqgYWGrN8U3p$gF&WU088*9 z8Dn(aOSXI`s0|hi?KZN0oeCX?QIx4rMNqt+nLty$&6Stx{T&y!9p|jsdZ#{xiTgX- zm1!+P#Mi@dA9CaCq_{b#j5l#2{`~a6j4KD29tOt7CZc-?3H+hJvg>*LIq_S}-4I(9 z3K`7X_-<_sn}&~W{81+LMPbX;WQj%YH$j_KFrtW%}v9dA~woV#Cg-MMA&)L&bM^sQlNQesO2XwF z?_x&z;~^zA!ZSj~Hli>)(&6(ZSr&)o%j8^f3$8H8^+TaQpEv){W9wh{e(jE&Enhmt zplOavl;at>b6Ov&5I!VLfYT_EJBTQHaJMRsN*pR&K}BBYolXlzFSGC1y93DDkWxZ8 za18I?(tU|-9lK^N z2Qcgx*>5d3Jf`M}UYBg=|C759iQq3}N@t(ldE&J!4*=;pD(Nx5e*XN5*ggz3wmO(k z+A^2fn=gKc4gx{2TOylBpp&qAKsmGNl1JBpjcd^%#I}F@AU({d zrYfq}!>L;^vcz%ykD98M72!gcvllFEQ^ZK&-%d(zn9)8H5RhVDX|6%$EJL+H(+*YJ zlB7JkT>j9dWB;!O=;i5TpAn9d$$F(`il+}^PQ%XE1KD^=RYir1Oryh%lniaVroQ`g zq-MyB28r{njOM>|RWhl42%h*!AdFYi^|VNC?1FfoV9!N0;Yt^=ZM2r9#P-}fB9V4i zz3yX8did0p(?5(baG5-GHd`WGh~(DloSf&}zkZ470ZGLbbG_n*>drR=b{ts}CQB7T z9yA_O@ieb!xx^$9NvN2jpv$ZtytZy>rUMTzy5g!(8CjOW${F`ZviGtj{)pDGhMCiV$Gi|eFA z6MkaM;gUXxMVw(Bh5%^ZAKS?-qrS+OXmenhVOd&LU%$!imjE2M^)NoHq_y0{zv)rv z$#Y(`X^o*88zlgs6&o3&zw5VTn$fbvSE-#fPjP2t-JZcKpaot;Y_uAb%(x%gFDgMX!qI~5{#5>E?&!|ULJU=AQbAf|^wp<5F zAgcr9AcAbelnfWzk6bccPX95Npg&Fu{1p1#x0}~MrBPYj8M|@4LCz^rhu;q7AbCo*ar=>JRNQX+BNgN3cF6F zBnQrfk?o>8gROKk7q>Jim#sSQKYUv?Xf=(*-e`Wj*pi%Q4%_S#uqMZ&KWQCySd!+& zc-A_5+?X9{AQWlmgayIuMcR3&T2Z^lbpH%3`648<5;yE4S;39_I+ev3cV=i_okzTP z?ps_qBD`YE{87wLco;B`lcBYUN7^wAzW`?@_44?~X@8WIH?t*7$TZPT|EuJRiP^ua zL)`35R!7H?a02Ujl|Ly@c20>IwPTJsTlC+1Ja)8aElHLYqFVsRGxxQ~wpKg80Ym@7@n zHZV~2nN!wPht~t0uVe%&UO&=Z#*{PDc;nEiTQi;5XgF;Iyi7k()%y7dPNn40y&QE5=*tt5{Jtn{KYsg7tR04~BX4!A zLKkKpUFec;{UDmWcL*chtYx;f(I-L{JHBQQZ2oH+-gC>A^o=ooIm1+89qaZdtM=)_ z*77yPemMAiekb`oy!9ixu-eMneKb4AShHAOq$w-PGca%ybgga5;;{P7)vQRDmQITE{CP~HmE(fjG;)(S?J@hN%!%MRRf+*PM>?1Mq~ z@fo2=VJ(sdnFghJt3pS1`^W9uBY&KGmn}%4C{2C$3-Sfc+6;sr#QipYloms0wJkbk z4d($i>h^GWAWK$%9n!P09M5RAN8Caai5e-F7n$9H?#NfVt#0bS^r(tSX~RSZ+*+{9 z?1G~yzh7kCjwj&d+=%~ST`xa7&ExvWHp(%4(qMFVWP-w<#f@uv@n2kRJ1jW^GBoCS znxys0qst!2R*UNVfcEDBocY}g7){5MD;#@^eS{c%y3S|t9AFyiVjQ@RelpRKD&n zO3^?1?@6`>4ok8n>ac)=(~^1leO5*<5?4Um_9Bjd^xl8uwxYs1f6V{Z65q^r=E<`D96BbL7w>p5>zO9b zCfc;ssx2!o0!oRfxaImidS0D-Flo^x!a^W2-+_oZ5>DJDPZ7#=+@AJ10rxYDNTYTOz zy2t*u^z9`?eP3qG$_5|H)nI+Epo^Yinr|M%$yHKxnBN8xx}PIX3ub4uMcX08xP-@!wj+bFjVBW63wr6jpeknu}*&YgEo!4$}# z=Z=qfa9g3#OTa?|Ic_k>77f9FeLpSC4z0$ye1hrGiGmD16%EF-UpP=#zv?>WuH$o& zpS};N%n)0I?udMUWRLqBGmJW^#OHb>3d|i6E_X|DY%?@`XR^j`Le;p)J=;iU3N8Zy z)?HZ5F;R;rZv0fcvrn0~M>UxtxM>U@(=K->UzSn#QgM4E1)1~=05^eH1ZGTePlvKqW80&c!{Q!ta8;ASCmY5B*pcTN6)36?%4mQ($YIc zCWlO|&+$O@EvN&d_^;Y-3i~kmKC<)lFOh5nBYmrb`0fQDvKk1*@8#!bpm@y>S?NSu zrjS^6K{J0%U#RY-luKDlb3mJ7iv8;NB!JCs*#s zVY@}sUoAnKU1=;&#ksZe?(v`j6t6p4%kYhCb?JxOgubDnr=@?GPVc;c+UmQpG9iK> z=4vF5Ruw0hioGcNdM_!Ooahi&vpY6FxT>+S13aQ~yNj;P(wR5j2JC3}5PklH)ky3@ zQ!T&8B;P)RI_?`z#N4{hDsj=I`*YT=|E9X8wk)~%`6h=}HbpD!&CHK4OMZz( zszGM&mbbTj6oh?Jf*uO(a&b1Ve@}?A-&?MN_q)a-Ew;*HR0M!PQ-fS~?r?;CUxz{R zC~vd$PZ>H7R)ZIKJ1>+SnFuC+cK(<`89ICW;zKZ;^YeKt-!q*;IJMeMjEQJZo%goC zeEErRl1b6uWjhscZu5mF6z;0lcL7%Vo;tpLzqwLx+!&WO=*Av#h#X_sUIW!>9!~GF zk6}g`a}*cnJ3_VTvsGIR{+rcvcVs6$tQhvb(mHx+vxaQSIx5MZs;$vGPwSi71!tta zZ*~b^)6G~^kk_S_ow47N{l&cJU(%nRh{K0(6U0j5EurKcnm<{)k)M4ZY2_wr@pacV z!ky=b5p{SGb}L(0ku*6D=iaIzW>d8N-T?%3pNfY65fZnGC}i% zL-!Lr;4}k8wNZ#NRug_ii*`w^^1Z}CFue^$C2gk8>K^TE=v(!ma|K(B>3vc8wYD6qP4Ua<0W(v`wd2EF9WRQ!myXW+!5ytCiYRg?65r=9mv zVSa!UG7bqUK@QUijorTfNaxH@qwj`w>nfHMyS3Uxcj{y%Xdghr^r&JZGZD!zXV6`r z9+<7`mYQ>o#IH%bJzirc4r{}bCegJ(Z*z4pr*)&vo9MFAm9i&)cL4p3{Q5M{2Bd86 z?72yR9OcRV#H}N#pVP`D{<){RZOje=0lr3gEPEnn6TdlpL453c7o_RxSt5V$=1*u6 zziQvhD{P4$s8%@}WkA|iWD^K32S_OKetZCqHFXl(O>{9=n-_aZ@r5paV9QlKPo0uA zLEwDh+J3?lBQ*yY#wG2J-|L^2Z*R~R6wpgN@W@R)KOxFX{M>%hrs<)^nb3>rfj<@| zvI-Bn=Xkg&jio?J_NP3=kvZLe9pXZ5CxbW*9+aO89`R~rj{zpImnuRc4ion>N~3ni z9Gwawy_F)-WZW3TUO2aKZaLe#&C%<1ItI_%Hl%G=JPWB>X?69XPK+W*-!agm-?%p! zro;X;t9bILmRlugn>Mkj*USd}$9bWA6p#F_GueGu%kjmXdG*!1N> z*1hrCJ%XfYRO*Mf$LJL{mUnV?NLV7 zNj))Fz=j6EhK|cK_4A%FHDsTstUh(;X=7^6zrs#!=IU%&Ce^@_xG|+wZkSD4vic&r z>vgur`@Zy9$@UYu*WzAAP0feWWZrjo?|`10`z=qi@}X@mvP4C>pSiik{M)He`(0ZR zg~&q~ANuEuaR@};&{h^$rfelx?0fZSr2_O&ykL?y6;gWse^QQ`l5o-^$N0iy&3eHB zN+GBdqMnLv`&CM*D&{E*o%?6#tPvY1*masJNuAK{WMU z!1m_w6BxGWz4QLrh6W7YKk8ZmP@6AVcl4gmlhE}EdxA#@@W*px-2;JjT9xI_cmzEUC@a<5J zw>rjnx>*i}LRSl5sX8UU?#^D`%a;S%&4523Snjg~SJ#_FhsvKEIk~w5ixGof*NF9i zZ+x%Kt!oy!kY&Zq$tecY$=Gv%WiMUY(5Il;Ew4rL(EF1dICy24MdJ!$Jye_bR^vUs zUtZpfk&Sz{DGUf#WCvX*CtBOvTQCtD*R4wr-}G$#@T;@^+gbBYM6+pjR=xS6dDS^9 zDU~q+#uigzD^s5|zY(O4-;&q6OJ3BLuNmiIUIRL7ets24kg>%)?0(Je^D9{=1NTkQ z7X0hs;h}?8L52?4*lb6+4c=3NdQa+l>q;^eAnHuf4Yrpsam+O9@GOY5)bk+-2=)Wo zyYcoZd-)$4#AD~%v-pYavPA2|%a`klLRQ`<88b-BjP$F4|B5=s81Cgu{b|%S9@J+d z#2>56p9mtg^fN(7d>mYPYT$n$D*k2z!y}NtMR}<3c)RtZFnVS5#)GJ6ED0wkBsv23 zefjh$#u|Suc3o%OP?~};<|mk?YWtD+YXD-_km}M`!KfHn6a#&I`)M*~Oj8-CYH#l> zP}Oh@ks-g{GyB%2+&w7<6Pp18+W|Rw1Gx;FgWwYZ-OY?0cG*Fu(l7~L(e$0G2|h1n z#Fdq;wP-iu$+C9p!zV5%RIQn;DqWQ)xYtxqY|z&(V!6D~1RHHvI>s>3zuV#Ca{2 zKKt=Il;i9inkI?QkH{owd&9*DFRcujBr!U>xI4dCS2a=9rwunDVTz?10b2Y+ z^AMIoh9Hr#r?9w7{+MRsUG-Moa!r+tEg;f%+f)jlwUQ8$*tILb?_0$?jvu`{;ft|O zxN;ZjY%44BZ6V5H{eQ#J>2sprlY^__hrq|qa`;ehFsnV`LwsM-~* z-u2Q7uma-BzsF^byV69HOlQClxMS2m8j!-E08YrjlM&^$0O__*`-yX=zXQvYbp;Z> zA>b5Ko5%hIZJbLiH9W_WAfXe12GXHfdYXy2k@KbKpkL1cHsY-2Pe)&vT|f&TW8^5pW8r@y8aBv-)Z?iiRp!i8PpQ?IT?vMN4yEZaFTREn46+ zo%aC_8PTnyvP?}sd0c6%phHaTt%rhClji?in&vFRE~Yr*IhrnBCZW2;?LyYL348X% zf+$6F(D&==TC1w62*TW;8*O@=Ho633M>V2^h9xS(=PxMx{1cq_X~{YzD1#kND@rHD{@g3S3_K&??*iI{^&x zS9&?E0~N+biS36jf-4z$Ra=mgF4VCZ!B0c)-hH{@L=}}Z(T%#lW|4y!ZygO76hBn# zNAou!$DnE32`d}5WRVyajqy;p2Hlx&p{SbSdkHwWEX$z@Zoc1y3})qRZ3YiZOCKqX zsZib10w02Ogf=jG!Rc)4cImJT1W-oo{4$C=hq&&*+Si{L*WFjcIvi{zKRL~-Hd zf70{ydwO7{XC)K2bqL@~NW@j7>F@y`>=w!29&^tFK5^8i@@>pIiD;Oahz09S_bQqE z#j4!W1D7+74_-j>&;^+sCt5?2DJ&`|E}GSS4Hgnxq8M@!qk1JwhEhP7!sZxU(la)j zpfAM6q8B%%vwcha^F+Z6#`XxH`*h!w12E^`dn&F-T6tBXQuUp1{rxV%7Q8{`rUZNi zr%X9Nq?g$Iix^8#G zE-eMyw&#aeb7;!MJ!Nyaw&Q#j30?E`=-L+l^!uErP4m}8zp|c@^KxEZN5sSLA|riP zLxXH1u#Y55uGvbpa-sL6QOVcaL%e!HnGsP#kPqVuMa;h{LgTU6Q zkbg(6i$!rKbw%7ZR@%BDcG9K=G{kK2-#5;NuG)u!Or!loOyKlE(v)`MT(zakNe1+` zIC_1Dp(WQT^&0CRPFsWQqpT{EU}wqf3ouS1LmLz|Ucz|N+O+4uRV#_lP`^n*qTq_| z^zCZCh~ee#n}5yIQ&N;aWz2W-*U>(#@#68ey?QZMhMtFsv9A%zuGpp1du6b*JS{af;7jfFHNocv9yU_)-((TD8V1b7 z&|cshY@ND5bJ`yBCsa*NW=lLPbc4%CEm| zUPQ}u4eP&_&90c{E{?Ti{ccTFiy4uL%aS+p18?8$(4p&7PS8EXkNLjo~> zaxX0Tx0hy#Tw-aVv|>v20rv0qKEZzm2L~U+1!ZJjC-Dg&vWVpSKl7yb?Adj$`GW&- z-ml#t#`wj|!d~xO9#|WF8)^ve?et{6FTDHI{$4?s>`zA) zmW((Y|ABO2g>wW1<*1Fpio~1GN3uaNoNeyNv1gGuSx;7P)bI9w z9u2|~hkN?z&=^<<*f~1>g9H2WHPc$JhWo>2W2J-|%Et&(qykrUw>I)((B4 zSSQcsc&PBYF!Ii~#gGTY9v7{>*&z&!+2`mVF$NQWjg4*VnMcEY#4vx1T6#uC1A`=2 zWcgeYhEKn7@4P1cZ8qccp(M?I8sX-4 z4i>InULherdHFx_6QR+#B*vv7fcgE4$3>6j+wLQnh>{jzheJnE7h=Dw*AZo5lzVc&#Dk*B z0@3X;N4n)5Nox(sES)+e>}6A*&zp7Y_UX7TCODElRDt-yVe`P!>jQoGenDX@dK^SN zENhb%UkIqIc@uMxWJ3E+Eq_mA+?mo?pPz1GGeuRa8shvoVwfrR#4tyD9&=ZYtbK~SvB z(Ax~=rl;N2%bu*3iFX5u`;JRl{_PwZWbdt_8sxb2*&YAVgQp)VY$3Qe(~2iA6T?)= z?@aOs1K#+5VSE5SM+*MQ7eg+5`P`Ovmhp$+HQ~rKjH%KDBzV7&0$XEw0fvMw{Q#bh z*)Ksb@85oWYLBnH8WCEk?6bE0#IU^1b}W87_NO_L@6E+5=oG1lf6EK(!_qzr?~dN= zgw)8M`s@()A7Q(6gHvRxUpyDnI~y)XmS={gdcws40!n>+zIiD@@+VJpfW`a*G(p=^ zrJl^p%qmg@D1S(B54$({yE>^WF__64xNu!(O(hJLPqa>Wae;26#HPS}>J0qyN}6S= z@TILe8(qZV$`P?PLHllAjVxUC9|nxRScJHve!u9{0g_}#dwZk;wyVMEU3>5VfA>ITEK&sH{>KNhnl9Q@sC<$D-$^vPxci7PXe@G?CN=?&N{WkpkUkm$ zM=TUSCK&GeLJ!VYRnX;IWMObq6`Q1~?zZ$SrZ3$rWA%5K9=-b;()V=c&*H3xQvX0N z7a1c>n2{Js?4Op{v~E=$A}){=vHP0h^up49;ui8Cs^XK-CelpvDtbCQ0S62Qa(clQ z4v|HW>2gjqfGs)<<5omfoz@rH(IhG>w#`MJd&3xV8>d*1F2qw?4BQwa$Pfk-RzoSK1Uc7Q|g{0AsJcS%X@4RN$wG;~IZ@;_ey zOUu`f9zDtuiMzgP_3C)TwWAEX0q`*Uz#R$?4ps<5MC(V7PpQ~2#BmhXp^6KKO0#&< zrPEy=hE@k~ihAF4gvH**RcDwqO}xhdt|&rF_qV@27@iuu8f03;9$&7baawmG!Nu*t zPE!>h;P1Z)NYD~!vst*xM+gOU_4d}Uk64rqM=sZ~KSm}=vf1(tnE61Z;+G$qGc>c{ zLK}sOE2+|pa;^m^?d;+o%aJ=b)uD9ugY8}E+GhXuSvcH;&+jSE)})o{dYp{j%EBa) zEs%clT>sT*PY*f8(Qcubq;<{4w}ey+?7a~|6*2jlFivl^4oJ4Gd~Ty5^Jxn6)?IO?1C_asbq>57=;mg`*_#C66*aXrhGssr_tG zzU)NfYmL6YS)a4kY^8>X)ykoRpWp3;3gU?j$|lr^d?{_^R>i`q<{GCon34k%;N@ zgOczmr+wEwnpLFLMUP0 z_OtT9hYl8+4Eo}nwR1(4-!%P=1ORBu*&Xz~Gq4(6a5S@$ek#0_i;s5xDYn=i^MZ6c z$37p}g?8fWfUo1fdM$0^0exDKXY_7f2Ctrdv*2{}`8Pk+B1m*YPr z#=*^a&YA$KMfaC&x%g~7u^naqX6jEYo@;wUieD-(EG_?yt&BR#AXLcP1!3COEzdWb zfa$>ib_5vle|pbZfu48_htUF#TMWSe#iyr3dt)q4krp(Yh zS%eNqTzaMt4An*dFzp1&gl#T6o2Bu^dR1QAV+|GK#Q6BIVMb5d>1_9p=HJ>_`4{1% ziL_!#+d?lduNu^O_t*4J^0KWt8v~rGG*k^8<9V6ntfap|$-iSQ3Jkg{c(1q42g+G; z?F;<0CH|?33>{_;3vJ&!;0^|lK4qUC6WxY3L2b%8lOr_ssua-0Z(HuI4)lBZV}3EB zHMuF^Xv2XNOP%63spZars=1Y)J&UthlK<``=A3Dc7g|Ol;M@~S?6ztK-*H3m00)|69Vruh(yVLEmQMTzd zm`ZGYExbxzMy69k)PhCho6XvkERWO;gr=?szWO3wZf0=ICdBiN( zVl$PoLv-}^NmuFy5V3Fi;jz@x4>P_L%pH1NRy3_5yfM))X!{l9)a_}%z#snPIE z;?}dnoMcONKiw~n#>el;%F0rM|D(ME-ST^za_gD0RIOd{a(AM&x-|Xq(aze{F8WGi z8N=Tm!^|-V9PnsGm;BLy6AVhKIQNFW_FO0FXE=V^1&ggUvB^d)wmN2|=FD3bRk;nM zw_QmK9tgI-N)U`GHG~wy58}|hABgoxwUG-B!w7s1So(YXKL;z%ZfrVydmc64BjER{ zx3y04-6}2Ed`msCTyfRGH+D!2f}QK%v1{e8@7h7q5&h`a9oavB|L&2z-pUnnb2qW# z6bf-$e-&(R?I1UpH8=t!sIe2Gl}cC47#8^uhF3C?xMEWS1S^y_CvN~}UUNGe8vz_+ zL~4|;t#P$6TgK$~>?y|lqhb1JRo(R?vd>BURo1cC>ng|T;mMdu1VE9}-76mF zypyu-?+)ttW`4mZ%DwvCb~#Cr%BreMy*M#f1InCapjCS=SOPhfRH`Vn+M#f6)jq#p z(QiM3IjlmM!w=L}a|qSzYMM-Q-nc6F1{b;&Uxjtxac)LE0!+X;-E;zq{2}?tL>BkV zexw_{xghiNzkYpw&r#a^VVaRh4-(^_Qg++l^3Sfl3N%avH~tt?VIUu8Tmc7 zz2W6MSy~ujjSYTEf7WNeUVggOk#@7{R^6%_GH=F`-rmj^lcv*zST;>OPHpD!GVF^s z<*b@jQqr)nfLY@yxX!)*gG_qJGPh0ItDC)q-ivW-XlROUz1kc_vmH}&YF;Y$lKA;! zUS&H;|GJzdqG(_VO%<>B-=6}4t5>+Zgk0PECL8~OCU3rF>ICv6bLF_hF@;drcf8Z*S!LuW>-oxo>KjmHJN! zZN9+QI$Bo5cqjEX3~QfS{A+C!h(A$x=MJ;#&g+<)&l-yeBGTwXunGHa1hsW0rY9Yy z3{YHJ-X5)7RdVfjb&v`pL#)C|Vg*&iCH1o*j7awd^4^v^U766X(Wd&oxA!>HhPu4n zE5S0TEv~LS5xQkKy)MIZr{txwvm-vWCZ*LD+JEYqL4w^$CSB3$vZ(Z{8#rro?ZQz~ zvTk-4&WQ!ocK@;_fA7%s$g>p9X1%3leS6PMsbe*=T+^N|r8h8{?b(aOS%`Yal*hKk zy!!Wf_Jn8ZPr94nX8!cq4{i_d@a9``@!xeVXseyhVVvJ&5=|$u!Yg-3TXc#|(|_%R z8nbR5;;!T~s$dEZWHjvQPc&dq`q+z4)=lNbWF=7kmCY%09|8+LD^8hW+yw=en$ zZY~{2Psw5Z&-(1|^}x)|;N?G9^R{^5ms>3CxF6o>9-CFJeS|oeJ;$f*nw8yCg;2=; zKzsr1@6f+xM~|qef1Pk`aAa8C+p=22Fyw2K@*(((cbA&l_b#8_cZ$IwbvRY!Na8&28CF+O|C=h*@d(kE05801TEDY79?x@Av&!SE@Dk<`T- zIqzI4^gV=H{?1dV=U;>B9c5%>G~iWQs3a>d|GKWW_I-tIu4ko*Za6FdT8!2_tsmxb z1k?cs&xJaxdMI+K1utIauZaKn!|!}bdY3FRx;IgubtBoNVr6enk452i_Z0+Ucg=vk z7C}b*G)$%ezZkxV*}1PnT}V;)1dH+3DVqSI(JByw3efbc3TvPza==hej~U|KZNyy( zFZq=O+{r)WCTX!~oPP*mQ$V4xVa3*hAJB@x+L(>la>@MdA0^XNO?p`jpCL&UGW z2&>!GExc|8!Gkit=s|ObN2(jV=01LZAVGSJ`NmEZtEo90@PW0xFs5!|l~K<#Mq@k3 zB>&2mn~RH$sVQU(bfdP2JvUq3%8eRIjB#k3J1m01pp6o8T_DKDwm7FoS2|Cog4eV? zrV32Fj|}PDMPrfI2BN_nYtAaT|6szn#~4SrlIUqQac*vI3NHWT;*U{$@J2r?r!`LH z;?0yDnkHROojVnq@87v|hBf*XG}D(QcIdU|A$ayvG{p7LNux*OgXMBaa&j_n_%yKm zY)sc8bDuVkd>_^q8i5!n?bVY&1R!m!#|<}furMJ!Vk5{OzRKk#90BEJLQy;7KA!pa zyX0T~Qh#`O_zt287rXbSU!|eGekh6mHbcWAoG5rnJjML`@FV8P50B3d&W?4A;i+D9 zx!DQh+-$pD@rbh(-ckkxgYn;iHf+Uhx5Hjf@=HZlsOd(C%vU3_V^C(@oujU$b?UH3LPUv{ZtuNi#y;~N_LnL^?51XBkSUmXS?kUKNkA0Q+k+6FZJS9Y9YZwN+daMqQTHSznmH&_N_E6vcN0M-pal<*4#q9x4383 zE6y5*BsWMm0VG|K?BJbup(IjamFPQdYEz-IHvK-kNVX{T8HIQ~wJi{*@MC!K^jIu5 zeF-;odCsKf)0UV2I}L)nqT@p+kM}%Jh0`;(v0I0~UL=l&>4^y z<^ew*U7h~rLpcWlf^w}1Y|PfJRI>5g$g6e>+VvNwGM3^^<1mJCkl50pA0m{Z?|ic( z7e3`7u+!JvW%qz=@94;v`CyS0wbnBM*Ule^4+y-R}PXz;_Y99D8d02UO;_1yyl8Cx_v#an-1 zqW=}3wY>;C_v8?^Ag`@b4(x(oq>uYx%||T^9IvrFn{<~Q#<>51;-5n`co^Ski;q2SpK3R(KRo>6_5$)FcJD(k=gd@9?0nhAGsJpHwtXBV-3ejp)=eUU zYpfT2I+p59_GgZl8s2IgA)?hU}MVR?Ton%)w{wIYZaf{dz!(e_$HZ^4*y+STqgcmm7!*R)Ub1n~zQ6vy) zvEnqrkc2l3g4v7+FX`sJmp{8*{jryC-Kt*E?ENuhv#Y_+DLXpdU!$V3;r$tx<&7k> zg*v>n7Q1?5-20gDjCH^yh8j>Iw(s9 zUi;YMvTnFqzv-WZyO&;(&~s)&nqC$|-dpiZsJ|inx}l*Vqk$RgD-}yqIwrXK)~?jP zfq|)ou!dtiU+i`rRKC>LDfashvL7u7C&m$9fXs@2CoD{os)7gH=8zc2zdHvn&%vMGJ9A*?rI8IrDs?^4WM_|-Ti*AoE7Y&6%3ehd9`imu=G9`c zXB2(4i!9~VMmw3ZKmCI&8BXGsMC%WJA_-1PKkvRe6fdL7N|Oo4lJ~E%J4IG0o%$dM z#?A}Gm%u7~eThdx%}&^mt|TInNWn{eM)0$+QO{?IXt-YuKmzhXpkLp>+?%$1$AVAv z3=i+?Zf{aJaAV5g42F3#seI~T@&`zHRz+_bGq$%EaN1ntYASy%=;B>x?-}6fsf&jZ zqLXM-dFj@wSxbd8KPVfxX4E@VvXXpe)%Y?}Q#acTq@iy5`0LlNs#Nox`+RBKL=#d# zj$?N9<1F>?FkYcMj2)_*LCS*bDK&owZJ9F~0>K~aEB;s)W@ zT7S2_3O%*Je0m=@|LYb?;LfW$_Nu-qSr~Z^+QFjxqjl*THr%*>Tsts^aCiHwkU4~QQj#k zq_nxgX-sS7Z0Sxi^%1l$&yScMDzZeM5eGn|68P;3qGauot(?-Oayh#B0tt#;Ib!?O z=PY|}ZX}upClwUhe{AMXdmqq0&L5*6m-UNRJ?zK>kPcV!2Z^)>=;U^T@ou)L6ouJc zT$1UUV>a)|)ZE<+qtyEu)UysHN4Z;000g?0qX_rsSIqmi@tadg90yGLLod+39s)~6 zMbqR#&d-d#DYr6-aE;M%?$8{e%`r!9!u}OrflxFN6PXVfIH_IJb)^svuZp`HwZqu*)rmxGs~g53GrtTxeQ?c&y9Oe)XMqbJc>Zv(o9ln%+a~1#w?M& z)nOV94!d`gl4VWZC(?*OLE1WCg=m9)GU$YF^L3X(6;>aRPbh4TpMIpLn3 z6T{E13S-2z;daLA!SV2`aH*)>*26+{Z1ACyJg$d8EoUy)OyWmDQ-{oj^0KlYMqd3y z=H#*bJy#Ey%t0InSlF$ciGE}9)A-L7Q#1!Gdj6P~c%VSI{GFY%x?T_V4-N{!gwJ3v zEL|^k*c@cOZkXE&%wlv18D%9Rx&(jHei8?}=5wUS{t?>!TbA}t2P%f?@1dC`VDa8+ zXi$%RzkoR2`k@)VRr4yzC2X%?P#SMKfsItFpr^K`w3LbBvNq_R_#4m4ibqbQ({bj9 z*1qzrtVIO(67sY3q+m3d1@QB4n(srI$8r}tieFvyXD04jNib7JiVPn=K0e*=Zz*=o zv+j1DN=Ew=%H#`vhFMpV(j_m^UDB$m;f#Fg2{^l@PlXMFEg6r=##=-aFcaSnv>jdO zdUkTQZMW8?kzamF{mD$Y!EF5Xb-AI%Fz&sF6bR0G8kuTI5CuIp5N2NY9eQX_ryS+d zmH)>+Kkw3%WEzN+%4M$aYBTUV>WJD{-PZ;<&hT2!*DX?%2Dbrrcx-M%?!bXnMc6h)dock#6#K>+i4>~Gg6H@x!<;;ea5@A?K}1$-DD9=?Aj z$;QASgj)0swvVE5&T;~wk|rg+$6BJS(%M#Wx7-F6_nXO$HpP5u;@*tKVQ=r3KsTp0 zStk#fv!4}?`7;Moh<~B~{x0(nPSM+~27Gou8SzK>n09PyDZGj4{&sWnUMMrJ;~T8{ zvfYIJ(a3jTBt8cw=j#-F7+6kP-t*jyHG_BsWiVd@{UWmN%$z*SRiR6428K^Cw`#;U zFjy0qTQuUoFm0dT{UsCc`Co=9dp=KWHz#b0cEcL!K}ensaq8m5^{9QS)V(sA{O!OY zD$x)Y;%U*8rgIagwv#|fU6>gfS_CQ*1q+kAB5R~tf23h2o_>G7@rV-V(L^!$pmDYM zkN-L^aI<4I;wvkcizy>j>vWBuUodtZe$U#XC|Ku*5Vk3;F|f$)h{XMR`p)dO@p%*7 zWzUjX6|M)Rr7}Jd5o#dBL{`dFe{FIrKe>!&B=u0+lFaf5x|#DGW6ad^kETMZgA*`T zKTdJsaqQiIg7&e0e><$H`u0Ej66CBw)=$tD%=!6#fO9u-3Kn`6jN1!qm|lIVE#%xc zz|&zxg;iT+R8_^PRSh<@X?8Oz%Uo~FQrACBrRcr;RsMj&1>ZORMWF#fwy5fOhTz)9Pe z{dctBlo0bl(Rr{m9Mz*BB0XU8#Gz!NGL3}vR!zE*a;S07@6 zIP^?+`QKc=N@UXZ%rT4d^PF=o;J`ViePIQbnu9l&DRXQ{i)1aDy%uBcA%+e8J4?@9 ziGtQ?bm0EZSD&-b%qhoZ-92DJ3#rj(1T(@~?_Qmi#2ZkWYneyt+OK}3Tk z!IfAtPnVd|+C?TQvGSh|RU3RGf)F%Ii7k^Ta+eu@__p37M-%otxEd9N8g)Otyw*Y_ zE+A|8Hog5z5G_U*6pc79X}&8)sDKZ*ng0TcGV zxciN3%*BA{JAX-voXR+jd_FJn)h^N$rAs3YEq=YYv#42~Gmo~5#68}>dgt}6S786x zl|GNL|96aA7f=uQlBv6-=_t3R81l6m!`KKUCbRNC*!FX`Vtu7qP;#5wf=G6Ha?-9Q zIpzqo)F#%+Z8*WhbrN}DUR;@>NPH{gJxJQ-GiIHMhi72G8kaQ(%fphKtz%%1{t$>+ zg8}`NMXPeVK1sRqv=`anJ?8_Q+;Fq|hHCqSs{IVAZP?bF&@}lCu8;Y`DaAbpuO)bq zqK+5VDZF0fz@M57s-3}?f)R3{c>&V}tviakqP@m*zO3+H^1Py#$u}Ky<8%)kK-3=H{EXFQq)=iJFpzHFHUDyDz*zzL z;-+c7m;x(;E@pScyie3)1n~-Gjv1Ln!9q53Y@=v4&&G%t<7Al}&wohC+bWuEi(i_u z%DDRK`7>0c8TdfXM(aMWqLPxWG$Dayi*#RU$P0Ud> z$eSgPtg=w{f+?}iGGeNh%cxp3fpSa{1FMe4H!yorrj+ffFs*Gbg9SSliUST?0;W?}Z4 z?&!sl;49sn)o=>uZbX2w+4Z)_V4Fi*S-#{1$mr#Wbbw(uVamd73%Q6|9$ z$gC<@2%orUrTQ`uwmpJ6JUfQAHo+om0VirC!W8y?Q@b3R$=BdNLO;v6XNNzuaw-<) zCTcB|`#mdKQ8{CH+uA6+nN=b#>&=pX@^(Bwl{usQzkl=BbGsB4wIDz!35Co1*B_+m zgCi&Tqy#o!*iI`I>R9PgZ(GvaAs@%Z!!rtlDGo$BX!{}+)YTjQzz{FU zHc7Zl!qzCxtw+m0r0yhIVZXIvdpY^|E|a4D62=zCO!{SO->xdU3Q__o-ANuXiP$e5 zTXM;FVqOI`R3#{MFAlbX78Z*H zH%RcRg;8jsoMMv_O>1|_o>!a@n1}t8>$w5B;5V4{4Km8}) zNV=%;Hj)Unj@iAyH>&50p>N?};g1Rm`c&FC^M118@{%o90!;8r6BMXxX$O_E?#OI6NGV<-G!# z6E*A7RLIf=vuzGfFw&Mx&_?AsP+ebN_~jPMuX*+r^c%e&{Kjq9S0BrgiPM5N)m~7Z zD~nt(UF3zT^Q*BgGjey6^o7>8jE(TaNOU`Xx&O=GcblmE?jM@WbUDz6zV`946Gr=5 zh7ocz{jrOzG5Io{GLJ5gL87g-#Fo0}M?7oXG{~0FM~0|CdK99A&(bz$7eoboh?8W>1A$`beIs~2<*K z)s53VKO!-kC)2)f57Msm#{Y;@sNef;Z>p4`@0wM+iNkX-&*Jq@0T`%kWaVdo3_J(# zpt|#}v|%6wrm7qXA?`UsC60~7VNKV&zs&K+1bC+Eglqn{9$1D`NX%4`u^<%-ww1+> zjSt@(%ilbllKP^nD-n5Z>oaIvL=*BMs3hyJNv7V;VPUn3I9S*^X1CGbj=IVBz70G_ z=k;EFSLB6LU^HE)i4u76-FbBgii5rb0yhHR?;+EvvMiBiY*?HOwZ3DCwkYhyo=|3S zb@?4gT>xuutT=7$)?I!vR}4>?83Tc=Twc{xILzf-Y|zN@7C>iqOlh>CYcyiNVIdDNKL5 zJvW$N+((mX`R=x`^+P~Slaur}Osq|%sd`8#9?&YgQBZ!D+aAJFdz9vCqUW^3K~E*g}Ok08ZSfIeJ`X$IcaH&gL8nH;fh&*zbj;AXHYs+2A* zA(%}CqXk`29%FV_UX{D?`)?cb(I1TPdMJ&ks~0@{_c#0t9_$wYlu_|y8w>WQ^MLy8 z>hNUC%v>UcUrz>KelsUXW!OloM7H28qquZ?n8$}P=7p67V^!rE!Vev~<7Ip%)k)E} z5b$!yCYDW8#vjO9l|i(Dytx4mrt0+Oc>zGz8~E>XF~`DZY6MdE2UZ0=yTs$DJ9U2l zeRO8^-l4kVB~y35cB6t-lGxIEK_Y)d>G(9a2I=YTGkd=L{28*1zv6nE+fGSr*HC7( z;;?f%dD7lOa4eu^4pM&Y__?u8~k zh1MLLGw;0nxh%kX`-sNiUhC+@jbs)AIc2aoexad~;b6J6O)6_!n`^l>D}P0<^AV0* z5#4(Gxi>7-^D9@JE`Om^3KII%ZmTT#c~CLJ8%6aV&zKu%Y(-?y$2@bfeAhOlR>hAf zg_?Z&DCoz{fa2&`A|ZuOZ|(&0sY#BhI;tVeHJ8@wb;2J>!d~iC3Dn7}9R7WlP zjbna(#`CKtU<#L%<1M}B9sERF*f%$olVE11#_$3Hp2NC{T7^aScmB-kjg~6&mh&sr zI?$6CAM`?0U(@9LN3;h1S1}wwp7moG*_rW?zXW0T*>xSwkBZhIKpIQSkv!Q!6>PI? z!`7arFa}9RlMFd2)1?t}P2UE=8}heLE#{oAEw`9>twyDMo{nCEr^1@^#J$rcCvP<>iSwDoC!-?EVzHW^lwh#0CkM zM=kK|1mw3pVA#wZAbEHkF0vGVOleGXfN$}cM^_>+g0ax_H8>!!sm((dz704lB*Sry zFBN5E{HM|Eiy=@=87zdflG1smrta8rQ%^SbYF4|02?lQXyi*O-<7({+MSd2=7 zD44Q|nmZj8zKL|Z*)UGXzz)uqtND*~cBN%2T6~#Z>KLnjR%8Lr+$n;m;cl3}dC0*75APPR?QsUQ%UurmpKp z8zt&exHG<}bEELw@T+c`ll1tj$@wjkotTsVzA6&;YWjY}CNM?N3B+u*x(DXPC(vR4 z;-#-9@h`(!UZT~pqWBvK745CTKSK;#a|j^F_G-%SNsJ>ygJ>||C@F6ARvhwFX`2(L6XmIfTqUok34xE}r)8u{o#v`=R%2lgVx9vfHb?pK) zG(f)_zjDQ}@}B|XKa*b#oC?j^nJrrqRuDDXf*+YewXQ)aMFHqA^Q_GK5WA~CO8>gp zjeI_HvccJ#D8!!+epcPSUvZ*1mwv zg)9;#!B3o|=QITpc3)Dpz#A~=V|tZ=a*=NDx%&L>dt0HH8{s-QoH52G@#hOD5yaK! zNtz@Nw<(nU`1y|T+qjz;ZNVSs5F*62Z5w|EyDpKb>4Tuy%5#6Z^RCIHhUeF`yyxG1 z;ecp%YWORPi&e7g-XQ-CKUbg;`GKZzH|qU|X6&ve$*$qB2sjGg++h@}TEr>(wyVtR zH^3v{yt|GOZ_E5-FDw5MvcnH`j6OHSKkf1mi`jBPmKgu2Hy%`5r7nVWaWi&J1&=#h zp_o7{?29~urw!-9WPR;al&5&btz5Z4M0Xr--*pbnnrE{S0~jeS?EN>pH;B9Q_f(3Ddy=JKoH+U(=qfm z%QLT?SXi>hSHFT^@U{Y4(r@FPJ9cMR+|9n7DdUDEIdLNBVP$3TJ;i9|&^M>_MI{+< zirIx*Dfxmif24h2-~r{y32!o2HSYg7=t0Ef6nsk1&Atcx3GPtJ8SM?Q))sX>X>wcenr^3a z=>x2pa??CN%Yw=~Y;LkCSKfKk7b6B!I>s8@%1?yD`an)WJwbb&NL(2{#(e%ATpzv^ z^yH7lOFgtYG#gfVaS-QtS{nQgmcXTkR6j6(+Cy-&35lN(x^8fc3v`ruD+xM+8HHV~ ze+q48ZFeirQ`rtK+cnd?pd`cGDD7<17vJ5!Atenw*VOaos1lQ07b6-RqPp^AxQY7% zJ{U3>-q{|_p;?M8)8cMcIlaF>y$o!1M|=AL3kZXYS3&e9;}uuUsi{GCr#D=f_SY>kC=r z9x`M?bfp$f&tkEQT^q1$@n7awiUV0FM7ZCMdM&n>OazE8z3%b>Hi6$-KFlsQeenDC zJ+$7X^ThGv3&!M_9-AV?6`bigia%^$fY7!P45pGCqYcCVOq01=zMx_FT~QG!|HgR* zG4S_tyH^^LVHu1psu>$AtML&f!(7FktltVdiXi*MgNw2V zRDJr&oN<{f8des~lyxjCbQIKmGawuWsl{u@p&kM;b6V8%VqF(!UzZ4}2&q>4 zL`M^!-}TfQ#p=RT!~YFu5a;P_F5l5cnfbniyW=MMjY9^VCm^9p8(TaBv@hY-id(u$ zDR`l7ieJ+WiHv+Waw9_s_&kotdXYGsAK$WUlDVlO`$Pv=*0&=m-3`V!G&Mn;uGPurfvS{vEf-q zl}+JRnSZLXFH!JluD*eATK5|J7iGxepX@Y>_dnPUo@3K)%thnP33f}-LLVan=~3kxljwLCmLhbuQ33BUDLgz(|6Wr01xF(i{=`0p`A zt};xdHf0Us>#97YDUtdJKvP)PDpcNPCP+U1esYqt)@9S|_V_0}vD zvB7CTUtj+Ua6%c%I?wm9o~Ot^pfspzbQQMk-eAwAboKe`DvEEVjf_iS?#L^yyt{h7 zjmwH(G&2_kVZ_RMn5MunFHN6}%ZeH1SZlC*AJ+9|>iGZBbS2PG?tgzONhJ-52^BSo zk`S_$r4ScIC_;o}&Ax|f5LwDrQT8Q!_AMbHBs(EnNJv5wlJ_(JbKZOIIrpAZO=jkK ze$V&&S<|XE*5?+mPF|!FfFg>Fs0r{Ix87G#KgO}rhA^^x%&uQ)FD83l|G>c%3JJvw z9yZDemoBXjvW34@!hr!`55h2gs2&0kSUem|yn#u)jl9XR2UJ}l6KviLjW zM-L$>qDiWC1MM|YBN0u<&urFUK0*=fInQ51+J?$INAAhc*2(*j^2XS5xTK$(zIF;I zklIp-T5;?{iG3Oxs%Lpt-VgqRdt-2(57o!u7Lac<{;+DfcakrgM5{J{bzcJ3CB- z+#eHrrJMa})Yed5{R4)~Sh)nwXDwf;AMgo|{lJzZIv^#h6t?BO|X61z;V`rWZ&ADSY*N@a(cFB z5dHv1!_pxq|D^VBTR~V)?@dqMkGi)|o)q2p+=c?A9zr~8;DO4`5-vZU!wr)J{<_nk zYy7-A1t)sC+7%O_XLxE!qgK!ssLpc!rhnNbLm7a_k*hSIn}iwC53Jk>#Jl73u0b3P z!2qnN0fadUwo#LAojOb^A$QaQCRakrT%jmJHOxG4=isqYM)XY~!b$F~j7+%EmOoW5 zvo()d<7HiEvP;~1cEVm9(|WUD3b1UH=}HzA+sd62kwxqm+vRE0!X(-ZRRB z8}y7e&yQrt@&?C2D*2(Rwmb7m-tgRM`6P9%r9WyTVmZd{`QgD+l*=db4RTACrr8oE z%^d>JC-nk8zNpakq>txqFD3XoMwidZAW=88TKov-_aXvk&c1RO)40 z9Bc!+W@u>W15y!X!}M(Qe#akQ7)ODqGL_YSZc9KrOz~AdvmYzKtd&-d=sZ<9tJGUdABOF9F z04c@2W48_QbTtmrpFWZf)MKBqPRQ85dXmEs-q(WpWYN-Q%wO_!>6YnssNIal=5Deu zaf|Hzvu4|;x#erZs^;l%so&d@gt}Y?fvZ|`xI1Y0)k2!@` zD1ym;hZq_h_z(JpyUgzjqEZu)z9OtUwsv>fQIQuqIml8hH2(eIf=I^Xl|k-qb!F;n_#y3*j)-mL#qo58h;Ye}-!ceoEs<2eR`-vyNm1vB(+=CQ@+zM6h%kQQf z`%yxKFKiT*Oh@whDmG@S{{0u8HmDkCZ)2kdm*78W>hCD08!*cwsXY*ffmg_w6!ag| z^7FV>f1Eik)vzvZi~L&?b=UNoz_} zRS(($Pcq8=YC9JtB=-QD%u$4_>03h%f1E9tNqOq$$OtETmL(QnzTS(Ks|-S&uGh;J zhQe$oQIDbqkNC+GJ9hcX-7+&%1fS<=YugsNX<==hHg#bwsYBl8+EA|^fMHA01T^FAv=I}DGutX7G%wbLclzATBHse z*m=5Lm?6KTCDQ4L;v@|GL3za1#n8^FLbmLSP(idB2W9IjjJ!N=>gKlMrf=rtR5ZTi zzAP5969&9DC~Lc?>sDw`GqdClNx)0Lh`pFWlJJIIVw+?p;AYG&(>WgcI6?sz9f!oCX z@wuc7jn|G!tL#$8DW-pG!y7jE!Y6xrd*dA4?;MNFK-bh?fKuKVU%vr*Wsw~_6Gk@o z87sBQoIe*lwd+5)^23`azTokSG(`Wd4?>pPAW-BE50I(l&C4W%%0ATbf+D0j%1tpG_ys2=+Z$@oKaKA&Nb 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 B-7o+E literal 0 HcmV?d00001 diff --git a/3DAR/music_icon copy 2.png b/3DAR/music_icon copy 2.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7ee49a24e16406f5ab87e23126d6d05602a42a GIT binary patch literal 2645 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 literal 0 HcmV?d00001 diff --git a/3DAR/music_icon copy.png b/3DAR/music_icon copy.png new file mode 100644 index 0000000000000000000000000000000000000000..a40b3bc0425ff864d1d5a472731136a6cdfccea1 GIT binary patch literal 1980 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 IM6N<$g6K>e3IG5A literal 0 HcmV?d00001 diff --git a/3DAR/music_icon@2x.png b/3DAR/music_icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e5a02863a82a66766dc1daaafed9ed36bacbdafd GIT binary patch literal 6217 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 MRAI`JxzXu=13nwib^rhX literal 0 HcmV?d00001 diff --git a/3DAR/pano_bg copy.png b/3DAR/pano_bg copy.png new file mode 100644 index 0000000000000000000000000000000000000000..9a88a200da0c9a02bf7ae5bd85012c2b4bf1fa5e GIT binary patch literal 4298 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 literal 0 HcmV?d00001 diff --git a/3DAR/pano_bg.png b/3DAR/pano_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..74af8d2d5f1f72e44c6f652c0e3b69494f586559 GIT binary patch literal 3996 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 literal 0 HcmV?d00001 diff --git a/3DAR/pushpin_1.0.obj b/3DAR/pushpin_1.0.obj new file mode 100644 index 0000000..43fc3bb --- /dev/null +++ b/3DAR/pushpin_1.0.obj @@ -0,0 +1,3382 @@ +# Rhino + +g Layer_01 +o object_1 +v 2.024354219436646 1.235470475924316e-10 5.64483118057251 +v 1.658099770545959 1.00936731195489e-10 5.336066722869873 +v 1.306847333908081 7.881997832193122e-11 4.929609775543213 +v 0.981024444103241 5.797386182226916e-11 4.417614936828613 +v 0.6910588145256042 3.917544066922574e-11 3.792237758636475 +v 0.4473781287670135 2.320178077441781e-11 3.045632600784302 +v 0.2604100406169891 1.082994458001529e-11 2.169954776763916 +v 0.1405822336673737 2.836996696592431e-12 1.157358884811401 +v 0.09832236170768738 0 0 +v 1.985456705093384 0.3949319124221802 5.64483118057251 +v 1.626239895820618 0.3234792053699493 5.336066722869873 +v 1.281736612319946 0.2549532651901245 4.929609775543213 +v 0.9621743559837341 0.1913883686065674 4.417614936828613 +v 0.6777803301811218 0.134818896651268 3.792237758636475 +v 0.4387818872928619 0.08727914094924927 3.045632600784302 +v 0.2554063498973846 0.05080347880721092 2.169954776763916 +v 0.1378809809684753 0.02742623165249825 1.157358884811401 +v 0.096433125436306 0.01918174140155315 0 +v 1.870259404182434 0.7746868133544922 5.64483118057251 +v 1.531884431838989 0.634527325630188 5.336066722869873 +v 1.207369446754456 0.5001088380813599 4.929609775543213 +v 0.9063484072685242 0.3754217922687531 4.417614936828613 +v 0.6384550929069519 0.2644567787647247 3.792237758636475 +v 0.4133234918117523 0.1712041944265366 3.045632600784302 +v 0.2405875027179718 0.09965460747480392 2.169954776763916 +v 0.1298810392618179 0.05379848927259445 1.157358884811401 +v 0.09083801507949829 0.03762634098529816 0 +v 1.683188915252686 1.12467086315155 5.64483118057251 +v 1.378659605979919 0.9211908578872681 5.336066722869873 +v 1.086603879928589 0.7260454893112183 4.929609775543213 +v 0.8156920075416565 0.5450279712677002 4.417614936828613 +v 0.5745944380760193 0.3839317262172699 3.792237758636475 +v 0.3719813227653503 0.2485499680042267 3.045632600784302 +v 0.2165230363607407 0.144676074385643 2.169954776763916 +v 0.1168898493051529 0.07810330390930176 1.157358884811401 +v 0.08175205439329147 0.05462497845292091 0 +v 1.431434512138367 1.431434512138367 5.64483118057251 +v 1.172453641891479 1.172453641891479 5.336066722869873 +v 0.9240806102752686 0.9240806102752686 4.929609775543213 +v 0.6936890482902527 0.6936890482902527 4.417614936828613 +v 0.488652378320694 0.488652378320694 3.792237758636475 +v 0.3163441121578217 0.3163441121578217 3.045632600784302 +v 0.1841377019882202 0.1841377019882202 2.169954776763916 +v 0.0994066447019577 0.0994066447019577 1.157358884811401 +v 0.06952440738677979 0.06952440738677979 0 +v 1.12467086315155 1.683188915252686 5.64483118057251 +v 0.9211908578872681 1.378659605979919 5.336066722869873 +v 0.7260454893112183 1.086603879928589 4.929609775543213 +v 0.5450279712677002 0.8156920075416565 4.417614936828613 +v 0.3839317262172699 0.5745944380760193 3.792237758636475 +v 0.2485499680042267 0.3719813227653503 3.045632600784302 +v 0.144676074385643 0.2165230363607407 2.169954776763916 +v 0.07810330390930176 0.1168898493051529 1.157358884811401 +v 0.05462497845292091 0.08175205439329147 0 +v 0.7746868133544922 1.870259404182434 5.64483118057251 +v 0.634527325630188 1.531884431838989 5.336066722869873 +v 0.5001088380813599 1.207369446754456 4.929609775543213 +v 0.3754217922687531 0.9063484072685242 4.417614936828613 +v 0.2644567787647247 0.6384550929069519 3.792237758636475 +v 0.1712041944265366 0.4133234918117523 3.045632600784302 +v 0.09965460747480392 0.2405875027179718 2.169954776763916 +v 0.05379848927259445 0.1298810392618179 1.157358884811401 +v 0.03762634098529816 0.09083801507949829 0 +v 0.3949319124221802 1.985456705093384 5.64483118057251 +v 0.3234792053699493 1.626239895820618 5.336066722869873 +v 0.2549532651901245 1.281736612319946 4.929609775543213 +v 0.1913883686065674 0.9621743559837341 4.417614936828613 +v 0.1348188817501068 0.6777803301811218 3.792237758636475 +v 0.08727914094924927 0.4387818872928619 3.045632600784302 +v 0.05080347880721092 0.2554063498973846 2.169954776763916 +v 0.02742623165249825 0.1378809809684753 1.157358884811401 +v 0.01918174140155315 0.096433125436306 0 +v -1.235469365701292e-10 2.024354219436646 5.64483118057251 +v -1.009366271120804e-10 1.658099770545959 5.336066722869873 +v -7.881990199409827e-11 1.306847333908081 4.929609775543213 +v -5.797379937222402e-11 0.981024444103241 4.417614936828613 +v -3.917539903586231e-11 0.6910588145256042 3.792237758636475 +v -2.32017530188422e-11 0.4473781287670135 3.045632600784302 +v -1.082992896750401e-11 0.2604100406169891 2.169954776763916 +v -2.836988022975051e-12 0.1405822336673737 1.157358884811401 +v 6.020508357014104e-18 0.09832236170768738 0 +v -0.3949319124221802 1.985456705093384 5.64483118057251 +v -0.3234792053699493 1.626239895820618 5.336066722869873 +v -0.2549532651901245 1.281736612319946 4.929609775543213 +v -0.1913883686065674 0.9621743559837341 4.417614936828613 +v -0.134818896651268 0.6777803301811218 3.792237758636475 +v -0.08727914094924927 0.4387818872928619 3.045632600784302 +v -0.05080347880721092 0.2554063498973846 2.169954776763916 +v -0.02742623165249825 0.1378809809684753 1.157358884811401 +v -0.01918174140155315 0.096433125436306 0 +v -0.7746868133544922 1.870259404182434 5.64483118057251 +v -0.634527325630188 1.531884431838989 5.336066722869873 +v -0.5001088380813599 1.207369446754456 4.929609775543213 +v -0.3754217922687531 0.9063484072685242 4.417614936828613 +v -0.2644567787647247 0.6384550929069519 3.792237758636475 +v -0.1712041944265366 0.4133234918117523 3.045632600784302 +v -0.09965460747480392 0.2405875027179718 2.169954776763916 +v -0.05379848927259445 0.1298810392618179 1.157358884811401 +v -0.03762634098529816 0.09083801507949829 0 +v -1.12467086315155 1.683188915252686 5.64483118057251 +v -0.9211908578872681 1.378659605979919 5.336066722869873 +v -0.7260454893112183 1.086603879928589 4.929609775543213 +v -0.5450279712677002 0.8156920075416565 4.417614936828613 +v -0.3839317262172699 0.5745944380760193 3.792237758636475 +v -0.2485499680042267 0.3719813227653503 3.045632600784302 +v -0.144676074385643 0.2165230363607407 2.169954776763916 +v -0.07810330390930176 0.1168898493051529 1.157358884811401 +v -0.05462497845292091 0.08175205439329147 0 +v -1.431434512138367 1.431434512138367 5.64483118057251 +v -1.172453641891479 1.172453641891479 5.336066722869873 +v -0.9240806102752686 0.9240806102752686 4.929609775543213 +v -0.6936890482902527 0.6936890482902527 4.417614936828613 +v -0.488652378320694 0.488652378320694 3.792237758636475 +v -0.3163441121578217 0.3163441121578217 3.045632600784302 +v -0.1841377019882202 0.1841377019882202 2.169954776763916 +v -0.0994066447019577 0.0994066447019577 1.157358884811401 +v -0.06952440738677979 0.06952440738677979 0 +v -1.683188915252686 1.12467086315155 5.64483118057251 +v -1.378659605979919 0.9211908578872681 5.336066722869873 +v -1.086603879928589 0.7260454893112183 4.929609775543213 +v -0.8156920075416565 0.5450279712677002 4.417614936828613 +v -0.5745944380760193 0.3839317262172699 3.792237758636475 +v -0.3719813227653503 0.2485499680042267 3.045632600784302 +v -0.2165230363607407 0.144676074385643 2.169954776763916 +v -0.1168898493051529 0.07810330390930176 1.157358884811401 +v -0.08175205439329147 0.05462497845292091 0 +v -1.870259404182434 0.7746868133544922 5.64483118057251 +v -1.531884431838989 0.634527325630188 5.336066722869873 +v -1.207369446754456 0.5001088380813599 4.929609775543213 +v -0.9063484072685242 0.3754217922687531 4.417614936828613 +v -0.6384550929069519 0.2644567787647247 3.792237758636475 +v -0.4133234918117523 0.1712041944265366 3.045632600784302 +v -0.2405875027179718 0.09965460747480392 2.169954776763916 +v -0.1298810392618179 0.05379848927259445 1.157358884811401 +v -0.09083801507949829 0.03762634098529816 0 +v -1.985456705093384 0.3949319124221802 5.64483118057251 +v -1.626239895820618 0.3234792053699493 5.336066722869873 +v -1.281736612319946 0.2549532651901245 4.929609775543213 +v -0.9621743559837341 0.1913883686065674 4.417614936828613 +v -0.6777803301811218 0.1348188817501068 3.792237758636475 +v -0.4387818872928619 0.08727914094924927 3.045632600784302 +v -0.2554063498973846 0.05080347880721092 2.169954776763916 +v -0.1378809809684753 0.02742623165249825 1.157358884811401 +v -0.096433125436306 0.01918174140155315 0 +v -2.024354219436646 -1.235468116700389e-10 5.64483118057251 +v -1.658099770545959 -1.009365299675657e-10 5.336066722869873 +v -1.306847333908081 -7.881981872737143e-11 4.929609775543213 +v -0.981024444103241 -5.797374039162584e-11 4.417614936828613 +v -0.6910588145256042 -3.917535393305194e-11 3.792237758636475 +v -0.4473781287670135 -2.320172526326658e-11 3.045632600784302 +v -0.2604100406169891 -1.082991248763099e-11 2.169954776763916 +v -0.1405822336673737 -2.836979566198106e-12 1.157358884811401 +v -0.09832236170768738 1.204101671402821e-17 0 +v -1.985456705093384 -0.3949319124221802 5.64483118057251 +v -1.626239895820618 -0.3234792053699493 5.336066722869873 +v -1.281736612319946 -0.2549532651901245 4.929609775543213 +v -0.9621743559837341 -0.1913883686065674 4.417614936828613 +v -0.6777803301811218 -0.134818896651268 3.792237758636475 +v -0.4387818872928619 -0.08727914094924927 3.045632600784302 +v -0.2554063498973846 -0.05080347880721092 2.169954776763916 +v -0.1378809809684753 -0.02742623165249825 1.157358884811401 +v -0.096433125436306 -0.01918174140155315 0 +v -1.870259404182434 -0.7746868133544922 5.64483118057251 +v -1.531884431838989 -0.634527325630188 5.336066722869873 +v -1.207369446754456 -0.5001088380813599 4.929609775543213 +v -0.9063484072685242 -0.3754217922687531 4.417614936828613 +v -0.6384550929069519 -0.2644567787647247 3.792237758636475 +v -0.4133234918117523 -0.1712041944265366 3.045632600784302 +v -0.2405875027179718 -0.09965460747480392 2.169954776763916 +v -0.1298810392618179 -0.05379848927259445 1.157358884811401 +v -0.09083801507949829 -0.03762634098529816 0 +v -1.683188915252686 -1.12467086315155 5.64483118057251 +v -1.378659605979919 -0.9211908578872681 5.336066722869873 +v -1.086603879928589 -0.7260454893112183 4.929609775543213 +v -0.8156920075416565 -0.5450279712677002 4.417614936828613 +v -0.5745944380760193 -0.3839317262172699 3.792237758636475 +v -0.3719813227653503 -0.2485499680042267 3.045632600784302 +v -0.2165230363607407 -0.144676074385643 2.169954776763916 +v -0.1168898493051529 -0.07810330390930176 1.157358884811401 +v -0.08175205439329147 -0.05462497845292091 0 +v -1.431434512138367 -1.431434512138367 5.64483118057251 +v -1.172453641891479 -1.172453641891479 5.336066722869873 +v -0.9240806102752686 -0.9240806102752686 4.929609775543213 +v -0.6936890482902527 -0.6936890482902527 4.417614936828613 +v -0.488652378320694 -0.488652378320694 3.792237758636475 +v -0.3163441121578217 -0.3163441121578217 3.045632600784302 +v -0.1841377019882202 -0.1841377019882202 2.169954776763916 +v -0.0994066447019577 -0.0994066447019577 1.157358884811401 +v -0.06952440738677979 -0.06952440738677979 0 +v -1.12467086315155 -1.683188915252686 5.64483118057251 +v -0.9211908578872681 -1.378659605979919 5.336066722869873 +v -0.7260454893112183 -1.086603879928589 4.929609775543213 +v -0.5450279712677002 -0.8156920075416565 4.417614936828613 +v -0.3839317262172699 -0.5745944380760193 3.792237758636475 +v -0.2485499680042267 -0.3719813227653503 3.045632600784302 +v -0.144676074385643 -0.2165230363607407 2.169954776763916 +v -0.07810330390930176 -0.1168898493051529 1.157358884811401 +v -0.05462497845292091 -0.08175205439329147 0 +v -0.7746868133544922 -1.870259404182434 5.64483118057251 +v -0.634527325630188 -1.531884431838989 5.336066722869873 +v -0.5001088380813599 -1.207369446754456 4.929609775543213 +v -0.3754217922687531 -0.9063484072685242 4.417614936828613 +v -0.2644567787647247 -0.6384550929069519 3.792237758636475 +v -0.1712041944265366 -0.4133234918117523 3.045632600784302 +v -0.09965460747480392 -0.2405875027179718 2.169954776763916 +v -0.05379848927259445 -0.1298810392618179 1.157358884811401 +v -0.03762634098529816 -0.09083801507949829 0 +v -0.3949319124221802 -1.985456705093384 5.64483118057251 +v -0.3234792053699493 -1.626239895820618 5.336066722869873 +v -0.2549532651901245 -1.281736612319946 4.929609775543213 +v -0.1913883686065674 -0.9621743559837341 4.417614936828613 +v -0.1348188817501068 -0.6777803301811218 3.792237758636475 +v -0.08727914094924927 -0.4387818872928619 3.045632600784302 +v -0.05080347880721092 -0.2554063498973846 2.169954776763916 +v -0.02742623165249825 -0.1378809809684753 1.157358884811401 +v -0.01918174140155315 -0.096433125436306 0 +v 1.235466867699486e-10 -2.024354219436646 5.64483118057251 +v 1.009364258841572e-10 -1.658099770545959 5.336066722869873 +v 7.881973546064458e-11 -1.306847333908081 4.929609775543213 +v 5.797368141102766e-11 -0.981024444103241 4.417614936828613 +v 3.917531229968851e-11 -0.6910588145256042 3.792237758636475 +v 2.320169750769097e-11 -0.4473781287670135 3.045632600784302 +v 1.08298968751197e-11 -0.2604100406169891 2.169954776763916 +v 2.836970892580726e-12 -0.1405822336673737 1.157358884811401 +v -1.806152507104231e-17 -0.09832236170768738 0 +v 0.3949319124221802 -1.985456705093384 5.64483118057251 +v 0.3234792053699493 -1.626239895820618 5.336066722869873 +v 0.2549532651901245 -1.281736612319946 4.929609775543213 +v 0.1913883686065674 -0.9621743559837341 4.417614936828613 +v 0.134818896651268 -0.6777803301811218 3.792237758636475 +v 0.08727914094924927 -0.4387818872928619 3.045632600784302 +v 0.05080347880721092 -0.2554063498973846 2.169954776763916 +v 0.02742623165249825 -0.1378809809684753 1.157358884811401 +v 0.01918174140155315 -0.096433125436306 0 +v 0.7746868133544922 -1.870259404182434 5.64483118057251 +v 0.634527325630188 -1.531884431838989 5.336066722869873 +v 0.5001088380813599 -1.207369446754456 4.929609775543213 +v 0.3754217922687531 -0.9063484072685242 4.417614936828613 +v 0.2644567787647247 -0.6384550929069519 3.792237758636475 +v 0.1712041944265366 -0.4133234918117523 3.045632600784302 +v 0.09965460747480392 -0.2405875027179718 2.169954776763916 +v 0.05379848927259445 -0.1298810392618179 1.157358884811401 +v 0.03762634098529816 -0.09083801507949829 0 +v 1.12467086315155 -1.683188915252686 5.64483118057251 +v 0.9211908578872681 -1.378659605979919 5.336066722869873 +v 0.7260454893112183 -1.086603879928589 4.929609775543213 +v 0.5450279712677002 -0.8156920075416565 4.417614936828613 +v 0.3839317262172699 -0.5745944380760193 3.792237758636475 +v 0.2485499680042267 -0.3719813227653503 3.045632600784302 +v 0.144676074385643 -0.2165230363607407 2.169954776763916 +v 0.07810330390930176 -0.1168898493051529 1.157358884811401 +v 0.05462497845292091 -0.08175205439329147 0 +v 1.431434512138367 -1.431434512138367 5.64483118057251 +v 1.172453641891479 -1.172453641891479 5.336066722869873 +v 0.9240806102752686 -0.9240806102752686 4.929609775543213 +v 0.6936890482902527 -0.6936890482902527 4.417614936828613 +v 0.488652378320694 -0.488652378320694 3.792237758636475 +v 0.3163441121578217 -0.3163441121578217 3.045632600784302 +v 0.1841377019882202 -0.1841377019882202 2.169954776763916 +v 0.0994066447019577 -0.0994066447019577 1.157358884811401 +v 0.06952440738677979 -0.06952440738677979 0 +v 1.683188915252686 -1.12467086315155 5.64483118057251 +v 1.378659605979919 -0.9211908578872681 5.336066722869873 +v 1.086603879928589 -0.7260454893112183 4.929609775543213 +v 0.8156920075416565 -0.5450279712677002 4.417614936828613 +v 0.5745944380760193 -0.3839317262172699 3.792237758636475 +v 0.3719813227653503 -0.2485499680042267 3.045632600784302 +v 0.2165230363607407 -0.144676074385643 2.169954776763916 +v 0.1168898493051529 -0.07810330390930176 1.157358884811401 +v 0.08175205439329147 -0.05462497845292091 0 +v 1.870259404182434 -0.7746868133544922 5.64483118057251 +v 1.531884431838989 -0.634527325630188 5.336066722869873 +v 1.207369446754456 -0.5001088380813599 4.929609775543213 +v 0.9063484072685242 -0.3754217922687531 4.417614936828613 +v 0.6384550929069519 -0.2644567787647247 3.792237758636475 +v 0.4133234918117523 -0.1712041944265366 3.045632600784302 +v 0.2405875027179718 -0.09965460747480392 2.169954776763916 +v 0.1298810392618179 -0.05379848927259445 1.157358884811401 +v 0.09083801507949829 -0.03762634098529816 0 +v 1.985456705093384 -0.3949319124221802 5.64483118057251 +v 1.626239895820618 -0.3234792053699493 5.336066722869873 +v 1.281736612319946 -0.2549532651901245 4.929609775543213 +v 0.9621743559837341 -0.1913883686065674 4.417614936828613 +v 0.6777803301811218 -0.1348188817501068 3.792237758636475 +v 0.4387818872928619 -0.08727914094924927 3.045632600784302 +v 0.2554063498973846 -0.05080347880721092 2.169954776763916 +v 0.1378809809684753 -0.02742623165249825 1.157358884811401 +v 0.096433125436306 -0.01918174140155315 0 +v 2.024354219436646 1.235470475924316e-10 5.64483118057251 +v 1.658099770545959 1.00936731195489e-10 5.336066722869873 +v 1.306847333908081 7.881997832193122e-11 4.929609775543213 +v 0.981024444103241 5.797386182226916e-11 4.417614936828613 +v 0.6910588145256042 3.917544066922574e-11 3.792237758636475 +v 0.4473781287670135 2.320178077441781e-11 3.045632600784302 +v 0.2604100406169891 1.082994458001529e-11 2.169954776763916 +v 0.1405822336673737 2.836996696592431e-12 1.157358884811401 +v 0.09832236170768738 0 0 +vt 0 0 +vt 0 0.125 +vt 0 0.25 +vt 0 0.375 +vt 0 0.5 +vt 0 0.625 +vt 0 0.75 +vt 0 0.875 +vt 0 1 +vt 0.03125 0 +vt 0.03125 0.125 +vt 0.03125 0.25 +vt 0.03125 0.375 +vt 0.03125 0.5 +vt 0.03125 0.625 +vt 0.03125 0.75 +vt 0.03125 0.875 +vt 0.03125 1 +vt 0.0625 0 +vt 0.0625 0.125 +vt 0.0625 0.25 +vt 0.0625 0.375 +vt 0.0625 0.5 +vt 0.0625 0.625 +vt 0.0625 0.75 +vt 0.0625 0.875 +vt 0.0625 1 +vt 0.09375 0 +vt 0.09375 0.125 +vt 0.09375 0.25 +vt 0.09375 0.375 +vt 0.09375 0.5 +vt 0.09375 0.625 +vt 0.09375 0.75 +vt 0.09375 0.875 +vt 0.09375 1 +vt 0.125 0 +vt 0.125 0.125 +vt 0.125 0.25 +vt 0.125 0.375 +vt 0.125 0.5 +vt 0.125 0.625 +vt 0.125 0.75 +vt 0.125 0.875 +vt 0.125 1 +vt 0.15625 0 +vt 0.15625 0.125 +vt 0.15625 0.25 +vt 0.15625 0.375 +vt 0.15625 0.5 +vt 0.15625 0.625 +vt 0.15625 0.75 +vt 0.15625 0.875 +vt 0.15625 1 +vt 0.1875 0 +vt 0.1875 0.125 +vt 0.1875 0.25 +vt 0.1875 0.375 +vt 0.1875 0.5 +vt 0.1875 0.625 +vt 0.1875 0.75 +vt 0.1875 0.875 +vt 0.1875 1 +vt 0.21875 0 +vt 0.21875 0.125 +vt 0.21875 0.25 +vt 0.21875 0.375 +vt 0.21875 0.5 +vt 0.21875 0.625 +vt 0.21875 0.75 +vt 0.21875 0.875 +vt 0.21875 1 +vt 0.25 0 +vt 0.25 0.125 +vt 0.25 0.25 +vt 0.25 0.375 +vt 0.25 0.5 +vt 0.25 0.625 +vt 0.25 0.75 +vt 0.25 0.875 +vt 0.25 1 +vt 0.28125 0 +vt 0.28125 0.125 +vt 0.28125 0.25 +vt 0.28125 0.375 +vt 0.28125 0.5 +vt 0.28125 0.625 +vt 0.28125 0.75 +vt 0.28125 0.875 +vt 0.28125 1 +vt 0.3125 0 +vt 0.3125 0.125 +vt 0.3125 0.25 +vt 0.3125 0.375 +vt 0.3125 0.5 +vt 0.3125 0.625 +vt 0.3125 0.75 +vt 0.3125 0.875 +vt 0.3125 1 +vt 0.34375 0 +vt 0.34375 0.125 +vt 0.34375 0.25 +vt 0.34375 0.375 +vt 0.34375 0.5 +vt 0.34375 0.625 +vt 0.34375 0.75 +vt 0.34375 0.875 +vt 0.34375 1 +vt 0.375 0 +vt 0.375 0.125 +vt 0.375 0.25 +vt 0.375 0.375 +vt 0.375 0.5 +vt 0.375 0.625 +vt 0.375 0.75 +vt 0.375 0.875 +vt 0.375 1 +vt 0.40625 0 +vt 0.40625 0.125 +vt 0.40625 0.25 +vt 0.40625 0.375 +vt 0.40625 0.5 +vt 0.40625 0.625 +vt 0.40625 0.75 +vt 0.40625 0.875 +vt 0.40625 1 +vt 0.4375 0 +vt 0.4375 0.125 +vt 0.4375 0.25 +vt 0.4375 0.375 +vt 0.4375 0.5 +vt 0.4375 0.625 +vt 0.4375 0.75 +vt 0.4375 0.875 +vt 0.4375 1 +vt 0.46875 0 +vt 0.46875 0.125 +vt 0.46875 0.25 +vt 0.46875 0.375 +vt 0.46875 0.5 +vt 0.46875 0.625 +vt 0.46875 0.75 +vt 0.46875 0.875 +vt 0.46875 1 +vt 0.5 0 +vt 0.5 0.125 +vt 0.5 0.25 +vt 0.5 0.375 +vt 0.5 0.5 +vt 0.5 0.625 +vt 0.5 0.75 +vt 0.5 0.875 +vt 0.5 1 +vt 0.53125 0 +vt 0.53125 0.125 +vt 0.53125 0.25 +vt 0.53125 0.375 +vt 0.53125 0.5 +vt 0.53125 0.625 +vt 0.53125 0.75 +vt 0.53125 0.875 +vt 0.53125 1 +vt 0.5625 0 +vt 0.5625 0.125 +vt 0.5625 0.25 +vt 0.5625 0.375 +vt 0.5625 0.5 +vt 0.5625 0.625 +vt 0.5625 0.75 +vt 0.5625 0.875 +vt 0.5625 1 +vt 0.59375 0 +vt 0.59375 0.125 +vt 0.59375 0.25 +vt 0.59375 0.375 +vt 0.59375 0.5 +vt 0.59375 0.625 +vt 0.59375 0.75 +vt 0.59375 0.875 +vt 0.59375 1 +vt 0.625 0 +vt 0.625 0.125 +vt 0.625 0.25 +vt 0.625 0.375 +vt 0.625 0.5 +vt 0.625 0.625 +vt 0.625 0.75 +vt 0.625 0.875 +vt 0.625 1 +vt 0.65625 0 +vt 0.65625 0.125 +vt 0.65625 0.25 +vt 0.65625 0.375 +vt 0.65625 0.5 +vt 0.65625 0.625 +vt 0.65625 0.75 +vt 0.65625 0.875 +vt 0.65625 1 +vt 0.6875 0 +vt 0.6875 0.125 +vt 0.6875 0.25 +vt 0.6875 0.375 +vt 0.6875 0.5 +vt 0.6875 0.625 +vt 0.6875 0.75 +vt 0.6875 0.875 +vt 0.6875 1 +vt 0.71875 0 +vt 0.71875 0.125 +vt 0.71875 0.25 +vt 0.71875 0.375 +vt 0.71875 0.5 +vt 0.71875 0.625 +vt 0.71875 0.75 +vt 0.71875 0.875 +vt 0.71875 1 +vt 0.75 0 +vt 0.75 0.125 +vt 0.75 0.25 +vt 0.75 0.375 +vt 0.75 0.5 +vt 0.75 0.625 +vt 0.75 0.75 +vt 0.75 0.875 +vt 0.75 1 +vt 0.78125 0 +vt 0.78125 0.125 +vt 0.78125 0.25 +vt 0.78125 0.375 +vt 0.78125 0.5 +vt 0.78125 0.625 +vt 0.78125 0.75 +vt 0.78125 0.875 +vt 0.78125 1 +vt 0.8125 0 +vt 0.8125 0.125 +vt 0.8125 0.25 +vt 0.8125 0.375 +vt 0.8125 0.5 +vt 0.8125 0.625 +vt 0.8125 0.75 +vt 0.8125 0.875 +vt 0.8125 1 +vt 0.84375 0 +vt 0.84375 0.125 +vt 0.84375 0.25 +vt 0.84375 0.375 +vt 0.84375 0.5 +vt 0.84375 0.625 +vt 0.84375 0.75 +vt 0.84375 0.875 +vt 0.84375 1 +vt 0.875 0 +vt 0.875 0.125 +vt 0.875 0.25 +vt 0.875 0.375 +vt 0.875 0.5 +vt 0.875 0.625 +vt 0.875 0.75 +vt 0.875 0.875 +vt 0.875 1 +vt 0.90625 0 +vt 0.90625 0.125 +vt 0.90625 0.25 +vt 0.90625 0.375 +vt 0.90625 0.5 +vt 0.90625 0.625 +vt 0.90625 0.75 +vt 0.90625 0.875 +vt 0.90625 1 +vt 0.9375 0 +vt 0.9375 0.125 +vt 0.9375 0.25 +vt 0.9375 0.375 +vt 0.9375 0.5 +vt 0.9375 0.625 +vt 0.9375 0.75 +vt 0.9375 0.875 +vt 0.9375 1 +vt 0.96875 0 +vt 0.96875 0.125 +vt 0.96875 0.25 +vt 0.96875 0.375 +vt 0.96875 0.5 +vt 0.96875 0.625 +vt 0.96875 0.75 +vt 0.96875 0.875 +vt 0.96875 1 +vt 1 0 +vt 1 0.125 +vt 1 0.25 +vt 1 0.375 +vt 1 0.5 +vt 1 0.625 +vt 1 0.75 +vt 1 0.875 +vt 1 1 +vn -0.5783869028091431 -3.529915942879214e-11 0.8157625794410706 +vn -0.7029632329940796 -4.279284565589236e-11 0.711226224899292 +vn -0.802653431892395 -4.841049436321576e-11 0.5964457392692566 +vn -0.8777959942817688 -5.187355406333083e-11 0.4790346324443817 +vn -0.9309465289115906 -5.277443412832206e-11 0.3651555478572845 +vn -0.9659055471420288 -5.009348144624504e-11 0.258894681930542 +vn -0.9867316484451294 -4.103624037798959e-11 0.1623596996068954 +vn -0.997094988822937 -2.012171158860543e-11 0.07616831362247467 +vn -1 0 0 +vn -0.5672733783721924 -0.1128376871347427 0.8157625794410706 +vn -0.6894559860229492 -0.1371413171291351 0.711226224899292 +vn -0.7872306704521179 -0.1565899103879929 0.5964457392692566 +vn -0.8609293699264526 -0.1712495088577271 0.4790346324443817 +vn -0.9130586385726929 -0.1816186606884003 0.3651555478572845 +vn -0.9473459720611572 -0.1884388327598572 0.258894681930542 +vn -0.9677718877792358 -0.1925017982721329 0.1623596996068954 +vn -0.9779360890388489 -0.1945235729217529 0.07616831362247467 +vn -0.9807852506637573 -0.1950903236865997 0 +vn -0.5343598127365112 -0.221339076757431 0.8157625794410706 +vn -0.649453341960907 -0.2690123915672302 0.711226224899292 +vn -0.7415550351142883 -0.3071621656417847 0.5964457392692566 +vn -0.8109777569770813 -0.3359179794788361 0.4790346324443817 +vn -0.8600824475288391 -0.356257826089859 0.3651555478572845 +vn -0.8923803567886353 -0.369636058807373 0.258894681930542 +vn -0.9116211533546448 -0.3776058554649353 0.1623596996068954 +vn -0.9211956262588501 -0.3815717399120331 0.07616831362247467 +vn -0.9238795042037964 -0.3826834261417389 0 +vn -0.4809111356735229 -0.3213345408439636 0.8157625794410706 +vn -0.584492564201355 -0.3905454277992249 0.711226224899292 +vn -0.6673819422721863 -0.4459303319454193 0.5964457392692566 +vn -0.7298607230186462 -0.4876773357391357 0.4790346324443817 +vn -0.7740537524223328 -0.5172061920166016 0.3651555478572845 +vn -0.8031210899353027 -0.5366283655166626 0.258894681930542 +vn -0.8204373717308044 -0.5481986999511719 0.1623596996068954 +vn -0.8290541768074036 -0.5539562702178955 0.07616831362247467 +vn -0.8314695954322815 -0.5555702447891235 0 +vn -0.4089812934398651 -0.4089812934398651 0.8157625794410706 +vn -0.4970700442790985 -0.4970700442790985 0.711226224899292 +vn -0.5675616860389709 -0.5675616860389709 0.5964457392692566 +vn -0.6206955313682556 -0.6206955313682556 0.4790346324443817 +vn -0.6582785844802856 -0.6582785844802856 0.3651555478572845 +vn -0.6829983592033386 -0.6829983592033386 0.258894681930542 +vn -0.6977246403694153 -0.6977246403694153 0.1623596996068954 +vn -0.7050526142120361 -0.7050526142120361 0.07616831362247467 +vn -0.7071067690849304 -0.7071067690849304 0 +vn -0.3213345408439636 -0.4809111356735229 0.8157625794410706 +vn -0.3905454277992249 -0.584492564201355 0.711226224899292 +vn -0.4459303319454193 -0.6673819422721863 0.5964457392692566 +vn -0.4876773357391357 -0.7298607230186462 0.4790346324443817 +vn -0.5172061920166016 -0.7740537524223328 0.3651555478572845 +vn -0.5366283655166626 -0.8031210899353027 0.258894681930542 +vn -0.5481986999511719 -0.8204373717308044 0.1623596996068954 +vn -0.5539562702178955 -0.8290541768074036 0.07616831362247467 +vn -0.5555702447891235 -0.8314695954322815 0 +vn -0.221339076757431 -0.5343598127365112 0.8157625794410706 +vn -0.2690123915672302 -0.649453341960907 0.711226224899292 +vn -0.3071621656417847 -0.7415550351142883 0.5964457392692566 +vn -0.3359179794788361 -0.8109777569770813 0.4790346324443817 +vn -0.3562577962875366 -0.8600824475288391 0.3651555478572845 +vn -0.369636058807373 -0.8923803567886353 0.258894681930542 +vn -0.3776058554649353 -0.9116211533546448 0.1623596996068954 +vn -0.3815717399120331 -0.9211956262588501 0.07616831362247467 +vn -0.3826834261417389 -0.9238795042037964 0 +vn -0.1128376871347427 -0.5672733783721924 0.8157625794410706 +vn -0.1371413171291351 -0.6894559860229492 0.711226224899292 +vn -0.1565899103879929 -0.7872306704521179 0.5964457392692566 +vn -0.1712495088577271 -0.8609293699264526 0.4790346324443817 +vn -0.1816186606884003 -0.9130586385726929 0.3651555478572845 +vn -0.188438817858696 -0.9473459720611572 0.258894681930542 +vn -0.1925017982721329 -0.9677718877792358 0.1623596996068954 +vn -0.1945235729217529 -0.9779360890388489 0.07616831362247467 +vn -0.1950903236865997 -0.9807852506637573 0 +vn 3.529912126487567e-11 -0.5783869028091431 0.8157625794410706 +vn 4.279280402252894e-11 -0.7029632329940796 0.711226224899292 +vn 4.841044579095843e-11 -0.802653431892395 0.5964457392692566 +vn 5.18734985521796e-11 -0.8777959942817688 0.4790346324443817 +vn 5.277437861717083e-11 -0.9309465289115906 0.3651555478572845 +vn 5.009342246564685e-11 -0.9659055471420288 0.258894681930542 +vn 4.103617792794445e-11 -0.9867316484451294 0.1623596996068954 +vn 2.012165087328377e-11 -0.997094988822937 0.07616831362247467 +vn -6.123234262925839e-17 -1 0 +vn 0.1128376871347427 -0.5672733783721924 0.8157625794410706 +vn 0.1371413171291351 -0.6894559860229492 0.711226224899292 +vn 0.1565899103879929 -0.7872306704521179 0.5964457392692566 +vn 0.1712495088577271 -0.8609293699264526 0.4790346324443817 +vn 0.1816186606884003 -0.9130586385726929 0.3651555478572845 +vn 0.1884388327598572 -0.9473459720611572 0.258894681930542 +vn 0.1925017982721329 -0.9677718877792358 0.1623596996068954 +vn 0.1945235729217529 -0.9779360890388489 0.07616831362247467 +vn 0.1950903236865997 -0.9807852506637573 0 +vn 0.221339076757431 -0.5343598127365112 0.8157625794410706 +vn 0.2690123915672302 -0.649453341960907 0.711226224899292 +vn 0.3071621656417847 -0.7415550351142883 0.5964457392692566 +vn 0.3359179794788361 -0.8109777569770813 0.4790346324443817 +vn 0.356257826089859 -0.8600824475288391 0.3651555478572845 +vn 0.369636058807373 -0.8923803567886353 0.258894681930542 +vn 0.3776058554649353 -0.9116211533546448 0.1623596996068954 +vn 0.3815717399120331 -0.9211956262588501 0.07616831362247467 +vn 0.3826834261417389 -0.9238795042037964 0 +vn 0.3213345408439636 -0.4809111356735229 0.8157625794410706 +vn 0.3905454277992249 -0.584492564201355 0.711226224899292 +vn 0.4459303319454193 -0.6673819422721863 0.5964457392692566 +vn 0.4876773357391357 -0.7298607230186462 0.4790346324443817 +vn 0.5172061920166016 -0.7740537524223328 0.3651555478572845 +vn 0.5366283655166626 -0.8031210899353027 0.258894681930542 +vn 0.5481986999511719 -0.8204373717308044 0.1623596996068954 +vn 0.5539562702178955 -0.8290541768074036 0.07616831362247467 +vn 0.5555702447891235 -0.8314695954322815 0 +vn 0.4089812934398651 -0.4089812934398651 0.8157625794410706 +vn 0.4970700442790985 -0.4970700442790985 0.711226224899292 +vn 0.5675616860389709 -0.5675616860389709 0.5964457392692566 +vn 0.6206955313682556 -0.6206955313682556 0.4790346324443817 +vn 0.6582785844802856 -0.6582785844802856 0.3651555478572845 +vn 0.6829983592033386 -0.6829983592033386 0.258894681930542 +vn 0.6977246403694153 -0.6977246403694153 0.1623596996068954 +vn 0.7050526142120361 -0.7050526142120361 0.07616831362247467 +vn 0.7071067690849304 -0.7071067690849304 0 +vn 0.4809111356735229 -0.3213345408439636 0.8157625794410706 +vn 0.584492564201355 -0.3905454277992249 0.711226224899292 +vn 0.6673819422721863 -0.4459303319454193 0.5964457392692566 +vn 0.7298607230186462 -0.4876773357391357 0.4790346324443817 +vn 0.7740537524223328 -0.5172061920166016 0.3651555478572845 +vn 0.8031210899353027 -0.5366283655166626 0.258894681930542 +vn 0.8204373717308044 -0.5481986999511719 0.1623596996068954 +vn 0.8290541768074036 -0.5539562702178955 0.07616831362247467 +vn 0.8314695954322815 -0.5555702447891235 0 +vn 0.5343598127365112 -0.221339076757431 0.8157625794410706 +vn 0.649453341960907 -0.2690123915672302 0.711226224899292 +vn 0.7415550351142883 -0.3071621656417847 0.5964457392692566 +vn 0.8109777569770813 -0.3359179794788361 0.4790346324443817 +vn 0.8600824475288391 -0.3562577962875366 0.3651555478572845 +vn 0.8923803567886353 -0.369636058807373 0.258894681930542 +vn 0.9116211533546448 -0.3776058554649353 0.1623596996068954 +vn 0.9211956262588501 -0.3815717399120331 0.07616831362247467 +vn 0.9238795042037964 -0.3826834261417389 0 +vn 0.5672733783721924 -0.1128376871347427 0.8157625794410706 +vn 0.6894559860229492 -0.1371413171291351 0.711226224899292 +vn 0.7872306704521179 -0.1565899103879929 0.5964457392692566 +vn 0.8609293699264526 -0.1712495088577271 0.4790346324443817 +vn 0.9130586385726929 -0.1816186606884003 0.3651555478572845 +vn 0.9473459720611572 -0.188438817858696 0.258894681930542 +vn 0.9677718877792358 -0.1925017982721329 0.1623596996068954 +vn 0.9779360890388489 -0.1945235729217529 0.07616831362247467 +vn 0.9807852506637573 -0.1950903236865997 0 +vn 0.5783869028091431 3.529908657040615e-11 0.8157625794410706 +vn 0.7029632329940796 4.279275891971857e-11 0.711226224899292 +vn 0.802653431892395 4.841039721870111e-11 0.5964457392692566 +vn 0.8777959942817688 5.187344651047532e-11 0.4790346324443817 +vn 0.9309465289115906 5.277432310601959e-11 0.3651555478572845 +vn 0.9659055471420288 5.009336348504867e-11 0.258894681930542 +vn 0.9867316484451294 4.103611894734627e-11 0.1623596996068954 +vn 0.997094988822937 2.012159015796211e-11 0.07616831362247467 +vn 1 -1.224646852585168e-16 0 +vn 0.5672733783721924 0.1128376871347427 0.8157625794410706 +vn 0.6894559860229492 0.1371413171291351 0.711226224899292 +vn 0.7872306704521179 0.1565899103879929 0.5964457392692566 +vn 0.8609293699264526 0.1712495088577271 0.4790346324443817 +vn 0.9130586385726929 0.1816186606884003 0.3651555478572845 +vn 0.9473459720611572 0.1884388327598572 0.258894681930542 +vn 0.9677718877792358 0.1925017982721329 0.1623596996068954 +vn 0.9779360890388489 0.1945235729217529 0.07616831362247467 +vn 0.9807852506637573 0.1950903236865997 0 +vn 0.5343598127365112 0.221339076757431 0.8157625794410706 +vn 0.649453341960907 0.2690123915672302 0.711226224899292 +vn 0.7415550351142883 0.3071621656417847 0.5964457392692566 +vn 0.8109777569770813 0.3359179794788361 0.4790346324443817 +vn 0.8600824475288391 0.356257826089859 0.3651555478572845 +vn 0.8923803567886353 0.369636058807373 0.258894681930542 +vn 0.9116211533546448 0.3776058554649353 0.1623596996068954 +vn 0.9211956262588501 0.3815717399120331 0.07616831362247467 +vn 0.9238795042037964 0.3826834261417389 0 +vn 0.4809111356735229 0.3213345408439636 0.8157625794410706 +vn 0.584492564201355 0.3905454277992249 0.711226224899292 +vn 0.6673819422721863 0.4459303319454193 0.5964457392692566 +vn 0.7298607230186462 0.4876773357391357 0.4790346324443817 +vn 0.7740537524223328 0.5172061920166016 0.3651555478572845 +vn 0.8031210899353027 0.5366283655166626 0.258894681930542 +vn 0.8204373717308044 0.5481986999511719 0.1623596996068954 +vn 0.8290541768074036 0.5539562702178955 0.07616831362247467 +vn 0.8314695954322815 0.5555702447891235 0 +vn 0.4089812934398651 0.4089812934398651 0.8157625794410706 +vn 0.4970700442790985 0.4970700442790985 0.711226224899292 +vn 0.5675616860389709 0.5675616860389709 0.5964457392692566 +vn 0.6206955313682556 0.6206955313682556 0.4790346324443817 +vn 0.6582785844802856 0.6582785844802856 0.3651555478572845 +vn 0.6829983592033386 0.6829983592033386 0.258894681930542 +vn 0.6977246403694153 0.6977246403694153 0.1623596996068954 +vn 0.7050526142120361 0.7050526142120361 0.07616831362247467 +vn 0.7071067690849304 0.7071067690849304 0 +vn 0.3213345408439636 0.4809111356735229 0.8157625794410706 +vn 0.3905454277992249 0.584492564201355 0.711226224899292 +vn 0.4459303319454193 0.6673819422721863 0.5964457392692566 +vn 0.4876773357391357 0.7298607230186462 0.4790346324443817 +vn 0.5172061920166016 0.7740537524223328 0.3651555478572845 +vn 0.5366283655166626 0.8031210899353027 0.258894681930542 +vn 0.5481986999511719 0.8204373717308044 0.1623596996068954 +vn 0.5539562702178955 0.8290541768074036 0.07616831362247467 +vn 0.5555702447891235 0.8314695954322815 0 +vn 0.221339076757431 0.5343598127365112 0.8157625794410706 +vn 0.2690123915672302 0.649453341960907 0.711226224899292 +vn 0.3071621656417847 0.7415550351142883 0.5964457392692566 +vn 0.3359179794788361 0.8109777569770813 0.4790346324443817 +vn 0.3562577962875366 0.8600824475288391 0.3651555478572845 +vn 0.369636058807373 0.8923803567886353 0.258894681930542 +vn 0.3776058554649353 0.9116211533546448 0.1623596996068954 +vn 0.3815717399120331 0.9211956262588501 0.07616831362247467 +vn 0.3826834261417389 0.9238795042037964 0 +vn 0.1128376871347427 0.5672733783721924 0.8157625794410706 +vn 0.1371413171291351 0.6894559860229492 0.711226224899292 +vn 0.1565899103879929 0.7872306704521179 0.5964457392692566 +vn 0.1712495088577271 0.8609293699264526 0.4790346324443817 +vn 0.1816186606884003 0.9130586385726929 0.3651555478572845 +vn 0.188438817858696 0.9473459720611572 0.258894681930542 +vn 0.1925017982721329 0.9677718877792358 0.1623596996068954 +vn 0.1945235729217529 0.9779360890388489 0.07616831362247467 +vn 0.1950903236865997 0.9807852506637573 0 +vn -3.529905187593663e-11 0.5783869028091431 0.8157625794410706 +vn -4.279271728635514e-11 0.7029632329940796 0.711226224899292 +vn -4.841034864644378e-11 0.802653431892395 0.5964457392692566 +vn -5.187339099932409e-11 0.8777959942817688 0.4790346324443817 +vn -5.277426412542141e-11 0.9309465289115906 0.3651555478572845 +vn -5.009330450445049e-11 0.9659055471420288 0.258894681930542 +vn -4.103605649730113e-11 0.9867316484451294 0.1623596996068954 +vn -2.012152944264045e-11 0.997094988822937 0.07616831362247467 +vn 1.836970146528854e-16 1 0 +vn -0.1128376871347427 0.5672733783721924 0.8157625794410706 +vn -0.1371413171291351 0.6894559860229492 0.711226224899292 +vn -0.1565899103879929 0.7872306704521179 0.5964457392692566 +vn -0.1712495088577271 0.8609293699264526 0.4790346324443817 +vn -0.1816186606884003 0.9130586385726929 0.3651555478572845 +vn -0.1884388327598572 0.9473459720611572 0.258894681930542 +vn -0.1925017982721329 0.9677718877792358 0.1623596996068954 +vn -0.1945235729217529 0.9779360890388489 0.07616831362247467 +vn -0.1950903236865997 0.9807852506637573 0 +vn -0.221339076757431 0.5343598127365112 0.8157625794410706 +vn -0.2690123915672302 0.649453341960907 0.711226224899292 +vn -0.3071621656417847 0.7415550351142883 0.5964457392692566 +vn -0.3359179794788361 0.8109777569770813 0.4790346324443817 +vn -0.356257826089859 0.8600824475288391 0.3651555478572845 +vn -0.369636058807373 0.8923803567886353 0.258894681930542 +vn -0.3776058554649353 0.9116211533546448 0.1623596996068954 +vn -0.3815717399120331 0.9211956262588501 0.07616831362247467 +vn -0.3826834261417389 0.9238795042037964 0 +vn -0.3213345408439636 0.4809111356735229 0.8157625794410706 +vn -0.3905454277992249 0.584492564201355 0.711226224899292 +vn -0.4459303319454193 0.6673819422721863 0.5964457392692566 +vn -0.4876773357391357 0.7298607230186462 0.4790346324443817 +vn -0.5172061920166016 0.7740537524223328 0.3651555478572845 +vn -0.5366283655166626 0.8031210899353027 0.258894681930542 +vn -0.5481986999511719 0.8204373717308044 0.1623596996068954 +vn -0.5539562702178955 0.8290541768074036 0.07616831362247467 +vn -0.5555702447891235 0.8314695954322815 0 +vn -0.4089812934398651 0.4089812934398651 0.8157625794410706 +vn -0.4970700442790985 0.4970700442790985 0.711226224899292 +vn -0.5675616860389709 0.5675616860389709 0.5964457392692566 +vn -0.6206955313682556 0.6206955313682556 0.4790346324443817 +vn -0.6582785844802856 0.6582785844802856 0.3651555478572845 +vn -0.6829983592033386 0.6829983592033386 0.258894681930542 +vn -0.6977246403694153 0.6977246403694153 0.1623596996068954 +vn -0.7050526142120361 0.7050526142120361 0.07616831362247467 +vn -0.7071067690849304 0.7071067690849304 0 +vn -0.4809111356735229 0.3213345408439636 0.8157625794410706 +vn -0.584492564201355 0.3905454277992249 0.711226224899292 +vn -0.6673819422721863 0.4459303319454193 0.5964457392692566 +vn -0.7298607230186462 0.4876773357391357 0.4790346324443817 +vn -0.7740537524223328 0.5172061920166016 0.3651555478572845 +vn -0.8031210899353027 0.5366283655166626 0.258894681930542 +vn -0.8204373717308044 0.5481986999511719 0.1623596996068954 +vn -0.8290541768074036 0.5539562702178955 0.07616831362247467 +vn -0.8314695954322815 0.5555702447891235 0 +vn -0.5343598127365112 0.221339076757431 0.8157625794410706 +vn -0.649453341960907 0.2690123915672302 0.711226224899292 +vn -0.7415550351142883 0.3071621656417847 0.5964457392692566 +vn -0.8109777569770813 0.3359179794788361 0.4790346324443817 +vn -0.8600824475288391 0.3562577962875366 0.3651555478572845 +vn -0.8923803567886353 0.369636058807373 0.258894681930542 +vn -0.9116211533546448 0.3776058554649353 0.1623596996068954 +vn -0.9211956262588501 0.3815717399120331 0.07616831362247467 +vn -0.9238795042037964 0.3826834261417389 0 +vn -0.5672733783721924 0.1128376871347427 0.8157625794410706 +vn -0.6894559860229492 0.1371413171291351 0.711226224899292 +vn -0.7872306704521179 0.1565899103879929 0.5964457392692566 +vn -0.8609293699264526 0.1712495088577271 0.4790346324443817 +vn -0.9130586385726929 0.1816186606884003 0.3651555478572845 +vn -0.9473459720611572 0.188438817858696 0.258894681930542 +vn -0.9677718877792358 0.1925017982721329 0.1623596996068954 +vn -0.9779360890388489 0.1945235729217529 0.07616831362247467 +vn -0.9807852506637573 0.1950903236865997 0 +vn -0.5783869028091431 -3.529901718146711e-11 0.8157625794410706 +vn -0.7029632329940796 -4.279267565299172e-11 0.711226224899292 +vn -0.802653431892395 -4.84102966047395e-11 0.5964457392692566 +vn -0.8777959942817688 -5.187333895761981e-11 0.4790346324443817 +vn -0.9309465289115906 -5.277420861427018e-11 0.3651555478572845 +vn -0.9659055471420288 -5.00932455238523e-11 0.258894681930542 +vn -0.9867316484451294 -4.103599751670295e-11 0.1623596996068954 +vn -0.997094988822937 -2.012146872731879e-11 0.07616831362247467 +vn -1 2.449293705170336e-16 0 +f 11/11/11 2/2/2 1/1/1 10/10/10 +f 12/12/12 3/3/3 2/2/2 11/11/11 +f 13/13/13 4/4/4 3/3/3 12/12/12 +f 14/14/14 5/5/5 4/4/4 13/13/13 +f 15/15/15 6/6/6 5/5/5 14/14/14 +f 16/16/16 7/7/7 6/6/6 15/15/15 +f 17/17/17 8/8/8 7/7/7 16/16/16 +f 18/18/18 9/9/9 8/8/8 17/17/17 +f 20/20/20 11/11/11 10/10/10 19/19/19 +f 21/21/21 12/12/12 11/11/11 20/20/20 +f 22/22/22 13/13/13 12/12/12 21/21/21 +f 23/23/23 14/14/14 13/13/13 22/22/22 +f 24/24/24 15/15/15 14/14/14 23/23/23 +f 25/25/25 16/16/16 15/15/15 24/24/24 +f 26/26/26 17/17/17 16/16/16 25/25/25 +f 27/27/27 18/18/18 17/17/17 26/26/26 +f 29/29/29 20/20/20 19/19/19 28/28/28 +f 30/30/30 21/21/21 20/20/20 29/29/29 +f 31/31/31 22/22/22 21/21/21 30/30/30 +f 32/32/32 23/23/23 22/22/22 31/31/31 +f 33/33/33 24/24/24 23/23/23 32/32/32 +f 34/34/34 25/25/25 24/24/24 33/33/33 +f 35/35/35 26/26/26 25/25/25 34/34/34 +f 36/36/36 27/27/27 26/26/26 35/35/35 +f 38/38/38 29/29/29 28/28/28 37/37/37 +f 39/39/39 30/30/30 29/29/29 38/38/38 +f 40/40/40 31/31/31 30/30/30 39/39/39 +f 41/41/41 32/32/32 31/31/31 40/40/40 +f 42/42/42 33/33/33 32/32/32 41/41/41 +f 43/43/43 34/34/34 33/33/33 42/42/42 +f 44/44/44 35/35/35 34/34/34 43/43/43 +f 45/45/45 36/36/36 35/35/35 44/44/44 +f 47/47/47 38/38/38 37/37/37 46/46/46 +f 48/48/48 39/39/39 38/38/38 47/47/47 +f 49/49/49 40/40/40 39/39/39 48/48/48 +f 50/50/50 41/41/41 40/40/40 49/49/49 +f 51/51/51 42/42/42 41/41/41 50/50/50 +f 52/52/52 43/43/43 42/42/42 51/51/51 +f 53/53/53 44/44/44 43/43/43 52/52/52 +f 54/54/54 45/45/45 44/44/44 53/53/53 +f 56/56/56 47/47/47 46/46/46 55/55/55 +f 57/57/57 48/48/48 47/47/47 56/56/56 +f 58/58/58 49/49/49 48/48/48 57/57/57 +f 59/59/59 50/50/50 49/49/49 58/58/58 +f 60/60/60 51/51/51 50/50/50 59/59/59 +f 61/61/61 52/52/52 51/51/51 60/60/60 +f 62/62/62 53/53/53 52/52/52 61/61/61 +f 63/63/63 54/54/54 53/53/53 62/62/62 +f 65/65/65 56/56/56 55/55/55 64/64/64 +f 66/66/66 57/57/57 56/56/56 65/65/65 +f 67/67/67 58/58/58 57/57/57 66/66/66 +f 68/68/68 59/59/59 58/58/58 67/67/67 +f 69/69/69 60/60/60 59/59/59 68/68/68 +f 70/70/70 61/61/61 60/60/60 69/69/69 +f 71/71/71 62/62/62 61/61/61 70/70/70 +f 72/72/72 63/63/63 62/62/62 71/71/71 +f 74/74/74 65/65/65 64/64/64 73/73/73 +f 75/75/75 66/66/66 65/65/65 74/74/74 +f 76/76/76 67/67/67 66/66/66 75/75/75 +f 77/77/77 68/68/68 67/67/67 76/76/76 +f 78/78/78 69/69/69 68/68/68 77/77/77 +f 79/79/79 70/70/70 69/69/69 78/78/78 +f 80/80/80 71/71/71 70/70/70 79/79/79 +f 81/81/81 72/72/72 71/71/71 80/80/80 +f 83/83/83 74/74/74 73/73/73 82/82/82 +f 84/84/84 75/75/75 74/74/74 83/83/83 +f 85/85/85 76/76/76 75/75/75 84/84/84 +f 86/86/86 77/77/77 76/76/76 85/85/85 +f 87/87/87 78/78/78 77/77/77 86/86/86 +f 88/88/88 79/79/79 78/78/78 87/87/87 +f 89/89/89 80/80/80 79/79/79 88/88/88 +f 90/90/90 81/81/81 80/80/80 89/89/89 +f 92/92/92 83/83/83 82/82/82 91/91/91 +f 93/93/93 84/84/84 83/83/83 92/92/92 +f 94/94/94 85/85/85 84/84/84 93/93/93 +f 95/95/95 86/86/86 85/85/85 94/94/94 +f 96/96/96 87/87/87 86/86/86 95/95/95 +f 97/97/97 88/88/88 87/87/87 96/96/96 +f 98/98/98 89/89/89 88/88/88 97/97/97 +f 99/99/99 90/90/90 89/89/89 98/98/98 +f 101/101/101 92/92/92 91/91/91 100/100/100 +f 102/102/102 93/93/93 92/92/92 101/101/101 +f 103/103/103 94/94/94 93/93/93 102/102/102 +f 104/104/104 95/95/95 94/94/94 103/103/103 +f 105/105/105 96/96/96 95/95/95 104/104/104 +f 106/106/106 97/97/97 96/96/96 105/105/105 +f 107/107/107 98/98/98 97/97/97 106/106/106 +f 108/108/108 99/99/99 98/98/98 107/107/107 +f 110/110/110 101/101/101 100/100/100 109/109/109 +f 111/111/111 102/102/102 101/101/101 110/110/110 +f 112/112/112 103/103/103 102/102/102 111/111/111 +f 113/113/113 104/104/104 103/103/103 112/112/112 +f 114/114/114 105/105/105 104/104/104 113/113/113 +f 115/115/115 106/106/106 105/105/105 114/114/114 +f 116/116/116 107/107/107 106/106/106 115/115/115 +f 117/117/117 108/108/108 107/107/107 116/116/116 +f 119/119/119 110/110/110 109/109/109 118/118/118 +f 120/120/120 111/111/111 110/110/110 119/119/119 +f 121/121/121 112/112/112 111/111/111 120/120/120 +f 122/122/122 113/113/113 112/112/112 121/121/121 +f 123/123/123 114/114/114 113/113/113 122/122/122 +f 124/124/124 115/115/115 114/114/114 123/123/123 +f 125/125/125 116/116/116 115/115/115 124/124/124 +f 126/126/126 117/117/117 116/116/116 125/125/125 +f 128/128/128 119/119/119 118/118/118 127/127/127 +f 129/129/129 120/120/120 119/119/119 128/128/128 +f 130/130/130 121/121/121 120/120/120 129/129/129 +f 131/131/131 122/122/122 121/121/121 130/130/130 +f 132/132/132 123/123/123 122/122/122 131/131/131 +f 133/133/133 124/124/124 123/123/123 132/132/132 +f 134/134/134 125/125/125 124/124/124 133/133/133 +f 135/135/135 126/126/126 125/125/125 134/134/134 +f 137/137/137 128/128/128 127/127/127 136/136/136 +f 138/138/138 129/129/129 128/128/128 137/137/137 +f 139/139/139 130/130/130 129/129/129 138/138/138 +f 140/140/140 131/131/131 130/130/130 139/139/139 +f 141/141/141 132/132/132 131/131/131 140/140/140 +f 142/142/142 133/133/133 132/132/132 141/141/141 +f 143/143/143 134/134/134 133/133/133 142/142/142 +f 144/144/144 135/135/135 134/134/134 143/143/143 +f 146/146/146 137/137/137 136/136/136 145/145/145 +f 147/147/147 138/138/138 137/137/137 146/146/146 +f 148/148/148 139/139/139 138/138/138 147/147/147 +f 149/149/149 140/140/140 139/139/139 148/148/148 +f 150/150/150 141/141/141 140/140/140 149/149/149 +f 151/151/151 142/142/142 141/141/141 150/150/150 +f 152/152/152 143/143/143 142/142/142 151/151/151 +f 153/153/153 144/144/144 143/143/143 152/152/152 +f 155/155/155 146/146/146 145/145/145 154/154/154 +f 156/156/156 147/147/147 146/146/146 155/155/155 +f 157/157/157 148/148/148 147/147/147 156/156/156 +f 158/158/158 149/149/149 148/148/148 157/157/157 +f 159/159/159 150/150/150 149/149/149 158/158/158 +f 160/160/160 151/151/151 150/150/150 159/159/159 +f 161/161/161 152/152/152 151/151/151 160/160/160 +f 162/162/162 153/153/153 152/152/152 161/161/161 +f 164/164/164 155/155/155 154/154/154 163/163/163 +f 165/165/165 156/156/156 155/155/155 164/164/164 +f 166/166/166 157/157/157 156/156/156 165/165/165 +f 167/167/167 158/158/158 157/157/157 166/166/166 +f 168/168/168 159/159/159 158/158/158 167/167/167 +f 169/169/169 160/160/160 159/159/159 168/168/168 +f 170/170/170 161/161/161 160/160/160 169/169/169 +f 171/171/171 162/162/162 161/161/161 170/170/170 +f 173/173/173 164/164/164 163/163/163 172/172/172 +f 174/174/174 165/165/165 164/164/164 173/173/173 +f 175/175/175 166/166/166 165/165/165 174/174/174 +f 176/176/176 167/167/167 166/166/166 175/175/175 +f 177/177/177 168/168/168 167/167/167 176/176/176 +f 178/178/178 169/169/169 168/168/168 177/177/177 +f 179/179/179 170/170/170 169/169/169 178/178/178 +f 180/180/180 171/171/171 170/170/170 179/179/179 +f 182/182/182 173/173/173 172/172/172 181/181/181 +f 183/183/183 174/174/174 173/173/173 182/182/182 +f 184/184/184 175/175/175 174/174/174 183/183/183 +f 185/185/185 176/176/176 175/175/175 184/184/184 +f 186/186/186 177/177/177 176/176/176 185/185/185 +f 187/187/187 178/178/178 177/177/177 186/186/186 +f 188/188/188 179/179/179 178/178/178 187/187/187 +f 189/189/189 180/180/180 179/179/179 188/188/188 +f 191/191/191 182/182/182 181/181/181 190/190/190 +f 192/192/192 183/183/183 182/182/182 191/191/191 +f 193/193/193 184/184/184 183/183/183 192/192/192 +f 194/194/194 185/185/185 184/184/184 193/193/193 +f 195/195/195 186/186/186 185/185/185 194/194/194 +f 196/196/196 187/187/187 186/186/186 195/195/195 +f 197/197/197 188/188/188 187/187/187 196/196/196 +f 198/198/198 189/189/189 188/188/188 197/197/197 +f 200/200/200 191/191/191 190/190/190 199/199/199 +f 201/201/201 192/192/192 191/191/191 200/200/200 +f 202/202/202 193/193/193 192/192/192 201/201/201 +f 203/203/203 194/194/194 193/193/193 202/202/202 +f 204/204/204 195/195/195 194/194/194 203/203/203 +f 205/205/205 196/196/196 195/195/195 204/204/204 +f 206/206/206 197/197/197 196/196/196 205/205/205 +f 207/207/207 198/198/198 197/197/197 206/206/206 +f 209/209/209 200/200/200 199/199/199 208/208/208 +f 210/210/210 201/201/201 200/200/200 209/209/209 +f 211/211/211 202/202/202 201/201/201 210/210/210 +f 212/212/212 203/203/203 202/202/202 211/211/211 +f 213/213/213 204/204/204 203/203/203 212/212/212 +f 214/214/214 205/205/205 204/204/204 213/213/213 +f 215/215/215 206/206/206 205/205/205 214/214/214 +f 216/216/216 207/207/207 206/206/206 215/215/215 +f 218/218/218 209/209/209 208/208/208 217/217/217 +f 219/219/219 210/210/210 209/209/209 218/218/218 +f 220/220/220 211/211/211 210/210/210 219/219/219 +f 221/221/221 212/212/212 211/211/211 220/220/220 +f 222/222/222 213/213/213 212/212/212 221/221/221 +f 223/223/223 214/214/214 213/213/213 222/222/222 +f 224/224/224 215/215/215 214/214/214 223/223/223 +f 225/225/225 216/216/216 215/215/215 224/224/224 +f 227/227/227 218/218/218 217/217/217 226/226/226 +f 228/228/228 219/219/219 218/218/218 227/227/227 +f 229/229/229 220/220/220 219/219/219 228/228/228 +f 230/230/230 221/221/221 220/220/220 229/229/229 +f 231/231/231 222/222/222 221/221/221 230/230/230 +f 232/232/232 223/223/223 222/222/222 231/231/231 +f 233/233/233 224/224/224 223/223/223 232/232/232 +f 234/234/234 225/225/225 224/224/224 233/233/233 +f 236/236/236 227/227/227 226/226/226 235/235/235 +f 237/237/237 228/228/228 227/227/227 236/236/236 +f 238/238/238 229/229/229 228/228/228 237/237/237 +f 239/239/239 230/230/230 229/229/229 238/238/238 +f 240/240/240 231/231/231 230/230/230 239/239/239 +f 241/241/241 232/232/232 231/231/231 240/240/240 +f 242/242/242 233/233/233 232/232/232 241/241/241 +f 243/243/243 234/234/234 233/233/233 242/242/242 +f 245/245/245 236/236/236 235/235/235 244/244/244 +f 246/246/246 237/237/237 236/236/236 245/245/245 +f 247/247/247 238/238/238 237/237/237 246/246/246 +f 248/248/248 239/239/239 238/238/238 247/247/247 +f 249/249/249 240/240/240 239/239/239 248/248/248 +f 250/250/250 241/241/241 240/240/240 249/249/249 +f 251/251/251 242/242/242 241/241/241 250/250/250 +f 252/252/252 243/243/243 242/242/242 251/251/251 +f 254/254/254 245/245/245 244/244/244 253/253/253 +f 255/255/255 246/246/246 245/245/245 254/254/254 +f 256/256/256 247/247/247 246/246/246 255/255/255 +f 257/257/257 248/248/248 247/247/247 256/256/256 +f 258/258/258 249/249/249 248/248/248 257/257/257 +f 259/259/259 250/250/250 249/249/249 258/258/258 +f 260/260/260 251/251/251 250/250/250 259/259/259 +f 261/261/261 252/252/252 251/251/251 260/260/260 +f 263/263/263 254/254/254 253/253/253 262/262/262 +f 264/264/264 255/255/255 254/254/254 263/263/263 +f 265/265/265 256/256/256 255/255/255 264/264/264 +f 266/266/266 257/257/257 256/256/256 265/265/265 +f 267/267/267 258/258/258 257/257/257 266/266/266 +f 268/268/268 259/259/259 258/258/258 267/267/267 +f 269/269/269 260/260/260 259/259/259 268/268/268 +f 270/270/270 261/261/261 260/260/260 269/269/269 +f 272/272/272 263/263/263 262/262/262 271/271/271 +f 273/273/273 264/264/264 263/263/263 272/272/272 +f 274/274/274 265/265/265 264/264/264 273/273/273 +f 275/275/275 266/266/266 265/265/265 274/274/274 +f 276/276/276 267/267/267 266/266/266 275/275/275 +f 277/277/277 268/268/268 267/267/267 276/276/276 +f 278/278/278 269/269/269 268/268/268 277/277/277 +f 279/279/279 270/270/270 269/269/269 278/278/278 +f 281/281/281 272/272/272 271/271/271 280/280/280 +f 282/282/282 273/273/273 272/272/272 281/281/281 +f 283/283/283 274/274/274 273/273/273 282/282/282 +f 284/284/284 275/275/275 274/274/274 283/283/283 +f 285/285/285 276/276/276 275/275/275 284/284/284 +f 286/286/286 277/277/277 276/276/276 285/285/285 +f 287/287/287 278/278/278 277/277/277 286/286/286 +f 288/288/288 279/279/279 278/278/278 287/287/287 +f 290/290/290 281/281/281 280/280/280 289/289/289 +f 291/291/291 282/282/282 281/281/281 290/290/290 +f 292/292/292 283/283/283 282/282/282 291/291/291 +f 293/293/293 284/284/284 283/283/283 292/292/292 +f 294/294/294 285/285/285 284/284/284 293/293/293 +f 295/295/295 286/286/286 285/285/285 294/294/294 +f 296/296/296 287/287/287 286/286/286 295/295/295 +f 297/297/297 288/288/288 287/287/287 296/296/296 +g Default +o object_2 +v 0 3.5 8.5 +v 0 3.432748556137085 9.182816505432129 +v 0 3.233578443527222 9.839391708374023 +v 0 2.910143613815308 10.44449615478516 +v 0 2.474873781204224 10.97487354278564 +v 0 1.944495797157288 11.41014385223389 +v 0 1.339392066001892 11.7335786819458 +v 0 0.6828161478042603 11.93274879455566 +v 0 2.143131925849595e-16 12 +v 0 -0.6828161478042603 11.93274879455566 +v 0 -1.339392066001892 11.7335786819458 +v 0 -1.944495797157288 11.41014385223389 +v 0 -2.474873781204224 10.97487354278564 +v 0 -2.910143613815308 10.44449615478516 +v 0 -3.233578443527222 9.839391708374023 +v 0 -3.432748556137085 9.182816505432129 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.1332108229398727 3.432748556137085 9.169695854187012 +v -0.2613024115562439 3.233578443527222 9.813655853271484 +v -0.3793523013591766 2.910143613815308 10.40713310241699 +v -0.48282390832901 2.474873781204224 10.92731952667236 +v -0.5677408576011658 1.944495797157288 11.35422611236572 +v -0.6308398246765137 1.339392066001892 11.67144584655762 +v -0.669696033000946 0.6828161478042603 11.86678886413574 +v -0.6828161478042603 2.143131925849595e-16 11.93274879455566 +v -0.669696033000946 -0.6828161478042603 11.86678886413574 +v -0.6308398246765137 -1.339392066001892 11.67144584655762 +v -0.5677408576011658 -1.944495797157288 11.35422611236572 +v -0.48282390832901 -2.474873781204224 10.92731952667236 +v -0.3793523013591766 -2.910143613815308 10.40713310241699 +v -0.2613024115562439 -3.233578443527222 9.813655853271484 +v -0.1332108229398727 -3.432748556137085 9.169695854187012 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.2613024115562439 3.432748556137085 9.130840301513672 +v -0.5125631093978882 3.233578443527222 9.73743724822998 +v -0.7441263198852539 2.910143613815308 10.29648017883301 +v -0.9470931887626648 2.474873781204224 10.78648471832275 +v -1.113663792610168 1.944495797157288 11.18862247467041 +v -1.237436890602112 1.339392066001892 11.48743724822998 +v -1.313655972480774 0.6828161478042603 11.67144584655762 +v -1.339392066001892 2.143131925849595e-16 11.7335786819458 +v -1.313655972480774 -0.6828161478042603 11.67144584655762 +v -1.237436890602112 -1.339392066001892 11.48743724822998 +v -1.113663792610168 -1.944495797157288 11.18862247467041 +v -0.9470931887626648 -2.474873781204224 10.78648471832275 +v -0.7441263198852539 -2.910143613815308 10.29648017883301 +v -0.5125631093978882 -3.233578443527222 9.73743724822998 +v -0.2613024115562439 -3.432748556137085 9.130840301513672 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.3793523013591766 3.432748556137085 9.067740440368652 +v -0.7441263198852539 3.233578443527222 9.613663673400879 +v -1.080304026603699 2.910143613815308 10.11678886413574 +v -1.374966144561768 2.474873781204224 10.55778217315674 +v -1.616789221763611 1.944495797157288 10.91969585418701 +v -1.796479940414429 1.339392066001892 11.18862247467041 +v -1.907132863998413 0.6828161478042603 11.35422611236572 +v -1.944495797157288 2.143131925849595e-16 11.41014385223389 +v -1.907132863998413 -0.6828161478042603 11.35422611236572 +v -1.796479940414429 -1.339392066001892 11.18862247467041 +v -1.616789221763611 -1.944495797157288 10.91969585418701 +v -1.374966144561768 -2.474873781204224 10.55778217315674 +v -1.080304026603699 -2.910143613815308 10.11678886413574 +v -0.7441263198852539 -3.233578443527222 9.613663673400879 +v -0.3793523013591766 -3.432748556137085 9.067740440368652 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.48282390832901 3.432748556137085 8.982824325561523 +v -0.9470931887626648 3.233578443527222 9.44709300994873 +v -1.374966144561768 2.910143613815308 9.874966621398926 +v -1.75 2.474873781204224 10.25 +v -2.057782411575317 1.944495797157288 10.55778217315674 +v -2.286485195159912 1.339392066001892 10.78648471832275 +v -2.427319765090942 0.6828161478042603 10.92731952667236 +v -2.474873781204224 2.143131925849595e-16 10.97487354278564 +v -2.427319765090942 -0.6828161478042603 10.92731952667236 +v -2.286485195159912 -1.339392066001892 10.78648471832275 +v -2.057782411575317 -1.944495797157288 10.55778217315674 +v -1.75 -2.474873781204224 10.25 +v -1.374966144561768 -2.910143613815308 9.874966621398926 +v -0.9470931887626648 -3.233578443527222 9.44709300994873 +v -0.48282390832901 -3.432748556137085 8.982824325561523 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.5677408576011658 3.432748556137085 8.879352569580078 +v -1.113663792610168 3.233578443527222 9.244126319885254 +v -1.616789221763611 2.910143613815308 9.580304145812988 +v -2.057782411575317 2.474873781204224 9.874966621398926 +v -2.419696092605591 1.944495797157288 10.11678886413574 +v -2.688622236251831 1.339392066001892 10.29648017883301 +v -2.854226112365723 0.6828161478042603 10.40713310241699 +v -2.910143613815308 2.143131925849595e-16 10.44449615478516 +v -2.854226112365723 -0.6828161478042603 10.40713310241699 +v -2.688622236251831 -1.339392066001892 10.29648017883301 +v -2.419696092605591 -1.944495797157288 10.11678886413574 +v -2.057782411575317 -2.474873781204224 9.874966621398926 +v -1.616789221763611 -2.910143613815308 9.580304145812988 +v -1.113663792610168 -3.233578443527222 9.244126319885254 +v -0.5677408576011658 -3.432748556137085 8.879352569580078 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.6308398246765137 3.432748556137085 8.76130199432373 +v -1.237436890602112 3.233578443527222 9.01256275177002 +v -1.796479940414429 2.910143613815308 9.244126319885254 +v -2.286485195159912 2.474873781204224 9.44709300994873 +v -2.688622236251831 1.944495797157288 9.613663673400879 +v -2.987436771392822 1.339392066001892 9.73743724822998 +v -3.171446084976196 0.6828161478042603 9.813655853271484 +v -3.233578443527222 2.143131925849595e-16 9.839391708374023 +v -3.171446084976196 -0.6828161478042603 9.813655853271484 +v -2.987436771392822 -1.339392066001892 9.73743724822998 +v -2.688622236251831 -1.944495797157288 9.613663673400879 +v -2.286485195159912 -2.474873781204224 9.44709300994873 +v -1.796479940414429 -2.910143613815308 9.244126319885254 +v -1.237436890602112 -3.233578443527222 9.01256275177002 +v -0.6308398246765137 -3.432748556137085 8.76130199432373 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.669696033000946 3.432748556137085 8.633211135864258 +v -1.313655972480774 3.233578443527222 8.76130199432373 +v -1.907132863998413 2.910143613815308 8.879352569580078 +v -2.427319765090942 2.474873781204224 8.982824325561523 +v -2.854226112365723 1.944495797157288 9.067740440368652 +v -3.171446084976196 1.339392066001892 9.130840301513672 +v -3.366789102554321 0.6828161478042603 9.169695854187012 +v -3.432748556137085 2.143131925849595e-16 9.182816505432129 +v -3.366789102554321 -0.6828161478042603 9.169695854187012 +v -3.171446084976196 -1.339392066001892 9.130840301513672 +v -2.854226112365723 -1.944495797157288 9.067740440368652 +v -2.427319765090942 -2.474873781204224 8.982824325561523 +v -1.907132863998413 -2.910143613815308 8.879352569580078 +v -1.313655972480774 -3.233578443527222 8.76130199432373 +v -0.669696033000946 -3.432748556137085 8.633211135864258 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.6828161478042603 3.432748556137085 8.5 +v -1.339392066001892 3.233578443527222 8.5 +v -1.944495797157288 2.910143613815308 8.5 +v -2.474873781204224 2.474873781204224 8.5 +v -2.910143613815308 1.944495797157288 8.5 +v -3.233578443527222 1.339392066001892 8.5 +v -3.432748556137085 0.6828161478042603 8.5 +v -3.5 2.143131925849595e-16 8.5 +v -3.432748556137085 -0.6828161478042603 8.5 +v -3.233578443527222 -1.339392066001892 8.5 +v -2.910143613815308 -1.944495797157288 8.5 +v -2.474873781204224 -2.474873781204224 8.5 +v -1.944495797157288 -2.910143613815308 8.5 +v -1.339392066001892 -3.233578443527222 8.5 +v -0.6828161478042603 -3.432748556137085 8.5 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.669696033000946 3.432748556137085 8.366788864135742 +v -1.313655972480774 3.233578443527222 8.23869800567627 +v -1.907132863998413 2.910143613815308 8.120647430419922 +v -2.427319765090942 2.474873781204224 8.017175674438477 +v -2.854226112365723 1.944495797157288 7.932259082794189 +v -3.171446084976196 1.339392066001892 7.869160175323486 +v -3.366789102554321 0.6828161478042603 7.830304145812988 +v -3.432748556137085 2.143131925849595e-16 7.817183971405029 +v -3.366789102554321 -0.6828161478042603 7.830304145812988 +v -3.171446084976196 -1.339392066001892 7.869160175323486 +v -2.854226112365723 -1.944495797157288 7.932259082794189 +v -2.427319765090942 -2.474873781204224 8.017175674438477 +v -1.907132863998413 -2.910143613815308 8.120647430419922 +v -1.313655972480774 -3.233578443527222 8.23869800567627 +v -0.669696033000946 -3.432748556137085 8.366788864135742 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.6308398246765137 3.432748556137085 8.23869800567627 +v -1.237436890602112 3.233578443527222 7.987436771392822 +v -1.796479940414429 2.910143613815308 7.755873680114746 +v -2.286485195159912 2.474873781204224 7.55290699005127 +v -2.688622236251831 1.944495797157288 7.386336326599121 +v -2.987436771392822 1.339392066001892 7.262563228607178 +v -3.171446084976196 0.6828161478042603 7.186344146728516 +v -3.233578443527222 2.143131925849595e-16 7.160607814788818 +v -3.171446084976196 -0.6828161478042603 7.186344146728516 +v -2.987436771392822 -1.339392066001892 7.262563228607178 +v -2.688622236251831 -1.944495797157288 7.386336326599121 +v -2.286485195159912 -2.474873781204224 7.55290699005127 +v -1.796479940414429 -2.910143613815308 7.755873680114746 +v -1.237436890602112 -3.233578443527222 7.987436771392822 +v -0.6308398246765137 -3.432748556137085 8.23869800567627 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.5677408576011658 3.432748556137085 8.120647430419922 +v -1.113663792610168 3.233578443527222 7.755873680114746 +v -1.616789221763611 2.910143613815308 7.419695854187012 +v -2.057782411575317 2.474873781204224 7.125033855438232 +v -2.419696092605591 1.944495797157288 6.8832106590271 +v -2.688622236251831 1.339392066001892 6.70352029800415 +v -2.854226112365723 0.6828161478042603 6.592866897583008 +v -2.910143613815308 2.143131925849595e-16 6.555504322052002 +v -2.854226112365723 -0.6828161478042603 6.592866897583008 +v -2.688622236251831 -1.339392066001892 6.70352029800415 +v -2.419696092605591 -1.944495797157288 6.8832106590271 +v -2.057782411575317 -2.474873781204224 7.125033855438232 +v -1.616789221763611 -2.910143613815308 7.419695854187012 +v -1.113663792610168 -3.233578443527222 7.755873680114746 +v -0.5677408576011658 -3.432748556137085 8.120647430419922 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.48282390832901 3.432748556137085 8.017175674438477 +v -0.9470931887626648 3.233578443527222 7.55290699005127 +v -1.374966144561768 2.910143613815308 7.125033855438232 +v -1.75 2.474873781204224 6.75 +v -2.057782411575317 1.944495797157288 6.442217826843262 +v -2.286485195159912 1.339392066001892 6.213514804840088 +v -2.427319765090942 0.6828161478042603 6.072680473327637 +v -2.474873781204224 2.143131925849595e-16 6.025126457214355 +v -2.427319765090942 -0.6828161478042603 6.072680473327637 +v -2.286485195159912 -1.339392066001892 6.213514804840088 +v -2.057782411575317 -1.944495797157288 6.442217826843262 +v -1.75 -2.474873781204224 6.75 +v -1.374966144561768 -2.910143613815308 7.125033855438232 +v -0.9470931887626648 -3.233578443527222 7.55290699005127 +v -0.48282390832901 -3.432748556137085 8.017175674438477 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.3793523013591766 3.432748556137085 7.932259082794189 +v -0.7441263198852539 3.233578443527222 7.386336326599121 +v -1.080304026603699 2.910143613815308 6.8832106590271 +v -1.374966144561768 2.474873781204224 6.442217826843262 +v -1.616789221763611 1.944495797157288 6.080304145812988 +v -1.796479940414429 1.339392066001892 5.811378002166748 +v -1.796479940414429 -1.339392066001892 5.811378002166748 +v -1.616789221763611 -1.944495797157288 6.080304145812988 +v -1.374966144561768 -2.474873781204224 6.442217826843262 +v -1.080304026603699 -2.910143613815308 6.8832106590271 +v -0.7441263198852539 -3.233578443527222 7.386336326599121 +v -0.3793523013591766 -3.432748556137085 7.932259082794189 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.2613024115562439 3.432748556137085 7.869160175323486 +v -0.5125631093978882 3.233578443527222 7.262563228607178 +v -0.7441263198852539 2.910143613815308 6.70352029800415 +v -0.9470931887626648 2.474873781204224 6.213514804840088 +v -1.113663792610168 1.944495797157288 5.811378002166748 +v -1.113663792610168 -1.944495797157288 5.811378002166748 +v -0.9470931887626648 -2.474873781204224 6.213514804840088 +v -0.7441263198852539 -2.910143613815308 6.70352029800415 +v -0.5125631093978882 -3.233578443527222 7.262563228607178 +v -0.2613024115562439 -3.432748556137085 7.869160175323486 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -0.1332108229398727 3.432748556137085 7.830304145812988 +v -0.2613024115562439 3.233578443527222 7.186344146728516 +v -0.3793523013591766 2.910143613815308 6.592866897583008 +v -0.48282390832901 2.474873781204224 6.072680473327637 +v -0.48282390832901 -2.474873781204224 6.072680473327637 +v -0.3793523013591766 -2.910143613815308 6.592866897583008 +v -0.2613024115562439 -3.233578443527222 7.186344146728516 +v -0.1332108229398727 -3.432748556137085 7.830304145812988 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v -8.362085941073294e-17 3.432748556137085 7.817183971405029 +v -1.640282081684811e-16 3.233578443527222 7.160607814788818 +v -2.381320634642158e-16 2.910143613815308 6.555504322052002 +v -3.030846145024845e-16 2.474873781204224 6.025126457214355 +v -3.030846145024845e-16 -2.474873781204224 6.025126457214355 +v -2.381320634642158e-16 -2.910143613815308 6.555504322052002 +v -1.640282081684811e-16 -3.233578443527222 7.160607814788818 +v -8.362085941073294e-17 -3.432748556137085 7.817183971405029 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.1332108229398727 3.432748556137085 7.830304145812988 +v 0.2613024115562439 3.233578443527222 7.186344146728516 +v 0.3793523013591766 2.910143613815308 6.592866897583008 +v 0.48282390832901 2.474873781204224 6.072680473327637 +v 0.48282390832901 -2.474873781204224 6.072680473327637 +v 0.3793523013591766 -2.910143613815308 6.592866897583008 +v 0.2613024115562439 -3.233578443527222 7.186344146728516 +v 0.1332108229398727 -3.432748556137085 7.830304145812988 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.2613024115562439 3.432748556137085 7.869160175323486 +v 0.5125631093978882 3.233578443527222 7.262563228607178 +v 0.7441263198852539 2.910143613815308 6.70352029800415 +v 0.9470931887626648 2.474873781204224 6.213514804840088 +v 1.113663792610168 1.944495797157288 5.811378002166748 +v 1.113663792610168 -1.944495797157288 5.811378002166748 +v 0.9470931887626648 -2.474873781204224 6.213514804840088 +v 0.7441263198852539 -2.910143613815308 6.70352029800415 +v 0.5125631093978882 -3.233578443527222 7.262563228607178 +v 0.2613024115562439 -3.432748556137085 7.869160175323486 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.3793523013591766 3.432748556137085 7.932259082794189 +v 0.7441263198852539 3.233578443527222 7.386336326599121 +v 1.080304026603699 2.910143613815308 6.8832106590271 +v 1.374966144561768 2.474873781204224 6.442217826843262 +v 1.616789221763611 1.944495797157288 6.080304145812988 +v 1.796479940414429 1.339392066001892 5.811378002166748 +v 1.796479940414429 -1.339392066001892 5.811378002166748 +v 1.616789221763611 -1.944495797157288 6.080304145812988 +v 1.374966144561768 -2.474873781204224 6.442217826843262 +v 1.080304026603699 -2.910143613815308 6.8832106590271 +v 0.7441263198852539 -3.233578443527222 7.386336326599121 +v 0.3793523013591766 -3.432748556137085 7.932259082794189 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.48282390832901 3.432748556137085 8.017175674438477 +v 0.9470931887626648 3.233578443527222 7.55290699005127 +v 1.374966144561768 2.910143613815308 7.125033855438232 +v 1.75 2.474873781204224 6.75 +v 2.057782411575317 1.944495797157288 6.442217826843262 +v 2.286485195159912 1.339392066001892 6.213514804840088 +v 2.427319765090942 0.6828161478042603 6.072680473327637 +v 2.474873781204224 2.143131925849595e-16 6.025126457214355 +v 2.427319765090942 -0.6828161478042603 6.072680473327637 +v 2.286485195159912 -1.339392066001892 6.213514804840088 +v 2.057782411575317 -1.944495797157288 6.442217826843262 +v 1.75 -2.474873781204224 6.75 +v 1.374966144561768 -2.910143613815308 7.125033855438232 +v 0.9470931887626648 -3.233578443527222 7.55290699005127 +v 0.48282390832901 -3.432748556137085 8.017175674438477 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.5677408576011658 3.432748556137085 8.120647430419922 +v 1.113663792610168 3.233578443527222 7.755873680114746 +v 1.616789221763611 2.910143613815308 7.419695854187012 +v 2.057782411575317 2.474873781204224 7.125033855438232 +v 2.419696092605591 1.944495797157288 6.8832106590271 +v 2.688622236251831 1.339392066001892 6.70352029800415 +v 2.854226112365723 0.6828161478042603 6.592866897583008 +v 2.910143613815308 2.143131925849595e-16 6.555504322052002 +v 2.854226112365723 -0.6828161478042603 6.592866897583008 +v 2.688622236251831 -1.339392066001892 6.70352029800415 +v 2.419696092605591 -1.944495797157288 6.8832106590271 +v 2.057782411575317 -2.474873781204224 7.125033855438232 +v 1.616789221763611 -2.910143613815308 7.419695854187012 +v 1.113663792610168 -3.233578443527222 7.755873680114746 +v 0.5677408576011658 -3.432748556137085 8.120647430419922 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.6308398246765137 3.432748556137085 8.23869800567627 +v 1.237436890602112 3.233578443527222 7.987436771392822 +v 1.796479940414429 2.910143613815308 7.755873680114746 +v 2.286485195159912 2.474873781204224 7.55290699005127 +v 2.688622236251831 1.944495797157288 7.386336326599121 +v 2.987436771392822 1.339392066001892 7.262563228607178 +v 3.171446084976196 0.6828161478042603 7.186344146728516 +v 3.233578443527222 2.143131925849595e-16 7.160607814788818 +v 3.171446084976196 -0.6828161478042603 7.186344146728516 +v 2.987436771392822 -1.339392066001892 7.262563228607178 +v 2.688622236251831 -1.944495797157288 7.386336326599121 +v 2.286485195159912 -2.474873781204224 7.55290699005127 +v 1.796479940414429 -2.910143613815308 7.755873680114746 +v 1.237436890602112 -3.233578443527222 7.987436771392822 +v 0.6308398246765137 -3.432748556137085 8.23869800567627 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.669696033000946 3.432748556137085 8.366788864135742 +v 1.313655972480774 3.233578443527222 8.23869800567627 +v 1.907132863998413 2.910143613815308 8.120647430419922 +v 2.427319765090942 2.474873781204224 8.017175674438477 +v 2.854226112365723 1.944495797157288 7.932259082794189 +v 3.171446084976196 1.339392066001892 7.869160175323486 +v 3.366789102554321 0.6828161478042603 7.830304145812988 +v 3.432748556137085 2.143131925849595e-16 7.817183971405029 +v 3.366789102554321 -0.6828161478042603 7.830304145812988 +v 3.171446084976196 -1.339392066001892 7.869160175323486 +v 2.854226112365723 -1.944495797157288 7.932259082794189 +v 2.427319765090942 -2.474873781204224 8.017175674438477 +v 1.907132863998413 -2.910143613815308 8.120647430419922 +v 1.313655972480774 -3.233578443527222 8.23869800567627 +v 0.669696033000946 -3.432748556137085 8.366788864135742 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.6828161478042603 3.432748556137085 8.5 +v 1.339392066001892 3.233578443527222 8.5 +v 1.944495797157288 2.910143613815308 8.5 +v 2.474873781204224 2.474873781204224 8.5 +v 2.910143613815308 1.944495797157288 8.5 +v 3.233578443527222 1.339392066001892 8.5 +v 3.432748556137085 0.6828161478042603 8.5 +v 3.5 2.143131925849595e-16 8.5 +v 3.432748556137085 -0.6828161478042603 8.5 +v 3.233578443527222 -1.339392066001892 8.5 +v 2.910143613815308 -1.944495797157288 8.5 +v 2.474873781204224 -2.474873781204224 8.5 +v 1.944495797157288 -2.910143613815308 8.5 +v 1.339392066001892 -3.233578443527222 8.5 +v 0.6828161478042603 -3.432748556137085 8.5 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.669696033000946 3.432748556137085 8.633211135864258 +v 1.313655972480774 3.233578443527222 8.76130199432373 +v 1.907132863998413 2.910143613815308 8.879352569580078 +v 2.427319765090942 2.474873781204224 8.982824325561523 +v 2.854226112365723 1.944495797157288 9.067740440368652 +v 3.171446084976196 1.339392066001892 9.130840301513672 +v 3.366789102554321 0.6828161478042603 9.169695854187012 +v 3.432748556137085 2.143131925849595e-16 9.182816505432129 +v 3.366789102554321 -0.6828161478042603 9.169695854187012 +v 3.171446084976196 -1.339392066001892 9.130840301513672 +v 2.854226112365723 -1.944495797157288 9.067740440368652 +v 2.427319765090942 -2.474873781204224 8.982824325561523 +v 1.907132863998413 -2.910143613815308 8.879352569580078 +v 1.313655972480774 -3.233578443527222 8.76130199432373 +v 0.669696033000946 -3.432748556137085 8.633211135864258 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.6308398246765137 3.432748556137085 8.76130199432373 +v 1.237436890602112 3.233578443527222 9.01256275177002 +v 1.796479940414429 2.910143613815308 9.244126319885254 +v 2.286485195159912 2.474873781204224 9.44709300994873 +v 2.688622236251831 1.944495797157288 9.613663673400879 +v 2.987436771392822 1.339392066001892 9.73743724822998 +v 3.171446084976196 0.6828161478042603 9.813655853271484 +v 3.233578443527222 2.143131925849595e-16 9.839391708374023 +v 3.171446084976196 -0.6828161478042603 9.813655853271484 +v 2.987436771392822 -1.339392066001892 9.73743724822998 +v 2.688622236251831 -1.944495797157288 9.613663673400879 +v 2.286485195159912 -2.474873781204224 9.44709300994873 +v 1.796479940414429 -2.910143613815308 9.244126319885254 +v 1.237436890602112 -3.233578443527222 9.01256275177002 +v 0.6308398246765137 -3.432748556137085 8.76130199432373 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.5677408576011658 3.432748556137085 8.879352569580078 +v 1.113663792610168 3.233578443527222 9.244126319885254 +v 1.616789221763611 2.910143613815308 9.580304145812988 +v 2.057782411575317 2.474873781204224 9.874966621398926 +v 2.419696092605591 1.944495797157288 10.11678886413574 +v 2.688622236251831 1.339392066001892 10.29648017883301 +v 2.854226112365723 0.6828161478042603 10.40713310241699 +v 2.910143613815308 2.143131925849595e-16 10.44449615478516 +v 2.854226112365723 -0.6828161478042603 10.40713310241699 +v 2.688622236251831 -1.339392066001892 10.29648017883301 +v 2.419696092605591 -1.944495797157288 10.11678886413574 +v 2.057782411575317 -2.474873781204224 9.874966621398926 +v 1.616789221763611 -2.910143613815308 9.580304145812988 +v 1.113663792610168 -3.233578443527222 9.244126319885254 +v 0.5677408576011658 -3.432748556137085 8.879352569580078 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.48282390832901 3.432748556137085 8.982824325561523 +v 0.9470931887626648 3.233578443527222 9.44709300994873 +v 1.374966144561768 2.910143613815308 9.874966621398926 +v 1.75 2.474873781204224 10.25 +v 2.057782411575317 1.944495797157288 10.55778217315674 +v 2.286485195159912 1.339392066001892 10.78648471832275 +v 2.427319765090942 0.6828161478042603 10.92731952667236 +v 2.474873781204224 2.143131925849595e-16 10.97487354278564 +v 2.427319765090942 -0.6828161478042603 10.92731952667236 +v 2.286485195159912 -1.339392066001892 10.78648471832275 +v 2.057782411575317 -1.944495797157288 10.55778217315674 +v 1.75 -2.474873781204224 10.25 +v 1.374966144561768 -2.910143613815308 9.874966621398926 +v 0.9470931887626648 -3.233578443527222 9.44709300994873 +v 0.48282390832901 -3.432748556137085 8.982824325561523 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.3793523013591766 3.432748556137085 9.067740440368652 +v 0.7441263198852539 3.233578443527222 9.613663673400879 +v 1.080304026603699 2.910143613815308 10.11678886413574 +v 1.374966144561768 2.474873781204224 10.55778217315674 +v 1.616789221763611 1.944495797157288 10.91969585418701 +v 1.796479940414429 1.339392066001892 11.18862247467041 +v 1.907132863998413 0.6828161478042603 11.35422611236572 +v 1.944495797157288 2.143131925849595e-16 11.41014385223389 +v 1.907132863998413 -0.6828161478042603 11.35422611236572 +v 1.796479940414429 -1.339392066001892 11.18862247467041 +v 1.616789221763611 -1.944495797157288 10.91969585418701 +v 1.374966144561768 -2.474873781204224 10.55778217315674 +v 1.080304026603699 -2.910143613815308 10.11678886413574 +v 0.7441263198852539 -3.233578443527222 9.613663673400879 +v 0.3793523013591766 -3.432748556137085 9.067740440368652 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.2613024115562439 3.432748556137085 9.130840301513672 +v 0.5125631093978882 3.233578443527222 9.73743724822998 +v 0.7441263198852539 2.910143613815308 10.29648017883301 +v 0.9470931887626648 2.474873781204224 10.78648471832275 +v 1.113663792610168 1.944495797157288 11.18862247467041 +v 1.237436890602112 1.339392066001892 11.48743724822998 +v 1.313655972480774 0.6828161478042603 11.67144584655762 +v 1.339392066001892 2.143131925849595e-16 11.7335786819458 +v 1.313655972480774 -0.6828161478042603 11.67144584655762 +v 1.237436890602112 -1.339392066001892 11.48743724822998 +v 1.113663792610168 -1.944495797157288 11.18862247467041 +v 0.9470931887626648 -2.474873781204224 10.78648471832275 +v 0.7441263198852539 -2.910143613815308 10.29648017883301 +v 0.5125631093978882 -3.233578443527222 9.73743724822998 +v 0.2613024115562439 -3.432748556137085 9.130840301513672 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0.1332108229398727 3.432748556137085 9.169695854187012 +v 0.2613024115562439 3.233578443527222 9.813655853271484 +v 0.3793523013591766 2.910143613815308 10.40713310241699 +v 0.48282390832901 2.474873781204224 10.92731952667236 +v 0.5677408576011658 1.944495797157288 11.35422611236572 +v 0.6308398246765137 1.339392066001892 11.67144584655762 +v 0.669696033000946 0.6828161478042603 11.86678886413574 +v 0.6828161478042603 2.143131925849595e-16 11.93274879455566 +v 0.669696033000946 -0.6828161478042603 11.86678886413574 +v 0.6308398246765137 -1.339392066001892 11.67144584655762 +v 0.5677408576011658 -1.944495797157288 11.35422611236572 +v 0.48282390832901 -2.474873781204224 10.92731952667236 +v 0.3793523013591766 -2.910143613815308 10.40713310241699 +v 0.2613024115562439 -3.233578443527222 9.813655853271484 +v 0.1332108229398727 -3.432748556137085 9.169695854187012 +v 0 -3.5 8.5 +v 0 3.5 8.5 +v 0 3.432748556137085 9.182816505432129 +v 0 3.233578443527222 9.839391708374023 +v 0 2.910143613815308 10.44449615478516 +v 0 2.474873781204224 10.97487354278564 +v 0 1.944495797157288 11.41014385223389 +v 0 1.339392066001892 11.7335786819458 +v 0 0.6828161478042603 11.93274879455566 +v 0 2.143131925849595e-16 12 +v 0 -0.6828161478042603 11.93274879455566 +v 0 -1.339392066001892 11.7335786819458 +v 0 -1.944495797157288 11.41014385223389 +v 0 -2.474873781204224 10.97487354278564 +v 0 -2.910143613815308 10.44449615478516 +v 0 -3.233578443527222 9.839391708374023 +v 0 -3.432748556137085 9.182816505432129 +v 0 -3.5 8.5 +v -1.130335569381714 1.679389119148254 5.644830226898193 +v -1.360034704208374 1.499437212944031 5.644830226898193 +v -1.561476349830627 1.288331508636475 5.644830226898193 +v -1.75939953327179 1.001259088516235 5.644830226898193 +v -1.905122876167297 0.6844803094863892 5.644830226898193 +v -1.994323015213013 0.3473935723304749 5.644830226898193 +v -2.024353265762329 1.071565962924797e-16 5.644830226898193 +v -1.994323015213013 -0.3473935723304749 5.644830226898193 +v -1.905122876167297 -0.6844803094863892 5.644830226898193 +v -1.75939953327179 -1.001259088516235 5.644830226898193 +v -1.561476349830627 -1.288331508636475 5.644830226898193 +v -1.360034704208374 -1.499437212944031 5.644830226898193 +v -1.130335569381714 -1.679389119148254 5.644830226898193 +v -0.8694109320640564 -1.828151345252991 5.644830226898193 +v -0.5909016132354736 -1.936192631721497 5.644830226898193 +v -0.2995254099369049 -2.002073287963867 5.644830226898193 +v -2.858510145065465e-16 -2.024353265762329 5.644830226898193 +v 0.2995254099369049 -2.002073287963867 5.644830226898193 +v 0.5909016132354736 -1.936192631721497 5.644830226898193 +v 0.8694109320640564 -1.828151345252991 5.644830226898193 +v 1.130335569381714 -1.679389119148254 5.644830226898193 +v 1.360034704208374 -1.499437212944031 5.644830226898193 +v 1.561476349830627 -1.288331508636475 5.644830226898193 +v 1.75939953327179 -1.001259088516235 5.644830226898193 +v 1.905122876167297 -0.6844803094863892 5.644830226898193 +v 1.994323015213013 -0.3473935723304749 5.644830226898193 +v 2.024353265762329 3.292012078349559e-16 5.644830226898193 +v 1.994323015213013 0.3473935723304749 5.644830226898193 +v 1.905122876167297 0.6844803094863892 5.644830226898193 +v 1.75939953327179 1.001259088516235 5.644830226898193 +v 1.561476349830627 1.288331508636475 5.644830226898193 +v 1.360034704208374 1.499437212944031 5.644830226898193 +v 1.130335569381714 1.679389119148254 5.644830226898193 +v 0.8694109320640564 1.828151345252991 5.644830226898193 +v 0.5909016132354736 1.936192631721497 5.644830226898193 +v 0.2995254099369049 2.002073287963867 5.644830226898193 +v -4.5238446820032e-16 2.024353265762329 5.644830226898193 +v -0.2995254099369049 2.002073287963867 5.644830226898193 +v -0.5909016132354736 1.936192631721497 5.644830226898193 +v -0.8694109320640564 1.828151345252991 5.644830226898193 +vt 0 0 +vt 0 0.0625 +vt 0 0.125 +vt 0 0.1875 +vt 0 0.25 +vt 0 0.3125 +vt 0 0.375 +vt 0 0.4375 +vt 0 0.5 +vt 0 0.5625 +vt 0 0.625 +vt 0 0.6875 +vt 0 0.75 +vt 0 0.8125 +vt 0 0.875 +vt 0 0.9375 +vt 0 1 +vt 0.03125 0 +vt 0.03125 0.0625 +vt 0.03125 0.125 +vt 0.03125 0.1875 +vt 0.03125 0.25 +vt 0.03125 0.3125 +vt 0.03125 0.375 +vt 0.03125 0.4375 +vt 0.03125 0.5 +vt 0.03125 0.5625 +vt 0.03125 0.625 +vt 0.03125 0.6875 +vt 0.03125 0.75 +vt 0.03125 0.8125 +vt 0.03125 0.875 +vt 0.03125 0.9375 +vt 0.03125 1 +vt 0.0625 0 +vt 0.0625 0.0625 +vt 0.0625 0.125 +vt 0.0625 0.1875 +vt 0.0625 0.25 +vt 0.0625 0.3125 +vt 0.0625 0.375 +vt 0.0625 0.4375 +vt 0.0625 0.5 +vt 0.0625 0.5625 +vt 0.0625 0.625 +vt 0.0625 0.6875 +vt 0.0625 0.75 +vt 0.0625 0.8125 +vt 0.0625 0.875 +vt 0.0625 0.9375 +vt 0.0625 1 +vt 0.09375 0 +vt 0.09375 0.0625 +vt 0.09375 0.125 +vt 0.09375 0.1875 +vt 0.09375 0.25 +vt 0.09375 0.3125 +vt 0.09375 0.375 +vt 0.09375 0.4375 +vt 0.09375 0.5 +vt 0.09375 0.5625 +vt 0.09375 0.625 +vt 0.09375 0.6875 +vt 0.09375 0.75 +vt 0.09375 0.8125 +vt 0.09375 0.875 +vt 0.09375 0.9375 +vt 0.09375 1 +vt 0.125 0 +vt 0.125 0.0625 +vt 0.125 0.125 +vt 0.125 0.1875 +vt 0.125 0.25 +vt 0.125 0.3125 +vt 0.125 0.375 +vt 0.125 0.4375 +vt 0.125 0.5 +vt 0.125 0.5625 +vt 0.125 0.625 +vt 0.125 0.6875 +vt 0.125 0.75 +vt 0.125 0.8125 +vt 0.125 0.875 +vt 0.125 0.9375 +vt 0.125 1 +vt 0.15625 0 +vt 0.15625 0.0625 +vt 0.15625 0.125 +vt 0.15625 0.1875 +vt 0.15625 0.25 +vt 0.15625 0.3125 +vt 0.15625 0.375 +vt 0.15625 0.4375 +vt 0.15625 0.5 +vt 0.15625 0.5625 +vt 0.15625 0.625 +vt 0.15625 0.6875 +vt 0.15625 0.75 +vt 0.15625 0.8125 +vt 0.15625 0.875 +vt 0.15625 0.9375 +vt 0.15625 1 +vt 0.1875 0 +vt 0.1875 0.0625 +vt 0.1875 0.125 +vt 0.1875 0.1875 +vt 0.1875 0.25 +vt 0.1875 0.3125 +vt 0.1875 0.375 +vt 0.1875 0.4375 +vt 0.1875 0.5 +vt 0.1875 0.5625 +vt 0.1875 0.625 +vt 0.1875 0.6875 +vt 0.1875 0.75 +vt 0.1875 0.8125 +vt 0.1875 0.875 +vt 0.1875 0.9375 +vt 0.1875 1 +vt 0.21875 0 +vt 0.21875 0.0625 +vt 0.21875 0.125 +vt 0.21875 0.1875 +vt 0.21875 0.25 +vt 0.21875 0.3125 +vt 0.21875 0.375 +vt 0.21875 0.4375 +vt 0.21875 0.5 +vt 0.21875 0.5625 +vt 0.21875 0.625 +vt 0.21875 0.6875 +vt 0.21875 0.75 +vt 0.21875 0.8125 +vt 0.21875 0.875 +vt 0.21875 0.9375 +vt 0.21875 1 +vt 0.25 0 +vt 0.25 0.0625 +vt 0.25 0.125 +vt 0.25 0.1875 +vt 0.25 0.25 +vt 0.25 0.3125 +vt 0.25 0.375 +vt 0.25 0.4375 +vt 0.25 0.5 +vt 0.25 0.5625 +vt 0.25 0.625 +vt 0.25 0.6875 +vt 0.25 0.75 +vt 0.25 0.8125 +vt 0.25 0.875 +vt 0.25 0.9375 +vt 0.25 1 +vt 0.28125 0 +vt 0.28125 0.0625 +vt 0.28125 0.125 +vt 0.28125 0.1875 +vt 0.28125 0.25 +vt 0.28125 0.3125 +vt 0.28125 0.375 +vt 0.28125 0.4375 +vt 0.28125 0.5 +vt 0.28125 0.5625 +vt 0.28125 0.625 +vt 0.28125 0.6875 +vt 0.28125 0.75 +vt 0.28125 0.8125 +vt 0.28125 0.875 +vt 0.28125 0.9375 +vt 0.28125 1 +vt 0.3125 0 +vt 0.3125 0.0625 +vt 0.3125 0.125 +vt 0.3125 0.1875 +vt 0.3125 0.25 +vt 0.3125 0.3125 +vt 0.3125 0.375 +vt 0.3125 0.4375 +vt 0.3125 0.5 +vt 0.3125 0.5625 +vt 0.3125 0.625 +vt 0.3125 0.6875 +vt 0.3125 0.75 +vt 0.3125 0.8125 +vt 0.3125 0.875 +vt 0.3125 0.9375 +vt 0.3125 1 +vt 0.34375 0 +vt 0.34375 0.0625 +vt 0.34375 0.125 +vt 0.34375 0.1875 +vt 0.34375 0.25 +vt 0.34375 0.3125 +vt 0.34375 0.375 +vt 0.34375 0.4375 +vt 0.34375 0.5 +vt 0.34375 0.5625 +vt 0.34375 0.625 +vt 0.34375 0.6875 +vt 0.34375 0.75 +vt 0.34375 0.8125 +vt 0.34375 0.875 +vt 0.34375 0.9375 +vt 0.34375 1 +vt 0.375 0 +vt 0.375 0.0625 +vt 0.375 0.125 +vt 0.375 0.1875 +vt 0.375 0.25 +vt 0.375 0.3125 +vt 0.375 0.375 +vt 0.375 0.4375 +vt 0.375 0.5 +vt 0.375 0.5625 +vt 0.375 0.625 +vt 0.375 0.6875 +vt 0.375 0.75 +vt 0.375 0.8125 +vt 0.375 0.875 +vt 0.375 0.9375 +vt 0.375 1 +vt 0.40625 0 +vt 0.40625 0.0625 +vt 0.40625 0.125 +vt 0.40625 0.1875 +vt 0.40625 0.25 +vt 0.40625 0.3125 +vt 0.40625 0.375 +vt 0.40625 0.625 +vt 0.40625 0.6875 +vt 0.40625 0.75 +vt 0.40625 0.8125 +vt 0.40625 0.875 +vt 0.40625 0.9375 +vt 0.40625 1 +vt 0.4375 0 +vt 0.4375 0.0625 +vt 0.4375 0.125 +vt 0.4375 0.1875 +vt 0.4375 0.25 +vt 0.4375 0.3125 +vt 0.4375 0.6875 +vt 0.4375 0.75 +vt 0.4375 0.8125 +vt 0.4375 0.875 +vt 0.4375 0.9375 +vt 0.4375 1 +vt 0.46875 0 +vt 0.46875 0.0625 +vt 0.46875 0.125 +vt 0.46875 0.1875 +vt 0.46875 0.25 +vt 0.46875 0.75 +vt 0.46875 0.8125 +vt 0.46875 0.875 +vt 0.46875 0.9375 +vt 0.46875 1 +vt 0.5 0 +vt 0.5 0.0625 +vt 0.5 0.125 +vt 0.5 0.1875 +vt 0.5 0.25 +vt 0.5 0.75 +vt 0.5 0.8125 +vt 0.5 0.875 +vt 0.5 0.9375 +vt 0.5 1 +vt 0.53125 0 +vt 0.53125 0.0625 +vt 0.53125 0.125 +vt 0.53125 0.1875 +vt 0.53125 0.25 +vt 0.53125 0.75 +vt 0.53125 0.8125 +vt 0.53125 0.875 +vt 0.53125 0.9375 +vt 0.53125 1 +vt 0.5625 0 +vt 0.5625 0.0625 +vt 0.5625 0.125 +vt 0.5625 0.1875 +vt 0.5625 0.25 +vt 0.5625 0.3125 +vt 0.5625 0.6875 +vt 0.5625 0.75 +vt 0.5625 0.8125 +vt 0.5625 0.875 +vt 0.5625 0.9375 +vt 0.5625 1 +vt 0.59375 0 +vt 0.59375 0.0625 +vt 0.59375 0.125 +vt 0.59375 0.1875 +vt 0.59375 0.25 +vt 0.59375 0.3125 +vt 0.59375 0.375 +vt 0.59375 0.625 +vt 0.59375 0.6875 +vt 0.59375 0.75 +vt 0.59375 0.8125 +vt 0.59375 0.875 +vt 0.59375 0.9375 +vt 0.59375 1 +vt 0.625 0 +vt 0.625 0.0625 +vt 0.625 0.125 +vt 0.625 0.1875 +vt 0.625 0.25 +vt 0.625 0.3125 +vt 0.625 0.375 +vt 0.625 0.4375 +vt 0.625 0.5 +vt 0.625 0.5625 +vt 0.625 0.625 +vt 0.625 0.6875 +vt 0.625 0.75 +vt 0.625 0.8125 +vt 0.625 0.875 +vt 0.625 0.9375 +vt 0.625 1 +vt 0.65625 0 +vt 0.65625 0.0625 +vt 0.65625 0.125 +vt 0.65625 0.1875 +vt 0.65625 0.25 +vt 0.65625 0.3125 +vt 0.65625 0.375 +vt 0.65625 0.4375 +vt 0.65625 0.5 +vt 0.65625 0.5625 +vt 0.65625 0.625 +vt 0.65625 0.6875 +vt 0.65625 0.75 +vt 0.65625 0.8125 +vt 0.65625 0.875 +vt 0.65625 0.9375 +vt 0.65625 1 +vt 0.6875 0 +vt 0.6875 0.0625 +vt 0.6875 0.125 +vt 0.6875 0.1875 +vt 0.6875 0.25 +vt 0.6875 0.3125 +vt 0.6875 0.375 +vt 0.6875 0.4375 +vt 0.6875 0.5 +vt 0.6875 0.5625 +vt 0.6875 0.625 +vt 0.6875 0.6875 +vt 0.6875 0.75 +vt 0.6875 0.8125 +vt 0.6875 0.875 +vt 0.6875 0.9375 +vt 0.6875 1 +vt 0.71875 0 +vt 0.71875 0.0625 +vt 0.71875 0.125 +vt 0.71875 0.1875 +vt 0.71875 0.25 +vt 0.71875 0.3125 +vt 0.71875 0.375 +vt 0.71875 0.4375 +vt 0.71875 0.5 +vt 0.71875 0.5625 +vt 0.71875 0.625 +vt 0.71875 0.6875 +vt 0.71875 0.75 +vt 0.71875 0.8125 +vt 0.71875 0.875 +vt 0.71875 0.9375 +vt 0.71875 1 +vt 0.75 0 +vt 0.75 0.0625 +vt 0.75 0.125 +vt 0.75 0.1875 +vt 0.75 0.25 +vt 0.75 0.3125 +vt 0.75 0.375 +vt 0.75 0.4375 +vt 0.75 0.5 +vt 0.75 0.5625 +vt 0.75 0.625 +vt 0.75 0.6875 +vt 0.75 0.75 +vt 0.75 0.8125 +vt 0.75 0.875 +vt 0.75 0.9375 +vt 0.75 1 +vt 0.78125 0 +vt 0.78125 0.0625 +vt 0.78125 0.125 +vt 0.78125 0.1875 +vt 0.78125 0.25 +vt 0.78125 0.3125 +vt 0.78125 0.375 +vt 0.78125 0.4375 +vt 0.78125 0.5 +vt 0.78125 0.5625 +vt 0.78125 0.625 +vt 0.78125 0.6875 +vt 0.78125 0.75 +vt 0.78125 0.8125 +vt 0.78125 0.875 +vt 0.78125 0.9375 +vt 0.78125 1 +vt 0.8125 0 +vt 0.8125 0.0625 +vt 0.8125 0.125 +vt 0.8125 0.1875 +vt 0.8125 0.25 +vt 0.8125 0.3125 +vt 0.8125 0.375 +vt 0.8125 0.4375 +vt 0.8125 0.5 +vt 0.8125 0.5625 +vt 0.8125 0.625 +vt 0.8125 0.6875 +vt 0.8125 0.75 +vt 0.8125 0.8125 +vt 0.8125 0.875 +vt 0.8125 0.9375 +vt 0.8125 1 +vt 0.84375 0 +vt 0.84375 0.0625 +vt 0.84375 0.125 +vt 0.84375 0.1875 +vt 0.84375 0.25 +vt 0.84375 0.3125 +vt 0.84375 0.375 +vt 0.84375 0.4375 +vt 0.84375 0.5 +vt 0.84375 0.5625 +vt 0.84375 0.625 +vt 0.84375 0.6875 +vt 0.84375 0.75 +vt 0.84375 0.8125 +vt 0.84375 0.875 +vt 0.84375 0.9375 +vt 0.84375 1 +vt 0.875 0 +vt 0.875 0.0625 +vt 0.875 0.125 +vt 0.875 0.1875 +vt 0.875 0.25 +vt 0.875 0.3125 +vt 0.875 0.375 +vt 0.875 0.4375 +vt 0.875 0.5 +vt 0.875 0.5625 +vt 0.875 0.625 +vt 0.875 0.6875 +vt 0.875 0.75 +vt 0.875 0.8125 +vt 0.875 0.875 +vt 0.875 0.9375 +vt 0.875 1 +vt 0.90625 0 +vt 0.90625 0.0625 +vt 0.90625 0.125 +vt 0.90625 0.1875 +vt 0.90625 0.25 +vt 0.90625 0.3125 +vt 0.90625 0.375 +vt 0.90625 0.4375 +vt 0.90625 0.5 +vt 0.90625 0.5625 +vt 0.90625 0.625 +vt 0.90625 0.6875 +vt 0.90625 0.75 +vt 0.90625 0.8125 +vt 0.90625 0.875 +vt 0.90625 0.9375 +vt 0.90625 1 +vt 0.9375 0 +vt 0.9375 0.0625 +vt 0.9375 0.125 +vt 0.9375 0.1875 +vt 0.9375 0.25 +vt 0.9375 0.3125 +vt 0.9375 0.375 +vt 0.9375 0.4375 +vt 0.9375 0.5 +vt 0.9375 0.5625 +vt 0.9375 0.625 +vt 0.9375 0.6875 +vt 0.9375 0.75 +vt 0.9375 0.8125 +vt 0.9375 0.875 +vt 0.9375 0.9375 +vt 0.9375 1 +vt 0.96875 0 +vt 0.96875 0.0625 +vt 0.96875 0.125 +vt 0.96875 0.1875 +vt 0.96875 0.25 +vt 0.96875 0.3125 +vt 0.96875 0.375 +vt 0.96875 0.4375 +vt 0.96875 0.5 +vt 0.96875 0.5625 +vt 0.96875 0.625 +vt 0.96875 0.6875 +vt 0.96875 0.75 +vt 0.96875 0.8125 +vt 0.96875 0.875 +vt 0.96875 0.9375 +vt 0.96875 1 +vt 1 0 +vt 1 0.0625 +vt 1 0.125 +vt 1 0.1875 +vt 1 0.25 +vt 1 0.3125 +vt 1 0.375 +vt 1 0.4375 +vt 1 0.5 +vt 1 0.5625 +vt 1 0.625 +vt 1 0.6875 +vt 1 0.75 +vt 1 0.8125 +vt 1 0.875 +vt 1 0.9375 +vt 1 1 +vt 0.4400050938129425 0.3406999707221985 +vt 0.4292472898960114 0.3590704202651978 +vt 0.4203473627567291 0.3800064027309418 +vt 0.4121055901050568 0.4076497554779053 +vt 0.4063517153263092 0.4373456239700317 +vt 0.4029605388641357 0.4683538675308228 +vt 0.4018411934375763 0.5 +vt 0.4029601216316223 0.5316462516784668 +vt 0.4063517153263092 0.5626543760299683 +vt 0.4121055901050568 0.5923502445220947 +vt 0.4203473329544067 0.6199936270713806 +vt 0.4292478859424591 0.6409284472465515 +vt 0.4400049448013306 0.6593004465103149 +vt 0.4529560804367065 0.6749378442764282 +vt 0.4675197899341583 0.6865944862365723 +vt 0.4833644926548004 0.6938402652740479 +vt 0.5 0.6963174939155579 +vt 0.516635537147522 0.6938402652740479 +vt 0.5324801802635193 0.6865942478179932 +vt 0.5470439791679382 0.6749379634857178 +vt 0.5599948763847351 0.6593000292778015 +vt 0.5707526803016663 0.6409295797348022 +vt 0.5796526670455933 0.6199936270713806 +vt 0.5878944396972656 0.5923502445220947 +vt 0.5936482548713684 0.5626543760299683 +vt 0.5970394611358643 0.5316461324691772 +vt 0.5981587767601013 0.5 +vt 0.5970398783683777 0.4683537483215332 +vt 0.5936483144760132 0.4373456239700317 +vt 0.5878943800926208 0.4076497554779053 +vt 0.5796526670455933 0.3800063729286194 +vt 0.5707521438598633 0.3590715825557709 +vt 0.5599950551986694 0.3406995236873627 +vt 0.5470439195632935 0.3250621855258942 +vt 0.5324802398681641 0.3134054839611053 +vt 0.516635537147522 0.3061597049236298 +vt 0.5 0.3036825060844421 +vt 0.4833644926548004 0.3061597645282745 +vt 0.4675198197364807 0.3134057223796844 +vt 0.4529560208320618 0.3250620067119598 +vn 0 1 0 +vn 0 0.9807852506637573 0.1950903236865997 +vn 0 0.9238795042037964 0.3826834261417389 +vn 0 0.8314695954322815 0.5555702447891235 +vn 0 0.7071067690849304 0.7071067690849304 +vn 0 0.5555702447891235 0.8314695954322815 +vn 0 0.3826834261417389 0.9238795042037964 +vn 0 0.1950903236865997 0.9807852506637573 +vn 0 6.123234262925839e-17 1 +vn 0 -0.1950903236865997 0.9807852506637573 +vn 0 -0.3826834261417389 0.9238795042037964 +vn 0 -0.5555702447891235 0.8314695954322815 +vn 0 -0.7071067690849304 0.7071067690849304 +vn 0 -0.8314695954322815 0.5555702447891235 +vn 0 -0.9238795042037964 0.3826834261417389 +vn 0 -0.9807852506637573 0.1950903236865997 +vn 0 -1 1.224646852585168e-16 +vn 0 1 0 +vn -0.03806023299694061 0.9807852506637573 0.1913417130708694 +vn -0.07465783506631851 0.9238795042037964 0.3753302693367004 +vn -0.1083863750100136 0.8314695954322815 0.5448951125144958 +vn -0.1379496902227402 0.7071067690849304 0.6935199499130249 +vn -0.1622116714715958 0.5555702447891235 0.8154931664466858 +vn -0.1802399605512619 0.3826834261417389 0.9061274528503418 +vn -0.1913417130708694 0.1950903236865997 0.9619397521018982 +vn -0.1950903236865997 6.123234262925839e-17 0.9807852506637573 +vn -0.1913417130708694 -0.1950903236865997 0.9619397521018982 +vn -0.1802399605512619 -0.3826834261417389 0.9061274528503418 +vn -0.1622116714715958 -0.5555702447891235 0.8154931664466858 +vn -0.1379496902227402 -0.7071067690849304 0.6935199499130249 +vn -0.1083863750100136 -0.8314695954322815 0.5448951125144958 +vn -0.07465783506631851 -0.9238795042037964 0.3753302693367004 +vn -0.03806023299694061 -0.9807852506637573 0.1913417130708694 +vn -2.389167435368959e-17 -1 1.201115615565953e-16 +vn 0 1 0 +vn -0.07465783506631851 0.9807852506637573 0.1802399605512619 +vn -0.1464466154575348 0.9238795042037964 0.3535533845424652 +vn -0.2126075178384781 0.8314695954322815 0.5132799744606018 +vn -0.2705980539321899 0.7071067690849304 0.6532815098762512 +vn -0.3181896507740021 0.5555702447891235 0.7681777477264404 +vn -0.3535533845424652 0.3826834261417389 0.8535534143447876 +vn -0.3753302693367004 0.1950903236865997 0.9061274528503418 +vn -0.3826834261417389 6.123234262925839e-17 0.9238795042037964 +vn -0.3753302693367004 -0.1950903236865997 0.9061274528503418 +vn -0.3535533845424652 -0.3826834261417389 0.8535534143447876 +vn -0.3181896507740021 -0.5555702447891235 0.7681777477264404 +vn -0.2705980539321899 -0.7071067690849304 0.6532815098762512 +vn -0.2126075178384781 -0.8314695954322815 0.5132799744606018 +vn -0.1464466154575348 -0.9238795042037964 0.3535533845424652 +vn -0.07465783506631851 -0.9807852506637573 0.1802399605512619 +vn -4.686520469722492e-17 -1 1.131426112179504e-16 +vn 0 1 0 +vn -0.1083863750100136 0.9807852506637573 0.1622116714715958 +vn -0.2126075178384781 0.9238795042037964 0.3181896507740021 +vn -0.3086582720279694 0.8314695954322815 0.4619397521018982 +vn -0.39284747838974 0.7071067690849304 0.5879377722740173 +vn -0.4619397521018982 0.5555702447891235 0.6913416981697083 +vn -0.5132799744606018 0.3826834261417389 0.7681777477264404 +vn -0.5448951125144958 0.1950903236865997 0.8154931664466858 +vn -0.5555702447891235 6.123234262925839e-17 0.8314695954322815 +vn -0.5448951125144958 -0.1950903236865997 0.8154931664466858 +vn -0.5132799744606018 -0.3826834261417389 0.7681777477264404 +vn -0.4619397521018982 -0.5555702447891235 0.6913416981697083 +vn -0.39284747838974 -0.7071067690849304 0.5879377722740173 +vn -0.3086582720279694 -0.8314695954322815 0.4619397521018982 +vn -0.2126075178384781 -0.9238795042037964 0.3181896507740021 +vn -0.1083863750100136 -0.9807852506637573 0.1622116714715958 +vn -6.803772958229956e-17 -1 1.018256620900368e-16 +vn 0 1 0 +vn -0.1379496902227402 0.9807852506637573 0.1379496902227402 +vn -0.2705980539321899 0.9238795042037964 0.2705980539321899 +vn -0.39284747838974 0.8314695954322815 0.39284747838974 +vn -0.5 0.7071067690849304 0.5 +vn -0.5879377722740173 0.5555702447891235 0.5879377722740173 +vn -0.6532815098762512 0.3826834261417389 0.6532815098762512 +vn -0.6935199499130249 0.1950903236865997 0.6935199499130249 +vn -0.7071067690849304 6.123234262925839e-17 0.7071067690849304 +vn -0.6935199499130249 -0.1950903236865997 0.6935199499130249 +vn -0.6532815098762512 -0.3826834261417389 0.6532815098762512 +vn -0.5879377722740173 -0.5555702447891235 0.5879377722740173 +vn -0.5 -0.7071067690849304 0.5 +vn -0.39284747838974 -0.8314695954322815 0.39284747838974 +vn -0.2705980539321899 -0.9238795042037964 0.2705980539321899 +vn -0.1379496902227402 -0.9807852506637573 0.1379496902227402 +vn -8.659560603426554e-17 -1 8.659560603426554e-17 +vn 0 1 0 +vn -0.1622116714715958 0.9807852506637573 0.1083863750100136 +vn -0.3181896507740021 0.9238795042037964 0.2126075178384781 +vn -0.4619397521018982 0.8314695954322815 0.3086582720279694 +vn -0.5879377722740173 0.7071067690849304 0.39284747838974 +vn -0.6913416981697083 0.5555702447891235 0.4619397521018982 +vn -0.7681777477264404 0.3826834261417389 0.5132799744606018 +vn -0.8154931664466858 0.1950903236865997 0.5448951125144958 +vn -0.8314695954322815 6.123234262925839e-17 0.5555702447891235 +vn -0.8154931664466858 -0.1950903236865997 0.5448951125144958 +vn -0.7681777477264404 -0.3826834261417389 0.5132799744606018 +vn -0.6913416981697083 -0.5555702447891235 0.4619397521018982 +vn -0.5879377722740173 -0.7071067690849304 0.39284747838974 +vn -0.4619397521018982 -0.8314695954322815 0.3086582720279694 +vn -0.3181896507740021 -0.9238795042037964 0.2126075178384781 +vn -0.1622116714715958 -0.9807852506637573 0.1083863750100136 +vn -1.018256620900368e-16 -1 6.803772958229956e-17 +vn 0 1 0 +vn -0.1802399605512619 0.9807852506637573 0.07465783506631851 +vn -0.3535533845424652 0.9238795042037964 0.1464466154575348 +vn -0.5132799744606018 0.8314695954322815 0.2126075178384781 +vn -0.6532815098762512 0.7071067690849304 0.2705980539321899 +vn -0.7681777477264404 0.5555702447891235 0.3181896507740021 +vn -0.8535534143447876 0.3826834261417389 0.3535533845424652 +vn -0.9061274528503418 0.1950903236865997 0.3753302693367004 +vn -0.9238795042037964 6.123234262925839e-17 0.3826834261417389 +vn -0.9061274528503418 -0.1950903236865997 0.3753302693367004 +vn -0.8535534143447876 -0.3826834261417389 0.3535533845424652 +vn -0.7681777477264404 -0.5555702447891235 0.3181896507740021 +vn -0.6532815098762512 -0.7071067690849304 0.2705980539321899 +vn -0.5132799744606018 -0.8314695954322815 0.2126075178384781 +vn -0.3535533845424652 -0.9238795042037964 0.1464466154575348 +vn -0.1802399605512619 -0.9807852506637573 0.07465783506631851 +vn -1.131426112179504e-16 -1 4.686520469722492e-17 +vn 0 1 0 +vn -0.1913417130708694 0.9807852506637573 0.03806023299694061 +vn -0.3753302693367004 0.9238795042037964 0.07465783506631851 +vn -0.5448951125144958 0.8314695954322815 0.1083863750100136 +vn -0.6935199499130249 0.7071067690849304 0.1379496902227402 +vn -0.8154931664466858 0.5555702447891235 0.1622116714715958 +vn -0.9061274528503418 0.3826834261417389 0.1802399605512619 +vn -0.9619397521018982 0.1950903236865997 0.1913417130708694 +vn -0.9807852506637573 6.123234262925839e-17 0.1950903236865997 +vn -0.9619397521018982 -0.1950903236865997 0.1913417130708694 +vn -0.9061274528503418 -0.3826834261417389 0.1802399605512619 +vn -0.8154931664466858 -0.5555702447891235 0.1622116714715958 +vn -0.6935199499130249 -0.7071067690849304 0.1379496902227402 +vn -0.5448951125144958 -0.8314695954322815 0.1083863750100136 +vn -0.3753302693367004 -0.9238795042037964 0.07465783506631851 +vn -0.1913417130708694 -0.9807852506637573 0.03806023299694061 +vn -1.201115615565953e-16 -1 2.389167435368959e-17 +vn 0 1 0 +vn -0.1950903236865997 0.9807852506637573 1.194583717684479e-17 +vn -0.3826834261417389 0.9238795042037964 2.343260234861246e-17 +vn -0.5555702447891235 0.8314695954322815 3.401886479114978e-17 +vn -0.7071067690849304 0.7071067690849304 4.329780301713277e-17 +vn -0.8314695954322815 0.5555702447891235 5.091283104501839e-17 +vn -0.9238795042037964 0.3826834261417389 5.657130560897519e-17 +vn -0.9807852506637573 0.1950903236865997 6.005578077829767e-17 +vn -1 6.123234262925839e-17 6.123234262925839e-17 +vn -0.9807852506637573 -0.1950903236865997 6.005578077829767e-17 +vn -0.9238795042037964 -0.3826834261417389 5.657130560897519e-17 +vn -0.8314695954322815 -0.5555702447891235 5.091283104501839e-17 +vn -0.7071067690849304 -0.7071067690849304 4.329780301713277e-17 +vn -0.5555702447891235 -0.8314695954322815 3.401886479114978e-17 +vn -0.3826834261417389 -0.9238795042037964 2.343260234861246e-17 +vn -0.1950903236865997 -0.9807852506637573 1.194583717684479e-17 +vn -1.224646852585168e-16 -1 7.498798786105971e-33 +vn 0 1 0 +vn -0.1913417130708694 0.9807852506637573 -0.03806023299694061 +vn -0.3753302693367004 0.9238795042037964 -0.07465783506631851 +vn -0.5448951125144958 0.8314695954322815 -0.1083863750100136 +vn -0.6935199499130249 0.7071067690849304 -0.1379496902227402 +vn -0.8154931664466858 0.5555702447891235 -0.1622116714715958 +vn -0.9061274528503418 0.3826834261417389 -0.1802399605512619 +vn -0.9619397521018982 0.1950903236865997 -0.1913417130708694 +vn -0.9807852506637573 6.123234262925839e-17 -0.1950903236865997 +vn -0.9619397521018982 -0.1950903236865997 -0.1913417130708694 +vn -0.9061274528503418 -0.3826834261417389 -0.1802399605512619 +vn -0.8154931664466858 -0.5555702447891235 -0.1622116714715958 +vn -0.6935199499130249 -0.7071067690849304 -0.1379496902227402 +vn -0.5448951125144958 -0.8314695954322815 -0.1083863750100136 +vn -0.3753302693367004 -0.9238795042037964 -0.07465783506631851 +vn -0.1913417130708694 -0.9807852506637573 -0.03806023299694061 +vn -1.201115615565953e-16 -1 -2.389167435368959e-17 +vn 0 1 0 +vn -0.1802399605512619 0.9807852506637573 -0.07465783506631851 +vn -0.3535533845424652 0.9238795042037964 -0.1464466154575348 +vn -0.5132799744606018 0.8314695954322815 -0.2126075178384781 +vn -0.6532815098762512 0.7071067690849304 -0.2705980539321899 +vn -0.7681777477264404 0.5555702447891235 -0.3181896507740021 +vn -0.8535534143447876 0.3826834261417389 -0.3535533845424652 +vn -0.9061274528503418 0.1950903236865997 -0.3753302693367004 +vn -0.9238795042037964 6.123234262925839e-17 -0.3826834261417389 +vn -0.9061274528503418 -0.1950903236865997 -0.3753302693367004 +vn -0.8535534143447876 -0.3826834261417389 -0.3535533845424652 +vn -0.7681777477264404 -0.5555702447891235 -0.3181896507740021 +vn -0.6532815098762512 -0.7071067690849304 -0.2705980539321899 +vn -0.5132799744606018 -0.8314695954322815 -0.2126075178384781 +vn -0.3535533845424652 -0.9238795042037964 -0.1464466154575348 +vn -0.1802399605512619 -0.9807852506637573 -0.07465783506631851 +vn -1.131426112179504e-16 -1 -4.686520469722492e-17 +vn 0 1 0 +vn -0.1622116714715958 0.9807852506637573 -0.1083863750100136 +vn -0.3181896507740021 0.9238795042037964 -0.2126075178384781 +vn -0.4619397521018982 0.8314695954322815 -0.3086582720279694 +vn -0.5879377722740173 0.7071067690849304 -0.39284747838974 +vn -0.6913416981697083 0.5555702447891235 -0.4619397521018982 +vn -0.7681777477264404 0.3826834261417389 -0.5132799744606018 +vn -0.8154931664466858 0.1950903236865997 -0.5448951125144958 +vn -0.8314695954322815 6.123234262925839e-17 -0.5555702447891235 +vn -0.8154931664466858 -0.1950903236865997 -0.5448951125144958 +vn -0.7681777477264404 -0.3826834261417389 -0.5132799744606018 +vn -0.6913416981697083 -0.5555702447891235 -0.4619397521018982 +vn -0.5879377722740173 -0.7071067690849304 -0.39284747838974 +vn -0.4619397521018982 -0.8314695954322815 -0.3086582720279694 +vn -0.3181896507740021 -0.9238795042037964 -0.2126075178384781 +vn -0.1622116714715958 -0.9807852506637573 -0.1083863750100136 +vn -1.018256620900368e-16 -1 -6.803772958229956e-17 +vn 0 1 0 +vn -0.1379496902227402 0.9807852506637573 -0.1379496902227402 +vn -0.2705980539321899 0.9238795042037964 -0.2705980539321899 +vn -0.39284747838974 0.8314695954322815 -0.39284747838974 +vn -0.5 0.7071067690849304 -0.5 +vn -0.5879377722740173 0.5555702447891235 -0.5879377722740173 +vn -0.6532815098762512 0.3826834261417389 -0.6532815098762512 +vn -0.6935199499130249 0.1950903236865997 -0.6935199499130249 +vn -0.7071067690849304 6.123234262925839e-17 -0.7071067690849304 +vn -0.6935199499130249 -0.1950903236865997 -0.6935199499130249 +vn -0.6532815098762512 -0.3826834261417389 -0.6532815098762512 +vn -0.5879377722740173 -0.5555702447891235 -0.5879377722740173 +vn -0.5 -0.7071067690849304 -0.5 +vn -0.39284747838974 -0.8314695954322815 -0.39284747838974 +vn -0.2705980539321899 -0.9238795042037964 -0.2705980539321899 +vn -0.1379496902227402 -0.9807852506637573 -0.1379496902227402 +vn -8.659560603426554e-17 -1 -8.659560603426554e-17 +vn 0 1 0 +vn -0.1083863750100136 0.9807852506637573 -0.1622116714715958 +vn -0.2126075178384781 0.9238795042037964 -0.3181896507740021 +vn -0.3086582720279694 0.8314695954322815 -0.4619397521018982 +vn -0.39284747838974 0.7071067690849304 -0.5879377722740173 +vn -0.4619397521018982 0.5555702447891235 -0.6913416981697083 +vn -0.5132799744606018 0.3826834261417389 -0.7681777477264404 +vn -0.5132799744606018 -0.3826834261417389 -0.7681777477264404 +vn -0.4619397521018982 -0.5555702447891235 -0.6913416981697083 +vn -0.39284747838974 -0.7071067690849304 -0.5879377722740173 +vn -0.3086582720279694 -0.8314695954322815 -0.4619397521018982 +vn -0.2126075178384781 -0.9238795042037964 -0.3181896507740021 +vn -0.1083863750100136 -0.9807852506637573 -0.1622116714715958 +vn -6.803772958229956e-17 -1 -1.018256620900368e-16 +vn 0 1 0 +vn -0.07465783506631851 0.9807852506637573 -0.1802399605512619 +vn -0.1464466154575348 0.9238795042037964 -0.3535533845424652 +vn -0.2126075178384781 0.8314695954322815 -0.5132799744606018 +vn -0.2705980539321899 0.7071067690849304 -0.6532815098762512 +vn -0.3181896507740021 0.5555702447891235 -0.7681777477264404 +vn -0.3181896507740021 -0.5555702447891235 -0.7681777477264404 +vn -0.2705980539321899 -0.7071067690849304 -0.6532815098762512 +vn -0.2126075178384781 -0.8314695954322815 -0.5132799744606018 +vn -0.1464466154575348 -0.9238795042037964 -0.3535533845424652 +vn -0.07465783506631851 -0.9807852506637573 -0.1802399605512619 +vn -4.686520469722492e-17 -1 -1.131426112179504e-16 +vn 0 1 0 +vn -0.03806023299694061 0.9807852506637573 -0.1913417130708694 +vn -0.07465783506631851 0.9238795042037964 -0.3753302693367004 +vn -0.1083863750100136 0.8314695954322815 -0.5448951125144958 +vn -0.1379496902227402 0.7071067690849304 -0.6935199499130249 +vn -0.1379496902227402 -0.7071067690849304 -0.6935199499130249 +vn -0.1083863750100136 -0.8314695954322815 -0.5448951125144958 +vn -0.07465783506631851 -0.9238795042037964 -0.3753302693367004 +vn -0.03806023299694061 -0.9807852506637573 -0.1913417130708694 +vn -2.389167435368959e-17 -1 -1.201115615565953e-16 +vn 0 1 0 +vn -2.389167435368959e-17 0.9807852506637573 -0.1950903236865997 +vn -4.686520469722492e-17 0.9238795042037964 -0.3826834261417389 +vn -6.803772958229956e-17 0.8314695954322815 -0.5555702447891235 +vn -8.659560603426554e-17 0.7071067690849304 -0.7071067690849304 +vn -8.659560603426554e-17 -0.7071067690849304 \ + -0.7071067690849304 +vn -6.803772958229956e-17 -0.8314695954322815 \ + -0.5555702447891235 +vn -4.686520469722492e-17 -0.9238795042037964 \ + -0.3826834261417389 +vn -2.389167435368959e-17 -0.9807852506637573 \ + -0.1950903236865997 +vn -1.499759757221194e-32 -1 -1.224646852585168e-16 +vn 0 1 0 +vn 0.03806023299694061 0.9807852506637573 -0.1913417130708694 +vn 0.07465783506631851 0.9238795042037964 -0.3753302693367004 +vn 0.1083863750100136 0.8314695954322815 -0.5448951125144958 +vn 0.1379496902227402 0.7071067690849304 -0.6935199499130249 +vn 0.1379496902227402 -0.7071067690849304 -0.6935199499130249 +vn 0.1083863750100136 -0.8314695954322815 -0.5448951125144958 +vn 0.07465783506631851 -0.9238795042037964 -0.3753302693367004 +vn 0.03806023299694061 -0.9807852506637573 -0.1913417130708694 +vn 2.389167435368959e-17 -1 -1.201115615565953e-16 +vn 0 1 0 +vn 0.07465783506631851 0.9807852506637573 -0.1802399605512619 +vn 0.1464466154575348 0.9238795042037964 -0.3535533845424652 +vn 0.2126075178384781 0.8314695954322815 -0.5132799744606018 +vn 0.2705980539321899 0.7071067690849304 -0.6532815098762512 +vn 0.3181896507740021 0.5555702447891235 -0.7681777477264404 +vn 0.3181896507740021 -0.5555702447891235 -0.7681777477264404 +vn 0.2705980539321899 -0.7071067690849304 -0.6532815098762512 +vn 0.2126075178384781 -0.8314695954322815 -0.5132799744606018 +vn 0.1464466154575348 -0.9238795042037964 -0.3535533845424652 +vn 0.07465783506631851 -0.9807852506637573 -0.1802399605512619 +vn 4.686520469722492e-17 -1 -1.131426112179504e-16 +vn 0 1 0 +vn 0.1083863750100136 0.9807852506637573 -0.1622116714715958 +vn 0.2126075178384781 0.9238795042037964 -0.3181896507740021 +vn 0.3086582720279694 0.8314695954322815 -0.4619397521018982 +vn 0.39284747838974 0.7071067690849304 -0.5879377722740173 +vn 0.4619397521018982 0.5555702447891235 -0.6913416981697083 +vn 0.5132799744606018 0.3826834261417389 -0.7681777477264404 +vn 0.5132799744606018 -0.3826834261417389 -0.7681777477264404 +vn 0.4619397521018982 -0.5555702447891235 -0.6913416981697083 +vn 0.39284747838974 -0.7071067690849304 -0.5879377722740173 +vn 0.3086582720279694 -0.8314695954322815 -0.4619397521018982 +vn 0.2126075178384781 -0.9238795042037964 -0.3181896507740021 +vn 0.1083863750100136 -0.9807852506637573 -0.1622116714715958 +vn 6.803772958229956e-17 -1 -1.018256620900368e-16 +vn 0 1 0 +vn 0.1379496902227402 0.9807852506637573 -0.1379496902227402 +vn 0.2705980539321899 0.9238795042037964 -0.2705980539321899 +vn 0.39284747838974 0.8314695954322815 -0.39284747838974 +vn 0.5 0.7071067690849304 -0.5 +vn 0.5879377722740173 0.5555702447891235 -0.5879377722740173 +vn 0.6532815098762512 0.3826834261417389 -0.6532815098762512 +vn 0.6935199499130249 0.1950903236865997 -0.6935199499130249 +vn 0.7071067690849304 6.123234262925839e-17 -0.7071067690849304 +vn 0.6935199499130249 -0.1950903236865997 -0.6935199499130249 +vn 0.6532815098762512 -0.3826834261417389 -0.6532815098762512 +vn 0.5879377722740173 -0.5555702447891235 -0.5879377722740173 +vn 0.5 -0.7071067690849304 -0.5 +vn 0.39284747838974 -0.8314695954322815 -0.39284747838974 +vn 0.2705980539321899 -0.9238795042037964 -0.2705980539321899 +vn 0.1379496902227402 -0.9807852506637573 -0.1379496902227402 +vn 8.659560603426554e-17 -1 -8.659560603426554e-17 +vn 0 1 0 +vn 0.1622116714715958 0.9807852506637573 -0.1083863750100136 +vn 0.3181896507740021 0.9238795042037964 -0.2126075178384781 +vn 0.4619397521018982 0.8314695954322815 -0.3086582720279694 +vn 0.5879377722740173 0.7071067690849304 -0.39284747838974 +vn 0.6913416981697083 0.5555702447891235 -0.4619397521018982 +vn 0.7681777477264404 0.3826834261417389 -0.5132799744606018 +vn 0.8154931664466858 0.1950903236865997 -0.5448951125144958 +vn 0.8314695954322815 6.123234262925839e-17 -0.5555702447891235 +vn 0.8154931664466858 -0.1950903236865997 -0.5448951125144958 +vn 0.7681777477264404 -0.3826834261417389 -0.5132799744606018 +vn 0.6913416981697083 -0.5555702447891235 -0.4619397521018982 +vn 0.5879377722740173 -0.7071067690849304 -0.39284747838974 +vn 0.4619397521018982 -0.8314695954322815 -0.3086582720279694 +vn 0.3181896507740021 -0.9238795042037964 -0.2126075178384781 +vn 0.1622116714715958 -0.9807852506637573 -0.1083863750100136 +vn 1.018256620900368e-16 -1 -6.803772958229956e-17 +vn 0 1 0 +vn 0.1802399605512619 0.9807852506637573 -0.07465783506631851 +vn 0.3535533845424652 0.9238795042037964 -0.1464466154575348 +vn 0.5132799744606018 0.8314695954322815 -0.2126075178384781 +vn 0.6532815098762512 0.7071067690849304 -0.2705980539321899 +vn 0.7681777477264404 0.5555702447891235 -0.3181896507740021 +vn 0.8535534143447876 0.3826834261417389 -0.3535533845424652 +vn 0.9061274528503418 0.1950903236865997 -0.3753302693367004 +vn 0.9238795042037964 6.123234262925839e-17 -0.3826834261417389 +vn 0.9061274528503418 -0.1950903236865997 -0.3753302693367004 +vn 0.8535534143447876 -0.3826834261417389 -0.3535533845424652 +vn 0.7681777477264404 -0.5555702447891235 -0.3181896507740021 +vn 0.6532815098762512 -0.7071067690849304 -0.2705980539321899 +vn 0.5132799744606018 -0.8314695954322815 -0.2126075178384781 +vn 0.3535533845424652 -0.9238795042037964 -0.1464466154575348 +vn 0.1802399605512619 -0.9807852506637573 -0.07465783506631851 +vn 1.131426112179504e-16 -1 -4.686520469722492e-17 +vn 0 1 0 +vn 0.1913417130708694 0.9807852506637573 -0.03806023299694061 +vn 0.3753302693367004 0.9238795042037964 -0.07465783506631851 +vn 0.5448951125144958 0.8314695954322815 -0.1083863750100136 +vn 0.6935199499130249 0.7071067690849304 -0.1379496902227402 +vn 0.8154931664466858 0.5555702447891235 -0.1622116714715958 +vn 0.9061274528503418 0.3826834261417389 -0.1802399605512619 +vn 0.9619397521018982 0.1950903236865997 -0.1913417130708694 +vn 0.9807852506637573 6.123234262925839e-17 -0.1950903236865997 +vn 0.9619397521018982 -0.1950903236865997 -0.1913417130708694 +vn 0.9061274528503418 -0.3826834261417389 -0.1802399605512619 +vn 0.8154931664466858 -0.5555702447891235 -0.1622116714715958 +vn 0.6935199499130249 -0.7071067690849304 -0.1379496902227402 +vn 0.5448951125144958 -0.8314695954322815 -0.1083863750100136 +vn 0.3753302693367004 -0.9238795042037964 -0.07465783506631851 +vn 0.1913417130708694 -0.9807852506637573 -0.03806023299694061 +vn 1.201115615565953e-16 -1 -2.389167435368959e-17 +vn 0 1 0 +vn 0.1950903236865997 0.9807852506637573 -3.583751070335377e-17 +vn 0.3826834261417389 0.9238795042037964 -7.029780539147615e-17 +vn 0.5555702447891235 0.8314695954322815 -1.020565976821718e-16 +vn 0.7071067690849304 0.7071067690849304 -1.298934024339534e-16 +vn 0.8314695954322815 0.5555702447891235 -1.527384898263327e-16 +vn 0.9238795042037964 0.3826834261417389 -1.697139168269256e-16 +vn 0.9807852506637573 0.1950903236865997 -1.801673357174481e-16 +vn 1 6.123234262925839e-17 -1.836970146528854e-16 +vn 0.9807852506637573 -0.1950903236865997 -1.801673357174481e-16 +vn 0.9238795042037964 -0.3826834261417389 -1.697139168269256e-16 +vn 0.8314695954322815 -0.5555702447891235 -1.527384898263327e-16 +vn 0.7071067690849304 -0.7071067690849304 -1.298934024339534e-16 +vn 0.5555702447891235 -0.8314695954322815 -1.020565976821718e-16 +vn 0.3826834261417389 -0.9238795042037964 -7.029780539147615e-17 +vn 0.1950903236865997 -0.9807852506637573 -3.583751070335377e-17 +vn 1.224646852585168e-16 -1 -2.249639635831791e-32 +vn 0 1 0 +vn 0.1913417130708694 0.9807852506637573 0.03806023299694061 +vn 0.3753302693367004 0.9238795042037964 0.07465783506631851 +vn 0.5448951125144958 0.8314695954322815 0.1083863750100136 +vn 0.6935199499130249 0.7071067690849304 0.1379496902227402 +vn 0.8154931664466858 0.5555702447891235 0.1622116714715958 +vn 0.9061274528503418 0.3826834261417389 0.1802399605512619 +vn 0.9619397521018982 0.1950903236865997 0.1913417130708694 +vn 0.9807852506637573 6.123234262925839e-17 0.1950903236865997 +vn 0.9619397521018982 -0.1950903236865997 0.1913417130708694 +vn 0.9061274528503418 -0.3826834261417389 0.1802399605512619 +vn 0.8154931664466858 -0.5555702447891235 0.1622116714715958 +vn 0.6935199499130249 -0.7071067690849304 0.1379496902227402 +vn 0.5448951125144958 -0.8314695954322815 0.1083863750100136 +vn 0.3753302693367004 -0.9238795042037964 0.07465783506631851 +vn 0.1913417130708694 -0.9807852506637573 0.03806023299694061 +vn 1.201115615565953e-16 -1 2.389167435368959e-17 +vn 0 1 0 +vn 0.1802399605512619 0.9807852506637573 0.07465783506631851 +vn 0.3535533845424652 0.9238795042037964 0.1464466154575348 +vn 0.5132799744606018 0.8314695954322815 0.2126075178384781 +vn 0.6532815098762512 0.7071067690849304 0.2705980539321899 +vn 0.7681777477264404 0.5555702447891235 0.3181896507740021 +vn 0.8535534143447876 0.3826834261417389 0.3535533845424652 +vn 0.9061274528503418 0.1950903236865997 0.3753302693367004 +vn 0.9238795042037964 6.123234262925839e-17 0.3826834261417389 +vn 0.9061274528503418 -0.1950903236865997 0.3753302693367004 +vn 0.8535534143447876 -0.3826834261417389 0.3535533845424652 +vn 0.7681777477264404 -0.5555702447891235 0.3181896507740021 +vn 0.6532815098762512 -0.7071067690849304 0.2705980539321899 +vn 0.5132799744606018 -0.8314695954322815 0.2126075178384781 +vn 0.3535533845424652 -0.9238795042037964 0.1464466154575348 +vn 0.1802399605512619 -0.9807852506637573 0.07465783506631851 +vn 1.131426112179504e-16 -1 4.686520469722492e-17 +vn 0 1 0 +vn 0.1622116714715958 0.9807852506637573 0.1083863750100136 +vn 0.3181896507740021 0.9238795042037964 0.2126075178384781 +vn 0.4619397521018982 0.8314695954322815 0.3086582720279694 +vn 0.5879377722740173 0.7071067690849304 0.39284747838974 +vn 0.6913416981697083 0.5555702447891235 0.4619397521018982 +vn 0.7681777477264404 0.3826834261417389 0.5132799744606018 +vn 0.8154931664466858 0.1950903236865997 0.5448951125144958 +vn 0.8314695954322815 6.123234262925839e-17 0.5555702447891235 +vn 0.8154931664466858 -0.1950903236865997 0.5448951125144958 +vn 0.7681777477264404 -0.3826834261417389 0.5132799744606018 +vn 0.6913416981697083 -0.5555702447891235 0.4619397521018982 +vn 0.5879377722740173 -0.7071067690849304 0.39284747838974 +vn 0.4619397521018982 -0.8314695954322815 0.3086582720279694 +vn 0.3181896507740021 -0.9238795042037964 0.2126075178384781 +vn 0.1622116714715958 -0.9807852506637573 0.1083863750100136 +vn 1.018256620900368e-16 -1 6.803772958229956e-17 +vn 0 1 0 +vn 0.1379496902227402 0.9807852506637573 0.1379496902227402 +vn 0.2705980539321899 0.9238795042037964 0.2705980539321899 +vn 0.39284747838974 0.8314695954322815 0.39284747838974 +vn 0.5 0.7071067690849304 0.5 +vn 0.5879377722740173 0.5555702447891235 0.5879377722740173 +vn 0.6532815098762512 0.3826834261417389 0.6532815098762512 +vn 0.6935199499130249 0.1950903236865997 0.6935199499130249 +vn 0.7071067690849304 6.123234262925839e-17 0.7071067690849304 +vn 0.6935199499130249 -0.1950903236865997 0.6935199499130249 +vn 0.6532815098762512 -0.3826834261417389 0.6532815098762512 +vn 0.5879377722740173 -0.5555702447891235 0.5879377722740173 +vn 0.5 -0.7071067690849304 0.5 +vn 0.39284747838974 -0.8314695954322815 0.39284747838974 +vn 0.2705980539321899 -0.9238795042037964 0.2705980539321899 +vn 0.1379496902227402 -0.9807852506637573 0.1379496902227402 +vn 8.659560603426554e-17 -1 8.659560603426554e-17 +vn 0 1 0 +vn 0.1083863750100136 0.9807852506637573 0.1622116714715958 +vn 0.2126075178384781 0.9238795042037964 0.3181896507740021 +vn 0.3086582720279694 0.8314695954322815 0.4619397521018982 +vn 0.39284747838974 0.7071067690849304 0.5879377722740173 +vn 0.4619397521018982 0.5555702447891235 0.6913416981697083 +vn 0.5132799744606018 0.3826834261417389 0.7681777477264404 +vn 0.5448951125144958 0.1950903236865997 0.8154931664466858 +vn 0.5555702447891235 6.123234262925839e-17 0.8314695954322815 +vn 0.5448951125144958 -0.1950903236865997 0.8154931664466858 +vn 0.5132799744606018 -0.3826834261417389 0.7681777477264404 +vn 0.4619397521018982 -0.5555702447891235 0.6913416981697083 +vn 0.39284747838974 -0.7071067690849304 0.5879377722740173 +vn 0.3086582720279694 -0.8314695954322815 0.4619397521018982 +vn 0.2126075178384781 -0.9238795042037964 0.3181896507740021 +vn 0.1083863750100136 -0.9807852506637573 0.1622116714715958 +vn 6.803772958229956e-17 -1 1.018256620900368e-16 +vn 0 1 0 +vn 0.07465783506631851 0.9807852506637573 0.1802399605512619 +vn 0.1464466154575348 0.9238795042037964 0.3535533845424652 +vn 0.2126075178384781 0.8314695954322815 0.5132799744606018 +vn 0.2705980539321899 0.7071067690849304 0.6532815098762512 +vn 0.3181896507740021 0.5555702447891235 0.7681777477264404 +vn 0.3535533845424652 0.3826834261417389 0.8535534143447876 +vn 0.3753302693367004 0.1950903236865997 0.9061274528503418 +vn 0.3826834261417389 6.123234262925839e-17 0.9238795042037964 +vn 0.3753302693367004 -0.1950903236865997 0.9061274528503418 +vn 0.3535533845424652 -0.3826834261417389 0.8535534143447876 +vn 0.3181896507740021 -0.5555702447891235 0.7681777477264404 +vn 0.2705980539321899 -0.7071067690849304 0.6532815098762512 +vn 0.2126075178384781 -0.8314695954322815 0.5132799744606018 +vn 0.1464466154575348 -0.9238795042037964 0.3535533845424652 +vn 0.07465783506631851 -0.9807852506637573 0.1802399605512619 +vn 4.686520469722492e-17 -1 1.131426112179504e-16 +vn 0 1 0 +vn 0.03806023299694061 0.9807852506637573 0.1913417130708694 +vn 0.07465783506631851 0.9238795042037964 0.3753302693367004 +vn 0.1083863750100136 0.8314695954322815 0.5448951125144958 +vn 0.1379496902227402 0.7071067690849304 0.6935199499130249 +vn 0.1622116714715958 0.5555702447891235 0.8154931664466858 +vn 0.1802399605512619 0.3826834261417389 0.9061274528503418 +vn 0.1913417130708694 0.1950903236865997 0.9619397521018982 +vn 0.1950903236865997 6.123234262925839e-17 0.9807852506637573 +vn 0.1913417130708694 -0.1950903236865997 0.9619397521018982 +vn 0.1802399605512619 -0.3826834261417389 0.9061274528503418 +vn 0.1622116714715958 -0.5555702447891235 0.8154931664466858 +vn 0.1379496902227402 -0.7071067690849304 0.6935199499130249 +vn 0.1083863750100136 -0.8314695954322815 0.5448951125144958 +vn 0.07465783506631851 -0.9238795042037964 0.3753302693367004 +vn 0.03806023299694061 -0.9807852506637573 0.1913417130708694 +vn 2.389167435368959e-17 -1 1.201115615565953e-16 +vn 0 1 0 +vn 4.778334870737917e-17 0.9807852506637573 0.1950903236865997 +vn 9.373040939444983e-17 0.9238795042037964 0.3826834261417389 +vn 1.360754591645991e-16 0.8314695954322815 0.5555702447891235 +vn 1.731912120685311e-16 0.7071067690849304 0.7071067690849304 +vn 2.036513241800736e-16 0.5555702447891235 0.8314695954322815 +vn 2.262852224359008e-16 0.3826834261417389 0.9238795042037964 +vn 2.402231231131907e-16 0.1950903236865997 0.9807852506637573 +vn 2.449293705170336e-16 6.123234262925839e-17 1 +vn 2.402231231131907e-16 -0.1950903236865997 0.9807852506637573 +vn 2.262852224359008e-16 -0.3826834261417389 0.9238795042037964 +vn 2.036513241800736e-16 -0.5555702447891235 0.8314695954322815 +vn 1.731912120685311e-16 -0.7071067690849304 0.7071067690849304 +vn 1.360754591645991e-16 -0.8314695954322815 0.5555702447891235 +vn 9.373040939444983e-17 -0.9238795042037964 0.3826834261417389 +vn 4.778334870737917e-17 -0.9807852506637573 0.1950903236865997 +vn 2.999519514442388e-32 -1 1.224646852585168e-16 +vn -0.3229530453681946 0.4798254668712616 -0.8157627582550049 +vn -0.3885878920555115 0.4284199178218842 -0.815754771232605 +vn -0.4461475312709808 0.3681058883666992 -0.8157514333724976 +vn -0.5026852488517761 0.2860738039016724 -0.8157630562782288 +vn -0.5443211793899536 0.195565938949585 -0.815762460231781 +vn -0.569807767868042 0.0992555171251297 -0.8157618641853333 +vn -0.5783869028091431 -3.534388753889672e-11 \ + -0.8157625794410706 +vn -0.5698099136352539 -0.09925589710474014 -0.8157603144645691 +vn -0.5443212985992432 -0.1955659687519073 -0.8157624006271362 +vn -0.5026851892471313 -0.28607377409935 -0.8157631158828735 +vn -0.446147620677948 -0.368105947971344 -0.8157513737678528 +vn -0.3885855674743652 -0.4284166395664215 -0.8157575726509094 +vn -0.3229536116123199 -0.4798267185688019 -0.8157618045806885 +vn -0.2484039962291718 -0.5223320126533508 -0.8157602548599243 +vn -0.1688298583030701 -0.553202748298645 -0.8157593011856079 +vn -0.08557865768671036 -0.5720206499099731 -0.8157626390457153 +vn 1.620231218342569e-14 -0.578386664390564 -0.8157627582550049 +vn 0.08557865023612976 -0.5720205307006836 -0.8157626986503601 +vn 0.1688297539949417 -0.5532020926475525 -0.8157597780227661 +vn 0.2484041303396225 -0.5223324298858643 -0.8157598972320557 +vn 0.3229530453681946 -0.4798254668712616 -0.8157627582550049 +vn 0.3885878920555115 -0.4284199178218842 -0.815754771232605 +vn 0.4461475312709808 -0.3681058883666992 -0.8157514333724976 +vn 0.5026852488517761 -0.2860738039016724 -0.8157630562782288 +vn 0.5443211793899536 -0.195565938949585 -0.815762460231781 +vn 0.569807767868042 -0.0992555171251297 -0.8157618641853333 +vn 0.5783869028091431 3.534423448359192e-11 -0.8157625794410706 +vn 0.5698099136352539 0.09925589710474014 -0.8157603144645691 +vn 0.5443212985992432 0.1955659687519073 -0.8157624006271362 +vn 0.5026851892471313 0.28607377409935 -0.8157631158828735 +vn 0.446147620677948 0.368105947971344 -0.8157513737678528 +vn 0.3885855674743652 0.4284166395664215 -0.8157575726509094 +vn 0.3229536116123199 0.4798267185688019 -0.8157618045806885 +vn 0.2484039962291718 0.5223320126533508 -0.8157602548599243 +vn 0.1688298583030701 0.553202748298645 -0.8157593011856079 +vn 0.08557865768671036 0.5720206499099731 -0.8157626390457153 +vn -1.640211709128762e-14 0.578386664390564 -0.8157627582550049 +vn -0.08557865023612976 0.5720205307006836 -0.8157626986503601 +vn -0.1688297539949417 0.5532020926475525 -0.8157597780227661 +vn -0.2484041303396225 0.5223324298858643 -0.8157598972320557 +f 316/316/316 299/299/299 298/298/298 +f 317/317/317 300/300/300 299/299/299 316/316/316 +f 318/318/318 301/301/301 300/300/300 317/317/317 +f 319/319/319 302/302/302 301/301/301 318/318/318 +f 320/320/320 303/303/303 302/302/302 319/319/319 +f 321/321/321 304/304/304 303/303/303 320/320/320 +f 322/322/322 305/305/305 304/304/304 321/321/321 +f 323/323/323 306/306/306 305/305/305 322/322/322 +f 324/324/324 307/307/307 306/306/306 323/323/323 +f 325/325/325 308/308/308 307/307/307 324/324/324 +f 326/326/326 309/309/309 308/308/308 325/325/325 +f 327/327/327 310/310/310 309/309/309 326/326/326 +f 328/328/328 311/311/311 310/310/310 327/327/327 +f 329/329/329 312/312/312 311/311/311 328/328/328 +f 330/330/330 313/313/313 312/312/312 329/329/329 +f 331/331/331 313/313/313 330/330/330 +f 333/333/333 316/316/316 315/315/315 +f 334/334/334 317/317/317 316/316/316 333/333/333 +f 335/335/335 318/318/318 317/317/317 334/334/334 +f 336/336/336 319/319/319 318/318/318 335/335/335 +f 337/337/337 320/320/320 319/319/319 336/336/336 +f 338/338/338 321/321/321 320/320/320 337/337/337 +f 339/339/339 322/322/322 321/321/321 338/338/338 +f 340/340/340 323/323/323 322/322/322 339/339/339 +f 341/341/341 324/324/324 323/323/323 340/340/340 +f 342/342/342 325/325/325 324/324/324 341/341/341 +f 343/343/343 326/326/326 325/325/325 342/342/342 +f 344/344/344 327/327/327 326/326/326 343/343/343 +f 345/345/345 328/328/328 327/327/327 344/344/344 +f 346/346/346 329/329/329 328/328/328 345/345/345 +f 347/347/347 330/330/330 329/329/329 346/346/346 +f 348/348/348 330/330/330 347/347/347 +f 350/350/350 333/333/333 332/332/332 +f 351/351/351 334/334/334 333/333/333 350/350/350 +f 352/352/352 335/335/335 334/334/334 351/351/351 +f 353/353/353 336/336/336 335/335/335 352/352/352 +f 354/354/354 337/337/337 336/336/336 353/353/353 +f 355/355/355 338/338/338 337/337/337 354/354/354 +f 356/356/356 339/339/339 338/338/338 355/355/355 +f 357/357/357 340/340/340 339/339/339 356/356/356 +f 358/358/358 341/341/341 340/340/340 357/357/357 +f 359/359/359 342/342/342 341/341/341 358/358/358 +f 360/360/360 343/343/343 342/342/342 359/359/359 +f 361/361/361 344/344/344 343/343/343 360/360/360 +f 362/362/362 345/345/345 344/344/344 361/361/361 +f 363/363/363 346/346/346 345/345/345 362/362/362 +f 364/364/364 347/347/347 346/346/346 363/363/363 +f 365/365/365 347/347/347 364/364/364 +f 367/367/367 350/350/350 349/349/349 +f 368/368/368 351/351/351 350/350/350 367/367/367 +f 369/369/369 352/352/352 351/351/351 368/368/368 +f 370/370/370 353/353/353 352/352/352 369/369/369 +f 371/371/371 354/354/354 353/353/353 370/370/370 +f 372/372/372 355/355/355 354/354/354 371/371/371 +f 373/373/373 356/356/356 355/355/355 372/372/372 +f 374/374/374 357/357/357 356/356/356 373/373/373 +f 375/375/375 358/358/358 357/357/357 374/374/374 +f 376/376/376 359/359/359 358/358/358 375/375/375 +f 377/377/377 360/360/360 359/359/359 376/376/376 +f 378/378/378 361/361/361 360/360/360 377/377/377 +f 379/379/379 362/362/362 361/361/361 378/378/378 +f 380/380/380 363/363/363 362/362/362 379/379/379 +f 381/381/381 364/364/364 363/363/363 380/380/380 +f 382/382/382 364/364/364 381/381/381 +f 384/384/384 367/367/367 366/366/366 +f 385/385/385 368/368/368 367/367/367 384/384/384 +f 386/386/386 369/369/369 368/368/368 385/385/385 +f 387/387/387 370/370/370 369/369/369 386/386/386 +f 388/388/388 371/371/371 370/370/370 387/387/387 +f 389/389/389 372/372/372 371/371/371 388/388/388 +f 390/390/390 373/373/373 372/372/372 389/389/389 +f 391/391/391 374/374/374 373/373/373 390/390/390 +f 392/392/392 375/375/375 374/374/374 391/391/391 +f 393/393/393 376/376/376 375/375/375 392/392/392 +f 394/394/394 377/377/377 376/376/376 393/393/393 +f 395/395/395 378/378/378 377/377/377 394/394/394 +f 396/396/396 379/379/379 378/378/378 395/395/395 +f 397/397/397 380/380/380 379/379/379 396/396/396 +f 398/398/398 381/381/381 380/380/380 397/397/397 +f 399/399/399 381/381/381 398/398/398 +f 401/401/401 384/384/384 383/383/383 +f 402/402/402 385/385/385 384/384/384 401/401/401 +f 403/403/403 386/386/386 385/385/385 402/402/402 +f 404/404/404 387/387/387 386/386/386 403/403/403 +f 405/405/405 388/388/388 387/387/387 404/404/404 +f 406/406/406 389/389/389 388/388/388 405/405/405 +f 407/407/407 390/390/390 389/389/389 406/406/406 +f 408/408/408 391/391/391 390/390/390 407/407/407 +f 409/409/409 392/392/392 391/391/391 408/408/408 +f 410/410/410 393/393/393 392/392/392 409/409/409 +f 411/411/411 394/394/394 393/393/393 410/410/410 +f 412/412/412 395/395/395 394/394/394 411/411/411 +f 413/413/413 396/396/396 395/395/395 412/412/412 +f 414/414/414 397/397/397 396/396/396 413/413/413 +f 415/415/415 398/398/398 397/397/397 414/414/414 +f 416/416/416 398/398/398 415/415/415 +f 418/418/418 401/401/401 400/400/400 +f 419/419/419 402/402/402 401/401/401 418/418/418 +f 420/420/420 403/403/403 402/402/402 419/419/419 +f 421/421/421 404/404/404 403/403/403 420/420/420 +f 422/422/422 405/405/405 404/404/404 421/421/421 +f 423/423/423 406/406/406 405/405/405 422/422/422 +f 424/424/424 407/407/407 406/406/406 423/423/423 +f 425/425/425 408/408/408 407/407/407 424/424/424 +f 426/426/426 409/409/409 408/408/408 425/425/425 +f 427/427/427 410/410/410 409/409/409 426/426/426 +f 428/428/428 411/411/411 410/410/410 427/427/427 +f 429/429/429 412/412/412 411/411/411 428/428/428 +f 430/430/430 413/413/413 412/412/412 429/429/429 +f 431/431/431 414/414/414 413/413/413 430/430/430 +f 432/432/432 415/415/415 414/414/414 431/431/431 +f 433/433/433 415/415/415 432/432/432 +f 435/435/435 418/418/418 417/417/417 +f 436/436/436 419/419/419 418/418/418 435/435/435 +f 437/437/437 420/420/420 419/419/419 436/436/436 +f 438/438/438 421/421/421 420/420/420 437/437/437 +f 439/439/439 422/422/422 421/421/421 438/438/438 +f 440/440/440 423/423/423 422/422/422 439/439/439 +f 441/441/441 424/424/424 423/423/423 440/440/440 +f 442/442/442 425/425/425 424/424/424 441/441/441 +f 443/443/443 426/426/426 425/425/425 442/442/442 +f 444/444/444 427/427/427 426/426/426 443/443/443 +f 445/445/445 428/428/428 427/427/427 444/444/444 +f 446/446/446 429/429/429 428/428/428 445/445/445 +f 447/447/447 430/430/430 429/429/429 446/446/446 +f 448/448/448 431/431/431 430/430/430 447/447/447 +f 449/449/449 432/432/432 431/431/431 448/448/448 +f 450/450/450 432/432/432 449/449/449 +f 452/452/452 435/435/435 434/434/434 +f 453/453/453 436/436/436 435/435/435 452/452/452 +f 454/454/454 437/437/437 436/436/436 453/453/453 +f 455/455/455 438/438/438 437/437/437 454/454/454 +f 456/456/456 439/439/439 438/438/438 455/455/455 +f 457/457/457 440/440/440 439/439/439 456/456/456 +f 458/458/458 441/441/441 440/440/440 457/457/457 +f 459/459/459 442/442/442 441/441/441 458/458/458 +f 460/460/460 443/443/443 442/442/442 459/459/459 +f 461/461/461 444/444/444 443/443/443 460/460/460 +f 462/462/462 445/445/445 444/444/444 461/461/461 +f 463/463/463 446/446/446 445/445/445 462/462/462 +f 464/464/464 447/447/447 446/446/446 463/463/463 +f 465/465/465 448/448/448 447/447/447 464/464/464 +f 466/466/466 449/449/449 448/448/448 465/465/465 +f 467/467/467 449/449/449 466/466/466 +f 469/469/469 452/452/452 451/451/451 +f 470/470/470 453/453/453 452/452/452 469/469/469 +f 471/471/471 454/454/454 453/453/453 470/470/470 +f 472/472/472 455/455/455 454/454/454 471/471/471 +f 473/473/473 456/456/456 455/455/455 472/472/472 +f 474/474/474 457/457/457 456/456/456 473/473/473 +f 475/475/475 458/458/458 457/457/457 474/474/474 +f 476/476/476 459/459/459 458/458/458 475/475/475 +f 477/477/477 460/460/460 459/459/459 476/476/476 +f 478/478/478 461/461/461 460/460/460 477/477/477 +f 479/479/479 462/462/462 461/461/461 478/478/478 +f 480/480/480 463/463/463 462/462/462 479/479/479 +f 481/481/481 464/464/464 463/463/463 480/480/480 +f 482/482/482 465/465/465 464/464/464 481/481/481 +f 483/483/483 466/466/466 465/465/465 482/482/482 +f 484/484/484 466/466/466 483/483/483 +f 486/486/486 469/469/469 468/468/468 +f 487/487/487 470/470/470 469/469/469 486/486/486 +f 488/488/488 471/471/471 470/470/470 487/487/487 +f 489/489/489 472/472/472 471/471/471 488/488/488 +f 490/490/490 473/473/473 472/472/472 489/489/489 +f 491/491/491 474/474/474 473/473/473 490/490/490 +f 492/492/492 475/475/475 474/474/474 491/491/491 +f 493/493/493 476/476/476 475/475/475 492/492/492 +f 494/494/494 477/477/477 476/476/476 493/493/493 +f 495/495/495 478/478/478 477/477/477 494/494/494 +f 496/496/496 479/479/479 478/478/478 495/495/495 +f 497/497/497 480/480/480 479/479/479 496/496/496 +f 498/498/498 481/481/481 480/480/480 497/497/497 +f 499/499/499 482/482/482 481/481/481 498/498/498 +f 500/500/500 483/483/483 482/482/482 499/499/499 +f 501/501/501 483/483/483 500/500/500 +f 503/503/503 486/486/486 485/485/485 +f 504/504/504 487/487/487 486/486/486 503/503/503 +f 505/505/505 488/488/488 487/487/487 504/504/504 +f 506/506/506 489/489/489 488/488/488 505/505/505 +f 507/507/507 490/490/490 489/489/489 506/506/506 +f 508/508/508 491/491/491 490/490/490 507/507/507 +f 509/509/509 492/492/492 491/491/491 508/508/508 +f 510/510/510 493/493/493 492/492/492 509/509/509 +f 511/511/511 494/494/494 493/493/493 510/510/510 +f 512/512/512 495/495/495 494/494/494 511/511/511 +f 513/513/513 496/496/496 495/495/495 512/512/512 +f 514/514/514 497/497/497 496/496/496 513/513/513 +f 515/515/515 498/498/498 497/497/497 514/514/514 +f 516/516/516 499/499/499 498/498/498 515/515/515 +f 517/517/517 500/500/500 499/499/499 516/516/516 +f 518/518/518 500/500/500 517/517/517 +f 520/520/520 503/503/503 502/502/502 +f 521/521/521 504/504/504 503/503/503 520/520/520 +f 522/522/522 505/505/505 504/504/504 521/521/521 +f 523/523/523 506/506/506 505/505/505 522/522/522 +f 524/524/524 507/507/507 506/506/506 523/523/523 +f 525/525/525 508/508/508 507/507/507 524/524/524 +f 527/527/527 513/513/513 512/512/512 526/526/526 +f 528/528/528 514/514/514 513/513/513 527/527/527 +f 529/529/529 515/515/515 514/514/514 528/528/528 +f 530/530/530 516/516/516 515/515/515 529/529/529 +f 531/531/531 517/517/517 516/516/516 530/530/530 +f 532/532/532 517/517/517 531/531/531 +f 534/534/534 520/520/520 519/519/519 +f 535/535/535 521/521/521 520/520/520 534/534/534 +f 536/536/536 522/522/522 521/521/521 535/535/535 +f 537/537/537 523/523/523 522/522/522 536/536/536 +f 538/538/538 524/524/524 523/523/523 537/537/537 +f 540/540/540 528/528/528 527/527/527 539/539/539 +f 541/541/541 529/529/529 528/528/528 540/540/540 +f 542/542/542 530/530/530 529/529/529 541/541/541 +f 543/543/543 531/531/531 530/530/530 542/542/542 +f 544/544/544 531/531/531 543/543/543 +f 546/546/546 534/534/534 533/533/533 +f 547/547/547 535/535/535 534/534/534 546/546/546 +f 548/548/548 536/536/536 535/535/535 547/547/547 +f 549/549/549 537/537/537 536/536/536 548/548/548 +f 551/551/551 541/541/541 540/540/540 550/550/550 +f 552/552/552 542/542/542 541/541/541 551/551/551 +f 553/553/553 543/543/543 542/542/542 552/552/552 +f 554/554/554 543/543/543 553/553/553 +f 556/556/556 546/546/546 545/545/545 +f 557/557/557 547/547/547 546/546/546 556/556/556 +f 558/558/558 548/548/548 547/547/547 557/557/557 +f 559/559/559 549/549/549 548/548/548 558/558/558 +f 561/561/561 551/551/551 550/550/550 560/560/560 +f 562/562/562 552/552/552 551/551/551 561/561/561 +f 563/563/563 553/553/553 552/552/552 562/562/562 +f 564/564/564 553/553/553 563/563/563 +f 566/566/566 556/556/556 555/555/555 +f 567/567/567 557/557/557 556/556/556 566/566/566 +f 568/568/568 558/558/558 557/557/557 567/567/567 +f 569/569/569 559/559/559 558/558/558 568/568/568 +f 571/571/571 561/561/561 560/560/560 570/570/570 +f 572/572/572 562/562/562 561/561/561 571/571/571 +f 573/573/573 563/563/563 562/562/562 572/572/572 +f 574/574/574 563/563/563 573/573/573 +f 576/576/576 566/566/566 565/565/565 +f 577/577/577 567/567/567 566/566/566 576/576/576 +f 578/578/578 568/568/568 567/567/567 577/577/577 +f 579/579/579 569/569/569 568/568/568 578/578/578 +f 583/583/583 571/571/571 570/570/570 582/582/582 +f 584/584/584 572/572/572 571/571/571 583/583/583 +f 585/585/585 573/573/573 572/572/572 584/584/584 +f 586/586/586 573/573/573 585/585/585 +f 588/588/588 576/576/576 575/575/575 +f 589/589/589 577/577/577 576/576/576 588/588/588 +f 590/590/590 578/578/578 577/577/577 589/589/589 +f 591/591/591 579/579/579 578/578/578 590/590/590 +f 592/592/592 580/580/580 579/579/579 591/591/591 +f 596/596/596 582/582/582 581/581/581 595/595/595 +f 597/597/597 583/583/583 582/582/582 596/596/596 +f 598/598/598 584/584/584 583/583/583 597/597/597 +f 599/599/599 585/585/585 584/584/584 598/598/598 +f 600/600/600 585/585/585 599/599/599 +f 602/602/602 588/588/588 587/587/587 +f 603/603/603 589/589/589 588/588/588 602/602/602 +f 604/604/604 590/590/590 589/589/589 603/603/603 +f 605/605/605 591/591/591 590/590/590 604/604/604 +f 606/606/606 592/592/592 591/591/591 605/605/605 +f 607/607/607 593/593/593 592/592/592 606/606/606 +f 612/612/612 595/595/595 594/594/594 611/611/611 +f 613/613/613 596/596/596 595/595/595 612/612/612 +f 614/614/614 597/597/597 596/596/596 613/613/613 +f 615/615/615 598/598/598 597/597/597 614/614/614 +f 616/616/616 599/599/599 598/598/598 615/615/615 +f 617/617/617 599/599/599 616/616/616 +f 619/619/619 602/602/602 601/601/601 +f 620/620/620 603/603/603 602/602/602 619/619/619 +f 621/621/621 604/604/604 603/603/603 620/620/620 +f 622/622/622 605/605/605 604/604/604 621/621/621 +f 623/623/623 606/606/606 605/605/605 622/622/622 +f 624/624/624 607/607/607 606/606/606 623/623/623 +f 625/625/625 608/608/608 607/607/607 624/624/624 +f 626/626/626 609/609/609 608/608/608 625/625/625 +f 627/627/627 610/610/610 609/609/609 626/626/626 +f 628/628/628 611/611/611 610/610/610 627/627/627 +f 629/629/629 612/612/612 611/611/611 628/628/628 +f 630/630/630 613/613/613 612/612/612 629/629/629 +f 631/631/631 614/614/614 613/613/613 630/630/630 +f 632/632/632 615/615/615 614/614/614 631/631/631 +f 633/633/633 616/616/616 615/615/615 632/632/632 +f 634/634/634 616/616/616 633/633/633 +f 636/636/636 619/619/619 618/618/618 +f 637/637/637 620/620/620 619/619/619 636/636/636 +f 638/638/638 621/621/621 620/620/620 637/637/637 +f 639/639/639 622/622/622 621/621/621 638/638/638 +f 640/640/640 623/623/623 622/622/622 639/639/639 +f 641/641/641 624/624/624 623/623/623 640/640/640 +f 642/642/642 625/625/625 624/624/624 641/641/641 +f 643/643/643 626/626/626 625/625/625 642/642/642 +f 644/644/644 627/627/627 626/626/626 643/643/643 +f 645/645/645 628/628/628 627/627/627 644/644/644 +f 646/646/646 629/629/629 628/628/628 645/645/645 +f 647/647/647 630/630/630 629/629/629 646/646/646 +f 648/648/648 631/631/631 630/630/630 647/647/647 +f 649/649/649 632/632/632 631/631/631 648/648/648 +f 650/650/650 633/633/633 632/632/632 649/649/649 +f 651/651/651 633/633/633 650/650/650 +f 653/653/653 636/636/636 635/635/635 +f 654/654/654 637/637/637 636/636/636 653/653/653 +f 655/655/655 638/638/638 637/637/637 654/654/654 +f 656/656/656 639/639/639 638/638/638 655/655/655 +f 657/657/657 640/640/640 639/639/639 656/656/656 +f 658/658/658 641/641/641 640/640/640 657/657/657 +f 659/659/659 642/642/642 641/641/641 658/658/658 +f 660/660/660 643/643/643 642/642/642 659/659/659 +f 661/661/661 644/644/644 643/643/643 660/660/660 +f 662/662/662 645/645/645 644/644/644 661/661/661 +f 663/663/663 646/646/646 645/645/645 662/662/662 +f 664/664/664 647/647/647 646/646/646 663/663/663 +f 665/665/665 648/648/648 647/647/647 664/664/664 +f 666/666/666 649/649/649 648/648/648 665/665/665 +f 667/667/667 650/650/650 649/649/649 666/666/666 +f 668/668/668 650/650/650 667/667/667 +f 670/670/670 653/653/653 652/652/652 +f 671/671/671 654/654/654 653/653/653 670/670/670 +f 672/672/672 655/655/655 654/654/654 671/671/671 +f 673/673/673 656/656/656 655/655/655 672/672/672 +f 674/674/674 657/657/657 656/656/656 673/673/673 +f 675/675/675 658/658/658 657/657/657 674/674/674 +f 676/676/676 659/659/659 658/658/658 675/675/675 +f 677/677/677 660/660/660 659/659/659 676/676/676 +f 678/678/678 661/661/661 660/660/660 677/677/677 +f 679/679/679 662/662/662 661/661/661 678/678/678 +f 680/680/680 663/663/663 662/662/662 679/679/679 +f 681/681/681 664/664/664 663/663/663 680/680/680 +f 682/682/682 665/665/665 664/664/664 681/681/681 +f 683/683/683 666/666/666 665/665/665 682/682/682 +f 684/684/684 667/667/667 666/666/666 683/683/683 +f 685/685/685 667/667/667 684/684/684 +f 687/687/687 670/670/670 669/669/669 +f 688/688/688 671/671/671 670/670/670 687/687/687 +f 689/689/689 672/672/672 671/671/671 688/688/688 +f 690/690/690 673/673/673 672/672/672 689/689/689 +f 691/691/691 674/674/674 673/673/673 690/690/690 +f 692/692/692 675/675/675 674/674/674 691/691/691 +f 693/693/693 676/676/676 675/675/675 692/692/692 +f 694/694/694 677/677/677 676/676/676 693/693/693 +f 695/695/695 678/678/678 677/677/677 694/694/694 +f 696/696/696 679/679/679 678/678/678 695/695/695 +f 697/697/697 680/680/680 679/679/679 696/696/696 +f 698/698/698 681/681/681 680/680/680 697/697/697 +f 699/699/699 682/682/682 681/681/681 698/698/698 +f 700/700/700 683/683/683 682/682/682 699/699/699 +f 701/701/701 684/684/684 683/683/683 700/700/700 +f 702/702/702 684/684/684 701/701/701 +f 704/704/704 687/687/687 686/686/686 +f 705/705/705 688/688/688 687/687/687 704/704/704 +f 706/706/706 689/689/689 688/688/688 705/705/705 +f 707/707/707 690/690/690 689/689/689 706/706/706 +f 708/708/708 691/691/691 690/690/690 707/707/707 +f 709/709/709 692/692/692 691/691/691 708/708/708 +f 710/710/710 693/693/693 692/692/692 709/709/709 +f 711/711/711 694/694/694 693/693/693 710/710/710 +f 712/712/712 695/695/695 694/694/694 711/711/711 +f 713/713/713 696/696/696 695/695/695 712/712/712 +f 714/714/714 697/697/697 696/696/696 713/713/713 +f 715/715/715 698/698/698 697/697/697 714/714/714 +f 716/716/716 699/699/699 698/698/698 715/715/715 +f 717/717/717 700/700/700 699/699/699 716/716/716 +f 718/718/718 701/701/701 700/700/700 717/717/717 +f 719/719/719 701/701/701 718/718/718 +f 721/721/721 704/704/704 703/703/703 +f 722/722/722 705/705/705 704/704/704 721/721/721 +f 723/723/723 706/706/706 705/705/705 722/722/722 +f 724/724/724 707/707/707 706/706/706 723/723/723 +f 725/725/725 708/708/708 707/707/707 724/724/724 +f 726/726/726 709/709/709 708/708/708 725/725/725 +f 727/727/727 710/710/710 709/709/709 726/726/726 +f 728/728/728 711/711/711 710/710/710 727/727/727 +f 729/729/729 712/712/712 711/711/711 728/728/728 +f 730/730/730 713/713/713 712/712/712 729/729/729 +f 731/731/731 714/714/714 713/713/713 730/730/730 +f 732/732/732 715/715/715 714/714/714 731/731/731 +f 733/733/733 716/716/716 715/715/715 732/732/732 +f 734/734/734 717/717/717 716/716/716 733/733/733 +f 735/735/735 718/718/718 717/717/717 734/734/734 +f 736/736/736 718/718/718 735/735/735 +f 738/738/738 721/721/721 720/720/720 +f 739/739/739 722/722/722 721/721/721 738/738/738 +f 740/740/740 723/723/723 722/722/722 739/739/739 +f 741/741/741 724/724/724 723/723/723 740/740/740 +f 742/742/742 725/725/725 724/724/724 741/741/741 +f 743/743/743 726/726/726 725/725/725 742/742/742 +f 744/744/744 727/727/727 726/726/726 743/743/743 +f 745/745/745 728/728/728 727/727/727 744/744/744 +f 746/746/746 729/729/729 728/728/728 745/745/745 +f 747/747/747 730/730/730 729/729/729 746/746/746 +f 748/748/748 731/731/731 730/730/730 747/747/747 +f 749/749/749 732/732/732 731/731/731 748/748/748 +f 750/750/750 733/733/733 732/732/732 749/749/749 +f 751/751/751 734/734/734 733/733/733 750/750/750 +f 752/752/752 735/735/735 734/734/734 751/751/751 +f 753/753/753 735/735/735 752/752/752 +f 755/755/755 738/738/738 737/737/737 +f 756/756/756 739/739/739 738/738/738 755/755/755 +f 757/757/757 740/740/740 739/739/739 756/756/756 +f 758/758/758 741/741/741 740/740/740 757/757/757 +f 759/759/759 742/742/742 741/741/741 758/758/758 +f 760/760/760 743/743/743 742/742/742 759/759/759 +f 761/761/761 744/744/744 743/743/743 760/760/760 +f 762/762/762 745/745/745 744/744/744 761/761/761 +f 763/763/763 746/746/746 745/745/745 762/762/762 +f 764/764/764 747/747/747 746/746/746 763/763/763 +f 765/765/765 748/748/748 747/747/747 764/764/764 +f 766/766/766 749/749/749 748/748/748 765/765/765 +f 767/767/767 750/750/750 749/749/749 766/766/766 +f 768/768/768 751/751/751 750/750/750 767/767/767 +f 769/769/769 752/752/752 751/751/751 768/768/768 +f 770/770/770 752/752/752 769/769/769 +f 772/772/772 755/755/755 754/754/754 +f 773/773/773 756/756/756 755/755/755 772/772/772 +f 774/774/774 757/757/757 756/756/756 773/773/773 +f 775/775/775 758/758/758 757/757/757 774/774/774 +f 776/776/776 759/759/759 758/758/758 775/775/775 +f 777/777/777 760/760/760 759/759/759 776/776/776 +f 778/778/778 761/761/761 760/760/760 777/777/777 +f 779/779/779 762/762/762 761/761/761 778/778/778 +f 780/780/780 763/763/763 762/762/762 779/779/779 +f 781/781/781 764/764/764 763/763/763 780/780/780 +f 782/782/782 765/765/765 764/764/764 781/781/781 +f 783/783/783 766/766/766 765/765/765 782/782/782 +f 784/784/784 767/767/767 766/766/766 783/783/783 +f 785/785/785 768/768/768 767/767/767 784/784/784 +f 786/786/786 769/769/769 768/768/768 785/785/785 +f 787/787/787 769/769/769 786/786/786 +f 789/789/789 772/772/772 771/771/771 +f 790/790/790 773/773/773 772/772/772 789/789/789 +f 791/791/791 774/774/774 773/773/773 790/790/790 +f 792/792/792 775/775/775 774/774/774 791/791/791 +f 793/793/793 776/776/776 775/775/775 792/792/792 +f 794/794/794 777/777/777 776/776/776 793/793/793 +f 795/795/795 778/778/778 777/777/777 794/794/794 +f 796/796/796 779/779/779 778/778/778 795/795/795 +f 797/797/797 780/780/780 779/779/779 796/796/796 +f 798/798/798 781/781/781 780/780/780 797/797/797 +f 799/799/799 782/782/782 781/781/781 798/798/798 +f 800/800/800 783/783/783 782/782/782 799/799/799 +f 801/801/801 784/784/784 783/783/783 800/800/800 +f 802/802/802 785/785/785 784/784/784 801/801/801 +f 803/803/803 786/786/786 785/785/785 802/802/802 +f 804/804/804 786/786/786 803/803/803 +f 806/806/806 789/789/789 788/788/788 +f 807/807/807 790/790/790 789/789/789 806/806/806 +f 808/808/808 791/791/791 790/790/790 807/807/807 +f 809/809/809 792/792/792 791/791/791 808/808/808 +f 810/810/810 793/793/793 792/792/792 809/809/809 +f 811/811/811 794/794/794 793/793/793 810/810/810 +f 812/812/812 795/795/795 794/794/794 811/811/811 +f 813/813/813 796/796/796 795/795/795 812/812/812 +f 814/814/814 797/797/797 796/796/796 813/813/813 +f 815/815/815 798/798/798 797/797/797 814/814/814 +f 816/816/816 799/799/799 798/798/798 815/815/815 +f 817/817/817 800/800/800 799/799/799 816/816/816 +f 818/818/818 801/801/801 800/800/800 817/817/817 +f 819/819/819 802/802/802 801/801/801 818/818/818 +f 820/820/820 803/803/803 802/802/802 819/819/819 +f 821/821/821 803/803/803 820/820/820 +f 824/824/824 525/525/525 823/823/823 +f 524/524/524 823/823/823 525/525/525 +f 823/823/823 524/524/524 538/538/538 +f 825/825/825 508/508/508 525/525/525 +f 510/510/510 509/509/509 827/827/827 +f 826/826/826 827/827/827 509/509/509 +f 509/509/509 825/825/825 826/826/826 +f 508/508/508 825/825/825 509/509/509 +f 825/825/825 525/525/525 824/824/824 +f 549/549/549 860/860/860 537/537/537 +f 857/857/857 858/858/858 559/559/559 +f 859/859/859 549/549/549 559/559/559 +f 559/559/559 858/858/858 859/859/859 +f 823/823/823 538/538/538 822/822/822 +f 861/861/861 822/822/822 538/538/538 +f 538/538/538 860/860/860 861/861/861 +f 537/537/537 860/860/860 538/538/538 +f 860/860/860 549/549/549 859/859/859 +f 829/829/829 511/511/511 510/510/510 +f 510/510/510 828/828/828 829/829/829 +f 828/828/828 510/510/510 827/827/827 +f 830/830/830 511/511/511 829/829/829 +f 831/831/831 526/526/526 512/512/512 +f 833/833/833 527/527/527 526/526/526 +f 831/831/831 512/512/512 511/511/511 +f 831/831/831 832/832/832 526/526/526 +f 831/831/831 511/511/511 830/830/830 +f 527/527/527 833/833/833 539/539/539 +f 539/539/539 834/834/834 835/835/835 +f 539/539/539 833/833/833 834/834/834 +f 836/836/836 540/540/540 539/539/539 +f 550/550/550 836/836/836 837/837/837 +f 560/560/560 550/550/550 837/837/837 +f 540/540/540 836/836/836 550/550/550 +f 836/836/836 539/539/539 835/835/835 +f 833/833/833 526/526/526 832/832/832 +f 569/569/569 856/856/856 857/857/857 +f 559/559/559 569/569/569 857/857/857 +f 856/856/856 569/569/569 579/579/579 +f 580/580/580 592/592/592 853/853/853 +f 579/579/579 580/580/580 856/856/856 +f 580/580/580 855/855/855 856/856/856 +f 580/580/580 853/853/853 854/854/854 +f 853/853/853 593/593/593 852/852/852 +f 854/854/854 855/855/855 580/580/580 +f 851/851/851 852/852/852 593/593/593 +f 592/592/592 593/593/593 853/853/853 +f 851/851/851 593/593/593 607/607/607 +f 608/608/608 851/851/851 607/607/607 +f 608/608/608 849/849/849 850/850/850 +f 848/848/848 849/849/849 609/609/609 +f 608/608/608 609/609/609 849/849/849 +f 847/847/847 848/848/848 609/609/609 +f 608/608/608 850/850/850 851/851/851 +f 581/581/581 840/840/840 841/841/841 +f 841/841/841 842/842/842 581/581/581 +f 843/843/843 581/581/581 842/842/842 +f 582/582/582 840/840/840 581/581/581 +f 839/839/839 560/560/560 838/838/838 +f 837/837/837 838/838/838 560/560/560 +f 839/839/839 840/840/840 570/570/570 +f 582/582/582 570/570/570 840/840/840 +f 560/560/560 839/839/839 570/570/570 +f 610/610/610 845/845/845 846/846/846 +f 846/846/846 847/847/847 610/610/610 +f 609/609/609 610/610/610 847/847/847 +f 611/611/611 845/845/845 610/610/610 +f 594/594/594 843/843/843 844/844/844 +f 845/845/845 594/594/594 844/844/844 +f 843/843/843 594/594/594 595/595/595 +f 594/594/594 845/845/845 611/611/611 +f 581/581/581 843/843/843 595/595/595 diff --git a/3DAR/red.png b/3DAR/red.png new file mode 100755 index 0000000000000000000000000000000000000000..8f409f7f7a7f381764fe77f80fce9c51935ecd73 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0vp^93afW1|*O0@9PFqoCO|{#S9GG!XV7ZFl&wkP>?0v z(btiIVPjv-@4(4GzCyA`kS_y6l_~>6Lo)-z&;LOBB?CjL0RzLU1O^7H84L{K`IF+0 zx&hUic)B=-RNPAXbN&E>%ML~d217#u1_nl#03cH^gh9Z8MU;U>z>yV6D1kvJnu#wt SLfIdvpTX1B&t;ucLK6USc_=*q literal 0 HcmV?d00001 diff --git a/3DAR/sky.png b/3DAR/sky.png new file mode 100644 index 0000000000000000000000000000000000000000..b52baecc932d86b07f68e1ecde6fac2cef24a13e GIT binary patch literal 1315 zcmV+;1>E|HP)(v zs9ScsMPjByU7}WTwl7DF*4gb^b-8qq(NS))rMKySoY!c8$1FgCTXwp_%I`HykT6G$ zzsT@UXRSL@m$kv|Qfsj@N|5a4;X+-a+1l(wUZXfqly#BPag5GZa<)cdr$bwy+}i6^ za<=g4;d+_uUvRB*N6-03hwh~wbsWqrn!t>ZIFj(V5WI8T#9TA;AK z?2)VBf1TJ$XRJ|ausl28P3)7S2}#qZD4@LzerL0X?LLWO~!+B{R2 z_3Ga`QI;)1gf2mZKv5!@6lC0v1qTNATpipP7tiA1PgUOh#Z7&kYlO)$MvKVK?zY42 zZimX>+v-hcu2F2UQg5?%lG8z1o>z3XY=y~0U!;Se+c8LvF-VM`v*|`*rqI>yV0yt~ zdce8H@J?v2m9FEKuH%56*@BxL4rM2n=L_un6Trhx$AO`(5brXWqiag zMT(B7-<`7Oo3Z9{kI+6?ot3TPMPQ|lr{IsM;PdL?hojx`>EVi`+(B8N>E+|y+UuLL z;Bkx1 zaEZ-lf5tskn^bYNFGr0=W2pG+-M!OPBme*bxk*GpRCwC#!iPE)004l|-?+-V83dkm^+Zk%VK_oZ zghOzIUJ#|mUp3*P#%LV}O)+hO#=rXLALXVlx&t_z z$@Y&d3M4w8jw49;gOwFZN?hE>ggo9YW&L}W_hoJkbAIFPP4CA%pNg3oUS5Q*;p7Q) zbm$Vmw|J_mu(YJ-ZuSi3`bMT7VN5YO7x-Mt>&X;7<yFYhM zvF$Wr3o$Xl-JO=@tT;~l8}!L0=nz_3sHpHZ7FSo4l_~M(%|wR&;=o>H`;p0-|7U{$ Z0|10fMlgrI=%fGu002ovPDHLkV1gKfzdQf{ literal 0 HcmV?d00001 diff --git a/3DAR/sphere.obj b/3DAR/sphere.obj new file mode 100755 index 0000000..43535a5 --- /dev/null +++ b/3DAR/sphere.obj @@ -0,0 +1,408 @@ +# 3ds Max Wavefront OBJ Exporter v0.94b - (c)2007 guruware +# File Created: 22.03.2011 16:11:43 + +# +# object Sphere01 +# + +v 0.0000 0.0000 19.0764 +v -0.0000 7.3002 17.6243 +v -2.7937 6.7445 17.6243 +v -5.1620 5.1620 17.6243 +v -6.7445 2.7937 17.6243 +v -7.3002 0.0000 17.6243 +v -6.7445 -2.7937 17.6243 +v -5.1620 -5.1620 17.6243 +v -2.7937 -6.7445 17.6243 +v 0.0000 -7.3002 17.6243 +v 2.7937 -6.7445 17.6243 +v 5.1620 -5.1620 17.6243 +v 6.7445 -2.7937 17.6243 +v 7.3002 0.0000 17.6243 +v 6.7445 2.7937 17.6243 +v 5.1620 5.1620 17.6243 +v 2.7937 6.7445 17.6243 +v -0.0000 13.4890 13.4890 +v -5.1620 12.4622 13.4890 +v -9.5382 9.5382 13.4890 +v -12.4622 5.1620 13.4890 +v -13.4890 0.0000 13.4890 +v -12.4622 -5.1620 13.4890 +v -9.5382 -9.5382 13.4890 +v -5.1620 -12.4622 13.4890 +v 0.0000 -13.4890 13.4890 +v 5.1620 -12.4622 13.4890 +v 9.5382 -9.5382 13.4890 +v 12.4623 -5.1620 13.4890 +v 13.4890 0.0000 13.4890 +v 12.4622 5.1620 13.4890 +v 9.5382 9.5382 13.4890 +v 5.1620 12.4623 13.4890 +v -0.0000 17.6243 7.3002 +v -6.7445 16.2827 7.3002 +v -12.4622 12.4622 7.3002 +v -16.2827 6.7445 7.3002 +v -17.6243 0.0000 7.3002 +v -16.2827 -6.7445 7.3002 +v -12.4623 -12.4622 7.3002 +v -6.7445 -16.2827 7.3002 +v 0.0000 -17.6243 7.3002 +v 6.7445 -16.2827 7.3002 +v 12.4623 -12.4622 7.3002 +v 16.2827 -6.7445 7.3002 +v 17.6243 0.0000 7.3002 +v 16.2827 6.7445 7.3002 +v 12.4622 12.4623 7.3002 +v 6.7445 16.2827 7.3002 +v -0.0000 19.0764 -0.0000 +v -7.3002 17.6243 -0.0000 +v -13.4890 13.4890 -0.0000 +v -17.6243 7.3002 -0.0000 +v -19.0764 0.0000 -0.0000 +v -17.6243 -7.3002 -0.0000 +v -13.4890 -13.4890 -0.0000 +v -7.3002 -17.6243 -0.0000 +v 0.0000 -19.0764 -0.0000 +v 7.3002 -17.6243 -0.0000 +v 13.4890 -13.4890 -0.0000 +v 17.6243 -7.3002 -0.0000 +v 19.0764 0.0000 -0.0000 +v 17.6243 7.3002 -0.0000 +v 13.4890 13.4891 -0.0000 +v 7.3002 17.6243 -0.0000 +v -0.0000 17.6243 -7.3002 +v -6.7445 16.2827 -7.3002 +v -12.4622 12.4622 -7.3002 +v -16.2827 6.7445 -7.3002 +v -17.6243 0.0000 -7.3002 +v -16.2827 -6.7445 -7.3002 +v -12.4623 -12.4622 -7.3002 +v -6.7445 -16.2827 -7.3002 +v 0.0000 -17.6243 -7.3002 +v 6.7445 -16.2827 -7.3002 +v 12.4623 -12.4622 -7.3002 +v 16.2827 -6.7445 -7.3002 +v 17.6243 0.0000 -7.3002 +v 16.2827 6.7445 -7.3002 +v 12.4622 12.4623 -7.3002 +v 6.7445 16.2827 -7.3002 +v -0.0000 13.4890 -13.4890 +v -5.1620 12.4622 -13.4890 +v -9.5382 9.5382 -13.4890 +v -12.4622 5.1620 -13.4890 +v -13.4890 0.0000 -13.4890 +v -12.4622 -5.1620 -13.4890 +v -9.5382 -9.5382 -13.4890 +v -5.1620 -12.4622 -13.4890 +v 0.0000 -13.4890 -13.4890 +v 5.1620 -12.4622 -13.4890 +v 9.5382 -9.5382 -13.4890 +v 12.4623 -5.1620 -13.4890 +v 13.4890 0.0000 -13.4890 +v 12.4622 5.1620 -13.4890 +v 9.5382 9.5382 -13.4890 +v 5.1620 12.4623 -13.4890 +v -0.0000 7.3002 -17.6243 +v -2.7937 6.7445 -17.6243 +v -5.1620 5.1620 -17.6243 +v -6.7445 2.7937 -17.6243 +v -7.3002 0.0000 -17.6243 +v -6.7445 -2.7937 -17.6243 +v -5.1620 -5.1620 -17.6243 +v -2.7937 -6.7445 -17.6243 +v 0.0000 -7.3002 -17.6243 +v 2.7937 -6.7445 -17.6243 +v 5.1620 -5.1620 -17.6243 +v 6.7445 -2.7937 -17.6243 +v 7.3002 0.0000 -17.6243 +v 6.7445 2.7937 -17.6243 +v 5.1620 5.1620 -17.6243 +v 2.7937 6.7445 -17.6243 +v 0.0000 0.0000 -19.0764 +# 114 vertices + +vt 0.0000 1.0000 0.0000 +vt 0.0000 0.8750 0.0000 +vt 0.0625 0.8750 0.0000 +vt 0.0625 1.0000 0.0000 +vt 0.1250 0.8750 0.0000 +vt 0.1250 1.0000 0.0000 +vt 0.1875 0.8750 0.0000 +vt 0.1875 1.0000 0.0000 +vt 0.2500 0.8750 0.0000 +vt 0.2500 1.0000 0.0000 +vt 0.3125 0.8750 0.0000 +vt 0.3125 1.0000 0.0000 +vt 0.3750 0.8750 0.0000 +vt 0.3750 1.0000 0.0000 +vt 0.4375 0.8750 0.0000 +vt 0.4375 1.0000 0.0000 +vt 0.5000 0.8750 0.0000 +vt 0.5000 1.0000 0.0000 +vt 0.5625 0.8750 0.0000 +vt 0.5625 1.0000 0.0000 +vt 0.6250 0.8750 0.0000 +vt 0.6250 1.0000 0.0000 +vt 0.6875 0.8750 0.0000 +vt 0.6875 1.0000 0.0000 +vt 0.7500 0.8750 0.0000 +vt 0.7500 1.0000 0.0000 +vt 0.8125 0.8750 0.0000 +vt 0.8125 1.0000 0.0000 +vt 0.8750 0.8750 0.0000 +vt 0.8750 1.0000 0.0000 +vt 0.9375 0.8750 0.0000 +vt 0.9375 1.0000 0.0000 +vt 1.0000 0.8750 0.0000 +vt 0.0000 0.7500 0.0000 +vt 0.0625 0.7500 0.0000 +vt 0.1250 0.7500 0.0000 +vt 0.1875 0.7500 0.0000 +vt 0.2500 0.7500 0.0000 +vt 0.3125 0.7500 0.0000 +vt 0.3750 0.7500 0.0000 +vt 0.4375 0.7500 0.0000 +vt 0.5000 0.7500 0.0000 +vt 0.5625 0.7500 0.0000 +vt 0.6250 0.7500 0.0000 +vt 0.6875 0.7500 0.0000 +vt 0.7500 0.7500 0.0000 +vt 0.8125 0.7500 0.0000 +vt 0.8750 0.7500 0.0000 +vt 0.9375 0.7500 0.0000 +vt 1.0000 0.7500 0.0000 +vt 0.0000 0.6250 0.0000 +vt 0.0625 0.6250 0.0000 +vt 0.1250 0.6250 0.0000 +vt 0.1875 0.6250 0.0000 +vt 0.2500 0.6250 0.0000 +vt 0.3125 0.6250 0.0000 +vt 0.3750 0.6250 0.0000 +vt 0.4375 0.6250 0.0000 +vt 0.5000 0.6250 0.0000 +vt 0.5625 0.6250 0.0000 +vt 0.6250 0.6250 0.0000 +vt 0.6875 0.6250 0.0000 +vt 0.7500 0.6250 0.0000 +vt 0.8125 0.6250 0.0000 +vt 0.8750 0.6250 0.0000 +vt 0.9375 0.6250 0.0000 +vt 1.0000 0.6250 0.0000 +vt 0.0000 0.5000 0.0000 +vt 0.0625 0.5000 0.0000 +vt 0.1250 0.5000 0.0000 +vt 0.1875 0.5000 0.0000 +vt 0.2500 0.5000 0.0000 +vt 0.3125 0.5000 0.0000 +vt 0.3750 0.5000 0.0000 +vt 0.4375 0.5000 0.0000 +vt 0.5000 0.5000 0.0000 +vt 0.5625 0.5000 0.0000 +vt 0.6250 0.5000 0.0000 +vt 0.6875 0.5000 0.0000 +vt 0.7500 0.5000 0.0000 +vt 0.8125 0.5000 0.0000 +vt 0.8750 0.5000 0.0000 +vt 0.9375 0.5000 0.0000 +vt 1.0000 0.5000 0.0000 +vt 0.0000 0.3750 0.0000 +vt 0.0625 0.3750 0.0000 +vt 0.1250 0.3750 0.0000 +vt 0.1875 0.3750 0.0000 +vt 0.2500 0.3750 0.0000 +vt 0.3125 0.3750 0.0000 +vt 0.3750 0.3750 0.0000 +vt 0.4375 0.3750 0.0000 +vt 0.5000 0.3750 0.0000 +vt 0.5625 0.3750 0.0000 +vt 0.6250 0.3750 0.0000 +vt 0.6875 0.3750 0.0000 +vt 0.7500 0.3750 0.0000 +vt 0.8125 0.3750 0.0000 +vt 0.8750 0.3750 0.0000 +vt 0.9375 0.3750 0.0000 +vt 1.0000 0.3750 0.0000 +vt 0.0000 0.2500 0.0000 +vt 0.0625 0.2500 0.0000 +vt 0.1250 0.2500 0.0000 +vt 0.1875 0.2500 0.0000 +vt 0.2500 0.2500 0.0000 +vt 0.3125 0.2500 0.0000 +vt 0.3750 0.2500 0.0000 +vt 0.4375 0.2500 0.0000 +vt 0.5000 0.2500 0.0000 +vt 0.5625 0.2500 0.0000 +vt 0.6250 0.2500 0.0000 +vt 0.6875 0.2500 0.0000 +vt 0.7500 0.2500 0.0000 +vt 0.8125 0.2500 0.0000 +vt 0.8750 0.2500 0.0000 +vt 0.9375 0.2500 0.0000 +vt 1.0000 0.2500 0.0000 +vt 0.0000 0.1250 0.0000 +vt 0.0625 0.1250 0.0000 +vt 0.1250 0.1250 0.0000 +vt 0.1875 0.1250 0.0000 +vt 0.2500 0.1250 0.0000 +vt 0.3125 0.1250 0.0000 +vt 0.3750 0.1250 0.0000 +vt 0.4375 0.1250 0.0000 +vt 0.5000 0.1250 0.0000 +vt 0.5625 0.1250 0.0000 +vt 0.6250 0.1250 0.0000 +vt 0.6875 0.1250 0.0000 +vt 0.7500 0.1250 0.0000 +vt 0.8125 0.1250 0.0000 +vt 0.8750 0.1250 0.0000 +vt 0.9375 0.1250 0.0000 +vt 1.0000 0.1250 0.0000 +vt 0.0000 0.0000 0.0000 +vt 0.0625 0.0000 0.0000 +vt 0.1250 0.0000 0.0000 +vt 0.1875 0.0000 0.0000 +vt 0.2500 0.0000 0.0000 +vt 0.3125 0.0000 0.0000 +vt 0.3750 0.0000 0.0000 +vt 0.4375 0.0000 0.0000 +vt 0.5000 0.0000 0.0000 +vt 0.5625 0.0000 0.0000 +vt 0.6250 0.0000 0.0000 +vt 0.6875 0.0000 0.0000 +vt 0.7500 0.0000 0.0000 +vt 0.8125 0.0000 0.0000 +vt 0.8750 0.0000 0.0000 +vt 0.9375 0.0000 0.0000 +# 151 texture coords + +g Sphere01 +s 1 +f 1/1 2/2 3/3 +f 1/4 3/3 4/5 +f 1/6 4/5 5/7 +f 1/8 5/7 6/9 +f 1/10 6/9 7/11 +f 1/12 7/11 8/13 +f 1/14 8/13 9/15 +f 1/16 9/15 10/17 +f 1/18 10/17 11/19 +f 1/20 11/19 12/21 +f 1/22 12/21 13/23 +f 1/24 13/23 14/25 +f 1/26 14/25 15/27 +f 1/28 15/27 16/29 +f 1/30 16/29 17/31 +f 1/32 17/31 2/33 +f 2/2 18/34 19/35 3/3 +f 3/3 19/35 20/36 4/5 +f 4/5 20/36 21/37 5/7 +f 5/7 21/37 22/38 6/9 +f 6/9 22/38 23/39 7/11 +f 7/11 23/39 24/40 8/13 +f 8/13 24/40 25/41 9/15 +f 9/15 25/41 26/42 10/17 +f 10/17 26/42 27/43 11/19 +f 11/19 27/43 28/44 12/21 +f 12/21 28/44 29/45 13/23 +f 13/23 29/45 30/46 14/25 +f 14/25 30/46 31/47 15/27 +f 15/27 31/47 32/48 16/29 +f 16/29 32/48 33/49 17/31 +f 17/31 33/49 18/50 2/33 +f 18/34 34/51 35/52 19/35 +f 19/35 35/52 36/53 20/36 +f 20/36 36/53 37/54 21/37 +f 21/37 37/54 38/55 22/38 +f 22/38 38/55 39/56 23/39 +f 23/39 39/56 40/57 24/40 +f 24/40 40/57 41/58 25/41 +f 25/41 41/58 42/59 26/42 +f 26/42 42/59 43/60 27/43 +f 27/43 43/60 44/61 28/44 +f 28/44 44/61 45/62 29/45 +f 29/45 45/62 46/63 30/46 +f 30/46 46/63 47/64 31/47 +f 31/47 47/64 48/65 32/48 +f 32/48 48/65 49/66 33/49 +f 33/49 49/66 34/67 18/50 +f 34/51 50/68 51/69 35/52 +f 35/52 51/69 52/70 36/53 +f 36/53 52/70 53/71 37/54 +f 37/54 53/71 54/72 38/55 +f 38/55 54/72 55/73 39/56 +f 39/56 55/73 56/74 40/57 +f 40/57 56/74 57/75 41/58 +f 41/58 57/75 58/76 42/59 +f 42/59 58/76 59/77 43/60 +f 43/60 59/77 60/78 44/61 +f 44/61 60/78 61/79 45/62 +f 45/62 61/79 62/80 46/63 +f 46/63 62/80 63/81 47/64 +f 47/64 63/81 64/82 48/65 +f 48/65 64/82 65/83 49/66 +f 49/66 65/83 50/84 34/67 +f 50/68 66/85 67/86 51/69 +f 51/69 67/86 68/87 52/70 +f 52/70 68/87 69/88 53/71 +f 53/71 69/88 70/89 54/72 +f 54/72 70/89 71/90 55/73 +f 55/73 71/90 72/91 56/74 +f 56/74 72/91 73/92 57/75 +f 57/75 73/92 74/93 58/76 +f 58/76 74/93 75/94 59/77 +f 59/77 75/94 76/95 60/78 +f 60/78 76/95 77/96 61/79 +f 61/79 77/96 78/97 62/80 +f 62/80 78/97 79/98 63/81 +f 63/81 79/98 80/99 64/82 +f 64/82 80/99 81/100 65/83 +f 65/83 81/100 66/101 50/84 +f 66/85 82/102 83/103 67/86 +f 67/86 83/103 84/104 68/87 +f 68/87 84/104 85/105 69/88 +f 69/88 85/105 86/106 70/89 +f 70/89 86/106 87/107 71/90 +f 71/90 87/107 88/108 72/91 +f 72/91 88/108 89/109 73/92 +f 73/92 89/109 90/110 74/93 +f 74/93 90/110 91/111 75/94 +f 75/94 91/111 92/112 76/95 +f 76/95 92/112 93/113 77/96 +f 77/96 93/113 94/114 78/97 +f 78/97 94/114 95/115 79/98 +f 79/98 95/115 96/116 80/99 +f 80/99 96/116 97/117 81/100 +f 81/100 97/117 82/118 66/101 +f 82/102 98/119 99/120 83/103 +f 83/103 99/120 100/121 84/104 +f 84/104 100/121 101/122 85/105 +f 85/105 101/122 102/123 86/106 +f 86/106 102/123 103/124 87/107 +f 87/107 103/124 104/125 88/108 +f 88/108 104/125 105/126 89/109 +f 89/109 105/126 106/127 90/110 +f 90/110 106/127 107/128 91/111 +f 91/111 107/128 108/129 92/112 +f 92/112 108/129 109/130 93/113 +f 93/113 109/130 110/131 94/114 +f 94/114 110/131 111/132 95/115 +f 95/115 111/132 112/133 96/116 +f 96/116 112/133 113/134 97/117 +f 97/117 113/134 98/135 82/118 +f 114/136 99/120 98/119 +f 114/137 100/121 99/120 +f 114/138 101/122 100/121 +f 114/139 102/123 101/122 +f 114/140 103/124 102/123 +f 114/141 104/125 103/124 +f 114/142 105/126 104/125 +f 114/143 106/127 105/126 +f 114/144 107/128 106/127 +f 114/145 108/129 107/128 +f 114/146 109/130 108/129 +f 114/147 110/131 109/130 +f 114/148 111/132 110/131 +f 114/149 112/133 111/132 +f 114/150 113/134 112/133 +f 114/151 98/135 113/134 +# 96 polygons - 32 triangles + diff --git a/Classes/MapViewController.m b/Classes/MapViewController.m index b46d22e..696c368 100644 --- a/Classes/MapViewController.m +++ b/Classes/MapViewController.m @@ -100,7 +100,11 @@ -(void)loadEvents { marker.subtitle = [NSString stringWithFormat:@"At %@ on %@", event.venue, event.startDate]; marker.imageName = @"music_icon.png"; - [mapView addAnnotation:marker]; + // TODO: Test with array + [mapView addAnnotations:[NSArray arrayWithObject:marker]]; + +// [mapView addAnnotation:marker]; + [marker release]; } @@ -128,34 +132,8 @@ -(void)setCurrentMapLocation:(CLLocation *)loc { [mapView setRegion:region animated:YES]; } --(MKAnnotationView *)mapView:(SM3DARMapView *)theMapView viewForAnnotation:(id )annotation { - - MKPinAnnotationView * view = nil; - - if (annotation != theMapView.userLocation) { - - view = (MKPinAnnotationView *) - [theMapView dequeueReusableAnnotationViewWithIdentifier:@"identifier"]; - - if (view == nil) { - view = [[[MKPinAnnotationView alloc] - initWithAnnotation:annotation reuseIdentifier:@"identifier"] - autorelease]; - } - - [view setPinColor:MKPinAnnotationColorRed]; - [view setCanShowCallout:YES]; - [view setAnimatesDrop:YES]; - - } else { - // User's current position - //GeoEvents_finalAppDelegate * appDelegate = [UIApplication sharedApplication].delegate; - //[self setCurrentMapLocation:appDelegate.location]; - } - return view; -} - -(void)dealloc { + [mapView release]; [events release]; [super dealloc]; } diff --git a/Default.png b/Default.png new file mode 100644 index 0000000000000000000000000000000000000000..f04413a40da88dcbd0359ca12f41673823190c69 GIT binary patch literal 8151 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 Date: Thu, 21 Apr 2011 06:31:24 -0700 Subject: [PATCH 5/8] Focus view. --- 3DAR/MarkerCalloutView.h | 31 +++++ 3DAR/MarkerCalloutView.m | 183 ++++++++++++++++++++++++++++ 3DAR/SM3DAR.h | 2 + 3DAR/SM3DARMapView.h | 7 +- 3DAR/SM3DARMapView.m | 60 +++++++-- 3DAR/music_icon_focused.png | Bin 0 -> 3329 bytes 3DAR/music_icon_focused@2x.png | Bin 0 -> 6129 bytes Classes/MapMarker.h | 5 +- Classes/MapMarker.m | 3 +- Classes/MapViewController.m | 27 +++- GeoEvents.xcodeproj/project.pbxproj | 14 +++ 11 files changed, 318 insertions(+), 14 deletions(-) create mode 100644 3DAR/MarkerCalloutView.h create mode 100644 3DAR/MarkerCalloutView.m create mode 100644 3DAR/music_icon_focused.png create mode 100644 3DAR/music_icon_focused@2x.png diff --git a/3DAR/MarkerCalloutView.h b/3DAR/MarkerCalloutView.h new file mode 100644 index 0000000..05a5a78 --- /dev/null +++ b/3DAR/MarkerCalloutView.h @@ -0,0 +1,31 @@ +// +// MarkerCalloutView.h +// +// Created by P. Mark Anderson on 4/21/11. +// Copyright 2011 Spot Metrix, Inc. All rights reserved. +// + +#import +#import "SM3DAR.h" + +@protocol MarkerCalloutViewDelegate +- (void) calloutViewWasTappedForPoint:(SM3DAR_Point *)point; +@end + +@interface MarkerCalloutView : UIView +{ + UILabel *titleLabel; + UILabel *subtitleLabel; + UILabel *distanceLabel; + UIButton *disclosureButton; + SM3DAR_Point *focusedPoint; + id delegate; +} + +@property (nonatomic, retain) UILabel *titleLabel; +@property (nonatomic, retain) UILabel *subtitleLabel; +@property (nonatomic, retain) UILabel *distanceLabel; +@property (nonatomic, retain) UIButton *disclosureButton; +@property (nonatomic, assign) id delegate; + +@end diff --git a/3DAR/MarkerCalloutView.m b/3DAR/MarkerCalloutView.m new file mode 100644 index 0000000..f4052fa --- /dev/null +++ b/3DAR/MarkerCalloutView.m @@ -0,0 +1,183 @@ +// +// MarkerCalloutView.m +// +// Created by P. Mark Anderson on 4/21/11. +// Copyright 2011 Spot Metrix, Inc. All rights reserved. +// + +#import "MarkerCalloutView.h" +#import + + +@interface MarkerCalloutView (Private) +- (void) stylizeLabel:(UILabel *)label fontSize:(CGFloat)fontSize; +@end + +@implementation MarkerCalloutView + +@synthesize delegate; +@synthesize titleLabel; +@synthesize subtitleLabel; +@synthesize distanceLabel; +@synthesize disclosureButton; + +- (void) dealloc +{ + self.titleLabel = nil; + self.subtitleLabel = nil; + self.distanceLabel = nil; + self.disclosureButton = nil; + [focusedPoint release]; + + [super dealloc]; +} + +- (id) initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:CGRectMake(frame.origin.x, frame.origin.y, 300, 66)]; // 44 for single line mode + + if (self) + { + self.backgroundColor = [UIColor clearColor]; + + CALayer *l = self.layer; + [l setMasksToBounds:YES]; + [l setCornerRadius:12.0]; + [l setBorderWidth:1.0]; + [l setBorderColor:[[UIColor darkGrayColor] CGColor]]; + + UIView *bg = [[UIView alloc] initWithFrame:self.bounds]; + bg.backgroundColor = [UIColor darkTextColor]; + bg.alpha = 0.5; + [self addSubview:bg]; + [bg release]; + + + // Add gloss effect. + + CAGradientLayer *gradient = [CAGradientLayer layer]; +// [gradient setCornerRadius:6.0]; + + CGFloat padding = 0.0; +// CGFloat halfHeight = self.bounds.size.height/2.0 - padding; + CGFloat thirdHeight = self.bounds.size.height/3.0 - padding; + +// gradient.frame = CGRectMake(padding, +// padding, +// self.bounds.size.width-(2.0*padding), +// halfHeight); + + gradient.frame = CGRectMake(padding, + thirdHeight+padding, + self.bounds.size.width-(2.0*padding), + thirdHeight*2.0); + + gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor clearColor] CGColor], (id)[[UIColor blackColor] CGColor], nil]; +// gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor clearColor] CGColor], nil]; + + [l insertSublayer:gradient atIndex:0]; + + + + // W 300: 10 _45_ 10 _LABEL_ 10 _25_ 10: 100 + LABEL + // H 66: 10 22 _8_ 16 10 + + self.titleLabel = [[[UILabel alloc] initWithFrame:CGRectMake(65, 10, 190, 22)] autorelease]; + [self stylizeLabel:titleLabel fontSize:22]; + + self.subtitleLabel = [[[UILabel alloc] initWithFrame:CGRectMake(65, 34, 190, 16)] autorelease]; + [self stylizeLabel:subtitleLabel fontSize:16]; + + self.distanceLabel = [[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 45, 46)] autorelease]; + [self stylizeLabel:distanceLabel fontSize:12]; + distanceLabel.lineBreakMode = UILineBreakModeWordWrap; + distanceLabel.textColor = [UIColor lightGrayColor]; + distanceLabel.textAlignment = UITextAlignmentCenter; + + self.disclosureButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; + [disclosureButton addTarget:self action:@selector(disclosureButtonTapped) forControlEvents:UIControlEventTouchUpInside]; + disclosureButton.center = CGPointMake(300-23, 33); + + [self addSubview:titleLabel]; + [self addSubview:subtitleLabel]; + [self addSubview:distanceLabel]; + [self addSubview:disclosureButton]; + } + + return self; +} + +/* +// Only override drawRect: if you perform custom drawing. +// An empty implementation adversely affects performance during animation. +- (void)drawRect:(CGRect)rect { + // Drawing code. +} +*/ + +-(void)pointDidGainFocus:(SM3DAR_Point*)point +{ + focusedPoint = [point retain]; + + NSString *titleText = nil; + NSString *subtitleText = nil; + NSString *distanceText = nil; + + SEL sel = @selector(title); + if ([point respondsToSelector:sel]) + titleText = [point performSelector:sel]; + if (!titleText) + titleText = @""; + + sel = @selector(subtitle); + if ([point respondsToSelector:sel]) + subtitleText = [point performSelector:sel]; + if (!subtitleText) + subtitleText = @""; + + sel = @selector(formattedDistanceFromCurrentLocationWithUnits); + if ([point respondsToSelector:sel]) + distanceText = [point performSelector:sel]; + if (!distanceText) + distanceText = @""; + + + // TODO: Switch display modes based on available text. + + titleLabel.text = titleText; + subtitleLabel.text = subtitleText; + distanceLabel.text = distanceText; + + self.hidden = NO; + [self.superview.superview bringSubviewToFront:self.superview]; + [self.superview bringSubviewToFront:self]; +} + +-(void)pointDidLoseFocus:(SM3DAR_Point*)point +{ + [focusedPoint release]; + self.hidden = YES; +} + +- (void) stylizeLabel:(UILabel *)label fontSize:(CGFloat)fontSize +{ + label.textColor = [UIColor whiteColor]; + label.backgroundColor = [UIColor clearColor]; + label.shadowColor = [UIColor blackColor]; + label.shadowOffset = CGSizeMake(1, 1); + label.font = [UIFont systemFontOfSize:fontSize]; + label.adjustsFontSizeToFitWidth = YES; + label.lineBreakMode = UILineBreakModeTailTruncation; +} + +- (void) disclosureButtonTapped +{ + [delegate calloutViewWasTappedForPoint:focusedPoint]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event +{ + [self disclosureButtonTapped]; +} + +@end diff --git a/3DAR/SM3DAR.h b/3DAR/SM3DAR.h index 7142b0b..2f789db 100644 --- a/3DAR/SM3DAR.h +++ b/3DAR/SM3DAR.h @@ -236,6 +236,7 @@ typedef NSObject SM3DAR_Point; - (CGFloat)distanceInMilesFromCurrentLocation; - (NSString*)formattedDistanceInMilesFrom:(CLLocation*)otherPoint; - (NSString*)formattedDistanceInMilesFromCurrentLocation; +- (NSString*)formattedDistanceFromCurrentLocationWithUnits; - (BOOL)isInView:(CGPoint*)point; - (CATransform3D)objectTransform; - (CGFloat)gearSpeed; @@ -282,6 +283,7 @@ typedef NSObject SM3DAR_Point; @property (nonatomic, retain) UIImageView *icon; +- (id)initWithPointOfInterest:(SM3DAR_PointOfInterest*)pointOfInterest imageName:(NSString *)_imageName; + (NSString*)randomIconName; @end diff --git a/3DAR/SM3DARMapView.h b/3DAR/SM3DARMapView.h index 3e9d83a..63a56f6 100644 --- a/3DAR/SM3DARMapView.h +++ b/3DAR/SM3DARMapView.h @@ -8,8 +8,9 @@ #import #import #import "SM3DAR.h" +#import "MarkerCalloutView.h" -@interface SM3DARMapView : MKMapView +@interface SM3DARMapView : MKMapView { SM3DAR_Controller *sm3dar; CGFloat mapZoomPadding; @@ -18,9 +19,13 @@ IBOutlet UIView *compassView; IBOutlet UIView *overlayView; UIView *containerView; + MarkerCalloutView *calloutView; + NSMutableDictionary *pointAnnotations; } @property (nonatomic, retain) UIView *containerView; +@property (nonatomic, retain) MarkerCalloutView *calloutView; +@property (nonatomic, retain) UIView *hudView; - (void) init3DAR; //- (void) add3darContainer; diff --git a/3DAR/SM3DARMapView.m b/3DAR/SM3DARMapView.m index 9e25d1c..11bed2d 100644 --- a/3DAR/SM3DARMapView.m +++ b/3DAR/SM3DARMapView.m @@ -12,18 +12,21 @@ @implementation SM3DARMapView @synthesize containerView; +@synthesize calloutView; +@synthesize hudView; - (void) dealloc { - [hudView release]; - hudView = nil; [overlayView release]; overlayView = nil; + self.hudView = nil; self.containerView = nil; + self.calloutView = nil; [sm3dar release]; + [pointAnnotations release]; [super dealloc]; } @@ -39,6 +42,8 @@ - (void) init3DAR // Self will be the delegate until 3DAR is done initializing. sm3dar = [[SM3DAR_Controller alloc] initWithDelegate:self]; + + pointAnnotations = [[NSMutableDictionary alloc] init]; } - (void) add3darContainer:(SM3DAR_Controller *)_sm3dar @@ -63,13 +68,28 @@ - (void) add3darContainer:(SM3DAR_Controller *)_sm3dar // _sm3dar.markerViewClass = [PushpinView class]; - _sm3dar.focusView = nil; + if (!hudView) + { + self.hudView = [[[UIView alloc] initWithFrame:self.bounds] autorelease]; + } + + _sm3dar.hudView = hudView; - if (hudView) + if (!hudView.superview) { - _sm3dar.hudView = hudView; + [_sm3dar.view addSubview:hudView]; } + + self.calloutView = [[[MarkerCalloutView alloc] + initWithFrame:CGRectMake(10, 178, 300, 60)] autorelease]; + calloutView.delegate = self; + calloutView.hidden = YES; + [hudView addSubview:calloutView]; + + _sm3dar.focusView = calloutView; + + // Add 3DAR view to parent view. @@ -101,7 +121,7 @@ - (id) initWithFrame:(CGRect)frame if (self = [super initWithFrame:frame]); { // When no NIB is used, init3DAR must be called manually - // after the map view is added to its superview. + // after the map view is added to its superview. } return self; @@ -312,16 +332,23 @@ - (void) zoomMapToFit - (void) addAnnotation:(id)object { + NSObject *annotation = nil; + if ([object conformsToProtocol:@protocol(MKAnnotation)]) { // The object is an annotation so add it to the map. - NSObject *annotation = (NSObject*)object; + annotation = (NSObject*)object; [super addAnnotation:annotation]; } id p = [self poiFromAnnotation:object]; [sm3dar addPoint:p]; + + if (annotation) + { + [pointAnnotations setObject:p forKey:annotation]; + } } - (void) addPoints:(NSArray *)points @@ -332,6 +359,9 @@ - (void) addPoints:(NSArray *)points { id p = [self poiFromAnnotation:object]; [tmpPoints addObject:p]; + NSLog(@"Mapping point %@ to annotation %@", p, object); + + [pointAnnotations setObject:p forKey:object]; } [sm3dar addPointsOfInterest:tmpPoints addToMap:NO]; @@ -534,5 +564,21 @@ - (void)mapView:(MKMapView *)mapView didAddOverlayViews:(NSArray *)overlayViews } } +- (void) calloutViewWasTappedForPoint:(SM3DAR_Point *)point +{ + NSLog(@"Digging up point: %@", point); + + + NSObject *annotation = [pointAnnotations objectForKey:point]; + + MKAnnotationView *annView = (MKAnnotationView*)point.view; + + if (annotation) + { + annView.annotation = annotation; + } + + [self mapView:self annotationView:annView calloutAccessoryControlTapped:nil]; +} @end diff --git a/3DAR/music_icon_focused.png b/3DAR/music_icon_focused.png new file mode 100644 index 0000000000000000000000000000000000000000..064403b5625cb95dd5532be068aa16c35bc13a4a GIT binary patch literal 3329 zcmV+c4gT_pP)4Tx0C)j~RL^S@K@|QrZmG~B2wH0nvUrdpNm;9CMbtL^5n^i$+aIn^?(HA4aZWV5ov6ELTdbo0FI&wK{O>*+w4vx20?>!`FrQsdJlnHR>OPy zcd~b_n$otK2Za4V;76L-DzNVtaSB-y0*E}{p()372;bw_^6ZZ}PI-92wGS&j#91PI zKs7DSe@(bk%_Y-7gGe}(^>I=@oY#w#*Bu9GZf3^F5WP>3rn}7Ut74&?PWBFvy`A)a zPP5)V!Xd&78LdA?xQ(9mjMYElVd13a#D+Z_7&Y|xU=_C-srWU*6kiZcC!$nw*)9$7 zn6CX+@=AhmkT}X@VSsa5NKe;HZuq)~1$`#h6R+ZTR#D-3j}vF!)ZOnz+5)dI4jl{{ z44Mr{P!L4~VVJN`K!!XTF*LGrKO?IK8z<8w`3e3jI8lUGNUta*C8 zn(P`s>{pjD=7Kek#B;Fw@hxAK%$F&Q6vg9J^Xf~4by_hu-=A!MJ3Znq&n~srbFGPs zH&&aMXZ>nO`|hf|ljc?VPhR!${AbO?W8x_>CU%PFA&Hm8F7cAsOREdwU~R_;ot1_u z(ruCYB-LPGn!NQdT|ZlRy+(fw^-+`=%+gee_kY4FWHg<*4sZI8+sFJD270UUORdLHO0nA4V) z%{fwsET5CQ>B?eK%uw4yQc~9?*JVo2}ze(;aRcp*ceL#HUJSllrgm5wQKR zQu+C;QrUh^8rFfA`ftFz{YAidi-`aL010qNS#tmY3ljhU3ljkVnw%H_013HCL_t(o z33XRnY*gnFo^#!EcD=h^-(c5k7~cef4DGyw`C5vXaamWNhK`bMeL3sS493J(;i z4}IuERn%6ZiiBE4BB4#vkcOg=Rw#)OB_yO=5)3wWSli(1?s|8L#{{yMApX4b&^vTtQ!VL^Bx$8p^Eaye&jUtbk_);Hz#2Dl%* z9lXMEybiM*dEX!h$5I72M z1}B*zS6ijxbWcrBcig-+()RC5mqQPrP5+*EHiH1o4nspSja_hkBo&r8X8t6#wXOFkqnJ} zJmwQcpxChb?05Dn5TFff9}-|WxRJ}{Lh*RqE|<%CLqo$xOx|CqR64V{eCp2F-AHzR zJ~BHy8@YP@raC-wM;V{EM<0z$D%rcEn3@GMb%Mh%yhSZt9coC|#rW-E(sZ4%AW(3g z{AQ|~oVB)0(~Ll~2+Z5!xbER&zx(5(Z=5|x*=%09d?Q1Y`6k+hgh`NKWf@a?G&iL7HM57I zc_SRI1^s;19jc-joBPws&CDz{HJI3eHv%X&(lv#Irpdi^MI%L3SZgX(U7A^Rh)QLm z**xZlDB075H^2lW3osuDz)oj?EWD!tZ-#@jlcm9Zm>XwvGAL^k3K>vNrHbQGu2iMz zg++h>s5*-|(_p3^>fVqP>9woGx`BRYZZ7MceDORS0=qH%r!1f$%tFy z(v+qteb99~)C&8)N4BBSOs-71PyU1T1u&v6-A#i%DN651(!l3>X-!`bH8(X=OKS_Q zN~gSdEc%IUS@W-+KGS*f#2+9)gbm0dJU9Y%Zf?$KYHH#*Zb0lNRKsZ16p{9PeG3HW z;PW*NgJwqy^u@>f>FYoIF7Jq5uImY$Vv7*kI>)C0&BIJMl5MkmL-e)12kE(={)pGg zII3b2vLHJil^3g&_dICG$0Z0yNl<8=-4=={qy`=+vE@Ss06#RC-hkur`8TlVV`0iA zWep@%p*$~yr{M|0I8|Li`C{q8Rtm=I85Ow_4K--z8Qpxov+|KW|Ju(2@wnwF>y(d{{ zP#q4)mXybVC!bA7nw+(h0^{uEM@@iQKM%3Xv(tT6^V&k58)%LFY7DbOp-_3fmnZQhR9y9%CT_k7wX;*rwLjX1pV0m?l*nS5&JQkY~?F zDuwZmA3yH14|uk1J4i%jY*GXlV775cKkW#S^n4dh|Dn>2wPa#YJormGDYx5NTIl}N z6#ez(*XZoI^E5s&K`JhlLeViB(}NZOojlH>YZlqi;A1d9Wy zaaRZF&_^=zkP8+|rP2(F%uVRuIXyGmJ#=ftL7%DX9KRf;tSdk8l$rEg^=ni6#3 z;w9R%dna`bY@u~u*g}O;g&bs44c7qQ8C)4j3bbIq3$hdZpfWNtLfzfn2S>*;&pve=2cR@lL;SHoxzw-7nCoQ@`T9jvP56WGXI~D;<}wTthjN zq&ytQg>eNJm#iJkXIqAF%dRy3&h1YuVC^~EwkA-#$Qln}T0x)v;~#u)S7&GXk&`dI z8oD!c=*Ep>w0}Qaot2k)06%y_cegz{=)U%sKk2sl z1QlF}z@;>PKNv7|W-_bLNs+72rF;Utvc7cDx@$GTS^gHPwrD54aD^^<)D$h#Dbue9NR( z@8d>Yn#YQZi${^c2H*PEJCQ2tym&k&c0BQ=;+|bQt~VtbUxwzVFyF^-Lwng3jxs$Y z?-S$_7sBC6@hW(iQE9snN(>APu&!)&=7*@BV(UWikI!%6*Ubi$WTs|lB@A#4{&(2%&!cs2+^ak}>TUP03v9Ub+%y1MGI&TqCP^JnP4C^mEf=-OpF00000 LNkvXXu0mjfB`iY^ literal 0 HcmV?d00001 diff --git a/3DAR/music_icon_focused@2x.png b/3DAR/music_icon_focused@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..bbec8f75b36d38476ab89cfae84923e1371de49e GIT binary patch literal 6129 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 Lt&A$qU5))8D8Ch$ literal 0 HcmV?d00001 diff --git a/Classes/MapMarker.h b/Classes/MapMarker.h index edffc53..a7db950 100644 --- a/Classes/MapMarker.h +++ b/Classes/MapMarker.h @@ -7,17 +7,20 @@ #import #import "Mapkit/Mapkit.h" +#import "Event.h" @interface MapMarker : CLLocation { NSString* title; NSString* subtitle; - NSString* imageName; + NSString* imageName; + Event *event; } @property (nonatomic, retain) NSString* title; @property (nonatomic, retain) NSString* subtitle; @property (nonatomic, retain) NSString* imageName; +@property (nonatomic, retain) Event *event; - (id)initWithLocation:(CLLocation*)loc; diff --git a/Classes/MapMarker.m b/Classes/MapMarker.m index c53119c..46fe250 100644 --- a/Classes/MapMarker.m +++ b/Classes/MapMarker.m @@ -10,7 +10,7 @@ @implementation MapMarker -@synthesize title, subtitle, imageName; +@synthesize title, subtitle, imageName, event; @dynamic coordinate; - (id)initWithLocation:(CLLocation*)loc @@ -23,6 +23,7 @@ - (void) dealloc { [title release]; [subtitle release]; [imageName release]; + [event release]; [super dealloc]; } diff --git a/Classes/MapViewController.m b/Classes/MapViewController.m index 696c368..ff2e257 100644 --- a/Classes/MapViewController.m +++ b/Classes/MapViewController.m @@ -9,6 +9,7 @@ #import "MapViewController.h" #import "MapMarker.h" #import "GeoEvents_finalAppDelegate.h" +#import "DetailedViewViewController.h" @implementation MapViewController @@ -99,6 +100,7 @@ -(void)loadEvents { marker.title = event.artist; marker.subtitle = [NSString stringWithFormat:@"At %@ on %@", event.venue, event.startDate]; marker.imageName = @"music_icon.png"; + marker.event = event; // TODO: Test with array [mapView addAnnotations:[NSArray arrayWithObject:marker]]; @@ -141,12 +143,29 @@ -(void)dealloc { #pragma mark - -- (void) mapAnnotationView:(MKAnnotationView*)annotationView calloutAccessoryControlTapped:(UIControl*)control +- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)annView calloutAccessoryControlTapped:(UIControl *)control +{ + NSLog(@"mapView:annotationView:calloutAccessoryControlTapped:"); + + MapMarker *marker = (MapMarker*)(annView.annotation); + + for (Event *event in events) + { + if ([event.ident isEqualToString:marker.event.ident]) + { + GeoEvents_finalAppDelegate *appDelegate = [UIApplication sharedApplication].delegate; + appDelegate.selectedEvent = event; + DetailedViewViewController *dView = [[DetailedViewViewController alloc] initWithStyle:UITableViewStyleGrouped]; + [self.navigationController pushViewController:dView animated:YES]; + [dView release]; + break; + } + } +} + +- (void) sm3darDidShowMap:(SM3DAR_Controller *)sm3dar { - NSLog(@"calloutAccessoryControlTapped"); -// SM3DAR_CustomAnnotationView *av = (SM3DAR_CustomAnnotationView*)annotationView; -// self.selectedPOI = av.poi; } @end diff --git a/GeoEvents.xcodeproj/project.pbxproj b/GeoEvents.xcodeproj/project.pbxproj index 42ae0d6..0c4bf50 100644 --- a/GeoEvents.xcodeproj/project.pbxproj +++ b/GeoEvents.xcodeproj/project.pbxproj @@ -38,6 +38,9 @@ A648D387135E401100BC529E /* pano_bg.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D386135E401100BC529E /* pano_bg.png */; }; A648D584135F9D5800BC529E /* music_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D583135F9D5800BC529E /* music_icon.png */; }; A648D6D6136017AA00BC529E /* music_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D6D5136017AA00BC529E /* music_icon@2x.png */; }; + A648D6F31360211200BC529E /* MarkerCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = A648D6F21360211200BC529E /* MarkerCalloutView.m */; }; + A648D80413604E7E00BC529E /* music_icon_focused.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D80213604E7E00BC529E /* music_icon_focused.png */; }; + A648D80513604E7E00BC529E /* music_icon_focused@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D80313604E7E00BC529E /* music_icon_focused@2x.png */; }; A6645364135E017D00E93CF4 /* lib3DAR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6645363135E017D00E93CF4 /* lib3DAR.a */; }; A6645377135E01D700E93CF4 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A6645375135E01D700E93CF4 /* Icon.png */; }; A6645378135E01D700E93CF4 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = A6645376135E01D700E93CF4 /* Default.png */; }; @@ -114,6 +117,10 @@ A648D386135E401100BC529E /* pano_bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pano_bg.png; sourceTree = ""; }; A648D583135F9D5800BC529E /* music_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = music_icon.png; sourceTree = ""; }; A648D6D5136017AA00BC529E /* music_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "music_icon@2x.png"; sourceTree = ""; }; + A648D6F11360211200BC529E /* MarkerCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkerCalloutView.h; sourceTree = ""; }; + A648D6F21360211200BC529E /* MarkerCalloutView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MarkerCalloutView.m; sourceTree = ""; }; + A648D80213604E7E00BC529E /* music_icon_focused.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = music_icon_focused.png; sourceTree = ""; }; + A648D80313604E7E00BC529E /* music_icon_focused@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "music_icon_focused@2x.png"; sourceTree = ""; }; A6645363135E017D00E93CF4 /* lib3DAR.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = lib3DAR.a; path = "../../../Library/iOS/build/Debug-iphoneos/lib3DAR.a"; sourceTree = SOURCE_ROOT; }; A6645375135E01D700E93CF4 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = ""; }; A6645376135E01D700E93CF4 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; @@ -309,6 +316,8 @@ A69F2537135919D80091A696 /* compass_rose.png */, A648D583135F9D5800BC529E /* music_icon.png */, A648D6D5136017AA00BC529E /* music_icon@2x.png */, + A648D80213604E7E00BC529E /* music_icon_focused.png */, + A648D80313604E7E00BC529E /* music_icon_focused@2x.png */, A648D386135E401100BC529E /* pano_bg.png */, A69F2539135919D90091A696 /* Pushpin.h */, A69F253A135919D90091A696 /* pushpin_1.0.obj */, @@ -325,6 +334,8 @@ A648D327135E33B900BC529E /* SphereBackgroundView.m */, A69F256913591ACD0091A696 /* TexturedGeometryView.h */, A69F256A13591ACD0091A696 /* TexturedGeometryView.m */, + A648D6F11360211200BC529E /* MarkerCalloutView.h */, + A648D6F21360211200BC529E /* MarkerCalloutView.m */, ); path = 3DAR; sourceTree = ""; @@ -405,6 +416,8 @@ A648D387135E401100BC529E /* pano_bg.png in Resources */, A648D584135F9D5800BC529E /* music_icon.png in Resources */, A648D6D6136017AA00BC529E /* music_icon@2x.png in Resources */, + A648D80413604E7E00BC529E /* music_icon_focused.png in Resources */, + A648D80513604E7E00BC529E /* music_icon_focused@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -435,6 +448,7 @@ A69F2551135919D90091A696 /* SM3DARMapView.m in Sources */, A69F256B13591ACD0091A696 /* TexturedGeometryView.m in Sources */, A648D329135E33B900BC529E /* SphereBackgroundView.m in Sources */, + A648D6F31360211200BC529E /* MarkerCalloutView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From 855bd05e39c58ff300b455dca997897078b03ae8 Mon Sep 17 00:00:00 2001 From: "P. Mark Anderson" Date: Fri, 22 Apr 2011 01:17:58 -0700 Subject: [PATCH 6/8] New assets. Marker callout tap handler works. --- 3DAR/3dar_logo copy.png | Bin 0 -> 4822 bytes 3DAR/3dar_logo.jpg | Bin 0 -> 6993 bytes 3DAR/3dar_logo.png | Bin 4822 -> 2592 bytes 3DAR/3dar_logo@2x.png | Bin 0 -> 5776 bytes 3DAR/Icon_3dar.png | Bin 0 -> 6702 bytes 3DAR/SM3DAR.h | 14 +++++-- 3DAR/SM3DARMapView.h | 1 + 3DAR/SM3DARMapView.m | 61 +++++++++++++++------------- Classes/MapViewController.m | 2 - Default.png | Bin 8151 -> 21534 bytes Default@2x.png | Bin 0 -> 31492 bytes GeoEvents.xcodeproj/project.pbxproj | 16 ++++++-- Icon.png | Bin 4822 -> 6702 bytes Icon@2x.png | Bin 0 -> 18752 bytes 14 files changed, 56 insertions(+), 38 deletions(-) create mode 100644 3DAR/3dar_logo copy.png create mode 100644 3DAR/3dar_logo.jpg create mode 100644 3DAR/3dar_logo@2x.png create mode 100644 3DAR/Icon_3dar.png create mode 100644 Default@2x.png create mode 100644 Icon@2x.png diff --git a/3DAR/3dar_logo copy.png b/3DAR/3dar_logo copy.png new file mode 100644 index 0000000000000000000000000000000000000000..bf8ef4020186b0f44db61d57c68303775518fa64 GIT binary patch literal 4822 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 J+~r_S{}((kd^`XE literal 0 HcmV?d00001 diff --git a/3DAR/3dar_logo.png b/3DAR/3dar_logo.png index bf8ef4020186b0f44db61d57c68303775518fa64..a932d095fcb9146cb589f0061f8d38ed01c51af5 100644 GIT binary patch literal 2592 zcmbVOdpK0<8lQ6Mf-NzwrD>4e&fGDV45pcpktvyR&u+%d8U}MQGp?PIl(s@D>7?9k zVs}N6Bngv>$ZZosByvP5ZF|R=sdUaCJ^MV*S=55LL&6d?YmG2pG$;#+0c=6 zF&PNrJI6=>M$AqoCnki0=RzIqA$Cy&g@6E%u^~}{P@$9%MTCCVB`DU)Z3GnZ86pcI zLcav%O?QKkMG^pF14qI*NLwVt76nIPtg%?E6$Fh$ArVM40)>X5umlX6fJ8#RUQmTM z371E3r#OA}rLc(5Ael@|Kp-L`BjJ%4xJVL+K;iLtr3M-eQy^f{XrYW91rtimmJ}#} zlq2DbWqgqkqEuuDh{9z=s3OuYDG0=L`Zr;r^lPCMB|}89#RwD}i4X{sd3{DpW$wU# z!uT#)%8V8R2zNj#3YTyc=fN{uA}eb5_l}f6MKpw6629V4*r5~=CtLssWi$#As`vuu z^0@>g7KcQku+~T{8fl9|q3|dq9*46bk+2vX4ogNZX?&N9#E?l;Yn&~HghHXHND`T1 zOR{yMkdV}E7#lKqiAxhoWo#h_Sn|tP`u)Pi{wXCC3Ks2~Kty)=$oh?JzWO-6IYecG}~HG)^vbN;ce0PBS*>0R5EV>s!@I z5S)vc#AUYBR5#E5tZ~z~{`@VBXi8EettlfWL?`%P$g(i49V-Z2cCBr($$BtBqwSwy zACE9g@cSyUZG}&#b+f1}*6&T&jjO(HhL=;#lYYfSy&8ivvJNidW$RNt=0^{vS?#T= zABwtkqj2(4m70BFJC6mGjLP$0RA@JzdUkWe_`*n&$D>{SKwxS8YgPF;ZtvQ#xbEbM z=j20ynar~B8E`n9wuWb(s-BUORFZo+@<&})KvXR5eZGI>L0fx#s^e+XY>gVUc2*5* z^Od`yTB_Q+D?a^ed8l8d=?(iWK2)AXdwW3NTJN1C^K5w+InyD9D~Vj6^>KEPKki-x zmO9>V@w0s~0c$RI&bhylb&`2-Em@_}RV)0cwP2N*q7wr$S3$EZ&N%6Arhv5`G?ib9Ph8$)i88(n%sT6ML(U%W1mnys zM_ZPioV3eG2j`SL9iRRERu=$ZEFTPU!7kN~9J1=x6;4gQrRJIO@JBr6HCcKKy8MJ{ zm|a$|0e+#j8uC+^UgoK*y&Zf0YCZz%gvlHEe&_IjH~C4Vzh-56#8B}9$Vkq(2;`W6 z^i&a=nXM6Xn)bddooq%p5rcTpkyZ`7P+#=B9eG(4Qz)?b*Z}_6+IlqmoGN$YL(`x( z2y=adiDez@P|(v(d;P|gD>X$al)Ptmjk4Xqba`m%X`P$bN}h(viF2^ClWRruV;}ZC zX*?0EHqg6$_2EPmkUsisXX!FDg$zaoqF;4I|TLULtQ1gle6QQPc0S zEik=YS2SezVZFwE>A~`(-<%CJez_`fL?A$~jP@qg&3f4AWBU`+x|Z#N#>XYTIi7Qo zxw3M+;OQtH!VAwqY(49N&&+eVT2A&Kcj9^)W(>$u4t?3@jBZ)3u{-G8nYcbHFRG2tey|`;W%7)!UI-Vy zopx_@a{;3^>wup9a6`uY*hc-ToK{3BDx`-kO6)x$AY-rws5`>|njheT`WawE_twStRQMM$uA z+!oDVIZv5#;X;+Y0 zQt-xn$A?f^sKYH6wBM@y9qOshc*d(sVba0BX7wN7FHe9 zLcA{W+x>&HRX5zbL_1rD%d6)fNTVf% zYewGL>$;~0-%|H1x|`Y`{aTR32+^-hcQ*ijF<&wBY&xs0W=3Tz_6#g`V3Y6Y;y?WG zvn=N1^}}NgT6Sej_0RYLwMXCy9x=KT6Ipk<{h1<{AZ(4 LcT%owV;%Z8=s!C7 literal 4822 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 literal 0 HcmV?d00001 diff --git a/3DAR/Icon_3dar.png b/3DAR/Icon_3dar.png new file mode 100644 index 0000000000000000000000000000000000000000..59809a72670d28394e1d793bddf54ea10bb33ea7 GIT binary patch literal 6702 zcmbVxbx@RT-!>&FAtj~20yoX>(k!6F(j5{~F3Zxe!~(l?NK1!+gro?FfP!==;nE!v zQVK{*_lwW{+|T#@@yz?peAmo%o%K78U(cK~SG2CS3OOkgDGm+}xtc0e|8|u6^AZ!@ zeqS(zh2IX0C?yk=0n!%b1M@)O$lD;T5o~HMFgt`k0%n78$0B5KaPVy%3{6lbTAC0z z(nSdNM@9(k;&zM1!I624c7ws45GXclgq?${EMT{(4Z!ALBMUGV(*kL^DI)A0RDC@V z2EN*ca9=05lnvnVBQ_Z{TWuaT zwh(=&^1pT6u4DoBD3lun2=wvs5%LicLVDN%!BSFEe>jAN1#cw;Ju$8*7+TQPlj9!- zD8du&;oydHK)SO1VT4&Dy->1%TTB0T!NpBW>p#SUo*1OmFa{PF8w z(w-=N#Q!nlze;-=V%!iweS{~{%L9I!4_l6Zz_+pc-xd84ytM|RBgpLAjYNzgFCqXS^r7T-`+wI9uD3J8)Xlq3){cq3vu{w z`X&Ege*cZN`TvO-@YWdMpW^txishfJ+Y0I3iNdOz{`> zg7Nj(%m^myaHXEef!89+AbVSJ#xHfoNvD5Li)4R2c(+)U&z)&1mhUK5;(#qdWY+L- z&bH*X9xV;;ENC7diL9U5!ZaiBr-}vz5@ix#=?UD;Y397qtM@x@6YDr^90DwSx?W;$-1Y- zDtGN60UE94K&H8$DmT-nYaR==0RZnFg*@Qll^4Go2l@1_N3z)nIQ_~lNEG!zWsLE1 z_3L6m-r?QA%_H>kWT->nyOH9{9Z!DxwS^t;OKIZpa_7~rd&Bg$Cvg0>UsyZf7-}VV zzxliY2;3!=J!{pf|4>dIm>c$F_!%PvR}^MS*bg`hs*W-;?Vg$x_;T!2w;0p??Z;#3 zxtptN&EpTV@pq?gkS598LSz}VjY1?LPamgi+YYCFl?S7QUcYLbdztMJE!phy{iz>r z&=W<180}~JjDE^;a_pm3ocFTj0utp z_WizQB#`B6EH`SR)JEg9c~zhG2st+s+1<@|3bZ24yl24oW~KNMzF0ilqw$gWaz};4 zT7V{A2iWb!B{9QY>oW6PoCAbH_WZhJih0Y^RJWdGaaVIeqbpvfrhw_ShwO=ztt)I= zWG_<2}5x19CoCro&CwalgO3qz`-1V&ixV976NXam+MjPld9<)W9hsM|3X zbrTtMf)ScY#8h3}vps(Wn@?R^c%%{~4k*4poS@%(=H)VdWq+eOTbFOYiMb;cX=*Z! zis#xV@fa!xZahDMztq(>H>?gFEUng*6<83qdHz~aKBtF7Y0-I)zKgX72NatezU7m} z7`p_!$W+Vp;+Kr4mLH_47>NOlQz0dL8+(atM5I@YsRy8 z$!BGJ`-;x;M;~(>5k*aNtmZClZ|S=fp|6?gvS^KpY@4)|_Ev@__8@CvDyfG;jp=~B zE$!Yj0tY+rmr%2@>JHweFk_(NMD1osI#W9SnmI;1`n9uZ?`FoN`qxzTW1n~}=v!-9 z!_Z-Gjs0mUmTD(cO!}M7ngk&08=9|ov6aoP>3oko7k(FYeJ*_z9B$Jk7EbM0X+j!^ z3CP58A^Xi8`YMO1n|&-RBDx~xvvVWc{n~Mbt~2aD1I{dham=WDARgY$N9V#0+jPl_ zBDf0VO#3LgkY#E9LnGT5EO+9Qq-~*a?uF?jsxEHS4EDs$xdcpgml?6e30THy!Bh2# z;6fcmVF!G;Y_VW(gh^&Cu_W1PO*WNtJH1wX*WA-Z*f2Sz*1%#dHuHr_a)GhEBCF{|Z~!!K%=rI@yd=~4j&8ERclN2>qRWaL!;H$JaS&qfN3zT4ug3d8${kW%-WnV5>UX2Mu z(}UuCxJ(a_@0ZMxT7DLo>BrPtYkCq>!}*2**5@ z6%UpTOBG;#+kMyAqYz`w=GN0NcKr!c9ZlF49BDbeU%1`ElPc+7)?d=v0ByV+1tqtpPBA$Atm!Inqg#5{ zgl*o}jJd3wuE;>iCgsj*w{4XtPyA0NnwJgy1cs8l0onaZqPTG|eB(-+<*tx7Clu}T z{L5o~kVW==cya+aGge>bcM)13ff)`}w!$1yo$Jp8a1QPUc%YqM>3G}QjWcEty)JU> zu35Tw#386v*@tXx3(| zI8Xb2457;#WBMGx($q#{?Z}ViDT~J1zx)Th1PKx~i!()uvvBpf#A;og8|xoVeV>aj z+Uj|4iIY34a@t9%+dowQ;d`b4Vk5H4UZYPmP-)`knvt$?2!CN0_x>S=hMZ4)*WTV@ z>BOpDV5>N_|CYVD4<6Rpe>LIQyCmJlTooFJ&r3nY!a>Wx}M);UxG^KGBn@ablrtN$;Wt6qQgB<%Bk; zJy$du0k}dl(x|-UMBJx zb?Nk!kKA0yO5l9@B21p-Z(xGzJEwsm0h61{5JL zc!BYyjoB-66P7c)WUIE5rl>Dn81gTk5e39!MHYVD1!sdHt$6nkYslzz$kiIXfR{K<~FY+x_9n~=kAIYV(1t|qJs#y(N1p~p{uzM4B4 zf1=UQ_)H>kJxrC}Q}6E7R8#fwXC`yM0O^N8=-`X}pyTDERy=>|t^!H?37(D>QB}6} zY?bOQz@js~*iWqq&hFT^C(!;wgCP1;0Wp*DnuO#*idd=j9fuLZ}Qw@@XYkDfi_4HO&WBxIIEfpd?ND zZI`J&cNWRi&o<3b)2R_lg?wo!yt$$x4+3#;em?Y3CcB+=VdBPlwLn7yV%gcMN4_zf z=7DjrA|=zM=I2RwJ2FK!-)kacuY%dGOwHr+_8d9G3%r54Km zsCaq!nz8v(o#n!Jlp*duNZbAEgr0u{l!22>sq9HHf2b-wIh5!LL*zlCJ%CKKiHQXD zN%M2I0OOFmu7=%O8F#3SIu=Watxuz+?3vgvn6@B|C0}te-*ct__&ZR&zey*&nh&eL zd8ugfsV3%k!TqB+p^u;Hlls#4e(w-?Z|8PXf$dNws-s2`A3G@FdN^u$-COx%kG0re z7VqLEB{p#2Zl)1rtDv8k{aU1yUeDlRF}f%J#zsB4Fi2s3lV!ue&N~YS0fGkB75oBR1DWsKgt-%_NRMC+-i(a9i#1n* zgvUg9N=Xd&k2onRm5jgmfoT26zf|WWcSUq2D#^KssJpUNnpNSwT1}Y$#uYilqcb>pfN5OI zcru*uw55TC=UUEH3MuL4xo{>Sk;?yW=XdM9-VfimRlL5FqRbDK42eD^Dx$a3`Ccgq z<^|{K6tbgn@hSQLob2$YISRDlS*5?O9D3r+gZe1>(V6DbC5*exa!wWxQNqKeVUDYu0i` zQn?Cx_I~SF*Hmeo?waV;zg%y%5~Q@O%vSHT;eK?HQ~WxHwF(|;C`pl2e$xZWo|XLg zzKKSw{1NdR5qtdX&7HeNrsKq`FUXyZc0Ftyj7$0r`*1kk`hv@7? z{@!K!1uz?#L(?Qd@p%g*n(D}3WOTDP+Us6|BYFC)l+OtPt@O^@*TPQ~UNK$ob>H7n z|4G;?_xPgzlj%0PT*e{aIfX^awLga5QXx$$+ICI8^xSqyBf!Z$Z`P^x6R8nL!=C>A zF8=u_C~kyWBe^}5S%MKwA#d`;7&%KAD)F9N~%5pghrX1Wx z!EiEf^@8lDEwsC4`%g~I2P*GV1Z^7l^3L!xVYxHbaA$N04~Tt@ ze8E-uvQs7~bERWkT|-^XHrsm8L+MGV6 zp>?(WFoK=jDXp~Bh{Pu5^*Z9who26$!-vujgq$so>2}tJzME{*ziYd;KwU2R#lMfw zod`|PtLF2B#fjWWS!21<9U$?nui_bQW(oOLoA}E=&3C_l(wi}z8tl!kf-rI=RBL7B z`cCZ@EsjYjc=iFwdz|fkShQfX$I^UeHjM*2r zW|n-0i$-qaML9u;EJgbUh?Ex(qQ!=K^}PO5Cc|F^j(GF5y+V_;J2H8(Rh-v{p(S12 z<69l)gTl@RpTAZpH4zvYIP4z4}YWgwr3zoH?(4!TE z`kd=GPCd0%F<0*sxVVj5X%ceM?Ac5$rV2hL&4W@j5-2ElF1kug4$tU=(AA$xu7nq8 zeie7MNhOvx~_# zL4h}6o2U&pPWAnlw=yT%vRv4m_qlBNFr_2?}5O*;Qt+)_5?%lo_&VzvCE zm9?PoI-*BnO7P}L`i!U46mwl>f?M&lL<&JaAxqC4X`|B#j2dM6J&?Fn5sGcDNTiq5 zFV&vtHhLiGf1|FV=V4yIs7(-{#fi7YZMH=yZbo2@7gpsb5+GvJE)ap zj&i)6y5ZisrmBh!;F3>x{1LLD_epF-h>bU`U*v92ZhoGA_DlV^C(PIWD94`fb`w~| z7k$RzVQ4SD{rFIS{`P|-lIQ9_bh$KIRfp$mOe7}CYr6JhOC#<^v}jNr3xsM!Q*}^X zlyOA8p?n6JQc;SRd3fyo*d}YTZt0XPasv{rUb;9>h-qx$s-qalbv`7`UO$rDd__Cc zR-~(rvYjw7kx=hv7MNM;#iTagGrilK#IM<+kj@P1S8yE^$vABz^)QN3r91I97XMMi teegm(xbp>jWHp9KYO+yP_>i2Y>$Hs3~bfD;1uF{tpNURn-6h literal 0 HcmV?d00001 diff --git a/3DAR/SM3DAR.h b/3DAR/SM3DAR.h index 2f789db..de158ff 100644 --- a/3DAR/SM3DAR.h +++ b/3DAR/SM3DAR.h @@ -32,8 +32,10 @@ typedef struct @property (nonatomic, assign) Coord3D worldPoint; @property (nonatomic, retain) UIView *view; @property (nonatomic, retain) NSObject *selectionDelegate; -@property (assign) BOOL canReceiveFocus; -@property (assign) BOOL hasFocus; +@property (nonatomic, assign) BOOL canReceiveFocus; +@property (nonatomic, assign) BOOL hasFocus; +@property (nonatomic, assign) NSUInteger identifier; + - (Coord3D) worldCoordinate; - (void) translateX:(CGFloat)x Y:(CGFloat)y Z:(CGFloat)z; - (Coord3D) unitVectorFromOrigin; @@ -201,6 +203,9 @@ typedef NSObject SM3DAR_Point; @interface SM3DAR_Fixture : NSObject { } @property (nonatomic, assign) CGFloat gearPosition; +@property (nonatomic, assign) BOOL canReceiveFocus; +@property (nonatomic, assign) BOOL hasFocus; +@property (nonatomic, assign) NSUInteger identifier; - (CGFloat)gearSpeed; - (NSInteger)numberOfTeethInGear; - (void) gearHasTurned; @@ -222,8 +227,9 @@ typedef NSObject SM3DAR_Point; @property (nonatomic, retain) UIView *view; @property (nonatomic, assign) Class annotationViewClass; @property (nonatomic, retain) NSString *mapAnnotationImageName; -@property (assign) BOOL hasFocus; -@property (assign) BOOL canReceiveFocus; +@property (nonatomic, assign) BOOL canReceiveFocus; +@property (nonatomic, assign) BOOL hasFocus; +@property (nonatomic, assign) NSUInteger identifier; @property (nonatomic, assign) CGFloat gearPosition; - (id)initWithLocation:(CLLocation*)loc properties:(NSDictionary*)props; diff --git a/3DAR/SM3DARMapView.h b/3DAR/SM3DARMapView.h index 63a56f6..184ea72 100644 --- a/3DAR/SM3DARMapView.h +++ b/3DAR/SM3DARMapView.h @@ -21,6 +21,7 @@ UIView *containerView; MarkerCalloutView *calloutView; NSMutableDictionary *pointAnnotations; + NSUInteger currentPointIdentifier; } @property (nonatomic, retain) UIView *containerView; diff --git a/3DAR/SM3DARMapView.m b/3DAR/SM3DARMapView.m index 11bed2d..2247e8a 100644 --- a/3DAR/SM3DARMapView.m +++ b/3DAR/SM3DARMapView.m @@ -278,10 +278,15 @@ - (void) zoomMapToFit #pragma mark Annotations -- (id) poiFromAnnotation:(id)object +- (NSUInteger) nextPointIndentifier { - id point = nil; - + return ++currentPointIdentifier; +} + +- (SM3DAR_Point*) poiFromAnnotation:(id)object +{ + SM3DAR_Point *point = nil; + if ([object conformsToProtocol:@protocol(SM3DAR_PointProtocol)]) { // The object is a 3DAR point. @@ -327,28 +332,34 @@ - (void) zoomMapToFit } } + point.identifier = [self nextPointIndentifier]; + return point; } +- (void) mapAnnotation:(id)object toPoint:(SM3DAR_Point*)point +{ + [pointAnnotations setObject:object + forKey:[NSString stringWithFormat:@"%u", point.identifier]]; +} + - (void) addAnnotation:(id)object { NSObject *annotation = nil; - + + SM3DAR_Point *point = [self poiFromAnnotation:object]; + if ([object conformsToProtocol:@protocol(MKAnnotation)]) { // The object is an annotation so add it to the map. annotation = (NSObject*)object; [super addAnnotation:annotation]; + + [self mapAnnotation:annotation toPoint:point]; } - id p = [self poiFromAnnotation:object]; - [sm3dar addPoint:p]; - - if (annotation) - { - [pointAnnotations setObject:p forKey:annotation]; - } + [sm3dar addPoint:point]; } - (void) addPoints:(NSArray *)points @@ -357,11 +368,9 @@ - (void) addPoints:(NSArray *)points for (id object in points) { - id p = [self poiFromAnnotation:object]; - [tmpPoints addObject:p]; - NSLog(@"Mapping point %@ to annotation %@", p, object); - - [pointAnnotations setObject:p forKey:object]; + SM3DAR_Point *point = [self poiFromAnnotation:object]; + [self mapAnnotation:object toPoint:point]; + [tmpPoints addObject:point]; } [sm3dar addPointsOfInterest:tmpPoints addToMap:NO]; @@ -564,20 +573,16 @@ - (void)mapView:(MKMapView *)mapView didAddOverlayViews:(NSArray *)overlayViews } } -- (void) calloutViewWasTappedForPoint:(SM3DAR_Point *)point +- (id) annotationForPoint:(SM3DAR_Point *)point { - NSLog(@"Digging up point: %@", point); - - - NSObject *annotation = [pointAnnotations objectForKey:point]; + NSLog(@"Digging up annotation for point: %u", point.identifier); + return [pointAnnotations objectForKey:[NSString stringWithFormat:@"%u", point.identifier]]; +} - MKAnnotationView *annView = (MKAnnotationView*)point.view; - - if (annotation) - { - annView.annotation = annotation; - } - +- (void) calloutViewWasTappedForPoint:(SM3DAR_Point *)point +{ + id annotation = [self annotationForPoint:point]; + MKAnnotationView *annView = [self mapView:self viewForAnnotation:annotation]; [self mapView:self annotationView:annView calloutAccessoryControlTapped:nil]; } diff --git a/Classes/MapViewController.m b/Classes/MapViewController.m index ff2e257..8826ac9 100644 --- a/Classes/MapViewController.m +++ b/Classes/MapViewController.m @@ -56,8 +56,6 @@ - (void)zoomMapToFit { if ([mapView.annotations count] == 0) return; - NSLog(@"zoomMapToFit %i markers", [mapView.annotations count]); - CLLocationCoordinate2D topLeftCoord; topLeftCoord.latitude = -90; topLeftCoord.longitude = 180; diff --git a/Default.png b/Default.png index f04413a40da88dcbd0359ca12f41673823190c69..6c26d1be27bd4181b47d1d0538ddb7b4acc73185 100644 GIT binary patch literal 21534 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 Q@Yq8JPgg&ebxsLQ09mC&Gynhq literal 8151 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 z%0DY|kvs)PZYqpAVAN@Tl| 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 delta 4794 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 Uy5Uq+MgRZ+07*qoM6N<$f+_Vv@&Et; diff --git a/Icon@2x.png b/Icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3c13705af28759ebfbe624a301a8d86ffca961d3 GIT binary patch literal 18752 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 Date: Sun, 1 May 2011 17:15:47 -0700 Subject: [PATCH 7/8] Integrating 3DAR Mapping v0.9.1 --- 3DAR/MarkerCalloutView.h | 31 -- 3DAR/MarkerCalloutView.m | 183 --------- 3DAR/PushpinView.h | 17 - 3DAR/PushpinView.m | 187 --------- 3DAR/SM3DAR.h | 144 +++++-- 3DAR/SM3DARMapView.h | 46 --- 3DAR/SM3DARMapView.m | 589 ---------------------------- 3DAR/SphereBackgroundView.h | 12 - 3DAR/SphereBackgroundView.m | 63 --- 3DAR/TexturedGeometryView.h | 36 -- 3DAR/TexturedGeometryView.m | 87 ---- Classes/MapViewController.h | 2 +- Classes/MapViewController.m | 5 +- GeoEvents.xcodeproj/project.pbxproj | 40 +- 14 files changed, 113 insertions(+), 1329 deletions(-) delete mode 100644 3DAR/MarkerCalloutView.h delete mode 100644 3DAR/MarkerCalloutView.m delete mode 100644 3DAR/PushpinView.h delete mode 100644 3DAR/PushpinView.m delete mode 100644 3DAR/SM3DARMapView.h delete mode 100644 3DAR/SM3DARMapView.m delete mode 100644 3DAR/SphereBackgroundView.h delete mode 100644 3DAR/SphereBackgroundView.m delete mode 100644 3DAR/TexturedGeometryView.h delete mode 100644 3DAR/TexturedGeometryView.m diff --git a/3DAR/MarkerCalloutView.h b/3DAR/MarkerCalloutView.h deleted file mode 100644 index 05a5a78..0000000 --- a/3DAR/MarkerCalloutView.h +++ /dev/null @@ -1,31 +0,0 @@ -// -// MarkerCalloutView.h -// -// Created by P. Mark Anderson on 4/21/11. -// Copyright 2011 Spot Metrix, Inc. All rights reserved. -// - -#import -#import "SM3DAR.h" - -@protocol MarkerCalloutViewDelegate -- (void) calloutViewWasTappedForPoint:(SM3DAR_Point *)point; -@end - -@interface MarkerCalloutView : UIView -{ - UILabel *titleLabel; - UILabel *subtitleLabel; - UILabel *distanceLabel; - UIButton *disclosureButton; - SM3DAR_Point *focusedPoint; - id delegate; -} - -@property (nonatomic, retain) UILabel *titleLabel; -@property (nonatomic, retain) UILabel *subtitleLabel; -@property (nonatomic, retain) UILabel *distanceLabel; -@property (nonatomic, retain) UIButton *disclosureButton; -@property (nonatomic, assign) id delegate; - -@end diff --git a/3DAR/MarkerCalloutView.m b/3DAR/MarkerCalloutView.m deleted file mode 100644 index f4052fa..0000000 --- a/3DAR/MarkerCalloutView.m +++ /dev/null @@ -1,183 +0,0 @@ -// -// MarkerCalloutView.m -// -// Created by P. Mark Anderson on 4/21/11. -// Copyright 2011 Spot Metrix, Inc. All rights reserved. -// - -#import "MarkerCalloutView.h" -#import - - -@interface MarkerCalloutView (Private) -- (void) stylizeLabel:(UILabel *)label fontSize:(CGFloat)fontSize; -@end - -@implementation MarkerCalloutView - -@synthesize delegate; -@synthesize titleLabel; -@synthesize subtitleLabel; -@synthesize distanceLabel; -@synthesize disclosureButton; - -- (void) dealloc -{ - self.titleLabel = nil; - self.subtitleLabel = nil; - self.distanceLabel = nil; - self.disclosureButton = nil; - [focusedPoint release]; - - [super dealloc]; -} - -- (id) initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:CGRectMake(frame.origin.x, frame.origin.y, 300, 66)]; // 44 for single line mode - - if (self) - { - self.backgroundColor = [UIColor clearColor]; - - CALayer *l = self.layer; - [l setMasksToBounds:YES]; - [l setCornerRadius:12.0]; - [l setBorderWidth:1.0]; - [l setBorderColor:[[UIColor darkGrayColor] CGColor]]; - - UIView *bg = [[UIView alloc] initWithFrame:self.bounds]; - bg.backgroundColor = [UIColor darkTextColor]; - bg.alpha = 0.5; - [self addSubview:bg]; - [bg release]; - - - // Add gloss effect. - - CAGradientLayer *gradient = [CAGradientLayer layer]; -// [gradient setCornerRadius:6.0]; - - CGFloat padding = 0.0; -// CGFloat halfHeight = self.bounds.size.height/2.0 - padding; - CGFloat thirdHeight = self.bounds.size.height/3.0 - padding; - -// gradient.frame = CGRectMake(padding, -// padding, -// self.bounds.size.width-(2.0*padding), -// halfHeight); - - gradient.frame = CGRectMake(padding, - thirdHeight+padding, - self.bounds.size.width-(2.0*padding), - thirdHeight*2.0); - - gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor clearColor] CGColor], (id)[[UIColor blackColor] CGColor], nil]; -// gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor clearColor] CGColor], nil]; - - [l insertSublayer:gradient atIndex:0]; - - - - // W 300: 10 _45_ 10 _LABEL_ 10 _25_ 10: 100 + LABEL - // H 66: 10 22 _8_ 16 10 - - self.titleLabel = [[[UILabel alloc] initWithFrame:CGRectMake(65, 10, 190, 22)] autorelease]; - [self stylizeLabel:titleLabel fontSize:22]; - - self.subtitleLabel = [[[UILabel alloc] initWithFrame:CGRectMake(65, 34, 190, 16)] autorelease]; - [self stylizeLabel:subtitleLabel fontSize:16]; - - self.distanceLabel = [[[UILabel alloc] initWithFrame:CGRectMake(10, 10, 45, 46)] autorelease]; - [self stylizeLabel:distanceLabel fontSize:12]; - distanceLabel.lineBreakMode = UILineBreakModeWordWrap; - distanceLabel.textColor = [UIColor lightGrayColor]; - distanceLabel.textAlignment = UITextAlignmentCenter; - - self.disclosureButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; - [disclosureButton addTarget:self action:@selector(disclosureButtonTapped) forControlEvents:UIControlEventTouchUpInside]; - disclosureButton.center = CGPointMake(300-23, 33); - - [self addSubview:titleLabel]; - [self addSubview:subtitleLabel]; - [self addSubview:distanceLabel]; - [self addSubview:disclosureButton]; - } - - return self; -} - -/* -// Only override drawRect: if you perform custom drawing. -// An empty implementation adversely affects performance during animation. -- (void)drawRect:(CGRect)rect { - // Drawing code. -} -*/ - --(void)pointDidGainFocus:(SM3DAR_Point*)point -{ - focusedPoint = [point retain]; - - NSString *titleText = nil; - NSString *subtitleText = nil; - NSString *distanceText = nil; - - SEL sel = @selector(title); - if ([point respondsToSelector:sel]) - titleText = [point performSelector:sel]; - if (!titleText) - titleText = @""; - - sel = @selector(subtitle); - if ([point respondsToSelector:sel]) - subtitleText = [point performSelector:sel]; - if (!subtitleText) - subtitleText = @""; - - sel = @selector(formattedDistanceFromCurrentLocationWithUnits); - if ([point respondsToSelector:sel]) - distanceText = [point performSelector:sel]; - if (!distanceText) - distanceText = @""; - - - // TODO: Switch display modes based on available text. - - titleLabel.text = titleText; - subtitleLabel.text = subtitleText; - distanceLabel.text = distanceText; - - self.hidden = NO; - [self.superview.superview bringSubviewToFront:self.superview]; - [self.superview bringSubviewToFront:self]; -} - --(void)pointDidLoseFocus:(SM3DAR_Point*)point -{ - [focusedPoint release]; - self.hidden = YES; -} - -- (void) stylizeLabel:(UILabel *)label fontSize:(CGFloat)fontSize -{ - label.textColor = [UIColor whiteColor]; - label.backgroundColor = [UIColor clearColor]; - label.shadowColor = [UIColor blackColor]; - label.shadowOffset = CGSizeMake(1, 1); - label.font = [UIFont systemFontOfSize:fontSize]; - label.adjustsFontSizeToFitWidth = YES; - label.lineBreakMode = UILineBreakModeTailTruncation; -} - -- (void) disclosureButtonTapped -{ - [delegate calloutViewWasTappedForPoint:focusedPoint]; -} - -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event -{ - [self disclosureButtonTapped]; -} - -@end diff --git a/3DAR/PushpinView.h b/3DAR/PushpinView.h deleted file mode 100644 index f484cab..0000000 --- a/3DAR/PushpinView.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// PushpinView.m -// -// - -#import -#import "TexturedGeometryView.h" - -@interface PushpinView : TexturedGeometryView -{ - CGFloat red, green, blue, colorAlpha; - UILabel *label; -} - -//@property (nonatomic, retain) UILabel *label; - -@end diff --git a/3DAR/PushpinView.m b/3DAR/PushpinView.m deleted file mode 100644 index e091cbc..0000000 --- a/3DAR/PushpinView.m +++ /dev/null @@ -1,187 +0,0 @@ -// -// PushpinView.m -// -// - -#import -#import "PushpinView.h" - -#import "Pushpin.h" // Statically stored pushpin geometry. - -#define PPV_SHADOW_VERTEX_COUNT 16 - -@implementation PushpinView - -static float ppvShadowVerts[PPV_SHADOW_VERTEX_COUNT][3]; -static unsigned short ppvShadowIndexes[PPV_SHADOW_VERTEX_COUNT]; -static Geometry *pushpinGeometry; -static Texture *pushpinTexture; - -//@synthesize label; - - -- (void) dealloc -{ - [label release]; - - [super dealloc]; -} - -- (void) buildView -{ - self.frame = CGRectZero; - self.color = [UIColor redColor]; - self.hidden = NO; - self.zrot = 0.0; - - self.sizeScalar = 20.0; // for pushpin_1.0 - -// self.sizeScalar = 5.0; // for pushpin_textured - - NSLog(@"[PushpinView] buildView"); - - if (!pushpinGeometry) - { - // Works - NSString *path = [[NSBundle mainBundle] pathForResource:@"pushpin_1.0" ofType:@"obj"]; - - // Experimental - //NSString *path = [[NSBundle mainBundle] pathForResource:@"pushpin_textured" ofType:@"obj"]; - - pushpinGeometry = [[Geometry newOBJFromResource:path] autorelease]; - } - - self.geometry = pushpinGeometry; - self.geometry.cullFace = YES; - - // Shadow - - CGFloat radius = 2.5; - - for (int i=0; i < PPV_SHADOW_VERTEX_COUNT; i++) - { - float theta = 2 * M_PI * i / PPV_SHADOW_VERTEX_COUNT; - - ppvShadowVerts[i][0] = radius * cos(theta); - ppvShadowVerts[i][1] = radius * sin(theta); - ppvShadowVerts[i][2] = 0.0; //GROUNDPLANE_ALTITUDE_METERS - POI_ALTITUDE_METERS; - - ppvShadowIndexes[i] = i; - } - - -// label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 20)]; -// label.font = [UIFont fontWithName:@"Courier" size:14]; -// [self addSubview:label]; - -} - -/* -static float rlLineVertex[2][3] = -{ - // x y z - { 0, 0, (POI_ALTITUDE_METERS-5.0) }, - { 0, 0, (GROUNDPLANE_ALTITUDE_METERS-POI_ALTITUDE_METERS) } -}; - -static unsigned short rlLineIndex[2] = -{ - 0, 1 -}; -*/ - -- (void) displayGeometry -{ - /* - if ([label.text length] == 0) - { - SM3DAR_PointOfInterest *poi = (SM3DAR_PointOfInterest *)self.point; - - if (poi) - { - label.text = [[poi formattedDistanceInMilesFromCurrentLocation] stringByAppendingString:@" mi"]; - [label sizeToFit]; - } - } - */ - - if (!texture) - { -// textureName = @"pushpin_textured2.jpg"; - textureName = @"red.png"; - } - - if (!texture && [textureName length] > 0) - { - if (!pushpinTexture) - { - NSLog(@"Loading texture named %@", textureName); - - NSString *textureExtension = [[textureName componentsSeparatedByString:@"."] objectAtIndex:1]; - NSString *textureBaseName = [textureName stringByDeletingPathExtension]; - NSString *imagePath = [[NSBundle mainBundle] pathForResource:textureBaseName ofType:textureExtension]; - NSData *imageData = [[NSData alloc] initWithContentsOfFile:imagePath]; - UIImage *textureImage = [[UIImage alloc] initWithData:imageData]; - CGImageRef cgi = textureImage.CGImage; - - pushpinTexture = [Texture newTextureFromImage:cgi]; - - [imageData release]; - [textureImage release]; - - } - - self.texture = pushpinTexture; - } - - - - // Scale last. - -// glTranslatef(0, 0, -100); - - glScalef(sizeScalar, sizeScalar, sizeScalar); //*0.85); - - - // Shadow - - glLineWidth(1.0); - glColor4f(.2, .2, .2, 0.6); - glVertexPointer(3, GL_FLOAT, 0, ppvShadowVerts); - glDrawElements(GL_TRIANGLE_FAN, PPV_SHADOW_VERTEX_COUNT, GL_UNSIGNED_SHORT, ppvShadowIndexes); - -// [self.geometry displayShaded:self.color]; - [self.geometry displayFilledWithTexture:texture]; - - - - - ///////// -/* -// glTranslatef(0, 0, -100); - glRotatef(90.0, 1.0, 0, 0); - - glScalef(100, 100, 100); - - glColor4f(1.0, 0, 0, 1.0); - glVertexPointer(3, GL_FLOAT, 0, pushpinVerts); - glTexCoordPointer(2, GL_FLOAT, 0, pushpinTexCoords); -// glNormalPointer(GL_FLOAT, 0, pushpinNormals); - glDrawArrays(GL_TRIANGLES, 0, pushpinNumVerts); - -*/ - -} - -- (void) didReceiveFocus -{ -// self.color = [UIColor colorWithRed:1.0 green:0 blue:0 alpha:0.25]; -} - -- (void) didLoseFocus -{ -// self.color = [UIColor redColor]; -} - - -@end diff --git a/3DAR/SM3DAR.h b/3DAR/SM3DAR.h index de158ff..66c2cf8 100644 --- a/3DAR/SM3DAR.h +++ b/3DAR/SM3DAR.h @@ -1,18 +1,98 @@ /* + * 3DAR Mapping Version 0.9.1 API + * * SM3DAR.h - * 3DAR API header * * Copyright 2010 Spot Metrix, Inc. All rights reserved. * Please see http://spotmetrix.com * - * Version 4.0.8 - * */ #import #import #import + +/************************************************* + + // + // Typical usage: + // + - (void) viewDidLoad + { + self.mapView = [[[SM3DARMapView alloc] initWithFrame:CGRectMake(0, 0, 320, 416)] autorelease]; + + mapView.delegate = self; + mapView.mapType = MKMapTypeStandard; + mapView.showsUserLocation = YES; + mapView.scrollEnabled = YES; + + [self.view addSubview:mapView]; + + [mapView init3DAR]; + } + + - (void) sm3darLoadPoints:(SM3DAR_Controller *)sm3dar + { + + [mapView addAnnotation:myAnnotation]; + } + + ************************************************/ + +@protocol SM3DAR_PointProtocol; +@class SM3DAR_Controller; +typedef NSObject SM3DAR_Point; + + +// +// +// +@protocol SM3DAR_Delegate +@optional +- (void) sm3darViewDidLoad:(SM3DAR_Controller *)sm3dar; +- (void) sm3darLoadPoints:(SM3DAR_Controller *)sm3dar; +- (void) sm3dar:(SM3DAR_Controller *)sm3dar didChangeFocusToPOI:(SM3DAR_Point*)newPOI fromPOI:(SM3DAR_Point*)oldPOI; +- (void) sm3dar:(SM3DAR_Controller *)sm3dar didChangeSelectionToPOI:(SM3DAR_Point*)newPOI fromPOI:(SM3DAR_Point*)oldPOI; +- (void) sm3dar:(SM3DAR_Controller *)sm3dar didChangeOrientationYaw:(CGFloat)yaw pitch:(CGFloat)pitch roll:(CGFloat)roll; +- (void) sm3darWillInitializeOrigin:(SM3DAR_Controller *)sm3dar; +- (void) sm3darLogoWasTapped:(SM3DAR_Controller *)sm3dar; +- (void) sm3darDidShowMap:(SM3DAR_Controller *)sm3dar; +- (void) sm3darDidHideMap:(SM3DAR_Controller *)sm3dar; +- (void) mapAnnotationView:(MKAnnotationView*)annotationView calloutAccessoryControlTapped:(UIControl*)control; +@end + + +@protocol SM3DAR_Delegate; + +@protocol MarkerCalloutViewDelegate +- (void) calloutViewWasTappedForPoint:(SM3DAR_Point *)point; +@end + +@class MarkerCalloutView; + +@interface SM3DARMapView : MKMapView {} + +@property (nonatomic, retain) UIView *containerView; +@property (nonatomic, retain) MarkerCalloutView *calloutView; +@property (nonatomic, retain) UIView *hudView; +@property (nonatomic, retain) SM3DAR_Controller *sm3dar; + +- (void) init3DAR; +- (void) add3darContainer:(SM3DAR_Controller *)sm3dar; +- (void) zoomMapToFitPointsIncludingUserLocation:(BOOL)includeUser; +- (void) zoomMapToFit; +- (void) startCamera; +- (void) stopCamera; +- (void) addBackground; +- (void) moveToLocation:(CLLocation *)newLocation; + +@end + +/////////////////////////// +// Advanced usage follows. +/////////////////////////// + @class SM3DAR_PointOfInterest; @class SM3DAR_Session; @class SM3DAR_FocusView; @@ -22,8 +102,6 @@ typedef struct CGFloat x, y, z; } Coord3D; -@protocol SM3DAR_Delegate; - // // @@ -44,42 +122,9 @@ typedef struct - (void) step; @end -typedef NSObject SM3DAR_Point; - @class SM3DAR_Controller; -// -// -// -@protocol SM3DAR_Delegate -@optional -- (void) sm3darViewDidLoad:(SM3DAR_Controller *)sm3dar; -- (void) sm3darLoadPoints:(SM3DAR_Controller *)sm3dar; -- (void) sm3dar:(SM3DAR_Controller *)sm3dar didChangeFocusToPOI:(SM3DAR_Point*)newPOI fromPOI:(SM3DAR_Point*)oldPOI; -- (void) sm3dar:(SM3DAR_Controller *)sm3dar didChangeSelectionToPOI:(SM3DAR_Point*)newPOI fromPOI:(SM3DAR_Point*)oldPOI; -- (void) sm3dar:(SM3DAR_Controller *)sm3dar didChangeOrientationYaw:(CGFloat)yaw pitch:(CGFloat)pitch roll:(CGFloat)roll; -- (void) sm3darWillInitializeOrigin:(SM3DAR_Controller *)sm3dar; -- (void) sm3darLogoWasTapped:(SM3DAR_Controller *)sm3dar; -- (void) sm3darDidShowMap:(SM3DAR_Controller *)sm3dar; -- (void) sm3darDidHideMap:(SM3DAR_Controller *)sm3dar; -- (void) mapAnnotationView:(MKAnnotationView*)annotationView calloutAccessoryControlTapped:(UIControl*)control; - -/* --(void)sm3darViewDidLoad; --(void)loadPointsOfInterest; --(void)didChangeFocusToPOI:(SM3DAR_Point*)newPOI fromPOI:(SM3DAR_Point*)oldPOI; --(void)didChangeSelectionToPOI:(SM3DAR_Point*)newPOI fromPOI:(SM3DAR_Point*)oldPOI; --(void)didChangeOrientationYaw:(CGFloat)yaw pitch:(CGFloat)pitch roll:(CGFloat)roll; --(void)sm3darGLViewDidLoad; --(void)sm3darWillInitializeOrigin; --(void)logoWasTapped; --(void)mapAnnotationView:(MKAnnotationView*)annotationView calloutAccessoryControlTapped:(UIControl*)control; --(void)didShowMap; --(void)didHideMap; -*/ -@end - // // @@ -113,6 +158,7 @@ typedef NSObject SM3DAR_Point; @property (nonatomic, assign) CGFloat screenOrientationRadians; @property (nonatomic, retain) UIView *glView; @property (nonatomic, retain) UIView *hudView; +@property (nonatomic, retain) UIView *compassView; @property (nonatomic, assign) CGFloat nearClipMeters; @property (nonatomic, assign) CGFloat farClipMeters; @property (assign) NSTimeInterval locationUpdateInterval; @@ -363,6 +409,28 @@ typedef NSObject SM3DAR_Point; @property (nonatomic, retain) SM3DAR_PointOfInterest *poi; @end +// +// +// +@interface TexturedGeometryView : SM3DAR_PointView {} + +@property (nonatomic) double zrot; +@property (nonatomic, retain) UIColor *color; +@property (nonatomic, retain) Geometry *geometry; +@property (nonatomic, retain) Texture *texture; +@property (nonatomic, retain) NSString *textureName; +@property (nonatomic, retain) NSURL *textureURL; +@property (nonatomic, assign) CGFloat sizeScalar; + +- (id) initWithTextureNamed:(NSString*)name; +- (id) initWithTextureURL:(NSURL*)url; +- (void) drawInGLContext; +- (void) updateTexture:(UIImage*)textureImage; +- (void) updateImage:(UIImage*)newImage; +- (UIImage*) resizeImage:(UIImage*)originalImage; +- (void) displayGeometry; +@end + #define SM3DAR_POI_LATITUDE @"latitude" #define SM3DAR_POI_ALTITUDE @"altitude" diff --git a/3DAR/SM3DARMapView.h b/3DAR/SM3DARMapView.h deleted file mode 100644 index 184ea72..0000000 --- a/3DAR/SM3DARMapView.h +++ /dev/null @@ -1,46 +0,0 @@ -// -// SM3DARMapView.h -// -// Created by P. Mark Anderson on 3/8/11. -// Copyright 2011 Spot Metrix, Inc. All rights reserved. -// - -#import -#import -#import "SM3DAR.h" -#import "MarkerCalloutView.h" - -@interface SM3DARMapView : MKMapView -{ - SM3DAR_Controller *sm3dar; - CGFloat mapZoomPadding; - - IBOutlet UIView *hudView; - IBOutlet UIView *compassView; - IBOutlet UIView *overlayView; - UIView *containerView; - MarkerCalloutView *calloutView; - NSMutableDictionary *pointAnnotations; - NSUInteger currentPointIdentifier; -} - -@property (nonatomic, retain) UIView *containerView; -@property (nonatomic, retain) MarkerCalloutView *calloutView; -@property (nonatomic, retain) UIView *hudView; - -- (void) init3DAR; -//- (void) add3darContainer; -- (void) add3darContainer:(SM3DAR_Controller *)sm3dar; -- (void) zoomMapToFit; -- (void) zoomMapToFitPointsIncludingUserLocation:(BOOL)includeUser; -- (void) startCamera; -- (void) stopCamera; -- (void) moveToLocation:(CLLocation *)newLocation; -- (void) addBackground; - -@end - - -@protocol SM3DARMapViewDelegate -@end - diff --git a/3DAR/SM3DARMapView.m b/3DAR/SM3DARMapView.m deleted file mode 100644 index 2247e8a..0000000 --- a/3DAR/SM3DARMapView.m +++ /dev/null @@ -1,589 +0,0 @@ -// -// SM3DARMapView.m -// -// Created by P. Mark Anderson on 3/8/11. -// Copyright 2011 Spot Metrix, Inc. All rights reserved. -// - -#import "SM3DARMapView.h" -#import "PushpinView.h" -#import "SphereBackgroundView.h" - -@implementation SM3DARMapView - -@synthesize containerView; -@synthesize calloutView; -@synthesize hudView; - -- (void) dealloc -{ - - [overlayView release]; - overlayView = nil; - - self.hudView = nil; - self.containerView = nil; - self.calloutView = nil; - - [sm3dar release]; - [pointAnnotations release]; - - [super dealloc]; -} - - -// TODO: Figure out how to know when this view is added as a subview -// so that the 3DAR view(s) can added too. - -// Or add the 3DAR views as subviews. - -- (void) init3DAR -{ - // Self will be the delegate until 3DAR is done initializing. - - sm3dar = [[SM3DAR_Controller alloc] initWithDelegate:self]; - - pointAnnotations = [[NSMutableDictionary alloc] init]; -} - -- (void) add3darContainer:(SM3DAR_Controller *)_sm3dar -{ - if (!_sm3dar.view) - { - NSLog(@"\n\nWARNING: SM3DARMapView could not init 3DAR.\n\n"); - return; - } - else if (!self.superview) - { - NSLog(@"\n\nWARNING: SM3DARMapView could not init 3DAR because there is no superview.\n\n"); - return; - } - - // Setup. - - [_sm3dar setFrame:self.bounds]; - _sm3dar.view.backgroundColor = [UIColor clearColor]; - _sm3dar.map = self; - _sm3dar.map.alpha = 1.0; - -// _sm3dar.markerViewClass = [PushpinView class]; - - if (!hudView) - { - self.hudView = [[[UIView alloc] initWithFrame:self.bounds] autorelease]; - } - - _sm3dar.hudView = hudView; - - if (!hudView.superview) - { - [_sm3dar.view addSubview:hudView]; - } - - - self.calloutView = [[[MarkerCalloutView alloc] - initWithFrame:CGRectMake(10, 178, 300, 60)] autorelease]; - calloutView.delegate = self; - calloutView.hidden = YES; - [hudView addSubview:calloutView]; - - _sm3dar.focusView = calloutView; - - - - // Add 3DAR view to parent view. - - self.containerView = [[[UIView alloc] initWithFrame:self.frame] autorelease]; - NSLog(@"Inserting 3DAR view into container view."); - [containerView addSubview:_sm3dar.view]; - - - NSLog(@"Inserting map view container into superview."); - [self.superview insertSubview:containerView atIndex:0]; - - - // Add this map view to the container. - - NSLog(@"Inserting map view (self) into container view."); - self.frame = self.bounds; - [containerView addSubview:self]; - - [containerView addSubview:_sm3dar.iconLogo]; - - - // TODO: Add the overlay view. - -} - - -- (id) initWithFrame:(CGRect)frame -{ - if (self = [super initWithFrame:frame]); - { - // When no NIB is used, init3DAR must be called manually - // after the map view is added to its superview. - } - - return self; -} - -- (void) awakeFromNib -{ - [super awakeFromNib]; - - [self init3DAR]; -} - -- (void) addUserLocationDot -{ - NSLog(@"Adding user location dot."); - - SM3DAR_Fixture *f = [[SM3DAR_Fixture alloc] init]; - - UIImageView *iv = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"blue_dot.png"]] autorelease]; - f.view = iv; - - Coord3D coord = { - 0, 0, 0 - }; - - f.worldPoint = coord; - - [sm3dar addPoint:f]; - [f release]; -} - -- (void) sm3darLoadPoints:(SM3DAR_Controller *)_sm3dar -{ - if (self.showsUserLocation) - { - [self addUserLocationDot]; - } - - [self addBackground]; - - if (self.delegate && [self.delegate isKindOfClass:[NSObject class]] && - [self.delegate conformsToProtocol:@protocol(SM3DAR_Delegate)]) - { - NSObject *delegateAsObject = (NSObject *)self.delegate; - - if (delegateAsObject == self) - { - // Bad. - - NSLog(@"SM3DARMapView delegate should not be itself."); - } - else - { - sm3dar.delegate = delegateAsObject; - - // Send the call to the new delegate. - - if ([sm3dar.delegate respondsToSelector:@selector(sm3darLoadPoints:)]) - { - [sm3dar.delegate sm3darLoadPoints:sm3dar]; - } - - - // This map view will pass MKMapViewDelegate calls to the sm3dar.delegate. - - self.delegate = self; - - } - } - else - { - NSLog(@"3DAR points will not be automatically loaded because an SM3DAR_Delegate has not been set."); - } -} - -- (void) loadPointsOfInterest -{ - [self sm3darLoadPoints:sm3dar]; -} - -- (void) zoomMapToFitPointsIncludingUserLocation:(BOOL)includeUser -{ - if ([self.annotations count] == 0) - return; - - if ([self.annotations count] == 1) - { - id annotation = [self.annotations objectAtIndex:0]; - - NSLog(@"[SM3DARMapView] zooming map on single point: %@", annotation.title); - - [self setCenterCoordinate:annotation.coordinate animated:YES]; - - return; - } - - NSLog(@"[SM3DARMapView] zoomMapToFit %i markers", [self.annotations count]); - - CLLocationCoordinate2D topLeftCoord; - topLeftCoord.latitude = -90.0; - topLeftCoord.longitude = 180.0; - - CLLocationCoordinate2D bottomRightCoord; - bottomRightCoord.latitude = 90.0; - bottomRightCoord.longitude = -180.0; - - for (idannotation in self.annotations) - { - if (!includeUser && annotation == self.userLocation) - continue; - - if (![annotation conformsToProtocol:@protocol(MKAnnotation)]) - continue; - - topLeftCoord.longitude = fmin(topLeftCoord.longitude, annotation.coordinate.longitude); - topLeftCoord.latitude = fmax(topLeftCoord.latitude, annotation.coordinate.latitude); - - bottomRightCoord.longitude = fmax(bottomRightCoord.longitude, annotation.coordinate.longitude); - bottomRightCoord.latitude = fmin(bottomRightCoord.latitude, annotation.coordinate.latitude); - } - - MKCoordinateRegion region; - region.center.latitude = topLeftCoord.latitude - (topLeftCoord.latitude - bottomRightCoord.latitude) * 0.5; - region.center.longitude = topLeftCoord.longitude + (bottomRightCoord.longitude - topLeftCoord.longitude) * 0.5; - region.span.latitudeDelta = fabs(topLeftCoord.latitude - bottomRightCoord.latitude) * mapZoomPadding; // Add a little extra space on the sides - region.span.longitudeDelta = fabs(bottomRightCoord.longitude - topLeftCoord.longitude) * mapZoomPadding; // Add a little extra space on the sides - - region = [self regionThatFits:region]; - - if (abs(region.center.latitude) > 90.0) - { - if (abs(region.center.longitude) > 90.0) - { - NSLog(@"[SM3DARMapView] Warning: Could not zoom map to fit point. Invalid map region."); - return; - - } - else - { - NSLog(@"[SM3DARMapView] Warning: Invalid map region. \n\nSwitching map region's latitude and longitude."); - CLLocationDegrees oldLatitude = region.center.latitude; - region.center.latitude = region.center.longitude; - region.center.longitude = oldLatitude; - } - } - - [self setRegion:region animated:YES]; -} - -- (void) zoomMapToFit -{ - [self zoomMapToFitPointsIncludingUserLocation:YES]; -} - -#pragma mark Annotations - -- (NSUInteger) nextPointIndentifier -{ - return ++currentPointIdentifier; -} - -- (SM3DAR_Point*) poiFromAnnotation:(id)object -{ - SM3DAR_Point *point = nil; - - if ([object conformsToProtocol:@protocol(SM3DAR_PointProtocol)]) - { - // The object is a 3DAR point. - - point = object; - } - else - { - // Create a 3DAR POI from the object. - - if ([object conformsToProtocol:@protocol(MKAnnotation)]) - { - // The object is an annotation so add it to the map. - - NSObject *annotation = (NSObject*)object; - NSString *title = nil; - NSString *subtitle = nil; - CLLocationCoordinate2D coord; - coord.latitude = annotation.coordinate.latitude; - coord.longitude = annotation.coordinate.longitude; - CLLocation *location = [[CLLocation alloc] initWithCoordinate:coord - altitude:0.0 - horizontalAccuracy:-1 - verticalAccuracy:-1 - timestamp:nil]; - - if ([annotation respondsToSelector:@selector(title)]) - title = [annotation title]; - - if ([annotation respondsToSelector:@selector(subtitle)]) - subtitle = [annotation subtitle]; - - SM3DAR_PointOfInterest *poi = [[[SM3DAR_PointOfInterest alloc] initWithLocation:location - title:title - subtitle:subtitle - url:nil] autorelease]; - - if ([annotation respondsToSelector:@selector(imageName)]) - poi.mapAnnotationImageName = [annotation performSelector:@selector(imageName)]; - - point = poi; - [location release]; - } - } - - point.identifier = [self nextPointIndentifier]; - - return point; -} - -- (void) mapAnnotation:(id)object toPoint:(SM3DAR_Point*)point -{ - [pointAnnotations setObject:object - forKey:[NSString stringWithFormat:@"%u", point.identifier]]; -} - -- (void) addAnnotation:(id)object -{ - NSObject *annotation = nil; - - SM3DAR_Point *point = [self poiFromAnnotation:object]; - - if ([object conformsToProtocol:@protocol(MKAnnotation)]) - { - // The object is an annotation so add it to the map. - - annotation = (NSObject*)object; - [super addAnnotation:annotation]; - - [self mapAnnotation:annotation toPoint:point]; - } - - [sm3dar addPoint:point]; -} - -- (void) addPoints:(NSArray *)points -{ - NSMutableArray *tmpPoints = [NSMutableArray arrayWithCapacity:[points count]]; - - for (id object in points) - { - SM3DAR_Point *point = [self poiFromAnnotation:object]; - [self mapAnnotation:object toPoint:point]; - [tmpPoints addObject:point]; - } - - [sm3dar addPointsOfInterest:tmpPoints addToMap:NO]; -} - -- (void) addAnnotations:(NSArray *)annotations -{ - [super addAnnotations:annotations]; - - [self performSelectorOnMainThread:@selector(addPoints:) withObject:annotations waitUntilDone:NO]; -} - -- (void) startCamera -{ - [sm3dar startCamera]; -} - -- (void) stopCamera -{ - [sm3dar stopCamera]; -} - -- (void) moveToLocation:(CLLocation *)newLocation -{ - if (newLocation) - { - [sm3dar changeCurrentLocation:newLocation]; - - [self zoomMapToFitPointsIncludingUserLocation:NO]; - } -} - -- (void) sm3darViewDidLoad:(SM3DAR_Controller *)_sm3dar -{ - [self add3darContainer:_sm3dar]; -} - -- (SM3DAR_Fixture*) addFixtureWithView:(SM3DAR_PointView*)pointView -{ - SM3DAR_Fixture *point = [[[SM3DAR_Fixture alloc] init] autorelease]; - point.view = pointView; - [sm3dar addPoint:point]; - - return point; -} - -- (void) addBackground -{ - SphereBackgroundView *sphereView = [[SphereBackgroundView alloc] initWithTextureNamed:@"pano_bg.png"]; - sm3dar.backgroundPoint = [self addFixtureWithView:sphereView]; - [sphereView release]; -} - - -#pragma mark MKMapViewDelegate - -- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:viewForAnnotation:)]) - { - return [(id)sm3dar.delegate mapView:mapView viewForAnnotation:annotation]; - } - else - { - return [sm3dar mapView:mapView viewForAnnotation:annotation]; - } - - return nil; -} - -- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:annotationView:calloutAccessoryControlTapped:)]) - { - [(id)sm3dar.delegate mapView:mapView annotationView:view calloutAccessoryControlTapped:control]; - } -} - -- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:regionWillChangeAnimated:)]) - { - [(id)sm3dar.delegate mapView:mapView regionWillChangeAnimated:animated]; - } -} - -- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:regionDidChangeAnimated:)]) - { - [(id)sm3dar.delegate mapView:mapView regionDidChangeAnimated:animated]; - } -} - - -- (void)mapViewWillStartLoadingMap:(MKMapView *)mapView -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapViewWillStartLoadingMap:)]) - { - [(id)sm3dar.delegate mapViewWillStartLoadingMap:mapView]; - } -} - -- (void)mapViewDidFinishLoadingMap:(MKMapView *)mapView -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapViewDidFinishLoadingMap:)]) - { - [(id)sm3dar.delegate mapViewDidFinishLoadingMap:mapView]; - } -} - -- (void)mapViewDidFailLoadingMap:(MKMapView *)mapView withError:(NSError *)error -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapViewDidFailLoadingMap:withError:)]) - { - [(id)sm3dar.delegate mapViewDidFailLoadingMap:mapView withError:error]; - } -} - -- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:didAddAnnotationViews:)]) - { - [(id)sm3dar.delegate mapView:mapView didAddAnnotationViews:views]; - } -} - -- (void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:didSelectAnnotationView:)]) - { - [(id)sm3dar.delegate mapView:mapView didSelectAnnotationView:view]; - } -} - -- (void)mapView:(MKMapView *)mapView didDeselectAnnotationView:(MKAnnotationView *)view -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:didDeselectAnnotationView:)]) - { - [(id)sm3dar.delegate mapView:mapView didDeselectAnnotationView:view]; - } -} - -- (void)mapViewWillStartLocatingUser:(MKMapView *)mapView -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapViewWillStartLocatingUser:)]) - { - [(id)sm3dar.delegate mapViewWillStartLocatingUser:mapView]; - } -} - -- (void)mapViewDidStopLocatingUser:(MKMapView *)mapView -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapViewDidStopLocatingUser:)]) - { - [(id)sm3dar.delegate mapViewDidStopLocatingUser:mapView]; - } -} - -- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)_userLocation -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:didUpdateUserLocation:)]) - { - [(id)sm3dar.delegate mapView:mapView didUpdateUserLocation:_userLocation]; - } -} - -- (void)mapView:(MKMapView *)mapView didFailToLocateUserWithError:(NSError *)error -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:didFailToLocateUserWithError:)]) - { - [(id)sm3dar.delegate mapView:mapView didFailToLocateUserWithError:error]; - } -} - -- (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view didChangeDragState:(MKAnnotationViewDragState)newState - fromOldState:(MKAnnotationViewDragState)oldState -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:annotationView:didChangeDragState:fromOldState:)]) - { - [(id)sm3dar.delegate mapView:mapView annotationView:view didChangeDragState:newState fromOldState:oldState]; - } -} - -- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id )overlay -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:viewForOverlay:)]) - { - return [(id)sm3dar.delegate mapView:mapView viewForOverlay:overlay]; - } - - return nil; -} - -- (void)mapView:(MKMapView *)mapView didAddOverlayViews:(NSArray *)overlayViews -{ - if ([sm3dar.delegate respondsToSelector:@selector(mapView:didAddOverlayViews:)]) - { - [(id)sm3dar.delegate mapView:mapView didAddOverlayViews:overlayViews]; - } -} - -- (id) annotationForPoint:(SM3DAR_Point *)point -{ - NSLog(@"Digging up annotation for point: %u", point.identifier); - return [pointAnnotations objectForKey:[NSString stringWithFormat:@"%u", point.identifier]]; -} - -- (void) calloutViewWasTappedForPoint:(SM3DAR_Point *)point -{ - id annotation = [self annotationForPoint:point]; - MKAnnotationView *annView = [self mapView:self viewForAnnotation:annotation]; - [self mapView:self annotationView:annView calloutAccessoryControlTapped:nil]; -} - -@end diff --git a/3DAR/SphereBackgroundView.h b/3DAR/SphereBackgroundView.h deleted file mode 100644 index 4195992..0000000 --- a/3DAR/SphereBackgroundView.h +++ /dev/null @@ -1,12 +0,0 @@ -// -// SphereBackgroundView.m -// -// - -#import -#import "TexturedGeometryView.h" - -@interface SphereBackgroundView : TexturedGeometryView { -} - -@end diff --git a/3DAR/SphereBackgroundView.m b/3DAR/SphereBackgroundView.m deleted file mode 100644 index 360a43a..0000000 --- a/3DAR/SphereBackgroundView.m +++ /dev/null @@ -1,63 +0,0 @@ -// -// SphereBackgroundView.m -// -// - -#import -#import "SphereBackgroundView.h" - -@implementation SphereBackgroundView - -- (void) buildView { - self.color = [UIColor whiteColor]; - self.hidden = NO; - self.sizeScalar = 10000.0f; - self.zrot = 0.0; - self.frame = CGRectZero; - NSString* path = [[NSBundle mainBundle] pathForResource:@"sphere" ofType:@"obj"]; - self.geometry = [[Geometry newOBJFromResource:path] autorelease]; - self.geometry.cullFace = YES; -} - -- (void) displayGeometry -{ - // If the texture has not been loaded, load it. - - if (texture == nil && [textureName length] > 0) - { - NSLog(@"Loading texture named %@", textureName); - NSString *textureExtension = [[textureName componentsSeparatedByString:@"."] objectAtIndex:1]; - NSString *textureBaseName = [textureName stringByDeletingPathExtension]; - NSString *imagePath = [[NSBundle mainBundle] pathForResource:textureBaseName ofType:textureExtension]; - NSData *imageData = [[NSData alloc] initWithContentsOfFile:imagePath]; - UIImage *textureImage = [[UIImage alloc] initWithData:imageData]; - CGImageRef cgi = textureImage.CGImage; - self.texture = [[Texture newTextureFromImage:cgi] autorelease]; - [imageData release]; - [textureImage release]; - } - - glScalef(-sizeScalar, sizeScalar, sizeScalar); - glRotatef(180, 1, 0, 0); - - //[self updateTexture]; - - if (texture) - { - // glDepthMask(0); - - [Geometry displaySphereWithTexture:self.texture]; - // glDepthMask(1); - } - else - { - [self.geometry displayShaded:self.color]; - //[self.geometry displayWireframe]; - } - - -// glPopMatrix(); -} - - -@end diff --git a/3DAR/TexturedGeometryView.h b/3DAR/TexturedGeometryView.h deleted file mode 100644 index 72827ca..0000000 --- a/3DAR/TexturedGeometryView.h +++ /dev/null @@ -1,36 +0,0 @@ -// -// TexturedGeometryView.h -// -// - -#import -#import "SM3DAR.h" - - -@interface TexturedGeometryView : SM3DAR_PointView { - double zrot; - UIColor *color; - Geometry *geometry; - Texture *texture; - NSString *textureName; - NSURL *textureURL; - CGFloat sizeScalar; -} - -@property (nonatomic) double zrot; -@property (nonatomic, retain) UIColor *color; -@property (nonatomic, retain) Geometry *geometry; -@property (nonatomic, retain) Texture *texture; -@property (nonatomic, retain) NSString *textureName; -@property (nonatomic, retain) NSURL *textureURL; -@property (nonatomic, assign) CGFloat sizeScalar; - -- (id) initWithTextureNamed:(NSString*)name; -- (id) initWithTextureURL:(NSURL*)url; -- (void) drawInGLContext; -- (void) updateTexture:(UIImage*)textureImage; -- (void) updateImage:(UIImage*)newImage; -- (UIImage*) resizeImage:(UIImage*)originalImage; -- (void) displayGeometry; - -@end diff --git a/3DAR/TexturedGeometryView.m b/3DAR/TexturedGeometryView.m deleted file mode 100644 index 116ffbc..0000000 --- a/3DAR/TexturedGeometryView.m +++ /dev/null @@ -1,87 +0,0 @@ -// -// TexturedGeometryView.m -// -// - -#import -#import "TexturedGeometryView.h" - -@implementation TexturedGeometryView - -@synthesize zrot, color, geometry, texture, textureName, textureURL, sizeScalar; - -- (id) initWithPointOfInterest:(SM3DAR_PointOfInterest*)poi { - if (self = [self initWithTextureNamed:nil]) { - self.point = poi; - } - return self; -} - -- (id) initWithTextureNamed:(NSString*)name { - self.textureName = name; - if (self = [super initWithFrame:CGRectZero]) { - } - return self; -} - -- (id) initWithTextureURL:(NSURL*)url { - self.textureURL = url; - if (self = [super initWithFrame:CGRectZero]) { - } - return self; -} - -- (void) dealloc { - NSLog(@"\n\n[TexturedGeometryView] dealloc\n\n"); - [color release]; - [geometry release]; - [texture release]; - [textureName release]; - [textureURL release]; - [super dealloc]; -} - - -#pragma mark - -/* -// Subclasses should implement didReceiveFocus -- (void) didReceiveFocus { -} -*/ - -#pragma mark - -- (void) updateTexture:(UIImage*)textureImage { - if (textureImage) { - NSLog(@"[TexturedGeometryView] updating texture with %@", textureImage); - [texture replaceTextureWithImage:textureImage.CGImage]; - } -} - -- (void) updateImage:(UIImage*)img { - NSLog(@"[TexturedGeometryView] resizing image from original: %f, %f", img.size.width, img.size.height); - img = [self resizeImage:img]; - //NSLog(@"[TexturedGeometryView] DONE: %f, %f", img.size.width, img.size.height); - [self updateTexture:img]; -} - -- (UIImage*) resizeImage:(UIImage*)originalImage { - //CGPoint topCorner = CGPointMake(0, 0); - CGSize targetSize = CGSizeMake(512, 256); - - UIGraphicsBeginImageContext(targetSize); - [originalImage drawInRect:CGRectMake(0, 0, 512, 256)]; - UIImage* result = UIGraphicsGetImageFromCurrentImageContext(); - UIGraphicsEndImageContext(); - - return result; -} - -// Subclasses should implement displayGeometry -- (void) displayGeometry { -} - -- (void) drawInGLContext { - [self displayGeometry]; -} - -@end diff --git a/Classes/MapViewController.h b/Classes/MapViewController.h index 1e7533c..576f2f1 100644 --- a/Classes/MapViewController.h +++ b/Classes/MapViewController.h @@ -8,7 +8,7 @@ #import #import -#import "SM3DARMapView.h" +#import "SM3DAR.h" @interface MapViewController : UIViewController { SM3DARMapView *mapView; diff --git a/Classes/MapViewController.m b/Classes/MapViewController.m index 8826ac9..2ce00bd 100644 --- a/Classes/MapViewController.m +++ b/Classes/MapViewController.m @@ -100,10 +100,7 @@ -(void)loadEvents { marker.imageName = @"music_icon.png"; marker.event = event; - // TODO: Test with array - [mapView addAnnotations:[NSArray arrayWithObject:marker]]; - -// [mapView addAnnotation:marker]; + [mapView addAnnotation:marker]; [marker release]; } diff --git a/GeoEvents.xcodeproj/project.pbxproj b/GeoEvents.xcodeproj/project.pbxproj index 929a882..f7537ce 100644 --- a/GeoEvents.xcodeproj/project.pbxproj +++ b/GeoEvents.xcodeproj/project.pbxproj @@ -33,18 +33,16 @@ 8CC1A9C211236DEA00BA6497 /* FacebookViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CC1A9C111236DEA00BA6497 /* FacebookViewController.m */; }; 8CC1A9C511236E0100BA6497 /* LastfmViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CC1A9C411236E0100BA6497 /* LastfmViewController.m */; }; A648D30F135E32AC00BC529E /* sky.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D30E135E32AC00BC529E /* sky.png */; }; - A648D329135E33B900BC529E /* SphereBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = A648D327135E33B900BC529E /* SphereBackgroundView.m */; }; A648D331135E33F400BC529E /* sphere.obj in Resources */ = {isa = PBXBuildFile; fileRef = A648D330135E33F400BC529E /* sphere.obj */; }; A648D387135E401100BC529E /* pano_bg.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D386135E401100BC529E /* pano_bg.png */; }; A648D584135F9D5800BC529E /* music_icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D583135F9D5800BC529E /* music_icon.png */; }; A648D6D6136017AA00BC529E /* music_icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D6D5136017AA00BC529E /* music_icon@2x.png */; }; - A648D6F31360211200BC529E /* MarkerCalloutView.m in Sources */ = {isa = PBXBuildFile; fileRef = A648D6F21360211200BC529E /* MarkerCalloutView.m */; }; A648D80413604E7E00BC529E /* music_icon_focused.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D80213604E7E00BC529E /* music_icon_focused.png */; }; A648D80513604E7E00BC529E /* music_icon_focused@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D80313604E7E00BC529E /* music_icon_focused@2x.png */; }; A648D8BE136136EB00BC529E /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D8BD136136EB00BC529E /* Icon.png */; }; A648D8C013615A1000BC529E /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D8BF13615A1000BC529E /* Default@2x.png */; }; A648D8C213615B8A00BC529E /* Icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D8C113615B8A00BC529E /* Icon@2x.png */; }; - A6645364135E017D00E93CF4 /* lib3DAR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A6645363135E017D00E93CF4 /* lib3DAR.a */; }; + A65B6021136E235200D5C93C /* lib3DAR.a in Frameworks */ = {isa = PBXBuildFile; fileRef = A65B6020136E235200D5C93C /* lib3DAR.a */; }; A6645378135E01D700E93CF4 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = A6645376135E01D700E93CF4 /* Default.png */; }; A69F2542135919D90091A696 /* 3dar.plist in Resources */ = {isa = PBXBuildFile; fileRef = A69F252E135919D80091A696 /* 3dar.plist */; }; A69F2543135919D90091A696 /* 3dar_logo.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F252F135919D80091A696 /* 3dar_logo.png */; }; @@ -57,11 +55,8 @@ A69F254A135919D90091A696 /* bubble1.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F2536135919D80091A696 /* bubble1.png */; }; A69F254B135919D90091A696 /* compass_rose.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F2537135919D80091A696 /* compass_rose.png */; }; A69F254D135919D90091A696 /* pushpin_1.0.obj in Resources */ = {isa = PBXBuildFile; fileRef = A69F253A135919D90091A696 /* pushpin_1.0.obj */; }; - A69F254E135919D90091A696 /* PushpinView.m in Sources */ = {isa = PBXBuildFile; fileRef = A69F253C135919D90091A696 /* PushpinView.m */; }; A69F254F135919D90091A696 /* red.png in Resources */ = {isa = PBXBuildFile; fileRef = A69F253D135919D90091A696 /* red.png */; }; A69F2550135919D90091A696 /* SM3DAR_keys.txt in Resources */ = {isa = PBXBuildFile; fileRef = A69F253F135919D90091A696 /* SM3DAR_keys.txt */; }; - A69F2551135919D90091A696 /* SM3DARMapView.m in Sources */ = {isa = PBXBuildFile; fileRef = A69F2541135919D90091A696 /* SM3DARMapView.m */; }; - A69F256B13591ACD0091A696 /* TexturedGeometryView.m in Sources */ = {isa = PBXBuildFile; fileRef = A69F256A13591ACD0091A696 /* TexturedGeometryView.m */; }; A69F259813591BF10091A696 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A69F259713591BF10091A696 /* OpenGLES.framework */; }; A69F259E13591C000091A696 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A69F259D13591C000091A696 /* QuartzCore.framework */; }; A69F25A413591C0B0091A696 /* CoreMotion.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A69F25A313591C0B0091A696 /* CoreMotion.framework */; settings = {ATTRIBUTES = (Weak, ); }; }; @@ -113,20 +108,16 @@ 8CC1A9C411236E0100BA6497 /* LastfmViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LastfmViewController.m; sourceTree = ""; }; 8D1107310486CEB800E47090 /* GeoEvents-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GeoEvents-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; A648D30E135E32AC00BC529E /* sky.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sky.png; sourceTree = ""; }; - A648D327135E33B900BC529E /* SphereBackgroundView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SphereBackgroundView.m; sourceTree = ""; }; - A648D328135E33B900BC529E /* SphereBackgroundView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SphereBackgroundView.h; sourceTree = ""; }; A648D330135E33F400BC529E /* sphere.obj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = sphere.obj; sourceTree = ""; }; A648D386135E401100BC529E /* pano_bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pano_bg.png; sourceTree = ""; }; A648D583135F9D5800BC529E /* music_icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = music_icon.png; sourceTree = ""; }; A648D6D5136017AA00BC529E /* music_icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "music_icon@2x.png"; sourceTree = ""; }; - A648D6F11360211200BC529E /* MarkerCalloutView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MarkerCalloutView.h; sourceTree = ""; }; - A648D6F21360211200BC529E /* MarkerCalloutView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MarkerCalloutView.m; sourceTree = ""; }; A648D80213604E7E00BC529E /* music_icon_focused.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = music_icon_focused.png; sourceTree = ""; }; A648D80313604E7E00BC529E /* music_icon_focused@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "music_icon_focused@2x.png"; sourceTree = ""; }; A648D8BD136136EB00BC529E /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = ""; }; A648D8BF13615A1000BC529E /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; A648D8C113615B8A00BC529E /* Icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Icon@2x.png"; sourceTree = ""; }; - A6645363135E017D00E93CF4 /* lib3DAR.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = lib3DAR.a; path = "../../../Library/iOS/build/Debug-iphoneos/lib3DAR.a"; sourceTree = SOURCE_ROOT; }; + A65B6020136E235200D5C93C /* lib3DAR.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = lib3DAR.a; path = "../../../Library/iOS/build/Debug-iphoneos/lib3DAR.a"; sourceTree = SOURCE_ROOT; }; A6645376135E01D700E93CF4 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; A69F252E135919D80091A696 /* 3dar.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = 3dar.plist; sourceTree = ""; }; A69F252F135919D80091A696 /* 3dar_logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = 3dar_logo.png; sourceTree = ""; }; @@ -140,15 +131,9 @@ A69F2537135919D80091A696 /* compass_rose.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = compass_rose.png; sourceTree = ""; }; A69F2539135919D90091A696 /* Pushpin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Pushpin.h; sourceTree = ""; }; A69F253A135919D90091A696 /* pushpin_1.0.obj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = pushpin_1.0.obj; sourceTree = ""; }; - A69F253B135919D90091A696 /* PushpinView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PushpinView.h; sourceTree = ""; }; - A69F253C135919D90091A696 /* PushpinView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PushpinView.m; sourceTree = ""; }; A69F253D135919D90091A696 /* red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = red.png; sourceTree = ""; }; A69F253E135919D90091A696 /* SM3DAR.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SM3DAR.h; sourceTree = ""; }; A69F253F135919D90091A696 /* SM3DAR_keys.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = SM3DAR_keys.txt; sourceTree = ""; }; - A69F2540135919D90091A696 /* SM3DARMapView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SM3DARMapView.h; sourceTree = ""; }; - A69F2541135919D90091A696 /* SM3DARMapView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SM3DARMapView.m; sourceTree = ""; }; - A69F256913591ACD0091A696 /* TexturedGeometryView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TexturedGeometryView.h; sourceTree = ""; }; - A69F256A13591ACD0091A696 /* TexturedGeometryView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TexturedGeometryView.m; sourceTree = ""; }; A69F259713591BF10091A696 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; }; A69F259D13591C000091A696 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; }; A69F25A313591C0B0091A696 /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; }; @@ -168,7 +153,7 @@ A69F259813591BF10091A696 /* OpenGLES.framework in Frameworks */, A69F259E13591C000091A696 /* QuartzCore.framework in Frameworks */, A69F25A413591C0B0091A696 /* CoreMotion.framework in Frameworks */, - A6645364135E017D00E93CF4 /* lib3DAR.a in Frameworks */, + A65B6021136E235200D5C93C /* lib3DAR.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -309,7 +294,8 @@ A69F252D135919D80091A696 /* 3DAR */ = { isa = PBXGroup; children = ( - A6645363135E017D00E93CF4 /* lib3DAR.a */, + A69F253E135919D90091A696 /* SM3DAR.h */, + A65B6020136E235200D5C93C /* lib3DAR.a */, A69F252E135919D80091A696 /* 3dar.plist */, A69F252F135919D80091A696 /* 3dar_logo.png */, A69F2530135919D80091A696 /* 3dar_marker_icon1.png */, @@ -327,21 +313,10 @@ A648D386135E401100BC529E /* pano_bg.png */, A69F2539135919D90091A696 /* Pushpin.h */, A69F253A135919D90091A696 /* pushpin_1.0.obj */, - A69F253B135919D90091A696 /* PushpinView.h */, - A69F253C135919D90091A696 /* PushpinView.m */, A69F253D135919D90091A696 /* red.png */, A648D30E135E32AC00BC529E /* sky.png */, - A69F253E135919D90091A696 /* SM3DAR.h */, A69F253F135919D90091A696 /* SM3DAR_keys.txt */, - A69F2540135919D90091A696 /* SM3DARMapView.h */, - A69F2541135919D90091A696 /* SM3DARMapView.m */, A648D330135E33F400BC529E /* sphere.obj */, - A648D328135E33B900BC529E /* SphereBackgroundView.h */, - A648D327135E33B900BC529E /* SphereBackgroundView.m */, - A69F256913591ACD0091A696 /* TexturedGeometryView.h */, - A69F256A13591ACD0091A696 /* TexturedGeometryView.m */, - A648D6F11360211200BC529E /* MarkerCalloutView.h */, - A648D6F21360211200BC529E /* MarkerCalloutView.m */, ); path = 3DAR; sourceTree = ""; @@ -452,11 +427,6 @@ 8CC1A9C511236E0100BA6497 /* LastfmViewController.m in Sources */, 8C2A61A21135BA180039EC54 /* MapViewController.m in Sources */, 4D8721F31139308000B3CB20 /* MapMarker.m in Sources */, - A69F254E135919D90091A696 /* PushpinView.m in Sources */, - A69F2551135919D90091A696 /* SM3DARMapView.m in Sources */, - A69F256B13591ACD0091A696 /* TexturedGeometryView.m in Sources */, - A648D329135E33B900BC529E /* SphereBackgroundView.m in Sources */, - A648D6F31360211200BC529E /* MarkerCalloutView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; From a5248e150604fb44c2e35aa5b2e15a3b6d4bd14b Mon Sep 17 00:00:00 2001 From: "P. Mark Anderson" Date: Sun, 1 May 2011 17:33:44 -0700 Subject: [PATCH 8/8] Added 3D markers for testing.. --- 3DAR/MapAttackPlace3D.h | 30 ++++++ 3DAR/MapAttackPlace3D.m | 137 ++++++++++++++++++++++++++++ 3DAR/SM3DAR.h | 1 + 3DAR/cube.obj | 41 +++++++++ Classes/MapViewController.m | 23 +++-- GeoEvents.xcodeproj/project.pbxproj | 10 ++ 6 files changed, 236 insertions(+), 6 deletions(-) create mode 100644 3DAR/MapAttackPlace3D.h create mode 100644 3DAR/MapAttackPlace3D.m create mode 100644 3DAR/cube.obj diff --git a/3DAR/MapAttackPlace3D.h b/3DAR/MapAttackPlace3D.h new file mode 100644 index 0000000..e39aca0 --- /dev/null +++ b/3DAR/MapAttackPlace3D.h @@ -0,0 +1,30 @@ +// +// MapattackPlace3D.h +// GeoEvents +// +// Created by P. Mark Anderson on 4/22/11. +// Copyright 2011 Redwater software. All rights reserved. +// + +#import +#import +#import "SM3DAR.h" + +@interface MapAttackPlace3D : SM3DAR_PointOfInterest +{ + NSString *identifier; + NSString *team; + NSInteger points; + BOOL active; +// CLLocationCoordinate2D coordinate; +} + +@property (nonatomic, retain) NSString *placeID; +@property (nonatomic, retain) NSString *team; +@property (nonatomic, assign) NSInteger points; +@property (nonatomic, assign) BOOL active; +@property (nonatomic, assign) CLLocationCoordinate2D coordinate; + +- (id) initWithProperties:(NSDictionary *)properties; + +@end diff --git a/3DAR/MapAttackPlace3D.m b/3DAR/MapAttackPlace3D.m new file mode 100644 index 0000000..3d0feb9 --- /dev/null +++ b/3DAR/MapAttackPlace3D.m @@ -0,0 +1,137 @@ +// +// MapattackPlace3D.m +// GeoEvents +// +// Created by P. Mark Anderson on 4/22/11. +// Copyright 2011 Redwater software. All rights reserved. +// + +#import "MapAttackPlace3D.h" +//#import "OBJView.h" + +@implementation MapAttackPlace3D + +@synthesize placeID; +@synthesize points; +@synthesize active; +@synthesize team; +@synthesize coordinate; + +- (void) dealloc +{ + [placeID release]; + [team release]; + + [super dealloc]; +} + +- (id) initWithProperties:(NSDictionary *)props +{ + CLLocationCoordinate2D c; + c.longitude = [[props objectForKey:@"longitude"] doubleValue]; + c.latitude = [[props objectForKey:@"latitude"] doubleValue]; + + CLLocation *location = [[[CLLocation alloc] initWithLatitude:c.latitude + longitude:c.longitude] autorelease]; + + if (self = [super initWithLocation:location properties:props]) + { + self.placeID = [props objectForKey:@"place_id"]; + self.points = [[props objectForKey:@"points"] integerValue]; + + id value = [props objectForKey:@"team"]; + + if (value && value != [NSNull null]) + self.team = value; + else + self.team = nil; + + self.active = [[props objectForKey:@"active"] boolValue]; + self.coordinate = c; + + NSString *objName = @"flag_ufo.obj"; + UIColor *objColor = nil; + CGFloat sizeScalar = 1.0; + + if ([team length] > 0) + { + // red or blue + + if ([team isEqualToString:@"blue"]) + { + objColor = [UIColor blueColor]; + } + else + { + objColor = [UIColor redColor]; + } + } + else + { + objColor = [UIColor yellowColor]; + } + + switch (self.points) + { + case 10: + objName = @"cube.obj"; + sizeScalar = 30.0; + break; + case 20: + objName = @"flag_ufo.obj"; + sizeScalar = 8.0; + break; + case 30: + objName = @"star.obj"; + sizeScalar = 3.5; + break; + case 50: + objName = @"moebius.obj"; + sizeScalar = 1.1; + break; + default: + break; + } + +// OBJView *objView = [[OBJView alloc] initWithOBJ:objName +// textureNamed:nil]; + TexturedGeometryView *objView = [[TexturedGeometryView alloc] initWithOBJ:objName + textureNamed:nil]; + + objView.sizeScalar = sizeScalar; + objView.color = objColor; + + self.view = objView; + [objView release]; + + + UIImage *img = [UIImage imageNamed:@"3dar_marker_icon1.png"]; + + UIImageView *iv = [[UIImageView alloc] initWithImage:img]; + objView.frame = CGRectMake(0, 0, img.size.width, img.size.height); + [objView addSubview:iv]; + [iv release]; + + } + + return self; +} + +- (NSString *)title +{ + NSString *t = self.team; + + if (!t || [t length] == 0) + { + t = @"Open"; + } + + return t; +} + +- (NSString *)subtitle +{ + return [NSString stringWithFormat:@"%i", self.points]; +} + +@end diff --git a/3DAR/SM3DAR.h b/3DAR/SM3DAR.h index 66c2cf8..0449dff 100644 --- a/3DAR/SM3DAR.h +++ b/3DAR/SM3DAR.h @@ -424,6 +424,7 @@ typedef struct - (id) initWithTextureNamed:(NSString*)name; - (id) initWithTextureURL:(NSURL*)url; +- (id) initWithOBJ:(NSString*)objName textureNamed:(NSString*)textureName; - (void) drawInGLContext; - (void) updateTexture:(UIImage*)textureImage; - (void) updateImage:(UIImage*)newImage; diff --git a/3DAR/cube.obj b/3DAR/cube.obj new file mode 100644 index 0000000..a4f065f --- /dev/null +++ b/3DAR/cube.obj @@ -0,0 +1,41 @@ +# Alias OBJ Model File +# Exported from SketchUp, (c) 2000-2006 Google, Inc. +# File units = meters + +mtllib blue.mtl + +g Mesh1 Model + +usemtl blue +v 1 0 0 +vt -1 0 +vn 0 0 -1 +v 0 0 0 +vt 0 0 +v 0 1 0 +vt 0 1 +v 1 1 0 +vt -1 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 + +vn 0 -1 0 +vt 1 0 +v 1 0 1 +vt 1 1 +v 0 0 1 +f 2/2/2 1/5/2 5/6/2 6/3/2 + +vn 1 0 0 +v 1 1 1 +f 1/2/3 4/5/3 7/6/3 5/3/3 + +vn 0 1 0 +v 0 1 1 +f 4/1/4 3/2/4 8/3/4 7/4/4 + +vn -1 0 0 +f 3/1/5 2/2/5 6/3/5 8/4/5 + +vn 0 0 1 +f 6/2/6 5/5/6 7/6/6 8/3/6 + diff --git a/Classes/MapViewController.m b/Classes/MapViewController.m index 2ce00bd..f1aab16 100644 --- a/Classes/MapViewController.m +++ b/Classes/MapViewController.m @@ -10,6 +10,7 @@ #import "MapMarker.h" #import "GeoEvents_finalAppDelegate.h" #import "DetailedViewViewController.h" +#import "MapAttackPlace3D.h" @implementation MapViewController @@ -92,13 +93,21 @@ -(void)loadEvents { if (latitude == 0 && longitude == 0) continue; - CLLocation *markerLocation = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; +// CLLocation *markerLocation = [[CLLocation alloc] initWithLatitude:latitude longitude:longitude]; - MapMarker *marker = [[MapMarker alloc] initWithLocation:markerLocation]; - marker.title = event.artist; - marker.subtitle = [NSString stringWithFormat:@"At %@ on %@", event.venue, event.startDate]; - marker.imageName = @"music_icon.png"; - marker.event = event; +// MapMarker *marker = [[MapMarker alloc] initWithLocation:markerLocation]; +// marker.title = event.artist; +// marker.subtitle = [NSString stringWithFormat:@"At %@ on %@", event.venue, event.startDate]; +// marker.imageName = @"music_icon.png"; +// marker.event = event; + + MapAttackPlace3D *marker = [[MapAttackPlace3D alloc] initWithProperties: + [NSDictionary dictionaryWithObjectsAndKeys: + [NSString stringWithFormat:@"%f", latitude], @"latitude", + [NSString stringWithFormat:@"%f", longitude], @"longitude", + @"10", @"points", + @"blue", @"team", + nil]]; [mapView addAnnotation:marker]; @@ -111,6 +120,8 @@ -(void)loadEvents { - (void) sm3darLoadPoints:(SM3DAR_Controller *)sm3dar { [self loadEvents]; + + sm3dar.focusView = nil; } -(void)mapViewDidFinishLoadingMap:(SM3DARMapView *)mapView { diff --git a/GeoEvents.xcodeproj/project.pbxproj b/GeoEvents.xcodeproj/project.pbxproj index f7537ce..235f6fc 100644 --- a/GeoEvents.xcodeproj/project.pbxproj +++ b/GeoEvents.xcodeproj/project.pbxproj @@ -32,6 +32,8 @@ 8C4FD41D111B9F3700A332CA /* AboutViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C4FD41C111B9F3700A332CA /* AboutViewController.m */; }; 8CC1A9C211236DEA00BA6497 /* FacebookViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CC1A9C111236DEA00BA6497 /* FacebookViewController.m */; }; 8CC1A9C511236E0100BA6497 /* LastfmViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CC1A9C411236E0100BA6497 /* LastfmViewController.m */; }; + A6018C5F136E2FA6002F1561 /* MapAttackPlace3D.m in Sources */ = {isa = PBXBuildFile; fileRef = A6018C5E136E2FA6002F1561 /* MapAttackPlace3D.m */; }; + A6018C61136E2FB2002F1561 /* cube.obj in Resources */ = {isa = PBXBuildFile; fileRef = A6018C60136E2FB2002F1561 /* cube.obj */; }; A648D30F135E32AC00BC529E /* sky.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D30E135E32AC00BC529E /* sky.png */; }; A648D331135E33F400BC529E /* sphere.obj in Resources */ = {isa = PBXBuildFile; fileRef = A648D330135E33F400BC529E /* sphere.obj */; }; A648D387135E401100BC529E /* pano_bg.png in Resources */ = {isa = PBXBuildFile; fileRef = A648D386135E401100BC529E /* pano_bg.png */; }; @@ -107,6 +109,9 @@ 8CC1A9C311236E0100BA6497 /* LastfmViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LastfmViewController.h; sourceTree = ""; }; 8CC1A9C411236E0100BA6497 /* LastfmViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LastfmViewController.m; sourceTree = ""; }; 8D1107310486CEB800E47090 /* GeoEvents-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GeoEvents-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; }; + A6018C5D136E2FA6002F1561 /* MapAttackPlace3D.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MapAttackPlace3D.h; sourceTree = ""; }; + A6018C5E136E2FA6002F1561 /* MapAttackPlace3D.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MapAttackPlace3D.m; sourceTree = ""; }; + A6018C60136E2FB2002F1561 /* cube.obj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = cube.obj; sourceTree = ""; }; A648D30E135E32AC00BC529E /* sky.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sky.png; sourceTree = ""; }; A648D330135E33F400BC529E /* sphere.obj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = sphere.obj; sourceTree = ""; }; A648D386135E401100BC529E /* pano_bg.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = pano_bg.png; sourceTree = ""; }; @@ -317,6 +322,9 @@ A648D30E135E32AC00BC529E /* sky.png */, A69F253F135919D90091A696 /* SM3DAR_keys.txt */, A648D330135E33F400BC529E /* sphere.obj */, + A6018C60136E2FB2002F1561 /* cube.obj */, + A6018C5D136E2FA6002F1561 /* MapAttackPlace3D.h */, + A6018C5E136E2FA6002F1561 /* MapAttackPlace3D.m */, ); path = 3DAR; sourceTree = ""; @@ -401,6 +409,7 @@ A648D8BE136136EB00BC529E /* Icon.png in Resources */, A648D8C013615A1000BC529E /* Default@2x.png in Resources */, A648D8C213615B8A00BC529E /* Icon@2x.png in Resources */, + A6018C61136E2FB2002F1561 /* cube.obj in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -427,6 +436,7 @@ 8CC1A9C511236E0100BA6497 /* LastfmViewController.m in Sources */, 8C2A61A21135BA180039EC54 /* MapViewController.m in Sources */, 4D8721F31139308000B3CB20 /* MapMarker.m in Sources */, + A6018C5F136E2FA6002F1561 /* MapAttackPlace3D.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };