From: Zygo Blaxell Date: Wed, 4 Jul 2012 02:01:42 +0000 (-0400) Subject: From http://www.jwz.org/xscreensaver/xscreensaver-5.18.tar.gz X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=commitdiff_plain;h=6f5482d73adb0165c0130bb47d852644ab0c4869 From jwz.org/xscreensaver/xscreensaver-5.18.tar.gz -rw-r--r-- 1 zblaxell zblaxell 7363800 Jul 3 17:45 xscreensaver-5.18.tar.gz a9f66d3f5094d2c1ef46c1209730e7cb653f33a7 xscreensaver-5.18.tar.gz --- diff --git a/OSX/PrefsReader.m b/OSX/PrefsReader.m index dd9170fe..95dc8ebe 100644 --- a/OSX/PrefsReader.m +++ b/OSX/PrefsReader.m @@ -369,6 +369,7 @@ NSRange r = [name rangeOfString:@"." options:NSBackwardsSearch]; if (r.length) name = [name substringFromIndex:r.location+1]; + name = [name stringByReplacingOccurrencesOfString:@" " withString:@""]; saver_name = [name retain]; [self registerXrmKeys:opts defaults:defs]; diff --git a/OSX/SaverListController.m b/OSX/SaverListController.m index 75e8751b..484cb168 100644 --- a/OSX/SaverListController.m +++ b/OSX/SaverListController.m @@ -16,6 +16,7 @@ #import "SaverListController.h" #import "SaverRunner.h" +#import "yarandom.h" #import "version.h" #undef countof @@ -246,8 +247,7 @@ SaverRunner *s = (SaverRunner *) [[UIApplication sharedApplication] delegate]; if (! s) return; - if (! [s isKindOfClass:[SaverRunner class]]) - abort(); + NSAssert ([s isKindOfClass:[SaverRunner class]], @"not a SaverRunner"); [s loadSaver: cell.textLabel.text]; } @@ -260,8 +260,7 @@ SaverRunner *s = (SaverRunner *) [[UIApplication sharedApplication] delegate]; if (! s) return; - if (! [s isKindOfClass:[SaverRunner class]]) - abort(); + NSAssert ([s isKindOfClass:[SaverRunner class]], @"not a SaverRunner"); [s openPreferences: cell.textLabel.text]; } @@ -296,6 +295,43 @@ } +/* We need this to respond to "shake" gestures + */ +- (BOOL)canBecomeFirstResponder +{ + return YES; +} + +- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event +{ +} + +- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event +{ +} + + +/* Shake means load a random screen saver. + */ +- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event +{ + NSMutableArray *a = [NSMutableArray arrayWithCapacity: 200]; + for (NSArray *sec in letter_sections) + for (NSString *s in sec) + [a addObject: s]; + int n = [a count]; + if (! n) return; + NSString *which = [a objectAtIndex: (random() % n)]; + + SaverRunner *s = + (SaverRunner *) [[UIApplication sharedApplication] delegate]; + if (! s) return; + NSAssert ([s isKindOfClass:[SaverRunner class]], @"not a SaverRunner"); + [self scrollTo: which]; + [s loadSaver: which]; +} + + - (void)dealloc { for (int i = 0; i < countof(list_by_letter); i++) diff --git a/OSX/SaverRunner.h b/OSX/SaverRunner.h index 2c5d0461..0a35ca19 100644 --- a/OSX/SaverRunner.h +++ b/OSX/SaverRunner.h @@ -58,12 +58,12 @@ # endif // USE_IPHONE } -- (void) aboutPanel: (id)sender; -- (void)loadSaver:(NSString *)name launch:(BOOL)launch; +- (void) loadSaver: (NSString *)name launch:(BOOL)launch; - (void) loadSaver: (NSString *)name; -- (void)selectedSaverDidChange:(NSDictionary *)change; +- (void) selectedSaverDidChange:(NSDictionary *)change; #ifndef USE_IPHONE +- (void) aboutPanel: (id)sender; - (void) openPreferences: (id)sender; #else // USE_IPHONE - (void) openPreferences: (NSString *)which; diff --git a/OSX/SaverRunner.m b/OSX/SaverRunner.m index 60233a08..3fd451d9 100644 --- a/OSX/SaverRunner.m +++ b/OSX/SaverRunner.m @@ -29,10 +29,11 @@ of bundles that have executable code in them. Bleh. */ +#import #import "SaverRunner.h" #import "SaverListController.h" #import "XScreenSaverGLView.h" -#import +#import "yarandom.h" #ifdef USE_IPHONE @@ -417,11 +418,10 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) [prefs synchronize]; if (saverName && [saverName isEqualToString: name]) { - if (launch && ![saverView isAnimating]) { - [window addSubview: saverView]; - [saverView startAnimation]; - } - return; + if ([saverView isAnimating]) + return; + else + goto LAUNCH; } saverName = name; @@ -452,8 +452,11 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil]; + LAUNCH: if (launch) { + [self saveScreenshot]; [window addSubview: saverView]; + [saverView becomeFirstResponder]; [saverView startAnimation]; } # endif // USE_IPHONE @@ -466,9 +469,10 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) } +# ifndef USE_IPHONE + - (void)aboutPanel:(id)sender { -# ifndef USE_IPHONE NSDictionary *bd = [saverBundle infoDictionary]; NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:20]; @@ -484,28 +488,9 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) [[NSApplication sharedApplication] orderFrontStandardAboutPanelWithOptions:d]; - -# else // USE_IPHONE - - NSDictionary *bd = [[NSBundle mainBundle] infoDictionary]; - NSString *body = [bd objectForKey:@"CFBundleGetInfoString"]; - - body = [body stringByReplacingOccurrencesOfString:@", " withString:@",\n"]; - body = [body stringByAppendingString: - @"\n\n" - "Double-tap to run.\n\n" - "Double-tap again to\n" - "return to this list."]; - - [[[UIAlertView alloc] initWithTitle: @"" - message: body - delegate: nil - cancelButtonTitle: @"OK" - otherButtonTitles: nil] - show]; +} # endif // USE_IPHONE -} @@ -916,6 +901,7 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) initWithNames:saverNames descriptions:[self makeDescTable]]; [rootViewController pushViewController:menu animated:YES]; + [menu becomeFirstResponder]; [window makeKeyAndVisible]; [window setAutoresizesSubviews:YES]; @@ -923,8 +909,7 @@ relabel_menus (NSObject *v, NSString *old_str, NSString *new_str) (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)]; - // Has to be after the list window is up, or we get black. - [self saveScreenshot]; + application.applicationSupportsShakeToEdit = YES; # endif // USE_IPHONE diff --git a/OSX/SaverRunner.plist b/OSX/SaverRunner.plist index 5ac695ff..b116fb8f 100644 --- a/OSX/SaverRunner.plist +++ b/OSX/SaverRunner.plist @@ -22,11 +22,11 @@ http://www.jwz.org/xscreensaver/ CFBundlePackageType APPL CFBundleShortVersionString - 5.17 + 5.18 CFBundleSignature ???? CFBundleVersion - 5.17 + 5.18 LSMinimumSystemVersion 10.4 NSHumanReadableCopyright diff --git a/OSX/XScreenSaver.plist b/OSX/XScreenSaver.plist index 6beac277..fa9f4870 100644 --- a/OSX/XScreenSaver.plist +++ b/OSX/XScreenSaver.plist @@ -15,11 +15,11 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 5.17 + 5.18 CFBundleSignature ???? CFBundleVersion - 5.17 + 5.18 LSMinimumSystemVersion 10.4 NSMainNibFile diff --git a/OSX/XScreenSaverConfigSheet.m b/OSX/XScreenSaverConfigSheet.m index e179dd0b..1df862b2 100644 --- a/OSX/XScreenSaverConfigSheet.m +++ b/OSX/XScreenSaverConfigSheet.m @@ -48,6 +48,7 @@ #endif // USE_IPHONE #undef LABEL_ABOVE_SLIDER +#define USE_HTML_LABELS #pragma mark XML Parser @@ -191,6 +192,222 @@ typedef enum { SimpleXMLCommentKind, # endif // !USE_PICKER_VIEW +# pragma mark Implementing labels with clickable links + +#if defined(USE_IPHONE) && defined(USE_HTML_LABELS) + +@interface HTMLLabel : UIView +{ + NSString *html; + UIFont *font; + UIWebView *webView; +} + +@property(nonatomic, retain) NSString *html; +@property(nonatomic, retain) UIWebView *webView; + +- (id) initWithHTML:(NSString *)h font:(UIFont *)f; +- (id) initWithText:(NSString *)t font:(UIFont *)f; +- (void) setHTML:(NSString *)h; +- (void) setText:(NSString *)t; +- (void) sizeToFit; + +@end + +@implementation HTMLLabel + +@synthesize html; +@synthesize webView; + +- (id) initWithHTML:(NSString *)h font:(UIFont *)f +{ + self = [super init]; + if (! self) return 0; + font = [f retain]; + webView = [[UIWebView alloc] init]; + webView.delegate = self; + webView.dataDetectorTypes = UIDataDetectorTypeNone; + self. autoresizingMask = (UIViewAutoresizingFlexibleWidth | + UIViewAutoresizingFlexibleHeight); + webView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | + UIViewAutoresizingFlexibleHeight); + [self addSubview: webView]; + [self setHTML: h]; + return self; +} + +- (id) initWithText:(NSString *)t font:(UIFont *)f +{ + self = [self initWithHTML:@"" font:f]; + if (! self) return 0; + [self setText: t]; + return self; +} + + +- (void) setHTML: (NSString *)h +{ + if (! h) return; + [h retain]; + if (html) [html release]; + html = h; + NSString *h2 = + [NSString stringWithFormat: + @"" + "" + "" +// "" + "" + "" + "" + "%@" + "" + "", + [font fontName], + [font pointSize], + [font lineHeight], + h]; + [webView loadHTMLString:h2 baseURL:[NSURL URLWithString:@""]]; +} + + +static char *anchorize (const char *url); + +- (void) setText: (NSString *)t +{ + t = [t stringByReplacingOccurrencesOfString:@"&" withString:@"&"]; + t = [t stringByReplacingOccurrencesOfString:@"<" withString:@"<"]; + t = [t stringByReplacingOccurrencesOfString:@">" withString:@">"]; + t = [t stringByReplacingOccurrencesOfString:@"\n\n" withString:@"

"]; + t = [t stringByReplacingOccurrencesOfString:@"

" + withString:@"

        "]; + t = [t stringByReplacingOccurrencesOfString:@"\n " + withString:@"
        "]; + + NSString *h = @""; + for (NSString *s in + [t componentsSeparatedByCharactersInSet: + [NSCharacterSet whitespaceAndNewlineCharacterSet]]) { + if ([s hasPrefix:@"http://"] || + [s hasPrefix:@"https://"]) { + char *anchor = anchorize ([s cStringUsingEncoding:NSUTF8StringEncoding]); + NSString *a2 = [NSString stringWithCString: anchor + encoding: NSUTF8StringEncoding]; + s = [NSString stringWithFormat: @"%@
", s, a2]; + free (anchor); + } + h = [NSString stringWithFormat: @"%@ %@", h, s]; + } + [self setHTML: h]; +} + + +-(BOOL) webView:(UIWebView *)wv + shouldStartLoadWithRequest:(NSURLRequest *)req + navigationType:(UIWebViewNavigationType)type +{ + // Force clicked links to open in Safari, not in this window. + if (type == UIWebViewNavigationTypeLinkClicked) { + [[UIApplication sharedApplication] openURL:[req URL]]; + return NO; + } + return YES; +} + + +- (void) setFrame: (CGRect)r +{ + [super setFrame: r]; + r.origin.x = 0; + r.origin.y = 0; + [webView setFrame: r]; + [self setHTML: html]; + [webView reload]; +} + + +- (NSString *) stripTags:(NSString *)str +{ + NSString *result = @""; + + str = [str stringByReplacingOccurrencesOfString:@"

" + withString:@"

" + options:NSCaseInsensitiveSearch + range:NSMakeRange(0, [str length])]; + str = [str stringByReplacingOccurrencesOfString:@"
" + withString:@"\n" + options:NSCaseInsensitiveSearch + range:NSMakeRange(0, [str length])]; + + for (NSString *s in [str componentsSeparatedByString: @"<"]) { + NSRange r = [s rangeOfString:@">"]; + if (r.length > 0) + s = [s substringFromIndex: r.location + r.length]; + result = [result stringByAppendingString: s]; + } + return result; +} + + +- (void) sizeToFit +{ + CGRect r = [self frame]; + + /* It would be sensible to just ask the UIWebView how tall the page is, + instead of hoping that NSString and UIWebView measure fonts and do + wrapping in exactly the same way, but I can't make that work. + Maybe because it loads async? + */ +# if 0 + r.size.height = [[webView + stringByEvaluatingJavaScriptFromString: + @"document.body.offsetHeight"] + doubleValue]; +# else + NSString *text = [self stripTags: html]; + CGSize s = r.size; + s.height = 999999; + s = [text sizeWithFont: font + constrainedToSize: s + lineBreakMode: UILineBreakModeWordWrap]; + + // GAAAH. Add one more line, or the UIWebView is still scrollable! + // The text is sized right, but it lets you scroll it up anyway. + s.height += [font pointSize]; + + r.size.height = s.height; +# endif + + [self setFrame: r]; +} + + +- (void) dealloc +{ + [html release]; + [font release]; + [webView release]; + [super dealloc]; +} + +@end + +#endif // USE_IPHONE && USE_HTML_LABELS + @interface XScreenSaverConfigSheet (Private) @@ -682,6 +899,8 @@ anchorize (const char *url) } +#if !defined(USE_IPHONE) || !defined(USE_HTML_LABELS) + /* Converts any http: URLs in the given text field to clickable links. */ static void @@ -766,6 +985,9 @@ hreffify (NSText *nstext) # endif } +#endif /* !USE_IPHONE || !USE_HTML_LABELS */ + + #pragma mark Creating controls from XML @@ -813,6 +1035,26 @@ hreffify (NSText *nstext) if ([val length] == 0) [dict removeObjectForKey:key]; } + +# ifdef USE_IPHONE + // Kludge for starwars.xml: + // If there is a "_low-label" and no "_label", but "_low-label" contains + // spaces, divide them. + NSString *lab = [dict objectForKey:@"_label"]; + NSString *low = [dict objectForKey:@"_low-label"]; + if (low && !lab) { + NSArray *split = + [[[low stringByTrimmingCharactersInSet: + [NSCharacterSet whitespaceAndNewlineCharacterSet]] + componentsSeparatedByString: @" "] + filteredArrayUsingPredicate: + [NSPredicate predicateWithFormat:@"length > 0"]]; + if (split && [split count] == 2) { + [dict setValue:[split objectAtIndex:0] forKey:@"_label"]; + [dict setValue:[split objectAtIndex:1] forKey:@"_low-label"]; + } + } +# endif // USE_IPHONE } @@ -1479,25 +1721,25 @@ set_menu_item_object (NSMenuItem *item, NSObject *obj) hreffify (lab); boldify (lab); [lab sizeToFit]; -# else // USE_IPHONE - /* There's no way to put rich text or links inside a UILabel. - - I guess Apple expects us to use a UIWebView for this -- but there's - no way to measure how tall the HTML-rendered text is (the answer is - not: "document.height" via JavaScript) so we can't put the - properly-sized cell in the table. - - This is some serious bullshit. +# else // USE_IPHONE - Another option would be to subclass UILabel and replace its drawRect - with new code that uses CTLineDraw. But that's a huge hassle. - */ +# ifndef USE_HTML_LABELS UILabel *lab = [self makeLabel:text]; [lab setFont:[NSFont systemFontOfSize: [NSFont systemFontSize]]]; hreffify (lab); + +# else // USE_HTML_LABELS + HTMLLabel *lab = [[HTMLLabel alloc] + initWithText:text + font:[NSFont systemFontOfSize: [NSFont systemFontSize]]]; + [lab setFrame:rect]; + [lab sizeToFit]; +# endif // USE_HTML_LABELS + [self placeSeparator]; + # endif // USE_IPHONE [self placeChild:lab on:parent]; @@ -2024,7 +2266,6 @@ find_text_field_of_button (NSButton *button) - (void) makeImageLoaderControlBox:(NSXMLNode *)node on:(NSView *)parent { -# ifndef USE_IPHONE /* [x] Grab desktop images [ ] Choose random image: @@ -2039,11 +2280,19 @@ find_text_field_of_button (NSButton *button) NSXMLElement *node2; +# ifndef USE_IPHONE +# define SCREENS "Grab desktop images" +# define PHOTOS "Choose random images" +# else +# define SCREENS "Grab screenshots" +# define PHOTOS "Use photo library" +# endif + node2 = [[NSXMLElement alloc] initWithName:@"boolean"]; [node2 setAttributesAsDictionary: [NSDictionary dictionaryWithObjectsAndKeys: @"grabDesktopImages", @"id", - @"Grab desktop images", @"_label", + @ SCREENS, @"_label", @"-no-grab-desktop", @"arg-unset", nil]]; [self makeCheckbox:node2 on:parent]; @@ -2052,7 +2301,7 @@ find_text_field_of_button (NSButton *button) [node2 setAttributesAsDictionary: [NSDictionary dictionaryWithObjectsAndKeys: @"chooseRandomImages", @"id", - @"Choose random images", @"_label", + @ PHOTOS, @"_label", @"-choose-random-images", @"arg-set", nil]]; [self makeCheckbox:node2 on:parent]; @@ -2067,6 +2316,10 @@ find_text_field_of_button (NSButton *button) [self makeFileSelector:node2 on:parent dirsOnly:YES withLabel:YES editable:YES]; +# undef SCREENS +# undef PHOTOS + +# ifndef USE_IPHONE // Add a second, explanatory label below the file/URL selector. LABEL *lab2 = 0; @@ -2079,7 +2332,7 @@ find_text_field_of_button (NSButton *button) r2.origin.y += 14; [lab2 setFrameOrigin:r2.origin]; [lab2 release]; -# endif // !USE_IPHONE +# endif // USE_IPHONE } @@ -2612,6 +2865,8 @@ wrap_with_buttons (NSWindow *window, NSView *panel) } saver_name = [self parseXScreenSaverTag: node]; + saver_name = [saver_name stringByReplacingOccurrencesOfString:@" " + withString:@""]; [saver_name retain]; # ifndef USE_IPHONE @@ -2831,7 +3086,20 @@ wrap_with_buttons (NSWindow *window, NSView *panel) [t sizeToFit]; r = t.frame; h = r.size.height + LINE_SPACING * 3; +# ifdef USE_HTML_LABELS + + } else if ([ctl isKindOfClass:[HTMLLabel class]]) { + + HTMLLabel *t = (HTMLLabel *) ctl; + CGRect r = t.frame; + r.size.width = [tv frame].size.width; + r.size.width -= LEFT_MARGIN * 2; + [t setFrame:r]; + [t sizeToFit]; + r = t.frame; + h = r.size.height + LINE_SPACING * 3; +# endif // USE_HTML_LABELS } else { CGFloat h2 = [ctl frame].size.height; h2 += LINE_SPACING * 2; diff --git a/OSX/XScreenSaverGLView.m b/OSX/XScreenSaverGLView.m index da155211..58144ee1 100644 --- a/OSX/XScreenSaverGLView.m +++ b/OSX/XScreenSaverGLView.m @@ -47,6 +47,8 @@ extern void check_gl_error (const char *type); # ifndef USE_IPHONE [NSOpenGLContext clearCurrentContext]; # endif // !USE_IPHONE + + clear_gl_error(); // This hack is defunct, don't let this linger. } @@ -240,14 +242,19 @@ extern void check_gl_error (const char *type); */ -// redefine these now since they don't work when not inside an ObjC method. +// redefine NSAssert, etc. here since they don't work when not inside +// an ObjC method. #undef NSAssert #undef NSAssert1 #undef NSAssert2 -#define NSAssert(CC,S) do { if (!(CC)) { NSLog(S); abort();}} while(0) -#define NSAssert1(CC,S,A) do { if (!(CC)) { NSLog(S,A); abort();}} while(0) -#define NSAssert2(CC,S,A,B) do { if (!(CC)) { NSLog(S,A,B);abort();}} while(0) +#define NSASS(S) \ + jwxyz_abort ("%s", [(S) cStringUsingEncoding:NSUTF8StringEncoding]) +#define NSAssert(CC,S) do { if (!(CC)) { NSASS((S)); }} while(0) +#define NSAssert1(CC,S,A) do { if (!(CC)) { \ + NSASS(([NSString stringWithFormat: S, A])); }} while(0) +#define NSAssert2(CC,S,A,B) do { if (!(CC)) { \ + NSASS(([NSString stringWithFormat: S, A, B])); }} while(0) /* Called by OpenGL savers using the XLockmore API. diff --git a/OSX/XScreenSaverView.h b/OSX/XScreenSaverView.h index eb241b39..7365b9d8 100644 --- a/OSX/XScreenSaverView.h +++ b/OSX/XScreenSaverView.h @@ -53,6 +53,9 @@ @interface XScreenSaverView : ScreenSaverView +# ifdef USE_IPHONE + +# endif { struct xscreensaver_function_table *xsft; PrefsReader *prefsReader; @@ -70,7 +73,8 @@ # ifdef USE_IPHONE UIDeviceOrientation orientation, new_orientation; - NSTimer *orientation_Timer; + double tap_time; + CGPoint tap_point; BOOL screenLocked; GLfloat rotation_ratio; // ratio thru rotation anim, or -1 diff --git a/OSX/XScreenSaverView.m b/OSX/XScreenSaverView.m index 55c5516b..438c05f9 100644 --- a/OSX/XScreenSaverView.m +++ b/OSX/XScreenSaverView.m @@ -91,6 +91,11 @@ int mono_p = 0; +@interface XScreenSaverView (Private) +- (void) stopAndClose; +- (void) stopAndClose:(Bool)relaunch; +@end + @implementation XScreenSaverView // Given a lower-cased saver name, returns the function table for it. @@ -113,7 +118,9 @@ int mono_p = 0; if (! name) name = [[path lastPathComponent] stringByDeletingPathExtension]; - NSString *table_name = [[name lowercaseString] + NSString *table_name = [[[name lowercaseString] + stringByReplacingOccurrencesOfString:@" " + withString:@""] stringByAppendingString: @"_xscreensaver_function_table"]; void *addr = CFBundleGetDataPointerForName (cfb, (CFStringRef) table_name); @@ -146,7 +153,7 @@ int mono_p = 0; strcat (npath, opath); if (putenv (npath)) { perror ("putenv"); - abort(); + NSAssert1 (0, @"putenv \"%s\" failed", npath); } /* Don't free (npath) -- MacOS's putenv() does not copy it. */ @@ -167,7 +174,7 @@ int mono_p = 0; strcat (env, s); if (putenv (env)) { perror ("putenv"); - abort(); + NSAssert1 (0, @"putenv \"%s\" failed", env); } /* Don't free (env) -- MacOS's putenv() does not copy it. */ } @@ -213,7 +220,11 @@ add_default_options (const XrmOptionDescRec *opts, ".textURL: http://twitter.com/statuses/public_timeline.atom", // ".textProgram: ", ".grabDesktopImages: yes", +# ifndef USE_IPHONE ".chooseRandomImages: no", +# else + ".chooseRandomImages: yes", +# endif ".imageDirectory: ~/Pictures", ".relaunchDelay: 2", 0 @@ -325,7 +336,7 @@ double_time (void) "org.jwz.xscreensaver...plist" */ NSString *name = [NSString stringWithCString:xsft->progclass - encoding:NSUTF8StringEncoding]; + encoding:NSISOLatin1StringEncoding]; name = [@"org.jwz.xscreensaver." stringByAppendingString:name]; [self setResourcesEnv:name]; @@ -375,7 +386,6 @@ double_time (void) // xsft // fpst - // orientation_timer [super dealloc]; } @@ -611,12 +621,41 @@ double current_device_rotation (void) [self setFrame:[self frame]]; } + +- (void)alertView:(UIAlertView *)av clickedButtonAtIndex:(NSInteger)i +{ + if (i == 0) exit (-1); // Cancel + [self stopAndClose]; // Keep going +} + +- (void) handleException: (NSException *)e +{ + NSLog (@"Caught exception: %@", e); + [[[UIAlertView alloc] initWithTitle: + [NSString stringWithFormat: @"%s crashed!", + xsft->progclass] + message: + [NSString stringWithFormat: + @"The error message was:" + "\n\n%@\n\n" + "If it keeps crashing, try " + "resetting its options.", + e] + delegate: self + cancelButtonTitle: @"Exit" + otherButtonTitles: @"Keep going", nil] + show]; + [self stopAnimation]; +} + #endif // USE_IPHONE - (void) render_x11 { # ifdef USE_IPHONE + @try { + if (orientation == UIDeviceOrientationUnknown) [self didRotate:nil]; [self hackRotation]; @@ -760,7 +799,6 @@ double current_device_rotation (void) resized_p = NO; } - // Run any XtAppAddInput callbacks now. // (Note that XtAppAddTimeOut callbacks have already been run by // the Cocoa event loop.) @@ -817,6 +855,13 @@ double current_device_rotation (void) } } # endif // DO_GC_HACKERY + +# ifdef USE_IPHONE + } + @catch (NSException *e) { + [self handleException: e]; + } +# endif // USE_IPHONE } @@ -969,7 +1014,7 @@ double current_device_rotation (void) { NSBundle *bundle = [NSBundle bundleForClass:[self class]]; NSString *file = [NSString stringWithCString:xsft->progclass - encoding:NSUTF8StringEncoding]; + encoding:NSISOLatin1StringEncoding]; file = [file lowercaseString]; NSString *path = [bundle pathForResource:file ofType:@"xml"]; if (!path) { @@ -1116,7 +1161,8 @@ double current_device_rotation (void) break; } default: - abort(); + NSAssert (0, @"unknown X11 event type: %d", type); + break; } [self lockFocus]; @@ -1196,6 +1242,47 @@ double current_device_rotation (void) #else // USE_IPHONE +- (void) stopAndClose +{ + if ([self isAnimating]) + [self stopAnimation]; + + /* Need to make the SaverListController be the firstResponder again + so that it can continue to receive its own shake events. I + suppose that this abstraction-breakage means that I'm adding + XScreenSaverView to the UINavigationController wrong... + */ + UIViewController *v = [[self window] rootViewController]; + if ([v isKindOfClass: [UINavigationController class]]) { + UINavigationController *n = (UINavigationController *) v; + [[n topViewController] becomeFirstResponder]; + } + + // [self removeFromSuperview]; + [UIView animateWithDuration: 0.5 + animations:^{ self.alpha = 0.0; } + completion:^(BOOL finished) { + [self removeFromSuperview]; + self.alpha = 1.0; + }]; +} + + +- (void) stopAndClose:(Bool)relaunch_p +{ + [self stopAndClose]; + + if (relaunch_p) { // Fake a shake on the SaverListController. + UIViewController *v = [[self window] rootViewController]; + if ([v isKindOfClass: [UINavigationController class]]) { + UINavigationController *n = (UINavigationController *) v; + [[n topViewController] motionEnded: UIEventSubtypeMotionShake + withEvent: nil]; + } + } +} + + /* Called after the device's orientation has changed. Note: we could include a subclass of UIViewController which @@ -1311,7 +1398,11 @@ double current_device_rotation (void) } -/* In the simulator, multi-touch sequences look like this: +/* I believe we can't use UIGestureRecognizer for tracking touches + because UIPanGestureRecognizer doesn't give us enough detail in its + callbacks. + + In the simulator, multi-touch sequences look like this: touchesBegan [touchA, touchB] touchesEnd [touchA, touchB] @@ -1345,8 +1436,29 @@ rotate_mouse (int *x, int *y, int w, int h, int rot) } +#if 0 // AudioToolbox/AudioToolbox.h +- (void) beep +{ + // There's no way to play a standard system alert sound! + // We'd have to include our own WAV for that. Eh, fuck it. + AudioServicesPlaySystemSound (kSystemSoundID_Vibrate); +# if TARGET_IPHONE_SIMULATOR + NSLog(@"BEEP"); // The sim doesn't vibrate. +# endif +} +#endif + + +/* We distinguish between taps and drags. + - Drags (down, motion, up) are sent to the saver to handle. + - Single-taps exit the saver. + This means a saver cannot respond to a single-tap. Only a few try to. + */ + - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + tap_time = 0; + if (xsft->event_cb && xwindow) { double s = self.contentScaleFactor; XEvent xe; @@ -1363,8 +1475,16 @@ rotate_mouse (int *x, int *y, int w, int h, int rot) xe.xbutton.y = s * p.y; rotate_mouse (&xe.xbutton.x, &xe.xbutton.y, w, h, rot_current_angle); jwxyz_mouse_moved (xdpy, xwindow, xe.xbutton.x, xe.xbutton.y); + + // Ignore return code: don't care whether the hack handled it. xsft->event_cb (xdpy, xwindow, xdata, &xe); + + // Remember when/where this was, to determine tap versus drag or hold. + tap_time = double_time(); + tap_point = p; + i++; + break; // No pinches: only look at the first touch. } } } @@ -1372,18 +1492,6 @@ rotate_mouse (int *x, int *y, int w, int h, int rot) - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { - - // Double-tap means "exit" and return to selection menu. - // - for (UITouch *touch in touches) { - if ([touch tapCount] >= 2) { - if ([self isAnimating]) - [self stopAnimation]; - [self removeFromSuperview]; - return; - } - } - if (xsft->event_cb && xwindow) { double s = self.contentScaleFactor; XEvent xe; @@ -1393,6 +1501,18 @@ rotate_mouse (int *x, int *y, int w, int h, int rot) int h = s * [self frame].size.height; for (UITouch *touch in touches) { CGPoint p = [touch locationInView:self]; + + // If the ButtonRelease came less than half a second after ButtonPress, + // and didn't move far, then this was a tap, not a drag or a hold. + // Interpret it as "exit". + // + double dist = sqrt (((p.x - tap_point.x) * (p.x - tap_point.x)) + + ((p.y - tap_point.y) * (p.y - tap_point.y))); + if (tap_time + 0.5 >= double_time() && dist < 20) { + [self stopAndClose]; + return; + } + xe.xany.type = ButtonRelease; xe.xbutton.button = i + 1; xe.xbutton.x = s * p.x; @@ -1401,6 +1521,7 @@ rotate_mouse (int *x, int *y, int w, int h, int rot) jwxyz_mouse_moved (xdpy, xwindow, xe.xbutton.x, xe.xbutton.y); xsft->event_cb (xdpy, xwindow, xdata, &xe); i++; + break; // No pinches: only look at the first touch. } } } @@ -1424,6 +1545,7 @@ rotate_mouse (int *x, int *y, int w, int h, int rot) jwxyz_mouse_moved (xdpy, xwindow, xe.xmotion.x, xe.xmotion.y); xsft->event_cb (xdpy, xwindow, xdata, &xe); i++; + break; // No pinches: only look at the first touch. } } } @@ -1431,10 +1553,27 @@ rotate_mouse (int *x, int *y, int w, int h, int rot) /* We need this to respond to "shake" gestures */ -- (BOOL)canBecomeFirstResponder { +- (BOOL)canBecomeFirstResponder +{ return YES; } +- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event +{ +} + + +- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event +{ +} + +/* Shake means exit and launch a new saver. + */ +- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event +{ + [self stopAndClose:YES]; +} + - (void)setScreenLocked:(BOOL)locked { @@ -1462,7 +1601,7 @@ static PrefsReader * get_prefsReader (Display *dpy) { XScreenSaverView *view = jwxyz_window_view (XRootWindow (dpy, 0)); - if (!view) abort(); + if (!view) return 0; return [view prefsReader]; } diff --git a/OSX/bindist.rtf b/OSX/bindist.rtf index 1afbd8ea..c1677625 100644 --- a/OSX/bindist.rtf +++ b/OSX/bindist.rtf @@ -16,8 +16,8 @@ XScreenSaver\ by Jamie Zawinski\ and many others\ \ -version 5.17\ -22-Jun-2012\ +version 5.18\ +03-Jul-2012\ \ {\field{\*\fldinst{HYPERLINK "http://www.jwz.org/xscreensaver/"}}{\fldrslt \cf2 \ul \ulc2 http://www.jwz.org/xscreensaver/}} \ diff --git a/OSX/iSaverRunner.plist b/OSX/iSaverRunner.plist index 89e572fa..a296b33b 100644 --- a/OSX/iSaverRunner.plist +++ b/OSX/iSaverRunner.plist @@ -9,7 +9,7 @@ CFBundleDevelopmentRegion English CFBundleVersion - 5.17 + 5.18 NSMainNibFile iSaverRunner CFBundlePackageType @@ -19,7 +19,7 @@ UIStatusBarHidden CFBundleShortVersionString - 5.17 + 5.18 CFBundleInfoDictionaryVersion 6.0 UIRequiredDeviceCapabilities diff --git a/OSX/iSaverRunner1024.png b/OSX/iSaverRunner1024.png new file mode 100644 index 00000000..a548d1c6 Binary files /dev/null and b/OSX/iSaverRunner1024.png differ diff --git a/OSX/iosgrabimage.m b/OSX/iosgrabimage.m new file mode 100644 index 00000000..faf23480 --- /dev/null +++ b/OSX/iosgrabimage.m @@ -0,0 +1,125 @@ +/* xscreensaver, Copyright (c) 1992-2012 Jamie Zawinski + * + * Permission to use, copy, modify, distribute, and sell this software and its + * documentation for any purpose is hereby granted without fee, provided that + * the above copyright notice appear in all copies and that both that + * copyright notice and this permission notice appear in supporting + * documentation. No representations are made about the suitability of this + * software for any purpose. It is provided "as is" without express or + * implied warranty. + */ + +/* This iOS code to choose and return a random image from the user's + * photo gallery. + * + * Much of the following written by: + * + * Created by David Oster on 6/23/12. + * Copyright (c) 2012 Google. All rights reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifdef USE_IPHONE // whole file + +#import +#import "grabscreen.h" +#import "yarandom.h" + +/* ALAssetsLibrary is an async API, so we need to fire it off and then + call a callback when it's done. Fortunately, this fits the same + interaction model already used in xscreensaver by load_image_async(), + so it works out nicely. + */ + +typedef struct { + void (*callback) (void *uiimage, const char *fn, void *closure); + void *closure; + + ALAssetsLibrary *library; + NSMutableArray *assets; + +} ios_loader_data; + + +static void +ios_random_image_done (ios_loader_data *d, BOOL ok) +{ + UIImage *img = 0; + const char *fn = 0; + int n = ok ? [d->assets count] : 0; + if (n > 0) { + ALAsset *asset = [d->assets objectAtIndex: random() % n]; + ALAssetRepresentation *rep = [asset defaultRepresentation]; + + // "fullScreenImage" returns a smaller image than "fullResolutionImage", + // but this function still takes a significant fraction of a second, + // causing a visible glitch in e.g. "glslideshow". + CGImageRef cgi = [rep fullScreenImage]; + if (cgi) { + UIImageOrientation orient = (UIImageOrientation) + [[asset valueForProperty:ALAssetPropertyOrientation] intValue]; + img = [UIImage imageWithCGImage: cgi + scale: 1 + orientation: orient]; + if (img) + fn = [[rep filename] cStringUsingEncoding:NSISOLatin1StringEncoding]; + } + } + + [d->assets release]; + [d->library release]; + + d->callback (img, fn, d->closure); + free (d); +} + + +void +ios_load_random_image (void (*callback) (void *uiimage, const char *fn, + void *closure), + void *closure) +{ + ios_loader_data *d = (ios_loader_data *) calloc (1, sizeof(*d)); + d->callback = callback; + d->closure = closure; + + d->library = [[[ALAssetsLibrary alloc] init] retain]; + d->assets = [[NSMutableArray array] retain]; + + // The closures passed in here are called later, after we have returned. + // + [d->library enumerateGroupsWithTypes: ALAssetsGroupAll + usingBlock: ^(ALAssetsGroup *group, BOOL *stop) { + NSString *name = [group valueForProperty:ALAssetsGroupPropertyName]; + if ([name length]) { + [group enumerateAssetsUsingBlock: ^(ALAsset *asset, NSUInteger index, + BOOL *stop) { + if ([[asset valueForProperty: ALAssetPropertyType] + isEqual: ALAssetTypePhoto]) { + [d->assets addObject:asset]; + } + }]; + } + + if (! group) { // done + ios_random_image_done (d, YES); + } + } failureBlock:^(NSError *error) { + // E.g., ALAssetsLibraryErrorDomain: "The user has denied the + // application access to their media." + NSLog(@"reading Photo Library: %@", error); + ios_random_image_done (d, NO); + }]; +} + +#endif // USE_IPHONE - whole file diff --git a/OSX/iostextclient.m b/OSX/iostextclient.m index 646436c3..09c62985 100644 --- a/OSX/iostextclient.m +++ b/OSX/iostextclient.m @@ -38,15 +38,6 @@ struct text_data { }; -void -textclient_reshape (text_data *d, - int pix_w, int pix_h, - int char_w, int char_h) -{ - d->columns = char_w; -} - - text_data * textclient_open (Display *dpy) { @@ -405,6 +396,7 @@ wrap_text (char *body, int columns) { int col = 0, last_col = 0; char *last_space = 0; + if (! body) return; for (char *p = body; *p; p++) { if (*p == '\r' || *p == '\n' || *p == ' ' || *p == '\t') { if (col > columns && last_space) { @@ -425,6 +417,23 @@ wrap_text (char *body, int columns) } +static void +rewrap_text (char *body, int columns) +{ + if (! body) return; + for (char *p = body; *p; p++) { + if (*p == '\n') { + if (p[1] == '\n') + p++; + else + *p = ' '; + } + } + wrap_text (body, columns); +} + + + static void strip_backslashes (char *s) { @@ -553,4 +562,14 @@ textclient_putc (text_data *d, XKeyEvent *k) return False; } + +void +textclient_reshape (text_data *d, + int pix_w, int pix_h, + int char_w, int char_h) +{ + d->columns = char_w; + rewrap_text (d->buf, d->columns); +} + #endif /* USE_IPHONE -- whole file */ diff --git a/OSX/jwxyz-timers.m b/OSX/jwxyz-timers.m index 6e478f61..be31b2dc 100644 --- a/OSX/jwxyz-timers.m +++ b/OSX/jwxyz-timers.m @@ -48,6 +48,12 @@ # define LOGI(str,arg1,arg2,arg3) #endif +#define ASSERT_RET(C,S) do { \ + if (!(C)) { \ + jwxyz_abort ("jwxyz-timers: %s",(S)); \ + return; \ + }} while(0) + XtAppContext XtDisplayToApplicationContext (Display *dpy) @@ -96,7 +102,7 @@ jwxyz_timer_release (const void *arg) struct jwxyz_XtIntervalId *data = (struct jwxyz_XtIntervalId *) arg; data->refcount--; LOGT(@"timer 0x%08X: release %d", (unsigned int) data, data->refcount); - if (data->refcount < 0) abort(); + ASSERT_RET (data->refcount >= 0, "double free"); if (data->refcount == 0) free (data); } @@ -117,7 +123,7 @@ jwxyz_source_release (const void *arg) data->refcount--; LOGI(@"source 0x%08X %2d: release %d", (unsigned int) data, data->fd, data->refcount); - if (data->refcount < 0) abort(); + ASSERT_RET (data->refcount >= 0, "double free"); if (data->refcount == 0) { # ifdef USE_COCOA_SOURCES if (data->socket) @@ -165,8 +171,8 @@ jwxyz_source_cb (CFSocketRef s, CFSocketCallBackType type, { struct jwxyz_XtInputId *data = (struct jwxyz_XtInputId *) info; - if (type != kCFSocketReadCallBack) abort(); - if (call_data != 0) abort(); // not used for kCFSocketRead + ASSERT_RET (type == kCFSocketReadCallBack, "unnknown type"); + ASSERT_RET (!call_data, "no call data"); // not used for kCFSocketRead // We are sometimes called when there is not, in fact, data available! // So don't call data->cb if we're being fed a pack of lies. @@ -218,9 +224,8 @@ void XtRemoveTimeOut (XtIntervalId id) { LOGT(@"timer 0x%08X: remove", (unsigned int) id, 0); - if (id->refcount <= 0) abort(); - if (!id->cftimer) abort(); - + ASSERT_RET (id->refcount > 0, "already freed"); + ASSERT_RET (id->cftimer, "timers corrupted"); CFRunLoopRemoveTimer (CFRunLoopGetCurrent(), id->cftimer, kCFRunLoopCommonModes); CFRunLoopTimerInvalidate (id->cftimer); @@ -253,8 +258,8 @@ static void jwxyz_source_select (XtInputId id) { jwxyz_sources_data *td = display_sources_data (app_to_display (id->app)); - if (id->fd <= 0 || id->fd >= FD_SETSIZE) abort(); - if (td->ids[id->fd]) abort(); + ASSERT_RET (id->fd > 0 && id->fd < FD_SETSIZE, "fd out of range"); + ASSERT_RET (td->ids[id->fd] == 0, "sources corrupted"); td->ids[id->fd] = id; td->count++; } @@ -263,9 +268,9 @@ static void jwxyz_source_deselect (XtInputId id) { jwxyz_sources_data *td = display_sources_data (app_to_display (id->app)); - if (td->count <= 0) abort(); - if (id->fd <= 0 || id->fd >= FD_SETSIZE) abort(); - if (td->ids[id->fd] != id) abort(); + ASSERT_RET (td->count > 0, "sources corrupted"); + ASSERT_RET (id->fd > 0 && id->fd < FD_SETSIZE, "fd out of range"); + ASSERT_RET (td->ids[id->fd] == id, "sources corrupted"); td->ids[id->fd] = 0; td->count--; } @@ -288,14 +293,14 @@ jwxyz_sources_run (jwxyz_sources_data *td) } } - if (!max) abort(); + ASSERT_RET (max > 0, "no fds"); if (0 < select (max+1, &fds, NULL, NULL, &tv)) { for (i = 0; i < FD_SETSIZE; i++) { if (FD_ISSET (i, &fds)) { XtInputId id = td->ids[i]; - if (!id || !id->cb) abort(); - if (id->fd != i) abort(); + ASSERT_RET (id && id->cb, "sources corrupted"); + ASSERT_RET (id->fd == i, "sources corrupted"); id->cb (id->closure, &id->fd, &id); } } @@ -353,10 +358,10 @@ void XtRemoveInput (XtInputId id) { LOGI(@"source 0x%08X %2d: remove", (unsigned int) id, id->fd, 0); - if (id->refcount <= 0) abort(); + ASSERT_RET (id->refcount > 0, "sources corrupted"); # ifdef USE_COCOA_SOURCES - if (! id->cfsource) abort(); - if (! id->socket) abort(); + ASSERT_RET (id->cfsource, "sources corrupted"); + ASSERT_RET (id->socket, "sources corrupted"); CFRunLoopRemoveSource (CFRunLoopGetCurrent(), id->cfsource, kCFRunLoopCommonModes); @@ -375,7 +380,7 @@ void jwxyz_XtRemoveInput_all (Display *dpy) { # ifdef USE_COCOA_SOURCES - abort(); + ASSERT_RET (0, "unimplemented"); # else /* !USE_COCOA_SOURCES */ jwxyz_sources_data *td = display_sources_data (dpy); diff --git a/OSX/jwxyz.h b/OSX/jwxyz.h index 58d17fe4..c8607e7d 100644 --- a/OSX/jwxyz.h +++ b/OSX/jwxyz.h @@ -19,6 +19,9 @@ #ifndef __JWXYZ_H__ #define __JWXYZ_H__ +extern void jwxyz_abort(const char *fmt, ...) __dead2; +#define abort() jwxyz_abort("abort in %s:%d", __FUNCTION__, __LINE__) + typedef int Bool; typedef int Status; typedef void * XPointer; @@ -449,6 +452,7 @@ extern int visual_class (Screen *, Visual *); // also declared in utils/grabclient.h extern Bool use_subwindow_mode_p (Screen *, Window); + struct jwxyz_Visual { VisualID visualid; /* visual id of this visual */ int class; /* class of screen (monochrome, etc.) */ diff --git a/OSX/jwxyz.m b/OSX/jwxyz.m index 7643c440..b7e99525 100644 --- a/OSX/jwxyz.m +++ b/OSX/jwxyz.m @@ -23,6 +23,7 @@ # import # import # import +# import # define NSView UIView # define NSRect CGRect # define NSPoint CGPoint @@ -41,13 +42,10 @@ #import "jwxyz.h" #import "jwxyz-timers.h" +#import "yarandom.h" #undef Assert -#define Assert(C,S) do { \ - if (!(C)) { \ - NSLog(@"%s",S); \ - abort(); \ - }} while(0) +#define Assert(C,S) do { if (!(C)) jwxyz_abort ("%s",(S)); } while(0) # undef MAX # undef MIN @@ -111,12 +109,38 @@ struct jwxyz_Font { }; +/* Instead of calling abort(), throw a real exception, so that + XScreenSaverView can catch it and display a dialog. + */ +void +jwxyz_abort (const char *fmt, ...) +{ + char s[10240]; + if (!fmt || !*fmt) + strcpy (s, "abort"); + else + { + va_list args; + va_start (args, fmt); + vsprintf (s, fmt, args); + va_end (args); + } + [[NSException exceptionWithName: NSInternalInconsistencyException + reason: [NSString stringWithCString: s + encoding:NSUTF8StringEncoding] + userInfo: nil] + raise]; + abort(); // not reached +} + + Display * jwxyz_make_display (void *nsview_arg, void *cgc_arg) { CGContextRef cgc = (CGContextRef) cgc_arg; NSView *view = (NSView *) nsview_arg; - if (!view) abort(); + Assert (view, "no view"); + if (!view) return 0; Display *d = (Display *) calloc (1, sizeof(*d)); d->screen = (Screen *) calloc (1, sizeof(Screen)); @@ -393,7 +417,7 @@ push_gc (Drawable d, GC gc) case GXxor: CGContextSetBlendMode (cgc, kCGBlendModeDifference); break; case GXor: CGContextSetBlendMode (cgc, kCGBlendModeLighten); break; case GXand: CGContextSetBlendMode (cgc, kCGBlendModeDarken); break; - default: abort(); break; + default: Assert(0, "unknown gcv function"); break; } if (gc->gcv.clip_mask) @@ -782,7 +806,8 @@ XCopyArea (Display *dpy, Drawable src, Drawable dst, GC gc, // No cgi means src == dst, and both are Windows. # ifdef USE_IPHONE - abort(); // No NSCopyBits on iOS, but shouldn't be reached anyway. + Assert (0, "NSCopyBits unimplemented"); // shouldn't be reached anyway + return 0; # else // !USE_IPHONE NSRect nsfrom; nsfrom.origin.x = src_rect.origin.x; // NSRect != CGRect on 10.4 @@ -1174,8 +1199,8 @@ static void set_gcv (GC gc, XGCValues *from, unsigned long mask) { if (! mask) return; - if (! gc) abort(); - if (! from) abort(); + Assert (gc && from, "no gc"); + if (!gc || !from) return; if (mask & GCFunction) gc->gcv.function = from->function; if (mask & GCForeground) gc->gcv.foreground = from->foreground; @@ -1196,17 +1221,18 @@ set_gcv (GC gc, XGCValues *from, unsigned long mask) if (mask & GCBackground) validate_pixel (from->background, gc->depth, gc->gcv.alpha_allowed_p); - if (mask & GCLineStyle) abort(); - if (mask & GCPlaneMask) abort(); - if (mask & GCFillStyle) abort(); - if (mask & GCTile) abort(); - if (mask & GCStipple) abort(); - if (mask & GCTileStipXOrigin) abort(); - if (mask & GCTileStipYOrigin) abort(); - if (mask & GCGraphicsExposures) abort(); - if (mask & GCDashOffset) abort(); - if (mask & GCDashList) abort(); - if (mask & GCArcMode) abort(); + Assert ((! (mask & (GCLineStyle | + GCPlaneMask | + GCFillStyle | + GCTile | + GCStipple | + GCTileStipXOrigin | + GCTileStipYOrigin | + GCGraphicsExposures | + GCDashOffset | + GCDashList | + GCArcMode))), + "unimplemented gcvalues mask"); } @@ -1453,7 +1479,7 @@ XInitImage (XImage *ximage) ximage->f.put_pixel = ximage_putpixel_32; ximage->f.get_pixel = ximage_getpixel_32; } else { - abort(); + Assert (0, "unknown depth"); } return 1; } @@ -2141,12 +2167,12 @@ static void query_font (Font fid) { if (!fid || !fid->nsfont) { - NSLog(@"no NSFont in fid"); - abort(); + Assert (0, "no NSFont in fid"); + return; } if (![fid->nsfont fontName]) { - NSLog(@"broken NSFont in fid"); - abort(); + Assert(0, @"broken NSFont in fid"); + return; } int first = 32; @@ -2176,7 +2202,13 @@ query_font (Font fid) # ifndef USE_IPHONE NSBezierPath *bpath = [NSBezierPath bezierPath]; -# endif +# else // USE_IPHONE + CTFontRef ctfont = + CTFontCreateWithName ((CFStringRef) [fid->nsfont fontName], + [fid->nsfont pointSize], + NULL); + Assert (ctfont, @"no CTFontRef for UIFont"); +# endif // USE_IPHONE for (i = first; i <= last; i++) { unsigned char str[2]; @@ -2185,8 +2217,8 @@ query_font (Font fid) NSString *nsstr = [NSString stringWithCString:(char *) str encoding:NSISOLatin1StringEncoding]; - NSPoint advancement; - NSRect bbox; + NSPoint advancement = { 0, }; + NSRect bbox = {{ 0, }, }; # ifndef USE_IPHONE @@ -2235,33 +2267,35 @@ query_font (Font fid) # else // USE_IPHONE - UIFont *ff = fid->nsfont; - CGSize size = [nsstr sizeWithFont:ff]; - - /* sizeWithFont gives us a character's "width" and "height". - There is no way to get a character's "lbearing", "rbearing", - or "descent". We do have the font's overall "descent", though. - - drawAtPoint (to an offscreen CGContext) returns "width" and the - "ascent" of the font (not of the glyph, I think) so that doesn't - help. + /* There is no way to get "lbearing", "rbearing" or "descent" out of + NSFont. 'sizeWithFont' gives us "width" and "height" only. + Likewise, 'drawAtPoint' (to an offscreen CGContext) gives us the + width of the character and the ascent of the font. - CGFontGetGlyphBBoxes might help (if it actually returns a bounding - box and not just the ascent/width again, which I don't know) but - we can't use it anyway because there is no way to map a unichar to - a CGGlyph. - - Fuck you sideways, Apple. + Maybe we could use CGFontGetGlyphBBoxes() and avoid linking in + the CoreText library, but there's no non-CoreText way to turn a + unichar into a CGGlyph. */ - - bbox.origin.x = 0; - bbox.origin.y = [ff descender]; - bbox.size.width = size.width; - bbox.size.height = size.height; - - advancement.x = size.width; - advancement.y = 0; - + UniChar uchar = [nsstr characterAtIndex: 0]; + CGGlyph cgglyph = 0; + + if (CTFontGetGlyphsForCharacters (ctfont, &uchar, &cgglyph, 1)) + { + bbox = CTFontGetBoundingRectsForGlyphs (ctfont, + kCTFontDefaultOrientation, + &cgglyph, NULL, 1); + CGSize adv = { 0, }; + CTFontGetAdvancesForGlyphs (ctfont, kCTFontDefaultOrientation, + &cgglyph, &adv, 1); + advancement.x = adv.width; + advancement.y = adv.height; + + // Seems to be clipping by a pixel or two. Add a margin to be safe. + bbox.origin.x -= 2; + bbox.origin.y -= 2; + bbox.size.width += 4; + bbox.size.height += 4; + } # endif // USE_IPHONE /* Now that we know the advancement and bounding box, we can compute @@ -2304,6 +2338,10 @@ query_font (Font fid) (int) advancement.x, (int) advancement.y); #endif } + +# ifdef USE_IPHONE + CFRelease (ctfont); +# endif } @@ -2651,7 +2689,8 @@ XLoadFont (Display *dpy, const char *name) // We should never return NULL for XLFD fonts. if (!fid->nsfont) { - abort(); + Assert (0, "no font"); + return 0; } CFRetain (fid->nsfont); // needed for garbage collection? diff --git a/OSX/osxgrabscreen.m b/OSX/osxgrabscreen.m index 9dc5001c..8de3a09c 100644 --- a/OSX/osxgrabscreen.m +++ b/OSX/osxgrabscreen.m @@ -253,7 +253,7 @@ osx_grab_desktop_image (Screen *screen, Window xwindow, Drawable drawable, /* What a hack! On iOS, our application delegate, SaverRunner, grabs an image - of itself as a UIImage before creating the XScreenSaverView. + of itself as a UIImage before mapping the XScreenSaverView. In this code, we ask SaverRunner for that UIImage, then copy it to the root window. */ @@ -262,18 +262,12 @@ Bool osx_grab_desktop_image (Screen *screen, Window xwindow, Drawable drawable, XRectangle *geom_ret) { - - /* Just for a little variety, let's return colorbars every other time. */ - static int counter = 0; - if (counter++ & 1) - return False; - SaverRunner *s = (SaverRunner *) [[UIApplication sharedApplication] delegate]; if (! s) return False; if (! [s isKindOfClass:[SaverRunner class]]) - abort(); + return False; UIImage *img = [s screenshot]; if (! img) return False; @@ -444,16 +438,7 @@ osx_load_image_file (Screen *screen, Window xwindow, Drawable drawable, # else /* USE_IPHONE */ - /* It would be nice to select a random image from the Photo Album and - load that, but that looks like a gigantic pain in the ass, because - it's an asynchronous API, and might require manual authorization - by the user. (ALAssetsLibrary, enumerateGroupsWithTypes.) - - Possibly useful sample code to check out: - http://www.fiveminutes.eu/accessing-photo-library-using-assets-library-framework-on-iphone/ - - So, in the meantime, return False, acquire colorbars. - */ + /* This is handled differently: see grabclient.c and iosgrabimage.m. */ return False; # endif /* USE_IPHONE */ diff --git a/README b/README index dfc9e388..48860ab4 100644 --- a/README +++ b/README @@ -38,6 +38,16 @@ XScreenSaver has an extensive manual -- please read it! =============================================================================== +Changes since 5.17: * iOS responds to shake gestures to randomize. + * iOS can load images from your Photo Library. + * iOS has clickable Wikipedia links in Settings panels. + * Made `pipes' be ridiculously less efficient, but spin. + * Added better mouse control to `rubik', `cube21', + `crackberg', and `julia'. + * Cosmetic improvements to `queens' and `endgame'. + * `sonar' can now ping local subnet on DHCP. + * Most savers now resize/rotate properly. + * Various fixes. Changes since 5.16: * More iOS tweaks. * Fixed some compilation problems. * Enlarged the texture image for `lament'. diff --git a/config.h.in b/config.h.in index 0905154d..c11d0e63 100644 --- a/config.h.in +++ b/config.h.in @@ -103,6 +103,9 @@ /* Define to 1 if you have the `getcwd' function. */ #undef HAVE_GETCWD +/* Define this if you have the getifaddrs() function. */ +#undef HAVE_GETIFADDRS + /* Define to 1 if you have the `getpagesize' function. */ #undef HAVE_GETPAGESIZE diff --git a/configure b/configure index 70097080..04b03280 100755 --- a/configure +++ b/configure @@ -2213,6 +2213,9 @@ echo "command line was: $0 $@" + + + @@ -2377,6 +2380,7 @@ fi + ############################################################################### # # Some utility functions to make checking for X things easier. @@ -6243,6 +6247,68 @@ $as_echo "$ac_cv_have_icmphdr" >&6; } _ACEOF fi +{ $as_echo "$as_me:$LINENO: checking for getifaddrs" >&5 +$as_echo_n "checking for getifaddrs... " >&6; } +if test "${ac_cv_have_getifaddrs+set}" = set; then + $as_echo_n "(cached) " >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include + #include + #include + #include +int +main () +{ +struct ifaddrs *ifa; + getifaddrs (&ifa); + ifa->ifa_next = 0; + ifa->ifa_addr->sa_family = 0; + ; + return 0; +} +_ACEOF +rm -rf conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" +$as_echo "$ac_try_echo") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -rf conftest.er1 + cat conftest.err >&5 + $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then + ac_cv_have_getifaddrs=yes +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_cv_have_getifaddrs=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:$LINENO: result: $ac_cv_have_getifaddrs" >&5 +$as_echo "$ac_cv_have_getifaddrs" >&6; } + if test "$ac_cv_have_getifaddrs" = yes ; then + cat >>confdefs.h <<\_ACEOF +#define HAVE_GETIFADDRS 1 +_ACEOF + + fi for ac_header in crypt.h sys/select.h @@ -17409,7 +17475,7 @@ if test "${ac_cv_mesagl_version_string+set}" = set; then $as_echo_n "(cached) " >&6 else cat > conftest.$ac_ext < #ifndef MESA_MAJOR_VERSION diff --git a/configure.in b/configure.in index 85703d44..11ba5c19 100644 --- a/configure.in +++ b/configure.in @@ -299,6 +299,9 @@ AH_TEMPLATE([HAVE_ICMPHDR], [Define this if you do pings with a `struct icmphdr' and an `un.echo.id' slot.]) +AH_TEMPLATE([HAVE_GETIFADDRS], + [Define this if you have the getifaddrs() function.]) + AH_TEMPLATE([HAVE_FORKPTY], [Define this if you have the 'forkpty' function: This allows 'phosphor' and 'apple2' to run curses-based @@ -973,6 +976,21 @@ AC_DEFUN(AC_X_RANDOM_PATHS, ;; esac]) +AC_DEFUN(AC_CHECK_GETIFADDRS, + [AC_CACHE_CHECK([for getifaddrs], ac_cv_have_getifaddrs, + [AC_TRY_COMPILE([#include + #include + #include + #include ], + [struct ifaddrs *ifa; + getifaddrs (&ifa); + ifa->ifa_next = 0; + ifa->ifa_addr->sa_family = 0;], + [ac_cv_have_getifaddrs=yes], + [ac_cv_have_getifaddrs=no])]) + if test "$ac_cv_have_getifaddrs" = yes ; then + AC_DEFINE(HAVE_GETIFADDRS) + fi]) ############################################################################### @@ -1171,6 +1189,7 @@ AC_CHECK_FUNCS(sigaction syslog realpath setrlimit) AC_CHECK_FUNCS(setlocale) AC_CHECK_ICMP AC_CHECK_ICMPHDR +AC_CHECK_GETIFADDRS AC_CHECK_HEADERS(crypt.h sys/select.h) AC_PROG_PERL diff --git a/driver/Makefile.in b/driver/Makefile.in index ccf98ea2..e071dac5 100644 --- a/driver/Makefile.in +++ b/driver/Makefile.in @@ -673,11 +673,13 @@ update_ad_version:: files="XScreenSaver.ad.in ../hacks/config/README ../OSX/bindist.rtf" ; \ U=$(UTILS_SRC)/version.h ; \ V=`sed -n 's/[^0-9]*\([0-9]\.[0-9][^. ]*\).*/\1/p' < $$U` ; \ + Y=`date '+%Y'` ; \ D=`date '+%d-%b-%Y'` ; \ for S in $$files ; do \ T=/tmp/xs.$$$$ ; \ sed -e "s/\(.*version \)[0-9][0-9]*\.[0-9]*[ab]*[0-9]*\(.*\)/\1$$V\2/" \ -e "s/\([0-9][0-9]-[A-Z][a-z][a-z]-[0-9][0-9][0-9]*\)/$$D/" \ + -e "s/\( [0-9][0-9][0-9][0-9]-\)[0-9][0-9][0-9][0-9] /\1$$Y /" \ < $$S > $$T ; \ if cmp -s $$S $$T ; then \ true ; \ diff --git a/driver/XScreenSaver.ad.in b/driver/XScreenSaver.ad.in index 29517ceb..bdfc2dc2 100644 --- a/driver/XScreenSaver.ad.in +++ b/driver/XScreenSaver.ad.in @@ -4,8 +4,8 @@ ! a screen saver and locker for the X window system ! by Jamie Zawinski ! -! version 5.17 -! 22-Jun-2012 +! version 5.18 +! 03-Jul-2012 ! ! See "man xscreensaver" for more info. The latest version is always ! available at http://www.jwz.org/xscreensaver/ @@ -415,7 +415,7 @@ XScreenSaver.bourneShell: /bin/sh *passwd.uname: True *splash.heading.label: XScreenSaver %s -*splash.body.label: Copyright © 1991-2010 by +*splash.body.label: Copyright © 1991-2012 by *splash.body2.label: Jamie Zawinski *splash.demo.label: Settings *splash.help.label: Help diff --git a/driver/XScreenSaver_ad.h b/driver/XScreenSaver_ad.h index 824da10b..d9162135 100644 --- a/driver/XScreenSaver_ad.h +++ b/driver/XScreenSaver_ad.h @@ -288,7 +288,7 @@ "*passwd.asterisks: True", "*passwd.uname: True", "*splash.heading.label: XScreenSaver %s", -"*splash.body.label: Copyright © 1991-2010 by", +"*splash.body.label: Copyright © 1991-2012 by", "*splash.body2.label: Jamie Zawinski ", "*splash.demo.label: Settings", "*splash.help.label: Help", diff --git a/driver/subprocs.c b/driver/subprocs.c index fb621cde..2a8f163e 100644 --- a/driver/subprocs.c +++ b/driver/subprocs.c @@ -1,5 +1,5 @@ /* subprocs.c --- choosing, spawning, and killing screenhacks. - * xscreensaver, Copyright (c) 1991-2008 Jamie Zawinski + * xscreensaver, Copyright (c) 1991-2012 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -484,6 +484,7 @@ static RETSIGTYPE sigchld_handler (int sig) { saver_info *si = global_si_kludge; /* I hate C so much... */ + in_signal_handler_p++; if (si->prefs.debug_p) { @@ -510,6 +511,7 @@ sigchld_handler (int sig) } init_sigchld(); + in_signal_handler_p--; } #endif /* SIGCHLD */ diff --git a/driver/xscreensaver.c b/driver/xscreensaver.c index 95f6b2b1..ed5bf303 100644 --- a/driver/xscreensaver.c +++ b/driver/xscreensaver.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1991-2011 Jamie Zawinski +/* xscreensaver, Copyright (c) 1991-2012 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -299,14 +299,28 @@ xscreensaver %s, copyright (c) 1991-2008 by Jamie Zawinski \n\ } +Bool in_signal_handler_p = 0; /* I hate C so much... */ + char * timestring (void) { - time_t now = time ((time_t *) 0); - char *str = (char *) ctime (&now); - char *nl = (char *) strchr (str, '\n'); - if (nl) *nl = 0; /* take off that dang newline */ - return str; + if (in_signal_handler_p) + { + /* Turns out that ctime() and even localtime_r() call malloc() on Linux! + So we can't call them from inside SIGCHLD. WTF. + */ + static char buf[30]; + strcpy (buf, "... ... .. signal ...."); + return buf; + } + else + { + time_t now = time ((time_t *) 0); + char *str = (char *) ctime (&now); + char *nl = (char *) strchr (str, '\n'); + if (nl) *nl = 0; /* take off that dang newline */ + return str; + } } static Bool blurb_timestamp_p = True; /* kludge */ diff --git a/driver/xscreensaver.h b/driver/xscreensaver.h index 26d9fcd3..98aa4450 100644 --- a/driver/xscreensaver.h +++ b/driver/xscreensaver.h @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1993-2011 Jamie Zawinski +/* xscreensaver, Copyright (c) 1993-2012 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -189,6 +189,7 @@ extern void restart_process (saver_info *si); extern int saver_ehandler (Display *dpy, XErrorEvent *error); extern int BadWindow_ehandler (Display *dpy, XErrorEvent *error); extern Bool window_exists_p (Display *dpy, Window window); +extern Bool in_signal_handler_p; extern char *timestring (void); extern Bool display_is_on_console_p (saver_info *si); extern Visual *get_best_gl_visual (saver_info *si, Screen *screen); diff --git a/hacks/Makefile.in b/hacks/Makefile.in index 0d6c8000..da0c9c46 100644 --- a/hacks/Makefile.in +++ b/hacks/Makefile.in @@ -1078,6 +1078,7 @@ apple2.o: $(UTILS_SRC)/visual.h apple2.o: $(UTILS_SRC)/xshm.h apple2.o: $(UTILS_SRC)/yarandom.h asm6502.o: $(srcdir)/asm6502.h +asm6502.o: $(UTILS_SRC)/yarandom.h attraction.o: ../config.h attraction.o: $(srcdir)/fps.h attraction.o: $(srcdir)/screenhackI.h diff --git a/hacks/abstractile.c b/hacks/abstractile.c index 9d7e968c..647b7aab 100644 --- a/hacks/abstractile.c +++ b/hacks/abstractile.c @@ -64,8 +64,6 @@ #define WAVES 6 #define STRETCHES 8 -const double PI = 3.1415926535; - struct lineStruct { unsigned int x, y, len, obj, color, ndol; int deo; @@ -171,10 +169,10 @@ _wave(struct state *st, int x, int h, int l, int wave) l+=1; switch(wave) { case 0: /* cos wave*/ - return((int)(cos((double)x*PI/l)*h)); + return((int)(cos((double)x*M_PI/l)*h)); case 1: /* double wave*/ case 2: /* double wave*/ - return((int)(cos((double)x*PI/l)*h)+(int)(sin((double)x*PI/l/st->cs1[1])*h)); + return((int)(cos((double)x*M_PI/l)*h)+(int)(sin((double)x*M_PI/l/st->cs1[1])*h)); case 3: /* zig zag */ return(abs((x%(l*2)-l))*h/l); case 4: /* giant zig zag */ @@ -774,10 +772,10 @@ _pattern(struct state *st, int x, int y, int n) x+=_wave(st,st->gridy-y,st->gridy/(1+st->cs1[n]),st->gridy,0); break; case 4: /* U curves */ - x+=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0); + x+=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0); break; case 5: - x-=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0); + x-=_wave(st,y,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0); break; } switch(st->wsy[0]) { @@ -794,10 +792,10 @@ _pattern(struct state *st, int x, int y, int n) y+=_wave(st,st->gridx-ox,st->gridx/(1+st->cs1[n]),st->gridx,0); break; case 4: /* U curves */ - y+=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0); + y+=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0); break; case 5: - y-=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/PI,0); + y-=_wave(st,ox,st->cs1[n]*st->csw[n]/2,st->gridy*2/M_PI,0); break; } switch(st->pattern[n]) { diff --git a/hacks/anemone.c b/hacks/anemone.c index 0cf342ea..f69e0967 100644 --- a/hacks/anemone.c +++ b/hacks/anemone.c @@ -380,11 +380,20 @@ static void anemone_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { - /* need to re-make pixmaps too... struct state *st = (struct state *) closure; st->scrWidth = w; st->scrHeight = h; - */ +#if 0 + if (st->dbuf) { + XWindowAttributes wa; + XGetWindowAttributes(dpy, window, &wa); + if (st->ba) XFreePixmap (dpy, st->ba); + if (st->bb) XFreePixmap (dpy, st->bb); + st->ba = XCreatePixmap (dpy, window, st->scrWidth, st->scrHeight, wa.depth); + st->bb = XCreatePixmap (dpy, window, st->scrWidth, st->scrHeight, wa.depth); + st->b = st->ba; + } +#endif } static Bool diff --git a/hacks/apollonian.c b/hacks/apollonian.c index ab34e04a..be2e6ab4 100644 --- a/hacks/apollonian.c +++ b/hacks/apollonian.c @@ -74,7 +74,6 @@ static const char sccsid[] = "@(#)apollonian.c 5.02 2001/07/01 xlockmore"; "*fpsSolid: true \n" \ # define refresh_apollonian 0 -# define reshape_apollonian 0 # define apollonian_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ # include "erase.h" @@ -822,6 +821,13 @@ draw_apollonian (ModeInfo * mi) } } +ENTRYPOINT void +reshape_apollonian(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_apollonian (mi); +} + ENTRYPOINT void release_apollonian (ModeInfo * mi) { diff --git a/hacks/apple2-main.c b/hacks/apple2-main.c index facde4c0..0e1508ff 100644 --- a/hacks/apple2-main.c +++ b/hacks/apple2-main.c @@ -915,6 +915,9 @@ a2_vt100_printc (apple2_sim_t *sim, struct terminal_controller_data *state, } break; case 10: /* LF */ +# ifndef HAVE_FORKPTY + state->cursor_x = 0; /* No ptys on iPhone; assume CRLF. */ +# endif case 11: /* VT */ case 12: /* FF */ if (state->cursor_y < rows - 1) diff --git a/hacks/asm6502.c b/hacks/asm6502.c index 3a8fe1a8..c3aa2a34 100644 --- a/hacks/asm6502.c +++ b/hacks/asm6502.c @@ -34,10 +34,15 @@ #include #include +#include "yarandom.h" #include "asm6502.h" -#ifdef DEBUGGER +/*#ifdef DEBUGGER # define random rand +#endif*/ + +#ifndef USE_IPHONE +# define READ_FILES #endif typedef enum{ @@ -68,7 +73,7 @@ typedef BOOL (*CharTest) (char); /*typedef void (*JumpFunc) (machine_6502* AddrMode);*/ typedef struct { - AddrMode type; + m6502_AddrMode type; Bit32 value[MAX_PARAM_VALUE]; unsigned int vp; /*value pointer, index into the value table.*/ char *label; @@ -259,7 +264,7 @@ static Bit8 nibble(Bit8 value, Side side){ /* used for tracing. XXX: combined with function getvalue */ -static BOOL peekValue(machine_6502 *machine, AddrMode adm, Pointer *pointer, Bit16 PC){ +static BOOL peekValue(machine_6502 *machine, m6502_AddrMode adm, Pointer *pointer, Bit16 PC){ Bit8 zp; pointer->value = 0; pointer->addr = 0; @@ -324,7 +329,7 @@ static BOOL peekValue(machine_6502 *machine, AddrMode adm, Pointer *pointer, Bit /* Figure out how to get the value from the addrmode and get it.*/ -static BOOL getValue(machine_6502 *machine, AddrMode adm, Pointer *pointer){ +static BOOL getValue(machine_6502 *machine, m6502_AddrMode adm, Pointer *pointer){ Bit8 zp; pointer->value = 0; pointer->addr = 0; @@ -385,7 +390,8 @@ static BOOL getValue(machine_6502 *machine, AddrMode adm, Pointer *pointer){ } -static void dismem(machine_6502 *machine, AddrMode adm, char *output){ +#if 0 +static void dismem(machine_6502 *machine, m6502_AddrMode adm, char *output){ Bit8 zp; Bit16 n; switch(adm){ @@ -442,6 +448,7 @@ static void dismem(machine_6502 *machine, AddrMode adm, char *output){ break; } } +#endif /* manZeroNeg - Manage the negative and zero flags */ static void manZeroNeg(machine_6502 *machine, Bit8 value){ @@ -455,7 +462,7 @@ static void warnValue(BOOL isValue){ } } -static void jmpADC(machine_6502 *machine, AddrMode adm){ +static void jmpADC(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; Bit16 tmp; Bit8 c = bitOn(machine->regP, CARRY_FL); @@ -506,7 +513,7 @@ static void jmpADC(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine,machine->regA); } -static void jmpAND(machine_6502 *machine, AddrMode adm){ +static void jmpAND(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -514,7 +521,7 @@ static void jmpAND(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine,machine->regA); } -static void jmpASL(machine_6502 *machine, AddrMode adm){ +static void jmpASL(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); if (isValue){ @@ -533,7 +540,7 @@ static void jmpASL(machine_6502 *machine, AddrMode adm){ } -static void jmpBIT(machine_6502 *machine, AddrMode adm){ +static void jmpBIT(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -550,7 +557,7 @@ static void jumpBranch(machine_6502 *machine, Bit16 offset){ machine->regPC = machine->regPC + offset; } -static void jmpBPL(machine_6502 *machine, AddrMode adm){ +static void jmpBPL(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -559,7 +566,7 @@ static void jmpBPL(machine_6502 *machine, AddrMode adm){ } -static void jmpBMI(machine_6502 *machine, AddrMode adm){ +static void jmpBMI(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -568,7 +575,7 @@ static void jmpBMI(machine_6502 *machine, AddrMode adm){ } -static void jmpBVC(machine_6502 *machine, AddrMode adm){ +static void jmpBVC(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -576,7 +583,7 @@ static void jmpBVC(machine_6502 *machine, AddrMode adm){ jumpBranch(machine, ptr.addr); } -static void jmpBVS(machine_6502 *machine, AddrMode adm){ +static void jmpBVS(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -584,7 +591,7 @@ static void jmpBVS(machine_6502 *machine, AddrMode adm){ jumpBranch(machine, ptr.addr); } -static void jmpBCC(machine_6502 *machine, AddrMode adm){ +static void jmpBCC(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -592,7 +599,7 @@ static void jmpBCC(machine_6502 *machine, AddrMode adm){ jumpBranch(machine, ptr.addr); } -static void jmpBCS(machine_6502 *machine, AddrMode adm){ +static void jmpBCS(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -600,7 +607,7 @@ static void jmpBCS(machine_6502 *machine, AddrMode adm){ jumpBranch(machine, ptr.addr); } -static void jmpBNE(machine_6502 *machine, AddrMode adm){ +static void jmpBNE(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -608,7 +615,7 @@ static void jmpBNE(machine_6502 *machine, AddrMode adm){ jumpBranch(machine, ptr.addr); } -static void jmpBEQ(machine_6502 *machine, AddrMode adm){ +static void jmpBEQ(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -621,28 +628,28 @@ static void doCompare(machine_6502 *machine, Bit16 reg, Pointer *ptr){ manZeroNeg(machine,(reg - ptr->value)); } -static void jmpCMP(machine_6502 *machine, AddrMode adm){ +static void jmpCMP(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); doCompare(machine,machine->regA,&ptr); } -static void jmpCPX(machine_6502 *machine, AddrMode adm){ +static void jmpCPX(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); doCompare(machine,machine->regX,&ptr); } -static void jmpCPY(machine_6502 *machine, AddrMode adm){ +static void jmpCPY(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); doCompare(machine,machine->regY,&ptr); } -static void jmpDEC(machine_6502 *machine, AddrMode adm){ +static void jmpDEC(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -654,7 +661,7 @@ static void jmpDEC(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine,ptr.value); } -static void jmpEOR(machine_6502 *machine, AddrMode adm){ +static void jmpEOR(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -662,35 +669,35 @@ static void jmpEOR(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine, machine->regA); } -static void jmpCLC(machine_6502 *machine, AddrMode adm){ +static void jmpCLC(machine_6502 *machine, m6502_AddrMode adm){ machine->regP = setBit(machine->regP, CARRY_FL, 0); } -static void jmpSEC(machine_6502 *machine, AddrMode adm){ +static void jmpSEC(machine_6502 *machine, m6502_AddrMode adm){ machine->regP = setBit(machine->regP, CARRY_FL, 1); } -static void jmpCLI(machine_6502 *machine, AddrMode adm){ +static void jmpCLI(machine_6502 *machine, m6502_AddrMode adm){ machine->regP = setBit(machine->regP, INTERRUPT_FL, 0); } -static void jmpSEI(machine_6502 *machine, AddrMode adm){ +static void jmpSEI(machine_6502 *machine, m6502_AddrMode adm){ machine->regP = setBit(machine->regP, INTERRUPT_FL, 1); } -static void jmpCLV(machine_6502 *machine, AddrMode adm){ +static void jmpCLV(machine_6502 *machine, m6502_AddrMode adm){ machine->regP = setBit(machine->regP, OVERFLOW_FL, 0); } -static void jmpCLD(machine_6502 *machine, AddrMode adm){ +static void jmpCLD(machine_6502 *machine, m6502_AddrMode adm){ machine->regP = setBit(machine->regP, DECIMAL_FL, 0); } -static void jmpSED(machine_6502 *machine, AddrMode adm){ +static void jmpSED(machine_6502 *machine, m6502_AddrMode adm){ machine->regP = setBit(machine->regP, DECIMAL_FL, 1); } -static void jmpINC(machine_6502 *machine, AddrMode adm){ +static void jmpINC(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -699,14 +706,14 @@ static void jmpINC(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine,ptr.value); } -static void jmpJMP(machine_6502 *machine, AddrMode adm){ +static void jmpJMP(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); machine->regPC = ptr.addr; } -static void jmpJSR(machine_6502 *machine, AddrMode adm){ +static void jmpJSR(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; /* Move past the 2 byte parameter. JSR is always followed by absolute address. */ @@ -718,7 +725,7 @@ static void jmpJSR(machine_6502 *machine, AddrMode adm){ machine->regPC = ptr.addr; } -static void jmpLDA(machine_6502 *machine, AddrMode adm){ +static void jmpLDA(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -726,7 +733,7 @@ static void jmpLDA(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine, machine->regA); } -static void jmpLDX(machine_6502 *machine, AddrMode adm){ +static void jmpLDX(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -734,7 +741,7 @@ static void jmpLDX(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine, machine->regX); } -static void jmpLDY(machine_6502 *machine, AddrMode adm){ +static void jmpLDY(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -742,7 +749,7 @@ static void jmpLDY(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine, machine->regY); } -static void jmpLSR(machine_6502 *machine, AddrMode adm){ +static void jmpLSR(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); if (isValue){ @@ -764,11 +771,11 @@ static void jmpLSR(machine_6502 *machine, AddrMode adm){ } } -static void jmpNOP(machine_6502 *machine, AddrMode adm){ +static void jmpNOP(machine_6502 *machine, m6502_AddrMode adm){ /* no operation */ } -static void jmpORA(machine_6502 *machine, AddrMode adm){ +static void jmpORA(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -776,17 +783,17 @@ static void jmpORA(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine,machine->regA); } -static void jmpTAX(machine_6502 *machine, AddrMode adm){ +static void jmpTAX(machine_6502 *machine, m6502_AddrMode adm){ machine->regX = machine->regA; manZeroNeg(machine,machine->regX); } -static void jmpTXA(machine_6502 *machine, AddrMode adm){ +static void jmpTXA(machine_6502 *machine, m6502_AddrMode adm){ machine->regA = machine->regX; manZeroNeg(machine,machine->regA); } -static void jmpDEX(machine_6502 *machine, AddrMode adm){ +static void jmpDEX(machine_6502 *machine, m6502_AddrMode adm){ if (machine->regX > 0) machine->regX--; else @@ -794,23 +801,23 @@ static void jmpDEX(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine, machine->regX); } -static void jmpINX(machine_6502 *machine, AddrMode adm){ +static void jmpINX(machine_6502 *machine, m6502_AddrMode adm){ Bit16 value = machine->regX + 1; machine->regX = value & 0xFF; manZeroNeg(machine, machine->regX); } -static void jmpTAY(machine_6502 *machine, AddrMode adm){ +static void jmpTAY(machine_6502 *machine, m6502_AddrMode adm){ machine->regY = machine->regA; manZeroNeg(machine, machine->regY); } -static void jmpTYA(machine_6502 *machine, AddrMode adm){ +static void jmpTYA(machine_6502 *machine, m6502_AddrMode adm){ machine->regA = machine->regY; manZeroNeg(machine, machine->regA); } -static void jmpDEY(machine_6502 *machine, AddrMode adm){ +static void jmpDEY(machine_6502 *machine, m6502_AddrMode adm){ if (machine->regY > 0) machine->regY--; else @@ -818,13 +825,13 @@ static void jmpDEY(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine, machine->regY); } -static void jmpINY(machine_6502 *machine, AddrMode adm){ +static void jmpINY(machine_6502 *machine, m6502_AddrMode adm){ Bit16 value = machine->regY + 1; machine->regY = value & 0xff; manZeroNeg(machine, machine->regY); } -static void jmpROR(machine_6502 *machine, AddrMode adm){ +static void jmpROR(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; Bit8 cf; BOOL isValue = getValue(machine, adm, &ptr); @@ -849,7 +856,7 @@ static void jmpROR(machine_6502 *machine, AddrMode adm){ } } -static void jmpROL(machine_6502 *machine, AddrMode adm){ +static void jmpROL(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; Bit8 cf; BOOL isValue = getValue(machine, adm, &ptr); @@ -874,12 +881,12 @@ static void jmpROL(machine_6502 *machine, AddrMode adm){ } } -static void jmpRTI(machine_6502 *machine, AddrMode adm){ +static void jmpRTI(machine_6502 *machine, m6502_AddrMode adm){ machine->regP = stackPop(machine); machine->regPC = stackPop(machine); } -static void jmpRTS(machine_6502 *machine, AddrMode adm){ +static void jmpRTS(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); Bit16 nr = stackPop(machine); @@ -888,7 +895,7 @@ static void jmpRTS(machine_6502 *machine, AddrMode adm){ machine->regPC = (nl << 8) | nr; } -static void jmpSBC(machine_6502 *machine, AddrMode adm){ +static void jmpSBC(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; /*Bit8 vflag;*/ Bit8 c = bitOn(machine->regP, CARRY_FL); @@ -944,48 +951,48 @@ static void jmpSBC(machine_6502 *machine, AddrMode adm){ manZeroNeg(machine,machine->regA); } -static void jmpSTA(machine_6502 *machine, AddrMode adm){ +static void jmpSTA(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); memStoreByte(machine,ptr.addr,machine->regA); } -static void jmpTXS(machine_6502 *machine, AddrMode adm){ +static void jmpTXS(machine_6502 *machine, m6502_AddrMode adm){ stackPush(machine,machine->regX); } -static void jmpTSX(machine_6502 *machine, AddrMode adm){ +static void jmpTSX(machine_6502 *machine, m6502_AddrMode adm){ machine->regX = stackPop(machine); manZeroNeg(machine, machine->regX); } -static void jmpPHA(machine_6502 *machine, AddrMode adm){ +static void jmpPHA(machine_6502 *machine, m6502_AddrMode adm){ stackPush(machine, machine->regA); } -static void jmpPLA(machine_6502 *machine, AddrMode adm){ +static void jmpPLA(machine_6502 *machine, m6502_AddrMode adm){ machine->regA = stackPop(machine); manZeroNeg(machine, machine->regA); } -static void jmpPHP(machine_6502 *machine, AddrMode adm){ +static void jmpPHP(machine_6502 *machine, m6502_AddrMode adm){ stackPush(machine,machine->regP); } -static void jmpPLP(machine_6502 *machine, AddrMode adm){ +static void jmpPLP(machine_6502 *machine, m6502_AddrMode adm){ machine->regP = stackPop(machine); machine->regP = setBit(machine->regP, FUTURE_FL, 1); } -static void jmpSTX(machine_6502 *machine, AddrMode adm){ +static void jmpSTX(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); memStoreByte(machine,ptr.addr,machine->regX); } -static void jmpSTY(machine_6502 *machine, AddrMode adm){ +static void jmpSTY(machine_6502 *machine, m6502_AddrMode adm){ Pointer ptr; BOOL isValue = getValue(machine, adm, &ptr); warnValue(isValue); @@ -995,7 +1002,7 @@ static void jmpSTY(machine_6502 *machine, AddrMode adm){ /* OPCODES */ -static void assignOpCodes(Opcodes *opcodes){ +static void assignOpCodes(m6502_Opcodes *opcodes){ #define SETOP(num, _name, _Imm, _ZP, _ZPX, _ZPY, _ABS, _ABSX, _ABSY, _INDX, _INDY, _SNGL, _BRA, _func) \ {opcodes[num].name[3] = '\0'; \ @@ -1117,7 +1124,7 @@ static void buildIndexCache(machine_6502 *machine){ /* opIndex() - Search the opcode table for a match. If found return the index into the optable and the address mode of the opcode. If the opcode is not found then return -1. */ -static int opIndex(machine_6502 *machine, Bit8 opcode, AddrMode *adm){ +static int opIndex(machine_6502 *machine, Bit8 opcode, m6502_AddrMode *adm){ /* XXX could catch errors by setting a addressmode of error or something */ *adm = machine->opcache[opcode].adm; return machine->opcache[opcode].index; @@ -1663,6 +1670,7 @@ static AsmLine *parseAssembly(machine_6502 *machine, BOOL *codeOk, const char *c return listp; } +#ifdef READ_FILES /* fileToBuffer() - Allocates a buffer and loads all of the file into memory. */ static char *fileToBuffer(const char *filename){ const int defaultSize = 1024; @@ -1695,6 +1703,7 @@ static char *fileToBuffer(const char *filename){ buffer[i+1] = '\0'; return buffer; } +#endif /* Routines */ @@ -1724,7 +1733,7 @@ static void reset(machine_6502 *machine){ } /* hexDump() - Dump the memory to output */ -void hexDump(machine_6502 *machine, Bit16 start, Bit16 numbytes, FILE *output){ +void m6502_hexDump(machine_6502 *machine, Bit16 start, Bit16 numbytes, FILE *output){ Bit32 address; Bit32 i; for( i = 0; i < numbytes; i++){ @@ -1756,7 +1765,7 @@ void hexDump(machine_6502 *machine, Bit16 start, Bit16 numbytes, FILE *output){ /* fclose(ofp); */ /* } */ -static BOOL translate(Opcodes *op,Param *param, machine_6502 *machine){ +static BOOL translate(m6502_Opcodes *op,Param *param, machine_6502 *machine){ switch(param->type){ case SINGLE: if (op->SNGL) @@ -1940,7 +1949,7 @@ static BOOL compileLine(AsmLine *asmline, void *args){ else{ int i; char *command = asmline->command; - Opcodes op; + m6502_Opcodes op; for(i = 0; i < NUM_OPCODES; i++){ if (strcmp(machine->opcodes[i].name, command) == 0){ op = machine->opcodes[i]; @@ -2069,7 +2078,7 @@ static BOOL compileCode(machine_6502 *machine, const char *code){ static void execute(machine_6502 *machine){ Bit8 opcode; - AddrMode adm; + m6502_AddrMode adm; int opidx; if(!machine->codeRunning) return; @@ -2090,7 +2099,7 @@ static void execute(machine_6502 *machine){ } } -machine_6502 *build6502(){ +machine_6502 *m6502_build(void){ machine_6502 *machine; machine = ecalloc(1, sizeof(machine_6502)); assignOpCodes(machine->opcodes); @@ -2099,14 +2108,14 @@ machine_6502 *build6502(){ return machine; } -void destroy6502(machine_6502 *machine){ +void m6502_destroy6502(machine_6502 *machine){ free(machine); machine = NULL; } -void trace(machine_6502 *machine, FILE *output){ +void m6502_trace(machine_6502 *machine, FILE *output){ Bit8 opcode = memReadByte(machine,machine->regPC); - AddrMode adm; + m6502_AddrMode adm; Pointer ptr; int opidx = opIndex(machine,opcode,&adm); int stacksz = STACK_TOP - machine->regSP; @@ -2132,15 +2141,16 @@ void trace(machine_6502 *machine, FILE *output){ fprintf(output,"\n"); } fprintf(output,"STACK:"); - hexDump(machine,(STACK_TOP - stacksz) + 1, stacksz, output); + m6502_hexDump(machine,(STACK_TOP - stacksz) + 1, stacksz, output); } +#if 0 void disassemble(machine_6502 *machine, FILE *output){ /* Read the opcode increment the program counter print the opcode loop until end of program. */ - AddrMode adm; + m6502_AddrMode adm; Bit16 addr; Bit8 opcode; int opidx; @@ -2161,9 +2171,11 @@ void disassemble(machine_6502 *machine, FILE *output){ free(mem); machine->regPC = opc; } +#endif -void eval_file(machine_6502 *machine, const char *filename, Plotter plot, void *plotterState){ +#ifdef READ_FILES +void m6502_eval_file(machine_6502 *machine, const char *filename, m6502_Plotter plot, void *plotterState){ char *code = NULL; machine->plot = plot; @@ -2186,7 +2198,7 @@ void eval_file(machine_6502 *machine, const char *filename, Plotter plot, void * }while(machine->codeRunning); } -void start_eval_file(machine_6502 *machine, const char *filename, Plotter plot, void *plotterState){ +void m6502_start_eval_file(machine_6502 *machine, const char *filename, m6502_Plotter plot, void *plotterState){ char *code = NULL; reset(machine); @@ -2203,9 +2215,10 @@ void start_eval_file(machine_6502 *machine, const char *filename, Plotter plot, machine->codeRunning = TRUE; execute(machine); } +#endif /* READ_FILES */ -void start_eval_string(machine_6502 *machine, const char *code, - Plotter plot, void *plotterState){ +void m6502_start_eval_string(machine_6502 *machine, const char *code, + m6502_Plotter plot, void *plotterState){ reset(machine); machine->plot = plot; @@ -2239,7 +2252,7 @@ void start_eval_string(machine_6502 *machine, const char *code, /* execute(machine); */ /* } */ -void next_eval(machine_6502 *machine, int insno){ +void m6502_next_eval(machine_6502 *machine, int insno){ int i = 0; for (i = 1; i < insno; i++){ if (machine->codeRunning){ diff --git a/hacks/asm6502.h b/hacks/asm6502.h index 6f64d218..79b13a2b 100644 --- a/hacks/asm6502.h +++ b/hacks/asm6502.h @@ -56,7 +56,7 @@ typedef enum{ ZERO, ZERO_X, ZERO_Y, ABS_VALUE, ABS_OR_BRANCH, ABS_X, ABS_Y, ABS_LABEL_X, ABS_LABEL_Y, DCB_PARAM -} AddrMode; +} m6502_AddrMode; typedef struct machine_6502 machine_6502; @@ -73,14 +73,14 @@ typedef struct { Bit8 INDY; Bit8 SNGL; Bit8 BRA; - void (*func) (machine_6502*, AddrMode); -} Opcodes; + void (*func) (machine_6502*, m6502_AddrMode); +} m6502_Opcodes; /* Used to cache the index of each opcode */ typedef struct { Bit8 index; - AddrMode adm; -} OpcodeIndex; + m6502_AddrMode adm; +} m6502_OpcodeIndex; /* Plotter is a function that will be called everytime a pixel needs to be updated. The first two parameter are the x and y @@ -108,7 +108,7 @@ typedef struct { parameter. You can use this parameter to store state information. */ -typedef void (*Plotter) (Bit8, Bit8, Bit8, void*); +typedef void (*m6502_Plotter) (Bit8, Bit8, Bit8, void*); struct machine_6502 { BOOL codeCompiledOK; @@ -124,54 +124,54 @@ struct machine_6502 { int labelPtr; BOOL codeRunning; int myInterval; - Opcodes opcodes[NUM_OPCODES]; + m6502_Opcodes opcodes[NUM_OPCODES]; int screen[32][32]; int codeLen; - OpcodeIndex opcache[0xff]; - Plotter plot; + m6502_OpcodeIndex opcache[0xff]; + m6502_Plotter plot; void *plotterState; }; /* build6502() - Creates an instance of the 6502 machine */ -machine_6502 *build6502(void); +machine_6502 *m6502_build(void); /* destroy6502() - compile the file and exectue it until the program is finished */ -void destroy6502(machine_6502 *machine); +void m6502_destroy6502(machine_6502 *machine); /* eval_file() - Compiles and runs a file until the program is finished */ -void eval_file(machine_6502 *machine, const char *filename, - Plotter plot, void *plotterState); +void m6502_eval_file(machine_6502 *machine, const char *filename, + m6502_Plotter plot, void *plotterState); /* start_eval_file() - Compile the file and execute the first instruction */ -void start_eval_file(machine_6502 *machine, const char *filename, - Plotter plot, void *plotterState); +void m6502_start_eval_file(machine_6502 *machine, const char *filename, + m6502_Plotter plot, void *plotterState); /* XXX -void start_eval_binary(machine_6502 *machine, Bit8 *program, +void m6502_start_eval_binary(machine_6502 *machine, Bit8 *program, unsigned int proglen, Plotter plot, void *plotterState); */ -void start_eval_string(machine_6502 *machine, const char *code, - Plotter plot, void *plotterState); +void m6502_start_eval_string(machine_6502 *machine, const char *code, + m6502_Plotter plot, void *plotterState); /* next_eval() - Execute the next insno of machine instructions */ -void next_eval(machine_6502 *machine, int insno); +void m6502_next_eval(machine_6502 *machine, int insno); /* hexDump() - Dumps memory to output */ -void hexDump(machine_6502 *machine, Bit16 start, +void m6502_hexDump(machine_6502 *machine, Bit16 start, Bit16 numbytes, FILE *output); /* Disassemble() - Prints the assembly code for the program currently loaded in memory.*/ -void disassemble(machine_6502 *machine, FILE *output); +void m6502_disassemble(machine_6502 *machine, FILE *output); /* trace() - Prints to output the current value of registers, the current nmemonic, memory address and value. */ -void trace(machine_6502 *machine, FILE *output); +void m6502_trace(machine_6502 *machine, FILE *output); /* save_program() - Writes a binary file of the program loaded in memory. */ diff --git a/hacks/barcode.c b/hacks/barcode.c index 7e15d0d4..d6592163 100644 --- a/hacks/barcode.c +++ b/hacks/barcode.c @@ -1898,6 +1898,9 @@ static void barcode_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->windowWidth = w; + st->windowHeight = h; } static void diff --git a/hacks/bouboule.c b/hacks/bouboule.c index 15bf2278..081ba485 100644 --- a/hacks/bouboule.c +++ b/hacks/bouboule.c @@ -87,7 +87,6 @@ static const char sccsid[] = "@(#)bouboule.c 4.00 97/01/01 xlockmore"; "*fpsSolid: true \n" # define SMOOTH_COLORS -# define reshape_bouboule 0 # define bouboule_handle_event 0 # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ @@ -838,6 +837,24 @@ release_bouboule(ModeInfo * mi) } } +ENTRYPOINT void +reshape_bouboule(ModeInfo * mi, int width, int height) +{ + StarField *sp = &starfield[MI_SCREEN(mi)]; + sp->width = width; + sp->height = height; + sininit(&sp->x, + sp->x.alpha, sp->x.step, + ((double) sp->width) / 4.0, + 3.0 * ((double) sp->width) / 4.0, + POSCANRAND); + sininit(&sp->y, + sp->y.alpha, sp->y.step, + ((double) sp->height) / 4.0, + 3.0 * ((double) sp->height) / 4.0, + POSCANRAND); +} + ENTRYPOINT void refresh_bouboule(ModeInfo * mi) { diff --git a/hacks/braid.c b/hacks/braid.c index 20eeed8a..9ba52c14 100644 --- a/hacks/braid.c +++ b/hacks/braid.c @@ -40,7 +40,6 @@ static const char sccsid[] = "@(#)braid.c 5.00 2000/11/01 xlockmore"; "*fpsSolid: true \n" \ # define UNIFORM_COLORS -# define reshape_braid 0 # define braid_handle_event 0 # include "xlockmore.h" # include "erase.h" @@ -447,6 +446,13 @@ draw_braid(ModeInfo * mi) } } +ENTRYPOINT void +reshape_braid(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_braid (mi); +} + ENTRYPOINT void release_braid(ModeInfo * mi) { diff --git a/hacks/bsod.c b/hacks/bsod.c index 5bfc225b..ce2e4969 100644 --- a/hacks/bsod.c +++ b/hacks/bsod.c @@ -2452,7 +2452,7 @@ hppa_linux (Display *dpy, Window window) { -1, "Soft power switch enabled, polling @ 0xf0400804.\n" }, { -1, "pty: 256 Unix98 ptys configured\n" }, { -1, "Generic RTC Driver v1.07\n" }, - { -1, "Serial: 8250/16550 driver $Revision: 1.96 $ 13 ports, " + { -1, "Serial: 8250/16550 driver $Revision: 1.97 $ 13 ports, " "IRQ sharing disabled\n" }, { -1, "ttyS0 at I/O 0x3f8 (irq = 0) is a 16550A\n" }, { -1, "ttyS1 at I/O 0x2f8 (irq = 0) is a 16550A\n" }, @@ -3922,6 +3922,8 @@ bsod_event (Display *dpy, Window window, void *closure, XEvent *event) /* pick a new mode and restart when mouse clicked, or certain keys typed. */ if (event->type == ButtonPress) + return True; + else if (event->type == ButtonRelease) reset_p = True; else if (event->type == KeyPress) { diff --git a/hacks/ccurve.c b/hacks/ccurve.c index 9e7e2de3..6f547bea 100644 --- a/hacks/ccurve.c +++ b/hacks/ccurve.c @@ -813,6 +813,14 @@ static void ccurve_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + XWindowAttributes xgwa; + st->width = w; + st->height = h; + XGetWindowAttributes (st->dpy, st->window, &xgwa); + XFreePixmap (dpy, st->pixmap); + st->pixmap = XCreatePixmap (st->dpy, st->window, st->width, st->height, + xgwa.depth); } static Bool diff --git a/hacks/check-configs.pl b/hacks/check-configs.pl index 231d8f7b..165af089 100755 --- a/hacks/check-configs.pl +++ b/hacks/check-configs.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright © 2008-2011 Jamie Zawinski +# Copyright © 2008-2012 Jamie Zawinski # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that @@ -19,7 +19,7 @@ use diagnostics; use strict; my $progname = $0; $progname =~ s@.*/@@g; -my $version = q{ $Revision: 1.4 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/; +my $version = q{ $Revision: 1.5 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/; my $verbose = 0; @@ -32,6 +32,12 @@ $xlockmore_default_opts .= "{\"-wireframe\", \".wireframe\", XrmoptionNoArg, \"true\"},\n" . "{\"-3d\", \".use3d\", XrmoptionNoArg, \"true\"},\n"; +my $analogtv_default_opts = ''; +foreach (qw(color tint brightness contrast)) { + $analogtv_default_opts .= "{\"-tv-$_\", \".TV$_\", XrmoptionSepArg, 0},\n"; +} + + # Returns two tables: # - A table of the default resource values. @@ -56,12 +62,13 @@ sub parse_src($) { close IN; $file =~ s@^.*/@@; + my $xlockmore_p = 0; + my $analogtv_p = ($body =~ m/ANALOGTV_DEFAULTS/); + $body =~ s@/\*.*?\*/@@gs; $body =~ s@^#\s*(if|ifdef|ifndef|elif|else|endif).*$@@gm; $body =~ s/ANALOGTV_(DEFAULTS|OPTIONS)//gs; - my $xlockmore_p = 0; - print STDERR "$progname: $file: defaults:\n" if ($verbose > 2); my %res_to_val; if ($body =~ m/_defaults\s*\[\]\s*=\s*{(.*?)}\s*;/s) { @@ -116,9 +123,11 @@ sub parse_src($) { $switch_to_res{-fps} = 'doFPS: true'; my ($ign, $opts) = ($body =~ m/(_options|\bopts)\s*\[\]\s*=\s*{(.*?)}\s*;/s); - if ($xlockmore_p || $opts) { + if ($xlockmore_p || $analogtv_p || $opts) { $opts = '' unless $opts; $opts .= ",\n$xlockmore_default_opts" if ($xlockmore_p); + $opts .= ",\n$analogtv_default_opts" if ($analogtv_p); + foreach (split (/,\s*\n/, $opts)) { s/^\s*//s; s/\s*$//s; @@ -277,7 +286,10 @@ sub check_config($) { error ("$saver: unparsable xml claim: $_") unless $compare; my $sval = $src_opts->{$res}; - if (!defined($sval)) { + if ($res =~ m/^TV/) { + print STDERR "$progname: $saver: OK: skipping \"$res\"\n" + if ($verbose > 1); + } elsif (!defined($sval)) { print STDERR "$progname: $saver: $res: not in source\n"; } elsif ($compare eq '!=' ? $sval eq $xval diff --git a/hacks/compass.c b/hacks/compass.c index 5b9ba499..415e7c0a 100644 --- a/hacks/compass.c +++ b/hacks/compass.c @@ -933,6 +933,11 @@ static void compass_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + XGetWindowAttributes (st->dpy, st->window, &st->xgwa); + st->size2 = MIN(st->xgwa.width, st->xgwa.height); + st->x = st->xgwa.width/2; + st->y = st->xgwa.height/2; } static Bool diff --git a/hacks/config/README b/hacks/config/README index 393addef..d1a1815a 100644 --- a/hacks/config/README +++ b/hacks/config/README @@ -4,8 +4,8 @@ a screen saver and locker for the X window system by Jamie Zawinski - version 5.17 - 22-Jun-2012 + version 5.18 + 03-Jul-2012 http://www.jwz.org/xscreensaver/ diff --git a/hacks/config/antspotlight.xml b/hacks/config/antspotlight.xml index 409fa39b..368d24a1 100644 --- a/hacks/config/antspotlight.xml +++ b/hacks/config/antspotlight.xml @@ -14,8 +14,7 @@ <_description> -Draws an ant (with a headlight) who walks on top of an -image of your desktop or other image. +Draws an ant (with a headlight) who walks around on top of a loaded image. Written by Blair Tennessy; 2003. diff --git a/hacks/config/boxfit.xml b/hacks/config/boxfit.xml index 19a1340a..a7d35bf9 100644 --- a/hacks/config/boxfit.xml +++ b/hacks/config/boxfit.xml @@ -45,11 +45,10 @@ <_description> -Packs the screen with growing squares or circles, colored according to a -horizontal or vertical gradient, or according to the colors of the -desktop or a loaded image file. The objects grow until they touch, -then stop. When the screen is full, they shrink away and the process -restarts. +Packs the screen with growing squares or circles, colored according to +a horizontal or vertical gradient, or according to the colors of a +loaded image. The objects grow until they touch, then stop. When the +screen is full, they shrink away and the process restarts. Written by Jamie Zawinski; 2005. diff --git a/hacks/config/bumps.xml b/hacks/config/bumps.xml index dc0c0f62..5c49021c 100644 --- a/hacks/config/bumps.xml +++ b/hacks/config/bumps.xml @@ -25,8 +25,7 @@ <_description> -A spotlight roams across an embossed version of your desktop or -other picture. +A spotlight roams across an embossed version of a loaded image. Written by Shane Smit; 1999. diff --git a/hacks/config/dnalogo.xml b/hacks/config/dnalogo.xml index 3694be53..9942905e 100644 --- a/hacks/config/dnalogo.xml +++ b/hacks/config/dnalogo.xml @@ -1,6 +1,6 @@ - + diff --git a/hacks/config/flipscreen3d.xml b/hacks/config/flipscreen3d.xml index 4d5ec3d0..662f8ff2 100644 --- a/hacks/config/flipscreen3d.xml +++ b/hacks/config/flipscreen3d.xml @@ -16,7 +16,7 @@ <_description> -Grabs an image of the desktop and spins and deforms it in 3D. +Spins and deforms an image. Written by Ben Buxton and Jamie Zawinski; 2001. diff --git a/hacks/config/gleidescope.xml b/hacks/config/gleidescope.xml index f9a4de44..025fec88 100644 --- a/hacks/config/gleidescope.xml +++ b/hacks/config/gleidescope.xml @@ -28,7 +28,7 @@ <_description> -A kaleidoscope that operates on your desktop image, or other pictures. +A kaleidoscope that operates on a loaded image. http://en.wikipedia.org/wiki/Kaleidoscope diff --git a/hacks/config/jigsaw.xml b/hacks/config/jigsaw.xml index e74396c9..6e665499 100644 --- a/hacks/config/jigsaw.xml +++ b/hacks/config/jigsaw.xml @@ -22,7 +22,7 @@ + low="50" high="300" default="100"/> @@ -37,8 +37,7 @@ <_description> -This grabs a screen image, carves it up into a jigsaw puzzle, -shuffles it, and then solves the puzzle. +This carves an image up into a jigsaw puzzle, shuffles it, and solves it. http://en.wikipedia.org/wiki/Jigsaw_puzzle http://en.wikipedia.org/wiki/Tessellation diff --git a/hacks/config/pedal.xml b/hacks/config/pedal.xml index eae2c850..6f084720 100644 --- a/hacks/config/pedal.xml +++ b/hacks/config/pedal.xml @@ -21,6 +21,9 @@ <_description> A demonstration of the even-odd winding rule. +http://en.wikipedia.org/wiki/Even-odd_rule +http://en.wikipedia.org/wiki/Nonzero-rule + Written by Dale Moore; 1995. diff --git a/hacks/config/pipes.xml b/hacks/config/pipes.xml index 946eb1d7..2fa82e23 100644 --- a/hacks/config/pipes.xml +++ b/hacks/config/pipes.xml @@ -24,14 +24,18 @@

- +
+ +
+ +
<_description> A growing plumbing system, with bolts and valves. diff --git a/hacks/config/ripples.xml b/hacks/config/ripples.xml index 7ea18c7a..9d750f3d 100644 --- a/hacks/config/ripples.xml +++ b/hacks/config/ripples.xml @@ -43,8 +43,8 @@ <_description> -This draws rippling interference patterns like splashing water, -overlayed on the desktop or an image. +Rippling interference patterns reminiscent of splashing water +distort a loaded image. Written by Tom Hammersley; 1999. diff --git a/hacks/config/rotzoomer.xml b/hacks/config/rotzoomer.xml index 86696699..c2d5d8c5 100644 --- a/hacks/config/rotzoomer.xml +++ b/hacks/config/rotzoomer.xml @@ -30,7 +30,7 @@ <_description> -Creates a collage of rotated and scaled portions of the screen. +Distorts an image by rotating and scaling random sections of it. Written by Claudio Matsuoka; 2001. diff --git a/hacks/config/sonar.xml b/hacks/config/sonar.xml index 2c006c76..21fcc28f 100644 --- a/hacks/config/sonar.xml +++ b/hacks/config/sonar.xml @@ -16,6 +16,8 @@ low="0.1" high="8.0" default="1.0"/> @@ -67,7 +74,8 @@ milliseconds respectively. Alternately, it can run a simulation that doesn't involve hosts. -(If pinging doesn't work, you may need to make the executable be setuid.) +(If pinging doesn't work on Linux, you may need to make the executable +be setuid.) http://en.wikipedia.org/wiki/Ping#History diff --git a/hacks/config/spotlight.xml b/hacks/config/spotlight.xml index e77480bd..8c283a39 100644 --- a/hacks/config/spotlight.xml +++ b/hacks/config/spotlight.xml @@ -22,8 +22,8 @@ <_description> -Draws a spotlight scanning across a black screen, illuminating the -underlying desktop (or a picture) when it passes. +A spotlight scanning across a black screen, illuminating a loaded +image when it passes. Written by Rick Schultz and Jamie Zawinski; 1999. diff --git a/hacks/coral.c b/hacks/coral.c index 7b4e4820..62df14cd 100644 --- a/hacks/coral.c +++ b/hacks/coral.c @@ -261,6 +261,8 @@ static void coral_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + init_coral(st); } static Bool diff --git a/hacks/crystal.c b/hacks/crystal.c index 491577a2..a1c501d8 100644 --- a/hacks/crystal.c +++ b/hacks/crystal.c @@ -76,7 +76,6 @@ static const char sccsid[] = "@(#)crystal.c 4.12 98/09/10 xlockmore"; "*ncolors: 100 \n" \ "*fpsSolid: true \n" \ -# define reshape_crystal 0 # define crystal_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* STANDALONE */ @@ -1270,4 +1269,11 @@ init_crystal(ModeInfo * mi) XSetFunction(display, cryst->gc, GXcopy); } +ENTRYPOINT void +reshape_crystal(ModeInfo * mi, int width, int height) +{ + release_crystal(mi); + init_crystal(mi); +} + XSCREENSAVER_MODULE ("Crystal", crystal) diff --git a/hacks/decayscreen.c b/hacks/decayscreen.c index cfb2a0a4..42f8149a 100644 --- a/hacks/decayscreen.c +++ b/hacks/decayscreen.c @@ -40,6 +40,9 @@ struct state { Display *dpy; Window window; + XWindowAttributes xgwa; + Pixmap saved; + int saved_w, saved_h; int sizex, sizey; int delay; @@ -79,6 +82,7 @@ decayscreen_load_image (struct state *st) st->sizex = xgwa.width; st->sizey = xgwa.height; if (st->img_loader) abort(); + st->img_loader = load_image_async_simple (0, xgwa.screen, st->window, st->window, 0, 0); } @@ -88,7 +92,6 @@ decayscreen_init (Display *dpy, Window window) { struct state *st = (struct state *) calloc (1, sizeof(*st)); XGCValues gcv; - XWindowAttributes xgwa; long gcflags; unsigned long bg; char *s; @@ -125,15 +128,15 @@ decayscreen_init (Display *dpy, Window window) st->duration = get_integer_resource (st->dpy, "duration", "Seconds"); if (st->duration < 1) st->duration = 1; - XGetWindowAttributes (st->dpy, st->window, &xgwa); + XGetWindowAttributes (st->dpy, st->window, &st->xgwa); gcv.function = GXcopy; gcv.subwindow_mode = IncludeInferiors; - bg = get_pixel_resource (st->dpy, xgwa.colormap, "background", "Background"); + bg = get_pixel_resource (st->dpy, st->xgwa.colormap, "background", "Background"); gcv.foreground = bg; gcflags = GCForeground | GCFunction; - if (use_subwindow_mode_p(xgwa.screen, st->window)) /* see grabscreen.c */ + if (use_subwindow_mode_p(st->xgwa.screen, st->window)) /* see grabscreen.c */ gcflags |= GCSubwindowMode; st->gc = XCreateGC (st->dpy, st->window, gcflags, &gcv); @@ -181,6 +184,16 @@ decayscreen_draw (Display *dpy, Window window, void *closure) if (st->mode == MELT || st->mode == STRETCH) /* make sure screen eventually turns background color */ XDrawLine (st->dpy, st->window, st->gc, 0, 0, st->sizex, 0); + + if (!st->saved) { + st->saved = XCreatePixmap (st->dpy, st->window, + st->sizex, st->sizey, + st->xgwa.depth); + st->saved_w = st->sizex; + st->saved_h = st->sizey; + } + XCopyArea (st->dpy, st->window, st->saved, st->gc, 0, 0, + st->sizex, st->sizey, 0, 0); } return st->delay; } @@ -316,6 +329,11 @@ decayscreen_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { struct state *st = (struct state *) closure; + XClearWindow (st->dpy, st->window); + XCopyArea (st->dpy, st->saved, st->window, st->gc, + 0, 0, st->saved_w, st->saved_h, + (w - st->saved_w) / 2, + (h - st->saved_h) / 2); st->sizex = w; st->sizey = h; } diff --git a/hacks/demon.c b/hacks/demon.c index ab7a19b9..3d35dca5 100644 --- a/hacks/demon.c +++ b/hacks/demon.c @@ -59,7 +59,6 @@ static const char sccsid[] = "@(#)demon.c 5.00 2000/11/01 xlockmore"; "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ -# define reshape_demon 0 # define demon_handle_event 0 # define UNIFORM_COLORS # include "xlockmore.h" /* in xscreensaver distribution */ @@ -947,6 +946,14 @@ draw_demon (ModeInfo * mi) } +ENTRYPOINT void +reshape_demon(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_demon (mi); +} + + ENTRYPOINT void release_demon (ModeInfo * mi) { diff --git a/hacks/discrete.c b/hacks/discrete.c index 34c17671..1746f726 100644 --- a/hacks/discrete.c +++ b/hacks/discrete.c @@ -40,7 +40,6 @@ static const char sccsid[] = "@(#)discrete.c 5.00 2000/11/01 xlockmore"; "*fpsSolid: true \n" \ # define SMOOTH_COLORS -# define reshape_discrete 0 # define discrete_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ # include "erase.h" @@ -423,6 +422,15 @@ draw_discrete (ModeInfo * mi) } +ENTRYPOINT void +reshape_discrete(ModeInfo * mi, int width, int height) +{ + discretestruct *hp = &discretes[MI_SCREEN(mi)]; + hp->maxx = width; + hp->maxy = height; + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); +} + ENTRYPOINT void release_discrete(ModeInfo * mi) { diff --git a/hacks/distort.c b/hacks/distort.c index 4e4c809e..92cc0de3 100644 --- a/hacks/distort.c +++ b/hacks/distort.c @@ -781,6 +781,12 @@ static void distort_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + XGetWindowAttributes (st->dpy, st->window, &st->xgwa); + /* XClearWindow (dpy, window); */ + /* Why doesn't this work? */ + XPutImage (st->dpy, st->window, st->gc, st->orig_map, + 0, 0, st->orig_map->width, st->orig_map->height, 0, 0); } static Bool diff --git a/hacks/drift.c b/hacks/drift.c index 56e89b0a..711bc09e 100644 --- a/hacks/drift.c +++ b/hacks/drift.c @@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)drift.c 5.00 2000/11/01 xlockmore"; "*fpsSolid: true \n" \ # define SMOOTH_COLORS -# define reshape_drift 0 # define drift_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ # include "erase.h" @@ -684,6 +683,13 @@ release_drift(ModeInfo * mi) } } +ENTRYPOINT void +reshape_drift(ModeInfo * mi, int width, int height) +{ + MI_CLEARWINDOW(mi); + init_drift (mi); +} + ENTRYPOINT void refresh_drift(ModeInfo * mi) { diff --git a/hacks/eruption.c b/hacks/eruption.c index 03b9645e..5749aa6d 100644 --- a/hacks/eruption.c +++ b/hacks/eruption.c @@ -449,6 +449,21 @@ static void eruption_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { +#if 0 + struct state *st = (struct state *) closure; + int i; + for (i = 0; i < st->iWinHeight; ++i) + free (st->fire[i]); + + st->iWinWidth = w; + st->iWinHeight = h; + + free (st->fire); + st->fire = calloc( st->iWinHeight, sizeof(unsigned char*)); + for (i = 0; i < st->iWinHeight; ++i) + st->fire[i] = calloc( st->iWinWidth, sizeof(unsigned char)); + st->draw_i = -1; +#endif } static Bool diff --git a/hacks/euler2d.c b/hacks/euler2d.c index bb3054d1..2a3700bf 100644 --- a/hacks/euler2d.c +++ b/hacks/euler2d.c @@ -48,7 +48,6 @@ static const char sccsid[] = "@(#)euler2d.c 5.00 2000/11/01 xlockmore"; "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ -# define reshape_euler2d 0 # define euler2d_handle_event 0 # define SMOOTH_COLORS # include "xlockmore.h" /* in xscreensaver distribution */ @@ -857,6 +856,13 @@ draw_euler2d (ModeInfo * mi) } +ENTRYPOINT void +reshape_euler2d(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_euler2d (mi); +} + ENTRYPOINT void release_euler2d (ModeInfo * mi) { diff --git a/hacks/fadeplot.c b/hacks/fadeplot.c index babec31c..9fa65f8f 100644 --- a/hacks/fadeplot.c +++ b/hacks/fadeplot.c @@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)fadeplot.c 5.00 2000/11/01 xlockmore"; # define BRIGHT_COLORS # define UNIFORM_COLORS -# define reshape_fadeplot 0 # define fadeplot_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* STANDALONE */ @@ -212,10 +211,20 @@ draw_fadeplot (ModeInfo * mi) } } +ENTRYPOINT void +reshape_fadeplot(ModeInfo * mi, int width, int height) +{ + fadeplotstruct *fp = &fadeplots[MI_SCREEN(mi)]; + fp->width = width; + fp->height = height; + fp->min = MAX(MIN(fp->width, fp->height) / 2, 1); + fp->factor.x = MAX(fp->width / (2 * fp->min), 1); + fp->factor.y = MAX(fp->height / (2 * fp->min), 1); +} + ENTRYPOINT void refresh_fadeplot (ModeInfo * mi) { - MI_CLEARWINDOW(mi); } ENTRYPOINT void diff --git a/hacks/flag.c b/hacks/flag.c index 1cd68094..351ca000 100644 --- a/hacks/flag.c +++ b/hacks/flag.c @@ -268,7 +268,7 @@ make_flag_bits(ModeInfo *mi) # if defined(_AIX) sprintf(text, "%s\n%s %s.%s", uts.nodename, uts.sysname, uts.version, uts.release); -# elif defined(__APPLE__) /* MacOS X + XDarwin */ +# elif defined(__APPLE__) && !defined(USE_IPHONE) /* MacOS X + XDarwin */ { const char *file = "/System/Library/CoreServices/SystemVersion.plist"; diff --git a/hacks/flame.c b/hacks/flame.c index 46570ea9..eed6287c 100644 --- a/hacks/flame.c +++ b/hacks/flame.c @@ -434,6 +434,9 @@ static void flame_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->width = w; + st->height = h; } static Bool diff --git a/hacks/flow.c b/hacks/flow.c index a2c81991..794776f1 100644 --- a/hacks/flow.c +++ b/hacks/flow.c @@ -104,7 +104,6 @@ static const char sccsid[] = "@(#)flow.c 5.00 2000/11/01 xlockmore"; "*cycles: 10000 \n" \ "*ncolors: 200 \n" -# define reshape_flow 0 # define flow_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* STANDALONE */ @@ -1201,6 +1200,13 @@ draw_flow (ModeInfo * mi) } } +ENTRYPOINT void +reshape_flow(ModeInfo * mi, int width, int height) +{ + init_flow (mi); +} + + ENTRYPOINT void release_flow (ModeInfo * mi) { diff --git a/hacks/galaxy.c b/hacks/galaxy.c index 6a72738e..43a0b5bf 100644 --- a/hacks/galaxy.c +++ b/hacks/galaxy.c @@ -47,7 +47,6 @@ static const char sccsid[] = "@(#)galaxy.c 4.04 97/07/28 xlockmore"; "*fpsSolid: true \n" \ # define UNIFORM_COLORS -# define reshape_galaxy 0 # define galaxy_handle_event 0 # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ @@ -440,6 +439,13 @@ draw_galaxy(ModeInfo * mi) startover(mi); } +ENTRYPOINT void +reshape_galaxy(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_galaxy (mi); +} + ENTRYPOINT void release_galaxy(ModeInfo * mi) { diff --git a/hacks/glx/Makefile.in b/hacks/glx/Makefile.in index 36a0bb18..9f256641 100644 --- a/hacks/glx/Makefile.in +++ b/hacks/glx/Makefile.in @@ -203,7 +203,7 @@ HDRS = atlantis.h bubble3d.h buildlwo.h e_textures.h xpm-ximage.h \ texfont.h tangram_shapes.h sproingies.h extrusion.h \ glschool.h glschool_gl.h glschool_alg.h topblock.h \ involute.h teapot.h sonar.h dropshadow.h starwars.h \ - jwzgles.h jwzglesI.h + jwzgles.h jwzglesI.h teapot2.h dnapizza.h GL_MEN = atlantis.man boxed.man bubble3d.man cage.man circuit.man \ cubenetic.man dangerball.man engine.man extrusion.man \ flipscreen3d.man gears.man gflux.man \ @@ -525,9 +525,9 @@ MOEBIUS_OBJS=sphere.o tube.o xpm-ximage.o $(HACK_TRACK_OBJS) moebius: moebius.o $(MOEBIUS_OBJS) $(CC_HACK) -o $@ $@.o $(MOEBIUS_OBJS) $(HACK_LIBS) $(XPM_LIBS) -PIPE_OBJS=pipeobjs.o buildlwo.o sphere.o teapot.o -pipes: pipes.o $(PIPE_OBJS) $(HACK_OBJS) - $(CC_HACK) -o $@ $@.o $(PIPE_OBJS) $(HACK_OBJS) $(HACK_LIBS) +PIPE_OBJS=pipeobjs.o buildlwo.o sphere.o teapot.o normals.o +pipes: pipes.o $(PIPE_OBJS) $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(PIPE_OBJS) $(HACK_TRACK_OBJS) $(HACK_LIBS) superquadrics: superquadrics.o $(HACK_OBJS) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) @@ -535,8 +535,8 @@ superquadrics: superquadrics.o $(HACK_OBJS) morph3d: morph3d.o $(HACK_OBJS) $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) -rubik: rubik.o $(HACK_OBJS) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) +rubik: rubik.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) stairs: stairs.o sphere.o xpm-ximage.o $(HACK_TRACK_OBJS) $(CC_HACK) -o $@ $@.o sphere.o xpm-ximage.o $(HACK_TRACK_OBJS) \ @@ -580,7 +580,8 @@ SW_OBJS=starwars.o glut_stroke.o glut_swidth.o \ starwars: $(SW_OBJS) $(CC_HACK) -o $@ $(SW_OBJS) $(HACK_LIBS) $(TEXT_LIBS) -GLT_OBJS=gltext.o glut_stroke.o glut_swidth.o tube.o $(TEXT) $(HACK_TRACK_OBJS) +GLT_OBJS=gltext.o glut_stroke.o glut_swidth.o tube.o sphere.o \ + $(TEXT) $(HACK_TRACK_OBJS) gltext: $(GLT_OBJS) $(CC_HACK) -o $@ $(GLT_OBJS) $(HACK_LIBS) $(TEXT_LIBS) @@ -746,8 +747,8 @@ crackberg: crackberg.o $(HACK_OBJS) glhanoi: glhanoi.o $(HACK_TRACK_OBJS) $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) -cube21: cube21.o $(HACK_OBJS) - $(CC_HACK) -o $@ $@.o $(HACK_OBJS) $(HACK_LIBS) +cube21: cube21.o $(HACK_TRACK_OBJS) + $(CC_HACK) -o $@ $@.o $(HACK_TRACK_OBJS) $(HACK_LIBS) TIMETUNNEL_OBJS = xpm-ximage.o $(HACK_TRACK_OBJS) timetunnel: timetunnel.o $(TIMETUNNEL_OBJS) @@ -791,7 +792,8 @@ SONAR_OBJS=sonar-sim.o sonar-icmp.o ${FONT_OBJS} $(HACK_TRACK_OBJS) sonar: sonar.o $(SONAR_OBJS) $(CC_HACK) -o $@ $@.o $(SONAR_OBJS) $(HACK_LIBS) -JIGSAW_OBJS=normals.o $(UTILS_BIN)/spline.o $(HACK_TRACK_GRAB_OBJS) +JIGSAW_OBJS=normals.o $(UTILS_BIN)/spline.o \ + ${FONT_OBJS} $(HACK_TRACK_GRAB_OBJS) jigsaw: jigsaw.o $(JIGSAW_OBJS) $(CC_HACK) -o $@ $@.o $(JIGSAW_OBJS) $(HACK_LIBS) @@ -823,8 +825,10 @@ tronbit: $(TBIT_OBJS) antinspect.o: ../../config.h antinspect.o: $(HACK_SRC)/fps.h antinspect.o: $(srcdir)/gltrackball.h +antinspect.o: $(srcdir)/jwzglesI.h antinspect.o: $(srcdir)/jwzgles.h antinspect.o: $(HACK_SRC)/screenhackI.h +antinspect.o: $(srcdir)/sphere.h antinspect.o: $(UTILS_SRC)/colors.h antinspect.o: $(UTILS_SRC)/grabscreen.h antinspect.o: $(UTILS_SRC)/hsv.h @@ -839,9 +843,12 @@ antmaze.o: $(srcdir)/ants.h antmaze.o: ../../config.h antmaze.o: $(HACK_SRC)/fps.h antmaze.o: $(srcdir)/gltrackball.h +antmaze.o: $(srcdir)/jwzglesI.h antmaze.o: $(srcdir)/jwzgles.h antmaze.o: $(srcdir)/rotator.h antmaze.o: $(HACK_SRC)/screenhackI.h +antmaze.o: $(srcdir)/sphere.h +antmaze.o: $(srcdir)/tube.h antmaze.o: $(UTILS_SRC)/colors.h antmaze.o: $(UTILS_SRC)/grabscreen.h antmaze.o: $(UTILS_SRC)/hsv.h @@ -857,9 +864,12 @@ antspotlight.o: ../../config.h antspotlight.o: $(HACK_SRC)/fps.h antspotlight.o: $(srcdir)/gltrackball.h antspotlight.o: $(srcdir)/grab-ximage.h +antspotlight.o: $(srcdir)/jwzglesI.h antspotlight.o: $(srcdir)/jwzgles.h antspotlight.o: $(srcdir)/rotator.h antspotlight.o: $(HACK_SRC)/screenhackI.h +antspotlight.o: $(srcdir)/sphere.h +antspotlight.o: $(srcdir)/tube.h antspotlight.o: $(UTILS_SRC)/colors.h antspotlight.o: $(UTILS_SRC)/grabscreen.h antspotlight.o: $(UTILS_SRC)/hsv.h @@ -874,6 +884,7 @@ atlantis.o: $(srcdir)/atlantis.h atlantis.o: ../../config.h atlantis.o: $(HACK_SRC)/fps.h atlantis.o: $(HACK_SRC)/images/sea-texture.xpm +atlantis.o: $(srcdir)/jwzglesI.h atlantis.o: $(srcdir)/jwzgles.h atlantis.o: $(HACK_SRC)/screenhackI.h atlantis.o: $(UTILS_SRC)/colors.h @@ -895,6 +906,7 @@ atunnel.o: $(HACK_SRC)/images/tunnel2.xpm atunnel.o: $(HACK_SRC)/images/tunnel3.xpm atunnel.o: $(HACK_SRC)/images/tunnel4.xpm atunnel.o: $(HACK_SRC)/images/tunnel5.xpm +atunnel.o: $(srcdir)/jwzglesI.h atunnel.o: $(srcdir)/jwzgles.h atunnel.o: $(HACK_SRC)/screenhackI.h atunnel.o: $(srcdir)/tunnel_draw.h @@ -912,6 +924,7 @@ atunnel.o: $(srcdir)/xpm-ximage.h b_draw.o: $(srcdir)/bubble3d.h b_draw.o: ../../config.h b_draw.o: $(HACK_SRC)/fps.h +b_draw.o: $(srcdir)/jwzglesI.h b_draw.o: $(srcdir)/jwzgles.h b_draw.o: $(HACK_SRC)/screenhackI.h b_draw.o: $(UTILS_SRC)/colors.h @@ -925,6 +938,7 @@ b_draw.o: $(UTILS_SRC)/yarandom.h b_draw.o: $(HACK_SRC)/xlockmoreI.h blinkbox.o: ../../config.h blinkbox.o: $(HACK_SRC)/fps.h +blinkbox.o: $(srcdir)/jwzglesI.h blinkbox.o: $(srcdir)/jwzgles.h blinkbox.o: $(HACK_SRC)/screenhackI.h blinkbox.o: $(srcdir)/sphere.h @@ -941,6 +955,7 @@ blinkbox.o: $(HACK_SRC)/xlockmore.h b_lockglue.o: $(srcdir)/bubble3d.h b_lockglue.o: ../../config.h b_lockglue.o: $(HACK_SRC)/fps.h +b_lockglue.o: $(srcdir)/jwzglesI.h b_lockglue.o: $(srcdir)/jwzgles.h b_lockglue.o: $(HACK_SRC)/screenhackI.h b_lockglue.o: $(UTILS_SRC)/colors.h @@ -956,6 +971,7 @@ b_lockglue.o: $(HACK_SRC)/xlockmore.h blocktube.o: ../../config.h blocktube.o: $(HACK_SRC)/fps.h blocktube.o: $(HACK_SRC)/images/blocktube.xpm +blocktube.o: $(srcdir)/jwzglesI.h blocktube.o: $(srcdir)/jwzgles.h blocktube.o: $(HACK_SRC)/screenhackI.h blocktube.o: $(UTILS_SRC)/colors.h @@ -972,6 +988,7 @@ blocktube.o: $(srcdir)/xpm-ximage.h boing.o: ../../config.h boing.o: $(HACK_SRC)/fps.h boing.o: $(srcdir)/gltrackball.h +boing.o: $(srcdir)/jwzglesI.h boing.o: $(srcdir)/jwzgles.h boing.o: $(HACK_SRC)/screenhackI.h boing.o: $(UTILS_SRC)/colors.h @@ -988,6 +1005,7 @@ bouncingcow.o: ../../config.h bouncingcow.o: $(HACK_SRC)/fps.h bouncingcow.o: $(srcdir)/gllist.h bouncingcow.o: $(srcdir)/gltrackball.h +bouncingcow.o: $(srcdir)/jwzglesI.h bouncingcow.o: $(srcdir)/jwzgles.h bouncingcow.o: $(srcdir)/rotator.h bouncingcow.o: $(HACK_SRC)/screenhackI.h @@ -1005,6 +1023,7 @@ bouncingcow.o: $(srcdir)/xpm-ximage.h boxed.o: $(srcdir)/boxed.h boxed.o: ../../config.h boxed.o: $(HACK_SRC)/fps.h +boxed.o: $(srcdir)/jwzglesI.h boxed.o: $(srcdir)/jwzgles.h boxed.o: $(HACK_SRC)/screenhackI.h boxed.o: $(UTILS_SRC)/colors.h @@ -1020,6 +1039,7 @@ boxed.o: $(HACK_SRC)/xlockmore.h b_sphere.o: $(srcdir)/bubble3d.h b_sphere.o: ../../config.h b_sphere.o: $(HACK_SRC)/fps.h +b_sphere.o: $(srcdir)/jwzglesI.h b_sphere.o: $(srcdir)/jwzgles.h b_sphere.o: $(HACK_SRC)/screenhackI.h b_sphere.o: $(UTILS_SRC)/colors.h @@ -1034,6 +1054,7 @@ b_sphere.o: $(HACK_SRC)/xlockmoreI.h bubble3d.o: $(srcdir)/bubble3d.h bubble3d.o: ../../config.h bubble3d.o: $(HACK_SRC)/fps.h +bubble3d.o: $(srcdir)/jwzglesI.h bubble3d.o: $(srcdir)/jwzgles.h bubble3d.o: $(HACK_SRC)/screenhackI.h bubble3d.o: $(UTILS_SRC)/colors.h @@ -1046,9 +1067,13 @@ bubble3d.o: $(UTILS_SRC)/xshm.h bubble3d.o: $(UTILS_SRC)/yarandom.h bubble3d.o: $(HACK_SRC)/xlockmoreI.h buildlwo.o: $(srcdir)/buildlwo.h +buildlwo.o: ../../config.h +buildlwo.o: $(srcdir)/jwzglesI.h +buildlwo.o: $(srcdir)/jwzgles.h cage.o: ../../config.h -cage.o: $(srcdir)/e_textures.h cage.o: $(HACK_SRC)/fps.h +cage.o: $(HACK_SRC)/images/wood.xpm +cage.o: $(srcdir)/jwzglesI.h cage.o: $(srcdir)/jwzgles.h cage.o: $(HACK_SRC)/screenhackI.h cage.o: $(UTILS_SRC)/colors.h @@ -1061,10 +1086,12 @@ cage.o: $(UTILS_SRC)/xshm.h cage.o: $(UTILS_SRC)/yarandom.h cage.o: $(HACK_SRC)/xlockmoreI.h cage.o: $(HACK_SRC)/xlockmore.h +cage.o: $(srcdir)/xpm-ximage.h carousel.o: ../../config.h carousel.o: $(HACK_SRC)/fps.h carousel.o: $(srcdir)/gltrackball.h carousel.o: $(srcdir)/grab-ximage.h +carousel.o: $(srcdir)/jwzglesI.h carousel.o: $(srcdir)/jwzgles.h carousel.o: $(srcdir)/rotator.h carousel.o: $(HACK_SRC)/screenhackI.h @@ -1080,9 +1107,13 @@ carousel.o: $(UTILS_SRC)/yarandom.h carousel.o: $(HACK_SRC)/xlockmoreI.h carousel.o: $(HACK_SRC)/xlockmore.h chessmodels.o: $(srcdir)/chessmodels.h +chessmodels.o: ../../config.h +chessmodels.o: $(srcdir)/jwzglesI.h +chessmodels.o: $(srcdir)/jwzgles.h circuit.o: ../../config.h circuit.o: $(srcdir)/font-ximage.h circuit.o: $(HACK_SRC)/fps.h +circuit.o: $(srcdir)/jwzglesI.h circuit.o: $(srcdir)/jwzgles.h circuit.o: $(HACK_SRC)/screenhackI.h circuit.o: $(UTILS_SRC)/colors.h @@ -1095,12 +1126,19 @@ circuit.o: $(UTILS_SRC)/xshm.h circuit.o: $(UTILS_SRC)/yarandom.h circuit.o: $(HACK_SRC)/xlockmoreI.h circuit.o: $(HACK_SRC)/xlockmore.h +companion_disc.o: ../../config.h companion_disc.o: $(srcdir)/gllist.h +companion_disc.o: $(srcdir)/jwzglesI.h +companion_disc.o: $(srcdir)/jwzgles.h +companion_heart.o: ../../config.h companion_heart.o: $(srcdir)/gllist.h +companion_heart.o: $(srcdir)/jwzglesI.h +companion_heart.o: $(srcdir)/jwzgles.h companion.o: ../../config.h companion.o: $(HACK_SRC)/fps.h companion.o: $(srcdir)/gllist.h companion.o: $(srcdir)/gltrackball.h +companion.o: $(srcdir)/jwzglesI.h companion.o: $(srcdir)/jwzgles.h companion.o: $(srcdir)/rotator.h companion.o: $(HACK_SRC)/screenhackI.h @@ -1115,15 +1153,37 @@ companion.o: $(UTILS_SRC)/yarandom.h companion.o: $(HACK_SRC)/xlockmoreI.h companion.o: $(HACK_SRC)/xlockmore.h companion.o: $(srcdir)/xpm-ximage.h +companion_quad.o: ../../config.h companion_quad.o: $(srcdir)/gllist.h +companion_quad.o: $(srcdir)/jwzglesI.h +companion_quad.o: $(srcdir)/jwzgles.h +cow_face.o: ../../config.h cow_face.o: $(srcdir)/gllist.h +cow_face.o: $(srcdir)/jwzglesI.h +cow_face.o: $(srcdir)/jwzgles.h +cow_hide.o: ../../config.h cow_hide.o: $(srcdir)/gllist.h +cow_hide.o: $(srcdir)/jwzglesI.h +cow_hide.o: $(srcdir)/jwzgles.h +cow_hoofs.o: ../../config.h cow_hoofs.o: $(srcdir)/gllist.h +cow_hoofs.o: $(srcdir)/jwzglesI.h +cow_hoofs.o: $(srcdir)/jwzgles.h +cow_horns.o: ../../config.h cow_horns.o: $(srcdir)/gllist.h +cow_horns.o: $(srcdir)/jwzglesI.h +cow_horns.o: $(srcdir)/jwzgles.h +cow_tail.o: ../../config.h cow_tail.o: $(srcdir)/gllist.h +cow_tail.o: $(srcdir)/jwzglesI.h +cow_tail.o: $(srcdir)/jwzgles.h +cow_udder.o: ../../config.h cow_udder.o: $(srcdir)/gllist.h +cow_udder.o: $(srcdir)/jwzglesI.h +cow_udder.o: $(srcdir)/jwzgles.h crackberg.o: ../../config.h crackberg.o: $(HACK_SRC)/fps.h +crackberg.o: $(srcdir)/jwzglesI.h crackberg.o: $(srcdir)/jwzgles.h crackberg.o: $(HACK_SRC)/screenhackI.h crackberg.o: $(UTILS_SRC)/colors.h @@ -1138,6 +1198,8 @@ crackberg.o: $(HACK_SRC)/xlockmoreI.h crackberg.o: $(HACK_SRC)/xlockmore.h cube21.o: ../../config.h cube21.o: $(HACK_SRC)/fps.h +cube21.o: $(srcdir)/gltrackball.h +cube21.o: $(srcdir)/jwzglesI.h cube21.o: $(srcdir)/jwzgles.h cube21.o: $(HACK_SRC)/screenhackI.h cube21.o: $(UTILS_SRC)/colors.h @@ -1153,6 +1215,7 @@ cube21.o: $(HACK_SRC)/xlockmore.h cubenetic.o: ../../config.h cubenetic.o: $(HACK_SRC)/fps.h cubenetic.o: $(srcdir)/gltrackball.h +cubenetic.o: $(srcdir)/jwzglesI.h cubenetic.o: $(srcdir)/jwzgles.h cubenetic.o: $(srcdir)/rotator.h cubenetic.o: $(HACK_SRC)/screenhackI.h @@ -1169,6 +1232,7 @@ cubenetic.o: $(HACK_SRC)/xlockmore.h cubestorm.o: ../../config.h cubestorm.o: $(HACK_SRC)/fps.h cubestorm.o: $(srcdir)/gltrackball.h +cubestorm.o: $(srcdir)/jwzglesI.h cubestorm.o: $(srcdir)/jwzgles.h cubestorm.o: $(srcdir)/rotator.h cubestorm.o: $(HACK_SRC)/screenhackI.h @@ -1185,6 +1249,7 @@ cubestorm.o: $(HACK_SRC)/xlockmore.h cubicgrid.o: ../../config.h cubicgrid.o: $(HACK_SRC)/fps.h cubicgrid.o: $(srcdir)/gltrackball.h +cubicgrid.o: $(srcdir)/jwzglesI.h cubicgrid.o: $(srcdir)/jwzgles.h cubicgrid.o: $(srcdir)/rotator.h cubicgrid.o: $(HACK_SRC)/screenhackI.h @@ -1201,6 +1266,7 @@ cubicgrid.o: $(HACK_SRC)/xlockmore.h dangerball.o: ../../config.h dangerball.o: $(HACK_SRC)/fps.h dangerball.o: $(srcdir)/gltrackball.h +dangerball.o: $(srcdir)/jwzglesI.h dangerball.o: $(srcdir)/jwzgles.h dangerball.o: $(srcdir)/rotator.h dangerball.o: $(HACK_SRC)/screenhackI.h @@ -1217,8 +1283,10 @@ dangerball.o: $(UTILS_SRC)/yarandom.h dangerball.o: $(HACK_SRC)/xlockmoreI.h dangerball.o: $(HACK_SRC)/xlockmore.h dnalogo.o: ../../config.h +dnalogo.o: $(srcdir)/dnapizza.h dnalogo.o: $(HACK_SRC)/fps.h dnalogo.o: $(srcdir)/gltrackball.h +dnalogo.o: $(srcdir)/jwzglesI.h dnalogo.o: $(srcdir)/jwzgles.h dnalogo.o: $(srcdir)/normals.h dnalogo.o: $(srcdir)/rotator.h @@ -1237,6 +1305,8 @@ dnalogo.o: $(HACK_SRC)/xlockmore.h dolphin.o: $(srcdir)/atlantis.h dolphin.o: ../../config.h dolphin.o: $(HACK_SRC)/fps.h +dolphin.o: $(srcdir)/jwzglesI.h +dolphin.o: $(srcdir)/jwzgles.h dolphin.o: $(HACK_SRC)/screenhackI.h dolphin.o: $(UTILS_SRC)/colors.h dolphin.o: $(UTILS_SRC)/grabscreen.h @@ -1245,12 +1315,16 @@ dolphin.o: $(UTILS_SRC)/resources.h dolphin.o: $(UTILS_SRC)/usleep.h dolphin.o: $(UTILS_SRC)/visual.h dolphin.o: $(UTILS_SRC)/yarandom.h +dropshadow.o: ../../config.h dropshadow.o: $(srcdir)/dropshadow.h +dropshadow.o: $(srcdir)/jwzglesI.h +dropshadow.o: $(srcdir)/jwzgles.h endgame.o: $(srcdir)/chessgames.h endgame.o: $(srcdir)/chessmodels.h endgame.o: ../../config.h endgame.o: $(HACK_SRC)/fps.h endgame.o: $(srcdir)/gltrackball.h +endgame.o: $(srcdir)/jwzglesI.h endgame.o: $(srcdir)/jwzgles.h endgame.o: $(HACK_SRC)/screenhackI.h endgame.o: $(UTILS_SRC)/colors.h @@ -1267,9 +1341,11 @@ engine.o: ../../config.h engine.o: $(HACK_SRC)/fps.h engine.o: $(srcdir)/gltrackball.h engine.o: $(srcdir)/glxfonts.h +engine.o: $(srcdir)/jwzglesI.h engine.o: $(srcdir)/jwzgles.h engine.o: $(srcdir)/rotator.h engine.o: $(HACK_SRC)/screenhackI.h +engine.o: $(srcdir)/texfont.h engine.o: $(UTILS_SRC)/colors.h engine.o: $(UTILS_SRC)/grabscreen.h engine.o: $(UTILS_SRC)/hsv.h @@ -1282,16 +1358,25 @@ engine.o: $(HACK_SRC)/xlockmoreI.h engine.o: $(HACK_SRC)/xlockmore.h extrusion-helix2.o: ../../config.h extrusion-helix2.o: $(srcdir)/extrusion.h +extrusion-helix2.o: $(srcdir)/jwzglesI.h +extrusion-helix2.o: $(srcdir)/jwzgles.h extrusion-helix3.o: ../../config.h extrusion-helix3.o: $(srcdir)/extrusion.h +extrusion-helix3.o: $(srcdir)/jwzglesI.h +extrusion-helix3.o: $(srcdir)/jwzgles.h extrusion-helix4.o: ../../config.h extrusion-helix4.o: $(srcdir)/extrusion.h +extrusion-helix4.o: $(srcdir)/jwzglesI.h +extrusion-helix4.o: $(srcdir)/jwzgles.h extrusion-joinoffset.o: ../../config.h extrusion-joinoffset.o: $(srcdir)/extrusion.h +extrusion-joinoffset.o: $(srcdir)/jwzglesI.h +extrusion-joinoffset.o: $(srcdir)/jwzgles.h extrusion.o: ../../config.h extrusion.o: $(srcdir)/extrusion.h extrusion.o: $(HACK_SRC)/fps.h extrusion.o: $(srcdir)/gltrackball.h +extrusion.o: $(srcdir)/jwzglesI.h extrusion.o: $(srcdir)/jwzgles.h extrusion.o: $(srcdir)/rotator.h extrusion.o: $(HACK_SRC)/screenhackI.h @@ -1308,14 +1393,21 @@ extrusion.o: $(HACK_SRC)/xlockmore.h extrusion.o: $(srcdir)/xpm-ximage.h extrusion-screw.o: ../../config.h extrusion-screw.o: $(srcdir)/extrusion.h +extrusion-screw.o: $(srcdir)/jwzglesI.h +extrusion-screw.o: $(srcdir)/jwzgles.h extrusion-taper.o: ../../config.h extrusion-taper.o: $(srcdir)/extrusion.h +extrusion-taper.o: $(srcdir)/jwzglesI.h +extrusion-taper.o: $(srcdir)/jwzgles.h extrusion-twistoid.o: ../../config.h extrusion-twistoid.o: $(srcdir)/extrusion.h +extrusion-twistoid.o: $(srcdir)/jwzglesI.h +extrusion-twistoid.o: $(srcdir)/jwzgles.h flipflop.o: ../../config.h flipflop.o: $(HACK_SRC)/fps.h flipflop.o: $(srcdir)/gltrackball.h flipflop.o: $(srcdir)/grab-ximage.h +flipflop.o: $(srcdir)/jwzglesI.h flipflop.o: $(srcdir)/jwzgles.h flipflop.o: $(HACK_SRC)/screenhackI.h flipflop.o: $(UTILS_SRC)/colors.h @@ -1332,6 +1424,7 @@ flipscreen3d.o: ../../config.h flipscreen3d.o: $(HACK_SRC)/fps.h flipscreen3d.o: $(srcdir)/gltrackball.h flipscreen3d.o: $(srcdir)/grab-ximage.h +flipscreen3d.o: $(srcdir)/jwzglesI.h flipscreen3d.o: $(srcdir)/jwzgles.h flipscreen3d.o: $(HACK_SRC)/screenhackI.h flipscreen3d.o: $(UTILS_SRC)/colors.h @@ -1346,6 +1439,7 @@ flipscreen3d.o: $(HACK_SRC)/xlockmoreI.h flipscreen3d.o: $(HACK_SRC)/xlockmore.h fliptext.o: ../../config.h fliptext.o: $(HACK_SRC)/fps.h +fliptext.o: $(srcdir)/jwzglesI.h fliptext.o: $(srcdir)/jwzgles.h fliptext.o: $(HACK_SRC)/screenhackI.h fliptext.o: $(srcdir)/texfont.h @@ -1353,6 +1447,7 @@ fliptext.o: $(UTILS_SRC)/colors.h fliptext.o: $(UTILS_SRC)/grabscreen.h fliptext.o: $(UTILS_SRC)/hsv.h fliptext.o: $(UTILS_SRC)/resources.h +fliptext.o: $(UTILS_SRC)/textclient.h fliptext.o: $(UTILS_SRC)/usleep.h fliptext.o: $(UTILS_SRC)/visual.h fliptext.o: $(UTILS_SRC)/xshm.h @@ -1363,6 +1458,7 @@ flurry.o: ../../config.h flurry.o: $(srcdir)/flurry.h flurry.o: $(HACK_SRC)/fps.h flurry.o: $(srcdir)/gltrackball.h +flurry.o: $(srcdir)/jwzglesI.h flurry.o: $(srcdir)/jwzgles.h flurry.o: $(srcdir)/rotator.h flurry.o: $(HACK_SRC)/screenhackI.h @@ -1379,21 +1475,29 @@ flurry.o: $(HACK_SRC)/xlockmore.h flurry-smoke.o: ../../config.h flurry-smoke.o: $(srcdir)/flurry.h flurry-smoke.o: $(srcdir)/gltrackball.h +flurry-smoke.o: $(srcdir)/jwzglesI.h +flurry-smoke.o: $(srcdir)/jwzgles.h flurry-smoke.o: $(srcdir)/rotator.h flurry-smoke.o: $(UTILS_SRC)/yarandom.h flurry-spark.o: ../../config.h flurry-spark.o: $(srcdir)/flurry.h flurry-spark.o: $(srcdir)/gltrackball.h +flurry-spark.o: $(srcdir)/jwzglesI.h +flurry-spark.o: $(srcdir)/jwzgles.h flurry-spark.o: $(srcdir)/rotator.h flurry-spark.o: $(UTILS_SRC)/yarandom.h flurry-star.o: ../../config.h flurry-star.o: $(srcdir)/flurry.h flurry-star.o: $(srcdir)/gltrackball.h +flurry-star.o: $(srcdir)/jwzglesI.h +flurry-star.o: $(srcdir)/jwzgles.h flurry-star.o: $(srcdir)/rotator.h flurry-star.o: $(UTILS_SRC)/yarandom.h flurry-texture.o: ../../config.h flurry-texture.o: $(srcdir)/flurry.h flurry-texture.o: $(srcdir)/gltrackball.h +flurry-texture.o: $(srcdir)/jwzglesI.h +flurry-texture.o: $(srcdir)/jwzgles.h flurry-texture.o: $(srcdir)/rotator.h flurry-texture.o: $(UTILS_SRC)/yarandom.h flyingtoasters.o: ../../config.h @@ -1402,6 +1506,7 @@ flyingtoasters.o: $(srcdir)/gllist.h flyingtoasters.o: $(srcdir)/gltrackball.h flyingtoasters.o: $(HACK_SRC)/images/chromesphere.xpm flyingtoasters.o: $(HACK_SRC)/images/toast.xpm +flyingtoasters.o: $(srcdir)/jwzglesI.h flyingtoasters.o: $(srcdir)/jwzgles.h flyingtoasters.o: $(HACK_SRC)/screenhackI.h flyingtoasters.o: $(UTILS_SRC)/colors.h @@ -1417,13 +1522,16 @@ flyingtoasters.o: $(HACK_SRC)/xlockmore.h flyingtoasters.o: $(srcdir)/xpm-ximage.h font-ximage.o: ../../config.h font-ximage.o: $(srcdir)/font-ximage.h +font-ximage.o: $(srcdir)/jwzglesI.h font-ximage.o: $(srcdir)/jwzgles.h fps-gl.o: ../../config.h fps-gl.o: $(HACK_SRC)/fpsI.h fps-gl.o: $(HACK_SRC)/fps.h fps-gl.o: $(srcdir)/glxfonts.h +fps-gl.o: $(srcdir)/jwzglesI.h fps-gl.o: $(srcdir)/jwzgles.h fps-gl.o: $(HACK_SRC)/screenhackI.h +fps-gl.o: $(srcdir)/texfont.h fps-gl.o: $(UTILS_SRC)/colors.h fps-gl.o: $(UTILS_SRC)/grabscreen.h fps-gl.o: $(UTILS_SRC)/hsv.h @@ -1437,6 +1545,7 @@ gears.o: ../../config.h gears.o: $(HACK_SRC)/fps.h gears.o: $(srcdir)/gltrackball.h gears.o: $(srcdir)/involute.h +gears.o: $(srcdir)/jwzglesI.h gears.o: $(srcdir)/jwzgles.h gears.o: $(srcdir)/normals.h gears.o: $(srcdir)/rotator.h @@ -1456,6 +1565,7 @@ gflux.o: ../../config.h gflux.o: $(HACK_SRC)/fps.h gflux.o: $(srcdir)/gltrackball.h gflux.o: $(srcdir)/grab-ximage.h +gflux.o: $(srcdir)/jwzglesI.h gflux.o: $(srcdir)/jwzgles.h gflux.o: $(HACK_SRC)/screenhackI.h gflux.o: $(UTILS_SRC)/colors.h @@ -1471,6 +1581,7 @@ gflux.o: $(HACK_SRC)/xlockmore.h glblur.o: ../../config.h glblur.o: $(HACK_SRC)/fps.h glblur.o: $(srcdir)/gltrackball.h +glblur.o: $(srcdir)/jwzglesI.h glblur.o: $(srcdir)/jwzgles.h glblur.o: $(srcdir)/rotator.h glblur.o: $(HACK_SRC)/screenhackI.h @@ -1486,6 +1597,7 @@ glblur.o: $(HACK_SRC)/xlockmoreI.h glblur.o: $(HACK_SRC)/xlockmore.h glcells.o: ../../config.h glcells.o: $(HACK_SRC)/fps.h +glcells.o: $(srcdir)/jwzglesI.h glcells.o: $(srcdir)/jwzgles.h glcells.o: $(HACK_SRC)/screenhackI.h glcells.o: $(UTILS_SRC)/colors.h @@ -1501,6 +1613,7 @@ glcells.o: $(HACK_SRC)/xlockmore.h gleidescope.o: ../../config.h gleidescope.o: $(HACK_SRC)/fps.h gleidescope.o: $(srcdir)/grab-ximage.h +gleidescope.o: $(srcdir)/jwzglesI.h gleidescope.o: $(srcdir)/jwzgles.h gleidescope.o: $(HACK_SRC)/screenhackI.h gleidescope.o: $(UTILS_SRC)/colors.h @@ -1519,6 +1632,7 @@ glforestfire.o: $(HACK_SRC)/fps.h glforestfire.o: $(srcdir)/gltrackball.h glforestfire.o: $(HACK_SRC)/images/ground.xpm glforestfire.o: $(HACK_SRC)/images/tree.xpm +glforestfire.o: $(srcdir)/jwzglesI.h glforestfire.o: $(srcdir)/jwzgles.h glforestfire.o: $(HACK_SRC)/screenhackI.h glforestfire.o: $(UTILS_SRC)/colors.h @@ -1534,6 +1648,7 @@ glforestfire.o: $(HACK_SRC)/xlockmore.h glforestfire.o: $(srcdir)/xpm-ximage.h glhanoi.o: ../../config.h glhanoi.o: $(HACK_SRC)/fps.h +glhanoi.o: $(srcdir)/jwzglesI.h glhanoi.o: $(srcdir)/jwzgles.h glhanoi.o: $(srcdir)/rotator.h glhanoi.o: $(HACK_SRC)/screenhackI.h @@ -1550,6 +1665,7 @@ glhanoi.o: $(HACK_SRC)/xlockmore.h glknots.o: ../../config.h glknots.o: $(HACK_SRC)/fps.h glknots.o: $(srcdir)/gltrackball.h +glknots.o: $(srcdir)/jwzglesI.h glknots.o: $(srcdir)/jwzgles.h glknots.o: $(srcdir)/rotator.h glknots.o: $(HACK_SRC)/screenhackI.h @@ -1564,10 +1680,14 @@ glknots.o: $(UTILS_SRC)/xshm.h glknots.o: $(UTILS_SRC)/yarandom.h glknots.o: $(HACK_SRC)/xlockmoreI.h glknots.o: $(HACK_SRC)/xlockmore.h +gllist.o: ../../config.h gllist.o: $(srcdir)/gllist.h +gllist.o: $(srcdir)/jwzglesI.h +gllist.o: $(srcdir)/jwzgles.h glmatrix.o: ../../config.h glmatrix.o: $(HACK_SRC)/fps.h glmatrix.o: $(HACK_SRC)/images/matrix3.xpm +glmatrix.o: $(srcdir)/jwzglesI.h glmatrix.o: $(srcdir)/jwzgles.h glmatrix.o: $(HACK_SRC)/screenhackI.h glmatrix.o: $(UTILS_SRC)/colors.h @@ -1585,6 +1705,7 @@ glplanet.o: ../../config.h glplanet.o: $(HACK_SRC)/fps.h glplanet.o: $(srcdir)/gltrackball.h glplanet.o: $(HACK_SRC)/images/earth.xpm +glplanet.o: $(srcdir)/jwzglesI.h glplanet.o: $(srcdir)/jwzgles.h glplanet.o: $(srcdir)/rotator.h glplanet.o: $(HACK_SRC)/screenhackI.h @@ -1603,8 +1724,10 @@ glplanet.o: $(srcdir)/xpm-ximage.h glschool_alg.o: ../../config.h glschool_alg.o: $(srcdir)/glschool_alg.h glschool_alg.o: $(UTILS_SRC)/yarandom.h +glschool_gl.o: ../../config.h glschool_gl.o: $(srcdir)/glschool_alg.h glschool_gl.o: $(srcdir)/glschool_gl.h +glschool_gl.o: $(srcdir)/jwzglesI.h glschool_gl.o: $(srcdir)/jwzgles.h glschool_gl.o: $(srcdir)/sphere.h glschool_gl.o: $(srcdir)/tube.h @@ -1613,6 +1736,7 @@ glschool.o: $(HACK_SRC)/fps.h glschool.o: $(srcdir)/glschool_alg.h glschool.o: $(srcdir)/glschool_gl.h glschool.o: $(srcdir)/glschool.h +glschool.o: $(srcdir)/jwzglesI.h glschool.o: $(srcdir)/jwzgles.h glschool.o: $(HACK_SRC)/screenhackI.h glschool.o: $(UTILS_SRC)/colors.h @@ -1629,8 +1753,10 @@ glslideshow.o: ../../config.h glslideshow.o: $(HACK_SRC)/fps.h glslideshow.o: $(srcdir)/glxfonts.h glslideshow.o: $(srcdir)/grab-ximage.h +glslideshow.o: $(srcdir)/jwzglesI.h glslideshow.o: $(srcdir)/jwzgles.h glslideshow.o: $(HACK_SRC)/screenhackI.h +glslideshow.o: $(srcdir)/texfont.h glslideshow.o: $(UTILS_SRC)/colors.h glslideshow.o: $(UTILS_SRC)/grabscreen.h glslideshow.o: $(UTILS_SRC)/hsv.h @@ -1644,8 +1770,10 @@ glslideshow.o: $(HACK_SRC)/xlockmore.h glsnake.o: ../../config.h glsnake.o: $(HACK_SRC)/fps.h glsnake.o: $(srcdir)/glxfonts.h +glsnake.o: $(srcdir)/jwzglesI.h glsnake.o: $(srcdir)/jwzgles.h glsnake.o: $(HACK_SRC)/screenhackI.h +glsnake.o: $(srcdir)/texfont.h glsnake.o: $(UTILS_SRC)/colors.h glsnake.o: $(UTILS_SRC)/grabscreen.h glsnake.o: $(UTILS_SRC)/hsv.h @@ -1661,14 +1789,17 @@ gltext.o: $(HACK_SRC)/fps.h gltext.o: $(srcdir)/gltrackball.h gltext.o: $(srcdir)/glut_roman.h gltext.o: $(srcdir)/glutstroke.h +gltext.o: $(srcdir)/jwzglesI.h gltext.o: $(srcdir)/jwzgles.h gltext.o: $(srcdir)/rotator.h gltext.o: $(HACK_SRC)/screenhackI.h +gltext.o: $(srcdir)/sphere.h gltext.o: $(srcdir)/tube.h gltext.o: $(UTILS_SRC)/colors.h gltext.o: $(UTILS_SRC)/grabscreen.h gltext.o: $(UTILS_SRC)/hsv.h gltext.o: $(UTILS_SRC)/resources.h +gltext.o: $(UTILS_SRC)/textclient.h gltext.o: $(UTILS_SRC)/usleep.h gltext.o: $(UTILS_SRC)/visual.h gltext.o: $(UTILS_SRC)/xshm.h @@ -1677,20 +1808,27 @@ gltext.o: $(HACK_SRC)/xlockmoreI.h gltext.o: $(HACK_SRC)/xlockmore.h gltrackball.o: ../../config.h gltrackball.o: $(srcdir)/gltrackball.h +gltrackball.o: $(srcdir)/jwzglesI.h gltrackball.o: $(srcdir)/jwzgles.h gltrackball.o: $(srcdir)/trackball.h glut_stroke.o: ../../config.h glut_stroke.o: $(srcdir)/glutstroke.h +glut_stroke.o: $(srcdir)/jwzglesI.h glut_stroke.o: $(srcdir)/jwzgles.h glut_swidth.o: ../../config.h glut_swidth.o: $(srcdir)/glutstroke.h +glut_swidth.o: $(srcdir)/jwzglesI.h glut_swidth.o: $(srcdir)/jwzgles.h glxfonts.o: ../../config.h +glxfonts.o: $(HACK_SRC)/fps.h glxfonts.o: $(srcdir)/glxfonts.h +glxfonts.o: $(srcdir)/jwzglesI.h glxfonts.o: $(srcdir)/jwzgles.h +glxfonts.o: $(srcdir)/texfont.h glxfonts.o: $(UTILS_SRC)/resources.h grab-ximage.o: ../../config.h grab-ximage.o: $(srcdir)/grab-ximage.h +grab-ximage.o: $(srcdir)/jwzglesI.h grab-ximage.o: $(srcdir)/jwzgles.h grab-ximage.o: $(UTILS_SRC)/grabscreen.h grab-ximage.o: $(UTILS_SRC)/resources.h @@ -1699,6 +1837,7 @@ grab-ximage.o: $(UTILS_SRC)/xshm.h hilbert.o: ../../config.h hilbert.o: $(HACK_SRC)/fps.h hilbert.o: $(srcdir)/gltrackball.h +hilbert.o: $(srcdir)/jwzglesI.h hilbert.o: $(srcdir)/jwzgles.h hilbert.o: $(srcdir)/rotator.h hilbert.o: $(HACK_SRC)/screenhackI.h @@ -1717,6 +1856,7 @@ hilbert.o: $(HACK_SRC)/xlockmore.h hypertorus.o: ../../config.h hypertorus.o: $(HACK_SRC)/fps.h hypertorus.o: $(srcdir)/gltrackball.h +hypertorus.o: $(srcdir)/jwzglesI.h hypertorus.o: $(srcdir)/jwzgles.h hypertorus.o: $(HACK_SRC)/screenhackI.h hypertorus.o: $(UTILS_SRC)/colors.h @@ -1731,6 +1871,7 @@ hypertorus.o: $(HACK_SRC)/xlockmoreI.h hypertorus.o: $(HACK_SRC)/xlockmore.h hypnowheel.o: ../../config.h hypnowheel.o: $(HACK_SRC)/fps.h +hypnowheel.o: $(srcdir)/jwzglesI.h hypnowheel.o: $(srcdir)/jwzgles.h hypnowheel.o: $(srcdir)/rotator.h hypnowheel.o: $(HACK_SRC)/screenhackI.h @@ -1747,6 +1888,7 @@ hypnowheel.o: $(HACK_SRC)/xlockmore.h involute.o: ../../config.h involute.o: $(HACK_SRC)/fps.h involute.o: $(srcdir)/involute.h +involute.o: $(srcdir)/jwzglesI.h involute.o: $(srcdir)/jwzgles.h involute.o: $(srcdir)/normals.h involute.o: $(HACK_SRC)/screenhackI.h @@ -1761,6 +1903,7 @@ jigglypuff.o: ../../config.h jigglypuff.o: $(HACK_SRC)/fps.h jigglypuff.o: $(srcdir)/gltrackball.h jigglypuff.o: $(HACK_SRC)/images/jigglymap.xpm +jigglypuff.o: $(srcdir)/jwzglesI.h jigglypuff.o: $(srcdir)/jwzgles.h jigglypuff.o: $(HACK_SRC)/screenhackI.h jigglypuff.o: $(UTILS_SRC)/colors.h @@ -1778,10 +1921,12 @@ jigsaw.o: ../../config.h jigsaw.o: $(HACK_SRC)/fps.h jigsaw.o: $(srcdir)/gltrackball.h jigsaw.o: $(srcdir)/grab-ximage.h +jigsaw.o: $(srcdir)/jwzglesI.h jigsaw.o: $(srcdir)/jwzgles.h jigsaw.o: $(srcdir)/normals.h jigsaw.o: $(srcdir)/rotator.h jigsaw.o: $(HACK_SRC)/screenhackI.h +jigsaw.o: $(srcdir)/texfont.h jigsaw.o: $(UTILS_SRC)/colors.h jigsaw.o: $(UTILS_SRC)/grabscreen.h jigsaw.o: $(UTILS_SRC)/hsv.h @@ -1797,10 +1942,12 @@ juggler3d.o: ../../config.h juggler3d.o: $(HACK_SRC)/fps.h juggler3d.o: $(srcdir)/gltrackball.h juggler3d.o: $(srcdir)/glxfonts.h +juggler3d.o: $(srcdir)/jwzglesI.h juggler3d.o: $(srcdir)/jwzgles.h juggler3d.o: $(srcdir)/rotator.h juggler3d.o: $(HACK_SRC)/screenhackI.h juggler3d.o: $(srcdir)/sphere.h +juggler3d.o: $(srcdir)/texfont.h juggler3d.o: $(srcdir)/tube.h juggler3d.o: $(UTILS_SRC)/colors.h juggler3d.o: $(UTILS_SRC)/grabscreen.h @@ -1813,10 +1960,11 @@ juggler3d.o: $(UTILS_SRC)/yarandom.h juggler3d.o: $(HACK_SRC)/xlockmoreI.h juggler3d.o: $(HACK_SRC)/xlockmore.h jwzgles.o: ../../config.h -jwzgles.o: $(srcdir)/jwzgles.h +jwzgles.o: $(srcdir)/jwzglesI.h klein.o: ../../config.h klein.o: $(HACK_SRC)/fps.h klein.o: $(srcdir)/gltrackball.h +klein.o: $(srcdir)/jwzglesI.h klein.o: $(srcdir)/jwzgles.h klein.o: $(HACK_SRC)/screenhackI.h klein.o: $(UTILS_SRC)/colors.h @@ -1832,7 +1980,8 @@ klein.o: $(HACK_SRC)/xlockmore.h lament.o: ../../config.h lament.o: $(HACK_SRC)/fps.h lament.o: $(srcdir)/gltrackball.h -lament.o: $(HACK_SRC)/images/lament.xpm +lament.o: $(HACK_SRC)/images/lament512.xpm +lament.o: $(srcdir)/jwzglesI.h lament.o: $(srcdir)/jwzgles.h lament.o: $(srcdir)/normals.h lament.o: $(srcdir)/rotator.h @@ -1851,6 +2000,7 @@ lament.o: $(srcdir)/xpm-ximage.h lavalite.o: ../../config.h lavalite.o: $(HACK_SRC)/fps.h lavalite.o: $(srcdir)/gltrackball.h +lavalite.o: $(srcdir)/jwzglesI.h lavalite.o: $(srcdir)/jwzgles.h lavalite.o: $(srcdir)/marching.h lavalite.o: $(srcdir)/rotator.h @@ -1868,6 +2018,7 @@ lavalite.o: $(HACK_SRC)/xlockmore.h lavalite.o: $(srcdir)/xpm-ximage.h lockward.o: ../../config.h lockward.o: $(HACK_SRC)/fps.h +lockward.o: $(srcdir)/jwzglesI.h lockward.o: $(srcdir)/jwzgles.h lockward.o: $(HACK_SRC)/screenhackI.h lockward.o: $(UTILS_SRC)/colors.h @@ -1881,12 +2032,14 @@ lockward.o: $(UTILS_SRC)/yarandom.h lockward.o: $(HACK_SRC)/xlockmoreI.h lockward.o: $(HACK_SRC)/xlockmore.h marching.o: ../../config.h +marching.o: $(srcdir)/jwzglesI.h marching.o: $(srcdir)/jwzgles.h marching.o: $(srcdir)/marching.h marching.o: $(srcdir)/normals.h menger.o: ../../config.h menger.o: $(HACK_SRC)/fps.h menger.o: $(srcdir)/gltrackball.h +menger.o: $(srcdir)/jwzglesI.h menger.o: $(srcdir)/jwzgles.h menger.o: $(srcdir)/rotator.h menger.o: $(HACK_SRC)/screenhackI.h @@ -1904,6 +2057,7 @@ mirrorblob.o: ../../config.h mirrorblob.o: $(HACK_SRC)/fps.h mirrorblob.o: $(srcdir)/gltrackball.h mirrorblob.o: $(srcdir)/grab-ximage.h +mirrorblob.o: $(srcdir)/jwzglesI.h mirrorblob.o: $(srcdir)/jwzgles.h mirrorblob.o: $(HACK_SRC)/screenhackI.h mirrorblob.o: $(UTILS_SRC)/colors.h @@ -1920,6 +2074,7 @@ moebiusgears.o: ../../config.h moebiusgears.o: $(HACK_SRC)/fps.h moebiusgears.o: $(srcdir)/gltrackball.h moebiusgears.o: $(srcdir)/involute.h +moebiusgears.o: $(srcdir)/jwzglesI.h moebiusgears.o: $(srcdir)/jwzgles.h moebiusgears.o: $(srcdir)/normals.h moebiusgears.o: $(srcdir)/rotator.h @@ -1935,12 +2090,14 @@ moebiusgears.o: $(UTILS_SRC)/yarandom.h moebiusgears.o: $(HACK_SRC)/xlockmoreI.h moebiusgears.o: $(HACK_SRC)/xlockmore.h moebius.o: ../../config.h -moebius.o: $(srcdir)/e_textures.h moebius.o: $(HACK_SRC)/fps.h moebius.o: $(srcdir)/gltrackball.h +moebius.o: $(srcdir)/jwzglesI.h moebius.o: $(srcdir)/jwzgles.h moebius.o: $(srcdir)/rotator.h moebius.o: $(HACK_SRC)/screenhackI.h +moebius.o: $(srcdir)/sphere.h +moebius.o: $(srcdir)/tube.h moebius.o: $(UTILS_SRC)/colors.h moebius.o: $(UTILS_SRC)/grabscreen.h moebius.o: $(UTILS_SRC)/hsv.h @@ -1955,11 +2112,13 @@ molecule.o: ../../config.h molecule.o: $(HACK_SRC)/fps.h molecule.o: $(srcdir)/gltrackball.h molecule.o: $(srcdir)/glxfonts.h +molecule.o: $(srcdir)/jwzglesI.h molecule.o: $(srcdir)/jwzgles.h molecule.o: molecules.h molecule.o: $(srcdir)/rotator.h molecule.o: $(HACK_SRC)/screenhackI.h molecule.o: $(srcdir)/sphere.h +molecule.o: $(srcdir)/texfont.h molecule.o: $(srcdir)/tube.h molecule.o: $(UTILS_SRC)/colors.h molecule.o: $(UTILS_SRC)/grabscreen.h @@ -1973,6 +2132,7 @@ molecule.o: $(HACK_SRC)/xlockmoreI.h molecule.o: $(HACK_SRC)/xlockmore.h morph3d.o: ../../config.h morph3d.o: $(HACK_SRC)/fps.h +morph3d.o: $(srcdir)/jwzglesI.h morph3d.o: $(srcdir)/jwzgles.h morph3d.o: $(HACK_SRC)/screenhackI.h morph3d.o: $(UTILS_SRC)/colors.h @@ -1987,6 +2147,7 @@ morph3d.o: $(HACK_SRC)/xlockmoreI.h morph3d.o: $(HACK_SRC)/xlockmore.h noof.o: ../../config.h noof.o: $(HACK_SRC)/fps.h +noof.o: $(srcdir)/jwzglesI.h noof.o: $(srcdir)/jwzgles.h noof.o: $(HACK_SRC)/screenhackI.h noof.o: $(UTILS_SRC)/colors.h @@ -2000,11 +2161,14 @@ noof.o: $(UTILS_SRC)/yarandom.h noof.o: $(HACK_SRC)/xlockmoreI.h noof.o: $(HACK_SRC)/xlockmore.h normals.o: ../../config.h +normals.o: $(srcdir)/jwzglesI.h +normals.o: $(srcdir)/jwzgles.h normals.o: $(srcdir)/normals.h photopile.o: ../../config.h photopile.o: $(srcdir)/dropshadow.h photopile.o: $(HACK_SRC)/fps.h photopile.o: $(srcdir)/grab-ximage.h +photopile.o: $(srcdir)/jwzglesI.h photopile.o: $(srcdir)/jwzgles.h photopile.o: $(HACK_SRC)/screenhackI.h photopile.o: $(srcdir)/texfont.h @@ -2023,9 +2187,11 @@ pinion.o: $(HACK_SRC)/fps.h pinion.o: $(srcdir)/gltrackball.h pinion.o: $(srcdir)/glxfonts.h pinion.o: $(srcdir)/involute.h +pinion.o: $(srcdir)/jwzglesI.h pinion.o: $(srcdir)/jwzgles.h pinion.o: $(srcdir)/normals.h pinion.o: $(HACK_SRC)/screenhackI.h +pinion.o: $(srcdir)/texfont.h pinion.o: $(UTILS_SRC)/colors.h pinion.o: $(UTILS_SRC)/grabscreen.h pinion.o: $(UTILS_SRC)/hsv.h @@ -2037,11 +2203,17 @@ pinion.o: $(UTILS_SRC)/yarandom.h pinion.o: $(HACK_SRC)/xlockmoreI.h pinion.o: $(HACK_SRC)/xlockmore.h pipeobjs.o: $(srcdir)/buildlwo.h +pipeobjs.o: ../../config.h +pipeobjs.o: $(srcdir)/jwzglesI.h +pipeobjs.o: $(srcdir)/jwzgles.h pipes.o: $(srcdir)/buildlwo.h pipes.o: ../../config.h pipes.o: $(HACK_SRC)/fps.h +pipes.o: $(srcdir)/gltrackball.h +pipes.o: $(srcdir)/jwzglesI.h pipes.o: $(srcdir)/jwzgles.h pipes.o: $(HACK_SRC)/screenhackI.h +pipes.o: $(srcdir)/sphere.h pipes.o: $(srcdir)/teapot.h pipes.o: $(UTILS_SRC)/colors.h pipes.o: $(UTILS_SRC)/grabscreen.h @@ -2057,12 +2229,14 @@ polyhedra-gl.o: ../../config.h polyhedra-gl.o: $(HACK_SRC)/fps.h polyhedra-gl.o: $(srcdir)/gltrackball.h polyhedra-gl.o: $(srcdir)/glxfonts.h +polyhedra-gl.o: $(srcdir)/jwzglesI.h polyhedra-gl.o: $(srcdir)/jwzgles.h polyhedra-gl.o: $(srcdir)/normals.h polyhedra-gl.o: $(srcdir)/polyhedra.h polyhedra-gl.o: $(srcdir)/rotator.h polyhedra-gl.o: $(HACK_SRC)/screenhackI.h polyhedra-gl.o: $(srcdir)/teapot.h +polyhedra-gl.o: $(srcdir)/texfont.h polyhedra-gl.o: $(UTILS_SRC)/colors.h polyhedra-gl.o: $(UTILS_SRC)/grabscreen.h polyhedra-gl.o: $(UTILS_SRC)/hsv.h @@ -2078,6 +2252,7 @@ polyhedra.o: $(srcdir)/polyhedra.h polytopes.o: ../../config.h polytopes.o: $(HACK_SRC)/fps.h polytopes.o: $(srcdir)/gltrackball.h +polytopes.o: $(srcdir)/jwzglesI.h polytopes.o: $(srcdir)/jwzgles.h polytopes.o: $(HACK_SRC)/screenhackI.h polytopes.o: $(UTILS_SRC)/colors.h @@ -2093,6 +2268,7 @@ polytopes.o: $(HACK_SRC)/xlockmore.h providence.o: ../../config.h providence.o: $(HACK_SRC)/fps.h providence.o: $(srcdir)/gltrackball.h +providence.o: $(srcdir)/jwzglesI.h providence.o: $(srcdir)/jwzgles.h providence.o: $(HACK_SRC)/screenhackI.h providence.o: $(UTILS_SRC)/colors.h @@ -2107,6 +2283,7 @@ providence.o: $(HACK_SRC)/xlockmoreI.h providence.o: $(HACK_SRC)/xlockmore.h pulsar.o: ../../config.h pulsar.o: $(HACK_SRC)/fps.h +pulsar.o: $(srcdir)/jwzglesI.h pulsar.o: $(srcdir)/jwzgles.h pulsar.o: $(HACK_SRC)/screenhackI.h pulsar.o: $(UTILS_SRC)/colors.h @@ -2120,9 +2297,11 @@ pulsar.o: $(UTILS_SRC)/yarandom.h pulsar.o: $(HACK_SRC)/xlockmoreI.h pulsar.o: $(HACK_SRC)/xlockmore.h pulsar.o: $(srcdir)/xpm-ximage.h +queens.o: $(srcdir)/chessmodels.h queens.o: ../../config.h queens.o: $(HACK_SRC)/fps.h queens.o: $(srcdir)/gltrackball.h +queens.o: $(srcdir)/jwzglesI.h queens.o: $(srcdir)/jwzgles.h queens.o: $(HACK_SRC)/screenhackI.h queens.o: $(UTILS_SRC)/colors.h @@ -2141,6 +2320,7 @@ rotator.o: $(UTILS_SRC)/yarandom.h rubikblocks.o: ../../config.h rubikblocks.o: $(HACK_SRC)/fps.h rubikblocks.o: $(srcdir)/gltrackball.h +rubikblocks.o: $(srcdir)/jwzglesI.h rubikblocks.o: $(srcdir)/jwzgles.h rubikblocks.o: $(srcdir)/rotator.h rubikblocks.o: $(HACK_SRC)/screenhackI.h @@ -2156,6 +2336,8 @@ rubikblocks.o: $(HACK_SRC)/xlockmoreI.h rubikblocks.o: $(HACK_SRC)/xlockmore.h rubik.o: ../../config.h rubik.o: $(HACK_SRC)/fps.h +rubik.o: $(srcdir)/gltrackball.h +rubik.o: $(srcdir)/jwzglesI.h rubik.o: $(srcdir)/jwzgles.h rubik.o: $(HACK_SRC)/screenhackI.h rubik.o: $(UTILS_SRC)/colors.h @@ -2168,18 +2350,40 @@ rubik.o: $(UTILS_SRC)/xshm.h rubik.o: $(UTILS_SRC)/yarandom.h rubik.o: $(HACK_SRC)/xlockmoreI.h rubik.o: $(HACK_SRC)/xlockmore.h +s1_1.o: ../../config.h s1_1.o: $(srcdir)/gllist.h +s1_1.o: $(srcdir)/jwzglesI.h +s1_1.o: $(srcdir)/jwzgles.h +s1_2.o: ../../config.h s1_2.o: $(srcdir)/gllist.h +s1_2.o: $(srcdir)/jwzglesI.h +s1_2.o: $(srcdir)/jwzgles.h +s1_3.o: ../../config.h s1_3.o: $(srcdir)/gllist.h +s1_3.o: $(srcdir)/jwzglesI.h +s1_3.o: $(srcdir)/jwzgles.h +s1_4.o: ../../config.h s1_4.o: $(srcdir)/gllist.h +s1_4.o: $(srcdir)/jwzglesI.h +s1_4.o: $(srcdir)/jwzgles.h +s1_5.o: ../../config.h s1_5.o: $(srcdir)/gllist.h +s1_5.o: $(srcdir)/jwzglesI.h +s1_5.o: $(srcdir)/jwzgles.h +s1_6.o: ../../config.h s1_6.o: $(srcdir)/gllist.h +s1_6.o: $(srcdir)/jwzglesI.h +s1_6.o: $(srcdir)/jwzgles.h +s1_b.o: ../../config.h s1_b.o: $(srcdir)/gllist.h +s1_b.o: $(srcdir)/jwzglesI.h +s1_b.o: $(srcdir)/jwzgles.h sballs.o: ../../config.h sballs.o: $(HACK_SRC)/fps.h sballs.o: $(srcdir)/gltrackball.h sballs.o: $(HACK_SRC)/images/sball-bg.xpm sballs.o: $(HACK_SRC)/images/sball.xpm +sballs.o: $(srcdir)/jwzglesI.h sballs.o: $(srcdir)/jwzgles.h sballs.o: $(HACK_SRC)/screenhackI.h sballs.o: $(UTILS_SRC)/colors.h @@ -2196,6 +2400,8 @@ sballs.o: $(srcdir)/xpm-ximage.h shark.o: $(srcdir)/atlantis.h shark.o: ../../config.h shark.o: $(HACK_SRC)/fps.h +shark.o: $(srcdir)/jwzglesI.h +shark.o: $(srcdir)/jwzgles.h shark.o: $(HACK_SRC)/screenhackI.h shark.o: $(UTILS_SRC)/colors.h shark.o: $(UTILS_SRC)/grabscreen.h @@ -2207,6 +2413,7 @@ shark.o: $(UTILS_SRC)/yarandom.h sierpinski3d.o: ../../config.h sierpinski3d.o: $(HACK_SRC)/fps.h sierpinski3d.o: $(srcdir)/gltrackball.h +sierpinski3d.o: $(srcdir)/jwzglesI.h sierpinski3d.o: $(srcdir)/jwzgles.h sierpinski3d.o: $(srcdir)/rotator.h sierpinski3d.o: $(HACK_SRC)/screenhackI.h @@ -2224,6 +2431,7 @@ skytentacles.o: ../../config.h skytentacles.o: $(HACK_SRC)/fps.h skytentacles.o: $(srcdir)/gltrackball.h skytentacles.o: $(HACK_SRC)/images/scales.xpm +skytentacles.o: $(srcdir)/jwzglesI.h skytentacles.o: $(srcdir)/jwzgles.h skytentacles.o: $(srcdir)/normals.h skytentacles.o: $(srcdir)/rotator.h @@ -2254,6 +2462,7 @@ sonar-icmp.o: $(UTILS_SRC)/yarandom.h sonar.o: ../../config.h sonar.o: $(HACK_SRC)/fps.h sonar.o: $(srcdir)/gltrackball.h +sonar.o: $(srcdir)/jwzglesI.h sonar.o: $(srcdir)/jwzgles.h sonar.o: $(srcdir)/rotator.h sonar.o: $(HACK_SRC)/screenhackI.h @@ -2284,10 +2493,12 @@ spheremonics.o: ../../config.h spheremonics.o: $(HACK_SRC)/fps.h spheremonics.o: $(srcdir)/gltrackball.h spheremonics.o: $(srcdir)/glxfonts.h +spheremonics.o: $(srcdir)/jwzglesI.h spheremonics.o: $(srcdir)/jwzgles.h spheremonics.o: $(srcdir)/normals.h spheremonics.o: $(srcdir)/rotator.h spheremonics.o: $(HACK_SRC)/screenhackI.h +spheremonics.o: $(srcdir)/texfont.h spheremonics.o: $(UTILS_SRC)/colors.h spheremonics.o: $(UTILS_SRC)/grabscreen.h spheremonics.o: $(UTILS_SRC)/hsv.h @@ -2299,11 +2510,13 @@ spheremonics.o: $(UTILS_SRC)/yarandom.h spheremonics.o: $(HACK_SRC)/xlockmoreI.h spheremonics.o: $(HACK_SRC)/xlockmore.h sphere.o: ../../config.h +sphere.o: $(srcdir)/jwzglesI.h sphere.o: $(srcdir)/jwzgles.h sphere.o: $(srcdir)/sphere.h sproingies.o: ../../config.h sproingies.o: $(HACK_SRC)/fps.h sproingies.o: $(srcdir)/gllist.h +sproingies.o: $(srcdir)/jwzglesI.h sproingies.o: $(srcdir)/jwzgles.h sproingies.o: $(HACK_SRC)/screenhackI.h sproingies.o: $(srcdir)/sproingies.h @@ -2318,6 +2531,7 @@ sproingies.o: $(UTILS_SRC)/yarandom.h sproingies.o: $(HACK_SRC)/xlockmoreI.h sproingiewrap.o: ../../config.h sproingiewrap.o: $(HACK_SRC)/fps.h +sproingiewrap.o: $(srcdir)/jwzglesI.h sproingiewrap.o: $(srcdir)/jwzgles.h sproingiewrap.o: $(HACK_SRC)/screenhackI.h sproingiewrap.o: $(srcdir)/sproingies.h @@ -2332,9 +2546,10 @@ sproingiewrap.o: $(UTILS_SRC)/yarandom.h sproingiewrap.o: $(HACK_SRC)/xlockmoreI.h sproingiewrap.o: $(HACK_SRC)/xlockmore.h stairs.o: ../../config.h -stairs.o: $(srcdir)/e_textures.h stairs.o: $(HACK_SRC)/fps.h stairs.o: $(srcdir)/gltrackball.h +stairs.o: $(HACK_SRC)/images/wood.xpm +stairs.o: $(srcdir)/jwzglesI.h stairs.o: $(srcdir)/jwzgles.h stairs.o: $(HACK_SRC)/screenhackI.h stairs.o: $(srcdir)/sphere.h @@ -2348,17 +2563,21 @@ stairs.o: $(UTILS_SRC)/xshm.h stairs.o: $(UTILS_SRC)/yarandom.h stairs.o: $(HACK_SRC)/xlockmoreI.h stairs.o: $(HACK_SRC)/xlockmore.h +stairs.o: $(srcdir)/xpm-ximage.h starwars.o: ../../config.h starwars.o: $(HACK_SRC)/fps.h starwars.o: $(srcdir)/glut_roman.h starwars.o: $(srcdir)/glutstroke.h +starwars.o: $(srcdir)/jwzglesI.h starwars.o: $(srcdir)/jwzgles.h starwars.o: $(HACK_SRC)/screenhackI.h +starwars.o: $(srcdir)/starwars.h starwars.o: $(srcdir)/texfont.h starwars.o: $(UTILS_SRC)/colors.h starwars.o: $(UTILS_SRC)/grabscreen.h starwars.o: $(UTILS_SRC)/hsv.h starwars.o: $(UTILS_SRC)/resources.h +starwars.o: $(UTILS_SRC)/textclient.h starwars.o: $(UTILS_SRC)/usleep.h starwars.o: $(UTILS_SRC)/visual.h starwars.o: $(UTILS_SRC)/xshm.h @@ -2366,6 +2585,7 @@ starwars.o: $(UTILS_SRC)/yarandom.h starwars.o: $(HACK_SRC)/xlockmoreI.h starwars.o: $(HACK_SRC)/xlockmore.h stonerview-move.o: ../../config.h +stonerview-move.o: $(srcdir)/jwzglesI.h stonerview-move.o: $(srcdir)/jwzgles.h stonerview-move.o: $(srcdir)/stonerview.h stonerview-move.o: $(srcdir)/stonerview-move.h @@ -2374,6 +2594,7 @@ stonerview-move.o: $(UTILS_SRC)/yarandom.h stonerview.o: ../../config.h stonerview.o: $(HACK_SRC)/fps.h stonerview.o: $(srcdir)/gltrackball.h +stonerview.o: $(srcdir)/jwzglesI.h stonerview.o: $(srcdir)/jwzgles.h stonerview.o: $(HACK_SRC)/screenhackI.h stonerview.o: $(srcdir)/stonerview.h @@ -2390,18 +2611,21 @@ stonerview.o: $(UTILS_SRC)/yarandom.h stonerview.o: $(HACK_SRC)/xlockmoreI.h stonerview.o: $(HACK_SRC)/xlockmore.h stonerview-osc.o: ../../config.h +stonerview-osc.o: $(srcdir)/jwzglesI.h stonerview-osc.o: $(srcdir)/jwzgles.h stonerview-osc.o: $(srcdir)/stonerview.h stonerview-osc.o: $(srcdir)/stonerview-move.h stonerview-osc.o: $(srcdir)/stonerview-osc.h stonerview-osc.o: $(UTILS_SRC)/yarandom.h stonerview-view.o: ../../config.h +stonerview-view.o: $(srcdir)/jwzglesI.h stonerview-view.o: $(srcdir)/jwzgles.h stonerview-view.o: $(srcdir)/stonerview.h stonerview-view.o: $(srcdir)/stonerview-move.h stonerview-view.o: $(srcdir)/stonerview-osc.h superquadrics.o: ../../config.h superquadrics.o: $(HACK_SRC)/fps.h +superquadrics.o: $(srcdir)/jwzglesI.h superquadrics.o: $(srcdir)/jwzgles.h superquadrics.o: $(HACK_SRC)/screenhackI.h superquadrics.o: $(UTILS_SRC)/colors.h @@ -2417,6 +2641,7 @@ superquadrics.o: $(HACK_SRC)/xlockmore.h surfaces.o: ../../config.h surfaces.o: $(HACK_SRC)/fps.h surfaces.o: $(srcdir)/gltrackball.h +surfaces.o: $(srcdir)/jwzglesI.h surfaces.o: $(srcdir)/jwzgles.h surfaces.o: $(srcdir)/rotator.h surfaces.o: $(HACK_SRC)/screenhackI.h @@ -2433,6 +2658,7 @@ surfaces.o: $(HACK_SRC)/xlockmore.h swim.o: $(srcdir)/atlantis.h swim.o: ../../config.h swim.o: $(HACK_SRC)/fps.h +swim.o: $(srcdir)/jwzglesI.h swim.o: $(srcdir)/jwzgles.h swim.o: $(HACK_SRC)/screenhackI.h swim.o: $(UTILS_SRC)/colors.h @@ -2447,9 +2673,11 @@ swim.o: $(HACK_SRC)/xlockmoreI.h tangram.o: ../../config.h tangram.o: $(HACK_SRC)/fps.h tangram.o: $(srcdir)/glxfonts.h +tangram.o: $(srcdir)/jwzglesI.h tangram.o: $(srcdir)/jwzgles.h tangram.o: $(HACK_SRC)/screenhackI.h tangram.o: $(srcdir)/tangram_shapes.h +tangram.o: $(srcdir)/texfont.h tangram.o: $(UTILS_SRC)/colors.h tangram.o: $(UTILS_SRC)/grabscreen.h tangram.o: $(UTILS_SRC)/hsv.h @@ -2460,11 +2688,19 @@ tangram.o: $(UTILS_SRC)/xshm.h tangram.o: $(UTILS_SRC)/yarandom.h tangram.o: $(HACK_SRC)/xlockmoreI.h tangram.o: $(HACK_SRC)/xlockmore.h +tangram_shapes.o: ../../config.h +tangram_shapes.o: $(srcdir)/jwzglesI.h +tangram_shapes.o: $(srcdir)/jwzgles.h tangram_shapes.o: $(srcdir)/tangram_shapes.h teapot.o: ../../config.h +teapot.o: $(srcdir)/jwzglesI.h teapot.o: $(srcdir)/jwzgles.h +teapot.o: $(srcdir)/normals.h +teapot.o: $(srcdir)/teapot2.h teapot.o: $(srcdir)/teapot.h texfont.o: ../../config.h +texfont.o: $(srcdir)/jwzglesI.h +texfont.o: $(srcdir)/jwzgles.h texfont.o: $(srcdir)/texfont.h texfont.o: $(UTILS_SRC)/resources.h timetunnel.o: ../../config.h @@ -2474,6 +2710,7 @@ timetunnel.o: $(HACK_SRC)/images/timetunnel0.xpm timetunnel.o: $(HACK_SRC)/images/timetunnel1.xpm timetunnel.o: $(HACK_SRC)/images/timetunnel2.xpm timetunnel.o: $(HACK_SRC)/images/tunnelstar.xpm +timetunnel.o: $(srcdir)/jwzglesI.h timetunnel.o: $(srcdir)/jwzgles.h timetunnel.o: $(srcdir)/rotator.h timetunnel.o: $(HACK_SRC)/screenhackI.h @@ -2489,23 +2726,55 @@ timetunnel.o: $(UTILS_SRC)/yarandom.h timetunnel.o: $(HACK_SRC)/xlockmoreI.h timetunnel.o: $(HACK_SRC)/xlockmore.h timetunnel.o: $(srcdir)/xpm-ximage.h +toast2.o: ../../config.h toast2.o: $(srcdir)/gllist.h +toast2.o: $(srcdir)/jwzglesI.h +toast2.o: $(srcdir)/jwzgles.h +toaster_base.o: ../../config.h toaster_base.o: $(srcdir)/gllist.h +toaster_base.o: $(srcdir)/jwzglesI.h +toaster_base.o: $(srcdir)/jwzgles.h +toaster_handle2.o: ../../config.h toaster_handle2.o: $(srcdir)/gllist.h +toaster_handle2.o: $(srcdir)/jwzglesI.h +toaster_handle2.o: $(srcdir)/jwzgles.h +toaster_handle.o: ../../config.h toaster_handle.o: $(srcdir)/gllist.h +toaster_handle.o: $(srcdir)/jwzglesI.h +toaster_handle.o: $(srcdir)/jwzgles.h +toaster_jet.o: ../../config.h toaster_jet.o: $(srcdir)/gllist.h +toaster_jet.o: $(srcdir)/jwzglesI.h +toaster_jet.o: $(srcdir)/jwzgles.h +toaster_knob.o: ../../config.h toaster_knob.o: $(srcdir)/gllist.h +toaster_knob.o: $(srcdir)/jwzglesI.h +toaster_knob.o: $(srcdir)/jwzgles.h +toaster.o: ../../config.h toaster.o: $(srcdir)/gllist.h +toaster.o: $(srcdir)/jwzglesI.h +toaster.o: $(srcdir)/jwzgles.h +toaster_slots.o: ../../config.h toaster_slots.o: $(srcdir)/gllist.h +toaster_slots.o: $(srcdir)/jwzglesI.h +toaster_slots.o: $(srcdir)/jwzgles.h +toaster_wing.o: ../../config.h toaster_wing.o: $(srcdir)/gllist.h +toaster_wing.o: $(srcdir)/jwzglesI.h +toaster_wing.o: $(srcdir)/jwzgles.h +toast.o: ../../config.h toast.o: $(srcdir)/gllist.h +toast.o: $(srcdir)/jwzglesI.h +toast.o: $(srcdir)/jwzgles.h topblock.o: ../../config.h topblock.o: $(HACK_SRC)/fps.h topblock.o: $(srcdir)/gltrackball.h +topblock.o: $(srcdir)/jwzglesI.h topblock.o: $(srcdir)/jwzgles.h topblock.o: $(HACK_SRC)/screenhackI.h topblock.o: $(srcdir)/sphere.h topblock.o: $(srcdir)/topblock.h +topblock.o: $(srcdir)/tube.h topblock.o: $(UTILS_SRC)/colors.h topblock.o: $(UTILS_SRC)/grabscreen.h topblock.o: $(UTILS_SRC)/hsv.h @@ -2518,13 +2787,23 @@ topblock.o: $(HACK_SRC)/xlockmoreI.h topblock.o: $(HACK_SRC)/xlockmore.h trackball.o: ../../config.h trackball.o: $(srcdir)/trackball.h +tronbit_idle1.o: ../../config.h tronbit_idle1.o: $(srcdir)/gllist.h +tronbit_idle1.o: $(srcdir)/jwzglesI.h +tronbit_idle1.o: $(srcdir)/jwzgles.h +tronbit_idle2.o: ../../config.h tronbit_idle2.o: $(srcdir)/gllist.h +tronbit_idle2.o: $(srcdir)/jwzglesI.h +tronbit_idle2.o: $(srcdir)/jwzgles.h +tronbit_no.o: ../../config.h tronbit_no.o: $(srcdir)/gllist.h +tronbit_no.o: $(srcdir)/jwzglesI.h +tronbit_no.o: $(srcdir)/jwzgles.h tronbit.o: ../../config.h tronbit.o: $(HACK_SRC)/fps.h tronbit.o: $(srcdir)/gllist.h tronbit.o: $(srcdir)/gltrackball.h +tronbit.o: $(srcdir)/jwzglesI.h tronbit.o: $(srcdir)/jwzgles.h tronbit.o: $(srcdir)/rotator.h tronbit.o: $(HACK_SRC)/screenhackI.h @@ -2539,12 +2818,17 @@ tronbit.o: $(UTILS_SRC)/xshm.h tronbit.o: $(UTILS_SRC)/yarandom.h tronbit.o: $(HACK_SRC)/xlockmoreI.h tronbit.o: $(HACK_SRC)/xlockmore.h +tronbit_yes.o: ../../config.h tronbit_yes.o: $(srcdir)/gllist.h +tronbit_yes.o: $(srcdir)/jwzglesI.h +tronbit_yes.o: $(srcdir)/jwzgles.h tube.o: ../../config.h +tube.o: $(srcdir)/jwzglesI.h tube.o: $(srcdir)/jwzgles.h tube.o: $(srcdir)/tube.h tunnel_draw.o: ../../config.h tunnel_draw.o: $(HACK_SRC)/fps.h +tunnel_draw.o: $(srcdir)/jwzglesI.h tunnel_draw.o: $(srcdir)/jwzgles.h tunnel_draw.o: $(HACK_SRC)/screenhackI.h tunnel_draw.o: $(srcdir)/tunnel_draw.h @@ -2559,6 +2843,7 @@ tunnel_draw.o: $(UTILS_SRC)/yarandom.h tunnel_draw.o: $(HACK_SRC)/xlockmoreI.h voronoi.o: ../../config.h voronoi.o: $(HACK_SRC)/fps.h +voronoi.o: $(srcdir)/jwzglesI.h voronoi.o: $(srcdir)/jwzgles.h voronoi.o: $(HACK_SRC)/screenhackI.h voronoi.o: $(UTILS_SRC)/colors.h @@ -2574,6 +2859,8 @@ voronoi.o: $(HACK_SRC)/xlockmore.h whale.o: $(srcdir)/atlantis.h whale.o: ../../config.h whale.o: $(HACK_SRC)/fps.h +whale.o: $(srcdir)/jwzglesI.h +whale.o: $(srcdir)/jwzgles.h whale.o: $(HACK_SRC)/screenhackI.h whale.o: $(UTILS_SRC)/colors.h whale.o: $(UTILS_SRC)/grabscreen.h @@ -2585,8 +2872,10 @@ whale.o: $(UTILS_SRC)/yarandom.h xlock-gl-utils.o: ../../config.h xlock-gl-utils.o: $(HACK_SRC)/fps.h xlock-gl-utils.o: $(srcdir)/glxfonts.h +xlock-gl-utils.o: $(srcdir)/jwzglesI.h xlock-gl-utils.o: $(srcdir)/jwzgles.h xlock-gl-utils.o: $(HACK_SRC)/screenhackI.h +xlock-gl-utils.o: $(srcdir)/texfont.h xlock-gl-utils.o: $(UTILS_SRC)/colors.h xlock-gl-utils.o: $(UTILS_SRC)/grabscreen.h xlock-gl-utils.o: $(UTILS_SRC)/hsv.h diff --git a/hacks/glx/antmaze.c b/hacks/glx/antmaze.c index 3c9e1de3..0ca7f05f 100644 --- a/hacks/glx/antmaze.c +++ b/hacks/glx/antmaze.c @@ -1504,9 +1504,7 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi) /* started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0)), */ /* started ? -mag : -8.0 + 4.0*fabs(sin(ant_step/10.0))); */ - glRotatef(-current_device_rotation(), 0, 0, 1); gltrackball_rotate(mp->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); glRotatef(mp->ant_step*0.6, 0.0, 1.0, 0.0); @@ -1539,9 +1537,7 @@ ENTRYPOINT void draw_antmaze(ModeInfo * mi) glTranslatef(0.0, 0.0, -16.0); glRotatef(60.0, 1.0, 0.0, 0.0); glRotatef(-15.0 + mp->ant_step/10.0, 0.0, 1.0, 0.0); - glRotatef(-current_device_rotation(), 0, 0, 1); gltrackball_rotate(mp->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); /* sync */ if(!draw_antmaze_strip(mi)) { diff --git a/hacks/glx/atunnel.c b/hacks/glx/atunnel.c index ee244ea5..29eee782 100644 --- a/hacks/glx/atunnel.c +++ b/hacks/glx/atunnel.c @@ -196,7 +196,7 @@ static void Init(ModeInfo * mi) LoadTexture(mi, texture5,5); glEnable(GL_TEXTURE_2D); } - sa->ts = InitTunnel(); + sa->ts = atunnel_InitTunnel(); /* Set lighting parameters */ if (do_light) @@ -270,8 +270,8 @@ ENTRYPOINT void draw_atunnel(ModeInfo * mi) glLoadIdentity(); - DrawTunnel(sa->ts, do_texture, do_light, sa->texture); - SplashScreen(sa->ts, do_wire, do_texture, do_light); + atunnel_DrawTunnel(sa->ts, do_texture, do_light, sa->texture); + atunnel_SplashScreen(sa->ts, do_wire, do_texture, do_light); glFlush(); /* manage framerate display */ diff --git a/hacks/glx/boing.c b/hacks/glx/boing.c index 97990721..3396217f 100644 --- a/hacks/glx/boing.c +++ b/hacks/glx/boing.c @@ -1,4 +1,4 @@ -/* boing, Copyright (c) 2005-2008 Jamie Zawinski +/* boing, Copyright (c) 2005-2012 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -461,6 +461,13 @@ reshape_boing (ModeInfo *mi, int width, int height) glMatrixMode(GL_PROJECTION); glLoadIdentity(); + + if (height > width) + { + GLfloat s = width / (GLfloat) height; + glScalef (s, s, s); + } + gluPerspective (8.0, 1/h, 1.0, 10.0); glMatrixMode(GL_MODELVIEW); @@ -629,8 +636,19 @@ draw_boing (ModeInfo *mi) tick_physics (mi); glPushMatrix (); + + { + double rot = current_device_rotation(); + glRotatef(rot, 0, 0, 1); + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + glScalef (1/s, s, 1); + } + } + gltrackball_rotate (bp->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); glLightfv (GL_LIGHT0, GL_POSITION, bp->lightpos); diff --git a/hacks/glx/bouncingcow.c b/hacks/glx/bouncingcow.c index 21ece3c7..b769c117 100644 --- a/hacks/glx/bouncingcow.c +++ b/hacks/glx/bouncingcow.c @@ -447,6 +447,8 @@ draw_floater (ModeInfo *mi, floater *f) glPushMatrix(); glTranslatef (f->x, f->y, f->z); + gltrackball_rotate (bp->trackball); + glRotatef (y * 360, 0.0, 1.0, 0.0); if (f->spinner_p) { @@ -500,7 +502,6 @@ draw_cow (ModeInfo *mi) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix (); - gltrackball_rotate (bp->trackball); glRotatef(current_device_rotation(), 0, 0, 1); glScalef (0.5, 0.5, 0.5); diff --git a/hacks/glx/carousel.c b/hacks/glx/carousel.c index 2a2a0cee..49abc581 100644 --- a/hacks/glx/carousel.c +++ b/hacks/glx/carousel.c @@ -516,13 +516,23 @@ loading_msg (ModeInfo *mi, int n) glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); - glRotatef(current_device_rotation(), 0, 0, 1); glMatrixMode(GL_MODELVIEW); glPushMatrix(); glLoadIdentity(); - glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1); + { + double rot = current_device_rotation(); + glRotatef(rot, 0, 0, 1); + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + glScalef (s, 1/s, 1); + } + } + + glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1); glTranslatef ((MI_WIDTH(mi) - ss->loading_sw) / 2, (MI_HEIGHT(mi) - ss->loading_sh) / 2, 0); @@ -833,6 +843,8 @@ draw_carousel (ModeInfo *mi) glPushMatrix(); + glRotatef(current_device_rotation(), 0, 0, 1); + /* Run the startup "un-shrink" animation. */ @@ -868,7 +880,6 @@ draw_carousel (ModeInfo *mi) { double x, y, z; gltrackball_rotate (ss->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); /* Tilt the tube up or down by up to 30 degrees */ get_position (ss->rot, &x, &y, &z, !ss->button_down_p); diff --git a/hacks/glx/chessgames.h b/hacks/glx/chessgames.h index a752d4f7..28f5c570 100644 --- a/hacks/glx/chessgames.h +++ b/hacks/glx/chessgames.h @@ -42,7 +42,7 @@ typedef struct { } ChessGame; #define GAMES 7 -ChessGame games[GAMES] = { +static ChessGame games[GAMES] = { /** game 1: diff --git a/hacks/glx/chessmodels.c b/hacks/glx/chessmodels.c index d47895aa..eac7b252 100644 --- a/hacks/glx/chessmodels.c +++ b/hacks/glx/chessmodels.c @@ -63,20 +63,20 @@ #define SETBACKREF 65524 #define BACKREF 65523 -unsigned short classic_pawn_data[] = { +static unsigned short classic_pawn_data[] = { SPIN,16, 350,0,SEAM,350,200,SEAM,250,300,SEAM,250,400,SEAM,150,600,SEAM,100,880, SEAM,180,880,SEAM,100,920,SEAM,200,1160,SEAM,100,1340,0,1340, ENDOFDATA }; -unsigned short classic_rook_data[] = { +static unsigned short classic_rook_data[] = { SPIN,16, 380,0,SEAM,380,200,SEAM,260,500,SEAM,200,1020,SEAM,280,1020,SEAM,280,1360,SEAM,220,1360,SEAM,220,1300,0,1300, ENDOFDATA }; -unsigned short classic_knight_data[] = { +static unsigned short classic_knight_data[] = { SPIN,16, 410,0,SEAM,410,200,SEAM,200,360,SEAM,200,480,260,580, @@ -161,7 +161,7 @@ unsigned short classic_knight_data[] = { ENDOFDATA }; -unsigned short classic_bishop_data[] = { +static unsigned short classic_bishop_data[] = { SPIN,16, 400,0,SEAM,400,200,SEAM,250,300,SEAM,250,400,SEAM,150,700,SEAM,120,940, SEAM,250,940,SEAM,170,1100,SEAM,170,1220,SEAM,220,1320,SEAM,220,1480, @@ -169,7 +169,7 @@ unsigned short classic_bishop_data[] = { ENDOFDATA }; -unsigned short classic_queen_data[] = { +static unsigned short classic_queen_data[] = { SPIN,16, 480,0,SEAM,480,220,SEAM,340,400,SEAM,340,500,SEAM,180,800,SEAM,140,1180, SEAM,290,1180,SEAM,180,1360,SEAM,180,1520,SEAM,200,1780,SEAM,270,1920, @@ -178,7 +178,7 @@ unsigned short classic_queen_data[] = { ENDOFDATA }; -unsigned short classic_king_data[] = { +static unsigned short classic_king_data[] = { SPIN,16, 500,0,SEAM,500,200,SEAM,350,300,SEAM,350,460,SEAM,200,760,SEAM,140,1260, SEAM,300,1260,SEAM,200,1460,SEAM,200,1560,SEAM,280,1910,SEAM,160,1970, @@ -205,7 +205,7 @@ unsigned short classic_king_data[] = { ENDOFDATA }; -unsigned short knight_data[] = { +static unsigned short knight_data[] = { VERTICES, SETBACKREF,0, 7910,8863,0, 7790,8863,1326, 7433,8863,2611, 6850,8863,3817, 6059,8863,4907, 5084,8863,5847, 3955,8863,6611, 2705,8863,7173, 1373,8863,7517, 0,8863,7633, -1373,8863,7517, @@ -1016,7 +1016,7 @@ unsigned short knight_data[] = { ENDOFDATA }; -unsigned short bishop_data[] = { +static unsigned short bishop_data[] = { VERTICES, SETBACKREF,0, 5233,26960,0, 5154,26960,909, 4918,26960,1790, 4532,26960,2617, 4009,26960,3364, 3364,26960,4009, 2617,26960,4532, 1790,26960,4918, 909,26960,5154, 0,26833,5233, -909,26960,5154, @@ -1109,7 +1109,7 @@ unsigned short bishop_data[] = { ENDOFDATA }; -unsigned short king_data[] = { +static unsigned short king_data[] = { SPIN,20, 11378,0,11378,856,SEAM,10928,1152, 11302,1684,11302,2209,11065,2684, @@ -1165,7 +1165,7 @@ unsigned short king_data[] = { ENDOFDATA }; -unsigned short queen_data[] = { +static unsigned short queen_data[] = { SPIN,24, 11092,0,11092,914,SEAM,10653,1284, 11018,1798,11018,2358,10787,2866, @@ -1185,7 +1185,7 @@ unsigned short queen_data[] = { ENDOFDATA }; -unsigned short pawn_data[] = { +static unsigned short pawn_data[] = { SPIN,16, 7395,0,7395,609, SEAM,7102,910,7345,1199,7345,1572,7191,1910, @@ -1200,7 +1200,7 @@ unsigned short pawn_data[] = { ENDOFDATA }; -unsigned short rook_data[] = { +static unsigned short rook_data[] = { SPIN,20, 9374,0,9374,756,SEAM,9003,1062,9311,1487, 9311,1951,9116,2371,8521,3083,6701,5807,SEAM,6009,7595, @@ -1268,7 +1268,8 @@ unsigned short rook_data[] = { static double piece_size; -static int enumerate_ring_vertices( int steps, unsigned short *data, void *h, +static int +enumerate_ring_vertices( int steps, unsigned short *data, void *h, void (*process_vertex)(void *h,double x,double y,double z)) { int patlen = 1,i; @@ -1293,7 +1294,8 @@ static int enumerate_ring_vertices( int steps, unsigned short *data, void *h, return pts + patlen * 2 - data; } -static void enumerate_vertices( unsigned short *data, void *h, +static void +enumerate_vertices( unsigned short *data, void *h, void (*process_vertex)(void *h,double x,double y,double z)) { while(1) { @@ -1368,7 +1370,8 @@ static void enumerate_vertices( unsigned short *data, void *h, } } -static void enumerate_ring_faces( int basevertex, int steps, +static void +enumerate_ring_faces( int basevertex, int steps, int prevbase, int prevsteps, void *h, int *count_ret, void (*process_face)(void *h,int v1,int v2,int v3,int v4)) { @@ -1415,7 +1418,8 @@ static void enumerate_ring_faces( int basevertex, int steps, } } -static void enumerate_faces( unsigned short *data, void *h, int *count_ret, +static void +enumerate_faces( unsigned short *data, void *h, int *count_ret, void (*process_face)(void *h,int v1,int v2,int v3,int v4)) { int basevertex = 0, startofvertices = 0; @@ -1546,7 +1550,8 @@ static void enumerate_faces( unsigned short *data, void *h, int *count_ret, } } -static void normalize( float v[3]) { +static void +normalize( float v[3]) { float d = sqrt(v[0]*v[0]+v[1]*v[1]+v[2]*v[2]); if( d == 0.0) { @@ -1562,7 +1567,8 @@ static void normalize( float v[3]) { v[2] /= d; } -static void normcrossprod( float v1[3], float v2[3], float out[3]) +static void +normcrossprod( float v1[3], float v2[3], float out[3]) { out[0] = v1[1] * v2[2] - v1[2] * v2[1]; out[1] = v1[2] * v2[0] - v1[0] * v2[2]; @@ -1580,16 +1586,18 @@ static void normcrossprod( float v1[3], float v2[3], float out[3]) (v1)[1] += (v2)[1], \ (v1)[2] += (v2)[2]) -int numverts; -float *vertices; -float *normals; +static int numverts; +static float *vertices; +static float *normals; -static void count_vertex( void *dummy, double x, double y, double z) +static void +count_vertex( void *dummy, double x, double y, double z) { numverts++; } -static void add_normal( void *dummy, int v1, int v2, int v3, int v4) +static void +add_normal( void *dummy, int v1, int v2, int v3, int v4) { float surfnormal[3],d1[3],d2[3]; @@ -1620,7 +1628,8 @@ static void add_normal( void *dummy, int v1, int v2, int v3, int v4) } } -static void collect_vertex( void *curvert, double x, double y, double z) +static void +collect_vertex( void *curvert, double x, double y, double z) { (*(float**)curvert)[0] = x; (*(float**)curvert)[1] = y; @@ -1628,7 +1637,8 @@ static void collect_vertex( void *curvert, double x, double y, double z) (*(float**)curvert) += 3; } -static void draw_face( void *dummy, int v1, int v2, int v3, int v4) +static void +draw_face( void *dummy, int v1, int v2, int v3, int v4) { glBegin( v4 == -1 ? GL_TRIANGLES : GL_QUADS); glNormal3f( normals[v1*3], normals[v1*3+1], normals[v1*3+2]); @@ -1644,7 +1654,8 @@ static void draw_face( void *dummy, int v1, int v2, int v3, int v4) glEnd(); } -static int draw_piece( unsigned short *piece_data) +static int +draw_piece( unsigned short *piece_data) { int i; float *curvert; @@ -1685,7 +1696,7 @@ static int draw_piece( unsigned short *piece_data) return count; } -void gen_model_lists( int classic, int poly_count[PIECES]) { +void chessmodels_gen_lists( int classic, int poly_count[PIECES]) { Bool queen_only_p = classic < 0; if (classic < 0) classic = 0; diff --git a/hacks/glx/chessmodels.h b/hacks/glx/chessmodels.h index 87a26a52..6e41e224 100644 --- a/hacks/glx/chessmodels.h +++ b/hacks/glx/chessmodels.h @@ -40,5 +40,5 @@ #define BROOK 12 #define BPAWN 13 -extern void gen_model_lists( int classic, int poly_count[PIECES]); +extern void chessmodels_gen_lists( int classic, int poly_count[PIECES]); diff --git a/hacks/glx/companion.c b/hacks/glx/companion.c index 3dc86d83..d0c84ed0 100644 --- a/hacks/glx/companion.c +++ b/hacks/glx/companion.c @@ -575,8 +575,8 @@ draw_cube (ModeInfo *mi) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix (); - gltrackball_rotate (bp->trackball); glRotatef(current_device_rotation(), 0, 0, 1); + gltrackball_rotate (bp->trackball); glScalef (2, 2, 2); diff --git a/hacks/glx/crackberg.c b/hacks/glx/crackberg.c index c4e925c7..2d8acbd4 100644 --- a/hacks/glx/crackberg.c +++ b/hacks/glx/crackberg.c @@ -131,6 +131,10 @@ struct _cberg_state { double vs0r,vs0g,vs0b, vs1r, vs1g, vs1b, vf0r,vf0g,vf0b, vf1r, vf1g, vf1b; + + Bool button_down_p; + int mouse_x, mouse_y; + struct timeval paused; }; @@ -1297,6 +1301,38 @@ ENTRYPOINT Bool crackberg_handle_event (ModeInfo *mi, XEvent *ev) break; default: return False; } + } else if (ev->xany.type == ButtonPress && + ev->xbutton.button == Button1) { + cberg->button_down_p = True; + cberg->mouse_x = ev->xbutton.x; + cberg->mouse_y = ev->xbutton.y; + cberg->motion_state = MOTION_MANUAL; + cberg->paused.tv_sec = 0; + } else if (ev->xany.type == ButtonRelease && + ev->xbutton.button == Button1) { + cberg->button_down_p = False; + cberg->motion_state = MOTION_AUTO; + /* After mouse-up, don't go back into auto-motion mode for a second, so + that repeated click-and-drag gestures don't fight with auto-motion. */ + gettimeofday(&cberg->paused, NULL); + } else if (ev->xany.type == MotionNotify && + cberg->button_down_p) { + int dx = ev->xmotion.x - cberg->mouse_x; + int dy = ev->xmotion.y - cberg->mouse_y; + cberg->mouse_x = ev->xmotion.x; + cberg->mouse_y = ev->xmotion.y; + cberg->motion_state = MOTION_MANUAL; + + /* Take the larger dimension, since motion_state doesn't scale */ + if (dx > 0 && dx > dy) dy = 0; + if (dx < 0 && dx < dy) dy = 0; + if (dy > 0 && dy > dx) dx = 0; + if (dy < 0 && dy < dx) dx = 0; + + if (dx > 0) cberg->motion_state |= MOTION_LEFT; + else if (dx < 0) cberg->motion_state |= MOTION_RIGHT; + else if (dy > 0) cberg->motion_state |= MOTION_FORW; + else if (dy < 0) cberg->motion_state |= MOTION_BACK; } else return False; return True; @@ -1320,7 +1356,8 @@ ENTRYPOINT void draw_crackberg (ModeInfo *mi) cberg->elapsed = cur_frame - cberg->prev_frame; - if (cberg->motion_state == MOTION_AUTO) { + if (cberg->motion_state == MOTION_AUTO && + cberg->paused.tv_sec < cur_frame_t.tv_sec) { cberg->x += cberg->dx * cberg->elapsed; cberg->y += cberg->dy * cberg->elapsed; /* cberg->z */ diff --git a/hacks/glx/cube21.c b/hacks/glx/cube21.c index d4cd8eb3..5a477bce 100644 --- a/hacks/glx/cube21.c +++ b/hacks/glx/cube21.c @@ -26,7 +26,7 @@ /* TODO: * some simple "solve mode" - * use rotator and trackball + * use rotator */ /*- @@ -46,9 +46,10 @@ "*wireframe: False \n" # define refresh_cube21 0 -# define cube21_handle_event 0 #include "xlockmore.h" +#include "gltrackball.h" + #ifdef USE_GL #define DEF_SPIN "True" @@ -178,6 +179,9 @@ typedef struct { GLfloat texp, texq, posc[6]; GLfloat color_inner[4]; + Bool button_down_p; + trackball_state *trackball; + } cube21_conf; static cube21_conf *cube21 = NULL; @@ -510,6 +514,12 @@ static Bool draw_main(ModeInfo *mi, cube21_conf *cp) else glTranslatef(0, 0, zpos); glScalef(size, size, size); + + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); + gltrackball_rotate (cp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); + glRotatef(cp->xrot, 1.0, 0.0, 0.0); glRotatef(cp->yrot, 0.0, 1.0, 0.0); if(cp->wire) glColor3f(0.7, 0.7, 0.7); @@ -833,6 +843,49 @@ ENTRYPOINT void reshape_cube21(ModeInfo *mi, int width, int height) glClear(GL_COLOR_BUFFER_BIT); } +ENTRYPOINT Bool +cube21_handle_event (ModeInfo *mi, XEvent *event) +{ + cube21_conf *cp = &cube21[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + cp->button_down_p = True; + gltrackball_start (cp->trackball, + event->xbutton.x, event->xbutton.y, + MI_WIDTH (mi), MI_HEIGHT (mi)); + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + cp->button_down_p = False; + return True; + } + else if (event->xany.type == ButtonPress && + (event->xbutton.button == Button4 || + event->xbutton.button == Button5 || + event->xbutton.button == Button6 || + event->xbutton.button == Button7)) + { + gltrackball_mousewheel (cp->trackball, event->xbutton.button, 10, + !!event->xbutton.state); + return True; + } + else if (event->xany.type == MotionNotify && + cp->button_down_p) + { + gltrackball_track (cp->trackball, + event->xmotion.x, event->xmotion.y, + MI_WIDTH (mi), MI_HEIGHT (mi)); + return True; + } + + return False; +} + + ENTRYPOINT void release_cube21(ModeInfo *mi) { if (cube21 != NULL) { @@ -858,6 +911,8 @@ ENTRYPOINT void init_cube21(ModeInfo *mi) } cp = &cube21[MI_SCREEN(mi)]; + cp->trackball = gltrackball_init (); + if(!cp->texp) { init_posc(cp); make_texture(cp); diff --git a/hacks/glx/cubenetic.c b/hacks/glx/cubenetic.c index 5e8c3a04..8ae8143f 100644 --- a/hacks/glx/cubenetic.c +++ b/hacks/glx/cubenetic.c @@ -560,7 +560,10 @@ draw_cube (ModeInfo *mi) (y - 0.5) * 6, (z - 0.5) * 15); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (cc->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation (cc->rot, &x, &y, &z, !cc->button_down_p); glRotatef (x * 360, 1.0, 0.0, 0.0); diff --git a/hacks/glx/cubicgrid.c b/hacks/glx/cubicgrid.c index deb6774c..400af743 100644 --- a/hacks/glx/cubicgrid.c +++ b/hacks/glx/cubicgrid.c @@ -141,7 +141,12 @@ static Bool draw_main(cubicgrid_conf *cp) glTranslatef(0, 0, zpos); glScalef(size/ticks, size/ticks, size/ticks); + + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (cp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); + get_rotation (cp->rot, &x, &y, &z, !cp->button_down_p); glRotatef (x * 360, 1.0, 0.0, 0.0); glRotatef (y * 360, 0.0, 1.0, 0.0); diff --git a/hacks/glx/dangerball.c b/hacks/glx/dangerball.c index 621e70cd..7b709092 100644 --- a/hacks/glx/dangerball.c +++ b/hacks/glx/dangerball.c @@ -336,7 +336,10 @@ draw_ball (ModeInfo *mi) (y - 0.5) * 8, (z - 0.5) * 15); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (bp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); glRotatef (x * 360, 1.0, 0.0, 0.0); diff --git a/hacks/glx/dnalogo.c b/hacks/glx/dnalogo.c index 6d04233e..1b192428 100644 --- a/hacks/glx/dnalogo.c +++ b/hacks/glx/dnalogo.c @@ -75,6 +75,12 @@ #ifdef USE_GL /* whole file */ +#ifdef HAVE_JWZGLES +# include "dnapizza.h" +#else +# define HAVE_TESS +#endif + typedef enum { HELIX_IN, HELIX, HELIX_OUT, PIZZA_IN, PIZZA, PIZZA_OUT, @@ -1373,6 +1379,8 @@ make_frame (logo_configuration *dc, int wire) /* Make some pizza. */ +#ifdef HAVE_TESS + typedef struct { GLdouble *points; int i; @@ -1423,12 +1431,13 @@ tess_end_cb (void) glEnd(); } +#endif /* HAVE_TESS */ + static int make_pizza (logo_configuration *dc, int facetted, int wire) { int polys = 0; - int topfaces = (facetted ? 48 : 120); int discfaces = (facetted ? 12 : 120); int npoints = topfaces * 2 + 100; @@ -1440,18 +1449,19 @@ make_pizza (logo_configuration *dc, int facetted, int wire) GLfloat thick2 = (dc->gasket_thickness / dc->gasket_size) / 4; GLfloat th, x, y, s; int i, j, k; - tess_out TO, *to = &TO; - GLUtesselator *tess = gluNewTess(); int endpoints; int endedge1; +# ifdef HAVE_TESS + tess_out TO, *to = &TO; + GLUtesselator *tess = gluNewTess(); + to->points = (GLdouble *) calloc (topfaces * 20, sizeof(GLdouble)); to->i = 0; - -# ifndef _GLUfuncptr -# define _GLUfuncptr void(*)(void) -# endif +# ifndef _GLUfuncptr +# define _GLUfuncptr void(*)(void) +# endif gluTessCallback(tess,GLU_TESS_BEGIN, (_GLUfuncptr)tess_begin_cb); gluTessCallback(tess,GLU_TESS_VERTEX, (_GLUfuncptr)glVertex3dv); @@ -1462,6 +1472,8 @@ make_pizza (logo_configuration *dc, int facetted, int wire) gluTessProperty (tess, GLU_TESS_BOUNDARY_ONLY, wire); gluTessProperty (tess,GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ODD); +# endif /* HAVE_TESS */ + glPushMatrix(); s = 1.9; @@ -1546,6 +1558,7 @@ make_pizza (logo_configuration *dc, int facetted, int wire) y = p[1]; polys++; } + do_normal (points[0], points[1], -thick2, points[0], points[1], thick2, x, y, thick2); @@ -1556,6 +1569,21 @@ make_pizza (logo_configuration *dc, int facetted, int wire) polys++; glEnd(); +# ifndef HAVE_TESS + if (wire) + { + /* Outline of slice */ + glBegin (GL_LINE_LOOP); + for (i = 0; i < endpoints; i++) + glVertex3f (points[i*3], points[i*3+1], -thick2); + glEnd(); + glBegin (GL_LINE_LOOP); + for (i = 0; i < endpoints; i++) + glVertex3f (points[i*3], points[i*3+1], thick2); + glEnd(); + } +# endif /* HAVE_TESS */ + /* Compute the holes */ step = M_PI * 2 / discfaces; for (k = 0; k < nholes; k++) @@ -1583,6 +1611,7 @@ make_pizza (logo_configuration *dc, int facetted, int wire) for (k = 0; k < nholes; k++) { GLdouble *p = holes + (discfaces * 3 * k); + glBegin (wire ? GL_LINES : GL_QUAD_STRIP); for (i = 0; i < discfaces; i++) { @@ -1599,8 +1628,23 @@ make_pizza (logo_configuration *dc, int facetted, int wire) glVertex3f (p[0], p[1], thick2); polys++; glEnd(); +# ifndef HAVE_TESS + if (wire) + { + /* Outline of holes */ + glBegin (GL_LINE_LOOP); + for (i = 0; i < discfaces; i++) + glVertex3f (p[i*3], p[i*3+1], -thick2); + glEnd(); + glBegin (GL_LINE_LOOP); + for (i = 0; i < discfaces; i++) + glVertex3f (p[i*3], p[i*3+1], thick2); + glEnd(); + } +# endif /* !HAVE_TESS */ } +# ifdef HAVE_TESS glTranslatef (0, 0, -thick2); for (y = 0; y <= 1; y++) { @@ -1640,8 +1684,32 @@ make_pizza (logo_configuration *dc, int facetted, int wire) gluTessEndPolygon (tess); } + glTranslatef (0, 0, -thick2); +# else /* !HAVE_TESS */ + if (! wire) + { + glDisableClientState (GL_COLOR_ARRAY); + glDisableClientState (GL_NORMAL_ARRAY); + glDisableClientState (GL_TEXTURE_COORD_ARRAY); + glEnableClientState (GL_VERTEX_ARRAY); + glVertexPointer (3, GL_FLOAT, 0, dnapizza_triangles); + + glTranslatef(0, 0, thick2); + glNormal3f (0, 0, 1); + glFrontFace (GL_CW); + glDrawArrays (GL_TRIANGLES, 0, countof (dnapizza_triangles) / 3); + + glTranslatef(0, 0, -thick2*2); + glNormal3f (0, 0, -1); + glFrontFace (GL_CCW); + glDrawArrays (GL_TRIANGLES, 0, countof (dnapizza_triangles) / 3); + + glTranslatef(0, 0, thick2); + } +# endif /* !HAVE_TESS */ + /* Compute the crust */ @@ -1748,10 +1816,13 @@ make_pizza (logo_configuration *dc, int facetted, int wire) glEnd(); } +# ifdef HAVE_TESS gluDeleteTess (tess); + free (to->points); +# endif /* HAVE_TESS */ + free (points); free (holes); - free (to->points); glPopMatrix(); @@ -2150,8 +2221,6 @@ draw_logo (ModeInfo *mi) mi->polygon_count = 0; glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(dc->glx_context)); - glRotatef(current_device_rotation(), 0, 0, 1); - if (!wire && dc->wire_overlay == 0 && (random() % (int) (PROBABILITY_SCALE / 0.2)) == 0) @@ -2232,10 +2301,15 @@ draw_logo (ModeInfo *mi) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); { GLfloat scale = 0; glScalef(3, 3, 3); +# ifdef USE_IPHONE + glScalef (0.7, 0.7, 0.7); /* make room for the frame */ +# endif + glColor3f(dc->color[0], dc->color[1], dc->color[2]); /* Draw frame before trackball rotation */ @@ -2253,6 +2327,7 @@ draw_logo (ModeInfo *mi) glScalef (1, scale, scale); if (wire) { + glDisable (GL_LIGHTING); glCallList (dc->frame_list_wire); mi->polygon_count += dc->polys[6]; } @@ -2260,6 +2335,7 @@ draw_logo (ModeInfo *mi) { glCallList (dc->frame_list); glDisable (GL_LIGHTING); + glColor3fv (dc->color); glCallList (dc->frame_list_wire); mi->polygon_count += dc->polys[6]; if (!wire) glEnable (GL_LIGHTING); @@ -2299,6 +2375,7 @@ draw_logo (ModeInfo *mi) if (wire) { + glDisable (GL_LIGHTING); glCallList (dc->gasket_list_wire); mi->polygon_count += dc->polys[4]; } @@ -2306,9 +2383,11 @@ draw_logo (ModeInfo *mi) { glCallList (dc->gasket_list); glDisable (GL_LIGHTING); + glColor3fv (dc->color); glCallList (dc->gasket_list_wire); mi->polygon_count += dc->polys[4]; if (!wire) glEnable (GL_LIGHTING); + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, gcolor); } else { @@ -2338,6 +2417,7 @@ draw_logo (ModeInfo *mi) if (wire) { + glDisable (GL_LIGHTING); if (pizza_p) glCallList (dc->pizza_list_wire); else @@ -2352,6 +2432,7 @@ draw_logo (ModeInfo *mi) glCallList (dc->helix_list_facetted); glDisable (GL_LIGHTING); + glColor3fv (dc->color); if (pizza_p) glCallList (dc->pizza_list_wire); @@ -2381,6 +2462,6 @@ draw_logo (ModeInfo *mi) glXSwapBuffers(dpy, window); } -XSCREENSAVER_MODULE_2 ("DNAlogo", dnalogo, logo) +XSCREENSAVER_MODULE_2 ("DNALogo", dnalogo, logo) #endif /* USE_GL */ diff --git a/hacks/glx/dnapizza.h b/hacks/glx/dnapizza.h new file mode 100644 index 00000000..6dd48b96 --- /dev/null +++ b/hacks/glx/dnapizza.h @@ -0,0 +1,122 @@ +/* DNA Pizza Logo, Copyright (c) 2011-2012 Jamie Zawinski + + Since GLUtesselator doesn't exist in the iOS build, the slice shape + of the DNA Pizza logo is hardcoded there, instead of being generated. + (These vertexes were generated by GLUtesselator and saved.) + */ + +static const GLfloat dnapizza_triangles[]={ + 0.315,0.213301,0, 0.296699,0.195,0, 0.309,0.455,0, + 0.296699,0.195,0, 0.29,0.17,0, 0.309,0.455,0, + 0.309,0.455,0, 0.29,0.17,0, 0.26,0.452,0, + 0.29,0.17,0, 0.23,0.042,0, 0.26,0.452,0, + 0.26,0.452,0, 0.23,0.042,0, 0.216,0.293,0, + 0.23,0.042,0, 0.21,0,0, 0.216,0.293,0, + 0.216,0.293,0, 0.21,0,0, 0.149,0.178,0, + 0.21,0,0, 0.102,0.178,0, 0.149,0.178,0, + 0.376,0.572,0, 0.353,0.613,0, 0.411,0.68402,0, + 0.376,0.572,0, 0.411,0.68402,0, 0.383301,0.195,0, + 0.376,0.572,0, 0.383301,0.195,0, 0.365,0.213301,0, + 0.376,0.572,0, 0.365,0.213301,0, 0.34,0.22,0, + 0.376,0.572,0, 0.34,0.22,0, 0.315,0.213301,0, + 0.376,0.572,0, 0.315,0.213301,0, 0.309,0.455,0, + 0.39,0.17,0, 0.383301,0.195,0, 0.411,0.68402,0, + 0.39,0.17,0, 0.411,0.68402,0, 0.48,0.17,0, + 0.39,0.17,0, 0.48,0.17,0, 0.488039,0.14,0, + 0.39,0.17,0, 0.488039,0.14,0, 0.51,0.118038,0, + 0.39,0.17,0, 0.51,0.118038,0, 0.616,0.042,0, + 0.39,0.17,0, 0.616,0.042,0, 0.383301,0.145,0, + 0.798,0,0, 0.641,0,0, 0.645595,0.469053,0, + 0.798,0,0, 0.645595,0.469053,0, 0.653683,0.457714,0, + 0.798,0,0, 0.653683,0.457714,0, 0.661572,0.446236,0, + 0.798,0,0, 0.661572,0.446236,0, 0.669259,0.434622,0, + 0.798,0,0, 0.669259,0.434622,0, 0.676742,0.422876,0, + 0.798,0,0, 0.676742,0.422876,0, 0.68402,0.411,0, + 0.798,0,0, 0.68402,0.411,0, 0.691088,0.399,0, + 0.798,0,0, 0.691088,0.399,0, 0.697947,0.386878,0, + 0.798,0,0, 0.697947,0.386878,0, 0.704592,0.374638,0, + 0.798,0,0, 0.704592,0.374638,0, 0.711023,0.362284,0, + 0.798,0,0, 0.711023,0.362284,0, 0.717238,0.34982,0, + 0.798,0,0, 0.717238,0.34982,0, 0.723234,0.337249,0, + 0.798,0,0, 0.723234,0.337249,0, 0.729009,0.324576,0, + 0.798,0,0, 0.729009,0.324576,0, 0.734563,0.311803,0, + 0.798,0,0, 0.734563,0.311803,0, 0.739893,0.298936,0, + 0.798,0,0, 0.739893,0.298936,0, 0.744997,0.285978,0, + 0.798,0,0, 0.744997,0.285978,0, 0.749875,0.272932,0, + 0.798,0,0, 0.749875,0.272932,0, 0.754524,0.259803,0, + 0.798,0,0, 0.754524,0.259803,0, 0.758943,0.246596,0, + 0.798,0,0, 0.758943,0.246596,0, 0.763131,0.233313,0, + 0.798,0,0, 0.763131,0.233313,0, 0.767087,0.219959,0, + 0.798,0,0, 0.767087,0.219959,0, 0.770809,0.206538,0, + 0.798,0,0, 0.770809,0.206538,0, 0.774296,0.193054,0, + 0.798,0,0, 0.774296,0.193054,0, 0.777547,0.179511,0, + 0.798,0,0, 0.777547,0.179511,0, 0.780562,0.165914,0, + 0.798,0,0, 0.780562,0.165914,0, 0.783338,0.152266,0, + 0.798,0,0, 0.783338,0.152266,0, 0.785877,0.138571,0, + 0.798,0,0, 0.785877,0.138571,0, 0.788175,0.124835,0, + 0.798,0,0, 0.788175,0.124835,0, 0.790234,0.11106,0, + 0.798,0,0, 0.790234,0.11106,0, 0.792052,0.097252,0, + 0.798,0,0, 0.792052,0.097252,0, 0.793628,0.083414,0, + 0.798,0,0, 0.793628,0.083414,0, 0.794963,0.06955,0, + 0.798,0,0, 0.794963,0.06955,0, 0.796056,0.055666,0, + 0.798,0,0, 0.796056,0.055666,0, 0.796906,0.041764,0, + 0.798,0,0, 0.796906,0.041764,0, 0.797514,0.02785,0, + 0.798,0,0, 0.797514,0.02785,0, 0.797878,0.013927,0, + 0.641,0,0, 0.616,0.042,0, 0.620162,0.502198,0, + 0.641,0,0, 0.620162,0.502198,0, 0.628833,0.491298,0, + 0.641,0,0, 0.628833,0.491298,0, 0.637311,0.480248,0, + 0.641,0,0, 0.637311,0.480248,0, 0.645595,0.469053,0, + 0.616,0.042,0, 0.51,0.118038,0, 0.54,0.11,0, + 0.616,0.042,0, 0.54,0.11,0, 0.57,0.118038,0, + 0.616,0.042,0, 0.57,0.118038,0, 0.591962,0.14,0, + 0.616,0.042,0, 0.591962,0.14,0, 0.6,0.17,0, + 0.616,0.042,0, 0.6,0.17,0, 0.601962,0.33,0, + 0.616,0.042,0, 0.601962,0.33,0, 0.61,0.36,0, + 0.616,0.042,0, 0.61,0.36,0, 0.611303,0.512945,0, + 0.616,0.042,0, 0.611303,0.512945,0, 0.620162,0.502198,0, + 0.48,0.17,0, 0.411,0.68402,0, 0.422875,0.676743,0, + 0.48,0.17,0, 0.422875,0.676743,0, 0.434622,0.669259,0, + 0.48,0.17,0, 0.434622,0.669259,0, 0.446236,0.661572,0, + 0.48,0.17,0, 0.446236,0.661572,0, 0.457714,0.653684,0, + 0.48,0.17,0, 0.457714,0.653684,0, 0.469052,0.645596,0, + 0.48,0.17,0, 0.469052,0.645596,0, 0.480248,0.637311,0, + 0.48,0.17,0, 0.480248,0.637311,0, 0.488038,0.2,0, + 0.616,0.042,0, 0.23,0.042,0, 0.315,0.126699,0, + 0.616,0.042,0, 0.315,0.126699,0, 0.34,0.12,0, + 0.616,0.042,0, 0.34,0.12,0, 0.365,0.126699,0, + 0.616,0.042,0, 0.365,0.126699,0, 0.383301,0.145,0, + 0.23,0.042,0, 0.29,0.17,0, 0.296699,0.145,0, + 0.23,0.042,0, 0.296699,0.145,0, 0.315,0.126699,0, + 0.58362,0.544235,0, 0.593029,0.533966,0, 0.601961,0.39,0, + 0.593029,0.533966,0, 0.602258,0.523535,0, 0.601961,0.39,0, + 0.601961,0.39,0, 0.602258,0.523535,0, 0.61,0.36,0, + 0.602258,0.523535,0, 0.611303,0.512945,0, 0.61,0.36,0, + 0.58,0.411962,0, 0.55,0.42,0, 0.554337,0.574033,0, + 0.58,0.411962,0, 0.554337,0.574033,0, 0.564271,0.564271,0, + 0.58,0.411962,0, 0.564271,0.564271,0, 0.574033,0.554338,0, + 0.58,0.411962,0, 0.574033,0.554338,0, 0.58362,0.544235,0, + 0.58,0.411962,0, 0.58362,0.544235,0, 0.601961,0.39,0, + 0.55,0.42,0, 0.52,0.411962,0, 0.523535,0.602258,0, + 0.55,0.42,0, 0.523535,0.602258,0, 0.533966,0.59303,0, + 0.55,0.42,0, 0.533966,0.59303,0, 0.544235,0.58362,0, + 0.55,0.42,0, 0.544235,0.58362,0, 0.554337,0.574033,0, + 0.51,0.221962,0, 0.488038,0.2,0, 0.49,0.36,0, + 0.488038,0.2,0, 0.491298,0.628833,0, 0.49,0.36,0, + 0.49,0.36,0, 0.491298,0.628833,0, 0.498038,0.39,0, + 0.491298,0.628833,0, 0.502197,0.620163,0, 0.498038,0.39,0, + 0.498038,0.39,0, 0.502197,0.620163,0, 0.52,0.411962,0, + 0.502197,0.620163,0, 0.512944,0.611304,0, 0.52,0.411962,0, + 0.52,0.411962,0, 0.512944,0.611304,0, 0.523535,0.602258,0, + 0.49,0.36,0, 0.498039,0.33,0, 0.51,0.221962,0, + 0.498039,0.33,0, 0.52,0.308039,0, 0.51,0.221962,0, + 0.51,0.221962,0, 0.52,0.308039,0, 0.54,0.23,0, + 0.52,0.308039,0, 0.55,0.3,0, 0.54,0.23,0, + 0.54,0.23,0, 0.55,0.3,0, 0.57,0.221962,0, + 0.55,0.3,0, 0.58,0.308039,0, 0.57,0.221962,0, + 0.57,0.221962,0, 0.58,0.308039,0, 0.591962,0.2,0, + 0.58,0.308039,0, 0.601962,0.33,0, 0.591962,0.2,0, + 0.591962,0.2,0, 0.601962,0.33,0, 0.6,0.17,0, + 0.488038,0.2,0, 0.480248,0.637311,0, 0.491298,0.628833,0, + 0.26,0.452,0, 0.216,0.293,0, 0.192,0.332,0, + 0.102,0.178,0, 0.21,0,0, 0,0,0, +}; diff --git a/hacks/glx/endgame.c b/hacks/glx/endgame.c index eabc91c8..e1c83eab 100644 --- a/hacks/glx/endgame.c +++ b/hacks/glx/endgame.c @@ -333,33 +333,42 @@ static void drawMovingPiece(ModeInfo *mi, Chesscreen *cs, int shadow) cs->mpiece = cs->mpiece == PAWN ? QUEEN : BQUEEN; } else if(cs->mpiece % PIECES == KNIGHT) { - GLfloat shine[1]; - GLfloat spec[4]; - GLfloat mult; - glTranslatef(cs->steps < 50 ? cs->from[1] : cs->to[1], 0.0, - cs->steps < 50 ? cs->from[0] : cs->to[0]); - - mult = cs->steps < 10 - ? (1.0 - cs->steps / 10.0) : 100 - cs->steps < 10 - ? (1.0 - (100 - cs->steps) / 10.0) : 0.0; - - shine[0] = mult*shininess[0]; - spec[0] = mult*specular[0]; - spec[1] = mult*specular[1]; - spec[2] = mult*specular[2]; - spec[3] = 1.0; - glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, shine); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, spec); + /* If there is nothing in the path of a knight, move it by sliding, + just like the other pieces. But if there are any pieces on the + middle two squares in its path, the knight would intersect them, + so in that case, move it in an airborne arc. */ + GLfloat y; + int i, j; + Bool blocked_p = False; + int fromx = MIN(cs->from[1], cs->to[1]); + int fromy = MIN(cs->from[0], cs->to[0]); + int tox = MAX(cs->from[1], cs->to[1]); + int toy = MAX(cs->from[0], cs->to[0]); + if (fromx == tox-2) fromx = tox = fromx+1; + if (fromy == toy-2) fromy = toy = fromy+1; + for (i = fromy; i <= toy; i++) { + for (j = fromx; j <= tox; j++) { + if (cs->game.board[i][j]) { + blocked_p = True; + break; + } + } + } - glColor4f(shadow ? MaterialShadow[0] : cs->colors[cs->mpiece/7][0], - shadow ? MaterialShadow[1] : cs->colors[cs->mpiece/7][1], - shadow ? MaterialShadow[2] : cs->colors[cs->mpiece/7][2], - fabs(49-cs->steps)/49.0); + if (!blocked_p) + goto SLIDE; - glScalef(fabs(49-cs->steps)/49.0, fabs(49-cs->steps)/49.0, fabs(49-cs->steps)/49.0); - } - else + /* Move by hopping. */ + y = 1.5 * sin (M_PI * cs->steps / 100.0); + glTranslatef(cs->from[1]+cs->steps*cs->dx, y, + cs->from[0]+cs->steps*cs->dz); + + } else { + SLIDE: + /* Move by sliding. */ glTranslatef(cs->from[1]+cs->steps*cs->dx, 0.0, cs->from[0]+cs->steps*cs->dz); + } + if(!cs->wire) glEnable(GL_BLEND); @@ -434,15 +443,87 @@ static void drawBoard(ModeInfo *mi, Chesscreen *cs) mi->polygon_count++; } - - /* chop underneath board */ -/* glColor3f(0, 0, 0); */ -/* glNormal3f(0, -1, 0); */ -/* glVertex3f(0, 0, BOARDSIZE); */ -/* glVertex3f(0, 0, 0); */ -/* glVertex3f(BOARDSIZE, 0, 0); */ -/* glVertex3f(BOARDSIZE, 0, BOARDSIZE); */ glEnd(); + + { + GLfloat off = 0.01; + GLfloat w = BOARDSIZE; + GLfloat h = 0.1; + + /* Give the board a slight lip. */ + /* #### oops, normals are wrong here, but you can't tell */ + + glColor3f(0.3, 0.3, 0.3); + glBegin (GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, -h, w); + glVertex3f (0, 0, w); + + glVertex3f (0, 0, w); + glVertex3f (0, -h, w); + glVertex3f (w, -h, w); + glVertex3f (w, 0, w); + + glVertex3f (w, 0, w); + glVertex3f (w, -h, w); + glVertex3f (w, -h, 0); + glVertex3f (w, 0, 0); + + glVertex3f (w, 0, 0); + glVertex3f (w, -h, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, 0, 0); + + glVertex3f (0, -h, 0); + glVertex3f (w, -h, 0); + glVertex3f (w, -h, w); + glVertex3f (0, -h, w); + glEnd(); + mi->polygon_count += 4; + + /* Fill in the underside of the board with an invisible black box + to hide the reflections that are not on tiles. Probably there's + a way to do this with stencils instead. + */ + w -= off*2; + h = 5; + + glPushMatrix(); + glTranslatef (off, 0, off); + glDisable(GL_LIGHTING); + glColor3f(0,0,0); + glBegin (GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, -h, w); + glVertex3f (0, 0, w); + + glVertex3f (0, 0, w); + glVertex3f (0, -h, w); + glVertex3f (w, -h, w); + glVertex3f (w, 0, w); + + glVertex3f (w, 0, w); + glVertex3f (w, -h, w); + glVertex3f (w, -h, 0); + glVertex3f (w, 0, 0); + + glVertex3f (w, 0, 0); + glVertex3f (w, -h, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, 0, 0); + + glVertex3f (0, -h, 0); + glVertex3f (w, -h, 0); + glVertex3f (w, -h, w); + glVertex3f (0, -h, w); + glEnd(); + mi->polygon_count += 4; + glPopMatrix(); + if (!cs->wire) + glEnable(GL_LIGHTING); + } } static void draw_pieces(ModeInfo *mi, Chesscreen *cs, int wire) @@ -639,11 +720,10 @@ static void display(ModeInfo *mi, Chesscreen *cs) /** setup perspectiv */ glTranslatef(0.0, 0.0, -1.5*BOARDSIZE); glRotatef(30.0, 1.0, 0.0, 0.0); - glRotatef(-current_device_rotation(), 0, 0, 1); gltrackball_rotate (cs->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); - glRotatef(cs->theta*100, 0.0, 1.0, 0.0); + if (rotate) + glRotatef(cs->theta*100, 0.0, 1.0, 0.0); glTranslatef(-0.5*BOARDSIZE, 0.0, -0.5*BOARDSIZE); /* cs->position[0] = 4.0 + 1.0*-sin(cs->theta*100*M_PI/180.0); */ @@ -799,7 +879,7 @@ ENTRYPOINT void init_chess(ModeInfo *mi) make_piece_texture(cs); make_board_texture(cs); } - gen_model_lists( classic, cs->poly_counts); + chessmodels_gen_lists( classic, cs->poly_counts); if(!cs->wire) { setup_lights(cs); diff --git a/hacks/glx/engine.c b/hacks/glx/engine.c index d83c0e45..bd080313 100644 --- a/hacks/glx/engine.c +++ b/hacks/glx/engine.c @@ -618,6 +618,7 @@ static int display(Engine *e) e->lookat[0], e->lookat[1], e->lookat[2], 0.0, 1.0, 0.0); glPushMatrix(); + glLightfv(GL_LIGHT0, GL_POSITION, lightpos); glLightfv(GL_LIGHT0, GL_SPECULAR, light_sp); glLightfv(GL_LIGHT0, GL_DIFFUSE, light_sp); @@ -627,9 +628,15 @@ static int display(Engine *e) get_position (e->rot, &x, &y, &z, !e->button_down_p); glTranslatef(x*16-9, y*14-7, z*16-10); } + if (spin) { double x, y, z; + + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (e->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); + get_rotation(e->rot, &x, &y, &z, !e->button_down_p); glRotatef(x*ONEREV, 1.0, 0.0, 0.0); glRotatef(y*ONEREV, 0.0, 1.0, 0.0); @@ -983,6 +990,7 @@ ENTRYPOINT void draw_engine(ModeInfo *mi) mi->polygon_count = display(e); + glColor3f (1, 1, 0); if (do_titles) print_gl_string (mi->dpy, # ifdef HAVE_GLBITMAP diff --git a/hacks/glx/flipflop.c b/hacks/glx/flipflop.c index 0d534e53..640f21f7 100644 --- a/hacks/glx/flipflop.c +++ b/hacks/glx/flipflop.c @@ -270,9 +270,7 @@ display(Flipflopcreen *c) /** setup perspectif */ glTranslatef(0.0, 0.0, -c->reldist*board_avg_size); glRotatef(22.5, 1.0, 0.0, 0.0); - glRotatef(-current_device_rotation(), 0, 0, 1); gltrackball_rotate (c->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); glRotatef(c->theta*100, 0.0, 1.0, 0.0); glTranslatef(-0.5*board_x_size, 0.0, -0.5*board_y_size); /* Center the board */ diff --git a/hacks/glx/flyingtoasters.c b/hacks/glx/flyingtoasters.c index b9915f5a..23217f03 100644 --- a/hacks/glx/flyingtoasters.c +++ b/hacks/glx/flyingtoasters.c @@ -810,10 +810,11 @@ draw_toasters (ModeInfo *mi) glRotatef(current_device_rotation(), 0, 0, 1); glRotatef(bp->view_x, 1, 0, 0); glRotatef(bp->view_y, 0, 1, 0); - glRotatef(-current_device_rotation(), 0, 0, 1); - gltrackball_rotate (bp->user_trackball); - glRotatef(current_device_rotation(), 0, 0, 1); + /* Rotate the scene around a point that's a little deeper in. */ + glTranslatef (0, 0, -50); + gltrackball_rotate (bp->user_trackball); + glTranslatef (0, 0, 50); #if 0 { diff --git a/hacks/glx/gears.c b/hacks/glx/gears.c index 42a9e70b..bc925dd5 100644 --- a/hacks/glx/gears.c +++ b/hacks/glx/gears.c @@ -869,7 +869,10 @@ draw_gears (ModeInfo *mi) (y - 0.5) * 4, (z - 0.5) * 7); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (bp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); diff --git a/hacks/glx/gflux.c b/hacks/glx/gflux.c index 80310cc2..f3829b59 100644 --- a/hacks/glx/gflux.c +++ b/hacks/glx/gflux.c @@ -281,7 +281,10 @@ gflux_handle_event (ModeInfo *mi, XEvent *event) static void userRot(gfluxstruct *gp) { + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (gp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); } /* draw the gflux once */ diff --git a/hacks/glx/glcells.c b/hacks/glx/glcells.c index 0ec1af3f..e652048a 100644 --- a/hacks/glx/glcells.c +++ b/hacks/glx/glcells.c @@ -1197,8 +1197,7 @@ reshape_glcells( ModeInfo *mi, int width, int height ) if (st->food) free( st->food ); st->food = (int *)malloc( ((width*height)/16)*sizeof(int) ); - - create_cells( st ); + /* create_cells( st );*/ } ENTRYPOINT void diff --git a/hacks/glx/glknots.c b/hacks/glx/glknots.c index 4738b71d..6bf5ccd9 100644 --- a/hacks/glx/glknots.c +++ b/hacks/glx/glknots.c @@ -416,7 +416,10 @@ draw_knot (ModeInfo *mi) (y - 0.5) * 8, (z - 0.5) * 15); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (bp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); diff --git a/hacks/glx/glplanet.c b/hacks/glx/glplanet.c index 21cf1f4d..98e13e8d 100644 --- a/hacks/glx/glplanet.c +++ b/hacks/glx/glplanet.c @@ -589,7 +589,10 @@ draw_planet (ModeInfo * mi) (y - 0.5) * 15, (z - 0.5) * 8); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (gp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); glRotatef (90,1,0,0); diff --git a/hacks/glx/glschool.c b/hacks/glx/glschool.c index 1ef4c130..eb522a03 100644 --- a/hacks/glx/glschool.c +++ b/hacks/glx/glschool.c @@ -126,11 +126,12 @@ reshape_glschool(ModeInfo *mi, int width, int height) glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(sc->context)); if (sc->school != (School *)0) { - setBBox(sc->school, -aspect*160, aspect*160, -130, 130, -450, -50.0); + glschool_setBBox(sc->school, -aspect*160, aspect*160, -130, 130, -450, -50.0); glDeleteLists(sc->bboxList, 1); - createBBoxList(&SCHOOL_BBOX(sc->school), &sc->bboxList, wire); + glschool_createBBoxList(&SCHOOL_BBOX(sc->school), + &sc->bboxList, wire); } - reshape(width, height); + glschool_reshape(width, height); } ENTRYPOINT void @@ -162,7 +163,7 @@ init_glschool(ModeInfo *mi) sc->colors, &sc->nColors, False, 0, False); - sc->school = initSchool(NFish, AccLimit, MaxVel, MinVel, DistExp, Momentum, + sc->school = glschool_initSchool(NFish, AccLimit, MaxVel, MinVel, DistExp, Momentum, MinRadius, AvoidFact, MatchFact, CenterFact, TargetFact, DistComp); if (sc->school == (School *)0) { @@ -172,11 +173,12 @@ init_glschool(ModeInfo *mi) reshape_glschool(mi, width, height); - initGLEnv(DoFog); - initFishes(sc->school); - createDrawLists(&SCHOOL_BBOX(sc->school), &sc->bboxList, &sc->goalList, &sc->fishList, - &sc->fish_polys, &sc->box_polys, wire); - computeAccelerations(sc->school); + glschool_initGLEnv(DoFog); + glschool_initFishes(sc->school); + glschool_createDrawLists(&SCHOOL_BBOX(sc->school), + &sc->bboxList, &sc->goalList, &sc->fishList, + &sc->fish_polys, &sc->box_polys, wire); + glschool_computeAccelerations(sc->school); } ENTRYPOINT void @@ -196,17 +198,19 @@ draw_glschool(ModeInfo *mi) mi->polygon_count = 0; if ((sc->goalCounter % GoalChgFreq) == 0) - newGoal(sc->school); + glschool_newGoal(sc->school); sc->goalCounter++; sc->rotCounter++; sc->rotCounter = (sc->rotCounter%360); - applyMovements(sc->school); - drawSchool(sc->colors, sc->school, sc->bboxList, sc->goalList, sc->fishList, sc->rotCounter, sc->drawGoal, sc->drawBBox, - sc->fish_polys, sc->box_polys, - &mi->polygon_count); - computeAccelerations(sc->school); + glschool_applyMovements(sc->school); + glschool_drawSchool(sc->colors, sc->school, sc->bboxList, + sc->goalList, sc->fishList, sc->rotCounter, + sc->drawGoal, sc->drawBBox, + sc->fish_polys, sc->box_polys, + &mi->polygon_count); + glschool_computeAccelerations(sc->school); if (mi->fps_p) do_fps(mi); diff --git a/hacks/glx/glschool_alg.c b/hacks/glx/glschool_alg.c index 5eef4e67..32b4a5f4 100644 --- a/hacks/glx/glschool_alg.c +++ b/hacks/glx/glschool_alg.c @@ -77,7 +77,7 @@ getDifferenceVector(double *v0, double *v1, double *diff) void -initFish(Fish *f, double *mins, double *ranges) +glschool_initFish(Fish *f, double *mins, double *ranges) { int i; @@ -92,7 +92,7 @@ initFish(Fish *f, double *mins, double *ranges) void -initFishes(School *s) +glschool_initFishes(School *s) { int i; Fish *f = (Fish *)0; @@ -103,11 +103,11 @@ initFishes(School *s) Fish *theFishes = SCHOOL_FISHES(s); for(i = 0, f = theFishes; i < nFish; i++, f++) - initFish(f, mins, ranges); + glschool_initFish(f, mins, ranges); } -void +static void applyFishMovements(Fish *f, BBox *bbox, double minVel, double maxVel, double momentum) { int i; @@ -141,7 +141,7 @@ applyFishMovements(Fish *f, BBox *bbox, double minVel, double maxVel, double mom void -applyMovements(School *s) +glschool_applyMovements(School *s) { int i = 0; Fish *f = (Fish *)0; @@ -158,7 +158,7 @@ applyMovements(School *s) School * -initSchool(int nFish, double accLimit, double maxV, double minV, double distExp, double momentum, +glschool_initSchool(int nFish, double accLimit, double maxV, double minV, double distExp, double momentum, double minRadius, double avoidFact, double matchFact, double centerFact, double targetFact, double distComp) { @@ -193,14 +193,14 @@ initSchool(int nFish, double accLimit, double maxV, double minV, double distExp, } void -freeSchool(School *s) +glschool_freeSchool(School *s) { free(SCHOOL_FISHES(s)); free(s); } void -setBBox(School *s, double xMin, double xMax, double yMin, double yMax, double zMin, double zMax) +glschool_setBBox(School *s, double xMin, double xMax, double yMin, double yMax, double zMin, double zMax) { int i; BBox *bbox = &SCHOOL_BBOX(s); @@ -217,7 +217,7 @@ setBBox(School *s, double xMin, double xMax, double yMin, double yMax, double zM void -newGoal(School *s) +glschool_newGoal(School *s) { SCHOOL_IGOAL(s,0) = 0.85*(drand48()-0.5)*SCHOOL_IRANGE(s,0) + SCHOOL_IMID(s,0); SCHOOL_IGOAL(s,1) = 0.40*(drand48()-0.5)*SCHOOL_IRANGE(s,1) + SCHOOL_IMID(s,1); @@ -226,7 +226,7 @@ newGoal(School *s) double -computeNormalAndThetaToPlusZ(double *v, double *xV) +glschool_computeNormalAndThetaToPlusZ(double *v, double *xV) { double x1 = 0.0; double y1 = 0.0; @@ -255,7 +255,7 @@ computeNormalAndThetaToPlusZ(double *v, double *xV) int -computeGroupVectors(School *s, Fish *ref, double *avoidance, double *centroid, double *avgVel) +glschool_computeGroupVectors(School *s, Fish *ref, double *avoidance, double *centroid, double *avgVel) { int i; double dist; @@ -296,7 +296,7 @@ computeGroupVectors(School *s, Fish *ref, double *avoidance, double *centroid, d void -computeAccelerations(School *s) +glschool_computeAccelerations(School *s) { int i; int j; @@ -326,7 +326,7 @@ computeAccelerations(School *s) clearVector(centroid); clearVector(avoidance); clearVector(FISH_ACC(ref)); - neighborCount = computeGroupVectors(s, ref, avoidance, centroid, avgVel); + neighborCount = glschool_computeGroupVectors(s, ref, avoidance, centroid, avgVel); /* avoidanceAccel[] = avoidance[] * AvoidFact */ scaleVector(avoidance, avoidFact); diff --git a/hacks/glx/glschool_alg.h b/hacks/glx/glschool_alg.h index 88f8800e..339e778f 100644 --- a/hacks/glx/glschool_alg.h +++ b/hacks/glx/glschool_alg.h @@ -107,20 +107,20 @@ typedef struct { #define SCHOOL_FISHES(s) ((s)->theFish) #define SCHOOL_IFISH(s,i) ((s)->theFish[i]) -extern void initFishes(School *); -extern void initFish(Fish *, double *, double *); +extern void glschool_initFishes(School *); +extern void glschool_initFish(Fish *, double *, double *); -extern void applyMovements(School *); -extern void applyFishMovements(Fish *, BBox *, double, double, double); +extern void glschool_applyMovements(School *); +/* extern void applyFishMovements(Fish *, BBox *, double, double, double); */ -extern void freeSchool(School *); -extern School *initSchool(int, double, double, double, double, double, double, double, double, double, double, double); +extern void glschool_freeSchool(School *); +extern School *glschool_initSchool(int, double, double, double, double, double, double, double, double, double, double, double); -extern void newGoal(School *); -extern void setBBox(School *, double, double, double, double, double, double); +extern void glschool_newGoal(School *); +extern void glschool_setBBox(School *, double, double, double, double, double, double); -extern void computeAccelerations(School *); -extern double computeNormalAndThetaToPlusZ(double *, double *); -int computeGroupVectors(School *, Fish *, double *, double *, double *); +extern void glschool_computeAccelerations(School *); +extern double glschool_computeNormalAndThetaToPlusZ(double *, double *); +int glschool_computeGroupVectors(School *, Fish *, double *, double *, double *); #endif /* __GLSCHOOL_ALG_H__ */ diff --git a/hacks/glx/glschool_gl.c b/hacks/glx/glschool_gl.c index 3775b109..660580b9 100644 --- a/hacks/glx/glschool_gl.c +++ b/hacks/glx/glschool_gl.c @@ -15,7 +15,7 @@ #include "tube.h" void -drawGoal(double *goal, GLuint goalList) +glschool_drawGoal(double *goal, GLuint goalList) { glColor3f(1.0, 0.0, 0.0); glPushMatrix(); @@ -28,7 +28,7 @@ drawGoal(double *goal, GLuint goalList) } int -drawBoundingBox(BBox *bbox, Bool wire) +glschool_drawBoundingBox(BBox *bbox, Bool wire) { int polys = 0; double xMin = BBOX_XMIN(bbox); @@ -98,18 +98,18 @@ drawBoundingBox(BBox *bbox, Bool wire) } int -createBBoxList(BBox *bbox, GLuint *bboxList, int wire) +glschool_createBBoxList(BBox *bbox, GLuint *bboxList, int wire) { int polys = 0; *bboxList = glGenLists(1); glNewList(*bboxList, GL_COMPILE); - polys = drawBoundingBox(bbox, wire); + polys = glschool_drawBoundingBox(bbox, wire); glEndList(); return polys; } void -createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList, int *fish_polys, int *box_polys, int wire) +glschool_createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList, int *fish_polys, int *box_polys, int wire) { int faces = 16; @@ -117,7 +117,7 @@ createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList *box_polys = 0; *fish_polys = 0; - *box_polys += createBBoxList(bbox, bboxList, wire); + *box_polys += glschool_createBBoxList(bbox, bboxList, wire); *box_polys = 0; *fish_polys = 0; @@ -145,7 +145,7 @@ createDrawLists(BBox *bbox, GLuint *bboxList, GLuint *goalList, GLuint *fishList void -initLights(void) +glschool_initLights(void) { GLfloat amb[4] = {0.1, 0.1, 0.1, 1.0}; GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; @@ -165,7 +165,7 @@ initLights(void) } void -initFog() +glschool_initFog(void) { GLfloat fog[4] = {0.0, 0.0, 0.15, 1.0}; @@ -177,7 +177,7 @@ initFog() } void -initGLEnv(Bool doFog) +glschool_initGLEnv(Bool doFog) { GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; @@ -194,12 +194,12 @@ initGLEnv(Bool doFog) glShadeModel(GL_SMOOTH); glEnable(GL_CULL_FACE); - initLights(); - if (doFog) initFog(); + glschool_initLights(); + if (doFog) glschool_initFog(); } void -reshape(int width, int height) +glschool_reshape(int width, int height) { GLfloat h = (GLfloat) width / (GLfloat) height; @@ -214,7 +214,7 @@ reshape(int width, int height) } void -getColorVect(XColor *colors, int index, double *colorVect) +glschool_getColorVect(XColor *colors, int index, double *colorVect) { colorVect[0] = colors[index].red / 65535.0; colorVect[1] = colors[index].green / 65535.0; @@ -222,7 +222,7 @@ getColorVect(XColor *colors, int index, double *colorVect) } void -drawSchool(XColor *colors, School *s, +glschool_drawSchool(XColor *colors, School *s, GLuint bboxList, GLuint goalList, GLuint fishList, int rotCounter, Bool drawGoal_p, Bool drawBBox_p, int fish_polys, int box_polys, unsigned long *polys) @@ -248,16 +248,16 @@ drawSchool(XColor *colors, School *s, *polys += box_polys; } - if (drawGoal_p) drawGoal(SCHOOL_GOAL(s), goalList); + if (drawGoal_p) glschool_drawGoal(SCHOOL_GOAL(s), goalList); for(i = 0, f = theFishes; i < nFish; i++, f++) { - colTheta = computeNormalAndThetaToPlusZ(FISH_AVGVEL(f), xVect); - rotTheta = computeNormalAndThetaToPlusZ(FISH_VEL(f), xVect); + colTheta = glschool_computeNormalAndThetaToPlusZ(FISH_AVGVEL(f), xVect); + rotTheta = glschool_computeNormalAndThetaToPlusZ(FISH_VEL(f), xVect); if (FISH_IAVGVEL(f,2) < 0.0) colTheta = 180.0 - colTheta; if (FISH_VZ(f) < 0.0) rotTheta = 180.0 - rotTheta; - getColorVect(colors, (int)(colTheta+240)%360, colorVect); + glschool_getColorVect(colors, (int)(colTheta+240)%360, colorVect); glColor3f(colorVect[0], colorVect[1], colorVect[2]); glPushMatrix(); diff --git a/hacks/glx/glschool_gl.h b/hacks/glx/glschool_gl.h index 7676a0fd..ac311f7d 100644 --- a/hacks/glx/glschool_gl.h +++ b/hacks/glx/glschool_gl.h @@ -32,16 +32,16 @@ #include "glschool_alg.h" -extern void initFog(void); -extern void initGLEnv(Bool); -extern void initLights(void); -extern void reshape(int, int); -extern void drawGoal(double *, GLuint); -extern void getColorVect(XColor *, int, double *); -extern int drawBoundingBox(BBox *, Bool); -extern int createBBoxList(BBox *, GLuint *, int); -extern void createDrawLists(BBox *, GLuint *, GLuint *, GLuint *, int *, int *, Bool); -extern void drawSchool(XColor *, School *, GLuint, GLuint, GLuint, int, Bool, Bool, +extern void glschool_initFog(void); +extern void glschool_initGLEnv(Bool); +extern void glschool_initLights(void); +extern void glschool_reshape(int, int); +extern void glschool_drawGoal(double *, GLuint); +extern void glschool_getColorVect(XColor *, int, double *); +extern int glschool_drawBoundingBox(BBox *, Bool); +extern int glschool_createBBoxList(BBox *, GLuint *, int); +extern void glschool_createDrawLists(BBox *, GLuint *, GLuint *, GLuint *, int *, int *, Bool); +extern void glschool_drawSchool(XColor *, School *, GLuint, GLuint, GLuint, int, Bool, Bool, int, int, unsigned long *); #endif /* __GLSCHOOL_GL_H__ */ diff --git a/hacks/glx/gltext.c b/hacks/glx/gltext.c index 070a4e33..43d50fb9 100644 --- a/hacks/glx/gltext.c +++ b/hacks/glx/gltext.c @@ -1,4 +1,4 @@ -/* gltext, Copyright (c) 2001-2008 Jamie Zawinski +/* gltext, Copyright (c) 2001-2012 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -30,6 +30,7 @@ #include "xlockmore.h" #include "colors.h" #include "tube.h" +#include "sphere.h" #include "rotator.h" #include "gltrackball.h" #include "textclient.h" @@ -233,6 +234,10 @@ parse_text (ModeInfo *mi) # if defined(_AIX) sprintf(tp->text, "%s\n%s %s.%s", uts.nodename, uts.sysname, uts.version, uts.release); +# elif defined(USE_IPHONE) + /* "My iPhone\n iPhone4,1\n Darwin 11.0.0" */ + sprintf(tp->text, "%s\n%s\n%s %s", + uts.nodename, uts.machine, uts.sysname, uts.release); # elif defined(__APPLE__) /* MacOS X + XDarwin */ { const char *file = @@ -444,14 +449,26 @@ fill_character (GLUTstrokeFont font, int c, Bool wire, int *polysP) # else int smooth = False; # endif + if (j != stroke->num_coords) *polysP += tube (lx, ly, 0, coord->x, coord->y, 0, tube_width, tube_width * 0.15, - TUBE_FACES, smooth, True, wire); + TUBE_FACES, smooth, False, wire); lx = coord->x; ly = coord->y; + + /* Put a sphere at the endpoint of every line segment. Wasteful + on curves like "0" but necessary on corners like "4". */ + if (! wire) + { + glPushMatrix(); + glTranslatef (lx, ly, 0); + glScalef (tube_width, tube_width, tube_width); + *polysP += unit_sphere (TUBE_FACES, TUBE_FACES, wire); + glPopMatrix(); + } } } return (int) (ch->right + tube_width); @@ -586,6 +603,7 @@ draw_text (ModeInfo *mi) glPushMatrix (); glScalef(1.1, 1.1, 1.1); + glRotatef(current_device_rotation(), 0, 0, 1); { double x, y, z; @@ -595,7 +613,6 @@ draw_text (ModeInfo *mi) (z - 0.5) * 8); gltrackball_rotate (tp->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); if (face_front_p) { diff --git a/hacks/glx/gltrackball.c b/hacks/glx/gltrackball.c index c0ccaa13..93d4c542 100644 --- a/hacks/glx/gltrackball.c +++ b/hacks/glx/gltrackball.c @@ -29,6 +29,8 @@ #include "trackball.h" #include "gltrackball.h" +extern double current_device_rotation (void); /* Bah, it's in fps.h */ + struct trackball_state { int x, y; GLfloat q[4]; @@ -55,6 +57,7 @@ gltrackball_reset (trackball_state *ts) trackball (ts->q, 0, 0, 0, 0); } + /* Begin tracking the mouse: Call this when the mouse button goes down. x and y are the mouse position relative to the window. w and h are the size of the window. diff --git a/hacks/glx/glxfonts.c b/hacks/glx/glxfonts.c index 669a8422..db068d77 100644 --- a/hacks/glx/glxfonts.c +++ b/hacks/glx/glxfonts.c @@ -59,6 +59,10 @@ extern char *progname; */ +#undef countof +#define countof(x) (sizeof((x))/sizeof((*x))) + + /* Width (and optionally height) of the string in pixels. */ int @@ -413,6 +417,7 @@ print_gl_string (Display *dpy, int tabs = cw * 7; int lines = 0; const char *c; + GLfloat color[4]; # ifdef HAVE_GLBITMAP /* Sadly, this causes a stall of the graphics pipeline (as would the @@ -445,6 +450,8 @@ print_gl_string (Display *dpy, glGetIntegerv (GL_BLEND_DST, &oblend); # endif /* !HAVE_GLBITMAP */ + glGetFloatv (GL_CURRENT_COLOR, color); + for (c = string; *c; c++) if (*c == '\n') lines++; @@ -468,6 +475,7 @@ print_gl_string (Display *dpy, glDisable (GL_LIGHTING); + if (!in_scene_p) glDisable (GL_DEPTH_TEST); glDisable (GL_CULL_FACE); @@ -531,6 +539,11 @@ print_gl_string (Display *dpy, check_gl_error ("glOrtho"); # endif + /* Let's always dropshadow the FPS and Title text. */ + if (! in_scene_p) + clear_background_p = True; + +#if 0 if (clear_background_p) { int w, h; @@ -554,6 +567,8 @@ print_gl_string (Display *dpy, # endif /* !HAVE_GLBITMAP */ glColor3f (1, 1, 1); } +#endif /* 0 */ + /* draw the text */ @@ -583,23 +598,43 @@ print_gl_string (Display *dpy, } else { + /* outline font in black */ + const XPoint offsets[] = {{ -1, -1 }, + { -1, 1 }, + { 1, 1 }, + { 1, -1 }, + { 0, 0 }}; + int j; +# ifndef HAVE_GLBITMAP + char s[2]; + s[0] = c; + s[1] = 0; +# endif /* !HAVE_GLBITMAP */ + + glColor3f (0, 0, 0); + for (j = 0; j < countof(offsets); j++) + { + if (! clear_background_p) + j = countof(offsets)-1; + if (offsets[j].x == 0) + glColor4fv (color); + +# ifdef HAVE_GLBITMAP + glRasterPos2f (x2 + offsets[j].x, y + offsets[j].y); + glCallList (font_dlist + (int)(c)); +# else /* !HAVE_GLBITMAP */ + glPushMatrix(); + glTranslatef (x2 + offsets[j].x, y + offsets[j].y, 0); + print_texture_string (font_data, s); + glPopMatrix(); +# endif /* !HAVE_GLBITMAP */ + } # ifdef HAVE_GLBITMAP - glRasterPos2f (x2, y); - glCallList (font_dlist + (int)(c)); x2 += (font->per_char ? font->per_char[c - font->min_char_or_byte2].width : font->min_bounds.width); # else /* !HAVE_GLBITMAP */ - glPushMatrix(); - glTranslatef (x2, y, 0); - { - char s[2]; - s[0] = c; - s[1] = 0; - print_texture_string (font_data, s); - x2 += texture_string_width (font_data, s, 0); - } - glPopMatrix(); + x2 += texture_string_width (font_data, s, 0); # endif /* !HAVE_GLBITMAP */ } } diff --git a/hacks/glx/hilbert.c b/hacks/glx/hilbert.c index c9ee163f..d8966f45 100644 --- a/hacks/glx/hilbert.c +++ b/hacks/glx/hilbert.c @@ -1017,7 +1017,10 @@ draw_hilbert (ModeInfo *mi) (y - 0.5) * 8, (z - 0.5) * 15); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (bp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); diff --git a/hacks/glx/jigglypuff.c b/hacks/glx/jigglypuff.c index 67c2c4b1..63b83294 100644 --- a/hacks/glx/jigglypuff.c +++ b/hacks/glx/jigglypuff.c @@ -990,7 +990,11 @@ ENTRYPOINT void draw_jigglypuff(ModeInfo *mi) js->axis -= 2*M_PI; } } + + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate(js->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); if(js->color_style == COLOR_STYLE_CYCLE) { int i; diff --git a/hacks/glx/jigsaw.c b/hacks/glx/jigsaw.c index 9d1371a1..3ffd08d6 100644 --- a/hacks/glx/jigsaw.c +++ b/hacks/glx/jigsaw.c @@ -1,4 +1,4 @@ -/* xscreensaver, Copyright (c) 1997-2008 Jamie Zawinski +/* xscreensaver, Copyright (c) 1997-2012 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -48,8 +48,10 @@ #define DEF_WOBBLE "True" #define DEF_DEBUG "False" +#define DEF_FONT "-*-helvetica-bold-r-normal-*-240-*" #define DEFAULTS "*delay: 20000 \n" \ "*showFPS: False \n" \ + "*font: " DEF_FONT"\n" \ "*wireframe: False \n" \ "*desktopGrabber: xscreensaver-getimage -no-desktop %s\n" \ "*grabDesktopImages: False \n" \ @@ -69,16 +71,19 @@ # include #endif -#ifdef HAVE_JWZGLES -# include "jwzgles.h" -#endif /* HAVE_JWZGLES */ - #include "xlockmore.h" #include "rotator.h" #include "gltrackball.h" #include "spline.h" #include "normals.h" #include "grab-ximage.h" +#include "texfont.h" + +#ifdef HAVE_JWZGLES +# include "jwzgles.h" +#else /* !HAVE_JWZGLES */ +# define HAVE_TESS +#endif /* !HAVE_JWZGLES */ #undef BELLRAND #define BELLRAND(n) ((frand((n)) + frand((n)) + frand((n))) / 3) @@ -122,12 +127,15 @@ struct jigsaw_configuration { trackball_state *trackball; rotator *rot; Bool button_down_p; + texture_font_data *texfont; + GLuint loading_dlist; int puzzle_width; int puzzle_height; puzzle_piece *puzzle; - enum { PUZZLE_LOADING, + enum { PUZZLE_LOADING_MSG, + PUZZLE_LOADING, PUZZLE_UNSCATTER, PUZZLE_SOLVE, PUZZLE_SCATTER } state; @@ -211,6 +219,8 @@ make_puzzle_curve (int pixels) } +#ifdef HAVE_TESS + static void tess_error_cb (GLenum errorCode) { @@ -260,6 +270,149 @@ tess_vertex_cb (void *vertex_data, void *closure) glVertex3d (x, y, z); } +#else /* HAVE_TESS */ + +/* Writes triangles into the array of floats. + Returns the number of floats written (triangles * 9). + */ +static int +make_piece_eighth (jigsaw_configuration *jc, const spline *s, + int resolution, int type, GLfloat *out, + Bool flip_x, Bool flip_y, Bool rotate_p) +{ + GLfloat *oout = out; + int cx = resolution/2; + int cy = resolution/2; + int np = (s->n_points / 2) + 1; + int last_x = -999999, last_y = -999999; + Bool inflected = False; + int i; + + if (type == FLAT) + { + *out++ = cx; + *out++ = 0; + *out++ = 0; + + *out++ = cx; + *out++ = cy; + *out++ = 0; + + *out++ = 0; + *out++ = 0; + *out++ = 0; + + goto END; + } + + for (i = (type == IN ? np-1 : 0); + (type == IN ? i >= 0 : i < np); + i += (type == IN ? -1 : 1)) + { + int x = s->points[i].x; + int y = s->points[i].y; + + if (type == IN) + y = -y; + + if (last_x != -999999) + { + if (!inflected && + (type == IN + ? x >= last_x + : x < last_x)) + { + inflected = True; + + *out++ = cx; + *out++ = cy; + *out++ = 0; + + *out++ = last_x; + *out++ = last_y; + *out++ = 0; + + if (type == IN) + { + cx = 0; + cy = 0; + } + else + { + cy = y; + } + + *out++ = cx; + *out++ = cy; + *out++ = 0; + } + + *out++ = cx; + *out++ = cy; + *out++ = 0; + + *out++ = last_x; + *out++ = last_y; + *out++ = 0; + + *out++ = x; + *out++ = y; + *out++ = 0; + } + + last_x = x; + last_y = y; + } + END: + + { + int count = out - oout; + Bool cw_p; + + if (flip_x) + for (i = 0; i < count; i += 3) + oout[i] = resolution - oout[i]; + + if (flip_y) + for (i = 0; i < count; i += 3) + oout[i+1] = resolution - oout[i+1]; + + cw_p = (type == IN); + if (flip_x) cw_p = !cw_p; + if (flip_y) cw_p = !cw_p; + + if (cw_p) + for (i = 0; i < count; i += 9) + { + GLfloat x1 = oout[i+0]; + GLfloat y1 = oout[i+1]; + GLfloat x2 = oout[i+3]; + GLfloat y2 = oout[i+4]; + GLfloat x3 = oout[i+6]; + GLfloat y3 = oout[i+7]; + oout[i+0] = x2; + oout[i+1] = y2; + oout[i+3] = x1; + oout[i+4] = y1; + oout[i+6] = x3; + oout[i+7] = y3; + } + + if (rotate_p) + for (i = 0; i < count; i += 3) + { + GLfloat x = oout[i]; + GLfloat y = oout[i+1]; + oout[i] = resolution - y; + oout[i+1] = x; + } + + return count; + } +} + +#endif /* !HAVE_TESS */ + /* Draws a puzzle piece. The top/right/bottom/left_type args @@ -331,11 +484,11 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p, } } - free_spline (s); - - { GLfloat s = 1.0 / resolution; glScalef (s, s, s); } + { GLfloat ss = 1.0 / resolution; glScalef (ss, ss, ss); } +# ifndef HAVE_JWZGLES glPolygonMode (GL_FRONT_AND_BACK, wire ? GL_LINE : GL_FILL); +# endif if (wire) { @@ -345,9 +498,11 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p, } else { -# ifndef _GLUfuncptr -# define _GLUfuncptr void(*)(void) -# endif +# ifdef HAVE_TESS + +# ifndef _GLUfuncptr +# define _GLUfuncptr void(*)(void) +# endif GLUtesselator *tess = gluNewTess(); gluTessCallback(tess, GLU_TESS_BEGIN, (_GLUfuncptr)glBegin); gluTessCallback(tess, GLU_TESS_VERTEX_DATA,(_GLUfuncptr)tess_vertex_cb); @@ -389,9 +544,104 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p, gluTessEndContour(tess); gluTessEndPolygon(tess); gluDeleteTess(tess); + + /* Put it back */ + for (i = 0; i < o; i += 3) + { + GLdouble *p = pts + i; + p[2] = -p[2]; + } + +# else /* !HAVE_TESS */ + + GLfloat *tri = (GLfloat *) + (GLfloat *) malloc (s->n_points * 4 * 3 * 3 * sizeof(*pts)); + GLfloat *otri = tri; + int count; + GLdouble zz; + + tri += make_piece_eighth (jc, s, resolution, top_type, tri, 0, 0, 0); + tri += make_piece_eighth (jc, s, resolution, top_type, tri, 1, 0, 0); + tri += make_piece_eighth (jc, s, resolution, left_type, tri, 0, 1, 1); + tri += make_piece_eighth (jc, s, resolution, left_type, tri, 1, 1, 1); + tri += make_piece_eighth (jc, s, resolution, bottom_type, tri, 0, 1, 0); + tri += make_piece_eighth (jc, s, resolution, bottom_type, tri, 1, 1, 0); + tri += make_piece_eighth (jc, s, resolution, right_type, tri, 0, 0, 1); + tri += make_piece_eighth (jc, s, resolution, right_type, tri, 1, 0, 1); + count = (tri - otri) / 9; + + if (! wire) + { + glEnable (GL_TEXTURE_2D); + glEnable (GL_BLEND); + glEnable (GL_LIGHTING); + glBindTexture(GL_TEXTURE_2D, jc->texid); + } + + for (zz = z; zz >= -z; zz -= 2*z) + { + int i; + glFrontFace (zz > 0 ? GL_CCW : GL_CW); + glNormal3f (0, 0, (zz > 0 ? 1 : -1)); + + if (zz < 0) + glDisable (GL_TEXTURE_2D); /* back face */ + + glPushMatrix(); + glTranslatef (0, 0, zz); + + tri = otri; + if (wire) + { + for (i = 0; i < count; i++) + { + glBegin (GL_LINE_LOOP); + glVertex3f (tri[0], tri[1], tri[2]); tri += 3; + glVertex3f (tri[0], tri[1], tri[2]); tri += 3; + glVertex3f (tri[0], tri[1], tri[2]); tri += 3; + glEnd(); + } + } + else + { + GLfloat pw = p->jc->puzzle_width; + GLfloat ph = p->jc->puzzle_height; + GLfloat r = resolution; + + glBegin (GL_TRIANGLES); + for (i = 0; i < count * 3; i++) + { + GLfloat x = *tri++; + GLfloat y = *tri++; + GLfloat z = *tri++; + + /* 0-1 from piece origin */ + GLfloat xx = x / r; + GLfloat yy = y / r; + + /* 0-1 from puzzle origin */ + GLfloat tx = (p->home.x + xx) / pw; + GLfloat ty = (ph - p->home.y - yy) / ph; + + tx = p->jc->tex_x + (tx * p->jc->tex_width); + ty = p->jc->tex_y + (ty * p->jc->tex_height); + + glTexCoord2f (tx, ty); + glVertex3f (x, y, z); + } + glEnd(); + } + + polys += count; + glPopMatrix(); + } + + free (otri); +# endif /* !HAVE_TESS */ } /* side faces */ + glFrontFace (GL_CCW); glBegin (wire ? GL_LINES : GL_QUAD_STRIP); for (i = 0; i < o; i += 3) @@ -402,12 +652,12 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p, GLdouble *pj = pts + j; GLdouble *pk = pts + k; - do_normal (pj[0], pj[1], -pj[2], - pj[0], pj[1], pj[2], + do_normal (pj[0], pj[1], pj[2], + pj[0], pj[1], -pj[2], pk[0], pk[1], pk[2]); - glVertex3f (p[0], p[1], -p[2]); glVertex3f (p[0], p[1], p[2]); + glVertex3f (p[0], p[1], -p[2]); polys++; } glEnd(); @@ -415,6 +665,8 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p, if (! wire) glColor3f (0.3, 0.3, 0.3); + /* outline the edges in gray */ + glDisable (GL_TEXTURE_2D); glDisable (GL_LIGHTING); glLineWidth (jc->line_thickness); @@ -431,6 +683,7 @@ draw_piece (jigsaw_configuration *jc, puzzle_piece *p, glEnd(); polys += o/3; + free_spline (s); free (pts); return polys; @@ -823,8 +1076,14 @@ move_one_piece (ModeInfo *mi) p1->to = p0->current; p1->to.r = proper_rotation (jc, p1, p1->to.x, p1->to.y); - p0->arc_height = 0.5 + frand(3.0); - p1->arc_height = 1.0 + frand(3.0); + /* Try to avoid having them intersect each other in the air. */ + p0->arc_height = 0; + p1->arc_height = 0; + while (fabs (p0->arc_height - p1->arc_height) < 1.5) + { + p0->arc_height = 0.5 + frand(3.0); + p1->arc_height = 1.0 + frand(3.0); + } # define RTILT(V) \ V = 90 - BELLRAND(180); \ @@ -892,6 +1151,91 @@ anim_tick (ModeInfo *mi) } +static void +loading_msg (ModeInfo *mi) +{ + jigsaw_configuration *jc = &sps[MI_SCREEN(mi)]; + int wire = MI_IS_WIREFRAME(mi); + const char *text = "Loading..."; + int h; + int w = texture_string_width (jc->texfont, text, &h); + + if (wire) return; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + if (! jc->loading_dlist) + { + GLfloat othick = jc->line_thickness; + puzzle_piece P = { 0, }; + P.jc = jc; + jc->loading_dlist = glGenLists (1); + glNewList (jc->loading_dlist, GL_COMPILE); + jc->line_thickness = 1; + draw_piece (jc, &P, + resolution_arg, thickness_arg, + OUT, OUT, IN, OUT, True); + jc->line_thickness = othick; + glEndList(); + } + + glColor3f (0.2, 0.2, 0.4); + + glPushMatrix(); + { + double x, y, z; + get_position (jc->rot, &x, &y, &z, True); + glRotatef (x * 360, 1, 0, 0); + glRotatef (y * 360, 0, 1, 0); + glRotatef (z * 360, 0, 0, 1); + glScalef (5, 5, 5); + glTranslatef (-0.5, -0.5, 0); + glCallList (jc->loading_dlist); + } + glPopMatrix(); + + glColor3f (0.7, 0.7, 1); + + + glMatrixMode(GL_PROJECTION); + glPushMatrix(); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glLoadIdentity(); + + { + double rot = current_device_rotation(); + glRotatef(rot, 0, 0, 1); + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + glScalef (s, 1/s, 1); + } + } + + glOrtho(0, MI_WIDTH(mi), 0, MI_HEIGHT(mi), -1, 1); + glTranslatef ((MI_WIDTH(mi) - w) / 2, + (MI_HEIGHT(mi) - h) / 2, + 0); + glEnable (GL_TEXTURE_2D); + glPolygonMode (GL_FRONT, GL_FILL); + glDisable (GL_LIGHTING); + glEnable (GL_BLEND); + glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + print_texture_string (jc->texfont, text); + glEnable (GL_DEPTH_TEST); + glPopMatrix(); + + glMatrixMode(GL_PROJECTION); + glPopMatrix(); + + glMatrixMode(GL_MODELVIEW); +} + + static void animate (ModeInfo *mi) { @@ -899,10 +1243,16 @@ animate (ModeInfo *mi) double slow = 0.01; double fast = 0.04; - if (jc->button_down_p) return; + if (jc->button_down_p && jc->state != PUZZLE_LOADING_MSG) + return; switch (jc->state) { + case PUZZLE_LOADING_MSG: + if (! jc->puzzle) + loading_msg (mi); + /* fall through */ + case PUZZLE_LOADING: if (!jc->puzzle) break; /* still loading */ jc->tick_speed = slow; @@ -1081,11 +1431,18 @@ init_jigsaw (ModeInfo *mi) jc->trackball = gltrackball_init (); jc->rot = make_rotator (0, 0, 0, 0, speed * 0.002, True); + jc->texfont = load_texture_font (MI_DISPLAY(mi), "font"); - jc->state = PUZZLE_LOADING; + jc->state = PUZZLE_LOADING_MSG; resolution_arg /= complexity_arg; +# ifndef HAVE_TESS + /* If it's not even, we get crosses. */ + if (resolution_arg & 1) + resolution_arg++; +# endif /* !HAVE_TESS */ + if (wire) make_puzzle_grid (mi); else @@ -1104,16 +1461,17 @@ draw_jigsaw (ModeInfo *mi) if (!jc->glx_context) return; - animate (mi); - glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(jc->glx_context)); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - glPushMatrix (); + mi->polygon_count = 0; - gltrackball_rotate (jc->trackball); + glPushMatrix (); glRotatef(current_device_rotation(), 0, 0, 1); + gltrackball_rotate (jc->trackball); + + animate (mi); if (wobble_p && jc->puzzle) { @@ -1125,18 +1483,16 @@ draw_jigsaw (ModeInfo *mi) glRotatef (max/2 - z*max, 0, 1, 0); } - mi->polygon_count = 0; - - glEnable(GL_CULL_FACE); - glEnable(GL_DEPTH_TEST); - glEnable(GL_NORMALIZE); - glEnable(GL_LINE_SMOOTH); - if (jc->puzzle) { GLfloat s = 14.0 / jc->puzzle_height; int x, y; + glEnable(GL_CULL_FACE); + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_LINE_SMOOTH); + glScalef (s, s, s); glTranslatef (-jc->puzzle_width / 2.0, -jc->puzzle_height / 2.0, 0); diff --git a/hacks/glx/juggler3d.c b/hacks/glx/juggler3d.c index 02c1f179..1a7fe36b 100644 --- a/hacks/glx/juggler3d.c +++ b/hacks/glx/juggler3d.c @@ -2908,6 +2908,7 @@ draw_juggle (ModeInfo *mi) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); glTranslatef(0,-3,0); @@ -2919,7 +2920,6 @@ draw_juggle (ModeInfo *mi) (z - 0.5) * 15); gltrackball_rotate (sp->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); get_rotation (sp->rot, &x, &y, &z, !sp->button_down_p); diff --git a/hacks/glx/jwzgles.c b/hacks/glx/jwzgles.c index 15284ca8..f70b120b 100644 --- a/hacks/glx/jwzgles.c +++ b/hacks/glx/jwzgles.c @@ -136,7 +136,7 @@ lockward Puts verts in lists without glBegin! pinion Uses glSelectBuffer and gluPickMatrix for mouse-clicks. pipes Uses glMap2f for the Utah Teapot. - polyhedra Uses GLUtesselator; also Utah Teapot. + polyhedra Uses GLUtesselator (concave objects); also Utah Teapot. skytentacles Uses GL_LINE in -cel mode. timetunnel Uses GL_CONSTANT_ALPHA and all kinds of other stuff. @@ -167,7 +167,10 @@ #elif defined(HAVE_COCOA) # include # include -#else +#else /* X11 */ +# ifndef GL_GLEXT_PROTOTYPES +# define GL_GLEXT_PROTOTYPES /* for glBindBuffer */ +# endif # include # include #endif @@ -180,11 +183,17 @@ #define countof(x) (sizeof((x))/sizeof((*x))) #undef Assert -#define Assert(C,S) do { \ - if (!(C)) { \ - fprintf (stderr, "jwzgles: %s\n", S); \ - abort(); \ - }} while(0) + +#ifdef HAVE_COCOA + extern void jwxyz_abort (const char *fmt, ...) __dead2; +# define Assert(C,S) do { if (!(C)) { jwxyz_abort ("%s",S); }} while(0) +#else +# define Assert(C,S) do { \ + if (!(C)) { \ + fprintf (stderr, "jwzgles: %s\n", S); \ + abort(); \ + }} while(0) +#endif typedef struct { GLfloat x, y, z; } XYZ; @@ -228,7 +237,7 @@ typedef void (*list_fn_cb) (void); typedef union { const void *v; GLfloat f; GLuint i; } void_int; typedef struct { /* saved args for glDrawArrays */ - int size, type, stride, bytes; + int binding, size, type, stride, bytes; void *data; } draw_array; @@ -261,14 +270,18 @@ typedef struct { /* A single element of a display list */ } list_fn; -typedef struct { /* saved activity within glNewList */ +typedef struct { /* a display list: saved activity within glNewList */ int id; int size, count; list_fn *fns; + + /* Named buffer that should be freed when this display list is deleted. */ + GLuint buffer; + } list; -typedef struct { /* A display list */ +typedef struct { /* All display lists */ list *lists; int count, size; } list_set; @@ -349,19 +362,16 @@ mode_desc (int mode) /* for debugging messages */ switch (mode) { # define SS(X) case GL_##X: return STRINGIFY(X); SS(ALPHA) + SS(ALPHA_TEST) SS(AMBIENT) SS(AMBIENT_AND_DIFFUSE) + SS(ARRAY_BUFFER) SS(AUTO_NORMAL) SS(BACK) SS(BLEND) SS(BLEND_DST) SS(BLEND_SRC) SS(BLEND_SRC_ALPHA) - SS(RGBA_MODE) - SS(DOUBLEBUFFER) - SS(GREATER) - SS(ALPHA_TEST) - SS(LESS) SS(BYTE) SS(C3F_V3F) SS(C4F_N3F_V3F) @@ -370,6 +380,7 @@ mode_desc (int mode) /* for debugging messages */ SS(CCW) SS(CLAMP) SS(COLOR_ARRAY) + SS(COLOR_ARRAY_BUFFER_BINDING); SS(COLOR_MATERIAL) SS(COLOR_MATERIAL_FACE) SS(COLOR_MATERIAL_PARAMETER) @@ -380,8 +391,11 @@ mode_desc (int mode) /* for debugging messages */ SS(DEPTH_BUFFER_BIT) SS(DEPTH_TEST) SS(DIFFUSE) + SS(DOUBLEBUFFER) SS(DST_ALPHA) SS(DST_COLOR) + SS(DYNAMIC_DRAW) + SS(ELEMENT_ARRAY_BUFFER) SS(EYE_LINEAR) SS(EYE_PLANE) SS(FEEDBACK) @@ -391,10 +405,12 @@ mode_desc (int mode) /* for debugging messages */ SS(FOG) SS(FRONT) SS(FRONT_AND_BACK) + SS(GREATER) SS(INTENSITY) SS(INVALID_ENUM) SS(INVALID_OPERATION) SS(INVALID_VALUE) + SS(LESS) SS(LIGHT0) SS(LIGHT1) SS(LIGHT2) @@ -422,6 +438,7 @@ mode_desc (int mode) /* for debugging messages */ SS(NEAREST_MIPMAP_NEAREST) SS(NORMALIZE) SS(NORMAL_ARRAY) + SS(NORMAL_ARRAY_BUFFER_BINDING); SS(OBJECT_LINEAR) SS(OBJECT_PLANE) SS(ONE_MINUS_DST_ALPHA) @@ -445,6 +462,7 @@ mode_desc (int mode) /* for debugging messages */ SS(REPEAT) SS(RGB) SS(RGBA) + SS(RGBA_MODE) SS(S) SS(SELECT) SS(SEPARATE_SPECULAR_COLOR) @@ -460,6 +478,7 @@ mode_desc (int mode) /* for debugging messages */ SS(SRC_COLOR) SS(STACK_OVERFLOW) SS(STACK_UNDERFLOW) + SS(STATIC_DRAW) SS(STENCIL_BUFFER_BIT) SS(T) SS(T2F_C3F_V3F) @@ -479,6 +498,7 @@ mode_desc (int mode) /* for debugging messages */ SS(TEXTURE_BORDER_COLOR) SS(TEXTURE_COMPONENTS) SS(TEXTURE_COORD_ARRAY) + SS(TEXTURE_COORD_ARRAY_BUFFER_BINDING); SS(TEXTURE_ENV) SS(TEXTURE_ENV_COLOR) SS(TEXTURE_ENV_MODE) @@ -507,6 +527,7 @@ mode_desc (int mode) /* for debugging messages */ SS(V2F) SS(V3F) SS(VERTEX_ARRAY) + SS(VERTEX_ARRAY_BUFFER_BINDING); /*SS(COLOR_BUFFER_BIT) -- same value as GL_LIGHT0 */ # undef SS case (GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT): @@ -539,6 +560,20 @@ check_gl_error (const char *s) #endif /* DEBUG */ +static void +make_room (const char *name, void **array, int span, int *count, int *size) +{ + if (*count + 1 >= *size) + { + int new_size = (*count + 20) * 1.2; /* mildly exponential */ + *array = realloc (*array, new_size * span); + Assert (*array, "out of memory"); + /* LOG3("%s: grew %d -> %d", name, *size, new_size); */ + *size = new_size; + } +} + + int jwzgles_glGenLists (int n) { @@ -557,19 +592,10 @@ jwzgles_glGenLists (int n) { list *L; int id = 0; - - /* Adding a new list at the end. Make room for it. - */ - if (state->lists.count >= state->lists.size - 1) - { - int new_size = 20 + (state->lists.size * 1.2); - state->lists.lists = (list *) - realloc (state->lists.lists, - new_size * sizeof (*state->lists.lists)); - Assert (state->lists.lists, "out of memory"); - state->lists.size = new_size; - LOG1("glGenLists grew -> %d", new_size); - } + make_room ("glGenLists", + (void **) &state->lists.lists, + sizeof (*state->lists.lists), + &state->lists.count, &state->lists.size); state->lists.count++; id = state->lists.count; L = &state->lists.lists[id-1]; @@ -608,6 +634,11 @@ jwzgles_glNewList (int id, int mode) } +static void save_arrays (list_fn *, int); +static void restore_arrays (list_fn *, int); +static void copy_array_data (draw_array *, int, const char *); +static void optimize_arrays (void); + void jwzgles_glEndList (void) { @@ -615,14 +646,11 @@ jwzgles_glEndList (void) Assert (state->set.count == 0, "missing glEnd"); Assert (!state->compiling_verts, "glEndList not allowed inside glBegin"); LOG1("glEndList %d", state->compiling_list); + optimize_arrays(); state->compiling_list = 0; } -static void save_arrays (list_fn *, int); -static void restore_arrays (list_fn *, int); -static void copy_array_data (draw_array *, int, const char *); - static void list_push (const char * const name, list_fn_cb fn, fn_proto proto, void_int *av) @@ -637,16 +665,10 @@ list_push (const char * const name, L = &state->lists.lists[state->compiling_list-1]; Assert (L, "glNewList: no list"); - if (L->count >= L->size - 1) - { - int new_size = 20 + (L->size * 1.2); - L->fns = (list_fn *) realloc (L->fns, new_size * sizeof (*L->fns)); - Assert (L->fns, "glNewList: no functions"); - L->size = new_size; - } - + make_room ("glNewLists", + (void **) &L->fns, sizeof (*L->fns), + &L->count, &L->size); memset (&L->fns[L->count], 0, sizeof (*L->fns)); - F = L->fns + L->count; F->name = name; @@ -678,7 +700,8 @@ list_push (const char * const name, LOG2 (" push %-12s %7.3f", name, av[0].f); break; case PROTO_II: - if (fn == (list_fn_cb) &jwzgles_glBindTexture) + if (fn == (list_fn_cb) &jwzgles_glBindTexture || + fn == (list_fn_cb) &jwzgles_glBindBuffer) LOG3 (" push %-12s %s %d", name, mode_desc (av[0].i), av[1].i); else LOG3 (" push %-12s %d %d", name, av[0].i, av[1].i); @@ -834,14 +857,17 @@ jwzgles_glDeleteLists (int id0, int range) { int j; for (j = 0; j < 4; j++) - { - if (lf->arrays[j].data) - free (lf->arrays[j].data); - } + /* If there's a binding, 'data' is an index, not a ptr. */ + if (!lf->arrays[j].binding && + lf->arrays[j].data) + free (lf->arrays[j].data); + free (lf->arrays); } } if (L->fns) free (L->fns); + if (L->buffer) + glDeleteBuffers (1, &L->buffer); memset (L, 0, sizeof (*L)); L->id = id; @@ -878,14 +904,16 @@ jwzgles_glNormal3fv (const GLfloat *v) (state->compiling_verts ? " rec " : ""), v[0], v[1], v[2]); - state->set.cnorm.x = v[0]; - state->set.cnorm.y = v[1]; - state->set.cnorm.z = v[2]; - state->set.ncount++; - if (state->set.count > 0 && state->set.ncount == 1) /* not first! */ - state->set.ncount++; - - if (! state->compiling_verts) /* outside glBegin */ + if (state->compiling_verts) /* inside glBegin */ + { + state->set.cnorm.x = v[0]; + state->set.cnorm.y = v[1]; + state->set.cnorm.z = v[2]; + state->set.ncount++; + if (state->set.count > 0 && state->set.ncount == 1) /* not first! */ + state->set.ncount++; + } + else /* outside glBegin */ { glNormal3f (v[0], v[1], v[2]); CHECK("glNormal3f"); @@ -926,15 +954,18 @@ jwzgles_glTexCoord4fv (const GLfloat *v) (state->compiling_verts ? " rec " : ""), v[0], v[1], v[2], v[3]); - state->set.ctex.s = v[0]; - state->set.ctex.t = v[1]; - state->set.ctex.r = v[2]; - state->set.ctex.q = v[3]; - state->set.tcount++; - if (state->set.count > 0 && state->set.tcount == 1) /* not first! */ - state->set.tcount++; - Assert (state->compiling_verts, "glTexCoord4fv outside glBegin"); + + if (state->compiling_verts) /* inside glBegin */ + { + state->set.ctex.s = v[0]; + state->set.ctex.t = v[1]; + state->set.ctex.r = v[2]; + state->set.ctex.q = v[3]; + state->set.tcount++; + if (state->set.count > 0 && state->set.tcount == 1) /* not first! */ + state->set.tcount++; + } } } @@ -1018,15 +1049,17 @@ jwzgles_glColor4fv (const GLfloat *v) (state->compiling_verts ? " rec " : ""), v[0], v[1], v[2], v[3]); - state->set.ccolor.r = v[0]; - state->set.ccolor.g = v[1]; - state->set.ccolor.b = v[2]; - state->set.ccolor.a = v[3]; - state->set.ccount++; - if (state->set.count > 0 && state->set.ccount == 1) /* not first! */ - state->set.ccount++; - - if (! state->compiling_verts) /* outside glBegin */ + if (state->compiling_verts) /* inside glBegin */ + { + state->set.ccolor.r = v[0]; + state->set.ccolor.g = v[1]; + state->set.ccolor.b = v[2]; + state->set.ccolor.a = v[3]; + state->set.ccount++; + if (state->set.count > 0 && state->set.ccount == 1) /* not first! */ + state->set.ccount++; + } + else /* outside glBegin */ { glColor4f (v[0], v[1], v[2], v[3]); CHECK("glColor4"); @@ -1556,6 +1589,8 @@ jwzgles_glEnd (void) Assert (state->compiling_verts == 1, "missing glBegin"); state->compiling_verts--; + Assert (!state->replaying_list, "how did glEnd get into a display list?"); + if (!state->replaying_list) { LOG5 ("%s [V = %d, N = %d, T = %d, C = %d]", @@ -1601,6 +1636,14 @@ jwzgles_glEnd (void) was_color = jwzgles_glIsEnabled (GL_COLOR_ARRAY); was_mat = jwzgles_glIsEnabled (GL_COLOR_MATERIAL); + /* If we're executing glEnd in immediate mode, not from inside a display + list (which is the only way it happens, because glEnd doesn't go into + display lists), make sure we're not stomping on a saved buffer list: + in immediate mode, vertexes are client-side only. + */ + if (! state->compiling_list) + jwzgles_glBindBuffer (GL_ARRAY_BUFFER, 0); + if (s->ncount > 1) { is_norm = 1; @@ -1654,7 +1697,9 @@ jwzgles_glEnd (void) else is_mat = 0; + glBindBuffer (GL_ARRAY_BUFFER, 0); /* This comes later. */ jwzgles_glDrawArrays (s->mode, 0, s->count); + glBindBuffer (GL_ARRAY_BUFFER, 0); /* Keep out of others' hands */ # define RESET(VAR,FN,ARG) do { \ if (is_##VAR != was_##VAR) { \ @@ -1675,6 +1720,116 @@ jwzgles_glEnd (void) } +/* The display list is full of calls to glDrawArrays(), plus saved arrays + of the values we need to restore before calling it. "Restore" means + "ship them off to the GPU before each call". + + So instead, this function walks through the display list and + combines all of those vertex, normal, texture and color values into + a single VBO array; ships those values off to the GPU *once* at the + time of glEndList; and when running the list with glCallList, the + values are already on the GPU and don't need to be sent over again. + + The VBO persists in the GPU until the display list is deleted. + */ +static void +optimize_arrays (void) +{ + list *L = &state->lists.lists[state->compiling_list-1]; + int i, j; + GLfloat *combo = 0; + int combo_count = 0; + int combo_size = 0; + GLuint buf_name = 0; + + Assert (state->compiling_list, "not compiling a list"); + Assert (L, "no list"); + Assert (!L->buffer, "list already has a buffer"); + + glGenBuffers (1, &buf_name); + CHECK("glGenBuffers"); + if (! buf_name) return; + + L->buffer = buf_name; + + /* Go through the list and dump the contents of the various saved arrays + into one large array. + */ + for (i = 0; i < L->count; i++) + { + list_fn *F = &L->fns[i]; + int count; + if (! F->arrays) + continue; + count = F->argv[2].i; /* 3rd arg to glDrawArrays */ + + for (j = 0; j < 4; j++) + { + draw_array *A = &F->arrays[j]; + int ocount = combo_count; + + /* If some caller is using arrays that don't have floats in them, + we just leave them as-is and ship them over at each call. + Doubt this ever really happens. + */ + if (A->type != GL_FLOAT) + continue; + + if (! A->data) /* No array. */ + continue; + + Assert (A->bytes > 0, "no bytes in draw_array"); + Assert (((unsigned long) A->data > 0xFFFF), + "buffer data not a pointer"); + + combo_count += A->bytes / sizeof(*combo); + make_room ("optimize_arrays", + (void **) &combo, sizeof(*combo), + &combo_count, &combo_size); + memcpy (combo + ocount, A->data, A->bytes); + A->binding = buf_name; + free (A->data); + /* 'data' is now the byte offset into the VBO. */ + A->data = (void *) (ocount * sizeof(*combo)); + /* LOG3(" loaded %lu floats to pos %d of buffer %d", + A->bytes / sizeof(*combo), ocount, buf_name); */ + } + } + + if (combo_count == 0) /* Nothing to do! */ + { + if (combo) free (combo); + glDeleteBuffers (1, &buf_name); + L->buffer = 0; + return; + } + + glBindBuffer (GL_ARRAY_BUFFER, buf_name); + glBufferData (GL_ARRAY_BUFFER, + combo_count * sizeof (*combo), + combo, + GL_STATIC_DRAW); + glBindBuffer (GL_ARRAY_BUFFER, 0); /* Keep out of others' hands */ + + LOG3(" loaded %d floats of list %d into VBO %d", + combo_count, state->compiling_list, buf_name); + +# ifdef DEBUG +# if 0 + for (i = 0; i < combo_count; i++) + { + if (i % 4 == 0) + fprintf (stderr, "\njwzgles: %4d: ", i); + fprintf (stderr, " %7.3f", combo[i]); + } + fprintf (stderr, "\n"); +# endif +# endif /* DEBUG */ + + if (combo) free (combo); +} + + void jwzgles_glCallList (int id) { @@ -1735,7 +1890,8 @@ jwzgles_glCallList (int id) break; case PROTO_II: - if (fn == (list_fn_cb) &jwzgles_glBindTexture) + if (fn == (list_fn_cb) &jwzgles_glBindTexture || + fn == (list_fn_cb) &jwzgles_glBindBuffer) LOG3 (" call %-12s %s %d", F->name, mode_desc (av[0].i), av[1].i); else @@ -1902,6 +2058,7 @@ save_arrays (list_fn *F, int count) /* if (state->set.count > 0) */ { + glGetIntegerv (GL_VERTEX_ARRAY_BUFFER_BINDING, &A[i].binding); glGetIntegerv (GL_VERTEX_ARRAY_SIZE, &A[i].size); glGetIntegerv (GL_VERTEX_ARRAY_TYPE, &A[i].type); glGetIntegerv (GL_VERTEX_ARRAY_STRIDE, &A[i].stride); @@ -1914,6 +2071,7 @@ save_arrays (list_fn *F, int count) if (state->set.ncount > 1) { A[i].size = 3; + glGetIntegerv (GL_NORMAL_ARRAY_BUFFER_BINDING, &A[i].binding); glGetIntegerv (GL_NORMAL_ARRAY_TYPE, &A[i].type); glGetIntegerv (GL_NORMAL_ARRAY_STRIDE, &A[i].stride); glGetPointerv (GL_NORMAL_ARRAY_POINTER, &A[i].data); @@ -1924,6 +2082,7 @@ save_arrays (list_fn *F, int count) i++; if (state->set.tcount > 1) { + glGetIntegerv (GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING, &A[i].binding); glGetIntegerv (GL_TEXTURE_COORD_ARRAY_SIZE, &A[i].size); glGetIntegerv (GL_TEXTURE_COORD_ARRAY_TYPE, &A[i].type); glGetIntegerv (GL_TEXTURE_COORD_ARRAY_STRIDE, &A[i].stride); @@ -1935,6 +2094,7 @@ save_arrays (list_fn *F, int count) i++; if (state->set.ccount > 1) { + glGetIntegerv (GL_COLOR_ARRAY_BUFFER_BINDING, &A[i].binding); glGetIntegerv (GL_COLOR_ARRAY_SIZE, &A[i].size); glGetIntegerv (GL_COLOR_ARRAY_TYPE, &A[i].type); glGetIntegerv (GL_COLOR_ARRAY_STRIDE, &A[i].stride); @@ -1958,20 +2118,64 @@ dump_array_data (draw_array *A, int count, { int bytes = count * A->stride; - Assert (bytes == A->bytes, "array data corrupted"); + if (A->binding) + { + fprintf (stderr, + "jwzgles: %s %s %d %s %2d, %4d = %5d bind %d @ %d\n", + action, name, + A->size, mode_desc(A->type), A->stride, + count, bytes, A->binding, (int) A->data); + } + else + { + Assert (bytes == A->bytes, "array data corrupted"); + + fprintf (stderr, "jwzgles: %s %s %d %s %2d, %4d = %5d @ %lX", + action, name, + A->size, mode_desc(A->type), A->stride, + count, bytes, (unsigned long) A->data); + if (old) + fprintf (stderr, " / %lX", (unsigned long) old); + fprintf (stderr, "\n"); + } - fprintf (stderr, "jwzgles: %s %s %d %s %2d, %4d = %5d @ %lX", - action, name, - A->size, mode_desc(A->type), A->stride, - count, bytes, (unsigned long) A->data); - if (old) - fprintf (stderr, " / %lX", (unsigned long) old); - fprintf (stderr, "\n"); + if (A->binding) + { + Assert (((unsigned long) A->data < 0xFFFF), + "buffer binding should be a numeric index," + " but looks like a pointer"); # if 0 - { + /* glGetBufferSubData doesn't actually exist in OpenGLES, but this + was helpful for debugging on real OpenGL... */ + GLfloat *d; + int i; + fprintf (stderr, "jwzgles: read back:\n"); + d = (GLfloat *) malloc (A->bytes); + glGetBufferSubData (GL_ARRAY_BUFFER, (int) A->data, + count * A->stride, (void *) d); + CHECK("glGetBufferSubData"); + for (i = 0; i < count * A->size; i++) + { + if (i % 4 == 0) + fprintf (stderr, "\njwzgles: %4d: ", + i + (int) A->data / sizeof(GLfloat)); + fprintf (stderr, " %7.3f", d[i]); + } + fprintf (stderr, "\n"); + free (d); +# endif + } +# if 0 + else + { unsigned char *b = (unsigned char *) A->data; int i; + if ((unsigned long) A->data < 0xFFFF) + { + Assert (0, "buffer data not a pointer"); + return; + } for (i = 0; i < count; i++) { int j; @@ -1991,10 +2195,11 @@ dump_array_data (draw_array *A, int count, static void dump_direct_array_data (int count) { - draw_array A; + draw_array A = { 0, }; if (jwzgles_glIsEnabled (GL_VERTEX_ARRAY)) { + glGetIntegerv (GL_VERTEX_ARRAY_BUFFER_BINDING, &A.binding); glGetIntegerv (GL_VERTEX_ARRAY_SIZE, &A.size); glGetIntegerv (GL_VERTEX_ARRAY_TYPE, &A.type); glGetIntegerv (GL_VERTEX_ARRAY_STRIDE, &A.stride); @@ -2005,6 +2210,7 @@ dump_direct_array_data (int count) if (jwzgles_glIsEnabled (GL_NORMAL_ARRAY)) { A.size = 0; + glGetIntegerv (GL_NORMAL_ARRAY_BUFFER_BINDING, &A.binding); glGetIntegerv (GL_NORMAL_ARRAY_TYPE, &A.type); glGetIntegerv (GL_NORMAL_ARRAY_STRIDE, &A.stride); glGetPointerv (GL_NORMAL_ARRAY_POINTER, &A.data); @@ -2013,6 +2219,7 @@ dump_direct_array_data (int count) } if (jwzgles_glIsEnabled (GL_TEXTURE_COORD_ARRAY)) { + glGetIntegerv (GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING, &A.binding); glGetIntegerv (GL_TEXTURE_COORD_ARRAY_SIZE, &A.size); glGetIntegerv (GL_TEXTURE_COORD_ARRAY_TYPE, &A.type); glGetIntegerv (GL_TEXTURE_COORD_ARRAY_STRIDE, &A.stride); @@ -2022,6 +2229,7 @@ dump_direct_array_data (int count) } if (jwzgles_glIsEnabled (GL_COLOR_ARRAY)) { + glGetIntegerv (GL_COLOR_ARRAY_BUFFER_BINDING, &A.binding); glGetIntegerv (GL_COLOR_ARRAY_SIZE, &A.size); glGetIntegerv (GL_COLOR_ARRAY_TYPE, &A.type); glGetIntegerv (GL_COLOR_ARRAY_STRIDE, &A.stride); @@ -2051,7 +2259,11 @@ copy_array_data (draw_array *A, int count, const char *name) const unsigned char *IB; unsigned char *OB; - if (! A->data) return; + if (((unsigned long) A->data) < 0xFFFF) + { + Assert (0, "buffer data not a pointer"); + return; + } Assert (A->size >= 2 && A->size <= 4, "bogus array size"); @@ -2114,8 +2326,17 @@ restore_arrays (list_fn *F, int count) for (i = 0; i < 4; i++) { - const char *name; - if (! A[i].data) continue; + const char *name = 0; + + if (!A[i].size) + continue; + + Assert ((A[i].binding || A[i].data), + "array has neither buffer binding nor data"); + + glBindBuffer (GL_ARRAY_BUFFER, A[i].binding); + CHECK("glBindBuffer"); + switch (i) { case 0: glVertexPointer (A[i].size, A[i].type, A[i].stride, A[i].data); name = "vertex "; @@ -2140,6 +2361,8 @@ restore_arrays (list_fn *F, int count) dump_array_data (&A[i], count, "restored", name, 0); # endif } + + glBindBuffer (GL_ARRAY_BUFFER, 0); /* Keep out of others' hands */ } @@ -2396,16 +2619,22 @@ jwzgles_glEnableClientState (GLuint cap) } switch (cap) { + case GL_VERTEX_ARRAY: + state->enabled |= ISENABLED_VERT_ARRAY; + break; case GL_NORMAL_ARRAY: - state->set.ncount += 2; + if (! state->compiling_verts) + state->set.ncount += 2; state->enabled |= ISENABLED_NORM_ARRAY; break; case GL_TEXTURE_COORD_ARRAY: - state->set.tcount += 2; + if (! state->compiling_verts) + state->set.tcount += 2; state->enabled |= ISENABLED_TEX_ARRAY; break; case GL_COLOR_ARRAY: - state->set.ccount += 2; + if (! state->compiling_verts) + state->set.ccount += 2; state->enabled |= ISENABLED_COLOR_ARRAY; break; default: break; @@ -2433,16 +2662,22 @@ jwzgles_glDisableClientState (GLuint cap) } switch (cap) { + case GL_VERTEX_ARRAY: + state->enabled &= ~ISENABLED_VERT_ARRAY; + break; case GL_NORMAL_ARRAY: - state->set.ncount = 0; + if (! state->compiling_verts) + state->set.ncount = 0; state->enabled &= ~ISENABLED_NORM_ARRAY; break; case GL_TEXTURE_COORD_ARRAY: - state->set.tcount = 0; + if (! state->compiling_verts) + state->set.tcount = 0; state->enabled &= ~ISENABLED_TEX_ARRAY; break; case GL_COLOR_ARRAY: - state->set.ccount = 0; + if (! state->compiling_verts) + state->set.ccount = 0; state->enabled &= ~ISENABLED_COLOR_ARRAY; break; default: @@ -3046,8 +3281,10 @@ jwzgles_gluErrorString (GLenum error) } -/* These can be included inside glNewList, but they actually execute - immediately anyway. +/* These four *Pointer calls (plus glBindBuffer and glBufferData) can + be included inside glNewList, but they actually execute immediately + anyway, because their data is recorded in the list by the + subsequently-recorded call to glDrawArrays. This is a little weird. */ void jwzgles_glVertexPointer (GLuint size, GLuint type, GLuint stride, @@ -3092,6 +3329,26 @@ jwzgles_glTexCoordPointer (GLuint size, GLuint type, GLuint stride, CHECK("glTexCoordPointer"); } +void +jwzgles_glBindBuffer (GLuint target, GLuint buffer) +{ + if (! state->replaying_list) + LOG3 ("direct %-12s %s %d", "glBindBuffer", mode_desc(target), buffer); + glBindBuffer (target, buffer); /* the real one */ + CHECK("glBindBuffer"); +} + +void +jwzgles_glBufferData (GLenum target, GLsizeiptr size, const void *data, + GLenum usage) +{ + if (! state->replaying_list) + LOG5 ("direct %-12s %s %ld 0x%lX %s", "glBufferData", + mode_desc(target), size, (unsigned long) data, mode_desc(usage)); + glBufferData (target, size, data, usage); /* the real one */ + CHECK("glBufferData"); +} + void jwzgles_glTexParameterf (GLuint target, GLuint pname, GLfloat param) @@ -3108,6 +3365,11 @@ jwzgles_glTexParameterf (GLuint target, GLuint pname, GLfloat param) /* We implement 1D textures as 2D textures. */ if (target == GL_TEXTURE_1D) target = GL_TEXTURE_2D; + /* Apparently this is another invalid enum. Just ignore it. */ + if ((pname == GL_TEXTURE_WRAP_S || pname == GL_TEXTURE_WRAP_T) && + param == GL_CLAMP) + return; + if (state->compiling_list) { void_int vv[3]; diff --git a/hacks/glx/jwzglesI.h b/hacks/glx/jwzglesI.h index 3260e74f..faa26efd 100644 --- a/hacks/glx/jwzglesI.h +++ b/hacks/glx/jwzglesI.h @@ -306,6 +306,8 @@ extern void jwzgles_glVertexPointer (GLuint, GLuint, GLuint, const void *); extern void jwzgles_glNormalPointer (GLenum, GLuint, const void *); extern void jwzgles_glColorPointer (GLuint, GLuint, GLuint, const void *); extern void jwzgles_glTexCoordPointer (GLuint, GLuint, GLuint, const void *); +extern void jwzgles_glBindBuffer (GLuint, GLuint); +extern void jwzgles_glBufferData (GLenum, GLsizeiptr, const void *, GLenum); extern const char *jwzgles_gluErrorString (GLenum error); #endif /* __JWZGLES_I_H__ */ diff --git a/hacks/glx/lament.c b/hacks/glx/lament.c index f0526cc5..ab4bf83e 100644 --- a/hacks/glx/lament.c +++ b/hacks/glx/lament.c @@ -1422,7 +1422,10 @@ draw(ModeInfo *mi) glPushMatrix(); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (lc->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); /* Make into the screen be +Y right be +X, and up be +Z. */ glRotatef(-90.0, 1.0, 0.0, 0.0); diff --git a/hacks/glx/menger.c b/hacks/glx/menger.c index c620dfd0..2319af76 100644 --- a/hacks/glx/menger.c +++ b/hacks/glx/menger.c @@ -486,7 +486,10 @@ draw_sponge (ModeInfo *mi) (y - 0.5) * 6, (z - 0.5) * 15); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (sp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation (sp->rot, &x, &y, &z, !sp->button_down_p); glRotatef (x * 360, 1.0, 0.0, 0.0); diff --git a/hacks/glx/mirrorblob.c b/hacks/glx/mirrorblob.c index d6fbdc1c..d8b0915d 100644 --- a/hacks/glx/mirrorblob.c +++ b/hacks/glx/mirrorblob.c @@ -246,7 +246,7 @@ typedef struct #define PMM { sqrt_3, -sqrt_3, -sqrt_3 } /* +X, -Y, -Z */ /* Structure describing a tetrahedron */ -Vector3D tetrahedron[4][3] = { +static Vector3D tetrahedron[4][3] = { {PPP, MMP, MPM}, {PMM, MPM, MMP}, {PPP, MPM, PMM}, @@ -257,7 +257,7 @@ Vector3D tetrahedron[4][3] = { * Static blob data *****************************************************************************/ -const Vector3D zero_vector = { 0.0, 0.0, 0.0 }; +static const Vector3D zero_vector = { 0.0, 0.0, 0.0 }; /* Use 2 textures to allow a gradual fade between images */ #define NUM_TEXTURES 2 @@ -1412,12 +1412,12 @@ draw_blob (mirrorblobstruct *gp) glMatrixMode(GL_MODELVIEW); glLoadIdentity(); + glRotatef(current_device_rotation(), 0, 0, 1); /* Move down the z-axis. */ glTranslatef (0.0, 0.0, -4.0); gltrackball_rotate (gp->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); /* glColor4ub (255, 0, 0, 128); */ glBegin(GL_TRIANGLES); diff --git a/hacks/glx/moebius.c b/hacks/glx/moebius.c index a9dddf50..e37294a1 100644 --- a/hacks/glx/moebius.c +++ b/hacks/glx/moebius.c @@ -761,7 +761,10 @@ draw_moebius (ModeInfo * mi) glTranslatef(0.0, 0.0, -10.0); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (mp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); if (!MI_IS_ICONIC(mi)) { glScalef(Scale4Window * mp->WindH / mp->WindW, Scale4Window, Scale4Window); diff --git a/hacks/glx/moebiusgears.c b/hacks/glx/moebiusgears.c index bf38150c..03381b70 100644 --- a/hacks/glx/moebiusgears.c +++ b/hacks/glx/moebiusgears.c @@ -339,7 +339,10 @@ draw_mgears (ModeInfo *mi) (y - 0.5) * 4, (z - 0.5) * 7); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (bp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); diff --git a/hacks/glx/molecule.c b/hacks/glx/molecule.c index b3998f2d..3720294c 100644 --- a/hacks/glx/molecule.c +++ b/hacks/glx/molecule.c @@ -93,11 +93,16 @@ ISO C89 compilers are required to support" when includng the following data file... */ # endif -const char * const builtin_pdb_data[] = { +static const char * const builtin_pdb_data[] = { # include "molecules.h" }; +#ifndef USE_IPHONE +# define LOAD_FILES +#endif + + typedef struct { const char *name; GLfloat size, size2; @@ -884,6 +889,7 @@ parse_pdb_data (molecule *m, const char *data, const char *filename, int line) } +#ifdef LOAD_FILES static int parse_pdb_file (molecule *m, const char *name) { @@ -930,6 +936,7 @@ parse_pdb_file (molecule *m, const char *name) return 0; } +#endif /* LOAD_FILES */ typedef struct { char *atom; int count; } atom_and_count; @@ -1047,16 +1054,17 @@ static void load_molecules (ModeInfo *mi) { molecule_configuration *mc = &mcs[MI_SCREEN(mi)]; - int wire = MI_IS_WIREFRAME(mi); int i; mc->nmolecules = 0; +# ifdef LOAD_FILES if (molecule_str && *molecule_str && strcmp(molecule_str, "(default)")) /* try external PDB files */ { /* The -molecule option can point to a .pdb file, or to a directory of them. */ + int wire = MI_IS_WIREFRAME(mi); struct stat st; int nfiles = 0; int list_size = 0; @@ -1160,6 +1168,7 @@ load_molecules (ModeInfo *mi) files = 0; mc->nmolecules = molecule_ctr; } +# endif /* LOAD_FILES */ if (mc->nmolecules == 0) /* do the builtins if no files */ { @@ -1448,6 +1457,8 @@ draw_labels (ModeInfo *mi) glTranslatef (0, 0, (size * 1.1)); /* move toward camera */ + glRotatef (current_device_rotation(), 0, 0, 1); /* right side up */ + # ifdef HAVE_GLBITMAP glRasterPos3f (0, 0, 0); /* draw text here */ @@ -1643,7 +1654,10 @@ draw_molecule (ModeInfo *mi) (y - 0.5) * 9, (z - 0.5) * 9); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (mc->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation (mc->rot, &x, &y, &z, !mc->button_down_p); glRotatef (x * 360, 1.0, 0.0, 0.0); diff --git a/hacks/glx/pinion.c b/hacks/glx/pinion.c index 015dc1f2..4da81e39 100644 --- a/hacks/glx/pinion.c +++ b/hacks/glx/pinion.c @@ -1458,9 +1458,7 @@ draw_pinion (ModeInfo *mi) glPushMatrix (); { - glRotatef(-current_device_rotation(), 0, 0, 1); gltrackball_rotate (pp->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); mi->polygon_count = 0; glScalef (16, 16, 16); /* map vp_width/height to the screen */ diff --git a/hacks/glx/pipes.c b/hacks/glx/pipes.c index 104f880b..9ca14d24 100644 --- a/hacks/glx/pipes.c +++ b/hacks/glx/pipes.c @@ -37,21 +37,37 @@ static const char sccsid[] = "@(#)pipes.c 4.07 97/11/24 xlockmore"; * Marcelo F. Vianna (Apr-09-1997) * * Revision History: + * 24-Jun-12: Eliminate single-buffer dependency. * 29-Apr-97: Factory equipment by Ed Mackey. Productive day today, eh? * 29-Apr-97: Less tight turns Jeff Epler * 29-Apr-97: Efficiency speed-ups by Marcelo F. Vianna */ +/* This program was originally written to be single-buffered: it kept + building up new objects in the front buffer by never clearing the + depth or color buffers at the end of each frame. In that way, it + was drawing a very small number of polygons per frame. However, + modern systems make it difficult to live in a single-buffered world + like that. So I changed it to re-generate the scene at every + frame, which makes it vastly less efficient, but also, makes it + work right on modern hardware. It generates the entire system up + front, putting each "frame" of the animation into its own display + list; then it draws successively more of those display lists each + time the redisplay method is called. When it reaches the end, + it regenerates a new system and re-populates the existing display + lists. -- jwz. + */ + #ifdef STANDALONE # define DEFAULTS "*delay: 10000 \n" \ "*count: 2 \n" \ "*cycles: 5 \n" \ "*size: 500 \n" \ "*showFPS: False \n" \ - "*fpsSolid: True \n" + "*fpsSolid: True \n" \ + "*wireframe: False \n" # define refresh_pipes 0 -# define pipes_handle_event 0 # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ # include "xlock.h" /* from the xlockmore distribution */ @@ -74,17 +90,16 @@ static const char sccsid[] = "@(#)pipes.c 4.07 97/11/24 xlockmore"; #include "sphere.h" #include "buildlwo.h" #include "teapot.h" +#include "gltrackball.h" #define DEF_FACTORY "2" #define DEF_FISHEYE "True" #define DEF_TIGHTTURNS "False" #define DEF_ROTATEPIPES "True" -#define DEF_DBUF "False" #define NofSysTypes 3 static int factory; static Bool fisheye, tightturns, rotatepipes; -static Bool dbuf_p; static XrmOptionDescRec opts[] = { @@ -95,8 +110,6 @@ static XrmOptionDescRec opts[] = {"+tightturns", ".pipes.tightturns", XrmoptionNoArg, "off"}, {"-rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "on"}, {"+rotatepipes", ".pipes.rotatepipes", XrmoptionNoArg, "off"}, - {"-db", ".pipes.doubleBuffer", XrmoptionNoArg, "on"}, - {"+db", ".pipes.doubleBuffer", XrmoptionNoArg, "off"}, }; static argtype vars[] = { @@ -104,7 +117,6 @@ static argtype vars[] = {&fisheye, "fisheye", "Fisheye", DEF_FISHEYE, t_Bool}, {&tightturns, "tightturns", "Tightturns", DEF_TIGHTTURNS, t_Bool}, {&rotatepipes, "rotatepipes", "Rotatepipes", DEF_ROTATEPIPES, t_Bool}, - {&dbuf_p, "doubleBuffer", "DoubleBuffer", DEF_DBUF, t_Bool} }; static OptionStruct desc[] = { @@ -112,7 +124,6 @@ static OptionStruct desc[] = {"-/+fisheye", "turn on/off zoomed-in view of pipes"}, {"-/+tightturns", "turn on/off tight turns"}, {"-/+rotatepipes", "turn on/off pipe system rotation per screenful"}, - {"-/+db", "turn on/off double buffering"} }; ENTRYPOINT ModeSpecOpt pipes_opts = @@ -129,7 +140,6 @@ ModStruct pipes_description = #endif #define Scale4Window 0.1 -#define Scale4Iconic 0.07 #define one_third 0.3333333333333333333 @@ -151,7 +161,6 @@ ModStruct pipes_description = typedef struct { int flip; - GLint WindH, WindW; int Cells[HCELLS][VCELLS][HCELLS]; int usedcolors[DEFINEDCOLORS]; int directions[6]; @@ -170,8 +179,16 @@ typedef struct { GLuint valve, bolts, betweenbolts, elbowbolts, elbowcoins; GLuint guagehead, guageface, guagedial, guageconnector, teapot; int teapot_polys; - int reset; GLXContext *glx_context; + + Bool button_down_p; + trackball_state *trackball; + GLuint *dlists, *poly_counts; + int dlist_count, dlist_size; + int system_index, system_size; + + int fadeout; + } pipesstruct; extern struct lwo LWO_BigValve, LWO_PipeBetweenBolts, LWO_Bolts3D; @@ -204,8 +221,10 @@ static pipesstruct *pipes = NULL; static void MakeTube(ModeInfo *mi, int direction) { + Bool wire = MI_IS_WIREFRAME(mi); float an; float SINan_3, COSan_3; + int facets = (wire ? 5 : 24); /*dirUP = 00000000 */ /*dirDOWN = 00000001 */ @@ -218,8 +237,8 @@ MakeTube(ModeInfo *mi, int direction) glRotatef(90.0, (direction & 2) ? 0.0 : 1.0, (direction & 2) ? 1.0 : 0.0, 0.0); } - glBegin(GL_QUAD_STRIP); - for (an = 0.0; an <= 2.0 * M_PI; an += M_PI / 12.0) { + glBegin(wire ? GL_LINE_STRIP : GL_QUAD_STRIP); + for (an = 0.0; an <= 2.0 * M_PI; an += M_PI * 2 / facets) { glNormal3f((COSan_3 = cos(an) / 3.0), (SINan_3 = sin(an) / 3.0), 0.0); glVertex3f(COSan_3, SINan_3, one_third); glVertex3f(COSan_3, SINan_3, -one_third); @@ -250,13 +269,14 @@ mySphere(float radius, Bool wire) static void myElbow(ModeInfo * mi, int bolted) { -#define nsides 25 -#define rings 25 + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + Bool wire = MI_IS_WIREFRAME(mi); + + int nsides = (wire ? 6 : 25); + int rings = nsides; #define r one_third #define R one_third - pipesstruct *pp = &pipes[MI_SCREEN(mi)]; - int i, j; GLfloat p0[3], p1[3], p2[3], p3[3]; GLfloat n0[3], n1[3], n2[3], n3[3]; @@ -303,7 +323,7 @@ myElbow(ModeInfo * mi, int bolted) p0[2] = p1[2] = r * (n0[2] = n1[2] = sin(phi)); p2[2] = p3[2] = r * (n2[2] = n3[2] = sin(phi1)); - glBegin(GL_QUADS); + glBegin(wire ? GL_LINE_LOOP : GL_QUADS); glNormal3fv(n3); glVertex3fv(p3); glNormal3fv(n2); @@ -547,34 +567,8 @@ pinit(ModeInfo * mi, int zera) pipesstruct *pp = &pipes[MI_SCREEN(mi)]; int X, Y, Z; - if (zera) - mi->polygon_count = 0; - - glClearDepth(1.0); - glColor3f(1.0, 1.0, 1.0); - - glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0); - glLightfv(GL_LIGHT0, GL_POSITION, position0); - glLightfv(GL_LIGHT1, GL_AMBIENT, ambient1); - glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse1); - glLightfv(GL_LIGHT1, GL_POSITION, position1); - glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); - glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glEnable(GL_LIGHT1); - glEnable(GL_DEPTH_TEST); - glEnable(GL_NORMALIZE); - glEnable(GL_CULL_FACE); - - glShadeModel(GL_SMOOTH); - glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); - glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); - if (zera) { pp->system_number = 1; - glDrawBuffer(dbuf_p ? GL_BACK : GL_FRONT); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); (void) memset(pp->Cells, 0, sizeof (pp->Cells)); for (X = 0; X < HCELLS; X++) { @@ -592,9 +586,6 @@ pinit(ModeInfo * mi, int zera) } } (void) memset(pp->usedcolors, 0, sizeof (pp->usedcolors)); - if ((pp->initial_rotation += 10.0) > 45.0) { - pp->initial_rotation -= 90.0; - } } pp->counter = 0; pp->turncounter = 0; @@ -659,13 +650,11 @@ pinit(ModeInfo * mi, int zera) pp->nowdir = SelectNeighbor(mi); } + ENTRYPOINT void reshape_pipes(ModeInfo * mi, int width, int height) { - pipesstruct *pp = &pipes[MI_SCREEN(mi)]; - pinit(mi, 1); - - glViewport(0, 0, pp->WindW = (GLint) width, pp->WindH = (GLint) height); + glViewport(0, 0, width, (GLint) height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); /*glFrustum(-1.0, 1.0, -1.0, 1.0, 5.0, 15.0); */ @@ -675,6 +664,53 @@ reshape_pipes(ModeInfo * mi, int width, int height) glClear(GL_COLOR_BUFFER_BIT); } +ENTRYPOINT Bool +pipes_handle_event (ModeInfo *mi, XEvent *event) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + pp->button_down_p = True; + gltrackball_start (pp->trackball, + event->xbutton.x, event->xbutton.y, + MI_WIDTH (mi), MI_HEIGHT (mi)); + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + pp->button_down_p = False; + return True; + } + else if (event->xany.type == ButtonPress && + (event->xbutton.button == Button4 || + event->xbutton.button == Button5 || + event->xbutton.button == Button6 || + event->xbutton.button == Button7)) + { + gltrackball_mousewheel (pp->trackball, event->xbutton.button, 10, + !!event->xbutton.state); + return True; + } + else if (event->xany.type == MotionNotify && + pp->button_down_p) + { + gltrackball_track (pp->trackball, + event->xmotion.x, event->xmotion.y, + MI_WIDTH (mi), MI_HEIGHT (mi)); + return True; + } + + return False; +} + + + +static void generate_system (ModeInfo *); + + ENTRYPOINT void init_pipes (ModeInfo * mi) { @@ -688,11 +724,6 @@ init_pipes (ModeInfo * mi) } pp = &pipes[screen]; -#ifdef HAVE_JWZGLES - /* Single-buffering on iOS is so confusing! */ - dbuf_p = True; -#endif - pp->window = MI_WINDOW(mi); if ((pp->glx_context = init_GL(mi)) != NULL) { @@ -741,50 +772,65 @@ init_pipes (ModeInfo * mi) } else { MI_CLEARWINDOW(mi); } + + pp->trackball = gltrackball_init (); + generate_system (mi); } -ENTRYPOINT void -draw_pipes (ModeInfo * mi) + +static GLuint +get_dlist (ModeInfo *mi, int i) { - pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + if (i >= pp->dlist_count) + { + pp->dlist_count++; + if (pp->dlist_count >= pp->dlist_size) + { + int s2 = (pp->dlist_size + 100) * 1.2; + pp->dlists = (GLuint *) + realloc (pp->dlists, s2 * sizeof(*pp->dlists)); + if (! pp->dlists) abort(); + pp->poly_counts = (GLuint *) + realloc (pp->poly_counts, s2 * sizeof(*pp->poly_counts)); + if (! pp->poly_counts) abort(); + pp->dlist_size = s2; + } + pp->dlists [i] = glGenLists (1); + pp->poly_counts [i] = 0; + } + return pp->dlists[i]; +} - Display *display = MI_DISPLAY(mi); - Window window = MI_WINDOW(mi); + + +static void +generate_system (ModeInfo * mi) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; Bool wire = MI_IS_WIREFRAME(mi); int newdir; int OPX, OPY, OPZ; - if (!pp->glx_context) - return; + Bool reset_p = False; - glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context)); + pp->system_index = 0; + pp->system_size = 0; + pinit (mi, 1); - if (pp->reset) { - if (--pp->reset) { - /* Would be nice to fade to black here, by drawing successive quads - over the whole scene with gamma. */ - return; - } - pinit(mi, 1); - } + while (1) { + glNewList (get_dlist (mi, pp->system_size++), GL_COMPILE); + mi->polygon_count = 0; glPushMatrix(); - glTranslatef(0.0, 0.0, fisheye ? -3.8 : -4.8); - if (rotatepipes) - glRotatef(pp->initial_rotation, 0.0, 1.0, 0.0); - - if (!MI_IS_ICONIC(mi)) { - /* Width/height ratio handled by gluPerspective() now. */ - glScalef(Scale4Window, Scale4Window, Scale4Window); - } else { - glScalef(Scale4Iconic, Scale4Iconic, Scale4Iconic); - } - FindNeighbors(mi); - glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color); + if (wire) + glColor4fv (pp->system_color); + else + glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, pp->system_color); /* If it's the begining of a system, draw a sphere */ if (pp->olddir == dirNone) { @@ -805,15 +851,12 @@ draw_pipes (ModeInfo * mi) /* If the maximum number of system was drawn, restart (clearing the screen), */ /* else start a new system. */ if (++pp->system_number > pp->number_of_systems) { - /* pause doing nothing for N seconds before clearing the screen. */ - int secs = 3; - pp->reset = secs * 1000000 / (MI_PAUSE(mi) ? MI_PAUSE(mi) : 100); + reset_p = True; } else { pinit(mi, 0); } - glPopMatrix(); - return; + goto NEXT; } pp->counter++; pp->turncounter++; @@ -1032,16 +1075,110 @@ draw_pipes (ModeInfo * mi) glTranslatef(((pp->PX + OPX) / 2.0 - 16) / 3.0 * 4.0, ((pp->PY + OPY) / 2.0 - 12) / 3.0 * 4.0, ((pp->PZ + OPZ) / 2.0 - 16) / 3.0 * 4.0); MakeTube(mi, newdir); + NEXT: glPopMatrix(); + glEndList(); + pp->poly_counts [pp->system_size-1] = mi->polygon_count; + + if (reset_p) + break; + } +} - glFlush(); + +ENTRYPOINT void +draw_pipes (ModeInfo * mi) +{ + pipesstruct *pp = &pipes[MI_SCREEN(mi)]; + Display *display = MI_DISPLAY(mi); + Window window = MI_WINDOW(mi); + Bool wire = MI_IS_WIREFRAME(mi); + int i = 0; + + if (!pp->glx_context) + return; + + glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(pp->glx_context)); + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + glColor3f(1.0, 1.0, 1.0); + + glLightfv(GL_LIGHT0, GL_AMBIENT, ambient0); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse0); + glLightfv(GL_LIGHT0, GL_POSITION, position0); + glLightfv(GL_LIGHT1, GL_AMBIENT, ambient1); + glLightfv(GL_LIGHT1, GL_DIFFUSE, diffuse1); + glLightfv(GL_LIGHT1, GL_POSITION, position1); + glLightModelfv(GL_LIGHT_MODEL_AMBIENT, lmodel_ambient); + glLightModelfv(GL_LIGHT_MODEL_TWO_SIDE, lmodel_twoside); + + if (wire) + glDisable(GL_LIGHTING); + else + { + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + /* This looks crappy. */ + /* glEnable(GL_LIGHT1); */ + glEnable(GL_DEPTH_TEST); + glEnable(GL_NORMALIZE); + glEnable(GL_CULL_FACE); + } + + glShadeModel(GL_SMOOTH); + glMaterialfv(GL_FRONT_AND_BACK, GL_SHININESS, front_shininess); + glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, front_specular); + + glPushMatrix(); + + pp->initial_rotation += 0.02; + + glTranslatef(0.0, 0.0, fisheye ? -3.8 : -4.8); + + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); + gltrackball_rotate (pp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); + + if (rotatepipes) + glRotatef(pp->initial_rotation, 0.0, 1.0, 0.0); + + glScalef(Scale4Window, Scale4Window, Scale4Window); + + mi->polygon_count = 0; + + if (pp->fadeout) + { + GLfloat s = (pp->fadeout * pp->fadeout) / 10000.0; + glScalef (s, s, s); + glRotatef (90 * (1 - (pp->fadeout/100.0)), 1, 0, 0.1); + pp->fadeout -= 4; + if (pp->fadeout <= 0) + { + pp->fadeout = 0; + generate_system (mi); + } + } + else if (pp->system_index < pp->system_size) + pp->system_index++; + else + pp->fadeout = 100; + + for (i = 0; i < pp->system_index; i++) + { + glCallList (pp->dlists[i]); + mi->polygon_count += pp->poly_counts[i]; + } + + glPopMatrix(); if (mi->fps_p) do_fps (mi); + glFinish(); - if (dbuf_p) - glXSwapBuffers(display, window); + glXSwapBuffers(display, window); } + #ifndef STANDALONE ENTRYPOINT void change_pipes (ModeInfo * mi) @@ -1093,6 +1230,14 @@ release_pipes (ModeInfo * mi) glDeleteLists(pp->guageconnector, 1); if (pp->teapot) glDeleteLists(pp->teapot, 1); + if (pp->dlists) + { + int i; + for (i = 0; i < pp->dlist_count; i++) + glDeleteLists (pp->dlists[i], 1); + free (pp->dlists); + free (pp->poly_counts); + } } } diff --git a/hacks/glx/polyhedra-gl.c b/hacks/glx/polyhedra-gl.c index 1b2d7eb7..48e7ec53 100644 --- a/hacks/glx/polyhedra-gl.c +++ b/hacks/glx/polyhedra-gl.c @@ -62,6 +62,11 @@ # include #endif +#ifndef HAVE_JWZGLES +# define HAVE_TESS +#endif + + #ifdef USE_GL /* whole file */ typedef struct { @@ -381,13 +386,16 @@ new_label (ModeInfo *mi) } +#ifdef HAVE_TESS static void tess_error (GLenum errorCode) { fprintf (stderr, "%s: tesselation error: %s\n", progname, gluErrorString(errorCode)); - exit (0); + abort(); } +#endif /* HAVE_TESS */ + static void new_polyhedron (ModeInfo *mi) @@ -400,11 +408,13 @@ new_polyhedron (ModeInfo *mi) /* Use the GLU polygon tesselator so that nonconvex faces are displayed correctly (e.g., for the "pentagrammic concave deltohedron"). */ +# ifdef HAVE_TESS GLUtesselator *tobj = gluNewTess(); gluTessCallback (tobj, GLU_TESS_BEGIN, (void (*) (void)) &glBegin); gluTessCallback (tobj, GLU_TESS_END, (void (*) (void)) &glEnd); gluTessCallback (tobj, GLU_TESS_VERTEX, (void (*) (void)) &glVertex3dv); gluTessCallback (tobj, GLU_TESS_ERROR, (void (*) (void)) &tess_error); +# endif /* HAVE_TESS */ mi->polygon_count = 0; @@ -431,10 +441,20 @@ new_polyhedron (ModeInfo *mi) glNewList (bp->object_list, GL_COMPILE); if (bp->which == bp->npolyhedra-1) { + GLfloat bcolor[4]; + bcolor[0] = bp->colors[0].red / 65536.0; + bcolor[1] = bp->colors[0].green / 65536.0; + bcolor[2] = bp->colors[0].blue / 65536.0; + bcolor[3] = 1.0; + if (wire) + glColor3f (0, 1, 0); + else + glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bcolor); + glScalef (0.8, 0.8, 0.8); p->nfaces = unit_teapot (6, wire); - p->nedges = p->nfaces * 2; /* #### is this right? */ - p->npoints = p->nfaces / 3; /* #### is this right? */ + p->nedges = p->nfaces * 3 / 2; + p->npoints = p->nfaces * 3; p->logical_faces = p->nfaces; p->logical_vertices = p->npoints; } @@ -455,12 +475,13 @@ new_polyhedron (ModeInfo *mi) bcolor[0] = bp->colors[f->color].red / 65536.0; bcolor[1] = bp->colors[f->color].green / 65536.0; bcolor[2] = bp->colors[f->color].blue / 65536.0; - bcolor[2] = 1.0; + bcolor[3] = 1.0; glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, bcolor); } kludge_normal (f->npoints, f->points, p->points); +# ifdef HAVE_TESS gluTessBeginPolygon (tobj, 0); gluTessBeginContour (tobj); for (j = 0; j < f->npoints; j++) @@ -470,12 +491,26 @@ new_polyhedron (ModeInfo *mi) } gluTessEndContour (tobj); gluTessEndPolygon (tobj); +# else /* !HAVE_TESS */ + glBegin (wire ? GL_LINE_LOOP : + f->npoints == 3 ? GL_TRIANGLES : + f->npoints == 4 ? GL_QUADS : + GL_POLYGON); + for (j = 0; j < f->npoints; j++) + { + point *pp = &p->points[f->points[j]]; + glVertex3f (pp->x, pp->y, pp->z); + } + glEnd(); +# endif /* !HAVE_TESS */ } } glEndList (); mi->polygon_count += p->nfaces; +# ifdef HAVE_TESS gluDeleteTess (tobj); +# endif } @@ -676,7 +711,10 @@ draw_polyhedra (ModeInfo *mi) (y - 0.5) * 8, (z - 0.5) * 15); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (bp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); glRotatef (x * 360, 1.0, 0.0, 0.0); diff --git a/hacks/glx/providence.c b/hacks/glx/providence.c index 1f9e3bda..585bb42c 100644 --- a/hacks/glx/providence.c +++ b/hacks/glx/providence.c @@ -782,9 +782,7 @@ ENTRYPOINT void draw_providence(ModeInfo * mi) /* rotate providence */ glTranslatef(0.0, 0.0, mp->camera_z + sin(mp->theta/4.0)); glRotatef(10.0+20.0*sin(mp->theta/2.0), 1.0, 0.0, 0.0); - glRotatef(-current_device_rotation(), 0, 0, 1); gltrackball_rotate(mp->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); glRotatef(mp->theta * 180.0 / Pi, 0.0, -1.0, 0.0); /* draw providence */ diff --git a/hacks/glx/queens.c b/hacks/glx/queens.c index b0df5668..88592b13 100644 --- a/hacks/glx/queens.c +++ b/hacks/glx/queens.c @@ -352,11 +352,93 @@ static int drawBoard(Queenscreen *qs) } glEnd(); + + { + GLfloat off = 0.01; + GLfloat w = qs->BOARDSIZE; + GLfloat h = 0.1; + + /* Give the board a slight lip. */ + /* #### oops, normals are wrong here, but you can't tell */ + + glColor3f(0.3, 0.3, 0.3); + glBegin (GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, -h, w); + glVertex3f (0, 0, w); + + glVertex3f (0, 0, w); + glVertex3f (0, -h, w); + glVertex3f (w, -h, w); + glVertex3f (w, 0, w); + + glVertex3f (w, 0, w); + glVertex3f (w, -h, w); + glVertex3f (w, -h, 0); + glVertex3f (w, 0, 0); + + glVertex3f (w, 0, 0); + glVertex3f (w, -h, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, 0, 0); + + glVertex3f (0, -h, 0); + glVertex3f (w, -h, 0); + glVertex3f (w, -h, w); + glVertex3f (0, -h, w); + glEnd(); + polys += 4; + + /* Fill in the underside of the board with an invisible black box + to hide the reflections that are not on tiles. Probably there's + a way to do this with stencils instead. + */ + w -= off*2; + h = 5; + + glPushMatrix(); + glTranslatef (off, 0, off); + glDisable(GL_LIGHTING); + glColor3f(0,0,0); + glBegin (GL_QUADS); + glVertex3f (0, 0, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, -h, w); + glVertex3f (0, 0, w); + + glVertex3f (0, 0, w); + glVertex3f (0, -h, w); + glVertex3f (w, -h, w); + glVertex3f (w, 0, w); + + glVertex3f (w, 0, w); + glVertex3f (w, -h, w); + glVertex3f (w, -h, 0); + glVertex3f (w, 0, 0); + + glVertex3f (w, 0, 0); + glVertex3f (w, -h, 0); + glVertex3f (0, -h, 0); + glVertex3f (0, 0, 0); + + glVertex3f (0, -h, 0); + glVertex3f (w, -h, 0); + glVertex3f (w, -h, w); + glVertex3f (0, -h, w); + glEnd(); + polys += 4; + glPopMatrix(); + if (!wire) + glEnable(GL_LIGHTING); + } + return polys; } static int display(Queenscreen *qs) { + int max = 1024; int polys = 0; glClear(clearbits); @@ -366,6 +448,7 @@ static int display(Queenscreen *qs) glRotatef(current_device_rotation(), 0, 0, 1); /* setup light attenuation */ + /* #### apparently this does nothing */ glEnable(GL_COLOR_MATERIAL); glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 0.8/(0.01+findAlpha(qs))); glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.06); @@ -373,9 +456,7 @@ static int display(Queenscreen *qs) /** setup perspective */ glTranslatef(0.0, 0.0, -1.5*qs->BOARDSIZE); glRotatef(30.0, 1.0, 0.0, 0.0); - glRotatef(-current_device_rotation(), 0, 0, 1); gltrackball_rotate (qs->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); glRotatef(qs->theta*100, 0.0, 1.0, 0.0); glTranslatef(-0.5*qs->BOARDSIZE, 0.0, -0.5*qs->BOARDSIZE); @@ -390,6 +471,18 @@ static int display(Queenscreen *qs) glEnable(GL_LIGHT0); } + /* Since the lighting attenuation trick up there doesn't seem to be working, + let's drop the old board down and drop the new board in. */ + if (qs->steps < (max/8.0)) { + GLfloat y = qs->steps / (max/8.0); + y = sin (M_PI/2 * y); + glTranslatef (0, 10 - (y * 10), 0); + } else if (qs->steps > max-(max/8.0)) { + GLfloat y = (qs->steps - (max-(max/8.0))) / (GLfloat) (max/8.0); + y = 1 - sin (M_PI/2 * (1-y)); + glTranslatef (0, -y * 15, 0); + } + /* draw reflections */ if(!wire) { polys += draw_reflections(qs); @@ -409,7 +502,7 @@ static int display(Queenscreen *qs) qs->theta += .002; /* zero out board, find new solution of size MINBOARD <= i <= MAXBOARD */ - if(++qs->steps == 1024) { + if(++qs->steps == max) { qs->steps = 0; blank(qs); qs->BOARDSIZE = MINBOARD + (random() % (MAXBOARD - MINBOARD + 1)); @@ -500,7 +593,7 @@ ENTRYPOINT void init_queens(ModeInfo *mi) qs->BOARDSIZE = 8; /* 8 cuz its classic */ - gen_model_lists(-1, poly_counts); + chessmodels_gen_lists(-1, poly_counts); qs->queen_list = QUEEN; qs->queen_polys = poly_counts[QUEEN]; diff --git a/hacks/glx/rubik.c b/hacks/glx/rubik.c index 0f40347c..20ced973 100644 --- a/hacks/glx/rubik.c +++ b/hacks/glx/rubik.c @@ -111,13 +111,14 @@ static const char sccsid[] = "@(#)rubik.c 5.01 2001/03/01 xlockmore"; "*cycles: 20 \n" \ "*size: -6 \n" # define refresh_rubik 0 -# define rubik_handle_event 0 # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ # include "xlock.h" /* from the xlockmore distribution */ # include "vis.h" #endif /* !STANDALONE */ +#include "gltrackball.h" + #ifdef MODE_rubik #define DEF_SIZEX "0" @@ -372,6 +373,8 @@ typedef struct { GLfloat rotatestep; GLfloat PX, PY, VX, VY; GLXContext *glx_context; + Bool button_down_p; + trackball_state *trackball; } rubikstruct; static const float front_shininess[] = {60.0}; @@ -1816,6 +1819,49 @@ reshape_rubik(ModeInfo * mi, int width, int height) } +ENTRYPOINT Bool +rubik_handle_event (ModeInfo *mi, XEvent *event) +{ + rubikstruct *rp = &rubik[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + rp->button_down_p = True; + gltrackball_start (rp->trackball, + event->xbutton.x, event->xbutton.y, + MI_WIDTH (mi), MI_HEIGHT (mi)); + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + rp->button_down_p = False; + return True; + } + else if (event->xany.type == ButtonPress && + (event->xbutton.button == Button4 || + event->xbutton.button == Button5 || + event->xbutton.button == Button6 || + event->xbutton.button == Button7)) + { + gltrackball_mousewheel (rp->trackball, event->xbutton.button, 10, + !!event->xbutton.state); + return True; + } + else if (event->xany.type == MotionNotify && + rp->button_down_p) + { + gltrackball_track (rp->trackball, + event->xmotion.x, event->xmotion.y, + MI_WIDTH (mi), MI_HEIGHT (mi)); + return True; + } + + return False; +} + + static Bool pinit(ModeInfo * mi) { @@ -1897,6 +1943,8 @@ init_rubik(ModeInfo * mi) rp->PX = ((float) LRAND() / (float) MAXRAND) * 2.0 - 1.0; rp->PY = ((float) LRAND() / (float) MAXRAND) * 2.0 - 1.0; + rp->trackball = gltrackball_init (); + if ((rp->glx_context = init_GL(mi)) != NULL) { reshape_rubik(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); @@ -1983,6 +2031,11 @@ draw_rubik(ModeInfo * mi) glScalef(Scale4Iconic * rp->WindH / rp->WindW, Scale4Iconic, Scale4Iconic); } + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); + gltrackball_rotate (rp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); + glRotatef(rp->step * 100, 1, 0, 0); glRotatef(rp->step * 95, 0, 1, 0); glRotatef(rp->step * 90, 0, 0, 1); diff --git a/hacks/glx/rubikblocks.c b/hacks/glx/rubikblocks.c index e8caf32f..86968ad9 100644 --- a/hacks/glx/rubikblocks.c +++ b/hacks/glx/rubikblocks.c @@ -262,7 +262,12 @@ draw_main(ModeInfo *mi, rubikblocks_conf *cp) glLoadIdentity(); get_position(cp->rot, &x, &y, &z, !cp->button_down); glTranslatef((x-0.5)*6, (y-0.5)*6, -20); + + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate(cp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); + get_rotation(cp->rot, &x, &y, &z, !cp->button_down); glRotatef(x*360, 1, 0, 0); glRotatef(y*360, 0, 1, 0); diff --git a/hacks/glx/sballs.c b/hacks/glx/sballs.c index 76b60ec0..833b0001 100644 --- a/hacks/glx/sballs.c +++ b/hacks/glx/sballs.c @@ -580,7 +580,10 @@ static void Draw(ModeInfo * mi) glEnd(); mi->polygon_count++; + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (sb->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); /* rotate the balls */ glRotatef(sb->rotm[0], 1.0f, 0.0f, 0.0f); diff --git a/hacks/glx/sierpinski3d.c b/hacks/glx/sierpinski3d.c index 07836998..7bcefcf2 100644 --- a/hacks/glx/sierpinski3d.c +++ b/hacks/glx/sierpinski3d.c @@ -327,7 +327,10 @@ draw(ModeInfo *mi) (y - 0.5) * 10, (z - 0.5) * 20); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (gp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation (gp->rot, &x, &y, &z, !gp->button_down_p); glRotatef (x * 360, 1.0, 0.0, 0.0); diff --git a/hacks/glx/skytentacles.c b/hacks/glx/skytentacles.c index ace1e594..c9f1febe 100644 --- a/hacks/glx/skytentacles.c +++ b/hacks/glx/skytentacles.c @@ -993,7 +993,7 @@ draw_tentacles (ModeInfo *mi) glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix (); - + glRotatef(current_device_rotation(), 0, 0, 1); # if 1 glScalef (3, 3, 3); @@ -1017,7 +1017,6 @@ draw_tentacles (ModeInfo *mi) # endif gltrackball_rotate (tc->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); mi->polygon_count = 0; diff --git a/hacks/glx/sonar-icmp.c b/hacks/glx/sonar-icmp.c index dfa277d4..fa1ea893 100644 --- a/hacks/glx/sonar-icmp.c +++ b/hacks/glx/sonar-icmp.c @@ -39,6 +39,10 @@ */ #endif +#ifndef USE_IPHONE +# define READ_FILES +#endif + #if defined(HAVE_ICMP) || defined(HAVE_ICMPHDR) # include # include @@ -57,6 +61,9 @@ # include # include # include +# ifdef HAVE_GETIFADDRS +# include +# endif #endif /* HAVE_ICMP || HAVE_ICMPHDR */ #if defined(HAVE_ICMP) @@ -79,10 +86,15 @@ # undef HAVE_PING #endif +#ifndef USE_IPHONE +# define LOAD_FILES +#endif + #ifndef HAVE_PING sonar_sensor_data * -init_ping (Display *dpy, char **error_ret, const char *subnet, int timeout, +init_ping (Display *dpy, char **error_ret, char **desc_ret, + const char *subnet, int timeout, Bool resolve_p, Bool times_p, Bool debug_p) { if (! (!subnet || !*subnet || !strcmp(subnet, "default"))) @@ -330,11 +342,13 @@ bogie_for_host (sonar_sensor_data *ssd, const char *name, Bool resolve_p) return b; FAIL: - if (b) free_bogie (ssd, b); + if (b) sonar_free_bogie (ssd, b); return 0; } +#ifdef READ_FILES + /* Return a list of bogies read from a file. The file can be like /etc/hosts or .ssh/known_hosts or probably just about anything that has host names in it. @@ -442,6 +456,7 @@ read_hosts_file (sonar_sensor_data *ssd, const char *filename) fclose(fp); return list; } +#endif /* READ_FILES */ static sonar_bogie * @@ -484,22 +499,41 @@ delete_duplicate_hosts (sonar_sensor_data *ssd, sonar_bogie *list) } +static unsigned int +width_mask (int width) +{ + unsigned int m = 0; + int i; + for (i = 0; i < width; i++) + m |= (1L << (31-i)); + return m; +} + + +#ifdef HAVE_GETIFADDRS +static int +mask_width (unsigned int mask) +{ + int i; + for (i = 0; i < 32; i++) + if (mask & (1 << i)) + break; + return 32-i; +} +#endif + + /* Generate a list of bogies consisting of all of the entries on the same subnet. 'base' ip is in network order; 0 means localhost. */ static sonar_bogie * -subnet_hosts (sonar_sensor_data *ssd, char **error_ret, +subnet_hosts (sonar_sensor_data *ssd, char **error_ret, char **desc_ret, unsigned long n_base, int subnet_width) { ping_data *pd = (ping_data *) ssd->closure; unsigned long h_mask; /* host order */ unsigned long h_base; /* host order */ - - /* Local Variables */ - - char hostname[BUFSIZ]; char address[BUFSIZ]; - struct hostent *hent; char *p; int i; sonar_bogie *new; @@ -532,79 +566,172 @@ subnet_hosts (sonar_sensor_data *ssd, char **error_ret, if (pd->debug_p) fprintf (stderr, "%s: adding %d-bit subnet\n", progname, subnet_width); - /* Get our hostname */ - if (gethostname(hostname, BUFSIZ)) + if (! n_base) { - *error_ret = strdup ("Unable to determine\n" - "local host name!"); - return 0; - } +# ifdef HAVE_GETIFADDRS - /* Get our IP address and convert it to a string */ + /* To determine the local subnet, we need to know the local IP address. + Do this by looking at the IPs of every network interface. + */ + struct in_addr in = { 0, }; + struct ifaddrs *all = 0, *ifa; + + if (pd->debug_p) + fprintf (stderr, "%s: listing network interfaces\n", progname); + + getifaddrs (&all); + for (ifa = all; ifa; ifa = ifa->ifa_next) + { + struct in_addr in2; + unsigned long mask; + if (ifa->ifa_addr->sa_family != AF_INET) + { + if (pd->debug_p) + fprintf (stderr, "%s: if: %4s: %s\n", progname, + ifa->ifa_name, + (ifa->ifa_addr->sa_family == AF_UNIX ? "local" : + ifa->ifa_addr->sa_family == AF_LINK ? "link" : + ifa->ifa_addr->sa_family == AF_INET6 ? "ipv6" : + "other")); + continue; + } + in2 = ((struct sockaddr_in *) ifa->ifa_addr)->sin_addr; + mask = ntohl (((struct sockaddr_in *) ifa->ifa_netmask) + ->sin_addr.s_addr); + if (pd->debug_p) + fprintf (stderr, "%s: if: %4s: inet = %s /%d 0x%08lx\n", + progname, + ifa->ifa_name, + inet_ntoa (in2), + mask_width (mask), + mask); + if (in2.s_addr == 0x0100007f || /* 127.0.0.1 in network order */ + mask == 0) + continue; + + /* At least on the AT&T 3G network, pinging either of the two + hosts on a /31 network doesn't work, so don't try. + */ + if (mask_width (mask) == 31) + { + char buf[255]; + sprintf (buf, + "Can't ping subnet:\n" + "local network is\n" + "%s/%d,\n" + "a p2p bridge\n" + "on if %s.", + inet_ntoa (in2), mask_width (mask), ifa->ifa_name); + if (*error_ret) free (*error_ret); + *error_ret = strdup (buf); + continue; + } + + in = in2; + subnet_width = mask_width (mask); + } + + if (in.s_addr) + { + if (*error_ret) free (*error_ret); + *error_ret = 0; + n_base = in.s_addr; /* already in network order, I think? */ + } + else if (!*error_ret) + *error_ret = strdup ("Unable to determine\nlocal IP address\n"); + + if (all) + freeifaddrs (all); + + if (*error_ret) + return 0; + +# else /* !HAVE_GETIFADDRS */ + + /* If we can't walk the list of network interfaces to figure out + our local IP address, try to do it by finding the local host + name, then resolving that. + */ + char hostname[BUFSIZ]; + struct hostent *hent = 0; + + if (gethostname(hostname, BUFSIZ)) + { + *error_ret = strdup ("Unable to determine\n" + "local host name!"); + return 0; + } + + /* Get our IP address and convert it to a string */ - hent = gethostbyname(hostname); - if (! hent) - { - strcat (hostname, ".local"); /* Necessary on iphone */ hent = gethostbyname(hostname); - } + if (! hent) + { + strcat (hostname, ".local"); /* Necessary on iphone */ + hent = gethostbyname(hostname); + } - if (! hent) - { - /* Without being able to resolve localhost to an IP, we don't know - what our local subnet is. I don't know another way to find that, - short of running "ifconfig" and parsing the output... - */ - sprintf(buf, - "Unable to resolve\n" - "local host \"%s\"", - hostname); - *error_ret = strdup(buf); - return 0; + if (! hent) + { + sprintf(buf, + "Unable to resolve\n" + "local host \"%s\"", + hostname); + *error_ret = strdup(buf); + return 0; + } + + strcpy (address, inet_ntoa(*((struct in_addr *)hent->h_addr_list[0]))); + n_base = pack_addr (hent->h_addr_list[0][0], + hent->h_addr_list[0][1], + hent->h_addr_list[0][2], + hent->h_addr_list[0][3]); + + if (n_base == 0x0100007f) /* 127.0.0.1 in network order */ + { + unsigned int a, b, c, d; + unpack_addr (n_base, &a, &b, &c, &d); + sprintf (buf, + "Unable to determine\n" + "local subnet address:\n" + "\"%s\"\n" + "resolves to\n" + "loopback address\n" + "%u.%u.%u.%u.", + hostname, a, b, c, d); + *error_ret = strdup(buf); + return 0; + } + +# endif /* !HAVE_GETIFADDRS */ } - strcpy (address, inet_ntoa(*((struct in_addr *)hent->h_addr_list[0]))); /* Construct targets for all addresses in this subnet */ - h_mask = 0; - for (i = 0; i < subnet_width; i++) - h_mask |= (1L << (31-i)); - - /* If no base IP specified, assume localhost. */ - if (n_base == 0) - n_base = pack_addr (hent->h_addr_list[0][0], - hent->h_addr_list[0][1], - hent->h_addr_list[0][2], - hent->h_addr_list[0][3]); + h_mask = width_mask (subnet_width); h_base = ntohl (n_base); - if (h_base == 0x7F000001L) /* 127.0.0.1 in host order */ - { - unsigned int a, b, c, d; - unpack_addr (n_base, &a, &b, &c, &d); - sprintf (buf, - "Unable to determine\n" - "local subnet address:\n" - "\"%s\"\n" - "resolves to\n" - "loopback address\n" - "%u.%u.%u.%u.", - hostname, a, b, c, d); - *error_ret = strdup(buf); - return 0; - } + if (desc_ret && !*desc_ret) { + unsigned int a, b, c, d; + char buf[255]; + unpack_addr (n_base, &a, &b, &c, &d); + sprintf (buf, "%u.%u.%u.%u/%d", a, b, c, d, subnet_width); + *desc_ret = strdup (buf); + } for (i = 255; i >= 0; i--) { unsigned int a, b, c, d; int ip = (h_base & 0xFFFFFF00L) | i; /* host order */ - if ((ip & h_mask) != (h_base & h_mask)) /* not in mask range at all */ + if ((ip & h_mask) != (h_base & h_mask)) /* skip out-of-subnet host */ continue; - if ((ip & ~h_mask) == 0) /* broadcast address */ + else if (subnet_width == 31) /* 1-bit bridge: 2 hosts */ + ; + else if ((ip & ~h_mask) == 0) /* skip network address */ continue; - if ((ip & ~h_mask) == ~h_mask) /* broadcast address */ + else if ((ip & ~h_mask) == ~h_mask) /* skip broadcast address */ continue; unpack_addr (htonl (ip), &a, &b, &c, &d); @@ -749,7 +876,7 @@ checksum (u_short *packet, int size) static sonar_bogie * copy_ping_bogie (sonar_sensor_data *ssd, const sonar_bogie *b) { - sonar_bogie *b2 = copy_bogie (ssd, b); + sonar_bogie *b2 = sonar_copy_bogie (ssd, b); if (b->closure) { ping_bogie *pb = (ping_bogie *) b->closure; @@ -949,7 +1076,7 @@ ping_free_data (sonar_sensor_data *ssd, void *closure) while (b) { sonar_bogie *b2 = b->next; - free_bogie (ssd, b); + sonar_free_bogie (ssd, b); b = b2; } free (pd); @@ -1007,25 +1134,32 @@ ping_scan (sonar_sensor_data *ssd) /* Returns a list of hosts to ping based on the "-ping" argument. */ static sonar_bogie * -parse_mode (sonar_sensor_data *ssd, char **error_ret, +parse_mode (sonar_sensor_data *ssd, char **error_ret, char **desc_ret, const char *ping_arg, Bool ping_works_p) { ping_data *pd = (ping_data *) ssd->closure; char *source, *token, *end, dummy; sonar_bogie *hostlist = 0; + const char *fallback = "subnet"; - if (!ping_arg || !*ping_arg || !strcmp (ping_arg, "default")) - source = strdup("subnet/28"); - else + AGAIN: + + if (fallback && (!ping_arg || !*ping_arg || !strcmp (ping_arg, "default"))) + source = strdup(fallback); + else if (ping_arg) source = strdup(ping_arg); + else + return 0; token = source; end = source + strlen(source); while (token < end) { char *next; - sonar_bogie *new; + sonar_bogie *new = 0; +# ifdef READ_FILES struct stat st; +# endif unsigned int n0=0, n1=0, n2=0, n3=0, m=0; char d; @@ -1054,7 +1188,7 @@ parse_mode (sonar_sensor_data *ssd, char **error_ret, subnet: A.B.C/M */ unsigned long ip = pack_addr (n0, n1, n2, n3); - new = subnet_hosts (ssd, error_ret, ip, m); + new = subnet_hosts (ssd, error_ret, desc_ret, ip, m); } else if (4 == sscanf (token, "%u.%u.%u.%u %c", &n0, &n1, &n2, &n3, &d)) { @@ -1064,20 +1198,27 @@ parse_mode (sonar_sensor_data *ssd, char **error_ret, } else if (!strcmp (token, "subnet")) { - new = subnet_hosts (ssd, error_ret, 0, 24); + new = subnet_hosts (ssd, error_ret, desc_ret, 0, 24); } else if (1 == sscanf (token, "subnet/%u %c", &m, &dummy)) { - new = subnet_hosts (ssd, error_ret, 0, m); + new = subnet_hosts (ssd, error_ret, desc_ret, 0, m); } else if (*token == '.' || *token == '/' || - *token == '$' || *token == '~' || - !stat (token, &st)) + *token == '$' || *token == '~') { - /* file name - */ +# ifdef READ_FILES new = read_hosts_file (ssd, token); +# else + if (pd->debug_p) fprintf (stderr, "%s: skipping file\n", progname); +# endif } +# ifdef READ_FILES + else if (!stat (token, &st)) + { + new = read_hosts_file (ssd, token); + } +# endif /* READ_FILES */ else { /* not an existant file - must be a host name @@ -1102,20 +1243,35 @@ parse_mode (sonar_sensor_data *ssd, char **error_ret, } free (source); + + /* If the arg was completely unparsable, fall back to the local subnet. + This happens if the default is "/etc/hosts" but READ_FILES is off. + Or if we're on a /31 network, in which case we try twice then fail. + */ + if (!hostlist && fallback) + { + if (pd->debug_p) + fprintf (stderr, "%s: no hosts parsed! Trying %s\n", + progname, fallback); + ping_arg = fallback; + fallback = 0; + goto AGAIN; + } + return hostlist; } sonar_sensor_data * -init_ping (Display *dpy, char **error_ret, - const char *subnet, int timeout, - Bool resolve_p, Bool times_p, Bool debug_p) +sonar_init_ping (Display *dpy, char **error_ret, char **desc_ret, + const char *subnet, int timeout, + Bool resolve_p, Bool times_p, Bool debug_p) { sonar_sensor_data *ssd = (sonar_sensor_data *) calloc (1, sizeof(*ssd)); ping_data *pd = (ping_data *) calloc (1, sizeof(*pd)); sonar_bogie *b; char *s; - int i, div; + int i; Bool socket_initted_p = False; Bool socket_raw_p = False; @@ -1188,7 +1344,8 @@ init_ping (Display *dpy, char **error_ret, /* Generate a list of targets */ - pd->targets = parse_mode (ssd, error_ret, subnet, socket_initted_p); + pd->targets = parse_mode (ssd, error_ret, desc_ret, subnet, + socket_initted_p); pd->targets = delete_duplicate_hosts (ssd, pd->targets); if (debug_p) @@ -1220,12 +1377,21 @@ init_ping (Display *dpy, char **error_ret, return 0; } - /* Distribute them evenly around the display field. + /* Distribute them evenly around the display field, clockwise. + Even on a /24, allocated IPs tend to cluster together, so + don't put any two hosts closer together than N degrees to + avoid unnecessary overlap when we have plenty of space due + to addresses that probably won't respond. */ - div = pd->target_count; - if (div > 90) div = 90; /* no closer together than 4 degrees */ - for (i = 0, b = pd->targets; b; b = b->next, i++) - b->th = M_PI * 2 * ((div - i) % div) / div; + { + int min_separation = 23; /* degrees */ + int div = pd->target_count; + if (div > 360 / min_separation) + div = 360 / min_separation; + for (i = 0, b = pd->targets; b; b = b->next, i++) + b->th = (M_PI/2 - + M_PI * 2 * ((div - i) % div) / div); + } return ssd; } diff --git a/hacks/glx/sonar-sim.c b/hacks/glx/sonar-sim.c index f87de664..ea5452e7 100644 --- a/hacks/glx/sonar-sim.c +++ b/hacks/glx/sonar-sim.c @@ -1,4 +1,4 @@ -/* sonar, Copyright (c) 1998-2008 Jamie Zawinski and Stephen Martin +/* sonar, Copyright (c) 1998-2012 Jamie Zawinski and Stephen Martin * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -53,7 +53,7 @@ sim_scan (sonar_sensor_data *ssd) while (b->r < 0.2) b->r += scale * 0.1; while (b->r > 0.9) b->r -= scale * 0.1; - b2 = copy_bogie (ssd, b); + b2 = sonar_copy_bogie (ssd, b); b2->next = list; list = b2; } @@ -86,10 +86,10 @@ make_bogies (sonar_sensor_data *ssd) sonar_sensor_data * -init_simulation (Display *dpy, char **error_ret, - const char *team_a_name, const char *team_b_name, - int team_a_count, int team_b_count, - Bool debug_p) +sonar_init_simulation (Display *dpy, char **error_ret, char **desc_ret, + const char *team_a_name, const char *team_b_name, + int team_a_count, int team_b_count, + Bool debug_p) { sonar_sensor_data *ssd = (sonar_sensor_data *) calloc (1, sizeof(*ssd)); sim_data *sd = (sim_data *) calloc (1, sizeof(*sd)); diff --git a/hacks/glx/sonar.c b/hacks/glx/sonar.c index ac51a2ce..bafb43ed 100644 --- a/hacks/glx/sonar.c +++ b/hacks/glx/sonar.c @@ -43,11 +43,12 @@ * * It should be easy to extend this code to support other sorts of sensors. * Some ideas: + * * - search the output of "netstat" for the list of hosts to ping; * - plot the contents of /proc/interrupts; * - plot the process table, by process size, cpu usage, or total time; * - plot the logged on users by idle time or cpu usage. - * + * - plot IM contacts or Facebook friends and their last-activity times. */ #define DEF_FONT "-*-lucidatypewriter-bold-r-normal-*-*-480-*-*-*-*-iso8859-1" @@ -108,8 +109,10 @@ typedef struct { texture_font_data *texfont; + enum { MSG, RESOLVE, RUN } state; sonar_sensor_data *ssd; char *error; + char *desc; sonar_bogie *displayed; /* on screen and fading */ sonar_bogie *pending; /* returned by sensor, not yet on screen */ @@ -331,10 +334,10 @@ draw_text (ModeInfo *mi, const char *string, GLfloat r, GLfloat th, char *string2 = strdup (string); char *token = string2; char *line; - GLfloat color[4]; if (size <= 0) /* if size not specified, draw in yellow with alpha */ { + GLfloat color[4]; color[0] = 1; color[1] = 1; color[2] = 0; @@ -499,7 +502,7 @@ draw_bogies (ModeInfo *mi) /* called from sonar-sim.c and sonar-icmp.c */ sonar_bogie * -copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b) +sonar_copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b) { sonar_bogie *b2 = (sonar_bogie *) calloc (1, sizeof(*b2)); b2->name = strdup (b->name); @@ -519,7 +522,7 @@ copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b) /* called from sonar-icmp.c */ void -free_bogie (sonar_sensor_data *ssd, sonar_bogie *b) +sonar_free_bogie (sonar_sensor_data *ssd, sonar_bogie *b) { if (b->closure) ssd->free_bogie_cb (ssd, b->closure); @@ -542,7 +545,7 @@ delete_bogie (sonar_sensor_data *ssd, sonar_bogie *b, prev->next = b->next; else (*from_list) = b->next; - free_bogie (ssd, b); + sonar_free_bogie (ssd, b); break; } } @@ -569,7 +572,7 @@ copy_and_insert_bogie (sonar_sensor_data *ssd, sonar_bogie *b, } } - b = copy_bogie (ssd, b); + b = sonar_copy_bogie (ssd, b); b->next = *to_list; *to_list = b; } @@ -727,7 +730,7 @@ draw_startup_blurb (ModeInfo *mi) /* only leave error message up for N seconds */ if (sp->error && - sp->start_time + 4 < double_time()) + sp->start_time + 6 < double_time()) { free (sp->error); sp->error = 0; @@ -852,6 +855,7 @@ init_sonar (ModeInfo *mi) sp->start_time = double_time (); sp->sweep_offset = random() % 60; sp->sweep_th = -1; + sp->state = MSG; } @@ -865,18 +869,21 @@ init_sensor (ModeInfo *mi) if (!ping_arg || !*ping_arg || !strcmp(ping_arg, "default") || !!strcmp (ping_arg, "simulation")) - sp->ssd = init_ping (MI_DISPLAY (mi), &sp->error, ping_arg, - ping_timeout, resolve_p, times_p, debug_p); + sp->ssd = sonar_init_ping (MI_DISPLAY (mi), &sp->error, &sp->desc, + ping_arg, ping_timeout, resolve_p, times_p, + debug_p); + + sp->start_time = double_time (); /* for error message timing */ /* Disavow privs. This was already done in init_ping(), but we might not have called that at all, so do it again. */ setuid(getuid()); if (!sp->ssd) - sp->ssd = init_simulation (MI_DISPLAY (mi), &sp->error, - team_a_name, team_b_name, - team_a_count, team_b_count, - debug_p); + sp->ssd = sonar_init_simulation (MI_DISPLAY (mi), &sp->error, &sp->desc, + team_a_name, team_b_name, + team_a_count, team_b_count, + debug_p); if (!sp->ssd) abort(); } @@ -923,6 +930,8 @@ draw_sonar (ModeInfo *mi) } glPushMatrix (); + glRotatef(current_device_rotation(), 0, 0, 1); + { GLfloat s = 7; if (MI_WIDTH(mi) < MI_HEIGHT(mi)) @@ -931,7 +940,6 @@ draw_sonar (ModeInfo *mi) } gltrackball_rotate (sp->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); if (wobble_p) { @@ -969,8 +977,33 @@ draw_sonar (ModeInfo *mi) glCallList (sp->grid_list); mi->polygon_count += sp->screen_polys; - if (! sp->ssd || sp->error) + if (sp->desc) /* local subnet */ + { + glPushMatrix(); + glTranslatef (0, 0, 0.00002); + mi->polygon_count += draw_text (mi, sp->desc, 1.35, M_PI * 0.75, 0, 10); + /* glRotatef (45, 0, 0, 1); */ + /* mi->polygon_count += draw_text (mi, sp->desc, 1.2, M_PI/2, 0, 10); */ + glPopMatrix(); + } + + if (sp->error) + sp->state = MSG; + + switch (sp->state) { + case MSG: /* Frame 1: get "Resolving Hosts" on screen. */ draw_startup_blurb(mi); + sp->state++; + break; + case RESOLVE: /* Frame 2: gethostbyaddr may take a while. */ + if (! sp->ssd) + init_sensor (mi); + sp->state++; + break; + case RUN: /* Frame N: ping away */ + sweep (sp); + break; + } glPopMatrix (); @@ -978,12 +1011,6 @@ draw_sonar (ModeInfo *mi) glFinish(); glXSwapBuffers(dpy, window); - - if (! sp->ssd) - /* Just starting up. "Resolving hosts" text printed. Go stall. */ - init_sensor (mi); - else - sweep (sp); } ENTRYPOINT void diff --git a/hacks/glx/sonar.h b/hacks/glx/sonar.h index 595dcac9..d6473e00 100644 --- a/hacks/glx/sonar.h +++ b/hacks/glx/sonar.h @@ -1,4 +1,4 @@ -/* sonar, Copyright (c) 1998-2008 Jamie Zawinski and Stephen Martin +/* sonar, Copyright (c) 1998-2012 Jamie Zawinski and Stephen Martin * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -42,27 +42,30 @@ struct sonar_sensor_data { }; /* frees bogie and its contents, including calling the free_bogie_cb. */ -extern void free_bogie (sonar_sensor_data *ssd, sonar_bogie *b); +extern void sonar_free_bogie (sonar_sensor_data *ssd, sonar_bogie *b); /* makes a copy of the bogie, not including the 'closure' data. */ -extern sonar_bogie *copy_bogie (sonar_sensor_data *ssd, const sonar_bogie *b); +extern sonar_bogie *sonar_copy_bogie (sonar_sensor_data *, + const sonar_bogie *); /* Set up and return sensor state for ICMP pings. */ -extern sonar_sensor_data *init_ping (Display *dpy, - char **error_ret, - const char *subnets, - int ping_timeout, - Bool resolve_p, Bool times_p, - Bool debug_p); - -/* Set up and return sensor state for the simulation. */ -extern sonar_sensor_data *init_simulation (Display *dpy, +extern sonar_sensor_data *sonar_init_ping (Display *dpy, char **error_ret, - const char *team_a_name, - const char *team_b_name, - int team_a_count, - int team_b_count, + char **desc_ret, + const char *subnets, + int ping_timeout, + Bool resolve_p, Bool times_p, Bool debug_p); +/* Set up and return sensor state for the simulation. */ +extern sonar_sensor_data *sonar_init_simulation (Display *dpy, + char **error_ret, + char **desc_ret, + const char *team_a_name, + const char *team_b_name, + int team_a_count, + int team_b_count, + Bool debug_p); + #endif /* __SONAR_XSCREENSAVER_H__ */ diff --git a/hacks/glx/sonar.man b/hacks/glx/sonar.man index bb3b07e1..9927b3bb 100644 --- a/hacks/glx/sonar.man +++ b/hacks/glx/sonar.man @@ -54,19 +54,22 @@ Run in simulation mode instead of pinging real hosts. Ping the given host. .TP 12 .I A.B.C.D -Ping the given IP address. +Ping the given IPv4 address. .TP 12 .B subnet -Ping the local class C subnet (the nearest 255 addresses). +Ping the local subnet. On systems where we can determine the local +network mask, we use that; otherwise, we assume Class C (254 hosts). .TP 12 .B subnet/\fINN\fP Ping a different-sized local subnet: e.g., \fBsubnet/28\fP would ping -a 4-bit subnet (the nearest 15 addresses). +a 4-bit subnet (the nearest 14 addresses). On systems where we can +determine the local network mask, we always use that. .TP 12 .I A.B.C.D/NN -Ping an arbitrary other subnet. The IP address specifies the base address, -and the part after the slash is how wide the subnet is. Typical values -are /24 (for 255 addresses) and /28 (for 15 addresses). +Ping an arbitrary other IPv4 subnet. The address specifies +the base address, and the part after the slash is how wide the +subnet is. Typical values are /24 (for 254 addresses) and /28 (for +14 addresses). .TP 12 .I filename Ping the hosts listed in the given file. This file can be in the @@ -138,12 +141,15 @@ This means that if any the hosts you are pinging take longer than 2 seconds to respond, they won't show up; and if you are pinging several hosts with very fast response times, they will all appear close to the center of the screen (making their names hard to read.) +.SH BUGS +Does not support IPv6. .SH SEE ALSO .BR X (1), .BR xscreensaver (1), -.BR ping (8) +.BR ping (8), +.BR ping6 (8) .SH COPYRIGHT -Copyright \(co 2000-2008 by Jamie Zawinski +Copyright \(co 2000-2012 by Jamie Zawinski .RE Copyright \(co 1998 by Stephen Martin. diff --git a/hacks/glx/spheremonics.c b/hacks/glx/spheremonics.c index 4ad36c8e..0da7b0c7 100644 --- a/hacks/glx/spheremonics.c +++ b/hacks/glx/spheremonics.c @@ -851,7 +851,10 @@ draw_spheremonics (ModeInfo *mi) (y - 0.5) * 6, (z - 0.5) * 8); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (cc->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation (cc->rot, &x, &y, &z, !cc->button_down_p); glRotatef (x * 360, 1.0, 0.0, 0.0); diff --git a/hacks/glx/stairs.c b/hacks/glx/stairs.c index 0bd61c2e..b300ee13 100644 --- a/hacks/glx/stairs.c +++ b/hacks/glx/stairs.c @@ -496,6 +496,7 @@ ENTRYPOINT void draw_stairs (ModeInfo * mi) { stairsstruct *sp = &stairs[MI_SCREEN(mi)]; + GLfloat rot = current_device_rotation(); Display *display = MI_DISPLAY(mi); Window window = MI_WINDOW(mi); @@ -509,6 +510,14 @@ draw_stairs (ModeInfo * mi) glPushMatrix(); + glRotatef(rot, 0, 0, 1); + if ((rot > 45 && rot < 135) || + (rot < -45 && rot > -135)) + { + GLfloat s = MI_WIDTH(mi) / (GLfloat) MI_HEIGHT(mi); + glScalef (s, 1/s, 1); + } + glTranslatef(0.0, 0.0, -10.0); if (!MI_IS_ICONIC(mi)) { @@ -518,7 +527,6 @@ draw_stairs (ModeInfo * mi) } gltrackball_rotate (sp->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); glTranslatef(0, 0.5, 0); glRotatef(44.5, 1, 0, 0); diff --git a/hacks/glx/stonerview-move.c b/hacks/glx/stonerview-move.c index b8a2041b..fc2931d4 100644 --- a/hacks/glx/stonerview-move.c +++ b/hacks/glx/stonerview-move.c @@ -32,7 +32,7 @@ void -init_move(stonerview_state *st) +stonerview_init_move(stonerview_state *st) { /*st->theta = new_osc_linear( new_osc_wrap(0, 36000, 25), @@ -95,15 +95,12 @@ init_move(stonerview_state *st) new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 17)), new_osc_buffer(st, new_osc_wrap(st, 0, 3600, 7))); - move_increment(st); -} - -void final_move(stonerview_state *st) -{ + stonerview_move_increment(st); } /* Set up the list of polygon data for rendering. */ -void move_increment(stonerview_state *st) +void +stonerview_move_increment(stonerview_state *st) { int ix, val; /* GLfloat fval; */ @@ -112,7 +109,7 @@ void move_increment(stonerview_state *st) GLfloat ptrad, pttheta; for (ix=0; ixnum_els; ix++) { - elem_t *el = &st->elist[ix]; + stonerview_elem_t *el = &st->elist[ix]; /* Grab r and theta... */ val = osc_get(st, st->theta, ix); diff --git a/hacks/glx/stonerview-move.h b/hacks/glx/stonerview-move.h index 096dbbc1..a3e0acd2 100644 --- a/hacks/glx/stonerview-move.h +++ b/hacks/glx/stonerview-move.h @@ -13,19 +13,20 @@ #ifndef __STONERVIEW_MOVE_H__ #define __STONERVIEW_MOVE_H__ -typedef struct elem_struct { +typedef struct { GLfloat pos[3]; GLfloat vervec[2]; GLfloat col[4]; -} elem_t; +} stonerview_elem_t; -extern void init_move(stonerview_state *); -extern void final_move(stonerview_state *); -extern void move_increment(stonerview_state *); +extern void stonerview_init_move(stonerview_state *); +extern void stonerview_final_move(stonerview_state *); +extern void stonerview_move_increment(stonerview_state *); -extern stonerview_state * init_view(int wireframe_p, int transparent_p); -extern void win_draw(stonerview_state *); -extern void win_release(stonerview_state *); +extern stonerview_state * stonerview_init_view(int wireframe_p, + int transparent_p); +extern void stonerview_win_draw(stonerview_state *); +extern void stonerview_win_release(stonerview_state *); #endif /* __STONERVIEW_MOVE_H__ */ diff --git a/hacks/glx/stonerview-view.c b/hacks/glx/stonerview-view.c index 08fc525e..d66eab28 100644 --- a/hacks/glx/stonerview-view.c +++ b/hacks/glx/stonerview-view.c @@ -27,14 +27,14 @@ static GLfloat view_scale = 4.0; stonerview_state * -init_view(int wireframe_p, int transparent_p) +stonerview_init_view(int wireframe_p, int transparent_p) { stonerview_state *st = (stonerview_state *) calloc (1, sizeof(*st)); st->wireframe = wireframe_p; st->transparent = transparent_p; st->num_els = NUM_ELS; - st->elist = (elem_t *) calloc (st->num_els, sizeof(*st->elist)); + st->elist = (stonerview_elem_t *) calloc (st->num_els, sizeof(*st->elist)); st->osctail = &st->oscroot; @@ -59,7 +59,8 @@ init_view(int wireframe_p, int transparent_p) } /* callback: draw everything */ -void win_draw(stonerview_state *st) +void +stonerview_win_draw(stonerview_state *st) { int ix; static const GLfloat white[] = { 1.0, 1.0, 1.0, 1.0 }; @@ -78,7 +79,7 @@ void win_draw(stonerview_state *st) glShadeModel(GL_FLAT); for (ix=0; ix < st->num_els; ix++) { - elem_t *el = &st->elist[ix]; + stonerview_elem_t *el = &st->elist[ix]; glNormal3f(0.0, 0.0, 1.0); @@ -106,7 +107,8 @@ void win_draw(stonerview_state *st) glPopMatrix(); } -void win_release(stonerview_state *st) +void +stonerview_win_release(stonerview_state *st) { free (st->elist); /*free (st->oscroot); -- #### how do we free this? */ diff --git a/hacks/glx/stonerview.c b/hacks/glx/stonerview.c index 79b17fb6..0e11395e 100644 --- a/hacks/glx/stonerview.c +++ b/hacks/glx/stonerview.c @@ -95,8 +95,8 @@ init_stonerview (ModeInfo *mi) bp->glx_context = init_GL(mi); bp->trackball = gltrackball_init (); - bp->st = init_view(MI_IS_WIREFRAME(mi), transparent_p); - init_move(bp->st); + bp->st = stonerview_init_view(MI_IS_WIREFRAME(mi), transparent_p); + stonerview_init_move(bp->st); reshape_stonerview (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ @@ -111,10 +111,12 @@ draw_stonerview (ModeInfo *mi) glXMakeCurrent(MI_DISPLAY(mi), MI_WINDOW(mi), *(bp->glx_context)); glPushMatrix (); + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate (bp->trackball); - win_draw(bp->st); + + stonerview_win_draw(bp->st); if (! bp->button_down_p) - move_increment(bp->st); + stonerview_move_increment(bp->st); glPopMatrix (); mi->polygon_count = NUM_ELS; @@ -132,7 +134,7 @@ release_stonerview (ModeInfo *mi) for (screen = 0; screen < MI_NUM_SCREENS(mi); screen++) { stonerview_configuration *bp = &bps[screen]; if (bp->st) - win_release (bp->st); + stonerview_win_release (bp->st); } free (bps); bps = 0; diff --git a/hacks/glx/stonerview.h b/hacks/glx/stonerview.h index 0946923a..afbd53c5 100644 --- a/hacks/glx/stonerview.h +++ b/hacks/glx/stonerview.h @@ -38,7 +38,7 @@ struct stonerview_state { /* The list of polygons. This is filled in by move_increment(), and rendered by perform_render(). */ int num_els; - elem_t *elist; + stonerview_elem_t *elist; /* A linked list of all osc_t objects created. New objects are added to the end of the list, not the beginning. */ diff --git a/hacks/glx/surfaces.c b/hacks/glx/surfaces.c index 459d1224..9dac523b 100644 --- a/hacks/glx/surfaces.c +++ b/hacks/glx/surfaces.c @@ -163,7 +163,10 @@ static void draw(ModeInfo *mi) get_position(sp->rot, &x, &y, &z, !sp->button_down_p); glTranslatef((x-0.5)*10, (y-0.5)*10, (z-0.5)*20); + /* Do it twice because we don't track the device's orientation. */ + glRotatef( current_device_rotation(), 0, 0, 1); gltrackball_rotate(sp->trackball); + glRotatef(-current_device_rotation(), 0, 0, 1); get_rotation(sp->rot, &x, &y, &z, !sp->button_down_p); glRotatef(x*360, 1.0, 0.0, 0.0); diff --git a/hacks/glx/tangram.c b/hacks/glx/tangram.c index a7af6428..02247759 100644 --- a/hacks/glx/tangram.c +++ b/hacks/glx/tangram.c @@ -840,13 +840,13 @@ static void init_shapes(ModeInfo * mi) &tp->tlg2, &tp->sq, &tp->rh); get_solved_puzzle(mi, &tp->n_tsm1, &tp->n_tsm2, &tp->n_tm, &tp->n_tlg1, &tp->n_tlg2, &tp->n_sq, &tp->n_rh); - tp->tsm1.dl = get_sm_tri_dl(wire); - tp->tsm2.dl = get_sm_tri_dl(wire); - tp->tm.dl = get_md_tri_dl(wire); - tp->tlg1.dl = get_lg_tri_dl(wire); - tp->tlg2.dl = get_lg_tri_dl(wire); - tp->sq.dl = get_square_dl(wire); - tp->rh.dl = get_rhomboid_dl(wire); + tp->tsm1.dl = tangram_get_sm_tri_dl(wire); + tp->tsm2.dl = tangram_get_sm_tri_dl(wire); + tp->tm.dl = tangram_get_md_tri_dl(wire); + tp->tlg1.dl = tangram_get_lg_tri_dl(wire); + tp->tlg2.dl = tangram_get_lg_tri_dl(wire); + tp->sq.dl = tangram_get_square_dl(wire); + tp->rh.dl = tangram_get_rhomboid_dl(wire); } static void gl_init(ModeInfo * mi) diff --git a/hacks/glx/tangram_shapes.c b/hacks/glx/tangram_shapes.c index 32b7014c..19f065b0 100644 --- a/hacks/glx/tangram_shapes.c +++ b/hacks/glx/tangram_shapes.c @@ -29,7 +29,8 @@ #define alpha (0.05) -static void tri_45_90(int wire) +static void +tri_45_90(int wire) { GLfloat vertices[][3] = { {0, alpha, 0}, @@ -87,8 +88,8 @@ static void tri_45_90(int wire) glEnd(); } -static -void unit_cube(int wire) +static void +unit_cube(int wire) { glBegin((wire) ? GL_LINE_LOOP : GL_QUADS); @@ -132,8 +133,8 @@ void unit_cube(int wire) glEnd(); } -static -void unit_rhomboid(int wire) +static void +unit_rhomboid(int wire) { glBegin((wire) ? GL_LINE_LOOP : GL_QUADS); @@ -179,7 +180,8 @@ void unit_rhomboid(int wire) /* All of the pieces have the same thickness so all of the Y values are the same */ -GLuint get_sm_tri_dl(int wire) +GLuint +tangram_get_sm_tri_dl(int wire) { GLuint triangle = glGenLists(1); glNewList(triangle, GL_COMPILE); @@ -189,7 +191,8 @@ GLuint get_sm_tri_dl(int wire) return triangle; } -GLuint get_lg_tri_dl(int wire) +GLuint +tangram_get_lg_tri_dl(int wire) { GLuint triangle = glGenLists(1); glNewList(triangle, GL_COMPILE); @@ -199,7 +202,8 @@ GLuint get_lg_tri_dl(int wire) return triangle; } -GLuint get_md_tri_dl(int wire) +GLuint +tangram_get_md_tri_dl(int wire) { GLuint triangle = glGenLists(1); glNewList(triangle, GL_COMPILE); @@ -209,7 +213,8 @@ GLuint get_md_tri_dl(int wire) return triangle; } -GLuint get_square_dl(int wire) +GLuint +tangram_get_square_dl(int wire) { GLuint square = glGenLists(1); glNewList(square, GL_COMPILE); @@ -219,7 +224,8 @@ GLuint get_square_dl(int wire) return square; } -GLuint get_rhomboid_dl(int wire) +GLuint +tangram_get_rhomboid_dl(int wire) { GLuint rhomboid = glGenLists(1); glNewList(rhomboid, GL_COMPILE); diff --git a/hacks/glx/tangram_shapes.h b/hacks/glx/tangram_shapes.h index 95410f86..254f8f34 100644 --- a/hacks/glx/tangram_shapes.h +++ b/hacks/glx/tangram_shapes.h @@ -2,14 +2,14 @@ #define TANGRAM_SHAPES_H /* get_sm_tri_dl - Get small triangle Display List */ -GLuint get_sm_tri_dl(int wire); +GLuint tangram_get_sm_tri_dl(int wire); /* get_lg_tri_dl - Get large triangle Display List */ -GLuint get_lg_tri_dl(int wire); +GLuint tangram_get_lg_tri_dl(int wire); /* get_md_tri_dl - Get medium triangle Display List */ -GLuint get_md_tri_dl(int wire); +GLuint tangram_get_md_tri_dl(int wire); /* get_square_dl - Get square Display List */ -GLuint get_square_dl(int wire); +GLuint tangram_get_square_dl(int wire); /* get_rhomboid_dl - Get rhomboid Display List */ -GLuint get_rhomboid_dl(int wire); +GLuint tangram_get_rhomboid_dl(int wire); #endif diff --git a/hacks/glx/teapot.c b/hacks/glx/teapot.c index 3fc95ee3..05d652ed 100644 --- a/hacks/glx/teapot.c +++ b/hacks/glx/teapot.c @@ -50,19 +50,18 @@ OpenGL(TM) is a trademark of Silicon Graphics, Inc. #include "teapot.h" -#ifdef HAVE_JWZGLES -int unit_teapot (int grid, int wire_p) { return 0; } -#else /* !HAVE_JWZGLES */ - - #ifndef HAVE_COCOA # include #endif #ifdef HAVE_JWZGLES # include "jwzgles.h" -#endif /* HAVE_JWZGLES */ +#else +# define HAVE_GLMAP +#endif + +#ifdef HAVE_GLMAP /* Rim, body, lid, and bottom data must be reflected in x and y; handle and spout data across the y axis only. */ @@ -198,20 +197,20 @@ unit_teapot (int grid, int wire_p) &p[0][0][0]); glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0); glEvalMesh2(type, 0, grid, 0, grid); - polys += grid*grid; + polys += grid*grid*2; glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &q[0][0][0]); glEvalMesh2(type, 0, grid, 0, grid); - polys += grid*grid; + polys += grid*grid*2; if (i < 6) { glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &r[0][0][0]); glEvalMesh2(type, 0, grid, 0, grid); - polys += grid*grid; + polys += grid*grid*2; glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4, &s[0][0][0]); glEvalMesh2(type, 0, grid, 0, grid); - polys += grid*grid; + polys += grid*grid*2; } } glPopMatrix(); @@ -220,4 +219,64 @@ unit_teapot (int grid, int wire_p) return polys; } -#endif /* !HAVE_JWZGLES */ +#else /* !HAVE_GLMAP */ + +# include "normals.h" +# include "teapot2.h" + +int +unit_teapot (int grid, int wire_p) +{ + int polys = sizeof (teapot_triangles) / sizeof (*teapot_triangles) / 9; + int i; + const GLfloat *p = teapot_triangles; + GLfloat scale = 1 / 2.3; + + glPushMatrix(); + glScalef (scale, scale, scale); + glTranslatef (0, -1.25, 0); + + if (wire_p) + { + glBegin (GL_LINES); + for (i = 0; i < polys; i++) + { + XYZ p1, p2, p3; + p1.x = *p++; p1.y = *p++; p1.z = *p++; + p2.x = *p++; p2.y = *p++; p2.z = *p++; + p3.x = *p++; p3.y = *p++; p3.z = *p++; + glVertex3f (p1.x, p1.y, p1.z); /* Draw 2 edges of each triangle */ + glVertex3f (p2.x, p2.y, p2.z); + glVertex3f (p1.x, p1.y, p1.z); + glVertex3f (p3.x, p3.y, p3.z); + i++; /* Skip every other triangle */ + p += 9; + } + glEnd(); + polys /= 2; + } + else + { + glFrontFace (GL_CCW); + glBegin (GL_TRIANGLES); + for (i = 0; i < polys; i++) + { + XYZ p1, p2, p3; + p1.x = *p++; p1.y = *p++; p1.z = *p++; + p2.x = *p++; p2.y = *p++; p2.z = *p++; + p3.x = *p++; p3.y = *p++; p3.z = *p++; + do_normal (p1.x, p1.y, p1.z, + p2.x, p2.y, p2.z, + p3.x, p3.y, p3.z); + glVertex3f (p1.x, p1.y, p1.z); + glVertex3f (p2.x, p2.y, p2.z); + glVertex3f (p3.x, p3.y, p3.z); + } + glEnd(); + } + glPopMatrix(); + + return polys; +} + +#endif /* !HAVE_GLMAP */ diff --git a/hacks/glx/teapot2.h b/hacks/glx/teapot2.h new file mode 100644 index 00000000..c9d4def0 --- /dev/null +++ b/hacks/glx/teapot2.h @@ -0,0 +1,6330 @@ +/* The Utah Teapot. Martin Newell, 1975. + + Since GLUtesselator doesn't exist in the iOS build, we use these + triangles there instead of generating the teapot from Newell's + original Bezier patches, because I didn't feel like re-implementing + that code. + */ + +static const GLfloat teapot_triangles[] = { + 1.368074,2.435437,-0.227403, 1.381968,2.4,-0.229712, 1.4,2.4,0, + 1.4,2.4,0, 1.385925,2.435437,0, 1.368074,2.435437,-0.227403, + 1.316296,2.435437,-0.442166, 1.329664,2.4,-0.446656, 1.381968,2.4,-0.229712, + 1.381968,2.4,-0.229712, 1.368074,2.435437,-0.227403, 1.316296,2.435437,-0.442166, + 1.233252,2.435437,-0.641628, 1.245776,2.4,-0.648144, 1.329664,2.4,-0.446656, + 1.329664,2.4,-0.446656, 1.316296,2.435437,-0.442166, 1.233252,2.435437,-0.641628, + 1.121601,2.435437,-0.823129, 1.132992,2.4,-0.831488, 1.245776,2.4,-0.648144, + 1.245776,2.4,-0.648144, 1.233252,2.435437,-0.641628, 1.121601,2.435437,-0.823129, + 0.984007,2.435437,-0.984007, 0.994,2.4,-0.994, 1.132992,2.4,-0.831488, + 1.132992,2.4,-0.831488, 1.121601,2.435437,-0.823129, 0.984007,2.435437,-0.984007, + 0.823129,2.435437,-1.121601, 0.831488,2.4,-1.132992, 0.994,2.4,-0.994, + 0.994,2.4,-0.994, 0.984007,2.435437,-0.984007, 0.823129,2.435437,-1.121601, + 0.641628,2.435437,-1.233252, 0.648144,2.4,-1.245776, 0.831488,2.4,-1.132992, + 0.831488,2.4,-1.132992, 0.823129,2.435437,-1.121601, 0.641628,2.435437,-1.233252, + 0.442166,2.435437,-1.316296, 0.446656,2.4,-1.329664, 0.648144,2.4,-1.245776, + 0.648144,2.4,-1.245776, 0.641628,2.435437,-1.233252, 0.442166,2.435437,-1.316296, + 0.227403,2.435437,-1.368074, 0.229712,2.4,-1.381968, 0.446656,2.4,-1.329664, + 0.446656,2.4,-1.329664, 0.442166,2.435437,-1.316296, 0.227403,2.435437,-1.368074, + 0,2.435437,-1.385925, 0,2.4,-1.4, 0.229712,2.4,-1.381968, + 0.229712,2.4,-1.381968, 0.227403,2.435437,-1.368074, 0,2.435437,-1.385925, + 1.36262,2.463,-0.226496, 1.368074,2.435437,-0.227403, 1.385925,2.435437,0, + 1.385925,2.435437,0, 1.3804,2.463,0, 1.36262,2.463,-0.226496, + 1.311049,2.463,-0.440403, 1.316296,2.435437,-0.442166, 1.368074,2.435437,-0.227403, + 1.368074,2.435437,-0.227403, 1.36262,2.463,-0.226496, 1.311049,2.463,-0.440403, + 1.228335,2.463,-0.63907, 1.233252,2.435437,-0.641628, 1.316296,2.435437,-0.442166, + 1.316296,2.435437,-0.442166, 1.311049,2.463,-0.440403, 1.228335,2.463,-0.63907, + 1.11713,2.463,-0.819847, 1.121601,2.435437,-0.823129, 1.233252,2.435437,-0.641628, + 1.233252,2.435437,-0.641628, 1.228335,2.463,-0.63907, 1.11713,2.463,-0.819847, + 0.980084,2.463,-0.980084, 0.984007,2.435437,-0.984007, 1.121601,2.435437,-0.823129, + 1.121601,2.435437,-0.823129, 1.11713,2.463,-0.819847, 0.980084,2.463,-0.980084, + 0.819847,2.463,-1.11713, 0.823129,2.435437,-1.121601, 0.984007,2.435437,-0.984007, + 0.984007,2.435437,-0.984007, 0.980084,2.463,-0.980084, 0.819847,2.463,-1.11713, + 0.63907,2.463,-1.228335, 0.641628,2.435437,-1.233252, 0.823129,2.435437,-1.121601, + 0.823129,2.435437,-1.121601, 0.819847,2.463,-1.11713, 0.63907,2.463,-1.228335, + 0.440403,2.463,-1.311049, 0.442166,2.435437,-1.316296, 0.641628,2.435437,-1.233252, + 0.641628,2.435437,-1.233252, 0.63907,2.463,-1.228335, 0.440403,2.463,-1.311049, + 0.226496,2.463,-1.36262, 0.227403,2.435437,-1.368074, 0.442166,2.435437,-1.316296, + 0.442166,2.435437,-1.316296, 0.440403,2.463,-1.311049, 0.226496,2.463,-1.36262, + 0,2.463,-1.3804, 0,2.435437,-1.385925, 0.227403,2.435437,-1.368074, + 0.227403,2.435437,-1.368074, 0.226496,2.463,-1.36262, 0,2.463,-1.3804, + 1.364422,2.482687,-0.226795, 1.36262,2.463,-0.226496, 1.3804,2.463,0, + 1.3804,2.463,0, 1.382225,2.482687,0, 1.364422,2.482687,-0.226795, + 1.312782,2.482687,-0.440985, 1.311049,2.463,-0.440403, 1.36262,2.463,-0.226496, + 1.36262,2.463,-0.226496, 1.364422,2.482687,-0.226795, 1.312782,2.482687,-0.440985, + 1.229959,2.482687,-0.639915, 1.228335,2.463,-0.63907, 1.311049,2.463,-0.440403, + 1.311049,2.463,-0.440403, 1.312782,2.482687,-0.440985, 1.229959,2.482687,-0.639915, + 1.118607,2.482687,-0.820931, 1.11713,2.463,-0.819847, 1.228335,2.463,-0.63907, + 1.228335,2.463,-0.63907, 1.229959,2.482687,-0.639915, 1.118607,2.482687,-0.820931, + 0.98138,2.482687,-0.98138, 0.980084,2.463,-0.980084, 1.11713,2.463,-0.819847, + 1.11713,2.463,-0.819847, 1.118607,2.482687,-0.820931, 0.98138,2.482687,-0.98138, + 0.820931,2.482687,-1.118607, 0.819847,2.463,-1.11713, 0.980084,2.463,-0.980084, + 0.980084,2.463,-0.980084, 0.98138,2.482687,-0.98138, 0.820931,2.482687,-1.118607, + 0.639915,2.482687,-1.229959, 0.63907,2.463,-1.228335, 0.819847,2.463,-1.11713, + 0.819847,2.463,-1.11713, 0.820931,2.482687,-1.118607, 0.639915,2.482687,-1.229959, + 0.440985,2.482687,-1.312782, 0.440403,2.463,-1.311049, 0.63907,2.463,-1.228335, + 0.63907,2.463,-1.228335, 0.639915,2.482687,-1.229959, 0.440985,2.482687,-1.312782, + 0.226795,2.482687,-1.364422, 0.226496,2.463,-1.36262, 0.440403,2.463,-1.311049, + 0.440403,2.463,-1.311049, 0.440985,2.482687,-1.312782, 0.226795,2.482687,-1.364422, + 0,2.482687,-1.382225, 0,2.463,-1.3804, 0.226496,2.463,-1.36262, + 0.226496,2.463,-1.36262, 0.226795,2.482687,-1.364422, 0,2.482687,-1.382225, + 1.372294,2.4945,-0.228104, 1.364422,2.482687,-0.226795, 1.382225,2.482687,0, + 1.382225,2.482687,0, 1.3902,2.4945,0, 1.372294,2.4945,-0.228104, + 1.320356,2.4945,-0.443529, 1.312782,2.482687,-0.440985, 1.364422,2.482687,-0.226795, + 1.364422,2.482687,-0.226795, 1.372294,2.4945,-0.228104, 1.320356,2.4945,-0.443529, + 1.237056,2.4945,-0.643607, 1.229959,2.482687,-0.639915, 1.312782,2.482687,-0.440985, + 1.312782,2.482687,-0.440985, 1.320356,2.4945,-0.443529, 1.237056,2.4945,-0.643607, + 1.125061,2.4945,-0.825668, 1.118607,2.482687,-0.820931, 1.229959,2.482687,-0.639915, + 1.229959,2.482687,-0.639915, 1.237056,2.4945,-0.643607, 1.125061,2.4945,-0.825668, + 0.987042,2.4945,-0.987042, 0.98138,2.482687,-0.98138, 1.118607,2.482687,-0.820931, + 1.118607,2.482687,-0.820931, 1.125061,2.4945,-0.825668, 0.987042,2.4945,-0.987042, + 0.825668,2.4945,-1.125061, 0.820931,2.482687,-1.118607, 0.98138,2.482687,-0.98138, + 0.98138,2.482687,-0.98138, 0.987042,2.4945,-0.987042, 0.825668,2.4945,-1.125061, + 0.643607,2.4945,-1.237056, 0.639915,2.482687,-1.229959, 0.820931,2.482687,-1.118607, + 0.820931,2.482687,-1.118607, 0.825668,2.4945,-1.125061, 0.643607,2.4945,-1.237056, + 0.443529,2.4945,-1.320356, 0.440985,2.482687,-1.312782, 0.639915,2.482687,-1.229959, + 0.639915,2.482687,-1.229959, 0.643607,2.4945,-1.237056, 0.443529,2.4945,-1.320356, + 0.228104,2.4945,-1.372294, 0.226795,2.482687,-1.364422, 0.440985,2.482687,-1.312782, + 0.440985,2.482687,-1.312782, 0.443529,2.4945,-1.320356, 0.228104,2.4945,-1.372294, + 0,2.4945,-1.3902, 0,2.482687,-1.382225, 0.226795,2.482687,-1.364422, + 0.226795,2.482687,-1.364422, 0.228104,2.4945,-1.372294, 0,2.4945,-1.3902, + 1.385053,2.498438,-0.230225, 1.372294,2.4945,-0.228104, 1.3902,2.4945,0, + 1.3902,2.4945,0, 1.403125,2.498438,0, 1.385053,2.498438,-0.230225, + 1.332632,2.498438,-0.447653, 1.320356,2.4945,-0.443529, 1.372294,2.4945,-0.228104, + 1.372294,2.4945,-0.228104, 1.385053,2.498438,-0.230225, 1.332632,2.498438,-0.447653, + 1.248557,2.498438,-0.649591, 1.237056,2.4945,-0.643607, 1.320356,2.4945,-0.443529, + 1.320356,2.4945,-0.443529, 1.332632,2.498438,-0.447653, 1.248557,2.498438,-0.649591, + 1.135521,2.498438,-0.833344, 1.125061,2.4945,-0.825668, 1.237056,2.4945,-0.643607, + 1.237056,2.4945,-0.643607, 1.248557,2.498438,-0.649591, 1.135521,2.498438,-0.833344, + 0.996219,2.498438,-0.996219, 0.987042,2.4945,-0.987042, 1.125061,2.4945,-0.825668, + 1.125061,2.4945,-0.825668, 1.135521,2.498438,-0.833344, 0.996219,2.498438,-0.996219, + 0.833344,2.498438,-1.135521, 0.825668,2.4945,-1.125061, 0.987042,2.4945,-0.987042, + 0.987042,2.4945,-0.987042, 0.996219,2.498438,-0.996219, 0.833344,2.498438,-1.135521, + 0.649591,2.498438,-1.248557, 0.643607,2.4945,-1.237056, 0.825668,2.4945,-1.125061, + 0.825668,2.4945,-1.125061, 0.833344,2.498438,-1.135521, 0.649591,2.498438,-1.248557, + 0.447653,2.498438,-1.332632, 0.443529,2.4945,-1.320356, 0.643607,2.4945,-1.237056, + 0.643607,2.4945,-1.237056, 0.649591,2.498438,-1.248557, 0.447653,2.498438,-1.332632, + 0.230225,2.498438,-1.385053, 0.228104,2.4945,-1.372294, 0.443529,2.4945,-1.320356, + 0.443529,2.4945,-1.320356, 0.447653,2.498438,-1.332632, 0.230225,2.498438,-1.385053, + 0,2.498438,-1.403125, 0,2.4945,-1.3902, 0.228104,2.4945,-1.372294, + 0.228104,2.4945,-1.372294, 0.230225,2.498438,-1.385053, 0,2.498438,-1.403125, + 1.401513,2.4945,-0.232961, 1.385053,2.498438,-0.230225, 1.403125,2.498438,0, + 1.403125,2.498438,0, 1.4198,2.4945,0, 1.401513,2.4945,-0.232961, + 1.348469,2.4945,-0.452973, 1.332632,2.498438,-0.447653, 1.385053,2.498438,-0.230225, + 1.385053,2.498438,-0.230225, 1.401513,2.4945,-0.232961, 1.348469,2.4945,-0.452973, + 1.263395,2.4945,-0.657311, 1.248557,2.498438,-0.649591, 1.332632,2.498438,-0.447653, + 1.332632,2.498438,-0.447653, 1.348469,2.4945,-0.452973, 1.263395,2.4945,-0.657311, + 1.149016,2.4945,-0.843248, 1.135521,2.498438,-0.833344, 1.248557,2.498438,-0.649591, + 1.248557,2.498438,-0.649591, 1.263395,2.4945,-0.657311, 1.149016,2.4945,-0.843248, + 1.008058,2.4945,-1.008058, 0.996219,2.498438,-0.996219, 1.135521,2.498438,-0.833344, + 1.135521,2.498438,-0.833344, 1.149016,2.4945,-0.843248, 1.008058,2.4945,-1.008058, + 0.843248,2.4945,-1.149016, 0.833344,2.498438,-1.135521, 0.996219,2.498438,-0.996219, + 0.996219,2.498438,-0.996219, 1.008058,2.4945,-1.008058, 0.843248,2.4945,-1.149016, + 0.657311,2.4945,-1.263395, 0.649591,2.498438,-1.248557, 0.833344,2.498438,-1.135521, + 0.833344,2.498438,-1.135521, 0.843248,2.4945,-1.149016, 0.657311,2.4945,-1.263395, + 0.452973,2.4945,-1.348469, 0.447653,2.498438,-1.332632, 0.649591,2.498438,-1.248557, + 0.649591,2.498438,-1.248557, 0.657311,2.4945,-1.263395, 0.452973,2.4945,-1.348469, + 0.232961,2.4945,-1.401513, 0.230225,2.498438,-1.385053, 0.447653,2.498438,-1.332632, + 0.447653,2.498438,-1.332632, 0.452973,2.4945,-1.348469, 0.232961,2.4945,-1.401513, + 0,2.4945,-1.4198, 0,2.498438,-1.403125, 0.230225,2.498438,-1.385053, + 0.230225,2.498438,-1.385053, 0.232961,2.4945,-1.401513, 0,2.4945,-1.4198, + 1.42049,2.482687,-0.236115, 1.401513,2.4945,-0.232961, 1.4198,2.4945,0, + 1.4198,2.4945,0, 1.439025,2.482687,0, 1.42049,2.482687,-0.236115, + 1.366728,2.482687,-0.459107, 1.348469,2.4945,-0.452973, 1.401513,2.4945,-0.232961, + 1.401513,2.4945,-0.232961, 1.42049,2.482687,-0.236115, 1.366728,2.482687,-0.459107, + 1.280502,2.482687,-0.666211, 1.263395,2.4945,-0.657311, 1.348469,2.4945,-0.452973, + 1.348469,2.4945,-0.452973, 1.366728,2.482687,-0.459107, 1.280502,2.482687,-0.666211, + 1.164574,2.482687,-0.854666, 1.149016,2.4945,-0.843248, 1.263395,2.4945,-0.657311, + 1.263395,2.4945,-0.657311, 1.280502,2.482687,-0.666211, 1.164574,2.482687,-0.854666, + 1.021708,2.482687,-1.021708, 1.008058,2.4945,-1.008058, 1.149016,2.4945,-0.843248, + 1.149016,2.4945,-0.843248, 1.164574,2.482687,-0.854666, 1.021708,2.482687,-1.021708, + 0.854666,2.482687,-1.164574, 0.843248,2.4945,-1.149016, 1.008058,2.4945,-1.008058, + 1.008058,2.4945,-1.008058, 1.021708,2.482687,-1.021708, 0.854666,2.482687,-1.164574, + 0.666211,2.482687,-1.280502, 0.657311,2.4945,-1.263395, 0.843248,2.4945,-1.149016, + 0.843248,2.4945,-1.149016, 0.854666,2.482687,-1.164574, 0.666211,2.482687,-1.280502, + 0.459107,2.482687,-1.366728, 0.452973,2.4945,-1.348469, 0.657311,2.4945,-1.263395, + 0.657311,2.4945,-1.263395, 0.666211,2.482687,-1.280502, 0.459107,2.482687,-1.366728, + 0.236115,2.482687,-1.42049, 0.232961,2.4945,-1.401513, 0.452973,2.4945,-1.348469, + 0.452973,2.4945,-1.348469, 0.459107,2.482687,-1.366728, 0.236115,2.482687,-1.42049, + 0,2.482687,-1.439025, 0,2.4945,-1.4198, 0.232961,2.4945,-1.401513, + 0.232961,2.4945,-1.401513, 0.236115,2.482687,-1.42049, 0,2.482687,-1.439025, + 1.4408,2.463,-0.239491, 1.42049,2.482687,-0.236115, 1.439025,2.482687,0, + 1.439025,2.482687,0, 1.4596,2.463,0, 1.4408,2.463,-0.239491, + 1.38627,2.463,-0.465671, 1.366728,2.482687,-0.459107, 1.42049,2.482687,-0.236115, + 1.42049,2.482687,-0.236115, 1.4408,2.463,-0.239491, 1.38627,2.463,-0.465671, + 1.29881,2.463,-0.675736, 1.280502,2.482687,-0.666211, 1.366728,2.482687,-0.459107, + 1.366728,2.482687,-0.459107, 1.38627,2.463,-0.465671, 1.29881,2.463,-0.675736, + 1.181225,2.463,-0.866886, 1.164574,2.482687,-0.854666, 1.280502,2.482687,-0.666211, + 1.280502,2.482687,-0.666211, 1.29881,2.463,-0.675736, 1.181225,2.463,-0.866886, + 1.036316,2.463,-1.036316, 1.021708,2.482687,-1.021708, 1.164574,2.482687,-0.854666, + 1.164574,2.482687,-0.854666, 1.181225,2.463,-0.866886, 1.036316,2.463,-1.036316, + 0.866886,2.463,-1.181225, 0.854666,2.482687,-1.164574, 1.021708,2.482687,-1.021708, + 1.021708,2.482687,-1.021708, 1.036316,2.463,-1.036316, 0.866886,2.463,-1.181225, + 0.675736,2.463,-1.29881, 0.666211,2.482687,-1.280502, 0.854666,2.482687,-1.164574, + 0.854666,2.482687,-1.164574, 0.866886,2.463,-1.181225, 0.675736,2.463,-1.29881, + 0.465671,2.463,-1.38627, 0.459107,2.482687,-1.366728, 0.666211,2.482687,-1.280502, + 0.666211,2.482687,-1.280502, 0.675736,2.463,-1.29881, 0.465671,2.463,-1.38627, + 0.239491,2.463,-1.4408, 0.236115,2.482687,-1.42049, 0.459107,2.482687,-1.366728, + 0.459107,2.482687,-1.366728, 0.465671,2.463,-1.38627, 0.239491,2.463,-1.4408, + 0,2.463,-1.4596, 0,2.482687,-1.439025, 0.236115,2.482687,-1.42049, + 0.236115,2.482687,-1.42049, 0.239491,2.463,-1.4408, 0,2.463,-1.4596, + 1.461258,2.435437,-0.242892, 1.4408,2.463,-0.239491, 1.4596,2.463,0, + 1.4596,2.463,0, 1.480325,2.435437,0, 1.461258,2.435437,-0.242892, + 1.405953,2.435437,-0.472283, 1.38627,2.463,-0.465671, 1.4408,2.463,-0.239491, + 1.4408,2.463,-0.239491, 1.461258,2.435437,-0.242892, 1.405953,2.435437,-0.472283, + 1.317252,2.435437,-0.685331, 1.29881,2.463,-0.675736, 1.38627,2.463,-0.465671, + 1.38627,2.463,-0.465671, 1.405953,2.435437,-0.472283, 1.317252,2.435437,-0.685331, + 1.197997,2.435437,-0.879195, 1.181225,2.463,-0.866886, 1.29881,2.463,-0.675736, + 1.29881,2.463,-0.675736, 1.317252,2.435437,-0.685331, 1.197997,2.435437,-0.879195, + 1.051031,2.435437,-1.051031, 1.036316,2.463,-1.036316, 1.181225,2.463,-0.866886, + 1.181225,2.463,-0.866886, 1.197997,2.435437,-0.879195, 1.051031,2.435437,-1.051031, + 0.879195,2.435437,-1.197997, 0.866886,2.463,-1.181225, 1.036316,2.463,-1.036316, + 1.036316,2.463,-1.036316, 1.051031,2.435437,-1.051031, 0.879195,2.435437,-1.197997, + 0.685331,2.435437,-1.317252, 0.675736,2.463,-1.29881, 0.866886,2.463,-1.181225, + 0.866886,2.463,-1.181225, 0.879195,2.435437,-1.197997, 0.685331,2.435437,-1.317252, + 0.472283,2.435437,-1.405953, 0.465671,2.463,-1.38627, 0.675736,2.463,-1.29881, + 0.675736,2.463,-1.29881, 0.685331,2.435437,-1.317252, 0.472283,2.435437,-1.405953, + 0.242892,2.435437,-1.461258, 0.239491,2.463,-1.4408, 0.465671,2.463,-1.38627, + 0.465671,2.463,-1.38627, 0.472283,2.435437,-1.405953, 0.242892,2.435437,-1.461258, + 0,2.435437,-1.480325, 0,2.463,-1.4596, 0.239491,2.463,-1.4408, + 0.239491,2.463,-1.4408, 0.242892,2.435437,-1.461258, 0,2.435437,-1.480325, + 1.48068,2.4,-0.24612, 1.461258,2.435437,-0.242892, 1.480325,2.435437,0, + 1.480325,2.435437,0, 1.5,2.4,0, 1.48068,2.4,-0.24612, + 1.42464,2.4,-0.47856, 1.405953,2.435437,-0.472283, 1.461258,2.435437,-0.242892, + 1.461258,2.435437,-0.242892, 1.48068,2.4,-0.24612, 1.42464,2.4,-0.47856, + 1.33476,2.4,-0.69444, 1.317252,2.435437,-0.685331, 1.405953,2.435437,-0.472283, + 1.405953,2.435437,-0.472283, 1.42464,2.4,-0.47856, 1.33476,2.4,-0.69444, + 1.21392,2.4,-0.89088, 1.197997,2.435437,-0.879195, 1.317252,2.435437,-0.685331, + 1.317252,2.435437,-0.685331, 1.33476,2.4,-0.69444, 1.21392,2.4,-0.89088, + 1.065,2.4,-1.065, 1.051031,2.435437,-1.051031, 1.197997,2.435437,-0.879195, + 1.197997,2.435437,-0.879195, 1.21392,2.4,-0.89088, 1.065,2.4,-1.065, + 0.89088,2.4,-1.21392, 0.879195,2.435437,-1.197997, 1.051031,2.435437,-1.051031, + 1.051031,2.435437,-1.051031, 1.065,2.4,-1.065, 0.89088,2.4,-1.21392, + 0.69444,2.4,-1.33476, 0.685331,2.435437,-1.317252, 0.879195,2.435437,-1.197997, + 0.879195,2.435437,-1.197997, 0.89088,2.4,-1.21392, 0.69444,2.4,-1.33476, + 0.47856,2.4,-1.42464, 0.472283,2.435437,-1.405953, 0.685331,2.435437,-1.317252, + 0.685331,2.435437,-1.317252, 0.69444,2.4,-1.33476, 0.47856,2.4,-1.42464, + 0.24612,2.4,-1.48068, 0.242892,2.435437,-1.461258, 0.472283,2.435437,-1.405953, + 0.472283,2.435437,-1.405953, 0.47856,2.4,-1.42464, 0.24612,2.4,-1.48068, + 0,2.4,-1.5, 0,2.435437,-1.480325, 0.242892,2.435437,-1.461258, + 0.242892,2.435437,-1.461258, 0.24612,2.4,-1.48068, 0,2.4,-1.5, + -0.227403,2.435437,-1.368074, -0.229712,2.4,-1.381968, 0,2.4,-1.4, + 0,2.4,-1.4, 0,2.435437,-1.385925, -0.227403,2.435437,-1.368074, + -0.442166,2.435437,-1.316296, -0.446656,2.4,-1.329664, -0.229712,2.4,-1.381968, + -0.229712,2.4,-1.381968, -0.227403,2.435437,-1.368074, -0.442166,2.435437,-1.316296, + -0.641628,2.435437,-1.233252, -0.648144,2.4,-1.245776, -0.446656,2.4,-1.329664, + -0.446656,2.4,-1.329664, -0.442166,2.435437,-1.316296, -0.641628,2.435437,-1.233252, + -0.823129,2.435437,-1.121601, -0.831488,2.4,-1.132992, -0.648144,2.4,-1.245776, + -0.648144,2.4,-1.245776, -0.641628,2.435437,-1.233252, -0.823129,2.435437,-1.121601, + -0.984007,2.435437,-0.984007, -0.994,2.4,-0.994, -0.831488,2.4,-1.132992, + -0.831488,2.4,-1.132992, -0.823129,2.435437,-1.121601, -0.984007,2.435437,-0.984007, + -1.121601,2.435437,-0.823129, -1.132992,2.4,-0.831488, -0.994,2.4,-0.994, + -0.994,2.4,-0.994, -0.984007,2.435437,-0.984007, -1.121601,2.435437,-0.823129, + -1.233252,2.435437,-0.641628, -1.245776,2.4,-0.648144, -1.132992,2.4,-0.831488, + -1.132992,2.4,-0.831488, -1.121601,2.435437,-0.823129, -1.233252,2.435437,-0.641628, + -1.316296,2.435437,-0.442166, -1.329664,2.4,-0.446656, -1.245776,2.4,-0.648144, + -1.245776,2.4,-0.648144, -1.233252,2.435437,-0.641628, -1.316296,2.435437,-0.442166, + -1.368074,2.435437,-0.227403, -1.381968,2.4,-0.229712, -1.329664,2.4,-0.446656, + -1.329664,2.4,-0.446656, -1.316296,2.435437,-0.442166, -1.368074,2.435437,-0.227403, + -1.385925,2.435437,0, -1.4,2.4,0, -1.381968,2.4,-0.229712, + -1.381968,2.4,-0.229712, -1.368074,2.435437,-0.227403, -1.385925,2.435437,0, + -0.226496,2.463,-1.36262, -0.227403,2.435437,-1.368074, 0,2.435437,-1.385925, + 0,2.435437,-1.385925, 0,2.463,-1.3804, -0.226496,2.463,-1.36262, + -0.440403,2.463,-1.311049, -0.442166,2.435437,-1.316296, -0.227403,2.435437,-1.368074, + -0.227403,2.435437,-1.368074, -0.226496,2.463,-1.36262, -0.440403,2.463,-1.311049, + -0.63907,2.463,-1.228335, -0.641628,2.435437,-1.233252, -0.442166,2.435437,-1.316296, + -0.442166,2.435437,-1.316296, -0.440403,2.463,-1.311049, -0.63907,2.463,-1.228335, + -0.819847,2.463,-1.11713, -0.823129,2.435437,-1.121601, -0.641628,2.435437,-1.233252, + -0.641628,2.435437,-1.233252, -0.63907,2.463,-1.228335, -0.819847,2.463,-1.11713, + -0.980084,2.463,-0.980084, -0.984007,2.435437,-0.984007, -0.823129,2.435437,-1.121601, + -0.823129,2.435437,-1.121601, -0.819847,2.463,-1.11713, -0.980084,2.463,-0.980084, + -1.11713,2.463,-0.819847, -1.121601,2.435437,-0.823129, -0.984007,2.435437,-0.984007, + -0.984007,2.435437,-0.984007, -0.980084,2.463,-0.980084, -1.11713,2.463,-0.819847, + -1.228335,2.463,-0.63907, -1.233252,2.435437,-0.641628, -1.121601,2.435437,-0.823129, + -1.121601,2.435437,-0.823129, -1.11713,2.463,-0.819847, -1.228335,2.463,-0.63907, + -1.311049,2.463,-0.440403, -1.316296,2.435437,-0.442166, -1.233252,2.435437,-0.641628, + -1.233252,2.435437,-0.641628, -1.228335,2.463,-0.63907, -1.311049,2.463,-0.440403, + -1.36262,2.463,-0.226496, -1.368074,2.435437,-0.227403, -1.316296,2.435437,-0.442166, + -1.316296,2.435437,-0.442166, -1.311049,2.463,-0.440403, -1.36262,2.463,-0.226496, + -1.3804,2.463,0, -1.385925,2.435437,0, -1.368074,2.435437,-0.227403, + -1.368074,2.435437,-0.227403, -1.36262,2.463,-0.226496, -1.3804,2.463,0, + -0.226795,2.482687,-1.364422, -0.226496,2.463,-1.36262, 0,2.463,-1.3804, + 0,2.463,-1.3804, 0,2.482687,-1.382225, -0.226795,2.482687,-1.364422, + -0.440985,2.482687,-1.312782, -0.440403,2.463,-1.311049, -0.226496,2.463,-1.36262, + -0.226496,2.463,-1.36262, -0.226795,2.482687,-1.364422, -0.440985,2.482687,-1.312782, + -0.639915,2.482687,-1.229959, -0.63907,2.463,-1.228335, -0.440403,2.463,-1.311049, + -0.440403,2.463,-1.311049, -0.440985,2.482687,-1.312782, -0.639915,2.482687,-1.229959, + -0.820931,2.482687,-1.118607, -0.819847,2.463,-1.11713, -0.63907,2.463,-1.228335, + -0.63907,2.463,-1.228335, -0.639915,2.482687,-1.229959, -0.820931,2.482687,-1.118607, + -0.98138,2.482687,-0.98138, -0.980084,2.463,-0.980084, -0.819847,2.463,-1.11713, + -0.819847,2.463,-1.11713, -0.820931,2.482687,-1.118607, -0.98138,2.482687,-0.98138, + -1.118607,2.482687,-0.820931, -1.11713,2.463,-0.819847, -0.980084,2.463,-0.980084, + -0.980084,2.463,-0.980084, -0.98138,2.482687,-0.98138, -1.118607,2.482687,-0.820931, + -1.229959,2.482687,-0.639915, -1.228335,2.463,-0.63907, -1.11713,2.463,-0.819847, + -1.11713,2.463,-0.819847, -1.118607,2.482687,-0.820931, -1.229959,2.482687,-0.639915, + -1.312782,2.482687,-0.440985, -1.311049,2.463,-0.440403, -1.228335,2.463,-0.63907, + -1.228335,2.463,-0.63907, -1.229959,2.482687,-0.639915, -1.312782,2.482687,-0.440985, + -1.364422,2.482687,-0.226795, -1.36262,2.463,-0.226496, -1.311049,2.463,-0.440403, + -1.311049,2.463,-0.440403, -1.312782,2.482687,-0.440985, -1.364422,2.482687,-0.226795, + -1.382225,2.482687,0, -1.3804,2.463,0, -1.36262,2.463,-0.226496, + -1.36262,2.463,-0.226496, -1.364422,2.482687,-0.226795, -1.382225,2.482687,0, + -0.228104,2.4945,-1.372294, -0.226795,2.482687,-1.364422, 0,2.482687,-1.382225, + 0,2.482687,-1.382225, 0,2.4945,-1.3902, -0.228104,2.4945,-1.372294, + -0.443529,2.4945,-1.320356, -0.440985,2.482687,-1.312782, -0.226795,2.482687,-1.364422, + -0.226795,2.482687,-1.364422, -0.228104,2.4945,-1.372294, -0.443529,2.4945,-1.320356, + -0.643607,2.4945,-1.237056, -0.639915,2.482687,-1.229959, -0.440985,2.482687,-1.312782, + -0.440985,2.482687,-1.312782, -0.443529,2.4945,-1.320356, -0.643607,2.4945,-1.237056, + -0.825668,2.4945,-1.125061, -0.820931,2.482687,-1.118607, -0.639915,2.482687,-1.229959, + -0.639915,2.482687,-1.229959, -0.643607,2.4945,-1.237056, -0.825668,2.4945,-1.125061, + -0.987042,2.4945,-0.987042, -0.98138,2.482687,-0.98138, -0.820931,2.482687,-1.118607, + -0.820931,2.482687,-1.118607, -0.825668,2.4945,-1.125061, -0.987042,2.4945,-0.987042, + -1.125061,2.4945,-0.825668, -1.118607,2.482687,-0.820931, -0.98138,2.482687,-0.98138, + -0.98138,2.482687,-0.98138, -0.987042,2.4945,-0.987042, -1.125061,2.4945,-0.825668, + -1.237056,2.4945,-0.643607, -1.229959,2.482687,-0.639915, -1.118607,2.482687,-0.820931, + -1.118607,2.482687,-0.820931, -1.125061,2.4945,-0.825668, -1.237056,2.4945,-0.643607, + -1.320356,2.4945,-0.443529, -1.312782,2.482687,-0.440985, -1.229959,2.482687,-0.639915, + -1.229959,2.482687,-0.639915, -1.237056,2.4945,-0.643607, -1.320356,2.4945,-0.443529, + -1.372294,2.4945,-0.228104, -1.364422,2.482687,-0.226795, -1.312782,2.482687,-0.440985, + -1.312782,2.482687,-0.440985, -1.320356,2.4945,-0.443529, -1.372294,2.4945,-0.228104, + -1.3902,2.4945,0, -1.382225,2.482687,0, -1.364422,2.482687,-0.226795, + -1.364422,2.482687,-0.226795, -1.372294,2.4945,-0.228104, -1.3902,2.4945,0, + -0.230225,2.498438,-1.385053, -0.228104,2.4945,-1.372294, 0,2.4945,-1.3902, + 0,2.4945,-1.3902, 0,2.498438,-1.403125, -0.230225,2.498438,-1.385053, + -0.447653,2.498438,-1.332632, -0.443529,2.4945,-1.320356, -0.228104,2.4945,-1.372294, + -0.228104,2.4945,-1.372294, -0.230225,2.498438,-1.385053, -0.447653,2.498438,-1.332632, + -0.649591,2.498438,-1.248557, -0.643607,2.4945,-1.237056, -0.443529,2.4945,-1.320356, + -0.443529,2.4945,-1.320356, -0.447653,2.498438,-1.332632, -0.649591,2.498438,-1.248557, + -0.833344,2.498438,-1.135521, -0.825668,2.4945,-1.125061, -0.643607,2.4945,-1.237056, + -0.643607,2.4945,-1.237056, -0.649591,2.498438,-1.248557, -0.833344,2.498438,-1.135521, + -0.996219,2.498438,-0.996219, -0.987042,2.4945,-0.987042, -0.825668,2.4945,-1.125061, + -0.825668,2.4945,-1.125061, -0.833344,2.498438,-1.135521, -0.996219,2.498438,-0.996219, + -1.135521,2.498438,-0.833344, -1.125061,2.4945,-0.825668, -0.987042,2.4945,-0.987042, + -0.987042,2.4945,-0.987042, -0.996219,2.498438,-0.996219, -1.135521,2.498438,-0.833344, + -1.248557,2.498438,-0.649591, -1.237056,2.4945,-0.643607, -1.125061,2.4945,-0.825668, + -1.125061,2.4945,-0.825668, -1.135521,2.498438,-0.833344, -1.248557,2.498438,-0.649591, + -1.332632,2.498438,-0.447653, -1.320356,2.4945,-0.443529, -1.237056,2.4945,-0.643607, + -1.237056,2.4945,-0.643607, -1.248557,2.498438,-0.649591, -1.332632,2.498438,-0.447653, + -1.385053,2.498438,-0.230225, -1.372294,2.4945,-0.228104, -1.320356,2.4945,-0.443529, + -1.320356,2.4945,-0.443529, -1.332632,2.498438,-0.447653, -1.385053,2.498438,-0.230225, + -1.403125,2.498438,0, -1.3902,2.4945,0, -1.372294,2.4945,-0.228104, + -1.372294,2.4945,-0.228104, -1.385053,2.498438,-0.230225, -1.403125,2.498438,0, + -0.232961,2.4945,-1.401513, -0.230225,2.498438,-1.385053, 0,2.498438,-1.403125, + 0,2.498438,-1.403125, 0,2.4945,-1.4198, -0.232961,2.4945,-1.401513, + -0.452973,2.4945,-1.348469, -0.447653,2.498438,-1.332632, -0.230225,2.498438,-1.385053, + -0.230225,2.498438,-1.385053, -0.232961,2.4945,-1.401513, -0.452973,2.4945,-1.348469, + -0.657311,2.4945,-1.263395, -0.649591,2.498438,-1.248557, -0.447653,2.498438,-1.332632, + -0.447653,2.498438,-1.332632, -0.452973,2.4945,-1.348469, -0.657311,2.4945,-1.263395, + -0.843248,2.4945,-1.149016, -0.833344,2.498438,-1.135521, -0.649591,2.498438,-1.248557, + -0.649591,2.498438,-1.248557, -0.657311,2.4945,-1.263395, -0.843248,2.4945,-1.149016, + -1.008058,2.4945,-1.008058, -0.996219,2.498438,-0.996219, -0.833344,2.498438,-1.135521, + -0.833344,2.498438,-1.135521, -0.843248,2.4945,-1.149016, -1.008058,2.4945,-1.008058, + -1.149016,2.4945,-0.843248, -1.135521,2.498438,-0.833344, -0.996219,2.498438,-0.996219, + -0.996219,2.498438,-0.996219, -1.008058,2.4945,-1.008058, -1.149016,2.4945,-0.843248, + -1.263395,2.4945,-0.657311, -1.248557,2.498438,-0.649591, -1.135521,2.498438,-0.833344, + -1.135521,2.498438,-0.833344, -1.149016,2.4945,-0.843248, -1.263395,2.4945,-0.657311, + -1.348469,2.4945,-0.452973, -1.332632,2.498438,-0.447653, -1.248557,2.498438,-0.649591, + -1.248557,2.498438,-0.649591, -1.263395,2.4945,-0.657311, -1.348469,2.4945,-0.452973, + -1.401513,2.4945,-0.232961, -1.385053,2.498438,-0.230225, -1.332632,2.498438,-0.447653, + -1.332632,2.498438,-0.447653, -1.348469,2.4945,-0.452973, -1.401513,2.4945,-0.232961, + -1.4198,2.4945,0, -1.403125,2.498438,0, -1.385053,2.498438,-0.230225, + -1.385053,2.498438,-0.230225, -1.401513,2.4945,-0.232961, -1.4198,2.4945,0, + -0.236115,2.482687,-1.42049, -0.232961,2.4945,-1.401513, 0,2.4945,-1.4198, + 0,2.4945,-1.4198, 0,2.482687,-1.439025, -0.236115,2.482687,-1.42049, + -0.459107,2.482687,-1.366728, -0.452973,2.4945,-1.348469, -0.232961,2.4945,-1.401513, + -0.232961,2.4945,-1.401513, -0.236115,2.482687,-1.42049, -0.459107,2.482687,-1.366728, + -0.666211,2.482687,-1.280502, -0.657311,2.4945,-1.263395, -0.452973,2.4945,-1.348469, + -0.452973,2.4945,-1.348469, -0.459107,2.482687,-1.366728, -0.666211,2.482687,-1.280502, + -0.854666,2.482687,-1.164574, -0.843248,2.4945,-1.149016, -0.657311,2.4945,-1.263395, + -0.657311,2.4945,-1.263395, -0.666211,2.482687,-1.280502, -0.854666,2.482687,-1.164574, + -1.021708,2.482687,-1.021708, -1.008058,2.4945,-1.008058, -0.843248,2.4945,-1.149016, + -0.843248,2.4945,-1.149016, -0.854666,2.482687,-1.164574, -1.021708,2.482687,-1.021708, + -1.164574,2.482687,-0.854666, -1.149016,2.4945,-0.843248, -1.008058,2.4945,-1.008058, + -1.008058,2.4945,-1.008058, -1.021708,2.482687,-1.021708, -1.164574,2.482687,-0.854666, + -1.280502,2.482687,-0.666211, -1.263395,2.4945,-0.657311, -1.149016,2.4945,-0.843248, + -1.149016,2.4945,-0.843248, -1.164574,2.482687,-0.854666, -1.280502,2.482687,-0.666211, + -1.366728,2.482687,-0.459107, -1.348469,2.4945,-0.452973, -1.263395,2.4945,-0.657311, + -1.263395,2.4945,-0.657311, -1.280502,2.482687,-0.666211, -1.366728,2.482687,-0.459107, + -1.42049,2.482687,-0.236115, -1.401513,2.4945,-0.232961, -1.348469,2.4945,-0.452973, + -1.348469,2.4945,-0.452973, -1.366728,2.482687,-0.459107, -1.42049,2.482687,-0.236115, + -1.439025,2.482687,0, -1.4198,2.4945,0, -1.401513,2.4945,-0.232961, + -1.401513,2.4945,-0.232961, -1.42049,2.482687,-0.236115, -1.439025,2.482687,0, + -0.239491,2.463,-1.4408, -0.236115,2.482687,-1.42049, 0,2.482687,-1.439025, + 0,2.482687,-1.439025, 0,2.463,-1.4596, -0.239491,2.463,-1.4408, + -0.465671,2.463,-1.38627, -0.459107,2.482687,-1.366728, -0.236115,2.482687,-1.42049, + -0.236115,2.482687,-1.42049, -0.239491,2.463,-1.4408, -0.465671,2.463,-1.38627, + -0.675736,2.463,-1.29881, -0.666211,2.482687,-1.280502, -0.459107,2.482687,-1.366728, + -0.459107,2.482687,-1.366728, -0.465671,2.463,-1.38627, -0.675736,2.463,-1.29881, + -0.866886,2.463,-1.181225, -0.854666,2.482687,-1.164574, -0.666211,2.482687,-1.280502, + -0.666211,2.482687,-1.280502, -0.675736,2.463,-1.29881, -0.866886,2.463,-1.181225, + -1.036316,2.463,-1.036316, -1.021708,2.482687,-1.021708, -0.854666,2.482687,-1.164574, + -0.854666,2.482687,-1.164574, -0.866886,2.463,-1.181225, -1.036316,2.463,-1.036316, + -1.181225,2.463,-0.866886, -1.164574,2.482687,-0.854666, -1.021708,2.482687,-1.021708, + -1.021708,2.482687,-1.021708, -1.036316,2.463,-1.036316, -1.181225,2.463,-0.866886, + -1.29881,2.463,-0.675736, -1.280502,2.482687,-0.666211, -1.164574,2.482687,-0.854666, + -1.164574,2.482687,-0.854666, -1.181225,2.463,-0.866886, -1.29881,2.463,-0.675736, + -1.38627,2.463,-0.465671, -1.366728,2.482687,-0.459107, -1.280502,2.482687,-0.666211, + -1.280502,2.482687,-0.666211, -1.29881,2.463,-0.675736, -1.38627,2.463,-0.465671, + -1.4408,2.463,-0.239491, -1.42049,2.482687,-0.236115, -1.366728,2.482687,-0.459107, + -1.366728,2.482687,-0.459107, -1.38627,2.463,-0.465671, -1.4408,2.463,-0.239491, + -1.4596,2.463,0, -1.439025,2.482687,0, -1.42049,2.482687,-0.236115, + -1.42049,2.482687,-0.236115, -1.4408,2.463,-0.239491, -1.4596,2.463,0, + -0.242892,2.435437,-1.461258, -0.239491,2.463,-1.4408, 0,2.463,-1.4596, + 0,2.463,-1.4596, 0,2.435437,-1.480325, -0.242892,2.435437,-1.461258, + -0.472283,2.435437,-1.405953, -0.465671,2.463,-1.38627, -0.239491,2.463,-1.4408, + -0.239491,2.463,-1.4408, -0.242892,2.435437,-1.461258, -0.472283,2.435437,-1.405953, + -0.685331,2.435437,-1.317252, -0.675736,2.463,-1.29881, -0.465671,2.463,-1.38627, + -0.465671,2.463,-1.38627, -0.472283,2.435437,-1.405953, -0.685331,2.435437,-1.317252, + -0.879195,2.435437,-1.197997, -0.866886,2.463,-1.181225, -0.675736,2.463,-1.29881, + -0.675736,2.463,-1.29881, -0.685331,2.435437,-1.317252, -0.879195,2.435437,-1.197997, + -1.051031,2.435437,-1.051031, -1.036316,2.463,-1.036316, -0.866886,2.463,-1.181225, + -0.866886,2.463,-1.181225, -0.879195,2.435437,-1.197997, -1.051031,2.435437,-1.051031, + -1.197997,2.435437,-0.879195, -1.181225,2.463,-0.866886, -1.036316,2.463,-1.036316, + -1.036316,2.463,-1.036316, -1.051031,2.435437,-1.051031, -1.197997,2.435437,-0.879195, + -1.317252,2.435437,-0.685331, -1.29881,2.463,-0.675736, -1.181225,2.463,-0.866886, + -1.181225,2.463,-0.866886, -1.197997,2.435437,-0.879195, -1.317252,2.435437,-0.685331, + -1.405953,2.435437,-0.472283, -1.38627,2.463,-0.465671, -1.29881,2.463,-0.675736, + -1.29881,2.463,-0.675736, -1.317252,2.435437,-0.685331, -1.405953,2.435437,-0.472283, + -1.461258,2.435437,-0.242892, -1.4408,2.463,-0.239491, -1.38627,2.463,-0.465671, + -1.38627,2.463,-0.465671, -1.405953,2.435437,-0.472283, -1.461258,2.435437,-0.242892, + -1.480325,2.435437,0, -1.4596,2.463,0, -1.4408,2.463,-0.239491, + -1.4408,2.463,-0.239491, -1.461258,2.435437,-0.242892, -1.480325,2.435437,0, + -0.24612,2.4,-1.48068, -0.242892,2.435437,-1.461258, 0,2.435437,-1.480325, + 0,2.435437,-1.480325, 0,2.4,-1.5, -0.24612,2.4,-1.48068, + -0.47856,2.4,-1.42464, -0.472283,2.435437,-1.405953, -0.242892,2.435437,-1.461258, + -0.242892,2.435437,-1.461258, -0.24612,2.4,-1.48068, -0.47856,2.4,-1.42464, + -0.69444,2.4,-1.33476, -0.685331,2.435437,-1.317252, -0.472283,2.435437,-1.405953, + -0.472283,2.435437,-1.405953, -0.47856,2.4,-1.42464, -0.69444,2.4,-1.33476, + -0.89088,2.4,-1.21392, -0.879195,2.435437,-1.197997, -0.685331,2.435437,-1.317252, + -0.685331,2.435437,-1.317252, -0.69444,2.4,-1.33476, -0.89088,2.4,-1.21392, + -1.065,2.4,-1.065, -1.051031,2.435437,-1.051031, -0.879195,2.435437,-1.197997, + -0.879195,2.435437,-1.197997, -0.89088,2.4,-1.21392, -1.065,2.4,-1.065, + -1.21392,2.4,-0.89088, -1.197997,2.435437,-0.879195, -1.051031,2.435437,-1.051031, + -1.051031,2.435437,-1.051031, -1.065,2.4,-1.065, -1.21392,2.4,-0.89088, + -1.33476,2.4,-0.69444, -1.317252,2.435437,-0.685331, -1.197997,2.435437,-0.879195, + -1.197997,2.435437,-0.879195, -1.21392,2.4,-0.89088, -1.33476,2.4,-0.69444, + -1.42464,2.4,-0.47856, -1.405953,2.435437,-0.472283, -1.317252,2.435437,-0.685331, + -1.317252,2.435437,-0.685331, -1.33476,2.4,-0.69444, -1.42464,2.4,-0.47856, + -1.48068,2.4,-0.24612, -1.461258,2.435437,-0.242892, -1.405953,2.435437,-0.472283, + -1.405953,2.435437,-0.472283, -1.42464,2.4,-0.47856, -1.48068,2.4,-0.24612, + -1.5,2.4,0, -1.480325,2.435437,0, -1.461258,2.435437,-0.242892, + -1.461258,2.435437,-0.242892, -1.48068,2.4,-0.24612, -1.5,2.4,0, + -1.368074,2.435437,0.227403, -1.381968,2.4,0.229712, -1.4,2.4,0, + -1.4,2.4,0, -1.385925,2.435437,0, -1.368074,2.435437,0.227403, + -1.316296,2.435437,0.442166, -1.329664,2.4,0.446656, -1.381968,2.4,0.229712, + -1.381968,2.4,0.229712, -1.368074,2.435437,0.227403, -1.316296,2.435437,0.442166, + -1.233252,2.435437,0.641628, -1.245776,2.4,0.648144, -1.329664,2.4,0.446656, + -1.329664,2.4,0.446656, -1.316296,2.435437,0.442166, -1.233252,2.435437,0.641628, + -1.121601,2.435437,0.823129, -1.132992,2.4,0.831488, -1.245776,2.4,0.648144, + -1.245776,2.4,0.648144, -1.233252,2.435437,0.641628, -1.121601,2.435437,0.823129, + -0.984007,2.435437,0.984007, -0.994,2.4,0.994, -1.132992,2.4,0.831488, + -1.132992,2.4,0.831488, -1.121601,2.435437,0.823129, -0.984007,2.435437,0.984007, + -0.823129,2.435437,1.121601, -0.831488,2.4,1.132992, -0.994,2.4,0.994, + -0.994,2.4,0.994, -0.984007,2.435437,0.984007, -0.823129,2.435437,1.121601, + -0.641628,2.435437,1.233252, -0.648144,2.4,1.245776, -0.831488,2.4,1.132992, + -0.831488,2.4,1.132992, -0.823129,2.435437,1.121601, -0.641628,2.435437,1.233252, + -0.442166,2.435437,1.316296, -0.446656,2.4,1.329664, -0.648144,2.4,1.245776, + -0.648144,2.4,1.245776, -0.641628,2.435437,1.233252, -0.442166,2.435437,1.316296, + -0.227403,2.435437,1.368074, -0.229712,2.4,1.381968, -0.446656,2.4,1.329664, + -0.446656,2.4,1.329664, -0.442166,2.435437,1.316296, -0.227403,2.435437,1.368074, + 0,2.435437,1.385925, 0,2.4,1.4, -0.229712,2.4,1.381968, + -0.229712,2.4,1.381968, -0.227403,2.435437,1.368074, 0,2.435437,1.385925, + -1.36262,2.463,0.226496, -1.368074,2.435437,0.227403, -1.385925,2.435437,0, + -1.385925,2.435437,0, -1.3804,2.463,0, -1.36262,2.463,0.226496, + -1.311049,2.463,0.440403, -1.316296,2.435437,0.442166, -1.368074,2.435437,0.227403, + -1.368074,2.435437,0.227403, -1.36262,2.463,0.226496, -1.311049,2.463,0.440403, + -1.228335,2.463,0.63907, -1.233252,2.435437,0.641628, -1.316296,2.435437,0.442166, + -1.316296,2.435437,0.442166, -1.311049,2.463,0.440403, -1.228335,2.463,0.63907, + -1.11713,2.463,0.819847, -1.121601,2.435437,0.823129, -1.233252,2.435437,0.641628, + -1.233252,2.435437,0.641628, -1.228335,2.463,0.63907, -1.11713,2.463,0.819847, + -0.980084,2.463,0.980084, -0.984007,2.435437,0.984007, -1.121601,2.435437,0.823129, + -1.121601,2.435437,0.823129, -1.11713,2.463,0.819847, -0.980084,2.463,0.980084, + -0.819847,2.463,1.11713, -0.823129,2.435437,1.121601, -0.984007,2.435437,0.984007, + -0.984007,2.435437,0.984007, -0.980084,2.463,0.980084, -0.819847,2.463,1.11713, + -0.63907,2.463,1.228335, -0.641628,2.435437,1.233252, -0.823129,2.435437,1.121601, + -0.823129,2.435437,1.121601, -0.819847,2.463,1.11713, -0.63907,2.463,1.228335, + -0.440403,2.463,1.311049, -0.442166,2.435437,1.316296, -0.641628,2.435437,1.233252, + -0.641628,2.435437,1.233252, -0.63907,2.463,1.228335, -0.440403,2.463,1.311049, + -0.226496,2.463,1.36262, -0.227403,2.435437,1.368074, -0.442166,2.435437,1.316296, + -0.442166,2.435437,1.316296, -0.440403,2.463,1.311049, -0.226496,2.463,1.36262, + 0,2.463,1.3804, 0,2.435437,1.385925, -0.227403,2.435437,1.368074, + -0.227403,2.435437,1.368074, -0.226496,2.463,1.36262, 0,2.463,1.3804, + -1.364422,2.482687,0.226795, -1.36262,2.463,0.226496, -1.3804,2.463,0, + -1.3804,2.463,0, -1.382225,2.482687,0, -1.364422,2.482687,0.226795, + -1.312782,2.482687,0.440985, -1.311049,2.463,0.440403, -1.36262,2.463,0.226496, + -1.36262,2.463,0.226496, -1.364422,2.482687,0.226795, -1.312782,2.482687,0.440985, + -1.229959,2.482687,0.639915, -1.228335,2.463,0.63907, -1.311049,2.463,0.440403, + -1.311049,2.463,0.440403, -1.312782,2.482687,0.440985, -1.229959,2.482687,0.639915, + -1.118607,2.482687,0.820931, -1.11713,2.463,0.819847, -1.228335,2.463,0.63907, + -1.228335,2.463,0.63907, -1.229959,2.482687,0.639915, -1.118607,2.482687,0.820931, + -0.98138,2.482687,0.98138, -0.980084,2.463,0.980084, -1.11713,2.463,0.819847, + -1.11713,2.463,0.819847, -1.118607,2.482687,0.820931, -0.98138,2.482687,0.98138, + -0.820931,2.482687,1.118607, -0.819847,2.463,1.11713, -0.980084,2.463,0.980084, + -0.980084,2.463,0.980084, -0.98138,2.482687,0.98138, -0.820931,2.482687,1.118607, + -0.639915,2.482687,1.229959, -0.63907,2.463,1.228335, -0.819847,2.463,1.11713, + -0.819847,2.463,1.11713, -0.820931,2.482687,1.118607, -0.639915,2.482687,1.229959, + -0.440985,2.482687,1.312782, -0.440403,2.463,1.311049, -0.63907,2.463,1.228335, + -0.63907,2.463,1.228335, -0.639915,2.482687,1.229959, -0.440985,2.482687,1.312782, + -0.226795,2.482687,1.364422, -0.226496,2.463,1.36262, -0.440403,2.463,1.311049, + -0.440403,2.463,1.311049, -0.440985,2.482687,1.312782, -0.226795,2.482687,1.364422, + 0,2.482687,1.382225, 0,2.463,1.3804, -0.226496,2.463,1.36262, + -0.226496,2.463,1.36262, -0.226795,2.482687,1.364422, 0,2.482687,1.382225, + -1.372294,2.4945,0.228104, -1.364422,2.482687,0.226795, -1.382225,2.482687,0, + -1.382225,2.482687,0, -1.3902,2.4945,0, -1.372294,2.4945,0.228104, + -1.320356,2.4945,0.443529, -1.312782,2.482687,0.440985, -1.364422,2.482687,0.226795, + -1.364422,2.482687,0.226795, -1.372294,2.4945,0.228104, -1.320356,2.4945,0.443529, + -1.237056,2.4945,0.643607, -1.229959,2.482687,0.639915, -1.312782,2.482687,0.440985, + -1.312782,2.482687,0.440985, -1.320356,2.4945,0.443529, -1.237056,2.4945,0.643607, + -1.125061,2.4945,0.825668, -1.118607,2.482687,0.820931, -1.229959,2.482687,0.639915, + -1.229959,2.482687,0.639915, -1.237056,2.4945,0.643607, -1.125061,2.4945,0.825668, + -0.987042,2.4945,0.987042, -0.98138,2.482687,0.98138, -1.118607,2.482687,0.820931, + -1.118607,2.482687,0.820931, -1.125061,2.4945,0.825668, -0.987042,2.4945,0.987042, + -0.825668,2.4945,1.125061, -0.820931,2.482687,1.118607, -0.98138,2.482687,0.98138, + -0.98138,2.482687,0.98138, -0.987042,2.4945,0.987042, -0.825668,2.4945,1.125061, + -0.643607,2.4945,1.237056, -0.639915,2.482687,1.229959, -0.820931,2.482687,1.118607, + -0.820931,2.482687,1.118607, -0.825668,2.4945,1.125061, -0.643607,2.4945,1.237056, + -0.443529,2.4945,1.320356, -0.440985,2.482687,1.312782, -0.639915,2.482687,1.229959, + -0.639915,2.482687,1.229959, -0.643607,2.4945,1.237056, -0.443529,2.4945,1.320356, + -0.228104,2.4945,1.372294, -0.226795,2.482687,1.364422, -0.440985,2.482687,1.312782, + -0.440985,2.482687,1.312782, -0.443529,2.4945,1.320356, -0.228104,2.4945,1.372294, + 0,2.4945,1.3902, 0,2.482687,1.382225, -0.226795,2.482687,1.364422, + -0.226795,2.482687,1.364422, -0.228104,2.4945,1.372294, 0,2.4945,1.3902, + -1.385053,2.498438,0.230225, -1.372294,2.4945,0.228104, -1.3902,2.4945,0, + -1.3902,2.4945,0, -1.403125,2.498438,0, -1.385053,2.498438,0.230225, + -1.332632,2.498438,0.447653, -1.320356,2.4945,0.443529, -1.372294,2.4945,0.228104, + -1.372294,2.4945,0.228104, -1.385053,2.498438,0.230225, -1.332632,2.498438,0.447653, + -1.248557,2.498438,0.649591, -1.237056,2.4945,0.643607, -1.320356,2.4945,0.443529, + -1.320356,2.4945,0.443529, -1.332632,2.498438,0.447653, -1.248557,2.498438,0.649591, + -1.135521,2.498438,0.833344, -1.125061,2.4945,0.825668, -1.237056,2.4945,0.643607, + -1.237056,2.4945,0.643607, -1.248557,2.498438,0.649591, -1.135521,2.498438,0.833344, + -0.996219,2.498438,0.996219, -0.987042,2.4945,0.987042, -1.125061,2.4945,0.825668, + -1.125061,2.4945,0.825668, -1.135521,2.498438,0.833344, -0.996219,2.498438,0.996219, + -0.833344,2.498438,1.135521, -0.825668,2.4945,1.125061, -0.987042,2.4945,0.987042, + -0.987042,2.4945,0.987042, -0.996219,2.498438,0.996219, -0.833344,2.498438,1.135521, + -0.649591,2.498438,1.248557, -0.643607,2.4945,1.237056, -0.825668,2.4945,1.125061, + -0.825668,2.4945,1.125061, -0.833344,2.498438,1.135521, -0.649591,2.498438,1.248557, + -0.447653,2.498438,1.332632, -0.443529,2.4945,1.320356, -0.643607,2.4945,1.237056, + -0.643607,2.4945,1.237056, -0.649591,2.498438,1.248557, -0.447653,2.498438,1.332632, + -0.230225,2.498438,1.385053, -0.228104,2.4945,1.372294, -0.443529,2.4945,1.320356, + -0.443529,2.4945,1.320356, -0.447653,2.498438,1.332632, -0.230225,2.498438,1.385053, + 0,2.498438,1.403125, 0,2.4945,1.3902, -0.228104,2.4945,1.372294, + -0.228104,2.4945,1.372294, -0.230225,2.498438,1.385053, 0,2.498438,1.403125, + -1.401513,2.4945,0.232961, -1.385053,2.498438,0.230225, -1.403125,2.498438,0, + -1.403125,2.498438,0, -1.4198,2.4945,0, -1.401513,2.4945,0.232961, + -1.348469,2.4945,0.452973, -1.332632,2.498438,0.447653, -1.385053,2.498438,0.230225, + -1.385053,2.498438,0.230225, -1.401513,2.4945,0.232961, -1.348469,2.4945,0.452973, + -1.263395,2.4945,0.657311, -1.248557,2.498438,0.649591, -1.332632,2.498438,0.447653, + -1.332632,2.498438,0.447653, -1.348469,2.4945,0.452973, -1.263395,2.4945,0.657311, + -1.149016,2.4945,0.843248, -1.135521,2.498438,0.833344, -1.248557,2.498438,0.649591, + -1.248557,2.498438,0.649591, -1.263395,2.4945,0.657311, -1.149016,2.4945,0.843248, + -1.008058,2.4945,1.008058, -0.996219,2.498438,0.996219, -1.135521,2.498438,0.833344, + -1.135521,2.498438,0.833344, -1.149016,2.4945,0.843248, -1.008058,2.4945,1.008058, + -0.843248,2.4945,1.149016, -0.833344,2.498438,1.135521, -0.996219,2.498438,0.996219, + -0.996219,2.498438,0.996219, -1.008058,2.4945,1.008058, -0.843248,2.4945,1.149016, + -0.657311,2.4945,1.263395, -0.649591,2.498438,1.248557, -0.833344,2.498438,1.135521, + -0.833344,2.498438,1.135521, -0.843248,2.4945,1.149016, -0.657311,2.4945,1.263395, + -0.452973,2.4945,1.348469, -0.447653,2.498438,1.332632, -0.649591,2.498438,1.248557, + -0.649591,2.498438,1.248557, -0.657311,2.4945,1.263395, -0.452973,2.4945,1.348469, + -0.232961,2.4945,1.401513, -0.230225,2.498438,1.385053, -0.447653,2.498438,1.332632, + -0.447653,2.498438,1.332632, -0.452973,2.4945,1.348469, -0.232961,2.4945,1.401513, + 0,2.4945,1.4198, 0,2.498438,1.403125, -0.230225,2.498438,1.385053, + -0.230225,2.498438,1.385053, -0.232961,2.4945,1.401513, 0,2.4945,1.4198, + -1.42049,2.482687,0.236115, -1.401513,2.4945,0.232961, -1.4198,2.4945,0, + -1.4198,2.4945,0, -1.439025,2.482687,0, -1.42049,2.482687,0.236115, + -1.366728,2.482687,0.459107, -1.348469,2.4945,0.452973, -1.401513,2.4945,0.232961, + -1.401513,2.4945,0.232961, -1.42049,2.482687,0.236115, -1.366728,2.482687,0.459107, + -1.280502,2.482687,0.666211, -1.263395,2.4945,0.657311, -1.348469,2.4945,0.452973, + -1.348469,2.4945,0.452973, -1.366728,2.482687,0.459107, -1.280502,2.482687,0.666211, + -1.164574,2.482687,0.854666, -1.149016,2.4945,0.843248, -1.263395,2.4945,0.657311, + -1.263395,2.4945,0.657311, -1.280502,2.482687,0.666211, -1.164574,2.482687,0.854666, + -1.021708,2.482687,1.021708, -1.008058,2.4945,1.008058, -1.149016,2.4945,0.843248, + -1.149016,2.4945,0.843248, -1.164574,2.482687,0.854666, -1.021708,2.482687,1.021708, + -0.854666,2.482687,1.164574, -0.843248,2.4945,1.149016, -1.008058,2.4945,1.008058, + -1.008058,2.4945,1.008058, -1.021708,2.482687,1.021708, -0.854666,2.482687,1.164574, + -0.666211,2.482687,1.280502, -0.657311,2.4945,1.263395, -0.843248,2.4945,1.149016, + -0.843248,2.4945,1.149016, -0.854666,2.482687,1.164574, -0.666211,2.482687,1.280502, + -0.459107,2.482687,1.366728, -0.452973,2.4945,1.348469, -0.657311,2.4945,1.263395, + -0.657311,2.4945,1.263395, -0.666211,2.482687,1.280502, -0.459107,2.482687,1.366728, + -0.236115,2.482687,1.42049, -0.232961,2.4945,1.401513, -0.452973,2.4945,1.348469, + -0.452973,2.4945,1.348469, -0.459107,2.482687,1.366728, -0.236115,2.482687,1.42049, + 0,2.482687,1.439025, 0,2.4945,1.4198, -0.232961,2.4945,1.401513, + -0.232961,2.4945,1.401513, -0.236115,2.482687,1.42049, 0,2.482687,1.439025, + -1.4408,2.463,0.239491, -1.42049,2.482687,0.236115, -1.439025,2.482687,0, + -1.439025,2.482687,0, -1.4596,2.463,0, -1.4408,2.463,0.239491, + -1.38627,2.463,0.465671, -1.366728,2.482687,0.459107, -1.42049,2.482687,0.236115, + -1.42049,2.482687,0.236115, -1.4408,2.463,0.239491, -1.38627,2.463,0.465671, + -1.29881,2.463,0.675736, -1.280502,2.482687,0.666211, -1.366728,2.482687,0.459107, + -1.366728,2.482687,0.459107, -1.38627,2.463,0.465671, -1.29881,2.463,0.675736, + -1.181225,2.463,0.866886, -1.164574,2.482687,0.854666, -1.280502,2.482687,0.666211, + -1.280502,2.482687,0.666211, -1.29881,2.463,0.675736, -1.181225,2.463,0.866886, + -1.036316,2.463,1.036316, -1.021708,2.482687,1.021708, -1.164574,2.482687,0.854666, + -1.164574,2.482687,0.854666, -1.181225,2.463,0.866886, -1.036316,2.463,1.036316, + -0.866886,2.463,1.181225, -0.854666,2.482687,1.164574, -1.021708,2.482687,1.021708, + -1.021708,2.482687,1.021708, -1.036316,2.463,1.036316, -0.866886,2.463,1.181225, + -0.675736,2.463,1.29881, -0.666211,2.482687,1.280502, -0.854666,2.482687,1.164574, + -0.854666,2.482687,1.164574, -0.866886,2.463,1.181225, -0.675736,2.463,1.29881, + -0.465671,2.463,1.38627, -0.459107,2.482687,1.366728, -0.666211,2.482687,1.280502, + -0.666211,2.482687,1.280502, -0.675736,2.463,1.29881, -0.465671,2.463,1.38627, + -0.239491,2.463,1.4408, -0.236115,2.482687,1.42049, -0.459107,2.482687,1.366728, + -0.459107,2.482687,1.366728, -0.465671,2.463,1.38627, -0.239491,2.463,1.4408, + 0,2.463,1.4596, 0,2.482687,1.439025, -0.236115,2.482687,1.42049, + -0.236115,2.482687,1.42049, -0.239491,2.463,1.4408, 0,2.463,1.4596, + -1.461258,2.435437,0.242892, -1.4408,2.463,0.239491, -1.4596,2.463,0, + -1.4596,2.463,0, -1.480325,2.435437,0, -1.461258,2.435437,0.242892, + -1.405953,2.435437,0.472283, -1.38627,2.463,0.465671, -1.4408,2.463,0.239491, + -1.4408,2.463,0.239491, -1.461258,2.435437,0.242892, -1.405953,2.435437,0.472283, + -1.317252,2.435437,0.685331, -1.29881,2.463,0.675736, -1.38627,2.463,0.465671, + -1.38627,2.463,0.465671, -1.405953,2.435437,0.472283, -1.317252,2.435437,0.685331, + -1.197997,2.435437,0.879195, -1.181225,2.463,0.866886, -1.29881,2.463,0.675736, + -1.29881,2.463,0.675736, -1.317252,2.435437,0.685331, -1.197997,2.435437,0.879195, + -1.051031,2.435437,1.051031, -1.036316,2.463,1.036316, -1.181225,2.463,0.866886, + -1.181225,2.463,0.866886, -1.197997,2.435437,0.879195, -1.051031,2.435437,1.051031, + -0.879195,2.435437,1.197997, -0.866886,2.463,1.181225, -1.036316,2.463,1.036316, + -1.036316,2.463,1.036316, -1.051031,2.435437,1.051031, -0.879195,2.435437,1.197997, + -0.685331,2.435437,1.317252, -0.675736,2.463,1.29881, -0.866886,2.463,1.181225, + -0.866886,2.463,1.181225, -0.879195,2.435437,1.197997, -0.685331,2.435437,1.317252, + -0.472283,2.435437,1.405953, -0.465671,2.463,1.38627, -0.675736,2.463,1.29881, + -0.675736,2.463,1.29881, -0.685331,2.435437,1.317252, -0.472283,2.435437,1.405953, + -0.242892,2.435437,1.461258, -0.239491,2.463,1.4408, -0.465671,2.463,1.38627, + -0.465671,2.463,1.38627, -0.472283,2.435437,1.405953, -0.242892,2.435437,1.461258, + 0,2.435437,1.480325, 0,2.463,1.4596, -0.239491,2.463,1.4408, + -0.239491,2.463,1.4408, -0.242892,2.435437,1.461258, 0,2.435437,1.480325, + -1.48068,2.4,0.24612, -1.461258,2.435437,0.242892, -1.480325,2.435437,0, + -1.480325,2.435437,0, -1.5,2.4,0, -1.48068,2.4,0.24612, + -1.42464,2.4,0.47856, -1.405953,2.435437,0.472283, -1.461258,2.435437,0.242892, + -1.461258,2.435437,0.242892, -1.48068,2.4,0.24612, -1.42464,2.4,0.47856, + -1.33476,2.4,0.69444, -1.317252,2.435437,0.685331, -1.405953,2.435437,0.472283, + -1.405953,2.435437,0.472283, -1.42464,2.4,0.47856, -1.33476,2.4,0.69444, + -1.21392,2.4,0.89088, -1.197997,2.435437,0.879195, -1.317252,2.435437,0.685331, + -1.317252,2.435437,0.685331, -1.33476,2.4,0.69444, -1.21392,2.4,0.89088, + -1.065,2.4,1.065, -1.051031,2.435437,1.051031, -1.197997,2.435437,0.879195, + -1.197997,2.435437,0.879195, -1.21392,2.4,0.89088, -1.065,2.4,1.065, + -0.89088,2.4,1.21392, -0.879195,2.435437,1.197997, -1.051031,2.435437,1.051031, + -1.051031,2.435437,1.051031, -1.065,2.4,1.065, -0.89088,2.4,1.21392, + -0.69444,2.4,1.33476, -0.685331,2.435437,1.317252, -0.879195,2.435437,1.197997, + -0.879195,2.435437,1.197997, -0.89088,2.4,1.21392, -0.69444,2.4,1.33476, + -0.47856,2.4,1.42464, -0.472283,2.435437,1.405953, -0.685331,2.435437,1.317252, + -0.685331,2.435437,1.317252, -0.69444,2.4,1.33476, -0.47856,2.4,1.42464, + -0.24612,2.4,1.48068, -0.242892,2.435437,1.461258, -0.472283,2.435437,1.405953, + -0.472283,2.435437,1.405953, -0.47856,2.4,1.42464, -0.24612,2.4,1.48068, + 0,2.4,1.5, 0,2.435437,1.480325, -0.242892,2.435437,1.461258, + -0.242892,2.435437,1.461258, -0.24612,2.4,1.48068, 0,2.4,1.5, + 0.227403,2.435437,1.368074, 0.229712,2.4,1.381968, 0,2.4,1.4, + 0,2.4,1.4, 0,2.435437,1.385925, 0.227403,2.435437,1.368074, + 0.442166,2.435437,1.316296, 0.446656,2.4,1.329664, 0.229712,2.4,1.381968, + 0.229712,2.4,1.381968, 0.227403,2.435437,1.368074, 0.442166,2.435437,1.316296, + 0.641628,2.435437,1.233252, 0.648144,2.4,1.245776, 0.446656,2.4,1.329664, + 0.446656,2.4,1.329664, 0.442166,2.435437,1.316296, 0.641628,2.435437,1.233252, + 0.823129,2.435437,1.121601, 0.831488,2.4,1.132992, 0.648144,2.4,1.245776, + 0.648144,2.4,1.245776, 0.641628,2.435437,1.233252, 0.823129,2.435437,1.121601, + 0.984007,2.435437,0.984007, 0.994,2.4,0.994, 0.831488,2.4,1.132992, + 0.831488,2.4,1.132992, 0.823129,2.435437,1.121601, 0.984007,2.435437,0.984007, + 1.121601,2.435437,0.823129, 1.132992,2.4,0.831488, 0.994,2.4,0.994, + 0.994,2.4,0.994, 0.984007,2.435437,0.984007, 1.121601,2.435437,0.823129, + 1.233252,2.435437,0.641628, 1.245776,2.4,0.648144, 1.132992,2.4,0.831488, + 1.132992,2.4,0.831488, 1.121601,2.435437,0.823129, 1.233252,2.435437,0.641628, + 1.316296,2.435437,0.442166, 1.329664,2.4,0.446656, 1.245776,2.4,0.648144, + 1.245776,2.4,0.648144, 1.233252,2.435437,0.641628, 1.316296,2.435437,0.442166, + 1.368074,2.435437,0.227403, 1.381968,2.4,0.229712, 1.329664,2.4,0.446656, + 1.329664,2.4,0.446656, 1.316296,2.435437,0.442166, 1.368074,2.435437,0.227403, + 1.385925,2.435437,0, 1.4,2.4,0, 1.381968,2.4,0.229712, + 1.381968,2.4,0.229712, 1.368074,2.435437,0.227403, 1.385925,2.435437,0, + 0.226496,2.463,1.36262, 0.227403,2.435437,1.368074, 0,2.435437,1.385925, + 0,2.435437,1.385925, 0,2.463,1.3804, 0.226496,2.463,1.36262, + 0.440403,2.463,1.311049, 0.442166,2.435437,1.316296, 0.227403,2.435437,1.368074, + 0.227403,2.435437,1.368074, 0.226496,2.463,1.36262, 0.440403,2.463,1.311049, + 0.63907,2.463,1.228335, 0.641628,2.435437,1.233252, 0.442166,2.435437,1.316296, + 0.442166,2.435437,1.316296, 0.440403,2.463,1.311049, 0.63907,2.463,1.228335, + 0.819847,2.463,1.11713, 0.823129,2.435437,1.121601, 0.641628,2.435437,1.233252, + 0.641628,2.435437,1.233252, 0.63907,2.463,1.228335, 0.819847,2.463,1.11713, + 0.980084,2.463,0.980084, 0.984007,2.435437,0.984007, 0.823129,2.435437,1.121601, + 0.823129,2.435437,1.121601, 0.819847,2.463,1.11713, 0.980084,2.463,0.980084, + 1.11713,2.463,0.819847, 1.121601,2.435437,0.823129, 0.984007,2.435437,0.984007, + 0.984007,2.435437,0.984007, 0.980084,2.463,0.980084, 1.11713,2.463,0.819847, + 1.228335,2.463,0.63907, 1.233252,2.435437,0.641628, 1.121601,2.435437,0.823129, + 1.121601,2.435437,0.823129, 1.11713,2.463,0.819847, 1.228335,2.463,0.63907, + 1.311049,2.463,0.440403, 1.316296,2.435437,0.442166, 1.233252,2.435437,0.641628, + 1.233252,2.435437,0.641628, 1.228335,2.463,0.63907, 1.311049,2.463,0.440403, + 1.36262,2.463,0.226496, 1.368074,2.435437,0.227403, 1.316296,2.435437,0.442166, + 1.316296,2.435437,0.442166, 1.311049,2.463,0.440403, 1.36262,2.463,0.226496, + 1.3804,2.463,0, 1.385925,2.435437,0, 1.368074,2.435437,0.227403, + 1.368074,2.435437,0.227403, 1.36262,2.463,0.226496, 1.3804,2.463,0, + 0.226795,2.482687,1.364422, 0.226496,2.463,1.36262, 0,2.463,1.3804, + 0,2.463,1.3804, 0,2.482687,1.382225, 0.226795,2.482687,1.364422, + 0.440985,2.482687,1.312782, 0.440403,2.463,1.311049, 0.226496,2.463,1.36262, + 0.226496,2.463,1.36262, 0.226795,2.482687,1.364422, 0.440985,2.482687,1.312782, + 0.639915,2.482687,1.229959, 0.63907,2.463,1.228335, 0.440403,2.463,1.311049, + 0.440403,2.463,1.311049, 0.440985,2.482687,1.312782, 0.639915,2.482687,1.229959, + 0.820931,2.482687,1.118607, 0.819847,2.463,1.11713, 0.63907,2.463,1.228335, + 0.63907,2.463,1.228335, 0.639915,2.482687,1.229959, 0.820931,2.482687,1.118607, + 0.98138,2.482687,0.98138, 0.980084,2.463,0.980084, 0.819847,2.463,1.11713, + 0.819847,2.463,1.11713, 0.820931,2.482687,1.118607, 0.98138,2.482687,0.98138, + 1.118607,2.482687,0.820931, 1.11713,2.463,0.819847, 0.980084,2.463,0.980084, + 0.980084,2.463,0.980084, 0.98138,2.482687,0.98138, 1.118607,2.482687,0.820931, + 1.229959,2.482687,0.639915, 1.228335,2.463,0.63907, 1.11713,2.463,0.819847, + 1.11713,2.463,0.819847, 1.118607,2.482687,0.820931, 1.229959,2.482687,0.639915, + 1.312782,2.482687,0.440985, 1.311049,2.463,0.440403, 1.228335,2.463,0.63907, + 1.228335,2.463,0.63907, 1.229959,2.482687,0.639915, 1.312782,2.482687,0.440985, + 1.364422,2.482687,0.226795, 1.36262,2.463,0.226496, 1.311049,2.463,0.440403, + 1.311049,2.463,0.440403, 1.312782,2.482687,0.440985, 1.364422,2.482687,0.226795, + 1.382225,2.482687,0, 1.3804,2.463,0, 1.36262,2.463,0.226496, + 1.36262,2.463,0.226496, 1.364422,2.482687,0.226795, 1.382225,2.482687,0, + 0.228104,2.4945,1.372294, 0.226795,2.482687,1.364422, 0,2.482687,1.382225, + 0,2.482687,1.382225, 0,2.4945,1.3902, 0.228104,2.4945,1.372294, + 0.443529,2.4945,1.320356, 0.440985,2.482687,1.312782, 0.226795,2.482687,1.364422, + 0.226795,2.482687,1.364422, 0.228104,2.4945,1.372294, 0.443529,2.4945,1.320356, + 0.643607,2.4945,1.237056, 0.639915,2.482687,1.229959, 0.440985,2.482687,1.312782, + 0.440985,2.482687,1.312782, 0.443529,2.4945,1.320356, 0.643607,2.4945,1.237056, + 0.825668,2.4945,1.125061, 0.820931,2.482687,1.118607, 0.639915,2.482687,1.229959, + 0.639915,2.482687,1.229959, 0.643607,2.4945,1.237056, 0.825668,2.4945,1.125061, + 0.987042,2.4945,0.987042, 0.98138,2.482687,0.98138, 0.820931,2.482687,1.118607, + 0.820931,2.482687,1.118607, 0.825668,2.4945,1.125061, 0.987042,2.4945,0.987042, + 1.125061,2.4945,0.825668, 1.118607,2.482687,0.820931, 0.98138,2.482687,0.98138, + 0.98138,2.482687,0.98138, 0.987042,2.4945,0.987042, 1.125061,2.4945,0.825668, + 1.237056,2.4945,0.643607, 1.229959,2.482687,0.639915, 1.118607,2.482687,0.820931, + 1.118607,2.482687,0.820931, 1.125061,2.4945,0.825668, 1.237056,2.4945,0.643607, + 1.320356,2.4945,0.443529, 1.312782,2.482687,0.440985, 1.229959,2.482687,0.639915, + 1.229959,2.482687,0.639915, 1.237056,2.4945,0.643607, 1.320356,2.4945,0.443529, + 1.372294,2.4945,0.228104, 1.364422,2.482687,0.226795, 1.312782,2.482687,0.440985, + 1.312782,2.482687,0.440985, 1.320356,2.4945,0.443529, 1.372294,2.4945,0.228104, + 1.3902,2.4945,0, 1.382225,2.482687,0, 1.364422,2.482687,0.226795, + 1.364422,2.482687,0.226795, 1.372294,2.4945,0.228104, 1.3902,2.4945,0, + 0.230225,2.498438,1.385053, 0.228104,2.4945,1.372294, 0,2.4945,1.3902, + 0,2.4945,1.3902, 0,2.498438,1.403125, 0.230225,2.498438,1.385053, + 0.447653,2.498438,1.332632, 0.443529,2.4945,1.320356, 0.228104,2.4945,1.372294, + 0.228104,2.4945,1.372294, 0.230225,2.498438,1.385053, 0.447653,2.498438,1.332632, + 0.649591,2.498438,1.248557, 0.643607,2.4945,1.237056, 0.443529,2.4945,1.320356, + 0.443529,2.4945,1.320356, 0.447653,2.498438,1.332632, 0.649591,2.498438,1.248557, + 0.833344,2.498438,1.135521, 0.825668,2.4945,1.125061, 0.643607,2.4945,1.237056, + 0.643607,2.4945,1.237056, 0.649591,2.498438,1.248557, 0.833344,2.498438,1.135521, + 0.996219,2.498438,0.996219, 0.987042,2.4945,0.987042, 0.825668,2.4945,1.125061, + 0.825668,2.4945,1.125061, 0.833344,2.498438,1.135521, 0.996219,2.498438,0.996219, + 1.135521,2.498438,0.833344, 1.125061,2.4945,0.825668, 0.987042,2.4945,0.987042, + 0.987042,2.4945,0.987042, 0.996219,2.498438,0.996219, 1.135521,2.498438,0.833344, + 1.248557,2.498438,0.649591, 1.237056,2.4945,0.643607, 1.125061,2.4945,0.825668, + 1.125061,2.4945,0.825668, 1.135521,2.498438,0.833344, 1.248557,2.498438,0.649591, + 1.332632,2.498438,0.447653, 1.320356,2.4945,0.443529, 1.237056,2.4945,0.643607, + 1.237056,2.4945,0.643607, 1.248557,2.498438,0.649591, 1.332632,2.498438,0.447653, + 1.385053,2.498438,0.230225, 1.372294,2.4945,0.228104, 1.320356,2.4945,0.443529, + 1.320356,2.4945,0.443529, 1.332632,2.498438,0.447653, 1.385053,2.498438,0.230225, + 1.403125,2.498438,0, 1.3902,2.4945,0, 1.372294,2.4945,0.228104, + 1.372294,2.4945,0.228104, 1.385053,2.498438,0.230225, 1.403125,2.498438,0, + 0.232961,2.4945,1.401513, 0.230225,2.498438,1.385053, 0,2.498438,1.403125, + 0,2.498438,1.403125, 0,2.4945,1.4198, 0.232961,2.4945,1.401513, + 0.452973,2.4945,1.348469, 0.447653,2.498438,1.332632, 0.230225,2.498438,1.385053, + 0.230225,2.498438,1.385053, 0.232961,2.4945,1.401513, 0.452973,2.4945,1.348469, + 0.657311,2.4945,1.263395, 0.649591,2.498438,1.248557, 0.447653,2.498438,1.332632, + 0.447653,2.498438,1.332632, 0.452973,2.4945,1.348469, 0.657311,2.4945,1.263395, + 0.843248,2.4945,1.149016, 0.833344,2.498438,1.135521, 0.649591,2.498438,1.248557, + 0.649591,2.498438,1.248557, 0.657311,2.4945,1.263395, 0.843248,2.4945,1.149016, + 1.008058,2.4945,1.008058, 0.996219,2.498438,0.996219, 0.833344,2.498438,1.135521, + 0.833344,2.498438,1.135521, 0.843248,2.4945,1.149016, 1.008058,2.4945,1.008058, + 1.149016,2.4945,0.843248, 1.135521,2.498438,0.833344, 0.996219,2.498438,0.996219, + 0.996219,2.498438,0.996219, 1.008058,2.4945,1.008058, 1.149016,2.4945,0.843248, + 1.263395,2.4945,0.657311, 1.248557,2.498438,0.649591, 1.135521,2.498438,0.833344, + 1.135521,2.498438,0.833344, 1.149016,2.4945,0.843248, 1.263395,2.4945,0.657311, + 1.348469,2.4945,0.452973, 1.332632,2.498438,0.447653, 1.248557,2.498438,0.649591, + 1.248557,2.498438,0.649591, 1.263395,2.4945,0.657311, 1.348469,2.4945,0.452973, + 1.401513,2.4945,0.232961, 1.385053,2.498438,0.230225, 1.332632,2.498438,0.447653, + 1.332632,2.498438,0.447653, 1.348469,2.4945,0.452973, 1.401513,2.4945,0.232961, + 1.4198,2.4945,0, 1.403125,2.498438,0, 1.385053,2.498438,0.230225, + 1.385053,2.498438,0.230225, 1.401513,2.4945,0.232961, 1.4198,2.4945,0, + 0.236115,2.482687,1.42049, 0.232961,2.4945,1.401513, 0,2.4945,1.4198, + 0,2.4945,1.4198, 0,2.482687,1.439025, 0.236115,2.482687,1.42049, + 0.459107,2.482687,1.366728, 0.452973,2.4945,1.348469, 0.232961,2.4945,1.401513, + 0.232961,2.4945,1.401513, 0.236115,2.482687,1.42049, 0.459107,2.482687,1.366728, + 0.666211,2.482687,1.280502, 0.657311,2.4945,1.263395, 0.452973,2.4945,1.348469, + 0.452973,2.4945,1.348469, 0.459107,2.482687,1.366728, 0.666211,2.482687,1.280502, + 0.854666,2.482687,1.164574, 0.843248,2.4945,1.149016, 0.657311,2.4945,1.263395, + 0.657311,2.4945,1.263395, 0.666211,2.482687,1.280502, 0.854666,2.482687,1.164574, + 1.021708,2.482687,1.021708, 1.008058,2.4945,1.008058, 0.843248,2.4945,1.149016, + 0.843248,2.4945,1.149016, 0.854666,2.482687,1.164574, 1.021708,2.482687,1.021708, + 1.164574,2.482687,0.854666, 1.149016,2.4945,0.843248, 1.008058,2.4945,1.008058, + 1.008058,2.4945,1.008058, 1.021708,2.482687,1.021708, 1.164574,2.482687,0.854666, + 1.280502,2.482687,0.666211, 1.263395,2.4945,0.657311, 1.149016,2.4945,0.843248, + 1.149016,2.4945,0.843248, 1.164574,2.482687,0.854666, 1.280502,2.482687,0.666211, + 1.366728,2.482687,0.459107, 1.348469,2.4945,0.452973, 1.263395,2.4945,0.657311, + 1.263395,2.4945,0.657311, 1.280502,2.482687,0.666211, 1.366728,2.482687,0.459107, + 1.42049,2.482687,0.236115, 1.401513,2.4945,0.232961, 1.348469,2.4945,0.452973, + 1.348469,2.4945,0.452973, 1.366728,2.482687,0.459107, 1.42049,2.482687,0.236115, + 1.439025,2.482687,0, 1.4198,2.4945,0, 1.401513,2.4945,0.232961, + 1.401513,2.4945,0.232961, 1.42049,2.482687,0.236115, 1.439025,2.482687,0, + 0.239491,2.463,1.4408, 0.236115,2.482687,1.42049, 0,2.482687,1.439025, + 0,2.482687,1.439025, 0,2.463,1.4596, 0.239491,2.463,1.4408, + 0.465671,2.463,1.38627, 0.459107,2.482687,1.366728, 0.236115,2.482687,1.42049, + 0.236115,2.482687,1.42049, 0.239491,2.463,1.4408, 0.465671,2.463,1.38627, + 0.675736,2.463,1.29881, 0.666211,2.482687,1.280502, 0.459107,2.482687,1.366728, + 0.459107,2.482687,1.366728, 0.465671,2.463,1.38627, 0.675736,2.463,1.29881, + 0.866886,2.463,1.181225, 0.854666,2.482687,1.164574, 0.666211,2.482687,1.280502, + 0.666211,2.482687,1.280502, 0.675736,2.463,1.29881, 0.866886,2.463,1.181225, + 1.036316,2.463,1.036316, 1.021708,2.482687,1.021708, 0.854666,2.482687,1.164574, + 0.854666,2.482687,1.164574, 0.866886,2.463,1.181225, 1.036316,2.463,1.036316, + 1.181225,2.463,0.866886, 1.164574,2.482687,0.854666, 1.021708,2.482687,1.021708, + 1.021708,2.482687,1.021708, 1.036316,2.463,1.036316, 1.181225,2.463,0.866886, + 1.29881,2.463,0.675736, 1.280502,2.482687,0.666211, 1.164574,2.482687,0.854666, + 1.164574,2.482687,0.854666, 1.181225,2.463,0.866886, 1.29881,2.463,0.675736, + 1.38627,2.463,0.465671, 1.366728,2.482687,0.459107, 1.280502,2.482687,0.666211, + 1.280502,2.482687,0.666211, 1.29881,2.463,0.675736, 1.38627,2.463,0.465671, + 1.4408,2.463,0.239491, 1.42049,2.482687,0.236115, 1.366728,2.482687,0.459107, + 1.366728,2.482687,0.459107, 1.38627,2.463,0.465671, 1.4408,2.463,0.239491, + 1.4596,2.463,0, 1.439025,2.482687,0, 1.42049,2.482687,0.236115, + 1.42049,2.482687,0.236115, 1.4408,2.463,0.239491, 1.4596,2.463,0, + 0.242892,2.435437,1.461258, 0.239491,2.463,1.4408, 0,2.463,1.4596, + 0,2.463,1.4596, 0,2.435437,1.480325, 0.242892,2.435437,1.461258, + 0.472283,2.435437,1.405953, 0.465671,2.463,1.38627, 0.239491,2.463,1.4408, + 0.239491,2.463,1.4408, 0.242892,2.435437,1.461258, 0.472283,2.435437,1.405953, + 0.685331,2.435437,1.317252, 0.675736,2.463,1.29881, 0.465671,2.463,1.38627, + 0.465671,2.463,1.38627, 0.472283,2.435437,1.405953, 0.685331,2.435437,1.317252, + 0.879195,2.435437,1.197997, 0.866886,2.463,1.181225, 0.675736,2.463,1.29881, + 0.675736,2.463,1.29881, 0.685331,2.435437,1.317252, 0.879195,2.435437,1.197997, + 1.051031,2.435437,1.051031, 1.036316,2.463,1.036316, 0.866886,2.463,1.181225, + 0.866886,2.463,1.181225, 0.879195,2.435437,1.197997, 1.051031,2.435437,1.051031, + 1.197997,2.435437,0.879195, 1.181225,2.463,0.866886, 1.036316,2.463,1.036316, + 1.036316,2.463,1.036316, 1.051031,2.435437,1.051031, 1.197997,2.435437,0.879195, + 1.317252,2.435437,0.685331, 1.29881,2.463,0.675736, 1.181225,2.463,0.866886, + 1.181225,2.463,0.866886, 1.197997,2.435437,0.879195, 1.317252,2.435437,0.685331, + 1.405953,2.435437,0.472283, 1.38627,2.463,0.465671, 1.29881,2.463,0.675736, + 1.29881,2.463,0.675736, 1.317252,2.435437,0.685331, 1.405953,2.435437,0.472283, + 1.461258,2.435437,0.242892, 1.4408,2.463,0.239491, 1.38627,2.463,0.465671, + 1.38627,2.463,0.465671, 1.405953,2.435437,0.472283, 1.461258,2.435437,0.242892, + 1.480325,2.435437,0, 1.4596,2.463,0, 1.4408,2.463,0.239491, + 1.4408,2.463,0.239491, 1.461258,2.435437,0.242892, 1.480325,2.435437,0, + 0.24612,2.4,1.48068, 0.242892,2.435437,1.461258, 0,2.435437,1.480325, + 0,2.435437,1.480325, 0,2.4,1.5, 0.24612,2.4,1.48068, + 0.47856,2.4,1.42464, 0.472283,2.435437,1.405953, 0.242892,2.435437,1.461258, + 0.242892,2.435437,1.461258, 0.24612,2.4,1.48068, 0.47856,2.4,1.42464, + 0.69444,2.4,1.33476, 0.685331,2.435437,1.317252, 0.472283,2.435437,1.405953, + 0.472283,2.435437,1.405953, 0.47856,2.4,1.42464, 0.69444,2.4,1.33476, + 0.89088,2.4,1.21392, 0.879195,2.435437,1.197997, 0.685331,2.435437,1.317252, + 0.685331,2.435437,1.317252, 0.69444,2.4,1.33476, 0.89088,2.4,1.21392, + 1.065,2.4,1.065, 1.051031,2.435437,1.051031, 0.879195,2.435437,1.197997, + 0.879195,2.435437,1.197997, 0.89088,2.4,1.21392, 1.065,2.4,1.065, + 1.21392,2.4,0.89088, 1.197997,2.435437,0.879195, 1.051031,2.435437,1.051031, + 1.051031,2.435437,1.051031, 1.065,2.4,1.065, 1.21392,2.4,0.89088, + 1.33476,2.4,0.69444, 1.317252,2.435437,0.685331, 1.197997,2.435437,0.879195, + 1.197997,2.435437,0.879195, 1.21392,2.4,0.89088, 1.33476,2.4,0.69444, + 1.42464,2.4,0.47856, 1.405953,2.435437,0.472283, 1.317252,2.435437,0.685331, + 1.317252,2.435437,0.685331, 1.33476,2.4,0.69444, 1.42464,2.4,0.47856, + 1.48068,2.4,0.24612, 1.461258,2.435437,0.242892, 1.405953,2.435437,0.472283, + 1.405953,2.435437,0.472283, 1.42464,2.4,0.47856, 1.48068,2.4,0.24612, + 1.5,2.4,0, 1.480325,2.435437,0, 1.461258,2.435437,0.242892, + 1.461258,2.435437,0.242892, 1.48068,2.4,0.24612, 1.5,2.4,0, + 1.554467,2.242575,-0.258385, 1.48068,2.4,-0.24612, 1.5,2.4,0, + 1.5,2.4,0, 1.57475,2.242575,0, 1.554467,2.242575,-0.258385, + 1.495635,2.242575,-0.502408, 1.42464,2.4,-0.47856, 1.48068,2.4,-0.24612, + 1.48068,2.4,-0.24612, 1.554467,2.242575,-0.258385, 1.495635,2.242575,-0.502408, + 1.401276,2.242575,-0.729046, 1.33476,2.4,-0.69444, 1.42464,2.4,-0.47856, + 1.42464,2.4,-0.47856, 1.495635,2.242575,-0.502408, 1.401276,2.242575,-0.729046, + 1.274414,2.242575,-0.935276, 1.21392,2.4,-0.89088, 1.33476,2.4,-0.69444, + 1.33476,2.4,-0.69444, 1.401276,2.242575,-0.729046, 1.274414,2.242575,-0.935276, + 1.118073,2.242575,-1.118073, 1.065,2.4,-1.065, 1.21392,2.4,-0.89088, + 1.21392,2.4,-0.89088, 1.274414,2.242575,-0.935276, 1.118073,2.242575,-1.118073, + 0.935276,2.242575,-1.274414, 0.89088,2.4,-1.21392, 1.065,2.4,-1.065, + 1.065,2.4,-1.065, 1.118073,2.242575,-1.118073, 0.935276,2.242575,-1.274414, + 0.729046,2.242575,-1.401276, 0.69444,2.4,-1.33476, 0.89088,2.4,-1.21392, + 0.89088,2.4,-1.21392, 0.935276,2.242575,-1.274414, 0.729046,2.242575,-1.401276, + 0.502408,2.242575,-1.495635, 0.47856,2.4,-1.42464, 0.69444,2.4,-1.33476, + 0.69444,2.4,-1.33476, 0.729046,2.242575,-1.401276, 0.502408,2.242575,-1.495635, + 0.258385,2.242575,-1.554467, 0.24612,2.4,-1.48068, 0.47856,2.4,-1.42464, + 0.47856,2.4,-1.42464, 0.502408,2.242575,-1.495635, 0.258385,2.242575,-1.554467, + 0,2.242575,-1.57475, 0,2.4,-1.5, 0.24612,2.4,-1.48068, + 0.24612,2.4,-1.48068, 0.258385,2.242575,-1.554467, 0,2.242575,-1.57475, + 1.626774,2.0856,-0.270404, 1.554467,2.242575,-0.258385, 1.57475,2.242575,0, + 1.57475,2.242575,0, 1.648,2.0856,0, 1.626774,2.0856,-0.270404, + 1.565204,2.0856,-0.525778, 1.495635,2.242575,-0.502408, 1.554467,2.242575,-0.258385, + 1.554467,2.242575,-0.258385, 1.626774,2.0856,-0.270404, 1.565204,2.0856,-0.525778, + 1.466456,2.0856,-0.762958, 1.401276,2.242575,-0.729046, 1.495635,2.242575,-0.502408, + 1.495635,2.242575,-0.502408, 1.565204,2.0856,-0.525778, 1.466456,2.0856,-0.762958, + 1.333693,2.0856,-0.97878, 1.274414,2.242575,-0.935276, 1.401276,2.242575,-0.729046, + 1.401276,2.242575,-0.729046, 1.466456,2.0856,-0.762958, 1.333693,2.0856,-0.97878, + 1.17008,2.0856,-1.17008, 1.118073,2.242575,-1.118073, 1.274414,2.242575,-0.935276, + 1.274414,2.242575,-0.935276, 1.333693,2.0856,-0.97878, 1.17008,2.0856,-1.17008, + 0.97878,2.0856,-1.333693, 0.935276,2.242575,-1.274414, 1.118073,2.242575,-1.118073, + 1.118073,2.242575,-1.118073, 1.17008,2.0856,-1.17008, 0.97878,2.0856,-1.333693, + 0.762958,2.0856,-1.466456, 0.729046,2.242575,-1.401276, 0.935276,2.242575,-1.274414, + 0.935276,2.242575,-1.274414, 0.97878,2.0856,-1.333693, 0.762958,2.0856,-1.466456, + 0.525778,2.0856,-1.565204, 0.502408,2.242575,-1.495635, 0.729046,2.242575,-1.401276, + 0.729046,2.242575,-1.401276, 0.762958,2.0856,-1.466456, 0.525778,2.0856,-1.565204, + 0.270404,2.0856,-1.626774, 0.258385,2.242575,-1.554467, 0.502408,2.242575,-1.495635, + 0.502408,2.242575,-1.495635, 0.525778,2.0856,-1.565204, 0.270404,2.0856,-1.626774, + 0,2.0856,-1.648, 0,2.242575,-1.57475, 0.258385,2.242575,-1.554467, + 0.258385,2.242575,-1.554467, 0.270404,2.0856,-1.626774, 0,2.0856,-1.648, + 1.696119,1.929525,-0.28193, 1.626774,2.0856,-0.270404, 1.648,2.0856,0, + 1.648,2.0856,0, 1.71825,1.929525,0, 1.696119,1.929525,-0.28193, + 1.631925,1.929525,-0.54819, 1.565204,2.0856,-0.525778, 1.626774,2.0856,-0.270404, + 1.626774,2.0856,-0.270404, 1.696119,1.929525,-0.28193, 1.631925,1.929525,-0.54819, + 1.528968,1.929525,-0.795481, 1.466456,2.0856,-0.762958, 1.565204,2.0856,-0.525778, + 1.565204,2.0856,-0.525778, 1.631925,1.929525,-0.54819, 1.528968,1.929525,-0.795481, + 1.390545,1.929525,-1.020503, 1.333693,2.0856,-0.97878, 1.466456,2.0856,-0.762958, + 1.466456,2.0856,-0.762958, 1.528968,1.929525,-0.795481, 1.390545,1.929525,-1.020503, + 1.219958,1.929525,-1.219958, 1.17008,2.0856,-1.17008, 1.333693,2.0856,-0.97878, + 1.333693,2.0856,-0.97878, 1.390545,1.929525,-1.020503, 1.219958,1.929525,-1.219958, + 1.020503,1.929525,-1.390545, 0.97878,2.0856,-1.333693, 1.17008,2.0856,-1.17008, + 1.17008,2.0856,-1.17008, 1.219958,1.929525,-1.219958, 1.020503,1.929525,-1.390545, + 0.795481,1.929525,-1.528968, 0.762958,2.0856,-1.466456, 0.97878,2.0856,-1.333693, + 0.97878,2.0856,-1.333693, 1.020503,1.929525,-1.390545, 0.795481,1.929525,-1.528968, + 0.54819,1.929525,-1.631925, 0.525778,2.0856,-1.565204, 0.762958,2.0856,-1.466456, + 0.762958,2.0856,-1.466456, 0.795481,1.929525,-1.528968, 0.54819,1.929525,-1.631925, + 0.28193,1.929525,-1.696119, 0.270404,2.0856,-1.626774, 0.525778,2.0856,-1.565204, + 0.525778,2.0856,-1.565204, 0.54819,1.929525,-1.631925, 0.28193,1.929525,-1.696119, + 0,1.929525,-1.71825, 0,2.0856,-1.648, 0.270404,2.0856,-1.626774, + 0.270404,2.0856,-1.626774, 0.28193,1.929525,-1.696119, 0,1.929525,-1.71825, + 1.761022,1.7748,-0.292719, 1.696119,1.929525,-0.28193, 1.71825,1.929525,0, + 1.71825,1.929525,0, 1.784,1.7748,0, 1.761022,1.7748,-0.292719, + 1.694372,1.7748,-0.569167, 1.631925,1.929525,-0.54819, 1.696119,1.929525,-0.28193, + 1.696119,1.929525,-0.28193, 1.761022,1.7748,-0.292719, 1.694372,1.7748,-0.569167, + 1.587475,1.7748,-0.825921, 1.528968,1.929525,-0.795481, 1.631925,1.929525,-0.54819, + 1.631925,1.929525,-0.54819, 1.694372,1.7748,-0.569167, 1.587475,1.7748,-0.825921, + 1.443756,1.7748,-1.059553, 1.390545,1.929525,-1.020503, 1.528968,1.929525,-0.795481, + 1.528968,1.929525,-0.795481, 1.587475,1.7748,-0.825921, 1.443756,1.7748,-1.059553, + 1.26664,1.7748,-1.26664, 1.219958,1.929525,-1.219958, 1.390545,1.929525,-1.020503, + 1.390545,1.929525,-1.020503, 1.443756,1.7748,-1.059553, 1.26664,1.7748,-1.26664, + 1.059553,1.7748,-1.443756, 1.020503,1.929525,-1.390545, 1.219958,1.929525,-1.219958, + 1.219958,1.929525,-1.219958, 1.26664,1.7748,-1.26664, 1.059553,1.7748,-1.443756, + 0.825921,1.7748,-1.587475, 0.795481,1.929525,-1.528968, 1.020503,1.929525,-1.390545, + 1.020503,1.929525,-1.390545, 1.059553,1.7748,-1.443756, 0.825921,1.7748,-1.587475, + 0.569167,1.7748,-1.694372, 0.54819,1.929525,-1.631925, 0.795481,1.929525,-1.528968, + 0.795481,1.929525,-1.528968, 0.825921,1.7748,-1.587475, 0.569167,1.7748,-1.694372, + 0.292719,1.7748,-1.761022, 0.28193,1.929525,-1.696119, 0.54819,1.929525,-1.631925, + 0.54819,1.929525,-1.631925, 0.569167,1.7748,-1.694372, 0.292719,1.7748,-1.761022, + 0,1.7748,-1.784, 0,1.929525,-1.71825, 0.28193,1.929525,-1.696119, + 0.28193,1.929525,-1.696119, 0.292719,1.7748,-1.761022, 0,1.7748,-1.784, + 1.820003,1.621875,-0.302523, 1.761022,1.7748,-0.292719, 1.784,1.7748,0, + 1.784,1.7748,0, 1.84375,1.621875,0, 1.820003,1.621875,-0.302523, + 1.75112,1.621875,-0.58823, 1.694372,1.7748,-0.569167, 1.761022,1.7748,-0.292719, + 1.761022,1.7748,-0.292719, 1.820003,1.621875,-0.302523, 1.75112,1.621875,-0.58823, + 1.640643,1.621875,-0.853583, 1.587475,1.7748,-0.825921, 1.694372,1.7748,-0.569167, + 1.694372,1.7748,-0.569167, 1.75112,1.621875,-0.58823, 1.640643,1.621875,-0.853583, + 1.49211,1.621875,-1.09504, 1.443756,1.7748,-1.059553, 1.587475,1.7748,-0.825921, + 1.587475,1.7748,-0.825921, 1.640643,1.621875,-0.853583, 1.49211,1.621875,-1.09504, + 1.309063,1.621875,-1.309063, 1.26664,1.7748,-1.26664, 1.443756,1.7748,-1.059553, + 1.443756,1.7748,-1.059553, 1.49211,1.621875,-1.09504, 1.309063,1.621875,-1.309063, + 1.09504,1.621875,-1.49211, 1.059553,1.7748,-1.443756, 1.26664,1.7748,-1.26664, + 1.26664,1.7748,-1.26664, 1.309063,1.621875,-1.309063, 1.09504,1.621875,-1.49211, + 0.853583,1.621875,-1.640643, 0.825921,1.7748,-1.587475, 1.059553,1.7748,-1.443756, + 1.059553,1.7748,-1.443756, 1.09504,1.621875,-1.49211, 0.853583,1.621875,-1.640643, + 0.58823,1.621875,-1.75112, 0.569167,1.7748,-1.694372, 0.825921,1.7748,-1.587475, + 0.825921,1.7748,-1.587475, 0.853583,1.621875,-1.640643, 0.58823,1.621875,-1.75112, + 0.302522,1.621875,-1.820003, 0.292719,1.7748,-1.761022, 0.569167,1.7748,-1.694372, + 0.569167,1.7748,-1.694372, 0.58823,1.621875,-1.75112, 0.302522,1.621875,-1.820003, + 0,1.621875,-1.84375, 0,1.7748,-1.784, 0.292719,1.7748,-1.761022, + 0.292719,1.7748,-1.761022, 0.302522,1.621875,-1.820003, 0,1.621875,-1.84375, + 1.87158,1.4712,-0.311096, 1.820003,1.621875,-0.302523, 1.84375,1.621875,0, + 1.84375,1.621875,0, 1.896,1.4712,0, 1.87158,1.4712,-0.311096, + 1.800745,1.4712,-0.6049, 1.75112,1.621875,-0.58823, 1.820003,1.621875,-0.302523, + 1.820003,1.621875,-0.302523, 1.87158,1.4712,-0.311096, 1.800745,1.4712,-0.6049, + 1.687137,1.4712,-0.877772, 1.640643,1.621875,-0.853583, 1.75112,1.621875,-0.58823, + 1.75112,1.621875,-0.58823, 1.800745,1.4712,-0.6049, 1.687137,1.4712,-0.877772, + 1.534395,1.4712,-1.126072, 1.49211,1.621875,-1.09504, 1.640643,1.621875,-0.853583, + 1.640643,1.621875,-0.853583, 1.687137,1.4712,-0.877772, 1.534395,1.4712,-1.126072, + 1.34616,1.4712,-1.34616, 1.309063,1.621875,-1.309063, 1.49211,1.621875,-1.09504, + 1.49211,1.621875,-1.09504, 1.534395,1.4712,-1.126072, 1.34616,1.4712,-1.34616, + 1.126072,1.4712,-1.534395, 1.09504,1.621875,-1.49211, 1.309063,1.621875,-1.309063, + 1.309063,1.621875,-1.309063, 1.34616,1.4712,-1.34616, 1.126072,1.4712,-1.534395, + 0.877772,1.4712,-1.687137, 0.853583,1.621875,-1.640643, 1.09504,1.621875,-1.49211, + 1.09504,1.621875,-1.49211, 1.126072,1.4712,-1.534395, 0.877772,1.4712,-1.687137, + 0.6049,1.4712,-1.800745, 0.58823,1.621875,-1.75112, 0.853583,1.621875,-1.640643, + 0.853583,1.621875,-1.640643, 0.877772,1.4712,-1.687137, 0.6049,1.4712,-1.800745, + 0.311096,1.4712,-1.87158, 0.302522,1.621875,-1.820003, 0.58823,1.621875,-1.75112, + 0.58823,1.621875,-1.75112, 0.6049,1.4712,-1.800745, 0.311096,1.4712,-1.87158, + 0,1.4712,-1.896, 0,1.621875,-1.84375, 0.302522,1.621875,-1.820003, + 0.302522,1.621875,-1.820003, 0.311096,1.4712,-1.87158, 0,1.4712,-1.896, + 1.914272,1.323225,-0.318192, 1.87158,1.4712,-0.311096, 1.896,1.4712,0, + 1.896,1.4712,0, 1.93925,1.323225,0, 1.914272,1.323225,-0.318192, + 1.841822,1.323225,-0.618698, 1.800745,1.4712,-0.6049, 1.87158,1.4712,-0.311096, + 1.87158,1.4712,-0.311096, 1.914272,1.323225,-0.318192, 1.841822,1.323225,-0.618698, + 1.725622,1.323225,-0.897795, 1.687137,1.4712,-0.877772, 1.800745,1.4712,-0.6049, + 1.800745,1.4712,-0.6049, 1.841822,1.323225,-0.618698, 1.725622,1.323225,-0.897795, + 1.569396,1.323225,-1.151759, 1.534395,1.4712,-1.126072, 1.687137,1.4712,-0.877772, + 1.687137,1.4712,-0.877772, 1.725622,1.323225,-0.897795, 1.569396,1.323225,-1.151759, + 1.376867,1.323225,-1.376868, 1.34616,1.4712,-1.34616, 1.534395,1.4712,-1.126072, + 1.534395,1.4712,-1.126072, 1.569396,1.323225,-1.151759, 1.376867,1.323225,-1.376868, + 1.151759,1.323225,-1.569396, 1.126072,1.4712,-1.534395, 1.34616,1.4712,-1.34616, + 1.34616,1.4712,-1.34616, 1.376867,1.323225,-1.376868, 1.151759,1.323225,-1.569396, + 0.897795,1.323225,-1.725622, 0.877772,1.4712,-1.687137, 1.126072,1.4712,-1.534395, + 1.126072,1.4712,-1.534395, 1.151759,1.323225,-1.569396, 0.897795,1.323225,-1.725622, + 0.618698,1.323225,-1.841822, 0.6049,1.4712,-1.800745, 0.877772,1.4712,-1.687137, + 0.877772,1.4712,-1.687137, 0.897795,1.323225,-1.725622, 0.618698,1.323225,-1.841822, + 0.318192,1.323225,-1.914272, 0.311096,1.4712,-1.87158, 0.6049,1.4712,-1.800745, + 0.6049,1.4712,-1.800745, 0.618698,1.323225,-1.841822, 0.318192,1.323225,-1.914272, + 0,1.323225,-1.93925, 0,1.4712,-1.896, 0.311096,1.4712,-1.87158, + 0.311096,1.4712,-1.87158, 0.318192,1.323225,-1.914272, 0,1.323225,-1.93925, + 1.946601,1.1784,-0.323566, 1.914272,1.323225,-0.318192, 1.93925,1.323225,0, + 1.93925,1.323225,0, 1.972,1.1784,0, 1.946601,1.1784,-0.323566, + 1.872927,1.1784,-0.629147, 1.841822,1.323225,-0.618698, 1.914272,1.323225,-0.318192, + 1.914272,1.323225,-0.318192, 1.946601,1.1784,-0.323566, 1.872927,1.1784,-0.629147, + 1.754764,1.1784,-0.912957, 1.725622,1.323225,-0.897795, 1.841822,1.323225,-0.618698, + 1.841822,1.323225,-0.618698, 1.872927,1.1784,-0.629147, 1.754764,1.1784,-0.912957, + 1.5959,1.1784,-1.17121, 1.569396,1.323225,-1.151759, 1.725622,1.323225,-0.897795, + 1.725622,1.323225,-0.897795, 1.754764,1.1784,-0.912957, 1.5959,1.1784,-1.17121, + 1.40012,1.1784,-1.40012, 1.376867,1.323225,-1.376868, 1.569396,1.323225,-1.151759, + 1.569396,1.323225,-1.151759, 1.5959,1.1784,-1.17121, 1.40012,1.1784,-1.40012, + 1.17121,1.1784,-1.5959, 1.151759,1.323225,-1.569396, 1.376867,1.323225,-1.376868, + 1.376867,1.323225,-1.376868, 1.40012,1.1784,-1.40012, 1.17121,1.1784,-1.5959, + 0.912957,1.1784,-1.754764, 0.897795,1.323225,-1.725622, 1.151759,1.323225,-1.569396, + 1.151759,1.323225,-1.569396, 1.17121,1.1784,-1.5959, 0.912957,1.1784,-1.754764, + 0.629147,1.1784,-1.872927, 0.618698,1.323225,-1.841822, 0.897795,1.323225,-1.725622, + 0.897795,1.323225,-1.725622, 0.912957,1.1784,-1.754764, 0.629147,1.1784,-1.872927, + 0.323566,1.1784,-1.946601, 0.318192,1.323225,-1.914272, 0.618698,1.323225,-1.841822, + 0.618698,1.323225,-1.841822, 0.629147,1.1784,-1.872927, 0.323566,1.1784,-1.946601, + 0,1.1784,-1.972, 0,1.323225,-1.93925, 0.318192,1.323225,-1.914272, + 0.318192,1.323225,-1.914272, 0.323566,1.1784,-1.946601, 0,1.1784,-1.972, + 1.967083,1.037175,-0.32697, 1.946601,1.1784,-0.323566, 1.972,1.1784,0, + 1.972,1.1784,0, 1.99275,1.037175,0, 1.967083,1.037175,-0.32697, + 1.892634,1.037175,-0.635767, 1.872927,1.1784,-0.629147, 1.946601,1.1784,-0.323566, + 1.946601,1.1784,-0.323566, 1.967083,1.037175,-0.32697, 1.892634,1.037175,-0.635767, + 1.773229,1.037175,-0.922564, 1.754764,1.1784,-0.912957, 1.872927,1.1784,-0.629147, + 1.872927,1.1784,-0.629147, 1.892634,1.037175,-0.635767, 1.773229,1.037175,-0.922564, + 1.612693,1.037175,-1.183534, 1.5959,1.1784,-1.17121, 1.754764,1.1784,-0.912957, + 1.754764,1.1784,-0.912957, 1.773229,1.037175,-0.922564, 1.612693,1.037175,-1.183534, + 1.414853,1.037175,-1.414853, 1.40012,1.1784,-1.40012, 1.5959,1.1784,-1.17121, + 1.5959,1.1784,-1.17121, 1.612693,1.037175,-1.183534, 1.414853,1.037175,-1.414853, + 1.183534,1.037175,-1.612693, 1.17121,1.1784,-1.5959, 1.40012,1.1784,-1.40012, + 1.40012,1.1784,-1.40012, 1.414853,1.037175,-1.414853, 1.183534,1.037175,-1.612693, + 0.922564,1.037175,-1.773229, 0.912957,1.1784,-1.754764, 1.17121,1.1784,-1.5959, + 1.17121,1.1784,-1.5959, 1.183534,1.037175,-1.612693, 0.922564,1.037175,-1.773229, + 0.635767,1.037175,-1.892634, 0.629147,1.1784,-1.872927, 0.912957,1.1784,-1.754764, + 0.912957,1.1784,-1.754764, 0.922564,1.037175,-1.773229, 0.635767,1.037175,-1.892634, + 0.32697,1.037175,-1.967083, 0.323566,1.1784,-1.946601, 0.629147,1.1784,-1.872927, + 0.629147,1.1784,-1.872927, 0.635767,1.037175,-1.892634, 0.32697,1.037175,-1.967083, + 0,1.037175,-1.99275, 0,1.1784,-1.972, 0.323566,1.1784,-1.946601, + 0.323566,1.1784,-1.946601, 0.32697,1.037175,-1.967083, 0,1.037175,-1.99275, + 1.97424,0.9,-0.32816, 1.967083,1.037175,-0.32697, 1.99275,1.037175,0, + 1.99275,1.037175,0, 2,0.9,0, 1.97424,0.9,-0.32816, + 1.89952,0.9,-0.63808, 1.892634,1.037175,-0.635767, 1.967083,1.037175,-0.32697, + 1.967083,1.037175,-0.32697, 1.97424,0.9,-0.32816, 1.89952,0.9,-0.63808, + 1.77968,0.9,-0.92592, 1.773229,1.037175,-0.922564, 1.892634,1.037175,-0.635767, + 1.892634,1.037175,-0.635767, 1.89952,0.9,-0.63808, 1.77968,0.9,-0.92592, + 1.61856,0.9,-1.18784, 1.612693,1.037175,-1.183534, 1.773229,1.037175,-0.922564, + 1.773229,1.037175,-0.922564, 1.77968,0.9,-0.92592, 1.61856,0.9,-1.18784, + 1.42,0.9,-1.42, 1.414853,1.037175,-1.414853, 1.612693,1.037175,-1.183534, + 1.612693,1.037175,-1.183534, 1.61856,0.9,-1.18784, 1.42,0.9,-1.42, + 1.18784,0.9,-1.61856, 1.183534,1.037175,-1.612693, 1.414853,1.037175,-1.414853, + 1.414853,1.037175,-1.414853, 1.42,0.9,-1.42, 1.18784,0.9,-1.61856, + 0.92592,0.9,-1.77968, 0.922564,1.037175,-1.773229, 1.183534,1.037175,-1.612693, + 1.183534,1.037175,-1.612693, 1.18784,0.9,-1.61856, 0.92592,0.9,-1.77968, + 0.63808,0.9,-1.89952, 0.635767,1.037175,-1.892634, 0.922564,1.037175,-1.773229, + 0.922564,1.037175,-1.773229, 0.92592,0.9,-1.77968, 0.63808,0.9,-1.89952, + 0.32816,0.9,-1.97424, 0.32697,1.037175,-1.967083, 0.635767,1.037175,-1.892634, + 0.635767,1.037175,-1.892634, 0.63808,0.9,-1.89952, 0.32816,0.9,-1.97424, + 0,0.9,-2, 0,1.037175,-1.99275, 0.32697,1.037175,-1.967083, + 0.32697,1.037175,-1.967083, 0.32816,0.9,-1.97424, 0,0.9,-2, + -0.258385,2.242575,-1.554467, -0.24612,2.4,-1.48068, 0,2.4,-1.5, + 0,2.4,-1.5, 0,2.242575,-1.57475, -0.258385,2.242575,-1.554467, + -0.502408,2.242575,-1.495635, -0.47856,2.4,-1.42464, -0.24612,2.4,-1.48068, + -0.24612,2.4,-1.48068, -0.258385,2.242575,-1.554467, -0.502408,2.242575,-1.495635, + -0.729046,2.242575,-1.401276, -0.69444,2.4,-1.33476, -0.47856,2.4,-1.42464, + -0.47856,2.4,-1.42464, -0.502408,2.242575,-1.495635, -0.729046,2.242575,-1.401276, + -0.935276,2.242575,-1.274414, -0.89088,2.4,-1.21392, -0.69444,2.4,-1.33476, + -0.69444,2.4,-1.33476, -0.729046,2.242575,-1.401276, -0.935276,2.242575,-1.274414, + -1.118073,2.242575,-1.118073, -1.065,2.4,-1.065, -0.89088,2.4,-1.21392, + -0.89088,2.4,-1.21392, -0.935276,2.242575,-1.274414, -1.118073,2.242575,-1.118073, + -1.274414,2.242575,-0.935276, -1.21392,2.4,-0.89088, -1.065,2.4,-1.065, + -1.065,2.4,-1.065, -1.118073,2.242575,-1.118073, -1.274414,2.242575,-0.935276, + -1.401276,2.242575,-0.729046, -1.33476,2.4,-0.69444, -1.21392,2.4,-0.89088, + -1.21392,2.4,-0.89088, -1.274414,2.242575,-0.935276, -1.401276,2.242575,-0.729046, + -1.495635,2.242575,-0.502408, -1.42464,2.4,-0.47856, -1.33476,2.4,-0.69444, + -1.33476,2.4,-0.69444, -1.401276,2.242575,-0.729046, -1.495635,2.242575,-0.502408, + -1.554467,2.242575,-0.258385, -1.48068,2.4,-0.24612, -1.42464,2.4,-0.47856, + -1.42464,2.4,-0.47856, -1.495635,2.242575,-0.502408, -1.554467,2.242575,-0.258385, + -1.57475,2.242575,0, -1.5,2.4,0, -1.48068,2.4,-0.24612, + -1.48068,2.4,-0.24612, -1.554467,2.242575,-0.258385, -1.57475,2.242575,0, + -0.270404,2.0856,-1.626774, -0.258385,2.242575,-1.554467, 0,2.242575,-1.57475, + 0,2.242575,-1.57475, 0,2.0856,-1.648, -0.270404,2.0856,-1.626774, + -0.525778,2.0856,-1.565204, -0.502408,2.242575,-1.495635, -0.258385,2.242575,-1.554467, + -0.258385,2.242575,-1.554467, -0.270404,2.0856,-1.626774, -0.525778,2.0856,-1.565204, + -0.762958,2.0856,-1.466456, -0.729046,2.242575,-1.401276, -0.502408,2.242575,-1.495635, + -0.502408,2.242575,-1.495635, -0.525778,2.0856,-1.565204, -0.762958,2.0856,-1.466456, + -0.97878,2.0856,-1.333693, -0.935276,2.242575,-1.274414, -0.729046,2.242575,-1.401276, + -0.729046,2.242575,-1.401276, -0.762958,2.0856,-1.466456, -0.97878,2.0856,-1.333693, + -1.17008,2.0856,-1.17008, -1.118073,2.242575,-1.118073, -0.935276,2.242575,-1.274414, + -0.935276,2.242575,-1.274414, -0.97878,2.0856,-1.333693, -1.17008,2.0856,-1.17008, + -1.333693,2.0856,-0.97878, -1.274414,2.242575,-0.935276, -1.118073,2.242575,-1.118073, + -1.118073,2.242575,-1.118073, -1.17008,2.0856,-1.17008, -1.333693,2.0856,-0.97878, + -1.466456,2.0856,-0.762958, -1.401276,2.242575,-0.729046, -1.274414,2.242575,-0.935276, + -1.274414,2.242575,-0.935276, -1.333693,2.0856,-0.97878, -1.466456,2.0856,-0.762958, + -1.565204,2.0856,-0.525778, -1.495635,2.242575,-0.502408, -1.401276,2.242575,-0.729046, + -1.401276,2.242575,-0.729046, -1.466456,2.0856,-0.762958, -1.565204,2.0856,-0.525778, + -1.626774,2.0856,-0.270404, -1.554467,2.242575,-0.258385, -1.495635,2.242575,-0.502408, + -1.495635,2.242575,-0.502408, -1.565204,2.0856,-0.525778, -1.626774,2.0856,-0.270404, + -1.648,2.0856,0, -1.57475,2.242575,0, -1.554467,2.242575,-0.258385, + -1.554467,2.242575,-0.258385, -1.626774,2.0856,-0.270404, -1.648,2.0856,0, + -0.28193,1.929525,-1.696119, -0.270404,2.0856,-1.626774, 0,2.0856,-1.648, + 0,2.0856,-1.648, 0,1.929525,-1.71825, -0.28193,1.929525,-1.696119, + -0.54819,1.929525,-1.631925, -0.525778,2.0856,-1.565204, -0.270404,2.0856,-1.626774, + -0.270404,2.0856,-1.626774, -0.28193,1.929525,-1.696119, -0.54819,1.929525,-1.631925, + -0.795481,1.929525,-1.528968, -0.762958,2.0856,-1.466456, -0.525778,2.0856,-1.565204, + -0.525778,2.0856,-1.565204, -0.54819,1.929525,-1.631925, -0.795481,1.929525,-1.528968, + -1.020503,1.929525,-1.390545, -0.97878,2.0856,-1.333693, -0.762958,2.0856,-1.466456, + -0.762958,2.0856,-1.466456, -0.795481,1.929525,-1.528968, -1.020503,1.929525,-1.390545, + -1.219958,1.929525,-1.219958, -1.17008,2.0856,-1.17008, -0.97878,2.0856,-1.333693, + -0.97878,2.0856,-1.333693, -1.020503,1.929525,-1.390545, -1.219958,1.929525,-1.219958, + -1.390545,1.929525,-1.020503, -1.333693,2.0856,-0.97878, -1.17008,2.0856,-1.17008, + -1.17008,2.0856,-1.17008, -1.219958,1.929525,-1.219958, -1.390545,1.929525,-1.020503, + -1.528968,1.929525,-0.795481, -1.466456,2.0856,-0.762958, -1.333693,2.0856,-0.97878, + -1.333693,2.0856,-0.97878, -1.390545,1.929525,-1.020503, -1.528968,1.929525,-0.795481, + -1.631925,1.929525,-0.54819, -1.565204,2.0856,-0.525778, -1.466456,2.0856,-0.762958, + -1.466456,2.0856,-0.762958, -1.528968,1.929525,-0.795481, -1.631925,1.929525,-0.54819, + -1.696119,1.929525,-0.28193, -1.626774,2.0856,-0.270404, -1.565204,2.0856,-0.525778, + -1.565204,2.0856,-0.525778, -1.631925,1.929525,-0.54819, -1.696119,1.929525,-0.28193, + -1.71825,1.929525,0, -1.648,2.0856,0, -1.626774,2.0856,-0.270404, + -1.626774,2.0856,-0.270404, -1.696119,1.929525,-0.28193, -1.71825,1.929525,0, + -0.292719,1.7748,-1.761022, -0.28193,1.929525,-1.696119, 0,1.929525,-1.71825, + 0,1.929525,-1.71825, 0,1.7748,-1.784, -0.292719,1.7748,-1.761022, + -0.569167,1.7748,-1.694372, -0.54819,1.929525,-1.631925, -0.28193,1.929525,-1.696119, + -0.28193,1.929525,-1.696119, -0.292719,1.7748,-1.761022, -0.569167,1.7748,-1.694372, + -0.825921,1.7748,-1.587475, -0.795481,1.929525,-1.528968, -0.54819,1.929525,-1.631925, + -0.54819,1.929525,-1.631925, -0.569167,1.7748,-1.694372, -0.825921,1.7748,-1.587475, + -1.059553,1.7748,-1.443756, -1.020503,1.929525,-1.390545, -0.795481,1.929525,-1.528968, + -0.795481,1.929525,-1.528968, -0.825921,1.7748,-1.587475, -1.059553,1.7748,-1.443756, + -1.26664,1.7748,-1.26664, -1.219958,1.929525,-1.219958, -1.020503,1.929525,-1.390545, + -1.020503,1.929525,-1.390545, -1.059553,1.7748,-1.443756, -1.26664,1.7748,-1.26664, + -1.443756,1.7748,-1.059553, -1.390545,1.929525,-1.020503, -1.219958,1.929525,-1.219958, + -1.219958,1.929525,-1.219958, -1.26664,1.7748,-1.26664, -1.443756,1.7748,-1.059553, + -1.587475,1.7748,-0.825921, -1.528968,1.929525,-0.795481, -1.390545,1.929525,-1.020503, + -1.390545,1.929525,-1.020503, -1.443756,1.7748,-1.059553, -1.587475,1.7748,-0.825921, + -1.694372,1.7748,-0.569167, -1.631925,1.929525,-0.54819, -1.528968,1.929525,-0.795481, + -1.528968,1.929525,-0.795481, -1.587475,1.7748,-0.825921, -1.694372,1.7748,-0.569167, + -1.761022,1.7748,-0.292719, -1.696119,1.929525,-0.28193, -1.631925,1.929525,-0.54819, + -1.631925,1.929525,-0.54819, -1.694372,1.7748,-0.569167, -1.761022,1.7748,-0.292719, + -1.784,1.7748,0, -1.71825,1.929525,0, -1.696119,1.929525,-0.28193, + -1.696119,1.929525,-0.28193, -1.761022,1.7748,-0.292719, -1.784,1.7748,0, + -0.302523,1.621875,-1.820003, -0.292719,1.7748,-1.761022, 0,1.7748,-1.784, + 0,1.7748,-1.784, 0,1.621875,-1.84375, -0.302523,1.621875,-1.820003, + -0.58823,1.621875,-1.75112, -0.569167,1.7748,-1.694372, -0.292719,1.7748,-1.761022, + -0.292719,1.7748,-1.761022, -0.302523,1.621875,-1.820003, -0.58823,1.621875,-1.75112, + -0.853583,1.621875,-1.640643, -0.825921,1.7748,-1.587475, -0.569167,1.7748,-1.694372, + -0.569167,1.7748,-1.694372, -0.58823,1.621875,-1.75112, -0.853583,1.621875,-1.640643, + -1.09504,1.621875,-1.49211, -1.059553,1.7748,-1.443756, -0.825921,1.7748,-1.587475, + -0.825921,1.7748,-1.587475, -0.853583,1.621875,-1.640643, -1.09504,1.621875,-1.49211, + -1.309063,1.621875,-1.309063, -1.26664,1.7748,-1.26664, -1.059553,1.7748,-1.443756, + -1.059553,1.7748,-1.443756, -1.09504,1.621875,-1.49211, -1.309063,1.621875,-1.309063, + -1.49211,1.621875,-1.09504, -1.443756,1.7748,-1.059553, -1.26664,1.7748,-1.26664, + -1.26664,1.7748,-1.26664, -1.309063,1.621875,-1.309063, -1.49211,1.621875,-1.09504, + -1.640643,1.621875,-0.853583, -1.587475,1.7748,-0.825921, -1.443756,1.7748,-1.059553, + -1.443756,1.7748,-1.059553, -1.49211,1.621875,-1.09504, -1.640643,1.621875,-0.853583, + -1.75112,1.621875,-0.58823, -1.694372,1.7748,-0.569167, -1.587475,1.7748,-0.825921, + -1.587475,1.7748,-0.825921, -1.640643,1.621875,-0.853583, -1.75112,1.621875,-0.58823, + -1.820003,1.621875,-0.302522, -1.761022,1.7748,-0.292719, -1.694372,1.7748,-0.569167, + -1.694372,1.7748,-0.569167, -1.75112,1.621875,-0.58823, -1.820003,1.621875,-0.302522, + -1.84375,1.621875,0, -1.784,1.7748,0, -1.761022,1.7748,-0.292719, + -1.761022,1.7748,-0.292719, -1.820003,1.621875,-0.302522, -1.84375,1.621875,0, + -0.311096,1.4712,-1.87158, -0.302523,1.621875,-1.820003, 0,1.621875,-1.84375, + 0,1.621875,-1.84375, 0,1.4712,-1.896, -0.311096,1.4712,-1.87158, + -0.6049,1.4712,-1.800745, -0.58823,1.621875,-1.75112, -0.302523,1.621875,-1.820003, + -0.302523,1.621875,-1.820003, -0.311096,1.4712,-1.87158, -0.6049,1.4712,-1.800745, + -0.877772,1.4712,-1.687137, -0.853583,1.621875,-1.640643, -0.58823,1.621875,-1.75112, + -0.58823,1.621875,-1.75112, -0.6049,1.4712,-1.800745, -0.877772,1.4712,-1.687137, + -1.126072,1.4712,-1.534395, -1.09504,1.621875,-1.49211, -0.853583,1.621875,-1.640643, + -0.853583,1.621875,-1.640643, -0.877772,1.4712,-1.687137, -1.126072,1.4712,-1.534395, + -1.34616,1.4712,-1.34616, -1.309063,1.621875,-1.309063, -1.09504,1.621875,-1.49211, + -1.09504,1.621875,-1.49211, -1.126072,1.4712,-1.534395, -1.34616,1.4712,-1.34616, + -1.534395,1.4712,-1.126072, -1.49211,1.621875,-1.09504, -1.309063,1.621875,-1.309063, + -1.309063,1.621875,-1.309063, -1.34616,1.4712,-1.34616, -1.534395,1.4712,-1.126072, + -1.687137,1.4712,-0.877772, -1.640643,1.621875,-0.853583, -1.49211,1.621875,-1.09504, + -1.49211,1.621875,-1.09504, -1.534395,1.4712,-1.126072, -1.687137,1.4712,-0.877772, + -1.800745,1.4712,-0.6049, -1.75112,1.621875,-0.58823, -1.640643,1.621875,-0.853583, + -1.640643,1.621875,-0.853583, -1.687137,1.4712,-0.877772, -1.800745,1.4712,-0.6049, + -1.87158,1.4712,-0.311096, -1.820003,1.621875,-0.302522, -1.75112,1.621875,-0.58823, + -1.75112,1.621875,-0.58823, -1.800745,1.4712,-0.6049, -1.87158,1.4712,-0.311096, + -1.896,1.4712,0, -1.84375,1.621875,0, -1.820003,1.621875,-0.302522, + -1.820003,1.621875,-0.302522, -1.87158,1.4712,-0.311096, -1.896,1.4712,0, + -0.318192,1.323225,-1.914272, -0.311096,1.4712,-1.87158, 0,1.4712,-1.896, + 0,1.4712,-1.896, 0,1.323225,-1.93925, -0.318192,1.323225,-1.914272, + -0.618698,1.323225,-1.841822, -0.6049,1.4712,-1.800745, -0.311096,1.4712,-1.87158, + -0.311096,1.4712,-1.87158, -0.318192,1.323225,-1.914272, -0.618698,1.323225,-1.841822, + -0.897795,1.323225,-1.725622, -0.877772,1.4712,-1.687137, -0.6049,1.4712,-1.800745, + -0.6049,1.4712,-1.800745, -0.618698,1.323225,-1.841822, -0.897795,1.323225,-1.725622, + -1.151759,1.323225,-1.569396, -1.126072,1.4712,-1.534395, -0.877772,1.4712,-1.687137, + -0.877772,1.4712,-1.687137, -0.897795,1.323225,-1.725622, -1.151759,1.323225,-1.569396, + -1.376868,1.323225,-1.376867, -1.34616,1.4712,-1.34616, -1.126072,1.4712,-1.534395, + -1.126072,1.4712,-1.534395, -1.151759,1.323225,-1.569396, -1.376868,1.323225,-1.376867, + -1.569396,1.323225,-1.151759, -1.534395,1.4712,-1.126072, -1.34616,1.4712,-1.34616, + -1.34616,1.4712,-1.34616, -1.376868,1.323225,-1.376867, -1.569396,1.323225,-1.151759, + -1.725622,1.323225,-0.897795, -1.687137,1.4712,-0.877772, -1.534395,1.4712,-1.126072, + -1.534395,1.4712,-1.126072, -1.569396,1.323225,-1.151759, -1.725622,1.323225,-0.897795, + -1.841822,1.323225,-0.618698, -1.800745,1.4712,-0.6049, -1.687137,1.4712,-0.877772, + -1.687137,1.4712,-0.877772, -1.725622,1.323225,-0.897795, -1.841822,1.323225,-0.618698, + -1.914272,1.323225,-0.318192, -1.87158,1.4712,-0.311096, -1.800745,1.4712,-0.6049, + -1.800745,1.4712,-0.6049, -1.841822,1.323225,-0.618698, -1.914272,1.323225,-0.318192, + -1.93925,1.323225,0, -1.896,1.4712,0, -1.87158,1.4712,-0.311096, + -1.87158,1.4712,-0.311096, -1.914272,1.323225,-0.318192, -1.93925,1.323225,0, + -0.323566,1.1784,-1.946601, -0.318192,1.323225,-1.914272, 0,1.323225,-1.93925, + 0,1.323225,-1.93925, 0,1.1784,-1.972, -0.323566,1.1784,-1.946601, + -0.629147,1.1784,-1.872927, -0.618698,1.323225,-1.841822, -0.318192,1.323225,-1.914272, + -0.318192,1.323225,-1.914272, -0.323566,1.1784,-1.946601, -0.629147,1.1784,-1.872927, + -0.912957,1.1784,-1.754764, -0.897795,1.323225,-1.725622, -0.618698,1.323225,-1.841822, + -0.618698,1.323225,-1.841822, -0.629147,1.1784,-1.872927, -0.912957,1.1784,-1.754764, + -1.17121,1.1784,-1.5959, -1.151759,1.323225,-1.569396, -0.897795,1.323225,-1.725622, + -0.897795,1.323225,-1.725622, -0.912957,1.1784,-1.754764, -1.17121,1.1784,-1.5959, + -1.40012,1.1784,-1.40012, -1.376868,1.323225,-1.376867, -1.151759,1.323225,-1.569396, + -1.151759,1.323225,-1.569396, -1.17121,1.1784,-1.5959, -1.40012,1.1784,-1.40012, + -1.5959,1.1784,-1.17121, -1.569396,1.323225,-1.151759, -1.376868,1.323225,-1.376867, + -1.376868,1.323225,-1.376867, -1.40012,1.1784,-1.40012, -1.5959,1.1784,-1.17121, + -1.754764,1.1784,-0.912957, -1.725622,1.323225,-0.897795, -1.569396,1.323225,-1.151759, + -1.569396,1.323225,-1.151759, -1.5959,1.1784,-1.17121, -1.754764,1.1784,-0.912957, + -1.872927,1.1784,-0.629147, -1.841822,1.323225,-0.618698, -1.725622,1.323225,-0.897795, + -1.725622,1.323225,-0.897795, -1.754764,1.1784,-0.912957, -1.872927,1.1784,-0.629147, + -1.946601,1.1784,-0.323566, -1.914272,1.323225,-0.318192, -1.841822,1.323225,-0.618698, + -1.841822,1.323225,-0.618698, -1.872927,1.1784,-0.629147, -1.946601,1.1784,-0.323566, + -1.972,1.1784,0, -1.93925,1.323225,0, -1.914272,1.323225,-0.318192, + -1.914272,1.323225,-0.318192, -1.946601,1.1784,-0.323566, -1.972,1.1784,0, + -0.32697,1.037175,-1.967083, -0.323566,1.1784,-1.946601, 0,1.1784,-1.972, + 0,1.1784,-1.972, 0,1.037175,-1.99275, -0.32697,1.037175,-1.967083, + -0.635767,1.037175,-1.892634, -0.629147,1.1784,-1.872927, -0.323566,1.1784,-1.946601, + -0.323566,1.1784,-1.946601, -0.32697,1.037175,-1.967083, -0.635767,1.037175,-1.892634, + -0.922564,1.037175,-1.773229, -0.912957,1.1784,-1.754764, -0.629147,1.1784,-1.872927, + -0.629147,1.1784,-1.872927, -0.635767,1.037175,-1.892634, -0.922564,1.037175,-1.773229, + -1.183534,1.037175,-1.612693, -1.17121,1.1784,-1.5959, -0.912957,1.1784,-1.754764, + -0.912957,1.1784,-1.754764, -0.922564,1.037175,-1.773229, -1.183534,1.037175,-1.612693, + -1.414853,1.037175,-1.414853, -1.40012,1.1784,-1.40012, -1.17121,1.1784,-1.5959, + -1.17121,1.1784,-1.5959, -1.183534,1.037175,-1.612693, -1.414853,1.037175,-1.414853, + -1.612693,1.037175,-1.183534, -1.5959,1.1784,-1.17121, -1.40012,1.1784,-1.40012, + -1.40012,1.1784,-1.40012, -1.414853,1.037175,-1.414853, -1.612693,1.037175,-1.183534, + -1.773229,1.037175,-0.922564, -1.754764,1.1784,-0.912957, -1.5959,1.1784,-1.17121, + -1.5959,1.1784,-1.17121, -1.612693,1.037175,-1.183534, -1.773229,1.037175,-0.922564, + -1.892634,1.037175,-0.635767, -1.872927,1.1784,-0.629147, -1.754764,1.1784,-0.912957, + -1.754764,1.1784,-0.912957, -1.773229,1.037175,-0.922564, -1.892634,1.037175,-0.635767, + -1.967083,1.037175,-0.32697, -1.946601,1.1784,-0.323566, -1.872927,1.1784,-0.629147, + -1.872927,1.1784,-0.629147, -1.892634,1.037175,-0.635767, -1.967083,1.037175,-0.32697, + -1.99275,1.037175,0, -1.972,1.1784,0, -1.946601,1.1784,-0.323566, + -1.946601,1.1784,-0.323566, -1.967083,1.037175,-0.32697, -1.99275,1.037175,0, + -0.32816,0.9,-1.97424, -0.32697,1.037175,-1.967083, 0,1.037175,-1.99275, + 0,1.037175,-1.99275, 0,0.9,-2, -0.32816,0.9,-1.97424, + -0.63808,0.9,-1.89952, -0.635767,1.037175,-1.892634, -0.32697,1.037175,-1.967083, + -0.32697,1.037175,-1.967083, -0.32816,0.9,-1.97424, -0.63808,0.9,-1.89952, + -0.92592,0.9,-1.77968, -0.922564,1.037175,-1.773229, -0.635767,1.037175,-1.892634, + -0.635767,1.037175,-1.892634, -0.63808,0.9,-1.89952, -0.92592,0.9,-1.77968, + -1.18784,0.9,-1.61856, -1.183534,1.037175,-1.612693, -0.922564,1.037175,-1.773229, + -0.922564,1.037175,-1.773229, -0.92592,0.9,-1.77968, -1.18784,0.9,-1.61856, + -1.42,0.9,-1.42, -1.414853,1.037175,-1.414853, -1.183534,1.037175,-1.612693, + -1.183534,1.037175,-1.612693, -1.18784,0.9,-1.61856, -1.42,0.9,-1.42, + -1.61856,0.9,-1.18784, -1.612693,1.037175,-1.183534, -1.414853,1.037175,-1.414853, + -1.414853,1.037175,-1.414853, -1.42,0.9,-1.42, -1.61856,0.9,-1.18784, + -1.77968,0.9,-0.92592, -1.773229,1.037175,-0.922564, -1.612693,1.037175,-1.183534, + -1.612693,1.037175,-1.183534, -1.61856,0.9,-1.18784, -1.77968,0.9,-0.92592, + -1.89952,0.9,-0.63808, -1.892634,1.037175,-0.635767, -1.773229,1.037175,-0.922564, + -1.773229,1.037175,-0.922564, -1.77968,0.9,-0.92592, -1.89952,0.9,-0.63808, + -1.97424,0.9,-0.32816, -1.967083,1.037175,-0.32697, -1.892634,1.037175,-0.635767, + -1.892634,1.037175,-0.635767, -1.89952,0.9,-0.63808, -1.97424,0.9,-0.32816, + -2,0.9,0, -1.99275,1.037175,0, -1.967083,1.037175,-0.32697, + -1.967083,1.037175,-0.32697, -1.97424,0.9,-0.32816, -2,0.9,0, + -1.554467,2.242575,0.258385, -1.48068,2.4,0.24612, -1.5,2.4,0, + -1.5,2.4,0, -1.57475,2.242575,0, -1.554467,2.242575,0.258385, + -1.495635,2.242575,0.502408, -1.42464,2.4,0.47856, -1.48068,2.4,0.24612, + -1.48068,2.4,0.24612, -1.554467,2.242575,0.258385, -1.495635,2.242575,0.502408, + -1.401276,2.242575,0.729046, -1.33476,2.4,0.69444, -1.42464,2.4,0.47856, + -1.42464,2.4,0.47856, -1.495635,2.242575,0.502408, -1.401276,2.242575,0.729046, + -1.274414,2.242575,0.935276, -1.21392,2.4,0.89088, -1.33476,2.4,0.69444, + -1.33476,2.4,0.69444, -1.401276,2.242575,0.729046, -1.274414,2.242575,0.935276, + -1.118073,2.242575,1.118073, -1.065,2.4,1.065, -1.21392,2.4,0.89088, + -1.21392,2.4,0.89088, -1.274414,2.242575,0.935276, -1.118073,2.242575,1.118073, + -0.935276,2.242575,1.274414, -0.89088,2.4,1.21392, -1.065,2.4,1.065, + -1.065,2.4,1.065, -1.118073,2.242575,1.118073, -0.935276,2.242575,1.274414, + -0.729046,2.242575,1.401276, -0.69444,2.4,1.33476, -0.89088,2.4,1.21392, + -0.89088,2.4,1.21392, -0.935276,2.242575,1.274414, -0.729046,2.242575,1.401276, + -0.502408,2.242575,1.495635, -0.47856,2.4,1.42464, -0.69444,2.4,1.33476, + -0.69444,2.4,1.33476, -0.729046,2.242575,1.401276, -0.502408,2.242575,1.495635, + -0.258385,2.242575,1.554467, -0.24612,2.4,1.48068, -0.47856,2.4,1.42464, + -0.47856,2.4,1.42464, -0.502408,2.242575,1.495635, -0.258385,2.242575,1.554467, + 0,2.242575,1.57475, 0,2.4,1.5, -0.24612,2.4,1.48068, + -0.24612,2.4,1.48068, -0.258385,2.242575,1.554467, 0,2.242575,1.57475, + -1.626774,2.0856,0.270404, -1.554467,2.242575,0.258385, -1.57475,2.242575,0, + -1.57475,2.242575,0, -1.648,2.0856,0, -1.626774,2.0856,0.270404, + -1.565204,2.0856,0.525778, -1.495635,2.242575,0.502408, -1.554467,2.242575,0.258385, + -1.554467,2.242575,0.258385, -1.626774,2.0856,0.270404, -1.565204,2.0856,0.525778, + -1.466456,2.0856,0.762958, -1.401276,2.242575,0.729046, -1.495635,2.242575,0.502408, + -1.495635,2.242575,0.502408, -1.565204,2.0856,0.525778, -1.466456,2.0856,0.762958, + -1.333693,2.0856,0.97878, -1.274414,2.242575,0.935276, -1.401276,2.242575,0.729046, + -1.401276,2.242575,0.729046, -1.466456,2.0856,0.762958, -1.333693,2.0856,0.97878, + -1.17008,2.0856,1.17008, -1.118073,2.242575,1.118073, -1.274414,2.242575,0.935276, + -1.274414,2.242575,0.935276, -1.333693,2.0856,0.97878, -1.17008,2.0856,1.17008, + -0.97878,2.0856,1.333693, -0.935276,2.242575,1.274414, -1.118073,2.242575,1.118073, + -1.118073,2.242575,1.118073, -1.17008,2.0856,1.17008, -0.97878,2.0856,1.333693, + -0.762958,2.0856,1.466456, -0.729046,2.242575,1.401276, -0.935276,2.242575,1.274414, + -0.935276,2.242575,1.274414, -0.97878,2.0856,1.333693, -0.762958,2.0856,1.466456, + -0.525778,2.0856,1.565204, -0.502408,2.242575,1.495635, -0.729046,2.242575,1.401276, + -0.729046,2.242575,1.401276, -0.762958,2.0856,1.466456, -0.525778,2.0856,1.565204, + -0.270404,2.0856,1.626774, -0.258385,2.242575,1.554467, -0.502408,2.242575,1.495635, + -0.502408,2.242575,1.495635, -0.525778,2.0856,1.565204, -0.270404,2.0856,1.626774, + 0,2.0856,1.648, 0,2.242575,1.57475, -0.258385,2.242575,1.554467, + -0.258385,2.242575,1.554467, -0.270404,2.0856,1.626774, 0,2.0856,1.648, + -1.696119,1.929525,0.28193, -1.626774,2.0856,0.270404, -1.648,2.0856,0, + -1.648,2.0856,0, -1.71825,1.929525,0, -1.696119,1.929525,0.28193, + -1.631925,1.929525,0.54819, -1.565204,2.0856,0.525778, -1.626774,2.0856,0.270404, + -1.626774,2.0856,0.270404, -1.696119,1.929525,0.28193, -1.631925,1.929525,0.54819, + -1.528968,1.929525,0.795481, -1.466456,2.0856,0.762958, -1.565204,2.0856,0.525778, + -1.565204,2.0856,0.525778, -1.631925,1.929525,0.54819, -1.528968,1.929525,0.795481, + -1.390545,1.929525,1.020503, -1.333693,2.0856,0.97878, -1.466456,2.0856,0.762958, + -1.466456,2.0856,0.762958, -1.528968,1.929525,0.795481, -1.390545,1.929525,1.020503, + -1.219958,1.929525,1.219958, -1.17008,2.0856,1.17008, -1.333693,2.0856,0.97878, + -1.333693,2.0856,0.97878, -1.390545,1.929525,1.020503, -1.219958,1.929525,1.219958, + -1.020503,1.929525,1.390545, -0.97878,2.0856,1.333693, -1.17008,2.0856,1.17008, + -1.17008,2.0856,1.17008, -1.219958,1.929525,1.219958, -1.020503,1.929525,1.390545, + -0.795481,1.929525,1.528968, -0.762958,2.0856,1.466456, -0.97878,2.0856,1.333693, + -0.97878,2.0856,1.333693, -1.020503,1.929525,1.390545, -0.795481,1.929525,1.528968, + -0.54819,1.929525,1.631925, -0.525778,2.0856,1.565204, -0.762958,2.0856,1.466456, + -0.762958,2.0856,1.466456, -0.795481,1.929525,1.528968, -0.54819,1.929525,1.631925, + -0.28193,1.929525,1.696119, -0.270404,2.0856,1.626774, -0.525778,2.0856,1.565204, + -0.525778,2.0856,1.565204, -0.54819,1.929525,1.631925, -0.28193,1.929525,1.696119, + 0,1.929525,1.71825, 0,2.0856,1.648, -0.270404,2.0856,1.626774, + -0.270404,2.0856,1.626774, -0.28193,1.929525,1.696119, 0,1.929525,1.71825, + -1.761022,1.7748,0.292719, -1.696119,1.929525,0.28193, -1.71825,1.929525,0, + -1.71825,1.929525,0, -1.784,1.7748,0, -1.761022,1.7748,0.292719, + -1.694372,1.7748,0.569167, -1.631925,1.929525,0.54819, -1.696119,1.929525,0.28193, + -1.696119,1.929525,0.28193, -1.761022,1.7748,0.292719, -1.694372,1.7748,0.569167, + -1.587475,1.7748,0.825921, -1.528968,1.929525,0.795481, -1.631925,1.929525,0.54819, + -1.631925,1.929525,0.54819, -1.694372,1.7748,0.569167, -1.587475,1.7748,0.825921, + -1.443756,1.7748,1.059553, -1.390545,1.929525,1.020503, -1.528968,1.929525,0.795481, + -1.528968,1.929525,0.795481, -1.587475,1.7748,0.825921, -1.443756,1.7748,1.059553, + -1.26664,1.7748,1.26664, -1.219958,1.929525,1.219958, -1.390545,1.929525,1.020503, + -1.390545,1.929525,1.020503, -1.443756,1.7748,1.059553, -1.26664,1.7748,1.26664, + -1.059553,1.7748,1.443756, -1.020503,1.929525,1.390545, -1.219958,1.929525,1.219958, + -1.219958,1.929525,1.219958, -1.26664,1.7748,1.26664, -1.059553,1.7748,1.443756, + -0.825921,1.7748,1.587475, -0.795481,1.929525,1.528968, -1.020503,1.929525,1.390545, + -1.020503,1.929525,1.390545, -1.059553,1.7748,1.443756, -0.825921,1.7748,1.587475, + -0.569167,1.7748,1.694372, -0.54819,1.929525,1.631925, -0.795481,1.929525,1.528968, + -0.795481,1.929525,1.528968, -0.825921,1.7748,1.587475, -0.569167,1.7748,1.694372, + -0.292719,1.7748,1.761022, -0.28193,1.929525,1.696119, -0.54819,1.929525,1.631925, + -0.54819,1.929525,1.631925, -0.569167,1.7748,1.694372, -0.292719,1.7748,1.761022, + 0,1.7748,1.784, 0,1.929525,1.71825, -0.28193,1.929525,1.696119, + -0.28193,1.929525,1.696119, -0.292719,1.7748,1.761022, 0,1.7748,1.784, + -1.820003,1.621875,0.302523, -1.761022,1.7748,0.292719, -1.784,1.7748,0, + -1.784,1.7748,0, -1.84375,1.621875,0, -1.820003,1.621875,0.302523, + -1.75112,1.621875,0.58823, -1.694372,1.7748,0.569167, -1.761022,1.7748,0.292719, + -1.761022,1.7748,0.292719, -1.820003,1.621875,0.302523, -1.75112,1.621875,0.58823, + -1.640643,1.621875,0.853583, -1.587475,1.7748,0.825921, -1.694372,1.7748,0.569167, + -1.694372,1.7748,0.569167, -1.75112,1.621875,0.58823, -1.640643,1.621875,0.853583, + -1.49211,1.621875,1.09504, -1.443756,1.7748,1.059553, -1.587475,1.7748,0.825921, + -1.587475,1.7748,0.825921, -1.640643,1.621875,0.853583, -1.49211,1.621875,1.09504, + -1.309063,1.621875,1.309063, -1.26664,1.7748,1.26664, -1.443756,1.7748,1.059553, + -1.443756,1.7748,1.059553, -1.49211,1.621875,1.09504, -1.309063,1.621875,1.309063, + -1.09504,1.621875,1.49211, -1.059553,1.7748,1.443756, -1.26664,1.7748,1.26664, + -1.26664,1.7748,1.26664, -1.309063,1.621875,1.309063, -1.09504,1.621875,1.49211, + -0.853583,1.621875,1.640643, -0.825921,1.7748,1.587475, -1.059553,1.7748,1.443756, + -1.059553,1.7748,1.443756, -1.09504,1.621875,1.49211, -0.853583,1.621875,1.640643, + -0.58823,1.621875,1.75112, -0.569167,1.7748,1.694372, -0.825921,1.7748,1.587475, + -0.825921,1.7748,1.587475, -0.853583,1.621875,1.640643, -0.58823,1.621875,1.75112, + -0.302522,1.621875,1.820003, -0.292719,1.7748,1.761022, -0.569167,1.7748,1.694372, + -0.569167,1.7748,1.694372, -0.58823,1.621875,1.75112, -0.302522,1.621875,1.820003, + 0,1.621875,1.84375, 0,1.7748,1.784, -0.292719,1.7748,1.761022, + -0.292719,1.7748,1.761022, -0.302522,1.621875,1.820003, 0,1.621875,1.84375, + -1.87158,1.4712,0.311096, -1.820003,1.621875,0.302523, -1.84375,1.621875,0, + -1.84375,1.621875,0, -1.896,1.4712,0, -1.87158,1.4712,0.311096, + -1.800745,1.4712,0.6049, -1.75112,1.621875,0.58823, -1.820003,1.621875,0.302523, + -1.820003,1.621875,0.302523, -1.87158,1.4712,0.311096, -1.800745,1.4712,0.6049, + -1.687137,1.4712,0.877772, -1.640643,1.621875,0.853583, -1.75112,1.621875,0.58823, + -1.75112,1.621875,0.58823, -1.800745,1.4712,0.6049, -1.687137,1.4712,0.877772, + -1.534395,1.4712,1.126072, -1.49211,1.621875,1.09504, -1.640643,1.621875,0.853583, + -1.640643,1.621875,0.853583, -1.687137,1.4712,0.877772, -1.534395,1.4712,1.126072, + -1.34616,1.4712,1.34616, -1.309063,1.621875,1.309063, -1.49211,1.621875,1.09504, + -1.49211,1.621875,1.09504, -1.534395,1.4712,1.126072, -1.34616,1.4712,1.34616, + -1.126072,1.4712,1.534395, -1.09504,1.621875,1.49211, -1.309063,1.621875,1.309063, + -1.309063,1.621875,1.309063, -1.34616,1.4712,1.34616, -1.126072,1.4712,1.534395, + -0.877772,1.4712,1.687137, -0.853583,1.621875,1.640643, -1.09504,1.621875,1.49211, + -1.09504,1.621875,1.49211, -1.126072,1.4712,1.534395, -0.877772,1.4712,1.687137, + -0.6049,1.4712,1.800745, -0.58823,1.621875,1.75112, -0.853583,1.621875,1.640643, + -0.853583,1.621875,1.640643, -0.877772,1.4712,1.687137, -0.6049,1.4712,1.800745, + -0.311096,1.4712,1.87158, -0.302522,1.621875,1.820003, -0.58823,1.621875,1.75112, + -0.58823,1.621875,1.75112, -0.6049,1.4712,1.800745, -0.311096,1.4712,1.87158, + 0,1.4712,1.896, 0,1.621875,1.84375, -0.302522,1.621875,1.820003, + -0.302522,1.621875,1.820003, -0.311096,1.4712,1.87158, 0,1.4712,1.896, + -1.914272,1.323225,0.318192, -1.87158,1.4712,0.311096, -1.896,1.4712,0, + -1.896,1.4712,0, -1.93925,1.323225,0, -1.914272,1.323225,0.318192, + -1.841822,1.323225,0.618698, -1.800745,1.4712,0.6049, -1.87158,1.4712,0.311096, + -1.87158,1.4712,0.311096, -1.914272,1.323225,0.318192, -1.841822,1.323225,0.618698, + -1.725622,1.323225,0.897795, -1.687137,1.4712,0.877772, -1.800745,1.4712,0.6049, + -1.800745,1.4712,0.6049, -1.841822,1.323225,0.618698, -1.725622,1.323225,0.897795, + -1.569396,1.323225,1.151759, -1.534395,1.4712,1.126072, -1.687137,1.4712,0.877772, + -1.687137,1.4712,0.877772, -1.725622,1.323225,0.897795, -1.569396,1.323225,1.151759, + -1.376867,1.323225,1.376868, -1.34616,1.4712,1.34616, -1.534395,1.4712,1.126072, + -1.534395,1.4712,1.126072, -1.569396,1.323225,1.151759, -1.376867,1.323225,1.376868, + -1.151759,1.323225,1.569396, -1.126072,1.4712,1.534395, -1.34616,1.4712,1.34616, + -1.34616,1.4712,1.34616, -1.376867,1.323225,1.376868, -1.151759,1.323225,1.569396, + -0.897795,1.323225,1.725622, -0.877772,1.4712,1.687137, -1.126072,1.4712,1.534395, + -1.126072,1.4712,1.534395, -1.151759,1.323225,1.569396, -0.897795,1.323225,1.725622, + -0.618698,1.323225,1.841822, -0.6049,1.4712,1.800745, -0.877772,1.4712,1.687137, + -0.877772,1.4712,1.687137, -0.897795,1.323225,1.725622, -0.618698,1.323225,1.841822, + -0.318192,1.323225,1.914272, -0.311096,1.4712,1.87158, -0.6049,1.4712,1.800745, + -0.6049,1.4712,1.800745, -0.618698,1.323225,1.841822, -0.318192,1.323225,1.914272, + 0,1.323225,1.93925, 0,1.4712,1.896, -0.311096,1.4712,1.87158, + -0.311096,1.4712,1.87158, -0.318192,1.323225,1.914272, 0,1.323225,1.93925, + -1.946601,1.1784,0.323566, -1.914272,1.323225,0.318192, -1.93925,1.323225,0, + -1.93925,1.323225,0, -1.972,1.1784,0, -1.946601,1.1784,0.323566, + -1.872927,1.1784,0.629147, -1.841822,1.323225,0.618698, -1.914272,1.323225,0.318192, + -1.914272,1.323225,0.318192, -1.946601,1.1784,0.323566, -1.872927,1.1784,0.629147, + -1.754764,1.1784,0.912957, -1.725622,1.323225,0.897795, -1.841822,1.323225,0.618698, + -1.841822,1.323225,0.618698, -1.872927,1.1784,0.629147, -1.754764,1.1784,0.912957, + -1.5959,1.1784,1.17121, -1.569396,1.323225,1.151759, -1.725622,1.323225,0.897795, + -1.725622,1.323225,0.897795, -1.754764,1.1784,0.912957, -1.5959,1.1784,1.17121, + -1.40012,1.1784,1.40012, -1.376867,1.323225,1.376868, -1.569396,1.323225,1.151759, + -1.569396,1.323225,1.151759, -1.5959,1.1784,1.17121, -1.40012,1.1784,1.40012, + -1.17121,1.1784,1.5959, -1.151759,1.323225,1.569396, -1.376867,1.323225,1.376868, + -1.376867,1.323225,1.376868, -1.40012,1.1784,1.40012, -1.17121,1.1784,1.5959, + -0.912957,1.1784,1.754764, -0.897795,1.323225,1.725622, -1.151759,1.323225,1.569396, + -1.151759,1.323225,1.569396, -1.17121,1.1784,1.5959, -0.912957,1.1784,1.754764, + -0.629147,1.1784,1.872927, -0.618698,1.323225,1.841822, -0.897795,1.323225,1.725622, + -0.897795,1.323225,1.725622, -0.912957,1.1784,1.754764, -0.629147,1.1784,1.872927, + -0.323566,1.1784,1.946601, -0.318192,1.323225,1.914272, -0.618698,1.323225,1.841822, + -0.618698,1.323225,1.841822, -0.629147,1.1784,1.872927, -0.323566,1.1784,1.946601, + 0,1.1784,1.972, 0,1.323225,1.93925, -0.318192,1.323225,1.914272, + -0.318192,1.323225,1.914272, -0.323566,1.1784,1.946601, 0,1.1784,1.972, + -1.967083,1.037175,0.32697, -1.946601,1.1784,0.323566, -1.972,1.1784,0, + -1.972,1.1784,0, -1.99275,1.037175,0, -1.967083,1.037175,0.32697, + -1.892634,1.037175,0.635767, -1.872927,1.1784,0.629147, -1.946601,1.1784,0.323566, + -1.946601,1.1784,0.323566, -1.967083,1.037175,0.32697, -1.892634,1.037175,0.635767, + -1.773229,1.037175,0.922564, -1.754764,1.1784,0.912957, -1.872927,1.1784,0.629147, + -1.872927,1.1784,0.629147, -1.892634,1.037175,0.635767, -1.773229,1.037175,0.922564, + -1.612693,1.037175,1.183534, -1.5959,1.1784,1.17121, -1.754764,1.1784,0.912957, + -1.754764,1.1784,0.912957, -1.773229,1.037175,0.922564, -1.612693,1.037175,1.183534, + -1.414853,1.037175,1.414853, -1.40012,1.1784,1.40012, -1.5959,1.1784,1.17121, + -1.5959,1.1784,1.17121, -1.612693,1.037175,1.183534, -1.414853,1.037175,1.414853, + -1.183534,1.037175,1.612693, -1.17121,1.1784,1.5959, -1.40012,1.1784,1.40012, + -1.40012,1.1784,1.40012, -1.414853,1.037175,1.414853, -1.183534,1.037175,1.612693, + -0.922564,1.037175,1.773229, -0.912957,1.1784,1.754764, -1.17121,1.1784,1.5959, + -1.17121,1.1784,1.5959, -1.183534,1.037175,1.612693, -0.922564,1.037175,1.773229, + -0.635767,1.037175,1.892634, -0.629147,1.1784,1.872927, -0.912957,1.1784,1.754764, + -0.912957,1.1784,1.754764, -0.922564,1.037175,1.773229, -0.635767,1.037175,1.892634, + -0.32697,1.037175,1.967083, -0.323566,1.1784,1.946601, -0.629147,1.1784,1.872927, + -0.629147,1.1784,1.872927, -0.635767,1.037175,1.892634, -0.32697,1.037175,1.967083, + 0,1.037175,1.99275, 0,1.1784,1.972, -0.323566,1.1784,1.946601, + -0.323566,1.1784,1.946601, -0.32697,1.037175,1.967083, 0,1.037175,1.99275, + -1.97424,0.9,0.32816, -1.967083,1.037175,0.32697, -1.99275,1.037175,0, + -1.99275,1.037175,0, -2,0.9,0, -1.97424,0.9,0.32816, + -1.89952,0.9,0.63808, -1.892634,1.037175,0.635767, -1.967083,1.037175,0.32697, + -1.967083,1.037175,0.32697, -1.97424,0.9,0.32816, -1.89952,0.9,0.63808, + -1.77968,0.9,0.92592, -1.773229,1.037175,0.922564, -1.892634,1.037175,0.635767, + -1.892634,1.037175,0.635767, -1.89952,0.9,0.63808, -1.77968,0.9,0.92592, + -1.61856,0.9,1.18784, -1.612693,1.037175,1.183534, -1.773229,1.037175,0.922564, + -1.773229,1.037175,0.922564, -1.77968,0.9,0.92592, -1.61856,0.9,1.18784, + -1.42,0.9,1.42, -1.414853,1.037175,1.414853, -1.612693,1.037175,1.183534, + -1.612693,1.037175,1.183534, -1.61856,0.9,1.18784, -1.42,0.9,1.42, + -1.18784,0.9,1.61856, -1.183534,1.037175,1.612693, -1.414853,1.037175,1.414853, + -1.414853,1.037175,1.414853, -1.42,0.9,1.42, -1.18784,0.9,1.61856, + -0.92592,0.9,1.77968, -0.922564,1.037175,1.773229, -1.183534,1.037175,1.612693, + -1.183534,1.037175,1.612693, -1.18784,0.9,1.61856, -0.92592,0.9,1.77968, + -0.63808,0.9,1.89952, -0.635767,1.037175,1.892634, -0.922564,1.037175,1.773229, + -0.922564,1.037175,1.773229, -0.92592,0.9,1.77968, -0.63808,0.9,1.89952, + -0.32816,0.9,1.97424, -0.32697,1.037175,1.967083, -0.635767,1.037175,1.892634, + -0.635767,1.037175,1.892634, -0.63808,0.9,1.89952, -0.32816,0.9,1.97424, + 0,0.9,2, 0,1.037175,1.99275, -0.32697,1.037175,1.967083, + -0.32697,1.037175,1.967083, -0.32816,0.9,1.97424, 0,0.9,2, + 0.258385,2.242575,1.554467, 0.24612,2.4,1.48068, 0,2.4,1.5, + 0,2.4,1.5, 0,2.242575,1.57475, 0.258385,2.242575,1.554467, + 0.502408,2.242575,1.495635, 0.47856,2.4,1.42464, 0.24612,2.4,1.48068, + 0.24612,2.4,1.48068, 0.258385,2.242575,1.554467, 0.502408,2.242575,1.495635, + 0.729046,2.242575,1.401276, 0.69444,2.4,1.33476, 0.47856,2.4,1.42464, + 0.47856,2.4,1.42464, 0.502408,2.242575,1.495635, 0.729046,2.242575,1.401276, + 0.935276,2.242575,1.274414, 0.89088,2.4,1.21392, 0.69444,2.4,1.33476, + 0.69444,2.4,1.33476, 0.729046,2.242575,1.401276, 0.935276,2.242575,1.274414, + 1.118073,2.242575,1.118073, 1.065,2.4,1.065, 0.89088,2.4,1.21392, + 0.89088,2.4,1.21392, 0.935276,2.242575,1.274414, 1.118073,2.242575,1.118073, + 1.274414,2.242575,0.935276, 1.21392,2.4,0.89088, 1.065,2.4,1.065, + 1.065,2.4,1.065, 1.118073,2.242575,1.118073, 1.274414,2.242575,0.935276, + 1.401276,2.242575,0.729046, 1.33476,2.4,0.69444, 1.21392,2.4,0.89088, + 1.21392,2.4,0.89088, 1.274414,2.242575,0.935276, 1.401276,2.242575,0.729046, + 1.495635,2.242575,0.502408, 1.42464,2.4,0.47856, 1.33476,2.4,0.69444, + 1.33476,2.4,0.69444, 1.401276,2.242575,0.729046, 1.495635,2.242575,0.502408, + 1.554467,2.242575,0.258385, 1.48068,2.4,0.24612, 1.42464,2.4,0.47856, + 1.42464,2.4,0.47856, 1.495635,2.242575,0.502408, 1.554467,2.242575,0.258385, + 1.57475,2.242575,0, 1.5,2.4,0, 1.48068,2.4,0.24612, + 1.48068,2.4,0.24612, 1.554467,2.242575,0.258385, 1.57475,2.242575,0, + 0.270404,2.0856,1.626774, 0.258385,2.242575,1.554467, 0,2.242575,1.57475, + 0,2.242575,1.57475, 0,2.0856,1.648, 0.270404,2.0856,1.626774, + 0.525778,2.0856,1.565204, 0.502408,2.242575,1.495635, 0.258385,2.242575,1.554467, + 0.258385,2.242575,1.554467, 0.270404,2.0856,1.626774, 0.525778,2.0856,1.565204, + 0.762958,2.0856,1.466456, 0.729046,2.242575,1.401276, 0.502408,2.242575,1.495635, + 0.502408,2.242575,1.495635, 0.525778,2.0856,1.565204, 0.762958,2.0856,1.466456, + 0.97878,2.0856,1.333693, 0.935276,2.242575,1.274414, 0.729046,2.242575,1.401276, + 0.729046,2.242575,1.401276, 0.762958,2.0856,1.466456, 0.97878,2.0856,1.333693, + 1.17008,2.0856,1.17008, 1.118073,2.242575,1.118073, 0.935276,2.242575,1.274414, + 0.935276,2.242575,1.274414, 0.97878,2.0856,1.333693, 1.17008,2.0856,1.17008, + 1.333693,2.0856,0.97878, 1.274414,2.242575,0.935276, 1.118073,2.242575,1.118073, + 1.118073,2.242575,1.118073, 1.17008,2.0856,1.17008, 1.333693,2.0856,0.97878, + 1.466456,2.0856,0.762958, 1.401276,2.242575,0.729046, 1.274414,2.242575,0.935276, + 1.274414,2.242575,0.935276, 1.333693,2.0856,0.97878, 1.466456,2.0856,0.762958, + 1.565204,2.0856,0.525778, 1.495635,2.242575,0.502408, 1.401276,2.242575,0.729046, + 1.401276,2.242575,0.729046, 1.466456,2.0856,0.762958, 1.565204,2.0856,0.525778, + 1.626774,2.0856,0.270404, 1.554467,2.242575,0.258385, 1.495635,2.242575,0.502408, + 1.495635,2.242575,0.502408, 1.565204,2.0856,0.525778, 1.626774,2.0856,0.270404, + 1.648,2.0856,0, 1.57475,2.242575,0, 1.554467,2.242575,0.258385, + 1.554467,2.242575,0.258385, 1.626774,2.0856,0.270404, 1.648,2.0856,0, + 0.28193,1.929525,1.696119, 0.270404,2.0856,1.626774, 0,2.0856,1.648, + 0,2.0856,1.648, 0,1.929525,1.71825, 0.28193,1.929525,1.696119, + 0.54819,1.929525,1.631925, 0.525778,2.0856,1.565204, 0.270404,2.0856,1.626774, + 0.270404,2.0856,1.626774, 0.28193,1.929525,1.696119, 0.54819,1.929525,1.631925, + 0.795481,1.929525,1.528968, 0.762958,2.0856,1.466456, 0.525778,2.0856,1.565204, + 0.525778,2.0856,1.565204, 0.54819,1.929525,1.631925, 0.795481,1.929525,1.528968, + 1.020503,1.929525,1.390545, 0.97878,2.0856,1.333693, 0.762958,2.0856,1.466456, + 0.762958,2.0856,1.466456, 0.795481,1.929525,1.528968, 1.020503,1.929525,1.390545, + 1.219958,1.929525,1.219958, 1.17008,2.0856,1.17008, 0.97878,2.0856,1.333693, + 0.97878,2.0856,1.333693, 1.020503,1.929525,1.390545, 1.219958,1.929525,1.219958, + 1.390545,1.929525,1.020503, 1.333693,2.0856,0.97878, 1.17008,2.0856,1.17008, + 1.17008,2.0856,1.17008, 1.219958,1.929525,1.219958, 1.390545,1.929525,1.020503, + 1.528968,1.929525,0.795481, 1.466456,2.0856,0.762958, 1.333693,2.0856,0.97878, + 1.333693,2.0856,0.97878, 1.390545,1.929525,1.020503, 1.528968,1.929525,0.795481, + 1.631925,1.929525,0.54819, 1.565204,2.0856,0.525778, 1.466456,2.0856,0.762958, + 1.466456,2.0856,0.762958, 1.528968,1.929525,0.795481, 1.631925,1.929525,0.54819, + 1.696119,1.929525,0.28193, 1.626774,2.0856,0.270404, 1.565204,2.0856,0.525778, + 1.565204,2.0856,0.525778, 1.631925,1.929525,0.54819, 1.696119,1.929525,0.28193, + 1.71825,1.929525,0, 1.648,2.0856,0, 1.626774,2.0856,0.270404, + 1.626774,2.0856,0.270404, 1.696119,1.929525,0.28193, 1.71825,1.929525,0, + 0.292719,1.7748,1.761022, 0.28193,1.929525,1.696119, 0,1.929525,1.71825, + 0,1.929525,1.71825, 0,1.7748,1.784, 0.292719,1.7748,1.761022, + 0.569167,1.7748,1.694372, 0.54819,1.929525,1.631925, 0.28193,1.929525,1.696119, + 0.28193,1.929525,1.696119, 0.292719,1.7748,1.761022, 0.569167,1.7748,1.694372, + 0.825921,1.7748,1.587475, 0.795481,1.929525,1.528968, 0.54819,1.929525,1.631925, + 0.54819,1.929525,1.631925, 0.569167,1.7748,1.694372, 0.825921,1.7748,1.587475, + 1.059553,1.7748,1.443756, 1.020503,1.929525,1.390545, 0.795481,1.929525,1.528968, + 0.795481,1.929525,1.528968, 0.825921,1.7748,1.587475, 1.059553,1.7748,1.443756, + 1.26664,1.7748,1.26664, 1.219958,1.929525,1.219958, 1.020503,1.929525,1.390545, + 1.020503,1.929525,1.390545, 1.059553,1.7748,1.443756, 1.26664,1.7748,1.26664, + 1.443756,1.7748,1.059553, 1.390545,1.929525,1.020503, 1.219958,1.929525,1.219958, + 1.219958,1.929525,1.219958, 1.26664,1.7748,1.26664, 1.443756,1.7748,1.059553, + 1.587475,1.7748,0.825921, 1.528968,1.929525,0.795481, 1.390545,1.929525,1.020503, + 1.390545,1.929525,1.020503, 1.443756,1.7748,1.059553, 1.587475,1.7748,0.825921, + 1.694372,1.7748,0.569167, 1.631925,1.929525,0.54819, 1.528968,1.929525,0.795481, + 1.528968,1.929525,0.795481, 1.587475,1.7748,0.825921, 1.694372,1.7748,0.569167, + 1.761022,1.7748,0.292719, 1.696119,1.929525,0.28193, 1.631925,1.929525,0.54819, + 1.631925,1.929525,0.54819, 1.694372,1.7748,0.569167, 1.761022,1.7748,0.292719, + 1.784,1.7748,0, 1.71825,1.929525,0, 1.696119,1.929525,0.28193, + 1.696119,1.929525,0.28193, 1.761022,1.7748,0.292719, 1.784,1.7748,0, + 0.302523,1.621875,1.820003, 0.292719,1.7748,1.761022, 0,1.7748,1.784, + 0,1.7748,1.784, 0,1.621875,1.84375, 0.302523,1.621875,1.820003, + 0.58823,1.621875,1.75112, 0.569167,1.7748,1.694372, 0.292719,1.7748,1.761022, + 0.292719,1.7748,1.761022, 0.302523,1.621875,1.820003, 0.58823,1.621875,1.75112, + 0.853583,1.621875,1.640643, 0.825921,1.7748,1.587475, 0.569167,1.7748,1.694372, + 0.569167,1.7748,1.694372, 0.58823,1.621875,1.75112, 0.853583,1.621875,1.640643, + 1.09504,1.621875,1.49211, 1.059553,1.7748,1.443756, 0.825921,1.7748,1.587475, + 0.825921,1.7748,1.587475, 0.853583,1.621875,1.640643, 1.09504,1.621875,1.49211, + 1.309063,1.621875,1.309063, 1.26664,1.7748,1.26664, 1.059553,1.7748,1.443756, + 1.059553,1.7748,1.443756, 1.09504,1.621875,1.49211, 1.309063,1.621875,1.309063, + 1.49211,1.621875,1.09504, 1.443756,1.7748,1.059553, 1.26664,1.7748,1.26664, + 1.26664,1.7748,1.26664, 1.309063,1.621875,1.309063, 1.49211,1.621875,1.09504, + 1.640643,1.621875,0.853583, 1.587475,1.7748,0.825921, 1.443756,1.7748,1.059553, + 1.443756,1.7748,1.059553, 1.49211,1.621875,1.09504, 1.640643,1.621875,0.853583, + 1.75112,1.621875,0.58823, 1.694372,1.7748,0.569167, 1.587475,1.7748,0.825921, + 1.587475,1.7748,0.825921, 1.640643,1.621875,0.853583, 1.75112,1.621875,0.58823, + 1.820003,1.621875,0.302522, 1.761022,1.7748,0.292719, 1.694372,1.7748,0.569167, + 1.694372,1.7748,0.569167, 1.75112,1.621875,0.58823, 1.820003,1.621875,0.302522, + 1.84375,1.621875,0, 1.784,1.7748,0, 1.761022,1.7748,0.292719, + 1.761022,1.7748,0.292719, 1.820003,1.621875,0.302522, 1.84375,1.621875,0, + 0.311096,1.4712,1.87158, 0.302523,1.621875,1.820003, 0,1.621875,1.84375, + 0,1.621875,1.84375, 0,1.4712,1.896, 0.311096,1.4712,1.87158, + 0.6049,1.4712,1.800745, 0.58823,1.621875,1.75112, 0.302523,1.621875,1.820003, + 0.302523,1.621875,1.820003, 0.311096,1.4712,1.87158, 0.6049,1.4712,1.800745, + 0.877772,1.4712,1.687137, 0.853583,1.621875,1.640643, 0.58823,1.621875,1.75112, + 0.58823,1.621875,1.75112, 0.6049,1.4712,1.800745, 0.877772,1.4712,1.687137, + 1.126072,1.4712,1.534395, 1.09504,1.621875,1.49211, 0.853583,1.621875,1.640643, + 0.853583,1.621875,1.640643, 0.877772,1.4712,1.687137, 1.126072,1.4712,1.534395, + 1.34616,1.4712,1.34616, 1.309063,1.621875,1.309063, 1.09504,1.621875,1.49211, + 1.09504,1.621875,1.49211, 1.126072,1.4712,1.534395, 1.34616,1.4712,1.34616, + 1.534395,1.4712,1.126072, 1.49211,1.621875,1.09504, 1.309063,1.621875,1.309063, + 1.309063,1.621875,1.309063, 1.34616,1.4712,1.34616, 1.534395,1.4712,1.126072, + 1.687137,1.4712,0.877772, 1.640643,1.621875,0.853583, 1.49211,1.621875,1.09504, + 1.49211,1.621875,1.09504, 1.534395,1.4712,1.126072, 1.687137,1.4712,0.877772, + 1.800745,1.4712,0.6049, 1.75112,1.621875,0.58823, 1.640643,1.621875,0.853583, + 1.640643,1.621875,0.853583, 1.687137,1.4712,0.877772, 1.800745,1.4712,0.6049, + 1.87158,1.4712,0.311096, 1.820003,1.621875,0.302522, 1.75112,1.621875,0.58823, + 1.75112,1.621875,0.58823, 1.800745,1.4712,0.6049, 1.87158,1.4712,0.311096, + 1.896,1.4712,0, 1.84375,1.621875,0, 1.820003,1.621875,0.302522, + 1.820003,1.621875,0.302522, 1.87158,1.4712,0.311096, 1.896,1.4712,0, + 0.318192,1.323225,1.914272, 0.311096,1.4712,1.87158, 0,1.4712,1.896, + 0,1.4712,1.896, 0,1.323225,1.93925, 0.318192,1.323225,1.914272, + 0.618698,1.323225,1.841822, 0.6049,1.4712,1.800745, 0.311096,1.4712,1.87158, + 0.311096,1.4712,1.87158, 0.318192,1.323225,1.914272, 0.618698,1.323225,1.841822, + 0.897795,1.323225,1.725622, 0.877772,1.4712,1.687137, 0.6049,1.4712,1.800745, + 0.6049,1.4712,1.800745, 0.618698,1.323225,1.841822, 0.897795,1.323225,1.725622, + 1.151759,1.323225,1.569396, 1.126072,1.4712,1.534395, 0.877772,1.4712,1.687137, + 0.877772,1.4712,1.687137, 0.897795,1.323225,1.725622, 1.151759,1.323225,1.569396, + 1.376868,1.323225,1.376867, 1.34616,1.4712,1.34616, 1.126072,1.4712,1.534395, + 1.126072,1.4712,1.534395, 1.151759,1.323225,1.569396, 1.376868,1.323225,1.376867, + 1.569396,1.323225,1.151759, 1.534395,1.4712,1.126072, 1.34616,1.4712,1.34616, + 1.34616,1.4712,1.34616, 1.376868,1.323225,1.376867, 1.569396,1.323225,1.151759, + 1.725622,1.323225,0.897795, 1.687137,1.4712,0.877772, 1.534395,1.4712,1.126072, + 1.534395,1.4712,1.126072, 1.569396,1.323225,1.151759, 1.725622,1.323225,0.897795, + 1.841822,1.323225,0.618698, 1.800745,1.4712,0.6049, 1.687137,1.4712,0.877772, + 1.687137,1.4712,0.877772, 1.725622,1.323225,0.897795, 1.841822,1.323225,0.618698, + 1.914272,1.323225,0.318192, 1.87158,1.4712,0.311096, 1.800745,1.4712,0.6049, + 1.800745,1.4712,0.6049, 1.841822,1.323225,0.618698, 1.914272,1.323225,0.318192, + 1.93925,1.323225,0, 1.896,1.4712,0, 1.87158,1.4712,0.311096, + 1.87158,1.4712,0.311096, 1.914272,1.323225,0.318192, 1.93925,1.323225,0, + 0.323566,1.1784,1.946601, 0.318192,1.323225,1.914272, 0,1.323225,1.93925, + 0,1.323225,1.93925, 0,1.1784,1.972, 0.323566,1.1784,1.946601, + 0.629147,1.1784,1.872927, 0.618698,1.323225,1.841822, 0.318192,1.323225,1.914272, + 0.318192,1.323225,1.914272, 0.323566,1.1784,1.946601, 0.629147,1.1784,1.872927, + 0.912957,1.1784,1.754764, 0.897795,1.323225,1.725622, 0.618698,1.323225,1.841822, + 0.618698,1.323225,1.841822, 0.629147,1.1784,1.872927, 0.912957,1.1784,1.754764, + 1.17121,1.1784,1.5959, 1.151759,1.323225,1.569396, 0.897795,1.323225,1.725622, + 0.897795,1.323225,1.725622, 0.912957,1.1784,1.754764, 1.17121,1.1784,1.5959, + 1.40012,1.1784,1.40012, 1.376868,1.323225,1.376867, 1.151759,1.323225,1.569396, + 1.151759,1.323225,1.569396, 1.17121,1.1784,1.5959, 1.40012,1.1784,1.40012, + 1.5959,1.1784,1.17121, 1.569396,1.323225,1.151759, 1.376868,1.323225,1.376867, + 1.376868,1.323225,1.376867, 1.40012,1.1784,1.40012, 1.5959,1.1784,1.17121, + 1.754764,1.1784,0.912957, 1.725622,1.323225,0.897795, 1.569396,1.323225,1.151759, + 1.569396,1.323225,1.151759, 1.5959,1.1784,1.17121, 1.754764,1.1784,0.912957, + 1.872927,1.1784,0.629147, 1.841822,1.323225,0.618698, 1.725622,1.323225,0.897795, + 1.725622,1.323225,0.897795, 1.754764,1.1784,0.912957, 1.872927,1.1784,0.629147, + 1.946601,1.1784,0.323566, 1.914272,1.323225,0.318192, 1.841822,1.323225,0.618698, + 1.841822,1.323225,0.618698, 1.872927,1.1784,0.629147, 1.946601,1.1784,0.323566, + 1.972,1.1784,0, 1.93925,1.323225,0, 1.914272,1.323225,0.318192, + 1.914272,1.323225,0.318192, 1.946601,1.1784,0.323566, 1.972,1.1784,0, + 0.32697,1.037175,1.967083, 0.323566,1.1784,1.946601, 0,1.1784,1.972, + 0,1.1784,1.972, 0,1.037175,1.99275, 0.32697,1.037175,1.967083, + 0.635767,1.037175,1.892634, 0.629147,1.1784,1.872927, 0.323566,1.1784,1.946601, + 0.323566,1.1784,1.946601, 0.32697,1.037175,1.967083, 0.635767,1.037175,1.892634, + 0.922564,1.037175,1.773229, 0.912957,1.1784,1.754764, 0.629147,1.1784,1.872927, + 0.629147,1.1784,1.872927, 0.635767,1.037175,1.892634, 0.922564,1.037175,1.773229, + 1.183534,1.037175,1.612693, 1.17121,1.1784,1.5959, 0.912957,1.1784,1.754764, + 0.912957,1.1784,1.754764, 0.922564,1.037175,1.773229, 1.183534,1.037175,1.612693, + 1.414853,1.037175,1.414853, 1.40012,1.1784,1.40012, 1.17121,1.1784,1.5959, + 1.17121,1.1784,1.5959, 1.183534,1.037175,1.612693, 1.414853,1.037175,1.414853, + 1.612693,1.037175,1.183534, 1.5959,1.1784,1.17121, 1.40012,1.1784,1.40012, + 1.40012,1.1784,1.40012, 1.414853,1.037175,1.414853, 1.612693,1.037175,1.183534, + 1.773229,1.037175,0.922564, 1.754764,1.1784,0.912957, 1.5959,1.1784,1.17121, + 1.5959,1.1784,1.17121, 1.612693,1.037175,1.183534, 1.773229,1.037175,0.922564, + 1.892634,1.037175,0.635767, 1.872927,1.1784,0.629147, 1.754764,1.1784,0.912957, + 1.754764,1.1784,0.912957, 1.773229,1.037175,0.922564, 1.892634,1.037175,0.635767, + 1.967083,1.037175,0.32697, 1.946601,1.1784,0.323566, 1.872927,1.1784,0.629147, + 1.872927,1.1784,0.629147, 1.892634,1.037175,0.635767, 1.967083,1.037175,0.32697, + 1.99275,1.037175,0, 1.972,1.1784,0, 1.946601,1.1784,0.323566, + 1.946601,1.1784,0.323566, 1.967083,1.037175,0.32697, 1.99275,1.037175,0, + 0.32816,0.9,1.97424, 0.32697,1.037175,1.967083, 0,1.037175,1.99275, + 0,1.037175,1.99275, 0,0.9,2, 0.32816,0.9,1.97424, + 0.63808,0.9,1.89952, 0.635767,1.037175,1.892634, 0.32697,1.037175,1.967083, + 0.32697,1.037175,1.967083, 0.32816,0.9,1.97424, 0.63808,0.9,1.89952, + 0.92592,0.9,1.77968, 0.922564,1.037175,1.773229, 0.635767,1.037175,1.892634, + 0.635767,1.037175,1.892634, 0.63808,0.9,1.89952, 0.92592,0.9,1.77968, + 1.18784,0.9,1.61856, 1.183534,1.037175,1.612693, 0.922564,1.037175,1.773229, + 0.922564,1.037175,1.773229, 0.92592,0.9,1.77968, 1.18784,0.9,1.61856, + 1.42,0.9,1.42, 1.414853,1.037175,1.414853, 1.183534,1.037175,1.612693, + 1.183534,1.037175,1.612693, 1.18784,0.9,1.61856, 1.42,0.9,1.42, + 1.61856,0.9,1.18784, 1.612693,1.037175,1.183534, 1.414853,1.037175,1.414853, + 1.414853,1.037175,1.414853, 1.42,0.9,1.42, 1.61856,0.9,1.18784, + 1.77968,0.9,0.92592, 1.773229,1.037175,0.922564, 1.612693,1.037175,1.183534, + 1.612693,1.037175,1.183534, 1.61856,0.9,1.18784, 1.77968,0.9,0.92592, + 1.89952,0.9,0.63808, 1.892634,1.037175,0.635767, 1.773229,1.037175,0.922564, + 1.773229,1.037175,0.922564, 1.77968,0.9,0.92592, 1.89952,0.9,0.63808, + 1.97424,0.9,0.32816, 1.967083,1.037175,0.32697, 1.892634,1.037175,0.635767, + 1.892634,1.037175,0.635767, 1.89952,0.9,0.63808, 1.97424,0.9,0.32816, + 2,0.9,0, 1.99275,1.037175,0, 1.967083,1.037175,0.32697, + 1.967083,1.037175,0.32697, 1.97424,0.9,0.32816, 2,0.9,0, + 1.96042,0.771675,-0.325863, 1.97424,0.9,-0.32816, 2,0.9,0, + 2,0.9,0, 1.986,0.771675,0, 1.96042,0.771675,-0.325863, + 1.886223,0.771675,-0.633613, 1.89952,0.9,-0.63808, 1.97424,0.9,-0.32816, + 1.97424,0.9,-0.32816, 1.96042,0.771675,-0.325863, 1.886223,0.771675,-0.633613, + 1.767222,0.771675,-0.919439, 1.77968,0.9,-0.92592, 1.89952,0.9,-0.63808, + 1.89952,0.9,-0.63808, 1.886223,0.771675,-0.633613, 1.767222,0.771675,-0.919439, + 1.60723,0.771675,-1.179525, 1.61856,0.9,-1.18784, 1.77968,0.9,-0.92592, + 1.77968,0.9,-0.92592, 1.767222,0.771675,-0.919439, 1.60723,0.771675,-1.179525, + 1.41006,0.771675,-1.41006, 1.42,0.9,-1.42, 1.61856,0.9,-1.18784, + 1.61856,0.9,-1.18784, 1.60723,0.771675,-1.179525, 1.41006,0.771675,-1.41006, + 1.179525,0.771675,-1.60723, 1.18784,0.9,-1.61856, 1.42,0.9,-1.42, + 1.42,0.9,-1.42, 1.41006,0.771675,-1.41006, 1.179525,0.771675,-1.60723, + 0.919439,0.771675,-1.767222, 0.92592,0.9,-1.77968, 1.18784,0.9,-1.61856, + 1.18784,0.9,-1.61856, 1.179525,0.771675,-1.60723, 0.919439,0.771675,-1.767222, + 0.633613,0.771675,-1.886223, 0.63808,0.9,-1.89952, 0.92592,0.9,-1.77968, + 0.92592,0.9,-1.77968, 0.919439,0.771675,-1.767222, 0.633613,0.771675,-1.886223, + 0.325863,0.771675,-1.96042, 0.32816,0.9,-1.97424, 0.63808,0.9,-1.89952, + 0.63808,0.9,-1.89952, 0.633613,0.771675,-1.886223, 0.325863,0.771675,-1.96042, + 0,0.771675,-1.986, 0,0.9,-2, 0.32816,0.9,-1.97424, + 0.32816,0.9,-1.97424, 0.325863,0.771675,-1.96042, 0,0.771675,-1.986, + 1.92291,0.6564,-0.319628, 1.96042,0.771675,-0.325863, 1.986,0.771675,0, + 1.986,0.771675,0, 1.948,0.6564,0, 1.92291,0.6564,-0.319628, + 1.850132,0.6564,-0.62149, 1.886223,0.771675,-0.633613, 1.96042,0.771675,-0.325863, + 1.96042,0.771675,-0.325863, 1.92291,0.6564,-0.319628, 1.850132,0.6564,-0.62149, + 1.733408,0.6564,-0.901846, 1.767222,0.771675,-0.919439, 1.886223,0.771675,-0.633613, + 1.886223,0.771675,-0.633613, 1.850132,0.6564,-0.62149, 1.733408,0.6564,-0.901846, + 1.576477,0.6564,-1.156956, 1.60723,0.771675,-1.179525, 1.767222,0.771675,-0.919439, + 1.767222,0.771675,-0.919439, 1.733408,0.6564,-0.901846, 1.576477,0.6564,-1.156956, + 1.38308,0.6564,-1.38308, 1.41006,0.771675,-1.41006, 1.60723,0.771675,-1.179525, + 1.60723,0.771675,-1.179525, 1.576477,0.6564,-1.156956, 1.38308,0.6564,-1.38308, + 1.156956,0.6564,-1.576477, 1.179525,0.771675,-1.60723, 1.41006,0.771675,-1.41006, + 1.41006,0.771675,-1.41006, 1.38308,0.6564,-1.38308, 1.156956,0.6564,-1.576477, + 0.901846,0.6564,-1.733408, 0.919439,0.771675,-1.767222, 1.179525,0.771675,-1.60723, + 1.179525,0.771675,-1.60723, 1.156956,0.6564,-1.576477, 0.901846,0.6564,-1.733408, + 0.62149,0.6564,-1.850132, 0.633613,0.771675,-1.886223, 0.919439,0.771675,-1.767222, + 0.919439,0.771675,-1.767222, 0.901846,0.6564,-1.733408, 0.62149,0.6564,-1.850132, + 0.319628,0.6564,-1.92291, 0.325863,0.771675,-1.96042, 0.633613,0.771675,-1.886223, + 0.633613,0.771675,-1.886223, 0.62149,0.6564,-1.850132, 0.319628,0.6564,-1.92291, + 0,0.6564,-1.948, 0,0.771675,-1.986, 0.325863,0.771675,-1.96042, + 0.325863,0.771675,-1.96042, 0.319628,0.6564,-1.92291, 0,0.6564,-1.948, + 1.867631,0.553725,-0.310439, 1.92291,0.6564,-0.319628, 1.948,0.6564,0, + 1.948,0.6564,0, 1.892,0.553725,0, 1.867631,0.553725,-0.310439, + 1.796946,0.553725,-0.603624, 1.850132,0.6564,-0.62149, 1.92291,0.6564,-0.319628, + 1.92291,0.6564,-0.319628, 1.867631,0.553725,-0.310439, 1.796946,0.553725,-0.603624, + 1.683577,0.553725,-0.87592, 1.733408,0.6564,-0.901846, 1.850132,0.6564,-0.62149, + 1.850132,0.6564,-0.62149, 1.796946,0.553725,-0.603624, 1.683577,0.553725,-0.87592, + 1.531158,0.553725,-1.123697, 1.576477,0.6564,-1.156956, 1.733408,0.6564,-0.901846, + 1.733408,0.6564,-0.901846, 1.683577,0.553725,-0.87592, 1.531158,0.553725,-1.123697, + 1.34332,0.553725,-1.34332, 1.38308,0.6564,-1.38308, 1.576477,0.6564,-1.156956, + 1.576477,0.6564,-1.156956, 1.531158,0.553725,-1.123697, 1.34332,0.553725,-1.34332, + 1.123697,0.553725,-1.531158, 1.156956,0.6564,-1.576477, 1.38308,0.6564,-1.38308, + 1.38308,0.6564,-1.38308, 1.34332,0.553725,-1.34332, 1.123697,0.553725,-1.531158, + 0.87592,0.553725,-1.683577, 0.901846,0.6564,-1.733408, 1.156956,0.6564,-1.576477, + 1.156956,0.6564,-1.576477, 1.123697,0.553725,-1.531158, 0.87592,0.553725,-1.683577, + 0.603624,0.553725,-1.796946, 0.62149,0.6564,-1.850132, 0.901846,0.6564,-1.733408, + 0.901846,0.6564,-1.733408, 0.87592,0.553725,-1.683577, 0.603624,0.553725,-1.796946, + 0.310439,0.553725,-1.867631, 0.319628,0.6564,-1.92291, 0.62149,0.6564,-1.850132, + 0.62149,0.6564,-1.850132, 0.603624,0.553725,-1.796946, 0.310439,0.553725,-1.867631, + 0,0.553725,-1.892, 0,0.6564,-1.948, 0.319628,0.6564,-1.92291, + 0.319628,0.6564,-1.92291, 0.310439,0.553725,-1.867631, 0,0.553725,-1.892, + 1.800507,0.4632,-0.299282, 1.867631,0.553725,-0.310439, 1.892,0.553725,0, + 1.892,0.553725,0, 1.824,0.4632,0, 1.800507,0.4632,-0.299282, + 1.732362,0.4632,-0.581929, 1.796946,0.553725,-0.603624, 1.867631,0.553725,-0.310439, + 1.867631,0.553725,-0.310439, 1.800507,0.4632,-0.299282, 1.732362,0.4632,-0.581929, + 1.623068,0.4632,-0.844439, 1.683577,0.553725,-0.87592, 1.796946,0.553725,-0.603624, + 1.796946,0.553725,-0.603624, 1.732362,0.4632,-0.581929, 1.623068,0.4632,-0.844439, + 1.476127,0.4632,-1.08331, 1.531158,0.553725,-1.123697, 1.683577,0.553725,-0.87592, + 1.683577,0.553725,-0.87592, 1.623068,0.4632,-0.844439, 1.476127,0.4632,-1.08331, + 1.29504,0.4632,-1.29504, 1.34332,0.553725,-1.34332, 1.531158,0.553725,-1.123697, + 1.531158,0.553725,-1.123697, 1.476127,0.4632,-1.08331, 1.29504,0.4632,-1.29504, + 1.08331,0.4632,-1.476127, 1.123697,0.553725,-1.531158, 1.34332,0.553725,-1.34332, + 1.34332,0.553725,-1.34332, 1.29504,0.4632,-1.29504, 1.08331,0.4632,-1.476127, + 0.844439,0.4632,-1.623068, 0.87592,0.553725,-1.683577, 1.123697,0.553725,-1.531158, + 1.123697,0.553725,-1.531158, 1.08331,0.4632,-1.476127, 0.844439,0.4632,-1.623068, + 0.581929,0.4632,-1.732362, 0.603624,0.553725,-1.796946, 0.87592,0.553725,-1.683577, + 0.87592,0.553725,-1.683577, 0.844439,0.4632,-1.623068, 0.581929,0.4632,-1.732362, + 0.299282,0.4632,-1.800507, 0.310439,0.553725,-1.867631, 0.603624,0.553725,-1.796946, + 0.603624,0.553725,-1.796946, 0.581929,0.4632,-1.732362, 0.299282,0.4632,-1.800507, + 0,0.4632,-1.824, 0,0.553725,-1.892, 0.310439,0.553725,-1.867631, + 0.310439,0.553725,-1.867631, 0.299282,0.4632,-1.800507, 0,0.4632,-1.824, + 1.72746,0.384375,-0.28714, 1.800507,0.4632,-0.299282, 1.824,0.4632,0, + 1.824,0.4632,0, 1.75,0.384375,0, 1.72746,0.384375,-0.28714, + 1.66208,0.384375,-0.55832, 1.732362,0.4632,-0.581929, 1.800507,0.4632,-0.299282, + 1.800507,0.4632,-0.299282, 1.72746,0.384375,-0.28714, 1.66208,0.384375,-0.55832, + 1.55722,0.384375,-0.81018, 1.623068,0.4632,-0.844439, 1.732362,0.4632,-0.581929, + 1.732362,0.4632,-0.581929, 1.66208,0.384375,-0.55832, 1.55722,0.384375,-0.81018, + 1.41624,0.384375,-1.03936, 1.476127,0.4632,-1.08331, 1.623068,0.4632,-0.844439, + 1.623068,0.4632,-0.844439, 1.55722,0.384375,-0.81018, 1.41624,0.384375,-1.03936, + 1.2425,0.384375,-1.2425, 1.29504,0.4632,-1.29504, 1.476127,0.4632,-1.08331, + 1.476127,0.4632,-1.08331, 1.41624,0.384375,-1.03936, 1.2425,0.384375,-1.2425, + 1.03936,0.384375,-1.41624, 1.08331,0.4632,-1.476127, 1.29504,0.4632,-1.29504, + 1.29504,0.4632,-1.29504, 1.2425,0.384375,-1.2425, 1.03936,0.384375,-1.41624, + 0.81018,0.384375,-1.55722, 0.844439,0.4632,-1.623068, 1.08331,0.4632,-1.476127, + 1.08331,0.4632,-1.476127, 1.03936,0.384375,-1.41624, 0.81018,0.384375,-1.55722, + 0.55832,0.384375,-1.66208, 0.581929,0.4632,-1.732362, 0.844439,0.4632,-1.623068, + 0.844439,0.4632,-1.623068, 0.81018,0.384375,-1.55722, 0.55832,0.384375,-1.66208, + 0.28714,0.384375,-1.72746, 0.299282,0.4632,-1.800507, 0.581929,0.4632,-1.732362, + 0.581929,0.4632,-1.732362, 0.55832,0.384375,-1.66208, 0.28714,0.384375,-1.72746, + 0,0.384375,-1.75, 0,0.4632,-1.824, 0.299282,0.4632,-1.800507, + 0.299282,0.4632,-1.800507, 0.28714,0.384375,-1.72746, 0,0.384375,-1.75, + 1.654413,0.3168,-0.274998, 1.72746,0.384375,-0.28714, 1.75,0.384375,0, + 1.75,0.384375,0, 1.676,0.3168,0, 1.654413,0.3168,-0.274998, + 1.591798,0.3168,-0.534711, 1.66208,0.384375,-0.55832, 1.72746,0.384375,-0.28714, + 1.72746,0.384375,-0.28714, 1.654413,0.3168,-0.274998, 1.591798,0.3168,-0.534711, + 1.491372,0.3168,-0.775921, 1.55722,0.384375,-0.81018, 1.66208,0.384375,-0.55832, + 1.66208,0.384375,-0.55832, 1.591798,0.3168,-0.534711, 1.491372,0.3168,-0.775921, + 1.356353,0.3168,-0.99541, 1.41624,0.384375,-1.03936, 1.55722,0.384375,-0.81018, + 1.55722,0.384375,-0.81018, 1.491372,0.3168,-0.775921, 1.356353,0.3168,-0.99541, + 1.18996,0.3168,-1.18996, 1.2425,0.384375,-1.2425, 1.41624,0.384375,-1.03936, + 1.41624,0.384375,-1.03936, 1.356353,0.3168,-0.99541, 1.18996,0.3168,-1.18996, + 0.99541,0.3168,-1.356353, 1.03936,0.384375,-1.41624, 1.2425,0.384375,-1.2425, + 1.2425,0.384375,-1.2425, 1.18996,0.3168,-1.18996, 0.99541,0.3168,-1.356353, + 0.775921,0.3168,-1.491372, 0.81018,0.384375,-1.55722, 1.03936,0.384375,-1.41624, + 1.03936,0.384375,-1.41624, 0.99541,0.3168,-1.356353, 0.775921,0.3168,-1.491372, + 0.534711,0.3168,-1.591798, 0.55832,0.384375,-1.66208, 0.81018,0.384375,-1.55722, + 0.81018,0.384375,-1.55722, 0.775921,0.3168,-1.491372, 0.534711,0.3168,-1.591798, + 0.274998,0.3168,-1.654413, 0.28714,0.384375,-1.72746, 0.55832,0.384375,-1.66208, + 0.55832,0.384375,-1.66208, 0.534711,0.3168,-1.591798, 0.274998,0.3168,-1.654413, + 0,0.3168,-1.676, 0,0.384375,-1.75, 0.28714,0.384375,-1.72746, + 0.28714,0.384375,-1.72746, 0.274998,0.3168,-1.654413, 0,0.3168,-1.676, + 1.587289,0.260025,-0.263841, 1.654413,0.3168,-0.274998, 1.676,0.3168,0, + 1.676,0.3168,0, 1.608,0.260025,0, 1.587289,0.260025,-0.263841, + 1.527214,0.260025,-0.513016, 1.591798,0.3168,-0.534711, 1.654413,0.3168,-0.274998, + 1.654413,0.3168,-0.274998, 1.587289,0.260025,-0.263841, 1.527214,0.260025,-0.513016, + 1.430863,0.260025,-0.74444, 1.491372,0.3168,-0.775921, 1.591798,0.3168,-0.534711, + 1.591798,0.3168,-0.534711, 1.527214,0.260025,-0.513016, 1.430863,0.260025,-0.74444, + 1.301322,0.260025,-0.955023, 1.356353,0.3168,-0.99541, 1.491372,0.3168,-0.775921, + 1.491372,0.3168,-0.775921, 1.430863,0.260025,-0.74444, 1.301322,0.260025,-0.955023, + 1.14168,0.260025,-1.14168, 1.18996,0.3168,-1.18996, 1.356353,0.3168,-0.99541, + 1.356353,0.3168,-0.99541, 1.301322,0.260025,-0.955023, 1.14168,0.260025,-1.14168, + 0.955023,0.260025,-1.301322, 0.99541,0.3168,-1.356353, 1.18996,0.3168,-1.18996, + 1.18996,0.3168,-1.18996, 1.14168,0.260025,-1.14168, 0.955023,0.260025,-1.301322, + 0.74444,0.260025,-1.430863, 0.775921,0.3168,-1.491372, 0.99541,0.3168,-1.356353, + 0.99541,0.3168,-1.356353, 0.955023,0.260025,-1.301322, 0.74444,0.260025,-1.430863, + 0.513016,0.260025,-1.527214, 0.534711,0.3168,-1.591798, 0.775921,0.3168,-1.491372, + 0.775921,0.3168,-1.491372, 0.74444,0.260025,-1.430863, 0.513016,0.260025,-1.527214, + 0.263841,0.260025,-1.587289, 0.274998,0.3168,-1.654413, 0.534711,0.3168,-1.591798, + 0.534711,0.3168,-1.591798, 0.513016,0.260025,-1.527214, 0.263841,0.260025,-1.587289, + 0,0.260025,-1.608, 0,0.3168,-1.676, 0.274998,0.3168,-1.654413, + 0.274998,0.3168,-1.654413, 0.263841,0.260025,-1.587289, 0,0.260025,-1.608, + 1.53201,0.2136,-0.254652, 1.587289,0.260025,-0.263841, 1.608,0.260025,0, + 1.608,0.260025,0, 1.552,0.2136,0, 1.53201,0.2136,-0.254652, + 1.474028,0.2136,-0.49515, 1.527214,0.260025,-0.513016, 1.587289,0.260025,-0.263841, + 1.587289,0.260025,-0.263841, 1.53201,0.2136,-0.254652, 1.474028,0.2136,-0.49515, + 1.381032,0.2136,-0.718514, 1.430863,0.260025,-0.74444, 1.527214,0.260025,-0.513016, + 1.527214,0.260025,-0.513016, 1.474028,0.2136,-0.49515, 1.381032,0.2136,-0.718514, + 1.256003,0.2136,-0.921764, 1.301322,0.260025,-0.955023, 1.430863,0.260025,-0.74444, + 1.430863,0.260025,-0.74444, 1.381032,0.2136,-0.718514, 1.256003,0.2136,-0.921764, + 1.10192,0.2136,-1.10192, 1.14168,0.260025,-1.14168, 1.301322,0.260025,-0.955023, + 1.301322,0.260025,-0.955023, 1.256003,0.2136,-0.921764, 1.10192,0.2136,-1.10192, + 0.921764,0.2136,-1.256003, 0.955023,0.260025,-1.301322, 1.14168,0.260025,-1.14168, + 1.14168,0.260025,-1.14168, 1.10192,0.2136,-1.10192, 0.921764,0.2136,-1.256003, + 0.718514,0.2136,-1.381032, 0.74444,0.260025,-1.430863, 0.955023,0.260025,-1.301322, + 0.955023,0.260025,-1.301322, 0.921764,0.2136,-1.256003, 0.718514,0.2136,-1.381032, + 0.49515,0.2136,-1.474028, 0.513016,0.260025,-1.527214, 0.74444,0.260025,-1.430863, + 0.74444,0.260025,-1.430863, 0.718514,0.2136,-1.381032, 0.49515,0.2136,-1.474028, + 0.254652,0.2136,-1.53201, 0.263841,0.260025,-1.587289, 0.513016,0.260025,-1.527214, + 0.513016,0.260025,-1.527214, 0.49515,0.2136,-1.474028, 0.254652,0.2136,-1.53201, + 0,0.2136,-1.552, 0,0.260025,-1.608, 0.263841,0.260025,-1.587289, + 0.263841,0.260025,-1.587289, 0.254652,0.2136,-1.53201, 0,0.2136,-1.552, + 1.4945,0.177075,-0.248417, 1.53201,0.2136,-0.254652, 1.552,0.2136,0, + 1.552,0.2136,0, 1.514,0.177075,0, 1.4945,0.177075,-0.248417, + 1.437937,0.177075,-0.483027, 1.474028,0.2136,-0.49515, 1.53201,0.2136,-0.254652, + 1.53201,0.2136,-0.254652, 1.4945,0.177075,-0.248417, 1.437937,0.177075,-0.483027, + 1.347218,0.177075,-0.700921, 1.381032,0.2136,-0.718514, 1.474028,0.2136,-0.49515, + 1.474028,0.2136,-0.49515, 1.437937,0.177075,-0.483027, 1.347218,0.177075,-0.700921, + 1.22525,0.177075,-0.899195, 1.256003,0.2136,-0.921764, 1.381032,0.2136,-0.718514, + 1.381032,0.2136,-0.718514, 1.347218,0.177075,-0.700921, 1.22525,0.177075,-0.899195, + 1.07494,0.177075,-1.07494, 1.10192,0.2136,-1.10192, 1.256003,0.2136,-0.921764, + 1.256003,0.2136,-0.921764, 1.22525,0.177075,-0.899195, 1.07494,0.177075,-1.07494, + 0.899195,0.177075,-1.22525, 0.921764,0.2136,-1.256003, 1.10192,0.2136,-1.10192, + 1.10192,0.2136,-1.10192, 1.07494,0.177075,-1.07494, 0.899195,0.177075,-1.22525, + 0.700921,0.177075,-1.347218, 0.718514,0.2136,-1.381032, 0.921764,0.2136,-1.256003, + 0.921764,0.2136,-1.256003, 0.899195,0.177075,-1.22525, 0.700921,0.177075,-1.347218, + 0.483027,0.177075,-1.437937, 0.49515,0.2136,-1.474028, 0.718514,0.2136,-1.381032, + 0.718514,0.2136,-1.381032, 0.700921,0.177075,-1.347218, 0.483027,0.177075,-1.437937, + 0.248417,0.177075,-1.4945, 0.254652,0.2136,-1.53201, 0.49515,0.2136,-1.474028, + 0.49515,0.2136,-1.474028, 0.483027,0.177075,-1.437937, 0.248417,0.177075,-1.4945, + 0,0.177075,-1.514, 0,0.2136,-1.552, 0.254652,0.2136,-1.53201, + 0.254652,0.2136,-1.53201, 0.248417,0.177075,-1.4945, 0,0.177075,-1.514, + 1.48068,0.15,-0.24612, 1.4945,0.177075,-0.248417, 1.514,0.177075,0, + 1.514,0.177075,0, 1.5,0.15,0, 1.48068,0.15,-0.24612, + 1.42464,0.15,-0.47856, 1.437937,0.177075,-0.483027, 1.4945,0.177075,-0.248417, + 1.4945,0.177075,-0.248417, 1.48068,0.15,-0.24612, 1.42464,0.15,-0.47856, + 1.33476,0.15,-0.69444, 1.347218,0.177075,-0.700921, 1.437937,0.177075,-0.483027, + 1.437937,0.177075,-0.483027, 1.42464,0.15,-0.47856, 1.33476,0.15,-0.69444, + 1.21392,0.15,-0.89088, 1.22525,0.177075,-0.899195, 1.347218,0.177075,-0.700921, + 1.347218,0.177075,-0.700921, 1.33476,0.15,-0.69444, 1.21392,0.15,-0.89088, + 1.065,0.15,-1.065, 1.07494,0.177075,-1.07494, 1.22525,0.177075,-0.899195, + 1.22525,0.177075,-0.899195, 1.21392,0.15,-0.89088, 1.065,0.15,-1.065, + 0.89088,0.15,-1.21392, 0.899195,0.177075,-1.22525, 1.07494,0.177075,-1.07494, + 1.07494,0.177075,-1.07494, 1.065,0.15,-1.065, 0.89088,0.15,-1.21392, + 0.69444,0.15,-1.33476, 0.700921,0.177075,-1.347218, 0.899195,0.177075,-1.22525, + 0.899195,0.177075,-1.22525, 0.89088,0.15,-1.21392, 0.69444,0.15,-1.33476, + 0.47856,0.15,-1.42464, 0.483027,0.177075,-1.437937, 0.700921,0.177075,-1.347218, + 0.700921,0.177075,-1.347218, 0.69444,0.15,-1.33476, 0.47856,0.15,-1.42464, + 0.24612,0.15,-1.48068, 0.248417,0.177075,-1.4945, 0.483027,0.177075,-1.437937, + 0.483027,0.177075,-1.437937, 0.47856,0.15,-1.42464, 0.24612,0.15,-1.48068, + 0,0.15,-1.5, 0,0.177075,-1.514, 0.248417,0.177075,-1.4945, + 0.248417,0.177075,-1.4945, 0.24612,0.15,-1.48068, 0,0.15,-1.5, + -0.325863,0.771675,-1.96042, -0.32816,0.9,-1.97424, 0,0.9,-2, + 0,0.9,-2, 0,0.771675,-1.986, -0.325863,0.771675,-1.96042, + -0.633613,0.771675,-1.886223, -0.63808,0.9,-1.89952, -0.32816,0.9,-1.97424, + -0.32816,0.9,-1.97424, -0.325863,0.771675,-1.96042, -0.633613,0.771675,-1.886223, + -0.919439,0.771675,-1.767222, -0.92592,0.9,-1.77968, -0.63808,0.9,-1.89952, + -0.63808,0.9,-1.89952, -0.633613,0.771675,-1.886223, -0.919439,0.771675,-1.767222, + -1.179525,0.771675,-1.60723, -1.18784,0.9,-1.61856, -0.92592,0.9,-1.77968, + -0.92592,0.9,-1.77968, -0.919439,0.771675,-1.767222, -1.179525,0.771675,-1.60723, + -1.41006,0.771675,-1.41006, -1.42,0.9,-1.42, -1.18784,0.9,-1.61856, + -1.18784,0.9,-1.61856, -1.179525,0.771675,-1.60723, -1.41006,0.771675,-1.41006, + -1.60723,0.771675,-1.179525, -1.61856,0.9,-1.18784, -1.42,0.9,-1.42, + -1.42,0.9,-1.42, -1.41006,0.771675,-1.41006, -1.60723,0.771675,-1.179525, + -1.767222,0.771675,-0.919439, -1.77968,0.9,-0.92592, -1.61856,0.9,-1.18784, + -1.61856,0.9,-1.18784, -1.60723,0.771675,-1.179525, -1.767222,0.771675,-0.919439, + -1.886223,0.771675,-0.633613, -1.89952,0.9,-0.63808, -1.77968,0.9,-0.92592, + -1.77968,0.9,-0.92592, -1.767222,0.771675,-0.919439, -1.886223,0.771675,-0.633613, + -1.96042,0.771675,-0.325863, -1.97424,0.9,-0.32816, -1.89952,0.9,-0.63808, + -1.89952,0.9,-0.63808, -1.886223,0.771675,-0.633613, -1.96042,0.771675,-0.325863, + -1.986,0.771675,0, -2,0.9,0, -1.97424,0.9,-0.32816, + -1.97424,0.9,-0.32816, -1.96042,0.771675,-0.325863, -1.986,0.771675,0, + -0.319628,0.6564,-1.92291, -0.325863,0.771675,-1.96042, 0,0.771675,-1.986, + 0,0.771675,-1.986, 0,0.6564,-1.948, -0.319628,0.6564,-1.92291, + -0.62149,0.6564,-1.850132, -0.633613,0.771675,-1.886223, -0.325863,0.771675,-1.96042, + -0.325863,0.771675,-1.96042, -0.319628,0.6564,-1.92291, -0.62149,0.6564,-1.850132, + -0.901846,0.6564,-1.733408, -0.919439,0.771675,-1.767222, -0.633613,0.771675,-1.886223, + -0.633613,0.771675,-1.886223, -0.62149,0.6564,-1.850132, -0.901846,0.6564,-1.733408, + -1.156956,0.6564,-1.576477, -1.179525,0.771675,-1.60723, -0.919439,0.771675,-1.767222, + -0.919439,0.771675,-1.767222, -0.901846,0.6564,-1.733408, -1.156956,0.6564,-1.576477, + -1.38308,0.6564,-1.38308, -1.41006,0.771675,-1.41006, -1.179525,0.771675,-1.60723, + -1.179525,0.771675,-1.60723, -1.156956,0.6564,-1.576477, -1.38308,0.6564,-1.38308, + -1.576477,0.6564,-1.156956, -1.60723,0.771675,-1.179525, -1.41006,0.771675,-1.41006, + -1.41006,0.771675,-1.41006, -1.38308,0.6564,-1.38308, -1.576477,0.6564,-1.156956, + -1.733408,0.6564,-0.901846, -1.767222,0.771675,-0.919439, -1.60723,0.771675,-1.179525, + -1.60723,0.771675,-1.179525, -1.576477,0.6564,-1.156956, -1.733408,0.6564,-0.901846, + -1.850132,0.6564,-0.62149, -1.886223,0.771675,-0.633613, -1.767222,0.771675,-0.919439, + -1.767222,0.771675,-0.919439, -1.733408,0.6564,-0.901846, -1.850132,0.6564,-0.62149, + -1.92291,0.6564,-0.319628, -1.96042,0.771675,-0.325863, -1.886223,0.771675,-0.633613, + -1.886223,0.771675,-0.633613, -1.850132,0.6564,-0.62149, -1.92291,0.6564,-0.319628, + -1.948,0.6564,0, -1.986,0.771675,0, -1.96042,0.771675,-0.325863, + -1.96042,0.771675,-0.325863, -1.92291,0.6564,-0.319628, -1.948,0.6564,0, + -0.310439,0.553725,-1.867631, -0.319628,0.6564,-1.92291, 0,0.6564,-1.948, + 0,0.6564,-1.948, 0,0.553725,-1.892, -0.310439,0.553725,-1.867631, + -0.603624,0.553725,-1.796946, -0.62149,0.6564,-1.850132, -0.319628,0.6564,-1.92291, + -0.319628,0.6564,-1.92291, -0.310439,0.553725,-1.867631, -0.603624,0.553725,-1.796946, + -0.87592,0.553725,-1.683577, -0.901846,0.6564,-1.733408, -0.62149,0.6564,-1.850132, + -0.62149,0.6564,-1.850132, -0.603624,0.553725,-1.796946, -0.87592,0.553725,-1.683577, + -1.123697,0.553725,-1.531158, -1.156956,0.6564,-1.576477, -0.901846,0.6564,-1.733408, + -0.901846,0.6564,-1.733408, -0.87592,0.553725,-1.683577, -1.123697,0.553725,-1.531158, + -1.34332,0.553725,-1.34332, -1.38308,0.6564,-1.38308, -1.156956,0.6564,-1.576477, + -1.156956,0.6564,-1.576477, -1.123697,0.553725,-1.531158, -1.34332,0.553725,-1.34332, + -1.531158,0.553725,-1.123697, -1.576477,0.6564,-1.156956, -1.38308,0.6564,-1.38308, + -1.38308,0.6564,-1.38308, -1.34332,0.553725,-1.34332, -1.531158,0.553725,-1.123697, + -1.683577,0.553725,-0.87592, -1.733408,0.6564,-0.901846, -1.576477,0.6564,-1.156956, + -1.576477,0.6564,-1.156956, -1.531158,0.553725,-1.123697, -1.683577,0.553725,-0.87592, + -1.796946,0.553725,-0.603624, -1.850132,0.6564,-0.62149, -1.733408,0.6564,-0.901846, + -1.733408,0.6564,-0.901846, -1.683577,0.553725,-0.87592, -1.796946,0.553725,-0.603624, + -1.867631,0.553725,-0.310439, -1.92291,0.6564,-0.319628, -1.850132,0.6564,-0.62149, + -1.850132,0.6564,-0.62149, -1.796946,0.553725,-0.603624, -1.867631,0.553725,-0.310439, + -1.892,0.553725,0, -1.948,0.6564,0, -1.92291,0.6564,-0.319628, + -1.92291,0.6564,-0.319628, -1.867631,0.553725,-0.310439, -1.892,0.553725,0, + -0.299282,0.4632,-1.800507, -0.310439,0.553725,-1.867631, 0,0.553725,-1.892, + 0,0.553725,-1.892, 0,0.4632,-1.824, -0.299282,0.4632,-1.800507, + -0.581929,0.4632,-1.732362, -0.603624,0.553725,-1.796946, -0.310439,0.553725,-1.867631, + -0.310439,0.553725,-1.867631, -0.299282,0.4632,-1.800507, -0.581929,0.4632,-1.732362, + -0.844439,0.4632,-1.623068, -0.87592,0.553725,-1.683577, -0.603624,0.553725,-1.796946, + -0.603624,0.553725,-1.796946, -0.581929,0.4632,-1.732362, -0.844439,0.4632,-1.623068, + -1.08331,0.4632,-1.476127, -1.123697,0.553725,-1.531158, -0.87592,0.553725,-1.683577, + -0.87592,0.553725,-1.683577, -0.844439,0.4632,-1.623068, -1.08331,0.4632,-1.476127, + -1.29504,0.4632,-1.29504, -1.34332,0.553725,-1.34332, -1.123697,0.553725,-1.531158, + -1.123697,0.553725,-1.531158, -1.08331,0.4632,-1.476127, -1.29504,0.4632,-1.29504, + -1.476127,0.4632,-1.08331, -1.531158,0.553725,-1.123697, -1.34332,0.553725,-1.34332, + -1.34332,0.553725,-1.34332, -1.29504,0.4632,-1.29504, -1.476127,0.4632,-1.08331, + -1.623068,0.4632,-0.844439, -1.683577,0.553725,-0.87592, -1.531158,0.553725,-1.123697, + -1.531158,0.553725,-1.123697, -1.476127,0.4632,-1.08331, -1.623068,0.4632,-0.844439, + -1.732362,0.4632,-0.581929, -1.796946,0.553725,-0.603624, -1.683577,0.553725,-0.87592, + -1.683577,0.553725,-0.87592, -1.623068,0.4632,-0.844439, -1.732362,0.4632,-0.581929, + -1.800507,0.4632,-0.299282, -1.867631,0.553725,-0.310439, -1.796946,0.553725,-0.603624, + -1.796946,0.553725,-0.603624, -1.732362,0.4632,-0.581929, -1.800507,0.4632,-0.299282, + -1.824,0.4632,0, -1.892,0.553725,0, -1.867631,0.553725,-0.310439, + -1.867631,0.553725,-0.310439, -1.800507,0.4632,-0.299282, -1.824,0.4632,0, + -0.28714,0.384375,-1.72746, -0.299282,0.4632,-1.800507, 0,0.4632,-1.824, + 0,0.4632,-1.824, 0,0.384375,-1.75, -0.28714,0.384375,-1.72746, + -0.55832,0.384375,-1.66208, -0.581929,0.4632,-1.732362, -0.299282,0.4632,-1.800507, + -0.299282,0.4632,-1.800507, -0.28714,0.384375,-1.72746, -0.55832,0.384375,-1.66208, + -0.81018,0.384375,-1.55722, -0.844439,0.4632,-1.623068, -0.581929,0.4632,-1.732362, + -0.581929,0.4632,-1.732362, -0.55832,0.384375,-1.66208, -0.81018,0.384375,-1.55722, + -1.03936,0.384375,-1.41624, -1.08331,0.4632,-1.476127, -0.844439,0.4632,-1.623068, + -0.844439,0.4632,-1.623068, -0.81018,0.384375,-1.55722, -1.03936,0.384375,-1.41624, + -1.2425,0.384375,-1.2425, -1.29504,0.4632,-1.29504, -1.08331,0.4632,-1.476127, + -1.08331,0.4632,-1.476127, -1.03936,0.384375,-1.41624, -1.2425,0.384375,-1.2425, + -1.41624,0.384375,-1.03936, -1.476127,0.4632,-1.08331, -1.29504,0.4632,-1.29504, + -1.29504,0.4632,-1.29504, -1.2425,0.384375,-1.2425, -1.41624,0.384375,-1.03936, + -1.55722,0.384375,-0.81018, -1.623068,0.4632,-0.844439, -1.476127,0.4632,-1.08331, + -1.476127,0.4632,-1.08331, -1.41624,0.384375,-1.03936, -1.55722,0.384375,-0.81018, + -1.66208,0.384375,-0.55832, -1.732362,0.4632,-0.581929, -1.623068,0.4632,-0.844439, + -1.623068,0.4632,-0.844439, -1.55722,0.384375,-0.81018, -1.66208,0.384375,-0.55832, + -1.72746,0.384375,-0.28714, -1.800507,0.4632,-0.299282, -1.732362,0.4632,-0.581929, + -1.732362,0.4632,-0.581929, -1.66208,0.384375,-0.55832, -1.72746,0.384375,-0.28714, + -1.75,0.384375,0, -1.824,0.4632,0, -1.800507,0.4632,-0.299282, + -1.800507,0.4632,-0.299282, -1.72746,0.384375,-0.28714, -1.75,0.384375,0, + -0.274998,0.3168,-1.654413, -0.28714,0.384375,-1.72746, 0,0.384375,-1.75, + 0,0.384375,-1.75, 0,0.3168,-1.676, -0.274998,0.3168,-1.654413, + -0.534711,0.3168,-1.591798, -0.55832,0.384375,-1.66208, -0.28714,0.384375,-1.72746, + -0.28714,0.384375,-1.72746, -0.274998,0.3168,-1.654413, -0.534711,0.3168,-1.591798, + -0.775921,0.3168,-1.491372, -0.81018,0.384375,-1.55722, -0.55832,0.384375,-1.66208, + -0.55832,0.384375,-1.66208, -0.534711,0.3168,-1.591798, -0.775921,0.3168,-1.491372, + -0.99541,0.3168,-1.356353, -1.03936,0.384375,-1.41624, -0.81018,0.384375,-1.55722, + -0.81018,0.384375,-1.55722, -0.775921,0.3168,-1.491372, -0.99541,0.3168,-1.356353, + -1.18996,0.3168,-1.18996, -1.2425,0.384375,-1.2425, -1.03936,0.384375,-1.41624, + -1.03936,0.384375,-1.41624, -0.99541,0.3168,-1.356353, -1.18996,0.3168,-1.18996, + -1.356353,0.3168,-0.99541, -1.41624,0.384375,-1.03936, -1.2425,0.384375,-1.2425, + -1.2425,0.384375,-1.2425, -1.18996,0.3168,-1.18996, -1.356353,0.3168,-0.99541, + -1.491372,0.3168,-0.775921, -1.55722,0.384375,-0.81018, -1.41624,0.384375,-1.03936, + -1.41624,0.384375,-1.03936, -1.356353,0.3168,-0.99541, -1.491372,0.3168,-0.775921, + -1.591798,0.3168,-0.534711, -1.66208,0.384375,-0.55832, -1.55722,0.384375,-0.81018, + -1.55722,0.384375,-0.81018, -1.491372,0.3168,-0.775921, -1.591798,0.3168,-0.534711, + -1.654413,0.3168,-0.274998, -1.72746,0.384375,-0.28714, -1.66208,0.384375,-0.55832, + -1.66208,0.384375,-0.55832, -1.591798,0.3168,-0.534711, -1.654413,0.3168,-0.274998, + -1.676,0.3168,0, -1.75,0.384375,0, -1.72746,0.384375,-0.28714, + -1.72746,0.384375,-0.28714, -1.654413,0.3168,-0.274998, -1.676,0.3168,0, + -0.263841,0.260025,-1.587289, -0.274998,0.3168,-1.654413, 0,0.3168,-1.676, + 0,0.3168,-1.676, 0,0.260025,-1.608, -0.263841,0.260025,-1.587289, + -0.513016,0.260025,-1.527214, -0.534711,0.3168,-1.591798, -0.274998,0.3168,-1.654413, + -0.274998,0.3168,-1.654413, -0.263841,0.260025,-1.587289, -0.513016,0.260025,-1.527214, + -0.74444,0.260025,-1.430863, -0.775921,0.3168,-1.491372, -0.534711,0.3168,-1.591798, + -0.534711,0.3168,-1.591798, -0.513016,0.260025,-1.527214, -0.74444,0.260025,-1.430863, + -0.955023,0.260025,-1.301322, -0.99541,0.3168,-1.356353, -0.775921,0.3168,-1.491372, + -0.775921,0.3168,-1.491372, -0.74444,0.260025,-1.430863, -0.955023,0.260025,-1.301322, + -1.14168,0.260025,-1.14168, -1.18996,0.3168,-1.18996, -0.99541,0.3168,-1.356353, + -0.99541,0.3168,-1.356353, -0.955023,0.260025,-1.301322, -1.14168,0.260025,-1.14168, + -1.301322,0.260025,-0.955023, -1.356353,0.3168,-0.99541, -1.18996,0.3168,-1.18996, + -1.18996,0.3168,-1.18996, -1.14168,0.260025,-1.14168, -1.301322,0.260025,-0.955023, + -1.430863,0.260025,-0.74444, -1.491372,0.3168,-0.775921, -1.356353,0.3168,-0.99541, + -1.356353,0.3168,-0.99541, -1.301322,0.260025,-0.955023, -1.430863,0.260025,-0.74444, + -1.527214,0.260025,-0.513016, -1.591798,0.3168,-0.534711, -1.491372,0.3168,-0.775921, + -1.491372,0.3168,-0.775921, -1.430863,0.260025,-0.74444, -1.527214,0.260025,-0.513016, + -1.587289,0.260025,-0.263841, -1.654413,0.3168,-0.274998, -1.591798,0.3168,-0.534711, + -1.591798,0.3168,-0.534711, -1.527214,0.260025,-0.513016, -1.587289,0.260025,-0.263841, + -1.608,0.260025,0, -1.676,0.3168,0, -1.654413,0.3168,-0.274998, + -1.654413,0.3168,-0.274998, -1.587289,0.260025,-0.263841, -1.608,0.260025,0, + -0.254652,0.2136,-1.53201, -0.263841,0.260025,-1.587289, 0,0.260025,-1.608, + 0,0.260025,-1.608, 0,0.2136,-1.552, -0.254652,0.2136,-1.53201, + -0.49515,0.2136,-1.474028, -0.513016,0.260025,-1.527214, -0.263841,0.260025,-1.587289, + -0.263841,0.260025,-1.587289, -0.254652,0.2136,-1.53201, -0.49515,0.2136,-1.474028, + -0.718514,0.2136,-1.381032, -0.74444,0.260025,-1.430863, -0.513016,0.260025,-1.527214, + -0.513016,0.260025,-1.527214, -0.49515,0.2136,-1.474028, -0.718514,0.2136,-1.381032, + -0.921764,0.2136,-1.256003, -0.955023,0.260025,-1.301322, -0.74444,0.260025,-1.430863, + -0.74444,0.260025,-1.430863, -0.718514,0.2136,-1.381032, -0.921764,0.2136,-1.256003, + -1.10192,0.2136,-1.10192, -1.14168,0.260025,-1.14168, -0.955023,0.260025,-1.301322, + -0.955023,0.260025,-1.301322, -0.921764,0.2136,-1.256003, -1.10192,0.2136,-1.10192, + -1.256003,0.2136,-0.921764, -1.301322,0.260025,-0.955023, -1.14168,0.260025,-1.14168, + -1.14168,0.260025,-1.14168, -1.10192,0.2136,-1.10192, -1.256003,0.2136,-0.921764, + -1.381032,0.2136,-0.718514, -1.430863,0.260025,-0.74444, -1.301322,0.260025,-0.955023, + -1.301322,0.260025,-0.955023, -1.256003,0.2136,-0.921764, -1.381032,0.2136,-0.718514, + -1.474028,0.2136,-0.49515, -1.527214,0.260025,-0.513016, -1.430863,0.260025,-0.74444, + -1.430863,0.260025,-0.74444, -1.381032,0.2136,-0.718514, -1.474028,0.2136,-0.49515, + -1.53201,0.2136,-0.254652, -1.587289,0.260025,-0.263841, -1.527214,0.260025,-0.513016, + -1.527214,0.260025,-0.513016, -1.474028,0.2136,-0.49515, -1.53201,0.2136,-0.254652, + -1.552,0.2136,0, -1.608,0.260025,0, -1.587289,0.260025,-0.263841, + -1.587289,0.260025,-0.263841, -1.53201,0.2136,-0.254652, -1.552,0.2136,0, + -0.248417,0.177075,-1.4945, -0.254652,0.2136,-1.53201, 0,0.2136,-1.552, + 0,0.2136,-1.552, 0,0.177075,-1.514, -0.248417,0.177075,-1.4945, + -0.483027,0.177075,-1.437937, -0.49515,0.2136,-1.474028, -0.254652,0.2136,-1.53201, + -0.254652,0.2136,-1.53201, -0.248417,0.177075,-1.4945, -0.483027,0.177075,-1.437937, + -0.700921,0.177075,-1.347218, -0.718514,0.2136,-1.381032, -0.49515,0.2136,-1.474028, + -0.49515,0.2136,-1.474028, -0.483027,0.177075,-1.437937, -0.700921,0.177075,-1.347218, + -0.899195,0.177075,-1.22525, -0.921764,0.2136,-1.256003, -0.718514,0.2136,-1.381032, + -0.718514,0.2136,-1.381032, -0.700921,0.177075,-1.347218, -0.899195,0.177075,-1.22525, + -1.07494,0.177075,-1.07494, -1.10192,0.2136,-1.10192, -0.921764,0.2136,-1.256003, + -0.921764,0.2136,-1.256003, -0.899195,0.177075,-1.22525, -1.07494,0.177075,-1.07494, + -1.22525,0.177075,-0.899195, -1.256003,0.2136,-0.921764, -1.10192,0.2136,-1.10192, + -1.10192,0.2136,-1.10192, -1.07494,0.177075,-1.07494, -1.22525,0.177075,-0.899195, + -1.347218,0.177075,-0.700921, -1.381032,0.2136,-0.718514, -1.256003,0.2136,-0.921764, + -1.256003,0.2136,-0.921764, -1.22525,0.177075,-0.899195, -1.347218,0.177075,-0.700921, + -1.437937,0.177075,-0.483027, -1.474028,0.2136,-0.49515, -1.381032,0.2136,-0.718514, + -1.381032,0.2136,-0.718514, -1.347218,0.177075,-0.700921, -1.437937,0.177075,-0.483027, + -1.4945,0.177075,-0.248417, -1.53201,0.2136,-0.254652, -1.474028,0.2136,-0.49515, + -1.474028,0.2136,-0.49515, -1.437937,0.177075,-0.483027, -1.4945,0.177075,-0.248417, + -1.514,0.177075,0, -1.552,0.2136,0, -1.53201,0.2136,-0.254652, + -1.53201,0.2136,-0.254652, -1.4945,0.177075,-0.248417, -1.514,0.177075,0, + -0.24612,0.15,-1.48068, -0.248417,0.177075,-1.4945, 0,0.177075,-1.514, + 0,0.177075,-1.514, 0,0.15,-1.5, -0.24612,0.15,-1.48068, + -0.47856,0.15,-1.42464, -0.483027,0.177075,-1.437937, -0.248417,0.177075,-1.4945, + -0.248417,0.177075,-1.4945, -0.24612,0.15,-1.48068, -0.47856,0.15,-1.42464, + -0.69444,0.15,-1.33476, -0.700921,0.177075,-1.347218, -0.483027,0.177075,-1.437937, + -0.483027,0.177075,-1.437937, -0.47856,0.15,-1.42464, -0.69444,0.15,-1.33476, + -0.89088,0.15,-1.21392, -0.899195,0.177075,-1.22525, -0.700921,0.177075,-1.347218, + -0.700921,0.177075,-1.347218, -0.69444,0.15,-1.33476, -0.89088,0.15,-1.21392, + -1.065,0.15,-1.065, -1.07494,0.177075,-1.07494, -0.899195,0.177075,-1.22525, + -0.899195,0.177075,-1.22525, -0.89088,0.15,-1.21392, -1.065,0.15,-1.065, + -1.21392,0.15,-0.89088, -1.22525,0.177075,-0.899195, -1.07494,0.177075,-1.07494, + -1.07494,0.177075,-1.07494, -1.065,0.15,-1.065, -1.21392,0.15,-0.89088, + -1.33476,0.15,-0.69444, -1.347218,0.177075,-0.700921, -1.22525,0.177075,-0.899195, + -1.22525,0.177075,-0.899195, -1.21392,0.15,-0.89088, -1.33476,0.15,-0.69444, + -1.42464,0.15,-0.47856, -1.437937,0.177075,-0.483027, -1.347218,0.177075,-0.700921, + -1.347218,0.177075,-0.700921, -1.33476,0.15,-0.69444, -1.42464,0.15,-0.47856, + -1.48068,0.15,-0.24612, -1.4945,0.177075,-0.248417, -1.437937,0.177075,-0.483027, + -1.437937,0.177075,-0.483027, -1.42464,0.15,-0.47856, -1.48068,0.15,-0.24612, + -1.5,0.15,0, -1.514,0.177075,0, -1.4945,0.177075,-0.248417, + -1.4945,0.177075,-0.248417, -1.48068,0.15,-0.24612, -1.5,0.15,0, + -1.96042,0.771675,0.325863, -1.97424,0.9,0.32816, -2,0.9,0, + -2,0.9,0, -1.986,0.771675,0, -1.96042,0.771675,0.325863, + -1.886223,0.771675,0.633613, -1.89952,0.9,0.63808, -1.97424,0.9,0.32816, + -1.97424,0.9,0.32816, -1.96042,0.771675,0.325863, -1.886223,0.771675,0.633613, + -1.767222,0.771675,0.919439, -1.77968,0.9,0.92592, -1.89952,0.9,0.63808, + -1.89952,0.9,0.63808, -1.886223,0.771675,0.633613, -1.767222,0.771675,0.919439, + -1.60723,0.771675,1.179525, -1.61856,0.9,1.18784, -1.77968,0.9,0.92592, + -1.77968,0.9,0.92592, -1.767222,0.771675,0.919439, -1.60723,0.771675,1.179525, + -1.41006,0.771675,1.41006, -1.42,0.9,1.42, -1.61856,0.9,1.18784, + -1.61856,0.9,1.18784, -1.60723,0.771675,1.179525, -1.41006,0.771675,1.41006, + -1.179525,0.771675,1.60723, -1.18784,0.9,1.61856, -1.42,0.9,1.42, + -1.42,0.9,1.42, -1.41006,0.771675,1.41006, -1.179525,0.771675,1.60723, + -0.919439,0.771675,1.767222, -0.92592,0.9,1.77968, -1.18784,0.9,1.61856, + -1.18784,0.9,1.61856, -1.179525,0.771675,1.60723, -0.919439,0.771675,1.767222, + -0.633613,0.771675,1.886223, -0.63808,0.9,1.89952, -0.92592,0.9,1.77968, + -0.92592,0.9,1.77968, -0.919439,0.771675,1.767222, -0.633613,0.771675,1.886223, + -0.325863,0.771675,1.96042, -0.32816,0.9,1.97424, -0.63808,0.9,1.89952, + -0.63808,0.9,1.89952, -0.633613,0.771675,1.886223, -0.325863,0.771675,1.96042, + 0,0.771675,1.986, 0,0.9,2, -0.32816,0.9,1.97424, + -0.32816,0.9,1.97424, -0.325863,0.771675,1.96042, 0,0.771675,1.986, + -1.92291,0.6564,0.319628, -1.96042,0.771675,0.325863, -1.986,0.771675,0, + -1.986,0.771675,0, -1.948,0.6564,0, -1.92291,0.6564,0.319628, + -1.850132,0.6564,0.62149, -1.886223,0.771675,0.633613, -1.96042,0.771675,0.325863, + -1.96042,0.771675,0.325863, -1.92291,0.6564,0.319628, -1.850132,0.6564,0.62149, + -1.733408,0.6564,0.901846, -1.767222,0.771675,0.919439, -1.886223,0.771675,0.633613, + -1.886223,0.771675,0.633613, -1.850132,0.6564,0.62149, -1.733408,0.6564,0.901846, + -1.576477,0.6564,1.156956, -1.60723,0.771675,1.179525, -1.767222,0.771675,0.919439, + -1.767222,0.771675,0.919439, -1.733408,0.6564,0.901846, -1.576477,0.6564,1.156956, + -1.38308,0.6564,1.38308, -1.41006,0.771675,1.41006, -1.60723,0.771675,1.179525, + -1.60723,0.771675,1.179525, -1.576477,0.6564,1.156956, -1.38308,0.6564,1.38308, + -1.156956,0.6564,1.576477, -1.179525,0.771675,1.60723, -1.41006,0.771675,1.41006, + -1.41006,0.771675,1.41006, -1.38308,0.6564,1.38308, -1.156956,0.6564,1.576477, + -0.901846,0.6564,1.733408, -0.919439,0.771675,1.767222, -1.179525,0.771675,1.60723, + -1.179525,0.771675,1.60723, -1.156956,0.6564,1.576477, -0.901846,0.6564,1.733408, + -0.62149,0.6564,1.850132, -0.633613,0.771675,1.886223, -0.919439,0.771675,1.767222, + -0.919439,0.771675,1.767222, -0.901846,0.6564,1.733408, -0.62149,0.6564,1.850132, + -0.319628,0.6564,1.92291, -0.325863,0.771675,1.96042, -0.633613,0.771675,1.886223, + -0.633613,0.771675,1.886223, -0.62149,0.6564,1.850132, -0.319628,0.6564,1.92291, + 0,0.6564,1.948, 0,0.771675,1.986, -0.325863,0.771675,1.96042, + -0.325863,0.771675,1.96042, -0.319628,0.6564,1.92291, 0,0.6564,1.948, + -1.867631,0.553725,0.310439, -1.92291,0.6564,0.319628, -1.948,0.6564,0, + -1.948,0.6564,0, -1.892,0.553725,0, -1.867631,0.553725,0.310439, + -1.796946,0.553725,0.603624, -1.850132,0.6564,0.62149, -1.92291,0.6564,0.319628, + -1.92291,0.6564,0.319628, -1.867631,0.553725,0.310439, -1.796946,0.553725,0.603624, + -1.683577,0.553725,0.87592, -1.733408,0.6564,0.901846, -1.850132,0.6564,0.62149, + -1.850132,0.6564,0.62149, -1.796946,0.553725,0.603624, -1.683577,0.553725,0.87592, + -1.531158,0.553725,1.123697, -1.576477,0.6564,1.156956, -1.733408,0.6564,0.901846, + -1.733408,0.6564,0.901846, -1.683577,0.553725,0.87592, -1.531158,0.553725,1.123697, + -1.34332,0.553725,1.34332, -1.38308,0.6564,1.38308, -1.576477,0.6564,1.156956, + -1.576477,0.6564,1.156956, -1.531158,0.553725,1.123697, -1.34332,0.553725,1.34332, + -1.123697,0.553725,1.531158, -1.156956,0.6564,1.576477, -1.38308,0.6564,1.38308, + -1.38308,0.6564,1.38308, -1.34332,0.553725,1.34332, -1.123697,0.553725,1.531158, + -0.87592,0.553725,1.683577, -0.901846,0.6564,1.733408, -1.156956,0.6564,1.576477, + -1.156956,0.6564,1.576477, -1.123697,0.553725,1.531158, -0.87592,0.553725,1.683577, + -0.603624,0.553725,1.796946, -0.62149,0.6564,1.850132, -0.901846,0.6564,1.733408, + -0.901846,0.6564,1.733408, -0.87592,0.553725,1.683577, -0.603624,0.553725,1.796946, + -0.310439,0.553725,1.867631, -0.319628,0.6564,1.92291, -0.62149,0.6564,1.850132, + -0.62149,0.6564,1.850132, -0.603624,0.553725,1.796946, -0.310439,0.553725,1.867631, + 0,0.553725,1.892, 0,0.6564,1.948, -0.319628,0.6564,1.92291, + -0.319628,0.6564,1.92291, -0.310439,0.553725,1.867631, 0,0.553725,1.892, + -1.800507,0.4632,0.299282, -1.867631,0.553725,0.310439, -1.892,0.553725,0, + -1.892,0.553725,0, -1.824,0.4632,0, -1.800507,0.4632,0.299282, + -1.732362,0.4632,0.581929, -1.796946,0.553725,0.603624, -1.867631,0.553725,0.310439, + -1.867631,0.553725,0.310439, -1.800507,0.4632,0.299282, -1.732362,0.4632,0.581929, + -1.623068,0.4632,0.844439, -1.683577,0.553725,0.87592, -1.796946,0.553725,0.603624, + -1.796946,0.553725,0.603624, -1.732362,0.4632,0.581929, -1.623068,0.4632,0.844439, + -1.476127,0.4632,1.08331, -1.531158,0.553725,1.123697, -1.683577,0.553725,0.87592, + -1.683577,0.553725,0.87592, -1.623068,0.4632,0.844439, -1.476127,0.4632,1.08331, + -1.29504,0.4632,1.29504, -1.34332,0.553725,1.34332, -1.531158,0.553725,1.123697, + -1.531158,0.553725,1.123697, -1.476127,0.4632,1.08331, -1.29504,0.4632,1.29504, + -1.08331,0.4632,1.476127, -1.123697,0.553725,1.531158, -1.34332,0.553725,1.34332, + -1.34332,0.553725,1.34332, -1.29504,0.4632,1.29504, -1.08331,0.4632,1.476127, + -0.844439,0.4632,1.623068, -0.87592,0.553725,1.683577, -1.123697,0.553725,1.531158, + -1.123697,0.553725,1.531158, -1.08331,0.4632,1.476127, -0.844439,0.4632,1.623068, + -0.581929,0.4632,1.732362, -0.603624,0.553725,1.796946, -0.87592,0.553725,1.683577, + -0.87592,0.553725,1.683577, -0.844439,0.4632,1.623068, -0.581929,0.4632,1.732362, + -0.299282,0.4632,1.800507, -0.310439,0.553725,1.867631, -0.603624,0.553725,1.796946, + -0.603624,0.553725,1.796946, -0.581929,0.4632,1.732362, -0.299282,0.4632,1.800507, + 0,0.4632,1.824, 0,0.553725,1.892, -0.310439,0.553725,1.867631, + -0.310439,0.553725,1.867631, -0.299282,0.4632,1.800507, 0,0.4632,1.824, + -1.72746,0.384375,0.28714, -1.800507,0.4632,0.299282, -1.824,0.4632,0, + -1.824,0.4632,0, -1.75,0.384375,0, -1.72746,0.384375,0.28714, + -1.66208,0.384375,0.55832, -1.732362,0.4632,0.581929, -1.800507,0.4632,0.299282, + -1.800507,0.4632,0.299282, -1.72746,0.384375,0.28714, -1.66208,0.384375,0.55832, + -1.55722,0.384375,0.81018, -1.623068,0.4632,0.844439, -1.732362,0.4632,0.581929, + -1.732362,0.4632,0.581929, -1.66208,0.384375,0.55832, -1.55722,0.384375,0.81018, + -1.41624,0.384375,1.03936, -1.476127,0.4632,1.08331, -1.623068,0.4632,0.844439, + -1.623068,0.4632,0.844439, -1.55722,0.384375,0.81018, -1.41624,0.384375,1.03936, + -1.2425,0.384375,1.2425, -1.29504,0.4632,1.29504, -1.476127,0.4632,1.08331, + -1.476127,0.4632,1.08331, -1.41624,0.384375,1.03936, -1.2425,0.384375,1.2425, + -1.03936,0.384375,1.41624, -1.08331,0.4632,1.476127, -1.29504,0.4632,1.29504, + -1.29504,0.4632,1.29504, -1.2425,0.384375,1.2425, -1.03936,0.384375,1.41624, + -0.81018,0.384375,1.55722, -0.844439,0.4632,1.623068, -1.08331,0.4632,1.476127, + -1.08331,0.4632,1.476127, -1.03936,0.384375,1.41624, -0.81018,0.384375,1.55722, + -0.55832,0.384375,1.66208, -0.581929,0.4632,1.732362, -0.844439,0.4632,1.623068, + -0.844439,0.4632,1.623068, -0.81018,0.384375,1.55722, -0.55832,0.384375,1.66208, + -0.28714,0.384375,1.72746, -0.299282,0.4632,1.800507, -0.581929,0.4632,1.732362, + -0.581929,0.4632,1.732362, -0.55832,0.384375,1.66208, -0.28714,0.384375,1.72746, + 0,0.384375,1.75, 0,0.4632,1.824, -0.299282,0.4632,1.800507, + -0.299282,0.4632,1.800507, -0.28714,0.384375,1.72746, 0,0.384375,1.75, + -1.654413,0.3168,0.274998, -1.72746,0.384375,0.28714, -1.75,0.384375,0, + -1.75,0.384375,0, -1.676,0.3168,0, -1.654413,0.3168,0.274998, + -1.591798,0.3168,0.534711, -1.66208,0.384375,0.55832, -1.72746,0.384375,0.28714, + -1.72746,0.384375,0.28714, -1.654413,0.3168,0.274998, -1.591798,0.3168,0.534711, + -1.491372,0.3168,0.775921, -1.55722,0.384375,0.81018, -1.66208,0.384375,0.55832, + -1.66208,0.384375,0.55832, -1.591798,0.3168,0.534711, -1.491372,0.3168,0.775921, + -1.356353,0.3168,0.99541, -1.41624,0.384375,1.03936, -1.55722,0.384375,0.81018, + -1.55722,0.384375,0.81018, -1.491372,0.3168,0.775921, -1.356353,0.3168,0.99541, + -1.18996,0.3168,1.18996, -1.2425,0.384375,1.2425, -1.41624,0.384375,1.03936, + -1.41624,0.384375,1.03936, -1.356353,0.3168,0.99541, -1.18996,0.3168,1.18996, + -0.99541,0.3168,1.356353, -1.03936,0.384375,1.41624, -1.2425,0.384375,1.2425, + -1.2425,0.384375,1.2425, -1.18996,0.3168,1.18996, -0.99541,0.3168,1.356353, + -0.775921,0.3168,1.491372, -0.81018,0.384375,1.55722, -1.03936,0.384375,1.41624, + -1.03936,0.384375,1.41624, -0.99541,0.3168,1.356353, -0.775921,0.3168,1.491372, + -0.534711,0.3168,1.591798, -0.55832,0.384375,1.66208, -0.81018,0.384375,1.55722, + -0.81018,0.384375,1.55722, -0.775921,0.3168,1.491372, -0.534711,0.3168,1.591798, + -0.274998,0.3168,1.654413, -0.28714,0.384375,1.72746, -0.55832,0.384375,1.66208, + -0.55832,0.384375,1.66208, -0.534711,0.3168,1.591798, -0.274998,0.3168,1.654413, + 0,0.3168,1.676, 0,0.384375,1.75, -0.28714,0.384375,1.72746, + -0.28714,0.384375,1.72746, -0.274998,0.3168,1.654413, 0,0.3168,1.676, + -1.587289,0.260025,0.263841, -1.654413,0.3168,0.274998, -1.676,0.3168,0, + -1.676,0.3168,0, -1.608,0.260025,0, -1.587289,0.260025,0.263841, + -1.527214,0.260025,0.513016, -1.591798,0.3168,0.534711, -1.654413,0.3168,0.274998, + -1.654413,0.3168,0.274998, -1.587289,0.260025,0.263841, -1.527214,0.260025,0.513016, + -1.430863,0.260025,0.74444, -1.491372,0.3168,0.775921, -1.591798,0.3168,0.534711, + -1.591798,0.3168,0.534711, -1.527214,0.260025,0.513016, -1.430863,0.260025,0.74444, + -1.301322,0.260025,0.955023, -1.356353,0.3168,0.99541, -1.491372,0.3168,0.775921, + -1.491372,0.3168,0.775921, -1.430863,0.260025,0.74444, -1.301322,0.260025,0.955023, + -1.14168,0.260025,1.14168, -1.18996,0.3168,1.18996, -1.356353,0.3168,0.99541, + -1.356353,0.3168,0.99541, -1.301322,0.260025,0.955023, -1.14168,0.260025,1.14168, + -0.955023,0.260025,1.301322, -0.99541,0.3168,1.356353, -1.18996,0.3168,1.18996, + -1.18996,0.3168,1.18996, -1.14168,0.260025,1.14168, -0.955023,0.260025,1.301322, + -0.74444,0.260025,1.430863, -0.775921,0.3168,1.491372, -0.99541,0.3168,1.356353, + -0.99541,0.3168,1.356353, -0.955023,0.260025,1.301322, -0.74444,0.260025,1.430863, + -0.513016,0.260025,1.527214, -0.534711,0.3168,1.591798, -0.775921,0.3168,1.491372, + -0.775921,0.3168,1.491372, -0.74444,0.260025,1.430863, -0.513016,0.260025,1.527214, + -0.263841,0.260025,1.587289, -0.274998,0.3168,1.654413, -0.534711,0.3168,1.591798, + -0.534711,0.3168,1.591798, -0.513016,0.260025,1.527214, -0.263841,0.260025,1.587289, + 0,0.260025,1.608, 0,0.3168,1.676, -0.274998,0.3168,1.654413, + -0.274998,0.3168,1.654413, -0.263841,0.260025,1.587289, 0,0.260025,1.608, + -1.53201,0.2136,0.254652, -1.587289,0.260025,0.263841, -1.608,0.260025,0, + -1.608,0.260025,0, -1.552,0.2136,0, -1.53201,0.2136,0.254652, + -1.474028,0.2136,0.49515, -1.527214,0.260025,0.513016, -1.587289,0.260025,0.263841, + -1.587289,0.260025,0.263841, -1.53201,0.2136,0.254652, -1.474028,0.2136,0.49515, + -1.381032,0.2136,0.718514, -1.430863,0.260025,0.74444, -1.527214,0.260025,0.513016, + -1.527214,0.260025,0.513016, -1.474028,0.2136,0.49515, -1.381032,0.2136,0.718514, + -1.256003,0.2136,0.921764, -1.301322,0.260025,0.955023, -1.430863,0.260025,0.74444, + -1.430863,0.260025,0.74444, -1.381032,0.2136,0.718514, -1.256003,0.2136,0.921764, + -1.10192,0.2136,1.10192, -1.14168,0.260025,1.14168, -1.301322,0.260025,0.955023, + -1.301322,0.260025,0.955023, -1.256003,0.2136,0.921764, -1.10192,0.2136,1.10192, + -0.921764,0.2136,1.256003, -0.955023,0.260025,1.301322, -1.14168,0.260025,1.14168, + -1.14168,0.260025,1.14168, -1.10192,0.2136,1.10192, -0.921764,0.2136,1.256003, + -0.718514,0.2136,1.381032, -0.74444,0.260025,1.430863, -0.955023,0.260025,1.301322, + -0.955023,0.260025,1.301322, -0.921764,0.2136,1.256003, -0.718514,0.2136,1.381032, + -0.49515,0.2136,1.474028, -0.513016,0.260025,1.527214, -0.74444,0.260025,1.430863, + -0.74444,0.260025,1.430863, -0.718514,0.2136,1.381032, -0.49515,0.2136,1.474028, + -0.254652,0.2136,1.53201, -0.263841,0.260025,1.587289, -0.513016,0.260025,1.527214, + -0.513016,0.260025,1.527214, -0.49515,0.2136,1.474028, -0.254652,0.2136,1.53201, + 0,0.2136,1.552, 0,0.260025,1.608, -0.263841,0.260025,1.587289, + -0.263841,0.260025,1.587289, -0.254652,0.2136,1.53201, 0,0.2136,1.552, + -1.4945,0.177075,0.248417, -1.53201,0.2136,0.254652, -1.552,0.2136,0, + -1.552,0.2136,0, -1.514,0.177075,0, -1.4945,0.177075,0.248417, + -1.437937,0.177075,0.483027, -1.474028,0.2136,0.49515, -1.53201,0.2136,0.254652, + -1.53201,0.2136,0.254652, -1.4945,0.177075,0.248417, -1.437937,0.177075,0.483027, + -1.347218,0.177075,0.700921, -1.381032,0.2136,0.718514, -1.474028,0.2136,0.49515, + -1.474028,0.2136,0.49515, -1.437937,0.177075,0.483027, -1.347218,0.177075,0.700921, + -1.22525,0.177075,0.899195, -1.256003,0.2136,0.921764, -1.381032,0.2136,0.718514, + -1.381032,0.2136,0.718514, -1.347218,0.177075,0.700921, -1.22525,0.177075,0.899195, + -1.07494,0.177075,1.07494, -1.10192,0.2136,1.10192, -1.256003,0.2136,0.921764, + -1.256003,0.2136,0.921764, -1.22525,0.177075,0.899195, -1.07494,0.177075,1.07494, + -0.899195,0.177075,1.22525, -0.921764,0.2136,1.256003, -1.10192,0.2136,1.10192, + -1.10192,0.2136,1.10192, -1.07494,0.177075,1.07494, -0.899195,0.177075,1.22525, + -0.700921,0.177075,1.347218, -0.718514,0.2136,1.381032, -0.921764,0.2136,1.256003, + -0.921764,0.2136,1.256003, -0.899195,0.177075,1.22525, -0.700921,0.177075,1.347218, + -0.483027,0.177075,1.437937, -0.49515,0.2136,1.474028, -0.718514,0.2136,1.381032, + -0.718514,0.2136,1.381032, -0.700921,0.177075,1.347218, -0.483027,0.177075,1.437937, + -0.248417,0.177075,1.4945, -0.254652,0.2136,1.53201, -0.49515,0.2136,1.474028, + -0.49515,0.2136,1.474028, -0.483027,0.177075,1.437937, -0.248417,0.177075,1.4945, + 0,0.177075,1.514, 0,0.2136,1.552, -0.254652,0.2136,1.53201, + -0.254652,0.2136,1.53201, -0.248417,0.177075,1.4945, 0,0.177075,1.514, + -1.48068,0.15,0.24612, -1.4945,0.177075,0.248417, -1.514,0.177075,0, + -1.514,0.177075,0, -1.5,0.15,0, -1.48068,0.15,0.24612, + -1.42464,0.15,0.47856, -1.437937,0.177075,0.483027, -1.4945,0.177075,0.248417, + -1.4945,0.177075,0.248417, -1.48068,0.15,0.24612, -1.42464,0.15,0.47856, + -1.33476,0.15,0.69444, -1.347218,0.177075,0.700921, -1.437937,0.177075,0.483027, + -1.437937,0.177075,0.483027, -1.42464,0.15,0.47856, -1.33476,0.15,0.69444, + -1.21392,0.15,0.89088, -1.22525,0.177075,0.899195, -1.347218,0.177075,0.700921, + -1.347218,0.177075,0.700921, -1.33476,0.15,0.69444, -1.21392,0.15,0.89088, + -1.065,0.15,1.065, -1.07494,0.177075,1.07494, -1.22525,0.177075,0.899195, + -1.22525,0.177075,0.899195, -1.21392,0.15,0.89088, -1.065,0.15,1.065, + -0.89088,0.15,1.21392, -0.899195,0.177075,1.22525, -1.07494,0.177075,1.07494, + -1.07494,0.177075,1.07494, -1.065,0.15,1.065, -0.89088,0.15,1.21392, + -0.69444,0.15,1.33476, -0.700921,0.177075,1.347218, -0.899195,0.177075,1.22525, + -0.899195,0.177075,1.22525, -0.89088,0.15,1.21392, -0.69444,0.15,1.33476, + -0.47856,0.15,1.42464, -0.483027,0.177075,1.437937, -0.700921,0.177075,1.347218, + -0.700921,0.177075,1.347218, -0.69444,0.15,1.33476, -0.47856,0.15,1.42464, + -0.24612,0.15,1.48068, -0.248417,0.177075,1.4945, -0.483027,0.177075,1.437937, + -0.483027,0.177075,1.437937, -0.47856,0.15,1.42464, -0.24612,0.15,1.48068, + 0,0.15,1.5, 0,0.177075,1.514, -0.248417,0.177075,1.4945, + -0.248417,0.177075,1.4945, -0.24612,0.15,1.48068, 0,0.15,1.5, + 0.325863,0.771675,1.96042, 0.32816,0.9,1.97424, 0,0.9,2, + 0,0.9,2, 0,0.771675,1.986, 0.325863,0.771675,1.96042, + 0.633613,0.771675,1.886223, 0.63808,0.9,1.89952, 0.32816,0.9,1.97424, + 0.32816,0.9,1.97424, 0.325863,0.771675,1.96042, 0.633613,0.771675,1.886223, + 0.919439,0.771675,1.767222, 0.92592,0.9,1.77968, 0.63808,0.9,1.89952, + 0.63808,0.9,1.89952, 0.633613,0.771675,1.886223, 0.919439,0.771675,1.767222, + 1.179525,0.771675,1.60723, 1.18784,0.9,1.61856, 0.92592,0.9,1.77968, + 0.92592,0.9,1.77968, 0.919439,0.771675,1.767222, 1.179525,0.771675,1.60723, + 1.41006,0.771675,1.41006, 1.42,0.9,1.42, 1.18784,0.9,1.61856, + 1.18784,0.9,1.61856, 1.179525,0.771675,1.60723, 1.41006,0.771675,1.41006, + 1.60723,0.771675,1.179525, 1.61856,0.9,1.18784, 1.42,0.9,1.42, + 1.42,0.9,1.42, 1.41006,0.771675,1.41006, 1.60723,0.771675,1.179525, + 1.767222,0.771675,0.919439, 1.77968,0.9,0.92592, 1.61856,0.9,1.18784, + 1.61856,0.9,1.18784, 1.60723,0.771675,1.179525, 1.767222,0.771675,0.919439, + 1.886223,0.771675,0.633613, 1.89952,0.9,0.63808, 1.77968,0.9,0.92592, + 1.77968,0.9,0.92592, 1.767222,0.771675,0.919439, 1.886223,0.771675,0.633613, + 1.96042,0.771675,0.325863, 1.97424,0.9,0.32816, 1.89952,0.9,0.63808, + 1.89952,0.9,0.63808, 1.886223,0.771675,0.633613, 1.96042,0.771675,0.325863, + 1.986,0.771675,0, 2,0.9,0, 1.97424,0.9,0.32816, + 1.97424,0.9,0.32816, 1.96042,0.771675,0.325863, 1.986,0.771675,0, + 0.319628,0.6564,1.92291, 0.325863,0.771675,1.96042, 0,0.771675,1.986, + 0,0.771675,1.986, 0,0.6564,1.948, 0.319628,0.6564,1.92291, + 0.62149,0.6564,1.850132, 0.633613,0.771675,1.886223, 0.325863,0.771675,1.96042, + 0.325863,0.771675,1.96042, 0.319628,0.6564,1.92291, 0.62149,0.6564,1.850132, + 0.901846,0.6564,1.733408, 0.919439,0.771675,1.767222, 0.633613,0.771675,1.886223, + 0.633613,0.771675,1.886223, 0.62149,0.6564,1.850132, 0.901846,0.6564,1.733408, + 1.156956,0.6564,1.576477, 1.179525,0.771675,1.60723, 0.919439,0.771675,1.767222, + 0.919439,0.771675,1.767222, 0.901846,0.6564,1.733408, 1.156956,0.6564,1.576477, + 1.38308,0.6564,1.38308, 1.41006,0.771675,1.41006, 1.179525,0.771675,1.60723, + 1.179525,0.771675,1.60723, 1.156956,0.6564,1.576477, 1.38308,0.6564,1.38308, + 1.576477,0.6564,1.156956, 1.60723,0.771675,1.179525, 1.41006,0.771675,1.41006, + 1.41006,0.771675,1.41006, 1.38308,0.6564,1.38308, 1.576477,0.6564,1.156956, + 1.733408,0.6564,0.901846, 1.767222,0.771675,0.919439, 1.60723,0.771675,1.179525, + 1.60723,0.771675,1.179525, 1.576477,0.6564,1.156956, 1.733408,0.6564,0.901846, + 1.850132,0.6564,0.62149, 1.886223,0.771675,0.633613, 1.767222,0.771675,0.919439, + 1.767222,0.771675,0.919439, 1.733408,0.6564,0.901846, 1.850132,0.6564,0.62149, + 1.92291,0.6564,0.319628, 1.96042,0.771675,0.325863, 1.886223,0.771675,0.633613, + 1.886223,0.771675,0.633613, 1.850132,0.6564,0.62149, 1.92291,0.6564,0.319628, + 1.948,0.6564,0, 1.986,0.771675,0, 1.96042,0.771675,0.325863, + 1.96042,0.771675,0.325863, 1.92291,0.6564,0.319628, 1.948,0.6564,0, + 0.310439,0.553725,1.867631, 0.319628,0.6564,1.92291, 0,0.6564,1.948, + 0,0.6564,1.948, 0,0.553725,1.892, 0.310439,0.553725,1.867631, + 0.603624,0.553725,1.796946, 0.62149,0.6564,1.850132, 0.319628,0.6564,1.92291, + 0.319628,0.6564,1.92291, 0.310439,0.553725,1.867631, 0.603624,0.553725,1.796946, + 0.87592,0.553725,1.683577, 0.901846,0.6564,1.733408, 0.62149,0.6564,1.850132, + 0.62149,0.6564,1.850132, 0.603624,0.553725,1.796946, 0.87592,0.553725,1.683577, + 1.123697,0.553725,1.531158, 1.156956,0.6564,1.576477, 0.901846,0.6564,1.733408, + 0.901846,0.6564,1.733408, 0.87592,0.553725,1.683577, 1.123697,0.553725,1.531158, + 1.34332,0.553725,1.34332, 1.38308,0.6564,1.38308, 1.156956,0.6564,1.576477, + 1.156956,0.6564,1.576477, 1.123697,0.553725,1.531158, 1.34332,0.553725,1.34332, + 1.531158,0.553725,1.123697, 1.576477,0.6564,1.156956, 1.38308,0.6564,1.38308, + 1.38308,0.6564,1.38308, 1.34332,0.553725,1.34332, 1.531158,0.553725,1.123697, + 1.683577,0.553725,0.87592, 1.733408,0.6564,0.901846, 1.576477,0.6564,1.156956, + 1.576477,0.6564,1.156956, 1.531158,0.553725,1.123697, 1.683577,0.553725,0.87592, + 1.796946,0.553725,0.603624, 1.850132,0.6564,0.62149, 1.733408,0.6564,0.901846, + 1.733408,0.6564,0.901846, 1.683577,0.553725,0.87592, 1.796946,0.553725,0.603624, + 1.867631,0.553725,0.310439, 1.92291,0.6564,0.319628, 1.850132,0.6564,0.62149, + 1.850132,0.6564,0.62149, 1.796946,0.553725,0.603624, 1.867631,0.553725,0.310439, + 1.892,0.553725,0, 1.948,0.6564,0, 1.92291,0.6564,0.319628, + 1.92291,0.6564,0.319628, 1.867631,0.553725,0.310439, 1.892,0.553725,0, + 0.299282,0.4632,1.800507, 0.310439,0.553725,1.867631, 0,0.553725,1.892, + 0,0.553725,1.892, 0,0.4632,1.824, 0.299282,0.4632,1.800507, + 0.581929,0.4632,1.732362, 0.603624,0.553725,1.796946, 0.310439,0.553725,1.867631, + 0.310439,0.553725,1.867631, 0.299282,0.4632,1.800507, 0.581929,0.4632,1.732362, + 0.844439,0.4632,1.623068, 0.87592,0.553725,1.683577, 0.603624,0.553725,1.796946, + 0.603624,0.553725,1.796946, 0.581929,0.4632,1.732362, 0.844439,0.4632,1.623068, + 1.08331,0.4632,1.476127, 1.123697,0.553725,1.531158, 0.87592,0.553725,1.683577, + 0.87592,0.553725,1.683577, 0.844439,0.4632,1.623068, 1.08331,0.4632,1.476127, + 1.29504,0.4632,1.29504, 1.34332,0.553725,1.34332, 1.123697,0.553725,1.531158, + 1.123697,0.553725,1.531158, 1.08331,0.4632,1.476127, 1.29504,0.4632,1.29504, + 1.476127,0.4632,1.08331, 1.531158,0.553725,1.123697, 1.34332,0.553725,1.34332, + 1.34332,0.553725,1.34332, 1.29504,0.4632,1.29504, 1.476127,0.4632,1.08331, + 1.623068,0.4632,0.844439, 1.683577,0.553725,0.87592, 1.531158,0.553725,1.123697, + 1.531158,0.553725,1.123697, 1.476127,0.4632,1.08331, 1.623068,0.4632,0.844439, + 1.732362,0.4632,0.581929, 1.796946,0.553725,0.603624, 1.683577,0.553725,0.87592, + 1.683577,0.553725,0.87592, 1.623068,0.4632,0.844439, 1.732362,0.4632,0.581929, + 1.800507,0.4632,0.299282, 1.867631,0.553725,0.310439, 1.796946,0.553725,0.603624, + 1.796946,0.553725,0.603624, 1.732362,0.4632,0.581929, 1.800507,0.4632,0.299282, + 1.824,0.4632,0, 1.892,0.553725,0, 1.867631,0.553725,0.310439, + 1.867631,0.553725,0.310439, 1.800507,0.4632,0.299282, 1.824,0.4632,0, + 0.28714,0.384375,1.72746, 0.299282,0.4632,1.800507, 0,0.4632,1.824, + 0,0.4632,1.824, 0,0.384375,1.75, 0.28714,0.384375,1.72746, + 0.55832,0.384375,1.66208, 0.581929,0.4632,1.732362, 0.299282,0.4632,1.800507, + 0.299282,0.4632,1.800507, 0.28714,0.384375,1.72746, 0.55832,0.384375,1.66208, + 0.81018,0.384375,1.55722, 0.844439,0.4632,1.623068, 0.581929,0.4632,1.732362, + 0.581929,0.4632,1.732362, 0.55832,0.384375,1.66208, 0.81018,0.384375,1.55722, + 1.03936,0.384375,1.41624, 1.08331,0.4632,1.476127, 0.844439,0.4632,1.623068, + 0.844439,0.4632,1.623068, 0.81018,0.384375,1.55722, 1.03936,0.384375,1.41624, + 1.2425,0.384375,1.2425, 1.29504,0.4632,1.29504, 1.08331,0.4632,1.476127, + 1.08331,0.4632,1.476127, 1.03936,0.384375,1.41624, 1.2425,0.384375,1.2425, + 1.41624,0.384375,1.03936, 1.476127,0.4632,1.08331, 1.29504,0.4632,1.29504, + 1.29504,0.4632,1.29504, 1.2425,0.384375,1.2425, 1.41624,0.384375,1.03936, + 1.55722,0.384375,0.81018, 1.623068,0.4632,0.844439, 1.476127,0.4632,1.08331, + 1.476127,0.4632,1.08331, 1.41624,0.384375,1.03936, 1.55722,0.384375,0.81018, + 1.66208,0.384375,0.55832, 1.732362,0.4632,0.581929, 1.623068,0.4632,0.844439, + 1.623068,0.4632,0.844439, 1.55722,0.384375,0.81018, 1.66208,0.384375,0.55832, + 1.72746,0.384375,0.28714, 1.800507,0.4632,0.299282, 1.732362,0.4632,0.581929, + 1.732362,0.4632,0.581929, 1.66208,0.384375,0.55832, 1.72746,0.384375,0.28714, + 1.75,0.384375,0, 1.824,0.4632,0, 1.800507,0.4632,0.299282, + 1.800507,0.4632,0.299282, 1.72746,0.384375,0.28714, 1.75,0.384375,0, + 0.274998,0.3168,1.654413, 0.28714,0.384375,1.72746, 0,0.384375,1.75, + 0,0.384375,1.75, 0,0.3168,1.676, 0.274998,0.3168,1.654413, + 0.534711,0.3168,1.591798, 0.55832,0.384375,1.66208, 0.28714,0.384375,1.72746, + 0.28714,0.384375,1.72746, 0.274998,0.3168,1.654413, 0.534711,0.3168,1.591798, + 0.775921,0.3168,1.491372, 0.81018,0.384375,1.55722, 0.55832,0.384375,1.66208, + 0.55832,0.384375,1.66208, 0.534711,0.3168,1.591798, 0.775921,0.3168,1.491372, + 0.99541,0.3168,1.356353, 1.03936,0.384375,1.41624, 0.81018,0.384375,1.55722, + 0.81018,0.384375,1.55722, 0.775921,0.3168,1.491372, 0.99541,0.3168,1.356353, + 1.18996,0.3168,1.18996, 1.2425,0.384375,1.2425, 1.03936,0.384375,1.41624, + 1.03936,0.384375,1.41624, 0.99541,0.3168,1.356353, 1.18996,0.3168,1.18996, + 1.356353,0.3168,0.99541, 1.41624,0.384375,1.03936, 1.2425,0.384375,1.2425, + 1.2425,0.384375,1.2425, 1.18996,0.3168,1.18996, 1.356353,0.3168,0.99541, + 1.491372,0.3168,0.775921, 1.55722,0.384375,0.81018, 1.41624,0.384375,1.03936, + 1.41624,0.384375,1.03936, 1.356353,0.3168,0.99541, 1.491372,0.3168,0.775921, + 1.591798,0.3168,0.534711, 1.66208,0.384375,0.55832, 1.55722,0.384375,0.81018, + 1.55722,0.384375,0.81018, 1.491372,0.3168,0.775921, 1.591798,0.3168,0.534711, + 1.654413,0.3168,0.274998, 1.72746,0.384375,0.28714, 1.66208,0.384375,0.55832, + 1.66208,0.384375,0.55832, 1.591798,0.3168,0.534711, 1.654413,0.3168,0.274998, + 1.676,0.3168,0, 1.75,0.384375,0, 1.72746,0.384375,0.28714, + 1.72746,0.384375,0.28714, 1.654413,0.3168,0.274998, 1.676,0.3168,0, + 0.263841,0.260025,1.587289, 0.274998,0.3168,1.654413, 0,0.3168,1.676, + 0,0.3168,1.676, 0,0.260025,1.608, 0.263841,0.260025,1.587289, + 0.513016,0.260025,1.527214, 0.534711,0.3168,1.591798, 0.274998,0.3168,1.654413, + 0.274998,0.3168,1.654413, 0.263841,0.260025,1.587289, 0.513016,0.260025,1.527214, + 0.74444,0.260025,1.430863, 0.775921,0.3168,1.491372, 0.534711,0.3168,1.591798, + 0.534711,0.3168,1.591798, 0.513016,0.260025,1.527214, 0.74444,0.260025,1.430863, + 0.955023,0.260025,1.301322, 0.99541,0.3168,1.356353, 0.775921,0.3168,1.491372, + 0.775921,0.3168,1.491372, 0.74444,0.260025,1.430863, 0.955023,0.260025,1.301322, + 1.14168,0.260025,1.14168, 1.18996,0.3168,1.18996, 0.99541,0.3168,1.356353, + 0.99541,0.3168,1.356353, 0.955023,0.260025,1.301322, 1.14168,0.260025,1.14168, + 1.301322,0.260025,0.955023, 1.356353,0.3168,0.99541, 1.18996,0.3168,1.18996, + 1.18996,0.3168,1.18996, 1.14168,0.260025,1.14168, 1.301322,0.260025,0.955023, + 1.430863,0.260025,0.74444, 1.491372,0.3168,0.775921, 1.356353,0.3168,0.99541, + 1.356353,0.3168,0.99541, 1.301322,0.260025,0.955023, 1.430863,0.260025,0.74444, + 1.527214,0.260025,0.513016, 1.591798,0.3168,0.534711, 1.491372,0.3168,0.775921, + 1.491372,0.3168,0.775921, 1.430863,0.260025,0.74444, 1.527214,0.260025,0.513016, + 1.587289,0.260025,0.263841, 1.654413,0.3168,0.274998, 1.591798,0.3168,0.534711, + 1.591798,0.3168,0.534711, 1.527214,0.260025,0.513016, 1.587289,0.260025,0.263841, + 1.608,0.260025,0, 1.676,0.3168,0, 1.654413,0.3168,0.274998, + 1.654413,0.3168,0.274998, 1.587289,0.260025,0.263841, 1.608,0.260025,0, + 0.254652,0.2136,1.53201, 0.263841,0.260025,1.587289, 0,0.260025,1.608, + 0,0.260025,1.608, 0,0.2136,1.552, 0.254652,0.2136,1.53201, + 0.49515,0.2136,1.474028, 0.513016,0.260025,1.527214, 0.263841,0.260025,1.587289, + 0.263841,0.260025,1.587289, 0.254652,0.2136,1.53201, 0.49515,0.2136,1.474028, + 0.718514,0.2136,1.381032, 0.74444,0.260025,1.430863, 0.513016,0.260025,1.527214, + 0.513016,0.260025,1.527214, 0.49515,0.2136,1.474028, 0.718514,0.2136,1.381032, + 0.921764,0.2136,1.256003, 0.955023,0.260025,1.301322, 0.74444,0.260025,1.430863, + 0.74444,0.260025,1.430863, 0.718514,0.2136,1.381032, 0.921764,0.2136,1.256003, + 1.10192,0.2136,1.10192, 1.14168,0.260025,1.14168, 0.955023,0.260025,1.301322, + 0.955023,0.260025,1.301322, 0.921764,0.2136,1.256003, 1.10192,0.2136,1.10192, + 1.256003,0.2136,0.921764, 1.301322,0.260025,0.955023, 1.14168,0.260025,1.14168, + 1.14168,0.260025,1.14168, 1.10192,0.2136,1.10192, 1.256003,0.2136,0.921764, + 1.381032,0.2136,0.718514, 1.430863,0.260025,0.74444, 1.301322,0.260025,0.955023, + 1.301322,0.260025,0.955023, 1.256003,0.2136,0.921764, 1.381032,0.2136,0.718514, + 1.474028,0.2136,0.49515, 1.527214,0.260025,0.513016, 1.430863,0.260025,0.74444, + 1.430863,0.260025,0.74444, 1.381032,0.2136,0.718514, 1.474028,0.2136,0.49515, + 1.53201,0.2136,0.254652, 1.587289,0.260025,0.263841, 1.527214,0.260025,0.513016, + 1.527214,0.260025,0.513016, 1.474028,0.2136,0.49515, 1.53201,0.2136,0.254652, + 1.552,0.2136,0, 1.608,0.260025,0, 1.587289,0.260025,0.263841, + 1.587289,0.260025,0.263841, 1.53201,0.2136,0.254652, 1.552,0.2136,0, + 0.248417,0.177075,1.4945, 0.254652,0.2136,1.53201, 0,0.2136,1.552, + 0,0.2136,1.552, 0,0.177075,1.514, 0.248417,0.177075,1.4945, + 0.483027,0.177075,1.437937, 0.49515,0.2136,1.474028, 0.254652,0.2136,1.53201, + 0.254652,0.2136,1.53201, 0.248417,0.177075,1.4945, 0.483027,0.177075,1.437937, + 0.700921,0.177075,1.347218, 0.718514,0.2136,1.381032, 0.49515,0.2136,1.474028, + 0.49515,0.2136,1.474028, 0.483027,0.177075,1.437937, 0.700921,0.177075,1.347218, + 0.899195,0.177075,1.22525, 0.921764,0.2136,1.256003, 0.718514,0.2136,1.381032, + 0.718514,0.2136,1.381032, 0.700921,0.177075,1.347218, 0.899195,0.177075,1.22525, + 1.07494,0.177075,1.07494, 1.10192,0.2136,1.10192, 0.921764,0.2136,1.256003, + 0.921764,0.2136,1.256003, 0.899195,0.177075,1.22525, 1.07494,0.177075,1.07494, + 1.22525,0.177075,0.899195, 1.256003,0.2136,0.921764, 1.10192,0.2136,1.10192, + 1.10192,0.2136,1.10192, 1.07494,0.177075,1.07494, 1.22525,0.177075,0.899195, + 1.347218,0.177075,0.700921, 1.381032,0.2136,0.718514, 1.256003,0.2136,0.921764, + 1.256003,0.2136,0.921764, 1.22525,0.177075,0.899195, 1.347218,0.177075,0.700921, + 1.437937,0.177075,0.483027, 1.474028,0.2136,0.49515, 1.381032,0.2136,0.718514, + 1.381032,0.2136,0.718514, 1.347218,0.177075,0.700921, 1.437937,0.177075,0.483027, + 1.4945,0.177075,0.248417, 1.53201,0.2136,0.254652, 1.474028,0.2136,0.49515, + 1.474028,0.2136,0.49515, 1.437937,0.177075,0.483027, 1.4945,0.177075,0.248417, + 1.514,0.177075,0, 1.552,0.2136,0, 1.53201,0.2136,0.254652, + 1.53201,0.2136,0.254652, 1.4945,0.177075,0.248417, 1.514,0.177075,0, + 0.24612,0.15,1.48068, 0.248417,0.177075,1.4945, 0,0.177075,1.514, + 0,0.177075,1.514, 0,0.15,1.5, 0.24612,0.15,1.48068, + 0.47856,0.15,1.42464, 0.483027,0.177075,1.437937, 0.248417,0.177075,1.4945, + 0.248417,0.177075,1.4945, 0.24612,0.15,1.48068, 0.47856,0.15,1.42464, + 0.69444,0.15,1.33476, 0.700921,0.177075,1.347218, 0.483027,0.177075,1.437937, + 0.483027,0.177075,1.437937, 0.47856,0.15,1.42464, 0.69444,0.15,1.33476, + 0.89088,0.15,1.21392, 0.899195,0.177075,1.22525, 0.700921,0.177075,1.347218, + 0.700921,0.177075,1.347218, 0.69444,0.15,1.33476, 0.89088,0.15,1.21392, + 1.065,0.15,1.065, 1.07494,0.177075,1.07494, 0.899195,0.177075,1.22525, + 0.899195,0.177075,1.22525, 0.89088,0.15,1.21392, 1.065,0.15,1.065, + 1.21392,0.15,0.89088, 1.22525,0.177075,0.899195, 1.07494,0.177075,1.07494, + 1.07494,0.177075,1.07494, 1.065,0.15,1.065, 1.21392,0.15,0.89088, + 1.33476,0.15,0.69444, 1.347218,0.177075,0.700921, 1.22525,0.177075,0.899195, + 1.22525,0.177075,0.899195, 1.21392,0.15,0.89088, 1.33476,0.15,0.69444, + 1.42464,0.15,0.47856, 1.437937,0.177075,0.483027, 1.347218,0.177075,0.700921, + 1.347218,0.177075,0.700921, 1.33476,0.15,0.69444, 1.42464,0.15,0.47856, + 1.48068,0.15,0.24612, 1.4945,0.177075,0.248417, 1.437937,0.177075,0.483027, + 1.437937,0.177075,0.483027, 1.42464,0.15,0.47856, 1.48068,0.15,0.24612, + 1.5,0.15,0, 1.514,0.177075,0, 1.4945,0.177075,0.248417, + 1.4945,0.177075,0.248417, 1.48068,0.15,0.24612, 1.5,0.15,0, + -1.800455,2.031069,-0.081, -1.5972,2.0313,-0.081, -1.6,2.025,0, + -1.6,2.025,0, -1.8009,2.024775,0, -1.800455,2.031069,-0.081, + -1.799246,2.048152,-0.144, -1.5896,2.0484,-0.144, -1.5972,2.0313,-0.081, + -1.5972,2.0313,-0.081, -1.800455,2.031069,-0.081, -1.799246,2.048152,-0.144, + -1.797466,2.073326,-0.189, -1.5784,2.0736,-0.189, -1.5896,2.0484,-0.144, + -1.5896,2.0484,-0.144, -1.799246,2.048152,-0.144, -1.797466,2.073326,-0.189, + -1.795303,2.103896,-0.216, -1.5648,2.1042,-0.216, -1.5784,2.0736,-0.189, + -1.5784,2.0736,-0.189, -1.797466,2.073326,-0.189, -1.795303,2.103896,-0.216, + -1.79295,2.137163,-0.225, -1.55,2.1375,-0.225, -1.5648,2.1042,-0.216, + -1.5648,2.1042,-0.216, -1.795303,2.103896,-0.216, -1.79295,2.137163,-0.225, + -1.790597,2.170429,-0.216, -1.5352,2.1708,-0.216, -1.55,2.1375,-0.225, + -1.55,2.1375,-0.225, -1.79295,2.137163,-0.225, -1.790597,2.170429,-0.216, + -1.788434,2.200999,-0.189, -1.5216,2.2014,-0.189, -1.5352,2.1708,-0.216, + -1.5352,2.1708,-0.216, -1.790597,2.170429,-0.216, -1.788434,2.200999,-0.189, + -1.786654,2.226173,-0.144, -1.5104,2.2266,-0.144, -1.5216,2.2014,-0.189, + -1.5216,2.2014,-0.189, -1.788434,2.200999,-0.189, -1.786654,2.226173,-0.144, + -1.785445,2.243256,-0.081, -1.5028,2.2437,-0.081, -1.5104,2.2266,-0.144, + -1.5104,2.2266,-0.144, -1.786654,2.226173,-0.144, -1.785445,2.243256,-0.081, + -1.785,2.24955,0, -1.5,2.25,0, -1.5028,2.2437,-0.081, + -1.5028,2.2437,-0.081, -1.785445,2.243256,-0.081, -1.785,2.24955,0, + -1.98479,2.02945,-0.081, -1.800455,2.031069,-0.081, -1.8009,2.024775,0, + -1.8009,2.024775,0, -1.9832,2.0232,0, -1.98479,2.02945,-0.081, + -1.989107,2.046413,-0.144, -1.799246,2.048152,-0.144, -1.800455,2.031069,-0.081, + -1.800455,2.031069,-0.081, -1.98479,2.02945,-0.081, -1.989107,2.046413,-0.144, + -1.995469,2.071411,-0.189, -1.797466,2.073326,-0.189, -1.799246,2.048152,-0.144, + -1.799246,2.048152,-0.144, -1.989107,2.046413,-0.144, -1.995469,2.071411,-0.189, + -2.003194,2.101766,-0.216, -1.795303,2.103896,-0.216, -1.797466,2.073326,-0.189, + -1.797466,2.073326,-0.189, -1.995469,2.071411,-0.189, -2.003194,2.101766,-0.216, + -2.0116,2.1348,-0.225, -1.79295,2.137163,-0.225, -1.795303,2.103896,-0.216, + -1.795303,2.103896,-0.216, -2.003194,2.101766,-0.216, -2.0116,2.1348,-0.225, + -2.020006,2.167834,-0.216, -1.790597,2.170429,-0.216, -1.79295,2.137163,-0.225, + -1.79295,2.137163,-0.225, -2.0116,2.1348,-0.225, -2.020006,2.167834,-0.216, + -2.027731,2.198189,-0.189, -1.788434,2.200999,-0.189, -1.790597,2.170429,-0.216, + -1.790597,2.170429,-0.216, -2.020006,2.167834,-0.216, -2.027731,2.198189,-0.189, + -2.034093,2.223187,-0.144, -1.786654,2.226173,-0.144, -1.788434,2.200999,-0.189, + -1.788434,2.200999,-0.189, -2.027731,2.198189,-0.189, -2.034093,2.223187,-0.144, + -2.03841,2.24015,-0.081, -1.785445,2.243256,-0.081, -1.786654,2.226173,-0.144, + -1.786654,2.226173,-0.144, -2.034093,2.223187,-0.144, -2.03841,2.24015,-0.081, + -2.04,2.2464,0, -1.785,2.24955,0, -1.785445,2.243256,-0.081, + -1.785445,2.243256,-0.081, -2.03841,2.24015,-0.081, -2.04,2.2464,0, + -2.149624,2.025055,-0.081, -1.98479,2.02945,-0.081, -1.9832,2.0232,0, + -1.9832,2.0232,0, -2.1463,2.018925,0, -2.149624,2.025055,-0.081, + -2.158645,2.041693,-0.144, -1.989107,2.046413,-0.144, -1.98479,2.02945,-0.081, + -1.98479,2.02945,-0.081, -2.149624,2.025055,-0.081, -2.158645,2.041693,-0.144, + -2.171939,2.066213,-0.189, -1.995469,2.071411,-0.189, -1.989107,2.046413,-0.144, + -1.989107,2.046413,-0.144, -2.158645,2.041693,-0.144, -2.171939,2.066213,-0.189, + -2.188082,2.095987,-0.216, -2.003194,2.101766,-0.216, -1.995469,2.071411,-0.189, + -1.995469,2.071411,-0.189, -2.171939,2.066213,-0.189, -2.188082,2.095987,-0.216, + -2.20565,2.128388,-0.225, -2.0116,2.1348,-0.225, -2.003194,2.101766,-0.216, + -2.003194,2.101766,-0.216, -2.188082,2.095987,-0.216, -2.20565,2.128388,-0.225, + -2.223218,2.160788,-0.216, -2.020006,2.167834,-0.216, -2.0116,2.1348,-0.225, + -2.0116,2.1348,-0.225, -2.20565,2.128388,-0.225, -2.223218,2.160788,-0.216, + -2.239361,2.190562,-0.189, -2.027731,2.198189,-0.189, -2.020006,2.167834,-0.216, + -2.020006,2.167834,-0.216, -2.223218,2.160788,-0.216, -2.239361,2.190562,-0.189, + -2.252655,2.215082,-0.144, -2.034093,2.223187,-0.144, -2.027731,2.198189,-0.189, + -2.027731,2.198189,-0.189, -2.239361,2.190562,-0.189, -2.252655,2.215082,-0.144, + -2.261676,2.23172,-0.081, -2.03841,2.24015,-0.081, -2.034093,2.223187,-0.144, + -2.034093,2.223187,-0.144, -2.252655,2.215082,-0.144, -2.261676,2.23172,-0.081, + -2.265,2.23785,0, -2.04,2.2464,0, -2.03841,2.24015,-0.081, + -2.03841,2.24015,-0.081, -2.261676,2.23172,-0.081, -2.265,2.23785,0, + -2.294371,2.016497,-0.081, -2.149624,2.025055,-0.081, -2.1463,2.018925,0, + -2.1463,2.018925,0, -2.2896,2.0106,0, -2.294371,2.016497,-0.081, + -2.307322,2.032502,-0.144, -2.158645,2.041693,-0.144, -2.149624,2.025055,-0.081, + -2.149624,2.025055,-0.081, -2.294371,2.016497,-0.081, -2.307322,2.032502,-0.144, + -2.326406,2.05609,-0.189, -2.171939,2.066213,-0.189, -2.158645,2.041693,-0.144, + -2.158645,2.041693,-0.144, -2.307322,2.032502,-0.144, -2.326406,2.05609,-0.189, + -2.349581,2.084731,-0.216, -2.188082,2.095987,-0.216, -2.171939,2.066213,-0.189, + -2.171939,2.066213,-0.189, -2.326406,2.05609,-0.189, -2.349581,2.084731,-0.216, + -2.3748,2.1159,-0.225, -2.20565,2.128388,-0.225, -2.188082,2.095987,-0.216, + -2.188082,2.095987,-0.216, -2.349581,2.084731,-0.216, -2.3748,2.1159,-0.225, + -2.400019,2.147069,-0.216, -2.223218,2.160788,-0.216, -2.20565,2.128388,-0.225, + -2.20565,2.128388,-0.225, -2.3748,2.1159,-0.225, -2.400019,2.147069,-0.216, + -2.423194,2.17571,-0.189, -2.239361,2.190562,-0.189, -2.223218,2.160788,-0.216, + -2.223218,2.160788,-0.216, -2.400019,2.147069,-0.216, -2.423194,2.17571,-0.189, + -2.442278,2.199298,-0.144, -2.252655,2.215082,-0.144, -2.239361,2.190562,-0.189, + -2.239361,2.190562,-0.189, -2.423194,2.17571,-0.189, -2.442278,2.199298,-0.144, + -2.455229,2.215303,-0.081, -2.261676,2.23172,-0.081, -2.252655,2.215082,-0.144, + -2.252655,2.215082,-0.144, -2.442278,2.199298,-0.144, -2.455229,2.215303,-0.081, + -2.46,2.2212,0, -2.265,2.23785,0, -2.261676,2.23172,-0.081, + -2.261676,2.23172,-0.081, -2.455229,2.215303,-0.081, -2.46,2.2212,0, + -2.41845,2.002387,-0.081, -2.294371,2.016497,-0.081, -2.2896,2.0106,0, + -2.2896,2.0106,0, -2.4125,1.996875,0, -2.41845,2.002387,-0.081, + -2.4346,2.01735,-0.144, -2.307322,2.032502,-0.144, -2.294371,2.016497,-0.081, + -2.294371,2.016497,-0.081, -2.41845,2.002387,-0.081, -2.4346,2.01735,-0.144, + -2.4584,2.0394,-0.189, -2.326406,2.05609,-0.189, -2.307322,2.032502,-0.144, + -2.307322,2.032502,-0.144, -2.4346,2.01735,-0.144, -2.4584,2.0394,-0.189, + -2.4873,2.066175,-0.216, -2.349581,2.084731,-0.216, -2.326406,2.05609,-0.189, + -2.326406,2.05609,-0.189, -2.4584,2.0394,-0.189, -2.4873,2.066175,-0.216, + -2.51875,2.095312,-0.225, -2.3748,2.1159,-0.225, -2.349581,2.084731,-0.216, + -2.349581,2.084731,-0.216, -2.4873,2.066175,-0.216, -2.51875,2.095312,-0.225, + -2.5502,2.12445,-0.216, -2.400019,2.147069,-0.216, -2.3748,2.1159,-0.225, + -2.3748,2.1159,-0.225, -2.51875,2.095312,-0.225, -2.5502,2.12445,-0.216, + -2.5791,2.151225,-0.189, -2.423194,2.17571,-0.189, -2.400019,2.147069,-0.216, + -2.400019,2.147069,-0.216, -2.5502,2.12445,-0.216, -2.5791,2.151225,-0.189, + -2.6029,2.173275,-0.144, -2.442278,2.199298,-0.144, -2.423194,2.17571,-0.189, + -2.423194,2.17571,-0.189, -2.5791,2.151225,-0.189, -2.6029,2.173275,-0.144, + -2.61905,2.188238,-0.081, -2.455229,2.215303,-0.081, -2.442278,2.199298,-0.144, + -2.442278,2.199298,-0.144, -2.6029,2.173275,-0.144, -2.61905,2.188238,-0.081, + -2.625,2.19375,0, -2.46,2.2212,0, -2.455229,2.215303,-0.081, + -2.455229,2.215303,-0.081, -2.61905,2.188238,-0.081, -2.625,2.19375,0, + -2.521277,1.981339,-0.081, -2.41845,2.002387,-0.081, -2.4125,1.996875,0, + -2.4125,1.996875,0, -2.5144,1.9764,0, -2.521277,1.981339,-0.081, + -2.539942,1.994746,-0.144, -2.4346,2.01735,-0.144, -2.41845,2.002387,-0.081, + -2.41845,2.002387,-0.081, -2.521277,1.981339,-0.081, -2.539942,1.994746,-0.144, + -2.56745,2.014502,-0.189, -2.4584,2.0394,-0.189, -2.4346,2.01735,-0.144, + -2.4346,2.01735,-0.144, -2.539942,1.994746,-0.144, -2.56745,2.014502,-0.189, + -2.600851,2.038493,-0.216, -2.4873,2.066175,-0.216, -2.4584,2.0394,-0.189, + -2.4584,2.0394,-0.189, -2.56745,2.014502,-0.189, -2.600851,2.038493,-0.216, + -2.6372,2.0646,-0.225, -2.51875,2.095312,-0.225, -2.4873,2.066175,-0.216, + -2.4873,2.066175,-0.216, -2.600851,2.038493,-0.216, -2.6372,2.0646,-0.225, + -2.673549,2.090707,-0.216, -2.5502,2.12445,-0.216, -2.51875,2.095312,-0.225, + -2.51875,2.095312,-0.225, -2.6372,2.0646,-0.225, -2.673549,2.090707,-0.216, + -2.70695,2.114698,-0.189, -2.5791,2.151225,-0.189, -2.5502,2.12445,-0.216, + -2.5502,2.12445,-0.216, -2.673549,2.090707,-0.216, -2.70695,2.114698,-0.189, + -2.734458,2.134454,-0.144, -2.6029,2.173275,-0.144, -2.5791,2.151225,-0.189, + -2.5791,2.151225,-0.189, -2.70695,2.114698,-0.189, -2.734458,2.134454,-0.144, + -2.753123,2.147861,-0.081, -2.61905,2.188238,-0.081, -2.6029,2.173275,-0.144, + -2.6029,2.173275,-0.144, -2.734458,2.134454,-0.144, -2.753123,2.147861,-0.081, + -2.76,2.1528,0, -2.625,2.19375,0, -2.61905,2.188238,-0.081, + -2.61905,2.188238,-0.081, -2.753123,2.147861,-0.081, -2.76,2.1528,0, + -2.602268,1.951964,-0.081, -2.521277,1.981339,-0.081, -2.5144,1.9764,0, + -2.5144,1.9764,0, -2.5947,1.947825,0, -2.602268,1.951964,-0.081, + -2.622811,1.963199,-0.144, -2.539942,1.994746,-0.144, -2.521277,1.981339,-0.081, + -2.521277,1.981339,-0.081, -2.602268,1.951964,-0.081, -2.622811,1.963199,-0.144, + -2.653085,1.979755,-0.189, -2.56745,2.014502,-0.189, -2.539942,1.994746,-0.144, + -2.539942,1.994746,-0.144, -2.622811,1.963199,-0.144, -2.653085,1.979755,-0.189, + -2.689846,1.999859,-0.216, -2.600851,2.038493,-0.216, -2.56745,2.014502,-0.189, + -2.56745,2.014502,-0.189, -2.653085,1.979755,-0.189, -2.689846,1.999859,-0.216, + -2.72985,2.021737,-0.225, -2.6372,2.0646,-0.225, -2.600851,2.038493,-0.216, + -2.600851,2.038493,-0.216, -2.689846,1.999859,-0.216, -2.72985,2.021737,-0.225, + -2.769854,2.043616,-0.216, -2.673549,2.090707,-0.216, -2.6372,2.0646,-0.225, + -2.6372,2.0646,-0.225, -2.72985,2.021737,-0.225, -2.769854,2.043616,-0.216, + -2.806615,2.06372,-0.189, -2.70695,2.114698,-0.189, -2.673549,2.090707,-0.216, + -2.673549,2.090707,-0.216, -2.769854,2.043616,-0.216, -2.806615,2.06372,-0.189, + -2.836889,2.080276,-0.144, -2.734458,2.134454,-0.144, -2.70695,2.114698,-0.189, + -2.70695,2.114698,-0.189, -2.806615,2.06372,-0.189, -2.836889,2.080276,-0.144, + -2.857432,2.091511,-0.081, -2.753123,2.147861,-0.081, -2.734458,2.134454,-0.144, + -2.734458,2.134454,-0.144, -2.836889,2.080276,-0.144, -2.857432,2.091511,-0.081, + -2.865,2.09565,0, -2.76,2.1528,0, -2.753123,2.147861,-0.081, + -2.753123,2.147861,-0.081, -2.857432,2.091511,-0.081, -2.865,2.09565,0, + -2.660842,1.912874,-0.081, -2.602268,1.951964,-0.081, -2.5947,1.947825,0, + -2.5947,1.947825,0, -2.6528,1.9098,0, -2.660842,1.912874,-0.081, + -2.682669,1.921219,-0.144, -2.622811,1.963199,-0.144, -2.602268,1.951964,-0.081, + -2.602268,1.951964,-0.081, -2.660842,1.912874,-0.081, -2.682669,1.921219,-0.144, + -2.714835,1.933517,-0.189, -2.653085,1.979755,-0.189, -2.622811,1.963199,-0.144, + -2.622811,1.963199,-0.144, -2.682669,1.921219,-0.144, -2.714835,1.933517,-0.189, + -2.753894,1.94845,-0.216, -2.689846,1.999859,-0.216, -2.653085,1.979755,-0.189, + -2.653085,1.979755,-0.189, -2.714835,1.933517,-0.189, -2.753894,1.94845,-0.216, + -2.7964,1.9647,-0.225, -2.72985,2.021737,-0.225, -2.689846,1.999859,-0.216, + -2.689846,1.999859,-0.216, -2.753894,1.94845,-0.216, -2.7964,1.9647,-0.225, + -2.838906,1.98095,-0.216, -2.769854,2.043616,-0.216, -2.72985,2.021737,-0.225, + -2.72985,2.021737,-0.225, -2.7964,1.9647,-0.225, -2.838906,1.98095,-0.216, + -2.877965,1.995883,-0.189, -2.806615,2.06372,-0.189, -2.769854,2.043616,-0.216, + -2.769854,2.043616,-0.216, -2.838906,1.98095,-0.216, -2.877965,1.995883,-0.189, + -2.910131,2.008181,-0.144, -2.836889,2.080276,-0.144, -2.806615,2.06372,-0.189, + -2.806615,2.06372,-0.189, -2.877965,1.995883,-0.189, -2.910131,2.008181,-0.144, + -2.931958,2.016526,-0.081, -2.857432,2.091511,-0.081, -2.836889,2.080276,-0.144, + -2.836889,2.080276,-0.144, -2.910131,2.008181,-0.144, -2.931958,2.016526,-0.081, + -2.94,2.0196,0, -2.865,2.09565,0, -2.857432,2.091511,-0.081, + -2.857432,2.091511,-0.081, -2.931958,2.016526,-0.081, -2.94,2.0196,0, + -2.696413,1.862682,-0.081, -2.660842,1.912874,-0.081, -2.6528,1.9098,0, + -2.6528,1.9098,0, -2.6881,1.860975,0, -2.696413,1.862682,-0.081, + -2.718978,1.867316,-0.144, -2.682669,1.921219,-0.144, -2.660842,1.912874,-0.081, + -2.660842,1.912874,-0.081, -2.696413,1.862682,-0.081, -2.718978,1.867316,-0.144, + -2.75223,1.874146,-0.189, -2.714835,1.933517,-0.189, -2.682669,1.921219,-0.144, + -2.682669,1.921219,-0.144, -2.718978,1.867316,-0.144, -2.75223,1.874146,-0.189, + -2.792609,1.882438,-0.216, -2.753894,1.94845,-0.216, -2.714835,1.933517,-0.189, + -2.714835,1.933517,-0.189, -2.75223,1.874146,-0.189, -2.792609,1.882438,-0.216, + -2.83655,1.891463,-0.225, -2.7964,1.9647,-0.225, -2.753894,1.94845,-0.216, + -2.753894,1.94845,-0.216, -2.792609,1.882438,-0.216, -2.83655,1.891463,-0.225, + -2.880491,1.900487,-0.216, -2.838906,1.98095,-0.216, -2.7964,1.9647,-0.225, + -2.7964,1.9647,-0.225, -2.83655,1.891463,-0.225, -2.880491,1.900487,-0.216, + -2.92087,1.908779,-0.189, -2.877965,1.995883,-0.189, -2.838906,1.98095,-0.216, + -2.838906,1.98095,-0.216, -2.880491,1.900487,-0.216, -2.92087,1.908779,-0.189, + -2.954122,1.915609,-0.144, -2.910131,2.008181,-0.144, -2.877965,1.995883,-0.189, + -2.877965,1.995883,-0.189, -2.92087,1.908779,-0.189, -2.954122,1.915609,-0.144, + -2.976687,1.920243,-0.081, -2.931958,2.016526,-0.081, -2.910131,2.008181,-0.144, + -2.910131,2.008181,-0.144, -2.954122,1.915609,-0.144, -2.976687,1.920243,-0.081, + -2.985,1.92195,0, -2.94,2.0196,0, -2.931958,2.016526,-0.081, + -2.931958,2.016526,-0.081, -2.976687,1.920243,-0.081, -2.985,1.92195,0, + -2.7084,1.8,-0.081, -2.696413,1.862682,-0.081, -2.6881,1.860975,0, + -2.6881,1.860975,0, -2.7,1.8,0, -2.7084,1.8,-0.081, + -2.7312,1.8,-0.144, -2.718978,1.867316,-0.144, -2.696413,1.862682,-0.081, + -2.696413,1.862682,-0.081, -2.7084,1.8,-0.081, -2.7312,1.8,-0.144, + -2.7648,1.8,-0.189, -2.75223,1.874146,-0.189, -2.718978,1.867316,-0.144, + -2.718978,1.867316,-0.144, -2.7312,1.8,-0.144, -2.7648,1.8,-0.189, + -2.8056,1.8,-0.216, -2.792609,1.882438,-0.216, -2.75223,1.874146,-0.189, + -2.75223,1.874146,-0.189, -2.7648,1.8,-0.189, -2.8056,1.8,-0.216, + -2.85,1.8,-0.225, -2.83655,1.891463,-0.225, -2.792609,1.882438,-0.216, + -2.792609,1.882438,-0.216, -2.8056,1.8,-0.216, -2.85,1.8,-0.225, + -2.8944,1.8,-0.216, -2.880491,1.900487,-0.216, -2.83655,1.891463,-0.225, + -2.83655,1.891463,-0.225, -2.85,1.8,-0.225, -2.8944,1.8,-0.216, + -2.9352,1.8,-0.189, -2.92087,1.908779,-0.189, -2.880491,1.900487,-0.216, + -2.880491,1.900487,-0.216, -2.8944,1.8,-0.216, -2.9352,1.8,-0.189, + -2.9688,1.8,-0.144, -2.954122,1.915609,-0.144, -2.92087,1.908779,-0.189, + -2.92087,1.908779,-0.189, -2.9352,1.8,-0.189, -2.9688,1.8,-0.144, + -2.9916,1.8,-0.081, -2.976687,1.920243,-0.081, -2.954122,1.915609,-0.144, + -2.954122,1.915609,-0.144, -2.9688,1.8,-0.144, -2.9916,1.8,-0.081, + -3,1.8,0, -2.985,1.92195,0, -2.976687,1.920243,-0.081, + -2.976687,1.920243,-0.081, -2.9916,1.8,-0.081, -3,1.8,0, + -1.785445,2.243256,0.081, -1.5028,2.2437,0.081, -1.5,2.25,0, + -1.5,2.25,0, -1.785,2.24955,0, -1.785445,2.243256,0.081, + -1.786654,2.226173,0.144, -1.5104,2.2266,0.144, -1.5028,2.2437,0.081, + -1.5028,2.2437,0.081, -1.785445,2.243256,0.081, -1.786654,2.226173,0.144, + -1.788434,2.200999,0.189, -1.5216,2.2014,0.189, -1.5104,2.2266,0.144, + -1.5104,2.2266,0.144, -1.786654,2.226173,0.144, -1.788434,2.200999,0.189, + -1.790597,2.170429,0.216, -1.5352,2.1708,0.216, -1.5216,2.2014,0.189, + -1.5216,2.2014,0.189, -1.788434,2.200999,0.189, -1.790597,2.170429,0.216, + -1.79295,2.137163,0.225, -1.55,2.1375,0.225, -1.5352,2.1708,0.216, + -1.5352,2.1708,0.216, -1.790597,2.170429,0.216, -1.79295,2.137163,0.225, + -1.795303,2.103896,0.216, -1.5648,2.1042,0.216, -1.55,2.1375,0.225, + -1.55,2.1375,0.225, -1.79295,2.137163,0.225, -1.795303,2.103896,0.216, + -1.797466,2.073326,0.189, -1.5784,2.0736,0.189, -1.5648,2.1042,0.216, + -1.5648,2.1042,0.216, -1.795303,2.103896,0.216, -1.797466,2.073326,0.189, + -1.799246,2.048152,0.144, -1.5896,2.0484,0.144, -1.5784,2.0736,0.189, + -1.5784,2.0736,0.189, -1.797466,2.073326,0.189, -1.799246,2.048152,0.144, + -1.800455,2.031069,0.081, -1.5972,2.0313,0.081, -1.5896,2.0484,0.144, + -1.5896,2.0484,0.144, -1.799246,2.048152,0.144, -1.800455,2.031069,0.081, + -1.8009,2.024775,0, -1.6,2.025,0, -1.5972,2.0313,0.081, + -1.5972,2.0313,0.081, -1.800455,2.031069,0.081, -1.8009,2.024775,0, + -2.03841,2.24015,0.081, -1.785445,2.243256,0.081, -1.785,2.24955,0, + -1.785,2.24955,0, -2.04,2.2464,0, -2.03841,2.24015,0.081, + -2.034093,2.223187,0.144, -1.786654,2.226173,0.144, -1.785445,2.243256,0.081, + -1.785445,2.243256,0.081, -2.03841,2.24015,0.081, -2.034093,2.223187,0.144, + -2.027731,2.198189,0.189, -1.788434,2.200999,0.189, -1.786654,2.226173,0.144, + -1.786654,2.226173,0.144, -2.034093,2.223187,0.144, -2.027731,2.198189,0.189, + -2.020006,2.167834,0.216, -1.790597,2.170429,0.216, -1.788434,2.200999,0.189, + -1.788434,2.200999,0.189, -2.027731,2.198189,0.189, -2.020006,2.167834,0.216, + -2.0116,2.1348,0.225, -1.79295,2.137163,0.225, -1.790597,2.170429,0.216, + -1.790597,2.170429,0.216, -2.020006,2.167834,0.216, -2.0116,2.1348,0.225, + -2.003194,2.101766,0.216, -1.795303,2.103896,0.216, -1.79295,2.137163,0.225, + -1.79295,2.137163,0.225, -2.0116,2.1348,0.225, -2.003194,2.101766,0.216, + -1.995469,2.071411,0.189, -1.797466,2.073326,0.189, -1.795303,2.103896,0.216, + -1.795303,2.103896,0.216, -2.003194,2.101766,0.216, -1.995469,2.071411,0.189, + -1.989107,2.046413,0.144, -1.799246,2.048152,0.144, -1.797466,2.073326,0.189, + -1.797466,2.073326,0.189, -1.995469,2.071411,0.189, -1.989107,2.046413,0.144, + -1.98479,2.02945,0.081, -1.800455,2.031069,0.081, -1.799246,2.048152,0.144, + -1.799246,2.048152,0.144, -1.989107,2.046413,0.144, -1.98479,2.02945,0.081, + -1.9832,2.0232,0, -1.8009,2.024775,0, -1.800455,2.031069,0.081, + -1.800455,2.031069,0.081, -1.98479,2.02945,0.081, -1.9832,2.0232,0, + -2.261676,2.23172,0.081, -2.03841,2.24015,0.081, -2.04,2.2464,0, + -2.04,2.2464,0, -2.265,2.23785,0, -2.261676,2.23172,0.081, + -2.252655,2.215082,0.144, -2.034093,2.223187,0.144, -2.03841,2.24015,0.081, + -2.03841,2.24015,0.081, -2.261676,2.23172,0.081, -2.252655,2.215082,0.144, + -2.239361,2.190562,0.189, -2.027731,2.198189,0.189, -2.034093,2.223187,0.144, + -2.034093,2.223187,0.144, -2.252655,2.215082,0.144, -2.239361,2.190562,0.189, + -2.223218,2.160788,0.216, -2.020006,2.167834,0.216, -2.027731,2.198189,0.189, + -2.027731,2.198189,0.189, -2.239361,2.190562,0.189, -2.223218,2.160788,0.216, + -2.20565,2.128387,0.225, -2.0116,2.1348,0.225, -2.020006,2.167834,0.216, + -2.020006,2.167834,0.216, -2.223218,2.160788,0.216, -2.20565,2.128387,0.225, + -2.188082,2.095987,0.216, -2.003194,2.101766,0.216, -2.0116,2.1348,0.225, + -2.0116,2.1348,0.225, -2.20565,2.128387,0.225, -2.188082,2.095987,0.216, + -2.171939,2.066213,0.189, -1.995469,2.071411,0.189, -2.003194,2.101766,0.216, + -2.003194,2.101766,0.216, -2.188082,2.095987,0.216, -2.171939,2.066213,0.189, + -2.158645,2.041693,0.144, -1.989107,2.046413,0.144, -1.995469,2.071411,0.189, + -1.995469,2.071411,0.189, -2.171939,2.066213,0.189, -2.158645,2.041693,0.144, + -2.149624,2.025055,0.081, -1.98479,2.02945,0.081, -1.989107,2.046413,0.144, + -1.989107,2.046413,0.144, -2.158645,2.041693,0.144, -2.149624,2.025055,0.081, + -2.1463,2.018925,0, -1.9832,2.0232,0, -1.98479,2.02945,0.081, + -1.98479,2.02945,0.081, -2.149624,2.025055,0.081, -2.1463,2.018925,0, + -2.455229,2.215303,0.081, -2.261676,2.23172,0.081, -2.265,2.23785,0, + -2.265,2.23785,0, -2.46,2.2212,0, -2.455229,2.215303,0.081, + -2.442278,2.199298,0.144, -2.252655,2.215082,0.144, -2.261676,2.23172,0.081, + -2.261676,2.23172,0.081, -2.455229,2.215303,0.081, -2.442278,2.199298,0.144, + -2.423194,2.17571,0.189, -2.239361,2.190562,0.189, -2.252655,2.215082,0.144, + -2.252655,2.215082,0.144, -2.442278,2.199298,0.144, -2.423194,2.17571,0.189, + -2.400019,2.147069,0.216, -2.223218,2.160788,0.216, -2.239361,2.190562,0.189, + -2.239361,2.190562,0.189, -2.423194,2.17571,0.189, -2.400019,2.147069,0.216, + -2.3748,2.1159,0.225, -2.20565,2.128387,0.225, -2.223218,2.160788,0.216, + -2.223218,2.160788,0.216, -2.400019,2.147069,0.216, -2.3748,2.1159,0.225, + -2.349581,2.084731,0.216, -2.188082,2.095987,0.216, -2.20565,2.128387,0.225, + -2.20565,2.128387,0.225, -2.3748,2.1159,0.225, -2.349581,2.084731,0.216, + -2.326406,2.05609,0.189, -2.171939,2.066213,0.189, -2.188082,2.095987,0.216, + -2.188082,2.095987,0.216, -2.349581,2.084731,0.216, -2.326406,2.05609,0.189, + -2.307322,2.032502,0.144, -2.158645,2.041693,0.144, -2.171939,2.066213,0.189, + -2.171939,2.066213,0.189, -2.326406,2.05609,0.189, -2.307322,2.032502,0.144, + -2.294371,2.016497,0.081, -2.149624,2.025055,0.081, -2.158645,2.041693,0.144, + -2.158645,2.041693,0.144, -2.307322,2.032502,0.144, -2.294371,2.016497,0.081, + -2.2896,2.0106,0, -2.1463,2.018925,0, -2.149624,2.025055,0.081, + -2.149624,2.025055,0.081, -2.294371,2.016497,0.081, -2.2896,2.0106,0, + -2.61905,2.188238,0.081, -2.455229,2.215303,0.081, -2.46,2.2212,0, + -2.46,2.2212,0, -2.625,2.19375,0, -2.61905,2.188238,0.081, + -2.6029,2.173275,0.144, -2.442278,2.199298,0.144, -2.455229,2.215303,0.081, + -2.455229,2.215303,0.081, -2.61905,2.188238,0.081, -2.6029,2.173275,0.144, + -2.5791,2.151225,0.189, -2.423194,2.17571,0.189, -2.442278,2.199298,0.144, + -2.442278,2.199298,0.144, -2.6029,2.173275,0.144, -2.5791,2.151225,0.189, + -2.5502,2.12445,0.216, -2.400019,2.147069,0.216, -2.423194,2.17571,0.189, + -2.423194,2.17571,0.189, -2.5791,2.151225,0.189, -2.5502,2.12445,0.216, + -2.51875,2.095312,0.225, -2.3748,2.1159,0.225, -2.400019,2.147069,0.216, + -2.400019,2.147069,0.216, -2.5502,2.12445,0.216, -2.51875,2.095312,0.225, + -2.4873,2.066175,0.216, -2.349581,2.084731,0.216, -2.3748,2.1159,0.225, + -2.3748,2.1159,0.225, -2.51875,2.095312,0.225, -2.4873,2.066175,0.216, + -2.4584,2.0394,0.189, -2.326406,2.05609,0.189, -2.349581,2.084731,0.216, + -2.349581,2.084731,0.216, -2.4873,2.066175,0.216, -2.4584,2.0394,0.189, + -2.4346,2.01735,0.144, -2.307322,2.032502,0.144, -2.326406,2.05609,0.189, + -2.326406,2.05609,0.189, -2.4584,2.0394,0.189, -2.4346,2.01735,0.144, + -2.41845,2.002388,0.081, -2.294371,2.016497,0.081, -2.307322,2.032502,0.144, + -2.307322,2.032502,0.144, -2.4346,2.01735,0.144, -2.41845,2.002388,0.081, + -2.4125,1.996875,0, -2.2896,2.0106,0, -2.294371,2.016497,0.081, + -2.294371,2.016497,0.081, -2.41845,2.002388,0.081, -2.4125,1.996875,0, + -2.753123,2.147861,0.081, -2.61905,2.188238,0.081, -2.625,2.19375,0, + -2.625,2.19375,0, -2.76,2.1528,0, -2.753123,2.147861,0.081, + -2.734458,2.134454,0.144, -2.6029,2.173275,0.144, -2.61905,2.188238,0.081, + -2.61905,2.188238,0.081, -2.753123,2.147861,0.081, -2.734458,2.134454,0.144, + -2.70695,2.114698,0.189, -2.5791,2.151225,0.189, -2.6029,2.173275,0.144, + -2.6029,2.173275,0.144, -2.734458,2.134454,0.144, -2.70695,2.114698,0.189, + -2.673549,2.090707,0.216, -2.5502,2.12445,0.216, -2.5791,2.151225,0.189, + -2.5791,2.151225,0.189, -2.70695,2.114698,0.189, -2.673549,2.090707,0.216, + -2.6372,2.0646,0.225, -2.51875,2.095312,0.225, -2.5502,2.12445,0.216, + -2.5502,2.12445,0.216, -2.673549,2.090707,0.216, -2.6372,2.0646,0.225, + -2.600851,2.038493,0.216, -2.4873,2.066175,0.216, -2.51875,2.095312,0.225, + -2.51875,2.095312,0.225, -2.6372,2.0646,0.225, -2.600851,2.038493,0.216, + -2.56745,2.014502,0.189, -2.4584,2.0394,0.189, -2.4873,2.066175,0.216, + -2.4873,2.066175,0.216, -2.600851,2.038493,0.216, -2.56745,2.014502,0.189, + -2.539942,1.994746,0.144, -2.4346,2.01735,0.144, -2.4584,2.0394,0.189, + -2.4584,2.0394,0.189, -2.56745,2.014502,0.189, -2.539942,1.994746,0.144, + -2.521277,1.981339,0.081, -2.41845,2.002388,0.081, -2.4346,2.01735,0.144, + -2.4346,2.01735,0.144, -2.539942,1.994746,0.144, -2.521277,1.981339,0.081, + -2.5144,1.9764,0, -2.4125,1.996875,0, -2.41845,2.002388,0.081, + -2.41845,2.002388,0.081, -2.521277,1.981339,0.081, -2.5144,1.9764,0, + -2.857432,2.091511,0.081, -2.753123,2.147861,0.081, -2.76,2.1528,0, + -2.76,2.1528,0, -2.865,2.09565,0, -2.857432,2.091511,0.081, + -2.836889,2.080276,0.144, -2.734458,2.134454,0.144, -2.753123,2.147861,0.081, + -2.753123,2.147861,0.081, -2.857432,2.091511,0.081, -2.836889,2.080276,0.144, + -2.806615,2.06372,0.189, -2.70695,2.114698,0.189, -2.734458,2.134454,0.144, + -2.734458,2.134454,0.144, -2.836889,2.080276,0.144, -2.806615,2.06372,0.189, + -2.769854,2.043616,0.216, -2.673549,2.090707,0.216, -2.70695,2.114698,0.189, + -2.70695,2.114698,0.189, -2.806615,2.06372,0.189, -2.769854,2.043616,0.216, + -2.72985,2.021737,0.225, -2.6372,2.0646,0.225, -2.673549,2.090707,0.216, + -2.673549,2.090707,0.216, -2.769854,2.043616,0.216, -2.72985,2.021737,0.225, + -2.689846,1.999859,0.216, -2.600851,2.038493,0.216, -2.6372,2.0646,0.225, + -2.6372,2.0646,0.225, -2.72985,2.021737,0.225, -2.689846,1.999859,0.216, + -2.653085,1.979755,0.189, -2.56745,2.014502,0.189, -2.600851,2.038493,0.216, + -2.600851,2.038493,0.216, -2.689846,1.999859,0.216, -2.653085,1.979755,0.189, + -2.622811,1.963199,0.144, -2.539942,1.994746,0.144, -2.56745,2.014502,0.189, + -2.56745,2.014502,0.189, -2.653085,1.979755,0.189, -2.622811,1.963199,0.144, + -2.602268,1.951964,0.081, -2.521277,1.981339,0.081, -2.539942,1.994746,0.144, + -2.539942,1.994746,0.144, -2.622811,1.963199,0.144, -2.602268,1.951964,0.081, + -2.5947,1.947825,0, -2.5144,1.9764,0, -2.521277,1.981339,0.081, + -2.521277,1.981339,0.081, -2.602268,1.951964,0.081, -2.5947,1.947825,0, + -2.931958,2.016526,0.081, -2.857432,2.091511,0.081, -2.865,2.09565,0, + -2.865,2.09565,0, -2.94,2.0196,0, -2.931958,2.016526,0.081, + -2.910131,2.008181,0.144, -2.836889,2.080276,0.144, -2.857432,2.091511,0.081, + -2.857432,2.091511,0.081, -2.931958,2.016526,0.081, -2.910131,2.008181,0.144, + -2.877965,1.995883,0.189, -2.806615,2.06372,0.189, -2.836889,2.080276,0.144, + -2.836889,2.080276,0.144, -2.910131,2.008181,0.144, -2.877965,1.995883,0.189, + -2.838906,1.98095,0.216, -2.769854,2.043616,0.216, -2.806615,2.06372,0.189, + -2.806615,2.06372,0.189, -2.877965,1.995883,0.189, -2.838906,1.98095,0.216, + -2.7964,1.9647,0.225, -2.72985,2.021737,0.225, -2.769854,2.043616,0.216, + -2.769854,2.043616,0.216, -2.838906,1.98095,0.216, -2.7964,1.9647,0.225, + -2.753894,1.94845,0.216, -2.689846,1.999859,0.216, -2.72985,2.021737,0.225, + -2.72985,2.021737,0.225, -2.7964,1.9647,0.225, -2.753894,1.94845,0.216, + -2.714835,1.933517,0.189, -2.653085,1.979755,0.189, -2.689846,1.999859,0.216, + -2.689846,1.999859,0.216, -2.753894,1.94845,0.216, -2.714835,1.933517,0.189, + -2.682669,1.921219,0.144, -2.622811,1.963199,0.144, -2.653085,1.979755,0.189, + -2.653085,1.979755,0.189, -2.714835,1.933517,0.189, -2.682669,1.921219,0.144, + -2.660842,1.912874,0.081, -2.602268,1.951964,0.081, -2.622811,1.963199,0.144, + -2.622811,1.963199,0.144, -2.682669,1.921219,0.144, -2.660842,1.912874,0.081, + -2.6528,1.9098,0, -2.5947,1.947825,0, -2.602268,1.951964,0.081, + -2.602268,1.951964,0.081, -2.660842,1.912874,0.081, -2.6528,1.9098,0, + -2.976687,1.920243,0.081, -2.931958,2.016526,0.081, -2.94,2.0196,0, + -2.94,2.0196,0, -2.985,1.92195,0, -2.976687,1.920243,0.081, + -2.954122,1.915609,0.144, -2.910131,2.008181,0.144, -2.931958,2.016526,0.081, + -2.931958,2.016526,0.081, -2.976687,1.920243,0.081, -2.954122,1.915609,0.144, + -2.92087,1.908779,0.189, -2.877965,1.995883,0.189, -2.910131,2.008181,0.144, + -2.910131,2.008181,0.144, -2.954122,1.915609,0.144, -2.92087,1.908779,0.189, + -2.880491,1.900487,0.216, -2.838906,1.98095,0.216, -2.877965,1.995883,0.189, + -2.877965,1.995883,0.189, -2.92087,1.908779,0.189, -2.880491,1.900487,0.216, + -2.83655,1.891463,0.225, -2.7964,1.9647,0.225, -2.838906,1.98095,0.216, + -2.838906,1.98095,0.216, -2.880491,1.900487,0.216, -2.83655,1.891463,0.225, + -2.792609,1.882438,0.216, -2.753894,1.94845,0.216, -2.7964,1.9647,0.225, + -2.7964,1.9647,0.225, -2.83655,1.891463,0.225, -2.792609,1.882438,0.216, + -2.75223,1.874146,0.189, -2.714835,1.933517,0.189, -2.753894,1.94845,0.216, + -2.753894,1.94845,0.216, -2.792609,1.882438,0.216, -2.75223,1.874146,0.189, + -2.718978,1.867316,0.144, -2.682669,1.921219,0.144, -2.714835,1.933517,0.189, + -2.714835,1.933517,0.189, -2.75223,1.874146,0.189, -2.718978,1.867316,0.144, + -2.696413,1.862682,0.081, -2.660842,1.912874,0.081, -2.682669,1.921219,0.144, + -2.682669,1.921219,0.144, -2.718978,1.867316,0.144, -2.696413,1.862682,0.081, + -2.6881,1.860975,0, -2.6528,1.9098,0, -2.660842,1.912874,0.081, + -2.660842,1.912874,0.081, -2.696413,1.862682,0.081, -2.6881,1.860975,0, + -2.9916,1.8,0.081, -2.976687,1.920243,0.081, -2.985,1.92195,0, + -2.985,1.92195,0, -3,1.8,0, -2.9916,1.8,0.081, + -2.9688,1.8,0.144, -2.954122,1.915609,0.144, -2.976687,1.920243,0.081, + -2.976687,1.920243,0.081, -2.9916,1.8,0.081, -2.9688,1.8,0.144, + -2.9352,1.8,0.189, -2.92087,1.908779,0.189, -2.954122,1.915609,0.144, + -2.954122,1.915609,0.144, -2.9688,1.8,0.144, -2.9352,1.8,0.189, + -2.8944,1.8,0.216, -2.880491,1.900487,0.216, -2.92087,1.908779,0.189, + -2.92087,1.908779,0.189, -2.9352,1.8,0.189, -2.8944,1.8,0.216, + -2.85,1.8,0.225, -2.83655,1.891463,0.225, -2.880491,1.900487,0.216, + -2.880491,1.900487,0.216, -2.8944,1.8,0.216, -2.85,1.8,0.225, + -2.8056,1.8,0.216, -2.792609,1.882438,0.216, -2.83655,1.891463,0.225, + -2.83655,1.891463,0.225, -2.85,1.8,0.225, -2.8056,1.8,0.216, + -2.7648,1.8,0.189, -2.75223,1.874146,0.189, -2.792609,1.882438,0.216, + -2.792609,1.882438,0.216, -2.8056,1.8,0.216, -2.7648,1.8,0.189, + -2.7312,1.8,0.144, -2.718978,1.867316,0.144, -2.75223,1.874146,0.189, + -2.75223,1.874146,0.189, -2.7648,1.8,0.189, -2.7312,1.8,0.144, + -2.7084,1.8,0.081, -2.696413,1.862682,0.081, -2.718978,1.867316,0.144, + -2.718978,1.867316,0.144, -2.7312,1.8,0.144, -2.7084,1.8,0.081, + -2.7,1.8,0, -2.6881,1.860975,0, -2.696413,1.862682,0.081, + -2.696413,1.862682,0.081, -2.7084,1.8,0.081, -2.7,1.8,0, + -2.702175,1.724519,-0.081, -2.7084,1.8,-0.081, -2.7,1.8,0, + -2.7,1.8,0, -2.6939,1.7262,0, -2.702175,1.724519,-0.081, + -2.724637,1.719956,-0.144, -2.7312,1.8,-0.144, -2.7084,1.8,-0.081, + -2.7084,1.8,-0.081, -2.702175,1.724519,-0.081, -2.724637,1.719956,-0.144, + -2.757739,1.713232,-0.189, -2.7648,1.8,-0.189, -2.7312,1.8,-0.144, + -2.7312,1.8,-0.144, -2.724637,1.719956,-0.144, -2.757739,1.713232,-0.189, + -2.797934,1.705067,-0.216, -2.8056,1.8,-0.216, -2.7648,1.8,-0.189, + -2.7648,1.8,-0.189, -2.757739,1.713232,-0.189, -2.797934,1.705067,-0.216, + -2.841675,1.696181,-0.225, -2.85,1.8,-0.225, -2.8056,1.8,-0.216, + -2.8056,1.8,-0.216, -2.797934,1.705067,-0.216, -2.841675,1.696181,-0.225, + -2.885416,1.687296,-0.216, -2.8944,1.8,-0.216, -2.85,1.8,-0.225, + -2.85,1.8,-0.225, -2.841675,1.696181,-0.225, -2.885416,1.687296,-0.216, + -2.925611,1.679131,-0.189, -2.9352,1.8,-0.189, -2.8944,1.8,-0.216, + -2.8944,1.8,-0.216, -2.885416,1.687296,-0.216, -2.925611,1.679131,-0.189, + -2.958713,1.672406,-0.144, -2.9688,1.8,-0.144, -2.9352,1.8,-0.189, + -2.9352,1.8,-0.189, -2.925611,1.679131,-0.189, -2.958713,1.672406,-0.144, + -2.981175,1.667844,-0.081, -2.9916,1.8,-0.081, -2.9688,1.8,-0.144, + -2.9688,1.8,-0.144, -2.958713,1.672406,-0.144, -2.981175,1.667844,-0.081, + -2.98945,1.666162,0, -3,1.8,0, -2.9916,1.8,-0.081, + -2.9916,1.8,-0.081, -2.981175,1.667844,-0.081, -2.98945,1.666162,0, + -2.683107,1.63861,-0.081, -2.702175,1.724519,-0.081, -2.6939,1.7262,0, + -2.6939,1.7262,0, -2.6752,1.6416,0, -2.683107,1.63861,-0.081, + -2.70457,1.630493,-0.144, -2.724637,1.719956,-0.144, -2.702175,1.724519,-0.081, + -2.702175,1.724519,-0.081, -2.683107,1.63861,-0.081, -2.70457,1.630493,-0.144, + -2.736198,1.618531,-0.189, -2.757739,1.713232,-0.189, -2.724637,1.719956,-0.144, + -2.724637,1.719956,-0.144, -2.70457,1.630493,-0.144, -2.736198,1.618531,-0.189, + -2.774605,1.604006,-0.216, -2.797934,1.705067,-0.216, -2.757739,1.713232,-0.189, + -2.757739,1.713232,-0.189, -2.736198,1.618531,-0.189, -2.774605,1.604006,-0.216, + -2.8164,1.5882,-0.225, -2.841675,1.696181,-0.225, -2.797934,1.705067,-0.216, + -2.797934,1.705067,-0.216, -2.774605,1.604006,-0.216, -2.8164,1.5882,-0.225, + -2.858195,1.572394,-0.216, -2.885416,1.687296,-0.216, -2.841675,1.696181,-0.225, + -2.841675,1.696181,-0.225, -2.8164,1.5882,-0.225, -2.858195,1.572394,-0.216, + -2.896602,1.557869,-0.189, -2.925611,1.679131,-0.189, -2.885416,1.687296,-0.216, + -2.885416,1.687296,-0.216, -2.858195,1.572394,-0.216, -2.896602,1.557869,-0.189, + -2.92823,1.545907,-0.144, -2.958713,1.672406,-0.144, -2.925611,1.679131,-0.189, + -2.925611,1.679131,-0.189, -2.896602,1.557869,-0.189, -2.92823,1.545907,-0.144, + -2.949693,1.53779,-0.081, -2.981175,1.667844,-0.081, -2.958713,1.672406,-0.144, + -2.958713,1.672406,-0.144, -2.92823,1.545907,-0.144, -2.949693,1.53779,-0.081, + -2.9576,1.5348,0, -2.98945,1.666162,0, -2.981175,1.667844,-0.081, + -2.981175,1.667844,-0.081, -2.949693,1.53779,-0.081, -2.9576,1.5348,0, + -2.650604,1.544903,-0.081, -2.683107,1.63861,-0.081, -2.6752,1.6416,0, + -2.6752,1.6416,0, -2.6433,1.5489,0, -2.650604,1.544903,-0.081, + -2.670428,1.534053,-0.144, -2.70457,1.630493,-0.144, -2.683107,1.63861,-0.081, + -2.683107,1.63861,-0.081, -2.650604,1.544903,-0.081, -2.670428,1.534053,-0.144, + -2.699644,1.518063,-0.189, -2.736198,1.618531,-0.189, -2.70457,1.630493,-0.144, + -2.70457,1.630493,-0.144, -2.670428,1.534053,-0.144, -2.699644,1.518063,-0.189, + -2.735119,1.498648,-0.216, -2.774605,1.604006,-0.216, -2.736198,1.618531,-0.189, + -2.736198,1.618531,-0.189, -2.699644,1.518063,-0.189, -2.735119,1.498648,-0.216, + -2.773725,1.477519,-0.225, -2.8164,1.5882,-0.225, -2.774605,1.604006,-0.216, + -2.774605,1.604006,-0.216, -2.735119,1.498648,-0.216, -2.773725,1.477519,-0.225, + -2.812331,1.45639,-0.216, -2.858195,1.572394,-0.216, -2.8164,1.5882,-0.225, + -2.8164,1.5882,-0.225, -2.773725,1.477519,-0.225, -2.812331,1.45639,-0.216, + -2.847806,1.436974,-0.189, -2.896602,1.557869,-0.189, -2.858195,1.572394,-0.216, + -2.858195,1.572394,-0.216, -2.812331,1.45639,-0.216, -2.847806,1.436974,-0.189, + -2.877022,1.420985,-0.144, -2.92823,1.545907,-0.144, -2.896602,1.557869,-0.189, + -2.896602,1.557869,-0.189, -2.847806,1.436974,-0.189, -2.877022,1.420985,-0.144, + -2.896846,1.410135,-0.081, -2.949693,1.53779,-0.081, -2.92823,1.545907,-0.144, + -2.92823,1.545907,-0.144, -2.877022,1.420985,-0.144, -2.896846,1.410135,-0.081, + -2.90415,1.406137,0, -2.9576,1.5348,0, -2.949693,1.53779,-0.081, + -2.949693,1.53779,-0.081, -2.896846,1.410135,-0.081, -2.90415,1.406137,0, + -2.604074,1.446029,-0.081, -2.650604,1.544903,-0.081, -2.6433,1.5489,0, + -2.6433,1.5489,0, -2.5976,1.4508,0, -2.604074,1.446029,-0.081, + -2.621645,1.433078,-0.144, -2.670428,1.534053,-0.144, -2.650604,1.544903,-0.081, + -2.650604,1.544903,-0.081, -2.604074,1.446029,-0.081, -2.621645,1.433078,-0.144, + -2.647539,1.413994,-0.189, -2.699644,1.518063,-0.189, -2.670428,1.534053,-0.144, + -2.670428,1.534053,-0.144, -2.621645,1.433078,-0.144, -2.647539,1.413994,-0.189, + -2.678982,1.390819,-0.216, -2.735119,1.498648,-0.216, -2.699644,1.518063,-0.189, + -2.699644,1.518063,-0.189, -2.647539,1.413994,-0.189, -2.678982,1.390819,-0.216, + -2.7132,1.3656,-0.225, -2.773725,1.477519,-0.225, -2.735119,1.498648,-0.216, + -2.735119,1.498648,-0.216, -2.678982,1.390819,-0.216, -2.7132,1.3656,-0.225, + -2.747418,1.340381,-0.216, -2.812331,1.45639,-0.216, -2.773725,1.477519,-0.225, + -2.773725,1.477519,-0.225, -2.7132,1.3656,-0.225, -2.747418,1.340381,-0.216, + -2.778861,1.317206,-0.189, -2.847806,1.436974,-0.189, -2.812331,1.45639,-0.216, + -2.812331,1.45639,-0.216, -2.747418,1.340381,-0.216, -2.778861,1.317206,-0.189, + -2.804755,1.298122,-0.144, -2.877022,1.420985,-0.144, -2.847806,1.436974,-0.189, + -2.847806,1.436974,-0.189, -2.778861,1.317206,-0.189, -2.804755,1.298122,-0.144, + -2.822326,1.285171,-0.081, -2.896846,1.410135,-0.081, -2.877022,1.420985,-0.144, + -2.877022,1.420985,-0.144, -2.804755,1.298122,-0.144, -2.822326,1.285171,-0.081, + -2.8288,1.2804,0, -2.90415,1.406137,0, -2.896846,1.410135,-0.081, + -2.896846,1.410135,-0.081, -2.822326,1.285171,-0.081, -2.8288,1.2804,0, + -2.542925,1.344619,-0.081, -2.604074,1.446029,-0.081, -2.5976,1.4508,0, + -2.5976,1.4508,0, -2.5375,1.35,0, -2.542925,1.344619,-0.081, + -2.55765,1.330013,-0.144, -2.621645,1.433078,-0.144, -2.604074,1.446029,-0.081, + -2.604074,1.446029,-0.081, -2.542925,1.344619,-0.081, -2.55765,1.330013,-0.144, + -2.57935,1.308488,-0.189, -2.647539,1.413994,-0.189, -2.621645,1.433078,-0.144, + -2.621645,1.433078,-0.144, -2.55765,1.330013,-0.144, -2.57935,1.308488,-0.189, + -2.6057,1.28235,-0.216, -2.678982,1.390819,-0.216, -2.647539,1.413994,-0.189, + -2.647539,1.413994,-0.189, -2.57935,1.308488,-0.189, -2.6057,1.28235,-0.216, + -2.634375,1.253906,-0.225, -2.7132,1.3656,-0.225, -2.678982,1.390819,-0.216, + -2.678982,1.390819,-0.216, -2.6057,1.28235,-0.216, -2.634375,1.253906,-0.225, + -2.66305,1.225463,-0.216, -2.747418,1.340381,-0.216, -2.7132,1.3656,-0.225, + -2.7132,1.3656,-0.225, -2.634375,1.253906,-0.225, -2.66305,1.225463,-0.216, + -2.6894,1.199325,-0.189, -2.778861,1.317206,-0.189, -2.747418,1.340381,-0.216, + -2.747418,1.340381,-0.216, -2.66305,1.225463,-0.216, -2.6894,1.199325,-0.189, + -2.7111,1.1778,-0.144, -2.804755,1.298122,-0.144, -2.778861,1.317206,-0.189, + -2.778861,1.317206,-0.189, -2.6894,1.199325,-0.189, -2.7111,1.1778,-0.144, + -2.725825,1.163194,-0.081, -2.822326,1.285171,-0.081, -2.804755,1.298122,-0.144, + -2.804755,1.298122,-0.144, -2.7111,1.1778,-0.144, -2.725825,1.163194,-0.081, + -2.73125,1.157813,0, -2.8288,1.2804,0, -2.822326,1.285171,-0.081, + -2.822326,1.285171,-0.081, -2.725825,1.163194,-0.081, -2.73125,1.157813,0, + -2.466566,1.243303,-0.081, -2.542925,1.344619,-0.081, -2.5375,1.35,0, + -2.5375,1.35,0, -2.4624,1.2492,0, -2.466566,1.243303,-0.081, + -2.477875,1.227298,-0.144, -2.55765,1.330013,-0.144, -2.542925,1.344619,-0.081, + -2.542925,1.344619,-0.081, -2.466566,1.243303,-0.081, -2.477875,1.227298,-0.144, + -2.494541,1.20371,-0.189, -2.57935,1.308488,-0.189, -2.55765,1.330013,-0.144, + -2.55765,1.330013,-0.144, -2.477875,1.227298,-0.144, -2.494541,1.20371,-0.189, + -2.514778,1.175069,-0.216, -2.6057,1.28235,-0.216, -2.57935,1.308488,-0.189, + -2.57935,1.308488,-0.189, -2.494541,1.20371,-0.189, -2.514778,1.175069,-0.216, + -2.5368,1.1439,-0.225, -2.634375,1.253906,-0.225, -2.6057,1.28235,-0.216, + -2.6057,1.28235,-0.216, -2.514778,1.175069,-0.216, -2.5368,1.1439,-0.225, + -2.558822,1.112731,-0.216, -2.66305,1.225463,-0.216, -2.634375,1.253906,-0.225, + -2.634375,1.253906,-0.225, -2.5368,1.1439,-0.225, -2.558822,1.112731,-0.216, + -2.579059,1.08409,-0.189, -2.6894,1.199325,-0.189, -2.66305,1.225463,-0.216, + -2.66305,1.225463,-0.216, -2.558822,1.112731,-0.216, -2.579059,1.08409,-0.189, + -2.595725,1.060502,-0.144, -2.7111,1.1778,-0.144, -2.6894,1.199325,-0.189, + -2.6894,1.199325,-0.189, -2.579059,1.08409,-0.189, -2.595725,1.060502,-0.144, + -2.607034,1.044497,-0.081, -2.725825,1.163194,-0.081, -2.7111,1.1778,-0.144, + -2.7111,1.1778,-0.144, -2.595725,1.060502,-0.144, -2.607034,1.044497,-0.081, + -2.6112,1.0386,0, -2.73125,1.157813,0, -2.725825,1.163194,-0.081, + -2.725825,1.163194,-0.081, -2.607034,1.044497,-0.081, -2.6112,1.0386,0, + -2.374406,1.144713,-0.081, -2.466566,1.243303,-0.081, -2.4624,1.2492,0, + -2.4624,1.2492,0, -2.3717,1.1511,0, -2.374406,1.144713,-0.081, + -2.381752,1.127376,-0.144, -2.477875,1.227298,-0.144, -2.466566,1.243303,-0.081, + -2.466566,1.243303,-0.081, -2.374406,1.144713,-0.081, -2.381752,1.127376,-0.144, + -2.392576,1.101828,-0.189, -2.494541,1.20371,-0.189, -2.477875,1.227298,-0.144, + -2.477875,1.227298,-0.144, -2.381752,1.127376,-0.144, -2.392576,1.101828,-0.189, + -2.405721,1.070804,-0.216, -2.514778,1.175069,-0.216, -2.494541,1.20371,-0.189, + -2.494541,1.20371,-0.189, -2.392576,1.101828,-0.189, -2.405721,1.070804,-0.216, + -2.420025,1.037044,-0.225, -2.5368,1.1439,-0.225, -2.514778,1.175069,-0.216, + -2.514778,1.175069,-0.216, -2.405721,1.070804,-0.216, -2.420025,1.037044,-0.225, + -2.434329,1.003283,-0.216, -2.558822,1.112731,-0.216, -2.5368,1.1439,-0.225, + -2.5368,1.1439,-0.225, -2.420025,1.037044,-0.225, -2.434329,1.003283,-0.216, + -2.447474,0.97226,-0.189, -2.579059,1.08409,-0.189, -2.558822,1.112731,-0.216, + -2.558822,1.112731,-0.216, -2.434329,1.003283,-0.216, -2.447474,0.97226,-0.189, + -2.458298,0.946711,-0.144, -2.595725,1.060502,-0.144, -2.579059,1.08409,-0.189, + -2.579059,1.08409,-0.189, -2.447474,0.97226,-0.189, -2.458298,0.946711,-0.144, + -2.465644,0.929375,-0.081, -2.607034,1.044497,-0.081, -2.595725,1.060502,-0.144, + -2.595725,1.060502,-0.144, -2.458298,0.946711,-0.144, -2.465644,0.929375,-0.081, + -2.46835,0.922987,0, -2.6112,1.0386,0, -2.607034,1.044497,-0.081, + -2.607034,1.044497,-0.081, -2.465644,0.929375,-0.081, -2.46835,0.922987,0, + -2.265853,1.051478,-0.081, -2.374406,1.144713,-0.081, -2.3717,1.1511,0, + -2.3717,1.1511,0, -2.2648,1.0584,0, -2.265853,1.051478,-0.081, + -2.26871,1.032691,-0.144, -2.381752,1.127376,-0.144, -2.374406,1.144713,-0.081, + -2.374406,1.144713,-0.081, -2.265853,1.051478,-0.081, -2.26871,1.032691,-0.144, + -2.272922,1.005005,-0.189, -2.392576,1.101828,-0.189, -2.381752,1.127376,-0.144, + -2.381752,1.127376,-0.144, -2.26871,1.032691,-0.144, -2.272922,1.005005,-0.189, + -2.278035,0.971386,-0.216, -2.405721,1.070804,-0.216, -2.392576,1.101828,-0.189, + -2.392576,1.101828,-0.189, -2.272922,1.005005,-0.189, -2.278035,0.971386,-0.216, + -2.2836,0.9348,-0.225, -2.420025,1.037044,-0.225, -2.405721,1.070804,-0.216, + -2.405721,1.070804,-0.216, -2.278035,0.971386,-0.216, -2.2836,0.9348,-0.225, + -2.289165,0.898214,-0.216, -2.434329,1.003283,-0.216, -2.420025,1.037044,-0.225, + -2.420025,1.037044,-0.225, -2.2836,0.9348,-0.225, -2.289165,0.898214,-0.216, + -2.294278,0.864595,-0.189, -2.447474,0.97226,-0.189, -2.434329,1.003283,-0.216, + -2.434329,1.003283,-0.216, -2.289165,0.898214,-0.216, -2.294278,0.864595,-0.189, + -2.29849,0.836909,-0.144, -2.458298,0.946711,-0.144, -2.447474,0.97226,-0.189, + -2.447474,0.97226,-0.189, -2.294278,0.864595,-0.189, -2.29849,0.836909,-0.144, + -2.301347,0.818122,-0.081, -2.465644,0.929375,-0.081, -2.458298,0.946711,-0.144, + -2.458298,0.946711,-0.144, -2.29849,0.836909,-0.144, -2.301347,0.818122,-0.081, + -2.3024,0.8112,0, -2.46835,0.922987,0, -2.465644,0.929375,-0.081, + -2.465644,0.929375,-0.081, -2.301347,0.818122,-0.081, -2.3024,0.8112,0, + -2.140315,0.966231,-0.081, -2.265853,1.051478,-0.081, -2.2648,1.0584,0, + -2.2648,1.0584,0, -2.1411,0.9738,0, -2.140315,0.966231,-0.081, + -2.138183,0.945685,-0.144, -2.26871,1.032691,-0.144, -2.265853,1.051478,-0.081, + -2.265853,1.051478,-0.081, -2.140315,0.966231,-0.081, -2.138183,0.945685,-0.144, + -2.135041,0.915407,-0.189, -2.272922,1.005005,-0.189, -2.26871,1.032691,-0.144, + -2.26871,1.032691,-0.144, -2.138183,0.945685,-0.144, -2.135041,0.915407,-0.189, + -2.131226,0.878641,-0.216, -2.278035,0.971386,-0.216, -2.272922,1.005005,-0.189, + -2.272922,1.005005,-0.189, -2.135041,0.915407,-0.189, -2.131226,0.878641,-0.216, + -2.127075,0.838631,-0.225, -2.2836,0.9348,-0.225, -2.278035,0.971386,-0.216, + -2.278035,0.971386,-0.216, -2.131226,0.878641,-0.216, -2.127075,0.838631,-0.225, + -2.122924,0.798621,-0.216, -2.289165,0.898214,-0.216, -2.2836,0.9348,-0.225, + -2.2836,0.9348,-0.225, -2.127075,0.838631,-0.225, -2.122924,0.798621,-0.216, + -2.119109,0.761855,-0.189, -2.294278,0.864595,-0.189, -2.289165,0.898214,-0.216, + -2.289165,0.898214,-0.216, -2.122924,0.798621,-0.216, -2.119109,0.761855,-0.189, + -2.115967,0.731578,-0.144, -2.29849,0.836909,-0.144, -2.294278,0.864595,-0.189, + -2.294278,0.864595,-0.189, -2.119109,0.761855,-0.189, -2.115967,0.731578,-0.144, + -2.113835,0.711032,-0.081, -2.301347,0.818122,-0.081, -2.29849,0.836909,-0.144, + -2.29849,0.836909,-0.144, -2.115967,0.731578,-0.144, -2.113835,0.711032,-0.081, + -2.11305,0.703463,0, -2.3024,0.8112,0, -2.301347,0.818122,-0.081, + -2.301347,0.818122,-0.081, -2.113835,0.711032,-0.081, -2.11305,0.703463,0, + -1.9972,0.8916,-0.081, -2.140315,0.966231,-0.081, -2.1411,0.9738,0, + -2.1411,0.9738,0, -2,0.9,0, -1.9972,0.8916,-0.081, + -1.9896,0.8688,-0.144, -2.138183,0.945685,-0.144, -2.140315,0.966231,-0.081, + -2.140315,0.966231,-0.081, -1.9972,0.8916,-0.081, -1.9896,0.8688,-0.144, + -1.9784,0.8352,-0.189, -2.135041,0.915407,-0.189, -2.138183,0.945685,-0.144, + -2.138183,0.945685,-0.144, -1.9896,0.8688,-0.144, -1.9784,0.8352,-0.189, + -1.9648,0.7944,-0.216, -2.131226,0.878641,-0.216, -2.135041,0.915407,-0.189, + -2.135041,0.915407,-0.189, -1.9784,0.8352,-0.189, -1.9648,0.7944,-0.216, + -1.95,0.75,-0.225, -2.127075,0.838631,-0.225, -2.131226,0.878641,-0.216, + -2.131226,0.878641,-0.216, -1.9648,0.7944,-0.216, -1.95,0.75,-0.225, + -1.9352,0.7056,-0.216, -2.122924,0.798621,-0.216, -2.127075,0.838631,-0.225, + -2.127075,0.838631,-0.225, -1.95,0.75,-0.225, -1.9352,0.7056,-0.216, + -1.9216,0.6648,-0.189, -2.119109,0.761855,-0.189, -2.122924,0.798621,-0.216, + -2.122924,0.798621,-0.216, -1.9352,0.7056,-0.216, -1.9216,0.6648,-0.189, + -1.9104,0.6312,-0.144, -2.115967,0.731578,-0.144, -2.119109,0.761855,-0.189, + -2.119109,0.761855,-0.189, -1.9216,0.6648,-0.189, -1.9104,0.6312,-0.144, + -1.9028,0.6084,-0.081, -2.113835,0.711032,-0.081, -2.115967,0.731578,-0.144, + -2.115967,0.731578,-0.144, -1.9104,0.6312,-0.144, -1.9028,0.6084,-0.081, + -1.9,0.6,0, -2.11305,0.703463,0, -2.113835,0.711032,-0.081, + -2.113835,0.711032,-0.081, -1.9028,0.6084,-0.081, -1.9,0.6,0, + -2.981175,1.667844,0.081, -2.9916,1.8,0.081, -3,1.8,0, + -3,1.8,0, -2.98945,1.666162,0, -2.981175,1.667844,0.081, + -2.958713,1.672406,0.144, -2.9688,1.8,0.144, -2.9916,1.8,0.081, + -2.9916,1.8,0.081, -2.981175,1.667844,0.081, -2.958713,1.672406,0.144, + -2.925611,1.679131,0.189, -2.9352,1.8,0.189, -2.9688,1.8,0.144, + -2.9688,1.8,0.144, -2.958713,1.672406,0.144, -2.925611,1.679131,0.189, + -2.885416,1.687296,0.216, -2.8944,1.8,0.216, -2.9352,1.8,0.189, + -2.9352,1.8,0.189, -2.925611,1.679131,0.189, -2.885416,1.687296,0.216, + -2.841675,1.696181,0.225, -2.85,1.8,0.225, -2.8944,1.8,0.216, + -2.8944,1.8,0.216, -2.885416,1.687296,0.216, -2.841675,1.696181,0.225, + -2.797934,1.705067,0.216, -2.8056,1.8,0.216, -2.85,1.8,0.225, + -2.85,1.8,0.225, -2.841675,1.696181,0.225, -2.797934,1.705067,0.216, + -2.757739,1.713232,0.189, -2.7648,1.8,0.189, -2.8056,1.8,0.216, + -2.8056,1.8,0.216, -2.797934,1.705067,0.216, -2.757739,1.713232,0.189, + -2.724637,1.719956,0.144, -2.7312,1.8,0.144, -2.7648,1.8,0.189, + -2.7648,1.8,0.189, -2.757739,1.713232,0.189, -2.724637,1.719956,0.144, + -2.702175,1.724519,0.081, -2.7084,1.8,0.081, -2.7312,1.8,0.144, + -2.7312,1.8,0.144, -2.724637,1.719956,0.144, -2.702175,1.724519,0.081, + -2.6939,1.7262,0, -2.7,1.8,0, -2.7084,1.8,0.081, + -2.7084,1.8,0.081, -2.702175,1.724519,0.081, -2.6939,1.7262,0, + -2.949693,1.53779,0.081, -2.981175,1.667844,0.081, -2.98945,1.666162,0, + -2.98945,1.666162,0, -2.9576,1.5348,0, -2.949693,1.53779,0.081, + -2.92823,1.545907,0.144, -2.958713,1.672406,0.144, -2.981175,1.667844,0.081, + -2.981175,1.667844,0.081, -2.949693,1.53779,0.081, -2.92823,1.545907,0.144, + -2.896602,1.557869,0.189, -2.925611,1.679131,0.189, -2.958713,1.672406,0.144, + -2.958713,1.672406,0.144, -2.92823,1.545907,0.144, -2.896602,1.557869,0.189, + -2.858195,1.572394,0.216, -2.885416,1.687296,0.216, -2.925611,1.679131,0.189, + -2.925611,1.679131,0.189, -2.896602,1.557869,0.189, -2.858195,1.572394,0.216, + -2.8164,1.5882,0.225, -2.841675,1.696181,0.225, -2.885416,1.687296,0.216, + -2.885416,1.687296,0.216, -2.858195,1.572394,0.216, -2.8164,1.5882,0.225, + -2.774605,1.604006,0.216, -2.797934,1.705067,0.216, -2.841675,1.696181,0.225, + -2.841675,1.696181,0.225, -2.8164,1.5882,0.225, -2.774605,1.604006,0.216, + -2.736198,1.618531,0.189, -2.757739,1.713232,0.189, -2.797934,1.705067,0.216, + -2.797934,1.705067,0.216, -2.774605,1.604006,0.216, -2.736198,1.618531,0.189, + -2.70457,1.630493,0.144, -2.724637,1.719956,0.144, -2.757739,1.713232,0.189, + -2.757739,1.713232,0.189, -2.736198,1.618531,0.189, -2.70457,1.630493,0.144, + -2.683107,1.63861,0.081, -2.702175,1.724519,0.081, -2.724637,1.719956,0.144, + -2.724637,1.719956,0.144, -2.70457,1.630493,0.144, -2.683107,1.63861,0.081, + -2.6752,1.6416,0, -2.6939,1.7262,0, -2.702175,1.724519,0.081, + -2.702175,1.724519,0.081, -2.683107,1.63861,0.081, -2.6752,1.6416,0, + -2.896846,1.410135,0.081, -2.949693,1.53779,0.081, -2.9576,1.5348,0, + -2.9576,1.5348,0, -2.90415,1.406137,0, -2.896846,1.410135,0.081, + -2.877022,1.420985,0.144, -2.92823,1.545907,0.144, -2.949693,1.53779,0.081, + -2.949693,1.53779,0.081, -2.896846,1.410135,0.081, -2.877022,1.420985,0.144, + -2.847806,1.436974,0.189, -2.896602,1.557869,0.189, -2.92823,1.545907,0.144, + -2.92823,1.545907,0.144, -2.877022,1.420985,0.144, -2.847806,1.436974,0.189, + -2.812331,1.45639,0.216, -2.858195,1.572394,0.216, -2.896602,1.557869,0.189, + -2.896602,1.557869,0.189, -2.847806,1.436974,0.189, -2.812331,1.45639,0.216, + -2.773725,1.477519,0.225, -2.8164,1.5882,0.225, -2.858195,1.572394,0.216, + -2.858195,1.572394,0.216, -2.812331,1.45639,0.216, -2.773725,1.477519,0.225, + -2.735119,1.498648,0.216, -2.774605,1.604006,0.216, -2.8164,1.5882,0.225, + -2.8164,1.5882,0.225, -2.773725,1.477519,0.225, -2.735119,1.498648,0.216, + -2.699644,1.518063,0.189, -2.736198,1.618531,0.189, -2.774605,1.604006,0.216, + -2.774605,1.604006,0.216, -2.735119,1.498648,0.216, -2.699644,1.518063,0.189, + -2.670428,1.534053,0.144, -2.70457,1.630493,0.144, -2.736198,1.618531,0.189, + -2.736198,1.618531,0.189, -2.699644,1.518063,0.189, -2.670428,1.534053,0.144, + -2.650604,1.544903,0.081, -2.683107,1.63861,0.081, -2.70457,1.630493,0.144, + -2.70457,1.630493,0.144, -2.670428,1.534053,0.144, -2.650604,1.544903,0.081, + -2.6433,1.5489,0, -2.6752,1.6416,0, -2.683107,1.63861,0.081, + -2.683107,1.63861,0.081, -2.650604,1.544903,0.081, -2.6433,1.5489,0, + -2.822326,1.285171,0.081, -2.896846,1.410135,0.081, -2.90415,1.406137,0, + -2.90415,1.406137,0, -2.8288,1.2804,0, -2.822326,1.285171,0.081, + -2.804755,1.298122,0.144, -2.877022,1.420985,0.144, -2.896846,1.410135,0.081, + -2.896846,1.410135,0.081, -2.822326,1.285171,0.081, -2.804755,1.298122,0.144, + -2.778861,1.317206,0.189, -2.847806,1.436974,0.189, -2.877022,1.420985,0.144, + -2.877022,1.420985,0.144, -2.804755,1.298122,0.144, -2.778861,1.317206,0.189, + -2.747418,1.340381,0.216, -2.812331,1.45639,0.216, -2.847806,1.436974,0.189, + -2.847806,1.436974,0.189, -2.778861,1.317206,0.189, -2.747418,1.340381,0.216, + -2.7132,1.3656,0.225, -2.773725,1.477519,0.225, -2.812331,1.45639,0.216, + -2.812331,1.45639,0.216, -2.747418,1.340381,0.216, -2.7132,1.3656,0.225, + -2.678982,1.390819,0.216, -2.735119,1.498648,0.216, -2.773725,1.477519,0.225, + -2.773725,1.477519,0.225, -2.7132,1.3656,0.225, -2.678982,1.390819,0.216, + -2.647539,1.413994,0.189, -2.699644,1.518063,0.189, -2.735119,1.498648,0.216, + -2.735119,1.498648,0.216, -2.678982,1.390819,0.216, -2.647539,1.413994,0.189, + -2.621645,1.433078,0.144, -2.670428,1.534053,0.144, -2.699644,1.518063,0.189, + -2.699644,1.518063,0.189, -2.647539,1.413994,0.189, -2.621645,1.433078,0.144, + -2.604074,1.446029,0.081, -2.650604,1.544903,0.081, -2.670428,1.534053,0.144, + -2.670428,1.534053,0.144, -2.621645,1.433078,0.144, -2.604074,1.446029,0.081, + -2.5976,1.4508,0, -2.6433,1.5489,0, -2.650604,1.544903,0.081, + -2.650604,1.544903,0.081, -2.604074,1.446029,0.081, -2.5976,1.4508,0, + -2.725825,1.163194,0.081, -2.822326,1.285171,0.081, -2.8288,1.2804,0, + -2.8288,1.2804,0, -2.73125,1.157813,0, -2.725825,1.163194,0.081, + -2.7111,1.1778,0.144, -2.804755,1.298122,0.144, -2.822326,1.285171,0.081, + -2.822326,1.285171,0.081, -2.725825,1.163194,0.081, -2.7111,1.1778,0.144, + -2.6894,1.199325,0.189, -2.778861,1.317206,0.189, -2.804755,1.298122,0.144, + -2.804755,1.298122,0.144, -2.7111,1.1778,0.144, -2.6894,1.199325,0.189, + -2.66305,1.225463,0.216, -2.747418,1.340381,0.216, -2.778861,1.317206,0.189, + -2.778861,1.317206,0.189, -2.6894,1.199325,0.189, -2.66305,1.225463,0.216, + -2.634375,1.253906,0.225, -2.7132,1.3656,0.225, -2.747418,1.340381,0.216, + -2.747418,1.340381,0.216, -2.66305,1.225463,0.216, -2.634375,1.253906,0.225, + -2.6057,1.28235,0.216, -2.678982,1.390819,0.216, -2.7132,1.3656,0.225, + -2.7132,1.3656,0.225, -2.634375,1.253906,0.225, -2.6057,1.28235,0.216, + -2.57935,1.308488,0.189, -2.647539,1.413994,0.189, -2.678982,1.390819,0.216, + -2.678982,1.390819,0.216, -2.6057,1.28235,0.216, -2.57935,1.308488,0.189, + -2.55765,1.330013,0.144, -2.621645,1.433078,0.144, -2.647539,1.413994,0.189, + -2.647539,1.413994,0.189, -2.57935,1.308488,0.189, -2.55765,1.330013,0.144, + -2.542925,1.344619,0.081, -2.604074,1.446029,0.081, -2.621645,1.433078,0.144, + -2.621645,1.433078,0.144, -2.55765,1.330013,0.144, -2.542925,1.344619,0.081, + -2.5375,1.35,0, -2.5976,1.4508,0, -2.604074,1.446029,0.081, + -2.604074,1.446029,0.081, -2.542925,1.344619,0.081, -2.5375,1.35,0, + -2.607034,1.044497,0.081, -2.725825,1.163194,0.081, -2.73125,1.157813,0, + -2.73125,1.157813,0, -2.6112,1.0386,0, -2.607034,1.044497,0.081, + -2.595725,1.060502,0.144, -2.7111,1.1778,0.144, -2.725825,1.163194,0.081, + -2.725825,1.163194,0.081, -2.607034,1.044497,0.081, -2.595725,1.060502,0.144, + -2.579059,1.08409,0.189, -2.6894,1.199325,0.189, -2.7111,1.1778,0.144, + -2.7111,1.1778,0.144, -2.595725,1.060502,0.144, -2.579059,1.08409,0.189, + -2.558822,1.112731,0.216, -2.66305,1.225463,0.216, -2.6894,1.199325,0.189, + -2.6894,1.199325,0.189, -2.579059,1.08409,0.189, -2.558822,1.112731,0.216, + -2.5368,1.1439,0.225, -2.634375,1.253906,0.225, -2.66305,1.225463,0.216, + -2.66305,1.225463,0.216, -2.558822,1.112731,0.216, -2.5368,1.1439,0.225, + -2.514778,1.175069,0.216, -2.6057,1.28235,0.216, -2.634375,1.253906,0.225, + -2.634375,1.253906,0.225, -2.5368,1.1439,0.225, -2.514778,1.175069,0.216, + -2.494541,1.20371,0.189, -2.57935,1.308488,0.189, -2.6057,1.28235,0.216, + -2.6057,1.28235,0.216, -2.514778,1.175069,0.216, -2.494541,1.20371,0.189, + -2.477875,1.227298,0.144, -2.55765,1.330013,0.144, -2.57935,1.308488,0.189, + -2.57935,1.308488,0.189, -2.494541,1.20371,0.189, -2.477875,1.227298,0.144, + -2.466566,1.243303,0.081, -2.542925,1.344619,0.081, -2.55765,1.330013,0.144, + -2.55765,1.330013,0.144, -2.477875,1.227298,0.144, -2.466566,1.243303,0.081, + -2.4624,1.2492,0, -2.5375,1.35,0, -2.542925,1.344619,0.081, + -2.542925,1.344619,0.081, -2.466566,1.243303,0.081, -2.4624,1.2492,0, + -2.465644,0.929375,0.081, -2.607034,1.044497,0.081, -2.6112,1.0386,0, + -2.6112,1.0386,0, -2.46835,0.922987,0, -2.465644,0.929375,0.081, + -2.458298,0.946711,0.144, -2.595725,1.060502,0.144, -2.607034,1.044497,0.081, + -2.607034,1.044497,0.081, -2.465644,0.929375,0.081, -2.458298,0.946711,0.144, + -2.447474,0.97226,0.189, -2.579059,1.08409,0.189, -2.595725,1.060502,0.144, + -2.595725,1.060502,0.144, -2.458298,0.946711,0.144, -2.447474,0.97226,0.189, + -2.434329,1.003283,0.216, -2.558822,1.112731,0.216, -2.579059,1.08409,0.189, + -2.579059,1.08409,0.189, -2.447474,0.97226,0.189, -2.434329,1.003283,0.216, + -2.420025,1.037044,0.225, -2.5368,1.1439,0.225, -2.558822,1.112731,0.216, + -2.558822,1.112731,0.216, -2.434329,1.003283,0.216, -2.420025,1.037044,0.225, + -2.405721,1.070804,0.216, -2.514778,1.175069,0.216, -2.5368,1.1439,0.225, + -2.5368,1.1439,0.225, -2.420025,1.037044,0.225, -2.405721,1.070804,0.216, + -2.392576,1.101828,0.189, -2.494541,1.20371,0.189, -2.514778,1.175069,0.216, + -2.514778,1.175069,0.216, -2.405721,1.070804,0.216, -2.392576,1.101828,0.189, + -2.381752,1.127376,0.144, -2.477875,1.227298,0.144, -2.494541,1.20371,0.189, + -2.494541,1.20371,0.189, -2.392576,1.101828,0.189, -2.381752,1.127376,0.144, + -2.374406,1.144713,0.081, -2.466566,1.243303,0.081, -2.477875,1.227298,0.144, + -2.477875,1.227298,0.144, -2.381752,1.127376,0.144, -2.374406,1.144713,0.081, + -2.3717,1.1511,0, -2.4624,1.2492,0, -2.466566,1.243303,0.081, + -2.466566,1.243303,0.081, -2.374406,1.144713,0.081, -2.3717,1.1511,0, + -2.301347,0.818122,0.081, -2.465644,0.929375,0.081, -2.46835,0.922987,0, + -2.46835,0.922987,0, -2.3024,0.8112,0, -2.301347,0.818122,0.081, + -2.29849,0.836909,0.144, -2.458298,0.946711,0.144, -2.465644,0.929375,0.081, + -2.465644,0.929375,0.081, -2.301347,0.818122,0.081, -2.29849,0.836909,0.144, + -2.294278,0.864595,0.189, -2.447474,0.97226,0.189, -2.458298,0.946711,0.144, + -2.458298,0.946711,0.144, -2.29849,0.836909,0.144, -2.294278,0.864595,0.189, + -2.289165,0.898214,0.216, -2.434329,1.003283,0.216, -2.447474,0.97226,0.189, + -2.447474,0.97226,0.189, -2.294278,0.864595,0.189, -2.289165,0.898214,0.216, + -2.2836,0.9348,0.225, -2.420025,1.037044,0.225, -2.434329,1.003283,0.216, + -2.434329,1.003283,0.216, -2.289165,0.898214,0.216, -2.2836,0.9348,0.225, + -2.278035,0.971386,0.216, -2.405721,1.070804,0.216, -2.420025,1.037044,0.225, + -2.420025,1.037044,0.225, -2.2836,0.9348,0.225, -2.278035,0.971386,0.216, + -2.272922,1.005005,0.189, -2.392576,1.101828,0.189, -2.405721,1.070804,0.216, + -2.405721,1.070804,0.216, -2.278035,0.971386,0.216, -2.272922,1.005005,0.189, + -2.26871,1.032691,0.144, -2.381752,1.127376,0.144, -2.392576,1.101828,0.189, + -2.392576,1.101828,0.189, -2.272922,1.005005,0.189, -2.26871,1.032691,0.144, + -2.265853,1.051478,0.081, -2.374406,1.144713,0.081, -2.381752,1.127376,0.144, + -2.381752,1.127376,0.144, -2.26871,1.032691,0.144, -2.265853,1.051478,0.081, + -2.2648,1.0584,0, -2.3717,1.1511,0, -2.374406,1.144713,0.081, + -2.374406,1.144713,0.081, -2.265853,1.051478,0.081, -2.2648,1.0584,0, + -2.113835,0.711032,0.081, -2.301347,0.818122,0.081, -2.3024,0.8112,0, + -2.3024,0.8112,0, -2.11305,0.703463,0, -2.113835,0.711032,0.081, + -2.115967,0.731578,0.144, -2.29849,0.836909,0.144, -2.301347,0.818122,0.081, + -2.301347,0.818122,0.081, -2.113835,0.711032,0.081, -2.115967,0.731578,0.144, + -2.119109,0.761855,0.189, -2.294278,0.864595,0.189, -2.29849,0.836909,0.144, + -2.29849,0.836909,0.144, -2.115967,0.731578,0.144, -2.119109,0.761855,0.189, + -2.122924,0.798621,0.216, -2.289165,0.898214,0.216, -2.294278,0.864595,0.189, + -2.294278,0.864595,0.189, -2.119109,0.761855,0.189, -2.122924,0.798621,0.216, + -2.127075,0.838631,0.225, -2.2836,0.9348,0.225, -2.289165,0.898214,0.216, + -2.289165,0.898214,0.216, -2.122924,0.798621,0.216, -2.127075,0.838631,0.225, + -2.131226,0.878641,0.216, -2.278035,0.971386,0.216, -2.2836,0.9348,0.225, + -2.2836,0.9348,0.225, -2.127075,0.838631,0.225, -2.131226,0.878641,0.216, + -2.135041,0.915407,0.189, -2.272922,1.005005,0.189, -2.278035,0.971386,0.216, + -2.278035,0.971386,0.216, -2.131226,0.878641,0.216, -2.135041,0.915407,0.189, + -2.138183,0.945685,0.144, -2.26871,1.032691,0.144, -2.272922,1.005005,0.189, + -2.272922,1.005005,0.189, -2.135041,0.915407,0.189, -2.138183,0.945685,0.144, + -2.140315,0.966231,0.081, -2.265853,1.051478,0.081, -2.26871,1.032691,0.144, + -2.26871,1.032691,0.144, -2.138183,0.945685,0.144, -2.140315,0.966231,0.081, + -2.1411,0.9738,0, -2.2648,1.0584,0, -2.265853,1.051478,0.081, + -2.265853,1.051478,0.081, -2.140315,0.966231,0.081, -2.1411,0.9738,0, + -1.9028,0.6084,0.081, -2.113835,0.711032,0.081, -2.11305,0.703463,0, + -2.11305,0.703463,0, -1.9,0.6,0, -1.9028,0.6084,0.081, + -1.9104,0.6312,0.144, -2.115967,0.731578,0.144, -2.113835,0.711032,0.081, + -2.113835,0.711032,0.081, -1.9028,0.6084,0.081, -1.9104,0.6312,0.144, + -1.9216,0.6648,0.189, -2.119109,0.761855,0.189, -2.115967,0.731578,0.144, + -2.115967,0.731578,0.144, -1.9104,0.6312,0.144, -1.9216,0.6648,0.189, + -1.9352,0.7056,0.216, -2.122924,0.798621,0.216, -2.119109,0.761855,0.189, + -2.119109,0.761855,0.189, -1.9216,0.6648,0.189, -1.9352,0.7056,0.216, + -1.95,0.75,0.225, -2.127075,0.838631,0.225, -2.122924,0.798621,0.216, + -2.122924,0.798621,0.216, -1.9352,0.7056,0.216, -1.95,0.75,0.225, + -1.9648,0.7944,0.216, -2.131226,0.878641,0.216, -2.127075,0.838631,0.225, + -2.127075,0.838631,0.225, -1.95,0.75,0.225, -1.9648,0.7944,0.216, + -1.9784,0.8352,0.189, -2.135041,0.915407,0.189, -2.131226,0.878641,0.216, + -2.131226,0.878641,0.216, -1.9648,0.7944,0.216, -1.9784,0.8352,0.189, + -1.9896,0.8688,0.144, -2.138183,0.945685,0.144, -2.135041,0.915407,0.189, + -2.135041,0.915407,0.189, -1.9784,0.8352,0.189, -1.9896,0.8688,0.144, + -1.9972,0.8916,0.081, -2.140315,0.966231,0.081, -2.138183,0.945685,0.144, + -2.138183,0.945685,0.144, -1.9896,0.8688,0.144, -1.9972,0.8916,0.081, + -2,0.9,0, -2.1411,0.9738,0, -2.140315,0.966231,0.081, + -2.140315,0.966231,0.081, -1.9972,0.8916,0.081, -2,0.9,0, + 1.939394,1.423221,-0.1751, 1.7,1.4019,-0.1782, 1.7,1.425,0, + 1.7,1.425,0, 1.9359,1.4442,0, 1.939394,1.423221,-0.1751, + 1.948879,1.366278,-0.31129, 1.7,1.3392,-0.3168, 1.7,1.4019,-0.1782, + 1.7,1.4019,-0.1782, 1.939394,1.423221,-0.1751, 1.948879,1.366278,-0.31129, + 1.962857,1.282362,-0.408568, 1.7,1.2468,-0.4158, 1.7,1.3392,-0.3168, + 1.7,1.3392,-0.3168, 1.948879,1.366278,-0.31129, 1.962857,1.282362,-0.408568, + 1.97983,1.180464,-0.466934, 1.7,1.1346,-0.4752, 1.7,1.2468,-0.4158, + 1.7,1.2468,-0.4158, 1.962857,1.282362,-0.408568, 1.97983,1.180464,-0.466934, + 1.9983,1.069575,-0.48639, 1.7,1.0125,-0.495, 1.7,1.1346,-0.4752, + 1.7,1.1346,-0.4752, 1.97983,1.180464,-0.466934, 1.9983,1.069575,-0.48639, + 2.01677,0.958686,-0.466934, 1.7,0.8904,-0.4752, 1.7,1.0125,-0.495, + 1.7,1.0125,-0.495, 1.9983,1.069575,-0.48639, 2.01677,0.958686,-0.466934, + 2.033743,0.856788,-0.408568, 1.7,0.7782,-0.4158, 1.7,0.8904,-0.4752, + 1.7,0.8904,-0.4752, 2.01677,0.958686,-0.466934, 2.033743,0.856788,-0.408568, + 2.047721,0.772872,-0.31129, 1.7,0.6858,-0.3168, 1.7,0.7782,-0.4158, + 1.7,0.7782,-0.4158, 2.033743,0.856788,-0.408568, 2.047721,0.772872,-0.31129, + 2.057206,0.715929,-0.1751, 1.7,0.6231,-0.1782, 1.7,0.6858,-0.3168, + 1.7,0.6858,-0.3168, 2.047721,0.772872,-0.31129, 2.057206,0.715929,-0.1751, + 2.0607,0.69495,0, 1.7,0.6,0, 1.7,0.6231,-0.1782, + 1.7,0.6231,-0.1782, 2.057206,0.715929,-0.1751, 2.0607,0.69495,0, + 2.116979,1.47912,-0.166687, 1.939394,1.423221,-0.1751, 1.9359,1.4442,0, + 1.9359,1.4442,0, 2.1112,1.4976,0, 2.116979,1.47912,-0.166687, + 2.132666,1.42896,-0.296333, 1.948879,1.366278,-0.31129, 1.939394,1.423221,-0.1751, + 1.939394,1.423221,-0.1751, 2.116979,1.47912,-0.166687, 2.132666,1.42896,-0.296333, + 2.155782,1.35504,-0.388937, 1.962857,1.282362,-0.408568, 1.948879,1.366278,-0.31129, + 1.948879,1.366278,-0.31129, 2.132666,1.42896,-0.296333, 2.155782,1.35504,-0.388937, + 2.183853,1.26528,-0.444499, 1.97983,1.180464,-0.466934, 1.962857,1.282362,-0.408568, + 1.962857,1.282362,-0.408568, 2.155782,1.35504,-0.388937, 2.183853,1.26528,-0.444499, + 2.2144,1.1676,-0.46302, 1.9983,1.069575,-0.48639, 1.97983,1.180464,-0.466934, + 1.97983,1.180464,-0.466934, 2.183853,1.26528,-0.444499, 2.2144,1.1676,-0.46302, + 2.244947,1.06992,-0.444499, 2.01677,0.958686,-0.466934, 1.9983,1.069575,-0.48639, + 1.9983,1.069575,-0.48639, 2.2144,1.1676,-0.46302, 2.244947,1.06992,-0.444499, + 2.273018,0.98016,-0.388937, 2.033743,0.856788,-0.408568, 2.01677,0.958686,-0.466934, + 2.01677,0.958686,-0.466934, 2.244947,1.06992,-0.444499, 2.273018,0.98016,-0.388937, + 2.296134,0.90624,-0.296333, 2.047721,0.772872,-0.31129, 2.033743,0.856788,-0.408568, + 2.033743,0.856788,-0.408568, 2.273018,0.98016,-0.388937, 2.296134,0.90624,-0.296333, + 2.311821,0.85608,-0.166687, 2.057206,0.715929,-0.1751, 2.047721,0.772872,-0.31129, + 2.047721,0.772872,-0.31129, 2.296134,0.90624,-0.296333, 2.311821,0.85608,-0.166687, + 2.3176,0.8376,0, 2.0607,0.69495,0, 2.057206,0.715929,-0.1751, + 2.057206,0.715929,-0.1751, 2.311821,0.85608,-0.166687, 2.3176,0.8376,0, + 2.244457,1.563171,-0.154289, 2.116979,1.47912,-0.166687, 2.1112,1.4976,0, + 2.1112,1.4976,0, 2.2373,1.5789,0, 2.244457,1.563171,-0.154289, + 2.263882,1.520478,-0.274291, 2.132666,1.42896,-0.296333, 2.116979,1.47912,-0.166687, + 2.116979,1.47912,-0.166687, 2.244457,1.563171,-0.154289, 2.263882,1.520478,-0.274291, + 2.29251,1.457562,-0.360007, 2.155782,1.35504,-0.388937, 2.132666,1.42896,-0.296333, + 2.132666,1.42896,-0.296333, 2.263882,1.520478,-0.274291, 2.29251,1.457562,-0.360007, + 2.327271,1.381164,-0.411437, 2.183853,1.26528,-0.444499, 2.155782,1.35504,-0.388937, + 2.155782,1.35504,-0.388937, 2.29251,1.457562,-0.360007, 2.327271,1.381164,-0.411437, + 2.3651,1.298025,-0.42858, 2.2144,1.1676,-0.46302, 2.183853,1.26528,-0.444499, + 2.183853,1.26528,-0.444499, 2.327271,1.381164,-0.411437, 2.3651,1.298025,-0.42858, + 2.402929,1.214886,-0.411437, 2.244947,1.06992,-0.444499, 2.2144,1.1676,-0.46302, + 2.2144,1.1676,-0.46302, 2.3651,1.298025,-0.42858, 2.402929,1.214886,-0.411437, + 2.43769,1.138488,-0.360007, 2.273018,0.98016,-0.388937, 2.244947,1.06992,-0.444499, + 2.244947,1.06992,-0.444499, 2.402929,1.214886,-0.411437, 2.43769,1.138488,-0.360007, + 2.466318,1.075572,-0.274291, 2.296134,0.90624,-0.296333, 2.273018,0.98016,-0.388937, + 2.273018,0.98016,-0.388937, 2.43769,1.138488,-0.360007, 2.466318,1.075572,-0.274291, + 2.485743,1.032879,-0.154289, 2.311821,0.85608,-0.166687, 2.296134,0.90624,-0.296333, + 2.296134,0.90624,-0.296333, 2.466318,1.075572,-0.274291, 2.485743,1.032879,-0.154289, + 2.4929,1.01715,0, 2.3176,0.8376,0, 2.311821,0.85608,-0.166687, + 2.311821,0.85608,-0.166687, 2.485743,1.032879,-0.154289, 2.4929,1.01715,0, + 2.33353,1.668948,-0.139234, 2.244457,1.563171,-0.154289, 2.2373,1.5789,0, + 2.2373,1.5789,0, 2.3256,1.6818,0, 2.33353,1.668948,-0.139234, + 2.355053,1.634064,-0.247526, 2.263882,1.520478,-0.274291, 2.244457,1.563171,-0.154289, + 2.244457,1.563171,-0.154289, 2.33353,1.668948,-0.139234, 2.355053,1.634064,-0.247526, + 2.386771,1.582656,-0.324878, 2.29251,1.457562,-0.360007, 2.263882,1.520478,-0.274291, + 2.263882,1.520478,-0.274291, 2.355053,1.634064,-0.247526, 2.386771,1.582656,-0.324878, + 2.425286,1.520232,-0.37129, 2.327271,1.381164,-0.411437, 2.29251,1.457562,-0.360007, + 2.29251,1.457562,-0.360007, 2.386771,1.582656,-0.324878, 2.425286,1.520232,-0.37129, + 2.4672,1.4523,-0.38676, 2.3651,1.298025,-0.42858, 2.327271,1.381164,-0.411437, + 2.327271,1.381164,-0.411437, 2.425286,1.520232,-0.37129, 2.4672,1.4523,-0.38676, + 2.509114,1.384368,-0.37129, 2.402929,1.214886,-0.411437, 2.3651,1.298025,-0.42858, + 2.3651,1.298025,-0.42858, 2.4672,1.4523,-0.38676, 2.509114,1.384368,-0.37129, + 2.547629,1.321944,-0.324878, 2.43769,1.138488,-0.360007, 2.402929,1.214886,-0.411437, + 2.402929,1.214886,-0.411437, 2.509114,1.384368,-0.37129, 2.547629,1.321944,-0.324878, + 2.579347,1.270536,-0.247526, 2.466318,1.075572,-0.274291, 2.43769,1.138488,-0.360007, + 2.43769,1.138488,-0.360007, 2.547629,1.321944,-0.324878, 2.579347,1.270536,-0.247526, + 2.60087,1.235652,-0.139234, 2.485743,1.032879,-0.154289, 2.466318,1.075572,-0.274291, + 2.466318,1.075572,-0.274291, 2.579347,1.270536,-0.247526, 2.60087,1.235652,-0.139234, + 2.6088,1.2228,0, 2.4929,1.01715,0, 2.485743,1.032879,-0.154289, + 2.485743,1.032879,-0.154289, 2.60087,1.235652,-0.139234, 2.6088,1.2228,0, + 2.3959,1.790025,-0.12285, 2.33353,1.668948,-0.139234, 2.3256,1.6818,0, + 2.3256,1.6818,0, 2.3875,1.8,0, 2.3959,1.790025,-0.12285, + 2.4187,1.76295,-0.2184, 2.355053,1.634064,-0.247526, 2.33353,1.668948,-0.139234, + 2.33353,1.668948,-0.139234, 2.3959,1.790025,-0.12285, 2.4187,1.76295,-0.2184, + 2.4523,1.72305,-0.28665, 2.386771,1.582656,-0.324878, 2.355053,1.634064,-0.247526, + 2.355053,1.634064,-0.247526, 2.4187,1.76295,-0.2184, 2.4523,1.72305,-0.28665, + 2.4931,1.6746,-0.3276, 2.425286,1.520232,-0.37129, 2.386771,1.582656,-0.324878, + 2.386771,1.582656,-0.324878, 2.4523,1.72305,-0.28665, 2.4931,1.6746,-0.3276, + 2.5375,1.621875,-0.34125, 2.4672,1.4523,-0.38676, 2.425286,1.520232,-0.37129, + 2.425286,1.520232,-0.37129, 2.4931,1.6746,-0.3276, 2.5375,1.621875,-0.34125, + 2.5819,1.56915,-0.3276, 2.509114,1.384368,-0.37129, 2.4672,1.4523,-0.38676, + 2.4672,1.4523,-0.38676, 2.5375,1.621875,-0.34125, 2.5819,1.56915,-0.3276, + 2.6227,1.5207,-0.28665, 2.547629,1.321944,-0.324878, 2.509114,1.384368,-0.37129, + 2.509114,1.384368,-0.37129, 2.5819,1.56915,-0.3276, 2.6227,1.5207,-0.28665, + 2.6563,1.4808,-0.2184, 2.579347,1.270536,-0.247526, 2.547629,1.321944,-0.324878, + 2.547629,1.321944,-0.324878, 2.6227,1.5207,-0.28665, 2.6563,1.4808,-0.2184, + 2.6791,1.453725,-0.12285, 2.60087,1.235652,-0.139234, 2.579347,1.270536,-0.247526, + 2.579347,1.270536,-0.247526, 2.6563,1.4808,-0.2184, 2.6791,1.453725,-0.12285, + 2.6875,1.44375,0, 2.6088,1.2228,0, 2.60087,1.235652,-0.139234, + 2.60087,1.235652,-0.139234, 2.6791,1.453725,-0.12285, 2.6875,1.44375,0, + 2.44327,1.919976,-0.106466, 2.3959,1.790025,-0.12285, 2.3875,1.8,0, + 2.3875,1.8,0, 2.4344,1.9272,0, 2.44327,1.919976,-0.106466, + 2.467347,1.900368,-0.189274, 2.4187,1.76295,-0.2184, 2.3959,1.790025,-0.12285, + 2.3959,1.790025,-0.12285, 2.44327,1.919976,-0.106466, 2.467347,1.900368,-0.189274, + 2.502829,1.871472,-0.248422, 2.4523,1.72305,-0.28665, 2.4187,1.76295,-0.2184, + 2.4187,1.76295,-0.2184, 2.467347,1.900368,-0.189274, 2.502829,1.871472,-0.248422, + 2.545914,1.836384,-0.28391, 2.4931,1.6746,-0.3276, 2.4523,1.72305,-0.28665, + 2.4523,1.72305,-0.28665, 2.502829,1.871472,-0.248422, 2.545914,1.836384,-0.28391, + 2.5928,1.7982,-0.29574, 2.5375,1.621875,-0.34125, 2.4931,1.6746,-0.3276, + 2.4931,1.6746,-0.3276, 2.545914,1.836384,-0.28391, 2.5928,1.7982,-0.29574, + 2.639686,1.760016,-0.28391, 2.5819,1.56915,-0.3276, 2.5375,1.621875,-0.34125, + 2.5375,1.621875,-0.34125, 2.5928,1.7982,-0.29574, 2.639686,1.760016,-0.28391, + 2.682771,1.724928,-0.248422, 2.6227,1.5207,-0.28665, 2.5819,1.56915,-0.3276, + 2.5819,1.56915,-0.3276, 2.639686,1.760016,-0.28391, 2.682771,1.724928,-0.248422, + 2.718253,1.696032,-0.189274, 2.6563,1.4808,-0.2184, 2.6227,1.5207,-0.28665, + 2.6227,1.5207,-0.28665, 2.682771,1.724928,-0.248422, 2.718253,1.696032,-0.189274, + 2.74233,1.676424,-0.106466, 2.6791,1.453725,-0.12285, 2.6563,1.4808,-0.2184, + 2.6563,1.4808,-0.2184, 2.718253,1.696032,-0.189274, 2.74233,1.676424,-0.106466, + 2.7512,1.6692,0, 2.6875,1.44375,0, 2.6791,1.453725,-0.12285, + 2.6791,1.453725,-0.12285, 2.74233,1.676424,-0.106466, 2.7512,1.6692,0, + 2.487343,2.052375,-0.091411, 2.44327,1.919976,-0.106466, 2.4344,1.9272,0, + 2.4344,1.9272,0, 2.4777,2.0571,0, 2.487343,2.052375,-0.091411, + 2.513518,2.03955,-0.162509, 2.467347,1.900368,-0.189274, 2.44327,1.919976,-0.106466, + 2.44327,1.919976,-0.106466, 2.487343,2.052375,-0.091411, 2.513518,2.03955,-0.162509, + 2.55209,2.02065,-0.213293, 2.502829,1.871472,-0.248422, 2.467347,1.900368,-0.189274, + 2.467347,1.900368,-0.189274, 2.513518,2.03955,-0.162509, 2.55209,2.02065,-0.213293, + 2.598929,1.9977,-0.243763, 2.545914,1.836384,-0.28391, 2.502829,1.871472,-0.248422, + 2.502829,1.871472,-0.248422, 2.55209,2.02065,-0.213293, 2.598929,1.9977,-0.243763, + 2.6499,1.972725,-0.25392, 2.5928,1.7982,-0.29574, 2.545914,1.836384,-0.28391, + 2.545914,1.836384,-0.28391, 2.598929,1.9977,-0.243763, 2.6499,1.972725,-0.25392, + 2.700871,1.94775,-0.243763, 2.639686,1.760016,-0.28391, 2.5928,1.7982,-0.29574, + 2.5928,1.7982,-0.29574, 2.6499,1.972725,-0.25392, 2.700871,1.94775,-0.243763, + 2.74771,1.9248,-0.213293, 2.682771,1.724928,-0.248422, 2.639686,1.760016,-0.28391, + 2.639686,1.760016,-0.28391, 2.700871,1.94775,-0.243763, 2.74771,1.9248,-0.213293, + 2.786282,1.9059,-0.162509, 2.718253,1.696032,-0.189274, 2.682771,1.724928,-0.248422, + 2.682771,1.724928,-0.248422, 2.74771,1.9248,-0.213293, 2.786282,1.9059,-0.162509, + 2.812457,1.893075,-0.091411, 2.74233,1.676424,-0.106466, 2.718253,1.696032,-0.189274, + 2.718253,1.696032,-0.189274, 2.786282,1.9059,-0.162509, 2.812457,1.893075,-0.091411, + 2.8221,1.88835,0, 2.7512,1.6692,0, 2.74233,1.676424,-0.106466, + 2.74233,1.676424,-0.106466, 2.812457,1.893075,-0.091411, 2.8221,1.88835,0, + 2.539821,2.180796,-0.079013, 2.487343,2.052375,-0.091411, 2.4777,2.0571,0, + 2.4777,2.0571,0, 2.5288,2.1834,0, 2.539821,2.180796,-0.079013, + 2.569734,2.173728,-0.140467, 2.513518,2.03955,-0.162509, 2.487343,2.052375,-0.091411, + 2.487343,2.052375,-0.091411, 2.539821,2.180796,-0.079013, 2.569734,2.173728,-0.140467, + 2.613818,2.163312,-0.184363, 2.55209,2.02065,-0.213293, 2.513518,2.03955,-0.162509, + 2.513518,2.03955,-0.162509, 2.569734,2.173728,-0.140467, 2.613818,2.163312,-0.184363, + 2.667347,2.150664,-0.210701, 2.598929,1.9977,-0.243763, 2.55209,2.02065,-0.213293, + 2.55209,2.02065,-0.213293, 2.613818,2.163312,-0.184363, 2.667347,2.150664,-0.210701, + 2.7256,2.1369,-0.21948, 2.6499,1.972725,-0.25392, 2.598929,1.9977,-0.243763, + 2.598929,1.9977,-0.243763, 2.667347,2.150664,-0.210701, 2.7256,2.1369,-0.21948, + 2.783853,2.123136,-0.210701, 2.700871,1.94775,-0.243763, 2.6499,1.972725,-0.25392, + 2.6499,1.972725,-0.25392, 2.7256,2.1369,-0.21948, 2.783853,2.123136,-0.210701, + 2.837382,2.110488,-0.184363, 2.74771,1.9248,-0.213293, 2.700871,1.94775,-0.243763, + 2.700871,1.94775,-0.243763, 2.783853,2.123136,-0.210701, 2.837382,2.110488,-0.184363, + 2.881466,2.100072,-0.140467, 2.786282,1.9059,-0.162509, 2.74771,1.9248,-0.213293, + 2.74771,1.9248,-0.213293, 2.837382,2.110488,-0.184363, 2.881466,2.100072,-0.140467, + 2.911379,2.093004,-0.079013, 2.812457,1.893075,-0.091411, 2.786282,1.9059,-0.162509, + 2.786282,1.9059,-0.162509, 2.881466,2.100072,-0.140467, 2.911379,2.093004,-0.079013, + 2.9224,2.0904,0, 2.8221,1.88835,0, 2.812457,1.893075,-0.091411, + 2.812457,1.893075,-0.091411, 2.911379,2.093004,-0.079013, 2.9224,2.0904,0, + 2.612406,2.298813,-0.0706, 2.539821,2.180796,-0.079013, 2.5288,2.1834,0, + 2.5288,2.1834,0, 2.5991,2.2998,0, 2.612406,2.298813,-0.0706, + 2.648521,2.296134,-0.12551, 2.569734,2.173728,-0.140467, 2.539821,2.180796,-0.079013, + 2.539821,2.180796,-0.079013, 2.612406,2.298813,-0.0706, 2.648521,2.296134,-0.12551, + 2.701743,2.292186,-0.164732, 2.613818,2.163312,-0.184363, 2.569734,2.173728,-0.140467, + 2.569734,2.173728,-0.140467, 2.648521,2.296134,-0.12551, 2.701743,2.292186,-0.164732, + 2.76637,2.287392,-0.188266, 2.667347,2.150664,-0.210701, 2.613818,2.163312,-0.184363, + 2.613818,2.163312,-0.184363, 2.701743,2.292186,-0.164732, 2.76637,2.287392,-0.188266, + 2.8367,2.282175,-0.19611, 2.7256,2.1369,-0.21948, 2.667347,2.150664,-0.210701, + 2.667347,2.150664,-0.210701, 2.76637,2.287392,-0.188266, 2.8367,2.282175,-0.19611, + 2.90703,2.276958,-0.188266, 2.783853,2.123136,-0.210701, 2.7256,2.1369,-0.21948, + 2.7256,2.1369,-0.21948, 2.8367,2.282175,-0.19611, 2.90703,2.276958,-0.188266, + 2.971657,2.272164,-0.164732, 2.837382,2.110488,-0.184363, 2.783853,2.123136,-0.210701, + 2.783853,2.123136,-0.210701, 2.90703,2.276958,-0.188266, 2.971657,2.272164,-0.164732, + 3.024879,2.268216,-0.12551, 2.881466,2.100072,-0.140467, 2.837382,2.110488,-0.184363, + 2.837382,2.110488,-0.184363, 2.971657,2.272164,-0.164732, 3.024879,2.268216,-0.12551, + 3.060994,2.265537,-0.0706, 2.911379,2.093004,-0.079013, 2.881466,2.100072,-0.140467, + 2.881466,2.100072,-0.140467, 3.024879,2.268216,-0.12551, 3.060994,2.265537,-0.0706, + 3.0743,2.26455,0, 2.9224,2.0904,0, 2.911379,2.093004,-0.079013, + 2.911379,2.093004,-0.079013, 3.060994,2.265537,-0.0706, 3.0743,2.26455,0, + 2.7168,2.4,-0.0675, 2.612406,2.298813,-0.0706, 2.5991,2.2998,0, + 2.5991,2.2998,0, 2.7,2.4,0, 2.7168,2.4,-0.0675, + 2.7624,2.4,-0.12, 2.648521,2.296134,-0.12551, 2.612406,2.298813,-0.0706, + 2.612406,2.298813,-0.0706, 2.7168,2.4,-0.0675, 2.7624,2.4,-0.12, + 2.8296,2.4,-0.1575, 2.701743,2.292186,-0.164732, 2.648521,2.296134,-0.12551, + 2.648521,2.296134,-0.12551, 2.7624,2.4,-0.12, 2.8296,2.4,-0.1575, + 2.9112,2.4,-0.18, 2.76637,2.287392,-0.188266, 2.701743,2.292186,-0.164732, + 2.701743,2.292186,-0.164732, 2.8296,2.4,-0.1575, 2.9112,2.4,-0.18, + 3,2.4,-0.1875, 2.8367,2.282175,-0.19611, 2.76637,2.287392,-0.188266, + 2.76637,2.287392,-0.188266, 2.9112,2.4,-0.18, 3,2.4,-0.1875, + 3.0888,2.4,-0.18, 2.90703,2.276958,-0.188266, 2.8367,2.282175,-0.19611, + 2.8367,2.282175,-0.19611, 3,2.4,-0.1875, 3.0888,2.4,-0.18, + 3.1704,2.4,-0.1575, 2.971657,2.272164,-0.164732, 2.90703,2.276958,-0.188266, + 2.90703,2.276958,-0.188266, 3.0888,2.4,-0.18, 3.1704,2.4,-0.1575, + 3.2376,2.4,-0.12, 3.024879,2.268216,-0.12551, 2.971657,2.272164,-0.164732, + 2.971657,2.272164,-0.164732, 3.1704,2.4,-0.1575, 3.2376,2.4,-0.12, + 3.2832,2.4,-0.0675, 3.060994,2.265537,-0.0706, 3.024879,2.268216,-0.12551, + 3.024879,2.268216,-0.12551, 3.2376,2.4,-0.12, 3.2832,2.4,-0.0675, + 3.3,2.4,0, 3.0743,2.26455,0, 3.060994,2.265537,-0.0706, + 3.060994,2.265537,-0.0706, 3.2832,2.4,-0.0675, 3.3,2.4,0, + 2.057206,0.715929,0.1751, 1.7,0.6231,0.1782, 1.7,0.6,0, + 1.7,0.6,0, 2.0607,0.69495,0, 2.057206,0.715929,0.1751, + 2.047721,0.772872,0.31129, 1.7,0.6858,0.3168, 1.7,0.6231,0.1782, + 1.7,0.6231,0.1782, 2.057206,0.715929,0.1751, 2.047721,0.772872,0.31129, + 2.033743,0.856788,0.408568, 1.7,0.7782,0.4158, 1.7,0.6858,0.3168, + 1.7,0.6858,0.3168, 2.047721,0.772872,0.31129, 2.033743,0.856788,0.408568, + 2.01677,0.958686,0.466934, 1.7,0.8904,0.4752, 1.7,0.7782,0.4158, + 1.7,0.7782,0.4158, 2.033743,0.856788,0.408568, 2.01677,0.958686,0.466934, + 1.9983,1.069575,0.48639, 1.7,1.0125,0.495, 1.7,0.8904,0.4752, + 1.7,0.8904,0.4752, 2.01677,0.958686,0.466934, 1.9983,1.069575,0.48639, + 1.97983,1.180464,0.466934, 1.7,1.1346,0.4752, 1.7,1.0125,0.495, + 1.7,1.0125,0.495, 1.9983,1.069575,0.48639, 1.97983,1.180464,0.466934, + 1.962857,1.282362,0.408568, 1.7,1.2468,0.4158, 1.7,1.1346,0.4752, + 1.7,1.1346,0.4752, 1.97983,1.180464,0.466934, 1.962857,1.282362,0.408568, + 1.948879,1.366278,0.31129, 1.7,1.3392,0.3168, 1.7,1.2468,0.4158, + 1.7,1.2468,0.4158, 1.962857,1.282362,0.408568, 1.948879,1.366278,0.31129, + 1.939394,1.423221,0.1751, 1.7,1.4019,0.1782, 1.7,1.3392,0.3168, + 1.7,1.3392,0.3168, 1.948879,1.366278,0.31129, 1.939394,1.423221,0.1751, + 1.9359,1.4442,0, 1.7,1.425,0, 1.7,1.4019,0.1782, + 1.7,1.4019,0.1782, 1.939394,1.423221,0.1751, 1.9359,1.4442,0, + 2.311821,0.85608,0.166687, 2.057206,0.715929,0.1751, 2.0607,0.69495,0, + 2.0607,0.69495,0, 2.3176,0.8376,0, 2.311821,0.85608,0.166687, + 2.296134,0.90624,0.296333, 2.047721,0.772872,0.31129, 2.057206,0.715929,0.1751, + 2.057206,0.715929,0.1751, 2.311821,0.85608,0.166687, 2.296134,0.90624,0.296333, + 2.273018,0.98016,0.388937, 2.033743,0.856788,0.408568, 2.047721,0.772872,0.31129, + 2.047721,0.772872,0.31129, 2.296134,0.90624,0.296333, 2.273018,0.98016,0.388937, + 2.244947,1.06992,0.444499, 2.01677,0.958686,0.466934, 2.033743,0.856788,0.408568, + 2.033743,0.856788,0.408568, 2.273018,0.98016,0.388937, 2.244947,1.06992,0.444499, + 2.2144,1.1676,0.46302, 1.9983,1.069575,0.48639, 2.01677,0.958686,0.466934, + 2.01677,0.958686,0.466934, 2.244947,1.06992,0.444499, 2.2144,1.1676,0.46302, + 2.183853,1.26528,0.444499, 1.97983,1.180464,0.466934, 1.9983,1.069575,0.48639, + 1.9983,1.069575,0.48639, 2.2144,1.1676,0.46302, 2.183853,1.26528,0.444499, + 2.155782,1.35504,0.388937, 1.962857,1.282362,0.408568, 1.97983,1.180464,0.466934, + 1.97983,1.180464,0.466934, 2.183853,1.26528,0.444499, 2.155782,1.35504,0.388937, + 2.132666,1.42896,0.296333, 1.948879,1.366278,0.31129, 1.962857,1.282362,0.408568, + 1.962857,1.282362,0.408568, 2.155782,1.35504,0.388937, 2.132666,1.42896,0.296333, + 2.116979,1.47912,0.166687, 1.939394,1.423221,0.1751, 1.948879,1.366278,0.31129, + 1.948879,1.366278,0.31129, 2.132666,1.42896,0.296333, 2.116979,1.47912,0.166687, + 2.1112,1.4976,0, 1.9359,1.4442,0, 1.939394,1.423221,0.1751, + 1.939394,1.423221,0.1751, 2.116979,1.47912,0.166687, 2.1112,1.4976,0, + 2.485743,1.032879,0.154289, 2.311821,0.85608,0.166687, 2.3176,0.8376,0, + 2.3176,0.8376,0, 2.4929,1.01715,0, 2.485743,1.032879,0.154289, + 2.466318,1.075572,0.274291, 2.296134,0.90624,0.296333, 2.311821,0.85608,0.166687, + 2.311821,0.85608,0.166687, 2.485743,1.032879,0.154289, 2.466318,1.075572,0.274291, + 2.43769,1.138488,0.360007, 2.273018,0.98016,0.388937, 2.296134,0.90624,0.296333, + 2.296134,0.90624,0.296333, 2.466318,1.075572,0.274291, 2.43769,1.138488,0.360007, + 2.402929,1.214886,0.411437, 2.244947,1.06992,0.444499, 2.273018,0.98016,0.388937, + 2.273018,0.98016,0.388937, 2.43769,1.138488,0.360007, 2.402929,1.214886,0.411437, + 2.3651,1.298025,0.42858, 2.2144,1.1676,0.46302, 2.244947,1.06992,0.444499, + 2.244947,1.06992,0.444499, 2.402929,1.214886,0.411437, 2.3651,1.298025,0.42858, + 2.327271,1.381164,0.411437, 2.183853,1.26528,0.444499, 2.2144,1.1676,0.46302, + 2.2144,1.1676,0.46302, 2.3651,1.298025,0.42858, 2.327271,1.381164,0.411437, + 2.29251,1.457562,0.360007, 2.155782,1.35504,0.388937, 2.183853,1.26528,0.444499, + 2.183853,1.26528,0.444499, 2.327271,1.381164,0.411437, 2.29251,1.457562,0.360007, + 2.263882,1.520478,0.274291, 2.132666,1.42896,0.296333, 2.155782,1.35504,0.388937, + 2.155782,1.35504,0.388937, 2.29251,1.457562,0.360007, 2.263882,1.520478,0.274291, + 2.244457,1.563171,0.154289, 2.116979,1.47912,0.166687, 2.132666,1.42896,0.296333, + 2.132666,1.42896,0.296333, 2.263882,1.520478,0.274291, 2.244457,1.563171,0.154289, + 2.2373,1.5789,0, 2.1112,1.4976,0, 2.116979,1.47912,0.166687, + 2.116979,1.47912,0.166687, 2.244457,1.563171,0.154289, 2.2373,1.5789,0, + 2.60087,1.235652,0.139234, 2.485743,1.032879,0.154289, 2.4929,1.01715,0, + 2.4929,1.01715,0, 2.6088,1.2228,0, 2.60087,1.235652,0.139234, + 2.579347,1.270536,0.247526, 2.466318,1.075572,0.274291, 2.485743,1.032879,0.154289, + 2.485743,1.032879,0.154289, 2.60087,1.235652,0.139234, 2.579347,1.270536,0.247526, + 2.547629,1.321944,0.324878, 2.43769,1.138488,0.360007, 2.466318,1.075572,0.274291, + 2.466318,1.075572,0.274291, 2.579347,1.270536,0.247526, 2.547629,1.321944,0.324878, + 2.509114,1.384368,0.37129, 2.402929,1.214886,0.411437, 2.43769,1.138488,0.360007, + 2.43769,1.138488,0.360007, 2.547629,1.321944,0.324878, 2.509114,1.384368,0.37129, + 2.4672,1.4523,0.38676, 2.3651,1.298025,0.42858, 2.402929,1.214886,0.411437, + 2.402929,1.214886,0.411437, 2.509114,1.384368,0.37129, 2.4672,1.4523,0.38676, + 2.425286,1.520232,0.37129, 2.327271,1.381164,0.411437, 2.3651,1.298025,0.42858, + 2.3651,1.298025,0.42858, 2.4672,1.4523,0.38676, 2.425286,1.520232,0.37129, + 2.386771,1.582656,0.324878, 2.29251,1.457562,0.360007, 2.327271,1.381164,0.411437, + 2.327271,1.381164,0.411437, 2.425286,1.520232,0.37129, 2.386771,1.582656,0.324878, + 2.355053,1.634064,0.247526, 2.263882,1.520478,0.274291, 2.29251,1.457562,0.360007, + 2.29251,1.457562,0.360007, 2.386771,1.582656,0.324878, 2.355053,1.634064,0.247526, + 2.33353,1.668948,0.139234, 2.244457,1.563171,0.154289, 2.263882,1.520478,0.274291, + 2.263882,1.520478,0.274291, 2.355053,1.634064,0.247526, 2.33353,1.668948,0.139234, + 2.3256,1.6818,0, 2.2373,1.5789,0, 2.244457,1.563171,0.154289, + 2.244457,1.563171,0.154289, 2.33353,1.668948,0.139234, 2.3256,1.6818,0, + 2.6791,1.453725,0.12285, 2.60087,1.235652,0.139234, 2.6088,1.2228,0, + 2.6088,1.2228,0, 2.6875,1.44375,0, 2.6791,1.453725,0.12285, + 2.6563,1.4808,0.2184, 2.579347,1.270536,0.247526, 2.60087,1.235652,0.139234, + 2.60087,1.235652,0.139234, 2.6791,1.453725,0.12285, 2.6563,1.4808,0.2184, + 2.6227,1.5207,0.28665, 2.547629,1.321944,0.324878, 2.579347,1.270536,0.247526, + 2.579347,1.270536,0.247526, 2.6563,1.4808,0.2184, 2.6227,1.5207,0.28665, + 2.5819,1.56915,0.3276, 2.509114,1.384368,0.37129, 2.547629,1.321944,0.324878, + 2.547629,1.321944,0.324878, 2.6227,1.5207,0.28665, 2.5819,1.56915,0.3276, + 2.5375,1.621875,0.34125, 2.4672,1.4523,0.38676, 2.509114,1.384368,0.37129, + 2.509114,1.384368,0.37129, 2.5819,1.56915,0.3276, 2.5375,1.621875,0.34125, + 2.4931,1.6746,0.3276, 2.425286,1.520232,0.37129, 2.4672,1.4523,0.38676, + 2.4672,1.4523,0.38676, 2.5375,1.621875,0.34125, 2.4931,1.6746,0.3276, + 2.4523,1.72305,0.28665, 2.386771,1.582656,0.324878, 2.425286,1.520232,0.37129, + 2.425286,1.520232,0.37129, 2.4931,1.6746,0.3276, 2.4523,1.72305,0.28665, + 2.4187,1.76295,0.2184, 2.355053,1.634064,0.247526, 2.386771,1.582656,0.324878, + 2.386771,1.582656,0.324878, 2.4523,1.72305,0.28665, 2.4187,1.76295,0.2184, + 2.3959,1.790025,0.12285, 2.33353,1.668948,0.139234, 2.355053,1.634064,0.247526, + 2.355053,1.634064,0.247526, 2.4187,1.76295,0.2184, 2.3959,1.790025,0.12285, + 2.3875,1.8,0, 2.3256,1.6818,0, 2.33353,1.668948,0.139234, + 2.33353,1.668948,0.139234, 2.3959,1.790025,0.12285, 2.3875,1.8,0, + 2.74233,1.676424,0.106466, 2.6791,1.453725,0.12285, 2.6875,1.44375,0, + 2.6875,1.44375,0, 2.7512,1.6692,0, 2.74233,1.676424,0.106466, + 2.718253,1.696032,0.189274, 2.6563,1.4808,0.2184, 2.6791,1.453725,0.12285, + 2.6791,1.453725,0.12285, 2.74233,1.676424,0.106466, 2.718253,1.696032,0.189274, + 2.682771,1.724928,0.248422, 2.6227,1.5207,0.28665, 2.6563,1.4808,0.2184, + 2.6563,1.4808,0.2184, 2.718253,1.696032,0.189274, 2.682771,1.724928,0.248422, + 2.639686,1.760016,0.28391, 2.5819,1.56915,0.3276, 2.6227,1.5207,0.28665, + 2.6227,1.5207,0.28665, 2.682771,1.724928,0.248422, 2.639686,1.760016,0.28391, + 2.5928,1.7982,0.29574, 2.5375,1.621875,0.34125, 2.5819,1.56915,0.3276, + 2.5819,1.56915,0.3276, 2.639686,1.760016,0.28391, 2.5928,1.7982,0.29574, + 2.545914,1.836384,0.28391, 2.4931,1.6746,0.3276, 2.5375,1.621875,0.34125, + 2.5375,1.621875,0.34125, 2.5928,1.7982,0.29574, 2.545914,1.836384,0.28391, + 2.502829,1.871472,0.248422, 2.4523,1.72305,0.28665, 2.4931,1.6746,0.3276, + 2.4931,1.6746,0.3276, 2.545914,1.836384,0.28391, 2.502829,1.871472,0.248422, + 2.467347,1.900368,0.189274, 2.4187,1.76295,0.2184, 2.4523,1.72305,0.28665, + 2.4523,1.72305,0.28665, 2.502829,1.871472,0.248422, 2.467347,1.900368,0.189274, + 2.44327,1.919976,0.106466, 2.3959,1.790025,0.12285, 2.4187,1.76295,0.2184, + 2.4187,1.76295,0.2184, 2.467347,1.900368,0.189274, 2.44327,1.919976,0.106466, + 2.4344,1.9272,0, 2.3875,1.8,0, 2.3959,1.790025,0.12285, + 2.3959,1.790025,0.12285, 2.44327,1.919976,0.106466, 2.4344,1.9272,0, + 2.812457,1.893075,0.091411, 2.74233,1.676424,0.106466, 2.7512,1.6692,0, + 2.7512,1.6692,0, 2.8221,1.88835,0, 2.812457,1.893075,0.091411, + 2.786282,1.9059,0.162509, 2.718253,1.696032,0.189274, 2.74233,1.676424,0.106466, + 2.74233,1.676424,0.106466, 2.812457,1.893075,0.091411, 2.786282,1.9059,0.162509, + 2.74771,1.9248,0.213293, 2.682771,1.724928,0.248422, 2.718253,1.696032,0.189274, + 2.718253,1.696032,0.189274, 2.786282,1.9059,0.162509, 2.74771,1.9248,0.213293, + 2.700871,1.94775,0.243763, 2.639686,1.760016,0.28391, 2.682771,1.724928,0.248422, + 2.682771,1.724928,0.248422, 2.74771,1.9248,0.213293, 2.700871,1.94775,0.243763, + 2.6499,1.972725,0.25392, 2.5928,1.7982,0.29574, 2.639686,1.760016,0.28391, + 2.639686,1.760016,0.28391, 2.700871,1.94775,0.243763, 2.6499,1.972725,0.25392, + 2.598929,1.9977,0.243763, 2.545914,1.836384,0.28391, 2.5928,1.7982,0.29574, + 2.5928,1.7982,0.29574, 2.6499,1.972725,0.25392, 2.598929,1.9977,0.243763, + 2.55209,2.02065,0.213293, 2.502829,1.871472,0.248422, 2.545914,1.836384,0.28391, + 2.545914,1.836384,0.28391, 2.598929,1.9977,0.243763, 2.55209,2.02065,0.213293, + 2.513518,2.03955,0.162509, 2.467347,1.900368,0.189274, 2.502829,1.871472,0.248422, + 2.502829,1.871472,0.248422, 2.55209,2.02065,0.213293, 2.513518,2.03955,0.162509, + 2.487343,2.052375,0.091411, 2.44327,1.919976,0.106466, 2.467347,1.900368,0.189274, + 2.467347,1.900368,0.189274, 2.513518,2.03955,0.162509, 2.487343,2.052375,0.091411, + 2.4777,2.0571,0, 2.4344,1.9272,0, 2.44327,1.919976,0.106466, + 2.44327,1.919976,0.106466, 2.487343,2.052375,0.091411, 2.4777,2.0571,0, + 2.911379,2.093004,0.079013, 2.812457,1.893075,0.091411, 2.8221,1.88835,0, + 2.8221,1.88835,0, 2.9224,2.0904,0, 2.911379,2.093004,0.079013, + 2.881466,2.100072,0.140467, 2.786282,1.9059,0.162509, 2.812457,1.893075,0.091411, + 2.812457,1.893075,0.091411, 2.911379,2.093004,0.079013, 2.881466,2.100072,0.140467, + 2.837382,2.110488,0.184363, 2.74771,1.9248,0.213293, 2.786282,1.9059,0.162509, + 2.786282,1.9059,0.162509, 2.881466,2.100072,0.140467, 2.837382,2.110488,0.184363, + 2.783853,2.123136,0.210701, 2.700871,1.94775,0.243763, 2.74771,1.9248,0.213293, + 2.74771,1.9248,0.213293, 2.837382,2.110488,0.184363, 2.783853,2.123136,0.210701, + 2.7256,2.1369,0.21948, 2.6499,1.972725,0.25392, 2.700871,1.94775,0.243763, + 2.700871,1.94775,0.243763, 2.783853,2.123136,0.210701, 2.7256,2.1369,0.21948, + 2.667347,2.150664,0.210701, 2.598929,1.9977,0.243763, 2.6499,1.972725,0.25392, + 2.6499,1.972725,0.25392, 2.7256,2.1369,0.21948, 2.667347,2.150664,0.210701, + 2.613818,2.163312,0.184363, 2.55209,2.02065,0.213293, 2.598929,1.9977,0.243763, + 2.598929,1.9977,0.243763, 2.667347,2.150664,0.210701, 2.613818,2.163312,0.184363, + 2.569734,2.173728,0.140467, 2.513518,2.03955,0.162509, 2.55209,2.02065,0.213293, + 2.55209,2.02065,0.213293, 2.613818,2.163312,0.184363, 2.569734,2.173728,0.140467, + 2.539821,2.180796,0.079013, 2.487343,2.052375,0.091411, 2.513518,2.03955,0.162509, + 2.513518,2.03955,0.162509, 2.569734,2.173728,0.140467, 2.539821,2.180796,0.079013, + 2.5288,2.1834,0, 2.4777,2.0571,0, 2.487343,2.052375,0.091411, + 2.487343,2.052375,0.091411, 2.539821,2.180796,0.079013, 2.5288,2.1834,0, + 3.060994,2.265537,0.0706, 2.911379,2.093004,0.079013, 2.9224,2.0904,0, + 2.9224,2.0904,0, 3.0743,2.26455,0, 3.060994,2.265537,0.0706, + 3.024879,2.268216,0.12551, 2.881466,2.100072,0.140467, 2.911379,2.093004,0.079013, + 2.911379,2.093004,0.079013, 3.060994,2.265537,0.0706, 3.024879,2.268216,0.12551, + 2.971657,2.272164,0.164732, 2.837382,2.110488,0.184363, 2.881466,2.100072,0.140467, + 2.881466,2.100072,0.140467, 3.024879,2.268216,0.12551, 2.971657,2.272164,0.164732, + 2.90703,2.276958,0.188266, 2.783853,2.123136,0.210701, 2.837382,2.110488,0.184363, + 2.837382,2.110488,0.184363, 2.971657,2.272164,0.164732, 2.90703,2.276958,0.188266, + 2.8367,2.282175,0.19611, 2.7256,2.1369,0.21948, 2.783853,2.123136,0.210701, + 2.783853,2.123136,0.210701, 2.90703,2.276958,0.188266, 2.8367,2.282175,0.19611, + 2.76637,2.287392,0.188266, 2.667347,2.150664,0.210701, 2.7256,2.1369,0.21948, + 2.7256,2.1369,0.21948, 2.8367,2.282175,0.19611, 2.76637,2.287392,0.188266, + 2.701743,2.292186,0.164732, 2.613818,2.163312,0.184363, 2.667347,2.150664,0.210701, + 2.667347,2.150664,0.210701, 2.76637,2.287392,0.188266, 2.701743,2.292186,0.164732, + 2.648521,2.296134,0.12551, 2.569734,2.173728,0.140467, 2.613818,2.163312,0.184363, + 2.613818,2.163312,0.184363, 2.701743,2.292186,0.164732, 2.648521,2.296134,0.12551, + 2.612406,2.298813,0.0706, 2.539821,2.180796,0.079013, 2.569734,2.173728,0.140467, + 2.569734,2.173728,0.140467, 2.648521,2.296134,0.12551, 2.612406,2.298813,0.0706, + 2.5991,2.2998,0, 2.5288,2.1834,0, 2.539821,2.180796,0.079013, + 2.539821,2.180796,0.079013, 2.612406,2.298813,0.0706, 2.5991,2.2998,0, + 3.2832,2.4,0.0675, 3.060994,2.265537,0.0706, 3.0743,2.26455,0, + 3.0743,2.26455,0, 3.3,2.4,0, 3.2832,2.4,0.0675, + 3.2376,2.4,0.12, 3.024879,2.268216,0.12551, 3.060994,2.265537,0.0706, + 3.060994,2.265537,0.0706, 3.2832,2.4,0.0675, 3.2376,2.4,0.12, + 3.1704,2.4,0.1575, 2.971657,2.272164,0.164732, 3.024879,2.268216,0.12551, + 3.024879,2.268216,0.12551, 3.2376,2.4,0.12, 3.1704,2.4,0.1575, + 3.0888,2.4,0.18, 2.90703,2.276958,0.188266, 2.971657,2.272164,0.164732, + 2.971657,2.272164,0.164732, 3.1704,2.4,0.1575, 3.0888,2.4,0.18, + 3,2.4,0.1875, 2.8367,2.282175,0.19611, 2.90703,2.276958,0.188266, + 2.90703,2.276958,0.188266, 3.0888,2.4,0.18, 3,2.4,0.1875, + 2.9112,2.4,0.18, 2.76637,2.287392,0.188266, 2.8367,2.282175,0.19611, + 2.8367,2.282175,0.19611, 3,2.4,0.1875, 2.9112,2.4,0.18, + 2.8296,2.4,0.1575, 2.701743,2.292186,0.164732, 2.76637,2.287392,0.188266, + 2.76637,2.287392,0.188266, 2.9112,2.4,0.18, 2.8296,2.4,0.1575, + 2.7624,2.4,0.12, 2.648521,2.296134,0.12551, 2.701743,2.292186,0.164732, + 2.701743,2.292186,0.164732, 2.8296,2.4,0.1575, 2.7624,2.4,0.12, + 2.7168,2.4,0.0675, 2.612406,2.298813,0.0706, 2.648521,2.296134,0.12551, + 2.648521,2.296134,0.12551, 2.7624,2.4,0.12, 2.7168,2.4,0.0675, + 2.7,2.4,0, 2.5991,2.2998,0, 2.612406,2.298813,0.0706, + 2.612406,2.298813,0.0706, 2.7168,2.4,0.0675, 2.7,2.4,0, + 2.747407,2.420406,-0.066744, 2.7168,2.4,-0.0675, 2.7,2.4,0, + 2.7,2.4,0, 2.7298,2.42025,0, 2.747407,2.420406,-0.066744, + 2.795198,2.420829,-0.118656, 2.7624,2.4,-0.12, 2.7168,2.4,-0.0675, + 2.7168,2.4,-0.0675, 2.747407,2.420406,-0.066744, 2.795198,2.420829,-0.118656, + 2.865626,2.421453,-0.155736, 2.8296,2.4,-0.1575, 2.7624,2.4,-0.12, + 2.7624,2.4,-0.12, 2.795198,2.420829,-0.118656, 2.865626,2.421453,-0.155736, + 2.951146,2.42221,-0.177984, 2.9112,2.4,-0.18, 2.8296,2.4,-0.1575, + 2.8296,2.4,-0.1575, 2.865626,2.421453,-0.155736, 2.951146,2.42221,-0.177984, + 3.044212,2.423034,-0.1854, 3,2.4,-0.1875, 2.9112,2.4,-0.18, + 2.9112,2.4,-0.18, 2.951146,2.42221,-0.177984, 3.044212,2.423034,-0.1854, + 3.137279,2.423859,-0.177984, 3.0888,2.4,-0.18, 3,2.4,-0.1875, + 3,2.4,-0.1875, 3.044212,2.423034,-0.1854, 3.137279,2.423859,-0.177984, + 3.222799,2.424616,-0.155736, 3.1704,2.4,-0.1575, 3.0888,2.4,-0.18, + 3.0888,2.4,-0.18, 3.137279,2.423859,-0.177984, 3.222799,2.424616,-0.155736, + 3.293227,2.42524,-0.118656, 3.2376,2.4,-0.12, 3.1704,2.4,-0.1575, + 3.1704,2.4,-0.1575, 3.222799,2.424616,-0.155736, 3.293227,2.42524,-0.118656, + 3.341018,2.425663,-0.066744, 3.2832,2.4,-0.0675, 3.2376,2.4,-0.12, + 3.2376,2.4,-0.12, 3.293227,2.42524,-0.118656, 3.341018,2.425663,-0.066744, + 3.358625,2.425819,0, 3.3,2.4,0, 3.2832,2.4,-0.0675, + 3.2832,2.4,-0.0675, 3.341018,2.425663,-0.066744, 3.358625,2.425819,0, + 2.776365,2.436302,-0.064692, 2.747407,2.420406,-0.066744, 2.7298,2.42025,0, + 2.7298,2.42025,0, 2.7584,2.436,0, 2.776365,2.436302,-0.064692, + 2.825126,2.437123,-0.115008, 2.795198,2.420829,-0.118656, 2.747407,2.420406,-0.066744, + 2.747407,2.420406,-0.066744, 2.776365,2.436302,-0.064692, 2.825126,2.437123,-0.115008, + 2.896986,2.438333,-0.150948, 2.865626,2.421453,-0.155736, 2.795198,2.420829,-0.118656, + 2.795198,2.420829,-0.118656, 2.825126,2.437123,-0.115008, 2.896986,2.438333,-0.150948, + 2.984243,2.439802,-0.172512, 2.951146,2.42221,-0.177984, 2.865626,2.421453,-0.155736, + 2.865626,2.421453,-0.155736, 2.896986,2.438333,-0.150948, 2.984243,2.439802,-0.172512, + 3.0792,2.4414,-0.1797, 3.044212,2.423034,-0.1854, 2.951146,2.42221,-0.177984, + 2.951146,2.42221,-0.177984, 2.984243,2.439802,-0.172512, 3.0792,2.4414,-0.1797, + 3.174157,2.442998,-0.172512, 3.137279,2.423859,-0.177984, 3.044212,2.423034,-0.1854, + 3.044212,2.423034,-0.1854, 3.0792,2.4414,-0.1797, 3.174157,2.442998,-0.172512, + 3.261414,2.444467,-0.150948, 3.222799,2.424616,-0.155736, 3.137279,2.423859,-0.177984, + 3.137279,2.423859,-0.177984, 3.174157,2.442998,-0.172512, 3.261414,2.444467,-0.150948, + 3.333274,2.445677,-0.115008, 3.293227,2.42524,-0.118656, 3.222799,2.424616,-0.155736, + 3.222799,2.424616,-0.155736, 3.261414,2.444467,-0.150948, 3.333274,2.445677,-0.115008, + 3.382035,2.446498,-0.064692, 3.341018,2.425663,-0.066744, 3.293227,2.42524,-0.118656, + 3.293227,2.42524,-0.118656, 3.333274,2.445677,-0.115008, 3.382035,2.446498,-0.064692, + 3.4,2.4468,0, 3.358625,2.425819,0, 3.341018,2.425663,-0.066744, + 3.341018,2.425663,-0.066744, 3.382035,2.446498,-0.064692, 3.4,2.4468,0, + 2.802528,2.44768,-0.061668, 2.776365,2.436302,-0.064692, 2.7584,2.436,0, + 2.7584,2.436,0, 2.7846,2.44725,0, 2.802528,2.44768,-0.061668, + 2.851189,2.448847,-0.109632, 2.825126,2.437123,-0.115008, 2.776365,2.436302,-0.064692, + 2.776365,2.436302,-0.064692, 2.802528,2.44768,-0.061668, 2.851189,2.448847,-0.109632, + 2.922899,2.450567,-0.143892, 2.896986,2.438333,-0.150948, 2.825126,2.437123,-0.115008, + 2.825126,2.437123,-0.115008, 2.851189,2.448847,-0.109632, 2.922899,2.450567,-0.143892, + 3.009977,2.452655,-0.164448, 2.984243,2.439802,-0.172512, 2.896986,2.438333,-0.150948, + 2.896986,2.438333,-0.150948, 2.922899,2.450567,-0.143892, 3.009977,2.452655,-0.164448, + 3.104737,2.454928,-0.1713, 3.0792,2.4414,-0.1797, 2.984243,2.439802,-0.172512, + 2.984243,2.439802,-0.172512, 3.009977,2.452655,-0.164448, 3.104737,2.454928,-0.1713, + 3.199498,2.457201,-0.164448, 3.174157,2.442998,-0.172512, 3.0792,2.4414,-0.1797, + 3.0792,2.4414,-0.1797, 3.104737,2.454928,-0.1713, 3.199498,2.457201,-0.164448, + 3.286576,2.459289,-0.143892, 3.261414,2.444467,-0.150948, 3.174157,2.442998,-0.172512, + 3.174157,2.442998,-0.172512, 3.199498,2.457201,-0.164448, 3.286576,2.459289,-0.143892, + 3.358286,2.461009,-0.109632, 3.333274,2.445677,-0.115008, 3.261414,2.444467,-0.150948, + 3.261414,2.444467,-0.150948, 3.286576,2.459289,-0.143892, 3.358286,2.461009,-0.109632, + 3.406947,2.462176,-0.061668, 3.382035,2.446498,-0.064692, 3.333274,2.445677,-0.115008, + 3.333274,2.445677,-0.115008, 3.358286,2.461009,-0.109632, 3.406947,2.462176,-0.061668, + 3.424875,2.462606,0, 3.4,2.4468,0, 3.382035,2.446498,-0.064692, + 3.382035,2.446498,-0.064692, 3.406947,2.462176,-0.061668, 3.424875,2.462606,0, + 2.82475,2.454529,-0.057996, 2.802528,2.44768,-0.061668, 2.7846,2.44725,0, + 2.7846,2.44725,0, 2.8072,2.454,0, 2.82475,2.454529,-0.057996, + 2.872387,2.455966,-0.103104, 2.851189,2.448847,-0.109632, 2.802528,2.44768,-0.061668, + 2.802528,2.44768,-0.061668, 2.82475,2.454529,-0.057996, 2.872387,2.455966,-0.103104, + 2.942589,2.458082,-0.135324, 2.922899,2.450567,-0.143892, 2.851189,2.448847,-0.109632, + 2.851189,2.448847,-0.109632, 2.872387,2.455966,-0.103104, 2.942589,2.458082,-0.135324, + 3.027834,2.460653,-0.154656, 3.009977,2.452655,-0.164448, 2.922899,2.450567,-0.143892, + 2.922899,2.450567,-0.143892, 2.942589,2.458082,-0.135324, 3.027834,2.460653,-0.154656, + 3.1206,2.46345,-0.1611, 3.104737,2.454928,-0.1713, 3.009977,2.452655,-0.164448, + 3.009977,2.452655,-0.164448, 3.027834,2.460653,-0.154656, 3.1206,2.46345,-0.1611, + 3.213366,2.466247,-0.154656, 3.199498,2.457201,-0.164448, 3.104737,2.454928,-0.1713, + 3.104737,2.454928,-0.1713, 3.1206,2.46345,-0.1611, 3.213366,2.466247,-0.154656, + 3.298611,2.468818,-0.135324, 3.286576,2.459289,-0.143892, 3.199498,2.457201,-0.164448, + 3.199498,2.457201,-0.164448, 3.213366,2.466247,-0.154656, 3.298611,2.468818,-0.135324, + 3.368813,2.470934,-0.103104, 3.358286,2.461009,-0.109632, 3.286576,2.459289,-0.143892, + 3.286576,2.459289,-0.143892, 3.298611,2.468818,-0.135324, 3.368813,2.470934,-0.103104, + 3.41645,2.472371,-0.057996, 3.406947,2.462176,-0.061668, 3.358286,2.461009,-0.109632, + 3.358286,2.461009,-0.109632, 3.368813,2.470934,-0.103104, 3.41645,2.472371,-0.057996, + 3.434,2.4729,0, 3.424875,2.462606,0, 3.406947,2.462176,-0.061668, + 3.406947,2.462176,-0.061668, 3.41645,2.472371,-0.057996, 3.434,2.4729,0, + 2.841887,2.456841,-0.054, 2.82475,2.454529,-0.057996, 2.8072,2.454,0, + 2.8072,2.454,0, 2.825,2.45625,0, 2.841887,2.456841,-0.054, + 2.887725,2.458444,-0.096, 2.872387,2.455966,-0.103104, 2.82475,2.454529,-0.057996, + 2.82475,2.454529,-0.057996, 2.841887,2.456841,-0.054, 2.887725,2.458444,-0.096, + 2.955275,2.460806,-0.126, 2.942589,2.458082,-0.135324, 2.872387,2.455966,-0.103104, + 2.872387,2.455966,-0.103104, 2.887725,2.458444,-0.096, 2.955275,2.460806,-0.126, + 3.0373,2.463675,-0.144, 3.027834,2.460653,-0.154656, 2.942589,2.458082,-0.135324, + 2.942589,2.458082,-0.135324, 2.955275,2.460806,-0.126, 3.0373,2.463675,-0.144, + 3.126562,2.466797,-0.15, 3.1206,2.46345,-0.1611, 3.027834,2.460653,-0.154656, + 3.027834,2.460653,-0.154656, 3.0373,2.463675,-0.144, 3.126562,2.466797,-0.15, + 3.215825,2.469919,-0.144, 3.213366,2.466247,-0.154656, 3.1206,2.46345,-0.1611, + 3.1206,2.46345,-0.1611, 3.126562,2.466797,-0.15, 3.215825,2.469919,-0.144, + 3.29785,2.472787,-0.126, 3.298611,2.468818,-0.135324, 3.213366,2.466247,-0.154656, + 3.213366,2.466247,-0.154656, 3.215825,2.469919,-0.144, 3.29785,2.472787,-0.126, + 3.3654,2.47515,-0.096, 3.368813,2.470934,-0.103104, 3.298611,2.468818,-0.135324, + 3.298611,2.468818,-0.135324, 3.29785,2.472787,-0.126, 3.3654,2.47515,-0.096, + 3.411237,2.476753,-0.054, 3.41645,2.472371,-0.057996, 3.368813,2.470934,-0.103104, + 3.368813,2.470934,-0.103104, 3.3654,2.47515,-0.096, 3.411237,2.476753,-0.054, + 3.428125,2.477344,0, 3.434,2.4729,0, 3.41645,2.472371,-0.057996, + 3.41645,2.472371,-0.057996, 3.411237,2.476753,-0.054, 3.428125,2.477344,0, + 2.852794,2.454605,-0.050004, 2.841887,2.456841,-0.054, 2.825,2.45625,0, + 2.825,2.45625,0, 2.8368,2.454,0, 2.852794,2.454605,-0.050004, + 2.896205,2.456246,-0.088896, 2.887725,2.458444,-0.096, 2.841887,2.456841,-0.054, + 2.841887,2.456841,-0.054, 2.852794,2.454605,-0.050004, 2.896205,2.456246,-0.088896, + 2.960179,2.458666,-0.116676, 2.955275,2.460806,-0.126, 2.887725,2.458444,-0.096, + 2.887725,2.458444,-0.096, 2.896205,2.456246,-0.088896, 2.960179,2.458666,-0.116676, + 3.037862,2.461603,-0.133344, 3.0373,2.463675,-0.144, 2.955275,2.460806,-0.126, + 2.955275,2.460806,-0.126, 2.960179,2.458666,-0.116676, 3.037862,2.461603,-0.133344, + 3.1224,2.4648,-0.1389, 3.126562,2.466797,-0.15, 3.0373,2.463675,-0.144, + 3.0373,2.463675,-0.144, 3.037862,2.461603,-0.133344, 3.1224,2.4648,-0.1389, + 3.206938,2.467997,-0.133344, 3.215825,2.469919,-0.144, 3.126562,2.466797,-0.15, + 3.126562,2.466797,-0.15, 3.1224,2.4648,-0.1389, 3.206938,2.467997,-0.133344, + 3.284621,2.470934,-0.116676, 3.29785,2.472787,-0.126, 3.215825,2.469919,-0.144, + 3.215825,2.469919,-0.144, 3.206938,2.467997,-0.133344, 3.284621,2.470934,-0.116676, + 3.348595,2.473354,-0.088896, 3.3654,2.47515,-0.096, 3.29785,2.472787,-0.126, + 3.29785,2.472787,-0.126, 3.284621,2.470934,-0.116676, 3.348595,2.473354,-0.088896, + 3.392006,2.474995,-0.050004, 3.411237,2.476753,-0.054, 3.3654,2.47515,-0.096, + 3.3654,2.47515,-0.096, 3.348595,2.473354,-0.088896, 3.392006,2.474995,-0.050004, + 3.408,2.4756,0, 3.428125,2.477344,0, 3.411237,2.476753,-0.054, + 3.411237,2.476753,-0.054, 3.392006,2.474995,-0.050004, 3.408,2.4756,0, + 2.856323,2.447812,-0.046332, 2.852794,2.454605,-0.050004, 2.8368,2.454,0, + 2.8368,2.454,0, 2.8414,2.44725,0, 2.856323,2.447812,-0.046332, + 2.896829,2.449338,-0.082368, 2.896205,2.456246,-0.088896, 2.852794,2.454605,-0.050004, + 2.852794,2.454605,-0.050004, 2.856323,2.447812,-0.046332, 2.896829,2.449338,-0.082368, + 2.956523,2.451588,-0.108108, 2.960179,2.458666,-0.116676, 2.896205,2.456246,-0.088896, + 2.896205,2.456246,-0.088896, 2.896829,2.449338,-0.082368, 2.956523,2.451588,-0.108108, + 3.029007,2.454319,-0.123552, 3.037862,2.461603,-0.133344, 2.960179,2.458666,-0.116676, + 2.960179,2.458666,-0.116676, 2.956523,2.451588,-0.108108, 3.029007,2.454319,-0.123552, + 3.107887,2.457291,-0.1287, 3.1224,2.4648,-0.1389, 3.037862,2.461603,-0.133344, + 3.037862,2.461603,-0.133344, 3.029007,2.454319,-0.123552, 3.107887,2.457291,-0.1287, + 3.186768,2.460263,-0.123552, 3.206938,2.467997,-0.133344, 3.1224,2.4648,-0.1389, + 3.1224,2.4648,-0.1389, 3.107887,2.457291,-0.1287, 3.186768,2.460263,-0.123552, + 3.259252,2.462994,-0.108108, 3.284621,2.470934,-0.116676, 3.206938,2.467997,-0.133344, + 3.206938,2.467997,-0.133344, 3.186768,2.460263,-0.123552, 3.259252,2.462994,-0.108108, + 3.318946,2.465243,-0.082368, 3.348595,2.473354,-0.088896, 3.284621,2.470934,-0.116676, + 3.284621,2.470934,-0.116676, 3.259252,2.462994,-0.108108, 3.318946,2.465243,-0.082368, + 3.359452,2.466769,-0.046332, 3.392006,2.474995,-0.050004, 3.348595,2.473354,-0.088896, + 3.348595,2.473354,-0.088896, 3.318946,2.465243,-0.082368, 3.359452,2.466769,-0.046332, + 3.374375,2.467331,0, 3.408,2.4756,0, 3.392006,2.474995,-0.050004, + 3.392006,2.474995,-0.050004, 3.359452,2.466769,-0.046332, 3.374375,2.467331,0, + 2.851331,2.436454,-0.043308, 2.856323,2.447812,-0.046332, 2.8414,2.44725,0, + 2.8414,2.44725,0, 2.8376,2.436,0, 2.851331,2.436454,-0.043308, + 2.888602,2.437685,-0.076992, 2.896829,2.449338,-0.082368, 2.856323,2.447812,-0.046332, + 2.856323,2.447812,-0.046332, 2.851331,2.436454,-0.043308, 2.888602,2.437685,-0.076992, + 2.943526,2.439499,-0.101052, 2.956523,2.451588,-0.108108, 2.896829,2.449338,-0.082368, + 2.896829,2.449338,-0.082368, 2.888602,2.437685,-0.076992, 2.943526,2.439499,-0.101052, + 3.010221,2.441702,-0.115488, 3.029007,2.454319,-0.123552, 2.956523,2.451588,-0.108108, + 2.956523,2.451588,-0.108108, 2.943526,2.439499,-0.101052, 3.010221,2.441702,-0.115488, + 3.0828,2.4441,-0.1203, 3.107887,2.457291,-0.1287, 3.029007,2.454319,-0.123552, + 3.029007,2.454319,-0.123552, 3.010221,2.441702,-0.115488, 3.0828,2.4441,-0.1203, + 3.155379,2.446498,-0.115488, 3.186768,2.460263,-0.123552, 3.107887,2.457291,-0.1287, + 3.107887,2.457291,-0.1287, 3.0828,2.4441,-0.1203, 3.155379,2.446498,-0.115488, + 3.222074,2.448701,-0.101052, 3.259252,2.462994,-0.108108, 3.186768,2.460263,-0.123552, + 3.186768,2.460263,-0.123552, 3.155379,2.446498,-0.115488, 3.222074,2.448701,-0.101052, + 3.276998,2.450515,-0.076992, 3.318946,2.465243,-0.082368, 3.259252,2.462994,-0.108108, + 3.259252,2.462994,-0.108108, 3.222074,2.448701,-0.101052, 3.276998,2.450515,-0.076992, + 3.314269,2.451746,-0.043308, 3.359452,2.466769,-0.046332, 3.318946,2.465243,-0.082368, + 3.318946,2.465243,-0.082368, 3.276998,2.450515,-0.076992, 3.314269,2.451746,-0.043308, + 3.328,2.4522,0, 3.374375,2.467331,0, 3.359452,2.466769,-0.046332, + 3.359452,2.466769,-0.046332, 3.314269,2.451746,-0.043308, 3.328,2.4522,0, + 2.836672,2.420519,-0.041256, 2.851331,2.436454,-0.043308, 2.8376,2.436,0, + 2.8376,2.436,0, 2.8242,2.42025,0, 2.836672,2.420519,-0.041256, + 2.870524,2.42125,-0.073344, 2.888602,2.437685,-0.076992, 2.851331,2.436454,-0.043308, + 2.851331,2.436454,-0.043308, 2.836672,2.420519,-0.041256, 2.870524,2.42125,-0.073344, + 2.920412,2.422328,-0.096264, 2.943526,2.439499,-0.101052, 2.888602,2.437685,-0.076992, + 2.888602,2.437685,-0.076992, 2.870524,2.42125,-0.073344, 2.920412,2.422328,-0.096264, + 2.98099,2.423636,-0.110016, 3.010221,2.441702,-0.115488, 2.943526,2.439499,-0.101052, + 2.943526,2.439499,-0.101052, 2.920412,2.422328,-0.096264, 2.98099,2.423636,-0.110016, + 3.046912,2.425059,-0.1146, 3.0828,2.4441,-0.1203, 3.010221,2.441702,-0.115488, + 3.010221,2.441702,-0.115488, 2.98099,2.423636,-0.110016, 3.046912,2.425059,-0.1146, + 3.112835,2.426483,-0.110016, 3.155379,2.446498,-0.115488, 3.0828,2.4441,-0.1203, + 3.0828,2.4441,-0.1203, 3.046912,2.425059,-0.1146, 3.112835,2.426483,-0.110016, + 3.173413,2.427791,-0.096264, 3.222074,2.448701,-0.101052, 3.155379,2.446498,-0.115488, + 3.155379,2.446498,-0.115488, 3.112835,2.426483,-0.110016, 3.173413,2.427791,-0.096264, + 3.223301,2.428868,-0.073344, 3.276998,2.450515,-0.076992, 3.222074,2.448701,-0.101052, + 3.222074,2.448701,-0.101052, 3.173413,2.427791,-0.096264, 3.223301,2.428868,-0.073344, + 3.257153,2.429599,-0.041256, 3.314269,2.451746,-0.043308, 3.276998,2.450515,-0.076992, + 3.276998,2.450515,-0.076992, 3.223301,2.428868,-0.073344, 3.257153,2.429599,-0.041256, + 3.269625,2.429869,0, 3.328,2.4522,0, 3.314269,2.451746,-0.043308, + 3.314269,2.451746,-0.043308, 3.257153,2.429599,-0.041256, 3.269625,2.429869,0, + 2.8112,2.4,-0.0405, 2.836672,2.420519,-0.041256, 2.8242,2.42025,0, + 2.8242,2.42025,0, 2.8,2.4,0, 2.8112,2.4,-0.0405, + 2.8416,2.4,-0.072, 2.870524,2.42125,-0.073344, 2.836672,2.420519,-0.041256, + 2.836672,2.420519,-0.041256, 2.8112,2.4,-0.0405, 2.8416,2.4,-0.072, + 2.8864,2.4,-0.0945, 2.920412,2.422328,-0.096264, 2.870524,2.42125,-0.073344, + 2.870524,2.42125,-0.073344, 2.8416,2.4,-0.072, 2.8864,2.4,-0.0945, + 2.9408,2.4,-0.108, 2.98099,2.423636,-0.110016, 2.920412,2.422328,-0.096264, + 2.920412,2.422328,-0.096264, 2.8864,2.4,-0.0945, 2.9408,2.4,-0.108, + 3,2.4,-0.1125, 3.046912,2.425059,-0.1146, 2.98099,2.423636,-0.110016, + 2.98099,2.423636,-0.110016, 2.9408,2.4,-0.108, 3,2.4,-0.1125, + 3.0592,2.4,-0.108, 3.112835,2.426483,-0.110016, 3.046912,2.425059,-0.1146, + 3.046912,2.425059,-0.1146, 3,2.4,-0.1125, 3.0592,2.4,-0.108, + 3.1136,2.4,-0.0945, 3.173413,2.427791,-0.096264, 3.112835,2.426483,-0.110016, + 3.112835,2.426483,-0.110016, 3.0592,2.4,-0.108, 3.1136,2.4,-0.0945, + 3.1584,2.4,-0.072, 3.223301,2.428868,-0.073344, 3.173413,2.427791,-0.096264, + 3.173413,2.427791,-0.096264, 3.1136,2.4,-0.0945, 3.1584,2.4,-0.072, + 3.1888,2.4,-0.0405, 3.257153,2.429599,-0.041256, 3.223301,2.428868,-0.073344, + 3.223301,2.428868,-0.073344, 3.1584,2.4,-0.072, 3.1888,2.4,-0.0405, + 3.2,2.4,0, 3.269625,2.429869,0, 3.257153,2.429599,-0.041256, + 3.257153,2.429599,-0.041256, 3.1888,2.4,-0.0405, 3.2,2.4,0, + 3.341018,2.425663,0.066744, 3.2832,2.4,0.0675, 3.3,2.4,0, + 3.3,2.4,0, 3.358625,2.425819,0, 3.341018,2.425663,0.066744, + 3.293227,2.42524,0.118656, 3.2376,2.4,0.12, 3.2832,2.4,0.0675, + 3.2832,2.4,0.0675, 3.341018,2.425663,0.066744, 3.293227,2.42524,0.118656, + 3.222799,2.424616,0.155736, 3.1704,2.4,0.1575, 3.2376,2.4,0.12, + 3.2376,2.4,0.12, 3.293227,2.42524,0.118656, 3.222799,2.424616,0.155736, + 3.137279,2.423859,0.177984, 3.0888,2.4,0.18, 3.1704,2.4,0.1575, + 3.1704,2.4,0.1575, 3.222799,2.424616,0.155736, 3.137279,2.423859,0.177984, + 3.044212,2.423034,0.1854, 3,2.4,0.1875, 3.0888,2.4,0.18, + 3.0888,2.4,0.18, 3.137279,2.423859,0.177984, 3.044212,2.423034,0.1854, + 2.951146,2.42221,0.177984, 2.9112,2.4,0.18, 3,2.4,0.1875, + 3,2.4,0.1875, 3.044212,2.423034,0.1854, 2.951146,2.42221,0.177984, + 2.865626,2.421453,0.155736, 2.8296,2.4,0.1575, 2.9112,2.4,0.18, + 2.9112,2.4,0.18, 2.951146,2.42221,0.177984, 2.865626,2.421453,0.155736, + 2.795198,2.420829,0.118656, 2.7624,2.4,0.12, 2.8296,2.4,0.1575, + 2.8296,2.4,0.1575, 2.865626,2.421453,0.155736, 2.795198,2.420829,0.118656, + 2.747407,2.420406,0.066744, 2.7168,2.4,0.0675, 2.7624,2.4,0.12, + 2.7624,2.4,0.12, 2.795198,2.420829,0.118656, 2.747407,2.420406,0.066744, + 2.7298,2.42025,0, 2.7,2.4,0, 2.7168,2.4,0.0675, + 2.7168,2.4,0.0675, 2.747407,2.420406,0.066744, 2.7298,2.42025,0, + 3.382035,2.446498,0.064692, 3.341018,2.425663,0.066744, 3.358625,2.425819,0, + 3.358625,2.425819,0, 3.4,2.4468,0, 3.382035,2.446498,0.064692, + 3.333274,2.445677,0.115008, 3.293227,2.42524,0.118656, 3.341018,2.425663,0.066744, + 3.341018,2.425663,0.066744, 3.382035,2.446498,0.064692, 3.333274,2.445677,0.115008, + 3.261414,2.444467,0.150948, 3.222799,2.424616,0.155736, 3.293227,2.42524,0.118656, + 3.293227,2.42524,0.118656, 3.333274,2.445677,0.115008, 3.261414,2.444467,0.150948, + 3.174157,2.442998,0.172512, 3.137279,2.423859,0.177984, 3.222799,2.424616,0.155736, + 3.222799,2.424616,0.155736, 3.261414,2.444467,0.150948, 3.174157,2.442998,0.172512, + 3.0792,2.4414,0.1797, 3.044212,2.423034,0.1854, 3.137279,2.423859,0.177984, + 3.137279,2.423859,0.177984, 3.174157,2.442998,0.172512, 3.0792,2.4414,0.1797, + 2.984243,2.439802,0.172512, 2.951146,2.42221,0.177984, 3.044212,2.423034,0.1854, + 3.044212,2.423034,0.1854, 3.0792,2.4414,0.1797, 2.984243,2.439802,0.172512, + 2.896986,2.438333,0.150948, 2.865626,2.421453,0.155736, 2.951146,2.42221,0.177984, + 2.951146,2.42221,0.177984, 2.984243,2.439802,0.172512, 2.896986,2.438333,0.150948, + 2.825126,2.437123,0.115008, 2.795198,2.420829,0.118656, 2.865626,2.421453,0.155736, + 2.865626,2.421453,0.155736, 2.896986,2.438333,0.150948, 2.825126,2.437123,0.115008, + 2.776365,2.436302,0.064692, 2.747407,2.420406,0.066744, 2.795198,2.420829,0.118656, + 2.795198,2.420829,0.118656, 2.825126,2.437123,0.115008, 2.776365,2.436302,0.064692, + 2.7584,2.436,0, 2.7298,2.42025,0, 2.747407,2.420406,0.066744, + 2.747407,2.420406,0.066744, 2.776365,2.436302,0.064692, 2.7584,2.436,0, + 3.406947,2.462176,0.061668, 3.382035,2.446498,0.064692, 3.4,2.4468,0, + 3.4,2.4468,0, 3.424875,2.462606,0, 3.406947,2.462176,0.061668, + 3.358286,2.461009,0.109632, 3.333274,2.445677,0.115008, 3.382035,2.446498,0.064692, + 3.382035,2.446498,0.064692, 3.406947,2.462176,0.061668, 3.358286,2.461009,0.109632, + 3.286576,2.459289,0.143892, 3.261414,2.444467,0.150948, 3.333274,2.445677,0.115008, + 3.333274,2.445677,0.115008, 3.358286,2.461009,0.109632, 3.286576,2.459289,0.143892, + 3.199498,2.457201,0.164448, 3.174157,2.442998,0.172512, 3.261414,2.444467,0.150948, + 3.261414,2.444467,0.150948, 3.286576,2.459289,0.143892, 3.199498,2.457201,0.164448, + 3.104738,2.454928,0.1713, 3.0792,2.4414,0.1797, 3.174157,2.442998,0.172512, + 3.174157,2.442998,0.172512, 3.199498,2.457201,0.164448, 3.104738,2.454928,0.1713, + 3.009977,2.452655,0.164448, 2.984243,2.439802,0.172512, 3.0792,2.4414,0.1797, + 3.0792,2.4414,0.1797, 3.104738,2.454928,0.1713, 3.009977,2.452655,0.164448, + 2.922899,2.450567,0.143892, 2.896986,2.438333,0.150948, 2.984243,2.439802,0.172512, + 2.984243,2.439802,0.172512, 3.009977,2.452655,0.164448, 2.922899,2.450567,0.143892, + 2.851189,2.448847,0.109632, 2.825126,2.437123,0.115008, 2.896986,2.438333,0.150948, + 2.896986,2.438333,0.150948, 2.922899,2.450567,0.143892, 2.851189,2.448847,0.109632, + 2.802528,2.44768,0.061668, 2.776365,2.436302,0.064692, 2.825126,2.437123,0.115008, + 2.825126,2.437123,0.115008, 2.851189,2.448847,0.109632, 2.802528,2.44768,0.061668, + 2.7846,2.44725,0, 2.7584,2.436,0, 2.776365,2.436302,0.064692, + 2.776365,2.436302,0.064692, 2.802528,2.44768,0.061668, 2.7846,2.44725,0, + 3.41645,2.472371,0.057996, 3.406947,2.462176,0.061668, 3.424875,2.462606,0, + 3.424875,2.462606,0, 3.434,2.4729,0, 3.41645,2.472371,0.057996, + 3.368813,2.470934,0.103104, 3.358286,2.461009,0.109632, 3.406947,2.462176,0.061668, + 3.406947,2.462176,0.061668, 3.41645,2.472371,0.057996, 3.368813,2.470934,0.103104, + 3.298611,2.468818,0.135324, 3.286576,2.459289,0.143892, 3.358286,2.461009,0.109632, + 3.358286,2.461009,0.109632, 3.368813,2.470934,0.103104, 3.298611,2.468818,0.135324, + 3.213366,2.466247,0.154656, 3.199498,2.457201,0.164448, 3.286576,2.459289,0.143892, + 3.286576,2.459289,0.143892, 3.298611,2.468818,0.135324, 3.213366,2.466247,0.154656, + 3.1206,2.46345,0.1611, 3.104738,2.454928,0.1713, 3.199498,2.457201,0.164448, + 3.199498,2.457201,0.164448, 3.213366,2.466247,0.154656, 3.1206,2.46345,0.1611, + 3.027834,2.460653,0.154656, 3.009977,2.452655,0.164448, 3.104738,2.454928,0.1713, + 3.104738,2.454928,0.1713, 3.1206,2.46345,0.1611, 3.027834,2.460653,0.154656, + 2.942589,2.458082,0.135324, 2.922899,2.450567,0.143892, 3.009977,2.452655,0.164448, + 3.009977,2.452655,0.164448, 3.027834,2.460653,0.154656, 2.942589,2.458082,0.135324, + 2.872387,2.455966,0.103104, 2.851189,2.448847,0.109632, 2.922899,2.450567,0.143892, + 2.922899,2.450567,0.143892, 2.942589,2.458082,0.135324, 2.872387,2.455966,0.103104, + 2.82475,2.454529,0.057996, 2.802528,2.44768,0.061668, 2.851189,2.448847,0.109632, + 2.851189,2.448847,0.109632, 2.872387,2.455966,0.103104, 2.82475,2.454529,0.057996, + 2.8072,2.454,0, 2.7846,2.44725,0, 2.802528,2.44768,0.061668, + 2.802528,2.44768,0.061668, 2.82475,2.454529,0.057996, 2.8072,2.454,0, + 3.411237,2.476753,0.054, 3.41645,2.472371,0.057996, 3.434,2.4729,0, + 3.434,2.4729,0, 3.428125,2.477344,0, 3.411237,2.476753,0.054, + 3.3654,2.47515,0.096, 3.368813,2.470934,0.103104, 3.41645,2.472371,0.057996, + 3.41645,2.472371,0.057996, 3.411237,2.476753,0.054, 3.3654,2.47515,0.096, + 3.29785,2.472788,0.126, 3.298611,2.468818,0.135324, 3.368813,2.470934,0.103104, + 3.368813,2.470934,0.103104, 3.3654,2.47515,0.096, 3.29785,2.472788,0.126, + 3.215825,2.469919,0.144, 3.213366,2.466247,0.154656, 3.298611,2.468818,0.135324, + 3.298611,2.468818,0.135324, 3.29785,2.472788,0.126, 3.215825,2.469919,0.144, + 3.126562,2.466797,0.15, 3.1206,2.46345,0.1611, 3.213366,2.466247,0.154656, + 3.213366,2.466247,0.154656, 3.215825,2.469919,0.144, 3.126562,2.466797,0.15, + 3.0373,2.463675,0.144, 3.027834,2.460653,0.154656, 3.1206,2.46345,0.1611, + 3.1206,2.46345,0.1611, 3.126562,2.466797,0.15, 3.0373,2.463675,0.144, + 2.955275,2.460806,0.126, 2.942589,2.458082,0.135324, 3.027834,2.460653,0.154656, + 3.027834,2.460653,0.154656, 3.0373,2.463675,0.144, 2.955275,2.460806,0.126, + 2.887725,2.458444,0.096, 2.872387,2.455966,0.103104, 2.942589,2.458082,0.135324, + 2.942589,2.458082,0.135324, 2.955275,2.460806,0.126, 2.887725,2.458444,0.096, + 2.841887,2.456841,0.054, 2.82475,2.454529,0.057996, 2.872387,2.455966,0.103104, + 2.872387,2.455966,0.103104, 2.887725,2.458444,0.096, 2.841887,2.456841,0.054, + 2.825,2.45625,0, 2.8072,2.454,0, 2.82475,2.454529,0.057996, + 2.82475,2.454529,0.057996, 2.841887,2.456841,0.054, 2.825,2.45625,0, + 3.392006,2.474995,0.050004, 3.411237,2.476753,0.054, 3.428125,2.477344,0, + 3.428125,2.477344,0, 3.408,2.4756,0, 3.392006,2.474995,0.050004, + 3.348595,2.473354,0.088896, 3.3654,2.47515,0.096, 3.411237,2.476753,0.054, + 3.411237,2.476753,0.054, 3.392006,2.474995,0.050004, 3.348595,2.473354,0.088896, + 3.284621,2.470934,0.116676, 3.29785,2.472788,0.126, 3.3654,2.47515,0.096, + 3.3654,2.47515,0.096, 3.348595,2.473354,0.088896, 3.284621,2.470934,0.116676, + 3.206938,2.467997,0.133344, 3.215825,2.469919,0.144, 3.29785,2.472788,0.126, + 3.29785,2.472788,0.126, 3.284621,2.470934,0.116676, 3.206938,2.467997,0.133344, + 3.1224,2.4648,0.1389, 3.126562,2.466797,0.15, 3.215825,2.469919,0.144, + 3.215825,2.469919,0.144, 3.206938,2.467997,0.133344, 3.1224,2.4648,0.1389, + 3.037862,2.461603,0.133344, 3.0373,2.463675,0.144, 3.126562,2.466797,0.15, + 3.126562,2.466797,0.15, 3.1224,2.4648,0.1389, 3.037862,2.461603,0.133344, + 2.960179,2.458666,0.116676, 2.955275,2.460806,0.126, 3.0373,2.463675,0.144, + 3.0373,2.463675,0.144, 3.037862,2.461603,0.133344, 2.960179,2.458666,0.116676, + 2.896205,2.456246,0.088896, 2.887725,2.458444,0.096, 2.955275,2.460806,0.126, + 2.955275,2.460806,0.126, 2.960179,2.458666,0.116676, 2.896205,2.456246,0.088896, + 2.852794,2.454605,0.050004, 2.841887,2.456841,0.054, 2.887725,2.458444,0.096, + 2.887725,2.458444,0.096, 2.896205,2.456246,0.088896, 2.852794,2.454605,0.050004, + 2.8368,2.454,0, 2.825,2.45625,0, 2.841887,2.456841,0.054, + 2.841887,2.456841,0.054, 2.852794,2.454605,0.050004, 2.8368,2.454,0, + 3.359452,2.466769,0.046332, 3.392006,2.474995,0.050004, 3.408,2.4756,0, + 3.408,2.4756,0, 3.374375,2.467331,0, 3.359452,2.466769,0.046332, + 3.318946,2.465243,0.082368, 3.348595,2.473354,0.088896, 3.392006,2.474995,0.050004, + 3.392006,2.474995,0.050004, 3.359452,2.466769,0.046332, 3.318946,2.465243,0.082368, + 3.259252,2.462994,0.108108, 3.284621,2.470934,0.116676, 3.348595,2.473354,0.088896, + 3.348595,2.473354,0.088896, 3.318946,2.465243,0.082368, 3.259252,2.462994,0.108108, + 3.186768,2.460263,0.123552, 3.206938,2.467997,0.133344, 3.284621,2.470934,0.116676, + 3.284621,2.470934,0.116676, 3.259252,2.462994,0.108108, 3.186768,2.460263,0.123552, + 3.107887,2.457291,0.1287, 3.1224,2.4648,0.1389, 3.206938,2.467997,0.133344, + 3.206938,2.467997,0.133344, 3.186768,2.460263,0.123552, 3.107887,2.457291,0.1287, + 3.029007,2.454319,0.123552, 3.037862,2.461603,0.133344, 3.1224,2.4648,0.1389, + 3.1224,2.4648,0.1389, 3.107887,2.457291,0.1287, 3.029007,2.454319,0.123552, + 2.956523,2.451588,0.108108, 2.960179,2.458666,0.116676, 3.037862,2.461603,0.133344, + 3.037862,2.461603,0.133344, 3.029007,2.454319,0.123552, 2.956523,2.451588,0.108108, + 2.896829,2.449338,0.082368, 2.896205,2.456246,0.088896, 2.960179,2.458666,0.116676, + 2.960179,2.458666,0.116676, 2.956523,2.451588,0.108108, 2.896829,2.449338,0.082368, + 2.856323,2.447812,0.046332, 2.852794,2.454605,0.050004, 2.896205,2.456246,0.088896, + 2.896205,2.456246,0.088896, 2.896829,2.449338,0.082368, 2.856323,2.447812,0.046332, + 2.8414,2.44725,0, 2.8368,2.454,0, 2.852794,2.454605,0.050004, + 2.852794,2.454605,0.050004, 2.856323,2.447812,0.046332, 2.8414,2.44725,0, + 3.314269,2.451746,0.043308, 3.359452,2.466769,0.046332, 3.374375,2.467331,0, + 3.374375,2.467331,0, 3.328,2.4522,0, 3.314269,2.451746,0.043308, + 3.276998,2.450515,0.076992, 3.318946,2.465243,0.082368, 3.359452,2.466769,0.046332, + 3.359452,2.466769,0.046332, 3.314269,2.451746,0.043308, 3.276998,2.450515,0.076992, + 3.222074,2.448701,0.101052, 3.259252,2.462994,0.108108, 3.318946,2.465243,0.082368, + 3.318946,2.465243,0.082368, 3.276998,2.450515,0.076992, 3.222074,2.448701,0.101052, + 3.155379,2.446498,0.115488, 3.186768,2.460263,0.123552, 3.259252,2.462994,0.108108, + 3.259252,2.462994,0.108108, 3.222074,2.448701,0.101052, 3.155379,2.446498,0.115488, + 3.0828,2.4441,0.1203, 3.107887,2.457291,0.1287, 3.186768,2.460263,0.123552, + 3.186768,2.460263,0.123552, 3.155379,2.446498,0.115488, 3.0828,2.4441,0.1203, + 3.010221,2.441702,0.115488, 3.029007,2.454319,0.123552, 3.107887,2.457291,0.1287, + 3.107887,2.457291,0.1287, 3.0828,2.4441,0.1203, 3.010221,2.441702,0.115488, + 2.943526,2.439499,0.101052, 2.956523,2.451588,0.108108, 3.029007,2.454319,0.123552, + 3.029007,2.454319,0.123552, 3.010221,2.441702,0.115488, 2.943526,2.439499,0.101052, + 2.888602,2.437685,0.076992, 2.896829,2.449338,0.082368, 2.956523,2.451588,0.108108, + 2.956523,2.451588,0.108108, 2.943526,2.439499,0.101052, 2.888602,2.437685,0.076992, + 2.851331,2.436454,0.043308, 2.856323,2.447812,0.046332, 2.896829,2.449338,0.082368, + 2.896829,2.449338,0.082368, 2.888602,2.437685,0.076992, 2.851331,2.436454,0.043308, + 2.8376,2.436,0, 2.8414,2.44725,0, 2.856323,2.447812,0.046332, + 2.856323,2.447812,0.046332, 2.851331,2.436454,0.043308, 2.8376,2.436,0, + 3.257153,2.429599,0.041256, 3.314269,2.451746,0.043308, 3.328,2.4522,0, + 3.328,2.4522,0, 3.269625,2.429869,0, 3.257153,2.429599,0.041256, + 3.223301,2.428868,0.073344, 3.276998,2.450515,0.076992, 3.314269,2.451746,0.043308, + 3.314269,2.451746,0.043308, 3.257153,2.429599,0.041256, 3.223301,2.428868,0.073344, + 3.173413,2.427791,0.096264, 3.222074,2.448701,0.101052, 3.276998,2.450515,0.076992, + 3.276998,2.450515,0.076992, 3.223301,2.428868,0.073344, 3.173413,2.427791,0.096264, + 3.112835,2.426483,0.110016, 3.155379,2.446498,0.115488, 3.222074,2.448701,0.101052, + 3.222074,2.448701,0.101052, 3.173413,2.427791,0.096264, 3.112835,2.426483,0.110016, + 3.046912,2.425059,0.1146, 3.0828,2.4441,0.1203, 3.155379,2.446498,0.115488, + 3.155379,2.446498,0.115488, 3.112835,2.426483,0.110016, 3.046912,2.425059,0.1146, + 2.98099,2.423636,0.110016, 3.010221,2.441702,0.115488, 3.0828,2.4441,0.1203, + 3.0828,2.4441,0.1203, 3.046912,2.425059,0.1146, 2.98099,2.423636,0.110016, + 2.920412,2.422328,0.096264, 2.943526,2.439499,0.101052, 3.010221,2.441702,0.115488, + 3.010221,2.441702,0.115488, 2.98099,2.423636,0.110016, 2.920412,2.422328,0.096264, + 2.870524,2.42125,0.073344, 2.888602,2.437685,0.076992, 2.943526,2.439499,0.101052, + 2.943526,2.439499,0.101052, 2.920412,2.422328,0.096264, 2.870524,2.42125,0.073344, + 2.836672,2.420519,0.041256, 2.851331,2.436454,0.043308, 2.888602,2.437685,0.076992, + 2.888602,2.437685,0.076992, 2.870524,2.42125,0.073344, 2.836672,2.420519,0.041256, + 2.8242,2.42025,0, 2.8376,2.436,0, 2.851331,2.436454,0.043308, + 2.851331,2.436454,0.043308, 2.836672,2.420519,0.041256, 2.8242,2.42025,0, + 3.1888,2.4,0.0405, 3.257153,2.429599,0.041256, 3.269625,2.429869,0, + 3.269625,2.429869,0, 3.2,2.4,0, 3.1888,2.4,0.0405, + 3.1584,2.4,0.072, 3.223301,2.428868,0.073344, 3.257153,2.429599,0.041256, + 3.257153,2.429599,0.041256, 3.1888,2.4,0.0405, 3.1584,2.4,0.072, + 3.1136,2.4,0.0945, 3.173413,2.427791,0.096264, 3.223301,2.428868,0.073344, + 3.223301,2.428868,0.073344, 3.1584,2.4,0.072, 3.1136,2.4,0.0945, + 3.0592,2.4,0.108, 3.112835,2.426483,0.110016, 3.173413,2.427791,0.096264, + 3.173413,2.427791,0.096264, 3.1136,2.4,0.0945, 3.0592,2.4,0.108, + 3,2.4,0.1125, 3.046912,2.425059,0.1146, 3.112835,2.426483,0.110016, + 3.112835,2.426483,0.110016, 3.0592,2.4,0.108, 3,2.4,0.1125, + 2.9408,2.4,0.108, 2.98099,2.423636,0.110016, 3.046912,2.425059,0.1146, + 3.046912,2.425059,0.1146, 3,2.4,0.1125, 2.9408,2.4,0.108, + 2.8864,2.4,0.0945, 2.920412,2.422328,0.096264, 2.98099,2.423636,0.110016, + 2.98099,2.423636,0.110016, 2.9408,2.4,0.108, 2.8864,2.4,0.0945, + 2.8416,2.4,0.072, 2.870524,2.42125,0.073344, 2.920412,2.422328,0.096264, + 2.920412,2.422328,0.096264, 2.8864,2.4,0.0945, 2.8416,2.4,0.072, + 2.8112,2.4,0.0405, 2.836672,2.420519,0.041256, 2.870524,2.42125,0.073344, + 2.870524,2.42125,0.073344, 2.8416,2.4,0.072, 2.8112,2.4,0.0405, + 2.8,2.4,0, 2.8242,2.42025,0, 2.836672,2.420519,0.041256, + 2.836672,2.420519,0.041256, 2.8112,2.4,0.0405, 2.8,2.4,0, + 0,3.15,0, 0.1946,3.14145,0, 0.192107,3.14145,-0.032048, + 0,3.15,0, 0.192107,3.14145,-0.032048, 0.18487,3.14145,-0.062272, + 0,3.15,0, 0.18487,3.14145,-0.062272, 0.173255,3.14145,-0.090306, + 0,3.15,0, 0.173255,3.14145,-0.090306, 0.157626,3.14145,-0.115787, + 0,3.15,0, 0.157626,3.14145,-0.115787, 0.138348,3.14145,-0.138348, + 0,3.15,0, 0.138348,3.14145,-0.138348, 0.115787,3.14145,-0.157626, + 0,3.15,0, 0.115787,3.14145,-0.157626, 0.090306,3.14145,-0.173255, + 0,3.15,0, 0.090306,3.14145,-0.173255, 0.062272,3.14145,-0.18487, + 0,3.15,0, 0.062272,3.14145,-0.18487, 0.032048,3.14145,-0.192107, + 0,3.15,0, 0.032048,3.14145,-0.192107, 0,3.14145,-0.1946, + 0.304843,3.1176,-0.050855, 0.192107,3.14145,-0.032048, 0.1946,3.14145,0, + 0.1946,3.14145,0, 0.3088,3.1176,0, 0.304843,3.1176,-0.050855, + 0.29336,3.1176,-0.098814, 0.18487,3.14145,-0.062272, 0.192107,3.14145,-0.032048, + 0.192107,3.14145,-0.032048, 0.304843,3.1176,-0.050855, 0.29336,3.1176,-0.098814, + 0.274928,3.1176,-0.143301, 0.173255,3.14145,-0.090306, 0.18487,3.14145,-0.062272, + 0.18487,3.14145,-0.062272, 0.29336,3.1176,-0.098814, 0.274928,3.1176,-0.143301, + 0.250127,3.1176,-0.183734, 0.157626,3.14145,-0.115787, 0.173255,3.14145,-0.090306, + 0.173255,3.14145,-0.090306, 0.274928,3.1176,-0.143301, 0.250127,3.1176,-0.183734, + 0.219536,3.1176,-0.219536, 0.138348,3.14145,-0.138348, 0.157626,3.14145,-0.115787, + 0.157626,3.14145,-0.115787, 0.250127,3.1176,-0.183734, 0.219536,3.1176,-0.219536, + 0.183734,3.1176,-0.250127, 0.115787,3.14145,-0.157626, 0.138348,3.14145,-0.138348, + 0.138348,3.14145,-0.138348, 0.219536,3.1176,-0.219536, 0.183734,3.1176,-0.250127, + 0.143301,3.1176,-0.274928, 0.090306,3.14145,-0.173255, 0.115787,3.14145,-0.157626, + 0.115787,3.14145,-0.157626, 0.183734,3.1176,-0.250127, 0.143301,3.1176,-0.274928, + 0.098814,3.1176,-0.29336, 0.062272,3.14145,-0.18487, 0.090306,3.14145,-0.173255, + 0.090306,3.14145,-0.173255, 0.143301,3.1176,-0.274928, 0.098814,3.1176,-0.29336, + 0.050855,3.1176,-0.304843, 0.032048,3.14145,-0.192107, 0.062272,3.14145,-0.18487, + 0.062272,3.14145,-0.18487, 0.098814,3.1176,-0.29336, 0.050855,3.1176,-0.304843, + 0,3.1176,-0.3088, 0,3.14145,-0.1946, 0.032048,3.14145,-0.192107, + 0.032048,3.14145,-0.192107, 0.050855,3.1176,-0.304843, 0,3.1176,-0.3088, + 0.35361,3.08115,-0.058988, 0.304843,3.1176,-0.050855, 0.3088,3.1176,0, + 0.3088,3.1176,0, 0.3582,3.08115,0, 0.35361,3.08115,-0.058988, + 0.340289,3.08115,-0.114619, 0.29336,3.1176,-0.098814, 0.304843,3.1176,-0.050855, + 0.304843,3.1176,-0.050855, 0.35361,3.08115,-0.058988, 0.340289,3.08115,-0.114619, + 0.318907,3.08115,-0.166221, 0.274928,3.1176,-0.143301, 0.29336,3.1176,-0.098814, + 0.29336,3.1176,-0.098814, 0.340289,3.08115,-0.114619, 0.318907,3.08115,-0.166221, + 0.290138,3.08115,-0.213123, 0.250127,3.1176,-0.183734, 0.274928,3.1176,-0.143301, + 0.274928,3.1176,-0.143301, 0.318907,3.08115,-0.166221, 0.290138,3.08115,-0.213123, + 0.254653,3.08115,-0.254653, 0.219536,3.1176,-0.219536, 0.250127,3.1176,-0.183734, + 0.250127,3.1176,-0.183734, 0.290138,3.08115,-0.213123, 0.254653,3.08115,-0.254653, + 0.213123,3.08115,-0.290138, 0.183734,3.1176,-0.250127, 0.219536,3.1176,-0.219536, + 0.219536,3.1176,-0.219536, 0.254653,3.08115,-0.254653, 0.213123,3.08115,-0.290138, + 0.166221,3.08115,-0.318907, 0.143301,3.1176,-0.274928, 0.183734,3.1176,-0.250127, + 0.183734,3.1176,-0.250127, 0.213123,3.08115,-0.290138, 0.166221,3.08115,-0.318907, + 0.114619,3.08115,-0.340289, 0.098814,3.1176,-0.29336, 0.143301,3.1176,-0.274928, + 0.143301,3.1176,-0.274928, 0.166221,3.08115,-0.318907, 0.114619,3.08115,-0.340289, + 0.058988,3.08115,-0.35361, 0.050855,3.1176,-0.304843, 0.098814,3.1176,-0.29336, + 0.098814,3.1176,-0.29336, 0.114619,3.08115,-0.340289, 0.058988,3.08115,-0.35361, + 0,3.08115,-0.3582, 0,3.1176,-0.3088, 0.050855,3.1176,-0.304843, + 0.050855,3.1176,-0.304843, 0.058988,3.08115,-0.35361, 0,3.08115,-0.3582, + 0.353807,3.0348,-0.059016, 0.35361,3.08115,-0.058988, 0.3582,3.08115,0, + 0.3582,3.08115,0, 0.3584,3.0348,0, 0.353807,3.0348,-0.059016, + 0.340477,3.0348,-0.114676, 0.340289,3.08115,-0.114619, 0.35361,3.08115,-0.058988, + 0.35361,3.08115,-0.058988, 0.353807,3.0348,-0.059016, 0.340477,3.0348,-0.114676, + 0.319082,3.0348,-0.166306, 0.318907,3.08115,-0.166221, 0.340289,3.08115,-0.114619, + 0.340289,3.08115,-0.114619, 0.340477,3.0348,-0.114676, 0.319082,3.0348,-0.166306, + 0.290295,3.0348,-0.213234, 0.290138,3.08115,-0.213123, 0.318907,3.08115,-0.166221, + 0.318907,3.08115,-0.166221, 0.319082,3.0348,-0.166306, 0.290295,3.0348,-0.213234, + 0.254788,3.0348,-0.254788, 0.254653,3.08115,-0.254653, 0.290138,3.08115,-0.213123, + 0.290138,3.08115,-0.213123, 0.290295,3.0348,-0.213234, 0.254788,3.0348,-0.254788, + 0.213234,3.0348,-0.290295, 0.213123,3.08115,-0.290138, 0.254653,3.08115,-0.254653, + 0.254653,3.08115,-0.254653, 0.254788,3.0348,-0.254788, 0.213234,3.0348,-0.290295, + 0.166306,3.0348,-0.319082, 0.166221,3.08115,-0.318907, 0.213123,3.08115,-0.290138, + 0.213123,3.08115,-0.290138, 0.213234,3.0348,-0.290295, 0.166306,3.0348,-0.319082, + 0.114676,3.0348,-0.340477, 0.114619,3.08115,-0.340289, 0.166221,3.08115,-0.318907, + 0.166221,3.08115,-0.318907, 0.166306,3.0348,-0.319082, 0.114676,3.0348,-0.340477, + 0.059016,3.0348,-0.353807, 0.058988,3.08115,-0.35361, 0.114619,3.08115,-0.340289, + 0.114619,3.08115,-0.340289, 0.114676,3.0348,-0.340477, 0.059016,3.0348,-0.353807, + 0,3.0348,-0.3584, 0,3.08115,-0.3582, 0.058988,3.08115,-0.35361, + 0.058988,3.08115,-0.35361, 0.059016,3.0348,-0.353807, 0,3.0348,-0.3584, + 0.320834,2.98125,-0.053508, 0.353807,3.0348,-0.059016, 0.3584,3.0348,0, + 0.3584,3.0348,0, 0.325,2.98125,0, 0.320834,2.98125,-0.053508, + 0.308744,2.98125,-0.103976, 0.340477,3.0348,-0.114676, 0.353807,3.0348,-0.059016, + 0.353807,3.0348,-0.059016, 0.320834,2.98125,-0.053508, 0.308744,2.98125,-0.103976, + 0.28934,2.98125,-0.150793, 0.319082,3.0348,-0.166306, 0.340477,3.0348,-0.114676, + 0.340477,3.0348,-0.114676, 0.308744,2.98125,-0.103976, 0.28934,2.98125,-0.150793, + 0.263232,2.98125,-0.193348, 0.290295,3.0348,-0.213234, 0.319082,3.0348,-0.166306, + 0.319082,3.0348,-0.166306, 0.28934,2.98125,-0.150793, 0.263232,2.98125,-0.193348, + 0.231031,2.98125,-0.231031, 0.254788,3.0348,-0.254788, 0.290295,3.0348,-0.213234, + 0.290295,3.0348,-0.213234, 0.263232,2.98125,-0.193348, 0.231031,2.98125,-0.231031, + 0.193348,2.98125,-0.263232, 0.213234,3.0348,-0.290295, 0.254788,3.0348,-0.254788, + 0.254788,3.0348,-0.254788, 0.231031,2.98125,-0.231031, 0.193348,2.98125,-0.263232, + 0.150793,2.98125,-0.28934, 0.166306,3.0348,-0.319082, 0.213234,3.0348,-0.290295, + 0.213234,3.0348,-0.290295, 0.193348,2.98125,-0.263232, 0.150793,2.98125,-0.28934, + 0.103976,2.98125,-0.308744, 0.114676,3.0348,-0.340477, 0.166306,3.0348,-0.319082, + 0.166306,3.0348,-0.319082, 0.150793,2.98125,-0.28934, 0.103976,2.98125,-0.308744, + 0.053508,2.98125,-0.320834, 0.059016,3.0348,-0.353807, 0.114676,3.0348,-0.340477, + 0.114676,3.0348,-0.340477, 0.103976,2.98125,-0.308744, 0.053508,2.98125,-0.320834, + 0,2.98125,-0.325, 0,3.0348,-0.3584, 0.059016,3.0348,-0.353807, + 0.059016,3.0348,-0.353807, 0.053508,2.98125,-0.320834, 0,2.98125,-0.325, + 0.270092,2.9232,-0.045032, 0.320834,2.98125,-0.053508, 0.325,2.98125,0, + 0.325,2.98125,0, 0.2736,2.9232,0, 0.270092,2.9232,-0.045032, + 0.25991,2.9232,-0.087511, 0.308744,2.98125,-0.103976, 0.320834,2.98125,-0.053508, + 0.320834,2.98125,-0.053508, 0.270092,2.9232,-0.045032, 0.25991,2.9232,-0.087511, + 0.243569,2.9232,-0.12692, 0.28934,2.98125,-0.150793, 0.308744,2.98125,-0.103976, + 0.308744,2.98125,-0.103976, 0.25991,2.9232,-0.087511, 0.243569,2.9232,-0.12692, + 0.221585,2.9232,-0.162745, 0.263232,2.98125,-0.193348, 0.28934,2.98125,-0.150793, + 0.28934,2.98125,-0.150793, 0.243569,2.9232,-0.12692, 0.221585,2.9232,-0.162745, + 0.194472,2.9232,-0.194472, 0.231031,2.98125,-0.231031, 0.263232,2.98125,-0.193348, + 0.263232,2.98125,-0.193348, 0.221585,2.9232,-0.162745, 0.194472,2.9232,-0.194472, + 0.162745,2.9232,-0.221585, 0.193348,2.98125,-0.263232, 0.231031,2.98125,-0.231031, + 0.231031,2.98125,-0.231031, 0.194472,2.9232,-0.194472, 0.162745,2.9232,-0.221585, + 0.12692,2.9232,-0.243569, 0.150793,2.98125,-0.28934, 0.193348,2.98125,-0.263232, + 0.193348,2.98125,-0.263232, 0.162745,2.9232,-0.221585, 0.12692,2.9232,-0.243569, + 0.087511,2.9232,-0.25991, 0.103976,2.98125,-0.308744, 0.150793,2.98125,-0.28934, + 0.150793,2.98125,-0.28934, 0.12692,2.9232,-0.243569, 0.087511,2.9232,-0.25991, + 0.045032,2.9232,-0.270092, 0.053508,2.98125,-0.320834, 0.103976,2.98125,-0.308744, + 0.103976,2.98125,-0.308744, 0.087511,2.9232,-0.25991, 0.045032,2.9232,-0.270092, + 0,2.9232,-0.2736, 0,2.98125,-0.325, 0.053508,2.98125,-0.320834, + 0.053508,2.98125,-0.320834, 0.045032,2.9232,-0.270092, 0,2.9232,-0.2736, + 0.216979,2.86335,-0.036157, 0.270092,2.9232,-0.045032, 0.2736,2.9232,0, + 0.2736,2.9232,0, 0.2198,2.86335,0, 0.216979,2.86335,-0.036157, + 0.208794,2.86335,-0.07027, 0.25991,2.9232,-0.087511, 0.270092,2.9232,-0.045032, + 0.270092,2.9232,-0.045032, 0.216979,2.86335,-0.036157, 0.208794,2.86335,-0.07027, + 0.195658,2.86335,-0.101925, 0.243569,2.9232,-0.12692, 0.25991,2.9232,-0.087511, + 0.25991,2.9232,-0.087511, 0.208794,2.86335,-0.07027, 0.195658,2.86335,-0.101925, + 0.177989,2.86335,-0.130707, 0.221585,2.9232,-0.162745, 0.243569,2.9232,-0.12692, + 0.243569,2.9232,-0.12692, 0.195658,2.86335,-0.101925, 0.177989,2.86335,-0.130707, + 0.1562,2.86335,-0.1562, 0.194472,2.9232,-0.194472, 0.221585,2.9232,-0.162745, + 0.221585,2.9232,-0.162745, 0.177989,2.86335,-0.130707, 0.1562,2.86335,-0.1562, + 0.130707,2.86335,-0.177989, 0.162745,2.9232,-0.221585, 0.194472,2.9232,-0.194472, + 0.194472,2.9232,-0.194472, 0.1562,2.86335,-0.1562, 0.130707,2.86335,-0.177989, + 0.101925,2.86335,-0.195658, 0.12692,2.9232,-0.243569, 0.162745,2.9232,-0.221585, + 0.162745,2.9232,-0.221585, 0.130707,2.86335,-0.177989, 0.101925,2.86335,-0.195658, + 0.07027,2.86335,-0.208794, 0.087511,2.9232,-0.25991, 0.12692,2.9232,-0.243569, + 0.12692,2.9232,-0.243569, 0.101925,2.86335,-0.195658, 0.07027,2.86335,-0.208794, + 0.036157,2.86335,-0.216979, 0.045032,2.9232,-0.270092, 0.087511,2.9232,-0.25991, + 0.087511,2.9232,-0.25991, 0.07027,2.86335,-0.208794, 0.036157,2.86335,-0.216979, + 0,2.86335,-0.2198, 0,2.9232,-0.2736, 0.045032,2.9232,-0.270092, + 0.045032,2.9232,-0.270092, 0.036157,2.86335,-0.216979, 0,2.86335,-0.2198, + 0.176897,2.8044,-0.02945, 0.216979,2.86335,-0.036157, 0.2198,2.86335,0, + 0.2198,2.86335,0, 0.1792,2.8044,0, 0.176897,2.8044,-0.02945, + 0.170215,2.8044,-0.057246, 0.208794,2.86335,-0.07027, 0.216979,2.86335,-0.036157, + 0.216979,2.86335,-0.036157, 0.176897,2.8044,-0.02945, 0.170215,2.8044,-0.057246, + 0.159496,2.8044,-0.083047, 0.195658,2.86335,-0.101925, 0.208794,2.86335,-0.07027, + 0.208794,2.86335,-0.07027, 0.170215,2.8044,-0.057246, 0.159496,2.8044,-0.083047, + 0.145078,2.8044,-0.106513, 0.177989,2.86335,-0.130707, 0.195658,2.86335,-0.101925, + 0.195658,2.86335,-0.101925, 0.159496,2.8044,-0.083047, 0.145078,2.8044,-0.106513, + 0.127304,2.8044,-0.127304, 0.1562,2.86335,-0.1562, 0.177989,2.86335,-0.130707, + 0.177989,2.86335,-0.130707, 0.145078,2.8044,-0.106513, 0.127304,2.8044,-0.127304, + 0.106513,2.8044,-0.145078, 0.130707,2.86335,-0.177989, 0.1562,2.86335,-0.1562, + 0.1562,2.86335,-0.1562, 0.127304,2.8044,-0.127304, 0.106513,2.8044,-0.145078, + 0.083047,2.8044,-0.159496, 0.101925,2.86335,-0.195658, 0.130707,2.86335,-0.177989, + 0.130707,2.86335,-0.177989, 0.106513,2.8044,-0.145078, 0.083047,2.8044,-0.159496, + 0.057246,2.8044,-0.170215, 0.07027,2.86335,-0.208794, 0.101925,2.86335,-0.195658, + 0.101925,2.86335,-0.195658, 0.083047,2.8044,-0.159496, 0.057246,2.8044,-0.170215, + 0.02945,2.8044,-0.176897, 0.036157,2.86335,-0.216979, 0.07027,2.86335,-0.208794, + 0.07027,2.86335,-0.208794, 0.057246,2.8044,-0.170215, 0.02945,2.8044,-0.176897, + 0,2.8044,-0.1792, 0,2.86335,-0.2198, 0.036157,2.86335,-0.216979, + 0.036157,2.86335,-0.216979, 0.02945,2.8044,-0.176897, 0,2.8044,-0.1792, + 0.165245,2.74905,-0.02748, 0.176897,2.8044,-0.02945, 0.1792,2.8044,0, + 0.1792,2.8044,0, 0.1674,2.74905,0, 0.165245,2.74905,-0.02748, + 0.158995,2.74905,-0.053428, 0.170215,2.8044,-0.057246, 0.176897,2.8044,-0.02945, + 0.176897,2.8044,-0.02945, 0.165245,2.74905,-0.02748, 0.158995,2.74905,-0.053428, + 0.148969,2.74905,-0.077523, 0.159496,2.8044,-0.083047, 0.170215,2.8044,-0.057246, + 0.170215,2.8044,-0.057246, 0.158995,2.74905,-0.053428, 0.148969,2.74905,-0.077523, + 0.135489,2.74905,-0.099446, 0.145078,2.8044,-0.106513, 0.159496,2.8044,-0.083047, + 0.159496,2.8044,-0.083047, 0.148969,2.74905,-0.077523, 0.135489,2.74905,-0.099446, + 0.118874,2.74905,-0.118874, 0.127304,2.8044,-0.127304, 0.145078,2.8044,-0.106513, + 0.145078,2.8044,-0.106513, 0.135489,2.74905,-0.099446, 0.118874,2.74905,-0.118874, + 0.099446,2.74905,-0.135489, 0.106513,2.8044,-0.145078, 0.127304,2.8044,-0.127304, + 0.127304,2.8044,-0.127304, 0.118874,2.74905,-0.118874, 0.099446,2.74905,-0.135489, + 0.077523,2.74905,-0.148969, 0.083047,2.8044,-0.159496, 0.106513,2.8044,-0.145078, + 0.106513,2.8044,-0.145078, 0.099446,2.74905,-0.135489, 0.077523,2.74905,-0.148969, + 0.053428,2.74905,-0.158995, 0.057246,2.8044,-0.170215, 0.083047,2.8044,-0.159496, + 0.083047,2.8044,-0.159496, 0.077523,2.74905,-0.148969, 0.053428,2.74905,-0.158995, + 0.02748,2.74905,-0.165245, 0.02945,2.8044,-0.176897, 0.057246,2.8044,-0.170215, + 0.057246,2.8044,-0.170215, 0.053428,2.74905,-0.158995, 0.02748,2.74905,-0.165245, + 0,2.74905,-0.1674, 0,2.8044,-0.1792, 0.02945,2.8044,-0.176897, + 0.02945,2.8044,-0.176897, 0.02748,2.74905,-0.165245, 0,2.74905,-0.1674, + 0.197424,2.7,-0.032816, 0.165245,2.74905,-0.02748, 0.1674,2.74905,0, + 0.1674,2.74905,0, 0.2,2.7,0, 0.197424,2.7,-0.032816, + 0.189952,2.7,-0.063808, 0.158995,2.74905,-0.053428, 0.165245,2.74905,-0.02748, + 0.165245,2.74905,-0.02748, 0.197424,2.7,-0.032816, 0.189952,2.7,-0.063808, + 0.177968,2.7,-0.092592, 0.148969,2.74905,-0.077523, 0.158995,2.74905,-0.053428, + 0.158995,2.74905,-0.053428, 0.189952,2.7,-0.063808, 0.177968,2.7,-0.092592, + 0.161856,2.7,-0.118784, 0.135489,2.74905,-0.099446, 0.148969,2.74905,-0.077523, + 0.148969,2.74905,-0.077523, 0.177968,2.7,-0.092592, 0.161856,2.7,-0.118784, + 0.142,2.7,-0.142, 0.118874,2.74905,-0.118874, 0.135489,2.74905,-0.099446, + 0.135489,2.74905,-0.099446, 0.161856,2.7,-0.118784, 0.142,2.7,-0.142, + 0.118784,2.7,-0.161856, 0.099446,2.74905,-0.135489, 0.118874,2.74905,-0.118874, + 0.118874,2.74905,-0.118874, 0.142,2.7,-0.142, 0.118784,2.7,-0.161856, + 0.092592,2.7,-0.177968, 0.077523,2.74905,-0.148969, 0.099446,2.74905,-0.135489, + 0.099446,2.74905,-0.135489, 0.118784,2.7,-0.161856, 0.092592,2.7,-0.177968, + 0.063808,2.7,-0.189952, 0.053428,2.74905,-0.158995, 0.077523,2.74905,-0.148969, + 0.077523,2.74905,-0.148969, 0.092592,2.7,-0.177968, 0.063808,2.7,-0.189952, + 0.032816,2.7,-0.197424, 0.02748,2.74905,-0.165245, 0.053428,2.74905,-0.158995, + 0.053428,2.74905,-0.158995, 0.063808,2.7,-0.189952, 0.032816,2.7,-0.197424, + 0,2.7,-0.2, 0,2.74905,-0.1674, 0.02748,2.74905,-0.165245, + 0.02748,2.74905,-0.165245, 0.032816,2.7,-0.197424, 0,2.7,-0.2, + 0,3.15,0, 0,3.14145,-0.1946, -0.032048,3.14145,-0.192107, + 0,3.15,0, -0.032048,3.14145,-0.192107, -0.062272,3.14145,-0.18487, + 0,3.15,0, -0.062272,3.14145,-0.18487, -0.090306,3.14145,-0.173255, + 0,3.15,0, -0.090306,3.14145,-0.173255, -0.115787,3.14145,-0.157626, + 0,3.15,0, -0.115787,3.14145,-0.157626, -0.138348,3.14145,-0.138348, + 0,3.15,0, -0.138348,3.14145,-0.138348, -0.157626,3.14145,-0.115787, + 0,3.15,0, -0.157626,3.14145,-0.115787, -0.173255,3.14145,-0.090306, + 0,3.15,0, -0.173255,3.14145,-0.090306, -0.18487,3.14145,-0.062272, + 0,3.15,0, -0.18487,3.14145,-0.062272, -0.192107,3.14145,-0.032048, + 0,3.15,0, -0.192107,3.14145,-0.032048, -0.1946,3.14145,0, + -0.050855,3.1176,-0.304843, -0.032048,3.14145,-0.192107, 0,3.14145,-0.1946, + 0,3.14145,-0.1946, 0,3.1176,-0.3088, -0.050855,3.1176,-0.304843, + -0.098814,3.1176,-0.29336, -0.062272,3.14145,-0.18487, -0.032048,3.14145,-0.192107, + -0.032048,3.14145,-0.192107, -0.050855,3.1176,-0.304843, -0.098814,3.1176,-0.29336, + -0.143301,3.1176,-0.274928, -0.090306,3.14145,-0.173255, -0.062272,3.14145,-0.18487, + -0.062272,3.14145,-0.18487, -0.098814,3.1176,-0.29336, -0.143301,3.1176,-0.274928, + -0.183734,3.1176,-0.250127, -0.115787,3.14145,-0.157626, -0.090306,3.14145,-0.173255, + -0.090306,3.14145,-0.173255, -0.143301,3.1176,-0.274928, -0.183734,3.1176,-0.250127, + -0.219536,3.1176,-0.219536, -0.138348,3.14145,-0.138348, -0.115787,3.14145,-0.157626, + -0.115787,3.14145,-0.157626, -0.183734,3.1176,-0.250127, -0.219536,3.1176,-0.219536, + -0.250127,3.1176,-0.183734, -0.157626,3.14145,-0.115787, -0.138348,3.14145,-0.138348, + -0.138348,3.14145,-0.138348, -0.219536,3.1176,-0.219536, -0.250127,3.1176,-0.183734, + -0.274928,3.1176,-0.143301, -0.173255,3.14145,-0.090306, -0.157626,3.14145,-0.115787, + -0.157626,3.14145,-0.115787, -0.250127,3.1176,-0.183734, -0.274928,3.1176,-0.143301, + -0.29336,3.1176,-0.098814, -0.18487,3.14145,-0.062272, -0.173255,3.14145,-0.090306, + -0.173255,3.14145,-0.090306, -0.274928,3.1176,-0.143301, -0.29336,3.1176,-0.098814, + -0.304843,3.1176,-0.050855, -0.192107,3.14145,-0.032048, -0.18487,3.14145,-0.062272, + -0.18487,3.14145,-0.062272, -0.29336,3.1176,-0.098814, -0.304843,3.1176,-0.050855, + -0.3088,3.1176,0, -0.1946,3.14145,0, -0.192107,3.14145,-0.032048, + -0.192107,3.14145,-0.032048, -0.304843,3.1176,-0.050855, -0.3088,3.1176,0, + -0.058988,3.08115,-0.35361, -0.050855,3.1176,-0.304843, 0,3.1176,-0.3088, + 0,3.1176,-0.3088, 0,3.08115,-0.3582, -0.058988,3.08115,-0.35361, + -0.114619,3.08115,-0.340289, -0.098814,3.1176,-0.29336, -0.050855,3.1176,-0.304843, + -0.050855,3.1176,-0.304843, -0.058988,3.08115,-0.35361, -0.114619,3.08115,-0.340289, + -0.166221,3.08115,-0.318907, -0.143301,3.1176,-0.274928, -0.098814,3.1176,-0.29336, + -0.098814,3.1176,-0.29336, -0.114619,3.08115,-0.340289, -0.166221,3.08115,-0.318907, + -0.213123,3.08115,-0.290138, -0.183734,3.1176,-0.250127, -0.143301,3.1176,-0.274928, + -0.143301,3.1176,-0.274928, -0.166221,3.08115,-0.318907, -0.213123,3.08115,-0.290138, + -0.254653,3.08115,-0.254653, -0.219536,3.1176,-0.219536, -0.183734,3.1176,-0.250127, + -0.183734,3.1176,-0.250127, -0.213123,3.08115,-0.290138, -0.254653,3.08115,-0.254653, + -0.290138,3.08115,-0.213123, -0.250127,3.1176,-0.183734, -0.219536,3.1176,-0.219536, + -0.219536,3.1176,-0.219536, -0.254653,3.08115,-0.254653, -0.290138,3.08115,-0.213123, + -0.318907,3.08115,-0.166221, -0.274928,3.1176,-0.143301, -0.250127,3.1176,-0.183734, + -0.250127,3.1176,-0.183734, -0.290138,3.08115,-0.213123, -0.318907,3.08115,-0.166221, + -0.340289,3.08115,-0.114619, -0.29336,3.1176,-0.098814, -0.274928,3.1176,-0.143301, + -0.274928,3.1176,-0.143301, -0.318907,3.08115,-0.166221, -0.340289,3.08115,-0.114619, + -0.35361,3.08115,-0.058988, -0.304843,3.1176,-0.050855, -0.29336,3.1176,-0.098814, + -0.29336,3.1176,-0.098814, -0.340289,3.08115,-0.114619, -0.35361,3.08115,-0.058988, + -0.3582,3.08115,0, -0.3088,3.1176,0, -0.304843,3.1176,-0.050855, + -0.304843,3.1176,-0.050855, -0.35361,3.08115,-0.058988, -0.3582,3.08115,0, + -0.059016,3.0348,-0.353807, -0.058988,3.08115,-0.35361, 0,3.08115,-0.3582, + 0,3.08115,-0.3582, 0,3.0348,-0.3584, -0.059016,3.0348,-0.353807, + -0.114676,3.0348,-0.340477, -0.114619,3.08115,-0.340289, -0.058988,3.08115,-0.35361, + -0.058988,3.08115,-0.35361, -0.059016,3.0348,-0.353807, -0.114676,3.0348,-0.340477, + -0.166306,3.0348,-0.319082, -0.166221,3.08115,-0.318907, -0.114619,3.08115,-0.340289, + -0.114619,3.08115,-0.340289, -0.114676,3.0348,-0.340477, -0.166306,3.0348,-0.319082, + -0.213234,3.0348,-0.290295, -0.213123,3.08115,-0.290138, -0.166221,3.08115,-0.318907, + -0.166221,3.08115,-0.318907, -0.166306,3.0348,-0.319082, -0.213234,3.0348,-0.290295, + -0.254788,3.0348,-0.254788, -0.254653,3.08115,-0.254653, -0.213123,3.08115,-0.290138, + -0.213123,3.08115,-0.290138, -0.213234,3.0348,-0.290295, -0.254788,3.0348,-0.254788, + -0.290295,3.0348,-0.213234, -0.290138,3.08115,-0.213123, -0.254653,3.08115,-0.254653, + -0.254653,3.08115,-0.254653, -0.254788,3.0348,-0.254788, -0.290295,3.0348,-0.213234, + -0.319082,3.0348,-0.166306, -0.318907,3.08115,-0.166221, -0.290138,3.08115,-0.213123, + -0.290138,3.08115,-0.213123, -0.290295,3.0348,-0.213234, -0.319082,3.0348,-0.166306, + -0.340477,3.0348,-0.114676, -0.340289,3.08115,-0.114619, -0.318907,3.08115,-0.166221, + -0.318907,3.08115,-0.166221, -0.319082,3.0348,-0.166306, -0.340477,3.0348,-0.114676, + -0.353807,3.0348,-0.059016, -0.35361,3.08115,-0.058988, -0.340289,3.08115,-0.114619, + -0.340289,3.08115,-0.114619, -0.340477,3.0348,-0.114676, -0.353807,3.0348,-0.059016, + -0.3584,3.0348,0, -0.3582,3.08115,0, -0.35361,3.08115,-0.058988, + -0.35361,3.08115,-0.058988, -0.353807,3.0348,-0.059016, -0.3584,3.0348,0, + -0.053508,2.98125,-0.320834, -0.059016,3.0348,-0.353807, 0,3.0348,-0.3584, + 0,3.0348,-0.3584, 0,2.98125,-0.325, -0.053508,2.98125,-0.320834, + -0.103976,2.98125,-0.308744, -0.114676,3.0348,-0.340477, -0.059016,3.0348,-0.353807, + -0.059016,3.0348,-0.353807, -0.053508,2.98125,-0.320834, -0.103976,2.98125,-0.308744, + -0.150793,2.98125,-0.28934, -0.166306,3.0348,-0.319082, -0.114676,3.0348,-0.340477, + -0.114676,3.0348,-0.340477, -0.103976,2.98125,-0.308744, -0.150793,2.98125,-0.28934, + -0.193348,2.98125,-0.263232, -0.213234,3.0348,-0.290295, -0.166306,3.0348,-0.319082, + -0.166306,3.0348,-0.319082, -0.150793,2.98125,-0.28934, -0.193348,2.98125,-0.263232, + -0.231031,2.98125,-0.231031, -0.254788,3.0348,-0.254788, -0.213234,3.0348,-0.290295, + -0.213234,3.0348,-0.290295, -0.193348,2.98125,-0.263232, -0.231031,2.98125,-0.231031, + -0.263232,2.98125,-0.193348, -0.290295,3.0348,-0.213234, -0.254788,3.0348,-0.254788, + -0.254788,3.0348,-0.254788, -0.231031,2.98125,-0.231031, -0.263232,2.98125,-0.193348, + -0.28934,2.98125,-0.150793, -0.319082,3.0348,-0.166306, -0.290295,3.0348,-0.213234, + -0.290295,3.0348,-0.213234, -0.263232,2.98125,-0.193348, -0.28934,2.98125,-0.150793, + -0.308744,2.98125,-0.103976, -0.340477,3.0348,-0.114676, -0.319082,3.0348,-0.166306, + -0.319082,3.0348,-0.166306, -0.28934,2.98125,-0.150793, -0.308744,2.98125,-0.103976, + -0.320834,2.98125,-0.053508, -0.353807,3.0348,-0.059016, -0.340477,3.0348,-0.114676, + -0.340477,3.0348,-0.114676, -0.308744,2.98125,-0.103976, -0.320834,2.98125,-0.053508, + -0.325,2.98125,0, -0.3584,3.0348,0, -0.353807,3.0348,-0.059016, + -0.353807,3.0348,-0.059016, -0.320834,2.98125,-0.053508, -0.325,2.98125,0, + -0.045032,2.9232,-0.270092, -0.053508,2.98125,-0.320834, 0,2.98125,-0.325, + 0,2.98125,-0.325, 0,2.9232,-0.2736, -0.045032,2.9232,-0.270092, + -0.087511,2.9232,-0.25991, -0.103976,2.98125,-0.308744, -0.053508,2.98125,-0.320834, + -0.053508,2.98125,-0.320834, -0.045032,2.9232,-0.270092, -0.087511,2.9232,-0.25991, + -0.12692,2.9232,-0.243569, -0.150793,2.98125,-0.28934, -0.103976,2.98125,-0.308744, + -0.103976,2.98125,-0.308744, -0.087511,2.9232,-0.25991, -0.12692,2.9232,-0.243569, + -0.162745,2.9232,-0.221585, -0.193348,2.98125,-0.263232, -0.150793,2.98125,-0.28934, + -0.150793,2.98125,-0.28934, -0.12692,2.9232,-0.243569, -0.162745,2.9232,-0.221585, + -0.194472,2.9232,-0.194472, -0.231031,2.98125,-0.231031, -0.193348,2.98125,-0.263232, + -0.193348,2.98125,-0.263232, -0.162745,2.9232,-0.221585, -0.194472,2.9232,-0.194472, + -0.221585,2.9232,-0.162745, -0.263232,2.98125,-0.193348, -0.231031,2.98125,-0.231031, + -0.231031,2.98125,-0.231031, -0.194472,2.9232,-0.194472, -0.221585,2.9232,-0.162745, + -0.243569,2.9232,-0.12692, -0.28934,2.98125,-0.150793, -0.263232,2.98125,-0.193348, + -0.263232,2.98125,-0.193348, -0.221585,2.9232,-0.162745, -0.243569,2.9232,-0.12692, + -0.25991,2.9232,-0.087511, -0.308744,2.98125,-0.103976, -0.28934,2.98125,-0.150793, + -0.28934,2.98125,-0.150793, -0.243569,2.9232,-0.12692, -0.25991,2.9232,-0.087511, + -0.270092,2.9232,-0.045032, -0.320834,2.98125,-0.053508, -0.308744,2.98125,-0.103976, + -0.308744,2.98125,-0.103976, -0.25991,2.9232,-0.087511, -0.270092,2.9232,-0.045032, + -0.2736,2.9232,0, -0.325,2.98125,0, -0.320834,2.98125,-0.053508, + -0.320834,2.98125,-0.053508, -0.270092,2.9232,-0.045032, -0.2736,2.9232,0, + -0.036157,2.86335,-0.216979, -0.045032,2.9232,-0.270092, 0,2.9232,-0.2736, + 0,2.9232,-0.2736, 0,2.86335,-0.2198, -0.036157,2.86335,-0.216979, + -0.07027,2.86335,-0.208794, -0.087511,2.9232,-0.25991, -0.045032,2.9232,-0.270092, + -0.045032,2.9232,-0.270092, -0.036157,2.86335,-0.216979, -0.07027,2.86335,-0.208794, + -0.101925,2.86335,-0.195658, -0.12692,2.9232,-0.243569, -0.087511,2.9232,-0.25991, + -0.087511,2.9232,-0.25991, -0.07027,2.86335,-0.208794, -0.101925,2.86335,-0.195658, + -0.130707,2.86335,-0.177989, -0.162745,2.9232,-0.221585, -0.12692,2.9232,-0.243569, + -0.12692,2.9232,-0.243569, -0.101925,2.86335,-0.195658, -0.130707,2.86335,-0.177989, + -0.1562,2.86335,-0.1562, -0.194472,2.9232,-0.194472, -0.162745,2.9232,-0.221585, + -0.162745,2.9232,-0.221585, -0.130707,2.86335,-0.177989, -0.1562,2.86335,-0.1562, + -0.177989,2.86335,-0.130707, -0.221585,2.9232,-0.162745, -0.194472,2.9232,-0.194472, + -0.194472,2.9232,-0.194472, -0.1562,2.86335,-0.1562, -0.177989,2.86335,-0.130707, + -0.195658,2.86335,-0.101925, -0.243569,2.9232,-0.12692, -0.221585,2.9232,-0.162745, + -0.221585,2.9232,-0.162745, -0.177989,2.86335,-0.130707, -0.195658,2.86335,-0.101925, + -0.208794,2.86335,-0.07027, -0.25991,2.9232,-0.087511, -0.243569,2.9232,-0.12692, + -0.243569,2.9232,-0.12692, -0.195658,2.86335,-0.101925, -0.208794,2.86335,-0.07027, + -0.216979,2.86335,-0.036157, -0.270092,2.9232,-0.045032, -0.25991,2.9232,-0.087511, + -0.25991,2.9232,-0.087511, -0.208794,2.86335,-0.07027, -0.216979,2.86335,-0.036157, + -0.2198,2.86335,0, -0.2736,2.9232,0, -0.270092,2.9232,-0.045032, + -0.270092,2.9232,-0.045032, -0.216979,2.86335,-0.036157, -0.2198,2.86335,0, + -0.02945,2.8044,-0.176897, -0.036157,2.86335,-0.216979, 0,2.86335,-0.2198, + 0,2.86335,-0.2198, 0,2.8044,-0.1792, -0.02945,2.8044,-0.176897, + -0.057246,2.8044,-0.170215, -0.07027,2.86335,-0.208794, -0.036157,2.86335,-0.216979, + -0.036157,2.86335,-0.216979, -0.02945,2.8044,-0.176897, -0.057246,2.8044,-0.170215, + -0.083047,2.8044,-0.159496, -0.101925,2.86335,-0.195658, -0.07027,2.86335,-0.208794, + -0.07027,2.86335,-0.208794, -0.057246,2.8044,-0.170215, -0.083047,2.8044,-0.159496, + -0.106513,2.8044,-0.145078, -0.130707,2.86335,-0.177989, -0.101925,2.86335,-0.195658, + -0.101925,2.86335,-0.195658, -0.083047,2.8044,-0.159496, -0.106513,2.8044,-0.145078, + -0.127304,2.8044,-0.127304, -0.1562,2.86335,-0.1562, -0.130707,2.86335,-0.177989, + -0.130707,2.86335,-0.177989, -0.106513,2.8044,-0.145078, -0.127304,2.8044,-0.127304, + -0.145078,2.8044,-0.106513, -0.177989,2.86335,-0.130707, -0.1562,2.86335,-0.1562, + -0.1562,2.86335,-0.1562, -0.127304,2.8044,-0.127304, -0.145078,2.8044,-0.106513, + -0.159496,2.8044,-0.083047, -0.195658,2.86335,-0.101925, -0.177989,2.86335,-0.130707, + -0.177989,2.86335,-0.130707, -0.145078,2.8044,-0.106513, -0.159496,2.8044,-0.083047, + -0.170215,2.8044,-0.057246, -0.208794,2.86335,-0.07027, -0.195658,2.86335,-0.101925, + -0.195658,2.86335,-0.101925, -0.159496,2.8044,-0.083047, -0.170215,2.8044,-0.057246, + -0.176897,2.8044,-0.02945, -0.216979,2.86335,-0.036157, -0.208794,2.86335,-0.07027, + -0.208794,2.86335,-0.07027, -0.170215,2.8044,-0.057246, -0.176897,2.8044,-0.02945, + -0.1792,2.8044,0, -0.2198,2.86335,0, -0.216979,2.86335,-0.036157, + -0.216979,2.86335,-0.036157, -0.176897,2.8044,-0.02945, -0.1792,2.8044,0, + -0.02748,2.74905,-0.165245, -0.02945,2.8044,-0.176897, 0,2.8044,-0.1792, + 0,2.8044,-0.1792, 0,2.74905,-0.1674, -0.02748,2.74905,-0.165245, + -0.053428,2.74905,-0.158995, -0.057246,2.8044,-0.170215, -0.02945,2.8044,-0.176897, + -0.02945,2.8044,-0.176897, -0.02748,2.74905,-0.165245, -0.053428,2.74905,-0.158995, + -0.077523,2.74905,-0.148969, -0.083047,2.8044,-0.159496, -0.057246,2.8044,-0.170215, + -0.057246,2.8044,-0.170215, -0.053428,2.74905,-0.158995, -0.077523,2.74905,-0.148969, + -0.099446,2.74905,-0.135489, -0.106513,2.8044,-0.145078, -0.083047,2.8044,-0.159496, + -0.083047,2.8044,-0.159496, -0.077523,2.74905,-0.148969, -0.099446,2.74905,-0.135489, + -0.118874,2.74905,-0.118874, -0.127304,2.8044,-0.127304, -0.106513,2.8044,-0.145078, + -0.106513,2.8044,-0.145078, -0.099446,2.74905,-0.135489, -0.118874,2.74905,-0.118874, + -0.135489,2.74905,-0.099446, -0.145078,2.8044,-0.106513, -0.127304,2.8044,-0.127304, + -0.127304,2.8044,-0.127304, -0.118874,2.74905,-0.118874, -0.135489,2.74905,-0.099446, + -0.148969,2.74905,-0.077523, -0.159496,2.8044,-0.083047, -0.145078,2.8044,-0.106513, + -0.145078,2.8044,-0.106513, -0.135489,2.74905,-0.099446, -0.148969,2.74905,-0.077523, + -0.158995,2.74905,-0.053428, -0.170215,2.8044,-0.057246, -0.159496,2.8044,-0.083047, + -0.159496,2.8044,-0.083047, -0.148969,2.74905,-0.077523, -0.158995,2.74905,-0.053428, + -0.165245,2.74905,-0.02748, -0.176897,2.8044,-0.02945, -0.170215,2.8044,-0.057246, + -0.170215,2.8044,-0.057246, -0.158995,2.74905,-0.053428, -0.165245,2.74905,-0.02748, + -0.1674,2.74905,0, -0.1792,2.8044,0, -0.176897,2.8044,-0.02945, + -0.176897,2.8044,-0.02945, -0.165245,2.74905,-0.02748, -0.1674,2.74905,0, + -0.032816,2.7,-0.197424, -0.02748,2.74905,-0.165245, 0,2.74905,-0.1674, + 0,2.74905,-0.1674, 0,2.7,-0.2, -0.032816,2.7,-0.197424, + -0.063808,2.7,-0.189952, -0.053428,2.74905,-0.158995, -0.02748,2.74905,-0.165245, + -0.02748,2.74905,-0.165245, -0.032816,2.7,-0.197424, -0.063808,2.7,-0.189952, + -0.092592,2.7,-0.177968, -0.077523,2.74905,-0.148969, -0.053428,2.74905,-0.158995, + -0.053428,2.74905,-0.158995, -0.063808,2.7,-0.189952, -0.092592,2.7,-0.177968, + -0.118784,2.7,-0.161856, -0.099446,2.74905,-0.135489, -0.077523,2.74905,-0.148969, + -0.077523,2.74905,-0.148969, -0.092592,2.7,-0.177968, -0.118784,2.7,-0.161856, + -0.142,2.7,-0.142, -0.118874,2.74905,-0.118874, -0.099446,2.74905,-0.135489, + -0.099446,2.74905,-0.135489, -0.118784,2.7,-0.161856, -0.142,2.7,-0.142, + -0.161856,2.7,-0.118784, -0.135489,2.74905,-0.099446, -0.118874,2.74905,-0.118874, + -0.118874,2.74905,-0.118874, -0.142,2.7,-0.142, -0.161856,2.7,-0.118784, + -0.177968,2.7,-0.092592, -0.148969,2.74905,-0.077523, -0.135489,2.74905,-0.099446, + -0.135489,2.74905,-0.099446, -0.161856,2.7,-0.118784, -0.177968,2.7,-0.092592, + -0.189952,2.7,-0.063808, -0.158995,2.74905,-0.053428, -0.148969,2.74905,-0.077523, + -0.148969,2.74905,-0.077523, -0.177968,2.7,-0.092592, -0.189952,2.7,-0.063808, + -0.197424,2.7,-0.032816, -0.165245,2.74905,-0.02748, -0.158995,2.74905,-0.053428, + -0.158995,2.74905,-0.053428, -0.189952,2.7,-0.063808, -0.197424,2.7,-0.032816, + -0.2,2.7,0, -0.1674,2.74905,0, -0.165245,2.74905,-0.02748, + -0.165245,2.74905,-0.02748, -0.197424,2.7,-0.032816, -0.2,2.7,0, + 0,3.15,0, -0.1946,3.14145,0, -0.192107,3.14145,0.032048, + 0,3.15,0, -0.192107,3.14145,0.032048, -0.18487,3.14145,0.062272, + 0,3.15,0, -0.18487,3.14145,0.062272, -0.173255,3.14145,0.090306, + 0,3.15,0, -0.173255,3.14145,0.090306, -0.157626,3.14145,0.115787, + 0,3.15,0, -0.157626,3.14145,0.115787, -0.138348,3.14145,0.138348, + 0,3.15,0, -0.138348,3.14145,0.138348, -0.115787,3.14145,0.157626, + 0,3.15,0, -0.115787,3.14145,0.157626, -0.090306,3.14145,0.173255, + 0,3.15,0, -0.090306,3.14145,0.173255, -0.062272,3.14145,0.18487, + 0,3.15,0, -0.062272,3.14145,0.18487, -0.032048,3.14145,0.192107, + 0,3.15,0, -0.032048,3.14145,0.192107, 0,3.14145,0.1946, + -0.304843,3.1176,0.050855, -0.192107,3.14145,0.032048, -0.1946,3.14145,0, + -0.1946,3.14145,0, -0.3088,3.1176,0, -0.304843,3.1176,0.050855, + -0.29336,3.1176,0.098814, -0.18487,3.14145,0.062272, -0.192107,3.14145,0.032048, + -0.192107,3.14145,0.032048, -0.304843,3.1176,0.050855, -0.29336,3.1176,0.098814, + -0.274928,3.1176,0.143301, -0.173255,3.14145,0.090306, -0.18487,3.14145,0.062272, + -0.18487,3.14145,0.062272, -0.29336,3.1176,0.098814, -0.274928,3.1176,0.143301, + -0.250127,3.1176,0.183734, -0.157626,3.14145,0.115787, -0.173255,3.14145,0.090306, + -0.173255,3.14145,0.090306, -0.274928,3.1176,0.143301, -0.250127,3.1176,0.183734, + -0.219536,3.1176,0.219536, -0.138348,3.14145,0.138348, -0.157626,3.14145,0.115787, + -0.157626,3.14145,0.115787, -0.250127,3.1176,0.183734, -0.219536,3.1176,0.219536, + -0.183734,3.1176,0.250127, -0.115787,3.14145,0.157626, -0.138348,3.14145,0.138348, + -0.138348,3.14145,0.138348, -0.219536,3.1176,0.219536, -0.183734,3.1176,0.250127, + -0.143301,3.1176,0.274928, -0.090306,3.14145,0.173255, -0.115787,3.14145,0.157626, + -0.115787,3.14145,0.157626, -0.183734,3.1176,0.250127, -0.143301,3.1176,0.274928, + -0.098814,3.1176,0.29336, -0.062272,3.14145,0.18487, -0.090306,3.14145,0.173255, + -0.090306,3.14145,0.173255, -0.143301,3.1176,0.274928, -0.098814,3.1176,0.29336, + -0.050855,3.1176,0.304843, -0.032048,3.14145,0.192107, -0.062272,3.14145,0.18487, + -0.062272,3.14145,0.18487, -0.098814,3.1176,0.29336, -0.050855,3.1176,0.304843, + 0,3.1176,0.3088, 0,3.14145,0.1946, -0.032048,3.14145,0.192107, + -0.032048,3.14145,0.192107, -0.050855,3.1176,0.304843, 0,3.1176,0.3088, + -0.35361,3.08115,0.058988, -0.304843,3.1176,0.050855, -0.3088,3.1176,0, + -0.3088,3.1176,0, -0.3582,3.08115,0, -0.35361,3.08115,0.058988, + -0.340289,3.08115,0.114619, -0.29336,3.1176,0.098814, -0.304843,3.1176,0.050855, + -0.304843,3.1176,0.050855, -0.35361,3.08115,0.058988, -0.340289,3.08115,0.114619, + -0.318907,3.08115,0.166221, -0.274928,3.1176,0.143301, -0.29336,3.1176,0.098814, + -0.29336,3.1176,0.098814, -0.340289,3.08115,0.114619, -0.318907,3.08115,0.166221, + -0.290138,3.08115,0.213123, -0.250127,3.1176,0.183734, -0.274928,3.1176,0.143301, + -0.274928,3.1176,0.143301, -0.318907,3.08115,0.166221, -0.290138,3.08115,0.213123, + -0.254653,3.08115,0.254653, -0.219536,3.1176,0.219536, -0.250127,3.1176,0.183734, + -0.250127,3.1176,0.183734, -0.290138,3.08115,0.213123, -0.254653,3.08115,0.254653, + -0.213123,3.08115,0.290138, -0.183734,3.1176,0.250127, -0.219536,3.1176,0.219536, + -0.219536,3.1176,0.219536, -0.254653,3.08115,0.254653, -0.213123,3.08115,0.290138, + -0.166221,3.08115,0.318907, -0.143301,3.1176,0.274928, -0.183734,3.1176,0.250127, + -0.183734,3.1176,0.250127, -0.213123,3.08115,0.290138, -0.166221,3.08115,0.318907, + -0.114619,3.08115,0.340289, -0.098814,3.1176,0.29336, -0.143301,3.1176,0.274928, + -0.143301,3.1176,0.274928, -0.166221,3.08115,0.318907, -0.114619,3.08115,0.340289, + -0.058988,3.08115,0.35361, -0.050855,3.1176,0.304843, -0.098814,3.1176,0.29336, + -0.098814,3.1176,0.29336, -0.114619,3.08115,0.340289, -0.058988,3.08115,0.35361, + 0,3.08115,0.3582, 0,3.1176,0.3088, -0.050855,3.1176,0.304843, + -0.050855,3.1176,0.304843, -0.058988,3.08115,0.35361, 0,3.08115,0.3582, + -0.353807,3.0348,0.059016, -0.35361,3.08115,0.058988, -0.3582,3.08115,0, + -0.3582,3.08115,0, -0.3584,3.0348,0, -0.353807,3.0348,0.059016, + -0.340477,3.0348,0.114676, -0.340289,3.08115,0.114619, -0.35361,3.08115,0.058988, + -0.35361,3.08115,0.058988, -0.353807,3.0348,0.059016, -0.340477,3.0348,0.114676, + -0.319082,3.0348,0.166306, -0.318907,3.08115,0.166221, -0.340289,3.08115,0.114619, + -0.340289,3.08115,0.114619, -0.340477,3.0348,0.114676, -0.319082,3.0348,0.166306, + -0.290295,3.0348,0.213234, -0.290138,3.08115,0.213123, -0.318907,3.08115,0.166221, + -0.318907,3.08115,0.166221, -0.319082,3.0348,0.166306, -0.290295,3.0348,0.213234, + -0.254788,3.0348,0.254788, -0.254653,3.08115,0.254653, -0.290138,3.08115,0.213123, + -0.290138,3.08115,0.213123, -0.290295,3.0348,0.213234, -0.254788,3.0348,0.254788, + -0.213234,3.0348,0.290295, -0.213123,3.08115,0.290138, -0.254653,3.08115,0.254653, + -0.254653,3.08115,0.254653, -0.254788,3.0348,0.254788, -0.213234,3.0348,0.290295, + -0.166306,3.0348,0.319082, -0.166221,3.08115,0.318907, -0.213123,3.08115,0.290138, + -0.213123,3.08115,0.290138, -0.213234,3.0348,0.290295, -0.166306,3.0348,0.319082, + -0.114676,3.0348,0.340477, -0.114619,3.08115,0.340289, -0.166221,3.08115,0.318907, + -0.166221,3.08115,0.318907, -0.166306,3.0348,0.319082, -0.114676,3.0348,0.340477, + -0.059016,3.0348,0.353807, -0.058988,3.08115,0.35361, -0.114619,3.08115,0.340289, + -0.114619,3.08115,0.340289, -0.114676,3.0348,0.340477, -0.059016,3.0348,0.353807, + 0,3.0348,0.3584, 0,3.08115,0.3582, -0.058988,3.08115,0.35361, + -0.058988,3.08115,0.35361, -0.059016,3.0348,0.353807, 0,3.0348,0.3584, + -0.320834,2.98125,0.053508, -0.353807,3.0348,0.059016, -0.3584,3.0348,0, + -0.3584,3.0348,0, -0.325,2.98125,0, -0.320834,2.98125,0.053508, + -0.308744,2.98125,0.103976, -0.340477,3.0348,0.114676, -0.353807,3.0348,0.059016, + -0.353807,3.0348,0.059016, -0.320834,2.98125,0.053508, -0.308744,2.98125,0.103976, + -0.28934,2.98125,0.150793, -0.319082,3.0348,0.166306, -0.340477,3.0348,0.114676, + -0.340477,3.0348,0.114676, -0.308744,2.98125,0.103976, -0.28934,2.98125,0.150793, + -0.263232,2.98125,0.193348, -0.290295,3.0348,0.213234, -0.319082,3.0348,0.166306, + -0.319082,3.0348,0.166306, -0.28934,2.98125,0.150793, -0.263232,2.98125,0.193348, + -0.231031,2.98125,0.231031, -0.254788,3.0348,0.254788, -0.290295,3.0348,0.213234, + -0.290295,3.0348,0.213234, -0.263232,2.98125,0.193348, -0.231031,2.98125,0.231031, + -0.193348,2.98125,0.263232, -0.213234,3.0348,0.290295, -0.254788,3.0348,0.254788, + -0.254788,3.0348,0.254788, -0.231031,2.98125,0.231031, -0.193348,2.98125,0.263232, + -0.150793,2.98125,0.28934, -0.166306,3.0348,0.319082, -0.213234,3.0348,0.290295, + -0.213234,3.0348,0.290295, -0.193348,2.98125,0.263232, -0.150793,2.98125,0.28934, + -0.103976,2.98125,0.308744, -0.114676,3.0348,0.340477, -0.166306,3.0348,0.319082, + -0.166306,3.0348,0.319082, -0.150793,2.98125,0.28934, -0.103976,2.98125,0.308744, + -0.053508,2.98125,0.320834, -0.059016,3.0348,0.353807, -0.114676,3.0348,0.340477, + -0.114676,3.0348,0.340477, -0.103976,2.98125,0.308744, -0.053508,2.98125,0.320834, + 0,2.98125,0.325, 0,3.0348,0.3584, -0.059016,3.0348,0.353807, + -0.059016,3.0348,0.353807, -0.053508,2.98125,0.320834, 0,2.98125,0.325, + -0.270092,2.9232,0.045032, -0.320834,2.98125,0.053508, -0.325,2.98125,0, + -0.325,2.98125,0, -0.2736,2.9232,0, -0.270092,2.9232,0.045032, + -0.25991,2.9232,0.087511, -0.308744,2.98125,0.103976, -0.320834,2.98125,0.053508, + -0.320834,2.98125,0.053508, -0.270092,2.9232,0.045032, -0.25991,2.9232,0.087511, + -0.243569,2.9232,0.12692, -0.28934,2.98125,0.150793, -0.308744,2.98125,0.103976, + -0.308744,2.98125,0.103976, -0.25991,2.9232,0.087511, -0.243569,2.9232,0.12692, + -0.221585,2.9232,0.162745, -0.263232,2.98125,0.193348, -0.28934,2.98125,0.150793, + -0.28934,2.98125,0.150793, -0.243569,2.9232,0.12692, -0.221585,2.9232,0.162745, + -0.194472,2.9232,0.194472, -0.231031,2.98125,0.231031, -0.263232,2.98125,0.193348, + -0.263232,2.98125,0.193348, -0.221585,2.9232,0.162745, -0.194472,2.9232,0.194472, + -0.162745,2.9232,0.221585, -0.193348,2.98125,0.263232, -0.231031,2.98125,0.231031, + -0.231031,2.98125,0.231031, -0.194472,2.9232,0.194472, -0.162745,2.9232,0.221585, + -0.12692,2.9232,0.243569, -0.150793,2.98125,0.28934, -0.193348,2.98125,0.263232, + -0.193348,2.98125,0.263232, -0.162745,2.9232,0.221585, -0.12692,2.9232,0.243569, + -0.087511,2.9232,0.25991, -0.103976,2.98125,0.308744, -0.150793,2.98125,0.28934, + -0.150793,2.98125,0.28934, -0.12692,2.9232,0.243569, -0.087511,2.9232,0.25991, + -0.045032,2.9232,0.270092, -0.053508,2.98125,0.320834, -0.103976,2.98125,0.308744, + -0.103976,2.98125,0.308744, -0.087511,2.9232,0.25991, -0.045032,2.9232,0.270092, + 0,2.9232,0.2736, 0,2.98125,0.325, -0.053508,2.98125,0.320834, + -0.053508,2.98125,0.320834, -0.045032,2.9232,0.270092, 0,2.9232,0.2736, + -0.216979,2.86335,0.036157, -0.270092,2.9232,0.045032, -0.2736,2.9232,0, + -0.2736,2.9232,0, -0.2198,2.86335,0, -0.216979,2.86335,0.036157, + -0.208794,2.86335,0.07027, -0.25991,2.9232,0.087511, -0.270092,2.9232,0.045032, + -0.270092,2.9232,0.045032, -0.216979,2.86335,0.036157, -0.208794,2.86335,0.07027, + -0.195658,2.86335,0.101925, -0.243569,2.9232,0.12692, -0.25991,2.9232,0.087511, + -0.25991,2.9232,0.087511, -0.208794,2.86335,0.07027, -0.195658,2.86335,0.101925, + -0.177989,2.86335,0.130707, -0.221585,2.9232,0.162745, -0.243569,2.9232,0.12692, + -0.243569,2.9232,0.12692, -0.195658,2.86335,0.101925, -0.177989,2.86335,0.130707, + -0.1562,2.86335,0.1562, -0.194472,2.9232,0.194472, -0.221585,2.9232,0.162745, + -0.221585,2.9232,0.162745, -0.177989,2.86335,0.130707, -0.1562,2.86335,0.1562, + -0.130707,2.86335,0.177989, -0.162745,2.9232,0.221585, -0.194472,2.9232,0.194472, + -0.194472,2.9232,0.194472, -0.1562,2.86335,0.1562, -0.130707,2.86335,0.177989, + -0.101925,2.86335,0.195658, -0.12692,2.9232,0.243569, -0.162745,2.9232,0.221585, + -0.162745,2.9232,0.221585, -0.130707,2.86335,0.177989, -0.101925,2.86335,0.195658, + -0.07027,2.86335,0.208794, -0.087511,2.9232,0.25991, -0.12692,2.9232,0.243569, + -0.12692,2.9232,0.243569, -0.101925,2.86335,0.195658, -0.07027,2.86335,0.208794, + -0.036157,2.86335,0.216979, -0.045032,2.9232,0.270092, -0.087511,2.9232,0.25991, + -0.087511,2.9232,0.25991, -0.07027,2.86335,0.208794, -0.036157,2.86335,0.216979, + 0,2.86335,0.2198, 0,2.9232,0.2736, -0.045032,2.9232,0.270092, + -0.045032,2.9232,0.270092, -0.036157,2.86335,0.216979, 0,2.86335,0.2198, + -0.176897,2.8044,0.02945, -0.216979,2.86335,0.036157, -0.2198,2.86335,0, + -0.2198,2.86335,0, -0.1792,2.8044,0, -0.176897,2.8044,0.02945, + -0.170215,2.8044,0.057246, -0.208794,2.86335,0.07027, -0.216979,2.86335,0.036157, + -0.216979,2.86335,0.036157, -0.176897,2.8044,0.02945, -0.170215,2.8044,0.057246, + -0.159496,2.8044,0.083047, -0.195658,2.86335,0.101925, -0.208794,2.86335,0.07027, + -0.208794,2.86335,0.07027, -0.170215,2.8044,0.057246, -0.159496,2.8044,0.083047, + -0.145078,2.8044,0.106513, -0.177989,2.86335,0.130707, -0.195658,2.86335,0.101925, + -0.195658,2.86335,0.101925, -0.159496,2.8044,0.083047, -0.145078,2.8044,0.106513, + -0.127304,2.8044,0.127304, -0.1562,2.86335,0.1562, -0.177989,2.86335,0.130707, + -0.177989,2.86335,0.130707, -0.145078,2.8044,0.106513, -0.127304,2.8044,0.127304, + -0.106513,2.8044,0.145078, -0.130707,2.86335,0.177989, -0.1562,2.86335,0.1562, + -0.1562,2.86335,0.1562, -0.127304,2.8044,0.127304, -0.106513,2.8044,0.145078, + -0.083047,2.8044,0.159496, -0.101925,2.86335,0.195658, -0.130707,2.86335,0.177989, + -0.130707,2.86335,0.177989, -0.106513,2.8044,0.145078, -0.083047,2.8044,0.159496, + -0.057246,2.8044,0.170215, -0.07027,2.86335,0.208794, -0.101925,2.86335,0.195658, + -0.101925,2.86335,0.195658, -0.083047,2.8044,0.159496, -0.057246,2.8044,0.170215, + -0.02945,2.8044,0.176897, -0.036157,2.86335,0.216979, -0.07027,2.86335,0.208794, + -0.07027,2.86335,0.208794, -0.057246,2.8044,0.170215, -0.02945,2.8044,0.176897, + 0,2.8044,0.1792, 0,2.86335,0.2198, -0.036157,2.86335,0.216979, + -0.036157,2.86335,0.216979, -0.02945,2.8044,0.176897, 0,2.8044,0.1792, + -0.165245,2.74905,0.02748, -0.176897,2.8044,0.02945, -0.1792,2.8044,0, + -0.1792,2.8044,0, -0.1674,2.74905,0, -0.165245,2.74905,0.02748, + -0.158995,2.74905,0.053428, -0.170215,2.8044,0.057246, -0.176897,2.8044,0.02945, + -0.176897,2.8044,0.02945, -0.165245,2.74905,0.02748, -0.158995,2.74905,0.053428, + -0.148969,2.74905,0.077523, -0.159496,2.8044,0.083047, -0.170215,2.8044,0.057246, + -0.170215,2.8044,0.057246, -0.158995,2.74905,0.053428, -0.148969,2.74905,0.077523, + -0.135489,2.74905,0.099446, -0.145078,2.8044,0.106513, -0.159496,2.8044,0.083047, + -0.159496,2.8044,0.083047, -0.148969,2.74905,0.077523, -0.135489,2.74905,0.099446, + -0.118874,2.74905,0.118874, -0.127304,2.8044,0.127304, -0.145078,2.8044,0.106513, + -0.145078,2.8044,0.106513, -0.135489,2.74905,0.099446, -0.118874,2.74905,0.118874, + -0.099446,2.74905,0.135489, -0.106513,2.8044,0.145078, -0.127304,2.8044,0.127304, + -0.127304,2.8044,0.127304, -0.118874,2.74905,0.118874, -0.099446,2.74905,0.135489, + -0.077523,2.74905,0.148969, -0.083047,2.8044,0.159496, -0.106513,2.8044,0.145078, + -0.106513,2.8044,0.145078, -0.099446,2.74905,0.135489, -0.077523,2.74905,0.148969, + -0.053428,2.74905,0.158995, -0.057246,2.8044,0.170215, -0.083047,2.8044,0.159496, + -0.083047,2.8044,0.159496, -0.077523,2.74905,0.148969, -0.053428,2.74905,0.158995, + -0.02748,2.74905,0.165245, -0.02945,2.8044,0.176897, -0.057246,2.8044,0.170215, + -0.057246,2.8044,0.170215, -0.053428,2.74905,0.158995, -0.02748,2.74905,0.165245, + 0,2.74905,0.1674, 0,2.8044,0.1792, -0.02945,2.8044,0.176897, + -0.02945,2.8044,0.176897, -0.02748,2.74905,0.165245, 0,2.74905,0.1674, + -0.197424,2.7,0.032816, -0.165245,2.74905,0.02748, -0.1674,2.74905,0, + -0.1674,2.74905,0, -0.2,2.7,0, -0.197424,2.7,0.032816, + -0.189952,2.7,0.063808, -0.158995,2.74905,0.053428, -0.165245,2.74905,0.02748, + -0.165245,2.74905,0.02748, -0.197424,2.7,0.032816, -0.189952,2.7,0.063808, + -0.177968,2.7,0.092592, -0.148969,2.74905,0.077523, -0.158995,2.74905,0.053428, + -0.158995,2.74905,0.053428, -0.189952,2.7,0.063808, -0.177968,2.7,0.092592, + -0.161856,2.7,0.118784, -0.135489,2.74905,0.099446, -0.148969,2.74905,0.077523, + -0.148969,2.74905,0.077523, -0.177968,2.7,0.092592, -0.161856,2.7,0.118784, + -0.142,2.7,0.142, -0.118874,2.74905,0.118874, -0.135489,2.74905,0.099446, + -0.135489,2.74905,0.099446, -0.161856,2.7,0.118784, -0.142,2.7,0.142, + -0.118784,2.7,0.161856, -0.099446,2.74905,0.135489, -0.118874,2.74905,0.118874, + -0.118874,2.74905,0.118874, -0.142,2.7,0.142, -0.118784,2.7,0.161856, + -0.092592,2.7,0.177968, -0.077523,2.74905,0.148969, -0.099446,2.74905,0.135489, + -0.099446,2.74905,0.135489, -0.118784,2.7,0.161856, -0.092592,2.7,0.177968, + -0.063808,2.7,0.189952, -0.053428,2.74905,0.158995, -0.077523,2.74905,0.148969, + -0.077523,2.74905,0.148969, -0.092592,2.7,0.177968, -0.063808,2.7,0.189952, + -0.032816,2.7,0.197424, -0.02748,2.74905,0.165245, -0.053428,2.74905,0.158995, + -0.053428,2.74905,0.158995, -0.063808,2.7,0.189952, -0.032816,2.7,0.197424, + 0,2.7,0.2, 0,2.74905,0.1674, -0.02748,2.74905,0.165245, + -0.02748,2.74905,0.165245, -0.032816,2.7,0.197424, 0,2.7,0.2, + 0,3.15,0, 0,3.14145,0.1946, 0.032048,3.14145,0.192107, + 0,3.15,0, 0.032048,3.14145,0.192107, 0.062272,3.14145,0.18487, + 0,3.15,0, 0.062272,3.14145,0.18487, 0.090306,3.14145,0.173255, + 0,3.15,0, 0.090306,3.14145,0.173255, 0.115787,3.14145,0.157626, + 0,3.15,0, 0.115787,3.14145,0.157626, 0.138348,3.14145,0.138348, + 0,3.15,0, 0.138348,3.14145,0.138348, 0.157626,3.14145,0.115787, + 0,3.15,0, 0.157626,3.14145,0.115787, 0.173255,3.14145,0.090306, + 0,3.15,0, 0.173255,3.14145,0.090306, 0.18487,3.14145,0.062272, + 0,3.15,0, 0.18487,3.14145,0.062272, 0.192107,3.14145,0.032048, + 0,3.15,0, 0.192107,3.14145,0.032048, 0.1946,3.14145,0, + 0.050855,3.1176,0.304843, 0.032048,3.14145,0.192107, 0,3.14145,0.1946, + 0,3.14145,0.1946, 0,3.1176,0.3088, 0.050855,3.1176,0.304843, + 0.098814,3.1176,0.29336, 0.062272,3.14145,0.18487, 0.032048,3.14145,0.192107, + 0.032048,3.14145,0.192107, 0.050855,3.1176,0.304843, 0.098814,3.1176,0.29336, + 0.143301,3.1176,0.274928, 0.090306,3.14145,0.173255, 0.062272,3.14145,0.18487, + 0.062272,3.14145,0.18487, 0.098814,3.1176,0.29336, 0.143301,3.1176,0.274928, + 0.183734,3.1176,0.250127, 0.115787,3.14145,0.157626, 0.090306,3.14145,0.173255, + 0.090306,3.14145,0.173255, 0.143301,3.1176,0.274928, 0.183734,3.1176,0.250127, + 0.219536,3.1176,0.219536, 0.138348,3.14145,0.138348, 0.115787,3.14145,0.157626, + 0.115787,3.14145,0.157626, 0.183734,3.1176,0.250127, 0.219536,3.1176,0.219536, + 0.250127,3.1176,0.183734, 0.157626,3.14145,0.115787, 0.138348,3.14145,0.138348, + 0.138348,3.14145,0.138348, 0.219536,3.1176,0.219536, 0.250127,3.1176,0.183734, + 0.274928,3.1176,0.143301, 0.173255,3.14145,0.090306, 0.157626,3.14145,0.115787, + 0.157626,3.14145,0.115787, 0.250127,3.1176,0.183734, 0.274928,3.1176,0.143301, + 0.29336,3.1176,0.098814, 0.18487,3.14145,0.062272, 0.173255,3.14145,0.090306, + 0.173255,3.14145,0.090306, 0.274928,3.1176,0.143301, 0.29336,3.1176,0.098814, + 0.304843,3.1176,0.050855, 0.192107,3.14145,0.032048, 0.18487,3.14145,0.062272, + 0.18487,3.14145,0.062272, 0.29336,3.1176,0.098814, 0.304843,3.1176,0.050855, + 0.3088,3.1176,0, 0.1946,3.14145,0, 0.192107,3.14145,0.032048, + 0.192107,3.14145,0.032048, 0.304843,3.1176,0.050855, 0.3088,3.1176,0, + 0.058988,3.08115,0.35361, 0.050855,3.1176,0.304843, 0,3.1176,0.3088, + 0,3.1176,0.3088, 0,3.08115,0.3582, 0.058988,3.08115,0.35361, + 0.114619,3.08115,0.340289, 0.098814,3.1176,0.29336, 0.050855,3.1176,0.304843, + 0.050855,3.1176,0.304843, 0.058988,3.08115,0.35361, 0.114619,3.08115,0.340289, + 0.166221,3.08115,0.318907, 0.143301,3.1176,0.274928, 0.098814,3.1176,0.29336, + 0.098814,3.1176,0.29336, 0.114619,3.08115,0.340289, 0.166221,3.08115,0.318907, + 0.213123,3.08115,0.290138, 0.183734,3.1176,0.250127, 0.143301,3.1176,0.274928, + 0.143301,3.1176,0.274928, 0.166221,3.08115,0.318907, 0.213123,3.08115,0.290138, + 0.254653,3.08115,0.254653, 0.219536,3.1176,0.219536, 0.183734,3.1176,0.250127, + 0.183734,3.1176,0.250127, 0.213123,3.08115,0.290138, 0.254653,3.08115,0.254653, + 0.290138,3.08115,0.213123, 0.250127,3.1176,0.183734, 0.219536,3.1176,0.219536, + 0.219536,3.1176,0.219536, 0.254653,3.08115,0.254653, 0.290138,3.08115,0.213123, + 0.318907,3.08115,0.166221, 0.274928,3.1176,0.143301, 0.250127,3.1176,0.183734, + 0.250127,3.1176,0.183734, 0.290138,3.08115,0.213123, 0.318907,3.08115,0.166221, + 0.340289,3.08115,0.114619, 0.29336,3.1176,0.098814, 0.274928,3.1176,0.143301, + 0.274928,3.1176,0.143301, 0.318907,3.08115,0.166221, 0.340289,3.08115,0.114619, + 0.35361,3.08115,0.058988, 0.304843,3.1176,0.050855, 0.29336,3.1176,0.098814, + 0.29336,3.1176,0.098814, 0.340289,3.08115,0.114619, 0.35361,3.08115,0.058988, + 0.3582,3.08115,0, 0.3088,3.1176,0, 0.304843,3.1176,0.050855, + 0.304843,3.1176,0.050855, 0.35361,3.08115,0.058988, 0.3582,3.08115,0, + 0.059016,3.0348,0.353807, 0.058988,3.08115,0.35361, 0,3.08115,0.3582, + 0,3.08115,0.3582, 0,3.0348,0.3584, 0.059016,3.0348,0.353807, + 0.114676,3.0348,0.340477, 0.114619,3.08115,0.340289, 0.058988,3.08115,0.35361, + 0.058988,3.08115,0.35361, 0.059016,3.0348,0.353807, 0.114676,3.0348,0.340477, + 0.166306,3.0348,0.319082, 0.166221,3.08115,0.318907, 0.114619,3.08115,0.340289, + 0.114619,3.08115,0.340289, 0.114676,3.0348,0.340477, 0.166306,3.0348,0.319082, + 0.213234,3.0348,0.290295, 0.213123,3.08115,0.290138, 0.166221,3.08115,0.318907, + 0.166221,3.08115,0.318907, 0.166306,3.0348,0.319082, 0.213234,3.0348,0.290295, + 0.254788,3.0348,0.254788, 0.254653,3.08115,0.254653, 0.213123,3.08115,0.290138, + 0.213123,3.08115,0.290138, 0.213234,3.0348,0.290295, 0.254788,3.0348,0.254788, + 0.290295,3.0348,0.213234, 0.290138,3.08115,0.213123, 0.254653,3.08115,0.254653, + 0.254653,3.08115,0.254653, 0.254788,3.0348,0.254788, 0.290295,3.0348,0.213234, + 0.319082,3.0348,0.166306, 0.318907,3.08115,0.166221, 0.290138,3.08115,0.213123, + 0.290138,3.08115,0.213123, 0.290295,3.0348,0.213234, 0.319082,3.0348,0.166306, + 0.340477,3.0348,0.114676, 0.340289,3.08115,0.114619, 0.318907,3.08115,0.166221, + 0.318907,3.08115,0.166221, 0.319082,3.0348,0.166306, 0.340477,3.0348,0.114676, + 0.353807,3.0348,0.059016, 0.35361,3.08115,0.058988, 0.340289,3.08115,0.114619, + 0.340289,3.08115,0.114619, 0.340477,3.0348,0.114676, 0.353807,3.0348,0.059016, + 0.3584,3.0348,0, 0.3582,3.08115,0, 0.35361,3.08115,0.058988, + 0.35361,3.08115,0.058988, 0.353807,3.0348,0.059016, 0.3584,3.0348,0, + 0.053508,2.98125,0.320834, 0.059016,3.0348,0.353807, 0,3.0348,0.3584, + 0,3.0348,0.3584, 0,2.98125,0.325, 0.053508,2.98125,0.320834, + 0.103976,2.98125,0.308744, 0.114676,3.0348,0.340477, 0.059016,3.0348,0.353807, + 0.059016,3.0348,0.353807, 0.053508,2.98125,0.320834, 0.103976,2.98125,0.308744, + 0.150793,2.98125,0.28934, 0.166306,3.0348,0.319082, 0.114676,3.0348,0.340477, + 0.114676,3.0348,0.340477, 0.103976,2.98125,0.308744, 0.150793,2.98125,0.28934, + 0.193348,2.98125,0.263232, 0.213234,3.0348,0.290295, 0.166306,3.0348,0.319082, + 0.166306,3.0348,0.319082, 0.150793,2.98125,0.28934, 0.193348,2.98125,0.263232, + 0.231031,2.98125,0.231031, 0.254788,3.0348,0.254788, 0.213234,3.0348,0.290295, + 0.213234,3.0348,0.290295, 0.193348,2.98125,0.263232, 0.231031,2.98125,0.231031, + 0.263232,2.98125,0.193348, 0.290295,3.0348,0.213234, 0.254788,3.0348,0.254788, + 0.254788,3.0348,0.254788, 0.231031,2.98125,0.231031, 0.263232,2.98125,0.193348, + 0.28934,2.98125,0.150793, 0.319082,3.0348,0.166306, 0.290295,3.0348,0.213234, + 0.290295,3.0348,0.213234, 0.263232,2.98125,0.193348, 0.28934,2.98125,0.150793, + 0.308744,2.98125,0.103976, 0.340477,3.0348,0.114676, 0.319082,3.0348,0.166306, + 0.319082,3.0348,0.166306, 0.28934,2.98125,0.150793, 0.308744,2.98125,0.103976, + 0.320834,2.98125,0.053508, 0.353807,3.0348,0.059016, 0.340477,3.0348,0.114676, + 0.340477,3.0348,0.114676, 0.308744,2.98125,0.103976, 0.320834,2.98125,0.053508, + 0.325,2.98125,0, 0.3584,3.0348,0, 0.353807,3.0348,0.059016, + 0.353807,3.0348,0.059016, 0.320834,2.98125,0.053508, 0.325,2.98125,0, + 0.045032,2.9232,0.270092, 0.053508,2.98125,0.320834, 0,2.98125,0.325, + 0,2.98125,0.325, 0,2.9232,0.2736, 0.045032,2.9232,0.270092, + 0.087511,2.9232,0.25991, 0.103976,2.98125,0.308744, 0.053508,2.98125,0.320834, + 0.053508,2.98125,0.320834, 0.045032,2.9232,0.270092, 0.087511,2.9232,0.25991, + 0.12692,2.9232,0.243569, 0.150793,2.98125,0.28934, 0.103976,2.98125,0.308744, + 0.103976,2.98125,0.308744, 0.087511,2.9232,0.25991, 0.12692,2.9232,0.243569, + 0.162745,2.9232,0.221585, 0.193348,2.98125,0.263232, 0.150793,2.98125,0.28934, + 0.150793,2.98125,0.28934, 0.12692,2.9232,0.243569, 0.162745,2.9232,0.221585, + 0.194472,2.9232,0.194472, 0.231031,2.98125,0.231031, 0.193348,2.98125,0.263232, + 0.193348,2.98125,0.263232, 0.162745,2.9232,0.221585, 0.194472,2.9232,0.194472, + 0.221585,2.9232,0.162745, 0.263232,2.98125,0.193348, 0.231031,2.98125,0.231031, + 0.231031,2.98125,0.231031, 0.194472,2.9232,0.194472, 0.221585,2.9232,0.162745, + 0.243569,2.9232,0.12692, 0.28934,2.98125,0.150793, 0.263232,2.98125,0.193348, + 0.263232,2.98125,0.193348, 0.221585,2.9232,0.162745, 0.243569,2.9232,0.12692, + 0.25991,2.9232,0.087511, 0.308744,2.98125,0.103976, 0.28934,2.98125,0.150793, + 0.28934,2.98125,0.150793, 0.243569,2.9232,0.12692, 0.25991,2.9232,0.087511, + 0.270092,2.9232,0.045032, 0.320834,2.98125,0.053508, 0.308744,2.98125,0.103976, + 0.308744,2.98125,0.103976, 0.25991,2.9232,0.087511, 0.270092,2.9232,0.045032, + 0.2736,2.9232,0, 0.325,2.98125,0, 0.320834,2.98125,0.053508, + 0.320834,2.98125,0.053508, 0.270092,2.9232,0.045032, 0.2736,2.9232,0, + 0.036157,2.86335,0.216979, 0.045032,2.9232,0.270092, 0,2.9232,0.2736, + 0,2.9232,0.2736, 0,2.86335,0.2198, 0.036157,2.86335,0.216979, + 0.07027,2.86335,0.208794, 0.087511,2.9232,0.25991, 0.045032,2.9232,0.270092, + 0.045032,2.9232,0.270092, 0.036157,2.86335,0.216979, 0.07027,2.86335,0.208794, + 0.101925,2.86335,0.195658, 0.12692,2.9232,0.243569, 0.087511,2.9232,0.25991, + 0.087511,2.9232,0.25991, 0.07027,2.86335,0.208794, 0.101925,2.86335,0.195658, + 0.130707,2.86335,0.177989, 0.162745,2.9232,0.221585, 0.12692,2.9232,0.243569, + 0.12692,2.9232,0.243569, 0.101925,2.86335,0.195658, 0.130707,2.86335,0.177989, + 0.1562,2.86335,0.1562, 0.194472,2.9232,0.194472, 0.162745,2.9232,0.221585, + 0.162745,2.9232,0.221585, 0.130707,2.86335,0.177989, 0.1562,2.86335,0.1562, + 0.177989,2.86335,0.130707, 0.221585,2.9232,0.162745, 0.194472,2.9232,0.194472, + 0.194472,2.9232,0.194472, 0.1562,2.86335,0.1562, 0.177989,2.86335,0.130707, + 0.195658,2.86335,0.101925, 0.243569,2.9232,0.12692, 0.221585,2.9232,0.162745, + 0.221585,2.9232,0.162745, 0.177989,2.86335,0.130707, 0.195658,2.86335,0.101925, + 0.208794,2.86335,0.07027, 0.25991,2.9232,0.087511, 0.243569,2.9232,0.12692, + 0.243569,2.9232,0.12692, 0.195658,2.86335,0.101925, 0.208794,2.86335,0.07027, + 0.216979,2.86335,0.036157, 0.270092,2.9232,0.045032, 0.25991,2.9232,0.087511, + 0.25991,2.9232,0.087511, 0.208794,2.86335,0.07027, 0.216979,2.86335,0.036157, + 0.2198,2.86335,0, 0.2736,2.9232,0, 0.270092,2.9232,0.045032, + 0.270092,2.9232,0.045032, 0.216979,2.86335,0.036157, 0.2198,2.86335,0, + 0.02945,2.8044,0.176897, 0.036157,2.86335,0.216979, 0,2.86335,0.2198, + 0,2.86335,0.2198, 0,2.8044,0.1792, 0.02945,2.8044,0.176897, + 0.057246,2.8044,0.170215, 0.07027,2.86335,0.208794, 0.036157,2.86335,0.216979, + 0.036157,2.86335,0.216979, 0.02945,2.8044,0.176897, 0.057246,2.8044,0.170215, + 0.083047,2.8044,0.159496, 0.101925,2.86335,0.195658, 0.07027,2.86335,0.208794, + 0.07027,2.86335,0.208794, 0.057246,2.8044,0.170215, 0.083047,2.8044,0.159496, + 0.106513,2.8044,0.145078, 0.130707,2.86335,0.177989, 0.101925,2.86335,0.195658, + 0.101925,2.86335,0.195658, 0.083047,2.8044,0.159496, 0.106513,2.8044,0.145078, + 0.127304,2.8044,0.127304, 0.1562,2.86335,0.1562, 0.130707,2.86335,0.177989, + 0.130707,2.86335,0.177989, 0.106513,2.8044,0.145078, 0.127304,2.8044,0.127304, + 0.145078,2.8044,0.106513, 0.177989,2.86335,0.130707, 0.1562,2.86335,0.1562, + 0.1562,2.86335,0.1562, 0.127304,2.8044,0.127304, 0.145078,2.8044,0.106513, + 0.159496,2.8044,0.083047, 0.195658,2.86335,0.101925, 0.177989,2.86335,0.130707, + 0.177989,2.86335,0.130707, 0.145078,2.8044,0.106513, 0.159496,2.8044,0.083047, + 0.170215,2.8044,0.057246, 0.208794,2.86335,0.07027, 0.195658,2.86335,0.101925, + 0.195658,2.86335,0.101925, 0.159496,2.8044,0.083047, 0.170215,2.8044,0.057246, + 0.176897,2.8044,0.02945, 0.216979,2.86335,0.036157, 0.208794,2.86335,0.07027, + 0.208794,2.86335,0.07027, 0.170215,2.8044,0.057246, 0.176897,2.8044,0.02945, + 0.1792,2.8044,0, 0.2198,2.86335,0, 0.216979,2.86335,0.036157, + 0.216979,2.86335,0.036157, 0.176897,2.8044,0.02945, 0.1792,2.8044,0, + 0.02748,2.74905,0.165245, 0.02945,2.8044,0.176897, 0,2.8044,0.1792, + 0,2.8044,0.1792, 0,2.74905,0.1674, 0.02748,2.74905,0.165245, + 0.053428,2.74905,0.158995, 0.057246,2.8044,0.170215, 0.02945,2.8044,0.176897, + 0.02945,2.8044,0.176897, 0.02748,2.74905,0.165245, 0.053428,2.74905,0.158995, + 0.077523,2.74905,0.148969, 0.083047,2.8044,0.159496, 0.057246,2.8044,0.170215, + 0.057246,2.8044,0.170215, 0.053428,2.74905,0.158995, 0.077523,2.74905,0.148969, + 0.099446,2.74905,0.135489, 0.106513,2.8044,0.145078, 0.083047,2.8044,0.159496, + 0.083047,2.8044,0.159496, 0.077523,2.74905,0.148969, 0.099446,2.74905,0.135489, + 0.118874,2.74905,0.118874, 0.127304,2.8044,0.127304, 0.106513,2.8044,0.145078, + 0.106513,2.8044,0.145078, 0.099446,2.74905,0.135489, 0.118874,2.74905,0.118874, + 0.135489,2.74905,0.099446, 0.145078,2.8044,0.106513, 0.127304,2.8044,0.127304, + 0.127304,2.8044,0.127304, 0.118874,2.74905,0.118874, 0.135489,2.74905,0.099446, + 0.148969,2.74905,0.077523, 0.159496,2.8044,0.083047, 0.145078,2.8044,0.106513, + 0.145078,2.8044,0.106513, 0.135489,2.74905,0.099446, 0.148969,2.74905,0.077523, + 0.158995,2.74905,0.053428, 0.170215,2.8044,0.057246, 0.159496,2.8044,0.083047, + 0.159496,2.8044,0.083047, 0.148969,2.74905,0.077523, 0.158995,2.74905,0.053428, + 0.165245,2.74905,0.02748, 0.176897,2.8044,0.02945, 0.170215,2.8044,0.057246, + 0.170215,2.8044,0.057246, 0.158995,2.74905,0.053428, 0.165245,2.74905,0.02748, + 0.1674,2.74905,0, 0.1792,2.8044,0, 0.176897,2.8044,0.02945, + 0.176897,2.8044,0.02945, 0.165245,2.74905,0.02748, 0.1674,2.74905,0, + 0.032816,2.7,0.197424, 0.02748,2.74905,0.165245, 0,2.74905,0.1674, + 0,2.74905,0.1674, 0,2.7,0.2, 0.032816,2.7,0.197424, + 0.063808,2.7,0.189952, 0.053428,2.74905,0.158995, 0.02748,2.74905,0.165245, + 0.02748,2.74905,0.165245, 0.032816,2.7,0.197424, 0.063808,2.7,0.189952, + 0.092592,2.7,0.177968, 0.077523,2.74905,0.148969, 0.053428,2.74905,0.158995, + 0.053428,2.74905,0.158995, 0.063808,2.7,0.189952, 0.092592,2.7,0.177968, + 0.118784,2.7,0.161856, 0.099446,2.74905,0.135489, 0.077523,2.74905,0.148969, + 0.077523,2.74905,0.148969, 0.092592,2.7,0.177968, 0.118784,2.7,0.161856, + 0.142,2.7,0.142, 0.118874,2.74905,0.118874, 0.099446,2.74905,0.135489, + 0.099446,2.74905,0.135489, 0.118784,2.7,0.161856, 0.142,2.7,0.142, + 0.161856,2.7,0.118784, 0.135489,2.74905,0.099446, 0.118874,2.74905,0.118874, + 0.118874,2.74905,0.118874, 0.142,2.7,0.142, 0.161856,2.7,0.118784, + 0.177968,2.7,0.092592, 0.148969,2.74905,0.077523, 0.135489,2.74905,0.099446, + 0.135489,2.74905,0.099446, 0.161856,2.7,0.118784, 0.177968,2.7,0.092592, + 0.189952,2.7,0.063808, 0.158995,2.74905,0.053428, 0.148969,2.74905,0.077523, + 0.148969,2.74905,0.077523, 0.177968,2.7,0.092592, 0.189952,2.7,0.063808, + 0.197424,2.7,0.032816, 0.165245,2.74905,0.02748, 0.158995,2.74905,0.053428, + 0.158995,2.74905,0.053428, 0.189952,2.7,0.063808, 0.197424,2.7,0.032816, + 0.2,2.7,0, 0.1674,2.74905,0, 0.165245,2.74905,0.02748, + 0.165245,2.74905,0.02748, 0.197424,2.7,0.032816, 0.2,2.7,0, + 0.275801,2.6592,-0.045844, 0.197424,2.7,-0.032816, 0.2,2.7,0, + 0.2,2.7,0, 0.2794,2.6592,0, 0.275801,2.6592,-0.045844, + 0.265363,2.6592,-0.08914, 0.189952,2.7,-0.063808, 0.197424,2.7,-0.032816, + 0.197424,2.7,-0.032816, 0.275801,2.6592,-0.045844, 0.265363,2.6592,-0.08914, + 0.248621,2.6592,-0.129351, 0.177968,2.7,-0.092592, 0.189952,2.7,-0.063808, + 0.189952,2.7,-0.063808, 0.265363,2.6592,-0.08914, 0.248621,2.6592,-0.129351, + 0.226113,2.6592,-0.165941, 0.161856,2.7,-0.118784, 0.177968,2.7,-0.092592, + 0.177968,2.7,-0.092592, 0.248621,2.6592,-0.129351, 0.226113,2.6592,-0.165941, + 0.198374,2.6592,-0.198374, 0.142,2.7,-0.142, 0.161856,2.7,-0.118784, + 0.161856,2.7,-0.118784, 0.226113,2.6592,-0.165941, 0.198374,2.6592,-0.198374, + 0.165941,2.6592,-0.226113, 0.118784,2.7,-0.161856, 0.142,2.7,-0.142, + 0.142,2.7,-0.142, 0.198374,2.6592,-0.198374, 0.165941,2.6592,-0.226113, + 0.129351,2.6592,-0.248621, 0.092592,2.7,-0.177968, 0.118784,2.7,-0.161856, + 0.118784,2.7,-0.161856, 0.165941,2.6592,-0.226113, 0.129351,2.6592,-0.248621, + 0.08914,2.6592,-0.265363, 0.063808,2.7,-0.189952, 0.092592,2.7,-0.177968, + 0.092592,2.7,-0.177968, 0.129351,2.6592,-0.248621, 0.08914,2.6592,-0.265363, + 0.045844,2.6592,-0.275801, 0.032816,2.7,-0.197424, 0.063808,2.7,-0.189952, + 0.063808,2.7,-0.189952, 0.08914,2.6592,-0.265363, 0.045844,2.6592,-0.275801, + 0,2.6592,-0.2794, 0,2.7,-0.2, 0.032816,2.7,-0.197424, + 0.032816,2.7,-0.197424, 0.045844,2.6592,-0.275801, 0,2.6592,-0.2794, + 0.386161,2.6256,-0.064188, 0.275801,2.6592,-0.045844, 0.2794,2.6592,0, + 0.2794,2.6592,0, 0.3912,2.6256,0, 0.386161,2.6256,-0.064188, + 0.371546,2.6256,-0.124808, 0.265363,2.6592,-0.08914, 0.275801,2.6592,-0.045844, + 0.275801,2.6592,-0.045844, 0.386161,2.6256,-0.064188, 0.371546,2.6256,-0.124808, + 0.348105,2.6256,-0.18111, 0.248621,2.6592,-0.129351, 0.265363,2.6592,-0.08914, + 0.265363,2.6592,-0.08914, 0.371546,2.6256,-0.124808, 0.348105,2.6256,-0.18111, + 0.31659,2.6256,-0.232342, 0.226113,2.6592,-0.165941, 0.248621,2.6592,-0.129351, + 0.248621,2.6592,-0.129351, 0.348105,2.6256,-0.18111, 0.31659,2.6256,-0.232342, + 0.277752,2.6256,-0.277752, 0.198374,2.6592,-0.198374, 0.226113,2.6592,-0.165941, + 0.226113,2.6592,-0.165941, 0.31659,2.6256,-0.232342, 0.277752,2.6256,-0.277752, + 0.232342,2.6256,-0.31659, 0.165941,2.6592,-0.226113, 0.198374,2.6592,-0.198374, + 0.198374,2.6592,-0.198374, 0.277752,2.6256,-0.277752, 0.232342,2.6256,-0.31659, + 0.18111,2.6256,-0.348105, 0.129351,2.6592,-0.248621, 0.165941,2.6592,-0.226113, + 0.165941,2.6592,-0.226113, 0.232342,2.6256,-0.31659, 0.18111,2.6256,-0.348105, + 0.124808,2.6256,-0.371546, 0.08914,2.6592,-0.265363, 0.129351,2.6592,-0.248621, + 0.129351,2.6592,-0.248621, 0.18111,2.6256,-0.348105, 0.124808,2.6256,-0.371546, + 0.064188,2.6256,-0.386161, 0.045844,2.6592,-0.275801, 0.08914,2.6592,-0.265363, + 0.08914,2.6592,-0.265363, 0.124808,2.6256,-0.371546, 0.064188,2.6256,-0.386161, + 0,2.6256,-0.3912, 0,2.6592,-0.2794, 0.045844,2.6592,-0.275801, + 0.045844,2.6592,-0.275801, 0.064188,2.6256,-0.386161, 0,2.6256,-0.3912, + 0.519028,2.5974,-0.086273, 0.386161,2.6256,-0.064188, 0.3912,2.6256,0, + 0.3912,2.6256,0, 0.5258,2.5974,0, 0.519028,2.5974,-0.086273, + 0.499384,2.5974,-0.167751, 0.371546,2.6256,-0.124808, 0.386161,2.6256,-0.064188, + 0.386161,2.6256,-0.064188, 0.519028,2.5974,-0.086273, 0.499384,2.5974,-0.167751, + 0.467878,2.5974,-0.243424, 0.348105,2.6256,-0.18111, 0.371546,2.6256,-0.124808, + 0.371546,2.6256,-0.124808, 0.499384,2.5974,-0.167751, 0.467878,2.5974,-0.243424, + 0.425519,2.5974,-0.312283, 0.31659,2.6256,-0.232342, 0.348105,2.6256,-0.18111, + 0.348105,2.6256,-0.18111, 0.467878,2.5974,-0.243424, 0.425519,2.5974,-0.312283, + 0.373318,2.5974,-0.373318, 0.277752,2.6256,-0.277752, 0.31659,2.6256,-0.232342, + 0.31659,2.6256,-0.232342, 0.425519,2.5974,-0.312283, 0.373318,2.5974,-0.373318, + 0.312283,2.5974,-0.425519, 0.232342,2.6256,-0.31659, 0.277752,2.6256,-0.277752, + 0.277752,2.6256,-0.277752, 0.373318,2.5974,-0.373318, 0.312283,2.5974,-0.425519, + 0.243424,2.5974,-0.467878, 0.18111,2.6256,-0.348105, 0.232342,2.6256,-0.31659, + 0.232342,2.6256,-0.31659, 0.312283,2.5974,-0.425519, 0.243424,2.5974,-0.467878, + 0.167751,2.5974,-0.499384, 0.124808,2.6256,-0.371546, 0.18111,2.6256,-0.348105, + 0.18111,2.6256,-0.348105, 0.243424,2.5974,-0.467878, 0.167751,2.5974,-0.499384, + 0.086273,2.5974,-0.519028, 0.064188,2.6256,-0.386161, 0.124808,2.6256,-0.371546, + 0.124808,2.6256,-0.371546, 0.167751,2.5974,-0.499384, 0.086273,2.5974,-0.519028, + 0,2.5974,-0.5258, 0,2.6256,-0.3912, 0.064188,2.6256,-0.386161, + 0.064188,2.6256,-0.386161, 0.086273,2.5974,-0.519028, 0,2.5974,-0.5258, + 0.664924,2.5728,-0.110524, 0.519028,2.5974,-0.086273, 0.5258,2.5974,0, + 0.5258,2.5974,0, 0.6736,2.5728,0, 0.664924,2.5728,-0.110524, + 0.639758,2.5728,-0.214905, 0.499384,2.5974,-0.167751, 0.519028,2.5974,-0.086273, + 0.519028,2.5974,-0.086273, 0.664924,2.5728,-0.110524, 0.639758,2.5728,-0.214905, + 0.599396,2.5728,-0.31185, 0.467878,2.5974,-0.243424, 0.499384,2.5974,-0.167751, + 0.499384,2.5974,-0.167751, 0.639758,2.5728,-0.214905, 0.599396,2.5728,-0.31185, + 0.545131,2.5728,-0.400065, 0.425519,2.5974,-0.312283, 0.467878,2.5974,-0.243424, + 0.467878,2.5974,-0.243424, 0.599396,2.5728,-0.31185, 0.545131,2.5728,-0.400065, + 0.478256,2.5728,-0.478256, 0.373318,2.5974,-0.373318, 0.425519,2.5974,-0.312283, + 0.425519,2.5974,-0.312283, 0.545131,2.5728,-0.400065, 0.478256,2.5728,-0.478256, + 0.400065,2.5728,-0.545131, 0.312283,2.5974,-0.425519, 0.373318,2.5974,-0.373318, + 0.373318,2.5974,-0.373318, 0.478256,2.5728,-0.478256, 0.400065,2.5728,-0.545131, + 0.31185,2.5728,-0.599396, 0.243424,2.5974,-0.467878, 0.312283,2.5974,-0.425519, + 0.312283,2.5974,-0.425519, 0.400065,2.5728,-0.545131, 0.31185,2.5728,-0.599396, + 0.214905,2.5728,-0.639758, 0.167751,2.5974,-0.499384, 0.243424,2.5974,-0.467878, + 0.243424,2.5974,-0.467878, 0.31185,2.5728,-0.599396, 0.214905,2.5728,-0.639758, + 0.110524,2.5728,-0.664924, 0.086273,2.5974,-0.519028, 0.167751,2.5974,-0.499384, + 0.167751,2.5974,-0.499384, 0.214905,2.5728,-0.639758, 0.110524,2.5728,-0.664924, + 0,2.5728,-0.6736, 0,2.5974,-0.5258, 0.086273,2.5974,-0.519028, + 0.086273,2.5974,-0.519028, 0.110524,2.5728,-0.664924, 0,2.5728,-0.6736, + 0.814374,2.55,-0.135366, 0.664924,2.5728,-0.110524, 0.6736,2.5728,0, + 0.6736,2.5728,0, 0.825,2.55,0, 0.814374,2.55,-0.135366, + 0.783552,2.55,-0.263208, 0.639758,2.5728,-0.214905, 0.664924,2.5728,-0.110524, + 0.664924,2.5728,-0.110524, 0.814374,2.55,-0.135366, 0.783552,2.55,-0.263208, + 0.734118,2.55,-0.381942, 0.599396,2.5728,-0.31185, 0.639758,2.5728,-0.214905, + 0.639758,2.5728,-0.214905, 0.783552,2.55,-0.263208, 0.734118,2.55,-0.381942, + 0.667656,2.55,-0.489984, 0.545131,2.5728,-0.400065, 0.599396,2.5728,-0.31185, + 0.599396,2.5728,-0.31185, 0.734118,2.55,-0.381942, 0.667656,2.55,-0.489984, + 0.58575,2.55,-0.58575, 0.478256,2.5728,-0.478256, 0.545131,2.5728,-0.400065, + 0.545131,2.5728,-0.400065, 0.667656,2.55,-0.489984, 0.58575,2.55,-0.58575, + 0.489984,2.55,-0.667656, 0.400065,2.5728,-0.545131, 0.478256,2.5728,-0.478256, + 0.478256,2.5728,-0.478256, 0.58575,2.55,-0.58575, 0.489984,2.55,-0.667656, + 0.381942,2.55,-0.734118, 0.31185,2.5728,-0.599396, 0.400065,2.5728,-0.545131, + 0.400065,2.5728,-0.545131, 0.489984,2.55,-0.667656, 0.381942,2.55,-0.734118, + 0.263208,2.55,-0.783552, 0.214905,2.5728,-0.639758, 0.31185,2.5728,-0.599396, + 0.31185,2.5728,-0.599396, 0.381942,2.55,-0.734118, 0.263208,2.55,-0.783552, + 0.135366,2.55,-0.814374, 0.110524,2.5728,-0.664924, 0.214905,2.5728,-0.639758, + 0.214905,2.5728,-0.639758, 0.263208,2.55,-0.783552, 0.135366,2.55,-0.814374, + 0,2.55,-0.825, 0,2.5728,-0.6736, 0.110524,2.5728,-0.664924, + 0.110524,2.5728,-0.664924, 0.135366,2.55,-0.814374, 0,2.55,-0.825, + 0.957901,2.5272,-0.159223, 0.814374,2.55,-0.135366, 0.825,2.55,0, + 0.825,2.55,0, 0.9704,2.5272,0, 0.957901,2.5272,-0.159223, + 0.921647,2.5272,-0.309596, 0.783552,2.55,-0.263208, 0.814374,2.55,-0.135366, + 0.814374,2.55,-0.135366, 0.957901,2.5272,-0.159223, 0.921647,2.5272,-0.309596, + 0.863501,2.5272,-0.449256, 0.734118,2.55,-0.381942, 0.783552,2.55,-0.263208, + 0.783552,2.55,-0.263208, 0.921647,2.5272,-0.309596, 0.863501,2.5272,-0.449256, + 0.785325,2.5272,-0.57634, 0.667656,2.55,-0.489984, 0.734118,2.55,-0.381942, + 0.734118,2.55,-0.381942, 0.863501,2.5272,-0.449256, 0.785325,2.5272,-0.57634, + 0.688984,2.5272,-0.688984, 0.58575,2.55,-0.58575, 0.667656,2.55,-0.489984, + 0.667656,2.55,-0.489984, 0.785325,2.5272,-0.57634, 0.688984,2.5272,-0.688984, + 0.57634,2.5272,-0.785325, 0.489984,2.55,-0.667656, 0.58575,2.55,-0.58575, + 0.58575,2.55,-0.58575, 0.688984,2.5272,-0.688984, 0.57634,2.5272,-0.785325, + 0.449256,2.5272,-0.863501, 0.381942,2.55,-0.734118, 0.489984,2.55,-0.667656, + 0.489984,2.55,-0.667656, 0.57634,2.5272,-0.785325, 0.449256,2.5272,-0.863501, + 0.309596,2.5272,-0.921647, 0.263208,2.55,-0.783552, 0.381942,2.55,-0.734118, + 0.381942,2.55,-0.734118, 0.449256,2.5272,-0.863501, 0.309596,2.5272,-0.921647, + 0.159223,2.5272,-0.957901, 0.135366,2.55,-0.814374, 0.263208,2.55,-0.783552, + 0.263208,2.55,-0.783552, 0.309596,2.5272,-0.921647, 0.159223,2.5272,-0.957901, + 0,2.5272,-0.9704, 0,2.55,-0.825, 0.135366,2.55,-0.814374, + 0.135366,2.55,-0.814374, 0.159223,2.5272,-0.957901, 0,2.5272,-0.9704, + 1.086029,2.5026,-0.180521, 0.957901,2.5272,-0.159223, 0.9704,2.5272,0, + 0.9704,2.5272,0, 1.1002,2.5026,0, 1.086029,2.5026,-0.180521, + 1.044926,2.5026,-0.351008, 0.921647,2.5272,-0.309596, 0.957901,2.5272,-0.159223, + 0.957901,2.5272,-0.159223, 1.086029,2.5026,-0.180521, 1.044926,2.5026,-0.351008, + 0.979002,2.5026,-0.509349, 0.863501,2.5272,-0.449256, 0.921647,2.5272,-0.309596, + 0.921647,2.5272,-0.309596, 1.044926,2.5026,-0.351008, 0.979002,2.5026,-0.509349, + 0.89037,2.5026,-0.653431, 0.785325,2.5272,-0.57634, 0.863501,2.5272,-0.449256, + 0.863501,2.5272,-0.449256, 0.979002,2.5026,-0.509349, 0.89037,2.5026,-0.653431, + 0.781142,2.5026,-0.781142, 0.688984,2.5272,-0.688984, 0.785325,2.5272,-0.57634, + 0.785325,2.5272,-0.57634, 0.89037,2.5026,-0.653431, 0.781142,2.5026,-0.781142, + 0.653431,2.5026,-0.89037, 0.57634,2.5272,-0.785325, 0.688984,2.5272,-0.688984, + 0.688984,2.5272,-0.688984, 0.781142,2.5026,-0.781142, 0.653431,2.5026,-0.89037, + 0.509349,2.5026,-0.979002, 0.449256,2.5272,-0.863501, 0.57634,2.5272,-0.785325, + 0.57634,2.5272,-0.785325, 0.653431,2.5026,-0.89037, 0.509349,2.5026,-0.979002, + 0.351008,2.5026,-1.044926, 0.309596,2.5272,-0.921647, 0.449256,2.5272,-0.863501, + 0.449256,2.5272,-0.863501, 0.509349,2.5026,-0.979002, 0.351008,2.5026,-1.044926, + 0.180521,2.5026,-1.086029, 0.159223,2.5272,-0.957901, 0.309596,2.5272,-0.921647, + 0.309596,2.5272,-0.921647, 0.351008,2.5026,-1.044926, 0.180521,2.5026,-1.086029, + 0,2.5026,-1.1002, 0,2.5272,-0.9704, 0.159223,2.5272,-0.957901, + 0.159223,2.5272,-0.957901, 0.180521,2.5026,-1.086029, 0,2.5026,-1.1002, + 1.189282,2.4744,-0.197684, 1.086029,2.5026,-0.180521, 1.1002,2.5026,0, + 1.1002,2.5026,0, 1.2048,2.4744,0, 1.189282,2.4744,-0.197684, + 1.144271,2.4744,-0.384379, 1.044926,2.5026,-0.351008, 1.086029,2.5026,-0.180521, + 1.086029,2.5026,-0.180521, 1.189282,2.4744,-0.197684, 1.144271,2.4744,-0.384379, + 1.072079,2.4744,-0.557774, 0.979002,2.5026,-0.509349, 1.044926,2.5026,-0.351008, + 1.044926,2.5026,-0.351008, 1.144271,2.4744,-0.384379, 1.072079,2.4744,-0.557774, + 0.975021,2.4744,-0.715555, 0.89037,2.5026,-0.653431, 0.979002,2.5026,-0.509349, + 0.979002,2.5026,-0.509349, 1.072079,2.4744,-0.557774, 0.975021,2.4744,-0.715555, + 0.855408,2.4744,-0.855408, 0.781142,2.5026,-0.781142, 0.89037,2.5026,-0.653431, + 0.89037,2.5026,-0.653431, 0.975021,2.4744,-0.715555, 0.855408,2.4744,-0.855408, + 0.715555,2.4744,-0.975021, 0.653431,2.5026,-0.89037, 0.781142,2.5026,-0.781142, + 0.781142,2.5026,-0.781142, 0.855408,2.4744,-0.855408, 0.715555,2.4744,-0.975021, + 0.557774,2.4744,-1.072079, 0.509349,2.5026,-0.979002, 0.653431,2.5026,-0.89037, + 0.653431,2.5026,-0.89037, 0.715555,2.4744,-0.975021, 0.557774,2.4744,-1.072079, + 0.384379,2.4744,-1.144271, 0.351008,2.5026,-1.044926, 0.509349,2.5026,-0.979002, + 0.509349,2.5026,-0.979002, 0.557774,2.4744,-1.072079, 0.384379,2.4744,-1.144271, + 0.197684,2.4744,-1.189282, 0.180521,2.5026,-1.086029, 0.351008,2.5026,-1.044926, + 0.351008,2.5026,-1.044926, 0.384379,2.4744,-1.144271, 0.197684,2.4744,-1.189282, + 0,2.4744,-1.2048, 0,2.5026,-1.1002, 0.180521,2.5026,-1.086029, + 0.180521,2.5026,-1.086029, 0.197684,2.4744,-1.189282, 0,2.4744,-1.2048, + 1.258183,2.4408,-0.209136, 1.189282,2.4744,-0.197684, 1.2048,2.4744,0, + 1.2048,2.4744,0, 1.2746,2.4408,0, 1.258183,2.4408,-0.209136, + 1.210564,2.4408,-0.406648, 1.144271,2.4744,-0.384379, 1.189282,2.4744,-0.197684, + 1.189282,2.4744,-0.197684, 1.258183,2.4408,-0.209136, 1.210564,2.4408,-0.406648, + 1.13419,2.4408,-0.590089, 1.072079,2.4744,-0.557774, 1.144271,2.4744,-0.384379, + 1.144271,2.4744,-0.384379, 1.210564,2.4408,-0.406648, 1.13419,2.4408,-0.590089, + 1.031508,2.4408,-0.75701, 0.975021,2.4744,-0.715555, 1.072079,2.4744,-0.557774, + 1.072079,2.4744,-0.557774, 1.13419,2.4408,-0.590089, 1.031508,2.4408,-0.75701, + 0.904966,2.4408,-0.904966, 0.855408,2.4744,-0.855408, 0.975021,2.4744,-0.715555, + 0.975021,2.4744,-0.715555, 1.031508,2.4408,-0.75701, 0.904966,2.4408,-0.904966, + 0.75701,2.4408,-1.031508, 0.715555,2.4744,-0.975021, 0.855408,2.4744,-0.855408, + 0.855408,2.4744,-0.855408, 0.904966,2.4408,-0.904966, 0.75701,2.4408,-1.031508, + 0.590089,2.4408,-1.13419, 0.557774,2.4744,-1.072079, 0.715555,2.4744,-0.975021, + 0.715555,2.4744,-0.975021, 0.75701,2.4408,-1.031508, 0.590089,2.4408,-1.13419, + 0.406648,2.4408,-1.210564, 0.384379,2.4744,-1.144271, 0.557774,2.4744,-1.072079, + 0.557774,2.4744,-1.072079, 0.590089,2.4408,-1.13419, 0.406648,2.4408,-1.210564, + 0.209136,2.4408,-1.258183, 0.197684,2.4744,-1.189282, 0.384379,2.4744,-1.144271, + 0.384379,2.4744,-1.144271, 0.406648,2.4408,-1.210564, 0.209136,2.4408,-1.258183, + 0,2.4408,-1.2746, 0,2.4744,-1.2048, 0.197684,2.4744,-1.189282, + 0.197684,2.4744,-1.189282, 0.209136,2.4408,-1.258183, 0,2.4408,-1.2746, + 1.283256,2.4,-0.213304, 1.258183,2.4408,-0.209136, 1.2746,2.4408,0, + 1.2746,2.4408,0, 1.3,2.4,0, 1.283256,2.4,-0.213304, + 1.234688,2.4,-0.414752, 1.210564,2.4408,-0.406648, 1.258183,2.4408,-0.209136, + 1.258183,2.4408,-0.209136, 1.283256,2.4,-0.213304, 1.234688,2.4,-0.414752, + 1.156792,2.4,-0.601848, 1.13419,2.4408,-0.590089, 1.210564,2.4408,-0.406648, + 1.210564,2.4408,-0.406648, 1.234688,2.4,-0.414752, 1.156792,2.4,-0.601848, + 1.052064,2.4,-0.772096, 1.031508,2.4408,-0.75701, 1.13419,2.4408,-0.590089, + 1.13419,2.4408,-0.590089, 1.156792,2.4,-0.601848, 1.052064,2.4,-0.772096, + 0.923,2.4,-0.923, 0.904966,2.4408,-0.904966, 1.031508,2.4408,-0.75701, + 1.031508,2.4408,-0.75701, 1.052064,2.4,-0.772096, 0.923,2.4,-0.923, + 0.772096,2.4,-1.052064, 0.75701,2.4408,-1.031508, 0.904966,2.4408,-0.904966, + 0.904966,2.4408,-0.904966, 0.923,2.4,-0.923, 0.772096,2.4,-1.052064, + 0.601848,2.4,-1.156792, 0.590089,2.4408,-1.13419, 0.75701,2.4408,-1.031508, + 0.75701,2.4408,-1.031508, 0.772096,2.4,-1.052064, 0.601848,2.4,-1.156792, + 0.414752,2.4,-1.234688, 0.406648,2.4408,-1.210564, 0.590089,2.4408,-1.13419, + 0.590089,2.4408,-1.13419, 0.601848,2.4,-1.156792, 0.414752,2.4,-1.234688, + 0.213304,2.4,-1.283256, 0.209136,2.4408,-1.258183, 0.406648,2.4408,-1.210564, + 0.406648,2.4408,-1.210564, 0.414752,2.4,-1.234688, 0.213304,2.4,-1.283256, + 0,2.4,-1.3, 0,2.4408,-1.2746, 0.209136,2.4408,-1.258183, + 0.209136,2.4408,-1.258183, 0.213304,2.4,-1.283256, 0,2.4,-1.3, + -0.045844,2.6592,-0.275801, -0.032816,2.7,-0.197424, 0,2.7,-0.2, + 0,2.7,-0.2, 0,2.6592,-0.2794, -0.045844,2.6592,-0.275801, + -0.08914,2.6592,-0.265363, -0.063808,2.7,-0.189952, -0.032816,2.7,-0.197424, + -0.032816,2.7,-0.197424, -0.045844,2.6592,-0.275801, -0.08914,2.6592,-0.265363, + -0.129351,2.6592,-0.248621, -0.092592,2.7,-0.177968, -0.063808,2.7,-0.189952, + -0.063808,2.7,-0.189952, -0.08914,2.6592,-0.265363, -0.129351,2.6592,-0.248621, + -0.165941,2.6592,-0.226113, -0.118784,2.7,-0.161856, -0.092592,2.7,-0.177968, + -0.092592,2.7,-0.177968, -0.129351,2.6592,-0.248621, -0.165941,2.6592,-0.226113, + -0.198374,2.6592,-0.198374, -0.142,2.7,-0.142, -0.118784,2.7,-0.161856, + -0.118784,2.7,-0.161856, -0.165941,2.6592,-0.226113, -0.198374,2.6592,-0.198374, + -0.226113,2.6592,-0.165941, -0.161856,2.7,-0.118784, -0.142,2.7,-0.142, + -0.142,2.7,-0.142, -0.198374,2.6592,-0.198374, -0.226113,2.6592,-0.165941, + -0.248621,2.6592,-0.129351, -0.177968,2.7,-0.092592, -0.161856,2.7,-0.118784, + -0.161856,2.7,-0.118784, -0.226113,2.6592,-0.165941, -0.248621,2.6592,-0.129351, + -0.265363,2.6592,-0.08914, -0.189952,2.7,-0.063808, -0.177968,2.7,-0.092592, + -0.177968,2.7,-0.092592, -0.248621,2.6592,-0.129351, -0.265363,2.6592,-0.08914, + -0.275801,2.6592,-0.045844, -0.197424,2.7,-0.032816, -0.189952,2.7,-0.063808, + -0.189952,2.7,-0.063808, -0.265363,2.6592,-0.08914, -0.275801,2.6592,-0.045844, + -0.2794,2.6592,0, -0.2,2.7,0, -0.197424,2.7,-0.032816, + -0.197424,2.7,-0.032816, -0.275801,2.6592,-0.045844, -0.2794,2.6592,0, + -0.064188,2.6256,-0.386161, -0.045844,2.6592,-0.275801, 0,2.6592,-0.2794, + 0,2.6592,-0.2794, 0,2.6256,-0.3912, -0.064188,2.6256,-0.386161, + -0.124808,2.6256,-0.371546, -0.08914,2.6592,-0.265363, -0.045844,2.6592,-0.275801, + -0.045844,2.6592,-0.275801, -0.064188,2.6256,-0.386161, -0.124808,2.6256,-0.371546, + -0.18111,2.6256,-0.348105, -0.129351,2.6592,-0.248621, -0.08914,2.6592,-0.265363, + -0.08914,2.6592,-0.265363, -0.124808,2.6256,-0.371546, -0.18111,2.6256,-0.348105, + -0.232342,2.6256,-0.31659, -0.165941,2.6592,-0.226113, -0.129351,2.6592,-0.248621, + -0.129351,2.6592,-0.248621, -0.18111,2.6256,-0.348105, -0.232342,2.6256,-0.31659, + -0.277752,2.6256,-0.277752, -0.198374,2.6592,-0.198374, -0.165941,2.6592,-0.226113, + -0.165941,2.6592,-0.226113, -0.232342,2.6256,-0.31659, -0.277752,2.6256,-0.277752, + -0.31659,2.6256,-0.232342, -0.226113,2.6592,-0.165941, -0.198374,2.6592,-0.198374, + -0.198374,2.6592,-0.198374, -0.277752,2.6256,-0.277752, -0.31659,2.6256,-0.232342, + -0.348105,2.6256,-0.18111, -0.248621,2.6592,-0.129351, -0.226113,2.6592,-0.165941, + -0.226113,2.6592,-0.165941, -0.31659,2.6256,-0.232342, -0.348105,2.6256,-0.18111, + -0.371546,2.6256,-0.124808, -0.265363,2.6592,-0.08914, -0.248621,2.6592,-0.129351, + -0.248621,2.6592,-0.129351, -0.348105,2.6256,-0.18111, -0.371546,2.6256,-0.124808, + -0.386161,2.6256,-0.064188, -0.275801,2.6592,-0.045844, -0.265363,2.6592,-0.08914, + -0.265363,2.6592,-0.08914, -0.371546,2.6256,-0.124808, -0.386161,2.6256,-0.064188, + -0.3912,2.6256,0, -0.2794,2.6592,0, -0.275801,2.6592,-0.045844, + -0.275801,2.6592,-0.045844, -0.386161,2.6256,-0.064188, -0.3912,2.6256,0, + -0.086273,2.5974,-0.519028, -0.064188,2.6256,-0.386161, 0,2.6256,-0.3912, + 0,2.6256,-0.3912, 0,2.5974,-0.5258, -0.086273,2.5974,-0.519028, + -0.167751,2.5974,-0.499384, -0.124808,2.6256,-0.371546, -0.064188,2.6256,-0.386161, + -0.064188,2.6256,-0.386161, -0.086273,2.5974,-0.519028, -0.167751,2.5974,-0.499384, + -0.243424,2.5974,-0.467878, -0.18111,2.6256,-0.348105, -0.124808,2.6256,-0.371546, + -0.124808,2.6256,-0.371546, -0.167751,2.5974,-0.499384, -0.243424,2.5974,-0.467878, + -0.312283,2.5974,-0.425519, -0.232342,2.6256,-0.31659, -0.18111,2.6256,-0.348105, + -0.18111,2.6256,-0.348105, -0.243424,2.5974,-0.467878, -0.312283,2.5974,-0.425519, + -0.373318,2.5974,-0.373318, -0.277752,2.6256,-0.277752, -0.232342,2.6256,-0.31659, + -0.232342,2.6256,-0.31659, -0.312283,2.5974,-0.425519, -0.373318,2.5974,-0.373318, + -0.425519,2.5974,-0.312283, -0.31659,2.6256,-0.232342, -0.277752,2.6256,-0.277752, + -0.277752,2.6256,-0.277752, -0.373318,2.5974,-0.373318, -0.425519,2.5974,-0.312283, + -0.467878,2.5974,-0.243424, -0.348105,2.6256,-0.18111, -0.31659,2.6256,-0.232342, + -0.31659,2.6256,-0.232342, -0.425519,2.5974,-0.312283, -0.467878,2.5974,-0.243424, + -0.499384,2.5974,-0.167751, -0.371546,2.6256,-0.124808, -0.348105,2.6256,-0.18111, + -0.348105,2.6256,-0.18111, -0.467878,2.5974,-0.243424, -0.499384,2.5974,-0.167751, + -0.519028,2.5974,-0.086273, -0.386161,2.6256,-0.064188, -0.371546,2.6256,-0.124808, + -0.371546,2.6256,-0.124808, -0.499384,2.5974,-0.167751, -0.519028,2.5974,-0.086273, + -0.5258,2.5974,0, -0.3912,2.6256,0, -0.386161,2.6256,-0.064188, + -0.386161,2.6256,-0.064188, -0.519028,2.5974,-0.086273, -0.5258,2.5974,0, + -0.110524,2.5728,-0.664924, -0.086273,2.5974,-0.519028, 0,2.5974,-0.5258, + 0,2.5974,-0.5258, 0,2.5728,-0.6736, -0.110524,2.5728,-0.664924, + -0.214905,2.5728,-0.639758, -0.167751,2.5974,-0.499384, -0.086273,2.5974,-0.519028, + -0.086273,2.5974,-0.519028, -0.110524,2.5728,-0.664924, -0.214905,2.5728,-0.639758, + -0.31185,2.5728,-0.599396, -0.243424,2.5974,-0.467878, -0.167751,2.5974,-0.499384, + -0.167751,2.5974,-0.499384, -0.214905,2.5728,-0.639758, -0.31185,2.5728,-0.599396, + -0.400065,2.5728,-0.545131, -0.312283,2.5974,-0.425519, -0.243424,2.5974,-0.467878, + -0.243424,2.5974,-0.467878, -0.31185,2.5728,-0.599396, -0.400065,2.5728,-0.545131, + -0.478256,2.5728,-0.478256, -0.373318,2.5974,-0.373318, -0.312283,2.5974,-0.425519, + -0.312283,2.5974,-0.425519, -0.400065,2.5728,-0.545131, -0.478256,2.5728,-0.478256, + -0.545131,2.5728,-0.400065, -0.425519,2.5974,-0.312283, -0.373318,2.5974,-0.373318, + -0.373318,2.5974,-0.373318, -0.478256,2.5728,-0.478256, -0.545131,2.5728,-0.400065, + -0.599396,2.5728,-0.31185, -0.467878,2.5974,-0.243424, -0.425519,2.5974,-0.312283, + -0.425519,2.5974,-0.312283, -0.545131,2.5728,-0.400065, -0.599396,2.5728,-0.31185, + -0.639758,2.5728,-0.214905, -0.499384,2.5974,-0.167751, -0.467878,2.5974,-0.243424, + -0.467878,2.5974,-0.243424, -0.599396,2.5728,-0.31185, -0.639758,2.5728,-0.214905, + -0.664924,2.5728,-0.110524, -0.519028,2.5974,-0.086273, -0.499384,2.5974,-0.167751, + -0.499384,2.5974,-0.167751, -0.639758,2.5728,-0.214905, -0.664924,2.5728,-0.110524, + -0.6736,2.5728,0, -0.5258,2.5974,0, -0.519028,2.5974,-0.086273, + -0.519028,2.5974,-0.086273, -0.664924,2.5728,-0.110524, -0.6736,2.5728,0, + -0.135366,2.55,-0.814374, -0.110524,2.5728,-0.664924, 0,2.5728,-0.6736, + 0,2.5728,-0.6736, 0,2.55,-0.825, -0.135366,2.55,-0.814374, + -0.263208,2.55,-0.783552, -0.214905,2.5728,-0.639758, -0.110524,2.5728,-0.664924, + -0.110524,2.5728,-0.664924, -0.135366,2.55,-0.814374, -0.263208,2.55,-0.783552, + -0.381942,2.55,-0.734118, -0.31185,2.5728,-0.599396, -0.214905,2.5728,-0.639758, + -0.214905,2.5728,-0.639758, -0.263208,2.55,-0.783552, -0.381942,2.55,-0.734118, + -0.489984,2.55,-0.667656, -0.400065,2.5728,-0.545131, -0.31185,2.5728,-0.599396, + -0.31185,2.5728,-0.599396, -0.381942,2.55,-0.734118, -0.489984,2.55,-0.667656, + -0.58575,2.55,-0.58575, -0.478256,2.5728,-0.478256, -0.400065,2.5728,-0.545131, + -0.400065,2.5728,-0.545131, -0.489984,2.55,-0.667656, -0.58575,2.55,-0.58575, + -0.667656,2.55,-0.489984, -0.545131,2.5728,-0.400065, -0.478256,2.5728,-0.478256, + -0.478256,2.5728,-0.478256, -0.58575,2.55,-0.58575, -0.667656,2.55,-0.489984, + -0.734118,2.55,-0.381942, -0.599396,2.5728,-0.31185, -0.545131,2.5728,-0.400065, + -0.545131,2.5728,-0.400065, -0.667656,2.55,-0.489984, -0.734118,2.55,-0.381942, + -0.783552,2.55,-0.263208, -0.639758,2.5728,-0.214905, -0.599396,2.5728,-0.31185, + -0.599396,2.5728,-0.31185, -0.734118,2.55,-0.381942, -0.783552,2.55,-0.263208, + -0.814374,2.55,-0.135366, -0.664924,2.5728,-0.110524, -0.639758,2.5728,-0.214905, + -0.639758,2.5728,-0.214905, -0.783552,2.55,-0.263208, -0.814374,2.55,-0.135366, + -0.825,2.55,0, -0.6736,2.5728,0, -0.664924,2.5728,-0.110524, + -0.664924,2.5728,-0.110524, -0.814374,2.55,-0.135366, -0.825,2.55,0, + -0.159223,2.5272,-0.957901, -0.135366,2.55,-0.814374, 0,2.55,-0.825, + 0,2.55,-0.825, 0,2.5272,-0.9704, -0.159223,2.5272,-0.957901, + -0.309596,2.5272,-0.921647, -0.263208,2.55,-0.783552, -0.135366,2.55,-0.814374, + -0.135366,2.55,-0.814374, -0.159223,2.5272,-0.957901, -0.309596,2.5272,-0.921647, + -0.449256,2.5272,-0.863501, -0.381942,2.55,-0.734118, -0.263208,2.55,-0.783552, + -0.263208,2.55,-0.783552, -0.309596,2.5272,-0.921647, -0.449256,2.5272,-0.863501, + -0.57634,2.5272,-0.785325, -0.489984,2.55,-0.667656, -0.381942,2.55,-0.734118, + -0.381942,2.55,-0.734118, -0.449256,2.5272,-0.863501, -0.57634,2.5272,-0.785325, + -0.688984,2.5272,-0.688984, -0.58575,2.55,-0.58575, -0.489984,2.55,-0.667656, + -0.489984,2.55,-0.667656, -0.57634,2.5272,-0.785325, -0.688984,2.5272,-0.688984, + -0.785325,2.5272,-0.57634, -0.667656,2.55,-0.489984, -0.58575,2.55,-0.58575, + -0.58575,2.55,-0.58575, -0.688984,2.5272,-0.688984, -0.785325,2.5272,-0.57634, + -0.863501,2.5272,-0.449256, -0.734118,2.55,-0.381942, -0.667656,2.55,-0.489984, + -0.667656,2.55,-0.489984, -0.785325,2.5272,-0.57634, -0.863501,2.5272,-0.449256, + -0.921647,2.5272,-0.309596, -0.783552,2.55,-0.263208, -0.734118,2.55,-0.381942, + -0.734118,2.55,-0.381942, -0.863501,2.5272,-0.449256, -0.921647,2.5272,-0.309596, + -0.957901,2.5272,-0.159223, -0.814374,2.55,-0.135366, -0.783552,2.55,-0.263208, + -0.783552,2.55,-0.263208, -0.921647,2.5272,-0.309596, -0.957901,2.5272,-0.159223, + -0.9704,2.5272,0, -0.825,2.55,0, -0.814374,2.55,-0.135366, + -0.814374,2.55,-0.135366, -0.957901,2.5272,-0.159223, -0.9704,2.5272,0, + -0.180521,2.5026,-1.086029, -0.159223,2.5272,-0.957901, 0,2.5272,-0.9704, + 0,2.5272,-0.9704, 0,2.5026,-1.1002, -0.180521,2.5026,-1.086029, + -0.351008,2.5026,-1.044926, -0.309596,2.5272,-0.921647, -0.159223,2.5272,-0.957901, + -0.159223,2.5272,-0.957901, -0.180521,2.5026,-1.086029, -0.351008,2.5026,-1.044926, + -0.509349,2.5026,-0.979002, -0.449256,2.5272,-0.863501, -0.309596,2.5272,-0.921647, + -0.309596,2.5272,-0.921647, -0.351008,2.5026,-1.044926, -0.509349,2.5026,-0.979002, + -0.653431,2.5026,-0.89037, -0.57634,2.5272,-0.785325, -0.449256,2.5272,-0.863501, + -0.449256,2.5272,-0.863501, -0.509349,2.5026,-0.979002, -0.653431,2.5026,-0.89037, + -0.781142,2.5026,-0.781142, -0.688984,2.5272,-0.688984, -0.57634,2.5272,-0.785325, + -0.57634,2.5272,-0.785325, -0.653431,2.5026,-0.89037, -0.781142,2.5026,-0.781142, + -0.89037,2.5026,-0.653431, -0.785325,2.5272,-0.57634, -0.688984,2.5272,-0.688984, + -0.688984,2.5272,-0.688984, -0.781142,2.5026,-0.781142, -0.89037,2.5026,-0.653431, + -0.979002,2.5026,-0.509349, -0.863501,2.5272,-0.449256, -0.785325,2.5272,-0.57634, + -0.785325,2.5272,-0.57634, -0.89037,2.5026,-0.653431, -0.979002,2.5026,-0.509349, + -1.044926,2.5026,-0.351008, -0.921647,2.5272,-0.309596, -0.863501,2.5272,-0.449256, + -0.863501,2.5272,-0.449256, -0.979002,2.5026,-0.509349, -1.044926,2.5026,-0.351008, + -1.086029,2.5026,-0.180521, -0.957901,2.5272,-0.159223, -0.921647,2.5272,-0.309596, + -0.921647,2.5272,-0.309596, -1.044926,2.5026,-0.351008, -1.086029,2.5026,-0.180521, + -1.1002,2.5026,0, -0.9704,2.5272,0, -0.957901,2.5272,-0.159223, + -0.957901,2.5272,-0.159223, -1.086029,2.5026,-0.180521, -1.1002,2.5026,0, + -0.197684,2.4744,-1.189282, -0.180521,2.5026,-1.086029, 0,2.5026,-1.1002, + 0,2.5026,-1.1002, 0,2.4744,-1.2048, -0.197684,2.4744,-1.189282, + -0.384379,2.4744,-1.144271, -0.351008,2.5026,-1.044926, -0.180521,2.5026,-1.086029, + -0.180521,2.5026,-1.086029, -0.197684,2.4744,-1.189282, -0.384379,2.4744,-1.144271, + -0.557774,2.4744,-1.072079, -0.509349,2.5026,-0.979002, -0.351008,2.5026,-1.044926, + -0.351008,2.5026,-1.044926, -0.384379,2.4744,-1.144271, -0.557774,2.4744,-1.072079, + -0.715555,2.4744,-0.975021, -0.653431,2.5026,-0.89037, -0.509349,2.5026,-0.979002, + -0.509349,2.5026,-0.979002, -0.557774,2.4744,-1.072079, -0.715555,2.4744,-0.975021, + -0.855408,2.4744,-0.855408, -0.781142,2.5026,-0.781142, -0.653431,2.5026,-0.89037, + -0.653431,2.5026,-0.89037, -0.715555,2.4744,-0.975021, -0.855408,2.4744,-0.855408, + -0.975021,2.4744,-0.715555, -0.89037,2.5026,-0.653431, -0.781142,2.5026,-0.781142, + -0.781142,2.5026,-0.781142, -0.855408,2.4744,-0.855408, -0.975021,2.4744,-0.715555, + -1.072079,2.4744,-0.557774, -0.979002,2.5026,-0.509349, -0.89037,2.5026,-0.653431, + -0.89037,2.5026,-0.653431, -0.975021,2.4744,-0.715555, -1.072079,2.4744,-0.557774, + -1.144271,2.4744,-0.384379, -1.044926,2.5026,-0.351008, -0.979002,2.5026,-0.509349, + -0.979002,2.5026,-0.509349, -1.072079,2.4744,-0.557774, -1.144271,2.4744,-0.384379, + -1.189282,2.4744,-0.197684, -1.086029,2.5026,-0.180521, -1.044926,2.5026,-0.351008, + -1.044926,2.5026,-0.351008, -1.144271,2.4744,-0.384379, -1.189282,2.4744,-0.197684, + -1.2048,2.4744,0, -1.1002,2.5026,0, -1.086029,2.5026,-0.180521, + -1.086029,2.5026,-0.180521, -1.189282,2.4744,-0.197684, -1.2048,2.4744,0, + -0.209136,2.4408,-1.258183, -0.197684,2.4744,-1.189282, 0,2.4744,-1.2048, + 0,2.4744,-1.2048, 0,2.4408,-1.2746, -0.209136,2.4408,-1.258183, + -0.406648,2.4408,-1.210564, -0.384379,2.4744,-1.144271, -0.197684,2.4744,-1.189282, + -0.197684,2.4744,-1.189282, -0.209136,2.4408,-1.258183, -0.406648,2.4408,-1.210564, + -0.590089,2.4408,-1.13419, -0.557774,2.4744,-1.072079, -0.384379,2.4744,-1.144271, + -0.384379,2.4744,-1.144271, -0.406648,2.4408,-1.210564, -0.590089,2.4408,-1.13419, + -0.75701,2.4408,-1.031508, -0.715555,2.4744,-0.975021, -0.557774,2.4744,-1.072079, + -0.557774,2.4744,-1.072079, -0.590089,2.4408,-1.13419, -0.75701,2.4408,-1.031508, + -0.904966,2.4408,-0.904966, -0.855408,2.4744,-0.855408, -0.715555,2.4744,-0.975021, + -0.715555,2.4744,-0.975021, -0.75701,2.4408,-1.031508, -0.904966,2.4408,-0.904966, + -1.031508,2.4408,-0.75701, -0.975021,2.4744,-0.715555, -0.855408,2.4744,-0.855408, + -0.855408,2.4744,-0.855408, -0.904966,2.4408,-0.904966, -1.031508,2.4408,-0.75701, + -1.13419,2.4408,-0.590089, -1.072079,2.4744,-0.557774, -0.975021,2.4744,-0.715555, + -0.975021,2.4744,-0.715555, -1.031508,2.4408,-0.75701, -1.13419,2.4408,-0.590089, + -1.210564,2.4408,-0.406648, -1.144271,2.4744,-0.384379, -1.072079,2.4744,-0.557774, + -1.072079,2.4744,-0.557774, -1.13419,2.4408,-0.590089, -1.210564,2.4408,-0.406648, + -1.258183,2.4408,-0.209136, -1.189282,2.4744,-0.197684, -1.144271,2.4744,-0.384379, + -1.144271,2.4744,-0.384379, -1.210564,2.4408,-0.406648, -1.258183,2.4408,-0.209136, + -1.2746,2.4408,0, -1.2048,2.4744,0, -1.189282,2.4744,-0.197684, + -1.189282,2.4744,-0.197684, -1.258183,2.4408,-0.209136, -1.2746,2.4408,0, + -0.213304,2.4,-1.283256, -0.209136,2.4408,-1.258183, 0,2.4408,-1.2746, + 0,2.4408,-1.2746, 0,2.4,-1.3, -0.213304,2.4,-1.283256, + -0.414752,2.4,-1.234688, -0.406648,2.4408,-1.210564, -0.209136,2.4408,-1.258183, + -0.209136,2.4408,-1.258183, -0.213304,2.4,-1.283256, -0.414752,2.4,-1.234688, + -0.601848,2.4,-1.156792, -0.590089,2.4408,-1.13419, -0.406648,2.4408,-1.210564, + -0.406648,2.4408,-1.210564, -0.414752,2.4,-1.234688, -0.601848,2.4,-1.156792, + -0.772096,2.4,-1.052064, -0.75701,2.4408,-1.031508, -0.590089,2.4408,-1.13419, + -0.590089,2.4408,-1.13419, -0.601848,2.4,-1.156792, -0.772096,2.4,-1.052064, + -0.923,2.4,-0.923, -0.904966,2.4408,-0.904966, -0.75701,2.4408,-1.031508, + -0.75701,2.4408,-1.031508, -0.772096,2.4,-1.052064, -0.923,2.4,-0.923, + -1.052064,2.4,-0.772096, -1.031508,2.4408,-0.75701, -0.904966,2.4408,-0.904966, + -0.904966,2.4408,-0.904966, -0.923,2.4,-0.923, -1.052064,2.4,-0.772096, + -1.156792,2.4,-0.601848, -1.13419,2.4408,-0.590089, -1.031508,2.4408,-0.75701, + -1.031508,2.4408,-0.75701, -1.052064,2.4,-0.772096, -1.156792,2.4,-0.601848, + -1.234688,2.4,-0.414752, -1.210564,2.4408,-0.406648, -1.13419,2.4408,-0.590089, + -1.13419,2.4408,-0.590089, -1.156792,2.4,-0.601848, -1.234688,2.4,-0.414752, + -1.283256,2.4,-0.213304, -1.258183,2.4408,-0.209136, -1.210564,2.4408,-0.406648, + -1.210564,2.4408,-0.406648, -1.234688,2.4,-0.414752, -1.283256,2.4,-0.213304, + -1.3,2.4,0, -1.2746,2.4408,0, -1.258183,2.4408,-0.209136, + -1.258183,2.4408,-0.209136, -1.283256,2.4,-0.213304, -1.3,2.4,0, + -0.275801,2.6592,0.045844, -0.197424,2.7,0.032816, -0.2,2.7,0, + -0.2,2.7,0, -0.2794,2.6592,0, -0.275801,2.6592,0.045844, + -0.265363,2.6592,0.08914, -0.189952,2.7,0.063808, -0.197424,2.7,0.032816, + -0.197424,2.7,0.032816, -0.275801,2.6592,0.045844, -0.265363,2.6592,0.08914, + -0.248621,2.6592,0.129351, -0.177968,2.7,0.092592, -0.189952,2.7,0.063808, + -0.189952,2.7,0.063808, -0.265363,2.6592,0.08914, -0.248621,2.6592,0.129351, + -0.226113,2.6592,0.165941, -0.161856,2.7,0.118784, -0.177968,2.7,0.092592, + -0.177968,2.7,0.092592, -0.248621,2.6592,0.129351, -0.226113,2.6592,0.165941, + -0.198374,2.6592,0.198374, -0.142,2.7,0.142, -0.161856,2.7,0.118784, + -0.161856,2.7,0.118784, -0.226113,2.6592,0.165941, -0.198374,2.6592,0.198374, + -0.165941,2.6592,0.226113, -0.118784,2.7,0.161856, -0.142,2.7,0.142, + -0.142,2.7,0.142, -0.198374,2.6592,0.198374, -0.165941,2.6592,0.226113, + -0.129351,2.6592,0.248621, -0.092592,2.7,0.177968, -0.118784,2.7,0.161856, + -0.118784,2.7,0.161856, -0.165941,2.6592,0.226113, -0.129351,2.6592,0.248621, + -0.08914,2.6592,0.265363, -0.063808,2.7,0.189952, -0.092592,2.7,0.177968, + -0.092592,2.7,0.177968, -0.129351,2.6592,0.248621, -0.08914,2.6592,0.265363, + -0.045844,2.6592,0.275801, -0.032816,2.7,0.197424, -0.063808,2.7,0.189952, + -0.063808,2.7,0.189952, -0.08914,2.6592,0.265363, -0.045844,2.6592,0.275801, + 0,2.6592,0.2794, 0,2.7,0.2, -0.032816,2.7,0.197424, + -0.032816,2.7,0.197424, -0.045844,2.6592,0.275801, 0,2.6592,0.2794, + -0.386161,2.6256,0.064188, -0.275801,2.6592,0.045844, -0.2794,2.6592,0, + -0.2794,2.6592,0, -0.3912,2.6256,0, -0.386161,2.6256,0.064188, + -0.371546,2.6256,0.124808, -0.265363,2.6592,0.08914, -0.275801,2.6592,0.045844, + -0.275801,2.6592,0.045844, -0.386161,2.6256,0.064188, -0.371546,2.6256,0.124808, + -0.348105,2.6256,0.18111, -0.248621,2.6592,0.129351, -0.265363,2.6592,0.08914, + -0.265363,2.6592,0.08914, -0.371546,2.6256,0.124808, -0.348105,2.6256,0.18111, + -0.31659,2.6256,0.232342, -0.226113,2.6592,0.165941, -0.248621,2.6592,0.129351, + -0.248621,2.6592,0.129351, -0.348105,2.6256,0.18111, -0.31659,2.6256,0.232342, + -0.277752,2.6256,0.277752, -0.198374,2.6592,0.198374, -0.226113,2.6592,0.165941, + -0.226113,2.6592,0.165941, -0.31659,2.6256,0.232342, -0.277752,2.6256,0.277752, + -0.232342,2.6256,0.31659, -0.165941,2.6592,0.226113, -0.198374,2.6592,0.198374, + -0.198374,2.6592,0.198374, -0.277752,2.6256,0.277752, -0.232342,2.6256,0.31659, + -0.18111,2.6256,0.348105, -0.129351,2.6592,0.248621, -0.165941,2.6592,0.226113, + -0.165941,2.6592,0.226113, -0.232342,2.6256,0.31659, -0.18111,2.6256,0.348105, + -0.124808,2.6256,0.371546, -0.08914,2.6592,0.265363, -0.129351,2.6592,0.248621, + -0.129351,2.6592,0.248621, -0.18111,2.6256,0.348105, -0.124808,2.6256,0.371546, + -0.064188,2.6256,0.386161, -0.045844,2.6592,0.275801, -0.08914,2.6592,0.265363, + -0.08914,2.6592,0.265363, -0.124808,2.6256,0.371546, -0.064188,2.6256,0.386161, + 0,2.6256,0.3912, 0,2.6592,0.2794, -0.045844,2.6592,0.275801, + -0.045844,2.6592,0.275801, -0.064188,2.6256,0.386161, 0,2.6256,0.3912, + -0.519028,2.5974,0.086273, -0.386161,2.6256,0.064188, -0.3912,2.6256,0, + -0.3912,2.6256,0, -0.5258,2.5974,0, -0.519028,2.5974,0.086273, + -0.499384,2.5974,0.167751, -0.371546,2.6256,0.124808, -0.386161,2.6256,0.064188, + -0.386161,2.6256,0.064188, -0.519028,2.5974,0.086273, -0.499384,2.5974,0.167751, + -0.467878,2.5974,0.243424, -0.348105,2.6256,0.18111, -0.371546,2.6256,0.124808, + -0.371546,2.6256,0.124808, -0.499384,2.5974,0.167751, -0.467878,2.5974,0.243424, + -0.425519,2.5974,0.312283, -0.31659,2.6256,0.232342, -0.348105,2.6256,0.18111, + -0.348105,2.6256,0.18111, -0.467878,2.5974,0.243424, -0.425519,2.5974,0.312283, + -0.373318,2.5974,0.373318, -0.277752,2.6256,0.277752, -0.31659,2.6256,0.232342, + -0.31659,2.6256,0.232342, -0.425519,2.5974,0.312283, -0.373318,2.5974,0.373318, + -0.312283,2.5974,0.425519, -0.232342,2.6256,0.31659, -0.277752,2.6256,0.277752, + -0.277752,2.6256,0.277752, -0.373318,2.5974,0.373318, -0.312283,2.5974,0.425519, + -0.243424,2.5974,0.467878, -0.18111,2.6256,0.348105, -0.232342,2.6256,0.31659, + -0.232342,2.6256,0.31659, -0.312283,2.5974,0.425519, -0.243424,2.5974,0.467878, + -0.167751,2.5974,0.499384, -0.124808,2.6256,0.371546, -0.18111,2.6256,0.348105, + -0.18111,2.6256,0.348105, -0.243424,2.5974,0.467878, -0.167751,2.5974,0.499384, + -0.086273,2.5974,0.519028, -0.064188,2.6256,0.386161, -0.124808,2.6256,0.371546, + -0.124808,2.6256,0.371546, -0.167751,2.5974,0.499384, -0.086273,2.5974,0.519028, + 0,2.5974,0.5258, 0,2.6256,0.3912, -0.064188,2.6256,0.386161, + -0.064188,2.6256,0.386161, -0.086273,2.5974,0.519028, 0,2.5974,0.5258, + -0.664924,2.5728,0.110524, -0.519028,2.5974,0.086273, -0.5258,2.5974,0, + -0.5258,2.5974,0, -0.6736,2.5728,0, -0.664924,2.5728,0.110524, + -0.639758,2.5728,0.214905, -0.499384,2.5974,0.167751, -0.519028,2.5974,0.086273, + -0.519028,2.5974,0.086273, -0.664924,2.5728,0.110524, -0.639758,2.5728,0.214905, + -0.599396,2.5728,0.31185, -0.467878,2.5974,0.243424, -0.499384,2.5974,0.167751, + -0.499384,2.5974,0.167751, -0.639758,2.5728,0.214905, -0.599396,2.5728,0.31185, + -0.545131,2.5728,0.400065, -0.425519,2.5974,0.312283, -0.467878,2.5974,0.243424, + -0.467878,2.5974,0.243424, -0.599396,2.5728,0.31185, -0.545131,2.5728,0.400065, + -0.478256,2.5728,0.478256, -0.373318,2.5974,0.373318, -0.425519,2.5974,0.312283, + -0.425519,2.5974,0.312283, -0.545131,2.5728,0.400065, -0.478256,2.5728,0.478256, + -0.400065,2.5728,0.545131, -0.312283,2.5974,0.425519, -0.373318,2.5974,0.373318, + -0.373318,2.5974,0.373318, -0.478256,2.5728,0.478256, -0.400065,2.5728,0.545131, + -0.31185,2.5728,0.599396, -0.243424,2.5974,0.467878, -0.312283,2.5974,0.425519, + -0.312283,2.5974,0.425519, -0.400065,2.5728,0.545131, -0.31185,2.5728,0.599396, + -0.214905,2.5728,0.639758, -0.167751,2.5974,0.499384, -0.243424,2.5974,0.467878, + -0.243424,2.5974,0.467878, -0.31185,2.5728,0.599396, -0.214905,2.5728,0.639758, + -0.110524,2.5728,0.664924, -0.086273,2.5974,0.519028, -0.167751,2.5974,0.499384, + -0.167751,2.5974,0.499384, -0.214905,2.5728,0.639758, -0.110524,2.5728,0.664924, + 0,2.5728,0.6736, 0,2.5974,0.5258, -0.086273,2.5974,0.519028, + -0.086273,2.5974,0.519028, -0.110524,2.5728,0.664924, 0,2.5728,0.6736, + -0.814374,2.55,0.135366, -0.664924,2.5728,0.110524, -0.6736,2.5728,0, + -0.6736,2.5728,0, -0.825,2.55,0, -0.814374,2.55,0.135366, + -0.783552,2.55,0.263208, -0.639758,2.5728,0.214905, -0.664924,2.5728,0.110524, + -0.664924,2.5728,0.110524, -0.814374,2.55,0.135366, -0.783552,2.55,0.263208, + -0.734118,2.55,0.381942, -0.599396,2.5728,0.31185, -0.639758,2.5728,0.214905, + -0.639758,2.5728,0.214905, -0.783552,2.55,0.263208, -0.734118,2.55,0.381942, + -0.667656,2.55,0.489984, -0.545131,2.5728,0.400065, -0.599396,2.5728,0.31185, + -0.599396,2.5728,0.31185, -0.734118,2.55,0.381942, -0.667656,2.55,0.489984, + -0.58575,2.55,0.58575, -0.478256,2.5728,0.478256, -0.545131,2.5728,0.400065, + -0.545131,2.5728,0.400065, -0.667656,2.55,0.489984, -0.58575,2.55,0.58575, + -0.489984,2.55,0.667656, -0.400065,2.5728,0.545131, -0.478256,2.5728,0.478256, + -0.478256,2.5728,0.478256, -0.58575,2.55,0.58575, -0.489984,2.55,0.667656, + -0.381942,2.55,0.734118, -0.31185,2.5728,0.599396, -0.400065,2.5728,0.545131, + -0.400065,2.5728,0.545131, -0.489984,2.55,0.667656, -0.381942,2.55,0.734118, + -0.263208,2.55,0.783552, -0.214905,2.5728,0.639758, -0.31185,2.5728,0.599396, + -0.31185,2.5728,0.599396, -0.381942,2.55,0.734118, -0.263208,2.55,0.783552, + -0.135366,2.55,0.814374, -0.110524,2.5728,0.664924, -0.214905,2.5728,0.639758, + -0.214905,2.5728,0.639758, -0.263208,2.55,0.783552, -0.135366,2.55,0.814374, + 0,2.55,0.825, 0,2.5728,0.6736, -0.110524,2.5728,0.664924, + -0.110524,2.5728,0.664924, -0.135366,2.55,0.814374, 0,2.55,0.825, + -0.957901,2.5272,0.159223, -0.814374,2.55,0.135366, -0.825,2.55,0, + -0.825,2.55,0, -0.9704,2.5272,0, -0.957901,2.5272,0.159223, + -0.921647,2.5272,0.309596, -0.783552,2.55,0.263208, -0.814374,2.55,0.135366, + -0.814374,2.55,0.135366, -0.957901,2.5272,0.159223, -0.921647,2.5272,0.309596, + -0.863501,2.5272,0.449256, -0.734118,2.55,0.381942, -0.783552,2.55,0.263208, + -0.783552,2.55,0.263208, -0.921647,2.5272,0.309596, -0.863501,2.5272,0.449256, + -0.785325,2.5272,0.57634, -0.667656,2.55,0.489984, -0.734118,2.55,0.381942, + -0.734118,2.55,0.381942, -0.863501,2.5272,0.449256, -0.785325,2.5272,0.57634, + -0.688984,2.5272,0.688984, -0.58575,2.55,0.58575, -0.667656,2.55,0.489984, + -0.667656,2.55,0.489984, -0.785325,2.5272,0.57634, -0.688984,2.5272,0.688984, + -0.57634,2.5272,0.785325, -0.489984,2.55,0.667656, -0.58575,2.55,0.58575, + -0.58575,2.55,0.58575, -0.688984,2.5272,0.688984, -0.57634,2.5272,0.785325, + -0.449256,2.5272,0.863501, -0.381942,2.55,0.734118, -0.489984,2.55,0.667656, + -0.489984,2.55,0.667656, -0.57634,2.5272,0.785325, -0.449256,2.5272,0.863501, + -0.309596,2.5272,0.921647, -0.263208,2.55,0.783552, -0.381942,2.55,0.734118, + -0.381942,2.55,0.734118, -0.449256,2.5272,0.863501, -0.309596,2.5272,0.921647, + -0.159223,2.5272,0.957901, -0.135366,2.55,0.814374, -0.263208,2.55,0.783552, + -0.263208,2.55,0.783552, -0.309596,2.5272,0.921647, -0.159223,2.5272,0.957901, + 0,2.5272,0.9704, 0,2.55,0.825, -0.135366,2.55,0.814374, + -0.135366,2.55,0.814374, -0.159223,2.5272,0.957901, 0,2.5272,0.9704, + -1.086029,2.5026,0.180521, -0.957901,2.5272,0.159223, -0.9704,2.5272,0, + -0.9704,2.5272,0, -1.1002,2.5026,0, -1.086029,2.5026,0.180521, + -1.044926,2.5026,0.351008, -0.921647,2.5272,0.309596, -0.957901,2.5272,0.159223, + -0.957901,2.5272,0.159223, -1.086029,2.5026,0.180521, -1.044926,2.5026,0.351008, + -0.979002,2.5026,0.509349, -0.863501,2.5272,0.449256, -0.921647,2.5272,0.309596, + -0.921647,2.5272,0.309596, -1.044926,2.5026,0.351008, -0.979002,2.5026,0.509349, + -0.89037,2.5026,0.653431, -0.785325,2.5272,0.57634, -0.863501,2.5272,0.449256, + -0.863501,2.5272,0.449256, -0.979002,2.5026,0.509349, -0.89037,2.5026,0.653431, + -0.781142,2.5026,0.781142, -0.688984,2.5272,0.688984, -0.785325,2.5272,0.57634, + -0.785325,2.5272,0.57634, -0.89037,2.5026,0.653431, -0.781142,2.5026,0.781142, + -0.653431,2.5026,0.89037, -0.57634,2.5272,0.785325, -0.688984,2.5272,0.688984, + -0.688984,2.5272,0.688984, -0.781142,2.5026,0.781142, -0.653431,2.5026,0.89037, + -0.509349,2.5026,0.979002, -0.449256,2.5272,0.863501, -0.57634,2.5272,0.785325, + -0.57634,2.5272,0.785325, -0.653431,2.5026,0.89037, -0.509349,2.5026,0.979002, + -0.351008,2.5026,1.044926, -0.309596,2.5272,0.921647, -0.449256,2.5272,0.863501, + -0.449256,2.5272,0.863501, -0.509349,2.5026,0.979002, -0.351008,2.5026,1.044926, + -0.180521,2.5026,1.086029, -0.159223,2.5272,0.957901, -0.309596,2.5272,0.921647, + -0.309596,2.5272,0.921647, -0.351008,2.5026,1.044926, -0.180521,2.5026,1.086029, + 0,2.5026,1.1002, 0,2.5272,0.9704, -0.159223,2.5272,0.957901, + -0.159223,2.5272,0.957901, -0.180521,2.5026,1.086029, 0,2.5026,1.1002, + -1.189282,2.4744,0.197684, -1.086029,2.5026,0.180521, -1.1002,2.5026,0, + -1.1002,2.5026,0, -1.2048,2.4744,0, -1.189282,2.4744,0.197684, + -1.144271,2.4744,0.384379, -1.044926,2.5026,0.351008, -1.086029,2.5026,0.180521, + -1.086029,2.5026,0.180521, -1.189282,2.4744,0.197684, -1.144271,2.4744,0.384379, + -1.072079,2.4744,0.557774, -0.979002,2.5026,0.509349, -1.044926,2.5026,0.351008, + -1.044926,2.5026,0.351008, -1.144271,2.4744,0.384379, -1.072079,2.4744,0.557774, + -0.975021,2.4744,0.715555, -0.89037,2.5026,0.653431, -0.979002,2.5026,0.509349, + -0.979002,2.5026,0.509349, -1.072079,2.4744,0.557774, -0.975021,2.4744,0.715555, + -0.855408,2.4744,0.855408, -0.781142,2.5026,0.781142, -0.89037,2.5026,0.653431, + -0.89037,2.5026,0.653431, -0.975021,2.4744,0.715555, -0.855408,2.4744,0.855408, + -0.715555,2.4744,0.975021, -0.653431,2.5026,0.89037, -0.781142,2.5026,0.781142, + -0.781142,2.5026,0.781142, -0.855408,2.4744,0.855408, -0.715555,2.4744,0.975021, + -0.557774,2.4744,1.072079, -0.509349,2.5026,0.979002, -0.653431,2.5026,0.89037, + -0.653431,2.5026,0.89037, -0.715555,2.4744,0.975021, -0.557774,2.4744,1.072079, + -0.384379,2.4744,1.144271, -0.351008,2.5026,1.044926, -0.509349,2.5026,0.979002, + -0.509349,2.5026,0.979002, -0.557774,2.4744,1.072079, -0.384379,2.4744,1.144271, + -0.197684,2.4744,1.189282, -0.180521,2.5026,1.086029, -0.351008,2.5026,1.044926, + -0.351008,2.5026,1.044926, -0.384379,2.4744,1.144271, -0.197684,2.4744,1.189282, + 0,2.4744,1.2048, 0,2.5026,1.1002, -0.180521,2.5026,1.086029, + -0.180521,2.5026,1.086029, -0.197684,2.4744,1.189282, 0,2.4744,1.2048, + -1.258183,2.4408,0.209136, -1.189282,2.4744,0.197684, -1.2048,2.4744,0, + -1.2048,2.4744,0, -1.2746,2.4408,0, -1.258183,2.4408,0.209136, + -1.210564,2.4408,0.406648, -1.144271,2.4744,0.384379, -1.189282,2.4744,0.197684, + -1.189282,2.4744,0.197684, -1.258183,2.4408,0.209136, -1.210564,2.4408,0.406648, + -1.13419,2.4408,0.590089, -1.072079,2.4744,0.557774, -1.144271,2.4744,0.384379, + -1.144271,2.4744,0.384379, -1.210564,2.4408,0.406648, -1.13419,2.4408,0.590089, + -1.031508,2.4408,0.75701, -0.975021,2.4744,0.715555, -1.072079,2.4744,0.557774, + -1.072079,2.4744,0.557774, -1.13419,2.4408,0.590089, -1.031508,2.4408,0.75701, + -0.904966,2.4408,0.904966, -0.855408,2.4744,0.855408, -0.975021,2.4744,0.715555, + -0.975021,2.4744,0.715555, -1.031508,2.4408,0.75701, -0.904966,2.4408,0.904966, + -0.75701,2.4408,1.031508, -0.715555,2.4744,0.975021, -0.855408,2.4744,0.855408, + -0.855408,2.4744,0.855408, -0.904966,2.4408,0.904966, -0.75701,2.4408,1.031508, + -0.590089,2.4408,1.13419, -0.557774,2.4744,1.072079, -0.715555,2.4744,0.975021, + -0.715555,2.4744,0.975021, -0.75701,2.4408,1.031508, -0.590089,2.4408,1.13419, + -0.406648,2.4408,1.210564, -0.384379,2.4744,1.144271, -0.557774,2.4744,1.072079, + -0.557774,2.4744,1.072079, -0.590089,2.4408,1.13419, -0.406648,2.4408,1.210564, + -0.209136,2.4408,1.258183, -0.197684,2.4744,1.189282, -0.384379,2.4744,1.144271, + -0.384379,2.4744,1.144271, -0.406648,2.4408,1.210564, -0.209136,2.4408,1.258183, + 0,2.4408,1.2746, 0,2.4744,1.2048, -0.197684,2.4744,1.189282, + -0.197684,2.4744,1.189282, -0.209136,2.4408,1.258183, 0,2.4408,1.2746, + -1.283256,2.4,0.213304, -1.258183,2.4408,0.209136, -1.2746,2.4408,0, + -1.2746,2.4408,0, -1.3,2.4,0, -1.283256,2.4,0.213304, + -1.234688,2.4,0.414752, -1.210564,2.4408,0.406648, -1.258183,2.4408,0.209136, + -1.258183,2.4408,0.209136, -1.283256,2.4,0.213304, -1.234688,2.4,0.414752, + -1.156792,2.4,0.601848, -1.13419,2.4408,0.590089, -1.210564,2.4408,0.406648, + -1.210564,2.4408,0.406648, -1.234688,2.4,0.414752, -1.156792,2.4,0.601848, + -1.052064,2.4,0.772096, -1.031508,2.4408,0.75701, -1.13419,2.4408,0.590089, + -1.13419,2.4408,0.590089, -1.156792,2.4,0.601848, -1.052064,2.4,0.772096, + -0.923,2.4,0.923, -0.904966,2.4408,0.904966, -1.031508,2.4408,0.75701, + -1.031508,2.4408,0.75701, -1.052064,2.4,0.772096, -0.923,2.4,0.923, + -0.772096,2.4,1.052064, -0.75701,2.4408,1.031508, -0.904966,2.4408,0.904966, + -0.904966,2.4408,0.904966, -0.923,2.4,0.923, -0.772096,2.4,1.052064, + -0.601848,2.4,1.156792, -0.590089,2.4408,1.13419, -0.75701,2.4408,1.031508, + -0.75701,2.4408,1.031508, -0.772096,2.4,1.052064, -0.601848,2.4,1.156792, + -0.414752,2.4,1.234688, -0.406648,2.4408,1.210564, -0.590089,2.4408,1.13419, + -0.590089,2.4408,1.13419, -0.601848,2.4,1.156792, -0.414752,2.4,1.234688, + -0.213304,2.4,1.283256, -0.209136,2.4408,1.258183, -0.406648,2.4408,1.210564, + -0.406648,2.4408,1.210564, -0.414752,2.4,1.234688, -0.213304,2.4,1.283256, + 0,2.4,1.3, 0,2.4408,1.2746, -0.209136,2.4408,1.258183, + -0.209136,2.4408,1.258183, -0.213304,2.4,1.283256, 0,2.4,1.3, + 0.045844,2.6592,0.275801, 0.032816,2.7,0.197424, 0,2.7,0.2, + 0,2.7,0.2, 0,2.6592,0.2794, 0.045844,2.6592,0.275801, + 0.08914,2.6592,0.265363, 0.063808,2.7,0.189952, 0.032816,2.7,0.197424, + 0.032816,2.7,0.197424, 0.045844,2.6592,0.275801, 0.08914,2.6592,0.265363, + 0.129351,2.6592,0.248621, 0.092592,2.7,0.177968, 0.063808,2.7,0.189952, + 0.063808,2.7,0.189952, 0.08914,2.6592,0.265363, 0.129351,2.6592,0.248621, + 0.165941,2.6592,0.226113, 0.118784,2.7,0.161856, 0.092592,2.7,0.177968, + 0.092592,2.7,0.177968, 0.129351,2.6592,0.248621, 0.165941,2.6592,0.226113, + 0.198374,2.6592,0.198374, 0.142,2.7,0.142, 0.118784,2.7,0.161856, + 0.118784,2.7,0.161856, 0.165941,2.6592,0.226113, 0.198374,2.6592,0.198374, + 0.226113,2.6592,0.165941, 0.161856,2.7,0.118784, 0.142,2.7,0.142, + 0.142,2.7,0.142, 0.198374,2.6592,0.198374, 0.226113,2.6592,0.165941, + 0.248621,2.6592,0.129351, 0.177968,2.7,0.092592, 0.161856,2.7,0.118784, + 0.161856,2.7,0.118784, 0.226113,2.6592,0.165941, 0.248621,2.6592,0.129351, + 0.265363,2.6592,0.08914, 0.189952,2.7,0.063808, 0.177968,2.7,0.092592, + 0.177968,2.7,0.092592, 0.248621,2.6592,0.129351, 0.265363,2.6592,0.08914, + 0.275801,2.6592,0.045844, 0.197424,2.7,0.032816, 0.189952,2.7,0.063808, + 0.189952,2.7,0.063808, 0.265363,2.6592,0.08914, 0.275801,2.6592,0.045844, + 0.2794,2.6592,0, 0.2,2.7,0, 0.197424,2.7,0.032816, + 0.197424,2.7,0.032816, 0.275801,2.6592,0.045844, 0.2794,2.6592,0, + 0.064188,2.6256,0.386161, 0.045844,2.6592,0.275801, 0,2.6592,0.2794, + 0,2.6592,0.2794, 0,2.6256,0.3912, 0.064188,2.6256,0.386161, + 0.124808,2.6256,0.371546, 0.08914,2.6592,0.265363, 0.045844,2.6592,0.275801, + 0.045844,2.6592,0.275801, 0.064188,2.6256,0.386161, 0.124808,2.6256,0.371546, + 0.18111,2.6256,0.348105, 0.129351,2.6592,0.248621, 0.08914,2.6592,0.265363, + 0.08914,2.6592,0.265363, 0.124808,2.6256,0.371546, 0.18111,2.6256,0.348105, + 0.232342,2.6256,0.31659, 0.165941,2.6592,0.226113, 0.129351,2.6592,0.248621, + 0.129351,2.6592,0.248621, 0.18111,2.6256,0.348105, 0.232342,2.6256,0.31659, + 0.277752,2.6256,0.277752, 0.198374,2.6592,0.198374, 0.165941,2.6592,0.226113, + 0.165941,2.6592,0.226113, 0.232342,2.6256,0.31659, 0.277752,2.6256,0.277752, + 0.31659,2.6256,0.232342, 0.226113,2.6592,0.165941, 0.198374,2.6592,0.198374, + 0.198374,2.6592,0.198374, 0.277752,2.6256,0.277752, 0.31659,2.6256,0.232342, + 0.348105,2.6256,0.18111, 0.248621,2.6592,0.129351, 0.226113,2.6592,0.165941, + 0.226113,2.6592,0.165941, 0.31659,2.6256,0.232342, 0.348105,2.6256,0.18111, + 0.371546,2.6256,0.124808, 0.265363,2.6592,0.08914, 0.248621,2.6592,0.129351, + 0.248621,2.6592,0.129351, 0.348105,2.6256,0.18111, 0.371546,2.6256,0.124808, + 0.386161,2.6256,0.064188, 0.275801,2.6592,0.045844, 0.265363,2.6592,0.08914, + 0.265363,2.6592,0.08914, 0.371546,2.6256,0.124808, 0.386161,2.6256,0.064188, + 0.3912,2.6256,0, 0.2794,2.6592,0, 0.275801,2.6592,0.045844, + 0.275801,2.6592,0.045844, 0.386161,2.6256,0.064188, 0.3912,2.6256,0, + 0.086273,2.5974,0.519028, 0.064188,2.6256,0.386161, 0,2.6256,0.3912, + 0,2.6256,0.3912, 0,2.5974,0.5258, 0.086273,2.5974,0.519028, + 0.167751,2.5974,0.499384, 0.124808,2.6256,0.371546, 0.064188,2.6256,0.386161, + 0.064188,2.6256,0.386161, 0.086273,2.5974,0.519028, 0.167751,2.5974,0.499384, + 0.243424,2.5974,0.467878, 0.18111,2.6256,0.348105, 0.124808,2.6256,0.371546, + 0.124808,2.6256,0.371546, 0.167751,2.5974,0.499384, 0.243424,2.5974,0.467878, + 0.312283,2.5974,0.425519, 0.232342,2.6256,0.31659, 0.18111,2.6256,0.348105, + 0.18111,2.6256,0.348105, 0.243424,2.5974,0.467878, 0.312283,2.5974,0.425519, + 0.373318,2.5974,0.373318, 0.277752,2.6256,0.277752, 0.232342,2.6256,0.31659, + 0.232342,2.6256,0.31659, 0.312283,2.5974,0.425519, 0.373318,2.5974,0.373318, + 0.425519,2.5974,0.312283, 0.31659,2.6256,0.232342, 0.277752,2.6256,0.277752, + 0.277752,2.6256,0.277752, 0.373318,2.5974,0.373318, 0.425519,2.5974,0.312283, + 0.467878,2.5974,0.243424, 0.348105,2.6256,0.18111, 0.31659,2.6256,0.232342, + 0.31659,2.6256,0.232342, 0.425519,2.5974,0.312283, 0.467878,2.5974,0.243424, + 0.499384,2.5974,0.167751, 0.371546,2.6256,0.124808, 0.348105,2.6256,0.18111, + 0.348105,2.6256,0.18111, 0.467878,2.5974,0.243424, 0.499384,2.5974,0.167751, + 0.519028,2.5974,0.086273, 0.386161,2.6256,0.064188, 0.371546,2.6256,0.124808, + 0.371546,2.6256,0.124808, 0.499384,2.5974,0.167751, 0.519028,2.5974,0.086273, + 0.5258,2.5974,0, 0.3912,2.6256,0, 0.386161,2.6256,0.064188, + 0.386161,2.6256,0.064188, 0.519028,2.5974,0.086273, 0.5258,2.5974,0, + 0.110524,2.5728,0.664924, 0.086273,2.5974,0.519028, 0,2.5974,0.5258, + 0,2.5974,0.5258, 0,2.5728,0.6736, 0.110524,2.5728,0.664924, + 0.214905,2.5728,0.639758, 0.167751,2.5974,0.499384, 0.086273,2.5974,0.519028, + 0.086273,2.5974,0.519028, 0.110524,2.5728,0.664924, 0.214905,2.5728,0.639758, + 0.31185,2.5728,0.599396, 0.243424,2.5974,0.467878, 0.167751,2.5974,0.499384, + 0.167751,2.5974,0.499384, 0.214905,2.5728,0.639758, 0.31185,2.5728,0.599396, + 0.400065,2.5728,0.545131, 0.312283,2.5974,0.425519, 0.243424,2.5974,0.467878, + 0.243424,2.5974,0.467878, 0.31185,2.5728,0.599396, 0.400065,2.5728,0.545131, + 0.478256,2.5728,0.478256, 0.373318,2.5974,0.373318, 0.312283,2.5974,0.425519, + 0.312283,2.5974,0.425519, 0.400065,2.5728,0.545131, 0.478256,2.5728,0.478256, + 0.545131,2.5728,0.400065, 0.425519,2.5974,0.312283, 0.373318,2.5974,0.373318, + 0.373318,2.5974,0.373318, 0.478256,2.5728,0.478256, 0.545131,2.5728,0.400065, + 0.599396,2.5728,0.31185, 0.467878,2.5974,0.243424, 0.425519,2.5974,0.312283, + 0.425519,2.5974,0.312283, 0.545131,2.5728,0.400065, 0.599396,2.5728,0.31185, + 0.639758,2.5728,0.214905, 0.499384,2.5974,0.167751, 0.467878,2.5974,0.243424, + 0.467878,2.5974,0.243424, 0.599396,2.5728,0.31185, 0.639758,2.5728,0.214905, + 0.664924,2.5728,0.110524, 0.519028,2.5974,0.086273, 0.499384,2.5974,0.167751, + 0.499384,2.5974,0.167751, 0.639758,2.5728,0.214905, 0.664924,2.5728,0.110524, + 0.6736,2.5728,0, 0.5258,2.5974,0, 0.519028,2.5974,0.086273, + 0.519028,2.5974,0.086273, 0.664924,2.5728,0.110524, 0.6736,2.5728,0, + 0.135366,2.55,0.814374, 0.110524,2.5728,0.664924, 0,2.5728,0.6736, + 0,2.5728,0.6736, 0,2.55,0.825, 0.135366,2.55,0.814374, + 0.263208,2.55,0.783552, 0.214905,2.5728,0.639758, 0.110524,2.5728,0.664924, + 0.110524,2.5728,0.664924, 0.135366,2.55,0.814374, 0.263208,2.55,0.783552, + 0.381942,2.55,0.734118, 0.31185,2.5728,0.599396, 0.214905,2.5728,0.639758, + 0.214905,2.5728,0.639758, 0.263208,2.55,0.783552, 0.381942,2.55,0.734118, + 0.489984,2.55,0.667656, 0.400065,2.5728,0.545131, 0.31185,2.5728,0.599396, + 0.31185,2.5728,0.599396, 0.381942,2.55,0.734118, 0.489984,2.55,0.667656, + 0.58575,2.55,0.58575, 0.478256,2.5728,0.478256, 0.400065,2.5728,0.545131, + 0.400065,2.5728,0.545131, 0.489984,2.55,0.667656, 0.58575,2.55,0.58575, + 0.667656,2.55,0.489984, 0.545131,2.5728,0.400065, 0.478256,2.5728,0.478256, + 0.478256,2.5728,0.478256, 0.58575,2.55,0.58575, 0.667656,2.55,0.489984, + 0.734118,2.55,0.381942, 0.599396,2.5728,0.31185, 0.545131,2.5728,0.400065, + 0.545131,2.5728,0.400065, 0.667656,2.55,0.489984, 0.734118,2.55,0.381942, + 0.783552,2.55,0.263208, 0.639758,2.5728,0.214905, 0.599396,2.5728,0.31185, + 0.599396,2.5728,0.31185, 0.734118,2.55,0.381942, 0.783552,2.55,0.263208, + 0.814374,2.55,0.135366, 0.664924,2.5728,0.110524, 0.639758,2.5728,0.214905, + 0.639758,2.5728,0.214905, 0.783552,2.55,0.263208, 0.814374,2.55,0.135366, + 0.825,2.55,0, 0.6736,2.5728,0, 0.664924,2.5728,0.110524, + 0.664924,2.5728,0.110524, 0.814374,2.55,0.135366, 0.825,2.55,0, + 0.159223,2.5272,0.957901, 0.135366,2.55,0.814374, 0,2.55,0.825, + 0,2.55,0.825, 0,2.5272,0.9704, 0.159223,2.5272,0.957901, + 0.309596,2.5272,0.921647, 0.263208,2.55,0.783552, 0.135366,2.55,0.814374, + 0.135366,2.55,0.814374, 0.159223,2.5272,0.957901, 0.309596,2.5272,0.921647, + 0.449256,2.5272,0.863501, 0.381942,2.55,0.734118, 0.263208,2.55,0.783552, + 0.263208,2.55,0.783552, 0.309596,2.5272,0.921647, 0.449256,2.5272,0.863501, + 0.57634,2.5272,0.785325, 0.489984,2.55,0.667656, 0.381942,2.55,0.734118, + 0.381942,2.55,0.734118, 0.449256,2.5272,0.863501, 0.57634,2.5272,0.785325, + 0.688984,2.5272,0.688984, 0.58575,2.55,0.58575, 0.489984,2.55,0.667656, + 0.489984,2.55,0.667656, 0.57634,2.5272,0.785325, 0.688984,2.5272,0.688984, + 0.785325,2.5272,0.57634, 0.667656,2.55,0.489984, 0.58575,2.55,0.58575, + 0.58575,2.55,0.58575, 0.688984,2.5272,0.688984, 0.785325,2.5272,0.57634, + 0.863501,2.5272,0.449256, 0.734118,2.55,0.381942, 0.667656,2.55,0.489984, + 0.667656,2.55,0.489984, 0.785325,2.5272,0.57634, 0.863501,2.5272,0.449256, + 0.921647,2.5272,0.309596, 0.783552,2.55,0.263208, 0.734118,2.55,0.381942, + 0.734118,2.55,0.381942, 0.863501,2.5272,0.449256, 0.921647,2.5272,0.309596, + 0.957901,2.5272,0.159223, 0.814374,2.55,0.135366, 0.783552,2.55,0.263208, + 0.783552,2.55,0.263208, 0.921647,2.5272,0.309596, 0.957901,2.5272,0.159223, + 0.9704,2.5272,0, 0.825,2.55,0, 0.814374,2.55,0.135366, + 0.814374,2.55,0.135366, 0.957901,2.5272,0.159223, 0.9704,2.5272,0, + 0.180521,2.5026,1.086029, 0.159223,2.5272,0.957901, 0,2.5272,0.9704, + 0,2.5272,0.9704, 0,2.5026,1.1002, 0.180521,2.5026,1.086029, + 0.351008,2.5026,1.044926, 0.309596,2.5272,0.921647, 0.159223,2.5272,0.957901, + 0.159223,2.5272,0.957901, 0.180521,2.5026,1.086029, 0.351008,2.5026,1.044926, + 0.509349,2.5026,0.979002, 0.449256,2.5272,0.863501, 0.309596,2.5272,0.921647, + 0.309596,2.5272,0.921647, 0.351008,2.5026,1.044926, 0.509349,2.5026,0.979002, + 0.653431,2.5026,0.89037, 0.57634,2.5272,0.785325, 0.449256,2.5272,0.863501, + 0.449256,2.5272,0.863501, 0.509349,2.5026,0.979002, 0.653431,2.5026,0.89037, + 0.781142,2.5026,0.781142, 0.688984,2.5272,0.688984, 0.57634,2.5272,0.785325, + 0.57634,2.5272,0.785325, 0.653431,2.5026,0.89037, 0.781142,2.5026,0.781142, + 0.89037,2.5026,0.653431, 0.785325,2.5272,0.57634, 0.688984,2.5272,0.688984, + 0.688984,2.5272,0.688984, 0.781142,2.5026,0.781142, 0.89037,2.5026,0.653431, + 0.979002,2.5026,0.509349, 0.863501,2.5272,0.449256, 0.785325,2.5272,0.57634, + 0.785325,2.5272,0.57634, 0.89037,2.5026,0.653431, 0.979002,2.5026,0.509349, + 1.044926,2.5026,0.351008, 0.921647,2.5272,0.309596, 0.863501,2.5272,0.449256, + 0.863501,2.5272,0.449256, 0.979002,2.5026,0.509349, 1.044926,2.5026,0.351008, + 1.086029,2.5026,0.180521, 0.957901,2.5272,0.159223, 0.921647,2.5272,0.309596, + 0.921647,2.5272,0.309596, 1.044926,2.5026,0.351008, 1.086029,2.5026,0.180521, + 1.1002,2.5026,0, 0.9704,2.5272,0, 0.957901,2.5272,0.159223, + 0.957901,2.5272,0.159223, 1.086029,2.5026,0.180521, 1.1002,2.5026,0, + 0.197684,2.4744,1.189282, 0.180521,2.5026,1.086029, 0,2.5026,1.1002, + 0,2.5026,1.1002, 0,2.4744,1.2048, 0.197684,2.4744,1.189282, + 0.384379,2.4744,1.144271, 0.351008,2.5026,1.044926, 0.180521,2.5026,1.086029, + 0.180521,2.5026,1.086029, 0.197684,2.4744,1.189282, 0.384379,2.4744,1.144271, + 0.557774,2.4744,1.072079, 0.509349,2.5026,0.979002, 0.351008,2.5026,1.044926, + 0.351008,2.5026,1.044926, 0.384379,2.4744,1.144271, 0.557774,2.4744,1.072079, + 0.715555,2.4744,0.975021, 0.653431,2.5026,0.89037, 0.509349,2.5026,0.979002, + 0.509349,2.5026,0.979002, 0.557774,2.4744,1.072079, 0.715555,2.4744,0.975021, + 0.855408,2.4744,0.855408, 0.781142,2.5026,0.781142, 0.653431,2.5026,0.89037, + 0.653431,2.5026,0.89037, 0.715555,2.4744,0.975021, 0.855408,2.4744,0.855408, + 0.975021,2.4744,0.715555, 0.89037,2.5026,0.653431, 0.781142,2.5026,0.781142, + 0.781142,2.5026,0.781142, 0.855408,2.4744,0.855408, 0.975021,2.4744,0.715555, + 1.072079,2.4744,0.557774, 0.979002,2.5026,0.509349, 0.89037,2.5026,0.653431, + 0.89037,2.5026,0.653431, 0.975021,2.4744,0.715555, 1.072079,2.4744,0.557774, + 1.144271,2.4744,0.384379, 1.044926,2.5026,0.351008, 0.979002,2.5026,0.509349, + 0.979002,2.5026,0.509349, 1.072079,2.4744,0.557774, 1.144271,2.4744,0.384379, + 1.189282,2.4744,0.197684, 1.086029,2.5026,0.180521, 1.044926,2.5026,0.351008, + 1.044926,2.5026,0.351008, 1.144271,2.4744,0.384379, 1.189282,2.4744,0.197684, + 1.2048,2.4744,0, 1.1002,2.5026,0, 1.086029,2.5026,0.180521, + 1.086029,2.5026,0.180521, 1.189282,2.4744,0.197684, 1.2048,2.4744,0, + 0.209136,2.4408,1.258183, 0.197684,2.4744,1.189282, 0,2.4744,1.2048, + 0,2.4744,1.2048, 0,2.4408,1.2746, 0.209136,2.4408,1.258183, + 0.406648,2.4408,1.210564, 0.384379,2.4744,1.144271, 0.197684,2.4744,1.189282, + 0.197684,2.4744,1.189282, 0.209136,2.4408,1.258183, 0.406648,2.4408,1.210564, + 0.590089,2.4408,1.13419, 0.557774,2.4744,1.072079, 0.384379,2.4744,1.144271, + 0.384379,2.4744,1.144271, 0.406648,2.4408,1.210564, 0.590089,2.4408,1.13419, + 0.75701,2.4408,1.031508, 0.715555,2.4744,0.975021, 0.557774,2.4744,1.072079, + 0.557774,2.4744,1.072079, 0.590089,2.4408,1.13419, 0.75701,2.4408,1.031508, + 0.904966,2.4408,0.904966, 0.855408,2.4744,0.855408, 0.715555,2.4744,0.975021, + 0.715555,2.4744,0.975021, 0.75701,2.4408,1.031508, 0.904966,2.4408,0.904966, + 1.031508,2.4408,0.75701, 0.975021,2.4744,0.715555, 0.855408,2.4744,0.855408, + 0.855408,2.4744,0.855408, 0.904966,2.4408,0.904966, 1.031508,2.4408,0.75701, + 1.13419,2.4408,0.590089, 1.072079,2.4744,0.557774, 0.975021,2.4744,0.715555, + 0.975021,2.4744,0.715555, 1.031508,2.4408,0.75701, 1.13419,2.4408,0.590089, + 1.210564,2.4408,0.406648, 1.144271,2.4744,0.384379, 1.072079,2.4744,0.557774, + 1.072079,2.4744,0.557774, 1.13419,2.4408,0.590089, 1.210564,2.4408,0.406648, + 1.258183,2.4408,0.209136, 1.189282,2.4744,0.197684, 1.144271,2.4744,0.384379, + 1.144271,2.4744,0.384379, 1.210564,2.4408,0.406648, 1.258183,2.4408,0.209136, + 1.2746,2.4408,0, 1.2048,2.4744,0, 1.189282,2.4744,0.197684, + 1.189282,2.4744,0.197684, 1.258183,2.4408,0.209136, 1.2746,2.4408,0, + 0.213304,2.4,1.283256, 0.209136,2.4408,1.258183, 0,2.4408,1.2746, + 0,2.4408,1.2746, 0,2.4,1.3, 0.213304,2.4,1.283256, + 0.414752,2.4,1.234688, 0.406648,2.4408,1.210564, 0.209136,2.4408,1.258183, + 0.209136,2.4408,1.258183, 0.213304,2.4,1.283256, 0.414752,2.4,1.234688, + 0.601848,2.4,1.156792, 0.590089,2.4408,1.13419, 0.406648,2.4408,1.210564, + 0.406648,2.4408,1.210564, 0.414752,2.4,1.234688, 0.601848,2.4,1.156792, + 0.772096,2.4,1.052064, 0.75701,2.4408,1.031508, 0.590089,2.4408,1.13419, + 0.590089,2.4408,1.13419, 0.601848,2.4,1.156792, 0.772096,2.4,1.052064, + 0.923,2.4,0.923, 0.904966,2.4408,0.904966, 0.75701,2.4408,1.031508, + 0.75701,2.4408,1.031508, 0.772096,2.4,1.052064, 0.923,2.4,0.923, + 1.052064,2.4,0.772096, 1.031508,2.4408,0.75701, 0.904966,2.4408,0.904966, + 0.904966,2.4408,0.904966, 0.923,2.4,0.923, 1.052064,2.4,0.772096, + 1.156792,2.4,0.601848, 1.13419,2.4408,0.590089, 1.031508,2.4408,0.75701, + 1.031508,2.4408,0.75701, 1.052064,2.4,0.772096, 1.156792,2.4,0.601848, + 1.234688,2.4,0.414752, 1.210564,2.4408,0.406648, 1.13419,2.4408,0.590089, + 1.13419,2.4408,0.590089, 1.156792,2.4,0.601848, 1.234688,2.4,0.414752, + 1.283256,2.4,0.213304, 1.258183,2.4408,0.209136, 1.210564,2.4408,0.406648, + 1.210564,2.4408,0.406648, 1.234688,2.4,0.414752, 1.283256,2.4,0.213304, + 1.3,2.4,0, 1.2746,2.4408,0, 1.258183,2.4408,0.209136, + 1.258183,2.4408,0.209136, 1.283256,2.4,0.213304, 1.3,2.4,0, + 0,0,0, 0.388275,0.002175,0, 0.383274,0.002175,0.063708, + 0,0,0, 0.383274,0.002175,0.063708, 0.368768,0.002175,0.123875, + 0,0,0, 0.368768,0.002175,0.123875, 0.345503,0.002175,0.179756, + 0,0,0, 0.345503,0.002175,0.179756, 0.314223,0.002175,0.230604, + 0,0,0, 0.314223,0.002175,0.230604, 0.275675,0.002175,0.275675, + 0,0,0, 0.275675,0.002175,0.275675, 0.230604,0.002175,0.314223, + 0,0,0, 0.230604,0.002175,0.314223, 0.179756,0.002175,0.345503, + 0,0,0, 0.179756,0.002175,0.345503, 0.123875,0.002175,0.368768, + 0,0,0, 0.123875,0.002175,0.368768, 0.063708,0.002175,0.383274, + 0,0,0, 0.063708,0.002175,0.383274, 0,0.002175,0.388275, + 0.694143,0.0084,0.115381, 0.383274,0.002175,0.063708, 0.388275,0.002175,0, + 0.388275,0.002175,0, 0.7032,0.0084,0, 0.694143,0.0084,0.115381, + 0.667871,0.0084,0.224349, 0.368768,0.002175,0.123875, 0.383274,0.002175,0.063708, + 0.383274,0.002175,0.063708, 0.694143,0.0084,0.115381, 0.667871,0.0084,0.224349, + 0.625735,0.0084,0.325553, 0.345503,0.002175,0.179756, 0.368768,0.002175,0.123875, + 0.368768,0.002175,0.123875, 0.667871,0.0084,0.224349, 0.625735,0.0084,0.325553, + 0.569086,0.0084,0.417645, 0.314223,0.002175,0.230604, 0.345503,0.002175,0.179756, + 0.345503,0.002175,0.179756, 0.625735,0.0084,0.325553, 0.569086,0.0084,0.417645, + 0.499272,0.0084,0.499272, 0.275675,0.002175,0.275675, 0.314223,0.002175,0.230604, + 0.314223,0.002175,0.230604, 0.569086,0.0084,0.417645, 0.499272,0.0084,0.499272, + 0.417645,0.0084,0.569086, 0.230604,0.002175,0.314223, 0.275675,0.002175,0.275675, + 0.275675,0.002175,0.275675, 0.499272,0.0084,0.499272, 0.417645,0.0084,0.569086, + 0.325553,0.0084,0.625735, 0.179756,0.002175,0.345503, 0.230604,0.002175,0.314223, + 0.230604,0.002175,0.314223, 0.417645,0.0084,0.569086, 0.325553,0.0084,0.625735, + 0.224349,0.0084,0.667871, 0.123875,0.002175,0.368768, 0.179756,0.002175,0.345503, + 0.179756,0.002175,0.345503, 0.325553,0.0084,0.625735, 0.224349,0.0084,0.667871, + 0.115381,0.0084,0.694143, 0.063708,0.002175,0.383274, 0.123875,0.002175,0.368768, + 0.123875,0.002175,0.368768, 0.224349,0.0084,0.667871, 0.115381,0.0084,0.694143, + 0,0.0084,0.7032, 0,0.002175,0.388275, 0.063708,0.002175,0.383274, + 0.063708,0.002175,0.383274, 0.115381,0.0084,0.694143, 0,0.0084,0.7032, + 0.940158,0.018225,0.156274, 0.694143,0.0084,0.115381, 0.7032,0.0084,0, + 0.7032,0.0084,0, 0.952425,0.018225,0, 0.940158,0.018225,0.156274, + 0.904575,0.018225,0.303862, 0.667871,0.0084,0.224349, 0.694143,0.0084,0.115381, + 0.694143,0.0084,0.115381, 0.940158,0.018225,0.156274, 0.904575,0.018225,0.303862, + 0.847506,0.018225,0.440935, 0.625735,0.0084,0.325553, 0.667871,0.0084,0.224349, + 0.667871,0.0084,0.224349, 0.904575,0.018225,0.303862, 0.847506,0.018225,0.440935, + 0.770779,0.018225,0.565664, 0.569086,0.0084,0.417645, 0.625735,0.0084,0.325553, + 0.625735,0.0084,0.325553, 0.847506,0.018225,0.440935, 0.770779,0.018225,0.565664, + 0.676222,0.018225,0.676222, 0.499272,0.0084,0.499272, 0.569086,0.0084,0.417645, + 0.569086,0.0084,0.417645, 0.770779,0.018225,0.565664, 0.676222,0.018225,0.676222, + 0.565664,0.018225,0.770779, 0.417645,0.0084,0.569086, 0.499272,0.0084,0.499272, + 0.499272,0.0084,0.499272, 0.676222,0.018225,0.676222, 0.565664,0.018225,0.770779, + 0.440935,0.018225,0.847506, 0.325553,0.0084,0.625735, 0.417645,0.0084,0.569086, + 0.417645,0.0084,0.569086, 0.565664,0.018225,0.770779, 0.440935,0.018225,0.847506, + 0.303862,0.018225,0.904575, 0.224349,0.0084,0.667871, 0.325553,0.0084,0.625735, + 0.325553,0.0084,0.625735, 0.440935,0.018225,0.847506, 0.303862,0.018225,0.904575, + 0.156274,0.018225,0.940158, 0.115381,0.0084,0.694143, 0.224349,0.0084,0.667871, + 0.224349,0.0084,0.667871, 0.303862,0.018225,0.904575, 0.156274,0.018225,0.940158, + 0,0.018225,0.952425, 0,0.0084,0.7032, 0.115381,0.0084,0.694143, + 0.115381,0.0084,0.694143, 0.156274,0.018225,0.940158, 0,0.018225,0.952425, + 1.12887,0.0312,0.187642, 0.940158,0.018225,0.156274, 0.952425,0.018225,0, + 0.952425,0.018225,0, 1.1436,0.0312,0, 1.12887,0.0312,0.187642, + 1.086146,0.0312,0.364854, 0.904575,0.018225,0.303862, 0.940158,0.018225,0.156274, + 0.940158,0.018225,0.156274, 1.12887,0.0312,0.187642, 1.086146,0.0312,0.364854, + 1.017621,0.0312,0.529441, 0.847506,0.018225,0.440935, 0.904575,0.018225,0.303862, + 0.904575,0.018225,0.303862, 1.086146,0.0312,0.364854, 1.017621,0.0312,0.529441, + 0.925493,0.0312,0.679207, 0.770779,0.018225,0.565664, 0.847506,0.018225,0.440935, + 0.847506,0.018225,0.440935, 1.017621,0.0312,0.529441, 0.925493,0.0312,0.679207, + 0.811956,0.0312,0.811956, 0.676222,0.018225,0.676222, 0.770779,0.018225,0.565664, + 0.770779,0.018225,0.565664, 0.925493,0.0312,0.679207, 0.811956,0.0312,0.811956, + 0.679207,0.0312,0.925493, 0.565664,0.018225,0.770779, 0.676222,0.018225,0.676222, + 0.676222,0.018225,0.676222, 0.811956,0.0312,0.811956, 0.679207,0.0312,0.925493, + 0.529441,0.0312,1.017621, 0.440935,0.018225,0.847506, 0.565664,0.018225,0.770779, + 0.565664,0.018225,0.770779, 0.679207,0.0312,0.925493, 0.529441,0.0312,1.017621, + 0.364854,0.0312,1.086146, 0.303862,0.018225,0.904575, 0.440935,0.018225,0.847506, + 0.440935,0.018225,0.847506, 0.529441,0.0312,1.017621, 0.364854,0.0312,1.086146, + 0.187642,0.0312,1.12887, 0.156274,0.018225,0.940158, 0.303862,0.018225,0.904575, + 0.303862,0.018225,0.904575, 0.364854,0.0312,1.086146, 0.187642,0.0312,1.12887, + 0,0.0312,1.1436, 0,0.018225,0.952425, 0.156274,0.018225,0.940158, + 0.156274,0.018225,0.940158, 0.187642,0.0312,1.12887, 0,0.0312,1.1436, + 1.267832,0.046875,0.21074, 1.12887,0.0312,0.187642, 1.1436,0.0312,0, + 1.1436,0.0312,0, 1.284375,0.046875,0, 1.267832,0.046875,0.21074, + 1.219848,0.046875,0.409767, 1.086146,0.0312,0.364854, 1.12887,0.0312,0.187642, + 1.12887,0.0312,0.187642, 1.267832,0.046875,0.21074, 1.219848,0.046875,0.409767, + 1.142888,0.046875,0.594614, 1.017621,0.0312,0.529441, 1.086146,0.0312,0.364854, + 1.086146,0.0312,0.364854, 1.219848,0.046875,0.409767, 1.142888,0.046875,0.594614, + 1.039419,0.046875,0.762816, 0.925493,0.0312,0.679207, 1.017621,0.0312,0.529441, + 1.017621,0.0312,0.529441, 1.142888,0.046875,0.594614, 1.039419,0.046875,0.762816, + 0.911906,0.046875,0.911906, 0.811956,0.0312,0.811956, 0.925493,0.0312,0.679207, + 0.925493,0.0312,0.679207, 1.039419,0.046875,0.762816, 0.911906,0.046875,0.911906, + 0.762816,0.046875,1.039419, 0.679207,0.0312,0.925493, 0.811956,0.0312,0.811956, + 0.811956,0.0312,0.811956, 0.911906,0.046875,0.911906, 0.762816,0.046875,1.039419, + 0.594614,0.046875,1.142888, 0.529441,0.0312,1.017621, 0.679207,0.0312,0.925493, + 0.679207,0.0312,0.925493, 0.762816,0.046875,1.039419, 0.594614,0.046875,1.142888, + 0.409767,0.046875,1.219848, 0.364854,0.0312,1.086146, 0.529441,0.0312,1.017621, + 0.529441,0.0312,1.017621, 0.594614,0.046875,1.142888, 0.409767,0.046875,1.219848, + 0.21074,0.046875,1.267832, 0.187642,0.0312,1.12887, 0.364854,0.0312,1.086146, + 0.364854,0.0312,1.086146, 0.409767,0.046875,1.219848, 0.21074,0.046875,1.267832, + 0,0.046875,1.284375, 0,0.0312,1.1436, 0.187642,0.0312,1.12887, + 0.187642,0.0312,1.12887, 0.21074,0.046875,1.267832, 0,0.046875,1.284375, + 1.364595,0.0648,0.226824, 1.267832,0.046875,0.21074, 1.284375,0.046875,0, + 1.284375,0.046875,0, 1.3824,0.0648,0, 1.364595,0.0648,0.226824, + 1.312948,0.0648,0.441041, 1.219848,0.046875,0.409767, 1.267832,0.046875,0.21074, + 1.267832,0.046875,0.21074, 1.364595,0.0648,0.226824, 1.312948,0.0648,0.441041, + 1.230115,0.0648,0.639996, 1.142888,0.046875,0.594614, 1.219848,0.046875,0.409767, + 1.219848,0.046875,0.409767, 1.312948,0.0648,0.441041, 1.230115,0.0648,0.639996, + 1.118749,0.0648,0.821035, 1.039419,0.046875,0.762816, 1.142888,0.046875,0.594614, + 1.142888,0.046875,0.594614, 1.230115,0.0648,0.639996, 1.118749,0.0648,0.821035, + 0.981504,0.0648,0.981504, 0.911906,0.046875,0.911906, 1.039419,0.046875,0.762816, + 1.039419,0.046875,0.762816, 1.118749,0.0648,0.821035, 0.981504,0.0648,0.981504, + 0.821035,0.0648,1.118749, 0.762816,0.046875,1.039419, 0.911906,0.046875,0.911906, + 0.911906,0.046875,0.911906, 0.981504,0.0648,0.981504, 0.821035,0.0648,1.118749, + 0.639996,0.0648,1.230115, 0.594614,0.046875,1.142888, 0.762816,0.046875,1.039419, + 0.762816,0.046875,1.039419, 0.821035,0.0648,1.118749, 0.639996,0.0648,1.230115, + 0.441041,0.0648,1.312948, 0.409767,0.046875,1.219848, 0.594614,0.046875,1.142888, + 0.594614,0.046875,1.142888, 0.639996,0.0648,1.230115, 0.441041,0.0648,1.312948, + 0.226824,0.0648,1.364595, 0.21074,0.046875,1.267832, 0.409767,0.046875,1.219848, + 0.409767,0.046875,1.219848, 0.441041,0.0648,1.312948, 0.226824,0.0648,1.364595, + 0,0.0648,1.3824, 0,0.046875,1.284375, 0.21074,0.046875,1.267832, + 0.21074,0.046875,1.267832, 0.226824,0.0648,1.364595, 0,0.0648,1.3824, + 1.426709,0.084525,0.237149, 1.364595,0.0648,0.226824, 1.3824,0.0648,0, + 1.3824,0.0648,0, 1.445325,0.084525,0, 1.426709,0.084525,0.237149, + 1.372712,0.084525,0.461116, 1.312948,0.0648,0.441041, 1.364595,0.0648,0.226824, + 1.364595,0.0648,0.226824, 1.426709,0.084525,0.237149, 1.372712,0.084525,0.461116, + 1.286108,0.084525,0.669128, 1.230115,0.0648,0.639996, 1.312948,0.0648,0.441041, + 1.312948,0.0648,0.441041, 1.372712,0.084525,0.461116, 1.286108,0.084525,0.669128, + 1.169673,0.084525,0.858407, 1.118749,0.0648,0.821035, 1.230115,0.0648,0.639996, + 1.230115,0.0648,0.639996, 1.286108,0.084525,0.669128, 1.169673,0.084525,0.858407, + 1.026181,0.084525,1.026181, 0.981504,0.0648,0.981504, 1.118749,0.0648,0.821035, + 1.118749,0.0648,0.821035, 1.169673,0.084525,0.858407, 1.026181,0.084525,1.026181, + 0.858407,0.084525,1.169673, 0.821035,0.0648,1.118749, 0.981504,0.0648,0.981504, + 0.981504,0.0648,0.981504, 1.026181,0.084525,1.026181, 0.858407,0.084525,1.169673, + 0.669128,0.084525,1.286108, 0.639996,0.0648,1.230115, 0.821035,0.0648,1.118749, + 0.821035,0.0648,1.118749, 0.858407,0.084525,1.169673, 0.669128,0.084525,1.286108, + 0.461116,0.084525,1.372712, 0.441041,0.0648,1.312948, 0.639996,0.0648,1.230115, + 0.639996,0.0648,1.230115, 0.669128,0.084525,1.286108, 0.461116,0.084525,1.372712, + 0.237149,0.084525,1.426709, 0.226824,0.0648,1.364595, 0.441041,0.0648,1.312948, + 0.441041,0.0648,1.312948, 0.461116,0.084525,1.372712, 0.237149,0.084525,1.426709, + 0,0.084525,1.445325, 0,0.0648,1.3824, 0.226824,0.0648,1.364595, + 0.226824,0.0648,1.364595, 0.237149,0.084525,1.426709, 0,0.084525,1.445325, + 1.461727,0.1056,0.24297, 1.426709,0.084525,0.237149, 1.445325,0.084525,0, + 1.445325,0.084525,0, 1.4808,0.1056,0, 1.461727,0.1056,0.24297, + 1.406405,0.1056,0.472434, 1.372712,0.084525,0.461116, 1.426709,0.084525,0.237149, + 1.426709,0.084525,0.237149, 1.461727,0.1056,0.24297, 1.406405,0.1056,0.472434, + 1.317675,0.1056,0.685551, 1.286108,0.084525,0.669128, 1.372712,0.084525,0.461116, + 1.372712,0.084525,0.461116, 1.406405,0.1056,0.472434, 1.317675,0.1056,0.685551, + 1.198382,0.1056,0.879477, 1.169673,0.084525,0.858407, 1.286108,0.084525,0.669128, + 1.286108,0.084525,0.669128, 1.317675,0.1056,0.685551, 1.198382,0.1056,0.879477, + 1.051368,0.1056,1.051368, 1.026181,0.084525,1.026181, 1.169673,0.084525,0.858407, + 1.169673,0.084525,0.858407, 1.198382,0.1056,0.879477, 1.051368,0.1056,1.051368, + 0.879477,0.1056,1.198382, 0.858407,0.084525,1.169673, 1.026181,0.084525,1.026181, + 1.026181,0.084525,1.026181, 1.051368,0.1056,1.051368, 0.879477,0.1056,1.198382, + 0.685551,0.1056,1.317675, 0.669128,0.084525,1.286108, 0.858407,0.084525,1.169673, + 0.858407,0.084525,1.169673, 0.879477,0.1056,1.198382, 0.685551,0.1056,1.317675, + 0.472434,0.1056,1.406405, 0.461116,0.084525,1.372712, 0.669128,0.084525,1.286108, + 0.669128,0.084525,1.286108, 0.685551,0.1056,1.317675, 0.472434,0.1056,1.406405, + 0.24297,0.1056,1.461727, 0.237149,0.084525,1.426709, 0.461116,0.084525,1.372712, + 0.461116,0.084525,1.372712, 0.472434,0.1056,1.406405, 0.24297,0.1056,1.461727, + 0,0.1056,1.4808, 0,0.084525,1.445325, 0.237149,0.084525,1.426709, + 0.237149,0.084525,1.426709, 0.24297,0.1056,1.461727, 0,0.1056,1.4808, + 1.4772,0.127575,0.245542, 1.461727,0.1056,0.24297, 1.4808,0.1056,0, + 1.4808,0.1056,0, 1.496475,0.127575,0, 1.4772,0.127575,0.245542, + 1.421292,0.127575,0.477435, 1.406405,0.1056,0.472434, 1.461727,0.1056,0.24297, + 1.461727,0.1056,0.24297, 1.4772,0.127575,0.245542, 1.421292,0.127575,0.477435, + 1.331623,0.127575,0.692808, 1.317675,0.1056,0.685551, 1.406405,0.1056,0.472434, + 1.406405,0.1056,0.472434, 1.421292,0.127575,0.477435, 1.331623,0.127575,0.692808, + 1.211067,0.127575,0.888786, 1.198382,0.1056,0.879477, 1.317675,0.1056,0.685551, + 1.317675,0.1056,0.685551, 1.331623,0.127575,0.692808, 1.211067,0.127575,0.888786, + 1.062497,0.127575,1.062497, 1.051368,0.1056,1.051368, 1.198382,0.1056,0.879477, + 1.198382,0.1056,0.879477, 1.211067,0.127575,0.888786, 1.062497,0.127575,1.062497, + 0.888786,0.127575,1.211067, 0.879477,0.1056,1.198382, 1.051368,0.1056,1.051368, + 1.051368,0.1056,1.051368, 1.062497,0.127575,1.062497, 0.888786,0.127575,1.211067, + 0.692808,0.127575,1.331623, 0.685551,0.1056,1.317675, 0.879477,0.1056,1.198382, + 0.879477,0.1056,1.198382, 0.888786,0.127575,1.211067, 0.692808,0.127575,1.331623, + 0.477435,0.127575,1.421292, 0.472434,0.1056,1.406405, 0.685551,0.1056,1.317675, + 0.685551,0.1056,1.317675, 0.692808,0.127575,1.331623, 0.477435,0.127575,1.421292, + 0.245542,0.127575,1.4772, 0.24297,0.1056,1.461727, 0.472434,0.1056,1.406405, + 0.472434,0.1056,1.406405, 0.477435,0.127575,1.421292, 0.245542,0.127575,1.4772, + 0,0.127575,1.496475, 0,0.1056,1.4808, 0.24297,0.1056,1.461727, + 0.24297,0.1056,1.461727, 0.245542,0.127575,1.4772, 0,0.127575,1.496475, + 1.48068,0.15,0.24612, 1.4772,0.127575,0.245542, 1.496475,0.127575,0, + 1.496475,0.127575,0, 1.5,0.15,0, 1.48068,0.15,0.24612, + 1.42464,0.15,0.47856, 1.421292,0.127575,0.477435, 1.4772,0.127575,0.245542, + 1.4772,0.127575,0.245542, 1.48068,0.15,0.24612, 1.42464,0.15,0.47856, + 1.33476,0.15,0.69444, 1.331623,0.127575,0.692808, 1.421292,0.127575,0.477435, + 1.421292,0.127575,0.477435, 1.42464,0.15,0.47856, 1.33476,0.15,0.69444, + 1.21392,0.15,0.89088, 1.211067,0.127575,0.888786, 1.331623,0.127575,0.692808, + 1.331623,0.127575,0.692808, 1.33476,0.15,0.69444, 1.21392,0.15,0.89088, + 1.065,0.15,1.065, 1.062497,0.127575,1.062497, 1.211067,0.127575,0.888786, + 1.211067,0.127575,0.888786, 1.21392,0.15,0.89088, 1.065,0.15,1.065, + 0.89088,0.15,1.21392, 0.888786,0.127575,1.211067, 1.062497,0.127575,1.062497, + 1.062497,0.127575,1.062497, 1.065,0.15,1.065, 0.89088,0.15,1.21392, + 0.69444,0.15,1.33476, 0.692808,0.127575,1.331623, 0.888786,0.127575,1.211067, + 0.888786,0.127575,1.211067, 0.89088,0.15,1.21392, 0.69444,0.15,1.33476, + 0.47856,0.15,1.42464, 0.477435,0.127575,1.421292, 0.692808,0.127575,1.331623, + 0.692808,0.127575,1.331623, 0.69444,0.15,1.33476, 0.47856,0.15,1.42464, + 0.24612,0.15,1.48068, 0.245542,0.127575,1.4772, 0.477435,0.127575,1.421292, + 0.477435,0.127575,1.421292, 0.47856,0.15,1.42464, 0.24612,0.15,1.48068, + 0,0.15,1.5, 0,0.127575,1.496475, 0.245542,0.127575,1.4772, + 0.245542,0.127575,1.4772, 0.24612,0.15,1.48068, 0,0.15,1.5, + 0,0,0, 0,0.002175,0.388275, -0.063708,0.002175,0.383274, + 0,0,0, -0.063708,0.002175,0.383274, -0.123875,0.002175,0.368768, + 0,0,0, -0.123875,0.002175,0.368768, -0.179756,0.002175,0.345503, + 0,0,0, -0.179756,0.002175,0.345503, -0.230604,0.002175,0.314223, + 0,0,0, -0.230604,0.002175,0.314223, -0.275675,0.002175,0.275675, + 0,0,0, -0.275675,0.002175,0.275675, -0.314223,0.002175,0.230604, + 0,0,0, -0.314223,0.002175,0.230604, -0.345503,0.002175,0.179756, + 0,0,0, -0.345503,0.002175,0.179756, -0.368768,0.002175,0.123875, + 0,0,0, -0.368768,0.002175,0.123875, -0.383274,0.002175,0.063708, + 0,0,0, -0.383274,0.002175,0.063708, -0.388275,0.002175,0, + -0.115381,0.0084,0.694143, -0.063708,0.002175,0.383274, 0,0.002175,0.388275, + 0,0.002175,0.388275, 0,0.0084,0.7032, -0.115381,0.0084,0.694143, + -0.224349,0.0084,0.667871, -0.123875,0.002175,0.368768, -0.063708,0.002175,0.383274, + -0.063708,0.002175,0.383274, -0.115381,0.0084,0.694143, -0.224349,0.0084,0.667871, + -0.325553,0.0084,0.625735, -0.179756,0.002175,0.345503, -0.123875,0.002175,0.368768, + -0.123875,0.002175,0.368768, -0.224349,0.0084,0.667871, -0.325553,0.0084,0.625735, + -0.417645,0.0084,0.569086, -0.230604,0.002175,0.314223, -0.179756,0.002175,0.345503, + -0.179756,0.002175,0.345503, -0.325553,0.0084,0.625735, -0.417645,0.0084,0.569086, + -0.499272,0.0084,0.499272, -0.275675,0.002175,0.275675, -0.230604,0.002175,0.314223, + -0.230604,0.002175,0.314223, -0.417645,0.0084,0.569086, -0.499272,0.0084,0.499272, + -0.569086,0.0084,0.417645, -0.314223,0.002175,0.230604, -0.275675,0.002175,0.275675, + -0.275675,0.002175,0.275675, -0.499272,0.0084,0.499272, -0.569086,0.0084,0.417645, + -0.625735,0.0084,0.325553, -0.345503,0.002175,0.179756, -0.314223,0.002175,0.230604, + -0.314223,0.002175,0.230604, -0.569086,0.0084,0.417645, -0.625735,0.0084,0.325553, + -0.667871,0.0084,0.224349, -0.368768,0.002175,0.123875, -0.345503,0.002175,0.179756, + -0.345503,0.002175,0.179756, -0.625735,0.0084,0.325553, -0.667871,0.0084,0.224349, + -0.694143,0.0084,0.115381, -0.383274,0.002175,0.063708, -0.368768,0.002175,0.123875, + -0.368768,0.002175,0.123875, -0.667871,0.0084,0.224349, -0.694143,0.0084,0.115381, + -0.7032,0.0084,0, -0.388275,0.002175,0, -0.383274,0.002175,0.063708, + -0.383274,0.002175,0.063708, -0.694143,0.0084,0.115381, -0.7032,0.0084,0, + -0.156274,0.018225,0.940158, -0.115381,0.0084,0.694143, 0,0.0084,0.7032, + 0,0.0084,0.7032, 0,0.018225,0.952425, -0.156274,0.018225,0.940158, + -0.303862,0.018225,0.904575, -0.224349,0.0084,0.667871, -0.115381,0.0084,0.694143, + -0.115381,0.0084,0.694143, -0.156274,0.018225,0.940158, -0.303862,0.018225,0.904575, + -0.440935,0.018225,0.847506, -0.325553,0.0084,0.625735, -0.224349,0.0084,0.667871, + -0.224349,0.0084,0.667871, -0.303862,0.018225,0.904575, -0.440935,0.018225,0.847506, + -0.565664,0.018225,0.770779, -0.417645,0.0084,0.569086, -0.325553,0.0084,0.625735, + -0.325553,0.0084,0.625735, -0.440935,0.018225,0.847506, -0.565664,0.018225,0.770779, + -0.676222,0.018225,0.676222, -0.499272,0.0084,0.499272, -0.417645,0.0084,0.569086, + -0.417645,0.0084,0.569086, -0.565664,0.018225,0.770779, -0.676222,0.018225,0.676222, + -0.770779,0.018225,0.565664, -0.569086,0.0084,0.417645, -0.499272,0.0084,0.499272, + -0.499272,0.0084,0.499272, -0.676222,0.018225,0.676222, -0.770779,0.018225,0.565664, + -0.847506,0.018225,0.440935, -0.625735,0.0084,0.325553, -0.569086,0.0084,0.417645, + -0.569086,0.0084,0.417645, -0.770779,0.018225,0.565664, -0.847506,0.018225,0.440935, + -0.904575,0.018225,0.303862, -0.667871,0.0084,0.224349, -0.625735,0.0084,0.325553, + -0.625735,0.0084,0.325553, -0.847506,0.018225,0.440935, -0.904575,0.018225,0.303862, + -0.940158,0.018225,0.156274, -0.694143,0.0084,0.115381, -0.667871,0.0084,0.224349, + -0.667871,0.0084,0.224349, -0.904575,0.018225,0.303862, -0.940158,0.018225,0.156274, + -0.952425,0.018225,0, -0.7032,0.0084,0, -0.694143,0.0084,0.115381, + -0.694143,0.0084,0.115381, -0.940158,0.018225,0.156274, -0.952425,0.018225,0, + -0.187642,0.0312,1.12887, -0.156274,0.018225,0.940158, 0,0.018225,0.952425, + 0,0.018225,0.952425, 0,0.0312,1.1436, -0.187642,0.0312,1.12887, + -0.364854,0.0312,1.086146, -0.303862,0.018225,0.904575, -0.156274,0.018225,0.940158, + -0.156274,0.018225,0.940158, -0.187642,0.0312,1.12887, -0.364854,0.0312,1.086146, + -0.529441,0.0312,1.017621, -0.440935,0.018225,0.847506, -0.303862,0.018225,0.904575, + -0.303862,0.018225,0.904575, -0.364854,0.0312,1.086146, -0.529441,0.0312,1.017621, + -0.679207,0.0312,0.925493, -0.565664,0.018225,0.770779, -0.440935,0.018225,0.847506, + -0.440935,0.018225,0.847506, -0.529441,0.0312,1.017621, -0.679207,0.0312,0.925493, + -0.811956,0.0312,0.811956, -0.676222,0.018225,0.676222, -0.565664,0.018225,0.770779, + -0.565664,0.018225,0.770779, -0.679207,0.0312,0.925493, -0.811956,0.0312,0.811956, + -0.925493,0.0312,0.679207, -0.770779,0.018225,0.565664, -0.676222,0.018225,0.676222, + -0.676222,0.018225,0.676222, -0.811956,0.0312,0.811956, -0.925493,0.0312,0.679207, + -1.017621,0.0312,0.529441, -0.847506,0.018225,0.440935, -0.770779,0.018225,0.565664, + -0.770779,0.018225,0.565664, -0.925493,0.0312,0.679207, -1.017621,0.0312,0.529441, + -1.086146,0.0312,0.364854, -0.904575,0.018225,0.303862, -0.847506,0.018225,0.440935, + -0.847506,0.018225,0.440935, -1.017621,0.0312,0.529441, -1.086146,0.0312,0.364854, + -1.12887,0.0312,0.187642, -0.940158,0.018225,0.156274, -0.904575,0.018225,0.303862, + -0.904575,0.018225,0.303862, -1.086146,0.0312,0.364854, -1.12887,0.0312,0.187642, + -1.1436,0.0312,0, -0.952425,0.018225,0, -0.940158,0.018225,0.156274, + -0.940158,0.018225,0.156274, -1.12887,0.0312,0.187642, -1.1436,0.0312,0, + -0.21074,0.046875,1.267832, -0.187642,0.0312,1.12887, 0,0.0312,1.1436, + 0,0.0312,1.1436, 0,0.046875,1.284375, -0.21074,0.046875,1.267832, + -0.409767,0.046875,1.219848, -0.364854,0.0312,1.086146, -0.187642,0.0312,1.12887, + -0.187642,0.0312,1.12887, -0.21074,0.046875,1.267832, -0.409767,0.046875,1.219848, + -0.594614,0.046875,1.142888, -0.529441,0.0312,1.017621, -0.364854,0.0312,1.086146, + -0.364854,0.0312,1.086146, -0.409767,0.046875,1.219848, -0.594614,0.046875,1.142888, + -0.762816,0.046875,1.039419, -0.679207,0.0312,0.925493, -0.529441,0.0312,1.017621, + -0.529441,0.0312,1.017621, -0.594614,0.046875,1.142888, -0.762816,0.046875,1.039419, + -0.911906,0.046875,0.911906, -0.811956,0.0312,0.811956, -0.679207,0.0312,0.925493, + -0.679207,0.0312,0.925493, -0.762816,0.046875,1.039419, -0.911906,0.046875,0.911906, + -1.039419,0.046875,0.762816, -0.925493,0.0312,0.679207, -0.811956,0.0312,0.811956, + -0.811956,0.0312,0.811956, -0.911906,0.046875,0.911906, -1.039419,0.046875,0.762816, + -1.142888,0.046875,0.594614, -1.017621,0.0312,0.529441, -0.925493,0.0312,0.679207, + -0.925493,0.0312,0.679207, -1.039419,0.046875,0.762816, -1.142888,0.046875,0.594614, + -1.219848,0.046875,0.409767, -1.086146,0.0312,0.364854, -1.017621,0.0312,0.529441, + -1.017621,0.0312,0.529441, -1.142888,0.046875,0.594614, -1.219848,0.046875,0.409767, + -1.267832,0.046875,0.21074, -1.12887,0.0312,0.187642, -1.086146,0.0312,0.364854, + -1.086146,0.0312,0.364854, -1.219848,0.046875,0.409767, -1.267832,0.046875,0.21074, + -1.284375,0.046875,0, -1.1436,0.0312,0, -1.12887,0.0312,0.187642, + -1.12887,0.0312,0.187642, -1.267832,0.046875,0.21074, -1.284375,0.046875,0, + -0.226824,0.0648,1.364595, -0.21074,0.046875,1.267832, 0,0.046875,1.284375, + 0,0.046875,1.284375, 0,0.0648,1.3824, -0.226824,0.0648,1.364595, + -0.441041,0.0648,1.312948, -0.409767,0.046875,1.219848, -0.21074,0.046875,1.267832, + -0.21074,0.046875,1.267832, -0.226824,0.0648,1.364595, -0.441041,0.0648,1.312948, + -0.639996,0.0648,1.230115, -0.594614,0.046875,1.142888, -0.409767,0.046875,1.219848, + -0.409767,0.046875,1.219848, -0.441041,0.0648,1.312948, -0.639996,0.0648,1.230115, + -0.821035,0.0648,1.118749, -0.762816,0.046875,1.039419, -0.594614,0.046875,1.142888, + -0.594614,0.046875,1.142888, -0.639996,0.0648,1.230115, -0.821035,0.0648,1.118749, + -0.981504,0.0648,0.981504, -0.911906,0.046875,0.911906, -0.762816,0.046875,1.039419, + -0.762816,0.046875,1.039419, -0.821035,0.0648,1.118749, -0.981504,0.0648,0.981504, + -1.118749,0.0648,0.821035, -1.039419,0.046875,0.762816, -0.911906,0.046875,0.911906, + -0.911906,0.046875,0.911906, -0.981504,0.0648,0.981504, -1.118749,0.0648,0.821035, + -1.230115,0.0648,0.639996, -1.142888,0.046875,0.594614, -1.039419,0.046875,0.762816, + -1.039419,0.046875,0.762816, -1.118749,0.0648,0.821035, -1.230115,0.0648,0.639996, + -1.312948,0.0648,0.441041, -1.219848,0.046875,0.409767, -1.142888,0.046875,0.594614, + -1.142888,0.046875,0.594614, -1.230115,0.0648,0.639996, -1.312948,0.0648,0.441041, + -1.364595,0.0648,0.226824, -1.267832,0.046875,0.21074, -1.219848,0.046875,0.409767, + -1.219848,0.046875,0.409767, -1.312948,0.0648,0.441041, -1.364595,0.0648,0.226824, + -1.3824,0.0648,0, -1.284375,0.046875,0, -1.267832,0.046875,0.21074, + -1.267832,0.046875,0.21074, -1.364595,0.0648,0.226824, -1.3824,0.0648,0, + -0.237149,0.084525,1.426709, -0.226824,0.0648,1.364595, 0,0.0648,1.3824, + 0,0.0648,1.3824, 0,0.084525,1.445325, -0.237149,0.084525,1.426709, + -0.461116,0.084525,1.372712, -0.441041,0.0648,1.312948, -0.226824,0.0648,1.364595, + -0.226824,0.0648,1.364595, -0.237149,0.084525,1.426709, -0.461116,0.084525,1.372712, + -0.669128,0.084525,1.286108, -0.639996,0.0648,1.230115, -0.441041,0.0648,1.312948, + -0.441041,0.0648,1.312948, -0.461116,0.084525,1.372712, -0.669128,0.084525,1.286108, + -0.858407,0.084525,1.169673, -0.821035,0.0648,1.118749, -0.639996,0.0648,1.230115, + -0.639996,0.0648,1.230115, -0.669128,0.084525,1.286108, -0.858407,0.084525,1.169673, + -1.026181,0.084525,1.026181, -0.981504,0.0648,0.981504, -0.821035,0.0648,1.118749, + -0.821035,0.0648,1.118749, -0.858407,0.084525,1.169673, -1.026181,0.084525,1.026181, + -1.169673,0.084525,0.858407, -1.118749,0.0648,0.821035, -0.981504,0.0648,0.981504, + -0.981504,0.0648,0.981504, -1.026181,0.084525,1.026181, -1.169673,0.084525,0.858407, + -1.286108,0.084525,0.669128, -1.230115,0.0648,0.639996, -1.118749,0.0648,0.821035, + -1.118749,0.0648,0.821035, -1.169673,0.084525,0.858407, -1.286108,0.084525,0.669128, + -1.372712,0.084525,0.461116, -1.312948,0.0648,0.441041, -1.230115,0.0648,0.639996, + -1.230115,0.0648,0.639996, -1.286108,0.084525,0.669128, -1.372712,0.084525,0.461116, + -1.426709,0.084525,0.237149, -1.364595,0.0648,0.226824, -1.312948,0.0648,0.441041, + -1.312948,0.0648,0.441041, -1.372712,0.084525,0.461116, -1.426709,0.084525,0.237149, + -1.445325,0.084525,0, -1.3824,0.0648,0, -1.364595,0.0648,0.226824, + -1.364595,0.0648,0.226824, -1.426709,0.084525,0.237149, -1.445325,0.084525,0, + -0.24297,0.1056,1.461727, -0.237149,0.084525,1.426709, 0,0.084525,1.445325, + 0,0.084525,1.445325, 0,0.1056,1.4808, -0.24297,0.1056,1.461727, + -0.472434,0.1056,1.406405, -0.461116,0.084525,1.372712, -0.237149,0.084525,1.426709, + -0.237149,0.084525,1.426709, -0.24297,0.1056,1.461727, -0.472434,0.1056,1.406405, + -0.685551,0.1056,1.317675, -0.669128,0.084525,1.286108, -0.461116,0.084525,1.372712, + -0.461116,0.084525,1.372712, -0.472434,0.1056,1.406405, -0.685551,0.1056,1.317675, + -0.879477,0.1056,1.198382, -0.858407,0.084525,1.169673, -0.669128,0.084525,1.286108, + -0.669128,0.084525,1.286108, -0.685551,0.1056,1.317675, -0.879477,0.1056,1.198382, + -1.051368,0.1056,1.051368, -1.026181,0.084525,1.026181, -0.858407,0.084525,1.169673, + -0.858407,0.084525,1.169673, -0.879477,0.1056,1.198382, -1.051368,0.1056,1.051368, + -1.198382,0.1056,0.879477, -1.169673,0.084525,0.858407, -1.026181,0.084525,1.026181, + -1.026181,0.084525,1.026181, -1.051368,0.1056,1.051368, -1.198382,0.1056,0.879477, + -1.317675,0.1056,0.685551, -1.286108,0.084525,0.669128, -1.169673,0.084525,0.858407, + -1.169673,0.084525,0.858407, -1.198382,0.1056,0.879477, -1.317675,0.1056,0.685551, + -1.406405,0.1056,0.472434, -1.372712,0.084525,0.461116, -1.286108,0.084525,0.669128, + -1.286108,0.084525,0.669128, -1.317675,0.1056,0.685551, -1.406405,0.1056,0.472434, + -1.461727,0.1056,0.24297, -1.426709,0.084525,0.237149, -1.372712,0.084525,0.461116, + -1.372712,0.084525,0.461116, -1.406405,0.1056,0.472434, -1.461727,0.1056,0.24297, + -1.4808,0.1056,0, -1.445325,0.084525,0, -1.426709,0.084525,0.237149, + -1.426709,0.084525,0.237149, -1.461727,0.1056,0.24297, -1.4808,0.1056,0, + -0.245542,0.127575,1.4772, -0.24297,0.1056,1.461727, 0,0.1056,1.4808, + 0,0.1056,1.4808, 0,0.127575,1.496475, -0.245542,0.127575,1.4772, + -0.477435,0.127575,1.421292, -0.472434,0.1056,1.406405, -0.24297,0.1056,1.461727, + -0.24297,0.1056,1.461727, -0.245542,0.127575,1.4772, -0.477435,0.127575,1.421292, + -0.692808,0.127575,1.331623, -0.685551,0.1056,1.317675, -0.472434,0.1056,1.406405, + -0.472434,0.1056,1.406405, -0.477435,0.127575,1.421292, -0.692808,0.127575,1.331623, + -0.888786,0.127575,1.211067, -0.879477,0.1056,1.198382, -0.685551,0.1056,1.317675, + -0.685551,0.1056,1.317675, -0.692808,0.127575,1.331623, -0.888786,0.127575,1.211067, + -1.062497,0.127575,1.062497, -1.051368,0.1056,1.051368, -0.879477,0.1056,1.198382, + -0.879477,0.1056,1.198382, -0.888786,0.127575,1.211067, -1.062497,0.127575,1.062497, + -1.211067,0.127575,0.888786, -1.198382,0.1056,0.879477, -1.051368,0.1056,1.051368, + -1.051368,0.1056,1.051368, -1.062497,0.127575,1.062497, -1.211067,0.127575,0.888786, + -1.331623,0.127575,0.692808, -1.317675,0.1056,0.685551, -1.198382,0.1056,0.879477, + -1.198382,0.1056,0.879477, -1.211067,0.127575,0.888786, -1.331623,0.127575,0.692808, + -1.421292,0.127575,0.477435, -1.406405,0.1056,0.472434, -1.317675,0.1056,0.685551, + -1.317675,0.1056,0.685551, -1.331623,0.127575,0.692808, -1.421292,0.127575,0.477435, + -1.4772,0.127575,0.245542, -1.461727,0.1056,0.24297, -1.406405,0.1056,0.472434, + -1.406405,0.1056,0.472434, -1.421292,0.127575,0.477435, -1.4772,0.127575,0.245542, + -1.496475,0.127575,0, -1.4808,0.1056,0, -1.461727,0.1056,0.24297, + -1.461727,0.1056,0.24297, -1.4772,0.127575,0.245542, -1.496475,0.127575,0, + -0.24612,0.15,1.48068, -0.245542,0.127575,1.4772, 0,0.127575,1.496475, + 0,0.127575,1.496475, 0,0.15,1.5, -0.24612,0.15,1.48068, + -0.47856,0.15,1.42464, -0.477435,0.127575,1.421292, -0.245542,0.127575,1.4772, + -0.245542,0.127575,1.4772, -0.24612,0.15,1.48068, -0.47856,0.15,1.42464, + -0.69444,0.15,1.33476, -0.692808,0.127575,1.331623, -0.477435,0.127575,1.421292, + -0.477435,0.127575,1.421292, -0.47856,0.15,1.42464, -0.69444,0.15,1.33476, + -0.89088,0.15,1.21392, -0.888786,0.127575,1.211067, -0.692808,0.127575,1.331623, + -0.692808,0.127575,1.331623, -0.69444,0.15,1.33476, -0.89088,0.15,1.21392, + -1.065,0.15,1.065, -1.062497,0.127575,1.062497, -0.888786,0.127575,1.211067, + -0.888786,0.127575,1.211067, -0.89088,0.15,1.21392, -1.065,0.15,1.065, + -1.21392,0.15,0.89088, -1.211067,0.127575,0.888786, -1.062497,0.127575,1.062497, + -1.062497,0.127575,1.062497, -1.065,0.15,1.065, -1.21392,0.15,0.89088, + -1.33476,0.15,0.69444, -1.331623,0.127575,0.692808, -1.211067,0.127575,0.888786, + -1.211067,0.127575,0.888786, -1.21392,0.15,0.89088, -1.33476,0.15,0.69444, + -1.42464,0.15,0.47856, -1.421292,0.127575,0.477435, -1.331623,0.127575,0.692808, + -1.331623,0.127575,0.692808, -1.33476,0.15,0.69444, -1.42464,0.15,0.47856, + -1.48068,0.15,0.24612, -1.4772,0.127575,0.245542, -1.421292,0.127575,0.477435, + -1.421292,0.127575,0.477435, -1.42464,0.15,0.47856, -1.48068,0.15,0.24612, + -1.5,0.15,0, -1.496475,0.127575,0, -1.4772,0.127575,0.245542, + -1.4772,0.127575,0.245542, -1.48068,0.15,0.24612, -1.5,0.15,0, + 0,0,0, -0.388275,0.002175,0, -0.383274,0.002175,-0.063708, + 0,0,0, -0.383274,0.002175,-0.063708, -0.368768,0.002175,-0.123875, + 0,0,0, -0.368768,0.002175,-0.123875, -0.345503,0.002175,-0.179756, + 0,0,0, -0.345503,0.002175,-0.179756, -0.314223,0.002175,-0.230604, + 0,0,0, -0.314223,0.002175,-0.230604, -0.275675,0.002175,-0.275675, + 0,0,0, -0.275675,0.002175,-0.275675, -0.230604,0.002175,-0.314223, + 0,0,0, -0.230604,0.002175,-0.314223, -0.179756,0.002175,-0.345503, + 0,0,0, -0.179756,0.002175,-0.345503, -0.123875,0.002175,-0.368768, + 0,0,0, -0.123875,0.002175,-0.368768, -0.063708,0.002175,-0.383274, + 0,0,0, -0.063708,0.002175,-0.383274, 0,0.002175,-0.388275, + -0.694143,0.0084,-0.115381, -0.383274,0.002175,-0.063708, -0.388275,0.002175,0, + -0.388275,0.002175,0, -0.7032,0.0084,0, -0.694143,0.0084,-0.115381, + -0.667871,0.0084,-0.224349, -0.368768,0.002175,-0.123875, -0.383274,0.002175,-0.063708, + -0.383274,0.002175,-0.063708, -0.694143,0.0084,-0.115381, -0.667871,0.0084,-0.224349, + -0.625735,0.0084,-0.325553, -0.345503,0.002175,-0.179756, -0.368768,0.002175,-0.123875, + -0.368768,0.002175,-0.123875, -0.667871,0.0084,-0.224349, -0.625735,0.0084,-0.325553, + -0.569086,0.0084,-0.417645, -0.314223,0.002175,-0.230604, -0.345503,0.002175,-0.179756, + -0.345503,0.002175,-0.179756, -0.625735,0.0084,-0.325553, -0.569086,0.0084,-0.417645, + -0.499272,0.0084,-0.499272, -0.275675,0.002175,-0.275675, -0.314223,0.002175,-0.230604, + -0.314223,0.002175,-0.230604, -0.569086,0.0084,-0.417645, -0.499272,0.0084,-0.499272, + -0.417645,0.0084,-0.569086, -0.230604,0.002175,-0.314223, -0.275675,0.002175,-0.275675, + -0.275675,0.002175,-0.275675, -0.499272,0.0084,-0.499272, -0.417645,0.0084,-0.569086, + -0.325553,0.0084,-0.625735, -0.179756,0.002175,-0.345503, -0.230604,0.002175,-0.314223, + -0.230604,0.002175,-0.314223, -0.417645,0.0084,-0.569086, -0.325553,0.0084,-0.625735, + -0.224349,0.0084,-0.667871, -0.123875,0.002175,-0.368768, -0.179756,0.002175,-0.345503, + -0.179756,0.002175,-0.345503, -0.325553,0.0084,-0.625735, -0.224349,0.0084,-0.667871, + -0.115381,0.0084,-0.694143, -0.063708,0.002175,-0.383274, -0.123875,0.002175,-0.368768, + -0.123875,0.002175,-0.368768, -0.224349,0.0084,-0.667871, -0.115381,0.0084,-0.694143, + 0,0.0084,-0.7032, 0,0.002175,-0.388275, -0.063708,0.002175,-0.383274, + -0.063708,0.002175,-0.383274, -0.115381,0.0084,-0.694143, 0,0.0084,-0.7032, + -0.940158,0.018225,-0.156274, -0.694143,0.0084,-0.115381, -0.7032,0.0084,0, + -0.7032,0.0084,0, -0.952425,0.018225,0, -0.940158,0.018225,-0.156274, + -0.904575,0.018225,-0.303862, -0.667871,0.0084,-0.224349, -0.694143,0.0084,-0.115381, + -0.694143,0.0084,-0.115381, -0.940158,0.018225,-0.156274, -0.904575,0.018225,-0.303862, + -0.847506,0.018225,-0.440935, -0.625735,0.0084,-0.325553, -0.667871,0.0084,-0.224349, + -0.667871,0.0084,-0.224349, -0.904575,0.018225,-0.303862, -0.847506,0.018225,-0.440935, + -0.770779,0.018225,-0.565664, -0.569086,0.0084,-0.417645, -0.625735,0.0084,-0.325553, + -0.625735,0.0084,-0.325553, -0.847506,0.018225,-0.440935, -0.770779,0.018225,-0.565664, + -0.676222,0.018225,-0.676222, -0.499272,0.0084,-0.499272, -0.569086,0.0084,-0.417645, + -0.569086,0.0084,-0.417645, -0.770779,0.018225,-0.565664, -0.676222,0.018225,-0.676222, + -0.565664,0.018225,-0.770779, -0.417645,0.0084,-0.569086, -0.499272,0.0084,-0.499272, + -0.499272,0.0084,-0.499272, -0.676222,0.018225,-0.676222, -0.565664,0.018225,-0.770779, + -0.440935,0.018225,-0.847506, -0.325553,0.0084,-0.625735, -0.417645,0.0084,-0.569086, + -0.417645,0.0084,-0.569086, -0.565664,0.018225,-0.770779, -0.440935,0.018225,-0.847506, + -0.303862,0.018225,-0.904575, -0.224349,0.0084,-0.667871, -0.325553,0.0084,-0.625735, + -0.325553,0.0084,-0.625735, -0.440935,0.018225,-0.847506, -0.303862,0.018225,-0.904575, + -0.156274,0.018225,-0.940158, -0.115381,0.0084,-0.694143, -0.224349,0.0084,-0.667871, + -0.224349,0.0084,-0.667871, -0.303862,0.018225,-0.904575, -0.156274,0.018225,-0.940158, + 0,0.018225,-0.952425, 0,0.0084,-0.7032, -0.115381,0.0084,-0.694143, + -0.115381,0.0084,-0.694143, -0.156274,0.018225,-0.940158, 0,0.018225,-0.952425, + -1.12887,0.0312,-0.187642, -0.940158,0.018225,-0.156274, -0.952425,0.018225,0, + -0.952425,0.018225,0, -1.1436,0.0312,0, -1.12887,0.0312,-0.187642, + -1.086146,0.0312,-0.364854, -0.904575,0.018225,-0.303862, -0.940158,0.018225,-0.156274, + -0.940158,0.018225,-0.156274, -1.12887,0.0312,-0.187642, -1.086146,0.0312,-0.364854, + -1.017621,0.0312,-0.529441, -0.847506,0.018225,-0.440935, -0.904575,0.018225,-0.303862, + -0.904575,0.018225,-0.303862, -1.086146,0.0312,-0.364854, -1.017621,0.0312,-0.529441, + -0.925493,0.0312,-0.679207, -0.770779,0.018225,-0.565664, -0.847506,0.018225,-0.440935, + -0.847506,0.018225,-0.440935, -1.017621,0.0312,-0.529441, -0.925493,0.0312,-0.679207, + -0.811956,0.0312,-0.811956, -0.676222,0.018225,-0.676222, -0.770779,0.018225,-0.565664, + -0.770779,0.018225,-0.565664, -0.925493,0.0312,-0.679207, -0.811956,0.0312,-0.811956, + -0.679207,0.0312,-0.925493, -0.565664,0.018225,-0.770779, -0.676222,0.018225,-0.676222, + -0.676222,0.018225,-0.676222, -0.811956,0.0312,-0.811956, -0.679207,0.0312,-0.925493, + -0.529441,0.0312,-1.017621, -0.440935,0.018225,-0.847506, -0.565664,0.018225,-0.770779, + -0.565664,0.018225,-0.770779, -0.679207,0.0312,-0.925493, -0.529441,0.0312,-1.017621, + -0.364854,0.0312,-1.086146, -0.303862,0.018225,-0.904575, -0.440935,0.018225,-0.847506, + -0.440935,0.018225,-0.847506, -0.529441,0.0312,-1.017621, -0.364854,0.0312,-1.086146, + -0.187642,0.0312,-1.12887, -0.156274,0.018225,-0.940158, -0.303862,0.018225,-0.904575, + -0.303862,0.018225,-0.904575, -0.364854,0.0312,-1.086146, -0.187642,0.0312,-1.12887, + 0,0.0312,-1.1436, 0,0.018225,-0.952425, -0.156274,0.018225,-0.940158, + -0.156274,0.018225,-0.940158, -0.187642,0.0312,-1.12887, 0,0.0312,-1.1436, + -1.267832,0.046875,-0.21074, -1.12887,0.0312,-0.187642, -1.1436,0.0312,0, + -1.1436,0.0312,0, -1.284375,0.046875,0, -1.267832,0.046875,-0.21074, + -1.219848,0.046875,-0.409767, -1.086146,0.0312,-0.364854, -1.12887,0.0312,-0.187642, + -1.12887,0.0312,-0.187642, -1.267832,0.046875,-0.21074, -1.219848,0.046875,-0.409767, + -1.142888,0.046875,-0.594614, -1.017621,0.0312,-0.529441, -1.086146,0.0312,-0.364854, + -1.086146,0.0312,-0.364854, -1.219848,0.046875,-0.409767, -1.142888,0.046875,-0.594614, + -1.039419,0.046875,-0.762816, -0.925493,0.0312,-0.679207, -1.017621,0.0312,-0.529441, + -1.017621,0.0312,-0.529441, -1.142888,0.046875,-0.594614, -1.039419,0.046875,-0.762816, + -0.911906,0.046875,-0.911906, -0.811956,0.0312,-0.811956, -0.925493,0.0312,-0.679207, + -0.925493,0.0312,-0.679207, -1.039419,0.046875,-0.762816, -0.911906,0.046875,-0.911906, + -0.762816,0.046875,-1.039419, -0.679207,0.0312,-0.925493, -0.811956,0.0312,-0.811956, + -0.811956,0.0312,-0.811956, -0.911906,0.046875,-0.911906, -0.762816,0.046875,-1.039419, + -0.594614,0.046875,-1.142888, -0.529441,0.0312,-1.017621, -0.679207,0.0312,-0.925493, + -0.679207,0.0312,-0.925493, -0.762816,0.046875,-1.039419, -0.594614,0.046875,-1.142888, + -0.409767,0.046875,-1.219848, -0.364854,0.0312,-1.086146, -0.529441,0.0312,-1.017621, + -0.529441,0.0312,-1.017621, -0.594614,0.046875,-1.142888, -0.409767,0.046875,-1.219848, + -0.21074,0.046875,-1.267832, -0.187642,0.0312,-1.12887, -0.364854,0.0312,-1.086146, + -0.364854,0.0312,-1.086146, -0.409767,0.046875,-1.219848, -0.21074,0.046875,-1.267832, + 0,0.046875,-1.284375, 0,0.0312,-1.1436, -0.187642,0.0312,-1.12887, + -0.187642,0.0312,-1.12887, -0.21074,0.046875,-1.267832, 0,0.046875,-1.284375, + -1.364595,0.0648,-0.226824, -1.267832,0.046875,-0.21074, -1.284375,0.046875,0, + -1.284375,0.046875,0, -1.3824,0.0648,0, -1.364595,0.0648,-0.226824, + -1.312948,0.0648,-0.441041, -1.219848,0.046875,-0.409767, -1.267832,0.046875,-0.21074, + -1.267832,0.046875,-0.21074, -1.364595,0.0648,-0.226824, -1.312948,0.0648,-0.441041, + -1.230115,0.0648,-0.639996, -1.142888,0.046875,-0.594614, -1.219848,0.046875,-0.409767, + -1.219848,0.046875,-0.409767, -1.312948,0.0648,-0.441041, -1.230115,0.0648,-0.639996, + -1.118749,0.0648,-0.821035, -1.039419,0.046875,-0.762816, -1.142888,0.046875,-0.594614, + -1.142888,0.046875,-0.594614, -1.230115,0.0648,-0.639996, -1.118749,0.0648,-0.821035, + -0.981504,0.0648,-0.981504, -0.911906,0.046875,-0.911906, -1.039419,0.046875,-0.762816, + -1.039419,0.046875,-0.762816, -1.118749,0.0648,-0.821035, -0.981504,0.0648,-0.981504, + -0.821035,0.0648,-1.118749, -0.762816,0.046875,-1.039419, -0.911906,0.046875,-0.911906, + -0.911906,0.046875,-0.911906, -0.981504,0.0648,-0.981504, -0.821035,0.0648,-1.118749, + -0.639996,0.0648,-1.230115, -0.594614,0.046875,-1.142888, -0.762816,0.046875,-1.039419, + -0.762816,0.046875,-1.039419, -0.821035,0.0648,-1.118749, -0.639996,0.0648,-1.230115, + -0.441041,0.0648,-1.312948, -0.409767,0.046875,-1.219848, -0.594614,0.046875,-1.142888, + -0.594614,0.046875,-1.142888, -0.639996,0.0648,-1.230115, -0.441041,0.0648,-1.312948, + -0.226824,0.0648,-1.364595, -0.21074,0.046875,-1.267832, -0.409767,0.046875,-1.219848, + -0.409767,0.046875,-1.219848, -0.441041,0.0648,-1.312948, -0.226824,0.0648,-1.364595, + 0,0.0648,-1.3824, 0,0.046875,-1.284375, -0.21074,0.046875,-1.267832, + -0.21074,0.046875,-1.267832, -0.226824,0.0648,-1.364595, 0,0.0648,-1.3824, + -1.426709,0.084525,-0.237149, -1.364595,0.0648,-0.226824, -1.3824,0.0648,0, + -1.3824,0.0648,0, -1.445325,0.084525,0, -1.426709,0.084525,-0.237149, + -1.372712,0.084525,-0.461116, -1.312948,0.0648,-0.441041, -1.364595,0.0648,-0.226824, + -1.364595,0.0648,-0.226824, -1.426709,0.084525,-0.237149, -1.372712,0.084525,-0.461116, + -1.286108,0.084525,-0.669128, -1.230115,0.0648,-0.639996, -1.312948,0.0648,-0.441041, + -1.312948,0.0648,-0.441041, -1.372712,0.084525,-0.461116, -1.286108,0.084525,-0.669128, + -1.169673,0.084525,-0.858407, -1.118749,0.0648,-0.821035, -1.230115,0.0648,-0.639996, + -1.230115,0.0648,-0.639996, -1.286108,0.084525,-0.669128, -1.169673,0.084525,-0.858407, + -1.026181,0.084525,-1.026181, -0.981504,0.0648,-0.981504, -1.118749,0.0648,-0.821035, + -1.118749,0.0648,-0.821035, -1.169673,0.084525,-0.858407, -1.026181,0.084525,-1.026181, + -0.858407,0.084525,-1.169673, -0.821035,0.0648,-1.118749, -0.981504,0.0648,-0.981504, + -0.981504,0.0648,-0.981504, -1.026181,0.084525,-1.026181, -0.858407,0.084525,-1.169673, + -0.669128,0.084525,-1.286108, -0.639996,0.0648,-1.230115, -0.821035,0.0648,-1.118749, + -0.821035,0.0648,-1.118749, -0.858407,0.084525,-1.169673, -0.669128,0.084525,-1.286108, + -0.461116,0.084525,-1.372712, -0.441041,0.0648,-1.312948, -0.639996,0.0648,-1.230115, + -0.639996,0.0648,-1.230115, -0.669128,0.084525,-1.286108, -0.461116,0.084525,-1.372712, + -0.237149,0.084525,-1.426709, -0.226824,0.0648,-1.364595, -0.441041,0.0648,-1.312948, + -0.441041,0.0648,-1.312948, -0.461116,0.084525,-1.372712, -0.237149,0.084525,-1.426709, + 0,0.084525,-1.445325, 0,0.0648,-1.3824, -0.226824,0.0648,-1.364595, + -0.226824,0.0648,-1.364595, -0.237149,0.084525,-1.426709, 0,0.084525,-1.445325, + -1.461727,0.1056,-0.24297, -1.426709,0.084525,-0.237149, -1.445325,0.084525,0, + -1.445325,0.084525,0, -1.4808,0.1056,0, -1.461727,0.1056,-0.24297, + -1.406405,0.1056,-0.472434, -1.372712,0.084525,-0.461116, -1.426709,0.084525,-0.237149, + -1.426709,0.084525,-0.237149, -1.461727,0.1056,-0.24297, -1.406405,0.1056,-0.472434, + -1.317675,0.1056,-0.685551, -1.286108,0.084525,-0.669128, -1.372712,0.084525,-0.461116, + -1.372712,0.084525,-0.461116, -1.406405,0.1056,-0.472434, -1.317675,0.1056,-0.685551, + -1.198382,0.1056,-0.879477, -1.169673,0.084525,-0.858407, -1.286108,0.084525,-0.669128, + -1.286108,0.084525,-0.669128, -1.317675,0.1056,-0.685551, -1.198382,0.1056,-0.879477, + -1.051368,0.1056,-1.051368, -1.026181,0.084525,-1.026181, -1.169673,0.084525,-0.858407, + -1.169673,0.084525,-0.858407, -1.198382,0.1056,-0.879477, -1.051368,0.1056,-1.051368, + -0.879477,0.1056,-1.198382, -0.858407,0.084525,-1.169673, -1.026181,0.084525,-1.026181, + -1.026181,0.084525,-1.026181, -1.051368,0.1056,-1.051368, -0.879477,0.1056,-1.198382, + -0.685551,0.1056,-1.317675, -0.669128,0.084525,-1.286108, -0.858407,0.084525,-1.169673, + -0.858407,0.084525,-1.169673, -0.879477,0.1056,-1.198382, -0.685551,0.1056,-1.317675, + -0.472434,0.1056,-1.406405, -0.461116,0.084525,-1.372712, -0.669128,0.084525,-1.286108, + -0.669128,0.084525,-1.286108, -0.685551,0.1056,-1.317675, -0.472434,0.1056,-1.406405, + -0.24297,0.1056,-1.461727, -0.237149,0.084525,-1.426709, -0.461116,0.084525,-1.372712, + -0.461116,0.084525,-1.372712, -0.472434,0.1056,-1.406405, -0.24297,0.1056,-1.461727, + 0,0.1056,-1.4808, 0,0.084525,-1.445325, -0.237149,0.084525,-1.426709, + -0.237149,0.084525,-1.426709, -0.24297,0.1056,-1.461727, 0,0.1056,-1.4808, + -1.4772,0.127575,-0.245542, -1.461727,0.1056,-0.24297, -1.4808,0.1056,0, + -1.4808,0.1056,0, -1.496475,0.127575,0, -1.4772,0.127575,-0.245542, + -1.421292,0.127575,-0.477435, -1.406405,0.1056,-0.472434, -1.461727,0.1056,-0.24297, + -1.461727,0.1056,-0.24297, -1.4772,0.127575,-0.245542, -1.421292,0.127575,-0.477435, + -1.331623,0.127575,-0.692808, -1.317675,0.1056,-0.685551, -1.406405,0.1056,-0.472434, + -1.406405,0.1056,-0.472434, -1.421292,0.127575,-0.477435, -1.331623,0.127575,-0.692808, + -1.211067,0.127575,-0.888786, -1.198382,0.1056,-0.879477, -1.317675,0.1056,-0.685551, + -1.317675,0.1056,-0.685551, -1.331623,0.127575,-0.692808, -1.211067,0.127575,-0.888786, + -1.062497,0.127575,-1.062497, -1.051368,0.1056,-1.051368, -1.198382,0.1056,-0.879477, + -1.198382,0.1056,-0.879477, -1.211067,0.127575,-0.888786, -1.062497,0.127575,-1.062497, + -0.888786,0.127575,-1.211067, -0.879477,0.1056,-1.198382, -1.051368,0.1056,-1.051368, + -1.051368,0.1056,-1.051368, -1.062497,0.127575,-1.062497, -0.888786,0.127575,-1.211067, + -0.692808,0.127575,-1.331623, -0.685551,0.1056,-1.317675, -0.879477,0.1056,-1.198382, + -0.879477,0.1056,-1.198382, -0.888786,0.127575,-1.211067, -0.692808,0.127575,-1.331623, + -0.477435,0.127575,-1.421292, -0.472434,0.1056,-1.406405, -0.685551,0.1056,-1.317675, + -0.685551,0.1056,-1.317675, -0.692808,0.127575,-1.331623, -0.477435,0.127575,-1.421292, + -0.245542,0.127575,-1.4772, -0.24297,0.1056,-1.461727, -0.472434,0.1056,-1.406405, + -0.472434,0.1056,-1.406405, -0.477435,0.127575,-1.421292, -0.245542,0.127575,-1.4772, + 0,0.127575,-1.496475, 0,0.1056,-1.4808, -0.24297,0.1056,-1.461727, + -0.24297,0.1056,-1.461727, -0.245542,0.127575,-1.4772, 0,0.127575,-1.496475, + -1.48068,0.15,-0.24612, -1.4772,0.127575,-0.245542, -1.496475,0.127575,0, + -1.496475,0.127575,0, -1.5,0.15,0, -1.48068,0.15,-0.24612, + -1.42464,0.15,-0.47856, -1.421292,0.127575,-0.477435, -1.4772,0.127575,-0.245542, + -1.4772,0.127575,-0.245542, -1.48068,0.15,-0.24612, -1.42464,0.15,-0.47856, + -1.33476,0.15,-0.69444, -1.331623,0.127575,-0.692808, -1.421292,0.127575,-0.477435, + -1.421292,0.127575,-0.477435, -1.42464,0.15,-0.47856, -1.33476,0.15,-0.69444, + -1.21392,0.15,-0.89088, -1.211067,0.127575,-0.888786, -1.331623,0.127575,-0.692808, + -1.331623,0.127575,-0.692808, -1.33476,0.15,-0.69444, -1.21392,0.15,-0.89088, + -1.065,0.15,-1.065, -1.062497,0.127575,-1.062497, -1.211067,0.127575,-0.888786, + -1.211067,0.127575,-0.888786, -1.21392,0.15,-0.89088, -1.065,0.15,-1.065, + -0.89088,0.15,-1.21392, -0.888786,0.127575,-1.211067, -1.062497,0.127575,-1.062497, + -1.062497,0.127575,-1.062497, -1.065,0.15,-1.065, -0.89088,0.15,-1.21392, + -0.69444,0.15,-1.33476, -0.692808,0.127575,-1.331623, -0.888786,0.127575,-1.211067, + -0.888786,0.127575,-1.211067, -0.89088,0.15,-1.21392, -0.69444,0.15,-1.33476, + -0.47856,0.15,-1.42464, -0.477435,0.127575,-1.421292, -0.692808,0.127575,-1.331623, + -0.692808,0.127575,-1.331623, -0.69444,0.15,-1.33476, -0.47856,0.15,-1.42464, + -0.24612,0.15,-1.48068, -0.245542,0.127575,-1.4772, -0.477435,0.127575,-1.421292, + -0.477435,0.127575,-1.421292, -0.47856,0.15,-1.42464, -0.24612,0.15,-1.48068, + 0,0.15,-1.5, 0,0.127575,-1.496475, -0.245542,0.127575,-1.4772, + -0.245542,0.127575,-1.4772, -0.24612,0.15,-1.48068, 0,0.15,-1.5, + 0,0,0, 0,0.002175,-0.388275, 0.063708,0.002175,-0.383274, + 0,0,0, 0.063708,0.002175,-0.383274, 0.123875,0.002175,-0.368768, + 0,0,0, 0.123875,0.002175,-0.368768, 0.179756,0.002175,-0.345503, + 0,0,0, 0.179756,0.002175,-0.345503, 0.230604,0.002175,-0.314223, + 0,0,0, 0.230604,0.002175,-0.314223, 0.275675,0.002175,-0.275675, + 0,0,0, 0.275675,0.002175,-0.275675, 0.314223,0.002175,-0.230604, + 0,0,0, 0.314223,0.002175,-0.230604, 0.345503,0.002175,-0.179756, + 0,0,0, 0.345503,0.002175,-0.179756, 0.368768,0.002175,-0.123875, + 0,0,0, 0.368768,0.002175,-0.123875, 0.383274,0.002175,-0.063708, + 0,0,0, 0.383274,0.002175,-0.063708, 0.388275,0.002175,0, + 0.115381,0.0084,-0.694143, 0.063708,0.002175,-0.383274, 0,0.002175,-0.388275, + 0,0.002175,-0.388275, 0,0.0084,-0.7032, 0.115381,0.0084,-0.694143, + 0.224349,0.0084,-0.667871, 0.123875,0.002175,-0.368768, 0.063708,0.002175,-0.383274, + 0.063708,0.002175,-0.383274, 0.115381,0.0084,-0.694143, 0.224349,0.0084,-0.667871, + 0.325553,0.0084,-0.625735, 0.179756,0.002175,-0.345503, 0.123875,0.002175,-0.368768, + 0.123875,0.002175,-0.368768, 0.224349,0.0084,-0.667871, 0.325553,0.0084,-0.625735, + 0.417645,0.0084,-0.569086, 0.230604,0.002175,-0.314223, 0.179756,0.002175,-0.345503, + 0.179756,0.002175,-0.345503, 0.325553,0.0084,-0.625735, 0.417645,0.0084,-0.569086, + 0.499272,0.0084,-0.499272, 0.275675,0.002175,-0.275675, 0.230604,0.002175,-0.314223, + 0.230604,0.002175,-0.314223, 0.417645,0.0084,-0.569086, 0.499272,0.0084,-0.499272, + 0.569086,0.0084,-0.417645, 0.314223,0.002175,-0.230604, 0.275675,0.002175,-0.275675, + 0.275675,0.002175,-0.275675, 0.499272,0.0084,-0.499272, 0.569086,0.0084,-0.417645, + 0.625735,0.0084,-0.325553, 0.345503,0.002175,-0.179756, 0.314223,0.002175,-0.230604, + 0.314223,0.002175,-0.230604, 0.569086,0.0084,-0.417645, 0.625735,0.0084,-0.325553, + 0.667871,0.0084,-0.224349, 0.368768,0.002175,-0.123875, 0.345503,0.002175,-0.179756, + 0.345503,0.002175,-0.179756, 0.625735,0.0084,-0.325553, 0.667871,0.0084,-0.224349, + 0.694143,0.0084,-0.115381, 0.383274,0.002175,-0.063708, 0.368768,0.002175,-0.123875, + 0.368768,0.002175,-0.123875, 0.667871,0.0084,-0.224349, 0.694143,0.0084,-0.115381, + 0.7032,0.0084,0, 0.388275,0.002175,0, 0.383274,0.002175,-0.063708, + 0.383274,0.002175,-0.063708, 0.694143,0.0084,-0.115381, 0.7032,0.0084,0, + 0.156274,0.018225,-0.940158, 0.115381,0.0084,-0.694143, 0,0.0084,-0.7032, + 0,0.0084,-0.7032, 0,0.018225,-0.952425, 0.156274,0.018225,-0.940158, + 0.303862,0.018225,-0.904575, 0.224349,0.0084,-0.667871, 0.115381,0.0084,-0.694143, + 0.115381,0.0084,-0.694143, 0.156274,0.018225,-0.940158, 0.303862,0.018225,-0.904575, + 0.440935,0.018225,-0.847506, 0.325553,0.0084,-0.625735, 0.224349,0.0084,-0.667871, + 0.224349,0.0084,-0.667871, 0.303862,0.018225,-0.904575, 0.440935,0.018225,-0.847506, + 0.565664,0.018225,-0.770779, 0.417645,0.0084,-0.569086, 0.325553,0.0084,-0.625735, + 0.325553,0.0084,-0.625735, 0.440935,0.018225,-0.847506, 0.565664,0.018225,-0.770779, + 0.676222,0.018225,-0.676222, 0.499272,0.0084,-0.499272, 0.417645,0.0084,-0.569086, + 0.417645,0.0084,-0.569086, 0.565664,0.018225,-0.770779, 0.676222,0.018225,-0.676222, + 0.770779,0.018225,-0.565664, 0.569086,0.0084,-0.417645, 0.499272,0.0084,-0.499272, + 0.499272,0.0084,-0.499272, 0.676222,0.018225,-0.676222, 0.770779,0.018225,-0.565664, + 0.847506,0.018225,-0.440935, 0.625735,0.0084,-0.325553, 0.569086,0.0084,-0.417645, + 0.569086,0.0084,-0.417645, 0.770779,0.018225,-0.565664, 0.847506,0.018225,-0.440935, + 0.904575,0.018225,-0.303862, 0.667871,0.0084,-0.224349, 0.625735,0.0084,-0.325553, + 0.625735,0.0084,-0.325553, 0.847506,0.018225,-0.440935, 0.904575,0.018225,-0.303862, + 0.940158,0.018225,-0.156274, 0.694143,0.0084,-0.115381, 0.667871,0.0084,-0.224349, + 0.667871,0.0084,-0.224349, 0.904575,0.018225,-0.303862, 0.940158,0.018225,-0.156274, + 0.952425,0.018225,0, 0.7032,0.0084,0, 0.694143,0.0084,-0.115381, + 0.694143,0.0084,-0.115381, 0.940158,0.018225,-0.156274, 0.952425,0.018225,0, + 0.187642,0.0312,-1.12887, 0.156274,0.018225,-0.940158, 0,0.018225,-0.952425, + 0,0.018225,-0.952425, 0,0.0312,-1.1436, 0.187642,0.0312,-1.12887, + 0.364854,0.0312,-1.086146, 0.303862,0.018225,-0.904575, 0.156274,0.018225,-0.940158, + 0.156274,0.018225,-0.940158, 0.187642,0.0312,-1.12887, 0.364854,0.0312,-1.086146, + 0.529441,0.0312,-1.017621, 0.440935,0.018225,-0.847506, 0.303862,0.018225,-0.904575, + 0.303862,0.018225,-0.904575, 0.364854,0.0312,-1.086146, 0.529441,0.0312,-1.017621, + 0.679207,0.0312,-0.925493, 0.565664,0.018225,-0.770779, 0.440935,0.018225,-0.847506, + 0.440935,0.018225,-0.847506, 0.529441,0.0312,-1.017621, 0.679207,0.0312,-0.925493, + 0.811956,0.0312,-0.811956, 0.676222,0.018225,-0.676222, 0.565664,0.018225,-0.770779, + 0.565664,0.018225,-0.770779, 0.679207,0.0312,-0.925493, 0.811956,0.0312,-0.811956, + 0.925493,0.0312,-0.679207, 0.770779,0.018225,-0.565664, 0.676222,0.018225,-0.676222, + 0.676222,0.018225,-0.676222, 0.811956,0.0312,-0.811956, 0.925493,0.0312,-0.679207, + 1.017621,0.0312,-0.529441, 0.847506,0.018225,-0.440935, 0.770779,0.018225,-0.565664, + 0.770779,0.018225,-0.565664, 0.925493,0.0312,-0.679207, 1.017621,0.0312,-0.529441, + 1.086146,0.0312,-0.364854, 0.904575,0.018225,-0.303862, 0.847506,0.018225,-0.440935, + 0.847506,0.018225,-0.440935, 1.017621,0.0312,-0.529441, 1.086146,0.0312,-0.364854, + 1.12887,0.0312,-0.187642, 0.940158,0.018225,-0.156274, 0.904575,0.018225,-0.303862, + 0.904575,0.018225,-0.303862, 1.086146,0.0312,-0.364854, 1.12887,0.0312,-0.187642, + 1.1436,0.0312,0, 0.952425,0.018225,0, 0.940158,0.018225,-0.156274, + 0.940158,0.018225,-0.156274, 1.12887,0.0312,-0.187642, 1.1436,0.0312,0, + 0.21074,0.046875,-1.267832, 0.187642,0.0312,-1.12887, 0,0.0312,-1.1436, + 0,0.0312,-1.1436, 0,0.046875,-1.284375, 0.21074,0.046875,-1.267832, + 0.409767,0.046875,-1.219848, 0.364854,0.0312,-1.086146, 0.187642,0.0312,-1.12887, + 0.187642,0.0312,-1.12887, 0.21074,0.046875,-1.267832, 0.409767,0.046875,-1.219848, + 0.594614,0.046875,-1.142888, 0.529441,0.0312,-1.017621, 0.364854,0.0312,-1.086146, + 0.364854,0.0312,-1.086146, 0.409767,0.046875,-1.219848, 0.594614,0.046875,-1.142888, + 0.762816,0.046875,-1.039419, 0.679207,0.0312,-0.925493, 0.529441,0.0312,-1.017621, + 0.529441,0.0312,-1.017621, 0.594614,0.046875,-1.142888, 0.762816,0.046875,-1.039419, + 0.911906,0.046875,-0.911906, 0.811956,0.0312,-0.811956, 0.679207,0.0312,-0.925493, + 0.679207,0.0312,-0.925493, 0.762816,0.046875,-1.039419, 0.911906,0.046875,-0.911906, + 1.039419,0.046875,-0.762816, 0.925493,0.0312,-0.679207, 0.811956,0.0312,-0.811956, + 0.811956,0.0312,-0.811956, 0.911906,0.046875,-0.911906, 1.039419,0.046875,-0.762816, + 1.142888,0.046875,-0.594614, 1.017621,0.0312,-0.529441, 0.925493,0.0312,-0.679207, + 0.925493,0.0312,-0.679207, 1.039419,0.046875,-0.762816, 1.142888,0.046875,-0.594614, + 1.219848,0.046875,-0.409767, 1.086146,0.0312,-0.364854, 1.017621,0.0312,-0.529441, + 1.017621,0.0312,-0.529441, 1.142888,0.046875,-0.594614, 1.219848,0.046875,-0.409767, + 1.267832,0.046875,-0.21074, 1.12887,0.0312,-0.187642, 1.086146,0.0312,-0.364854, + 1.086146,0.0312,-0.364854, 1.219848,0.046875,-0.409767, 1.267832,0.046875,-0.21074, + 1.284375,0.046875,0, 1.1436,0.0312,0, 1.12887,0.0312,-0.187642, + 1.12887,0.0312,-0.187642, 1.267832,0.046875,-0.21074, 1.284375,0.046875,0, + 0.226824,0.0648,-1.364595, 0.21074,0.046875,-1.267832, 0,0.046875,-1.284375, + 0,0.046875,-1.284375, 0,0.0648,-1.3824, 0.226824,0.0648,-1.364595, + 0.441041,0.0648,-1.312948, 0.409767,0.046875,-1.219848, 0.21074,0.046875,-1.267832, + 0.21074,0.046875,-1.267832, 0.226824,0.0648,-1.364595, 0.441041,0.0648,-1.312948, + 0.639996,0.0648,-1.230115, 0.594614,0.046875,-1.142888, 0.409767,0.046875,-1.219848, + 0.409767,0.046875,-1.219848, 0.441041,0.0648,-1.312948, 0.639996,0.0648,-1.230115, + 0.821035,0.0648,-1.118749, 0.762816,0.046875,-1.039419, 0.594614,0.046875,-1.142888, + 0.594614,0.046875,-1.142888, 0.639996,0.0648,-1.230115, 0.821035,0.0648,-1.118749, + 0.981504,0.0648,-0.981504, 0.911906,0.046875,-0.911906, 0.762816,0.046875,-1.039419, + 0.762816,0.046875,-1.039419, 0.821035,0.0648,-1.118749, 0.981504,0.0648,-0.981504, + 1.118749,0.0648,-0.821035, 1.039419,0.046875,-0.762816, 0.911906,0.046875,-0.911906, + 0.911906,0.046875,-0.911906, 0.981504,0.0648,-0.981504, 1.118749,0.0648,-0.821035, + 1.230115,0.0648,-0.639996, 1.142888,0.046875,-0.594614, 1.039419,0.046875,-0.762816, + 1.039419,0.046875,-0.762816, 1.118749,0.0648,-0.821035, 1.230115,0.0648,-0.639996, + 1.312948,0.0648,-0.441041, 1.219848,0.046875,-0.409767, 1.142888,0.046875,-0.594614, + 1.142888,0.046875,-0.594614, 1.230115,0.0648,-0.639996, 1.312948,0.0648,-0.441041, + 1.364595,0.0648,-0.226824, 1.267832,0.046875,-0.21074, 1.219848,0.046875,-0.409767, + 1.219848,0.046875,-0.409767, 1.312948,0.0648,-0.441041, 1.364595,0.0648,-0.226824, + 1.3824,0.0648,0, 1.284375,0.046875,0, 1.267832,0.046875,-0.21074, + 1.267832,0.046875,-0.21074, 1.364595,0.0648,-0.226824, 1.3824,0.0648,0, + 0.237149,0.084525,-1.426709, 0.226824,0.0648,-1.364595, 0,0.0648,-1.3824, + 0,0.0648,-1.3824, 0,0.084525,-1.445325, 0.237149,0.084525,-1.426709, + 0.461116,0.084525,-1.372712, 0.441041,0.0648,-1.312948, 0.226824,0.0648,-1.364595, + 0.226824,0.0648,-1.364595, 0.237149,0.084525,-1.426709, 0.461116,0.084525,-1.372712, + 0.669128,0.084525,-1.286108, 0.639996,0.0648,-1.230115, 0.441041,0.0648,-1.312948, + 0.441041,0.0648,-1.312948, 0.461116,0.084525,-1.372712, 0.669128,0.084525,-1.286108, + 0.858407,0.084525,-1.169673, 0.821035,0.0648,-1.118749, 0.639996,0.0648,-1.230115, + 0.639996,0.0648,-1.230115, 0.669128,0.084525,-1.286108, 0.858407,0.084525,-1.169673, + 1.026181,0.084525,-1.026181, 0.981504,0.0648,-0.981504, 0.821035,0.0648,-1.118749, + 0.821035,0.0648,-1.118749, 0.858407,0.084525,-1.169673, 1.026181,0.084525,-1.026181, + 1.169673,0.084525,-0.858407, 1.118749,0.0648,-0.821035, 0.981504,0.0648,-0.981504, + 0.981504,0.0648,-0.981504, 1.026181,0.084525,-1.026181, 1.169673,0.084525,-0.858407, + 1.286108,0.084525,-0.669128, 1.230115,0.0648,-0.639996, 1.118749,0.0648,-0.821035, + 1.118749,0.0648,-0.821035, 1.169673,0.084525,-0.858407, 1.286108,0.084525,-0.669128, + 1.372712,0.084525,-0.461116, 1.312948,0.0648,-0.441041, 1.230115,0.0648,-0.639996, + 1.230115,0.0648,-0.639996, 1.286108,0.084525,-0.669128, 1.372712,0.084525,-0.461116, + 1.426709,0.084525,-0.237149, 1.364595,0.0648,-0.226824, 1.312948,0.0648,-0.441041, + 1.312948,0.0648,-0.441041, 1.372712,0.084525,-0.461116, 1.426709,0.084525,-0.237149, + 1.445325,0.084525,0, 1.3824,0.0648,0, 1.364595,0.0648,-0.226824, + 1.364595,0.0648,-0.226824, 1.426709,0.084525,-0.237149, 1.445325,0.084525,0, + 0.24297,0.1056,-1.461727, 0.237149,0.084525,-1.426709, 0,0.084525,-1.445325, + 0,0.084525,-1.445325, 0,0.1056,-1.4808, 0.24297,0.1056,-1.461727, + 0.472434,0.1056,-1.406405, 0.461116,0.084525,-1.372712, 0.237149,0.084525,-1.426709, + 0.237149,0.084525,-1.426709, 0.24297,0.1056,-1.461727, 0.472434,0.1056,-1.406405, + 0.685551,0.1056,-1.317675, 0.669128,0.084525,-1.286108, 0.461116,0.084525,-1.372712, + 0.461116,0.084525,-1.372712, 0.472434,0.1056,-1.406405, 0.685551,0.1056,-1.317675, + 0.879477,0.1056,-1.198382, 0.858407,0.084525,-1.169673, 0.669128,0.084525,-1.286108, + 0.669128,0.084525,-1.286108, 0.685551,0.1056,-1.317675, 0.879477,0.1056,-1.198382, + 1.051368,0.1056,-1.051368, 1.026181,0.084525,-1.026181, 0.858407,0.084525,-1.169673, + 0.858407,0.084525,-1.169673, 0.879477,0.1056,-1.198382, 1.051368,0.1056,-1.051368, + 1.198382,0.1056,-0.879477, 1.169673,0.084525,-0.858407, 1.026181,0.084525,-1.026181, + 1.026181,0.084525,-1.026181, 1.051368,0.1056,-1.051368, 1.198382,0.1056,-0.879477, + 1.317675,0.1056,-0.685551, 1.286108,0.084525,-0.669128, 1.169673,0.084525,-0.858407, + 1.169673,0.084525,-0.858407, 1.198382,0.1056,-0.879477, 1.317675,0.1056,-0.685551, + 1.406405,0.1056,-0.472434, 1.372712,0.084525,-0.461116, 1.286108,0.084525,-0.669128, + 1.286108,0.084525,-0.669128, 1.317675,0.1056,-0.685551, 1.406405,0.1056,-0.472434, + 1.461727,0.1056,-0.24297, 1.426709,0.084525,-0.237149, 1.372712,0.084525,-0.461116, + 1.372712,0.084525,-0.461116, 1.406405,0.1056,-0.472434, 1.461727,0.1056,-0.24297, + 1.4808,0.1056,0, 1.445325,0.084525,0, 1.426709,0.084525,-0.237149, + 1.426709,0.084525,-0.237149, 1.461727,0.1056,-0.24297, 1.4808,0.1056,0, + 0.245542,0.127575,-1.4772, 0.24297,0.1056,-1.461727, 0,0.1056,-1.4808, + 0,0.1056,-1.4808, 0,0.127575,-1.496475, 0.245542,0.127575,-1.4772, + 0.477435,0.127575,-1.421292, 0.472434,0.1056,-1.406405, 0.24297,0.1056,-1.461727, + 0.24297,0.1056,-1.461727, 0.245542,0.127575,-1.4772, 0.477435,0.127575,-1.421292, + 0.692808,0.127575,-1.331623, 0.685551,0.1056,-1.317675, 0.472434,0.1056,-1.406405, + 0.472434,0.1056,-1.406405, 0.477435,0.127575,-1.421292, 0.692808,0.127575,-1.331623, + 0.888786,0.127575,-1.211067, 0.879477,0.1056,-1.198382, 0.685551,0.1056,-1.317675, + 0.685551,0.1056,-1.317675, 0.692808,0.127575,-1.331623, 0.888786,0.127575,-1.211067, + 1.062497,0.127575,-1.062497, 1.051368,0.1056,-1.051368, 0.879477,0.1056,-1.198382, + 0.879477,0.1056,-1.198382, 0.888786,0.127575,-1.211067, 1.062497,0.127575,-1.062497, + 1.211067,0.127575,-0.888786, 1.198382,0.1056,-0.879477, 1.051368,0.1056,-1.051368, + 1.051368,0.1056,-1.051368, 1.062497,0.127575,-1.062497, 1.211067,0.127575,-0.888786, + 1.331623,0.127575,-0.692808, 1.317675,0.1056,-0.685551, 1.198382,0.1056,-0.879477, + 1.198382,0.1056,-0.879477, 1.211067,0.127575,-0.888786, 1.331623,0.127575,-0.692808, + 1.421292,0.127575,-0.477435, 1.406405,0.1056,-0.472434, 1.317675,0.1056,-0.685551, + 1.317675,0.1056,-0.685551, 1.331623,0.127575,-0.692808, 1.421292,0.127575,-0.477435, + 1.4772,0.127575,-0.245542, 1.461727,0.1056,-0.24297, 1.406405,0.1056,-0.472434, + 1.406405,0.1056,-0.472434, 1.421292,0.127575,-0.477435, 1.4772,0.127575,-0.245542, + 1.496475,0.127575,0, 1.4808,0.1056,0, 1.461727,0.1056,-0.24297, + 1.461727,0.1056,-0.24297, 1.4772,0.127575,-0.245542, 1.496475,0.127575,0, + 0.24612,0.15,-1.48068, 0.245542,0.127575,-1.4772, 0,0.127575,-1.496475, + 0,0.127575,-1.496475, 0,0.15,-1.5, 0.24612,0.15,-1.48068, + 0.47856,0.15,-1.42464, 0.477435,0.127575,-1.421292, 0.245542,0.127575,-1.4772, + 0.245542,0.127575,-1.4772, 0.24612,0.15,-1.48068, 0.47856,0.15,-1.42464, + 0.69444,0.15,-1.33476, 0.692808,0.127575,-1.331623, 0.477435,0.127575,-1.421292, + 0.477435,0.127575,-1.421292, 0.47856,0.15,-1.42464, 0.69444,0.15,-1.33476, + 0.89088,0.15,-1.21392, 0.888786,0.127575,-1.211067, 0.692808,0.127575,-1.331623, + 0.692808,0.127575,-1.331623, 0.69444,0.15,-1.33476, 0.89088,0.15,-1.21392, + 1.065,0.15,-1.065, 1.062497,0.127575,-1.062497, 0.888786,0.127575,-1.211067, + 0.888786,0.127575,-1.211067, 0.89088,0.15,-1.21392, 1.065,0.15,-1.065, + 1.21392,0.15,-0.89088, 1.211067,0.127575,-0.888786, 1.062497,0.127575,-1.062497, + 1.062497,0.127575,-1.062497, 1.065,0.15,-1.065, 1.21392,0.15,-0.89088, + 1.33476,0.15,-0.69444, 1.331623,0.127575,-0.692808, 1.211067,0.127575,-0.888786, + 1.211067,0.127575,-0.888786, 1.21392,0.15,-0.89088, 1.33476,0.15,-0.69444, + 1.42464,0.15,-0.47856, 1.421292,0.127575,-0.477435, 1.331623,0.127575,-0.692808, + 1.331623,0.127575,-0.692808, 1.33476,0.15,-0.69444, 1.42464,0.15,-0.47856, + 1.48068,0.15,-0.24612, 1.4772,0.127575,-0.245542, 1.421292,0.127575,-0.477435, + 1.421292,0.127575,-0.477435, 1.42464,0.15,-0.47856, 1.48068,0.15,-0.24612, + 1.5,0.15,0, 1.496475,0.127575,0, 1.4772,0.127575,-0.245542, + 1.4772,0.127575,-0.245542, 1.48068,0.15,-0.24612, 1.5,0.15,0 +}; diff --git a/hacks/glx/topblock.c b/hacks/glx/topblock.c index 008882d3..6523102a 100644 --- a/hacks/glx/topblock.c +++ b/hacks/glx/topblock.c @@ -72,22 +72,22 @@ typedef struct } topBlockSTATE; /* parameter vars */ -Bool override; -Bool rotate; -Bool follow; -Bool drawCarpet; -Bool drawBlob; -Bool drawNipples; -GLfloat rotateSpeed; -GLfloat camX; -GLfloat camY; -GLfloat camZ; -GLfloat dropSpeed; -int maxFalling; -int maxColors; -int size; -int spawn; -int resolution; +static Bool override; +static Bool rotate; +static Bool follow; +static Bool drawCarpet; +static Bool drawBlob; +static Bool drawNipples; +static GLfloat rotateSpeed; +static GLfloat camX; +static GLfloat camY; +static GLfloat camZ; +static GLfloat dropSpeed; +static int maxFalling; +static int maxColors; +static int size; +static int spawn; +static int resolution; static XrmOptionDescRec opts[] = { { "-size", ".size", XrmoptionSepArg, 0 }, @@ -147,7 +147,7 @@ static argtype vars[] = { static topBlockSTATE *tbs = NULL; -ModeSpecOpt topBlock_opts = {countof(opts), opts, countof(vars), vars, NULL}; +static ModeSpecOpt topBlock_opts = {countof(opts), opts, countof(vars), vars, NULL}; /* Window management, etc */ ENTRYPOINT void @@ -319,13 +319,10 @@ draw_topBlock (ModeInfo *mi) followBlock(mi); } - glScalef (-1, 1, 1); - glTranslatef (0, 0, -10); - glRotatef(-current_device_rotation(), 0, 0, 1); + /* Rotate the scene around a point that's a little higher up. */ + glTranslatef (0, 0, -5); gltrackball_rotate (tb->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); - glTranslatef (0, 0, 10); - glScalef (-1, 1, 1); + glTranslatef (0, 0, 5); /* rotate the world */ glRotatef(tb->rotation, 0.0, 0.0, 1.0); diff --git a/hacks/glx/trackball.c b/hacks/glx/trackball.c index 617a0bb1..429ade91 100644 --- a/hacks/glx/trackball.c +++ b/hacks/glx/trackball.c @@ -72,6 +72,7 @@ */ static float tb_project_to_sphere(float, float, float); static void normalize_quat(float [4]); +static void axis_to_quat(float a[3], float phi, float q[4]); static void vzero(float *v) diff --git a/hacks/glx/trackball.h b/hacks/glx/trackball.h index f7da9509..4b84ab71 100644 --- a/hacks/glx/trackball.h +++ b/hacks/glx/trackball.h @@ -76,7 +76,7 @@ build_rotmatrix(float m[4][4], float q[4]); * the given vector) and an angle about which to rotate. The angle is * expressed in radians. The result is put into the third argument. */ -void -axis_to_quat(float a[3], float phi, float q[4]); +/* void +axis_to_quat(float a[3], float phi, float q[4]); */ #endif /* __TRACKBALL_H__ */ diff --git a/hacks/glx/tronbit.c b/hacks/glx/tronbit.c index 261aca3c..3ab69f1d 100644 --- a/hacks/glx/tronbit.c +++ b/hacks/glx/tronbit.c @@ -505,7 +505,6 @@ draw_bit (ModeInfo *mi) glPushMatrix (); glRotatef(current_device_rotation(), 0, 0, 1); - glScalef(1.1, 1.1, 1.1); { @@ -514,10 +513,7 @@ draw_bit (ModeInfo *mi) glTranslatef((x - 0.5) * 11, (y - 0.5) * 5, (z - 0.5) * 3); - - glRotatef(-current_device_rotation(), 0, 0, 1); gltrackball_rotate (bp->trackball); - glRotatef(current_device_rotation(), 0, 0, 1); get_rotation (bp->rot, &x, &y, &z, !bp->button_down_p); glRotatef (x * 360, 1.0, 0.0, 0.0); diff --git a/hacks/glx/tunnel_draw.c b/hacks/glx/tunnel_draw.c index 54132fbe..333161bb 100644 --- a/hacks/glx/tunnel_draw.c +++ b/hacks/glx/tunnel_draw.c @@ -111,7 +111,8 @@ struct tunnel_state { }; /*=================== Vector normalization ==================================*/ -static void normalize(cvPoint *V) +static void +normalize(cvPoint *V) { float d; @@ -125,7 +126,8 @@ static void normalize(cvPoint *V) } /*=================== C = A x B (Vector multiply) ==========================*/ #if 0 -static void vect_mult(cvPoint *A, cvPoint *B, cvPoint *C) +static void +vect_mult(cvPoint *A, cvPoint *B, cvPoint *C) { /* Vector multiply */ C->x = A->y*B->z - A->z*B->y; @@ -135,7 +137,8 @@ static void vect_mult(cvPoint *A, cvPoint *B, cvPoint *C) #endif /* Catmull-Rom Curve calculations */ -static void cvCatmullRom(cvPoint *p, float t, cvPoint *outp) +static void +cvCatmullRom(cvPoint *p, float t, cvPoint *outp) { float t2, t3, t1; @@ -156,7 +159,8 @@ static void cvCatmullRom(cvPoint *p, float t, cvPoint *outp) // outp - output point //========================================================================== */ -static void RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPoint *outp) +static void +RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPoint *outp) { cvPoint p1, p2; float l, m, n, ca, sa; @@ -183,7 +187,8 @@ static void RotateAroundLine(cvPoint *p, cvPoint *pp, cvPoint *pl, float a, cvPo /*=================== Load camera and tunnel path ==========================*/ -static void LoadPath(struct tunnel_state *st) +static void +LoadPath(struct tunnel_state *st) { float x, y, z; tnPath *path1=NULL, *path2=NULL; @@ -222,7 +227,7 @@ static void LoadPath(struct tunnel_state *st) /*=================== Tunnel Initialization ================================*/ struct tunnel_state * -InitTunnel(void) +atunnel_InitTunnel(void) { struct tunnel_state *st = (struct tunnel_state *) calloc (1, sizeof(*st)); LoadPath(st); @@ -230,7 +235,8 @@ InitTunnel(void) return st; } -void DrawTunnel(struct tunnel_state *st, +void +atunnel_DrawTunnel(struct tunnel_state *st, int do_texture, int do_light, GLuint *textures) { tnPath *p, *p1, *cmpos; @@ -438,7 +444,8 @@ void DrawTunnel(struct tunnel_state *st, } /* =================== Show splash screen =================================== */ -void SplashScreen(struct tunnel_state *st, +void +atunnel_SplashScreen(struct tunnel_state *st, int do_wire, int do_texture, int do_light) { if (st->ModeX > 0) @@ -496,7 +503,8 @@ void SplashScreen(struct tunnel_state *st, } } -void FreeTunnel(struct tunnel_state *st) +void +atunnel_FreeTunnel(struct tunnel_state *st) { free (st); } diff --git a/hacks/glx/tunnel_draw.h b/hacks/glx/tunnel_draw.h index 3ada23a6..643b9584 100644 --- a/hacks/glx/tunnel_draw.h +++ b/hacks/glx/tunnel_draw.h @@ -2,10 +2,10 @@ struct tunnel_state; -extern struct tunnel_state * InitTunnel(void); -extern void DrawTunnel(struct tunnel_state *, +extern struct tunnel_state * atunnel_InitTunnel(void); +extern void atunnel_DrawTunnel(struct tunnel_state *, int do_texture, int do_light, GLuint *textures); -extern void SplashScreen(struct tunnel_state *, +extern void atunnel_SplashScreen(struct tunnel_state *, int do_wire, int do_texture, int do_light); -extern void FreeTunnel(struct tunnel_state *); +extern void atunnel_FreeTunnel(struct tunnel_state *); diff --git a/hacks/goop.c b/hacks/goop.c index d2308386..02a5b113 100644 --- a/hacks/goop.c +++ b/hacks/goop.c @@ -339,7 +339,9 @@ make_goop (Screen *screen, Visual *visual, Window window, Colormap cmap, goop->nlayers = get_integer_resource (dpy, "planes", "Planes"); if (goop->nlayers <= 0) goop->nlayers = (random() % (depth-2)) + 2; - goop->layers = (struct layer **) malloc(sizeof(*goop->layers)*goop->nlayers); + if (! goop->layers) + goop->layers = (struct layer **) + malloc(sizeof(*goop->layers)*goop->nlayers); goop->additive_p = get_boolean_resource (dpy, "additive", "Additive"); goop->cmap_p = has_writable_cells (screen, visual); @@ -542,7 +544,11 @@ static void goop_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { - /* #### write me */ + struct goop *goop = (struct goop *) closure; + + /* #### leaks like crazy */ + struct goop *goop2 = goop_init (dpy, window); + memcpy (goop, goop2, sizeof(*goop)); } static Bool diff --git a/hacks/grav.c b/hacks/grav.c index ef8a92d7..a6ea6312 100644 --- a/hacks/grav.c +++ b/hacks/grav.c @@ -35,7 +35,6 @@ static const char sccsid[] = "@(#)grav.c 5.00 2000/11/01 xlockmore"; "*fpsSolid: true \n" \ #define BRIGHT_COLORS -# define reshape_grav 0 # define grav_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* STANDALONE */ @@ -327,6 +326,15 @@ draw_grav(ModeInfo * mi) draw_planet(mi, &gp->planets[ball]); } +ENTRYPOINT void +reshape_grav(ModeInfo * mi, int width, int height) +{ + gravstruct *gp = &gravs[MI_SCREEN(mi)]; + gp->width = width; + gp->height = height; + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); +} + ENTRYPOINT void release_grav(ModeInfo * mi) { diff --git a/hacks/interference.c b/hacks/interference.c index e1eebb67..60607981 100644 --- a/hacks/interference.c +++ b/hacks/interference.c @@ -457,6 +457,9 @@ static void interference_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct inter_context *c = (struct inter_context *) closure; + c->w = w; + c->h = h; } static Bool diff --git a/hacks/julia.c b/hacks/julia.c index f0236617..fe7ad436 100644 --- a/hacks/julia.c +++ b/hacks/julia.c @@ -45,33 +45,15 @@ static const char sccsid[] = "@(#)julia.c 4.03 97/04/10 xlockmore"; "*fpsSolid: true \n" \ # define UNIFORM_COLORS -# define reshape_julia 0 -# define julia_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* !STANDALONE */ # include "xlock.h" /* in xlockmore distribution */ #endif /* !STANDALONE */ -static Bool track_p; - #define DEF_MOUSE "False" -static XrmOptionDescRec opts[] = -{ - {"-mouse", ".julia.mouse", XrmoptionNoArg, "on"}, - {"+mouse", ".julia.mouse", XrmoptionNoArg, "off"}, -}; -static argtype vars[] = -{ - {&track_p, "mouse", "Mouse", DEF_MOUSE, t_Bool}, -}; -static OptionStruct desc[] = -{ - {"-/+mouse", "turn on/off mouse tracking"}, -}; - -ENTRYPOINT ModeSpecOpt julia_opts = { 2, opts, 1, vars, desc }; +ENTRYPOINT ModeSpecOpt julia_opts = { 0, }; #define numpoints ((0x2<depth)-1) @@ -96,6 +78,8 @@ typedef struct { #endif GC stippledGC; XPoint **pointBuffer; /* pointer for XDrawPoints */ + Bool button_down_p; + int mouse_x, mouse_y; } juliastruct; @@ -140,28 +124,13 @@ apply(juliastruct * jp, register double xr, register double xi, int d) static void incr(ModeInfo * mi, juliastruct * jp) { - int cx, cy; - - if (track_p) + if (jp->button_down_p) { - Window r, c; - int rx, ry; - unsigned int m; - XQueryPointer(MI_DISPLAY(mi), MI_WINDOW(mi), - &r, &c, &rx, &ry, &cx, &cy, &m); - if (cx <= 0 || cy <= 0 || - cx >= MI_WIN_WIDTH(mi) || cy >= MI_WIN_HEIGHT(mi)) - goto NOTRACK; - } - - if (track_p) - { - jp->cr = ((double) (cx + 2 - jp->centerx)) * 2 / jp->centerx; - jp->ci = ((double) (cy + 2 - jp->centery)) * 2 / jp->centery; + jp->cr = ((double) (jp->mouse_x + 2 - jp->centerx)) * 2 / jp->centerx; + jp->ci = ((double) (jp->mouse_y + 2 - jp->centery)) * 2 / jp->centery; } else { - NOTRACK: #if 0 jp->cr = 1.5 * (sin(M_PI * (jp->inc / 300.0)) * sin(jp->inc * M_PI / 200.0)); @@ -207,7 +176,7 @@ init_julia(ModeInfo * mi) #ifndef HAVE_COCOA - if (track_p && !jp->cursor) + if (jp->button_down_p && !jp->cursor && !jp->cursor) { Pixmap bit; XColor black; @@ -230,7 +199,7 @@ init_julia(ModeInfo * mi) if (jp->pixmap == None) { GC fg_gc = None, bg_gc = None; - jp->circsize = (MIN(jp->centerx, jp->centery) / 96) * 2 + 1; + jp->circsize = MAX(8, (MIN(jp->centerx, jp->centery) / 96) * 2 + 1); jp->pixmap = XCreatePixmap(display, window, jp->circsize, jp->circsize, 1); gcv.foreground = 1; fg_gc = XCreateGC(display, jp->pixmap, GCForeground, &gcv); @@ -284,6 +253,44 @@ init_julia(ModeInfo * mi) } +static void +reshape_julia (ModeInfo *mi, int w, int h) +{ + init_julia (mi); +} + + +ENTRYPOINT Bool +julia_handle_event (ModeInfo *mi, XEvent *event) +{ + juliastruct *jp = &julias[MI_SCREEN(mi)]; + + if (event->xany.type == ButtonPress && + event->xbutton.button == Button1) + { + jp->button_down_p = True; + jp->mouse_x = event->xbutton.x; + jp->mouse_y = event->xbutton.y; + return True; + } + else if (event->xany.type == ButtonRelease && + event->xbutton.button == Button1) + { + jp->button_down_p = False; + return True; + } + else if (event->xany.type == MotionNotify && jp->button_down_p) + { + jp->mouse_x = event->xmotion.x; + jp->mouse_y = event->xmotion.y; + return True; + } + + return False; +} + + + /* hack: moved here by jwz. */ #define ERASE_IMAGE(d,w,g,x,y,xl,yl,xs,ys) \ if (ylcenterx * jp->cr / 2) + jp->centerx - 2; new_circle.y = (int) (jp->centery * jp->ci / 2) + jp->centery - 2; XSetForeground(display, gc, MI_WIN_BLACK_PIXEL(mi)); - ERASE_IMAGE(display, window, gc, new_circle.x, new_circle.y, - old_circle.x, old_circle.y, jp->circsize, jp->circsize); + XFillArc(display, window, gc, + old_circle.x-jp->circsize/2-2, + old_circle.y-jp->circsize/2-2, + jp->circsize+4, jp->circsize+4, + 0, 360*64); /* draw a circle at the c-parameter so you can see it's effect on the structure of the julia set */ XSetForeground(display, jp->stippledGC, MI_WIN_WHITE_PIXEL(mi)); @@ -328,8 +338,12 @@ draw_julia (ModeInfo * mi) XSetStipple(display, jp->stippledGC, jp->pixmap); XSetFillStyle(display, jp->stippledGC, FillOpaqueStippled); #endif /* HAVE_COCOA */ - XFillRectangle(display, window, jp->stippledGC, new_circle.x, new_circle.y, - jp->circsize, jp->circsize); + XDrawArc(display, window, jp->stippledGC, + new_circle.x-jp->circsize/2, + new_circle.y-jp->circsize/2, + jp->circsize, jp->circsize, + 0, 360*64); + if (jp->erase == 1) { XDrawPoints(display, window, gc, jp->pointBuffer[jp->buffer], numpoints, CoordModeOrigin); diff --git a/hacks/julia.man b/hacks/julia.man index a27e2e38..4e0f2e82 100644 --- a/hacks/julia.man +++ b/hacks/julia.man @@ -3,7 +3,7 @@ julia - draws spinning, animating julia-set fractals .SH SYNOPSIS .B julia -[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-mouse] [\-nomouse] +[\-display \fIhost:display.screen\fP] [\-foreground \fIcolor\fP] [\-background \fIcolor\fP] [\-window] [\-root] [\-mono] [\-install] [\-visual \fIvisual\fP] [\-ncolors \fIinteger\fP] [\-delay \fImicroseconds\fP] [\-cycles \fIinteger\fP] [\-count \fIinteger\fP] [\-fps] .SH DESCRIPTION @@ -19,6 +19,8 @@ dx266 and it looks okay. The sinusoidal variation of the parameter might not be as interesting as it could, but it still gives an idea of the effect of the parameter. +Dragging the mouse in the window uses the mouse's position as the +control point for the generation of ths set. .SH OPTIONS .I julia accepts the following options: @@ -48,14 +50,6 @@ the color wheel. .TP 8 .B \-count \fIinteger\fP - -.TP 8 -.B \-mouse -.TP 8 -.B \-nomouse -If \fI\-mouse\fP is specified, the control point of the Julia set will -be derived from the position of the mouse in the window. When the mouse -is not in the window, the control point is chosen the normal way. .TP 8 .B \-fps Display the current frame rate and CPU load. diff --git a/hacks/loop.c b/hacks/loop.c index 7b50a56a..7a998738 100644 --- a/hacks/loop.c +++ b/hacks/loop.c @@ -93,7 +93,6 @@ static const char sccsid[] = "@(#)loop.c 5.01 2000/03/15 xlockmore"; "*fpsSolid: true \n" \ # define UNIFORM_COLORS -# define reshape_loop 0 # define loop_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* STANDALONE */ @@ -1678,6 +1677,13 @@ draw_loop (ModeInfo * mi) } } +ENTRYPOINT void +reshape_loop(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_loop (mi); +} + ENTRYPOINT void refresh_loop (ModeInfo * mi) { diff --git a/hacks/m6502.c b/hacks/m6502.c index 8361fbd0..11a78743 100644 --- a/hacks/m6502.c +++ b/hacks/m6502.c @@ -23,11 +23,16 @@ ISO C89 compilers are required to support" when includng the following data file... */ # endif -const char * const demo_files[] = { +static const char * const demo_files[] = { # include "m6502.h" }; +#ifndef USE_IPHONE +# define READ_FILES +#endif + + /* We want to paint on a 32 by 32 grid of pixels. We will needed to divided the screen up into chuncks */ enum { @@ -74,7 +79,7 @@ start_rand_bin_prog(machine_6502 *machine, struct state *st){ while(n == st->which) n = random() % st->demos; st->which = n; - start_eval_string(machine, demo_files[st->which], plot6502, st); + m6502_start_eval_string(machine, demo_files[st->which], plot6502, st); } @@ -114,7 +119,6 @@ m6502_init (Display *dpy, Window window) { struct state *st = (struct state *) calloc (1, sizeof(*st)); unsigned int x, y; - char *s = get_string_resource (dpy, "file", "File"); int n = get_integer_resource(dpy, "displaytime", "Displaytime"); int dh; st->demos = countof(demo_files); @@ -125,7 +129,7 @@ m6502_init (Display *dpy, Window window) st->tv=analogtv_allocate(st->dpy, st->window); analogtv_set_defaults(st->tv, ""); - st->machine = build6502(); + st->machine = m6502_build(); st->inp=analogtv_input_allocate(); analogtv_setup_sync(st->inp, 1, 0); @@ -141,10 +145,15 @@ m6502_init (Display *dpy, Window window) init_time(st); - if (strlen(s) > 0) - start_eval_file(st->machine,s, plot6502, st); + { +#ifdef READ_FILES + char *s = get_string_resource (dpy, "file", "File"); + if (strlen(s) > 0) + m6502_start_eval_file(st->machine,s, plot6502, st); else +#endif start_rand_bin_prog(st->machine,st); + } analogtv_lcp_to_ntsc(ANALOGTV_BLACK_LEVEL, 0.0, 0.0, st->field_ntsc); @@ -214,7 +223,7 @@ m6502_draw (Display *dpy, Window window, void *closure) unsigned int x = 0, y = 0; double te; - next_eval(st->machine,500); + m6502_next_eval(st->machine,500); for (x = 0; x < 32; x++) for (y = 0; y < 32; y++) diff --git a/hacks/memscroller.c b/hacks/memscroller.c index d82d16f5..afaed3c9 100644 --- a/hacks/memscroller.c +++ b/hacks/memscroller.c @@ -21,6 +21,10 @@ #undef countof #define countof(x) (sizeof(x)/sizeof(*(x))) +#ifndef USE_IPHONE +# define READ_FILES +#endif + typedef struct { int which; XRectangle rect; @@ -163,7 +167,9 @@ memscroller_init (Display *dpy, Window window) s = 0; +# ifdef READ_FILES st->filename = get_string_resource (dpy, "filename", "Filename"); +# endif if (!st->filename || !*st->filename || @@ -171,12 +177,16 @@ memscroller_init (Display *dpy, Window window) !strcasecmp (st->filename, "(mem)") || !strcasecmp (st->filename, "(memory)")) st->seed_mode = SEED_RAM; +# ifdef READ_FILES else if (st->filename && (!strcasecmp (st->filename, "(rand)") || !strcasecmp (st->filename, "(random)"))) st->seed_mode = SEED_RANDOM; else st->seed_mode = SEED_FILE; +# else + st->seed_mode = SEED_RANDOM; +# endif st->nscrollers = 3; st->scrollers = (scroller *) calloc (st->nscrollers, sizeof(scroller)); @@ -270,6 +280,7 @@ reshape_memscroller (state *st) +# ifdef READ_FILES static void open_file (state *st) { @@ -288,6 +299,7 @@ open_file (state *st) exit (1); } } +#endif static unsigned int @@ -416,6 +428,7 @@ more_bits (state *st, scroller *sc) pv = PACK(); break; +# ifdef READ_FILES case SEED_FILE: { int i; @@ -460,6 +473,7 @@ more_bits (state *st, scroller *sc) pv = PACK(); } break; +# endif /* READ_FILES */ default: abort(); diff --git a/hacks/moire2.c b/hacks/moire2.c index 72a2f4f2..441a3713 100644 --- a/hacks/moire2.c +++ b/hacks/moire2.c @@ -306,6 +306,8 @@ static void moire2_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->reset = 1; } static Bool diff --git a/hacks/mountain.c b/hacks/mountain.c index 1c4e64c0..82d5fce7 100644 --- a/hacks/mountain.c +++ b/hacks/mountain.c @@ -35,7 +35,6 @@ static const char sccsid[] = "@(#)mountain.c 5.00 2000/11/01 xlockmore"; "*fpsSolid: true \n" \ # define SMOOTH_COLORS -# define reshape_mountain 0 # define mountain_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* STANDALONE */ @@ -255,6 +254,14 @@ draw_mountain (ModeInfo * mi) } } +ENTRYPOINT void +reshape_mountain(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_mountain (mi); +} + + ENTRYPOINT void release_mountain (ModeInfo * mi) { diff --git a/hacks/munge-ad.pl b/hacks/munge-ad.pl index 4f44a8eb..77232143 100755 --- a/hacks/munge-ad.pl +++ b/hacks/munge-ad.pl @@ -1,5 +1,5 @@ #!/usr/bin/perl -w -# Copyright © 2008-2011 Jamie Zawinski +# Copyright © 2008-2012 Jamie Zawinski # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that @@ -18,7 +18,7 @@ use diagnostics; use strict; my $progname = $0; $progname =~ s@.*/@@g; -my $version = q{ $Revision: 1.7 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/; +my $version = q{ $Revision: 1.8 $ }; $version =~ s/^[^\d]+([\d.]+).*/$1/; my $verbose = 0; @@ -111,7 +111,7 @@ sub munge_ad($) { open (IN, "<$xml") || error ("$xml: $!"); while () { $b .= $_; } close IN; - my ($name) = ($b =~ m@]*\b_label=\"([^<>\"]+)\">@s); + my ($name) = ($b =~ m@]*\b_label=\"([^<>\"]+)\"@s); error ("$xml: no name") unless $name; my $name2 = lc($name); diff --git a/hacks/noseguy.c b/hacks/noseguy.c index 108db35c..32b09e25 100644 --- a/hacks/noseguy.c +++ b/hacks/noseguy.c @@ -600,6 +600,9 @@ static void noseguy_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->Width = w + 2; + st->Height = h + 2; } static Bool diff --git a/hacks/pacman.c b/hacks/pacman.c index 226a3cf3..23fb3a1d 100644 --- a/hacks/pacman.c +++ b/hacks/pacman.c @@ -56,7 +56,6 @@ static const char sccsid[] = "@(#)pacman.c 5.00 2000/11/01 xlockmore"; # define UNIFORM_COLORS # define BRIGHT_COLORS -# define reshape_pacman 0 # define pacman_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ # include @@ -131,7 +130,7 @@ static XrmOptionDescRec opts[] = { }; static argtype vars[] = { - {&trackmouse, "trackmouse", "TrackMouse", DEF_TRACKMOUSE, t_Bool} + {&pacman_trackmouse, "trackmouse", "TrackMouse", DEF_TRACKMOUSE, t_Bool} }; static OptionStruct desc[] = { @@ -158,8 +157,8 @@ ModStruct pacman_description = { #endif -Bool trackmouse; -pacmangamestruct *pacmangames = (pacmangamestruct *) NULL; +Bool pacman_trackmouse; +pacmangamestruct *pacman_games = (pacmangamestruct *) NULL; static void repopulate (ModeInfo * mi); static void drawlevel (ModeInfo * mi); @@ -201,7 +200,7 @@ free_pacman (Display * display, pacmangamestruct * pp) static void reset_level (ModeInfo * mi, int n, int pac_init) { - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; unsigned int ghost; MI_CLEARWINDOW (mi); @@ -251,9 +250,9 @@ reset_level (ModeInfo * mi, int n, int pac_init) pp->ghosts[ghost].delta.y = 0; pp->ghosts[ghost].flash_scared = False; pp->ghosts[ghost].wait_pos = False; - ghost_update (pp, &(pp->ghosts[ghost])); + pacman_ghost_update (pp, &(pp->ghosts[ghost])); } - pac_update (mi, pp, &(pp->pacman)); + pacman_update (mi, pp, &(pp->pacman)); } static int @@ -311,9 +310,9 @@ check_death (ModeInfo * mi, pacmangamestruct * pp) static void repopulate (ModeInfo * mi) { - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; pp->pacman.deaths = 0; - reset_level (mi, createnewlevel (pp), True); + reset_level (mi, pacman_createnewlevel (pp), True); check_death (mi, pp); } @@ -322,7 +321,7 @@ static void setwallcolor (ModeInfo * mi) { Display *display = MI_DISPLAY (mi); - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; if (MI_NPIXELS (mi) > 2) XSetForeground (display, pp->stippledGC, MI_PIXEL (mi, BLUE)); @@ -335,7 +334,7 @@ static void setdotcolor (ModeInfo * mi) { Display *display = MI_DISPLAY (mi); - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; XSetForeground (display, pp->stippledGC, MI_WHITE_PIXEL (mi)); } @@ -344,7 +343,7 @@ static void cleardotcolor (ModeInfo * mi) { Display *display = MI_DISPLAY (mi); - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; XSetForeground (display, pp->stippledGC, MI_BLACK_PIXEL (mi)); } @@ -355,7 +354,7 @@ draw_position (ModeInfo * mi, int x, int y, int color) { Display *display = MI_DISPLAY (mi); Window window = MI_WINDOW (mi); - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; XFontStruct *font = NULL; char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*"; char *s = NULL; @@ -378,7 +377,7 @@ draw_number (ModeInfo * mi, int x, int y, int num, int color) { Display *display = MI_DISPLAY (mi); Window window = MI_WINDOW (mi); - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; XFontStruct *font = NULL; char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*"; char *s = NULL; @@ -406,7 +405,7 @@ draw_grid (ModeInfo * mi) { Display *display = MI_DISPLAY (mi); Window window = MI_WINDOW (mi); - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; int h = MI_HEIGHT (mi); int w = MI_WIDTH (mi); int y = 0; @@ -430,7 +429,7 @@ draw_string (ModeInfo * mi, int x, int y, char *s, int color) { Display *display = MI_DISPLAY (mi); Window window = MI_WINDOW (mi); - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; XFontStruct *font = NULL; char *f_name = "-*-utopia-*-r-*-*-*-600-*-*-p-*-*-*"; @@ -482,7 +481,7 @@ print_ghost_stats (ModeInfo *mi, ghoststruct *g , int ghost_num) static void print_pac_stats ( ModeInfo *mi, pacmanstruct *pac ) { - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; char s[1024]; sprintf (s, "Pacman, Deaths: %d", pac->deaths ); switch ( pac->aistate ){ @@ -516,7 +515,7 @@ print_pac_stats ( ModeInfo *mi, pacmanstruct *pac ) static void dot_rc_to_pixel (ModeInfo * mi, int *x, int *y) { - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; *x = (pp->xs * *x) + (pp->xs / 2) - (pp->xs > 32 ? (pp->xs / 16) : 1) + pp->xb; *y = (pp->ys * *y) + @@ -529,7 +528,7 @@ dot_rc_to_pixel (ModeInfo * mi, int *x, int *y) static void dot_width_height (ModeInfo *mi, int *w, int *h) { - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; if (pp->xs > 32){ *w = *h = (pp->xs / 32 ); }else { @@ -713,7 +712,7 @@ drawlevelblock (ModeInfo * mi, pacmangamestruct * pp, static void drawlevel (ModeInfo * mi) { - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; unsigned int x, y; for (y = 0; y < LEVHEIGHT; y++) @@ -745,7 +744,7 @@ draw_pacman_sprite (ModeInfo * mi) { Display *display = MI_DISPLAY (mi); Window window = MI_WINDOW (mi); - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; unsigned int dir = 0; int old_mask_dir = 0; int old_mask_mouth = 0; @@ -851,7 +850,7 @@ draw_ghost_sprite (ModeInfo * mi, const unsigned ghost) { Display *display = MI_DISPLAY (mi); Window window = MI_WINDOW (mi); - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; #define MAX_WAG_COUNT 50 unsigned int dir = 0; unsigned int fs = 0; /*flash scared*/ @@ -954,7 +953,7 @@ draw_pacman_sprite (ModeInfo * mi) { Display *display = MI_DISPLAY (mi); Window window = MI_WINDOW (mi); - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; unsigned int dir; pp->pacman.cf = pp->pacman.col * pp->xs + pp->pacman.delta.x * @@ -1003,7 +1002,7 @@ draw_ghost_sprite (ModeInfo * mi, const unsigned ghost) { Display *display = MI_DISPLAY (mi); Window window = MI_WINDOW (mi); - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; pp->ghosts[ghost].cf = pp->ghosts[ghost].col * pp->xs + pp->ghosts[ghost].delta.x * @@ -1059,7 +1058,7 @@ ghost_over (ModeInfo * mi, int x, int y) { int ghost = 0; int ret = False; - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; dot_rc_to_pixel (mi, &x, &y); for (ghost = 0; ghost < pp->nghosts; ghost++) { if ((pp->ghosts[ghost].cf <= x @@ -1078,11 +1077,11 @@ static void flash_bonus_dots (ModeInfo * mi) { #define MAX_FLASH_COUNT 25 - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; int i, x, y; for (i = 0; i < NUM_BONUS_DOTS; i++) { - if (!bonus_dot_eaten (pp, i)) { - bonus_dot_pos (pp, i, &x, &y); + if (!pacman_bonus_dot_eaten (pp, i)) { + pacman_bonus_dot_pos (pp, i, &x, &y); if (ghost_over (mi, x, y)) continue; if (pp->bd_on) @@ -1105,10 +1104,10 @@ ate_bonus_dot (ModeInfo * mi) */ unsigned int ret = 0; int idx = 0; - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; - if (is_bonus_dot (pp, pp->pacman.col, pp->pacman.row, &idx)) { - ret = !bonus_dot_eaten (pp, idx); - eat_bonus_dot (pp, idx); + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; + if (pacman_is_bonus_dot (pp, pp->pacman.col, pp->pacman.row, &idx)) { + ret = !pacman_bonus_dot_eaten (pp, idx); + pacman_eat_bonus_dot (pp, idx); } return ret; } @@ -1117,7 +1116,7 @@ static void ghost_scared (ModeInfo * mi) { unsigned int ghost; - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; for (ghost = 0; ghost < pp->nghosts; ghost++) { if (pp->ghosts[ghost].aistate == goingin || pp->ghosts[ghost].aistate == goingout || @@ -1133,7 +1132,7 @@ static void ghost_not_scared (ModeInfo * mi) { unsigned int ghost; - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; for (ghost = 0; ghost < pp->nghosts; ghost++){ if (pp->ghosts[ghost].aistate == goingin || pp->ghosts[ghost].aistate == goingout || @@ -1149,7 +1148,7 @@ static void ghost_flash_scared (ModeInfo * mi) { unsigned int ghost; - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; for (ghost = 0; ghost < pp->nghosts; ghost++) pp->ghosts[ghost].flash_scared = !pp->ghosts[ghost].flash_scared; } @@ -1162,7 +1161,7 @@ pacman_tick (ModeInfo * mi) #define START_FLASH 200 #define FLASH_COUNT 25 - pacmangamestruct *pp = &pacmangames[MI_SCREEN (mi)]; + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; unsigned int ghost; #if 0 draw_grid (mi); @@ -1491,13 +1490,13 @@ init_pacman (ModeInfo * mi) int dir, mouth; #endif - if (pacmangames == NULL) { - if ((pacmangames = (pacmangamestruct *) + if (pacman_games == NULL) { + if ((pacman_games = (pacmangamestruct *) calloc ((size_t) MI_NUM_SCREENS (mi), sizeof (pacmangamestruct))) == NULL) return; } - pp = &pacmangames[MI_SCREEN (mi)]; + pp = &pacman_games[MI_SCREEN (mi)]; pp->width = (unsigned short) MI_WIDTH (mi); pp->height = (unsigned short) MI_HEIGHT (mi); @@ -1710,9 +1709,9 @@ draw_pacman (ModeInfo * mi) unsigned int g; pacmangamestruct *pp; - if (pacmangames == NULL) + if (pacman_games == NULL) return; - pp = &pacmangames[MI_SCREEN (mi)]; + pp = &pacman_games[MI_SCREEN (mi)]; if (pp->ghosts == NULL) return; @@ -1722,7 +1721,7 @@ draw_pacman (ModeInfo * mi) pp->pacman.delta.y += pp->pacman.err.y != 0 ? pp->incy : 0; if (pp->pacman.delta.x >= pp->xs && pp->pacman.delta.y >= pp->ys) { - pac_update (mi, pp, &(pp->pacman)); + pacman_update (mi, pp, &(pp->pacman)); check_death (mi, pp); pp->pacman.delta.x = pp->incx; pp->pacman.delta.y = pp->incy; @@ -1741,7 +1740,7 @@ draw_pacman (ModeInfo * mi) if (pp->ghosts[g].delta.x >= pp->xs && pp->ghosts[g].delta.y >= pp->ys) { - ghost_update (pp, &(pp->ghosts[g])); + pacman_ghost_update (pp, &(pp->ghosts[g])); pp->ghosts[g].delta.x = pp->incx; pp->ghosts[g].delta.y = pp->incy; } @@ -1758,13 +1757,13 @@ draw_pacman (ModeInfo * mi) ENTRYPOINT void release_pacman (ModeInfo * mi) { - if (pacmangames != NULL) { + if (pacman_games != NULL) { int screen; for (screen = 0; screen < MI_NUM_SCREENS (mi); screen++) - free_pacman (MI_DISPLAY (mi), &pacmangames[screen]); - free (pacmangames); - pacmangames = (pacmangamestruct *) NULL; + free_pacman (MI_DISPLAY (mi), &pacman_games[screen]); + free (pacman_games); + pacman_games = (pacmangamestruct *) NULL; } } @@ -1776,6 +1775,17 @@ refresh_pacman (ModeInfo * mi) pacman_tick (mi); } +ENTRYPOINT void +reshape_pacman(ModeInfo * mi, int width, int height) +{ + pacmangamestruct *pp = &pacman_games[MI_SCREEN (mi)]; + pp->width = width; + pp->height = height; + MI_CLEARWINDOW (mi); + /* repopulate (mi); */ + drawlevel (mi); +} + #ifndef STANDALONE /* Callback to change level. */ ENTRYPOINT void diff --git a/hacks/pacman.h b/hacks/pacman.h index fbe1eae0..652ee314 100644 --- a/hacks/pacman.h +++ b/hacks/pacman.h @@ -223,8 +223,8 @@ typedef struct } pacmangamestruct; -extern pacmangamestruct *pacmangames; -extern Bool trackmouse; +extern pacmangamestruct *pacman_games; +extern Bool pacman_trackmouse; typedef char lev_t[LEVHEIGHT][LEVWIDTH + 1]; diff --git a/hacks/pacman_ai.c b/hacks/pacman_ai.c index 070f9aa5..b85bd96e 100644 --- a/hacks/pacman_ai.c +++ b/hacks/pacman_ai.c @@ -67,9 +67,9 @@ ghost_get_posdirs (pacmangamestruct * pp, int *posdirs, ghoststruct * g) /* check if possible direction */ can_go_in = (g->aistate == goingout || g->aistate == goingin); if ((posdirs[i] = - check_pos (pp, g->row + dirvecs[i].dy, - g->col + dirvecs[i].dx, - can_go_in)) == True) { + pacman_check_pos (pp, g->row + dirvecs[i].dy, + g->col + dirvecs[i].dx, + can_go_in)) == True) { nrdirs++; } } @@ -245,7 +245,7 @@ clear_dir ( ghoststruct *g ){ static int found_jail ( int col, int row ){ int cx, cy; - get_jail_opening ( &cx, &cy ); + pacman_get_jail_opening ( &cx, &cy ); cy += 1; if (row == cy && col == cx ) return 1; @@ -261,7 +261,7 @@ move_ghost ( pacmangamestruct * pp, int idx = (int)ps; int tr = row + dirvecs[idx].dx; int tc = col + dirvecs[idx].dy; - if ( check_pos ( pp, tr, tc, True )){ + if ( pacman_check_pos ( pp, tr, tc, True )){ *new_row = tr; *new_col = tc; return True; @@ -332,7 +332,7 @@ find_home ( pacmangamestruct *pp, ghoststruct *g ){ c = tmp_ghost->col; if ( ! recur_back_track ( pp, tmp_ghost, r, c ) ){ fprintf(stderr, "Could not find way home.#@$?\n"); - get_jail_opening ( &cx, &cy); + pacman_get_jail_opening ( &cx, &cy); fprintf(stderr, "Jail was at (%d%d)\n", cx,cy); } for ( i = 0; i < GHOST_TRACE; i++ ){ @@ -388,7 +388,7 @@ pac_dot_vec (pacmangamestruct * pp, pacmanstruct * p, long *vx, long *vy) for (y = by; y < ey; y++) for (x = bx; x < ex; x++) - if (check_dot (pp, x, y) == 1) { + if (pacman_check_dot (pp, x, y) == 1) { dx = (long) x - (long) (p->col); dy = (long) y - (long) (p->row); dist = dx * dx + dy * dy; @@ -451,8 +451,8 @@ pac_get_posdirs (pacmangamestruct * pp, pacmanstruct * p, int *posdirs) posdirs[i] = 0; } else if ((posdirs[i] = - check_pos (pp, p->row + dirvecs[i].dy, - p->col + dirvecs[i].dx, 0)) == 1) + pacman_check_pos (pp, p->row + dirvecs[i].dy, + p->col + dirvecs[i].dx, 0)) == 1) nrdirs++; } p->state_change = 0; @@ -462,7 +462,7 @@ pac_get_posdirs (pacmangamestruct * pp, pacmanstruct * p, int *posdirs) /* Clears the trace of vectors. */ void -pac_clear_trace (pacmanstruct * p) +pacman_clear_trace (pacmanstruct * p) { int i; @@ -517,14 +517,14 @@ pac_eating (pacmangamestruct * pp, pacmanstruct * p) 4 * 4 && p->aistate == ps_eating) { p->aistate = ps_hiding; p->state_change = 1; - pac_clear_trace (p); + pacman_clear_trace (p); } if (prox > 6 * 6 && p->aistate == ps_hiding) { p->aistate = ps_eating; if (p->justate == 0) p->state_change = 1; - pac_clear_trace (p); + pacman_clear_trace (p); } if (prox < 3 * 3) @@ -567,7 +567,7 @@ pac_eating (pacmangamestruct * pp, pacmanstruct * p) if (p->roundscore >= 12) { p->roundscore = 0; p->aistate = ps_random; - pac_clear_trace (p); + pacman_clear_trace (p); } } else @@ -580,8 +580,8 @@ pac_eating (pacmangamestruct * pp, pacmanstruct * p) if (posdirs[i] == 0) continue; score = dirvecs[i].dx * vx + dirvecs[i].dy * vy; - if (check_dot (pp, p->col + dirvecs[i].dx, - p->row + dirvecs[i].dy) == 1) { + if (pacman_check_dot (pp, p->col + dirvecs[i].dx, + p->row + dirvecs[i].dy) == 1) { if (dotfound == 0) { highest = score; dir = i; @@ -647,7 +647,7 @@ pac_chasing (pacmangamestruct * pp, pacmanstruct * p) if (p->roundscore >= 12) { p->roundscore = 0; p->aistate = ps_random; - pac_clear_trace (p); + pacman_clear_trace (p); } } else @@ -674,7 +674,7 @@ pac_random (pacmangamestruct * pp, pacmanstruct * p) if (NRAND (20) == 0) { p->aistate = ps_eating; p->state_change = 1; - pac_clear_trace (p); + pacman_clear_trace (p); } nrdirs = pac_get_posdirs (pp, p, posdirs); @@ -683,12 +683,12 @@ pac_random (pacmangamestruct * pp, pacmanstruct * p) if (posdirs[i] == 0) continue; lastdir = i; - if (check_dot (pp, p->col + dirvecs[i].dx, - p->row + dirvecs[i].dy) == 1) { + if (pacman_check_dot (pp, p->col + dirvecs[i].dx, + p->row + dirvecs[i].dy) == 1) { dir = i; p->aistate = ps_eating; p->state_change = 1; - pac_clear_trace (p); + pacman_clear_trace (p); break; } else if (NRAND (nrdirs) == 0) @@ -769,7 +769,7 @@ pac_trackmouse (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p) /* Calls correct state function, and changes between states. */ void -ghost_update (pacmangamestruct * pp, ghoststruct * g) +pacman_ghost_update (pacmangamestruct * pp, ghoststruct * g) { if (!(g->nextrow == NOWHERE && g->nextcol == NOWHERE)) { @@ -833,7 +833,7 @@ ghost_update (pacmangamestruct * pp, ghoststruct * g) /* Calls correct pacman state function. */ void -pac_update (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p) +pacman_update (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p) { if (!(p->nextrow == NOWHERE && p->nextcol == NOWHERE)) { p->row = p->nextrow; @@ -843,15 +843,15 @@ pac_update (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p) if (pp->level[p->row * LEVWIDTH + p->col] == '.' || pp->level[p->row * LEVWIDTH + p->col] == 'o') { pp->level[p->row * LEVWIDTH + p->col] = ' '; - if (!trackmouse) + if (!pacman_trackmouse) p->justate = 1; pp->dotsleft--; } - else if (!trackmouse) { + else if (!pacman_trackmouse) { p->justate = 0; } - if (!(trackmouse && pac_trackmouse (mi, pp, p))) { + if (!(pacman_trackmouse && pac_trackmouse (mi, pp, p))) { /* update pacman */ switch (p->aistate) { case ps_eating: diff --git a/hacks/pacman_ai.h b/hacks/pacman_ai.h index 2958210c..2488600a 100644 --- a/hacks/pacman_ai.h +++ b/hacks/pacman_ai.h @@ -24,9 +24,9 @@ #ifndef __PACMAN_AI_H__ #define __PACMAN_AI_H__ -extern void ghost_update (pacmangamestruct * pp, ghoststruct * g); -extern void pac_clear_trace (pacmanstruct * p); -extern void pac_update (ModeInfo * mi, pacmangamestruct * pp, +extern void pacman_ghost_update (pacmangamestruct * pp, ghoststruct * g); +extern void pacman_clear_trace (pacmanstruct * p); +extern void pacman_update (ModeInfo * mi, pacmangamestruct * pp, pacmanstruct * p); #endif /* __PACMAN_AI_H__ */ diff --git a/hacks/pacman_level.c b/hacks/pacman_level.c index 12e148f4..d617942c 100644 --- a/hacks/pacman_level.c +++ b/hacks/pacman_level.c @@ -223,7 +223,7 @@ createjail (lev_t * level, const unsigned width, const unsigned height) } void -get_jail_opening ( int *x, int *y) +pacman_get_jail_opening ( int *x, int *y) { int xstart = LEVWIDTH / 2 - JAILWIDTH / 2; int ystart = LEVHEIGHT / 2 - JAILHEIGHT / 2; @@ -535,7 +535,7 @@ init_bonus_dots (pacmangamestruct *pp, lev_t * level) } int -is_bonus_dot (pacmangamestruct *pp, int x, int y, int *idx) +pacman_is_bonus_dot (pacmangamestruct *pp, int x, int y, int *idx) { int ret = False; int i; @@ -557,21 +557,21 @@ check_bonus_idx (int idx) } int -bonus_dot_eaten (pacmangamestruct *pp, int idx) +pacman_bonus_dot_eaten (pacmangamestruct *pp, int idx) { check_bonus_idx (idx); return pp->bonus_dots[idx].eaten; } void -eat_bonus_dot (pacmangamestruct *pp, int idx) +pacman_eat_bonus_dot (pacmangamestruct *pp, int idx) { check_bonus_idx (idx); pp->bonus_dots[idx].eaten = True; } void -bonus_dot_pos (pacmangamestruct *pp, int idx, int *x, int *y) +pacman_bonus_dot_pos (pacmangamestruct *pp, int idx, int *x, int *y) { check_bonus_idx (idx); *x = pp->bonus_dots[idx].x; @@ -595,7 +595,7 @@ frmtlevel (pacmangamestruct *pp, lev_t * level) for (x = 0; x < LEVWIDTH; x++) { if (checkset (level, x, y) == 0) { - if (is_bonus_dot (pp, x, y, &idx)) { + if (pacman_is_bonus_dot (pp, x, y, &idx)) { frmtlev[y][x] = BLOCK_DOT_BONUS; } else { @@ -709,7 +709,7 @@ countdots (pacmangamestruct *pp) /* Creates a new level, and places that in the pacmangamestruct. */ int -createnewlevel (pacmangamestruct *pp) +pacman_createnewlevel (pacmangamestruct *pp) { lev_t *level; unsigned dirvec[1] = { GO_UP }; @@ -749,7 +749,7 @@ createnewlevel (pacmangamestruct *pp) /* Checks if a position is allowable for ghosts/pacs to enter. */ int -check_pos (pacmangamestruct * pp, int y, int x, int ghostpass) +pacman_check_pos (pacmangamestruct * pp, int y, int x, int ghostpass) { if ((pp->level[y * LEVWIDTH + x] == BLOCK_DOT_2) || (pp->level[y * LEVWIDTH + x] == BLOCK_EMPTY) || @@ -762,7 +762,7 @@ check_pos (pacmangamestruct * pp, int y, int x, int ghostpass) /* Checks if there is a dot on the specified position in the level. */ int -check_dot (pacmangamestruct * pp, unsigned int x, unsigned int y) +pacman_check_dot (pacmangamestruct * pp, unsigned int x, unsigned int y) { if (x >= LEVWIDTH || y >= LEVHEIGHT) return 0; diff --git a/hacks/pacman_level.h b/hacks/pacman_level.h index 697a6b0c..0eccc338 100644 --- a/hacks/pacman_level.h +++ b/hacks/pacman_level.h @@ -21,12 +21,13 @@ /* int x, y; */ /* } XY; */ -extern int createnewlevel (pacmangamestruct *); -extern int check_pos (pacmangamestruct *, int y, int x, int ghostpass); -extern int check_dot (pacmangamestruct *, unsigned int x, unsigned int y); -extern int is_bonus_dot (pacmangamestruct *, int x, int y, int *idx); -extern int bonus_dot_eaten (pacmangamestruct *, int idx); -extern void eat_bonus_dot (pacmangamestruct *, int idx); -extern void bonus_dot_pos (pacmangamestruct *, int idx, int *x, int *y); -extern void get_jail_opening (int *x, int *y); +extern int pacman_createnewlevel (pacmangamestruct *); +extern int pacman_check_pos (pacmangamestruct *, int y, int x, int ghostpass); +extern int pacman_check_dot (pacmangamestruct *, + unsigned int x, unsigned int y); +extern int pacman_is_bonus_dot (pacmangamestruct *, int x, int y, int *idx); +extern int pacman_bonus_dot_eaten (pacmangamestruct *, int idx); +extern void pacman_eat_bonus_dot (pacmangamestruct *, int idx); +extern void pacman_bonus_dot_pos (pacmangamestruct *, int idx, int *x, int *y); +extern void pacman_get_jail_opening (int *x, int *y); #endif /* __PACMAN_LEVEL_H__ */ diff --git a/hacks/penetrate.c b/hacks/penetrate.c index 721ee016..0707422b 100644 --- a/hacks/penetrate.c +++ b/hacks/penetrate.c @@ -949,6 +949,7 @@ static void penetrate_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + XClearWindow (dpy, window); } static Bool diff --git a/hacks/penrose.c b/hacks/penrose.c index eedf0fdf..6b07d8ca 100644 --- a/hacks/penrose.c +++ b/hacks/penrose.c @@ -89,7 +89,6 @@ If one of these are hit penrose will reinitialize. "*fpsSolid: true \n" \ # define refresh_penrose 0 -# define reshape_penrose 0 # define penrose_handle_event 0 # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ @@ -1329,6 +1328,14 @@ draw_penrose(ModeInfo * mi) } +ENTRYPOINT void +reshape_penrose(ModeInfo * mi, int width, int height) +{ + tiling_c *tp = &tilings[MI_SCREEN(mi)]; + tp->width = width; + tp->height = height; +} + /* Total clean-up. */ ENTRYPOINT void release_penrose(ModeInfo * mi) diff --git a/hacks/piecewise.c b/hacks/piecewise.c index 336dd512..af01a99d 100644 --- a/hacks/piecewise.c +++ b/hacks/piecewise.c @@ -940,6 +940,8 @@ static void piecewise_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + XGetWindowAttributes(st->dpy, st->window, &st->xgwa); } static Bool diff --git a/hacks/polyominoes.c b/hacks/polyominoes.c index 69c7b259..c7b84a74 100644 --- a/hacks/polyominoes.c +++ b/hacks/polyominoes.c @@ -39,7 +39,6 @@ static const char sccsid[] = "@(#)polyominoes.c 5.01 2000/12/18 xlockmore"; "*ncolors: 64 \n" \ "*fpsSolid: true \n" \ -# define reshape_polyominoes 0 # define polyominoes_handle_event 0 # define SMOOTH_COLORS # include "xlockmore.h" /* in xscreensaver distribution */ @@ -2351,6 +2350,13 @@ draw_polyominoes (ModeInfo * mi) sp->wait = 0; } +ENTRYPOINT void +reshape_polyominoes(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_polyominoes (mi); +} + ENTRYPOINT void release_polyominoes(ModeInfo * mi) { diff --git a/hacks/popsquares.c b/hacks/popsquares.c index 0bea52ef..15cb61b4 100644 --- a/hacks/popsquares.c +++ b/hacks/popsquares.c @@ -187,6 +187,36 @@ static void popsquares_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + int x, y; + XGetWindowAttributes (st->dpy, st->window, &st->xgwa); + st->sw = st->xgwa.width / st->subdivision; + st->sh = st->xgwa.height / st->subdivision; + st->gw = st->sw ? st->xgwa.width / st->sw : 0; + st->gh = st->sh ? st->xgwa.height / st->sh : 0; + st->nsquares = st->gw * st->gh; + free (st->squares); + st->squares = (square *) calloc (st->nsquares, sizeof(square)); + + for (y = 0; y < st->gh; y++) + for (x = 0; x < st->gw; x++) + { + square *s = (square *) &st->squares[st->gw * y + x]; + s->w = st->sw; + s->h = st->sh; + s->x = x * st->sw; + s->y = y * st->sh; + } + + randomize_square_colors(st->squares, st->nsquares, st->ncolors); + + if (st->dbuf) { + XFreePixmap (dpy, st->ba); + XFreePixmap (dpy, st->bb); + st->ba = XCreatePixmap (st->dpy, st->window, st->xgwa.width, st->xgwa.height, st->xgwa.depth); + st->bb = XCreatePixmap (st->dpy, st->window, st->xgwa.width, st->xgwa.height, st->xgwa.depth); + st->b = st->ba; + } } static Bool diff --git a/hacks/sierpinski.c b/hacks/sierpinski.c index dab702f2..5e7eedae 100644 --- a/hacks/sierpinski.c +++ b/hacks/sierpinski.c @@ -41,7 +41,6 @@ static const char sccsid[] = "@(#)sierpinski.c 5.00 2000/11/01 xlockmore"; "*fpsSolid: true \n" \ # define BRIGHT_COLORS -# define reshape_sierpinski 0 # define sierpinski_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* STANDALONE */ @@ -200,6 +199,13 @@ draw_sierpinski(ModeInfo * mi) startover(mi); } +ENTRYPOINT void +reshape_sierpinski(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_sierpinski (mi); +} + ENTRYPOINT void release_sierpinski(ModeInfo * mi) { diff --git a/hacks/slidescreen.c b/hacks/slidescreen.c index a44e1153..69aa10fc 100644 --- a/hacks/slidescreen.c +++ b/hacks/slidescreen.c @@ -425,6 +425,16 @@ static void slidescreen_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->max_width = w; + st->max_height = h; + if (! st->img_loader) { + XWindowAttributes xgwa; + XGetWindowAttributes (st->dpy, st->window, &xgwa); + st->img_loader = load_image_async_simple (0, xgwa.screen, st->window, + st->window, 0, 0); + st->start_time = time ((time_t) 0); + } } static Bool diff --git a/hacks/speedmine.c b/hacks/speedmine.c index 96a880e5..5c67082d 100644 --- a/hacks/speedmine.c +++ b/hacks/speedmine.c @@ -1538,6 +1538,16 @@ static void speedmine_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->width = w; + st->height = h; + if (st->dbuf != st->window) { + XWindowAttributes xgwa; + XGetWindowAttributes (st->dpy, st->window, &xgwa); + XFreePixmap (dpy, st->dbuf); + st->dbuf = XCreatePixmap (st->dpy, st->window, + st->width, st->height, xgwa.depth); + } } static Bool diff --git a/hacks/squiral.c b/hacks/squiral.c index 7dff6d8a..2a0b0fd2 100644 --- a/hacks/squiral.c +++ b/hacks/squiral.c @@ -107,6 +107,28 @@ do_worm(struct state *st, struct worm *w) w->v = w->v % st->height; } +static void +squiral_init_1 (struct state *st) +{ + int i; + if (st->worms) free (st->worms); + if (st->fill) free (st->fill); + + st->worms=calloc(st->count, sizeof(struct worm)); + st->fill=calloc(st->width*st->height, sizeof(int)); + + st->dirh[0]=0; st->dirh[1]=1; st->dirh[2]=0; st->dirh[3]=st->width-1; + st->dirv[0]=st->height-1; st->dirv[1]=0; st->dirv[2]=1; st->dirv[3]=0; + for(i=0;icount;i++) { + st->worms[i].h=R(st->width); + st->worms[i].v=R(st->height); + st->worms[i].s=R(4)+4*PROB(st->handedness); + st->worms[i].c=R(st->ncolors); + if(st->cycle) { st->worms[i].cc=R(3)+st->ncolors; } + else st->worms[i].cc=0; + } +} + static void * squiral_init (Display *dpy, Window window) { @@ -115,7 +137,6 @@ squiral_init (Display *dpy, Window window) Colormap cmap; XWindowAttributes xgwa; Bool writeable = False; - int i; st->dpy = dpy; st->window = window; @@ -167,19 +188,7 @@ squiral_init (Display *dpy, Window window) if(st->worms) free(st->worms); if(st->fill) free(st->fill); - st->worms=calloc(st->count, sizeof(struct worm)); - st->fill=calloc(st->width*st->height, sizeof(int)); - - st->dirh[0]=0; st->dirh[1]=1; st->dirh[2]=0; st->dirh[3]=st->width-1; - st->dirv[0]=st->height-1; st->dirv[1]=0; st->dirv[2]=1; st->dirv[3]=0; - for(i=0;icount;i++) { - st->worms[i].h=R(st->width); - st->worms[i].v=R(st->height); - st->worms[i].s=R(4)+4*PROB(st->handedness); - st->worms[i].c=R(st->ncolors); - if(st->cycle) { st->worms[i].cc=R(3)+st->ncolors; } - else st->worms[i].cc=0; - } + squiral_init_1 (st); return st; } @@ -219,6 +228,11 @@ static void squiral_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->width = w; + st->height = h; + squiral_init_1 (st); + XClearWindow (dpy, window); } static Bool diff --git a/hacks/starfish.c b/hacks/starfish.c index 2ba693c0..071dccb6 100644 --- a/hacks/starfish.c +++ b/hacks/starfish.c @@ -493,6 +493,10 @@ static void starfish_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + free_starfish (st->starfish); + st->starfish = 0; + st->starfish = reset_starfish (st); } static Bool diff --git a/hacks/strange.c b/hacks/strange.c index eba88a90..604f471b 100644 --- a/hacks/strange.c +++ b/hacks/strange.c @@ -42,7 +42,6 @@ static const char sccsid[] = "@(#)strange.c 5.00 2000/11/01 xlockmore"; # define SMOOTH_COLORS # define refresh_strange 0 -# define reshape_strange 0 # define strange_handle_event 0 # include "xlockmore.h" /* from the xscreensaver distribution */ #else /* !STANDALONE */ @@ -142,7 +141,7 @@ typedef struct _ATTRACTOR { static ATTRACTOR *Root = (ATTRACTOR *) NULL; #ifdef useAccumulator -XColor* cols; +static XColor* cols; #endif #ifdef POINTS_HISTORY @@ -663,6 +662,13 @@ init_strange(ModeInfo * mi) XSetGraphicsExposures(display, MI_GC(mi), False); } +ENTRYPOINT void +reshape_strange(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_strange (mi); +} + /***************************************************************/ ENTRYPOINT void diff --git a/hacks/swirl.c b/hacks/swirl.c index 5a3d97a2..ba959ac6 100644 --- a/hacks/swirl.c +++ b/hacks/swirl.c @@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)swirl.c 4.00 97/01/01 xlockmore"; # define SMOOTH_COLORS # define WRITABLE_COLORS -# define reshape_swirl 0 # define swirl_handle_event 0 # include "xlockmore.h" /* from the xscreensaver distribution */ # ifdef HAVE_XSHM_EXTENSION @@ -1433,6 +1432,13 @@ draw_swirl(ModeInfo * mi) } } +ENTRYPOINT void +reshape_swirl(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_swirl (mi); +} + /****************************************************************/ ENTRYPOINT void diff --git a/hacks/thornbird.c b/hacks/thornbird.c index e074ab82..e7bbf6dd 100644 --- a/hacks/thornbird.c +++ b/hacks/thornbird.c @@ -38,7 +38,6 @@ static const char sccsid[] = "@(#)thornbird.c 5.00 2000/11/01 xlockmore"; "*fpsSolid: true \n" \ # define BRIGHT_COLORS -# define reshape_thornbird 0 # define thornbird_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* STANDALONE */ @@ -250,6 +249,13 @@ draw_thornbird(ModeInfo * mi) hp->inc++; } +ENTRYPOINT void +reshape_thornbird(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_thornbird (mi); +} + ENTRYPOINT void release_thornbird(ModeInfo * mi) { diff --git a/hacks/triangle.c b/hacks/triangle.c index 48a8b20d..1a93de25 100644 --- a/hacks/triangle.c +++ b/hacks/triangle.c @@ -51,7 +51,6 @@ static const char sccsid[] = "@(#)triangle.c 4.04 97/07/28 xlockmore"; "*fpsSolid: true \n" \ # define SMOOTH_COLORS -# define reshape_triangle 0 # define triangle_handle_event 0 # include "xlockmore.h" /* in xscreensaver distribution */ #else /* STANDALONE */ @@ -345,6 +344,13 @@ draw_triangle (ModeInfo * mi) } } +ENTRYPOINT void +reshape_triangle(ModeInfo * mi, int width, int height) +{ + XClearWindow (MI_DISPLAY (mi), MI_WINDOW(mi)); + init_triangle (mi); +} + ENTRYPOINT void release_triangle(ModeInfo * mi) { diff --git a/hacks/truchet.c b/hacks/truchet.c index b23b081d..f21e5599 100644 --- a/hacks/truchet.c +++ b/hacks/truchet.c @@ -508,6 +508,10 @@ static void truchet_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->width = w; + st->height = h; + XGetWindowAttributes (st->dpy, st->window, &st->xgwa); } static Bool diff --git a/hacks/vermiculate.c b/hacks/vermiculate.c index b96d3dc8..d1ef5719 100644 --- a/hacks/vermiculate.c +++ b/hacks/vermiculate.c @@ -807,6 +807,11 @@ static void vermiculate_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->wid = w; + st->hei = h; + free (st->point); + st->point = (unsigned char *) calloc (1, st->wid * st->hei); } static Bool diff --git a/hacks/wander.c b/hacks/wander.c index 6b8819a9..8fa8995a 100644 --- a/hacks/wander.c +++ b/hacks/wander.c @@ -210,6 +210,11 @@ static void wander_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->width = w / st->size; + st->height = h / st->size; + st->width_1 = st->width - 1; + st->height_1 = st->height - 1; } static Bool diff --git a/hacks/whirlwindwarp.c b/hacks/whirlwindwarp.c index 47939ffe..566c4187 100644 --- a/hacks/whirlwindwarp.c +++ b/hacks/whirlwindwarp.c @@ -463,6 +463,9 @@ static void whirlwindwarp_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->scrwid = w; + st->scrhei = h; } static Bool diff --git a/hacks/xlyap.c b/hacks/xlyap.c index cfc4f5a5..02587f00 100644 --- a/hacks/xlyap.c +++ b/hacks/xlyap.c @@ -1237,7 +1237,6 @@ EndRubberBand(struct state *st, image_data_t *data, XEvent *event) data->p_min += diff * delta; delta = (double)(st->width - bot.x) / (double)st->width; data->p_max -= diff * delta; - fflush(stdout); set_new_params(st, data); } diff --git a/hacks/xrayswarm.c b/hacks/xrayswarm.c index 9b9faef7..f3b81848 100644 --- a/hacks/xrayswarm.c +++ b/hacks/xrayswarm.c @@ -1196,6 +1196,12 @@ static void xrayswarm_reshape (Display *dpy, Window window, void *closure, unsigned int w, unsigned int h) { + struct state *st = (struct state *) closure; + st->xsize = w; + st->ysize = h; + st->xc = st->xsize >> 1; + st->yc = st->ysize >> 1; + st->maxy = st->ysize/(float)st->xsize; } static Bool diff --git a/po/Makefile.in.in b/po/Makefile.in.in index 4b2ebc3c..735634f4 100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -368,7 +368,8 @@ POTFILES: POTFILES.in && chmod a-w $@-t \ && mv $@-t $@ ) -Makefile: stamp-it +# jwz: depending on stamp-it breaks distclean. +Makefile: @if test ! -f $@; then \ rm -f stamp-it; \ $(MAKE) stamp-it; \ diff --git a/po/POTFILES.in b/po/POTFILES.in index 2adfd34e..7743e54c 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,4 +1,4 @@ -# Auto-generated: Sun May 20 16:02:50 PDT 2012 +# Auto-generated: Tue Jul 3 14:23:31 PDT 2012 driver/demo-Gtk-conf.c driver/demo-Gtk-support.c driver/demo-Gtk-widgets.c diff --git a/utils/Makefile.in b/utils/Makefile.in index 95ce08a7..f6cc10b7 100644 --- a/utils/Makefile.in +++ b/utils/Makefile.in @@ -249,6 +249,7 @@ grabclient.o: $(srcdir)/grabscreen.h grabclient.o: $(srcdir)/resources.h grabclient.o: $(srcdir)/utils.h grabclient.o: $(srcdir)/vroot.h +grabclient.o: $(srcdir)/yarandom.h grabscreen.o: $(srcdir)/colors.h grabscreen.o: ../config.h grabscreen.o: $(srcdir)/grabscreen.h diff --git a/utils/grabclient.c b/utils/grabclient.c index a0a19f34..58d506ef 100644 --- a/utils/grabclient.c +++ b/utils/grabclient.c @@ -21,6 +21,7 @@ #include "utils.h" #include "grabscreen.h" #include "resources.h" +#include "yarandom.h" #ifdef HAVE_COCOA # include "jwxyz.h" @@ -511,6 +512,21 @@ load_random_image_1 (Screen *screen, Window window, Drawable drawable, #else /* HAVE_COCOA */ +struct pipe_closure { + FILE *pipe; + XtInputId id; + Screen *screen; + Window xwindow; + Drawable drawable; + char *directory; + void (*callback) (Screen *, Window, Drawable, + const char *name, XRectangle *geom, + void *closure); + void *closure; +}; + +# ifndef USE_IPHONE + /* Gets the name of an image file to load by running xscreensaver-getimage-file at the end of a pipe. This can be very slow! */ @@ -539,20 +555,6 @@ open_image_name_pipe (const char *dir) } -struct pipe_closure { - FILE *pipe; - XtInputId id; - Screen *screen; - Window xwindow; - Drawable drawable; - char *directory; - void (*callback) (Screen *, Window, Drawable, - const char *name, XRectangle *geom, - void *closure); - void *closure; -}; - - static void pipe_cb (XtPointer closure, int *source, XtInputId *id) { @@ -626,6 +628,51 @@ pipe_cb (XtPointer closure, int *source, XtInputId *id) } +# else /* USE_IPHONE */ + +/* Callback for ios_load_random_image(), called after we have loaded an + image from the iOS device's Photo Library. See iosgrabimage.m. + */ +static void +ios_load_random_image_cb (void *uiimage, const char *filename, void *closure) +{ + struct pipe_closure *clo2 = (struct pipe_closure *) closure; + Display *dpy = DisplayOfScreen (clo2->screen); + XRectangle geom; + + if (uiimage) + { + jwxyz_draw_NSImage_or_CGImage (DisplayOfScreen (clo2->screen), + clo2->drawable, + True, uiimage, &geom, + 0); + } + else /* Probably means no images in the gallery. */ + { + XWindowAttributes xgwa; + Window r; + int x, y; + unsigned int w, h, bbw, d; + XGetWindowAttributes (dpy, clo2->xwindow, &xgwa); + XGetGeometry (dpy, clo2->drawable, &r, &x, &y, &w, &h, &bbw, &d); + draw_colorbars (clo2->screen, xgwa.visual, clo2->drawable, xgwa.colormap, + 0, 0, w, h); + geom.x = geom.y = 0; + geom.width = w; + geom.height = h; + filename = 0; + } + + clo2->callback (clo2->screen, clo2->xwindow, clo2->drawable, + filename, &geom, clo2->closure); + clo2->callback = 0; + if (clo2->directory) free (clo2->directory); + free (clo2); +} + +# endif /* USE_IPHONE */ + + static void osx_load_image_file_async (Screen *screen, Window xwindow, Drawable drawable, const char *dir, @@ -635,7 +682,7 @@ osx_load_image_file_async (Screen *screen, Window xwindow, Drawable drawable, void *closure), void *closure) { -#if 0 /* do it synchronously */ +# if 0 /* do it synchronously */ FILE *pipe = open_image_name_pipe (dir); char buf[10240]; @@ -655,22 +702,29 @@ osx_load_image_file_async (Screen *screen, Window xwindow, Drawable drawable, } callback (screen, xwindow, drawable, buf, &geom, closure); -#else /* do it asynchronously */ +# else /* do it asynchronously */ - Display *dpy = DisplayOfScreen (screen); struct pipe_closure *clo2 = (struct pipe_closure *) calloc (1, sizeof(*clo2)); - clo2->directory = strdup (dir); - clo2->pipe = open_image_name_pipe (dir); - clo2->id = XtAppAddInput (XtDisplayToApplicationContext (dpy), - fileno (clo2->pipe), - (XtPointer) (XtInputReadMask | XtInputExceptMask), - pipe_cb, (XtPointer) clo2); + clo2->screen = screen; clo2->xwindow = xwindow; clo2->drawable = drawable; clo2->callback = callback; clo2->closure = closure; -#endif + +# ifndef USE_IPHONE + clo2->directory = strdup (dir); + clo2->pipe = open_image_name_pipe (dir); + clo2->id = XtAppAddInput (XtDisplayToApplicationContext ( + DisplayOfScreen (screen)), + fileno (clo2->pipe), + (XtPointer) (XtInputReadMask | XtInputExceptMask), + pipe_cb, (XtPointer) clo2); +# else /* USE_IPHONE */ + ios_load_random_image (ios_load_random_image_cb, clo2); +# endif /* USE_IPHONE */ + +# endif } @@ -694,14 +748,6 @@ load_random_image_1 (Screen *screen, Window window, Drawable drawable, XRectangle geom_ret_2; char *name_ret_2 = 0; -# ifdef USE_IPHONE - /* Currently, only screen-grabbing is implemented, not loading of - images from the iPhone Photo Library. See osxgrabscreen.m. - */ - deskp = True; - filep = False; -# endif - if (!drawable) abort(); if (callback) { @@ -729,11 +775,13 @@ load_random_image_1 (Screen *screen, Window window, Drawable drawable, geom_ret->height = xgwa.height; } +# ifndef USE_IPHONE if (filep) dir = get_string_resource (dpy, "imageDirectory", "ImageDirectory"); if (!dir || !*dir) filep = False; +# endif /* ! USE_IPHONE */ if (deskp && filep) { deskp = !(random() & 5); /* if both, desktop 1/5th of the time */ diff --git a/utils/grabscreen.h b/utils/grabscreen.h index 97c46a77..65e53412 100644 --- a/utils/grabscreen.h +++ b/utils/grabscreen.h @@ -92,4 +92,11 @@ extern Bool osx_load_image_file (Screen *, Window, Drawable, const char *filename, XRectangle *geom_ret); #endif /* HAVE_COCOA */ +#ifdef USE_IPHONE +extern void ios_load_random_image (void (*callback) (void *uiimage, + const char *filename, + void *closure), + void *closure); +#endif /* USE_IPHONE */ + #endif /* __GRABSCREEN_H__ */ diff --git a/utils/version.h b/utils/version.h index f00788c9..ea951e2a 100644 --- a/utils/version.h +++ b/utils/version.h @@ -1,2 +1,2 @@ static const char screensaver_id[] = - "@(#)xscreensaver 5.17 (22-Jun-2012), by Jamie Zawinski (jwz@jwz.org)"; + "@(#)xscreensaver 5.18 (03-Jul-2012), by Jamie Zawinski (jwz@jwz.org)"; diff --git a/xscreensaver.spec b/xscreensaver.spec index 920a05cd..bf8bb562 100644 --- a/xscreensaver.spec +++ b/xscreensaver.spec @@ -1,5 +1,5 @@ %define name xscreensaver -%define version 5.17 +%define version 5.18 Summary: X screen saver and locker Name: %{name} diff --git a/xscreensaver.xcodeproj/project.pbxproj b/xscreensaver.xcodeproj/project.pbxproj index a167009f..bd824ab8 100644 --- a/xscreensaver.xcodeproj/project.pbxproj +++ b/xscreensaver.xcodeproj/project.pbxproj @@ -346,6 +346,7 @@ AF0FAF2709CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; }; AF0FAF2809CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; }; AF0FAF2909CA712600EE1051 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; }; + AF0FAF3C159BAC7C00BCE2F7 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */; }; AF1A17660D6D6EE3008AF328 /* xscreensaver-getimage-file in Resources */ = {isa = PBXBuildFile; fileRef = AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */; }; AF1A17680D6D6EE3008AF328 /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; }; AF1A177F0D6D6F3E008AF328 /* lcdscrub.c in Sources */ = {isa = PBXBuildFile; fileRef = AF1A177E0D6D6F3E008AF328 /* lcdscrub.c */; }; @@ -1285,6 +1286,8 @@ AF35E8900E63823600691F2F /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; }; AF35EB240E63829600691F2F /* jigsaw.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258CF0988A468000655EE /* jigsaw.xml */; }; AF35EB260E6382BA00691F2F /* jigsaw.c in Sources */ = {isa = PBXBuildFile; fileRef = AF35EB250E6382BA00691F2F /* jigsaw.c */; }; + AF39483E15A164680000FFCD /* jigsaw.c in Sources */ = {isa = PBXBuildFile; fileRef = AF35EB250E6382BA00691F2F /* jigsaw.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; }; + AF39483F15A1647A0000FFCD /* jigsaw.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258CF0988A468000655EE /* jigsaw.xml */; }; AF3C714B0D624BF50030CC0D /* XScreenSaverSubclass.m in Sources */ = {isa = PBXBuildFile; fileRef = AF9CC7A0099580E70075E99B /* XScreenSaverSubclass.m */; }; AF3C715E0D624C600030CC0D /* hypnowheel.c in Sources */ = {isa = PBXBuildFile; fileRef = AF3C715D0D624C600030CC0D /* hypnowheel.c */; }; AF3C71600D624C7C0030CC0D /* hypnowheel.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF3C715F0D624C7C0030CC0D /* hypnowheel.xml */; }; @@ -1496,6 +1499,8 @@ AF51FD4115845FFC00E5741F /* iSaverRunner72.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295D157D5C2C00C396E1 /* iSaverRunner72.png */; }; AF51FD4215845FFF00E5741F /* iSaverRunner114.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295E157D5C2C00C396E1 /* iSaverRunner114.png */; }; AF51FD431584600300E5741F /* iSaverRunner114.png in Resources */ = {isa = PBXBuildFile; fileRef = AF01295E157D5C2C00C396E1 /* iSaverRunner114.png */; }; + AF561DF615969BC3007CA5ED /* iosgrabimage.m in Sources */ = {isa = PBXBuildFile; fileRef = AF561DF515969BC3007CA5ED /* iosgrabimage.m */; }; + AF561DF815969C5B007CA5ED /* AssetsLibrary.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */; }; AF6048FB157C07C600CA21E4 /* jwzgles.c in Sources */ = {isa = PBXBuildFile; fileRef = AF6048F8157C07C600CA21E4 /* jwzgles.c */; }; AF6048FC157C07C600CA21E4 /* jwzgles.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048F9157C07C600CA21E4 /* jwzgles.h */; }; AF6048FD157C07C600CA21E4 /* jwzglesI.h in Headers */ = {isa = PBXBuildFile; fileRef = AF6048FA157C07C600CA21E4 /* jwzglesI.h */; }; @@ -2401,6 +2406,11 @@ AFC75930158D9A7A00C5458E /* iostextclient.m in Sources */ = {isa = PBXBuildFile; fileRef = AFC7592F158D9A7A00C5458E /* iostextclient.m */; }; AFCCCBB009BFE4B000353F4D /* rdbomb.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFCCCBAD09BFE4B000353F4D /* rdbomb.xml */; }; AFCCCBB309BFE51900353F4D /* thornbird.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC259230988A469000655EE /* thornbird.xml */; }; + AFCF453715986A2100E6E8CC /* dnalogo.c in Sources */ = {isa = PBXBuildFile; fileRef = AF77787609B653DC00EA3033 /* dnalogo.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; }; + AFCF453815986A3000E6E8CC /* dnalogo.xml in Resources */ = {isa = PBXBuildFile; fileRef = AF77787909B6545E00EA3033 /* dnalogo.xml */; }; + AFCF4545159878C300E6E8CC /* polyhedra-gl.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA561B209937DCB00F3E977 /* polyhedra-gl.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; }; + AFCF4546159878C300E6E8CC /* polyhedra.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA561B309937DCC00F3E977 /* polyhedra.c */; settings = {COMPILER_FLAGS = "-DUSE_GL"; }; }; + AFCF4547159878D500E6E8CC /* polyhedra.xml in Resources */ = {isa = PBXBuildFile; fileRef = AFC258F70988A469000655EE /* polyhedra.xml */; }; AFCFF1D90CE4517C00C7D111 /* involute.c in Sources */ = {isa = PBXBuildFile; fileRef = AFE6A16A0CDD78EA002805BF /* involute.c */; }; AFCFF1DA0CE4518B00C7D111 /* tube.c in Sources */ = {isa = PBXBuildFile; fileRef = AF480ED2098F652A00FB32B8 /* tube.c */; }; AFCFF1DB0CE451A300C7D111 /* normals.c in Sources */ = {isa = PBXBuildFile; fileRef = AFA55A93099336D800F3E977 /* normals.c */; }; @@ -5804,6 +5814,7 @@ AF0F46DC104E1809000A929C /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; AF0FAF0B09CA6FF900EE1051 /* xscreensaver-text */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "xscreensaver-text"; path = "driver/xscreensaver-text"; sourceTree = ""; }; AF0FAF1209CA712600EE1051 /* xscreensaver-getimage-file */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.perl; name = "xscreensaver-getimage-file"; path = "driver/xscreensaver-getimage-file"; sourceTree = ""; }; + AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; }; AF14EE300E3CEF1A004CBBD2 /* XScreenSaver.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = XScreenSaver.icns; path = OSX/XScreenSaver.icns; sourceTree = ""; }; AF1A17730D6D6EE3008AF328 /* XScreenSaver.saver */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = XScreenSaver.saver; path = LCDscrub.saver; sourceTree = BUILT_PRODUCTS_DIR; }; AF1A177E0D6D6F3E008AF328 /* lcdscrub.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = lcdscrub.c; path = hacks/lcdscrub.c; sourceTree = ""; }; @@ -5989,6 +6000,9 @@ AF4FF4D00D52CC8400666F98 /* cubicgrid.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = cubicgrid.c; path = hacks/glx/cubicgrid.c; sourceTree = ""; }; AF4FF4D30D52CCAA00666F98 /* cubicgrid.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = cubicgrid.xml; sourceTree = ""; }; AF56019B157DAA3D00DB2055 /* iSaverRunner.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = iSaverRunner.xib; path = OSX/iSaverRunner.xib; sourceTree = ""; }; + AF561DF3159651A7007CA5ED /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/AudioToolbox.framework; sourceTree = DEVELOPER_DIR; }; + AF561DF515969BC3007CA5ED /* iosgrabimage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = iosgrabimage.m; path = OSX/iosgrabimage.m; sourceTree = ""; }; + AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AssetsLibrary.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.1.sdk/System/Library/Frameworks/AssetsLibrary.framework; sourceTree = DEVELOPER_DIR; }; AF6048F8157C07C600CA21E4 /* jwzgles.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = jwzgles.c; path = hacks/glx/jwzgles.c; sourceTree = ""; }; AF6048F9157C07C600CA21E4 /* jwzgles.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzgles.h; path = hacks/glx/jwzgles.h; sourceTree = ""; }; AF6048FA157C07C600CA21E4 /* jwzglesI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jwzglesI.h; path = hacks/glx/jwzglesI.h; sourceTree = ""; }; @@ -7719,8 +7733,10 @@ AF918B96158FD0EA002B5D1E /* libjwxyz.a in Frameworks */, AFEB9C3B1590054B003974F3 /* OpenGLES.framework in Frameworks */, AFEB9C3915900514003974F3 /* UIKit.framework in Frameworks */, + AF561DF815969C5B007CA5ED /* AssetsLibrary.framework in Frameworks */, AFEB9C3D15900558003974F3 /* Foundation.framework in Frameworks */, AFEB9C401590056A003974F3 /* CoreGraphics.framework in Frameworks */, + AF0FAF3C159BAC7C00BCE2F7 /* CoreText.framework in Frameworks */, AFEB9C411590056A003974F3 /* QuartzCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -9138,6 +9154,7 @@ 080E96DDFE201D6D7F000001 /* libjwxyz */ = { isa = PBXGroup; children = ( + AF561DF515969BC3007CA5ED /* iosgrabimage.m */, AFC7592F158D9A7A00C5458E /* iostextclient.m */, AFE1FD410981E32E00F7970E /* InvertedSlider.h */, AFE1FD420981E32E00F7970E /* InvertedSlider.m */, @@ -9397,7 +9414,6 @@ 29B97314FDCFA39411CA2CEA /* xscreensaver */ = { isa = PBXGroup; children = ( - AF7E080315932A1600D81407 /* iSaverRunner29t.png */, AF480AB9098C66E200FB32B8 /* SaverRunner */, 080E96DDFE201D6D7F000001 /* libjwxyz */, AFE1FD520981E35400F7970E /* Utils */, @@ -9419,6 +9435,7 @@ AF56019B157DAA3D00DB2055 /* iSaverRunner.xib */, AF2D522513E954A0002AA818 /* SaverRunner.icns */, AF01295A157D5C2C00C396E1 /* iSaverRunner29.png */, + AF7E080315932A1600D81407 /* iSaverRunner29t.png */, AF01295B157D5C2C00C396E1 /* iSaverRunner50.png */, AF01295C157D5C2C00C396E1 /* iSaverRunner57.png */, AF01295D157D5C2C00C396E1 /* iSaverRunner72.png */, @@ -9442,6 +9459,9 @@ AFEB9C3815900514003974F3 /* UIKit.framework */, AF0F46DC104E1809000A929C /* AppKit.framework */, AF976ED30989BF59001F8B92 /* ScreenSaver.framework */, + AF561DF715969C5B007CA5ED /* AssetsLibrary.framework */, + AF561DF3159651A7007CA5ED /* AudioToolbox.framework */, + AF0FAF3B159BAC7B00BCE2F7 /* CoreText.framework */, 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */, AF480DF1098F528500FB32B8 /* OpenGL.framework */, AF480FE70990375900FB32B8 /* AGL.framework */, @@ -15737,6 +15757,7 @@ buildActionMask = 2147483647; files = ( AF91897E158FC00A002B5D1E /* iSaverRunner29.png in Resources */, + AF7E080415932A1600D81407 /* iSaverRunner29t.png in Resources */, AF91897F158FC00A002B5D1E /* iSaverRunner50.png in Resources */, AF918980158FC00A002B5D1E /* iSaverRunner57.png in Resources */, AF918981158FC00A002B5D1E /* iSaverRunner72.png in Resources */, @@ -15791,6 +15812,7 @@ AF918AE5158FC53D002B5D1E /* demon.xml in Resources */, AF918AE6158FC53D002B5D1E /* discrete.xml in Resources */, AF918AE7158FC53D002B5D1E /* distort.xml in Resources */, + AFCF453815986A3000E6E8CC /* dnalogo.xml in Resources */, AF918AE9158FC53D002B5D1E /* drift.xml in Resources */, AF918AEA158FC53D002B5D1E /* endgame.xml in Resources */, AF918AEB158FC53D002B5D1E /* engine.xml in Resources */, @@ -15839,6 +15861,7 @@ AF918B1D158FC53D002B5D1E /* interference.xml in Resources */, AF918B1E158FC53D002B5D1E /* intermomentary.xml in Resources */, AF918B1F158FC53D002B5D1E /* jigglypuff.xml in Resources */, + AF39483F15A1647A0000FFCD /* jigsaw.xml in Resources */, AF918B22158FC53D002B5D1E /* juggler3d.xml in Resources */, AF918B23158FC53D002B5D1E /* julia.xml in Resources */, AF918B24158FC53D002B5D1E /* kaleidescope.xml in Resources */, @@ -15874,6 +15897,7 @@ AF918B4A158FC53E002B5D1E /* piecewise.xml in Resources */, AF918B4B158FC53E002B5D1E /* pinion.xml in Resources */, AF918B4C158FC53E002B5D1E /* pipes.xml in Resources */, + AFCF4547159878D500E6E8CC /* polyhedra.xml in Resources */, AF918B4E158FC53E002B5D1E /* polyominoes.xml in Resources */, AF918B4F158FC53E002B5D1E /* polytopes.xml in Resources */, AF918B50158FC53E002B5D1E /* pong.xml in Resources */, @@ -15933,7 +15957,6 @@ AF918B8F158FC53E002B5D1E /* xrayswarm.xml in Resources */, AF918B90158FC53E002B5D1E /* xspirograph.xml in Resources */, AF918B91158FC554002B5D1E /* zoom.xml in Resources */, - AF7E080415932A1600D81407 /* iSaverRunner29t.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -22508,6 +22531,7 @@ AF6048FB157C07C600CA21E4 /* jwzgles.c in Sources */, AFC7592D158D8E8B00C5458E /* textclient.c in Sources */, AFC75930158D9A7A00C5458E /* iostextclient.m in Sources */, + AF561DF615969BC3007CA5ED /* iosgrabimage.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -23008,6 +23032,7 @@ AF918A44158FC3BB002B5D1E /* cubestorm.c in Sources */, AF918A45158FC3BB002B5D1E /* cubicgrid.c in Sources */, AF918A46158FC3BB002B5D1E /* dangerball.c in Sources */, + AFCF453715986A2100E6E8CC /* dnalogo.c in Sources */, AF918A48158FC3BB002B5D1E /* dolphin.c in Sources */, AF918A49158FC3BB002B5D1E /* dropshadow.c in Sources */, AF918A4A158FC3E5002B5D1E /* endgame.c in Sources */, @@ -23038,6 +23063,7 @@ AF918A6C158FC3E5002B5D1E /* hypnowheel.c in Sources */, AF918A6D158FC3E5002B5D1E /* involute.c in Sources */, AF918A6E158FC417002B5D1E /* jigglypuff.c in Sources */, + AF39483E15A164680000FFCD /* jigsaw.c in Sources */, AF918A6F158FC417002B5D1E /* juggler3d.c in Sources */, AF918A70158FC417002B5D1E /* klein.c in Sources */, AF918A71158FC417002B5D1E /* lament.c in Sources */, @@ -23054,6 +23080,8 @@ AF918A7D158FC417002B5D1E /* pinion.c in Sources */, AF918A7E158FC417002B5D1E /* pipeobjs.c in Sources */, AF918A7F158FC417002B5D1E /* pipes.c in Sources */, + AFCF4545159878C300E6E8CC /* polyhedra-gl.c in Sources */, + AFCF4546159878C300E6E8CC /* polyhedra.c in Sources */, AF918A82158FC417002B5D1E /* polytopes.c in Sources */, AF918A83158FC417002B5D1E /* providence.c in Sources */, AF918A84158FC417002B5D1E /* pulsar.c in Sources */, @@ -27851,6 +27879,7 @@ SDKROOT = macosx; "SDKROOT[arch=armv6]" = iphoneos; "SDKROOT[arch=armv7]" = iphoneos; + SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos"; VALID_ARCHS = "i386 x86_64 armv6 armv7"; }; @@ -27868,6 +27897,7 @@ SDKROOT = macosx; "SDKROOT[arch=armv6]" = iphoneos; "SDKROOT[arch=armv7]" = iphoneos; + SKIP_INSTALL = YES; SUPPORTED_PLATFORMS = "macosx iphonesimulator iphoneos"; VALID_ARCHS = "i386 x86_64 armv6 armv7"; }; @@ -29021,7 +29051,7 @@ GCC_THUMB_SUPPORT = NO; INFOPLIST_FILE = OSX/iSaverRunner.plist; INSTALL_PATH = "$(HOME)/Applications"; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; + IPHONEOS_DEPLOYMENT_TARGET = 4.2; PRODUCT_NAME = XScreenSaver; PROVISIONING_PROFILE = ""; SDKROOT = iphoneos; @@ -29052,7 +29082,7 @@ GCC_THUMB_SUPPORT = NO; INFOPLIST_FILE = OSX/iSaverRunner.plist; INSTALL_PATH = "$(HOME)/Applications"; - IPHONEOS_DEPLOYMENT_TARGET = 3.0; + IPHONEOS_DEPLOYMENT_TARGET = 4.2; PRODUCT_NAME = XScreenSaver; PROVISIONING_PROFILE = "6713E214-60AD-43CF-AFD3-825AEB87AA75"; SDKROOT = iphoneos; @@ -32704,6 +32734,7 @@ "HAVE_GLBINDTEXTURE=1", "HAVE_UNAME=1", "HAVE_ICMP=1", + "HAVE_GETIFADDRS=1", "HAVE_FORKPTY=1", "HAVE_UTIL_H=1", "$(GCC_PREPROCESSOR_DEFINITIONS)", @@ -32762,6 +32793,7 @@ "HAVE_GLBINDTEXTURE=1", "HAVE_UNAME=1", "HAVE_ICMP=1", + "HAVE_GETIFADDRS=1", "HAVE_FORKPTY=1", "HAVE_UTIL_H=1", "$(GCC_PREPROCESSOR_DEFINITIONS)",