astap_2022.12.09.orig/0000755000175100017510000000000014344743400013475 5ustar debiandebianastap_2022.12.09.orig/unit_hyperbola.pas0000644000175100017510000001575714344743400017245 0ustar debiandebianunit unit_hyperbola; {Hyperbola modeling of the star disk size in HFD as function of the telescope focuser position. Purpose is finding the best focuser position at the hyperbola minimum.} {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode objfpc}{$H+} interface uses Classes, SysUtils, math; type TDouble2 = array[1..2] of double; procedure find_best_hyperbola_fit(data:array of TDouble2 ;data_length:integer;out p,a,b : double); {input data[n,1]=position,data[n,2]=hfd, output: bestfocusposition=p, a, b of hyperbola} function hfd_calc(position,perfectfocusposition,a,b:double) :double; {calculate HFD from position and perfectfocusposition using hyperbola parameters} function steps_to_focus(hfd,a,b:double) :double; {calculates focuser steps to perfect focus from HFD and hyperbola parameters} var iteration_cycles :integer; {how many cycle where used for curve fitting} lowest_error : double; {mean HFD error after curve fitting} focus_best : double; {best focus} implementation uses astap_main; function hfd_calc(position,perfectfocusposition,a,b:double) :double; {calculate HFD from position and perfectfocusposition using hyperbola parameters} {The HFD (half flux diameter) of the imaged star disk as function of the focuser position can be described as hyperbola} {a,b are the hyperbola parameters, a is the lowest HFD value at focus position, the asymptote y:= +-x*a/b} {rev1} {A hyperbola is defined as: } {x=b*sinh(t) } {y=a*cosh(t) } {Using the arccosh and arsinh functions it is possible to inverse} {above calculations and convert x=>t and t->y or y->t and t->x} var x,t : double; begin x:=perfectfocusposition - position; t:=arsinh(x/b);{calculate t-position in hyperbola} result:=a*cosh(t);{convert t-position to y/hfd value} end; function steps_to_focus(hfd,a,b:double) :double; {calculates focuser steps to perfect focus from HFD and hyperbola parameters} {The HFD (half flux diameter) of the imaged star disk as function of the focuser position can be described as hyperbola} {a,b are the hyperbola parameters, a is the lowest HFD value at focus position, the asymptote y:= +-x*a/b} {rev1} {A hyperbola is defined as: } {x=b*sinh(t) } {y=a*cosh(t) } {Using the arccosh and arsinh functions it is possible to inverse} {above calculations and convert x=>t and t->y or y->t and t->x} {Note using the HFD there are two solutions, either left or right side of the hyperbola} var x,t : double; begin x:=hfd/a; if x<1 then x:=1;{prevent run time errors} t:=arcosh(x);{calculate t-position in hyperbola} result:=b*sinh(t);{convert t-position to steps to focus} end; function mean_error_hyperbola(data: array of TDouble2 {pos, hfd};data_length:integer; perfectfocusposition,a,b : double): double;{calculates total averaged error between measured V-curve and hyperbola} var i : integer; hfd_simulation, total_error,error : double; begin total_error:=0; for i:=0 to data_length-1 do begin hfd_simulation:=hfd_calc(data[i,1],perfectfocusposition,a,b);{y or HFD error} {smart error calculation which limits error for outliers} error:=hfd_simulation - data[i,2] ;{hfd error in simulation} if error < 0 then total_error:=total_error - error/data[i,2] {if data[i,2] is large positive outlier then limit error to data[i,2]/data[i,2]=1 maximum} else total_error:=total_error + error/hfd_simulation; {if data[i,2] is large negative outlier then limit error to hfd_simulation/hfd_simulation=1 maximum} end; result:=(total_error)/data_length;{scale to average error per point} end; procedure find_best_hyperbola_fit(data: array of TDouble2 {pos, hfd};data_length:integer;out p,a,b : double); {input data[n,1]=position,data[n,2]=hfd, output: bestfocusposition=p, a, b of hyperbola} {The input data array should contain several focuser positions with there corresponding HFD (star disk size).} {The routine will try to find the best hyperbola curve fit. The focuser position p at the hyperbola minimum is the expected best focuser position} var i,n :integer; error1, old_error, p_range,a_range, b_range, highest_hfd, lowest_hfd, highest_position, lowest_position,a1,b1,p1,a0,b0,p0 :double; begin lowest_error:=1E99; n:=data_length;// or n:=Length(data); highest_hfd:=0; lowest_hfd:=1E99; for i:=0 to n-1 do {find start values for hyperbola loop} begin if data[i,2]>highest_hfd then begin highest_hfd:=data[i,2]; highest_position:=data[i,1]; end; if ((data[i,2]0.1){avoid zero's}) then begin lowest_hfd:=data[i,2]; lowest_position:=data[i,1]; end; end; if highest_position sqr(b)=sqr(x)*sqr(a)/(sqr(y)-sqr(a)} {rev1} b:=sqrt(sqr(highest_position- lowest_position)*sqr(a)/(sqr(highest_hfd)-sqr(a)) );{rev1} p:=lowest_position; iteration_cycles:=0; {set starting test range} a_range:=a; b_range:=b; p_range:=(highest_position-lowest_position);{large steps since slope could contain some error} repeat p0:=p; b0:=b; a0:=a; a_range:=a_range*0.5;{reduce scan range by 50%} b_range:=b_range*0.5; p_range:=p_range*0.5; p1:=p0 - p_range;{start value} while p1<=p0 + p_range do {position loop} begin a1:=a0 - a_range;{start value} while a1<=a0 + a_range do {a loop} begin b1:=b0 - b_range;{start value} while b1 <= b0 + b_range do {b loop} begin error1:=mean_error_hyperbola(data, data_length,p1,a1,b1); {calculate the curve fit error with these values.} if error1=30) ); {most likely convergence problem} focus_best:=p;{use for command line} end; end. astap_2022.12.09.orig/unit_aberration.pas0000644000175100017510000001440114344743400017367 0ustar debiandebianunit unit_aberration; {$mode delphi} interface uses Classes, SysUtils,math; procedure aberration_correction_equatorial(julian_et: double;var ra,dec : double);{J2000 equinox} procedure nutation_correction_equatorial(julian_et: double;var ra,dec : double);{mean equinox, add nutation M&P page 125} procedure J2000_to_apparent(jd: double;var ra,dec : double);{without refraction} implementation uses unit_hjd, unit_ephemerides,unit_asteroid; (*-----------------------------------------------------------------------*) (* NUTEQU: transformation of mean to true coordinates *) (* (including terms >0.1" according to IAU 1980) *) (* T = (JD-2451545.0)/36525.0 *) (*-----------------------------------------------------------------------*) PROCEDURE NUTEQU(T:double; VAR X,Y,Z:double); CONST ARC=206264.8062; (* arcseconds per radian = 3600*180/pi *) P2 =6.283185307; (* 2*pi *) VAR LS,D,F,N,EPS : double; DPSI,DEPS,C,S: double; DX,DY,DZ : double; FUNCTION FRAC(X:double):double; BEGIN FRAC:=X-TRUNC(X) END; BEGIN LS := P2*FRAC(0.993133+ 99.997306*T); (* mean anomaly Sun *) D := P2*FRAC(0.827362+1236.853087*T); (* diff. longitude Moon-Sun *) F := P2*FRAC(0.259089+1342.227826*T); (* mean argument of latitude *) N := P2*FRAC(0.347346- 5.372447*T); (* longit. ascending node *) EPS := 0.4090928-2.2696E-4*T; (* obliquity of the ecliptic *) DPSI := ( -17.200*SIN(N) - 1.319*SIN(2*(F-D+N)) - 0.227*SIN(2*(F+N)) + 0.206*SIN(2*N) + 0.143*SIN(LS) ) / ARC; DEPS := ( + 9.203*COS(N) + 0.574*COS(2*(F-D+N)) + 0.098*COS(2*(F+N)) - 0.090*COS(2*N) ) / ARC; C := DPSI*COS(EPS); S := DPSI*SIN(EPS); DX := -(C*Y+S*Z); DY := (C*X-DEPS*Z); DZ := (S*X+DEPS*Y); X:=X + DX; Y:=Y + DY; Z:=Z + DZ; END; (*-----------------------------------------------------------------------*) (* CART2: conversion of polar coordinates (r,theta,phi) *) (* into cartesian coordinates (x,y,z) *) (* (theta in [-pi/2.. pi/2 rad]; phi in [-pi*2,+pi*2 rad]) *) (*-----------------------------------------------------------------------*) procedure cart2(R,THETA,PHI: double; out X,Y,Z: double); VAR RCST : double; cos_theta,sin_theta :double; cos_phi,sin_phi :double; begin sincos(theta,sin_theta,cos_theta); sincos(phi ,sin_phi ,cos_phi); RCST := R*COS_THETA; X := RCST*COS_PHI; Y := RCST*SIN_PHI; Z := R*SIN_THETA; end; (*----------------------------------------------------------------*) (* EQUHOR: conversion of equatorial into horizontal coordinates *) (* DEC : declination (-pi/2 .. +pi/2) *) (* TAU : hour angle (0 .. 2*pi) *) (* PHI : geographical latitude (in rad) *) (* H : altitude (in rad) *) (* AZ : azimuth (0 deg .. 2*pi rad, counted S->W->N->E->S) *) (*----------------------------------------------------------------*) PROCEDURE EQUHOR2 (DEC,TAU,PHI: double; out H,AZ: double); VAR COS_PHI,SIN_PHI, COS_DEC,SIN_DEC,COS_TAU, SIN_TAU, X,Y,Z, DUMMY: double; BEGIN SINCOS(PHI,SIN_PHI,COS_PHI); SINCOS(DEC,SIN_DEC,COS_DEC); SINCOS(TAU,SIN_TAU,COS_TAU); X:=COS_DEC*SIN_PHI*COS_TAU - SIN_DEC*COS_PHI; Y:=COS_DEC*SIN_TAU; Z:=COS_DEC*COS_PHI*COS_TAU + SIN_DEC*SIN_PHI; POLAR2(X,Y,Z, DUMMY,H,AZ) END; procedure nutation_correction_equatorial(julian_et: double;var ra,dec : double);{mean equinox, add nutation M&P page 125} var r,x0,y0,z0 : double; begin cart2(1,dec,ra,x0,y0,z0); {make cartesian coordinates} NUTEQU((julian_et-2451545.0)/36525.0 ,x0,y0,z0);{add nutation} polar2(x0,y0,z0,r,dec,ra); end; procedure aberration_correction_equatorial(julian_et: double;var ra,dec : double);{J2000 equinox} var r,x0,y0,z0 : double; pb_earth, vb_earth : r3_array;{barycentric earth vector} begin //http://www.bbastrodesigns.com/coordErrors.html Gives same value within a fraction of arcsec. //2020-1-1, JD=2458850.50000, RA,DEC position 12:00:00, 40:00:00, precession +00:01:01.45, -00:06:40.8, Nutation -00:00:01.1, +00:00:06.6, Annual aberration +00:00:00.29, -00:00:14.3 //2020-1-1, JD=2458850.50000 RA,DEC position 06:00:00, 40:00:00, precession +00:01:23.92, -00:00:01.2, Nutation -00:00:01.38, -00:00:01.7, Annual aberration +00:00:01.79, +00:00:01.0 //2030-6-1, JD=2462654.50000 RA,DEC position 06:00:00, 40:00:00, precession +00:02:07.63, -00°00'02.8",Nutation +00:00:01.32, -0°00'02.5", Annual aberration -00:00:01.65, +00°00'01.10" // Meeus Astronomical algorithms. Example 22.a and 20.b // 2028-11-13.19 JD 2462088.69 // J2000, RA=41.054063, DEC=49.22775 // Mean RA=41.547214, DEC=49.348483 // True RA=41.55996122, DEC=49.35207022 {error with Astronomy on the computer 0.23" and -0.06"} // Nutation ["] RA 15.843, DEC 6.218 // Aberration["] RA 30.047, DEC 6.696 cart2(1,dec,ra,x0,y0,z0); {make cartesian coordinates} sla_EPV2(julian_et-2400000.5{mjd}, true {barycentric}, pb_earth,vb_earth {AU/day});{barycentric position earth including light time correction, high accuracy for years 1900 to 2100} x0:=x0+vb_earth[1]*0.00577552; {conversion from AU/day to speed of light, about 1/173} {apply aberration,(v_earth/speed_light)*180/pi=20.5"} y0:=y0+vb_earth[2]*0.00577552; {conversion from AU/day to speed of light, about 1/173} z0:=z0+vb_earth[3]*0.00577552; {conversion from AU/day to speed of light, about 1/173} polar2(x0,y0,z0,r,dec,ra); end; procedure J2000_to_apparent(jd: double;var ra,dec : double);{without refraction} var jde : double; {Julian day based on dynamic time} begin jde:=jd+deltaT_calc(jd);// difference between dynamic time and UTC in days aberration_correction_equatorial(jde,ra,dec);{aberration correction in J2000 equinox, See ook meeus pagine 148. De Earth velocity terms are for J2000 and not Jnow} precession3(2451545 {J2000},jde,ra,dec); {precession, from J2000 to Jnow} nutation_correction_equatorial(jde,ra,dec);{mean equinox. M&P page 125} end; end. astap_2022.12.09.orig/unit_monitoring.pas0000644000175100017510000002567614344743400017446 0ustar debiandebianunit unit_monitoring; {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode delphi} interface uses Classes, SysUtils,forms,fileutil, graphics, LCLIntf,math; procedure monitoring(path :string);{stack live average} procedure report_delta; {report delta error} const live_monitoring: boolean=false; {used to inhibit solving while live_stacking} implementation uses unit_stack, astap_main,unit_stack_routines,unit_astrometric_solving,unit_star_align,unit_inspector_plot, unit_hjd; var latest_time : integer=0; function file_available(monitor_directory:string; out filen: string ) : boolean; {check if fits file is available and report the filename} Var Info : TSearchRec; Count : Longint; i : integer; f : file; ex : string; const extensions : array[0..44] of string= (('.fit'),('.fits'),('*.FIT'),('.FITS'),('.RAW'),('.raw'),('.CRW'),('.crw'),('.CR2'),('.cr2'),('.CR3'),('.cr3'),('.KDC'),('.kdc'),('.DCR'), ('.dcr'),('.MRW'),('.mrw'),('.ARW'),('.arw'),('.NEF'),('.nef'),('.NRW'),('.nrw'),('.DNG'),('.dng'),('.ORF'),('.orf'),('.PTX'),('.ptx'),('.PEF'), ('.pef'),('.RW2'),('.rw2'),('.SRW'),('.srw'),('.RAF'),('.raf'), ('*.png'),('.PNG'),('.jpg'),('(.JPG'),('.tif'),('.tiff'),('.TIF')); Begin result:=false; Count:=0; If SysUtils.FindFirst (monitor_directory+ {$ifdef mswindows}'\' {$else} {unix} '/' {$endif}+'*', faAnyFile-faDirectory,Info)=0 then begin Repeat Inc(Count); With Info do begin // SR.FindData.ftLastWriteTime if time>latest_time then begin ex:=extractfileext(name); i:=-1; repeat inc(i); until ((i>44) or (ex=extensions[i])); if i>44 then continue;{no know image extension, continue with repeat} result:=true; filen:=name; latest_time:=time; end; end; Until SysUtils.FindNext(info)<>0; SysUtils.FindClose(Info); end; if result then begin filen:= monitor_directory+ {$ifdef mswindows}'\' {$else} {unix} '/' {$endif}+filen; {check if free for reading} assign(f,filen); {$I-} reset(f); {prepare for reading} {$I+} result:=(IOresult=0); {report if file is accessible} if result then close(f); end; End; procedure report_delta; {report delta error} var distance,deltaRA,deltaDEC,az_solution,alt_solution,az_target,alt_target,jd_now,lat,long,angle,angle1,angle2,angle_mid,fov : double; wdiv2,hdiv2,x,y,rx,ry : integer; direction : string; begin if head.naxis=0 then exit; with stackmenu1 do begin raposition1.visible:=true; decposition1.visible:=true; raposition1.caption:=' '+prepare_ra(head.ra0,': ');{show center of image} decposition1.caption:=prepare_dec(head.dec0,'° '); if copy(target1.caption,1,1)<>'-' then {target option and object is set} begin target_distance1.visible:=true; delta_ra1.visible:=true; delta_dec1.visible:=true; label_latitude1.Visible:=true; label_longitude1.Visible:=true; monitor_latitude1.visible:=true; monitor_longitude1.visible:=true; ang_sep(head.ra0,head.dec0,ra_target,dec_target ,distance);{calculate distance in radians} target_distance1.caption :='Distance: '+floattostrF(distance*180/pi,ffFixed,0,3)+'°'; deltaRA:=fnmodulo((ra_target-head.ra0)*12/pi,24); if deltaRA>12 then begin direction:='W'; deltaRa:=24-deltaRA;end else begin direction:='E'; end; delta_ra1.caption :='Δα: '+floattostrF(deltaRA,ffFixed,0,3)+'h '+direction; deltaDec:=(dec_target-head.dec0)*180/pi; if deltaDec>0 then begin direction:='N' end else begin direction:='S'; end; delta_dec1.caption:='Δδ: '+floattostrF(abs(deltaDec),ffFixed,0,3)+'° '+direction; jd_now:=calc_jd_now; lat:=strtofloat2(lat_default)*pi/180; long:=strtofloat2(long_default)*pi/180; altitude_and_refraction(lat,long,jd_now,10 {temp},1010 {pressure},head.ra0,head.dec0,az_solution,alt_solution);{In formulas the longitude is positive to west!!!. } altitude_and_refraction(lat,long,jd_now,10 {temp},1010 {pressure},ra_target,dec_target,az_target,alt_target);{In formulas the longitude is positive to west!!!. } target_altitude1.visible:=true; target_azimuth1.visible:=true; target_altitude1.caption:='A: '+floattostrF(alt_target,ffFixed,0,1)+'°'; target_azimuth1.caption:='H: '+floattostrF(az_target,ffFixed,0,1)+'°'; {draw arrow} with stackmenu1.direction_arrow1 do begin canvas.brush.color:=clmenu; Canvas.FillRect(rect(0,0,width,height)); Canvas.Pen.Color := clred; canvas.pen.Width:=5; Canvas.brush.Style:=bsClear; wdiv2:=width div 2; hdiv2:=height div 2; if ((lat=0) and (long=0)) then begin canvas.font.size:=14; canvas.textout(10,hdiv2+30,'Set latitude and longitude!!'); end; //show where the image sensor is Canvas.brush.Style:=bsDiagCross; canvas.brush.color:=clred; fov:=head.height*head.cdelt2; rx:=round(wdiv2+wdiv2*(az_target-az_solution)/fov); ry:=round(hdiv2-hdiv2*(alt_target-alt_solution)/fov); rectangle(canvas.handle,rx-wdiv2+10,ry-hdiv2+10,rx+wdiv2-10,ry+hdiv2-10); //arrow Canvas.brush.Style:=bsclear; fov:=head.height*head.cdelt2; rx:=round(wdiv2+wdiv2*(az_target-az_solution)/fov); ry:=round(hdiv2-hdiv2*(alt_target-alt_solution)/fov); rectangle(canvas.handle,rx-wdiv2+10,ry-hdiv2+10,rx+wdiv2-10,ry+hdiv2-10); ellipse(canvas.handle,wdiv2-8,hdiv2-8,wdiv2+8+1,hdiv2+8+1); moveToex(Canvas.handle,wdiv2,hdiv2,nil); angle:=arctan2(alt_target-alt_solution, az_target-az_solution);//calculate direction to target x:=round(0.95*wdiv2*cos(angle)); y:=round(0.95*wdiv2*sin(angle)); lineTo(Canvas.handle,hdiv2+x,wdiv2-y); // arrow line. Note y counts from top to bottom, so minus sign angle1:=angle+(180+20)*pi/180; angle_mid:=angle+90*pi/180; angle2:=angle-20*pi/180; x:=x+round(30*cos(angle1)); y:=y+round(30*sin(angle1)); lineTo(Canvas.handle,hdiv2+x,wdiv2-y); // arrowhead. Note y counts from top to bottom, so minus sign. x:=x+round(21*cos(angle_mid)); y:=y+round(21*sin(angle_mid)); lineTo(Canvas.handle,hdiv2+x,wdiv2-y); // arrowhead. Note y counts from top to bottom, so minus sign x:=x+round(30*cos(angle2)); y:=y+round(30*sin(angle2)); lineTo(Canvas.handle,hdiv2+x,wdiv2-y); // arrowhead. Note y counts from top to bottom, so minus sign end; end;//target specified end; end; procedure monitoring(path :string);{monitoring a directory} var counter : integer; solver : boolean; begin with stackmenu1 do begin esc_pressed:=false; latest_time:=0;{for finding files} if monitor_applydarkflat1.checked then {Prepare for dark and flats} begin analyse_listview(stackmenu1.listview2,false {light},false {full fits},false{refresh});{analyse dark tab, by loading=false the loaded img will not be effected. Calstat will not be effected} analyse_listview(stackmenu1.listview3,false {light},false {full fits},false{refresh});{analyse flat tab, by loading=false the loaded img will not be effected} end; {live stacking} repeat begin if file_available(path,filename2 {file found}) then begin try { Do some lengthy operation } Application.ProcessMessages; {load image} if ((esc_pressed) or (load_image(false,false {plot})=false)) then begin if esc_pressed=false then begin memo2_message('Error loading file'); {can't load} continue; {repeat loop} end; live_monitoring1.font.style:=[]; live_monitoring:=false; exit; end; memo2_message('Loading file: '+filename2) ; if monitor_applydarkflat1.checked then begin apply_dark_and_flat(img_loaded);{apply dark, flat if required, renew if different head.exposure or ccd temp} {these global variables are passed-on in procedure to protect against overwriting} update_text('CALSTAT =',#39+head.calstat+#39); if ((pos('D',head.calstat)>0) or (pos('F',head.calstat)>0)) then {status of dark application} memo2_message('Calibration status '+head.calstat+'. Used '+inttostr(head.dark_count)+' darks, '+inttostr(head.flat_count)+' flats, '+inttostr(head.flatdark_count)+' flat-darks') ; end; Application.ProcessMessages; if esc_pressed then exit; if ((head.naxis3=1) and (mainwindow.preview_demosaic1.checked)) then demosaic_advanced(img_loaded) {demosaic and set levels} else use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false,true{do not show header in memo1});{plot real} monitor_date1.caption:= DateTimeToStr(FileDateToDateTime(latest_time)); solver:=false; case stackmenu1.monitor_action1.itemindex of 1: CCDinspector(30,false,strtofloat(measuring_angle)); 2: CCDinspector(30,true,strtofloat(measuring_angle)); 3: form_inspection1.aberration_inspector1Click(nil); 4: solver:=true; end;{case} if solver then begin mainwindow.astrometric_solve_image1Click(nil); report_delta; end else begin target_distance1.visible:=false; raposition1.visible:=false; decposition1.visible:=false; delta_ra1.visible:=false; delta_dec1.visible:=false; label_latitude1.Visible:=false; label_longitude1.Visible:=false; monitor_latitude1.visible:=false; monitor_longitude1.visible:=false; end; finally end; end else wait(1000);{wait 1 second unless something happens} end;{live average} until esc_pressed; live_monitoring:=false; live_monitoring1.font.style:=[]; memo2_message('Live stack stopped. Save result if required'); counterL:=counter; end;{with stackmenu1} end; end. astap_2022.12.09.orig/unit_aavso.pas0000644000175100017510000003655214344743400016365 0ustar debiandebianunit unit_aavso; {Copyright (C) 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode delphi} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, math, clipbrd, ExtCtrls, Menus; type { Tform_aavso1 } Tform_aavso1 = class(TForm) baa_style1: TCheckBox; Image_photometry1: TImage; report_error1: TLabel; MenuItem1: TMenuItem; name_check1: TComboBox; PopupMenu1: TPopupMenu; report_to_clipboard1: TButton; report_to_file1: TButton; delimiter1: TComboBox; Comparison1: TEdit; Label2: TLabel; Label4: TLabel; Label5: TLabel; name_variable1: TEdit; Label6: TLabel; Label8: TLabel; Label3: TLabel; obscode1: TEdit; Label1: TLabel; Filter1: TComboBox; procedure FormResize(Sender: TObject); procedure Image_photometry1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure MenuItem1Click(Sender: TObject); procedure name_check1Change(Sender: TObject); procedure name_check1DropDown(Sender: TObject); procedure name_variable1Change(Sender: TObject); procedure report_to_clipboard1Click(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormShow(Sender: TObject); private public end; var form_aavso1: Tform_aavso1; const obscode : string=''; abbreviation_check : string=''; name_check_IAU : string=''; abbreviation_var_IAU : string=''; name_var : string=''; delim_pos : integer=0; to_clipboard : boolean=true; baa_style : boolean=true; var aavso_report : string; procedure plot_graph; {plot curve} implementation {$R *.lfm} uses astap_main, unit_stack, unit_star_database;{for name_database only} var jd_min,jd_max,magn_min,magn_max : double; w,h,bspace :integer; function floattostr3(x:double):string; begin str(x:0:3,result); end; procedure get_info; begin with form_aavso1 do begin obscode:=obscode1.text; name_var:=name_variable1.text; abbreviation_check:=name_check1.text; delim_pos:=delimiter1.itemindex; baa_style:=baa_style1.checked; end; end; procedure Tform_aavso1.report_to_clipboard1Click(Sender: TObject); var c : integer; err,err_message,snr_str,airmass_str, delim,fn,fnG,detype,baa_extra,magn_type: string; stdev_valid : boolean; snr_value,err_by_snr : double; PNG: TPortableNetworkGraphic;{FPC} begin get_info; stdev_valid:=(photometry_stdev>0.0001); if stdev_valid then err_message:='max(StDev:2/SNR) used for MERR.' else err_message:='2/SNR used for MERR.'; delim:=delimiter1.text; if delim='tab' then delim:=#9; if baa_style1.checked then begin detype:='AAVSO EXT BAA V1.00'; baa_extra:='#LOCATION='+sitelat+' '+sitelong+' '+siteelev+#13+#10+ '#TELESCOPE='+TELESCOP+#13+#10+ '#CAMERA='+instrum+#13+#10; end else begin detype:='Extended'; baa_extra:=''; end; aavso_report:= '#TYPE='+detype+#13+#10+ '#OBSCODE='+obscode+#13+#10+ '#SOFTWARE=ASTAP, photometry version 1.0'+#13+#10+ '#DELIM='+delimiter1.text+#13+#10+ '#DATE=JD'+#13+#10+ '#OBSTYPE=CCD'+#13+#10+ baa_extra+ '#'+#13+#10+ '#NAME'+delim+'DATE'+delim+'MAG'+delim+'MERR'+delim+'FILT'+delim+'TRANS'+delim+'MTYPE'+delim+'CNAME'+delim+'CMAG'+delim+'KNAME'+delim+'KMAG'+delim+'AIRMASS'+delim+'GROUP'+delim+'CHART'+delim+'NOTES'+#13+#10; with stackmenu1 do for c:=0 to listview7.items.count-1 do begin if listview7.Items.item[c].checked then begin snr_str:=listview7.Items.item[c].subitems.Strings[P_snr]; if snr_str<>'' then snr_value:=strtoint(snr_str) else snr_value:=0; if snr_value<>0 then err_by_snr:=2 {1.087}/strtoint(snr_str) else err_by_snr:=0; if stdev_valid=false then begin if snr_value>0 then str(err_by_snr:1:4,err){SNR method.Note SNR is in ADU but for snr above 20 error is small. For e-/adu<1 error becomes larger. Factor 2 is a practical factor} else err:='na'; end else str(max(err_by_snr, photometry_stdev):1:4,err);{standard deviation of CK star} airmass_str:=listview7.Items.item[c].subitems.Strings[P_airmass]; if airmass_str='' then airmass_str:='na' else airmass_str:=stringreplace(airmass_str,',','.',[]); if pos('v',name_database)>0 then magn_type:=', photometry transformed to Johnson-V. ' else magn_type:=' using BM magnitude. '; if snr_str<>'' then aavso_report:= aavso_report+ name_var+delim+ StringReplace(listview7.Items.item[c].subitems.Strings[P_jd_mid],',','.',[])+delim+ StringReplace(listview7.Items.item[c].subitems.Strings[P_magn1],',','.',[])+delim+ err+ delim+copy(filter1.text,1,2)+delim+ 'NO'+delim+ 'STD'+delim+ 'ENSEMBLE'+delim+ 'na'+delim+ abbreviation_check+delim+ stringreplace(listview7.Items.item[c].subitems.Strings[P_magn2],',','.',[])+delim+ airmass_str+delim+ 'na'+delim+ {group} abbreviation_var_IAU+delim+ 'Ensemble of Gaia eDR3 stars'+magn_type+err_message+#13+#10; end; end; to_clipboard:=(sender=report_to_clipboard1); {report to clipboard of file} memo2_message(aavso_report); if to_clipboard then Clipboard.AsText:=aavso_report else begin fn:=ChangeFileExt(filename2,'_report.txt'); log_to_file2(fn, aavso_report); png:= TPortableNetworkGraphic.Create; {FPC} try PNG.Assign(Image_photometry1.Picture.Graphic); //Convert data into png fnG:=ChangeFileExt(filename2,'_graph.png'); PNG.SaveToFile(fnG); finally PNG.Free; end; memo2_message('AAVSO report written to: '+fn +' and '+fnG ); end; save_settings2; {for aavso settings} form_aavso1.close; {transfer variables. Normally this form is not loaded} mainwindow.setfocus; end; procedure Tform_aavso1.Image_photometry1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var w2,h2 :integer; begin if jd_min=0 then exit; w2:=image_photometry1.width; h2:=image_photometry1.height; form_aavso1.caption:= floattostrf(jd_min+(jd_max-jd_min)*((x*w/w2)-bspace)/(w-bspace*2),ffFixed,12,5)+', '+floattostrf(magn_min+(magn_max-magn_min)*(((y*h/h2))-bspace)/(h-bspace*2),ffFixed,5,3); end; procedure Tform_aavso1.MenuItem1Click(Sender: TObject); begin Clipboard.Assign(Image_photometry1.Picture.Bitmap); end; procedure Tform_aavso1.name_check1Change(Sender: TObject); begin plot_graph; end; procedure Tform_aavso1.name_check1DropDown(Sender: TObject); begin if name_check1.items.count=0 then begin name_check1.items.add(abbreviation_check); name_check1.items.add(name_check_IAU); end; end; procedure Tform_aavso1.name_variable1Change(Sender: TObject); begin plot_graph; end; procedure Tform_aavso1.FormResize(Sender: TObject); begin plot_graph; end; procedure plot_graph; {plot curve} var x1,y1,c,textp1,textp2,textp3,nrmarkX, nrmarkY,wtext : integer; scale,range : double; text1,text2 : string; bmp: TBitmap; dum:string; data : array of array of double; const len=3; procedure plot_point(x,y,tolerance:integer); begin with form_aavso1.Image_photometry1 do begin if ((x>0) and (y>0) and (x<=w) and( y<=h)) then begin bmp.canvas.Ellipse(x-len,y-len,x+1+len,y+1+len);{circle, the y+1,x+1 are essential to center the circle(ellipse) at the middle of a pixel. Otherwise center is 0.5,0.5 pixel wrong in x, y} if tolerance>0 then begin bmp.canvas.moveto(x,y-tolerance); bmp.canvas.lineto(x,y+tolerance); bmp.canvas.moveto(x-len+1,y-tolerance); bmp.canvas.lineto(x+len,y-tolerance); bmp.canvas.moveto(x-len+1,y+tolerance); bmp.canvas.lineto(x+len,y+tolerance); end; end; end; end; begin if ((head.naxis=0) or (form_aavso1=nil)) then exit; jd_min:=+9999999; jd_max:=-9999999 ; magn_min:=99; magn_max:=0; w:=max(form_aavso1.Image_photometry1.width,(len*2)*stackmenu1.listview7.items.count);{make graph large enough for all points} h:=max(100,form_aavso1.Image_photometry1.height); bspace:=2*mainwindow.image1.Canvas.textheight('T');{{border space graph. Also for 4k with "make everything bigger"} wtext:=mainwindow.image1.Canvas.textwidth('12.3456'); setlength(data,4, stackmenu1.listview7.items.count); with stackmenu1 do for c:=0 to listview7.items.count-1 do {retrieve data from listview} begin if listview7.Items.item[c].checked then begin dum:=(listview7.Items.item[c].subitems.Strings[P_jd_mid]); if dum<>'' then data[0,c]:=strtofloat(dum) else data[0,c]:=0; if data[0,c]<>0 then begin jd_max:=max(jd_max,data[0,c]); jd_min:=min(jd_min,data[0,c]); end; dum:=(listview7.Items.item[c].subitems.Strings[P_magn1]);{var star} if ((length(dum)>1 {not a ?}) and (dum[1]<>'S'{saturated})) then data[1,c]:=strtofloat(dum) else data[1,c]:=0; if data[1,c]<>0 then begin magn_max:=max(magn_max,data[1,c]); magn_min:=min(magn_min,data[1,c]); end; dum:=(listview7.Items.item[c].subitems.Strings[P_magn2]);{chk star} if ((length(dum)>1 {not a ?}) and (dum[1]<>'S'{saturated})) then data[2,c]:=strtofloat(dum) else data[2,c]:=0; if data[2,c]<>0 then begin magn_max:=max(magn_max,data[2,c]); magn_min:=min(magn_min,data[2,c]); end; dum:=(listview7.Items.item[c].subitems.Strings[P_magn3]); {3} try if ((length(dum)>1 {not a ?}) and (dum[1]<>'S'{saturated})) then data[3,c]:=strtofloat(dum) else data[3,c]:=0; except data[3,c]:=0; end; if data[3,c]<>0 then begin magn_max:=max(magn_max,data[3,c]); magn_min:=min(magn_min,data[3,c]); end; end; end; magn_min:=trunc(magn_min*100)/100; {add some rounding} magn_max:=trunc(magn_max*100)/100; range:=magn_max-magn_min; if range<-98 then begin form_aavso1.report_error1.visible:=true; exit; end else form_aavso1.report_error1.visible:=false; magn_max:=magn_max + range*0.05; {faint star, bottom} magn_min:=magn_min - range*0.05; {bright star, top} with form_aavso1.Image_photometry1 do begin bmp:=TBitmap.Create; bmp.PixelFormat:=pf24bit; bmp.SetSize(w,h); bmp.Canvas.brush.Style:=bsclear; bmp.canvas.brush.color:=clmenu; bmp.canvas.rectangle(-1,-1, w+1, h+1);{background} bmp.Canvas.Pen.Color := clmenutext; bmp.Canvas.brush.color :=clmenu; bmp.Canvas.Font.Color := clmenutext; bmp.canvas.moveto(w,h-bspace+5); bmp.canvas.lineto(wtext-5,h-bspace+5);{x line} bmp.canvas.lineto(wtext-5,bspace);{y line} bmp.canvas.font.style:=[fsbold]; bmp.canvas.textout(5,bspace div 2,'Magn'); bmp.canvas.textout(w-4*bspace,h-(bspace div 2),'JD (mid)'); bmp.canvas.font.style:=[]; text1:='Var ('+form_aavso1.name_variable1.text+')'; textp1:=10+wtext; bmp.canvas.textout(textp1,len*3,text1); textp2:=textp1+40+bmp.canvas.textwidth(text1); text2:='Chk ('+form_aavso1.name_check1.text+')'; bmp.canvas.textout(textp2,len*3,text2); textp3:=textp2+40+bmp.canvas.textwidth(text2); bmp.canvas.textout(textp3,len*3,'3'); if object_name<>'' then bmp.canvas.textout(w div 2,len*3,object_name) else bmp.canvas.textout(w div 2,len*3,ExtractFilePath(filename2)); nrmarkX:=trunc(w*5/1000); for c:=0 to nrmarkX do {markers x line} begin x1:=wtext+round((w-bspace*2)*c/nrmarkX); {x scale has bspace pixels left and right space} y1:=h-bspace+5; bmp.canvas.moveto(x1,y1); bmp.canvas.lineto(x1,y1+5); bmp.canvas.textout(x1,y1+5,floattostrf(jd_min+(jd_max-jd_min)*c/nrmarkX,ffFixed,12,5)); end; nrmarkY:=trunc(h*5/400); for c:=0 to nrmarkY do {markers y line} begin x1:=wtext-5; y1:= round(bspace+(h-bspace*2)*c/nrmarkY); {y scale has bspace pixels below and above space} bmp.canvas.moveto(x1,y1); bmp.canvas.lineto(x1-5,y1); bmp.canvas.textout(5,y1,floattostrf(magn_min+(magn_max-magn_min)*c/nrmarkY,ffFixed,5,3)); end; if magn_max>98 then exit; scale:=(h-(bspace*2))/(magn_max-magn_min);{pixel per magnitudes} bmp.Canvas.Pen.Color := clGreen; bmp.Canvas.brush.color :=clGreen; plot_point(textp2,len*3,0); if jd_max=jd_min then jd_min:=jd_min-1; {prevent run time errors for one image where jd_max-jd_min} for c:=0 to length(data[0])-1 do begin plot_point(wtext+round((w-bspace*2)*(data[0,c]-jd_min)/(jd_max-jd_min)), round(bspace+(h-bspace*2)*(data[2,c]-magn_min)/(magn_max-magn_min) ),round(scale*photometry_stdev*2.5)); {chk} end; bmp.Canvas.Pen.Color := clBlue; bmp.Canvas.brush.color :=clBlue; plot_point(textp3,len*3,0); for c:=0 to length(data[0])-1 do begin plot_point(wtext+round((w-bspace*2)*(data[0,c]-jd_min)/(jd_max-jd_min)), round(bspace+(h-bspace*2)*(data[3,c]-magn_min)/(magn_max-magn_min) ),0); {3} end; bmp.Canvas.Pen.Color := clRed; bmp.Canvas.brush.color :=clRed; plot_point(textp1,len*3,0); for c:=0 to length(data[0])-1 do begin plot_point( wtext+round((w-bspace*2)*(data[0,c]-jd_min)/(jd_max-jd_min)), round(bspace+(h-bspace*2)*(data[1,c]-magn_min)/(magn_max-magn_min) ),round(scale*photometry_stdev*2.5)); {var} end; Picture.Bitmap.SetSize(w,h); Picture.Bitmap.Canvas.Draw(0,0, bmp);// move bmp to image picture bmp.Free; end; data:=nil; end; procedure Tform_aavso1.FormClose(Sender: TObject; var CloseAction: TCloseAction ); begin get_info; {form_aavso1.release will be done in the routine calling the form} closeaction:=caFree; {delete form} form_aavso1:=nil; end; procedure Tform_aavso1.FormShow(Sender: TObject); begin obscode1.text:=obscode; if length(mainwindow.Shape_alignment_marker1.HINT)>2 then name_variable1.text:=mainwindow.Shape_alignment_marker1.HINT else if object_name<>'' then name_variable1.text:=object_name else name_variable1.text:=name_var; if length(mainwindow.Shape_alignment_marker2.HINT)>2 then abbreviation_check:=mainwindow.Shape_alignment_marker2.HINT; name_check1.text:=abbreviation_check; if head.filter_name<>'' then filter1.text:=head.filter_name else filter1.itemindex:=0 {TC}; delimiter1.itemindex:=delim_pos; baa_style1.checked:=baa_style; Comparison1.Text:=name_database; aavso_report:=''; plot_graph; end; end. astap_2022.12.09.orig/unit_yuv4mpeg2.pas0000644000175100017510000001030114344743400017076 0ustar debiandebianunit unit_yuv4mpeg2;{writes YUV4MPEG2 uncompressed video file. Pixels are taken from Timage} {$MODE Delphi} {Copyright (C) 2017, 2022 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } interface uses Classes, SysUtils,dialogs,graphics, LCLType, // for RGBtriple IntfGraphics, // TLazIntfImage type fpImage, // TFPColor type; lclintf; function write_yuv4mpeg2_header(filen, framerate: string; colour : boolean; w,h: integer): boolean;{open/create file. Result is false if failure} function write_yuv4mpeg2_frame(colour: boolean; x,y,w,h: integer): boolean; {reads pixels from Timage and writes YUV frames in 444p style, colour or mono. Call this procedure for each image. Result is false if failure} procedure close_yuv4mpeg2; {close file} implementation uses astap_main; var theFile : tfilestream; function write_yuv4mpeg2_header(filen, framerate: string; colour : boolean; w, h {size}: integer): boolean;{open/create file. Result is false if failure} var header: array[0..41] of ansichar; begin result:=false; try TheFile:=tfilestream.Create(filen, fmcreate ); except TheFile.free; exit; end; {'YUV4MPEG2 W0384 H0288 F01:1 Ip A0:0 C444'+#10} {See https://wiki.multimedia.cx/index.php/YUV4MPEG2} if colour then header:=pansichar('YUV4MPEG2 W'+inttostr(w)+' H'+inttostr(h)+' F'+trim(framerate)+':1 Ip A0:0 C444'+#10) else header:=pansichar('YUV4MPEG2 W'+inttostr(w)+' H'+inttostr(h)+' F'+trim(framerate)+':1 Ip A0:0 Cmono'+#10);{width, height,frame rate, interlace progressive, unknown aspect, color space} { Write header } thefile.writebuffer ( header, strlen(Header)); result:=true; end; function write_yuv4mpeg2_frame(colour: boolean;x,y,w,h: integer): boolean; {reads pixels from Timage and writes YUV frames in 444p style, colour or mono. Call this procedure for each image} var k,xx,yy,steps : integer; r,g,b : byte; row : array of byte; xLine : PByteArray; const header: array[0..5] of ansichar=(('F'),('R'),('A'),('M'),('E'),(#10)); begin result:=true; try thefile.writebuffer ( header, strlen(header)); {write FRAME+#10} setlength(row, w {width}); {444 frames: Y0 (full frame), U0,V0 Y1 U1 V1 Y2 U2 V2 422 frames: Y0 (U0+U1)/2 Y1 (V0+V1)/2 Y2 (U2+U3)/2 Y3 (V2+V3)/2} // write full Y frame //YYYY //YYYY //YYYY //YYYY // write full U frame //UUUU //UUUU //UUUU //UUUU // write full V frame //VVVV //VVVV //VVVV //VVVV if colour then steps:=2 {colour} else steps:=0;{mono} {for colour write Y, U, V frame else only Y} for k:=0 to steps {0 or 2} do {do Y,U, V frame, so scan image line 3 times} for yy := y to y+h-1 {height} do begin // scan each timage line xLine:=mainwindow.image1.Picture.Bitmap.ScanLine[yy]; for xx := x to x+w-1 {width} do begin {$ifdef mswindows} B:=xLine^[xx*3]; {3*8=24 bit} G:=xLine^[xx*3+1]; {fast pixel write routine } R:=xLine^[xx*3+2]; {$endif} {$ifdef darwin} {MacOS} R:=xLine^[xx*4+1]; {4*8=32 bit} G:=xLine^[xx*4+2]; {fast pixel write routine } B:=xLine^[xx*4+3]; {$endif} {$ifdef linux} B:=xLine^[xx*4]; {4*8=32 bit} G:=xLine^[xx*4+1]; {fast pixel write routine } R:=xLine^[xx*4+2]; {$endif} if k=0 then row[xx-x]:=trunc(R*77/256 + G*150/256 + B*29/256) {Y frame, Full swing for BT.601} else if k=1 then row[xx-x]:=trunc(R*-43/256 + G*-84/256 + B*127/256 +128) {U frame} else row[xx-x]:=trunc(R*127/256 + G*-106/256 + B*-21/256 +128){V frame} end; thefile.writebuffer(row[0],length(row)); end; except result:=false; row:=nil; exit; end; row:=nil; end; procedure close_yuv4mpeg2; {close file} begin thefile.free; end; end. astap_2022.12.09.orig/astap.res0000644000175100017510000000512014344743400015316 0ustar debiandebian   Your application description. True < <4VS_VERSION_INFO ?StringFileInfox040904E4<CompanyNamewww.hnsky.orgdFileDescriptionAstrometric STAcking Program< LegalCopyrightHan Kleijn< OriginalFilenameastap.exe,ProductNameASTAP.ProductVersionFile version refers to the interface standardComments0FileVersion0.9.3.4$InternalName,LegalTrademarksDVarFileInfo$Translation astap_2022.12.09.orig/unit_star_database.pas0000644000175100017510000024501114344743400020041 0ustar debiandebianunit unit_star_database; {HNSKY reads star databases type .290 and 1476} {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode delphi} interface uses Classes, SysUtils, math; var cos_telescope_dec : double;{store here the cos(telescope_dec) value before and read series} database2 : array[0..(11*10)] of ansichar;{info star database, length 110 char equals 10x11 bytes} // telescope_ra, telescope_dec [radians], contains to center position of the field of interest // field_diameter [radians], FOV diameter of field of interest. This is ignored in searchmode=T} // ra, dec [radians], reported star position // mag2 [magnitude*10] reported star magnitude // result [true/false] if reported true more stars available. If false no more stars available // extra outputs: // naam2, string containing the star Tycho/UCAC4 designation for record size above 7 // database2 : array[0..(11*10)] of ansichar;{text info star database used} // preconditions: // cos_telescope_dec, double variable should contains the cos(telescope_dec) to detect if star read is within the FOV diameter} function select_star_database(database:string;fov:double): boolean; {select a star database, report false if none is found} procedure find_areas(ra1,dec1,fov :double; out area1,area2,area3,area4 :integer; out frac1,frac2,frac3,frac4:double);{find up to four star database areas for the square image. Maximum size is a little lesse the one database field 9.5x9.5 degrees for .290 files and 5.14 x 5.14 degrees for .1476 files} function readdatabase290(telescope_ra,telescope_dec, field_diameter:double; out ra2,dec2, mag2,Bp_Rp : double): boolean; inline;{star 290 file database search} procedure close_star_database;{Close the tfilestream} function open_database(telescope_dec: double; area290: integer): boolean; {open database file} // The format of the 290 star databases is described in the HNSKY help file // // The sky is divided in 290 areas of equal surface except for the poles which are half of that size. // The stars are stored in these 290 separate files and sorted from bright to faint. Each file starts with a header of 110 bytes of which the first part contains // a textual description and the last byte contains the record size 5, 6, 7, 10 or 11 bytes. The source of the utility program to make star databases is provided. // // The 290 area's: // The areas are based on an mathematical method described in a paper of the PHILLIPS LABORATORY called "THE DIVISION OF A CIRCLE OR SPHERICAL SURFACE INTO EQUAL-AREA CELLS OR PIXELS" // by Irving I. Gringorten Penelope J. Yepez on 30 June 1992 // First circles of constant declination are assumed. The first sphere segment defined by circle with number 1 has a height h1 from the pole and a surface of pi*sqr(h1). // If the second circle of constant declination has a sphere segment with a height of 3*h1 then the surface area of the second sphere segment is nine times higher equal pi*sqr(3*h1). // If the area between circle 1 en 2 is divided in 8 segments then these eight have the same area as the area of the first segment. // The same is possible for the third circle by diving it in 16 segments, then in 24, 32, 40, 48, 56, 64 segments. // The area of the third segment is pi*sqr(5*h1) so 25 times larger, where 25 equals 1+8+16. So the sphere segments have a height of h1, 3*h1, 5*h1, 7*h1. // The height of h1=1-sin(declination). All areas are equal area but rectangle. // In HNSKY all area's are a combination of two except for the polar areas to have a more square shape especially around the equator. // The south pole is stored in file 0101.290 Area A2 and A3 are stored in file 02_01.290, area A4 and A5 are stored in file 0202.290. // The distances between the circles is pretty constant and around 10 to 12 degrees. The distance between the area centres is around 15 degrees maximum. // The declinations are calculated by arcsin (1-1/289), arcsin(1-(1+8)/289), arcsin (1-(1+8+16)/289), arcsin(1-(1+8+16+24)/289)... // // Ring declination declination Areas HNSKY // minimum maximum equal area's // size // 0-1 -90 -85.23224404 1 1 {arcsin(1-1/289)} // 1-2 -85.23224404 -75.66348756 8 4 {arcsin(1-(1+8)/289)} // 2-3 -75.66348756 -65.99286637 16 8 {arcsin (1-(1+8+16)/289)} // 4-5 -65.99286637 -56.14497387 24 12 // 6-7 -56.14497387 -46.03163067 32 16 // 7-8 -46.03163067 -35.54307745 40 20 // 8-9 -35.54307745 -24.53348115 48 24 // 7-8 -24.53348115 -12.79440589 56 28 // 8-9 -12.79440589 0 64 32 // 9-10 0 12.79440589 64 32 // 10-11 12.79440589 24.53348115 56 28 // 11-12 24.53348115 35.54307745 48 24 // 12-13 35.54307745 46.03163067 40 20 // 13-14 46.03163067 56.14497387 32 16 // 14-15 56.14497387 65.99286637 24 12 // 15-16 65.99286637 75.66348756 16 8 // 16-17 75.66348756 85.23224404 8 4 // 17-18 85.23224404 90 1 1 // ---------------------------------------------------- // Total 578 290 // The new 1476 format // The sky is devided in 1476 areas of around 5 degrees (90/17.5) using ring of constant declination=DEC. // Each ring is divided by lines of constant RA such that the minimum width in RA is about 5 degrees (deltaRA*cos(DEC). // Declination Declination Ring RA RA step RA step DEC step Files // minimum maximum cells distance distance distance // north[degr] south[degr] // -90.00000000 -87.42857143 0-1 1 0101.1476 // -87.42857143 -82.28571429 1-2 3 5.38377964 16.10799190 -2.57142857 {=90/(2*17.5)} 0201.1476, 0202.1476, 0203.1476 // -82.28571429 -77.14285714 2-3 9 5.36933063 8.90083736 -5.14285714 {=90/17.5} 0301.1476, . . . . . , 0309.1476 // -77.14285714 -72.00000000 3-4 15 5.34050241 7.41640786 -5.14285714 {=90/17.5} 0401.1476, . . . . . , 0415.1476 // -72.00000000 -66.85714286 4-5 21 5.29743419 6.73757197 -5.14285714 0501.1476, . . . . . , 0521.1476 // -66.85714286 -61.71428571 5-6 27 5.24033376 6.31824883 -5.14285714 06 . . . // -61.71428571 -56.57142857 6-7 33 5.16947632 6.00978525 -5.14285714 07 . . . // -56.57142857 -51.42857143 7-8 38 5.21902403 5.90674549 -5.14285714 08 . . . // -51.42857143 -46.28571429 8-9 43 5.21991462 5.78564078 -5.14285714 09 . . . // -46.28571429 -41.14285714 9-10 48 5.18296987 5.64803600 -5.14285714 10 . . . // -41.14285714 -36.00000000 10-11 52 5.21357169 5.60088688 -5.14285714 11 . . . // -36.00000000 -30.85714286 11-12 56 5.20082354 5.51859939 -5.14285714 12 . . . // -30.85714286 -25.71428571 12-13 60 5.15069276 5.40581321 -5.14285714 13 . . . // -25.71428571 -20.57142857 13-14 63 5.14839353 5.34991355 -5.14285714 14 . . . // -20.57142857 -15.42857143 14-15 65 5.18530082 5.33887123 -5.14285714 15 . . . // -15.42857143 -10.28571429 15-16 67 5.17950194 5.28678585 -5.14285714 16 . . . // -10.28571429 -5.14285714 16-17 68 5.20903900 5.27280509 -5.14285714 17 . . . // -5.14285714 0.00000000 17-18 69 5.19638762 5.21739130 -5.14285714 18 . . . // // 0.00000000 5.14285714 18-19 69 5.21739130 5.19638762 -5.14285714 19 . . . // 5.14285714 10.28571429 19-20 68 5.27280509 5.20903900 -5.14285714 20 . . . // 10.28571429 15.42857143 20-21 67 5.28678585 5.17950194 -5.14285714 21 . . . // 15.42857143 20.57142857 21-22 65 5.33887123 5.18530082 -5.14285714 22 . . . // 20.57142857 25.71428571 22-23 63 5.34991355 5.14839353 -5.14285714 23 . . . // 25.71428571 30.85714286 23-24 60 5.40581321 5.15069276 -5.14285714 24 . . . // 30.85714286 36.00000000 24-25 56 5.51859939 5.20082354 -5.14285714 25 . . . // 36.00000000 41.14285714 25-26 52 5.60088688 5.21357169 -5.14285714 26 . . . // 41.14285714 46.28571429 26-27 48 5.64803600 5.18296987 -5.14285714 27 . . . // 46.28571429 51.42857143 27-28 43 5.78564078 5.21991462 -5.14285714 28 . . . // 51.42857143 56.57142857 28-29 38 5.90674549 5.21902403 -5.14285714 29 . . . // 56.57142857 61.71428571 29-30 33 6.00978525 5.16947632 -5.14285714 30 . . . // 61.71428571 66.85714286 30-31 27 6.31824883 5.24033376 -5.14285714 31 . . . // 66.85714286 72.00000000 31-32 21 6.73757197 5.29743419 -5.14285714 32 . . . // 72.00000000 77.14285714 32-33 15 7.41640786 5.34050241 -5.14285714 33 . . . // 77.14285714 82.28571429 33-34 9 8.90083736 5.36933063 -5.14285714 34 . . . // 82.28571429 87.42857143 34-35 3 16.10799190 5.38377964 -5.14285714 3501.1476, 3502.1476, 3503.1476 // 87.42857143 90.00000000 36-37 1 3601.1476 // // // Total 1476 cells/areas //The 1476 star records are the same as for the 290 file format. {Magnitude: The stars are sorted with an accuracy of 0.1 magnitude. Prior to each group a special record is written where RA is $FFFFFF and DEC contains the magnitude} type hnskyhdr290_6 = packed record {G16 for storing Rp-Bp. This format is the same as 290_5 but Gaia color information added in an extra shortint} ra7 : byte; {The RA is stored as a 3 bytes word. The DEC position is stored as a two's complement (=standard), three bytes integer. The resolution of this three byte storage will be for RA: 360*60*60/((256*256*256)-1) = 0.077 arc seconds. For the DEC value it will be: 90*60*60/((128*256*256)-1) = 0.039 arc seconds.} ra8 : byte; ra9 : byte; dec7: byte; dec8: byte; B_R: shortint;{Gaia Bp-Rp} end; hnskyhdr290_5 = packed record {Most compact format, used for Gaia} ra7 : byte; ra8 : byte; ra9 : byte; dec7: byte; dec8: byte; end; // The .290 format divides the sky in 290 area's and 290 corresponding files with the extension .290. The 290 areas of similar area size except for the poles which are half of that size. Each star is stored in a record of 5 bytes. The files start 110 byte header with textual description and the record size binary stored in byte 110. // The .1476 format divides the sky in 1476 area's and 1476 corresponding files with the extension .1476. The 1476 areas of similar area size except for the poles which are half of that size. Each star is stored in a record of 5 bytes. The files start 110 byte header with textual description and the record size binary stored in byte 110. // // The RA is stored as a 3 bytes word. The DEC position is stored as a two's complement (=standard), three bytes integer. The resolution of this three byte storage will be for RA: 360*60*60/((256*256*256)-1) = 0.077 arc seconds. For the DEC value it will be: 90*60*60/((128*256*256)-1) = 0.039 arc seconds. The starts are sorted on magnitude and the magnitude is stored in a byte of the special preceding header with an offset to make all values positive. // // Example of star Sirius RA and DEC position: // The RA position is stored as C3 06 48 equals: (195+6*256+72*256*256)*24/((256*256*256)-1)=6.75247662 hours equals: 6:45:8.9 // The DEC position is stored as D7 39 E8, equals: 215 57 -24. The DEC is then (215+57*256-24*256*256)*90/((128*256*256)-1)=-16.7161401 degrees equals -16d 42 58 // // Stars are sorted from bright to faint in the "0.1" magnitude steps. Within the magnitude range, the stars are additional sorted in DEC. For a series of stars with the same DEC9 value, a header-record // is preceding containing the DEC9 value stored at location DEC7. Since the stars are already sorted in 290 areas, the number of DEC9 values is already limited by a factor 18. // 1476-5 header-record example: FF FF FF 20 06 This indicates the following records have a DEC9 value of 20 -128 offset and a magnitude of (06 - 16)/10 equals -1.0 (new method, +16 offset). // //The shorter records methods become only space efficient for very large star collection of a few million stars. In these large collections many stars can be found with the same magnitude and DEC9 shortint. The Gaia database is only issued in the 1476-5 format of 5 bytes per star. or in an older format 290-6 (V17) or 290-5. The 290-6 has one more byte for the colour information. This is documented in the HNSKY planetarium program help file. //So the record sequence will be as follows: // //header-record {new section will start with a different magnitude and dec9} //record //record //record //record //header-record {new section will start with a different magnitude and dec9} //record //record var name_database : string;{name star database} cache_valid_pos : integer; database_type : integer; var {################# initialised variables #########################} file_open: boolean=false;{file is not open} area2 : double=1*pi/180; {search area} old_area : integer=9999999; cache_position : integer=0; implementation uses astap_main, unit_stack {for memo2_message}; var {################# initialised variables #########################} filenames290 : array[1..290] of string= {} (('0101.290'), ('0201.290'), {combined cells from 8} ('0202.290'), ('0203.290'), ('0204.290'), ('0301.290'), ('0302.290'), ('0303.290'), ('0304.290'), ('0305.290'), ('0306.290'), ('0307.290'), ('0308.290'), ('0401.290'), ('0402.290'), ('0403.290'), ('0404.290'), ('0405.290'), ('0406.290'), ('0407.290'), ('0408.290'), ('0409.290'), ('0410.290'), ('0411.290'), ('0412.290'), ('0501.290'), ('0502.290'), ('0503.290'), ('0504.290'), ('0505.290'), ('0506.290'), ('0507.290'), ('0508.290'), ('0509.290'), ('0510.290'), ('0511.290'), ('0512.290'), ('0513.290'), ('0514.290'), ('0515.290'), ('0516.290'), ('0601.290'), ('0602.290'), ('0603.290'), ('0604.290'), ('0605.290'), ('0606.290'), ('0607.290'), ('0608.290'), ('0609.290'), ('0610.290'), ('0611.290'), ('0612.290'), ('0613.290'), ('0614.290'), ('0615.290'), ('0616.290'), ('0617.290'), ('0618.290'), ('0619.290'), ('0620.290'), ('0701.290'), ('0702.290'), ('0703.290'), ('0704.290'), ('0705.290'), ('0706.290'), ('0707.290'), ('0708.290'), ('0709.290'), ('0710.290'), ('0711.290'), ('0712.290'), ('0713.290'), ('0714.290'), ('0715.290'), ('0716.290'), ('0717.290'), ('0718.290'), ('0719.290'), ('0720.290'), ('0721.290'), ('0722.290'), ('0723.290'), ('0724.290'), ('0801.290'), ('0802.290'), ('0803.290'), ('0804.290'), ('0805.290'), ('0806.290'), ('0807.290'), ('0808.290'), ('0809.290'), ('0810.290'), ('0811.290'), ('0812.290'), ('0813.290'), ('0814.290'), ('0815.290'), ('0816.290'), ('0817.290'), ('0818.290'), ('0819.290'), ('0820.290'), ('0821.290'), ('0822.290'), ('0823.290'), ('0824.290'), ('0825.290'), ('0826.290'), ('0827.290'), ('0828.290'), ('0901.290'), ('0902.290'), ('0903.290'), ('0904.290'), ('0905.290'), ('0906.290'), ('0907.290'), ('0908.290'), ('0909.290'), ('0910.290'), ('0911.290'), ('0912.290'), ('0913.290'), ('0914.290'), ('0915.290'), ('0916.290'), ('0917.290'), ('0918.290'), ('0919.290'), ('0920.290'), ('0921.290'), ('0922.290'), ('0923.290'), ('0924.290'), ('0925.290'), ('0926.290'), ('0927.290'), ('0928.290'), ('0929.290'), ('0930.290'), ('0931.290'), ('0932.290'), ('1001.290'), ('1002.290'), ('1003.290'), ('1004.290'), ('1005.290'), ('1006.290'), ('1007.290'), ('1008.290'), ('1009.290'), ('1010.290'), ('1011.290'), ('1012.290'), ('1013.290'), ('1014.290'), ('1015.290'), ('1016.290'), ('1017.290'), ('1018.290'), ('1019.290'), ('1020.290'), ('1021.290'), ('1022.290'), ('1023.290'), ('1024.290'), ('1025.290'), ('1026.290'), ('1027.290'), ('1028.290'), ('1029.290'), ('1030.290'), ('1031.290'), ('1032.290'), ('1101.290'), ('1102.290'), ('1103.290'), ('1104.290'), ('1105.290'), ('1106.290'), ('1107.290'), ('1108.290'), ('1109.290'), ('1110.290'), ('1111.290'), ('1112.290'), ('1113.290'), ('1114.290'), ('1115.290'), ('1116.290'), ('1117.290'), ('1118.290'), ('1119.290'), ('1120.290'), ('1121.290'), ('1122.290'), ('1123.290'), ('1124.290'), ('1125.290'), ('1126.290'), ('1127.290'), ('1128.290'), ('1201.290'), ('1202.290'), ('1203.290'), ('1204.290'), ('1205.290'), ('1206.290'), ('1207.290'), ('1208.290'), ('1209.290'), ('1210.290'), ('1211.290'), ('1212.290'), ('1213.290'), ('1214.290'), ('1215.290'), ('1216.290'), ('1217.290'), ('1218.290'), ('1219.290'), ('1220.290'), ('1221.290'), ('1222.290'), ('1223.290'), ('1224.290'), ('1301.290'), ('1302.290'), ('1303.290'), ('1304.290'), ('1305.290'), ('1306.290'), ('1307.290'), ('1308.290'), ('1309.290'), ('1310.290'), ('1311.290'), ('1312.290'), ('1313.290'), ('1314.290'), ('1315.290'), ('1316.290'), ('1317.290'), ('1318.290'), ('1319.290'), ('1320.290'), ('1401.290'), ('1402.290'), ('1403.290'), ('1404.290'), ('1405.290'), ('1406.290'), ('1407.290'), ('1408.290'), ('1409.290'), ('1410.290'), ('1411.290'), ('1412.290'), ('1413.290'), ('1414.290'), ('1415.290'), ('1416.290'), ('1501.290'), ('1502.290'), ('1503.290'), ('1504.290'), ('1505.290'), ('1506.290'), ('1507.290'), ('1508.290'), ('1509.290'), ('1510.290'), ('1511.290'), ('1512.290'), ('1601.290'), ('1602.290'), ('1603.290'), ('1604.290'), ('1605.290'), ('1606.290'), ('1607.290'), ('1608.290'), ('1701.290'), ('1702.290'), ('1703.290'), ('1704.290'), ('1801.290')); dec_boundaries : array[0..18] of double= ((-90 * pi/180), (-85.23224404* pi/180), {arcsin(1-1/289)} (-75.66348756* pi/180), {arcsin(1-(1+8)/289)} (-65.99286637* pi/180), {arcsin(1-(1+8+16)/289)} (-56.14497387* pi/180), {arcsin(1-(1+8+16+24)/289)} (-46.03163067* pi/180), (-35.54307745* pi/180), (-24.53348115* pi/180), (-12.79440589* pi/180), (0), (12.79440589* pi/180), (24.53348115* pi/180), (35.54307745* pi/180), (46.03163067* pi/180), (56.14497387* pi/180), (65.99286637* pi/180), (75.66348756* pi/180), (85.23224404* pi/180), (90 * pi/180) ); filenames1476 : array[1..1476] of string= {} (('0101.1476'), ('0201.1476'), {combined cells from 8} ('0202.1476'), ('0203.1476'), ('0301.1476'), ('0302.1476'), ('0303.1476'), ('0304.1476'), ('0305.1476'), ('0306.1476'), ('0307.1476'), ('0308.1476'), ('0309.1476'), ('0401.1476'), ('0402.1476'), ('0403.1476'), ('0404.1476'), ('0405.1476'), ('0406.1476'), ('0407.1476'), ('0408.1476'), ('0409.1476'), ('0410.1476'), ('0411.1476'), ('0412.1476'), ('0413.1476'), ('0414.1476'), ('0415.1476'), ('0501.1476'), ('0502.1476'), ('0503.1476'), ('0504.1476'), ('0505.1476'), ('0506.1476'), ('0507.1476'), ('0508.1476'), ('0509.1476'), ('0510.1476'), ('0511.1476'), ('0512.1476'), ('0513.1476'), ('0514.1476'), ('0515.1476'), ('0516.1476'), ('0517.1476'), ('0518.1476'), ('0519.1476'), ('0520.1476'), ('0521.1476'), ('0601.1476'), ('0602.1476'), ('0603.1476'), ('0604.1476'), ('0605.1476'), ('0606.1476'), ('0607.1476'), ('0608.1476'), ('0609.1476'), ('0610.1476'), ('0611.1476'), ('0612.1476'), ('0613.1476'), ('0614.1476'), ('0615.1476'), ('0616.1476'), ('0617.1476'), ('0618.1476'), ('0619.1476'), ('0620.1476'), ('0621.1476'), ('0622.1476'), ('0623.1476'), ('0624.1476'), ('0625.1476'), ('0626.1476'), ('0627.1476'), ('0701.1476'), ('0702.1476'), ('0703.1476'), ('0704.1476'), ('0705.1476'), ('0706.1476'), ('0707.1476'), ('0708.1476'), ('0709.1476'), ('0710.1476'), ('0711.1476'), ('0712.1476'), ('0713.1476'), ('0714.1476'), ('0715.1476'), ('0716.1476'), ('0717.1476'), ('0718.1476'), ('0719.1476'), ('0720.1476'), ('0721.1476'), ('0722.1476'), ('0723.1476'), ('0724.1476'), ('0725.1476'), ('0726.1476'), ('0727.1476'), ('0728.1476'), ('0729.1476'), ('0730.1476'), ('0731.1476'), ('0732.1476'), ('0733.1476'), ('0801.1476'), ('0802.1476'), ('0803.1476'), ('0804.1476'), ('0805.1476'), ('0806.1476'), ('0807.1476'), ('0808.1476'), ('0809.1476'), ('0810.1476'), ('0811.1476'), ('0812.1476'), ('0813.1476'), ('0814.1476'), ('0815.1476'), ('0816.1476'), ('0817.1476'), ('0818.1476'), ('0819.1476'), ('0820.1476'), ('0821.1476'), ('0822.1476'), ('0823.1476'), ('0824.1476'), ('0825.1476'), ('0826.1476'), ('0827.1476'), ('0828.1476'), ('0829.1476'), ('0830.1476'), ('0831.1476'), ('0832.1476'), ('0833.1476'), ('0834.1476'), ('0835.1476'), ('0836.1476'), ('0837.1476'), ('0838.1476'), ('0901.1476'), ('0902.1476'), ('0903.1476'), ('0904.1476'), ('0905.1476'), ('0906.1476'), ('0907.1476'), ('0908.1476'), ('0909.1476'), ('0910.1476'), ('0911.1476'), ('0912.1476'), ('0913.1476'), ('0914.1476'), ('0915.1476'), ('0916.1476'), ('0917.1476'), ('0918.1476'), ('0919.1476'), ('0920.1476'), ('0921.1476'), ('0922.1476'), ('0923.1476'), ('0924.1476'), ('0925.1476'), ('0926.1476'), ('0927.1476'), ('0928.1476'), ('0929.1476'), ('0930.1476'), ('0931.1476'), ('0932.1476'), ('0933.1476'), ('0934.1476'), ('0935.1476'), ('0936.1476'), ('0937.1476'), ('0938.1476'), ('0939.1476'), ('0940.1476'), ('0941.1476'), ('0942.1476'), ('0943.1476'), ('1001.1476'), ('1002.1476'), ('1003.1476'), ('1004.1476'), ('1005.1476'), ('1006.1476'), ('1007.1476'), ('1008.1476'), ('1009.1476'), ('1010.1476'), ('1011.1476'), ('1012.1476'), ('1013.1476'), ('1014.1476'), ('1015.1476'), ('1016.1476'), ('1017.1476'), ('1018.1476'), ('1019.1476'), ('1020.1476'), ('1021.1476'), ('1022.1476'), ('1023.1476'), ('1024.1476'), ('1025.1476'), ('1026.1476'), ('1027.1476'), ('1028.1476'), ('1029.1476'), ('1030.1476'), ('1031.1476'), ('1032.1476'), ('1033.1476'), ('1034.1476'), ('1035.1476'), ('1036.1476'), ('1037.1476'), ('1038.1476'), ('1039.1476'), ('1040.1476'), ('1041.1476'), ('1042.1476'), ('1043.1476'), ('1044.1476'), ('1045.1476'), ('1046.1476'), ('1047.1476'), ('1048.1476'), ('1101.1476'), ('1102.1476'), ('1103.1476'), ('1104.1476'), ('1105.1476'), ('1106.1476'), ('1107.1476'), ('1108.1476'), ('1109.1476'), ('1110.1476'), ('1111.1476'), ('1112.1476'), ('1113.1476'), ('1114.1476'), ('1115.1476'), ('1116.1476'), ('1117.1476'), ('1118.1476'), ('1119.1476'), ('1120.1476'), ('1121.1476'), ('1122.1476'), ('1123.1476'), ('1124.1476'), ('1125.1476'), ('1126.1476'), ('1127.1476'), ('1128.1476'), ('1129.1476'), ('1130.1476'), ('1131.1476'), ('1132.1476'), ('1133.1476'), ('1134.1476'), ('1135.1476'), ('1136.1476'), ('1137.1476'), ('1138.1476'), ('1139.1476'), ('1140.1476'), ('1141.1476'), ('1142.1476'), ('1143.1476'), ('1144.1476'), ('1145.1476'), ('1146.1476'), ('1147.1476'), ('1148.1476'), ('1149.1476'), ('1150.1476'), ('1151.1476'), ('1152.1476'), ('1201.1476'), ('1202.1476'), ('1203.1476'), ('1204.1476'), ('1205.1476'), ('1206.1476'), ('1207.1476'), ('1208.1476'), ('1209.1476'), ('1210.1476'), ('1211.1476'), ('1212.1476'), ('1213.1476'), ('1214.1476'), ('1215.1476'), ('1216.1476'), ('1217.1476'), ('1218.1476'), ('1219.1476'), ('1220.1476'), ('1221.1476'), ('1222.1476'), ('1223.1476'), ('1224.1476'), ('1225.1476'), ('1226.1476'), ('1227.1476'), ('1228.1476'), ('1229.1476'), ('1230.1476'), ('1231.1476'), ('1232.1476'), ('1233.1476'), ('1234.1476'), ('1235.1476'), ('1236.1476'), ('1237.1476'), ('1238.1476'), ('1239.1476'), ('1240.1476'), ('1241.1476'), ('1242.1476'), ('1243.1476'), ('1244.1476'), ('1245.1476'), ('1246.1476'), ('1247.1476'), ('1248.1476'), ('1249.1476'), ('1250.1476'), ('1251.1476'), ('1252.1476'), ('1253.1476'), ('1254.1476'), ('1255.1476'), ('1256.1476'), ('1301.1476'), ('1302.1476'), ('1303.1476'), ('1304.1476'), ('1305.1476'), ('1306.1476'), ('1307.1476'), ('1308.1476'), ('1309.1476'), ('1310.1476'), ('1311.1476'), ('1312.1476'), ('1313.1476'), ('1314.1476'), ('1315.1476'), ('1316.1476'), ('1317.1476'), ('1318.1476'), ('1319.1476'), ('1320.1476'), ('1321.1476'), ('1322.1476'), ('1323.1476'), ('1324.1476'), ('1325.1476'), ('1326.1476'), ('1327.1476'), ('1328.1476'), ('1329.1476'), ('1330.1476'), ('1331.1476'), ('1332.1476'), ('1333.1476'), ('1334.1476'), ('1335.1476'), ('1336.1476'), ('1337.1476'), ('1338.1476'), ('1339.1476'), ('1340.1476'), ('1341.1476'), ('1342.1476'), ('1343.1476'), ('1344.1476'), ('1345.1476'), ('1346.1476'), ('1347.1476'), ('1348.1476'), ('1349.1476'), ('1350.1476'), ('1351.1476'), ('1352.1476'), ('1353.1476'), ('1354.1476'), ('1355.1476'), ('1356.1476'), ('1357.1476'), ('1358.1476'), ('1359.1476'), ('1360.1476'), ('1401.1476'), ('1402.1476'), ('1403.1476'), ('1404.1476'), ('1405.1476'), ('1406.1476'), ('1407.1476'), ('1408.1476'), ('1409.1476'), ('1410.1476'), ('1411.1476'), ('1412.1476'), ('1413.1476'), ('1414.1476'), ('1415.1476'), ('1416.1476'), ('1417.1476'), ('1418.1476'), ('1419.1476'), ('1420.1476'), ('1421.1476'), ('1422.1476'), ('1423.1476'), ('1424.1476'), ('1425.1476'), ('1426.1476'), ('1427.1476'), ('1428.1476'), ('1429.1476'), ('1430.1476'), ('1431.1476'), ('1432.1476'), ('1433.1476'), ('1434.1476'), ('1435.1476'), ('1436.1476'), ('1437.1476'), ('1438.1476'), ('1439.1476'), ('1440.1476'), ('1441.1476'), ('1442.1476'), ('1443.1476'), ('1444.1476'), ('1445.1476'), ('1446.1476'), ('1447.1476'), ('1448.1476'), ('1449.1476'), ('1450.1476'), ('1451.1476'), ('1452.1476'), ('1453.1476'), ('1454.1476'), ('1455.1476'), ('1456.1476'), ('1457.1476'), ('1458.1476'), ('1459.1476'), ('1460.1476'), ('1461.1476'), ('1462.1476'), ('1463.1476'), ('1501.1476'), ('1502.1476'), ('1503.1476'), ('1504.1476'), ('1505.1476'), ('1506.1476'), ('1507.1476'), ('1508.1476'), ('1509.1476'), ('1510.1476'), ('1511.1476'), ('1512.1476'), ('1513.1476'), ('1514.1476'), ('1515.1476'), ('1516.1476'), ('1517.1476'), ('1518.1476'), ('1519.1476'), ('1520.1476'), ('1521.1476'), ('1522.1476'), ('1523.1476'), ('1524.1476'), ('1525.1476'), ('1526.1476'), ('1527.1476'), ('1528.1476'), ('1529.1476'), ('1530.1476'), ('1531.1476'), ('1532.1476'), ('1533.1476'), ('1534.1476'), ('1535.1476'), ('1536.1476'), ('1537.1476'), ('1538.1476'), ('1539.1476'), ('1540.1476'), ('1541.1476'), ('1542.1476'), ('1543.1476'), ('1544.1476'), ('1545.1476'), ('1546.1476'), ('1547.1476'), ('1548.1476'), ('1549.1476'), ('1550.1476'), ('1551.1476'), ('1552.1476'), ('1553.1476'), ('1554.1476'), ('1555.1476'), ('1556.1476'), ('1557.1476'), ('1558.1476'), ('1559.1476'), ('1560.1476'), ('1561.1476'), ('1562.1476'), ('1563.1476'), ('1564.1476'), ('1565.1476'), ('1601.1476'), ('1602.1476'), ('1603.1476'), ('1604.1476'), ('1605.1476'), ('1606.1476'), ('1607.1476'), ('1608.1476'), ('1609.1476'), ('1610.1476'), ('1611.1476'), ('1612.1476'), ('1613.1476'), ('1614.1476'), ('1615.1476'), ('1616.1476'), ('1617.1476'), ('1618.1476'), ('1619.1476'), ('1620.1476'), ('1621.1476'), ('1622.1476'), ('1623.1476'), ('1624.1476'), ('1625.1476'), ('1626.1476'), ('1627.1476'), ('1628.1476'), ('1629.1476'), ('1630.1476'), ('1631.1476'), ('1632.1476'), ('1633.1476'), ('1634.1476'), ('1635.1476'), ('1636.1476'), ('1637.1476'), ('1638.1476'), ('1639.1476'), ('1640.1476'), ('1641.1476'), ('1642.1476'), ('1643.1476'), ('1644.1476'), ('1645.1476'), ('1646.1476'), ('1647.1476'), ('1648.1476'), ('1649.1476'), ('1650.1476'), ('1651.1476'), ('1652.1476'), ('1653.1476'), ('1654.1476'), ('1655.1476'), ('1656.1476'), ('1657.1476'), ('1658.1476'), ('1659.1476'), ('1660.1476'), ('1661.1476'), ('1662.1476'), ('1663.1476'), ('1664.1476'), ('1665.1476'), ('1666.1476'), ('1667.1476'), ('1701.1476'), ('1702.1476'), ('1703.1476'), ('1704.1476'), ('1705.1476'), ('1706.1476'), ('1707.1476'), ('1708.1476'), ('1709.1476'), ('1710.1476'), ('1711.1476'), ('1712.1476'), ('1713.1476'), ('1714.1476'), ('1715.1476'), ('1716.1476'), ('1717.1476'), ('1718.1476'), ('1719.1476'), ('1720.1476'), ('1721.1476'), ('1722.1476'), ('1723.1476'), ('1724.1476'), ('1725.1476'), ('1726.1476'), ('1727.1476'), ('1728.1476'), ('1729.1476'), ('1730.1476'), ('1731.1476'), ('1732.1476'), ('1733.1476'), ('1734.1476'), ('1735.1476'), ('1736.1476'), ('1737.1476'), ('1738.1476'), ('1739.1476'), ('1740.1476'), ('1741.1476'), ('1742.1476'), ('1743.1476'), ('1744.1476'), ('1745.1476'), ('1746.1476'), ('1747.1476'), ('1748.1476'), ('1749.1476'), ('1750.1476'), ('1751.1476'), ('1752.1476'), ('1753.1476'), ('1754.1476'), ('1755.1476'), ('1756.1476'), ('1757.1476'), ('1758.1476'), ('1759.1476'), ('1760.1476'), ('1761.1476'), ('1762.1476'), ('1763.1476'), ('1764.1476'), ('1765.1476'), ('1766.1476'), ('1767.1476'), ('1768.1476'), ('1801.1476'), ('1802.1476'), ('1803.1476'), ('1804.1476'), ('1805.1476'), ('1806.1476'), ('1807.1476'), ('1808.1476'), ('1809.1476'), ('1810.1476'), ('1811.1476'), ('1812.1476'), ('1813.1476'), ('1814.1476'), ('1815.1476'), ('1816.1476'), ('1817.1476'), ('1818.1476'), ('1819.1476'), ('1820.1476'), ('1821.1476'), ('1822.1476'), ('1823.1476'), ('1824.1476'), ('1825.1476'), ('1826.1476'), ('1827.1476'), ('1828.1476'), ('1829.1476'), ('1830.1476'), ('1831.1476'), ('1832.1476'), ('1833.1476'), ('1834.1476'), ('1835.1476'), ('1836.1476'), ('1837.1476'), ('1838.1476'), ('1839.1476'), ('1840.1476'), ('1841.1476'), ('1842.1476'), ('1843.1476'), ('1844.1476'), ('1845.1476'), ('1846.1476'), ('1847.1476'), ('1848.1476'), ('1849.1476'), ('1850.1476'), ('1851.1476'), ('1852.1476'), ('1853.1476'), ('1854.1476'), ('1855.1476'), ('1856.1476'), ('1857.1476'), ('1858.1476'), ('1859.1476'), ('1860.1476'), ('1861.1476'), ('1862.1476'), ('1863.1476'), ('1864.1476'), ('1865.1476'), ('1866.1476'), ('1867.1476'), ('1868.1476'), ('1869.1476'), ('1901.1476'), ('1902.1476'), ('1903.1476'), ('1904.1476'), ('1905.1476'), ('1906.1476'), ('1907.1476'), ('1908.1476'), ('1909.1476'), ('1910.1476'), ('1911.1476'), ('1912.1476'), ('1913.1476'), ('1914.1476'), ('1915.1476'), ('1916.1476'), ('1917.1476'), ('1918.1476'), ('1919.1476'), ('1920.1476'), ('1921.1476'), ('1922.1476'), ('1923.1476'), ('1924.1476'), ('1925.1476'), ('1926.1476'), ('1927.1476'), ('1928.1476'), ('1929.1476'), ('1930.1476'), ('1931.1476'), ('1932.1476'), ('1933.1476'), ('1934.1476'), ('1935.1476'), ('1936.1476'), ('1937.1476'), ('1938.1476'), ('1939.1476'), ('1940.1476'), ('1941.1476'), ('1942.1476'), ('1943.1476'), ('1944.1476'), ('1945.1476'), ('1946.1476'), ('1947.1476'), ('1948.1476'), ('1949.1476'), ('1950.1476'), ('1951.1476'), ('1952.1476'), ('1953.1476'), ('1954.1476'), ('1955.1476'), ('1956.1476'), ('1957.1476'), ('1958.1476'), ('1959.1476'), ('1960.1476'), ('1961.1476'), ('1962.1476'), ('1963.1476'), ('1964.1476'), ('1965.1476'), ('1966.1476'), ('1967.1476'), ('1968.1476'), ('1969.1476'), ('2001.1476'), ('2002.1476'), ('2003.1476'), ('2004.1476'), ('2005.1476'), ('2006.1476'), ('2007.1476'), ('2008.1476'), ('2009.1476'), ('2010.1476'), ('2011.1476'), ('2012.1476'), ('2013.1476'), ('2014.1476'), ('2015.1476'), ('2016.1476'), ('2017.1476'), ('2018.1476'), ('2019.1476'), ('2020.1476'), ('2021.1476'), ('2022.1476'), ('2023.1476'), ('2024.1476'), ('2025.1476'), ('2026.1476'), ('2027.1476'), ('2028.1476'), ('2029.1476'), ('2030.1476'), ('2031.1476'), ('2032.1476'), ('2033.1476'), ('2034.1476'), ('2035.1476'), ('2036.1476'), ('2037.1476'), ('2038.1476'), ('2039.1476'), ('2040.1476'), ('2041.1476'), ('2042.1476'), ('2043.1476'), ('2044.1476'), ('2045.1476'), ('2046.1476'), ('2047.1476'), ('2048.1476'), ('2049.1476'), ('2050.1476'), ('2051.1476'), ('2052.1476'), ('2053.1476'), ('2054.1476'), ('2055.1476'), ('2056.1476'), ('2057.1476'), ('2058.1476'), ('2059.1476'), ('2060.1476'), ('2061.1476'), ('2062.1476'), ('2063.1476'), ('2064.1476'), ('2065.1476'), ('2066.1476'), ('2067.1476'), ('2068.1476'), ('2101.1476'), ('2102.1476'), ('2103.1476'), ('2104.1476'), ('2105.1476'), ('2106.1476'), ('2107.1476'), ('2108.1476'), ('2109.1476'), ('2110.1476'), ('2111.1476'), ('2112.1476'), ('2113.1476'), ('2114.1476'), ('2115.1476'), ('2116.1476'), ('2117.1476'), ('2118.1476'), ('2119.1476'), ('2120.1476'), ('2121.1476'), ('2122.1476'), ('2123.1476'), ('2124.1476'), ('2125.1476'), ('2126.1476'), ('2127.1476'), ('2128.1476'), ('2129.1476'), ('2130.1476'), ('2131.1476'), ('2132.1476'), ('2133.1476'), ('2134.1476'), ('2135.1476'), ('2136.1476'), ('2137.1476'), ('2138.1476'), ('2139.1476'), ('2140.1476'), ('2141.1476'), ('2142.1476'), ('2143.1476'), ('2144.1476'), ('2145.1476'), ('2146.1476'), ('2147.1476'), ('2148.1476'), ('2149.1476'), ('2150.1476'), ('2151.1476'), ('2152.1476'), ('2153.1476'), ('2154.1476'), ('2155.1476'), ('2156.1476'), ('2157.1476'), ('2158.1476'), ('2159.1476'), ('2160.1476'), ('2161.1476'), ('2162.1476'), ('2163.1476'), ('2164.1476'), ('2165.1476'), ('2166.1476'), ('2167.1476'), ('2201.1476'), ('2202.1476'), ('2203.1476'), ('2204.1476'), ('2205.1476'), ('2206.1476'), ('2207.1476'), ('2208.1476'), ('2209.1476'), ('2210.1476'), ('2211.1476'), ('2212.1476'), ('2213.1476'), ('2214.1476'), ('2215.1476'), ('2216.1476'), ('2217.1476'), ('2218.1476'), ('2219.1476'), ('2220.1476'), ('2221.1476'), ('2222.1476'), ('2223.1476'), ('2224.1476'), ('2225.1476'), ('2226.1476'), ('2227.1476'), ('2228.1476'), ('2229.1476'), ('2230.1476'), ('2231.1476'), ('2232.1476'), ('2233.1476'), ('2234.1476'), ('2235.1476'), ('2236.1476'), ('2237.1476'), ('2238.1476'), ('2239.1476'), ('2240.1476'), ('2241.1476'), ('2242.1476'), ('2243.1476'), ('2244.1476'), ('2245.1476'), ('2246.1476'), ('2247.1476'), ('2248.1476'), ('2249.1476'), ('2250.1476'), ('2251.1476'), ('2252.1476'), ('2253.1476'), ('2254.1476'), ('2255.1476'), ('2256.1476'), ('2257.1476'), ('2258.1476'), ('2259.1476'), ('2260.1476'), ('2261.1476'), ('2262.1476'), ('2263.1476'), ('2264.1476'), ('2265.1476'), ('2301.1476'), ('2302.1476'), ('2303.1476'), ('2304.1476'), ('2305.1476'), ('2306.1476'), ('2307.1476'), ('2308.1476'), ('2309.1476'), ('2310.1476'), ('2311.1476'), ('2312.1476'), ('2313.1476'), ('2314.1476'), ('2315.1476'), ('2316.1476'), ('2317.1476'), ('2318.1476'), ('2319.1476'), ('2320.1476'), ('2321.1476'), ('2322.1476'), ('2323.1476'), ('2324.1476'), ('2325.1476'), ('2326.1476'), ('2327.1476'), ('2328.1476'), ('2329.1476'), ('2330.1476'), ('2331.1476'), ('2332.1476'), ('2333.1476'), ('2334.1476'), ('2335.1476'), ('2336.1476'), ('2337.1476'), ('2338.1476'), ('2339.1476'), ('2340.1476'), ('2341.1476'), ('2342.1476'), ('2343.1476'), ('2344.1476'), ('2345.1476'), ('2346.1476'), ('2347.1476'), ('2348.1476'), ('2349.1476'), ('2350.1476'), ('2351.1476'), ('2352.1476'), ('2353.1476'), ('2354.1476'), ('2355.1476'), ('2356.1476'), ('2357.1476'), ('2358.1476'), ('2359.1476'), ('2360.1476'), ('2361.1476'), ('2362.1476'), ('2363.1476'), ('2401.1476'), ('2402.1476'), ('2403.1476'), ('2404.1476'), ('2405.1476'), ('2406.1476'), ('2407.1476'), ('2408.1476'), ('2409.1476'), ('2410.1476'), ('2411.1476'), ('2412.1476'), ('2413.1476'), ('2414.1476'), ('2415.1476'), ('2416.1476'), ('2417.1476'), ('2418.1476'), ('2419.1476'), ('2420.1476'), ('2421.1476'), ('2422.1476'), ('2423.1476'), ('2424.1476'), ('2425.1476'), ('2426.1476'), ('2427.1476'), ('2428.1476'), ('2429.1476'), ('2430.1476'), ('2431.1476'), ('2432.1476'), ('2433.1476'), ('2434.1476'), ('2435.1476'), ('2436.1476'), ('2437.1476'), ('2438.1476'), ('2439.1476'), ('2440.1476'), ('2441.1476'), ('2442.1476'), ('2443.1476'), ('2444.1476'), ('2445.1476'), ('2446.1476'), ('2447.1476'), ('2448.1476'), ('2449.1476'), ('2450.1476'), ('2451.1476'), ('2452.1476'), ('2453.1476'), ('2454.1476'), ('2455.1476'), ('2456.1476'), ('2457.1476'), ('2458.1476'), ('2459.1476'), ('2460.1476'), ('2501.1476'), ('2502.1476'), ('2503.1476'), ('2504.1476'), ('2505.1476'), ('2506.1476'), ('2507.1476'), ('2508.1476'), ('2509.1476'), ('2510.1476'), ('2511.1476'), ('2512.1476'), ('2513.1476'), ('2514.1476'), ('2515.1476'), ('2516.1476'), ('2517.1476'), ('2518.1476'), ('2519.1476'), ('2520.1476'), ('2521.1476'), ('2522.1476'), ('2523.1476'), ('2524.1476'), ('2525.1476'), ('2526.1476'), ('2527.1476'), ('2528.1476'), ('2529.1476'), ('2530.1476'), ('2531.1476'), ('2532.1476'), ('2533.1476'), ('2534.1476'), ('2535.1476'), ('2536.1476'), ('2537.1476'), ('2538.1476'), ('2539.1476'), ('2540.1476'), ('2541.1476'), ('2542.1476'), ('2543.1476'), ('2544.1476'), ('2545.1476'), ('2546.1476'), ('2547.1476'), ('2548.1476'), ('2549.1476'), ('2550.1476'), ('2551.1476'), ('2552.1476'), ('2553.1476'), ('2554.1476'), ('2555.1476'), ('2556.1476'), ('2601.1476'), ('2602.1476'), ('2603.1476'), ('2604.1476'), ('2605.1476'), ('2606.1476'), ('2607.1476'), ('2608.1476'), ('2609.1476'), ('2610.1476'), ('2611.1476'), ('2612.1476'), ('2613.1476'), ('2614.1476'), ('2615.1476'), ('2616.1476'), ('2617.1476'), ('2618.1476'), ('2619.1476'), ('2620.1476'), ('2621.1476'), ('2622.1476'), ('2623.1476'), ('2624.1476'), ('2625.1476'), ('2626.1476'), ('2627.1476'), ('2628.1476'), ('2629.1476'), ('2630.1476'), ('2631.1476'), ('2632.1476'), ('2633.1476'), ('2634.1476'), ('2635.1476'), ('2636.1476'), ('2637.1476'), ('2638.1476'), ('2639.1476'), ('2640.1476'), ('2641.1476'), ('2642.1476'), ('2643.1476'), ('2644.1476'), ('2645.1476'), ('2646.1476'), ('2647.1476'), ('2648.1476'), ('2649.1476'), ('2650.1476'), ('2651.1476'), ('2652.1476'), ('2701.1476'), ('2702.1476'), ('2703.1476'), ('2704.1476'), ('2705.1476'), ('2706.1476'), ('2707.1476'), ('2708.1476'), ('2709.1476'), ('2710.1476'), ('2711.1476'), ('2712.1476'), ('2713.1476'), ('2714.1476'), ('2715.1476'), ('2716.1476'), ('2717.1476'), ('2718.1476'), ('2719.1476'), ('2720.1476'), ('2721.1476'), ('2722.1476'), ('2723.1476'), ('2724.1476'), ('2725.1476'), ('2726.1476'), ('2727.1476'), ('2728.1476'), ('2729.1476'), ('2730.1476'), ('2731.1476'), ('2732.1476'), ('2733.1476'), ('2734.1476'), ('2735.1476'), ('2736.1476'), ('2737.1476'), ('2738.1476'), ('2739.1476'), ('2740.1476'), ('2741.1476'), ('2742.1476'), ('2743.1476'), ('2744.1476'), ('2745.1476'), ('2746.1476'), ('2747.1476'), ('2748.1476'), ('2801.1476'), ('2802.1476'), ('2803.1476'), ('2804.1476'), ('2805.1476'), ('2806.1476'), ('2807.1476'), ('2808.1476'), ('2809.1476'), ('2810.1476'), ('2811.1476'), ('2812.1476'), ('2813.1476'), ('2814.1476'), ('2815.1476'), ('2816.1476'), ('2817.1476'), ('2818.1476'), ('2819.1476'), ('2820.1476'), ('2821.1476'), ('2822.1476'), ('2823.1476'), ('2824.1476'), ('2825.1476'), ('2826.1476'), ('2827.1476'), ('2828.1476'), ('2829.1476'), ('2830.1476'), ('2831.1476'), ('2832.1476'), ('2833.1476'), ('2834.1476'), ('2835.1476'), ('2836.1476'), ('2837.1476'), ('2838.1476'), ('2839.1476'), ('2840.1476'), ('2841.1476'), ('2842.1476'), ('2843.1476'), ('2901.1476'), ('2902.1476'), ('2903.1476'), ('2904.1476'), ('2905.1476'), ('2906.1476'), ('2907.1476'), ('2908.1476'), ('2909.1476'), ('2910.1476'), ('2911.1476'), ('2912.1476'), ('2913.1476'), ('2914.1476'), ('2915.1476'), ('2916.1476'), ('2917.1476'), ('2918.1476'), ('2919.1476'), ('2920.1476'), ('2921.1476'), ('2922.1476'), ('2923.1476'), ('2924.1476'), ('2925.1476'), ('2926.1476'), ('2927.1476'), ('2928.1476'), ('2929.1476'), ('2930.1476'), ('2931.1476'), ('2932.1476'), ('2933.1476'), ('2934.1476'), ('2935.1476'), ('2936.1476'), ('2937.1476'), ('2938.1476'), ('3001.1476'), ('3002.1476'), ('3003.1476'), ('3004.1476'), ('3005.1476'), ('3006.1476'), ('3007.1476'), ('3008.1476'), ('3009.1476'), ('3010.1476'), ('3011.1476'), ('3012.1476'), ('3013.1476'), ('3014.1476'), ('3015.1476'), ('3016.1476'), ('3017.1476'), ('3018.1476'), ('3019.1476'), ('3020.1476'), ('3021.1476'), ('3022.1476'), ('3023.1476'), ('3024.1476'), ('3025.1476'), ('3026.1476'), ('3027.1476'), ('3028.1476'), ('3029.1476'), ('3030.1476'), ('3031.1476'), ('3032.1476'), ('3033.1476'), ('3101.1476'), ('3102.1476'), ('3103.1476'), ('3104.1476'), ('3105.1476'), ('3106.1476'), ('3107.1476'), ('3108.1476'), ('3109.1476'), ('3110.1476'), ('3111.1476'), ('3112.1476'), ('3113.1476'), ('3114.1476'), ('3115.1476'), ('3116.1476'), ('3117.1476'), ('3118.1476'), ('3119.1476'), ('3120.1476'), ('3121.1476'), ('3122.1476'), ('3123.1476'), ('3124.1476'), ('3125.1476'), ('3126.1476'), ('3127.1476'), ('3201.1476'), ('3202.1476'), ('3203.1476'), ('3204.1476'), ('3205.1476'), ('3206.1476'), ('3207.1476'), ('3208.1476'), ('3209.1476'), ('3210.1476'), ('3211.1476'), ('3212.1476'), ('3213.1476'), ('3214.1476'), ('3215.1476'), ('3216.1476'), ('3217.1476'), ('3218.1476'), ('3219.1476'), ('3220.1476'), ('3221.1476'), ('3301.1476'), ('3302.1476'), ('3303.1476'), ('3304.1476'), ('3305.1476'), ('3306.1476'), ('3307.1476'), ('3308.1476'), ('3309.1476'), ('3310.1476'), ('3311.1476'), ('3312.1476'), ('3313.1476'), ('3314.1476'), ('3315.1476'), ('3401.1476'), ('3402.1476'), ('3403.1476'), ('3404.1476'), ('3405.1476'), ('3406.1476'), ('3407.1476'), ('3408.1476'), ('3409.1476'), ('3501.1476'), ('3502.1476'), ('3503.1476'), ('3601.1476') ); const {1476 boundaries} Stepsize=90/17.5;{5.142857143 degrees} var {################# initialised variables #########################} dec_boundaries1476 : array[0..36] of double= (-90*pi/180, -87.42857143*pi/180, -82.28571429*pi/180, -77.14285714*pi/180, -72*pi/180, -66.85714286*pi/180, -61.71428571*pi/180, -56.57142857*pi/180, -51.42857143*pi/180, -46.28571429*pi/180, -41.14285714*pi/180, -36*pi/180, -30.85714286*pi/180, -25.71428571*pi/180, -20.57142857*pi/180, -15.42857143*pi/180, -10.28571429*pi/180, -5.142857143*pi/180, 0*pi/180, 5.142857143*pi/180, 10.28571429*pi/180, 15.42857143*pi/180, 20.57142857*pi/180, 25.71428571*pi/180, 30.85714286*pi/180, 36*pi/180, 41.14285714*pi/180, 46.28571429*pi/180, 51.42857143*pi/180, 56.57142857*pi/180, 61.71428571*pi/180, 66.85714286*pi/180, 72*pi/180, 77.14285714*pi/180, 82.28571429*pi/180, 87.42857143*pi/180, 90*pi/180); var {################# initialised variables #########################} record_size:integer=11;{default} var p6 : ^hnskyhdr290_6; { pointer to hnsky record } p5 : ^hnskyhdr290_5; { pointer to hnsky record } dec9_storage: shortint; buf2: array[1..11] of byte; {read buffer stars} thefile_stars : tfilestream; cache_array : array of byte;{Maximum 53 mbyte for largest G18 file} cache_size : integer; procedure area_and_boundaries(ra1,dec1 :double; var area_nr: integer; var spaceE,spaceW,spaceN,spaceS: double); {For a ra, dec position find the star database area number and the corresponding boundary distances N, E, W, S} var rot,cos_dec1 :double; begin cos_dec1:=cos(dec1); if dec1>dec_boundaries[17] then begin area_nr:=290; {celestial north pole area} spaceS:=dec1-dec_boundaries[17]; spaceN:=dec_boundaries[18]{90}-dec_boundaries[17];{minimum, could go beyond the celestical pole so above +90 degrees} spaceW:=pi*2; spaceE:=pi*2; end else if dec1>dec_boundaries[16] then {4x RA} begin rot:=ra1*4/(2*pi); area_nr:=1+4+8+12+16+20+24+28+32+32+28+24+20+16+12+8+1+trunc(rot); spaceS:=dec1-dec_boundaries[16]; spaceN:=dec_boundaries[17]-dec1; cos_dec1:=cos(dec1); spaceW:=(pi*2/4) * frac(rot)*cos_dec1; {ra decrease in direction west} spaceE:=(pi*2/4) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[15] then {8x RA} begin rot:=ra1*8/(2*pi); area_nr:=1+4+8+12+16+20+24+28+32+32+28+24+20+16+12+1+trunc(rot); spaceS:=dec1-dec_boundaries[15]; spaceN:=dec_boundaries[16]-dec1; cos_dec1:=cos(dec1); spaceW:=(pi*2/8) * frac(rot)*cos_dec1; spaceE:=(pi*2/8) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[14] then {12x RA} begin rot:=ra1*12/(2*pi); area_nr:=1+4+8+12+16+20+24+28+32+32+28+24+20+16+1+trunc(rot); spaceS:=dec1-dec_boundaries[14]; spaceN:=dec_boundaries[15]-dec1; spaceW:=(pi*2/12) * frac(rot)*cos_dec1; spaceE:=(pi*2/12) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[13] then {16x RA} begin rot:=ra1*16/(2*pi); area_nr:=1+4+8+12+16+20+24+28+32+32+28+24+20+1+trunc(rot); spaceS:=dec1-dec_boundaries[13]; spaceN:=dec_boundaries[14]-dec1; spaceW:=(pi*2/16) * frac(rot)*cos_dec1; spaceE:=(pi*2/16) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[12] then {20x RA} begin rot:=ra1*20/(2*pi); area_nr:=1+4+8+12+16+20+24+28+32+32+28+24+1+trunc(rot); spaceS:=dec1-dec_boundaries[12]; spaceN:=dec_boundaries[13]-dec1; spaceW:=(pi*2/20) * frac(rot)*cos_dec1; spaceE:=(pi*2/20) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[11] then {24x RA} begin rot:=ra1*24/(2*pi); area_nr:=1+4+8+12+16+20+24+28+32+32+28+1+trunc(rot); spaceS:=dec1-dec_boundaries[11]; spaceN:=dec_boundaries[12]-dec1; spaceW:=(pi*2/24) * frac(rot)*cos_dec1; spaceE:=(pi*2/24) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[10] then {28x RA} begin rot:=ra1*28/(2*pi); area_nr:=1+4+8+12+16+20+24+28+32+32+1+trunc(rot); spaceS:=dec1-dec_boundaries[10]; spaceN:=dec_boundaries[11]-dec1; spaceW:=(pi*2/28) * frac(rot)*cos_dec1; spaceE:=(pi*2/28) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[9] then {32x RA} begin rot:=ra1*32/(2*pi); area_nr:=1+4+8+12+16+20+24+28+32+1+trunc(rot); spaceS:=dec1-dec_boundaries[9]; spaceN:=dec_boundaries[10]-dec1; spaceW:=(pi*2/32) * frac(rot)*cos_dec1; spaceE:=(pi*2/32) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[8] then {32x RA} begin rot:=ra1*32/(2*pi); area_nr:=1+4+8+12+16+20+24+28+1+trunc(rot); spaceS:=dec1-dec_boundaries[8]; spaceN:=dec_boundaries[9]-dec1; spaceW:=(pi*2/32) * frac(rot)*cos_dec1; spaceE:=(pi*2/32) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[7] then {28x RA} begin rot:=ra1*28/(2*pi); area_nr:=1+4+8+12+16+20+24+1+trunc(rot); spaceS:=dec1-dec_boundaries[7]; spaceN:=dec_boundaries[8]-dec1; spaceW:=(pi*2/28) * frac(rot)*cos_dec1; spaceE:=(pi*2/28) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[6] then {24x RA} begin rot:=ra1*24/(2*pi); area_nr:=1+4+8+12+16+20+1+trunc(rot); spaceS:=dec1-dec_boundaries[6]; spaceN:=dec_boundaries[7]-dec1; spaceW:=(pi*2/24) * frac(rot)*cos_dec1; spaceE:=(pi*2/24) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[5] then {20x RA} begin rot:=ra1*20/(2*pi); area_nr:=1+4+8+12+16+1+trunc(rot); spaceS:=dec1-dec_boundaries[5]; spaceN:=dec_boundaries[6]-dec1; spaceW:=(pi*2/20) * frac(rot)*cos_dec1; spaceE:=(pi*2/20) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[4] then {16x RA} begin rot:=ra1*16/(2*pi); area_nr:=1+4+8+12+1+trunc(rot); spaceS:=dec1-dec_boundaries[4]; spaceN:=dec_boundaries[5]-dec1; spaceW:=(pi*2/16) * frac(rot)*cos_dec1; spaceE:=(pi*2/16) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[3] then {12*RA} begin rot:=ra1*12/(2*pi); area_nr:=1+4+8+1+trunc(rot); spaceS:=dec1-dec_boundaries[3]; spaceN:=dec_boundaries[4]-dec1; spaceW:=(pi*2/12) * frac(rot)*cos_dec1; spaceE:=(pi*2/12) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[2] then {8x RA} begin rot:=ra1*8/(2*pi); area_nr:=1+4+1+trunc(rot); spaceS:=dec1-dec_boundaries[2]; spaceN:=dec_boundaries[3]-dec1; spaceW:=(pi*2/8) * frac(rot)*cos_dec1; spaceE:=(pi*2/8) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries[1] then {4x RA} begin rot:=ra1*4/(2*pi); area_nr:=1+ 1+trunc(rot); spaceS:=dec1-dec_boundaries[1]; spaceN:=dec_boundaries[2]-dec1; spaceW:=(pi*2/4) * frac(rot)*cos_dec1; spaceE:=(pi*2/4) * (1-frac(rot))*cos_dec1; end else begin area_nr:=1; {celestial south pole area} spaceS:=dec_boundaries[1]-dec_boundaries[0];{minimum, could go beyond the celestical pole so below -90 degrees} spaceN:=dec_boundaries[1]-dec1; spaceW:=pi*2; spaceE:=pi*2; end; end; procedure area_and_boundaries1476(ra1,dec1 :double; out area_nr: integer; out spaceE,spaceW,spaceN,spaceS: double); {For a ra, dec position find the star database area number and the corresponding boundary distances N, E, W, S} var rot,cos_dec1 :double; begin cos_dec1:=cos(dec1); if dec1>dec_boundaries1476[35] then begin area_nr:=1476; {celestial north pole area} spaceS:=dec1-dec_boundaries1476[35]; spaceN:=dec_boundaries1476[36]{90}-dec_boundaries1476[35];{minimum, could go beyond the celestical pole so above +90 degrees} spaceW:=pi*2; spaceE:=pi*2; end else if dec1>dec_boundaries1476[34] then {3x RA} begin rot:=ra1*3/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+60+56+52+48+43+38+33+27+21+15+9+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[34]; spaceN:=dec_boundaries1476[35]-dec1; cos_dec1:=cos(dec1); spaceW:=(pi*2/3) * frac(rot)*cos_dec1; {ra decrease in direction west} spaceE:=(pi*2/3) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[33] then {9x RA} begin rot:=ra1*9/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+60+56+52+48+43+38+33+27+21+15+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[33]; spaceN:=dec_boundaries1476[34]-dec1; cos_dec1:=cos(dec1); spaceW:=(pi*2/9) * frac(rot)*cos_dec1; spaceE:=(pi*2/9) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[32] then {15x RA} begin rot:=ra1*15/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+60+56+52+48+43+38+33+27+21+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[32]; spaceN:=dec_boundaries1476[33]-dec1; spaceW:=(pi*2/15) * frac(rot)*cos_dec1; spaceE:=(pi*2/15) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[31] then {21x RA} begin rot:=ra1*21/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+60+56+52+48+43+38+33+27+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[31]; spaceN:=dec_boundaries1476[32]-dec1; spaceW:=(pi*2/21) * frac(rot)*cos_dec1; spaceE:=(pi*2/21) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[30] then {27x RA} begin rot:=ra1*27/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+60+56+52+48+43+38+33+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[30]; spaceN:=dec_boundaries1476[31]-dec1; spaceW:=(pi*2/27) * frac(rot)*cos_dec1; spaceE:=(pi*2/27) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[29] then {33x RA} begin rot:=ra1*33/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+60+56+52+48+43+38+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[29]; spaceN:=dec_boundaries1476[30]-dec1; spaceW:=(pi*2/33) * frac(rot)*cos_dec1; spaceE:=(pi*2/33) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[28] then {38x RA} begin rot:=ra1*38/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+60+56+52+48+43+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[28]; spaceN:=dec_boundaries1476[29]-dec1; spaceW:=(pi*2/38) * frac(rot)*cos_dec1; spaceE:=(pi*2/38) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[27] then {43x RA} begin rot:=ra1*43/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+60+56+52+48+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[27]; spaceN:=dec_boundaries1476[28]-dec1; spaceW:=(pi*2/43) * frac(rot)*cos_dec1; spaceE:=(pi*2/43) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[26] then {48x RA} begin rot:=ra1*48/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+60+56+52+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[26]; spaceN:=dec_boundaries1476[27]-dec1; spaceW:=(pi*2/48) * frac(rot)*cos_dec1; spaceE:=(pi*2/48) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[25] then {52x RA} begin rot:=ra1*52/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+60+56+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[25]; spaceN:=dec_boundaries1476[26]-dec1; spaceW:=(pi*2/52) * frac(rot)*cos_dec1; spaceE:=(pi*2/52) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[24] then {56x RA} begin rot:=ra1*56/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+60+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[24]; spaceN:=dec_boundaries1476[25]-dec1; spaceW:=(pi*2/56) * frac(rot)*cos_dec1; spaceE:=(pi*2/56) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[23] then {60x RA} begin rot:=ra1*60/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+63+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[23]; spaceN:=dec_boundaries1476[24]-dec1; spaceW:=(pi*2/60) * frac(rot)*cos_dec1; spaceE:=(pi*2/60) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[22] then {63x RA} begin rot:=ra1*63/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+65+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[22]; spaceN:=dec_boundaries1476[23]-dec1; spaceW:=(pi*2/63) * frac(rot)*cos_dec1; spaceE:=(pi*2/63) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[21] then {65x RA} begin rot:=ra1*65/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+67+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[21]; spaceN:=dec_boundaries1476[22]-dec1; spaceW:=(pi*2/65) * frac(rot)*cos_dec1; spaceE:=(pi*2/65) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[20] then {67x RA} begin rot:=ra1*67/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+68+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[20]; spaceN:=dec_boundaries1476[21]-dec1; spaceW:=(pi*2/67) * frac(rot)*cos_dec1; spaceE:=(pi*2/67) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[19] then {68x RA} begin rot:=ra1*68/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+69+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[19]; spaceN:=dec_boundaries1476[20]-dec1; spaceW:=(pi*2/68) * frac(rot)*cos_dec1; spaceE:=(pi*2/68) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[18] then {69x RA} begin rot:=ra1*69/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+69+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[18]; spaceN:=dec_boundaries1476[19]-dec1; spaceW:=(pi*2/69) * frac(rot)*cos_dec1; spaceE:=(pi*2/69) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[17] then {69x RA} begin rot:=ra1*69/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+68+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[17]; spaceN:=dec_boundaries1476[19]-dec1; spaceW:=(pi*2/69) * frac(rot)*cos_dec1; spaceE:=(pi*2/69) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[16] then {68x RA} begin rot:=ra1*68/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+67+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[16]; spaceN:=dec_boundaries1476[17]-dec1; spaceW:=(pi*2/68) * frac(rot)*cos_dec1; spaceE:=(pi*2/68) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[15] then {67x RA} begin rot:=ra1*67/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+65+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[15]; spaceN:=dec_boundaries1476[16]-dec1; spaceW:=(pi*2/67) * frac(rot)*cos_dec1; spaceE:=(pi*2/67) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[14] then {65x RA} begin rot:=ra1*65/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+63+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[14]; spaceN:=dec_boundaries1476[15]-dec1; spaceW:=(pi*2/65) * frac(rot)*cos_dec1; spaceE:=(pi*2/65) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[13] then {63x RA} begin rot:=ra1*63/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+60+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[13]; spaceN:=dec_boundaries1476[14]-dec1; spaceW:=(pi*2/63) * frac(rot)*cos_dec1; spaceE:=(pi*2/63) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[12] then {60x RA} begin rot:=ra1*60/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+56+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[12]; spaceN:=dec_boundaries1476[13]-dec1; spaceW:=(pi*2/60) * frac(rot)*cos_dec1; spaceE:=(pi*2/60) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[11] then {56x RA} begin rot:=ra1*56/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+52+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[11]; spaceN:=dec_boundaries1476[12]-dec1; spaceW:=(pi*2/56) * frac(rot)*cos_dec1; spaceE:=(pi*2/56) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[10] then {52x RA} begin rot:=ra1*52/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+48+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[10]; spaceN:=dec_boundaries1476[11]-dec1; spaceW:=(pi*2/52) * frac(rot)*cos_dec1; spaceE:=(pi*2/52) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[9] then {48x RA} begin rot:=ra1*48/(2*pi); area_nr:=1+3+9+15+21+27+33+38+43+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[9]; spaceN:=dec_boundaries1476[10]-dec1; spaceW:=(pi*2/48) * frac(rot)*cos_dec1; spaceE:=(pi*2/48) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[8] then {43x RA} begin rot:=ra1*43/(2*pi); area_nr:=1+3+9+15+21+27+33+38+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[8]; spaceN:=dec_boundaries1476[9]-dec1; spaceW:=(pi*2/43) * frac(rot)*cos_dec1; spaceE:=(pi*2/43) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[7] then {38x RA} begin rot:=ra1*38/(2*pi); area_nr:=1+3+9+15+21+27+33+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[7]; spaceN:=dec_boundaries1476[8]-dec1; spaceW:=(pi*2/38) * frac(rot)*cos_dec1; spaceE:=(pi*2/38) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[6] then {33x RA} begin rot:=ra1*33/(2*pi); area_nr:=1+3+9+15+21+27+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[6]; spaceN:=dec_boundaries1476[7]-dec1; spaceW:=(pi*2/33) * frac(rot)*cos_dec1; spaceE:=(pi*2/33) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[5] then {27x RA} begin rot:=ra1*27/(2*pi); area_nr:=1+3+9+15+21+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[5]; spaceN:=dec_boundaries1476[6]-dec1; spaceW:=(pi*2/27) * frac(rot)*cos_dec1; spaceE:=(pi*2/27) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[4] then {21x RA} begin rot:=ra1*21/(2*pi); area_nr:=1+3+9+15+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[4]; spaceN:=dec_boundaries1476[5]-dec1; spaceW:=(pi*2/21) * frac(rot)*cos_dec1; spaceE:=(pi*2/21) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[3] then {15x RA} begin rot:=ra1*15/(2*pi); area_nr:=1+3+9+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[3]; spaceN:=dec_boundaries1476[4]-dec1; spaceW:=(pi*2/15) * frac(rot)*cos_dec1; spaceE:=(pi*2/15) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[2] then {9x RA} begin rot:=ra1*9/(2*pi); area_nr:=1+3+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[2]; spaceN:=dec_boundaries1476[3]-dec1; spaceW:=(pi*2/9) * frac(rot)*cos_dec1; spaceE:=(pi*2/9) * (1-frac(rot))*cos_dec1; end else if dec1>dec_boundaries1476[1] then {3x RA} begin rot:=ra1*3/(2*pi); area_nr:=1+1+trunc(rot); spaceS:=dec1-dec_boundaries1476[1]; spaceN:=dec_boundaries1476[2]-dec1; spaceW:=(pi*2/3) * frac(rot)*cos_dec1; spaceE:=(pi*2/3) * (1-frac(rot))*cos_dec1; end else begin area_nr:=1; {celestial south pole area} spaceS:=dec_boundaries1476[1]-dec_boundaries1476[0];{minimum, could go beyond the celestical pole so below -90 degrees} spaceN:=dec_boundaries1476[1]-dec1; spaceW:=pi*2; spaceE:=pi*2; end; end; procedure find_areas(ra1,dec1,fov :double; out area1,area2,area3,area4 :integer; out frac1,frac2,frac3,frac4:double);{find up to four star database areas for the square image. Maximum size is a little lesse the one database field 9.5x9.5 degrees for .290 files and 5.14 x 5.14 degrees for .1476 files} var ra_cornerWN,ra_cornerEN,ra_cornerWS,ra_cornerES, dec_cornerN,dec_cornerS,fov_half, spaceE,spaceW,spaceN,spaceS : double; begin fov_half:=fov/2; {warning FOV should be less the database tile dimensions, so <=9.53 degrees for .290 files and <=5.14 for .1476 files. Otherwise a tile beyond next tile could be selected} dec_cornerN:=dec1+fov_half; {above +pi/2 doesn't matter since it is all area 290} dec_cornerS:=dec1-fov_half; {above -pi/2 doesn't matter since it is all area 1} ra_cornerWN:=ra1-fov_half/cos(dec_cornerN); if ra_cornerWN<0 then ra_cornerWN:=ra_cornerWN+2*pi;{For direction west the RA decreases} ra_cornerEN:=ra1+fov_half/cos(dec_cornerN); if ra_cornerEN>=2*pi then ra_cornerEN:=ra_cornerEN-2*pi; ra_cornerWS:=ra1-fov_half/cos(dec_cornerS); if ra_cornerWS<0 then ra_cornerWS:=ra_cornerWS+2*pi; ra_cornerES:=ra1+fov_half/cos(dec_cornerS); if ra_cornerES>=2*pi then ra_cornerES:=ra_cornerES-2*pi; if database_type=290 then begin {corner 1} area_and_boundaries(ra_cornerEN,dec_cornerN, area1, spaceE,spaceW,spaceN,spaceS); frac1:=min(spaceW,fov)*min(spaceS,fov)/(fov*fov);{fraction of the image requiring this database area} {corner 2} area_and_boundaries(ra_cornerWN,dec_cornerN, area2, spaceE,spaceW,spaceN,spaceS); frac2:=min(spaceE,fov)*min(spaceS,fov)/(fov*fov);{fraction of the image requiring this database area} {corner 3} area_and_boundaries(ra_cornerES,dec_cornerS, area3, spaceE,spaceW,spaceN,spaceS); frac3:=min(spaceW,fov)*min(spaceN,fov)/(fov*fov);{fraction of the image requiring this database area} {corner 4} area_and_boundaries(ra_cornerWS,dec_cornerS, area4, spaceE,spaceW,spaceN,spaceS); frac4:=min(spaceE,fov)*min(spaceN,fov)/(fov*fov);{fraction of the image requiring this database area} end else begin {corner 1} area_and_boundaries1476(ra_cornerEN,dec_cornerN, area1, spaceE,spaceW,spaceN,spaceS); frac1:=min(spaceW,fov)*min(spaceS,fov)/(fov*fov);{fraction of the image requiring this database area} {corner 2} area_and_boundaries1476(ra_cornerWN,dec_cornerN, area2, spaceE,spaceW,spaceN,spaceS); frac2:=min(spaceE,fov)*min(spaceS,fov)/(fov*fov);{fraction of the image requiring this database area} {corner 3} area_and_boundaries1476(ra_cornerES,dec_cornerS, area3, spaceE,spaceW,spaceN,spaceS); frac3:=min(spaceW,fov)*min(spaceN,fov)/(fov*fov);{fraction of the image requiring this database area} {corner 4} area_and_boundaries1476(ra_cornerWS,dec_cornerS, area4, spaceE,spaceW,spaceN,spaceS); frac4:=min(spaceE,fov)*min(spaceN,fov)/(fov*fov);{fraction of the image requiring this database area} end; if area2=area1 then begin area2:=0;frac2:=0;end; {area2 and area1 equivalent} if area3=area1 then begin area3:=0;frac3:=0;end; {area3 and area1 equivalent} if area4=area1 then begin area4:=0;frac4:=0;end; {area4 and area1 equivalent} if area3=area2 then begin area3:=0;frac3:=0;end; {area3 and area2 equivalent} if area4=area2 then begin area4:=0;frac4:=0;end; if area4=area3 then begin area4:=0;frac4:=0;end; if frac1<0.01 then begin area1:=0;frac1:=0;end;{too small, ignore} if frac2<0.01 then begin area2:=0;frac2:=0;end;{too small, ignore} if frac3<0.01 then begin area3:=0;frac3:=0;end;{too small, ignore} if frac4<0.01 then begin area4:=0;frac4:=0;end;{too small, ignore} end; function select_star_database(database:string;fov:double): boolean; {select a star database, report false if none is found} var typ : ansichar; begin result:=true; database_type:=1476;{type .1476 database} database:=lowercase(database); typ:=database[1]; if typ<>'a' then {manual setting} begin if typ='w' then begin if fileexists( database_path+database+'_0101.001') then begin name_database:=database; {try preference}database_type:=001;exit; end end else if typ='h' then begin if fileexists( database_path+database+'_0101.1476') then begin name_database:=database; {try preference} exit; end; end else if typ in ['v','g'] then begin if fileexists( database_path+database+'_0101.290') then begin name_database:=database; {try preference}database_type:=290;exit; end end; end;{auto} if fov>20 then begin if fileexists( database_path+'w08_0101.001') then begin name_database:='w08';database_type:=001; exit; end else memo2_message('Could not find w08 star database. Will try with an other database.'); end; if ((fov>10) and (fileexists( database_path+'v17_0101.290'))) then begin name_database:='v17'; database_type:=290; end //preference for V17 for large FOV else if fileexists( database_path+'h18_0101.1476') then begin name_database:='h18'; end else if fileexists( database_path+'g18_0101.290') then begin name_database:='g18'; database_type:=290; end else if fileexists( database_path+'h17_0101.1476') then begin name_database:='h17'; end else if fileexists( database_path+'v17_0101.290') then begin name_database:='v17'; database_type:=290; end else if fileexists( database_path+'g17_0101.290') then begin name_database:='g17'; database_type:=290; end else result:=false; end; procedure close_star_database;{Close the tfilestream} begin if file_open then begin thefile_stars.free; file_open:=false; end; end; function open_database(telescope_dec: double; area290: integer): boolean; {open database file} var namefile : string; begin result:=true;{assume succes} cos_telescope_dec:=cos(telescope_dec);{here to save CPU time} if ((area290<>old_area) or (file_open=false)) then begin close_star_database;{close the reader if open} if database_type=290 then namefile:=name_database+'_'+filenames290[area290] {g17_0101.290} else namefile:=name_database+'_'+filenames1476[area290]; {g17_0101.1476} try thefile_stars:=tfilestream.Create( database_path+namefile, fmOpenRead or fmShareDenyWrite); {read but do not lock file} except result:=false; exit; end; file_open:=true; {file is open in tfilestream} cache_valid_pos:=0;{new file name} thefile_stars.read(database2,110); {read header info, 10x11 is 110 bytes} if database2[109]=' ' then record_size:=11 {default} else record_size:=ord(database2[109]);{5,6,7,9,10 or 11 bytes record} cache_size:=thefile_stars.size-110; if cache_size>length(cache_array) then {Only resize when required. Resizing takes time} begin cache_array:=nil;{prevent it is copied to the new resized array} setlength(cache_array,cache_size);{ increase cache to star database file size} end; old_area:=area290; end; {else use old data in cache} {This cache works about 35 % faster then Treader for files with FOV of 0.5 degrees. This due to re-use cache. No difference for FOV 1.3 degrees. At FOV=0.25 the improvement is 40%} //reading database take time: //fov=0.23 degrees, 73% of total time //fov=0.5 degrees, 60% of total time //fov=4.6 degrees, 8% of total time cache_position:=0; end; // This readdatabase is a stripped version for record sizes 5 and 6 only. See HNSKY source files for reading other record size files. // // telescope_ra, telescope_dec [radians], contains to center position of the field of interest // field_diameter [radians], FOV diameter of field of interest. This is ignored in searchmode=T} // ra, dec [radians], reported star position // mag2 [magnitude*10] reported star magnitude // Bp-Rp, Gaia color information, not used in ASTAP for solving} // result [true/false] if reported true then more stars are available. If false no more stars available. // extra outputs: // database2 : array[0..(11*10)] of ansichar;{text info star database used} // preconditions: // area290 should be set at 290+1 before any read series // cos_telescope_dec, double variable should contains the cos(telescope_dec) to detect if star read is within the FOV diameter} // {$INLINE ON} function readdatabase290(telescope_ra,telescope_dec, field_diameter:double; out ra2,dec2, mag2,Bp_Rp : double): boolean; inline;{star 290 file database search} {searchmode=S screen update } {searchmode=M mouse click search} {searchmode=T text search} var ra_raw,block_to_read : integer; delta_ra : double; header_record : boolean; const blocksize=5*6*4*1024; {a multiply of record sizes 5, 6} begin {$I-} readdatabase290:=true; repeat repeat if cache_position>=cache_size then {should be end of file} begin readdatabase290:=false; {no more data in this file} exit; end; if cache_position>=cache_valid_pos then {add more data to cache. This cache works about 35 % faster then Treader for files with FOV of 0.5 degrees. This due to re-use cache. No difference for FOV 1.3 degrees. At FOV=0.25 the improvement is 40%} begin block_to_read:=min(cache_size, blocksize);{for small files, don't read more than cache size=file size!} block_to_read:=min(block_to_read,cache_size - cache_valid_pos);{don't read more than file size!} thefile_stars.read(cache_array[cache_valid_pos],block_to_read); {fill cache more. In most cases it can be re-used. Especially for small field of view} cache_valid_pos:=cache_valid_pos+block_to_read;{increase postion where cache buffer is valid.} end; move(cache_array[cache_position],buf2,record_size);{move one record for reading} cache_position:=cache_position + record_size;{update cache position} header_record:=false; case record_size of 5: begin {record size 5} with p5^ do begin ra_raw:=(ra7 + ra8 shl 8 +ra9 shl 16);{always required, fasted method} if ra_raw=$FFFFFF then {special magnitude record is found} begin mag2:=dec8-16;{new magn shifted 16 to make sirius and other positive} {magnitude is stored in mag2 till new magnitude record is found} dec9_storage:=dec7-128;{recover dec9 shortint and put it in storage} header_record:=true; end else begin {normal record without magnitude} ra2:= ra_raw*(pi*2 /((256*256*256)-1)); dec2:=((dec9_storage shl 16)+(dec8 shl 8)+dec7)*(pi*0.5/((128*256*256)-1));// dec2:=(dec7+(dec8 shl 8)+(dec9 shl 16))*(pi*0.5/((128*256*256)-1)); {FPC compiler makes mistake, but dec7 behind} {The RA is stored as a 3 bytes word. The DEC position is stored as a two's complement (=standard), three bytes integer. The resolution of this three byte storage will be for RA: 360*60*60/((256*256*256)-1) = 0.077 arc seconds. For the DEC value it will be: 90*60*60/((128*256*256)-1) = 0.039 arc seconds.} end; end; end;{record size 5} 6: begin {record size 6} with p6^ do begin ra_raw:=(ra7 + ra8 shl 8 +ra9 shl 16);{always required, fasted method} if ra_raw=$FFFFFF then {special magnitude record is found} begin mag2:=dec8-16;{new magn shifted 16 to make sirius and other positive} {magnitude is stored in mag2 till new magnitude record is found} dec9_storage:=dec7-128;{recover dec9 shortint and put it in storage} header_record:=true; end else begin {normal record without magnitude} ra2:= ra_raw*(pi*2 /((256*256*256)-1)); dec2:=((dec9_storage shl 16)+(dec8 shl 8)+dec7)*(pi*0.5/((128*256*256)-1));// dec2:=(dec7+(dec8 shl 8)+(dec9 shl 16))*(pi*0.5/((128*256*256)-1)); {FPC compiler makes mistake, put dec7 behind} Bp_Rp:=b_r;{gaia (Bp-Rp)*10} {color information} end; end; end;{record size 6} end;{case} until header_record=false; delta_ra:=abs(ra2-telescope_ra); if delta_ra>pi then delta_ra:=pi*2-delta_ra;{Here because ra2 is not defined in case header_record} until ( (delta_ra*cos_telescope_dec GridLines = True HideSelection = False MultiSelect = True ParentFont = False PopupMenu = PopupMenu1 ReadOnly = True RowSelect = True ScrollBars = ssAutoBoth SmallImages = ImageList_colors SortColumn = 5 SortType = stText TabOrder = 2 ViewStyle = vsReport OnColumnClick = listview1ColumnClick OnCompare = listview1Compare OnCustomDraw = listview1CustomDraw OnCustomDrawItem = listview1CustomDrawItem OnDblClick = listview1DblClick OnItemChecked = listview1ItemChecked OnKeyDown = listview1KeyDown end object uncheck_outliers1: TCheckBox Left = 464 Height = 19 Hint = 'Uncheck files with abnormal HFD or abnormal amount number of stars detected.' Top = 8 Width = 197 Caption = 'After analyse untick worst images' ParentFont = False TabOrder = 3 end object sd_factor_list1: TComboBox Left = 735 Height = 23 Hint = 'Sigma factor (or percentage to keep) to identify statistically low quality images.' Top = 5 Width = 72 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( '99%' '95%' '90%' '80%' '70%' '60%' '3.0' '2.5' '2.0' '1.7' '1.5' '1.4' '1.3' '1.0' ) ParentFont = False TabOrder = 4 Text = '95%' end object help_uncheck_outliers1: TLabel Cursor = crHandPoint Left = 1136 Height = 30 Hint = 'Online help about analyse' Top = 2 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_uncheck_outliers1Click end object blink_unaligned_multi_step1: TButton Left = 1264 Height = 25 Hint = 'Un-aligned blink' Top = 5 Width = 50 Caption = '▶' OnClick = blink_unaligned_multi_step1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 5 end object lights_blink_pause1: TButton Left = 1176 Height = 25 Hint = 'Pause blinking' Top = 5 Width = 50 Caption = '||' OnClick = blink_stop1Click ParentFont = False TabOrder = 6 end object blink_unaligned_multi_step_backwards1: TButton Left = 1352 Height = 25 Hint = 'Un-aligned blink' Top = 5 Width = 50 Caption = '◀' OnClick = blink_unaligned_multi_step1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 7 end object planetary_image1: TCheckBox Left = 1624 Height = 19 Hint = 'Checkmark this option for analysing planetary images on sharpness. Note the stack routine is not suitable for stacking of planetary images.' Top = 8 Width = 69 Caption = 'Planetary' TabOrder = 8 end object browse1: TBitBtn Left = 16 Height = 25 Hint = 'Browse and select lights to stack' Top = 5 Width = 92 Caption = 'Browse' Images = ImageList2 ImageIndex = 23 OnClick = browse1Click TabOrder = 9 end end object Darks: TTabSheet Hint = 'Select here the dark frames.' Caption = 'Darks' ClientHeight = 470 ClientWidth = 1849 ImageIndex = 1 ParentFont = False object replace_by_master_dark1: TButton Left = 312 Height = 25 Hint = 'Combine to check-marked files to master dark. The other files are not affected.' Top = 5 Width = 295 AutoSize = True Caption = 'Replace check-marked by one or more master dark' OnClick = replace_by_master_dark1Click ParentFont = False TabOrder = 0 end object clear_dark_list1: TButton Left = 1000 Height = 25 Hint = 'Clear image list' Top = 5 Width = 71 AutoSize = True Caption = 'Clear list' OnClick = clear_dark_list1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 end object listview2: TListView Left = 0 Height = 434 Hint = 'Double click to view image' Top = 36 Width = 1849 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 36 Checkboxes = True Columns = < item AutoSize = True Caption = 'File' MinWidth = 150 Width = 33 end item Alignment = taRightJustify Caption = 'Exposure' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'Temperature' MinWidth = 95 Width = 95 end item Alignment = taRightJustify Caption = 'Binning' MinWidth = 70 Width = 70 end item Alignment = taRightJustify Caption = 'Width' MinWidth = 55 Width = 60 end item Alignment = taRightJustify Caption = 'Height' MinWidth = 60 Width = 60 end item Caption = 'Type' MinWidth = 50 end item AutoSize = True Caption = 'Date' MinWidth = 70 Width = 39 end item Alignment = taRightJustify Caption = 'Background' MinWidth = 110 Width = 110 end item Caption = 'σ centre' MinWidth = 60 Width = 60 end item Caption = 'Gain' MinWidth = 60 Width = 60 end item AutoSize = True Caption = 'JD' Width = 27 end> GridLines = True HideSelection = False MultiSelect = True ParentFont = False PopupMenu = PopupMenu2 ReadOnly = True RowSelect = True ScrollBars = ssAutoBoth SmallImages = ImageList_colors SortColumn = 7 SortType = stText TabOrder = 2 ViewStyle = vsReport OnColumnClick = listview1ColumnClick OnCompare = listview1Compare OnCustomDraw = listview2CustomDraw OnCustomDrawItem = listview2CustomDrawItem OnDblClick = listview1DblClick OnKeyDown = listview1KeyDown end object analysedarksButton2: TButton Left = 136 Height = 25 Hint = 'Analyse image files' Top = 5 Width = 67 AutoSize = True Caption = 'Analyse' OnClick = analysedarksButton2Click ParentFont = False TabOrder = 3 end object nr_total_darks1: TLabel Left = 272 Height = 15 Hint = 'Number of images in the list' Top = 10 Width = 6 Caption = '0' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object classify_dark_date1: TCheckBox Left = 720 Height = 19 Hint = 'Combine darks within 12 hour time range to master' Top = 8 Width = 205 Caption = 'Classify by date for master creation' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 end object browse_dark1: TBitBtn Left = 16 Height = 25 Hint = 'Browse and select darks' Top = 5 Width = 92 Caption = 'Browse' Images = ImageList2 ImageIndex = 23 OnClick = browse_dark1Click TabOrder = 5 end end object Flats: TTabSheet Hint = 'Select here the flat frames' Caption = 'Flats' ClientHeight = 470 ClientWidth = 1849 ImageIndex = 2 ParentFont = False object replace_by_master_flat1: TButton Left = 312 Height = 25 Hint = 'Combine the check-marked flats and flat darks to one master flat. The other files are not affected.' Top = 5 Width = 327 AutoSize = True Caption = 'Replace check-marked by master flat, flat darks included.' OnClick = replace_by_master_flat1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 0 end object clear_selection2: TButton Left = 1128 Height = 25 Hint = 'Clear image list' Top = 5 Width = 71 AutoSize = True Caption = 'Clear list' OnClick = clear_selection2Click ParentFont = False TabOrder = 1 end object analyseflatsButton3: TButton Left = 136 Height = 25 Hint = 'Analyse image files' Top = 5 Width = 67 AutoSize = True Caption = 'Analyse' OnClick = analyseflatsButton3Click ParentFont = False TabOrder = 2 end object listview3: TListView Left = 0 Height = 434 Hint = 'Double click to view image' Top = 36 Width = 1849 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 36 Checkboxes = True Columns = < item AutoSize = True Caption = 'File' MinWidth = 150 Width = 33 end item Alignment = taRightJustify Caption = 'Exposure' MinWidth = 80 Width = 80 end item Alignment = taRightJustify AutoSize = True Caption = 'Temperature' MinWidth = 100 Width = 82 end item Alignment = taRightJustify Caption = 'Binning' MinWidth = 70 Width = 70 end item Alignment = taRightJustify Caption = 'Width' MinWidth = 55 Width = 60 end item Alignment = taRightJustify Caption = 'Height' MinWidth = 60 Width = 60 end item Caption = 'Type' MinWidth = 50 end item AutoSize = True Caption = 'Date' MinWidth = 70 Width = 39 end item Alignment = taRightJustify Caption = 'Background' MinWidth = 110 Width = 110 end item Alignment = taRightJustify Caption = 'σ centre' MinWidth = 60 Width = 60 end item Caption = 'Gain' MinWidth = 50 end item AutoSize = True Caption = 'Filter' MinWidth = 50 Width = 41 end item AutoSize = True Caption = 'JD' Width = 27 end item Caption = 'Calibration' MinWidth = 80 Width = 80 end> GridLines = True HideSelection = False MultiSelect = True ParentFont = False PopupMenu = PopupMenu3 ReadOnly = True RowSelect = True ScrollBars = ssAutoBoth SmallImages = ImageList_colors SortColumn = 7 SortType = stText TabOrder = 3 ViewStyle = vsReport OnColumnClick = listview1ColumnClick OnCompare = listview1Compare OnCustomDraw = listview3CustomDraw OnCustomDrawItem = listview3CustomDrawItem OnDblClick = listview1DblClick OnKeyDown = listview1KeyDown end object nr_total_flats1: TLabel Left = 272 Height = 15 Hint = 'Number of images in the list' Top = 10 Width = 6 Caption = '0' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object browse_flats1: TBitBtn Left = 16 Height = 25 Hint = 'Browse and select flats' Top = 5 Width = 92 Caption = 'Browse' Images = ImageList2 ImageIndex = 23 OnClick = browse_flats1Click TabOrder = 4 end object classify_flat_date1: TCheckBox Left = 714 Height = 19 Hint = 'Combine flats within 12 hour time range to master' Top = 0 Width = 205 Caption = 'Classify by date for master creation' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 5 end object classify_flat_exposure1: TCheckBox Left = 714 Height = 19 Hint = 'Activate this option if you want classify the flats and flat darks based on exposure time.' Top = 16 Width = 260 Caption = 'Classify by exposure time for master creation.' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 6 end end object Bias: TTabSheet Hint = 'Select here the flat-dark/bias frames.' Caption = 'Flat darks' ClientHeight = 470 ClientWidth = 1849 ImageIndex = 3 ParentFont = False object clear_selection3: TButton Left = 664 Height = 25 Hint = 'Clear image list' Top = 6 Width = 53 AutoSize = True Caption = 'Clear' OnClick = clear_selection3Click ParentFont = False TabOrder = 0 end object analyseflatdarksButton1: TButton Left = 136 Height = 25 Hint = 'Analyse image files' Top = 6 Width = 67 AutoSize = True Caption = 'Analyse' OnClick = analyseflatdarksButton1Click ParentFont = False TabOrder = 1 end object listview4: TListView Left = 0 Height = 434 Hint = 'Double click to view image' Top = 36 Width = 1849 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 36 Checkboxes = True Columns = < item AutoSize = True Caption = 'File' MinWidth = 150 Width = 33 end item Alignment = taRightJustify Caption = 'Exposure' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'Temperature' MinWidth = 100 Width = 100 end item Alignment = taRightJustify Caption = 'Binning' MinWidth = 70 Width = 70 end item Alignment = taRightJustify Caption = 'Width' MinWidth = 55 Width = 60 end item Alignment = taRightJustify Caption = 'Height' MinWidth = 60 Width = 60 end item AutoSize = True Caption = 'Type' MinWidth = 50 Width = 40 end item AutoSize = True Caption = 'Date' MinWidth = 70 Width = 39 end item Alignment = taRightJustify Caption = 'Background' MinWidth = 90 Width = 90 end item Caption = 'σ centre' MinWidth = 60 Width = 60 end item Caption = 'Gain' MinWidth = 50 end> GridLines = True HideSelection = False MultiSelect = True ParentFont = False PopupMenu = PopupMenu4 ReadOnly = True RowSelect = True ScrollBars = ssAutoBoth SmallImages = ImageList_colors SortColumn = 8 SortType = stText TabOrder = 2 ViewStyle = vsReport OnColumnClick = listview1ColumnClick OnCompare = listview1Compare OnCustomDraw = listview4CustomDraw OnCustomDrawItem = listview4CustomDrawItem OnDblClick = listview1DblClick OnKeyDown = listview1KeyDown end object nr_total_bias1: TLabel Left = 272 Height = 15 Hint = 'Number of images in the list' Top = 10 Width = 6 Caption = '0' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object browse_bias1: TBitBtn Left = 16 Height = 25 Hint = 'Browse and select flat-darks (bias)' Top = 6 Width = 92 Caption = 'Browse' Images = ImageList2 ImageIndex = 23 OnClick = browse_bias1Click TabOrder = 3 end end object Result1: TTabSheet Hint = 'This page contains the result of stacking. See pop-up menu for more options.' Caption = 'Results' ClientHeight = 470 ClientWidth = 1849 ImageIndex = 6 ParentFont = False object listview5: TListView Left = 0 Height = 434 Hint = 'Double click to view image' Top = 36 Width = 1849 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 36 Columns = < item AutoSize = True Caption = 'File' MinWidth = 150 Width = 33 end item Caption = 'Object' MinWidth = 100 Width = 100 end item Caption = 'Result' MinWidth = 60 Width = 60 end item AutoSize = True Caption = 'Exposure' MinWidth = 75 Width = 63 end item Alignment = taRightJustify Caption = 'Width' MinWidth = 55 Width = 55 end item AutoSize = True Caption = 'Height' MinWidth = 50 Width = 51 end item AutoSize = True Caption = 'Calibration' MinWidth = 73 Width = 73 end> Font.Color = clHighlight GridLines = True HideSelection = False MultiSelect = True ParentFont = False PopupMenu = PopupMenu5 ReadOnly = True RowSelect = True ScrollBars = ssAutoBoth SmallImages = ImageList_colors SortColumn = 0 SortDirection = sdDescending SortType = stText TabOrder = 0 ViewStyle = vsReport OnColumnClick = listview1ColumnClick OnCompare = listview1Compare OnCustomDrawItem = listview6CustomDrawItem OnDblClick = listview1DblClick OnKeyDown = listview1KeyDown end object Label_results1: TLabel Left = 16 Height = 15 Top = 8 Width = 345 Caption = 'Stacked images are displayed here. Double click to view in viewer.' ParentColor = False ParentFont = False end object help_stack_menu3: TLabel Cursor = crHandPoint Left = 576 Height = 25 Hint = 'Help' Top = 2 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -19 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_stack_menu3Click end object add_time1: TCheckBox Left = 824 Height = 19 Hint = 'Add time to stack file name. This allow comparison of different settings.' Top = 8 Width = 165 Caption = 'Add time to stack file name' TabOrder = 1 end object save_settings_image_path1: TCheckBox Left = 1032 Height = 19 Hint = 'Save a copy of the settings at image location. Can be retrieved with viewer file menu.' Top = 8 Width = 163 Caption = 'Include configuration copy' Checked = True State = cbChecked TabOrder = 2 end end object tab_stackmethod1: TTabSheet Hint = 'Set here the stack method' Caption = 'Stack method' ClientHeight = 470 ClientWidth = 1849 ImageIndex = 5 ParentFont = False object stack_method1: TComboBox Left = 125 Height = 23 Hint = 'Select stack method.' Top = 24 Width = 222 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'Average' 'Sigma clip average' 'Image stiching mode' 'Calibration and alignment only' 'Calibration only' 'Calibration only. No de-mosaic' 'Average, skip LRGB combine' 'Sigma clip, skip LRGB combine' ) OnChange = stack_method1Change ParentFont = False Style = csDropDownList TabOrder = 0 Text = 'Average' end object sd_factor1: TComboBox Left = 448 Height = 23 Hint = 'Sigma factor to identify outlier pixels. A factor of around 2.0 will remove satellite tracks and hot pixels. Sigma stands for standard deviation.' Top = 24 Width = 68 DropDownCount = 20 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '1.6' '1.8' '2.0' '2.2' '2.5' '3.0' ) ParentFont = False TabOrder = 1 Text = '2.0' end object oversize1: TComboBox Left = 448 Height = 23 Hint = 'Will increase the stack space around the reference image. Negative values will crop the resulting image in ratio.' Top = 64 Width = 67 ItemHeight = 15 ItemIndex = 3 Items.Strings = ( '-10' '-5' '-3' '0' '100' '200' '500' ) ParentFont = False TabOrder = 2 Text = '0' end object Label35: TLabel Left = 1216 Height = 15 Top = 96 Width = 246 Caption = 'master flat := (1/n ∑ [flats] - 1/n ∑ [flat darks] )' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label2: TLabel Left = 384 Height = 15 Top = 24 Width = 44 Caption = 'σ factor:' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label6: TLabel Left = 384 Height = 15 Top = 64 Width = 47 Caption = 'Oversize:' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label7: TLabel Left = 523 Height = 15 Top = 64 Width = 30 Caption = 'pixels' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label1: TLabel Left = 1216 Height = 15 Top = 72 Width = 189 Caption = ' (image- 1/n ∑ [darks] ) / master flat' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label5: TLabel Left = 24 Height = 15 Top = 24 Width = 76 Alignment = taRightJustify Caption = 'Stack method ' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object help_stack_menu1: TLabel Cursor = crHandPoint Left = 125 Height = 28 Hint = 'Help' Top = 72 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = 28 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_stack_menu2Click end object filter_groupbox1: TGroupBox Left = 528 Height = 304 Hint = 'Settings for LRGB stacking, LRGB stacking is activated if "Classify by light filter" is check marked.' Top = 112 Width = 297 Caption = 'LRGB stacking' ClientHeight = 284 ClientWidth = 293 Color = clForm ParentBackground = False ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 3 object red_filter1: TEdit Left = 0 Height = 23 Hint = 'Enter here a filter name for red' Top = 16 Width = 72 Color = 11842815 OnExit = luminance_filter1exit ParentFont = False TabOrder = 2 Text = 'Red' end object green_filter1: TEdit Left = 0 Height = 23 Hint = 'Enter here a filter name for green' Top = 40 Width = 72 Color = 11861940 OnExit = luminance_filter1exit ParentFont = False TabOrder = 4 Text = 'Green' end object blue_filter1: TEdit Left = 0 Height = 23 Hint = 'Enter here a filter name for blue' Top = 64 Width = 72 Color = 16757940 OnExit = luminance_filter1exit ParentFont = False TabOrder = 6 Text = 'Blue' end object red_filter2: TEdit Left = 72 Height = 23 Hint = 'Enter here a second filter name for red' Top = 16 Width = 72 Color = 11842815 OnExit = luminance_filter1exit ParentFont = False TabOrder = 3 Text = 'SII' end object green_filter2: TEdit Left = 72 Height = 23 Hint = 'Enter here a second filter name for green' Top = 40 Width = 72 Color = 11861940 OnExit = luminance_filter1exit ParentFont = False TabOrder = 5 Text = 'G' end object blue_filter2: TEdit Left = 72 Height = 23 Hint = 'Enter here a second filter name for blue' Top = 64 Width = 72 Color = 16757940 OnExit = luminance_filter1exit ParentFont = False TabOrder = 7 Text = 'OIII' end object rg1: TEdit Left = 203 Height = 23 Hint = 'Colour matrix' Top = 16 Width = 40 Color = 11861940 ParentFont = False TabOrder = 9 Text = '0.0' end object Label8: TLabel Left = 147 Height = 13 Top = 20 Width = 15 Alignment = taCenter AutoSize = False Caption = 'x' ParentColor = False ParentFont = False end object Label10: TLabel Left = 147 Height = 13 Top = 42 Width = 15 Alignment = taCenter AutoSize = False Caption = 'x' ParentColor = False ParentFont = False end object Label11: TLabel Left = 147 Height = 13 Top = 66 Width = 15 Alignment = taCenter AutoSize = False Caption = 'x' ParentColor = False ParentFont = False end object gg1: TEdit Left = 203 Height = 23 Hint = 'Colour matrix' Top = 40 Width = 40 Color = 11861940 ParentFont = False TabOrder = 12 Text = '1.0' end object bg1: TEdit Left = 203 Height = 23 Hint = 'Colour matrix' Top = 64 Width = 40 Color = 11861940 ParentFont = False TabOrder = 15 Text = '0.0' end object luminance_filter1: TEdit Left = 0 Height = 23 Hint = 'Enter here a filter name for Luminance' Top = 112 Width = 72 OnExit = luminance_filter1exit ParentFont = False TabOrder = 0 Text = 'L' end object luminance_filter2: TEdit Left = 72 Height = 23 Hint = 'Enter here a second filter name for Luminance' Top = 112 Width = 72 OnExit = luminance_filter1exit ParentFont = False TabOrder = 1 Text = 'Ha' end object green_filter_add1: TEdit Left = 203 Height = 23 Hint = 'For LRGB only. Add a fixed value if this colour is missing.' Top = 112 Width = 40 Color = 11861940 ParentFont = False TabOrder = 17 Text = '0.0' end object Label38: TLabel Left = 147 Height = 13 Top = 116 Width = 15 Alignment = taCenter AutoSize = False Caption = 'x' ParentColor = False ParentFont = False end object blue_filter_add1: TEdit Left = 243 Height = 23 Hint = 'For LRGB only. Add a fixed value if this colour is missing.' Top = 112 Width = 40 Color = 16757940 ParentFont = False TabOrder = 18 Text = '0.0' end object red_filter_add1: TEdit Left = 163 Height = 23 Hint = 'For LRGB only. Add a fixed value if this colour is missing.' Top = 112 Width = 40 Color = 11842815 ParentFont = False TabOrder = 19 Text = '0.0' end object rr1: TEdit Left = 163 Height = 23 Hint = 'Colour matrix' Top = 16 Width = 40 Color = 11842815 ParentFont = False TabOrder = 8 Text = '1.0' end object rb1: TEdit Left = 243 Height = 23 Hint = 'Colour matrix' Top = 16 Width = 40 Color = 16757940 ParentFont = False TabOrder = 10 Text = '0.0' end object gr1: TEdit Left = 163 Height = 23 Hint = 'Colour matrix' Top = 40 Width = 40 Color = 11842815 ParentFont = False TabOrder = 11 Text = '0.0' end object gb1: TEdit Left = 243 Height = 23 Hint = 'Colour matrix' Top = 40 Width = 40 Color = 16757940 ParentFont = False TabOrder = 13 Text = '0.0' end object br1: TEdit Left = 163 Height = 23 Hint = 'Colour matrix' Top = 64 Width = 40 Color = 11842815 ParentFont = False TabOrder = 14 Text = '0.0' end object bb1: TEdit Left = 243 Height = 23 Hint = 'Colour matrix' Top = 64 Width = 40 Color = 16757940 ParentFont = False TabOrder = 16 Text = '1.0' end object Label56: TLabel Left = 163 Height = 15 Hint = 'Red signal' Top = 0 Width = 30 Caption = 'R_out' ParentColor = False ParentFont = False end object Label57: TLabel Left = 203 Height = 15 Hint = 'Green signal' Top = 0 Width = 31 Caption = 'G_out' ParentColor = False ParentFont = False end object Label58: TLabel Left = 243 Height = 15 Hint = 'Blue signal' Top = 0 Width = 30 Caption = 'B_out' ParentColor = False ParentFont = False end object Label59: TLabel Left = 163 Height = 15 Top = 96 Width = 30 Caption = 'L Bias' ParentColor = False ParentFont = False end object Label47: TLabel Left = 2 Height = 15 Top = 0 Width = 64 Caption = 'Filter names' ParentColor = False ParentFont = False end object lrgb_auto_level1: TCheckBox Left = 0 Height = 19 Hint = 'Auto adjust the colour levels after stacking.' Top = 144 Width = 78 Caption = 'Auto levels' Checked = True Color = clDefault OnChange = lrgb_auto_level1Change ParentColor = False ParentFont = False State = cbChecked TabOrder = 20 end object lrgb_colour_smooth1: TCheckBox Left = 0 Height = 19 Hint = 'Apply colour smooth after stacking.' Top = 200 Width = 100 Caption = 'Colour smooth' Checked = True Color = clDefault ParentColor = False ParentFont = False State = cbChecked TabOrder = 21 end object lrgb_smart_smooth_width1: TComboBox Left = 140 Height = 23 Hint = 'Colour smoothing range in pixels. This will keep luminance but smooth the colours. Default is 10, Set this as high as eight times the HFD value.' Top = 200 Width = 62 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '5' '7' '10' '15' '20' '25' '35' '50' ) ParentFont = False TabOrder = 22 Text = '10' end object lrgb_smart_colour_sd1: TComboBox Left = 231 Height = 23 Hint = 'Standard deviation to detect objects to be colour blurred. Default 3' Top = 200 Width = 62 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '2.0' '2.5' '3.0' '4.0' '5.0' '6.0' ) ParentFont = False TabOrder = 23 Text = '3.0' end object lrgb_preserve_r_nebula1: TCheckBox Left = 140 Height = 19 Hint = 'Preserve red nebula around bright stars. The red nebula will come closer to the star.' Top = 231 Width = 117 Caption = 'preserve_R_nebula' Checked = True State = cbChecked TabOrder = 24 end object green_purple_filter1: TCheckBox Left = 0 Height = 19 Hint = 'Balances RGB to remove green and purple.' Top = 172 Width = 146 Caption = 'Remove green && purple' Checked = True Color = clDefault ParentColor = False ParentFont = False State = cbChecked TabOrder = 25 end end object Label18: TLabel Left = 864 Height = 105 Top = 240 Width = 559 Caption = '- LRGB stacking is activated by check-mark Classify by "Light filter". Else it will stack in grayscale or colour depending on BAYERPAT in header.'#13#10#13#10'- If a luminance filter is found, the RGB colour will be used to colour the luminance signal. If one of the colour values of the matrix, R_our, G_out, B_out is zero, enter a bias value to compensate e.g. 200.'#13#10#13#10'- For different image sizes use astrometric align.' Color = clBtnFace Constraints.MaxWidth = 568 ParentColor = False ParentFont = False Transparent = False WordWrap = True end object mosaic_box1: TGroupBox Left = 864 Height = 168 Hint = 'Tools for equalizing the tiles of the mosaic.' Top = 16 Width = 329 Caption = 'Image stitching (mosaic) settings' ClientHeight = 148 ClientWidth = 325 Enabled = False ParentFont = False TabOrder = 4 object mosaic_width2: TEdit Left = 192 Height = 23 Hint = 'Select the mosaic width/height in tiles. For 2x2 select 2. For 2x3 select 3.' Top = 5 Width = 48 ParentFont = False TabOrder = 0 Text = '2' end object mosaic_width1: TUpDown Left = 240 Height = 23 Top = 5 Width = 17 Associate = mosaic_width2 Min = 2 MinRepeatInterval = 25 Position = 2 TabOrder = 1 end object Label37: TLabel Left = 0 Height = 15 Top = 8 Width = 153 Caption = 'Mosaic width/height in tiles:' ParentColor = False ParentFont = False end object Equalise_background1: TCheckBox Left = 0 Height = 19 Hint = 'This is for setting the background level of each tile equal based on the histogram. Use this option only if most of the image doesn''t contain nebula.' Top = 40 Width = 130 Caption = 'Equalise background' Checked = True ParentFont = False State = cbChecked TabOrder = 2 end object Label65: TLabel Left = 0 Height = 15 Top = 72 Width = 114 Caption = 'Crop each image [%] ' ParentColor = False ParentFont = False end object mosaic_crop2: TEdit Left = 192 Height = 23 Hint = 'Use to remove poor areas near borders' Top = 64 Width = 48 ParentFont = False TabOrder = 3 Text = '0' end object mosaic_crop1: TUpDown Left = 240 Height = 23 Top = 64 Width = 17 Associate = mosaic_crop2 Max = 99 Min = 0 MinRepeatInterval = 25 Position = 0 TabOrder = 4 end object merge_overlap1: TCheckBox Left = 0 Height = 19 Hint = 'The overlapping areas are combined except for stars. This could result in better or worse result. If your image shows distortion uncheck this option.' Top = 104 Width = 192 Caption = 'Merge overlapping backgrounds' ParentFont = False TabOrder = 5 end end object raw_box1: TGroupBox Left = 24 Height = 304 Hint = 'Settings for OSC images.. If disabled uncheck "Classify by light filter".' Top = 112 Width = 464 Caption = 'RAW one shot colour images' ClientHeight = 284 ClientWidth = 460 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 5 object make_osc_color1: TCheckBox Left = 0 Height = 19 Hint = 'Force converting OSC images to colour. This setting is only required if BAYERPAT keyword is missing in the header.' Top = 18 Width = 196 Caption = 'Force processing as OSC images. ' Color = clDefault OnClick = make_osc_color1Click ParentColor = False ParentFont = False TabOrder = 0 end object bayer_pattern1: TComboBox Left = 224 Height = 23 Top = 18 Width = 104 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'auto' 'GRBG' 'BGGR' 'RGGB' 'GBRG' 'X-Trans' ) OnSelect = bayer_pattern1Select ParentFont = False Style = csDropDownList TabOrder = 1 Text = 'auto' end object Label12: TLabel Left = 224 Height = 15 Top = 0 Width = 73 Alignment = taRightJustify Caption = 'Bayer pattern ' ParentColor = False ParentFont = False end object demosaic_method1: TComboBox Left = 0 Height = 23 Hint = 'Demosaic method of colour filter array. Best methods are AstroC and Simple. For pure white stars you could AstroM. ' Top = 160 Width = 390 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'AstroC, colour for saturated stars.' 'AstroM, white stars' 'AstroSimple' 'Bilinear interpolation' 'SuperPixel' ) ParentFont = False Style = csDropDownList TabOrder = 2 Text = 'AstroC, colour for saturated stars.' end object test_pattern1: TButton Left = 336 Height = 25 Hint = 'Test Bayer demosaic pattern on the image in the viewer. Hit ctrl-Z to restore' Top = 18 Width = 104 Caption = 'Test pattern' Enabled = False OnClick = test_pattern1Click ParentFont = False TabOrder = 3 end object Label61: TLabel Left = 2 Height = 15 Top = 140 Width = 105 Caption = 'De-mosaic method:' ParentColor = False ParentFont = False end object undo_button7: TBitBtn Left = 410 Height = 30 Hint = 'Undo last action' Top = 61 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 4 end object help_osc_menu1: TLabel Cursor = crHandPoint Left = 431 Height = 30 Hint = 'Help' Top = 153 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_osc_menu1Click end object osc_auto_level1: TCheckBox Left = 0 Height = 19 Hint = 'Auto adjust the colour levels after stacking.' Top = 44 Width = 78 Caption = 'Auto levels' Checked = True Color = clDefault ParentColor = False ParentFont = False State = cbChecked TabOrder = 5 end object Label13: TLabel Left = 2 Height = 15 Top = 192 Width = 277 Caption = 'Best demosaic methods are AstroC and AstroSimple.' ParentColor = False end object Label25: TLabel Left = 0 Height = 15 Top = 224 Width = 86 Caption = 'Raw conversion:' ParentColor = False end object raw_conversion_program1: TComboBox Left = 136 Height = 23 Hint = 'Conversion program for raw files.' Top = 224 Width = 254 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( 'LibRaw (full active area)' 'LibRaw (cropped active area)' 'Dcraw' '' ) ParentFont = False Style = csDropDownList TabOrder = 6 Text = 'LibRaw (cropped active area)' end object osc_colour_smooth1: TCheckBox Left = 0 Height = 19 Hint = 'Apply colour smooth after stacking.' Top = 100 Width = 100 Caption = 'Colour smooth' Checked = True Color = clDefault ParentColor = False ParentFont = False State = cbChecked TabOrder = 7 end object osc_smart_colour_sd1: TComboBox Left = 219 Height = 23 Hint = 'Standard deviation to detect objects to be colour blurred. Default 3' Top = 100 Width = 60 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '2.0' '2.5' '3.0' '4.0' '5.0' '6.0' ) ParentFont = False TabOrder = 8 Text = '3.0' end object osc_smart_smooth_width1: TComboBox Left = 128 Height = 23 Hint = 'Colour smoothing range in pixels. This will keep luminance but smooth the colours. Default is 10' Top = 100 Width = 60 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '5' '7' '10' '15' '20' '25' ) ParentFont = False TabOrder = 9 Text = '10' end object osc_preserve_r_nebula1: TCheckBox Left = 296 Height = 19 Hint = 'Preserve red nebula around bright stars' Top = 100 Width = 117 Caption = 'preserve_R_nebula' Checked = True State = cbChecked TabOrder = 10 end object apply_normalise_filter1: TCheckBox Left = 0 Height = 19 Hint = 'Colour shift by not using a white light source for the flat frames is compensated. The flat shall be raw image.' Top = 72 Width = 120 Caption = 'Normalise OSC flat' Color = clDefault ParentColor = False ParentFont = False TabOrder = 11 end object test_osc_normalise_filter1: TButton Left = 224 Height = 25 Hint = 'Test on the current displayed image. Colour shifts by not using a white light source for the flat frames are compensated. The flat should be a raw with preferable a dark-flat is subtracted (master flat), Use CTRL-Z to undo.' Top = 66 Width = 138 AutoSize = True Caption = '<- Test flat normalise' OnClick = test_osc_normalise_filter1Click ParentFont = False TabOrder = 12 end end end object alignment1: TTabSheet Hint = 'Set here the frame alignment and solver options.' Caption = 'Alignment' ClientHeight = 470 ClientWidth = 1849 ImageIndex = 7 ParentFont = False object use_star_alignment1: TRadioButton Left = 8 Height = 19 Hint = 'Program will select four star pyramids to match images.' Top = 24 Width = 97 Caption = 'Star alignment' Checked = True OnChange = use_star_alignment1Change ParentFont = False TabOrder = 0 TabStop = True end object help_astrometric_alignment1: TLabel Cursor = crHandPoint Left = 160 Height = 25 Hint = 'Help' Top = 152 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -19 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_astrometric_alignment1Click end object use_manual_alignment1: TRadioButton Left = 8 Height = 19 Hint = 'Manual alignment: Double click on each image in the list to display it in the viewer. In the viewer click on the object the be used for alignment. Position is auto centered. ' Top = 216 Width = 117 Caption = 'Manual alignment' OnChange = use_manual_alignment1Change ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 end object solve1: TButton Left = 1104 Height = 30 Hint = 'Find an astrometric solution for the image in the viewer.'#13#10#13#10'Checklist for successful solving:'#13#10#13#10'- At least 30 stars are visible.'#13#10'- Reasonable round stars.'#13#10'- Image dimensions at least 1280x960 pixels.'#13#10'- An approximate position is available for a spiral search'#13#10'- Correct image height in degrees specified. See stack menu tab alignment.'#13#10'- Image is not stretched or heavily photo-shopped.' Top = 56 Width = 320 Caption = 'Solve current image' OnClick = solve1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 end object help_astrometric_solving1: TLabel Cursor = crHandPoint Left = 1104 Height = 25 Hint = 'Help' Top = 114 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -19 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_astrometric_solving1Click end object use_astrometry_internal1: TRadioButton Left = 8 Height = 19 Hint = 'Use this for mosaic building.' Top = 64 Width = 139 Caption = 'Astrometric alignment' OnChange = use_astrometry_internal1Change ParentFont = False TabOrder = 3 end object GroupBox_astrometric_solver_settings1: TGroupBox Left = 208 Height = 192 Top = 0 Width = 849 AutoSize = True Caption = 'Solver' ClientHeight = 172 ClientWidth = 845 ParentFont = False TabOrder = 4 object Panel_solver1: TPanel Left = 0 Height = 172 Top = 0 Width = 845 AutoSize = True BevelColor = clMenuHighlight BevelOuter = bvSpace ClientHeight = 172 ClientWidth = 845 ParentFont = False TabOrder = 0 object star_database1: TComboBox Left = 561 Height = 23 Hint = 'Star database in use. Selection will be automatic. Enter manually a database to force use. Type blank to reactivate automatic selection.' Top = 90 Width = 72 BorderSpacing.Around = 5 ItemHeight = 15 Items.Strings = ( '1' ) OnDropDown = star_database1DropDown ParentFont = False Sorted = True TabOrder = 3 Text = 'auto' end object Label53: TLabel Left = 377 Height = 20 Top = 90 Width = 176 Alignment = taRightJustify AutoSize = False BorderSpacing.Around = 5 Caption = 'Star database used:' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label50: TLabel Left = 377 Height = 20 Top = 34 Width = 176 Alignment = taRightJustify AutoSize = False BorderSpacing.Around = 5 Caption = 'Radius search area [°]:' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object radius_search1: TComboBox Left = 561 Height = 23 Hint = 'Enter the search field in degrees. The program will search in a square spiral around the start position as indicated in the viewer.' Top = 34 Width = 72 BorderSpacing.Around = 5 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( '10' '20' '30' '60' '180' ) ParentFont = False TabOrder = 1 Text = '20' end object actual_search_distance1: TLabel Left = 649 Height = 15 Top = 34 Width = 50 AutoSize = False BorderSpacing.Around = 5 Caption = '0°' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label48: TLabel Left = 377 Height = 20 Top = 6 Width = 176 Alignment = taRightJustify AutoSize = False BorderSpacing.Around = 5 Caption = 'Field of view (height)[°]:' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object search_fov1: TComboBox Left = 561 Height = 23 Hint = 'Field height of the image. In most cases this will be calculated automatically. If not enter the field height manually or select auto mode.' Top = 6 Width = 72 BorderSpacing.Around = 5 DropDownCount = 20 ItemHeight = 15 ItemIndex = 3 Items.Strings = ( '0.5' '0.6' '0.8' '1' '1.3' '1.6' '2' '2.5' '3' '4' '5' '6' '8' '10' '13' 'auto' ) OnChange = search_fov1Change ParentFont = False TabOrder = 0 Text = '1' end object GroupBox_star_alignment_settings1: TGroupBox Left = 1 Height = 164 Top = 7 Width = 362 AutoSize = True Caption = 'Tetrahedron detection' ClientHeight = 144 ClientWidth = 358 ParentFont = False TabOrder = 4 object Panel_star_detection1: TPanel Left = 0 Height = 144 Top = 0 Width = 358 BevelColor = clMenuHighlight BevelOuter = bvSpace ClientHeight = 144 ClientWidth = 358 ParentFont = False TabOrder = 0 object max_stars1: TComboBox Left = 263 Height = 23 Hint = 'Number of star takens from the image for alignment. Typical value 200 to 500. For crowded star fields reduce to 100 to 200 or use auto mode.' Top = 37 Width = 88 BorderSpacing.Around = 5 DropDownCount = 20 ItemHeight = 15 ItemIndex = 4 Items.Strings = ( 'auto' '200' '300' '400' '500' '600' '800' '1000' ) ParentFont = False TabOrder = 1 Text = '500' end object Label21: TLabel Left = 8 Height = 20 Top = 37 Width = 248 Alignment = taRightJustify AutoSize = False BorderSpacing.Around = 5 Caption = 'Maximum number of stars to use:' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label51: TLabel Left = 8 Height = 20 Top = 64 Width = 248 Alignment = taRightJustify AutoSize = False BorderSpacing.Around = 5 Caption = 'Hash code tolerance:' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object quad_tolerance1: TComboBox Left = 263 Height = 23 Hint = 'If detections fails increase tolerance. Typical value 0.003 up to 0.008' Top = 64 Width = 88 BorderSpacing.Around = 5 DropDownCount = 20 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '0.003' '0.005' '0.007' '0.01' ) ParentFont = False TabOrder = 2 Text = '0.007' end object solve_show_log1: TCheckBox Left = 122 Height = 19 Hint = 'Show extra information in log for debugging.' Top = 120 Width = 155 Alignment = taLeftJustify BorderSpacing.Around = 5 Caption = 'Show extended solver log' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 3 end object downsample_for_solving1: TComboBox Left = 263 Height = 23 Hint = 'Binning of the image will be applied prior to plate solving. 0 is automatic selection. Use binning if image is large or very noisy.' Top = 8 Width = 87 BorderSpacing.Around = 5 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '0' '1' '2' '3' '4' ) OnChange = resize_factor1Change ParentFont = False Style = csDropDownList TabOrder = 0 Text = '0' end object downsample_solving_label1: TLabel Left = 8 Height = 20 Top = 8 Width = 248 Alignment = taRightJustify AutoSize = False BorderSpacing.Around = 5 Caption = 'Downsample:' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object min_star_size_stacking1: TComboBox Left = 263 Height = 23 Hint = 'Default value is 0.8. Use this to ignore hotpixels. For stacking only.' Top = 92 Width = 88 BorderSpacing.Around = 5 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '0.8' '1.5' '2' '3' ) ParentFont = False TabOrder = 4 Text = '0.8' end object binning_for_solving_label4: TLabel Left = 8 Height = 20 Hint = 'Crop images above this height [degrees].' Top = 92 Width = 248 Alignment = taRightJustify AutoSize = False BorderSpacing.Around = 5 Caption = 'Ignore stars less then [HFD]:' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end end end object calibrate_prior_solving1: TCheckBox Left = 673 Height = 19 Hint = 'Calibrate the images prior to solving. Use this for noisy images.' Top = 104 Width = 136 BorderSpacing.Around = 5 Caption = 'Calibrate prior solving' Color = clBtnFace OnChange = calibrate_prior_solving1Change ParentColor = False ParentFont = False TabOrder = 5 end object force_oversize1: TCheckBox Left = 673 Height = 19 Hint = 'Check-mark this to improve solving reliability in some cases. Search window will be always large with overlap but it will slow down solving. Default this is off. If off the search window size will be automatically reduced if sufficient stars are found. This option is equivalent to command line option -speed' Top = 80 Width = 45 BorderSpacing.Around = 5 Caption = 'Slow' Color = clBtnFace ParentColor = False ParentFont = False TabOrder = 6 end object min_star_size1: TComboBox Left = 561 Height = 23 Hint = 'Will filter out hot pixels' Top = 62 Width = 72 BorderSpacing.Around = 5 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '0.5' '1.0' '1.5' '2.0' '2.5' '3.0' '3.5' '4.0' ) OnChange = resize_factor1Change ParentFont = False TabOrder = 2 Text = '1.5' end object binning_for_solving_label3: TLabel Left = 377 Height = 20 Hint = 'Crop images above this height [degrees].' Top = 62 Width = 176 Alignment = taRightJustify AutoSize = False BorderSpacing.Around = 5 Caption = 'Ignore stars less then ["]:' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object ignore_header_solution1: TCheckBox Left = 381 Height = 19 Hint = 'Apply this if the FITS header contains already a solution which is not accurate. ' Top = 150 Width = 335 Caption = 'Ignore existing FITS header solution for astrometric stacking' ParentFont = False TabOrder = 7 end object save_settings_extra_button1: TButton Left = 769 Height = 25 Hint = 'Save settings' Top = 6 Width = 75 Caption = 'Save' OnClick = save_settings_extra_button1Click TabOrder = 8 Visible = False end object check_pattern_filter1: TCheckBox Left = 673 Height = 19 Hint = 'Intended for OSC cameras in bin 1x1 mode only. It will remove the check pattern prior to solving. ' Top = 128 Width = 121 BorderSpacing.Around = 5 Caption = 'Check pattern filter' Color = clBtnFace OnChange = check_pattern_filter1Change ParentColor = False ParentFont = False TabOrder = 9 end object use_triples1: TCheckBox Left = 672 Height = 19 Hint = 'Use triples (three star) for pattern detection for images with less then 30 stars. In all other case use quads (four star).' Top = 56 Width = 74 BorderSpacing.Around = 5 Caption = 'Use triples' Color = clBtnFace ParentColor = False ParentFont = False TabOrder = 10 end end end object show_quads1: TBitBtn Left = 1104 Height = 30 Hint = 'Show quads connections as irregular tetrahedrons in the current image.' Top = 16 Width = 320 BorderSpacing.Around = 5 Caption = 'Test button to show quads' Glyph.Data = { F6000000424DF600000000000000760000002800000010000000100000000100 0400000000008000000000000000000000000000000000000000000000000000 8000008000000080800080000000800080008080000080808000C0C0C0000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00DDDDD7777777 7777DDDDD77DDDDDDD77DDDD7DD7DDDDD7D7DDDD7DDD7DDD7DD7DDDD7DDDD7D7 DDD7DDD7DDDDDD7DDDD7DDD7DDDDD77DDDD7DDD7DDDD7DD7DDD7DD7DDDD7DDDD 7DD7DD7DDD7DDDDDD7D7DD7DD7DDDDDDDD77D7DD7DDDDDDDDDD7D7D7DDDDDDD7 777DD77DDDD7777DDDDD77D7777DDDDDDDDD777DDDDDDDDDDDDD } OnClick = show_quads1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 5 end object panel_manual1: TPanel Left = 208 Height = 35 Top = 216 Width = 1200 AutoSize = True BevelColor = clMenuHighlight BevelOuter = bvSpace ClientHeight = 35 ClientWidth = 1200 Color = clForm Constraints.MinWidth = 1200 ParentColor = False ParentFont = False TabOrder = 6 object manual_centering1: TComboBox Left = 6 Height = 23 Hint = 'Manual alignment: Select an object center routine. After clicking on a star or comet the program will autocenter.'#13#10#13#10#13#10'Ephemeris alignment: '#13#10#13#10'Preperation:'#13#10'- Batch solve the images in the viewer.'#13#10'- Batch annotate the images in the viewer.'#13#10#13#10'Stacking:'#13#10'- Select manual/ephemeris alignment'#13#10'- Browse for all the images in the image tab and add if available the dark, flats.'#13#10'- Double click on one of the image files to open in the viewer. This will fill in tab alignment the option combobox with all annotations.'#13#10'- Select from the option combobox the asteroid to align on.'#13#10'- Hit the analyse button in the image tab. This fill all the x,y positions in the image list based on the object annotation selected.'#13#10'- If all okay, hit the stack button. ' Top = 6 Width = 200 BorderSpacing.Around = 5 DropDownCount = 20 ItemHeight = 15 Items.Strings = ( 'Star centering' 'Comet centering (small object)' 'Comet centering (medium object)' 'Comet centering (large object)' 'No centering' ) ParentFont = False Style = csDropDownList TabOrder = 0 end end object use_ephemeris_alignment1: TRadioButton Left = 8 Height = 19 Hint = 'Ephemeris alignment: '#13#10#13#10'Preperation:'#13#10'- Batch solve the images in the viewer.'#13#10'- Batch annotate the images in the viewer.'#13#10#13#10'Stacking:'#13#10'- Select manual/ephemeris alignment'#13#10'- Browse for all the images in the image tab and add if available the dark, flats.'#13#10'- Double click on one of the image files to open in the viewer. This will fill in tab alignment the option combobox with all annotations.'#13#10'- Select from the option combobox the asteroid to align on.'#13#10'- Hit the analyse button in the image tab. This fill all the x,y positions in the image list based on the object annotation selected.'#13#10'- If all okay, hit the stack button. ' Top = 288 Width = 143 Caption = 'Emphemeris alignment' OnChange = use_ephemeris_alignment1Change ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 7 end object panel_ephemeris1: TPanel Left = 208 Height = 35 Top = 288 Width = 1200 AutoSize = True BevelColor = clMenuHighlight BevelOuter = bvSpace ClientHeight = 35 ClientWidth = 1200 Color = clForm Constraints.MinWidth = 1200 ParentColor = False ParentFont = False TabOrder = 8 object ephemeris_centering1: TComboBox Left = 6 Height = 23 Hint = 'Manual alignment: Select an object center routine. After clicking on a star or comet the program will autocenter.'#13#10#13#10#13#10'Ephemeris alignment: '#13#10#13#10'Preperation:'#13#10'- Batch solve the images in the viewer.'#13#10'- Batch annotate the images in the viewer.'#13#10#13#10'Stacking:'#13#10'- Select manual/ephemeris alignment'#13#10'- Browse for all the images in the image tab and add if available the dark, flats.'#13#10'- Double click on one of the image files to open in the viewer. This will fill in tab alignment the option combobox with all annotations.'#13#10'- Select from the option combobox the asteroid to align on.'#13#10'- Hit the analyse button in the image tab. This fill all the x,y positions in the image list based on the object annotation selected.'#13#10'- If all okay, hit the stack button. ' Top = 6 Width = 200 BorderSpacing.Around = 5 DropDownCount = 20 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '' ) OnChange = ephemeris_centering1Change ParentFont = False Style = csDropDownList TabOrder = 0 end object analyse_objects_visibles1: TButton Left = 238 Height = 25 Hint = 'This will fill the combobox with objects visible in the image.' Top = 4 Width = 226 AutoSize = True Caption = 'Analyse the selected file in tab images' OnClick = analyse_objects_visibles1Click TabOrder = 1 end object update_solution1: TCheckBox Left = 782 Height = 19 Hint = 'Apply this if the FITS header contains already a solution which is not accurate. ' Top = 6 Width = 207 Caption = 'Ignore existing FITS header solution' ParentFont = False TabOrder = 2 end object update_annotations1: TCheckBox Left = 550 Height = 19 Hint = 'Apply this if you change the annotation setting.' Top = 6 Width = 214 Caption = 'Refresh existing asteroid annotations' ParentFont = False TabOrder = 3 end object auto_rotate1: TCheckBox Left = 1030 Height = 19 Hint = 'Use this option if part of the images are rotated due to meridian flip' Top = 6 Width = 80 Caption = 'Auto rotate' ParentFont = False TabOrder = 4 end end end object tab_blink1: TTabSheet Hint = 'Blinking tool for astronomical images.' Caption = 'Blink' ClientHeight = 470 ClientWidth = 1849 ImageIndex = 11 ParentFont = False object listview6: TListView Left = 0 Height = 434 Hint = 'Double click to view image' Top = 36 Width = 1849 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 36 Checkboxes = True Columns = < item AutoSize = True Caption = 'File' MinWidth = 150 Width = 33 end item Alignment = taRightJustify Caption = 'Exposure' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'Temperature' MinWidth = 100 Width = 100 end item Alignment = taRightJustify Caption = 'Binning' MinWidth = 70 Width = 70 end item Alignment = taRightJustify Caption = 'Width' MinWidth = 55 Width = 60 end item Alignment = taRightJustify Caption = 'Height' MinWidth = 60 Width = 60 end item AutoSize = True Caption = 'Type' MinWidth = 50 Width = 40 end item Alignment = taRightJustify AutoSize = True Caption = 'Date/Time' MinWidth = 90 Width = 70 end item Alignment = taRightJustify Caption = 'Calibration' MinWidth = 90 Width = 90 end item Alignment = taRightJustify Caption = 'Solution' MinWidth = 90 Width = 90 end item Caption = 'Annotated' MinWidth = 90 Width = 770 end> GridLines = True HideSelection = False MultiSelect = True ParentFont = False PopupMenu = PopupMenu6 ReadOnly = True RowSelect = True ScrollBars = ssAutoBoth SmallImages = ImageList_colors SortColumn = 9 SortType = stText TabOrder = 0 ViewStyle = vsReport OnColumnClick = listview1ColumnClick OnCompare = listview1Compare OnCustomDraw = listview6CustomDraw OnCustomDrawItem = listview6CustomDrawItem OnDblClick = listview1DblClick OnKeyDown = listview1KeyDown end object clear_blink_list1: TButton Left = 1352 Height = 25 Hint = 'Clear image list' Top = 5 Width = 53 AutoSize = True Caption = 'Clear' OnClick = clear_blink_list1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 end object nr_total_blink1: TLabel Left = 272 Height = 15 Hint = 'Number of images in the list' Top = 10 Width = 6 Caption = '0' ParentColor = False ParentFont = False end object blink_button1: TButton Left = 440 Height = 26 Hint = 'Blink check-marked images once' Top = 6 Width = 75 Caption = '▶|' OnClick = blink_button1Click ParentFont = False TabOrder = 2 end object blink_stop1: TButton Left = 352 Height = 26 Hint = 'Stop blinking' Top = 6 Width = 75 Caption = '⏹' OnClick = blink_stop1Click ParentFont = False TabOrder = 3 end object blink_button_contF1: TButton Left = 536 Height = 26 Hint = 'Continous blink check-marked images' Top = 6 Width = 43 Caption = ' ▶' OnClick = blink_button1Click ParentFont = False TabOrder = 4 end object align_blink1: TCheckBox Left = 696 Height = 19 Hint = 'Use star alignment to align images. For the first round additional time will be required for calculating solution. Clear alignment if you reuse images.' Top = 0 Width = 89 Caption = 'Align images' Checked = True OnChange = align_blink1Change ParentFont = False State = cbChecked TabOrder = 5 end object solve_and_annotate1: TCheckBox Left = 960 Height = 19 Hint = 'Solve images and annotate with MPCORB database. For setting see viewer, tools, annotate asteroids.' Top = 0 Width = 212 Caption = 'Solve images and annotate asteroids' OnChange = solve_and_annotate1Change ParentFont = False TabOrder = 6 end object clear_blink_alignment1: TButton Left = 824 Height = 25 Hint = 'Clear alignment and photometric calibration. Apply this if alignment is poor.' Top = 5 Width = 110 AutoSize = True Caption = 'Clear alignment' OnClick = clear_blink_alignment1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 7 end object analyseblink1: TButton Left = 136 Height = 25 Hint = 'Analyse image files' Top = 5 Width = 67 AutoSize = True Caption = 'Analyse' OnClick = analyseblink1Click ParentFont = False TabOrder = 8 end object help_blink1: TLabel Cursor = crHandPoint Left = 1432 Height = 30 Hint = 'Online help' Top = 1 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_blink1Click end object export_aligned_files1: TButton Left = 1568 Height = 25 Hint = 'Export the images with solution to new aligned image files (_aligned.fit). Prior to this run the blink routine once to get alignment solutions.' Top = 4 Width = 102 AutoSize = True Caption = 'Export aligned' OnClick = export_aligned_files1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 9 end object update_annotation1: TCheckBox Left = 960 Height = 19 Hint = 'Update existing FITS header annotations.' Top = 16 Width = 124 Caption = 'Update annotations' Enabled = False ParentFont = False TabOrder = 10 end object write_video1: TButton Left = 1472 Height = 25 Hint = 'Write image list as YUV4MPEG2 video with extension y4m.' Top = 5 Width = 86 AutoSize = True Caption = 'Write video' OnClick = write_video1Click TabOrder = 11 end object timestamp1: TCheckBox Left = 696 Height = 19 Hint = 'Write data and time to screen and image array. If the file is saved this annotation in written in the image itself.' Top = 16 Width = 82 Caption = 'Time stamp' Checked = True OnChange = align_blink1Change ParentFont = False State = cbChecked TabOrder = 12 end object blink_button_contB1: TButton Left = 584 Height = 26 Hint = 'Continous blink check-marked images' Top = 6 Width = 43 Caption = '◀' OnClick = blink_button1Click ParentFont = False TabOrder = 13 end object browse_blink1: TBitBtn Left = 16 Height = 25 Hint = 'Select images to blink.' Top = 6 Width = 92 Caption = 'Browse' Images = ImageList2 ImageIndex = 23 OnClick = browse_blink1Click TabOrder = 14 end object annotations_visible1: TLabel Left = 1195 Height = 15 Hint = 'Annotation are visible if set in the viewer menu VIEW' Top = 16 Width = 101 Caption = 'Annotations visible' Enabled = False ParentColor = False end end object tab_photometry1: TTabSheet Hint = 'Photometry of variable stars.' Caption = 'Photometry' ClientHeight = 470 ClientWidth = 1849 ImageIndex = 19 ParentFont = False object analysephotometry1: TButton Left = 120 Height = 26 Hint = 'Analyse image files' Top = 5 Width = 80 Caption = 'Analyse' OnClick = analysephotometry1Click ParentFont = False TabOrder = 0 end object nr_total_photometry1: TLabel Left = 280 Height = 15 Hint = 'Number of images in the list' Top = 9 Width = 6 Caption = '0' ParentColor = False ParentFont = False end object photometry_stop1: TButton Left = 352 Height = 26 Hint = 'Stop photometry blinking' Top = 5 Width = 75 Caption = '⏹' OnClick = blink_stop1Click ParentFont = False TabOrder = 1 end object photometry_button1: TButton Left = 440 Height = 26 Hint = 'Scroll through the check-marked images once and measure the marked stars.' Top = 5 Width = 75 Caption = '▶|' OnClick = photometry_button1Click ParentFont = False TabOrder = 2 end object photometry_repeat1: TButton Left = 528 Height = 26 Hint = 'Continous scrolling through the check-marked images and measure the marked stars.' Top = 5 Width = 40 Caption = '▶' OnClick = photometry_button1Click ParentFont = False TabOrder = 3 end object clear_photometry_list1: TButton Left = 1488 Height = 26 Hint = 'Clear image list' Top = 5 Width = 53 Caption = 'Clear' OnClick = clear_photometry_list1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 end object listview7: TListView Left = 0 Height = 434 Hint = 'Double click to view image' Top = 36 Width = 1849 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 36 Checkboxes = True Columns = < item AutoSize = True Caption = 'File' MinWidth = 150 Width = 33 end item Alignment = taRightJustify Caption = 'Exposure' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'Temperature' MinWidth = 100 Width = 100 end item Alignment = taRightJustify Caption = 'Binning' MinWidth = 70 Width = 70 end item Alignment = taRightJustify Caption = 'Width' MinWidth = 55 Width = 60 end item Alignment = taRightJustify Caption = 'Height' MinWidth = 60 Width = 60 end item AutoSize = True Caption = 'Type' MinWidth = 50 Width = 40 end item Alignment = taRightJustify Caption = 'Background' MinWidth = 90 Width = 90 end item Caption = 'Filter' end item Alignment = taRightJustify AutoSize = True Caption = 'Date/time (start)' MinWidth = 120 Width = 102 end item Alignment = taRightJustify Caption = 'JD (mid exp)' MinWidth = 100 Width = 100 end item Alignment = taRightJustify Caption = 'HJD (helio)' MinWidth = 100 Width = 100 end item Alignment = taRightJustify Caption = 'Magn. Var' MinWidth = 100 Width = 100 end item Alignment = taRightJustify Caption = 'SNR Var' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'Magn. Check' MinWidth = 100 Width = 100 end item Alignment = taRightJustify Caption = 'Magn. 3' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'HFD' MinWidth = 50 end item Alignment = taRightJustify Caption = 'Stars' MinWidth = 50 end item Alignment = taRightJustify Caption = 'Astrometric' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'Photometric' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'Calibration' MinWidth = 70 Width = 70 end item Caption = 'Centalt' MinWidth = 70 Width = 70 end item Caption = 'Airmass' MinWidth = 70 Width = 70 end item Caption = 'Lim-magn' MinWidth = 70 Width = 70 end> GridLines = True HideSelection = False MultiSelect = True ParentFont = False PopupMenu = PopupMenu7 ReadOnly = True RowSelect = True ScrollBars = ssAutoBoth SmallImages = ImageList_colors SortColumn = 9 SortType = stText TabOrder = 5 ViewStyle = vsReport OnColumnClick = listview1ColumnClick OnCompare = listview1Compare OnCustomDraw = listview7CustomDraw OnCustomDrawItem = listview7CustomDrawItem OnDblClick = listview1DblClick OnKeyDown = listview1KeyDown end object help_photometry1: TLabel Cursor = crHandPoint Left = 1392 Height = 30 Hint = 'Online help' Top = 1 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_photometry1Click end object photometry_binx2: TButton Left = 1416 Height = 26 Hint = 'Bin the images for better photometric detection. Original files will not be affected.' Top = 5 Width = 61 Caption = 'Bin x 2' OnClick = photometry_binx2Click ParentFont = False TabOrder = 6 end object mark_outliers_upto1: TComboBox Left = 1800 Height = 23 Hint = 'Mark outliers up to this magnitude' Top = 9 Width = 48 ItemHeight = 15 ItemIndex = 3 Items.Strings = ( '11' '12' '13' '14' '15' '16' '17' ) OnChange = flux_aperture1change ParentFont = False TabOrder = 7 Text = '14' end object refresh_astrometric_solutions1: TButton Left = 1040 Height = 25 Hint = 'This will renew the astrometric solutions and photometric calibration . Use this only for the rare case the solutions are wrong and alignment is poor.' Top = 6 Width = 179 AutoSize = True Caption = 'Refresh astrometric solutions' OnClick = refresh_astrometric_solutions1click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 8 end object aavso_button1: TButton Left = 1248 Height = 25 Hint = 'Generate AAVSO report' Top = 6 Width = 99 AutoSize = True Caption = 'AAVSO report' OnClick = aavso_button1Click TabOrder = 9 end object extract_green1: TButton Left = 888 Height = 25 Hint = 'For raw OSC images only. Not for images converted to colour. The routine will combine for each bayer submosaic the two green pixels or red or blue pixel. Check in advance the de-mosaic pattern in stack menu, tab stack method.' Top = 6 Width = 133 AutoSize = True Caption = 'RAW RGB extraction' OnClick = extract_green1Click TabOrder = 10 end object flux_aperture1: TComboBox Left = 648 Height = 23 Hint = 'Flux measuring aperture [x HFD ]. Typical range 1 to max. With max all star flux is measured. Can be adjusted to find the lowest standard deviation in the results (check star). Typical values 1.5 or 2.0' Top = 6 Width = 80 DropDownCount = 10 ItemHeight = 15 ItemIndex = 8 Items.Strings = ( 'max' '1.0' '1.5' '2.0' '2.2' '2.4' '2.6' '2.8' '3.0' '' ) OnChange = flux_aperture1change ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 11 Text = '3.0' end object Label26: TLabel Left = 584 Height = 15 Top = 8 Width = 49 Alignment = taRightJustify Caption = 'Aperture:' ParentColor = False end object analysephotometrymore1: TButton Left = 200 Height = 26 Hint = 'Analyse image files' Top = 5 Width = 56 Caption = '+' OnClick = analysephotometry1Click ParentFont = False TabOrder = 12 end object annulus_radius1: TComboBox Left = 800 Height = 23 Hint = 'Annulus inner diameter [ x HFD]. The annulus diameter has to be larger then the aperture diameter.' Top = 6 Width = 72 DropDownCount = 17 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '4' '5' '6' '7' '8' '9' '10' ) OnChange = flux_aperture1change ParentFont = False TabOrder = 13 Text = '6' end object Label27: TLabel Left = 744 Height = 15 Top = 7 Width = 47 Alignment = taRightJustify Caption = 'Annulus:' ParentColor = False end object SpeedButton2: TSpeedButton Left = 1360 Height = 25 Hint = 'Default observer location for the case it is not available in the file header. Use this for DSLR images.' Top = 6 Width = 25 Images = ImageList2 ImageIndex = 20 OnClick = SpeedButton2Click end object browse_photometry1: TBitBtn Left = 16 Height = 25 Hint = 'Select images for photometry' Top = 7 Width = 92 Caption = 'Browse' Images = ImageList2 ImageIndex = 23 OnClick = browse_photometry1Click TabOrder = 14 end object annotate_mode1: TComboBox Left = 1568 Height = 23 Hint = 'Annotate variable and comparison stars' Top = 8 Width = 208 DropDownCount = 17 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( 'No annotation' 'Annotation local DB' 'Annotation online DB mag 13' 'Annotation online DB mag 15' 'Annotation online DB mag 99' ) OnChange = annotate_mode1Change ParentFont = False TabOrder = 15 Text = 'Annotation local DB' end end object TabSheet1: TTabSheet Hint = 'Measure the best focus position for several areas of the image.' Caption = 'Inspector' ClientHeight = 470 ClientWidth = 1849 ImageIndex = 17 object analyse_inspector1: TButton Left = 136 Height = 26 Hint = 'Analyse image files' Top = 6 Width = 88 Caption = 'Analyse' OnClick = analyse_inspector1Click ParentFont = False TabOrder = 0 end object listview8: TListView Left = 0 Height = 434 Hint = 'Double click to view image' Top = 36 Width = 1849 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 36 Checkboxes = True Columns = < item AutoSize = True Caption = 'File' MinWidth = 150 Width = 33 end item Alignment = taRightJustify Caption = 'Exposure' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'Temperature' MinWidth = 100 Width = 100 end item Alignment = taRightJustify Caption = 'Binning' MinWidth = 70 Width = 70 end item Alignment = taRightJustify Caption = 'Width' MinWidth = 55 Width = 60 end item Alignment = taRightJustify Caption = 'Height' MinWidth = 60 Width = 60 end item AutoSize = True Caption = 'Type' MinWidth = 50 Width = 40 end item Alignment = taRightJustify AutoSize = True Caption = 'Date/Time' MinWidth = 90 Width = 70 end item Alignment = taRightJustify Caption = 'Star detections' MinWidth = 110 Width = 110 end item Alignment = taRightJustify Caption = 'FocPos' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'hfd' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'hfd cent' ImageIndex = 11 MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'hfd out' ImageIndex = 12 MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'hfd 11' ImageIndex = 13 MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'hfd 21' ImageIndex = 14 MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'hfd 31' ImageIndex = 15 MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'hfd 12' ImageIndex = 16 MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'hfd 32' ImageIndex = 17 MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'hfd 13' ImageIndex = 18 MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'hfd 23' ImageIndex = 19 MinWidth = 80 Width = 80 end item Caption = 'hfd 33' ImageIndex = 20 MinWidth = 80 Width = 80 end> GridLines = True HideSelection = False MultiSelect = True ParentFont = False PopupMenu = PopupMenu8 ReadOnly = True RowSelect = True ScrollBars = ssAutoBoth SmallImages = ImageList_colors SortColumn = 12 SortType = stText TabOrder = 1 ViewStyle = vsReport OnColumnClick = listview1ColumnClick OnCompare = listview1Compare OnCustomDrawItem = listview8CustomDrawItem OnCustomDrawSubItem = listview8CustomDrawSubItem OnDblClick = listview1DblClick OnKeyDown = listview1KeyDown end object clear_inspector_list1: TButton Left = 1240 Height = 25 Hint = 'Clear image list' Top = 5 Width = 53 AutoSize = True Caption = 'Clear' OnClick = clear_inspector_list1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 end object nr_total_inspector1: TLabel Left = 480 Height = 15 Hint = 'Number of images in the list' Top = 8 Width = 6 Caption = '0' ParentColor = False ParentFont = False end object SpeedButton1: TSpeedButton Left = 496 Height = 38 Top = 0 Width = 40 Color = clNone Enabled = False Flat = True ImageIndex = 0 ImageWidth = 32 end object curve_fitting1: TButton Left = 248 Height = 26 Hint = 'Analyse image files' Top = 6 Width = 200 Caption = 'Hyperbola curve fitting' OnClick = curve_fitting1Click ParentFont = False TabOrder = 3 end object help_inspector_tab1: TLabel Cursor = crHandPoint Left = 632 Height = 30 Hint = 'Online help' Top = 3 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_inspector_tab1Click end object browse_inspector1: TBitBtn Left = 16 Height = 25 Hint = 'Select focus images to inspect' Top = 6 Width = 92 Caption = 'Browse' Images = ImageList2 ImageIndex = 23 OnClick = browse_inspector1Click TabOrder = 4 end end object mount1: TTabSheet Hint = 'Measure the mount celestial position offsets.' Caption = 'Mount analyse' ClientHeight = 470 ClientWidth = 1849 ImageIndex = 21 object listview9: TListView Left = 0 Height = 434 Hint = 'Double click to view image' Top = 36 Width = 1849 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 36 Checkboxes = True Columns = < item AutoSize = True Caption = 'File' MinWidth = 150 Width = 33 end item Alignment = taRightJustify Caption = 'Exposure' MinWidth = 60 Width = 60 end item Alignment = taRightJustify Caption = 'Temperature' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = 'Binning' MinWidth = 60 Width = 60 end item Alignment = taRightJustify Caption = 'Width' MinWidth = 55 Width = 60 end item Alignment = taRightJustify Caption = 'Height' MinWidth = 60 Width = 60 end item Caption = 'Type' MinWidth = 50 end item Alignment = taRightJustify Caption = 'Date/Time (start)' MinWidth = 140 Width = 140 end item Caption = 'JD (mid exp)' MinWidth = 100 Width = 100 end item Caption = 'α 2000 [°]' MinWidth = 80 Width = 80 end item Caption = 'δ 2000 [°]' MinWidth = 80 Width = 80 end item Caption = 'α mount [°]' MinWidth = 80 Width = 80 end item Caption = 'δ mount [°]' MinWidth = 80 Width = 80 end item Caption = 'Δα 2000 ["] ' MinWidth = 80 Width = 80 end item Caption = 'Δδ 2000 ["]' MinWidth = 80 Width = 80 end item Caption = 'α Jnow [°]' MinWidth = 65 Width = 65 end item Caption = 'δ Jnow [°]' MinWidth = 65 Width = 65 end item Caption = 'α mount jnow [°]' MinWidth = 120 Width = 120 end item Caption = 'δ mount jnow [°]' MinWidth = 120 Width = 120 end item Caption = 'h Jnow [°]' MinWidth = 80 Width = 80 end item Caption = 'A Jnow [°]' MinWidth = 80 Width = 80 end item Caption = 'crota_jnow [°]' MinWidth = 100 Width = 100 end item Caption = 'Foc_Temp' MinWidth = 65 Width = 65 end item Caption = 'P [hPa]' MinWidth = 65 Width = 65 end> GridLines = True HideSelection = False MultiSelect = True ParentFont = False PopupMenu = PopupMenu9 ReadOnly = True RowSelect = True ScrollBars = ssAutoBoth SmallImages = ImageList_colors SortColumn = 9 SortType = stText TabOrder = 0 ViewStyle = vsReport OnColumnClick = listview1ColumnClick OnCompare = listview1Compare OnCustomDraw = listview6CustomDraw OnCustomDrawItem = listview6CustomDrawItem OnDblClick = listview1DblClick OnKeyDown = listview1KeyDown end object mount_analyse1: TButton Left = 120 Height = 26 Hint = 'Analyse image files' Top = 5 Width = 80 Caption = 'Analyse' OnClick = mount_analyse1Click ParentFont = False TabOrder = 1 end object mount_add_solutions1: TButton Left = 216 Height = 25 Hint = 'This will add the astrometric solutions to the files' Top = 6 Width = 162 AutoSize = True Caption = 'Add astrometric solutions' OnClick = mount_add_solutions1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 end object mount_ignore_solutions1: TCheckBox Left = 616 Height = 19 Hint = '(Re)solve image list.' Top = 0 Width = 149 Caption = 'Ignore existing solutions' TabOrder = 3 end object clear_mount_list1: TButton Left = 1472 Height = 26 Hint = 'Clear image list' Top = 6 Width = 53 Caption = 'Clear' OnClick = clear_mount_list1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 end object mount_write_wcs1: TCheckBox Left = 616 Height = 19 Hint = 'Write solution to a new separate header file only. (.wcs)' Top = 17 Width = 149 Caption = 'Do not modify the lights' Checked = True State = cbChecked TabOrder = 5 end object help_mount_tab1: TLabel Cursor = crHandPoint Left = 1288 Height = 30 Hint = 'Online help' Top = 2 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_mount_tab1Click end object browse_mount1: TBitBtn Left = 16 Height = 25 Hint = 'Select images to analyse.' Top = 6 Width = 92 Caption = 'Browse' Images = ImageList2 ImageIndex = 23 OnClick = browse_mount1Click TabOrder = 6 end object calc_polar_alignment_error1: TButton Left = 392 Height = 25 Hint = 'Calcuates from the two or more images the polar alignment error. The images should be taken at different positions in the sky.' Top = 5 Width = 183 AutoSize = True Caption = 'Calculate polar aligment error' OnClick = calc_polar_alignment_error1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 7 end object hours_and_minutes1: TCheckBox Left = 832 Height = 19 Hint = 'Format of positions' Top = 0 Width = 78 Caption = 'HH:MM:SS' TabOrder = 8 end end object tab_live_stacking1: TTabSheet Hint = 'Stack live images' Caption = 'Live stacking' ClientHeight = 470 ClientWidth = 1849 ParentFont = False object live_stacking1: TButton Left = 16 Height = 25 Hint = 'Start live stacking.' Top = 128 Width = 75 Caption = '>' OnClick = live_stacking1Click ParentFont = False TabOrder = 0 end object live_stacking_pause1: TButton Left = 16 Height = 25 Hint = 'Pause live stacking process.' Top = 168 Width = 75 Caption = '||' OnClick = live_stacking_pause1Click ParentFont = False TabOrder = 1 end object live_stacking_restart1: TButton Left = 16 Height = 25 Hint = 'Stop live stacking.' Top = 208 Width = 75 Caption = '⏹' OnClick = live_stacking_restart1Click ParentFont = False TabOrder = 2 end object live_stacking_path1: TLabel Left = 16 Height = 15 Top = 64 Width = 15 Caption = '---' ParentColor = False ParentFont = False end object Label15: TLabel Left = 24 Height = 15 Top = 352 Width = 227 Caption = 'Processed files will get a new extension *.*_' ParentColor = False ParentFont = False end object files_live_stacked1: TLabel Left = 16 Height = 15 Top = 96 Width = 15 Caption = '---' ParentColor = False ParentFont = False end object restore_file_ext1: TButton Left = 376 Height = 25 Hint = 'Rename all files back to extension .fit. Stacking will be stopped. ' Top = 208 Width = 258 Caption = 'Rename all files back to original' OnClick = restore_file_ext1Click ParentFont = False TabOrder = 3 end object Label20: TLabel Left = 24 Height = 15 Top = 320 Width = 218 Caption = 'Darks and flats will be applied if available.' ParentColor = False ParentFont = False end object Label30: TLabel Left = 24 Height = 15 Top = 256 Width = 469 Caption = 'Stacking will restart if telescope position has moved 0.2° or when exposure time changes' ParentColor = False ParentFont = False end object Label67: TLabel Left = 24 Height = 15 Top = 288 Width = 304 Caption = 'Debayer and colour correction as set in tab Stack method.' ParentColor = False end object help_live_stacking1: TLabel Cursor = crHandPoint Left = 208 Height = 30 Hint = 'Online help about live stacking' Top = 11 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_live_stacking1Click end object GroupBox15: TGroupBox Left = 960 Height = 115 Top = 32 Width = 291 AutoSize = True Caption = 'Monitoring' ClientHeight = 95 ClientWidth = 287 TabOrder = 4 object interim_to_clipboard1: TCheckBox Left = 0 Height = 19 Hint = 'After adding a file copy the interim image to clipboard.' Top = 24 Width = 287 Caption = 'Copy each time the interim image to the clipboard' TabOrder = 0 end object write_jpeg1: TCheckBox Left = 0 Height = 19 Hint = 'After adding a file write result to file stack.jpeg at the same location as the files.' Top = 0 Width = 266 Caption = 'Write each time the interim result to stack.jpeg' TabOrder = 1 end object Label22: TLabel Left = 0 Height = 15 Top = 80 Width = 174 Caption = 'For log use the log option below.' ParentColor = False end end object browse_live_stacking1: TBitBtn Left = 16 Height = 26 Hint = 'Select the directory which will contain the live images to stack. Program will read FITS, RAW(s), JPEG, TIFF, PNG.' Top = 16 Width = 79 AutoSize = True Caption = 'Folder' Images = ImageList2 ImageIndex = 24 OnClick = browse_live_stacking1Click TabOrder = 5 end end object tab_monitoring1: TTabSheet Caption = 'Monitoring' ClientHeight = 470 ClientWidth = 1849 OnShow = tab_monitoring1Show object Label3: TLabel Left = 128 Height = 15 Top = 24 Width = 586 Caption = 'Load (and analyse) any new file in the selected folder. Darks and flats and debayer will be applied as configured.' ParentColor = False end object browse_monitoring1: TBitBtn Left = 16 Height = 26 Hint = 'Select the directory to monitor. Program will read FITS, RAW(s), JPEG, TIFF, PNG.' Top = 16 Width = 79 AutoSize = True Caption = 'Folder' Images = ImageList2 ImageIndex = 24 OnClick = browse_monitoring1Click TabOrder = 0 end object live_monitoring1: TButton Left = 16 Height = 25 Hint = 'Start monitoring.' Top = 128 Width = 75 Caption = '>' OnClick = live_monitoring1Click ParentFont = False TabOrder = 1 end object monitoring_stop1: TButton Left = 16 Height = 25 Hint = 'Stop monitoring' Top = 208 Width = 75 Caption = '⏹' OnClick = monitoring_stop1Click ParentFont = False TabOrder = 2 end object monitor_date1: TLabel Left = 16 Height = 15 Top = 96 Width = 15 Caption = '---' ParentColor = False ParentFont = False end object monitoring_path1: TLabel Left = 16 Height = 15 Top = 64 Width = 15 Caption = '---' ParentColor = False ParentFont = False end object monitor_action1: TComboBox Left = 248 Height = 23 Hint = 'Sample size colours' Top = 128 Width = 224 BorderSpacing.Around = 5 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'none' 'Tilt, 8 point measurement & HFD' 'Tilt, 3 point measurement & HFD' 'Aberration view' 'Solve image' ) OnChange = monitor_action1Change ParentFont = False Style = csDropDownList TabOrder = 3 Text = 'none' end object Label43: TLabel Left = 192 Height = 15 Top = 128 Width = 38 Caption = 'Action:' ParentColor = False end object help_monitoring1: TLabel Cursor = crHandPoint Left = 464 Height = 30 Hint = 'Online help about monitoring' Top = 49 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_monitoring1Click end object monitor_applydarkflat1: TCheckBox Left = 248 Height = 19 Hint = 'Apply dark and flat for each image' Top = 80 Width = 120 Caption = 'Apply dark and flat' TabOrder = 4 end object RAposition1: TLabel Left = 16 Height = 71 Hint = 'Image center position (right ascension of the solution)' Top = 256 Width = 21 Caption = '-' Font.Height = -53 ParentColor = False ParentFont = False Visible = False end object DECposition1: TLabel Left = 16 Height = 71 Hint = 'Image center position (declination of the solution)' Top = 344 Width = 21 Caption = '-' Font.Height = -53 ParentColor = False ParentFont = False Visible = False end object target_group1: TGroupBox Left = 560 Height = 416 Top = 48 Width = 752 Caption = 'Target box' ClientHeight = 396 ClientWidth = 748 Enabled = False TabOrder = 5 object target1: TLabel Left = 120 Height = 15 Hint = 'Target object' Top = 0 Width = 15 Caption = '---' ParentColor = False end object Button1: TButton Left = 8 Height = 25 Hint = 'Set an object target or position and let the program calculate the distance. ' Top = 0 Width = 75 Caption = 'Set target' OnClick = Button1Click TabOrder = 0 end object delta_ra1: TLabel Left = 8 Height = 71 Hint = 'Right ascension correction required to reach target.' Top = 248 Width = 67 Caption = 'Δα' Font.Height = -53 ParentColor = False ParentFont = False Visible = False end object delta_dec1: TLabel Left = 8 Height = 71 Hint = 'Declination correction required to reach target.' Top = 320 Width = 65 Caption = 'Δδ' Font.Height = -53 ParentColor = False ParentFont = False Visible = False end object target_distance1: TLabel Left = 8 Height = 71 Hint = 'Target distance' Top = 24 Width = 21 Caption = '-' Font.Height = -53 ParentColor = False ParentFont = False Visible = False end object direction_arrow1: TImage Left = 420 Height = 312 Hint = 'Move the telescope in this direction' Top = -8 Width = 326 Anchors = [akTop, akRight] ParentShowHint = False ShowHint = True Transparent = True end object monitor_longitude1: TEdit Left = 625 Height = 23 Hint = 'The longitude of the observatory in degrees. For east enter positive, for west enter negative values.' Top = 344 Width = 113 OnEditingDone = monitor_longitude1EditingDone ParentShowHint = False ShowHint = True TabOrder = 1 Text = '0' Visible = False end object monitor_latitude1: TEdit Left = 626 Height = 23 Hint = 'The latitude of the observatory in degrees.' Top = 312 Width = 113 OnEditingDone = monitor_latitude1EditingDone ParentShowHint = False ShowHint = True TabOrder = 2 Text = '0' Visible = False end object label_latitude1: TLabel Left = 552 Height = 15 Top = 312 Width = 66 Anchors = [akTop, akRight] Caption = 'Latitude [N]:' ParentColor = False Visible = False end object label_longitude1: TLabel Left = 544 Height = 15 Top = 344 Width = 74 Anchors = [akTop, akRight] Caption = 'Longitude [E]:' ParentColor = False Visible = False end object target_altitude1: TLabel Left = 8 Height = 71 Hint = 'Target altitude' Top = 96 Width = 34 Caption = 'A' Font.Height = -53 ParentColor = False ParentFont = False Visible = False end object target_azimuth1: TLabel Left = 8 Height = 71 Hint = 'Target azimuth' Top = 168 Width = 38 Caption = 'H' Font.Height = -53 ParentColor = False ParentFont = False Visible = False end end end object tab_Pixelmath1: TTabSheet Hint = 'Pixel math tools 1' Caption = 'Pixel math 1' ClientHeight = 470 ClientWidth = 1849 Enabled = False ImageIndex = 4 ParentFont = False object GroupBox5: TGroupBox Left = 355 Height = 112 Hint = 'Apply following to current displayed image:' Top = 8 Width = 430 Caption = 'Colour correction' ClientHeight = 92 ClientWidth = 426 ParentFont = False TabOrder = 0 object Label14: TLabel Left = 4 Height = 20 Top = 3 Width = 87 Alignment = taRightJustify Anchors = [akTop, akRight] AutoSize = False Caption = 'Add value' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label17: TLabel Left = 4 Height = 20 Top = 27 Width = 87 Alignment = taRightJustify Anchors = [akTop, akRight] AutoSize = False Caption = 'Multiply with' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object add_valueR1: TEdit Left = 92 Height = 23 Top = 0 Width = 89 Color = 13158655 ParentFont = False TabOrder = 0 Text = '0.0' end object multiply_red1: TEdit Left = 92 Height = 23 Top = 24 Width = 89 Color = 13158655 ParentFont = False TabOrder = 1 Text = '1.0' end object multiply_green1: TEdit Left = 186 Height = 23 Top = 24 Width = 89 Color = 13172680 ParentFont = False TabOrder = 3 Text = '1.0' end object multiply_blue1: TEdit Left = 280 Height = 23 Top = 24 Width = 89 Color = 16763080 ParentFont = False TabOrder = 5 Text = '1.0' end object apply_factor1: TButton Left = 212 Height = 30 Hint = 'Apply above actions. Hit CTRL-Z to undo.' Top = 53 Width = 157 Caption = 'Apply' OnClick = apply_factor1Click ParentFont = False TabOrder = 8 end object add_valueG1: TEdit Left = 186 Height = 23 Top = 0 Width = 89 Color = 13172680 ParentFont = False TabOrder = 2 Text = '0.0' end object add_valueB1: TEdit Left = 280 Height = 23 Top = 0 Width = 89 Color = 16763080 ParentFont = False TabOrder = 4 Text = '0.0' end object undo_button4: TBitBtn Left = 387 Height = 30 Hint = 'Undo last action' Top = 53 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 9 end object auto_background_level1: TButton Left = 374 Height = 23 Hint = 'Levels for neutral background and white stars' Top = 0 Width = 48 Caption = 'Auto' OnClick = auto_background_level1Click ParentFont = False TabOrder = 6 end object reset_factors1: TButton Left = 374 Height = 23 Hint = 'Reset the add and multiply factors' Top = 24 Width = 48 Caption = 'Reset' OnClick = reset_factors1Click ParentFont = False TabOrder = 7 end object ignorezero1: TCheckBox Left = 23 Height = 19 Hint = 'Do not modifiy values of zero and below' Top = 60 Width = 137 Caption = 'Ignore zero and below' Checked = True State = cbChecked TabOrder = 10 end end object GroupBox_equalise_tool1: TGroupBox Left = 355 Height = 80 Top = 330 Width = 430 Caption = 'Artificial flat-field correction' ClientHeight = 60 ClientWidth = 426 ParentFont = False TabOrder = 1 object apply_artificial_flat_correction1: TButton Left = 64 Height = 30 Hint = 'Equalise corners of the image below the average background. ' Top = 12 Width = 111 Caption = 'Raise dark areas' OnClick = apply_artificial_flat_correction1Click ParentFont = False TabOrder = 1 end object undo_button3: TBitBtn Left = 387 Height = 30 Hint = 'Undo last action' Top = 12 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 2 end object dark_areas_box_size1: TComboBox Left = 8 Height = 23 Hint = 'Raise dark areas: Filter box size used to detect the local median value.' Top = 12 Width = 48 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( '10' '20' '30' '40' ) OnChange = resize_factor1Change ParentFont = False TabOrder = 0 Text = '20' end object apply_artificial_flat_correctionV2: TButton Left = 272 Height = 30 Hint = 'Equalise all. There should be no object in the center of the image and deepsky objects should be small.. ' Top = 12 Width = 96 Caption = 'Ring equalise' OnClick = apply_artificial_flat_correction1Click ParentFont = False TabOrder = 3 end object ring_equalise_factor1: TComboBox Left = 192 Height = 23 Hint = 'Ring equalise: specify object size in the center of the image in percentage of the image height. This area will then be protected against the correction. ' Top = 12 Width = 72 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( '0%' '10%' '20%' '30%' '30%' '40%' '50%' ) OnChange = resize_factor1Change ParentFont = False TabOrder = 4 Text = '10%' end object center_position1: TLabel Left = 272 Height = 15 Hint = 'Set the brightest or darkest center position of the image with the popup menu "Set area"' Top = -5 Width = 78 Caption = 'Center: default' ParentColor = False end end object GroupBox7: TGroupBox Left = 0 Height = 383 Top = 8 Width = 344 Caption = 'Equalise background tool' ClientHeight = 363 ClientWidth = 340 ParentFont = False TabOrder = 2 object most_common_filter_tool1: TButton Left = 24 Height = 26 Hint = 'Test on the current displayed image. CTRL-Z to undo.' Top = 112 Width = 278 Caption = 'Apply "mode" filter to remove stars' Enabled = False OnClick = most_common_filter_tool1Click ParentFont = False TabOrder = 1 end object most_common_filter_radius1: TEdit Left = 305 Height = 23 Hint = 'Median filter factor (box size). Typical value is 20' Top = 112 Width = 32 ParentFont = False TabOrder = 2 Text = '30' end object apply_gaussian_filter1: TButton Left = 24 Height = 26 Hint = 'Applied on the current displayed image. CTRL-Z to undo.' Top = 177 Width = 278 Caption = 'Apply gaussian filter' Enabled = False OnClick = apply_gaussian_filter1Click ParentFont = False TabOrder = 3 end object undo_button_equalise_background1: TBitBtn Left = 303 Height = 30 Hint = 'Undo last action' Top = 242 Width = 32 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button_equalise_background1Click ParentFont = False TabOrder = 6 end object remove_deepsky_label1: TLabel Left = 24 Height = 29 Hint = 'See viewer popup menu' Top = 73 Width = 278 Alignment = taCenter AutoSize = False Caption = 'Remove deep sky with right mouse button tool' Color = clBtnFace Enabled = False ParentColor = False ParentFont = False Transparent = False WordWrap = True end object Label41: TLabel Left = 8 Height = 15 Top = 116 Width = 10 Caption = '3)' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label42: TLabel Left = 8 Height = 15 Top = 182 Width = 10 Caption = '4)' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label44: TLabel Left = 8 Height = 15 Top = 251 Width = 10 Caption = '6)' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object subtract_background1: TButton Left = 24 Height = 26 Hint = 'Subtract the created background from the original image and display the result.' Top = 212 Width = 278 Caption = 'Subtract background from saved image.' Enabled = False OnClick = subtract_background1Click ParentFont = False TabOrder = 4 end object Label45: TLabel Left = 8 Height = 15 Top = 217 Width = 10 Caption = '5)' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label46: TLabel Left = 8 Height = 15 Top = 14 Width = 10 Caption = '1)' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object save_as_new_file1: TButton Left = 24 Height = 26 Hint = 'Save to file with equalised added to the filename.' Top = 8 Width = 278 Caption = 'Save current view as new file' OnClick = save_as_new_file1Click ParentFont = False TabOrder = 0 end object save_result1: TButton Left = 24 Height = 26 Hint = 'Save to file with equalised added to the filename.' Top = 246 Width = 278 Caption = 'Save result' Enabled = False OnClick = save_result1Click ParentFont = False TabOrder = 5 end object saved1: TLabel Left = 216 Height = 1 Top = 22 Width = 1 ParentColor = False ParentFont = False end object dark_spot_filter1: TButton Left = 88 Height = 30 Hint = 'This removes dark spots typical for CMOS images. (uses standard deviation for values below most common value) ' Top = 313 Width = 214 Caption = 'Dark spot filter' OnClick = dark_spot_filter1Click ParentFont = False TabOrder = 7 end object Label52: TLabel Left = 24 Height = 15 Top = 321 Width = 46 Caption = 'Optional' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object help_pixel_math1: TLabel Cursor = crHandPoint Left = 320 Height = 30 Hint = 'Online help' Top = -4 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_pixel_math1Click end object go_step_two1: TBitBtn Left = 303 Height = 30 Hint = 'Go to step 2' Top = 72 Width = 32 Caption = '2' Enabled = False Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = go_step_two1Click ParentFont = False TabOrder = 8 end object most_common_mono1: TButton Left = 88 Height = 26 Hint = 'Convert to mono. This will effect the background gradient correction only and could improve the end result.' Top = 39 Width = 212 Caption = 'Convert to mono' Enabled = False OnClick = most_common_mono1Click ParentFont = False TabOrder = 9 end object Label49: TLabel Left = 24 Height = 15 Top = 44 Width = 46 Caption = 'Optional' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object correct_gradient_label1: TLabel Left = 88 Height = 26 Hint = 'See viewer popup menu. The background gradient should be smooth. Remove abnormal spots.' Top = 143 Width = 212 Alignment = taCenter AutoSize = False Caption = 'Correct gradient with copy+paste tool.' Color = clBtnFace Enabled = False ParentColor = False ParentFont = False Transparent = False WordWrap = True end object Label54: TLabel Left = 24 Height = 15 Top = 149 Width = 46 Caption = 'Optional' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label62: TLabel Left = 8 Height = 15 Top = 80 Width = 10 Caption = '2)' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end end object GroupBox1: TGroupBox Left = 352 Height = 56 Top = 208 Width = 430 Caption = 'Background colour removal' ClientHeight = 36 ClientWidth = 426 ParentFont = False TabOrder = 3 object apply_remove_background_colour1: TButton Left = 272 Height = 30 Hint = 'This command removes the background colour.' Top = 0 Width = 97 Caption = 'Apply' OnClick = apply_remove_background_colour1Click ParentFont = False TabOrder = 1 end object sigma_decolour1: TComboBox Left = 160 Height = 23 Hint = 'Standard deviation of background noise. Normal value 2.5 to 3.0. Could influence faint nebula.' Top = 0 Width = 60 ItemHeight = 15 ItemIndex = 5 Items.Strings = ( '0.3' '0.5' '0.7' '1' '1.5' '2' '3' '3.5' '4' ) ParentFont = False TabOrder = 0 Text = '2' end object undo_button9: TBitBtn Left = 387 Height = 30 Hint = 'Undo last action' Top = -1 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 2 end object Label36: TLabel Left = 72 Height = 15 Top = 3 Width = 80 Caption = 'Signal below σ:' ParentColor = False end end object GroupBox2: TGroupBox Left = 352 Height = 84 Hint = 'Improves colour of saturated stars' Top = 120 Width = 430 Caption = 'Smart colour smoothing' ClientHeight = 64 ClientWidth = 426 ParentFont = False TabOrder = 4 object smart_colour_smooth_button1: TButton Left = 213 Height = 30 Hint = 'This routine smoothes the colour of and try to preserve nebula.' Top = 0 Width = 156 Caption = 'Apply' OnClick = smart_colour_smooth_button1Click ParentFont = False TabOrder = 1 end object smart_smooth_width1: TComboBox Left = 23 Height = 23 Hint = 'Colour smoothing range in pixels. This will keep luminance but smooth the colours. Default is 10. Set this as high as eight times the HFD value.' Top = 3 Width = 60 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '5' '7' '10' '15' '20' '25' ) ParentFont = False TabOrder = 0 Text = '10' end object undo_button13: TBitBtn Left = 387 Height = 30 Hint = 'Undo last action' Top = 0 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 2 end object smart_colour_sd1: TComboBox Left = 115 Height = 23 Hint = 'Standard deviation to detect objects to be colour blurred. Default 3' Top = 3 Width = 60 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '2.0' '2.5' '3.0' '4.0' '5.0' '6.0' ) ParentFont = False TabOrder = 3 Text = '3.0' end object preserve_red_nebula1: TCheckBox Left = 23 Height = 19 Hint = 'Keep this cheched if a red nebula is visible' Top = 37 Width = 123 Caption = 'Preserve red nebula' Checked = True State = cbChecked TabOrder = 4 end end object GroupBox16: TGroupBox Left = 1176 Height = 112 Top = 8 Width = 376 Caption = 'Background noise filter' ClientHeight = 92 ClientWidth = 372 ParentFont = False TabOrder = 5 object Label55: TLabel Left = 8 Height = 20 Top = 11 Width = 100 Alignment = taRightJustify AutoSize = False Caption = 'σ factor' Color = clBtnFace ParentColor = False Transparent = False end object noisefilter_sd1: TComboBox Left = 115 Height = 23 Hint = 'Standard deviation to detect deepsky objects not to be blurred. ' Top = 8 Width = 60 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '1.0' '1.5' '2.0' '2.5' '3.0' ) ParentFont = False TabOrder = 0 Text = '2.0' end object undo_button14: TBitBtn Left = 272 Height = 30 Hint = 'Undo last action' Top = 40 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 3 end object apply_background_noise_filter1: TButton Left = 72 Height = 30 Top = 40 Width = 184 Caption = 'Apply' OnClick = apply_background_noise_filter1Click ParentFont = False TabOrder = 2 end object noisefilter_blur1: TComboBox Left = 290 Height = 23 Hint = 'This blur will be applied on the sky background' Top = 8 Width = 60 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '0.5 ' '0.6' '0.7' '0.8' '1.0' '' ) ParentFont = False TabOrder = 1 Text = '0.7' end object Label64: TLabel Left = 183 Height = 20 Top = 11 Width = 100 Alignment = taRightJustify AutoSize = False Caption = 'Gaussian blur' Color = clBtnFace ParentColor = False Transparent = False end end object GroupBox_equalise_tool2: TGroupBox Left = 355 Height = 60 Top = 267 Width = 430 Caption = 'Remove gradient' ClientHeight = 40 ClientWidth = 426 ParentFont = False TabOrder = 6 object undo_button15: TBitBtn Left = 387 Height = 30 Hint = 'Undo last action' Top = 0 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 3 end object apply_vertical_gradient1: TButton Left = 209 Height = 30 Hint = 'This will remove any vertical gradient. For any other angle apply both.' Top = 0 Width = 65 AutoSize = True Caption = 'Apply ↕' Constraints.MinHeight = 30 OnClick = apply_vertical_gradient1Click ParentFont = False TabOrder = 1 end object gradient_filter_factor1: TEdit Left = 68 Height = 23 Hint = 'Filter factor (box size). Typical value is 30' Top = 1 Width = 32 ParentFont = False TabOrder = 0 Text = '30' end object apply_horizontal_gradient1: TButton Left = 299 Height = 30 Hint = 'This will remove any horizontal gradient. For any other angle apply both.' Top = 0 Width = 70 AutoSize = True Caption = 'Apply ↔' Constraints.MinHeight = 30 OnClick = apply_vertical_gradient1Click ParentFont = False TabOrder = 2 end end object GroupBox11: TGroupBox Left = 792 Height = 400 Top = 8 Width = 377 Caption = 'Colour replace' ClientHeight = 380 ClientWidth = 373 TabOrder = 7 object HueRadioButton1: TRadioButton Left = 8 Height = 19 Hint = 'Click on the image in the viewer to select a colour' Top = 46 Width = 76 Caption = 'Old colour' Checked = True TabOrder = 1 TabStop = True end object HueRadioButton2: TRadioButton Left = 8 Height = 19 Hint = 'Click on the image in the viewer to select a colour' Top = 233 Width = 81 Caption = 'New colour' TabOrder = 0 end object colourShape1: TShape Left = 120 Height = 22 Hint = 'Click on the image in the viewer to select a colour to replace' Top = 45 Width = 25 end object colourShape2: TShape Left = 120 Height = 22 Hint = 'Click on the image in the viewer to select a new colour' Top = 232 Width = 25 end object apply_hue1: TButton Left = 96 Height = 30 Hint = 'Add noise to the image in the viewer' Top = 317 Width = 184 Caption = 'Apply' OnClick = apply_hue1Click ParentFont = False TabOrder = 2 end object hue_fuzziness1: TTrackBar Left = 152 Height = 39 Hint = 'Fuziness of old colour. [0..180°]' Top = 46 Width = 96 LineSize = 5 Max = 180 Min = 1 OnChange = hue_fuzziness1Change PageSize = 5 Position = 50 TickStyle = tsNone TabOrder = 3 end object undo_button16: TBitBtn Left = 296 Height = 30 Hint = 'Undo last action' Top = 317 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 4 end object sample_size1: TComboBox Left = 120 Height = 23 Hint = 'Sample size colours' Top = 8 Width = 87 BorderSpacing.Around = 5 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '1x1' '3x3' '5x5' '7x7' '9x9' '11x11' '13x13' '15x15' ) OnChange = resize_factor1Change ParentFont = False Style = csDropDownList TabOrder = 5 Text = '1x1' end object Label68: TLabel Left = 8 Height = 15 Top = 11 Width = 64 Caption = 'Sample size:' ParentColor = False end object new_saturation1: TTrackBar Left = 152 Height = 39 Hint = 'Saturation of new colour [0..200%]' Top = 233 Width = 96 LineSize = 5 Max = 200 OnChange = new_saturation1Change PageSize = 5 Position = 100 TickStyle = tsNone TabOrder = 6 end object colourShape3: TShape Left = 272 Height = 22 Hint = 'Final new colour' Top = 232 Width = 25 end object rainbow_Panel1: TPanel Left = 249 Height = 120 Hint = 'Hue and saturation range to be replaced. The hue range is between the two lines. The saturation range is between the two circels.' Top = 0 Width = 120 BevelOuter = bvNone ParentColor = False TabOrder = 7 OnMouseDown = rainbow_Panel1MouseDown OnPaint = rainbow_Panel1Paint end object area_set1: TLabel Left = 136 Height = 15 Hint = 'Indicates if area is selected.' Top = 149 Width = 10 Caption = '⍻' ParentColor = False end object area_selected1: TLabel Left = 8 Height = 15 Top = 149 Width = 96 Caption = 'Sub-area selected:' ParentColor = False end object unselect_area1: TButton Left = 184 Height = 25 Hint = 'Unselect area. If unselected the colours in whole image will be replaced.' Top = 144 Width = 35 Caption = '⍻' OnClick = unselect_area1Click TabOrder = 8 end object remove_luminance1: TCheckBox Left = 128 Height = 19 Hint = 'Use this to remove red, green or blue hot pixels. ' Top = 259 Width = 122 Caption = 'Remove luminance' OnChange = remove_luminance1Change TabOrder = 9 end object saturation_tolerance1: TTrackBar Left = 152 Height = 39 Hint = 'Tolerance colour saturation. [0..50%] A good value is 20%' Top = 84 Width = 96 LineSize = 5 Max = 50 Min = 1 OnChange = saturation_tolerance1Change PageSize = 5 Position = 20 TickStyle = tsNone TabOrder = 10 end end end object tab_Pixelmath2: TTabSheet Hint = 'Pixel math tools 2' Caption = 'Pixel math 2' ClientHeight = 470 ClientWidth = 1849 Enabled = False ImageIndex = 4 object groupBox_dvp1: TGroupBox Left = 8 Height = 296 Top = 8 Width = 265 Caption = 'Digital development process' ClientHeight = 276 ClientWidth = 261 ParentFont = False TabOrder = 0 object Label29: TLabel Left = 8 Height = 15 Top = 16 Width = 164 Caption = 'Yij = k [ a * Xij / ({Xij} + a ) ] + b' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label31: TLabel Left = 48 Height = 15 Top = 109 Width = 17 Alignment = taRightJustify Caption = 'a =' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label32: TLabel Left = -106 Height = 23 Hint = 'Subtracted from Xij prior application of DDP' Top = 180 Width = 91 Alignment = taRightJustify Anchors = [akTop, akRight] AutoSize = False Caption = 'background =' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label33: TLabel Left = 49 Height = 15 Top = 138 Width = 17 Alignment = taRightJustify Caption = 'k =' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object Label34: TLabel Left = 32 Height = 15 Top = 53 Width = 22 Alignment = taRightJustify Caption = '{ } =' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object apply_dpp_button1: TButton Left = 8 Height = 30 Top = 216 Width = 184 Caption = 'Apply' OnClick = apply_dpp_button1Click ParentFont = False TabOrder = 8 end object Edit_gaussian_blur1: TEdit Left = 200 Height = 23 Hint = 'Use values below 1. Results in unsharp stars. Some sharping required in a later stage.' Top = 72 Width = 57 ParentFont = False TabOrder = 2 Text = '0.7' end object Edit_a1: TEdit Left = 71 Height = 23 Hint = 'Typical value 500' Top = 106 Width = 57 ParentFont = False TabOrder = 3 Text = '450' end object edit_background1: TEdit Left = 109 Height = 23 Hint = 'Background value' Top = 180 Width = 57 OnClick = edit_background1Click ParentFont = False TabOrder = 5 Text = '0' end object edit_k1: TEdit Left = 71 Height = 23 Hint = 'Typical value 5 to 20.' Top = 138 Width = 57 ParentFont = False TabOrder = 4 Text = '5' end object ddp_filter1: TRadioButton Left = 71 Height = 19 Hint = 'Results in a nonlinear hyperbolic stretch, excellent for galaxies.' Top = 48 Width = 49 Caption = 'None' Checked = True ParentFont = False TabOrder = 0 TabStop = True end object ddp_filter2: TRadioButton Left = 71 Height = 19 Top = 73 Width = 91 Caption = 'Gaussian blur' ParentFont = False TabOrder = 1 end object auto_background1: TCheckBox Left = 192 Height = 19 Hint = 'Use an automatically measured background value.' Top = 180 Width = 46 Caption = 'Auto' Checked = True ParentFont = False State = cbChecked TabOrder = 7 end object UpDown1: TUpDown Left = 166 Height = 23 Top = 180 Width = 16 Associate = edit_background1 Max = -1 Min = 0 OnClick = UpDown1Click Position = 0 TabOrder = 6 end object undo_button1: TBitBtn Left = 200 Height = 30 Hint = 'Undo last action' Top = 216 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 9 end end object GroupBox3: TGroupBox Left = 775 Height = 104 Top = 120 Width = 256 Caption = 'Add noise' ClientHeight = 84 ClientWidth = 252 ParentFont = False TabOrder = 1 object add_noise1: TButton Left = 128 Height = 30 Hint = 'Add noise to the image in the viewer' Top = 36 Width = 118 Caption = 'Apply' OnClick = add_noise1Click ParentFont = False TabOrder = 0 end object edit_noise1: TEdit Left = 9 Height = 23 Hint = 'Add Gaussian noise. The value is the standard deviation. The mean is three times the value' Top = 8 Width = 80 ParentFont = False TabOrder = 1 Text = '0' end object add_bias1: TCheckBox Left = 104 Height = 19 Hint = 'Add a bias to stay positive. Do this for very large noise values.' Top = 8 Width = 113 Caption = 'Add 3σ bias value' ParentFont = False TabOrder = 2 end end object GroupBox14: TGroupBox Left = 512 Height = 112 Hint = 'Artificial colouring of H-alpha images. Clouds will be made red. Stars white.' Top = 74 Width = 200 Caption = 'Artificial colouring' ClientHeight = 92 ClientWidth = 196 ParentFont = False TabOrder = 2 object colournebula1: TButton Left = 7 Height = 30 Top = 48 Width = 136 Caption = 'Colour nebula' OnClick = colournebula1Click ParentFont = False TabOrder = 0 end object star_level_colouring1: TComboBox Left = 8 Height = 23 Hint = 'Star level above background' Top = 17 Width = 80 ItemHeight = 15 ItemIndex = 3 Items.Strings = ( '1000' '2000' '3000' '4000' '5000' ) ParentFont = False TabOrder = 1 Text = '4000' end object filter_artificial_colouring1: TComboBox Left = 104 Height = 23 Hint = 'Filter factor to separate stars from nebula.' Top = 17 Width = 80 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( '5' '10' '20' '30' ) ParentFont = False TabOrder = 2 Text = '10' end object Label4: TLabel Left = 8 Height = 15 Top = 0 Width = 50 Caption = 'Star level:' ParentColor = False ParentFont = False end object Label16: TLabel Left = 104 Height = 15 Top = 0 Width = 63 Caption = 'Filter factor:' ParentColor = False ParentFont = False end object undo_button8: TBitBtn Left = 154 Height = 30 Hint = 'Undo last action' Top = 48 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 3 end end object GroupBox_test_images1: TGroupBox Left = 776 Height = 104 Hint = 'Create artificial test image for testing star detection. This tool is intendent for developpers only.' Top = 8 Width = 255 Caption = 'Create test image for star detection' ClientHeight = 84 ClientWidth = 251 ParentFont = False TabOrder = 3 object create_test_image_stars1: TButton Left = 128 Height = 30 Hint = 'This will create a FITS image with Gaussian stars having a HFD as specified. Top rows are filled with hot pixels.' Top = 8 Width = 118 Caption = 'Stars, hot pixels' OnClick = create_test_image_stars1Click ParentFont = False TabOrder = 0 end object artificial_image_gradient1: TCheckBox Left = 8 Height = 19 Hint = 'Add a typical gradient of telescope. The center is more bright then the corners.' Top = 40 Width = 131 Caption = 'Background gradient' Checked = True ParentFont = False State = cbChecked TabOrder = 2 end object hfd_simulation1: TComboBox Left = 8 Height = 23 Hint = 'HFD of the simulated stars' Top = 8 Width = 80 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( '2' '2.5' '3' '4' '5' '8' '10' '12' '16' ) OnChange = resize_factor1Change ParentFont = False TabOrder = 1 Text = '2.5' end object donutstars1: TCheckBox Left = 8 Height = 19 Top = 64 Width = 80 Caption = 'Donut stars' TabOrder = 3 end end object GroupBox12: TGroupBox Left = 288 Height = 64 Top = 8 Width = 212 Caption = 'Extract background/artificial flat' ClientHeight = 44 ClientWidth = 208 ParentFont = False TabOrder = 4 object apply_get_background1: TButton Left = 80 Height = 30 Hint = 'Replace the values in each box with the most common value using the most common filter. This works better then removing stars as outliers.' Top = 4 Width = 80 Caption = 'Apply' OnClick = apply_get_background1Click ParentFont = False TabOrder = 1 end object undo_button10: TBitBtn Left = 170 Height = 30 Hint = 'Undo last action' Top = 4 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 2 end object extract_background_box_size1: TComboBox Left = 7 Height = 23 Hint = 'Filter box size' Top = 4 Width = 63 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '20' '30' '40' '50' ) OnChange = resize_factor1Change ParentFont = False TabOrder = 0 Text = '20' end end object GroupBox4: TGroupBox Left = 288 Height = 60 Top = 74 Width = 212 Caption = 'Gaussian blur' ClientHeight = 40 ClientWidth = 208 ParentFont = False TabOrder = 5 object apply_gaussian_blur_button1: TButton Left = 80 Height = 30 Hint = 'Apply gaussian blur after stacking to reduce noise. Hit CTRL-Z to undo' Top = 4 Width = 80 Caption = 'Apply' OnClick = apply_gaussian_blur_button1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 end object blur_factor1: TComboBox Left = 7 Height = 23 Top = 4 Width = 63 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '0.5 ' '0.6' '0.7' '0.8' '10' '20' '40' '' ) ParentFont = False TabOrder = 0 Text = '0.5 ' end object undo_button2: TBitBtn Left = 168 Height = 30 Hint = 'Undo last action' Top = 4 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 2 end end object GroupBox6: TGroupBox Left = 287 Height = 88 Hint = 'Apply a flat image or add or subtract an image. ' Top = 200 Width = 425 Caption = 'Apply file to image in viewer' ClientHeight = 68 ClientWidth = 421 ParentFont = False TabOrder = 6 object add_substract1: TComboBox Left = 87 Height = 23 Hint = 'Add or subtract files.' Top = 32 Width = 197 ItemHeight = 15 Items.Strings = ( 'Add file' 'Subtract file from view' 'Subtract file from view +1000' 'Subtract view from file' 'Subtract view from file +1000' 'Apply file as flat field (divide normalized)' 'Multiply (normalised) file' '' ) ParentFont = False TabOrder = 0 end object image_to_add1: TLabel Left = 8 Height = 30 Top = 2 Width = 416 AutoSize = False Caption = '---' ParentColor = False WordWrap = True end object apply_file1: TButton Left = 293 Height = 30 Hint = 'Apply above actions. Hit CTRL-Z to undo.' Top = 32 Width = 80 Caption = 'Apply' OnClick = apply_file1Click ParentFont = False TabOrder = 1 end object undo_button11: TBitBtn Left = 383 Height = 30 Hint = 'Undo last action' Top = 32 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 2 end object file_to_add1: TBitBtn Left = 32 Height = 26 Hint = 'Browse and select image to add/subtract or use a flat.' Top = 32 Width = 46 AutoSize = True Images = ImageList2 ImageIndex = 23 OnClick = file_to_add1Click TabOrder = 3 end end object GroupBox9: TGroupBox Left = 512 Height = 64 Hint = 'Spit viewer image in red, green and blue file.' Top = 8 Width = 202 Caption = 'Split in separate R, G, B files.' ClientHeight = 44 ClientWidth = 198 ParentFont = False TabOrder = 7 object splitRGB1: TButton Left = 7 Height = 30 Hint = 'This will make three separate files' Top = 1 Width = 184 Caption = 'Split in R, G, B' OnClick = splitRGB1Click ParentFont = False TabOrder = 0 end end object GroupBox10: TGroupBox Left = 288 Height = 64 Top = 288 Width = 426 Caption = 'Resize current viewer image' ClientHeight = 44 ClientWidth = 422 ParentFont = False TabOrder = 8 object Button_free_resize_fits1: TButton Left = 296 Height = 30 Hint = 'Resize current image in the viewer. Sizing factor is free selectable but there is no significant noise reducement.' Top = 5 Width = 80 Caption = 'Resize' OnClick = free_resize_fits1Click ParentFont = False TabOrder = 3 end object Edit_width1: TEdit Left = 92 Height = 23 Hint = 'Width' Top = 5 Width = 56 OnChange = Edit_width1Change ParentFont = False TabOrder = 1 Text = '300' end object width_UpDown1: TUpDown Left = 148 Height = 23 Top = 5 Width = 17 Associate = Edit_width1 Increment = 10 Max = 32000 Min = 10 Position = 300 TabOrder = 2 end object undo_button5: TBitBtn Left = 383 Height = 30 Hint = 'Undo last action' Top = 5 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 4 end object resize_factor1: TComboBox Left = 8 Height = 23 Hint = 'Resize from current format' Top = 5 Width = 60 ItemHeight = 15 ItemIndex = 3 Items.Strings = ( '3' '2' '1' '0.5' '0.25' '' '' ) OnChange = resize_factor1Change ParentFont = False TabOrder = 0 Text = '0.5' end object new_height1: TLabel Left = 200 Height = 15 Top = 8 Width = 24 Caption = '1080' Color = clBtnFace ParentColor = False Transparent = False end object new_height2: TLabel Left = 176 Height = 15 Top = 8 Width = 6 Caption = 'x' Color = clBtnFace ParentColor = False Transparent = False end end object help_pixel_math2: TLabel Cursor = crHandPoint Left = 144 Height = 30 Hint = 'Help' Top = 312 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_pixel_math2Click end object GroupBox13: TGroupBox Left = 1048 Height = 160 Top = 8 Width = 336 Caption = 'FOV calculator' ClientHeight = 140 ClientWidth = 332 TabOrder = 9 object Label24: TLabel Left = 8 Height = 34 Top = 8 Width = 106 Alignment = taRightJustify AutoSize = False Caption = 'Telescope focal length [mm]' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False WordWrap = True end object focallength1: TEdit Left = 128 Height = 23 Hint = 'Focal length of telescope used in mm.' Top = 8 Width = 48 BorderSpacing.Around = 5 OnExit = focallength1Exit ParentFont = False TabOrder = 0 Text = '500' end object Label23: TLabel Left = 8 Height = 34 Top = 48 Width = 104 Alignment = taRightJustify AutoSize = False Caption = 'Sensor pixel size after binning [µm]' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False WordWrap = True end object pixelsize1: TEdit Left = 128 Height = 23 Hint = 'The image sensor pixel size in micrometer after binning.' Top = 48 Width = 48 BorderSpacing.Around = 5 OnExit = focallength1Exit ParentFont = False TabOrder = 1 Text = '5' end object calculated_scale1: TLabel Left = 232 Height = 15 Hint = 'Arcseconds per pixel' Top = 52 Width = 15 BorderSpacing.Around = 5 Caption = '0.0' ParentColor = False end object scale_calc1: TLabel Left = 232 Height = 15 Hint = 'Image dimensions in degrees' Top = 24 Width = 42 Caption = '0.0 x 0.0' ParentColor = False end object Label28: TLabel Left = 192 Height = 37 Top = 16 Width = 23 BorderSpacing.Around = 5 Caption = '⇒' Font.Height = -27 ParentColor = False ParentFont = False end object calculator_binning1: TLabel Left = 8 Height = 15 Top = 96 Width = 30 Caption = '------' ParentColor = False end object calculated_sensor_size1: TLabel Left = 232 Height = 15 Hint = 'Calculated sensor size in mm' Top = 80 Width = 15 BorderSpacing.Around = 5 Caption = '0.0' ParentColor = False end end object GroupBox17: TGroupBox Left = 288 Height = 72 Top = 352 Width = 424 Caption = 'Binning' ClientHeight = 52 ClientWidth = 420 TabOrder = 10 object bin_factor1: TComboBox Left = 8 Height = 23 Hint = 'Bin current image in the viewer. Noise will be reduced.' Top = 5 Width = 81 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '2x2' '3x3' ) OnChange = resize_factor1Change ParentFont = False Style = csDropDownList TabOrder = 0 Text = '2x2' end object undo_button12: TBitBtn Left = 383 Height = 30 Hint = 'Undo last action' Top = 5 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 1 end object bin_image1: TButton Left = 296 Height = 30 Hint = 'Bin current image in the viewer. Noise will be reduced.' Top = 5 Width = 80 Caption = 'Apply' OnClick = bin_image1Click ParentFont = False TabOrder = 2 end end object GroupBox8: TGroupBox Left = 288 Height = 60 Top = 136 Width = 212 Caption = 'Box blur filter' ClientHeight = 40 ClientWidth = 208 ParentFont = False TabOrder = 11 object undo_button6: TBitBtn Left = 168 Height = 30 Hint = 'Undo last action' Top = 4 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button2Click ParentFont = False TabOrder = 0 end object apply_box_filter2: TButton Left = 79 Height = 30 Hint = 'Test box blur on the current displayed image. Use CTRL-Z to undo.' Top = 4 Width = 79 Caption = 'Apply' OnClick = apply_box_filter2Click ParentFont = False TabOrder = 1 end object flat_combine_method1: TComboBox Left = 6 Height = 23 Hint = 'Factor' Top = 4 Width = 63 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '2x2' '3x3' '4x4' '5x5' ) ParentFont = False Style = csDropDownList TabOrder = 2 Text = '2x2' end end end end object OpenDialog1: TOpenDialog Title = 'Open an existing file' Left = 88 Top = 592 end object ImageList2: TImageList Left = 1336 Top = 592 Bitmap = { 4C7A1B0000001000000010000000890600000000000078DAED9CC94A244D10C7 7D94EF51E6E40BA807155790715FC7654070DF709C1144BD28E820A2B8A0E3B8 A2201E3CF8021EBCCC9BC47CFF84949A9ADC2233BBBA472B9BC0EAAAFC454446 46965551DD5D5E5E4EE529296334557F8E0E5D5F571DE50AFF5D85EBABCE7621 79D3F152E56D317FEBE3CF3A7F02D7C0BB90E7E7E77733D6B72E2F2F2F791C22 C9F8F8F85F727F7FAF14555F57D6A643D55736173D6946D754BC2BABD2A1F2D7 95D78DD787E7B6D87CB1C61F3A7F31F22746FE86AE1FDFF59B9F0373C9E55D4B A62D75EE61B3E9F3994AAFE9BCA8B2EF72DE55D9D48D8B6B3FC6F8B388BF8B4E AE24C7E5F3B710BC6ACE4DB9C0C91F1D1F12BF98ADA5A585DADADAE8E3C78F42 3A3A3A08FB6C5C4F4F0F412E2E2E687D7D9D363737E9E1E181BABABAA8A1A141 E8191A1A52EA696A6AA2919111FAF6ED1BEDEFEFD3C1C1019D9C9CD0F5F535AD ADAD896DE8ECEFEF57F2757575343B3B4B5B5B5BB4B3B3437B7B7B74787828B8 CBCB4BBAB9B9117ED5D7D70B49B2783F3030409F3F7F163E7FFFFE9D76777785 1FC7C7C7F4E3C70FC1DEDEDE0A1F262727A9BBBBFB55476363A3605B5B5BC57C C087959515EAEBEBA3E1E161DADEDEA69F3F7FD2D5D515DDDDDD095D83838304 4EEAE8EDED153A11EF2F5FBE504D4D0D55545488F3737373336D6C6C080EE3C0 F892E340ECE07F7B7BBBE0676666A8B2B2F29547EC71ECECECECD587AF5FBFBE 8E010C7CC5DC617B717151E8963C0436104FE90372776C6CEC8F18C007F0D08B 79ACAEAEA6AAAA2AC1C33E78C4E1F1F151F8981C3FB631FF32E7464747451CE0 07F4CCCDCDD1D1D1119D9E9E0AFFA11F79353F3F2F742046883FE22A75E0FDA7 4F9F44CEC03E18E8800FE7E7E7E258320F1027390EE4BB4A3A3B3B6975759530 5FAA3C841F9873E8862FC97504418C979797C5FE640EA5D7828C07E602B62626 26446E212E5353537FE5B04E0FFCC1B81003F88FED743FDB39CA66C7D487CBBB 9E774D3CD75F1D6F3A67EBFCF1F125E7C379D5F550CC5CE0F09C6BB3986B87BB AE4DEB3BE41A43D55FA547D7CF45B7CE2F175F4DE372B16F8B0BE7FE80C3977A 73F5DB353F6C7310EBDE23D47E8CF1177BDE4A41B8AD187CB22F974FF7E5F0AA 7E2A5EA54B67C3C4EBDEBBC4CF756E4D7D5CE262B3C1896929E45FB104F771A5 20DC96F339FF96F8A2ADBBB23F5FA8154C4F4F8B7A9A14D46B50BB4BF74DBF6A 6B6B454D06B596B4A09E839A848D5F585810FD93FB51AF5A5A5A12358C348331 C0A614F4058F6DF88EDA91F401BA653FD4F1C0A34FDA57A943F71E82DA0C78D4 755017423D07F51DD4A5642DD4B48D1A50721CF047EA448D07BE621BFEC35F6C 631FDEAB6227E32EFBC96DC40D826DEC93DBE9978C535A17E60D2275C9ED9CD7 F3984755FC91473A5EB76E54EB48C5A7D7814E905BB6751CFA7239CF9838EE31 79DCD586EF3EDD311D6F1A8BCD8E2D7E729F2BAFF399C3ABFCCECA3E3786AEF1 8F31FFA1F91723FF7DD79FAD3E68B325FA6DFDA7162EEF58FF37F11F7E7D308A 2BCFA9FFEBF8F1C65F46C9F9487C626EB87C3A1742F93F3E6BC7E4D3BA4279DF FA7F219E09A8EA1FAE75562E8F6378D60BF1F9DC44924FEAE1DA4EB3E9DA9A8F 6D930F2A561707B9DF95D7E9F46593B67DD8646E70D9907197FD7F6F6C7A86C1 899929EF7573E7B35E4D760B71ED1FE3DE21C6BD478C7B97ACEE7D6CD7DD21D7 7E1C1D3E35A3ACEC1723FEC5CABF525A7FA1F7F0399FF339FF6FF0DC7399C99E CBB938B9DF562FD2D5A17CFE3F859CEF4D3E737D08FD3F59ECEBAC183C57976E 0EB3F81F67CB63DFE3B1AE9F42AF63949FDFF0E45CF5D8FAB81E77F1CF8735F5 7DEF7C68FC63CCBF6BFE71FC54F5E7AE09DFB164A5A3D0CF0163DCAF86DE8F86 3C6F2CE4F34A57DED706F7DA8BFBFC2F6BFBC5887F96B5AAAC733FE943C8E787 4B8D9771F1E175DB2EBCAABF8B0E9BBF361D853E6EEAE31A6B536CB8718E3D4F BEB9524AF91F229CEF0EB9F863FA0E95CBF7956CFD75BEE85817BD3ABF54DF07 54E937F9A8E25CBFCFE8121F4E8C6D6332C5D7950F8929E7FB79B639E07EBF8F 9B53DCBC34E5A3AB1F9C3518F2ACDFD07C7F3324C951047B14C14F0AE0281217 632CBEC74CFDB8F3451A5F39BF33639A0FDF9C2BF3CCBB509E1CB60BC513E73D 7E5BA01404AD107D43987F29262646EE2B460C8A15F7ACEDBADA2BB53C2CCF7F FF3BFFFDEFC87CFEFBDFD9E64F6CC9D77FE9ACFF9CCFF942AEFF18BF21F2F4F4 44BE2279936EDDC38B9C8FC707CF9FC586D6B79C8FC287CC5FDEC29AE9798A6D 9FCFF33957DEE599978D578DCB85E7302A3B369EFB9C376FEAF61B3B195E5F } end object PopupMenu1: TPopupMenu Images = ImageList2 OnPopup = PopupMenu1Popup Left = 464 Top = 592 object Viewimage1: TMenuItem Caption = 'View image' OnClick = Viewimage1Click end object MenuItem3: TMenuItem Caption = '-' end object menukeywordchange1: TMenuItem Caption = 'Change column keyword' object keywordchangelast1: TMenuItem Caption = 'Change keyword last column' Hint = 'Change the key listed in this column' OnClick = keywordchangelast1Click end object keywordchangesecondtolast1: TMenuItem Caption = 'Change keyword second to last column' Hint = 'Change the key listed in this column' OnClick = keywordchangesecondtolast1Click end end object MenuItem4: TMenuItem Caption = '-' end object unselect1: TMenuItem Caption = 'Uncheck selected' ImageIndex = 9 OnClick = unselect1Click end object select1: TMenuItem Caption = 'Check mark selected' ImageIndex = 8 OnClick = select1Click end object selectall1: TMenuItem Caption = 'Select all' Hint = 'Select all items' ShortCut = 16449 OnClick = selectall1Click end object MenuItem1: TMenuItem Caption = '-' end object removeselected1: TMenuItem Caption = 'Remove selected' OnClick = removeselected1Click end object list_to_clipboard1: TMenuItem Caption = 'Copy selected list to clipboard' Hint = 'Data will be in clipboard and can be pasted in a spreadsheet' ImageIndex = 13 ShortCut = 16451 OnClick = list_to_clipboard1Click end object keyword1: TMenuItem Caption = 'Change header keyword in selected files' Hint = 'Modify or add a keyword to the header of the selected files' object changekeyword1: TMenuItem Caption = 'Type keyword and new value' Hint = 'All select files will be updated with new keyword value. Type for value DELETE to remove keyword.' OnClick = changekeyword1Click end object MenuItem19: TMenuItem Caption = '-' end object extend_object_name_with_time_observation1: TMenuItem Caption = 'Extend value of keyword OBJECT with rounded Julian day' Hint = 'This allows to split an image series in groups of similar observation time.' OnClick = extend_object_name_with_time_observation1Click end end object MenuItem33: TMenuItem Caption = '-' end object auto_select1: TMenuItem Caption = 'Auto alignment star for selected images' Hint = 'For manual alignment, This will auto select automatic the alignment star in all selected images based on the star selected in the first image ' OnClick = auto_select1Click end object MenuItem2: TMenuItem Caption = '-' end object renametobak1: TMenuItem Caption = 'Rename selected files to *.bak' Hint = 'In preperation for deleting later. ' ImageIndex = 10 OnClick = renametobak1Click end end object ImageList_colors: TImageList Left = 1416 Top = 592 Bitmap = { 4C7A150000001000000010000000CA0400000000000078DAED9A7F6C535514C7 5F06C8602BA2C40D4D4C2426C6CCB9B090358046C1B9B2ADEB46BB755228639B AB8C6CCE860A0A09AC6916026E2E31A2515144FED018031A5D024A744DBA3137 377F20434442A2C4E03F54333106CBFAF53EF36A9ECFD7F6FDDABAB5E736DF2D 7DEF7EEE393DF7DC77CFEB2BC781E348245246CAEFE7482452868AAE802452E6 8AFD8554ECBA202BC874269E78E2672F1F0C0639128994B1422271495AA23E6A 79A96DBFDF9FD42729AFD6DF787CBC78C8F9A4C717E2F5F3E2B9998A5C50C3CB F9321D6B27596CB4AEEF696AFFDC8EF04D63DFFFDCD6241827D1F9646328F551 6E0CA59F4DD6170D3C6714AB610CD9CFAF23764AE3AF68FE75F29C8EF10D5D2F 46D9419ABE3A3B3B21955A36D931A5AC9A31F4F27AFDD7637726B146F046E5E0 4CF67F2ADB635B9FCC757ADACA6B5BB6ED723EF5ECCB8EB6ED07AB1B9F7049FB B56E29CB6A715BF29C8ECA227B5DAD65639BD7B375FF8B273B8E7E78DD17BA08 EF85BFE0F901D8F03D60ED3B03AB6BB347CC77F91E1A3ED65B8CC3816234B9CA D035F633023F023B2E01AD1701F705A0E63BC0727C14963DCFA3DCDDEC15F3FB 7CAB5FFFEDE412FCDA978B4087193BCE4EA09D715B18E738CFB87160D5B740E1 37C05D639358FDCCFEB0986F7197765C399683ABC7B3D0B3BD08CDE723A8675C C539E0C1B3C072C6DDFD1570FBD09FB8AFFB6D585C0D57D6D56F2A8CF11B9D96 87832FDC865FDEE1707057116CCCD7358C5B7106B8E76BE08E31C0F40570D370 14D903112C7D771CD69AF587637CBDA3FC969776DE1BBD7C84C36B7B0BB1EA74 18058CBBF34B60F128903DCCD821C60E46B1ECD5204A76F6A0BCCE75BAD25EBB 303646D386477EDAD75E74C9D7F240B7F5714FCFB2F7CF61C108E33E8F623EE3 168426B1303889DCCF26613A7503C57B0E311FEC2B637CB5AD6AA938268F6E6A FAC0742A8CEC50148B3EF91DE6A70F0C9A7D0706577ABBC6D736B60F57389C7B 2BD7D766C5CB9D0A7B9DF9FEAE23C8E967F63EBD01B3EFB9F7D4E45E5575CD9C 35CD1D9145CCD79B3FE6FD7DE35A99AB698E9A31588CFE587C22825BFB228C7F 938F59BE52D666B3E5AF73BAB1E4237EBEC228DDBC2D5C69AF9BA7826F60F145 69431B589CAE5A6B1C7635BE333E876905D3F22A9B6D7E0A6A7AFEB3BE25689E 06BE4454939568E0F9B91E159468DE5B998E3249E7368FE99AA03CC9B97C81E1 D9EB828F5E499F6E91FFDD92735EE138CFEE66BACC1490B11DE3A53E040466B7 F0BE51E8F70AD35C896DB10F73853E1098582B10F50B4A6C8B7D088ADE178878 7E1D4FA878EC342130E2D6AF82EF8F338F2714AA55863709F3AA442619BE5785 FFBD32FC5AA601A6A1241A10FA72E950FFCBD5E96A3515F5D54CA9F5B5DA5012 27B5BC9A7B0AA3EDA722FED355DFA722F763AF919111E895F49AA2E6583AF032 F19095D2F8FDFBD38C24C7D285373A7E999E7F2AD7AE313F2312B55028A4E858 3C5EA99D38C791C03E92F050E0FFFF9E3BC4C6E6FF2B9198118D0715F1838CFF B39637287E9AE7CFC0FC31227FB5AC1FCDA2FD3FB5D7DF4C8F9FDEBC54536B24 B03FDBF92959D794BFB4FEE9FE29FDEF9F287F69FDCFF4F825CA6925B6E2ADA9 74E0F5C68FF297EAD7D95CBFD2F533B5A2F8D3FE95CAFD8BF2CFF8EFFF69FFA2 FD8BEE9F3273FFA7EF5FE8F935AD7FAAFFA97EA5FA95D67F7AC7EF6FE0A9380A } end object PopupMenu2: TPopupMenu Images = ImageList2 Left = 576 Top = 592 object Viewimage2: TMenuItem Caption = 'View image' OnClick = Viewimage1Click end object MenuItem32: TMenuItem Caption = '-' end object unselect2: TMenuItem Caption = 'Uncheck selected' ImageIndex = 9 OnClick = unselect1Click end object select2: TMenuItem Caption = 'Check mark selected' ImageIndex = 8 OnClick = select1Click end object selectall2: TMenuItem Caption = 'Select all' Hint = 'Select all items' ShortCut = 16449 OnClick = selectall1Click end object MenuItem5: TMenuItem Caption = '-' end object removeselected2: TMenuItem Caption = 'Remove selected' OnClick = removeselected1Click end object keyword2: TMenuItem Caption = 'Change header keyword in selected files' Hint = 'Modify or add a keyword to the header of the selected files' object changekeyword2: TMenuItem Caption = 'Type keyword and new value' Hint = 'All select files will be updated with new keyword value. Type for value DELETE to remove keyword.' OnClick = changekeyword1Click end end object MenuItem6: TMenuItem Caption = '-' end object renametobak2: TMenuItem Caption = 'Rename selected files to *.bak' Hint = 'In preperation for deleting later. ' ImageIndex = 10 OnClick = renametobak1Click end end object PopupMenu3: TPopupMenu Images = ImageList2 Left = 656 Top = 592 object Viewimage3: TMenuItem Caption = 'View image' OnClick = Viewimage1Click end object MenuItem7: TMenuItem Caption = '-' end object unselect3: TMenuItem Caption = 'Uncheck selected' ImageIndex = 9 OnClick = unselect1Click end object select3: TMenuItem Caption = 'Check mark selected' ImageIndex = 8 OnClick = select1Click end object selectall3: TMenuItem Caption = 'Select all' Hint = 'Select all items' ShortCut = 16449 OnClick = selectall1Click end object MenuItem8: TMenuItem Caption = '-' end object removeselected3: TMenuItem Caption = 'Remove selected' OnClick = removeselected1Click end object keyword3: TMenuItem Caption = 'Change header keyword in selected files' Hint = 'Modify or add a keyword to the header of the selected files' object changekeyword3: TMenuItem Caption = 'Type keyword and new value' Hint = 'All select files will be updated with new keyword value. Type for value DELETE to remove keyword.' OnClick = changekeyword1Click end end object MenuItem9: TMenuItem Caption = '-' end object renametobak3: TMenuItem Caption = 'Rename selected files to *.bak' Hint = 'In preperation for deleting later. ' ImageIndex = 10 OnClick = renametobak1Click end end object PopupMenu4: TPopupMenu Images = ImageList2 Left = 768 Top = 592 object Viewimage4: TMenuItem Caption = 'View image' OnClick = Viewimage1Click end object MenuItem10: TMenuItem Caption = '-' end object unselect4: TMenuItem Caption = 'Uncheck selected' ImageIndex = 9 OnClick = unselect1Click end object select4: TMenuItem Caption = 'Check mark selected' ImageIndex = 8 OnClick = select1Click end object selectall4: TMenuItem Caption = 'Select all' Hint = 'Select all items' ShortCut = 16449 OnClick = selectall1Click end object MenuItem11: TMenuItem Caption = '-' end object removeselected4: TMenuItem Caption = 'Remove selected' OnClick = removeselected1Click end object keyword4: TMenuItem Caption = 'Change header keyword in selected files' Hint = 'Modify or add a keyword to the header of the selected files' object changekeyword4: TMenuItem Caption = 'Type keyword and new value' Hint = 'All select files will be updated with new keyword value. Type for value DELETE to remove keyword.' OnClick = changekeyword1Click end end object MenuItem12: TMenuItem Caption = '-' end object renametobak4: TMenuItem Caption = 'Rename selected files to *.bak' Hint = 'In preperation for deleting later. ' ImageIndex = 10 OnClick = renametobak1Click end end object PopupMenu5: TPopupMenu Images = ImageList2 Left = 856 Top = 592 object Viewimage5: TMenuItem Caption = 'View image' OnClick = Viewimage1Click end object MenuItem13: TMenuItem Caption = '-' end object selectall5: TMenuItem Caption = 'Select all' Hint = 'Select all files' ShortCut = 16449 OnClick = selectall1Click end object MenuItem28: TMenuItem Caption = '-' end object copy_files_to_clipboard1: TMenuItem Caption = 'Copy selected files to clipboard' Hint = 'Copy the selected files to clipboard.' ShortCut = 16451 OnClick = copy_files_to_clipboard1Click end object copypath1: TMenuItem Caption = 'Copy file path' Hint = 'Copy file path to clipboard for use in your file explorer.' OnClick = copypath1Click end object copy_to_blink1: TMenuItem Caption = 'Copy selected images to tab Blink' ImageIndex = 14 OnClick = copy_to_blink1Click end object copy_to_photometry1: TMenuItem Caption = 'Copy selected images to tab Photometry' ImageIndex = 19 OnClick = copy_to_photometry1Click end object copy_to_images1: TMenuItem Caption = 'Copy selected images to tab lights' OnClick = copy_to_images1Click end object MenuItem24: TMenuItem Caption = '-' end object removeselected5: TMenuItem Caption = 'Remove selected' OnClick = removeselected1Click end object rename_result1: TMenuItem Caption = 'Rename selected files as' Hint = 'Rename the file' OnClick = rename_result1Click end object MenuItem25: TMenuItem Caption = '-' end object result_compress1: TMenuItem Caption = 'Compress selected files' Hint = 'Compress selected files using external CFITSIO utility program fpack. Files will get extension .fz' OnClick = result_compress1Click end object MenuItem15: TMenuItem Caption = '-' end object renametobak5: TMenuItem Caption = 'Rename selected files to *.bak' Hint = 'In preperation for deleting later. ' ImageIndex = 10 OnClick = renametobak1Click end end object PopupMenu6: TPopupMenu Images = ImageList2 Left = 936 Top = 592 object Viewimage6: TMenuItem Caption = 'View image' OnClick = Viewimage1Click end object MenuItem16: TMenuItem Caption = '-' end object unselect6: TMenuItem Caption = 'Uncheck selected' ImageIndex = 9 OnClick = unselect1Click end object select6: TMenuItem Caption = 'Check mark selected' ImageIndex = 8 OnClick = select1Click end object selectall6: TMenuItem Caption = 'Select all' Hint = 'Select all items' ShortCut = 16449 OnClick = selectall1Click end object MenuItem17: TMenuItem Caption = '-' end object removeselected6: TMenuItem Caption = 'Remove selected' OnClick = removeselected1Click end object list_to_clipboard6: TMenuItem Caption = 'Copy selected list to clipboard' Hint = 'Data will be in clipboard and can be pasted in a spreadsheet' ImageIndex = 13 ShortCut = 16451 OnClick = list_to_clipboard1Click end object keyword6: TMenuItem Caption = 'Change header keyword in selected files' Hint = 'Modify or add a keyword to the header of the selected files' object changekeyword6: TMenuItem Caption = 'Type keyword and new value' Hint = 'All select files will be updated with new keyword value. Type for value DELETE to remove keyword.' OnClick = changekeyword1Click end end object MenuItem18: TMenuItem Caption = '-' end object renametobak6: TMenuItem Caption = 'Rename selected files to *.bak' Hint = 'In preperation for deleting later. ' ImageIndex = 10 OnClick = renametobak1Click end end object ColorDialog1: TColorDialog Color = clBlack CustomColors.Strings = ( 'ColorA=000000' 'ColorB=000080' 'ColorC=008000' 'ColorD=008080' 'ColorE=800000' 'ColorF=800080' 'ColorG=808000' 'ColorH=808080' 'ColorI=C0C0C0' 'ColorJ=0000FF' 'ColorK=00FF00' 'ColorL=00FFFF' 'ColorM=FF0000' 'ColorN=FF00FF' 'ColorO=FFFF00' 'ColorP=FFFFFF' 'ColorQ=C0DCC0' 'ColorR=F0CAA6' 'ColorS=F0FBFF' 'ColorT=A4A0A0' ) Left = 1256 Top = 592 end object PopupMenu7: TPopupMenu Images = ImageList2 Left = 1016 Top = 592 object Viewimage7: TMenuItem Caption = 'View image' OnClick = Viewimage1Click end object MenuItem20: TMenuItem Caption = '-' end object unselect7: TMenuItem Caption = 'Uncheck selected' ImageIndex = 9 OnClick = unselect1Click end object select7: TMenuItem Caption = 'Check mark selected' ImageIndex = 8 OnClick = select1Click end object selectall7: TMenuItem Caption = 'Select all' Hint = 'Select all items' ShortCut = 16449 OnClick = selectall1Click end object MenuItem21: TMenuItem Caption = '-' end object removeselected7: TMenuItem Caption = 'Remove selected' OnClick = removeselected1Click end object list_to_clipboard7: TMenuItem Caption = 'Copy selected list to clipboard' Hint = 'Data will be in clipboard and can be pasted in a spreadsheet' ImageIndex = 13 ShortCut = 16451 OnClick = list_to_clipboard1Click end object keyword7: TMenuItem Caption = 'Change header keyword in selected files' Hint = 'Modify or add a keyword to the header of the selected files' object changekeyword7: TMenuItem Caption = 'Type keyword and new value' Hint = 'All select files will be updated with new keyword value. Type for value DELETE to remove keyword.' OnClick = changekeyword1Click end end object MenuItem22: TMenuItem Caption = '-' end object photom_calibrate1: TMenuItem Caption = 'Calibrate selected files' Hint = 'Calibrate selected files with darks, flats and flatdarks. ' ImageIndex = 26 OnClick = photom_calibrate1Click end object photom_green1: TMenuItem Caption = 'Extract green channel of selected raw files' Hint = 'For raw OSC images only. Not for images converted to colour. The routine will combine for each bayer submosaic the two green pixels or red or blue pixel. Check in advance the de-mosaic pattern in stack menu, tab stack method.' ImageIndex = 25 OnClick = photom_green1Click end object photom_stack1: TMenuItem Caption = 'Stack selected files in mode average' Hint = 'Stack the selected files in mode AVERAGE and replace them by the stack.' ImageIndex = 6 OnClick = photom_stack1Click end object Separator1: TMenuItem Caption = '-' end object renametobak7: TMenuItem Caption = 'Rename selected files to *.bak' Hint = 'In preperation for deleting later. ' ImageIndex = 10 OnClick = renametobak1Click end end object PopupMenu8: TPopupMenu Images = ImageList2 Left = 1104 Top = 592 object Viewimage8: TMenuItem Caption = 'View image' OnClick = Viewimage1Click end object MenuItem23: TMenuItem Caption = '-' end object unselect8: TMenuItem Caption = 'Uncheck selected' ImageIndex = 9 OnClick = unselect1Click end object select8: TMenuItem Caption = 'Check mark selected' ImageIndex = 8 OnClick = select1Click end object selectall8: TMenuItem Caption = 'Select all' Hint = 'Select all items' ShortCut = 16449 OnClick = selectall1Click end object MenuItem26: TMenuItem Caption = '-' end object removeselected8: TMenuItem Caption = 'Remove selected' OnClick = removeselected1Click end object list_to_clipboard8: TMenuItem Caption = 'Copy selected list to clipboard' Hint = 'Data will be in clipboard and can be pasted in a spreadsheet' ImageIndex = 13 ShortCut = 16451 OnClick = list_to_clipboard1Click end object keyword8: TMenuItem Caption = 'Change header keyword in selected files' Hint = 'Modify or add a keyword to the header of the selected files' object changekeyword8: TMenuItem Caption = 'Type keyword and new value' Hint = 'All select files will be updated with new keyword value. Type for value DELETE to remove keyword.' OnClick = changekeyword1Click end end object MenuItem27: TMenuItem Caption = '-' end object renametobak8: TMenuItem Caption = 'Rename selected files to *.bak' Hint = 'In preperation for deleting later. ' ImageIndex = 10 OnClick = renametobak1Click end end object PopupMenu9: TPopupMenu Images = ImageList2 Left = 1176 Top = 592 object Viewimage9: TMenuItem Caption = 'View image' OnClick = Viewimage1Click end object MenuItem29: TMenuItem Caption = '-' end object unselect9: TMenuItem Caption = 'Uncheck selected' ImageIndex = 9 OnClick = unselect1Click end object select9: TMenuItem Caption = 'Check mark selected' ImageIndex = 8 OnClick = select1Click end object selectall9: TMenuItem Caption = 'Select all' Hint = 'Select all items' ShortCut = 16449 OnClick = selectall1Click end object MenuItem30: TMenuItem Caption = '-' end object removeselected9: TMenuItem Caption = 'Remove selected' OnClick = removeselected1Click end object list_to_clipboard9: TMenuItem Caption = 'Copy selected list to clipboard' Hint = 'Data will be in clipboard and can be pasted in a spreadsheet' ImageIndex = 13 ShortCut = 16451 OnClick = list_to_clipboard1Click end object keyword9: TMenuItem Caption = 'Change header keyword in selected files' Hint = 'Modify or add a keyword to the header of the selected files' object changekeyword9: TMenuItem Caption = 'Type keyword and new value' Hint = 'All select files will be updated with new keyword value. Type for value DELETE to remove keyword.' OnClick = changekeyword1Click end end object MenuItem31: TMenuItem Caption = '-' end object renametobak9: TMenuItem Caption = 'Rename selected files to *.bak' Hint = 'In preperation for deleting later. ' ImageIndex = 10 OnClick = renametobak1Click end end end astap_2022.12.09.orig/unit_constellations.pas0000644000175100017510000011143514344743400020307 0ustar debiandebianunit unit_constellations; {version 2001-10-21} {Copyright (C) 1997, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } Interface type const_star = record dm : smallint;{drawing mode, -2=start/ -1=draw} ra : smallint;{ra [0..24000]} dec : smallint;{dec[-9000..9000]} bay : pchar; {bayer letter} end; const constellation_length=602; Constellation : array[0..constellation_length] of const_star= {constellation lines and bayer letter {Format: -2=start/ -1=draw,RA [0..24000],Dec [-9000..9000], bayer letter} ((dm:-2;ra:140;dec:2909;bay:'α'), {Alpha And} {0} (dm:-1;ra:655;dec:3086;bay:'δ'), {Delta And} {0} (dm:-1;ra:1162;dec:3562;bay:'β'), {Beta And} {0} (dm:-1;ra:2065;dec:4233;bay:'γ'), {Gamma 1 And} {0} (dm:-2;ra:1162;dec:3562;bay:'β'), {Beta And} {0} (dm:-1;ra:946;dec:3850;bay:'μ'), {Mu And} {0} (dm:-1;ra:830;dec:4108;bay:'ν'), {Nu And} {0} (dm:-2;ra:10945;dec:-3714;bay:'ι'), {Iota Ant} {1} (dm:-1;ra:10453;dec:-3107;bay:'α'), {Alpha Ant} {1} (dm:-1;ra:9487;dec:-3595;bay:'ε'), {Epsilon Ant} {1} (dm:-2;ra:14798;dec:-7904;bay:'α'), {Alpha Aps} {2} (dm:-1;ra:16558;dec:-7890;bay:'γ'), {Gamma Aps} {2} (dm:-1;ra:16718;dec:-7752;bay:'β'), {Beta Aps} {2} (dm:-2;ra:22877;dec:-758;bay:'λ'), {Lambda Aqr} {3} (dm:-1;ra:22589;dec:-12;bay:'η'), {Eta Aqr} {3} (dm:-1;ra:22480;dec:-2;bay:'ζ'), {Zeta 1 Aqr} {3} (dm:-1;ra:22361;dec:-139;bay:'γ'), {Gamma Aqr} {3} (dm:-1;ra:22096;dec:-32;bay:'α'), {Alpha Aqr} {3} (dm:-1;ra:21526;dec:-557;bay:'β'), {Beta Aqr} {3} (dm:-1;ra:20795;dec:-950;bay:'ε'), {Epsilon Aqr} {3} (dm:-2;ra:22361;dec:-139;bay:'γ'), {Gamma Aqr} {3} (dm:-1;ra:22281;dec:-778;bay:'θ'), {Theta Aqr} {3} (dm:-1;ra:22911;dec:-1582;bay:'δ'), {Delta Aqr} {3} (dm:-2;ra:20189;dec:-82;bay:'θ'), {Theta Aql} {4} (dm:-1;ra:19922;dec:641;bay:'β'), {Beta Aql} {4} (dm:-1;ra:19846;dec:887;bay:'α'), {Alpha Aql} {4} (dm:-1;ra:19771;dec:1061;bay:'γ'), {Gamma Aql} {4} (dm:-1;ra:19090;dec:1386;bay:'ζ'), {Zeta Aql} {4} (dm:-1;ra:18994;dec:1507;bay:'ε'), {Epsilon Aql} {4} (dm:-2;ra:19846;dec:887;bay:'α'), {Alpha Aql} {4} (dm:-1;ra:19425;dec:311;bay:'δ'), {Delta Aql} {4} (dm:-1;ra:19104;dec:-488;bay:'λ'), {Lambda Aql} {4} (dm:-2;ra:18110;dec:-5009;bay:'θ'), {Theta Ara} {5} (dm:-1;ra:17531;dec:-4988;bay:'α'), {Alpha Ara} {5} (dm:-1;ra:17422;dec:-5553;bay:'β'), {Beta Ara} {5} (dm:-1;ra:17423;dec:-5638;bay:'γ'), {Gamma Ara} {5} (dm:-1;ra:17518;dec:-6068;bay:'δ'), {Delta Ara} {5} (dm:-2;ra:17422;dec:-5553;bay:'β'), {Beta Ara} {5} (dm:-1;ra:16977;dec:-5599;bay:'ζ'), {Zeta Ara} {5} (dm:-1;ra:16830;dec:-5904;bay:'η'), {Eta Ara} {5} (dm:-2;ra:2833;dec:2726;bay:'41'), {41 Ari} {6} (dm:-1;ra:2120;dec:2346;bay:'α'), {Alpha Ari} {6} (dm:-1;ra:1911;dec:2081;bay:'β'), {Beta Ari} {6} (dm:-1;ra:1892;dec:1930;bay:'γ'), {Gamma 1 Ari B} {6} (dm:-2;ra:5278;dec:4600;bay:'α'), {Alpha Aur} {7} (dm:-1;ra:5033;dec:4382;bay:'ε'), {Epsilon Aur} {7} (dm:-1;ra:4950;dec:3317;bay:'ι'), {Iota Aur} {7} (dm:-1;ra:5438;dec:2861;bay:'β'), {Beta Tau} {78} (dm:-1;ra:5995;dec:3721;bay:'θ'), {Theta Aur} {7} (dm:-1;ra:5992;dec:4495;bay:'β'), {Beta Aur} {7} (dm:-1;ra:5278;dec:4600;bay:'α'), {Alpha Aur} {7} (dm:-2;ra:13911;dec:1840;bay:'η'), {Eta Boo} {8} (dm:-1;ra:14261;dec:1918;bay:'α'), {Alpha Boo} {8} (dm:-1;ra:14531;dec:3037;bay:'ρ'), {Rho Boo} {new 2001-10-21} {8} (dm:-1;ra:14535;dec:3831;bay:'γ'), {Gamma Boo} {8} (dm:-1;ra:15032;dec:4039;bay:'β'), {Beta Boo} {8} (dm:-1;ra:15258;dec:3331;bay:'δ'), {Delta Boo} {8} (dm:-1;ra:14750;dec:2707;bay:'ε'), {Epsilon Boo} {8} (dm:-1;ra:14261;dec:1918;bay:'α'), {Alpha Boo} {8} (dm:-1;ra:14686;dec:1373;bay:'ζ'), {Zeta Boo} {8} (dm:-2;ra:4514;dec:-4495;bay:'δ'), {Delta Cae} {9} (dm:-1;ra:4676;dec:-4186;bay:'1'), {1 Cae} {9} (dm:-1;ra:4701;dec:-3714;bay:'β'), {Beta Cae} {9} (dm:-1;ra:5073;dec:-3548;bay:'γ'), {Gamma Cae} {9} (dm:-2;ra:12821;dec:8341;bay:''), {SAO2102 Cam} {10} (dm:-1;ra:7001;dec:7698;bay:''), {6022 Cam} {10} (dm:-1;ra:6314;dec:6932;bay:''), {SAO13788 Cam} {10} (dm:-1;ra:4901;dec:6634;bay:'α'), {Alpha Cam} {10} (dm:-1;ra:5057;dec:6044;bay:'β'), {Beta Cam} {10} (dm:-1;ra:4955;dec:5375;bay:'7'), {7 Cam} {10} (dm:-2;ra:3484;dec:5994;bay:'CS'), {CS Cam} {10} (dm:-1;ra:3825;dec:6553;bay:'BE'), {BE Cam} {10} (dm:-1;ra:3839;dec:7133;bay:'γ'), {Gamma Cam} {10} (dm:-1;ra:6314;dec:6932;bay:''), {SAO13788 Cam} {10} (dm:-2;ra:8975;dec:1186;bay:'α'), {Alpha Cnc} {11} (dm:-1;ra:8745;dec:1815;bay:'δ'), {Delta Cnc} {11} (dm:-1;ra:8721;dec:2147;bay:'γ'), {Gamma Cnc} {11} (dm:-1;ra:8778;dec:2876;bay:'ι'), {Iota Cnc} {11} (dm:-2;ra:8275;dec:919;bay:'β'), {Beta Cnc} {11} (dm:-1;ra:8745;dec:1815;bay:'δ'), {Delta Cnc} {11} (dm:-1;ra:8204;dec:1765;bay:'ζ'), {Zeta Cnc} {11} (dm:-2;ra:12933;dec:3831;bay:'α'), {Alpha 1 CVn} {12} (dm:-1;ra:12562;dec:4136;bay:'β'), {Beta CVn} {12} (dm:-2;ra:7402;dec:-2930;bay:'η'), {Eta CMa} {13} (dm:-1;ra:7140;dec:-2639;bay:'δ'), {Delta CMa} {13} (dm:-1;ra:6752;dec:-1672;bay:'α'), {Alpha CMa} {13} (dm:-1;ra:6378;dec:-1796;bay:'β'), {Beta CMa} {13} (dm:-2;ra:7063;dec:-1563;bay:'γ'), {Gamma CMa} {13} (dm:-1;ra:6936;dec:-1705;bay:'ι'), {Iota CMa} {13} (dm:-1;ra:6752;dec:-1672;bay:'α'), {Alpha CMa} {13} (dm:-2;ra:6977;dec:-2897;bay:'ε'), {Epsilon CMa} {13} (dm:-1;ra:7140;dec:-2639;bay:'δ'), {Delta CMa} {13} (dm:-2;ra:7655;dec:523;bay:'α'), {Alpha CMi} {14} (dm:-1;ra:7453;dec:829;bay:'β'), {Beta CMi} {14} (dm:-1;ra:7469;dec:893;bay:'γ'), {Gamma CMi} {14} (dm:-2;ra:20294;dec:-1251;bay:'α'), {Alpha 1 Cap} {15} (dm:-1;ra:20301;dec:-1255;bay:'α2'), {Alpha2 Cap} {15} (dm:-1;ra:20350;dec:-1478;bay:'β'), {Beta 1 Cap} {15} (dm:-1;ra:20768;dec:-2527;bay:'ψ'), {Psi Cap} {15} (dm:-1;ra:20864;dec:-2692;bay:'ω'), {Omega Cap} {15} (dm:-1;ra:21444;dec:-2241;bay:'ζ'), {Zeta Cap} {15} (dm:-1;ra:21784;dec:-1613;bay:'δ'), {Delta Cap} {15} (dm:-1;ra:21668;dec:-1666;bay:'γ'), {Gamma Cap} {15} (dm:-1;ra:21371;dec:-1683;bay:'ι'), {Iota Cap} {15} (dm:-1;ra:21099;dec:-1723;bay:'θ'), {Theta Cap} {15} (dm:-1;ra:20350;dec:-1478;bay:'β'), {Beta 1 Cap} {15} (dm:-2;ra:6399;dec:-5270;bay:'α'), {Alpha Car} {16} (dm:-1;ra:7946;dec:-5298;bay:'χ'), {Chi Car} {16} (dm:-1;ra:8375;dec:-5951;bay:'ε'), {Epsilon Car} {16} (dm:-1;ra:9183;dec:-5897;bay:'a'), {a Car} {16} (dm:-1;ra:9285;dec:-5928;bay:'ι'), {Iota Car} {16} (dm:-1;ra:10285;dec:-6133;bay:'q'), {q Car} {16} (dm:-1;ra:10716;dec:-6439;bay:'θ'), {Theta Car} {16} (dm:-1;ra:10229;dec:-7004;bay:'ω'), {Omega Car} {16} (dm:-1;ra:9220;dec:-6972;bay:'β'), {Beta Car} {16} (dm:-1;ra:9785;dec:-6507;bay:'υ'), {Upsilon Car} {16} (dm:-1;ra:9285;dec:-5928;bay:'ι'), {Iota Car} {16} (dm:-2;ra:1907;dec:6367;bay:'ε'), {Epsilon Cas} {17} (dm:-1;ra:1430;dec:6024;bay:'δ'), {Delta Cas} {17} (dm:-1;ra:945;dec:6072;bay:'γ'), {Gamma Cas} {17} (dm:-1;ra:675;dec:5654;bay:'α'), {Alpha Cas} {17} (dm:-1;ra:153;dec:5915;bay:'β'), {Beta Cas} {17} (dm:-2;ra:14660;dec:-6084;bay:'α'), {Alpha 1 Cen} {18} (dm:-1;ra:14064;dec:-6037;bay:'β'), {Beta Cen} {18} (dm:-1;ra:13665;dec:-5347;bay:'ε'), {Epsilon Cen} {18} (dm:-1;ra:13926;dec:-4729;bay:'ζ'), {Zeta Cen} {18} (dm:-1;ra:14592;dec:-4216;bay:'η'), {Eta Cen} {18} (dm:-1;ra:14111;dec:-3637;bay:'θ'), {Theta Cen} {18} (dm:-1;ra:13343;dec:-3671;bay:'ι'), {Iota Cen} {18} (dm:-1;ra:12692;dec:-4896;bay:'γ'), {Gamma Cen} {18} (dm:-2;ra:12139;dec:-5072;bay:'δ'), {Delta Cen} {18} (dm:-1;ra:12692;dec:-4896;bay:'γ'), {Gamma Cen} {18} (dm:-1;ra:13665;dec:-5347;bay:'ε'), {Epsilon Cen} {18} (dm:-2;ra:21478;dec:7056;bay:'β'), {Beta Cep} {19} (dm:-1;ra:21310;dec:6259;bay:'α'), {Alpha Cep} {19} (dm:-1;ra:22486;dec:5842;bay:'δ'), {Delta Cep} {19} (dm:-1;ra:22828;dec:6620;bay:'ι'), {Iota Cep} {19} (dm:-1;ra:23656;dec:7763;bay:'γ'), {Gamma Cep} {19} (dm:-1;ra:21478;dec:7056;bay:'β'), {Beta Cep} {19} (dm:-1;ra:22828;dec:6620;bay:'ι'), {Iota Cep} {19} (dm:-2;ra:3038;dec:409;bay:'α'), {Alpha Cet} {20} (dm:-1;ra:2722;dec:324;bay:'γ'), {Gamma Cet} {20} (dm:-1;ra:2658;dec:33;bay:'δ'), {Delta Cet} {20} (dm:-1;ra:2322;dec:-298;bay:'ο'), {Omicron Cet} {20} (dm:-1;ra:1858;dec:-1034;bay:'ζ'), {Zeta Cet} {20} (dm:-1;ra:1734;dec:-1594;bay:'τ'), {Tau Cet} {20} (dm:-1;ra:726;dec:-1799;bay:'β'), {Beta Cet} {20} (dm:-1;ra:324;dec:-882;bay:'ι'), {Iota Cet} {20} (dm:-2;ra:1858;dec:-1034;bay:'ζ'), {Zeta Cet} {20} (dm:-1;ra:1400;dec:-818;bay:'θ'), {Theta Cet} {20} (dm:-1;ra:1143;dec:-1018;bay:'η'), {Eta Cet} {20} (dm:-1;ra:726;dec:-1799;bay:'β'), {Beta Cet} {20} (dm:-2;ra:8309;dec:-7692;bay:'α'), {Alpha Cha} {21} (dm:-1;ra:10591;dec:-7861;bay:'γ'), {Gamma Cha} {21} (dm:-1;ra:12306;dec:-7931;bay:'β'), {Beta Cha} {21} (dm:-1;ra:10763;dec:-8054;bay:'δ2'), {Delta2 Cha} {21} (dm:-1;ra:8344;dec:-7748;bay:'θ'), {Theta Cha} {21} (dm:-1;ra:8309;dec:-7692;bay:'α'), {Alpha Cha} {21} (dm:-2;ra:15292;dec:-5880;bay:'β'), {Beta Cir} {22} (dm:-1;ra:14708;dec:-6498;bay:'α'), {Alpha Cir} {22} (dm:-1;ra:15390;dec:-5932;bay:'γ'), {Gamma Cir} {22} (dm:-2;ra:6369;dec:-3344;bay:'δ'), {Delta Col} {23} (dm:-1;ra:5849;dec:-3577;bay:'β'), {Beta Col} {23} (dm:-1;ra:5661;dec:-3407;bay:'α'), {Alpha Col} {23} (dm:-1;ra:5520;dec:-3547;bay:'ε'), {Epsilon Col} {23} (dm:-1;ra:5849;dec:-3577;bay:'β'), {Beta Col} {23} (dm:-2;ra:13166;dec:1753;bay:'α'), {Alpha Com} {24} (dm:-1;ra:13198;dec:2788;bay:'β'), {Beta Com} {24} (dm:-1;ra:12449;dec:2827;bay:'γ'), {Gamma Com} {24} (dm:-2;ra:19107;dec:-3706;bay:'γ'), {Gamma CrA} {25} (dm:-1;ra:19158;dec:-3790;bay:'α'), {Alpha CrA} {25} (dm:-1;ra:19167;dec:-3934;bay:'β'), {Beta CrA} {25} (dm:-2;ra:15960;dec:2688;bay:'ε'), {Epsilon CrB} {26} (dm:-1;ra:15712;dec:2630;bay:'γ'), {Gamma CrB} {26} (dm:-1;ra:15578;dec:2671;bay:'α'), {Alpha CrB} {26} (dm:-1;ra:15464;dec:2911;bay:'β'), {Beta CrB} {26} (dm:-1;ra:15549;dec:3136;bay:'θ'), {Theta CrB} {26} (dm:-2;ra:12140;dec:-2473;bay:'α'), {Alpha Crv} {27} (dm:-1;ra:12169;dec:-2262;bay:'ε'), {Epsilon Crv} {27} (dm:-1;ra:12263;dec:-1754;bay:'γ'), {Gamma Crv} {27} (dm:-1;ra:12498;dec:-1652;bay:'δ'), {Delta Crv} {27} (dm:-1;ra:12573;dec:-2340;bay:'β'), {Beta Crv} {27} (dm:-1;ra:12169;dec:-2262;bay:'ε'), {Epsilon Crv} {27} (dm:-2;ra:10996;dec:-1830;bay:'α'), {Alpha Crt} {28} (dm:-1;ra:11194;dec:-2283;bay:'β'), {Beta Crt} {28} (dm:-1;ra:11415;dec:-1768;bay:'γ'), {Gamma Crt} {28} (dm:-1;ra:11322;dec:-1478;bay:'δ'), {Delta Crt} {28} (dm:-1;ra:10996;dec:-1830;bay:'α'), {Alpha Crt} {28} (dm:-2;ra:12443;dec:-6310;bay:'α'), {Alpha 1 Cru} {29} (dm:-1;ra:12519;dec:-5711;bay:'γ'), {Gamma Cru a} {29} (dm:-2;ra:12795;dec:-5969;bay:'β'), {Beta Crux} {29} (dm:-1;ra:12252;dec:-5875;bay:'δ'), {Delta Cru} {29} (dm:-2;ra:20691;dec:4528;bay:'α'), {Alpha Cyg} {30} (dm:-1;ra:20370;dec:4026;bay:'γ'), {Gamma Cyg} {30} (dm:-1;ra:19938;dec:3508;bay:'η'), {Eta Cyg} {30} (dm:-1;ra:19843;dec:3291;bay:'χ'), {Chi Cyg} {30} (dm:-1;ra:19513;dec:2797;bay:'β'), {Beta Cyg} {30} (dm:-2;ra:21216;dec:3023;bay:'ζ'), {Zeta Cyg} {30} (dm:-1;ra:20770;dec:3397;bay:'ε'), {Epsilon Cyg} {30} (dm:-1;ra:20370;dec:4026;bay:'γ'), {Gamma Cyg} {30} (dm:-1;ra:19750;dec:4513;bay:'δ'), {Delta Cyg} {30} (dm:-1;ra:19495;dec:5173;bay:'ι'), {Iota Cyg} {30} (dm:-1;ra:19285;dec:5337;bay:'κ'), {Kappa Cyg} {30} (dm:-2;ra:20554;dec:1130;bay:'ε'), {Epsilon Del} {31} (dm:-1;ra:20588;dec:1467;bay:'ζ'), {Zeta Del} {31} (dm:-1;ra:20661;dec:1591;bay:'α'), {Alpha Del} {31} (dm:-1;ra:20777;dec:1612;bay:'γ'), {Gamma 1 Del} {31} (dm:-1;ra:20724;dec:1507;bay:'δ'), {Delta Del} {31} (dm:-1;ra:20626;dec:1460;bay:'β'), {Beta Del} {31} (dm:-1;ra:20588;dec:1467;bay:'ζ'), {Zeta Del} {31} (dm:-2;ra:4267;dec:-5149;bay:'γ'), {Gamma Dor} {32} (dm:-1;ra:4567;dec:-5505;bay:'α'), {Alpha Dor} {32} (dm:-1;ra:5560;dec:-6249;bay:'β'), {Beta Dor} {32} (dm:-1;ra:5746;dec:-6574;bay:'δ'), {Delta Dor} {32} (dm:-2;ra:12558;dec:6979;bay:'κ'), {Kappa Dra} {33} (dm:-1;ra:14073;dec:6438;bay:'α'), {Alpha Dra} {33} (dm:-1;ra:15415;dec:5897;bay:'ι'), {Iota Dra} {33} (dm:-1;ra:16031;dec:5857;bay:'θ'), {Theta Dra} {33} (dm:-1;ra:16400;dec:6151;bay:'η'), {Eta Dra} {33} (dm:-1;ra:17146;dec:6571;bay:'ζ'), {Zeta Dra} {33} (dm:-1;ra:19803;dec:7027;bay:'ε'), {Epsilon Dra} {33} (dm:-1;ra:19209;dec:6766;bay:'δ'), {Delta Dra} {33} (dm:-1;ra:17536;dec:5518;bay:'ν'), {Nu 1 Dra} {33} (dm:-1;ra:17507;dec:5230;bay:'β'), {Beta Dra} {33} (dm:-1;ra:17943;dec:5149;bay:'γ'), {Gamma Dra} {33} (dm:-1;ra:17536;dec:5518;bay:'ν'), {Nu 1 Dra} {33} (dm:-2;ra:21264;dec:525;bay:'α'), {Alpha Equ} {34} (dm:-1;ra:21241;dec:1001;bay:'δ'), {Delta Equ} {34} (dm:-1;ra:21172;dec:1013;bay:'γ'), {Gamma Equ} {34} (dm:-1;ra:20985;dec:429;bay:'ε'), {Epsilon Equ} {34} (dm:-1;ra:21264;dec:525;bay:'α'), {Alpha Equ} {34} (dm:-2;ra:5131;dec:-509;bay:'β'), {Beta Eri} {35} (dm:-1;ra:4605;dec:-335;bay:'ν'), {Nu Eri} {35} (dm:-1;ra:3967;dec:-1351;bay:'γ'), {Gamma Eri} {35} (dm:-1;ra:3721;dec:-976;bay:'δ'), {Delta Eri} {35} (dm:-1;ra:3549;dec:-946;bay:'ε'), {Epsilon Eri} {35} (dm:-1;ra:2940;dec:-890;bay:'η'), {Eta Eri} {35} (dm:-1;ra:4298;dec:-3380;bay:'41'), {41 Eri} {35} (dm:-1;ra:2971;dec:-4030;bay:'θ'), {Theta 1 Eri} {35} (dm:-1;ra:2275;dec:-5150;bay:'φ'), {phi Eri} {35} (dm:-1;ra:1933;dec:-5161;bay:'χ'), {Chi Eri} {35} (dm:-1;ra:1629;dec:-5724;bay:'α'), {Alpha Eri} {35} (dm:-2;ra:3704;dec:-3194;bay:'δ'), {Delta For} {36} (dm:-1;ra:3201;dec:-2899;bay:'α'), {Alpha For} {36} (dm:-1;ra:2818;dec:-3241;bay:'β'), {Beta For} {36} (dm:-1;ra:2075;dec:-2930;bay:'ν'), {Nu For} {36} (dm:-2;ra:6629;dec:1640;bay:'γ'), {Gamma Gem} {37} (dm:-1;ra:7068;dec:2057;bay:'ζ'), {Zeta Gem} {37} (dm:-1;ra:7335;dec:2198;bay:'δ'), {Delta Gem} {37} (dm:-1;ra:7755;dec:2803;bay:'β'), {Beta Gem} {37} (dm:-1;ra:7577;dec:3189;bay:'α'), {Alpha Gem} {37} (dm:-1;ra:6732;dec:2513;bay:'ε'), {Epsilon Gem} {37} (dm:-1;ra:6383;dec:2251;bay:'μ'), {Mu Gem {37} (dm:-1;ra:6248;dec:2251;bay:'η'), {Eta Gem} {37} (dm:-2;ra:21899;dec:-3737;bay:'γ'), {Gamma Gru} {38} (dm:-1;ra:22488;dec:-4350;bay:'δ'), {Delta 1 Gru} {38} (dm:-1;ra:22496;dec:-4375;bay:'δ2'), {Delta2 Gru} {38} (dm:-1;ra:22711;dec:-4688;bay:'β'), {Beta Gru} {38} (dm:-1;ra:22809;dec:-5132;bay:'ε'), {Epsilon Gru} {38} (dm:-1;ra:23015;dec:-5275;bay:'ζ'), {Zeta Gru} {38} (dm:-2;ra:22137;dec:-4696;bay:'α'), {Alpha Gru} {38} (dm:-1;ra:22488;dec:-4350;bay:'δ'), {Delta 1 Gru} {38} (dm:-2;ra:17938;dec:3725;bay:'θ'), {Theta Her} {39} (dm:-1;ra:17251;dec:3681;bay:'π'), {Pi Her} {39} (dm:-1;ra:17005;dec:3093;bay:'ε'), {Epsilon Her} {39} (dm:-1;ra:17251;dec:2484;bay:'δ'), {Delta Her} {39} (dm:-1;ra:17244;dec:1439;bay:'α'), {Alpha 1 Her} {39} (dm:-2;ra:17251;dec:3681;bay:'π'), {Pi Her} {39} (dm:-1;ra:16715;dec:3892;bay:'η'), {Eta Her} {39} (dm:-1;ra:16688;dec:3160;bay:'ζ'), {Zeta Her} {39} (dm:-1;ra:16504;dec:2149;bay:'β'), {Beta Her} {39} (dm:-1;ra:16365;dec:1915;bay:'γ'), {Gamma Her} {39} (dm:-2;ra:17005;dec:3093;bay:'ε'), {Epsilon Her} {39} (dm:-1;ra:16688;dec:3160;bay:'ζ'), {Zeta Her} {39} (dm:-2;ra:16715;dec:3892;bay:'η'), {Eta Her} {39} (dm:-1;ra:16568;dec:4244;bay:'σ'), {Sigma Her} {39} (dm:-1;ra:16329;dec:4631;bay:'τ'), {Tau Her} {39} (dm:-2;ra:4233;dec:-4229;bay:'α'), {Alpha Hor} {40} (dm:-1;ra:2623;dec:-5254;bay:'η'), {Eta Hor} {40} (dm:-1;ra:2980;dec:-6407;bay:'β'), {Beta Hor} {40} (dm:-2;ra:14106;dec:-2668;bay:'π'), {Pi Hya} {41} (dm:-1;ra:13495;dec:-2328;bay:'R'), {R Hya} {41} (dm:-1;ra:13315;dec:-2317;bay:'γ'), {Gamma Hya} {41} (dm:-1;ra:11882;dec:-3391;bay:'β'), {Beta Hya} {41} (dm:-1;ra:11550;dec:-3186;bay:'ξ'), {Xi Hya} {41} (dm:-1;ra:10827;dec:-1619;bay:'ν'), {Nu Hya} {41} (dm:-1;ra:10176;dec:-1235;bay:'λ'), {Lambda Hya} {NIEUW HAN} {41} (dm:-1;ra:9858;dec:-1485;bay:'υ'), {Upsilon 1 Hya} {nieuw han} {41} (dm:-1;ra:9460;dec:-866;bay:'α'), {Alpha Hya} {41} (dm:-1;ra:9664;dec:-114;bay:'ι'), {Iota Hya} {nieuw han} {41} (dm:-1;ra:9239;dec:231;bay:'θ'), {Theta Hya} {nieuw han} {41} (dm:-1;ra:8923;dec:595;bay:'ζ'), {Zeta Hya} {41} (dm:-1;ra:8780;dec:642;bay:'ε'), {Epsilon Hya} {41} (dm:-1;ra:8628;dec:570;bay:'δ'), {Delta Hya} {41} (dm:-1;ra:8720;dec:340;bay:'η'), {Eta Hya} {41} (dm:-1;ra:8923;dec:595;bay:'ζ'), {Zeta Hya} {41} (dm:-2;ra:1980;dec:-6157;bay:'α'), {Alpha Hyi} {42} (dm:-1;ra:429;dec:-7725;bay:'β'), {Beta Hyi} {42} (dm:-1;ra:3787;dec:-7424;bay:'γ'), {Gamma Hyi} {42} (dm:-1;ra:1980;dec:-6157;bay:'α'), {Alpha Hyi} {42} (dm:-2;ra:20626;dec:-4729;bay:'α'), {Alpha Ind} {43} (dm:-1;ra:21331;dec:-5345;bay:'θ'), {Theta Ind} {43} (dm:-1;ra:20913;dec:-5845;bay:'β'), {Beta Ind} {43} (dm:-2;ra:21331;dec:-5345;bay:'θ'), {Theta Ind} {43} (dm:-1;ra:21965;dec:-5499;bay:'δ'), {Delta Ind} {43} (dm:-2;ra:22393;dec:5223;bay:'β'), {Beta Lac} {44} (dm:-1;ra:22522;dec:5028;bay:'α'), {Alpha Lac} {44} (dm:-1;ra:22266;dec:3775;bay:'1'), {1 Lac} {44} (dm:-2;ra:9764;dec:2377;bay:'ε'), {Epsilon Leo} {45} (dm:-1;ra:10278;dec:2342;bay:'ζ'), {Zeta Leo} {45} (dm:-1;ra:10333;dec:1984;bay:'γ'), {Gamma Leo} {45} (dm:-1;ra:10122;dec:1676;bay:'η'), {Eta Leo} {45} (dm:-1;ra:10140;dec:1197;bay:'α'), {Alpha Leo} {45} (dm:-1;ra:11237;dec:1543;bay:'θ'), {Theta Leo} {45} (dm:-1;ra:11818;dec:1457;bay:'β'), {Beta Leo} {45} (dm:-1;ra:11235;dec:2052;bay:'δ'), {Delta Leo} {45} (dm:-1;ra:10333;dec:1984;bay:'γ'), {Gamma Leo} {45} (dm:-2;ra:10889;dec:3421;bay:'46'), {46 LMi} {46} (dm:-1;ra:10465;dec:3671;bay:'β'), {Beta LMi} {46} (dm:-1;ra:10124;dec:3524;bay:'21'), {21 LMi} {46} (dm:-1;ra:9570;dec:3640;bay:'10'), {10 LMi} {46} (dm:-2;ra:5940;dec:-1417;bay:'η'), {Eta Lep} {47} (dm:-1;ra:5855;dec:-2088;bay:'δ'), {Delta Lep} {47} (dm:-1;ra:5741;dec:-2245;bay:'γ'), {Gamma Lep} {47} (dm:-1;ra:5471;dec:-2076;bay:'β'), {Beta Lep} {47} (dm:-1;ra:5091;dec:-2237;bay:'ε'), {Epsilon Lep} {47} (dm:-1;ra:5216;dec:-1621;bay:'μ'), {Mu Lep} {47} (dm:-1;ra:5545;dec:-1782;bay:'α'), {Alpha Lep} {47} (dm:-1;ra:5855;dec:-2088;bay:'δ'), {Delta Lep} {47} (dm:-1;ra:5783;dec:-1482;bay:'ζ'), {Zeta Lep} {47} (dm:-2;ra:5545;dec:-1782;bay:'α'), {Alpha Lep} {47} (dm:-1;ra:5471;dec:-2076;bay:'β'), {Beta Lep} {47} (dm:-2;ra:15592;dec:-1479;bay:'γ'), {Gamma Lib} {48} (dm:-1;ra:15283;dec:-938;bay:'β'), {Beta Lib} {48} (dm:-1;ra:14848;dec:-1604;bay:'α2'), {Alpha2 Lib} {48} (dm:-2;ra:14699;dec:-4739;bay:'α'), {Alpha Lup} {49} (dm:-1;ra:14976;dec:-4313;bay:'β'), {Beta Lup} {49} (dm:-1;ra:15356;dec:-4065;bay:'δ'), {Delta Lup} {49} (dm:-1;ra:16002;dec:-3840;bay:'η'), {Eta Lup} {49} (dm:-1;ra:15586;dec:-4117;bay:'γ'), {Gamma Lup} {49} (dm:-1;ra:15378;dec:-4469;bay:'ε'), {Epsilon Lup} {49} (dm:-1;ra:15199;dec:-4874;bay:'κ'), {Kappa 1 Lup} {49} (dm:-1;ra:15205;dec:-5210;bay:'ζ'), {Zeta Lup} {49} (dm:-1;ra:14699;dec:-4739;bay:'α'), {Alpha Lup} {49} (dm:-2;ra:9351;dec:3439;bay:'α'), {Alpha Lyn} {50} (dm:-1;ra:9314;dec:3680;bay:'38'), {38 Lyn} {50} (dm:-1;ra:9011;dec:4178;bay:'10'), {10 Lyn} {50} (dm:-1;ra:8381;dec:4319;bay:'31'), {31 Lyn} {50} (dm:-1;ra:7445;dec:4921;bay:'21'), {21 Lyn} {50} (dm:-2;ra:18616;dec:3878;bay:'α'), {Alpha Lyr} {51} (dm:-1;ra:18746;dec:3761;bay:'ζ'), {Zeta 1 Lyr} {51} (dm:-1;ra:18835;dec:3336;bay:'β'), {Beta Lyr} {51} (dm:-1;ra:18982;dec:3269;bay:'γ'), {Gamma Lyr} {51} (dm:-1;ra:18908;dec:3690;bay:'δ2'), {Delta2 Lyr} {51} (dm:-1;ra:18746;dec:3761;bay:'ζ'), {Zeta 1 Lyr} {51} (dm:-2;ra:6171;dec:-7475;bay:'α'), {Alpha Men} {52} (dm:-1;ra:5531;dec:-7634;bay:'γ'), {Gamma Men} {52} (dm:-1;ra:4920;dec:-7494;bay:'η'), {Eta Men} {52} (dm:-1;ra:5045;dec:-7131;bay:'β'), {Beta Men} {52} (dm:-2;ra:20833;dec:-3378;bay:'α'), {Alpha Mic} {53} (dm:-1;ra:21022;dec:-3226;bay:'γ'), {Gamma Mic} {53} (dm:-1;ra:21299;dec:-3217;bay:'ε'), {Epsilon Mic} {53} (dm:-2;ra:8143;dec:-298;bay:'ζ'), {Zeta Mon} {54} (dm:-1;ra:7687;dec:-955;bay:'α'), {Alpha Mon} {54} (dm:-1;ra:7198;dec:-49;bay:'δ'), {Delta Mon} {54} (dm:-2;ra:6396;dec:459;bay:'ε'), {Epsilon Mon} {54} (dm:-1;ra:7198;dec:-49;bay:'δ'), {Delta Mon} {54} (dm:-1;ra:6480;dec:-703;bay:'β'), {Beta Mon} {54} (dm:-1;ra:6248;dec:-627;bay:'γ'), {Gamma Mon} {54} (dm:-2;ra:11760;dec:-6673;bay:'λ'), {Lambda Mus} {55} (dm:-1;ra:12293;dec:-6796;bay:'ε'), {Epsilon Mus} {55} (dm:-1;ra:12620;dec:-6914;bay:'α'), {Alpha Mus} {55} (dm:-1;ra:12771;dec:-6811;bay:'β'), {Beta Mus} {55} (dm:-1;ra:13038;dec:-7155;bay:'δ'), {Delta Mus} {55} (dm:-1;ra:12541;dec:-7213;bay:'γ'), {Gamma Mus} {55} (dm:-1;ra:12620;dec:-6914;bay:'α'), {Alpha Mus} {55} (dm:-2;ra:16331;dec:-5016;bay:'γ2'), {Gamma2 Nor} {56} (dm:-1;ra:16054;dec:-4923;bay:'η'), {Eta Nor} {56} (dm:-2;ra:22768;dec:-8138;bay:'β'), {Beta Oct} {57} (dm:-1;ra:14449;dec:-8367;bay:'δ'), {Delta Oct} {57} (dm:-1;ra:21691;dec:-7739;bay:'ν'), {Nu Oct} {57} (dm:-1;ra:22768;dec:-8138;bay:'β'), {Beta Oct} {57} (dm:-2;ra:17367;dec:-2500;bay:'θ'), {Theta Oph} {58} (dm:-1;ra:17173;dec:-1572;bay:'η'), {Eta Oph} {58} (dm:-1;ra:17725;dec:457;bay:'β'), {Beta Oph} {58} (dm:-1;ra:17582;dec:1256;bay:'α'), {Alpha Oph} {58} (dm:-1;ra:16961;dec:938;bay:'κ'), {Kappa Oph} {58} (dm:-1;ra:16239;dec:-369;bay:'δ'), {Delta Oph} {58} (dm:-1;ra:16305;dec:-469;bay:'ε'), {Epsilon Oph} {58} (dm:-1;ra:16619;dec:-1057;bay:'ζ'), {Zeta Oph} {58} (dm:-1;ra:17173;dec:-1572;bay:'η'), {Eta Oph} {58} (dm:-2;ra:5679;dec:-194;bay:'ζ'), {Zeta Ori} {59} (dm:-1;ra:5920;dec:741;bay:'α'), {Alpha Ori} {59} (dm:-1;ra:5586;dec:993;bay:'λ'), {Lambda Ori} {59} (dm:-1;ra:5419;dec:635;bay:'γ'), {Gamma Ori} {59} (dm:-1;ra:5533;dec:-28;bay:'δ'), {Delta Ori} {59} (dm:-1;ra:5604;dec:-120;bay:'ε'), {Epsilon Ori} {59} (dm:-1;ra:5679;dec:-194;bay:'ζ'), {Zeta Ori} {59} (dm:-1;ra:5796;dec:-967;bay:'κ'), {Kappa Ori} {59} (dm:-1;ra:5242;dec:-820;bay:'β'), {Beta Ori} {59} (dm:-1;ra:5533;dec:-28;bay:'δ'), {Delta Ori} {59} (dm:-2;ra:21441;dec:-6537;bay:'τ'), {Tau Pav} {60} (dm:-1;ra:20749;dec:-6620;bay:'β'), {Beta Pav} {60} (dm:-1;ra:20010;dec:-7291;bay:'ε'), {Epsilon Pav} {60} (dm:-1;ra:18717;dec:-7143;bay:'ζ'), {Zeta Pav} {60} (dm:-1;ra:17762;dec:-6472;bay:'η'), {Eta Pav} {60} (dm:-1;ra:18387;dec:-6149;bay:'ξ'), {Xi Pav} {60} (dm:-1;ra:20145;dec:-6618;bay:'δ'), {Delta Pav} {60} (dm:-1;ra:20749;dec:-6620;bay:'β'), {Beta Pav} {60} (dm:-2;ra:22717;dec:3022;bay:'η'), {Eta Peg} {61} (dm:-1;ra:23063;dec:2808;bay:'β'), {Beta Peg} {61} (dm:-1;ra:140;dec:2909;bay:'α'), {Alpha And} {0} (dm:-1;ra:221;dec:1518;bay:'γ'), {Gamma Peg} {61} (dm:-1;ra:23079;dec:1521;bay:'α'), {Alpha Peg} {61} (dm:-1;ra:22691;dec:1083;bay:'ζ'), {Zeta Peg} {61} (dm:-1;ra:22170;dec:620;bay:'θ'), {Theta Peg} {61} (dm:-1;ra:21736;dec:988;bay:'ε'), {Epsilon Peg} {61} (dm:-2;ra:23063;dec:2808;bay:'β'), {Beta Peg} {61} (dm:-1;ra:23079;dec:1521;bay:'α'), {Alpha Peg} {61} (dm:-2;ra:2845;dec:5590;bay:'η'), {Eta Per} {62} (dm:-1;ra:3080;dec:5351;bay:'γ'), {Gamma Per} {62} (dm:-1;ra:3405;dec:4986;bay:'α'), {Alpha Per} {62} (dm:-1;ra:3715;dec:4779;bay:'δ'), {Delta Per} {62} (dm:-1;ra:3964;dec:4001;bay:'ε'), {Epsilon Per} {62} (dm:-1;ra:3902;dec:3188;bay:'ζ'), {Zeta Per} {62} (dm:-2;ra:3405;dec:4986;bay:'α'), {Alpha Per} {62} (dm:-1;ra:3136;dec:4096;bay:'β'), {Beta Per} {62} (dm:-1;ra:3086;dec:3884;bay:'ρ'), {Rho Per} {62} (dm:-2;ra:157;dec:-4575;bay:'ε'), {Epsilon Phe} {63} (dm:-1;ra:437;dec:-4368;bay:'κ'), {Kappa Phe} {63} (dm:-1;ra:1101;dec:-4672;bay:'β'), {Beta Phe} {63} (dm:-1;ra:1473;dec:-4332;bay:'γ'), {Gamma Phe} {63} (dm:-1;ra:1521;dec:-4907;bay:'δ'), {Delta Phe} {63} (dm:-1;ra:1140;dec:-5525;bay:'ζ'), {Zeta Phe} {63} (dm:-1;ra:1101;dec:-4672;bay:'β'), {Beta Phe} {63} (dm:-2;ra:6803;dec:-6194;bay:'α'), {Alpha Pic} {64} (dm:-1;ra:5830;dec:-5617;bay:'γ'), {Gamma Pic} {64} (dm:-1;ra:5788;dec:-5107;bay:'β'), {Beta Pic} {64} (dm:-2;ra:1525;dec:1535;bay:'η'), {Eta Psc} {65} (dm:-1;ra:1757;dec:916;bay:'ο'), {Omicron Psc} {65} (dm:-1;ra:2034;dec:276;bay:'α'), {Alpha Psc} {65} (dm:-1;ra:1049;dec:789;bay:'ε'), {Epsilon Psc} {65} (dm:-1;ra:811;dec:759;bay:'δ'), {Delta Psc} {65} (dm:-1;ra:23989;dec:686;bay:'ω'), {Omega Psc} {65} (dm:-1;ra:23666;dec:563;bay:'ι'), {Iota Psc} {65} (dm:-1;ra:23466;dec:638;bay:'θ'), {Theta Psc} {65} (dm:-1;ra:23065;dec:382;bay:'β'), {Beta Psc} {65} (dm:-1;ra:23286;dec:328;bay:'γ'), {Gamma Psc} {65} (dm:-1;ra:23666;dec:563;bay:'ι'), {Iota Psc} {65} (dm:-2;ra:21749;dec:-3303;bay:'ι'), {Iota PsA} {66} (dm:-1;ra:22525;dec:-3235;bay:'β'), {Beta PsA} {66} (dm:-1;ra:22875;dec:-3288;bay:'γ'), {Gamma PsA} {66} (dm:-1;ra:22932;dec:-3254;bay:'δ'), {Delta PsA} {66} (dm:-1;ra:22961;dec:-2962;bay:'α'), {Alpha PsA} {66} (dm:-1;ra:22678;dec:-2704;bay:'ε'), {Epsilon PsA} {66} (dm:-1;ra:22525;dec:-3235;bay:'β'), {Beta PsA} {66} (dm:-2;ra:8126;dec:-2430;bay:'ρ'), {Rho Pup} {67} (dm:-1;ra:7822;dec:-2486;bay:'ξ'), {Xi Pup} {67} (dm:-1;ra:8060;dec:-4000;bay:'ζ'), {Zeta Pup} {67} (dm:-1;ra:7286;dec:-3710;bay:'π'), {Pi Pup} {67} (dm:-1;ra:7487;dec:-4330;bay:'σ'), {Sigma Pup} {67} (dm:-1;ra:7226;dec:-4464;bay:'L2'), {L2 Pup} {67} (dm:-1;ra:6629;dec:-4320;bay:'ν'), {Nu Pup} {67} (dm:-1;ra:6832;dec:-5061;bay:'τ'), {Tau Pup} {67} (dm:-1;ra:7226;dec:-4464;bay:'L2'), {L2 Pup} {67} (dm:-2;ra:8060;dec:-4000;bay:'ζ'), {Zeta Pup} {67} (dm:-1;ra:7487;dec:-4330;bay:'σ'), {Sigma Pup} {67} (dm:-2;ra:8668;dec:-3531;bay:'β'), {Beta Pyx} {68} (dm:-1;ra:8727;dec:-3319;bay:'α'), {Alpha Pyx} {68} (dm:-1;ra:8842;dec:-2771;bay:'γ'), {Gamma Pyx} {68} (dm:-2;ra:4240;dec:-6247;bay:'α'), {Alpha Ret} {69} (dm:-1;ra:3737;dec:-6481;bay:'β'), {Beta Ret} {69} (dm:-1;ra:4015;dec:-6216;bay:'γ'), {Gamma Ret} {69} (dm:-1;ra:3979;dec:-6140;bay:'4'), {4 Ret} {69} (dm:-1;ra:4275;dec:-5930;bay:'ε'), {Epsilon Ret} {69} (dm:-1;ra:4240;dec:-6247;bay:'α'), {Alpha Ret} {69} (dm:-2;ra:19668;dec:1801;bay:'α'), {Alpha Sge} {70} (dm:-1;ra:19790;dec:1853;bay:'δ'), {Delta Sge} {70} (dm:-1;ra:19684;dec:1748;bay:'β'), {Beta Sge} {70} (dm:-2;ra:19790;dec:1853;bay:'δ'), {Delta Sge} {70} (dm:-1;ra:19979;dec:1949;bay:'γ'), {Gamma Sge} {70} (dm:-2;ra:19387;dec:-4480;bay:'β2'), {Beta2 Sgr} {71} (dm:-1;ra:19377;dec:-4446;bay:'β'), {Beta 1 Sgr} {71} (dm:-1;ra:19398;dec:-4062;bay:'α'), {Alpha Sgr} {71} (dm:-1;ra:19044;dec:-2988;bay:'ζ'), {Zeta Sgr} {71} (dm:-1;ra:18921;dec:-2630;bay:'σ'), {Sigma Sgr} {71} (dm:-1;ra:18466;dec:-2542;bay:'λ'), {Lambda Sgr} {71} (dm:-1;ra:18350;dec:-2983;bay:'δ'), {Delta Sgr} {71} (dm:-1;ra:18403;dec:-3438;bay:'ε'), {Epsilon Sgr} {71} (dm:-1;ra:18294;dec:-3676;bay:'η'), {Eta Sgr} {71} (dm:-2;ra:18097;dec:-3042;bay:'γ'), {Gamma Sgr} {71} (dm:-1;ra:18350;dec:-2983;bay:'δ'), {Delta Sgr} {71} (dm:-2;ra:18229;dec:-2106;bay:'μ'), {Mu Sgr} {71} (dm:-1;ra:18466;dec:-2542;bay:'λ'), {Lambda Sgr} {71} (dm:-2;ra:18962;dec:-2111;bay:'ξ2'), {Xi2 Sgr} {71} (dm:-1;ra:18921;dec:-2630;bay:'σ'), {Sigma Sgr} {71} (dm:-2;ra:17560;dec:-3710;bay:'λ'), {Lambda Sco} {72} (dm:-1;ra:17708;dec:-3903;bay:'κ'), {Kappa Sco} {72} (dm:-1;ra:17622;dec:-4300;bay:'θ'), {Theta Sco} {72} (dm:-1;ra:17203;dec:-4324;bay:'η'), {Eta Sco} {72} (dm:-1;ra:16910;dec:-4236;bay:'ζ2'), {Zeta2 Sco} {72} (dm:-1;ra:16864;dec:-3805;bay:'μ'), {Mu 1 Sco} {72} (dm:-1;ra:16836;dec:-3429;bay:'ε'), {Epsilon Sco} {72} (dm:-1;ra:16490;dec:-2643;bay:'α'), {Alpha Sco} {72} (dm:-1;ra:16091;dec:-1981;bay:'β'), {Beta 1 Sco} {72} (dm:-1;ra:16006;dec:-2262;bay:'δ'), {Delta Sco} {72} (dm:-1;ra:16490;dec:-2643;bay:'α'), {Alpha Sco} {72} (dm:-2;ra:977;dec:-2936;bay:'α'), {Alpha Scl} {73} (dm:-1;ra:23815;dec:-2813;bay:'δ'), {Delta Scl} {73} (dm:-1;ra:23314;dec:-3253;bay:'γ'), {Gamma Scl} {73} (dm:-1;ra:23550;dec:-3782;bay:'β'), {Beta Scl} {73} (dm:-2;ra:18786;dec:-475;bay:'β'), {Beta Sct} {74} (dm:-1;ra:18587;dec:-824;bay:'α'), {Alpha Sct} {74} (dm:-1;ra:18487;dec:-1457;bay:'γ'), {Gamma Sct} {74} (dm:-2;ra:15941;dec:1566;bay:'γ'), {Gamma Ser} {76} (dm:-1;ra:15770;dec:1542;bay:'β'), {Beta Ser} {76} (dm:-1;ra:15580;dec:1054;bay:'δ'), {Delta Ser} {76} (dm:-1;ra:15738;dec:643;bay:'α'), {Alpha Ser} {76} (dm:-1;ra:15847;dec:448;bay:'ε'), {Epsilon Ser} {76} (dm:-1;ra:15827;dec:-343;bay:'μ'), {Mu Ser} {76} (dm:-1;ra:16239;dec:-369;bay:'δ'), {Delta Oph} {58} (dm:-2;ra:17173;dec:-1572;bay:'η'), {Eta Oph} {58} (dm:-1;ra:17626;dec:-1540;bay:'ξ'), {Xi Ser} {76} (dm:-1;ra:18355;dec:-290;bay:'η'), {Eta Ser} {76} (dm:-1;ra:18937;dec:420;bay:'θ'), {Theta 1 Ser} {76} (dm:-2;ra:10505;dec:-64;bay:'β'), {Beta Sex} {77} (dm:-1;ra:10132;dec:-37;bay:'α'), {Alpha Sex} {77} (dm:-1;ra:9875;dec:-811;bay:'γ'), {Gamma Sex} {77} (dm:-2;ra:5627;dec:2114;bay:'ζ'), {Zeta Tau} {78} (dm:-1;ra:4599;dec:1651;bay:'α'), {Alpha Tau} {78} (dm:-1;ra:5438;dec:2861;bay:'β'), {Beta Tau} {78} (dm:-2;ra:4599;dec:1651;bay:'α'), {Alpha Tau} {78} (dm:-1;ra:4478;dec:1587;bay:'θ2'), {Theta2 Tau} {78} (dm:-1;ra:4330;dec:1563;bay:'γ'), {Gamma Tau} {78} (dm:-1;ra:4382;dec:1754;bay:'δ'), {Delta 1 Tau} {78} (dm:-1;ra:4477;dec:1918;bay:'ε'), {Epsilon Tau} {78} (dm:-2;ra:3791;dec:2411;bay:'η'), {Eta Tau} {78} (dm:-1;ra:4330;dec:1563;bay:'γ'), {Gamma Tau} {78} (dm:-1;ra:4011;dec:1249;bay:'λ'), {Lambda Tau} {78} (dm:-2;ra:18187;dec:-4595;bay:'ε'), {Epsilon Tel} {79} (dm:-1;ra:18450;dec:-4597;bay:'α'), {Alpha Tel} {79} (dm:-1;ra:18481;dec:-4907;bay:'ζ'), {Zeta Tel} {79} (dm:-2;ra:1885;dec:2958;bay:'α'), {Alpha Tri} {80} (dm:-1;ra:2159;dec:3499;bay:'β'), {Beta Tri} {80} (dm:-1;ra:2289;dec:3385;bay:'γ'), {Gamma Tri} {80} (dm:-1;ra:1885;dec:2958;bay:'α'), {Alpha Tri} {80} (dm:-2;ra:16811;dec:-6903;bay:'α'), {Alpha TrA} {81} (dm:-1;ra:15919;dec:-6343;bay:'β'), {Beta TrA} {81} (dm:-1;ra:15315;dec:-6868;bay:'γ'), {Gamma TrA} {81} (dm:-1;ra:16811;dec:-6903;bay:'α'), {Alpha TrA} {81} (dm:-2;ra:22308;dec:-6026;bay:'α'), {Alpha Tuc} {82} (dm:-1;ra:23290;dec:-5824;bay:'γ'), {Gamma Tuc} {82} (dm:-1;ra:526;dec:-6296;bay:'β'), {Beta 1 Tuc} {82} (dm:-1;ra:335;dec:-6488;bay:'ζ'), {Zeta Tuc} {82} (dm:-1;ra:22308;dec:-6026;bay:'α'), {Alpha Tuc} {82} (dm:-2;ra:13792;dec:4931;bay:'η'), {Eta UMa} {83} (dm:-1;ra:13399;dec:5493;bay:'ζ'), {Zeta UMa} {83} (dm:-1;ra:12900;dec:5596;bay:'ε'), {Epsilon UMa} {83} (dm:-1;ra:12257;dec:5703;bay:'δ'), {Delta UMa} {83} (dm:-1;ra:11062;dec:6175;bay:'α'), {Alpha UMa} {83} (dm:-1;ra:11031;dec:5638;bay:'β'), {Beta UMa} {83} (dm:-1;ra:11897;dec:5369;bay:'γ'), {Gamma UMa} {83} (dm:-1;ra:12257;dec:5703;bay:'δ'), {Delta UMa} {83} (dm:-2;ra:2531;dec:8926;bay:'α'), {Alpha UMi} {84} (dm:-1;ra:17537;dec:8659;bay:'δ'), {Delta UMi} {84} (dm:-1;ra:16766;dec:8204;bay:'ε'), {Epsilon UMi} {84} (dm:-1;ra:15734;dec:7779;bay:'ζ'), {Zeta UMi} {84} (dm:-1;ra:14845;dec:7416;bay:'β'), {Beta UMi} {84} (dm:-1;ra:15345;dec:7183;bay:'γ'), {Gamma UMi} {84} (dm:-1;ra:16292;dec:7576;bay:'η'), {Eta UMi} {84} (dm:-1;ra:15734;dec:7779;bay:'ζ'), {Zeta UMi} {84} (dm:-2;ra:10779;dec:-4942;bay:'μ'), {Mu Vel} {85} (dm:-1;ra:9948;dec:-5457;bay:'φ'), {Phi Vel} {85} (dm:-1;ra:9369;dec:-5501;bay:'κ'), {Kappa Vel} {85} (dm:-1;ra:8745;dec:-5471;bay:'δ'), {Delta Vel} {85} (dm:-1;ra:8158;dec:-4735;bay:'γ'), {Gamma 1 Vel} {85} (dm:-1;ra:9133;dec:-4343;bay:'λ'), {Lambda Vel} {85} (dm:-1;ra:9512;dec:-4047;bay:'ψ'), {Psi Vel} {85} (dm:-2;ra:9133;dec:-4343;bay:'λ'), {Lambda Vel} {85} (dm:-1;ra:9369;dec:-5501;bay:'κ'), {Kappa Vel} {85} (dm:-2;ra:14718;dec:-566;bay:'μ'), {Mu Vir} {86} (dm:-1;ra:14267;dec:-600;bay:'ι'), {Iota Vir} {86} (dm:-1;ra:13420;dec:-1116;bay:'α'), {Alpha Vir} {86} (dm:-1;ra:13166;dec:-554;bay:'θ'), {Theta Vir} {86} (dm:-1;ra:12694;dec:-145;bay:'γ'), {Gamma Vir} {86} (dm:-1;ra:12332;dec:-67;bay:'η'), {Eta Vir} {86} (dm:-1;ra:11845;dec:176;bay:'β'), {Beta Vir} {86} (dm:-2;ra:12694;dec:-145;bay:'γ'), {Gamma Vir} {86} (dm:-1;ra:12927;dec:340;bay:'δ'), {Delta Vir} {86} (dm:-1;ra:13578;dec:-60;bay:'ζ'), {Zeta Vir} {86} (dm:-1;ra:13420;dec:-1116;bay:'α'), {Alpha Vir} {86} (dm:-2;ra:13036;dec:1096;bay:'ε'), {Epsilon Vir} {86} (dm:-1;ra:12927;dec:340;bay:'δ'), {Delta Vir} {86} (dm:-2;ra:9041;dec:-6640;bay:'α'), {Alpha Vol} {87} (dm:-1;ra:8132;dec:-6862;bay:'ε'), {Epsilon Vol} {87} (dm:-1;ra:7281;dec:-6796;bay:'δ'), {Delta Vol} {87} (dm:-1;ra:7145;dec:-7050;bay:'γ'), {Gamma 1 Vol} {87} (dm:-1;ra:7697;dec:-7261;bay:'ζ'), {Zeta Vol} {87} (dm:-1;ra:8132;dec:-6862;bay:'ε'), {Epsilon Vol} {87} (dm:-2;ra:20018;dec:2775;bay:'15'), {15 Vul} {88} (dm:-1;ra:19891;dec:2408;bay:'13'), {13 Vul} {88} (dm:-1;ra:19478;dec:2467;bay:'α'), {Alpha Vul} {88} (dm:-1;ra:19270;dec:2139;bay:'1')); {1 Vul} {88} Constpos : array[0..88,0..1] of smallint= {Constellation position , for name see Constname RA * 1000, Dec * 100} ((564,3925), {'Andromeda',} (10118,-3365), {'Antlia',} (16000,-8000), {'Apus',} (22697,-1053), {'Aquarius',} (19690,337), {'Aquila',} (17231,-5189), {'Ara',} (2676,2257), {'Aries',} (5500,4240), {'Auriga',} (14687,3233), {'Bootes',} (4721,-3883), {'Caelum',} (6151,7196), {'Camelopardalis',} (8497,2356), {'Cancer',} (13020,4235), {'Canes_Venatici',} (6830,-2269), {'Canis_Major',} (7624,676), {'Canis_Minor',} (21048,-1965), {'Capricornus',} (7761,-5717), {'Carina',} (870,6030), {'Cassiopeia',} (12950,-4400), {'Centaurus',} (22417,7256), {'Cepheus',} (1709,-664), {'Cetus',} (12000,-8000), {'Chamaeleon',} (14527,-6770), {'Circinus',} (5705,-3708), {'Columba',} (12748,2265), {'Coma_Berenices',} (18655,-4125), {'Corona_Australis',} (15880,3263), {'Corona_Borealis',} (12387,-1836), {'Corvus',} (11348,-1325), {'Crater',} (12600,-6070), {'Crux',} (20598,4958), {'Cygnus',} (20663,1210), {'Delphinus',} (5333,-6399), {'Dorado',} (17945,6606), {'Draco',} (21251,794), {'Equuleus',} (3876,-1701), {'Eridanus',} (2766,-2694), {'Fornax',} (7300,2600), {'Gemini',} (22457,-4586), {'Grus',} (17425,3123), {'Hercules',} (3212,-5200), {'Horologium',} (9136,-1132), {'Hydra',} (2589,-7208), {'Hydrus',} (21138,-5268), {'Indus',} (22514,4667), {'Lacerta',} (10600,1800), {'Leo',} (10316,3324), {'Leo_Minor',} (5436,-1935), {'Lepus',} (15187,-1545), {'Libra',} (15376,-4228), {'Lupus',} (7734,4783), {'Lynx',} (18908,4065), {'Lyra',} (5500,-7999), {'Mensa',} (20942,-3620), {'Microscopium',} (6962,-500), {'Monoceros',} (12460,-6987), {'Musca',} (16042,-5229), {'Norma',} (22173,-8473), {'Octans',} (17037,-265), {'Ophiuchus',} (5660,500), {'Orion',} (19160,-6514), {'Pavo',} (22617,1965), {'Pegasus',} (3514,4489), {'Perseus',} (732,-4823), {'Phoenix',} (5381,-5163), {'Pictor',} (891,1548), {'Pisces',} (22410,-3143), {'Piscis_Austrinus',} (7873,-3239), {'Puppis',} (8891,-2921), {'Pyxis',} (3899,-6049), {'Reticulum',} (19667,1700), {'Sagitta',} (19385,-2911), {'Sagittarius',} (16865,-3567), {'Scorpius',} (500,-3500), {'Sculptor',} (18651,-1011), {'Scutum',} (15731,1085), {'Serpens_Caput',} (17958,-1352), {'Serpens_Cauda',} (10102,-187), {'Sextans',} (4095,1734), {'Taurus',} (19244,-5154), {'Telescopium',} (2043,3234), {'Triangulum',} (16124,-6590), {'Triangulum_Australe',} (23828,-6406), {'Tucana',} (10263,5748), {'Ursa_Major',} (15000,7600), {'Ursa_Minor',} (9337,-4851), {'Vela',} (13343,-349), {'Virgo',} (7659,-6939), {'Volans',} (20367,2503)); {'Vulpecula'));} Constshortname : array[0..88] of pchar= (('And'), ('Ant'), ('Aps'), ('Aqr'), ('Aql'), ('Ara'), ('Ari'), ('Aur'), ('Boo'), ('Cae'), ('Cam'), ('Cnc'), ('CVn'), ('CMa'), ('CMi'), ('Cap'), ('Car'), ('Cas'), ('Cen'), ('Cep'), ('Cet'), ('Cha'), ('Cir'), ('Col'), ('Com'), ('CrA'), ('CrB'), ('Crv'), ('Crt'), ('Cru'), ('Cyg'), ('Del'), ('Dor'), ('Dra'), ('Equ'), ('Eri'), ('For'), ('Gem'), ('Gru'), ('Her'), ('Hor'), ('Hya'), ('Hyi'), ('Ind'), ('Lac'), ('Leo'), ('LMi'), ('Lep'), ('Lib'), ('Lup'), ('Lyn'), ('Lyr'), ('Men'), ('Mic'), ('Mon'), ('Mus'), ('Nor'), ('Oct'), ('Oph'), ('Ori'), ('Pav'), ('Peg'), ('Per'), ('Phe'), ('Pic'), ('Psc'), ('PsA'), ('Pup'), ('Pyx'), ('Ret'), ('Sge'), ('Sgr'), ('Sco'), ('Scl'), ('Sct'), ('Ser'), ('Ser'), ('Sex'), ('Tau'), ('Tel'), ('Tri'), ('TrA'), ('Tuc'), ('UMa'), ('UMi'), ('Vel'), ('Vir'), ('Vol'), ('Vul')); implementation begin end. astap_2022.12.09.orig/unit_live_stacking.pas0000644000175100017510000005147714344743400020101 0ustar debiandebianunit unit_live_stacking; {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode delphi} interface uses Classes, SysUtils,forms,fileutil, clipbrd, {for copy to clipboard} graphics, math; procedure stack_live(oversize:integer; path :string);{stack live average} const pause_pressed: boolean=false; live_stacking: boolean=false; {used to inhibit solving while live_stacking} implementation uses unit_stack, astap_main,unit_stack_routines,unit_astrometric_solving,unit_star_align,unit_inspector_plot; const oldra0 :double=0; olddec0 :double=-pi/2; oldexposure:double=0; var memo1_text : string;{for backup header} function file_available(stack_directory:string; out filen: string ) : boolean; {check if fits file is available and report the filename} var thefiles : Tstringlist; f : file; begin try //No need to create the stringlist; the function does that for you theFiles := FindAllFiles(stack_directory, '*.fit;*.fits;*.FIT;*.FITS;'+ '*.png;*.PNG;*.jpg;*.JPG;*.bmp;*.BMP;*.tif;*.tiff;*.TIF;'+ '*.RAW;*.raw;*.CRW;*.crw;*.CR2;*.cr2;*.CR3;*.cr3;*.KDC;*.kdc;*.DCR;*.dcr;*.MRW;*.mrw;*.ARW;*.arw;*.NEF;*.nef;*.NRW;.nrw;*.DNG;*.dng;*.ORF;*.orf;*.PTX;*.ptx;*.PEF;*.pef;*.RW2;*.rw2;*.SRW;*.srw;*.RAF;*.raf;', false {search subdirectories}); //find images if TheFiles.count>0 then begin filen:=TheFiles[0]; {check if free for reading} assign(f,filen); {$I-} reset(f); {prepare for reading} {$I+} result:=(IOresult=0); {report if file is accessible} if result then close(f); end else result:=false; finally thefiles.Free; end; end; procedure update_header; begin mainwindow.Memo1.Text:=memo1_text;{use saved fits header first FITS file} update_text('COMMENT 1',' Written by Astrometric Stacking Program. www.hnsky.org'); update_text ('HISTORY 1',' Stacking method LIVE STACKING'); update_integer('EXPTIME =',' / Total luminance exposure time in seconds. ' ,round(sum_exp)); update_text ('CALSTAT =',#39+head.calstat+#39); {calibration status} update_text ('DATE-OBS=',#39+JdToDate(jd_stop)+#39);{give end point exposures} update_float('JD-AVG =',' / Julian Day of the observation mid-point. ', jd_sum/counterL);{give midpoint of exposures} date_avg:=JdToDate(jd_sum/counterL); {update date_avg for asteroid annotation} update_text ('DATE-AVG=',#39+date_avg+#39);{give midpoint of exposures} update_integer('LIGH_CNT=',' / Light frames combined. ' ,counterL); {for interim lum,red,blue...files.} update_integer('DARK_CNT=',' / Darks used for luminance. ' ,head.dark_count);{for interim lum,red,blue...files. Compatible with master darks} update_integer('FLAT_CNT=',' / Flats used for luminance. ' ,head.flat_count);{for interim lum,red,blue...files. Compatible with master flats} update_integer('BIAS_CNT=',' / Flat-darks used for luminance. ' ,head.flatdark_count);{for interim lum,red,blue...files. Compatible with master flats} mainwindow.memo1.visible:=true;{Show new header again} end; function load_thefile(filen:string) : boolean; var ext1 : string; begin ext1:=uppercase(ExtractFileExt(filen)); if ((ext1='.FIT') or (ext1='.FITS')) then result:= load_fits(filen,true {light},true,true {update memo},0,head,img_loaded) else if check_raw_file_extension(ext1) then {check if extension is from raw file} result:=convert_raw(true{load},false{save},filen,head,img_loaded) else result:=load_tiffpngJPEG(filen,true {light},head,img_loaded); end; function date_string: string; Var YY,MO,DD : Word; HH,MM,SS,MS: Word; begin DecodeDate(date,YY,MO,DD); DecodeTime(Time,HH,MM,SS,MS); result:=inttostr(YY)+ inttostr(MO)+ inttostr(DD)+'_'+ inttostr(HH)+ inttostr(MM)+ inttostr(SS); end; procedure save_as_jpg(filename: string); var JPG: TJPEGImage; begin JPG := TJPEGImage.Create; try JPG.Assign(mainwindow.image1.Picture.Graphic); //Convert data into JPG JPG.CompressionQuality :=90; JPG.SaveToFile(filename); finally JPG.Free; end; end; procedure stack_live(oversize:integer; path :string);{stack live average} var fitsX,fitsY,width_max, height_max, old_width, old_height,x_new,y_new,col,binning, counter,total_counter,bad_counter,max_stars,process_as_asc : integer; distance,hfd_min : double; init, solution, vector_based,waiting,transition_image,colour_correction :boolean; file_ext,filen,filename_org : string; multiply_red,multiply_green,multiply_blue,add_valueR,add_valueG,add_valueB,largest,scaleR,scaleG,scaleB,dum :single; {for colour correction} warning : string; var rename_counter: integer=0; procedure reset_var;{reset variables including init:=false} begin init:=false; counter:=0; bad_counter:=0; sum_exp:=0; sum_temp:=0; jd_sum:=0;{sum of Julian midpoints} jd_stop:=0;{end observations in Julian day} dark_exposure:=987654321;{not done indication} dark_temperature:=987654321; flat_filter:='987654321';{not done indication} end; begin with stackmenu1 do begin live_stacking:=true;{to block other instruction like solve button} reset_var; {reset variables including init:=false} pause_pressed:=false; esc_pressed:=false; total_counter:=0; mainwindow.memo1.visible:=false;{Hide header} colour_correction:=((process_as_osc>0) and (stackmenu1.osc_auto_level1.checked)); hfd_min:=max(0.8 {two pixels},strtofloat2(stackmenu1.min_star_size_stacking1.caption){hfd});{to ignore hot pixels which are too small} max_stars:=strtoint2(stackmenu1.max_stars1.text);{maximum star to process, if so filter out brightest stars later} if max_stars=0 then max_stars:=500;{0 is auto for solving. No auto for stacking} {Prepare for dark and flats} analyse_listview(stackmenu1.listview2,false {light},false {full fits},false{refresh});{analyse dark tab, by loading=false the loaded img will not be effected. Calstat will not be effected} analyse_listview(stackmenu1.listview3,false {light},false {full fits},false{refresh});{analyse flat tab, by loading=false the loaded img will not be effected} {live stacking} repeat begin if ((pause_pressed=false) and (file_available(path,filename2 {file found}))) then begin try { Do some lengthy operation } waiting:=false; transition_image:=false; Application.ProcessMessages; {load image} filename_org:=filename2;//remember .cr2 file name if ((esc_pressed) or (load_image(false,false {plot})=false)) then //For .cr2 files filename2 will have extension .fits begin if esc_pressed=false then memo2_message('Error loading file'); {can't load} live_stacking_pause1.font.style:=[]; live_stacking1.font.style:=[]; live_stacking:=false; exit; end; ang_sep(head.ra0,head.dec0,oldra0,olddec0 ,distance); {calculate distance in radians. {test of mount has moved} oldra0:=head.ra0;olddec0:=head.dec0; if distance>(0.2*pi/180) then begin reset_var; {reset variables including init:=false} if total_counter<>0 then {new position not caused by start} begin transition_image:=true; {image with possible slewing involved} stackmenu1.memo2.clear;{clear memo2} memo2_message('New telescope position at distance '+floattostrF(distance*180/pi,ffFixed,0,2)+'°. New stack started. First transition image will be skipped'); end; end else {test if head.exposure has changed} if head.exposure<>oldexposure then begin reset_var; {reset variables including init:=false} stackmenu1.memo2.clear;{clear memo2} memo2_message('Exposure time changed from '+floattostrF(oldexposure,ffGeneral,5,5)+' to '+floattostrF(head.exposure,ffGeneral,5,5)+' sec. New stack started.'); end; oldexposure:=head.exposure; if transition_image=false then {else skip this image, could slewed during this image} begin if init=false then begin if stackmenu1.make_osc_color1.checked then process_as_osc:=2 //forced process as OSC images else if ((head_2.naxis3=1) and (head_2.Xbinning=1) and (bayerpat<>'')) then //auto process as OSC images process_as_osc:=1 else process_as_osc:=0;//disable demosaicing if process_as_asc<>0 then memo2_message('Will demosaic OSC images to colour'); memo1_text:=mainwindow.Memo1.Text;{save fits header first FITS file} if ((bayerpat='') and (process_as_osc=2 {forced})) then if stackmenu1.bayer_pattern1.Text='auto' then memo2_message('█ █ █ █ █ █ Warning, Bayer colour pattern not in the header! Check colours and if wrong set Bayer pattern manually in tab "stack alignment". █ █ █ █ █ █') else if test_bayer_matrix(img_loaded)=false then memo2_message('█ █ █ █ █ █ Warning, grayscale image converted to colour! Un-check option "convert OSC to colour". █ █ █ █ █ █'); end; apply_dark_and_flat(img_loaded);{apply dark, flat if required, renew if different head.exposure or ccd temp} memo2_message('Adding file: '+inttostr(counter+1)+' "'+filename_org+'" to average. Using '+inttostr(head.dark_count)+' darks, '+inttostr(head.flat_count)+' flats, '+inttostr(head.flatdark_count)+' flat-darks') ; Application.ProcessMessages; if esc_pressed then exit; if init=false then {first image} begin old_width:=head.width; old_height:=head.height; end else {init is true, second or third image ....} if ((old_width<>head.width) or (old_height<>head.height)) then memo2_message('█ █ █ █ █ █ Warning different size image!'); if process_as_osc>0 then demosaic_bayer(img_loaded); {convert OSC image to colour} if init=false then {first image} begin binning:=report_binning(head.height);{select binning based on the height of the first light. Do this after demosaic since SuperPixel also bins} bin_and_find_stars(img_loaded, binning,1 {cropping},hfd_min,max_stars,true{update hist},starlist1,warning);{bin, measure background, find stars} find_quads(starlist1,0,quad_smallest,quad_star_distances1);{find quads for reference image} end; if init=false then {init} begin memo2_message('Reference image is: '+filename2); width_max:=head.width+oversize*2; height_max:=head.height+oversize*2; setlength(img_average,head.naxis3,width_max,height_max); for fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do for col:=0 to head.naxis3-1 do begin img_average[col,fitsX,fitsY]:=0; {clear img_average} end; if colour_correction then begin memo2_message('Using first reference image to determine colour adjustment factors.'); stackmenu1.auto_background_level1Click(nil); {do factor math behind so "subtract view from file" works in correct direction} add_valueR:=strtofloat2(stackmenu1.add_valueR1.Text); add_valueG:=strtofloat2(stackmenu1.add_valueG1.Text); add_valueB:=strtofloat2(stackmenu1.add_valueB1.Text); multiply_red:=strtofloat2(stackmenu1.multiply_red1.Text); multiply_green:=strtofloat2(stackmenu1.multiply_green1.Text); multiply_blue:=strtofloat2(stackmenu1.multiply_blue1.Text); {prevent clamping to 65535} scaleR:=(65535+add_valueR)*multiply_red/65535;{range 0..1, if above 1 then final value could be above 65535} scaleG:=(65535+add_valueG)*multiply_green/65535; scaleB:=(65535+add_valueB)*multiply_blue/65535; largest:=scaleR; if scaleG>largest then largest:=scaleG; if scaleB>largest then largest:=scaleB; {use largest to scale to maximum 65535} end; end;{init, c=0} solution:=true; {align using star match} if init=true then {second image} begin{internal alignment only} bin_and_find_stars(img_loaded, binning,1 {cropping},hfd_min,max_stars,true{update hist},starlist2,warning);{bin, measure background, find stars} find_quads(starlist2,0,quad_smallest,quad_star_distances2);{find star quads for new image} if find_offset_and_rotation(3,strtofloat2(stackmenu1.quad_tolerance1.text)) then {find difference between ref image and new image} memo2_message(inttostr(nr_references)+' of '+ inttostr(nr_references2)+' quads selected matching within '+stackmenu1.quad_tolerance1.text+' tolerance.' +' Solution x:='+floattostr6(solution_vectorX[0])+'*x+ '+floattostr6(solution_vectorX[1])+'*y+ '+floattostr6(solution_vectorX[2]) +', y:='+floattostr6(solution_vectorY[0])+'*x+ '+floattostr6(solution_vectorY[1])+'*y+ '+floattostr6(solution_vectorY[2]) ) else begin memo2_message('Not enough quad matches <3 or inconsistent solution, skipping this image.'); solution:=false; end; end{internal alignment} else reset_solution_vectors(1);{no influence on the first image} init:=true;{initialize for first image done} if solution then begin inc(counter); inc(total_counter); sum_exp:=sum_exp+head.exposure; sum_temp:=sum_temp+head.set_temperature; date_to_jd(head.date_obs,head.exposure);{convert date-obs to jd} if jd_mid>jd_stop then jd_stop:=jd_mid; jd_sum:=jd_sum+jd_mid;{sum julian days of images at midpoint head.exposure.} vector_based:=true;{no astrometric alignment} if colour_correction=false then {no colour correction} begin for fitsY:=1 to head.height do {skip outside "bad" pixels if mosaic mode} for fitsX:=1 to head.width do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} x_new_float:=x_new_float+oversize;y_new_float:=y_new_float+oversize; x_new:=round(x_new_float);y_new:=round(y_new_float); if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin for col:=0 to head.naxis3-1 do {all colors} begin {serial stacking} img_average[col,x_new,y_new]:=(img_average[col,x_new,y_new]*(counter-1)+ img_loaded[col,fitsX-1,fitsY-1])/counter;{image loaded is already corrected with dark and flat}{NOTE: fits count from 1, image from zero} end; end; end; end else {colour correction} begin for fitsY:=1 to head.height do {skip outside "bad" pixels if mosaic mode} for fitsX:=1 to head.width do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} x_new_float:=x_new_float+oversize;y_new_float:=y_new_float+oversize; x_new:=round(x_new_float);y_new:=round(y_new_float); if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin dum:=img_loaded[0,fitsX-1,fitsY-1]; if dum<>0 then {signal} begin dum:=(dum+add_valueR)*multiply_red/largest; if dum<0 then dum:=0; img_average[0,x_new,y_new]:=(img_average[0,x_new,y_new]*(counter-1)+ dum)/counter; end; if head.naxis3>1 then {colour} begin dum:=img_loaded[1,fitsX-1,fitsY-1]; if dum<>0 then {signal} begin dum:=(dum+add_valueG)*multiply_green/largest; if dum<0 then dum:=0; img_average[1,x_new,y_new]:=(img_average[1,x_new,y_new]*(counter-1)+ dum)/counter;end; end; if head.naxis3>2 then {colour} begin dum:=img_loaded[2,fitsX-1,fitsY-1]; if dum<>0 then {signal} begin dum:=(dum+add_valueB)*multiply_blue/largest; if dum<0 then dum:=0; img_average[2,x_new,y_new]:=(img_average[2,x_new,y_new]*(counter-1)+ dum)/counter;end; end; end; end; end; head.cd1_1:=0;{kill any existing north arrow during plotting. Most likely wrong after stacking} head.height:=height_max; head.width:=width_max; img_loaded:=img_average;{copy the pointer. Both have now access to the data!!} if counter=1 then {set range correct} use_histogram(img_loaded,true);{get histogram R,G,B YES, plot histogram YES, set min & max YES} plot_fits(mainwindow.image1,false,false{do not show header in memo1});{plot real} if stackmenu1.write_jpeg1.checked then save_as_jpg(ExtractFileDir(filename2)+ {$ifdef mswindows}'\'{$else}{unix} '/' {$endif}+'stack.jpeg'); if stackmenu1.interim_to_clipboard1.checked then Clipboard.Assign(mainwindow.Image1.Picture.Bitmap); if stackmenu1.write_log1.checked then Memo2.Lines.SaveToFile(ExtractFileDir(filename2)+ {$ifdef mswindows}'\'{$else}{unix} '/' {$endif}+'log.txt'); end else inc(bad_counter); stackmenu1.files_live_stacked1.caption:=inttostr(counter)+' stacked, '+inttostr(bad_counter)+ ' failures ' ;{Show progress} application.hint:=inttostr(counter)+' stacked, '+inttostr(bad_counter)+ ' failures ' ;{Show progress} end; {no transition image} filename2:=filename_org;// use orginal filename with orgina extension, e.g. with extension .CR2 file_ext:=ExtractFileExt(filename2); if pos('_@',filename2)=0 then filen:=copy(filename2,1,length(filename2)-length(file_ext))+'_@'+ date_string {function} +file_ext+'_' {mark file with date for SGP since the file name will not change if first file is renamed} else filen:=copy(filename2,1,length(filename2)-length(file_ext))+file_ext+'_'; {already marked with date} if RenameFile(filename2,filen)=false then {mark files as done with file extension+'_', beep if failure} begin beep; end; finally end; end else begin {pause or no files} if waiting=false then {do this only once} begin if ((pause_pressed) and (counter>0)) then begin counterL:=counter; update_header; memo2_message('Live stack is suspended.') end else memo2_message('Live stack is waiting for files.'); end; waiting:=true; //Application.ProcessMessages; wait(1000); {smart sleep}{no new files, wait some time} end; end;{live average} until esc_pressed; live_stacking:=false; live_stacking_pause1.font.style:=[]; live_stacking1.font.style:=[]; memo2_message('Live stack stopped. Save result if required'); counterL:=counter; if counter>0 then update_header; memo1_text:='';{release memory} end;{with stackmenu1} end; end. astap_2022.12.09.orig/unit_listbox.lfm0000644000175100017510000000362214344743400016723 0ustar debiandebianobject form_listbox1: Tform_listbox1 Left = 824 Height = 294 Top = 182 Width = 303 AutoSize = True BorderWidth = 5 Caption = 'Search database' ClientHeight = 294 ClientWidth = 303 KeyPreview = True OnClose = FormClose OnKeyPress = FormKeyPress OnShow = FormShow Position = poOwnerFormCenter LCLVersion = '2.0.12.0' object Edit1: TEdit Left = 5 Height = 23 Hint = 'Enter designation to retrieve position. Use wildcard to find designations. E.g. ngc1* or boo*' Top = 24 Width = 291 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 0 end object ok1: TButton Left = 56 Height = 30 Hint = 'Accept the α, δ of the object as an initial start for solving.' Top = 256 Width = 86 Caption = '✔' Default = True OnClick = ok1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 end object keyboard_question1: TLabel Left = 7 Height = 15 Top = 5 Width = 191 Caption = 'Enter object designation or position:' ParentColor = False ParentFont = False WordWrap = True end object ListBox1: TListBox AnchorSideLeft.Control = Edit1 AnchorSideTop.Control = Edit1 AnchorSideTop.Side = asrBottom Left = 5 Height = 200 Hint = 'This listbox will be filled if you enter an object designation with a wildcard. E.g. ngc10*' Top = 47 Width = 291 ItemHeight = 0 OnClick = ListBox1Click OnDblClick = ListBox1DblClick ParentColor = True ParentShowHint = False ScrollWidth = 273 ShowHint = True Sorted = True TabOrder = 2 end object cancel1: TBitBtn Left = 184 Height = 30 Hint = 'Cancel search' Top = 256 Width = 75 Caption = '🗙' OnClick = cancel1Click TabOrder = 3 end end astap_2022.12.09.orig/astap_linux_pie.lpi0000644000175100017510000001177714344743400017404 0ustar debiandebian <Scaled Value="True"/> <UseAppBundle Value="False"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> <XPManifest> <DpiAware Value="True"/> </XPManifest> </General> <VersionInfo> <UseVersionInfo Value="True"/> <MinorVersionNr Value="9"/> <RevisionNr Value="1"/> <Attributes pvaPreRelease="True"/> <StringTable CompanyName="www.hnsky.org" FileDescription="Astrometric STAcking Program" LegalCopyright="Han Kleijn" OriginalFilename="astap.exe" ProductName="ASTAP" ProductVersion="File version refers to the interface standard"/> </VersionInfo> <BuildModes Count="1"> <Item1 Name="Default" Default="True"/> </BuildModes> <PublishOptions> <Version Value="2"/> </PublishOptions> <RunParams> <FormatVersion Value="2"/> <Modes Count="1"> <Mode0 Name="default"/> </Modes> </RunParams> <RequiredPackages Count="2"> <Item1> <PackageName Value="FCL"/> </Item1> <Item2> <PackageName Value="LCL"/> </Item2> </RequiredPackages> <Units Count="13"> <Unit0> <Filename Value="astap.lpr"/> <IsPartOfProject Value="True"/> </Unit0> <Unit1> <Filename Value="astap_main.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="mainwindow"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit1> <Unit2> <Filename Value="unit_stack.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="stackmenu1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit2> <Unit3> <Filename Value="unit_tiff.pas"/> <IsPartOfProject Value="True"/> </Unit3> <Unit4> <Filename Value="unit_astrometry.pas"/> <IsPartOfProject Value="True"/> </Unit4> <Unit5> <Filename Value="unit_gaussian_blur.pas"/> <IsPartOfProject Value="True"/> </Unit5> <Unit6> <Filename Value="unit_star_align.pas"/> <IsPartOfProject Value="True"/> </Unit6> <Unit7> <Filename Value="unit_annotation.pas"/> <IsPartOfProject Value="True"/> </Unit7> <Unit8> <Filename Value="unit_thumbnail.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="thumbnails1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit8> <Unit9> <Filename Value="unit_xisf.pas"/> <IsPartOfProject Value="True"/> </Unit9> <Unit10> <Filename Value="unit_stack_routines.pas"/> <IsPartOfProject Value="True"/> </Unit10> <Unit11> <Filename Value="unit_inspector_plot.pas"/> <IsPartOfProject Value="True"/> </Unit11> <Unit12> <Filename Value="unit_hjd.pas"/> <IsPartOfProject Value="True"/> </Unit12> </Units> </ProjectOptions> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="."/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> </SyntaxOptions> </Parsing> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> <UseExternalDbgSyms Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-XX -Si -vh // compiler settings for a // PIE executable that you can run only via a terminal or a symlink. -Cg -k-pie -k-znow"/> </Other> </CompilerOptions> <Debugging> <Exceptions Count="9"> <Item1> <Name Value="EAbort"/> </Item1> <Item2> <Name Value="ECodetoolError"/> </Item2> <Item3> <Name Value="EFOpenError"/> </Item3> <Item4> <Name Value="EReadError"/> </Item4> <Item5> <Name Value="ERangeError"/> </Item5> <Item6> <Name Value="RunError(216)"/> </Item6> <Item7> <Name Value="EAccessViolation"/> </Item7> <Item8> <Name Value="RunError(201)"/> </Item8> <Item9> <Name Value="RunError(219)"/> </Item9> </Exceptions> </Debugging> </CONFIG> �astap_2022.12.09.orig/unit_aavso.lfm����������������������������������������������������������������0000644�0001751�0001751�00000012625�14344743400�016353� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object form_aavso1: Tform_aavso1 Left = 177 Height = 398 Top = 113 Width = 1385 Caption = 'AAVSO report' ClientHeight = 398 ClientWidth = 1385 OnClose = FormClose OnResize = FormResize OnShow = FormShow LCLVersion = '2.0.12.0' object obscode1: TEdit Left = 16 Height = 23 Hint = 'The official AAVSO Observer Code for the observer which was previously assigned by the AAVSO.' Top = 8 Width = 208 ParentShowHint = False ShowHint = True TabOrder = 0 end object Label1: TLabel Left = 243 Height = 15 Top = 8 Width = 53 Caption = 'OBSCODE' ParentColor = False end object Label3: TLabel Left = 243 Height = 15 Top = 152 Width = 88 Caption = 'Name check star' ParentColor = False end object report_to_clipboard1: TButton Left = 16 Height = 25 Hint = 'Copies the report to the clipboard. Paste it into a text editor, save it and upload it to the AAVSO WebObs.' Top = 360 Width = 168 Caption = 'Report to clipboard' OnClick = report_to_clipboard1Click TabOrder = 1 end object Filter1: TComboBox Left = 16 Height = 23 Hint = 'The filter used for the observation.' Top = 200 Width = 208 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'CV (unfiltered)' 'TG (green filter or green of OSC)' 'V (Johnson-V)' ) ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 Text = 'CV (unfiltered)' end object Label6: TLabel Left = 242 Height = 15 Top = 200 Width = 54 Caption = 'Filter used' ParentColor = False end object Label8: TLabel Left = 243 Height = 15 Top = 56 Width = 76 Caption = 'Name variable' ParentColor = False end object name_variable1: TEdit Left = 16 Height = 23 Hint = ': The star''s identifier. It can be the AAVSO Designation, the AAVSO Name, or the AAVSO Unique Identifier, but NOT more than one of these. Limit: 30 characters.' Top = 56 Width = 208 OnChange = name_variable1Change ParentShowHint = False ShowHint = True TabOrder = 3 end object Label2: TLabel Left = 16 Height = 15 Top = 320 Width = 365 Caption = 'For 1 to 4 images the MERR will be calculated by 2/SNR else by StDev.' ParentColor = False end object delimiter1: TComboBox Left = 16 Height = 23 Hint = 'The delimiter used to separate fields in the report. Any will do. ' Top = 248 Width = 88 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'tab' ',' ';' '|' ) ParentFont = False ParentShowHint = False Style = csDropDownList TabOrder = 4 Text = 'tab' end object Label4: TLabel Left = 243 Height = 15 Top = 250 Width = 48 Caption = 'Delimiter' ParentColor = False end object Comparison1: TEdit Left = 16 Height = 23 Hint = 'Fixed. Comparison stars. Will use all available Gaia stars. Select V17. ' Top = 104 Width = 208 Enabled = False ParentShowHint = False ReadOnly = True ShowHint = True TabOrder = 5 Text = 'Gaia' end object Label5: TLabel Left = 243 Height = 15 Top = 104 Width = 143 Caption = 'Comparison stars (use V17)' ParentColor = False end object report_to_file1: TButton Left = 218 Height = 25 Hint = 'Writes report to file in the same directory as the input files.' Top = 360 Width = 168 Caption = 'Report to file' OnClick = report_to_clipboard1Click TabOrder = 6 end object name_check1: TComboBox Left = 16 Height = 23 Hint = ' Check star AUID (much preferred) or designation. Alternatively you could select the IAU designation using the position.' Top = 152 Width = 208 ItemHeight = 15 OnChange = name_check1Change OnDropDown = name_check1DropDown ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 7 end object Image_photometry1: TImage Cursor = crCross Left = 400 Height = 398 Top = 0 Width = 980 Align = alClient BorderSpacing.Left = 400 BorderSpacing.Right = 5 OnMouseMove = Image_photometry1MouseMove PopupMenu = PopupMenu1 Stretch = True end object baa_style1: TCheckBox Left = 16 Height = 19 Hint = 'Extras report lines will added conform BAA. Info is taken from FITS header.' Top = 288 Width = 70 Caption = 'BAA style' ParentShowHint = False ShowHint = True TabOrder = 8 end object report_error1: TLabel Left = 376 Height = 192 Top = 168 Width = 700 AutoSize = False Caption = 'Invalid report! View the first image in the list and click on the variable and check star to mark them for measurement. Then press the ▶| button to measure the stars.' Font.Color = clRed Font.Height = -24 ParentColor = False ParentFont = False Visible = False WordWrap = True end object PopupMenu1: TPopupMenu Left = 685 Top = 135 object MenuItem1: TMenuItem Caption = 'Copy to clipboard' Hint = 'Copy graph to clipboard' ShortCut = 16451 OnClick = MenuItem1Click end end end �����������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_asteroid.lfm�������������������������������������������������������������0000644�0001751�0001751�00000022772�14344743400�017060� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object form_asteroids1: Tform_asteroids1 Left = 98 Height = 415 Top = 181 Width = 596 Caption = 'Annotation of asteroids and comets' ClientHeight = 415 ClientWidth = 596 KeyPreview = True OnClose = FormClose OnKeyPress = FormKeyPress OnShow = FormShow Position = poScreenCenter LCLVersion = '2.0.12.0' object annotate_asteroids1: TButton Left = 192 Height = 25 Hint = 'Annotate asteroids' Top = 384 Width = 224 Caption = 'Annotate asteroids && comets' OnClick = annotate_asteroids1Click TabOrder = 0 end object cancel_button1: TButton Left = 440 Height = 25 Hint = 'Cancel' Top = 384 Width = 75 Caption = 'Cancel' OnClick = cancel_button1Click TabOrder = 1 end object help_asteroid_annotation1: TLabel Cursor = crHandPoint Left = 541 Height = 30 Hint = 'Help asteroid annotation' Top = 376 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_asteroid_annotation1Click end object Group_Box1: TGroupBox Left = 8 Height = 256 Top = 0 Width = 582 Caption = 'Database' ClientHeight = 236 ClientWidth = 578 TabOrder = 2 OnClick = Group_Box1Click object file_to_add1: TButton Left = 100 Height = 25 Hint = 'Browse and select MPCORB.DAT to use' Top = 8 Width = 35 AutoSize = True Caption = '...' OnClick = file_to_add1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 0 end object mpcorb_filedate1: TLabel Left = 168 Height = 15 Top = 8 Width = 15 Caption = '---' ParentColor = False end object download_mpcorb1: TLabel Cursor = crHandPoint Left = 32 Height = 30 Hint = 'Download MPCORB.DAT or CometEls.txt using default browser' Top = 3 Width = 15 Caption = '⇩' Font.Color = clBlue Font.Height = -21 Font.Style = [fsBold] ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = download_mpcorb1Click end object up_to_number1: TLabel Left = 16 Height = 15 Top = 81 Width = 160 Alignment = taRightJustify Anchors = [akTop, akRight] AutoSize = False Caption = 'Use up to number:' ParentBidiMode = False ParentColor = False end object max_nr_asteroids1: TEdit Left = 184 Height = 23 Hint = 'Specify here the number of asteroids to extract.' Top = 80 Width = 78 TabOrder = 4 Text = '10000' end object up_to_magn1: TLabel Left = 16 Height = 15 Top = 112 Width = 160 Alignment = taRightJustify Anchors = [akTop, akRight] AutoSize = False Caption = 'Use up to magnitude:' ParentBidiMode = False ParentColor = False end object max_magn_asteroids1: TEdit Left = 184 Height = 23 Hint = 'Specify here the limiting magnitude for extracting asteroids.' Top = 112 Width = 64 MaxLength = 4 ParentColor = True ParentShowHint = False ShowHint = True TabOrder = 5 Text = '17' end object max_magn_asteroids2: TUpDown Left = 248 Height = 23 Top = 112 Width = 14 Associate = max_magn_asteroids1 Max = 25 Min = 0 Position = 17 TabOrder = 6 end object showfullnames1: TCheckBox Left = 312 Height = 19 Top = 140 Width = 107 Caption = 'Show full names' Checked = True State = cbChecked TabOrder = 10 end object ColorBox1: TColorBox Left = 312 Height = 22 Top = 81 Width = 100 DefaultColorColor = clFuchsia ItemHeight = 16 TabOrder = 7 end object add_subtitle1: TCheckBox Left = 312 Height = 19 Hint = 'Add to the bottom of the image date and position.' Top = 188 Width = 120 Caption = 'Add image subtitle' Checked = True ParentShowHint = False ShowHint = True State = cbChecked TabOrder = 12 end object add_annotations1: TCheckBox Left = 312 Height = 19 Hint = 'The asteroids will be marked by annotions in the header and preserved if saved. The annotations can be used later to manual stack the images later to visualise very faint asteroids.' Top = 212 Width = 219 Caption = 'Add as annotations to the FITS header' ParentShowHint = False ShowHint = True TabOrder = 13 end object file_to_add2: TButton Left = 100 Height = 25 Hint = 'Browse and select MPCORB.DAT to use' Top = 40 Width = 35 AutoSize = True Caption = '...' OnClick = file_to_add2Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 end object mpcorb_filedate2: TLabel Left = 168 Height = 15 Top = 40 Width = 15 Caption = '---' ParentColor = False end object mpcorb_path2: TLabel Left = 312 Height = 15 Hint = 'Path to CometEls.txt file' Top = 40 Width = 67 Caption = 'CometEls.txt' ParentColor = False end object showmagnitude1: TCheckBox Left = 312 Height = 19 Top = 164 Width = 110 Caption = 'Show magnitude' TabOrder = 11 end object mpcorb_path1: TLabel Left = 312 Height = 15 Hint = 'Path to MPCORB.DAT file' Top = 8 Width = 73 Caption = 'MPCORB.DAT' ParentColor = False end object BitBtn1: TBitBtn Left = 136 Height = 24 Hint = 'Clear and disable' Top = 8 Width = 24 Images = mainwindow.ImageList1 ImageIndex = 3 OnClick = BitBtn1Click ParentShowHint = False ShowHint = True TabOrder = 1 end object BitBtn2: TBitBtn Left = 136 Height = 24 Hint = 'Clear and disable' Top = 40 Width = 24 Images = mainwindow.ImageList1 ImageIndex = 3 OnClick = BitBtn2Click ParentShowHint = False ShowHint = True TabOrder = 3 end object annotation_size1: TEdit Left = 424 Height = 23 Hint = 'Annotation diameter. For diameter 5 or smaller, two lines will be used for annotation. Comets annotations are five times larger.' Top = 80 Width = 48 MaxLength = 4 ParentColor = True ParentShowHint = False ShowHint = True TabOrder = 14 Text = '40' end object annotation_size2: TUpDown Left = 472 Height = 23 Top = 80 Width = 14 Associate = annotation_size1 Increment = 2 Max = 500 Min = 2 Position = 40 TabOrder = 8 end object font_follows_diameter1: TCheckBox Left = 312 Height = 19 Hint = 'Font and line thickness follow annotation diameter.' Top = 116 Width = 196 Caption = 'Font follows annotation diameter' ParentShowHint = False ShowHint = True TabOrder = 9 end end object Group_Box2: TGroupBox Left = 8 Height = 122 Top = 256 Width = 584 Caption = 'Image data' ClientHeight = 102 ClientWidth = 580 TabOrder = 3 object date_obs1: TEdit Left = 127 Height = 23 Hint = 'Format YYYY-MM-DDTHH:MM:SS.SSS. Timezone 0, universal time' Top = 8 Width = 249 ParentShowHint = False ShowHint = True TabOrder = 0 Text = '2020-02-11T22:10:41.222' end object date_label1: TLabel Left = 64 Height = 15 Top = 8 Width = 57 Anchors = [akTop, akRight] Caption = 'DATE_OBS:' ParentColor = False end object latitude1: TEdit Left = 128 Height = 23 Hint = 'The latitude of the observatory in degrees.' Top = 40 Width = 113 OnChange = latitude1Change ParentShowHint = False ShowHint = True TabOrder = 1 Text = '0' end object Label2: TLabel Left = 75 Height = 15 Top = 40 Width = 46 Anchors = [akTop, akRight] Caption = 'Latitude:' ParentColor = False end object Label3: TLabel Left = 64 Height = 15 Top = 72 Width = 57 Anchors = [akTop, akRight] Caption = 'Longitude:' ParentColor = False end object longitude1: TEdit Left = 127 Height = 23 Hint = 'The longitude of the observatory in degrees. For east enter positive, for west enter negative values.' Top = 72 Width = 113 OnChange = longitude1Change ParentShowHint = False ShowHint = True TabOrder = 2 Text = '0' end object label_start_mid1: TLabel Left = 384 Height = 15 Top = 8 Width = 123 Caption = 'Start of the observation' ParentColor = False end end object OpenDialog1: TOpenDialog Title = 'Open an existing file' Left = 32 Top = 288 end end ������astap_2022.12.09.orig/unit_stack_routines.pas�������������������������������������������������������0000644�0001751�0001751�00000304400�14344743400�020277� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_stack_routines; {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode delphi} interface uses Classes, SysUtils,forms, math, unit_stack, astap_main, unit_star_align; procedure stack_LRGB(oversize:integer; var files_to_process : array of TfileToDo; out counter : integer );{stack LRGB mode} procedure stack_average(oversize,process_as_osc:integer; var files_to_process : array of TfileToDo; out counter : integer);{stack average} procedure stack_mosaic(oversize:integer; var files_to_process : array of TfileToDo;max_dev_backgr: double; out counter : integer);{stack mosaic/tile mode} procedure stack_sigmaclip(oversize,process_as_osc:integer; var files_to_process : array of TfileToDo; out counter : integer); {stack using sigma clip average} procedure calibration_and_alignment(oversize,process_as_osc:integer; var files_to_process : array of TfileToDo; out counter : integer); {calibration_and_alignment only} {$inline off} {!!! Set this off for debugging} procedure calc_newx_newy(vector_based : boolean; fitsXfloat,fitsYfloat: double); inline; {apply either vector or astrometric correction} procedure astrometric_to_vector; {convert astrometric solution to vector solution} procedure initialise_var1;{set variables correct} procedure initialise_var2;{set variables correct} function test_bayer_matrix(img: image_array) :boolean; {test statistical if image has a bayer matrix. Execution time about 1ms for 3040x2016 image} var pedestal_s : double;{target background value} var SIN_dec0,COS_dec0,x_new_float,y_new_float,SIN_dec_ref,COS_dec_ref, ap_0_1_ref,ap_0_2_ref,ap_0_3_ref,ap_1_0_ref,ap_1_1_ref, ap_1_2_ref,ap_2_0_ref,ap_2_1_ref,ap_3_0_ref, bp_0_1_ref,bp_0_2_ref,bp_0_3_ref,bp_1_0_ref,bp_1_1_ref,bp_1_2_ref,bp_2_0_ref,bp_2_1_ref,bp_3_0_ref : double; gain_refxxx: string; implementation uses unit_astrometric_solving; procedure calc_newx_newy(vector_based : boolean; fitsXfloat,fitsYfloat: double); inline; {apply either vector or astrometric correction} var u,u0,v,v0,dRa,dDec,delta,ra_new,dec_new,delta_ra,det,gamma,SIN_dec_new,COS_dec_new,SIN_delta_ra,COS_delta_ra,h: double; Begin if vector_based then {vector based correction} begin x_new_float:=solution_vectorX[0]*(fitsxfloat-1)+solution_vectorX[1]*(fitsYfloat-1)+solution_vectorX[2]; {correction x:=aX+bY+c x_new_float in image array range 0..head.width-1} y_new_float:=solution_vectorY[0]*(fitsxfloat-1)+solution_vectorY[1]*(fitsYfloat-1)+solution_vectorY[2]; {correction y:=aX+bY+c} end else begin {astrometric based correction} {6. Conversion (x,y) -> (RA,DEC) for image to be added} u0:=fitsXfloat-head.crpix1; v0:=fitsYfloat-head.crpix2; if a_order>=2 then {apply SIP correction up second order} begin u:=u0 + a_2_0*u0*u0 + a_0_2*v0*v0 + a_1_1*u0*v0; {SIP correction} v:=v0 + b_2_0*u0*u0 + b_0_2*v0*v0 + b_1_1*u0*v0; {SIP correction} end else begin u:=u0; v:=v0; end; dRa :=(head.cd1_1 * u +head.cd1_2 * v)*pi/180; dDec:=(head.cd2_1 * u +head.cd2_2 * v)*pi/180; delta:=COS_dec0 - dDec*SIN_dec0; gamma:=sqrt(dRa*dRa+delta*delta); RA_new:=head.ra0+arctan(Dra/delta); DEC_new:=arctan((SIN_dec0+dDec*COS_dec0)/gamma); {5. Conversion (RA,DEC) -> (x,y) of reference image} sincos(dec_new,SIN_dec_new,COS_dec_new);{sincos is faster then separate sin and cos functions} delta_ra:=RA_new-head_ref.ra0; sincos(delta_ra,SIN_delta_ra,COS_delta_ra); H := SIN_dec_new*sin_dec_ref + COS_dec_new*COS_dec_ref*COS_delta_ra; dRA := (COS_dec_new*SIN_delta_ra / H)*180/pi; dDEC:= ((SIN_dec_new*COS_dec_ref - COS_dec_new*SIN_dec_ref*COS_delta_ra ) / H)*180/pi; det:=head_ref.CD2_2*head_ref.CD1_1 - head_ref.CD1_2*head_ref.CD2_1; u0:= - (head_ref.CD1_2*dDEC - head_ref.CD2_2*dRA) / det; v0:= + (head_ref.CD1_1*dDEC - head_ref.CD2_1*dRA) / det; if ap_order>=2 then {apply SIP correction up to second order} begin x_new_float:=(head_ref.crpix1 + u0+ap_0_1*v0+ ap_0_2*v0*v0+ ap_0_3*v0*v0*v0 +ap_1_0*u0 + ap_1_1*u0*v0+ ap_1_2*u0*v0*v0+ ap_2_0*u0*u0 + ap_2_1*u0*u0*v0+ ap_3_0*u0*u0*u0)-1;{3th order SIP correction, fits count from 1, image from zero therefore subtract 1} y_new_float:=(head_ref.crpix2 + v0+bp_0_1*v0+ bp_0_2*v0*v0+ bp_0_3*v0*v0*v0 +bp_1_0*u0 + bp_1_1*u0*v0+ bp_1_2*u0*v0*v0+ bp_2_0*u0*u0 + bp_2_1*u0*u0*v0+ bp_3_0*u0*u0*u0)-1;{3th order SIP correction} end else begin x_new_float:=(head_ref.crpix1 + u0)-1; {in image array range 0..width-1} y_new_float:=(head_ref.crpix2 + v0)-1; end; end;{astrometric} end;{calc_newx_newy} procedure astrometric_to_vector;{convert astrometric solution to vector solution} var flipped,flipped_reference : boolean; begin a_order:=0; {SIP correction should be zero by definition} calc_newx_newy(false,1,1) ; solution_vectorX[2]:=x_new_float; solution_vectorY[2]:=y_new_float; calc_newx_newy(false,2, 1); {move one pixel in X} solution_vectorX[0]:=+(x_new_float- solution_vectorX[2]); solution_vectorX[1]:=-(y_new_float- solution_vectorY[2]); calc_newx_newy(false,1, 2);{move one pixel in Y} solution_vectorY[0]:=-(x_new_float- solution_vectorX[2]); solution_vectorY[1]:=+(y_new_float- solution_vectorY[2]); flipped:=((head.CD1_1>0)=(head.CD2_2>0)); {Flipped image. Either flipped vertical or horizontal but not both. Flipped both horizontal and vertical is equal to 180 degrees rotation and is not seen as flipped} flipped_reference:=((head_ref.CD1_1>0)=(head_ref.CD2_2>0)); {flipped reference image} if flipped<>flipped_reference then {this can happen is user try to add images from a diffent camera/setup} begin solution_vectorX[1]:=-solution_vectorX[1]; solution_vectorY[0]:=-solution_vectorY[0]; end; end; procedure initialise_var1;{set variables correct} begin sincos(head.dec0,SIN_dec_ref,COS_dec_ref);{do this in advance since it is for each pixel the same. For blink header "head" is used instead of "head_ref"} end; procedure initialise_var2;{set variables correct} begin ap_0_1_ref:=ap_0_1;{store polynomial first fits } ap_0_2_ref:=ap_0_2; ap_0_3_ref:=ap_0_3; ap_1_0_ref:=ap_1_0; ap_1_1_ref:=ap_1_1; ap_1_2_ref:=ap_1_2; ap_2_0_ref:=ap_2_0; ap_2_1_ref:=ap_2_1; ap_3_0_ref:=ap_3_0; bp_0_1_ref:=bp_0_1; bp_0_2_ref:=bp_0_2; bp_0_3_ref:=bp_0_3; bp_1_0_ref:=bp_1_0; bp_1_1_ref:=bp_1_1; bp_2_1_ref:=bp_2_1; bp_2_0_ref:=bp_2_0; bp_2_1_ref:=bp_2_1; bp_3_0_ref:=bp_3_0; end; procedure stack_LRGB(oversize:integer; var files_to_process : array of TfileToDo; out counter : integer );{stack LRGB mode} var fitsX,fitsY,c,width_max, height_max, x_new,y_new, binning,oversizeV,max_stars,col : integer; background_r, background_g, background_b, background_l , rgbsum,red_f,green_f,blue_f, value ,colr, colg,colb, red_add,green_add,blue_add, rr_factor, rg_factor, rb_factor, gr_factor, gg_factor, gb_factor, br_factor, bg_factor, bb_factor, saturated_level,hfd_min,tempval : double; init, solution,use_star_alignment,use_manual_align,use_ephemeris_alignment, use_astrometry_internal,vector_based :boolean; warning : string; begin with stackmenu1 do begin {move often uses setting to booleans. Great speed improved if use in a loop and read many times} use_star_alignment:=stackmenu1.use_star_alignment1.checked; use_manual_align:=stackmenu1.use_manual_alignment1.checked; use_ephemeris_alignment:=stackmenu1.use_ephemeris_alignment1.checked; use_astrometry_internal:=use_astrometry_internal1.checked; hfd_min:=max(0.8 {two pixels},strtofloat2(stackmenu1.min_star_size_stacking1.caption){hfd});{to ignore hot pixels which are too small} max_stars:=strtoint2(stackmenu1.max_stars1.text);{maximum star to process, if so filter out brightest stars later} if max_stars=0 then max_stars:=500;{0 is auto for solving. No auto for stacking} counter:=0; jd_sum:=0;{sum of Julian midpoints} jd_stop:=0;{end observations in Julian day} init:=false; {LRGB method} begin memo2_message('Combining colours.'); rr_factor:=strtofloat2(rr1.text); rg_factor:=strtofloat2(rg1.text); rb_factor:=strtofloat2(rb1.text); gr_factor:=strtofloat2(gr1.text); gg_factor:=strtofloat2(gg1.text); gb_factor:=strtofloat2(gb1.text); br_factor:=strtofloat2(br1.text); bg_factor:=strtofloat2(bg1.text); bb_factor:=strtofloat2(bb1.text); background_r:=0; background_g:=0; background_b:=0; background_l:=0; red_add:=strtofloat2(red_filter_add1.text); green_add:=strtofloat2(green_filter_add1.text); blue_add:=strtofloat2(blue_filter_add1.text); for c:=0 to length(files_to_process)-1 do {should contain reference,r,g,b,rgb,l} begin if c=5 then {all colour files added, correct for the number of pixel values added at one pixel. This can also happen if one colour has an angle and two pixel fit in one!!} begin {fix RGB stack} memo2_message('Correcting the number of pixels added together.'); for fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do for col:=0 to 2 do begin tempval:=img_temp[col,fitsX,fitsY]; if tempval>0 then //Note tempval>1 is very very rare. In 99.99% cases tempval is 1 and no more then one pixel combined. Seen more then one pixel only for astrometric stacking img_average[col,fitsX,fitsY]:=500+img_average[col,fitsX,fitsY]/tempval {scale to one image by diving by the number of pixels added} else img_average[col,fitsX,fitsY]:=0;//This will set all colours of a single pixel to zero if one of the colour is saturated and marked by image_temp[]:=-9; end; memo2_message('Applying black spot filter on interim RGB image.'); black_spot_filter(img_average); //Black spot filter and add bias. Note for 99,99% zero means black spot but it could also be coincidence end;{c=5, all colour files added} if length(files_to_process[c].name)>0 then begin try { Do some lengthy operation } filename2:=files_to_process[c].name; if c=0 then memo2_message('Loading reference image: "'+filename2+'".'); if c=1 then memo2_message('Adding red file: "'+filename2+'" to final image.'); if c=2 then memo2_message('Adding green file: "'+filename2+'" to final image.'); if c=3 then memo2_message('Adding blue file: "'+filename2+'" to final image.'); if c=4 then memo2_message('Adding RGB file: "'+filename2+'" to final image.'); if c=5 then memo2_message('Using luminance file: "'+filename2+'" for final image.'); {load image} Application.ProcessMessages; if esc_pressed then begin memo2_message('ESC pressed.');exit;end; if load_fits(filename2,true {light},true,init=false {update memo only for first ref img},0,head,img_loaded)=false then begin memo2_message('Error loading '+filename2);exit;end; if init=false then begin head_ref:=head;{backup solution} initialise_var1;{set variables correct, do this before apply dark} initialise_var2;{set variables correct} end; saturated_level:=head.datamax_org*0.97;{130} if c=1 then begin get_background(0,img_loaded,true,false, {var} background_r,star_level);{unknown, do not calculate noise_level} cblack:=round( background_r); counterR:=head.light_count ;counterRdark:=head.dark_count; counterRflat:=head.flat_count; counterRbias:=head.flatdark_count; exposureR:=round(head.exposure);temperatureR:=head.set_temperature;{for historical reasons} end; if c=2 then begin get_background(0,img_loaded,true,false, {var} background_g,star_level);{unknown, do not calculate noise_level} cblack:=round( background_g); counterG:=head.light_count;counterGdark:=head.dark_count; counterGflat:=head.flat_count; counterGbias:=head.flatdark_count; exposureG:=round(head.exposure);temperatureG:=head.set_temperature; end; if c=3 then begin get_background(0,img_loaded,true,false, {var} background_b,star_level);{unknown, do not calculate noise_level} cblack:=round( background_b); counterB:=head.light_count; counterBdark:=head.dark_count; counterBflat:=head.flat_count; counterBbias:=head.flatdark_count; exposureB:=round(head.exposure);temperatureB:=head.set_temperature; end; if c=4 then begin get_background(0,img_loaded,true,false, {var} background_r,star_level);{unknown, do not calculate noise_level} cblack:=round( background_r); background_g:=background_r; background_b:=background_r; counterRGB:=head.light_count; counterRGBdark:=head.dark_count; counterRGBflat:=head.flat_count; counterRGBbias:=head.flatdark_count; exposureRGB:=round(head.exposure);;temperatureRGB:=head.set_temperature; end; if c=5 then {Luminance} begin get_background(0,img_loaded,true,false, {var} background_L,star_level);{unknown, do not calculate noise_level} cblack:=round( background_L); counterL:=head.light_count; counterLdark:=head.dark_count; counterLflat:=head.flat_count; counterLbias:=head.flatdark_count; exposureL:=round(head.exposure);temperatureL:=head.set_temperature; end; if use_astrometry_internal then {internal solver, create new solutions for the R, G, B and L stacked images if required} begin memo2_message('Preparing astrometric solution for interim file: '+filename2); if head.cd1_1=0 then solution:= create_internal_solution(img_loaded,head) else solution:=true; if solution=false {load astrometry.net solution succesfull} then begin memo2_message('Abort, No astrometric solution for '+filename2); exit;end;{no solution found} end else if init=false then {first image} begin if ((use_manual_align) or (use_ephemeris_alignment)) then begin referenceX:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {reference offset} referenceY:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); {reference offset} end else begin binning:=report_binning(head.height);{select binning based on the height of the light} bin_and_find_stars(img_loaded, binning,1 {cropping},hfd_min,max_stars,true{update hist},starlist1,warning);{bin, measure background, find stars} find_quads(starlist1,0, quad_smallest,quad_star_distances1);{find quads for reference image/database} end; end; if init=false then {init} begin if oversize<0 then {shrink a lot, adapt in ratio} begin oversize:=max(oversize,-round((head.width-100)/2) );{minimum image width is 100} oversizeV:=round(oversize*head.height/head.width);{vertical shrinkage in pixels} height_max:=head.height+oversizeV*2; end else begin oversizeV:=oversize; height_max:=head.height+oversize*2; end; width_max:=head.width+oversize*2; setlength(img_average,3,width_max,height_max);{will be color} setlength(img_temp,3,width_max,height_max); for fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do for col:=0 to 2 do begin img_average[col,fitsX,fitsY]:=0; //clear img_average img_temp[col,fitsX,fitsY]:=0;//clear counter end; end;{init, c=0} solution:=true;{assume solution is found} if use_astrometry_internal then sincos(head.dec0,SIN_dec0,COS_dec0) {do this in advance since it is for each pixel the same} else begin {align using star match} if init=true then {second image} begin if ((use_manual_align) or (use_ephemeris_alignment)) then begin {manual alignment} solution_vectorX[2]:=referenceX-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {calculate correction} solution_vectorY[2]:=referenceY-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); memo2_message('Solution x:=x+'+floattostr6(solution_vectorX[2])+', y:=y+'+floattostr6(solution_vectorY[2])); end else begin{internal alignment} bin_and_find_stars(img_loaded, binning,1 {cropping},hfd_min,max_stars,true{update hist},starlist2,warning);{bin, measure background, find stars} find_quads(starlist2,0, quad_smallest,quad_star_distances2);{find star quads for new image} if find_offset_and_rotation(3,strtofloat2(stackmenu1.quad_tolerance1.text)) then {find difference between ref image and new image} memo2_message(inttostr(nr_references)+' of '+ inttostr(nr_references2)+' quads selected matching within '+stackmenu1.quad_tolerance1.text+' tolerance.' +' Solution x:='+floattostr6(solution_vectorX[0])+'*x+ '+floattostr6(solution_vectorX[1])+'*y+ '+floattostr6(solution_vectorX[2]) +', y:='+floattostr6(solution_vectorY[0])+'*x+ '+floattostr6(solution_vectorY[1])+'*y+ '+floattostr6(solution_vectorY[2]) ) else begin memo2_message('Not enough quad matches <3 or inconsistent solution, skipping this image.'); files_to_process[c].name:=''; {remove file from list} solution:=false; ListView1.Items.item[files_to_process[c].listviewindex].SubitemImages[L_result]:=6;{mark 3th column with exclaimation} ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_result]:='no solution';{no stack result} end; end;{internal alignment} end else reset_solution_vectors(1);{no influence on the first image} end;{using star match} init:=true;{initialize for first image done} if ((c<>0) and (solution)) then {do not add reference channel c=0, in most case luminance file.} begin inc(counter);{count number of colour files involved} date_to_jd(head.date_obs,head.exposure);{convert head.date_obs string and head.exposure time to global variables jd_start (julian day start head.exposure) and jd_mid (julian day middle of the head.exposure)} if jd_start>jd_stop then jd_stop:=jd_start;{find latest start time} jd_sum:=jd_sum+jd_mid;{sum julian days of images at midpoint exposure} vector_based:=((use_star_alignment) or (use_manual_align) or (use_ephemeris_alignment)); if ((vector_based=false) and (a_order=0)) then {no SIP from astronomy.net} begin astrometric_to_vector;{convert astrometric solution to vector solution} vector_based:=true; end; for fitsY:=1 to head.height do {skip outside pixels if color} for fitsX:=1 to head.width do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} x_new:=round(x_new_float+oversize);y_new:=round(y_new_float+oversizeV); if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin if c=1 {red} then begin value:=img_loaded[0,fitsX-1,fitsY-1]; if value>saturated_level then {saturation, mark all three colors as black spot (<=0) to maintain star colour} begin for col:=0 to 2 do img_temp[col,x_new,y_new]:=-9;//mark all colours as saturated if one colour is saturated. end else begin value:=(value-background_r);{image loaded is already corrected with dark and flat. Normalize background to level 500}{NOTE: fits count from 1, image from zero} if rr_factor>0.00001 then begin img_average[0,x_new,y_new]:=img_average[0,x_new,y_new] + rr_factor*value;{execute only if greater then zero for speed}img_temp[0,x_new,y_new]:=img_temp[0,x_new,y_new]+1; end; if rg_factor>0.00001 then begin img_average[1,x_new,y_new]:=img_average[1,x_new,y_new] + rg_factor*value; img_temp[1,x_new,y_new]:=img_temp[1,x_new,y_new]+1; end; if rb_factor>0.00001 then begin img_average[2,x_new,y_new]:=img_average[2,x_new,y_new] + rb_factor*value; img_temp[2,x_new,y_new]:=img_temp[2,x_new,y_new]+1; end; end; end; if c=2 {green} then begin value:=img_loaded[0,fitsX-1,fitsY-1]; if value>saturated_level then {saturation, mark all three colors as black spot (<=0) to maintain star colour} begin for col:=0 to 2 do img_temp[col,x_new,y_new]:=-9;//mark all colours as saturated if one colour is saturated. end else begin value:=(value-background_g);{image loaded is already corrected with dark and flat. Normalize background to level 500}{NOTE: fits count from 1, image from zero} if gr_factor>0.00001 then begin img_average[0,x_new,y_new]:=img_average[0,x_new,y_new] + gr_factor*value;{execute only if greater then zero for speed}img_temp[0,x_new,y_new]:=img_temp[0,x_new,y_new]+1; end; if gg_factor>0.00001 then begin img_average[1,x_new,y_new]:=img_average[1,x_new,y_new] + gg_factor*value;img_temp[1,x_new,y_new]:=img_temp[1,x_new,y_new]+1; end; if gb_factor>0.00001 then begin img_average[2,x_new,y_new]:=img_average[2,x_new,y_new] + gb_factor*value;img_temp[2,x_new,y_new]:=img_temp[2,x_new,y_new]+1; end; end; end; if c=3 {blue} then begin value:=img_loaded[0,fitsX-1,fitsY-1]; if value>saturated_level then {saturation, mark all three colors as black spot (<=0) to maintain star colour} begin for col:=0 to 2 do img_temp[col,x_new,y_new]:=-9;//mark all colours as saturated if one colour is saturated. end else begin value:=(value-background_b);{image loaded is already corrected with dark and flat. Normalize background to level 500}{NOTE: fits count from 1, image from zero} if br_factor>0.00001 then begin img_average[0,x_new,y_new]:=img_average[0,x_new,y_new] + br_factor*value;{execute only if greater then zero for speed}img_temp[0,x_new,y_new]:=img_temp[0,x_new,y_new]+1; end; if bg_factor>0.00001 then begin img_average[1,x_new,y_new]:=img_average[1,x_new,y_new] + bg_factor*value; img_temp[1,x_new,y_new]:=img_temp[1,x_new,y_new]+1;end; if bb_factor>0.00001 then begin img_average[2,x_new,y_new]:=img_average[2,x_new,y_new] + bb_factor*value; img_temp[2,x_new,y_new]:=img_temp[2,x_new,y_new]+1;end; end; end; if c=4 {RGB image, naxis3=3} then begin begin img_average[0,x_new,y_new]:=img_average[0,x_new,y_new] + img_loaded[0,fitsX-1,fitsY-1]-background_r; img_temp[0,x_new,y_new]:=img_temp[0,x_new,y_new]+1; end; begin img_average[1,x_new,y_new]:=img_average[1,x_new,y_new] + img_loaded[1,fitsX-1,fitsY-1]-background_g; img_temp[1,x_new,y_new]:=img_temp[1,x_new,y_new]+1; end; begin img_average[2,x_new,y_new]:=img_average[2,x_new,y_new] + img_loaded[2,fitsX-1,fitsY-1]-background_b; img_temp[2,x_new,y_new]:=img_temp[2,x_new,y_new]+1; end; end; if c=5 {Luminance} then begin {r:=l*(0.33+r)/(r+g+b)} colr:=img_average[0,x_new,y_new] - 475 + red_add; {lowest_most_common is around 450 to 500} colg:=img_average[1,x_new,y_new] - 475 + green_add; colb:=img_average[2,x_new,y_new] - 475 + blue_add; rgbsum:=colr+colg+colb; if rgbsum<0.1 then begin rgbsum:=0.1; red_f:=rgbsum/3; green_f:=red_f; blue_f:=red_f;end else begin red_f:=colr/rgbsum; if red_f<0 then red_f:=0; if red_f>1 then red_f:=1; green_f:=colg/rgbsum; if green_f<0 then green_f:=0;if green_f>1 then green_f:=1; blue_f:=colb/rgbsum; if blue_f<0 then blue_f:=0; if blue_f>1 then blue_f:=1; end; img_average[0,x_new,y_new]:=1000+(img_loaded[0,fitsX-1,fitsY-1] - background_l)*(red_f); img_average[1,x_new,y_new]:=1000+(img_loaded[0,fitsX-1,fitsY-1] - background_l)*(green_f); img_average[2,x_new,y_new]:=1000+(img_loaded[0,fitsX-1,fitsY-1] - background_l)*(blue_f); end; end; end; end; progress_indicator(94+c,' LRGB');{show progress, 95..99} except beep; end;{try} end; end; if counter<>0 then begin head:=head_ref; {restore solution. Works only if no oversize is used} head.naxis3:=3;{three colours} head.naxis :=3;{three dimensions. Header will be updated in the save routine} img_loaded:=img_average; head.width:=width_max; head.height:=height_max; end; end;{LRGB} end;{with stackmenu1} end; function test_bayer_matrix(img: image_array) :boolean; {test statistical if image has a bayer matrix. Execution time about 1ms for 3040x2016 image} var fitsX,w,h,middleY,step_size : integer; p11,p12,p21,p22 : array of double; m11,m12,m21,m22,lowest,highest : double; const steps=100; begin // colors:=Length(img); {colors} w:=Length(img[0]); {width} h:=Length(img[0][0]); {height} middleY:=h div 2; step_size:=w div steps; if odd(step_size) then step_size:=step_size-1;{make even so it ends up at the correct location of the 2x2 matrix} SetLength(p11,steps); SetLength(p12,steps); SetLength(p21,steps); SetLength(p22,steps); for fitsX:=0 to steps-1 do {test one horizontal line and take 100 samples of the bayer matrix} begin p11[fitsX]:=img[0,step_size*fitsX,middleY]; p12[fitsX]:=img[0,step_size*fitsX+1,middleY]; p21[fitsX]:=img[0,step_size*fitsX,middleY+1]; p22[fitsX]:=img[0,step_size*fitsX+1,middleY+1]; end; m11:=Smedian(p11,steps); m12:=Smedian(p12,steps); m21:=Smedian(p21,steps); m22:=Smedian(p22,steps); lowest:=min(min(m11,m12),min(m21,m22)); highest:=max(max(m11,m12),max(m21,m22)); result:=highest-lowest>100; p11:=nil; p12:=nil; p21:=nil; p22:=nil; end; function calc_weightF: double; {calculate weighting factor for different exposure duration and gain} var gain1,gain2 : double; begin if head.exposure<>0 then result:=head.exposure/head_ref.exposure else result:=1;{influence of each image depending on the exposure_time} if head.egain<>head_ref.egain then {rare} begin {check egain} gain1:=strtofloat1(head_ref.egain); gain2:=strtofloat1(head.egain); if gain1<>0 then result:=result*gain2/gain1; {-e/adu} memo2_message('Warning light with different EGAIN!! '+copy(head.egain,1,5)+' ínstead of '+copy(head_ref.egain,1,5)+' [e-/ADU]. Will compensate accordingly.'); end else begin {check gain/iso} if head.gain<>head_ref.gain then {rare} memo2_message('Warning light with different GAIN!! '+head.gain+' ínstead of '+head_ref.gain+'. Can not compensate unless EGAIN [e-/ADU] is added manually to header.'); end; end; procedure stack_average(oversize,process_as_osc:integer; var files_to_process : array of TfileToDo; out counter : integer);{stack average} var fitsX,fitsY,c,width_max, height_max,old_width, old_height,x_new,y_new,col,binning,oversizeV,max_stars : integer; background_correction, weightF,hfd_min : double; init, solution,use_star_alignment,use_manual_align,use_ephemeris_alignment, use_astrometry_internal,vector_based : boolean; tempval : single; warning : string; begin with stackmenu1 do begin use_star_alignment:=stackmenu1.use_star_alignment1.checked; use_manual_align:=stackmenu1.use_manual_alignment1.checked; use_ephemeris_alignment:=stackmenu1.use_ephemeris_alignment1.checked; use_astrometry_internal:=use_astrometry_internal1.checked; hfd_min:=max(0.8 {two pixels},strtofloat2(stackmenu1.min_star_size_stacking1.caption){hfd});{to ignore hot pixels which are too small} max_stars:=strtoint2(stackmenu1.max_stars1.text);{maximum star to process, if so filter out brightest stars later} if max_stars=0 then max_stars:=500;{0 is auto for solving. No auto for stacking} counter:=0; sum_exp:=0; sum_temp:=0; jd_sum:=0;{sum of Julian midpoints} jd_stop:=0;{end observations in Julian day} init:=false; background_correction:=0; {simple average} begin for c:=0 to length(files_to_process)-1 do if length(files_to_process[c].name)>0 then begin try { Do some lengthy operation } ListView1.Selected :=nil; {remove any selection} ListView1.ItemIndex := files_to_process[c].listviewindex;{show wich file is processed} Listview1.Items[files_to_process[c].listviewindex].MakeVisible(False);{scroll to selected item} filename2:=files_to_process[c].name; Application.ProcessMessages; {load image} if esc_pressed then begin memo2_message('ESC pressed.');exit;end; if load_fits(filename2,true {light},true,init=false {update memo only for first ref img},0,head,img_loaded)=false then begin memo2_message('Error loading '+filename2);exit;end; if init=false then begin {init is false, first image} old_width:=head.width; old_height:=head.height; head_ref:=head;{backup solution} initialise_var1;{set variables correct. Do this before apply dark} initialise_var2;{set variables correct} if ((bayerpat='') and (process_as_osc=2 {forced})) then if stackmenu1.bayer_pattern1.Text='auto' then memo2_message('█ █ █ █ █ █ Warning, Bayer colour pattern not in the header! Check colours and if wrong set Bayer pattern manually in tab "stack alignment". █ █ █ █ █ █') else if test_bayer_matrix(img_loaded)=false then memo2_message('█ █ █ █ █ █ Warning, grayscale image converted to colour! Un-check option "convert OSC to colour". █ █ █ █ █ █'); end else begin {second, third .... image} if ((old_width<>head.width) or (old_height<>head.height)) then memo2_message('█ █ █ █ █ █ Warning different size image!'); if head.naxis3>length(img_average) {head.naxis3} then begin memo2_message('█ █ █ █ █ █ Abort!! Can'+#39+'t combine colour to mono files.'); exit;end; end; apply_dark_and_flat(img_loaded);{apply dark, flat if required, renew if different head.exposure or ccd temp} memo2_message('Adding file: '+inttostr(c+1)+'-'+nr_selected1.caption+' "'+filename2+'" to average. Using '+inttostr(head.dark_count)+' darks, '+inttostr(head.flat_count)+' flats, '+inttostr(head.flatdark_count)+' flat-darks') ; Application.ProcessMessages; if esc_pressed then exit; if process_as_osc>0 then {do demosaic bayer} begin if head.naxis3>1 then memo2_message('█ █ █ █ █ █ Warning, light is already in colour ! Will skip demosaic. █ █ █ █ █ █') else demosaic_bayer(img_loaded); {convert OSC image to colour} end; if init=false then binning:=report_binning(head.height);{select binning based on the height of the first light. Do this after demosaic since SuperPixel also bins} if ((init=false ) and (use_astrometry_internal=false)) then {first image and not astrometry_internal} begin if ((use_manual_align) or (use_ephemeris_alignment)) then begin referenceX:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {reference offset} referenceY:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); {reference offset} end else begin bin_and_find_stars(img_loaded, binning,1 {cropping},hfd_min,max_stars,true{update hist},starlist1,warning);{bin, measure background, find stars} find_quads(starlist1,0, quad_smallest,quad_star_distances1);{find quads for reference image} pedestal_s:=cblack;{correct for difference in background, use cblack from first image as reference. Some images have very high background values up to 32000 with 6000 noise, so fixed pedestal_s of 1000 is not possible} if pedestal_s<500 then pedestal_s:=500;{prevent image noise could go below zero} background_correction:=pedestal_s-cblack; head.datamax_org:=head.datamax_org+background_correction; if head.datamax_org>$FFFF then head.datamax_org:=$FFFF; {note head.datamax_org is already corrected in apply dark} end; end; if init=false then {init} begin if oversize<0 then {shrink a lot, adapt in ratio} begin oversize:=max(oversize,-round((head.width-100)/2) );{minimum image width is 100} oversizeV:=round(oversize*head.height/head.width); height_max:=head.height+oversizeV*2; end else begin oversizeV:=oversize; height_max:=head.height+oversize*2; end; width_max:=head.width+oversize*2; setlength(img_average,head.naxis3,width_max,height_max); setlength(img_temp,1,width_max,height_max); for fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do begin for col:=0 to head.naxis3-1 do img_average[col,fitsX,fitsY]:=0; {clear img_average} img_temp[0,fitsX,fitsY]:=0; {clear img_temp} end; if ((use_manual_align) or (use_ephemeris_alignment)) then begin referenceX:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {reference offset} referenceY:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); {reference offset} end; end;{init, c=0} solution:=true; if use_astrometry_internal then sincos(head.dec0,SIN_dec0,COS_dec0) {do this in advance since it is for each pixel the same} else begin {align using star match} if init=true then {second image} begin if ((use_manual_align) or (use_ephemeris_alignment)) then begin {manual alignment} solution_vectorX[2]:=referenceX-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {calculate correction} solution_vectorY[2]:=referenceY-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); memo2_message('Solution x:=x+'+floattostr6(solution_vectorX[2])+', y:=y+'+floattostr6(solution_vectorY[2])); end else begin{internal alignment} bin_and_find_stars(img_loaded, binning,1 {cropping},hfd_min,max_stars,true{update hist},starlist2,warning);{bin, measure background, find stars} background_correction:=pedestal_s-cblack; head.datamax_org:=head.datamax_org+background_correction; if head.datamax_org>$FFFF then head.datamax_org:=$FFFF; {note head.datamax_org is already corrected in apply dark} find_quads(starlist2,0,quad_smallest,quad_star_distances2);{find star quads for new image} if find_offset_and_rotation(3,strtofloat2(stackmenu1.quad_tolerance1.text)) then {find difference between ref image and new image} memo2_message(inttostr(nr_references)+' of '+ inttostr(nr_references2)+' quads selected matching within '+stackmenu1.quad_tolerance1.text+' tolerance.' +' Solution x:='+floattostr6(solution_vectorX[0])+'*x+ '+floattostr6(solution_vectorX[1])+'*y+ '+floattostr6(solution_vectorX[2]) +', y:='+floattostr6(solution_vectorY[0])+'*x+ '+floattostr6(solution_vectorY[1])+'*y+ '+floattostr6(solution_vectorY[2]) ) else begin memo2_message('Not enough quad matches <3 or inconsistent solution, skipping this image.'); files_to_process[c].name:=''; {remove file from list} solution:=false; ListView1.Items.item[files_to_process[c].listviewindex].SubitemImages[L_result]:=6;{mark 3th column with exclaimation} ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[2]:='no solution';{no stack result} end; end;{internal alignment} end else reset_solution_vectors(1);{no influence on the first image} end; init:=true;{initialize for first image done} if solution then begin inc(counter); sum_exp:=sum_exp+head.exposure; sum_temp:=sum_temp+head.set_temperature; weightF:=calc_weightF;{calculate weighting factor for different exposure duration and gain} date_to_jd(head.date_obs,head.exposure);{convert head.date_obs string and head.exposure time to global variables jd_start (julian day start head.exposure) and jd_mid (julian day middle of the head.exposure)} if jd_start>jd_stop then jd_stop:=jd_start;{find latest start time} jd_sum:=jd_sum+jd_mid;{sum julian days of images at midpoint head.exposure} vector_based:=((use_star_alignment) or (use_manual_align) or (use_ephemeris_alignment)); if ((vector_based=false) and (a_order=0)) then {no SIP from astronomy.net} begin astrometric_to_vector;{convert astrometric solution to vector solution} vector_based:=true; end; for fitsY:=1 to head.height do {skip outside "bad" pixels if mosaic mode} for fitsX:=1 to head.width do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} x_new_float:=x_new_float+oversize;y_new_float:=y_new_float+oversizeV; x_new:=round(x_new_float);y_new:=round(y_new_float); if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin for col:=0 to head.naxis3-1 do {all colors} img_average[col,x_new,y_new]:=img_average[col,x_new,y_new]+ (img_loaded[col,fitsX-1,fitsY-1] +background_correction)*weightf;{image loaded is already corrected with dark and flat}{NOTE: fits count from 1, image from zero} img_temp[0,x_new,y_new]:=img_temp[0,x_new,y_new]+weightF{typical 1};{count the number of image pixels added=samples.} end; end; end; progress_indicator(10+89*counter/(length(files_to_Process){ListView1.items.count}),' Stacking');{show progress} finally end; end; if counter<>0 then begin head_ref.naxis3:= head.naxis3; {store colour info in reference header} head_ref.naxis:= head.naxis; {store colour info in reference header} head_ref.datamax_org:= head.datamax_org; {for 8 bit files, they are now 500 minimum} head:=head_ref;{restore solution variable of reference image for annotation and mount pointer. Works only if not resized} head.height:=height_max; head.width:=width_max; setlength(img_loaded,head.naxis3,head.width,head.height);{new size} For fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin {pixel loop} tempval:=img_temp[0,fitsX,fitsY]; for col:=0 to head.naxis3-1 do begin {colour loop} if tempval<>0 then img_loaded[col,fitsX,fitsY]:=img_average[col,fitsX,fitsY]/tempval {scale to one image by diving by the number of pixels added} else begin { black spot filter or missing value filter due to image rotation} if ((fitsX>0) and (img_temp[0,fitsX-1,fitsY]<>0)) then img_loaded[col,fitsX,fitsY]:=img_loaded[col,fitsX-1,fitsY]{take nearest pixel x-1 as replacement} else if ((fitsY>0) and (img_temp[0,fitsX,fitsY-1]<>0)) then img_loaded[col,fitsX,fitsY]:=img_loaded[col,fitsX,fitsY-1]{take nearest pixel y-1 as replacement} else img_loaded[col,fitsX,fitsY]:=0;{clear img_loaded since it is resized} end; {black spot} end;{colour loop} end;{pixel loop} end; {counter<>0} // restore_solution(true);{restore solution variable of reference image for annotation and mount pointer} end;{simple average} end;{with stackmenu1} {arrays will be nilled later. This is done for early exits} end; function minimum_distance_borders(fitsX,fitsY,w,h: integer): single; begin result:=min(fitsX,w-fitsX); result:=min(fitsY,result); result:=min(h-fitsY,result); end; procedure stack_mosaic(oversize:integer; var files_to_process : array of TfileToDo; max_dev_backgr: double; out counter : integer);{mosaic/tile mode} var fitsX,fitsY,c,width_max, height_max,x_new,y_new,col, cropW,cropH,iterations : integer; value, dummy,median,median2,delta_median,correction,maxlevel,mean,noise : double; tempval : single; init, vector_based,merge_overlap,equalise_background : boolean; background_correction,background_correction_center,background : array[0..2] of double; counter_overlap : array[0..2] of integer; begin with stackmenu1 do begin {move often uses setting to booleans. Great speed improved if use in a loop and read many times} merge_overlap:=merge_overlap1.checked; Equalise_background:=Equalise_background1.checked; counter:=0; sum_exp:=0; sum_temp:=0; jd_sum:=0;{sum of Julian midpoints} jd_stop:=0;{end observations in Julian day} init:=false; dummy:=0; {mosaic mode} begin for c:=0 to length(files_to_process)-1 do if length(files_to_process[c].name)>0 then begin try { Do some lengthy operation } ListView1.Selected :=nil; {remove any selection} ListView1.ItemIndex := files_to_process[c].listviewindex;{show wich file is processed} Listview1.Items[files_to_process[c].listviewindex].MakeVisible(False);{scroll to selected item} filename2:=files_to_process[c].name; Application.ProcessMessages; {load image} if esc_pressed then begin memo2_message('ESC pressed.');exit;end; if load_fits(filename2,true {light},true,init=false {update memo only for first ref img},0,head,img_loaded)=false then begin memo2_message('Error loading '+filename2);exit;end; if init=true then begin // not for mosaic||| if init=true then if ((old_width<>head.width) or (old_height<>head.height)) then memo2_message('█ █ █ █ █ █ Warning different size image!'); if head.naxis3>length(img_average) {head.naxis3} then begin memo2_message('█ █ █ █ █ █ Abort!! Can'+#39+'t combine mono and colour files.'); exit;end; end; if init=false then begin head_ref:=head;{backup solution} initialise_var1;{set variables correct} initialise_var2;{set variables correct} end; memo2_message('Adding file: '+inttostr(c+1)+'-'+nr_selected1.caption+' "'+filename2+'" to mosaic.'); // Using '+inttostr(dark_count)+' dark(s), '+inttostr(flat_count)+' flat(s), '+inttostr(flatdark_count)+' flat-dark(s)') ; Application.ProcessMessages; if esc_pressed then exit; if init=false then {init} begin oversize:=head.width*mosaic_width1.position div 2;{increase the oversize to have space for the tiles} width_max:=head.width+oversize*2; height_max:=head.height+oversize*2; setlength(img_average,head.naxis3,width_max,height_max); setlength(img_temp,1,width_max,height_max);{gray} for fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do begin for col:=0 to head.naxis3-1 do begin img_average[col,fitsX,fitsY]:=0; {clear img_average} end; img_temp[0,fitsX,fitsY]:=0; {clear img_temp} end; end;{init, c=0} for col:=0 to head.naxis3-1 do {calculate background and noise if required} begin if equalise_background then begin background[col]:=mode(img_loaded,col,round(0.2*head.width),round(0.8*head.width),round(0.2*head.height),round(0.8*head.height),32000); {most common 80% center} background_correction_center[col]:=1000 - background[col] ; end else begin background[col]:=0; background_correction_center[col]:=0; end; end; sincos(head.dec0,SIN_dec0,COS_dec0); {Alway astrometric. Do this in advance since it is for each pixel the same} {solutions are already added in unit_stack} begin inc(counter); sum_exp:=sum_exp+head.exposure; sum_temp:=sum_temp+head.set_temperature; date_to_jd(head.date_obs,head.exposure);{convert head.date_obs string and head.exposure time to global variables jd_start (julian day start head.exposure) and jd_mid (julian day middle of the head.exposure)} if jd_start>jd_stop then jd_stop:=jd_start;{find latest start time} jd_sum:=jd_sum+jd_mid;{sum julian days of images at midpoint head.exposure} vector_based:=false; if a_order=0 then {no SIP from astronomy.net} begin astrometric_to_vector;{convert astrometric solution to vector solution} vector_based:=true; end; cropW:=trunc(stackmenu1.mosaic_crop1.Position*head.width/200); cropH:=trunc(stackmenu1.mosaic_crop1.Position*head.height/200); background_correction[0]:=0; background_correction[1]:=0; background_correction[2]:=0; if init=true then {check image overlap intensisty differance} begin counter_overlap[0]:=0; counter_overlap[1]:=0; counter_overlap[2]:=0; for fitsY:=1+1+cropH to head.height-1-cropH do {skip outside "bad" pixels if mosaic mode. Don't use the pixel at borders, so crop is minimum 1 pixel} for fitsX:=1+1+cropW to head.width-1-cropW do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} x_new:=round(x_new_float+oversize);y_new:=round(y_new_float+oversize); if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin if img_loaded[0,fitsX-1,fitsY-1]>0.0001 then {not a black area around image} begin if img_average[0,x_new,y_new]<>0 then {filled pixel} begin for col:=0 to head.naxis3-1 do {all colors} begin correction:=round(img_average[col,x_new,y_new]-(img_loaded[col,fitsX-1,fitsY-1]+background_correction_center[col]) ); if abs(correction)<max_dev_backgr*1.5 then {acceptable offset based on the lowest and highest background measured earlier} begin background_correction[col]:=background_correction[col]+correction; counter_overlap[col]:=counter_overlap[col]+1; end; end; end; end; end; end; if counter_overlap[0]>0 then background_correction[0]:=background_correction[0]/counter_overlap[0]; if counter_overlap[1]>0 then background_correction[1]:=background_correction[1]/counter_overlap[1]; if counter_overlap[2]>0 then background_correction[2]:=background_correction[2]/counter_overlap[2]; end; init:=true;{initialize for first image done} for fitsY:=1+1+cropH to head.height-1-cropH do {skip outside "bad" pixels if mosaic mode. Don't use the pixel at borders, so crop is minimum 1 pixel} for fitsX:=1+1+cropW to head.width-1-cropW do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} x_new:=round(x_new_float+oversize);y_new:=round(y_new_float+oversize); if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin if img_loaded[0,fitsX-1,fitsY-1]>0.0001 then {not a black area around image} begin dummy:=1+minimum_distance_borders(fitsX,fitsY,head.width,head.height);{minimum distance borders} if img_temp[0,x_new,y_new]=0 then {blank pixel} begin for col:=0 to head.naxis3-1 do {all colors} img_average[col,x_new,y_new]:=img_loaded[col,fitsX-1,fitsY-1]+background_correction_center[col] +background_correction[col];{image loaded is already corrected with dark and flat}{NOTE: fits count from 1, image from zero} img_temp[0,x_new,y_new]:=dummy; end else begin {already pixel filled, try to make an average} for col:=0 to head.naxis3-1 do {all colors} begin median:=background_correction_center[col] +background_correction[col]+median_background(img_loaded,col,15,15,fitsX-1,fitsY-1);{find median value in sizeXsize matrix of img_loaded} if merge_overlap=false then {method 2} begin median2:=median_background(img_average,col,15,15,x_new,y_new);{find median value of the destignation img_average} delta_median:=median-median2; img_average[col,x_new,y_new]:= img_average[col,x_new,y_new]+ delta_median*(1-img_temp[0,x_new,y_new]{distance border}/(dummy+img_temp[0,x_new,y_new]));{adapt overlap} end else begin {method 1} value:=img_loaded[col,fitsX-1,fitsY-1]+background_correction_center[col]; local_sd(fitsX-1-15 ,fitsY-1-15, fitsX-1+15,fitsY-1+15,col,img_loaded, {var} noise,mean, iterations);{local noise recheck every 10 th pixel} maxlevel:=median+noise*5; if ((value<maxlevel) and (img_loaded[col,fitsX-1-1,fitsY-1]<maxlevel) and (img_loaded[col,fitsX-1+1,fitsY-1]<maxlevel) and (img_loaded[col,fitsX-1,fitsY-1-1]<maxlevel) and (img_loaded[col,fitsX-1,fitsY-1+1]<maxlevel) {check nearest pixels} ) then {not a star, prevent double stars at overlap area} img_average[col,x_new,y_new]:=+img_average[col,x_new,y_new]*img_temp[0,x_new,y_new]{distance border}/(dummy+img_temp[0,x_new,y_new]) +(value+background_correction[col])*dummy/(dummy+img_temp[0,x_new,y_new]);{calculate value between the existing and new value depending on BORDER DISTANCE} end; end; img_temp[0,x_new,y_new]:=dummy; end; end; end; end; end; progress_indicator(10+89*counter/length(files_to_process){(ListView1.items.count)},' Stacking');{show progress} finally end; end; if counter<>0 then begin head:=head_ref;{restore solution variable of reference image for annotation and mount pointer. Works only if not resized} head.height:=height_max; head.width:=width_max; setlength(img_loaded,head.naxis3,head.width,head.height);{new size} For fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin {pixel loop} tempval:=img_temp[0,fitsX,fitsY]; {if <>0 then something was written} for col:=0 to head.naxis3-1 do begin {colour loop} if tempval<>0 then img_loaded[col,fitsX,fitsY]:=img_average[col,fitsX,fitsY] {no divide} else begin { black spot filter or missing value filter due to image rotation} if ((fitsX>0) and (img_temp[0,fitsX-1,fitsY]<>0)) then img_loaded[col,fitsX,fitsY]:=img_loaded[col,fitsX-1,fitsY]{take nearest pixel x-1 as replacement} else if ((fitsY>0) and (img_temp[0,fitsX,fitsY-1]<>0)) then img_loaded[col,fitsX,fitsY]:=img_loaded[col,fitsX,fitsY-1]{take nearest pixel y-1 as replacement} else img_loaded[col,fitsX,fitsY]:=0;{clear img_loaded since it is resized} end; {black spot} end;{colour loop} end;{pixel loop} end; {counter<>0} end;{mosaic mode} end;{with stackmenu1} {arrays will be nilled later. This is done for early exits} end; procedure stack_sigmaclip(oversize,process_as_osc:integer; var files_to_process : array of TfileToDo; out counter : integer); {stack using sigma clip average} type tsolution = record solution_vectorX : solution_vector {array[0..2] of double}; solution_vectorY : solution_vector; cblack : double; end; var solutions : array of tsolution; fitsX,fitsY,c,width_max, height_max, old_width, old_height,x_new,y_new,col ,binning,oversizeV,max_stars : integer; background_correction, variance_factor, value,weightF,hfd_min : double; init, solution, use_star_alignment,use_manual_align,use_ephemeris_alignment, use_astrometry_internal,vector_based :boolean; warning : string; begin with stackmenu1 do begin {move often uses setting to booleans. Great speed improved if use in a loop and read many times} variance_factor:=sqr(strtofloat2(stackmenu1.sd_factor1.text)); hfd_min:=max(0.8 {two pixels},strtofloat2(stackmenu1.min_star_size_stacking1.caption){hfd});{to ignore hot pixels which are too small} max_stars:=strtoint2(stackmenu1.max_stars1.text);{maximum star to process, if so filter out brightest stars later} if max_stars=0 then max_stars:=500;{0 is auto for solving. No auto for stacking} use_star_alignment:=stackmenu1.use_star_alignment1.checked; use_manual_align:=stackmenu1.use_manual_alignment1.checked; use_ephemeris_alignment:=stackmenu1.use_ephemeris_alignment1.checked; use_astrometry_internal:=use_astrometry_internal1.checked; counter:=0; sum_exp:=0; sum_temp:=0; jd_sum:=0;{sum of Julian midpoints} jd_stop:=0;{end observations in Julian day} init:=false; background_correction:=0;{required for astrometric alignment} {light average} begin setlength(solutions,length(files_to_process)); init:=false; for c:=0 to length(files_to_process)-1 do if length(files_to_process[c].name)>0 then begin try { Do some lengthy operation } ListView1.Selected :=nil; {remove any selection} ListView1.ItemIndex := files_to_process[c].listviewindex;{show wich file is processed} Listview1.Items[files_to_process[c].listviewindex].MakeVisible(False);{scroll to selected item} filename2:=files_to_process[c].name; {load image} Application.ProcessMessages; if esc_pressed then begin memo2_message('ESC pressed.');exit;end; if load_fits(filename2,true {light},true,init=false {update memo only for first ref img},0,head,img_loaded)=false then begin memo2_message('Error loading '+filename2);exit;end; if init=false then {first image} begin old_width:=head.width; old_height:=head.height; head_ref:=head;{backup solution} initialise_var1;{set variables correct} initialise_var2;{set variables correct} if ((bayerpat='') and (process_as_osc=2 {forced})) then if stackmenu1.bayer_pattern1.Text='auto' then memo2_message('█ █ █ █ █ █ Warning, Bayer colour pattern not in the header! Check colours and if wrong set Bayer pattern manually in tab "stack alignment". █ █ █ █ █ █') else if test_bayer_matrix(img_loaded)=false then memo2_message('█ █ █ █ █ █ Warning, grayscale image converted to colour! Un-check option "convert OSC to colour". █ █ █ █ █ █'); end else begin {second, third, ... image} if ((old_width<>head.width) or (old_height<>head.height)) then memo2_message('█ █ █ █ █ █ Warning different size image!'); if head.naxis3>length(img_average) {head.naxis3} then begin memo2_message('█ █ █ █ █ █ Abort!! Can'+#39+'t combine mono and colour files.'); exit;end; end; apply_dark_and_flat(img_loaded);{apply dark, flat if required, renew if different head.exposure or ccd temp} {these global variables are passed-on in procedure to protect against overwriting} memo2_message('Adding light file: '+inttostr(c+1)+'-'+nr_selected1.caption+' "'+filename2+' dark compensated to light average. Using '+inttostr(head.dark_count)+' dark(s), '+inttostr(head.flat_count)+' flat(s), '+inttostr(head.flatdark_count)+' flat-dark(s)') ; Application.ProcessMessages; if esc_pressed then exit; if process_as_osc>0 then {do demosaic bayer} begin if head.naxis3>1 then memo2_message('█ █ █ █ █ █ Warning, light is already in colour ! Will skip demosaic. █ █ █ █ █ █') else demosaic_bayer(img_loaded); {convert OSC image to colour} {head.naxis3 is now 3} end; if init=false then binning:=report_binning(head.height);{select binning based on the height of the first light. Do this after demosaic since SuperPixel also bins} if ((init=false ) and (use_astrometry_internal=false)) then {first image and not astrometry_internal} begin if ((use_manual_align) or (use_ephemeris_alignment)) then begin referenceX:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {reference offset} referenceY:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); {reference offset} end else begin bin_and_find_stars(img_loaded, binning,1 {cropping},hfd_min,max_stars,true{update hist},starlist1,warning);{bin, measure background, find stars} find_quads(starlist1,0,quad_smallest,quad_star_distances1);{find quads for reference image} pedestal_s:=cblack;{correct for difference in background, use cblack from first image as reference. Some images have very high background values up to 32000 with 6000 noise, so fixed pedestal_s of 1000 is not possible} if pedestal_s<500 then pedestal_s:=500;{prevent image noise could go below zero} background_correction:=pedestal_s-cblack; head.datamax_org:=head.datamax_org+background_correction; if head.datamax_org>$FFFF then head.datamax_org:=$FFFF; {note head.datamax_org is already corrected in apply dark} end; end; if init=false then {init} begin if oversize<0 then {shrink, adapt in ratio} begin oversize:=max(oversize,-round((head.width-100)/2) );{minimum image width is 100} oversizeV:=round(oversize*head.height/head.width);{vertical} height_max:=head.height+oversizeV*2; end else begin oversizeV:=oversize; height_max:=head.height+oversize*2; end; width_max:=head.width+oversize*2; setlength(img_average,head.naxis3,width_max,height_max); setlength(img_temp,head.naxis3,width_max,height_max); for fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do for col:=0 to head.naxis3-1 do begin img_average[col,fitsX,fitsY]:=0; {clear img_average} img_temp[col,fitsX,fitsY]:=0; {clear img_temp} end; end;{init, c=0} solution:=true; if use_astrometry_internal then sincos(head.dec0,SIN_dec0,COS_dec0) {do this in advance since it is for each pixel the same} else begin {align using star match} if init=true then {second image} begin if ((use_manual_align) or (use_ephemeris_alignment)) then begin {manual alignment} solution_vectorX[2]:=referenceX-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {calculate correction} solution_vectorY[2]:=referenceY-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); memo2_message('Solution x:=x+'+floattostr6(solution_vectorX[2])+', y:=y+'+floattostr6(solution_vectorY[2])); end else begin{internal alignment} bin_and_find_stars(img_loaded, binning,1 {cropping},hfd_min,max_stars,true{update hist},starlist2,warning);{bin, measure background, find stars} background_correction:=pedestal_s-cblack;{correct later for difference in background} head.datamax_org:=head.datamax_org+background_correction; if head.datamax_org>$FFFF then head.datamax_org:=$FFFF; {note head.datamax_org is already corrected in apply dark} find_quads(starlist2,0,quad_smallest,quad_star_distances2);{find star quads for new image} if find_offset_and_rotation(3,strtofloat2(stackmenu1.quad_tolerance1.text)) then {find difference between ref image and new image} begin memo2_message(inttostr(nr_references)+' of '+ inttostr(nr_references2)+' quads selected matching within '+stackmenu1.quad_tolerance1.text+' tolerance.' +' Solution x:='+floattostr6(solution_vectorX[0])+'*x+ '+floattostr6(solution_vectorX[1])+'*y+ '+floattostr6(solution_vectorX[2]) +', y:='+floattostr6(solution_vectorY[0])+'*x+ '+floattostr6(solution_vectorY[1])+'*y+ '+floattostr6(solution_vectorY[2]) ); solutions[c].solution_vectorX:= solution_vectorX;{store solutions} solutions[c].solution_vectorY:= solution_vectorY; solutions[c].cblack:=cblack; end else begin memo2_message('Not enough quad matches <3 or inconsistent solution, skipping this image.'); files_to_process[c].name:=''; {remove file from list} solution:=false; ListView1.Items.item[files_to_process[c].listviewindex].SubitemImages[L_result]:=6;{mark 3th column with exclamation} ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_result]:='no solution';{no stack result} end; end;{internal alignment} end else begin {first image} reset_solution_vectors(1);{no influence on the first image} solutions[c].solution_vectorX:= solution_vectorX; {store solutions for later} solutions[c].solution_vectorY:= solution_vectorY; solutions[c].cblack:=cblack; end; end; init:=true;{initialize for first image done} if solution then begin inc(counter); sum_exp:=sum_exp+head.exposure; sum_temp:=sum_temp+head.set_temperature; weightF:=calc_weightF;{calculate weighting factor for different exposure duration and gain} date_to_jd(head.date_obs,head.exposure);{convert head.date_obs string and head.exposure time to global variables jd_start (julian day start head.exposure) and jd_mid (julian day middle of the head.exposure)} if jd_start>jd_stop then jd_stop:=jd_start;{find latest start time} jd_sum:=jd_sum+jd_mid;{sum julian days of images at midpoint head.exposure} vector_based:=((use_star_alignment) or (use_manual_align) or (use_ephemeris_alignment)); if ((vector_based=false) and (a_order=0)) then {no SIP from astronomy.net} begin astrometric_to_vector;{convert astrometric solution to vector solution} vector_based:=true; end; for fitsY:=1 to head.height do {skip outside "bad" pixels if mosaic mode} for fitsX:=1 to head.width do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} x_new:=round(x_new_float+oversize);y_new:=round(y_new_float+oversizeV); if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin for col:=0 to head.naxis3-1 do begin img_average[col,x_new,y_new]:=img_average[col,x_new,y_new]+ (img_loaded[col,fitsX-1,fitsY-1]+background_correction)*weightF;{Note fits count from 1, image from zero} img_temp[col,x_new,y_new]:=img_temp[col,x_new,y_new]+weightF {norm 1};{count the number of image pixels added=samples} end; end; end; end; progress_indicator(10+round(0.3333*90*(counter)/length(files_to_process){(ListView1.items.count)}),' ■□□');{show progress} finally end; end;{try} if counter<>0 then For fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do for col:=0 to head.naxis3-1 do if img_temp[col,fitsX,fitsY]<>0 then img_average[col,fitsX,fitsY]:=img_average[col,fitsX,fitsY]/img_temp[col,fitsX,fitsY];{scale to one image by diving by the number of pixels added} end; {light average} {standard deviation of light images} {stack using sigma clip average} begin {standard deviation} counter:=0; init:=false; for c:=0 to length(files_to_process)-1 do if length(files_to_process[c].name)>0 then begin try { Do some lengthy operation } ListView1.Selected :=nil; {remove any selection} ListView1.ItemIndex := files_to_process[c].listviewindex;{show wich file is processed} Listview1.Items[files_to_process[c].listviewindex].MakeVisible(False); {scroll to selected item} filename2:=files_to_process[c].name; {load image} Application.ProcessMessages; if esc_pressed then begin memo2_message('ESC pressed.');exit;end; if load_fits(filename2,true {light},true,init=false {update memo only for first ref img},0,head,img_loaded)=false then begin memo2_message('Error loading '+filename2);exit;end; if init=false then begin {not required. Done in first step} end; apply_dark_and_flat(img_loaded);{apply dark, flat if required, renew if different head.exposure or ccd temp} {these global variables are passed-on in procedure to protect against overwriting} memo2_message('Calculating pixels σ of light file '+inttostr(c+1)+'-'+nr_selected1.caption+' '+filename2+' Using '+inttostr(head.dark_count)+' dark(s), '+inttostr(head.flat_count)+' flat(s), '+inttostr(head.flatdark_count)+' flat-dark(s)') ; Application.ProcessMessages; if esc_pressed then exit; if process_as_osc>0 then {do demosaic bayer} begin if head.naxis3>1 then memo2_message('█ █ █ █ █ █ Warning, light is already in colour ! Will skip demosaic. █ █ █ █ █ █') else demosaic_bayer(img_loaded); {convert OSC image to colour} {head.naxis3 is now 3} end; if init=false then {init (2) for standard deviation step} begin setlength(img_variance,head.naxis3,width_max,height_max);{mono} for fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do begin for col:=0 to head.naxis3-1 do img_variance[col,fitsX,fitsY]:=0; {clear img_average} end; end;{c=0} inc(counter); if use_astrometry_internal then sincos(head.dec0,SIN_dec0,COS_dec0) {do this in advance since it is for each pixel the same} else begin {align using star match, read saved solution vectors} if ((use_manual_align) or (use_ephemeris_alignment)) then begin if init=false then begin reset_solution_vectors(1);{no influence on the first image} end else begin solution_vectorX[2]:=referenceX-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {calculate correction} solution_vectorY[2]:=referenceY-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); end; end else begin {reuse solution from first step average} solution_vectorX:=solutions[c].solution_vectorX; {restore solution} solution_vectorY:=solutions[c].solution_vectorY; cblack:=solutions[c].cblack; background_correction:=pedestal_s-cblack;{correction for difference in background} head.datamax_org:=head.datamax_org+background_correction; if head.datamax_org>$FFFF then head.datamax_org:=$FFFF; {note head.datamax_org is already corrected in apply dark} end; end; init:=true;{initialize for first image done} weightF:=calc_weightF;{calculate weighting factor for different exposure duration and gain} vector_based:=((use_star_alignment) or (use_manual_align) or (use_ephemeris_alignment)); if ((vector_based=false) and (a_order=0)) then {no SIP from astronomy.net} begin astrometric_to_vector;{convert astrometric solution to vector solution} vector_based:=true; end; for fitsY:=1 to head.height do {skip outside "bad" pixels if mosaic mode} for fitsX:=1 to head.width do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} x_new:=round(x_new_float+oversize);y_new:=round(y_new_float+oversizeV); if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin for col:=0 to head.naxis3-1 do img_variance[col,x_new,y_new]:=img_variance[col,x_new,y_new] + sqr( (img_loaded[col,fitsX-1,fitsY-1]+ background_correction)*weightF - img_average[col,x_new,y_new]); {Without flats, sd in sqr, work with sqr factors to avoid sqrt functions for speed} end; end; progress_indicator(10+30+round(0.33333*90*(counter)/length(files_to_process){(ListView1.items.count)}),' ■■□');{show progress} finally end; end;{try} if counter<>0 then For fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do for col:=0 to head.naxis3-1 do if img_temp[col,fitsX,fitsY]<>0 then {reuse the img_temp from light average} img_variance[col,fitsX,fitsY]:=1+img_variance[col,fitsX,fitsY]/img_temp[col,fitsX,fitsY]; {the extra 1 is for saturated images giving a SD=0}{scale to one image by diving by the number of pixels tested} end; {standard deviation of light images} {throw out the outliers of light-dark images} {stack using sigma clip average} begin counter:=0; init:=false; for c:=0 to length(files_to_process)-1 do if length(files_to_process[c].name)>0 then begin try { Do some lengthy operation } ListView1.Selected :=nil; {remove any selection} ListView1.ItemIndex := files_to_process[c].listviewindex;{show wich file is processed} Listview1.Items[files_to_process[c].listviewindex].MakeVisible(False);{scroll to selected item} filename2:=files_to_process[c].name; {load file} Application.ProcessMessages; if esc_pressed then begin memo2_message('ESC pressed.');exit;end; if load_fits(filename2,true {light},true,init=false {update memo only for first ref img},0,head,img_loaded)=false then begin memo2_message('Error loading '+filename2);exit;end; apply_dark_and_flat(img_loaded);{apply dark, flat if required, renew if different head.exposure or ccd temp} memo2_message('Combining '+inttostr(c+1)+'-'+nr_selected1.caption+' "'+filename2+'", ignoring outliers. Using '+inttostr(head.dark_count)+' dark(s), '+inttostr(head.flat_count)+' flat(s), '+inttostr(head.flatdark_count)+' flat-dark(s)') ; Application.ProcessMessages; if esc_pressed then exit; if process_as_osc>0 then {do demosaic bayer} begin if head.naxis3>1 then memo2_message('█ █ █ █ █ █ Warning, light is already in colour ! Will skip demosaic. █ █ █ █ █ █') else demosaic_bayer(img_loaded); {convert OSC image to colour} {head.naxis3 is now 3} end; if init=false then {init, (3) step throw outliers out} begin setlength(img_temp,head.naxis3,width_max,height_max); setlength(img_final,head.naxis3,width_max,height_max); for fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do begin for col:=0 to head.naxis3-1 do begin img_temp[col,fitsX,fitsY]:=0; {clear img_temp} img_final[col,fitsX,fitsY]:=0; {clear img_temp} end; end; //old_width:=head.width; //old_height:=head.height; end;{init} inc(counter); if use_astrometry_internal then sincos(head.dec0,SIN_dec0,COS_dec0) {do this in advance since it is for each pixel the same} else begin {align using star match, read saved solution vectors} if ((use_manual_align) or (use_ephemeris_alignment)) then begin if init=false then {3} begin reset_solution_vectors(1);{no influence on the first image} end else begin solution_vectorX[2]:=referenceX-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {calculate correction} solution_vectorY[2]:=referenceY-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); end; end else begin {reuse solution from first step average} solution_vectorX:=solutions[c].solution_vectorX; {restore solution} solution_vectorY:=solutions[c].solution_vectorY; cblack:=solutions[c].cblack; background_correction:=pedestal_s-cblack;{correct for difference in background} head.datamax_org:=head.datamax_org+background_correction; if head.datamax_org>$FFFF then head.datamax_org:=$FFFF; {note head.datamax_org is already corrected in apply dark} end; end; init:=true;{initialize for first image done} weightF:=calc_weightF;{calculate weighting factor for different exposure duration and gain} vector_based:=((use_star_alignment) or (use_manual_align) or (use_ephemeris_alignment)); if ((vector_based=false) and (a_order=0)) then {no SIP from astronomy.net} begin astrometric_to_vector;{convert astrometric solution to vector solution} vector_based:=true; end; for fitsY:=1 to head.height do for fitsX:=1 to head.width do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} x_new:=round(x_new_float+oversize);y_new:=round(y_new_float+oversizeV); if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin for col:=0 to head.naxis3-1 do {do all colors} begin value:=(img_loaded[col,fitsX-1,fitsY-1]+ background_correction)*weightF; if sqr (value - img_average[col,x_new,y_new])< variance_factor*{sd sqr}( img_variance[col,x_new,y_new]) then {not an outlier} begin img_final[col,x_new,y_new]:=img_final[col,x_new,y_new]+ value;{dark and flat, flat dark already applied} img_temp[col,x_new,y_new]:=img_temp[col,x_new,y_new]+weightF {norm 1};{count the number of image pixels added=samples} end; end; end; end; progress_indicator(10+60+round(0.33333*90*(counter)/length(files_to_process){(ListView1.items.count)}),' ■■■');{show progress} finally end; end; {scale to number of pixels} if counter<>0 then begin head_ref.naxis3:= head.naxis3; {store colour info in reference header. could be modified by OSC conversion} head_ref.naxis:= head.naxis; {store colour info in reference header} head_ref.datamax_org:= head.datamax_org; {for 8 bit files, they are now 500 minimum} head:=head_ref;{restore solution variable of reference image for annotation and mount pointer. Works only if not oversized} head.height:=height_max; head.width:=width_max; setlength(img_loaded,head.naxis3,head.width,head.height);{new size} for col:=0 to head.naxis3-1 do {do one or three colors} {compensate for number of pixel values added per position} For fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do if img_temp[col,fitsX,fitsY]<>0 then img_loaded[col,fitsX,fitsY]:=img_final[col,fitsX,fitsY]/img_temp[col,fitsX,fitsY] {scale to one image by diving by the number of pixels added} else begin { black spot filter. Note for this version img_temp is counting for each color since they could be different} if ((fitsX>0) and (fitsY>0)) then {black spot filter, fix black spots which show up if one image is rotated} begin if ((img_temp[col,fitsX-1,fitsY]<>0){and (img_temp[col,fitsX,fitsY-1]<>0)}{keep borders nice for last pixel right}) then img_loaded[col,fitsX,fitsY]:=img_loaded[col,fitsX-1,fitsY]{take nearest pixel x-1 as replacement} else if img_temp[col,fitsX,fitsY-1]<>0 then img_loaded[col,fitsX,fitsY]:=img_loaded[col,fitsX,fitsY-1]{take nearest pixel y-1 as replacement} else img_loaded[col,fitsX,fitsY]:=0;{clear img_loaded since it is resized} end {fill black spots} else img_loaded[col,fitsX,fitsY]:=0;{clear img_loaded since it is resized} end; {black spot filter} end;{counter<>0} //restore_solution(true);{restore solution variable of reference image for annotation and mount pointer} end;{throw out the outliers of light-dark images} end;{with stackmenu1} {image arrays will be nilled later. This is done for early exits} solutions:=nil; end; {stack using sigma clip average} procedure calibration_and_alignment(oversize,process_as_osc :integer; var files_to_process : array of TfileToDo; out counter : integer); {calibration_and_alignment only} var fitsX,fitsY,c,width_max, height_max, old_width, old_height,x_new,y_new,col, binning, oversizeV,max_stars : integer; background_correction, hfd_min : double; init, solution, use_star_alignment,use_manual_align,use_ephemeris_alignment, use_astrometry_internal,vector_based :boolean; warning : string; begin with stackmenu1 do begin {move often uses setting to booleans. Great speed improved if use in a loop and read many times} hfd_min:=max(0.8 {two pixels},strtofloat2(stackmenu1.min_star_size_stacking1.caption){hfd});{to ignore hot pixels which are too small} max_stars:=strtoint2(stackmenu1.max_stars1.text);{maximum star to process, if so filter out brightest stars later} if max_stars=0 then max_stars:=500;{0 is auto for solving. No auto for stacking} use_star_alignment:=stackmenu1.use_star_alignment1.checked; use_manual_align:=stackmenu1.use_manual_alignment1.checked; use_ephemeris_alignment:=stackmenu1.use_ephemeris_alignment1.checked; use_astrometry_internal:=use_astrometry_internal1.checked; init:=false; background_correction:=0;{required for astrometric alignment} {light average} begin counter:=0; sum_exp:=0; init:=false; for c:=0 to length(files_to_process)-1 do if length(files_to_process[c].name)>0 then begin try { Do some lengthy operation } ListView1.Selected :=nil; {remove any selection} ListView1.ItemIndex := files_to_process[c].listviewindex;{show wich file is processed} Listview1.Items[files_to_process[c].listviewindex].MakeVisible(False);{scroll to selected item} filename2:=files_to_process[c].name; {load image} Application.ProcessMessages; if esc_pressed then begin memo2_message('ESC pressed.');exit;end; if load_fits(filename2,true {light},true,init=false {update memo for saving},0,head,img_loaded)=false then begin memo2_message('Error loading '+filename2);exit;end; if init=false then {first image} begin old_width:=head.width; old_height:=head.height; head_ref:=head;{backup solution} initialise_var1;{set variables correct} initialise_var2;{set variables correct} if ((bayerpat='') and (process_as_osc=2 {forced})) then if stackmenu1.bayer_pattern1.Text='auto' then memo2_message('█ █ █ █ █ █ Warning, Bayer colour pattern not in the header! Check colours and if wrong set Bayer pattern manually in tab "stack alignment". █ █ █ █ █ █') else if test_bayer_matrix(img_loaded)=false then memo2_message('█ █ █ █ █ █ Warning, grayscale image converted to colour! Un-check option "convert OSC to colour". █ █ █ █ █ █'); end else begin {second, third ... image} if ((old_width<>head.width) or (old_height<>head.height)) then memo2_message('█ █ █ █ █ █ Warning different size image!'); if head.naxis3>length(img_average) {head.naxis3} then begin memo2_message('█ █ █ █ █ █ Abort!! Can'+#39+'t combine mono and colour files.'); exit;end; end; apply_dark_and_flat(img_loaded);{apply dark, flat if required, renew if different head.exposure or ccd temp} {these global variables are passed-on in procedure to protect against overwriting} memo2_message('Calibrating and aligning file: '+inttostr(c+1)+'-'+nr_selected1.caption+' "'+filename2+' dark compensated to light average. Using '+inttostr(head.dark_count)+' dark(s), '+inttostr(head.flat_count)+' flat(s), '+inttostr(head.flatdark_count)+' flat-dark(s)') ; Application.ProcessMessages; if esc_pressed then exit; if process_as_osc>0 then {do demosaic bayer} begin if head.naxis3>1 then memo2_message('█ █ █ █ █ █ Warning, light is already in colour ! Will skip demosaic. █ █ █ █ █ █') else demosaic_bayer(img_loaded); {convert OSC image to colour} {head.naxis3 is now 3} end else if bayerpat<>'' then memo2_message('█ █ █ █ █ █ Warning, alignment (shifting, rotating) will ruin Bayer pattern!! Select calibrate only for photometry or checkmark "Convert OSC image to colour" █ █ █ █ █ █'); if init=false then binning:=report_binning(head.height);{select binning based on the height of the first light. Do this after demosaic since SuperPixel also bins} if ((init=false ) and (use_astrometry_internal=false)) then {first image and not astrometry_internal} begin if ((use_manual_align) or (use_ephemeris_alignment)) then begin referenceX:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {reference offset} referenceY:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); {reference offset} end else begin bin_and_find_stars(img_loaded, binning,1 {cropping},hfd_min,max_stars,true{update hist},starlist1,warning);{bin, measure background, find stars} find_quads(starlist1,0,quad_smallest,quad_star_distances1);{find quads for reference image} pedestal_s:=cblack;{correct for difference in background, use cblack from first image as reference. Some images have very high background values up to 32000 with 6000 noise, so fixed pedestal_s of 1000 is not possible} if pedestal_s<500 then pedestal_s:=500;{prevent image noise could go below zero} background_correction:=pedestal_s-cblack; head.datamax_org:=head.datamax_org+background_correction; if head.datamax_org>$FFFF then head.datamax_org:=$FFFF; {note head.datamax_org is already corrected in apply dark} end; end; if init=false then {init} begin if oversize<0 then {shrink a lot, adapt in ratio} begin oversize:=max(oversize,-round((head.width-100)/2) );{minimum image width is 100} oversizeV:=round(oversize*head.height/head.width);{vertical shrinkage in pixels} height_max:=head.height+oversizeV*2; end else begin oversizeV:=oversize; height_max:=head.height+oversize*2; end; width_max:=head.width+oversize*2; setlength(img_average,head.naxis3,width_max,height_max); setlength(img_temp,head.naxis3,width_max,height_max); {clearing image_average and img_temp is done for each image. See below} if ((use_manual_align) or (use_ephemeris_alignment)) then begin referenceX:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {reference offset} referenceY:=strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); {reference offset} end; end;{init, c=0} {clearing image_average and img_temp is done for each image} for fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do for col:=0 to head.naxis3-1 do begin img_average[col,fitsX,fitsY]:=0; {clear img_average} img_temp[col,fitsX,fitsY]:=0; {clear img_temp} end; solution:=true; if use_astrometry_internal then sincos(head.dec0,SIN_dec0,COS_dec0) {do this in advance since it is for each pixel the same} else begin {align using star match} if init=true then {second image} begin if ((use_manual_align) or (use_ephemeris_alignment)) then begin {manual alignment} solution_vectorX[2]:=referenceX-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]); {calculate correction} solution_vectorY[2]:=referenceY-strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]); memo2_message('Solution x:=x+'+floattostr6(solution_vectorX[2])+', y:=y+'+floattostr6(solution_vectorY[2])); end else begin{internal alignment} bin_and_find_stars(img_loaded, binning,1 {cropping},hfd_min,max_stars,true{update hist},starlist2,warning);{bin, measure background, find stars} background_correction:=pedestal_s-cblack; head.datamax_org:=head.datamax_org+background_correction; if head.datamax_org>$FFFF then head.datamax_org:=$FFFF; {note head.datamax_org is already corrected in apply dark} find_quads(starlist2,0,quad_smallest,quad_star_distances2);{find star quads for new image} if find_offset_and_rotation(3,strtofloat2(stackmenu1.quad_tolerance1.text)) then {find difference between ref image and new image} memo2_message(inttostr(nr_references)+' of '+ inttostr(nr_references2)+' quads selected matching within '+stackmenu1.quad_tolerance1.text+' tolerance.' +' Solution x:='+floattostr6(solution_vectorX[0])+'*x+ '+floattostr6(solution_vectorX[1])+'*y+ '+floattostr6(solution_vectorX[2]) +', y:='+floattostr6(solution_vectorY[0])+'*x+ '+floattostr6(solution_vectorY[1])+'*y+ '+floattostr6(solution_vectorY[2]) ) else begin memo2_message('Not enough quad matches <3 or inconsistent solution, skipping this image.'); files_to_process[c].name:=''; {remove file from list} solution:=false; ListView1.Items.item[files_to_process[c].listviewindex].SubitemImages[L_result]:=6;{mark 3th column with exclaimation} ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[2]:='no solution';{no stack result} end; end;{internal alignment} end else reset_solution_vectors(1);{no influence on the first image} end; init:=true;{initialize for first image done} if solution then begin inc(counter); vector_based:=((use_star_alignment) or (use_manual_align) or (use_ephemeris_alignment)); if ((vector_based=false) and (a_order=0)) then {no SIP from astronomy.net} begin astrometric_to_vector;{convert astrometric solution to vector solution} vector_based:=true; end; for fitsY:=1 to head.height do {skip outside "bad" pixels if mosaic mode} for fitsX:=1 to head.width do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} x_new:=round(x_new_float+oversize);y_new:=round(y_new_float+oversizeV); if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin for col:=0 to head.naxis3-1 do begin img_average[col,x_new,y_new]:=img_average[col,x_new,y_new]+ img_loaded[col,fitsX-1,fitsY-1]+background_correction;{Note fits count from 1, image from zero} img_temp[col,x_new,y_new]:=img_temp[col,x_new,y_new]+1;{count the number of image pixels added=samples} end; end; end; end; {scale to number of pixels} head.height:=height_max; head.width:=width_max; setlength(img_loaded,head.naxis3,head.width,head.height);{new size} for col:=0 to head.naxis3-1 do {do one or three colors} {compensate for number of pixel values added per position} For fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin if img_temp[col,fitsX,fitsY]<>0 then img_loaded[col,fitsX,fitsY]:=img_average[col,fitsX,fitsY]/img_temp[col,fitsX,fitsY] {scale to one image by diving by the number of pixels added} else begin { black spot filter. Note for this version img_temp is counting for each color since they could be different} if ((fitsX>0) and (fitsY>0)) then {black spot filter, fix black spots which show up if one image is rotated} begin if ((img_temp[col,fitsX-1,fitsY]<>0){and (img_temp[col,fitsX,fitsY-1]<>0)}{keep borders nice for last pixel right}) then img_loaded[col,fitsX,fitsY]:=img_loaded[col,fitsX-1,fitsY]{take nearest pixel x-1 as replacement} else if img_temp[col,fitsX,fitsY-1]<>0 then img_loaded[col,fitsX,fitsY]:=img_loaded[col,fitsX,fitsY-1]{take nearest pixel y-1 as replacement} else img_loaded[col,fitsX,fitsY]:=0;{clear img_loaded since it is resized} end {fill black spots} else img_loaded[col,fitsX,fitsY]:=0;{clear img_loaded since it is resized} end; {black spot filter} end; {save} filename2:=ChangeFileExt(Filename2,'_aligned.fit');{rename} if head.cd1_1<>0 then begin {quick and dirty method to roughly correct existing solutions} head.crpix1:=solution_vectorX[0]*(head.crpix1-1)+solution_vectorX[1]*(head.crpix2-1)+solution_vectorX[2];{correct for marker_position at ra_dec position} head.crpix2:=solution_vectorY[0]*(head.crpix1-1)+solution_vectorY[1]*(head.crpix2-1)+solution_vectorY[2]; update_float ('CRPIX1 =',' / X of reference pixel ' ,head.crpix1); update_float ('CRPIX2 =',' / Y of reference pixel ' ,head.crpix2); update_text ('COMMENT S',' After alignment only CRPIX1 & CRPIX2 existing solution corrected.'); end; update_text ('COMMENT 1',' Calibrated & aligned by ASTAP. www.hnsky.org'); update_text ('CALSTAT =',#39+head.calstat+#39); {calibration status} add_integer('DARK_CNT=',' / Darks used for luminance. ' ,head.dark_count);{for interim lum,red,blue...files. Compatible with master darks} add_integer('FLAT_CNT=',' / Flats used for luminance. ' ,head.flat_count);{for interim lum,red,blue...files. Compatible with master flats} add_integer('BIAS_CNT=',' / Flat-darks used for luminance. ' ,head.flatdark_count);{for interim lum,red,blue...files. Compatible with master flats} { ASTAP keyword standard:} { interim files can contain keywords: head.exposure, FILTER, LIGHT_CNT,DARK_CNT,FLAT_CNT, BIAS_CNT, SET_TEMP. These values are written and read. Removed from final stacked file.} { final files contains, LUM_EXP,LUM_CNT,LUM_DARK, LUM_FLAT, LUM_BIAS, RED_EXP,RED_CNT,RED_DARK, RED_FLAT, RED_BIAS.......These values are not read} if nrbits=16 then begin if save_fits(img_loaded,filename2,16,true)=false then exit;//exit if save error end else begin if save_fits(img_loaded,filename2,-32,true)=false then exit;//exit if save error end; memo2_message('New aligned image created: '+filename2); report_results('?',inttostr(round(head.exposure)),0,999 {color icon});{report result in tab result using modified filename2} progress_indicator(10+round(90*(counter)/length(files_to_process){(ListView1.items.count)}),'Cal');{show progress} finally end; end;{try} end;{} end; {with stackmenu1} plot_fits(mainwindow.image1,true,true);{update to last image, activate memo1} {arrays will be nilled later. This is done for early exits} end; {calibration and alignment} end. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/astap_mac.lpi�����������������������������������������������������������������0000644�0001751�0001751�00000022166�14344743400�016142� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="11"/> <PathDelim Value="\"/> <General> <Flags> <MainUnitHasUsesSectionForAllUnits Value="False"/> <MainUnitHasCreateFormStatements Value="False"/> <MainUnitHasTitleStatement Value="False"/> </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> <Title Value="astap"/> <Scaled Value="True"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> <XPManifest> <DpiAware Value="True"/> </XPManifest> </General> <VersionInfo> <UseVersionInfo Value="True"/> <MinorVersionNr Value="9"/> <RevisionNr Value="3"/> <BuildNr Value="4"/> <Attributes pvaPreRelease="True"/> <StringTable CompanyName="www.hnsky.org" FileDescription="Astrometric STAcking Program" LegalCopyright="Han Kleijn" OriginalFilename="astap.exe" ProductName="ASTAP" ProductVersion="File version refers to the interface standard"/> </VersionInfo> <MacroValues Count="1"> <Macro1 Name="LCLWidgetType" Value="cocoa"/> </MacroValues> <BuildModes Count="3"> <Item1 Name="Default" Default="True"/> <Item2 Name="Debug"> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <Target> <Filename Value="astap.exe"/> </Target> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="C:\astap.fpc"/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> <IncludeAssertionCode Value="True"/> </SyntaxOptions> </Parsing> <CodeGeneration> <Checks> <IOChecks Value="True"/> <RangeChecks Value="True"/> <OverflowChecks Value="True"/> <StackChecks Value="True"/> </Checks> <VerifyObjMethodCallValidity Value="True"/> </CodeGeneration> <Linking> <Debugging> <DebugInfoType Value="dsDwarf2Set"/> <UseExternalDbgSyms Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-dBorland -dVer150 -dDelphi7"/> <OtherDefines Count="5"> <Define0 Value="Borland"/> <Define1 Value="Ver150"/> <Define2 Value="Delphi7"/> <Define3 Value="Compiler6_Up"/> <Define4 Value="PUREPASCAL"/> </OtherDefines> </Other> </CompilerOptions> </Item2> <Item3 Name="Release"> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <Target> <Filename Value="astap.exe"/> </Target> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="C:\astap.fpc"/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> </SyntaxOptions> </Parsing> <CodeGeneration> <SmartLinkUnit Value="True"/> <Optimizations> <OptimizationLevel Value="3"/> </Optimizations> </CodeGeneration> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> </Debugging> <LinkSmart Value="True"/> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-dBorland -dVer150 -dDelphi7"/> <OtherDefines Count="5"> <Define0 Value="Borland"/> <Define1 Value="Ver150"/> <Define2 Value="Delphi7"/> <Define3 Value="Compiler6_Up"/> <Define4 Value="PUREPASCAL"/> </OtherDefines> </Other> </CompilerOptions> </Item3> <SharedMatrixOptions Count="1"> <Item1 ID="323630785397" Modes="Default" Type="IDEMacro" MacroName="LCLWidgetType" Value="cocoa"/> </SharedMatrixOptions> </BuildModes> <PublishOptions> <Version Value="2"/> </PublishOptions> <RunParams> <FormatVersion Value="2"/> <Modes Count="1"> <Mode0 Name="default"/> </Modes> </RunParams> <RequiredPackages Count="2"> <Item1> <PackageName Value="FCL"/> </Item1> <Item2> <PackageName Value="LCL"/> </Item2> </RequiredPackages> <Units Count="16"> <Unit0> <Filename Value="astap.lpr"/> <IsPartOfProject Value="True"/> </Unit0> <Unit1> <Filename Value="astap_main.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="mainwindow"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit1> <Unit2> <Filename Value="unit_stack.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="stackmenu1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit2> <Unit3> <Filename Value="unit_tiff.pas"/> <IsPartOfProject Value="True"/> </Unit3> <Unit4> <Filename Value="unit_gaussian_blur.pas"/> <IsPartOfProject Value="True"/> </Unit4> <Unit5> <Filename Value="unit_star_align.pas"/> <IsPartOfProject Value="True"/> </Unit5> <Unit6> <Filename Value="unit_annotation.pas"/> <IsPartOfProject Value="True"/> </Unit6> <Unit7> <Filename Value="unit_thumbnail.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="thumbnails1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit7> <Unit8> <Filename Value="unit_xisf.pas"/> <IsPartOfProject Value="True"/> </Unit8> <Unit9> <Filename Value="unit_stack_routines.pas"/> <IsPartOfProject Value="True"/> </Unit9> <Unit10> <Filename Value="unit_inspector_plot.pas"/> <IsPartOfProject Value="True"/> </Unit10> <Unit11> <Filename Value="unit_hjd.pas"/> <IsPartOfProject Value="True"/> </Unit11> <Unit12> <Filename Value="unit_live_stacking.pas"/> <IsPartOfProject Value="True"/> </Unit12> <Unit13> <Filename Value="unit_image_sharpness.pas"/> <IsPartOfProject Value="True"/> </Unit13> <Unit14> <Filename Value="unit_asteroid.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="form_asteroids1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit14> <Unit15> <Filename Value="unit_astrometry_net.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="form_astrometry_net1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit15> </Units> </ProjectOptions> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <Target> <Filename Value="astap"/> </Target> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="."/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> </SyntaxOptions> </Parsing> <CodeGeneration> <TargetCPU Value="x86_64"/> </CodeGeneration> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> <UseExternalDbgSyms Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-XX -Si -vh"/> </Other> </CompilerOptions> <Debugging> <Exceptions Count="11"> <Item1> <Name Value="EAbort"/> </Item1> <Item2> <Name Value="ECodetoolError"/> </Item2> <Item3> <Name Value="EFOpenError"/> </Item3> <Item4> <Name Value="EReadError"/> </Item4> <Item5> <Name Value="ERangeError"/> </Item5> <Item6> <Name Value="RunError(216)"/> </Item6> <Item7> <Name Value="EAccessViolation"/> </Item7> <Item8> <Name Value="RunError(201)"/> </Item8> <Item9> <Name Value="RunError(219)"/> </Item9> <Item10> <Name Value="Exception"/> </Item10> <Item11> <Name Value="EOutOfMemory"/> </Item11> </Exceptions> </Debugging> </CONFIG> ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_astrometric_solving.pas��������������������������������������������������0000644�0001751�0001751�00000157035�14344743400�021351� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_astrometric_solving; {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {ASTAP is using a linear astrometric solution for both stacking and solving. The method is based on what traditionally is called "reducing the plate measurements. First step is to find star matches between a test image and a reference image. The reference image is either created from a star database or a reference image. The star positions x, y are to be calculated in standard coordinates which is equivalent to the x,y pixel position. The x,y position are measured relative to the image center. The test image center, size and orientation position will be different compared with the reference image. The required conversion from test image [x,y] star positions to the same stars on the test images can be written as: Xref : = a*xtest + b*ytest + c Yref:= d*xtest + e*ytest + f The factors, a,b,c,d,e,f are called the six plate constants and will be slightly different different for each star. They describe the conversion of the test image standard coordinates to the reference image standard coordinates. Using a least square routine the best solution fit can calculated if at least three matching star positions are found since there are three unknowns. With the solution and the equatorial center position of the reference image the test image center equatorial position, α and δ can be calculated. Make from the test image center small one pixel steps in x, y and use the differences in α, δ to calculate the image scale and orientation. For astrometric solving (plate solving), this "reducing the plate measurement" is done against star positions extracted from a database. The resulting absolute astrometric solution will allow specification of the α, δ equatorial positions of each pixel. For star alignment this "reducing the plate measurement" is done against a reference image. The resulting six plate constants are a relative astrometric solution. The position of the reference image is not required. Pixels of the solved image can be stacked with reference image using the six plate constants only. To automate this process rather then using reference stars the matching reference objects are the center positions of quads made of four close stars. Comparing the length ratios of the sides of the quads allows automated matching. Below a brief flowchart of the ASTAP astrometric solving process: } // =>ASTAP astronomical plate solving method by Han Kleijn <= // // => Image <= | => Star database <= //1) Find background, noise and star level | // | //2) Find stars and their CCD x, y position (standard coordinates) | Extract the same amount of stars (area corrected) from the area of interest // | Convert the α, δ equatorial coordinates into standard coordinates // | (CCD pixel x,y coordinates for optical projection), rigid method // //3) Use the extracted stars to construct the smallest irregular tetrahedrons | Use the extracted stars to construct the smallest irregular tetrahedrons // figures of four star called quads. Calculate the six distance between | figures of four star called quads. Calculate the six distance between // the four stars and the mean x,y position of the quad | the four stars and the mean x,y position of the quad // | //4) For each quad sort the six quad distances on size. | For each quad sort the six quad distances on size. // d1 is the longest and d6 the shortest. | d1 is the longest and d6 the shortest. // | //5) Scale the six quad star distances as (d1, d2/d1,d3/d1,d4/d1,d5/d1,d6/d1) | Scale the six quad star distances as (d1, d2/d1,d3/d1,d4/d1,d5/d1,d6/d1) // These are the image hash codes. | These are the database hash codes. // // => matching process <= //6) Find quad hash code matches where the five ratios d2/d1 to d6/d1 match within a small tolerance. // //7) For matching quad hash codes, calculate the longest side ratios d1_found/d1_reference. Calculate the median ratio. // Compare the quads longest side ratios with the median value and remove quads outside a small tolerance. // //8) From the remaining matching quads, prepare the "A" matrix/array containing the x,y center positions of the test image quads in standard coordinates // and the array X_ref, Y_ref containing the x, y center positions of the reference imagete trahedrons in standard coordinates. // // A: Sx: X_ref: // [x1 y1 1] [a1] [X1] // [x2 y2 1] * [b1] = [X2] // [x3 y3 1] [c1] [X3] // [x4 y4 1] [X4] // [.. .. ..] [..] // [xn yn 1] [Xn] // // // A: Sx: Y_ref: // [x1 y1 1] [a2] [Y1] // [x2 y2 1] * [b2] = [Y2] // [x3 y3 1] [c2] [Y3] // [x4 y4 1] [Y4] // [.. .. ..] [..] // [xn yn 1] [Yn] // // Find the solution matrices Sx and Sy of this overdetermined system of linear equations. (LSQ_FIT) // // The solutions Sx and Sy describe the six parameter solution, X_ref:=a1*x + b1*y + c1 and Y_ref:=a2*x + b2*y +c2. // // // With the solution calculate the test image center equatorial position α, δ. // // Make from the image center small one pixel steps in x, y and use the differences in α, δ to calculate the image scale and orientation. // // This is the final solution. The solution vector (for position, scale, rotation) can be stored as the FITS keywords crval1, crval2, cd1_1,cd1_2,cd_2_1, cd2_2. // // Notes: // For a low faint star count (<30) the star patterns can be slightly different between image and database due to small magnitude differences. // For these cases it can be beneficial to extract triples (three stars patterns) from the found quads (four star patterns) but stricter tolerances are required to avoid false detections. interface uses Classes,SysUtils,controls,forms,math, unit_star_align, unit_star_database, astap_main, unit_stack, unit_annotation,unit_stars_wide_field; function solve_image(img :image_array;var hd: Theader; get_hist{update hist}:boolean) : boolean;{find match between image and star database} procedure bin_and_find_stars(img :image_array;binning:integer;cropping,hfd_min:double;max_stars:integer;get_hist{update hist}:boolean; out starlist3:star_list; out short_warning : string);{bin, measure background, find stars} function report_binning(height :double) : integer;{select the binning} function fnmodulo (x,range: double):double; var star1 : array[0..2] of array of single; implementation var mag2 : double; {magnitude of star found} function fnmodulo(x,range: double):double; begin {range should be 2*pi or 24 hours or 0 .. 360} result:=range*frac(x/range); if result<0 then result:=result+range; {do not like negative numbers} end; function distance_to_string(dist, inp:double):string; {angular distance to string intended for RA and DEC. Unit is based on dist} begin if abs(dist)<pi/(180*60) then {unit seconds} result:= floattostrF(inp*3600*180/pi,ffFixed,0,1)+'"' else if abs(dist)<pi/180 then {unit minutes} result:= floattostrF(inp*60*180/pi,ffFixed,0,1)+#39 else result:= floattostrF(inp*180/pi,ffFixed,0,1)+'d'; {° symbol is converted to unicode by tmemo} end; {transformation of equatorial coordinates into CCD pixel coordinates for optical projection, rigid method} {head.ra0,head.dec0: right ascension and declination of the optical axis} {ra,dec: right ascension and declination} {xx,yy : CCD coordinates} {cdelt: CCD scale in arcsec per pixel} procedure equatorial_standard(ra0,dec0,ra,dec, cdelt : double; out xx,yy: double); var dv,sin_dec0,cos_dec0,sin_dec ,cos_dec,sin_deltaRA,cos_deltaRA: double; begin sincos(dec0 ,sin_dec0 ,cos_dec0); sincos(dec ,sin_dec ,cos_dec ); sincos(ra-ra0, sin_deltaRA,cos_deltaRA); dv := (cos_dec0 * cos_dec * cos_deltaRA + sin_dec0 * sin_dec) * cdelt/(3600*180/pi); {cdelt/(3600*180/pi), factor for onversion standard coordinates to CCD pixels} xx := - cos_dec *sin_deltaRA / dv;{tangent of the angle in RA} yy := -(sin_dec0 * cos_dec * cos_deltaRA - cos_dec0 * sin_dec) / dv; {tangent of the angle in DEC} end; {transformation from CCD coordinates into equatorial coordinates} {head.ra0,head.dec0: right ascension and declination of the optical axis } {x,y : CCD coordinates } {cdelt: : scale of CCD pixel in arc seconds } {ra,dec : right ascension and declination } {$INLINE ON} procedure standard_equatorial(ra0,dec0,x,y,cdelt: double; var ra,dec : double); inline;{transformation from CCD coordinates into equatorial coordinates} var sin_dec0 ,cos_dec0 : double; begin sincos(dec0 ,sin_dec0 ,cos_dec0); x:=x *cdelt/ (3600*180/pi);{scale CCD pixels to standard coordinates (tang angle)} y:=y *cdelt/ (3600*180/pi); ra := ra0 + arctan2 (-x, cos_DEC0- y*sin_DEC0);{atan2 is required for images containing celestial pole} if ra>pi*2 then ra:=ra-pi*2; {prevent values above 2*pi which confuses the direction detection later} if ra<0 then ra:=ra+pi*2; dec := arcsin ( (sin_dec0+y*cos_dec0)/sqrt(1.0+x*x+y*y) ); end; //procedure give_spiral_position(position : integer; var x,y : integer); {give x,y position of square spiral as function of input value} //var i,dx,dy,t,count: integer; //begin // x :=0;{star position} // y :=0; // dx := 0;{first step size x} // dy := -1;{first step size y} // count:=0; // for i:=0 to 10000*10000 {maximum width*height} do // begin // if count>=position then exit; {exit and give x and y position} // inc(count); // if ( (x = y) or ((x < 0) and (x = -y)) or ((x > 0) and (x = 1-y))) then {turning point} // begin {swap dx by negative dy and dy by negative dx} // t:=dx; // dx := -dy; // dy := t; // end; // x :=x+ dx;{walk through square} // y :=y+ dy;{walk through square} // end;{for loop} //end; function read_stars(telescope_ra,telescope_dec,search_field : double; nrstars_required: integer; out nrstars:integer): boolean;{read star from star database} var Bp_Rp, ra2,dec2, frac1,frac2,frac3,frac4,sep : double; area1,area2,area3,area4,nrstars_required2,count : integer; // correctionX,correctionY : double; begin result:=false;{assume failure} nrstars:=0;{set counters at zero} ra2:=0; {define ra2 value. Prevent ra2 = -nan(0xffffffffffde9) run time failure when first header record is read} SetLength(starlist1,2,nrstars_required);{set array length} if database_type<>001 then {1476 or 290 files} begin {Assume the search field is at a crossing of four tiles. The search field area, by definition 100% is split in 8%, 15%, 20%, 57% area for each tile. There are 500 stars required. It will then retrieve 8% x 500, 15% x 500, 20% x 500, 57% x 500 stars from each tile under the condition these stars are within the green area. This will work assuming the star density within the green area is reasonable homogene.} find_areas( telescope_ra,telescope_dec, search_field,{var} area1,area2,area3,area4, frac1,frac2,frac3,frac4);{find up to four star database areas for the square image} {read 1th area} if area1<>0 then {read 1th area} begin if open_database(telescope_dec,area1)=false then exit;{open database file or reset buffer} nrstars_required2:=min(nrstars_required,trunc(nrstars_required * frac1)); while ((nrstars<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, search_field, {var} ra2,dec2, mag2,Bp_Rp)) ) do {star 290 file database read. Read up to nrstars_required} begin {add star} equatorial_standard(telescope_ra,telescope_dec,ra2,dec2,1,starlist1[0,nrstars]{x},starlist1[1,nrstars]{y});{store star CCD x,y position} inc(nrstars); end; end; if area2<>0 then {read 2th area} begin if open_database(telescope_dec,area2)=false then exit; {open database file or reset buffer} nrstars_required2:=min(nrstars_required,trunc(nrstars_required * (frac1+frac2)));{prevent round up errors resulting in error starlist1} while ((nrstars<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, search_field, {var} ra2,dec2, mag2,Bp_Rp)) ) do {star 290 file database read. Read up to nrstars_required} begin {add star} equatorial_standard(telescope_ra,telescope_dec,ra2,dec2,1,starlist1[0,nrstars]{x},starlist1[1,nrstars]{y});{store star CCD x,y position} inc(nrstars); end; end; if area3<>0 then {read 3th area} begin if open_database(telescope_dec,area3)=false then exit; {open database file or reset buffer} nrstars_required2:=min(nrstars_required,trunc(nrstars_required * (frac1+frac2+frac3))); while ((nrstars<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, search_field, {var} ra2,dec2, mag2,Bp_Rp)) ) do {star 290 file database read. Read up to nrstars_required} begin {add star} equatorial_standard(telescope_ra,telescope_dec,ra2,dec2,1,starlist1[0,nrstars]{x},starlist1[1,nrstars]{y});{store star CCD x,y position} inc(nrstars); end; end; if area4<>0 then {read 4th area} begin if open_database(telescope_dec,area4)=false then exit; {open database file} nrstars_required2:=min(nrstars_required,trunc(nrstars_required * (frac1+frac2+frac3+frac4))); while ((nrstars<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, search_field, {var} ra2,dec2, mag2,Bp_Rp)) ) do{star 290 file database read. Read up to nrstars_required} begin {add star} equatorial_standard(telescope_ra,telescope_dec,ra2,dec2,1,starlist1[0,nrstars]{x},starlist1[1,nrstars]{y});{store star CCD x,y position} inc(nrstars); end; end; end else begin {wide field database} if wide_database<>name_database then read_stars_wide_field;{load wide field stars array} count:=0; cos_telescope_dec:=cos(telescope_dec); while ((nrstars<nrstars_required) and (count<length(wide_field_stars) div 3) ) do{star 290 file database read. Read up to nrstars_required} begin ra2:=wide_field_stars[count*3+1];{contains: mag1, ra1,dec1, mag2,ra2,dec2,mag3........} dec2:=wide_field_stars[count*3+2]; ang_sep(ra2,dec2,telescope_ra,telescope_dec, sep);{angular seperation. Required for large field of view around the pole. Can not use simple formulas anymore} if ((sep<search_field*0.5*0.9*(2/sqrt(pi))) and (sep<pi/2)) then {factor 2/sqrt(pi) is to adapt circle search field to surface square. Factor 0.9 is a fiddle factor for trees, house and dark corners. Factor <pi/2 is the limit for procedure equatorial_standard} begin equatorial_standard(telescope_ra,telescope_dec,ra2,dec2,1,starlist1[0,nrstars]{x},starlist1[1,nrstars]{y});{store star CCD x,y position} inc(nrstars); end; inc(count); end; mag2:=wide_field_stars[(count-1)*3];{for reporting of highest magnitude used for solving} end; // memo2_message('testareas'+#9+floattostr4(telescope_ra*12/pi)+#9+floattostr4(telescope_dec*180/pi)+#9+inttostr(maga)+#9+inttostr(magb)+#9+inttostr(magc)+#9+inttostr(magd)+#9+floattostr4(frac1)+#9+floattostr4(frac2)+#9+floattostr4(frac3)+#9+floattostr4(frac4)+#9+inttostr(area1)+#9+inttostr(area2)+#9+inttostr(area3)+#9+inttostr(area4)); if nrstars<nrstars_required then SetLength(starlist1,2,nrstars); {fix array length on data for case less stars are found} result:=true;{no errors} //for testing // equatorial_standard(telescope_ra,telescope_dec,head.ra0,head.dec0,1,correctionX,correctionY);{calculate correction for x,y position of database center and image center} // plot_stars_used_for_solving(correctionX,correctionY); {plot image stars and database stars used for the solution} end; procedure binX1_crop(crop {0..1}:double; img : image_array; var img2: image_array);{crop image, make mono, no binning} var fitsX,fitsY,k, w,h, shiftX,shiftY: integer; val : single; begin w:=trunc(crop*length(img[0]{width})); {cropped} h:=trunc(crop*length(img[0,0]{height})); setlength(img2,1,w,h); {set length of image array} shiftX:=round(head.width*(1-crop)/2); {crop is 0.9, shift is 0.05*head.width} shiftY:=round(head.height*(1-crop)/2); {crop is 0.9, start at 0.05*head.height} for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin val:=0; for k:=0 to head.naxis3-1 do {all colors and make mono} val:=val + img[k,shiftX+fitsx ,shiftY+fitsY]; img2[0,fitsX,fitsY]:=val/head.naxis3; end; end; procedure binX2_crop(crop {0..1}:double; img : image_array; out img2: image_array);{combine values of 4 pixels and crop is required, Result is mono} var fitsX,fitsY,k, w,h, shiftX,shiftY,nrcolors,width5,height5: integer; val : single; begin nrcolors:=Length(img); width5:=Length(img[0]); {width} height5:=Length(img[0][0]); {height} w:=trunc(crop*width5/2); {half size & cropped. Use trunc for image 1391 pixels wide like M27 test image. Otherwise exception error} h:=trunc(crop*height5/2); setlength(img2,1,w,h); {set length of image array} shiftX:=round(width5*(1-crop)/2); {crop is 0.9, shift is 0.05*head.width} shiftY:=round(height5*(1-crop)/2); {crop is 0.9, start at 0.05*head.height} for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin val:=0; for k:=0 to nrcolors-1 do {all colors} val:=val+(img[k,shiftX+fitsx*2 ,shiftY+fitsY*2]+ img[k,shiftX+fitsx*2 +1,shiftY+fitsY*2]+ img[k,shiftX+fitsx*2 ,shiftY+fitsY*2+1]+ img[k,shiftX+fitsx*2 +1,shiftY+fitsY*2+1])/4; img2[0,fitsX,fitsY]:=val/nrcolors; end; end; procedure binX3_crop(crop {0..1}:double; img : image_array; out img2: image_array);{combine values of 9 pixels and crop is required. Result is mono} var fitsX,fitsY,k, w,h, shiftX,shiftY,nrcolors,width5,height5: integer; val : single; begin nrcolors:=Length(img); width5:=Length(img[0]); {width} height5:=Length(img[0][0]); {height} w:=trunc(crop*width5/3); {1/3 size and cropped} h:=trunc(crop*height5/3); setlength(img2,1,w,h); {set length of image array} shiftX:=round(width5*(1-crop)/2); {crop is 0.9, shift is 0.05*head.width} shiftY:=round(height5*(1-crop)/2); {crop is 0.9, start at 0.05*head.height} for fitsY:=0 to h-1 do {bin & mono image} for fitsX:=0 to w-1 do begin val:=0; for k:=0 to nrcolors-1 do {all colors} val:=val+(img[k,shiftX+fitsX*3 ,shiftY+fitsY*3 ]+ img[k,shiftX+fitsX*3 ,shiftY+fitsY*3+1]+ img[k,shiftX+fitsX*3 ,shiftY+fitsY*3+2]+ img[k,shiftX+fitsX*3 +1,shiftY+fitsY*3 ]+ img[k,shiftX+fitsX*3 +1,shiftY+fitsY*3+1]+ img[k,shiftX+fitsX*3 +1,shiftY+fitsY*3+2]+ img[k,shiftX+fitsX*3 +2,shiftY+fitsY*3 ]+ img[k,shiftX+fitsX*3 +2,shiftY+fitsY*3+1]+ img[k,shiftX+fitsX*3 +2,shiftY+fitsY*3+2])/9; img2[0,fitsX,fitsY]:=val/nrcolors; end; end; procedure binX4_crop(crop {0..1}:double;img : image_array; out img2: image_array);{combine values of 16 pixels and crop is required. Result is mono} var fitsX,fitsY,k, w,h, shiftX,shiftY,nrcolors,width5,height5: integer; val : single; begin nrcolors:=Length(img); width5:=Length(img[0]); {width} height5:=Length(img[0][0]); {height} w:=trunc(crop*width5/4); {1/4 size and cropped} h:=trunc(crop*height5/4); setlength(img2,1,w,h); {set length of image array} shiftX:=round(width5*(1-crop)/2); {crop is 0.9, shift is 0.05*head.width} shiftY:=round(height5*(1-crop)/2); {crop is 0.9, start at 0.05*head.height} for fitsY:=0 to h-1 do {bin & mono image} for fitsX:=0 to w-1 do begin val:=0; for k:=0 to nrcolors-1 do {all colors} val:=val+(img[k,shiftX+fitsX*4 ,shiftY+fitsY*4 ]+ img[k,shiftX+fitsX*4 ,shiftY+fitsY*4+1]+ img[k,shiftX+fitsX*4 ,shiftY+fitsY*4+2]+ img[k,shiftX+fitsX*4 ,shiftY+fitsY*4+3]+ img[k,shiftX+fitsX*4 +1,shiftY+fitsY*4 ]+ img[k,shiftX+fitsX*4 +1,shiftY+fitsY*4+1]+ img[k,shiftX+fitsX*4 +1,shiftY+fitsY*4+2]+ img[k,shiftX+fitsX*4 +1,shiftY+fitsY*4+3]+ img[k,shiftX+fitsX*4 +2,shiftY+fitsY*4 ]+ img[k,shiftX+fitsX*4 +2,shiftY+fitsY*4+1]+ img[k,shiftX+fitsX*4 +2,shiftY+fitsY*4+2]+ img[k,shiftX+fitsX*4 +2,shiftY+fitsY*4+3]+ img[k,shiftX+fitsX*4 +3,shiftY+fitsY*4 ]+ img[k,shiftX+fitsX*4 +3,shiftY+fitsY*4+1]+ img[k,shiftX+fitsX*4 +3,shiftY+fitsY*4+2]+ img[k,shiftX+fitsX*4 +3,shiftY+fitsY*4+3])/16; img2[0,fitsX,fitsY]:=val/nrcolors; end; end; procedure bin_and_find_stars(img :image_array;binning:integer;cropping,hfd_min:double;max_stars:integer;get_hist{update hist}:boolean; out starlist3:star_list; out short_warning : string);{bin, measure background, find stars} var width5,height5,nrstars,i : integer; img_binned : image_array; begin short_warning:='';{clear string} width5:=length(img[0]);{width} height5:=length(img[0,0]);{height} if ((binning>1) or (cropping<1)) then begin if binning>1 then memo2_message('Creating grayscale x '+inttostr(binning)+' binning image for solving or star alignment.'); if cropping<>1 then memo2_message('Cropping image x '+floattostrF(cropping,ffFixed,0,2)); if binning=2 then binX2_crop(cropping,img,img_binned) {combine values of 4 pixels, default option if 3 and 4 are not specified} else if binning=3 then binX3_crop(cropping,img,img_binned) {combine values of 9 pixels} else if binning=4 then binX4_crop(cropping,img,img_binned) {combine values of 16 pixels} else if binning=1 then binX1_crop(cropping,img,img_binned); {crop image, no binning} {test routine, to show bin result} // img_loaded:=img_binned; // head.naxis3:=1; // head.width:=length(img_binned[0]);{width} ; // head.height:=length(img_binned[0,0]); // plot_fits(mainwindow.image1,true);{plot real} // exit; get_background(0,img_binned,true {load hist},true {calculate also standard deviation background},{var}cblack,star_level );{get back ground} find_stars(img_binned,hfd_min,max_stars,starlist3); {find stars of the image and put them in a list} nrstars:=Length(starlist3[0]); if length(img_binned[0,0])<960 then begin short_warning:='Warning, remaining image dimensions too low! '; {for FITS header and solution. Dimensions should be equal or better the about 1280x960} memo2_message('█ █ █ █ █ █ Warning, remaining image dimensions too low! Try to REDUCE OR REMOVE DOWNSAMPLING. Set this option in stack menu, tab alignment.'); end; img_binned:=nil; for i:=0 to nrstars-1 do {correct star positions for cropping. Simplest method} begin starlist3[0,i]:=starlist3[0,i]*binning+(width5*(1-cropping)/2);{correct star positions for binning/ cropping} starlist3[1,i]:=starlist3[1,i]*binning+(height5*(1-cropping)/2); end; end else begin if height5>2500 then begin short_warning:='Warning, increase downsampling!! '; {for FITS header and solution} memo2_message('Info: DOWNSAMPLING IS RECOMMENDED FOR LARGE IMAGES. Set this option in stack menu, tab alignment.'); end else if height5<960 then begin short_warning:='Warning, small image dimensions! '; {for FITS header and solution. Dimensions should be equal or better the about 1280x960} memo2_message('█ █ █ █ █ █ Warning, small image dimensions!'); end; get_background(0,img,get_hist {load hist},true {calculate also standard deviation background}, {var} cblack,star_level);{get back ground} find_stars(img,hfd_min,max_stars,starlist3); {find stars of the image and put them in a list} end; end; function report_binning(height:double) : integer;{select the binning} begin result:=stackmenu1.downsample_for_solving1.itemindex; if result<=0 then {zero gives -1, Auto is 0} begin if height>2500 then result:=2 else result:=1; end; end; function solve_image(img :image_array;var hd: Theader;get_hist{update hist}:boolean) : boolean;{find match between image and star database} var nrstars,nrstars_required,count,max_distance,nr_quads, minimum_quads,database_stars,binning,match_nr, spiral_x, spiral_y, spiral_dx, spiral_dy,spiral_t,max_stars : integer; search_field,step_size,ra_database,dec_database,ra_database_offset,radius,fov2,fov_org, max_fov,fov_min,oversize, sep_search,seperation,ra7,dec7,centerX,centerY,correctionX,correctionY,cropping, min_star_size_arcsec,hfd_min,delta_ra, current_dist, quad_tolerance,dummy, extrastars,flip, extra,distance,mount_sep, mount_ra_sep,mount_dec_sep,ra_start,dec_start : double; solution, go_ahead, autoFOV,autoMaxstars,use_triples,yes_use_triples : boolean; Save_Cursor : TCursor; startTick : qword;{for timing/speed purposes} distancestr,oversize_mess,mess,info_message,popup_warningV17,popup_warningSample,suggest_str, solved_in, offset_found,ra_offset_str,dec_offset_str,mount_info_str,mount_offset_str,warning_downsample : string; var {with value} quads_str: string=' quads'; const popupnotifier_visible : boolean=false; begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } result:=false; esc_pressed:=false; warning_str:='';{for header} startTick := GetTickCount64; popup_warningV17:=''; if stackmenu1.calibrate_prior_solving1.checked then begin {preserve header and some important variable} memo2_message('Calibrating image prior to solving.'); analyse_listview(stackmenu1.listview2,false {light},false {full fits},false{refresh});{analyse dark tab, by loading=false the loaded img will not be effected. Calstat will not be effected} analyse_listview(stackmenu1.listview3,false {light},false {full fits},false{refresh});{analyse flat tab, by loading=false the loaded img will not be effected} apply_dark_and_flat(img);{apply dark, flat if required, renew if different hd.exposure or ccd temp. This will clear the header in load_fits} update_text ('CALSTAT =',#39+hd.calstat+#39); {calibration status} get_hist:=true; {update required} end else if stackmenu1.check_pattern_filter1.checked then {for OSC images with low dimensions only} begin check_pattern_filter(img); get_hist:=true; {update required} end; quad_tolerance:=strtofloat2(stackmenu1.quad_tolerance1.text); max_stars:=strtoint2(stackmenu1.max_stars1.text);{maximum star to process, if so filter out brightest stars later} use_triples:=stackmenu1.use_triples1.checked; ra_start:=ra_radians;//start position search; dec_start:=dec_radians;//start position search; if ((fov_specified=false) and (hd.cdelt2<>0)) then {no fov in native command line and hd.cdelt2 in header} fov_org:=min(180,hd.height*abs(hd.cdelt2)) {calculate FOV. PI can give negative hd.cdelt2} else fov_org:=min(180,strtofloat2(stackmenu1.search_fov1.text));{use specfied FOV in stackmenu. 180 max to prevent runtime errors later} if select_star_database(stackmenu1.star_database1.text,fov_org)=false then {select database prior to cropping selection} begin result:=false; application.messagebox(pchar('No star database found at '+database_path+' !'+#13+'Download the h18 (or h17, v17) and install'), pchar('ASTAP error:'),0); errorlevel:=32;{no star database} exit; end else begin memo2_message('Using star database '+uppercase(name_database)); if ((fov_org>30) and (database_type<>001)) then warning_str:=warning_str+'Very large FOV, use W08 database! ' else if ((fov_org>6) and (database_type=1476)) then warning_str:=warning_str+'Large FOV, use V17 database! '; if warning_str<>'' then memo2_message(warning_str); popup_warningV17:=#10+warning_str; end; if database_type=1476 then {.1476 database} max_fov:=5.142857143 {warning FOV should be less the database tiles dimensions, so <=5.142857143 degrees. Otherwise a tile beyond next tile could be selected} else {.1476 database} if database_type=290 then {.290 database} max_fov:=9.53 {warning FOV should be less the database tiles dimensions, so <=9.53 degrees. Otherwise a tile beyond next tile could be selected} else max_fov:=180; min_star_size_arcsec:=strtofloat2(stackmenu1.min_star_size1.text); {arc sec}; autoFOV:=(fov_org=0);{specified auto FOV} if max_stars=0 then begin autoMaxstars:=true;{try several values of max stars} max_stars:=30; {will be doubled to 60 in the beginning} end else autoMaxstars:=false; repeat {auto max star loop} if autoMaxstars then begin max_stars:=max_stars*2;{try with 60, 120, 240, 480 stars max} memo2_message('Solving with '+inttostr(max_stars)+' stars maximum.'); end; repeat {autoFOV loop} if autoFOV then begin if fov_org=0 then begin if database_type<>001 then begin fov_org:=9.5; fov_min:=0.38; end else begin fov_org:=90; fov_min:=12; end end else fov_org:=fov_org/1.5; memo2_message('Trying FOV: '+floattostrF(fov_org,ffFixed,0,1)); end; if fov_org>max_fov then begin cropping:=max_fov/fov_org; fov2:=max_fov; {temporary cropped image, adjust FOV to adapt} end else begin cropping:=1; fov2:=fov_org; end; binning:=report_binning(hd.height*cropping); {select binning on dimensions of cropped image} hfd_min:=max(0.8,min_star_size_arcsec/(binning*fov_org*3600/hd.height) );{to ignore hot pixels which are too small} bin_and_find_stars(img,binning,cropping,hfd_min,max_stars,get_hist{update hist}, starlist2, warning_downsample);{bin, measure background, find stars. Do this every repeat since hfd_min is adapted} nrstars:=Length(starlist2[0]); {report advice} if length(warning_downsample)>0 then begin popup_warningSample:=#10+warning_downsample; {warning for popup notifier} end else popup_warningSample:=''; {prepare popupnotifier1 text} if stackmenu1.force_oversize1.checked=false then info_message:='▶▶' {normal} else info_message:='▶'; {slow} info_message:= ' [' +stackmenu1.radius_search1.text+'°]'+#9+info_message+#9+inttostr(nrstars)+' 🟊' + #10+'↕ '+floattostrf(fov_org,ffFixed,0,2)+'°'+ #9+#9+inttostr(binning)+'x'+inttostr(binning)+' ⇒ '+inttostr(hd.width)+'x'+inttostr(hd.height)+ popup_warningV17+popup_warningSample+ #10+mainwindow.ra1.text+'h, '+mainwindow.dec1.text+'° '+#9+{for tray icon} extractfilename(filename2)+ #10+extractfileDir(filename2); nrstars_required:=round(nrstars*(hd.height/hd.width));{square search field based on height.} solution:=false; {assume no match is found} go_ahead:=(nrstars>=6); {bare minimum for three quads. Should be more but let's try} if go_ahead then {enough stars, lets find quads} begin yes_use_triples:=((nrstars<30) and (use_triples)); if yes_use_triples then begin find_triples_using_quads(starlist2,0 {min length}, quad_smallest,quad_star_distances2); {find star triples for new image. Quads and quad_smallest are binning independent} quad_tolerance:=0.002; quads_str:=' triples'; if solve_show_log then memo2_message('For triples the hash code tolerance is forced to '+floattostr(quad_tolerance)+'.'); end else begin find_quads(starlist2,0 {min length}, quad_smallest,quad_star_distances2);{find star quads for new image. Quads and quad_smallest are binning independent} quads_str:=' quads'; end; nr_quads:=Length(quad_star_distances2[0]); go_ahead:=nr_quads>=3; {enough quads?} {The step size is fixed. If a low amount of quads are detected, the search window (so the database read area) is increased up to 200% guaranteeing that all quads of the image are compared with the database quads while stepping through the sky} if nr_quads<25 then oversize:=2 {make dimensions of square search window twice then the image height} else if nr_quads>100 then oversize:=1 {make dimensions of square search window equal to the image height} else oversize:=2*sqrt(25/nr_quads);{calculate between 25 th=2 and 100 th=1, quads are area related so take sqrt to get oversize} if ((stackmenu1.force_oversize1.checked) {or (database_type=001)}) then {for always oversize for wide field database} begin oversize:=2; oversize_mess:='Search window at 200%' end else oversize_mess:='Search window at '+ inttostr(round((oversize)*100)) +'% based on the number of'+quads_str+'. Step size at 100% of image height.'; radius:=strtofloat2(stackmenu1.radius_search1.text);{radius search field} memo2_message(inttostr(nrstars)+' stars, '+inttostr(nr_quads)+quads_str+' selected in the image. '+inttostr(nrstars_required)+' database stars, ' +inttostr(round(nr_quads*nrstars_required/nrstars))+' database'+quads_str+' required for the square search field of '+floattostrF(fov2,ffFixed,0,1)+'°. '+oversize_mess); minimum_quads:=3 + nr_quads div 100; {prevent false detections for star rich images, 3 quads give the 3 center quad references and is the bare minimum. It possible to use one quad and four star positions but it in not reliable} end else begin memo2_message('Only '+inttostr(nrstars)+' stars found in image. Abort'); errorlevel:=2; end; if go_ahead then begin search_field:=fov2*(pi/180); STEP_SIZE:=search_field;{fixed step size search spiral} if database_type=1 then begin {make small steps for wide field images. Much more reliable} step_size:=step_size*0.25; max_distance:=round(radius/(0.25*fov2+0.00001)); {expressed in steps} memo2_message('Wide field, making small steps for reliable solving.'); end else max_distance:=round(radius/(fov2+0.00001));{expressed in steps} stackmenu1.Memo2.Lines.BeginUpdate;{do not update tmemo, very very slow and slows down program} stackmenu1.Memo2.disablealign;{prevent paint messages from other controls to update tmemo and make it grey. Mod 2021-06-26} match_nr:=0; repeat {Maximum accuracy loop. In case math is found on a corner, do a second solve. Result will be more accurate using all stars of the image} count:=0;{search field counter} distance:=0; {required for reporting no too often} {spiral variables} spiral_x :=0; spiral_y :=0; spiral_dx := 0;{first step size x} spiral_dy := -1;{first step size y} repeat {search in squared spiral} {begin spiral routine, find a new squared spiral position position} if count<>0 then {first do nothing, start with [0 0] then start with [1 0],[1 1],[0 1],[-1 1],[-1 0],[-1 -1],[0 -1],[1 -1],[2 -1].[2 0] ..............} begin {start spiral around [0 0]} if ( (spiral_x = spiral_y) or ((spiral_x < 0) and (spiral_x = -spiral_y)) or ((spiral_x > 0) and (spiral_x = 1-spiral_y))) then {turning point} begin {swap dx by negative dy and dy by negative dx} spiral_t:=spiral_dx; spiral_dx := -spiral_dy; spiral_dy := spiral_t; end; spiral_x :=spiral_x+ spiral_dx;{walk through square} spiral_y :=spiral_y+ spiral_dy;{walk through square} end;{end spiral around [0 0]} {adapt search field to matrix position, +0+0/+1+0,+1+1,+0+1,-1+1,-1+0,-1-1,+0-1,+1-1..} dec_database:=STEP_SIZE*spiral_y+dec_radians; flip:=0; if dec_database>+pi/2 then begin dec_database:=pi-dec_database; flip:=pi; end {crossed the pole} else if dec_database<-pi/2 then begin dec_database:=-pi-dec_database; flip:=pi; end; if dec_database>0 then extra:=step_size/2 else extra:=-step_size/2;{use the distance furthest away from the pole} ra_database_offset:= (STEP_SIZE*spiral_x/cos(dec_database-extra));{step larger near pole. This ra_database is an offset from zero} if ((ra_database_offset<=+pi/2+step_size/2) and (ra_database_offset>=-pi/2)) then {step_size for overlap} begin ra_database:=fnmodulo(flip+ra_radians+ra_database_offset,2*pi);{add offset to ra after the if statement! Otherwise no symmetrical search} ang_sep(ra_database,dec_database,ra_radians,dec_radians, {out}seperation);{calculates angular separation. according formula 9.1 old Meeus or 16.1 new Meeus, version 2018-5-23} if seperation<=radius*pi/180+step_size/2 then {Use only the circular area withing the square area} begin {info reporting} if seperation*180/pi>distance+fov_org then {new distance reached. Update once in the square spiral, so not too often since it cost CPU time} begin distance:=seperation*180/pi; distancestr:=inttostr(round(seperation*180/pi))+'°';{show on stackmenu what's happening} stackmenu1.actual_search_distance1.caption:=distancestr; stackmenu1.caption:= 'Search distance: '+distancestr; mainwindow.caption:= 'Search distance: '+distancestr; if commandline_execution then {command line execution} begin {$ifdef CPUARM} { tray icon gives a fatal execution error in the old compiler for armhf} {$else} mainwindow.TrayIcon1.hint:=distancestr+info_message; {$endif} if distance>2*fov_org then {prevent flash for short distance solving} begin if popupnotifier_visible=false then begin mainwindow.popupnotifier1.visible:=true; popupnotifier_visible:=true; end; {activate only once} mainwindow.popupnotifier1.text:=distancestr+info_message; end; end; end; {info reporting} {If a low amount of quads are detected, the search window (so the database read area) is increased up to 200% guaranteeing that all quads of the image are compared with the database quads while stepping through the sky} {read nrstars_required stars from database. If search field is oversized, number of required stars increases with the power of the oversize factor. So the star density will be the same as in the image to solve} extrastars:=1/1.1;{star with a factor of one} repeat {loop to add extra stars if too many too small quads are excluding. Note the database is made by a space telescope with a resolution exceeding all earth telescopes} extrastars:=extrastars*1.1; if read_stars(ra_database,dec_database,search_field*oversize,round(nrstars_required*oversize*oversize*extrastars) ,{var}database_stars)= false then begin application.messagebox(pchar('No star database found at '+database_path+' !'+#13+'Download the h18 (or h17, v17) and install'), pchar('ASTAP error:'),0); errorlevel:=33;{read error star database} exit; {no stars} end; if yes_use_triples then find_triples_using_quads(starlist1,quad_smallest*(fov_org*3600/hd.height {pixelsize in"})*0.99 {filter value to exclude too small quads, convert pixels to arcsec as in database}, dummy,quad_star_distances1){find quads for reference image/database. Filter out too small quads for Earth based telescopes} {Note quad_smallest is binning independent value. Don't use cdelt2 for pixelsize calculation since fov_specified could be true making cdelt2 unreliable or fov=auto} else find_quads(starlist1,quad_smallest*(fov_org*3600/hd.height {pixelsize in"})*0.99 {filter value to exclude too small quads, convert pixels to arcsec as in database}, dummy,quad_star_distances1);{find quads for reference image/database. Filter out too small quads for Earth based telescopes} {Note quad_smallest is binning independent value. Don't use cdelt2 for pixelsize calculation since fov_specified could be true making cdelt2 unreliable or fov=auto} until ((nrstars_required>database_stars) {No more stars available in the database} or (nr_quads<1.1*Length(quad_star_distances1[0])*nrstars/nrstars_required) {Enough quads found. The amount quads could be too low because due to filtering out too small database quads (center m13, M16)in routine find_quads} or (extrastars>15)) {Go up this factor maximum}; if solve_show_log then {global variable set in find stars} begin if extrastars>1 then memo2_message('Too many small quads excluded due to higher resolution database, increased the number of stars with '+inttostr(round((extrastars-1)*100))+'%'); memo2_message('Search '+ inttostr(count)+', ['+inttostr(spiral_x)+','+inttostr(spiral_y)+'],'+#9+'position: '+#9+ prepare_ra(ra_database,': ')+#9+prepare_dec(dec_database,'° ')+#9+' Down to magn '+ floattostrF(mag2/10,ffFixed,0,1) +#9+' '+inttostr(database_stars)+' database stars' +#9+' '+inttostr(length(quad_star_distances1[0]))+' database quads to compare.'+mess); end; // for testing purposes // for testing create supplement hnksy planetarium program //stackmenu1.memo2.lines.add(floattostr(ra_database*12/pi)+',,,'+floattostr(dec_database*180/pi)+',,,,'+inttostr(count)+',,-8,'+floattostr( step_size*600*180/pi)+',' +floattostr(step_size*600*180/pi)); //stackmenu1.memo2.lines.add(floattostr(ra_database*12/pi)+',,,'+floattostr(dec_database*180/pi)+',,,,'+inttostr(count)+',,-99'); solution:=find_offset_and_rotation(minimum_quads {>=3},quad_tolerance);{find an solution} // for testing purpose //equatorial_standard(ra_database,dec_database,hd.ra0,hd.dec0,1,correctionX,correctionY);{calculate correction for x,y position of database center and image center} //head.cdelt1:=-head.cdelt1; //head.cdelt2:=-head.cdelt2; //plot_stars_used_for_solving(correctionX,correctionY); {plot image stars and database stars used for the solution} //exit; Application.ProcessMessages; if esc_pressed then begin stackmenu1.Memo2.enablealign;{allow paint messages from other controls to update tmemo. Mod 2021-06-26} stackmenu1.Memo2.Lines.EndUpdate; Screen.Cursor:=crDefault; { back to normal } exit; end; end;{within search circle. Otherwise the search is within a kind of square} end;{within RA range} inc(count);{step further in spiral} until ((solution) or (spiral_x>max_distance));{squared spiral search} if solution then begin centerX:=(hd.width-1)/2 ;{center image in 0..hd.width-1 range} centerY:=(hd.height-1)/2;{center image in 0..hd.height-1 range} hd.crpix1:=centerX+1;{center image in fits coordinate range 1..hd.width} hd.crpix2:=centery+1; standard_equatorial( ra_database,dec_database, (solution_vectorX[0]*(centerX) + solution_vectorX[1]*(centerY) +solution_vectorX[2]), {x} (solution_vectorY[0]*(centerX) + solution_vectorY[1]*(centerY) +solution_vectorY[2]), {y} 1, {CCD scale} ra_radians ,dec_radians {put the calculated image center equatorial position into the start search position}); current_dist:=sqrt(sqr(solution_vectorX[0]*(centerX) + solution_vectorX[1]*(centerY) +solution_vectorX[2]) + sqr(solution_vectorY[0]*(centerX) + solution_vectorY[1]*(centerY) +solution_vectorY[2]))/3600; {current distance telescope and image center in degrees} inc(match_nr); end; until ((solution=false) or (current_dist<fov2*0.05){within 5% if image height from center} or (match_nr>=2));{Maximum accuracy loop. After match possible on a corner do a second solve using the found hd.ra0,hd.dec0 for maximum accuracy USING ALL STARS} stackmenu1.Memo2.enablealign;{allow paint messages from other controls to update tmemo. Mod 2021-06-26} stackmenu1.Memo2.Lines.EndUpdate; end; {enough quads in image} until ((autoFOV=false) or (solution) or (fov2<=fov_min)); {loop for autoFOV from 9.5 to 0.37 degrees. Will lock between 9.5*1.25 downto 0.37/1.25 or 11.9 downto 0.3 degrees} until ((autoMaxstars=false) or (solution) or (max_stars>=480) or (max_stars-5>nrstars){no more stars to find});{auto max star loop} if solution then begin hd.ra0:=ra_radians;//store solution in header hd.dec0:=dec_radians; ang_sep(ra_radians,dec_radians,ra_start,dec_start, sep_search);//calculate search offset memo2_message(inttostr(nr_references)+ ' of '+ inttostr(nr_references2)+quads_str+' selected matching within '+floattostr(quad_tolerance)+' tolerance.' // 3 quads are required giving 3 center quad references} +' Solution["] x:='+floattostr6(solution_vectorX[0])+'*x+ '+floattostr6(solution_vectorX[1])+'*y+ '+floattostr6(solution_vectorX[2]) +', y:='+floattostr6(solution_vectorY[0])+'*x+ '+floattostr6(solution_vectorY[1])+'*y+ '+floattostr6(solution_vectorY[2]) ); // following doesn't give maximum angle accuracy, so is not used. // hd.cd1_1:= - solution_vectorX[0]/3600;{/3600, arcsec to degrees conversion} // hd.cd1_2:= - solution_vectorX[1]/3600; // hd.cd2_1:= + solution_vectorY[0]/3600; // hd.cd2_2:= + solution_vectorY[1]/3600; // rather then using the solution vector directly, for maximum accuracy find the vector for the center of the image. //make 1 step in direction hd.crpix1 standard_equatorial( ra_database,dec_database, (solution_vectorX[0]*(centerX+1) + solution_vectorX[1]*(centerY) +solution_vectorX[2]), {x} (solution_vectorY[0]*(centerX+1) + solution_vectorY[1]*(centerY) +solution_vectorY[2]), {y} 1, {CCD scale} ra7 ,dec7{center equatorial position}); delta_ra:=ra7-hd.ra0; if delta_ra>+pi then delta_ra:=delta_ra-2*pi; {1 -> 359, -2:=(359-1) -360 }{rev 2021} if delta_ra<-pi then delta_ra:=delta_ra+2*pi; {359 -> 1, +2:=(1-359) +360 } hd.cd1_1:=(delta_ra)*cos(hd.dec0)*(180/pi); hd.cd2_1:=(dec7-hd.dec0)*(180/pi); //make 1 step in direction hd.crpix2 standard_equatorial( ra_database,dec_database, (solution_vectorX[0]*(centerX) + solution_vectorX[1]*(centerY+1) +solution_vectorX[2]), {x} (solution_vectorY[0]*(centerX) + solution_vectorY[1]*(centerY+1) +solution_vectorY[2]), {y} 1, {CCD scale} ra7 ,dec7{center equatorial position}); delta_ra:=ra7-hd.ra0; if delta_ra>+pi then delta_ra:=delta_ra-2*pi; {1 -> 359, -2:=(359-1) -360 } {rev 2021} if delta_ra<-pi then delta_ra:=delta_ra+2*pi; {359 -> 1, +2:=(1-359) +360 } hd.cd1_2:=(delta_ra)*cos(hd.dec0)*(180/pi); hd.cd2_2:=(dec7-hd.dec0)*(180/pi); new_to_old_WCS(hd); solved_in:=' Solved in '+ floattostr(round((GetTickCount64 - startTick)/100)/10)+' sec.';{make string to report in FITS header.} offset_found:={' Δ was '}distance_to_string(sep_search {scale selection},sep_search)+'.'; if ra_mount<99 then {mount position known and specified. Calculate mount offset} begin mount_ra_sep:=pi*frac((ra_mount-ra_radians)/pi) * cos((dec_mount+dec_radians)*0.5 {average dec});//total mount error. Only used for scaling mount_dec_sep:=dec_mount-dec_radians; mount_sep:=sqrt(sqr(mount_ra_sep)+sqr(mount_dec_sep));//mount_sep is only used for scaling} ra_offset_str:=distance_to_string(mount_sep, mount_ra_sep); dec_offset_str:=distance_to_string(mount_sep, mount_dec_sep); mount_offset_str:=' Mount offset RA='+ra_offset_str+', DEC='+dec_offset_str;{ascii} mount_info_str:=' Mount Δα='+ra_offset_str+ ', Δδ='+dec_offset_str+'. '+#9; end else mount_info_str:='';{no mount info} memo2_message('Solution found: '+ prepare_ra(hd.ra0,': ')+#9+prepare_dec(hd.dec0,'° ') +#9+ solved_in+#9+' Δ was '+offset_found+#9+ mount_info_str+' Used stars down to magnitude: '+floattostrF(mag2/10,ffFixed,0,1) ); mainwindow.caption:=('Solution found: '+ prepare_ra(hd.ra0,': ')+' '+prepare_dec(hd.dec0,'° ') ); result:=true; update_text ('CTYPE1 =',#39+'RA---TAN'+#39+' / first parameter RA , projection TANgential '); update_text ('CTYPE2 =',#39+'DEC--TAN'+#39+' / second parameter DEC, projection TANgential '); update_text ('CUNIT1 =',#39+'deg '+#39+' / Unit of coordinates '); update_text ('EQUINOX =',' 2000.0 / Equinox of coordinates ');{the equinox is 2000 since the database is in 2000} update_float('CRPIX1 =',' / X of reference pixel ' ,hd.crpix1); update_float('CRPIX2 =',' / Y of reference pixel ' ,hd.crpix2); update_float('CRVAL1 =',' / RA of reference pixel (deg) ' ,hd.ra0*180/pi); update_float('CRVAL2 =',' / DEC of reference pixel (deg) ' ,hd.dec0*180/pi); update_float('CDELT1 =',' / X pixel size (deg) ' ,hd.cdelt1); update_float('CDELT2 =',' / Y pixel size (deg) ' ,hd.cdelt2); update_float('CROTA1 =',' / Image twist X axis (deg) ' ,hd.crota1); update_float('CROTA2 =',' / Image twist Y axis (deg) E of N if not flipped.' ,hd.crota2); update_float('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,hd.cd1_1); update_float('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,hd.cd1_2); update_float('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,hd.cd2_1); update_float('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,hd.cd2_2); update_text ('PLTSOLVD=',' T / Astrometric solved by ASTAP v'+astap_version+'. '); update_text ('COMMENT 7', solved_in+' Offset '+offset_found+mount_offset_str); if solve_show_log then {global variable set in find stars} begin equatorial_standard(ra_database,dec_database,hd.ra0,hd.dec0,1,correctionX,correctionY);{calculate correction for x,y position of database center and image center} plot_stars_used_for_solving(hd,correctionX,correctionY); {plot image stars and database stars used for the solution} memo2_message('See viewer image for image stars used (red) and database star used (yellow)'); end; if ( (fov_org>1.05*(hd.height*hd.cdelt2) ) or (fov_org<0.95*(hd.height*hd.cdelt2)) ) then //in astap hd.cdelt2 is always positive. No need for absolute function begin if hd.xpixsz<>0 then suggest_str:='Warning inexact scale! Set FOV='+floattostrF(hd.height*hd.cdelt2,ffFixed,0,2)+'d or scale='+floattostrF(hd.cdelt2*3600,ffFixed,0,1)+'"/pix or FL='+inttostr(round((180/(pi*1000)*hd.xpixsz/hd.cdelt2)) )+'mm ' else suggest_str:='Warning inexact scale! Set FOV='+floattostrF(hd.height*hd.cdelt2,ffFixed,0,2)+'d or scale='+floattostrF(hd.cdelt2*3600,ffFixed,0,1)+'"/pix '; memo2_message(suggest_str); warning_str:=suggest_str+warning_str; end; end else begin memo2_message('No solution found! :('); mainwindow.caption:='No solution found! :('; update_text ('PLTSOLVD=',' F / No plate solution found. '); remove_key('COMMENT 7',false{all}); end; warning_str:=warning_str + warning_downsample; {add the last warning from loop autoFOV} if nrstars_required>database_stars+4 then begin memo2_message('Warning, reached maximum magnitude of star database!'); warning_str:=warning_str+'Star database limit was reached! '; end; if warning_str<>'' then begin update_longstr('WARNING =',warning_str);{update or insert long str including single quotes} end; Screen.Cursor:=crDefault; { back to normal } end; begin end. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_image_sharpness.pas������������������������������������������������������0000644�0001751�0001751�00000006172�14344743400�020417� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_image_sharpness; {Measurement of image sharpness for astronomical images of the Moon, Sun and stars} {Resulting value is used for autofocus of Moon and Sun.} {The routine applies the Root mean Square on the differences between the minimum and maximum value of each 2x2 pixel combination of the image.} {The result is reversed and scaled such that the final result is roughly identical to the star HFD measurement.} {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } interface uses Classes, SysUtils, astap_main; function image_sharpness(img: image_array): double;{measure the sharpeness of an image. Result is reversed and scaled to be roughly identical to a HFD measurement. So value decreases with sharpness} implementation function image_sharpness(img: image_array): double;{measure the sharpeness of an image. Result is reversed and scaled to be roughly identical to a HFD measurement. So value decreases with sharpness} var w,h, i,j:integer; maxA,maxB,minA,minB,v1,v2,minimum,maximum,average : double; begin // nrcolor:=length(img);{nr colours} h:=length(img[0,0]);{height} w:=length(img[0]);{width} result:=0; average:=0; {for OSC and mono images} for i:=0 to (w-4) div 4 do {step in width} for j:=0 to (h-4) div 4 do {step 4 pixels in height} begin {process 16 pixels. Test 2x2x(R+G+G+B) pixels} v1:=(img[0,i*4 ,j*4]+ img[0,i*4+1 ,j*4]+ img[0,i*4 ,j*4+1]+ img[0,i*4+1 ,j*4+1]);{Sum of R+G+G+B} v2:=(img[0,i*4+2 ,j*4]+ img[0,i*4+1+2,j*4]+ img[0,i*4+2 ,j*4+1]+ img[0,i*4+1+2,j*4+1]);{Sum of R+G+G+B} if v1>v2 then begin maxA:=v1; minA:=v2; end else begin maxA:=v2; minA:=v1; end;{find the minimum and maximum values of the two bottom (R+G+G+B) combinations} v1:=(img[0,i*4 ,j*4+2]+ img[0,i*4+1 ,j*4+2]+ img[0,i*4 ,j*4+1+2]+ img[0,i*4+1 ,j*4+1+2]);{Sum of R+G+G+B} v2:=(img[0,i*4+2 ,j*4+2]+ img[0,i*4+1+2,j*4+2]+ img[0,i*4+2 ,j*4+1+2]+ img[0,i*4+1+2,j*4+1+2]);{Sum of R+G+G+B} if v1>v2 then begin maxB:=v1; minB:=v2; end else begin maxB:=v2; minB:=v1; end; ;{find the minimum and maximum values of the two top (R+G+G+B)combinations} if minA<minB then minimum:=minA else minimum:=minB; if maxA>maxB then maximum:=maxA else maximum:=maxB; result:=result+sqr(maximum-minimum);{square the local slope in the 2x2x(R+G+G+B) test area and add to the total} average:=average+(maximum+minimum); end; result:=sqrt(result/(w*h));{slope value, highest value is the sharpest image} average:=average/(w*h);{calculate average pixel value} result:=4*average/(result+0.000000000000000001);{turn the curve upside down and scale simular as HFD values. A lower value indicates a sharper image. Prevent error for full fully saturated images by adding 0.00000000000001} end; end. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/linux_scripts/����������������������������������������������������������������0000755�0001751�0001751�00000000000�14344743400�016403� 5����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/linux_scripts/build_astap.sh��������������������������������������������������0000644�0001751�0001751�00000002513�14344743400�021227� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������/home/h/fpcupdeluxe/lazarus/lazbuild ~/astap.fpc/astap_linux.lpi cp ~/astap.fpc/astap ~/astap_install/astap_amd64/opt/astap cd ~/astap_install sudo rm *.rpm sudo fakeroot dpkg-deb --build ~/astap_install/astap_amd64 sudo ~/alien/alien-8.95/alien.pl -r -c -k ~/astap_install/astap_amd64.deb cp *.rpm astap_amd64.rpm sudo dpkg -i ./astap_amd64.deb tar -czvf astap_amd64.tar.gz /opt/astap/astap /opt/astap/astap.ico /opt/astap/astap.ico /opt/astap/copyright.txt /opt/astap/deep_sky.csv /opt/astap/variable_stars.csv /usr/share/applications/ASTAP.desktop /usr/local/bin/astap /opt/astap/dcraw-astap /opt/astap/unprocessed_raw-astap /home/h/fpcupdeluxe/lazarus/lazbuild ~/astap.fpc/astap_linux_qt5.lpi sudo cp ~/astap.fpc/astap /opt/astap tar -czvf astap_amd64_qt5.tar.gz /opt/astap/astap /opt/astap/astap.ico /opt/astap/astap.ico /opt/astap/copyright.txt /opt/astap/deep_sky.csv /opt/astap/variable_stars.csv /usr/share/applications/ASTAP.desktop /usr/local/bin/astap /opt/astap/dcraw-astap /opt/astap/unprocessed_raw-astap /home/h/fpcupdeluxe/lazarus/lazbuild ~/astap.fpc/astap_linux_cross_compile_to_Darwin_M1.lpi sudo cp ~/astap.fpc/astap zip astap_mac_M1.zip ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild ~/astap.fpc/astap_linux_cross_compile_to_Darwin_X86_64.lpi sudo cp ~/astap.fpc/astap zip astap_mac_X86_64.zip ~/astap.fpc/astap �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/astap_linux.lpi���������������������������������������������������������������0000644�0001751�0001751�00000011604�14344743400�016534� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="12"/> <PathDelim Value="\"/> <General> <Flags> <MainUnitHasUsesSectionForAllUnits Value="False"/> <MainUnitHasCreateFormStatements Value="False"/> <MainUnitHasTitleStatement Value="False"/> <CompatibilityMode Value="True"/> </Flags> <SessionStorage Value="InProjectDir"/> <Title Value="astap"/> <Scaled Value="True"/> <UseAppBundle Value="False"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> <XPManifest> <DpiAware Value="True"/> </XPManifest> </General> <VersionInfo> <UseVersionInfo Value="True"/> <MinorVersionNr Value="9"/> <RevisionNr Value="1"/> <Attributes pvaPreRelease="True"/> <StringTable CompanyName="www.hnsky.org" FileDescription="Astrometric STAcking Program" LegalCopyright="Han Kleijn" OriginalFilename="astap.exe" ProductName="ASTAP" ProductVersion="File version refers to the interface standard"/> </VersionInfo> <BuildModes Count="1"> <Item1 Name="Default" Default="True"/> </BuildModes> <PublishOptions> <Version Value="2"/> </PublishOptions> <RunParams> <FormatVersion Value="2"/> <Modes Count="1"> <Mode0 Name="default"/> </Modes> </RunParams> <RequiredPackages Count="2"> <Item1> <PackageName Value="FCL"/> </Item1> <Item2> <PackageName Value="LCL"/> </Item2> </RequiredPackages> <Units Count="13"> <Unit0> <Filename Value="astap.lpr"/> <IsPartOfProject Value="True"/> </Unit0> <Unit1> <Filename Value="astap_main.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="mainwindow"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit1> <Unit2> <Filename Value="unit_stack.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="stackmenu1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit2> <Unit3> <Filename Value="unit_tiff.pas"/> <IsPartOfProject Value="True"/> </Unit3> <Unit4> <Filename Value="unit_astrometry.pas"/> <IsPartOfProject Value="True"/> </Unit4> <Unit5> <Filename Value="unit_gaussian_blur.pas"/> <IsPartOfProject Value="True"/> </Unit5> <Unit6> <Filename Value="unit_star_align.pas"/> <IsPartOfProject Value="True"/> </Unit6> <Unit7> <Filename Value="unit_annotation.pas"/> <IsPartOfProject Value="True"/> </Unit7> <Unit8> <Filename Value="unit_thumbnail.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="thumbnails1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit8> <Unit9> <Filename Value="unit_xisf.pas"/> <IsPartOfProject Value="True"/> </Unit9> <Unit10> <Filename Value="unit_stack_routines.pas"/> <IsPartOfProject Value="True"/> </Unit10> <Unit11> <Filename Value="unit_inspector_plot.pas"/> <IsPartOfProject Value="True"/> </Unit11> <Unit12> <Filename Value="unit_hjd.pas"/> <IsPartOfProject Value="True"/> </Unit12> </Units> </ProjectOptions> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="."/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> </SyntaxOptions> </Parsing> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> <UseExternalDbgSyms Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-XX -Si -vh"/> </Other> </CompilerOptions> <Debugging> <Exceptions Count="9"> <Item1> <Name Value="EAbort"/> </Item1> <Item2> <Name Value="ECodetoolError"/> </Item2> <Item3> <Name Value="EFOpenError"/> </Item3> <Item4> <Name Value="EReadError"/> </Item4> <Item5> <Name Value="ERangeError"/> </Item5> <Item6> <Name Value="RunError(216)"/> </Item6> <Item7> <Name Value="EAccessViolation"/> </Item7> <Item8> <Name Value="RunError(201)"/> </Item8> <Item9> <Name Value="RunError(219)"/> </Item9> </Exceptions> </Debugging> </CONFIG> ����������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/astap_linux_cross_compile_to_Darwin_M1.lpi������������������������������������0000644�0001751�0001751�00000012463�14344743400�024024� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="12"/> <PathDelim Value="\"/> <General> <Flags> <MainUnitHasUsesSectionForAllUnits Value="False"/> <MainUnitHasCreateFormStatements Value="False"/> <MainUnitHasTitleStatement Value="False"/> <CompatibilityMode Value="True"/> </Flags> <SessionStorage Value="InProjectDir"/> <Title Value="astap"/> <Scaled Value="True"/> <UseAppBundle Value="False"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> <XPManifest> <DpiAware Value="True"/> </XPManifest> </General> <VersionInfo> <UseVersionInfo Value="True"/> <MinorVersionNr Value="9"/> <RevisionNr Value="1"/> <Attributes pvaPreRelease="True"/> <StringTable CompanyName="www.hnsky.org" FileDescription="Astrometric STAcking Program" LegalCopyright="Han Kleijn" OriginalFilename="astap.exe" ProductName="ASTAP" ProductVersion="File version refers to the interface standard"/> </VersionInfo> <MacroValues Count="1"> <Macro1 Name="LCLWidgetType" Value="cocoa"/> </MacroValues> <BuildModes Count="1"> <Item1 Name="Default" Default="True"/> <SharedMatrixOptions Count="1"> <Item1 ID="446658436976" Modes="Default" Type="IDEMacro" MacroName="LCLWidgetType" Value="cocoa"/> </SharedMatrixOptions> </BuildModes> <PublishOptions> <Version Value="2"/> </PublishOptions> <RunParams> <FormatVersion Value="2"/> <Modes Count="1"> <Mode0 Name="default"/> </Modes> </RunParams> <RequiredPackages Count="2"> <Item1> <PackageName Value="FCL"/> </Item1> <Item2> <PackageName Value="LCL"/> </Item2> </RequiredPackages> <Units Count="13"> <Unit0> <Filename Value="astap.lpr"/> <IsPartOfProject Value="True"/> </Unit0> <Unit1> <Filename Value="astap_main.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="mainwindow"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit1> <Unit2> <Filename Value="unit_stack.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="stackmenu1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit2> <Unit3> <Filename Value="unit_tiff.pas"/> <IsPartOfProject Value="True"/> </Unit3> <Unit4> <Filename Value="unit_astrometry.pas"/> <IsPartOfProject Value="True"/> </Unit4> <Unit5> <Filename Value="unit_gaussian_blur.pas"/> <IsPartOfProject Value="True"/> </Unit5> <Unit6> <Filename Value="unit_star_align.pas"/> <IsPartOfProject Value="True"/> </Unit6> <Unit7> <Filename Value="unit_annotation.pas"/> <IsPartOfProject Value="True"/> </Unit7> <Unit8> <Filename Value="unit_thumbnail.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="thumbnails1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit8> <Unit9> <Filename Value="unit_xisf.pas"/> <IsPartOfProject Value="True"/> </Unit9> <Unit10> <Filename Value="unit_stack_routines.pas"/> <IsPartOfProject Value="True"/> </Unit10> <Unit11> <Filename Value="unit_inspector_plot.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit11> <Unit12> <Filename Value="unit_hjd.pas"/> <IsPartOfProject Value="True"/> </Unit12> </Units> </ProjectOptions> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="."/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> </SyntaxOptions> </Parsing> <CodeGeneration> <TargetCPU Value="aarch64"/> <TargetOS Value="darwin"/> </CodeGeneration> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> <UseExternalDbgSyms Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-XX -Si -vh"/> </Other> </CompilerOptions> <Debugging> <Exceptions Count="9"> <Item1> <Name Value="EAbort"/> </Item1> <Item2> <Name Value="ECodetoolError"/> </Item2> <Item3> <Name Value="EFOpenError"/> </Item3> <Item4> <Name Value="EReadError"/> </Item4> <Item5> <Name Value="ERangeError"/> </Item5> <Item6> <Name Value="RunError(216)"/> </Item6> <Item7> <Name Value="EAccessViolation"/> </Item7> <Item8> <Name Value="RunError(201)"/> </Item8> <Item9> <Name Value="RunError(219)"/> </Item9> </Exceptions> </Debugging> </CONFIG> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/astap.lpi���������������������������������������������������������������������0000644�0001751�0001751�00000023410�14344743400�015313� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="11"/> <PathDelim Value="\"/> <General> <Flags> <MainUnitHasUsesSectionForAllUnits Value="False"/> <MainUnitHasCreateFormStatements Value="False"/> <MainUnitHasTitleStatement Value="False"/> </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> <Title Value="astap"/> <Scaled Value="True"/> <UseAppBundle Value="False"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> <XPManifest> <DpiAware Value="True"/> </XPManifest> </General> <VersionInfo> <UseVersionInfo Value="True"/> <MajorVersionNr Value="1"/> <Attributes pvaPreRelease="True"/> <StringTable CompanyName="www.hnsky.org" FileDescription="Astrometric STAcking Program" LegalCopyright="Han Kleijn" OriginalFilename="astap.exe" ProductName="ASTAP"/> </VersionInfo> <BuildModes Count="3"> <Item1 Name="Default" Default="True"/> <Item2 Name="Debug"> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <Target> <Filename Value="astap.exe"/> </Target> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> <OtherUnitFiles Value="source_ASTAP_FPC-27-05-2020"/> <UnitOutputDirectory Value="C:\astap.fpc"/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> <IncludeAssertionCode Value="True"/> </SyntaxOptions> </Parsing> <CodeGeneration> <Checks> <IOChecks Value="True"/> <RangeChecks Value="True"/> <OverflowChecks Value="True"/> <StackChecks Value="True"/> </Checks> <VerifyObjMethodCallValidity Value="True"/> </CodeGeneration> <Linking> <Debugging> <DebugInfoType Value="dsDwarf2Set"/> <UseExternalDbgSyms Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-dBorland -dVer150 -dDelphi7"/> <OtherDefines Count="5"> <Define0 Value="Borland"/> <Define1 Value="Ver150"/> <Define2 Value="Delphi7"/> <Define3 Value="Compiler6_Up"/> <Define4 Value="PUREPASCAL"/> </OtherDefines> </Other> </CompilerOptions> </Item2> <Item3 Name="Release"> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <Target> <Filename Value="astap.exe"/> </Target> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> <OtherUnitFiles Value="source_ASTAP_FPC-27-05-2020"/> <UnitOutputDirectory Value="C:\astap.fpc"/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> </SyntaxOptions> </Parsing> <CodeGeneration> <SmartLinkUnit Value="True"/> <Optimizations> <OptimizationLevel Value="3"/> </Optimizations> </CodeGeneration> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> </Debugging> <LinkSmart Value="True"/> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-dBorland -dVer150 -dDelphi7"/> <OtherDefines Count="5"> <Define0 Value="Borland"/> <Define1 Value="Ver150"/> <Define2 Value="Delphi7"/> <Define3 Value="Compiler6_Up"/> <Define4 Value="PUREPASCAL"/> </OtherDefines> </Other> </CompilerOptions> </Item3> </BuildModes> <PublishOptions> <Version Value="2"/> </PublishOptions> <RunParams> <FormatVersion Value="2"/> <Modes Count="1"> <Mode0 Name="default"/> </Modes> </RunParams> <RequiredPackages Count="2"> <Item1> <PackageName Value="FCL"/> </Item1> <Item2> <PackageName Value="LCL"/> </Item2> </RequiredPackages> <Units Count="20"> <Unit0> <Filename Value="astap.lpr"/> <IsPartOfProject Value="True"/> </Unit0> <Unit1> <Filename Value="astap_main.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="mainwindow"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit1> <Unit2> <Filename Value="unit_stack.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="stackmenu1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit2> <Unit3> <Filename Value="unit_tiff.pas"/> <IsPartOfProject Value="True"/> </Unit3> <Unit4> <Filename Value="unit_gaussian_blur.pas"/> <IsPartOfProject Value="True"/> </Unit4> <Unit5> <Filename Value="unit_star_align.pas"/> <IsPartOfProject Value="True"/> </Unit5> <Unit6> <Filename Value="unit_annotation.pas"/> <IsPartOfProject Value="True"/> </Unit6> <Unit7> <Filename Value="unit_thumbnail.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="thumbnails1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit7> <Unit8> <Filename Value="unit_xisf.pas"/> <IsPartOfProject Value="True"/> </Unit8> <Unit9> <Filename Value="unit_stack_routines.pas"/> <IsPartOfProject Value="True"/> </Unit9> <Unit10> <Filename Value="unit_inspector_plot.pas"/> <IsPartOfProject Value="True"/> </Unit10> <Unit11> <Filename Value="unit_hjd.pas"/> <IsPartOfProject Value="True"/> </Unit11> <Unit12> <Filename Value="unit_live_stacking.pas"/> <IsPartOfProject Value="True"/> </Unit12> <Unit13> <Filename Value="unit_image_sharpness.pas"/> <IsPartOfProject Value="True"/> </Unit13> <Unit14> <Filename Value="unit_sqm.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="form_sqm1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit14> <Unit15> <Filename Value="unit_astrometry_net.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="form_astrometry_net1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit15> <Unit16> <Filename Value="unit_aavso.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="form_aavso1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit16> <Unit17> <Filename Value="unit_listbox.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="form_listbox1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit17> <Unit18> <Filename Value="unit_batch_solve.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Form1"/> <ResourceBaseClass Value="Form"/> </Unit18> <Unit19> <Filename Value="unit_stars_wide_field.pas"/> <IsPartOfProject Value="True"/> </Unit19> </Units> </ProjectOptions> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> <OtherUnitFiles Value="source_ASTAP_FPC-27-05-2020"/> <UnitOutputDirectory Value="."/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> </SyntaxOptions> </Parsing> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> <DebugInfoType Value="dsDwarf2Set"/> <StripSymbols Value="True"/> </Debugging> <Options> <LinkerOptions Value="-vhl"/> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-XX -Si -vh"/> </Other> </CompilerOptions> <Debugging> <Exceptions Count="12"> <Item1> <Name Value="EAbort"/> </Item1> <Item2> <Name Value="ECodetoolError"/> </Item2> <Item3> <Name Value="EFOpenError"/> </Item3> <Item4> <Name Value="EReadError"/> </Item4> <Item5> <Name Value="ERangeError"/> </Item5> <Item6> <Name Value="RunError(216)"/> </Item6> <Item7> <Name Value="EAccessViolation"/> </Item7> <Item8> <Name Value="RunError(201)"/> </Item8> <Item9> <Name Value="RunError(219)"/> </Item9> <Item10> <Name Value="Exception"/> </Item10> <Item11> <Name Value="EOutOfMemory"/> </Item11> <Item12> <Name Value="EInOutError"/> </Item12> </Exceptions> </Debugging> </CONFIG> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_inspector_plot.lfm�������������������������������������������������������0000644�0001751�0001751�00000025071�14344743400�020305� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object form_inspection1: Tform_inspection1 Cursor = crHandPoint Left = 213 Height = 270 Top = 219 Width = 663 Caption = 'Image inspection' ClientHeight = 270 ClientWidth = 663 KeyPreview = True OnClose = FormClose OnKeyPress = FormKeyPress OnShow = FormShow Position = poDesktopCenter LCLVersion = '2.2.4.0' object undo_button1: TBitBtn Left = 464 Height = 30 Hint = 'Restore image' Top = 208 Width = 30 Glyph.Data = { 36040000424D3604000000000000360000002800000010000000100000000100 2000000000000004000000000000000000000000000000000000FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000C0C0C000FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00 FF00C0C0C000FF00FF00FF00FF00FF00FF00C0C0C000C0C0C000FF00FF00FF00 FF00FF00FF00FF00FF00C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00C0C0C000C0C0 C000C0C0C000C0C0C000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 } OnClick = undo_button1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 0 end object help_uncheck_outliers1: TLabel Cursor = crHandPoint Left = 576 Height = 30 Hint = 'Online help about inspector' Top = 208 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_uncheck_outliers1Click end object show_distortion1: TBitBtn Left = 464 Height = 26 Hint = 'Show image distortion using the star positions and solution. Lines a 50x larger then distortion.' Top = 96 Width = 173 Caption = 'Show distortion' Images = mainwindow.ImageList1 ImageIndex = 40 OnClick = show_distortion1Click ParentShowHint = False ShowHint = True TabOrder = 1 end object aberration_inspector1: TBitBtn Left = 464 Height = 26 Hint = 'Makes a compilation of the image corners and the center for a closer inspection.' Top = 136 Width = 173 Caption = 'Aberration inspector F6' Images = mainwindow.ImageList1 ImageIndex = 39 OnClick = aberration_inspector1Click ParentShowHint = False ShowHint = True TabOrder = 2 end object background_values1: TBitBtn Left = 464 Height = 25 Hint = 'Annotate the image with the median background values relative to the center.' Top = 56 Width = 173 Caption = 'Background values' Images = mainwindow.ImageList1 OnClick = background_values1Click ParentShowHint = False ShowHint = True TabOrder = 3 end object GroupBox3: TGroupBox Left = 8 Height = 248 Top = 8 Width = 432 ClientHeight = 228 ClientWidth = 428 TabOrder = 4 object GroupBox2: TGroupBox Left = 8 Height = 200 Top = 24 Width = 185 ClientHeight = 180 ClientWidth = 181 TabOrder = 0 object tilt1: TBitBtn Left = 22 Height = 26 Hint = 'Calculate tilt and curvature. The absolute font size will be smaller if you zoom in.' Top = 144 Width = 122 Caption = 'Tilt F4' Images = mainwindow.ImageList1 ImageIndex = 41 OnClick = tilt1Click ParentShowHint = False ShowHint = True TabOrder = 0 end object extra_stars1: TCheckBox Left = 16 Height = 19 Hint = ' Uses all stars with SNR >10 else use star with SNR >30 (more accurate)' Top = 8 Width = 73 Caption = 'Extra stars' OnChange = extra_stars1Change ParentShowHint = False ShowHint = True TabOrder = 1 end object rectangle1: TRadioButton Left = 17 Height = 19 Hint = 'Octagon shape. For perfect optic the octagon will form a square' Top = 40 Width = 66 Caption = 'Octagon' Checked = True ParentShowHint = False ShowHint = True TabOrder = 2 TabStop = True end object triangle1: TRadioButton Left = 16 Height = 19 Hint = 'A round area is taken from the image and divided in three slices.' Top = 72 Width = 62 Caption = 'Triangle' OnChange = triangle1Change ParentShowHint = False ShowHint = True TabOrder = 3 end object measuring_angle1: TComboBox Left = 104 Height = 23 Hint = 'Rotation angle. Use first the tools menu to flip the image vertical or horizontal to get the north up en east left. Then set rotation such that it matches with the three screws of the tilt adapter.' Top = 68 Width = 72 DropDownCount = 13 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '0' '10' '20' '30' '40' '50' '60' '70' '80' '90' '100' '110' '120' ) OnChange = measuring_angle1Change ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 Text = '0' end end object GroupBox1: TGroupBox Left = 200 Height = 200 Top = 24 Width = 224 ClientHeight = 180 ClientWidth = 220 TabOrder = 1 object vectors1: TCheckBox Left = 16 Height = 19 Hint = 'Show the orientation of the star unroundness.' Top = 104 Width = 155 Caption = 'Add unroundness vectors' Checked = True OnChange = vectors1Change ParentShowHint = False ShowHint = True State = cbChecked TabOrder = 0 end object values1: TCheckBox Left = 16 Height = 19 Hint = 'Add the star HFD value persistent to the fits file. No HFD filtering.' Top = 72 Width = 78 Caption = 'Add values' OnChange = values1Change ParentShowHint = False ShowHint = True TabOrder = 1 end object voronoi1: TCheckBox Left = 16 Height = 19 Hint = 'Creates a diagram based on the values. The gray values represent the values *100. The values are local median filtered for each three stars' Top = 40 Width = 109 Caption = 'Voronoi diagram' OnChange = voronoi1Change ParentShowHint = False ShowHint = True TabOrder = 2 end object contour1: TCheckBox Left = 16 Height = 19 Hint = 'Creates a 2D contour diagram based on the values. The gray values represent the values *100. The values are local median filtered for each three stars.' Top = 8 Width = 126 Caption = '2D contour diagram' OnChange = contour1Change ParentShowHint = False ShowHint = True TabOrder = 3 end object hfd_button1: TButton Left = 8 Height = 25 Hint = 'Creates a diagram based on the HFD values. The gray values represent the HFD *100. The HFD values are local median filtered for each three stars.' Top = 144 Width = 72 Caption = 'HFD' OnClick = roundness1Click ParentShowHint = False ShowHint = True TabOrder = 4 end object roundness_button1: TButton Left = 88 Height = 25 Hint = 'Measure the unroundness of the stars.' Top = 144 Width = 105 AutoSize = True Caption = 'Roundness F3' OnClick = roundness1Click ParentShowHint = False ShowHint = True TabOrder = 5 end end object bayer_label1: TLabel Left = 8 Height = 15 Top = 0 Width = 102 Caption = 'Bayer matrix image' ParentColor = False end end object to_clipboard1: TCheckBox Left = 646 Height = 19 Hint = 'Data to clipboard' Top = 96 Width = 20 ParentShowHint = False ShowHint = True TabOrder = 5 end object ActionList1: TActionList Left = 384 Top = 26 object Action1: TAction Caption = 'Action1' OnExecute = roundness1Click ShortCut = 114 end object Action2: TAction Caption = 'Action2' OnExecute = tilt1Click ShortCut = 115 end object Action3: TAction Caption = 'Action3' OnExecute = aberration_inspector1Click ShortCut = 117 end end end �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_sqm.pas������������������������������������������������������������������0000644�0001751�0001751�00000023640�14344743400�016046� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_sqm; {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode delphi} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls, LCLIntf, Buttons,{for for getkeystate, selectobject, openURL} astap_main, unit_annotation,unit_hjd,unit_stack; type { Tform_sqm1 } Tform_sqm1 = class(TForm) green_message1: TLabel; sqm_applydf1: TCheckBox; error_message1: TLabel; sqm1: TEdit; date_label1: TLabel; date_obs1: TEdit; help_sqm_measurement1: TLabel; altitude_label1: TLabel; Label1: TLabel; Label4: TLabel; Label5: TLabel; pedestal1: TEdit; background1: TEdit; altitude1: TEdit; sqm_label1: TLabel; Label2: TLabel; Label3: TLabel; label_start_mid1: TLabel; latitude1: TEdit; longitude1: TEdit; ok1: TButton; procedure date_obs1Exit(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormKeyPress(Sender: TObject; var Key: char); procedure FormShow(Sender: TObject); procedure help_sqm_measurement1Click(Sender: TObject); procedure latitude1Change(Sender: TObject); procedure latitude1Exit(Sender: TObject); procedure longitude1Change(Sender: TObject); procedure longitude1Exit(Sender: TObject); procedure ok1Click(Sender: TObject); procedure pedestal1Exit(Sender: TObject); procedure sqm_applydf1Change(Sender: TObject); private public end; var form_sqm1: Tform_sqm1; sqm_applyDF: boolean; function calculate_sqm(get_bk,get_his : boolean; var pedestal2 : integer) : boolean; {calculate sky background value} implementation {$R *.lfm} var site_lat_radians,site_long_radians : double; function calculate_sqm(get_bk,get_his : boolean; var pedestal2 : integer) : boolean; {calculate sky background value} var airm, correction,alt,az : double; bayer,form_exist : boolean; begin form_exist:=form_sqm1<>nil; {see form_sqm1.FormClose action to make this working reliable} bayer:=((bayerpat<>'') and (head.Xbinning=1)); if form_exist then begin if bayer then begin form_sqm1.green_message1.caption:='This OSC image is automatically binned 2x2.'+#10; application.processmessages; backup_img; {move viewer data to img_backup} bin_X2X3X4(2); end else form_sqm1.green_message1.caption:=''; end; if ((flux_magn_offset=0) or (flux_aperture<>99){calibration was for point sources}) then {calibrate and ready for extendend sources} begin annulus_radius:=14;{calibrate for extended objects using full star flux} flux_aperture:=99;{calibrate for extended objects} plot_and_measure_stars(true {calibration},false {plot stars},false{report lim magnitude}); end; result:=false; if flux_magn_offset>0 then begin if get_bk then get_background(0,img_loaded,get_his {histogram},false {calculate also noise level} ,{var}cblack,star_level); if (pos('D',head.calstat)>0) then begin if pedestal2>0 then begin if form_exist then form_sqm1.green_message1.caption:=form_sqm1.error_message1.caption+'Dark already applied! Pedestal value ignored.'+#10 else memo2_message('Dark already applied! Pedestal value ignored.'); pedestal2:=0; {prevent wrong values} end; end else if pedestal2=0 then if form_exist then form_sqm1.error_message1.caption:=form_sqm1.error_message1.caption+'Pedestal value missing!'+#10 else begin memo2_message('Pedestal value missing!'); warning_str:=warning_str+'Pedestal value missing!'; end; if pedestal2>=cblack then begin if form_exist then form_sqm1.error_message1.caption:=form_sqm1.error_message1.caption+'Too high pedestal value!'+#10 else begin memo2_message('Too high pedestal value!'); warning_str:=warning_str+'Too high pedestal value!'; end; beep; pedestal2:=0; {prevent errors} end; sqmfloat:=flux_magn_offset-ln((cblack-pedestal2)/sqr(head.cdelt2*3600){flux per arc sec})*2.511886432/ln(10); calculate_az_alt(1 {force calculation from ra, dec} ,head,{out}az,alt); centalt:=inttostr(round(alt));{for reporting in menu sqm1} if alt<>0 then begin airm:=airmass_calc(alt); correction:= atmospheric_absorption(airm)- 0.28 {correction at zenith is defined as zero by subtracting 0.28}; sqmfloat:=sqmfloat+correction; result:=true; end; end; if bayer then begin restore_img; end; end; procedure display_sqm; var update_hist : boolean; pedestal2 : integer; begin with form_sqm1 do begin update_hist:=false; error_message1.caption:=''; date_to_jd(head.date_obs,head.exposure);{convert date-OBS to jd_start and jd_mid} if jd_start<=2400000 then {no date, found year <1858} begin error_message1.caption:='Error converting date obs.'+#10; sqm1.caption:='?'; exit; end; if head.naxis3>1 then {no date, found year <1858} begin error_message1.caption:=error_message1.caption+'Can not process colour images!!'+#10; sqm1.caption:='?'; exit; end; pedestal2:=pedestal;{protect pedestal setting} if sqm_applydf1.checked then begin analyse_listview(stackmenu1.listview2,false {light},false {full fits},false{refresh});{analyse dark tab, by loading=false the loaded img will not be effected. Calstat will not be effected} analyse_listview(stackmenu1.listview3,false {light},false {full fits},false{refresh});{analyse flat tab, by loading=false the loaded img will not be effected} apply_dark_and_flat(img_loaded);{apply dark, flat if required, renew if different head.exposure or ccd temp} if pos('D',head.calstat)>0 then {status of dark application} begin memo2_message('Calibration status '+head.calstat+'. Used '+inttostr(head.dark_count)+' darks, '+inttostr(head.flat_count)+' flats, '+inttostr(head.flatdark_count)+' flat-darks') ; update_text('CALSTAT =',#39+head.calstat+#39); pedestal2:=0;{pedestal no longer required} update_hist:=true; {dark is applied, update histogram for background measurement} end else error_message1.caption:=error_message1.caption+'No darks found. Result invalid!'+#10; {error} end; {calc} if calculate_sqm(true {get backgr},update_hist{get histogr},pedestal2)=false then {failure in calculating sqm value} begin if centalt='0' then error_message1.caption:=error_message1.caption+'Could not retrieve or calculate altitude. Enter the default geographic location'+#10; sqm1.caption:='?'; exit; end; {report} background1.caption:=inttostr(round(cblack)); altitude1.caption:=centalt; sqm1.caption:=floattostrF(sqmfloat,ffFixed,0,2) end; end; procedure Tform_sqm1.help_sqm_measurement1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#sqm'); end; procedure Tform_sqm1.latitude1Change(Sender: TObject);{han.k} begin end; procedure Tform_sqm1.latitude1Exit(Sender: TObject); var errordecode:boolean; begin sitelat:=latitude1.Text; dec_text_to_radians(sitelat,site_lat_radians,errordecode); if errordecode then latitude1.color:=clred else latitude1.color:=clwindow; display_sqm; end; procedure Tform_sqm1.longitude1Change(Sender: TObject);{han.k} begin end; procedure Tform_sqm1.longitude1Exit(Sender: TObject); var errordecode:boolean; begin sitelong:=longitude1.Text; dec_text_to_radians(sitelong,site_long_radians,errordecode); if errordecode then longitude1.color:=clred else longitude1.color:=clwindow; display_sqm; end; procedure Tform_sqm1.ok1Click(Sender: TObject); begin form_sqm1.close; {normally this form is not loaded} mainwindow.setfocus; mainwindow.save_settings1Click(nil);{save pedestal value} end; procedure Tform_sqm1.pedestal1Exit(Sender: TObject); begin pedestal:=round(strtofloat2(pedestal1.Text)); display_sqm; end; procedure Tform_sqm1.sqm_applydf1Change(Sender: TObject); begin pedestal1.enabled:=sqm_applydf1.checked=false; display_sqm; end; procedure set_some_defaults; {wil be set if annotate button is clicked or when form is closed} begin with form_sqm1 do begin {latitude, longitude} sitelat:=latitude1.Text; sitelong:=longitude1.Text; lat_default:=sitelat; long_default:=sitelong; head.date_obs:=date_obs1.Text; sqm_applyDF:=sqm_applyDF1.checked; end; end; procedure Tform_sqm1.FormKeyPress(Sender: TObject; var Key: char);{han.k} begin {set form keypreview:=on} if key=#27 then begin form_sqm1.ok1Click(nil); end; end; procedure Tform_sqm1.date_obs1Exit(Sender: TObject); begin head.date_obs:=date_obs1.text; display_sqm; end; procedure Tform_sqm1.FormClose(Sender: TObject; var CloseAction: TCloseAction); begin set_some_defaults; CloseAction := caFree; {required for later testing if form exists, https://wiki.freepascal.org/Testing,_if_form_exists} Form_sqm1 := nil; end; procedure Tform_sqm1.FormShow(Sender: TObject);{han.k} begin esc_pressed:=false;{reset from cancel} sqm_applyDF1.checked:=sqm_applyDF; date_obs1.Text:=head.date_obs; {latitude, longitude} if sitelat='' then {use values from previous time} begin sitelat:=lat_default; sitelong:=long_default; end; latitude1.Text:=trim(sitelat); {copy the string to tedit} longitude1.Text:=trim(sitelong); pedestal1.Text:=inttostr(pedestal); display_sqm; end; end. ������������������������������������������������������������������������������������������������astap_2022.12.09.orig/astap.lpr���������������������������������������������������������������������0000644�0001751�0001751�00000000656�14344743400�015333� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������program astap; {$MODE Delphi} uses Forms, Interfaces, astap_main in 'astap_main.pas', {mainwindow} unit_stack in 'unit_stack.pas'; {stackmenu1} {other units are linked to this two units} {mainwindow} {$R *.res} begin Application.Scaled:=True; Application.Initialize; Application.CreateForm(Tmainwindow, mainwindow); Application.CreateForm(Tstackmenu1, stackmenu1); Application.Run; end. ����������������������������������������������������������������������������������astap_2022.12.09.orig/astap_linux_cross_compile_to_Darwin X86 .lpi����������������������������������0000644�0001751�0001751�00000012462�14344743400�024074� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="12"/> <PathDelim Value="\"/> <General> <Flags> <MainUnitHasUsesSectionForAllUnits Value="False"/> <MainUnitHasCreateFormStatements Value="False"/> <MainUnitHasTitleStatement Value="False"/> <CompatibilityMode Value="True"/> </Flags> <SessionStorage Value="InProjectDir"/> <Title Value="astap"/> <Scaled Value="True"/> <UseAppBundle Value="False"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> <XPManifest> <DpiAware Value="True"/> </XPManifest> </General> <VersionInfo> <UseVersionInfo Value="True"/> <MinorVersionNr Value="9"/> <RevisionNr Value="1"/> <Attributes pvaPreRelease="True"/> <StringTable CompanyName="www.hnsky.org" FileDescription="Astrometric STAcking Program" LegalCopyright="Han Kleijn" OriginalFilename="astap.exe" ProductName="ASTAP" ProductVersion="File version refers to the interface standard"/> </VersionInfo> <MacroValues Count="1"> <Macro1 Name="LCLWidgetType" Value="cocoa"/> </MacroValues> <BuildModes Count="1"> <Item1 Name="Default" Default="True"/> <SharedMatrixOptions Count="1"> <Item1 ID="446658436976" Modes="Default" Type="IDEMacro" MacroName="LCLWidgetType" Value="cocoa"/> </SharedMatrixOptions> </BuildModes> <PublishOptions> <Version Value="2"/> </PublishOptions> <RunParams> <FormatVersion Value="2"/> <Modes Count="1"> <Mode0 Name="default"/> </Modes> </RunParams> <RequiredPackages Count="2"> <Item1> <PackageName Value="FCL"/> </Item1> <Item2> <PackageName Value="LCL"/> </Item2> </RequiredPackages> <Units Count="13"> <Unit0> <Filename Value="astap.lpr"/> <IsPartOfProject Value="True"/> </Unit0> <Unit1> <Filename Value="astap_main.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="mainwindow"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit1> <Unit2> <Filename Value="unit_stack.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="stackmenu1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit2> <Unit3> <Filename Value="unit_tiff.pas"/> <IsPartOfProject Value="True"/> </Unit3> <Unit4> <Filename Value="unit_astrometry.pas"/> <IsPartOfProject Value="True"/> </Unit4> <Unit5> <Filename Value="unit_gaussian_blur.pas"/> <IsPartOfProject Value="True"/> </Unit5> <Unit6> <Filename Value="unit_star_align.pas"/> <IsPartOfProject Value="True"/> </Unit6> <Unit7> <Filename Value="unit_annotation.pas"/> <IsPartOfProject Value="True"/> </Unit7> <Unit8> <Filename Value="unit_thumbnail.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="thumbnails1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit8> <Unit9> <Filename Value="unit_xisf.pas"/> <IsPartOfProject Value="True"/> </Unit9> <Unit10> <Filename Value="unit_stack_routines.pas"/> <IsPartOfProject Value="True"/> </Unit10> <Unit11> <Filename Value="unit_inspector_plot.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit11> <Unit12> <Filename Value="unit_hjd.pas"/> <IsPartOfProject Value="True"/> </Unit12> </Units> </ProjectOptions> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="."/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> </SyntaxOptions> </Parsing> <CodeGeneration> <TargetCPU Value="x86_64"/> <TargetOS Value="darwin"/> </CodeGeneration> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> <UseExternalDbgSyms Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-XX -Si -vh"/> </Other> </CompilerOptions> <Debugging> <Exceptions Count="9"> <Item1> <Name Value="EAbort"/> </Item1> <Item2> <Name Value="ECodetoolError"/> </Item2> <Item3> <Name Value="EFOpenError"/> </Item3> <Item4> <Name Value="EReadError"/> </Item4> <Item5> <Name Value="ERangeError"/> </Item5> <Item6> <Name Value="RunError(216)"/> </Item6> <Item7> <Name Value="EAccessViolation"/> </Item7> <Item8> <Name Value="RunError(201)"/> </Item8> <Item9> <Name Value="RunError(219)"/> </Item9> </Exceptions> </Debugging> </CONFIG> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/astap_main.lfm����������������������������������������������������������������0000644�0001751�0001751�00000232204�14344743400�016314� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object mainwindow: Tmainwindow Left = 292 Height = 646 Hint = ' ' Top = 134 Width = 1272 AllowDropFiles = True Caption = 'Astrometric Stacking Program and fits viewer (ASTAP)' ClientHeight = 626 ClientWidth = 1272 Color = clForm Icon.Data = { 7E03000000000100010010100000010018006803000016000000280000001000 0000200000000100180000000000000300006400000064000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFF000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000FFFFFF000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFF000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000FFFFFF000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFF000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000FFFFFF000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFF0000000000000000 00000000000000000000000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000000000000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000000000000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000000000000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000000000000000000000000000000000000000000000FFFFFF00 0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000 } KeyPreview = True Menu = MainMenu1 OnClose = FormClose OnCreate = FormCreate OnDestroy = FormDestroy OnDropFiles = FormDropFiles OnKeyPress = FormKeyPress OnPaint = FormPaint OnResize = FormResize OnShow = FormShow ParentFont = True Position = poDesktopCenter LCLVersion = '2.2.4.0' object Label1: TLabel Left = 54 Height = 25 Hint = 'Right ascension' Top = -4 Width = 12 Alignment = taRightJustify Caption = 'α' Font.Height = -19 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True end object Label2: TLabel Left = 54 Height = 25 Hint = 'Declination' Top = 24 Width = 11 Alignment = taRightJustify Caption = 'δ' Font.Height = -19 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True end object error_get_it: TLabel Left = 217 Height = 15 Top = 159 Width = 18 Caption = ' ' Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft ParentColor = False ParentFont = False end object ra_label: TLabel Left = 176 Height = 15 Top = 6 Width = 12 Caption = '00' Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft ParentColor = False ParentFont = False end object dec_label: TLabel Left = 176 Height = 15 Top = 30 Width = 12 Caption = '00' Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft ParentColor = False ParentFont = False end object rotation1: TLabel Left = 531 Height = 15 Hint = 'Orientation of the image north axis, independent of flip settings.' Top = 130 Width = 6 Caption = '0' Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True end object image_north_arrow1: TImage Left = 475 Height = 49 Hint = 'Long axis is north, small axis is east.' Top = 116 Width = 49 ParentShowHint = False ShowHint = True Transparent = True end object ra1: TEdit Left = 75 Height = 23 Hint = 'Right ascension of reference pixel. Normally in the middle of the image. Format 23 30 00.0 or 23.500. Double click to retrieve position from database' Top = 0 Width = 95 OnChange = ra1Change OnDblClick = radec_search1Click ParentShowHint = False PopupMenu = PopupMenu_ra_dec1 ShowHint = True TabOrder = 0 Text = '00 00 00.0' end object dec1: TEdit Left = 75 Height = 23 Hint = 'Declination of reference pixel. Normally in the middle of the image. Format +89 30 00 or 89.500. Double click to retrieve position from database.' Top = 26 Width = 95 OnChange = dec1Change OnDblClick = radec_search1Click ParentShowHint = False PopupMenu = PopupMenu_ra_dec1 ShowHint = True TabOrder = 1 Text = '+00 00 00.00' end object inversemousewheel1: TCheckBox Left = 456 Height = 19 Hint = 'Inverse zoom action of the mouse wheel.' Top = 89 Width = 103 Caption = 'Inverse 🖱️ wheel' Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 end object Panel1: TPanel Left = 0 Height = 455 Hint = 'hint' Top = 176 Width = 1297 Align = alCustom Anchors = [akTop, akLeft, akRight, akBottom] ClientHeight = 455 ClientWidth = 1297 Color = 2105376 Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Pitch = fpVariable Font.Quality = fqDraft ParentColor = False ParentFont = False ParentShowHint = False TabOrder = 3 OnMouseMove = Panel1MouseMove OnMouseWheelDown = Panel1MouseWheelDown OnMouseWheelUp = Panel1MouseWheelUp object Image1: TImage Left = 182 Height = 264 Top = 78 Width = 608 Anchors = [] OnMouseDown = Image1MouseDown OnMouseEnter = Image1MouseEnter OnMouseMove = Image1MouseMove OnMouseUp = Image1MouseUp OnPaint = Image1Paint ParentShowHint = False PopupMenu = PopupMenu1 Stretch = True Visible = False end object Shape_alignment_marker1: TShape Left = 32 Height = 11 Top = 112 Width = 11 Brush.Style = bsClear Enabled = False ParentShowHint = False Pen.Color = clLime Pen.Mode = pmNotXor Pen.Width = 3 Shape = stCircle ShowHint = True Visible = False end object shape_marker1: TShape Left = 40 Height = 31 Hint = 'reference 1' Top = 8 Width = 31 Brush.Style = bsClear Enabled = False ParentShowHint = False Pen.Color = clFuchsia Pen.Mode = pmNotXor Pen.Width = 2 ShowHint = True Visible = False end object error_label1: TLabel Left = 19 Height = 28 Top = 40 Width = 158 Caption = 'Error loading file!!' Font.Color = clRed Font.Height = -20 ParentColor = False ParentFont = False Visible = False end object shape_marker2: TShape Left = 103 Height = 31 Hint = 'reference 2' Top = 8 Width = 31 Brush.Style = bsClear Enabled = False ParentShowHint = False Pen.Color = clLime Pen.Mode = pmNotXor Pen.Width = 2 ShowHint = True Visible = False end object shape_marker3: TShape Left = 160 Height = 31 Top = 8 Width = 31 Brush.Style = bsClear Enabled = False ParentShowHint = False Pen.Color = clBlue Pen.Mode = pmNotXor Pen.Width = 2 ShowHint = True Visible = False end object shape_paste1: TShape Left = 216 Height = 31 Top = 8 Width = 31 Brush.Style = bsClear Enabled = False ParentShowHint = False Pen.Color = clBlue Pen.Mode = pmNotXor Pen.Width = 2 ShowHint = True Visible = False end object shape_marker4: TShape Left = 272 Height = 31 Hint = 'Mount' Top = 8 Width = 31 Brush.Style = bsClear Enabled = False ParentShowHint = False Pen.Color = clGreen Pen.Mode = pmNotXor Pen.Width = 2 Shape = stCircle ShowHint = True Visible = False end object Shape_alignment_marker2: TShape Left = 32 Height = 11 Top = 144 Width = 11 Brush.Style = bsClear Enabled = False ParentShowHint = False Pen.Color = clLime Pen.Mode = pmNotXor Pen.Width = 3 Shape = stDiamond ShowHint = True Visible = False end object Shape_alignment_marker3: TShape Left = 32 Height = 11 Hint = '3' Top = 176 Width = 11 Brush.Style = bsClear Enabled = False ParentShowHint = False Pen.Color = clLime Pen.Mode = pmNotXor Pen.Width = 3 Shape = stDiamond ShowHint = True Visible = False end object LabelVar1: TLabel Left = 62 Height = 30 Top = 104 Width = 29 Caption = 'Var' Font.CharSet = ANSI_CHARSET Font.Color = clYellow Font.Height = -21 Font.Pitch = fpVariable Font.Quality = fqDraft ParentColor = False ParentFont = False Visible = False end object LabelCheck1: TLabel Left = 62 Height = 30 Top = 136 Width = 56 Caption = 'Check' Font.CharSet = ANSI_CHARSET Font.Color = clYellow Font.Height = -21 Font.Pitch = fpVariable Font.Quality = fqDraft ParentColor = False ParentFont = False Visible = False end object LabelThree1: TLabel Left = 62 Height = 30 Top = 168 Width = 11 Caption = '3' Font.CharSet = ANSI_CHARSET Font.Color = clYellow Font.Height = -21 Font.Pitch = fpVariable Font.Quality = fqDraft ParentColor = False ParentFont = False Visible = False end object shape_manual_alignment1: TShape Left = 344 Height = 11 Hint = 'Lock unreliable, check position' Top = 16 Width = 11 Brush.Style = bsClear Enabled = False ParentShowHint = False Pen.Color = clLime Pen.Mode = pmNotXor Pen.Width = 3 Shape = stCircle ShowHint = True Visible = False end end object data_range_groupBox1: TGroupBox Left = 8 Height = 120 Hint = ' ' Top = 52 Width = 417 AutoSize = True Caption = 'Data range' ClientHeight = 100 ClientWidth = 413 Enabled = False Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft ParentFont = False TabOrder = 4 object Label12: TLabel Left = 0 Height = 15 Top = 57 Width = 53 Caption = 'Minimum' Color = clBtnFace Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft ParentColor = False ParentFont = False Transparent = False end object Label13: TLabel Left = 0 Height = 15 Top = 77 Width = 55 Caption = 'Maximum' Color = clBtnFace Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft ParentColor = False ParentFont = False Transparent = False end object histogram1: TImage Cursor = crCross Left = 93 Height = 54 Top = 0 Width = 210 OnMouseMove = histogram1MouseMove ParentShowHint = False PopupMenu = PopupMenu_histogram1 ShowHint = True StretchOutEnabled = False StretchInEnabled = False end object Label5: TLabel Left = 4 Height = 15 Top = 8 Width = 59 Caption = 'Histogram:' Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft ParentColor = False ParentFont = False end object minimum1: TScrollBar Left = 67 Height = 16 Hint = 'Adjust the black level' Top = 57 Width = 261 Enabled = False Max = 65535 PageSize = 0 ParentShowHint = False ShowHint = True TabOrder = 0 OnChange = minimum1Change OnScroll = maximum1Scroll end object maximum1: TScrollBar Left = 67 Height = 16 Hint = 'Adjust the white level.' Top = 80 Width = 261 Enabled = False LargeChange = 5000 Max = 65535 Min = 1 PageSize = 0 ParentShowHint = False Position = 65535 ShowHint = True SmallChange = 1000 TabOrder = 1 OnChange = maximum1Change OnScroll = maximum1Scroll end object min2: TEdit Left = 340 Height = 23 Hint = 'At this level the pixels are displayed as black.' Top = 56 Width = 49 Enabled = False OnEditingDone = min2EditingDone ParentShowHint = False ShowHint = True TabOrder = 2 Text = '0' end object max2: TEdit Left = 340 Height = 23 Hint = 'At this level the pixels are displayed as fully white.' Top = 77 Width = 49 Enabled = False OnEditingDone = max2EditingDone ParentShowHint = False ShowHint = True TabOrder = 3 Text = '65535' end object range1: TComboBox Left = 313 Height = 23 Hint = 'Preset of the automatic data range adjustments.' Top = 27 Width = 100 DropDownCount = 20 Enabled = False ItemHeight = 15 ItemIndex = 2 Items.Strings = ( 'Low' 'Low +' 'Medium' 'Medium +' 'High' 'High +' 'Range' 'Manual' 'Show saturation' 'Max range' ) OnChange = range1Change ParentBidiMode = False ParentColor = True ParentShowHint = False ShowHint = True Style = csDropDownList TabOrder = 4 Text = 'Medium' end object stretch1: TComboBox Left = 313 Height = 23 Hint = 'Stretch factor applied on displayed image. This is a colour preserving stretch based on an asinh function.' Top = 0 Width = 100 DropDownCount = 20 Enabled = False ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'off' '2' '4' '8' '10' '15' '20' '30' '40' '70' '100' '200' '400' '800' ) OnChange = stretch1Change ParentColor = True ParentShowHint = False ShowHint = True TabOrder = 5 Text = 'off' end object saturation_factor_plot1: TTrackBar Left = 392 Height = 48 Hint = 'Saturation adjust factor. The midde position is neutral. Above is increase, below is decrease.' Top = 52 Width = 20 Frequency = 5 Min = -10 Orientation = trVertical Position = 0 Enabled = False Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -11 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft OnMouseUp = saturation_factor_plot1MouseUp OnKeyUp = saturation_factor_plot1KeyUp ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 6 end object shape_histogram1: TShape Left = 72 Height = 54 Top = 1 Width = 1 Brush.Color = clNone Brush.Style = bsClear Pen.Color = clWhite Pen.Style = psDot Visible = False end end object Polynomial1: TComboBox Left = 456 Height = 23 Hint = 'Use WCS, SIP or DSS polynomial for indicating the position. SIP is available for Astrometry.net solutions and DSS polynomial for images from the DSS survey. A red background is indicating "no valid" solution for this option.' Top = 61 Width = 125 Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'WCS' 'SIP Polynomial' 'DSS Polynomial' ) OnChange = Polynomial1Change ParentColor = True ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 5 Text = 'WCS' end object StatusBar1: TStatusBar Left = 0 Height = 23 Top = 603 Width = 1272 Panels = < item Width = 200 end item Width = 200 end item Width = 320 end item Width = 270 end item Width = 130 end item Width = 170 end item Width = 170 end item Width = 170 end item Width = 170 end> ParentShowHint = False PopupMenu = popupmenu_statusbar1 SimplePanel = False SizeGrip = False OnMouseEnter = StatusBar1MouseEnter end object BitBtn1: TBitBtn Left = 248 Height = 42 Hint = 'Show stack menu. CTRL-A' Top = 5 Width = 48 AutoSize = True Caption = '∑ ' Font.Height = -24 OnClick = Stackimages1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 7 end object SpeedButton1: TSpeedButton Left = 8 Height = 22 Hint = 'Browse & preview fits files' Top = 8 Width = 23 Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft Glyph.Data = { 36050000424D3605000000000000360400002800000010000000100000000100 08000000000000010000C40E0000C40E00000000000000000000000000000000 80000080000000808000800000008000800080800000C0C0C000C0DCC000F0CA A6000020400000206000002080000020A0000020C0000020E000004000000040 20000040400000406000004080000040A0000040C0000040E000006000000060 20000060400000606000006080000060A0000060C0000060E000008000000080 20000080400000806000008080000080A0000080C0000080E00000A0000000A0 200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0 200000C0400000C0600000C0800000C0A00000C0C00000C0E00000E0000000E0 200000E0400000E0600000E0800000E0A00000E0C00000E0E000400000004000 20004000400040006000400080004000A0004000C0004000E000402000004020 20004020400040206000402080004020A0004020C0004020E000404000004040 20004040400040406000404080004040A0004040C0004040E000406000004060 20004060400040606000406080004060A0004060C0004060E000408000004080 20004080400040806000408080004080A0004080C0004080E00040A0000040A0 200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0 200040C0400040C0600040C0800040C0A00040C0C00040C0E00040E0000040E0 200040E0400040E0600040E0800040E0A00040E0C00040E0E000800000008000 20008000400080006000800080008000A0008000C0008000E000802000008020 20008020400080206000802080008020A0008020C0008020E000804000008040 20008040400080406000804080008040A0008040C0008040E000806000008060 20008060400080606000806080008060A0008060C0008060E000808000008080 20008080400080806000808080008080A0008080C0008080E00080A0000080A0 200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0 200080C0400080C0600080C0800080C0A00080C0C00080C0E00080E0000080E0 200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C000 2000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C020 2000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C040 2000C0404000C0406000C0408000C040A000C040C000C040E000C0600000C060 2000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C080 2000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A0 2000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C0 2000C0C04000C0C06000C0C08000C0C0A000F0FBFF00A4A0A000808080000000 FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFFFFFFFFFFF A4FFA4FFFFFFFFFFFFFFFFFFFFFFFFA4FFFFFFA4FFFFFFFFFFFFFFFFFFFFA4FF FFFFFFFFA4FFFFFFFFFFFFFFFFA4FFFFFFFFFFFFFFA4FFFFFFFFFFFFA4FFFFFF FFFFFFFFFFFFA4FFFFFFFFA4FFFFFFFFFFFFFFFFFFFFFFA4FFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFA4FFFFFFFFFFFFFFFFFFFFFFA4FFFFFFFFA4FFFFFF FFFFFFFFFFFFA4FFFFFFFFFFFFA4FFFFFFFFFFFFFFA4FFFFFFFFFFFFFFFFA4FF FFFFFFFFA4FFFFFFFFFFFFFFFFFFFFA4FFFFFFA4FFFFFFFFFFFFFFFFFFFFFFFF A4FFA4FFFFFFFFFFFFFFFFFFFFFFFFFFFFA4FFFFFFFFFFFFFFFF } OnClick = SpeedButton1Click ShowHint = True ParentFont = False ParentShowHint = False end object PageControl1: TPageControl Left = 595 Height = 177 Top = 0 Width = 680 ActivePage = TabSheet1 Anchors = [akTop, akLeft, akRight] TabIndex = 0 TabOrder = 8 object TabSheet1: TTabSheet Caption = 'Header' ClientHeight = 149 ClientWidth = 672 object Memo1: TMemo Left = 0 Height = 149 Top = 0 Width = 672 Align = alClient Anchors = [akTop, akLeft, akRight] Font.Height = -9 Font.Name = 'Courier' Lines.Strings = ( '' ) OnChange = Memo1Change OnKeyUp = Memo1KeyUp ParentFont = False PopupMenu = PopupMenu_memo1 ScrollBars = ssVertical TabOrder = 0 WordWrap = False end end object TabSheet2: TTabSheet Caption = 'Table' ClientHeight = 149 ClientWidth = 672 object Memo3: TMemo Left = 0 Height = 149 Top = 0 Width = 672 Align = alClient Anchors = [akTop, akLeft, akRight] Font.Height = -9 Font.Name = 'Courier' Lines.Strings = ( '' ) OnKeyUp = Memo1KeyUp ParentFont = False ScrollBars = ssAutoVertical TabOrder = 0 WordWrap = False end end end object UpDown1: TUpDown Left = 808 Height = 23 Hint = 'Scroll through the images and tables in the FITS extension.' Top = 0 Width = 47 Min = 0 OnClick = UpDown1Click Orientation = udHorizontal ParentShowHint = False Position = 0 ShowHint = True TabOrder = 9 Visible = False end object solve_button1: TButton Left = 312 Height = 30 Hint = 'Find an astrometric solution for the image in the viewer.'#13#10#13#10'Checklist for successful solving:'#13#10#13#10'- At least 30 stars are visible.'#13#10'- Reasonable round stars.'#13#10'- Image dimensions at least 1280x960 pixels.'#13#10'- An approximate position is available for a spiral search'#13#10'- Correct image height in degrees specified. See stack menu tab alignment.'#13#10'- Image is not stretched or heavily photo-shopped.' Top = 8 Width = 121 Caption = 'Solve' Enabled = False Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft OnClick = solve_button1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 10 end object save1: TButton Left = 453 Height = 30 Hint = 'Save FITS file with plate solution' Top = 8 Width = 128 Caption = 'Save new header' Enabled = False Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Segoe UI' Font.Pitch = fpVariable Font.Quality = fqDraft OnClick = SaveFITSwithupdatedheader1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 11 end object MainMenu1: TMainMenu Images = ImageList1 Left = 848 Top = 216 object File1: TMenuItem Caption = '&File' Hint = 'Load a FITS, PNG, JPG or BPM file.' object LoadFITSPNGBMPJPEG1: TMenuItem Caption = 'Load FITS or other format' Hint = 'Load an image file in the viewer ' ImageIndex = 1 ShortCut = 16463 OnClick = LoadFITSPNGBMPJPEG1Click end object select_directory_thumb1: TMenuItem Caption = 'Thumbnail viewer' Hint = 'Show FITS files as thumnails' ShortCut = 16468 OnClick = select_directory_thumb1Click end object MenuItem6: TMenuItem Caption = 'Open recent' Hint = 'Open recent files' object recent1: TMenuItem Caption = '1' ShortCut = 16433 Visible = False OnClick = recent1Click end object recent2: TMenuItem Caption = '2' ShortCut = 16434 Visible = False OnClick = recent1Click end object recent3: TMenuItem Caption = '3' ShortCut = 16435 Visible = False OnClick = recent1Click end object recent4: TMenuItem Caption = '4' ShortCut = 16436 Visible = False OnClick = recent1Click end object recent5: TMenuItem Caption = '5' ShortCut = 16437 Visible = False OnClick = recent1Click end object recent6: TMenuItem Caption = '6' ShortCut = 16438 Visible = False OnClick = recent1Click end object recent7: TMenuItem Caption = '7' ShortCut = 16439 Visible = False OnClick = recent1Click end object recent8: TMenuItem Caption = '8' ShortCut = 16440 Visible = False OnClick = recent1Click end object N4: TMenuItem Caption = '-' end end object N5: TMenuItem Caption = '-' end object Saveasfits1: TMenuItem Caption = 'Save as FITS file' Enabled = False Hint = 'Save image as 32 bit, 16 bit or 8 bits FITS file. ' ImageIndex = 26 ShortCut = 16467 OnClick = Saveasfits1Click end object Export_image1: TMenuItem Caption = 'Export to PNG, TIFF, PPM/PGM' Enabled = False Hint = 'Save current image as 16 bit PNG, 16 or 32 bit TIFF or 16 bit PPM/PGM. Note that 32 bit files can be re-imported.' ShortCut = 16468 OnClick = Export_image1Click end object SaveasJPGPNGBMP1: TMenuItem Caption = 'Save as JPEG, PNG or BMP' Enabled = False Hint = 'Save image as JPEG, PNG or BMP. These files are 8 bit and include annotations.' ShortCut = 16458 OnClick = SaveasJPGPNGBMP1Click end object SaveFITSwithupdatedheader1: TMenuItem Caption = 'Update FITS header' Enabled = False Hint = 'Update FITS header as in the memo. ' OnClick = SaveFITSwithupdatedheader1Click end object MenuItem12: TMenuItem Caption = '-' end object settings_menu1: TMenuItem Caption = 'Settings' object save_settings1: TMenuItem Caption = 'Save settings' Hint = 'Save current settings' ImageIndex = 26 OnClick = save_settings1Click end object save_settings_as1: TMenuItem Caption = 'Save settings as' Hint = 'Settings will be saved as. Note that after restart the default.cfg is loaded automatically. ' OnClick = savesettings1Click end object MenuItem16: TMenuItem Caption = '-' end object Returntodefaultsettings1: TMenuItem Caption = 'Return to default settings and exit' Hint = 'Prgram will return to default settings' OnClick = Returntodefaultsettings1Click end object MenuItem17: TMenuItem Caption = '-' end object loadsettings1: TMenuItem Caption = 'Load settings' Hint = 'Load a configuration file' ImageIndex = 0 OnClick = loadsettings1Click end end object N1: TMenuItem Caption = '-' end object Exit1: TMenuItem Caption = '&Exit ( and save settings)' Hint = 'Save settings and leave the program' ShortCut = 16419 OnClick = Exit1Click end end object Stackimages1: TMenuItem Caption = 'Stack' Hint = 'Stack images. Short cut CTRL+A' ImageIndex = 4 ShortCut = 16449 OnClick = Stackimages1Click end object tools1: TMenuItem Caption = 'Tools' object astrometric_solve_image1: TMenuItem Caption = 'Solve image astrometric (plate solve)' Enabled = False Hint = 'Find astrometric solution using either the internal solver or astrometry.net if selected. PNG of JPEG files will be first converted to a 8 bit FITS file with the same name.' ShortCut = 16464 OnClick = astrometric_solve_image1Click end object sip1: TMenuItem Caption = 'Add SIP coefficients to header' Enabled = False Hint = 'SIP polynomial factors will be calculated and added to the header allowing more accurate position measurement outside the image center. This basic implementation will only compensate for barrel/pincushion distortion.' OnClick = sip1Click end object MenuItem9: TMenuItem Caption = '-' end object MenuItem7: TMenuItem Caption = 'Batch processing' Hint = 'Batch processes' object batch_add_solution1: TMenuItem Caption = 'Batch solve images FITS && TIFF' Hint = 'Find an astrometric (plate) solution for selected files and add to the FITS file header.' ShortCut = 32848 OnClick = batch_add_solution1Click end object batch_overwrite1: TMenuItem AutoCheck = True Caption = ' ☑ option "overwrite existing solutions' Hint = 'Overwrite existing astrometric solutions' end object add_limiting_magn_check1: TMenuItem AutoCheck = True Caption = ' ☑ option "Add limiting magnitude and SQM"' Hint = 'Add estimated limiting magnitude and SQM to the file header. The keyword LIM_MAGN and SQM can be configured in tab lights. For SQM enter a fixed pedestal value in viewer menu SQM report.' ShowAlwaysCheckable = True end object add_sip_check1: TMenuItem AutoCheck = True Caption = ' ☑ option "Add SIP coefficients" ' Hint = 'Add basic SIP coefficients for maximum readout accuracy.' ShowAlwaysCheckable = True end object maintain_date1: TMenuItem AutoCheck = True Caption = ' ☑ option "maintain date modified" ' Hint = 'Maintains the last date modified' end object MenuItem29: TMenuItem Caption = '-' end object batch_solve_astrometry_net: TMenuItem Caption = 'Batch solve images using local astrometry.net' Hint = 'Solve the image using a local vesion of astrometry.net' OnClick = batch_solve_astrometry_netClick end object MenuItem28: TMenuItem Caption = '-' end object convert_to_fits1: TMenuItem Caption = 'Batch convert to FITS' Hint = 'Convert the selected images to the FITS format.' OnClick = convert_to_fits1click end object save_to_tiff1: TMenuItem Caption = 'Batch convert to TIFF' Hint = 'Convert the selected images to the 16 bit or 32 bit TIFF format.' ImageIndex = 44 OnClick = save_to_tiff1Click end object save_to_tiff2: TMenuItem Caption = 'Batch convert to TIFF, preserve file date' ImageIndex = 44 ShortCut = 16452 OnClick = save_to_tiff1Click end object convert_to_ppm1: TMenuItem Caption = 'Batch convert to PBM/PFM' Hint = 'Convert the selected images to the 16 bit PBM (Portable Bit Map) or 32 bit PFM (Portable Float Map) format.' OnClick = convert_to_ppm1Click end object MenuItem31: TMenuItem Caption = '-' end object set_modified_date1: TMenuItem Caption = 'Set files date modified to DATE-OBS' Hint = 'Set for all files the "date modified" to the value in keyword DATE-OBS. This is the start time of the exposure.' ImageIndex = 43 OnClick = set_modified_date1Click end object Separator1: TMenuItem Caption = '-' end object move_images1: TMenuItem Caption = 'Move images to path "object, date"' Hint = 'Move selected images to a new directory based in the header info object name and exposure date.' OnClick = move_images1Click end object MenuItem27: TMenuItem Caption = '-' end object bin2x2: TMenuItem Caption = 'Batch convert bin2x2' Hint = 'Bin 2x2 all selected images' OnClick = bin2x2Click end object bin3x3: TMenuItem Caption = 'Batch convert bin3x3' Hint = 'Bin 3x3 all selected images' OnClick = bin2x2Click end object Rota_mainmenu1: TMenuItem Caption = 'Rotate' ImageIndex = 22 object batch_rotate_left1: TMenuItem Caption = 'Rotate 90 degrees left' Hint = 'Rotate the selected FITS images 90 degrees left' OnClick = batch_rotate_left1Click end object batch_rotate_right1: TMenuItem Caption = 'Rotate 90 degrees right' Hint = 'Rotate the selected FITS images 90 degrees right' OnClick = batch_rotate_left1Click end object batch_rotate_1801: TMenuItem Caption = 'Rotate 180 degrees' Hint = 'Rotate the selected FITS images 180 degrees.' OnClick = batch_rotate_left1Click end end object split_osc1: TMenuItem Caption = 'Raw colour separation' Hint = 'This will extract the colours from a raw DSLR/OCS image write them to separate files.' ImageIndex = 14 OnClick = split_osc1Click object extractgreen1: TMenuItem Caption = 'Extract raw GREEN pixels and combine' Hint = 'Will combine for each bayer submosaic the two green pixels. Check in advance the de-mosaic pattern in stack menu, tab stack method' OnClick = extractgreen1Click end object extractred1: TMenuItem Caption = 'Extract raw RED pixels' Hint = 'Check in advance the de-mosaic pattern in stack menu, tab stack method' OnClick = extractred1Click end object extractblue1: TMenuItem Caption = 'Extract raw BLUE pixels' Hint = 'Check in advance the de-mosaic pattern in stack menu, tab stack method' OnClick = extractblue1Click end object extract_pixel_11: TMenuItem Caption = 'Bayer matrix pixel 11' Hint = 'Pixels with position 11 in the Bayer matrix are extracted from the selected files.' OnClick = extract_pixel_11Click end object extract_pixel_12: TMenuItem Caption = 'Bayer matrix pixel 12' Hint = 'Pixels with position 12 in the Bayer matrix are extracted from the selected files.' OnClick = extract_pixel_12Click end object extract_pixel_21: TMenuItem Caption = 'Bayer matrix pixel 21' Hint = 'Pixels with position 21 in the Bayer matrix are extracted from the selected files.' OnClick = extract_pixel_21Click end object extract_pixel_22: TMenuItem Caption = 'Bayer matrix pixel 22' Hint = 'Pixels with position 22 in the Bayer matrix are extracted from the selected files.' OnClick = extract_pixel_22Click end end object remove_longitude_latitude1: TMenuItem Caption = 'Remove longitude && latitude info from files' Hint = 'Remove location data from the selected FITS files to protect your privacy. It will remove SITELAT (latitude) and SITELONG (longitude) keywords from the header. Original files will be renamed to *.bak' OnClick = remove_longitude_latitude1Click end object compress_fpack1: TMenuItem Caption = 'Batch compress FITS' Hint = 'Compress all files using the CFITSIO utility program fpack. Works best for 32 bit floating point fits files. Original files will be kept.' OnClick = compress_fpack1Click end object batch_annotate1: TMenuItem Caption = 'Batch annotate asteroids && comets' Hint = 'This will add asteroid or comet annotations to the fits header. Intended for the blinking routine or manual stacking. Batch solve the images first.' OnClick = batch_annotate1Click end end object N6: TMenuItem Caption = '-' end object imageinspection1: TMenuItem Caption = 'Image Inspection ' Enabled = False ImageIndex = 17 ShortCut = 116 OnClick = inspector1Click end object inspector1: TMenuItem Caption = '--- Hidden inspector ---' ShortCut = 115 Visible = False OnClick = inspection1click end object roundness1: TMenuItem Caption = '--- Hidden roundness' ShortCut = 114 Visible = False OnClick = roundness1Click end object MenuItem22: TMenuItem Caption = '--- Hidden abberation' ShortCut = 117 Visible = False OnClick = MenuItem22Click end object MenuItem2: TMenuItem Caption = '-' end object preview_demosaic1: TMenuItem AutoCheck = True Caption = 'Activate/deactivate auto de-mosaic' Hint = 'If checked, any new image in viewer will be demosaiced using bilinear interpolation.' end object demosaic_bayermatrix1: TMenuItem Caption = 'De-mosaic Bayer matrix ' Enabled = False Hint = 'Convert RAW to colour using interpolation. Set first correct Bayer pattern in the stack menu.' ImageIndex = 14 ShortCut = 119 OnClick = demosaic_bayermatrix1Click end object autocorrectcolours1: TMenuItem Caption = 'Auto correct colours.' Enabled = False Hint = 'Will adjust color settings to get gray background and average white stars. This is the same function as in tab pixel math' ImageIndex = 15 ShortCut = 120 OnClick = autocorrectcolours1Click end object removegreenpurple1: TMenuItem Caption = 'Remove green and purple filter' Enabled = False Hint = 'Balances RGB to remove green and purple.' OnClick = removegreenpurple1Click end object inversimage1: TMenuItem Caption = 'Inverse image' Enabled = False Hint = 'Inverse image. Saving will apply the changes the original image.' ShortCut = 16457 OnClick = inversimage1Click end object convertmono1: TMenuItem Caption = 'Convert to mono' Enabled = False Hint = 'Convert colour image to gray scale image' ImageIndex = 16 ShortCut = 16461 OnClick = convertmono1Click end object N3: TMenuItem Caption = '-' end object Stretchdrawmenu1: TMenuItem Caption = 'Bin or stretch' Hint = 'Bin or stretch the image' object bin_2x2menu1: TMenuItem Caption = 'Bin 2x2' Enabled = False Hint = 'Bin the image 2x2' ShortCut = 16497 OnClick = bin_2x2menu1Click end object bin_3x3menu1: TMenuItem Caption = 'Bin 3x3' Enabled = False Hint = 'Bin the image 3x3' ShortCut = 16498 OnClick = bin_2x2menu1Click end object MenuItem30: TMenuItem Caption = '-' end object stretch_draw1: TMenuItem Caption = 'Stretch draw' Enabled = False Hint = 'Like binning reduce the displayed resolution temporary using current zoom factor. To be used to create images of reduced resolution and to save to file or copy to clipboard.' OnClick = stretch_draw1Click end object stretch_draw_fits1: TMenuItem Caption = 'Stretch draw to FITS' Enabled = False Hint = 'Convert current view to a FITS image. This will use the current contrast setting and reduce resolution. ' OnClick = stretch_draw_fits1Click end end object Undo1: TMenuItem Caption = 'Undo' Enabled = False Hint = 'Undo last Bayer or binning action' ImageIndex = 2 ShortCut = 16474 OnClick = Undo1Click end object MenuItem19: TMenuItem Caption = '-' end object rotate1: TMenuItem Caption = 'Rotate image' Enabled = False Hint = 'Rotate the image.' ImageIndex = 31 object flip_H1: TMenuItem Caption = 'Flip horizontal' Hint = 'Flip the image horizontal. Saving will apply the change to the original image.' ImageIndex = 30 ShortCut = 49224 OnClick = flip_H1Click end object flip_v1: TMenuItem Caption = 'Flip vertical' Hint = 'Flip the image vertical. Saving will apply the change to the original image.' ImageIndex = 29 ShortCut = 49238 OnClick = flip_H1Click end object rotate_arbitrary1: TMenuItem Caption = 'Rotate arbitrary' Hint = 'Rotate the image with the angle specified. Accurate algorithm but image quality will be reduced unless 90,180 or 270 degrees rotation.' ImageIndex = 31 ShortCut = 49234 OnClick = rotate_arbitrary1Click end end object MenuItem10: TMenuItem Caption = '-' end object clean_up1: TMenuItem Caption = 'Clean-up' Hint = 'Redraw image. Remove any markers except annotations. For removal annotations reload or remove annotations from FITS header.' ImageIndex = 25 ShortCut = 16471 OnClick = clean_up1Click end object calibrate_photometry1: TMenuItem Caption = 'Calibrate photometry' Enabled = False Hint = 'Calibrate photometry using available star database (Gaia BP or V magnitude), Aperture setings are in tab photometry. Works best for raw/mono images. For colour images red channel will be used but accuracy will be less.' ShortCut = 16469 OnClick = calibrate_photometry1Click end object sqm1: TMenuItem Caption = 'SQM report based on an image' Enabled = False Hint = 'Will report the SQM value of the observation site. Use longer exposures. Avoid deepsky objects in the image' ShortCut = 16465 OnClick = sqm1Click end object annotate_with_measured_magnitudes1: TMenuItem Caption = 'Magnitude (measured) annotation' Enabled = False Hint = 'Annotate stars with measured star magnitude' ShortCut = 49229 OnClick = annotate_with_measured_magnitudes1Click end object star_annotation1: TMenuItem Caption = 'Star (database) annotation' Enabled = False Hint = 'Annotate all stars in the image. Plate solve the image first. For a G-database the indicated magnitude is Gaia blue. For a V-database the indicated magnitude is Johnson-V and the following the difference between Gaia blue and red, positive for reddish objects. All in 1/10 of a magnitude.' ImageIndex = 18 ShortCut = 16462 OnClick = star_annotation1Click end object annotate_unknown_stars1: TMenuItem Caption = 'Unknown star annotation' Enabled = False Hint = 'Annotate nova and minor planets using the star database. It will annotate any star like object one magnitude brighter or missing from the star database. For the H18 star database it will detect object up to magnitude 17.' ShortCut = 16575 OnClick = annotate_unknown_stars1Click end object variable_star_annotation1: TMenuItem Caption = 'Variable star annotation' Enabled = False Hint = 'Annotate all variable stars and comparison stars from the local database or AAVSO online database. Database setting is in tab Photometry.' ShortCut = 16459 OnClick = variable_star_annotation1Click end object annotate_minor_planets1: TMenuItem Caption = 'Asteroid && comet annotation' Enabled = False Hint = 'Annotate asteroids' ShortCut = 16466 OnClick = annotate_minor_planets1Click end object hyperleda_annotation1: TMenuItem Caption = 'Deepsky (HyperLeda) annotation' Enabled = False Hint = 'Use the huge HyperLeda database for annotation. Prior to this the image needs to be astrometric solved. Zoom in to get small font.' ShortCut = 16473 OnClick = hyperleda_annotation1Click end object deepsky_annotation1: TMenuItem Caption = 'Deepsky annotation' Enabled = False Hint = 'This will place deep sky annotations on the image. Prior to this the image needs to be astrometric solved. Zoom in to get smaller font' ImageIndex = 19 ShortCut = 16460 OnClick = deepsky_annotation1Click end end object View1: TMenuItem Caption = 'View' object image_cleanup1: TMenuItem Caption = 'Image cleanup' Hint = 'Clear the image of annotations' ShortCut = 16416 OnClick = image_cleanup1Click end object center_lost_windows: TMenuItem Caption = 'Center lost windows' ShortCut = 16507 OnClick = center_lost_windowsClick end object MenuItem11: TMenuItem Caption = '-' end object flip_horizontal1: TMenuItem AutoCheck = True Caption = 'Flip horizontal' Hint = 'Flip the image horizontal.' ImageIndex = 22 ShortCut = 16456 OnClick = flip_horizontal1Click end object flip_vertical1: TMenuItem AutoCheck = True Caption = 'Flip vertical' Hint = 'Flip image vertical.' ImageIndex = 23 ShortCut = 16470 OnClick = flip_vertical1Click end object zoomfactorone1: TMenuItem Caption = 'Zoom 100%' Hint = 'Zoom to 100%' OnClick = zoomfactorone1Click end object MenuItem20: TMenuItem Caption = '-' end object annotations_visible1: TMenuItem AutoCheck = True Caption = 'Annotations header visible' Checked = True Hint = 'Switches the annotations on/off. The annotations are stored in the FITS files header with keyword ANNOTATE' OnClick = annotations_visible1Click end object northeast1: TMenuItem AutoCheck = True Caption = 'North-East indicator image' Hint = 'Show a north-east indicator on the image.' OnClick = northeast1Click end object mountposition1: TMenuItem AutoCheck = True Caption = 'Mount position' Hint = 'Shows the mount position as a star and a large orientation indicator in the solved image. The center of the image is indicated as tiny lime coloured square. ' OnClick = mountposition1Click end object Constellations1: TMenuItem AutoCheck = True Caption = 'Constellations' Hint = 'Add the constellations to the image.' OnClick = Constellations1Click end object grid1: TMenuItem AutoCheck = True Caption = 'α, δ grid' Hint = 'Adds a right ascension & declination grid to image' ShortCut = 16455 OnClick = grid1Click end object MenuItem32: TMenuItem Caption = '-' end object positionanddate1: TMenuItem AutoCheck = True Caption = 'Center position && date at bottom' Hint = 'Add the center position and date and time at the left bottom of the image. Font colour and font size can be set in the asteroid annotation menu.' OnClick = positionanddate1Click end object freetext1: TMenuItem AutoCheck = True Caption = 'Free text at bottom' Hint = 'Add free text to bottom of the image. Font colour and font size can be set in the asteroid annotation menu.' OnClick = freetext1Click end object MenuItem15: TMenuItem Caption = '-' end object zoomout1: TMenuItem Caption = 'Zoom out' Hint = 'Zoom out' ImageIndex = 21 ShortCut = 33 OnClick = zoomout1Click end object zoomin1: TMenuItem Caption = 'Zoom in' Hint = 'Zoom in' ImageIndex = 20 ShortCut = 34 OnClick = zoomin1Click end end object Help: TMenuItem Caption = '&Help' object ShowFITSheader1: TMenuItem Caption = 'Show FITS header' Enabled = False OnClick = ShowFITSheader1Click end object N2: TMenuItem Caption = '-' end object helponline1: TMenuItem Caption = 'Online help and webpage' Hint = 'Open the ASTAP webpage' ShortCut = 112 OnClick = helponline1Click end object MenuItem3: TMenuItem Caption = '-' end object About1: TMenuItem Caption = '&About ASTAP' Hint = 'About this program' ImageIndex = 5 OnClick = About1Click end end end object OpenDialog1: TOpenDialog Filter = 'Flexible image transport system files|*.fit*' Options = [ofEnableSizing, ofForceShowHidden, ofViewDetail] OnSelectionChange = OpenDialog1SelectionChange Left = 936 Top = 208 end object SaveDialog1: TSaveDialog Options = [ofExtensionDifferent, ofEnableSizing, ofViewDetail] Left = 952 Top = 288 end object PopupMenu1: TPopupMenu Images = ImageList1 AutoPopup = False Left = 856 Top = 296 object Enter_annotation1: TMenuItem Caption = 'Add annotation' Hint = 'Add annotation text to current mouse position. Hold left mouse button down and pull a rectangle with mouse to extend connecting line. Add @ to the text for persistent annotations.' OnClick = Enter_annotation1Click end object Enter_rectangle_with_label1: TMenuItem Caption = 'Add rectangle with annotation' Hint = 'Add rectangle. Hold left mouse button down and pull a rectangle with mouse.' OnClick = Enter_annotation1Click end object add_marker1: TMenuItem AutoCheck = True Caption = 'Add marker' Hint = 'Add marker on image' OnClick = add_marker1Click end object MenuItem13: TMenuItem Caption = '-' end object writeposition1: TMenuItem Caption = 'Add object position' Hint = 'Add astronomical position of the object near the mouse position. Position is auto centered.' OnClick = writeposition1Click end object writepositionshort1: TMenuItem Caption = 'Add object position short' Enabled = False Hint = 'Add object position in short IAU designation style. If there is no lock, no position wll be given. Use then the previouse menu option.' OnClick = writeposition1Click end object MenuItem24: TMenuItem Caption = '-' end object add_marker_position1: TMenuItem AutoCheck = True Caption = 'Add marker at α, δ position' Enabled = False Hint = 'Place marker at specified α, δ position. ' OnClick = add_marker_position1Click end object measuretotalmagnitude1: TMenuItem Caption = 'Measure total magnitude within rectangle' Enabled = False Hint = 'This will report the total magnitude within the pulled rectangle. Flux is measured relative to median background up to five pixels outside the rectangle. Best accuracy is achieved by using monochrome images.' OnClick = measuretotalmagnitude1Click end object angular_distance1: TMenuItem Caption = 'Angular distance' ImageIndex = 35 OnClick = angular_distance1Click end object show_statistics1: TMenuItem Caption = 'Show statistics within rectangle' Hint = 'Calculate mean, median standard deviation, minimum and maximum values within the rectangle.' ImageIndex = 34 OnClick = show_statistics1Click end object remove_markers1: TMenuItem Caption = 'Clean-up ' Hint = 'Redraw image. Remove any markers except annotations. For removal annotations reload or remove annotations from FITS header.' ImageIndex = 25 OnClick = remove_markers1Click end object MenuItem14: TMenuItem Caption = '-' end object solvebytwopositions1: TMenuItem Caption = 'Solve by providing two positions' Hint = 'Add a solution to image by providing two positions ' object enterposition1: TMenuItem Caption = 'Enter position 1' OnClick = enterposition1Click end object enterposition2: TMenuItem Caption = 'Enter position 2' OnClick = enterposition1Click end object flipped1: TMenuItem AutoCheck = True Caption = 'Flipped' Hint = 'Specifiy if the image is flipped, east<->west or north<->south' OnClick = enterposition1Click end end object N7: TMenuItem Caption = '-' end object copy_to_clipboard1: TMenuItem Caption = 'Copy image (selection) to clipboard' Hint = 'Copies the image or a image selection to the clipboard. Selection orientation is dependent on the selection direction used.' OnClick = copy_to_clipboard1Click end object Copyposition1: TMenuItem Caption = 'Copy position to clipboard' Enabled = False Hint = 'The astronomical mouse position is copied to the clipboard.' OnClick = Copyposition1Click end object Copypositionindeg1: TMenuItem Caption = 'Copy position to clipboard in °' Enabled = False Hint = 'The astronomical mouse position in degrees is copied to the clipboard.' OnClick = Copypositionindeg1Click end object online_query1: TMenuItem Caption = 'Online query' Enabled = False ImageIndex = 37 object simbad_annotation_deepsky1: TMenuItem Caption = 'Simbad, deepsky annotation' Hint = 'Annotate the selected area with deepsky object info from Simbad' ImageIndex = 38 OnClick = gaia_star_position1Click end object simbad_annotation_star1: TMenuItem Caption = 'Simbad, star annotation' Hint = 'Annotate the selected area with star info from Simbad' ImageIndex = 38 OnClick = gaia_star_position1Click end object MenuItem21: TMenuItem Caption = '-' end object simbad_query1: TMenuItem Caption = 'Simbad, browser query' Hint = 'Retrieve online info of the select area in the default browser. To select an area, first hold the right mouse down and pull a rectangle.' ImageIndex = 38 OnClick = gaia_star_position1Click end object hyperleda_guery1: TMenuItem Caption = 'HyperLeda, browser query' Hint = 'Retrieve online info of the select area in the default browser. To select an area, first hold the right mouse down and pull a rectangle.' OnClick = gaia_star_position1Click end object ned_query1: TMenuItem Caption = 'NED, browser query' Hint = 'Retrieve online info of the select area in the default browser. To select an area, first hold the right mouse down and pull a rectangle.' OnClick = gaia_star_position1Click end object gaia_star_position1: TMenuItem Caption = 'Gaia, browser query' Hint = 'Will display the online information for any star within 5 arc seconds of the centroid. The Gaia BP (blue) magnitude matches the best with visual.' ImageIndex = 36 OnClick = gaia_star_position1Click end object MenuItem38: TMenuItem Caption = '-' end object aavso_chart1: TMenuItem Caption = 'AAVSO, browser chart request' Hint = 'Retrieve an AAVSO chart' OnClick = gaia_star_position1Click end end object N9: TMenuItem Caption = '-' end object local_adjustments1: TMenuItem Caption = 'Local adjustments' Hint = 'Local adjustments' ImageIndex = 42 object localcoloursmooth2: TMenuItem Caption = 'Local colour smooth stars' OnClick = localcoloursmooth2Click end object remove_colour1: TMenuItem Caption = 'Local remove colour' Hint = 'Intended for some ugly coloured stars in OSC images' OnClick = remove_colour1Click end object localgaussian1: TMenuItem Caption = 'Local Gaussian blur' Hint = 'Local Gaussian blur with factor as set in pixel math' OnClick = localgaussian1Click end object halo_removal1: TMenuItem Caption = 'Halo removal' Hint = 'Removes halos from stars. Select the halo while holding the right mouse down.' OnClick = halo_removal1Click end object MenuItem26: TMenuItem Caption = '-' end end object gradient_removal1: TMenuItem Caption = 'Gradient removal tool' Hint = 'Remove the light pollution gradient in whole image based on two positions. The greater the distance the better it works.' ImageIndex = 33 OnClick = gradient_removal1Click end object copy_paste_tool1: TMenuItem Caption = 'Copy paste tool' Hint = 'Copy the selected area to the next mouse click. Use this for small corrections in the background. Hold alt, ctrl, shift key for multi paste' ImageIndex = 32 OnClick = copy_paste_tool1Click end object MenuItem18: TMenuItem Caption = '-' end object set_area1: TMenuItem Caption = 'Set area' Hint = 'Set area for colour replace in tab pixel math 1.' OnClick = set_area1Click end object MenuItem4: TMenuItem Caption = '-' end object Remove_deep_sky_object1: TMenuItem Caption = 'Remove deep sky object (Ellipse shape)' Hint = 'Remove the deep sky object within the pulled rectangle' ImageIndex = 24 OnClick = Remove_deep_sky_object1Click end object MenuItem5: TMenuItem Caption = '-' end object MenuItem8: TMenuItem Caption = 'Remove borders' ImageIndex = 8 object remove_atmouse1: TMenuItem Caption = 'At mouse cursor' Hint = 'Remove border where mouse is positioned' OnClick = remove_atmouse1Click end object remove_left1: TMenuItem Caption = 'LEFT of mouse cursor' ImageIndex = 10 OnClick = remove_left1Click end object remove_right1: TMenuItem Caption = 'RIGHT of mouse cursor' ImageIndex = 11 OnClick = remove_right1Click end object remove_above1: TMenuItem Caption = 'ABOVE mouse cursor' ImageIndex = 12 OnClick = remove_above1Click end object remove_below1: TMenuItem Caption = 'BELOW mouse cursor' ImageIndex = 13 OnClick = remove_below1Click end end object CropFITSimage1: TMenuItem Caption = 'Crop FITS image' Hint = 'Pull first rectangle with mouse while holding right mouse button down.' ImageIndex = 9 OnClick = CropFITSimage1Click end object MenuItem1: TMenuItem Caption = '-' end end object ImageList1: TImageList ShareImages = True Left = 1024 Top = 207 Bitmap = { 4C7A2D0000001000000010000000FF0A00000000000078DAED5D498815CF196F 4872CC35B9247F10720801219001D15C5C0E8A7A105131B82FB8A2E0BEEBB8A2 8E33E2BE1CDC262EA8B8E37610111702193CE84583E622881A13486294B87CE9 AFEC7AA957AF96AF967EFDDE4CD7E3A397AADFB7D557F5AABBABAB93449F8E1D 3B06488947E2581F1E32D685875856B76FC3EBECF7B523F14C3D016F2A43C9CB 139F577C9B62BCDE94D421B5B6B602271FACEAD88797AC8F8F7E7259DCDEBD7B B74262BE4C3A7E225E47F5C49B6C50918C75D1472CEF630BC7F8FA4165838B0F 5DFC9494A9C72539864CE554385B395579931C5D3E45472A3E54BE8907453F57 D9656A96847DA8A91FE5F9AA32DFCFDBFE8BAB79F072766CEDD8A29A5CFF0364 1EEEFF1F3A5BDCB0B5F6F860AB7D48D5B9B6AC4907AABFCC79361DBBDB7FB96D CC13D29FBAE255E32D9B4E32DE555F1DDE3406D4E9E3A34B890FC7ABC6E73163 C175CC66BADECAABEDB8B66B6AFBEE4EFD9A2B96321EA7605D7884E243F50F91 DB48D818F85831D8ACFAC7BA6E0AE96F7CB121FD5C485F295F87ABF65DC743BE F15074FCC568FB213113CB673E755FC47F47932790C8394F8A195E4E75BE2AFF E1C38715BCC84BC6FE3F1FB478598E6E9F2A5FC517535EF2753CAACE19E4D3FC 9738E95F6BBF1A2FC782C666A5FC4D9B365591584ECE13E42506DE14EACE6DD9 74DC0C7850ECFBE80011FAC358F540BF0398C96EF5E4C171AD190F2A1FB9BC88 B3F150952D1A2FDAE4627FDDEEA8B7B6B2EED477ABFAB13EDA70CC7FFC5EAA2F 3E4FF91C23EEFBE860C2EAE48B727D6453FD66922FB67F1FD91C27B6678A7CB9 BC88B3E9A22A6BC2CBF25DF114F9A24D3AFB651D5C7C2EE27DB6EBD6AD0B269E C47D4A2AF125BEC487E38B26579D75F697F8125FE2DDF1CDD4FE4DFD9F2FBED9 F52FF125BEC8F82FDB4F892FDB4FCFFCFFFBFE2C4BA09A9B48DD3C5FFAC9806E 9F5FD67F0FAFFFB0670725D60FEB328F5CF5AEA2AB5C9F79EBA1EF6D1681F3B5 B127C6A4CB3CE1924A2AA9FB511EF30962F5FDBEFF91AE7DA44D0E05CF1FF62B 27E1A47936FE008992073F4F79274D87A7DA2FEB4091ADAA7711E75A87CAF7E6 536EAE631E398E5C792863A03BF1883F7F2C648E5E1173DDA00E32EA319F2F56 1F0E75B615027C1DDB975087FACF737E6DA3EB9B04CC7F3695A5F621E01803E0 A13FE4D0BF409DE23A8FF69557FC2475F649689F1BA3CF8E59A745B77B279C9C 887C9418C5B93CF05A9D35E795F8C4F2EE48DEF800FD1BC2FF9EF1A3E24D8D5F 8A5D796093106C4F68FFAAE4127F8E78F2F3DB6669FF79F8206FFF97EDDFEF59 40E87384D06710A6E712AECF306C325CE550F984F8ABBBAFC9121237A1BE8F19 23AEF1E81B2731DB1935BE42D65EA4AC61E0B3EE11C5FF54D994B5C44CD8907A 095DD73246BF9117DEC586BCE38B2AC3A56DDBE22E64EDD2A2E2EB57BF788F7C 131FE2581F1E32C68587AEACA88F8A6C58B19C4B198A2DBA32365B6CFC28FA16 914FD55FC5C7B57C4C7B42E2A71EB11FA3ED893CFE740192BC08AF497AF5EAA5 A496961676CD62C2EEDBB70F1E3F7EAC247E3D66C2DEBE7D5B49983F7DFA7425 9E8ADDB3674F0D1E8FF7EEDD6BC44E9B360D76EDDAC548C4E3FEEEDDBBE1FAF5 EB4AC2FCA953A742474707A3B6B6B60A9EEB7CF5EA552561FEE4C99361C78E1D 8C76EEDC09870F1FAEF8B077EFDEAC3E5484F963C78E85AD5BB73242B9870E1D AA927DEEDC392D613ECE33DFB2650B6CDBB60D0E1C385063F7993367B484F91B 376E6478B451E5F393274F2A69F3E6CDACFC860D1B6AFC2DE28F1F3FAE241E23 E86F53AC1D39724449E3C78F37C629C7DB28E736AA4DE5F76BEA8F0FFDFE50E8 F78FC4B231BFE1E4E3A366FA7E4F28BE28AA4CD62A985CBEA392273E54FF12EF 8E93F12E7C5CEA380FBC8A4711FEF7A5464AA1DF52AAC7B7984A7C3178D57B4C 3E73827DE320461CC588C1D8DF1FF15D1F8EBA2E990F0F6D9F5C47BC6E6D351F 3B7CD7EF2BF17EF8D0FA2B3AFE42DB4F2CFF973FBFFA722DE352CF7259D76F75 C6A650FD63F8AFFCC5FF55AD6FE289AB592745514E8733F134E15D75A3625D74 71F50B457628DEC6B728BC0F0F9FBAB7C973AD074A5CB8E4C7AE672A2E71FC66 81EB1AD3B6B2B1F189C7771842D6D716F1AE7E5295D5E9662AEB5AA7369E541E 26BC49178A7C1F5F99EAD3A54E8A8EE77AC46EA3FCAE5CB9022174F9F265E8D7 AF1F0C1A3408860D1B06A3478F66CFBAE7CC99038B172F6663C5EDDBB7C3FEFD FBA1B3B3132E5EBC08376FDE84FBF7EF33AC0D8F7DA788BF70E14215FED2A54B DE78C49E3F7F1EFAF6ED5B859F346912CC9E3DBB0A8FCFBE4F9C38518547ECE9 D3A7197EE0C08115FCC489134978C4A24EBE78C41E3D7A94E1070C1850859F35 6B96158F589C87C0F143870E8551A34655F08B162D82B56BD756F0F84C5EC423 16FDEA8B472CCE0BF0C523F6D4A95370EDDA352F426CE12DB0C0E77DA1CF0263 3E07A4F00D797E13E3D9A3AE5C4FC787FADF56FF2ECFF61AE57922991AF0FE59 51F7DA7DEFF3CBB818F7A74A1EF9F208ADE7A29E6B44BF070A8D459F3E7D8297 2F5FB2B111CEDFC4F1FAC78F1F497DE0DBB76F61CD9A356CECBA62C50A365775 E9D2A5F0F4E9532BFEDBB76F70EBD62D865FB972252C59B204162E5C08AB57AF 6663BF57AF5E31BD5EBC7801AF5FBF86CF9F3FD7F0C4BC214386301C8E21478C 18C1F8E0B500EA82DF8E5CB56A152C5FBE9C8D25918F88FFF0E103CBC3F9B638 F69C3973260C1E3C98EDE35C2D9C1F8C7368513F3C87E377AE3BDA8EE3699C2B 3B7CF870A6078E65E7CE9DCB6C421BD09FA80FFA07E7B6E21C59C43E79F204DA DBDBD9BCDEB367CFB271EDBC79F3181675C663F4C3FAF5EB1976E4C8913066CC 1878FEFC39BC79F3869541B938F71965A0AE68DFC18307D9F81975C5F134EA84 3E41BBEEDCB9C364E335DC82050B587DE1F502DA87BAE1B92953A6B0EB22F425 5E9FE076D9B26570E3C60DF8F2E50BB31DAFA1B02CEA8B7C274C98C0FC8DB819 3366409F3E7D986CF4055E7FA09F502EF7F9BB77EFD87500EA8573B3F1DA0BFD 87D704F3E7CF67BEBE77EF1E60B9AF5FBF822E66B1EE317E1E3D7A040F1E3C80 67CF9EC1FBF7EF59EC8AF21A8D7248BF4FE9644A7F4DE963B6C5E37E16DC8F52 DA95D2AB94FE9DD2FEEC1EC781EC18CFEFCCCAA95207BEE694D290949EA5F493 0C8FDBE7D979CC6F57605B1CEFBBB448F83FA63433DBEF126CE50EC6E33F67FB 58AE53C2FF25A55F66FB7F4BE9E7121E8FDF65FB3F64F688E93F8EFAFF5721FF 07837C5BEAB4D87F2AA51D29F54FE9C78EFEC7344338FE7B4A1B143CDA35F58F E9A729FD53B0FD379AF8EB50C41F4F8752FA474AFF4AE9654ABFD6F8A26F160F 58E6B370FE7729FD21A5DF667AFEAC11E6DC356ABF24525B5B022AB2E1BABABA 4087B5F1A094D7E14DB8AE6CE7BB7ED578C35A1D89B8E5781C53B8E0718FBF37 24CBB7AC15F23DBFAB521844FB394F992AE7719B19CFF1289BEB8F7C48FD96B0 7E07D71DB1BC9E29B1846545BB51072A56CD2F81666843D4FFFF71E3C669FB7C 535EB3E2F15C08F574FF95F5D7FCFEF31D3B70ACCDA7BABAD2E940A92BDBB1AB 8F42F165FB2C165F64FD87C66F48FB89D17E7509EF3DA928B41CF5BC5C46DC52 F3E4F326BC2ADF56DE744CD1872AC3C71E1F7F5074D3C9A0DAABC253EB5F85B7 614D76DB62D6C7F7367E549B4DFC5CEC76D5AF4CB477B87CB0E23A4FAA6F9D98 886354DFB7A07EEF25E4DD499DFC18F6D7C3FF65AA5FF2FDD650C81A6821EBCF B9624D6B0752D660B395A7AC4DA8D325563E352F642DCB18781F1ED4B51FF38C A1D8F1EFD9FE2094FAF7EF1F8415FE0B48249775C5A2BC509D63F84DA51B12F2 E732702B9EE3FB36DFC85BAA9F54782E53DCCF4BBE68B7EC6B9D5C97FAA7C49F 899F2A4FD4CB145FD45837F93776ECFD0FAFD0812F } end object TrayIcon1: TTrayIcon Icon.Data = { 7E03000000000100010010100000010018006803000016000000280000001000 0000200000000100180000000000000300006400000064000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFF000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000FFFFFF000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFF000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000FFFFFF000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFF000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000FFFFFF000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFF0000000000000000 00000000000000000000000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000000000000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000000000000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000000000000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000000000000000000000000000000000000000000000FFFFFF00 0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000 } Hint = 'ASTAP' Left = 1048 Top = 288 end object PopupNotifier1: TPopupNotifier Color = clInfoBk Icon.Data = { 055449636F6EFE0200000000010001002020100000000000E802000016000000 2800000020000000400000000100040000000000800200000000000000000000 0000000000000000000000000000800000800000008080008000000080008000 8080000080808000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00 FFFF0000FFFFFF00000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000000000000FFFFFFFFFFFFF FFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF000000FF0000000000F F0000000000FF000000FF0000000000FF0000000000FF000000FF0000000000F F0000000000FF000000FF0000000000FF0000000000FF000000FF0000000000F F0000000000FF000000FF0000000000FF0000000000FF000000FF0000000000F F0000000000FF000000FF0000000000FF0000000000FF000000FF0000000000F F0000000000FF000000FF0000000000FF0000000000FF000000FF0000000000F FFFFFFFFFFFFF000000FF0000000000FFFFFFFFFFFFFF000000FF00000000000 00000000000FF000000FF0000000000000000000000FF000000FF00000000000 00000000000FF000000FF0000000000000000000000FF000000FF00000000000 00000000000FF000000FF0000000000000000000000FF000000FF00000000000 00000000000FF000000FF0000000000000000000000FF000000FF00000000000 00000000000FF000000FF0000000000000000000000FF000000FFFFFFFFFFFFF FFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000 } Text = 'Text' Title = 'ASTAP astrometric solver' TitleFont.Style = [fsBold] Visible = False Left = 1128 Top = 288 end object SimpleIPCServer1: TSimpleIPCServer Active = False ServerID = 'astap' Global = True OnMessageQueued = SimpleIPCServer1MessageQueued Threaded = False Left = 1216 Top = 288 end object PopupMenu_ra_dec1: TPopupMenu Left = 1128 Top = 208 object radec_search1: TMenuItem Caption = 'Search database' Hint = 'Search for a deepsky object position.' OnClick = radec_search1Click end object radec_copy1: TMenuItem Caption = 'Copy' OnClick = radec_copy1Click end object radec_paste1: TMenuItem Caption = 'Paste' OnClick = radec_paste1Click end end object PopupMenu_memo1: TPopupMenu Left = 776 Top = 89 object Menufind1: TMenuItem Caption = 'Find' ShortCut = 16454 OnClick = Menufind1Click end object menufindnext1: TMenuItem Caption = 'Find next' ShortCut = 114 OnClick = menufindnext1Click end object menucopy1: TMenuItem Caption = 'Copy' OnClick = menucopy1Click end object menupaste: TMenuItem Caption = 'Paste' OnClick = menupasteClick end object select_all1: TMenuItem Caption = 'Select all' ShortCut = 16449 OnClick = select_all1Click end object MenuItem23: TMenuItem Caption = '-' end object selectfont1: TMenuItem Caption = 'Select font' Hint = 'Select another monospace font' OnClick = selectfont1Click end end object PopupMenu_memo2: TPopupMenu Left = 912 Top = 384 object Menufind2: TMenuItem Caption = 'Find' ShortCut = 16454 OnClick = Menufind1Click end object menufindnext2: TMenuItem Caption = 'Find next' ShortCut = 114 OnClick = menufindnext1Click end object menucopy2: TMenuItem Caption = 'Copy' OnClick = menucopy1Click end object menupaste1: TMenuItem Caption = 'Paste' OnClick = menupasteClick end object select_all2: TMenuItem Caption = 'Select all' ShortCut = 16449 OnClick = select_all1Click end end object PopupMenu_histogram1: TPopupMenu Left = 1080 Top = 376 object histogram_values_to_clipboard1: TMenuItem Caption = 'Copy the histogram values to the clipboard' Hint = 'Copies the histogram to the clipboard. They can be pasted to a spreadsheet.' OnClick = histogram_values_to_clipboard1Click end object MenuItem33: TMenuItem Caption = 'MenuItem33' end end object popupmenu_statusbar1: TPopupMenu Left = 1064 Top = 472 object j2000_1: TMenuItem AutoCheck = True Caption = 'J2000' Checked = True OnClick = j2000_1Click end object j2000d1: TMenuItem AutoCheck = True Caption = 'j2000 °' OnClick = j2000d1Click end object galactic1: TMenuItem AutoCheck = True Caption = 'Galactic' OnClick = galactic1Click end object MenuItem34: TMenuItem Caption = '-' end object hfd_arcseconds1: TMenuItem AutoCheck = True Caption = 'HFD in arc seconds' Hint = 'Display the HFD and FWHM in arc seconds rather then pixels.' OnClick = hfd_arcseconds1Click end object MenuItem35: TMenuItem Caption = '-' end object display_adu1: TMenuItem AutoCheck = True Caption = 'Display star ADU' Hint = 'Display the ADU (analog to digital units) of a star' OnClick = display_adu1Click end object MenuItem36: TMenuItem Caption = '-' end object noise_in_electron1: TMenuItem AutoCheck = True Caption = 'Noise and SNR based on e-' Hint = 'Noise and SNR values are calculated from electrons not from ADU''s. Noise in electrons uneffected by binning. For raw OSC images apply first binning 2x2.' end object electron_to_adu_factors1: TMenuItem Caption = 'Set ADU=>e- factors' Hint = 'Set the conversion factors' OnClick = electron_to_adu_factors1Click end end object FontDialog1: TFontDialog Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Name = 'Consolas' Font.Pitch = fpFixed Font.Quality = fqDraft Font.Style = [fsBold, fsItalic] MinFontSize = 0 MaxFontSize = 0 Options = [fdEffects, fdFixedPitchOnly, fdForceFontExist, fdShowHelp, fdWysiwyg] Left = 848 Top = 89 end object SelectDirectoryDialog1: TSelectDirectoryDialog Left = 1184 Top = 440 end end ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_gaussian_blur.pas��������������������������������������������������������0000644�0001751�0001751�00000012433�14344743400�020102� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_gaussian_blur; // idea based on http://users.atw.hu/delphicikk/listaz.php?id=1213&oldal=18 // The gaussian kernel exp(-(x^2 + y^2)) is of the form f(x)*g(y), which means that you can perform a two-dimensional convolution by doing a sequence // of one-dimensional convolutions - first you convolve each row and then each column. This is much faster (an N^2 becomes an N*2). // Any convolution requires some temporary storage - below the BlurRow routine allocates and frees the memory, meaning that it gets allocated and // freed once for each row. Probably changing this would speed it up some, it's not entirely clear how much. // The kernel "size" is limited to 200 entries. In fact if you use radius anything like that large it will take forever - you want to try this with // a radius = 3 or 5 or something. For a kernel with that many entries a straight convolution is the thing to do, while when the kernel gets much larger // Fourier transform techniques will be better (I couldn't say what the actual cutoff is.) // One comment that needs to be made is that a gaussian blur has the magical property that you can blur each row one by one and then blur each // column - this is much faster than an actual 2-d convolution. interface uses astap_main; procedure gaussian_blur2(img :image_array; radius: double);{apply gaussian blur on array} implementation uses SysUtils; const MaxKernelSize = 100; type TKernelSize = 1..MaxKernelSize; TKernel = record Size: TKernelSize; Weights: array[-MaxKernelSize..MaxKernelSize] of single; end; {the idea is that when using a TKernel you ignore the Weights except for Weights in the range -Size..Size.} procedure MakeGaussianKernel(var K: TKernel; radius: double; MaxData, DataGranularity: double); {makes K into a gaussian kernel with standard deviation = radius. For the current application you set MaxData = 255 and DataGranularity = 1. Now the procedure sets the value of K.Size so that when we use K we will ignore the Weights that are so small they can't possibly matter. (Small Size is good because the execution time is going to be propertional to K.Size.)} var j: integer; temp, delta: double; KernelSize: TKernelSize; begin for j := Low(K.Weights) to High(K.Weights) do begin temp := j / radius; K.Weights[j] := exp(-temp * temp / 2); end; {now divide by constant so sum(Weights) = 1:} temp := 0; for j := Low(K.Weights) to High(K.Weights) do temp := temp + K.Weights[j]; for j := Low(K.Weights) to High(K.Weights) do K.Weights[j] := K.Weights[j] / temp; {now discard (or rather mark as ignorable by setting Size) the entries that are too small to matter. This is important, otherwise a blur with a small radius will take as long as with a large radius...} KernelSize := MaxKernelSize; delta := DataGranularity / (2 * MaxData); temp := 0; while (temp < delta) and (KernelSize > 1) do begin temp := temp + 2 * K.Weights[KernelSize]; dec(KernelSize); end; K.Size := KernelSize; {now just to be correct go back and jiggle again so the sum of the entries we'll be using is exactly 1} temp := 0; for j := -K.Size to K.Size do temp := temp + K.Weights[j]; for j := -K.Size to K.Size do K.Weights[j] := K.Weights[j] / temp; end; procedure BlurH (scl, tcl :image_array; K: TKernel; w, h,colors : integer); var i,j,jx, x : integer; valr,valg,valb,weight : single; begin for i := 0 to h do for j := 0 to w do begin valr:=0; valg:=0; valb:=0; for jx:=-K.Size to K.Size do begin x:=j+jx; if x<0 then x:=0; if x>w then x:=w; weight := K.Weights[jx]; valr:=valr + scl[0,x,i]*weight; if colors>=2 then valg:=valg + scl[1,x,i]*weight; if colors>=3 then valb:=valb + scl[2,x,i]*weight; end; tcl[0,j,i] := valr; if colors>=2 then tcl[1,j,i] := valg; if colors>=3 then tcl[2,j,i] := valb; end; end; procedure BlurV (scl, tcl :image_array; K: TKernel; w, h,colors : integer); var i,j,iy, y :integer; valr,valg,valb,weight : single; begin for i := 0 to h do for j := 0 to w do begin valr:=0; valg:=0; valb:=0; for iy:=-K.Size to K.Size do begin y:=i+iy; if y<0 then y:=0; if y>h then y:=h; weight := K.Weights[iy]; valr:=valr + scl[0,j,y]*weight; if colors>=2 then valg:=valg + scl[1,j,y]*weight; if colors>=3 then valb:=valb + scl[2,j,y]*weight; end; tcl[0,j,i] := valr; if colors>=2 then tcl[1,j,i] := valg; if colors>=3 then tcl[2,j,i] := valb; end; end; procedure gaussian_blur2(img :image_array; radius: double);{apply gaussian blur on array} var K: TKernel; img_temp2 : image_array; w,h,colors :integer; begin MakeGaussianKernel(K, radius, 255, 1); colors:=Length(img); {colors} w:=Length(img[0]); {width} h:=Length(img[0][0]); {height} setlength(img_temp2,colors,w,h);{set length of image array} BlurH(img, img_temp2,k, w-1, h-1,colors); BlurV(img_temp2, img,k, w-1, h-1,colors); img_temp2:=nil; end; end. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_annotation.pas�����������������������������������������������������������0000644�0001751�0001751�00000261314�14344743400�017422� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_annotation; {deep sky and star annotation & photometry calibation of the image} {$mode delphi} {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } interface uses forms,Classes, SysUtils,strutils, math,graphics, Controls {for tcursor},astap_main, unit_stars_wide_field; procedure plot_deepsky;{plot the deep sky object on the image} procedure plot_vsx_vsp;{plot downloaded variable and comp stars} procedure load_deep;{load the deepsky database once. If loaded no action} procedure load_hyperleda;{load the HyperLeda database once. If loaded no action} procedure load_variable;{load variable stars. If loaded no action} procedure plot_and_measure_stars(flux_calibration,plot_stars, report_lim_magn: boolean);{flux calibration, annotate, report limiting magnitude} procedure measure_distortion(plot: boolean; out stars_measured: integer);{measure or plot distortion} procedure plot_artificial_stars(img: image_array);{plot stars as single pixel with a value as the mangitude. For super nova search} procedure plot_stars_used_for_solving(hd: Theader;correctionX,correctionY: double); {plot image stars and database stars used for the solution} function read_deepsky(searchmode:char; telescope_ra,telescope_dec, cos_telescope_dec {cos(telescope_dec},fov : double; out ra2,dec2,length2,width2,pa : double): boolean;{deepsky database search} procedure annotation_to_array(thestring : ansistring;transparant:boolean;colour,size, x,y {screen coord}: integer; var img: image_array);{string to image array as annotation, result is flicker free since the annotion is plotted as the rest of the image} function find_object(var objname : string; var ra0,dec0,length0,width0,pa : double): boolean; {find object in database} function calculate_undisturbed_image_scale : boolean;{calculate and correct the image scale as if the optical system is undisturbed. The distance between the stars in the center are measured and compared between detection and database. It is assumed that the center of the image is undisturbed optically } var deepstring : Tstrings; linepos : integer; naam2,naam3,naam4: string; var {################# initialised variables #########################} flux_magn_offset : double=0;{offset between star magnitude and flux. Will be calculated in stars are annotated} limiting_magnitude : double=0;{magnitude where snr is 5} counter_flux_measured : integer=0;{how many stars used for flux calibration} database_nr : integer=0; {1 is deepsky, 2 is hyperleda, 3 is variable loaded, 4=simbad} implementation uses unit_star_database, unit_stack, unit_star_align; const font_5x9 : packed array[33..126,0..8,0..4] of byte= {ASTAP native font for part of code page 437} (( (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,0,0,0), (0,0,1,0,0)),{!} ( (0,1,0,1,0), (0,1,0,1,0), (0,1,0,1,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0)),{"} ( (0,1,0,1,0), (0,1,0,1,0), (0,1,0,1,0), (1,1,1,1,1), (0,1,0,1,0), (1,1,1,1,1), (0,1,0,1,0), (0,1,0,1,0), (0,1,0,1,0)),{#} ( (0,0,1,0,0), (0,0,1,0,0), (0,1,1,1,1), (1,0,1,0,0), (0,1,1,1,0), (0,0,1,0,1), (1,1,1,1,0), (0,0,1,0,0), (0,0,1,0,0)),{dollar sign} ( (1,1,1,0,0), (1,0,1,0,0), (1,1,1,0,1), (0,0,0,1,0), (0,0,1,0,0), (0,1,0,0,0), (1,0,1,1,1), (0,0,1,0,1), (0,0,1,1,1)),{%} ( (0,0,0,0,0), (0,1,1,0,0), (1,0,0,1,0), (1,0,0,1,0), (0,1,1,0,0), (1,0,1,0,0), (1,0,0,1,0), (1,0,0,1,1), (0,1,1,0,0)),{&} ( (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0)),{'} ( (0,0,0,1,0), (0,0,1,0,0), (0,0,1,0,0), (0,1,0,0,0), (0,1,0,0,0), (0,1,0,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,0,1,0)),{(} ( (0,1,0,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,0,1,0), (0,0,0,1,0), (0,0,0,1,0), (0,0,1,0,0), (0,0,1,0,0), (0,1,0,0,0)),{)} ( (0,0,0,0,0), (0,0,1,0,0), (1,0,1,0,1), (1,1,1,1,1), (0,1,1,1,0), (1,1,1,1,1), (1,0,1,0,1), (0,0,1,0,0), (0,0,0,0,0)),{*} ( (0,0,0,0,0), (0,0,0,0,0), (0,0,1,0,0), (0,0,1,0,0), (1,1,1,1,1), (0,0,1,0,0), (0,0,1,0,0), (0,0,0,0,0), (0,0,0,0,0)),{+} ( (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,1,0,0,0)),{,} ( (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (1,1,1,1,1), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0)),{-} ( (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,1,1,0,0), (0,1,1,0,0)),{.} ( (0,0,0,0,0), (0,0,0,1,0), (0,0,0,1,0), (0,0,1,0,0), (0,0,1,0,0), (0,1,0,0,0), (0,1,0,0,0), (1,0,0,0,0), (1,0,0,0,0)),{/} ( (0,1,1,1,0),{0} (1,0,0,0,1), (1,0,0,0,1), (1,0,0,0,1), (1,0,0,0,1), (1,0,0,0,1), (1,0,0,0,1), (1,0,0,0,1), (0,1,1,1,0)), ( (0,0,1,0,0),{1} (0,1,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,1,1,1,0)), ( (0,1,1,1,0),{2} (1,0,0,0,1), (0,0,0,0,1), (0,0,0,0,1), (0,0,0,1,0), (0,0,1,0,0), (0,1,0,0,0), (1,0,0,0,0), (1,1,1,1,1)), ( (1,1,1,1,0),{3} (0,0,0,0,1), (0,0,0,0,1), (0,0,0,0,1), (0,1,1,1,1), (0,0,0,0,1), (0,0,0,0,1), (0,0,0,0,1), (1,1,1,1,0)), ( (1,0,0,0,1),{4} (1,0,0,0,1), (1,0,0,0,1), (1,0,0,0,1), (1,1,1,1,1), (0,0,0,0,1), (0,0,0,0,1), (0,0,0,0,1), (0,0,0,0,1)), ( (1,1,1,1,1),{5} (1,0,0,0,0), (1,0,0,0,0), (1,0,0,0,0), (1,1,1,1,0), (0,0,0,0,1), (0,0,0,0,1), (1,0,0,0,1), (0,1,1,1,0)), ( (0,1,1,1,0),{6} (1,0,0,0,0), (1,0,0,0,0), (1,0,0,0,0), (0,1,1,1,0), (1,0,0,0,1), (1,0,0,0,1), (1,0,0,0,1), (0,1,1,1,0)), ( (1,1,1,1,1),{7} (0,0,0,0,1), (0,0,0,0,1), (0,0,0,1,0), (0,0,0,1,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0)), ( (0,1,1,1,0),{8} (1,0,0,0,1), (1,0,0,0,1), (1,0,0,0,1), (0,1,1,1,0), (1,0,0,0,1), (1,0,0,0,1), (1,0,0,0,1), (0,1,1,1,0)), ( (0,1,1,1,0),{9} (1,0,0,0,1), (1,0,0,0,1), (1,0,0,0,1), (0,1,1,1,1), (0,0,0,0,1), (0,0,0,0,1), (0,0,0,1,0), (0,1,1,0,0)), ( (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,1,1,0), (0,0,1,1,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,1,1,0), (0,0,1,1,0)),{:} ( (0,0,0,0,0), (0,0,0,0,0), (0,0,1,1,0), (0,0,1,1,0), (0,0,0,0,0), (0,0,1,1,0), (0,0,1,1,0), (0,0,0,1,0), (0,1,1,1,0)),{;} ( (0,0,0,0,1), (0,0,0,1,0), (0,0,1,0,0), (0,1,0,0,0), (1,0,0,0,0), (0,1,0,0,0), (0,0,1,0,0), (0,0,0,1,0), (0,0,0,0,1)),{<} ( (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (1,1,1,1,1), (0,0,0,0,0), (0,0,0,0,0), (1,1,1,1,1), (0,0,0,0,0), (0,0,0,0,0)),{=} ( (1,0,0,0,0), (0,1,0,0,0), (0,0,1,0,0), (0,0,0,1,0), (0,0,0,0,1), (0,0,0,1,0), (0,0,1,0,0), (0,1,0,0,0), (1,0,0,0,0)),{>} ( (1,1,1,1,0), (1,0,0,0,1), (0,0,0,0,1), (0,0,0,1,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,0,0,0), (0,0,1,0,0), (0,0,1,0,0)),{?} ( (0,1,1,1,0), (1,0,0,0,1), (1,0,0,0,1), (1,0,1,1,1), (1,0,1,0,1), (1,0,1,1,1), (1,0,0,0,0), (1,0,0,0,1), (0,1,1,1,0)),{@} ( (0,0,1,0,0),{A} (0,1,0,1,0),{A} (0,1,0,1,0),{A} (1,0,0,0,1),{A} (1,0,0,0,1),{A} (1,1,1,1,1),{A} (1,0,0,0,1),{A} (1,0,0,0,1),{A} (1,0,0,0,1)),{A} ( (1,1,1,1,0),{B} (0,1,0,0,1),{B} (0,1,0,0,1),{B} (0,1,0,0,1),{B} (0,1,1,1,0),{B} (0,1,0,0,1),{B} (0,1,0,0,1),{B} (0,1,0,0,1),{B} (1,1,1,1,0)),{B} ( (0,1,1,1,0),{C} (1,0,0,0,1),{C} (1,0,0,0,0),{C} (1,0,0,0,0),{C} (1,0,0,0,0),{C} (1,0,0,0,0),{C} (1,0,0,0,0),{C} (1,0,0,0,1),{C} (0,1,1,1,0)),{C} ( (1,1,1,1,0),{D} (0,1,0,0,1),{D} (0,1,0,0,1),{D} (0,1,0,0,1),{D} (0,1,0,0,1),{D} (0,1,0,0,1),{D} (0,1,0,0,1),{D} (0,1,0,0,1),{D} (1,1,1,1,0)),{D} ( (1,1,1,1,1),{E} (1,0,0,0,0),{E} (1,0,0,0,0),{E} (1,0,0,0,0),{E} (1,1,1,1,0),{E} (1,0,0,0,0),{E} (1,0,0,0,0),{E} (1,0,0,0,0),{E} (1,1,1,1,1)),{E} ( (1,1,1,1,1),{F} (1,0,0,0,0),{F} (1,0,0,0,0),{F} (1,0,0,0,0),{F} (1,1,1,1,0),{F} (1,0,0,0,0),{F} (1,0,0,0,0),{F} (1,0,0,0,0),{F} (1,0,0,0,0)),{F} ( (0,1,1,1,0),{G} (1,0,0,0,1),{G} (1,0,0,0,0),{G} (1,0,0,0,0),{G} (1,0,0,1,1),{G} (1,0,0,0,1),{G} (1,0,0,0,1),{G} (1,0,0,1,1),{G} (0,1,1,0,1)),{G} ( (1,0,0,0,1),{H} (1,0,0,0,1),{H} (1,0,0,0,1),{H} (1,0,0,0,1),{H} (1,1,1,1,1),{H} (1,0,0,0,1),{H} (1,0,0,0,1),{H} (1,0,0,0,1),{H} (1,0,0,0,1)),{H} ( (1,1,1,1,1),{I} (0,0,1,0,0),{I} (0,0,1,0,0),{I} (0,0,1,0,0),{I} (0,0,1,0,0),{I} (0,0,1,0,0),{I} (0,0,1,0,0),{I} (0,0,1,0,0),{I} (1,1,1,1,1)),{I} ( (0,0,0,1,1),{J} (0,0,0,0,1),{J} (0,0,0,0,1),{J} (0,0,0,0,1),{J} (0,0,0,0,1),{J} (0,0,0,0,1),{J} (0,0,0,0,1),{J} (1,0,0,0,1),{J} (0,1,1,1,0)),{J} ( (1,0,0,0,1),{K} (1,0,0,0,1),{K} (1,0,0,1,0),{K} (1,0,1,0,0),{K} (1,1,0,0,0),{K} (1,0,1,0,0),{K} (1,0,0,1,0),{K} (1,0,0,0,1),{K} (1,0,0,0,1)),{K} ( (1,0,0,0,0),{L} (1,0,0,0,0),{L} (1,0,0,0,0),{L} (1,0,0,0,0),{L} (1,0,0,0,0),{L} (1,0,0,0,0),{L} (1,0,0,0,0),{L} (1,0,0,0,0),{L} (1,1,1,1,1)),{L} ( (1,0,0,0,1),{M} (1,1,0,1,1),{M} (1,1,0,1,1),{M} (1,0,1,0,1),{M} (1,0,1,0,1),{M} (1,0,0,0,1),{M} (1,0,0,0,1),{M} (1,0,0,0,1),{M} (1,0,0,0,1)),{M} ( (1,0,0,0,1),{N} (1,1,0,0,1),{N} (1,1,0,0,1),{N} (1,0,1,0,1),{N} (1,0,1,0,1),{N} (1,0,0,1,1),{N} (1,0,0,1,1),{N} (1,0,0,0,1),{N} (1,0,0,0,1)),{N} ( (0,1,1,1,0),{O} (1,0,0,0,1),{O} (1,0,0,0,1),{O} (1,0,0,0,1),{O} (1,0,0,0,1),{O} (1,0,0,0,1),{O} (1,0,0,0,1),{O} (1,0,0,0,1),{O} (0,1,1,1,0)),{O} ( (1,1,1,1,0),{P} (1,0,0,0,1),{P} (1,0,0,0,1),{P} (1,0,0,0,1),{P} (1,1,1,1,0),{P} (1,0,0,0,0),{P} (1,0,0,0,0),{P} (1,0,0,0,0),{P} (1,0,0,0,0)),{P} ( (0,1,1,1,0),{Q} (1,0,0,0,1),{Q} (1,0,0,0,1),{Q} (1,0,0,0,1),{Q} (1,0,0,0,1),{Q} (1,0,1,0,1),{Q} (0,1,1,1,0),{Q} (0,0,0,1,0),{Q} (0,0,0,0,1)),{Q} ( (1,1,1,1,0),{R} (1,0,0,0,1),{R} (1,0,0,0,1),{R} (1,0,0,0,1),{R} (1,1,1,1,0),{R} (1,1,0,0,0),{R} (1,0,1,0,0),{R} (1,0,0,1,0),{R} (1,0,0,0,1)),{R} ( (0,1,1,1,0),{S} (1,0,0,0,1),{S} (1,0,0,0,0),{S} (0,1,0,0,0),{S} (0,0,1,0,0),{S} (0,0,0,1,0),{S} (0,0,0,0,1),{S} (1,0,0,0,1),{S} (0,1,1,1,0)),{S} ( (1,1,1,1,1),{T} (1,0,1,0,1),{T} (0,0,1,0,0),{T} (0,0,1,0,0),{T} (0,0,1,0,0),{T} (0,0,1,0,0),{T} (0,0,1,0,0),{T} (0,0,1,0,0),{T} (0,1,1,1,0)),{T} ( (1,0,0,0,1),{U} (1,0,0,0,1),{U} (1,0,0,0,1),{U} (1,0,0,0,1),{U} (1,0,0,0,1),{U} (1,0,0,0,1),{U} (1,0,0,0,1),{U} (1,0,0,0,1),{U} (0,1,1,1,0)),{U} ( (1,0,0,0,1),{V} (1,0,0,0,1),{V} (1,0,0,0,1),{V} (1,0,0,0,1),{V} (1,0,0,0,1),{V} (1,0,0,0,1),{V} (0,1,0,1,0),{V} (0,1,0,1,0),{V} (0,0,1,0,0)),{V} ( (1,0,0,0,1),{W} (1,0,0,0,1),{W} (1,0,0,0,1),{W} (1,0,0,0,1),{W} (1,0,1,0,1),{W} (1,0,1,0,1),{W} (1,1,0,1,1),{W} (1,1,0,1,1),{W} (1,0,0,0,1)),{W} ( (1,0,0,0,1),{X} (1,0,0,0,1),{X} (0,1,0,1,0),{X} (0,1,0,1,0),{X} (0,0,1,0,0),{X} (0,1,0,1,0),{X} (0,1,0,1,0),{X} (1,0,0,0,1),{X} (1,0,0,0,1)),{X} ( (1,0,0,0,1),{Y} (1,0,0,0,1),{Y} (1,0,0,0,1),{Y} (0,1,0,1,0),{Y} (0,0,1,0,0),{Y} (0,0,1,0,0),{Y} (0,0,1,0,0),{Y} (0,0,1,0,0),{Y} (0,0,1,0,0)),{Y} ( (1,1,1,1,1),{Z} (0,0,0,0,1),{Z} (0,0,0,0,1),{Z} (0,0,0,1,0),{Z} (0,0,1,0,0),{Z} (0,1,0,0,0),{Z} (1,0,0,0,0),{Z} (1,0,0,0,0),{Z} (1,1,1,1,1)),{Z} ( (0,1,1,1,1), (0,1,0,0,0), (0,1,0,0,0), (0,1,0,0,0), (0,1,0,0,0), (0,1,0,0,0), (0,1,0,0,0), (0,1,0,0,0), (0,1,1,1,1)),{[} ( (0,0,0,0,0), (1,0,0,0,0), (1,0,0,0,0), (0,1,0,0,0), (0,1,0,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,0,1,0), (0,0,0,1,0)),{\} ( (1,1,1,1,0), (0,0,0,1,0), (0,0,0,1,0), (0,0,0,1,0), (0,0,0,1,0), (0,0,0,1,0), (0,0,0,1,0), (0,0,0,1,0), (1,1,1,1,0)),{]} ( (0,0,1,0,0), (0,1,0,1,0), (1,0,0,0,1), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0)),{^} ( (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (1,1,1,1,1)),{_} ( (0,0,1,0,0), (0,0,1,0,0), (0,0,0,1,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0)),{`} ( (0,0,0,0,0),{a} (0,0,0,0,0),{a} (0,0,0,0,0),{a} (0,1,1,1,0),{a} (0,0,0,0,1),{a} (0,1,1,1,1),{a} (1,0,0,0,1),{a} (1,0,0,1,1),{a} (0,1,1,0,1)),{a} ( (0,0,0,0,0),{b} (1,0,0,0,0),{b} (1,0,0,0,0),{b} (1,0,0,0,0),{b} (1,0,1,1,0),{b} (1,1,0,0,1),{b} (1,0,0,0,1),{b} (1,0,0,0,1),{b} (1,1,1,1,0)),{b} ( (0,0,0,0,0),{c} (0,0,0,0,0),{c} (0,0,0,0,0),{c} (0,1,1,1,0),{c} (1,0,0,0,0),{c} (1,0,0,0,0),{c} (1,0,0,0,0),{c} (1,0,0,0,1),{c} (0,1,1,1,0)),{c} ( (0,0,0,0,0),{d} (0,0,0,0,1),{d} (0,0,0,0,1),{d} (0,0,0,0,1),{d} (1,1,1,1,1),{d} (1,0,0,0,1),{d} (1,0,0,0,1),{d} (1,0,0,1,1),{d} (0,1,1,0,1)),{d} ( (0,0,0,0,0),{e} (0,0,0,0,0),{e} (0,0,0,0,0),{e} (0,1,1,1,0),{e} (1,0,0,0,1),{e} (1,0,0,0,1),{e} (1,1,1,1,0),{e} (1,0,0,0,0),{e} (0,1,1,1,1)),{e} ( (0,0,1,1,0),{f} (0,1,0,0,1),{f} (0,1,0,0,0),{f} (0,1,0,0,0),{f} (1,1,1,1,0),{f} (0,1,0,0,0),{f} (0,1,0,0,0),{f} (0,1,0,0,0),{f} (0,1,0,0,0)),{f} ( (0,0,0,0,0),{g} (0,0,0,0,0),{g} (0,0,0,0,0),{g} (0,1,1,1,1),{g} (1,0,0,0,1),{g} (1,0,0,1,1),{g} (0,1,1,0,1),{g} (0,0,0,0,1),{g} (1,1,1,1,0)),{g} ( (0,0,0,0,0),{h} (1,0,0,0,0),{h} (1,0,0,0,0),{h} (1,0,0,0,0),{h} (1,0,1,1,0),{h} (1,1,0,0,1),{h} (1,0,0,0,1),{h} (1,0,0,0,1),{h} (1,0,0,0,1)),{h} ( (0,0,0,0,0),{i} (0,1,1,0,0),{i} (0,0,0,0,0),{i} (0,1,1,0,0),{i} (0,0,1,0,0),{i} (0,0,1,0,0),{i} (0,0,1,0,0),{i} (0,0,1,0,0),{i} (1,1,1,1,1)),{i} ( (0,0,0,0,0),{j} (0,0,0,1,1),{j} (0,0,0,0,0),{j} (0,0,0,1,1),{j} (0,0,0,0,1),{j} (0,0,0,0,1),{j} (0,0,0,0,1),{j} (1,0,0,0,1),{j} (0,1,1,1,0)),{j} ( (0,0,0,0,0),{k} (1,0,0,0,0),{k} (1,0,0,0,0),{k} (1,0,0,0,1),{k} (1,0,0,1,0),{k} (1,1,1,0,0),{k} (1,0,1,0,0),{k} (1,0,0,1,0),{k} (1,0,0,0,1)),{k} ( (0,0,0,0,0),{l} (0,0,1,0,0),{l} (0,0,1,0,0),{l} (0,0,1,0,0),{l} (0,0,1,0,0),{l} (0,0,1,0,0),{l} (0,0,1,0,0),{l} (0,0,1,0,0),{l} (0,0,1,1,1)),{l} ( (0,0,0,0,0),{m} (0,0,0,0,0),{m} (0,0,0,0,0),{m} (1,1,0,1,0),{m} (1,0,1,0,1),{m} (1,0,1,0,1),{m} (1,0,1,0,1),{m} (1,0,0,0,1),{m} (1,0,0,0,1)),{m} ( (0,0,0,0,0),{n} (0,0,0,0,0),{n} (0,0,0,0,0),{n} (1,0,1,1,0),{n} (1,1,0,0,1),{n} (1,0,0,0,1),{n} (1,0,0,0,1),{n} (1,0,0,0,1),{n} (1,0,0,0,1)),{n} ( (0,0,0,0,0),{o} (0,0,0,0,0),{o} (0,0,0,0,0),{o} (0,1,1,1,0),{o} (1,0,0,0,1),{o} (1,0,0,0,1),{o} (1,0,0,0,1),{o} (1,0,0,0,1),{o} (0,1,1,1,0)),{o} ( (0,0,0,0,0),{p} (0,0,0,0,0),{p} (0,0,0,0,0),{p} (1,0,1,1,0),{p} (1,1,0,0,1),{p} (1,0,0,0,1),{p} (1,1,1,1,0),{p} (1,0,0,0,0),{p} (1,0,0,0,0)),{p} ( (0,0,0,0,0),{q} (0,0,0,0,0),{q} (0,0,0,0,0),{q} (0,1,1,1,1),{q} (1,0,0,0,1),{q} (1,0,0,1,1),{q} (0,1,1,0,1),{q} (0,0,0,0,1),{q} (0,0,0,0,1)),{q} ( (0,0,0,0,0),{r} (0,0,0,0,0),{r} (0,0,0,0,0),{r} (1,1,0,1,1),{r} (0,1,1,0,1),{r} (0,1,0,0,1),{r} (0,1,0,0,0),{r} (0,1,0,0,0),{r} (1,1,1,0,0)),{r} ( (0,0,0,0,0),{s} (0,0,0,0,0),{s} (0,0,0,0,0),{s} (0,1,1,1,1),{s} (1,0,0,0,0),{s} (0,1,1,1,0),{s} (0,0,0,0,1),{s} (0,0,0,0,1),{s} (1,1,1,1,0)),{s} ( (0,0,0,0,0),{t} (0,1,0,0,0),{t} (0,1,0,0,0),{t} (1,1,1,1,0),{t} (0,1,0,0,0),{t} (0,1,0,0,0),{t} (0,1,0,0,0),{t} (0,1,0,0,1),{t} (0,0,1,1,0)),{t} ( (0,0,0,0,0),{u} (0,0,0,0,0),{u} (0,0,0,0,0),{u} (1,0,0,0,1),{u} (1,0,0,0,1),{u} (1,0,0,0,1),{u} (1,0,0,0,1),{u} (1,0,0,1,1),{u} (0,1,1,0,1)),{u} ( (0,0,0,0,0),{v} (0,0,0,0,0),{v} (0,0,0,0,0),{v} (1,0,0,0,1),{v} (1,0,0,0,1),{v} (1,0,0,0,1),{v} (0,1,0,1,0),{v} (0,1,0,1,0),{v} (0,0,1,0,0)),{v} ( (0,0,0,0,0),{w} (0,0,0,0,0),{w} (0,0,0,0,0),{w} (1,0,0,0,1),{w} (1,0,0,0,1),{w} (1,0,1,0,1),{w} (1,0,1,0,1),{w} (1,1,0,1,1),{w} (1,0,0,0,1)),{w} ( (0,0,0,0,0),{x} (0,0,0,0,0),{x} (0,0,0,0,0),{x} (1,0,0,0,1),{x} (0,1,0,1,0),{x} (0,0,1,0,0),{x} (0,1,0,1,0),{x} (1,0,0,0,1),{x} (1,0,0,0,1)),{x} ( (0,0,0,0,0),{y} (0,0,0,0,0),{y} (0,0,0,0,0),{y} (1,0,0,0,1),{y} (1,0,0,0,1),{y} (1,0,0,1,1),{y} (0,1,1,0,1),{y} (0,0,0,0,1),{y} (1,1,1,1,0)),{y} ( (0,0,0,0,0),{z} (0,0,0,0,0),{z} (0,0,0,0,0),{z} (1,1,1,1,1),{z} (0,0,0,1,0),{z} (0,0,1,0,0),{z} (0,1,0,0,0),{z} (1,0,0,0,0),{z} (1,1,1,1,1)),{z} ( (0,0,1,1,0), (0,1,0,0,0), (0,1,0,0,0), (0,0,1,0,0), (1,1,1,0,0), (0,0,1,0,0), (0,1,0,0,0), (0,1,0,0,0), (0,0,1,1,0)),//{ Open curly bracket or open brace ( (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0), (0,0,1,0,0)),{|} ( (0,1,1,0,0), (0,0,0,1,0), (0,0,0,1,0), (0,0,1,0,0), (0,0,1,1,1), (0,0,1,0,0), (0,0,0,1,0), (0,0,0,1,0), (0,1,1,0,0)),//} Close curly bracket or close brace ( (0,0,0,0,0), (0,0,0,0,0), (0,1,0,0,1), (1,0,1,0,1), (1,0,1,0,1), (1,0,0,1,0), (0,0,0,0,0), (0,0,0,0,0), (0,0,0,0,0)){~} ); procedure annotation_to_array(thestring : ansistring;transparant:boolean;colour,size, x,y {screen coord}: integer; var img: image_array);{string to image array as annotation, result is flicker free since the annotion is plotted as the rest of the image} var {Screen coordinates are used to have the font with the correct orientation} w,h,i,j,k,value,flipV, flipH,len,x2,y2: integer; ch : pansichar; begin w:=Length(img[0]); {width} h:=Length(img[0,0]); {height} if mainwindow.Flip_horizontal1.Checked then {restore based on flipped conditions} begin x:=(w-1)-x; flipH:=-1; end else flipH:=1; if mainwindow.flip_vertical1.Checked then begin y:=(h-1)-y; flipV:=-1; end else flipV:=1; len:=length(thestring); for k:=1 to len do begin ch:=Pansichar(copy(thestring,k,1)); value:=ord(ch[0]); if ((value>=33) and (value<=126)) then for j:=(9*size)-1 downto 0 do for i:=0 to (5*size)-1 do begin x2:=x+(i+(k-1)*7*size)*flipH; y2:=y-(j*flipV); if ((x2>=0) and (x2<w) and (y2>=0) and (y2<h)) then {within image} if (((transparant=false)) or (font_5x9[value,j div size ,i div size]<>0)) then img[0,x2,y2]:=font_5x9[value,j div size,i div size]*colour;{write the font to the array} end; end; end; procedure load_deep;{load the deepsky database once. If loaded no action} begin if database_nr<>1 then {load deepsky database} begin with deepstring do begin try LoadFromFile(database_path+'deep_sky.csv');{load deep sky data from file } database_nr:=1;{1 is deepsky, 2 is hyperleda, 3 is variable loaded, 4=simbad} except; clear; beep; application.messagebox(pchar('Deep sky database not found. Download and unpack in program directory'),'',0); end; end; end; end; procedure load_variable;{load the variable star database once. If loaded no action} begin if database_nr<>3 then {load variable database} begin with deepstring do begin try LoadFromFile(database_path+'variable_stars.csv');{load deep sky data from file } database_nr:=3;{1 is deepsky, 2 is hyperleda, 3 is variable loaded, 4=simbad} except; clear; beep; application.messagebox(pchar('Variable star database not found!'),'',0); end; end; end; end; procedure load_hyperleda;{load the HyperLeda database once. If loaded no action} begin if database_nr<>2 then {load HyperLeda} begin with deepstring do begin try LoadFromFile(database_path+'hyperleda.csv');{load deep sky data from file } database_nr:=2;{1 is deepsky, 2 is hyperleda, 3 is variable loaded, 4=simbad} except; clear; beep; application.messagebox(pchar('HyperLeda database not found. Download and unpack in program directory'),'',0); end; end; end; end; //http://fastcode.sourceforge.net/ //function ValLong_JOH_PAS_4_c(Value: Integer): string; function Valint32(const s; var code: Integer): Longint;{fast val function, about 4 x faster} var Digit: Integer; Neg, Hex, Valid: Boolean; P: PChar; begin Code := 0; P := Pointer(S); if not Assigned(P) then begin Result := 0; inc(Code); Exit; end; Neg := False; Hex := False; Valid := False; while P^ = ' ' do Inc(P); if P^ in ['+', '-'] then begin Neg := (P^ = '-'); inc(P); end; if P^ = '$' then begin inc(P); Hex := True; end else begin if P^ = '0' then begin inc(P); Valid := True; end; if Upcase(P^) = 'X' then begin Hex := True; inc(P); end; end; Result := 0; if Hex then begin Valid := False; while True do begin case P^ of '0'..'9': Digit := Ord(P^) - Ord('0'); 'a'..'f': Digit := Ord(P^) - Ord('a') + 10; 'A'..'F': Digit := Ord(P^) - Ord('A') + 10; else Break; end; if (Result < 0) or (Result > $0FFFFFFF) then Break; Result := (Result shl 4) + Digit; Valid := True; inc(P); end; end else begin while True do begin if not (P^ in ['0'..'9']) then break; if Result > (MaxInt div 10) then break; Result := (Result * 10) + Ord(P^) - Ord('0'); Valid := True; inc(P); end; if Result < 0 then {Possible Overflow} if (Cardinal(Result) <> $80000000) or (not neg) then begin {Min(LongInt) = $80000000 is a Valid Result} Dec(P); Valid := False; end; end; if Neg then Result := -Result; if (not Valid) or (P^ <> #0) then Code := P-@S+1; end; function read_deepsky(searchmode:char; telescope_ra,telescope_dec, cos_telescope_dec {cos(telescope_dec},fov : double; out ra2,dec2,length2,width2,pa : double): boolean;{deepsky database search} var x,z,y : integer; fout,fout2, backsl1, backsl2,length_regel : integer; regel, data1 : string; delta_ra : double; p2,p1: pchar; begin repeat {until fout is 0} if linepos>=deepstring.count then begin // linepos:=$FFFFFF;{mark as finished} result:=false; exit; end; regel:=deepstring.strings[linepos]; {using regel,is faster then deepstring.strings[linepos]} inc(linepos); x:=1; z:=0; y:=0; P1 := Pointer(REGEL); length_regel:=length(regel); repeat {fast replacement for y:=posEx(',',regel,y+1); if y=0 then} {last field?} {y:=length(regel)+1;} while ((y<length_regel) and (p1^<>',')) do begin inc(y); inc(p1,1) end; inc(y); inc(p1,1); {fast replacement for data1:=copy(regel,x,y-x);} SetLength(data1, y-x); if y<>x then {not empthy 2018} begin P2 := Pointer(regel); inc(P2, X-1); move(P2^,data1[1], y-x); while ((length(data1)>1) and (data1[length(data1)]=' ')) do {remove spaces in the end since VAL( can't cope with them} delete(data1,length(data1),1); end;{not empthy} x:=y; inc(z); {new data field} case z of 1: ra2:=valint32(data1,fout)*pi*2/864000;{10*60*60*24, so RA 00:00 00.1=1} {valint32 takes 1 ms instead of 4ms} 2: begin dec2:=valint32(data1,fout)*pi*0.5/324000;{60*60*90, so DEC 00:00 01=1} delta_ra:=abs(ra2-telescope_ra); if delta_ra>pi then delta_ra:=pi*2-delta_ra; if ((searchmode<>'T') and {if searchmode is 'T' then full database search else within FOV} ( sqr( delta_ra*cos_telescope_dec) + sqr(dec2-telescope_dec)> sqr(fov) ) ) {calculate angular distance and skip when outside FOV} then fout:=99; {if true then outside screen,go to next line} end; 3: begin naam2:='';{for case data1='';} naam3:=''; naam4:=''; if length(data1)>0 then begin while (data1[1]=' ') do delete(data1,1,1); {remove spaces in front of the name, in practice faster then trimleft} backsl1:=pos('/',data1); if backsl1=0 then naam2:=data1 else begin naam2:=copy(data1,1,backsl1-1); backsl2:=posEX('/',data1,backsl1+2); { could also use LastDelimiter} if backsl2=0 then naam3:=copy(data1,backsl1+1,length(data1)-backsl1+1) else begin naam3:=copy(data1,backsl1+1,backsl2-backsl1-1); naam4:=copy(data1,backsl2+1,length(data1)-backsl2+1); end; end; end; end; 4: begin val(data1,length2,fout2);{accept floating points} end;{go to next object} 5: begin val(data1,width2,fout2);{accept floating points} end; 6: begin val(data1,pa,fout2);{accept floating points} if fout2<>0 then pa:=999;end; {orientation 0 komt ook voor daarom if not know=empthy equals 999} end; inc(x); until ((z>=6) or (fout<>0)); until fout=0; {repeat until no errors } result:=true; end; procedure plot_glx(dc:tcanvas;x9,y9,diameter,neigung {ratio width/length},orientation:double); {draw oval or galaxy} var glx :array[0..127 {nr}+1] of tpoint; i,nr : integer; r, sin_ori,cos_ori : double; begin if diameter<10 then nr:=22 else if diameter<20 then nr:=44 else nr:=127; if abs(neigung)<0.00001 then neigung:=0.00001;{show ring always also when it is flat} for i:=0 to nr+1 do begin r:=sqrt(sqr(diameter*neigung)/(1.00000000000001-(1-sqr(neigung))*sqr(cos(-pi*i*2/(nr))))); {radius ellips} sincos(orientation + pi*i*2/nr, sin_ori, cos_ori); glx[i].x:=round(x9 +r * sin_ori ); glx[i].y:=round(y9 +r * cos_ori ); end; dc.polygon(glx,nr+1) //else dc.polyline(glx,nr+1); end; procedure rotate(rot,x,y :double;var x2,y2:double);{rotate a vector point, angle seen from y-axis, counter clockwise} var sin_rot, cos_rot :double; begin sincos(rot, sin_rot, cos_rot); x2:=x * + sin_rot + y*cos_rot;{ROTATION MOON AROUND CENTER OF PLANET} y2:=x * - cos_rot + y*sin_rot;{SEE PRISMA WIS VADEMECUM BLZ 68} end; { transformation of equatorial coordinates into CCD pixel coordinates for optical projection, rigid method} { head.ra0,head.dec0: right ascension and declination of the optical axis} { ra,dec: right ascension and declination} { xx,yy : CCD coordinates} { cdelt: CCD scale in arcsec per pixel} procedure equatorial_standard(ra0,dec0,ra,dec, cdelt : double; var xx,yy: double); var dv,sin_dec0,cos_dec0,sin_dec ,cos_dec,sin_deltaRA,cos_deltaRA: double; begin sincos(dec0 ,sin_dec0 ,cos_dec0); sincos(dec ,sin_dec ,cos_dec ); sincos(ra-ra0, sin_deltaRA,cos_deltaRA); dv := (cos_dec0 * cos_dec * cos_deltaRA + sin_dec0 * sin_dec) / (3600*180/pi)*cdelt; {/ (3600*180/pi)*cdelt, factor for onversion standard coordinates to CCD pixels} xx := - cos_dec *sin_deltaRA / dv;{tangent of the angle in RA} yy := -(sin_dec0 * cos_dec * cos_deltaRA - cos_dec0 * sin_dec) / dv; {tangent of the angle in DEC} end; procedure plot_deepsky;{plot the deep sky object on the image} type textarea = record x1,y1,x2,y2 : integer; end; var dra,ddec, telescope_ra,telescope_dec,cos_telescope_dec,fov,ra2,dec2,length1,width1,pa,len,flipped, gx_orientation, delta_ra,det,SIN_dec_ref,COS_dec_ref,SIN_dec_new,COS_dec_new,SIN_delta_ra,COS_delta_ra,hh,u0,v0 : double; name: string; flip_horizontal, flip_vertical: boolean; text_dimensions : array of textarea; i,text_counter,th,tw,x1,y1,x2,y2,hf,x,y : integer; overlap,sip :boolean; begin if ((head.naxis<>0) and (head.cd1_1<>0)) then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } flip_vertical:=mainwindow.flip_vertical1.Checked; flip_horizontal:=mainwindow.flip_horizontal1.Checked; {6. Passage (x,y) -> (RA,DEC) to find head.ra0,head.dec0 for middle of the image. See http://alain.klotz.free.fr/audela/libtt/astm1-fr.htm} {find RA, DEC position of the middle of the image} {FITS range 1..width, if range 1,2,3,4 then middle is 2.5=(4+1)/2 } coordinates_to_celestial((head.width+1)/2,(head.height+1)/2,head,telescope_ra,telescope_dec); {fitsX, Y to ra,dec} {RA,DEC position of the middle of the image. Works also for case head.crpix1,head.crpix2 are not in the middle} cos_telescope_dec:=cos(telescope_dec); fov:=1.5*sqrt(sqr(0.5*head.width*head.cdelt1)+sqr(0.5*head.height*head.cdelt2))*pi/180; {field of view with 50% extra} linepos:=2;{Set pointer to the beginning. First two lines are comments} if ((head.cdelt1>0) = (head.cdelt2>0)) then flipped:=-1 {n-s or e-w flipped} else flipped:=1; {Flipped image. Either flipped vertical or horizontal but not both. Flipped both horizontal and vertical is equal to 180 degrees rotation and is not seen as flipped} {$ifdef mswindows} mainwindow.image1.Canvas.Font.Name :='default'; {$endif} {$ifdef linux} mainwindow.image1.Canvas.Font.Name :='DejaVu Sans'; {$endif} {$ifdef darwin} {MacOS} mainwindow.image1.Canvas.Font.Name :='Helvetica'; {$endif} mainwindow.image1.canvas.pen.color:=annotation_color; mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.font.color:=annotation_color; text_counter:=0; setlength(text_dimensions,200); sincos(head.dec0,SIN_dec_ref,COS_dec_ref);{do this in advance since it is for each pixel the same} while read_deepsky('S',telescope_ra,telescope_dec, cos_telescope_dec {cos(telescope_dec},fov,{var} ra2,dec2,length1,width1,pa) {deepsky database search} do begin {5. Conversion (RA,DEC) -> (x,y). See http://alain.klotz.free.fr/audela/libtt/astm1-fr.htm} sincos(dec2,SIN_dec_new,COS_dec_new);{sincos is faster then separate sin and cos functions} delta_ra:=ra2-head.ra0; sincos(delta_ra,SIN_delta_ra,COS_delta_ra); HH := SIN_dec_new*sin_dec_ref + COS_dec_new*COS_dec_ref*COS_delta_ra; dRA := (COS_dec_new*SIN_delta_ra / HH)*180/pi; dDEC:= ((SIN_dec_new*COS_dec_ref - COS_dec_new*SIN_dec_ref*COS_delta_ra ) / HH)*180/pi; det:=head.cd2_2*head.cd1_1 - head.cd1_2*head.cd2_1; u0:= - (head.cd1_2*dDEC - head.cd2_2*dRA) / det; v0:= + (head.cd1_1*dDEC - head.cd2_1*dRA) / det; if sip then {apply SIP correction} begin x:=round(head.crpix1 + u0 + ap_0_0 + ap_0_1*v0+ ap_0_2*v0*v0+ ap_0_3*v0*v0*v0 +ap_1_0*u0 + ap_1_1*u0*v0+ ap_1_2*u0*v0*v0+ ap_2_0*u0*u0 + ap_2_1*u0*u0*v0+ ap_3_0*u0*u0*u0)-1; {3th order SIP correction, fits count from 1, image from zero therefore subtract 1} y:=round(head.crpix2 + v0 + bp_0_0 + bp_0_1*v0+ bp_0_2*v0*v0+ bp_0_3*v0*v0*v0 +bp_1_0*u0 + bp_1_1*u0*v0+ bp_1_2*u0*v0*v0+ bp_2_0*u0*u0 + bp_2_1*u0*u0*v0+ bp_3_0*u0*u0*u0)-1; {3th order SIP correction} end else begin x:=round(head.crpix1 + u0)-1; {in image array range 0..width-1} y:=round(head.crpix2 + v0)-1; end; if ((x>-0.25*head.width) and (x<=1.25*head.width) and (y>-0.25*head.height) and (y<=1.25*head.height)) then {within image1 with some overlap} begin if database_nr=3 then //variables begin if ((abs(x-shape_fitsX)<5) and (abs(y-shape_fitsy)<5)) then // note shape_fitsX/Y are in sensor coordinates mainwindow.Shape_alignment_marker1.HINT:=copy(naam2,1,posex('_',naam2,4)-1); if ((abs(x-shape_fitsX2)<5) and (abs(y-shape_fitsy2)<5)) then // note shape_fitsX/Y are in sensor coordinates mainwindow.Shape_alignment_marker2.HINT:=copy(naam2,1,posex('_',naam2,4)-1); end; gx_orientation:=pa*flipped+head.crota2; if flip_horizontal then begin x:=(head.width-1)-x; gx_orientation:=-gx_orientation; end; if flip_vertical then gx_orientation:=-gx_orientation else y:=(head.height-1)-y; len:=length1/(abs(head.cdelt2)*60*10*2); {Length in pixels} {Plot deepsky text labels on an empthy text space.} { 1) If the center of the deepsky object is outside the image then don't plot text} { 2) If the text space is occupied, then move the text down. If the text crosses the bottom then use the original text position.} { 3) If the text crosses the right side of the image then move the text to the left.} { 4) If the text is moved in y then connect the text to the deepsky object with a vertical line.} if ( (x>=0) and (x<=head.width-1) and (y>=0) and (y<=head.height-1) and (naam2<>'') ) then {plot only text if center object is visible and has a name} begin if naam3='' then name:=naam2 else if naam4='' then name:=naam2+'/'+naam3 else name:=naam2+'/'+naam3+'/'+naam4; mainwindow.image1.Canvas.font.size:=round(min(20,max(8,len /2))); if copy(naam2,1,1)='0' then mainwindow.image1.Canvas.font.color:=cllime;{AAVSO reference star} {get text dimensions} th:=mainwindow.image1.Canvas.textheight(name); tw:=mainwindow.image1.Canvas.textwidth(name); x1:=x; y1:=y; x2:=x+ tw; y2:=y+ th ; if ((x1<=head.width) and (x2>head.width)) then begin x1:=x1-(x2-head.width);x2:=head.width;end; {if text is beyond right side, move left} if text_counter>0 then {find free space in y for text} begin repeat {find free text area} overlap:=false; i:=0; repeat {test overlap} if ( ((x1>=text_dimensions[i].x1) and (x1<=text_dimensions[i].x2) and (y1>=text_dimensions[i].y1) and (y1<=text_dimensions[i].y2)) {left top overlap} or ((x2>=text_dimensions[i].x1) and (x2<=text_dimensions[i].x2) and (y1>=text_dimensions[i].y1) and (y1<=text_dimensions[i].y2)) {right top overlap} or ((x1>=text_dimensions[i].x1) and (x1<=text_dimensions[i].x2) and (y2>=text_dimensions[i].y1) and (y2<=text_dimensions[i].y2)) {left bottom overlap} or ((x2>=text_dimensions[i].x1) and (x2<=text_dimensions[i].x2) and (y2>=text_dimensions[i].y1) and (y2<=text_dimensions[i].y2)) {right bottom overlap} or ((text_dimensions[i].x1>=x1) and (text_dimensions[i].x1<=x2) and (text_dimensions[i].y1>=y1) and (text_dimensions[i].y1<=y2)) {two corners of text_dimensions[i] within text} or ((text_dimensions[i].x2>=x1) and (text_dimensions[i].x2<=x2) and (text_dimensions[i].y2>=y1) and (text_dimensions[i].y2<=y2)) {two corners of text_dimensions[i] within text} ) then begin overlap:=true; {text overlaps an existing text} y1:=y1+(th div 3);{try to shift text one third of the text height down} y2:=y2+(th div 3); if y2>=head.height then {no space left, use original position} begin y1:=y; y2:=y+th ; overlap:=false;{stop searching} i:=$FFFFFFF;{stop searching} end; end; inc(i); until ((i>=text_counter) or (overlap) );{until all tested or found overlap} until overlap=false;{continue till no overlap} end; text_dimensions[text_counter].x1:=x1;{store text dimensions in array} text_dimensions[text_counter].y1:=y1; text_dimensions[text_counter].x2:=x2; text_dimensions[text_counter].y2:=y2; if y1<>y then {there was textual overlap} begin mainwindow.image1.Canvas.moveto(x,round(y+th/4)); mainwindow.image1.Canvas.lineto(x,y1); end; mainwindow.image1.Canvas.textout(x1,y1,name); inc(text_counter); if text_counter>=length(text_dimensions) then setlength(text_dimensions,text_counter+200);{increase size dynamic array} end;{centre object visible} {plot deepsky object} if width1=0 then begin width1:=length1;pa:=999;end; mainwindow.image1.Canvas.Pen.width :=min(4,max(1,round(len/70))); {len is already calculated earlier for the font size} if len<=2 then {too small to plot an elipse or circle, plot just four dots} begin mainwindow.image1.canvas.pixels[x-2,y+2]:=annotation_color; mainwindow.image1.canvas.pixels[x+2,y+2]:=annotation_color; mainwindow.image1.canvas.pixels[x-2,y-2]:=annotation_color; mainwindow.image1.canvas.pixels[x+2,y-2]:=annotation_color; end else begin if PA<>999 then plot_glx(mainwindow.image1.canvas,x,y,len,width1/length1,gx_orientation*pi/180) {draw oval or galaxy} else mainwindow.image1.canvas.ellipse(round(x-len),round(y-len),round(x+1+len),round(y+1+len));{circle, the y+1,x+1 are essential to center the circle(ellipse) at the middle of a pixel. Otherwise center is 0.5,0.5 pixel wrong in x, y} end; end; end; {while loop}; text_dimensions:=nil;{remove used memory} memo2_message('Added '+inttostr(text_counter)+ ' annotations.'); Screen.Cursor:=crDefault; end; end;{plot deep_sky} procedure plot_vsx_vsp;{plot downloaded variable and comp stars} type textarea = record x1,y1,x2,y2 : integer; end; var dra,ddec, telescope_ra,telescope_dec,length1,width1,pa,flipped, delta_ra,det,SIN_dec_ref,COS_dec_ref,SIN_dec_new,COS_dec_new,SIN_delta_ra,COS_delta_ra,hh,u0,v0,ra,dec : double; name: string; flip_horizontal, flip_vertical: boolean; text_dimensions : array of textarea; i,text_counter,th,tw,x1,y1,x2,y2,hf,x,y,count,counts,mode : integer; overlap,sip :boolean; begin if ((head.naxis<>0) and (head.cd1_1<>0)) then begin flip_vertical:=mainwindow.flip_vertical1.Checked; flip_horizontal:=mainwindow.flip_horizontal1.Checked; {6. Passage (x,y) -> (RA,DEC) to find head.ra0,head.dec0 for middle of the image. See http://alain.klotz.free.fr/audela/libtt/astm1-fr.htm} {find RA, DEC position of the middle of the image} {FITS range 1..width, if range 1,2,3,4 then middle is 2.5=(4+1)/2 } coordinates_to_celestial((head.width+1)/2,(head.height+1)/2,head,telescope_ra,telescope_dec); {fitsX, Y to ra,dec} {RA,DEC position of the middle of the image. Works also for case head.crpix1,head.crpix2 are not in the middle} cos_telescope_dec:=cos(telescope_dec); if ((head.cdelt1>0) = (head.cdelt2>0)) then flipped:=-1 {n-s or e-w flipped} else flipped:=1; {Flipped image. Either flipped vertical or horizontal but not both. Flipped both horizontal and vertical is equal to 180 degrees rotation and is not seen as flipped} {$ifdef mswindows} mainwindow.image1.Canvas.Font.Name :='default'; {$endif} {$ifdef linux} mainwindow.image1.Canvas.Font.Name :='DejaVu Sans'; {$endif} {$ifdef darwin} {MacOS} mainwindow.image1.Canvas.Font.Name :='Helvetica'; {$endif} mainwindow.image1.canvas.pen.color:=annotation_color; mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.font.size:=8;//round(min(20,max(8,len /2))); text_counter:=0; setlength(text_dimensions,200); sincos(head.dec0,SIN_dec_ref,COS_dec_ref);{do this in advance since it is for each pixel the same} for mode:=1 to 2 do //do both vsx and vsp begin if mode=1 then mainwindow.image1.Canvas.font.color:=annotation_color{variable} else mainwindow.image1.Canvas.font.color:=cllime;{AAVSO reference star} if mode=1 then counts:=length(vsx) else counts:=length(vsp); count:=0; while count<counts do //go through data begin {5. Conversion (RA,DEC) -> (x,y). See http://alain.klotz.free.fr/audela/libtt/astm1-fr.htm} if mode=1 then begin ra:=vsx[count].ra; dec:=vsx[count].dec;end else begin ra:=vsp[count].ra; dec:=vsp[count].dec;end; sincos(dec,SIN_dec_new,COS_dec_new);{sincos is faster then separate sin and cos functions} delta_ra:=ra-head.ra0; sincos(delta_ra,SIN_delta_ra,COS_delta_ra); HH := SIN_dec_new*sin_dec_ref + COS_dec_new*COS_dec_ref*COS_delta_ra; dRA := (COS_dec_new*SIN_delta_ra / HH)*180/pi; dDEC:= ((SIN_dec_new*COS_dec_ref - COS_dec_new*SIN_dec_ref*COS_delta_ra ) / HH)*180/pi; det:=head.cd2_2*head.cd1_1 - head.cd1_2*head.cd2_1; u0:= - (head.cd1_2*dDEC - head.cd2_2*dRA) / det; v0:= + (head.cd1_1*dDEC - head.cd2_1*dRA) / det; if sip then {apply SIP correction} begin x:=round(head.crpix1 + u0 + ap_0_0 + ap_0_1*v0+ ap_0_2*v0*v0+ ap_0_3*v0*v0*v0 +ap_1_0*u0 + ap_1_1*u0*v0+ ap_1_2*u0*v0*v0+ ap_2_0*u0*u0 + ap_2_1*u0*u0*v0+ ap_3_0*u0*u0*u0)-1; {3th order SIP correction, fits count from 1, image from zero therefore subtract 1} y:=round(head.crpix2 + v0 + bp_0_0 + bp_0_1*v0+ bp_0_2*v0*v0+ bp_0_3*v0*v0*v0 +bp_1_0*u0 + bp_1_1*u0*v0+ bp_1_2*u0*v0*v0+ bp_2_0*u0*u0 + bp_2_1*u0*u0*v0+ bp_3_0*u0*u0*u0)-1; {3th order SIP correction} end else begin x:=round(head.crpix1 + u0)-1; {in image array range 0..width-1} y:=round(head.crpix2 + v0)-1; end; if ((x>0) and (x<head.width-1) and (y>0) and (y<head.height-1)) then {within image1} begin {Plot deepsky text labels on an empthy text space.} { 1) If the center of the deepsky object is outside the image then don't plot text} { 2) If the text space is occupied, then move the text down. If the text crosses the bottom then use the original text position.} { 3) If the text crosses the right side of the image then move the text to the left.} { 4) If the text is moved in y then connect the text to the deepsky object with a vertical line.} if mode=1 then begin name:=vsx[count].name+'_'+vsx[count].maxmag+'-'+vsx[count].minmag+'_'+vsx[count].category+'_Period_'+vsx[count].period; if ((abs(x-shape_fitsX)<5) and (abs(y-shape_fitsy)<5)) then // note shape_fitsX/Y are in sensor coordinates mainwindow.Shape_alignment_marker1.HINT:=vsx[count].name; end else begin name:=vsp[count].auid; if ((abs(x-shape_fitsX2)<5) and (abs(y-shape_fitsy2)<5)) then // note shape_fitsX/Y are in sensor coordinates mainwindow.Shape_alignment_marker2.HINT:=name; if vsp[count].Vmag<>'?' then name:=name+'_V='+vsp[count].Vmag+'('+vsp[count].Verr+')'; if vsp[count].Bmag<>'?' then name:=name+'_B='+vsp[count].Bmag+'('+vsp[count].Berr+')'; end; if flip_horizontal then begin x:=(head.width-1)-x; end; if flip_vertical then else y:=(head.height-1)-y; {get text dimensions} th:=mainwindow.image1.Canvas.textheight(name); tw:=mainwindow.image1.Canvas.textwidth(name); x1:=x; y1:=y; x2:=x+ tw; y2:=y+ th ; if ((x1<=head.width) and (x2>head.width)) then begin x1:=x1-(x2-head.width);x2:=head.width;end; {if text is beyond right side, move left} if text_counter>0 then {find free space in y for text} begin repeat {find free text area} overlap:=false; i:=0; repeat {test overlap} if ( ((x1>=text_dimensions[i].x1) and (x1<=text_dimensions[i].x2) and (y1>=text_dimensions[i].y1) and (y1<=text_dimensions[i].y2)) {left top overlap} or ((x2>=text_dimensions[i].x1) and (x2<=text_dimensions[i].x2) and (y1>=text_dimensions[i].y1) and (y1<=text_dimensions[i].y2)) {right top overlap} or ((x1>=text_dimensions[i].x1) and (x1<=text_dimensions[i].x2) and (y2>=text_dimensions[i].y1) and (y2<=text_dimensions[i].y2)) {left bottom overlap} or ((x2>=text_dimensions[i].x1) and (x2<=text_dimensions[i].x2) and (y2>=text_dimensions[i].y1) and (y2<=text_dimensions[i].y2)) {right bottom overlap} or ((text_dimensions[i].x1>=x1) and (text_dimensions[i].x1<=x2) and (text_dimensions[i].y1>=y1) and (text_dimensions[i].y1<=y2)) {two corners of text_dimensions[i] within text} or ((text_dimensions[i].x2>=x1) and (text_dimensions[i].x2<=x2) and (text_dimensions[i].y2>=y1) and (text_dimensions[i].y2<=y2)) {two corners of text_dimensions[i] within text} ) then begin overlap:=true; {text overlaps an existing text} y1:=y1+(th div 3);{try to shift text one third of the text height down} y2:=y2+(th div 3); if y2>=head.height then {no space left, use original position} begin y1:=y; y2:=y+th ; overlap:=false;{stop searching} i:=$FFFFFFF;{stop searching} end; end; inc(i); until ((i>=text_counter) or (overlap) );{until all tested or found overlap} until overlap=false;{continue till no overlap} end; text_dimensions[text_counter].x1:=x1;{store text dimensions in array} text_dimensions[text_counter].y1:=y1; text_dimensions[text_counter].x2:=x2; text_dimensions[text_counter].y2:=y2; if y1<>y then {there was textual overlap} begin mainwindow.image1.Canvas.moveto(x,round(y+th/4)); mainwindow.image1.Canvas.lineto(x,y1); end; mainwindow.image1.Canvas.textout(x1,y1,name); inc(text_counter); if text_counter>=length(text_dimensions) then setlength(text_dimensions,text_counter+200);{increase size dynamic array} {plot deepsky object} mainwindow.image1.Canvas.Pen.width :=1;//min(4,max(1,round(len/70))); mainwindow.image1.canvas.pixels[x-2,y+2]:=annotation_color; mainwindow.image1.canvas.pixels[x+2,y+2]:=annotation_color; mainwindow.image1.canvas.pixels[x-2,y-2]:=annotation_color; mainwindow.image1.canvas.pixels[x+2,y-2]:=annotation_color; end; inc(count); end;//while loop end;//plot vsx and vsp text_dimensions:=nil;{remove used memory} //memo2_message('Added '+inttostr(text_counter)+ ' annotations.'); end; end;{plot vsp stars} function Gaia_star_color(Bp_Rp: integer):integer; begin if Bp_Rp=-128 then result:=$00FF00 {unknown, green} else if Bp_Rp<=-0.25*10 then result:=$FF0000 {<-0.25 blauw} else if Bp_Rp<=-0.1*10 then result:=$FFFF00 {-0.25 tot -0.1 cyaan} else if Bp_Rp<=0.3*10 then result:=$FFFFFF {-0.1 tot 0.3 wit} else if Bp_Rp<=0.7*10 then result:=$A5FFFF {0.3 tot 0.7 geelwit} else if Bp_Rp<=1.0*10 then result:=$00FFFF {0.7 tot 1.0 geel} else if Bp_Rp<=1.5*10 then result:=$00A5FF {1.0 tot 1.5 oranje} else result:=$0000FF; {>1.5 rood} end; procedure get_best_meanold(list: array of double; leng : integer; out mean,cv : double);{Remove outliers from polulation using MAD. } var {idea from https://eurekastatistics.com/using-the-median-absolute-deviation-to-find-outliers/} i,count : integer; median, mad : double; begin mad_median(list,leng,mad,median);{{calculate mad and median without modifying the data} if median>0 then cv:=mad*1.4826/median else cv:=0; {Coefficient of variation, defined as the ratio of the standard deviation to the mean} count:=0; mean:=0; for i:=0 to leng-1 do if abs(list[i]-median)<1.50*1.4826*mad then {offset less the 1.5*sigma.} begin mean:=mean+list[i];{Calculate mean. This gives a little less noise then calculating median again. Note weighted mean gives poorer result and is not applied.} inc(count); end; if count>0 then mean:=mean/count; {mean without using outliers} end; procedure get_best_mean(list: array of double; leng : integer; out mean, cv : double);{Remove outliers from polulation using MAD. } var {idea from https://eurekastatistics.com/using-the-median-absolute-deviation-to-find-outliers/} i,count : integer; median, mad : double; begin cv:=0; if leng=1 then begin mean:=list[0];exit end else if leng=2 then begin mean:=(list[0]+list[1])/2;exit end; mad_median(list,leng,mad,median);{calculate mad and median without modifying the data} if median>0 then cv:=mad*1.4826/median; {Coefficient of variation, defined as the ratio of the standard deviation to the mean} count:=0; mean:=0; for i:=0 to leng-1 do if abs(list[i]-median)<1.50*1.4826*mad then {offset less the 1.5*sigma.} begin mean:=mean+list[i];{Calculate mean. This gives a little less noise then calculating median again. Note weighted mean gives poorer result and is not applied.} inc(count); end; if count>0 then mean:=mean/count; {mean without using outliers} end; procedure plot_and_measure_stars(flux_calibration,plot_stars, report_lim_magn: boolean);{flux calibration, annotate, report limiting magnitude} var dra,ddec, telescope_ra,telescope_dec,fov,ra2,dec2, mag2,Bp_Rp, hfd1,star_fwhm,snr, flux, xc,yc,magn, delta_ra,sep,det,SIN_dec_ref,COS_dec_ref,cv,fov_org, SIN_dec_new,COS_dec_new,SIN_delta_ra,COS_delta_ra,hh,frac1,frac2,frac3,frac4,u0,v0,x,y,x2,y2,flux_snr_7,apert,xx,yy : double; star_total_counter,len, max_nr_stars, area1,area2,area3,area4,nrstars_required2,count : integer; flip_horizontal, flip_vertical : boolean; mag_offset_array,hfd_x_sd : array of double; Save_Cursor : TCursor; mess : string; procedure plot_star; begin if ((flux_calibration) and ( bp_rp>12) and (bp_rp<>999){mono colour database})then exit;{too red star for flux calibration. Bp-Rp>1.2 for about 30% of the stars} {5. Conversion (RA,DEC) -> (x,y)} sincos(dec2,SIN_dec_new,COS_dec_new);{sincos is faster then separate sin and cos functions} delta_ra:=ra2-head.ra0; sincos(delta_ra,SIN_delta_ra,COS_delta_ra); HH := SIN_dec_new*sin_dec_ref + COS_dec_new*COS_dec_ref*COS_delta_ra; dRA := (COS_dec_new*SIN_delta_ra / HH)*180/pi; dDEC:= ((SIN_dec_new*COS_dec_ref - COS_dec_new*SIN_dec_ref*COS_delta_ra ) / HH)*180/pi; det:=head.cd2_2*head.cd1_1 - head.cd1_2*head.cd2_1; u0:= - (head.cd1_2*dDEC - head.cd2_2*dRA) / det; v0:= + (head.cd1_1*dDEC - head.cd2_1*dRA) / det; if sip then {apply SIP correction, sky to pixel} begin x:=(head.crpix1 + u0 + ap_0_0 + ap_0_1*v0+ ap_0_2*v0*v0+ ap_0_3*v0*v0*v0 +ap_1_0*u0 + ap_1_1*u0*v0+ ap_1_2*u0*v0*v0+ ap_2_0*u0*u0 + ap_2_1*u0*u0*v0+ ap_3_0*u0*u0*u0)-1; {3th order SIP correction, fits count from 1, image from zero therefore subtract 1} y:=(head.crpix2 + v0 + bp_0_0 + bp_0_1*v0+ bp_0_2*v0*v0+ bp_0_3*v0*v0*v0 +bp_1_0*u0 + bp_1_1*u0*v0+ bp_1_2*u0*v0*v0+ bp_2_0*u0*u0 + bp_2_1*u0*u0*v0+ bp_3_0*u0*u0*u0)-1; {3th order SIP correction} end else begin x:=(head.crpix1 + u0)-1; {in image array range 0..width-1} y:=(head.crpix2 + v0)-1; end; if ((x>-50) and (x<=head.width+50) and (y>-50) and (y<=head.height+50)) then {within image1 with some overlap} begin inc(star_total_counter); if flip_horizontal then x2:=(head.width-1)-x else x2:=x; if flip_vertical then y2:=y else y2:=(head.height-1)-y; if plot_stars then begin {annotate} if Bp_Rp<>999 then {colour version} begin mainwindow.image1.Canvas.textout(round(x2),round(y2),inttostr(round(mag2))+':'+inttostr(round(Bp_Rp)) { +'<-'+inttostr(area290) }); mainwindow.image1.canvas.pen.color:=Gaia_star_color(round(Bp_Rp));{color circel} end else mainwindow.image1.Canvas.textout(round(x2),round(y2),inttostr(round(mag2)) ); len:=round((200-mag2)/5.02); mainwindow.image1.canvas.ellipse(round(x2-len),round(y2-len),round(x2+1+len),round(y2+1+len));{circle, the y+1,x+1 are essential to center the circle(ellipse) at the middle of a pixel. Otherwise center is 0.5,0.5 pixel wrong in x, y} end; if flux_calibration then begin HFD(img_loaded,round(x),round(y), annulus_radius{14,annulus radius},flux_aperture,0 {adu_e}, hfd1,star_fwhm,snr,flux,xc,yc);{star HFD and FWHM} if ((hfd1<15) and (hfd1>=0.8) {two pixels minimum}) then if snr>30 then {star detected in img_loaded. 30 is found emperical} begin if ((flux_calibration){calibrate flux} and (img_loaded[0,round(xc),round(yc)]<head.datamax_org-1) and (img_loaded[0,round(xc-1),round(yc)]<head.datamax_org-1) and (img_loaded[0,round(xc+1),round(yc)]<head.datamax_org-1) and (img_loaded[0,round(xc),round(yc-1)]<head.datamax_org-1) and (img_loaded[0,round(xc),round(yc+1)]<head.datamax_org-1) and (img_loaded[0,round(xc-1),round(yc-1)]<head.datamax_org-1) and (img_loaded[0,round(xc-1),round(yc+1)]<head.datamax_org-1) and (img_loaded[0,round(xc+1),round(yc-1)]<head.datamax_org-1) and (img_loaded[0,round(xc+1),round(yc+1)]<head.datamax_org-1) ) then {not saturated} begin magn:=(-ln(flux)*2.511886432/LN(10)); if counter_flux_measured>=length(mag_offset_array) then begin SetLength(mag_offset_array,counter_flux_measured+500);{increase length array} if report_lim_magn then SetLength(hfd_x_sd,counter_flux_measured+500);{increase length array} end; mag_offset_array[counter_flux_measured]:=mag2/10-magn; if report_lim_magn then begin hfd_x_sd[counter_flux_measured]:=hfd1*sd_bg;{calculate hfd*SD. sd_bg is a global variable from procedure hfd. The minimum diameter for star detection is 4} end; // memo2_message(#9+floattostr4(snr)+#9+floattostr4(hfd1)+#9+floattostr4(R_aperture)+#9+floattostr4(sd_bg) ); inc(counter_flux_measured); {increase counter of number of stars analysed} end; end; {snr>30} end;{flux calibration} end; end; begin if ((head.naxis<>0) and (head.cd1_1<>0)) then begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } flip_vertical:=mainwindow.flip_vertical1.Checked; flip_horizontal:=mainwindow.flip_horizontal1.Checked; // sip:=((ap_order>=2) and (mainwindow.Polynomial1.itemindex=1));{use sip corrections?} Already set bp_rp:=999;{not defined in mono versions of the database} {Fits range 1..width, if range 1,2,3,4 then middle is 2.5=(4+1)/2 } coordinates_to_celestial((head.width+1)/2,(head.height+1)/2,head,telescope_ra,telescope_dec); {RA,DEC position of the middle of the image. Works also for case head.crpix1,head.crpix2 are not in the middle} mainwindow.image1.Canvas.Pen.width :=1; // round(1+head.height/mainwindow.image1.height);{thickness lines} mainwindow.image1.canvas.pen.color:=$00B0FF ;{orange} {$ifdef mswindows} mainwindow.image1.Canvas.Font.Name :='default'; {$endif} {$ifdef linux} mainwindow.image1.Canvas.Font.Name :='DejaVu Sans'; {$endif} {$ifdef darwin} {MacOS} mainwindow.image1.Canvas.Font.Name :='Helvetica'; {$endif} mainwindow.image1.Canvas.font.size:=8; //round(14*head.height/mainwindow.image1.height);{adapt font to image dimensions} mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.font.color:=$00B0FF ;{orange} star_total_counter:=0;{total counter} counter_flux_measured:=0; max_nr_stars:=round(head.width*head.height*(1216/(2328*1760))); {Check 1216 stars in a circle resulting in about 1000 stars in a rectangle for image 2328 x1760 pixels} if flux_calibration then begin max_nr_stars:=round(max_nr_stars*0.6); {limit to the brightest stars. Fainter stars have more noise} setlength(mag_offset_array,max_nr_stars); if report_lim_magn then setlength(hfd_x_sd,max_nr_stars); end; {sets file290 so do before fov selection} if select_star_database(stackmenu1.star_database1.text,head.height*abs(head.cdelt2) {fov})=false then begin application.messagebox(pchar('No star database found!'+#13+'Download the h18 (or h17 or v17) and extract the files to the program directory'), pchar('No star database!'),0); exit; end; memo2_message('Using star database '+uppercase(name_database)); fov_org:= sqrt(sqr(head.width*head.cdelt1)+sqr(head.height*head.cdelt2))*pi/180; {field of view circle covering all corners with 0% extra} sincos(head.dec0,SIN_dec_ref,COS_dec_ref);{do this in advance since it is for each pixel the same} if database_type<>001 then {1476 or 290 files} begin if database_type=1476 then {.1476 files} fov:=min(fov_org,5.142857143*pi/180) {warning FOV should be less the database tiles dimensions, so <=5.142857143 degrees. Otherwise a tile beyond next tile could be selected} else {.290 files} fov:=min(fov_org,9.53*pi/180); {warning FOV should be less the database tiles dimensions, so <=9.53 degrees. Otherwise a tile beyond next tile could be selected} if fov_org>fov then max_nr_stars:=round(max_nr_stars*fov/fov_org);{reduce number of stars for very large FOV} find_areas( telescope_ra,telescope_dec, fov,{var} area1,area2,area3,area4, frac1,frac2,frac3,frac4);{find up to four star database areas for the square image} {read 1th area} if area1<>0 then {read 1th area} begin if open_database(telescope_dec,area1)=false then begin exit; end; {open database file or reset buffer} nrstars_required2:=trunc(max_nr_stars * frac1); while ((star_total_counter<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp)) ) do plot_star;{add star} end; {read 2th area} if area2<>0 then {read 2th area} begin if open_database(telescope_dec,area2)=false then begin exit; end; {open database file or reset buffer} nrstars_required2:=trunc(max_nr_stars * (frac1+frac2)); while ((star_total_counter<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp)) ) do plot_star;{add star} end; {read 3th area} if area3<>0 then {read 3th area} begin if open_database(telescope_dec,area3)=false then begin exit; end; {open database file or reset buffer} nrstars_required2:=trunc(max_nr_stars * (frac1+frac2+frac3)); while ((star_total_counter<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp)) ) do plot_star;{add star} end; {read 4th area} if area4<>0 then {read 4th area} begin if open_database(telescope_dec,area4)=false then begin exit; end; {open database file or reset buffer} nrstars_required2:=trunc(max_nr_stars * (frac1+frac2+frac3+frac4)); while ((star_total_counter<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp)) and (bp_rp>12) ) do plot_star;{add star} end; close_star_database; end else begin {001 database} if wide_database<>name_database then read_stars_wide_field;{load wide field stars array} count:=0; cos_telescope_dec:=cos(telescope_dec); while ((star_total_counter<max_nr_stars) and (count<length(wide_field_stars) div 3) ) do {star file 001 database read. Read up to nrstars_required} begin mag2:=wide_field_stars[count*3];{contains: mag1, ra1,dec1, mag2,ra2,dec2,mag3........} ra2:=wide_field_stars[count*3+1]; dec2:=wide_field_stars[count*3+2]; ang_sep(ra2,dec2,telescope_ra,telescope_dec, sep);{angular seperation} if ((sep<fov_org*0.5*0.9*(2/sqrt(pi))) and (sep<pi/2)) then {factor 2/sqrt(pi) is to adapt circle search field to surface square. Factor 0.9 is a fiddle factor for trees, house and dark corners. Factor <pi/2 is the limit for procedure equatorial_standard} begin plot_star;{add star} inc(star_total_counter); end; inc(count); end; end; if flux_calibration then {flux calibration} begin if counter_flux_measured>=3 then {at least three stars} begin get_best_mean(mag_offset_array,counter_flux_measured {length},flux_magn_offset,cv ); if flux_aperture=99 then memo2_message('Photometry calibration for EXTENDED OBJECTS successful. '+inttostr(counter_flux_measured)+ ' Gaia stars used for flux calibration. Flux aperture diameter: measured star diameter.'+ ' Coefficient of variation: '+floattostrF(cv*100,ffgeneral,2,1)+ '%. Annulus inner diameter: '+inttostr(1+(annulus_radius)*2){background is measured 2 pixels outside rs}+' pixels. Stars with pixel values of '+inttostr(round(head.datamax_org))+' or higher are ignored.') else memo2_message('Photometry calibration for POINT SOURCES successful. '+inttostr(counter_flux_measured)+ ' Gaia stars used for flux calibration. Flux aperture diameter: '+floattostrf(flux_aperture*2, ffgeneral, 2,2)+' pixels.'+ ' Coefficient of variation: '+floattostrF(cv*100,ffgeneral,2,1)+ '%. Annulus inner diameter: '+inttostr(1+(annulus_radius)*2){background is measured 2 pixels outside rs}+' pixels. Stars with pixel values of '+inttostr(round(head.datamax_org))+' or higher are ignored.'); if report_lim_magn then begin {snr formula snr:=flux/sqrt(flux + r*r*pi* sd^2). for faint stars snr ≈flux/sqrt( 0 + r*r*pi* sd^2) flux≈snr*sqrt( 0 + r*r*pi* sd^2) flux≈snr*r*sqrt(pi)*sd flux≈snr*(hfd*0.8)*sqrt(pi)*sd assuming star diameter is 2*hfd, so radius is hfd flux≈snr*sqrt(pi)*sd*hfd*0.8 } flux_snr_7:=7*sqrt(pi)*Smedian(hfd_x_sd,counter_flux_measured {length}){*0.8{fiddle factor} ;{Assuming minimum SNR is 10 and the aperture is reduced to about hfd for the faintest stars.} apert:=strtofloat2(stackmenu1.flux_aperture1.text);{aperture diamater expressed in HFD's. If aperture diameter is HFD, half of the star flux is lost} if apert=0 then apert:=10; {aperture is zero if is set at max text. Set very high} //encircled flux =1-EXP(-0.5*(radial_distance/sigma)^2) //encircled flux =1-EXP(-0.5*((apert*HFD/2)/(HFD/2.3548))^2) //encircled flux =1-EXP(-0.5*(apert*2.3548/2))^2) flux_snr_7:=flux_snr_7*(1-EXP(-0.5*sqr(apert*2.3548/2 {sigma}))); {Correction for reduced aparture.} magn_limit:=flux_magn_offset-ln(flux_snr_7)*2.511886432/ln(10); {global variable} mess:='Limiting magnitude is '+ floattostrF(magn_limit,ffgeneral,3,1)+' (7σ, aperture ⌀'+stackmenu1.flux_aperture1.text+')'; memo2_message(mess); mainwindow.caption:='Photometry calibration successful. '+mess; end; end else begin flux_magn_offset:=0; mess:='Calibration failure!'; mainwindow.caption:=mess; memo2_message(mess); end; mag_offset_array:=nil; hfd_x_sd:=nil; end; Screen.Cursor:=crDefault; end;{fits file} end;{plot stars} function calculate_undisturbed_image_scale : boolean;{calculate and correct the image scale as if the optical system is undisturbed. The distance between the stars in the center are measured and compared between detection and database. It is assumed that the center of the image is undisturbed optically } var i,j,count,stars_measured,count2 : integer; x1,y1,x2,y2,xc1,yc1,xc2,yc2,factor,r1,r2,d1,d2,range : double; factors : array of double; begin measure_distortion(false {plot and no sip correction},stars_measured);{measure stars against the database} setlength(factors,stars_measured); range:=0.05; {start with 0.05+0.05 is 0.1 range} if stars_measured>0 then repeat count:=0; range:=range+0.05; {increase range of center for finding stars} begin for i:=0 to stars_measured-1 do begin x1:=distortion_data[0,i]-head.crpix1;{database, x from center} y1:=distortion_data[1,i]-head.crpix2; r1:=sqr(x1)+sqr(y1);{distance from centre image} if r1<sqr(range{0.1}*head.height) then {short distance 10% of image scale, distortion low} begin count2:=0; for j:=0 to stars_measured-1 do {second loop} if ((i<>j) and (count2<6)) then {compare against a few other stars in center} begin x2:=distortion_data[0,j]-head.crpix1;{database, x from center} y2:=distortion_data[1,j]-head.crpix2; r2:=sqr(x2)+sqr(y2);{distance from centre image} if r2<sqr(range{0.1}*head.height) then {short distance 10% of image scale, distortion low} begin xc1:=distortion_data[2,i]-head.crpix1;{database, x from center} yc1:=distortion_data[3,i]-head.crpix2; xc2:=distortion_data[2,j]-head.crpix1;{database, x from center} yc2:=distortion_data[3,j]-head.crpix2; d1:=sqr(x1-x2)+sqr(y1-y2); if d1>sqr(0.5*range{0.1}*head.height) then {some distance} begin d2:=sqr(xc1-xc2)+sqr(yc1-yc2); factors[count]:=sqrt(d1/d2) ; //Ratio between close distance stars of database and image stars for center of the image. It is assumed that the center of the image is undisturbed optically inc(count,1); inc(count2,1); if count>length(factors) then setlength(factors,count+stars_measured); end; end; end; end; end; factor:=smedian(factors,count);{filter out outliers using median} end; until ((count>50 {about 50/6 stars}) or (range>=0.3)); if count>50 then begin head.cd1_1:=head.cd1_1*factor; head.cd1_2:=head.cd1_2*factor; head.cd2_1:=head.cd2_1*factor; head.cd2_2:=head.cd2_2*factor; head.cdelt1:=head.cdelt1*factor; head.cdelt2:=head.cdelt2*factor; update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_2); update_float ('CDELT1 =',' / X pixel size (deg) ' ,head.cdelt1); update_float ('CDELT2 =',' / Y pixel size (deg) ' ,head.cdelt2); if factor<1 then memo2_message('Assuming barrel distortion.') else memo2_message('Assuming pincushion distortion.'); memo2_message('Measured the undisturbed image scale in center and corrected image scale with factor '+floattostr6(factor)+'. Used '+inttostr(round(range*100))+'% of image'); result:=true; end else begin memo2_message('Failed to measure undisturbed image scale'); factor:=1; result:=false; end; factors:=nil;{release memory} end; procedure measure_distortion(plot: boolean; out stars_measured : integer);{measure or plot distortion} var dra,ddec, telescope_ra,telescope_dec,fov,fov_org,ra2,dec2, mag2,Bp_Rp, hfd1,star_fwhm,snr, flux, xc,yc,magn, delta_ra,det,SIN_dec_ref,COS_dec_ref, SIN_dec_new,COS_dec_new,SIN_delta_ra,COS_delta_ra,hh,frac1,frac2,frac3,frac4,u0,v0,snr_min,x,y,x2,y2,astrometric_error,sep : double; star_total_counter,len, max_nr_stars, area1,area2,area3,area4,nrstars_required2,i,sub_counter,scale,count : integer; flip_horizontal, flip_vertical,sip : boolean; error_array : array of double; Save_Cursor : TCursor; procedure plot_star; begin {5. Conversion (RA,DEC) -> (x,y)} sincos(dec2,SIN_dec_new,COS_dec_new);{sincos is faster then separate sin and cos functions} delta_ra:=ra2-head.ra0; sincos(delta_ra,SIN_delta_ra,COS_delta_ra); HH := SIN_dec_new*sin_dec_ref + COS_dec_new*COS_dec_ref*COS_delta_ra; dRA := (COS_dec_new*SIN_delta_ra / HH)*180/pi; dDEC:= ((SIN_dec_new*COS_dec_ref - COS_dec_new*SIN_dec_ref*COS_delta_ra ) / HH)*180/pi; det:=head.cd2_2*head.cd1_1 - head.cd1_2*head.cd2_1; u0:= - (head.cd1_2*dDEC - head.cd2_2*dRA) / det; v0:= + (head.cd1_1*dDEC - head.cd2_1*dRA) / det; if ((plot) and (sip)) then {apply SIP correction, sky to pixel. Do not apply correction for measurement if plotting is false !!!!} begin x:=(head.crpix1 + u0 + ap_0_0 + ap_0_1*v0+ ap_0_2*v0*v0+ ap_0_3*v0*v0*v0 +ap_1_0*u0 + ap_1_1*u0*v0+ ap_1_2*u0*v0*v0+ ap_2_0*u0*u0 + ap_2_1*u0*u0*v0+ ap_3_0*u0*u0*u0)-1; {3th order SIP correction, fits count from 1, image from zero therefore subtract 1} y:=(head.crpix2 + v0 + bp_0_0 + bp_0_1*v0+ bp_0_2*v0*v0+ bp_0_3*v0*v0*v0 +bp_1_0*u0 + bp_1_1*u0*v0+ bp_1_2*u0*v0*v0+ bp_2_0*u0*u0 + bp_2_1*u0*u0*v0+ bp_3_0*u0*u0*u0)-1; {3th order SIP correction} end else begin x:=(head.crpix1 + u0)-1; {in image array range 0..width-1} y:=(head.crpix2 + v0)-1; end; if ((x>-50) and (x<=head.width+50) and (y>-50) and (y<=head.height+50)) then {within image1 with some overlap} begin inc(star_total_counter); if flip_horizontal then x2:=(head.width-1)-x else x2:=x; if flip_vertical then y2:=y else y2:=(head.height-1)-y; HFD(img_loaded,round(x),round(y), 14 {annulus_radius},99 {flux_aperture},0 {adu_e}, hfd1,star_fwhm,snr,flux,xc,yc);{star HFD and FWHM} if ((hfd1<15) and (hfd1>=0.8) {two pixels minimum} and (snr>10)) then {star detected in img_loaded} begin if plot then {show distortion} begin mainwindow.image1.Canvas.Pen.width :=3; mainwindow.image1.Canvas.MoveTo(round(x2), round(y2)); mainwindow.image1.Canvas.LineTo(round(x2+(x-xc)*50),round(y2-(y-yc)*50 )); mainwindow.image1.Canvas.Pen.width :=1; {for median errror} if ( (x>0.25*head.height) and (x< 0.75*head.height) and (y> 0.25*head.height) and (y< 0.75*head.height) and (sub_counter<length(error_array))) then begin error_array[sub_counter]:=sqrt(sqr(X-xc)+sqr(Y-yc));{add errors to array} inc(sub_counter); end; end {show distortion} else if stars_measured<max_nr_stars then {store distortion data} begin distortion_data[0,stars_measured]:=x;{database} distortion_data[1,stars_measured]:=y; distortion_data[2,stars_measured]:=xc;{measured} distortion_data[3,stars_measured]:=yc; inc(stars_measured); end; end; end; end;{sub procedure} begin if ((head.naxis<>0) and (head.cd1_1<>0)) then begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } flip_vertical:=mainwindow.flip_vertical1.Checked; flip_horizontal:=mainwindow.flip_horizontal1.Checked; bp_rp:=999;{not defined in mono versions of the database} {Fits range 1..width, if range 1,2,3,4 then middle is 2.5=(4+1)/2 } coordinates_to_celestial((head.width+1)/2,(head.height+1)/2,head,telescope_ra,telescope_dec); {RA,DEC position of the middle of the image. Works also for case head.crpix1,head.crpix2 are not in the middle} mainwindow.image1.Canvas.Pen.width :=1; // round(1+head.height/mainwindow.image1.height);{thickness lines} if sip=false then mainwindow.image1.canvas.pen.color:=$00B0FF {orange} else mainwindow.image1.canvas.pen.color:=$00FF00; {green} star_total_counter:=0;{total counter} sub_counter:=0; max_nr_stars:=round(head.width*head.height*(1216/(2328*1760))); {Check 1216 stars in a circle resulting in about 1000 stars in a rectangle for image 2328 x1760 pixels} setlength(error_array,max_nr_stars); {sets file290 so do before fov selection} if select_star_database(stackmenu1.star_database1.text,15 {neutral})=false then begin application.messagebox(pchar('No star database found!'+#13+'Download the h18 (or h17 or v17) and extract the files to the program directory'), pchar('No star database!'),0); exit; end; if plot=false then setlength(distortion_data,4,max_nr_stars); stars_measured:=0;{star number} fov_org:= sqrt(sqr(head.width*head.cdelt1)+sqr(head.height*head.cdelt2))*pi/180; {field of view circle covering all corners with 0% extra} sincos(head.dec0,SIN_dec_ref,COS_dec_ref);{do this in advance since it is for each pixel the same} if database_type<>001 then {1476 or 290 files} begin if database_type=1476 then {.1476 files} fov:=min(fov_org,5.142857143*pi/180) {warning FOV should be less the database tiles dimensions, so <=5.142857143 degrees. Otherwise a tile beyond next tile could be selected} else if database_type=290 then {.290 files} fov:=min(fov_org,9.53*pi/180); {warning FOV should be less the database tiles dimensions, so <=9.53 degrees. Otherwise a tile beyond next tile could be selected} find_areas( telescope_ra,telescope_dec, fov,{var} area1,area2,area3,area4, frac1,frac2,frac3,frac4);{find up to four star database areas for the square image} {read 1th area} if area1<>0 then {read 1th area} begin if open_database(telescope_dec,area1)=false then begin exit; end; {open database file or reset buffer} nrstars_required2:=trunc(max_nr_stars * frac1); while ((star_total_counter<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp)) ) do plot_star;{add star} end; {read 2th area} if area2<>0 then {read 2th area} begin if open_database(telescope_dec,area2)=false then begin exit; end; {open database file or reset buffer} nrstars_required2:=trunc(max_nr_stars * (frac1+frac2)); while ((star_total_counter<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp)) ) do plot_star;{add star} end; {read 3th area} if area3<>0 then {read 3th area} begin if open_database(telescope_dec,area3)=false then begin exit; end; {open database file or reset buffer} nrstars_required2:=trunc(max_nr_stars * (frac1+frac2+frac3)); while ((star_total_counter<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp)) ) do plot_star;{add star} end; {read 4th area} if area4<>0 then {read 4th area} begin if open_database(telescope_dec,area4)=false then begin exit; end; {open database file or reset buffer} nrstars_required2:=trunc(max_nr_stars * (frac1+frac2+frac3+frac4)); while ((star_total_counter<nrstars_required2) and (readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp)) and (bp_rp>12) ) do plot_star;{add star} end; close_star_database; end else begin {001 database} if wide_database<>name_database then read_stars_wide_field;{load wide field stars array} count:=0; cos_telescope_dec:=cos(telescope_dec); while ((star_total_counter<max_nr_stars) and (count<length(wide_field_stars) div 3) ) do {star file 001 database read. Read up to nrstars_required} begin mag2:=wide_field_stars[count*3];{contains: mag1, ra1,dec1, mag2,ra2,dec2,mag3........} ra2:=wide_field_stars[count*3+1]; dec2:=wide_field_stars[count*3+2]; ang_sep(ra2,dec2,telescope_ra,telescope_dec, sep);{angular seperation} if ((sep<fov_org*0.5*0.9*(2/sqrt(pi))) and (sep<pi/2)) then {factor 2/sqrt(pi) is to adapt circle search field to surface square. Factor 0.9 is a fiddle factor for trees, house and dark corners. Factor <pi/2 is the limit for procedure equatorial_standard} begin plot_star;{add star} inc(star_total_counter); end; inc(count); end; end; {$ifdef mswindows} mainwindow.image1.Canvas.Font.Name :='default'; {$endif} {$ifdef linux} mainwindow.image1.Canvas.Font.Name :='DejaVu Sans'; {$endif} {$ifdef darwin} {MacOS} mainwindow.image1.Canvas.Font.Name :='Helvetica'; {$endif} if plot then begin astrometric_error:=smedian(error_array,sub_counter); memo2_message('The center median astrometric error is '+floattostr4(astrometric_error*head.cdelt2*3600)+'" or ' +floattostr4(astrometric_error)+' pixel using '+inttostr(sub_counter)+ ' stars.'); mainwindow.image1.canvas.pen.color:=annotation_color; mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.font.color:=annotation_color; mainwindow.image1.Canvas.font.size:=8; mainwindow.image1.Canvas.Pen.width :=3; {scale in pixels} mainwindow.image1.Canvas.MoveTo(20, head.height-30); mainwindow.image1.Canvas.LineTo(20+50*3,head.height-30); for i:=0 to 3 do begin mainwindow.image1.Canvas.MoveTo(20+50*i,head.height-25); mainwindow.image1.Canvas.LineTo(20+50*i,head.height-35); mainwindow.image1.Canvas.textout(17+50*i,head.height-25,inttostr(i)); end; mainwindow.image1.Canvas.textout(20,head.height-60,'Scale in pixels'); {scale in arc seconds} scale:=round(50/(head.cdelt2*3600)); mainwindow.image1.Canvas.MoveTo(220, head.height-30); mainwindow.image1.Canvas.LineTo(220+scale*3,head.height-30); for i:=0 to 3 do begin mainwindow.image1.Canvas.MoveTo(220+scale*i,head.height-25); mainwindow.image1.Canvas.LineTo(220+scale*i,head.height-35); mainwindow.image1.Canvas.textout(217+scale*i,head.height-25,inttostr(i)+'"'); end; mainwindow.image1.Canvas.textout(220,head.height-60,'Scale in arcsecs'); mainwindow.image1.Canvas.font.size:=12; if sip then begin mainwindow.image1.Canvas.textout(700,head.height-25,'SIP corrections are applied. Median error for 50% of image '+floattostr4(astrometric_error*head.cdelt2*3600)+'"'); end else mainwindow.image1.Canvas.textout(350,head.height-25,'Median error for 50% of image '+floattostr4(astrometric_error*head.cdelt2*3600)+'"'); error_array:=nil; end; Screen.Cursor:=crDefault; end;{fits file} end;{measure distortion} procedure plot_artificial_stars(img: image_array);{plot stars as single pixel with a value as the magnitude. For super nova and minor planet search} var fitsX,fitsY, dra,ddec, telescope_ra,telescope_dec,fov,fov_org,ra2,dec2, mag2,Bp_Rp, delta_ra,det,SIN_dec_ref,COS_dec_ref, SIN_dec_new,COS_dec_new,SIN_delta_ra,COS_delta_ra,hh,frac1,frac2,frac3,frac4,sep : double; x,y, max_nr_stars, area1,area2,area3,area4,count : integer; Save_Cursor : TCursor; procedure plot_star; begin {5. Conversion (RA,DEC) -> (x,y)} sincos(dec2,SIN_dec_new,COS_dec_new);{sincos is faster then separate sin and cos functions} delta_ra:=ra2-head.ra0; sincos(delta_ra,SIN_delta_ra,COS_delta_ra); HH := SIN_dec_new*sin_dec_ref + COS_dec_new*COS_dec_ref*COS_delta_ra; dRA := (COS_dec_new*SIN_delta_ra / HH)*180/pi; dDEC:= ((SIN_dec_new*COS_dec_ref - COS_dec_new*SIN_dec_ref*COS_delta_ra ) / HH)*180/pi; det:=head.cd2_2*head.cd1_1 - head.cd1_2*head.cd2_1; fitsX:= +head.crpix1 - (head.cd1_2*dDEC - head.cd2_2*dRA) / det; {1..head.width} fitsY:= +head.crpix2 + (head.cd1_1*dDEC - head.cd2_1*dRA) / det; {1..head.height} x:=round(fitsX-1); {0..head.width-1} y:=round(fitsY-1); {0..head.height-1} if ((x>=0) and (x<=head.width-1) and (y>=0) and (y<=head.height-1)) then {within image1} begin img[0,x,y]:=min(img[0,x,y],mag2);{take brightest star} end; end; begin if ((head.naxis<>0) and (head.cd1_1<>0)) then begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } counter_flux_measured:=0; bp_rp:=999;{not defined in mono versions} {find middle of the image} {Fits range 1..width, if range 1,2,3,4 then middle is 2.5=(4+1)/2 } coordinates_to_celestial((head.width+1)/2,(head.height+1)/2,head,telescope_ra,telescope_dec); {RA,DEC position of the middle of the image. Works also for case head.crpix1,head.crpix2 are not in the middle} if select_star_database(stackmenu1.star_database1.text,15 {neutral})=false then {sets file290 so do before fov selection} begin application.messagebox(pchar('No star database found!'+#13+'Download the h18 (or h17 or v17) and extract the files to the program directory'), pchar('No star database!'),0); exit; end; fov_org:= sqrt(sqr(head.width*head.cdelt1)+sqr(head.height*head.cdelt2))*pi/180; {field of view with 0% extra} linepos:=2;{Set pointer to the beginning. First two lines are comments} sincos(head.dec0,SIN_dec_ref,COS_dec_ref);{do this in advance since it is for each pixel the same} if database_type<>001 then {1476 or 290 files} begin if database_type=1476 then {.1476 files} fov:=min(fov_org,5.142857143*pi/180) {warning FOV should be less the database tiles dimensions, so <=5.142857143 degrees. Otherwise a tile beyond next tile could be selected} else if database_type=290 then {.290 files} fov:=min(fov_org,9.53*pi/180); {warning FOV should be less the database tiles dimensions, so <=9.53 degrees. Otherwise a tile beyond next tile could be selected} find_areas( telescope_ra,telescope_dec, fov,{var} area1,area2,area3,area4, frac1,frac2,frac3,frac4);{find up to four star database areas for the square image} {read 1th area} if area1<>0 then {read 1th area} begin if open_database(telescope_dec,area1)=false then begin exit; end; {open database file or reset buffer} while readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp) do plot_star;{add star} end; {read 2th area} if area2<>0 then {read 2th area} begin if open_database(telescope_dec,area2)=false then begin exit; end; {open database file or reset buffer} while readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp) do plot_star;{add star} end; {read 3th area} if area3<>0 then {read 3th area} begin if open_database(telescope_dec,area3)=false then begin exit; end; {open database file or reset buffer} while readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp) do plot_star;{add star} end; {read 4th area} if area4<>0 then {read 4th area} begin if open_database(telescope_dec,area4)=false then begin exit; end; {open database file or reset buffer} while readdatabase290(telescope_ra,telescope_dec, fov,{var} ra2,dec2, mag2,Bp_Rp) do plot_star;{add star} end; close_star_database; end else begin {001 database} if wide_database<>name_database then read_stars_wide_field;{load wide field stars array} count:=0; cos_telescope_dec:=cos(telescope_dec); while (count<length(wide_field_stars) div 3) do {star 001 database read.} begin mag2:=wide_field_stars[count*3];{contains: mag1, ra1,dec1, mag2,ra2,dec2,mag3........} ra2:=wide_field_stars[count*3+1]; dec2:=wide_field_stars[count*3+2]; ang_sep(ra2,dec2,telescope_ra,telescope_dec, sep);{angular seperation} if ((sep<fov_org*0.5*0.9*(2/sqrt(pi))) and (sep<pi/2)) then {factor 2/sqrt(pi) is to adapt circle search field to surface square. Factor 0.9 is a fiddle factor for trees, house and dark corners. Factor <pi/2 is the limit for procedure equatorial_standard} begin plot_star;{add star} end; inc(count); end; end; Screen.Cursor:=crDefault; end;{fits file} end;{plot stars} procedure plot_stars_used_for_solving(hd: Theader;correctionX,correctionY: double); {plot image stars and database stars used for the solution} var nrstars,i, starX, starY,size,flipped : integer; flip_horizontal, flip_vertical : boolean; xx,yy,x,y : double; begin flip_vertical:=mainwindow.flip_vertical1.Checked; flip_horizontal:=mainwindow.flip_horizontal1.Checked; {do image stars} nrstars:=length(starlist2[0]); mainwindow.image1.Canvas.Pen.Mode := pmMerge; mainwindow.image1.Canvas.Pen.width := round(1+hd.height/mainwindow.image1.height);{thickness lines} mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.Pen.Color :=clred; for i:=0 to nrstars-1 do begin if flip_horizontal=true then starX:=round((hd.width-starlist2[0,i])) else starX:=round(starlist2[0,i]); if flip_vertical=false then starY:=round((hd.height-starlist2[1,i])) else starY:=round(starlist2[1,i]); size:=15; mainwindow.image1.Canvas.Rectangle(starX-size,starY-size, starX+size, starY+size);{indicate hfd with rectangle} end; {do database stars} if ((hd.CD1_1>0)=(hd.CD2_2>0)) then {Flipped image. Either flipped vertical or horizontal but not both. Flipped both horizontal and vertical is equal to 180 degrees rotation and is not seen as flipped} flipped:=-1 else flipped:=+1; //change rotation for flipped image nrstars:=length(starlist1[0]); mainwindow.image1.Canvas.Pen.Color := annotation_color; for i:=0 to nrstars-1 do begin xx:=(starlist1[0,i]-correctionX)/(hd.cdelt1*3600);{apply correction for database stars center and image center and convert arc seconds to pixels} yy:=(starlist1[1,i]-correctionY)/(hd.cdelt2*3600); rotate((90-flipped*hd.crota2)*pi/180,xx,yy,X,Y);{rotate to screen orientation} if flip_horizontal=false then begin starX:=round(hd.crpix1-x); end else begin starX:=round(hd.crpix1+x); end; if flip_vertical=false then begin starY:=round(hd.crpix2-y); end else begin starY:=round(hd.crpix2+y); end; size:=20; mainwindow.image1.Canvas.Rectangle(starX-size,starY-size, starX+size, starY+size);{indicate hfd with rectangle} end; end; function find_object(var objname : string; var ra0,dec0,length0,width0,pa : double): boolean; {find object in database} begin result:=false; if length(objname)>1 then {Object name length should be two or longer} begin objname:=uppercase(objname); load_deep;{Load the deepsky database once. If already loaded, no action} linepos:=2;{Set pointer to the beginning} while read_deepsky('T' {full database search} ,0 {ra},0 {dec},1 {cos(telescope_dec)},2*pi{fov},{var} ra0,dec0,length0,width0,pa) {Deepsky database search} do begin if ((objname=uppercase(naam2)) or (objname=uppercase(naam3)) or (objname=uppercase(naam4))) then begin result:=true; if naam3='' then objname:=naam2 {Add one object name only} else objname:=naam2+'_'+naam3;{Add two object names} break; {Stop searching} end; end;{while loop} end; end; end. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_xisf.pas�����������������������������������������������������������������0000644�0001751�0001751�00000041625�14344743400�016222� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_xisf; {Basic XISF read routine for uncompressed files. Reads included image for 8,16 32, -32 and -64 bit format} {The XISF format is described by standard reference: http://pixinsight.com/doc/docs/XISF-1.0-spec/XISF-1.0-spec.html} {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode delphi} interface uses {$ifdef mswindows} Windows, {$endif} {$ifdef unix} math, {for min function} {$endif} Classes, SysUtils, strutils, astap_main, unit_dss, {only to reset some variables} unit_annotation {only to reset some variables}; function load_xisf(filen:string;out head : theader ; out img_loaded2: image_array) : boolean;{load uncompressed xisf file, add basic FITS header and retrieve included FITS keywords if available} implementation function load_xisf(filen:string;out head : theader; out img_loaded2: image_array) : boolean;{load uncompressed xisf file, add basic FITS header and retrieve included FITS keywords if available} var TheFile : tfilestream; i,j,k, reader_position,a,b,c,d,e : integer; aline,message1,message_key,message_value,message_comment : ansistring; attachment,start_image : integer; error2 : integer; header_length : longword; header2 : array of ansichar; set_temp : double; procedure close_fits_file; inline; begin Reader.free; TheFile.free; result:=false; end; function extract_string_keyword(keyword:string):string;{extract string value from XML header} begin {I don't like xml, apply simple & primitive method} b:=pos(keyword+'" value="',aline); {find begin} if b>0 then {found} begin inc(b,length(keyword)+length('" value="')); c:=posex('"',aline,b); {find end, ignore comment}; while aline[b]=#39 do inc(b);{remove any apostrophe} while aline[c-1]=#39 do dec(c);{remove any apostrophe} result:=copy(aline,b,c-b); {keyword value} end else result:=''; end; procedure extract_double_keyword(keyword:string; var value: double);{extract float from XML header} var keyvalue: string; begin {I don't like xml, apply simple & primitive method} b:=pos(keyword+'" value="',aline); {find begin} if b>0 then {found} begin inc(b,length(keyword)+length('" value="')); c:=posex('"',aline,b); {find end, ignore comment}; keyvalue:=copy(aline,b,c-b); val(keyvalue,value,error2); {try to decode number if any} end; end; begin result:=false;{assume failure} mainwindow.caption:=ExtractFileName(filen); {add header data to memo} mainwindow.memo1.visible:=false;{stop visualising memo1 for speed. Will be activated in plot routine} mainwindow.memo1.clear;{clear memo for new header} try TheFile:=tfilestream.Create( filen, fmOpenRead ); except sysutils.beep; mainwindow.statusbar1.panels[5].text:=('Error loading file!'); mainwindow.error_label1.visible:=true; exit; end; mainwindow.error_label1.visible:=false; reset_fits_global_variables(true{light},head); {Reset variables for case they are not specified in the file} extend_type:=0; {no extensions in the file, 1 is image, 2 is ascii_table, 3 bintable} setlength(header2,16); Reader := TReader.Create(TheFile,$60000);// 393216 byte buffer {TheFile.size-reader.position>sizeof(hnskyhdr) could also be used but slow down a factor of 2 !!!} reader_position:=0; try reader.read(header2[0],16);{read XISF signature} except; close_fits_file; mainwindow.error_label1.caption:='Error'; mainwindow.statusbar1.panels[5].text:='Error'; mainwindow.error_label1.visible:=true; exit; end; mainwindow.error_label1.visible:=false; inc(reader_position,16); if ((header2[0]='X') and (header2[1]='I') and (header2[2]='S') and (header2[3]='F') and (header2[4]='0') and (header2[5]='1') and (header2[6]='0') and (header2[7]='0'))=false then begin close_fits_file;mainwindow.error_label1.visible:=true; mainwindow.statusbar1.panels[5].text:=('Error loading XISF file!! Keyword XSIF100 not found.'); exit; end; header_length:=ord(header2[8])+(ord(header2[9]) shl 8) + (ord(header2[10]) shl 16)+(ord(header2[11]) shl 24); {signature length} setlength(header2,header_length);{could be very large} reader.read(header2[0],header_length);{read XISF header} inc(reader_position,header_length); {some sample image defintions from the XISF header} //<Image geometry="185:272:3" sampleFormat="UInt8" colorSpace="RGB" location="attachment:4096:150960"><Resolution horizontal="1" vertical="1" //<Image id="integration" geometry="4656:3520:1" sampleFormat="Float32" bounds="0:1" colorSpace="Gray" location="attachment:16384:65556480"> //<Image geometry="228:199:1" sampleFormat="UInt8" colorSpace="Gray" location="attachment:4096:45372"><Resolution horizontal="72" vertical="72" unit="inch"/> //<Image geometry="185:272:3" sampleFormat="UInt8" colorSpace="RGB" location="attachment:4096:150960"><Resolution horizontal="1" vertical="1" //<Image geometry="2328:1760:1" sampleFormat="UInt32" colorSpace="Gray" location="attachment:4096:16389120"><Resolution horizontal="72" vertical="72" unit="inch"/> SetString(aline, Pansichar(@header2[0]),header_length);{convert header to string starting <Image} start_image:=pos('<Image ',aline);{find range <image..../image>} if posex('compression=',aline,start_image)>0 then begin close_fits_file;mainwindow.error_label1.caption:='Error, can not read compressed XISF files!!'; mainwindow.error_label1.visible:=true; exit; end; a:=posex('geometry=',aline,start_image); if a>0 then begin b:=posex('"',aline,a);inc(b,1); {find begin}; c:=posex(':',aline,b); {find end}; message1:=trim(copy(aline,b,c-b)); {remove spaces and crlf} head.width:=strtoint(message1); b:=c+1; {find begin}; c:=posex(':',aline,b); {find end}; message1:=trim(copy(aline,b,c-b)); {remove spaces and crlf} head.height:=strtoint(message1); b:=c+1; {find begin}; c:=posex('"',aline,b); {find end}; message1:=trim(copy(aline,b,c-b)); {remove spaces and crlf} head.naxis3:=strtoint(message1);; end; for j:=0 to 10 do {create an header with fixed sequence} if ((j<>5) or (head.naxis3<>1)) then {skip head.naxis3 for mono images} mainwindow.memo1.lines.add(head1[j]); {add lines to empthy memo1} mainwindow.memo1.lines.add(head1[27]); {add end} if head.naxis3>1 then begin head.naxis:=3; {3 dimensions, one is colours} update_integer('NAXIS =',' / Number of dimensions ' ,3);{2 for mono, 3 for color} end else head.naxis:=2;{mono} a:=posex('location="attachment',aline,start_image);{find begin included data block} if a>0 then begin b:=posex(':',aline,a);inc(b,1); {find begin}; c:=posex(':',aline,b); {find end}; message1:=trim(copy(aline,b,c-b)); {remove spaces and crlf} val(message1,attachment,error2);{get data block} end; if ((a=0) or (error2<>0)) then begin close_fits_file; mainwindow.error_label1.caption:='Error!. Can not read this format, no attachment'; mainwindow.error_label1.visible:=true; head.naxis:=0; exit; end; a:=posex('sampleFormat=',aline,start_image); if a>0 then begin error2:=0; b:=posex('"',aline,a);inc(b,1); {find begin}; c:=posex('"',aline,b); {find end}; message1:=trim(copy(aline,b,c-b)); {remove spaces and crlf} if message1='Float32' then nrbits:=-32 {sometimes there is another Uintf8 behind stop _image, so test first only} else if message1='UInt16' then nrbits:=16 else if message1='UInt8' then nrbits:=8 else if message1='Float64' then nrbits:=-64 else if message1='UInt32' then nrbits:=32 else error2:=1; end; if ((a=0) or (error2<>0)) then begin close_fits_file; mainwindow.error_label1.caption:='Can not read this format.'; mainwindow.error_label1.enabled:=true; mainwindow.Memo1.visible:=true; head.naxis:=0; exit; end; if nrbits=8 then begin head.datamin_org:=0;head.datamax_org:=255; {8 bits files} end else {16, -32 files} begin head.datamin_org:=0;head.datamax_org:=$FFFF;end;{not always specified. For example in skyview. So refresh here for case brightness is adjusted} {update memo keywords} update_integer('BITPIX =',' / Bits per entry ' ,nrbits); update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); if head.naxis3=1 then remove_key('NAXIS3 ',false{all});{remove key word in header. Some program don't like naxis3=1} head.date_obs:=extract_string_keyword('DATE-OBS'); if head.date_obs='' then head.date_obs:=extract_string_keyword('DATE'); head.filter_name:=extract_string_keyword('FILTER'); bayerpat:=extract_string_keyword('BAYERPAT'); sitelong:=extract_string_keyword('SITELONG'); if sitelong='' then sitelong:=extract_string_keyword('LONG-OBS'); sitelat:=extract_string_keyword('SITELAT'); if sitelat='' then sitelat:=extract_string_keyword('LAT-OBS'); extract_double_keyword('XBAYROFF',Xbayroff);;{offset to used to correct BAYERPAT due to flipping} extract_double_keyword('YBAYROFF',Ybayroff);;{offset to used to correct BAYERPAT due to flipping} roworder:=extract_string_keyword('ROWORDER'); {update memo keywords and variables for floats} extract_double_keyword('CD1_1',head.cd1_1);{extract float value from XML header and add keyword to FITS memo header, ignoring comments.} extract_double_keyword('CD1_2',head.cd1_2); extract_double_keyword('CD2_1',head.cd2_1); extract_double_keyword('CD2_2',head.cd2_2); extract_double_keyword('CCD-TEMP',set_temp); extract_double_keyword('SET-TEMP',set_temp); head.set_temperature:=round(set_temp); extract_double_keyword('EXPTIME ',head.exposure); extract_double_keyword('EXPOSURE',head.exposure); extract_double_keyword('CROTA1',head.crota1); extract_double_keyword('CROTA2',head.crota2); extract_double_keyword('CDELT1',head.cdelt1); extract_double_keyword('CDELT2',head.cdelt2); extract_double_keyword('FOCALLEN',focallen); extract_double_keyword('PRESSURE',pressure); extract_double_keyword('AOCBAROM',pressure); extract_double_keyword('FOCUSTEM',focus_temp); extract_double_keyword('FOCTEMP',focus_temp); extract_double_keyword('AMB-TEMP',focus_temp); extract_double_keyword('AOCAMBT',focus_temp); extract_double_keyword('XPIXSZ',head.xpixsz); if head.cd1_1=0 then {try to retrieve pixel scale head.cdelt2. Else will be calculated in new_to_old_WCS procedure from the CD matrix} begin if ((focallen<>0) and (head.xpixsz<>0)) then head.cdelt2:=180/(pi*1000)*head.xpixsz/focallen; {use maxim DL key word} if head.cdelt2=0 then begin extract_double_keyword('SCALE',head.cdelt2); head.cdelt2:=head.cdelt2/3600 {scale is in arcsec/pixel } end;{use sgp file keyword} if head.cdelt2=0 then begin extract_double_keyword('SECPIX1',head.cdelt1);head.cdelt1:=head.cdelt1/3600;end; if head.cdelt2=0 then begin extract_double_keyword('SECPIX2',head.cdelt2);head.cdelt2:=head.cdelt2/3600; end; end; extract_double_keyword('CRVAL1',head.ra0); extract_double_keyword('CRVAL2',head.dec0); extract_double_keyword('RA',ra_mount); extract_double_keyword('DEC',dec_mount); if ra_mount<999 then begin if head.ra0=0 then head.ra0:=ra_mount; if head.dec0=0 then head.dec0:=dec_mount; end; head.ra0:=head.ra0*pi/180; {degrees -> radians} head.dec0:=head.dec0*pi/180; cblack:=head.datamin_org;{for case histogram is not called} cwhite:=head.datamax_org; //Samples of keywords stored in header: //<FITSKeyword name="NAXIS2" value="1760" comment="length of data axis 2"/> //<FITSKeyword name="OBJECT" value="'M16'" comment="Observed object name"/> //<FITSKeyword name="CCD-TEMP" value="-15.1" comment="CCD temperature (Celsius)"/> //<FITSKeyword name="HISTORY" value="" comment="For more details, see http://astrometry.net ."/> //<FITSKeyword name="COMMENT" value="" comment="-- blind solver parameters: --"/> {Extract all other FITS keywords and add to memo1 as header} d:=start_image; repeat a:=posex('<FITSKeyword name=',aline,d); if a>0 then begin e:=posex('/>',aline,a+1); {find end of <FITSKeyword}; b:=posex('"',aline,a+1);inc(b,1); {find begin}; c:=posex('"',aline,b); {find end}; message_key:=trim(copy(aline,b,c-b)); {remove spaces and crlf} a:=posex('value=',aline,c); if ((a>0) and (a<=e)) then {within range FITSKeyword} begin error2:=0; b:=posex('"',aline,a+1);inc(b,+1); {find begin}; c:=posex('"',aline,b); {find end}; message_value:=trim(copy(aline,b,c-b)); {remove spaces and crlf} end; a:=posex('comment=',aline,c); if ((a>0) and (a<=e)) then {within range FITSKeyword} begin error2:=0; b:=posex('"',aline,a);inc(b,1); {find begin}; c:=posex('"',aline,b); {find end}; message_comment:=trim(copy(aline,b,c-b)); {remove spaces and crlf} end; {if message_key<>'HISTORY' then} update_generic(message_key,message_value,message_comment);{update header using text only} d:=c; end; until a=0;{repeat until all FIT keywords are recovered} {add own history} add_text ('HISTORY ','Imported from XISF file by the ASTAP program');{update memo} if ( ((head.cdelt1=0) or (head.crota2>=999)) and (head.cd1_1<>0)) then begin new_to_old_WCS(head);{ convert old WCS to new} end else if ((head.crota2<999) and (head.cd1_1=0) and(head.cdelt1<>0)) then {valid head.crota2 value} begin old_to_new_WCS(head);{ convert old WCS to new} end; // not required since xisf are not used for stacking // if head.set_temperature=999 then head.set_temperature:=round(ccd_temperature); {temperature} if head.crota2>999 then head.crota2:=0;{not defined, set at 0} if head.crota1>999 then head.crota1:=head.crota2; {for case head.crota1 is not used} if head.ra0<>0 then begin mainwindow.ra1.text:=prepare_ra(head.ra0,' '); mainwindow.dec1.text:=prepare_dec(head.dec0,' '); {$IfDef Darwin}// {MacOS} //mainwindow.ra1change(nil);{OSX doesn't trigger an event} //mainwindow.dec1change(nil); {$ENDIF} end; {read rest of header containing zero's} if attachment-reader_position>0 then {header contains zero's} repeat i:=min(attachment-reader_position,length(header2)); try reader.read(header2[0],i);except;close_fits_file; head.naxis:=0;{failure} exit;end; {skip empty part and go to image data} inc(reader_position,i); until reader_position>=attachment; header2:=nil;{free memory} mainwindow.memo1.visible:=true;{start updating} {check if buffer is wide enough for one image line} i:=round(bufwide/(abs(nrbits/8))); if head.width>i then begin sysutils.beep; mainwindow.error_label1.caption:='Too wide XISF file !!!!!'; mainwindow.error_label1.visible:=true; close_fits_file; head.naxis:=0;{failure} exit; end else begin {buffer wide enough, read image data block} setlength(img_loaded2,head.naxis3,head.width,head.height); for k:=1 to head.naxis3 do {do all colors} begin For i:=0 to head.height-1 do begin try reader.read(fitsbuffer,head.width*round(abs(nrbits/8)));except; head.naxis:=0;{failure} end; {read file info} for j:=0 to head.width-1 do begin if nrbits=16 then {16 bit FITS} img_loaded2[k-1,j,i]:=fitsbuffer2[j] else if nrbits=-32 then {4 byte floating point FITS image} img_loaded2[k-1,j,i]:=65535*fitsbufferSINGLE[j]{store in memory array, scale from 0..1 to 0..65535} else if nrbits=8 then img_loaded2[k-1,j,i]:=(fitsbuffer[j]) else if nrbits=-64 then {8 byte, floating point bit FITS image} img_loaded2[k-1,j,i]:=65535*fitsbufferDouble[j]{store in memory array, scale from 0..1 to 0..65535} else if nrbits=+32 then {4 byte, +32 bit FITS image} img_loaded2[k-1,j,i]:=fitsbuffer4[j]/65535;{scale to 0..64535 float} end; end; end; {colors head.naxis3 times} end; close_fits_file; unsaved_import:=true;{file is not available for astrometry.net} result:=head.naxis<>0;{success}; end; end. �����������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_astrometry_net.pas�������������������������������������������������������0000644�0001751�0001751�00000026170�14344743400�020326� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_astrometry_net; {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode delphi} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, strutils, astap_main, unit_stack; type { Tform_astrometry_net1 } Tform_astrometry_net1 = class(TForm) astrometry_extra_options1: TComboBox; Button1: TButton; cygwin1: TComboBox; keep_console_open1: TCheckBox; failed1: TLabel; fileprocessed1: TLabel; Label1: TLabel; solved1: TLabel; Label22: TLabel; show_console1: TCheckBox; procedure Button1Click(Sender: TObject); procedure cygwin1Change(Sender: TObject); procedure cygwin1DropDown(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: char); procedure FormShow(Sender: TObject); private public end; var form_astrometry_net1: Tform_astrometry_net1; const cygwin_path: string=''; astrometry_extra_options : string='--downsample 2'; show_console : boolean=true; keep_console_open : boolean=false; function astrometry_net(filename3: string; remove_tmp, showconsole, keep_open: boolean) :boolean;{use local astrometry.net} implementation {$R *.lfm} procedure DeleteFiles(lpath,FileSpec: string);{delete files such *.wcs} var lSearchRec:TSearchRec; begin // lPath := IncludeTrailingPathDelimiter(lPath); if FindFirst(lpath+FileSpec,faAnyFile,lSearchRec) = 0 then begin try repeat SysUtils.DeleteFile(lPath+lSearchRec.Name); until SysUtils.FindNext(lSearchRec) <> 0; finally SysUtils.FindClose(lSearchRec); // Free resources on successful find end; end; end; //'C:\cygwin\bin\bash.exe' //'--login-c" solve-field --overwrite --scale-low 2.43250219767136 --scale-high 2.97305824159833 --scale-units arcsecperpix --objs 150 --downsample 4 --no-plots --no-fits2fits ""C:/Users/H/AppData/Local/ccdciel/tmp/ccdcieltmp.fits"" "' //'--login-c" solve-field --overwrite --scale-low 2.43250219767136 --scale-high 2.97305824159833 --scale-units arcsecperpix --objs 150 --downsample 4 --no-plots --no-fits2fits ""C:/Users/H/AppData/Local/ccdciel/tmp/ccdcieltmp.fits"" "' //http://manpages.ubuntu.com/manpages/zesty/man1/solve-field.1.html // -3 RA, --ra RA // RA of field center for search, format: degrees or hh:mm:ss // -4 DEC, --dec DEC // DEC of field center for search, format: degrees or hh:mm:ss // -5 degrees, --radius degrees // Only search in indexes within 'radius' of the field center given // by --ra and --dec // -2, --no-fits2fits // Don't sanitize FITS files; assume they're already valid // // -L, --scale-low scale // Lower bound of image scale estimate // // -H, --scale-high scale // Upper bound of image scale estimate // -u, --scale-units units // In what units are the lower and upper bounds? Choices: // // "degwidth", "degw", "dw" // width of the image, in degrees (default) // // "arcminwidth", "amw", "aw" // width of the image, in arcminutes // // "arcsecperpix", "app" // arcseconds per pixel function astrometry_net(filename3: string; remove_tmp, showconsole, keep_open: boolean) :boolean;{use local astrometry.net} var filename_new,filename_linux,filename_bak,param: string; paramlist : TStringList; fpath : string; begin result:=false; mainwindow.caption:='Solving: '+ExtractFileName(filename3); fpath:=ExtractFilePath(filename3); {$ifdef mswindows} if FileExists(form_astrometry_net1.cygwin1.text)=false then begin application.messagebox(pchar('Can'+#39+'t find local astrometry.net program. Check path or installation.'),pchar('No local astrometry.net'), 0); exit end; {$else} {unix} if FileExists(form_astrometry_net1.cygwin1.text+'/solve-field')=false then begin application.messagebox(pchar('Can'+#39+'t find local astrometry.net program solve-field. Check path or installation.'),pchar('No local astrometry.net'), 0); exit end; {$endif} filename_new:=changeFileExt(filename3,'.new'); filename_bak:=changeFileExt(filename3,'.bak'); filename_linux:=StringReplace(filename3,'\','/',[rfReplaceAll]); paramlist:= TStringList.Create; paramlist.QuoteChar := #0; paramlist.add('--overwrite'); {overwrite} paramlist.add('--no-plots'); {no plots} // if make_new=false then begin // paramlist.add('--new-fits');{no .new file} // paramlist.add('none'); // end; // if stackmenu1.limit_pixelsize1.checked then // begin // paramlist.add('--scale-units');{scale-units arcsecperpix} // paramlist.add('arcsecperpix'); // paramlist.add('--scale-low');{scale-low in arcsecperpix} // paramlist.add(floattostr6(scale*0.9)); // paramlist.add('--scale-high');{scale-high in arcsecperpix} // paramlist.add(floattostr6(scale*1.1)); // end; // if stackmenu1.limit_area1.checked then // begin // paramlist.add('--ra'); // paramlist.add(floattostr6(ra_radians*180/pi)); // paramlist.add('--dec'); // paramlist.add(floattostr6(dec_radians*180/pi)); // paramlist.add('--radius');{radius} // paramlist.add(stackmenu1.search_area1.text); // end; {get the extra parameters from the user} ExtractStrings([' '], [], PChar(form_astrometry_net1.astrometry_extra_options1.text),paramlist); {$ifdef mswindows} param:=stringreplace(paramlist.delimitedtext,',',' ',[rfReplaceAll]); param:=stringreplace(param,'"','',[rfReplaceAll]); { paramlist.QuoteChar :=#0 doesn't work always} if pos('System32',form_astrometry_net1.cygwin1.text)=0 then {Cygwin solver} begin if keep_open then ExecuteAndWait('cmd.exe /k '+form_astrometry_net1.cygwin1.text+' --login solve-field "'+filename_linux+'" '+param,showconsole){execute command and wait} else ExecuteAndWait(form_astrometry_net1.cygwin1.text+' --login solve-field "'+filename_linux+'" '+param,showconsole);{execute command and wait} end else begin {win10 Linux subsystem solver} // C:\Windows\System32\bash.exe -c "solve-field /mnt/c/astap.fpc/_M95_test_image.fit --overwrite --downsample 4" // 'C:/astap.fpc/_M95_test_image.fit' filename_linux:='/mnt/'+lowercase(copy(filename_linux,1,1))+copy(filename_linux,3,255);{drive should be lowercase} if keep_open then ExecuteAndWait('cmd.exe /k '+form_astrometry_net1.cygwin1.text+' -c "solve-field '+#39+filename_linux+#39+' '+param+'"',showconsole){execute command and wait} else ExecuteAndWait( form_astrometry_net1.cygwin1.text+' -c "solve-field '+#39+filename_linux+#39+' '+param+'"',showconsole);{execute command and wait} end; {$else} {unix} paramlist.insert(0,filename3); //param.Add('"--overwrite --no-plots --objs 150 --downsample 4 --ra 300.000000 --dec 40.410216 --radius 10"'); execute_unix(form_astrometry_net1.cygwin1.text+'/solve-field',paramlist, showconsole); {$endif} paramlist.Free; Application.ProcessMessages; if fileexists(filename_new) then begin wait(500);{smart sleep} deletefile(filename_bak);{delete otherwise next rename is not possible} if renamefile(filename3,filename_bak) then begin renamefile(filename_new,filename3) ; result:=true; end; end; if remove_tmp then begin Application.ProcessMessages; try DeleteFiles(fPath,'*.wcs'); DeleteFiles(fPath,'*.corr');{delete with wildcard all since files are sometimes not yet available and delete them next time} DeleteFiles(fPath,'*.match'); DeleteFiles(fPath,'*.rdls'); DeleteFiles(fPath,'*.solved'); DeleteFiles(fPath,'*.axy'); DeleteFiles(fPath,'*.xyls'); finally end; end; form_astrometry_net1.close; {normal this form is not loaded} mainwindow.setfocus; end; { Tform_astrometry_net1 } procedure Tform_astrometry_net1.Button1Click(Sender: TObject); var I: integer; failed, solved :integer; begin show_console:=show_console1.checked; keep_console_open:=keep_console_open1.checked; cygwin_path:=cygwin1.text; astrometry_extra_options:=astrometry_extra_options1.text; save_settings2; mainwindow.OpenDialog1.Title := 'Select multiple files to add astrometric solution'; mainwindow.OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; mainwindow.opendialog1.Filter := '8, 16 and -32 bit FITS files (*.fit*)|*.fit;*.fits;*.FIT;*.FITS'; esc_pressed:=false; failed:=0; solved:=0; if mainwindow.OpenDialog1.Execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } try { Do some lengthy operation } with mainwindow.OpenDialog1.Files do for I := 0 to Count - 1 do begin filename2:=Strings[I]; fileprocessed1.caption:='Solving '+inttostr(i)+'-'+inttostr(Count-1)+': '+filename2; progress_indicator(100*i/(count),' Solving');{show progress} Application.ProcessMessages; if esc_pressed then begin Screen.Cursor:=crDefault; exit; end; if astrometry_net(filename2,true {remove_tmp},show_console,keep_console_open) then begin inc(solved); solved1.caption:= 'Solved: '+inttostr(solved); memo2_message('Solved: '+filename2); end else begin inc(failed); failed1.caption:= 'Failed: '+inttostr(failed);memo2_message('Failed: '+filename2); end end; finally progress_indicator(-100,'');{progresss done} Screen.Cursor:=crDefault; { Always restore to normal } end; end; end; procedure Tform_astrometry_net1.cygwin1Change(Sender: TObject); begin if fileexists({$ifdef mswindows} cygwin1.text {$else} {unix} cygwin1.text+'/solve-field' {$endif} ) then cygwin1.color:=$AAFFAA {green} else cygwin1.color:=$AAAAFF;{red} end; procedure Tform_astrometry_net1.cygwin1DropDown(Sender: TObject); var u_path : string; i : integer; begin {$ifdef mswindows} u_path:=GetUserDir; for i:=0 to cygwin1.Items.count-1 do {replace by correct user name} cygwin1.Items[i]:=stringreplace(cygwin1.Items[i],'C:\Users\user_name\',u_path,[rfIgnoreCase]); {$ELSE}{linux} {$endif} end; procedure Tform_astrometry_net1.FormKeyPress(Sender: TObject; var Key: char); begin {set form keypreview:=on} if key=#27 then begin esc_pressed:=true; end; end; procedure Tform_astrometry_net1.FormShow(Sender: TObject); begin show_console1.checked:=show_console; keep_console_open1.checked:= keep_console_open; cygwin1.text:=cygwin_path; astrometry_extra_options1.text:=astrometry_extra_options; end; end. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/�������������������������������������������������������0000755�0001751�0001751�00000000000�14344743400�020156� 5����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/tapvizierGaiaDR3 request.txt���������������������������0000644�0001751�0001751�00000007726�14076273504�025521� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� Download in slices up to 3 mil records: https://gea.esac.esa.int/archive/ SELECT gaia_source.ra,gaia_source.dec, gaia_source.pmra, gaia_source.pmdec, gaia_source.phot_g_mean_mag, gaia_source.phot_bp_mean_mag, gaia_source.phot_rp_mean_mag FROM gaiaedr3.gaia_source WHERE (gaiaedr3.gaia_source.phot_bp_mean_mag>=15.65 AND gaiaedr3.gaia_source.phot_bp_mean_mag<15.75) use copy demand to combine files: copy /A Gaia_DR3_BP_17.4*.csv hGaia_DR3_BP_17.4.csv Filter out stars without BP up to magnitude 17.75. Note V is 0.3 magnitudes above GP and BP 0.5 magnitude so up to magn 17.75 is enough SELECT gaia_source.ra,gaia_source.dec,gaia_source.pmra,gaia_source.pmdec,gaia_source.phot_g_mean_mag,gaia_source.phot_bp_mean_mag,gaia_source.phot_rp_mean_mag FROM gaiaedr3.gaia_source WHERE gaiaedr3.gaia_source.phot_g_mean_mag is not NULL AND gaiaedr3.gaia_source.phot_g_mean_mag>=-5 AND gaiaedr3.gaia_source.phot_g_mean_mag<17.35 AND gaiaedr3.gaia_source.phot_bp_mean_mag is NULL SELECT gaia_source.ra,gaia_source.dec,gaia_source.pmra,gaia_source.pmdec,gaia_source.phot_g_mean_mag,gaia_source.phot_bp_mean_mag,gaia_source.phot_rp_mean_mag FROM gaiaedr3.gaia_source WHERE gaiaedr3.gaia_source.phot_g_mean_mag is not NULL AND gaiaedr3.gaia_source.phot_g_mean_mag>=17.35 AND gaiaedr3.gaia_source.phot_g_mean_mag<17.75 AND gaiaedr3.gaia_source.phot_bp_mean_mag is NULL ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ =================================================================================================================== -- output format : csv SELECT TOP 990000000 "I/350/gaiaedr3".RA_ICRS, "I/350/gaiaedr3".DE_ICRS, "I/350/gaiaedr3".pmRA, "I/350/gaiaedr3".pmDE, "I/350/gaiaedr3".Gmag, "I/350/gaiaedr3".BPmag, "I/350/gaiaedr3".RPmag FROM "I/350/gaiaedr3" WHERE "I/350/gaiaedr3".Gmag is not NULL and "I/350/gaiaedr3".Gmag<=18.05 and "I/350/gaiaedr3".BPmag is NULL -- output format : csv SELECT TOP 990000000 "I/350/gaiaedr3".RA_ICRS, "I/350/gaiaedr3".DE_ICRS, "I/350/gaiaedr3".pmRA, "I/350/gaiaedr3".pmDE, "I/350/gaiaedr3".Gmag, "I/350/gaiaedr3".BPmag, "I/350/gaiaedr3".RPmag FROM "I/350/gaiaedr3" WHERE "I/350/gaiaedr3".BPmag>=11.55 and "I/350/gaiaedr3".BPmag<11.65 Gaia_DR3_BP_11.6.csv -- output format : csv SELECT TOP 990000000 "I/350/gaiaedr3".RA_ICRS, "I/350/gaiaedr3".DE_ICRS, "I/350/gaiaedr3".pmRA, "I/350/gaiaedr3".pmDE, "I/350/gaiaedr3".Gmag, "I/350/gaiaedr3".BPmag, "I/350/gaiaedr3".RPmag FROM "I/350/gaiaedr3" WHERE "I/350/gaiaedr3".Gmag>=-9.55 and "I/350/gaiaedr3".Gmag<9.00 Gaia_DR3_G_upto_09.0.csv -- output format : csv SELECT "I/350/gaiaedr3".RA_ICRS, "I/350/gaiaedr3".e_RA_ICRS, "I/350/gaiaedr3".DE_ICRS, "I/350/gaiaedr3".e_DE_ICRS, "I/350/gaiaedr3".Source, "I/350/gaiaedr3".Plx, "I/350/gaiaedr3".e_Plx, "I/350/gaiaedr3".PM, "I/350/gaiaedr3".pmRA, "I/350/gaiaedr3".e_pmRA, "I/350/gaiaedr3".pmDE, "I/350/gaiaedr3".e_pmDE, "I/350/gaiaedr3".RUWE, "I/350/gaiaedr3".FG, "I/350/gaiaedr3".e_FG, "I/350/gaiaedr3".Gmag, "I/350/gaiaedr3".e_Gmag, "I/350/gaiaedr3".FBP, "I/350/gaiaedr3".e_FBP, "I/350/gaiaedr3".BPmag, "I/350/gaiaedr3".e_BPmag, "I/350/gaiaedr3".FRP, "I/350/gaiaedr3".e_FRP, "I/350/gaiaedr3".RPmag, "I/350/gaiaedr3".e_RPmag, "I/350/gaiaedr3"."BP-RP", "I/350/gaiaedr3".RVDR2, "I/350/gaiaedr3".e_RVDR2, "I/350/gaiaedr3".Tefftemp, "I/350/gaiaedr3".loggtemp, "I/350/gaiaedr3".PS1, "I/350/gaiaedr3".SDSSDR13, "I/350/gaiaedr3".SkyMapper2, "I/350/gaiaedr3".URAT1, "I/350/gaiaedr3".GmagCorr, "I/350/gaiaedr3".e_GmagCorr, "I/350/gaiaedr3".FGCorr, "I/350/gaiaedr3".RAJ2000, "I/350/gaiaedr3".DEJ2000 FROM "I/350/gaiaedr3" https://gaia.ari.uni-heidelberg.de/tap.html SELECT TOP 1811709771 ra,dec, pmra,pmdec, phot_g_mean_mag,phot_bp_mean_mag,phot_rp_mean_mag FROM gaiaedr3.gaia_source WHERE phot_bp_mean_mag>=17.95 and phot_bp_mean_mag<18.05 ������������������������������������������astap_2022.12.09.orig/star_database_creation/Gaia_eDR3_missing_stars_upto_mag5.csv������������������0000644�0001751�0001751�00000012215�13763241606�027304� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������RA(epoch 1991.25),DE(epoch 1991.25),TYC1,TYC2,TYC3,pmRA,pmDE,BTmag,VTmag,HIP 101.2885411,-16.71314306,5949,2777,1,-546,-1223.1,,-1.088,32349 95.98787763,-52.69571799,8534,2277,1,20,23.7,-0.417,-0.608,30438 279.2341083,38.78299311,3105,2070,1,201,287.5,,0.087,91262 219.9204103,-60.83514707,9007,5849,1,-3678.2,481.8,,0.137,71683 213.9181151,19.18727298,1472,1436,1,-1093.4,-1999.4,,0.161,69673 79.17206517,45.99902927,3358,3141,1,75.5,-427.1,,0.238,24608 78.63446353,-8.20163919,5331,1752,1,1.9,-0.6,0.312,0.283,24436 114.8272419,5.22750767,187,2184,1,-716.6,-1034.6,,0.461,37279 24.42813204,-57.23666007,8478,1395,1,88,-40.1,0.458,0.522,7588 210.956019,-60.3729784,9005,3919,1,-34,-25.1,,0.584,68702 88.79287161,7.40703634,129,1873,1,27.3,10.9,2.849,0.769,27989 297.6945086,8.86738491,1058,3399,1,536.8,385.5,1.248,0.955,97649 201.2983523,-11.16124491,5547,1518,1,-42.5,-31.7,0.877,1.031,65474 68.98000195,16.50976164,1266,1416,1,62.8,-189.4,2.937,1.16,21421 219.9141283,-60.83947139,9007,5848,1,-3600.4,952.1,,1.243,71681 186.6497559,-63.09905586,8979,3464,1,-35.4,-14.7,1.053,1.245,60718 344.4117732,-29.62183701,6977,1267,1,329.2,-164.2,1.407,1.248,113368 191.9304954,-59.68873246,8659,3107,1,-48.2,-12.8,1.102,1.281,62434 247.351948,-26.43194608,6803,2158,1,-10.2,-23.2,3.494,1.287,80763 116.3306826,28.02631031,1920,2194,1,-625.7,-46,2.455,1.325,37826 310.3579727,45.28033423,3574,3347,1,1.6,1.5,1.471,1.343,102098 152.0935808,11.96719513,833,1381,1,-249.4,4.9,1.36,1.399,49669 104.6564445,-28.97208931,6535,3619,1,2.6,2.3,1.35,1.5,33579 186.652071,-63.09950428,8979,3465,1,-42.5,-7.7,1.366,1.547,60718 263.4021937,-37.10374835,7388,1093,1,-8.9,-30,1.446,1.607,85927 81.28278416,6.34973451,113,1856,1,-8.8,-13.3,1.468,1.629,25336 81.57290804,28.60787346,1859,1470,1,23.3,-174.2,1.605,1.67,25428 138.3010033,-69.71747245,9200,2603,1,-157.7,108.9,1.746,1.675,45238 84.05338572,-1.20191725,4766,2450,1,1.5,-1.1,1.553,1.692,26311 122.3831473,-47.33661177,8140,6533,1,-5.9,9.9,1.627,1.793,39953 276.0431097,-34.3843146,7401,3471,1,-39.6,-124.1,1.833,1.81,90185 187.791372,-57.11256922,8654,3422,1,27.9,-264.3,3.653,1.832,61084 51.08061889,49.86124281,3320,2808,1,24.1,-26,2.418,1.866,15863 85.18968672,-1.94257841,4771,1188,1,4,2.5,1.767,1.884,26727 306.4118735,-56.73488071,8785,1898,1,7.7,-86.2,1.762,1.898,100751 89.88237261,44.94743492,2924,2742,1,-56.4,-0.9,1.989,1.904,28360 264.3296907,-42.99782155,7892,7679,1,6.1,-0.9,2.374,1.904,86228 107.0978586,-26.39320806,6532,5001,1,,,2.687,1.905,34444 95.6749475,-17.95591658,5938,2918,1,-3.5,-0.5,1.747,1.933,30324 131.1758221,-54.70856797,8573,3571,1,28.8,-104.1,,1.991,42913 165.9326537,61.75111888,4146,1274,1,-136.5,-35.2,,2.023,54061 99.42792641,16.39941482,1329,1746,1,-2,-66.9,,2.024,31681 37.94661861,89.26413528,4628,237,1,,,2.708,2.038,11767 283.8163196,-26.29659428,6868,1829,1,13.9,-52.7,1.888,2.044,92855 2.09653333,29.09082805,1735,3180,1,135.7,-162.9,2.003,2.05,677 252.1661142,-69.02764028,9275,3641,1,17.3,-32.7,3.79,2.052,82273 47.04220716,40.9556512,2851,2168,1,2.4,-1.4,2.1,2.105,14576 31.79289556,23.46276111,1758,2416,1,,,3.487,2.125,9884 10.89682139,-17.98667833,5847,2333,1,,,3.343,2.139,3419 141.8968839,-8.65867917,5460,1592,1,-14.4,33.3,3.879,2.14,46390 177.2661598,14.57233687,870,988,1,-499,-113.8,2.3,2.143,57632 211.6720767,-36.36875972,7293,2215,1,-519.7,-519.2,3.359,2.158,68933 125.628603,-59.50953829,8579,2692,1,-25.3,22.7,,2.166,41037 222.67663,74.15547611,4416,1799,1,,,3.998,2.215,72607 17.43250583,35.62083028,2286,1329,1,175,-112.5,4.155,2.244,5447 204.9719696,-53.46636269,8663,2929,1,-14.6,-12.8,2.051,2.247,66657 240.0833811,-22.62162139,6779,2194,1,,,2.183,2.271,78401 340.6664214,-46.88456694,8446,1644,1,134.5,-5.7,4.131,2.287,112122 2.29214722,59.15019444,3664,1985,1,,,2.689,2.299,746 218.8768816,-42.15774562,7814,3706,1,-35.3,-32.4,2.124,2.306,71352 30.97467083,42.32984306,2837,2311,1,,,3.984,2.308,9640 154.9923405,19.84186032,1423,1349,1,310.8,-152.9,3.792,2.366,50583 136.9990669,-43.43262306,7689,2617,1,-23.4,14.4,4.412,2.379,44816 269.1515722,51.48894944,3523,1684,1,,,4.246,2.381,87833 208.8851454,-47.28826634,8267,3545,1,-57.1,-44.8,2.295,2.497,68002 183.9519247,-17.54198194,6098,1754,1,,,2.458,2.532,59803 326.0464219,9.87500917,1125,2186,1,,,4.391,2.533,107315 89.93016694,37.21274722,2418,1573,1,,,2.552,2.602,28380 262.6909947,-37.29574028,7387,1249,1,-5.3,-29.9,2.431,2.624,85696 28.65979889,20.8082825,1212,1935,1,,,2.827,2.651,8903 345.9430772,28.08247361,2243,1831,1,187.3,136,4.61,2.654,113881 45.56991167,4.08992139,58,1618,1,-11.7,-77.7,4.687,2.716,14135 250.3227706,31.60193694,2582,3158,1,,,3.666,2.952,81693 258.6619283,14.39025889,990,2133,1,-17,47,5.077,3.48,84345 213.918092,19.18720548,1472,1436,2,-1093.4,-1999.4,,3.487,69673 275.2599428,72.73365667,4437,1491,1,,,4.15,3.614,89937 154.9934571,19.84114183,1423,1349,2,306.4,-160.8,,3.644,50583 85.1898703,-1.94322469,4771,1188,2,4,2.5,3.498,3.699,26727 210.955625,-60.37312202,9005,3919,2,-34,-25.1,,3.95,68702 125.6287928,-59.5096235,8579,2692,2,-25.3,22.7,,4.121,41037 108.3843119,-44.64050083,7642,1461,1,109.4,325,6.316,4.767,34922 165.9322591,61.7511176,4146,1274,2,-116.3,-100.6,,4.945,54061�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/1476 areas.xls�����������������������������������������0000644�0001751�0001751�00000050360�14076300050�022357� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ����\�p�h ����,���j��D��B�� ��� ��d����������MbP?_������"����*����+�����������������%���,����������1�����Calibri1�����Calibri1�����Calibri1�����Calibri1����Calibri1����Calibri1�����Calibri1'�h�� Calibri Lightri Light Y����,��1�,��Calibri1���Calibri1����Calibri1�����Calibri1�����Calibri1�����Calibri1�����Calibri1����Calibri1��� �Calibri1���� �Calibri1��� �Calibri1���� �Calibri1����Calibri1����Calibri1���� �Calibri��������������&��ffffff?'��ffffff?(��������?)��������?M� �����d�XX�"��d�����XX333333?333333?�@���������V��� ���General���0���0.00���#,##0 ���#,##0.00���#,##0_);\(#,##0\)���#,##0_);[Red]\(#,##0\)���#,##0.00_);\(#,##0.00\)���#,##0.00_);[Red]\(#,##0.00\)���""\ #,##0_);\(""\ #,##0\)#��� ""\ #,##0_);[Red]\(""\ #,##0\)$���!""\ #,##0.00_);\(""\ #,##0.00\))���&""\ #,##0.00_);[Red]\(""\ #,##0.00\)���0%���0.00% ���0.00E+00 ���#\ ?/? ���#\ ??/?? ��� dd/mm/yyyy ��� dd/mmm/yy ���dd/mmm ���mmm/yy��� h:mm\ am/pm���h:mm:ss\ am/pm���hh:mm ���hh:mm:ss���dd/mm/yyyy\ hh:mm���""\ #,##0;""\ \-#,##0���""\ #,##0;[Red]""\ \-#,##0 ���""\ #,##0.00;""\ \-#,##0.00%���"""\ #,##0.00;[Red]""\ \-#,##0.00;���8_ ""\ * #,##0_ ;_ ""\ * \-#,##0_ ;_ ""\ * "-"_ ;_ @_ ,���)_ * #,##0_ ;_ * \-#,##0_ ;_ * "-"_ ;_ @_ C���@_ ""\ * #,##0.00_ ;_ ""\ * \-#,##0.00_ ;_ ""\ * "-"??_ ;_ @_ 4���1_ * #,##0.00_ ;_ * \-#,##0.00_ ;_ * "-"??_ ;_ @_  ���##0.0E+0���mm:ss���@;���8_(""\ * #,##0_);_(""\ * \(#,##0\);_(""\ * "-"_);_(@_),���)_(* #,##0_);_(* \(#,##0\);_(* "-"_);_(@_)C���@_(""\ * #,##0.00_);_(""\ * \(#,##0.00\);_(""\ * "-"??_);_(@_)4���1_(* #,##0.00_);_(* \(#,##0.00\);_(* "-"??_);_(@_))�����stepsize��������#������������*���� �stepsize4��������#������������*���� �stepsize5��������#���������������� �stepsizeX,���� �AL8C1D9213*�������C ��� ������C ��� ������C ��� ������C ��� ������C ��� ������C ��� ������C ��� ������C ��� ������C ��� ������C ��� ������C ��� ������C ��� ������C ��� ������C ��� ������C ��� ������C ���� ������C �� ����C �� ����C �� A����C �� A����C �� A����C �� ����C �� ����C �� ����C �� ����C �� ����C �� ����C �� ����C �� ����C �� ����C �� ����C �� ����C �� ����C �� A����C �� ����C �� ����C �� ����C �� A����C �� ����C �� A����C �� ͹C �� FFFFC �� ���n�C � � ����C �� ͹C �" �����C � �����C � � ����C � � ����C � � ���z�C � � �����C �� ����C �� AʱC � � ����C � �����C �� �����C �� �Α��C �� AAAAC �! �����C � �����C �� �����C �� �����C ����(�����C ��%� �����C ��� �����C ���� @A����C ��%� DA����� 20% - Accent1� 20% - Accent2� 20% - Accent3� 20% - Accent4� 20% - Accent5� 20% - Accent6� 40% - Accent1� 40% - Accent2� 40% - Accent3� 40% - Accent4� 40% - Accent5� 40% - Accent6� 60% - Accent1� 60% - Accent2� 60% - Accent3� 60% - Accent4� 60% - Accent5�! 60% - Accent6 �" Accent1 �# Accent2 �$ Accent3 �% Accent4 �& Accent5 �' Accent6 �( Berekening�) Controlecel�* Gekoppelde cel�+ Goed �, Invoer�-�.�/ Kop 1�0 Kop 2�1 Kop 3�2 Kop 4 �3 Neutraal �4 Notitie �5 Ongeldig�6����7 Titel �8 Totaal �9 Uitvoer�:�;�< Verklarende tekst�= WaarschuwingstekstU���}� ������uw}� �������uw}� ���I���uw}� ���$���uw}� �������uw}� � � �I���uw}� � � �� ���uw� ��,���������,��l��������8�@�����,��A������,��C�������,��������,����� ���,����� ���,����� ���,����� ���,����� ���,��������,��������,��������,��������,��������,��������,��������,��������,��������,��������,��������,��N�������,��������,��������,��������,��������,��������,��������,����� ���,�����!���,�����"���,�������@� �StepsizeX����%I$I@�� �Z������1@ �����Ring�����Declination minimum �����range�����RA cells$���>��RA step distance north[degr]$�� �>��RA step distance south[degr]�� �>��RA distance average�� ���DEC step distance���>��Cell required north���>��Cell required south���>��Cells required average���?�~ ���A���?~ �����V@ ���?��1-2~ ������?���?����A��������@��D�&����m۶mU@ ��DC������� �� ���?��2-3%����������@(��$$B���B�+����·@(��hDDA��A�+�� ��f[0@(��hDDA��A��� �� I$I@(� �DD2����s @(� �hC��������DA��A�2����AM"@(� �hC��������DA��A�C����P\Q}X@(�1�hC��������DC���������A��A����?����A�������@��D�"����%I$IT@(��DC������� � ���?��3-4%����������"@(��$$B���B�+����n31z@(��hDDA��A�+�� ��nk:!@(��hDDA��A��� �� I$I@(� �DD2����AM"@(� �hC��������DA��A�2�����|Jx&'/@(� �hC��������DA��A�C����z(@(�1�hC��������DC���������A��A����?����A�������@��D�"����$I$IS@(��DC������� � ���?��4-5%����������.@(��$$B���B�+����A\@(��hDDA��A�+�� ��f@(��hDD A��A��� �� I$I@(� �DD2�����|Jx&'/@(� �hC��������DA��A�2����,g\5@(� �hC��������D A��A�C����ʊYa2@(�1�hC��������DC���������A��A�� ��?�� ��A�������@��D�"� ��������R@(��DC������� � � ��?��5-6%� ���������5@(��$ $ B���B�+� ���Î0@(��hD D A��A�+� � ��,F@(��hD D A��A�� � �� I$I@(� �DD 2� ���,g\5@(� �hC��������D A��A�2� ���Vhv1;@(� �hC��������D A��A�C� ���IJp8@(�1�hC��������D C���������A��A�� ��?�� ��A�������@��D �"� ���o۶m۶P@(��D C������� � � ��?��6-7%� ���������;@(��$ $ B���B�+� ���ZN @(��hD D A��A�+� � ��4qE@(��hD D A��A�� � �� I$I@(� �D D 2� ���Vhv1;@(� �hC��������D A��A�2� ���J:ܕ@@(� �hC��������D A��A�C� ���ST2_>@(�1�hC��������D C���������A��A�� ��?�� ��A�������@��D �"� ���m۶mN@(��D C������� � � ��?��7-8%� ��������@@(��$ $ B���B�+� ���+3@(��hD D A��A�+� � ��c(% @(��hD D A��A�� � ��(I$I@(� �D D 2� ���J:ܕ@@(� �hC��������D A��A�2� ���u HC@(� �hC��������D A��A�C� ���ؓA@(�1�hC��������D C���������A��A�� ��?�� ��A������� @��D �"� ���$I$IL@(��D C������� � � ��?��8-9%� ���������C@(��$ $ B���B�+� ���]-*G@(��hD D A��A�+� � ��だ@(��hD D A��A�� � ��(I$I@(� �D D 2� ���u HC@(� �hC��������D A��A�2� ��� wE@(� �hC��������D A��A�C� ���ZLD@(�1�hC��������D C���������A��A�� ��?�� ��A�������"@��D �"� ���o۶m۶I@(��D C������� � � ��?��9-10%� ��������E@(��$ $ B���B�+� ���VL1@(��hD D A��A�+� � ��ch$@(��hD DA��A�� � ��(I$I@(� �D D 2� ��� wE@(� �hC��������D A��A�2� ���/H@(� �hC��������DA��A�C� ���n1!G@(�1�hC��������D C���������A��A����?����A�������$@��D �"����J$I$G@(��D C������� � ���?��10-11%����������H@(��$$B���B�+����Cs\@(��hDDA��A�+�� ��u@(��hDDA��A��� ��(I$I@(� �D D2����/H@(� �hC��������DA��A�2����E4[J@(� �hC��������DA��A�C����d=LI@(�1�hC��������DC���������A��A����?����A�������&@��D�"����%I$ID@(��DC������� � ���?��11-12%����������J@(��$$B���B�+����cX@(��hDDA��A�+�� ��/Ng@(��hDDA��A��� ��(I$I@(� �DD2����E4[J@(� �hC��������DA��A�2����3.PL@(� �hC��������DA��A�C����"k5]K@(�1�hC��������DC���������A��A����?����A�������(@��D�"����������B@(��DC������� � ���?��12-13%����������L@(��$$B���B�+����P@(��hDDA��A�+�� ��!÷ @(��hDDA��A��� ��(I$I@(� �DD2����3.PL@(� �hC��������DA��A�2����_; N@(� �hC��������DA��A�C����ƹ5M@(�1�hC��������DC���������A��A����?����A�������*@��D�"����m۶m>@(��DC������� � ���?��13-14%����������N@(��$$B���B�+����t 4O@(��hDDA��A�+�� ��UX@(��hDDA��A��� ��$I$I@(� �DD2����_; N@(� �hC��������DA��A�2����mYO@(� �hC��������DA��A�C����~"N@(�1�hC��������DC���������A��A����?����A�������,@��D�"����n۶m۶9@(��DC������� � ���?��14-15%���������O@(��$$B���B�+����uHy@(��hDDA��A�+�� ��̚Of@(��hDDA��A��� ��$I$I@(� �DD2����mYO@(� �hC��������DA��A�2����f UbP@(� �hC��������DA��A�C����}C|P@(�1�hC��������DC���������A��A����?����A�������.@��D�"����%I$I4@(��DC������� � ���?��15-16%���������@P@(��$$B���B�+����w@(��hDDA��A�+�� ��S/[@(��hDDA��A��� ��$I$I@(� �DD2����f UbP@(� �hC��������DA��A�2����ŹP@(� �hC��������DA��A�C����{^P@(�1�hC��������DC���������A��A����?����A�������0@��D�"����m۶m.@(��DC������� � ���?��16-17%���������P@(��$$B���B�+����+E&[Ϸ@(��hDDA��A�+�� ��lٌ0%@(��hDDA��A��� ��$I$I@(� �DD2����ŹP@(� �hC��������DA��A�2����]v*8Q@(� �hC��������DA��A�C����RQ@(�1�hC��������DC���������A��A����?����A�������1@��D�"����&I$I$@(��DC������� � ���?��17-18%����������Q@(��$$B���B�+����VQ@(��hDDA��A�+�� ��ug7Z@(��hDDA��A��� ��$I$I@(� �DD2����]v*8Q@(� �hC��������DA��A�2����hmQ@(� �hC��������DA��A�C����ƃxvtWQ@(�1�hC��������DC���������A��A����?����A�������2@��D�"����'I$I@(��DC������� � ���?��18-19%���������@Q@(��$$B���B�+����)x#@(��hDDA��A�+�� ��Nozӛ@(��hDDA��A��� ��%I$I@(� �DD2����hmQ@(� �hC��������DA��A�2���������Q@(� �hC��������DA��A�C����!3 +}{Q@(�1�hC��������DC���������A��A����?����A�"������������(��DC������� ����A����B����?�~ ���A���3@"����%I$I(��DC������� � ���?��19-20%���������@Q@(��$$B���B�+����Nozӛ@ ��hDDA��A�+�� ��)x#@ ��hDDA��A��� ��%I$I@(� �DD2���������Q@(� �hC��������DA��A�2����hmQ@(� �hC��������DA��A�C����!3 +}{Q@(�1�hC��������DC���������A��A����?����A�������4@��D�"����%I$I$(��DC������� � ���?��20-21%����������Q@(��$$B���B�+����ug7Z@(��hDDA��A�+�� ��VQ@(��hDDA��A��� ��%I$I@(� �DD2����hmQ@(� �hC��������DA��A�2����]v*8Q@(� �hC��������DA��A�C����ƃxvtWQ@(�1�hC��������DC���������A��A����?����A�������5@��D�"����m۶m.(��DC������� � ���?��21-22%���������P@(��$$B���B�+����lٌ0%@(��hDDA��A�+�� ��+E&[Ϸ@(��hDDA��A��� ��&I$I@(� �DD2����]v*8Q@(� �hC��������DA��A�2����ŹP@(� �hC��������DA��A�C����RQ@(�1�hC��������DC���������A��A����?����A�������6@��D�"����%I$I4(��DC������� � ���?��22-23%���������@P@(��$$B���B�+����S/[@(��hDDA��A�+�� ��w@(��hDDA��A��� ��$I$I@(� �DD2����ŹP@(� �hC��������DA��A�2����f UbP@(� �hC��������DA��A�C����{^P@(�1�hC��������DC���������A��A����?����A�������7@��D�"����n۶m۶9(��DC������� � ���?��23-24%���������O@(��$$B���B�+����̚Of@(��hDDA��A�+�� ��uHy@(��hDDA��A��� ��$I$I@(� �DD2����f UbP@(� �hC��������DA��A�2����mYO@(� �hC��������DA��A�C����}C|P@(�1�hC��������DC���������A��A����?����A�������8@��D�"����m۶m>(��DC������� � ���?��24-25%����������N@(��$$B���B�+����UX@(��hDDA��A�+�� ��t 4O@(��hDDA��A��� ��$I$I@(� �DD2����mYO@(� �hC��������DA��A�2����_; N@(� �hC��������DA��A�C����~"N@(�1�hC��������DC���������A��A����?����A�������9@��D�"����������B(��DC������� � ���?��25-26%����������L@(��$$B���B�+����!÷ @(��hDDA��A�+�� ��P@(��hDDA��A��� ��$I$I@(� �DD2����_; N@(� �hC��������DA��A�2����3.PL@(� �hC��������DA��A�C����ƹ5M@(�1�hC��������DC���������A��A����?����A�������:@��D�"����%I$ID(��DC������� � ���?��26-27%����������J@(��$$B���B�+����/Ng@(��hDDA��A�+�� ��cX@(��hDDA��A��� ��(I$I@(� �DD2����3.PL@(� �hC��������DA��A�2����E4[J@(� �hC��������DA��A�C����"k5]K@(�1�hC��������DC���������A��A�� ��?�� ��A�������;@��D�"� ���J$I$G(��DC������� � � ��?��27-28%� ���������H@(��$ $ B���B�+� ���u@(��hD DA��A�+� � ��Cs\@(��hD D A��A�� � ��(I$I@(� �DD 2� ���E4[J@(� �hC��������DA��A�2� ���/H@(� �hC��������D A��A�C� ���d=LI@(�1�hC��������D C���������A��A��!��?��!��A�������<@��D �"�!���o۶m۶I(��D C������� � �!��?��28-29%�!��������E@(��$!$!B���B�+�!���ch$@(��hD!D A��A�+�!� ��VL1@(��hD!D!A��A��!� ��(I$I@(� �D D!2�!���/H@(� �hC��������D A��A�2�!��� wE@(� �hC��������D!A��A�C�!���n1!G@(�1�hC��������D!C���������A��A��"��?��"��A�������=@��D!�"�"���$I$IL(��D!C������� � �"��?��29-30%�"���������C@(��$"$"B���B�+�"���だ@(��hD"D!A��A�+�"� ��]-*G@(��hD"D"A��A��"� ��(I$I@(� �D!D"2�"��� wE@(� �hC��������D!A��A�2�"���u HC@(� �hC��������D"A��A�C�"���ZLD@(�1�hC��������D"C���������A��A��#���,������$���,�����%���,�����&���,�����'���,�����(���,�����)���,�����*���,��o����+���,�� ����#��?��#��A�������>@��D"�"�#���m۶mN(��D"C������� � �#��?��30-31%�#��������@@(��$#$#B���B�+�#���c(% @(��hD#D"A��A�+�#� ��+3@(��hD#D#A��A��#� ��(I$I@(� �D"D#2�#���u HC@(� �hC��������D"A��A�2�#���J:ܕ@@(� �hC��������D#A��A�C�#���ؓA@(�1�hC��������D#C���������A��A��$��?��$��A�������?@��D#�"�$���o۶m۶P(��D#C������� � �$��?��31-32%�$���������;@(��$$$$B���B�+�$���4qE@(��hD$D#A��A�+�$� ��ZN @(��hD$D$A��A��$� ��(I$I@(� �D#D$2�$���J:ܕ@@(� �hC��������D#A��A�2�$���Vhv1;@(� �hC��������D$A��A�C�$���ST2_>@(�1�hC��������D$C���������A��A��%��?��%��A�������@@��D$�"�%��������R(��D$C������� � �%��?��32-33%�%���������5@(��$%$%B���B�+�%���,F@(��hD%D$A��A�+�%� ��Î0@(��hD%D%A��A��%� �� I$I@(� �D$D%2�%���Vhv1;@(� �hC��������D$A��A�2�%���,g\5@(� �hC��������D%A��A�C�%���IJp8@(�1�hC��������D%C���������A��A��&��?��&��A������@@��D%�"�&���$I$IS(��D%C������� � �&��?��33-34%�&���������.@(��$&$&B���B�+�&���f@(��hD&D%A��A�+�&� ��A\@(��hD&D&A��A��&� �� I$I@(� �D%D&2�&���,g\5@(� �hC��������D%A��A�2�&����|Jx&'/@(� �hC��������D&A��A�C�&���ʊYa2@(�1�hC��������D&C���������A��A��'��?��'��A�������A@��D&�"�'���%I$IT(��D&C������� � �'��?��34-35%�'���������"@(��$'$'B���B�+�'���nk:!@(��hD'D&A��A�+�'� ��n31z@(��hD'D'A��A��'� �� I$I@(� �D&D'2�'����|Jx&'/@(� �hC��������D&A��A�2�'���AM"@(� �hC��������D'A��A�C�'���z(@(�1�hC��������D'C���������A��A��(��?��(��A������A@��D'�"�(���m۶mU(��D'C������� � �(��?��36-37%�(���������@(��$($(B���B�+�(���f[0@(��hD(D'A��A�+�(� ��·@(��hD(D(A��A��(� �� I$I@(� �D'D(2�(���AM"@(� �hC��������D'A��A�2�(���s @(� �hC��������D(A��A�C�(���P\Q}X@(�1�hC��������D(C���������A��A��)��?�~ �)��A���B@&�)��������V ��D(C������� ��~ �)�����?�)� �� I$I@(� �D(D)�*��?��+��������@ � �%*=� �vY^T3��> ��������������������"� �+ �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/Gaia_1476conversion.lpr��������������������������������0000644�0001751�0001751�00000000437�13772603066�024340� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������program Gaia_290conversion; {$MODE Delphi} uses Forms, Interfaces, Gaia_1545conv in 'Gaia_290conv.pas' {Main_form}, unit_1545 in 'Unit_290.pas'; {$R *.res} begin Application.Initialize; Application.CreateForm(TMain_form, Main_form); Application.Run; end. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/Gaia_1476conversion.pas��������������������������������0000644�0001751�0001751�00000000441�13773674366�024335� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������program Gaia_1476conversion; {$MODE Delphi} uses Forms, Interfaces, Gaia_1476conv in 'Gaia_1476conv.pas' {Main_form}, Unit_290 in 'Unit_1476.pas'; {$R *.res} begin Application.Initialize; Application.CreateForm(TMain_form, Main_form); Application.Run; end. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/Gaia_1476conversion.lps��������������������������������0000644�0001751�0001751�00000026411�14076273412�024335� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectSession> <PathDelim Value="\"/> <Version Value="11"/> <BuildModes Active="Default"/> <Units Count="22"> <Unit0> <Filename Value="Gaia_1476conversion.pas"/> <IsPartOfProject Value="True"/> <CursorPos X="25" Y="8"/> <UsageCount Value="200"/> <Loaded Value="True"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit0> <Unit1> <Filename Value="gaia_1476conv.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Main_form"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Gaia_1476conv"/> <IsVisibleTab Value="True"/> <EditorIndex Value="1"/> <TopLine Value="1607"/> <CursorPos X="17" Y="1633"/> <UsageCount Value="200"/> <Loaded Value="True"/> <LoadedDesigner Value="True"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit1> <Unit2> <Filename Value="unit_1476.pas"/> <IsPartOfProject Value="True"/> <EditorIndex Value="-1"/> <UsageCount Value="200"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit2> <Unit3> <Filename Value="backup\Gaia_290conv.pas"/> <EditorIndex Value="-1"/> <TopLine Value="1462"/> <CursorPos Y="1517"/> <UsageCount Value="2"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit3> <Unit4> <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\objpas\classes\classesh.inc"/> <EditorIndex Value="-1"/> <TopLine Value="407"/> <CursorPos X="23" Y="429"/> <UsageCount Value="27"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit4> <Unit5> <Filename Value="C:\lazarus\fpc\3.2.0\source\rtl\win64\classes.pp"/> <UnitName Value="Classes"/> <EditorIndex Value="-1"/> <UsageCount Value="27"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit5> <Unit6> <Filename Value="Unit_290.pas"/> <EditorIndex Value="-1"/> <CursorPos X="24" Y="106"/> <UsageCount Value="8"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit6> <Unit7> <Filename Value="c:\lazarus\lcl\lclrescache.pas"/> <UnitName Value="LCLResCache"/> <EditorIndex Value="-1"/> <CursorPos X="17" Y="15"/> <UsageCount Value="15"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit7> <Unit8> <Filename Value="C:\lazarus\lcl\include\customcheckbox.inc"/> <EditorIndex Value="-1"/> <TopLine Value="116"/> <CursorPos Y="134"/> <UsageCount Value="12"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit8> <Unit9> <Filename Value="c:\lazarus\lcl\include\customform.inc"/> <EditorIndex Value="-1"/> <TopLine Value="163"/> <CursorPos X="53" Y="183"/> <UsageCount Value="12"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit9> <Unit10> <Filename Value="C:\lazarus\components\lazutils\lazloggerbase.pas"/> <UnitName Value="LazLoggerBase"/> <EditorIndex Value="-1"/> <TopLine Value="888"/> <CursorPos X="29" Y="893"/> <UsageCount Value="11"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit10> <Unit11> <Filename Value="d:\lazarus_trunk\lazarus\lcl\lclrescache.pas"/> <UnitName Value="LCLResCache"/> <EditorIndex Value="-1"/> <TopLine Value="451"/> <CursorPos X="92" Y="467"/> <UsageCount Value="14"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit11> <Unit12> <Filename Value="c:\lazarus\lcl\include\font.inc"/> <EditorIndex Value="-1"/> <TopLine Value="1269"/> <CursorPos Y="1288"/> <UsageCount Value="13"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit12> <Unit13> <Filename Value="c:\lazarus\lcl\interfaces\win32\win32wscontrols.pp"/> <UnitName Value="Win32WSControls"/> <EditorIndex Value="-1"/> <TopLine Value="244"/> <CursorPos Y="260"/> <UsageCount Value="13"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit13> <Unit14> <Filename Value="c:\lazarus\lcl\interfaces\win32\win32wsforms.pp"/> <UnitName Value="Win32WSForms"/> <EditorIndex Value="-1"/> <TopLine Value="467"/> <CursorPos Y="483"/> <UsageCount Value="13"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit14> <Unit15> <Filename Value="c:\lazarus\lcl\include\wincontrol.inc"/> <EditorIndex Value="-1"/> <TopLine Value="7455"/> <CursorPos Y="7473"/> <UsageCount Value="13"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit15> <Unit16> <Filename Value="c:\lazarus\lcl\interfaces\win32\win32wsstdctrls.pp"/> <UnitName Value="Win32WSStdCtrls"/> <EditorIndex Value="-1"/> <TopLine Value="2003"/> <CursorPos Y="2035"/> <UsageCount Value="13"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit16> <Unit17> <Filename Value="c:\lazarus\lcl\include\buttons.inc"/> <EditorIndex Value="-1"/> <TopLine Value="32"/> <CursorPos Y="50"/> <UsageCount Value="13"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit17> <Unit18> <Filename Value="c:\lazarus\lcl\include\pen.inc"/> <EditorIndex Value="-1"/> <TopLine Value="479"/> <CursorPos Y="496"/> <UsageCount Value="13"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit18> <Unit19> <Filename Value="C:\home\h\astap.fpc\unit_stack.pas"/> <EditorIndex Value="-1"/> <TopLine Value="7060"/> <CursorPos X="8" Y="7072"/> <UsageCount Value="10"/> <DefaultSyntaxHighlighter Value="Delphi"/> </Unit19> <Unit20> <Filename Value="C:\usr\lib\lazarus\2.0.6\lcl\include\customform.inc"/> <EditorIndex Value="-1"/> <TopLine Value="167"/> <CursorPos X="124" Y="184"/> <UsageCount Value="10"/> </Unit20> <Unit21> <Filename Value="C:\usr\lib\lazarus\2.0.6\lcl\include\wincontrol.inc"/> <EditorIndex Value="-1"/> <TopLine Value="6495"/> <CursorPos Y="6508"/> <UsageCount Value="10"/> </Unit21> </Units> <JumpHistory Count="30" HistoryIndex="29"> <Position1> <Filename Value="gaia_1476conv.pas"/> <Caret Line="937" Column="83" TopLine="904"/> </Position1> <Position2> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1330" Column="41" TopLine="1297"/> </Position2> <Position3> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1360" Column="13" TopLine="1327"/> </Position3> <Position4> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1366" Column="80" TopLine="1333"/> </Position4> <Position5> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1384" Column="78" TopLine="1351"/> </Position5> <Position6> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1399" Column="94" TopLine="1366"/> </Position6> <Position7> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1400" Column="27" TopLine="1367"/> </Position7> <Position8> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1401" Column="19" TopLine="1368"/> </Position8> <Position9> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1529" Column="15" TopLine="1495"/> </Position9> <Position10> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1531" Column="15" TopLine="1497"/> </Position10> <Position11> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1565" Column="82" TopLine="1532"/> </Position11> <Position12> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1568" Column="80" TopLine="1535"/> </Position12> <Position13> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1572" Column="19" TopLine="1539"/> </Position13> <Position14> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1575" Column="82" TopLine="1542"/> </Position14> <Position15> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1584" Column="41" TopLine="1551"/> </Position15> <Position16> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1598" Column="38" TopLine="1565"/> </Position16> <Position17> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1603" Column="84" TopLine="1570"/> </Position17> <Position18> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1612" Column="43" TopLine="1579"/> </Position18> <Position19> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1629" Column="53" TopLine="1596"/> </Position19> <Position20> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1630" Column="53" TopLine="1597"/> </Position20> <Position21> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1638" Column="81" TopLine="1605"/> </Position21> <Position22> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1648" Column="40" TopLine="1615"/> </Position22> <Position23> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1660" Column="81" TopLine="1627"/> </Position23> <Position24> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1669" Column="40" TopLine="1636"/> </Position24> <Position25> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1683" Column="81" TopLine="1650"/> </Position25> <Position26> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1684" Column="27" TopLine="1651"/> </Position26> <Position27> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1685" Column="19" TopLine="1652"/> </Position27> <Position28> <Filename Value="gaia_1476conv.pas"/> <Caret Line="84" Column="21" TopLine="63"/> </Position28> <Position29> <Filename Value="gaia_1476conv.pas"/> <Caret Line="650" Column="31" TopLine="617"/> </Position29> <Position30> <Filename Value="gaia_1476conv.pas"/> <Caret Line="1360" Column="3" TopLine="1340"/> </Position30> </JumpHistory> <RunParams> <FormatVersion Value="2"/> <Modes Count="0" ActiveMode="default"/> </RunParams> </ProjectSession> <Debugging> <Watches Count="1"> <Item1> <Expression Value="to_open"/> </Item1> </Watches> </Debugging> </CONFIG> �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/Gaia_1476conversion.res��������������������������������0000644�0001751�0001751�00000004270�13304527016�024322� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������@�� ���������0� ��������@4���V�S�_�V�E�R�S�I�O�N�_�I�N�F�O����������������������?�����������������������������S�t�r�i�n�g�F�i�l�e�I�n�f�o���|����0�4�0�9�0�4�E�4���0���F�i�l�e�V�e�r�s�i�o�n�����1�.�0�.�0�.�0���4���P�r�o�d�u�c�t�V�e�r�s�i�o�n���1�.�0�.�0�.�0���D����V�a�r�F�i�l�e�I�n�f�o�����$����T�r�a�n�s�l�a�t�i�o�n����� �� ��������� ��������(������ ���������������������������������������@@@///����������������������žNj �������������氡}bВ|ʢ¼ĭ �������eECb@T/BEG\;~Ȱmlk�������IIHʞ`=mMjI^:b?]83[817''&����esSɈm҇kuUʠBeD\9\::[=�ҧقdӆiդjmHyX͞[5dC\;@Bnkx�⸶|[wU8C_6e?ƏwӇl}cqU^@�߿C`5_5U)? ؇mπfjLsX�٭:�pIS#B_6ʖ~pOqSy]¢kjn�ơgpHmEiB^3ihg����FFEb4g<f<ۃcݖ{߳&&&����{zy~ݟllk���������� ������������� dcb����������������������(((}}}Эrrq�����������������������������������������������������������������������������������0����M�A�I�N�I�C�O�N���������0 ��������������������� ���������0� ��������<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publicKeyToken="6595b64144ccf1df" language="*" processorArchitecture="*"/> </dependentAssembly> </dependency> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly> �����<��� �P�L�A�T�F�O�R�M�T�A�R�G�E�T�S�������0� ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/gaia_1476conv.lfm��������������������������������������0000644�0001751�0001751�00000022265�14076274366�023151� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object Main_form: TMain_form Left = 322 Height = 516 Top = 174 Width = 777 Caption = 'Gaia star catalog conversion to HNSKY 290 format' ClientHeight = 516 ClientWidth = 777 Color = clBtnFace DoubleBuffered = True Font.Color = clWindowText Font.Height = -10 Font.Name = 'MS Sans Serif' KeyPreview = True OnCreate = FormCreate OnDestroy = FormDestroy OnKeyDown = FormKeyDown ParentDoubleBuffered = False LCLVersion = '2.0.12.0' object Bevel4: TBevel Left = 8 Height = 252 Top = 141 Width = 494 end object Label11: TLabel Left = 8 Height = 20 Top = 8 Width = 386 Caption = 'ASTAP, conversion program GAIA, version 1476' Font.Color = clWindowText Font.Height = -16 Font.Name = 'MS Sans Serif' Font.Style = [fsBold] ParentColor = False ParentFont = False end object Bevel1: TBevel Left = 512 Height = 382 Top = 66 Width = 251 end object Label15: TLabel Left = 608 Height = 13 Top = 259 Width = 107 Caption = 'Hold F7 key to pauze' Color = clBtnFace Font.Color = clRed Font.Height = -11 Font.Name = 'MS Sans Serif' ParentColor = False ParentFont = False Transparent = False end object Label3: TLabel Left = 608 Height = 13 Top = 240 Width = 98 Caption = 'Hold F4 key to stop' Color = clBtnFace Font.Color = clRed Font.Height = -11 Font.Name = 'MS Sans Serif' ParentColor = False ParentFont = False Transparent = False end object Label16: TLabel Left = 608 Height = 13 Top = 278 Width = 119 Caption = 'Hold F8 key to continue' Color = clBtnFace Font.Color = clRed Font.Height = -11 Font.Name = 'MS Sans Serif' ParentColor = False ParentFont = False Transparent = False end object Bevel2: TBevel Left = 8 Height = 69 Top = 66 Width = 494 end object Bevel3: TBevel Left = 7 Height = 110 Top = 399 Width = 495 end object Label7: TLabel Left = 342 Height = 13 Top = 73 Width = 78 Caption = 'Up to magnitude' ParentColor = False end object Label9: TLabel Left = 528 Height = 13 Top = 72 Width = 169 Caption = 'Common part for step 1, 2 and 3 !!!' ParentColor = False WordWrap = True end object Label4: TLabel Left = 19 Height = 13 Top = 421 Width = 427 Caption = 'Step 3) Convert 1476 files from A6 to 5 byte records. Or A7 to 6 byte for V-magnitude + B-R' ParentColor = False end object Label10: TLabel Left = 17 Height = 13 Top = 74 Width = 37 Caption = 'Step 1: ' ParentColor = False end object Label13: TLabel Left = 17 Height = 13 Top = 144 Width = 37 Caption = 'Step 2: ' ParentColor = False end object Label5: TLabel Left = 39 Height = 13 Top = 490 Width = 198 Caption = 'Source files will renamed to tmp_.....1476x' ParentColor = False end object Label17: TLabel Left = 39 Height = 13 Top = 119 Width = 159 Caption = 'Produces Gaia...sortedxx.csv files' ParentColor = False end object Label1: TLabel Left = 144 Height = 13 Top = 165 Width = 342 Caption = 'Maximum magnitude [0.1] So value 130 is equivalent to magnitude 13.0 .' ParentColor = False end object Label_epoch: TLabel Left = 128 Height = 13 Hint = 'Star proper motion is not included in this D32 database' Top = 198 Width = 435 Caption = 'Epoch (take current or next year so star proper motion is compensated correctly for that year' ParentColor = False WordWrap = True end object Label14: TLabel Left = 20 Height = 13 Top = 240 Width = 122 Caption = 'Add missing stars from list:' ParentColor = False end object Label6: TLabel Left = 59 Height = 13 Top = 332 Width = 315 Caption = 'Produces A6 byte records (or A7 (7) bytes for V magnitude + B-R) .' ParentColor = False end object Label12: TLabel Left = 59 Height = 13 Top = 370 Width = 282 Caption = 'After completion confirmation will be written to file "result.txt"' ParentColor = False end object Label2: TLabel Left = 19 Height = 13 Top = 332 Width = 34 Caption = 'Notes: ' ParentColor = False end object Label18: TLabel Left = 59 Height = 13 Top = 351 Width = 156 Caption = 'The Gaia files should be in .\gaia' ParentColor = False end object Label8: TLabel Left = 673 Height = 13 Top = 421 Width = 54 Caption = '2021-01-02' ParentColor = False end object status1: TStaticText Left = 547 Height = 17 Top = 259 Width = 44 Caption = 'Stopped' TabOrder = 0 end object sort_magnitude1: TButton Left = 22 Height = 25 Hint = 'Start the conversion' Top = 93 Width = 285 Caption = 'Step 1) convert to magnitude sorted files' OnClick = sort_magnitude1Click ParentShowHint = False ShowHint = True TabOrder = 1 end object bp_magnitude1: TRadioButton Left = 600 Height = 19 Top = 142 Width = 86 Caption = 'BP magnitude' Checked = True OnChange = bp_magnitude1Change TabOrder = 2 TabStop = True end object v_magnitude2: TRadioButton Left = 600 Height = 19 Top = 165 Width = 79 Caption = 'V magnitude' OnChange = bp_magnitude1Change TabOrder = 3 end object convert_to_smaller_record1: TButton Left = 128 Height = 25 Top = 456 Width = 265 Caption = 'Step 3) Convert A6 to 5 byte or A7 to 6 record' OnClick = convert_to_smaller_record1Click TabOrder = 4 end object abbreviation1: TEdit Left = 80 Height = 21 Hint = 'Sort up to this magnitude' Top = 456 Width = 32 MaxLength = 3 ParentShowHint = False ShowHint = True TabOrder = 5 Text = 'h18' end object step1_magnitude1: TEdit Left = 344 Height = 21 Hint = 'Sort up to this magnitude' Top = 92 Width = 56 ParentShowHint = False ShowHint = True TabOrder = 6 Text = '180' end object step1_maxmagnitude1: TUpDown Left = 400 Height = 21 Top = 92 Width = 16 Associate = step1_magnitude1 Max = 1000 Min = -1000 Position = 180 TabOrder = 7 end object powerdown_enabled: TCheckBox Left = 547 Height = 19 Hint = 'If selected, shutdown computer after completion.' Top = 352 Width = 157 Caption = 'Power down after completion' ParentShowHint = False ShowHint = True TabOrder = 8 end object magedit: TEdit Left = 20 Height = 21 Hint = 'Sort up to this magnitude' Top = 163 Width = 98 ParentShowHint = False ShowHint = True TabOrder = 9 Text = '180' end object epoch1: TEdit Left = 20 Height = 21 Hint = 'Epoch will be used to calculate the star position for this year or part of the year.' Top = 196 Width = 98 ParentShowHint = False ShowHint = True TabOrder = 10 Text = '2025' end object UpDown1: TUpDown Left = 118 Height = 21 Top = 163 Width = 16 Associate = magedit Max = 234 Min = 20 Position = 180 TabOrder = 11 end object gaia_missing_stars1: TEdit Left = 20 Height = 21 Hint = 'From tycho2' Top = 253 Width = 301 ParentShowHint = False ShowHint = True TabOrder = 12 Text = 'Gaia_eDR3_missing_stars_upto_mag5.csv' end object make290files1: TButton Left = 20 Height = 25 Hint = 'Start the conversion' Top = 280 Width = 287 Caption = 'Step 2) Start conversion to 1476 files' OnClick = make290files1Click ParentShowHint = False ShowHint = True TabOrder = 13 end object V_magnitude_and_BR1: TRadioButton Left = 600 Height = 19 Top = 188 Width = 109 Caption = 'V magnitude + B-R' OnChange = bp_magnitude1Change TabOrder = 14 end object thefile1: TLabel Left = 8 Height = 13 Top = 40 Width = 12 Caption = '----' ParentColor = False end object includemissing1: TCheckBox Left = 328 Height = 19 Top = 253 Width = 92 Caption = 'Include missing' Checked = True State = cbChecked TabOrder = 15 end object countstars1: TButton Left = 600 Height = 25 Top = 472 Width = 75 Caption = 'Count stars' OnClick = countstars1Click TabOrder = 16 end object Label19: TLabel Left = 556 Height = 13 Top = 96 Width = 115 Caption = 'Path to data: .\Gaia' ParentColor = False end object Label20: TLabel Left = 370 Height = 13 Top = 35 Width = 323 Caption = 'Use under Linux only. Window version exits with error in LCLrecache' ParentColor = False end end �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/unit_1476.pas������������������������������������������0000644�0001751�0001751�00000014475�13772707502�022345� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� unit unit_1476; {$MODE Delphi} interface var tof : file; nr_of_stars : longint; nr_of_skipped : longint; type hnskyhdr1476_A7 = packed record {interim record} ra7 : byte; ra8 : byte; ra9 : byte; dec7: byte; dec8: byte; {note with word and smallint, delphi makes longer records !!!} dec9: shortint; Bp_Rp: shortint;{blue minus red magnitude} end; hnskyhdr1476_A6 = packed record {interim record} ra7 : byte; ra8 : byte; ra9 : byte; dec7: byte; dec8: byte; {note with word and smallint, delphi makes longer records !!!} dec9: shortint; end; hnskyhdr1476_5 = packed record ra7 : byte; ra8 : byte; ra9 : byte; dec7: byte; dec8: byte; {note with word and smallint, delphi makes longer records !!!} end; hnskyhdr1476_6 = packed record ra7 : byte; ra8 : byte; ra9 : byte; dec7: byte; dec8: byte; {note with word and smallint, delphi makes longer records !!!} Bp_Rp: shortint;{blue minus red magnitude} end; var Numwritten : integer; new_magnitude_record_written : array[1..1801] of integer;{keep record if new magnitude step record is written to file for 6 byte records} function limit_radialen(z:double):double; function name1476(ra,dec:real): string; {give segment name} function filenames1476(nr:integer): string; implementation uses sysutils; Const Stepsize=90/17.5;{5.142857143 degrees} rings1476: array[0..36] of real= // (-90,-85.23224404, -75.66348756, -65.99286637, -56.14497387,-46.03163067,-35.54307745,-24.53348115,-12.79440589, 0.0 ,+12.79440589,+24.53348115,+35.54307745,+46.03163067,+56.14497387,+65.99286637,+75.66348756,+85.23224404,90); (-90, { 90 } -stepsize*17, { 87.42857143 } -stepsize*16, { 82.28571429 } -stepsize*15, { 77.14285714 } -stepsize*14, { 72 } -stepsize*13, { 66.85714286 } -stepsize*12, { 61.71428571 } -stepsize*11, { 56.57142857 } -stepsize*10, { 51.42857143 } -stepsize*9, { 46.28571429 } -stepsize*8, { 41.14285714 } -stepsize*7, { 36 } -stepsize*6, { 30.85714286 } -stepsize*5, { 25.71428571 } -stepsize*4, { 20.57142857 } -stepsize*3, { 15.42857143 } -stepsize*2, { 10.28571429 } -stepsize*1, { 5.142857143 } stepsize*0, { 0 } stepsize*1, { -5.142857143 } stepsize*2, { -10.28571429 } stepsize*3, { -15.42857143 } stepsize*4, { -20.57142857 } stepsize*5, { -25.71428571 } stepsize*6, { -30.85714286 } stepsize*7, { -36 } stepsize*8, { -41.14285714 } stepsize*9, { -46.28571429 } stepsize*10, { -51.42857143 } stepsize*11, { -56.57142857 } stepsize*12, { -61.71428571 } stepsize*13, { -66.85714286 } stepsize*14, { -72 } stepsize*15, { -77.14285714 } stepsize*16, { -82.28571429 } stepsize*17, { -87.42857143 } 90); { -90 } seg_length=36; segments1476: array[1..seg_length] of integer= {number of division in each latitude ring} {RA cells RA step distance north[degr] RA step distance south[degr] } (1 , 3 ,{ 5.383779642 , 16.1079919 } 9 ,{ 5.369330633 , 8.900837358 } 15 ,{ 5.340502415 , 7.416407865 } 21 ,{ 5.297434189 , 6.737571971 } 27 ,{ 5.240333755 , 6.318248833 } 33 ,{ 5.169476318 , 6.009785252 } 38 ,{ 5.219024035 , 5.906745491 } 43 ,{ 5.21991462 , 5.785640782 } 48 ,{ 5.182969867 , 5.648035995 } 52 ,{ 5.213571688 , 5.600886884 } 56 ,{ 5.200823535 , 5.518599387 } 60 ,{ 5.150692762 , 5.405813207 } 63 ,{ 5.148393531 , 5.349913547 } 65 ,{ 5.185300822 , 5.338871228 } 67 ,{ 5.179501938 , 5.286785849 } 68 ,{ 5.209038998 , 5.272805086 } 69 ,{ 5.196387621 , 5.217391304 } 69 ,{ 5.217391304 , 5.196387621 } 68 ,{ 5.272805086 , 5.209038998 } 67 ,{ 5.286785849 , 5.179501938 } 65 ,{ 5.338871228 , 5.185300822 } 63 ,{ 5.349913547 , 5.148393531 } 60 ,{ 5.405813207 , 5.150692762 } 56 ,{ 5.518599387 , 5.200823535 } 52 ,{ 5.600886884 , 5.213571688 } 48 ,{ 5.648035995 , 5.182969867 } 43 ,{ 5.785640782 , 5.21991462 } 38 ,{ 5.906745491 , 5.219024035 } 33 ,{ 6.009785252 , 5.169476318 } 27 ,{ 6.318248833 , 5.240333755 } 21 ,{ 6.737571971 , 5.297434189 } 15 ,{ 7.416407865 , 5.340502415 } 9 ,{ 8.900837358 , 5.369330633 } 3 ,{ 16.1079919 , 5.383779642 } 1); function filenames1476(nr:integer): string; var la,lo,m,o : integer; lat,seg : string; begin //const //filenames1476 : array[1..1476] of string= {} //(('0101.1476'), // ('0201.1476'), // ('0202.1476'), // ('0203.1476'), // ('0301.1476'), // ('0302.1476'), m:=0; la:=1; repeat lo:=segments1476[la]; m:=m+lo; if nr<=m then begin str(la,lat); if length(lat)=1 then lat:='0' +lat; str(nr-(m-lo),seg); if length(seg)=1 then seg:='0' +seg; result:=lat+seg+'.1476'; exit; end; inc(la); until la>seg_length; {36} end; function name1476(ra,dec:real): string; {give segment name} var r,d : integer; found: boolean; dum :string; begin found:=false; d:=0; if dec>+pi/2 then dec:=PI/2; if dec<-pi/2 then dec:=-PI/2; repeat {find dec ring} inc(d); if dec*180/pi<rings1476[d] then begin found:=true; str(d,result); if length(result)=1 then result:='0' +result; end; until ((found=true) or (d>=seg_length)); {find ra segment} if ra>=2*pi then ra:=0; if ra<0 then ra:=0; str( 1+trunc(segments1476[d]*ra/(2*pi)),dum); if length(dum)=1 then dum:='0' +dum; result:=result+dum+'.1476'; end; PROCEDURE ang_sep(ra1,dec1,ra2,dec2 : real;var sep: real); { By Han Kleijn} var cos_sep:real; {caculates angular separation. according formula 9.1 old meeus} Begin cos_sep:=sin(dec1)*sin(dec2)+ cos(dec1)*cos(dec2)*cos(ra1-ra2); if ABS(cos_sep)<1 then begin sep:=(PI/2-ARCTAN(cos_sep/(SQRT(1-SQR(cos_sep))))) end {arccos function} else begin if cos_sep>0 then sep:=0 {note bij x=1 klapt uitkomst net om} else sep:=PI; end; {arccos function} end; function limit_radialen(z:double):double; begin while z<0 do z:=z+2*pi; while z>=2*pi do z:=z-2*pi; {corrected 2019} limit_radialen:=z; end; begin end. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/readme.txt���������������������������������������������0000644�0001751�0001751�00000015055�14076277232�022171� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������This is the sorting program used for creating the ASTAP Gaia type 1476 database. The program is only intended for programmers not for general use. Input files are extracted from http://vizier.u-strasbg.fr/, catalogue Gaia DR3, a total of 19.6 gbyte. The format of the extracted files was as follows: RA_ICRS,DE_ICRS,pmRA,pmDE,Gmag,BPmag,RPmag 45.0343428347,0.23538959952,45.466,-6.834,8.0688,8.55408,7.42 45.09499151005,0.47683613114,19.353,4.014,9.899,9.87338,9.9184 45.50145386113,0.49769720375,25.169,-23.703,9.36566,9.6971,8.86944 44.61949163493,0.43725302893,1.154,2.824,8.77361,9.27858,8.10795 45.00799417062,0.88856215858,-59.652,-64.404,9.314,9.82925,8.63151 45.19600499624,0.99329823081,17.735,-24.867,8.81278,9.0281,8.44315 45.07279557246,0.96997078249,29.432,-93.78,7.47505,8.02509,6.77223 45.96460083512,1.01956203826,-8.292,-9.872,7.89693,9.11274,6.80843 45.35644683021,1.15617356008,18.885,-0.896,7.34472,7.43959,7.14348 45.79434455067,1.36809155463,47.423,-19.006,7.40869,7.99858,6.67794 45.87127884601,1.51224348242,48.359,12.431,8.91426,9.17856,8.47791 44.81988701739,1.24455388355,12.404,-5.014,8.63183,8.64141,8.57615 44.53332789932,1.37114804383,-1.178,-16.488,9.51966,9.80353,9.07019 There is one special input file contaning the missing bright stars. This file was created with a seperate program by comparing the Gaia DR3 with Tycho 2 up to magnitude5 . The missing bright stars are contained in input file: Gaia_eDR3_missing_stars_upto_mag5.csv The following files where extracted from Vizier. The fainter magnitudes up to magnitude 18 are extracted in steps of 0.1 magnitude: 03/12/2020 14:51 19,896,461 Gaia_DR3_BP_0.0-09.95.csv 03/12/2020 14:50 2,050,255 Gaia_DR3_BP_10.0.csv 03/12/2020 14:50 2,269,528 Gaia_DR3_BP_10.1.csv 03/12/2020 14:50 2,478,876 Gaia_DR3_BP_10.2.csv 03/12/2020 14:50 2,694,053 Gaia_DR3_BP_10.3.csv 03/12/2020 14:50 2,950,607 Gaia_DR3_BP_10.4.csv 03/12/2020 14:49 3,231,018 Gaia_DR3_BP_10.5.csv 03/12/2020 15:05 3,540,026 Gaia_DR3_BP_10.6.csv 03/12/2020 15:05 3,877,695 Gaia_DR3_BP_10.7.csv 03/12/2020 15:05 4,250,554 Gaia_DR3_BP_10.8.csv 03/12/2020 15:06 4,632,552 Gaia_DR3_BP_10.9.csv 03/12/2020 15:06 5,096,480 Gaia_DR3_BP_11.0.csv 03/12/2020 15:24 5,587,766 Gaia_DR3_BP_11.1.csv 03/12/2020 15:24 6,090,694 Gaia_DR3_BP_11.2.csv 03/12/2020 15:25 6,602,722 Gaia_DR3_BP_11.3.csv 03/12/2020 15:25 7,253,054 Gaia_DR3_BP_11.4.csv 03/12/2020 15:25 7,902,045 Gaia_DR3_BP_11.5.csv 03/12/2020 17:09 8,613,569 Gaia_DR3_BP_11.6.csv 03/12/2020 17:09 9,339,942 Gaia_DR3_BP_11.7.csv 03/12/2020 17:09 10,221,135 Gaia_DR3_BP_11.8.csv 03/12/2020 17:09 11,081,671 Gaia_DR3_BP_11.9.csv 03/12/2020 17:10 12,029,875 Gaia_DR3_BP_12.0.csv 03/12/2020 17:10 13,106,595 Gaia_DR3_BP_12.1.csv 03/12/2020 17:10 14,242,274 Gaia_DR3_BP_12.2.csv 03/12/2020 17:12 15,410,886 Gaia_DR3_BP_12.3.csv 03/12/2020 17:12 16,810,815 Gaia_DR3_BP_12.4.csv 03/12/2020 17:12 18,232,392 Gaia_DR3_BP_12.5.csv 03/12/2020 17:12 19,823,627 Gaia_DR3_BP_12.6.csv 03/12/2020 17:13 21,501,023 Gaia_DR3_BP_12.7.csv 03/12/2020 17:12 23,350,791 Gaia_DR3_BP_12.8.csv 03/12/2020 17:13 25,284,567 Gaia_DR3_BP_12.9.csv 03/12/2020 17:13 27,430,688 Gaia_DR3_BP_13.0.csv 03/12/2020 18:06 29,785,581 Gaia_DR3_BP_13.1.csv 03/12/2020 18:06 32,129,739 Gaia_DR3_BP_13.2.csv 03/12/2020 18:06 34,813,084 Gaia_DR3_BP_13.3.csv 03/12/2020 18:06 37,577,965 Gaia_DR3_BP_13.4.csv 03/12/2020 18:07 40,543,223 Gaia_DR3_BP_13.5.csv 03/12/2020 18:07 43,934,216 Gaia_DR3_BP_13.6.csv 03/12/2020 23:03 47,487,265 Gaia_DR3_BP_13.7.csv 03/12/2020 23:03 51,103,103 Gaia_DR3_BP_13.8.csv 04/12/2020 00:43 85,353,399 Gaia_DR3_BP_13.9.csv 04/12/2020 00:29 92,036,402 Gaia_DR3_BP_14.0.csv 04/12/2020 00:30 99,161,139 Gaia_DR3_BP_14.1.csv 04/12/2020 00:31 106,872,358 Gaia_DR3_BP_14.2.csv 04/12/2020 00:31 115,154,131 Gaia_DR3_BP_14.3.csv 04/12/2020 00:31 124,085,191 Gaia_DR3_BP_14.4.csv 04/12/2020 00:34 133,121,275 Gaia_DR3_BP_14.5.csv 04/12/2020 00:32 143,366,174 Gaia_DR3_BP_14.6.csv 04/12/2020 00:34 153,943,373 Gaia_DR3_BP_14.7.csv 04/12/2020 00:33 165,607,984 Gaia_DR3_BP_14.8.csv 04/12/2020 00:36 178,073,165 Gaia_DR3_BP_14.9.csv 04/12/2020 00:34 190,749,368 Gaia_DR3_BP_15.0.csv 04/12/2020 00:37 204,638,224 Gaia_DR3_BP_15.1.csv 04/12/2020 00:35 220,016,654 Gaia_DR3_BP_15.2.csv 04/12/2020 00:35 235,747,013 Gaia_DR3_BP_15.3.csv 04/12/2020 00:37 252,849,866 Gaia_DR3_BP_15.4.csv 04/12/2020 00:38 271,255,836 Gaia_DR3_BP_15.5.csv 04/12/2020 00:38 290,983,908 Gaia_DR3_BP_15.6.csv 04/12/2020 00:39 311,889,795 Gaia_DR3_BP_15.7.csv 04/12/2020 13:00 334,586,498 Gaia_DR3_BP_15.8.csv 04/12/2020 13:00 358,029,321 Gaia_DR3_BP_15.9.csv 04/12/2020 13:00 383,117,375 Gaia_DR3_BP_16.0.csv 04/12/2020 13:00 409,829,130 Gaia_DR3_BP_16.1.csv 04/12/2020 13:00 439,210,861 Gaia_DR3_BP_16.2.csv 04/12/2020 13:00 469,567,630 Gaia_DR3_BP_16.3.csv 04/12/2020 12:59 501,692,514 Gaia_DR3_BP_16.4.csv 04/12/2020 12:59 534,964,376 Gaia_DR3_BP_16.5.csv 04/12/2020 12:59 570,798,560 Gaia_DR3_BP_16.6.csv 04/12/2020 12:59 608,463,301 Gaia_DR3_BP_16.7.csv 04/12/2020 12:59 647,961,081 Gaia_DR3_BP_16.8.csv 04/12/2020 12:58 690,181,065 Gaia_DR3_BP_16.9.csv 04/12/2020 12:58 733,847,359 Gaia_DR3_BP_17.0.csv 04/12/2020 12:58 780,350,573 Gaia_DR3_BP_17.1.csv 04/12/2020 12:58 828,625,337 Gaia_DR3_BP_17.2.csv 04/12/2020 12:57 880,530,596 Gaia_DR3_BP_17.3.csv 05/12/2020 12:26 934,451,667 Gaia_DR3_BP_17.4.csv 04/12/2020 12:57 991,420,445 Gaia_DR3_BP_17.5.csv 04/12/2020 12:57 1,052,044,231 Gaia_DR3_BP_17.6.csv 04/12/2020 12:57 1,115,809,050 Gaia_DR3_BP_17.7.csv 04/12/2020 12:56 1,183,351,092 Gaia_DR3_BP_17.8.csv 04/12/2020 12:56 1,255,659,042 Gaia_DR3_BP_17.9.csv 04/12/2020 12:53 1,331,708,481 Gaia_DR3_BP_18.0.csv And these with missing BP magnitude: 04/12/2020 15:50 202,546,380 Gaia_DR3_missing_BP_G_0.0-17.3.csv 04/12/2020 15:50 137,587,111 Gaia_DR3_missing_BP_G_17.4-17.7.csv Conversion to the ASTAP database will take a huge time up to 24 hours or more. Han Kleijn 2021-7-22 �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/Gaia_1476conversion.lpi��������������������������������0000644�0001751�0001751�00000005410�14076274366�024330� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="11"/> <PathDelim Value="\"/> <General> <Flags> <MainUnitHasUsesSectionForAllUnits Value="False"/> <MainUnitHasCreateFormStatements Value="False"/> <MainUnitHasTitleStatement Value="False"/> </Flags> <SessionStorage Value="InProjectDir"/> <MainUnit Value="0"/> <Title Value="Gaia_1476conversion"/> <UseAppBundle Value="False"/> <ResourceType Value="res"/> </General> <BuildModes Count="1"> <Item1 Name="Default" Default="True"/> </BuildModes> <PublishOptions> <Version Value="2"/> </PublishOptions> <RunParams> <FormatVersion Value="2"/> <Modes Count="1"> <Mode0 Name="default"/> </Modes> </RunParams> <RequiredPackages Count="1"> <Item1> <PackageName Value="LCL"/> </Item1> </RequiredPackages> <Units Count="3"> <Unit0> <Filename Value="Gaia_1476conversion.pas"/> <IsPartOfProject Value="True"/> </Unit0> <Unit1> <Filename Value="gaia_1476conv.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Main_form"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Gaia_1476conv"/> </Unit1> <Unit2> <Filename Value="unit_1476.pas"/> <IsPartOfProject Value="True"/> </Unit2> </Units> </ProjectOptions> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> </SyntaxOptions> </Parsing> <Linking> <Debugging> <DebugInfoType Value="dsDwarf2Set"/> <UseHeaptrc Value="True"/> <TrashVariables Value="True"/> <StripSymbols Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-dBorland -dVer150 -dDelphi7 -dCompiler6_Up -dPUREPASCAL"/> </Other> </CompilerOptions> <Debugging> <Exceptions Count="6"> <Item1> <Name Value="EAbort"/> </Item1> <Item2> <Name Value="ECodetoolError"/> </Item2> <Item3> <Name Value="EFOpenError"/> </Item3> <Item4> <Name Value="RunError(201)"/> </Item4> <Item5> <Name Value="ERangeError"/> </Item5> <Item6> <Name Value="EReadError"/> </Item6> </Exceptions> </Debugging> </CONFIG> ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/star_database_creation/gaia_1476conv.pas��������������������������������������0000644�0001751�0001751�00000200121�14076274366�023143� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit Gaia_1476conv; {$MODE Delphi} {written for HNSKY quickly from some modules, Han K, 21-2-2015, update 2020} interface uses LCLIntf, LCLType, {LMessages, Messages,} SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls, ExtCtrls, strutils, math, {$ifdef mswindows} windows {for shutdown} {$else} {unix} unix {for fpsystem} {$endif} ; type { TMain_form } TMain_form = class(TForm) countstars1: TButton; includemissing1: TCheckBox; Label11: TLabel; Bevel1: TBevel; Label15: TLabel; Label19: TLabel; Label20: TLabel; thefile1: TLabel; Label3: TLabel; Label16: TLabel; status1: TStaticText; sort_magnitude1: TButton; Bevel2: TBevel; bp_magnitude1: TRadioButton; v_magnitude2: TRadioButton; convert_to_smaller_record1: TButton; abbreviation1: TEdit; Bevel3: TBevel; step1_magnitude1: TEdit; step1_maxmagnitude1: TUpDown; Label7: TLabel; Label9: TLabel; Label4: TLabel; Label10: TLabel; Bevel4: TBevel; Label13: TLabel; Label5: TLabel; powerdown_enabled: TCheckBox; Label17: TLabel; magedit: TEdit; Label1: TLabel; epoch1: TEdit; Label_epoch: TLabel; UpDown1: TUpDown; gaia_missing_stars1: TEdit; Label14: TLabel; make290files1: TButton; Label6: TLabel; Label12: TLabel; Label2: TLabel; V_magnitude_and_BR1: TRadioButton; Label18: TLabel; Label8: TLabel; procedure bp_magnitude1Change(Sender: TObject); procedure countstars1Click(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure make290files1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure sort_magnitude1Click(Sender: TObject); procedure convert_to_smaller_record1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Main_form: TMain_form; maximum,mag_active : double; bufferstring1,bufferstring2 : Tstrings; file_counter : integer; filen_out : string; {file namer to write} implementation {$R *.lfm} uses unit_1476; var epoch2:double; ra1,dec1:double; mag1,b_r :integer; leadname: string; readposition1,readposition2,nr_of_straylight : integer; ftext: textfile; thepath, typ : string; starcount, starcount2,starcount3 : array[-150..2000] of integer; G_to_V_correctie : double=0.3; {V:=GP+0.3} G_to_BP_correctie : double=0.5; {BP:=GP+0.5} v_sort, BP_sort : boolean; const keypressed :word=0; {$ifdef mswindows} function ShutMeDown:string; var hToken : THandle; tkp,p : TTokenPrivileges; RetLen : DWord; ExReply: LongBool; Reply : DWord; begin if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken) then begin if LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp .Privileges[0].Luid) then begin tkp.PrivilegeCount := 1; tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken,False,tkp,SizeOf(TTokenPrivileges),p,RetLen); Reply := GetLastError; if Reply = ERROR_SUCCESS then begin ExReply:= ExitWindowsEx(EWX_POWEROFF or EWX_FORCE, 0); if ExReply then Result:='Shutdown Initiated' else Result:='Shutdown failed with ' + IntToStr(GetLastError); end; end; end; end; {$else} {unix} {$endif} function inttostr(inp:integer): string; begin str(inp,result); end; function doubletostr(inp:double): string; begin str(inp:0:5,result); end; function strtostr_divide10(s1:string):string; {this give much smaller exe file then using strtofloat} var err:integer; r:double; begin val(s1,r,err); if err=0 then begin r:=r/10; str(r:0:1,result); end; end; function floattostr_one_digit(r:double):string; begin str(r:0:1,result); end; procedure writetextfile(new1:boolean; name, message1:string); var F: TextFile; begin AssignFile(F,thepath+PathDelim+'Gaia'+PathDelim+name); if new1 then Rewrite(F) {clear previous info} else Append(f); Writeln(F,formatdatetime('c', now)+'; '+message1); Flush(f); { Ensures that the text was actually written to file. } CloseFile(F); end; procedure writeLONGREPORT; var F: TextFile; i : integer; begin AssignFile(F,thepath+PathDelim+'Gaia'+PathDelim+'result_sort_small_steps'+typ+'.txt'); Rewrite(F); {clear previous info} Writeln(F,'mag x 100; bp_stars; stars_without_bp; stars_effect_by_straylight'); for i:=-150 to 2000 do Writeln(F,inttostr(i)+';'+inttostr(starcount[i])+';'+inttostr(starcount2[i])+';'+inttostr(starcount3[i]) );{keep record in steps of 0.01 magnitude. first value stars with BP other without} CloseFile(F); end; procedure convert_A6to5; var i,j:integer; name1:string; info1 : array[0..112] of ansichar; fromf : file; buf6: array[1..12] of byte; buf5: array[1..12] of byte; p5 : ^hnskyhdr1476_5; { pointer to hnskyrecord } marker_record, mag2, rec_pos_start, rec_pos_stop, filesizevalue : integer; all_records : array of hnskyhdr1476_A6; recordposition, nr_of_records :integer; begin writetextfile(true,'result6to5.txt','Started');{clear previous message} nr_of_stars:=0; for i:=1 to 1476 do {create, reset output files} begin name1:= Main_form.abbreviation1.text+'_' +filenames1476(i); {use for destination TYC file names and not UCAC4 names} main_form.caption:='Making 5 byte record database from: '+name1; Application.ProcessMessages; {allow application to update form1 with above messages} assignfile(fromf,name1); filemode:=0;{read} reset(fromf,1); Blockread(fromf,info1,110); if info1[109]=#$A6 then info1[109]:=#5 {5 byte record} else begin messagebox(main_form.handle,pchar('Error not $A6 byte record source file !'),pchar('Converting 6 to 5 bytes'),MB_ICONINFORMATION); exit; end; filesizevalue:=FileSize(fromf); nr_of_records:=round((filesizevalue-110)/SizeOf(hnskyhdr1476_A6)); SetLength(all_records,nr_of_records+1); Blockread(fromf,all_records[0],nr_of_records*SizeOf(hnskyhdr1476_A6));{read all records at once} recordposition:=0; assignfile(tof,'tmp_' +filenames1476(i));{designation files} filemode:=2;{read/write} rewrite(tof,1); Blockwrite(tof,info1,110,Numwritten);{header is 110 bytes } if numwritten<>110 then begin messagebox(main_form.handle,pchar('ERROR !!! Can"t create file files. Close HNSKY'),pchar('Error'),MB_ICONERROR); exit; end; rec_pos_start:=0;{skip header, start where the magnitude starts} rec_pos_stop:=0;{skip header, start where the magnitude stops} repeat marker_record:=-999; for j:=0 to 255 do begin recordposition:=rec_pos_start; p5:= @buf5[1]; { set pointer } repeat {do all 255 dec9 values} if ((all_records[recordposition].ra7=255) and (all_records[recordposition].ra8=255) and (all_records[recordposition].ra9=255)) then {special magnitude record is found} begin {special 6 byte record} if all_records[recordposition].dec9>-20 then mag2:=all_records[recordposition].dec9 else mag2:=256+all_records[recordposition].dec9;{new magn 12.8 is -12.8, 12.9 = -12.7} {magnitude is stored in mag2 till new magnitude record is found} rec_pos_stop:=recordposition;{where the magnitude starts} end else begin {same magnitude} if all_records[recordposition].dec9+128=j then {within dec9 range} begin if all_records[recordposition].dec9+128<>marker_record then {compare highest shortint of Dec if already seen and written} begin marker_record:=j; {remember first marker record is written} {Right accension===========================================} p5.ra7 := $FF; p5.ra8 := $FF; p5.ra9 := $FF;{set marker for new magnitude in record} {declination part===========================================} {store 2 bytes for dec9 and mag0} p5.dec7 := all_records[recordposition].dec9+128;{store dec9 shortint as byte} p5.dec8 := mag2+16;{store mag0 shortint as byte with 16 offset for negative numbers} blockwrite(tof,buf5, SizeOf(hnskyhdr1476_5),Numwritten); end; {now write real data,{dec9 and mag0 are stored ONCE in marker record} {Right accension===========================================} p5.ra7 :=all_records[recordposition].ra7; p5.ra8 :=all_records[recordposition].ra8; p5.ra9 :=all_records[recordposition].ra9; {declination===========================================} p5.dec7 := all_records[recordposition].dec7; p5.dec8 := all_records[recordposition].dec8;{dec9 and mag0 are stored in marker record} blockwrite(tof,buf5, SizeOf(hnskyhdr1476_5),Numwritten); inc(nr_of_stars); end;{withing dec9 range} end;{do all 255 dec9 values} inc(recordposition); until ((rec_pos_stop>rec_pos_start+1) or (recordposition>=nr_of_records) );{where the magnitude starts} if j<>255 then recordposition:=rec_pos_start;{go back to the beginning of the magnitude, but not at last cyclus to enable eof dectection} if keypressed=vk_F4 then begin closefile(tof); main_form.caption:='Stopped';exit; end;; if keypressed=vk_F7 then begin repeat main_form.status1.caption:='Paused'; sleep(500); Application.ProcessMessages; {allow application to update form1 with above messages} until keypressed=vk_F8; main_form.status1.caption:='Running'; end; main_form.caption:='Making 6 byte record database from: '+name1+', magn: '+inttostr(mag2)+', stars_done: '+inttostr(nr_of_stars);; end;{for j loop} rec_pos_start:=rec_pos_stop; {do next magnitude} until recordposition>=nr_of_records; ;{all magnitudes done} writetextfile(false,'result6to5.txt',name1+ ' total stars_done:'+inttostr(nr_of_stars));{write result to file} closefile(tof); closefile(fromf); end;{i loop} end; procedure convert_A7to6; var i,j:integer; name1:string; info1 : array[0..112] of ansichar; fromf : file; buf6: array[1..12] of byte; buf5: array[1..12] of byte; // p5 : ^hnskyhdr1476_5; { pointer to hnskyrecord } p6 : ^hnskyhdr1476_6; marker_record, mag2, rec_pos_start, rec_pos_stop, filesizevalue : integer; all_records : array of hnskyhdr1476_A7; recordposition, nr_of_records :integer; begin writetextfile(true,'result7to6.txt','Started');{clear previous message} nr_of_stars:=0; for i:=1 to 1476 do {create, reset output files} begin name1:= Main_form.abbreviation1.text+'_' +filenames1476(i); {use for destination TYC file names and not UCAC4 names} main_form.caption:='Making 5 byte record database from: '+name1; Application.ProcessMessages; {allow application to update form1 with above messages} assignfile(fromf,name1); filemode:=0;{read} reset(fromf,1); Blockread(fromf,info1,110); if info1[109]=#$A7 then info1[109]:=#6 {6 byte record} else begin messagebox(main_form.handle,pchar('Error not $A7 byte record source file !'),pchar('Converting 7 to 6 bytes'),MB_ICONINFORMATION); exit; end; filesizevalue:=FileSize(fromf); nr_of_records:=round((filesizevalue-110)/SizeOf(hnskyhdr1476_A7)); SetLength(all_records,nr_of_records+1); Blockread(fromf,all_records[0],nr_of_records*SizeOf(hnskyhdr1476_A7));{read all records at once} recordposition:=0; assignfile(tof,'tmp_' +filenames1476(i));{designation files} filemode:=2;{read/write} rewrite(tof,1); Blockwrite(tof,info1,110,Numwritten);{header is 110 bytes } if numwritten<>110 then begin messagebox(main_form.handle,pchar('ERROR !!! Can"t create file files. Close HNSKY'),pchar('Error'),MB_ICONERROR); exit; end; rec_pos_start:=0;{skip header, start where the magnitude starts} rec_pos_stop:=0;{skip header, start where the magnitude stops} repeat marker_record:=-999; for j:=0 to 255 do begin recordposition:=rec_pos_start; p6:= @buf6[1]; { set pointer } repeat {do all 255 dec9 values} if ((all_records[recordposition].ra7=255) and (all_records[recordposition].ra8=255) and (all_records[recordposition].ra9=255)) then {special magnitude record is found} begin {special 6 byte record} if all_records[recordposition].dec9>-20 then mag2:=all_records[recordposition].dec9 else mag2:=256+all_records[recordposition].dec9;{new magn 12.8 is -12.8, 12.9 = -12.7} {magnitude is stored in mag2 till new magnitude record is found} rec_pos_stop:=recordposition;{where the magnitude starts} end else begin {same magnitude} if all_records[recordposition].dec9+128=j then {within dec9 range} begin if all_records[recordposition].dec9+128<>marker_record then {compare highest shortint of Dec if already seen and written} begin marker_record:=j; {remember first marker record is written} {Right accension===========================================} p6.ra7 := $FF; p6.ra8 := $FF; p6.ra9 := $FF;{set marker for new magnitude in record} {declination part===========================================} {store 2 bytes for dec9 and mag0} p6.dec7 := all_records[recordposition].dec9+128;{store dec9 shortint as byte} p6.dec8 := mag2+16;{store mag0 shortint as byte with 16 offset for negative numbers} p6.bp_rp := 0; blockwrite(tof,buf6, SizeOf(hnskyhdr1476_6),Numwritten); end; {now write real data,{dec9 and mag0 are stored ONCE in marker record} {Right accension===========================================} p6.ra7 :=all_records[recordposition].ra7; p6.ra8 :=all_records[recordposition].ra8; p6.ra9 :=all_records[recordposition].ra9; {declination===========================================} p6.dec7 := all_records[recordposition].dec7; p6.dec8 := all_records[recordposition].dec8;{dec9 and mag0 are stored in marker record} p6.bp_rp:=all_records[recordposition].bp_rp; blockwrite(tof,buf6, SizeOf(hnskyhdr1476_6),Numwritten); inc(nr_of_stars); end;{withing dec9 range} end;{do all 255 dec9 values} inc(recordposition); until ((rec_pos_stop>rec_pos_start+1) or (recordposition>=nr_of_records) );{where the magnitude starts} if j<>255 then recordposition:=rec_pos_start;{go back to the beginning of the magnitude, but not at last cyclus to enable eof dectection} if keypressed=vk_F4 then begin closefile(tof); main_form.caption:='Stopped';exit; end;; if keypressed=vk_F7 then begin repeat main_form.status1.caption:='Paused'; sleep(500); Application.ProcessMessages; {allow application to update form1 with above messages} until keypressed=vk_F8; main_form.status1.caption:='Running'; end; main_form.caption:='Making 5 byte record database from: '+name1+', magn: '+inttostr(mag2)+', stars_done: '+inttostr(nr_of_stars);; end;{for j loop} rec_pos_start:=rec_pos_stop; {do next magnitude} until recordposition>=nr_of_records; ;{all magnitudes done} writetextfile(false,'result7to6.txt',name1+ ' total stars_done:'+inttostr(nr_of_stars));{write result to file} closefile(tof); closefile(fromf); end;{i loop} end; procedure TMain_form.convert_to_smaller_record1Click(Sender: TObject); var i : integer; name1,name2,tempname : string; fileDate : Integer; newDateTime : TDateTime; begin bp_sort:=main_form.bp_magnitude1.checked; V_sort:=((main_form.v_magnitude2.checked) or (main_form.V_magnitude_and_BR1.checked)); if v_sort then typ:='V' else typ:='B'; if ((main_form.v_magnitude2.checked=false) and (main_form.BP_magnitude1.checked=false) and (main_form.V_magnitude_and_BR1.checked=false)) then begin messagebox(main_form.handle,pchar('Selection missing. Specify magnitude type in step 1'),pchar('Error'),MB_ICONERROR); exit; end; if V_magnitude_and_BR1.checked=false then convert_A6to5 else convert_A7to6; for i:=1 to 1476 do begin name1:= Main_form.abbreviation1.text+'_' +filenames1476(i); {source files} tempname:='gxx_' +filenames1476(i); renamefile(name1,tempname);{G16 source to gxx} name2:='tmp_' +filenames1476(i);{result file files} renamefile(name2,name1);{tmp result to g16} renamefile(tempname,name2);{rename gxx to tmp} newDateTime :=date; FileSetDate(name1, DateTimeToFileDate(newDateTime));{set date to midnight} end; if ((Main_form.powerdown_enabled.checked)and (nr_of_stars>100)) then {$ifdef mswindows} main_form.caption:= ShutMeDown {$else} {unix} fpSystem('/sbin/shutdown -P now') {$endif} else messagebox(main_form.handle,pchar('Ready. Stars done:'+ inttostr(nr_of_stars)),pchar('Ready'),MB_ICONINFORMATION); main_form.status1.caption:='Finished'; end; procedure read_Tycho(epoch2:double; var ra1,dec1: double; var mag1, b_r: integer); var info : string; error0,error1,error2, error_total,errorhip,komma1,oldkomma,tyc1,tyc2,tyc3,hip1:integer; mag1R,magVT, magBT,pmRA, pmDEC, V,I : double; star_ok: boolean; begin repeat if (readposition2>=bufferstring2.count) then begin RA1:=99999; exit; end; if (length(bufferstring2.strings[readposition2])<2) then {empthy line} begin inc(readposition2); RA1:=99999; exit; end; error_total:=0; komma1:=posex(',',bufferstring2.strings[readposition2],1); info:=copy(bufferstring2.strings[readposition2],1,komma1-1);{ra} val(info,ra1,error1); error_total:=error_total+error1; oldkomma:=komma1+1; komma1:=posex(',',bufferstring2.strings[readposition2],oldkomma); info:=copy(bufferstring2.strings[readposition2],oldkomma,komma1-oldkomma);{dec} val(info,dec1,error1); error_total:=error_total+error1; oldkomma:=komma1+1; komma1:=posex(',',bufferstring2.strings[readposition2],oldkomma); info:=copy(bufferstring2.strings[readposition2],oldkomma,komma1-oldkomma);{tyc1} val(info,tyc1,error1); oldkomma:=komma1+1; komma1:=posex(',',bufferstring2.strings[readposition2],oldkomma); info:=copy(bufferstring2.strings[readposition2],oldkomma,komma1-oldkomma);{tyc2} val(info,tyc2,error1); oldkomma:=komma1+1; komma1:=posex(',',bufferstring2.strings[readposition2],oldkomma); info:=copy(bufferstring2.strings[readposition2],oldkomma,komma1-oldkomma);{tyc3} val(info,tyc3,error1); oldkomma:=komma1+1; // IF pos(',17,1398,',bufferstring2.strings[readposition2])>0 then // beep; //_RAJ2000,_DEJ2000,TYC1,TYC2,TYC3,pmRA,pmDE,BTmag,VTmag,HIP,RA(ICRS),DE(ICRS) //deg,deg, , , ,mas/yr,mas/yr,mag,mag, ,deg,deg komma1:=posex(',',bufferstring2.strings[readposition2],oldkomma); info:=copy(bufferstring2.strings[readposition2],oldkomma,komma1-oldkomma);{pmRA} val(info,pmRA,error1); oldkomma:=komma1+1; komma1:=posex(',',bufferstring2.strings[readposition2],oldkomma); info:=copy(bufferstring2.strings[readposition2],oldkomma,komma1-oldkomma); {pmdec} val(info,pmDEC,error1); oldkomma:=komma1+1; komma1:=posex(',',bufferstring2.strings[readposition2],oldkomma); info:=copy(bufferstring2.strings[readposition2],oldkomma,komma1-oldkomma);{magBT} if pos(' ',info)>0 then error1:=1 else val(info,magBT,error1); oldkomma:=komma1+1; komma1:=posex(',',bufferstring2.strings[readposition2],oldkomma); info:=copy(bufferstring2.strings[readposition2],oldkomma,komma1-oldkomma); {magVT} if pos(' ',info)>0 then error2:=1 else val(info,magVT,error2); oldkomma:=komma1+1; komma1:=posex(',',bufferstring2.strings[readposition2],oldkomma); info:=copy(bufferstring2.strings[readposition2],oldkomma,komma1-oldkomma); {hip} val(info,hip1,errorhip); oldkomma:=komma1+1; b_r:=-128; {unknown Bp-Rp value for Tycho stars, will be calculated later if within range} if ((error1=0) and (error2=0)) then begin if BP_sort then mag1R := magVt -0.006739+0.2758*(magBt-magVt)-0.135*sqr(magBt-magVt) {Gaia BPg := Vt -0.006739+0.2758*(Bt-Vt)-0.135*(Bt-Vt)^2+0.01098(Bt-Vt)^3} +0.01098*sqr(magBt-magVt)*(magBt-magVt) else if V_sort then begin mag1r:=magVT - 0.090 * (magBT - magVT); {V = VT - 0.090 * (BT - VT)} if ((magBT-magVT>=-0.2) and (magBT-magVt<=2.0)) then {valid conversion range} begin b_r:=round(10*(0.03147 +1.456*(magBt-magVt) -0.6043*sqr(magBt-magVt)+0.1750*sqr(magBt-magVt)*(magBt-magVt) )); {Gaia GBP-GRP formula} end; if ((tyc1= 129 ) and (tyc2= 1873 ) and (tyc3= 1 )) then begin b_r:=round(10*2.1);end; ;{M0, Betelgeuze} if ((tyc1= 6803 ) and (tyc2= 2158 ) and (tyc3= 1 )) then begin b_r:=round(10*2.1);end; ;{M0, Antares} if ((tyc1= 7689 ) and (tyc2= 2617 ) and (tyc3= 1 )) then begin b_r:=round(10*1.5);end; ;{K5} if ((tyc1= 7663 ) and (tyc2= 4093 ) and (tyc3= 1 )) then begin b_r:=round(10*-0.3);end; ;{03} if ((tyc1= 1991 ) and (tyc2= 1895 ) and (tyc3= 1 )) then begin b_r:=round(10*1.5);end; ;{K0} if ((tyc1= 1423 ) and (tyc2= 1349 ) and (tyc3= 2 )) then begin b_r:=round(10*1.5);end; ;{K0} end else halt; end else if error1=0 then mag1R:=MagBT{no VT magnitude, use BT instead 25 stars only} else if error2=0 then begin mag1R:=MagVT; I:=-99; if ((tyc1= 5949 ) and (tyc2= 2777 ) and (tyc3= 1 )) then begin mag1r:= -1.46;{A1} b_r:=round(10*0.3);end; ;{sirus, simbad reports for tyc an other magnitude then hip ??} if ((tyc1= 3105 ) and (tyc2= 2070 ) and (tyc3= 1 )) then begin mag1r:= 0.03;{A0} b_r:=round(10*0.3); end; if ((tyc1= 9007 ) and (tyc2= 5849 ) and (tyc3= 1 )) then begin mag1r:= 0.01;{G2}b_r:=round(10*0.9); end; if ((tyc1= 1472 ) and (tyc2= 1436 ) and (tyc3= 1 )) then begin mag1r:= -0.05;{K1}b_r:=round(10*1.5); end; if ((tyc1= 3358 ) and (tyc2= 3141 ) and (tyc3= 1 )) then begin mag1r:= 0.08;{G3}b_r:=round(10*0.9);end; if ((tyc1= 187 ) and (tyc2= 2184 ) and (tyc3= 1 )) then begin mag1r:= 0.37;{F5}b_r:=round(10*0.7);end; if ((tyc1= 9005 ) and (tyc2= 3919 ) and (tyc3= 1 )) then begin mag1r:= 0.6 ;{B1}b_r:=round(10*0.0);end; if ((tyc1= 9007 ) and (tyc2= 5848 ) and (tyc3= 1 )) then begin mag1r:= 1.33;{K1};b_r:=round(10*1.5);end; {alpha Centauri 2} if ((tyc1= 2457 ) and (tyc2= 2407 ) and (tyc3= 1 )) then begin mag1r:= 1.93;{A1}b_r:=round(10*0.3);end;{castor} if ((tyc1= 8573 ) and (tyc2= 3571 ) and (tyc3= 1 )) then begin mag1r:= 1.99;{A0}b_r:=round(10*0.3); end; if ((tyc1= 4146 ) and (tyc2= 1274 ) and (tyc3= 1 )) then begin mag1r:= 2 ;{G9/k0}b_r:=round(10*1.2);end; {dubhe} if ((tyc1= 1329 ) and (tyc2= 1746 ) and (tyc3= 1 )) then begin mag1r:= 1.92;{A1}b_r:=round(10*0.3);end; {alhena} if ((tyc1= 8579 ) and (tyc2= 2692 ) and (tyc3= 1 )) then begin mag1r:= 2.01;{K3}b_r:=round(10*1.5); end; {avior} if ((tyc1= 4766 ) and (tyc2= 2445 ) and (tyc3= 1 )) then begin mag1r:= 2.41;{B0}b_r:=round(10*0.0);end; if ((tyc1= 2457 ) and (tyc2= 2407 ) and (tyc3= 2 )) then begin mag1r:= 2.97;end; if ((tyc1= 1472 ) and (tyc2= 1436 ) and (tyc3= 2 )) then begin mag1r:= 4.05;{}end; if ((tyc1= 1423 ) and (tyc2= 1349 ) and (tyc3= 2 )) then begin mag1r:= 4.225;{o9} end; if ((tyc1= 4766 ) and (tyc2= 2445 ) and (tyc3= 2 )) then begin mag1r:= 3.76;{} end; {some of these hip numbers are double used !!, so use tyc} if ((tyc1= 9005 ) and (tyc2= 3919 ) and (tyc3= 2 )) then begin mag1r:= 4.58;end; {some of these hip numbers are double used !!, so use tyc} if ((tyc1= 8579 ) and (tyc2= 2692 ) and (tyc3= 2 )) then begin mag1r:= 3.85;end; {some of these hip numbers are double used !!, so use tyc} if ((tyc1= 4146 ) and (tyc2= 1274 ) and (tyc3= 2 )) then begin mag1r:= 4.91;end; {some of these hip numbers are double used !!, so use tyc} if ((tyc1= 7892 ) and (tyc2= 7679 ) and (tyc3= 2 )) then begin mag1r:= 6.22;end; {some of these hip numbers are double used !!, so use tyc} if ((tyc1= 8573 ) and (tyc2= 3571 ) and (tyc3= 2 )) then begin mag1r:= 5.57;end; {some of these hip numbers are double used !!, so use tyc} end else begin mag1R:=9999; error_total:=999; end; mag1:=round(mag1r*10); if mag1<>round(mag_active*10) then error_total:=7; {not the correct magnitude} if error_total<>0 then mag1:=999 {ignore this star entry, try next } else begin DEC1 {(epoch T)} := (DEC1 + pmDEC * (epoch2 - 1991.25)/(3600*1000))* (pi/180); {DEC first} RA1 {(epoch T)} := (RA1 + pmRA / cos(dec1)*(epoch2 - 1991.25)/(3600*1000))*(pi/180); end; inc(readposition2); until ((readposition2>=bufferstring2.count) or (error_total=0)); end; procedure read_gaia(epoch2:double;var ra1,dec1: double;var mag1, b_r: integer); var info ,regel : string; error1,error2, error_total,komma1,oldkomma:integer; magG,magBP, magRP,pmRA, pmDEC : double; star_ok: boolean; blink : boolean; begin repeat error_total:=0; regel:=bufferstring1.strings[readposition1]; komma1:=posex(',',regel,1); info:=copy(regel,1,komma1-1);{RA} val(info,ra1,error1); error_total:=error_total+error1; oldkomma:=komma1+1; komma1:=posex(',',regel,oldkomma); info:=copy(regel,oldkomma,komma1-oldkomma);{DEC} val(info,dec1,error1); error_total:=error_total+error1; oldkomma:=komma1+1; komma1:=posex(',',regel,oldkomma); info:=copy(regel,oldkomma,komma1-oldkomma);{pmRA} val(info,pmRA,error1); oldkomma:=komma1+1; komma1:=posex(',',regel,oldkomma); info:=copy(regel,oldkomma,komma1-oldkomma); {pmdec} val(info,pmDEC,error1); oldkomma:=komma1+1; //main_form.caption:=inttostr(nr_of_stars); // if nr_of_stars>=21861 then // beep(100,1000); komma1:=posex(',',regel,oldkomma); {G magnitude} info:=copy(regel,oldkomma,komma1-oldkomma);{G magnitude} val(info,magG,error1); error_total:=error_total+error1; oldkomma:=komma1+1; komma1:=posex(',',regel,oldkomma); {} info:=copy(regel,oldkomma,komma1-oldkomma);{BP magnitude} val(info,magBP,error1); oldkomma:=komma1+1; komma1:=posex(',',regel,oldkomma); {} if komma1=0 then komma1:=999;{last value without ending with a komma} info:=copy(regel,oldkomma,komma1-oldkomma);{RP magnitude} val(info,magRP,error1); // if abs(dec1+3.68652760191)<0.0001 then // if abs((ra1)-82.86754111476)<0.0001 then {tyc 4770-574} // beep(100,800); if error_total<>0 then mag1:=999 {ignore this star entry, try next } else begin {GAIA eDR3 2016 epoch !!!!!!} DEC1 {(epoch T)} := (DEC1 + pmDEC * (epoch2 - 2016.0)/(3600*1000))* (pi/180); {DEC first} RA1 {(epoch T)} := (RA1 + pmRA / cos(dec1)*(epoch2 - 2016.0)/(3600*1000))*(pi/180); b_r:=-128;{no info} if ((magBP<>0) and (magRP<>0)) then {gaia color info} begin if abs(magBP-magRP)<=12.7 then b_r:=round((magBP-magRP)*10); end; mag1:=round(mag_active*10);{magnitude is already defined by sort, no need to read or calculate} end; inc(readposition1); until ((readposition1>bufferstring1.count-1) or (error_total=0)); if frac(nr_of_stars/1000)=0 then begin main_form.caption:=('Now doing magnitude: '+floattostr_one_digit(mag_active)+' Stars done: '+ inttostr(nr_of_stars)); if keypressed=vk_F4 then halt; if keypressed=vk_F then repeat main_form.status1.caption:='Paused'; if blink then main_form.status1.color:=Clred else main_form.status1.color:=CLblack; if blink then blink:=false else blink:=true;{blinker} sleep(500); Application.ProcessMessages; {allow application to update form1 with above messages} until keypressed=vk_F8; main_form.status1.caption:='Running'; Application.ProcessMessages; {allow application to update form1 with above messages} end; end; procedure AppendToFile(s: TStrings; fn: TFileName);{append Tstring to file. To save memory} var i: Integer; f: textfile; begin assign(f,fn); append(f); for i:=0 to s.Count-1 do writeln(f,s.Strings[i]); closefile(f); end; procedure Read_ftext(var st: TStrings);{read file to Tstring in pieces to save memory. Above 300 mbytes problems} var i: Integer; line1 :string; begin i:=0; st.clear;{clear tstrings} repeat readln(ftext,line1); st.Add(line1); inc(i); until ((i>=20000) or (eof(ftext))); end; procedure gaia_sort_magnitude(mag_active: double); {sort on magnitude} var info,filen,regel : string; error1,error2, error_total,komma1,oldkomma:integer; magG,magBP, magRP,pmRA, pmDEC,Gflux,BPflux,RPflux,C,magBPold,magRPold : double; star_ok: boolean; blink,straylight : boolean; begin readposition1:=0;{skip first text line} repeat error_total:=0; regel:=bufferstring1.strings[readposition1]; komma1:=posex(',',regel,1); {ra} oldkomma:=komma1+1; komma1:=posex(',',regel,oldkomma); {dec} oldkomma:=komma1+1; // if pos('579900822252441',regel)<>0 then // beep; komma1:=posex(',',regel,oldkomma);{pmra} oldkomma:=komma1+1; komma1:=posex(',',regel,oldkomma);{pmdec} oldkomma:=komma1+1; komma1:=posex(',',regel,oldkomma); {G magnitude} info:=copy(regel,oldkomma,komma1-oldkomma);{G magnitude} val(info,magG,error1); error_total:=error_total+error1; oldkomma:=komma1+1; komma1:=posex(',',regel,oldkomma); {} info:=copy(regel,oldkomma,komma1-oldkomma);{BP magnitude} val(info,magBP,error1); oldkomma:=komma1+1; komma1:=posex(',',regel,oldkomma); {} if komma1=0 then komma1:=999;{last value without ending with a komma} info:=copy(regel,oldkomma,komma1-oldkomma);{RP magnitude} val(info,magRP,error1); {quality check by flux ratio} magBPold:=magBP;{for debugging} magRPold:=magRP; //SELECT gaia_source.ra,gaia_source.dec, gaia_source.pmra, gaia_source.pmdec, gaia_source.phot_g_mean_mag, gaia_source.phot_bp_mean_mag, gaia_source.phot_rp_mean_mag, phot_g_mean_flux, phot_bp_mean_flux, phot_rp_mean_flux //FROM gaiaedr3.gaia_source //WHERE (gaiaedr3.gaia_source.phot_bp_mean_mag>=12.7 AND gaiaedr3.gaia_source.phot_bp_mean_mag<12.8) // //C:=(BPflux +RPflux)/Gflux is normally a little above 1 so about 1.15.. So chapter 6 "Gaia Early Data Release 3 Photometric content and validation" //if flux is calculated from the magnitudes it is a little above 2} //De flux kan ik ook terugrekenen van de magnitude. Dat is gemakkelijker want de flux heb ik nog niet in de database. //Het blijkt als je de flux uitrekend dan is de ratio (BPflux+RPflux)/Gflux meestal iets boven circa 2. Maar loopt voor de //slechte waarden op tot wel 27. Het idee is nu wanneer deze ratio groter dan 4 en G>BP de G magnitude te gebruiken, anders BP. //De conditie G>BP is nodig voor hele rode sterren om te voorkomen dat je een infrarood magnitude neemt. straylight:=false; if ((magBP<>0) and (magRP<>0)) then {do quality check} begin Gflux:=power(10,(20-magG)/2.5); BPflux:=power(10,(20-magBP)/2.5); RPflux:=power(10,(20-magRP)/2.5); c:=(BPflux+RPflux)/Gflux; if ((c>4) and (magG>magBP)) then {straylight do not rely on BP and RP. C is normally a little above 2} begin magBP:=0; magRP:=0; straylight:=true; end; end; if BP_sort then begin if magBP<>0 {BP magn data available} then mag1:=round(magBP*10) else mag1:=round((magG+G_to_BP_correctie)*10); {add half magnitude, average for mag 15. 0.51 for mag 15, 0.41 for mag 10.8 } end else if V_sort then begin {V magnitude} if ((magBP<>0) and (magRP<>0)) then begin if ((magBP-magRP>=-0.5) and (magBP-magRP<=5.0)) then {formula valid edr3} mag1:=round((magG + 0.02704 - 0.0124*(magBP-magRP) + 0.2156*sqr(magBP-magRP) -0.01426*sqr(magBP-magRP)*(magBP-magRP) )*10) {edr3} else {1% of the stars} mag1:=round((magBP-0.18)*10);{rough estimate -0.187 for mag 15} end else mag1:=round((magG+G_to_V_correctie)*10); {rough estimate for 0.26 for mag 10.8, 0.33 for mag 15} end; //Voor een fotografische sterren database gebaseerd op BPg kan ik de Tycho aanvullende sterren omrekenen //Tycho -> BPg //BPg := Vt -0.006739+0.2758*(Bt-Vt)-0.135*(Bt-Vt)^2+0.01098(Bt-Vt)^3 //En voor de Gaia met de ontbrekende BPg magnitude zoiets als: //BPg := G+0.5 //Voor een V magnitude database kan ik V bereken voor zowel Gaia als Tycho: //Gaia -> V //V := G + 0.01760 + 0.006860 * (BPg−RPg) + 0.1732 * (BPg−RPg)^2 //En voor de ontbrekende BPg magnitudes zoiets als: //V:= G+0.3 //Tycho->V //V := Vt - 0.090 * (Bt - Vt) {oude formule} // if ((round(mag_active*10)=42) AND ('16.5209'=copy(regel,1,7))) then // beep(200,600); star_ok:=(mag1=round(mag_active*10)); {magnitude filter} if star_ok then begin inc(nr_of_stars); if magBP<>0 {BP magn data available} then inc(starcount[round(magBP*100)],1){for checking if database is complete} else inc(starcount2[round((magG+0.5)*100)],1);{for checking if database is complete} if straylight then begin inc(starcount3[round((magG+0.5)*100)],1);{stars effected by straylight} inc(nr_of_straylight); end; bufferstring2.Add(regel); end; if bufferstring2.count>=20000 then {interim save to save memory} begin AppendToFile(bufferstring2,filen_out);{write last part} bufferstring2.Clear; end; inc(readposition1); if frac(readposition1/10000)=0 then begin main_form.caption:=('Now doing magnitude: '+floattostr_one_digit(mag_active)+' Stars done: '+ inttostr(nr_of_stars)); if keypressed=vk_F4 then halt; if keypressed=vk_F7 then repeat main_form.status1.caption:='Paused'; if blink then main_form.status1.color:=Clred else main_form.status1.color:=CLblack; if blink then blink:=false else blink:=true;{blinker} sleep(500); Application.ProcessMessages; {allow application to update form1 with above messages} until keypressed=vk_F8; main_form.status1.caption:='Running'; Application.ProcessMessages; {allow application to update form1 with above messages} end; until ((readposition1>=bufferstring1.count)); if star_ok=false then mag1:=1000;{last star is not okay to include in this run} end; procedure write_new_magnitude_record6(magn:integer);{marker record indicating new magnitude step of 0.1 magn for 6 byte records} var buf2: array[1..12] of byte; p6 : ^hnskyhdr1476_A6; { pointer to hnskyrecord } decst : shortint; begin p6:= @buf2[1]; { set pointer } with p6^ do begin {Right accension===========================================} ra7 := $FF; ra8 := $FF; ra9 := $FF;{set marker for new magnitude in record} {declination===========================================} decst:=magn; {make 3 byte integer:} dec7 := 0; dec8 := 0; dec9 := decst;{store magnitude in highest byte, allowing more digits later} end; blockwrite(tof,buf2, SizeOf(hnskyhdr1476_6),Numwritten); end; procedure write_new_magnitude_recordA7(magn:integer);{marker record indicating new magnitude step of 0.1 magn for 6 byte records} var buf2: array[1..12] of byte; pA7 : ^hnskyhdr1476_A7; { pointer to hnskyrecord } decst : shortint; begin pA7:= @buf2[1]; { set pointer } with pA7^ do begin {Right accension===========================================} ra7 := $FF; ra8 := $FF; ra9 := $FF;{set marker for new magnitude in record} {declination===========================================} decst:=magn; {make 3 byte integer:} dec7 := 0; dec8 := 0; dec9 := decst;{store magnitude in highest byte, allowing more digits later} bp_rp:= 0; end; blockwrite(tof,buf2, SizeOf(hnskyhdr1476_A7),Numwritten); end; PROCEDURE sortpartGAIA; {read file and find stars between magn_start and magn_start+step} var nr_of_errors : longint; rastart,decstart,filenr,error9, nr_regio,nr_star,nr_extra : integer; buf2: array[1..12] of byte; p6 : ^hnskyhdr1476_A6; { pointer to hnskyrecord } file_opened,to_open : string; blink : boolean; BEGIN file_opened:=''; {indicates of file is open} repeat if ((eof(ftext)=false) and (readposition1>=bufferstring1.count)) then begin readposition1:=0; Read_ftext(bufferstring1);{load next part} end; if ((readposition2>=bufferstring2.count) and (readposition1>=bufferstring1.count)) {Gaia} then {buffer processed} begin if file_opened<>'' then close(Tof);{close file already open} if keypressed=vk_F4 then halt; if keypressed=vk_F7 then repeat main_form.status1.caption:='Paused'; if blink then main_form.status1.color:=Clred else main_form.status1.color:=CLblack; if blink then blink:=false else blink:=true;{blinker} sleep(500); Application.ProcessMessages; {allow application to update form1 with above messages} until keypressed=vk_F8; main_form.status1.caption:='Running'; Application.ProcessMessages; {allow application to update form1 with above messages} exit; end; nr_regio:=0; nr_star:=0; nr_extra:=0; if (readposition2>=bufferstring2.count)=false then read_Tycho(epoch2, ra1,dec1, mag1,b_r) {magnitude filter is in read_tycho !!! for speed} else read_GAIA(epoch2,ra1,dec1, mag1,b_r);{read GAIA sorted files} if mag1<999 then {999 check if last record is within} begin begin {6 byte record} p6:= @buf2[1]; { set pointer } with p6^ do begin {Right accension===========================================} rastart := round(((256*256*256)-1)*(limit_radialen(ra1))/(2*pi)); if rastart>=$FFFFFF then rastart:=0; { $FFFFFF is used as marker and should never occur. This value equals 2*pi could happen sometimes due to rounding} {make 3 byte word:} ra7 := lo(word(rastart)); ra8 := hi(word(rastart)); ra9 := rastart shr 16;{make 3 byte word}; {declination===========================================} decstart :=round(( ((256*256*128)-1)*(dec1)/(0.5*pi))); {make 3 byte integer:} dec7 := lo(word(decstart)); dec8 := hi(word(decstart)); dec9 := decstart shr 16 ;{make 3 byte integer, important decstart must be longint}; {magnitude===========================================} if (((mag1/10)>25.4-2) or ((mag1/10)<-2.0)) then inc(nr_of_errors) else begin {no magnitude is written in record for 6 byte records} {====write to 1476 files====} to_open:=leadname+name1476(ra1,dec1); if file_opened<>to_open then {dump file not open yet} begin {other dump file required, close and open other section} if file_opened<>'' then close(Tof);{close file already open} assignfile(tof,to_open);{assign correct 1476 file} filemode:=2;{read/write} reset(tof,1); seek(tof,filesize(tof)); file_opened:=to_open;{remember file openened} end; {write special magnitude record if required} val(copy(file_opened,5,4),filenr,error9);{which filenr to check} if new_magnitude_record_written[filenr]<>mag1 then begin write_new_magnitude_record6(mag1);{write special header with magnitude} new_magnitude_record_written[filenr]:=mag1; {store that here magnitude record is written} end; {end write special magnitude record if required} blockwrite(tof,buf2, SizeOf(hnskyhdr1476_6),Numwritten); inc(nr_of_stars); // close(tof); // file_opened:=''; // Application.ProcessMessages; {allow application to update form1 with above messages} // if nr_of_stars>=3749 then // begin // beep(800,100); // main_form.caption:=inttostr(nr_of_stars); // end; end; {====write to 1476 files end====} end; end;{6 byte records} end;{mag1<999} until false; END; PROCEDURE sortpartGAIA_type_A7; {read file and find stars between magn_start and magn_start+step} var nr_of_errors : longint; rastart,decstart,filenr,error9, nr_regio,nr_star,nr_extra : integer; buf2: array[1..12] of byte; pA7 : ^hnskyhdr1476_A7; { pointer to hnskyrecord } file_opened,to_open : string; blink : boolean; BEGIN file_opened:=''; {indicates of file is open} repeat if ((eof(ftext)=false) and (readposition1>=bufferstring1.count)) then begin readposition1:=0; Read_ftext(bufferstring1);{load next part} end; if ((readposition2>=bufferstring2.count) and (readposition1>=bufferstring1.count)) {Gaia} then {buffer processed} begin if file_opened<>'' then close(Tof);{close file already open} if keypressed=vk_F4 then halt; if keypressed=vk_F7 then repeat main_form.status1.caption:='Paused'; if blink then main_form.status1.color:=Clred else main_form.status1.color:=CLblack; if blink then blink:=false else blink:=true;{blinker} sleep(500); Application.ProcessMessages; {allow application to update form1 with above messages} until keypressed=vk_F8; main_form.status1.caption:='Running'; Application.ProcessMessages; {allow application to update form1 with above messages} exit; end; nr_regio:=0; nr_star:=0; nr_extra:=0; if (readposition2>=bufferstring2.count)=false then read_Tycho(epoch2, ra1,dec1, mag1,b_r) {magnitude filter is in read_tycho !!! for speed} else read_GAIA(epoch2,ra1,dec1, mag1,b_r);{read GAIA sroted files} if mag1<999 then {999 check if last record is within} begin begin {6 byte record} pA7:= @buf2[1]; { set pointer } with pA7^ do begin {Right accension===========================================} rastart := round(((256*256*256)-1)*(limit_radialen(ra1))/(2*pi)); if rastart>=$FFFFFF then rastart:=0; { $FFFFFF is used as marker and should never occur. This value equals 2*pi could happen sometimes due to rounding} {make 3 byte word:} ra7 := lo(word(rastart)); ra8 := hi(word(rastart)); ra9 := rastart shr 16;{make 3 byte word}; {declination===========================================} decstart :=round(( ((256*256*128)-1)*(dec1)/(0.5*pi))); {make 3 byte integer:} dec7 := lo(word(decstart)); dec8 := hi(word(decstart)); dec9 := decstart shr 16 ;{make 3 byte integer, important decstart must be longint}; Bp_Rp := b_r; {magnitude===========================================} if (((mag1/10)>25.4-2) or ((mag1/10)<-2.0)) then inc(nr_of_errors) else begin {no magnitude is written in record for 6 byte records} {====write to 1476 files====} to_open:=leadname+name1476(ra1,dec1); if file_opened<>to_open then {dump file not open yet} begin {other dump file required, close and open other section} if file_opened<>'' then close(Tof);{close file already open} assignfile(tof,to_open);{assign correct 1476 file} filemode:=2;{read/write} reset(tof,1); seek(tof,filesize(tof)); file_opened:=to_open;{remember file openened} end; {write special magnitude record if required} val(copy(file_opened,5,4),filenr,error9);{which filenr to check} if new_magnitude_record_written[filenr]<>mag1 then begin write_new_magnitude_recordA7(mag1);{write special header with magnitude} new_magnitude_record_written[filenr]:=mag1; {store that here magnitude record is written} end; {end write special magnitude record if required} blockwrite(tof,buf2, SizeOf(hnskyhdr1476_A7),Numwritten); inc(nr_of_stars); end; {====write to 1476 files end====} end; end;{6 byte records} end;{mag1<999} until false; END; procedure loadbuffer2(naam1:string);{FOR missing tycho stars} begin with bufferstring2 do begin try LoadFromFile(naam1); { load from file } except; {action none} clear; sysutils.beep; main_form.caption:='Error reading file: '+naam1; end; end; readposition2:=0; end; function floattostr2(x: double):string; begin str(x:0:1,result); end; procedure TMain_form.make290files1Click(Sender: TObject); var error2 : integer; i,j : integer; name1,filen,name2,tychofile : string; info1 : array[0..112] of ansichar; begin bp_sort:=main_form.bp_magnitude1.checked; V_sort:=((main_form.v_magnitude2.checked) or (main_form.V_magnitude_and_BR1.checked)); if v_sort then typ:='V' else typ:='B'; writetextfile(true,'result1476'+typ+'.txt','Started');{clear previous message} main_form.status1.caption:='Running'; nr_of_stars:=0; nr_of_skipped:=0; val(epoch1.text,epoch2,error2); if error2<>0 then begin epoch1.color:=clred; exit; end else epoch1.color:=clwindow; maximum:=updown1.position/10; if includemissing1.checked then begin tychofile:=thepath+PathDelim+'Gaia'+PathDelim+gaia_missing_stars1.text; if fileexists(tychofile)=false then begin application.MessageBox(pchar('Does not exist :'+gaia_missing_stars1.text), 'Error', MB_OK) ; exit; end else loadbuffer2(tychofile); {load tycho file supplement in Tstrings} readposition2:=0; end else begin bufferstring2.clear; end; if bp_sort then leadname:='g'+copy(magedit.Text,1,2)+'_' {g17_} else leadname:='v'+copy(magedit.Text,1,2)+'_'; {v17_} {make header begin===========================================================} if main_form.v_magnitude2.checked then strpcopy(info1,copy('GAIA eDR3, stars up to V magnitude '+ strtostr_divide10(magedit.text) +', Epoch='+epoch1.text+'. Including '+inttostr(bufferstring2.count-1)+' bright Tycho2 stars. Magnitude is V ',1,112)){do not override length of info1, otherwise error at the end of program} else if main_form.BP_magnitude1.checked then strpcopy(info1,copy('GAIA eDR3, stars up to BP magnitude '+ strtostr_divide10(magedit.text) +', Epoch='+epoch1.text+'. Including '+inttostr(bufferstring2.count-1)+' bright Tycho2 stars. Magnitude is BP ',1,112)){do not override length of info1, otherwise error at the end of program} else if main_form.V_magnitude_and_BR1.checked then strpcopy(info1,copy('GAIA eDR3, stars up to V magnitude '+ strtostr_divide10(magedit.text) +', Epoch='+epoch1.text+'. + '+inttostr(bufferstring2.count-1)+' Tycho2 stars. Magnitude is V, Bp-Rp info included ',1,112)){do not override length of info1, otherwise error at the end of program} else begin messagebox(main_form.handle,pchar('Selection missing. Specify magnitude type'),pchar('Error'),MB_ICONERROR); exit; end; if main_form.V_magnitude_and_BR1.checked=false then info1[109]:=#$A6 {interim 6 byte record} else info1[109]:=#$A7; {interim A7, 7 byte record with B_R included} info1[108]:=ansichar(round((mag_active)*10));{store maximum magnitude limit} for i:=1 to 1476 do {create, reset output files. Note result is saved in pieces to save memory using Tstrings} begin name1:=leadname+filenames1476(i); {use for destination TYC file names and not UCAC4 names} if ((i=1) and (FileExists(name1)=true)) then {some pre checks} begin if Application.MessageBox('Destination files exist, overwrite ?','Attention !', MB_YESNO or MB_ICONEXCLAMATION) = IDNO then halt; end; assignfile(tof,name1); filemode:=2;{read/write} rewrite(tof,1); Blockwrite(tof,info1,110,Numwritten);{header is 110 bytes, was 111 bytes } closefile(tof); if numwritten<>110 then begin messagebox(main_form.handle,pchar('ERROR !!! Can"t create file files. Close HNSKY'),pchar('Error'),MB_ICONERROR); exit; end; end; {make header end===========================================================} for i:=1 {was 0}to 1801 do new_magnitude_record_written[i]:=-99;{6 byte records, clear step positions. Store here is magnitude record written} {sort file} mag_active:=-1.5;{start magnitude} repeat file_counter:=0; main_form.caption:=('Now doing magnitude: '+floattostr_one_digit(mag_active)+' Stars done: '+ inttostr(nr_of_stars)); Application.ProcessMessages; {allow application to update form1 with above messages} {tap vizier instruction to download} //SELECT TOP 250000000 "I/337/gaia".ra, "I/337/gaia".dec, "I/337/gaia".source_id, "I/337/gaia".ref_epoch, "I/337/gaia".pmRA, "I/337/gaia".pmDEC, "I/337/gaia". //duplicated_source, "I/337/gaia".phot_g_mean_mag //FROM "I/337/gaia" //WHERE "I/337/gaia".phot_g_mean_mag<=13.6 and "I/337/gaia".phot_g_mean_mag>13.5 {Gaia_DR2_BP_10.1-10.0.csv will result in stars 10.0 and 10.1=round(10.077)} if BP_sort then name2:='gaia_dr3-BP_sorted' else if V_sort then name2:='gaia_dr3-V_sorted' else halt; filen:=thepath+PathDelim+'Gaia'+PathDelim+name2+inttostr(round(mag_active*10))+'.csv'; main_form.thefile1.caption:=filen; {show which file is processed} assignfile(ftext,filen); {assign Gaia file in Tstrings} reset(ftext); bufferstring1.Clear;{make empthy} readposition1:=0;{No comments, so start with zero} readposition2:=0; if Main_form.V_magnitude_and_BR1.checked=false then sortpartGAIA {read buffer and find stars between magn_start and magn_start+step} else sortpartGAIA_type_A7;{include Bp-Rp info} closefile(ftext); writetextfile(false,'result1476'+typ+'.txt','Up_to_mag '+ floattostr_one_digit(mag_active)+' stars_done:'+inttostr(nr_of_stars));{write result to file} mag_active:=mag_active+0.1;{0.1 magnitude step} until mag_active+0.000001>=maximum+0.1; writetextfile(false,'result1476'+typ+'.txt','Ready. Stars done:'+ inttostr(nr_of_stars));{write result to file} if ((powerdown_enabled.checked)and (nr_of_stars>100)) then {$ifdef mswindows} main_form.caption:= ShutMeDown {$else} {unix} fpSystem('/sbin/shutdown -P now') {$endif} else messagebox(main_form.handle,pchar('Ready. Stars done:'+ inttostr(nr_of_stars)),pchar('Ready'),MB_ICONINFORMATION); end; procedure TMain_form.countstars1Click(Sender: TObject); var bp_active_x10 : integer; file_name,line1: string; begin nr_of_stars:=0; for bp_active_x10:=100 to 180 do begin file_name:=thepath+PathDelim+'Gaia'+PathDelim+'Gaia_DR3_BP_'+floattostr2(bp_active_x10/10)+'.csv'; main_form.caption:=('Counting stars: '); main_form.thefile1.caption:=file_name; application.processmessages; if fileexists(file_name) then begin assignfile(ftext,file_name); {load file in Tstrings} reset(ftext); repeat readln(ftext,line1); nr_of_stars:=nr_of_stars+1; until (eof(ftext)); closefile(ftext); nr_of_stars:=nr_of_stars-1;{remove comment} end else application.MessageBox(pchar('Does not exist :'+file_name), 'Error', MB_OK); end; file_name:=thepath+PathDelim+'Gaia'+PathDelim+'Gaia_DR3_BP_0.0-09.95.csv'; assignfile(ftext,file_name); {load file in Tstrings} reset(ftext); repeat readln(ftext,line1); nr_of_stars:=nr_of_stars+1; until (eof(ftext)); closefile(ftext); nr_of_stars:=nr_of_stars-1;{remove comment} file_name:=thepath+PathDelim+'Gaia'+PathDelim+'Gaia_DR3_missing_BP_G_0.0-17.3.csv'; {will contain stars in GP range 0 ..17.35 equivalent to V 0.4 ..16.75 and BP 0.5 ..17.85.} assignfile(ftext,file_name); {load file in Tstrings} reset(ftext); repeat readln(ftext,line1); nr_of_stars:=nr_of_stars+1; until (eof(ftext)); closefile(ftext); nr_of_stars:=nr_of_stars-1;{remove comment} file_name:=thepath+PathDelim+'Gaia'+PathDelim+'Gaia_DR3_missing_BP_G_17.4-17.7.csv'; {will contain stars in GP range 17.35 ..17.75 equivalent to V 17.65 ..18.05 and BP 17.85 ..18.25/ So range required 17.65 ..18.25} assignfile(ftext,file_name); {load file in Tstrings} reset(ftext); repeat readln(ftext,line1); nr_of_stars:=nr_of_stars+1; until (eof(ftext)); closefile(ftext); nr_of_stars:=nr_of_stars-1;{remove comment} messagebox(main_form.handle,pchar('Ready. Stars counted:'+ inttostr(nr_of_stars)),pchar('Ready'),MB_ICONINFORMATION); end; procedure TMain_form.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin keypressed:=key end; procedure TMain_form.bp_magnitude1Change(Sender: TObject); begin if bp_magnitude1.checked then Main_form.abbreviation1.text:=StringReplace(Main_form.abbreviation1.text, 'V', 'G',[rfReplaceAll]) else Main_form.abbreviation1.text:=StringReplace(Main_form.abbreviation1.text, 'G', 'V',[rfReplaceAll]); end; function getinstalldir:string; begin result:=extractfiledir(paramstr(0)); end; procedure TMain_form.sort_magnitude1Click(Sender: TObject); var i,j,overlap2,stars_without_bp, oldnrstars,bp_active_x10,gp_active_x10 : integer; overlapfaint, overlapbright : double; file_name : string; name2 : string; begin bp_sort:=main_form.bp_magnitude1.checked; V_sort:=((main_form.v_magnitude2.checked) or (main_form.V_magnitude_and_BR1.checked)); if v_sort then typ:='-V' else typ:='-BP'; writetextfile(true,'result_sort'+typ+'.txt','Up to magn; All stars cumulative; Stars without BP; stars_effect_by_straylight');{clear previous message} for i:=-150 to 2000 do begin starcount[i]:=0;{keep record in steps of 0.01 magnitude} starcount2[i]:=0;{keep record in steps of 0.01 magnitude} starcount3[i]:=0;{straylight} end; main_form.status1.caption:='Running'; nr_of_stars:=0; nr_of_skipped:=0; nr_of_straylight:=0;{stars effected by straylight} stars_without_bp:=0;{stars without bp magn} // mag_active:=1;{start magnitude} // mag_active:=8;{start magnitude} //mag_active:=17.7;{start magnitude} maximum:=main_form.step1_maxmagnitude1.position/10; {180} if BP_sort then begin name2:='gaia_dr3-BP_sorted'; overlapbright:=5; {############## BP can be 5 magnitude brighter=lower then G due to straylight, then G will be selected. See quality section gaia_sort_magnitude} overlapfaint:=0; end else if V_sort then begin name2:='gaia_dr3-V_sorted'; overlapbright:=5; {############## BP can be 5 magitude brighter=lower then V} overlapfaint:=2;{############### BP can be 1.8 magnitudes fainter=higher then V. Probably some stars with errors} end else begin application.MessageBox(pchar('Select a magnitude type. Warning do not override existing results!'+file_name), 'Error', MB_ICONERROR); exit; end; for i:=-15 to 180 do {create, reset output files, just to be sure} begin assignfile(tof,thepath+PathDelim+'Gaia'+PathDelim+name2+inttostr(round(i))+'.csv'); filemode:=2;{read/write} rewrite(tof,1); closefile(tof); end; repeat bufferstring2.Clear; {clear buffer2} file_counter:=0; filen_out:=thepath+PathDelim+'Gaia'+PathDelim+name2+inttostr(round(mag_active*10))+'.csv'; main_form.caption:=('Now doing magnitude: '+floattostr_one_digit(mag_active)+' Stars done: '+ inttostr(nr_of_stars)); Application.ProcessMessages; {allow application to update form1 with above messages} if mag_active*10 - round(+overlapbright{-5}*10)<=100 then {below BP magnitude 10 (9.95)} begin file_name:=thepath+PathDelim+'Gaia'+PathDelim+'Gaia_DR3_BP_0.0-09.95.csv'; main_form.caption:=('Now doing magnitude: '+floattostr_one_digit(mag_active)+' Overlap: '+floattostr_one_digit(overlap2/10)); main_form.thefile1.caption:=file_name; application.processmessages; if fileexists(file_name) then begin assignfile(ftext,file_name); {load file in Tstrings} reset(ftext); repeat Read_ftext(bufferstring1); gaia_sort_magnitude(mag_active); ; {gaia sort on magnitude} until (eof(ftext)); closefile(ftext); end else application.MessageBox(pchar('Does not exist :'+file_name), 'Error', MB_OK); end; //database BP search range V //mag 10 5 to 11.5 // 18 13 to 19.5 for overlap2:=round(-overlapbright {-5}*10) to round(+overlapfaint{+0.5}*10) do {mag -5 to +0.5 search range to find magnitudeactive=V } begin bp_active_x10:=round(mag_active*10+overlap2);{calculate bp_active x 10} if ((bp_active_x10>=100 {mag 10}) and (bp_active_x10<=180 {mag 18.0})) then {magnitude range} begin file_name:=thepath+PathDelim+'Gaia'+PathDelim+'Gaia_DR3_BP_'+floattostr2(bp_active_x10/10)+'.csv'; main_form.caption:=('Now doing magnitude: '+floattostr_one_digit(mag_active)+' Overlap: '+floattostr_one_digit(overlap2/10)); main_form.thefile1.caption:=file_name; application.processmessages; if fileexists(file_name) then begin assignfile(ftext,file_name); {load file in Tstrings} reset(ftext); repeat Read_ftext(bufferstring1); gaia_sort_magnitude(mag_active); ; {gaia sort on magnitude} until (eof(ftext)); closefile(ftext); end else application.MessageBox(pchar('Does not exist :'+file_name), 'Error', MB_OK); end; end; // stringlist maximum size 134,217,728 //overlap2:=0; oldnrstars:=nr_of_stars; if BP_sort then gp_active_x10:=round ((mag_active{BP or V}- G_to_BP_correctie{0.5})*10) {Assumed is GP:=V-0.3 / V:=GP+ 0.3 for magn 15 or GP:=BP-0.5} else gp_active_x10:=round ((mag_active{BP or V}- G_to_V_correctie {0.3})*10) ;{Assumed is GP:=V-0.3 for magn 15 or GP:=BP-0.5} {now do stars without BP magnitude file 1} if ((gp_active_x10>=0) and (gp_active_x10<=173)) then {magnitude range.5} begin file_name:=thepath+PathDelim+'Gaia'+PathDelim+'Gaia_DR3_missing_BP_G_0.0-17.3.csv'; {will contain stars in GP range 0 ..17.35 equivalent to V 0.4 ..16.75 and BP 0.5 ..17.85.} main_form.caption:=('Now doing magnitude: '+floattostr_one_digit(mag_active)+' Overlap: '+floattostr_one_digit(overlap2/10)); main_form.thefile1.caption:=file_name; application.processmessages; if fileexists(file_name) then begin assignfile(ftext,file_name); {load file in Tstrings} reset(ftext); repeat Read_ftext(bufferstring1); gaia_sort_magnitude(mag_active); ; {gaia sort on magnitude} until (eof(ftext)); closefile(ftext); end else application.MessageBox(pchar('Does not exist :'+file_name), 'Error', MB_OK); end; {now do stars without BP magnitude file 2} if ((gp_active_x10>=174) and (gp_active_x10<=177)) then {magnitude range.5} begin file_name:=thepath+PathDelim+'Gaia'+PathDelim+'Gaia_DR3_missing_BP_G_17.4-17.7.csv'; {will contain stars in GP range 17.35 ..17.75 equivalent to V 17.65 ..18.05 and BP 17.85 ..18.25/ So range required 17.65 ..18.25} main_form.caption:=('Now doing magnitude: '+floattostr_one_digit(mag_active)+' Overlap: '+floattostr_one_digit(overlap2/10)); main_form.thefile1.caption:=file_name; application.processmessages; if fileexists(file_name) then begin assignfile(ftext,file_name); {load file in Tstrings} reset(ftext); repeat Read_ftext(bufferstring1); gaia_sort_magnitude(mag_active); ; {gaia sort on magnitude} until (eof(ftext)); closefile(ftext); end else application.MessageBox(pchar('Does not exist :'+file_name), 'Error', MB_OK); end; stars_without_bp:=stars_without_bp+(nr_of_stars-oldnrstars);{how many stars where added without bp magnitude} AppendToFile(bufferstring2,filen_out);{write last part} writetextfile(false,'result_sort'+typ+'.txt',floattostr_one_digit(mag_active)+'; '+ inttostr(nr_of_stars)+'; '+inttostr(stars_without_bp)+'; '+inttostr(nr_of_straylight));{write result to file} mag_active:=mag_active+0.1;{0.1 magnitude step} until mag_active+0.000001>=maximum+0.1; writetextfile(false,'result_sort'+typ+'.txt','Ready. Stars done:'+ inttostr(nr_of_stars));{write result to file} writelongreport;{write log file in steps of 0.01 magn} if ((powerdown_enabled.checked)and (nr_of_stars>100)) then {$ifdef mswindows} main_form.caption:= ShutMeDown {$else} {unix} fpSystem('/sbin/shutdown -P now') {$endif} else messagebox(main_form.handle,pchar('Ready. Stars done:'+ inttostr(nr_of_stars)),pchar('Ready'),MB_ICONINFORMATION); end; procedure TMain_form.FormCreate(Sender: TObject); begin bufferstring1 := Tstringlist.Create; bufferstring2 := Tstringlist.Create; thepath:=getinstalldir; end; procedure TMain_form.FormDestroy(Sender: TObject); begin bufferstring1.free;{free suppl1} bufferstring2.free;{free suppl2} end; end. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/astap_linux_qt5.lpi�����������������������������������������������������������0000644�0001751�0001751�00000012274�14344743400�017331� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������<?xml version="1.0" encoding="UTF-8"?> <CONFIG> <ProjectOptions> <Version Value="12"/> <PathDelim Value="\"/> <General> <Flags> <MainUnitHasUsesSectionForAllUnits Value="False"/> <MainUnitHasCreateFormStatements Value="False"/> <MainUnitHasTitleStatement Value="False"/> <CompatibilityMode Value="True"/> </Flags> <SessionStorage Value="InProjectDir"/> <Title Value="astap"/> <Scaled Value="True"/> <UseAppBundle Value="False"/> <ResourceType Value="res"/> <UseXPManifest Value="True"/> <XPManifest> <DpiAware Value="True"/> </XPManifest> </General> <VersionInfo> <UseVersionInfo Value="True"/> <MinorVersionNr Value="9"/> <RevisionNr Value="1"/> <Attributes pvaPreRelease="True"/> <StringTable CompanyName="www.hnsky.org" FileDescription="Astrometric STAcking Program" LegalCopyright="Han Kleijn" OriginalFilename="astap.exe" ProductName="ASTAP" ProductVersion="File version refers to the interface standard"/> </VersionInfo> <MacroValues Count="1"> <Macro1 Name="LCLWidgetType" Value="qt5"/> </MacroValues> <BuildModes Count="1"> <Item1 Name="Default" Default="True"/> <SharedMatrixOptions Count="1"> <Item1 ID="948569675102" Modes="Default" Type="IDEMacro" MacroName="LCLWidgetType" Value="qt5"/> </SharedMatrixOptions> </BuildModes> <PublishOptions> <Version Value="2"/> </PublishOptions> <RunParams> <FormatVersion Value="2"/> <Modes Count="1"> <Mode0 Name="default"/> </Modes> </RunParams> <RequiredPackages Count="2"> <Item1> <PackageName Value="FCL"/> </Item1> <Item2> <PackageName Value="LCL"/> </Item2> </RequiredPackages> <Units Count="13"> <Unit0> <Filename Value="astap.lpr"/> <IsPartOfProject Value="True"/> </Unit0> <Unit1> <Filename Value="astap_main.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="mainwindow"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit1> <Unit2> <Filename Value="unit_stack.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="stackmenu1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit2> <Unit3> <Filename Value="unit_tiff.pas"/> <IsPartOfProject Value="True"/> </Unit3> <Unit4> <Filename Value="unit_astrometry.pas"/> <IsPartOfProject Value="True"/> </Unit4> <Unit5> <Filename Value="unit_gaussian_blur.pas"/> <IsPartOfProject Value="True"/> </Unit5> <Unit6> <Filename Value="unit_star_align.pas"/> <IsPartOfProject Value="True"/> </Unit6> <Unit7> <Filename Value="unit_annotation.pas"/> <IsPartOfProject Value="True"/> </Unit7> <Unit8> <Filename Value="unit_thumbnail.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="thumbnails1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit8> <Unit9> <Filename Value="unit_xisf.pas"/> <IsPartOfProject Value="True"/> </Unit9> <Unit10> <Filename Value="unit_stack_routines.pas"/> <IsPartOfProject Value="True"/> </Unit10> <Unit11> <Filename Value="unit_inspector_plot.pas"/> <IsPartOfProject Value="True"/> <HasResources Value="True"/> </Unit11> <Unit12> <Filename Value="unit_hjd.pas"/> <IsPartOfProject Value="True"/> </Unit12> </Units> </ProjectOptions> <CompilerOptions> <Version Value="11"/> <PathDelim Value="\"/> <SearchPaths> <IncludeFiles Value="$(ProjOutDir)"/> <UnitOutputDirectory Value="."/> </SearchPaths> <Parsing> <SyntaxOptions> <SyntaxMode Value="Delphi"/> </SyntaxOptions> </Parsing> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> <UseExternalDbgSyms Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <CustomOptions Value="-XX -Si -vh"/> </Other> </CompilerOptions> <Debugging> <Exceptions Count="9"> <Item1> <Name Value="EAbort"/> </Item1> <Item2> <Name Value="ECodetoolError"/> </Item2> <Item3> <Name Value="EFOpenError"/> </Item3> <Item4> <Name Value="EReadError"/> </Item4> <Item5> <Name Value="ERangeError"/> </Item5> <Item6> <Name Value="RunError(216)"/> </Item6> <Item7> <Name Value="EAccessViolation"/> </Item7> <Item8> <Name Value="RunError(201)"/> </Item8> <Item9> <Name Value="RunError(219)"/> </Item9> </Exceptions> </Debugging> </CONFIG> ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/astap_icon.ico����������������������������������������������������������������0000644�0001751�0001751�00000001376�14344743400�016320� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ����������(��� ���@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_dss.pas������������������������������������������������������������������0000644�0001751�0001751�00000012023�14344743400�016030� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_dss; {calculates to RA/DEC from a DSS image pixel position} {By han_kleijn@hnsky.org. (c) 2001, 2002, 2003 * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Lesser Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA } interface uses math; var {input} x_coeff: array[0..19] of double;{amdx1 ..20} y_coeff: array[0..19] of double;{amdy1 ..20} ppo_coeff: array[0..5] of double;{ppo1 ..6} x_pixel_offset: integer; {cnpix1} y_pixel_offset: integer; {cnpix2} x_pixel_size : double; {xpixelSZ} y_pixel_size : double; {ypixelSZ} plate_ra : double; {PLTRA ..H ..M ..S} plate_dec : double; {PLTDEC ..SN ..D ..M ..S} dec_sign : double; Procedure DSSPOS (xpix ,ypix : double; var xpos, ypos : double); implementation Procedure DSSPOS (xpix ,ypix : double; var xpos, ypos: double);//decode full astrometrical solution Digital Sky Survey image { Use the Digital Sky Survey polynomial solution as documented in the README.TXT of the Digital Sky Survey by the Space Telescope Science Institute and DSSPOS.C of WCStools, http://tdc-www.harvard.edu/software/wcstools/ released with a GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 DSSPOS.C is based on the astrmcal.c portion of GETIMAGE by J. Doggett and the documentation (README.TXT) distributed with the Digital Sky Survey by the Space Telescope Science Institute. Routine to determine accurate position for pixel coordinates returns 0 if successful otherwise 1 = angle too large for projection } { (* Input: *) double xpix ; (* x pixel number (RA or long without rotation) *) double ypix ; (* y pixel number (dec or lat without rotation) *) (* Output: *) double *xpos ; (* Right ascension or longitude in radians *) double *ypos ; (* Declination or latitude in radians *)} var x ,y ,xmm ,ymm ,xmm2 ,ymm2 ,xmm3 ,ymm3 ,x2y2, xi, xir, eta, etar ,raoff ,ra ,dec, ctan ,ccos : double; const cons2r : double= 3600*180/pi; {206264.8062470964} twopi : double= 2*pi; begin //* Convert from image pixels to plate pixels */ x := xpix + x_pixel_offset -1.0+0.5; {2013 reintroduced original -1.0+0.5 factors} y := ypix + y_pixel_offset -1.0+0.5; {Convert from pixels to millimeters } xmm := ( ppo_coeff[2] -x * x_pixel_size )/1000.0; ymm := (y * y_pixel_size - ppo_coeff[5] )/1000.0; xmm2 := xmm * xmm ; ymm2 := ymm * ymm ; xmm3 := xmm * xmm2 ; ymm3 := ymm * ymm2 ; x2y2 := xmm2 + ymm2 ; {Compute coordinates from x,y and plate model } xi := x_coeff[ 0] * xmm + x_coeff[ 1]* ymm + x_coeff[ 2] + x_coeff[ 3] * xmm2 + x_coeff[ 4] * xmm * ymm + x_coeff[ 5] * ymm2 + x_coeff[ 6] * (x2y2 ) + x_coeff[ 7] * xmm3 + x_coeff[ 8] * xmm2 * ymm + x_coeff[ 9] * xmm * ymm2 + x_coeff[10] * ymm3 + x_coeff[11] * xmm *(x2y2 )+ x_coeff[12] * xmm * x2y2 * x2y2 ; { Ignore magnitude and color terms+ wcs->x_coeff[13]*mag + wcs->x_coeff[14]*mag*mag + wcs->x_coeff[15]*mag*mag*mag + wcs->x_coeff[16]*mag*xmm + wcs->x_coeff[17]*mag*x2y2 + wcs->x_coeff[18]*mag*xmm*x2y2 + wcs->x_coeff[19]*color; } eta := y_coeff[ 0] * ymm + y_coeff[ 1] * xmm + y_coeff[ 2] + y_coeff[ 3] * ymm2 + y_coeff[ 4] * xmm *ymm + y_coeff[ 5] * xmm2 + y_coeff[ 6] * (x2y2 ) + y_coeff[ 7] * ymm3 + y_coeff[ 8] * ymm2 *xmm + y_coeff[ 9] * ymm * xmm2 + y_coeff[10] * xmm3 + y_coeff[11] * ymm *(x2y2 )+ y_coeff[12] * ymm * x2y2 * x2y2 ; {Ignore magnitude and color terms+ wcs->y_coeff[13]*mag + wcs->y_coeff[14]*mag*mag +wcs->y_coeff[15]*mag*mag*mag + wcs->y_coeff[16]*mag*ymm + wcs->y_coeff[17]*mag*x2y2) + wcs->y_coeff[18]*mag*ymm*x2y2 +wcs->y_coeff[19]*color;} {Convert to radians } xir := xi / cons2r ; etar := eta / cons2r ; (* Convert to RA and Dec *) ctan := sin ( plate_dec )/cos(plate_dec );{tan is sin/cos} ccos := cos ( plate_dec ); raoff := arctan2(xir / ccos ,1.0-etar *ctan ); ra := raoff + plate_ra ; if (ra <0.0) then ra := ra +twopi ; xpos := ra ; dec := arctan (cos (raoff )*((etar +ctan )/(1.0-(etar *ctan )))); ypos := dec ; END; end. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_astrometry_net.lfm�������������������������������������������������������0000644�0001751�0001751�00000006507�14344743400�020323� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object form_astrometry_net1: Tform_astrometry_net1 Left = 298 Height = 164 Top = 87 Width = 795 Caption = 'Solving using local astrometry.net. ' ClientHeight = 164 ClientWidth = 795 KeyPreview = True OnKeyPress = FormKeyPress OnShow = FormShow LCLVersion = '2.0.12.0' object cygwin1: TComboBox Left = 112 Height = 23 Hint = 'Path to Astrometry.net. Change user_name to your real user name.' Top = 16 Width = 672 BorderSpacing.Around = 5 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'C:\Users\user_name\AppData\Local\cygwin_ansvr\bin\bash.exe' 'C:\Users\user_name\AppData\Local\Astrometry\bin\bash.exe' 'C:\cygwin\bin\bash.exe' 'C:\Windows\System32\bash.exe' '/usr/local/astrometry/bin' '/usr/bin' ) OnChange = cygwin1Change OnDropDown = cygwin1DropDown ParentColor = True ParentFont = False TabOrder = 0 Text = 'C:\Users\user_name\AppData\Local\cygwin_ansvr\bin\bash.exe' end object Label22: TLabel Left = 0 Height = 15 Top = 56 Width = 105 Alignment = taRightJustify AutoSize = False BorderSpacing.Around = 5 Caption = 'Extra options:' ParentColor = False ParentFont = False end object astrometry_extra_options1: TComboBox Left = 113 Height = 23 Hint = 'Here you could add additional conditions for Astrometery.net' Top = 56 Width = 671 BorderSpacing.Around = 5 ItemHeight = 15 Items.Strings = ( '--downsample 2 --crpix-center' '--downsample 2 --no-verify --crpix-center' '--downsample 2 --no-verify --sigma 20 --crpix-center' '--downsample 2 --no-verify --sigma 7 --crpix-center' ) ParentColor = True ParentFont = False TabOrder = 1 Text = '--downsample 2' end object keep_console_open1: TCheckBox Left = 25 Height = 19 Hint = 'Keep solver window open' Top = 124 Width = 120 BorderSpacing.Around = 5 Caption = 'Keep console open' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 end object show_console1: TCheckBox Left = 25 Height = 19 Hint = 'If grayed show only minimised.' Top = 92 Width = 90 BorderSpacing.Around = 5 Caption = 'Show solving' Checked = True ParentFont = False ParentShowHint = False ShowHint = True State = cbChecked TabOrder = 3 end object Button1: TButton Left = 184 Height = 25 Top = 128 Width = 173 AutoSize = True Caption = 'Browse for files and execute' OnClick = Button1Click TabOrder = 4 end object solved1: TLabel Left = 448 Height = 15 Top = 128 Width = 47 Caption = 'Solved: 0' ParentColor = False end object failed1: TLabel Left = 640 Height = 15 Top = 128 Width = 43 Caption = 'Failed: 0' ParentColor = False end object fileprocessed1: TLabel Left = 184 Height = 15 Top = 96 Width = 15 Caption = '---' ParentColor = False end object Label1: TLabel Left = 0 Height = 15 Top = 16 Width = 104 Alignment = taRightJustify AutoSize = False Caption = 'Command line:' ParentColor = False end end �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_avi.pas������������������������������������������������������������������0000644�0001751�0001751�00000026712�14344743400�016030� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_avi;{writes uncompressed video to an avi file (AVI=Audio Video Interleave format). This unit writes RGB 24 bit format for colour and monochrome images. Pixels information is are taken from Timage (screen)} {Copyright (C) 2022 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } interface uses Classes, SysUtils,dialogs,graphics, LCLType, // For RGBtriple IntfGraphics, // TLazIntfImage type fpImage, // TFPColor type; lclintf, math; function write_avi_head(filen, frame_rate: string; nrframes, w,h: integer): boolean;{open/create file and writes head. Result is false if failure} function write_avi_frame(x,y,w,h: integer): boolean; {reads pixels from Timage and writes YUV frames in 444p style, colour or mono. Call this procedure for each image. Result is false if failure} procedure close_the_avi(nrframes: integer); implementation uses astap_main; var theFile : tfilestream; zero_dword : dword=0; // used for up the 3 extra zeros behind each image line depending on the with of the line extra : integer; // number of extra zero's behind each line const nrcolors=3; // should be fixed at colour. Mono is not standarised in AVI type header = record riff : dword; //'RIFF' fileSize fileType (data) riffsize : dword; // fileSize is a 4-byte value giving the size of the data in the file. (filesize -8) // The value of fileSize includes the size of the fileType FOURCC plus the size of the data that follows. avi : dword; // fileType is a FOURCC that identifies the specific file type list : dword; // A list has the following form: 'LIST' listSize listType listData lsize : dword; // listsize hdrL : dword; // fcc : dword; // avih cb: dword; // Specifies the size of the structure, not including the initial 8 bytes. {===================} dwMicroSecPerFrame: dword; // frame display rate (or 0) dwMaxBytesPerSec : dword; // max. transfer rate dwPaddingGranularity : dword; // pad to multiples of this size dwFlags : dword; // Flags dwTotalFrames : dword; // Number frames in file dwInitialFrames : dword; dwStreams : dword; // Number of streams in the file dwSuggestedBufferSize : dword; dwWidth : dword; dwHeight : dword; dwReserved1 : dword; dwReserved2 : dword; dwReserved3 : dword; dwReserved4 : dword; end; var head : header= (riff :$46464952; // 'RIFF' riffsize :0; avi :$20495641; // AVI list :$5453494C; // LIST lsize:$000000C0; // hdrL :$6C726468; // hdrL fcc :$68697661; // avih cb :$00000038; // 14*4=56 Specifies the size of the structure, not including the initial 8 bytes. {===================} dwMicroSecPerFrame: $000F4240; // 1 sec, MicroSecPerFrame, frame display rate (or 0) dwMaxBytesPerSec : $0; // max. transfer rate dwPaddingGranularity :$0; // pad to multiples of this size dwFlags : $00000010; // flags dwTotalFrames : $0; // # frames in file dwInitialFrames : $0; dwStreams : 1; // Number of streams in the file dwSuggestedBufferSize : $0; dwWidth : 16; dwHeight : 8; dwReserved1 : 0; dwReserved2 : 0; dwReserved3 : 0; dwReserved4 : 0); type streamheader = record // AVIStreamHeader; list : dword; // A list has the following form: 'LIST' listSize listType listData size: dword; strl : dword; // length chunk {===================} strh : dword; // stream header hsize: dword; // length 56 fccType: dword;// vids fccHandler : dword; // codec to be used. dwFlags : dword; wPriority : word; wLanguage : word; dwInitialFrames: dword; dwScale: dword; dwRate: dword; //* dwRate / dwScale == samples/second */ dwStart: dword; dwLength: dword; //* In units above... */ dwSuggestedBufferSize: dword; dwQuality: dword; dwSampleSize: dword; rcframew1: word; rcframeh1: word; rcframew2: word; rcframeh2: word; strf : dword; // stream format Ssize: dword; fsize: dword; // length 40 width: dword; height: dword; planes: word; // number of planes , 1 bitcount: word; // number of bits per pixel compression: dword; sizeimage : dword; // uncompressed size in bytes. pixels_per_meterH: dword;// 0 pixels_per_meterV: dword;// 0 nr_colours_used: dword; // 0 is maximum nr_important_colours: dword;// 0 is all end; var streamhead : streamheader= ( list :$5453494C; // 'LIST' size :$74; strl :$6C727473; // 'strl' strh :$68727473; // 'strh' hsize:$00000038; // 56 fcctype:$73646976; // 'vids' fccHandler: $0 ; // codex dwFlags : 0; wPriority : 0; wLanguage : 0; dwInitialFrames: 0; dwScale: 1; dwRate: 1; //* dwRate / dwScale == samples/second */ dwStart: 0; dwLength: 0; //* In units above... */ size of stream in units as defined in dwRate and dwScale {here number of frames} dwSuggestedBufferSize: 0; // to be set later dwQuality: 0; dwSampleSize: 0; rcframew1: 0; // rect, specified in four words rcframeh1: 0; rcframew2: 200; // width rcframeh2: 100; // height strf : $66727473; //stream format ssize: 40; fsize: 40; // length 40 width: 200; height:100; planes: 1; // number of planes , 1 bitcount: 24; // number of bits per pixel compression:0; sizeimage : 200*100+200;// uncompressed in bytes plus extra zeros defind by extra. pixels_per_meterH: $0EC4;// 0 pixels_per_meterV: $0EC4;// 0 nr_colours_used: 0; // 0 is maximum nr_important_colours: 0; // 0 is all ); type moviheader = record // AVIStreamHeader; list : dword; // A list has the following form: 'LIST' listSize listType listData size: dword; movi: dword; end; var movihead: moviheader= ( list :$5453494C; //'LIST' size :$0; // width x length x bitperpixel movi: $69766F6D); type framestart =record db : dword; x : dword; end; var frame_start:framestart= (db : $62643030;//'00db' x : $0); // blocksize, to be set later type indexstart =record idx1 : dword; size: dword; // length of index, nrrecords*$10 end; var index_start:indexstart= (idx1 : $31786469;//'idx1' size : $0); // length of index, nrrecords*$10, to be set later type index =record db : dword; x : dword; position : dword; size : dword; end; var indx: index= (db :$62643030;//'00db' x :$10; position :$0; size :$0); function write_avi_head(filen, frame_rate: string; nrframes, w,h: integer): boolean;{open/create file and writes head. Result is false if failure} begin result:=false; // assume failure head.dwwidth:= w; head.dwheight:= h; extra:=(w*nrcolors mod 4);// Each written image line should be a multiple of 4 bytes. Add extra $0 bytes to achieve that. w*nrcolors is 15 => add one zero, 16 => add two zeros, 17 => add three zeros, 18 => add none. Found by reverse engineering. if extra<>0 then extra:=4-extra; head.dwTotalFrames:=nrframes; head.dwMicroSecPerFrame:=round(1000000/max(strtofloat(frame_rate),0.00001)); streamhead.bitcount:=8*nrcolors; streamhead.width:=w; streamhead.height:=h; streamhead.rcframew2:=w; streamhead.rcframeh2:=h; streamhead.sizeimage:=w * h * (streamhead.bitcount div 8)+h*extra {zeros behind each line}; {in bytes} streamhead.dwLength:=head.dwTotalFrames; streamhead.dwSuggestedBufferSize:= streamhead.sizeimage; head.dwSuggestedBufferSize:= streamhead.sizeimage; movihead.size:= 4 {length dword movi}+(streamhead.sizeimage+sizeof(frame_start))*head.dwTotalFrames; head.riffsize:=sizeof(head)-8+sizeof(streamhead)+sizeof(movihead)+ ( sizeof(frame_start)+ streamhead.sizeimage+ sizeof(indx))*head.dwTotalFrames+sizeof(indexstart) ; frame_start.x:= streamhead.sizeimage; try TheFile:=tfilestream.Create(filen, fmcreate ); except TheFile.free; exit; end; thefile.writebuffer(head,sizeof(head)); thefile.writebuffer(streamhead,sizeof(streamhead)); thefile.writebuffer(movihead,sizeof(movihead)); result:=true; end; function write_avi_frame(x,y,w,h: integer): boolean; {reads pixels from Timage and writes AVI frame. Call this procedure for each image. Result is false if failure} var xx,yy : integer; r,g,b : byte; row : array of byte; xLine : PByteArray; begin result:=true; try thefile.writebuffer(frame_start,sizeof(frame_start)); {write 00db header} setlength(row, nrcolors*w {width}); for yy := y+h-1 downto y {height} do begin // scan each timage line xLine:=mainwindow.image1.Picture.Bitmap.ScanLine[yy]; for xx := x to x+w-1 {width} do begin {$ifdef mswindows} B:=xLine^[xx*3]; {3*8=24 bit} G:=xLine^[xx*3+1]; {fast pixel write routine } R:=xLine^[xx*3+2]; {$endif} {$ifdef darwin} {MacOS} R:=xLine^[xx*4+1]; {4*8=32 bit} G:=xLine^[xx*4+2]; {fast pixel write routine } B:=xLine^[xx*4+3]; {$endif} {$ifdef linux} B:=xLine^[xx*4]; {4*8=32 bit} G:=xLine^[xx*4+1]; {fast pixel write routine } R:=xLine^[xx*4+2]; {$endif} row[nrcolors *(xx-x)] :=B; row[nrcolors *(xx-x)+1]:=G; row[nrcolors *(xx-x)+2]:=R; // row[(xx-x)] :=trunc((R+G+B)/3); // Mono seams not a valid option with .avi end; thefile.writebuffer(row[0],length(row)); thefile.writebuffer(zero_dword,extra); // Add extra zeros 0,1,2,3 depending on width to make it a mulitiply of 4 bytes. Found by reverse engineering. end; except result:=false; row:=nil; exit; end; row:=nil; end; procedure close_the_avi(nrframes: integer); var i: integer; begin index_start.size:=nrframes*$10;// index length in bytes thefile.writebuffer(index_start,sizeof(index_start)); indx.position:=$4; indx.size:=streamhead.sizeimage; for i:=1 to nrframes do begin thefile.writebuffer(indx,sizeof(indx)); indx.position:=indx.position+sizeof(frame_start)+streamhead.sizeimage; end; thefile.free; end; end. ������������������������������������������������������astap_2022.12.09.orig/unit_thumbnail.pas������������������������������������������������������������0000644�0001751�0001751�00000023270�14344743400�017230� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_thumbnail; {FPC unit, shows FITS images as thumbnails (3*X)in a form using Timages. Form is fully resizable and thumbnails (Timage) will follow using the Timage stretch function} {$mode delphi} {Copyright (C) 2018 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls, StdCtrls, Menus; type { Tthumbnails1 } Tthumbnails1 = class(TForm) MenuItem1: TMenuItem; MenuItem2: TMenuItem; renameimage1: TMenuItem; changedirectory1: TMenuItem; MenuItem5: TMenuItem; copyto1: TMenuItem; moveto1: TMenuItem; Panel1: TPanel; PopupMenu1: TPopupMenu; procedure copyto1Click(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: char); procedure FormPaint(Sender: TObject); procedure FormResize(Sender: TObject); procedure FormShow(Sender: TObject); procedure MenuItem1Click(Sender: TObject); procedure MenuItem2Click(Sender: TObject); procedure moveto1Click(Sender: TObject); procedure renameimage1Click(Sender: TObject); procedure changedirectory1Click(Sender: TObject); private procedure imageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);{generic for all Timages} procedure imageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);{generic for all Timages} public end; var thumbnails1: Tthumbnails1; chosenDirectory : string; const thumbnails1_width: integer=1500;{default} thumbnails1_height: integer=700; procedure plot_thumbnails; {plot images in new created timage} {plot images in new created timage} implementation uses astap_main; var imageindex: integer; image_sender: tobject; Myimages : Array of Timage; {$R *.lfm} procedure plot_thumbnails; {plot images in new created timage} var newimage : timage; x,y,max_height:integer; searchResult : TSearchRec; const nrimages: integer =100; begin esc_pressed:=false; imageindex:=0; x:=0; y:=0; setlength(Myimages,nrimages); thumbnails1.panel1.width:=thumbnails1.width-25; thumbnails1.panel1.height:=thumbnails1.height*2; max_height:=0; if SysUtils.findfirst(chosenDirectory+PathDelim+'*.fit*', faAnyFile, searchResult) = 0 then begin repeat newImage := TImage.Create(thumbnails1.panel1); Inc(imageIndex); if imageindex>=nrimages then begin nrimages:=nrimages+30; setlength(Myimages,nrimages); end; with thumbnails1.panel1 do begin newimage.parent:=thumbnails1.panel1; newImage.Tag := imageIndex; newImage.Name := 'Thumb_Image' + IntToStr(imageIndex); newImage.Visible := True; filename2:= chosenDirectory+PathDelim+searchResult.Name; thumbnails1.caption:=filename2;{show whats happening} load_fits(filename2,false {light},true,true {update memo},0,head,img_loaded); if head.naxis<2 then exit; {WCS file} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(newimage,false,true); {mainwindow.image1.Visible:=true; is done in plot_fits} newImage.Width := round((thumbnails1.panel1.width-2)/3); newImage.height := round(newImage.Width* newImage.picture.Bitmap.height/newImage.picture.Bitmap.width); if newImage.height>max_height then max_height:=newImage.height;{find largest heigth} thumbnails1.VertScrollBar.Increment:=max_height; newImage.left :=x; newImage.top := y; inc(x,newImage.Width+1); if x+1>=thumbnails1.panel1.width then {new row} begin x:=0; y:=y+max_height+1; max_height:=0; end; newImage.hint := filename2; //inttostr(imageindex); newimage.OnMouseDown:= thumbnails1.imageMouseDown; newimage.onMouseMove:=thumbnails1.imageMouseMove; newImage.showhint := true; newImage.stretch := true; myimages[imageIndex-1]:=newimage;{store the timage} application.processmessages; end; until ((SysUtils.FindNext(searchResult) <> 0) or (esc_pressed)); // Must free up resources used by these successful finds SysUtils.FindClose(searchResult); end; thumbnails1.panel1.height:=y+max_height; {causes a repaint} end; procedure Tthumbnails1.FormShow(Sender: TObject); begin thumbnails1.width:=thumbnails1_width; thumbnails1.height:=thumbnails1_height; end; procedure Tthumbnails1.MenuItem1Click(Sender: TObject); begin {filename2 is set in Tthumbnails1.ImageMouseDown} thumbnails1.close; load_image(true,true {plot}); end; procedure Tthumbnails1.ImageMouseDown(Sender: TObject; Button: TMouseButton;{generic for all Timages} Shift: TShiftState; X, Y: Integer); var hint : string; begin hint:=TControl(Sender).hint; filename2:=hint; image_sender:=sender; if button=mbright then {$ifdef fpc} PopupMenu1.PopUp;{call popup manually if right key is released, not when clicked. Set in popupmenu autopopup off !!!} {$else} {delphi} PopupMenu1.PopUp(x,y);{call popup manually if right key is released, not when clicked. Set in popupmenu autopopup off !!!} {$endif} if button=mbleft then begin thumbnails1.close; load_image(true,true {plot}); end; end; procedure Tthumbnails1.MenuItem2Click(Sender: TObject); var filename_new: string; begin {filename2 is set in Tthumbnails1.ImageMouseDown} deletefile(changeFileExt(filename2,'.bak'));{delete *.bak left over from astrometric solution} filename_new:=ChangeFileExt(filename2,'.bak'); RenameFile(filename2,filename_new); TControl(image_sender).width:=20;{make very small indicating renamed} TControl(image_sender).height:=20; TControl(image_sender).hint:=filename_new; end; procedure Tthumbnails1.moveto1Click(Sender: TObject); begin end; procedure Tthumbnails1.renameimage1Click(Sender: TObject); var value: string; begin value:=InputBox('New name:','',filename2); if value='' then exit; RenameFile(filename2,value); end; procedure Tthumbnails1.changedirectory1Click(Sender: TObject); var i: integer; begin if SelectDirectory('Select a directory', ExtractFileDir(filename2){initialdir} , chosenDirectory) then begin for i:=0 to imageindex-1 do {resize images} begin with Myimages[i] do {contains the Timages} begin free; end; end; plot_thumbnails;{load new thumnails} end; end; procedure Tthumbnails1.imageMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);{generic for all Timages} begin thumbnails1.caption:=TControl(Sender).hint;;{copy hint} end; procedure Tthumbnails1.FormPaint(Sender: TObject); begin if imageindex=0 then plot_thumbnails; end; procedure Tthumbnails1.FormKeyPress(Sender: TObject; var Key: char); begin if key=#27 then begin esc_pressed:=true; thumbnails1.caption:='ESC pressed, stopped reading images.'; end; end; procedure Tthumbnails1.FormCreate(Sender: TObject); begin imageindex:=0; end; procedure Tthumbnails1.FormClose(Sender: TObject; var CloseAction: TCloseAction); begin thumbnails1_width:=thumbnails1.width; {remember} thumbnails1_height:=thumbnails1.height; end; procedure Tthumbnails1.copyto1Click(Sender: TObject); var path2,destname : string; OK: Boolean; begin {filename2 is set in Tthumbnails1.ImageMouseDown} if SelectDirectory('Select a directory', ExtractFileDir(filename2){initialdir} , path2) then begin destname:= path2+PathDelim+ExtractFilename(filename2); if destname=filename2 then ShowMessage('Abort!, source and destination are the same.') else begin if not FileExists(DestName) or //only copy if the file does not exists yet, or the user accepts overwriting the existig one (MessageDlg('File exists: overwrite?',mtConfirmation,[mbYes,mbNo],0) = mrYes) then begin //try to copy/move the file if sender=copyto1 then OK := CopyFile(filename2,destname , [cffPreserveTime, cffOverwriteFile]) else if sender=moveto1 then OK := renameFile(filename2,destname) {move the file to a diffent location by renaming} else ok:=false;{should never happen, programmers failure} if not OK then ShowMessage('Write error!!'); end; end; end; end; procedure Tthumbnails1.FormResize(Sender: TObject); var x,y,max_height,i,ww: integer; begin if imageindex=0 then exit; thumbnails1.panel1.width:=thumbnails1.width-25; x:=0; y:=0; max_height:=0; for i:=0 to imageindex-1 do {resize images} begin with Myimages[i] do {contains the Timages} begin Width := round((thumbnails1.panel1.width-2)/3); height := round(Width* picture.Bitmap.height/picture.Bitmap.width); if height>max_height then max_height:=height;{find largest heigth} thumbnails1.VertScrollBar.Increment:=max_height; left :=x; top := y; inc(x,Width+1); if x+1>=thumbnails1.panel1.width then {new row} begin x:=0; y:=y+max_height+1; max_height:=0; end; thumbnails1.panel1.height:=y+max_height; end; end; end; end. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_tiff.pas�����������������������������������������������������������������0000644�0001751�0001751�00000066107�14344743400�016203� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_tiff; {Writes uncompressed tiff files from an image array} {Based originally on 8 bit routines from bit2tiff.pas, BMP to TIFF, Freeware version 3.0 - Sep 10, 2000 by Wolfgang Krug} {Heavily modified for 16bit integer and 32 bit float gray and colour. IFD directory placed at beginning file and fileposition and seek commands avoided. Added image Describtion} {Copyright 2018, 2022 by Han Kleijn} // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. interface uses SysUtils, Classes,dialogs; type image_array = array of array of array of Single; const bufwide=1024*120;{buffer size in bytes} {16 bit procedures. not used in astap} function save_tiff_16(img: image_array; filen2,description:ansistring;flip_H,flip_V:boolean): boolean;{save to 16 bit gray scale TIFF file } function save_tiff_48(img: image_array; filen2,description:ansistring;flip_H,flip_V:boolean): boolean;{save to 48=3x16 color TIFF file } {32 bit procedures} function save_tiff_32(img: image_array; filen2,description:ansistring;flip_H,flip_V:boolean): boolean;{save to 32 bit float gray scale TIFF file } function save_tiff_96(img: image_array; filen2,description:ansistring;flip_H,flip_V:boolean): boolean;{save to 96=3x32 color TIFF file } implementation type TDirEntry = record _Tag : Word; _Type : Word; _Count : LongInt; _Value : LongInt; end; var tiffbuffer32: array[0..trunc(bufwide/4)] of single; {bufwide is set in astap_main and is 120000} tiffbuffer: array[0..bufwide] of byte absolute tiffbuffer32; const SoftwareName='ASTAP'+#0;{GIMP like to have this #0} { TIFF File Header: } TifHeader : array[0..7] of Byte = ( $49, $49, { Intel byte order } $2a, $00, { TIFF version (42) } $08, $00, $00, $00 ); { Pointer to the first directory. Will be updated later } size16=16; NoOfDirsBW16 : array[0..1] of Byte = ( size16, $00 ); { Number of tags within the directory } DirectoryBW16 : array[0..size16-1] of TDirEntry = ( ( _Tag: $00FE; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {0 NewSubFile: Image with full solution (0) } ( _Tag: $0100; _Type: $0003; _Count: $00000001; _Value: $00000000 ), {1 ImageWidth: Value will be set later } ( _Tag: $0101; _Type: $0003; _Count: $00000001; _Value: $00000000 ), {2 ImageLength: Value will be set later } ( _Tag: $0102; _Type: $0003; _Count: $00000001; _Value: $00000010 ), {3 BitsPerSample $10=16 ,no address } ( _Tag: $0103; _Type: $0003; _Count: $00000001; _Value: $00000001 ), {4 Compression: No compression } ( _Tag: $0106; _Type: $0003; _Count: $00000001; _Value: $00000001 ), {5 PhotometricInterpretation: 1 = BlackIsZero.} ( _Tag: $010E; _Type: $0002; _Count: $0000000A; _Value: $00000000 ), {6 Image Description. _Count will be updated later } ( _Tag: $0111; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {7 StripOffsets: Ptr to the adress of the image data } ( _Tag: $0115; _Type: $0003; _Count: $00000001; _Value: $00000001 ), {8 SamplesPerPixels: 1 } ( _Tag: $0116; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {9 RowsPerStrip: Value will be set later } ( _Tag: $0117; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {10 StripByteCounts: xs*ys bytes pro strip } ( _Tag: $011A; _Type: $0005; _Count: $00000001; _Value: $00000000 ), {11 X-Resolution: Adresse } ( _Tag: $011B; _Type: $0005; _Count: $00000001; _Value: $00000000 ), {12 Y-Resolution: (Adresse) } ( _Tag: $0128; _Type: $0003; _Count: $00000001; _Value: $00000002 ), {13 Resolution Unit: (2)= Unit ZOLL } ( _Tag: $0131; _Type: $0002; _Count: $0000000A; _Value: $00000000 ), {14 Software: } ( _Tag: $0153; _Type: $0003; _Count: $00000001; _Value: $00000001 )); {15 Sampleformat integer=1 } size32=16; NoOfDirsBW32 : array[0..1] of Byte = ( size32, $00 ); { Number of tags within the directory } DirectoryBW32 : array[0..size32-1] of TDirEntry = ( ( _Tag: $00FE; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {0 NewSubFile: Image with full solution (0) } ( _Tag: $0100; _Type: $0003; _Count: $00000001; _Value: $00000000 ), {1 ImageWidth: Value will be set later } ( _Tag: $0101; _Type: $0003; _Count: $00000001; _Value: $00000000 ), {2 ImageLength: Value will be set later } ( _Tag: $0102; _Type: $0003; _Count: $00000001; _Value: $00000020 ), {3 BitsPerSample $20=32 ,no address } ( _Tag: $0103; _Type: $0003; _Count: $00000001; _Value: $00000001 ), {4 Compression: No compression } ( _Tag: $0106; _Type: $0003; _Count: $00000001; _Value: $00000001 ), {5 PhotometricInterpretation[0, 1], 1 = BlackIsZero.} ( _Tag: $010E; _Type: $0002; _Count: $0000000A; _Value: $00000000 ), {6 Image Description. _Count will be updated later } ( _Tag: $0111; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {7 StripOffsets: Ptr to the adress of the image data } ( _Tag: $0115; _Type: $0003; _Count: $00000001; _Value: $00000001 ), {8 SamplesPerPixels: 1 } ( _Tag: $0116; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {9 RowsPerStrip: Value will be set later } ( _Tag: $0117; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {10 StripByteCounts: xs*ys bytes pro strip } ( _Tag: $011A; _Type: $0005; _Count: $00000001; _Value: $00000000 ), {11 X-Resolution: Adresse } ( _Tag: $011B; _Type: $0005; _Count: $00000001; _Value: $00000000 ), {12 Y-Resolution: (Adresse) } ( _Tag: $0128; _Type: $0003; _Count: $00000001; _Value: $00000002 ), {13 Resolution Unit: (2)= Unit ZOLL } ( _Tag: $0131; _Type: $0002; _Count: $0000000A; _Value: $00000000 ), {14 Software: } ( _Tag: $0153; _Type: $0003; _Count: $00000001; _Value: $00000003 )); {15 Sampleformat float=3 } size48=17; NoOfDirsRGB48 : array[0..1] of Byte = (size48, $00 ); { Number of tags within the directory } DirectoryRGB48 : array[0..size48-1] of TDirEntry = ( ( _Tag: $00FE; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {0 NewSubFile: Image with full solution (0) } ( _Tag: $0100; _Type: $0003; _Count: $00000001; _Value: $00000000 ), {1 ImageWidth: Value will be set later } ( _Tag: $0101; _Type: $0003; _Count: $00000001; _Value: $00000000 ), {2 ImageLength: Value will be set later } ( _Tag: $0102; _Type: $0003; _Count: $00000003; _Value: $00000000 ), {3 BitsPerSample address will be written later } ( _Tag: $0103; _Type: $0003; _Count: $00000001; _Value: $00000001 ), {4 Compression: No compression } ( _Tag: $0106; _Type: $0003; _Count: $00000001; _Value: $00000002 ), {5 PhotometricInterpretation: 2 = colour } ( _Tag: $010E; _Type: $0002; _Count: $0000000A; _Value: $00000000 ), {6 Image Description._Count will be updated later } ( _Tag: $0111; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {7 StripOffsets: Ptr to the adress of the image data } ( _Tag: $0115; _Type: $0003; _Count: $00000001; _Value: $00000003 ), {8 SamplesPerPixels: 3 } ( _Tag: $0116; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {9 RowsPerStrip: Value will be set later } ( _Tag: $0117; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {10 StripByteCounts: xs*ys bytes pro strip } ( _Tag: $011A; _Type: $0005; _Count: $00000001; _Value: $00000000 ), {11 X-Resolution: Adresse } ( _Tag: $011B; _Type: $0005; _Count: $00000001; _Value: $00000000 ), {12 Y-Resolution: (Adresse) } ( _Tag: $011C; _Type: $0003; _Count: $00000001; _Value: $00000001 ), {13 PlanarConfiguration: Pixel data will be stored continous } ( _Tag: $0128; _Type: $0003; _Count: $00000001; _Value: $00000002 ), {14 Resolution Unit: (2)= Unit ZOLL } ( _Tag: $0131; _Type: $0002; _Count: $0000000A; _Value: $00000000 ), {15 Software } ( _Tag: $0153; _Type: $0003; _Count: $00000001; _Value: $00000001 )); {16 Sampleformat integer=1 } size96=17; NoOfDirsRGB96 : array[0..1] of Byte = (size96, $00 ); { Number of tags within the directory } DirectoryRGB96 : array[0..size96-1] of TDirEntry = ( ( _Tag: $00FE; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {0 NewSubFile: Image with full solution (0) } ( _Tag: $0100; _Type: $0003; _Count: $00000001; _Value: $00000000 ), {1 ImageWidth: Value will be set later } ( _Tag: $0101; _Type: $0003; _Count: $00000001; _Value: $00000000 ), {2 ImageLength: Value will be set later } ( _Tag: $0102; _Type: $0003; _Count: $00000003; _Value: $00000000 ), {3 BitsPerSample address will be written later } ( _Tag: $0103; _Type: $0003; _Count: $00000001; _Value: $00000001 ), {4 Compression: No compression } ( _Tag: $0106; _Type: $0003; _Count: $00000001; _Value: $00000002 ), {5 PhotometricInterpretation: 2 = colour } ( _Tag: $010E; _Type: $0002; _Count: $0000000A; _Value: $00000000 ), {6 Image Description._Count will be updated later } ( _Tag: $0111; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {7 StripOffsets: Ptr to the adress of the image data } ( _Tag: $0115; _Type: $0003; _Count: $00000001; _Value: $00000003 ), {8 SamplesPerPixels: 3 } ( _Tag: $0116; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {9 RowsPerStrip: Value will be set later } ( _Tag: $0117; _Type: $0004; _Count: $00000001; _Value: $00000000 ), {10 StripByteCounts: xs*ys bytes pro strip } ( _Tag: $011A; _Type: $0005; _Count: $00000001; _Value: $00000000 ), {11 X-Resolution: Adresse } ( _Tag: $011B; _Type: $0005; _Count: $00000001; _Value: $00000000 ), {12 Y-Resolution: (Adresse) } ( _Tag: $011C; _Type: $0003; _Count: $00000001; _Value: $00000001 ), {13 PlanarConfiguration: Pixel data will be stored continous } ( _Tag: $0128; _Type: $0003; _Count: $00000001; _Value: $00000002 ), {14 Resolution Unit: (2)= Unit ZOLL } ( _Tag: $0131; _Type: $0002; _Count: $0000000A; _Value: $00000000 ), {15 Software } ( _Tag: $0153; _Type: $0003; _Count: $00000001; _Value: $00000003 )); {16 Sampleformat float=3 } NullString : array[0..3] of Byte = ( $00, $00, $00, $00 ); X_Res_Value : array[0..7] of Byte = ( $6D,$03,$00,$00, $0A,$00,$00,$00 ); { Value for X-Resolution: 87,7 Pixel/Zoll (SONY SCREEN) } Y_Res_Value : array[0..7] of Byte = ( $6D,$03,$00,$00, $0A,$00,$00,$00 ); { Value for Y-Resolution: 87,7 Pixel/Zoll } BitsPerSample48 : array[0..2] of Word = ($0010,$0010,$0010 );{8 or 16=$10} BitsPerSample96 : array[0..2] of Word = ($0020,$0020,$0020 );{8 or 16=$10} {Not used in ASTAP} function save_tiff_16(img: image_array; filen2,description:ansistring;flip_H,flip_V:boolean): boolean;{save to 16 bit grascale TIFF file } var OffsetXRes : LongInt; OffsetYRes : LongInt; OffsetDescrip : Longint; OffsetSoftware : LongInt; OffsetStrip : LongInt; OffsetDir : LongInt; thefile : tfilestream; i,j,k,m,width2,height2 : integer; dum: double; dummy : word; begin result:=false; filen2:=ChangeFileExt(Filen2,'.tif'); if fileexists(filen2)=true then if MessageDlg('Existing file ' +filen2+ ' Overwrite?', mtConfirmation, [mbYes, mbNo], 0) <> 6 {mbYes} then Exit; width2:=length(img[0]);{width} height2:=length(img[0,0]);{height} description:=description+#0;{GIMP is complaining about this #0} try thefile:=tfilestream.Create(filen2, fmcreate ); except thefile.free; exit; end; Directorybw16[1]._Value := LongInt(width2); { Image Width } Directorybw16[2]._Value := LongInt(height2); { Image Height } Directorybw16[9]._Value := LongInt(height2); { Image Height } Directorybw16[10]._Value := LongInt(2*width2*height2);{ Strip Byte Counts } Directorybw16[06]._count := LongInt(length(description)); { Length Description} Directorybw16[14]._count := LongInt(length(softwarename)); { Length software} { Write TIFF - File for Image with RGB-Values } { ------------------------------------------- } { Write Header } OffsetDir:= sizeof(TifHeader)+ sizeof(X_Res_Value)+ sizeof(Y_Res_Value)+ length(description)+ length(SoftwareName);{where is the IFD directory} move(offsetdir,tifheader[4],4); { Pointer to the first directory.} thefile.writebuffer ( TifHeader, sizeof(TifHeader)); OffsetXRes := thefile.Position ; thefile.writebuffer ( X_Res_Value, sizeof(X_Res_Value)); OffsetYRes := thefile.Position ; thefile.writebuffer ( Y_Res_Value, sizeof(Y_Res_Value)); OffsetDescrip := thefile.Position ; thefile.writebuffer ( description[1], length(description)); OffsetSoftware := thefile.Position ; thefile.writebuffer ( SoftwareName[1], length(SoftwareName)); OffsetStrip := OffsetDir +sizeof(NoOfDirsBW16) +sizeof(Directorybw16) + sizeof(NullString); { Set Offset - Adresses into Directory } Directorybw16[ 7]._Value := OffsetStrip; { StripOffset, location of start image data} Directorybw16[11]._Value := OffsetXRes; { X-Resolution } Directorybw16[12]._Value := OffsetYRes; { Y-Resolution } Directorybw16[14]._Value := OffsetSoftware; { Software } Directorybw16[06]._Value := OffsetDescrip; { Description } { Write IFD Directory } thefile.writebuffer ( NoOfDirsBW16, sizeof(NoOfDirsBW16));{number of directory entries} thefile.writebuffer ( Directorybw16, sizeof(Directorybw16)); thefile.writebuffer ( NullString, sizeof(NullString)); { Write Image Data } for i:=0 to height2-1 do begin if flip_V=false then k:=height2-1-i else k:=i;{reverse fits down to counting} for j:=0 to width2-1 do begin if flip_H=true then m:=width2-1-j else m:=j; dum:=img[0,m,k]; if dum>$FFFF then dum:=$FFFF;if dum<0 then dum:=$0;dummy:=round(dum); tiffbuffer[m+m] :=lo(dummy); tiffbuffer[m+m+1]:=hi(dummy); end; thefile.writebuffer( tiffbuffer,width2*2{size 2x8}) ;{works only for byte arrays} end; thefile.free; result:=true; end; function save_tiff_32(img: image_array; filen2,description:ansistring;flip_H,flip_V:boolean): boolean;{save to 32 bit float gray scale TIFF file } var OffsetXRes : LongInt; OffsetYRes : LongInt; OffsetSoftware : LongInt; OffsetDescrip : LongInt; OffsetStrip : LongInt; OffsetDir : LongInt; thefile : tfilestream; i,j,k,m,width2,height2,test : integer; begin result:=false; filen2:=ChangeFileExt(Filen2,'.tif'); if fileexists(filen2)=true then if MessageDlg('Existing file ' +filen2+ ' Overwrite?', mtConfirmation, [mbYes, mbNo], 0) <> 6 {mbYes} then Exit; //colours2:=length(img);{nr colours} width2:=length(img[0]);{width} height2:=length(img[0,0]);{height} description:=description+#0;{GIMP is complaining about this #0} try thefile:=tfilestream.Create(filen2, fmcreate ); except thefile.free; exit; end; Directorybw32[1]._Value := LongInt(width2); { Image Width } Directorybw32[2]._Value := LongInt(Height2); { Image Height } Directorybw32[9]._Value := LongInt(Height2); { Image Height } Directorybw32[10]._Value := LongInt(4*width2*Height2);{ Strip Byte Counts } Directorybw32[06]._count := LongInt(length(description)); { Length Description} Directorybw32[14]._count := LongInt(length(softwarename)); { Length software} { Write TIFF - } { ------------------------------------------- } { Write Header } OffsetDir:= sizeof(TifHeader)+ sizeof(X_Res_Value)+ sizeof(Y_Res_Value)+ length(description)+ length(SoftwareName);{where is the IFD directory} move(offsetdir,tifheader[4],4); { Pointer to the first directory.} thefile.writebuffer ( TifHeader, sizeof(TifHeader)); OffsetXRes := thefile.Position ; thefile.writebuffer ( X_Res_Value, sizeof(X_Res_Value)); OffsetYRes := thefile.Position ; thefile.writebuffer ( Y_Res_Value, sizeof(Y_Res_Value)); OffsetDescrip := thefile.Position ; thefile.writebuffer ( description[1], length(description)); OffsetSoftware := thefile.Position ; thefile.writebuffer ( SoftwareName[1], length(SoftwareName)); OffsetStrip := OffsetDir +sizeof(NoOfDirsBW32) +sizeof(Directorybw32) + sizeof(NullString); { Set Offset - Adresses into Directory } Directorybw32[ 7]._Value := OffsetStrip; { StripOffset, location of start image data} Directorybw32[11]._Value := OffsetXRes; { X-Resolution } Directorybw32[12]._Value := OffsetYRes; { Y-Resolution } Directorybw32[14]._Value := OffsetSoftware; { Software } Directorybw32[06]._Value := OffsetDescrip; { Description } { Write IFD Directory } thefile.writebuffer ( NoOfDirsBW32, sizeof(NoOfDirsBW32));{number of directory entries} thefile.writebuffer ( Directorybw32, sizeof(Directorybw32)); thefile.writebuffer ( NullString, sizeof(NullString)); { Write Image Data } for i:=0 to Height2-1 do begin if flip_V=false then k:=height2-1-i else k:=i;{reverse fits down to counting} for j:=0 to width2-1 do begin if flip_H=true then m:=width2-1-j else m:=j; tiffbuffer32[m]:=img[0,m,k]/65535;{range 0..1} end; thefile.writebuffer(tiffbuffer,width2*4{size 2x8}) ;{works only for byte arrays} end; thefile.free; result:=true; end; {Not used in ASTAP} function save_tiff_48(img: image_array; filen2,description:ansistring;flip_H,flip_V:boolean): boolean;{save to 48=3x16 color TIFF file} var OffsetXRes : LongInt; OffsetYRes : LongInt; OffsetDescrip : Longint; OffsetSoftware : LongInt; OffsetStrip : LongInt; OffsetDir : LongInt; OffsetBitsPerSample : LongInt; thefile : tfilestream; i,j,k,m,width2,height2: integer; dum: double; dummy : word; begin result:=false; filen2:=ChangeFileExt(Filen2,'.tif'); if fileexists(filen2)=true then if MessageDlg('Existing file ' +filen2+ ' Overwrite?', mtConfirmation, [mbYes, mbNo], 0) <> 6 {mbYes} then Exit; try thefile:=tfilestream.Create(filen2, fmcreate ); except thefile.free; exit; end; width2:=length(img[0]);{width} height2:=length(img[0,0]);{height} description:=description+#0;{GIMP is complaining about this} Directoryrgb48[1]._Value := LongInt(width2); { Image Width } Directoryrgb48[2]._Value := LongInt(height2); { Image Height } Directoryrgb48[9]._Value := LongInt(height2); { Image Height } Directoryrgb48[10]._Value:= LongInt(2*3*width2*height2); { Strip Byte Counts } Directoryrgb48[06]._count:= LongInt(length(description)); { Length Description} Directoryrgb48[15]._count:= LongInt(length(softwarename)); { Length software} { Write TIFF - File for Image with RGB-Values } { ------------------------------------------- } { Write Header } OffsetDir:= sizeof(TifHeader)+ sizeof(X_Res_Value)+ sizeof(Y_Res_Value)+ sizeof(BitsPerSample48)+ length(description)+ length(SoftwareName);{where is the IFD directory} move(offsetdir,tifheader[4],4); { Pointer to the first directory.} thefile.writebuffer ( TifHeader, sizeof(TifHeader)); OffsetXRes := thefile.Position ; thefile.writebuffer ( X_Res_Value, sizeof(X_Res_Value)); OffsetYRes := thefile.Position ; thefile.writebuffer ( Y_Res_Value, sizeof(Y_Res_Value)); OffsetBitsPerSample := Thefile.Position ; {where is sample located} Thefile.writebuffer ( BitsPerSample48, sizeof(BitsPerSample48)); OffsetDescrip := thefile.Position ; thefile.writebuffer ( description[1], length(description)); OffsetSoftware := thefile.Position ; thefile.writebuffer ( SoftwareName[1], length(SoftwareName)); OffsetStrip := OffsetDir +sizeof(NoOfDirsRGB48) +sizeof(DirectoryRGB48) + sizeof(NullString); { Set Offset - Adresses into Directory } DirectoryRGB48[ 3]._Value := OffsetBitsPerSample; { BitsPerSample location containing 1000 1000 1000 (16,16,16)} Directoryrgb48[ 7]._Value := OffsetStrip; { StripOffset, location of start image data} Directoryrgb48[11]._Value := OffsetXRes; { X-Resolution } Directoryrgb48[12]._Value := OffsetYRes; { Y-Resolution } Directoryrgb48[15]._Value := OffsetSoftware; { Software } Directoryrgb48[06]._Value := OffsetDescrip; { Description } { Write Directory } thefile.writebuffer ( NoOfDirsRGB48, sizeof(NoOfDirsRGB48));{number of directory entries} thefile.writebuffer ( Directoryrgb48, sizeof(Directoryrgb48)); thefile.writebuffer ( NullString, sizeof(NullString)); { Write Image Data } for i:=0 to height2-1 do begin if flip_V=false then k:=height2-1-i else k:=i;{reverse fits down to counting} for j:=0 to width2-1 do begin if flip_H=true then m:=width2-1-j else m:=j; dum:=img[0,m,k]; if dum>$FFFF then dum:=$FFFF;if dum<0 then dum:=$0;dummy:=round(dum); tiffbuffer[m*6 ] :=lo(dummy); tiffbuffer[m*6+1] :=hi(dummy); dum:=img[1,m,k]; if dum>$FFFF then dum:=$FFFF;if dum<0 then dum:=$0;dummy:=round(dum); tiffbuffer[m*6+2] :=lo(dummy); tiffbuffer[m*6+3] :=hi(dummy); dum:=img[2,m,k]; if dum>$FFFF then dum:=$FFFF;if dum<0 then dum:=$0;dummy:=round(dum); tiffbuffer[m*6+4] :=lo(dummy); tiffbuffer[m*6+5] :=hi(dummy); end; thefile.writebuffer(tiffbuffer,width2*6{size 2x6}) ;{works only for byte arrays} end; { Set Offset - Adresses into Directory } DirectoryRGB48[ 3]._Value := OffsetBitsPerSample; { BitsPerSample location containing 1000 1000 1000 (16,16,16)} Directoryrgb48[ 7]._Value := OffsetStrip; { StripOffset, location of start image data} Directoryrgb48[11]._Value := OffsetXRes; { X-Resolution } Directoryrgb48[12]._Value := OffsetYRes; { Y-Resolution } Directoryrgb48[15]._Value := OffsetSoftware; { Software } Directoryrgb48[06]._Value := OffsetDescrip; { Description } { Write Directory } OffsetDir := thefile.Position ;{where is the IFD directory} thefile.writebuffer ( NoOfDirsRGB48, sizeof(NoOfDirsRGB48));{number of directory entries} thefile.writebuffer ( Directoryrgb48, sizeof(Directoryrgb48)); thefile.writebuffer ( NullString, sizeof(NullString)); thefile.free; result:=true; end; function save_tiff_96(img: image_array; filen2,description:ansistring;flip_H,flip_V:boolean): boolean;{save to 96=3x32 color TIFF file } var OffsetXRes : LongInt; OffsetYRes : LongInt; OffsetDescrip : Longint; OffsetSoftware : LongInt; OffsetStrip : LongInt; OffsetDir : LongInt; OffsetBitsPerSample : LongInt; var thefile : tfilestream; i,j,k,m,width2,height2,len : integer; buf32: single; buffer : array[0..3] of byte absolute buf32; begin result:=false; filen2:=ChangeFileExt(Filen2,'.tif'); if fileexists(filen2)=true then if MessageDlg('Existing file ' +filen2+ ' Overwrite?', mtConfirmation, [mbYes, mbNo], 0) <> 6 {mbYes} then Exit; try thefile:=tfilestream.Create(filen2, fmcreate ); except thefile.free; exit; end; //colours2:=length(img);{nr colours} width2:=length(img[0]);{width} height2:=length(img[0,0]);{height} description:=description+#0;{GIMP is complaining about this} Directoryrgb96[1]._Value := LongInt(width2); { Image Width } Directoryrgb96[2]._Value := LongInt(Height2); { Image Height } Directoryrgb96[9]._Value := LongInt(Height2); { Image Height } Directoryrgb96[10]._Value:= LongInt(4*3*width2*Height2); { Strip Byte Counts } Directoryrgb96[06]._count:= LongInt(length(description)); { Length Description} Directoryrgb96[15]._count:= LongInt(length(softwarename)); { Length software} { Write TIFF - File for Image with RGB-Values } { ------------------------------------------- } { Write Header } OffsetDir:= sizeof(TifHeader)+ sizeof(X_Res_Value)+ sizeof(Y_Res_Value)+ sizeof(BitsPerSample96)+ length(description)+ length(SoftwareName); {where is the IFD directory} move(offsetdir,tifheader[4],4); { Pointer to the first directory.} thefile.writebuffer ( TifHeader, sizeof(TifHeader)); OffsetXRes := thefile.Position ; thefile.writebuffer ( X_Res_Value, sizeof(X_Res_Value)); OffsetYRes := thefile.Position ; thefile.writebuffer ( Y_Res_Value, sizeof(Y_Res_Value)); OffsetBitsPerSample := Thefile.Position ; {where is sample located} Thefile.writebuffer ( BitsPerSample96, sizeof(BitsPerSample96)); OffsetDescrip := thefile.Position ; thefile.writebuffer ( description[1], length(description)); OffsetSoftware := thefile.Position ; thefile.writebuffer ( SoftwareName[1], length(SoftwareName)); OffsetStrip := OffsetDir +sizeof(NoOfDirsRGB96) +sizeof(DirectoryRGB96) + sizeof(NullString); { Set Offset - Adresses into Directory } DirectoryRGB96[ 3]._Value := OffsetBitsPerSample; { BitsPerSample location containing 1000 1000 1000 (16,16,16)} Directoryrgb96[ 7]._Value := OffsetStrip; { StripOffset, location of start image data} Directoryrgb96[11]._Value := OffsetXRes; { X-Resolution } Directoryrgb96[12]._Value := OffsetYRes; { Y-Resolution } Directoryrgb96[15]._Value := OffsetSoftware; { Software } Directoryrgb96[06]._Value := OffsetDescrip; { Description } { Write Directory } thefile.writebuffer ( NoOfDirsRGB96, sizeof(NoOfDirsRGB96));{number of directory entries} thefile.writebuffer ( Directoryrgb96, sizeof(Directoryrgb96)); thefile.writebuffer ( NullString, sizeof(NullString)); { Write Image Data } for i:=0 to Height2-1 do begin if flip_V=false then k:=height2-1-i else k:=i;{reverse fits down to counting} for j:=0 to width2-1 do begin if flip_H=true then m:=width2-1-j else m:=j; buf32:=img[0,m,k]/65535;{range 0..1, buf32 has absolute link to buffer} tiffbuffer[m*12 ] :=buffer[0]; tiffbuffer[m*12+1] :=buffer[1]; tiffbuffer[m*12+2] :=buffer[2]; tiffbuffer[m*12+3] :=buffer[3]; buf32:=img[1,m,k]/65535;{range 0..1, buf32 has absolute link to buffer} tiffbuffer[m*12+4] :=buffer[0]; tiffbuffer[m*12+5] :=buffer[1]; tiffbuffer[m*12+6] :=buffer[2]; tiffbuffer[m*12+7] :=buffer[3]; buf32:=img[2,m,k]/65535;{range 0..1, buf32 has absolute link to buffer} tiffbuffer[m*12+8] :=buffer[0]; tiffbuffer[m*12+9] :=buffer[1]; tiffbuffer[m*12+10] :=buffer[2]; tiffbuffer[m*12+11] :=buffer[3]; end; thefile.writebuffer(tiffbuffer,width2*12) ;{works only for byte arrays} end; thefile.free; result:=true; end; end. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_ephemerides.pas����������������������������������������������������������0000644�0001751�0001751�00001006325�14344743400�017542� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_ephemerides; {* * These PASCAL routines where created by Han Kleijn. www.hnsky.org for the ASTAP program and are based on Fortran code from https://github.com/scottransom/pyslalib * * Copyright (C) See each routine * * License: * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA * *-} interface uses Classes, SysUtils, math; type U_array = array[1..13] of double; r6_array = array[1..6] of double; r3_array = array[1..3] of double; r3x3_array = array[1..3,1..3] of double; procedure sla_EPV2(DATE : double; bary :boolean; out PE, VE : r3_array); // J2000 heliocentric or barycentric Earth position and velocity. Light speed corrected. If bary is false, heliocentric, if true barycentric procedure sla_PLANET(DATE : double; NP: integer; out PV: r6_array; out JSTAT: integer); // J2000 heliocentric position and velocity of planets 1..8 based on original Simon et al Fortran code. Pluto removed. procedure orbit(DATE : double; JFORM : integer; EPOCH : double; ORBINC, ANODE,PERIH, AORQ, E, AORL, DM : double; out PV :r6_array; out JSTAT : integer) ;//Heliocentric position and velocity of a planet, asteroid or comet procedure precession3(JD0, JD1: double; var RA, DC : double); {precession} {based on planet.f, planel.f, el2ue.f, ue2pv.f,pv2ue.f, epv.f, prec.f, dcs2c, dmxv.f, dcc2s.f} implementation function mod2(const a, b: double): double; begin result:= a - b * Int(a / b); end; //-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- {*+; * - - - - - -; * U E 2 P V; * - - - - - -; *; * Heliocentric position and velocity of a planet, asteroid or comet,; * starting from orbital elements in the "universal variables" form. *; * Given:; * DATE d date, Modified Julian Date (JD-2400000.5); *; * Given and ed:; * U d(13) universal orbital elements (updated; Note 1); *; * given (1) combined mass (M+m); * " (2) total energy of the orbit (alpha); * " (3) reference (osculating) epoch (t0); * " (4-6) position at reference epoch (r0); * " (7-9) velocity at reference epoch (v0); * " (10) heliocentric distance at reference epoch; * " (11) r0.v0; * ed (12) date (t); * " (13) universal eccentric anomaly (psi) of date; *; * ed:; * PV d(6) position (AU) and velocity (AU/s); * JSTAT i status: 0 := OK; * -1 := radius vector zero; * -2 := failed to converge; *; * Notes; *; * 1 The "universal" elements are those which define the orbit for the; * purposes of the method of universal variables (see reference). * They consist of the combined mass of the two bodies, an epoch,; * and the position and velocity vectors (arbitrary reference frame); * at that epoch.0 The parameter set used here; * quantities that can, in fact, be derived from the other; * information. This approach is taken to avoiding unnecessary * computation and loss of accuracy.0 The supplementary quantities; * are (i) alpha, which is proportional to the total energy of the; * orbit, (ii) the heliocentric distance at epoch, (iii) the; * outwards component of the velocity at the given epoch, (iv) an; * estimate of psi, the "universal eccentric anomaly" at a given; * date and (v) that date. *; * 2 The companion routine is sla_EL2UE.0 This takes the conventional; * orbital elements and transforms them into the set of numbers; * needed by the present routine.0 A single prediction requires one; * one to sla_EL2UE followed by one to the present routine;; * for convenience, the two s are packaged as the routine; * sla_PLANEL.0 Multiple predictions may be made by again; * ing sla_EL2UE once, but then ing the present routine; * multiple times, which is faster than multiple s to sla_PLANEL. *; * It is not obligatory to use sla_EL2UE to ob; * However, it should be noted that because sla_EL2UE performs its; * own validation, no checks on the contents of the array U are made; * by the present routine. *; * 3 DATE is the instant for which the prediction is required.0 It is; * in the TT timescale (formerly Ephemeris Time, ET) and is a; * Modified Julian Date (JD-2400000.5). *; * 4 The universal elements supplied in the array U are in canonical; * units (solar masses, AU and canonical days).0 The position and; * velocity are not sensitive to the choice of reference frame.0 The; * sla_EL2UE routine in fact produces coordinates with respect to the; * J2000 equator and equinox. *; // * 5 The algorithm was originally adapted from the EPHSLA program of * D.H.P.Jones (private communication, 1996).0 The method is based; * on Stumpff's Universal Variables. *; * Reference: Everhart, E.0 & Pitkin, E.T., Am.J.Phys.0 51, 712, 1983. *; * P.T.Wallace Starlink 22 October 2005; *; * Copyright (C) 2005 Rutherford Appleton Laboratory; *; * License:; * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published b; * the Free Software Foundation; either version 2 of the License, or; * (at your option) any later version. *; * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.0 See the; * GNU General Public License for more details. *; * You should have received a copy of the GNU General Public License; * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, ; * Boston, MA 02111-1307 USA; *; *-; } procedure sla_UE2PV (DATE : double; U : u_array; out PV :r6_array; out JSTAT :integer); const //* Gaussian gravitational constant (exact); GCON=0.01720209895; //* Canonical days to seconds; CD2S=GCON/86400; var //* Test value for solution and maximum number of iterations; TEST:double=1E-13; NITMAX:integer=25; I,NIT,N: integer; R0, SIGMA0, T, PSI, DT, W,CM,ALPHA,T0: double; P0: array[0..3] of double; V0: array[1..3] of double; TOL,PSJ,PSJ2,BETA,S0,S1,S2,S3,FF,R,FLAST,PLAST,F,G,FD,GD : double; begin // Unpack the parameters.; CM := U[1]; ALPHA := U[2]; T0 := U[3]; for I := 1 to 3 do begin P0[I] := U[I+3]; V0[I] := U[I+6]; end; R0 := U[10]; SIGMA0 := U[11]; T := U[12]; PSI := U[13]; //* Approximately update the universal eccentric anomaly. PSI := PSI+(DATE-T)*GCON/R0; //* Time from reference epoch to date (in Canonical Days: a canonical; //* day is 58.1324409...0 days, defined as 1/GCON). DT := (DATE-T0)*GCON; //* Refine the universal eccentric anomaly, psi. NIT := 1; W := 1; TOL := 0; while ABS(W)> TOL do begin //* Form half angles until BETA small enough. N := 0; PSJ := PSI; PSJ2 := PSJ*PSJ; BETA := ALPHA*PSJ2; while ABS(BETA)>0.7 Do begin N := N+1; BETA := BETA/4; PSJ := PSJ/2; PSJ2 := PSJ2/4; end; // Calculate Universal Variables S0,S1,S2,S3 by nested series. S3 := PSJ*PSJ2*((((((BETA/210+1) *BETA/156+1) *BETA/110+1) *BETA/72+1) *BETA/42+1) *BETA/20+1)/6; S2 := PSJ2*((((((BETA/182+1) *BETA/132+1) *BETA/90+1) *BETA/56+1) *BETA/30+1) *BETA/12+1)/2; S1 := PSJ+ALPHA*S3; S0 := 1+ALPHA*S2; // Unfor := to * Undo the angle-halving. do begin TOL := TEST; while N>0 do begin S3 := 2*(S0*S3+PSJ*S2); S2 := 2*S1*S1; S1 := 2*S0*S1; S0 := 2*S0*S0-1; PSJ := PSJ+PSJ; TOL := TOL+TOL; N := N-1; end; // Values of F and F' corresponding to the current value of psi; FF := R0*S1+SIGMA0*S2+CM*S3-DT; R := R0*S0+SIGMA0*S1+CM*S2; // If first iteration, create dummy "last F". if ( NIT = 1) then FLAST := FF; // Check for sign change. if FF*FLAST<0E0 then begin // Sign change: get psi adjustment using secant method; W := FF*(PLAST-PSI)/(FLAST-FF); {plast is set in a few lines further down} end else begin // No sign change: use Newton-Raphson method instead; if (R = 0E0) then begin // Null radius vector. JSTAT := -1; exit; end; W := FF/R; end; // Save the last psi and F values. PLAST := PSI; FLAST := FF; // Apply the Newton-Raphson or secant adjustment to psi. PSI := PSI-W; // Next iteration, unless too many already. if (NIT > NITMAX) then begin // Failed to converge. JSTAT := -2; exit; end; NIT := NIT+1; end; // DO WHILE (ABS(W).GE.TOL) // Project the position and velocity vectors (scaling velocity to AU/s); W := CM*S2; F := 1-W/R0; G := DT-CM*S3; FD := -CM*S1/(R0*R); GD := 1-W/R; for I := 1 to 3 do begin PV[I] := P0[I]*F+V0[I]*G; PV[I+3] := CD2S*(P0[I]*FD+V0[I]*GD); end; // Update the parameters to allow speedy predicti; U[12] := DATE; U[13] := PSI; // OK exit. JSTAT := 0; exit; end; //------------------------------------------------------------------------------------------------------------------------------------------------------------------------ {*+; * - - - - - -; * P V 2 U E; * - - - - - -; *; * Construct a universal element set based on an instantaneous position; * and velocity. *; * Given:; * PV d(6) heliocentric x,y,z,xdot,ydot,zdot of date,; * (AU,AU/s; Note 1); * DATE d date (TT Modified Julian Date := JD-2400000.5); * PMASS d mass of the planet (Sun:=1; Note 2); *; * ed:; * U d(13) universal orbital elements (Note 3); *; * (1) combined mass (M+m); * (2) total energy of the orbit (alpha); * (3) reference (osculating) epoch (t0); * (4-6) position at reference epoch (r0); * (7-9) velocity at reference epoch (v0); * (10) heliocentric distance at reference epoch; * (11) r0.v0; * (12) date (t); * (13) universal eccentric anomaly (psi) of date, approx; *; * JSTAT i status: 0 := OK; * -1 := illegal PMASS; * -2 := too close to Sun; * -3 := too slow; *; * Notes; *; * 1 The PV 6-vector can be with respect to any chosen inertial frame,; * and the resulting universal-element set will be with respect to; * of epoch J2000. *; * 2 The mass, PMASS, is important only for the larger planets.0 For; * most purposes (e.g.0 asteroids) use 0.0 Values less than zero; * are illegal. *; * 3 The "universal" elements are those which define the orbit for the; * purposes of the method of universal variables (see reference). * They consist of the combined mass of the two bodies, an epoch,; * and the position and velocity vectors (arbitrary reference frame); * at that epoch.0 The parameter set used here; * quantities that can, in fact, be derived from the other; * information. This approach is taken to avoiding unnecessary * computation and loss of accuracy.0 The supplementary quantities; * are (i) alpha, which is proportional to the total energy of the; * orbit, (ii) the heliocentric distance at epoch, (iii) the; * outwards component of the velocity at the given epoch, (iv) an; * estimate of psi, the "universal eccentric anomaly" at a given; * date and (v) that date. *; * Reference: Everhart, E.0 & Pitkin, E.T., Am.J.Phys.0 51, 712, 1983. *; * P.T.Wallace Starlink 18 March 1999; *; * Copyright (C) 1999 Rutherford Appleton Laboratory; *; * License:; * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published b; * the Free Software Foundation; either version 2 of the License, or; * (at your option) any later version. *; * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.0 See the; * GNU General Public License for more details. *; * You should have received a copy of the GNU General Public License; * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, ; * Boston, MA 02111-1307 USA; *; *-;} procedure sla_PV2UE (PV : r6_array; DATE,PMASS : double; out U : u_array; out JSTAT : integer); const // Gaussian gravitational constant (exact); GCON=0.01720209895; // Canonical days to seconds; CD2S=GCON/86400; // Minimum allowed distance (AU) and speed (AU per canonical day); RMIN=1E-3; VMIN=1E-3; var T0,CM,X,Y,Z,XD,YD,ZD,R,V2,V,ALPHA,RDV: double; begin // Reference epoch. T0 := DATE; // Combined mass (mu:=M+m). if PMASS<0E0 then begin // Negative PMASS. JSTAT:=-1; exit; end; CM := 1+PMASS; // Unpack the state vector, expressing velocity in AU per canonical day. X := PV[1]; Y := PV[2]; Z := PV[3]; XD := PV[4]/CD2S; YD := PV[5]/CD2S; ZD := PV[6]/CD2S; // Heliocentric distance, and speed. R := SQRT(X*X+Y*Y+Z*Z); V2 := XD*XD+YD*YD+ZD*ZD; V := SQRT(V2); // Reject unreasonably small values. if (R<RMIN) then begin //Too close. JSTAT:=-2; exit; end; if (V<VMIN) then begin// Too slow. JSTAT:=-3; exit; end; // Total energy of the orbit. ALPHA := V2-2*CM/R; // Outward component of velocity. RDV := X*XD+Y*YD+Z*ZD; // Construct the universal-element set. U[1] := CM; U[2] := ALPHA; U[3] := T0; U[4] := X; U[5] := Y; U[6] := Z; U[7] := XD; U[8] := YD; U[9] := ZD; U[10] := R; U[11] := RDV; U[12] := T0; U[13] := 0; JSTAT := 0; exit; end; //----------------------------------------------------------------------------------------------------------------------------------------------- {*+; * - - - - - -; * E L 2 U E; * - - - - - -; *; * Transform conventional osculating orbital elements into "universal"; * form. *; * Given:; * DATE d epoch (TT MJD) of osculation (Note 3); * JFORM i choice of element set (1-3, Note 6); * EPOCH d epoch (TT MJD) of the elements; * ORBINC d inclination (radians); * ANODE d longitude of the ascend;// * PERIH d longitude or argument of perihelion (radians); * AORQ d mean distance or perihelion distance (AU); * E d eccentricity; * AORL d mean anomaly or longitude (radians, JFORM:=1,2 only); * DM d daily motion (radians, JFORM:=1 only); *; * ed:; * U d(13) universal orbital elements (Note 1); *; * (1) combined mass (M+m); * (2) total energy of the orbit (alpha); * (3) reference (osculating) epoch (t0); * (4-6) position at reference epoch (r0); * (7-9) velocity at reference epoch (v0); * (10) heliocentric distance at reference epoch; * (11) r0.v0; * (12) date (t); * (13) universal eccentric anomaly (psi) of date, approx; *; * JSTAT i status: 0 := OK; * -1 := illegal JFORM; * -2 := illegal E; * -3 := illegal AORQ; * -4 := illegal DM; * -5 := numerical error; *; * ed: sla_UE2PV, sla_PV2UE; *; * Notes; *; * 1 The "universal" elements are those which define the orbit for the; * purposes of the method of universal variables (see reference). * They consist of the combined mass of the two bodies, an epoch,; * and the position and velocity vectors (arbitrary reference frame); * at that epoch.0 The parameter set used here; * quantities that can, in fact, be derived from the other; * information. This approach is taken to avoiding unnecessary * computation and loss of accuracy.0 The supplementary quantities; * are (i) alpha, which is proportional to the total energy of the; * orbit, (ii) the heliocentric distance at epoch, (iii) the; * outwards component of the velocity at the given epoch, (iv) an; * estimate of psi, the "universal eccentric anomaly" at a given; * date and (v) that date. *; * 2 The companion routine is sla_UE2PV.0 This takes the set of numbers; * that the present routine outputs and uses them to derive the; * object's position and velocity.0 A single prediction requires one; * to the present routine followed by one to sla_UE2PV;; * for convenience, the two s are packaged as the routine; * sla_PLANEL.0 Multiple predictions may be made by again ing the; * present routine once, but then ing sla_UE2PV multiple times,; * which is faster than multiple s to sla_PLANEL. *; * 3 DATE is the epoch of osculation.0 It is in the TT timescale; * (formerly Ephemeris Time, ET) and is a Modified Julian Date; * (JD-2400000.5). *; * 4 The supplied orbital elements are with respect to the J2000; * ecliptic and equinox.0 The position and vel; * ed in the array U are with respect to the mean equator and; * equinox of epoch J2000, and are for the perihelion prior to the; * specified epoch. *; * 5 The universal elements ed in the array U are in canonical; * units (solar masses, AU and canonical days). *; * 6 Three different element-format options are available: *; * Option JFORM:=1, suitable for the major planets:; *; * EPOCH := epoch of elements (TT MJD); * ORBINC := inclination i (radians); * ANODE = longitude of the ascend;// * PERIH := longitude of perihelion, curly pi (radians); * AORQ := mean distance, a (AU); * E := eccentricity, e (range 0 to <1); * AORL := mean longitude L (radians); * DM := daily motion (radians); *; * Option JFORM:=2, suitable for minor planets:; *; * EPOCH := epoch of elements (TT MJD); * ORBINC := inclination i (radians); * ANODE = longitude of the ascend;// * PERIH := argument of perihelion, little omega (radians); * AORQ := mean distance, a (AU); * E := eccentricity, e (range 0 to <1); * AORL := mean anomaly M (radians); *; * Option JFORM:=3, suitable for comets:; *; * EPOCH := epoch of perihelion (TT MJD); * ORBINC := inclination i (radians); * ANODE = longitude of the ascend;// * PERIH := argument of perihelion, little omega (radians); * AORQ := perihelion distance, q (AU); * E := eccentricity, e (range 0 to 10); *; * 7 Unused elements (DM for JFORM:=2, AORL and DM for JFORM:=3) are; * not accessed. *; // * 8 The algorithm was originally adapted from the EPHSLA program of * D.H.P.Jones (private communication, 1996).0 The method is based; * on Stumpff's Universal Variables. *; * Reference: Everhart & Pitkin, Am.J.Phys.0 51, 712 (1983). *; * Last revision: 8 September 2005; *; * Copyright P.T.Wallace.0 All rights reserved. *; * License:; * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published b; * the Free Software Foundation; either version 2 of the License, or; * (at your option) any later version. *; * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.0 See the; * GNU General Public License for more details. *; * You should have received a copy of the GNU General Public License; * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, ; * Boston, MA 02111-1307 USA; *; *-; } procedure sla_EL2UE (DATE : double; JFORM : integer; EPOCH : double; ORBINC, ANODE,PERIH, AORQ, E, AORL, DM : double; out U :U_array; out JSTAT : integer) ; // Gaussian gravitational constant (exact); var GCON:double=0.01720209895; // Sin and cos of J2000 mean obliquity (IAU 1976); SE:double=0.3977771559319137; CE:double=0.9174820620691818; J: integer; PHT,ARGPH,Q,W,CM,ALPHA,PHS,SW,CW,SI,CI,SO,CO,X,Y,Z,PX,PY,PZ,VX,VY,VZ,DT,FC,FP,PSI: double; UL : U_array; PV : r6_array; begin // Validate arguments. if ((JFORM<1) or (JFORM > 3)) then begin JSTAT := -1; exit; end; if ((E<0E0) or (E > 10E0) or ((E>=1E0) and (JFORM<>3))) then begin JSTAT := -2; exit; end; if (AORQ<=0E0) then begin JSTAT := -3; exit; end; if ((JFORM = 1) and (DM<=0E0)) then begin JSTAT := -4; exit; end; //; // Transform elements into standard form:; //; // PHT := epoch of perihelion passage; //* ARGPH := argument of perihelion (little omega); //* Q := perihelion distance (q); //* CM := combined mass, M+m (mu); if (JFORM = 1) then begin //* Major planet.; PHT := EPOCH-(AORL-PERIH)/DM; ARGPH := PERIH-ANODE; Q := AORQ*(1-E); W := DM/GCON; CM := W*W*AORQ*AORQ*AORQ; end else if (JFORM = 2) then begin // Minor planet.; PHT := EPOCH-AORL*SQRT(AORQ*AORQ*AORQ)/GCON; ARGPH := PERIH; Q := AORQ*(1-E); CM := 1; end else begin //* Comet.; PHT := EPOCH; ARGPH := PERIH; Q := AORQ; CM := 1; end; //* The universal variable alpha. This is proportional to the total; //* energy of the orbit: -ve for an ellipse, zero for a parabola,; //* +ve for a hyperbola.; ALPHA := CM*(E-1)/Q; // Speed at perihelion.; PHS := SQRT(ALPHA+2*CM/Q); {* In a Cartesian coordinate system which has the x-axis pointing; * to perihelion and the z-axis normal to the orbit (such that the; * object orbits counter-clockwise as seen from +ve z), the; * perihelion position and velocity vectors are:; *; * position [Q,0,0]; * velocity [0,PHS,0]; *; * To express the results in J2000 equatorial coordinates we make a; * series of four rotations of the Cartesian axes:; *; * axis Euler angle; *; * 1 z argument of perihelion (little omega); * 2 x inclination (i); * 3 z longitude of the ascend;// * 4 x J2000 obliquity (epsilon); *; * In each case the rotation is clockwise as seen from the +ve end;// * the axis concerned.; * Functions of the Euler angles.;} SW := SIN(ARGPH); CW := COS(ARGPH); SI := SIN(ORBINC); CI := COS(ORBINC); SO := SIN(ANODE); CO := COS(ANODE); // Position at perihelion (AU).; X := Q*CW; Y := Q*SW; Z := Y*SI; Y := Y*CI; PX := X*CO-Y*SO; Y := X*SO+Y*CO; PY := Y*CE-Z*SE; PZ := Y*SE+Z*CE; // Velocity at perihelion (AU per canonical day).; X := -PHS*SW; Y := PHS*CW; Z := Y*SI; Y := Y*CI; VX := X*CO-Y*SO; Y := X*SO+Y*CO; VY := Y*CE-Z*SE; VZ := Y*SE+Z*CE; // Time from perihelion to date (in Canonical Days: a canonical day; // is 58.1324409...0 days, defined as 1/GCON). DT := (DATE-PHT)*GCON; //* First approximation to the Universal Eccentric Anomaly, PSI,; //* based on the circle (FC) and parabola (FP) values.; FC := DT/Q; W := power((3*DT+SQRT(9*DT*DT+8*Q*Q*Q)),(1/3)); FP := W-2*Q/W; PSI := (1-E)*FC+E*FP; // Assemble local copy of element set.; UL[1] := CM; UL[2] := ALPHA; UL[3] := PHT; UL[4] := PX; UL[5] := PY; UL[6] := PZ; UL[7] := VX; UL[8] := VY; UL[9] := VZ; UL[10] := Q; UL[11] := 0; UL[12] := DATE; UL[13] := PSI; //* Predict position+velocity at epoch of osculation.; sla_UE2PV(DATE,UL,PV,J); if (J<>0) then begin JSTAT:= -5; exit; end; // Convert back to universal elements. sla_PV2UE(PV,DATE,CM-1,U,J); if (J<>0) then begin JSTAT:= -5; exit; end; JSTAT := 0; end; //----------------------------------------------------------------------------------------------------------------------------------------------- { * - - - - - - -; * P L A N E L; * - - - - - - -; *; * Heliocentric position and velocity of a planet, asteroid or comet,; * starting from orbital elements.0; *; * Given:; * DATE d date, Modified Julian Date (JD - 2400000.5, Note 1); * JFORM i choice of element set (1-3; Note 3); * EPOCH d epoch of elements (TT MJD, Note 4); * ORBINC d inclination (radians); * ANODE d longitude of the ascend;// * PERIH d longitude or argument of perihelion (radians); * AORQ d mean distance or perihelion distance (AU); * E d eccentricity; * AORL d mean anomaly or longitude (radians, JFORM:=1,2 only); * DM d daily motion (radians, JFORM:=1 only); *; * ed:; * PV d(6) heliocentric x,y,z,xdot,ydot,zdot of date,; * J2000 equatorial triad (AU,AU/s); * JSTAT i status: 0 := OK; * -1 := illegal JFORM; * -2 := illegal E; * -3 := illegal AORQ; * -4 := illegal DM; * -5 := numerical error; *; * ed: sla_EL2UE, sla_UE2PV; *; * Notes; *; * 1 DATE is the instant for which the prediction is required.0 It is; * in the TT timescale (formerly Ephemeris Time, ET) and is a; * Modified Julian Date (JD-2400000.5).0; *; * 2 The elements are with respect to the J2000 ecliptic and equinox.0; *; * 3 A choice of three different element-set options is available:; *; * Option JFORM := 1, suitable for the major planets:; *; * EPOCH := epoch of elements (TT MJD); * ORBINC := inclination i (radians); * ANODE = longitude of the ascend;// * PERIH := longitude of perihelion, curly pi (radians); * AORQ := mean distance, a (AU); * E := eccentricity, e (range 0 to <1); * AORL := mean longitude L (radians); * DM := daily motion (radians); *; * Option JFORM := 2, suitable for minor planets:; *; * EPOCH := epoch of elements (TT MJD); * ORBINC := inclination i (radians); * ANODE = longitude of the ascend;// * PERIH := argument of perihelion, little omega (radians); * AORQ := mean distance, a (AU); * E := eccentricity, e (range 0 to <1); * AORL := mean anomaly M (radians); *; * Option JFORM := 3, suitable for comets:; *; * EPOCH := epoch of elements and perihelion (TT MJD); * ORBINC := inclination i (radians); * ANODE = longitude of the ascend;// * PERIH := argument of perihelion, little omega (radians); * AORQ := perihelion distance, q (AU); * E := eccentricity, e (range 0 to 10); *; * Unused arguments (DM for JFORM:=2, AORL and DM for JFORM:=3) are not; * accessed.0; *; * 4 Each of the three element sets defines an unperturbed heliocentric; * orbit.0 For a given epoch of observation, the position of the body; * in its orbit can be predicted from these elements, which are; * ed "osculating elements", using standard two-body analytical; * solutions.0 However, due to planetary perturbations, a given set; * of osculating elements remains usable for only as long as the; * unperturbed orbit that it describes is an adequate approximation; * to reality.0 Attached to such a set of elements is a date ed; * the "osculating epoch", at which the elements are, momentarily,; * a perfect representation of the instantaneous position and; * velocity of the body.0; *; * Therefore, for any given problem there are up to three different; * epochs in play, and it is vital to distinguish clearly between; * them:; *; * 0.0 The epoch of observation: the moment in time for which the; * position of the body is to be predicted.0; *; * 0.0 The epoch defining the position of the body: the moment in time; * at which, in the absence of purturbations, the specified; * position (mean longitude, mean anomaly, or perihelion) is; * reached.0; *; * 0.0 The osculating epoch: the moment in time at which the given; * elements are correct.0; *; * For the major-planet and minor-planet cases it is usual to make; * the epoch that defines the position of the body the same as the; * epoch of osculation.0 Thus, only two different epochs are; * involved: the epoch of the elements and the epoch of observation.0; *; * For comets, the epoch of perihelion fixes the position in the; * orbit and in general a different epoch of osculation will be; * chosen.0 Thus, all three types of epoch are involved.0; *; * For the present routine:; *; * 0.0 The epoch of observation is the argument DATE.0; *; * 0.0 The epoch defining the position of the body is the argument; * EPOCH.0; *; * 0.0 The osculating epoch is not used and is assumed to be close; * enough to the epoch of observation to deliver adequate accuracy.0; * If not, a preliminary to sla_PERTEL may be used to update; * the element-set (and its associated osculating epoch) by; * applying planetary perturbations.0; *; * 5 The reference frame for the result is with respect to the mean; * equator and equinox of epoch J2000.0; *; * 6 The algorithm was originally adapted from the EPHSLA program of * D.H.P.Jones (private communication, 1996).0 The method is based; * on Stumpff's Universal Variables.0; *; * Reference: Everhart, E.0 & Pitkin, E.T., Am.J.Phys.0 51, 712, 1983.0; *; * P.T.Wallace Starlink 31 December 2002; *; * Copyright (C) 2002 Rutherford Appleton Laboratory; *; * License:; * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published b; * the Free Software Foundation; either version 2 of the License, or; * (at your option) any later version.0; *; * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.0 See the; * GNU General Public License for more details.0; *; * You should have received a copy of the GNU General Public License; * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, ; * Boston, MA 02111-1307 USA; *; } procedure sla_PLANEL ( DATE: double; JFORM: integer; EPOCH : double; ORBINC, ANODE, PERIH,AORQ, E, AORL, DM: double;out PV: r6_array; out JSTAT : integer); var U: U_array; J: integer; begin // line not converted// * Validate elements and convert to "universal va; sla_EL2UE(DATE,JFORM, EPOCH,ORBINC,ANODE,PERIH,AORQ,E,AORL,DM,U,J); // Determine the position and velocity.0; if (J = 0) then begin sla_UE2PV(DATE,U,PV,J); if (J<>0) then J:=-5; end; // Wrap up.0; JSTAT := J; end; //---------------------------------------------------------------------------------------- {*+ * - - - - - - * D C C 2 S * - - - - - - * * Cartesian to spherical coordinates (double precision) * * Given: * V d(3) x,y,z vector * * Returned: * A,B d spherical coordinates in radians * * The spherical coordinates are longitude (+ve anticlockwise looking * from the +ve latitude pole) and latitude. The Cartesian coordinates * are right handed, with the x axis at zero longitude and latitude, and * the z axis at the +ve latitude pole. * * If V is null, zero A and B are returned. At either pole, zero A is * returned. * * Last revision: 22 July 2004 * * Copyright P.T.Wallace. All rights reserved. * * License: * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA * *-} procedure sla_DCC2S (V : r3_array; out A, B : double); var X,Y,Z,R: double; begin X := V[1]; Y := V[2]; Z := V[3]; R := SQRT(X*X+Y*Y); if (R = 0) then begin A := 0; end else begin A := ARCTAN2(Y,X); end; if (Z = 0) then begin B := 0; end else begin B := ARCTAN2(Z,R); end; end;// //--------------------------------------------------------------------------------------------------- {*+ * - - - - - * D M X V * - - - - - * * Performs the 3-D forward unitary transformation: * * vector VB = matrix DM * vector VA * * (double precision) * * Given: * DM dp(3,3) matrix * VA dp(3) vector * * Returned: * VB dp(3) result vector * * To comply with the ANSI Fortran 77 standard, VA and VB must be * different arrays. However, the routine is coded so as to work * properly on many platforms even if this rule is violated. * * Last revision: 26 December 2004 * * Copyright P.T.Wallace. All rights reserved. * * License: * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA * *-} procedure sla_DMXV (DM : r3x3_array; VA : r3_array; out VB : r3_array); var I,J: integer; w : double; VW : r3_array; begin // Matrix DM * vector VA -> vector VW; for J := 1 to 3 do begin W:=0; for I := 1 to 3 do begin W:=W+DM[J,I]*VA[I]; end; VW[J]:=W; end; // Vector VW -> vector VB; for J := 1 to 3 do begin VB[J]:=VW[J]; end; end;// //-------------------------------------------------------------------------------------------- {*+ * - - - - - - * D C S 2 C * - - - - - - * * Spherical coordinates to direction cosines (double precision) * * Given: * A,B d spherical coordinates in radians * (RA,Dec), (long,lat) etc. * * Returned: * V d(3) x,y,z unit vector * * The spherical coordinates are longitude (+ve anticlockwise looking * from the +ve latitude pole) and latitude. The Cartesian coordinates * are right handed, with the x axis at zero longitude and latitude, and * the z axis at the +ve latitude pole. * * Last revision: 26 December 2004 * * Copyright P.T.Wallace. All rights reserved. * * License: * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA * *-} procedure sla_DCS2C (A, B : double; out V : r3_array); var COSB: double; begin COSB := COS(B); V[1] := COS(A)*COSB; V[2] := SIN(A)*COSB; V[3] := SIN(B); end;// //------------------------------------------------------------------------------------------- {*+ * - - - - - - - * D E U L E R * - - - - - - - * * Form a rotation matrix from the Euler angles - three successive * rotations about specified Cartesian axes (double precision) * * Given: * ORDER string specifies about which axes the rotations occur * PHI d 1st rotation (radians) * THETA d 2nd rotation ( " ) * PSI d 3rd rotation ( " ) * * Returned: * RMAT d(3,3) rotation matrix * * A rotation is positive when the reference frame rotates * anticlockwise as seen looking towards the origin from the * positive region of the specified axis. * * The characters of ORDER define which axes the three successive * rotations are about. A typical value is 'ZXZ', indicating that * RMAT is to become the direction cosine matrix corresponding to * rotations of the reference frame through PHI radians about the * old Z-axis, followed by THETA radians about the resulting X-axis, * then PSI radians about the resulting Z-axis. * * The axis names can be any of the following, in any order or * combination: X, Y, Z, uppercase or lowercase, 1, 2, 3. Normal * axis labelling/numbering conventions apply; the xyz (=123) * triad is right-handed. Thus, the 'ZXZ' example given above * could be written 'zxz' or '313' (or even 'ZxZ' or '3xZ'). ORDER * is terminated by length or by the first unrecognized character. * * Fewer than three rotations are acceptable, in which case the later * angle arguments are ignored. If all rotations are zero, the * identity matrix is produced. * * P.T.Wallace Starlink 23 May 1997 * * Copyright (C) 1997 Rutherford Appleton Laboratory * * License: * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA *} procedure sla_DEULER (ORDER : ansistring; PHI, THETA, PSI : double; out RMAT :r3x3_array); var J,I,L,N,K: integer; ANGLE, S, C, W: double; RESULT,ROTN,WM: r3x3_array; begin // Initialize result matrix; for J := 1 to 3 do begin for I := 1 to 3 do begin if (I<>J) then begin RESULT[I,J] := 0; end else begin RESULT[I,J] := 1; end; end; end; // Establish length of axis string; L := length(ORDER); // Look at each character of axis string until finished; for N := 1 to 3 do begin if (N<=L) then begin // Initialize rotation matrix for the current rotation; for J := 1 to 3 do begin for I := 1 to 3 do begin if (I<>J) then begin ROTN[I,J] := 0; end else begin ROTN[I,J] := 1; end; end; end; // Pick up the appropriate Euler angle and take sine & cosine; if (N = 1) then begin ANGLE := PHI; end else if (N = 2) then begin ANGLE := THETA; end else begin ANGLE := PSI; end; S := SIN(ANGLE); C := COS(ANGLE); // Identify the axis; if ORDER[N]= 'X' THEN // Matrix for x-rotation; begin ROTN[2,2] := C; ROTN[2,3] := S; ROTN[3,2] := -S; ROTN[3,3] := C; end else if ORDER[N]= 'Y' THEN // Matrix for y-rotation; BEGIN ROTN[1,1] := C; ROTN[1,3] := -S; ROTN[3,1] := S; ROTN[3,3] := C; end else if ORDER[N]= 'Z' THEN // Matrix for z-rotation; BEGIN ROTN[1,1] := C; ROTN[1,2] := S; ROTN[2,1] := -S; ROTN[2,2] := C; end else begin // Unrecognized character - fake end; L := 0; end; // Apply the current rotation (matrix ROTN x matrix RESULT); for I := 1 to 3 do begin for J := 1 to 3 do begin W := 0; for K := 1 to 3 do begin W := W+ROTN[I,K]*RESULT[K,J]; end; WM[I,J] := W; end; end; for J := 1 to 3 do begin for I := 1 to 3 do begin RESULT[I,J] := WM[I,J]; end; end; end; end; // Copy the result; for J := 1 to 3 do begin for I := 1 to 3 do begin RMAT[I,J] := RESULT[I,J]; end; end; end;// //------------------------------------------------------------------------------------------- {*+ * - - - - - * P R E C * - - - - - * * Form the matrix of precession between two epochs (IAU 1976, FK5) * (double precision) * * Given: * EP0 dp beginning epoch * EP1 dp ending epoch * * Returned: * RMATP dp(3,3) precession matrix * * Notes: * * 1) The epochs are TDB (loosely ET) Julian epochs. * * 2) The matrix is in the sense V(EP1) = RMATP * V(EP0) * * 3) Though the matrix method itself is rigorous, the precession * angles are expressed through canonical polynomials which are * valid only for a limited time span. There are also known * errors in the IAU precession rate. The absolute accuracy * of the present formulation is better than 0.1 arcsec from * 1960AD to 2040AD, better than 1 arcsec from 1640AD to 2360AD, * and remains below 3 arcsec for the whole of the period * 500BC to 3000AD. The errors exceed 10 arcsec outside the * range 1200BC to 3900AD, exceed 100 arcsec outside 4200BC to * 5600AD and exceed 1000 arcsec outside 6800BC to 8200AD. * The SLALIB routine sla_PRECL implements a more elaborate * model which is suitable for problems spanning several * thousand years. * * References: * Lieske,J.H., 1979. Astron.Astrophys.,73,282. * equations (6) & (7), p283. * Kaplan,G.H., 1981. USNO circular no. 163, pA2. * * Called: sla_DEULER * * P.T.Wallace Starlink 23 August 1996 * * Copyright (C) 1996 Rutherford Appleton Laboratory * * License: * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA * *-} procedure sla_PREC (EP0, EP1 : double;out RMATP :r3x3_array); const // Arc seconds to radians; AS2R=pi/(3600*180); var T0,T,TAS2R,W,ZETA,Z,THETA: double; begin // Interval between basic epoch J2000.0 and beginning epoch (JC); T0 := (EP0-2000)/100; // Interval over which precession required (JC); T := (EP1-EP0)/100; // Euler angles; TAS2R := T*AS2R; W := 2306.2181+(1.39656-0.000139*T0)*T0; ZETA := (W+((0.30188-0.000344*T0)+0.017998*T)*T)*TAS2R;{result in radians} Z := (W+((1.09468+0.000066*T0)+0.018203*T)*T)*TAS2R;{result in radians} THETA := ((2004.3109+(-0.85330-0.000217*T0)*T0)+((-0.42665-0.000217*T0)-0.041833*T)*T)*TAS2R;{result in radians} // Rotation matrix; sla_DEULER('ZYZ',-ZETA,THETA,-Z,RMATP); end; //----------------------------------------------------------------------------------------------------------------------------------------------------- procedure precession3(JD0, JD1: double; var RA, DC : double); {precession} var RMATP: r3x3_array; V1,V2: r3_array; begin // Generate appropriate precession matrix; sla_PREC(2000+(jd0 - 2451545) / 365.25,2000+(jd1 - 2451545) / 365.25,RMATP); // EP1=2000D0 + (DATE-51544.5D0)/365.25D0 //* Convert RA,Dec to x,y,z; sla_DCS2C(RA,DC,V1); //* Precess; sla_DMXV(RMATP,V1,V2); //* Back to RA,Dec; sla_DCC2S(V2,RA,DC); //make range 0.. 2*pi RA:=RA mod (2*pi); IF RA<0 then RA:=RA+2*pi; end; //----------------------------------------------------------------------------------------------------------------------------------------------------- {For this Pascal version minor Pluto has been removed. Pluto position will be retrieved as a minor planet} {*+ * - - - - - - - * P L A N E T * - - - - - - - * * Approximate heliocentric position and velocity of a specified * major planet. * * Given: * DATE d Modified Julian Date (JD - 2400000.5) * NP i planet (1=Mercury, 2=Venus, 3=EMB ... 8=Neptune) * * Returned: * PV d(6) heliocentric x,y,z,xdot,ydot,zdot, J2000 * equatorial triad (AU,AU/s) * JSTAT i status: +1 = warning: date out of range * 0 = OK * -1 = illegal NP (outside 1-9) * -2 = solution didn't converge * * Called: sla_PLANEL * * Notes * * 1 The epoch, DATE, is in the TDB timescale and is a Modified * Julian Date (JD-2400000.5). * * 2 The reference frame is equatorial and is with respect to the * mean equinox and ecliptic of epoch J2000. * * 3 If an NP value outside the range 1-9 is supplied, an error * status (JSTAT = -1) is returned and the PV vector set to zeroes. * * 4 The algorithm for obtaining the mean elements of the planets * from Mercury to Neptune is due to J.L. Simon, P. Bretagnon, * J. Chapront, M. Chapront-Touze, G. Francou and J. Laskar * (Bureau des Longitudes, Paris). The (completely different) * algorithm for calculating the ecliptic coordinates of Pluto * is by Meeus. * * 5 Comparisons of the present routine with the JPL DE200 ephemeris * give the following RMS errors over the interval 1960-2025: * * position (km) speed (metre/sec) * * Mercury 334 0.437 * Venus 1060 0.855 * EMB 2010 0.815 * Mars 7690 1.98 * Jupiter 71700 7.70 * Saturn 199000 19.4 * Uranus 564000 16.4 * Neptune 158000 14.4 * * From comparisons with DE102, Simon et al quote the following * longitude accuracies over the interval 1800-2200: * * Mercury 4" * Venus 5" * EMB 6" * Mars 17" * Jupiter 71" * Saturn 81" * Uranus 86" * Neptune 11" * * * Over the period 1000-3000 the accuracy * is better than 1.5 times that over 1800-2200. Outside the * period 1000-3000 the accuracy declines. For Pluto the * accuracy declines rapidly outside the period 1885-2099. * Outside these ranges (1885-2099 for Pluto, 1000-3000 for * the rest) a "date out of range" warning status (JSTAT=+1) * is returned. * * 6 The algorithms for (i) Mercury through Neptune and (ii) Pluto * are completely independent. In the Mercury through Neptune * case, the present SLALIB implementation differs from the * original Simon et al Fortran code in the following respects. * * * The date is supplied as a Modified Julian Date rather * than a Julian Date (MJD = JD - 2400000.5). * * * The result is returned only in equatorial Cartesian form; * the ecliptic longitude, latitude and radius vector are not * returned. * * * The velocity is in AU per second, not AU per day. * * * Different error/warning status values are used. * * * Kepler's equation is not solved inline. * * * Polynomials in T are nested to minimize rounding errors. * * * Explicit double-precision constants are used to avoid * mixed-mode expressions. * * * There are other, cosmetic, changes to comply with * Starlink/SLALIB style guidelines. * * None of the above changes affects the result significantly. * * 7 For NP=3 the result is for the Earth-Moon Barycentre. To * obtain the heliocentric position and velocity of the Earth, * either use the SLALIB routine sla_EVP (or sla_EPV) or call * sla_DMOON and subtract 0.012150581 times the geocentric Moon * vector from the EMB vector produced by the present routine. * (The Moon vector should be precessed to J2000 first, but this * can be omitted for modern epochs without introducing significant * inaccuracy.) * * References: Simon et al., Astron. Astrophys. 282, 663 (1994). * Meeus, Astronomical Algorithms, Willmann-Bell (1991). * * This revision: 19 June 2004 * * Copyright (C) 2004 P.T.Wallace. All rights reserved. * * License: * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, MA 02111-1307 USA * *-} procedure sla_PLANET (DATE : double; NP: integer; out PV: r6_array; out JSTAT: integer); var // -----------------------; // Mercury through Neptune; // -----------------------; { Planetary inverse masses} AMAS : array[1..8] of double= (( 6023600),(408523.5),328900.5,3098710,1047.355,3498.5,22869,19314); //; // Tables giving the mean Keplerian elements, limited to T**2 terms:; //; // A semi-major axis (AU); // DLM mean longitude (degree and arcsecond); // E eccentricity; // PI longitude of the perihelion (degree and arcsecond); // DINC inclination (degree and arcsecond); // OMEGA longitude of the ascend;// //; A : array[1..8,1..3] of double =( ( 0.3870983098, 0, 0), ( 0.7233298200, 0, 0), ( 1.0000010178, 0, 0), ( 1.5236793419, 3E-10, 0), ( 5.2026032092, 19132E-10, -39E-10), ( 9.5549091915, -0.0000213896, 444E-10), ( 19.2184460618, -3716E-10, 979E-10), ( 30.1103868694, -16635E-10, 686E-10)); //; DLM : array[1..8,1..3] of double=( ( 252.25090552, 5381016286.88982, -1.92789), ( 181.97980085, 2106641364.33548, 0.59381), ( 100.46645683, 1295977422.83429, -2.04411), ( 355.43299958, 689050774.93988, 0.94264), ( 34.35151874, 109256603.77991, -30.60378), ( 50.07744430, 43996098.55732, 75.61614), ( 314.05500511, 15424811.93933, -1.75083), ( 304.34866548, 7865503.20744, 0.21103)); //; E : array[1..8,1..3] of double=( ( 0.2056317526, 0.0002040653, -28349E-10), ( 0.0067719164, -0.0004776521, 98127E-10), ( 0.0167086342, -0.0004203654, -0.0000126734), ( 0.0934006477, 0.0009048438, -80641E-10), ( 0.0484979255, 0.0016322542, -0.0000471366), ( 0.0555481426, -0.0034664062, -0.0000643639), ( 0.0463812221, -0.0002729293, 0.0000078913), ( 0.0094557470, 0.0000603263, 0 )); //; PI : array[01..8,1..3] of double=( ( 77.45611904, 5719.11590, -4.83016), ( 131.56370300, 175.48640, -498.48184), ( 102.93734808, 11612.35290, 53.27577), ( 336.06023395, 15980.45908, -62.32800), ( 14.33120687, 7758.75163, 259.95938), ( 93.05723748, 20395.49439, 190.25952), ( 173.00529106, 3215.56238, -34.09288), ( 48.12027554, 1050.71912, 27.39717)); //; DINC : array[01..8,1..3] of double=( ( 7.00498625, -214.25629, 0.28977), ( 3.39466189, -30.84437, -11.67836), ( 0, 469.97289, -3.35053), ( 1.84972648, -293.31722, -8.11830), ( 1.30326698, -71.55890, 11.95297), ( 2.48887878, 91.85195, -17.66225), ( 0.77319689, -60.72723, 1.25759), ( 1.76995259, 8.12333, 0.08135)); //; OMEGA : array[01..8,1..3] of double=( ( 48.33089304, -4515.21727, -31.79892), ( 76.67992019, -10008.48154, -51.32614), ( 174.87317577, -8679.27034, 15.34191), ( 49.55809321, -10620.90088, -230.57416), ( 100.46440702, 6362.03561, 326.52178), ( 113.66550252, -9240.19942, -66.23743), ( 74.00595701, 2669.15033, 145.93964), ( 131.78405702, -221.94322, -0.78728)); //; // Tables for trigonometric terms to be added to the mean elements; // of the semi-major axes.0; //; DKP : array[1..8,1..9] of double=( ( 69613, 75645, 88306, 59899, 15746, 71087, 142173, 3086, 0), ( 21863, 32794, 26934, 10931, 26250, 43725, 53867, 28939, 0), ( 16002, 21863, 32004, 10931, 14529, 16368, 15318, 32794, 0), ( 6345, 7818, 15636, 7077, 8184, 14163, 1107, 4872, 0), ( 1760, 1454, 1167, 880, 287, 2640, 19, 2047, 1454), ( 574, 0, 880, 287, 19, 1760, 1167, 306, 574), ( 204, 0, 177, 1265, 4, 385, 200, 208, 204), ( 0, 102, 106, 4, 98, 1367, 487, 204, 0 )); //; CA : array[1..8,1..9] of double=( ( 4, -13, 11, -9, -9, -3, -1, 4, 0), ( -156, 59, -42, 6, 19, -20, -10, -12, 0), ( 64, -152, 62, -8, 32, -41, 19, -11, 0), ( 124, 621, -145, 208, 54, -57, 30, 15, 0), ( -23437, -2634, 6601, 6259, -1507, -1821, 2620, -2115,-1489), ( 62911,-119919, 79336, 17814,-24241, 12068, 8306, -4893, 8902), ( 389061,-262125,-44088, 8387,-22976, -2093, -615, -9720, 6633), (-412235,-157046,-31430, 37817, -9740, -13, -7449, 9644, 0 )); //; SA : array[1..8,1..9] of double=( ( -29, -1, 9, 6, -6, 5, 4, 0, 0), ( -48, -125, -26, -37, 18, -13, -20, -2, 0), ( -150, -46, 68, 54, 14, 24, -28, 22, 0), ( -621, 532, -694, -20, 192, -94, 71, -73, 0), ( -14614,-19828, -5869, 1881, -4372, -2255, 782, 930, 913), ( 139737, 0, 24667, 51123, -5102, 7429, -4095, -1976,-9566), ( -138081, 0, 37205,-49039,-41901,-33872,-27037,-12474,18797), ( 0, 28492,133236, 69654, 52322,-49577,-26430, -3593, 0 )); //; // Tables giving the trigonometric terms to be added to the mean; // elements of the mean longitudes.0; //; DKQ : array[1..8,1..10] of double=( ( 3086, 15746, 69613, 59899, 75645, 88306, 12661, 2658, 0, 0), ( 21863, 32794, 10931, 73, 4387, 26934, 1473, 2157, 0, 0), ( 10, 16002, 21863, 10931, 1473, 32004, 4387, 73, 0, 0), ( 10, 6345, 7818, 1107, 15636, 7077, 8184, 532, 10, 0), ( 19, 1760, 1454, 287, 1167, 880, 574, 2640, 19,1454), ( 19, 574, 287, 306, 1760, 12, 31, 38, 19, 574), ( 4, 204, 177, 8, 31, 200, 1265, 102, 4, 204), ( 4, 102, 106, 8, 98, 1367, 487, 204, 4, 102)); //; CLO : array[1..8,1..10] of double=( ( 21, -95, -157, 41, -5, 42, 23, 30, 0, 0), ( -160, -313, -235, 60, -74, -76, -27, 34, 0, 0), ( -325, -322, -79, 232, -52, 97, 55, -41, 0, 0), ( 2268, -979, 802, 602, -668, -33, 345, 201, -55, 0), ( 7610, -4997,-7689,-5841,-2617, 1115, -748, -607, 6074, 354), ( -18549, 30125,20012, -730, 824, 23, 1289, -352,-14767,-2062), (-135245,-14594, 4197,-4030,-5630,-2898, 2540, -306, 2939, 1986), ( 89948, 2103, 8963, 2695, 3682, 1648, 866, -154, -1963, -283)); //; SLO : array[1..8,1..10] of double=( ( -342, 136, -23, 62, 66, -52, -33, 17, 0, 0), ( 524, -149, -35, 117, 151, 122, -71, -62, 0, 0), ( -105, -137, 258, 35, -116, -88, -112, -80, 0, 0), ( 854, -205, -936, -240, 140, -341, -97, -232, 536, 0), ( -56980, 8016, 1012, 1448,-3024,-3710, 318, 503, 3767, 577), ( 138606,-13478,-4964, 1441,-1319,-1482, 427, 1236, -9167,-1918), ( 71234,-41116, 5334,-4935,-1848, 66, 434,-1748, 3780, -701), ( -47645, 11647, 2166, 3194, 679, 0, -244, -419, -2531, 48)); var // Coefficients for latitude, longitude, radius vector; DL : double; const // 2Pi, deg to radians, arcsec to radians; D2PI= 6.2831853071795864769252867; AS2R=4.848136811095359935899141023579E-6; // Gaussian gravitational constant (exact); GCON=0.01720209895; var I,J : integer; T,DA,DE,DPE,DI,DOM,DMU,ARGA,ARGL,DM : double; begin // Validate the planet number.; if ((NP<1) or (NP > 8)) then {without Pluto, mod Han Kleijn} begin JSTAT:=-1; for I := 1 to 6 do begin PV[I]:=0; end; end else begin // -----------------------; // Mercury through Neptune; // -----------------------; // Time: Julian millennia since J2000.; T:=(DATE-51544.5)/365250; // OK status unless remote epoch.; if (ABS(T)<=1E0) then begin JSTAT:=0; end else begin JSTAT:=1; end; // Compute the mean elements.; DA:=A[NP,1]+(A[NP,2]+A[NP,3]*T)*T; DL:=(3600*DLM[NP,1]+(DLM[NP,2]+DLM[NP,3]*T)*T)*AS2R; DE:=E[NP,1]+(E[NP,2]+E[NP,3]*T)*T; DPE:=MOD2((3600*PI[NP,1]+(PI[NP,2]+PI[NP,3]*T)*T)*AS2R, D2PI); DI:=(3600*DINC[NP,1]+(DINC[NP,2]+DINC[NP,3]*T)*T)*AS2R; DOM:=mod2((3600*OMEGA[NP,1]+(OMEGA[NP,2]+OMEGA[NP,3]*T)*T)*AS2R,D2PI) ; // Apply the trigonometric terms.; DMU:=0.35953620*T; for J := 1 to 8 do begin ARGA:=DKP[NP,J]*DMU; ARGL:=DKQ[NP,J]*DMU; DA:=DA+(CA[NP,J]*COS(ARGA)+SA[NP,J]*SIN(ARGA))*1E-7; DL:=DL+(CLO[NP,J]*COS(ARGL)+SLO[NP,J]*SIN(ARGL))*1E-7; end; ARGA:=DKP[NP,9]*DMU; DA:=DA+T*(CA[NP,9]*COS(ARGA)+SA[NP,9]*SIN(ARGA))*1E-7; for J := 9 to 10 do begin ARGL:=DKQ[NP,J]*DMU; DL:=DL+T*(CLO[NP,J]*COS(ARGL)+SLO[NP,J]*SIN(ARGL))*1E-7; end; DL:=MOD2(DL,D2PI); // Daily motion.; DM:=GCON*SQRT((1+1/AMAS[NP])/(DA*DA*DA)); // Make the prediction; sla_PLANEL(DATE,1,DATE,DI,DOM,DPE,DA,DE,DL,DM,PV,J); if (J<0) then JSTAT:=-2; end; end; //----------------------------------------------------------------------------------------------------------------------------------------------------- procedure orbit(date : double; JFORM : integer; EPOCH : double; ORBINC, ANODE,PERIH, AORQ, E, AORL, DM : double; out PV :r6_array; out JSTAT : integer) ;//Heliocentric position and velocity of a planet, asteroid or comet var U :U_array; begin sla_EL2UE (date{mjd}, JFORM, EPOCH, ORBINC, ANODE,PERIH, AORQ, E, AORL,DM,{out} U , JSTAT); // Determine the position and velocity.; if (Jstat = 0) then begin sla_UE2PV(date{mjd},U,PV,Jstat); if (Jstat<>0) then Jstat:=-5; end; end; //--------------------------------------------------------------------------------------------------------------------------------------------- {*+; * - - - -; * E P V; * - - - -; *; * Earth position and velocity, heliocentric and barycentric, with; * respect to the Barycentric Celestial Reference System. *; * Given:; * DATE d date, TDB Modified Julian Date (Note 1); *; * ed:; * PH d(3) heliocentric Earth position (AU); * VH d(3) heliocentric Earth velocity (AU,AU/day); * PB d(3) barycentric Earth position (AU); * VB d(3) barycentric Earth velocity (AU/day); *; * Notes:; *; * 1) The date is TDB as an MJD (:=JD-2400000.5).0 TT can be used instead; * of TDB in most applications. *; * 2) On , the arrays PH, VH, PV, PB contain the following:; *; * PH(1) x ); * PH(2) y ) heliocentric position, AU; * PH(3) z ); *; * VH[1] xdot ); * VH[2] ydot ) heliocentric velocity, AU/d; * VH[3] zdot ); *; * PB[1] x ); * PB[2] y ) barycentric position, AU; * PB[3] z ); *; * VB[1] xdot ); * VB[2] ydot ) barycentric velocity, AU/d; * VB[3] zdot ); *; * The vectors are with respect to the Barycentric Celestial; * Reference System (BCRS); velocities are in AU per TDB day. *; * 3) The routine is a SIMPLIFIED SOLUTION from the planetary theory; * VSOP2000 (X.0 Moisson, P.0 Bretagnon, 2001, Celes.0 Mechanics &; * Dyn.0 Astron., 80, 3/4, 205-213) and is an adaptation of original; * Fortran code supplied by P.0 Bretagnon (private comm., 2000). *; * 4) Comparisons over the time span 1900-2100 with this simplified; * solution and the JPL DE405 ephemeris give the following results:; *; * RMS max; * Heliocentric:; * position error 3.7 11.2 km; * velocity error 1.4 5.0 mm/s; *; * Barycentric:; * position error 4.6 13.4 km; * velocity error 1.4 4.9 mm/s; *; * The results deteriorate outside this time span. *; * 5) The routine sla_EVP is faster but less accurate.0 The present; * routine targets the case where high accuracy is more important; * than CPU time, yet the extra complication of reading a pre-; * computed ephemeris is not justified. *; * Last revision: 7 April 2005; *; * Copyright P.T.Wallace.0 All rights reserved. *; *; * License:; * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published b; * the Free Software Foundation; either version 2 of the License, or; * (at your option) any later version. *; * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of; * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.0 See the; * GNU General Public License for more details. *; * You should have received a copy of the GNU General Public License; * along with this program (see SLA_CONDITIONS); if not, write to the * Free Software Foundation, Inc., 59 Temple Place, Suite 330, ; * Boston, MA 02111-1307 USA; *; *-----------------------------------------------------------------------;} procedure sla_EPV2 (DATE : double; bary :boolean; out PE, VE : r3_array);// J2000 heliocentric or barycentric Earth position and velocity. Light speed corrected. If bary is false, heliocentric, if true barycentric {* ---------------------- * Ephemeris Coefficients * ---------------------- * * The coefficients are stored in arrays of dimension (3,n,3). There * are separate sets of arrays for (i) the Sun to Earth vector and * (ii) the Solar-System barycenter to Sun vector. Each of these two * sets contains separate arrays for the terms (n in number) in each * power of time (in Julian years since J2000): T^0, T^1 and T^2. * Within each array, all the Cartesian x-components, elements (i,j,1), * appear first, followed by all the y-components, elements (i,j,2) and * finally all the z-components, elements (i,j,3). At the lowest level * are groups of three coefficients. The first coefficient in each * group, element (1,j,k), is the amplitude of the term, the second, * element (2,j,k), is the phase and the third, element (3,j,k), is the * frequency. * * The naming scheme is such that a block * * DOUBLE PRECISION bn(3,Mbn,3) * * applies to body b and time exponent n: * * . b can be either E (Earth with respect to Sun) or S (Sun with * respect to Solar-System Barycenter) * * . n can be 0, 1 or 2, for T^0, T^1 or T^2 * * For example, array E2(3,ME2,3) contains the coefficients for * the T^2 terms for the Sun-to-Earth vector. * * There is no requirement for the X, Y and Z models for a particular * block to use the same number of coefficients. The number actually * used is parameterized, the number of terms being used called NbnX, * NbnY, and NbnZ respectively. The parameter Mbn is the biggest of * the three, and defines the array size. Unused elements are not * initialized and are never accessed. *} {Notes on the Pascal version: In $mode objfpc it is possible to write the coeffcients arrays without zeros so without the unused areas. But the resulting executable is about 20k larger. So the current setup using simple rectangle arrays is more efficient. Furthermore in the Fortran orginal version Heliocentric and Barycentric where always both calculated. In the Pascal version barycentric is only calculated when specified. } const {specify useful range of data the arrays. The remainder of the arrays is filled with zero's} NE0 : array[1..3] of integer =(501,501,137);ME0 =501; NE1 : array[1..3] of integer =( 79, 80, 12);ME1 = 80; NE2 : array[1..3] of integer =( 5, 5, 3);ME2 = 5; NS0 : array[1..3] of integer =(212,213, 69);MS0 =213; NS1 : array[1..3] of integer =( 50, 50, 14);MS1 = 50; NS2 : array[1..3] of integer =( 9, 9, 2);MS2 = 9; const E0: array[1..3,1..ME0,1..3] of double= {501} // Sun-to-Earth, T^0, X // DATA ((E0(I,J,1),I=1,3),J= 1, 10) / ((( 0.9998292878132E+00, 0.1753485171504E+01, 0.6283075850446E+01), ( 0.8352579567414E-02, 0.1710344404582E+01, 0.1256615170089E+02), ( 0.5611445335148E-02, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.1046664295572E-03, 0.1667225416770E+01, 0.1884922755134E+02), ( 0.3110842534677E-04, 0.6687513390251E+00, 0.8399684731857E+02), ( 0.2552413503550E-04, 0.5830637358413E+00, 0.5296909721118E+00), ( 0.2137207845781E-04, 0.1092330954011E+01, 0.1577343543434E+01), ( 0.1680240182951E-04, 0.4955366134987E+00, 0.6279552690824E+01), ( 0.1679012370795E-04, 0.6153014091901E+01, 0.6286599010068E+01), ( 0.1445526946777E-04, 0.3472744100492E+01, 0.2352866153506E+01 ), //DATA ((E0(I,J,1),I=1,3),J= 11, 20)), ( 0.1091038246184E-04, 0.3689845786119E+01, 0.5223693906222E+01), ( 0.9344399733932E-05, 0.6073934645672E+01, 0.1203646072878E+02), ( 0.8993182910652E-05, 0.3175705249069E+01, 0.1021328554739E+02), ( 0.5665546034116E-05, 0.2152484672246E+01, 0.1059381944224E+01), ( 0.6844146703035E-05, 0.1306964099750E+01, 0.5753384878334E+01), ( 0.7346610905565E-05, 0.4354980070466E+01, 0.3981490189893E+00), ( 0.6815396474414E-05, 0.2218229211267E+01, 0.4705732307012E+01), ( 0.6112787253053E-05, 0.5384788425458E+01, 0.6812766822558E+01), ( 0.4518120711239E-05, 0.6087604012291E+01, 0.5884926831456E+01), ( 0.4521963430706E-05, 0.1279424524906E+01, 0.6256777527156E+01), //DATA ((E0(I,J,1),I=1,3),J= 21, 30)), ( 0.4497426764085E-05, 0.5369129144266E+01, 0.6309374173736E+01), ( 0.4062190566959E-05, 0.5436473303367E+00, 0.6681224869435E+01), ( 0.5412193480192E-05, 0.7867838528395E+00, 0.7755226100720E+00), ( 0.5469839049386E-05, 0.1461440311134E+01, 0.1414349524433E+02), ( 0.5205264083477E-05, 0.4432944696116E+01, 0.7860419393880E+01), ( 0.2149759935455E-05, 0.4502237496846E+01, 0.1150676975667E+02), ( 0.2279109618501E-05, 0.1239441308815E+01, 0.7058598460518E+01), ( 0.2259282939683E-05, 0.3272430985331E+01, 0.4694002934110E+01), ( 0.2558950271319E-05, 0.2265471086404E+01, 0.1216800268190E+02), ( 0.2561581447555E-05, 0.1454740653245E+01, 0.7099330490126E+00), //DATA ((E0(I,J,1),I=1,3),J= 31, 40)), ( 0.1781441115440E-05, 0.2962068630206E+01, 0.7962980379786E+00), ( 0.1612005874644E-05, 0.1473255041006E+01, 0.5486777812467E+01), ( 0.1818630667105E-05, 0.3743903293447E+00, 0.6283008715021E+01), ( 0.1818601377529E-05, 0.6274174354554E+01, 0.6283142985870E+01), ( 0.1554475925257E-05, 0.1624110906816E+01, 0.2513230340178E+02), ( 0.2090948029241E-05, 0.5852052276256E+01, 0.1179062909082E+02), ( 0.2000176345460E-05, 0.4072093298513E+01, 0.1778984560711E+02), ( 0.1289535917759E-05, 0.5217019331069E+01, 0.7079373888424E+01), ( 0.1281135307881E-05, 0.4802054538934E+01, 0.3738761453707E+01), ( 0.1518229005692E-05, 0.8691914742502E+00, 0.2132990797783E+00), //DATA ((E0(I,J,1),I=1,3),J= 41, 50)), ( 0.9450128579027E-06, 0.4601859529950E+01, 0.1097707878456E+02), ( 0.7781119494996E-06, 0.1844352816694E+01, 0.8827390247185E+01), ( 0.7733407759912E-06, 0.3582790154750E+01, 0.5507553240374E+01), ( 0.7350644318120E-06, 0.2695277788230E+01, 0.1589072916335E+01), ( 0.6535928827023E-06, 0.3651327986142E+01, 0.1176985366291E+02), ( 0.6324624183656E-06, 0.2241302375862E+01, 0.6262300422539E+01), ( 0.6298565300557E-06, 0.4407122406081E+01, 0.6303851278352E+01), ( 0.8587037089179E-06, 0.3024307223119E+01, 0.1672837615881E+03), ( 0.8299954491035E-06, 0.6192539428237E+01, 0.3340612434717E+01), ( 0.6311263503401E-06, 0.2014758795416E+01, 0.7113454667900E-02), //DATA ((E0(I,J,1),I=1,3),J= 51, 60)), ( 0.6005646745452E-06, 0.3399500503397E+01, 0.4136910472696E+01), ( 0.7917715109929E-06, 0.2493386877837E+01, 0.6069776770667E+01), ( 0.7556958099685E-06, 0.4159491740143E+01, 0.6496374930224E+01), ( 0.6773228244949E-06, 0.4034162934230E+01, 0.9437762937313E+01), ( 0.5370708577847E-06, 0.1562219163734E+01, 0.1194447056968E+01), ( 0.5710804266203E-06, 0.2662730803386E+01, 0.6282095334605E+01), ( 0.5709824583726E-06, 0.3985828430833E+01, 0.6284056366286E+01), ( 0.5143950896447E-06, 0.1308144688689E+01, 0.6290189305114E+01), ( 0.5088010604546E-06, 0.5352817214804E+01, 0.6275962395778E+01), ( 0.4960369085172E-06, 0.2644267922349E+01, 0.6127655567643E+01), //DATA ((E0(I,J,1),I=1,3),J= 61, 70)), ( 0.4803137891183E-06, 0.4008844192080E+01, 0.6438496133249E+01), ( 0.5731747768225E-06, 0.3794550174597E+01, 0.3154687086868E+01), ( 0.4735947960579E-06, 0.6107118308982E+01, 0.3128388763578E+01), ( 0.4808348796625E-06, 0.4771458618163E+01, 0.8018209333619E+00), ( 0.4115073743137E-06, 0.3327111335159E+01, 0.8429241228195E+01), ( 0.5230575889287E-06, 0.5305708551694E+01, 0.1336797263425E+02), ( 0.5133977889215E-06, 0.5784230738814E+01, 0.1235285262111E+02), ( 0.5065815825327E-06, 0.2052064793679E+01, 0.1185621865188E+02), ( 0.4339831593868E-06, 0.3644994195830E+01, 0.1726015463500E+02), ( 0.3952928638953E-06, 0.4930376436758E+01, 0.5481254917084E+01), //DATA ((E0(I,J,1),I=1,3),J= 71, 80)), ( 0.4898498111942E-06, 0.4542084219731E+00, 0.9225539266174E+01), ( 0.4757490209328E-06, 0.3161126388878E+01, 0.5856477690889E+01), ( 0.4727701669749E-06, 0.6214993845446E+00, 0.2544314396739E+01), ( 0.3800966681863E-06, 0.3040132339297E+01, 0.4265981595566E+00), ( 0.3257301077939E-06, 0.8064977360087E+00, 0.3930209696940E+01), ( 0.3255810528674E-06, 0.1974147981034E+01, 0.2146165377750E+01), ( 0.3252029748187E-06, 0.2845924913135E+01, 0.4164311961999E+01), ( 0.3255505635308E-06, 0.3017900824120E+01, 0.5088628793478E+01), ( 0.2801345211990E-06, 0.6109717793179E+01, 0.1256967486051E+02), ( 0.3688987740970E-06, 0.2911550235289E+01, 0.1807370494127E+02), //DATA ((E0(I,J,1),I=1,3),J= 81, 90)), ( 0.2475153429458E-06, 0.2179146025856E+01, 0.2629832328990E-01), ( 0.3033457749150E-06, 0.1994161050744E+01, 0.4535059491685E+01), ( 0.2186743763110E-06, 0.5125687237936E+01, 0.1137170464392E+02), ( 0.2764777032774E-06, 0.4822646860252E+00, 0.1256262854127E+02), ( 0.2199028768592E-06, 0.4637633293831E+01, 0.1255903824622E+02), ( 0.2046482824760E-06, 0.1467038733093E+01, 0.7084896783808E+01), ( 0.2611209147507E-06, 0.3044718783485E+00, 0.7143069561767E+02), ( 0.2286079656818E-06, 0.4764220356805E+01, 0.8031092209206E+01), ( 0.1855071202587E-06, 0.3383637774428E+01, 0.1748016358760E+01), ( 0.2324669506784E-06, 0.6189088449251E+01, 0.1831953657923E+02), //DATA ((E0(I,J,1),I=1,3),J= 91,100)), ( 0.1709528015688E-06, 0.5874966729774E+00, 0.4933208510675E+01), ( 0.2168156875828E-06, 0.4302994009132E+01, 0.1044738781244E+02), ( 0.2106675556535E-06, 0.3800475419891E+01, 0.7477522907414E+01), ( 0.1430213830465E-06, 0.1294660846502E+01, 0.2942463415728E+01), ( 0.1388396901944E-06, 0.4594797202114E+01, 0.8635942003952E+01), ( 0.1922258844190E-06, 0.4943044543591E+00, 0.1729818233119E+02), ( 0.1888460058292E-06, 0.2426943912028E+01, 0.1561374759853E+03), ( 0.1789449386107E-06, 0.1582973303499E+00, 0.1592596075957E+01), ( 0.1360803685374E-06, 0.5197240440504E+01, 0.1309584267300E+02), ( 0.1504038014709E-06, 0.3120360916217E+01, 0.1649636139783E+02), //DATA ((E0(I,J,1),I=1,3),J=101,110)), ( 0.1382769533389E-06, 0.6164702888205E+01, 0.7632943190217E+01), ( 0.1438059769079E-06, 0.1437423770979E+01, 0.2042657109477E+02), ( 0.1326303260037E-06, 0.3609688799679E+01, 0.1213955354133E+02), ( 0.1159244950540E-06, 0.5463018167225E+01, 0.5331357529664E+01), ( 0.1433118149136E-06, 0.6028909912097E+01, 0.7342457794669E+01), ( 0.1234623148594E-06, 0.3109645574997E+01, 0.6279485555400E+01), ( 0.1233949875344E-06, 0.3539359332866E+01, 0.6286666145492E+01), ( 0.9927196061299E-07, 0.1259321569772E+01, 0.7234794171227E+01), ( 0.1242302191316E-06, 0.1065949392609E+01, 0.1511046609763E+02), ( 0.1098402195201E-06, 0.2192508743837E+01, 0.1098880815746E+02), //DATA ((E0(I,J,1),I=1,3),J=111,120)), ( 0.1158191395315E-06, 0.4054411278650E+01, 0.5729506548653E+01), ( 0.9048475596241E-07, 0.5429764748518E+01, 0.9623688285163E+01), ( 0.8889853269023E-07, 0.5046586206575E+01, 0.6148010737701E+01), ( 0.1048694242164E-06, 0.2628858030806E+01, 0.6836645152238E+01), ( 0.1112308378646E-06, 0.4177292719907E+01, 0.1572083878776E+02), ( 0.8631729709901E-07, 0.1601345232557E+01, 0.6418140963190E+01), ( 0.8527816951664E-07, 0.2463888997513E+01, 0.1471231707864E+02), ( 0.7892139456991E-07, 0.3154022088718E+01, 0.2118763888447E+01), ( 0.1051782905236E-06, 0.4795035816088E+01, 0.1349867339771E+01), ( 0.1048219943164E-06, 0.2952983395230E+01, 0.5999216516294E+01), //DATA ((E0(I,J,1),I=1,3),J=121,130)), ( 0.7435760775143E-07, 0.5420547991464E+01, 0.6040347114260E+01), ( 0.9869574106949E-07, 0.3695646753667E+01, 0.6566935184597E+01), ( 0.9156886364226E-07, 0.3922675306609E+01, 0.5643178611111E+01), ( 0.7006834356188E-07, 0.1233968624861E+01, 0.6525804586632E+01), ( 0.9806170182601E-07, 0.1919542280684E+01, 0.2122839202813E+02), ( 0.9052289673607E-07, 0.4615902724369E+01, 0.4690479774488E+01), ( 0.7554200867893E-07, 0.1236863719072E+01, 0.1253985337760E+02), ( 0.8215741286498E-07, 0.3286800101559E+00, 0.1097355562493E+02), ( 0.7185178575397E-07, 0.5880942158367E+01, 0.6245048154254E+01), ( 0.7130726476180E-07, 0.7674871987661E+00, 0.6321103546637E+01), //DATA ((E0(I,J,1),I=1,3),J=131,140)), ( 0.6650894461162E-07, 0.6987129150116E+00, 0.5327476111629E+01), ( 0.7396888823688E-07, 0.3576824794443E+01, 0.5368044267797E+00), ( 0.7420588884775E-07, 0.5033615245369E+01, 0.2354323048545E+02), ( 0.6141181642908E-07, 0.9449927045673E+00, 0.1296430071988E+02), ( 0.6373557924058E-07, 0.6206342280341E+01, 0.9517183207817E+00), ( 0.6359474329261E-07, 0.5036079095757E+01, 0.1990745094947E+01), ( 0.5740173582646E-07, 0.6105106371350E+01, 0.9555997388169E+00), ( 0.7019864084602E-07, 0.7237747359018E+00, 0.5225775174439E+00), ( 0.6398054487042E-07, 0.3976367969666E+01, 0.2407292145756E+02), ( 0.7797092650498E-07, 0.4305423910623E+01, 0.2200391463820E+02), //DATA ((E0(I,J,1),I=1,3),J=141,150)), ( 0.6466760000900E-07, 0.3500136825200E+01, 0.5230807360890E+01), ( 0.7529417043890E-07, 0.3514779246100E+01, 0.1842262939178E+02), ( 0.6924571140892E-07, 0.2743457928679E+01, 0.1554202828031E+00), ( 0.6220798650222E-07, 0.2242598118209E+01, 0.1845107853235E+02), ( 0.5870209391853E-07, 0.2332832707527E+01, 0.6398972393349E+00), ( 0.6263953473888E-07, 0.2191105358956E+01, 0.6277552955062E+01), ( 0.6257781390012E-07, 0.4457559396698E+01, 0.6288598745829E+01), ( 0.5697304945123E-07, 0.3499234761404E+01, 0.1551045220144E+01), ( 0.6335438746791E-07, 0.6441691079251E+00, 0.5216580451554E+01), ( 0.6377258441152E-07, 0.2252599151092E+01, 0.5650292065779E+01), //DATA ((E0(I,J,1),I=1,3),J=151,160)), ( 0.6484841818165E-07, 0.1992812417646E+01, 0.1030928125552E+00), ( 0.4735551485250E-07, 0.3744672082942E+01, 0.1431416805965E+02), ( 0.4628595996170E-07, 0.1334226211745E+01, 0.5535693017924E+00), ( 0.6258152336933E-07, 0.4395836159154E+01, 0.2608790314060E+02), ( 0.6196171366594E-07, 0.2587043007997E+01, 0.8467247584405E+02), ( 0.6159556952126E-07, 0.4782499769128E+01, 0.2394243902548E+03), ( 0.4987741172394E-07, 0.7312257619924E+00, 0.7771377146812E+02), ( 0.5459280703142E-07, 0.3001376372532E+01, 0.6179983037890E+01), ( 0.4863461189999E-07, 0.3767222128541E+01, 0.9027992316901E+02), ( 0.5349912093158E-07, 0.3663594450273E+01, 0.6386168663001E+01), //DATA ((E0(I,J,1),I=1,3),J=161,170)), ( 0.5673725607806E-07, 0.4331187919049E+01, 0.6915859635113E+01), ( 0.4745485060512E-07, 0.5816195745518E+01, 0.6282970628506E+01), ( 0.4745379005326E-07, 0.8323672435672E+00, 0.6283181072386E+01), ( 0.4049002796321E-07, 0.3785023976293E+01, 0.6254626709878E+01), ( 0.4247084014515E-07, 0.2378220728783E+01, 0.7875671926403E+01), ( 0.4026912363055E-07, 0.2864103423269E+01, 0.6311524991013E+01), ( 0.4062935011774E-07, 0.2415408595975E+01, 0.3634620989887E+01), ( 0.5347771048509E-07, 0.3343479309801E+01, 0.2515860172507E+02), ( 0.4829494136505E-07, 0.2821742398262E+01, 0.5760498333002E+01), ( 0.4342554404599E-07, 0.5624662458712E+01, 0.7238675589263E+01), //DATA ((E0(I,J,1),I=1,3),J=171,180)), ( 0.4021599184361E-07, 0.5557250275009E+00, 0.1101510648075E+02), ( 0.4104900474558E-07, 0.3296691780005E+01, 0.6709674010002E+01), ( 0.4376532905131E-07, 0.3814443999443E+01, 0.6805653367890E+01), ( 0.3314590480650E-07, 0.3560229189250E+01, 0.1259245002418E+02), ( 0.3232421839643E-07, 0.5185389180568E+01, 0.1066495398892E+01), ( 0.3541176318876E-07, 0.3921381909679E+01, 0.9917696840332E+01), ( 0.3689831242681E-07, 0.4190658955386E+01, 0.1192625446156E+02), ( 0.3890605376774E-07, 0.5546023371097E+01, 0.7478166569050E-01), ( 0.3038559339780E-07, 0.6231032794494E+01, 0.1256621883632E+02), ( 0.3137083969782E-07, 0.6207063419190E+01, 0.4292330755499E+01), //DATA ((E0(I,J,1),I=1,3),J=181,190)), ( 0.4024004081854E-07, 0.1195257375713E+01, 0.1334167431096E+02), ( 0.3300234879283E-07, 0.1804694240998E+01, 0.1057540660594E+02), ( 0.3635399155575E-07, 0.5597811343500E+01, 0.6208294184755E+01), ( 0.3032668691356E-07, 0.3191059366530E+01, 0.1805292951336E+02), ( 0.2809652069058E-07, 0.4094348032570E+01, 0.3523159621801E-02), ( 0.3696955383823E-07, 0.5219282738794E+01, 0.5966683958112E+01), ( 0.3562894142503E-07, 0.1037247544554E+01, 0.6357857516136E+01), ( 0.3510598524148E-07, 0.1430020816116E+01, 0.6599467742779E+01), ( 0.3617736142953E-07, 0.3002911403677E+01, 0.6019991944201E+01), ( 0.2624524910730E-07, 0.2437046757292E+01, 0.6702560555334E+01), //DATA ((E0(I,J,1),I=1,3),J=191,200)), ( 0.2535824204490E-07, 0.1581594689647E+01, 0.3141537925223E+02), ( 0.3519787226257E-07, 0.5379863121521E+01, 0.2505706758577E+03), ( 0.2578406709982E-07, 0.4904222639329E+01, 0.1673046366289E+02), ( 0.3423887981473E-07, 0.3646448997315E+01, 0.6546159756691E+01), ( 0.2776083886467E-07, 0.3307829300144E+01, 0.1272157198369E+02), ( 0.3379592818379E-07, 0.1747541251125E+01, 0.1494531617769E+02), ( 0.3050255426284E-07, 0.1784689432607E-01, 0.4732030630302E+01), ( 0.2652378350236E-07, 0.4420055276260E+01, 0.5863591145557E+01), ( 0.2374498173768E-07, 0.3629773929208E+01, 0.2388894113936E+01), ( 0.2716451255140E-07, 0.3079623706780E+01, 0.1202934727411E+02), //DATA ((E0(I,J,1),I=1,3),J=201,210)), ( 0.3038583699229E-07, 0.3312487903507E+00, 0.1256608456547E+02), ( 0.2220681228760E-07, 0.5265520401774E+01, 0.1336244973887E+02), ( 0.3044156540912E-07, 0.4766664081250E+01, 0.2908881142201E+02), ( 0.2731859923561E-07, 0.5069146530691E+01, 0.1391601904066E+02), ( 0.2285603018171E-07, 0.5954935112271E+01, 0.6076890225335E+01), ( 0.2025006454555E-07, 0.4061789589267E+01, 0.4701116388778E+01), ( 0.2012597519804E-07, 0.2485047705241E+01, 0.6262720680387E+01), ( 0.2003406962258E-07, 0.4163779209320E+01, 0.6303431020504E+01), ( 0.2207863441371E-07, 0.6923839133828E+00, 0.6489261475556E+01), ( 0.2481374305624E-07, 0.5944173595676E+01, 0.1204357418345E+02), //DATA ((E0(I,J,1),I=1,3),J=211,220)), ( 0.2130923288870E-07, 0.4641013671967E+01, 0.5746271423666E+01), ( 0.2446370543391E-07, 0.6125796518757E+01, 0.1495633313810E+00), ( 0.1932492759052E-07, 0.2234572324504E+00, 0.1352175143971E+02), ( 0.2600122568049E-07, 0.4281012405440E+01, 0.4590910121555E+01), ( 0.2431754047488E-07, 0.1429943874870E+00, 0.1162474756779E+01), ( 0.1875902869209E-07, 0.9781803816948E+00, 0.6279194432410E+01), ( 0.1874381139426E-07, 0.5670368130173E+01, 0.6286957268481E+01), ( 0.2156696047173E-07, 0.2008985006833E+01, 0.1813929450232E+02), ( 0.1965076182484E-07, 0.2566186202453E+00, 0.4686889479442E+01), ( 0.2334816372359E-07, 0.4408121891493E+01, 0.1002183730415E+02), //DATA ((E0(I,J,1),I=1,3),J=221,230)), ( 0.1869937408802E-07, 0.5272745038656E+01, 0.2427287361862E+00), ( 0.2436236460883E-07, 0.4407720479029E+01, 0.9514313292143E+02), ( 0.1761365216611E-07, 0.1943892315074E+00, 0.1351787002167E+02), ( 0.2156289480503E-07, 0.1418570924545E+01, 0.6037244212485E+01), ( 0.2164748979255E-07, 0.4724603439430E+01, 0.2301353951334E+02), ( 0.2222286670853E-07, 0.2400266874598E+01, 0.1266924451345E+02), ( 0.2070901414929E-07, 0.5230348028732E+01, 0.6528907488406E+01), ( 0.1792745177020E-07, 0.2099190328945E+01, 0.6819880277225E+01), ( 0.1841802068445E-07, 0.3467527844848E+00, 0.6514761976723E+02), ( 0.1578401631718E-07, 0.7098642356340E+00, 0.2077542790660E-01), //DATA ((E0(I,J,1),I=1,3),J=231,240)), ( 0.1561690152531E-07, 0.5943349620372E+01, 0.6272439236156E+01), ( 0.1558591045463E-07, 0.7040653478980E+00, 0.6293712464735E+01), ( 0.1737356469576E-07, 0.4487064760345E+01, 0.1765478049437E+02), ( 0.1434755619991E-07, 0.2993391570995E+01, 0.1102062672231E+00), ( 0.1482187806654E-07, 0.2278049198251E+01, 0.1052268489556E+01), ( 0.1424812827089E-07, 0.1682114725827E+01, 0.1311972100268E+02), ( 0.1380282448623E-07, 0.3262668602579E+01, 0.1017725758696E+02), ( 0.1811481244566E-07, 0.3187771221777E+01, 0.1887552587463E+02), ( 0.1504446185696E-07, 0.5650162308647E+01, 0.7626583626240E-01), ( 0.1740776154137E-07, 0.5487068607507E+01, 0.1965104848470E+02), //DATA ((E0(I,J,1),I=1,3),J=241,250)), ( 0.1374339536251E-07, 0.5745688172201E+01, 0.6016468784579E+01), ( 0.1761377477704E-07, 0.5748060203659E+01, 0.2593412433514E+02), ( 0.1535138225795E-07, 0.6226848505790E+01, 0.9411464614024E+01), ( 0.1788140543676E-07, 0.6189318878563E+01, 0.3301902111895E+02), ( 0.1375002807996E-07, 0.5371812884394E+01, 0.6327837846670E+00), ( 0.1242115758632E-07, 0.1471687569712E+01, 0.3894181736510E+01), ( 0.1450977333938E-07, 0.4143836662127E+01, 0.1277945078067E+02), ( 0.1297579575023E-07, 0.9003477661957E+00, 0.6549682916313E+01), ( 0.1462667934821E-07, 0.5760505536428E+01, 0.1863592847156E+02), ( 0.1381774374799E-07, 0.1085471729463E+01, 0.2379164476796E+01), //DATA ((E0(I,J,1),I=1,3),J=251,260)), ( 0.1682333169307E-07, 0.5409870870133E+01, 0.1620077269078E+02), ( 0.1190812918837E-07, 0.1397205174601E+01, 0.1149965630200E+02), ( 0.1221434762106E-07, 0.9001804809095E+00, 0.1257326515556E+02), ( 0.1549934644860E-07, 0.4262528275544E+01, 0.1820933031200E+02), ( 0.1252138953050E-07, 0.1411642012027E+01, 0.6993008899458E+01), ( 0.1237078905387E-07, 0.2844472403615E+01, 0.2435678079171E+02), ( 0.1446953389615E-07, 0.5295835522223E+01, 0.3813291813120E-01), ( 0.1388446457170E-07, 0.4969428135497E+01, 0.2458316379602E+00), ( 0.1019339179228E-07, 0.2491369561806E+01, 0.6112403035119E+01), ( 0.1258880815343E-07, 0.4679426248976E+01, 0.5429879531333E+01), //DATA ((E0(I,J,1),I=1,3),J=261,270)), ( 0.1297768238261E-07, 0.1074509953328E+01, 0.1249137003520E+02), ( 0.9913505718094E-08, 0.4735097918224E+01, 0.6247047890016E+01), ( 0.9830453155969E-08, 0.4158649187338E+01, 0.6453748665772E+01), ( 0.1192615865309E-07, 0.3438208613699E+01, 0.6290122169689E+01), ( 0.9835874798277E-08, 0.1913300781229E+01, 0.6319103810876E+01), ( 0.9639087569277E-08, 0.9487683644125E+00, 0.8273820945392E+01), ( 0.1175716107001E-07, 0.3228141664287E+01, 0.6276029531202E+01), ( 0.1018926508678E-07, 0.2216607854300E+01, 0.1254537627298E+02), ( 0.9500087869225E-08, 0.2625116459733E+01, 0.1256517118505E+02), ( 0.9664192916575E-08, 0.5860562449214E+01, 0.6259197520765E+01), //DATA ((E0(I,J,1),I=1,3),J=271,280)), ( 0.9612858712203E-08, 0.7885682917381E+00, 0.6306954180126E+01), ( 0.1117645675413E-07, 0.3932148831189E+01, 0.1779695906178E+02), ( 0.1158864052160E-07, 0.9995605521691E+00, 0.1778273215245E+02), ( 0.9021043467028E-08, 0.5263769742673E+01, 0.6172869583223E+01), ( 0.8836134773563E-08, 0.1496843220365E+01, 0.1692165728891E+01), ( 0.1045872200691E-07, 0.7009039517214E+00, 0.2204125344462E+00), ( 0.1211463487798E-07, 0.4041544938511E+01, 0.8257698122054E+02), ( 0.8541990804094E-08, 0.1447586692316E+01, 0.6393282117669E+01), ( 0.1038720703636E-07, 0.4594249718112E+00, 0.1550861511662E+02), ( 0.1126722351445E-07, 0.3925550579036E+01, 0.2061856251104E+00), //DATA ((E0(I,J,1),I=1,3),J=281,290)), ( 0.8697373859631E-08, 0.4411341856037E+01, 0.9491756770005E+00), ( 0.8869380028441E-08, 0.2402659724813E+01, 0.3903911373650E+01), ( 0.9247014693258E-08, 0.1401579743423E+01, 0.6267823317922E+01), ( 0.9205062930950E-08, 0.5245978000814E+01, 0.6298328382969E+01), ( 0.8000745038049E-08, 0.3590803356945E+01, 0.2648454860559E+01), ( 0.9168973650819E-08, 0.2470150501679E+01, 0.1498544001348E+03), ( 0.1075444949238E-07, 0.1328606161230E+01, 0.3694923081589E+02), ( 0.7817298525817E-08, 0.6162256225998E+01, 0.4804209201333E+01), ( 0.9541469226356E-08, 0.3942568967039E+01, 0.1256713221673E+02), ( 0.9821910122027E-08, 0.2360246287233E+00, 0.1140367694411E+02), //DATA ((E0(I,J,1),I=1,3),J=291,300)), ( 0.9897822023777E-08, 0.4619805634280E+01, 0.2280573557157E+02), ( 0.7737289283765E-08, 0.3784727847451E+01, 0.7834121070590E+01), ( 0.9260204034710E-08, 0.2223352487601E+01, 0.2787043132925E+01), ( 0.7320252888486E-08, 0.1288694636874E+01, 0.6282655592598E+01), ( 0.7319785780946E-08, 0.5359869567774E+01, 0.6283496108294E+01), ( 0.7147219933778E-08, 0.5516616675856E+01, 0.1725663147538E+02), ( 0.7946502829878E-08, 0.2630459984567E+01, 0.1241073141809E+02), ( 0.9001711808932E-08, 0.2849815827227E+01, 0.6281591679874E+01), ( 0.8994041507257E-08, 0.3795244450750E+01, 0.6284560021018E+01), ( 0.8298582787358E-08, 0.5236413127363E+00, 0.1241658836951E+02), //DATA ((E0(I,J,1),I=1,3),J=301,310)), ( 0.8526596520710E-08, 0.4794605424426E+01, 0.1098419223922E+02), ( 0.8209822103197E-08, 0.1578752370328E+01, 0.1096996532989E+02), ( 0.6357049861094E-08, 0.5708926113761E+01, 0.1596186371003E+01), ( 0.7370473179049E-08, 0.3842402530241E+01, 0.4061219149443E+01), ( 0.7232154664726E-08, 0.3067548981535E+01, 0.1610006857377E+03), ( 0.6328765494903E-08, 0.1313930030069E+01, 0.1193336791622E+02), ( 0.8030064908595E-08, 0.3488500408886E+01, 0.8460828644453E+00), ( 0.6275464259232E-08, 0.1532061626198E+01, 0.8531963191132E+00), ( 0.7051897446325E-08, 0.3285859929993E+01, 0.5849364236221E+01), ( 0.6161593705428E-08, 0.1477341999464E+01, 0.5573142801433E+01), //DATA ((E0(I,J,1),I=1,3),J=311,320)), ( 0.7754683957278E-08, 0.1586118663096E+01, 0.8662240327241E+01), ( 0.5889928990701E-08, 0.1304887868803E+01, 0.1232342296471E+02), ( 0.5705756047075E-08, 0.4555333589350E+01, 0.1258692712880E+02), ( 0.5964178808332E-08, 0.3001762842062E+01, 0.5333900173445E+01), ( 0.6712446027467E-08, 0.4886780007595E+01, 0.1171295538178E+02), ( 0.5941809275464E-08, 0.4701509603824E+01, 0.9779108567966E+01), ( 0.5466993627395E-08, 0.4588357817278E+01, 0.1884211409667E+02), ( 0.6340512090980E-08, 0.1164543038893E+01, 0.5217580628120E+02), ( 0.6325505710045E-08, 0.3919171259645E+01, 0.1041998632314E+02), ( 0.6164789509685E-08, 0.2143828253542E+01, 0.6151533897323E+01), //DATA ((E0(I,J,1),I=1,3),J=321,330)), ( 0.5263330812430E-08, 0.6066564434241E+01, 0.1885275071096E+02), ( 0.5597087780221E-08, 0.2926316429472E+01, 0.4337116142245E+00), ( 0.5396556236817E-08, 0.3244303591505E+01, 0.6286362197481E+01), ( 0.5396615148223E-08, 0.3404304703662E+01, 0.6279789503410E+01), ( 0.7091832443341E-08, 0.8532377803192E+00, 0.4907302013889E+01), ( 0.6572352589782E-08, 0.4901966774419E+01, 0.1176433076753E+02), ( 0.5960236060795E-08, 0.1874672315797E+01, 0.1422690933580E-01), ( 0.5125480043511E-08, 0.3735726064334E+01, 0.1245594543367E+02), ( 0.5928241866410E-08, 0.4502033899935E+01, 0.6414617803568E+01), ( 0.5249600357424E-08, 0.4372334799878E+01, 0.1151388321134E+02), //DATA ((E0(I,J,1),I=1,3),J=331,340)), ( 0.6059171276087E-08, 0.2581617302908E+01, 0.6062663316000E+01), ( 0.5295235081662E-08, 0.2974811513158E+01, 0.3496032717521E+01), ( 0.5820561875933E-08, 0.1796073748244E+00, 0.2838593341516E+00), ( 0.4754696606440E-08, 0.1981998136973E+01, 0.3104930017775E+01), ( 0.6385053548955E-08, 0.2559174171605E+00, 0.6133512519065E+01), ( 0.6589828273941E-08, 0.2750967106776E+01, 0.4087944051283E+02), ( 0.5383376567189E-08, 0.6325947523578E+00, 0.2248384854122E+02), ( 0.5928941683538E-08, 0.1672304519067E+01, 0.1581959461667E+01), ( 0.4816060709794E-08, 0.3512566172575E+01, 0.9388005868221E+01), ( 0.6003381586512E-08, 0.5610932219189E+01, 0.5326786718777E+01), //DATA ((E0(I,J,1),I=1,3),J=341,350)), ( 0.5504225393105E-08, 0.4037501131256E+01, 0.6503488384892E+01), ( 0.5353772620129E-08, 0.6122774968240E+01, 0.1735668374386E+03), ( 0.5786253768544E-08, 0.5527984999515E+01, 0.1350651127443E+00), ( 0.5065706702002E-08, 0.9980765573624E+00, 0.1248988586463E+02), ( 0.5972838885276E-08, 0.6044489493203E+01, 0.2673594526851E+02), ( 0.5323585877961E-08, 0.3924265998147E+01, 0.4171425416666E+01), ( 0.5210772682858E-08, 0.6220111376901E+01, 0.2460261242967E+02), ( 0.4726549040535E-08, 0.3716043206862E+01, 0.7232251527446E+01), ( 0.6029425105059E-08, 0.8548704071116E+00, 0.3227113045244E+03), ( 0.4481542826513E-08, 0.1426925072829E+01, 0.5547199253223E+01), //DATA ((E0(I,J,1),I=1,3),J=351,360)), ( 0.5836024505068E-08, 0.7135651752625E-01, 0.7285056171570E+02), ( 0.4137046613272E-08, 0.5330767643283E+01, 0.1087398597200E+02), ( 0.5171977473924E-08, 0.4494262335353E+00, 0.1884570439172E+02), ( 0.5694429833732E-08, 0.2952369582215E+01, 0.9723862754494E+02), ( 0.4009158925298E-08, 0.3500003416535E+01, 0.6244942932314E+01), ( 0.4784939596873E-08, 0.6196709413181E+01, 0.2929661536378E+02), ( 0.3983725022610E-08, 0.5103690031897E+01, 0.4274518229222E+01), ( 0.3870535232462E-08, 0.3187569587401E+01, 0.6321208768577E+01), ( 0.5140501213951E-08, 0.1668924357457E+01, 0.1232032006293E+02), ( 0.3849034819355E-08, 0.4445722510309E+01, 0.1726726808967E+02), //DATA ((E0(I,J,1),I=1,3),J=361,370)), ( 0.4002383075060E-08, 0.5226224152423E+01, 0.7018952447668E+01), ( 0.3890719543549E-08, 0.4371166550274E+01, 0.1491901785440E+02), ( 0.4887084607881E-08, 0.5973556689693E+01, 0.1478866649112E+01), ( 0.3739939287592E-08, 0.2089084714600E+01, 0.6922973089781E+01), ( 0.5031925918209E-08, 0.4658371936827E+01, 0.1715706182245E+02), ( 0.4387748764954E-08, 0.4825580552819E+01, 0.2331413144044E+03), ( 0.4147398098865E-08, 0.3739003524998E+01, 0.1376059875786E+02), ( 0.3719089993586E-08, 0.1148941386536E+01, 0.6297302759782E+01), ( 0.3934238461056E-08, 0.1559893008343E+01, 0.7872148766781E+01), ( 0.3672471375622E-08, 0.5516145383612E+01, 0.6268848941110E+01), //DATA ((E0(I,J,1),I=1,3),J=371,380)), ( 0.3768911277583E-08, 0.6116053700563E+01, 0.4157198507331E+01), ( 0.4033388417295E-08, 0.5076821746017E+01, 0.1567108171867E+02), ( 0.3764194617832E-08, 0.8164676232075E+00, 0.3185192151914E+01), ( 0.4840628226284E-08, 0.1360479453671E+01, 0.1252801878276E+02), ( 0.4949443923785E-08, 0.2725622229926E+01, 0.1617106187867E+03), ( 0.4117393089971E-08, 0.6054459628492E+00, 0.5642198095270E+01), ( 0.3925754020428E-08, 0.8570462135210E+00, 0.2139354194808E+02), ( 0.3630551757923E-08, 0.3552067338279E+01, 0.6294805223347E+01), ( 0.3627274802357E-08, 0.3096565085313E+01, 0.6271346477544E+01), ( 0.3806143885093E-08, 0.6367751709777E+00, 0.1725304118033E+02), //DATA ((E0(I,J,1),I=1,3),J=381,390)), ( 0.4433254641565E-08, 0.4848461503937E+01, 0.7445550607224E+01), ( 0.3712319846576E-08, 0.1331950643655E+01, 0.4194847048887E+00), ( 0.3849847534783E-08, 0.4958368297746E+00, 0.9562891316684E+00), ( 0.3483955430165E-08, 0.2237215515707E+01, 0.1161697602389E+02), ( 0.3961912730982E-08, 0.3332402188575E+01, 0.2277943724828E+02), ( 0.3419978244481E-08, 0.5785600576016E+01, 0.1362553364512E+02), ( 0.3329417758177E-08, 0.9812676559709E-01, 0.1685848245639E+02), ( 0.4207206893193E-08, 0.9494780468236E+00, 0.2986433403208E+02), ( 0.3268548976410E-08, 0.1739332095686E+00, 0.5749861718712E+01), ( 0.3321880082685E-08, 0.1423354800666E+01, 0.6279143387820E+01), //DATA ((E0(I,J,1),I=1,3),J=391,400)), ( 0.4503173010852E-08, 0.2314972675293E+00, 0.1385561574497E+01), ( 0.4316599090954E-08, 0.1012646782616E+00, 0.4176041334900E+01), ( 0.3283493323850E-08, 0.5233306881265E+01, 0.6287008313071E+01), ( 0.3164033542343E-08, 0.4005597257511E+01, 0.2099539292909E+02), ( 0.4159720956725E-08, 0.5365676242020E+01, 0.5905702259363E+01), ( 0.3565176892217E-08, 0.4284440620612E+01, 0.3932462625300E-02), ( 0.3514440950221E-08, 0.4270562636575E+01, 0.7335344340001E+01), ( 0.3540596871909E-08, 0.5953553201060E+01, 0.1234573916645E+02), ( 0.2960769905118E-08, 0.1115180417718E+01, 0.2670964694522E+02), ( 0.2962213739684E-08, 0.3863811918186E+01, 0.6408777551755E+00), //DATA ((E0(I,J,1),I=1,3),J=401,410)), ( 0.3883556700251E-08, 0.1268617928302E+01, 0.6660449441528E+01), ( 0.2919225516346E-08, 0.4908605223265E+01, 0.1375773836557E+01), ( 0.3115158863370E-08, 0.3744519976885E+01, 0.3802769619140E-01), ( 0.4099438144212E-08, 0.4173244670532E+01, 0.4480965020977E+02), ( 0.2899531858964E-08, 0.5910601428850E+01, 0.2059724391010E+02), ( 0.3289733429855E-08, 0.2488050078239E+01, 0.1081813534213E+02), ( 0.3933075612875E-08, 0.1122363652883E+01, 0.3773735910827E+00), ( 0.3021403764467E-08, 0.4951973724904E+01, 0.2982630633589E+02), ( 0.2798598949757E-08, 0.5117057845513E+01, 0.1937891852345E+02), ( 0.3397421302707E-08, 0.6104159180476E+01, 0.6923953605621E+01), //DATA ((E0(I,J,1),I=1,3),J=411,420)), ( 0.3720398002179E-08, 0.1184933429829E+01, 0.3066615496545E+02), ( 0.3598484186267E-08, 0.3505282086105E+01, 0.6147450479709E+01), ( 0.3694594027310E-08, 0.2286651088141E+01, 0.2636725487657E+01), ( 0.2680444152969E-08, 0.1871816775482E+00, 0.6816289982179E+01), ( 0.3497574865641E-08, 0.3143251755431E+01, 0.6418701221183E+01), ( 0.3130274129494E-08, 0.2462167316018E+01, 0.1235996607578E+02), ( 0.3241119069551E-08, 0.4256374004686E+01, 0.1652265972112E+02), ( 0.2601960842061E-08, 0.4970362941425E+01, 0.1045450126711E+02), ( 0.2690601527504E-08, 0.2372657824898E+01, 0.3163918923335E+00), ( 0.2908688152664E-08, 0.4232652627721E+01, 0.2828699048865E+02), //DATA ((E0(I,J,1),I=1,3),J=421,430)), ( 0.3120456131875E-08, 0.3925747001137E+00, 0.2195415756911E+02), ( 0.3148855423384E-08, 0.3093478330445E+01, 0.1172006883645E+02), ( 0.3051044261017E-08, 0.5560948248212E+01, 0.6055599646783E+01), ( 0.2826006876660E-08, 0.5072790310072E+01, 0.5120601093667E+01), ( 0.3100034191711E-08, 0.4998530231096E+01, 0.1799603123222E+02), ( 0.2398771640101E-08, 0.2561739802176E+01, 0.6255674361143E+01), ( 0.2384002842728E-08, 0.4087420284111E+01, 0.6310477339748E+01), ( 0.2842146517568E-08, 0.2515048217955E+01, 0.5469525544182E+01), ( 0.2847674371340E-08, 0.5235326497443E+01, 0.1034429499989E+02), ( 0.2903722140764E-08, 0.1088200795797E+01, 0.6510552054109E+01), //DATA ((E0(I,J,1),I=1,3),J=431,440)), ( 0.3187610710605E-08, 0.4710624424816E+01, 0.1693792562116E+03), ( 0.3048869992813E-08, 0.2857975896445E+00, 0.8390110365991E+01), ( 0.2860216950984E-08, 0.2241619020815E+01, 0.2243449970715E+00), ( 0.2701117683113E-08, 0.6651573305272E-01, 0.6129297044991E+01), ( 0.2509891590152E-08, 0.1285135324585E+01, 0.1044027435778E+02), ( 0.2623200252223E-08, 0.2981229834530E+00, 0.6436854655901E+01), ( 0.2622541669202E-08, 0.6122470726189E+01, 0.9380959548977E+01), ( 0.2818435667099E-08, 0.4251087148947E+01, 0.5934151399930E+01), ( 0.2365196797465E-08, 0.3465070460790E+01, 0.2470570524223E+02), ( 0.2358704646143E-08, 0.5791603815350E+01, 0.8671969964381E+01), //DATA ((E0(I,J,1),I=1,3),J=441,450)), ( 0.2388299481390E-08, 0.4142483772941E+01, 0.7096626156709E+01), ( 0.1996041217224E-08, 0.2101901889496E+01, 0.1727188400790E+02), ( 0.2687593060336E-08, 0.1526689456959E+01, 0.7075506709219E+02), ( 0.2618913670810E-08, 0.2397684236095E+01, 0.6632000300961E+01), ( 0.2571523050364E-08, 0.5751929456787E+00, 0.6206810014183E+01), ( 0.2582135006946E-08, 0.5595464352926E+01, 0.4873985990671E+02), ( 0.2372530190361E-08, 0.5092689490655E+01, 0.1590676413561E+02), ( 0.2357178484712E-08, 0.4444363527851E+01, 0.3097883698531E+01), ( 0.2451590394723E-08, 0.3108251687661E+01, 0.6612329252343E+00), ( 0.2370045949608E-08, 0.2608133861079E+01, 0.3459636466239E+02), //DATA ((E0(I,J,1),I=1,3),J=451,460)), ( 0.2268997267358E-08, 0.3639717753384E+01, 0.2844914056730E-01), ( 0.1731432137906E-08, 0.1741898445707E+00, 0.2019909489111E+02), ( 0.1629869741622E-08, 0.3902225646724E+01, 0.3035599730800E+02), ( 0.2206215801974E-08, 0.4971131250731E+01, 0.6281667977667E+01), ( 0.2205469554680E-08, 0.1677462357110E+01, 0.6284483723224E+01), ( 0.2148792362509E-08, 0.4236259604006E+01, 0.1980482729015E+02), ( 0.1873733657847E-08, 0.5926814998687E+01, 0.2876692439167E+02), ( 0.2026573758959E-08, 0.4349643351962E+01, 0.2449240616245E+02), ( 0.1807770325110E-08, 0.5700940482701E+01, 0.2045286941806E+02), ( 0.1881174408581E-08, 0.6601286363430E+00, 0.2358125818164E+02), //DATA ((E0(I,J,1),I=1,3),J=461,470)), ( 0.1368023671690E-08, 0.2211098592752E+01, 0.2473415438279E+02), ( 0.1720017916280E-08, 0.4942488551129E+01, 0.1679593901136E+03), ( 0.1702427665131E-08, 0.1452233856386E+01, 0.3338575901272E+03), ( 0.1414032510054E-08, 0.5525357721439E+01, 0.1624205518357E+03), ( 0.1652626045364E-08, 0.4108794283624E+01, 0.8956999012000E+02), ( 0.1642957769686E-08, 0.7344335209984E+00, 0.5267006960365E+02), ( 0.1614952403624E-08, 0.3541213951363E+01, 0.3332657872986E+02), ( 0.1535988291188E-08, 0.4031094072151E+01, 0.3852657435933E+02), ( 0.1593193738177E-08, 0.4185136203609E+01, 0.2282781046519E+03), ( 0.1074569126382E-08, 0.1720485636868E+01, 0.8397383534231E+02), //DATA ((E0(I,J,1),I=1,3),J=471,480)), ( 0.1074408214509E-08, 0.2758613420318E+01, 0.8401985929482E+02), ( 0.9700199670465E-09, 0.4216686842097E+01, 0.7826370942180E+02), ( 0.1258433517061E-08, 0.2575068876639E+00, 0.3115650189215E+03), ( 0.1240303229539E-08, 0.4800844956756E+00, 0.1784300471910E+03), ( 0.9018345948127E-09, 0.3896756361552E+00, 0.5886454391678E+02), ( 0.1135301432805E-08, 0.3700805023550E+00, 0.7842370451713E+02), ( 0.9215887951370E-09, 0.4364579276638E+01, 0.1014262087719E+03), ( 0.1055401054147E-08, 0.2156564222111E+01, 0.5660027930059E+02), ( 0.1008725979831E-08, 0.5454015785234E+01, 0.4245678405627E+02), ( 0.7217398104321E-09, 0.1597772562175E+01, 0.2457074661053E+03), //DATA ((E0(I,J,1),I=1,3),J=481,490)), ( 0.6912033134447E-09, 0.5824090621461E+01, 0.1679936946371E+03), ( 0.6833881523549E-09, 0.3578778482835E+01, 0.6053048899753E+02), ( 0.4887304205142E-09, 0.3724362812423E+01, 0.9656299901946E+02), ( 0.5173709754788E-09, 0.5422427507933E+01, 0.2442876000072E+03), ( 0.4671353097145E-09, 0.2396106924439E+01, 0.1435713242844E+03), ( 0.5652608439480E-09, 0.2804028838685E+01, 0.8365903305582E+02), ( 0.5604061331253E-09, 0.1638816006247E+01, 0.8433466158131E+02), ( 0.4712723365400E-09, 0.8979003224474E+00, 0.3164282286739E+03), ( 0.4909967465112E-09, 0.3210426725516E+01, 0.4059982187939E+03), ( 0.4771358267658E-09, 0.5308027211629E+01, 0.1805255418145E+03), //DATA ((E0(I,J,1),I=1,3),J=491,500)), ( 0.3943451445989E-09, 0.2195145341074E+01, 0.2568537517081E+03), ( 0.3952109120244E-09, 0.5081189491586E+01, 0.2449975330562E+03), ( 0.3788134594789E-09, 0.4345171264441E+01, 0.1568131045107E+03), ( 0.3738330190479E-09, 0.2613062847997E+01, 0.3948519331910E+03), ( 0.3099866678136E-09, 0.2846760817689E+01, 0.1547176098872E+03), ( 0.2002962716768E-09, 0.4921360989412E+01, 0.2268582385539E+03), ( 0.2198291338754E-09, 0.1130360117454E+00, 0.1658638954901E+03), ( 0.1491958330784E-09, 0.4228195232278E+01, 0.2219950288015E+03), ( 0.1475384076173E-09, 0.3005721811604E+00, 0.3052819430710E+03), ( 0.1661626624624E-09, 0.7830125621203E+00, 0.2526661704812E+03), //DATA ((E0(I,J,1),I=1,3),J=501,NE0X)), ( 0.9015823460025E-10, 0.3807792942715E+01, 0.4171445043968E+03)), //* Sun-to-Earth, T^0, Y ), //DATA ((E0(I,J,2),I=1,3),J= 1, 10)), (( 0.9998921098898E+00, 0.1826583913846E+00, 0.6283075850446E+01), ( -0.2442700893735E-01, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.8352929742915E-02, 0.1395277998680E+00, 0.1256615170089E+02), ( 0.1046697300177E-03, 0.9641423109763E-01, 0.1884922755134E+02), ( 0.3110841876663E-04, 0.5381140401712E+01, 0.8399684731857E+02), ( 0.2570269094593E-04, 0.5301016407128E+01, 0.5296909721118E+00), ( 0.2147389623610E-04, 0.2662510869850E+01, 0.1577343543434E+01), ( 0.1680344384050E-04, 0.5207904119704E+01, 0.6279552690824E+01), ( 0.1679117312193E-04, 0.4582187486968E+01, 0.6286599010068E+01), ( 0.1440512068440E-04, 0.1900688517726E+01, 0.2352866153506E+01), //DATA ((E0(I,J,2),I=1,3),J= 11, 20)), ( 0.1135139664999E-04, 0.5273108538556E+01, 0.5223693906222E+01), ( 0.9345482571018E-05, 0.4503047687738E+01, 0.1203646072878E+02), ( 0.9007418719568E-05, 0.1605621059637E+01, 0.1021328554739E+02), ( 0.5671536712314E-05, 0.5812849070861E+00, 0.1059381944224E+01), ( 0.7451401861666E-05, 0.2807346794836E+01, 0.3981490189893E+00), ( 0.6393470057114E-05, 0.6029224133855E+01, 0.5753384878334E+01), ( 0.6814275881697E-05, 0.6472990145974E+00, 0.4705732307012E+01), ( 0.6113705628887E-05, 0.3813843419700E+01, 0.6812766822558E+01), ( 0.4503851367273E-05, 0.4527804370996E+01, 0.5884926831456E+01), ( 0.4522249141926E-05, 0.5991783029224E+01, 0.6256777527156E+01), //DATA ((E0(I,J,2),I=1,3),J= 21, 30)), ( 0.4501794307018E-05, 0.3798703844397E+01, 0.6309374173736E+01), ( 0.5514927480180E-05, 0.3961257833388E+01, 0.5507553240374E+01), ( 0.4062862799995E-05, 0.5256247296369E+01, 0.6681224869435E+01), ( 0.5414900429712E-05, 0.5499032014097E+01, 0.7755226100720E+00), ( 0.5463153987424E-05, 0.6173092454097E+01, 0.1414349524433E+02), ( 0.5071611859329E-05, 0.2870244247651E+01, 0.7860419393880E+01), ( 0.2195112094455E-05, 0.2952338617201E+01, 0.1150676975667E+02), ( 0.2279139233919E-05, 0.5951775132933E+01, 0.7058598460518E+01), ( 0.2278386100876E-05, 0.4845456398785E+01, 0.4694002934110E+01), ( 0.2559088003308E-05, 0.6945321117311E+00, 0.1216800268190E+02), //DATA ((E0(I,J,2),I=1,3),J= 31, 40)), ( 0.2561079286856E-05, 0.6167224608301E+01, 0.7099330490126E+00), ( 0.1792755796387E-05, 0.1400122509632E+01, 0.7962980379786E+00), ( 0.1818715656502E-05, 0.4703347611830E+01, 0.6283142985870E+01), ( 0.1818744924791E-05, 0.5086748900237E+01, 0.6283008715021E+01), ( 0.1554518791390E-05, 0.5331008042713E-01, 0.2513230340178E+02), ( 0.2063265737239E-05, 0.4283680484178E+01, 0.1179062909082E+02), ( 0.1497613520041E-05, 0.6074207826073E+01, 0.5486777812467E+01), ( 0.2000617940427E-05, 0.2501426281450E+01, 0.1778984560711E+02), ( 0.1289731195580E-05, 0.3646340599536E+01, 0.7079373888424E+01), ( 0.1282657998934E-05, 0.3232864804902E+01, 0.3738761453707E+01), //DATA ((E0(I,J,2),I=1,3),J= 41, 50)), ( 0.1528915968658E-05, 0.5581433416669E+01, 0.2132990797783E+00), ( 0.1187304098432E-05, 0.5453576453694E+01, 0.9437762937313E+01), ( 0.7842782928118E-06, 0.2823953922273E+00, 0.8827390247185E+01), ( 0.7352892280868E-06, 0.1124369580175E+01, 0.1589072916335E+01), ( 0.6570189360797E-06, 0.2089154042840E+01, 0.1176985366291E+02), ( 0.6324967590410E-06, 0.6704855581230E+00, 0.6262300422539E+01), ( 0.6298289872283E-06, 0.2836414855840E+01, 0.6303851278352E+01), ( 0.6476686465855E-06, 0.4852433866467E+00, 0.7113454667900E-02), ( 0.8587034651234E-06, 0.1453511005668E+01, 0.1672837615881E+03), ( 0.8068948788113E-06, 0.9224087798609E+00, 0.6069776770667E+01), //DATA ((E0(I,J,2),I=1,3),J= 51, 60)), ( 0.8353786011661E-06, 0.4631707184895E+01, 0.3340612434717E+01), ( 0.6009324532132E-06, 0.1829498827726E+01, 0.4136910472696E+01), ( 0.7558158559566E-06, 0.2588596800317E+01, 0.6496374930224E+01), ( 0.5809279504503E-06, 0.5516818853476E+00, 0.1097707878456E+02), ( 0.5374131950254E-06, 0.6275674734960E+01, 0.1194447056968E+01), ( 0.5711160507326E-06, 0.1091905956872E+01, 0.6282095334605E+01), ( 0.5710183170746E-06, 0.2415001635090E+01, 0.6284056366286E+01), ( 0.5144373590610E-06, 0.6020336443438E+01, 0.6290189305114E+01), ( 0.5103108927267E-06, 0.3775634564605E+01, 0.6275962395778E+01), ( 0.4960654697891E-06, 0.1073450946756E+01, 0.6127655567643E+01), //DATA ((E0(I,J,2),I=1,3),J= 61, 70)), ( 0.4786385689280E-06, 0.2431178012310E+01, 0.6438496133249E+01), ( 0.6109911263665E-06, 0.5343356157914E+01, 0.3154687086868E+01), ( 0.4839898944024E-06, 0.5830833594047E-01, 0.8018209333619E+00), ( 0.4734822623919E-06, 0.4536080134821E+01, 0.3128388763578E+01), ( 0.4834741473290E-06, 0.2585090489754E+00, 0.7084896783808E+01), ( 0.5134858581156E-06, 0.4213317172603E+01, 0.1235285262111E+02), ( 0.5064004264978E-06, 0.4814418806478E+00, 0.1185621865188E+02), ( 0.3753476772761E-06, 0.1599953399788E+01, 0.8429241228195E+01), ( 0.4935264014283E-06, 0.2157417556873E+01, 0.2544314396739E+01), ( 0.3950929600897E-06, 0.3359394184254E+01, 0.5481254917084E+01), //DATA ((E0(I,J,2),I=1,3),J= 71, 80)), ( 0.4895849789777E-06, 0.5165704376558E+01, 0.9225539266174E+01), ( 0.4215241688886E-06, 0.2065368800993E+01, 0.1726015463500E+02), ( 0.3796773731132E-06, 0.1468606346612E+01, 0.4265981595566E+00), ( 0.3114178142515E-06, 0.3615638079474E+01, 0.2146165377750E+01), ( 0.3260664220838E-06, 0.4417134922435E+01, 0.4164311961999E+01), ( 0.3976996123008E-06, 0.4700866883004E+01, 0.5856477690889E+01), ( 0.2801459672924E-06, 0.4538902060922E+01, 0.1256967486051E+02), ( 0.3638931868861E-06, 0.1334197991475E+01, 0.1807370494127E+02), ( 0.2487013269476E-06, 0.3749275558275E+01, 0.2629832328990E-01), ( 0.3034165481994E-06, 0.4236622030873E+00, 0.4535059491685E+01), //DATA ((E0(I,J,2),I=1,3),J= 81, 90)), ( 0.2676278825586E-06, 0.5970848007811E+01, 0.3930209696940E+01), ( 0.2764903818918E-06, 0.5194636754501E+01, 0.1256262854127E+02), ( 0.2485149930507E-06, 0.1002434207846E+01, 0.5088628793478E+01), ( 0.2199305540941E-06, 0.3066773098403E+01, 0.1255903824622E+02), ( 0.2571106500435E-06, 0.7588312459063E+00, 0.1336797263425E+02), ( 0.2049751817158E-06, 0.3444977434856E+01, 0.1137170464392E+02), ( 0.2599707296297E-06, 0.1873128542205E+01, 0.7143069561767E+02), ( 0.1785018072217E-06, 0.5015891306615E+01, 0.1748016358760E+01), ( 0.2324833891115E-06, 0.4618271239730E+01, 0.1831953657923E+02), ( 0.1709711119545E-06, 0.5300003455669E+01, 0.4933208510675E+01), //DATA ((E0(I,J,2),I=1,3),J= 91,100)), ( 0.2107159351716E-06, 0.2229819815115E+01, 0.7477522907414E+01), ( 0.1750333080295E-06, 0.6161485880008E+01, 0.1044738781244E+02), ( 0.2000598210339E-06, 0.2967357299999E+01, 0.8031092209206E+01), ( 0.1380920248681E-06, 0.3027007923917E+01, 0.8635942003952E+01), ( 0.1412460470299E-06, 0.6037597163798E+01, 0.2942463415728E+01), ( 0.1888459803001E-06, 0.8561476243374E+00, 0.1561374759853E+03), ( 0.1788370542585E-06, 0.4869736290209E+01, 0.1592596075957E+01), ( 0.1360893296167E-06, 0.3626411886436E+01, 0.1309584267300E+02), ( 0.1506846530160E-06, 0.1550975377427E+01, 0.1649636139783E+02), ( 0.1800913376176E-06, 0.2075826033190E+01, 0.1729818233119E+02), //DATA ((E0(I,J,2),I=1,3),J=101,110)), ( 0.1436261390649E-06, 0.6148876420255E+01, 0.2042657109477E+02), ( 0.1220227114151E-06, 0.4382583879906E+01, 0.7632943190217E+01), ( 0.1337883603592E-06, 0.2036644327361E+01, 0.1213955354133E+02), ( 0.1159326650738E-06, 0.3892276994687E+01, 0.5331357529664E+01), ( 0.1352853128569E-06, 0.1447950649744E+01, 0.1673046366289E+02), ( 0.1433408296083E-06, 0.4457854692961E+01, 0.7342457794669E+01), ( 0.1234701666518E-06, 0.1538818147151E+01, 0.6279485555400E+01), ( 0.1234027192007E-06, 0.1968523220760E+01, 0.6286666145492E+01), ( 0.1244024091797E-06, 0.5779803499985E+01, 0.1511046609763E+02), ( 0.1097934945516E-06, 0.6210975221388E+00, 0.1098880815746E+02), //DATA ((E0(I,J,2),I=1,3),J=111,120)), ( 0.1254611329856E-06, 0.2591963807998E+01, 0.1572083878776E+02), ( 0.1158247286784E-06, 0.2483612812670E+01, 0.5729506548653E+01), ( 0.9039078252960E-07, 0.3857554579796E+01, 0.9623688285163E+01), ( 0.9108024978836E-07, 0.5826368512984E+01, 0.7234794171227E+01), ( 0.8887068108436E-07, 0.3475694573987E+01, 0.6148010737701E+01), ( 0.8632374035438E-07, 0.3059070488983E-01, 0.6418140963190E+01), ( 0.7893186992967E-07, 0.1583194837728E+01, 0.2118763888447E+01), ( 0.8297650201172E-07, 0.8519770534637E+00, 0.1471231707864E+02), ( 0.1019759578988E-06, 0.1319598738732E+00, 0.1349867339771E+01), ( 0.1010037696236E-06, 0.9937860115618E+00, 0.6836645152238E+01), //DATA ((E0(I,J,2),I=1,3),J=121,130)), ( 0.1047727548266E-06, 0.1382138405399E+01, 0.5999216516294E+01), ( 0.7351993881086E-07, 0.3833397851735E+01, 0.6040347114260E+01), ( 0.9868771092341E-07, 0.2124913814390E+01, 0.6566935184597E+01), ( 0.7007321959390E-07, 0.5946305343763E+01, 0.6525804586632E+01), ( 0.6861411679709E-07, 0.4574654977089E+01, 0.7238675589263E+01), ( 0.7554519809614E-07, 0.5949232686844E+01, 0.1253985337760E+02), ( 0.9541880448335E-07, 0.3495242990564E+01, 0.2122839202813E+02), ( 0.7185606722155E-07, 0.4310113471661E+01, 0.6245048154254E+01), ( 0.7131360871710E-07, 0.5480309323650E+01, 0.6321103546637E+01), ( 0.6651142021039E-07, 0.5411097713654E+01, 0.5327476111629E+01), //DATA ((E0(I,J,2),I=1,3),J=131,140)), ( 0.8538618213667E-07, 0.1827849973951E+01, 0.1101510648075E+02), ( 0.8634954288044E-07, 0.5443584943349E+01, 0.5643178611111E+01), ( 0.7449415051484E-07, 0.2011535459060E+01, 0.5368044267797E+00), ( 0.7421047599169E-07, 0.3464562529249E+01, 0.2354323048545E+02), ( 0.6140694354424E-07, 0.5657556228815E+01, 0.1296430071988E+02), ( 0.6353525143033E-07, 0.3463816593821E+01, 0.1990745094947E+01), ( 0.6221964013447E-07, 0.1532259498697E+01, 0.9517183207817E+00), ( 0.5852480257244E-07, 0.1375396598875E+01, 0.9555997388169E+00), ( 0.6398637498911E-07, 0.2405645801972E+01, 0.2407292145756E+02), ( 0.7039744069878E-07, 0.5397541799027E+01, 0.5225775174439E+00), //DATA ((E0(I,J,2),I=1,3),J=141,150)), ( 0.6977997694382E-07, 0.4762347105419E+01, 0.1097355562493E+02), ( 0.7460629558396E-07, 0.2711944692164E+01, 0.2200391463820E+02), ( 0.5376577536101E-07, 0.2352980430239E+01, 0.1431416805965E+02), ( 0.7530607893556E-07, 0.1943940180699E+01, 0.1842262939178E+02), ( 0.6822928971605E-07, 0.4337651846959E+01, 0.1554202828031E+00), ( 0.6220772380094E-07, 0.6716871369278E+00, 0.1845107853235E+02), ( 0.6586950799043E-07, 0.2229714460505E+01, 0.5216580451554E+01), ( 0.5873800565771E-07, 0.7627013920580E+00, 0.6398972393349E+00), ( 0.6264346929745E-07, 0.6202785478961E+00, 0.6277552955062E+01), ( 0.6257929115669E-07, 0.2886775596668E+01, 0.6288598745829E+01), //DATA ((E0(I,J,2),I=1,3),J=151,160)), ( 0.5343536033409E-07, 0.1977241012051E+01, 0.4690479774488E+01), ( 0.5587849781714E-07, 0.1922923484825E+01, 0.1551045220144E+01), ( 0.6905100845603E-07, 0.3570757164631E+01, 0.1030928125552E+00), ( 0.6178957066649E-07, 0.5197558947765E+01, 0.5230807360890E+01), ( 0.6187270224331E-07, 0.8193497368922E+00, 0.5650292065779E+01), ( 0.5385664291426E-07, 0.5406336665586E+01, 0.7771377146812E+02), ( 0.6329363917926E-07, 0.2837760654536E+01, 0.2608790314060E+02), ( 0.4546018761604E-07, 0.2933580297050E+01, 0.5535693017924E+00), ( 0.6196091049375E-07, 0.4157871494377E+01, 0.8467247584405E+02), ( 0.6159555108218E-07, 0.3211703561703E+01, 0.2394243902548E+03), //DATA ((E0(I,J,2),I=1,3),J=161,170)), ( 0.4995340539317E-07, 0.1459098102922E+01, 0.4732030630302E+01), ( 0.5457031243572E-07, 0.1430457676136E+01, 0.6179983037890E+01), ( 0.4863461418397E-07, 0.2196425916730E+01, 0.9027992316901E+02), ( 0.5342947626870E-07, 0.2086612890268E+01, 0.6386168663001E+01), ( 0.5674296648439E-07, 0.2760204966535E+01, 0.6915859635113E+01), ( 0.4745783120161E-07, 0.4245368971862E+01, 0.6282970628506E+01), ( 0.4745676961198E-07, 0.5544725787016E+01, 0.6283181072386E+01), ( 0.4049796869973E-07, 0.2213984363586E+01, 0.6254626709878E+01), ( 0.4248333596940E-07, 0.8075781952896E+00, 0.7875671926403E+01), ( 0.4027178070205E-07, 0.1293268540378E+01, 0.6311524991013E+01), //DATA ((E0(I,J,2),I=1,3),J=171,180)), ( 0.4066543943476E-07, 0.3986141175804E+01, 0.3634620989887E+01), ( 0.4858863787880E-07, 0.1276112738231E+01, 0.5760498333002E+01), ( 0.5277398263530E-07, 0.4916111741527E+01, 0.2515860172507E+02), ( 0.4105635656559E-07, 0.1725805864426E+01, 0.6709674010002E+01), ( 0.4376781925772E-07, 0.2243642442106E+01, 0.6805653367890E+01), ( 0.3235827894693E-07, 0.3614135118271E+01, 0.1066495398892E+01), ( 0.3073244740308E-07, 0.2460873393460E+01, 0.5863591145557E+01), ( 0.3088609271373E-07, 0.5678431771790E+01, 0.9917696840332E+01), ( 0.3393022279836E-07, 0.3814017477291E+01, 0.1391601904066E+02), ( 0.3038686508802E-07, 0.4660216229171E+01, 0.1256621883632E+02), //DATA ((E0(I,J,2),I=1,3),J=181,190)), ( 0.4019677752497E-07, 0.5906906243735E+01, 0.1334167431096E+02), ( 0.3288834998232E-07, 0.9536146445882E+00, 0.1620077269078E+02), ( 0.3889973794631E-07, 0.3942205097644E+01, 0.7478166569050E-01), ( 0.3050438987141E-07, 0.1624810271286E+01, 0.1805292951336E+02), ( 0.3601142564638E-07, 0.4030467142575E+01, 0.6208294184755E+01), ( 0.3689015557141E-07, 0.3648878818694E+01, 0.5966683958112E+01), ( 0.3563471893565E-07, 0.5749584017096E+01, 0.6357857516136E+01), ( 0.2776183170667E-07, 0.2630124187070E+01, 0.3523159621801E-02), ( 0.2922350530341E-07, 0.1790346403629E+01, 0.1272157198369E+02), ( 0.3511076917302E-07, 0.6142198301611E+01, 0.6599467742779E+01), //DATA ((E0(I,J,2),I=1,3),J=191,200)), ( 0.3619351007632E-07, 0.1432421386492E+01, 0.6019991944201E+01), ( 0.2561254711098E-07, 0.2302822475792E+01, 0.1259245002418E+02), ( 0.2626903942920E-07, 0.8660470994571E+00, 0.6702560555334E+01), ( 0.2550187397083E-07, 0.6069721995383E+01, 0.1057540660594E+02), ( 0.2535873526138E-07, 0.1079020331795E-01, 0.3141537925223E+02), ( 0.3519786153847E-07, 0.3809066902283E+01, 0.2505706758577E+03), ( 0.3424651492873E-07, 0.2075435114417E+01, 0.6546159756691E+01), ( 0.2372676630861E-07, 0.2057803120154E+01, 0.2388894113936E+01), ( 0.2710980779541E-07, 0.1510068488010E+01, 0.1202934727411E+02), ( 0.3038710889704E-07, 0.5043617528901E+01, 0.1256608456547E+02), //DATA ((E0(I,J,2),I=1,3),J=201,210)), ( 0.2220364130585E-07, 0.3694793218205E+01, 0.1336244973887E+02), ( 0.3025880825460E-07, 0.5450618999049E-01, 0.2908881142201E+02), ( 0.2784493486864E-07, 0.3381164084502E+01, 0.1494531617769E+02), ( 0.2294414142438E-07, 0.4382309025210E+01, 0.6076890225335E+01), ( 0.2012723294724E-07, 0.9142212256518E+00, 0.6262720680387E+01), ( 0.2036357831958E-07, 0.5676172293154E+01, 0.4701116388778E+01), ( 0.2003474823288E-07, 0.2592767977625E+01, 0.6303431020504E+01), ( 0.2207144900109E-07, 0.5404976271180E+01, 0.6489261475556E+01), ( 0.2481664905135E-07, 0.4373284587027E+01, 0.1204357418345E+02), ( 0.2674949182295E-07, 0.5859182188482E+01, 0.4590910121555E+01), //DATA ((E0(I,J,2),I=1,3),J=211,220)), ( 0.2450554720322E-07, 0.4555381557451E+01, 0.1495633313810E+00), ( 0.2601975986457E-07, 0.3933165584959E+01, 0.1965104848470E+02), ( 0.2199860022848E-07, 0.5227977189087E+01, 0.1351787002167E+02), ( 0.2448121172316E-07, 0.4858060353949E+01, 0.1162474756779E+01), ( 0.1876014864049E-07, 0.5690546553605E+01, 0.6279194432410E+01), ( 0.1874513219396E-07, 0.4099539297446E+01, 0.6286957268481E+01), ( 0.2156380842559E-07, 0.4382594769913E+00, 0.1813929450232E+02), ( 0.1981691240061E-07, 0.1829784152444E+01, 0.4686889479442E+01), ( 0.2329992648539E-07, 0.2836254278973E+01, 0.1002183730415E+02), ( 0.1765184135302E-07, 0.2803494925833E+01, 0.4292330755499E+01), //DATA ((E0(I,J,2),I=1,3),J=221,230)), ( 0.2436368366085E-07, 0.2836897959677E+01, 0.9514313292143E+02), ( 0.2164089203889E-07, 0.6127522446024E+01, 0.6037244212485E+01), ( 0.1847755034221E-07, 0.3683163635008E+01, 0.2427287361862E+00), ( 0.1674798769966E-07, 0.3316993867246E+00, 0.1311972100268E+02), ( 0.2222542124356E-07, 0.8294097805480E+00, 0.1266924451345E+02), ( 0.2071074505925E-07, 0.3659492220261E+01, 0.6528907488406E+01), ( 0.1608224471835E-07, 0.4774492067182E+01, 0.1352175143971E+02), ( 0.1857583439071E-07, 0.2873120597682E+01, 0.8662240327241E+01), ( 0.1793018836159E-07, 0.5282441177929E+00, 0.6819880277225E+01), ( 0.1575391221692E-07, 0.1320789654258E+01, 0.1102062672231E+00), //DATA ((E0(I,J,2),I=1,3),J=231,240)), ( 0.1840132009557E-07, 0.1917110916256E+01, 0.6514761976723E+02), ( 0.1760917288281E-07, 0.2972635937132E+01, 0.5746271423666E+01), ( 0.1561779518516E-07, 0.4372569261981E+01, 0.6272439236156E+01), ( 0.1558687885205E-07, 0.5416424926425E+01, 0.6293712464735E+01), ( 0.1951359382579E-07, 0.3094448898752E+01, 0.2301353951334E+02), ( 0.1569144275614E-07, 0.2802103689808E+01, 0.1765478049437E+02), ( 0.1479130389462E-07, 0.2136435020467E+01, 0.2077542790660E-01), ( 0.1467828510764E-07, 0.7072627435674E+00, 0.1052268489556E+01), ( 0.1627627337440E-07, 0.3947607143237E+01, 0.6327837846670E+00), ( 0.1503498479758E-07, 0.4079248909190E+01, 0.7626583626240E-01), //DATA ((E0(I,J,2),I=1,3),J=241,250)), ( 0.1297967708237E-07, 0.6269637122840E+01, 0.1149965630200E+02), ( 0.1374416896634E-07, 0.4175657970702E+01, 0.6016468784579E+01), ( 0.1783812325219E-07, 0.1476540547560E+01, 0.3301902111895E+02), ( 0.1525884228756E-07, 0.4653477715241E+01, 0.9411464614024E+01), ( 0.1451067396763E-07, 0.2573001128225E+01, 0.1277945078067E+02), ( 0.1297713111950E-07, 0.5612799618771E+01, 0.6549682916313E+01), ( 0.1462784012820E-07, 0.4189661623870E+01, 0.1863592847156E+02), ( 0.1384185980007E-07, 0.2656915472196E+01, 0.2379164476796E+01), ( 0.1221497599801E-07, 0.5612515760138E+01, 0.1257326515556E+02), ( 0.1560574525896E-07, 0.4783414317919E+01, 0.1887552587463E+02), //DATA ((E0(I,J,2),I=1,3),J=251,260)), ( 0.1544598372036E-07, 0.2694431138063E+01, 0.1820933031200E+02), ( 0.1531678928696E-07, 0.4105103489666E+01, 0.2593412433514E+02), ( 0.1349321503795E-07, 0.3082437194015E+00, 0.5120601093667E+01), ( 0.1252030290917E-07, 0.6124072334087E+01, 0.6993008899458E+01), ( 0.1459243816687E-07, 0.3733103981697E+01, 0.3813291813120E-01), ( 0.1226103625262E-07, 0.1267127706817E+01, 0.2435678079171E+02), ( 0.1019449641504E-07, 0.4367790112269E+01, 0.1725663147538E+02), ( 0.1380789433607E-07, 0.3387201768700E+01, 0.2458316379602E+00), ( 0.1019453421658E-07, 0.9204143073737E+00, 0.6112403035119E+01), ( 0.1297929434405E-07, 0.5786874896426E+01, 0.1249137003520E+02), //DATA ((E0(I,J,2),I=1,3),J=261,270)), ( 0.9912677786097E-08, 0.3164232870746E+01, 0.6247047890016E+01), ( 0.9829386098599E-08, 0.2586762413351E+01, 0.6453748665772E+01), ( 0.1226807746104E-07, 0.6239068436607E+01, 0.5429879531333E+01), ( 0.1192691755997E-07, 0.1867380051424E+01, 0.6290122169689E+01), ( 0.9836499227081E-08, 0.3424716293727E+00, 0.6319103810876E+01), ( 0.9642862564285E-08, 0.5661372990657E+01, 0.8273820945392E+01), ( 0.1165184404862E-07, 0.5768367239093E+01, 0.1778273215245E+02), ( 0.1175794418818E-07, 0.1657351222943E+01, 0.6276029531202E+01), ( 0.1018948635601E-07, 0.6458292350865E+00, 0.1254537627298E+02), ( 0.9500383606676E-08, 0.1054306140741E+01, 0.1256517118505E+02), //DATA ((E0(I,J,2),I=1,3),J=271,280)), ( 0.1227512202906E-07, 0.2505278379114E+01, 0.2248384854122E+02), ( 0.9664792009993E-08, 0.4289737277000E+01, 0.6259197520765E+01), ( 0.9613285666331E-08, 0.5500597673141E+01, 0.6306954180126E+01), ( 0.1117906736211E-07, 0.2361405953468E+01, 0.1779695906178E+02), ( 0.9611378640782E-08, 0.2851310576269E+01, 0.2061856251104E+00), ( 0.8845354852370E-08, 0.6208777705343E+01, 0.1692165728891E+01), ( 0.1054046966600E-07, 0.5413091423934E+01, 0.2204125344462E+00), ( 0.1215539124483E-07, 0.5613969479755E+01, 0.8257698122054E+02), ( 0.9932460955209E-08, 0.1106124877015E+01, 0.1017725758696E+02), ( 0.8785804715043E-08, 0.2869224476477E+01, 0.9491756770005E+00), //DATA ((E0(I,J,2),I=1,3),J=281,290)), ( 0.8538084097562E-08, 0.6159640899344E+01, 0.6393282117669E+01), ( 0.8648994369529E-08, 0.1374901198784E+01, 0.4804209201333E+01), ( 0.1039063219067E-07, 0.5171080641327E+01, 0.1550861511662E+02), ( 0.8867983926439E-08, 0.8317320304902E+00, 0.3903911373650E+01), ( 0.8327495955244E-08, 0.3605591969180E+01, 0.6172869583223E+01), ( 0.9243088356133E-08, 0.6114299196843E+01, 0.6267823317922E+01), ( 0.9205657357835E-08, 0.3675153683737E+01, 0.6298328382969E+01), ( 0.1033269714606E-07, 0.3313328813024E+01, 0.5573142801433E+01), ( 0.8001706275552E-08, 0.2019980960053E+01, 0.2648454860559E+01), ( 0.9171858254191E-08, 0.8992015524177E+00, 0.1498544001348E+03), //DATA ((E0(I,J,2),I=1,3),J=291,300)), ( 0.1075327150242E-07, 0.2898669963648E+01, 0.3694923081589E+02), ( 0.9884866689828E-08, 0.4946715904478E+01, 0.1140367694411E+02), ( 0.9541835576677E-08, 0.2371787888469E+01, 0.1256713221673E+02), ( 0.7739903376237E-08, 0.2213775190612E+01, 0.7834121070590E+01), ( 0.7311962684106E-08, 0.3429378787739E+01, 0.1192625446156E+02), ( 0.9724904869624E-08, 0.6195878564404E+01, 0.2280573557157E+02), ( 0.9251628983612E-08, 0.6511509527390E+00, 0.2787043132925E+01), ( 0.7320763787842E-08, 0.6001083639421E+01, 0.6282655592598E+01), ( 0.7320296650962E-08, 0.3789073265087E+01, 0.6283496108294E+01), ( 0.7947032271039E-08, 0.1059659582204E+01, 0.1241073141809E+02), //DATA ((E0(I,J,2),I=1,3),J=301,310)), ( 0.9005277053115E-08, 0.1280315624361E+01, 0.6281591679874E+01), ( 0.8995601652048E-08, 0.2224439106766E+01, 0.6284560021018E+01), ( 0.8288040568796E-08, 0.5234914433867E+01, 0.1241658836951E+02), ( 0.6359381347255E-08, 0.4137989441490E+01, 0.1596186371003E+01), ( 0.8699572228626E-08, 0.1758411009497E+01, 0.6133512519065E+01), ( 0.6456797542736E-08, 0.5919285089994E+01, 0.1685848245639E+02), ( 0.7424573475452E-08, 0.5414616938827E+01, 0.4061219149443E+01), ( 0.7235671196168E-08, 0.1496516557134E+01, 0.1610006857377E+03), ( 0.8104015182733E-08, 0.1919918242764E+01, 0.8460828644453E+00), ( 0.8098576535937E-08, 0.3819615855458E+01, 0.3894181736510E+01), //DATA ((E0(I,J,2),I=1,3),J=311,320)), ( 0.6275292346625E-08, 0.6244264115141E+01, 0.8531963191132E+00), ( 0.6052432989112E-08, 0.5037731872610E+00, 0.1567108171867E+02), ( 0.5705651535817E-08, 0.2984557271995E+01, 0.1258692712880E+02), ( 0.5789650115138E-08, 0.6087038140697E+01, 0.1193336791622E+02), ( 0.5512132153377E-08, 0.5855668994076E+01, 0.1232342296471E+02), ( 0.7388890819102E-08, 0.2443128574740E+01, 0.4907302013889E+01), ( 0.5467593991798E-08, 0.3017561234194E+01, 0.1884211409667E+02), ( 0.6388519802999E-08, 0.5887386712935E+01, 0.5217580628120E+02), ( 0.6106777149944E-08, 0.3483461059895E+00, 0.1422690933580E-01), ( 0.7383420275489E-08, 0.5417387056707E+01, 0.2358125818164E+02), //DATA ((E0(I,J,2),I=1,3),J=321,330)), ( 0.5505208141738E-08, 0.2848193644783E+01, 0.1151388321134E+02), ( 0.6310757462877E-08, 0.2349882520828E+01, 0.1041998632314E+02), ( 0.6166904929691E-08, 0.5728575944077E+00, 0.6151533897323E+01), ( 0.5263442042754E-08, 0.4495796125937E+01, 0.1885275071096E+02), ( 0.5591828082629E-08, 0.1355441967677E+01, 0.4337116142245E+00), ( 0.5397051680497E-08, 0.1673422864307E+01, 0.6286362197481E+01), ( 0.5396992745159E-08, 0.1833502206373E+01, 0.6279789503410E+01), ( 0.6572913000726E-08, 0.3331122065824E+01, 0.1176433076753E+02), ( 0.5123421866413E-08, 0.2165327142679E+01, 0.1245594543367E+02), ( 0.5930495725999E-08, 0.2931146089284E+01, 0.6414617803568E+01), //DATA ((E0(I,J,2),I=1,3),J=331,340)), ( 0.6431797403933E-08, 0.4134407994088E+01, 0.1350651127443E+00), ( 0.5003182207604E-08, 0.3805420303749E+01, 0.1096996532989E+02), ( 0.5587731032504E-08, 0.1082469260599E+01, 0.6062663316000E+01), ( 0.5935263407816E-08, 0.8384333678401E+00, 0.5326786718777E+01), ( 0.4756019827760E-08, 0.3552588749309E+01, 0.3104930017775E+01), ( 0.6599951172637E-08, 0.4320826409528E+01, 0.4087944051283E+02), ( 0.5902606868464E-08, 0.4811879454445E+01, 0.5849364236221E+01), ( 0.5921147809031E-08, 0.9942628922396E-01, 0.1581959461667E+01), ( 0.5505382581266E-08, 0.2466557607764E+01, 0.6503488384892E+01), ( 0.5353771071862E-08, 0.4551978748683E+01, 0.1735668374386E+03), //DATA ((E0(I,J,2),I=1,3),J=341,350)), ( 0.5063282210946E-08, 0.5710812312425E+01, 0.1248988586463E+02), ( 0.5926120403383E-08, 0.1333998428358E+01, 0.2673594526851E+02), ( 0.5211016176149E-08, 0.4649315360760E+01, 0.2460261242967E+02), ( 0.5347075084894E-08, 0.5512754081205E+01, 0.4171425416666E+01), ( 0.4872609773574E-08, 0.1308025299938E+01, 0.5333900173445E+01), ( 0.4727711321420E-08, 0.2144908368062E+01, 0.7232251527446E+01), ( 0.6029426018652E-08, 0.5567259412084E+01, 0.3227113045244E+03), ( 0.4321485284369E-08, 0.5230667156451E+01, 0.9388005868221E+01), ( 0.4476406760553E-08, 0.6134081115303E+01, 0.5547199253223E+01), ( 0.5835268277420E-08, 0.4783808492071E+01, 0.7285056171570E+02), //DATA ((E0(I,J,2),I=1,3),J=351,360)), ( 0.5172183602748E-08, 0.5161817911099E+01, 0.1884570439172E+02), ( 0.5693571465184E-08, 0.1381646203111E+01, 0.9723862754494E+02), ( 0.4060634965349E-08, 0.3876705259495E+00, 0.4274518229222E+01), ( 0.3967398770473E-08, 0.5029491776223E+01, 0.3496032717521E+01), ( 0.3943754005255E-08, 0.1923162955490E+01, 0.6244942932314E+01), ( 0.4781323427824E-08, 0.4633332586423E+01, 0.2929661536378E+02), ( 0.3871483781204E-08, 0.1616650009743E+01, 0.6321208768577E+01), ( 0.5141741733997E-08, 0.9817316704659E-01, 0.1232032006293E+02), ( 0.4002385978497E-08, 0.3656161212139E+01, 0.7018952447668E+01), ( 0.4901092604097E-08, 0.4404098713092E+01, 0.1478866649112E+01), //DATA ((E0(I,J,2),I=1,3),J=361,370)), ( 0.3740932630345E-08, 0.5181188732639E+00, 0.6922973089781E+01), ( 0.4387283718538E-08, 0.3254859566869E+01, 0.2331413144044E+03), ( 0.5019197802033E-08, 0.3086773224677E+01, 0.1715706182245E+02), ( 0.3834931695175E-08, 0.2797882673542E+01, 0.1491901785440E+02), ( 0.3760413942497E-08, 0.2892676280217E+01, 0.1726726808967E+02), ( 0.3719717204628E-08, 0.5861046025739E+01, 0.6297302759782E+01), ( 0.4145623530149E-08, 0.2168239627033E+01, 0.1376059875786E+02), ( 0.3932788425380E-08, 0.6271811124181E+01, 0.7872148766781E+01), ( 0.3686377476857E-08, 0.3936853151404E+01, 0.6268848941110E+01), ( 0.3779077950339E-08, 0.1404148734043E+01, 0.4157198507331E+01), //DATA ((E0(I,J,2),I=1,3),J=371,380)), ( 0.4091334550598E-08, 0.2452436180854E+01, 0.9779108567966E+01), ( 0.3926694536146E-08, 0.6102292739040E+01, 0.1098419223922E+02), ( 0.4841000253289E-08, 0.6072760457276E+01, 0.1252801878276E+02), ( 0.4949340130240E-08, 0.1154832815171E+01, 0.1617106187867E+03), ( 0.3761557737360E-08, 0.5527545321897E+01, 0.3185192151914E+01), ( 0.3647396268188E-08, 0.1525035688629E+01, 0.6271346477544E+01), ( 0.3932405074189E-08, 0.5570681040569E+01, 0.2139354194808E+02), ( 0.3631322501141E-08, 0.1981240601160E+01, 0.6294805223347E+01), ( 0.4130007425139E-08, 0.2050060880201E+01, 0.2195415756911E+02), ( 0.4433905965176E-08, 0.3277477970321E+01, 0.7445550607224E+01), //DATA ((E0(I,J,2),I=1,3),J=381,390)), ( 0.3851814176947E-08, 0.5210690074886E+01, 0.9562891316684E+00), ( 0.3485807052785E-08, 0.6653274904611E+00, 0.1161697602389E+02), ( 0.3979772816991E-08, 0.1767941436148E+01, 0.2277943724828E+02), ( 0.3402607460500E-08, 0.3421746306465E+01, 0.1087398597200E+02), ( 0.4049993000926E-08, 0.1127144787547E+01, 0.3163918923335E+00), ( 0.3420511182382E-08, 0.4214794779161E+01, 0.1362553364512E+02), ( 0.3640772365012E-08, 0.5324905497687E+01, 0.1725304118033E+02), ( 0.3323037987501E-08, 0.6135761838271E+01, 0.6279143387820E+01), ( 0.4503141663637E-08, 0.1802305450666E+01, 0.1385561574497E+01), ( 0.4314560055588E-08, 0.4812299731574E+01, 0.4176041334900E+01), //DATA ((E0(I,J,2),I=1,3),J=391,400)), ( 0.3294226949110E-08, 0.3657547059723E+01, 0.6287008313071E+01), ( 0.3215657197281E-08, 0.4866676894425E+01, 0.5749861718712E+01), ( 0.4129362656266E-08, 0.3809342558906E+01, 0.5905702259363E+01), ( 0.3137762976388E-08, 0.2494635174443E+01, 0.2099539292909E+02), ( 0.3514010952384E-08, 0.2699961831678E+01, 0.7335344340001E+01), ( 0.3327607571530E-08, 0.3318457714816E+01, 0.5436992986000E+01), ( 0.3541066946675E-08, 0.4382703582466E+01, 0.1234573916645E+02), ( 0.3216179847052E-08, 0.5271066317054E+01, 0.3802769619140E-01), ( 0.2959045059570E-08, 0.5819591585302E+01, 0.2670964694522E+02), ( 0.3884040326665E-08, 0.5980934960428E+01, 0.6660449441528E+01), //DATA ((E0(I,J,2),I=1,3),J=401,410)), ( 0.2922027539886E-08, 0.3337290282483E+01, 0.1375773836557E+01), ( 0.4110846382042E-08, 0.5742978187327E+01, 0.4480965020977E+02), ( 0.2934508411032E-08, 0.2278075804200E+01, 0.6408777551755E+00), ( 0.3966896193000E-08, 0.5835747858477E+01, 0.3773735910827E+00), ( 0.3286695827610E-08, 0.5838898193902E+01, 0.3932462625300E-02), ( 0.3720643094196E-08, 0.1122212337858E+01, 0.1646033343740E+02), ( 0.3285508906174E-08, 0.9182250996416E+00, 0.1081813534213E+02), ( 0.3753880575973E-08, 0.5174761973266E+01, 0.5642198095270E+01), ( 0.3022129385587E-08, 0.3381611020639E+01, 0.2982630633589E+02), ( 0.2798569205621E-08, 0.3546193723922E+01, 0.1937891852345E+02), //DATA ((E0(I,J,2),I=1,3),J=411,420)), ( 0.3397872070505E-08, 0.4533203197934E+01, 0.6923953605621E+01), ( 0.3708099772977E-08, 0.2756168198616E+01, 0.3066615496545E+02), ( 0.3599283541510E-08, 0.1934395469918E+01, 0.6147450479709E+01), ( 0.3688702753059E-08, 0.7149920971109E+00, 0.2636725487657E+01), ( 0.2681084724003E-08, 0.4899819493154E+01, 0.6816289982179E+01), ( 0.3495993460759E-08, 0.1572418915115E+01, 0.6418701221183E+01), ( 0.3130770324995E-08, 0.8912190180489E+00, 0.1235996607578E+02), ( 0.2744353821941E-08, 0.3800821940055E+01, 0.2059724391010E+02), ( 0.2842732906341E-08, 0.2644717440029E+01, 0.2828699048865E+02), ( 0.3046882682154E-08, 0.3987793020179E+01, 0.6055599646783E+01), //DATA ((E0(I,J,2),I=1,3),J=421,430)), ( 0.2399072455143E-08, 0.9908826440764E+00, 0.6255674361143E+01), ( 0.2384306274204E-08, 0.2516149752220E+01, 0.6310477339748E+01), ( 0.2977324500559E-08, 0.5849195642118E+01, 0.1652265972112E+02), ( 0.3062835258972E-08, 0.1681660100162E+01, 0.1172006883645E+02), ( 0.3109682589231E-08, 0.5804143987737E+00, 0.2751146787858E+02), ( 0.2903920355299E-08, 0.5800768280123E+01, 0.6510552054109E+01), ( 0.2823221989212E-08, 0.9241118370216E+00, 0.5469525544182E+01), ( 0.3187949696649E-08, 0.3139776445735E+01, 0.1693792562116E+03), ( 0.2922559771655E-08, 0.3549440782984E+01, 0.2630839062450E+00), ( 0.2436302066603E-08, 0.4735540696319E+01, 0.3946258593675E+00), //DATA ((E0(I,J,2),I=1,3),J=431,440)), ( 0.3049473043606E-08, 0.4998289124561E+01, 0.8390110365991E+01), ( 0.2863682575784E-08, 0.6709515671102E+00, 0.2243449970715E+00), ( 0.2641750517966E-08, 0.5410978257284E+01, 0.2986433403208E+02), ( 0.2704093466243E-08, 0.4778317207821E+01, 0.6129297044991E+01), ( 0.2445522177011E-08, 0.6009020662222E+01, 0.1171295538178E+02), ( 0.2623608810230E-08, 0.5010449777147E+01, 0.6436854655901E+01), ( 0.2079259704053E-08, 0.5980943768809E+01, 0.2019909489111E+02), ( 0.2820225596771E-08, 0.2679965110468E+01, 0.5934151399930E+01), ( 0.2365221950927E-08, 0.1894231148810E+01, 0.2470570524223E+02), ( 0.2359682077149E-08, 0.4220752950780E+01, 0.8671969964381E+01), //DATA ((E0(I,J,2),I=1,3),J=441,450)), ( 0.2387577137206E-08, 0.2571783940617E+01, 0.7096626156709E+01), ( 0.1982102089816E-08, 0.5169765997119E+00, 0.1727188400790E+02), ( 0.2687502389925E-08, 0.6239078264579E+01, 0.7075506709219E+02), ( 0.2207751669135E-08, 0.2031184412677E+01, 0.4377611041777E+01), ( 0.2618370214274E-08, 0.8266079985979E+00, 0.6632000300961E+01), ( 0.2591951887361E-08, 0.8819350522008E+00, 0.4873985990671E+02), ( 0.2375055656248E-08, 0.3520944177789E+01, 0.1590676413561E+02), ( 0.2472019978911E-08, 0.1551431908671E+01, 0.6612329252343E+00), ( 0.2368157127199E-08, 0.4178610147412E+01, 0.3459636466239E+02), ( 0.1764846605693E-08, 0.1506764000157E+01, 0.1980094587212E+02), //DATA ((E0(I,J,2),I=1,3),J=451,460)), ( 0.2291769608798E-08, 0.2118250611782E+01, 0.2844914056730E-01), ( 0.2209997316943E-08, 0.3363255261678E+01, 0.2666070658668E+00), ( 0.2292699097923E-08, 0.4200423956460E+00, 0.1484170571900E-02), ( 0.1629683015329E-08, 0.2331362582487E+01, 0.3035599730800E+02), ( 0.2206492862426E-08, 0.3400274026992E+01, 0.6281667977667E+01), ( 0.2205746568257E-08, 0.1066051230724E+00, 0.6284483723224E+01), ( 0.2026310767991E-08, 0.2779066487979E+01, 0.2449240616245E+02), ( 0.1762977622163E-08, 0.9951450691840E+00, 0.2045286941806E+02), ( 0.1368535049606E-08, 0.6402447365817E+00, 0.2473415438279E+02), ( 0.1720598775450E-08, 0.2303524214705E+00, 0.1679593901136E+03), //DATA ((E0(I,J,2),I=1,3),J=461,470)), ( 0.1702429015449E-08, 0.6164622655048E+01, 0.3338575901272E+03), ( 0.1414033197685E-08, 0.3954561185580E+01, 0.1624205518357E+03), ( 0.1573768958043E-08, 0.2028286308984E+01, 0.3144167757552E+02), ( 0.1650705184447E-08, 0.2304040666128E+01, 0.5267006960365E+02), ( 0.1651087618855E-08, 0.2538461057280E+01, 0.8956999012000E+02), ( 0.1616409518983E-08, 0.5111054348152E+01, 0.3332657872986E+02), ( 0.1537175173581E-08, 0.5601130666603E+01, 0.3852657435933E+02), ( 0.1593191980553E-08, 0.2614340453411E+01, 0.2282781046519E+03), ( 0.1499480170643E-08, 0.3624721577264E+01, 0.2823723341956E+02), ( 0.1493807843235E-08, 0.4214569879008E+01, 0.2876692439167E+02), //DATA ((E0(I,J,2),I=1,3),J=471,480)), ( 0.1074571199328E-08, 0.1496911744704E+00, 0.8397383534231E+02), ( 0.1074406983417E-08, 0.1187817671922E+01, 0.8401985929482E+02), ( 0.9757576855851E-09, 0.2655703035858E+01, 0.7826370942180E+02), ( 0.1258432887565E-08, 0.4969896184844E+01, 0.3115650189215E+03), ( 0.1240336343282E-08, 0.5192460776926E+01, 0.1784300471910E+03), ( 0.9016107005164E-09, 0.1960356923057E+01, 0.5886454391678E+02), ( 0.1135392360918E-08, 0.5082427809068E+01, 0.7842370451713E+02), ( 0.9216046089565E-09, 0.2793775037273E+01, 0.1014262087719E+03), ( 0.1061276615030E-08, 0.3726144311409E+01, 0.5660027930059E+02), ( 0.1010110596263E-08, 0.7404080708937E+00, 0.4245678405627E+02), //DATA ((E0(I,J,2),I=1,3),J=481,490)), ( 0.7217424756199E-09, 0.2697449980577E-01, 0.2457074661053E+03), ( 0.6912003846756E-09, 0.4253296276335E+01, 0.1679936946371E+03), ( 0.6871814664847E-09, 0.5148072412354E+01, 0.6053048899753E+02), ( 0.4887158016343E-09, 0.2153581148294E+01, 0.9656299901946E+02), ( 0.5161802866314E-09, 0.3852750634351E+01, 0.2442876000072E+03), ( 0.5652599559057E-09, 0.1233233356270E+01, 0.8365903305582E+02), ( 0.4710812608586E-09, 0.5610486976767E+01, 0.3164282286739E+03), ( 0.4909977500324E-09, 0.1639629524123E+01, 0.4059982187939E+03), ( 0.4772641839378E-09, 0.3737100368583E+01, 0.1805255418145E+03), ( 0.4487562567153E-09, 0.1158417054478E+00, 0.8433466158131E+02), //DATA ((E0(I,J,2),I=1,3),J=491,500)), ( 0.3943441230497E-09, 0.6243502862796E+00, 0.2568537517081E+03), ( 0.3952236913598E-09, 0.3510377382385E+01, 0.2449975330562E+03), ( 0.3788898363417E-09, 0.5916128302299E+01, 0.1568131045107E+03), ( 0.3738329328831E-09, 0.1042266763456E+01, 0.3948519331910E+03), ( 0.2451199165151E-09, 0.1166788435700E+01, 0.1435713242844E+03), ( 0.2436734402904E-09, 0.3254726114901E+01, 0.2268582385539E+03), ( 0.2213605274325E-09, 0.1687210598530E+01, 0.1658638954901E+03), ( 0.1491521204829E-09, 0.2657541786794E+01, 0.2219950288015E+03), ( 0.1474995329744E-09, 0.5013089805819E+01, 0.3052819430710E+03), ( 0.1661939475656E-09, 0.5495315428418E+01, 0.2526661704812E+03), //DATA ((E0(I,J,2),I=1,3),J=501,NE0Y)), ( 0.9015946748003E-10, 0.2236989966505E+01, 0.4171445043968E+03)), // Sun-to-Earth, T^0, Z ), //DATA ((E0(I,J,3),I=1,3),J= 1, 10)), (( 0.2796207639075E-05, 0.3198701560209E+01, 0.8433466158131E+02), ( 0.1016042198142E-05, 0.5422360395913E+01, 0.5507553240374E+01), ( 0.8044305033647E-06, 0.3880222866652E+01, 0.5223693906222E+01), ( 0.4385347909274E-06, 0.3704369937468E+01, 0.2352866153506E+01), ( 0.3186156414906E-06, 0.3999639363235E+01, 0.1577343543434E+01), ( 0.2272412285792E-06, 0.3984738315952E+01, 0.1047747311755E+01), ( 0.1645620103007E-06, 0.3565412516841E+01, 0.5856477690889E+01), ( 0.1815836921166E-06, 0.4984507059020E+01, 0.6283075850446E+01), ( 0.1447461676364E-06, 0.3702753570108E+01, 0.9437762937313E+01), ( 0.1430760876382E-06, 0.3409658712357E+01, 0.1021328554739E+02), //DATA ((E0(I,J,3),I=1,3),J= 11, 20)), ( 0.1120445753226E-06, 0.4829561570246E+01, 0.1414349524433E+02), ( 0.1090232840797E-06, 0.2080729178066E+01, 0.6812766822558E+01), ( 0.9715727346551E-07, 0.3476295881948E+01, 0.4694002934110E+01), ( 0.1036267136217E-06, 0.4056639536648E+01, 0.7109288135493E+02), ( 0.8752665271340E-07, 0.4448159519911E+01, 0.5753384878334E+01), ( 0.8331864956004E-07, 0.4991704044208E+01, 0.7084896783808E+01), ( 0.6901658670245E-07, 0.4325358994219E+01, 0.6275962395778E+01), ( 0.9144536848998E-07, 0.1141826375363E+01, 0.6620890113188E+01), ( 0.7205085037435E-07, 0.3624344170143E+01, 0.5296909721118E+00), ( 0.7697874654176E-07, 0.5554257458998E+01, 0.1676215758509E+03), //DATA ((E0(I,J,3),I=1,3),J= 21, 30)), ( 0.5197545738384E-07, 0.6251760961735E+01, 0.1807370494127E+02), ( 0.5031345378608E-07, 0.2497341091913E+01, 0.4705732307012E+01), ( 0.4527110205840E-07, 0.2335079920992E+01, 0.6309374173736E+01), ( 0.4753355798089E-07, 0.7094148987474E+00, 0.5884926831456E+01), ( 0.4296951977516E-07, 0.1101916352091E+01, 0.6681224869435E+01), ( 0.3855341568387E-07, 0.1825495405486E+01, 0.5486777812467E+01), ( 0.5253930970990E-07, 0.4424740687208E+01, 0.7860419393880E+01), ( 0.4024630496471E-07, 0.5120498157053E+01, 0.1336797263425E+02), ( 0.4061069791453E-07, 0.6029771435451E+01, 0.3930209696940E+01), ( 0.3797883804205E-07, 0.4435193600836E+00, 0.3154687086868E+01), //DATA ((E0(I,J,3),I=1,3),J= 31, 40)), ( 0.2933033225587E-07, 0.5124157356507E+01, 0.1059381944224E+01), ( 0.3503000930426E-07, 0.5421830162065E+01, 0.6069776770667E+01), ( 0.3670096214050E-07, 0.4582101667297E+01, 0.1219403291462E+02), ( 0.2905609437008E-07, 0.1926566420072E+01, 0.1097707878456E+02), ( 0.2466827821713E-07, 0.6090174539834E+00, 0.6496374930224E+01), ( 0.2691647295332E-07, 0.1393432595077E+01, 0.2200391463820E+02), ( 0.2150554667946E-07, 0.4308671715951E+01, 0.5643178611111E+01), ( 0.2237481922680E-07, 0.8133968269414E+00, 0.8635942003952E+01), ( 0.1817741038157E-07, 0.3755205127454E+01, 0.3340612434717E+01), ( 0.2227820762132E-07, 0.2759558596664E+01, 0.1203646072878E+02), //DATA ((E0(I,J,3),I=1,3),J= 41, 50)), ( 0.1944713772307E-07, 0.5699645869121E+01, 0.1179062909082E+02), ( 0.1527340520662E-07, 0.1986749091746E+01, 0.3981490189893E+00), ( 0.1577282574914E-07, 0.3205017217983E+01, 0.5088628793478E+01), ( 0.1424738825424E-07, 0.6256747903666E+01, 0.2544314396739E+01), ( 0.1616563121701E-07, 0.2601671259394E+00, 0.1729818233119E+02), ( 0.1401210391692E-07, 0.4686939173506E+01, 0.7058598460518E+01), ( 0.1488726974214E-07, 0.2815862451372E+01, 0.2593412433514E+02), ( 0.1692626442388E-07, 0.4956894109797E+01, 0.1564752902480E+03), ( 0.1123571582910E-07, 0.2381192697696E+01, 0.3738761453707E+01), ( 0.9903308606317E-08, 0.4294851657684E+01, 0.9225539266174E+01), //DATA ((E0(I,J,3),I=1,3),J= 51, 60)), ( 0.9174533187191E-08, 0.3075171510642E+01, 0.4164311961999E+01), ( 0.8645985631457E-08, 0.5477534821633E+00, 0.8429241228195E+01), ( -0.1085876492688E-07, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.9264309077815E-08, 0.5968571670097E+01, 0.7079373888424E+01), ( 0.8243116984954E-08, 0.1489098777643E+01, 0.1044738781244E+02), ( 0.8268102113708E-08, 0.3512977691983E+01, 0.1150676975667E+02), ( 0.9043613988227E-08, 0.1290704408221E+00, 0.1101510648075E+02), ( 0.7432912038789E-08, 0.1991086893337E+01, 0.2608790314060E+02), ( 0.8586233727285E-08, 0.4238357924414E+01, 0.2986433403208E+02), ( 0.7612230060131E-08, 0.2911090150166E+01, 0.4732030630302E+01), //DATA ((E0(I,J,3),I=1,3),J= 61, 70)), ( 0.7097787751408E-08, 0.1908938392390E+01, 0.8031092209206E+01), ( 0.7640237040175E-08, 0.6129219000168E+00, 0.7962980379786E+00), ( 0.7070445688081E-08, 0.1380417036651E+01, 0.2146165377750E+01), ( 0.7690770957702E-08, 0.1680504249084E+01, 0.2122839202813E+02), ( 0.8051292542594E-08, 0.5127423484511E+01, 0.2942463415728E+01), ( 0.5902709104515E-08, 0.2020274190917E+01, 0.7755226100720E+00), ( 0.5134567496462E-08, 0.2606778676418E+01, 0.1256615170089E+02), ( 0.5525802046102E-08, 0.1613011769663E+01, 0.8018209333619E+00), ( 0.5880724784221E-08, 0.4604483417236E+01, 0.4690479774488E+01), ( 0.5211699081370E-08, 0.5718964114193E+01, 0.8827390247185E+01), //DATA ((E0(I,J,3),I=1,3),J= 71, 80)), ( 0.4891849573562E-08, 0.3689658932196E+01, 0.2132990797783E+00), ( 0.5150246069997E-08, 0.4099769855122E+01, 0.6480980550449E+02), ( 0.5102434319633E-08, 0.5660834602509E+01, 0.3379454372902E+02), ( 0.5083405254252E-08, 0.9842221218974E+00, 0.4136910472696E+01), ( 0.4206562585682E-08, 0.1341363634163E+00, 0.3128388763578E+01), ( 0.4663249683579E-08, 0.8130132735866E+00, 0.5216580451554E+01), ( 0.4099474416530E-08, 0.5791497770644E+01, 0.4265981595566E+00), ( 0.4628251220767E-08, 0.1249802769331E+01, 0.1572083878776E+02), ( 0.5024068728142E-08, 0.4795684802743E+01, 0.6290189305114E+01), ( 0.5120234327758E-08, 0.3810420387208E+01, 0.5230807360890E+01), //DATA ((E0(I,J,3),I=1,3),J= 81, 90)), ( 0.5524029815280E-08, 0.1029264714351E+01, 0.2397622045175E+03), ( 0.4757415718860E-08, 0.3528044781779E+01, 0.1649636139783E+02), ( 0.3915786131127E-08, 0.5593889282646E+01, 0.1589072916335E+01), ( 0.4869053149991E-08, 0.3299636454433E+01, 0.7632943190217E+01), ( 0.3649365703729E-08, 0.1286049002584E+01, 0.6206810014183E+01), ( 0.3992493949002E-08, 0.3100307589464E+01, 0.2515860172507E+02), ( 0.3320247477418E-08, 0.6212683940807E+01, 0.1216800268190E+02), ( 0.3287123739696E-08, 0.4699118445928E+01, 0.7234794171227E+01), ( 0.3472776811103E-08, 0.2630507142004E+01, 0.7342457794669E+01), ( 0.3423253294767E-08, 0.2946432844305E+01, 0.9623688285163E+01), //DATA ((E0(I,J,3),I=1,3),J= 91,100)), ( 0.3896173898244E-08, 0.1224834179264E+01, 0.6438496133249E+01), ( 0.3388455337924E-08, 0.1543807616351E+01, 0.1494531617769E+02), ( 0.3062704716523E-08, 0.1191777572310E+01, 0.8662240327241E+01), ( 0.3270075600400E-08, 0.5483498767737E+01, 0.1194447056968E+01), ( 0.3101209215259E-08, 0.8000833804348E+00, 0.3772475342596E+02), ( 0.2780883347311E-08, 0.4077980721888E+00, 0.5863591145557E+01), ( 0.2903605931824E-08, 0.2617490302147E+01, 0.1965104848470E+02), ( 0.2682014743119E-08, 0.2634703158290E+01, 0.7238675589263E+01), ( 0.2534360108492E-08, 0.6102446114873E+01, 0.6836645152238E+01), ( 0.2392564882509E-08, 0.3681820208691E+01, 0.5849364236221E+01), //DATA ((E0(I,J,3),I=1,3),J=101,110)), ( 0.2656667254856E-08, 0.6216045388886E+01, 0.6133512519065E+01), ( 0.2331242096773E-08, 0.5864949777744E+01, 0.4535059491685E+01), ( 0.2287898363668E-08, 0.4566628532802E+01, 0.7477522907414E+01), ( 0.2336944521306E-08, 0.2442722126930E+01, 0.1137170464392E+02), ( 0.3156632236269E-08, 0.1626628050682E+01, 0.2509084901204E+03), ( 0.2982612402766E-08, 0.2803604512609E+01, 0.1748016358760E+01), ( 0.2774031674807E-08, 0.4654002897158E+01, 0.8223916695780E+02), ( 0.2295236548638E-08, 0.4326518333253E+01, 0.3378142627421E+00), ( 0.2190714699873E-08, 0.4519614578328E+01, 0.2908881142201E+02), ( 0.2191495845045E-08, 0.3012626912549E+01, 0.1673046366289E+02), //DATA ((E0(I,J,3),I=1,3),J=111,120)), ( 0.2492901628386E-08, 0.1290101424052E+00, 0.1543797956245E+03), ( 0.1993778064319E-08, 0.3864046799414E+01, 0.1778984560711E+02), ( 0.1898146479022E-08, 0.5053777235891E+01, 0.2042657109477E+02), ( 0.1918280127634E-08, 0.2222470192548E+01, 0.4165496312290E+02), ( 0.1916351061607E-08, 0.8719067257774E+00, 0.7737595720538E+02), ( 0.1834720181466E-08, 0.4031491098040E+01, 0.2358125818164E+02), ( 0.1249201523806E-08, 0.5938379466835E+01, 0.3301902111895E+02), ( 0.1477304050539E-08, 0.6544722606797E+00, 0.9548094718417E+02), ( 0.1264316431249E-08, 0.2059072853236E+01, 0.8399684731857E+02), ( 0.1203526495039E-08, 0.3644813532605E+01, 0.4558517281984E+02), //DATA ((E0(I,J,3),I=1,3),J=121,130)), ( 0.9221681059831E-09, 0.3241815055602E+01, 0.7805158573086E+02), ( 0.7849278367646E-09, 0.5043812342457E+01, 0.5217580628120E+02), ( 0.7983392077387E-09, 0.5000024502753E+01, 0.1501922143975E+03), ( 0.7925395431654E-09, 0.1398734871821E-01, 0.9061773743175E+02), ( 0.7640473285886E-09, 0.5067111723130E+01, 0.4951538251678E+02), ( 0.5398937754482E-09, 0.5597382200075E+01, 0.1613385000004E+03), ( 0.5626247550193E-09, 0.2601338209422E+01, 0.7318837597844E+02), ( 0.5525197197855E-09, 0.5814832109256E+01, 0.1432335100216E+03), ( 0.5407629837898E-09, 0.3384820609076E+01, 0.3230491187871E+03), ( 0.3856739119801E-09, 0.1072391840473E+01, 0.2334791286671E+03), //DATA ((E0(I,J,3),I=1,3),J=131,NE0Z)), ( 0.3856425239987E-09, 0.2369540393327E+01, 0.1739046517013E+03), ( 0.4350867755983E-09, 0.5255575751082E+01, 0.1620484330494E+03), ( 0.3844113924996E-09, 0.5482356246182E+01, 0.9757644180768E+02), ( 0.2854869155431E-09, 0.9573634763143E+00, 0.1697170704744E+03), ( 0.1719227671416E-09, 0.1887203025202E+01, 0.2265204242912E+03), ( 0.1527846879755E-09, 0.3982183931157E+01, 0.3341954043900E+03), ( 0.1128229264847E-09, 0.2787457156298E+01, 0.3119028331842E+03), ( 0 , 0, 0 ), {not used} ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ), ( 0 , 0, 0 ))); //* Sun-to-Earth, T^1, X ), E1: array[1..3,1..ME1,1..3] of double = {80} //DATA ((E1(I,J,1),I=1,3),J= 1, 10)), ((( 0.1234046326004E-05, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.5150068824701E-06, 0.6002664557501E+01, 0.1256615170089E+02), ( 0.1290743923245E-07, 0.5959437664199E+01, 0.1884922755134E+02), ( 0.1068615564952E-07, 0.2015529654209E+01, 0.6283075850446E+01), ( 0.2079619142538E-08, 0.1732960531432E+01, 0.6279552690824E+01), ( 0.2078009243969E-08, 0.4915604476996E+01, 0.6286599010068E+01), ( 0.6206330058856E-09, 0.3616457953824E+00, 0.4705732307012E+01), ( 0.5989335313746E-09, 0.3802607304474E+01, 0.6256777527156E+01), ( 0.5958495663840E-09, 0.2845866560031E+01, 0.6309374173736E+01), ( 0.4866923261539E-09, 0.5213203771824E+01, 0.7755226100720E+00), //DATA ((E1(I,J,1),I=1,3),J= 11, 20)), ( 0.4267785823142E-09, 0.4368189727818E+00, 0.1059381944224E+01), ( 0.4610675141648E-09, 0.1837249181372E-01, 0.7860419393880E+01), ( 0.3626989993973E-09, 0.2161590545326E+01, 0.5753384878334E+01), ( 0.3563071194389E-09, 0.1452631954746E+01, 0.5884926831456E+01), ( 0.3557015642807E-09, 0.4470593393054E+01, 0.6812766822558E+01), ( 0.3210412089122E-09, 0.5195926078314E+01, 0.6681224869435E+01), ( 0.2875473577986E-09, 0.5916256610193E+01, 0.2513230340178E+02), ( 0.2842913681629E-09, 0.1149902426047E+01, 0.6127655567643E+01), ( 0.2751248215916E-09, 0.5502088574662E+01, 0.6438496133249E+01), ( 0.2481432881127E-09, 0.2921989846637E+01, 0.5486777812467E+01), //DATA ((E1(I,J,1),I=1,3),J= 21, 30)), ( 0.2059885976560E-09, 0.3718070376585E+01, 0.7079373888424E+01), ( 0.2015522342591E-09, 0.5979395259740E+01, 0.6290189305114E+01), ( 0.1995364084253E-09, 0.6772087985494E+00, 0.6275962395778E+01), ( 0.1957436436943E-09, 0.2899210654665E+01, 0.5507553240374E+01), ( 0.1651609818948E-09, 0.6228206482192E+01, 0.1150676975667E+02), ( 0.1822980550699E-09, 0.1469348746179E+01, 0.1179062909082E+02), ( 0.1675223159760E-09, 0.3813910555688E+01, 0.7058598460518E+01), ( 0.1706491764745E-09, 0.3004380506684E+00, 0.7113454667900E-02), ( 0.1392952362615E-09, 0.1440393973406E+01, 0.7962980379786E+00), ( 0.1209868266342E-09, 0.4150425791727E+01, 0.4694002934110E+01), //DATA ((E1(I,J,1),I=1,3),J= 31, 40)), ( 0.1009827202611E-09, 0.3290040429843E+01, 0.3738761453707E+01), ( 0.1047261388602E-09, 0.4229590090227E+01, 0.6282095334605E+01), ( 0.1047006652004E-09, 0.2418967680575E+01, 0.6284056366286E+01), ( 0.9609993143095E-10, 0.4627943659201E+01, 0.6069776770667E+01), ( 0.9590900593873E-10, 0.1894393939924E+01, 0.4136910472696E+01), ( 0.9146249188071E-10, 0.2010647519562E+01, 0.6496374930224E+01), ( 0.8545274480290E-10, 0.5529846956226E-01, 0.1194447056968E+01), ( 0.8224377881194E-10, 0.1254304102174E+01, 0.1589072916335E+01), ( 0.6183529510410E-10, 0.3360862168815E+01, 0.8827390247185E+01), ( 0.6259255147141E-10, 0.4755628243179E+01, 0.8429241228195E+01), //DATA ((E1(I,J,1),I=1,3),J= 41, 50)), ( 0.5539291694151E-10, 0.5371746955142E+01, 0.4933208510675E+01), ( 0.7328259466314E-10, 0.4927699613906E+00, 0.4535059491685E+01), ( 0.6017835843560E-10, 0.5776682001734E-01, 0.1255903824622E+02), ( 0.7079827775243E-10, 0.4395059432251E+01, 0.5088628793478E+01), ( 0.5170358878213E-10, 0.5154062619954E+01, 0.1176985366291E+02), ( 0.4872301838682E-10, 0.6289611648973E+00, 0.6040347114260E+01), ( 0.5249869411058E-10, 0.5617272046949E+01, 0.3154687086868E+01), ( 0.4716172354411E-10, 0.3965901800877E+01, 0.5331357529664E+01), ( 0.4871214940964E-10, 0.4627507050093E+01, 0.1256967486051E+02), ( 0.4598076850751E-10, 0.6023631226459E+01, 0.6525804586632E+01), //DATA ((E1(I,J,1),I=1,3),J= 51, 60)), ( 0.4562196089485E-10, 0.4138562084068E+01, 0.3930209696940E+01), ( 0.4325493872224E-10, 0.1330845906564E+01, 0.7632943190217E+01), ( 0.5673781176748E-10, 0.2558752615657E+01, 0.5729506548653E+01), ( 0.3961436642503E-10, 0.2728071734630E+01, 0.7234794171227E+01), ( 0.5101868209058E-10, 0.4113444965144E+01, 0.6836645152238E+01), ( 0.5257043167676E-10, 0.6195089830590E+01, 0.8031092209206E+01), ( 0.5076613989393E-10, 0.2305124132918E+01, 0.7477522907414E+01), ( 0.3342169352778E-10, 0.5415998155071E+01, 0.1097707878456E+02), ( 0.3545881983591E-10, 0.3727160564574E+01, 0.4164311961999E+01), ( 0.3364063738599E-10, 0.2901121049204E+00, 0.1137170464392E+02), //DATA ((E1(I,J,1),I=1,3),J= 61, 70)), ( 0.3357039670776E-10, 0.1652229354331E+01, 0.5223693906222E+01), ( 0.4307412268687E-10, 0.4938909587445E+01, 0.1592596075957E+01), ( 0.3405769115435E-10, 0.2408890766511E+01, 0.3128388763578E+01), ( 0.3001926198480E-10, 0.4862239006386E+01, 0.1748016358760E+01), ( 0.2778264787325E-10, 0.5241168661353E+01, 0.7342457794669E+01), ( 0.2676159480666E-10, 0.3423593942199E+01, 0.2146165377750E+01), ( 0.2954273399939E-10, 0.1881721265406E+01, 0.5368044267797E+00), ( 0.3309362888795E-10, 0.1931525677349E+01, 0.8018209333619E+00), ( 0.2810283608438E-10, 0.2414659495050E+01, 0.5225775174439E+00), ( 0.3378045637764E-10, 0.4238019163430E+01, 0.1554202828031E+00), //DATA ((E1(I,J,1),I=1,3),J= 71,NE1X)), ( 0.2558134979840E-10, 0.1828225235805E+01, 0.5230807360890E+01), ( 0.2273755578447E-10, 0.5858184283998E+01, 0.7084896783808E+01), ( 0.2294176037690E-10, 0.4514589779057E+01, 0.1726015463500E+02), ( 0.2533506099435E-10, 0.2355717851551E+01, 0.5216580451554E+01), ( 0.2716685375812E-10, 0.2221003625100E+01, 0.8635942003952E+01), ( 0.2419043435198E-10, 0.5955704951635E+01, 0.4690479774488E+01), ( 0.2521232544812E-10, 0.1395676848521E+01, 0.5481254917084E+01), ( 0.2630195021491E-10, 0.5727468918743E+01, 0.2629832328990E-01), ( 0.2548395840944E-10, 0.2628351859400E-03, 0.1349867339771E+01), ( 0 , 0 , 0 )), //* Sun-to-Earth, T^1, Y ), //DATA ((E1(I,J,2),I=1,3),J= 1, 10)), (( 0.9304690546528E-06, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.5150715570663E-06, 0.4431807116294E+01, 0.1256615170089E+02), ( 0.1290825411056E-07, 0.4388610039678E+01, 0.1884922755134E+02), ( 0.4645466665386E-08, 0.5827263376034E+01, 0.6283075850446E+01), ( 0.2079625310718E-08, 0.1621698662282E+00, 0.6279552690824E+01), ( 0.2078189850907E-08, 0.3344713435140E+01, 0.6286599010068E+01), ( 0.6207190138027E-09, 0.5074049319576E+01, 0.4705732307012E+01), ( 0.5989826532569E-09, 0.2231842216620E+01, 0.6256777527156E+01), ( 0.5961360812618E-09, 0.1274975769045E+01, 0.6309374173736E+01), ( 0.4874165471016E-09, 0.3642277426779E+01, 0.7755226100720E+00), //DATA ((E1(I,J,2),I=1,3),J= 11, 20)), ( 0.4283834034360E-09, 0.5148765510106E+01, 0.1059381944224E+01), ( 0.4652389287529E-09, 0.4715794792175E+01, 0.7860419393880E+01), ( 0.3751707476401E-09, 0.6617207370325E+00, 0.5753384878334E+01), ( 0.3559998806198E-09, 0.6155548875404E+01, 0.5884926831456E+01), ( 0.3558447558857E-09, 0.2898827297664E+01, 0.6812766822558E+01), ( 0.3211116927106E-09, 0.3625813502509E+01, 0.6681224869435E+01), ( 0.2875609914672E-09, 0.4345435813134E+01, 0.2513230340178E+02), ( 0.2843109704069E-09, 0.5862263940038E+01, 0.6127655567643E+01), ( 0.2744676468427E-09, 0.3926419475089E+01, 0.6438496133249E+01), ( 0.2481285237789E-09, 0.1351976572828E+01, 0.5486777812467E+01), //DATA ((E1(I,J,2),I=1,3),J= 21, 30)), ( 0.2060338481033E-09, 0.2147556998591E+01, 0.7079373888424E+01), ( 0.2015822358331E-09, 0.4408358972216E+01, 0.6290189305114E+01), ( 0.2001195944195E-09, 0.5385829822531E+01, 0.6275962395778E+01), ( 0.1953667642377E-09, 0.1304933746120E+01, 0.5507553240374E+01), ( 0.1839744078713E-09, 0.6173567228835E+01, 0.1179062909082E+02), ( 0.1643334294845E-09, 0.4635942997523E+01, 0.1150676975667E+02), ( 0.1768051018652E-09, 0.5086283558874E+01, 0.7113454667900E-02), ( 0.1674874205489E-09, 0.2243332137241E+01, 0.7058598460518E+01), ( 0.1421445397609E-09, 0.6186899771515E+01, 0.7962980379786E+00), ( 0.1255163958267E-09, 0.5730238465658E+01, 0.4694002934110E+01), //DATA ((E1(I,J,2),I=1,3),J= 31, 40)), ( 0.1013945281961E-09, 0.1726055228402E+01, 0.3738761453707E+01), ( 0.1047294335852E-09, 0.2658801228129E+01, 0.6282095334605E+01), ( 0.1047103879392E-09, 0.8481047835035E+00, 0.6284056366286E+01), ( 0.9530343962826E-10, 0.3079267149859E+01, 0.6069776770667E+01), ( 0.9604637611690E-10, 0.3258679792918E+00, 0.4136910472696E+01), ( 0.9153518537177E-10, 0.4398599886584E+00, 0.6496374930224E+01), ( 0.8562458214922E-10, 0.4772686794145E+01, 0.1194447056968E+01), ( 0.8232525360654E-10, 0.5966220721679E+01, 0.1589072916335E+01), ( 0.6150223411438E-10, 0.1780985591923E+01, 0.8827390247185E+01), ( 0.6272087858000E-10, 0.3184305429012E+01, 0.8429241228195E+01), //DATA ((E1(I,J,2),I=1,3),J= 41, 50)), ( 0.5540476311040E-10, 0.3801260595433E+01, 0.4933208510675E+01), ( 0.7331901699361E-10, 0.5205948591865E+01, 0.4535059491685E+01), ( 0.6018528702791E-10, 0.4770139083623E+01, 0.1255903824622E+02), ( 0.5150530724804E-10, 0.3574796899585E+01, 0.1176985366291E+02), ( 0.6471933741811E-10, 0.2679787266521E+01, 0.5088628793478E+01), ( 0.5317460644174E-10, 0.9528763345494E+00, 0.3154687086868E+01), ( 0.4832187748783E-10, 0.5329322498232E+01, 0.6040347114260E+01), ( 0.4716763555110E-10, 0.2395235316466E+01, 0.5331357529664E+01), ( 0.4871509139861E-10, 0.3056663648823E+01, 0.1256967486051E+02), ( 0.4598417696768E-10, 0.4452762609019E+01, 0.6525804586632E+01), //DATA ((E1(I,J,2),I=1,3),J= 51, 60)), ( 0.5674189533175E-10, 0.9879680872193E+00, 0.5729506548653E+01), ( 0.4073560328195E-10, 0.5939127696986E+01, 0.7632943190217E+01), ( 0.5040994945359E-10, 0.4549875824510E+01, 0.8031092209206E+01), ( 0.5078185134679E-10, 0.7346659893982E+00, 0.7477522907414E+01), ( 0.3769343537061E-10, 0.1071317188367E+01, 0.7234794171227E+01), ( 0.4980331365299E-10, 0.2500345341784E+01, 0.6836645152238E+01), ( 0.3458236594757E-10, 0.3825159450711E+01, 0.1097707878456E+02), ( 0.3578859493602E-10, 0.5299664791549E+01, 0.4164311961999E+01), ( 0.3370504646419E-10, 0.5002316301593E+01, 0.1137170464392E+02), ( 0.3299873338428E-10, 0.2526123275282E+01, 0.3930209696940E+01), //DATA ((E1(I,J,2),I=1,3),J= 61, 70)), ( 0.4304917318409E-10, 0.3368078557132E+01, 0.1592596075957E+01), ( 0.3402418753455E-10, 0.8385495425800E+00, 0.3128388763578E+01), ( 0.2778460572146E-10, 0.3669905203240E+01, 0.7342457794669E+01), ( 0.2782710128902E-10, 0.2691664812170E+00, 0.1748016358760E+01), ( 0.2711725179646E-10, 0.4707487217718E+01, 0.5296909721118E+00), ( 0.2981760946340E-10, 0.3190260867816E+00, 0.5368044267797E+00), ( 0.2811672977772E-10, 0.3196532315372E+01, 0.7084896783808E+01), ( 0.2863454474467E-10, 0.2263240324780E+00, 0.5223693906222E+01), ( 0.3333464634051E-10, 0.3498451685065E+01, 0.8018209333619E+00), ( 0.3312991747609E-10, 0.5839154477412E+01, 0.1554202828031E+00), //DATA ((E1(I,J,2),I=1,3),J= 71,NE1Y)), ( 0.2813255564006E-10, 0.8268044346621E+00, 0.5225775174439E+00), ( 0.2665098083966E-10, 0.3934021725360E+01, 0.5216580451554E+01), ( 0.2349795705216E-10, 0.5197620913779E+01, 0.2146165377750E+01), ( 0.2330352293961E-10, 0.2984999231807E+01, 0.1726015463500E+02), ( 0.2728001683419E-10, 0.6521679638544E+00, 0.8635942003952E+01), ( 0.2484061007669E-10, 0.3468955561097E+01, 0.5230807360890E+01), ( 0.2646328768427E-10, 0.1013724533516E+01, 0.2629832328990E-01), ( 0.2518630264831E-10, 0.6108081057122E+01, 0.5481254917084E+01), ( 0.2421901455384E-10, 0.1651097776260E+01, 0.1349867339771E+01), ( 0.6348533267831E-11, 0.3220226560321E+01, 0.8433466158131E+02)), // Sun-to-Earth, T^1, Z ), //DATA ((E1(I,J,3),I=1,3),J= 1, 10)), (( 0.2278290449966E-05, 0.3413716033863E+01, 0.6283075850446E+01), ( 0.5429458209830E-07, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.1903240492525E-07, 0.3370592358297E+01, 0.1256615170089E+02), ( 0.2385409276743E-09, 0.3327914718416E+01, 0.1884922755134E+02), ( 0.8676928342573E-10, 0.1824006811264E+01, 0.5223693906222E+01), ( 0.7765442593544E-10, 0.3888564279247E+01, 0.5507553240374E+01), ( 0.7066158332715E-10, 0.5194267231944E+01, 0.2352866153506E+01), ( 0.7092175288657E-10, 0.2333246960021E+01, 0.8399684731857E+02), ( 0.5357582213535E-10, 0.2224031176619E+01, 0.5296909721118E+00), ( 0.3828035865021E-10, 0.2156710933584E+01, 0.6279552690824E+01), //DATA ((E1(I,J,3),I=1,3),J= 11,NE1Z)), ( 0.3824857220427E-10, 0.1529755219915E+01, 0.6286599010068E+01), ( 0.3286995181628E-10, 0.4879512900483E+01, 0.1021328554739E+02), ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 ),{not used} ( 0 , 0 , 0 )));{not used} //Sun-to-Earth, T^2, X //DATA ((E2(I,J,1),I=1,3),J= 1,NE2X) / E2: array[1..3,1..ME2,1..3] of double= {5} ((( -0.4143818297913E-10, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.2171497694435E-10, 0.4398225628264E+01, 0.1256615170089E+02), ( 0.9845398442516E-11, 0.2079720838384E+00, 0.6283075850446E+01), ( 0.9256833552682E-12, 0.4191264694361E+01, 0.1884922755134E+02), ( 0.1022049384115E-12, 0.5381133195658E+01, 0.8399684731857E+02)), //* Sun-to-Earth, T^2, Y ), //DATA ((E2(I,J,2),I=1,3),J= 1,NE2Y)), (( 0.5063375872532E-10, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.2173815785980E-10, 0.2827805833053E+01, 0.1256615170089E+02), ( 0.1010231999920E-10, 0.4634612377133E+01, 0.6283075850446E+01), ( 0.9259745317636E-12, 0.2620612076189E+01, 0.1884922755134E+02), ( 0.1022202095812E-12, 0.3809562326066E+01, 0.8399684731857E+02)), //* Sun-to-Earth, T^2, Z ), //DATA ((E2(I,J,3),I=1,3),J= 1,NE2Z)), (( 0.9722666114891E-10, 0.5152219582658E+01, 0.6283075850446E+01), ( -0.3494819171909E-11, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.6713034376076E-12, 0.6440188750495E+00, 0.1256615170089E+02), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ))); //* SSB-to-Sun, T^0, X ), //DATA ((S0(I,J,1),I=1,3),J= 1, 10)), S0 : array[1..3,1..MS0,1..3] of double= ((( 0.4956757536410E-02, 0.3741073751789E+01, 0.5296909721118E+00), ( 0.2718490072522E-02, 0.4016011511425E+01, 0.2132990797783E+00), ( 0.1546493974344E-02, 0.2170528330642E+01, 0.3813291813120E-01), ( 0.8366855276341E-03, 0.2339614075294E+01, 0.7478166569050E-01), ( 0.2936777942117E-03, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.1201317439469E-03, 0.4090736353305E+01, 0.1059381944224E+01), ( 0.7578550887230E-04, 0.3241518088140E+01, 0.4265981595566E+00), ( 0.1941787367773E-04, 0.1012202064330E+01, 0.2061856251104E+00), ( 0.1889227765991E-04, 0.3892520416440E+01, 0.2204125344462E+00), ( 0.1937896968613E-04, 0.4797779441161E+01, 0.1495633313810E+00), //DATA ((S0(I,J,1),I=1,3),J= 11, 20)), ( 0.1434506110873E-04, 0.3868960697933E+01, 0.5225775174439E+00), ( 0.1406659911580E-04, 0.4759766557397E+00, 0.5368044267797E+00), ( 0.1179022300202E-04, 0.7774961520598E+00, 0.7626583626240E-01), ( 0.8085864460959E-05, 0.3254654471465E+01, 0.3664874755930E-01), ( 0.7622752967615E-05, 0.4227633103489E+01, 0.3961708870310E-01), ( 0.6209171139066E-05, 0.2791828325711E+00, 0.7329749511860E-01), ( 0.4366435633970E-05, 0.4440454875925E+01, 0.1589072916335E+01), ( 0.3792124889348E-05, 0.5156393842356E+01, 0.7113454667900E-02), ( 0.3154548963402E-05, 0.6157005730093E+01, 0.4194847048887E+00), ( 0.3088359882942E-05, 0.2494567553163E+01, 0.6398972393349E+00), //DATA ((S0(I,J,1),I=1,3),J= 21, 30)), ( 0.2788440902136E-05, 0.4934318747989E+01, 0.1102062672231E+00), ( 0.3039928456376E-05, 0.4895077702640E+01, 0.6283075850446E+01), ( 0.2272258457679E-05, 0.5278394064764E+01, 0.1030928125552E+00), ( 0.2162007057957E-05, 0.5802978019099E+01, 0.3163918923335E+00), ( 0.1767632855737E-05, 0.3415346595193E-01, 0.1021328554739E+02), ( 0.1349413459362E-05, 0.2001643230755E+01, 0.1484170571900E-02), ( 0.1170141900476E-05, 0.2424750491620E+01, 0.6327837846670E+00), ( 0.1054355266820E-05, 0.3123311487576E+01, 0.4337116142245E+00), ( 0.9800822461610E-06, 0.3026258088130E+01, 0.1052268489556E+01), ( 0.1091203749931E-05, 0.3157811670347E+01, 0.1162474756779E+01), //DATA ((S0(I,J,1),I=1,3),J= 31, 40)), ( 0.6960236715913E-06, 0.8219570542313E+00, 0.1066495398892E+01), ( 0.5689257296909E-06, 0.1323052375236E+01, 0.9491756770005E+00), ( 0.6613172135802E-06, 0.2765348881598E+00, 0.8460828644453E+00), ( 0.6277702517571E-06, 0.5794064466382E+01, 0.1480791608091E+00), ( 0.6304884066699E-06, 0.7323555380787E+00, 0.2243449970715E+00), ( 0.4897850467382E-06, 0.3062464235399E+01, 0.3340612434717E+01), ( 0.3759148598786E-06, 0.4588290469664E+01, 0.3516457698740E-01), ( 0.3110520548195E-06, 0.1374299536572E+01, 0.6373574839730E-01), ( 0.3064708359780E-06, 0.4222267485047E+01, 0.1104591729320E-01), ( 0.2856347168241E-06, 0.3714202944973E+01, 0.1510475019529E+00), //DATA ((S0(I,J,1),I=1,3),J= 41, 50)), ( 0.2840945514288E-06, 0.2847972875882E+01, 0.4110125927500E-01), ( 0.2378951599405E-06, 0.3762072563388E+01, 0.2275259891141E+00), ( 0.2714229481417E-06, 0.1036049980031E+01, 0.2535050500000E-01), ( 0.2323551717307E-06, 0.4682388599076E+00, 0.8582758298370E-01), ( 0.1881790512219E-06, 0.4790565425418E+01, 0.2118763888447E+01), ( 0.2261353968371E-06, 0.1669144912212E+01, 0.7181332454670E-01), ( 0.2214546389848E-06, 0.3937717281614E+01, 0.2968341143800E-02), ( 0.2184915594933E-06, 0.1129169845099E+00, 0.7775000683430E-01), ( 0.2000164937936E-06, 0.4030009638488E+01, 0.2093666171530E+00), ( 0.1966105136719E-06, 0.8745955786834E+00, 0.2172315424036E+00), //DATA ((S0(I,J,1),I=1,3),J= 51, 60)), ( 0.1904742332624E-06, 0.5919743598964E+01, 0.2022531624851E+00), ( 0.1657399705031E-06, 0.2549141484884E+01, 0.7358765972222E+00), ( 0.1574070533987E-06, 0.5277533020230E+01, 0.7429900518901E+00), ( 0.1832261651039E-06, 0.3064688127777E+01, 0.3235053470014E+00), ( 0.1733615346569E-06, 0.3011432799094E+01, 0.1385174140878E+00), ( 0.1549124014496E-06, 0.4005569132359E+01, 0.5154640627760E+00), ( 0.1637044713838E-06, 0.1831375966632E+01, 0.8531963191132E+00), ( 0.1123420082383E-06, 0.1180270407578E+01, 0.1990721704425E+00), ( 0.1083754165740E-06, 0.3414101320863E+00, 0.5439178814476E+00), ( 0.1156638012655E-06, 0.6130479452594E+00, 0.5257585094865E+00), //DATA ((S0(I,J,1),I=1,3),J= 61, 70)), ( 0.1142548785134E-06, 0.3724761948846E+01, 0.5336234347371E+00), ( 0.7921463895965E-07, 0.2435425589361E+01, 0.1478866649112E+01), ( 0.7428600285231E-07, 0.3542144398753E+01, 0.2164800718209E+00), ( 0.8323211246747E-07, 0.3525058072354E+01, 0.1692165728891E+01), ( 0.7257595116312E-07, 0.1364299431982E+01, 0.2101180877357E+00), ( 0.7111185833236E-07, 0.2460478875808E+01, 0.4155522422634E+00), ( 0.6868090383716E-07, 0.4397327670704E+01, 0.1173197218910E+00), ( 0.7226419974175E-07, 0.4042647308905E+01, 0.1265567569334E+01), ( 0.6955642383177E-07, 0.2865047906085E+01, 0.9562891316684E+00), ( 0.7492139296331E-07, 0.5014278994215E+01, 0.1422690933580E-01), //DATA ((S0(I,J,1),I=1,3),J= 71, 80)), ( 0.6598363128857E-07, 0.2376730020492E+01, 0.6470106940028E+00), ( 0.7381147293385E-07, 0.3272990384244E+01, 0.1581959461667E+01), ( 0.6402909624032E-07, 0.5302290955138E+01, 0.9597935788730E-01), ( 0.6237454263857E-07, 0.5444144425332E+01, 0.7084920306520E-01), ( 0.5241198544016E-07, 0.4215359579205E+01, 0.5265099800692E+00), ( 0.5144463853918E-07, 0.1218916689916E+00, 0.5328719641544E+00), ( 0.5868164772299E-07, 0.2369402002213E+01, 0.7871412831580E-01), ( 0.6233195669151E-07, 0.1254922242403E+01, 0.2608790314060E+02), ( 0.6068463791422E-07, 0.5679713760431E+01, 0.1114304132498E+00), ( 0.4359361135065E-07, 0.6097219641646E+00, 0.1375773836557E+01), //DATA ((S0(I,J,1),I=1,3),J= 81, 90)), ( 0.4686510366826E-07, 0.4786231041431E+01, 0.1143987543936E+00), ( 0.3758977287225E-07, 0.1167368068139E+01, 0.1596186371003E+01), ( 0.4282051974778E-07, 0.1519471064319E+01, 0.2770348281756E+00), ( 0.5153765386113E-07, 0.1860532322984E+01, 0.2228608264996E+00), ( 0.4575129387188E-07, 0.7632857887158E+00, 0.1465949902372E+00), ( 0.3326844933286E-07, 0.1298219485285E+01, 0.5070101000000E-01), ( 0.3748617450984E-07, 0.1046510321062E+01, 0.4903339079539E+00), ( 0.2816756661499E-07, 0.3434522346190E+01, 0.2991266627620E+00), ( 0.3412750405039E-07, 0.2523766270318E+01, 0.3518164938661E+00), ( 0.2655796761776E-07, 0.2904422260194E+01, 0.6256703299991E+00), //DATA ((S0(I,J,1),I=1,3),J= 91,100)), ( 0.2963597929458E-07, 0.5923900431149E+00, 0.1099462426779E+00), ( 0.2539523734781E-07, 0.4851947722567E+01, 0.1256615170089E+02), ( 0.2283087914139E-07, 0.3400498595496E+01, 0.6681224869435E+01), ( 0.2321309799331E-07, 0.5789099148673E+01, 0.3368040641550E-01), ( 0.2549657649750E-07, 0.3991856479792E-01, 0.1169588211447E+01), ( 0.2290462303977E-07, 0.2788567577052E+01, 0.1045155034888E+01), ( 0.1945398522914E-07, 0.3290896998176E+01, 0.1155361302111E+01), ( 0.1849171512638E-07, 0.2698060129367E+01, 0.4452511715700E-02), ( 0.1647199834254E-07, 0.3016735644085E+01, 0.4408250688924E+00), ( 0.1529530765273E-07, 0.5573043116178E+01, 0.6521991896920E-01), //DATA ((S0(I,J,1),I=1,3),J=101,110)), ( 0.1433199339978E-07, 0.1481192356147E+01, 0.9420622223326E+00), ( 0.1729134193602E-07, 0.1422817538933E+01, 0.2108507877249E+00), ( 0.1716463931346E-07, 0.3469468901855E+01, 0.2157473718317E+00), ( 0.1391206061378E-07, 0.6122436220547E+01, 0.4123712502208E+00), ( 0.1404746661924E-07, 0.1647765641936E+01, 0.4258542984690E-01), ( 0.1410452399455E-07, 0.5989729161964E+01, 0.2258291676434E+00), ( 0.1089828772168E-07, 0.2833705509371E+01, 0.4226656969313E+00), ( 0.1047374564948E-07, 0.5090690007331E+00, 0.3092784376656E+00), ( 0.1358279126532E-07, 0.5128990262836E+01, 0.7923417740620E-01), ( 0.1020456476148E-07, 0.9632772880808E+00, 0.1456308687557E+00), //DATA ((S0(I,J,1),I=1,3),J=111,120)), ( 0.1033428735328E-07, 0.3223779318418E+01, 0.1795258541446E+01), ( 0.1412435841540E-07, 0.2410271572721E+01, 0.1525316725248E+00), ( 0.9722759371574E-08, 0.2333531395690E+01, 0.8434341241180E-01), ( 0.9657334084704E-08, 0.6199270974168E+01, 0.1272681024002E+01), ( 0.1083641148690E-07, 0.2864222292929E+01, 0.7032915397480E-01), ( 0.1067318403838E-07, 0.5833458866568E+00, 0.2123349582968E+00), ( 0.1062366201976E-07, 0.4307753989494E+01, 0.2142632012598E+00), ( 0.1236364149266E-07, 0.2873917870593E+01, 0.1847279083684E+00), ( 0.1092759489593E-07, 0.2959887266733E+01, 0.1370332435159E+00), ( 0.8912069362899E-08, 0.5141213702562E+01, 0.2648454860559E+01), //DATA ((S0(I,J,1),I=1,3),J=121,130)), ( 0.9656467707970E-08, 0.4532182462323E+01, 0.4376440768498E+00), ( 0.8098386150135E-08, 0.2268906338379E+01, 0.2880807454688E+00), ( 0.7857714675000E-08, 0.4055544260745E+01, 0.2037373330570E+00), ( 0.7288455940646E-08, 0.5357901655142E+01, 0.1129145838217E+00), ( 0.9450595950552E-08, 0.4264926963939E+01, 0.5272426800584E+00), ( 0.9381718247537E-08, 0.7489366976576E-01, 0.5321392641652E+00), ( 0.7079052646038E-08, 0.1923311052874E+01, 0.6288513220417E+00), ( 0.9259004415344E-08, 0.2970256853438E+01, 0.1606092486742E+00), ( 0.8259801499742E-08, 0.3327056314697E+01, 0.8389694097774E+00), ( 0.6476334355779E-08, 0.2954925505727E+01, 0.2008557621224E+01), //DATA ((S0(I,J,1),I=1,3),J=131,140)), ( 0.5984021492007E-08, 0.9138753105829E+00, 0.2042657109477E+02), ( 0.5989546863181E-08, 0.3244464082031E+01, 0.2111650433779E+01), ( 0.6233108606023E-08, 0.4995232638403E+00, 0.4305306221819E+00), ( 0.6877299149965E-08, 0.2834987233449E+01, 0.9561746721300E-02), ( 0.8311234227190E-08, 0.2202951835758E+01, 0.3801276407308E+00), ( 0.6599472832414E-08, 0.4478581462618E+01, 0.1063314406849E+01), ( 0.6160491096549E-08, 0.5145858696411E+01, 0.1368660381889E+01), ( 0.6164772043891E-08, 0.3762976697911E+00, 0.4234171675140E+00), ( 0.6363248684450E-08, 0.3162246718685E+01, 0.1253008786510E-01), ( 0.6448587520999E-08, 0.3442693302119E+01, 0.5287268506303E+00), //DATA ((S0(I,J,1),I=1,3),J=141,150)), ( 0.6431662283977E-08, 0.8977549136606E+00, 0.5306550935933E+00), ( 0.6351223158474E-08, 0.4306447410369E+01, 0.5217580628120E+02), ( 0.5476721393451E-08, 0.3888529177855E+01, 0.2221856701002E+01), ( 0.5341772572619E-08, 0.2655560662512E+01, 0.7466759693650E-01), ( 0.5337055758302E-08, 0.5164990735946E+01, 0.7489573444450E-01), ( 0.5373120816787E-08, 0.6041214553456E+01, 0.1274714967946E+00), ( 0.5392351705426E-08, 0.9177763485932E+00, 0.1055449481598E+01), ( 0.6688495850205E-08, 0.3089608126937E+01, 0.2213766559277E+00), ( 0.5072003660362E-08, 0.4311316541553E+01, 0.2132517061319E+00), ( 0.5070726650455E-08, 0.5790675464444E+00, 0.2133464534247E+00), //DATA ((S0(I,J,1),I=1,3),J=151,160)), ( 0.5658012950032E-08, 0.2703945510675E+01, 0.7287631425543E+00), ( 0.4835509924854E-08, 0.2975422976065E+01, 0.7160067364790E-01), ( 0.6479821978012E-08, 0.1324168733114E+01, 0.2209183458640E-01), ( 0.6230636494980E-08, 0.2860103632836E+01, 0.3306188016693E+00), ( 0.4649239516213E-08, 0.4832259763403E+01, 0.7796265773310E-01), ( 0.6487325792700E-08, 0.2726165825042E+01, 0.3884652414254E+00), ( 0.4682823682770E-08, 0.6966602455408E+00, 0.1073608853559E+01), ( 0.5704230804976E-08, 0.5669634104606E+01, 0.8731175355560E-01), ( 0.6125413585489E-08, 0.1513386538915E+01, 0.7605151500000E-01), ( 0.6035825038187E-08, 0.1983509168227E+01, 0.9846002785331E+00), //DATA ((S0(I,J,1),I=1,3),J=161,170)), ( 0.4331123462303E-08, 0.2782892992807E+01, 0.4297791515992E+00), ( 0.4681107685143E-08, 0.5337232886836E+01, 0.2127790306879E+00), ( 0.4669105829655E-08, 0.5837133792160E+01, 0.2138191288687E+00), ( 0.5138823602365E-08, 0.3080560200507E+01, 0.7233337363710E-01), ( 0.4615856664534E-08, 0.1661747897471E+01, 0.8603097737811E+00), ( 0.4496916702197E-08, 0.2112508027068E+01, 0.7381754420900E-01), ( 0.4278479042945E-08, 0.5716528462627E+01, 0.7574578717200E-01), ( 0.3840525503932E-08, 0.6424172726492E+00, 0.3407705765729E+00), ( 0.4866636509685E-08, 0.4919244697715E+01, 0.7722995774390E-01), ( 0.3526100639296E-08, 0.2550821052734E+01, 0.6225157782540E-01), //DATA ((S0(I,J,1),I=1,3),J=171,180)), ( 0.3939558488075E-08, 0.3939331491710E+01, 0.5268983110410E-01), ( 0.4041268772576E-08, 0.2275337571218E+01, 0.3503323232942E+00), ( 0.3948761842853E-08, 0.1999324200790E+01, 0.1451108196653E+00), ( 0.3258394550029E-08, 0.9121001378200E+00, 0.5296435984654E+00), ( 0.3257897048761E-08, 0.3428428660869E+01, 0.5297383457582E+00), ( 0.3842559031298E-08, 0.6132927720035E+01, 0.9098186128426E+00), ( 0.3109920095448E-08, 0.7693650193003E+00, 0.3932462625300E-02), ( 0.3132237775119E-08, 0.3621293854908E+01, 0.2346394437820E+00), ( 0.3942189421510E-08, 0.4841863659733E+01, 0.3180992042600E-02), ( 0.3796972285340E-08, 0.1814174994268E+01, 0.1862120789403E+00), //DATA ((S0(I,J,1),I=1,3),J=181,190)), ( 0.3995640233688E-08, 0.1386990406091E+01, 0.4549093064213E+00), ( 0.2875013727414E-08, 0.9178318587177E+00, 0.1905464808669E+01), ( 0.3073719932844E-08, 0.2688923811835E+01, 0.3628624111593E+00), ( 0.2731016580075E-08, 0.1188259127584E+01, 0.2131850110243E+00), ( 0.2729549896546E-08, 0.3702160634273E+01, 0.2134131485323E+00), ( 0.3339372892449E-08, 0.7199163960331E+00, 0.2007689919132E+00), ( 0.2898833764204E-08, 0.1916709364999E+01, 0.5291709230214E+00), ( 0.2894536549362E-08, 0.2424043195547E+01, 0.5302110212022E+00), ( 0.3096872473843E-08, 0.4445894977497E+01, 0.2976424921901E+00), ( 0.2635672326810E-08, 0.3814366984117E+01, 0.1485980103780E+01), //DATA ((S0(I,J,1),I=1,3),J=191,200)), ( 0.3649302697001E-08, 0.2924200596084E+01, 0.6044726378023E+00), ( 0.3127954585895E-08, 0.1842251648327E+01, 0.1084620721060E+00), ( 0.2616040173947E-08, 0.4155841921984E+01, 0.1258454114666E+01), ( 0.2597395859860E-08, 0.1158045978874E+00, 0.2103781122809E+00), ( 0.2593286172210E-08, 0.4771850408691E+01, 0.2162200472757E+00), ( 0.2481823585747E-08, 0.4608842558889E+00, 0.1062562936266E+01), ( 0.2742219550725E-08, 0.1538781127028E+01, 0.5651155736444E+00), ( 0.3199558469610E-08, 0.3226647822878E+00, 0.7036329877322E+00), ( 0.2666088542957E-08, 0.1967991731219E+00, 0.1400015846597E+00), ( 0.2397067430580E-08, 0.3707036669873E+01, 0.2125476091956E+00), //DATA ((S0(I,J,1),I=1,3),J=201,210)), ( 0.2376570772738E-08, 0.1182086628042E+01, 0.2140505503610E+00), ( 0.2547228007887E-08, 0.4906256820629E+01, 0.1534957940063E+00), ( 0.2265575594114E-08, 0.3414949866857E+01, 0.2235935264888E+00), ( 0.2464381430585E-08, 0.4599122275378E+01, 0.2091065926078E+00), ( 0.2433408527044E-08, 0.2830751145445E+00, 0.2174915669488E+00), ( 0.2443605509076E-08, 0.4212046432538E+01, 0.1739420156204E+00), ( 0.2319779262465E-08, 0.9881978408630E+00, 0.7530171478090E-01), ( 0.2284622835465E-08, 0.5565347331588E+00, 0.7426161660010E-01), ( 0.2467268750783E-08, 0.5655708150766E+00, 0.2526561439362E+00), ( 0.2808513492782E-08, 0.1418405053408E+01, 0.5636314030725E+00), //DATA ((S0(I,J,1),I=1,3),J=211,NS0X)), ( 0.2329528932532E-08, 0.4069557545675E+01, 0.1056200952181E+01), ( 0.9698639532817E-09, 0.1074134313634E+01, 0.7826370942180E+02), ( 0 , 0 , 0 )), //* SSB-to-Sun, T^0, Y ), //DATA ((S0(I,J,2),I=1,3),J= 1, 10)), (( 0.4955392320126E-02, 0.2170467313679E+01, 0.5296909721118E+00), ( 0.2722325167392E-02, 0.2444433682196E+01, 0.2132990797783E+00), ( 0.1546579925346E-02, 0.5992779281546E+00, 0.3813291813120E-01), ( 0.8363140252966E-03, 0.7687356310801E+00, 0.7478166569050E-01), ( 0.3385792683603E-03, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.1201192221613E-03, 0.2520035601514E+01, 0.1059381944224E+01), ( 0.7587125720554E-04, 0.1669954006449E+01, 0.4265981595566E+00), ( 0.1964155361250E-04, 0.5707743963343E+01, 0.2061856251104E+00), ( 0.1891900364909E-04, 0.2320960679937E+01, 0.2204125344462E+00), ( 0.1937373433356E-04, 0.3226940689555E+01, 0.1495633313810E+00), //DATA ((S0(I,J,2),I=1,3),J= 11, 20)), ( 0.1437139941351E-04, 0.2301626908096E+01, 0.5225775174439E+00), ( 0.1406267683099E-04, 0.5188579265542E+01, 0.5368044267797E+00), ( 0.1178703080346E-04, 0.5489483248476E+01, 0.7626583626240E-01), ( 0.8079835186041E-05, 0.1683751835264E+01, 0.3664874755930E-01), ( 0.7623253594652E-05, 0.2656400462961E+01, 0.3961708870310E-01), ( 0.6248667483971E-05, 0.4992775362055E+01, 0.7329749511860E-01), ( 0.4366353695038E-05, 0.2869706279678E+01, 0.1589072916335E+01), ( 0.3829101568895E-05, 0.3572131359950E+01, 0.7113454667900E-02), ( 0.3175733773908E-05, 0.4535372530045E+01, 0.4194847048887E+00), ( 0.3092437902159E-05, 0.9230153317909E+00, 0.6398972393349E+00), //DATA ((S0(I,J,2),I=1,3),J= 21, 30)), ( 0.2874168812154E-05, 0.3363143761101E+01, 0.1102062672231E+00), ( 0.3040119321826E-05, 0.3324250895675E+01, 0.6283075850446E+01), ( 0.2699723308006E-05, 0.2917882441928E+00, 0.1030928125552E+00), ( 0.2134832683534E-05, 0.4220997202487E+01, 0.3163918923335E+00), ( 0.1770412139433E-05, 0.4747318496462E+01, 0.1021328554739E+02), ( 0.1377264209373E-05, 0.4305058462401E+00, 0.1484170571900E-02), ( 0.1127814538960E-05, 0.8538177240740E+00, 0.6327837846670E+00), ( 0.1055608090130E-05, 0.1551800742580E+01, 0.4337116142245E+00), ( 0.9802673861420E-06, 0.1459646735377E+01, 0.1052268489556E+01), ( 0.1090329461951E-05, 0.1587351228711E+01, 0.1162474756779E+01), //DATA ((S0(I,J,2),I=1,3),J= 31, 40)), ( 0.6959590025090E-06, 0.5534442628766E+01, 0.1066495398892E+01), ( 0.5664914529542E-06, 0.6030673003297E+01, 0.9491756770005E+00), ( 0.6607787763599E-06, 0.4989507233927E+01, 0.8460828644453E+00), ( 0.6269725742838E-06, 0.4222951804572E+01, 0.1480791608091E+00), ( 0.6301889697863E-06, 0.5444316669126E+01, 0.2243449970715E+00), ( 0.4891042662861E-06, 0.1490552839784E+01, 0.3340612434717E+01), ( 0.3457083123290E-06, 0.3030475486049E+01, 0.3516457698740E-01), ( 0.3032559967314E-06, 0.2652038793632E+01, 0.1104591729320E-01), ( 0.2841133988903E-06, 0.1276744786829E+01, 0.4110125927500E-01), ( 0.2855564444432E-06, 0.2143368674733E+01, 0.1510475019529E+00), //DATA ((S0(I,J,2),I=1,3),J= 41, 50)), ( 0.2765157135038E-06, 0.5444186109077E+01, 0.6373574839730E-01), ( 0.2382312465034E-06, 0.2190521137593E+01, 0.2275259891141E+00), ( 0.2808060365077E-06, 0.5735195064841E+01, 0.2535050500000E-01), ( 0.2332175234405E-06, 0.9481985524859E-01, 0.7181332454670E-01), ( 0.2322488199659E-06, 0.5180499361533E+01, 0.8582758298370E-01), ( 0.1881850258423E-06, 0.3219788273885E+01, 0.2118763888447E+01), ( 0.2196111392808E-06, 0.2366941159761E+01, 0.2968341143800E-02), ( 0.2183810335519E-06, 0.4825445110915E+01, 0.7775000683430E-01), ( 0.2002733093326E-06, 0.2457148995307E+01, 0.2093666171530E+00), ( 0.1967111767229E-06, 0.5586291545459E+01, 0.2172315424036E+00), //DATA ((S0(I,J,2),I=1,3),J= 51, 60)), ( 0.1568473250543E-06, 0.3708003123320E+01, 0.7429900518901E+00), ( 0.1852528314300E-06, 0.4310638151560E+01, 0.2022531624851E+00), ( 0.1832111226447E-06, 0.1494665322656E+01, 0.3235053470014E+00), ( 0.1746805502310E-06, 0.1451378500784E+01, 0.1385174140878E+00), ( 0.1555730966650E-06, 0.1068040418198E+01, 0.7358765972222E+00), ( 0.1554883462559E-06, 0.2442579035461E+01, 0.5154640627760E+00), ( 0.1638380568746E-06, 0.2597913420625E+00, 0.8531963191132E+00), ( 0.1159938593640E-06, 0.5834512021280E+01, 0.1990721704425E+00), ( 0.1083427965695E-06, 0.5054033177950E+01, 0.5439178814476E+00), ( 0.1156480369431E-06, 0.5325677432457E+01, 0.5257585094865E+00), //DATA ((S0(I,J,2),I=1,3),J= 61, 70)), ( 0.1141308860095E-06, 0.2153403923857E+01, 0.5336234347371E+00), ( 0.7913146470946E-07, 0.8642846847027E+00, 0.1478866649112E+01), ( 0.7439752463733E-07, 0.1970628496213E+01, 0.2164800718209E+00), ( 0.7280277104079E-07, 0.6073307250609E+01, 0.2101180877357E+00), ( 0.8319567719136E-07, 0.1954371928334E+01, 0.1692165728891E+01), ( 0.7137705549290E-07, 0.8904989440909E+00, 0.4155522422634E+00), ( 0.6900825396225E-07, 0.2825717714977E+01, 0.1173197218910E+00), ( 0.7245757216635E-07, 0.2481677513331E+01, 0.1265567569334E+01), ( 0.6961165696255E-07, 0.1292955312978E+01, 0.9562891316684E+00), ( 0.7571804456890E-07, 0.3427517575069E+01, 0.1422690933580E-01), //DATA ((S0(I,J,2),I=1,3),J= 71, 80)), ( 0.6605425721904E-07, 0.8052192701492E+00, 0.6470106940028E+00), ( 0.7375477357248E-07, 0.1705076390088E+01, 0.1581959461667E+01), ( 0.7041664951470E-07, 0.4848356967891E+00, 0.9597935788730E-01), ( 0.6322199535763E-07, 0.3878069473909E+01, 0.7084920306520E-01), ( 0.5244380279191E-07, 0.2645560544125E+01, 0.5265099800692E+00), ( 0.5143125704988E-07, 0.4834486101370E+01, 0.5328719641544E+00), ( 0.5871866319373E-07, 0.7981472548900E+00, 0.7871412831580E-01), ( 0.6300822573871E-07, 0.5979398788281E+01, 0.2608790314060E+02), ( 0.6062154271548E-07, 0.4108655402756E+01, 0.1114304132498E+00), ( 0.4361912339976E-07, 0.5322624319280E+01, 0.1375773836557E+01), //DATA ((S0(I,J,2),I=1,3),J= 81, 90)), ( 0.4417005920067E-07, 0.6240817359284E+01, 0.2770348281756E+00), ( 0.4686806749936E-07, 0.3214977301156E+01, 0.1143987543936E+00), ( 0.3758892132305E-07, 0.5879809634765E+01, 0.1596186371003E+01), ( 0.5151351332319E-07, 0.2893377688007E+00, 0.2228608264996E+00), ( 0.4554683578572E-07, 0.5475427144122E+01, 0.1465949902372E+00), ( 0.3442381385338E-07, 0.5992034796640E+01, 0.5070101000000E-01), ( 0.2831093954933E-07, 0.5367350273914E+01, 0.3092784376656E+00), ( 0.3756267090084E-07, 0.5758171285420E+01, 0.4903339079539E+00), ( 0.2816374679892E-07, 0.1863718700923E+01, 0.2991266627620E+00), ( 0.3419307025569E-07, 0.9524347534130E+00, 0.3518164938661E+00), //DATA ((S0(I,J,2),I=1,3),J= 91,100)), ( 0.2904250494239E-07, 0.5304471615602E+01, 0.1099462426779E+00), ( 0.2471734511206E-07, 0.1297069793530E+01, 0.6256703299991E+00), ( 0.2539620831872E-07, 0.3281126083375E+01, 0.1256615170089E+02), ( 0.2281017868007E-07, 0.1829122133165E+01, 0.6681224869435E+01), ( 0.2275319473335E-07, 0.5797198160181E+01, 0.3932462625300E-02), ( 0.2547755368442E-07, 0.4752697708330E+01, 0.1169588211447E+01), ( 0.2285979669317E-07, 0.1223205292886E+01, 0.1045155034888E+01), ( 0.1913386560994E-07, 0.1757532993389E+01, 0.1155361302111E+01), ( 0.1809020525147E-07, 0.4246116108791E+01, 0.3368040641550E-01), ( 0.1649213300201E-07, 0.1445162890627E+01, 0.4408250688924E+00), //DATA ((S0(I,J,2),I=1,3),J=101,110)), ( 0.1834972793932E-07, 0.1126917567225E+01, 0.4452511715700E-02), ( 0.1439550648138E-07, 0.6160756834764E+01, 0.9420622223326E+00), ( 0.1487645457041E-07, 0.4358761931792E+01, 0.4123712502208E+00), ( 0.1731729516660E-07, 0.6134456753344E+01, 0.2108507877249E+00), ( 0.1717747163567E-07, 0.1898186084455E+01, 0.2157473718317E+00), ( 0.1418190430374E-07, 0.4180286741266E+01, 0.6521991896920E-01), ( 0.1404844134873E-07, 0.7654053565412E-01, 0.4258542984690E-01), ( 0.1409842846538E-07, 0.4418612420312E+01, 0.2258291676434E+00), ( 0.1090948346291E-07, 0.1260615686131E+01, 0.4226656969313E+00), ( 0.1357577323612E-07, 0.3558248818690E+01, 0.7923417740620E-01), //DATA ((S0(I,J,2),I=1,3),J=111,120)), ( 0.1018154061960E-07, 0.5676087241256E+01, 0.1456308687557E+00), ( 0.1412073972109E-07, 0.8394392632422E+00, 0.1525316725248E+00), ( 0.1030938326496E-07, 0.1653593274064E+01, 0.1795258541446E+01), ( 0.1180081567104E-07, 0.1285802592036E+01, 0.7032915397480E-01), ( 0.9708510575650E-08, 0.7631889488106E+00, 0.8434341241180E-01), ( 0.9637689663447E-08, 0.4630642649176E+01, 0.1272681024002E+01), ( 0.1068910429389E-07, 0.5294934032165E+01, 0.2123349582968E+00), ( 0.1063716179336E-07, 0.2736266800832E+01, 0.2142632012598E+00), ( 0.1234858713814E-07, 0.1302891146570E+01, 0.1847279083684E+00), ( 0.8912631189738E-08, 0.3570415993621E+01, 0.2648454860559E+01), //DATA ((S0(I,J,2),I=1,3),J=121,130)), ( 0.1036378285534E-07, 0.4236693440949E+01, 0.1370332435159E+00), ( 0.9667798501561E-08, 0.2960768892398E+01, 0.4376440768498E+00), ( 0.8108314201902E-08, 0.6987781646841E+00, 0.2880807454688E+00), ( 0.7648364324628E-08, 0.2499017863863E+01, 0.2037373330570E+00), ( 0.7286136828406E-08, 0.3787426951665E+01, 0.1129145838217E+00), ( 0.9448237743913E-08, 0.2694354332983E+01, 0.5272426800584E+00), ( 0.9374276106428E-08, 0.4787121277064E+01, 0.5321392641652E+00), ( 0.7100226287462E-08, 0.3530238792101E+00, 0.6288513220417E+00), ( 0.9253056659571E-08, 0.1399478925664E+01, 0.1606092486742E+00), ( 0.6636432145504E-08, 0.3479575438447E+01, 0.1368660381889E+01), //DATA ((S0(I,J,2),I=1,3),J=131,140)), ( 0.6469975312932E-08, 0.1383669964800E+01, 0.2008557621224E+01), ( 0.7335849729765E-08, 0.1243698166898E+01, 0.9561746721300E-02), ( 0.8743421205855E-08, 0.3776164289301E+01, 0.3801276407308E+00), ( 0.5993635744494E-08, 0.5627122113596E+01, 0.2042657109477E+02), ( 0.5981008479693E-08, 0.1674336636752E+01, 0.2111650433779E+01), ( 0.6188535145838E-08, 0.5214925208672E+01, 0.4305306221819E+00), ( 0.6596074017566E-08, 0.2907653268124E+01, 0.1063314406849E+01), ( 0.6630815126226E-08, 0.2127643669658E+01, 0.8389694097774E+00), ( 0.6156772830040E-08, 0.5082160803295E+01, 0.4234171675140E+00), ( 0.6446960563014E-08, 0.1872100916905E+01, 0.5287268506303E+00), //DATA ((S0(I,J,2),I=1,3),J=141,150)), ( 0.6429324424668E-08, 0.5610276103577E+01, 0.5306550935933E+00), ( 0.6302232396465E-08, 0.1592152049607E+01, 0.1253008786510E-01), ( 0.6399244436159E-08, 0.2746214421532E+01, 0.5217580628120E+02), ( 0.5474965172558E-08, 0.2317666374383E+01, 0.2221856701002E+01), ( 0.5339293190692E-08, 0.1084724961156E+01, 0.7466759693650E-01), ( 0.5334733683389E-08, 0.3594106067745E+01, 0.7489573444450E-01), ( 0.5392665782110E-08, 0.5630254365606E+01, 0.1055449481598E+01), ( 0.6682075673789E-08, 0.1518480041732E+01, 0.2213766559277E+00), ( 0.5079130495960E-08, 0.2739765115711E+01, 0.2132517061319E+00), ( 0.5077759793261E-08, 0.5290711290094E+01, 0.2133464534247E+00), //DATA ((S0(I,J,2),I=1,3),J=151,160)), ( 0.4832037368310E-08, 0.1404473217200E+01, 0.7160067364790E-01), ( 0.6463279674802E-08, 0.6038381695210E+01, 0.2209183458640E-01), ( 0.6240592771560E-08, 0.1290170653666E+01, 0.3306188016693E+00), ( 0.4672013521493E-08, 0.3261895939677E+01, 0.7796265773310E-01), ( 0.6500650750348E-08, 0.1154522312095E+01, 0.3884652414254E+00), ( 0.6344161389053E-08, 0.6206111545062E+01, 0.7605151500000E-01), ( 0.4682518370646E-08, 0.5409118796685E+01, 0.1073608853559E+01), ( 0.5329460015591E-08, 0.1202985784864E+01, 0.7287631425543E+00), ( 0.5701588675898E-08, 0.4098715257064E+01, 0.8731175355560E-01), ( 0.6030690867211E-08, 0.4132033218460E+00, 0.9846002785331E+00), //DATA ((S0(I,J,2),I=1,3),J=161,170)), ( 0.4336256312655E-08, 0.1211415991827E+01, 0.4297791515992E+00), ( 0.4688498808975E-08, 0.3765479072409E+01, 0.2127790306879E+00), ( 0.4675578609335E-08, 0.4265540037226E+01, 0.2138191288687E+00), ( 0.4225578112158E-08, 0.5237566010676E+01, 0.3407705765729E+00), ( 0.5139422230028E-08, 0.1507173079513E+01, 0.7233337363710E-01), ( 0.4619995093571E-08, 0.9023957449848E-01, 0.8603097737811E+00), ( 0.4494776255461E-08, 0.5414930552139E+00, 0.7381754420900E-01), ( 0.4274026276788E-08, 0.4145735303659E+01, 0.7574578717200E-01), ( 0.5018141789353E-08, 0.3344408829055E+01, 0.3180992042600E-02), ( 0.4866163952181E-08, 0.3348534657607E+01, 0.7722995774390E-01), //DATA ((S0(I,J,2),I=1,3),J=171,180)), ( 0.4111986020501E-08, 0.4198823597220E+00, 0.1451108196653E+00), ( 0.3356142784950E-08, 0.5609144747180E+01, 0.1274714967946E+00), ( 0.4070575554551E-08, 0.7028411059224E+00, 0.3503323232942E+00), ( 0.3257451857278E-08, 0.5624697983086E+01, 0.5296435984654E+00), ( 0.3256973703026E-08, 0.1857842076707E+01, 0.5297383457582E+00), ( 0.3830771508640E-08, 0.4562887279931E+01, 0.9098186128426E+00), ( 0.3725024005962E-08, 0.2358058692652E+00, 0.1084620721060E+00), ( 0.3136763921756E-08, 0.2049731526845E+01, 0.2346394437820E+00), ( 0.3795147256194E-08, 0.2432356296933E+00, 0.1862120789403E+00), ( 0.2877342229911E-08, 0.5631101279387E+01, 0.1905464808669E+01), //DATA ((S0(I,J,2),I=1,3),J=181,190)), ( 0.3076931798805E-08, 0.1117615737392E+01, 0.3628624111593E+00), ( 0.2734765945273E-08, 0.5899826516955E+01, 0.2131850110243E+00), ( 0.2733405296885E-08, 0.2130562964070E+01, 0.2134131485323E+00), ( 0.2898552353410E-08, 0.3462387048225E+00, 0.5291709230214E+00), ( 0.2893736103681E-08, 0.8534352781543E+00, 0.5302110212022E+00), ( 0.3095717734137E-08, 0.2875061429041E+01, 0.2976424921901E+00), ( 0.2636190425832E-08, 0.2242512846659E+01, 0.1485980103780E+01), ( 0.3645512095537E-08, 0.1354016903958E+01, 0.6044726378023E+00), ( 0.2808173547723E-08, 0.6705114365631E-01, 0.6225157782540E-01), ( 0.2625012866888E-08, 0.4775705748482E+01, 0.5268983110410E-01), //DATA ((S0(I,J,2),I=1,3),J=191,200)), ( 0.2572233995651E-08, 0.2638924216139E+01, 0.1258454114666E+01), ( 0.2604238824792E-08, 0.4826358927373E+01, 0.2103781122809E+00), ( 0.2596886385239E-08, 0.3200388483118E+01, 0.2162200472757E+00), ( 0.3228057304264E-08, 0.5384848409563E+01, 0.2007689919132E+00), ( 0.2481601798252E-08, 0.5173373487744E+01, 0.1062562936266E+01), ( 0.2745977498864E-08, 0.6250966149853E+01, 0.5651155736444E+00), ( 0.2669878833811E-08, 0.4906001352499E+01, 0.1400015846597E+00), ( 0.3203986611711E-08, 0.5034333010005E+01, 0.7036329877322E+00), ( 0.3354961227212E-08, 0.6108262423137E+01, 0.4549093064213E+00), ( 0.2400407324558E-08, 0.2135399294955E+01, 0.2125476091956E+00), //DATA ((S0(I,J,2),I=1,3),J=201,210)), ( 0.2379905859802E-08, 0.5893721933961E+01, 0.2140505503610E+00), ( 0.2550844302187E-08, 0.3331940762063E+01, 0.1534957940063E+00), ( 0.2268824211001E-08, 0.1843418461035E+01, 0.2235935264888E+00), ( 0.2464700891204E-08, 0.3029548547230E+01, 0.2091065926078E+00), ( 0.2436814726024E-08, 0.4994717970364E+01, 0.2174915669488E+00), ( 0.2443623894745E-08, 0.2645102591375E+01, 0.1739420156204E+00), ( 0.2318701783838E-08, 0.5700547397897E+01, 0.7530171478090E-01), ( 0.2284448700256E-08, 0.5268898905872E+01, 0.7426161660010E-01), ( 0.2468848123510E-08, 0.5276280575078E+01, 0.2526561439362E+00), ( 0.2814052350303E-08, 0.6130168623475E+01, 0.5636314030725E+00), //DATA ((S0(I,J,2),I=1,3),J=211,NS0Y)), ( 0.2243662755220E-08, 0.6631692457995E+00, 0.8886590321940E-01), ( 0.2330795855941E-08, 0.2499435487702E+01, 0.1056200952181E+01), ( 0.9757679038404E-09, 0.5796846023126E+01, 0.7826370942180E+02)), // SSB-to-Sun, T^0, Z ), //DATA ((S0(I,J,3),I=1,3),J= 1, 10)), (( 0.1181255122986E-03, 0.4607918989164E+00, 0.2132990797783E+00), ( 0.1127777651095E-03, 0.4169146331296E+00, 0.5296909721118E+00), ( 0.4777754401806E-04, 0.4582657007130E+01, 0.3813291813120E-01), ( 0.1129354285772E-04, 0.5758735142480E+01, 0.7478166569050E-01), ( -0.1149543637123E-04, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.3298730512306E-05, 0.5978801994625E+01, 0.4265981595566E+00), ( 0.2733376706079E-05, 0.7665413691040E+00, 0.1059381944224E+01), ( 0.9426389657270E-06, 0.3710201265838E+01, 0.2061856251104E+00), ( 0.8187517749552E-06, 0.3390675605802E+00, 0.2204125344462E+00), ( 0.4080447871819E-06, 0.4552296640088E+00, 0.5225775174439E+00), //DATA ((S0(I,J,3),I=1,3),J= 11, 20)), ( 0.3169973017028E-06, 0.3445455899321E+01, 0.5368044267797E+00), ( 0.2438098615549E-06, 0.5664675150648E+01, 0.3664874755930E-01), ( 0.2601897517235E-06, 0.1931894095697E+01, 0.1495633313810E+00), ( 0.2314558080079E-06, 0.3666319115574E+00, 0.3961708870310E-01), ( 0.1962549548002E-06, 0.3167411699020E+01, 0.7626583626240E-01), ( 0.2180518287925E-06, 0.1544420746580E+01, 0.7113454667900E-02), ( 0.1451382442868E-06, 0.1583756740070E+01, 0.1102062672231E+00), ( 0.1358439007389E-06, 0.5239941758280E+01, 0.6398972393349E+00), ( 0.1050585898028E-06, 0.2266958352859E+01, 0.3163918923335E+00), ( 0.1050029870186E-06, 0.2711495250354E+01, 0.4194847048887E+00), //DATA ((S0(I,J,3),I=1,3),J= 21, 30)), ( 0.9934920679800E-07, 0.1116208151396E+01, 0.1589072916335E+01), ( 0.1048395331560E-06, 0.3408619600206E+01, 0.1021328554739E+02), ( 0.8370147196668E-07, 0.3810459401087E+01, 0.2535050500000E-01), ( 0.7989856510998E-07, 0.3769910473647E+01, 0.7329749511860E-01), ( 0.5441221655233E-07, 0.2416994903374E+01, 0.1030928125552E+00), ( 0.4610812906784E-07, 0.5858503336994E+01, 0.4337116142245E+00), ( 0.3923022803444E-07, 0.3354170010125E+00, 0.1484170571900E-02), ( 0.2610725582128E-07, 0.5410600646324E+01, 0.6327837846670E+00), ( 0.2455279767721E-07, 0.6120216681403E+01, 0.1162474756779E+01), ( 0.2375530706525E-07, 0.6055443426143E+01, 0.1052268489556E+01), //DATA ((S0(I,J,3),I=1,3),J= 31, 40)), ( 0.1782967577553E-07, 0.3146108708004E+01, 0.8460828644453E+00), ( 0.1581687095238E-07, 0.6255496089819E+00, 0.3340612434717E+01), ( 0.1594657672461E-07, 0.3782604300261E+01, 0.1066495398892E+01), ( 0.1563448615040E-07, 0.1997775733196E+01, 0.2022531624851E+00), ( 0.1463624258525E-07, 0.1736316792088E+00, 0.3516457698740E-01), ( 0.1331585056673E-07, 0.4331941830747E+01, 0.9491756770005E+00), ( 0.1130634557637E-07, 0.6152017751825E+01, 0.2968341143800E-02), ( 0.1028949607145E-07, 0.2101792614637E+00, 0.2275259891141E+00), ( 0.1024074971618E-07, 0.4071833211074E+01, 0.5070101000000E-01), ( 0.8826956060303E-08, 0.4861633688145E+00, 0.2093666171530E+00), //DATA ((S0(I,J,3),I=1,3),J= 41, 50)), ( 0.8572230171541E-08, 0.5268190724302E+01, 0.4110125927500E-01), ( 0.7649332643544E-08, 0.5134543417106E+01, 0.2608790314060E+02), ( 0.8581673291033E-08, 0.2920218146681E+01, 0.1480791608091E+00), ( 0.8430589300938E-08, 0.3604576619108E+01, 0.2172315424036E+00), ( 0.7776165501012E-08, 0.3772942249792E+01, 0.6373574839730E-01), ( 0.8311070234408E-08, 0.6200412329888E+01, 0.3235053470014E+00), ( 0.6927365212582E-08, 0.4543353113437E+01, 0.8531963191132E+00), ( 0.6791574208598E-08, 0.2882188406238E+01, 0.7181332454670E-01), ( 0.5593100811839E-08, 0.1776646892780E+01, 0.7429900518901E+00), ( 0.4553381853021E-08, 0.3949617611240E+01, 0.7775000683430E-01), //DATA ((S0(I,J,3),I=1,3),J= 51, 60)), ( 0.5758000450068E-08, 0.3859251775075E+01, 0.1990721704425E+00), ( 0.4281283457133E-08, 0.1466294631206E+01, 0.2118763888447E+01), ( 0.4206935661097E-08, 0.5421776011706E+01, 0.1104591729320E-01), ( 0.4213751641837E-08, 0.3412048993322E+01, 0.2243449970715E+00), ( 0.5310506239878E-08, 0.5421641370995E+00, 0.5154640627760E+00), ( 0.3827450341320E-08, 0.8887314524995E+00, 0.1510475019529E+00), ( 0.4292435241187E-08, 0.1405043757194E+01, 0.1422690933580E-01), ( 0.3189780702289E-08, 0.1060049293445E+01, 0.1173197218910E+00), ( 0.3226611928069E-08, 0.6270858897442E+01, 0.2164800718209E+00), ( 0.2893897608830E-08, 0.5117563223301E+01, 0.6470106940028E+00), //DATA ((S0(I,J,3),I=1,3),J= 61,NS0Z)), ( 0.3239852024578E-08, 0.4079092237983E+01, 0.2101180877357E+00), ( 0.2956892222200E-08, 0.1594917021704E+01, 0.3092784376656E+00), ( 0.2980177912437E-08, 0.5258787667564E+01, 0.4155522422634E+00), ( 0.3163725690776E-08, 0.3854589225479E+01, 0.8582758298370E-01), ( 0.2662262399118E-08, 0.3561326430187E+01, 0.5257585094865E+00), ( 0.2766689135729E-08, 0.3180732086830E+00, 0.1385174140878E+00), ( 0.2411600278464E-08, 0.3324798335058E+01, 0.5439178814476E+00), ( 0.2483527695131E-08, 0.4169069291947E+00, 0.5336234347371E+00), ( 0.7788777276590E-09, 0.1900569908215E+01, 0.5217580628120E+02), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ))); // * SSB-to-Sun, T^1, X ), //DATA ((S1(I,J,1),I=1,3),J= 1, 10)), S1 : array[1..3,1..MS1,1..3] of double= ((( -0.1296310361520E-07, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.8975769009438E-08, 0.1128891609250E+01, 0.4265981595566E+00), ( 0.7771113441307E-08, 0.2706039877077E+01, 0.2061856251104E+00), ( 0.7538303866642E-08, 0.2191281289498E+01, 0.2204125344462E+00), ( 0.6061384579336E-08, 0.3248167319958E+01, 0.1059381944224E+01), ( 0.5726994235594E-08, 0.5569981398610E+01, 0.5225775174439E+00), ( 0.5616492836424E-08, 0.5057386614909E+01, 0.5368044267797E+00), ( 0.1010881584769E-08, 0.3473577116095E+01, 0.7113454667900E-02), ( 0.7259606157626E-09, 0.3651858593665E+00, 0.6398972393349E+00), ( 0.8755095026935E-09, 0.1662835408338E+01, 0.4194847048887E+00), //DATA ((S1(I,J,1),I=1,3),J= 11, 20)), ( 0.5370491182812E-09, 0.1327673878077E+01, 0.4337116142245E+00), ( 0.5743773887665E-09, 0.4250200846687E+01, 0.2132990797783E+00), ( 0.4408103140300E-09, 0.3598752574277E+01, 0.1589072916335E+01), ( 0.3101892374445E-09, 0.4887822983319E+01, 0.1052268489556E+01), ( 0.3209453713578E-09, 0.9702272295114E+00, 0.5296909721118E+00), ( 0.3017228286064E-09, 0.5484462275949E+01, 0.1066495398892E+01), ( 0.3200700038601E-09, 0.2846613338643E+01, 0.1495633313810E+00), ( 0.2137637279911E-09, 0.5692163292729E+00, 0.3163918923335E+00), ( 0.1899686386727E-09, 0.2061077157189E+01, 0.2275259891141E+00), ( 0.1401994545308E-09, 0.4177771136967E+01, 0.1102062672231E+00), //DATA ((S1(I,J,1),I=1,3),J= 21, 30)), ( 0.1578057810499E-09, 0.5782460597335E+01, 0.7626583626240E-01), ( 0.1237713253351E-09, 0.5705900866881E+01, 0.5154640627760E+00), ( 0.1313076837395E-09, 0.5163438179576E+01, 0.3664874755930E-01), ( 0.1184963304860E-09, 0.3054804427242E+01, 0.6327837846670E+00), ( 0.1238130878565E-09, 0.2317292575962E+01, 0.3961708870310E-01), ( 0.1015959527736E-09, 0.2194643645526E+01, 0.7329749511860E-01), ( 0.9017954423714E-10, 0.2868603545435E+01, 0.1990721704425E+00), ( 0.8668024955603E-10, 0.4923849675082E+01, 0.5439178814476E+00), ( 0.7756083930103E-10, 0.3014334135200E+01, 0.9491756770005E+00), ( 0.7536503401741E-10, 0.2704886279769E+01, 0.1030928125552E+00), //DATA ((S1(I,J,1),I=1,3),J= 31, 40)), ( 0.5483308679332E-10, 0.6010983673799E+01, 0.8531963191132E+00), ( 0.5184339620428E-10, 0.1952704573291E+01, 0.2093666171530E+00), ( 0.5108658712030E-10, 0.2958575786649E+01, 0.2172315424036E+00), ( 0.5019424524650E-10, 0.1736317621318E+01, 0.2164800718209E+00), ( 0.4909312625978E-10, 0.3167216416257E+01, 0.2101180877357E+00), ( 0.4456638901107E-10, 0.7697579923471E+00, 0.3235053470014E+00), ( 0.4227030350925E-10, 0.3490910137928E+01, 0.6373574839730E-01), ( 0.4095456040093E-10, 0.5178888984491E+00, 0.6470106940028E+00), ( 0.4990537041422E-10, 0.3323887668974E+01, 0.1422690933580E-01), ( 0.4321170010845E-10, 0.4288484987118E+01, 0.7358765972222E+00), //DATA ((S1(I,J,1),I=1,3),J= 41,NS1X)), ( 0.3544072091802E-10, 0.6021051579251E+01, 0.5265099800692E+00), ( 0.3480198638687E-10, 0.4600027054714E+01, 0.5328719641544E+00), ( 0.3440287244435E-10, 0.4349525970742E+01, 0.8582758298370E-01), ( 0.3330628322713E-10, 0.2347391505082E+01, 0.1104591729320E-01), ( 0.2973060707184E-10, 0.4789409286400E+01, 0.5257585094865E+00), ( 0.2932606766089E-10, 0.5831693799927E+01, 0.5336234347371E+00), ( 0.2876972310953E-10, 0.2692638514771E+01, 0.1173197218910E+00), ( 0.2827488278556E-10, 0.2056052487960E+01, 0.2022531624851E+00), ( 0.2515028239756E-10, 0.7411863262449E+00, 0.9597935788730E-01), ( 0.2853033744415E-10, 0.3948481024894E+01, 0.2118763888447E+01)), //* SSB-to-Sun, T^1, Y ), //DATA ((S1(I,J,2),I=1,3),J= 1, 10)), (( 0.8989047573576E-08, 0.5840593672122E+01, 0.4265981595566E+00), ( 0.7815938401048E-08, 0.1129664707133E+01, 0.2061856251104E+00), ( 0.7550926713280E-08, 0.6196589104845E+00, 0.2204125344462E+00), ( 0.6056556925895E-08, 0.1677494667846E+01, 0.1059381944224E+01), ( 0.5734142698204E-08, 0.4000920852962E+01, 0.5225775174439E+00), ( 0.5614341822459E-08, 0.3486722577328E+01, 0.5368044267797E+00), ( 0.1028678147656E-08, 0.1877141024787E+01, 0.7113454667900E-02), ( 0.7270792075266E-09, 0.5077167301739E+01, 0.6398972393349E+00), ( 0.8734141726040E-09, 0.9069550282609E-01, 0.4194847048887E+00), ( 0.5377371402113E-09, 0.6039381844671E+01, 0.4337116142245E+00), //DATA ((S1(I,J,2),I=1,3),J= 11, 20)), ( 0.4729719431571E-09, 0.2153086311760E+01, 0.2132990797783E+00), ( 0.4458052820973E-09, 0.5059830025565E+01, 0.5296909721118E+00), ( 0.4406855467908E-09, 0.2027971692630E+01, 0.1589072916335E+01), ( 0.3101659310977E-09, 0.3317677981860E+01, 0.1052268489556E+01), ( 0.3016749232545E-09, 0.3913703482532E+01, 0.1066495398892E+01), ( 0.3198541352656E-09, 0.1275513098525E+01, 0.1495633313810E+00), ( 0.2142065389871E-09, 0.5301351614597E+01, 0.3163918923335E+00), ( 0.1902615247592E-09, 0.4894943352736E+00, 0.2275259891141E+00), ( 0.1613410990871E-09, 0.2449891130437E+01, 0.1102062672231E+00), ( 0.1576992165097E-09, 0.4211421447633E+01, 0.7626583626240E-01), //DATA ((S1(I,J,2),I=1,3),J= 21, 30)), ( 0.1241637259894E-09, 0.4140803368133E+01, 0.5154640627760E+00), ( 0.1313974830355E-09, 0.3591920305503E+01, 0.3664874755930E-01), ( 0.1181697118258E-09, 0.1506314382788E+01, 0.6327837846670E+00), ( 0.1238239742779E-09, 0.7461405378404E+00, 0.3961708870310E-01), ( 0.1010107068241E-09, 0.6271010795475E+00, 0.7329749511860E-01), ( 0.9226316616509E-10, 0.1259158839583E+01, 0.1990721704425E+00), ( 0.8664946419555E-10, 0.3353244696934E+01, 0.5439178814476E+00), ( 0.7757230468978E-10, 0.1447677295196E+01, 0.9491756770005E+00), ( 0.7693168628139E-10, 0.1120509896721E+01, 0.1030928125552E+00), ( 0.5487897454612E-10, 0.4439380426795E+01, 0.8531963191132E+00), //DATA ((S1(I,J,2),I=1,3),J= 31, 40)), ( 0.5196118677218E-10, 0.3788856619137E+00, 0.2093666171530E+00), ( 0.5110853339935E-10, 0.1386879372016E+01, 0.2172315424036E+00), ( 0.5027804534813E-10, 0.1647881805466E+00, 0.2164800718209E+00), ( 0.4922485922674E-10, 0.1594315079862E+01, 0.2101180877357E+00), ( 0.6155599524400E-10, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.4447147832161E-10, 0.5480720918976E+01, 0.3235053470014E+00), ( 0.4144691276422E-10, 0.1931371033660E+01, 0.6373574839730E-01), ( 0.4099950625452E-10, 0.5229611294335E+01, 0.6470106940028E+00), ( 0.5060541682953E-10, 0.1731112486298E+01, 0.1422690933580E-01), ( 0.4293615946300E-10, 0.2714571038925E+01, 0.7358765972222E+00), //DATA ((S1(I,J,2),I=1,3),J= 41,NS1Y)), ( 0.3545659845763E-10, 0.4451041444634E+01, 0.5265099800692E+00), ( 0.3479112041196E-10, 0.3029385448081E+01, 0.5328719641544E+00), ( 0.3438516493570E-10, 0.2778507143731E+01, 0.8582758298370E-01), ( 0.3297341285033E-10, 0.7898709807584E+00, 0.1104591729320E-01), ( 0.2972585818015E-10, 0.3218785316973E+01, 0.5257585094865E+00), ( 0.2931707295017E-10, 0.4260731012098E+01, 0.5336234347371E+00), ( 0.2897198149403E-10, 0.1120753978101E+01, 0.1173197218910E+00), ( 0.2832293240878E-10, 0.4597682717827E+00, 0.2022531624851E+00), ( 0.2864348326612E-10, 0.2169939928448E+01, 0.9597935788730E-01), ( 0.2852714675471E-10, 0.2377659870578E+01, 0.2118763888447E+01)), // SSB-to-Sun, T^1, Z ), //DATA ((S1(I,J,3),I=1,3),J= 1, 10)), (( 0.5444220475678E-08, 0.1803825509310E+01, 0.2132990797783E+00), ( 0.3883412695596E-08, 0.4668616389392E+01, 0.5296909721118E+00), ( 0.1334341434551E-08, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.3730001266883E-09, 0.5401405918943E+01, 0.2061856251104E+00), ( 0.2894929197956E-09, 0.4932415609852E+01, 0.2204125344462E+00), ( 0.2857950357701E-09, 0.3154625362131E+01, 0.7478166569050E-01), ( 0.2499226432292E-09, 0.3657486128988E+01, 0.4265981595566E+00), ( 0.1937705443593E-09, 0.5740434679002E+01, 0.1059381944224E+01), ( 0.1374894396320E-09, 0.1712857366891E+01, 0.5368044267797E+00), ( 0.1217248678408E-09, 0.2312090870932E+01, 0.5225775174439E+00), //DATA ((S1(I,J,3),I=1,3),J= 11,NS1Z)), ( 0.7961052740870E-10, 0.5283368554163E+01, 0.3813291813120E-01), ( 0.4979225949689E-10, 0.4298290471860E+01, 0.4194847048887E+00), ( 0.4388552286597E-10, 0.6145515047406E+01, 0.7113454667900E-02), ( 0.2586835212560E-10, 0.3019448001809E+01, 0.6398972393349E+00), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ))); //* SSB-to-Sun, T^2, X ), //DATA ((S2(I,J,1),I=1,3),J= 1,NS2X)), S2 : array[1..3,1..MS2,1..3] of double= ((( 0.1603551636587E-11, 0.4404109410481E+01, 0.2061856251104E+00), ( 0.1556935889384E-11, 0.4818040873603E+00, 0.2204125344462E+00), ( 0.1182594414915E-11, 0.9935762734472E+00, 0.5225775174439E+00), ( 0.1158794583180E-11, 0.3353180966450E+01, 0.5368044267797E+00), ( 0.9597358943932E-12, 0.5567045358298E+01, 0.2132990797783E+00), ( 0.6511516579605E-12, 0.5630872420788E+01, 0.4265981595566E+00), ( 0.7419792747688E-12, 0.2156188581957E+01, 0.5296909721118E+00), ( 0.3951972655848E-12, 0.1981022541805E+01, 0.1059381944224E+01), ( 0.4478223877045E-12, 0.0000000000000E+00, 0.0000000000000E+00)), // * SSB-to-Sun, T^2, Y ), //DATA ((S2(I,J,2),I=1,3),J= 1,NS2Y)), (( 0.1609114495091E-11, 0.2831096993481E+01, 0.2061856251104E+00), ( 0.1560330784946E-11, 0.5193058213906E+01, 0.2204125344462E+00), ( 0.1183535479202E-11, 0.5707003443890E+01, 0.5225775174439E+00), ( 0.1158183066182E-11, 0.1782400404928E+01, 0.5368044267797E+00), ( 0.1032868027407E-11, 0.4036925452011E+01, 0.2132990797783E+00), ( 0.6540142847741E-12, 0.4058241056717E+01, 0.4265981595566E+00), ( 0.7305236491596E-12, 0.6175401942957E+00, 0.5296909721118E+00), ( -0.5580725052968E-12, 0.0000000000000E+00, 0.0000000000000E+00), ( 0.3946122651015E-12, 0.4108265279171E+00, 0.1059381944224E+01)), //* SSB-to-Sun, T^2, Z ), //DATA ((S2(I,J,3),I=1,3),J= 1,NS2Z)), (( 0.3749920358054E-12, 0.3230285558668E+01, 0.2132990797783E+00), ( 0.2735037220939E-12, 0.6154322683046E+01, 0.5296909721118E+00), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ), ( 0 , 0 , 0 ))); //* Days per Julian year; DJY = 365.25 ; //* Reference epoch (J2000), MJD; DJM0 = 51544.5; var T, T2, XYZ, XYZD, A, B, C, CT, P, CP : double; HP, HV, BP, BV : array[1..3] of double; X, Y, Z : double; J, K: integer; {*; * Matrix elements for orienting the analytical model to DE405/ICRF. *; * The corresponding Euler angles are:; *; * d ' "; * 1st rotation - 23 26 21.4091 about the x-axis (obliquity); * 2nd rotation + 0.0475 about the z-axis (RA offset); *; * These were obtained empiriy, by comparisons with DE405 over; * 1900-2100. *; } const AM12= +0.000000211284; AM13= -0.000000091603; AM21= -0.000000230286; AM22= +0.917482137087; AM23= -0.397776982902; AM32= +0.397776982902; AM33= +0.917482137087; // * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -; begin //* Time since reference epoch, years. T := ( DATE - DJM0 ) / DJY; T2 := T*T; for K := 1 to 3 do {loop for X, Y,Z} begin // Initialize position and velocity component. XYZ := 0; XYZD := 0; //* ------------------------------------------------; //* Obtain component of Sun to Earth ecliptic vector; //* ------------------------------------------------; //* Sun to Earth, T^0 terms. for J := 1 to NE0[K] do begin A := E0[K,J,1];//for Pascal swap the three terms. Was in Fortran A := E0[1,J,K]; B := E0[K,J,2];//for Pascal swap the three terms, Was in Fortran A := E0[2,J,K]; C := E0[K,J,3];//for Pascal swap the three terms. Was in Fortran A := E0[3,J,K]; P := B + C*T; XYZ := XYZ + A*COS(P); XYZD := XYZD - A*C*SIN(P); end; // Sun to Earth, T^1 terms. for J := 1 to NE1[K] do begin A := E1[K,J,1]; B := E1[K,J,2]; C := E1[K,J,3]; CT := C*T; P := B + CT; CP := COS(P); XYZ := XYZ + A*T*CP; XYZD := XYZD + A*(CP-CT*SIN(P)); end; // Sun to Earth, T^2 terms. for J := 1 to NE2[K] do begin A := E2[K,J,1]; B := E2[K,J,2]; C := E2[K,J,3]; CT := C*T; P := B + CT; CP := COS(P); XYZ := XYZ + A*T2*CP; XYZD := XYZD + A*T*(2*CP-CT*SIN(P)); end; // Heliocentric Earth position and velocity component. HP[K] := XYZ; HV[K] := XYZD / DJY; //* ------------------------------------------------; //* Obtain component of SSB to Earth ecliptic vector; //* ------------------------------------------------; //* SSB to Sun, T^0 terms. if bary then {mod for pascal, calculateBary centric only if requested} begin {Barycentric} for J := 1 to NS0[K] do begin A := S0[K,J,1]; B := S0[K,J,2]; C := S0[K,J,3]; P := B + C*T; {factors from heliocentric. so that part has always be calculated} XYZ := XYZ + A*COS(P); XYZD := XYZD - A*C*SIN(P); end; // SSB to Sun, T^1 terms. for J := 1 to NS1[K] do begin A := S1[K,J,1]; B := S1[K,J,2]; C := S1[K,J,3]; CT := C*T; P := B + CT; CP := COS(P); XYZ := XYZ + A*T*CP; XYZD := XYZD + A*(CP-CT*SIN(P)); end; // SSB to Sun, T^2 terms. for J := 1 to NS2[K] do begin A := S2[K,J,1]; B := S2[K,J,2]; C := S2[K,J,3]; CT := C*T; P := B + CT; CP := COS(P); XYZ := XYZ + A*T2*CP; XYZD := XYZD + A*T*(2*CP-CT*SIN(P)); end; // Barycentric Earth position and velocity component. BP[K] := XYZ; BV[K] := XYZD / DJY; // Next Cartesian component. end;{Barycentric} end; {loop for X, Y,Z} // Rotate from ecliptic to ICRS coordinates and the results. if bary=false then {mod for Pascal. Calculate heliocentric or bary centric if requested, not both} begin {heliocentric} X := HP[1]; Y := HP[2]; Z := HP[3]; PE[1] := X + AM12*Y + AM13*Z; PE[2] := AM21*X + AM22*Y + AM23*Z; PE[3] := AM32*Y + AM33*Z; X := HV[1]; Y := HV[2]; Z := HV[3]; VE[1] := X + AM12*Y + AM13*Z; VE[2] := AM21*X + AM22*Y + AM23*Z; VE[3] := AM32*Y + AM33*Z; end {heliocentric} else begin // Barycentric Earth position X := BP[1]; Y := BP[2]; Z := BP[3]; PE[1] := X + AM12*Y + AM13*Z; PE[2] := AM21*X + AM22*Y + AM23*Z; PE[3] := AM32*Y + AM33*Z; X := BV[1]; Y := BV[2]; Z := BV[3]; VE[1] := X + AM12*Y + AM13*Z; VE[2] := AM21*X + AM22*Y + AM23*Z; VE[3] := AM32*Y + AM33*Z; end;{Barycentric} end; end. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_inspector_plot.pas�������������������������������������������������������0000644�0001751�0001751�00000161440�14344743400�020313� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_inspector_plot; {Copyright (C) 2018, 2022 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode Delphi} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, LCLintf, StdCtrls, Buttons, math, astap_main, unit_stack, unit_annotation, clipbrd, ActnList; {for copy to clipboard} type { Tform_inspection1 } Tform_inspection1 = class(TForm) Action1: TAction; Action2: TAction; Action3: TAction; ActionList1: TActionList; bayer_label1: TLabel; to_clipboard1: TCheckBox; show_distortion1: TBitBtn; aberration_inspector1: TBitBtn; tilt1: TBitBtn; background_values1: TBitBtn; extra_stars1: TCheckBox; contour1: TCheckBox; GroupBox1: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; help_uncheck_outliers1: TLabel; hfd_button1: TButton; rectangle1: TRadioButton; triangle1: TRadioButton; roundness_button1: TButton; measuring_angle1: TComboBox; undo_button1: TBitBtn; values1: TCheckBox; vectors1: TCheckBox; voronoi1: TCheckBox; procedure aberration_inspector1Click(Sender: TObject); procedure Action1Execute(Sender: TObject); procedure background_values1Click(Sender: TObject); procedure close_button1Click(Sender: TObject); procedure contour1Change(Sender: TObject); procedure extra_stars1Change(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormKeyPress(Sender: TObject; var Key: char); procedure FormShow(Sender: TObject); procedure help_uncheck_outliers1Click(Sender: TObject); procedure roundness1Click(Sender: TObject); procedure measuring_angle1Change(Sender: TObject); procedure show_distortion1Click(Sender: TObject); procedure tilt1Click(Sender: TObject); procedure triangle1Change(Sender: TObject); procedure undo_button1Click(Sender: TObject); procedure values1Change(Sender: TObject); procedure vectors1Change(Sender: TObject); procedure voronoi1Change(Sender: TObject); private public end; var form_inspection1: Tform_inspection1; type hfd_array = array of array of integer; var contour_check: boolean=false; voronoi_check: boolean=false; values_check: boolean=true; vectors_check: boolean=true; extra_stars : boolean=false; three_corners: boolean=false; measuring_angle : string='0'; insp_left: integer=100; insp_top: integer=100; procedure CCDinspector(snr_min: double; triangle : boolean; measuring_angle: double); implementation {$R *.lfm} var executed : integer; {1 image changed (refresh required), 2 array changed(restore required)} function fnmodulo2(x,range: double):double; {specifiy range=2*pi fore -pi..pi or range=360 for -180.. 180} begin result:=x; while result<-range/2 do result:=result+range; while result>+range/2 do result:=result-range; end; procedure flip_xy(fliph,flipv :boolean; var x,y : integer);{flip if required for plotting. From array to image1 coordinates} begin if Fliph then x:=head.width-x; if Flipv=false then y:=head.height-y; end; procedure CCDinspector(snr_min: double; triangle : boolean; measuring_angle: double); var fitsX,fitsY,size,radius, i,j,starX,starY, retries,max_stars,x_centered,y_centered,starX2,starY2,len, nhfd,nhfd_outer_ring,fontsize,text_height,text_width,n,m,xci,yci,sqr_radius,left_margin, nhfd_11,nhfd_21,nhfd_31, nhfd_12,nhfd_22,nhfd_32, nhfd_13,nhfd_23,nhfd_33, x_11,x_21,x_31,y_11,y_21,y_31, x_12,x_22,x_32,y_12,y_22,y_32, x_13,x_23,x_33,y_13,y_23,y_33 : integer; hfd1,star_fwhm,snr,flux,xc,yc, median_worst,median_best,scale_factor, detection_level, hfd_min,tilt_value, aspect,theangle,theradius,screw1,screw2,screw3,sqrradius, hfd_median, median_outer_ring, median_11, median_21, median_31, median_12, median_22, median_32, median_13, median_23, median_33 : double; hfdlist, hfdlist_outer_ring, hfdlist_11,hfdlist_21,hfdlist_31, hfdlist_12,hfdlist_22,hfdlist_32, hfdlist_13,hfdlist_23,hfdlist_33 : array of double; starlistXY :array of array of integer; mess1,mess2,hfd_value,hfd_arcsec : string; Fliph, Flipv,restore_req : boolean; img_bk,img_sa : image_array; style: TTextStyle; begin if head.naxis=0 then exit; {file loaded?} Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } restore_req:=false; if head.naxis3>1 then {colour image} begin img_bk:=img_loaded; {In dynamic arrays, the assignment statement duplicates only the reference to the array, while SetLength does the job of physically copying/duplicating it, leaving two separate, independent dynamic arrays.} setlength(img_bk,head.naxis3,head.width,head.height);{force a duplication} convert_mono(img_loaded,head); get_hist(0,img_loaded);{get histogram of img_loaded and his_total. Required to get correct background value} restore_req:=true; end else if (bayerpat<>'') then {raw Bayer image} begin img_bk:=img_loaded; {In dynamic arrays, the assignment statement duplicates only the reference to the array, while SetLength does the job of physically copying/duplicating it, leaving two separate, independent dynamic arrays.} setlength(img_bk,head.naxis3,head.width,head.height);{force a duplication} check_pattern_filter(img_loaded); get_hist(0,img_loaded);{get histogram of img_loaded and his_total. Required to get correct background value} restore_req:=true; end; max_stars:=500; len:=4*max_stars; {should be enough, if not size is adapted} with mainwindow do begin Flipv:=mainwindow.flip_vertical1.Checked; Fliph:=mainwindow.Flip_horizontal1.Checked; image1.Canvas.Pen.Mode := pmMerge; image1.Canvas.brush.Style:=bsClear; image1.Canvas.font.color:=clyellow; image1.Canvas.Pen.Color := clred; image1.Canvas.Pen.width := round(1+head.height/image1.height);{thickness lines} fontsize:=round(max(10,8*head.height/image1.height));{adapt font to image dimensions} image1.Canvas.font.size:=fontsize; hfd_median:=0; median_outer_ring:=0; median_11:=0; median_21:=0; median_31:=0; median_12:=0; median_22:=0; median_32:=0; median_13:=0; median_23:=0; median_33:=0; SetLength(hfdlist,len);{set array length on a starting value} SetLength(starlistXY,2,len);{x,y positions} setlength(img_sa,1,head.width,head.height);{set length of image array} hfd_min:=max(0.8 {two pixels},strtofloat2(stackmenu1.min_star_size_stacking1.caption){hfd});{to ignore hot pixels which are too small} get_background(0,img_loaded,{cblack=0} false{histogram is already available},true {calculate noise level},{var}cblack,star_level);{calculate background level from peek histogram} detection_level:=max(3.5*noise_level[0],star_level); {level above background. Start with a high value} retries:=2; {try up to three times to get enough stars from the image} repeat nhfd:=0;{set counters at zero} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_sa[0,fitsX,fitsY]:=-1;{mark as star free area} for fitsY:=0 to head.height-1-1 do begin for fitsX:=0 to head.width-1-1 do begin if (( img_sa[0,fitsX,fitsY]<=0){area not occupied by a star} and (img_loaded[0,fitsX,fitsY]- cblack>detection_level){star}) then {new star} begin HFD(img_loaded,fitsX,fitsY,14 {annulus radius},99 {flux aperture restriction},0 {adu_e}, hfd1,star_fwhm,snr,flux,xc,yc);{star HFD and FWHM} if ((hfd1<=30) and (snr>snr_min {30}) and (hfd1>hfd_min) ) then begin radius:=round(3.0*hfd1);{for marking star area. A value between 2.5*hfd and 3.5*hfd gives same performance. Note in practice a star PSF has larger wings then predicted by a Gaussian function} sqr_radius:=sqr(radius); xci:=round(xc);{star center as integer} yci:=round(yc); for n:=-radius to +radius do {mark the whole circular star area as occupied to prevent double detection's} for m:=-radius to +radius do begin j:=n+yci; i:=m+xci; if ((j>=0) and (i>=0) and (j<head.height) and (i<head.width) and (sqr(m)+sqr(n)<=sqr_radius)) then img_sa[0,i,j]:=1; end; if ((img_loaded[0,xci ,yci]<head.datamax_org-1) and (img_loaded[0,xci-1,yci]<head.datamax_org-1) and (img_loaded[0,xci+1,yci]<head.datamax_org-1) and (img_loaded[0,xci ,yci-1]<head.datamax_org-1) and (img_loaded[0,xci ,yci+1]<head.datamax_org-1) and (img_loaded[0,xci-1,yci-1]<head.datamax_org-1) and (img_loaded[0,xci-1,yci+1]<head.datamax_org-1) and (img_loaded[0,xci+1,yci-1]<head.datamax_org-1) and (img_loaded[0,xci+1,yci+1]<head.datamax_org-1) ) then {not saturated} begin {store values} hfdlist[nhfd]:=hfd1; starlistXY[0,nhfd]:=xci; {store star position in image coordinates, not FITS coordinates} starlistXY[1,nhfd]:=yci; inc(nhfd); if nhfd>=length(hfdlist) then begin SetLength(hfdlist,nhfd+max_stars); {adapt length if required and store hfd value} SetLength(starlistXY,2,nhfd+max_stars);{adapt array size if required} end; end; end; end; end; end; dec(retries);{prepare for trying with lower detection level} if detection_level<=7*noise_level[0] then retries:= -1 {stop} else detection_level:=max(6.999*noise_level[0],min(30*noise_level[0],detection_level*6.999/30)); {very high -> 30 -> 7 -> stop. Or 60 -> 14 -> 7.0. Or for very short exposures 3.5 -> stop} until ((nhfd>=max_stars) or (retries<0));{reduce detection level till enough stars are found. Note that faint stars have less positional accuracy} if restore_req then {raw Bayer image or colour image} begin memo2_message('Restoring image'); img_loaded:=nil; img_loaded:=img_bk; {In dynamic arrays, the assignment statement duplicates only the reference to the array, while SetLength does the job of physically copying/duplicating it, leaving two separate, independent dynamic arrays.} get_hist(0,img_loaded);{get histogram of img_loaded and his_total} end; if nhfd>0 then {count the stars for each area} begin SetLength(hfdlist_outer_ring,nhfd);{space for all stars} SetLength(hfdlist_11,nhfd);{space for all stars} SetLength(hfdlist_21,nhfd);{space for all stars} SetLength(hfdlist_31,nhfd); SetLength(hfdlist_12,nhfd); SetLength(hfdlist_22,nhfd); SetLength(hfdlist_32,nhfd); SetLength(hfdlist_13,nhfd); SetLength(hfdlist_23,nhfd); SetLength(hfdlist_33,nhfd); nhfd_11:=0; nhfd_21:=0; nhfd_31:=0; nhfd_12:=0; nhfd_22:=0;{center} nhfd_32:=0; nhfd_13:=0; nhfd_23:=0; nhfd_33:=0; nhfd_outer_ring:=0; if triangle then begin screw1:=fnmodulo2(measuring_angle,360); {make -180 to 180 range} screw2:=fnmodulo2(measuring_angle+120,360); screw3:=fnmodulo2(measuring_angle-120,360); end; for i:=0 to nhfd-1 do {plot rectangles later since the routine can be run three times to find the correct detection_level and overlapping rectangle could occur} begin hfd1:=hfdlist[i]; size:=round(5*hfd1); starX:=starlistXY[0,i]; starY:=starlistXY[1,i]; starX2:=starX; starY2:=starY; flip_xy(fliph,flipv,starX2,starY2); {from array to image coordinates} mainwindow.image1.Canvas.Rectangle(starX2-size,starY2-size, starX2+size, starY2+size);{indicate hfd with rectangle} mainwindow.image1.Canvas.textout(starX2+size,starY2+size,floattostrf(hfd1, ffgeneral, 2,1));{add hfd as text} //the nine areas. FITS 1,1 is left bottom: //13 23 33 //12 22 32 //11 21 31 if sqr(starX - (head.width div 2) )+sqr(starY - (head.height div 2))>sqr(0.75)*(sqr(head.width div 2)+sqr(head.height div 2)) then begin hfdlist_outer_ring[nhfd_outer_ring]:=hfd1; inc(nhfd_outer_ring); end;{store out ring (>75% diameter) HFD values} if triangle=false then begin if ( (starX<(head.width*1/3)) and (starY<(head.height*1/3)) ) then begin hfdlist_11[nhfd_11]:=hfd1; inc(nhfd_11); end;{store corner HFD values} if ( (starX>(head.width*2/3)) and (starY<(head.height*1/3)) ) then begin hfdlist_31[nhfd_31]:=hfd1; inc(nhfd_31); if nhfd_31>=length(hfdlist_31) then SetLength(hfdlist_31,nhfd_31+500);end; if ( (starX>(head.width*2/3)) and (starY>(head.height*2/3)) ) then begin hfdlist_33[nhfd_33]:=hfd1; inc(nhfd_33); if nhfd_33>=length(hfdlist_33) then SetLength(hfdlist_33,nhfd_33+500);end; if ( (starX<(head.width*1/3)) and (starY>(head.height*2/3)) ) then begin hfdlist_13[nhfd_13]:=hfd1; inc(nhfd_13); if nhfd_13>=length(hfdlist_13) then SetLength(hfdlist_13,nhfd_13+500);end; if ( (starX>(head.width*1/3)) and (starX<(head.width*2/3)) and (starY>(head.height*2/3)) ) then begin hfdlist_23[nhfd_23]:=hfd1; inc(nhfd_23); end;{store corner HFD values} if ( (starX<(head.width*1/3)) and (starY>(head.height*1/3)) and (starY<(head.height*2/3))) then begin hfdlist_12[nhfd_12]:=hfd1; inc(nhfd_12); end;{store corner HFD values} if ( (starX>(head.width*1/3)) and (starX<(head.width*2/3)) and (starY>(head.height*1/3)) and (starY<(head.height*2/3))) then begin hfdlist_22[nhfd_22]:=hfd1; inc(nhfd_22); end;{square center} if ( (starX>(head.width*2/3)) and (starY>(head.height*1/3)) and (starY<(head.height*2/3))) then begin hfdlist_32[nhfd_32]:=hfd1; inc(nhfd_32); end;{store corner HFD values} if ( (starX>(head.width*1/3)) and (starX<(head.width*2/3)) and (starY<(head.height*1/3))) then begin hfdlist_21[nhfd_21]:=hfd1; inc(nhfd_21); end;{store corner HFD values} end else begin {triangle. Measured in a circle divided by three sectors of 120 degrees except for the circular center} x_centered:=starX- (head.width div 2); {array coordinates} y_centered:=starY- (head.height div 2); theangle:=arctan2(x_centered,y_centered)*180/pi;{angle in array from Y axis. So swap x, y} sqrradius:=sqr(x_centered)+sqr(x_centered); theradius:=sqrt(sqrradius); if sqrradius<=sqr(0.75)*(sqr(head.width div 2)+sqr(head.height div 2)) then {within circle} begin if sqrradius>=sqr(0.25)*(sqr(head.width div 2)+sqr(head.height div 2)) then {outside center} begin if ( (abs(fnmodulo2(theangle-screw1,360))<30) and (theradius<head.height div 2) ) then begin hfdlist_11[nhfd_11] :=hfd1; inc(nhfd_11);if nhfd_11>=length(hfdlist_11) then SetLength(hfdlist_11,nhfd_11+100);end;{sector 1} if ( (abs(fnmodulo2(theangle-screw2,360))<30) and (theradius<head.height div 2) ) then begin hfdlist_21[nhfd_21]:=hfd1; inc(nhfd_21);if nhfd_21>=length(hfdlist_21) then SetLength(hfdlist_21,nhfd_21+100);end;{sector 2} if ( (abs(fnmodulo2(theangle-screw3,360))<30) and (theradius<head.height div 2) ) then begin hfdlist_31[nhfd_31]:=hfd1; inc(nhfd_31);if nhfd_31>=length(hfdlist_31) then SetLength(hfdlist_31,nhfd_31+100);end;{sector 3} end else begin hfdlist_22[nhfd_22]:=hfd1; inc(nhfd_22);end;{round center} end; end end; if ((nhfd_22>0) and (nhfd_outer_ring>0)) then {enough information for curvature calculation} begin median_22:=SMedian(hfdlist_22,nhfd_22); median_outer_ring:=SMedian(hfdlist_outer_ring,nhfd_outer_ring); mess1:=' Off-axis aberration[HFD]='+floattostrF(median_outer_ring-(median_22),ffFixed,0,2);{} end else mess1:=''; hfd_median:=SMedian(hfdList,nhfd {use length}); if ((triangle=true) and (nhfd_11>0) and (nhfd_21>0) and (nhfd_31>0)) then {enough information for tilt calculation} begin median_11:=SMedian(hfdlist_11,nhfd_11);{screw 1} median_21:=SMedian(hfdlist_21,nhfd_21);{screw 2} median_31:=SMedian(hfdlist_31,nhfd_31);{screw 3} median_best:=min(median_11,min(median_21,median_31));{find best corner} median_worst:=max(median_11,max(median_21,median_31));{find worst corner} scale_factor:=head.width*0.3/median_worst; x_11:=round(median_11*scale_factor*sin(screw1*pi/180)+head.width/2); {screw 1} y_11:=round(median_11*scale_factor*cos(screw1*pi/180)+head.height/2);{calculate coordinates, based on rotation distance from Y axis} x_21:=round(median_21*scale_factor*sin(screw2*pi/180)+head.width/2); {screw 2} y_21:=round(median_21*scale_factor*cos(screw2*pi/180)+head.height/2);{calculate coordinates, based on rotation distance from Y axis} x_31:=round(median_31*scale_factor*sin(screw3*pi/180)+head.width/2);{screw 3} y_31:=round(median_31*scale_factor*cos(screw3*pi/180)+head.height/2);{calculate coordinates, based on rotation distance from Y axis} flip_xy(fliph,flipv,x_11,y_11); {from array to image coordinates} flip_xy(fliph,flipv,x_21,y_21); flip_xy(fliph,flipv,x_31,y_31); image1.Canvas.Pen.width :=image1.Canvas.Pen.width*2;{thickness lines} image1.Canvas.pen.color:=clyellow; image1.Canvas.moveto(x_11,y_11);{draw triangle} image1.Canvas.lineto(x_21,y_21);{draw triangle} image1.Canvas.lineto(x_31,y_31);{draw triangle} image1.Canvas.lineto(x_11,y_11);{draw triangle} image1.Canvas.lineto(head.width div 2,head.height div 2);{draw diagonal} image1.Canvas.lineto(x_21,y_21);{draw diagonal} image1.Canvas.lineto(head.width div 2,head.height div 2);{draw diagonal} image1.Canvas.lineto(x_31,y_31);{draw diagonal} tilt_value:=100*(median_worst-median_best)/hfd_median; mess2:=' Tilt[HFD]='+floattostrF(median_worst-median_best,ffFixed,0,2)+' ('+floattostrF(tilt_value,ffFixed,0,0)+'%';{estimate tilt value} if tilt_value<5 then mess2:=mess2+' none)' else if tilt_value<10 then mess2:=mess2+' almost none)' else if tilt_value<15 then mess2:=mess2+' mild)' else if tilt_value<20 then mess2:=mess2+' moderate)' else if tilt_value<30 then mess2:=mess2+' severe)' else mess2:=mess2+' extreme)'; fontsize:=fontsize*4; image1.Canvas.font.size:=fontsize; image1.Canvas.textout(x_11,y_11,floattostrF(median_11,ffFixed,0,2)); image1.Canvas.textout(x_21,y_21,floattostrF(median_21,ffFixed,0,2)); image1.Canvas.textout(x_31,y_31,floattostrF(median_31,ffFixed,0,2)); image1.Canvas.textout(head.width div 2,head.height div 2,floattostrF(median_22,ffFixed,0,2)); end else if ((triangle=false) and (nhfd_11>0) and (nhfd_21>0) and (nhfd_31>0) and (nhfd_12>0) and (nhfd_32>0) and (nhfd_13>0) and (nhfd_23>0) and (nhfd_33>0)) then {enough information for tilt calculation} begin median_11:=SMedian(hfdlist_11,nhfd_11); median_21:=SMedian(hfdlist_21,nhfd_21); median_31:=SMedian(hfdlist_31,nhfd_31); median_12:=SMedian(hfdlist_12,nhfd_12); {22 is already done} median_32:=SMedian(hfdlist_32,nhfd_32); median_13:=SMedian(hfdlist_13,nhfd_13); median_23:=SMedian(hfdlist_23,nhfd_23); median_33:=SMedian(hfdlist_33,nhfd_33); median_best:=min(min(median_13, median_33),min(median_11,median_31));{find best corner} median_worst:=max(max(median_13, median_33),max(median_11,median_31));{find worst corner} scale_factor:=head.width*0.25/median_worst; x_11:=round(-median_11*scale_factor+head.width/2); y_11:=round(-median_11*scale_factor+head.height/2);{calculate coordinates counter clockwise} x_21:=round( head.width/2); y_21:=round(-median_21*scale_factor+head.height/2); x_31:=round(+median_31*scale_factor+head.width/2); y_31:=round(-median_31*scale_factor+head.height/2); x_12:=round(-median_12*scale_factor+head.width/2); y_12:=round(+head.height/2); x_32:=round(+median_32*scale_factor+head.width/2); y_32:=round(+head.height/2); x_13:=round(-median_13*scale_factor+head.width/2); y_13:=round(+median_13*scale_factor+head.height/2); x_23:=round(head.width/2); y_23:=round(+median_23*scale_factor+head.height/2); x_33:=round(+median_33*scale_factor+head.width/2); y_33:=round(+median_33*scale_factor+head.height/2); flip_xy(fliph,flipv,x_11,y_11); {from array to image coordinates} flip_xy(fliph,flipv,x_21,y_21); flip_xy(fliph,flipv,x_31,y_31); flip_xy(fliph,flipv,x_12,y_12); {from array to image coordinates} flip_xy(fliph,flipv,x_22,y_22); {from array to image coordinates} flip_xy(fliph,flipv,x_32,y_32); {from array to image coordinates} flip_xy(fliph,flipv,x_13,y_13); {from array to image coordinates} flip_xy(fliph,flipv,x_23,y_23); {from array to image coordinates} flip_xy(fliph,flipv,x_33,y_33); {from array to image coordinates} image1.Canvas.Pen.width :=image1.Canvas.Pen.width*2;{thickness lines} image1.Canvas.pen.color:=clyellow; image1.Canvas.moveto(x_11,y_11);{draw trapezium} image1.Canvas.lineto(x_21,y_21);{draw trapezium} image1.Canvas.lineto(x_31,y_31);{draw trapezium} image1.Canvas.lineto(x_32,y_32);{draw trapezium} image1.Canvas.lineto(x_33,y_33);{draw trapezium} image1.Canvas.lineto(x_23,y_23);{draw trapezium} image1.Canvas.lineto(x_13,y_13);{draw trapezium} image1.Canvas.lineto(x_12,y_12);{draw trapezium} image1.Canvas.lineto(x_11,y_11);{draw trapezium} image1.Canvas.lineto(head.width div 2,head.height div 2);{draw diagonal} image1.Canvas.lineto(x_31,y_31);{draw diagonal} image1.Canvas.lineto(head.width div 2,head.height div 2);{draw diagonal} image1.Canvas.lineto(x_33,y_33);{draw diagonal} image1.Canvas.lineto(head.width div 2,head.height div 2);{draw diagonal} image1.Canvas.lineto(x_13,y_13);{draw diagonal} tilt_value:=100*(median_worst-median_best)/hfd_median; mess2:=' Tilt[HFD]='+floattostrF(median_worst-median_best,ffFixed,0,2)+' ('+floattostrF(tilt_value,ffFixed,0,0)+'%';{estimate tilt value} if tilt_value<5 then mess2:=mess2+' none)' else if tilt_value<10 then mess2:=mess2+' almost none)' else if tilt_value<15 then mess2:=mess2+' mild)' else if tilt_value<20 then mess2:=mess2+' moderate)' else if tilt_value<30 then mess2:=mess2+' severe)' else mess2:=mess2+' extreme)'; fontsize:=fontsize*4; image1.Canvas.font.size:=fontsize; image1.Canvas.textout(x_11,y_11,floattostrF(median_11,ffFixed,0,2)); image1.Canvas.textout(x_21,y_21,floattostrF(median_21,ffFixed,0,2)); image1.Canvas.textout(x_31,y_31,floattostrF(median_31,ffFixed,0,2)); image1.Canvas.textout(x_12,y_12,floattostrF(median_12,ffFixed,0,2)); image1.Canvas.textout(x_22,y_22,floattostrF(median_22,ffFixed,0,2)); image1.Canvas.textout(x_32,y_32,floattostrF(median_32,ffFixed,0,2)); image1.Canvas.textout(x_13,y_13,floattostrF(median_13,ffFixed,0,2)); image1.Canvas.textout(x_23,y_23,floattostrF(median_23,ffFixed,0,2)); image1.Canvas.textout(x_33,y_33,floattostrF(median_33,ffFixed,0,2)); image1.Canvas.textout(head.width div 2,head.height div 2,floattostrF(median_22,ffFixed,0,2)); end else begin mess2:=''; end; str(hfd_median:0:1,hfd_value); if head.cdelt2<>0 then begin str(hfd_median*abs(head.cdelt2)*3600:0:1,hfd_arcsec); hfd_arcsec:=' ('+hfd_arcsec+'")'; end else hfd_arcsec:=''; mess2:='Median HFD='+hfd_value+hfd_arcsec+ mess2+' Stars='+ inttostr(nhfd)+mess1 ; text_width:=mainwindow.image1.Canvas.textwidth(mess2);{Calculate textwidth. This also works for 4k with "make everything bigger"} fontsize:=trunc(fontsize*(head.width*0.9)/text_width);{use 90% of width} image1.Canvas.font.size:=fontsize; image1.Canvas.font.color:=clwhite; text_height:=mainwindow.image1.Canvas.textheight('T');{the correct text height, also for 4k with "make everything bigger"} left_margin:=min(head.width div 20,round(fontsize*2));{twice font size but not more then 5% of width. Required for small images} image1.Canvas.Brush.Style:=bssolid; //Bsclear; image1.Canvas.Brush.Color:=clBlack; image1.Canvas.textout(left_margin,head.height-text_height,mess2);{median HFD and tilt indication} memo2_message(mess2);{for stacking live} end else image1.Canvas.textout(round(fontsize*2),head.height- round(fontsize*4),'No stars detected'); end;{with mainwindow} hfdlist:=nil;{release memory} hfdlist_outer_ring:=nil; hfdlist_13:=nil; hfdlist_23:=nil; hfdlist_33:=nil; hfdlist_12:=nil; hfdlist_22:=nil; hfdlist_32:=nil; hfdlist_11:=nil; hfdlist_21:=nil; hfdlist_31:=nil; starlistXY:=nil; img_sa:=nil;{free mem} Screen.Cursor:=crDefault; end; procedure filter_hfd(var mean,min_value,max_value : single; nr : integer; hfd_values: hfd_array); {filter array of hfd values} var i,j,nr_closest,nr_second_closest,a,b,c,dummy: integer; closest_distance,second_closest_distance,distance_sqr : single; begin {local filtering. Take median of three closest stars} max_value:=0; min_value:=65535; mean:=0; for i:=0 to nr-1 do begin closest_distance:=999999; second_closest_distance:=999999; nr_closest:=0; for j:=0 to nr-1 do begin if i<>j then begin distance_sqr:=(sqr(hfd_values[0,i]-hfd_values[0,j])+sqr(hfd_values[1,i]-hfd_values[1,j])); if distance_sqr<closest_distance then begin second_closest_distance:=closest_distance; closest_distance:=distance_sqr; nr_second_closest:=nr_closest; nr_closest:=j; end else if distance_sqr<second_closest_distance then begin second_closest_distance:=distance_sqr; nr_second_closest:=j; end; end; end; {find median of three stars} a:=hfd_values[2,i]; b:=hfd_values[2,nr_closest]; c:=hfd_values[2,nr_second_closest]; if a<b then begin dummy:=b; b:=a; a:=dummy; end;{sort in sequence a,b,c wher a is the largest} if a<c then begin dummy:=c; c:=a; a:=dummy; end;{sort in sequence a,b,c wher a is the largest} if b<c then begin dummy:=c; c:=b; b:=dummy; end;{sort in sequence a,b,c wher a is the largest} hfd_values[2,i]:=b; {hfd*100, place median value in this cell} // if b=701 then // beep; if max_value<b then max_value:=b; if min_value>b then min_value:=b; mean:=mean+b; end; mean:=mean/nr; {useful length is nr} end; procedure voronoi_plot(min_value,max_value : single; nr:integer;hfd_values: hfd_array); var i,size,fitsx,fitsY,col,x,y,x2,y2,w,h,scaledown: integer; img_hfd: image_array; zeros_left : boolean; begin scaledown:=1+ head.width div 1000; w:=(head.width div scaledown)+1; h:=(head.height div scaledown)+1; setlength(img_hfd,1,w,h);{set length of image array} for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do img_hfd[0,fitsX,fitsY]:=0;{clear array} size:=0; repeat zeros_left:=false; for i:=0 to nr-1 do begin col:=hfd_values[2,i]; for x:=-size to size do for y:=-size to size do if round(sqrt(sqr(x)+sqr(y)))=size then begin x2:=hfd_values[0,i] div scaledown + x; y2:=hfd_values[1,i] div scaledown + y; if ((x2>=0) and (x2<w) and (y2>=0) and (y2<h)) then if img_hfd[ 0,x2,y2]=0 then {not used yet} begin img_hfd[ 0,x2,y2]:=col; zeros_left:=true; end; end; end; inc(size); until ((zeros_left=false) or (size>h/5)); if head.naxis>1 then setlength(img_loaded,1,head.width,head.height); head.naxis3:=1; for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_loaded[0,fitsX,fitsY]:={img_loaded[0,fitsX,fitsY]}+img_hfd[0,fitsX div scaledown,fitsY div scaledown]; img_hfd:=nil;{free memory} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} cblack:=min_value-5; cwhite:=max_value+5; mainwindow.minimum1.position:=round(min_value-5);{+5, -5 for very flat fields} mainwindow.maximum1.position:=round(max_value+5); end; procedure contour_plot(mean: single; nr:integer;hfd_values: hfd_array); var i,fitsx,fitsY,x,y,w,h,x2,y2,scaledown : integer; img_hfd: image_array; cols,min_value,max_value,step_adjust : single; distance,factor,influence, sum_influence,pixels_per_star: double; begin scaledown:=1+ head.width div 1000; w:=(head.width div scaledown)+1; h:=(head.height div scaledown)+1; setlength(img_hfd,1,w,h);{set length of image array} for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do img_hfd[0,fitsX,fitsY]:=0;{clear array} max_value:=0; min_value:=65535; pixels_per_star:=w*h/nr; factor:=2*sqrt(pixels_per_star); {take the square root to get calculate the average distance in pixels between the stars/measuring points} for x:=0 to w-1 do for y:=0 to h-1 do begin cols:=mean; sum_influence:=0; for i:=0 to nr-1 do {go through all points} begin x2:=hfd_values[0,i] div scaledown; y2:=hfd_values[1,i] div scaledown; distance:=sqrt(sqr(x2-x)+sqr(y2-y)); influence:=factor/(factor+distance); sum_influence:=sum_influence+influence; cols:=cols+hfd_values[2,i]*influence; end; cols:=cols/sum_influence; if max_value<cols then max_value:=cols; if min_value>cols then min_value:=cols; img_hfd[ 0,x,y]:=cols; end; if head.naxis>1 then setlength(img_loaded,1,head.width,head.height); head.naxis3:=1; {introduce rounding to show layers} step_adjust:=((max_value-min_value)/60); {convert back} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_loaded[0,fitsX,fitsY]:=(1/step_adjust)*round(step_adjust*img_hfd[0,fitsX div scaledown,fitsY div scaledown]); img_hfd:=nil;{free memory} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} cblack:=min_value-5; cwhite:=max_value+5; mainwindow.minimum1.position:=round(min_value-5);{+5, -5 for very flat fields} mainwindow.maximum1.position:=round(max_value+5); end; procedure measure_star_aspect(img: image_array;x1,y1: double; rs:integer; out aspect : double; out orientation : integer); {measures the aspect and orientation [0..179] of a single star } var i, j,angle,pixel_counter,orientationMin : integer; val,r,themax,themin,g,delta_angle,distance : double; data : array[-51..51,-51..51] of double; function value_subpixel(x1,y1:double):double; {calculate image pixel value on subpixel level} var x_trunc,y_trunc: integer; x_frac,y_frac : double; begin x_trunc:=trunc(x1); y_trunc:=trunc(y1); if ((x_trunc<=0) or (x_trunc>=(head.width-2)) or (y_trunc<=0) or (y_trunc>=(head.height-2))) then begin result:=0; exit;end; x_frac :=frac(x1); y_frac :=frac(y1); try result:= (img[0,x_trunc ,y_trunc ]) * (1-x_frac)*(1-y_frac);{pixel left top, 1} result:=result + (img[0,x_trunc+1,y_trunc ]) * ( x_frac)*(1-y_frac);{pixel right top, 2} result:=result + (img[0,x_trunc ,y_trunc+1]) * (1-x_frac)*( y_frac);{pixel left bottom, 3} result:=result + (img[0,x_trunc+1,y_trunc+1]) * ( x_frac)*( y_frac);{pixel right bottom, 4} except end; end; begin aspect:=999;{failure indication} rs:=min(rs,51); pixel_counter:=0; if ((x1-rs>=0) and (x1+rs<=head.width) and (y1-rs>0) and (y1+rs<head.height)) then {measurement within screen} begin for i:=-rs to rs do for j:=-rs to rs do begin val:=value_subpixel(x1+i,y1+j)- star_bg {from procedure hfd}; if val>7*sd_bg {from procedure hfd} then begin val:=sqrt(val);{reduce contrast} r:=sqrt(sqr(i)+sqr(j));{distance} data[i,j]:=val*(r); inc(pixel_counter); {how many pixels are illuminated} end else data[i,j]:=0; end; if pixel_counter<4 then begin exit; {not enough pixels} end; themax:=0; themin:=1E99; for angle:=0 to 179 do {rotate 180 degr} begin distance:=0; for i:=-rs to rs do for j:=-rs to rs do begin if data[i,j]>0 then begin g:=arctan2(j,i); delta_angle:=((angle*pi/180) - g); //split star with a line with "angle" and measure the sum (average) of distances to line. This distance will be smallest if the line splits the star in the length // Distance to split line is r*sin(delta_angle). r is already included in the data. distance:=distance+data[i,j]*abs(sin(delta_angle));{add to get sum of the distances} // img_loaded[0,round(x1+i),round(y1+j)]:=50000; end; end; if distance>themax then begin themax:=distance; // orientationMax:=angle; end; if distance<themin then begin themin:=distance; orientationMin:=angle; end; end; orientation:=orientationMin; aspect:=themax/(themin+0.00001); if aspect>5 then aspect:=999; {failure} // memo2_message(#9+floattostr(aspect)+#9+ inttostr(round(orientationMax))+#9+ inttostr(orientationMin)); end; end; procedure plot_vector(x,y,r,orientation : double); var sinO,cosO,xstep,ystep : double; wd : integer; begin wd:=max(1,head.height div 1000); mainwindow.image1.canvas.Pen.Color := clred; mainwindow.image1.canvas.Pen.width := wd; r:=r*wd; sincos(orientation,sinO,cosO); xstep:=r*cosO; ystep:=r*sinO; if mainwindow.flip_horizontal1.checked then begin x:=head.width-x; xstep:=-xstep; end; if mainwindow.flip_vertical1.checked=false then begin y:=head.height-y; ystep:=-ystep; end; moveToex(mainwindow.image1.Canvas.handle,round(x-xstep),round(y-ystep),nil); lineTo(mainwindow.image1.Canvas.handle,round(x+xstep),round(y+ystep)); {line} end; procedure CCDinspector_analyse(detype: char; aspect,values,vectors: boolean); var fitsX,fitsY,size,radius, i, j,nhfd,retries,max_stars,n,m,xci,yci,sqr_radius,orientation,starX,starY,x2,y2,font_luminance : integer; hfd1,star_fwhm,snr,flux,xc,yc,detection_level,med : double; mean, min_value,max_value : single; hfd_values : hfd_array; {array of integers} hfds : array of double; Fliphorizontal, Flipvertical: boolean; mess: string; img_sa : image_array; begin if head.naxis=0 then exit; {file loaded?} max_stars:=1000; SetLength(hfd_values,4,4000);{will contain x,y,hfd} setlength(img_sa,1,head.width,head.height);{set length of image array} get_background(0,img_loaded,false{ calculate histogram},true {calculate noise level},{var}cblack,star_level);{calculate background level from peek histogram} detection_level:=max(3.5*noise_level[0],star_level); {level above background. Start with a high value} retries:=2; {try up to three times to get enough stars from the image} repeat nhfd:=0;{set counters at zero} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_sa[0,fitsX,fitsY]:=-1;{mark as star free area} for fitsY:=0 to head.height-1-1 do begin for fitsX:=0 to head.width-1-1 do begin if (( img_sa[0,fitsX,fitsY]<=0){area not occupied by a star} and (img_loaded[0,fitsX,fitsY]- cblack>detection_level){star}) then {new star} begin HFD(img_loaded,fitsX,fitsY,14{annulus radius},99 {flux aperture restriction},0 {adu_e}, hfd1,star_fwhm,snr,flux,xc,yc);{star HFD and FWHM} if (hfd1>=1.3) {not a hotpixel} and (snr>30) and (hfd1<99) then begin radius:=round(5.0*hfd1);{for marking area. For inspector use factor 5 instead of 3} sqr_radius:=sqr(radius); xci:=round(xc);{star center as integer} yci:=round(yc); for n:=-radius to +radius do {mark the whole circular star area as occupied to prevent double detection's} for m:=-radius to +radius do begin j:=n+yci; i:=m+xci; if ((j>=0) and (i>=0) and (j<head.height) and (i<head.width) and (sqr(m)+sqr(n)<=sqr_radius)) then img_sa[0,i,j]:=1; end; if aspect then measure_star_aspect(img_loaded,xc,yc,round(hfd1*1.5),{out} hfd1 {aspect},orientation);{store the star aspect in hfd1} {store values} if hfd1<>999 then if ( ((img_loaded[0,round(xc),round(yc)]<head.datamax_org-1) and (img_loaded[0,round(xc-1),round(yc)]<head.datamax_org-1) and (img_loaded[0,round(xc+1),round(yc)]<head.datamax_org-1) and (img_loaded[0,round(xc),round(yc-1)]<head.datamax_org-1) and (img_loaded[0,round(xc),round(yc+1)]<head.datamax_org-1) and (img_loaded[0,round(xc-1),round(yc-1)]<head.datamax_org-1) and (img_loaded[0,round(xc-1),round(yc+1)]<head.datamax_org-1) and (img_loaded[0,round(xc+1),round(yc-1)]<head.datamax_org-1) and (img_loaded[0,round(xc+1),round(yc+1)]<head.datamax_org-1)){not saturated} or ((aspect)) ) then begin if nhfd>=length(hfd_values)-1 then SetLength(hfd_values,4,nhfd+500);{adapt length if required} hfd_values[0,nhfd]:=round(xc); hfd_values[1,nhfd]:=round(yc); hfd_values[2,nhfd]:=trunc(hfd1*100);{star aspect} hfd_values[3,nhfd]:=orientation; {star orientation 0..179} inc(nhfd); end; end; end; end; end; dec(retries);{prepare for trying with lower detection level} if detection_level<=7*noise_level[0] then retries:= -1 {stop} else detection_level:=max(6.999*noise_level[0],min(30*noise_level[0],detection_level*6.999/30)); {very high -> 30 -> 7 -> stop. Or 60 -> 14 -> 7.0. Or for very short exposures 3.5 -> stop} until ((nhfd>=max_stars) or (retries<0));{reduce dection level till enough stars are found. Note that faint stars have less positional accuracy} img_sa:=nil;{free mem} if nhfd<10 then begin memo2_message('Abort, only '+inttostr(nhfd)+' useful stars!'); exit; end; if detype<>' ' then {contour or voronoi} begin filter_hfd(mean, min_value,max_value ,nhfd, hfd_values); {apply the median value for each three grouped stars} font_luminance:=100; end else font_luminance:=round((cwhite-cblack)/4+cblack); if detype='V' then voronoi_plot(min_value,max_value,nhfd,hfd_values) else if detype='2' then contour_plot(mean,nhfd,hfd_values); Flipvertical:=mainwindow.flip_vertical1.Checked; Fliphorizontal:=mainwindow.Flip_horizontal1.Checked; size:=max(1,head.height div 1000);{font size, 1 is 9x5 pixels} setlength(hfds,nhfd); for i:=0 to nhfd-1 do {plot rectangles later since the routine can be run three times to find the correct detection_level and overlapping rectangle could occur} begin if values then begin if Fliphorizontal then starX:=head.width-hfd_values[0,i] else starX:=hfd_values[0,i]; if Flipvertical then starY:=head.height-hfd_values[1,i] else starY:=hfd_values[1,i]; annotation_to_array(floattostrf(hfd_values[2,i]/100 {aspect}, ffgeneral, 3,2){text},true{transparent},round(img_loaded[0,starX,starY]+font_luminance){luminance},size,starX+round(hfd_values[2,i]/30),starY,img_loaded);{string to image array as annotation. Text should be far enough of stars since the text influences the HFD measurement.} end; hfds[i]:=hfd_values[2,i]; end; quickSort(hfds,0,nhfd-1); med:=hfds[round((nhfd-1)*0.9)]; hfds:=nil;{free memory} if aspect then mess:='Values indicate aspect ratio of the star shape.' else begin mess:='10% of the HFD measurements is worse or equal then '; mess:=mess+floattostrf(med/100 , ffgeneral, 2,1); end; memo2_message(mess); annotation_to_array(mess,true {transparent},65535,size*2 {size},5,10+size*2*9,img_loaded); {report median value} plot_fits(mainwindow.image1,false,true);{plot image included text in pixel data} if ((aspect) and (vectors)) then for i:=0 to nhfd-1 do {plot rectangles later since the routine can be run three times to find the correct detection_level and overlapping rectangle could occur} begin plot_vector(hfd_values[0,i],hfd_values[1,i],50*(hfd_values[2,i]/100-1) {aspect},hfd_values[3,i]*pi/180); end; hfd_values:=nil; end; procedure Tform_inspection1.roundness1Click(Sender: TObject); var j: integer; demode : char; aspect : boolean; begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } form_inspection1.undo_button1Click(nil);{undo if required} backup_img; executed:=2;{restore required to undo} if contour_check then demode:='2' else if voronoi_check then demode:='V' else demode:=' '; if sender=nil {F3 hidden main menu} then aspect:=true else aspect:=((sender=hfd_button1)=false); if nrbits=8 then {convert to 16 bit} begin nrbits:=16; head.datamax_org:=65535; end; if head.naxis3>1 then begin convert_mono(img_loaded,head); get_hist(0,img_loaded);{get histogram of img_loaded and his_total. Required after box blur to get correct background value} end else if bayerpat<>'' then {raw Bayer image} begin check_pattern_filter(img_loaded); get_hist(0,img_loaded);{get histogram of img_loaded and his_total. Required after box blur to get correct background value} end; CCDinspector_analyse(demode,aspect {unroundness or HFD mode}, values_check,vectors_check); {$ifdef mswindows} filename2:=ExtractFileDir(filename2)+'\hfd_values.fit'; {$ELSE}{linux} filename2:=ExtractFileDir(filename2)+'/hfd_values.fit'; {$ENDIF} mainwindow.memo1.lines.clear; for j:=0 to 10 do {create an header with fixed sequence} if (j<>5) then {skip head.naxis3 for mono images} mainwindow.memo1.lines.add(head1[j]); {add lines to empthy memo1} mainwindow.memo1.lines.add(head1[27]); {add end} update_integer('BITPIX =',' / Bits per entry ' ,nrbits); update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); if head.naxis3=1 then remove_key('NAXIS3 ',false{all});{remove key word in header. Some program don't like naxis3=1} update_integer('DATAMIN =',' / Minimum data value ' ,0); update_integer('DATAMAX =',' / Maximum data value ' ,round(cwhite)); update_text ('COMMENT 1',' Written by ASTAP, Astrometric STAcking Program. www.hnsky.org'); if demode='V' then update_text ('COMMENT G',' Grey values indicate measured values * 100'); Screen.Cursor:=crDefault; { Always restore to normal } end; procedure Tform_inspection1.measuring_angle1Change(Sender: TObject); begin measuring_angle:=measuring_angle1.text; end; procedure Tform_inspection1.show_distortion1Click(Sender: TObject); var stars_measured,i :integer; report : string; begin form_inspection1.undo_button1Click(nil);{undo if required} executed:=1;{only refresh required to undo} if calculate_undisturbed_image_scale then measure_distortion(true {plot},stars_measured);{measure or plot distortion} if to_clipboard1.checked then begin report:='x database'+#9+'y database'+#9+'x measured'#9+'y measured'+#10; for i:=0 to length(distortion_data[0])-1 do report:=report+floattostr(distortion_data[0,i])+#9+floattostr(distortion_data[1,i])+#9+floattostr(distortion_data[2,i])+#9+floattostr(distortion_data[3,i])+#10; Clipboard.AsText:=report; end; distortion_data:=nil; end; procedure Tform_inspection1.tilt1Click(Sender: TObject); begin form_inspection1.undo_button1Click(nil);{undo if required} executed:=1;{only refresh required to undo} if extra_stars=false then CCDinspector(30,three_corners,strtofloat(measuring_angle)) else CCDinspector(10,three_corners,strtofloat(measuring_angle)); end; procedure Tform_inspection1.triangle1Change(Sender: TObject); begin three_corners:=triangle1.checked; end; procedure Tform_inspection1.undo_button1Click(Sender: TObject); begin if executed=1 then plot_fits(mainwindow.image1,false,true) {only refresh required} else if mainwindow.Undo1.enabled then begin restore_img; end; executed:=0; end; procedure Tform_inspection1.values1Change(Sender: TObject); begin values_check:=values1.checked; end; procedure Tform_inspection1.vectors1Change(Sender: TObject); begin vectors_check:=vectors1.checked; end; procedure Tform_inspection1.voronoi1Change(Sender: TObject); begin voronoi_check:=voronoi1.checked; if ((voronoi_check) and (contour_check)) then contour1.checked:=false; end; procedure Tform_inspection1.close_button1Click(Sender: TObject); begin form_inspection1.close; {normal this form is not loaded} mainwindow.setfocus; end; procedure Tform_inspection1.contour1Change(Sender: TObject); begin contour_check:=contour1.checked; if ((voronoi_check) and (contour_check)) then voronoi1.checked:=false; end; procedure Tform_inspection1.extra_stars1Change(Sender: TObject); begin extra_stars:=extra_stars1.checked; end; procedure Tform_inspection1.FormClose(Sender: TObject; var CloseAction: TCloseAction); begin insp_left:=left; insp_top:=top; mainwindow.setfocus; end; procedure Tform_inspection1.background_values1Click(Sender: TObject); var tx,ty,fontsize,halfstepX,halfstepY,stepX,stepY: integer; X,Y,stepsizeX,stepsizeY,median,median_center,factor : double; img_bk : image_array; Flipvertical, Fliphorizontal, restore_req : boolean; detext : string; begin if head.naxis=0 then exit; {file loaded?} form_inspection1.undo_button1Click(nil);{undo if required} executed:=1;{only refresh required to undo} Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } restore_req:=false; if head.naxis3>1 then {colour image} begin img_bk:=img_loaded; {In dynamic arrays, the assignment statement duplicates only the reference to the array, while SetLength does the job of physically copying/duplicating it, leaving two separate, independent dynamic arrays.} setlength(img_bk,head.naxis3,head.width,head.height);{force a duplication to a backup image} convert_mono(img_loaded,head); get_hist(0,img_loaded);{get histogram of img_loaded and his_total. Required to get correct background value} restore_req:=true;{restore original image later} end else if bayerpat<>'' then {raw Bayer image} begin img_bk:=img_loaded; {In dynamic arrays, the assignment statement duplicates only the reference to the array, while SetLength does the job of physically copying/duplicating it, leaving two separate, independent dynamic arrays.} setlength(img_bk,head.naxis3,head.width,head.height);{force a duplication to a backup image} check_pattern_filter(img_loaded); get_hist(0,img_loaded);{get histogram of img_loaded and his_total. Required to get correct background value} restore_req:=true; {restore original image later} end; with mainwindow do begin Flipvertical:=mainwindow.flip_vertical1.Checked; Fliphorizontal:=mainwindow.Flip_horizontal1.Checked; image1.Canvas.Pen.Mode := pmMerge; image1.Canvas.brush.Style:=bsClear; image1.Canvas.font.color:=clyellow; fontsize:=round(max(7,head.width/115));{adapt font to image dimensions} image1.Canvas.font.size:=fontsize; stepX:=trunc(head.width/(fontsize*6));{115/6 => 19 steps maximum, reduce if image is too small for font to fit} stepY:=trunc(stepX*head.height/head.width); {stepY in ratio,typical 13 steps} if odd(stepX)=false then stepX:=stepX+1; {make odd} if odd(stepY)=false then stepY:=stepY+1; {make odd} stepsizeX:=head.width/stepX;{stepsizeX is a double value} stepsizeY:=head.height/stepY;{stepsizeY is a double value} halfstepX:=round(stepsizeX/2); halfstepY:=round(stepsizeY/2); median_center:=median_background(img_loaded,0{color},trunc(stepsizeX){size},trunc(stepsizeY),head.width div 2,head.height div 2);{find median value of an area at position x,y with sizeX,sizeY} Y:=halfstepY; repeat X:=halfstepX; repeat median:=median_background(img_loaded,0{color},trunc(stepsizeX){size},trunc(stepsizeY),round(X),round(Y));{find median value of an area at position x,y with sizeX,sizeY} factor:=median/median_center; if abs(1-factor)>0.03 then image1.Canvas.font.color:=$00A5FF {dark orange} else image1.Canvas.font.color:=clYellow; detext:=floattostrf(factor, ffgeneral, 3,3); tx:=round(X); ty:=round(Y); if Flipvertical=false then tY:=head.height-tY; if Fliphorizontal then tX:=head.width-tX; tx:=round(X)-( mainwindow.image1.canvas.Textwidth(detext) div 2);{make text centered at x, y} ty:=round(Y)-( mainwindow.image1.canvas.Textheight(detext) div 2); mainwindow.image1.Canvas.textout(tX,tY,detext);{add as text} X:=X+stepsizeX; until X>=head.width-1; Y:=Y+stepsizeY; until Y>=head.height-1; if restore_req then {restore backup image for raw Bayer image or colour image} begin memo2_message('Restoring image'); img_loaded:=nil; img_loaded:=img_bk; {In dynamic arrays, the assignment statement duplicates only the reference to the array, while SetLength does the job of physically copying/duplicating it, leaving two separate, independent dynamic arrays.} get_hist(0,img_loaded);{get histogram of img_loaded and his_total} end; end; Screen.Cursor:=crDefault; end; procedure Tform_inspection1.aberration_inspector1Click(Sender: TObject); var fitsX,fitsY,col, widthN,heightN : integer; var {################# initialised variables #########################} side :integer=250; const gap=4; begin if head.naxis<>0 then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } form_inspection1.undo_button1Click(nil);{undo if required} backup_img; executed:=2;{restore required to undo} side:=min(side,head.height div 3); side:=min(side,head.width div 3); widthN:=3*side+2*gap; heightN:=widthN; setlength(img_temp,head.naxis3,widthN,heightN);{set length of image array} for col:=0 to head.naxis3-1 do for fitsY:=0 to heightN-1 do for fitsX:=0 to widthN-1 do {clear img_temp for the gaps} img_temp[col,fitsX,fitsY]:=0; for col:=0 to head.naxis3-1 do for fitsY:=0 to side-1 do for fitsX:=0 to side-1 do {copy corner} img_temp[col,fitsX,fitsY]:=img_loaded[col,fitsX,fitsY]; for col:=0 to head.naxis3-1 do for fitsY:=0 to side-1 do for fitsX:=0 to side-1 do {copy corner} img_temp[col,fitsX+side+gap,fitsY]:=img_loaded[col,fitsX+(head.width div 2)-(side div 2),fitsY]; for col:=0 to head.naxis3-1 do for fitsY:=0 to side-1 do for fitsX:=0 to side-1 do {copy corner} img_temp[col,fitsX+2*(side+gap),fitsY]:=img_loaded[col,fitsX+head.width-side,fitsY]; for col:=0 to head.naxis3-1 do for fitsY:=0 to side-1 do for fitsX:=0 to side-1 do {copy corner} img_temp[col,fitsX,fitsY+(side+gap)]:=img_loaded[col,fitsX,fitsY +(head.height div 2) - (side div 2) ]; for col:=0 to head.naxis3-1 do for fitsY:=0 to side-1 do for fitsX:=0 to side-1 do {copy corner} img_temp[col,fitsX+side+gap,fitsY+(side+gap)]:=img_loaded[col,fitsX+(head.width div 2)-(side div 2),fitsY +(head.height div 2) - (side div 2) ]; for col:=0 to head.naxis3-1 do for fitsY:=0 to side-1 do for fitsX:=0 to side-1 do {copy corner} img_temp[col,fitsX+2*(side+gap),fitsY+(side+gap)]:=img_loaded[col,fitsX+head.width-side,fitsY +(head.height div 2) - (side div 2) ]; for col:=0 to head.naxis3-1 do for fitsY:=0 to side-1 do for fitsX:=0 to side-1 do {copy corner} img_temp[col,fitsX,fitsY+2*(side+gap)]:=img_loaded[col,fitsX,fitsY + head.height - side]; for col:=0 to head.naxis3-1 do for fitsY:=0 to side-1 do for fitsX:=0 to side-1 do {copy corner} img_temp[col,fitsX+side+gap,fitsY+2*(side+gap)]:=img_loaded[col,fitsX+(head.width div 2)-(side div 2),fitsY + head.height - side]; for col:=0 to head.naxis3-1 do for fitsY:=0 to side-1 do for fitsX:=0 to side-1 do {copy corner} img_temp[col,fitsX+2*(side+gap),fitsY+2*(side+gap)]:=img_loaded[col,fitsX+head.width-side,fitsY + head.height - side]; // setlength(img_loaded,head.naxis3,head.width,head.height);{set length of image array} // img_loaded[0]:=img_temp[0]; // if head.naxis3>1 then img_loaded[1]:=img_temp[1]; // if head.naxis3>2 then img_loaded[2]:=img_temp[2]; // img_temp:=nil; {free memory} img_loaded:=nil;{release memory} img_loaded:=img_temp; head.width:=widthN; head.height:=heightN; update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); if head.cd1_1<>0 then {remove solution} begin remove_key('CD1_1 =',true{one}); remove_key('CD1_2 =',true{one}); remove_key('CD2_1 =',true{one}); remove_key('CD2_2 =',true{one}); head.cd1_1:=0; end; update_text ('COMMENT A',' Aberration view '+filename2); filename2:=ChangeFileExt(filename2,'_aberration_view.fits'); plot_fits(mainwindow.image1,true,true); image_move_to_center:=true; Screen.Cursor:=crDefault; end; end; procedure Tform_inspection1.Action1Execute(Sender: TObject); begin end; procedure Tform_inspection1.FormKeyPress(Sender: TObject; var Key: char); begin if key=#27 then close_button1Click(sender) else if key=#26 then {ctrl+Z} form_inspection1.undo_button1Click(nil); end; procedure Tform_inspection1.FormShow(Sender: TObject); begin form_inspection1.left:=insp_left; form_inspection1.top:=insp_top; executed:=0; contour1.checked:=contour_check; voronoi1.checked:=voronoi_check; values1.checked:=values_check; vectors1.checked:=vectors_check; show_distortion1.enabled:=head.cd1_1<>0; if head.naxis3>1 then bayer_label1.caption:='Colour image' else begin if bayerpat<>'' then bayer_label1.caption:='Bayer matrix image' else bayer_label1.caption:='Mono sensor image'; end; triangle1.checked:=three_corners; extra_stars1.checked:=extra_stars; measuring_angle1.text:=measuring_angle; end; procedure Tform_inspection1.help_uncheck_outliers1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#inspector'); end; end. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_listbox.pas��������������������������������������������������������������0000644�0001751�0001751�00000013547�14344743400�016737� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_listbox; { On-screen keyboard with find object data function} { interface via global variables.} { Key functionality: ESC --> close form with object_found=false Enter --> find object, if not found show list of designations containing the input string e.g. ngc2024 leave form with ngc2024 data. Object_found=true ngc list all NGC objects ngc 2024 list ngc2024 in the list ngc10 leave form with ngc10 data. Object_found=true ngc 10 list all objects containing ngc10 as ngc100, ngc1000, ngc1001... ngc10* list all objects containing ngc10 as ngc100, ngc1000, ngc1001... close form --> 2024 leave form with ngc2024 data if ngc was selected. Object_found=true ngc2024 leave form with ngc2024 data. Object_found=true abcdef leave form with abcdef designation. Object_found=false } {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons, unit_annotation {for deepsky database search}; type {Tform_listbox1 } Tform_listbox1 = class(TForm) cancel1: TBitBtn; ok1: TButton; keyboard_question1: TLabel; ListBox1: TListBox; Edit1: TEdit; procedure cancel1Click(Sender: TObject); procedure ok1Click(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormKeyPress(Sender: TObject; var Key: char); procedure FormShow(Sender: TObject); procedure ListBox1Click(Sender: TObject); procedure ListBox1DblClick(Sender: TObject); private public end; var form_listbox1: Tform_listbox1; {global variables as interface} keyboard_text : string; object_found : boolean; ra_data,dec_data, length_data, width_data, pa_data : double; implementation {$R *.lfm} { Tform_listbox1 } uses astap_main; procedure Tform_listbox1.FormClose(Sender: TObject; var CloseAction: TCloseAction); var dummy : double; error2: integer; begin if object_found=false then {form was closed by user. Initiate find action} begin keyboard_text:=edit1.text; object_found:=find_object(keyboard_text ,ra_data,dec_data,length_data,width_data,pa_data);{keyboard_text with length less then 2 will be ignored} end; end; procedure Tform_listbox1.FormKeyPress(Sender: TObject; var Key: char); begin if key=#27 {esc } then form_listbox1.close; {leave form} if key=#13 {enter} then ok1click(Sender); {enter} end; procedure Tform_listbox1.FormShow(Sender: TObject); begin object_found:=false; edit1.text:=keyboard_text; end; procedure Tform_listbox1.ListBox1Click(Sender: TObject); begin if (listbox1.itemindex)>=0 then {prevent error if nothing is selected} edit1.text:=listbox1.Items[listbox1.itemindex];{copy selection to edit } end; procedure Tform_listbox1.ListBox1DblClick(Sender: TObject); begin if (listbox1.itemindex)>=0 then {prevent error if nothing is selected} begin keyboard_text:=listbox1.Items[listbox1.itemindex];{copy selection to edit } if find_object(keyboard_text ,ra_data,dec_data,length_data,width_data,pa_data) {find object in unit u_annotation} then begin object_found:=true; form_listbox1.close; end end; end; procedure fill_listbox(filterstr: string); {fill listbox with destinations containing the filterstr} var ra0,dec0,length0,width0,pa : double; {dummies, not used} begin load_deep;{Load the deepsky database once. If already loaded, no action} linepos:=2;{Set pointer to the beginning} with form_listbox1 do begin if length(filterstr)>1 then begin listbox1.Clear; { empty the list of any old values } while read_deepsky('T' {full database search} ,0 {ra},0 {dec},1 {cos(telescope_dec)},2*pi{fov},{var} ra0,dec0,length0,width0,pa) {Deepsky database search} do begin if ((length(filterstr)=0) or (pos(filterstr,uppercase(naam2))>0)) then listbox1.Items.Add(naam2); if ((length(naam3)>0) and (((length(filterstr)=0) or (pos(filterstr,uppercase(naam3))>0)))) then listbox1.Items.Add(naam3); if ((length(naam4)>0) and (((length(filterstr)=0) or (pos(filterstr,uppercase(naam4))>0)))) then listbox1.Items.Add(naam4); end;{while loop} edit1.text:='';{clear filtering} ActiveControl:=listbox1;{set focus on listbox1 text window} end; end; end; procedure Tform_listbox1.ok1Click(Sender: TObject); begin Screen.Cursor:=crHourglass; application.processmessages; keyboard_text:=edit1.text; if find_object(keyboard_text ,ra_data,dec_data,length_data,width_data,pa_data) {find object in unit u_annotation} then begin object_found:=true; form_listbox1.close; end else begin {keyboard_text with length less then 2 or not found} if decode_string(keyboard_text,ra_data,dec_data) {convert a string to position succesfull} then begin object_found:=true; form_listbox1.close; end; keyboard_text:=StringReplace(uppercase(keyboard_text), ' ', '',[rfReplaceAll]);{replace all space and make upcase} keyboard_text:=StringReplace(keyboard_text, '*', '',[rfReplaceAll]);{remove wildchard} fill_listbox(keyboard_text);{fill listbox with suggestions} end; Screen.Cursor:=crDefault; end; procedure Tform_listbox1.cancel1Click(Sender: TObject); begin object_found:=false; form_listbox1.close; end; end. ���������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/astap_main.pas����������������������������������������������������������������0000644�0001751�0001751�00002371300�14344743400�016324� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit astap_main; {Copyright (C) 2017, 2022 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {Notes on MacOS pkg making: 1) Modify app in applications via "show contents", add updated files. 2) Add the app in program packages 3) Build package. Will produce PKG file containing the app. Compiler settings for macOS: targetOS: Darwin CPU family X86_64 LCL widegetset: cocoa } {open compiler issues: MacOS Listview smallimages are not displayed. https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/39193 MacOS ScrollCode=scEndScroll does not appears at the end of scroll https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/37454 Mac Listview event OnCustomDrawItem is never triggered/fired in Mac, widget Cocoa https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/39500 } interface uses {$ifdef mswindows} Windows, Classes, Controls, Dialogs,StdCtrls, ExtCtrls, ComCtrls, Menus, windirs,{for directories from windows} {$else} {unix} LCLType, {for vk_...} Unix, {for console} Classes, Controls, Dialogs,StdCtrls, ExtCtrls, ComCtrls, Menus,process, BaseUnix, {for fpchmod} {$endif} LCLIntf,{for selectobject, openURL} LCLProc, FPImage, fpreadTIFF, {all part of fcl-image} fpreadPNG,fpreadBMP,fpreadJPEG, fpwriteTIFF,fpwritePNG,fpwriteBMP,fpwriteJPEG, fptiffcmn, {images} GraphType, {fastbitmap} LCLVersion, InterfaceBase, LCLPlatformDef, SysUtils, Graphics, Forms, strutils, math, clipbrd, {for copy to clipboard} Buttons, PopupNotifier, simpleipc, CustApp, Types, fileutil, IniFiles;{for saving and loading settings} const astap_version='2022.12.09'; type { Tmainwindow } Tmainwindow = class(TForm) add_marker_position1: TMenuItem; bin3x3: TMenuItem; BitBtn1: TBitBtn; error_label1: TLabel; FontDialog1: TFontDialog; image_north_arrow1: TImage; LabelThree1: TLabel; LabelVar1: TLabel; LabelCheck1: TLabel; Memo1: TMemo; Memo3: TMemo; menucopy2: TMenuItem; Menufind2: TMenuItem; menufindnext2: TMenuItem; MenuItem1: TMenuItem; bin2x2: TMenuItem; image_cleanup1: TMenuItem; localgaussian1: TMenuItem; autocorrectcolours1: TMenuItem; center_lost_windows: TMenuItem; deepsky_annotation1: TMenuItem; hyperleda_annotation1: TMenuItem; MenuItem10: TMenuItem; annotate_with_measured_magnitudes1: TMenuItem; compress_fpack1: TMenuItem; measuretotalmagnitude1: TMenuItem; MenuItem13: TMenuItem; MenuItem14: TMenuItem; loadsettings1: TMenuItem; menufindnext1: TMenuItem; Menufind1: TMenuItem; annotate_minor_planets1: TMenuItem; batch_annotate1: TMenuItem; extract_pixel_11: TMenuItem; copy_paste_tool1: TMenuItem; MenuItem15: TMenuItem; annotations_visible1: TMenuItem; MenuItem20: TMenuItem; extract_pixel_21: TMenuItem; extract_pixel_22: TMenuItem; batch_solve_astrometry_net: TMenuItem; copy_to_clipboard1: TMenuItem; grid1: TMenuItem; freetext1: TMenuItem; MenuItem21: TMenuItem; display_adu1: TMenuItem; localcoloursmooth2: TMenuItem; MenuItem36: TMenuItem; move_images1: TMenuItem; SelectDirectoryDialog1: TSelectDirectoryDialog; Separator1: TMenuItem; simbad_annotation_star1: TMenuItem; simbad_annotation_deepsky1: TMenuItem; online_query1: TMenuItem; bin_2x2menu1: TMenuItem; bin_3x3menu1: TMenuItem; imageinspection1: TMenuItem; inspector1: TMenuItem; MenuItem22: TMenuItem; flip_v1: TMenuItem; flip_H1: TMenuItem; halo_removal1: TMenuItem; maintain_date1: TMenuItem; batch_rotate_1801: TMenuItem; hyperleda_guery1: TMenuItem; ned_query1: TMenuItem; set_modified_date1: TMenuItem; MenuItem26: TMenuItem; MenuItem27: TMenuItem; save_to_tiff2: TMenuItem; noise_in_electron1: TMenuItem; electron_to_adu_factors1: TMenuItem; MenuItem35: TMenuItem; rotate_arbitrary1: TMenuItem; roundness1: TMenuItem; MenuItem28: TMenuItem; MenuItem29: TMenuItem; MenuItem30: TMenuItem; add_sip_check1: TMenuItem; add_limiting_magn_check1: TMenuItem; batch_overwrite1: TMenuItem; convert_to_ppm1: TMenuItem; MenuItem31: TMenuItem; MenuItem32: TMenuItem; hfd_arcseconds1: TMenuItem; MenuItem33: TMenuItem; MenuItem34: TMenuItem; Constellations1: TMenuItem; aavso_chart1: TMenuItem; N4: TMenuItem; MenuItem38: TMenuItem; save1: TButton; simbad_query1: TMenuItem; positionanddate1: TMenuItem; removegreenpurple1: TMenuItem; Shape1: TShape; sip1: TMenuItem; solve_button1: TButton; zoomfactorone1: TMenuItem; extractred1: TMenuItem; extractblue1: TMenuItem; extractgreen1: TMenuItem; MenuItem24: TMenuItem; writepositionshort1: TMenuItem; Shape_alignment_marker2: TShape; Shape_alignment_marker3: TShape; shape_manual_alignment1: TShape; sqm1: TMenuItem; Rota_mainmenu1: TMenuItem; batch_rotate_left1: TMenuItem; batch_rotate_right1: TMenuItem; gradient_removal1: TMenuItem; histogram_values_to_clipboard1: TMenuItem; local_adjustments1: TMenuItem; angular_distance1: TMenuItem; j2000_1: TMenuItem; galactic1: TMenuItem; MenuItem23: TMenuItem; annotate_unknown_stars1: TMenuItem; gaia_star_position1: TMenuItem; j2000d1: TMenuItem; mountposition1: TMenuItem; northeast1: TMenuItem; selectfont1: TMenuItem; popupmenu_statusbar1: TPopupMenu; shape_marker4: TShape; Stretchdrawmenu1: TMenuItem; stretch_draw_fits1: TMenuItem; show_statistics1: TMenuItem; PopupMenu_histogram1: TPopupMenu; remove_atmouse1: TMenuItem; remove_longitude_latitude1: TMenuItem; menupaste1: TMenuItem; PopupMenu_memo2: TPopupMenu; select_all1: TMenuItem; PageControl1: TPageControl; save_to_tiff1: TMenuItem; extract_pixel_12: TMenuItem; MenuItem7: TMenuItem; menupaste: TMenuItem; menucopy1: TMenuItem; PopupMenu_memo1: TPopupMenu; radec_copy1: TMenuItem; radec_paste1: TMenuItem; radec_search1: TMenuItem; PopupMenu_ra_dec1: TPopupMenu; save_settings1: TMenuItem; MenuItem16: TMenuItem; MenuItem17: TMenuItem; enterposition2: TMenuItem; flipped1: TMenuItem; inversimage1: TMenuItem; Enter_rectangle_with_label1: TMenuItem; MenuItem18: TMenuItem; select_all2: TMenuItem; set_area1: TMenuItem; rotate1: TMenuItem; shape_histogram1: TShape; shape_paste1: TShape; submenurotate1: TMenuItem; MenuItem19: TMenuItem; shape_marker2: TShape; shape_marker3: TShape; solvebytwopositions1: TMenuItem; enterposition1: TMenuItem; save_settings_as1: TMenuItem; settings_menu1: TMenuItem; TabSheet1: TTabSheet; TabSheet2: TTabSheet; UpDown1: TUpDown; variable_star_annotation1: TMenuItem; clean_up1: TMenuItem; preview_demosaic1: TMenuItem; PopupNotifier1: TPopupNotifier; remove_colour1: TMenuItem; Returntodefaultsettings1: TMenuItem; saturation_factor_plot1: TTrackBar; savesettings1: TMenuItem; MenuItem11: TMenuItem; MenuItem12: TMenuItem; remove_markers1: TMenuItem; SimpleIPCServer1: TSimpleIPCServer; zoomin1: TMenuItem; zoomout1: TMenuItem; select_directory_thumb1: TMenuItem; add_marker1: TMenuItem; calibrate_photometry1: TMenuItem; MenuItem9: TMenuItem; astrometric_solve_image1: TMenuItem; remove_left1: TMenuItem; remove_right1: TMenuItem; remove_above1: TMenuItem; remove_below1: TMenuItem; MenuItem8: TMenuItem; Shape_alignment_marker1: TShape; shape_marker1: TShape; SpeedButton1: TSpeedButton; split_osc1: TMenuItem; recent7: TMenuItem; recent8: TMenuItem; recent3: TMenuItem; recent4: TMenuItem; recent5: TMenuItem; recent6: TMenuItem; MenuItem2: TMenuItem; helponline1: TMenuItem; MenuItem3: TMenuItem; MenuItem5: TMenuItem; convert_to_fits1: TMenuItem; convertmono1: TMenuItem; MenuItem6: TMenuItem; recent1: TMenuItem; recent2: TMenuItem; star_annotation1: TMenuItem; Remove_deep_sky_object1: TMenuItem; MenuItem4: TMenuItem; ra1: TEdit; dec1: TEdit; Label1: TLabel; Label2: TLabel; MainMenu1: TMainMenu; Help: TMenuItem; Exit1: TMenuItem; About1: TMenuItem; File1: TMenuItem; OpenDialog1: TOpenDialog; N1: TMenuItem; N2: TMenuItem; ShowFITSheader1: TMenuItem; SaveDialog1: TSaveDialog; error_get_it: TLabel; ra_label: TLabel; dec_label: TLabel; rotation1: TLabel; inversemousewheel1: TCheckBox; LoadFITSPNGBMPJPEG1: TMenuItem; SaveasJPGPNGBMP1: TMenuItem; batch_add_solution1: TMenuItem; tools1: TMenuItem; TrayIcon1: TTrayIcon; View1: TMenuItem; flip_horizontal1: TMenuItem; flip_vertical1: TMenuItem; N5: TMenuItem; SaveFITSwithupdatedheader1: TMenuItem; demosaic_bayermatrix1: TMenuItem; N6: TMenuItem; Undo1: TMenuItem; stretch_draw1: TMenuItem; data_range_groupBox1: TGroupBox; Label12: TLabel; minimum1: TScrollBar; Label13: TLabel; maximum1: TScrollBar; min2: TEdit; max2: TEdit; histogram1: TImage; Label5: TLabel; range1: TComboBox; PopupMenu1: TPopupMenu; Copyposition1: TMenuItem; Copypositionindeg1: TMenuItem; writeposition1: TMenuItem; N7: TMenuItem; Enter_annotation1: TMenuItem; Saveasfits1: TMenuItem; Stackimages1: TMenuItem; Export_image1: TMenuItem; ImageList1: TImageList; N9: TMenuItem; CropFITSimage1: TMenuItem; stretch1: TComboBox; Polynomial1: TComboBox; N3: TMenuItem; StatusBar1: TStatusBar; Panel1: TPanel; Image1: TImage; procedure add_marker_position1Click(Sender: TObject); procedure annotate_with_measured_magnitudes1Click(Sender: TObject); procedure annotations_visible1Click(Sender: TObject); procedure autocorrectcolours1Click(Sender: TObject); procedure batch_annotate1Click(Sender: TObject); procedure batch_solve_astrometry_netClick(Sender: TObject); procedure calibrate_photometry1Click(Sender: TObject); procedure Constellations1Click(Sender: TObject); procedure convert_to_ppm1Click(Sender: TObject); procedure flip_H1Click(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure freetext1Click(Sender: TObject); procedure hfd_arcseconds1Click(Sender: TObject); procedure compress_fpack1Click(Sender: TObject); procedure copy_to_clipboard1Click(Sender: TObject); procedure extract_pixel_11Click(Sender: TObject); procedure extract_pixel_12Click(Sender: TObject); procedure extract_pixel_22Click(Sender: TObject); procedure FormDropFiles(Sender: TObject; const FileNames: array of String); procedure histogram_range1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure histogram_values_to_clipboard1Click(Sender: TObject); procedure Image1Paint(Sender: TObject); procedure imageflipv1Click(Sender: TObject); procedure annotate_unknown_stars1Click(Sender: TObject); procedure import_auid1Click(Sender: TObject); procedure inspector1Click(Sender: TObject); procedure j2000d1Click(Sender: TObject); procedure measuretotalmagnitude1Click(Sender: TObject); procedure loadsettings1Click(Sender: TObject); procedure menucopy1Click(Sender: TObject); procedure Menufind1Click(Sender: TObject); procedure menufindnext1Click(Sender: TObject); procedure copy_paste_tool1Click(Sender: TObject); procedure extract_pixel_21Click(Sender: TObject); procedure batch_rotate_left1Click(Sender: TObject); procedure angular_distance1Click(Sender: TObject); procedure j2000_1Click(Sender: TObject); procedure galactic1Click(Sender: TObject); procedure gaia_star_position1Click(Sender: TObject); procedure extractred1Click(Sender: TObject); procedure extractblue1Click(Sender: TObject); procedure extractgreen1Click(Sender: TObject); procedure grid1Click(Sender: TObject); procedure bin_2x2menu1Click(Sender: TObject); procedure MenuItem22Click(Sender: TObject); procedure electron_to_adu_factors1Click(Sender: TObject); procedure halo_removal1Click(Sender: TObject); procedure display_adu1Click(Sender: TObject); procedure localcoloursmooth2Click(Sender: TObject); procedure move_images1Click(Sender: TObject); procedure set_modified_date1Click(Sender: TObject); procedure positionanddate1Click(Sender: TObject); procedure inspection1click(Sender: TObject); procedure removegreenpurple1Click(Sender: TObject); procedure roundness1Click(Sender: TObject); procedure sip1Click(Sender: TObject); procedure split_osc1Click(Sender: TObject); procedure sqm1Click(Sender: TObject); procedure mountposition1Click(Sender: TObject); procedure northeast1Click(Sender: TObject); procedure range1Change(Sender: TObject); procedure remove_atmouse1Click(Sender: TObject); procedure gradient_removal1Click(Sender: TObject); procedure remove_longitude_latitude1Click(Sender: TObject); procedure selectfont1Click(Sender: TObject); procedure select_all1Click(Sender: TObject); procedure save_to_tiff1Click(Sender: TObject); procedure menupasteClick(Sender: TObject); procedure annotate_minor_planets1Click(Sender: TObject); procedure radec_copy1Click(Sender: TObject); procedure radec_paste1Click(Sender: TObject); procedure radec_search1Click(Sender: TObject); procedure save_settings1Click(Sender: TObject); procedure enterposition1Click(Sender: TObject); procedure inversimage1Click(Sender: TObject); procedure set_area1Click(Sender: TObject); procedure rotate_arbitrary1Click(Sender: TObject); procedure receivemessage(Sender: TObject); {For single instance, receive paramstr(1) from second instance prior to termination} procedure add_marker1Click(Sender: TObject); procedure center_lost_windowsClick(Sender: TObject); procedure convertmono1Click(Sender: TObject); procedure deepsky_annotation1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure Exit1Click(Sender: TObject); procedure About1Click(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: char); procedure helponline1Click(Sender: TObject); procedure Image1MouseEnter(Sender: TObject); procedure image_cleanup1Click(Sender: TObject); procedure deepsky_overlay1Click(Sender: TObject); procedure convert_to_fits1click(Sender: TObject); procedure bin2x2Click(Sender: TObject); procedure max2EditingDone(Sender: TObject); procedure Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure localgaussian1Click(Sender: TObject); procedure hyperleda_annotation1Click(Sender: TObject); procedure clean_up1Click(Sender: TObject); procedure remove_colour1Click(Sender: TObject); procedure Returntodefaultsettings1Click(Sender: TObject); procedure saturation_factor_plot1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); procedure saturation_factor_plot1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure savesettings1Click(Sender: TObject); procedure Polynomial1Change(Sender: TObject); procedure remove_markers1Click(Sender: TObject); procedure Panel1MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure Panel1MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure show_statistics1Click(Sender: TObject); procedure SimpleIPCServer1MessageQueued(Sender: TObject); procedure StatusBar1MouseEnter(Sender: TObject); procedure stretch_draw_fits1Click(Sender: TObject); procedure UpDown1Click(Sender: TObject; Button: TUDBtnType); procedure variable_star_annotation1Click(Sender: TObject); procedure zoomfactorone1Click(Sender: TObject); procedure zoomin1Click(Sender: TObject); procedure zoomout1Click(Sender: TObject); procedure astrometric_solve_image1Click(Sender: TObject); procedure min2EditingDone(Sender: TObject); procedure remove_above1Click(Sender: TObject); procedure remove_below1Click(Sender: TObject); procedure remove_left1Click(Sender: TObject); procedure remove_right1Click(Sender: TObject); procedure select_directory_thumb1Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure OpenDialog1SelectionChange(Sender: TObject); procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer ); procedure recent1Click(Sender: TObject); procedure Remove_deep_sky_object1Click(Sender: TObject); procedure ShowFITSheader1Click(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormShow(Sender: TObject); procedure ra1Change(Sender: TObject); procedure dec1Change(Sender: TObject); procedure solve_button1Click(Sender: TObject); procedure SaveFITSwithupdatedheader1Click(Sender: TObject); procedure Memo1Change(Sender: TObject); procedure SaveasJPGPNGBMP1Click(Sender: TObject); procedure LoadFITSPNGBMPJPEG1Click(Sender: TObject); procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure FormResize(Sender: TObject); procedure batch_add_solution1Click(Sender: TObject); procedure flip_horizontal1Click(Sender: TObject); procedure flip_vertical1Click(Sender: TObject); procedure demosaic_bayermatrix1Click(Sender: TObject); procedure star_annotation1Click(Sender: TObject); procedure Undo1Click(Sender: TObject); procedure stretch_draw1Click(Sender: TObject); procedure Copyposition1Click(Sender: TObject); procedure Copypositionindeg1Click(Sender: TObject); procedure writeposition1Click(Sender: TObject); procedure Enter_annotation1Click(Sender: TObject); procedure Stackimages1Click(Sender: TObject); procedure Saveasfits1Click(Sender: TObject); procedure Export_image1Click(Sender: TObject); procedure CropFITSimage1Click(Sender: TObject); procedure maximum1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); procedure stretch1Change(Sender: TObject); procedure histogram1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure maximum1Change(Sender: TObject); procedure minimum1Change(Sender: TObject); private { Private declarations } public { Public declarations } procedure DisplayHint(Sender: TObject); end; var mainwindow: Tmainwindow; type image_array = array of array of array of Single; star_list = array of array of double; Theader =record {contains the most important header info} width : integer;{image width} height : integer;{image height} naxis : integer;{number of dimensions} naxis3 : integer;{number of colors} crpix1 : double; {reference point X} crpix2 : double; cdelt1 : double; {X pixel size (deg)} cdelt2 : double; {Y pixel size (deg)} ra0 : double; {mount position} dec0 : double; crota1 : double; {image rotation at center in degrees} crota2 : double; {image rotation at center in degrees} cd1_1 : double; {solution matrix} cd1_2 : double; cd2_1 : double; cd2_2 : double; exposure : double; datamin_org : double; datamax_org : double;{for update histogram} xbinning : double;//binning for noise calculations ybinning : double;//binning for noise calculations xpixsz : double;//Pixel Width in microns (after binning) ypixsz : double;//Pixel height in microns (after binning) set_temperature : integer; dark_count : integer; light_count : integer; flat_count : integer; flatdark_count : integer; egain : string; {gain in e-/adu} gain : string; {gain in 0.1dB or else} date_obs : string; calstat : string; filter_name: string; end; type timgbackup = record head_val: Theader;{most important header values} header : string; {full header text} filen : string; {filename} img : image_array; end; theauid = record auid: string; ra : double; dec : double; Vmag: string; Verr: string; Bmag: string; Berr: string; end; theVar = record name: string; ra : double; dec : double; maxmag: string; minmag: string; period: string; category: string; end; var vsp : array of theauid;//for comparison stars AUID vsx : array of thevar;//for variable stars AUID img_backup : array of timgbackup;{dynamic so memory can be freed} img_loaded,img_temp,img_dark,img_flat,img_bias,img_average,img_variance,img_buffer,img_final : image_array; head, {for lights} head_2, {for analysing lights and dark, flats} head_ref {for reference light in stacking} : Theader;{contains the most important header info} settingstring :tstrings; {settings for save and loading} user_path : string;{c:\users\name\appdata\local\astap or ~/home/.config/astap} distortion_data : star_list; filename2: string; nrbits,size_backup,index_backup : integer;{number of backup images for ctrl-z, numbered 0,1,2,3} ra_mount,dec_mount,{telescope ra,dec} equinox, bandpass, ra_radians,dec_radians, pixel_size : double; var a_order,ap_order: integer;{Simple Imaging Polynomial use by astrometry.net, if 2 then available} a_0_0, a_0_1, a_0_2, a_0_3, a_1_0, a_1_1, a_1_2, a_2_0, a_2_1, a_3_0 : double; {SIP, Simple Imaging Polynomial use by astrometry.net, Spitzer} b_0_0, b_0_1, b_0_2, b_0_3, b_1_0, b_1_1, b_1_2, b_2_0, b_2_1, b_3_0 : double; {SIP, Simple Imaging Polynomial use by astrometry.net, Spitzer} ap_0_0, ap_0_1,ap_0_2, ap_0_3, ap_1_0, ap_1_1, ap_1_2, ap_2_0, ap_2_1, ap_3_0 : double;{SIP, Simple Imaging Polynomial use by astrometry.net} bp_0_0, bp_0_1,bp_0_2, bp_0_3, bp_1_0, bp_1_1, bp_1_2, bp_2_0, bp_2_1, bp_3_0 : double;{SIP, Simple Imaging Polynomial use by astrometry.net} histogram : array[0..2,0..65535] of integer;{red,green,blue,count} his_total_red, his_total_green,his_total_blue,extend_type,r_aperture : integer; {histogram number of values} his_mean,noise_level : array[0..2] of integer; stretch_c : array[0..32768] of single;{stretch curve} stretch_on, esc_pressed, fov_specified,unsaved_import, last_extension : boolean; star_level,star_bg,sd_bg, magn_limit : double; object_name, imagetype ,sitelat, sitelong,siteelev , centalt,centaz: string; focus_temp,cblack,cwhite,sqmfloat,pressure :double; {from FITS} subsamp, focus_pos : integer;{not always available. For normal DSS =1} date_avg,ut,pltlabel,plateid,telescop,instrum,origin,sqm_value : string; old_crpix1,old_crpix2,old_crota1,old_crota2,old_cdelt1,old_cdelt2,old_cd1_1,old_cd1_2,old_cd2_1,old_cd2_2 : double;{for backup} warning_str,{for solver} roworder :string; copy_paste_x, copy_paste_y, copy_paste_w, copy_paste_h : integer; position_find: Integer; {for fits header memo1 popup menu} var {################# initialised variables #########################} PatternToFind : string=''; {for fits header memo1 popup menu } hist_range {range histogram 255 or 65535 or streched} : integer=255; image_move_to_center : boolean=false; focallen: double=0; lat_default: string=''; long_default: string=''; down_x: integer=0; down_y: integer=0; down_xy_valid: boolean=false;{required for Linux GTK.} startX: integer=0; {range 0..} startY: integer=0; stopX: integer=0; {range 0..} stopY: integer=0; width_radians : double=(140/60)*pi/180; height_radians: double=(100/60)*pi/180; mouse_enter : integer=0;{for crop function} application_path:string='';{to be set in main} database_path:string='';{to be set in main} bayerpat: string='';{bayer pattern} bayerpattern_final :integer=2; {ASI294, ASI071, most common pattern} sip : boolean=false; {use SIP coefficients} xbayroff: double=0;{additional bayer pattern offset to apply} Ybayroff: double=0;{additional bayer pattern offset to apply} annotated : boolean=false;{any annotation in fits file?} sqm_key : ansistring='SQM '; centaz_key : ansistring='CentAz '; hfd_median : double=0;{median hfd, use in reporting in write_ini} hfd_counter: integer=0;{star counter (for hfd_median), use in reporting in write_ini} aperture_ratio: double=0; {ratio flux_aperture/hfd_median} flux_aperture : double=99;{circle where flux is measured} annulus_radius : integer=14;{inner of square where background is measured. Square has width and height twice annulus_radius} copy_paste :boolean=false; shape_fitsX: double=0; shape_fitsY: double=0; shape_fitsX2: double=0; shape_fitsY2: double=0; shape_fitsX3: double=0; shape_fitsY3: double=0; shape_nr: integer=1; shape_marker1_fitsX: double=10; shape_marker1_fitsY: double=10; shape_marker2_fitsX: double=20; shape_marker2_fitsY: double=20; shape_marker3_fitsX: double=0; shape_marker3_fitsY: double=0; shape_marker4_fitsX: double=0; shape_marker4_fitsY: double=0; commandline_execution : boolean=false;{program executed in command line} commandline_log : boolean=false;{file log request in command line} errorlevel : integer=0;{report errors when shutdown} mouse_positionRADEC1 : string='';{For manual reference solving} mouse_positionRADEC2 : string='';{For manual reference solving} flipped_img : string=''; bayer_pattern : array[0..4] of string=('GRBG', 'BGGR', 'RGGB', 'GBRG', 'GGGG');// last pattern is used for Fuji X-trans GGGGBRGGGGRBGGGG' annotation_color: tcolor=clyellow; annotation_diameter : integer=20; pedestal : integer=0; egain_extra_factor : integer=16; egain_default : double=1; procedure ang_sep(ra1,dec1,ra2,dec2 : double;out sep: double); function load_fits(filen:string;light {load as light or dark/flat},load_data,update_memo: boolean;get_ext: integer;out head: Theader; out img_loaded2: image_array): boolean;{load fits file} procedure plot_fits(img: timage;center_image,show_header:boolean); procedure use_histogram(img: image_array; update_hist: boolean);{get histogram} procedure HFD(img: image_array;x1,y1,rs {boxsize}: integer;aperture_small, adu_e {unbinned}:double; out hfd1,star_fwhm,snr{peak/sigma noise}, flux,xc,yc:double);{calculate star HFD and FWHM, SNR, xc and yc are center of gravity, rs is the boxsize, aperture for the flux measurment. All x,y coordinates in array[0..] positions} procedure backup_img; procedure restore_img; function load_image(re_center, plot:boolean) : boolean; {load fits or PNG, BMP, TIF} procedure demosaic_bayer(var img: image_array); {convert OSC image to colour} Function INT_IEEE4_reverse(x: double):longword;{adapt intel floating point to non-intel float} function save_fits(img: image_array;filen2:ansistring;type1:integer;override2:boolean): boolean;{save to 8, 16 OR -32 BIT fits file} procedure update_text(inpt,comment1:string);{update or insert text in header} procedure add_text(inpt,comment1:string);{add text to header memo} procedure update_longstr(inpt,thestr:string);{update or insert long str including single quotes} procedure add_long_comment(descrip:string);{add long text to header memo. Split description over several lines if required} procedure update_generic(message_key,message_value,message_comment:string);{update header using text only} procedure update_integer(inpt,comment1:string;x:integer);{update or insert variable in header} procedure add_integer(inpt,comment1:string;x:integer);{add integer variable to header} procedure update_float(inpt,comment1:string;x:double);{update keyword of fits header in memo} procedure remove_key(inpt:string; all:boolean);{remove key word in header. If all=true then remove multiple of the same keyword} function strtoint2(s: string):integer; {str to integer, fault tolerant} function strtofloat1(s:string): double;{string to float, error tolerant} function strtofloat2(s:string): double;{works with either dot or komma as decimal separator} function TextfileSize(const name: string): LongInt; function floattostr6(x:double):string; function floattostr4(x:double):string; procedure update_menu(fits :boolean);{update menu if fits file is available in array or working from image1 canvas} procedure get_hist(colour:integer;img :image_array);{get histogram of img_loaded} procedure save_settings2; procedure save_settings(lpath:string); //save settings at any path procedure progress_indicator(i:double; info:string);{0 to 100% indication of progress} {$ifdef mswindows} procedure ExecuteAndWait(const aCommando: string; show_console:boolean); {$else} {unix} procedure execute_unix(const execut:string; param: TStringList; show_output: boolean);{execute linux program and report output} procedure execute_unix2(s:string); {$endif} function mode(img :image_array;colorm,xmin,xmax,ymin,ymax,max1:integer):integer;{find the most common value of a local area and assume this is the best average background value} function get_negative_noise_level(img :image_array;colorm,xmin,xmax,ymin,ymax: integer;common_level:double): double;{find the negative noise level below most_common_level of a local area} function prepare_ra5(rax:double; sep:string):string; {radialen to text format 24h 00.0} function prepare_ra6(rax:double; sep:string):string; {radialen to text format 24h 00 00} function prepare_dec4(decx:double;sep:string):string; {radialen to text format 90d 00 } function prepare_dec(decx:double; sep:string):string; {radialen to text, format 90d 00 00} function prepare_ra(rax:double; sep:string):string; {radialen to text, format 24: 00 00.0 } function prepare_ra8(rax:double; sep:string):string; {radialen to text, format 24: 00 00.00 } Function prepare_dec2(decx:double; sep:string):string; {radialen to text, format 90d 00 00.1} function inttostr5(x:integer):string;{always 5 digit} function SMedian(list: array of double; leng: integer): double;{get median of an array of double. Taken from CCDciel code but slightly modified} procedure mad_median(list: array of double; leng :integer;out mad,median :double);{calculate mad and median without modifying the data} procedure DeleteFiles(lpath,FileSpec: string);{delete files such *.wcs} procedure new_to_old_WCS(var head:theader);{convert new style FITS to old style} procedure old_to_new_WCS(var head:theader);{ convert old WCS to new} procedure show_marker_shape(shape: TShape; shape_type,w,h,minimum:integer; fitsX,fitsY: double);{show manual alignment shape} function check_raw_file_extension(ext: string): boolean;{check if extension is from raw file} function convert_raw(loadfile,savefile :boolean;var filename3: string;out head: Theader; out img: image_array ): boolean; {convert raw to fits file using DCRAW or LibRaw. filename3 will be update with the new file extension e.g. .CR2.fits} function unpack_cfitsio(filename3: string): boolean; {convert .fz to .fits using funpack} function pack_cfitsio(filename3: string): boolean; {convert .fz to .fits using funpack} function load_TIFFPNGJPEG(filen:string;light {load as light or dark/flat}: boolean; out head :theader; out img_loaded2: image_array) : boolean;{load 8 or 16 bit TIFF, PNG, JPEG, BMP image} procedure get_background(colour: integer; img :image_array;calc_hist, calc_noise_level: boolean; out background, starlevel: double); {get background and star level from peek histogram} function extract_exposure_from_filename(filename8: string):integer; {try to extract exposure from filename} function extract_temperature_from_filename(filename8: string): integer; {try to extract temperature from filename} function extract_objectname_from_filename(filename8: string): string; {try to extract exposure from filename} function test_star_spectrum(r,g,b: single) : single;{test star spectrum. Result of zero is perfect star spectrum} procedure measure_magnitudes(annulus_rad:integer; deep: boolean; var stars :star_list);{find stars and return, x,y, hfd, flux} function binX2X3_file(binfactor:integer) : boolean; {converts filename2 to binx2,binx3, binx4 version} procedure ra_text_to_radians(inp :string; out ra : double; out errorRA :boolean); {convert ra in text to double in radians} procedure dec_text_to_radians(inp :string; out dec : double; out errorDEC :boolean); {convert ra in text to double in radians} function image_file_name(inp : string): boolean; {readable image name?} procedure plot_annotations(use_solution_vectors,fill_combo: boolean); {plot annotations stored in fits header. Offsets are for blink routine} procedure RGB2HSV(r,g,b : single; out h {0..360}, s {0..1}, v {0..1}: single);{RGB to HSVB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} procedure HSV2RGB(h {0..360}, s {0..1}, v {0..1} : single; out r,g,b: single); {HSV to RGB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} function get_demosaic_pattern : integer; {get the required de-bayer range 0..3} Function LeadingZero(w : integer) : String; procedure log_to_file(logf,mess : string);{for testing} procedure log_to_file2(logf,mess : string);{used for platesolve2 and photometry} procedure demosaic_advanced(var img : image_array);{demosaic img_loaded} procedure bin_X2X3X4(binfactor:integer);{bin img_loaded 2x or 3x or 4x} procedure local_sd(x1,y1, x2,y2{regio of interest},col : integer; img : image_array; out sd,mean :double; out iterations :integer);{calculate mean and standard deviation in a rectangle between point x1,y1, x2,y2} function extract_raw_colour_to_file(filename7,filtern: string; xp,yp : integer) : string;{extract raw colours and write to file} function fits_file_name(inp : string): boolean; {fits file name?} function fits_tiff_file_name(inp : string): boolean; {fits or tiff file name?} function tiff_file_name(inp : string): boolean; {tiff file name?} function prepare_IAU_designation(rax,decx :double):string;{radialen to text hhmmss.s+ddmmss format} procedure coordinates_to_celestial(fitsx,fitsy : double; head: Theader; out ram,decm : double); {fitsX, Y to ra,dec} procedure sensor_coordinates_to_celestial(fitsx,fitsy : double; out ram,decm : double {fitsX, Y to ra,dec}); procedure celestial_to_pixel(ra_t,dec_t: double; out fitsX,fitsY: double);{ra,dec to fitsX,fitsY} procedure show_shape_manual_alignment(index: integer);{show the marker on the reference star} procedure write_astronomy_wcs(filen:string); function savefits_update_header(filen2:string) : boolean;{save fits file with updated header} procedure plot_the_annotation(x1,y1,x2,y2:integer; typ:double; name,magn :string);{plot annotation from header in ASTAP format} procedure reset_fits_global_variables(light :boolean; out head:theader ); {reset the global variable} function convert_to_fits(var filen: string): boolean; {convert to fits} procedure QuickSort(var A: array of double; iLo, iHi: Integer) ;{ Fast quick sort. Sorts elements in the array list with indices between lo and hi} procedure convert_mono(var img: image_array; var head: Theader); procedure Wait(wt:single=500); {smart sleep} procedure update_header_for_colour; {update naxis and naxis3 keywords} procedure flip(x1,y1 : integer; out x2,y2 :integer);{array to screen or screen to array coordinates} function decode_string(data0: string; out ra4,dec4 : double):boolean;{convert a string to position} function save_tiff16(img: image_array; filen2:string;flip_H,flip_V:boolean): boolean;{save to 16 bit TIFF file } function save_tiff16_secure(img : image_array;filen2:string) : boolean;{guarantee no file is lost} function find_reference_star(img : image_array) : boolean;{for manual alignment} function aavso_update_required : boolean; //update of downloaded database required? function retrieve_ADU_to_e_unbinned(head_egain :string): double; //Factor for unbinned files. Result is zero when calculating in e- is not activated in the statusbar popup menu. Then in procedure HFD the SNR is calculated using ADU's only. function noise_to_electrons(adu_e, binning, sd : double): string;//reports noise in ADU's (adu_e=0) or electrons const bufwide=1024*120;{buffer size in bytes} head1: array [0..28] of ansistring= ( {0}('SIMPLE = T / FITS header '), {1}('BITPIX = 8 / Bits per entry '), {2}('NAXIS = 2 / Number of dimensions '), {3}('NAXIS1 = 100 / length of x axis '), {4}('NAXIS2 = 100 / length of y axis '), {5}('NAXIS3 = 3 / length of z axis (mostly colors) '), {6}('EQUINOX = 2000.0 / Equinox of coordinates '), {7}('DATAMIN = 0 / Minimum data value '), {8}('DATAMAX = 255 / Maximum data value '), {9}('BZERO = 0.0 / physical_value = BZERO + BSCALE * array_value '), {10}('BSCALE = 1.0 / physical_value = BZERO + BSCALE * array_value '), {11}('CTYPE1 = '+#39+'RA---TAN'+#39+' / first parameter RA , projection TANgential '), {12}('CTYPE2 = '+#39+'DEC--TAN'+#39+' / second parameter DEC, projection TANgential '), {13}('CUNIT1 = '+#39+'deg '+#39+' / Unit of coordinates '), {14}('CRPIX1 = 0.0 / X of reference pixel '), {15}('CRPIX2 = 0.0 / Y of reference pixel '), {16}('CRVAL1 = 0.0 / RA of reference pixel (deg) '), {17}('CRVAL2 = 0.0 / DEC of reference pixel (deg) '), {18}('CDELT1 = 0.0 / X pixel size (deg) '), {19}('CDELT2 = 0.0 / Y pixel size (deg) '), {20}('CROTA1 = 0.0 / Image twist X axis(deg) '), {21}('CROTA2 = 0.0 / Image twist Y axis deg) E of N if not flipped '), {22}('CD1_1 = 0.0 / CD matrix to convert (x,y) to (Ra, Dec) '), {23}('CD1_2 = 0.0 / CD matrix to convert (x,y) to (Ra, Dec) '), {24}('CD2_1 = 0.0 / CD matrix to convert (x,y) to (Ra, Dec) '), {25}('CD2_2 = 0.0 / CD matrix to convert (x,y) to (Ra, Dec) '), {26}('PLTSOLVD= T / ASTAP from hnsky.org '), {27}('END '), {28}(' ')); {should be empthy !!} pi_=pi; {for evaluate in debugging} dialog_filter_fits_tif='FITS and TIFF files|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS;*.tif;*.tiff;*.TIF.TIFF'; type byteX3 = array[0..2] of byte; byteXX3 = array[0..2] of word; byteXXXX3 = array[0..2] of single; var Reader : TReader; fitsbuffer : array[0..bufwide] of byte;{buffer for 8 bit FITS file} fitsbuffer2: array[0..round(bufwide/2)] of word absolute fitsbuffer;{buffer for 16 bit FITS file} fitsbufferRGB: array[0..trunc(bufwide/3)] of byteX3 absolute fitsbuffer;{buffer for 8 bit RGB FITS file} fitsbufferRGB16: array[0..trunc(bufwide/6)] of byteXX3 absolute fitsbuffer;{buffer for 16 bit RGB PPM file} fitsbufferRGB32: array[0..trunc(bufwide/12)] of byteXXXX3 absolute fitsbuffer;{buffer for -32 bit PFM file} fitsbuffer4: array[0..round(bufwide/4)] of longword absolute fitsbuffer;{buffer for floating bit ( -32) FITS file} fitsbuffer8: array[0..trunc(bufwide/8)] of int64 absolute fitsbuffer;{buffer for floating bit ( -64) FITS file} fitsbufferSINGLE: array[0..round(bufwide/4)] of single absolute fitsbuffer;{buffer for floating bit ( -32) FITS file} fitsbufferDouble: array[0..round(bufwide/8)] of double absolute fitsbuffer;{buffer for floating bit ( -64) FITS file} implementation uses unit_dss, unit_stack, unit_tiff,unit_star_align, unit_astrometric_solving, unit_star_database, unit_annotation, unit_thumbnail, unit_xisf,unit_gaussian_blur,unit_inspector_plot,unit_asteroid, unit_astrometry_net, unit_live_stacking, unit_hjd,unit_hyperbola, unit_aavso, unit_listbox, unit_sqm, unit_stars_wide_field,unit_constellations,unit_raster_rotate,unit_download,unit_ephemerides; {$R astap_cursor.res} {FOR CURSORS} {$IFDEF fpc} {$R *.lfm} {$else} {delphi} {$R *.dfm} {$endif} var recent_files : tstringlist; stop_RX, stop_RY, start_RX,start_RY, export_index : integer; {for rubber rectangle. These values are the same startX,.... except if image is flipped} object_xc,object_yc, object_raM,object_decM : double; {near mouse auto centered object position} var {################# initialised variables #########################} SaveasJPGPNGBMP1filterindex : integer=4; LoadFITSPNGBMPJPEG1filterindex: integer=1; marker_position : string=''; mouse_fitsx : double=0; mouse_fitsy : double=0; coord_frame : integer=0; {J2000=0 or galactic=1} hfd_arcseconds: boolean=false; {HFD in arc seconds or pixels} display_adu: boolean=false; {display adu measured} {$IFDEF Darwin} font_name: string= 'Courier'; font_size : integer = 9; {$else} {$IFDEF linux} font_name: string= 'Monospace'; font_size : integer= 10; {$ELSE} font_name: string= 'Courier'; font_size : integer = 9; {$ENDIF} {$ENDIF} font_charset : integer=0; {Ansi_char} font_style : tFontStyles=[]; font_color : tcolor= cldefault; freetext : string=''; const crMyCursor = 5; procedure reset_fits_global_variables(light :boolean;out head:theader); {reset the global variable} begin if light then begin head.crota2:=999;{just for the case it is not available, make it later zero} head.crota1:=999; head.ra0:=0; head.dec0:=0; ra_mount:=999; dec_mount:=999; head.cdelt1:=0; head.cdelt2:=0; head.xpixsz:=0; head.ypixsz:=0; focallen:=0; subsamp:=1;{just for the case it is not available} head.cd1_1:=0;{just for the case it is not available} head.cd1_2:=0;{just for the case it is not available} head.cd2_1:=0;{just for the case it is not available} head.cd2_2:=0;{just for the case it is not available} bayerpat:='';{reset bayer pattern} xbayroff:=0;{offset to used to correct BAYERPAT due to flipping} ybayroff:=0;{offset to used to correct BAYERPAT due to flipping} roworder:='';{'BOTTOM-UP'= lower-left corner first in the file. or 'TOP-DOWN'= top-left corner first in the file.} a_order:=0;{Simple Imaging Polynomial use by astrometry.net, if 2 then available} ap_order:=0;{Simple Imaging Polynomial use by astrometry.net, if 2 then available} a_0_0:=0; a_0_1:=0; a_0_2:=0; a_0_3:=0; a_1_0:=0; a_1_1:=0; a_1_2:=0;a_2_0:=0; a_2_1:=0; a_3_0:=0; b_0_0:=0; b_0_1:=0; b_0_2:=0; b_0_3:=0; b_1_0:=0; b_1_1:=0; b_1_2:=0;b_2_0:=0; b_2_1:=0; b_3_0:=0; ap_0_0:=0; ap_0_1:=0; ap_0_2:=0; ap_0_3:=0; ap_1_0:=0; ap_1_1:=0; ap_1_2:=0; ap_2_0:=0; ap_2_1:=0; ap_3_0:=0; bp_0_0:=0; bp_0_1:=0; bp_0_2:=0; bp_0_3:=0; bp_1_0:=0; bp_1_1:=0; bp_1_2:=0; bp_2_0:=0; bp_2_1:=0; bp_3_0:=0; centalt:='';{assume no data available} centaz:='';{assume no data available} x_coeff[0]:=0; {reset DSS_polynomial, use for check if there is data} y_coeff[0]:=0; a_order:=0; {SIP_polynomial, use for check if there is data} ap_order:=0; {SIP_polynomial, use for check if there is data} head.xbinning:=1;{normal} head.ybinning:=1; date_avg:='';ut:=''; pltlabel:=''; plateid:=''; telescop:=''; instrum:=''; origin:=''; object_name:='';{clear} sitelat:=''; sitelong:='';siteelev:=''; focus_temp:=999;{assume no data available} focus_pos:=0;{assume no data available} pressure:=1010; {mbar/hPa} annotated:=false; {any annotation in the file} flux_magn_offset:=0;{factor to calculate magnitude from flux, new file so set to zero} sqm_value:=''; equinox:=2000; bandpass:=0; end; head.date_obs:=''; head.calstat:='';{indicates calibration state of the image; B indicates bias corrected, D indicates dark corrected, F indicates flat corrected, S stacked. Example value DFB} head.filter_name:=''; head.naxis:=-1;{assume failure} head.naxis3:=1; head.datamin_org:=0; imagetype:=''; head.exposure:=0; head.set_temperature:=999; head.gain:=''; head.egain:='';{assume no data available} end;{reset global variables} //procedure precession_jnow_to_J2000(equinox : double; var ra1,dec1 : double); {simple precession correction, new Meeus chapter precession formula 20.1} //var // t,dra,ddec,m,n,n2 : double; //begin // t:=(equinox-2000)/100;{time in julian centuries since j2000 } // m:=3.07496+0.00186*t;{seconds} // n:=1.33621-0.00057*t; {seconds} // n2:=20.0431-0.0085*t;{arcsec} // dra:=(m + n *sin(ra1)*tan(dec1))*pi/(3600*12);{yearly ra drift in radians} // ddec:=n2*cos(ra1)*pi/(3600*180); {yearly dec drift in radians} // ra1:=ra1-(dra*t*100);{multiply with number of years is t*100. Subtract because we go back to J2000} // dec1:=dec1-(ddec*t*100); //end; function load_fits(filen:string;light {load as light or dark/flat},load_data,update_memo: boolean;get_ext: integer;out head: Theader; out img_loaded2: image_array): boolean;{load fits file} {if light=true then read also head.ra0, head.dec0 ....., else load as dark, flat} {if load_data then read all else header only} {if reset_var=true, reset variables to zero} var TheFile : tfilestream; header : array[0..2880] of ansichar; i,j,k,nr,error3,naxis1, reader_position,n,file_size : integer; dummy, ccd_temperature, jd2,jd_obs : double; col_float,bscale,measured_max,scalefactor : single; s : string[3]; bzero : integer;{zero shift. For example used in AMT, Tricky do not use int64, maxim DL writes BZERO value -2147483647 as +2147483648 !! } aline,number,field : ansistring; rgbdummy : byteX3; word16 : word; {for 16 signed integer} int_16 : smallint absolute word16;{for 16 signed integer} x_longword : longword; x_single : single absolute x_longword;{for conversion 32 bit "big-endian" data} int_32 : integer absolute x_longword;{for 32 bit signed integer} x_qword : qword; x_double : double absolute x_qword;{for conversion 64 bit "big-endian" data} int_64 : int64 absolute x_qword;{for 64 bit signed integer} tfields,tform_counter,header_count,pointer,let : integer; ttype,tform,tunit : array of string; tbcol,tform_nr : array of integer; simple,image,bintable,asciitable,compressed : boolean; abyte : byte; var {################# initialised variables #########################} end_record : boolean=false; procedure close_fits_file; inline; begin Reader.free; TheFile.free; end; Function validate_double:double;{read floating point or integer values} var t : string[20]; r,err : integer; begin t:=''; r:=I+10;{position 11 equals 10} while ((header[r]<>'/') and (r<=I+29) {pos 30}) do {'/' check is strictly not necessary but safer} begin {read 20 characters max, position 11 to 30 in string, position 10 to 29 in pchar} if header[r]<>' ' then t:=t+header[r]; inc(r); end; val(t,result,err); end; Function get_string:string;{read string values} var r: integer; begin result:=''; r:=I+11;{start reading at position pos12, single quotes should for fix format should be at position 11 according FITS standard 4.0, chapter 4.2.1.1} while ((header[r-1]<>#39) and (r<I+77)) do inc(r); {find first quote at pos 11 or later for case it is not at position 11 (free-format strings)} while ((header[r]<>#39){last quote} and (r<I+79)) do {read string up to position 79 equals 78. The while (rather then repeat) instruction guarantees reading emphty strings with length zero correctly} begin result:=result+header[r]; inc(r); end; result:=trim(result); end; Function get_as_string:string;{read float as string values. Universal e.g. for latitude and longitude which could be either string or float} var r: integer; begin result:=''; r:=I+11;{pos12, single quotes should for fix format should be at position 11 according FITS standard 4.0, chapter 4.2.1.1} while ((header[r]<>#39){last quote} and (r<I+30)) do {read string up to position 30} begin result:=result+header[r]; inc(r); end; end; begin {some house keeping} result:=false; {assume failure} if load_data then mainwindow.caption:=ExtractFileName(filen); {house keeping done} if tiff_file_name(filen) then {load Astro-TIFF instead of FITS} begin result:=load_TIFFPNGJPEG(filen,light, head,img_loaded2);{load TIFF image} exit; end; try TheFile:=tfilestream.Create( filen, fmOpenRead or fmShareDenyWrite); except beep; mainwindow.error_label1.caption:=('Error accessing file!'); mainwindow.error_label1.visible:=true; exit; end; file_size:=TheFile.size; if update_memo then begin mainwindow.memo1.visible:=false;{stop visualising memo1 for speed. Will be activated in plot routine} mainwindow.memo1.clear;{clear memo for new header} end; Reader := TReader.Create(TheFile,128*2880);{number of records. 128*2880 is 2% faster then 8* 2880} {Reset GLOBAL variables for case they are not specified in the file} reset_fits_global_variables(light,head); if get_ext=0 then extend_type:=0; {always an image in main data block} naxis1:=0; bzero:=0;{just for the case it is not available. 0.0 is the default according https://heasarc.gsfc.nasa.gov/docs/fcg/standard_dict.html} bscale:=1; ccd_temperature:=999; measured_max:=0; header_count:=0; bintable:=false; asciitable:=false; compressed:=false; reader_position:=0; repeat {header, 2880 bytes loop} I:=0; repeat {loop for reaching image/table} try reader.read(header[I],2880);{read file header, 2880 bytes} inc(reader_position,2880); {TheFile.size-reader.position>sizeof(hnskyhdr) could also be used but slow down a factor of 2 !!!} if ((reader_position=2880) and (header[0]='S') and (header[1]='I') and (header[2]='M') and (header[3]='P') and (header[4]='L') and (header[5]='E') and (header[6]=' ')) then begin simple:=true; image:=true; end; if simple=false then begin close_fits_file; beep; mainwindow.error_label1.caption:=('Error loading FITS file!! Keyword SIMPLE not found.'); mainwindow.error_label1.visible:=true; exit; end; {should start with SIMPLE =, MaximDL compressed files start with SIMPLE‚=”} if ((header_count<get_ext) and (header[0]='X') and (header[1]='T') and (header[2]='E') and (header[3]='N') and (header[4]='S') and (header[5]='I') and (header[6]='O') and (header[7]='N') and (header[8]='=')) then begin header_count:=header_count+1; image:= ((header[11]='I') and (header[12]='M') and (header[13]='A') and (header[14]='G') and (header[15]='E') and (header[16]=' ')); bintable:=((header[11]='B') and (header[12]='I') and (header[13]='N') and (header[14]='T') and (header[15]='A') and (header[16]='B')); {BINTABLE} asciitable:=((header[11]='T') and (header[12]='A') and (header[13]='B') and (header[14]='L') and (header[15]='E') and (header[16]=' ')) ;{ascii_table identifier} begin if pos('BINTABLE',get_string)>0 then extend_type:=3 { 'BINTABLE' or 'TABLE'} else if 'TABLE'=get_string then extend_type:=2 {ascii_table identifier} else begin extend_type:=1; {image in the extension} mainwindow.Memo3.lines.text:='File contains image(s) in the extension. Can be extracted and saved as a single image.'; mainwindow.pagecontrol1.showtabs:=true;{show tabs} end; end; end; except; close_fits_file; beep; mainwindow.error_label1.caption:='Read exception error!!'; mainwindow.error_label1.visible:=true; exit; end; until ((simple) and (header_count>=get_ext)); {simple is true and correct header found} repeat {loop for 80 bytes in 2880 block} if load_data then begin SetString(aline, Pansichar(@header[i]), 80);{convert header line to string} if update_memo then mainwindow.memo1.lines.add(aline); {add line to memo} end; if ((header[i]='N') and (header[i+1]='A') and (header[i+2]='X') and (header[i+3]='I') and (header[i+4]='S')) then {head.naxis} begin if (header[i+5]=' ') then head.naxis:=round(validate_double) else {head.naxis number of colors} if (header[i+5]='1') then begin naxis1:=round(validate_double);head.width:=naxis1; end else {NAXIS1 pixels} if (header[i+5]='2') then head.height:=round(validate_double) else {NAXIS2 pixels} if (header[i+5]='3') then begin head.naxis3:=round(validate_double); {head.naxis3 number of colors} if ((head.naxis=3) and (naxis1=3)) {naxis1} then {type head.naxis = 3 / Number of dimensions NAXIS1 = 3 / Number of Colors NAXIS2 = 382 / Row length head.naxis3 = 255 / Number of rows} begin {RGB fits with naxis1=3, treated as 24 bits coded pixels in 2 dimensions} head.width:=head.height; head.height:=head.naxis3; head.naxis3:=1; end; if head.naxis3>3 then {panic more then three colours} begin head.naxis3:=1; {display only the first colour} memo2_message('Warning more then three colours. Displayed only the first one.'); end; end; end; if image then {image specific header} begin {read image header} if (header[i]='B') then {B} begin if ((header[i+1]='I') and (header[i+2]='T') and (header[i+3]='P') and (header[i+4]='I') and (header[i+5]='X')) then nrbits:=round(validate_double) {BITPIX, read integer using double routine} else if ( (header[i+1]='Z') and (header[i+2]='E') and (header[i+3]='R') and (header[i+4]='O') ) then begin dummy:=validate_double; if dummy>2147483647 then bzero:=-2147483648 else bzero:=round(dummy); {Maxim DL writes BZERO value -2147483647 as +2147483648 !! } {without this it would have worked also with error check off} end else if ( (header[i+1]='S') and (header[i+2]='C') and (header[i+3]='A') and (header[i+4]='L') ) then bscale:=validate_double {rarely used. Normally 1} else if ((header[i+1]='I') and (header[i+2]='A') and (header[i+3]='S') and (header[i+4]='_') and (header[i+5]='C') and (header[i+6]='N')and (header[i+7]='T')) then head.flatdark_count:=round(validate_double);{read integer as double value} end;{B} if (header[i]='E') then begin if ((header[i+1]='G') and (header[i+2]='A') and (header[i+3]='I') and (header[i+4]='N')) then {egain} head.egain:=copy(trim(get_as_string),1,5) {e-/adu gain, use 4 digits only} else if ((header[i+1]='X') and (header[i+2]='P')) then begin if ((header[i+3]='O') and (header[i+4]='S') and (header[i+5]='U') and (header[i+6]='R')) then head.exposure:=validate_double;{read double value} if ((header[i+3]='T') and (header[i+4]='I') and (header[i+5]='M') and (header[i+6]='E') and (header[i+7]=' ')) then {exptime and not exptimer} head.exposure:=validate_double;{read double value} end; end; if (header[i]='C') then {C} begin if ((header[i+1]='A') and (header[i+2]='L') and (header[i+3]='S') and (header[i+4]='T') and (header[i+5]='A')) then {head.calstat is also for flats} head.calstat:=get_string {indicates calibration state of the image; B indicates bias corrected, D indicates dark corrected, F indicates flat corrected. M could indicate master} else if ((header[i+1]='C') and (header[i+2]='D') and (header[i+3]='-') and (header[i+4]='T') and (header[i+5]='E') and (header[i+6]='M')) then ccd_temperature:=validate_double;{read double value} end;{C} if ((header[i]='S') and (header[i+1]='E') and (header[i+2]='T') and (header[i+3]='-') and (header[i+4]='T') and (header[i+5]='E') and (header[i+6]='M')) then try head.set_temperature:=round(validate_double);{read double value} except; end; {some programs give huge values} if ((header[i]='I') and (header[i+1]='M') and (header[i+2]='A') and (header[i+3]='G') and (header[i+4]='E') and (header[i+5]='T') and (header[i+6]='Y')) then imagetype:=get_string;{trim is already applied} if (header[i]='F') then {F} begin if ((header[i+1]='I') and (header[i+2]='L') and (header[i+3]='T') and (header[i+4]='E') and (header[i+5]='R') and (header[i+6]=' ')) then head.filter_name:=get_string {trim is already applied} else if ((header[i+1]='L') and (header[i+2]='A') and (header[i+3]='T') and (header[i+4]='_') and (header[i+5]='C') and (header[i+6]='N')and (header[i+7]='T')) then head.flat_count:=round(validate_double);{read integer as double value} end; {F} if ((header[i]='X') and (header[i+1]='B') and (header[i+2]='I') and (header[i+3]='N') and (header[i+4]='N') and (header[i+5]='I')) then head.xbinning:=validate_double;{binning} if ((header[i]='Y') and (header[i+1]='B') and (header[i+2]='I') and (header[i+3]='N') and (header[i+4]='N') and (header[i+5]='I')) then head.ybinning:=validate_double;{binning} if ((header[i]='G') and (header[i+1]='A') and (header[i+2]='I') and (header[i+3]='N') and (header[i+4]=' ')) then head.gain:=trim(get_as_string); {head.gain CCD} if ((header[i]='I') and (header[i+1]='S') and (header[i+2]='O') and (header[i+3]='S') and (header[i+4]='P')) then if head.gain='' then head.gain:=trim(get_as_string);{isospeed, do not override head.gain} {following variable are not set at zero Set at zero somewhere in the code} if ((header[i]='L') and (header[i+1]='I') and (header[i+2]='G') and (header[i+3]='H') and (header[i+4]='_') and (header[i+5]='C') and (header[i+6]='N')and (header[i+7]='T')) then head.light_count:=round(validate_double);{read integer as double value} if ((header[i]='T') and (header[i+1]='I') and (header[i+2]='M') and (header[i+3]='E') and (header[i+4]='-') and (header[i+5]='O') and (header[i+6]='B')) then if head.date_obs='' then head.date_obs:=get_string; if ((header[i]='J') and (header[i+1]='D') and (header[i+2]=' ') and (header[i+3]=' ') and (header[i+4]=' ')) then //julian day if head.date_obs='' then {DATE-OBS overrules any JD value} begin jd2:=validate_double; head.date_obs:=JdToDate(jd2); end; if ((header[i]='D') and (header[i+1]='A')) then {DA} begin if ((header[i+2]='T') and (header[i+3]='E') and (header[i+4]='-')) then {DATE-} begin if ((header[i+5]='O') and (header[i+6]='B')) then head.date_obs:=get_string else if ((header[i+5]='A') and (header[i+6]='V')) then date_avg:=get_string; end else if ((header[i+2]='R') and (header[i+3]='K') and (header[i+4]='_') and (header[i+5]='C') and (header[i+6]='N')and (header[i+7]='T')) then {DARK_CNT} head.dark_count:=round(validate_double);{read integer as double value} end; if light then {read as light ##############################################################################################################################################################} begin if ((header[i]='E') and (header[i+1]='Q') and (header[i+2]='U') and (header[i+3]='I') and (header[i+4]='N') and (header[i+5]='O') and (header[i+6]='X')) then equinox:=validate_double; if (header[i]='C') then {C} begin if (header[i+1]='R') then {CR} begin if ((header[i+2]='O') and (header[i+3]='T') and (header[i+4]='A')) then {head.crota2} begin if (header[i+5]='2') then head.crota2:=validate_double else {read double value} if (header[i+5]='1') then head.crota1:=validate_double;{read double value} end else if ((header[i+2]='P') and (header[i+3]='I') and (header[i+4]='X')) then {head.crpix1} begin if header[i+5]='1' then head.crpix1:=validate_double else{ref pixel for x} if header[i+5]='2' then head.crpix2:=validate_double; {ref pixel for y} end; end {CR} else if ((header[i+1]='D') and (header[i+2]='E') and (header[i+3]='L') and (header[i+4]='T')) then {head.cdelt1} begin if header[i+5]='1' then head.cdelt1:=validate_double else{deg/pixel for RA} if header[i+5]='2' then head.cdelt2:=validate_double; {deg/pixel for DEC} end; end; {C} if ( ((header[i]='S') and (header[i+1]='E') and (header[i+2]='C') and (header[i+3]='P') and (header[i+4]='I') and (header[i+5]='X')) or {secpi x1/2} ((header[i]='S') and (header[i+1]='C') and (header[i+2]='A') and (header[i+3]='L') and (header[i+4]='E') and (header[i+5]=' ')) or {SCALE value for SGP files} ((header[i]='P') and (header[i+1]='I') and (header[i+2]='X') and (header[i+3]='S') and (header[i+4]='C') and (header[i+5]='A')) ) then {pixscale} begin if head.cdelt2=0 then begin head.cdelt2:=validate_double/3600; {deg/pixel for RA} head.cdelt1:=head.cdelt2; end; {no head.cdelt1/2 found yet, use alternative} end; if ((header[i]='X') and (header[i+1]='P') and (header[i+2]='I') and (header[i+3]='X') and (header[i+4]='S') and (header[i+5]='Z')) then {Xpixsz} head.xpixsz:=validate_double;{Pixel Width in microns (after binning), maxim DL keyword} if ((header[i]='Y') and (header[i+1]='P') and (header[i+2]='I') and (header[i+3]='X') and (header[i+4]='S') and (header[i+5]='Z')) then {Ypixsz} head.ypixsz:=validate_double;{Pixel Width in microns (after binning), maxim DL keyword} if ((header[i]='R') and (header[i+1]='A') and (header[i+2]=' ')) then {ra} begin ra_mount:=validate_double*pi/180; if head.ra0=0 then head.ra0:=ra_mount; {ra telescope, read double value only if crval is not available} end; if ((header[i]='D') and (header[i+1]='E') and (header[i+2]='C') and (header[i+3]=' ')) then {dec} begin dec_mount:=validate_double*pi/180; if head.dec0=0 then head.dec0:=dec_mount; {ra telescope, read double value only if crval is not available} end; if ((header[i]='O') and (header[i+1]='B') and (header[i+2]='J')) then {OBJ} begin if ((header[i+3]='C') and (header[i+4]='T')) then {objctra, objctdec} begin {OBJCT} if ((header[i+5]='R') and (header[i+6]='A') and (ra_mount>=999) {ra_mount value is unfilled, preference for keyword RA}) then begin mainwindow.ra1.text:=get_string;{triggers an onchange event which will convert the string to ra_radians} ra_mount:=ra_radians;{preference for keyword RA} end else if ((header[i+5]='D') and (header[i+6]='E') and (dec_mount>=999){dec_mount value is unfilled, preference for keyword DEC}) then begin mainwindow.dec1.text:=get_string;{triggers an onchange event which will convert the string to dec_radians} dec_mount:=dec_radians; end else {for older MaximDL5} if ((header[i+5]='A') and (header[i+6]='L') and (centalt='')) then centalt:=get_as_string {universal for string and floats} else {for older MaximDL5} if ((header[i+5]='A') and (header[i+6]='Z')and (centaz='')) then centaz:=get_as_string; {universal for string and floats} end {OBJCT} else if ((header[i+3]='E') and (header[i+4]='C') and (header[i+5]='T')) then {OBJECT} object_name:=get_string;{trim is already applied} end;{OBJ} if (header[i]='C') then {C} begin if ((header[i+1]='R') and (header[i+2]='V') and (header[i+3]='A') and (header[i+4]='L')) then {crval1/2} begin if (header[i+5]='1') then head.ra0:=validate_double*pi/180; {ra center, read double value} if (header[i+5]='2') then head.dec0:=validate_double*pi/180; {dec center, read double value} end else if (header[i+1]='D') then {CD} begin if ((header[i+2]='1') and (header[i+3]='_') and (header[i+4]='1')) then head.cd1_1:=validate_double; if ((header[i+2]='1') and (header[i+3]='_') and (header[i+4]='2')) then head.cd1_2:=validate_double; if ((header[i+2]='2') and (header[i+3]='_') and (header[i+4]='1')) then head.cd2_1:=validate_double; if ((header[i+2]='2') and (header[i+3]='_') and (header[i+4]='2')) then head.cd2_2:=validate_double; end else if ((header[i+1]='E') and (header[i+2]='N') and (header[i+3]='T') and (header[i+4]='A') and (header[i+5]='L') and (header[i+6]='T')) then {CENTALT, SBIG 1.0 standard} begin centalt:=get_as_string; {universal for string and floats} end; end; if ((header[i]='P') and (header[i+1]='R') and (header[i+2]='E') and (header[i+3]='S') and (header[i+4]='S') and (header[i+5]='U') and (header[i+6]='R')) then pressure:=validate_double;{read double value} if (header[i]='A') then {A} begin if ((header[i+1]='M') and (header[i+2]='B') and (header[i+3]='-') and (header[i+4]='T') and (header[i+5]='E') and (header[i+6]='M')) then focus_temp:=validate_double {ambient temperature} else if ((header[i+1]='O') and (header[i+2]='C')) then {AOC} begin {ASCOM Observatory Conditions} if ((header[i+3]='B') and (header[i+4]='A') and (header[i+5]='R') and (header[i+6]='O')) then { AOCBAROM} pressure:=validate_double {read double value} else if ((header[i+3]='A') and (header[i+4]='M') and (header[i+5]='B') and (header[i+6]='T')) then { AOCAMBT} focus_temp:=validate_double;{read double value} end {AOC} else if ((header[i+1]='N') and (header[i+2]='N') and (header[i+3]='O') and (header[i+4]='T') and (header[i+5]='A') and (header[i+6]='T')) then annotated:=true; {contains annotations} end; if ((header[i]='F') and (header[i+1]='O') and (header[i+2]='C')) then {FOC} begin if ((header[i+3]='A') and (header[i+4]='L') and (header[i+5]='L')) then {FOCALLEN} focallen:=validate_double {Focal length of telescope in mm, maxim DL keyword} else if ( ((header[i+3]='U') and (header[i+4]='S') and (header[i+5]='P') and (header[i+6]='O')) or ((header[i+3]='P') and (header[i+4]='O') and (header[i+5]='S') and (header[i+6]=' ')) ) then try focus_pos:=round(validate_double);{focus position} except;end else if ( ((header[i+3]='U') and (header[i+4]='S') and (header[i+5]='T') and (header[i+6]='E')) or ((header[i+3]='T') and (header[i+4]='E') and (header[i+5]='M') and (header[i+6]='P')) ) then focus_temp:=validate_double;{focus temperature} end; if ((header[i]='X') and (header[i+1]='B') and (header[i+2]='A') and (header[i+3]='Y') and (header[i+4]='R') and (header[i+5]='O') and (header[i+6]='F')) then xbayroff:=validate_double;{offset to used to correct BAYERPAT due to flipping} if ((header[i]='Y') and (header[i+1]='B') and (header[i+2]='A') and (header[i+3]='Y') and (header[i+4]='R') and (header[i+5]='O') and (header[i+6]='F')) then ybayroff:=validate_double;{offset to used to correct BAYERPAT due to flipping} if ((header[i]='R') and (header[i+1]='O') and (header[i+2]='W') and (header[i+3]='O') and (header[i+4]='R') and (header[i+5]='D') and (header[i+6]='E')) then roworder:=get_string; if ((header[i]='S') and (header[i+1]='I') and (header[i+2]='T') and (header[i+3]='E') ) then {site latitude, longitude} begin if ((header[i+4]='L') and (header[i+5]='A') and (header[i+6]='T')) then sitelat:=get_as_string;{universal, site latitude as string} if ((header[i+4]='L') and (header[i+5]='O') and (header[i+6]='N')) then sitelong:=get_as_string;{universal, site longitude as string} if ((header[i+4]='E') and (header[i+5]='L') and (header[i+6]='E')) then siteelev:=get_as_string;{universal, site elevation as string} end; if ((header[i]='O') and (header[i+1]='B') and (header[i+2]='S')) then {OBS site latitude, longitude} begin if ( ((header[i+3]='L') and (header[i+4]='A') and (header[i+5]='T')) or ((header[i+3]='-') and (header[i+4]='L') and(header[i+5]='A')) ) then {OBSLAT or OBS-LAT} sitelat:=get_as_string;{universal, site latitude as string} if ( ((header[i+3]='L') and (header[i+4]='O') and(header[i+5]='N')) or ((header[i+3]='-') and (header[i+4]='L') and(header[i+5]='O')) ) then {OBSLONG or OBS-LONG} sitelong:=get_as_string;{universal, site longitude as string} if ((header[i+3]='G') and (header[i+4]='E') and (header[i+5]='O') and(header[i+6]='-')) then {OBSGEO-L, OBSGEO-B} begin if (header[i+7]='B') then sitelat:=get_as_string {universal, site latitude as string} else if (header[i+7]='L') then sitelong:=get_as_string;{universal, site longitude as string} end; end; if ((header[i]='U') and (header[i+1]='T')) then UT:=get_string; if ((header[i]='T') and (header[i+1]='E') and (header[i+2]='L') and (header[i+3]='E') and (header[i+4]='S') and (header[i+5]='C') and (header[i+6]='O')) then TELESCOP:=get_string; if ((header[i]='O') and (header[i+1]='R') and (header[i+2]='I') and (header[i+3]='G') and (header[i+4]='I') and (header[i+5]='N')) then origin:=get_string; if ((header[i]='I') and (header[i+1]='N') and (header[i+2]='S') and (header[i+3]='T') and (header[i+4]='R') and (header[i+5]='U') and (header[i+6]='M')) then INSTRUM:=get_string; if (header[i]='B') then {B} begin if ((header[i+1]='A') and (header[i+2]='Y') and (header[i+3]='E') and (header[i+4]='R') and (header[i+5]='P') and (header[i+6]='A')) then {BAYERPAT} bayerpat:=get_string {BAYERPAT, bayer pattern such as RGGB} else if ((header[i+1]='A') and (header[i+2]='N') and (header[i+3]='D') and (header[i+4]='P') and (header[i+5]='A') and (header[i+6]='S')) then begin BANDPASS:=validate_double;{read integer as double value. Deep sky survey keyword} if ((bandpass=35) or (bandpass=8)) then head.filter_name:='red'{ 37 possII IR, 35=possII red, 18=possII blue, 8=POSSI red, 7=POSSI blue} else if ((bandpass=18) or (bandpass=7)) then head.filter_name:='blue' else head.filter_name:=floattostr(bandpass); end; end; {adjustable keywords} if ((header[i]=sqm_key[1]{S}) and (header[i+1]=sqm_key[2]{Q}) and (header[i+2]=sqm_key[3]{M})and (header[i+3]=sqm_key[4])and (header[i+4]=sqm_key[5])and (header[i+5]=sqm_key[6])and (header[i+6]=sqm_key[7]) and (header[i+7]=sqm_key[8])) then {adjustable keyword} begin sqm_value:=get_as_string; {universal for string and floats}{SQM, accept strings (standard) and floats} end; if ((header[i]=centaz_key[1]) and (header[i+1]=centaz_key[2]) and (header[i+2]=centaz_key[3])and (header[i+3]=centaz_key[4])and (header[i+4]=centaz_key[5])and (header[i+5]=centaz_key[6])and (header[i+6]=centaz_key[7]) and (header[i+7]=centaz_key[8])) then {adjustable keyword} begin centaz:=get_as_string; {universal for string and floats} {SGP, older CCDCIEL} end; if ((header[i]='E') and (header[i+1]='X') and (header[i+2]='T') and (header[i+3]='E') and (header[i+4]='N') and (header[i+5]='D')) then {EXTEND} if pos('T',get_as_string)>0 then last_extension:=false;{could be extensions, will be updated later } {following is only required when using DSS polynome plate fit} if ((header[i]='P') and (header[i+1]='P') and (header[i+2]='O')) then begin if (header[i+3]='3') then ppo_coeff[2]:=validate_double; if (header[i+3]='6') then ppo_coeff[5]:=validate_double; end; if (header[i]='A') then begin if ((header[i+1]='M') and (header[i+2]='D') and (header[i+3]='X')) then {AMDX} begin if header[i+5]=' ' then s:=(header[i+4]) else s:=(header[i+4])+(header[i+5]); val(s,nr,error3);{1 to 20} x_coeff[nr-1]:=validate_double; end else if ((header[i+1]='M') and (header[i+2]='D') and (header[i+3]='Y')) then {AMDY} begin if header[i+5]=' ' then s:=(header[i+4]) else s:=(header[i+4])+(header[i+5]); val(s,nr,error3);{1 to 20} y_coeff[nr-1]:=validate_double; end else if (header[i+1]='_') then begin {pixel to sky coefficient} if ((header[i+2]='O') and (header[i+3]='R') and (header[i+4]='D')) then a_order:=round(validate_double);{should be >=2 if TAN-SIP convention available} if ((header[i+2]='0') and (header[i+3]='_') and (header[i+4]='0')) then a_0_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='0') and (header[i+3]='_') and (header[i+4]='1')) then a_0_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='0') and (header[i+3]='_') and (header[i+4]='2')) then a_0_2:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='0') and (header[i+3]='_') and (header[i+4]='3')) then a_0_3:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='1') and (header[i+3]='_') and (header[i+4]='0')) then a_1_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='1') and (header[i+3]='_') and (header[i+4]='1')) then a_1_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='1') and (header[i+3]='_') and (header[i+4]='2')) then a_1_2:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='2') and (header[i+3]='_') and (header[i+4]='0')) then a_2_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='2') and (header[i+3]='_') and (header[i+4]='1')) then a_2_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='3') and (header[i+3]='_') and (header[i+4]='0')) then a_3_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} end; end; if ((header[i]='B') and (header[i+1]='_')) then begin {pixel to sky coefficient} if ((header[i+2]='0') and (header[i+3]='_') and (header[i+4]='0')) then b_0_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='0') and (header[i+3]='_') and (header[i+4]='1')) then b_0_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='0') and (header[i+3]='_') and (header[i+4]='2')) then b_0_2:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='0') and (header[i+3]='_') and (header[i+4]='3')) then b_0_3:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='1') and (header[i+3]='_') and (header[i+4]='o')) then b_1_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='1') and (header[i+3]='_') and (header[i+4]='1')) then b_1_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='1') and (header[i+3]='_') and (header[i+4]='2')) then b_1_2:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='2') and (header[i+3]='_') and (header[i+4]='0')) then b_2_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='2') and (header[i+3]='_') and (header[i+4]='1')) then b_2_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+2]='3') and (header[i+3]='_') and (header[i+4]='0')) then b_3_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} end; if ((header[i]='A') and (header[i+1]='P') and (header[i+2]='_')) then begin {sky to pixel coefficient} if ((header[i+3]='O') and (header[i+4]='R') and (header[i+5]='D')) then ap_order:=round(validate_double);{should be >=2 if TAN-SIP convention available} if ((header[i+3]='0') and (header[i+4]='_') and (header[i+5]='0')) then ap_0_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='0') and (header[i+4]='_') and (header[i+5]='1')) then ap_0_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='0') and (header[i+4]='_') and (header[i+5]='2')) then ap_0_2:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='0') and (header[i+4]='_') and (header[i+5]='3')) then ap_0_3:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='1') and (header[i+4]='_') and (header[i+5]='0')) then ap_1_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='1') and (header[i+4]='_') and (header[i+5]='1')) then ap_1_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='1') and (header[i+4]='_') and (header[i+5]='2')) then ap_1_2:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='2') and (header[i+4]='_') and (header[i+5]='0')) then ap_2_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='2') and (header[i+4]='_') and (header[i+5]='1')) then ap_2_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='3') and (header[i+4]='_') and (header[i+5]='0')) then ap_3_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} end; if ((header[i]='B') and (header[i+1]='P') and (header[i+2]='_')) then begin {sky to pixel coefficient} if ((header[i+3]='0') and (header[i+4]='_') and (header[i+5]='0')) then bp_0_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='0') and (header[i+4]='_') and (header[i+5]='1')) then bp_0_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='0') and (header[i+4]='_') and (header[i+5]='2')) then bp_0_2:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='0') and (header[i+4]='_') and (header[i+5]='3')) then bp_0_3:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='1') and (header[i+4]='_') and (header[i+5]='0')) then bp_1_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='1') and (header[i+4]='_') and (header[i+5]='1')) then bp_1_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='1') and (header[i+4]='_') and (header[i+5]='2')) then bp_1_2:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='2') and (header[i+4]='_') and (header[i+5]='0')) then bp_2_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='2') and (header[i+4]='_') and (header[i+5]='1')) then bp_2_1:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} if ((header[i+3]='3') and (header[i+4]='_') and (header[i+5]='0')) then bp_3_0:=validate_double;{TAN-SIP convention, where ’SIP’ stands for Simple Imaging Polynomial} end; if ((header[i]='C') and (header[i+1]='N') and (header[i+2]='P') and (header[i+3]='I') and (header[i+4]='X') and (header[i+5]='1')) then x_pixel_offset:=round(validate_double);{rotation, read double value} if ((header[i]='C') and (header[i+1]='N') and (header[i+2]='P') and (header[i+3]='I') and (header[i+4]='X') and (header[i+5]='2')) then y_pixel_offset:=round(validate_double);{rotation, read double value} if ((header[i]='X') and (header[i+1]='P') and (header[i+2]='I') and (header[i+3]='X') and (header[i+4]='E') and (header[i+5]='L')) then x_pixel_size:=validate_double;{rotation, read double value} if ((header[i]='Y') and (header[i+1]='P') and (header[i+2]='I') and (header[i+3]='X') and (header[i+4]='E') and (header[i+5]='L')) then y_pixel_size:=validate_double;{rotation, read double value} if ((header[i]='P') and (header[i+1]='L') and (header[i+2]='T') and (header[i+3]='R') and (header[i+4]='A')) then begin if (header[i+5]='H') then plate_ra:=validate_double*pi/12; if (header[i+5]='M') then plate_ra:=plate_ra+validate_double*pi/(60*12); if (header[i+5]='S') then plate_ra:=plate_ra+validate_double*pi/(60*60*12);; end; if ((header[i]='P') and (header[i+1]='L') and (header[i+2]='T') and (header[i+3]='D') and (header[i+4]='E')) then begin if (header[i+7]='N') then begin if (header[i+11]='-') then dec_sign:=-1 else dec_sign:=+1;end; {dec sign} if (header[i+6]='D') then plate_dec:=validate_double*pi/180; if (header[i+6]='M') then plate_dec:=plate_dec+validate_double*pi/(60*180); if (header[i+6]='S') then plate_dec:=dec_sign*(plate_dec+validate_double*pi/(60*60*180)); end; if ((header[i]='S') and (header[i+1]='U') and (header[i+2]='B') and (header[i+3]='S') and (header[i+4]='A') and (header[i+5]='M')) then subsamp:=round(validate_double);{subsampling value} {end using DSS polynome plate fit} if ((header[i]='P') and (header[i+1]='L') and (header[i+2]='T') and (header[i+3]='L') and (header[i+4]='A') and (header[i+5]='B') and (header[i+6]='E')) then {Deep sky survey} PLTLABEL:=get_string; if ((header[i]='P') and (header[i+1]='L') and (header[i+2]='A') and (header[i+3]='T') and (header[i+4]='E') and (header[i+5]='I') and (header[i+6]='D')) then PLATEID:=get_string; end;{read as light #####################################################################################################################################3#############################} end {image header} else begin {read table header} if ((header[i]='T') and (header[i+1]='F') and (header[i+2]='I') and (header[i+3]='E') and (header[i+4]='L') and (header[i+5]='D') and (header[i+6]='S')) then {tfields} begin tfields:=round(validate_double); setlength(ttype,tfields); setlength(tform,tfields); setlength(tform_nr,tfields);{number of sub field. E.g.12A is 12 time a character} setlength(tbcol,tfields); setlength(tunit,tfields); end; if ((header[i]='Z') and (header[i+1]='C') and (header[i+2]='M') and (header[i+3]='P') and (header[i+4]='T')) then { ZCMPTYPE, compressed image in table Rice and others format} begin compressed:=true; last_extension:=true;{give up} end; if ((header[i]='T') and (header[i+1]='F') and (header[i+2]='O') and (header[i+3]='R') and (header[i+4]='M')) then begin number:=trim(header[i+5]+header[i+6]+header[i+7]); tform_counter:=strtoint(number)-1; tform[tform_counter]:=get_string; try let:=pos('E',tform[tform_counter]); if let>0 then begin aline:=trim(tform[tform_counter]); tform[tform_counter]:='E';aline:=copy(aline,1,let-1); tform_nr[tform_counter]:=max(1,strtoint('0'+aline)); end;{single e.g. E, 1E or 4E} let:=pos('D',tform[tform_counter]); if let>0 then begin aline:=trim(tform[tform_counter]); tform[tform_counter]:='D';aline:=copy(aline,1,let-1); tform_nr[tform_counter]:=max(1,strtoint('0'+aline)); end;{double e.g. D, 1D or 5D (sub table 5*D) or D25.17} let:=pos('L',tform[tform_counter]); if let>0 then begin aline:=trim(tform[tform_counter]); tform[tform_counter]:='L';aline:=copy(aline,1,let-1); tform_nr[tform_counter]:=max(1,strtoint('0'+aline)); end;{logical} let:=pos('X',tform[tform_counter]); if let>0 then begin aline:=trim(tform[tform_counter]); tform[tform_counter]:='X';aline:=copy(aline,1,let-1); tform_nr[tform_counter]:=max(1,strtoint('0'+aline)); end;{bit} let:=pos('B',tform[tform_counter]); if let>0 then begin aline:=trim(tform[tform_counter]); tform[tform_counter]:='B';aline:=copy(aline,1,let-1); tform_nr[tform_counter]:=max(1,strtoint('0'+aline)); end;{byte} let:=pos('I',tform[tform_counter]); if let>0 then begin aline:=trim(tform[tform_counter]); tform[tform_counter]:='I';aline:=copy(aline,1,let-1); tform_nr[tform_counter]:=max(1,strtoint('0'+aline)); end;{16 bit integer} let:=pos('J',tform[tform_counter]); if let>0 then begin aline:=trim(tform[tform_counter]); tform[tform_counter]:='J';aline:=copy(aline,1,let-1); tform_nr[tform_counter]:=max(1,strtoint('0'+aline)); end;{32 bit integer} let:=pos('K',tform[tform_counter]); if let>0 then begin aline:=trim(tform[tform_counter]); tform[tform_counter]:='K';aline:=copy(aline,1,let-1); tform_nr[tform_counter]:=max(1,strtoint('0'+aline)); end;{64 bit integer} let:=pos('A',tform[tform_counter]); if let>0 then begin aline:=trim(tform[tform_counter]); tform[tform_counter]:='A';aline:=copy(aline,1,let-1); tform_nr[tform_counter]:=max(1,strtoint('0'+aline)); end;{char e.g. 12A for astrometry.net first index table} except end; end; if ((header[i]='T') and (header[i+1]='B') and (header[i+2]='C') and (header[i+3]='O') and (header[i+4]='L')) then begin number:=trim(header[i+5]+header[i+6]+header[i+7]); tform_counter:=strtoint(number)-1; tbcol[tform_counter]:=round(validate_double); end; if ((header[i]='T') and (header[i+1]='T') and (header[i+2]='Y') and (header[i+3]='P') and (header[i+4]='E')) then {field describtion like X, Y} begin number:=trim(header[i+5]+header[i+6]+header[i+7]); ttype[strtoint(number)-1]:=(get_string); end; if ((header[i]='T') and (header[i+1]='U') and (header[i+2]='N') and (header[i+3]='I') and (header[i+4]='T')) then {unit describtion} begin number:=trim(header[i+5]+header[i+6]+header[i+7]); tunit[strtoint(number)-1]:=get_string; end; end; end_record:=((header[i]='E') and (header[i+1]='N') and (header[i+2]='D') and (header[i+3]=' '));{end of header. Note keyword ENDIAN exist, so test space behind END} inc(i,80);{go to next 80 bytes record} until ((i>=2880) or (end_record)); {loop for 80 bytes in 2880 block} until end_record; {header, 2880 bytes loop} if head.naxis<2 then begin if head.naxis=0 then result:=true {wcs file} else result:=false; {no image} mainwindow.image1.visible:=false; image:=false; end; if image then {read image data #########################################} begin if ((head.naxis=3) and (naxis1=3)) then begin nrbits:=24; {threat RGB fits as 2 dimensional with 24 bits data} head.naxis3:=3; {will be converted while reading} end; if ((head.cd1_1<>0) and ((head.cdelt1=0) or (head.crota2>=999))) then {old style missing but valid new style solution} begin new_to_old_WCS(head);{ convert old WCS to new} end else if ((head.cd1_1=0) and (head.crota2<999) and (head.cdelt2<>0)) then {new style missing but valid old style solution} begin old_to_new_WCS(head);{ convert old WCS to new} end; if ((head.cd1_1=0) and (head.cdelt2=0)) then {no scale, try to fix it} begin if ((focallen<>0) and (head.xpixsz<>0)) then head.cdelt2:=180/(pi*1000)*head.xpixsz/focallen; {use maxim DL key word. xpixsz is including binning} end; if head.crota2>999 then head.crota2:=0;{not defined, set at 0} if head.crota1>999 then head.crota1:=head.crota2; {for case head.crota1 is not specified} if head.set_temperature=999 then head.set_temperature:=round(ccd_temperature); {temperature} if ((light) and ((head.ra0<>0) or (head.dec0<>0) or (equinox<>2000)) ) then begin if equinox<>2000 then //e.g. in SharpCap begin jd_obs:=(equinox-2000)*365.25+2451545; precession3(jd_obs, 2451545 {J2000},head.ra0,head.dec0); {precession, from unknown equinox to J2000} if dec_mount<999 then precession3(jd_obs, 2451545 {J2000},ra_mount,dec_mount); {precession, from unknown equinox to J2000} end; mainwindow.ra1.text:=prepare_ra(head.ra0,' ');{this will create Ra_radians for solving} mainwindow.dec1.text:=prepare_dec(head.dec0,' '); end; { condition keyword to if ra_mount>999 then objctra--->ra1.text--------------->ra_radians--->ra_mount ra--->ra_mount if head.ra0=0 then ra_mount--->head.ra0 crval1--->head.ra0 if head.ra0<>0 then head.ra0--->ra1.text------------------->ra_radians} unsaved_import:=false;{file is available for astrometry.net} if load_data=false then begin close_fits_file; result:=true; exit; end;{only read header for analyse or WCS file} {############################## read image} i:=round(bufwide/(abs(nrbits/8)));{check if buffer is wide enough for one image line} if head.width>i then begin beep; textout(mainwindow.image1.canvas.handle,30,30,'Too wide FITS file !!!!!',25); close_fits_file; exit; end; setlength(img_loaded2,head.naxis3,head.width,head.height); if nrbits=16 then for k:=0 to head.naxis3-1 do {do all colors} begin For j:=0 to head.height-1 do begin try reader.read(fitsbuffer,head.width*2);except; head.naxis:=0;{failure} end; {read file info} for i:=0 to head.width-1 do begin word16:=swap(fitsbuffer2[i]);{move data to wo and therefore sign_int} col_float:=int_16*bscale + bzero; {save in col_float for measuring measured_max} img_loaded2[k,i,j]:=col_float; if col_float>measured_max then measured_max:=col_float;{find max value for image. For for images with 0..1 scale or for debayer} end; end; end {colors head.naxis3 times} else if nrbits=-32 then for k:=0 to head.naxis3-1 do {do all colors} begin For j:=0 to head.height-1 do begin try reader.read(fitsbuffer,head.width*4);except; head.naxis:=0;{failure} end; {read file info} for i:=0 to head.width-1 do begin x_longword:=swapendian(fitsbuffer4[i]);{conversion 32 bit "big-endian" data, x_single : single absolute x_longword; } col_float:=x_single*bscale+bzero; {int_IEEE, swap four bytes and the read as floating point} if isNan(col_float) then col_float:=measured_max;{not a number prevent errors, can happen in PS1 images with very high floating point values} img_loaded2[k,i,j]:=col_float;{store in memory array} if col_float>measured_max then measured_max:=col_float;{find max value for image. For for images with 0..1 scale or for debayer} end; end; end {colors head.naxis3 times} else if nrbits=8 then for k:=0 to head.naxis3-1 do {do all colors} begin For j:=0 to head.height-1 do begin try reader.read(fitsbuffer,head.width);except; head.naxis:=0;{failure} end; {read file info} for i:=0 to head.width-1 do begin img_loaded2[k,i,j]:=(fitsbuffer[i]*bscale + bzero); end; end; end {colors head.naxis3 times} else if nrbits=24 then For j:=0 to head.height-1 do begin try reader.read(fitsbuffer,head.width*3);except; head.naxis:=0;{failure} end; {read file info} for i:=0 to head.width-1 do begin rgbdummy:=fitsbufferRGB[i];{RGB fits with naxis1=3, treated as 24 bits coded pixels in 2 dimensions} img_loaded2[0,i,j]:=rgbdummy[0];{store in memory array} img_loaded2[1,i,j]:=rgbdummy[1];{store in memory array} img_loaded2[2,i,j]:=rgbdummy[2];{store in memory array} end; end else if nrbits=+32 then for k:=0 to head.naxis3-1 do {do all colors} begin For j:=0 to head.height-1 do begin try reader.read(fitsbuffer,head.width*4);except; head.naxis:=0;{failure} end; {read file info} for i:=0 to head.width-1 do begin col_float:=(swapendian(fitsbuffer4[i])*bscale+bzero)/(65535);{scale to 0..65535} {Tricky do not use int64 for BZERO, maxim DL writes BZERO value -2147483647 as +2147483648 !!} img_loaded2[k,i,j]:=col_float;{store in memory array} if col_float>measured_max then measured_max:=col_float;{find max value for image. For for images with 0..1 scale or for debayer} end; end; end {colors head.naxis3 times} else if nrbits=-64 then for k:=0 to head.naxis3-1 do {do all colors} begin For j:=0 to head.height-1 do begin try reader.read(fitsbuffer,head.width*8);except; end; {read file info} for i:=0 to head.width-1 do begin x_qword:=swapendian(fitsbuffer8[i]);{conversion 64 bit "big-endian" data, x_double : double absolute x_int64;} col_float:=x_double*bscale + bzero; {int_IEEE, swap four bytes and the read as floating point} img_loaded2[k,i,j]:=col_float;{store in memory array} if col_float>measured_max then measured_max:=col_float;{find max value for image. For for images with 0..1 scale or for debayer} end; end; end; {colors head.naxis3 times} {rescale if required} if ((nrbits<=-32){-32 or -64} or (nrbits=+32)) then begin scalefactor:=1; if ((measured_max<=1.0*1.5) or (measured_max>65535*1.5)) then scalefactor:=65535/measured_max; {rescale 0..1 range float for GIMP, Astro Pixel Processor, PI files, transfer to 0..65535 float} {or if values are far above 65535. Note due to flat correction even in ASTAP pixels value can be a little 65535} if scalefactor<>1 then {not a 0..65535 range, rescale} begin for k:=0 to head.naxis3-1 do {do all colors} for j:=0 to head.height-1 do for i:=0 to head.width-1 do img_loaded2[k,i,j]:= img_loaded2[k,i,j]*scalefactor; head.datamax_org:=65535; end else head.datamax_org:=measured_max; end else if nrbits=8 then head.datamax_org:=255 {not measured} else if nrbits=24 then begin head.datamax_org:=255; nrbits:=8; {already converted to array with separate colour sections} end else {16 bit} head.datamax_org:=measured_max;{most common. It set for nrbits=24 in beginning at 255} cblack:=head.datamin_org;{for case histogram is not called} cwhite:=head.datamax_org; result:=head.naxis<>0;{success}; reader_position:=reader_position+head.width*head.height*(abs(nrbits) div 8) end{image block} else if ((head.naxis=2) and ((bintable) or (asciitable)) ) then begin {read table ############################################} if bintable then extend_type:=3; if asciitable then extend_type:=2; {try to read data table} aline:=''; for k:=0 to tfields-1 do {columns} aline:=aline+ttype[k]+#9; aline:=aline+sLineBreak; for k:=0 to tfields-1 do {columns} aline:=aline+tunit[k]+#9; aline:=aline+sLineBreak; for j:=0 to head.height-1 do {rows} begin try reader.read(fitsbuffer[0],head.width);{read one row} except end; if extend_type=2 {ascii_table} then SetString(field, Pansichar(@fitsbuffer[0]),head.width);{convert to string} pointer:=0; for k:=0 to tfields-1 do {columns} {read} begin if extend_type=2 then {ascii table} begin if k>0 then insert(#9,field,tbcol[k]+k-1);{insert tab} if k=tfields-1 then aline:=aline+field;{field is ready} end else begin if tform[k]='E' then {4 byte single float or 21 times single if 21E specified} begin for n:=0 to Tform_nr[k]-1 do begin x_longword:=(fitsbuffer[pointer] shl 24) +(fitsbuffer[pointer+1] shl 16)+(fitsbuffer[pointer+2] shl 8)+(fitsbuffer[pointer+3]); aline:=aline+floattostrF(x_single,FFexponent,7,0)+#9; {int_IEEE, swap four bytes and the read as floating point} pointer:=pointer+4; end; end else if tform[k]='D' then {8 byte float} begin for n:=0 to Tform_nr[k]-1 do begin x_qword:=(qword(fitsbuffer[pointer]) shl 56) +(qword(fitsbuffer[pointer+1]) shl 48)+(qword(fitsbuffer[pointer+2]) shl 40)+(qword(fitsbuffer[pointer+3]) shl 32) + (qword(fitsbuffer[pointer+4]) shl 24) +(qword(fitsbuffer[pointer+5]) shl 16)+(qword(fitsbuffer[pointer+6]) shl 8)+(qword(fitsbuffer[pointer+7])); aline:=aline+floattostrF(x_double,FFexponent,7,0)+#9; {int_IEEE, swap four bytes and the read as floating point} pointer:=pointer+8; end; end else if tform[k]='I' then {16 bit int} begin for n:=0 to Tform_nr[k]-1 do begin word16:=(fitsbuffer[pointer] shl 8) + (fitsbuffer[pointer+1]); aline:=aline+inttostr(int_16)+#9; pointer:=pointer+2; end; end else if tform[k]='J' then {32 bit int} begin for n:=0 to Tform_nr[k]-1 do begin x_longword:=(fitsbuffer[pointer] shl 24) +(fitsbuffer[pointer+1] shl 16)+(fitsbuffer[pointer+2] shl 8)+(fitsbuffer[pointer+3]); aline:=aline+inttostr(int_32)+#9; pointer:=pointer+4; end; end else if tform[k]='K' then {64 bit int} begin for n:=0 to Tform_nr[k]-1 do begin x_qword:=(qword(fitsbuffer[pointer]) shl 56) +(qword(fitsbuffer[pointer+1]) shl 48)+(qword(fitsbuffer[pointer+2]) shl 40)+(qword(fitsbuffer[pointer+3]) shl 32) + (qword(fitsbuffer[pointer+4]) shl 24) +(qword(fitsbuffer[pointer+5]) shl 16)+(qword(fitsbuffer[pointer+6]) shl 8)+(qword(fitsbuffer[pointer+7])); aline:=aline+inttostr(int_64)+#9; {int_IEEE, swap eight bytes and the read as floating point} pointer:=pointer+8; end; end else if ((tform[k]='L') or (Tform[k]='X') or (Tform[k]='B')) then {logical, bit or byte } begin for n:=0 to Tform_nr[k]-1 do begin aline:=aline+inttostr(fitsbuffer[pointer])+#9; pointer:=pointer+1; end; end else if ((Tform[k]='A')) then {chars} begin field:=''; for n:=0 to Tform_nr[k]-1 do begin abyte:=fitsbuffer[pointer+n]; if ((abyte>=32) and (abyte<=127)) then field:=field+ansichar(abyte) else field:=field+'?';{exotic char, prevent confusion tmemo} end; aline:=aline+field+ #9; pointer:=pointer+Tform_nr[k];{for 12A, plus 12} end end; end; aline:=aline+sLineBreak ; end; mainwindow.Memo3.lines.text:=aline; aline:=''; {release memory} if update_memo then mainwindow.memo1.visible:=true;{show header} mainwindow.pagecontrol1.showtabs:=true;{show tabs} reader_position:=reader_position+head.width*head.height; end; {read table} if last_extension=false then {test if extension is possible} begin if file_size-reader_position>2880 then {file size confirms extension} begin if get_ext=0 then mainwindow.Memo3.lines.text:='File contains extension image(s) or table(s).'; mainwindow.pagecontrol1.showtabs:=true;{show tabs} last_extension:=false; if head.naxis<2 then begin mainwindow.error_label1.caption:=('Contains extension(s). Click on the arrows to scroll.'); mainwindow.error_label1.visible:=true; mainwindow.memo1.visible:=true;{show memo1 since no plotting is coming} end; end else begin last_extension:=true; end; end; if ((last_extension=false) or (extend_type>0)) then mainwindow.tabsheet1.caption:='Header '+inttostr(get_ext); close_fits_file; end; procedure Wait(wt:single=500); {smart sleep} var endt: TDateTime; begin endt:=now+wt/MSecsPerDay; while now<endt do begin Sleep(5); if GetCurrentThreadId=MainThreadID then Application.ProcessMessages; end; end; function fits_file_name(inp : string): boolean; {fits file name?} begin inp:=uppercase(extractfileext(inp)); result:=((inp='.FIT') or (inp='.FITS') or (inp='.FTS') or (inp='.WCS'));{wcs for telescope tab} end; function fits_tiff_file_name(inp : string): boolean; {fits or tiff file name?} begin inp:=uppercase(extractfileext(inp)); result:=((inp='.FIT') or (inp='.FITS') or (inp='.FTS') or (inp='.TIF') or (inp='.TIFF') or (inp='.WCS'));{fits or tiff file name, wcs for mount analyse tab} end; function tiff_file_name(inp : string): boolean; {tiff file name?} begin inp:=uppercase(extractfileext(inp)); result:=((inp='.TIF') or (inp='.TIFF'));{tiff file name} end; function check_raw_file_extension(ext: string): boolean;{check if extension is from raw file} begin result:=((ext='.RAW') or (ext='.CRW') or (ext='.CR2') or (ext='.CR3')or (ext='.KDC') or (ext='.DCR') or (ext='.MRW') or (ext='.ARW') or (ext='.NEF') or (ext='.NRW') or (ext='.DNG') or (ext='.ORF') or (ext='.PTX') or (ext='.PEF') or (ext='.RW2') or (ext='.SRW') or (ext='.RAF') or (ext='.KDC')); {raw format extension?} end; function image_file_name(inp : string): boolean; {readable image name?} begin inp:=uppercase(extractfileext(inp)); result:=( (inp='.FIT') or (inp='.FITS') or (inp='.FTS') or (inp='.JPG') or (inp='.JPEG') or (inp='.TIF') or (inp='.PNG') ); if result=false then result:=check_raw_file_extension(inp); end; procedure read_keys_memo(light: boolean; out head : theader);{for tiff, header in the describtion decoding} var key : string; count1,index : integer; ra2,dec2,ccd_temperature,jd_obs : double; function read_float: double; var err: integer; begin val(copy(mainwindow.Memo1.Lines[index],11,20),result,err); end; function read_integer: integer; var err: integer; begin val(copy(mainwindow.Memo1.Lines[index],11,20),result,err); end; function read_string: string; var p1,p2 :integer; begin result:=copy(mainwindow.Memo1.Lines[index],11,80-11); p1:=pos(char(39),result); p2:=posex(char(39),result,p1+1); if p2=0 then p2:=21;{allow reading floats and integers as string} result:=trim(copy(result,p1+1,p2-p1-1));{remove all spaces} end; begin {variables are already reset} count1:=mainwindow.Memo1.Lines.Count-1-1; ccd_temperature:=999; index:=1; while index<=count1 do {read keys} begin key:=copy(mainwindow.Memo1.Lines[index],1,9); if key='CD1_1 =' then head.cd1_1:=read_float else if key='CD1_2 =' then head.cd1_2:=read_float else if key='CD2_1 =' then head.cd2_1:=read_float else if key='CD2_2 =' then head.cd2_2:=read_float else if key='CRPIX1 =' then head.crpix1:=read_float else if key='CRPIX2 =' then head.crpix2:=read_float else if key='CRVAL1 =' then head.ra0:=read_float*pi/180 {degrees -> radians} else if key='CRVAL2 =' then head.dec0:=read_float*pi/180 else if key='RA =' then begin ra_mount:=read_float*pi/180;{degrees -> radians} if head.ra0=0 then head.ra0:=ra_mount; {ra telescope, read double value only if crval is not available} end else if key='DEC =' then begin dec_mount:=read_float*pi/180; if head.dec0=0 then head.dec0:=dec_mount; {ra telescope, read double value only if crval is not available} end else if ((key='OBJCTRA =') and (ra_mount>=999)) {ra_mount value is unfilled, preference for keyword RA} then begin mainwindow.ra1.text:=read_string;{triggers an onchange event which will convert the string to ra_radians} ra_mount:=ra_radians;{preference for keyword RA} end else if ((key='OBJCTDEC=') and (dec_mount>=999)) {dec_mount value is unfilled, preference for keyword DEC} then begin mainwindow.dec1.text:=read_string;{triggers an onchange event which will convert the string to dec_radians} dec_mount:=dec_radians; end else if key='OBJECT =' then object_name:=read_string else if ((key='EXPOSURE=') or ( key='EXPTIME =')) then head.exposure:=read_float else if (key='XBINNING=') then head.xbinning:=read_integer else if (key='YBINNING=') then head.ybinning:=read_integer else if (key='FOCALLEN=') then focallen:=read_float else if (key='XPIXSZ =') then head.xpixsz:=read_float else {pixelscale in microns} if (key='YPIXSZ =') then head.ypixsz:=read_float else if (key='CDELT1 =') then head.cdelt1:=read_float else {deg/pixel} if (key='CDELT2 =') then head.cdelt2:=read_float else {deg/pixel} if (key='EQUINOX =') then equinox:=read_float else if ((key='SECPIX2 =') or (key='PIXSCALE=') or (key='SCALE =')) then begin if head.cdelt2=0 then head.cdelt2:=read_float/3600; end {no head.cdelt1/2 found yet, use alternative, image scale arcseconds per pixel} else if key='GAIN =' then head.gain:=copy(read_string,1,5); {limit to 5 digits} if key='EGAIN =' then head.egain:=copy(read_string,1,5) else if key='CCD-TEMP=' then ccd_temperature:=round(read_float) else if key='SET-TEMP=' then head.set_temperature:=round(read_float) else if key='LIGH_CNT=' then head.light_count:=read_integer else {will not be used unless there is a tiff 32 bit reader} if key='DARK_CNT=' then head.dark_count:=read_integer else {will not be used unless there is a tiff 32 bit reader} if key='FLAT_CNT=' then head.flat_count:=read_integer else {will not be used unless there is a tiff 32 bit reader} if key='BIAS_CNT=' then head.flatdark_count:=read_integer else {will not be used unless there is a tiff 32 bit reader} if key='CALSTAT =' then head.calstat:=read_string else {will not be used unless there is a tiff 32 bit reader} if key='FILTER =' then head.filter_name:=read_string else if key='DATE-OBS=' then head.date_obs:=read_string else if key='BAYERPAT=' then bayerpat:=read_string; if key='PRESSURE=' then pressure:=round(read_float) else if key='AOCBAROM=' then pressure:=round(read_float) else if key='FOCUSTEM=' then focus_temp:=round(read_float) else if key='FOCTEMP =' then focus_temp:=round(read_float) else if key='AMB-TEMP=' then focus_temp:=round(read_float) else if key='AOCAMBT =' then focus_temp:=round(read_float) else if key='TELESCOP=' then telescop:=read_string; if key='INSTRUME=' then instrum:=read_string; if key='CENTALT =' then centalt:=read_string; if key='SITELAT =' then sitelat:=read_string; if key='SITELONG=' then sitelong:=read_string; {adjustable keywords} if key=sqm_key+'=' then sqm_value:=read_string; if key=centaz_key+'=' then centaz:=read_string; if index=1 then if key<>'BITPIX =' then begin mainwindow.Memo1.Lines.insert(index,'BITPIX = 16 / Bits per entry '); inc(count1); end;{data will be added later} if index=2 then if key<>'NAXIS =' then begin mainwindow.Memo1.Lines.insert(index,'NAXIS = 2 / Number of dimensions ');inc(count1); end;{data will be added later} if index=3 then if key<>'NAXIS1 =' then begin mainwindow.Memo1.Lines.insert(index,'NAXIS1 = 100 / length of x axis ');inc(count1); end;{data will be added later} if index=4 then if key<>'NAXIS2 =' then begin mainwindow.Memo1.Lines.insert(index,'NAXIS2 = 100 / length of y axis ');inc(count1); end;{data will be added later} if ((index=5) and (head.naxis>1)) then if key<>'NAXIS3 =' then begin mainwindow.Memo1.Lines.insert(index,'NAXIS3 = 3 / length of z axis (mostly colors) ');inc(count1); end; index:=index+1; end; if ((light) and ((head.ra0<>0) or (head.dec0<>0))) then begin if equinox<>2000 then //e.g. in SharpCap begin jd_obs:=(equinox-2000)*365.25+2451545; precession3(jd_obs, 2451545 {J2000},head.ra0,head.dec0); {precession, from unknown equinox to J2000} if dec_mount<999 then precession3(jd_obs, 2451545 {J2000},ra_mount,dec_mount); {precession, from unknown equinox to J2000} end; mainwindow.ra1.text:=prepare_ra(head.ra0,' ');{this will create Ra_radians for solving} mainwindow.dec1.text:=prepare_dec(head.dec0,' '); end; { condition keyword to if ra_mount>999 then objctra--->ra1.text---------------> ra_radians--->ra_mount ra--->ra_mount if ra0=0 then ra_mount--->ra0 crval1--->head.ra0 if ra0<>0 then ra0--->ra1.text------------------->ra_radians} if ((head.cd1_1<>0) and ((head.cdelt1=0) or (head.crota2>=999))) then {old style missing but valid new style solution} begin new_to_old_WCS(head);{ convert old WCS to new} end else if ((head.cd1_1=0) and (head.crota2<999) and (head.cdelt2<>0)) then {new style missing but valid old style solution} begin old_to_new_WCS(head);{ convert old WCS to new} end; if ((head.cd1_1=0) and (head.cdelt2=0)) then {no scale, try to fix it} begin if ((focallen<>0) and (head.xpixsz<>0)) then head.cdelt2:=180/(pi*1000)*head.xpixsz/focallen; {use maxim DL key word. xpixsz is including binning} end; if head.crota2>999 then head.crota2:=0;{not defined, set at 0} if head.crota1>999 then head.crota1:=head.crota2; {for case head.crota1 is not specified} if head.set_temperature=999 then head.set_temperature:=round(ccd_temperature); {temperature} end; function load_PPM_PGM_PFM(filen:string; out head :theader; out img_loaded2: image_array) : boolean;{load PPM (color),PGM (gray scale)file or PFM color} var TheFile : tfilestream; i,j, reader_position : integer; aline,w1,h1,bits,comm : ansistring; ch : ansichar; rgb32dummy : byteXXXX3; rgb16dummy : byteXX3; rgbdummy : byteX3; err,err2,err3,package : integer; comment,color7,pfm,expdet,timedet,isodet,instdet,ccdtempdet : boolean; range, jd2 : double; var x_longword : longword; x_single : single absolute x_longword;{for conversion 32 bit "big-endian" data} procedure close_fits_file; inline; begin Reader.free; TheFile.free; end; begin head.naxis:=0; {0 dimensions} result:=false; {assume failure} try TheFile:=tfilestream.Create( filen, fmOpenRead or fmShareDenyWrite); except beep; mainwindow.error_label1.caption:=('Error, accessing the file!'); mainwindow.error_label1.visible:=true; exit; end; mainwindow.memo1.visible:=false;{stop visualising memo1 for speed. Will be activated in plot routine} mainwindow.memo1.clear;{clear memo for new header} Reader := TReader.Create (TheFile,$60000);// 393216 byte buffer {TheFile.size-reader.position>sizeof(hnskyhdr) could also be used but slow down a factor of 2 !!!} reset_fits_global_variables(true{light},head); {reset the global variable} I:=0; reader_position:=0; aline:=''; try for i:=0 to 2 do begin reader.read(ch,1); aline:=aline+ch; inc(reader_position,1);end; if ((aline<>'P5'+#10) and (aline<>'P6'+#10) and (aline<>'PF'+#10) and (aline<>'Pf'+#10)) then begin close_fits_file; beep; mainwindow.error_label1.caption:=('Error loading PGM/PPM/PFM file!! Keyword P5, P6, PF. Pf not found.'); mainwindow.error_label1.visible:=true; exit; end ;{should start with P6} pfm:=false; if aline='P5'+#10 then color7:=false {gray scale image} else if aline='P6'+#10 then color7:=true {colour scale image} else if aline='PF'+#10 then begin color7:=true; pfm:=true; end {PFM colour scale image, photoshop export float 32 bit} else if aline='Pf'+#10 then begin color7:=false; pfm:=true; end; {PFM colour scale image, photoshop export float 32 bit grayscale} i:=0; repeat {read header} comment:=false; expdet:=false; timedet:=false; ccdtempdet:=false; aline:=''; comm:=''; repeat reader.read(ch,1); if ch='#' then comment:=true;{reading comment} if comment then {this works only for files produced by special custom DCRAW version. Code for identical Libraw modification proposed at Github} begin if ch in [';','#',' ',char($0A)]=false then comm:=comm+ch else begin if expdet then begin head.exposure:=strtofloat2(comm);expdet:=false; end;{get head.exposure time from comments,special dcraw 0.9.28dev1} if isodet then begin head.gain:=comm;isodet:=false; end;{get iso speed as head.gain} if instdet then begin instrum:=comm;instdet:=false;end;{camera} if ccdtempdet then begin head.set_temperature:=round(strtofloat2(comm));ccdtempdet:=false;end;{sensor temperature} if timedet then begin JD2:=2440587.5+ strtoint(comm)/(24*60*60);{convert to Julian Day by adding factor. Unix time is seconds since 1.1.1970} head.date_obs:=JdToDate(jd2); timedet:=false; end;{get date from comments} comm:='';{clear for next keyword} end; if comm='EXPTIME=' then begin expdet:=true; comm:=''; end else if comm='TIMESTAMP=' then begin timedet:=true; comm:=''; end else if comm='ISOSPEED=' then begin isodet:=true; comm:=''; end else if comm='MODEL=' then begin instdet:=true; comm:=''; end; {camera make} if comm='CCD-TEMP=' then begin ccdtempdet:=true; comm:=''; end; {camera make} end else if ord(ch)>32 then aline:=aline+ch;; {DCRAW write space #20 between width&length, Photoshop $0a} if ord(ch)=$0a then comment:=false;{complete comment read} inc(reader_position,1) until ( ((comment=false) and (ord(ch)<=32)) or (reader_position>200)) ;{ignore comments, with till text is read and escape if too long} if (length(aline)>1){no comments} then {read header info} begin inc(i);{useful header line} if i=1 then w1:=aline {width} else if i=2 then h1:=aline {height} else bits:=aline; end; until ((i>=3) or (reader_position>200)) ; val(w1,head.width,err); val(h1,head.height,err2); val(bits,range,err3);{number of bits} nrbits:=round(range); if pfm then begin nrbits:=-32; head.datamax_org:=$FFFF;end {little endian PFM format. If nrbits=-1 then range 0..1. If nrbits=+1 then big endian with range 0..1 } else if nrbits=65535 then begin nrbits:=16; head.datamax_org:=$FFFF;end else if nrbits=255 then begin nrbits:=8;head.datamax_org:=$FF; end else err3:=999; if ((err<>0) or (err2<>0) or (err3<>0)) then begin beep; mainwindow.error_label1.caption:=('Incompatible PPM/PGM/PFM file !!'); mainwindow.error_label1.visible:=true; close_fits_file; head.naxis:=0; exit; end; {should contain 255 or 65535} head.datamin_org:=0; cblack:=head.datamin_org;{for case histogram is not called} cwhite:=head.datamax_org; if color7 then begin package:=round((abs(nrbits)*3/8));{package size, 3 or 6 bytes} head.naxis3:=3; {head.naxis3 number of colors} head.naxis:=3; {number of dimensions} end else begin {gray image without bayer matrix applied} package:=round((abs(nrbits)/8));{package size, 1 or 2 bytes} head.naxis3:=1; {head.naxis3 number of colors} head.naxis:=2;{number of dimensions} end; i:=round(bufwide/package); if head.width>i then begin beep; textout(mainwindow.image1.canvas.handle,30,30,'Too large FITS file !!!!!',25); close_fits_file; exit; end else begin {not too large} setlength(img_loaded2,head.naxis3,head.width,head.height); begin For i:=0 to head.height-1 do begin try reader.read(fitsbuffer,head.width*package);except; end; {read file info} for j:=0 to head.width-1 do begin if color7=false then {gray scale without bayer matrix applied} begin if nrbits=8 then {8 BITS, mono 1x8bits} img_loaded2[0,j,i]:=fitsbuffer[j]{RGB fits with naxis1=3, treated as 48 bits coded pixels} else if nrbits=16 then {big endian integer} img_loaded2[0,j,i]:=swap(fitsbuffer2[j]) else {PFM 32 bits grayscale} if pfm then begin if range<0 then {little endian floats} img_loaded2[0,j,i]:=fitsbuffersingle[j]*65535/(-range) {PFM little endian float format. if nrbits=-1 then range 0..1. If nrbits=+1 then big endian with range 0..1 } else begin {big endian floats} x_longword:=swapendian(fitsbuffer4[j]);{conversion 32 bit "big-endian" data, x_single : single absolute x_longword; } img_loaded2[0,j,i]:=x_single*65535/range; end; end; end else begin if nrbits=8 then {24 BITS, colour 3x8bits} begin rgbdummy:=fitsbufferRGB[j];{RGB fits with naxis1=3, treated as 48 bits coded pixels} img_loaded2[0,j,i]:=rgbdummy[0];{store in memory array} img_loaded2[1,j,i]:=rgbdummy[1];{store in memory array} img_loaded2[2,j,i]:=rgbdummy[2];{store in memory array} end else if nrbits=16 then {48 BITS colour, 3x16 big endian} begin {48 bits} rgb16dummy:=fitsbufferRGB16[j];{RGB fits with naxis1=3, treated as 48 bits coded pixels} img_loaded2[0,j,i]:=swap(rgb16dummy[0]);{store in memory array} img_loaded2[1,j,i]:=swap(rgb16dummy[1]);{store in memory array} img_loaded2[2,j,i]:=swap(rgb16dummy[2]);{store in memory array} end else if pfm then begin {PFM little-endian float 3x 32 bit colour} if range<0 then {little endian} begin rgb32dummy:=fitsbufferRGB32[j];{RGB fits with naxis1=3, treated as 96 bits coded pixels} img_loaded2[0,j,i]:=(rgb32dummy[0])*65535/(-range);{store in memory array} img_loaded2[1,j,i]:=(rgb32dummy[1])*65535/(-range);{store in memory array} img_loaded2[2,j,i]:=(rgb32dummy[2])*65535/(-range);{store in memory array} end else begin {PFM big-endian float 32 bit colour} x_longword:=swapendian(fitsbuffer4[j*3]); img_loaded2[0,j,i]:=x_single*65535/(range); x_longword:=swapendian(fitsbuffer4[j*3+1]); img_loaded2[1,j,i]:=x_single*65535/(range); x_longword:=swapendian(fitsbuffer4[j*3+2]); img_loaded2[2,j,i]:=x_single*65535/(range); end; end; end; end; end; end; end; except; close_fits_file; exit; end; update_menu(true);{file loaded, update menu for fits} unsaved_import:=false;{file is available for astrometry.net} close_fits_file; result:=true;{succes} for j:=0 to 10 do {create an header with fixed sequence} if ((j<>5) or (head.naxis3<>1)) then {skip head.naxis3 for mono images} mainwindow.memo1.lines.add(head1[j]); {add lines to empthy memo1} mainwindow.memo1.lines.add(head1[27]); {add end} update_integer('BITPIX =',' / Bits per entry ' ,nrbits); update_integer('NAXIS =',' / Number of dimensions ' ,head.naxis);{2 for mono, 3 for colour} update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); if head.naxis3<>1 then update_integer('NAXIS3 =',' / length of z axis (mostly colors) ' ,head.naxis3); update_integer('DATAMIN =',' / Minimum data value ' ,0); update_integer('DATAMAX =',' / Maximum data value ' ,round(head.datamax_org)); if head.exposure<>0 then update_float('EXPTIME =',' / duration of exposure in seconds ' ,head.exposure); if head.gain<>'' then update_integer('GAIN =',' / iso speed ' ,strtoint(head.gain)); if head.date_obs<>'' then update_text ('DATE-OBS=',#39+head.date_obs+#39); if instrum<>'' then update_text ('INSTRUME=',#39+INSTRUM+#39); update_text ('BAYERPAT=',#39+'T'+#39+' / Unknown Bayer color pattern '); update_text ('COMMENT 1',' Written by ASTAP, Astrometric STAcking Program. www.hnsky.org'); end; function load_TIFFPNGJPEG(filen:string;light {load as light or dark/flat}: boolean; out head : theader;out img_loaded2: image_array) : boolean;{load 8 or 16 bit TIFF, PNG, JPEG, BMP image} var i,j : integer; jd2 : double; image: TFPCustomImage; reader: TFPCustomImageReader; tiff, png,jpeg,colour,saved_header : boolean; ext,descrip : string; begin head.naxis:=0; {0 dimensions} result:=false; {assume failure} tiff:=false; jpeg:=false; png:=false; saved_header:=false; ext:=uppercase(ExtractFileExt(filen)); try Image := TFPMemoryImage.Create(10, 10); if ((ext='.TIF') or (ext='.TIFF')) then begin Reader := TFPReaderTIFF.Create; tiff:=true; end else if ext='.PNG' then begin Reader := TFPReaderPNG.Create; png:=true; end else if ((ext='.JPG') or (ext='.JPEG')) then begin Reader := TFPReaderJPEG.Create; jpeg:=true; end else if ext='.BMP' then Reader := TFPReaderBMP.create else // if ((ext='.PPM') or (ext='.PGM')) then // Reader := TFPReaderPNM.Create else {not used since comment have to be read} exit; Image.LoadFromFile(filen, Reader); except beep; mainwindow.error_label1.caption:=('Error, accessing the file!'); mainwindow.error_label1.visible:=true; exit; end; reset_fits_global_variables(true{light},head); {reset the global variable} {$IF FPC_FULLVERSION >= 30200} {FPC3.2.0} colour:=true; if ((tiff) and (Image.Extra[TiffGrayBits]<>'0')) then colour:=false; {image grayscale?} if ((png) and (TFPReaderPNG(reader).grayscale)) then colour:=false; {image grayscale?} if ((jpeg) and (TFPReaderJPEG(reader).grayscale)) then colour:=false; {image grayscale?} {BMP always colour} {$else} {for older compiler versions} colour:=false; with image do {temporary till grayscale is implemented in fcl-image} begin i:=0; j:=height div 2; while ((colour=false) and (i<width)) do {test horizontal line} begin colour:=((Colors[i,j].red<>Colors[i,j].green) or (Colors[i,j].red<>Colors[i,j].blue)); inc(i); end; i:=width div 2; j:=0; while ((colour=false) and (j<height)) do {test vertical line} begin colour:=((Colors[i,j].red<>Colors[i,j].green) or (Colors[i,j].red<>Colors[i,j].blue)); inc(j); end; end; {$ENDIF} if colour=false then begin head.naxis:=2; head.naxis3:=1; end else begin head.naxis:=3; {three dimensions, x,y and 3 colours} head.naxis3:=3; end; mainwindow.memo1.visible:=false;{stop visualising memo1 for speed. Will be activated in plot routine} mainwindow.memo1.clear;{clear memo for new header} {set data} extend_type:=0; {no extensions in the file, 1 is image, 2 is ascii_table, 3 bintable} nrbits:=16; head.datamin_org:=0; head.datamax_org:=$FFFF; cblack:=head.datamin_org;{for case histogram is not called} cwhite:=head.datamax_org; head.width:=image.width; head.height:=image.height; setlength(img_loaded2,head.naxis3,head.width,head.height); if head.naxis3=3 then begin For i:=0 to head.height-1 do for j:=0 to head.width-1 do begin img_loaded2[0,j,head.height-1-i]:=image.Colors[j,i].red; img_loaded2[1,j,head.height-1-i]:=image.Colors[j,i].green; img_loaded2[2,j,head.height-1-i]:=image.Colors[j,i].blue; end; end else begin For i:=0 to head.height-1 do for j:=0 to head.width-1 do img_loaded2[0,j,head.height-1-i]:=image.Colors[j,i].red; end; if tiff then begin descrip:=image.Extra['TiffImageDescription']; {restore full header in TIFF !!!} end; if copy(descrip,1,6)='SIMPLE' then {fits header included} begin mainwindow.memo1.text:=descrip; read_keys_memo(light, head); saved_header:=true; end else {no fits header in tiff file available} begin for j:=0 to 10 do {create an header with fixed sequence} if ((j<>5) or (head.naxis3<>1)) then {skip head.naxis3 for mono images} mainwindow.memo1.lines.add(head1[j]); {add lines to empthy memo1} mainwindow.memo1.lines.add(head1[27]); {add end} if descrip<>'' then add_long_comment(descrip);{add TIFF describtion} end; update_integer('BITPIX =',' / Bits per entry ' ,nrbits); update_integer('NAXIS =',' / Number of dimensions ' ,head.naxis);{2 for mono, 3 for colour} update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); update_integer('DATAMIN =',' / Minimum data value ' ,0); update_integer('DATAMAX =',' / Maximum data value ' ,round(head.datamax_org)); if saved_header=false then {saved header in tiff is not restored} begin JD2:=2415018.5+(FileDateToDateTime(fileage(filen))); {fileage ra, convert to Julian Day by adding factor. filedatatodatetime counts from 30 dec 1899.} head.date_obs:=JdToDate(jd2); update_text ('DATE-OBS=',#39+head.date_obs+#39);{give start point exposures} end; update_text ('COMMENT 1',' Written by ASTAP, Astrometric STAcking Program. www.hnsky.org'); { Clean up! } image.Free; reader.free; unsaved_import:=true;{file is not available for astrometry.net} result:=true;{succes} end; procedure Tmainwindow.LoadFITSPNGBMPJPEG1Click(Sender: TObject); begin OpenDialog1.Title := 'Open in viewer'; opendialog1.Filter := 'All formats |*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS;*.png;*.PNG;*.jpg;*.JPG;*.bmp;*.BMP;*.tif;*.tiff;*.TIF;*.new;*.ppm;*.pgm;*.pbm;*.pfm;*.xisf;*.fz;'+ '*.RAW;*.raw;*.CRW;*.crw;*.CR2;*.cr2;*.CR3;*.cr3;*.KDC;*.kdc;*.DCR;*.dcr;*.MRW;*.mrw;*.ARW;*.arw;*.NEF;*.nef;*.NRW;.nrw;*.DNG;*.dng;*.ORF;*.orf; *.PTX;*.ptx;*.PEF;*.pef;*.RW2;*.rw2;*.SRW;*.srw;*.RAF;*.raf;'+ '*.axy;*.xyls'+ '|FITS files (*.fit*,*.xisf)|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS;*.new;*.xisf;*.fz'+ '|PNG, TIFF, JPEG, BMP(*.png,*.tif*, *.jpg,*.bmp)|*.png;*.PNG;*.tif;*.tiff;*.TIF;*.jpg;*.JPG;*.bmp;*.BMP'+ '|Preview FITS files (*.fit*)|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS'; opendialog1.filename:=filename2; opendialog1.initialdir:=ExtractFileDir(filename2); opendialog1.filterindex:=LoadFITSPNGBMPJPEG1filterindex; if opendialog1.execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } filename2:=opendialog1.filename; if opendialog1.FilterIndex<>4 then {<> preview FITS files, not yet loaded} {loadimage} load_image(true,true {plot});{load and center} LoadFITSPNGBMPJPEG1filterindex:=opendialog1.filterindex;{remember filterindex} Screen.Cursor:=crDefault; end; end; function prepare_IAU_designation(rax,decx :double):string;{radialen to text hhmmss.s+ddmmss format} var {IAU doesn't recommend rounding, however it is implemented here} hh,mm,ss,ds :integer; g,m,s :integer; sign : char; begin {RA} rax:=rax+pi*2*0.05/(24*60*60); {add 1/10 of half second to get correct rounding and not 7:60 results as with round} rax:=rax*12/pi; {make hours} hh:=trunc(rax); mm:=trunc((rax-hh)*60); ss:=trunc((rax-hh-mm/60)*3600); ds:=trunc((rax-hh-mm/60-ss/3600)*36000); {DEC} if decx<0 then sign:='-' else sign:='+'; decx:=abs(decx)+pi*2*0.5/(360*60*60); {add half second to get correct rounding and not 7:60 results as with round} decx:=decx*180/pi; {make degrees} g:=trunc(decx); m:=trunc((decx-g)*60); s:=trunc((decx-g-m/60)*3600); result:=leadingzero(hh)+leadingzero(mm)+leadingzero(ss)+'.'+char(ds+48)+sign+leadingzero(g)+leadingzero(m)+leadingzero(s); end; procedure get_background(colour: integer; img :image_array;calc_hist, calc_noise_level: boolean; out background, starlevel: double); {get background and star level from peek histogram} var i, pixels,max_range,above,his_total, fitsX, fitsY,counter,stepsize,width5,height5, iterations : integer; value,sd, sd_old : double; begin if calc_hist then get_hist(colour,img);{get histogram of img_loaded and his_total} background:=img[0,0,0];{define something for images containing 0 or 65535 only} {find peak in histogram which should be the average background} pixels:=0; max_range:=his_mean[colour]; {mean value from histogram} for i := 1 to max_range do {find peak, ignore value 0 from oversize} if histogram[colour,i]>pixels then {find colour peak} begin pixels:= histogram[colour,i]; background:=i; end; {check alternative mean value} if his_mean[colour]>1.5*background {1.5* most common} then {changed from 2 to 1.5 on 2021-5-29} begin memo2_message(Filename2+', will use mean value '+inttostr(round(his_mean[colour]))+' as background rather then most common value '+inttostr(round(background))); background:=his_mean[colour];{strange peak at low value, ignore histogram and use mean} end; if calc_noise_level then {find star level and background noise level} begin {calculate star level} if ((nrbits=8) or (nrbits=24)) then max_range:= 255 else max_range:=65001 {histogram runs from 65000};{8 or 16 / -32 bit file} i:=max_range; starlevel:=0; above:=0; if colour=1 then his_total:=his_total_green else if colour=2 then his_total:=his_total_blue else his_total:=his_total_red; while ((starlevel=0) and (i>background+1)) do {find star level 0.003 of values} begin dec(i); above:=above+histogram[colour,i]; if above>0.001*his_total then starlevel:=i; end; if starlevel<= background then starlevel:=background+1 {no or very few stars} else starlevel:=starlevel-background-1;{star level above background. Important subtract 1 for saturated images. Otherwise no stars are detected} {calculate noise level} stepsize:=round(head.height/71);{get about 71x71=5000 samples. So use only a fraction of the pixels} if odd(stepsize)=false then stepsize:=stepsize+1;{prevent problems with even raw OSC images} width5:=Length(img[0]); {width} height5:=Length(img[0][0]); {height} sd:=99999; iterations:=0; repeat {repeat until sd is stable or 7 iterations} fitsX:=15; counter:=1; {never divide by zero} sd_old:=sd; while fitsX<=width5-1-15 do begin fitsY:=15; while fitsY<=height5-1-15 do begin value:=img[colour,fitsX,fitsY]; if ((value<background*2) and (value<>0)) then {not an outlier, noise should be symmetrical so should be less then twice background} begin if ((iterations=0) or (abs(value-background)<=3*sd_old)) then {ignore outliers after first run} begin sd:=sd+sqr(value-background); {sd} inc(counter);{keep record of number of pixels processed} end; end; inc(fitsY,stepsize);;{skip pixels for speed} end; inc(fitsX,stepsize);{skip pixels for speed} end; sd:=sqrt(sd/counter); {standard deviation} inc(iterations); until (((sd_old-sd)<0.05*sd) or (iterations>=7));{repeat until sd is stable or 7 iterations} noise_level[colour]:= round(sd); {this noise level is too high for long exposures and if no flat is applied. So for images where center is brighter then the corners.} end; end; procedure DeleteFiles(lpath,FileSpec: string);{delete files such *.wcs} var lSearchRec:TSearchRec; begin if FindFirst(lpath+FileSpec,faAnyFile,lSearchRec) = 0 then begin try repeat SysUtils.DeleteFile(lPath+lSearchRec.Name); until SysUtils.FindNext(lSearchRec) <> 0; finally SysUtils.FindClose(lSearchRec); // Free resources on successful find end; end; end; procedure update_float(inpt,comment1:string;x:double);{update keyword of fits header in memo} var s,aline : string; count1: integer; begin str(x:20,s); count1:=mainwindow.Memo1.Lines.Count-1; while count1>=0 do {update keyword} begin if pos(inpt,mainwindow.Memo1.Lines[count1])>0 then {found} begin aline:=mainwindow.Memo1.Lines[count1]; if copy(aline,32,1)='/' then delete(aline,11,20) {preserve comment} else delete(aline,11,80); {delete all} insert(s,aline,11); mainwindow.Memo1.Lines[count1]:=aline; exit; end; count1:=count1-1; end; {not found, add to the end} mainwindow.memo1.lines.insert(mainwindow.Memo1.Lines.Count-1,inpt+' '+s+comment1); end; procedure update_integer(inpt,comment1:string;x:integer);{update or insert variable in header} var s,aline : string; count1 : integer; begin str(x:20,s); count1:=mainwindow.Memo1.Lines.Count-1; while count1>=0 do {update keyword} begin if pos(inpt,mainwindow.Memo1.Lines[count1])>0 then {found} begin aline:=mainwindow.Memo1.Lines[count1]; delete(aline,11,20); insert(s,aline,11); mainwindow.Memo1.Lines[count1]:=aline; exit; end; count1:=count1-1; end; {not found, add at the correct position or at the end} if inpt='NAXIS1 =' then mainwindow.memo1.lines.insert(3,inpt+' '+s+comment1) else{PixInsight requires to have it on 3th place} if inpt='NAXIS2 =' then mainwindow.memo1.lines.insert(4,inpt+' '+s+comment1) else{PixInsight requires to have it on 4th place} if inpt='NAXIS3 =' then mainwindow.memo1.lines.insert(5,inpt+' '+s+comment1) else{PixInsight requires to have it on this place} mainwindow.memo1.lines.insert(mainwindow.Memo1.Lines.Count-1,inpt+' '+s+comment1); end; procedure add_integer(inpt,comment1:string;x:integer);{add integer variable to header} var s : string; begin str(x:20,s); mainwindow.memo1.lines.insert(mainwindow.Memo1.Lines.Count-1,inpt+' '+s+comment1); end; procedure update_generic(message_key,message_value,message_comment:string);{update header using text only} var count1: integer; begin if ((pos('HISTORY',message_key)=0) and (pos('COMMENT',message_key)=0)) then {allow multiple lines of hisotry and comments} begin while length(message_value)<20 do message_value:=' '+message_value;{extend length, right aligned} while length(message_key)<8 do message_key:=message_key+' ';{make standard lenght of 8} count1:=mainwindow.Memo1.Lines.Count-1; while count1>=0 do {update keyword} begin if pos(message_key,mainwindow.Memo1.Lines[count1])>0 then {found} begin mainwindow.Memo1.Lines[count1]:=message_key+'= '+message_value+' / '+message_comment; exit; end; count1:=count1-1; end; {not found, add to the end} mainwindow.memo1.lines.insert(mainwindow.Memo1.Lines.Count-1,message_key+'= '+message_value+' / '+message_comment); end {no history of comment keyword} else mainwindow.memo1.lines.insert(mainwindow.Memo1.Lines.Count-1,message_key+' '+message_value+message_comment); end; procedure update_text(inpt,comment1:string);{update or insert text in header} var count1,ll: integer; begin count1:=mainwindow.Memo1.Lines.Count-1; while count1>=0 do {update keyword} begin if pos(inpt,mainwindow.Memo1.Lines[count1])>0 then {found} begin mainwindow.Memo1.Lines[count1]:=inpt+' '+comment1;{text starting with char(39) should start at position 11 according FITS standard 4.0} ll:=length(inpt+' '+comment1); exit; end; count1:=count1-1; end; {not found, add to the end} mainwindow.memo1.lines.insert(mainwindow.Memo1.Lines.Count-1,inpt+' '+comment1); end; procedure update_longstr(inpt,thestr:string);{update or insert long str including single quotes} var count1,m,k: integer; ampersand : ansistring; begin count1:=mainwindow.Memo1.Lines.Count-1; while count1>=0 do {delete keyword} begin if pos(inpt,mainwindow.Memo1.Lines[count1])>0 then {found, delete old keyword} begin mainwindow.Memo1.Lines.delete(count1); while pos('CONTINUE=',mainwindow.Memo1.Lines[count1])>0 do mainwindow.Memo1.Lines.delete(count1); end; count1:=count1-1; end; {keyword removed, add new to the end} m:=length(thestr); if m>68 then begin {write as multi record} mainwindow.memo1.lines.insert(mainwindow.Memo1.Lines.Count-1,inpt+' '+#39+copy(thestr,1,67)+'&'+#39);{text starting with char(39) should start at position 11 according FITS standard 4.0} k:=68; repeat {write in blocks of 67 char} if (m-k)>67 then ampersand:='&' else ampersand:=''; mainwindow.memo1.lines.insert(mainwindow.Memo1.Lines.Count-1,'CONTINUE= '+#39+copy(thestr,k,67)+ampersand+#39);{text starting with char(39) should start at position 11 according FITS standard 4.0} inc(k,67); until k>=m; end else {write as single record} mainwindow.memo1.lines.insert(mainwindow.Memo1.Lines.Count-1,inpt+' '+#39+thestr+#39); end; procedure add_text(inpt,comment1:string);{add text to header memo} begin mainwindow.memo1.lines.insert(mainwindow.Memo1.Lines.Count-1,inpt+' '+copy(comment1,1,79-length(inpt))); {add to the end. Limit to 80 char max as specified by FITS standard} end; procedure add_long_comment(descrip:string);{add long text to header memo. Split description over several lines if required} var i,j :integer; begin i:=1 ; j:=length(descrip); while i<j do begin mainwindow.memo1.lines.insert(mainwindow.Memo1.Lines.Count-1,'COMMENT '+copy(descrip,I,72) ); {add to the end. Limit line length to 80} inc(i,72); end; end; procedure remove_key(inpt:string; all:boolean);{remove key word in header. If all=true then remove multiple of the same keyword} var count1: integer; begin count1:=mainwindow.Memo1.Lines.Count-1; while count1>=0 do {update keyword} begin if pos(inpt,mainwindow.Memo1.Lines[count1])>0 then {found} begin mainwindow.Memo1.Lines.delete(count1); if all=false then exit; end; count1:=count1-1; end; end; procedure progress_indicator(i:double; info:string);{0..100 is 0 to 100% indication of progress} begin if i<=-1 then begin if i=-101 then application.title:='🗙' else application.title:='ASTAP'; mainwindow.statusbar1.SimplePanel:=false; mainwindow.caption:=ExtractFileName(filename2); stackmenu1.caption:='stack menu'; end else begin application.title:=inttostr(round(i))+'%'+info;{show progress in taksbar} mainwindow.statusbar1.SimplePanel:=true; mainwindow.statusbar1.Simpletext:=inttostr(round(i))+'%'+info;{show progress in statusbar} stackmenu1.caption:=inttostr(round(i))+'%'+info;{show progress in stack menu} end; end; procedure ang_sep(ra1,dec1,ra2,dec2 : double;out sep: double);{calculates angular separation. according formula 9.1 old Meeus or 16.1 new Meeus, version 2018-5-23} var sin_dec1,cos_dec1,sin_dec2,cos_dec2,cos_sep:double; begin sincos(dec1,sin_dec1,cos_dec1);{use sincos function for speed} sincos(dec2,sin_dec2,cos_dec2); cos_sep:=min(1,sin_dec1*sin_dec2+ cos_dec1*cos_dec2*cos(ra1-ra2));{min function to prevent run time errors for 1.000000000002} sep:=arccos(cos_sep); end; function mode(img :image_array;colorm,xmin,xmax,ymin,ymax,max1 {maximum background expected}:integer):integer;{find the most common value of a local area and assume this is the best average background value} var i,j,val,value_count,width3,height3 :integer; histogram : array of integer; begin height3:=length(img[0,0]);{height} width3:=length(img[0]);{width} if xmin<0 then xmin:=0; if xmax>width3-1 then xmax:=width3-1; if ymin<0 then ymin:=0; if ymax>height3-1 then ymax:=height3-1; setlength(histogram,max1+1); for i := 0 to max1 do histogram[i] := 0;{clear histogram} for i:=ymin to ymax do begin for j:=xmin to xmax do begin val:=round(img[colorM,j,i]);{get one color value} if ((val>=1) and (val<max1)) then {ignore black areas and bright stars} inc(histogram[val],1);{calculate histogram} end;{j} end; {i} result:=0; {for case histogram is empthy due to black area} value_count:=0; for i := 1 to max1 do {get most common but ignore 0} begin val:=histogram[i]; if val>value_count then begin value_count:=val; {find most common in histogram} result:=i; end; end; histogram:=nil;{free mem} end; function get_negative_noise_level(img :image_array;colorm,xmin,xmax,ymin,ymax: integer;common_level:double): double;{find the negative noise level below most_common_level of a local area} var i,j,col,count_neg :integer; begin if xmin<0 then xmin:=0; if xmax>head.width-1 then xmax:=head.width-1; if ymin<0 then ymin:=0; if ymax>head.height-1 then ymax:=head.height-1; result:=0; count_neg:=0; For i:=ymin to ymax do begin for j:=xmin to xmax do begin col:=round(img[colorM,j,i]);{get one color value} if ((col>=1) and (col<=common_level)) then {ignore black areas } begin inc(count_neg); result:=result+sqr(col-common_level); end; end;{j} end; {i} if count_neg>=1 then result:=sqrt(result/count_neg) {sd of negative values, so without stars} else result:=0; end; procedure backup_img; begin if head.naxis<>0 then begin if img_backup=nil then setlength(img_backup,size_backup+1);{create memory for size_backup backup images} inc(index_backup,1); if index_backup>size_backup then index_backup:=0; img_backup[index_backup].head_val:=head; img_backup[index_backup].header:=mainwindow.Memo1.Text;{backup fits header} img_backup[index_backup].filen:=filename2;{backup filename} img_backup[index_backup].img:=img_loaded; setlength(img_backup[index_backup].img,head.naxis3,head.width,head.height);{this forces an duplication}{In dynamic arrays, the assignment statement duplicates only the reference to the array, while SetLength does the job of physically copying/duplicating it, leaving two separate, independent dynamic arrays.} mainwindow.Undo1.Enabled:=true; end; end; procedure restore_img; var resized :boolean; old_width2,old_height2 : integer; begin if mainwindow.Undo1.Enabled=true then begin if img_backup=nil then exit;{for some rare cases} Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } old_width2:=head.width; old_height2:=head.height; head:=img_backup[index_backup].head_val;{restore main header values} resized:=((head.width<>old_width2) or ( head.height<>old_height2)); mainwindow.Memo1.Text:=img_backup[index_backup].header;{restore fits header} filename2:=img_backup[index_backup].filen;{backup filename} mainwindow.caption:=filename2; //show old filename is case image was binned stackmenu1.test_pattern1.Enabled:=head.naxis3=1;{allow debayer if mono again} img_loaded:=img_backup[index_backup].img; {In dynamic arrays, the assignment statement duplicates only the reference to the array, while SetLength does the job of physically copying/duplicating it, leaving two separate, independent dynamic arrays.} setlength(img_loaded,head.naxis3,head.width,head.height);{force a duplication} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,resized,true);{restore image1} stackmenu1.apply_dpp_button1.Enabled:=true; update_equalise_background_step(equalise_background_step-1);{update equalize menu} if head.naxis=0 {due to stretch draw} then update_menu(true); {update menu and set fits_file:=true;} dec(index_backup,1);{update index} if index_backup<0 then index_backup:=size_backup; if img_backup[index_backup].img=nil then begin mainwindow.Undo1.Enabled:=false; //No more backups end else memo2_message('Restored backup index '+inttostr(index_backup)); Screen.Cursor:=crDefault; end; end; procedure Tmainwindow.About1Click(Sender: TObject); var about_message, about_message4, about_message5 : string; var {################# initialised variables #########################} {$IfDef Darwin}// {MacOS} about_title : string= 'About ASTAP for OSX:'; {$ELSE} {$IFDEF unix} about_title : string= 'About ASTAP for Linux:'; {$ELSE} about_title : string= 'About ASTAP for Windows:'; {$ENDIF} {$ENDIF} begin if sizeof(IntPtr) = 8 then about_message4:='64 bit' else about_message4:='32 bit'; {$IFDEF fpc} {$MACRO ON} {required for FPC_fullversion info} about_message5:='Build using Free Pascal compiler '+inttoStr(FPC_version)+'.'+inttoStr(FPC_RELEASE)+'.'+inttoStr(FPC_patch)+', Lazarus IDE '+lcl_version+', LCL widgetset '+ LCLPlatformDisplayNames[WidgetSet.LCLPlatform]+', Application path '+application_path; {$ELSE} {delphi} about_message5:=''; {$ENDIF} about_message:= 'ASTAP version '+astap_version+', '+about_message4+ #13+#10+ #13+#10+ #13+#10+ 'Astrometric Stacking Program, astrometric solver and FITS image viewer.'+ ' This program can view, measure, "astrometric solve" and stack deep sky images.'+ ' It uses an internal star matching routine or an internal astrometric solving routine for image alignment.'+ ' For RAW file conversion it uses the external programs Dcraw or LibRaw.'+ #13+#10+ #13+#10+about_message5+ #13+#10+ #13+#10+'Send an e-mail if you like this free program. Feel free to distribute!'+ #13+#10+ #13+#10+'© 2018, 2022 by Han Kleijn. License MPL 2.0, Webpage: www.hnsky.org'; application.messagebox(pchar(about_message), pchar(about_title),MB_OK); end; procedure Tmainwindow.FormKeyPress(Sender: TObject; var Key: char); begin {set form keypreview:=on} if key=#27 then begin esc_pressed:=true; memo2_message('ESC pressed. Stopped processing.'); if copy_paste then begin shape_paste1.visible:=false; copy_paste:=false; Screen.Cursor:=crDefault; end; end; end; procedure Tmainwindow.helponline1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm'); end; procedure update_recent_file_menu;{recent file menu update} begin if recent_files.count>=1 then begin mainwindow.recent1.visible:=true;mainwindow.recent1.caption:=recent_files[0];end else mainwindow.recent1.visible:=false; if recent_files.count>=2 then begin mainwindow.recent2.visible:=true;mainwindow.recent2.caption:=recent_files[1];end else mainwindow.recent2.visible:=false; if recent_files.count>=3 then begin mainwindow.recent3.visible:=true;mainwindow.recent3.caption:=recent_files[2];end else mainwindow.recent3.visible:=false; if recent_files.count>=4 then begin mainwindow.recent4.visible:=true;mainwindow.recent4.caption:=recent_files[3];end else mainwindow.recent4.visible:=false; if recent_files.count>=5 then begin mainwindow.recent5.visible:=true;mainwindow.recent5.caption:=recent_files[4];end else mainwindow.recent5.visible:=false; if recent_files.count>=6 then begin mainwindow.recent6.visible:=true;mainwindow.recent6.caption:=recent_files[5];end else mainwindow.recent6.visible:=false; if recent_files.count>=7 then begin mainwindow.recent7.visible:=true;mainwindow.recent7.caption:=recent_files[6];end else mainwindow.recent7.visible:=false; if recent_files.count>=8 then begin mainwindow.recent8.visible:=true;mainwindow.recent8.caption:=recent_files[7];end else mainwindow.recent8.visible:=false; end; procedure add_recent_file(f: string);{add to recent file list. if existing in list then update recent files list by moving this one up to first position} var i: integer; begin i:=0; while i<=recent_files.count-1 do {find if already in list} begin if f=recent_files[i] then begin recent_files.delete(i);i:=99; end; {delete entry and add at beginning later. So most recent first} inc(i) end; recent_files.insert(0,f);{latest file at beginning} if recent_files.count>8 then recent_files.delete(8); update_recent_file_menu; end; procedure Tmainwindow.Image1MouseEnter(Sender: TObject); begin mainwindow.caption:=filename2;{restore filename in caption} if mouse_enter=0 then mouse_enter:=1; end; procedure Tmainwindow.image_cleanup1Click(Sender: TObject); begin plot_fits(mainwindow.image1,false,true); end; procedure Tmainwindow.deepsky_overlay1Click(Sender: TObject); begin load_deep;{load the deepsky database once. If loaded no action} plot_deepsky; end; procedure bin_X2X3X4(binfactor:integer);{bin img_loaded 2x or 3x} var fitsX,fitsY,k, w,h : integer; img_temp2 : image_array; fact : string; begin binfactor:=min(4,binfactor);{max factor is 4} w:=trunc(head.width/binfactor); {half size & cropped. Use trunc for image 1391 pixels wide like M27 test image. Otherwise exception error} h:=trunc(head.height/binfactor); setlength(img_temp2,head.naxis3,w,h); if binfactor=2 then begin for k:=0 to head.naxis3-1 do for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin img_temp2[k,fitsX,fitsY]:=(img_loaded[k,fitsx*2,fitsY*2]+ img_loaded[k,fitsx*2 +1,fitsY*2]+ img_loaded[k,fitsx*2 ,fitsY*2+1]+ img_loaded[k,fitsx*2 +1,fitsY*2+1])/4; end; end else if binfactor=3 then begin {bin3x3} for k:=0 to head.naxis3-1 do for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin img_temp2[k,fitsX,fitsY]:=(img_loaded[k,fitsX*3 ,fitsY*3 ]+ img_loaded[k,fitsX*3 ,fitsY*3+1]+ img_loaded[k,fitsX*3 ,fitsY*3+2]+ img_loaded[k,fitsX*3 +1,fitsY*3 ]+ img_loaded[k,fitsX*3 +1,fitsY*3+1]+ img_loaded[k,fitsX*3 +1,fitsY*3+2]+ img_loaded[k,fitsX*3 +2,fitsY*3 ]+ img_loaded[k,fitsX*3 +2,fitsY*3+1]+ img_loaded[k,fitsX*3 +2,fitsY*3+2])/9; end; end else begin {bin4x4} for k:=0 to head.naxis3-1 do for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin img_temp2[k,fitsX,fitsY]:=(img_loaded[k,fitsX*4 ,fitsY*4 ]+ img_loaded[k,fitsX*4 ,fitsY*4+1]+ img_loaded[k,fitsX*4 ,fitsY*4+2]+ img_loaded[k,fitsX*4 ,fitsY*4+3]+ img_loaded[k,fitsX*4 +1,fitsY*4 ]+ img_loaded[k,fitsX*4 +1,fitsY*4+1]+ img_loaded[k,fitsX*4 +1,fitsY*4+2]+ img_loaded[k,fitsX*4 +1,fitsY*4+3]+ img_loaded[k,fitsX*4 +2,fitsY*4 ]+ img_loaded[k,fitsX*4 +2,fitsY*4+1]+ img_loaded[k,fitsX*4 +2,fitsY*4+2]+ img_loaded[k,fitsX*4 +2,fitsY*4+3]+ img_loaded[k,fitsX*4 +3,fitsY*4 ]+ img_loaded[k,fitsX*4 +3,fitsY*4+1]+ img_loaded[k,fitsX*4 +3,fitsY*4+2]+ img_loaded[k,fitsX*4 +3,fitsY*4+3])/16; end; end; img_loaded:=img_temp2; head.width:=w; head.height:=h; img_temp2:=nil; update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); if head.crpix1<>0 then begin head.crpix1:=head.crpix1/binfactor; update_float ('CRPIX1 =',' / X of reference pixel ' ,head.crpix1);end; if head.crpix2<>0 then begin head.crpix2:=head.crpix2/binfactor; update_float ('CRPIX2 =',' / Y of reference pixel ' ,head.crpix2);end; if head.cdelt1<>0 then begin head.cdelt1:=head.cdelt1*binfactor; update_float ('CDELT1 =',' / X pixel size (deg) ' ,head.cdelt1);end; if head.cdelt2<>0 then begin head.cdelt2:=head.cdelt2*binfactor; update_float ('CDELT2 =',' / Y pixel size (deg) ' ,head.cdelt2);end; if head.cd1_1<>0 then begin head.cd1_1:=head.cd1_1*binfactor; head.cd1_2:=head.cd1_2*binfactor; head.cd2_1:=head.cd2_1*binfactor; head.cd2_2:=head.cd2_2*binfactor; update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_2); end; head.XBINNING:=head.XBINNING*binfactor; head.YBINNING:=head.YBINNING*binfactor; update_integer('XBINNING=',' / Binning factor in width ' ,round(head.XBINNING)); update_integer('YBINNING=',' / Binning factor in height ' ,round(head.yBINNING)); if head.XPIXSZ<>0 then begin head.XPIXSZ:=head.XPIXSZ*binfactor; head.YPIXSZ:=head.YPIXSZ*binfactor; update_float('XPIXSZ =',' / Pixel width in microns (after binning) ' ,head.XPIXSZ); update_float('YPIXSZ =',' / Pixel height in microns (after binning) ' ,head.YPIXSZ); update_float('PIXSIZE1=',' / Pixel width in microns (after binning) ' ,head.XPIXSZ); update_float('PIXSIZE2=',' / Pixel height in microns (after binning) ' ,head.YPIXSZ); end; fact:=inttostr(binfactor); fact:=fact+'x'+fact; add_text ('HISTORY ','BIN'+fact+' version of '+filename2); end; function binX2X3_file(binfactor:integer) : boolean; {converts filename2 to binx2 or bin3 version} begin result:=false; if load_fits(filename2,true {light},true {load data},true {update memo},0,head,img_loaded)=false then exit; bin_X2X3X4(binfactor);{bin img_loaded 2x or 3x} if fits_file_name(filename2) then begin if binfactor=2 then filename2:=ChangeFileExt(Filename2,'_bin2x2.fit') else filename2:=ChangeFileExt(Filename2,'_bin3x3.fit'); result:=save_fits(img_loaded,filename2,nrbits,true) end else begin if binfactor=2 then filename2:=ChangeFileExt(Filename2,'_bin2x2.tif') else filename2:=ChangeFileExt(Filename2,'_bin3x3.tif'); result:=save_tiff16(img_loaded,filename2,false {flip H},false {flip V}); end; end; procedure Tmainwindow.bin2x2Click(Sender: TObject); var I, binfactor : integer; dobackup : boolean; begin if sender=bin2x2 then begin OpenDialog1.Title := 'Select multiple files to reduce in size (bin2x2)'; binfactor:=2; end else begin OpenDialog1.Title := 'Select multiple files to reduce in size (bin3x3)'; binfactor:=3; end; OpenDialog1.Options:= [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter:=dialog_filter_fits_tif; esc_pressed:=false; if OpenDialog1.Execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } dobackup:=img_loaded<>nil; if dobackup then backup_img;{preserve img array and fits header of the viewer} try { Do some lengthy operation } with OpenDialog1.Files do for I := 0 to Count - 1 do begin filename2:=Strings[I]; {load fits} Application.ProcessMessages; if ((esc_pressed) or (binX2X3_file(binfactor)=false) {do the binning}) then break; end; finally if dobackup then restore_img;{for the viewer} Screen.Cursor:=crDefault; { Always restore to normal } end; end; end; procedure Tmainwindow.max2EditingDone(Sender: TObject); var edit_value: integer; histo_update : boolean; begin edit_value:=min(max(round(strtofloat2(max2.text)),0),65535);{updown in FPC has a maximum of 32767, so not usable} if edit_value<>maximum1.Position then {value has reallly changed} begin histo_update:=(edit_value>maximum1.max); {histogram update required} if histo_update then maximum1.max:=round(edit_value);{update maximum1..max to allow storing the edit value in maximum1.position} maximum1.Position:=edit_value; mainwindow.range1.itemindex:=7; {manual} if histo_update then {redraw histogram with new range} use_histogram(img_loaded,false {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false,true); end; end; procedure Tmainwindow.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin mainwindow.caption:='Position '+ inttostr(tmemo(sender).CaretPos.y)+':'+inttostr(tmemo(sender).CaretPos.x); statusbar1.SimplePanel:=true; statusbar1.Simpletext:=mainwindow.caption; end; procedure Tmainwindow.localgaussian1Click(Sender: TObject); var fitsX,fitsY,dum,k : integer; begin if head.naxis=0 then exit; if ((abs(stopX-startX)>2)and (abs(stopY-starty)>2)) then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; if startX>stopX then begin dum:=stopX; stopX:=startX; startX:=dum; end;{swap} if startY>stopY then begin dum:=stopY; stopY:=startY; startY:=dum; end; setlength(img_temp,head.naxis3,stopX-startX,stopY-startY); for k:=0 to head.naxis3-1 do {do all colors} begin for fitsY:=startY to stopY-1 do for fitsX:=startX to stopX-1 do begin begin img_temp[k,fitsX-startX,fitsY-startY]:=img_loaded[k,fitsX,fitsY];{copy the area of interest to img_temp} end; end; end;{k color} gaussian_blur2(img_temp,strtofloat2(stackmenu1.blur_factor1.text)); for k:=0 to head.naxis3-1 do {do all colors} begin for fitsY:=startY to stopY-1 do for fitsX:=startX to stopX-1 do begin begin img_loaded[k,fitsX,fitsY]:=img_temp[k,fitsX-startX,fitsY-startY];{copy the area of interest back} end; end; end;{k color} img_temp:=nil;{clean memory} plot_fits(mainwindow.image1,false,true); Screen.Cursor:=crDefault; end{fits file} else application.messagebox(pchar('No area selected! Hold the right mouse button down while selecting an area.'),'',MB_OK); end; function test_star_spectrum(r,g,b: single) : single;{test star spectrum. Result of zero is perfect star spectrum} var RdivG :single; {excel polynom fit based on data from http://www.vendian.org/mncharity/dir3/blackbody/UnstableURLs/bbr_color.html} begin {range 2000 till 20000k} if ((b<($12/$FF)*r) or (b>($FF/$AD)*r)) then {too red or too blue} begin result:=1; exit; end; if ((r<=1) or (g<=1) or (b<=1)) then begin result:=0; exit; end; RdivG:=r/g; result:=abs((b/g)-(0.6427*sqr(RdivG)-2.868*RdivG+3.3035)); end; procedure Tmainwindow.hyperleda_annotation1Click(Sender: TObject); begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor } // backup_img; load_hyperleda; { Load the database once. If loaded no action} plot_deepsky;{plot the deep sky object on the image} Screen.Cursor:=crDefault; end; function extract_objectname_from_filename(filename8: string): string; {try to extract head.exposure from filename} var i : integer; begin {try to reconstruct object name from filename} result:=''; filename8:=uppercase(extractfilename(filename8)); i:=pos('NGC',filename8); if i>0 then begin result:='NGC'; i:=i+3; end; if i=0 then begin i:=pos('IC',filename8); if i>0 then begin result:='IC'; i:=i+2; end; end; if i=0 then begin i:=pos('SH2-',filename8); if i>0 then begin result:='SH2-'; i:=i+4; end; end; if i=0 then begin i:=pos('PGC',filename8); if i>0 then begin result:='PGC'; i:=i+3; end; end; if i=0 then begin i:=pos('UGC',filename8); if i>0 then begin result:='UGC'; i:=i+3; end; end; if i=0 then begin i:=pos('M',filename8); if i>0 then begin result:='M'; i:=i+1; end; end; if i>0 then begin if filename8[i]=' ' then inc(i);{skip first space} while filename8[i] in ['0','1','2','3','4','5','6','7','8','9'] do begin if filename8[i]<>' ' then result:=result+filename8[i]; inc(i); end end; end; procedure Tmainwindow.clean_up1Click(Sender: TObject); begin plot_fits(mainwindow.image1,false,true); end; procedure Tmainwindow.remove_colour1Click(Sender: TObject);{make local area grayscale} var fitsX,fitsY,dum : integer; val : single; center_x,center_y,a,b,angle_from_center,mean_value,old_value : double; begin if ((head.naxis3<>3) or (head.naxis=0)) then exit; if ((abs(stopX-startX)>2)and (abs(stopY-starty)>2)) then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; center_x:=(startx+stopX-1)/2; center_y:=(startY+stopY-1)/2; a:=(stopX-1-startx)/2; b:=(stopY-1-startY)/2; if startX>stopX then begin dum:=stopX; stopX:=startX; startX:=dum; end;{swap} if startY>stopY then begin dum:=stopY; stopY:=startY; startY:=dum; end; for fitsY:=startY to stopY-1 do for fitsX:=startX to stopX-1 do begin angle_from_center:=arctan(abs(fitsy-center_Y)/max(1,abs(fitsX-center_X))); if sqr(fitsX-center_X)+sqr(fitsY-center_Y) <= sqr(a*cos(angle_from_center))+ sqr(b*sin(angle_from_center)) then {within the ellipse} begin val:=(img_loaded[0,fitsX,fitsY]+img_loaded[1,fitsX,fitsY]+img_loaded[2,fitsX,fitsY])/3; img_loaded[0,fitsX,fitsY]:=val; img_loaded[1,fitsX,fitsY]:=val; img_loaded[2,fitsX,fitsY]:=val; end; end; plot_fits(mainwindow.image1,false,true); Screen.Cursor:=crDefault; end{fits file} else application.messagebox(pchar('No area selected! Hold the right mouse button down while selecting an area.'),'',MB_OK); end; procedure Tmainwindow.Returntodefaultsettings1Click(Sender: TObject); begin if (IDYES= Application.MessageBox('This will set all ASTAP settings to default and close the program. Are you sure?', 'Default settings?', MB_ICONQUESTION + MB_YESNO) ) then begin if deletefile(user_path+'astap.cfg') then begin halt(0); {don't save only do mainwindow.destroy. Note mainwindow.close will save the setting again, so don't use} end else beep; end; end; procedure celestial_to_pixel(ra_t,dec_t: double; out fitsX,fitsY: double);{ra,dec to fitsX,fitsY} var SIN_dec_t,COS_dec_t, SIN_dec_ref,COS_dec_ref,det, delta_ra,SIN_delta_ra,COS_delta_ra, H, dRa,dDec,u0,v0 : double; begin {5. Conversion (RA,DEC) -> (x,y) of reference image} sincos(dec_t,SIN_dec_t,COS_dec_t);{sincos is faster then separate sin and cos functions} sincos(head.dec0,SIN_dec_ref,COS_dec_ref);{} delta_ra:=ra_t-head.ra0; sincos(delta_ra,SIN_delta_ra,COS_delta_ra); H := SIN_dec_t*sin_dec_ref + COS_dec_t*COS_dec_ref*COS_delta_ra; dRA := (COS_dec_t*SIN_delta_ra / H)*180/pi; dDEC:= ((SIN_dec_t*COS_dec_ref - COS_dec_t*SIN_dec_ref*COS_delta_ra ) / H)*180/pi; det:=head.cd2_2*head.cd1_1 - head.cd1_2*head.cd2_1; u0:= - (head.cd1_2*dDEC - head.cd2_2*dRA) / det; v0:= + (head.cd1_1*dDEC - head.cd2_1*dRA) / det; if sip then {apply SIP correction, sky to pixel} begin fitsX:=(head.crpix1 + u0 + ap_0_0 + ap_0_1*v0+ ap_0_2*v0*v0+ ap_0_3*v0*v0*v0 +ap_1_0*u0 + ap_1_1*u0*v0+ ap_1_2*u0*v0*v0+ ap_2_0*u0*u0 + ap_2_1*u0*u0*v0+ ap_3_0*u0*u0*u0); {3th order SIP correction, fits count from 1, image from zero therefore subtract 1} fitsY:=(head.crpix2 + v0 + bp_0_0 + bp_0_1*v0+ bp_0_2*v0*v0+ bp_0_3*v0*v0*v0 +bp_1_0*u0 + bp_1_1*u0*v0+ bp_1_2*u0*v0*v0+ bp_2_0*u0*u0 + bp_2_1*u0*u0*v0+ bp_3_0*u0*u0*u0); {3th order SIP correction} end else begin fitsX:=head.crpix1 + u0; {in fits range 1..width} fitsY:=head.crpix2 + v0; end; end; function decode_string(data0: string; out ra4,dec4 : double):boolean;{convert a string to position} var error1,error2,degrees : boolean; data1,ra_text,dec_text : string; pos1,pos2,pos3,pos4,pos5,pos6,i :integer; begin {Simbad sirius 06 45 08.917 -16 42 58.02 } {Orion 5h 35.4m; Declination_symbol1: 5o 27′ south } {http://www.rochesterastronomy.org/supernova.html#2020ue R.A. = 00h52m33s.814, Decl. = +80°39'37".93 } result:=false; {assume failure} data0:=uppercase(data0); degrees:=pos('D',data0)>0;{degrees ?} data0:=StringReplace(data0,'S.','.',[]); {for 00h52m33s.814} data0:=StringReplace(data0,'".','.',[]); {for +80°39'37".93} data0:=StringReplace(data0,'R.A.','',[]); {remove dots from ra} data0:=StringReplace(data0,'DECL.','',[]);{remove dots from decl} if ((data0='c') or (data0='C')) then {place marker in middle} begin sensor_coordinates_to_celestial((head.width+1)/2,(head.height+1)/2,ra4,dec4);{calculate the center position also for solutions with the reference pixel somewhere else} error1:=false; error2:=false; data1:='Center image '; {for hint} end else begin data1:=''; for I := 1 to length(data0) do begin if (((ord(data0[i])>=48) and (ord(data0[i])<=57)) or (data0[i]='.') or (data0[i]='-')) then data1:=data1+data0[i] else data1:=data1+' ';{replace all char by space except for numbers and dot} end; repeat {remove all double spaces} i:=pos(' ',data1); if i>0 then delete(data1,i,1); until i=0; while ((length(data1)>=1) and (data1[1]=' ')) do {remove spaces in the front for pos1 detectie} delete(data1,1,1); while ((length(data1)>=1) and (data1[length(data1)]=' ')) do {remove spaces in the end since VAL( can't cope with them} delete(data1,length(data1),1); pos1:=pos(' ',data1); if pos1=0 then exit; pos2:=posEX(' ',data1,pos1+1); if pos2=0 then pos2:=length(data1)+1; pos3:=posEX(' ',data1,pos2+1); if pos3=0 then pos3:=length(data1)+1; pos4:=posEX(' ',data1,pos3+1); if pos4=0 then pos4:=length(data1)+1; pos5:=posEX(' ',data1,pos4+1); if pos5=0 then pos5:=length(data1)+1; pos6:=posEX(' ',data1,pos5+1); if pos6=0 then pos6:=length(data1)+1; if pos5<>pos6 then {6 string position} begin ra_text:=copy(data1,1, pos3); dec_text:=copy(data1,pos3+1,99); end else if pos3<>pos4 then {4 string position} begin {4 string position} ra_text:=copy(data1,1, pos2); dec_text:=copy(data1,pos2+1,99); end else begin {2 string position} ra_text:=copy(data1,1, pos1); if degrees then ra_text:='D'+ra_text;{convert it as degrees} dec_text:=copy(data1,pos1+1,99); end; ra_text_to_radians ( ra_text ,ra4,error1); {convert ra text to head.ra0 in radians} dec_text_to_radians( dec_text ,dec4,error2); {convert dec text to head.dec0 in radians} end; result:=((error1=false) and (error2=false)); end; function place_marker_radec(data0: string): boolean;{place ra,dec marker in image} var ra_new,dec_new, fitsx,fitsy : double; data1,sipwcs : string; begin if ((head.naxis=0) or (head.cd1_1=0) or (mainwindow.shape_marker3.visible=false)) then exit;{no solution to place marker} if decode_string(data0,ra_new,dec_new) then begin result:=true; celestial_to_pixel(ra_new,dec_new, fitsX,fitsY); {ra,dec to fitsX,fitsY} shape_marker3_fitsX:=fitsX; shape_marker3_fitsY:=fitsY; show_marker_shape(mainwindow.shape_marker3,0 {rectangle},20,20,10,shape_marker3_fitsX, shape_marker3_fitsY); if sip then sipwcs:='SIP' else sipwcs:='WCS'; mainwindow.shape_marker3.hint:=data1+#10+sipwcs+' x='+floattostrF(shape_marker3_fitsX,ffFixed,0,1)+' y='+ floattostrF(shape_marker3_fitsY,ffFixed,0,1); ; end else begin mainwindow.shape_marker3.visible:=false; result:=false; beep; exit; end; end; procedure plot_north;{draw arrow north. If head.cd1_1=0 then clear north arrow} const xpos=25;{position arrow} ypos=25; leng=24;{half of length} var dra,ddec, cdelt1_a, det,x,y :double; flipV, flipH : integer; begin with mainwindow.image_north_arrow1 do begin {clear} canvas.brush.color:=clmenu; Canvas.FillRect(rect(0,0,width,height)); if ((head.naxis=0) or (head.cd1_1=0)) then {remove rotation indication and exit} begin mainwindow.rotation1.caption:=''; exit; end; mainwindow.rotation1.caption:=floattostrf(head.crota2, FFfixed, 0, 2)+'°';{show rotation} Canvas.Pen.Color := clred; if mainwindow.flip_horizontal1.checked then flipH:=-1 else flipH:=+1; if mainwindow.flip_vertical1.checked then flipV:=-1 else flipV:=+1; cdelt1_a:=sqrt(head.cd1_1*head.cd1_1+head.cd1_2*head.cd1_2);{length of one pixel step to the north} moveToex(Canvas.handle,round(xpos),round(ypos),nil); det:=head.cd2_2*head.cd1_1-head.cd1_2*head.cd2_1;{this result can be negative !!} dRa:=0; dDec:=cdelt1_a*leng; x := (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y := (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow line} dRa:=cdelt1_a*-3; dDec:=cdelt1_a*(leng-5); x := (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y := (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow pointer} dRa:=cdelt1_a*+3; dDec:=cdelt1_a*(leng-5); x := (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y := (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow pointer} dRa:=0; dDec:=cdelt1_a*leng; x := (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y := (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow pointer} moveToex(Canvas.handle,round(xpos),round(ypos),nil);{east pointer} dRa:= cdelt1_a*leng/3; dDec:=0; x := (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y := (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {east pointer} end; end; procedure plot_north_on_image;{draw arrow north. If head.cd1_1=0 then clear north arrow} var dra,ddec, cdelt1_a, det,x,y :double; xpos, ypos, {position arrow} leng, {half of length} wd, flipV, flipH : integer; begin if ((head.naxis=0) or (head.cd1_1=0) or (mainwindow.northeast1.checked=false)) then exit; xpos:=head.height div 50; ypos:=head.height div 50; leng:=head.height div 50; wd:=max(1,head.height div 1000); mainwindow.image1.canvas.Pen.Color := clred; mainwindow.image1.canvas.Pen.width := wd; if mainwindow.flip_horizontal1.checked then flipH:=-1 else flipH:=+1; if mainwindow.flip_vertical1.checked then flipV:=-1 else flipV:=+1; cdelt1_a:=sqrt(head.cd1_1*head.cd1_1+head.cd1_2*head.cd1_2);{length of one pixel step to the north} moveToex(mainwindow.image1.Canvas.handle,round(xpos),round(ypos),nil); det:=head.cd2_2*head.cd1_1-head.cd1_2*head.cd2_1;{this result can be negative !!} dRa:=0; dDec:=cdelt1_a*leng; x := (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y := (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(mainwindow.image1.Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow line} dRa:=cdelt1_a*-3*wd; dDec:=cdelt1_a*(leng-5*wd); x := (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y := (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(mainwindow.image1.Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow pointer} dRa:=cdelt1_a*+3*wd; dDec:=cdelt1_a*(leng-5*wd); x := (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y := (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(mainwindow.image1.Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow pointer} dRa:=0; dDec:=cdelt1_a*leng; x := (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y := (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(mainwindow.image1.Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow pointer} moveToex(mainwindow.image1.Canvas.handle,round(xpos),round(ypos),nil);{east pointer} dRa:= cdelt1_a*leng/3; dDec:=0; x := (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y := (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(mainwindow.image1.Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {east pointer} end; procedure plot_mount; {plot star where mount is} var fitsX,fitsY: double; begin if ra_mount<99 then {ra mount was specified} begin celestial_to_pixel(ra_mount,dec_mount, fitsX,fitsY);{ra,dec to fitsX,fitsY} shape_marker4_fitsX:=FITSX; shape_marker4_fitsY:=FITSY; show_marker_shape(mainwindow.shape_marker4,2 {activate},60,60,30{minimum},shape_marker4_fitsX, shape_marker4_fitsY); end; end; procedure plot_large_north_indicator;{draw arrow north. If head.cd1_1=0 then clear north arrow} var dra,ddec,cdelt1_a, det,x,y, xpos, ypos :double; leng, {half of length} wd,i,j, flipV, flipH : integer; begin {clear} if ((head.naxis=0) or (head.cd1_1=0) or (mainwindow.mountposition1.checked=false)) then begin mainwindow.shape_marker4.visible:=false;{could be visible from previous image} exit; end; mainwindow.image1.canvas.Pen.Color := clred; xpos:=-1+(head.width+1)/2;{fits coordinates -1} ypos:=-1+(head.height+1)/2; leng:=head.height div 3; wd:=max(2,head.height div 700); mainwindow.image1.canvas.Pen.width := wd; if mainwindow.flip_horizontal1.checked then flipH:=-1 else flipH:=+1; if mainwindow.flip_vertical1.checked then flipV:=-1 else flipV:=+1; cdelt1_a:=sqrt(head.cd1_1*head.cd1_1+head.cd1_2*head.cd1_2);{length of one pixel step to the north} moveToex(mainwindow.image1.Canvas.handle,round(xpos),round(ypos),nil); det:=head.cd2_2*head.cd1_1-head.cd1_2*head.cd2_1;{this result can be negative !!} dRa:=0; dDec:=cdelt1_a*leng; x :=-1+(head.cd1_2*dDEC - head.cd2_2*dRA) / det; y :=-1+ (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(mainwindow.image1.Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow line} dRa:=cdelt1_a*-6*wd; dDec:=cdelt1_a*(leng-10*wd); x :=-1+ (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y :=-1+ (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(mainwindow.image1.Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow pointer} dRa:=cdelt1_a*+6*wd; dDec:=cdelt1_a*(leng-10*wd); x :=-1+ (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y :=-1+ (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(mainwindow.image1.Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow pointer} dRa:=0; dDec:=cdelt1_a*leng; x :=-1+ (head.cd1_2*dDEC - head.cd2_2*dRA) / det; y :=-1+ (head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(mainwindow.image1.Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {arrow pointer} moveToex(mainwindow.image1.Canvas.handle,round(xpos),round(ypos),nil);{east pointer} mainwindow.histogram1.canvas.rectangle(-1,-1, mainwindow.histogram1.width+1, mainwindow.histogram1.height+1); // mainwindow.image1.Canvas.arc(round(xpos)-size,round(ypos)-size,round(xpos)+size,round(ypos)+size, // round(xpos)-size,round(ypos)-size,round(xpos)-size,round(ypos)-size);{draw empty circel without changing background . That means do not cover moon with hyades} dRa:= cdelt1_a*leng/3; dDec:=0; x := -1+(head.cd1_2*dDEC - head.cd2_2*dRA) / det; y := -1+(head.cd1_1*dDEC - head.cd2_1*dRA) / det; lineTo(mainwindow.image1.Canvas.handle,round(xpos-x*flipH),round(ypos-y*flipV)); {east pointer} for i:= trunc(xpos-1) to round(xpos+1.00001) do for j:= trunc(ypos-1) to round(ypos+1.00001) do mainwindow.image1.Canvas.pixels[i,j]:=cllime; {perfect center indication} plot_mount; end; procedure plot_text; var fontsize: double; posanddate, freet : boolean; begin posanddate:=mainwindow.positionanddate1.checked; freet:=mainwindow.freetext1.checked; if ((head.naxis=0) or ((posanddate=false) and (freet=false))) then exit; mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.font.name:='default'; fontsize:=max(annotation_diameter,font_size); mainwindow.image1.Canvas.font.size:=round(fontsize); mainwindow.image1.Canvas.font.color:=annotation_color; {default clyellow} if posanddate then begin if head.cd1_1<>0 then mainwindow.image1.Canvas.textout(round(0.5*fontsize),head.height-round(4*fontsize),'Position[α,δ]: '+mainwindow.ra1.text+' '+mainwindow.dec1.text);{} if date_avg<>'' then date_to_jd(date_avg,0 {head.exposure}){convert date-AVG to jd_mid be using head.exposure=0} else date_to_jd(head.date_obs,head.exposure);{convert date-OBS to jd_start and jd_mid} mainwindow.image1.Canvas.textout(round(0.5*fontsize),head.height-round(2*fontsize),'Midpoint date: '+JdToDate(jd_mid)+', total exp: '+inttostr(round(head.exposure))+'s');{} end; if ((freet) and (freetext<>'')) then mainwindow.image1.Canvas.textout(head.width -round(fontsize) -mainwindow.image1.canvas.textwidth(freetext),head.height-round(2*fontsize),freetext);{right bottom corner, right aligned} end; procedure plot_constellations; var fitsX,fitsY,overshoot, ra2,dec2,sep : double; x1,y1,dia : integer; flip_horizontal, flip_vertical,outside: boolean; begin if ((head.naxis=0) or (head.cd1_1=0) or (mainwindow.constellations1.checked=false)) then exit; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } {$ifdef mswindows} mainwindow.image1.Canvas.Font.Name :='default'; {$endif} {$ifdef linux} mainwindow.image1.Canvas.Font.Name :='DejaVu Sans'; {$endif} {$ifdef darwin} {MacOS} mainwindow.image1.Canvas.Font.Name :='Helvetica'; {$endif} flip_vertical:=mainwindow.flip_vertical1.Checked; flip_horizontal:=mainwindow.flip_horizontal1.Checked; mainwindow.image1.Canvas.Pen.Mode:= pmXor; mainwindow.image1.Canvas.Pen.width :=max(1, head.height div 1000); mainwindow.image1.Canvas.Pen.color:= $009000; mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.font.color:= clgray; mainwindow.image1.Canvas.font.size:=max(8,head.height div 120); for dia:=0 to length(constpos)-1 do {constellations abreviations} begin ra2:=constpos[dia,0]*pi/12000; dec2:=constpos[dia,1]*pi/18000; ang_sep(ra2,dec2,head.ra0,head.dec0, sep); if sep<pi*0.6 then begin celestial_to_pixel(ra2,dec2, fitsX,fitsY);{ra,dec to fitsX,fitsY} if ((fitsx>0) and (fitsx<head.width) and (fitsy>0) and (fitsy<head.height)) then {within screen} begin if flip_horizontal then x1:=round((head.width-1)-(fitsX-1)) else x1:=round(fitsX-1); if flip_vertical=false then y1:=round((head.height-1)-(fitsY-1)) else y1:=round(fitsY-1); mainwindow.image1.Canvas.textout(x1,y1,Constshortname[dia]); end; end; end; overshoot:=head.height; outside:=true; for dia:=0 to length(constellation)-1 {602} do {constellations} begin ra2:=constellation[dia].ra*pi/12000; dec2:=constellation[dia].dec*pi/18000; ang_sep(ra2,dec2,head.ra0,head.dec0, sep); if sep<pi*0.6 then begin celestial_to_pixel(ra2,dec2, fitsX,fitsY);{ra,dec to fitsX,fitsY} if ((fitsx>-overshoot) and (fitsx<head.width+overshoot) and (fitsy>-overshoot) and (fitsy<head.height+overshoot)) then {within screen} begin if flip_horizontal then x1:=round((head.width-1)-(fitsX-1)) else x1:=round(fitsX-1); if flip_vertical=false then y1:=round((head.height-1)-(fitsY-1)) else y1:=round(fitsY-1); if ((constellation[dia].dm=-2) or (outside)) then mainwindow.image1.Canvas.moveto(x1,y1) else mainwindow.image1.Canvas.lineto(x1,y1); TextOut(mainwindow.image1.Canvas.handle, x1,y1, constellation[dia].bay,length(constellation[dia].bay) );{do not use here dc.textout since it will move position} outside:=false; end else outside:=true; end; end; Screen.Cursor:=crDefault; { Restore cursor} end; procedure plot_grid; var fitsX,fitsY,step,step2,stepRA,i,j,centra,centdec,range : double; x1,y1,x2,y2,k : integer; flip_horizontal, flip_vertical: boolean; ra_text: string; var ra_values : array[0..20] of double = {nice rounded RA steps in 24 hr system} ((45),{step RA 03:00} (30),{step RA 02:00} (15),{step RA 01:00} (10),{step RA 00:40} (7.5),{step RA 00:30} (5),{step RA 00:20} (3.75),{step RA 00:15} (2.5),{step RA 00:10} (1.5),{step RA 00:06} (1.25),{step RA 00:05} (1),{step RA 00:04} (3/4),{step RA 00:03} (1/2),{step RA 00:02} (1/4),{step RA 00:01} (1/6),{step RA 00:00:40} (1/8),{step RA 00:00:30} (1/12),{step RA 00:00:20} (1/16),{step RA 00:00:15} (1/24),{step RA 00:00:10} (1/40),{step RA 00:00:06} (1/48));{step RA 00:00:05} begin if ((head.naxis=0) or (head.cd1_1=0) or (mainwindow.grid1.checked=false)) then exit; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } {$ifdef mswindows} mainwindow.image1.Canvas.Font.Name :='default'; {$endif} {$ifdef linux} mainwindow.image1.Canvas.Font.Name :='DejaVu Sans'; {$endif} {$ifdef darwin} {MacOS} mainwindow.image1.Canvas.Font.Name :='Helvetica'; {$endif} flip_vertical:=mainwindow.flip_vertical1.Checked; flip_horizontal:=mainwindow.flip_horizontal1.Checked; mainwindow.image1.Canvas.Pen.Mode:= pmXor; mainwindow.image1.Canvas.Pen.width :=max(1,round(head.height/mainwindow.image1.height)); mainwindow.image1.Canvas.Pen.color:= $909000; mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.font.color:= clgray; mainwindow.image1.Canvas.font.size:=8; range:=head.cdelt2*sqrt(sqr(head.width/2)+sqr(head.height/2));{range in degrees, FROM CENTER} {calculate DEC step size} if range>16 then begin step:=8;{step DEC 08:00} end else if range>8 then begin step:=4;{step DEC 04:00} end else if range>4 then {image FOV about >2*4/sqrt(2) so >5 degrees} begin step:=2;{step DEC 02:00} end else if range>2 then begin step:=1;{step DEC 01:00} end else if range>1 then begin step:=0.5;{step DEC 00:30} end else if range>0.5 then begin step:=0.25;{step DEC 00:15} end else if range>0.3 then begin step:=1/6;{ 0.166666, step DEC 00:10} end else begin step:=1/12;{step DEC 00:05 } end; {calculate RA step size} step2:=min(45,step/(cos(head.dec0)+0.000001)); {exact value for stepRA, but not well rounded} k:=0; repeat {select nice rounded values for ra_step} stepRA:=ra_values[k]; inc(k); until ((stepRA<=step2) or (k>=length(ra_values)));{repeat until comparible value is found in ra_values} {round image centers} centra:=stepRA*round(head.ra0*180/(pi*stepRA)); {rounded image centers} centdec:=step*round(head.dec0*180/(pi*step)); {plot DEC grid} i:=centRA-6*stepRA; repeat{dec lines} j:=max(centDEC-6*step,-90); repeat celestial_to_pixel(i*pi/180,j*pi/180, fitsX,fitsY);{ra,dec to fitsX,fitsY} if flip_horizontal then x1:=round((head.width-1)-(fitsX-1)) else x1:=round(fitsX-1); if flip_vertical=false then y1:=round((head.height-1)-(fitsY-1)) else y1:=round(fitsY-1); celestial_to_pixel(i*pi/180,(j+step)*pi/180, fitsX,fitsY);{ra,dec to fitsX,fitsY} if flip_horizontal then x2:=round((head.width-1)-(fitsX-1)) else x2:=round(fitsX-1); if flip_vertical=false then y2:=round((head.height-1)-(fitsY-1)) else y2:=round(fitsY-1); if ( ((x1>=0) and (y1>=0) and (x1<head.width)and (y1<head.height)) or ((x2>=0) and (y2>=0) and (x2<head.width)and (y2<head.height)) ) then begin {line is partly within image1. Strictly not necessary but more secure} if ((abs(i-centRA)<0.00001) or (abs(j-centDEC)<0.00001)) then begin ra_text:=prepare_ra6(fnmodulo(i,360)*pi/180,' '); {24 00 00} if copy(ra_text,7,2)='00' then delete(ra_text,6,3);{remove 00} mainwindow.image1.Canvas.textout(x1,y1,ra_text+','+prepare_dec4(j*pi/180,' ')); end; mainwindow.image1.Canvas.moveto(x1,y1); mainwindow.image1.Canvas.lineto(x2,y2); end; j:=j+step; until j>=min(centDEC+6*step,90); i:=i+stepRA; until ((i>=centRa+6*stepRA) or (i>=(centRA-6*stepRA)+360)); {plot RA grid} j:=max(centDEC-step*6,-90); repeat{ra lines} i:=centRA-stepRA*6; repeat celestial_to_pixel(i*pi/180,j*pi/180, fitsX,fitsY);{ra,dec to fitsX,fitsY} if flip_horizontal then x1:=round((head.width-1)-(fitsX-1)) else x1:=round(fitsX-1); if flip_vertical=false then y1:=round((head.height-1)-(fitsY-1)) else y1:=round(fitsY-1); celestial_to_pixel((i+step)*pi/180,j*pi/180, fitsX,fitsY);{ra,dec to fitsX,fitsY} if flip_horizontal then x2:=round((head.width-1)-(fitsX-1)) else x2:=round(fitsX-1); if flip_vertical=false then y2:=round((head.height-1)-(fitsY-1)) else y2:=round(fitsY-1); if ( ((x1>=0) and (y1>=0) and (x1<head.width)and (y1<head.height)) or ((x2>=0) and (y2>=0) and (x2<head.width)and (y2<head.height)) ) then begin {line is partly within image1. Strictly not necessary but more secure} mainwindow.image1.Canvas.moveto(x1,y1); mainwindow.image1.Canvas.lineto(x2,y2); end; i:=i+step; until ((i>=centRa+stepRA*6) or (i>=(centRA-6*stepRA)+360)); j:=j+step; until j>=min(centDEC+step*6,90); Screen.Cursor:=crDefault; { Restore cursor} end; procedure Tmainwindow.saturation_factor_plot1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin plot_fits(mainwindow.image1,false,true);{plot real} end; procedure Tmainwindow.saturation_factor_plot1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin plot_fits(mainwindow.image1,false,true);{plot real} end; procedure Tmainwindow.Polynomial1Change(Sender: TObject); begin if ( ((mainwindow.polynomial1.itemindex=1) and (ap_order=0) ) or {SIP polynomial selected but no data} ((mainwindow.polynomial1.itemindex=2) and (x_coeff[0]=0) and (y_coeff[0]=0)) {DSS polynomial selected but no data} ) then mainwindow.Polynomial1.color:=clred else mainwindow.Polynomial1.color:=cldefault; sip:=((ap_order>=2) and (mainwindow.Polynomial1.itemindex=1));{use sip corrections?} end; procedure Tmainwindow.remove_markers1Click(Sender: TObject); begin plot_fits(mainwindow.image1,false,true); end; procedure show_marker_shape(shape: TShape; shape_type,w,h,minimum:integer; fitsX,fitsY: double);{show manual alignment shape} var xf,yf,x,y : double; ll,tt,hh,ww : integer; begin if head.naxis=0 then exit; if ((shape_type=9{no change}) and (shape.visible=false)) then exit; xF:=(fitsX-0.5)*(mainwindow.image1.width/head.width)-0.5; //inverse of fitsx:=0.5+(0.5+xf)/(image1.width/head.width);{starts at 1} yF:=-(fitsY-head.height-0.5)*(mainwindow.image1.height/head.height)-0.5; //inverse of fitsy:=0.5+head.height-(0.5+yf)/(image1.height/head.height); {from bottom to top, starts at 1} if mainwindow.Flip_horizontal1.Checked then x:=mainwindow.image1.width-xF else x:=xF; if mainwindow.flip_vertical1.Checked then y:=mainwindow.image1.height-yF else y:=yF; if w=0 then {auto size} begin end; with shape do begin hh:=max(minimum,round(h*mainwindow.image1.height/head.height)); height:=hh; ww:= max(minimum,round(w*mainwindow.image1.width/head.width)); width:=ww; ll:=round(mainwindow.image1.left + x - width/2); left:=ll; tt:=round(mainwindow.image1.top + y - height/2); top:=tt; if shape_type=0 then {rectangle} begin shape:=stRectangle; visible:=true; end else if shape_type=1 then {circle} begin {good lock on object} shape:=stcircle; visible:=true; end else if shape_type=2 then {star} begin {good lock on object} visible:=true; end; {else keep as it is} end; if tshape(shape)=tshape(mainwindow.shape_alignment_marker1) then begin mainwindow.labelVar1.left:=ll+ww; mainwindow.labelVar1.top:=tt+hh; mainwindow.labelVar1.font.size:=max(hh div 4,14); mainwindow.labelVar1.visible:=true;end else if tshape(shape)=tshape(mainwindow.shape_alignment_marker2) then begin mainwindow.labelCheck1.left:=ll+ww; mainwindow.labelCheck1.top:=tt+hh; mainwindow.labelCheck1.font.size:=max(hh div 4,14); mainwindow.labelCheck1.visible:=true;end else if tshape(shape)=tshape(mainwindow.shape_alignment_marker3) then begin mainwindow.labelThree1.left:=ll+ww; mainwindow.labelThree1.top:=tt+hh; mainwindow.labelThree1.font.size:=max(hh div 4,14); mainwindow.labelThree1.visible:=true;end; end; procedure zoom(mousewheelfactor:double;MousePos: TPoint); var maxw : double; begin {$ifdef mswindows} maxw:=65535; {will be 1.2*65535} {$else} {$ifdef CPUARM} maxw:=4000;{struggeling if above} {$else} maxw:=15000; {$endif} {$endif} if ( ((mainwindow.image1.width<=maxw) or (mousewheelfactor<1){zoom out}) and {increased to 65535 for Windows only. Was above 12000 unequal stretch} ((mainwindow.image1.width>=100 ) or (mousewheelfactor>1){zoom in}) ) then begin {limit the mouse positions to positions within the image1} mousepos.x:=max(MousePos.X,mainwindow.Image1.Left); mousepos.y:=max(MousePos.Y,mainwindow.Image1.top); mousepos.x:=min(MousePos.X,mainwindow.Image1.Left+mainwindow.image1.width); mousepos.y:=min(MousePos.Y,mainwindow.Image1.top+mainwindow.image1.height); {scroll to compensate zoom} mainwindow.image1.Left := Round((1 - mousewheelfactor) * MousePos.X + mousewheelfactor * mainwindow.Image1.Left); mainwindow.image1.Top := Round((1 - mousewheelfactor) * MousePos.Y + mousewheelfactor * mainwindow.Image1.Top); {zoom} mainwindow.image1.height:=round(mainwindow.image1.height * mousewheelfactor); mainwindow.image1.width:= round(mainwindow.image1.width * mousewheelfactor); //mainwindow.caption:=inttostr(mainwindow.image1.width)+' x '+inttostr(mainwindow.image1.height); {marker} show_marker_shape(mainwindow.shape_marker1,9 {no change in shape and hint},20,20,10{minimum},shape_marker1_fitsX, shape_marker1_fitsY); show_marker_shape(mainwindow.shape_marker2,9 {no change in shape and hint},20,20,10{minimum},shape_marker2_fitsX, shape_marker2_fitsY); show_marker_shape(mainwindow.shape_marker3,9 {no change in shape and hint},20,20,10{minimum},shape_marker3_fitsX, shape_marker3_fitsY); show_marker_shape(mainwindow.shape_marker4,9 {no change in shape and hint},60,60,30{minimum},shape_marker4_fitsX, shape_marker4_fitsY); if copy_paste then begin show_marker_shape(mainwindow.shape_paste1,0 {rectangle},copy_paste_w,copy_paste_h,0{minimum}, mouse_fitsx, mouse_fitsy);{show the paste shape} end; {reference point manual alignment} if mainwindow.shape_manual_alignment1.visible then {For manual alignment. Do this only when visible} show_marker_shape(mainwindow.shape_manual_alignment1,9 {no change in shape and hint},20,20,10,shape_fitsX, shape_fitsY); {photometry} if mainwindow.shape_alignment_marker1.visible then {For manual alignment. Do this only when visible} show_marker_shape(mainwindow.shape_alignment_marker1,9 {no change in shape and hint},20,20,10,shape_fitsX, shape_fitsY); if mainwindow.shape_alignment_marker2.visible then {For manual alignment. Do this only when visible} show_marker_shape(mainwindow.shape_alignment_marker2,9 {no change in shape and hint},20,20,10,shape_fitsX2, shape_fitsY2); if mainwindow.shape_alignment_marker3.visible then {For manual alignment. Do this only when visible} show_marker_shape(mainwindow.shape_alignment_marker3,9 {no change in shape and hint},20,20,10,shape_fitsX3, shape_fitsY3); end; end; procedure Tmainwindow.zoomin1Click(Sender: TObject); begin zoom(1.2, TPoint.Create(Panel1.Width div 2, Panel1.Height div 2){zoom center panel1} ); end; procedure Tmainwindow.zoomout1Click(Sender: TObject); begin zoom(1/1.2, TPoint.Create(Panel1.Width div 2, Panel1.Height div 2)); end; procedure Tmainwindow.Panel1MouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); var P: TPoint; begin GetCursorPos(p); {use this since in Lazarus the mousepos varies depending control under the mouse} p:=panel1.Screentoclient(p); // mainwindow.statusbar1.simpletext:=inttostr(p.x)+' ' +inttostr(p.Y)+' '+inttostr(mousepos.x)+' '+inttostr(mousepos.y); if p.y<0 then exit; {not in image range} if mainwindow.inversemousewheel1.checked then zoom(1.2,p) else zoom(1/1.2,p); Handled := True;{prevent that in win7 the combobox is moving up/down if it has focus} end; procedure Tmainwindow.Panel1MouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); var P: TPoint; begin GetCursorPos(p); {use this since in Lazarus the mousepos varies depending control under the mouse} p:=panel1.Screentoclient(p); if p.y<0 then exit; {not in image range} if mainwindow.inversemousewheel1.checked then zoom(1/1.2,p) else zoom(1.2,p); Handled := True;{prevent that in win7 the combobox is moving up/down if it has focus} end; procedure Tmainwindow.show_statistics1Click(Sender: TObject); var fitsX,fitsY,dum,counter,col,size,counter_median,required_size,iterations,i : integer; value,stepsize,median_position, most_common,mc_1,mc_2,mc_3,mc_4, sd,mean,median,minimum, maximum,max_counter,saturated,mad,minstep,delta,range,total_flux,adu_e : double; Save_Cursor : TCursor; info_message : string; median_array : array of double; const median_max_size=5000; begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } if ((abs(stopX-startX)>2)and (abs(stopY-starty)>2))=false then {do statistics on whole image} begin startx:=0;stopX:=head.width-1; starty:=0;stopY:=head.height-1; end; if startX>stopX then begin dum:=stopX; stopX:=startX; startX:=dum; end;{swap} if startY>stopY then begin dum:=stopY; stopY:=startY; startY:=dum; end; {reset variables} info_message:=''; adu_e:=retrieve_ADU_to_e_unbinned(head.egain);//Used for SNR calculation in procedure HFD. Factor for unbinned files. Result is zero when calculating in e- is not activated in the statusbar popup menu. Then in procedure HFD the SNR is calculated using ADU's only. {limit points to take median from at median_max_size} size:=(stopY-1-startY) * (stopX-1-startX);{number of pixels within the rectangle} stepsize:=median_max_size/size; if stepsize<1 then required_size:=median_max_size {pixels will be skippped. Limit sampling to median_max_size} else required_size:=size; setlength(median_array,required_size); minstep:=99999; {measure the median of the suroundings} for col:=0 to head.naxis3-1 do {do all colours} begin local_sd(startX+1 ,startY+1, stopX-1,stopY-1{within rectangle},col,img_loaded, {var} sd,mean,iterations);{calculate mean and standard deviation in a rectangle between point x1,y1, x2,y2} most_common:=mode(img_loaded,col,startx,stopX,starty,stopY,32000); {median sampling and min , max} max_counter:=1; median:=0; saturated:=0; minimum:=999999999; maximum:=0; counter:=0; counter_median:=0; total_flux:=0; for fitsY:=startY+1 to stopY-1 do {within rectangle} for fitsX:=startX+1 to stopX-1 do begin value:=img_loaded[col,fitsX+1,fitsY+1]; median_position:=counter*stepsize; total_flux:=total_flux+value; {total flux} if trunc(median_position)>counter_median then {pixels will be skippped. Limit sampling to median_max_size} begin inc(counter_median); median_array[counter_median]:=value; {fill array with sampling data. Smedian will be applied later} end; inc(counter); if value=maximum then max_counter:=max_counter+1; {counter at max} if value>maximum then maximum:=value; {max} if value<minimum then minimum:=value; {min} if value>=64000 then saturated:=saturated+1;{saturation counter} if col=0 then begin delta:=abs(value-most_common); if ((delta>0.00000001){not the same} and (delta<minstep)) then minstep:=delta; end; end;{filter outliers} median:=smedian(median_array,counter_median); total_flux:=total_flux-counter*median; {total flux above background} for i:=0 to counter_median do median_array[i]:=abs(median_array[i] - median);{fill median_array with offsets} mad:=smedian(median_array,counter_median); //median absolute deviation (MAD) if col=0 then range:=maximum-minimum; if head.naxis3>1 then if col=0 then info_message:=info_message+'Red:'+#10; if col=1 then info_message:=info_message+#10+#10+'Green:'+#10; if col=2 then info_message:=info_message+#10+#10+'Blue:'+#10; info_message:=info_message+ 'x̄ : '+floattostrf(mean,ffgeneral, 5, 5)+' (sigma-clip iterations='+inttostr(iterations)+')'+#10+ {mean} 'x̃ : '+floattostrf(median,ffgeneral, 5, 5)+#10+ {median} 'Mo : '+floattostrf(most_common,ffgeneral, 5, 5)+#10+ 'σ : '+noise_to_electrons(adu_e,head.xbinning,sd)+' (sigma-clip iterations='+inttostr(iterations)+')'+#10+ {standard deviation} 'σ_2: '+noise_to_electrons(adu_e,head.xbinning,get_negative_noise_level(img_loaded,col,startx,stopX,starty,stopY,most_common))+#10+ 'mad: '+floattostrf(mad,ffgeneral, 4, 4)+#10+ 'm : '+floattostrf(minimum,ffgeneral, 5, 5)+#10+ 'M : '+floattostrf(maximum,ffgeneral, 5, 5)+ ' ('+inttostr(round(max_counter))+' x)'+#10+ 'Flux: '+floattostrf(total_flux,ffExponent, 3, 2)+#10+ '≥64E3 : '+inttostr(round(saturated)); end; if ((abs(stopX-startx)>=head.width-1) and (most_common<>0){prevent division by zero}) then begin mc_1:=mode(img_loaded,0, 0{x1}, 50{x2}, 0{y1}, 50{y2},32000);{for this area get most common value equals peak in histogram} mc_2:=mode(img_loaded,0, 0{x1}, 50{x2},head.height-1-50{y1},head.height-1{y2},32000); mc_3:=mode(img_loaded,0,head.width-1-50{x1},head.width-1{x2},head.height-1-50{y1},head.height-1{y2},32000); mc_4:=mode(img_loaded,0,head.width-1-50{x1},head.width-1{x2}, 0{y1},50 {y2},32000); info_message:=info_message+#10+#10+'Vignetting [Mo corners/Mo]: '+inttostr(round(100*(1-(mc_1+mc_2+mc_3+mc_4)/(most_common*4))))+'%'; end; info_message:=info_message+#10+#10+'Bit depth data: '+inttostr(round(ln(range/minstep)/ln(2)));{bit range, calculate 2log} if head.Xbinning<>1 then info_message:=info_message+#10+'Binning: '+ floattostrf(head.Xbinning,ffgeneral,0,0)+'x'+floattostrf(head.Ybinning,ffgeneral,0,0); info_message:=info_message+#10+'Rectangle: '+inttostr(startX+1)+', '+inttostr(startY+1)+', '+inttostr(stopX+1)+', '+inttostr(stopY+1); info_message:=info_message+#10+'Filename: '+extractfilename(filename2); info_message:=info_message+#10+#10+#10+'Noise in electrons can be set with the popup menu of the status bar.'+ #10+#10+ 'Legend: '+#10+ 'x̄ = mean background | x̃ = median background | '+ 'Mo = mode or most common pixel value or peak histogram, so the best estimate for the background mean value | '+ 'σ = standard deviation background using mean and sigma clipping| ' + 'σ_2 = standard deviation background using values below Mo only | '+ 'mad = median absolute deviation | '+ 'm = minimum value image | M = maximum value image | '+ 'Flux = total flux above median background | '+ '≥64E3 = number of values equal or above 64000'; case QuestionDlg (pchar('Statistics within rectangle '+inttostr(stopX-1-startX)+' x '+inttostr(stopY-1-startY)),pchar(info_message),mtCustom,[mrYes,'Copy to clipboard?', mrNo, 'No', 'IsDefault'],'') of mrYes: Clipboard.AsText:=info_message; end; median_array:=nil;{free mem} Screen.Cursor:=crDefault; end; procedure update_statusbar_section5;{update section 5 with image dimensions in degrees} begin if head.cdelt2<>0 then begin mainwindow.statusbar1.panels[6].text:=floattostrF(head.width*abs(head.cdelt2),ffFixed,0,2)+' x '+floattostrF(head.height*abs(head.cdelt2),ffFixed,0,2)+' °';{give image dimensions and bit per pixel info} stackmenu1.search_fov1.text:=floattostrF(head.height*abs(head.cdelt2),ffFixed,0,2); {negative head.cdelt2 are produced by PI} end else mainwindow.statusbar1.panels[6].text:=''; end; procedure update_menu_related_to_solver(yes :boolean); {update menu section related to solver succesfull} begin if mainwindow.deepsky_annotation1.enabled=yes then exit;{no need to update} mainwindow.annotate_with_measured_magnitudes1.enabled:=yes;{enable menu} mainwindow.annotate_unknown_stars1.enabled:=yes;{enable menu} mainwindow.variable_star_annotation1.enabled:=yes;{enable menu} mainwindow.annotate_minor_planets1.enabled:=yes;{enable menu} mainwindow.hyperleda_annotation1.enabled:=yes;{enable menu} mainwindow.deepsky_annotation1.enabled:=yes;{enable menu} mainwindow.star_annotation1.enabled:=yes;{enable menu} mainwindow.hyperleda_annotation1.enabled:=yes;{enable menu} mainwindow.deepsky_annotation1.enabled:=yes;{enable menu} mainwindow.calibrate_photometry1.enabled:=yes;{enable menu} mainwindow.sqm1.enabled:=yes;{enable menu} mainwindow.add_marker_position1.enabled:=yes;{enable popup menu} mainwindow.measuretotalmagnitude1.enabled:=yes;{enable popup menu} // mainwindow.writeposition1.enabled:=yes;{enable popup menu} mainwindow.writepositionshort1.enabled:=yes;{enable popup menu} mainwindow.Copyposition1.enabled:=yes;{enable popup menu} mainwindow.Copypositionindeg1.enabled:=yes;{enable popup menu} mainwindow.online_query1.enabled:=yes;{enable popup menu} mainwindow.sip1.enabled:=yes; {allow adding sip coefficients} stackmenu1.focallength1Exit(nil); {update output calculator} end; procedure update_menu(fits :boolean);{update menu if fits file is available in array or working from image1 canvas} begin mainwindow.Saveasfits1.enabled:=fits; {only allow saving images} mainwindow.updown1.visible:=((last_extension=false) or (extend_type>0)); if ((last_extension=true) and (extend_type=0) and (mainwindow.pagecontrol1.showtabs {do it only when necessary to avoid blink})) then begin mainwindow.pagecontrol1.showtabs:=false;{hide tabs assuming no tabel extension} mainwindow.pagecontrol1.Tabindex:=0;{show first tab} end; if fits<>mainwindow.data_range_groupBox1.Enabled then {menu requires update} begin mainwindow.data_range_groupBox1.Enabled:=fits; mainwindow.Export_image1.enabled:=fits; mainwindow.SaveasJPGPNGBMP1.Enabled:=fits; mainwindow.imageinspection1.enabled:=fits; mainwindow.ShowFITSheader1.enabled:=fits; mainwindow.demosaic_Bayermatrix1.Enabled:=fits; mainwindow.autocorrectcolours1.Enabled:=fits; mainwindow.removegreenpurple1.enabled:=fits; mainwindow.bin_2x2menu1.Enabled:=fits; mainwindow.bin_3x3menu1.Enabled:=fits; mainwindow.stretch_draw1.Enabled:=fits; mainwindow.stretch_draw_fits1.Enabled:=fits; mainwindow.CropFITSimage1.Enabled:=fits; mainwindow.stretch1.enabled:=fits; mainwindow.inversimage1.enabled:=fits; mainwindow.rotate1.enabled:=fits; mainwindow.minimum1.enabled:=fits; mainwindow.maximum1.enabled:=fits; mainwindow.range1.enabled:=fits; mainwindow.min2.enabled:=fits; mainwindow.max2.enabled:=fits; mainwindow.convertmono1.enabled:=fits; mainwindow.solve_button1.enabled:=fits; mainwindow.astrometric_solve_image1.enabled:=fits; stackmenu1.tab_Pixelmath1.enabled:=fits; stackmenu1.tab_Pixelmath2.enabled:=fits; end;{menu change} //mainwindow.error_label1.visible:=(fits=false); if fits then mainwindow.error_label1.visible:=false;; mainwindow.SaveFITSwithupdatedheader1.Enabled:=((fits) and (fits_file_name(filename2)) and (fileexists(filename2)));{menu disable, no file available to update header} mainwindow.saturation_factor_plot1.enabled:=head.naxis3=3;{colour}; mainwindow.Polynomial1Change(nil);{update color} update_menu_related_to_solver((fits) and (head.cd1_1<>0)); stackmenu1.resize_factor1Change(nil);{update dimensions binning menu} stackmenu1.test_pattern1.Enabled:=head.naxis3=1;{mono} stackmenu1.focallength1.Text:=floattostrf(focallen,ffgeneral, 4, 4); stackmenu1.pixelsize1.text:=floattostrf(head.xpixsz{*XBINNING},ffgeneral, 4, 4); stackmenu1.calculator_binning1.caption:=inttostr(head.width)+' x '+inttostr(head.height)+' pixels, binned '+floattostrf(head.Xbinning,ffgeneral,0,0)+'x'+floattostrf(head.Ybinning,ffgeneral,0,0); stackmenu1.focallength1Exit(nil); {update calculator} end; procedure Tmainwindow.astrometric_solve_image1Click(Sender: TObject); begin if head.naxis=0 then exit; if live_stacking {ongoing} then begin stackmenu1.Memo2.lines.add('█ █ █ █ █ █ Can'+#39+'t solve while live stacking!!'); exit; end; save_settings2; Screen.Cursor:=crHourglass; application.processmessages; {solve internal} mainwindow.caption:='Solving.......'; save1.Enabled:=solve_image(img_loaded,head,false {get hist, is already available});{match between loaded image and star database} if head.cd1_1<>0 then begin mainwindow.ra1.text:=prepare_ra(head.ra0,' ');{show center of image} mainwindow.dec1.text:=prepare_dec(head.dec0,' '); {$IfDef Darwin}// {MacOS} //ra1change(nil);{OSX doesn't trigger an event, so ra_label is not updated} //mainwindow.dec1change(nil); {$ENDIF} plot_north; plot_north_on_image; plot_large_north_indicator; plot_grid; plot_constellations; plot_text; image1.Repaint;{show north-east indicator} update_menu_related_to_solver(true);{update menus section} update_statusbar_section5;{update section 5 with image dimensions in degrees} end; {else do nothing, keep old solution visible if available} memo1.Visible:=true; {could be disabled by loading dark/flits due to calibrate prior to solving} Screen.Cursor:=crDefault; end; procedure Tmainwindow.min2EditingDone(Sender: TObject); var edit_value: integer; begin edit_value:=min(max(round(strtofloat2(min2.text)),0),65535);{updown in FPC has a maximum of 32767, so not usable} if edit_value<> minimum1.Position then {something has really changed} begin minimum1.Position:=edit_value; mainwindow.range1.itemindex:=7; {manual} plot_fits(mainwindow.image1,false,true); end; end; procedure Tmainwindow.remove_above1Click(Sender: TObject); begin {calculate in array coordinates} {startY is already defined by mousedown} if flip_vertical1.checked=false then stopY:=0 else stopY:=head.height-1; startx:=0; stopX:=head.width-1; mainwindow.CropFITSimage1Click(nil); end; procedure Tmainwindow.remove_below1Click(Sender: TObject); begin {calculate in array coordinates} {startY is already defined by mousedown} if flip_vertical1.checked then stopY:=0 else stopY:=head.height-1; startx:=0; stopX:=head.width-1; mainwindow.CropFITSimage1Click(nil); end; procedure Tmainwindow.remove_left1Click(Sender: TObject); begin {calculate in array coordinates} starty:=0;{no change in y} stopY:=head.height-1; {startx is already defined by mousedown} if flip_horizontal1.checked then stopX:=0 else stopX:=head.width-1; mainwindow.CropFITSimage1Click(nil); end; procedure Tmainwindow.remove_right1Click(Sender: TObject); begin {calculate in array coordinates} starty:=0;{no change in y} stopY:=head.height-1; {startx is already defined by mousedown} if flip_horizontal1.checked=false then stopX:=0 else stopX:=head.width-1; mainwindow.CropFITSimage1Click(nil); end; procedure Tmainwindow.select_directory_thumb1Click(Sender: TObject); begin if SelectDirectory('Select a directory', ExtractFileDir(filename2){initialdir} , chosenDirectory) then begin thumbnails1:=Tthumbnails1.Create(self); thumbnails1.ShowModal; thumbnails1.Free; end; end; procedure Tmainwindow.SpeedButton1Click(Sender: TObject); var oldvalue:integer; begin oldvalue:=LoadFITSPNGBMPJPEG1filterindex; LoadFITSPNGBMPJPEG1filterindex:=4;{preview FITS files} LoadFITSPNGBMPJPEG1Click(nil);{open load file in preview mode} LoadFITSPNGBMPJPEG1filterindex:=oldvalue; {restore filterindex position} end; function extract_raw_colour_to_file(filename7,filtern: string; xp,yp : integer) : string;{extract raw colours and write to file} var img_temp11 : image_array; FitsX, fitsY,w,h,xp2,yp2,pattern,pattern2 : integer; ratio : double; get_green : boolean; val : single; begin if load_fits(filename7,true {light},true,true {update memo},0,head,img_loaded)=false then begin beep; result:=''; exit; end; if ((pos('TR',head.filter_name)=0) and (pos('TG',head.filter_name)=0) and (pos('TB',head.filter_name)=0) and (head.naxis3=1)) then begin ratio:=0.5; w:=trunc(head.width/2); {half size} h:=trunc(head.height/2); setlength(img_temp11,1,w,h); pattern:=get_demosaic_pattern; {analyse pattern} get_green:=false; if filtern='TR' then {red} begin case pattern of 0: begin xp:=2; yp:=1; end;{'GRBG'} 1: begin xp:=2; yp:=2; end;{'BGGR'} 2: begin xp:=1; yp:=1; end;{'RGGB'} 3: begin xp:=1; yp:=2; end;{'GBRG'} end; end else if filtern='TB' then {blue} begin case pattern of 0: begin xp:=1; yp:=2; end;{'GRBG'} 1: begin xp:=1; yp:=1; end;{'BGGR'} 2: begin xp:=2; yp:=2; end;{'RGGB'} 3: begin xp:=2; yp:=1; end;{'GBRG'} end; end else if filtern='TG' then {green} begin get_green:=true; case pattern of 0: begin xp:=1; yp:=1; xp2:=2; yp2:=2; end;{'GRBG'} 1: begin xp:=2; yp:=1; xp2:=1; yp2:=2; end;{'BGGR'} 2: begin xp:=2; yp:=1; xp2:=1; yp2:=2; end;{'RGGB'} 3: begin xp:=1; yp:=1; xp2:=2; yp2:=2; end;{'GBRG'} end; end; {info message} if pos('BOT',roworder)>0 then {'BOTTOM-UP'= lower-left corner first in the file. or 'TOP-DOWN'= top-left corner first in the file.(default)} begin {top-down keyword, flip in the message the patterns upside down. So GRBG becomes BGGR} if pattern=0 then pattern2:=1 else if pattern=1 then pattern2:=0 else if pattern=2 then pattern2:=3 else if pattern=3 then pattern2:=2; end else begin {normal no keyword or TOP-DOWN keyword} pattern2:=pattern; end; case pattern2 of 0: begin memo2_message('GRBG => '+filtern[2]); end;{'GRBG'} 1: begin memo2_message('BGGR => '+filtern[2]); end;{'BGGR'} 2: begin memo2_message('RGGB => '+filtern[2]); end;{'RGGB'} 3: begin memo2_message('GBRG => '+filtern[2]); end;{'GBRG'} end; {extract} for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin val:=img_loaded[0,fitsx*2+xp-1,fitsY*2+yp-1]; if get_green then val:=(val+img_loaded[0,fitsx*2+xp2-1,fitsY*2+yp2-1])/2; {add second green pixel} img_temp11[0,fitsX,fitsY]:=val; end; head.width:=w; head.height:=h; update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); if head.crpix1<>0 then begin head.crpix1:=head.crpix1*ratio; update_float ('CRPIX1 =',' / X of reference pixel ' ,head.crpix1);end; if head.crpix2<>0 then begin head.crpix2:=head.crpix2*ratio; update_float ('CRPIX2 =',' / Y of reference pixel ' ,head.crpix2);end; if head.cdelt1<>0 then begin head.cdelt1:=head.cdelt1/ratio; update_float ('CDELT1 =',' / X pixel size (deg) ' ,head.cdelt1);end; if head.cdelt2<>0 then begin head.cdelt2:=head.cdelt2/ratio; update_float ('CDELT2 =',' / Y pixel size (deg) ' ,head.cdelt2);end; if head.cd1_1<>0 then begin head.cd1_1:=head.cd1_1/ratio; head.cd1_2:=head.cd1_2/ratio; head.cd2_1:=head.cd2_1/ratio; head.cd2_2:=head.cd2_2/ratio; update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_2); end; head.XBINNING:=head.XBINNING/ratio; head.YBINNING:=head.YBINNING/ratio; update_float ('XBINNING=',' / Binning factor in width ' ,head.XBINNING); update_float ('YBINNING=',' / Binning factor in height ' ,head.YBINNING); if head.XPIXSZ<>0 then begin head.XPIXSZ:=head.XPIXSZ/ratio; head.YPIXSZ:=head.YPIXSZ/ratio; update_float('XPIXSZ =',' / Pixel width in microns (after binning) ' ,head.XPIXSZ);{note: comment will be never used since it is an existing keyword} update_float('YPIXSZ =',' / Pixel height in microns (after binning) ' ,head.YPIXSZ); update_float('PIXSIZE1=',' / Pixel width in microns (after binning) ' ,head.XPIXSZ); update_float('PIXSIZE2=',' / Pixel height in microns (after binning) ' ,head.YPIXSZ); end; add_text ('HISTORY ','One raw colour extracted.'); update_text ('FILTER =',#39+filtern+#39+' / Filter name '); img_loaded:=img_temp11; result:=ChangeFileExt(FileName7,'_'+filtern+'.fit'); if save_fits(img_loaded,result,16,true{overwrite}) =false then result:=''; img_temp11:=nil; end else begin if head.naxis3>1 then memo2_message('Skipped COLOUR image '+ filename7+', Raw red, green or blue pixel extraction is only possible for raw images.') else memo2_message('Skipped image '+ filename7+', FILTER indicates earlier extraction!'); end; end; procedure split_raw(xp,yp : integer; filtern: string);{extract one of the Bayer matrix pixels} var Save_Cursor : TCursor; dobackup : boolean; i : integer; begin with mainwindow do begin OpenDialog1.Title := 'Select multiple RAW fits files to extract Bayer matrix position '+filtern+' from them'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter := '8, 16 and -32 bit FITS files (*.fit*)|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS'; // fits_file:=true; esc_pressed:=false; if OpenDialog1.Execute then begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } dobackup:=img_loaded<>nil; if dobackup then backup_img;{preserve img array and fits header of the viewer} try { Do some lengthy operation } with OpenDialog1.Files do for I := 0 to Count - 1 do begin Application.ProcessMessages; if esc_pressed then break; if extract_raw_colour_to_file(Strings[I] {filename}, filtern,xp,yp )=''{new file name} then beep; end; finally if dobackup then restore_img;{for the viewer} Screen.Cursor:=crDefault; { Always restore to normal } end; end; head.naxis:=0;{not the food fits loaded} end; end; procedure Tmainwindow.OpenDialog1SelectionChange(Sender: TObject); begin if opendialog1.FilterIndex=4 then {preview FITS files} begin if ( (pos('.fit',opendialog1.FileName)>0) or (pos('.FIT',opendialog1.FileName)>0) ) then begin mainwindow.caption:=opendialog1.filename; application.processmessages;{show file selection} {load image} if load_fits(opendialog1.filename,true {light},true,true {update memo},0,head,img_loaded) then begin if ((head.naxis3=1) and (mainwindow.preview_demosaic1.checked)) then demosaic_advanced(img_loaded);{demosaic and set levels} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false {re_center},true); end; end; end; end; procedure Tmainwindow.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if (ssright in shift)=false then mouse_enter:=0; {for crop function} end; procedure Tmainwindow.recent1Click(Sender: TObject); begin filename2:= (Sender as Tmenuitem).caption; if fileexists(filename2) then load_image(true,true {plot}) {load and center, plot} else begin {file gone/deleted} application.messagebox(pchar('File not found:'+#13+#10+#13+#10+(Sender as Tmenuitem).caption),pchar('Error'),MB_ICONWARNING+MB_OK); (Sender as Tmenuitem).caption:=''; end; add_recent_file(filename2);{update recent files list by moving this one up to first position} end; procedure Tmainwindow.Remove_deep_sky_object1Click(Sender: TObject); var fitsX,fitsY,dum,k,bsize : integer; mode_left_bottom,mode_left_top, mode_right_top, mode_right_bottom, noise_left_bottom,noise_left_top, noise_right_top, noise_right_bottom, center_x,center_y,a,b,angle_from_center,new_value,new_value_noise : double; line_bottom, line_top,line_bottom_noise, line_top_noise : double; begin if head.naxis=0 then exit; if ((abs(stopX-startX)>2)and (abs(stopY-starty)>2)) then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; bsize:=min(10,abs(stopX-startX));{10 or smaller} if startX>stopX then begin dum:=stopX; stopX:=startX; startX:=dum; end;{swap} if startY>stopY then begin dum:=stopY; stopY:=startY; startY:=dum; end; {ellipse parameters} center_x:=(startx+stopX-1)/2; center_y:=(startY+stopY-1)/2; a:=(stopX-1-startx)/2; b:=(stopY-1-startY)/2; Randomize; for k:=0 to head.naxis3-1 do {do all colors} begin mode_left_bottom:=mode(img_loaded,k,startx-bsize,startx+bsize,starty-bsize,starty+bsize,32000);{for this area get most common value equals peak in histogram} mode_left_top:= mode(img_loaded,k,startx-bsize,startx+bsize,stopY-bsize,stopY+bsize,32000);{for this area get most common value equals peak in histogram} mode_right_bottom:=mode(img_loaded,k,stopX-bsize,stopX+bsize,starty-bsize,starty+bsize,32000);{for this area get most common value equals peak in histogram} mode_right_top:= mode(img_loaded,k,stopX-bsize,stopX+bsize,stopY-bsize,stopY+bsize,32000);{for this area get most common value equals peak in histogram} noise_left_bottom:=get_negative_noise_level(img_loaded,k,startx-bsize,startx+bsize,starty-bsize,starty+bsize, mode_left_bottom);{find the negative noise level below most_common_level of a local area} noise_left_top:=get_negative_noise_level(img_loaded,k,startx-bsize,startx+bsize,stopY-bsize,stopY+bsize, mode_left_top);{find the negative noise level below most_common_level of a local area} noise_right_bottom:=get_negative_noise_level(img_loaded,k,stopX-bsize,stopX+bsize,starty-bsize,starty+bsize, mode_right_bottom);{find the negative noise level below most_common_level of a local area} noise_right_top:=get_negative_noise_level(img_loaded,k,stopX-bsize,stopX+bsize,stopY-bsize,stopY+bsize, mode_right_top);{find the negative noise level below most_common_level of a local area} for fitsY:=startY to stopY-1 do for fitsX:=startX to stopX-1 do begin angle_from_center:=arctan(abs(fitsY-center_Y)/max(1,abs(fitsX-center_X))); if sqr(fitsX-center_X)+sqr(fitsY-center_Y) <= sqr(a*cos(angle_from_center))+ sqr(b*sin(angle_from_center)) then {within the ellipse} begin line_bottom:=mode_left_bottom*(stopX-fitsx)/(stopX-startx)+ mode_right_bottom *(fitsx-startX)/(stopX-startx);{median value at bottom line} line_top:= mode_left_top * (stopX-fitsx)/(stopX-startx)+ mode_right_top*(fitsx-startX)/(stopX-startx);{median value at top line} line_bottom_noise:=noise_left_bottom*(stopX-fitsx)/(stopX-startx)+ noise_right_bottom *(fitsx-startX)/(stopX-startx);{median noise value at bottom line} line_top_noise:= noise_left_top * (stopX-fitsx)/(stopX-startx)+ noise_right_top*(fitsx-startX)/(stopX-startx);{median noise value at top line} new_value:=line_bottom*(stopY-fitsY)/(stopY-startY)+line_top*(fitsY-startY)/(stopY-startY);{median noise value at position FitsX, fitsY} new_value_noise:=line_bottom_noise*(stopY-fitsY)/(stopY-startY)+line_top_noise*(fitsY-startY)/(stopY-startY);{median noise value at position FitsX, fitsY} img_loaded[k,fitsX,fitsY]:=randg(new_value,new_value_noise); end; end; end;{k color} plot_fits(mainwindow.image1,false,true); Screen.Cursor:=crDefault; end {fits file} else application.messagebox(pchar('No area selected! Hold the right mouse button down while selecting an area.'),'',MB_OK); end; function floattostr6(x:double):string;{float to string with 6 decimals} begin str(x:0:6,result); end; function floattostr4(x:double):string; begin str(x:0:4,result); end; function floattostrE(x:double):string; begin str(x,result); end; function inttostr5(x:integer):string;{always 5 digit} begin str(x:5,result); end; function strtoint2(s: string):integer; {str to integer, fault tolerant} var error1 : integer; value : double; begin val(s,value,error1); if error1<>0 then result:=0 else result:=round(value); end; function strtofloat2(s:string): double;{works with either dot or komma as decimal separator} var error1:integer; begin s:=StringReplace(s,',','.',[]); {replaces komma by dot} s:=trim(s); {remove spaces} val(s,result,error1); if error1<>0 then result:=0; end; function strtofloat1(s:string): double;{string to float, error tolerant} var error1:integer; begin val(s,result,error1); if error1<>0 then result:=0; end; Function deg_and_minutes_tofloat(s:string):double; var x: double; j: integer; begin j:=pos(':',s); if j=0 then {12.50 format} x:=strtofloat2(s) {12.5 format} else {12:30.0 format} begin x:=(strtofloat2(copy(s,1,j-1))); if pos('-',s)>0 then x:=x - strtofloat2(copy(s,j+1,length(s)-j))/60 else x:=x + strtofloat2(copy(s,j+1,length(s)-j))/60 ; end; deg_and_minutes_tofloat:=x; end; Function LeadingZero(w : integer) : String; var s : String; begin str(w:0,s); if Length(s) = 1 then s := '0' + s; LeadingZero := s; end; procedure addstring(position:integer;inp :double); {update string head1} var s: ansistring; i:integer; begin str(inp:16,s); for i:=11 to 30 do begin if i+length(s)<=30 then head1[position,i]:=' ' {clear old results} else head1[position,i]:=s[(i+length(s)-30)]; end; end; function prepare_ra5(rax:double; sep:string):string; {radialen to text format 24h 00.0} var B : String[2]; h,m,dm :integer; begin {make from rax [0..pi*2] a text in array bericht. Length is 8 long} rax:=rax+pi*0.1/(24*60); {add 1/10 of half minute to get correct rounding and not 7:60 results as with round} rax:=rax*12/pi; {make hours} h:=trunc(rax); m:=trunc((rax-h)*60); dm:=trunc((rax-h-m/60)*600); Str(trunc(h):2,b); prepare_ra5:=b+sep+leadingzero(m)+'.'+ansichar(dm+48); end; function prepare_dec4(decx:double;sep:string):string; {radialen to text format 90d 00 } var B : String[7]; g,m :integer; sign : ansichar; begin {make from rax [0..pi*2] a text in array bericht. Length is 10 long} if decx<0 then sign:='-' else sign:='+'; decx:=abs(decx)+pi/(360*60); {add half minute to get correct rounding and not 7:60 results as with round} decx:=decx*180/pi; {make degrees} g:=trunc(decx); m:=trunc((decx-g)*60); Str(trunc(g):0,b); result:=sign+b+sep+leadingzero(m); end; function prepare_ra6(rax:double; sep:string):string; {radialen to text, format 24: 00 00} var h,m,s :integer; begin {make from rax [0..pi*2] a text in array bericht. Length is 8 long} rax:=rax+pi/(24*60*60); {add half second to get correct rounding and not 7:60 results as with round} rax:=rax*12/pi; {make hours} h:=trunc(rax); m:=trunc((rax-h)*60); s:=trunc((rax-h-m/60)*3600); result:=leadingzero(h)+sep+leadingzero(m)+' '+leadingzero(s); end; function prepare_ra(rax:double; sep:string):string; {radialen to text, format 24: 00 00.0 } var h,m,s,ds :integer; begin {make from rax [0..pi*2] a text in array bericht. Length is 8 long} rax:=rax+pi*0.1/(24*60*60); {add 1/10 of half second to get correct rounding and not 7:60 results as with round} rax:=rax*12/pi; {make hours} h:=trunc(rax); m:=trunc((rax-h)*60); s:=trunc((rax-h-m/60)*3600); ds:=trunc((rax-h-m/60-s/3600)*36000); prepare_ra:=leadingzero(h)+sep+leadingzero(m)+' '+leadingzero(s)+'.'+ansichar(ds+48); end; function prepare_dec(decx:double; sep:string):string; {radialen to text, format 90d 00 00} var g,m,s :integer; sign : ansichar; begin {make from rax [0..pi*2] a text in array bericht. Length is 10 long} if decx<0 then sign:='-' else sign:='+'; decx:=abs(decx)+pi/(360*60*60); {add half second to get correct rounding and not 7:60 results as with round} decx:=decx*180/pi; {make degrees} g:=trunc(decx); m:=trunc((decx-g)*60); s:=trunc((decx-g-m/60)*3600); prepare_dec:=sign+leadingzero(g)+sep+leadingzero(m)+' '+leadingzero(s); end; function prepare_ra8(rax:double; sep:string):string; {radialen to text, format 24: 00 00.00 } var B : String[2]; h,m,s,ds :integer; begin {make from rax [0..pi*2] a text in array bericht. Length is 8 long} rax:=rax+pi*0.01/(24*60*60); {add 1/10 of half second to get correct rounding and not 7:60 results as with round} rax:=rax*12/pi; {make hours} h:=trunc(rax); m:=trunc((rax-h)*60); s:=trunc((rax-h-m/60)*3600); ds:=trunc((rax-h-m/60-s/3600)*360000); Str(trunc(h):2,b); result:=b+sep+leadingzero(m)+' '+leadingzero(s)+'.'+leadingzero(ds); end; Function prepare_dec2(decx:double; sep:string):string; {radialen to text, format 90d 00 00.1} var B,ds2 : String[5]; g,m,s,ds :integer; sign : ansichar; begin {make from decx [-pi/2..pi/2] a text in array bericht. Length is 10 long} if decx<0 then sign:='-' else sign:='+'; decx:=abs(decx)+pi*0.1/(360*60*60); {add 1/20 second to get correct rounding and not 7:60 results as with round} decx:=decx*180/pi; {make degrees} g:=trunc(decx); m:=trunc((decx-g)*60); s:= trunc((decx-g-m/60)*3600); ds:=trunc((decx-g-m/60-s/3600)*36000); Str(trunc(g):2,b); Str(trunc(ds):1,ds2); prepare_dec2:=sign+b+sep+leadingzero(m)+' '+leadingzero(s)+'.'+ds2; end; procedure old_to_new_WCS(var head:theader);{ convert old WCS to new, revision 2022} var sign : integer; begin // https://www.aanda.org/articles/aa/full/2002/45/aah3860/aah3860.right.html // Representations of World Coordinates in FITS paper II aah3860 // formula 189 head.cd1_1:=+head.cdelt1 * cos(head.crota1*pi/180);{could be skewed, so use crota1} head.cd2_1:=+head.cdelt1 * sin(head.crota1*pi/180); head.cd1_2:=-head.cdelt2 * sin(head.crota2*pi/180); head.cd2_2:=+head.cdelt2 * cos(head.crota2*pi/180); end; procedure new_to_old_WCS(var head : theader);{convert new style FITS to old style, revison 2022} begin // https://www.aanda.org/articles/aa/full/2002/45/aah3860/aah3860.right.html // Representations of World Coordinates in FITS paper II aah3860 // formula 191 if head.cd2_1>0 then head.crota1:=arctan2(-head.cd2_1,-head.cd1_1)*180/pi else if head.cd2_1<0 then head.crota1:=arctan2(+head.cd2_1,+head.cd1_1)*180/pi else head.crota1:=0; if head.cd1_2>0 then head.crota2:=arctan2(-head.cd1_2,head.cd2_2)*180/pi else if head.cd1_2<0 then head.crota2:=arctan2(head.cd1_2,-head.cd2_2)*180/pi else head.crota2:=0; // https://www.aanda.org/articles/aa/full/2002/45/aah3860/aah3860.right.html // Representations of World Coordinates in FITS paper II aah3860 // Formula 193 improved for crota close to or equal to +90 or -90 degrees // Calculate cdelt1, cdelt2 values using the longest side of the triangle if abs(head.cd1_1)>abs(head.cd2_1) then begin head.cdelt1:=+head.cd1_1/cos(head.crota1*pi/180); head.cdelt2:=+head.cd2_2/cos(head.crota2*pi/180); end else begin head.cdelt1:=+head.cd2_1/sin(head.crota1*pi/180); head.cdelt2:=-head.cd1_2/sin(head.crota2*pi/180); end; //Solutions for CROTA2 come in pairs separated by 180degr. The other solution is obtained by subtracting 180 from CROTA2 and negating CDELT1 and CDELT2. //While each solution is equally valid, if one makes CDELT1 < 0 and CDELT2 > 0 then it would normally be the one chosen. if head.cdelt2<0 then //CDELT2 is always kept positive and if not the solution is flipped by negating both CDELT2, CDELT2 and shifting the angle 180 degrees. So if the image is flipped the solution is reporting "flipped horizontal" and not an equivalent "flipped vertical". begin if head.crota2<0 then begin head.crota2:=head.crota2+180; head.crota1:=head.crota1+180; end else begin head.crota2:=head.crota2-180; head.crota1:=head.crota1-180; end; head.cdelt2:=-head.cdelt2; head.cdelt1:=-head.cdelt1; end;//make cdelt2 always positive end; function intensityRGB(x:tcolor): byteX3; begin intensityRGB[0]:=getRvalue(x);{get red, green blue value as intensity} intensityRGB[1]:=getGvalue(x); intensityRGB[2]:=getBvalue(x); end; procedure demosaic_bilinear_interpolation(var img:image_array;pattern: integer);{make from sensor bayer pattern the three colors} var X,Y,offsetx, offsety: integer; red,green_odd,green_even,blue : boolean; img_temp2 : image_array; begin case pattern of 0: begin offsetx:=0; offsety:=0; end;{'GRBG'} 1: begin offsetx:=0; offsety:=1; end;{'BGGR'} 2: begin offsetx:=1; offsety:=0; end;{'RGGB'} 3: begin offsetx:=1; offsety:=1; end;{'GBRG'} else exit; end; setlength(img_temp2,3,head.width,head.height);{set length of image array color} for y := 1 to head.height-2 do {-2 = -1 -1} begin for x:=1 to head.width-2 do begin {http://cilab.knu.ac.kr/English/research/Color/Interpolation.htm , Bilinear interpolation} try green_even:= ( (odd(x+1+offsetX)) and (odd(y+1+offsetY)) );{even(i) function is odd(i+1), even is here for array position not fits position} green_odd := ( (odd(x+offsetX)) and (odd(y+offsetY)) ); red :=( (odd(x+offsetX)) and (odd(y+1+offsetY)) ); blue:=( (odd(x+1+offsetX)) and (odd(y+offsetY)) ); if green_odd then begin img_temp2[0,x,y]:= (img[0,x ,y-1] + img[0,x ,y+1])/2; {red neighbor pixels }; img_temp2[1,x,y]:= (img[0,x, y ] ); img_temp2[2,x,y]:= (img[0,x-1,y ] + img[0,x+1,y ])/2; {blue neighbor pixels }end else if green_even then begin img_temp2[0,x,y]:= (img[0,x-1,y ] + img[0,x+1,y ])/2; {red neighbor pixels }; img_temp2[1,x,y]:= (img[0,x, y ] ); img_temp2[2,x,y]:= (img[0,x ,y-1] + img[0,x ,y+1])/2; {blue neighbor pixels }end else if red then begin img_temp2[0,x,y]:= (img[0,x, y ]); img_temp2[1,x,y]:= (img[0,x-1,y ] + img[0,x+1,y ] + img[0,x ,y-1]+ img[0,x ,y+1])/4;{green neighbours} img_temp2[2,x,y]:= (img[0,x-1,y-1] + img[0,x-1,y+1] + img[0,x+1,y-1]+ img[0,x+1,y+1])/4 ; end {blue neighbor pixels } else if blue then begin img_temp2[0,x,y]:= (img[0,x-1,y-1] + img[0,x-1,y+1]+ img[0,x+1,y-1]+ img[0,x+1,y+1])/4; img_temp2[1,x,y]:= (img[0,x-1,y ] + img[0,x+1,y ]+ img[0,x ,y-1]+ img[0,x, y+1])/4; img_temp2[2,x,y]:= (img[0,x, y ] ); end; except end; end;{x loop} end;{y loop} img:=img_temp2; img_temp2:=nil;{free temp memory} head.naxis3:=3;{now three colors. Header string will be updated by saving or calling procedure update_header_for_colour} head.naxis:=3; {from 2 to 3 dimensions. Header string will be updated by saving or calling procedure update_header_for_colour} end; procedure demosaic_x_trans(var img:image_array);{make from Fuji X-trans three colors} var X,Y,x2,y2,xpos,ypos,xpos6,ypos6: integer; red,blue : single; img_temp2 : image_array; begin setlength(img_temp2,3,head.width,head.height);{set length of image array color} for y :=2 to head.height-2 do {-2 = -1 -1} begin for x:=2 to head.width-2 do begin try x2:=x-1; y2:=y-1; xpos:=1+x2-(x2 div 3)*3;{position in 3x3 matrix} ypos:=1+y2-(y2 div 3)*3; xpos6:=1+x2-(x2 div 6)*6;{position in 6x6 matrix} ypos6:=1+y2-(y2 div 6)*6; {use only one neighbour pixel with preference go right, go below, go left. Use only on neighbour pixel for maximum sharpness } if ((xpos=1) and (ypos=1)) then {green}begin red := img[0,x ,y+1]; {near red pixel}; img_temp2[1,x,y]:= img[0,x, y ] ; blue := img[0,x+1,y ]; {near blue pixel} end else if ((xpos=3) and (ypos=1)) then {green}begin red := img[0,x ,y+1]; {near red pixel}; img_temp2[1,x,y]:= img[0,x, y ] ; blue := img[0,x-1,y ]; {near blue pixel} end else if ((xpos=2) and (ypos=2)) then {green}begin red := img[0,x+1,y ]; {near red pixel}; img_temp2[1,x,y]:= img[0,x, y ] ; blue:= img[0,x ,y+1]; {near blue pixel} end else if ((xpos=1) and (ypos=3)) then {green}begin red := img[0,x ,y-1]; {near red pixel}; img_temp2[1,x,y]:= img[0,x, y ] ; blue:= img[0,x+1,y ]; {near blue pixel} end else if ((xpos=3) and (ypos=3)) then {green}begin red := img[0,x ,y-1]; {near red pixel}; img_temp2[1,x,y]:= img[0,x, y ] ; blue := img[0,x-1,y ]; {near blue pixel} end else if ((xpos=2) and (ypos=1)) then {blue}begin red := img[0,x,y-1] ; {near red pixel}; img_temp2[1,x,y]:= img[0,x+1 ,y ]; {near green pixel}; blue := img[0,x ,y ]; end else if ((xpos=2) and (ypos=3)) then {blue}begin red := img[0,x ,y+1]; {near red pixel}; img_temp2[1,x,y]:= img[0,x+1 ,y ]; {near green pixel}; blue := img[0,x ,y ]; end else if ((xpos=1) and (ypos=2)) then {red}begin red := img[0,x ,y ]; img_temp2[1,x,y]:= img[0,x+1 ,y ];{near green pixel(s)}; blue := img[0,x-1,y ]; {near blue pixel(s)} end else if ((xpos=3) and (ypos=2)) then {red}begin red := img[0,x ,y ]; img_temp2[1,x,y]:= img[0,x ,y+1]; {near green pixel(s)}; blue := img[0,x+1,y ]; {near blue pixel(s)} end; {fix red and green swap} if ((xpos6<=3) and (ypos6<=3)) then begin img_temp2[0,x,y]:=red; img_temp2[2,x,y]:=blue;end else if ((xpos6> 3) and (ypos6<=3)) then begin img_temp2[0,x,y]:=blue; img_temp2[2,x,y]:=red;end else if ((xpos6<=3) and (ypos6> 3)) then begin img_temp2[0,x,y]:=blue; img_temp2[2,x,y]:=red;end else if ((xpos6> 3) and (ypos6> 3)) then begin img_temp2[0,x,y]:=red; img_temp2[2,x,y]:=blue;end; except end; end;{x loop} end;{y loop} img:=img_temp2; img_temp2:=nil;{free temp memory} head.naxis3:=3;{now three colors. Header string will be updated by saving or calling procedure update_header_for_colour} head.naxis:=3; {from 2 to 3 dimensions. Header string will be updated by saving or calling procedure update_header_for_colour} end; procedure demosaic_astrosimple(var img:image_array;pattern: integer);{Spread each colour pixel to 2x2. Works well for astro oversampled images. Idea by Han.k} var X,Y,offsetx, offsety: integer; red,green_odd,green_even,blue : boolean; img_temp2 : image_array; value : single; begin case pattern of 0: begin offsetx:=0; offsety:=0; end;{'GRBG'} 1: begin offsetx:=0; offsety:=1; end;{'BGGR'} 2: begin offsetx:=1; offsety:=0; end;{'RGGB'} 3: begin offsetx:=1; offsety:=1; end;{'GBRG'} else exit; end; setlength(img_temp2,3,head.width,head.height);{set length of image array color} for y := 0 to head.height-2 do {-2 = -1 -1} for x:=0 to head.width-2 do begin {clear green} img_temp2[1,x,y]:=0; end; for y := 0 to head.height-2 do {-2 = -1 -1} begin for x:=0 to head.width-2 do begin try green_even:= ( (odd(x+1+offsetX)) and (odd(y+1+offsetY)) );{even(i) function is odd(i+1), even is here for array position not fits position} green_odd := ( (odd(x+offsetX)) and (odd(y+offsetY)) ); red :=( (odd(x+offsetX)) and (odd(y+1+offsetY)) ); blue:=( (odd(x+1+offsetX)) and (odd(y+offsetY)) ); value:=img[0,x, y ]; if ((green_odd) or (green_even)) then begin value:=value/2; img_temp2[1,x,y]:=img_temp2[1,x,y]+value; img_temp2[1,x,y+1]:=img_temp2[1,x,y+1]+value; img_temp2[1,x+1,y]:=img_temp2[1,x+1,y]+value; img_temp2[1,x+1,y+1]:=img_temp2[1,x+1,y+1]+value; end else if red then begin img_temp2[0,x,y]:=value; img_temp2[0,x+1,y]:=value; img_temp2[0,x,y+1]:=value; img_temp2[0,x+1,y+1]:=value; end else if blue then begin img_temp2[2,x,y]:=value; img_temp2[2,x+1,y]:=value; img_temp2[2,x,y+1]:=value; img_temp2[2,x+1,y+1]:=value; end; except end; end;{x loop} end;{y loop} img:=img_temp2; img_temp2:=nil;{free temp memory} head.naxis3:=3;{now three colors. Header string will be updated by saving or calling procedure update_header_for_colour} head.naxis:=3; {from 2 to 3 dimensions. Header string will be updated by saving or calling procedure update_header_for_colour} end; {not used} procedure demosaic_astrosimplebayercombined(var img:image_array;pattern: integer);{Spread each colour pixel to 2x2. Works well for astro oversampled images. Idea by Han.k} var X,Y,offsetx, offsety: integer; red,green_odd,green_even,blue : boolean; img_temp2 : image_array; value : single; begin case pattern of 0: begin offsetx:=0; offsety:=0; end; 1: begin offsetx:=0; offsety:=1; end; 2: begin offsetx:=1; offsety:=0; end; 3: begin offsetx:=1; offsety:=1; end; else exit; end; setlength(img_temp2,3,head.width,head.height);{set length of image array color} for y := 0 to head.height-2 do {-2 = -1 -1} for x:=0 to head.width-2 do begin {clear green} img_temp2[1,x,y]:=0; end; for y := 0 to head.height-2 do {-2 = -1 -1} begin for x:=0 to head.width-2 do begin try green_even:= ( (odd(x+1+offsetX)) and (odd(y+1+offsetY)) );{even(i) function is odd(i+1), even is here for array position not fits position} green_odd := ( (odd(x+offsetX)) and (odd(y+offsetY)) ); red :=( (odd(x+offsetX)) and (odd(y+1+offsetY)) ); blue:=( (odd(x+1+offsetX)) and (odd(y+offsetY)) ); value:=img[0,x, y ]; if green_even then begin value:=value/2; img_temp2[1,x,y]:=img_temp2[1,x,y]+value; img_temp2[1,x-1,y]:=img_temp2[1,x-1,y]+value; img_temp2[1,x,y-1]:=img_temp2[1,x,y-1]+value; img_temp2[1,x-1,y-1]:=img_temp2[1,x-1,y-1]+value; end else if green_odd then begin value:=value/2; img_temp2[1,x,y]:=img_temp2[1,x,y]+value; img_temp2[1,x+1,y]:=img_temp2[1,x+1,y]+value; img_temp2[1,x,y+1]:=img_temp2[1,x,y+1]+value; img_temp2[1,x+1,y+1]:=img_temp2[1,x+1,y+1]+value; end else if red then begin img_temp2[0,x,y]:=value; img_temp2[0,x+1,y]:=value; img_temp2[0,x,y-1]:=value; img_temp2[0,x+1,y-1]:=value; end else if blue then begin img_temp2[2,x,y]:=value; img_temp2[2,x-1,y]:=value; img_temp2[2,x,y+1]:=value; img_temp2[2,x-1,y+1]:=value; end; except end; end;{x loop} end;{y loop} img:=img_temp2; img_temp2:=nil;{free temp memory} head.naxis3:=3;{now three colors. Header string will be updated by saving or calling procedure update_header_for_colour} head.naxis:=3; {from 2 to 3 dimensions. Header string will be updated by saving or calling procedure update_header_for_colour} end; procedure demosaic_astroM_bilinear_interpolation(var img:image_array;pattern: integer);{make from sensor bayer pattern the three colors} var X,Y,offsetx, offsety, count: integer; red,green_odd,green_even,blue : boolean; img_temp2 : image_array; a1,a2,a3,a4,a5,a6,a7,a8, average1,average2,average3,luminance,signal,signal2,bg : single; begin case pattern of 0: begin offsetx:=0; offsety:=0; end; 1: begin offsetx:=0; offsety:=1; end; 2: begin offsetx:=1; offsety:=0; end; 3: begin offsetx:=1; offsety:=1; end; else exit; end; setlength(img_temp2,3,head.width,head.height);{set length of image array color} {calculate mean background value} count:=0; bg:=0; for y:= 10 to (head.height-10) div 100 do for x:=10 to (head.width-10) div 100 do begin bg:=bg+img[0,x ,y ]+ img[0,x+1,y ]+ img[0,x ,y+1]+ img[0,x+1,y+1]; inc(count,4) end; bg:=bg/count;{average background value} signal:=0.5*bg; {2 values 140,100 average is 120, delta is 20/120 is 16.7%} signal2:=signal/1.67; {4 values 140,100,100,100 average is 110, delta 30/110 is 27.2%, so factor 1.67 difference} for y := 1 to head.height-2 do {-2 = -1 -1} begin for x:=1 to head.width-2 do begin try green_even:= ( (odd(x+1+offsetX)) and (odd(y+1+offsetY)) );{even(i) function is odd(i+1), even is here for array position not fits position. Place here otherwise stars get tail} green_odd := ( (odd(x+offsetX)) and (odd(y+offsetY)) ); red :=( (odd(x+offsetX)) and (odd(y+1+offsetY)) ); blue:=( (odd(x+1+offsetX)) and (odd(y+offsetY)) ); if green_odd then begin a1:=img[0,x ,y-1]; a2:=img[0,x ,y+1]; average1:=(a1+a2)/2;{red neighbor pixels }; average2:=(img[0,x, y ] ); a3:=img[0,x-1,y ]; a4:=img[0,x+1,y ]; average3:=(a3+a4)/2; {blue neighbor pixels } if ((a1>average1+signal) or (a2>average1+signal) or (a3>average2+signal) or (a4>average2+signal)) {severe slope} then begin luminance:=(average1+average2+average3)/3; img_temp2[0,x,y]:=luminance;{remove color info, keep luminace} img_temp2[1,x,y]:=luminance; img_temp2[2,x,y]:=luminance; end else begin img_temp2[0,x,y]:=average1; img_temp2[1,x,y]:=average2; img_temp2[2,x,y]:=average3; end; end else if green_even then begin a1:=img[0,x-1,y ]; a2:=img[0,x+1,y ]; average1:=(a1+a2)/2;{red neighbor pixels }; average2:= (img[0,x, y ] ); a3:=img[0,x ,y-1]; a4:=img[0,x ,y+1]; average3:=(a3+a4)/2; {blue neighbor pixels }; if ((a1>average1+signal) or (a2>average1+signal) or (a3>average2+signal) or (a4>average2+signal)) {severe slope} then begin luminance:=(average1+average2+average3)/3; img_temp2[0,x,y]:=luminance;{remove color info, keep luminace} img_temp2[1,x,y]:=luminance; img_temp2[2,x,y]:=luminance; end else begin img_temp2[0,x,y]:=average1; img_temp2[1,x,y]:=average2; img_temp2[2,x,y]:=average3; end; end else if red then begin average1:=(img[0,x, y ]); a1:= img[0,x-1,y ]; a2:= img[0,x+1,y ]; a3:= img[0,x ,y-1]; a4:= img[0,x ,y+1];{green neighbours} average2:=(a1+a2+a3+a4)/4; a5:= img[0,x-1,y-1]; a6:= img[0,x-1,y+1]; a7:= img[0,x+1,y-1]; a8:= img[0,x+1,y+1];{blue neighbours} average3:=(a5+a6+a7+a8)/4; if ((a1>average2+signal2) or (a2>average2+signal2) or (a3>average2+signal2) or (a4>average2+signal2) or (a5>average3+signal2) or (a6>average3+signal2) or (a7>average3+signal2) or (a8>average3+signal2) ) then {severe slope} begin luminance:=(average1+average2+average3)/3; img_temp2[0,x,y]:=luminance;{remove color info, keep luminace} img_temp2[1,x,y]:=luminance; img_temp2[2,x,y]:=luminance; end else begin img_temp2[0,x,y]:=average1; img_temp2[1,x,y]:=average2; img_temp2[2,x,y]:=average3; end; end else if blue then begin average1:=(img[0,x, y ]); a1:= img[0,x-1,y-1]; a2:= img[0,x-1,y+1]; a3:= img[0,x+1,y-1]; a4:= img[0,x+1,y+1];{red neighbours} average1:=(a1+a2+a3+a4)/4; a5:= img[0,x-1,y ]; a6:= img[0,x+1,y ]; a7:= img[0,x ,y-1]; a8:= img[0,x ,y+1];{green neighbours} average2:=(a5+a6+a7+a8)/4; average3:=img[0,x, y ]; if ((a1>average1+signal2) or (a2>average1+signal2) or (a3>average1+signal2) or (a4>average1+signal2) or (a5>average2+signal2) or (a6>average2+signal2) or (a7>average2+signal2) or (a8>average2+signal2) ) then {severe slope} begin luminance:=(average1+average2+average3)/3; img_temp2[0,x,y]:=luminance;{remove color info, keep luminace} img_temp2[1,x,y]:=luminance; img_temp2[2,x,y]:=luminance; end else begin img_temp2[0,x,y]:=average1; img_temp2[1,x,y]:=average2; img_temp2[2,x,y]:=average3; end; end; except end; end;{x loop} end;{y loop} img:=img_temp2; img_temp2:=nil;{free temp memory} head.naxis3:=3;{now three colors. Header string will be updated by saving or calling procedure update_header_for_colour} head.naxis:=3; {from 2 to 3 dimensions. Header string will be updated by saving or calling procedure update_header_for_colour} end; procedure demosaic_astroC_bilinear_interpolation(var img:image_array;saturation {saturation point}, pattern: integer);{make from sensor bayer pattern the three colors} var X,Y,offsetx, offsety, counter,fitsX,fitsY,x2,y2,sat_counter: integer; red,green_odd,green_even,blue : boolean; img_temp2 : image_array; a1,a2,a3,a4,a5,a6,a7,a8, average1,average2,average3,luminance, r,g,b,colred,colgreen,colblue,rgb,lowest: single; bg, sqr_dist : double; const step = 5; begin case pattern of 0: begin offsetx:=0; offsety:=0; end; 1: begin offsetx:=0; offsety:=1; end; 2: begin offsetx:=1; offsety:=0; end; 3: begin offsetx:=1; offsety:=1; end; else exit; end; setlength(img_temp2,3,head.width,head.height);{set length of image array color} bg:=0; counter:=0;{prevent divide by zero for fully saturated images} for y := 1 to head.height-2 do {-2 = -1 -1} begin for x:=1 to head.width-2 do begin try green_even:= ( (odd(x+1+offsetX)) and (odd(y+1+offsetY)) );{even(i) function is odd(i+1), even is here for array position not fits position} green_odd := ( (odd(x+offsetX)) and (odd(y+offsetY)) ); red :=( (odd(x+offsetX)) and (odd(y+1+offsetY)) ); blue:=( (odd(x+1+offsetX)) and (odd(y+offsetY)) ); if green_odd then begin a1:=img[0,x ,y-1]; a2:=img[0,x ,y+1]; average1:=(a1+a2)/2;{red neighbor pixels }; average2:=(img[0,x, y ] ); a3:=img[0,x-1,y ]; a4:=img[0,x+1,y ]; average3:=(a3+a4)/2; {blue neighbor pixels } if ((a1>saturation) or (a2>saturation) or (a3>saturation) or (a4>saturation)) {saturation} then begin img_temp2[0,x,y]:=(average1+average2+average3)/3;{store luminance} img_temp2[1,x,y]:=$FFFFFF;{marker pixel as saturated} end else begin img_temp2[0,x,y]:=average1; img_temp2[1,x,y]:=average2; img_temp2[2,x,y]:=average3; end; end else if green_even then begin a1:=img[0,x-1,y ]; a2:=img[0,x+1,y ]; average1:=(a1+a2)/2;{red neighbor pixels }; average2:= (img[0,x, y ] ); a3:=img[0,x ,y-1]; a4:=img[0,x ,y+1]; average3:=(a3+a4)/2; {blue neighbor pixels }; if ((a1>saturation) or (a2>saturation) or (a3>saturation) or (a4>saturation)) {saturation} then begin img_temp2[0,x,y]:=(average1+average2+average3)/3;{store luminance} img_temp2[1,x,y]:=$FFFFFF;{marker pixel as saturated} end else begin img_temp2[0,x,y]:=average1; img_temp2[1,x,y]:=average2; img_temp2[2,x,y]:=average3; end; end else if red then begin average1:=(img[0,x, y ]); a1:= img[0,x-1,y ]; a2:= img[0,x+1,y ]; a3:= img[0,x ,y-1]; a4:= img[0,x ,y+1];{green neighbours} average2:=(a1+a2+a3+a4)/4; a5:= img[0,x-1,y-1]; a6:= img[0,x-1,y+1]; a7:= img[0,x+1,y-1]; a8:= img[0,x+1,y+1];{blue neighbours} average3:=(a5+a6+a7+a8)/4; if ((a1>saturation) or (a2>saturation) or (a3>saturation) or (a4>saturation) or (a5>saturation) or (a6>saturation) or (a7>saturation) or (a8>saturation) ) then {saturation} begin img_temp2[0,x,y]:=(average1+average2+average3)/3;{store luminance} img_temp2[1,x,y]:=$FFFFFF;{marker pixel as saturated} end else begin img_temp2[0,x,y]:=average1; img_temp2[1,x,y]:=average2; img_temp2[2,x,y]:=average3; {calculate background} bg:=bg+average1+average2+average3; inc(counter,3); {added red, green, blue values} end; end else if blue then begin average1:=(img[0,x, y ]); a1:= img[0,x-1,y-1]; a2:= img[0,x-1,y+1]; a3:= img[0,x+1,y-1]; a4:= img[0,x+1,y+1];{red neighbours} average1:=(a1+a2+a3+a4)/4; a5:= img[0,x-1,y ]; a6:= img[0,x+1,y ]; a7:= img[0,x ,y-1]; a8:= img[0,x ,y+1];{green neighbours} average2:=(a5+a6+a7+a8)/4; average3:=img[0,x, y ]; if ((a1>saturation) or (a2>saturation) or (a3>saturation) or (a4>saturation) or (a5>saturation) or (a6>saturation) or (a7>saturation) or (a8>saturation) ) then {saturation} begin img_temp2[0,x,y]:=(average1+average2+average3)/3;{store luminance} img_temp2[1,x,y]:=$FFFFFF;{marker pixel as saturated} end else begin img_temp2[0,x,y]:=average1; img_temp2[1,x,y]:=average2; img_temp2[2,x,y]:=average3; end; end; except end; end;{x loop} end;{y loop} img:=img_temp2; if counter>0 then {not fully saturated image} begin {correct colour saturated pixels } bg:=bg/counter; {background} sat_counter:=0; for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do if img_temp2[1,fitsX,fitsY]=$FFFFFF {marker saturated} then begin colred:=0; colgreen:=0; colblue:=0; counter:=0; inc(sat_counter); luminance:=img_temp2[0,fitsX,fitsY]; luminance:=luminance-bg;{luminance above background} begin for y:=-step to step do for x:=-step to step do begin x2:=fitsX+x; y2:=fitsY+y; if ((x2>=0) and (x2<head.width) and (y2>=0) and (y2<head.height) ) then {within image} begin sqr_dist:=x*x+y*y; if sqr_dist<=step*step then {circle only} begin g:= img_temp2[1,x2,y2]; if g<>$FFFFFF {not saturated pixel} then begin r:= img_temp2[0,x2,y2]; B:= img_temp2[2,x2,y2]; if (r-bg)>0 {signal} then colred :=colred+ (r-bg); {bg=average red and will be little above the background since stars are included in the average} if (g-bg)>0 then colgreen:=colgreen+ (g-bg); if (b-bg)>0 then colblue:= colblue + (b-bg); inc(counter); end; end; end; end; end; rgb:=0; if counter>=1 then begin colred:=colred/counter;{scale using the number of data points=count} colgreen:=colgreen/counter; colblue:=colblue/counter; if colred>colblue then lowest:=colblue else lowest:=colred; if colgreen<lowest {purple} then colgreen:=lowest; {prevent purple stars, purple stars are physical not possible} rgb:=(colred+colgreen+colblue+0.00001)/3; {0.00001, prevent dividing by zero} img[0,fitsX , fitsY ]:=bg+ luminance*colred/rgb; img[1,fitsX , fitsY ]:=bg+ luminance*colgreen/rgb; img[2,fitsX , fitsY ]:=bg+ luminance*colblue/rgb; end else begin img[1,fitsX , fitsY ]:=img_temp2[0,fitsX , fitsY ]; img[2,fitsX , fitsY ]:=img_temp2[0,fitsX , fitsY ]; end; end; end{not full saturated} else begin {fully saturated image} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin img[0,fitsX , fitsY ]:=saturation; img[1,fitsX , fitsY ]:=saturation; img[2,fitsX , fitsY ]:=saturation; end; end; if sat_counter/(head.width*head.height)>0.1 then memo2_message('█ █ █ █ █ █ More than 10% of the image is saturated and will give poor results!! Try demosaic method AstroSimple and exposure shorter next time. █ █ █ █ █ █ '); img_temp2:=nil;{free temp memory} head.naxis3:=3;{now three colors. Header string will be updated by saving or calling procedure update_header_for_colour} head.naxis:=3; {from 2 to 3 dimensions. Header string will be updated by saving or calling procedure update_header_for_colour} end; procedure demosaic_superpixel(var img:image_array; pattern: integer);{make from sensor bayer pattern the three colors} var x,y,x2,y2,w,h: integer; img_temp2 : image_array; begin w:=head.width div 2; h:=head.height div 2; setlength(img_temp2,3,w,h);{set length of image array color} if pattern=0 then {GRBG} for y := 0 to h-1 do begin for x:=0 to w-1 do begin try x2:=x+x; y2:=y+y; img_temp2[0,x,y]:= img[0,x2+1,y2 ]; img_temp2[1,x,y]:=(img[0,x2 ,y2 ] + img[0,x2+1,y2+1 ])/2; img_temp2[2,x,y]:= img[0,x2 ,y2+1]; except end; end;{x loop} end {y loop} else if pattern=1 then {BGGR} for y := 0 to h-1 do begin for x:=0 to w-1 do begin try x2:=x+x; y2:=y+y; img_temp2[0,x,y]:= img[0,x2+1,y2+1]; img_temp2[1,x,y]:=(img[0,x2+1,y2 ] + img[0,x2,y2+1 ])/2; img_temp2[2,x,y]:= img[0,x2 ,y2 ]; except end; end;{x loop} end {y loop} else if pattern=2 then {RGGB} for y := 0 to h-1 do begin for x:=0 to w-1 do begin try x2:=x+x; y2:=y+y; img_temp2[0,x,y]:= img[0,x2, y2 ]; img_temp2[1,x,y]:=(img[0,x2+1,y2 ] + img[0,x2,y2+1 ])/2; img_temp2[2,x,y]:= img[0,x2+1,y2+1]; except end; end;{x loop} end {y loop} else if pattern=3 then {GBRG} for y := 0 to h-1 do begin for x:=0 to w-1 do begin try x2:=x+x; y2:=y+y; img_temp2[0,x,y]:= img[0,x2, y2+1]; img_temp2[1,x,y]:=(img[0,x2 ,y2 ] + img[0,x2+1,y2+1 ])/2; img_temp2[2,x,y]:= img[0,x2+1,y2 ]; except end; end;{x loop} end;{y loop} img:=img_temp2; head.width:=w; head.height:=h; img_temp2:=nil;{free temp memory} head.naxis3:=3;{now three colors. Header string will be updated by saving or calling procedure update_header_for_colour} head.naxis:=3; {from 2 to 3 dimensions. Header string will be updated by saving or calling procedure update_header_for_colour} end; procedure preserve_colour_saturated_bayer(img: image_array);{for bayer matrix} var fitsX,fitsY,w,h : integer; begin Application.ProcessMessages; if esc_pressed then begin exit;end; w:=trunc(head.width/2); {half size} h:=trunc(head.height/2); for fitsY:=0 to h-1 do {go through all 2x2 and replace and if saturated replace with previous 2x2} for fitsX:=1 to w-1 do begin if ((img[0,fitsx*2 ,fitsY*2 ]>65500) or (img[0,fitsx*2+1,fitsY*2 ]>65500) or (img[0,fitsx*2 ,fitsY*2+1]>65500) or (img[0,fitsx*2+1,fitsY*2+1]>65500) ) then {saturation} begin img[0,fitsx*2 ,fitsY*2 ]:=img[0,(fitsx-1)*2 ,fitsY*2 ]; img[0,fitsx*2+1,fitsY*2 ]:=img[0,(fitsx-1)*2+1,fitsY*2 ]; img[0,fitsx*2 ,fitsY*2+1]:=img[0,(fitsx-1)*2 ,fitsY*2+1]; img[0,fitsx*2+1,fitsY*2+1]:=img[0,(fitsx-1)*2+1,fitsY*2+1]; end; end; end; function get_demosaic_pattern : integer; {get the required de-bayer range 0..3} var pattern: string; automatic :boolean; ybayroff2 : double; begin automatic:=stackmenu1.bayer_pattern1.Text='auto'; if automatic then begin pattern:=bayerpat {from fits header} end else pattern:=stackmenu1.bayer_pattern1.text; if length(pattern)<4 then pattern:='RGGB';//not specified, prevent errors in next code if pattern=bayer_pattern[2]{'RGGB'} then begin result:=2; {offsetx:=1; offsety:=0;} end {ASI294, ASI071, most common pattern} else if pattern=bayer_pattern[0]{'GRBG'} then begin result:=0 {offsetx:=0; offsety:=0;} end {ASI1600MC} else if pattern=bayer_pattern[1]{'BGGR'} then begin result:=1 {offsetx:=0; offsety:=1;} end else if pattern=bayer_pattern[3]{'GBRG'} then begin result:=3; {offsetx:=1; offsety:=1;} end else if ((pattern=bayer_pattern[4]{'GGGG'}) or (pattern[1]='X')) then begin result:=4; {FILT-PAT= 'GGGGBRGGGGRBGGGG', BAYERPAT= 'GGGG' Fujifilm X-trans} end else result:=2;{empthy no bayer pattern, take default RGGB} {corrections for xbayroff,ybayroff, TOP-DOWN} ybayroff2:=ybayroff; if pos('BOT',roworder)>0 then ybayroff2:=ybayroff2+1;{'BOTTOM-UP'= lower-left corner first in the file. or 'TOP-DOWN'= top-left corner first in the file.(default)} if odd(round(xbayroff)) then begin if result=2 then result:=0 else if result=0 then result:=2 else if result=1 then result:=3 else if result=3 then result:=1; {shifted bayer pattern due to flip or sub section} end; if odd(round(ybayroff2)) then begin if result=1 then result:=0 else if result=0 then result:=1 else if result=3 then result:=2 else if result=2 then result:=3; {shifted bayer pattern due to flip or sub section} end; bayerpattern_final:=result; {store for global use} end; procedure demosaic_bayer(var img: image_array); {convert OSC image to colour} var pattern : integer; begin pattern:= get_demosaic_pattern; if pattern=4 then {Fuji film X-trans} demosaic_x_trans(img){make from Fuji X-trans three colors} else if pos('AstroC',stackmenu1.demosaic_method1.text)<>0 then begin if head.datamax_org>16384 then demosaic_astroC_bilinear_interpolation(img,65535 div 2,pattern){16 bit image. Make from sensor bayer pattern the three colors} else if head.datamax_org>4096 then demosaic_astroC_bilinear_interpolation(img,16383 div 2,pattern){14 bit image. Make from sensor bayer pattern the three colors} else demosaic_astroC_bilinear_interpolation(img,4095 div 2,pattern){12 bit image. Make from sensor bayer pattern the three colors} end else if pos('Simple',stackmenu1.demosaic_method1.text)<>0 then {} demosaic_astrosimple(img,pattern){make from sensor bayer pattern the three colors} else if pos('AstroM',stackmenu1.demosaic_method1.text)<>0 then {} demosaic_astroM_bilinear_interpolation(img,pattern){make from sensor bayer pattern the three colors} else if pos('Super',stackmenu1.demosaic_method1.text)<>0 then {} demosaic_superpixel(img,pattern){make from sensor bayer pattern the three colors} else demosaic_bilinear_interpolation(img,pattern);{use Bilinear interpolation. Make from sensor bayer pattern the three colors} end; procedure demosaic_advanced(var img : image_array);{demosaic img} begin demosaic_bayer(img); memo2_message('De-mosaic bayer pattern used '+bayer_pattern[bayerpattern_final]); if stackmenu1.osc_auto_level1.checked then begin memo2_message('Adjusting colour levels as set in tab "stack method"'); stackmenu1.auto_background_level1Click(nil); apply_factors;{histogram is after this action invalid} stackmenu1.reset_factors1Click(nil);{reset factors to default} use_histogram(img,true {update}); {plot histogram in colour, set sliders} if stackmenu1.osc_colour_smooth1.checked then begin memo2_message('Applying colour-smoothing filter image as set in tab "stack method". Factors are set in tab "pixel math 1"'); smart_colour_smooth(img,strtofloat2(stackmenu1.osc_smart_smooth_width1.text),strtofloat2(stackmenu1.osc_smart_colour_sd1.text),stackmenu1.osc_preserve_r_nebula1.checked,false {get hist});{histogram doesn't needs an update} end; end else begin memo2_message('Adjusting colour levels and colour smooth are disabled. See tab "stack method"'); use_histogram(img,true {update}); {plot histogram in colour, set sliders} end; end; procedure HSV2RGB(h {0..360}, s {0..1}, v {0..1} : single; out r,g,b: single); {HSV to RGB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} var h2,h2mod2,m,c,x: single; begin if s=0 then begin r:=v; g:=v; b:=v; end else begin c:=v*s;{chroma} h2:=h/60; h2mod2:=h2-2*trunc(h2/2);{h2 mod 2 for floats} x:=c*(1-abs((h2mod2)-1)); if h2<1 then begin r:=c; g:=x; b:=0; end else if h2<2 then begin r:=x; g:=c; b:=0; end else if h2<3 then begin r:=0; g:=c; b:=x; end else if h2<4 then begin r:=0; g:=x; b:=c; end else if h2<5 then begin r:=x; g:=0; b:=c; end else begin r:=c; g:=0; b:=x; end; m:=v-c; r:=r+m; g:=g+m; b:=b+m; end; end; { HSV2RGB} procedure RGB2HSV(r,g,b : single; out h {0..360}, s {0..1}, v {0..1}: single);{RGB to HSVB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} var rgbmax,rgbmin :single; begin rgbmax := Max(R, Max(G, B)); rgbmin := Min(R, Min(G, B)); if rgbmax = rgbmin then H := 0 else begin if r = rgbmax then H :=60*(g - b) / (rgbmax - rgbmin) else if g = rgbmax then H :=60*(2 + (b - r) / (rgbmax - rgbmin)) else H := 60*(4 + (r- g) / (rgbmax - rgbmin)); if H<0 then h:=h+360; end; if rgbmax=0 then s:=0 else s:=(rgbmax-rgbmin)/rgbmax;{saturation} v:=rgbmax; end; procedure show_shape_manual_alignment(index: integer);{show the marker on the reference star} var X,Y :double; begin X:=strtofloat2(stackmenu1.listview1.Items.item[index].subitems.Strings[L_X]); Y:=strtofloat2(stackmenu1.listview1.Items.item[index].subitems.Strings[L_Y]); show_marker_shape(mainwindow.shape_manual_alignment1, 1 {circle, assume a good lock},20,20,10 {minimum size},X,Y); end; procedure plot_fits(img:timage; center_image,show_header:boolean); var i,j,col,col_r,col_g,col_b :integer; colrr,colgg,colbb,luminance, luminance_stretched,factor, largest, sat_factor,h,s,v: single; Bitmap : TBitmap;{for fast pixel routine} xLine : PByteArray;{for fast pixel routine} begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } img.visible:=true; mainwindow.memo1.visible:=show_header;{start updating memo1} {create bitmap} bitmap := TBitmap.Create; try with bitmap do begin width := head.width; height := head.height; // Unclear why this must follow width/height to work correctly. // If PixelFormat precedes width/height, bitmap will always be black. bitmap.PixelFormat := pf24bit; end; except; end; sat_factor:=1-mainwindow.saturation_factor_plot1.position/10; cblack:=mainwindow.minimum1.position; cwhite:=mainwindow.maximum1.position; if cwhite<=cblack then cwhite:=cblack+1; for i:=0 to head.height-1 do begin xLine := Bitmap.ScanLine[(head.height-1)-i];{head.height-1)-i, FITS count from bottom, windows from top} for j:=0 to head.width-1 do begin col:=round(img_loaded[0,j,i]); colrr:=(col-cblack)/(cwhite-cblack);{scale to 1} if head.naxis3>=2 then {at least two colours} begin col:=round(img_loaded[1,j,i]); colgg:=(col-cblack)/(cwhite-cblack);{scale to 1} end else colgg:=colrr; if head.naxis3>=3 then {at least three colours} begin col:=round(img_loaded[2,j,i]); colbb:=(col-cblack)/(cwhite-cblack);{scale to 1} if sat_factor<>1 then {adjust saturation} begin {see same routine as stretch_img} RGB2HSV(colrr,colgg,colbb,h,s,v); HSV2RGB(h,s*sat_factor,v,colrr,colgg,colbb);{increase saturation} end; end else colbb:=colrr; if colrr<=0.00000000001 then colrr:=0.00000000001;{after rgb2hsv} if colgg<=0.00000000001 then colgg:=0.00000000001; if colbb<=0.00000000001 then colbb:=0.00000000001; {find brightest colour and resize all if above 1} largest:=colrr; if colgg>largest then largest:=colgg; if colbb>largest then largest:=colbb; if largest>1 then {clamp to 1 but preserve colour, so ratio r,g,b} begin colrr:=colrr/largest; colgg:=colgg/largest; colbb:=colbb/largest; largest:=1; end; if stretch_on then {Stretch luminance only. Keep RGB ratio !!} begin luminance:=(colrr+colgg+colbb)/3;{luminance in range 0..1} luminance_stretched:=stretch_c[trunc(32768*luminance)]; factor:=luminance_stretched/luminance; if factor*largest>1 then factor:=1/largest; {clamp again, could be higher then 1} col_r:=round(colrr*factor*255);{stretch only luminance but keep rgb ratio!} col_g:=round(colgg*factor*255);{stretch only luminance but keep rgb ratio!} col_b:=round(colbb*factor*255);{stretch only luminance but keep rgb ratio!} end else begin col_r:=round(255*colrr); col_g:=round(255*colgg); col_b:=round(255*colbb); end; {$ifdef mswindows} xLine^[j*3] :=col_b; {3*8=24 bit} xLine^[j*3+1]:=col_g; {fast pixel write routine } xLine^[j*3+2]:=col_r; {$endif} {$ifdef darwin} {MacOS} xLine^[j*4+1]:=col_r; {4*8=32 bit} xLine^[j*4+2]:=col_g; {fast pixel write routine } xLine^[j*4+3]:=col_b; {$endif} {$ifdef linux} xLine^[j*4] :=col_b; {4*8=32 bit} xLine^[j*4+1]:=col_g; {fast pixel write routine } xLine^[j*4+2]:=col_r; {$endif} end;{j} end; {i} img.picture.Graphic := Bitmap; {show image} Bitmap.Free; img.Picture.Bitmap.Transparent := True; img.Picture.Bitmap.TransparentColor := clblack; if center_image then {image new of resized} begin img.top:=0; img.height:=mainwindow.panel1.height; img.left:=0; end; img.width:=round(img.height*head.width/head.height); {lock image aspect always for case a image with a different is clicked on in stack menu} if img=mainwindow.image1 then {plotting to mainwindow?} begin {next two could be written more efficient using previous bitmap} if mainwindow.Flip_horizontal1.Checked then mainwindow.Flip_horizontal1Click(nil); if mainwindow.flip_vertical1.Checked then mainwindow.flip_vertical1Click(nil); plot_north; {draw arrow or clear indication position north depending on value head.cd1_1} plot_north_on_image; plot_large_north_indicator; if mainwindow.add_marker_position1.checked then mainwindow.add_marker_position1.checked:=place_marker_radec(marker_position);{place a marker} plot_grid; plot_constellations; plot_text; if ((annotated) and (mainwindow.annotations_visible1.checked)) then plot_annotations(false {use solution vectors},false); mainwindow.statusbar1.panels[5].text:=inttostr(head.width)+' x '+inttostr(head.height)+' x '+inttostr(head.naxis3)+' '+inttostr(nrbits)+' BPP';{give image dimensions and bit per pixel info} update_statusbar_section5;{update section 5 with image dimensions in degrees} mainwindow.statusbar1.panels[7].text:=''; {2020-2-15 moved from load_fits to plot_image. Clear any outstanding error} update_menu(true);{2020-2-15 moved from load_fits to plot_image. file loaded, update menu for fits} end; {do refresh at the end for smooth display, especially for blinking } // img.refresh;{important, show update} img.invalidate;{important, show update. NoTe refresh aligns image to the left!!} quads_displayed:=false; {displaying quads doesn't require a screen refresh} Screen.Cursor:=crDefault; end; procedure get_hist(colour:integer; img :image_array); var i,j,col,his_total,count, width5, height5,offsetW,offsetH : integer; total_value : double; begin if colour+1>length(img) then {robust detection, case binning is applied and image is mono} colour:=0; {used red only} for i:=0 to 65535 do histogram[colour,i] := 0;{clear histogram of specified colour} his_total:=0; total_value:=0; count:=1;{prevent divide by zero} width5:=Length(img[0]); {width} height5:=Length(img[0][0]); {height} offsetW:=trunc(width5*0.042); {if Libraw is used, ignored unused sensor areas up to 4.2%} offsetH:=trunc(height5*0.015); {if Libraw is used, ignored unused sensor areas up to 1.5%} For i:=0+offsetH to height5-1-offsetH do begin for j:=0+offsetW to width5-1-offsetW do begin col:=round(img[colour,j,i]);{red} if ((col>=1) and (col<65000)) then {ignore black overlap areas and bright stars} begin inc(histogram[colour,col],1);{calculate histogram} his_total:=his_total+1; total_value:=total_value+col; inc(count); end; end;{j} end; {i} if colour=0 then his_total_red:=his_total else if colour=1 then his_total_green:=his_total else his_total_blue:=his_total; his_mean[colour]:=round(total_value/count); end; procedure use_histogram(img: image_array; update_hist: boolean);{calculate histogram} var i, minm,maxm,max_range, countR,countG,countB,stopXpos,Xpos,max_color,histo_peakR,number_colors, histo_peak_position,h,w,col : integer; above, above_R : double; histogram2 : array of array of integer; histo_peak : array[0..2] of integer; begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } number_colors:=length(img); if update_hist then {get_hist} begin get_hist(0, img); if number_colors>1 then get_hist(1, img);{green} if number_colors>2 then get_hist(2, img);{blue} end; max_range:=round(min(head.datamax_org,65535)); {measured while loading, Prevent runtime error if head.datamax_org>65535} case mainwindow.range1.itemindex of -1,0,1: above_R:=0.001;{low range} 2,3: above_R:=0.003; {medium range} 4,5: above_R:=0.01; {high range} 6,7: begin minm:=round(head.datamin_org);maxm:=round(head.datamax_org)end;{6=range and 7=manual} 8: begin minm:=round(max_range*0.95); maxm:=round(max_range); end;{Show saturation} 9: begin minm:=0; maxm:=65535;head.datamax_org:=65535; end;{max range, use datamin/max} end; {calculate peak values } if mainwindow.range1.itemindex<=5 then {auto detect mode} begin minm:=0; maxm:=0; above:=0; histo_peak_position:=0;{define something for images containing zeros only} histo_peakR:=-99999999; for i := 1 to max_range-1{65535} do if histogram[0,i]>histo_peakR then begin histo_peakR:=histogram[0,i]; histo_peak_position:=i;{find most common value = background.}end; i:=histo_peak_position;{typical background position in histogram}; while ((minm=0) and (i>0)) do begin dec(i); if histogram[0,i]<0.1*histogram[0,histo_peak_position] then minm:=i; {find position with 10% count of histo_peak_position} end; i:=max_range{65535}; while ((maxm=0) and (i>minm+1)) do begin dec(i); above:=above+histogram[0,i]; if above>above_R {0.001}*his_total_red then maxm:=i; end; end; hist_range:=round(min(head.datamax_org,2*maxm));{adapt histogram range} mainwindow.minimum1.max:= max(hist_range,1); {set minimum to 1 to prevent runtime failure for fully black image} mainwindow.maximum1.max:= max(hist_range,1); if mainwindow.range1.itemindex<>7 then {<> manual} begin case mainwindow.range1.itemindex of 1,3,5: mainwindow.minimum1.position:=max(0,round(minm - (maxm-minm)*0.05));{set black at 5%} else mainwindow.minimum1.position:=minm; end; mainwindow.maximum1.position:=maxm; mainwindow.maximum1.smallchange:=1+round(maxm/100); mainwindow.minimum1.smallchange:=1+round(maxm/100); mainwindow.maximum1.largechange:=1+round(maxm/20); mainwindow.minimum1.largechange:=1+round(maxm/20); end; mainwindow.histogram1.canvas.brush.color:=clblack; mainwindow.histogram1.canvas.rectangle(-1,-1, mainwindow.histogram1.width+1, mainwindow.histogram1.height+1); mainwindow.histogram1.Canvas.Pen.Color := clred; h:=mainwindow.histogram1.height; w:=mainwindow.histogram1.width; setlength(histogram2,number_colors,w); {w variable and dependend of windows desktop settings!} histo_peakR:=0; {zero arrays} for col:=0 to 2 do histo_peak[col]:=0; try for i := 0 to w-1 do {zero} for col:=0 to number_colors-1 do histogram2[col,i]:=0; except beep; {histogram array size it too small adapt to mainwindow.histogram1.width;!!} exit; end; for col:=0 to number_colors-1 do {shrink histogram. Note many values could be zero due to 14,12 or 8 byte nature data. So take peak value} begin stopXpos:=0; for i := 1 to hist_range-1{65535} do begin if histogram[col,i]>histo_peak[col] then begin histo_peak[col]:=histogram[col,i]; end; Xpos:=round((w-1)*i/(hist_range-1)); if Xpos>stopXpos then {new line to be drawn} begin stopXpos:=Xpos; histogram2[col,xpos]:=histo_peak[col]; histo_peakR:=max(histo_peakR,histo_peak[col]); histo_peak[col]:=0; end; end; end; for i := 0 to w-1 do {create histogram graph} begin begin countR:= round(255*histogram2[0,i]/(histo_peakR+1)); if number_colors>1 then countG:= round(255*histogram2[1,i]/(histo_peakR+1)) else countG:=0; if number_colors>2 then countB:= round(255*histogram2[2,i]/(histo_peakR+1)) else countB:=0; if ((countR>0) or (countG>0) or (countB>0)) then {something to plot} begin max_color:=max(countR,max(countG,countB)); mainwindow.histogram1.Canvas.Pen.Color := rgb(255*countR div max_color,255*countG div max_color,255*countB div max_color);{set pen colour} max_color:=round(256*ln(max_color)/ln(256));{make scale logarithmic} moveToex(mainwindow.histogram1.Canvas.handle,i,h,nil); lineTo(mainwindow.histogram1.Canvas.handle,i ,h-round(h*max_color/256) ); {draw vertical line} end; end; end; histogram2:=nil; Screen.Cursor:=crDefault; end; function save_tiff16_secure(img : image_array;filen2:string) : boolean;{guarantee no file is lost} var filename_tmp : string; begin result:=false;{assume failure} filename_tmp:=changeFileExt(filen2,'.tmp');{new file will be first written to this file} if save_tiff16(img,filename_tmp,false {flip H},false {flip V}) then begin if deletefile(filename2) then result:=renamefile(filename_tmp,filename2); end; end; function savefits_update_header(filen2:string) : boolean;{save fits file with updated header} var TheFile : tfilestream; reader_position,I,readsize,bufsize : integer; TheFile_new : tfilestream; fract : double; line0 : ansistring; aline,empthy_line : array[0..80] of ansichar;{79 required but a little more to have always room} header : array[0..2880] of ansichar; endfound : boolean; filename_tmp: string; dummy,DUMMY1: string; procedure close_fits_files; begin Reader.free; TheFile.free; TheFile_new.free; end; Function validate_double:double;{read values} var t :string[20]; r,err : integer; x :double; begin t:=''; for r:=I+10 to I+29 do if header[r]<>' ' then t:=t+header[r]; val(t,x,err); validate_double:=x; end; begin result:=false;{assume failure} filename_tmp:=changeFileExt(filen2,'.tmp');{new file will be first written to this file} try TheFile_new:=tfilestream.Create(filename_tmp, fmcreate ); TheFile:=tfilestream.Create(filen2, fmOpenRead or fmShareDenyWrite); Reader := TReader.Create (TheFile,$60000);// 393216 byte buffer // if head.calstat<>'' then update_text('CALSTAT =',#39+old_calstat+#39); {calibration status has not change because the image is original} {TheFile.size-reader.position>sizeof(hnskyhdr) could also be used but slow down a factor of 2 !!!} I:=0; reader_position:=0; repeat reader.read(header[i],80); {read file info, 80 bytes only} inc(reader_position,80); endfound:=((header[i]='E') and (header[i+1]='N') and (header[i+2]='D') and (header[i+3]=' ')); until ((endfound) or (I>=sizeof(header)-16 )); if endfound=false then begin close_fits_files; beep; memo2_message('Abort, error reading source FITS file!!'); exit; end; fract:=frac(reader_position/2880); if fract<>0 then begin i:=round((1-fract)*2880);{left part of next 2880 bytes block} reader.read(header[0],i); {skip empty part and go to image data} inc(reader_position,i); end; {reader is now at begin of image data} {write updated header} for i:=0 to 79 do empthy_line[i]:=#32;{space} i:=0; repeat if i<mainwindow.memo1.lines.count then begin line0:=mainwindow.memo1.lines[i]; while length(line0)<80 do line0:=line0+' ';{guarantee length is 80} strpcopy(aline,(copy(line0,1,80)));{copy 80 and not more} thefile_new.writebuffer(aline,80);{write updated header from memo1.} end else begin thefile_new.writebuffer(empthy_line,80);{write empthy line} end; inc(i); until ((i>=mainwindow.memo1.lines.count) and (frac(i*80/2880)=0)); {write multiply records 36x80 or 2880 bytes} bufsize:=sizeof(fitsbuffer); repeat readsize:=min(bufsize,TheFile.size-reader_position);{read flexible in buffersize and not in fixed steps of 2880 bytes. Note some file are not following the FITS standard of blocksize of 2880 bytes causing problem if fixed 2880 bytes are used} reader.read(fitsbuffer,readsize); inc(reader_position,readsize); thefile_new.writebuffer(fitsbuffer,readsize); {write buffer} until (reader_position>=TheFile.size); Reader.free; TheFile.free; TheFile_new.free; if deletefile(filen2) then result:=renamefile(filename_tmp,filen2); except close_fits_files; beep; exit; end; end; {$ifdef mswindows} procedure ExecuteAndWait(const aCommando: string;show_console:boolean); var tmpStartupInfo: TStartupInfo; tmpProcessInformation: TProcessInformation; tmpProgram: String; console :longint; begin tmpProgram := trim(aCommando); FillChar(tmpStartupInfo, SizeOf(tmpStartupInfo), 0); with tmpStartupInfo do begin cb := SizeOf(TStartupInfo); wShowWindow := SW_HIDE; end; if show_console then console:=CREATE_NEW_CONSOLE else console:=CREATE_NO_WINDOW; if CreateProcess(nil, pchar(tmpProgram), nil, nil, true, console , nil, nil, tmpStartupInfo, tmpProcessInformation) then begin // loop every 50 ms while WaitForSingleObject(tmpProcessInformation.hProcess, 50) > 0 do begin Application.ProcessMessages; end; FileClose(tmpProcessInformation.hProcess); { *Converted from CloseHandle* } FileClose(tmpProcessInformation.hThread); { *Converted from CloseHandle* } end else begin RaiseLastOSError; end; end; {$else} {unix} procedure execute_unix(const execut:string; param: TStringList; show_output: boolean);{execute linux program and report output} var tmpProgram: String; F : Text; cc:string; var AProcess: TProcess{UTF8}; Astringlist : TStringList; begin stackmenu1.Memo2.lines.add('Solver command:' + execut+' '+ param.commatext); {activate scrolling Memo3} stackmenu1.memo2.SelStart:=Length(stackmenu1.memo2.Lines.Text); stackmenu1.memo2.SelLength:=0; Application.ProcessMessages; AStringList := TStringList.Create; AProcess := TProcess{UTF8}.Create(nil); AProcess.Executable :=execut; AProcess.Parameters:=param; AProcess.Options := [{poWaitOnExit,}poUsePipes,poStderrToOutPut]; // + [poWaitOnExit, poUsePipes]; AProcess.Execute; repeat begin wait(100);{smart sleep} if (AProcess.Output<>nil) then begin if ((show_output) and (AProcess.Output.NumBytesAvailable>0)) then begin AStringList.LoadFromStream(AProcess.Output); stackmenu1.Memo2.lines.add(astringlist.Text); end; end; Application.ProcessMessages; end; until ((AProcess.Running=false) or (esc_pressed)); AProcess.Free; AStringList.Free; end; procedure execute_unix2(s:string); var ex :integer; begin ex:=fpsystem(s); if ex>3 then showmessage(pchar(wexitStatus)); end; {$endif} function StyleToStr(Style: TFontStyles): string; var Chars: array [Boolean] of Char = ('F', 'T'); begin SetLength(Result, 4); Result[1] := Chars[fsBold in Style]; Result[2] := Chars[fsItalic in Style]; Result[3] := Chars[fsUnderline in Style]; Result[4] := Chars[fsStrikeOut in Style]; end; function StrToStyle(Str: String): TFontStyles; begin Result := []; {T = true, S = false} if Str[1] = 'T' then Include(Result, fsBold); if Str[2] = 'T' then Include(Result, fsItalic); if Str[3] = 'T' then Include(Result, fsUnderLine); if Str[4] = 'T' then Include(Result, fsStrikeOut); end; function encrypt(inp: string): string; var i: integer; begin result:='1';{version} for i:=1 to length(inp) do result:=result+char(ord(inp[i])+i-11); end; function decrypt(inp: string): string; var i: integer; begin result:=''; if ((length(inp)>=2) and (inp[1]='1')) then {correct format} for i:=2 to length(inp) do result:=result+char(ord(inp[i])-i+11+1); end; function load_settings(lpath: string) : boolean; var Sett : TmemIniFile; dum : string; c : integer; bool: boolean; begin result:=false;{assume failure} // t1:=gettickcount; try Sett := TmemIniFile.Create(lpath); result:=false; {assume failure} with mainwindow do begin c:=Sett.ReadInteger('main','window_left',987654321); if c<>987654321 then begin result:=true; {Important read error detection. No other read error method works for Tmeminifile. Important for creating directories for new installations} mainwindow.left:=c; end else begin mainwindow.top:=0;{for case the form was not set at the main screen} mainwindow.left:=0; exit; end; c:=Sett.ReadInteger('main','window_top',987654321); if c<>987654321 then mainwindow.top:=c; c:=Sett.ReadInteger('main','window_height',987654321);if c<>987654321 then mainwindow.height:=c; c:=Sett.ReadInteger('main','window_width',987654321);if c<>987654321 then mainwindow.width:=c; font_color:=sett.ReadInteger('main','font_color',font_color); font_size:=sett.ReadInteger('main','font_size',font_size); font_name:=Sett.ReadString('main', 'font_name2',font_name); dum:=Sett.ReadString('main','font_style','');if dum<>'' then font_style:= strtostyle(dum); font_charset:=sett.ReadInteger('main','font_charset',font_charset); pedestal:=sett.ReadInteger('main','pedestal',pedestal); c:=Sett.ReadInteger('main','minimum_position',987654321); if c<>987654321 then minimum1.position:=c; c:=Sett.ReadInteger('main','maximum_position',987654321);if c<>987654321 then maximum1.position:=c; c:=Sett.ReadInteger('main','range',987654321);if c<>987654321 then range1.itemindex:=c; c:=Sett.ReadInteger('main','saturation_factor',987654321); if c<>987654321 then saturation_factor_plot1.position:=c; c:=Sett.ReadInteger('main','polynomial',987654321); if c<>987654321 then Polynomial1.itemindex:=c; thumbnails1_width:=Sett.ReadInteger('main','thumbnails_width',thumbnails1_width); thumbnails1_height:=Sett.ReadInteger('main','thumbnails_height',thumbnails1_height); inversemousewheel1.checked:=Sett.ReadBool('main','inversemousewheel',false); flip_horizontal1.checked:=Sett.ReadBool('main','fliphorizontal',false); flip_vertical1.checked:=Sett.ReadBool('main','flipvertical',false); bool:=Sett.ReadBool('main','annotations',false); mainwindow.annotations_visible1.checked:=bool;{set both indicators} stackmenu1.annotations_visible1.enabled:=bool;{set both indicators} northeast1.checked:=Sett.ReadBool('main','north_east',false); mountposition1.checked:=Sett.ReadBool('main','mount_position',false); Constellations1.checked:=Sett.ReadBool('main','constellations',false); grid1.checked:=Sett.ReadBool('main','grid',false); positionanddate1.checked:=Sett.ReadBool('main','pos_date',false); freetext1.checked:=Sett.ReadBool('main','freetxt',false); freetext:=Sett.ReadString('main','f_text',''); noise_in_electron1.checked:=Sett.ReadBool('main','noise_e',false);{status bar menu} egain_default:=Sett.ReadFloat('main','egain_d',1); egain_extra_factor:=Sett.ReadInteger('main','egain_ext',16); add_marker_position1.checked:=Sett.ReadBool('main','add_marker',false);{popup marker selected?} mainwindow.preview_demosaic1.Checked:=Sett.ReadBool('main','preview_demosaic',false); mainwindow.batch_overwrite1.checked:=Sett.ReadBool('main','s_overwrite',false); mainwindow.add_sip_check1.Checked:=Sett.ReadBool('main','add_sip',false); mainwindow.maintain_date1.Checked:=Sett.ReadBool('main','maintain_date',false); mainwindow.add_limiting_magn_check1.Checked:=Sett.ReadBool('main','add_lim_magn',false); marker_position :=Sett.ReadString('main','marker_position','');{ra, dec marker} mainwindow.shape_marker3.hint:=marker_position; ra1.text:= Sett.ReadString('main','ra','0'); dec1.text:= Sett.ReadString('main','dec','0'); stretch1.text:= Sett.ReadString('main','gamma',''); if paramcount=0 then filename2:=Sett.ReadString('main','last_file','');{if used as viewer don't override paramstr1} // image_store_path:=Sett.ReadString('main','image_store_path',''); export_index:=Sett.ReadInteger('main','export_index',3);{tiff stretched} dum:=Sett.ReadString('ast','mpcorb_path','');if dum<>'' then mpcorb_path:=dum;{asteroids} dum:=Sett.ReadString('ast','cometels_path','');if dum<>'' then cometels_path:=dum;{asteroids} dum:=Sett.ReadString('ast','maxcount','');if dum<>'' then maxcount_asteroid:=dum;{asteroids} dum:=Sett.ReadString('ast','maxmag','');if dum<>'' then maxmag_asteroid:=dum;{asteroids} font_follows_diameter:=Sett.ReadBool('ast','font_follows',false);{asteroids} showfullnames:=Sett.ReadBool('ast','showfullnames',true);{asteroids} showmagnitude:=Sett.ReadBool('ast','showmagnitude',false);{asteroids} add_date:=Sett.ReadBool('ast','add_date',true);{asteroids} lat_default:=decrypt(Sett.ReadString('ast','p1',''));{lat default} long_default:=decrypt(Sett.ReadString('ast','p2',''));{longitude default} annotation_color:=Sett.ReadInteger('ast','annotation_color',annotation_color); annotation_diameter:=Sett.ReadInteger('ast','annotation_diameter',annotation_diameter); add_annotations:=Sett.ReadBool('ast','add_annotations',false);{asteroids as annotations} dum:=Sett.ReadString('anet','astrometry_extra_options',''); if dum<>'' then astrometry_extra_options:=dum;{astrometry.net options} show_console:=Sett.ReadBool('anet','show_console',true); dum:=Sett.ReadString('anet','cygwin_path',''); if dum<>'' then cygwin_path:=dum; sqm_applyDF:=Sett.ReadBool('sqm','apply_df',false);{sqm menu} c:=0; recent_files.clear; repeat {read recent files} dum:=Sett.ReadString('main','recent'+inttostr(c),''); if dum<>'' then recent_files.add(dum); inc(c); until (dum=''); update_recent_file_menu; c:=Sett.ReadInteger('stack','stackmenu_left',987654321); if c<>987654321 then stackmenu1.left:=c; c:=Sett.ReadInteger('stack','stackmenu_top',987654321); if c<>987654321 then stackmenu1.top:=c; c:=Sett.ReadInteger('stack','stackmenu_height',987654321); if c<>987654321 then stackmenu1.height:=c; c:=Sett.ReadInteger('stack','stackmenu_width',987654321); if c<>987654321 then stackmenu1.width:=c; c:=Sett.ReadInteger('stack','mosaic_width',987654321); if c<>987654321 then stackmenu1.mosaic_width1.position:=c; c:=Sett.ReadInteger('stack','mosaic_crop',987654321);if c<>987654321 then stackmenu1.mosaic_crop1.position:=c; c:=Sett.ReadInteger('stack','stack_method',987654321); if c<>987654321 then stackmenu1.stack_method1.itemindex:=c; c:=Sett.ReadInteger('stack','flat_combine_method',987654321);if c<>987654321 then stackmenu1.flat_combine_method1.itemindex:=c; c:=Sett.ReadInteger('stack','stack_tab',987654321); if c<>987654321 then stackmenu1.pagecontrol1.tabindex:=c; c:=Sett.ReadInteger('stack','demosaic_method2',987654321); if c<>987654321 then stackmenu1.demosaic_method1.itemindex:=c; c:=Sett.ReadInteger('stack','conv_progr',987654321);if c<>987654321 then stackmenu1.raw_conversion_program1.itemindex:=c; stackmenu1.make_osc_color1.checked:=Sett.ReadBool('stack','osc_color_convert',false); stackmenu1.osc_auto_level1.checked:=Sett.ReadBool('stack','osc_al',true); stackmenu1.osc_colour_smooth1.checked:=Sett.ReadBool('stack','osc_cs',true); stackmenu1.osc_preserve_r_nebula1.checked:=Sett.ReadBool('stack','osc_pr',true); dum:=Sett.ReadString('stack','osc_cw','');if dum<>'' then stackmenu1.osc_smart_smooth_width1.text:=dum; dum:=Sett.ReadString('stack','osc_sd',''); if dum<>'' then stackmenu1.osc_smart_colour_sd1.text:=dum; dum:=Sett.ReadString('stack','sqm_key',''); if dum<>'' then sqm_key:=copy(dum,1,8);{remove * character used for protection spaces} dum:=Sett.ReadString('stack','centaz_key',''); if dum<>'' then centaz_key:=copy(dum,1,8);{remove * character used for protection spaces} stackmenu1.lrgb_auto_level1.checked:=Sett.ReadBool('stack','lrgb_al',true); stackmenu1.green_purple_filter1.checked:=Sett.ReadBool('stack','green_fl',false); stackmenu1.lrgb_colour_smooth1.checked:=Sett.ReadBool('stack','lrgb_cs',true); stackmenu1.lrgb_preserve_r_nebula1.checked:=Sett.ReadBool('stack','lrgb_pr',true); dum:=Sett.ReadString('stack','lrgb_sw','');if dum<>'' then stackmenu1.lrgb_smart_smooth_width1.text:=dum; dum:=Sett.ReadString('stack','lrgb_sd','');if dum<>'' then stackmenu1.lrgb_smart_colour_sd1.text:=dum; stackmenu1.ignore_header_solution1.Checked:= Sett.ReadBool('stack','ignore_header_solution',true); stackmenu1.Equalise_background1.checked:= Sett.ReadBool('stack','equalise_background',true);{for mosaic mode} stackmenu1.merge_overlap1.checked:= Sett.ReadBool('stack','merge_overlap',true);{for mosaic mode} stackmenu1.classify_object1.checked:= Sett.ReadBool('stack','classify_object',false); stackmenu1.classify_filter1.checked:= Sett.ReadBool('stack','classify_filter',false); stackmenu1.classify_dark_temperature1.checked:= Sett.ReadBool('stack','classify_dark_temperature',false); stackmenu1.classify_dark_exposure1.checked:= Sett.ReadBool('stack','classify_dark_exposure',false); stackmenu1.classify_flat_filter1.checked:= Sett.ReadBool('stack','classify_flat_filter',false); stackmenu1.classify_dark_date1.checked:= Sett.ReadBool('stack','classify_dark_date',false); stackmenu1.classify_flat_date1.checked:= Sett.ReadBool('stack','classify_flat_date',false); stackmenu1.classify_flat_exposure1.checked:= Sett.ReadBool('stack','classify_flat_exposure',false); stackmenu1.add_time1.checked:= Sett.ReadBool('stack','add_time',false); {add a copy of the settings at image path} stackmenu1.save_settings_image_path1.checked:= Sett.ReadBool('stack','copy_sett',false); {add time to resulting stack file name} stackmenu1.uncheck_outliers1.checked:= Sett.ReadBool('stack','uncheck_outliers',false); stackmenu1.blur_factor1.text:= Sett.ReadString('stack','blur_factor',''); stackmenu1.use_manual_alignment1.checked:=Sett.ReadString('stack','align_method','')='4'; stackmenu1.use_astrometry_internal1.checked:=Sett.ReadString('stack','align_method','')='3'; stackmenu1.use_star_alignment1.checked:=Sett.ReadString('stack','align_method','')='2'; stackmenu1.use_ephemeris_alignment1.checked:=Sett.ReadString('stack','align_method','')='1'; stackmenu1.write_log1.Checked:=Sett.ReadBool('stack','write_log',true);{write to log file} stackmenu1.align_blink1.Checked:=Sett.ReadBool('stack','align_blink',true);{blink} stackmenu1.timestamp1.Checked:=Sett.ReadBool('stack','time_stamp',true);{blink} stackmenu1.force_oversize1.Checked:=Sett.ReadBool('stack','force_slow',false); stackmenu1.calibrate_prior_solving1.Checked:=Sett.ReadBool('stack','calibrate_prior_solving',false); stackmenu1.check_pattern_filter1.Checked:=Sett.ReadBool('stack','check_pattern_filter',false); stackmenu1.use_triples1.Checked:=Sett.ReadBool('stack','use_triples',false); dum:=Sett.ReadString('stack','star_database',''); if dum<>'' then stackmenu1.star_database1.text:=dum; dum:=Sett.ReadString('stack','solve_search_field',''); if dum<>'' then stackmenu1.search_fov1.text:=dum; dum:=Sett.ReadString('stack','radius_search',''); if dum<>'' then stackmenu1.radius_search1.text:=dum; dum:=Sett.ReadString('stack','quad_tolerance',''); if dum<>'' then stackmenu1.quad_tolerance1.text:=dum; dum:=Sett.ReadString('stack','maximum_stars',''); if dum<>'' then stackmenu1.max_stars1.text:=dum; dum:=Sett.ReadString('stack','min_star_size',''); if dum<>'' then stackmenu1.min_star_size1.text:=dum; dum:=Sett.ReadString('stack','min_star_size_stacking',''); if dum<>'' then stackmenu1.min_star_size_stacking1.text:=dum; dum:=Sett.ReadString('stack','manual_centering',''); if dum<>'' then stackmenu1.manual_centering1.text:=dum; dum:=Sett.ReadString('stack','downsample',''); if dum<>'' then stackmenu1.downsample_for_solving1.text:=dum; stackmenu1.apply_normalise_filter1.checked:=Sett.ReadBool('stack','normalise_f',true);{apply normalise filter on (OSC) flat prior to stacking} dum:=Sett.ReadString('stack','oversize','');if dum<>'' then stackmenu1.oversize1.text:=dum; dum:=Sett.ReadString('stack','sd_factor',''); if dum<>'' then stackmenu1.sd_factor1.text:=dum; dum:=Sett.ReadString('stack','most_common_filter_radius',''); if dum<>'' then stackmenu1.most_common_filter_radius1.text:=dum; dum:=Sett.ReadString('stack','extract_background_box_size',''); if dum<>'' then stackmenu1.extract_background_box_size1.text:=dum; dum:=Sett.ReadString('stack','dark_areas_box_size',''); if dum<>'' then stackmenu1.dark_areas_box_size1.text:=dum; dum:=Sett.ReadString('stack','ring_equalise_factor',''); if dum<>'' then stackmenu1.ring_equalise_factor1.text:=dum; dum:=Sett.ReadString('stack','gradient_filter_factor',''); if dum<>'' then stackmenu1.gradient_filter_factor1.text:=dum; dum:=Sett.ReadString('stack','bayer_pat',''); if dum<>'' then stackmenu1.bayer_pattern1.text:=dum; dum:=Sett.ReadString('stack','red_filter1',''); if dum<>'' then stackmenu1.red_filter1.text:=dum; dum:=Sett.ReadString('stack','red_filter2',''); if dum<>'' then stackmenu1.red_filter2.text:=dum; dum:=Sett.ReadString('stack','green_filter1',''); if dum<>'' then stackmenu1.green_filter1.text:=dum; dum:=Sett.ReadString('stack','green_filter2',''); if dum<>'' then stackmenu1.green_filter2.text:=dum; dum:=Sett.ReadString('stack','blue_filter1',''); if dum<>'' then stackmenu1.blue_filter1.text:=dum; dum:=Sett.ReadString('stack','blue_filter2',''); if dum<>'' then stackmenu1.blue_filter2.text:=dum; dum:=Sett.ReadString('stack','luminance_filter1',''); if dum<>'' then stackmenu1.luminance_filter1.text:=dum; dum:=Sett.ReadString('stack','luminance_filter2',''); if dum<>'' then stackmenu1.luminance_filter2.text:=dum; dum:=Sett.ReadString('stack','rr_factor',''); if dum<>'' then stackmenu1.rr1.text:=dum; dum:=Sett.ReadString('stack','rg_factor',''); if dum<>'' then stackmenu1.rg1.text:=dum; dum:=Sett.ReadString('stack','rb_factor',''); if dum<>'' then stackmenu1.rb1.text:=dum; dum:=Sett.ReadString('stack','gr_factor',''); if dum<>'' then stackmenu1.gr1.text:=dum; dum:=Sett.ReadString('stack','gg_factor',''); if dum<>'' then stackmenu1.gg1.text:=dum; dum:=Sett.ReadString('stack','gb_factor',''); if dum<>'' then stackmenu1.gb1.text:=dum; dum:=Sett.ReadString('stack','br_factor',''); if dum<>'' then stackmenu1.br1.text:=dum; dum:=Sett.ReadString('stack','bg_factor',''); if dum<>'' then stackmenu1.bg1.text:=dum; dum:=Sett.ReadString('stack','bb_factor',''); if dum<>'' then stackmenu1.bb1.text:=dum; dum:=Sett.ReadString('stack','red_filter_add',''); if dum<>'' then stackmenu1.red_filter_add1.text:=dum; dum:=Sett.ReadString('stack','green_filter_add',''); if dum<>'' then stackmenu1.green_filter_add1.text:=dum; dum:=Sett.ReadString('stack','blue_filter_add',''); if dum<>'' then stackmenu1.blue_filter_add1.text:=dum; {Six colour correction factors} dum:=Sett.ReadString('stack','add_value_R',''); if dum<>'' then stackmenu1.add_valueR1.text:=dum; dum:=Sett.ReadString('stack','add_value_G',''); if dum<>'' then stackmenu1.add_valueG1.text:=dum; dum:=Sett.ReadString('stack','add_value_B',''); if dum<>'' then stackmenu1.add_valueB1.text:=dum; dum:=Sett.ReadString('stack','multiply_R',''); if dum<>'' then stackmenu1.multiply_red1.text:=dum; dum:=Sett.ReadString('stack','multiply_G',''); if dum<>'' then stackmenu1.multiply_green1.text:=dum; dum:=Sett.ReadString('stack','multiply_B',''); if dum<>'' then stackmenu1.multiply_blue1.text:=dum; dum:=Sett.ReadString('stack','smart_smooth_width',''); if dum<>'' then stackmenu1.smart_smooth_width1.text:=dum; dum:=Sett.ReadString('stack','star_level_colouring',''); if dum<>'' then stackmenu1.star_level_colouring1.text:=dum; dum:=Sett.ReadString('stack','filter_artificial_colouring',''); if dum<>'' then stackmenu1.filter_artificial_colouring1.text:=dum; dum:=Sett.ReadString('stack','resize_factor',''); if dum<>'' then stackmenu1.resize_factor1.text:=dum; dum:=Sett.ReadString('stack','mark_outliers_upto',''); if dum<>'' then stackmenu1.mark_outliers_upto1.text:=dum; dum:=Sett.ReadString('stack','flux_aperture',''); if dum<>'' then stackmenu1.flux_aperture1.text:=dum; dum:=Sett.ReadString('stack','annulus_radius',''); if dum<>'' then stackmenu1.annulus_radius1.text:=dum; c:=Sett.ReadInteger('stack','annotate_m',987654321);if c<>987654321 then stackmenu1.annotate_mode1.itemindex:=c; dum:=Sett.ReadString('stack','sigma_decolour',''); if dum<>'' then stackmenu1.sigma_decolour1.text:=dum; dum:=Sett.ReadString('stack','sd_factor_list',''); if dum<>'' then stackmenu1.sd_factor_list1.text:=dum; dum:=Sett.ReadString('stack','noisefilter_blur',''); if dum<>'' then stackmenu1.noisefilter_blur1.text:=dum; dum:=Sett.ReadString('stack','noisefilter_sd',''); if dum<>'' then stackmenu1.noisefilter_sd1.text:=dum; c:=Sett.ReadInteger('stack','hue_fuzziness',987654321); if c<>987654321 then stackmenu1.hue_fuzziness1.position:=c; c:=Sett.ReadInteger('stack','saturation_tolerance',987654321); if c<>987654321 then stackmenu1.saturation_tolerance1.position:=c; stackmenu1.remove_luminance1.checked:= Sett.ReadBool('stack','remove_luminance',false); c:=Sett.ReadInteger('stack','sample_size',987654321);if c<>987654321 then stackmenu1.sample_size1.itemindex:=c; stackmenu1.mount_write_wcs1.Checked:=Sett.ReadBool('stack','wcs',true);{use wcs files for mount} obscode:=Sett.ReadString('stack','obscode',''); {photometry} c:=Sett.ReadInteger('stack','delim_pos',987654321);if c<>987654321 then delim_pos:=c; baa_style:=Sett.ReadBool('stack','baa_style',false);{aavso report} c:=Sett.ReadInteger('stack','video_index',987654321);if c<>987654321 then video_index:=c;{blink menu, video} dum:=Sett.ReadString('stack','frame_rate',''); if dum<>'' then frame_rate:=dum; stackmenu1.live_stacking_path1.caption:=Sett.ReadString('live','live_stack_dir',''); stackmenu1.monitoring_path1.caption:=Sett.ReadString('live','monitor_dir',''); stackmenu1.write_jpeg1.Checked:=Sett.ReadBool('live','write_jpeg',false);{live stacking} stackmenu1.interim_to_clipboard1.Checked:=Sett.ReadBool('live','to_clipboard',false);{live stacking} c:=Sett.ReadInteger('live','live_inspect',987654321);if c<>987654321 then stackmenu1.monitor_action1.itemindex:=c; stackmenu1.monitor_applydarkflat1.checked:= Sett.ReadBool('live','monitor_df',false); c:=Sett.ReadInteger('insp','insp_left',987654321); if c<>987654321 then insp_left:=c; c:=Sett.ReadInteger('insp','insp_top',987654321); if c<>987654321 then insp_top:=c; measuring_angle:=Sett.Readstring('insp','insp_angle','0'); contour_check:=Sett.ReadBool('insp','contour',false); voronoi_check:=Sett.ReadBool('insp','voronoi',false); values_check:=Sett.ReadBool('insp','values',true); vectors_check:=Sett.ReadBool('insp','vectors',true); three_corners:=Sett.ReadBool('insp','3corners',false); extra_stars:=Sett.ReadBool('insp','extra_stars',false); listviews_begin_update; {stop updating listviews} c:=0; repeat {add lights} dum:=Sett.ReadString('files','image'+inttostr(c),''); if ((dum<>'') and (fileexists(dum))) then listview_add(stackmenu1.listview1,dum,Sett.ReadBool('files','image'+inttostr(c)+'_check',true),L_nr); inc(c); until (dum=''); c:=0; repeat {add darks} dum:=Sett.ReadString('files','dark'+inttostr(c),''); if ((dum<>'') and (fileexists(dum))) then listview_add(stackmenu1.listview2,dum,Sett.ReadBool('files','dark'+inttostr(c)+'_check',true),D_nr); inc(c); until (dum=''); c:=0; repeat {add flats} dum:=Sett.ReadString('files','flat'+inttostr(c),''); if ((dum<>'') and (fileexists(dum))) then listview_add(stackmenu1.listview3,dum,Sett.ReadBool('files','flat'+inttostr(c)+'_check',true),F_nr); inc(c); until (dum=''); c:=0; repeat {add flat darks} dum:=Sett.ReadString('files','flat_dark'+inttostr(c),''); if ((dum<>'') and (fileexists(dum))) then listview_add(stackmenu1.listview4,dum,Sett.ReadBool('files','flat_dark'+inttostr(c)+'_check',true),D_nr); inc(c); until (dum=''); c:=0; repeat {add blink files} dum:=Sett.ReadString('files','blink'+inttostr(c),''); if ((dum<>'') and (fileexists(dum))) then listview_add(stackmenu1.listview6,dum,Sett.ReadBool('files','blink'+inttostr(c)+'_check',true),B_nr); inc(c); until (dum=''); c:=0; repeat {add photometry files} dum:=Sett.ReadString('files','photometry'+inttostr(c),''); if ((dum<>'') and (fileexists(dum))) then listview_add(stackmenu1.listview7,dum,Sett.ReadBool('files','photometry'+inttostr(c)+'_check',true),P_nr); inc(c); until (dum=''); c:=0; repeat {add inspector files} dum:=Sett.ReadString('files','inspector'+inttostr(c),''); if ((dum<>'') and (fileexists(dum))) then listview_add(stackmenu1.listview8,dum,Sett.ReadBool('files','inspector'+inttostr(c)+'_check',true),L_nr); inc(c); until (dum=''); stackmenu1.visible:=((paramcount=0) and (Sett.ReadBool('stack','stackmenu_visible',false) ) );{do this last, so stackmenu.onshow updates the setting correctly} listviews_end_update; {start updating listviews. Do this after setting stack menus visible. This is faster.} end; finally {also for error it end's here} Sett.Free; end; // mainwindow.Caption := floattostr((GetTickCount-t1)/1000); end; procedure save_settings(lpath:string); //save settings at any path var Sett : TmemIniFile; c : integer; begin try Sett := TmemIniFile.Create(lpath); sett.clear; {clear any section in the old ini file} with mainwindow do begin sett.writeInteger('main','window_left',mainwindow.left); sett.writeInteger('main','window_top',mainwindow.top); sett.writeInteger('main','window_height',mainwindow.height); sett.writeInteger('main','window_width',mainwindow.width); sett.writeInteger('main','font_color',font_color); sett.writeInteger('main','font_size',font_size); sett.writestring('main','font_name2',font_name); sett.writestring('main','font_style',StyleToStr(font_style)); sett.writeInteger('main','font_charset',font_charset); sett.writeInteger('main','pedestal',pedestal); sett.writeInteger('main','minimum_position',MINIMUM1.position); sett.writeInteger('main','maximum_position',maximum1.position); sett.writeInteger('main','range',range1.itemindex); sett.writeInteger('main','saturation_factor',saturation_factor_plot1.position); sett.writeInteger('main','polynomial',polynomial1.itemindex); sett.writeInteger('main','thumbnails_width',thumbnails1_width); sett.writeInteger('main','thumbnails_height',thumbnails1_height); sett.writeBool('main','inversemousewheel',inversemousewheel1.checked); sett.writeBool('main','fliphorizontal',flip_horizontal1.checked); sett.writeBool('main','flipvertical',flip_vertical1.checked); sett.writeBool('main','annotations',annotations_visible1.checked); sett.writeBool('main','north_east',northeast1.checked); sett.writeBool('main','mount_position',mountposition1.checked); sett.writeBool('main','constellations',constellations1.checked); sett.writeBool('main','grid',grid1.checked); sett.writeBool('main','pos_date',positionanddate1.checked); sett.writeBool('main','freetxt',freetext1.checked); sett.writestring('main','f_text',freetext); sett.writeBool('main','noise_e',noise_in_electron1.checked); sett.writefloat('main','egain_d',egain_default); sett.writeinteger('main','egain_ext',egain_extra_factor); sett.writeBool('main','add_marker',add_marker_position1.checked); sett.writeBool('main','preview_demosaic',mainwindow.preview_demosaic1.Checked); sett.writeBool('main','s_overwrite',mainwindow.batch_overwrite1.checked); sett.writeBool('main','add_sip',mainwindow.add_sip_check1.Checked); sett.writeBool('main','maintain_date',mainwindow.maintain_date1.Checked); sett.writeBool('main','add_lim_magn',mainwindow.add_limiting_magn_check1.Checked); sett.writestring('main','ra',ra1.text); sett.writestring('main','dec',dec1.text); sett.writestring('main','gamma',stretch1.text); sett.writestring('main','marker_position',marker_position); sett.writestring('main','last_file',filename2); // sett.writestring('main','image_store_path',image_store_path); sett.writeInteger('main','export_index',export_index); sett.writestring('ast','mpcorb_path',mpcorb_path);{asteroids} sett.writestring('ast','cometels_path',cometels_path);{comets} sett.writeString('ast','maxcount',maxcount_asteroid);{asteroids} sett.writeString('ast','maxmag',maxmag_asteroid);{asteroids} sett.writeBool('ast','font_follows',font_follows_diameter);{asteroids} sett.writeBool('ast','showfullnames',showfullnames);{asteroids} sett.writeBool('ast','showmagnitude',showmagnitude);{asteroids} sett.writeBool('ast','add_date',add_date);{asteroids} sett.writeString('ast','p1',encrypt(lat_default));{default latitude} sett.writeString('ast','p2',encrypt(long_default));{default longitude} sett.writeInteger('ast','annotation_color',annotation_color); sett.writeInteger('ast','annotation_diameter',annotation_diameter); sett.writeBool('ast','add_annotations',add_annotations);{for asteroids} sett.writestring('anet','cygwin_path',cygwin_path); sett.writeBool('anet','show_console',show_console); sett.writestring('anet','astrometry_extra_options',astrometry_extra_options); sett.writeBool('sqm','apply_df',sqm_applyDF); for c:=0 to recent_files.count-1 do {add recent files} sett.writestring('main','recent'+inttostr(c),recent_files[c]); {########## stackmenu settings #############} sett.writebool('stack','stackmenu_visible',stackmenu1.visible); sett.writeInteger('stack','stackmenu_left',stackmenu1.left); sett.writeInteger('stack','stackmenu_top',stackmenu1.top); sett.writeInteger('stack','stackmenu_height',stackmenu1.height); sett.writeInteger('stack','stackmenu_width',stackmenu1.width); sett.writeInteger('stack','stack_method',stackmenu1.stack_method1.itemindex); sett.writeInteger('stack','mosaic_width',stackmenu1.mosaic_width1.position); sett.writeInteger('stack','mosaic_crop',stackmenu1.mosaic_crop1.position); sett.writeInteger('stack','flat_combine_method',stackmenu1.flat_combine_method1.itemindex); sett.writeInteger('stack','stack_tab',stackmenu1.pagecontrol1.tabindex); sett.writeString('stack','bayer_pat',stackmenu1.bayer_pattern1.text); sett.writeInteger('stack','demosaic_method2',stackmenu1.demosaic_method1.itemindex); sett.writeInteger('stack','conv_progr',stackmenu1.raw_conversion_program1.itemindex); sett.writeBool('stack','osc_color_convert',stackmenu1.make_osc_color1.checked); sett.writeBool('stack','osc_al',stackmenu1.osc_auto_level1.checked); sett.writeBool('stack','osc_cs',stackmenu1.osc_colour_smooth1.checked); sett.writeBool('stack','osc_pr',stackmenu1.osc_preserve_r_nebula1.checked); sett.writeString('stack','osc_sw',stackmenu1.osc_smart_smooth_width1.text); sett.writestring('stack','osc_sd',stackmenu1.osc_smart_colour_sd1.text); sett.writestring('stack','sqm_key',sqm_key+'*' );{add a * to prevent the spaces are removed.Should be at least 8 char} sett.writestring('stack','centaz_key',centaz_key+'*');{add a * to prevent the spaces are removed} sett.writeBool('stack','lrgb_al',stackmenu1.lrgb_auto_level1.checked); sett.writeBool('stack','green_fl',stackmenu1.green_purple_filter1.checked); sett.writeBool('stack','lrgb_cs',stackmenu1.lrgb_colour_smooth1.checked); sett.writeBool('stack','lrgb_pr',stackmenu1.lrgb_preserve_r_nebula1.checked); sett.writestring('stack','lrgb_sw',stackmenu1.lrgb_smart_smooth_width1.text); sett.writestring('stack','lrgb_sd',stackmenu1.lrgb_smart_colour_sd1.text); sett.writeBool('stack','ignore_header_solution',stackmenu1.ignore_header_solution1.Checked); sett.writeBool('stack','equalise_background',stackmenu1.Equalise_background1.Checked); sett.writeBool('stack','merge_overlap',stackmenu1.merge_overlap1.Checked); sett.writeBool('stack','classify_object',stackmenu1.classify_object1.Checked); sett.writeBool('stack','classify_filter',stackmenu1.classify_filter1.Checked); sett.writeBool('stack','classify_dark_temperature',stackmenu1.classify_dark_temperature1.Checked); sett.writeBool('stack','classify_dark_exposure',stackmenu1.classify_dark_exposure1.Checked); sett.writeBool('stack','classify_flat_filter',stackmenu1.classify_flat_filter1.Checked); sett.writeBool('stack','classify_dark_date',stackmenu1.classify_dark_date1.Checked); sett.writeBool('stack','classify_flat_date',stackmenu1.classify_flat_date1.Checked); sett.writeBool('stack','classify_flat_exposure',stackmenu1.classify_flat_exposure1.Checked); sett.writeBool('stack','add_time',stackmenu1.add_time1.Checked); sett.writeBool('stack','copy_sett',stackmenu1.save_settings_image_path1.Checked); sett.writeBool('stack','uncheck_outliers',stackmenu1.uncheck_outliers1.Checked); sett.writeBool('stack','write_log',stackmenu1.write_log1.checked);{write log to file} sett.writeBool('stack','align_blink',stackmenu1.align_blink1.checked);{blink} sett.writeBool('stack','time_stamp',stackmenu1.timestamp1.checked);{blink} sett.writeBool('stack','force_slow',stackmenu1.force_oversize1.checked); sett.writeBool('stack','calibrate_prior_solving',stackmenu1.calibrate_prior_solving1.checked); sett.writeBool('stack','check_pattern_filter',stackmenu1.check_pattern_filter1.checked); sett.writeBool('stack','use_triples',stackmenu1.use_triples1.checked); if stackmenu1.use_manual_alignment1.checked then sett.writestring('stack','align_method','4') else if stackmenu1.use_astrometry_internal1.checked then sett.writestring('stack','align_method','3') else if stackmenu1.use_star_alignment1.checked then sett.writestring('stack','align_method','2') else if stackmenu1.use_ephemeris_alignment1.checked then sett.writestring('stack','align_method','1'); sett.writestring('stack','star_database',stackmenu1.star_database1.text); sett.writestring('stack','solve_search_field',stackmenu1.search_fov1.text); sett.writestring('stack','radius_search',stackmenu1.radius_search1.text); sett.writestring('stack','quad_tolerance',stackmenu1.quad_tolerance1.text); sett.writestring('stack','maximum_stars',stackmenu1.max_stars1.text); sett.writestring('stack','min_star_size',stackmenu1.min_star_size1.text); sett.writestring('stack','min_star_size_stacking',stackmenu1.min_star_size_stacking1.text); sett.writestring('stack','manual_centering',stackmenu1.manual_centering1.text); sett.writestring('stack','downsample',stackmenu1.downsample_for_solving1.text); sett.writestring('stack','oversize',stackmenu1.oversize1.text); sett.writebool('stack','normalise_f',stackmenu1.apply_normalise_filter1.checked); sett.writestring('stack','sd_factor',stackmenu1.sd_factor1.text); sett.writestring('stack','blur_factor',stackmenu1.blur_factor1.text); sett.writestring('stack','most_common_filter_radius',stackmenu1.most_common_filter_radius1.text); sett.writestring('stack','extract_background_box_size',stackmenu1.extract_background_box_size1.text); sett.writestring('stack','dark_areas_box_size',stackmenu1.dark_areas_box_size1.text); sett.writestring('stack','ring_equalise_factor',stackmenu1.ring_equalise_factor1.text); sett.writestring('stack','gradient_filter_factor',stackmenu1.gradient_filter_factor1.text); sett.writestring('stack','red_filter1',stackmenu1.red_filter1.text); sett.writestring('stack','red_filter2',stackmenu1.red_filter2.text); sett.writestring('stack','green_filter1',stackmenu1.green_filter1.text); sett.writestring('stack','green_filter2',stackmenu1.green_filter2.text); sett.writestring('stack','blue_filter1',stackmenu1.blue_filter1.text); sett.writestring('stack','blue_filter2',stackmenu1.blue_filter2.text); sett.writestring('stack','luminance_filter1',stackmenu1.luminance_filter1.text); sett.writestring('stack','luminance_filter2',stackmenu1.luminance_filter2.text); sett.writestring('stack','rr_factor',stackmenu1.rr1.text); sett.writestring('stack','rg_factor',stackmenu1.rg1.text); sett.writestring('stack','rb_factor',stackmenu1.rb1.text); sett.writestring('stack','gr_factor',stackmenu1.gr1.text); sett.writestring('stack','gg_factor',stackmenu1.gg1.text); sett.writestring('stack','gb_factor',stackmenu1.gb1.text); sett.writestring('stack','br_factor',stackmenu1.br1.text); sett.writestring('stack','bg_factor',stackmenu1.bg1.text); sett.writestring('stack','bb_factor',stackmenu1.bb1.text); sett.writestring('stack','red_filter_add',stackmenu1.red_filter_add1.text); sett.writestring('stack','green_filter_add',stackmenu1.green_filter_add1.text); sett.writestring('stack','blue_filter_add',stackmenu1.blue_filter_add1.text); {Colour correction factors} sett.writestring('stack','add_value_R',stackmenu1.add_valueR1.text); sett.writestring('stack','add_value_G',stackmenu1.add_valueG1.text); sett.writestring('stack','add_value_B',stackmenu1.add_valueB1.text); sett.writestring('stack','multiply_R',stackmenu1.multiply_red1.text); sett.writestring('stack','multiply_G',stackmenu1.multiply_green1.text); sett.writestring('stack','multiply_B',stackmenu1.multiply_blue1.text); sett.writestring('stack','smart_smooth_width',stackmenu1.smart_smooth_width1.text); sett.writestring('stack','star_level_colouring',stackmenu1.star_level_colouring1.text); sett.writestring('stack','filter_artificial_colouring',stackmenu1.filter_artificial_colouring1.text); sett.writestring('stack','resize_factor',stackmenu1.resize_factor1.text); sett.writestring('stack','mark_outliers_upto',stackmenu1.mark_outliers_upto1.text); sett.writestring('stack','flux_aperture',stackmenu1.flux_aperture1.text); sett.writestring('stack','annulus_radius',stackmenu1.annulus_radius1.text); sett.writeInteger('stack','annotate_m',stackmenu1.annotate_mode1.itemindex); sett.writestring('stack','sigma_decolour',stackmenu1.sigma_decolour1.text); sett.writestring('stack','sd_factor_list',stackmenu1.sd_factor_list1.text); sett.writestring('stack','noisefilter_blur',stackmenu1.noisefilter_blur1.text); sett.writestring('stack','noisefilter_sd',stackmenu1.noisefilter_sd1.text); sett.writeInteger('stack','hue_fuzziness',stackmenu1.hue_fuzziness1.position); sett.writeInteger('stack','saturation_tolerance',stackmenu1.saturation_tolerance1.position); sett.writeBool('stack','remove_luminance',stackmenu1.remove_luminance1.checked);{asteroids} sett.writeInteger('stack','sample_size',stackmenu1.sample_size1.itemindex); sett.writestring('stack','obscode',obscode); sett.writeInteger('stack','delim_pos',delim_pos); sett.writeBool('stack','baa_style',baa_style);{AAVSO report} sett.writeBool('stack','wcs',stackmenu1.mount_write_wcs1.Checked);{uses wcs file for menu mount} sett.writeInteger('stack','video_index',video_index); sett.writestring('stack','frame_rate',frame_rate); sett.writestring('live','live_stack_dir',stackmenu1.live_stacking_path1.caption);{live stacking} sett.writestring('live','monitor_dir',stackmenu1.monitoring_path1.caption); sett.writeBool('live','write_jpeg',stackmenu1.write_jpeg1.checked);{live stacking} sett.writeBool('live','to_clipboard',stackmenu1.interim_to_clipboard1.checked);{live stacking} sett.writeInteger('live','live_inspect',stackmenu1.monitor_action1.itemindex); sett.writeBool('live','monitor_df',stackmenu1.monitor_applydarkflat1.checked);{live monitoring} sett.writeInteger('insp','insp_left',insp_left);{position window} sett.writeInteger('insp','insp_top',insp_top); sett.writestring('insp','insp_angle',measuring_angle); sett.writeBool('insp','contour',contour_check); sett.writeBool('insp','voronoi',voronoi_check); sett.writeBool('insp','values',values_check); sett.writeBool('insp','vectors',vectors_check); sett.writebool('insp','3corners',three_corners); sett.writebool('insp','extra_stars',extra_stars); {### save listview values ###} for c:=0 to stackmenu1.ListView1.items.count-1 do {add light images} begin sett.writestring('files','image'+inttostr(c),stackmenu1.ListView1.items[c].caption); sett.writeBool('files','image'+inttostr(c)+'_check',stackmenu1.ListView1.items[c].Checked); end; for c:=0 to stackmenu1.ListView2.items.count-1 do {add dark files} begin sett.writestring('files','dark'+inttostr(c),stackmenu1.ListView2.items[c].caption); sett.writeBool('files','dark'+inttostr(c)+'_check',stackmenu1.ListView2.items[c].Checked); end; for c:=0 to stackmenu1.ListView3.items.count-1 do {add flat files} begin sett.writestring('files','flat'+inttostr(c),stackmenu1.ListView3.items[c].caption); sett.writeBool('files','flat'+inttostr(c)+'_check',stackmenu1.ListView3.items[c].Checked); end; for c:=0 to stackmenu1.ListView4.items.count-1 do {add flat_dark files} begin sett.writestring('files','flat_dark'+inttostr(c),stackmenu1.ListView4.items[c].caption); sett.writeBool('files','flat_dark'+inttostr(c)+'_check',stackmenu1.ListView4.items[c].Checked); end; for c:=0 to stackmenu1.ListView6.items.count-1 do {add blink files} begin sett.writestring('files','blink'+inttostr(c),stackmenu1.ListView6.items[c].caption); sett.writeBool('files','blink'+inttostr(c)+'_check',stackmenu1.ListView6.items[c].Checked); end; for c:=0 to stackmenu1.ListView7.items.count-1 do {add photometry files} begin sett.writestring('files','photometry'+inttostr(c),stackmenu1.ListView7.items[c].caption); sett.writeBool('files','photometry'+inttostr(c)+'_check',stackmenu1.ListView7.items[c].Checked); end; for c:=0 to stackmenu1.ListView8.items.count-1 do {add inspector files} begin sett.writestring('files','inspector'+inttostr(c),stackmenu1.ListView8.items[c].caption); sett.writeBool('files','inspector'+inttostr(c)+'_check',stackmenu1.ListView8.items[c].Checked); end; end;{mainwindow} finally Sett.Free; {Note error detection seems not possible with tmeminifile. Tried everything} end; end; procedure save_settings2; begin save_settings(user_path+'astap.cfg'); end; procedure Tmainwindow.savesettings1Click(Sender: TObject); begin savedialog1.filename:=user_path+'astap.cfg'; savedialog1.Filter := 'configuration file|*.cfg'; if savedialog1.execute then save_settings(savedialog1.filename); end; procedure Tmainwindow.flip_horizontal1Click(Sender: TObject); var bmp: TBitmap; w, h, x, y : integer; type PRGBTripleArray = ^TRGBTripleArray; {for fast pixel routine} {$ifdef mswindows} TRGBTripleArray = array[0..trunc(bufwide/3)] of TRGBTriple; {for fast pixel routine} {$else} {unix} TRGBTripleArray = array[0..trunc(bufwide/4)] of tagRGBQUAD; {for fast pixel routine} {$endif} var pixelrow1 : PRGBTripleArray;{for fast pixel routine} pixelrow2 : PRGBTripleArray;{for fast pixel routine} begin w:=image1.Picture.Width; h:=image1.Picture.Height; bmp:=TBitmap.Create; bmp.PixelFormat:=pf24bit; bmp.SetSize(w, h); for y := 0 to h -1 do begin // scan each line pixelrow1:=image1.Picture.Bitmap.ScanLine[y]; pixelrow2:=bmp.ScanLine[y]; for x := 0 to w-1 do {swap left and right} pixelrow2[x] := pixelrow1[w-1 -x]; {faster solution then using pbytearray as in vertical flip} end; image1.Picture.Bitmap.Canvas.Draw(0,0, bmp);// move bmp to source bmp.Free; if sender<>nil then {not from plot_fits, redraw required} begin plot_north; {draw arrow or clear indication position north depending on value head.cd1_1} end; end; //procedure Tmainwindow.flip_vertical1Click(Sender: TObject); //var src, dest: TRect; // bmp: TBitmap; // w, h: integer; //begin // w:=image1.Picture.Width; h:=image1.Picture.Height; // // {$ifdef mswindows} // src:=rect(0, h, w, 0); // Vertical flip, works for windows but not Linux // dest:=rect(0, 0, w, h); // {$else} {unix} // src:=rect(0, 0, w, h); // dest:=rect(0,h, w, 0);//vertical flip, works for Linux but give in Windows one pixel drift // {$endif} // bmp:=TBitmap.Create; // bmp.PixelFormat:=pf24bit; // bmp.SetSize(w, h); // bmp.Canvas.Draw(0, 0, image1.Picture.Bitmap); // image1.Picture.Bitmap.Canvas.CopyRect(dest, bmp.Canvas, src); // bmp.Free; // plot_north; //end; procedure Tmainwindow.flip_vertical1Click(Sender: TObject); var bmp: TBitmap; w, h, y : integer; xLine1,xline2 : PByteArray; begin w:=image1.Picture.Width; h:=image1.Picture.Height; bmp:=TBitmap.Create; bmp.PixelFormat:=pf24bit;{This must be pf24 bit both for Windows and Linux! Doesn't work in Linux with pf32?} bmp.SetSize(w, h); for y := 0 to h -1 do begin // scan each line and swap top and bottom} xline1:=image1.Picture.Bitmap.ScanLine[h-1-y]; xline2:=bmp.ScanLine[y]; {$ifdef mswindows} Move(xline1[0], xline2[0],w*3); {$else} {unix, Darwin} Move(xline1[0], xline2[0],w*4); {4 bytes per pixel} {$endif} end; image1.Picture.Bitmap.Canvas.Draw(0,0, bmp);// move bmp to source bmp.Free; if sender<>nil then {not from plot_fits, redraw required} begin plot_north; {draw arrow or clear indication position north depending on value head.cd1_1} end; end; procedure Convert_to_BMP; var BMP : TBitmap; begin BMP := TBitmap.Create; try Bmp.Width := mainwindow.image1.Picture.Width;{2017} Bmp.Height := mainwindow.image1.Picture.Height; Bmp.Canvas.Draw(0, 0, mainwindow.image1.Picture.Graphic); mainwindow.image1.Picture.Bitmap := bmp; {Show the bitmap on form} // following assign doesn't work for Nvidia 750ti // BMP.assign(mainwindow.image1.Picture.Graphic); // mainwindow.image1.Picture.Graphic := BMP; finally BMP.Free end; end; function extract_exposure_from_filename(filename8: string):integer; {try to extract head.exposure from filename} var exposure_str :string; i,x,err : integer; ch : char; begin {try to reconstruct head.exposure time from filename} result:=0; exposure_str:=''; filename8:=uppercase(extractfilename(filename8)); i:=pos('SEC',filename8); if i=0 then i:=pos('S_',filename8); if i>2 then begin if filename8[i-1]=' ' then dec(i); {ignore first space} while i>=1 do begin ch:=filename8[i-1]; x:=ord(ch); if ((x<=57) and (x>=48)) then {between 0..9} exposure_str:=ch+ exposure_str {extra number before sec} else i:=-999; {stop} dec(i); end; val(exposure_str,result,err); if err=0 then begin update_integer('EXPOSURE=',' / exposure extracted from file name. ' ,result); memo2_message('Extracted exposure from file name'); end else memo2_message('Failed to extract exposure time from file name. Expects ...Sec or ...S_ '); end; end; function extract_temperature_from_filename(filename8: string): integer; {try to extract temperature from filename} var temp_str :string; i,x,err : integer; ch : char; begin {try to reconstruct head.exposure time from filename} result:=999;{unknow temperature} temp_str:=''; filename8:=uppercase(extractfilename(filename8)); i:=pos('0C',filename8); if i=0 then i:=pos('1C',filename8); if i=0 then i:=pos('2C',filename8); if i=0 then i:=pos('3C',filename8); if i=0 then i:=pos('4C',filename8); if i=0 then i:=pos('5C',filename8); if i=0 then i:=pos('6C',filename8); if i=0 then i:=pos('7C',filename8); if i=0 then i:=pos('8C',filename8); if i=0 then i:=pos('9C',filename8); while i>=1 do begin ch:=filename8[i]; x:=ord(ch); if ( ((x<=57) and (x>=48)) or (x=45)) then {between 0..9 or -} temp_str:=ch+ temp_str {extra number before sec} else i:=-999; {stop} dec(i); end; val(temp_str,result,err); if err=0 then begin update_integer('CCD-TEMP=',' / Sensor temperature extracted from file name ' ,result); memo2_message('Extracted temperature from file name'); end else memo2_message('Failed to extract temperature from the file name. Expects ...C '); end; function unpack_cfitsio(filename3: string): boolean; {convert .fz to .fits using funpack} var commando :string; begin result:=false; commando:='-D'; {$ifdef mswindows} if fileexists(application_path+'funpack.exe')=false then begin result:=false; application.messagebox(pchar('Could not find: '+application_path+'funpack.exe !!, Download and install fpack_funpack.exe' ),pchar('Error'),MB_ICONWARNING+MB_OK);exit; end; ExecuteAndWait(application_path+'funpack.exe '+commando+ ' "'+filename3+'"',false);{execute command and wait} {$endif} {$ifdef Darwin}{MacOS} if fileexists(application_path+'/funpack')=false then begin result:=false; application.messagebox(pchar('Could not find: '+application_path+'funpack' ),pchar('Error'),MB_ICONWARNING+MB_OK);exit; end; execute_unix2(application_path+'/funpack '+commando+' "'+filename3+'"'); {$endif} {$ifdef linux} if fileexists('/usr/bin/funpack')=false then begin result:=false; application.messagebox(pchar('Could not find program funpack !!, Install this program. Eg: sudo apt-get install libcfitsio-bin' ),pchar('Error'),MB_ICONWARNING+MB_OK);;exit; end; execute_unix2('/usr/bin/funpack '+commando+' "'+filename3+'"'); {$endif} filename2:=stringreplace(filename3,'.fz', '',[]); {changeFilext doesn't work for double dots .fits.fz} result:=true; end; function pack_cfitsio(filename3: string): boolean; {convert .fz to .fits using funpack} begin result:=false; {$ifdef mswindows} if fileexists(application_path+'fpack.exe')=false then begin result:=false; application.messagebox(pchar('Could not find: '+application_path+'fpack.exe !!, Download and install fpack_funpack.exe' ),pchar('Error'),MB_ICONWARNING+MB_OK);exit; end; ExecuteAndWait(application_path+'fpack.exe '+ ' "'+filename3+'"',false);{execute command and wait} {$endif} {$ifdef Darwin}{MacOS} if fileexists(application_path+'/fpack')=false then begin result:=false; application.messagebox(pchar('Could not find: '+application_path+'fpack' ),pchar('Error'),MB_ICONWARNING+MB_OK);exit; end; execute_unix2(application_path+'/fpack '+' "'+filename3+'"'); {$endif} {$ifdef linux} if fileexists('/usr/bin/fpack')=false then begin result:=false; application.messagebox(pchar('Could not find program fpack !!, Install this program. Eg: sudo apt-get install libcfitsio-bin' ),pchar('Error'),MB_ICONWARNING+MB_OK);;exit; end; execute_unix2('/usr/bin/fpack '+' "'+filename3+'"'); {$endif} result:=true; end; {$ifdef mswindows} function GetShortPath(const LongPath: UnicodeString): UnicodeString; var Len: DWORD; begin Len := GetShortPathNameW(PWideChar(LongPath), nil, 0); SetLength(Result, Len); Len := GetShortPathNameW(PWideChar(LongPath), PWideChar(Result), Len); SetLength(Result, Len); end; {$endif} function convert_raw(loadfile,savefile :boolean;var filename3: string;out head: Theader; out img: image_array ): boolean; {convert raw to fits file using DCRAW or LibRaw. filename3 will be update with the new file extension e.g. .CR2.fits} var filename4 :string; JD2 : double; conv_index : integer; commando,param,pp,ff : string; begin result:=true; {assume success} conv_index:=stackmenu1.raw_conversion_program1.itemindex; {DCRaw or libraw} {conversion direct to FITS} if conv_index<=1 then {Libraw} begin if conv_index=1 then param:='-i' else param:='-f'; result:=true; {assume success again} {$ifdef mswindows} if fileexists(application_path+'unprocessed_raw.exe')=false then result:=false {failure} else begin pp:=GetShortPath(ExtractFilePath(filename3)); //For path containing japaneseスカイメモ or ßÔÒõÕ or führ ff:=ExtractFileName(filename3); ExecuteAndWait(application_path+'unprocessed_raw.exe '+param+' "'+ pp+ff {filename3}+'"',false);{execute command and wait} filename4:=FileName3+'.fits';{direct to fits using modified version of unprocessed_raw} end; {$endif} {$ifdef linux} if fileexists(application_path+'unprocessed_raw-astap')=false then begin {try other installed executables} if fileexists('/usr/lib/libraw/unprocessed_raw')=false then begin if fileexists('/usr/bin/unprocessed_raw')=false then result:=false {failure} else begin execute_unix2('/usr/bin/unprocessed_raw "'+filename3+'"'); filename4:=FileName3+'.pgm';{ filename.NEF.pgm} end end else begin execute_unix2('/usr/lib/libraw/unprocessed_raw "'+filename3+'"'); filename4:=FileName3+'.pgm';{ filename.NEF.pgm} end end else begin execute_unix2(application_path+'unprocessed_raw-astap '+param+' "'+filename3+'"');{direct to fits using modified version of unprocessed_raw} filename4:=FileName3+'.fits';{ filename.NEF.pgm} end; {$endif} {$ifdef Darwin}{MacOS} if fileexists(application_path+'/unprocessed_raw')=false then result:=false {failure} else begin execute_unix2(application_path+'/unprocessed_raw '+param+' "'+filename3+'"'); {direct to fits using modified version of unprocessed_raw} filename4:=FileName3+'.fits';{ filename.NEF.pgm} end; {$endif} {############################################################################################ Linux, compile unprocessed_raw under Linux: git clone https://github.com/han-k59/LibRaw-with-16-bit-FITS-support cd LibRaw-with-16-bit-FITS-support autoreconf --install ./configure --enable-shared=no make clean && make # to rebuild This will remove shared (.so) libraries and will build static (.a) instead ############################################################################################ Windows, in Linux use mingw cross-compiler to make Windows executables: git clone https://github.com/han-k59/LibRaw-with-16-bit-FITS-support cd LibRaw-with-16-bit-FITS-support make clean -f Makefile.mingw # to clean up make -f Makefile.mingw CXX=x86_64-w64-mingw32-g++ CC=x86_64-w64-mingw32-gcc for 32 bit Windows version make clean -f Makefile.mingw # to clean up make -f Makefile.mingw CXX=i686-w64-mingw32-g++ CC=i686-w64-mingw32-gcc To make it work edit the file Makefile.mingw and on third row change: CFLAGS=-O3 -I. -w -static-libgcc -static-libstdc++ You can check the result with the linux file command: file unprocessed_raw.exe unprocessed_raw.exe: PE32+ executable (console) x86-64, for MS Windows file unprocessed_raw.exe unprocessed_raw.exe: PE32 executable (console) Intel 80386, for MS Win ############################################################################################# Mac git clone https://github.com/han-k59/LibRaw-with-16-bit-FITS-support cd LibRaw-with-16-bit-FITS-support export LDADD=-mmacosx-version-min=10.10 make -f Makefile.dist #############################################################################################} end; if conv_index=2 then {dcraw specified} begin if ExtractFileExt(filename3)='.CR3' then begin result:=false; exit; end; {dcraw can't process .CR3} commando:='-D -4 -t 0'; {-t 0 disables the rotation} {$ifdef mswindows} if fileexists(application_path+'dcraw.exe')=false then result:=false {failure, try libraw} else ExecuteAndWait(application_path+'dcraw.exe '+commando+ ' "'+filename3+'"',false);{execute command and wait} {$endif} {$ifdef Linux} if fileexists(application_path+'dcraw-astap')=false then begin if fileexists('/usr/bin/dcraw-astap')=false then begin if fileexists('/usr/local/bin/dcraw-astap')=false then begin {try standard dcraw} if fileexists('/usr/bin/dcraw')=false then begin if fileexists('/usr/local/bin/dcraw')=false then result:=false {failure} else execute_unix2('/usr/local/bin/dcraw '+commando+' "'+filename3+'"'); end else execute_unix2('/usr/bin/dcraw '+commando+' "'+filename3+'"'); end {try standard dcraw} else execute_unix2('/usr/local/bin/dcraw-astap '+commando+' "'+filename3+'"'); end else execute_unix2('/usr/bin/dcraw-astap '+commando+' "'+filename3+'"'); end else execute_unix2(application_path+'dcraw-astap '+commando+' "'+filename3+'"'); {$endif} {$ifdef Darwin} {MacOS} if fileexists(application_path+'/dcraw')=false then result:=false {failure, try libraw} else execute_unix2(application_path+'/dcraw '+commando+' "'+filename3+'"'); {$endif} if result=false then memo2_message('DCRAW executable not found! Will try unprocessed_raw as alternative.') else filename4:=ChangeFileExt(FileName3,'.pgm');{for DCRaw} end; if result=false then {no conversion program} begin if conv_index=2 then begin {$ifdef mswindows} application.messagebox(pchar('Could not find: '+application_path+'dcraw.exe !!' ),pchar('Error'),MB_ICONWARNING+MB_OK); {$endif} {$ifdef Linux} application.messagebox(pchar('Could not find program dcdraw !!, Install this program. Eg: sudo apt-get install dcraw' ),pchar('Error'),MB_ICONWARNING+MB_OK); {$endif} {$ifdef Darwin} {MacOS} application.messagebox(pchar('Could not find: '+application_path+'dcraw' ),pchar('Error'),MB_ICONWARNING+MB_OK); {$endif} end; if conv_index<=1 then begin {LibRaw} {$ifdef mswindows} application.messagebox(pchar('Could not find: '+application_path+'unprocessed_raw.exe !!, Download, libraw and place in program directory' ),pchar('Error'),MB_ICONWARNING+MB_OK); {$endif} {$ifdef linux} application.messagebox(pchar('Could not find program unprocessed_raw !!, Install libraw. Eg: sudo apt-get install libraw-bin' ),pchar('Error'),MB_ICONWARNING+MB_OK); {$endif} {$ifdef Darwin}{MacOS} application.messagebox(pchar('Could not find: '+application_path+'unprocessed_raw' ),pchar('Error'),MB_ICONWARNING+MB_OK); {$endif} end; exit; end; if ExtractFileExt(filename4)='.pgm' then {pgm file} begin if load_PPM_PGM_PFM(fileName4,head,img) then {succesfull PGM load} begin deletefile(filename4);{delete temporary pgm file} filename4:=ChangeFileExt(FileName4,'.fits'); if head.date_obs='' then {no date detected in comments} begin JD2:=2415018.5+(FileDateToDateTime(fileage(filename3))); {fileage raw, convert to Julian Day by adding factor. filedatatodatetime counts from 30 dec 1899.} head.date_obs:=JdToDate(jd2); update_text ('DATE-OBS=',#39+head.date_obs+#39);{give start point exposures} end; update_text ('BAYERPAT=',#39+'????'+#39);{identify raw OSC image} add_text ('HISTORY ','Converted from '+filename3); result:=true; end else result:=false; if ((savefile) and (conv_index=2) and (result)) then {PPM interstage file, save to fits, Not required for the new unprocessed_raw-astap} begin if conv_index=2 {dcraw} then head.set_temperature:=extract_temperature_from_filename(filename4);{including update header} update_text('OBJECT =',#39+extract_objectname_from_filename(filename4)+#39); {spaces will be added/corrected later} result:=save_fits(img_buffer,filename4,16,true);{overwrite. Filename2 will be set to fits file} end; if loadfile=false then img:=nil;{clear memory} end else begin {fits file created by modified unprocessed_raw} if loadfile then begin result:=load_fits(filename4,true {light},true {load data},true {update memo},0,head,img); {load new fits file} if ((result) and (savefile=false)) then begin deletefile(filename4);{delete temporary fits file} filename4:=ChangeFileExt(filename3,'.fits');{rather then creating ".CR3.fits" create extension ".fits" for command line. So ".CR3" result in ".ini" and ".wcs" logs} end; end; end; if result then filename3:=filename4; {confirm conversion succes with new fits file name} end; function convert_to_fits(var filen: string): boolean; {convert to fits} var ext : string; begin ext:=uppercase(ExtractFileExt(filen)); result:=false; if check_raw_file_extension(ext) then {raw format} begin result:=convert_raw(false{load},true{save},filen,head,img_loaded); end else if (ext='.FZ') then {CFITSIO format} begin result:=unpack_cfitsio(filen); {filename2 contains the new file name} if result then filen:=filename2; end else begin if ((ext='.PPM') or (ext='.PGM') or (ext='.PFM') or (ext='.PBM')) then {PPM/PGM/ PFM} result:=load_PPM_PGM_PFM(filen,head,img_loaded) else if ext='.XISF' then {XISF} result:=load_xisf(filen,head,img_loaded) else if ((ext='.JPG') or (ext='.JPEG') or (ext='.PNG') or (ext='.TIF') or (ext='.TIFF')) then result:=load_tiffpngJPEG(filen,true,head,img_loaded); if result then begin if head.exposure=0 then {not an Astro-TIFF file with an header} begin head.exposure:=extract_exposure_from_filename(filen); {try to extract head.exposure time from filename. Will be added to the header} update_text('OBJECT =',#39+extract_objectname_from_filename(filen)+#39); {spaces will be added/corrected later} head.set_temperature:=extract_temperature_from_filename(filen); end; filen:=ChangeFileExt(filen,'.fits'); result:=save_fits(img_loaded,filen,nrbits,false); end; end; end; procedure Tmainwindow.convert_to_fits1click(Sender: TObject); var I: integer; err, dobackup : boolean; begin OpenDialog1.Title := 'Select multiple files to convert to FITS.'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter := 'All formats |*.png;*.PNG;*.jpg;*.JPG;*.bmp;*.BMP;*.tif;*.tiff;*.TIF;*.new;*.ppm;*.pgm;*.pbm;*.pfm;*.xisf;*.fz;'+ '*.RAW;*.raw;*.CRW;*.crw;*.CR2;*.cr2;*.CR3;*.cr3;*.KDC;*.kdc;*.DCR;*.dcr;*.MRW;*.mrw;*.ARW;*.arw;*.NEF;*.nef;*.NRW;.nrw;*.DNG;*.dng;*.ORF;*.orf;*.PTX;*.ptx;*.PEF;*.pef;*.RW2;*.rw2;*.SRW;*.srw;*.RAF;*.raf;'+ '|RAW files|*.RAW;*.raw;*.CRW;*.crw;*.CR2;*.cr2;*.CR3;*.cr3;*.KDC;*.kdc;*.DCR;*.dcr;*.MRW;*.mrw;*.ARW;*.arw;*.NEF;*.nef;*.NRW;.nrw;*.DNG;*.dng;*.ORF;*.orf;*.PTX;*.ptx;*.PEF;*.pef;*.RW2;*.rw2;*.SRW;*.srw;*.RAF;*.raf;'+ '|PNG, TIFF, JPEG, BMP(*.png,*.tif*, *.jpg,*.bmp)|*.png;*.PNG;*.tif;*.tiff;*.TIF;*.jpg;*.JPG;*.bmp;*.BMP'+ '|Compressed FITS files|*.fz'; opendialog1.initialdir:=ExtractFileDir(filename2); // fits_file:=false; esc_pressed:=false; err:=false; if OpenDialog1.Execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } dobackup:=img_loaded<>nil; if dobackup then backup_img;{preserve img array and fits header of the viewer} try { Do some lengthy operation } with OpenDialog1.Files do for I := 0 to Count - 1 do begin progress_indicator(100*i/(count),' Solving');{show progress} Application.ProcessMessages; if esc_pressed then begin err:=true; break;end; filename2:=Strings[I]; mainwindow.caption:=filename2+' file nr. '+inttostr(i+1)+'-'+inttostr(Count); if convert_to_fits(filename2)=false then begin mainwindow.caption:='Error converting '+filename2; err:=true; end; end; if err=false then mainwindow.caption:='Completed, all files converted.' else mainwindow.caption:='Finished, files converted but with errors or stopped!'; finally if dobackup then restore_img;{for the viewer} Screen.Cursor:=crDefault; { Always restore to normal } progress_indicator(-100,'');{progresss done} end; end; end; function load_image(re_center,plot: boolean): boolean; {load fits or PNG, BMP, TIF} var ext1,filename_org : string; begin if plot then begin mainwindow.caption:=filename2; filename_org:=filename2; mainwindow.shape_marker1.visible:=false; mainwindow.shape_marker2.visible:=false; mainwindow.updown1.position:=0;{reset muli-extension up down} end; ext1:=uppercase(ExtractFileExt(filename2)); x_coeff[0]:=0; {reset DSS_polynomial, use for check if there is data} y_coeff[0]:=0; a_order:=0; {SIP_polynomial, use for check if there is data} ap_order:=0; {SIP_polynomial, use for check if there is data} result:=false;{assume failure} {fits} if ((ext1='.FIT') or (ext1='.FITS') or (ext1='.FTS') or (ext1='.NEW')or (ext1='.WCS') or (ext1='.AXY') or (ext1='.XYLS') or (ext1='.GSC') or (ext1='.BAK')) then {FITS} begin result:=load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded); if ((result=false) or (head.naxis<2)) then {no image or failure.} begin update_menu(false); exit; {WCS file} end; end else if (ext1='.FZ') then {CFITSIO format} begin if unpack_cfitsio(filename2)=false then begin beep; exit; end else{successful conversion using funpack} result:=load_fits(filename2,true {light},true {load data},true {update memo},0,head,img_loaded); {load new fits file} if result=false then begin update_menu(false);exit; end; end {fz} else if check_raw_file_extension(ext1) then {raw format} begin if convert_raw(true{load},false{save},filename2,head,img_loaded)=false then begin update_menu(false);beep; exit; end else result:=true; {successful conversion using LibRaw} filename2:=ChangeFileExt(FileName2,'.fits');{for the case you want to save it} end{raw} else if ((ext1='.PPM') or (ext1='.PGM') or (ext1='.PFM') or (ext1='.PBM')) then {PPM/PGM/ PFM} begin if load_PPM_PGM_PFM(filename2,head,img_loaded)=false then begin update_menu(false);exit; end {load the simple formats ppm color or pgm grayscale, exit on failure} else result:=true; end else if ext1='.XISF' then {XISF} begin if load_xisf(filename2,head,img_loaded)=false then begin update_menu(false);exit; end {load XISF, exit on failure} else result:=true; end else {tif, png, bmp, jpeg} if load_tiffpngJPEG(filename2,true {light},head,img_loaded)=false then begin update_menu(false);exit; end {load tif, exit on failure} else result:=true; if plot then begin if ((head.naxis3=1) and (mainwindow.preview_demosaic1.checked)) then demosaic_advanced(img_loaded);{demosaic and set levels} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} image_move_to_center:=re_center; plot_fits(mainwindow.image1,re_center,true); {mainwindow.image1.Visible:=true; is done in plot_fits} update_equalise_background_step(1);{update equalise background menu} add_recent_file(filename_org);{As last action, add to recent file list.} end; if commandline_execution=false then begin img_backup:=nil;{release backup memory} index_backup:=size_backup; {initiate start index_backup:=0} end; end; //procedure Tmainwindow.FormClose(Sender: TObject; var Action: TCloseAction); //begin // esc_pressed:=true;{stop processing. Required for reliable stopping by APT} // save_settings2; //end; procedure Tmainwindow.receivemessage(Sender: TObject);{For OneInstance, called from timer (linux) or SimpleIPCServer1MessageQueued (Windows)} begin if SimpleIPCServer1.PeekMessage(1,True) then begin BringToFront; filename2:=SimpleIPCServer1.StringMessage; load_image(true,true {plot});{show image of parameter1} end; end; procedure convert_mono(var img: image_array; var head: Theader); var fitsX,fitsY: integer; img_temp : image_array; begin if head.naxis3<3 then exit;{prevent run time error mono images} memo2_message('Converting to mono.'); setlength(img_temp,1,head.width,head.height);{set length of image array mono} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_temp[0,fitsx,fitsy]:=(img[0,fitsx,fitsy]+img[1,fitsx,fitsy]+img[2,fitsx,fitsy])/3; head.naxis:=2;{mono} head.naxis3:=1; img:=nil; img:=img_temp; end; procedure Tmainwindow.convertmono1Click(Sender: TObject); begin if head.naxis3<3 then exit;{prevent run time error mono images} Screen.Cursor:=crHourglass; application.processmessages; backup_img; convert_mono(img_loaded,head); update_header_for_colour; {update header naxis and naxis3 keywords} add_text('HISTORY ','Converted to mono'); {colours are now mixed, redraw histogram} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false,true);{plot} Screen.cursor:=crDefault; end; procedure Tmainwindow.compress_fpack1Click(Sender: TObject); var i: integer; filename1: string; begin OpenDialog1.Title := 'Select multiple FITS files to compress. Original files will be kept.'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter := 'FITS files|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS'; esc_pressed:=false; if OpenDialog1.Execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } try { Do some lengthy operation } with OpenDialog1.Files do for I := 0 to Count - 1 do begin progress_indicator(100*i/(count),' Converting');{show progress} filename1:=Strings[I]; memo2_message(filename2+' file nr. '+inttostr(i+1)+'-'+inttostr(Count)); Application.ProcessMessages; if ((esc_pressed) or (pack_cfitsio(filename1)=false)) then begin beep; mainwindow.caption:='Exit with error!!'; Screen.Cursor:=crDefault; exit;end; end; finally mainwindow.caption:='Finished, all files compressed with extension .fz.'; Screen.Cursor:=crDefault; { Always restore to normal } progress_indicator(-100,'');{progresss done} end; end; end; procedure Tmainwindow.copy_to_clipboard1Click(Sender: TObject); var tmpbmp : TBitmap; x1,x2,y1,y2 : integer; SRect,DRect : TRect; begin if abs(startX-stopX)<4 then Clipboard.Assign(Image1.Picture.Bitmap) else begin {selection} try TmpBmp := TBitmap.Create; try {convert array coordinates to screen coordinates} if flip_horizontal1.Checked then begin x1:=head.width-1-startX;x2:=head.width-stopX; end else begin x1:=startx;x2:=stopX;end; if flip_vertical1.Checked=false then begin y1:=head.height-1-startY;y2:=head.height-1-stopY; end else begin y1:=startY;y2:=stopY;end; TmpBmp.Width := abs(x2-x1); TmpBmp.Height := abs(y2-y1); TmpBmp.Canvas.CopyMode := cmSrcCopy; SRect := Rect(x1,y1,x2,y2); DRect := Rect(0,0,TmpBmp.Width,TmpBmp.height); TmpBmp.Canvas.copyrect(DRect, mainwindow.Image1.canvas,SRect); Clipboard.Assign(TmpBmp); finally TmpBmp.Free; end; except end; end; end; procedure Tmainwindow.extractred1Click(Sender: TObject); begin // green_even:= ( (odd(x+1+offsetX)) and (odd(y+1+offsetY)) );{even(i) function is odd(i+1), even is here for array position not fits position} // green_odd := ( (odd(x+offsetX)) and (odd(y+offsetY)) ); // red :=( (odd(x+offsetX)) and (odd(y+1+offsetY)) ); // blue:=( (odd(x+1+offsetX)) and (odd(y+offsetY)) ); split_raw(1,1,'TR');{extract one of the Bayer matrix pixels} end; procedure Tmainwindow.extractblue1Click(Sender: TObject); begin split_raw(1,1,'TB');{extract one of the Bayer matrix pixels} end; procedure Tmainwindow.extractgreen1Click(Sender: TObject); begin split_raw(1,1,'TG');{extract one of the Bayer matrix pixels} end; procedure Tmainwindow.grid1Click(Sender: TObject); begin if head.naxis=0 then exit; if grid1.checked=false then {clear screen} begin plot_fits(mainwindow.image1,false,true); end else plot_grid; end; procedure Tmainwindow.bin_2x2menu1Click(Sender: TObject); begin if head.naxis<>0 then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; {move viewer data to img_backup} if sender=bin_2x2menu1 then begin bin_X2X3X4(2); filename2:=ChangeFileExt(Filename2,'_bin2x2.fit'); end else begin bin_X2X3X4(3); filename2:=ChangeFileExt(Filename2,'_bin3x3.fit'); end; plot_fits(mainwindow.image1,true,true);{plot real} mainwindow.caption:=Filename2; Screen.Cursor:=crDefault; end; end; function download_vsp(limiting_mag: double) : boolean;//AAVSO API access var s : string; val : char; count,i,j,m,er,fov,dummy : integer; errorRA,errorDEC :boolean; begin result:=false; fov:=round(sqrt(sqr(head.width)+sqr(head.height))*abs(head.cdelt2*60)); //arcmin. cdelt2 can be negative for other solvers s:=get_http('https://www.aavso.org/apps/vsp/api/chart/?format=json&ra='+floattostr6(head.ra0*180/pi)+'&dec='+floattostr6(head.dec0*180/pi)+'&fov='+inttostr(fov)+'&maglimit='+floattostr4(limiting_mag));{get webpage} if length(s)<50 then begin beep; exit end;; setlength(vsp,1000); count:=0; j:=150;//skip some header stuff repeat i:=posex('"auid":"',s,j); //AUID will be always available if i=0 then break;//no more data i:=i+length('"auid":"'); j:=posex('"',s,i); vsp[count].auid:=copy(s,i,j-i); i:=posex('"ra":"',s,j);//RA will be always available i:=i+length('"ra":"'); j:=posex('"',s,i); ra_text_to_radians(copy(s,i,j-i),vsp[count].ra,errorRA); {convert ra text to double in radians} i:=posex('"dec":"',s,j);//dec will be always available i:=i+length('"dec":"'); j:=posex('"',s,i); dec_text_to_radians(copy(s,i,j-i),vsp[count].dec,errorDEC); {convert dec text to double in radians} vsp[count].Vmag:='?'; vsp[count].Bmag:='?'; repeat //read optional "bands" inc(j); val:=s[j]; if val='V' then //V mag found, could be missing begin i:=posex('"mag":',s,j); i:=i+length('"mag":'); j:=posex(',',s,i); vsp[count].Vmag:=copy(s,i,j-i); i:=posex('error":',s,j); i:=i+length('error":'); j:=posex('}',s,i); vsp[count].Verr:=copy(s,i,j-i); end else if val='B' then //B mag found, could be missing begin i:=posex('"mag":',s,j); i:=i+length('"mag":'); j:=posex(',',s,i); vsp[count].Bmag:=copy(s,i,j-i); i:=posex('error":',s,j); i:=i+length('error":'); j:=posex('}',s,i); vsp[count].Berr:=copy(s,i,j-i); end; until ((val=']') or (j>=length(s))); inc(count);//number of entries/stars until count>=length(vsp);//normally will stop at above break setlength(vsp,count); result:=true; end; function download_vsx(limiting_mag: double): boolean;//AAVSO API access var s,dummy,url : string; count,i,j,errorRA,errorDEC : integer; radius,ra,dec : double; begin result:=false; radius:=sqrt(sqr(head.width)+sqr(head.height))*abs(head.cdelt2/2); //radius in degrees. Some solvers produce files with neagative cdelt2 url:='https://www.aavso.org/vsx/index.php?view=api.list&ra='+floattostr6(head.ra0*180/pi)+'&dec='+floattostr6(head.dec0*180/pi)+'&radius='+floattostr6(radius)+'&tomag='+floattostr4(limiting_mag)+'&format=json'; s:=get_http(url); if length(s)<25 then begin beep; exit end;; setlength(vsx,1000); count:=0; j:=25;//skip some header stuff repeat i:=posex('"Name":"',s,j); //Name will be always available if i=0 then break;//no more data i:=i+length('"Name":"'); j:=posex('"',s,i); vsx[count].name:=copy(s,i,j-i); i:=posex('"RA2000":"',s,j);//RA will be always available i:=i+length('"RA2000":"'); j:=posex('"',s,i); dummy:=copy(s,i,j-i); val(dummy,ra,errorRA); {convert ra text to double in radians} vsx[count].ra:=ra*pi/180; i:=posex('"Declination2000":"',s,j);//dec will be always available i:=i+length('"Declination2000":"'); j:=posex('"',s,i); dummy:=copy(s,i,j-i); val(dummy,dec,errorDec); {convert ra text to double in radians} vsx[count].dec:=dec*pi/180; vsx[count].maxmag:='?'; vsx[count].minmag:='?'; vsx[count].period:='?'; vsx[count].category:='?'; repeat //read optional field inc(j); if ((s[j]='M') and (s[j+1]='a') and (s[j+2]='x')) then //MaxMag found, could be missing begin i:=j+length('MaxMag":"'); j:=posex('"',s,i); vsx[count].maxmag:=copy(s,i,j-i); end else if ((s[j]='M') and (s[j+1]='i') and (s[j+2]='n')) then //MaxMag found, could be missing begin i:=j+length('MinMag":"'); j:=posex('"',s,i); vsx[count].minmag:=copy(s,i,j-i); end else if ((s[j]='C') and (s[j+1]='a') and (s[j+2]='t')) then begin i:=j+length('Category":"'); j:=posex('"',s,i); vsx[count].category:=copy(s,i,3); end else if ((s[j]='P') and (s[j+1]='e') and (s[j+2]='r')) then begin i:=j+length('Period":"'); j:=posex('"',s,i); vsx[count].period:=copy(s,i,j-i); end; until ((s[j]='}') or (j>=length(s))); inc(count);//number of entries/stars until count>=length(vsx);//normally will stop at above break setlength(vsx,count); result:=true; end; function aavso_update_required : boolean; //update of downloaded database required? var sep : double; begin result:=true; if vsx=nil then exit; if length(vsx)>0 then ang_sep(vsx[0].ra,vsx[0].dec,head.ra0,head.dec0,sep); if sep<head.width*head.cdelt2*2*pi/180 then result:=false;// first entry near to center position image then no update required end; procedure Tmainwindow.variable_star_annotation1Click(Sender: TObject); var Save_Cursor : TCursor; lim_magn : double; begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } case stackmenu1.annotate_mode1.itemindex of 0,1: lim_magn:=-99;//use local database 2: lim_magn:=13; 3: lim_magn:=15; else lim_magn:=99; end; //case if lim_magn>0 then //online version begin repeat if aavso_update_required then begin memo2_message('Downloading data from AAVSO.'); if download_vsx(lim_magn)=false then begin memo2_message('Error!');break; end; if download_vsp(lim_magn)=false then begin memo2_message('Error!');break; end; end; plot_vsx_vsp; until true; end else begin //local version load_variable;{Load the database once. If loaded no action} plot_deepsky; {Plot the deep sky object on the image} end; Screen.Cursor:=crDefault; end; procedure Tmainwindow.positionanddate1Click(Sender: TObject); begin if head.naxis=0 then exit; if positionanddate1.checked=false then {clear screen} begin plot_fits(mainwindow.image1,false,true); end else plot_text; end; procedure Tmainwindow.inspection1click(Sender: TObject); begin if extra_stars=false then CCDinspector(30,three_corners,strtofloat(measuring_angle)) else CCDinspector(10,three_corners,strtofloat(measuring_angle)); end; procedure Tmainwindow.removegreenpurple1Click(Sender: TObject); begin green_purple_filter(img_loaded); end; procedure Tmainwindow.roundness1Click(Sender: TObject); begin form_inspection1.roundness1Click(nil); end; procedure Tmainwindow.sip1Click(Sender: TObject); {simple SIP coefficients calculation assuming symmetric radial distortion. Distortion increases with the third power of the off-center distance} var stars_measured,i,countX,countY : integer; xc,yc,x,y,factorX,factorY : double; factorsX,factorsY : array of double; valid : boolean; begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } if calculate_undisturbed_image_scale then {calculate and correct the image scale as if the optical system is undisturbed. The distance between the stars in the center are measured and compared between detection and database. It is assumed that the center of the image is undisturbed optically } begin measure_distortion(false {plot and no sip correction},stars_measured);{measure distortion of all stars} {Standard formala for optical distortion Xdelta:=Xideal*(k1*r1^2 + k2*r1^4 + ....) simplify by taking only the first factor Xdelta:=Xideal* k1*r1^2 Xdelta:=Xideal* k1*(X^2+Y^2) Xdelta:=k1*X^3+ k1* X*Y^2 formula (1) for the SIP correction X^3 is AP_3_0 and X*Y^2 is AP_1_2 k1:=Xdelta/(X^3 + (X*Y^2) formula (2) to find k1 to find k1 take the median from all points using formula (2) where x or y is large enough to measure the distortion} valid:=false; if stars_measured>0 then begin countX:=0; countY:=0; setlength(factorsX,stars_measured); setlength(factorsY,stars_measured); for i:=0 to stars_measured-1 do begin x:=distortion_data[0,i]-head.crpix1;{database, x from center} y:=distortion_data[1,i]-head.crpix2; xc:=distortion_data[2,i]-head.crpix1;{measured, x from center} yc:=distortion_data[3,i]-head.crpix2; if abs(x)>0.35*head.height then valid:=true; {stars detected over 70% or range.} if ((abs(x-xc)>=1){some offset} and (abs(x)>0.2*head.crpix1)) {some distance from center} then begin factorsX[countX]:=(x-xc)/(x*(sqr(x)+sqr(y))); {measure the k1 factor for every star detection} inc(countX,1); end; if ((abs(y-yc)>=1){some offset} and (abs(y)>0.2*head.crpix2)) {some distance from center} then begin factorsY[countY]:=(y-yc)/(y*(sqr(x)+sqr(y))); {measure the k1 factor for every star detection} inc(countY,1); end; end; if valid then begin factorX:=smedian(factorsX,countX);{filter out outliers using median} factorY:=smedian(factorsY,countY);{filter out outliers using median} factorsX:=nil; factorsY:=nil; // 0 1 2 3 4 5 6 // u2:=u + A_0_0+ a_1_0*u + a_2_0*u*u + a_0_2*v*v + a_1_1*u*v + a_2_1*u*u*v+ a_1_2*u*v*v + a_3_0*u*u*u + a_0_3*v*v*v; {SIP correction for second or third order} // v2:=v + B_0_0 + b_0_1*v + b_2_0*u*u + b_0_2*v*v + b_1_1*u*v + b_2_1*u*u*v+ b_1_2*u*v*v + b_3_0*u*u*u + b_0_3*v*v*v; {SIP correction for second or third order} {pixel to sky coefficients} A_ORDER:=3;{allow usage in astap} A_0_0:=0; A_0_1:=0; A_0_2:=0; A_0_3:=0; A_1_0:=0; A_1_1:=0; A_1_2:=factorX; A_2_0:=0; A_2_1:=0; A_3_0:=factorX; B_0_0:=0; B_0_1:=0; B_0_2:=0; B_0_3:=factorY; B_1_0:=0; B_2_0:=0; B_3_0:=0; B_1_1:=0; B_1_2:=0; B_2_1:=factorY; B_3_0:=0; {sky to pixel coefficients} AP_order:=3; {allow usage in astap} AP_0_0:=0; {approximation just negative the factors} AP_0_1:=0; AP_0_2:=0; AP_0_3:=0; AP_1_0:=0; AP_1_1:=0; AP_1_2:=-factorX; AP_2_0:=0; AP_2_1:=0; AP_3_0:=-factorX; BP_0_0:=0; {approximation just negative the factors} BP_0_1:=0; BP_0_2:=0; BP_0_3:=-factorY; BP_1_0:=0; BP_1_1:=0; BP_1_2:=0; BP_2_0:=0; BP_2_1:=-factorY; BP_3_0:=0; update_float ('A_ORDER =',' / Polynomial order, axis 1. Pixel to Sky ' ,3); remove_key ('A_0_0 =',false{all}); remove_key ('A_0_1 =',false{all}); remove_key ('A_0_2 =',false{all}); remove_key ('A_0_3 =',false{all}); remove_key ('A_1_0 =',false{all}); remove_key ('A_1_1 =',false{all}); update_float ('A_1_2 =',' / SIP coefficient ' ,A_1_2); remove_key ('A_2_0 =',false{all}); remove_key ('A_2_1 =',false{all}); update_float ('A_3_0 =',' / SIP coefficient ' ,A_3_0); update_float ('B_ORDER =',' / Polynomial order, axis 2. Pixel to sky. ' ,3); remove_key ('B_0_0 =',false{all}); remove_key ('B_0_1 =',false{all}); remove_key ('B_0_2 =',false{all}); update_float ('B_0_3 =',' / SIP coefficient ' ,B_0_3); remove_key ('B_1_0 =',false{all}); remove_key ('B_1_1 =',false{all}); remove_key ('B_1_2 =',false{all}); remove_key ('B_2_0 =',false{all}); update_float ('B_2_1 =',' / SIP coefficient ' ,B_2_1); remove_key ('B_3_0 =',false{all}); update_float('AP_ORDER=',' / Inv polynomial order, axis 1. Sky to pixel. ' ,3); remove_key ('AP_0_0 =',false{all}); remove_key ('AP_0_1 =',false{all}); remove_key ('AP_0_2 =',false{all}); remove_key ('AP_0_3 =',false{all}); remove_key ('AP_1_0 =',false{all}); remove_key ('AP_1_1 =',false{all}); update_float('AP_1_2 =',' / SIP coefficient ' ,AP_1_2); remove_key ('AP_2_0 =',false{all}); remove_key ('AP_2_1 =',false{all}); update_float('AP_3_0 =',' / SIP coefficient ' ,AP_3_0); update_float('BP_ORDER=',' / Inv polynomial order, axis 2. Sky to pixel. ' ,3); remove_key ('BP_0_0 =',false{all}); remove_key ('BP_0_1 =',false{all}); remove_key ('BP_0_2 =',false{all}); update_float('BP_0_3 =',' / SIP coefficient ' ,BP_0_3); remove_key ('BP_1_0 =',false{all}); remove_key ('BP_1_1 =',false{all}); remove_key ('BP_1_2 =',false{all}); remove_key ('BP_2_0 =',false{all}); update_float('BP_2_1 =',' / SIP coefficient ' ,BP_2_1); remove_key ('BP_3_0 =',false{all}); mainwindow.Polynomial1.color:=clform; mainwindow.Polynomial1.ItemIndex:=1;{set at SIP} sip:=true;{generic variable. Use sip corrections for plotting} memo2_message('Added SIP coefficients to header for a 3th order radial correction. This correction will only work for barrel distortion and pincushion distortion. You could test it with the inspector showing the distortion vectors in SIP readout mode.'); //up to '+floattostrF(abs(factor)*max_radius*max_radius*max_radius,ffFixed,3,2)+' pixels.');{factor*radius^3} end else begin beep; memo2_message('Abort, not enough stars detected in outer regions!'); end; end else begin beep; memo2_message('Abort, not enough stars detected!'); end; end;{succesfull measure scale} Screen.Cursor:=crDefault; { Show hourglass cursor, processmessages is for Linux } end; procedure Tmainwindow.split_osc1Click(Sender: TObject); begin end; procedure Tmainwindow.extract_pixel_11Click(Sender: TObject); begin split_raw(1,1,'P11');{extract one of the Bayer matrix pixels} end; procedure Tmainwindow.extract_pixel_12Click(Sender: TObject); begin split_raw(1,2,'P12');{extract one of the Bayer matrix pixels} end; procedure Tmainwindow.extract_pixel_21Click(Sender: TObject); begin split_raw(2,1,'P21');{extract one of the Bayer matrix pixels} end; procedure Tmainwindow.extract_pixel_22Click(Sender: TObject); begin split_raw(2,2,'P22');{extract one of the Bayer matrix pixels} end; procedure Tmainwindow.FormDropFiles(Sender: TObject; const FileNames: array of String); begin {no check on file extension required} filename2:=FileNames[0]; if load_image(true,true {plot}){load and center}=false then beep;{image not found} end; procedure Tmainwindow.histogram_range1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin use_histogram(img_loaded,false {update});{get histogram} plot_fits(mainwindow.image1,false,true); end; procedure Tmainwindow.histogram_values_to_clipboard1Click(Sender: TObject); {copy histogram values to clipboard} var c : integer; info : string; begin // histogram : array[0..2,0..65535] of integer;{red,green,blue,count} info:=''; for c := 0 to 65535 do begin info:=info+inttostr(c)+#9+inttostr(histogram[0,c]); if head.naxis3>1 then info:=info+#9+inttostr(histogram[1,c])+#9+inttostr(histogram[2,c]);{add green and blue if colour image} if c=0 then info:=info+ #9+'Value, Red count, Green count, Blue count'; info:=info+slinebreak; end; Clipboard.AsText:=info; end; procedure Tmainwindow.Image1Paint(Sender: TObject); begin mainwindow.statusbar1.panels[8].text:=inttostr(round(100*mainwindow.image1.width/ (mainwindow.image1.picture.width)))+'%'; {zoom factor} end; procedure Tmainwindow.imageflipv1Click(Sender: TObject); begin end; procedure Tmainwindow.measuretotalmagnitude1Click(Sender: TObject); var fitsX,fitsY,dum,font_height,counter,tx,ty,saturation_counter : integer; flux,bg_median,value : double; Save_Cursor : TCursor; mag_str : string; bg_array : array of double; begin if ((head.cd1_1=0) or (head.naxis=0)) then exit; if ((abs(stopX-startX)>2)and (abs(stopY-starty)>2)) then begin if ((flux_magn_offset=0) or (flux_aperture<>99){calibration was for point sources}) then {calibrate and ready for extendend sources} begin annulus_radius:=14;{calibrate for extended objects using full star flux} flux_aperture:=99;{calibrate for extended objects} plot_and_measure_stars(true {calibration},false {plot stars},false{report lim magnitude}); end; if flux_magn_offset=0 then begin beep; exit;end; Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; tx:=stopX; ty:=stopY; if mainwindow.Flip_horizontal1.Checked then {restore based on flipped conditions} tx:=head.width-1-tx; if mainwindow.flip_vertical1.Checked=false then ty:=head.height-1-ty; if startX>stopX then begin dum:=stopX; stopX:=startX; startX:=dum; end;{swap} if startY>stopY then begin dum:=stopY; stopY:=startY; startY:=dum; end; setlength(bg_array,5000); {measure the median of the suroundings} counter:=0; for fitsY:=startY+1-5 to stopY-1+5 do {calculate mean at square boundaries of detection box} for fitsX:=startX+1-5 to stopX-1+5 do begin if ( (fitsX<startX) or (fitsX>stopX-1) or (fitsY<startY) or (fitsY>stopY-1) ) then {measure only outside the box} begin if counter>=length(bg_array) then SetLength(bg_array,counter+5000);{increase length} bg_array[counter]:=img_loaded[0,fitsX,fitsY]; inc(counter); end; end; if counter>0 then bg_median:=Smedian(bg_array,counter) else bg_median:=9999999;{something went wrong} saturation_counter:=0; flux:=0; for fitsY:=startY+1 to stopY-1 do {within rectangle} for fitsX:=startX+1 to stopX-1 do begin value:=img_loaded[0,fitsX+1,fitsY+1]- bg_median; flux:=flux+value;{add all flux. Without stars it should average zero. Detecting flux using >3*sd misses too much signal comets} if value>65000 then inc(saturation_counter);{keep track of number of saturated pixels} end; if flux<1 then flux:=1; str(flux_magn_offset-ln(flux)*2.511886432/ln(10):0:1,mag_str); if (saturation_counter*65500/flux)<0.01 then mag_str:='MAGN='+mag_str {allow about 1% saturation} else mag_str:='MAGN <'+mag_str+', '+inttostr(saturation_counter) +' saturated pixels !'; image1.Canvas.brush.Style:=bsClear; image1.Canvas.font.color:=$00AAFF; {orange} image1.Canvas.font.size:=12; {$ifdef mswindows} SetTextAlign(canvas.handle, ta_left or ta_top or TA_NOUPDATECP);{always, since Linux is doing this fixed} setbkmode(canvas.handle,TRANSPARENT); {transparent} font_height:=round(canvas.Textheight('0')*1.2);{font size times ... to get underscore at the correct place. Fonts coordinates are all top/left coordinates } {$else} {Linux} font_height:=round(canvas.Textheight('0')*1.0);{font size times ... to get underscore at the correct place. Fonts coordinates are all top/left coordinates } {$endif} image1.Canvas.font.name:='default'; image1.Canvas.textout(3+tx,round(-font_height + ty), mag_str); bg_array:=nil;{free mem} Screen.Cursor:=crDefault; end{fits file} else application.messagebox(pchar('No area selected! Hold the right mouse button down while selecting an area.'),'',MB_OK); end; procedure Tmainwindow.loadsettings1Click(Sender: TObject); begin OpenDialog1.Title := 'Open settings'; opendialog1.Filter := '(configuration file|*.cfg'; opendialog1.initialdir:=user_path; if opendialog1.execute then begin with stackmenu1 do {clear exisiting lists} begin listview1.clear; listview2.clear; listview3.clear; listview4.clear; listview6.clear; listview7.clear; listview8.clear; end; load_settings(opendialog1.filename); end; end; procedure Tmainwindow.menucopy1Click(Sender: TObject);{for fits header memo1 popup menu} begin Clipboard.AsText:=copy(Memo1.Text,Memo1.SelStart+1, Memo1.SelLength); end; procedure Tmainwindow.Menufind1Click(Sender: TObject); {for fits header memo1 popup menu} begin PatternToFind:=uppercase(inputbox('Find','Text to find in fits header:' ,PatternToFind)); position_find := pos(PatternToFind, uppercase( Memo1.Text)); if position_find > 0 then begin Memo1.SelStart := position_find-1; Memo1.SelLength := Length(PatternToFind); Memo1.SetFocus; // necessary so highlight is visible end; end; procedure Tmainwindow.menufindnext1Click(Sender: TObject);{for fits header memo1 popup menu} begin position_find := posex(PatternToFind, uppercase(Memo1.Text),position_find+1); if position_find > 0 then begin Memo1.SelStart := position_find-1; Memo1.SelLength := Length(PatternToFind); Memo1.SetFocus; // necessary so highlight is visible end; end; procedure Tmainwindow.copy_paste_tool1Click(Sender: TObject); var dum,stopX2,stopY2, startX2, startY2 : integer; begin if head.naxis=0 then exit; if ((abs(stopX-startX)>1)and (abs(stopY-starty)>1)) then begin Screen.Cursor:=crDrag; backup_img;{required in case later ctrl-z is used} if startX>stopX then begin dum:=stopX; stopX2:=startX; startX2:=dum; end else begin stopX2:=stopX; startX2:=startX; end; {swap if required} if startY>stopY then begin dum:=stopY; stopY2:=startY; startY2:=dum; end else begin stopY2:=stopY; startY2:=startY; end; copy_paste_x:=startX2+1;{take the inside of the rectangle} {save for Application.ProcessMessages in copy_paste_x; This could change startX, startY} copy_paste_y:=startY2+1; copy_paste_w:=stopX2-copy_paste_x; copy_paste_h:=stopY2-copy_paste_y; copy_paste:=true; end {fits file} else application.messagebox(pchar('No area selected! Hold the right mouse button down while selecting an area.'),'',MB_OK); end; procedure Tmainwindow.angular_distance1Click(Sender: TObject); var shapetype : integer; hfd1,star_fwhm,snr,flux,xc,yc, hfd2, star_fwhm2,snr2,flux2,xc2,yc2,angle : double; info_message,info_message2 : string; Save_Cursor : TCursor; begin if head.naxis=0 then exit; if ((abs(stopX-startX)>2) or (abs(stopY-starty)>2)) then begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; HFD(img_loaded,startX,startY,14{annulus radius},99 {flux aperture restriction},0 {adu_e}, hfd1,star_fwhm,snr,flux,xc,yc);{star HFD and FWHM} if ((hfd1<15) and (hfd1>=0.8) {two pixels minimum} and (snr>10) and (flux>1){rare but happens}) then {star detected in img_loaded} begin shapetype:=1;{circle} shape_marker1_fitsX:=xc+1;{store fits value for zoom} shape_marker1_fitsY:=yc+1; end else begin info_message:='Object 1, no lock'+#10; shape_marker1_fitsX:=startX+1;{store fits value for zoom} shape_marker1_fitsY:=startY+1; shapetype:=0;{rectangle} end; show_marker_shape(mainwindow.shape_marker1,shapetype,20,20,10{minimum}, shape_marker1_fitsX,shape_marker1_fitsY); HFD(img_loaded,stopX,stopY,14{annulus radius},99 {flux aperture restriction},0 {adu_e}, hfd2,star_fwhm2,snr2,flux2,xc2,yc2);{star HFD and FWHM} if ((hfd2<15) and (hfd2>=0.8) {two pixels minimum} and (snr2>10) and (flux2>1){rare but happens}) then {star detected in img_loaded} begin shapetype:=1;{circle} shape_marker2_fitsX:=xc2+1;{store fits value for zoom} shape_marker2_fitsY:=yc2+1; end else begin info_message:=info_message+'Object 2, no lock'+#10; shape_marker2_fitsX:=stopX+1;{store fits value for zoom} shape_marker2_fitsY:=stopY+1; shapetype:=0;{rectangle} end; show_marker_shape(mainwindow.shape_marker2,shapetype,20,20,10{minimum},shape_marker2_fitsX,shape_marker2_fitsY); angle:=fnmodulo (arctan2(shape_marker2_fitsX-shape_marker1_fitsX,shape_marker2_fitsY-shape_marker1_fitsY)*180/pi + head.crota2,360); info_message2:=floattostrf(sqrt(sqr(shape_marker2_fitsX-shape_marker1_fitsX)+sqr(shape_marker2_fitsY-shape_marker1_fitsY))*head.cdelt2*3600,ffgeneral,5,5); if head.cdelt2<>0 then info_message2:=info_message2+'"' else info_message2:=info_message2+' pixels'; info_message2:=info_message2+#9+' ∠='+floattostrf(angle,ffgeneral,5,5)+'°'; case QuestionDlg (pchar('Angular distance '),pchar(info_message+info_message2),mtCustom,[mrYes,'Copy to clipboard?', mrNo, 'No', 'IsDefault'],'') of mrYes: Clipboard.AsText:=info_message2; end; Screen.Cursor:=crDefault; end {fits file} else application.messagebox(pchar('No distance selected! Hold the right mouse button down while moving from first to second star.'),'',MB_OK); end; procedure Tmainwindow.j2000_1Click(Sender: TObject); begin if j2000_1.checked then begin coord_frame:=0; galactic1.checked:=false; j2000d1.checked:=false; end; end; procedure Tmainwindow.j2000d1Click(Sender: TObject); begin if j2000d1.checked then begin coord_frame:=1; galactic1.checked:=false; j2000_1.checked:=false; end; end; procedure Tmainwindow.galactic1Click(Sender: TObject); begin if galactic1.checked then begin coord_frame:=2; j2000_1.checked:=false; j2000d1.checked:=false; end; end; procedure Tmainwindow.northeast1Click(Sender: TObject); begin if head.naxis=0 then exit; if northeast1.checked then begin plot_north_on_image; image1.refresh;{important, show update} end else plot_fits(mainwindow.image1,false,true); {clear indiicator} end; procedure do_stretching;{prepare strecht table and replot image} var i: integer; stretch,divider: single; begin stretch:=strtofloat2(mainwindow.stretch1.Text); if stretch<=0.5 then {word "off" gives zero} stretch_on:=false else begin stretch_on:=true; divider:=arcsinh(stretch); for i:=0 to 32768 do stretch_c[i]:=arcsinh((i/32768.0)*stretch)/divider;{prepare table} end; if mainwindow.stretch1.enabled then {file loaded} begin use_histogram(img_loaded,false {update});{get histogram} plot_fits(mainwindow.image1,false,true); end; end; procedure Tmainwindow.range1Change(Sender: TObject); begin do_stretching; end; procedure Tmainwindow.remove_atmouse1Click(Sender: TObject); var left_dist, right_dist, top_dist, bottom_dist : double; begin left_dist:=down_x/image1.width;{range 0..1} right_dist:=1-left_dist;{range 0..1} top_dist:=down_y/image1.height;{range 0..1} bottom_dist:=1-top_dist;{range 0..1} if ((left_dist<right_dist) and (left_dist<top_dist) and (left_dist<bottom_dist)) then mainwindow.remove_left1Click(nil) else if ((right_dist<left_dist) and (right_dist<top_dist) and (right_dist<bottom_dist)) then mainwindow.remove_right1Click(nil) else if ((top_dist<left_dist) and (top_dist<right_dist) and (top_dist<bottom_dist)) then mainwindow.remove_above1Click(nil) else if ((bottom_dist<left_dist) and (bottom_dist<right_dist) and (bottom_dist<top_dist)) then mainwindow.remove_below1Click(nil); end; procedure Tmainwindow.gradient_removal1Click(Sender: TObject); var colrr1,colgg1,colbb1,colrr2,colgg2,colbb2 : single; a,b,c,p : double; fitsX,fitsY,bsize : integer; begin if head.naxis=0 then exit; if ((abs(stopX-startX)>100) OR (abs(stopY-starty)>100)) then {or function since it could be parallel to x or y axis} begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; bsize:=20; colrr1:=mode(img_loaded,0,startX-bsize,startX+bsize,startY-bsize,startY+bsize,65535);{find most common colour of a local area} if head.naxis3>1 then colgg1:=mode(img_loaded,1,startX-bsize,startX+bsize,startY-bsize,startY+bsize,65535);{find most common colour of a local area} if head.naxis3>2 then colbb1:=mode(img_loaded,2,startX-bsize,startX+bsize,startY-bsize,startY+bsize,65535);{find most common colour of a local area} colrr2:=mode(img_loaded,0,stopX-bsize,stopX+bsize,stopY-bsize,stopY+bsize,65535);{find most common colour of a local area} if head.naxis3>1 then colgg2:=mode(img_loaded,0,stopX-bsize,stopX+bsize,stopY-bsize,stopY+bsize,65535);{find most common colour of a local area} if head.naxis3>2 then colbb2:=mode(img_loaded,0,stopX-bsize,stopX+bsize,stopY-bsize,stopY+bsize,65535);{find most common colour of a local area} a:=sqrt(sqr(stopX-startX)+sqr(stopY-startY)); {distance between bright and dark area} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin b:=sqrt(sqr(fitsX-startX)+sqr(fitsY-startY)); {distance from dark spot} c:=sqrt(sqr(fitsX-stopX)+sqr(fitsY-stopY)); {distance from bright spot} p:=-((sqr(b)-sqr(a)-sqr(c))/(2*a)); {projectiestelling scheefhoekige driehoek (Dutch), polytechnisch zakboekje 42 edition, a2/24 3.2} img_loaded[0,fitsX,fitsY]:=img_loaded[0,fitsX,fitsY]-(colrr2-colrr1)*(a-p)/a; if head.naxis3>1 then img_loaded[1,fitsX,fitsY]:=img_loaded[1,fitsX,fitsY]-(colgg2-colgg1)*(a-p)/a; if head.naxis3>2 then img_loaded[2,fitsX,fitsY]:=img_loaded[2,fitsX,fitsY]-(colbb2-colbb1)*(a-p)/a; end; use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false {re_center},true); Screen.Cursor:=crDefault; end {fits file} else application.messagebox(pchar('Place the mouse pointer at a dark area. Hold the right mouse button down and move the mouse pointer to a bright area.'+#10+#10+ 'Try to select two areas without a deepsky object within 20 pixels.'+#10+#10+ 'Moving from the dark area to the bright area should follow the direction of the gradient.'),'',MB_OK); end; procedure Tmainwindow.remove_longitude_latitude1Click(Sender: TObject); var I: integer; err,success : boolean; dobackup : boolean; begin OpenDialog1.Title:='Select multiple files to remove the observation location from'; OpenDialog1.Options:=[ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter:=dialog_filter_fits_tif; opendialog1.initialdir:=ExtractFileDir(filename2); // fits_file:=false; esc_pressed:=false; err:=false; if OpenDialog1.Execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } dobackup:=img_loaded<>nil; if dobackup then backup_img;{preserve img array and fits header of the viewer} try { Do some lengthy operation } with OpenDialog1.Files do for I := 0 to Count - 1 do begin Application.ProcessMessages; if esc_pressed then begin err:=true;break; end; filename2:=Strings[I]; mainwindow.caption:=filename2+' file nr. '+inttostr(i+1)+'-'+inttostr(Count);; if load_image(false {recenter},false {plot}) then begin remove_key('SITELAT =',true{all}); remove_key('SITELONG=',true{all}); if fits_file_name(filename2) then success:=savefits_update_header(filename2) else success:=save_tiff16_secure(img_loaded,filename2);{guarantee no file is lost} if success=false then begin ShowMessage('Write error !!' + filename2);Screen.Cursor:=crDefault; exit;end; end else err:=true; end; if err=false then mainwindow.caption:='Completed, all files converted.' else begin beep; ShowMessage('Errors!! Files modified but with errors or stopped!!'); end; finally if dobackup then restore_img;{for the viewer} Screen.Cursor:=crDefault; { Always restore to normal } end; end; end; procedure Tmainwindow.selectfont1Click(Sender: TObject); begin FontDialog1.font.size:=font_size; FontDialog1.font.color:=font_color; FontDialog1.font.name:=font_name; FontDialog1.font.style:= font_style; FontDialog1.font.charset:=font_charset; {note Greek=161, Russian or Cyrillic =204} FontDialog1.Execute; font_color:=FontDialog1.font.color; font_size:=FontDialog1.font.size; font_name:=FontDialog1.font.name; font_style:=FontDialog1.font.style; font_charset:=FontDialog1.font.charset; {select cyrillic for RussiaN} memo1.font.color:=font_color; memo1.font.size:=font_size; memo1.font.name:=font_name; memo1.font.style:=font_style; memo1.font.charset:=font_charset; end; procedure Tmainwindow.select_all1Click(Sender: TObject); begin memo1.setfocus;{required for selectall since hideselection is enabled when not having focus} Memo1.SelectAll; end; procedure Tmainwindow.menupasteClick(Sender: TObject);{for fits header memo1 popup menu} var I : integer; S,T : string; begin with Memo1 do begin I:= SelStart; S:= Memo1.Text; T:=Clipboard.AsText; system.insert(T, S, SelStart + 1); Text:= S; SelStart:= I + length(T); end; end; procedure Tmainwindow.annotate_minor_planets1Click(Sender: TObject); begin form_asteroids1:=Tform_asteroids1.Create(self); {in project option not loaded automatic} form_asteroids1.ShowModal; form_asteroids1.release; save_settings2; end; procedure Tmainwindow.radec_copy1Click(Sender: TObject); begin if ra1.focused then Clipboard.AsText:=ra1.text; if dec1.focused then Clipboard.AsText:=dec1.text; end; procedure Tmainwindow.radec_paste1Click(Sender: TObject); begin if ra1.focused then ra1.text:=Clipboard.AsText; if dec1.focused then dec1.text:=Clipboard.AsText; end; procedure Tmainwindow.radec_search1Click(Sender: TObject); begin keyboard_text:= extract_objectname_from_filename(filename2); form_listbox1:=TForm_listbox1.Create(self); {in project option not loaded automatic} form_listbox1.ShowModal; if object_found then begin ra1.text:=prepare_ra(ra_data,' ');{Add object position} dec1.text:=prepare_dec(dec_data,' '); end; form_listbox1.release; end; procedure Tmainwindow.save_settings1Click(Sender: TObject); begin save_settings2; end; procedure measure_magnitudes(annulus_rad:integer; deep: boolean; var stars :star_list);{find stars and return, x,y, hfd, flux} var fitsX,fitsY,radius, i, j,nrstars,n,m,xci,yci,sqr_radius: integer; hfd1,star_fwhm,snr,flux,xc,yc,detection_level,hfd_min : double; img_sa : image_array; begin SetLength(stars,4,5000);{set array length} setlength(img_sa,1,head.width,head.height);{set length of image array} get_background(0,img_loaded,false{histogram is already available},true {calculate noise level},{var}cblack,star_level);{calculate background level from peek histogram} if deep then detection_level:=5*noise_level[0] else detection_level:=star_level; hfd_min:=max(0.8 {two pixels},strtofloat2(stackmenu1.min_star_size_stacking1.caption){hfd});{to ignore hot pixels which are too small} nrstars:=0;{set counters at zero} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_sa[0,fitsX,fitsY]:=-1;{mark as star free area} for fitsY:=0 to head.height-1-1 do begin for fitsX:=0 to head.width-1-1 do begin if (( img_sa[0,fitsX,fitsY]<=0){area not occupied by a star} and (img_loaded[0,fitsX,fitsY]- cblack> detection_level)) then {new star} begin HFD(img_loaded,fitsX,fitsY,annulus_rad {typical 14, annulus radius},flux_aperture,0 {adu_e}, hfd1,star_fwhm,snr,flux,xc,yc);{star HFD and FWHM} if ((hfd1<15) and (hfd1>=hfd_min) {two pixels minimum} and (snr>10) and (flux>1){rare but happens}) then {star detected in img_loaded} begin {for testing} //if flipvertical=false then starY:=round(head.height-yc) else starY:=round(yc); //if fliphorizontal=true then starX:=round(head.width-xc) else starX:=round(xc); // size:=round(5*hfd1); // mainwindow.image1.Canvas.Rectangle(starX-size,starY-size, starX+size, starY+size);{indicate hfd with rectangle} // mainwindow.image1.Canvas.textout(starX+size,starY+size,floattostrf(hfd1, ffgeneral, 2,1));{add hfd as text} radius:=round(3.0*hfd1);{for marking star area. A value between 2.5*hfd and 3.5*hfd gives same performance. Note in practice a star PSF has larger wings then predicted by a Gaussian function} sqr_radius:=sqr(radius); xci:=round(xc);{star center as integer} yci:=round(yc); for n:=-radius to +radius do {mark the whole circular star area as occupied to prevent double detection's} for m:=-radius to +radius do begin j:=n+yci; i:=m+xci; if ((j>=0) and (i>=0) and (j<head.height) and (i<head.width) and (sqr(m)+sqr(n)<=sqr_radius)) then img_sa[0,i,j]:=1; end; if ((img_loaded[0,round(xc),round(yc)]<head.datamax_org-1) and (img_loaded[0,round(xc-1),round(yc)]<head.datamax_org-1) and (img_loaded[0,round(xc+1),round(yc)]<head.datamax_org-1) and (img_loaded[0,round(xc),round(yc-1)]<head.datamax_org-1) and (img_loaded[0,round(xc),round(yc+1)]<head.datamax_org-1) and (img_loaded[0,round(xc-1),round(yc-1)]<head.datamax_org-1) and (img_loaded[0,round(xc-1),round(yc+1)]<head.datamax_org-1) and (img_loaded[0,round(xc+1),round(yc-1)]<head.datamax_org-1) and (img_loaded[0,round(xc+1),round(yc+1)]<head.datamax_org-1) ) then {not saturated} begin {store values} inc(nrstars); if nrstars>=length(stars[0]) then begin SetLength(stars,4,nrstars+5000);{adapt array size if required} end; stars[0,nrstars-1]:=xc; {store star position} stars[1,nrstars-1]:=yc; stars[2,nrstars-1]:=hfd1; stars[3,nrstars-1]:=flux; // IF ((abs(xc-1635)<10) and (abs(yc-885)<10)) then // beep; end;{not saturated} end;{HFD good} end; end; end; img_sa:=nil;{free mem} SetLength(stars,4,nrstars);{set length correct} end; procedure Tmainwindow.annotate_unknown_stars1Click(Sender: TObject); var size,radius, i,j, starX, starY,fitsX,fitsY,n,m,xci,yci,hfd_counter : integer; Fliphorizontal, Flipvertical,saturated : boolean; hfd1,star_fwhm,snr,flux,xc,yc,measured_magn,magnd,magn_database, delta_magn,magn_limit, sqr_radius, hfd_median,backgr : double; messg : string; img_temp3,img_sa :image_array; const default=1000; begin if head.naxis=0 then exit; {file loaded?} Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } mainwindow.calibrate_photometry1Click(nil);{measure hfd and calibrate for point or extended sources depending on the setting} if flux_magn_offset=0 then begin beep; img_sa:=nil; img_temp3:=nil; Screen.Cursor:=crDefault; exit; end; Flipvertical:=mainwindow.flip_vertical1.Checked; Fliphorizontal:=mainwindow.Flip_horizontal1.Checked; magn_limit:=10*strtoint(copy(name_database,2,2)); {g18 => 180} image1.Canvas.Pen.Mode := pmMerge; image1.Canvas.Pen.width :=1; // round(1+head.height/image1.height);{thickness lines} image1.Canvas.brush.Style:=bsClear; image1.Canvas.font.color:=clyellow; image1.Canvas.font.name:='default'; image1.Canvas.font.size:=10; //round(max(10,8*head.height/image1.height));{adapt font to image dimensions} mainwindow.image1.Canvas.Pen.Color := clred; setlength(img_temp3,1,head.width,head.height);{set size of image array} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_temp3[0,fitsX,fitsY]:=default;{clear} plot_artificial_stars(img_temp3);{create artificial image with database stars as pixels} // img_loaded:=img_temp3; // plot_fits(mainwindow.image1,true,true); // exit; // get_background(0,img_loaded,false{histogram is already available},true {calculate noise level},{var}cblack,star_level);{calculate background level from peek histogram} analyse_image(img_loaded,head,10 {snr_min},false,hfd_counter,backgr, hfd_median); {find background, number of stars, median HFD} setlength(img_sa,1,head.width,head.height);{set length of image array} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_sa[0,fitsX,fitsY]:=-1;{mark as star free area} for fitsY:=0 to head.height-1 do begin for fitsX:=0 to head.width-1 do begin if (( img_sa[0,fitsX,fitsY]<=0){area not occupied by a star} and (img_loaded[0,fitsX,fitsY]- {cblack}backgr>5*noise_level[0] {star_level} ){star}) then {new star} begin HFD(img_loaded,fitsX,fitsY,round(1.5* hfd_median){annulus radius},3.0*hfd_median {flux aperture restriction},0 {adu_e}, hfd1,star_fwhm,snr,flux,xc,yc);{star HFD and FWHM} //memo2_message(floattostr(xc)+', ' +floattostr(yc)); xci:=round(xc);{star center as integer} yci:=round(yc); if ((xci>0) and (xci<head.width-1) and (yci>0) and (yci<head.height-1)) then saturated:=not ((img_loaded[0,xci,yci]<head.datamax_org-1) and (img_loaded[0,xci-1,yci]<head.datamax_org-1) and (img_loaded[0,xci+1,yci]<head.datamax_org-1) and (img_loaded[0,xci, yci-1]<head.datamax_org-1) and (img_loaded[0,xci, yci+1]<head.datamax_org-1) and (img_loaded[0,xci-1,yci-1]<head.datamax_org-1) and (img_loaded[0,xci-1,yci+1]<head.datamax_org-1) and (img_loaded[0,xci+1,yci-1]<head.datamax_org-1) and (img_loaded[0,xci+1,yci+1]<head.datamax_org-1) ) else saturated:=false; if (((hfd1<hfd_median*1.3) or (saturated){larger then normal}) and (hfd1>=hfd_median*0.75) and (snr>10) and (flux>1){rare but happens}) then {star detected in img_loaded} begin {for testing} // if flipvertical=false then starY:=round(head.height-yc) else starY:=round(yc); // if fliphorizontal=true then starX:=round(head.width-xc) else starX:=round(xc); // size:=round(5*hfd1); // mainwindow.image1.Canvas.Rectangle(starX-size,starY-size, starX+size, starY+size);{indicate hfd with rectangle} // mainwindow.image1.Canvas.textout(starX+size,starY+size,floattostrf(hfd1, ffgeneral, 2,1));{add hfd as text} // if ((abs(xc-2294)<4) and (abs(yc-274)<4)) then // beep; radius:=round(3.0*hfd_median);{for marking star area. A value between 2.5*hfd and 3.5*hfd gives same performance. Note in practice a star PSF has larger wings then predicted by a Gaussian function} sqr_radius:=sqr(radius); for n:=-radius to +radius do {mark the whole circular star area as occupied to prevent double detection's} for m:=-radius to +radius do begin j:=n+yci; i:=m+xci; if ((j>=0) and (i>=0) and (j<head.height) and (i<head.width) and (sqr(m)+sqr(n)<=sqr_radius)) then img_sa[0,i,j]:=+1;{mark as star area} end; measured_magn:=(flux_magn_offset-ln(flux)*2.511886432/ln(10))*10; {magnitude x 10} if measured_magn<magn_limit-10 then {bright enough to be in the database} begin magn_database:=default;{1000} for i:=-3 to 3 do for j:=-3 to 3 do begin {database star available?} magnd:=img_temp3[0,round(xc)+i,round(yc)+j]; if magnd<default then {a star from the database} magn_database:=min(magnd,magn_database);{take brightest} end; delta_magn:=measured_magn - magn_database; {delta magnitude time 10} if delta_magn<-10 then {unknown star, 1 magnitude brighter then database} begin {mark} if Flipvertical=false then starY:=round(head.height-yc) else starY:=round(yc); if Fliphorizontal then starX:=round(head.width-xc) else starX:=round(xc); if magn_database=1000 then messg:='' {unknown star} else messg:=' Δ'+inttostr(round(delta_magn)); {star but wrong magnitude} size:=round(5*hfd1); {for rectangle annotation} image1.Canvas.Rectangle(starX-size,starY-size, starX+size, starY+size);{indicate hfd with rectangle} image1.Canvas.textout(starX+size,starY,inttostr(round(measured_magn)) +messg );{add magnitude as text} end; end; end;{HFD good} end; end; end; img_temp3:=nil;{free mem} img_sa:=nil;{free mem} Screen.Cursor:=crDefault; end; procedure Tmainwindow.import_auid1Click(Sender: TObject); begin end; procedure Tmainwindow.inspector1Click(Sender: TObject); begin form_inspection1:=Tform_inspection1.Create(self); {in project option not loaded automatic} form_inspection1.ShowModal; form_inspection1.release; save_settings2; end; procedure QuickSort(var A: array of double; iLo, iHi: Integer) ;{ Fast quick sort. Sorts elements in the array list with indices between lo and hi} var Lo, Hi : integer; Pivot, T: double;{ pivot, T are the same type as the elements of array } begin Lo := iLo; Hi := iHi; Pivot := A[(Lo + Hi) div 2]; repeat while A[Lo] < Pivot do Inc(Lo) ; while A[Hi] > Pivot do Dec(Hi) ; if Lo <= Hi then begin {swap} T := A[Lo]; A[Lo] := A[Hi]; A[Hi] := T; Inc(Lo) ; Dec(Hi) ; end; until Lo > Hi; if Hi > iLo then QuickSort(A, iLo, Hi) ; {executes itself recursively} if Lo < iHi then QuickSort(A, Lo, iHi) ; {executes itself recursively} end; function SMedian(list: array of double; leng: integer): double;{get median of an array of double} var mid : integer; begin if leng=0 then result:=nan else if leng=1 then result:=list[0] else begin quickSort(list,0,leng-1); mid := (leng-1) div 2; //(high(list) - low(list)) div 2; if Odd(leng) then begin if leng<=3 then result:=list[mid] else result:=(list[mid-1]+list[mid]+list[mid+1])/3; end else result:=(list[mid]+list[mid+1])/2; end; end; procedure Tmainwindow.annotate_with_measured_magnitudes1Click(Sender: TObject); var size, i, starX, starY,lim_magn,fontsize,text_height,text_width : integer; Fliphorizontal, Flipvertical : boolean; stars : star_list; begin if head.naxis=0 then exit; {file loaded?} Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } mainwindow.calibrate_photometry1Click(nil);{measure hfd and calibrate for point or extended sources depending on the setting} if flux_magn_offset=0 then begin beep; Screen.Cursor:=crDefault; exit; end; Flipvertical:=mainwindow.flip_vertical1.Checked; Fliphorizontal:=mainwindow.Flip_horizontal1.Checked; image1.Canvas.Pen.Mode := pmMerge; image1.Canvas.Pen.width :=1; image1.Canvas.Pen.color :=clred; image1.Canvas.brush.Style:=bsClear; image1.Canvas.font.color:=clyellow; image1.Canvas.font.name:='default'; fontsize:=8; image1.Canvas.font.size:=fontsize; text_height:=mainwindow.image1.Canvas.textheight('T');{the correct text height, also for 4k with "make everything bigger"} mainwindow.image1.Canvas.Pen.Color := clred; measure_magnitudes(14,true {deep},stars); if length(stars[0])>0 then begin for i:=0 to length(stars[0])-2 do begin if Flipvertical=false then starY:=round(head.height-1-stars[1,i]) else starY:=round(stars[1,i]); if Fliphorizontal then starX:=round(head.width-1-stars[0,i]) else starX:=round(stars[0,i]); size:=round(stars[2,i]);{5*hfd for marking stars} mainwindow.image1.Canvas.moveto(starX+2*size,starY); mainwindow.image1.Canvas.lineto(starX+size,starY); mainwindow.image1.Canvas.moveto(starX-2*size,starY); mainwindow.image1.Canvas.lineto(starX-size,starY); lim_magn:=round((flux_magn_offset-ln(stars[3,i]{flux})*2.511886432/ln(10))*10); image1.Canvas.textout(starX,starY-text_height,inttostr(lim_magn) );{add magnitude as text} end; end else memo2_message('No stars found!'); text_width:=8*mainwindow.image1.Canvas.textwidth('1234567890');{Calculate textwidth for 80 characters. This also works for 4k with "make everything bigger"} fontsize:=trunc(fontsize*(head.width-2*fontsize)/text_width);{use full width for 80 characters} image1.Canvas.font.size:=fontsize; image1.Canvas.font.color:=clwhite; text_height:=mainwindow.image1.Canvas.textheight('T');{the correct text height, also for 4k with "make everything bigger"} image1.Canvas.textout(round(fontsize*2),head.height-text_height,'Limiting magnitude is '+ floattostrF(magn_limit,ffgeneral,3,1)+' (7σ, aperture ⌀'+stackmenu1.flux_aperture1.text+')');{magn_limit global variable calculate in plot_and_measure_stars} Screen.Cursor:=crDefault; end; procedure Tmainwindow.annotations_visible1Click(Sender: TObject); begin stackmenu1.annotations_visible1.enabled:=annotations_visible1.checked; {follow in stack menu} if head.naxis=0 then exit; if annotations_visible1.checked=false then {clear screen} plot_fits(mainwindow.image1,false,true) else if annotated then plot_annotations(false {use solution vectors},false); end; procedure Tmainwindow.autocorrectcolours1Click(Sender: TObject); begin stackmenu1.auto_background_level1Click(nil); stackmenu1.apply_factor1Click(nil); end; procedure Tmainwindow.batch_annotate1Click(Sender: TObject); var I: integer; skipped, nrannotated :integer; dobackup,success : boolean; begin OpenDialog1.Title:= 'Select multiple files to add asteroid annotation to the header'; OpenDialog1.Options:= [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter:=dialog_filter_fits_tif; esc_pressed:=false; if OpenDialog1.Execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } nrannotated:=0; skipped:=0; dobackup:=img_loaded<>nil; if dobackup then backup_img;{preserve img array and fits header of the viewer} try { Do some lengthy operation } with OpenDialog1.Files do for I := 0 to Count - 1 do begin filename2:=Strings[I]; memo2_message('Annotating: '+filename2); Application.ProcessMessages; if esc_pressed then begin break; end; if load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded) then {load image success} begin if head.cd1_1=0 then begin skipped:=skipped+1; {not astrometric solved} memo2_message('Skipped: '+filename2+' No solution in header found. First batch solve the images'); end else begin plot_mpcorb(strtoint(maxcount_asteroid),strtofloat2(maxmag_asteroid),true {add annotations}); if fits_file_name(filename2) then success:=savefits_update_header(filename2) else success:=save_tiff16_secure(img_loaded,filename2);{guarantee no file is lost} if success=false then begin ShowMessage('Write error !!' + filename2);Screen.Cursor:=crDefault; exit;end; nrannotated :=nrannotated +1; end; end; end; finally if dobackup then restore_img;{for the viewer} Screen.Cursor:=crDefault; { Always restore to normal } end; memo2_message(inttostr(nrannotated)+' images annotated, '+inttostr(skipped)+' images did not have an astrometric solution in the header.'); end; end; procedure Tmainwindow.batch_solve_astrometry_netClick(Sender: TObject); begin form_astrometry_net1:=Tform_astrometry_net1.Create(self); {in project option not loaded automatic} form_astrometry_net1.ShowModal; form_astrometry_net1.release; end; procedure give_spiral_position(position : integer; var x,y : integer); {give x,y position of square spiral as function of input value} var i,dx,dy,t,count: integer; begin x :=0;{star position} y :=0; dx := 0;{first step size x} dy := -1;{first step size y} count:=0; for i:=0 to 10000*10000 {maximum width*height} do begin if count>=position then exit; {exit and give x and y position} inc(count); if ( (x = y) or ((x < 0) and (x = -y)) or ((x > 0) and (x = 1-y))) then {turning point} begin {swap dx by negative dy and dy by negative dx} t:=dx; dx := -dy; dy := t; end; x :=x+ dx;{walk through square} y :=y+ dy;{walk through square} end;{for loop} end; procedure standard_equatorial2(ra0,dec0,x,y,cdelt: double; var ra,dec : double); inline;{transformation from CCD coordinates into equatorial coordinates} var sin_dec0 ,cos_dec0 : double; begin sincos(dec0 ,sin_dec0 ,cos_dec0); x:=x *cdelt/ (3600*180/pi);{scale CCD pixels to standard coordinates (tang angle)} y:=y *cdelt/ (3600*180/pi); ra := ra0 + arctan2 (-x, cos_DEC0- y*sin_DEC0);{atan2 is required for images containing celestial pole} if ra>pi*2 then ra:=ra-pi*2; {prevent values above 2*pi which confuses the direction detection later} if ra<0 then ra:=ra+pi*2; dec := arcsin ( (sin_dec0+y*cos_dec0)/sqrt(1.0+x*x+y*y) ); end; procedure Tmainwindow.calibrate_photometry1Click(Sender: TObject); var apert,annul,backgr,hfd_med : double; hfd_counter : integer; Save_Cursor : TCursor; begin if ((head.naxis=0) or (head.cd1_1=0)) then exit; Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } apert:=strtofloat2(stackmenu1.flux_aperture1.text); {text "max" will generate a zero} if ((flux_magn_offset=0) or (aperture_ratio<>apert){new calibration required}) then begin annulus_radius:=14;{calibrate for extended objects} flux_aperture:=99;{calibrate for extended objects} aperture_ratio:=apert;{remember setting} if apert<>0 then {smaller aperture for photometry. Setting <> max} begin analyse_image(img_loaded,head,30,false {report}, hfd_counter,backgr,hfd_med); {find background, number of stars, median HFD} if hfd_med<>0 then begin memo2_message('Median HFD is '+floattostrf(hfd_med, ffgeneral, 2,2)+'. Aperture and annulus will be adapted accordingly.');; flux_aperture:=hfd_med*apert/2;{radius} annul:=strtofloat2(stackmenu1.annulus_radius1.text); annulus_radius:=min(50,round(hfd_med*annul/2)-1);{Radius. Limit to 50 to prevent runtime errors} end; end else memo2_message('To increase the accuracy of point sources magnitudes set a smaller aperture diameter in tab "photometry".'); plot_and_measure_stars(true {calibration},false {plot stars},true{report lim magnitude}); end; Screen.Cursor:=crDefault; end; procedure Tmainwindow.Constellations1Click(Sender: TObject); begin if head.naxis=0 then exit; if Constellations1.checked=false then {clear screen} begin plot_fits(mainwindow.image1,false,true); end else plot_constellations; end; procedure Tmainwindow.freetext1Click(Sender: TObject); begin if freetext1.checked=false then {clear screen} begin plot_fits(mainwindow.image1,false,true); end else begin freetext:=InputBox('Free text:','',freetext ); if freetext<>'' then plot_text; end; end; procedure Tmainwindow.hfd_arcseconds1Click(Sender: TObject); begin hfd_arcseconds:=hfd_arcseconds1.checked; end; procedure Tmainwindow.add_marker_position1Click(Sender: TObject); begin if add_marker_position1.checked then begin marker_position:=InputBox('Enter α, δ position in one of the following formats: ','23 00 00.0 +89 00 00.0 or 23.99 +89.99 or 359.99d 89.99 or C for center',marker_position ); if marker_position='' then begin add_marker_position1.checked:=false; exit; end; mainwindow.shape_marker3.visible:=true; add_marker_position1.checked:=place_marker_radec(marker_position);{place a marker} end else mainwindow.shape_marker3.visible:=false; end; procedure Tmainwindow.SimpleIPCServer1MessageQueued(Sender: TObject);{For OneInstance, this event only occurs in Windows} begin {$ifdef mswindows} receivemessage(Sender); {$else} {unix} {$endif} end; procedure Tmainwindow.StatusBar1MouseEnter(Sender: TObject); begin if head.naxis<>0 then begin Statusbar1.Panels[0].text:='α, δ'; Statusbar1.Panels[1].text:='α, δ centered'; Statusbar1.Panels[2].text:='Local standard deviation or star values'; Statusbar1.Panels[3].text:='X, Y = [pixel value(s)]'; Statusbar1.Panels[4].text:='RGB values screen'; Statusbar1.Panels[7].text:='w x h angular_distance angle'; Statusbar1.Panels[8].text:='zoom factor'; end; end; procedure Tmainwindow.stretch_draw_fits1Click(Sender: TObject); var tmpbmp: TBitmap; ARect: TRect; x, y,x2,y2 : Integer; xLine: PByteArray; ratio : double; flipH,flipV : boolean; begin Screen.Cursor:=crHourglass; application.processmessages; backup_img; try TmpBmp := TBitmap.Create; try TmpBmp.Width := mainwindow.image1.width; TmpBmp.Height := mainwindow.image1.height; ARect := Rect(0,0, mainwindow.image1.width, mainwindow.image1.height); TmpBmp.Canvas.StretchDraw(ARect, mainwindow.Image1.Picture.bitmap); ratio:=TmpBmp.width/head.width; head.width:=TmpBmp.width; head.height:=TmpBmp.Height; flipH:=mainwindow.flip_horizontal1.checked; flipV:=mainwindow.flip_vertical1.checked; setlength(img_loaded,head.naxis3,head.width,head.height); for y := 0 to head.height -1 do begin {place in array} xLine := TmpBmp.ScanLine[y]; for x := 0 to head.width -1 do begin if flipH then x2:=head.width-1-x else x2:=x; if flipV=false then y2:=head.height-1-y else y2:=y; img_loaded[0,x2,y2]:=xLine^[x*3];{red} if head.naxis3>1 then img_loaded[1,x2,y2]:=xLine^[x*3+1];{green} if head.naxis3>2 then img_loaded[2,x2,y2]:=xLine^[x*3+2];{blue} end; end; update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); update_integer('DATAMAX =',' / Maximum data value ' ,255); if head.crpix1<>0 then begin head.crpix1:=head.crpix1*ratio; update_float ('CRPIX1 =',' / X of reference pixel ' ,head.crpix1);end; if head.crpix2<>0 then begin head.crpix2:=head.crpix2*ratio; update_float ('CRPIX2 =',' / Y of reference pixel ' ,head.crpix2);end; if head.cdelt1<>0 then begin head.cdelt1:=head.cdelt1/ratio; update_float ('CDELT1 =',' / X pixel size (deg) ' ,head.cdelt1);end; if head.cdelt2<>0 then begin head.cdelt2:=head.cdelt2/ratio; update_float ('CDELT2 =',' / Y pixel size (deg) ' ,head.cdelt2);end; if head.cd1_1<>0 then begin head.cd1_1:=head.cd1_1/ratio; head.cd1_2:=head.cd1_2/ratio; head.cd2_1:=head.cd2_1/ratio; head.cd2_2:=head.cd2_2/ratio; update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_2); end; head.XBINNING:=head.XBINNING/ratio; head.YBINNING:=head.YBINNING/ratio; update_float ('XBINNING=',' / Binning factor in width ' ,head.XBINNING); update_float ('YBINNING=',' / Binning factor in height ' ,head.YBINNING); if head.XPIXSZ<>0 then begin head.XPIXSZ:=head.XPIXSZ/ratio; head.YPIXSZ:=head.YPIXSZ/ratio; update_float('XPIXSZ =',' / Pixel width in microns (after stretching) ' ,head.XPIXSZ); update_float('YPIXSZ =',' / Pixel height in microns (after stretching) ' ,head.YPIXSZ); update_float('PIXSIZE1=',' / Pixel width in microns (after stretching) ' ,head.XPIXSZ); update_float('PIXSIZE2=',' / Pixel height in microns (after stretching) ' ,head.YPIXSZ); end; add_text ('HISTORY ','Image stretched with factor '+ floattostr6(ratio)); {plot result} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,true {center_image},true);{center and stretch with current settings} finally TmpBmp.Free; end; except end; Screen.Cursor:=crDefault; end; procedure Tmainwindow.UpDown1Click(Sender: TObject; Button: TUDBtnType); begin if ((last_extension) and (button=btNext)) then begin UpDown1.position:=UpDown1.position-1; {no more extensions} exit; end; if load_fits(filename2,true,true,true {update memo},updown1.position,head,img_loaded){load fits file } then begin if head.naxis<>0 then {not a bintable, compressed} begin if ((head.naxis3=1) and (mainwindow.preview_demosaic1.checked)) then demosaic_advanced(img_loaded) {demosaic and set levels} else use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false {re_center},true); end; end; end; procedure Tmainwindow.zoomfactorone1Click(Sender: TObject); begin {zoom to 100%} zoom(mainwindow.image1.picture.width/mainwindow.image1.width , TPoint.Create(Panel1.Width div 2, Panel1.Height div 2){zoom center panel1} ); end; procedure check_second_instance;{For OneInstance, check for other instance of the application. If so send paramstr(1) and quit} var Client: TSimpleIPCClient; other_instance : boolean; {$ifdef mswindows} {$else} {unix} Timer : ttimer;{for OneInstance in Linux} {$endif} begin other_instance:=false; Client := TSimpleIPCClient.Create(nil); with Client do begin try ServerID:=mainwindow.SimpleIPCServer1.ServerID; {copy the id from the server to the client} if Client.ServerRunning then {An older instance is running.} begin other_instance:=true; Active := True; SendStringMessage(paramstr(1));{send paramstr(1) to the server of the first instance} end; except end; Free; {client} end; if other_instance then begin Application.ShowMainForm := False; Application.Terminate; end else begin mainwindow.SimpleIPCServer1.active:=true; {activate IPCserver} {$ifdef mswindows} {$else} {unix} Timer := TTimer.Create(nil); {In Linux no event occurs in MessageQueued. Trigger receive message by timer} Timer.Interval := 300; {300 ms interval} Timer.OnTimer := mainwindow.receivemessage; {on timer event do receivemessage} {$endif} end; end; procedure update_mainmenu;// for Mac begin with mainwindow do begin with LoadFITSPNGBMPJPEG1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with select_directory_thumb1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with recent1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with recent2 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with recent3 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with recent4 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with recent5 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with recent6 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with recent7 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with recent8 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with Saveasfits1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with Export_image1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with SaveasJPGPNGBMP1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with Exit1 do shortcut:=menus.ShortCut(VK_Q, [ssMeta]); // Meta-Q with Stackimages1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 //tools with astrometric_solve_image1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with inversimage1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with convertmono1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with bin_2x2menu1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with bin_3x3menu1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with rotate1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with flip_v1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with rotate_arbitrary1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with clean_up1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with calibrate_photometry1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 //sqm1 no change to avoid conflict with Exit with annotate_with_measured_magnitudes1 {ctrl+alt+m} do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with star_annotation1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with annotate_unknown_stars1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with variable_star_annotation1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with annotate_minor_planets1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with hyperleda_annotation1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with deepsky_annotation1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 //view with image_cleanup1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with center_lost_windows do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with flip_horizontal1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with flip_vertical1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with grid1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 //headermemo with Menufind2 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with select_all2 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 end; end; procedure Tmainwindow.FormCreate(Sender: TObject); var param1: string; begin {OneInstance of ASTAP if only one parameter is specified. So if user clicks on an associated image in explorer} if paramcount=1 then begin param1:=paramstr(1); if ord(param1[length(param1)])>57 {letter, not a platesolve command} then {2019-5-4, modification only unique instance if called with file as parameter(1)} check_second_instance;{check for and other instance of the application. If so send paramstr(1) and quit} end else if paramcount>1 then {commandline mode} trayicon1.visible:=true;{Show trayicon. Do it early otherwise in Win10 it is not shown in the command line mode} application_path:= extractfilepath(application.location);{} {$IfDef Darwin}// for OS X, database_path:='/usr/local/opt/astap/'; {$else} database_path:=application_path; {$ifdef mswindows} {$else} {unix} if copy(database_path,1,4)='/usr' then {for Linux distributions} database_path:='/usr/share/astap/data/'; {$endif} {$endif} application.HintHidePause:=5000;{display hint 5000 ms instead standard 2500} {application.HintPause:=1000;} application.HintShortPause:=1000; {$ifdef mswindows} Screen.Cursors[crMyCursor] := LoadCursor(HInstance, 'cross_cursor'); {$else} {unix} Screen.Cursors[crMyCursor] := LoadCursor(HInstance, 'cross_cursor_linux'); {$endif} image1.cursor:=crMyCursor; Application.OnHint := DisplayHint; deepstring := Tstringlist.Create;{for deepsky overlay} recent_files:= Tstringlist.Create; head.naxis:=0; {not fits files available} {$IfDef Darwin}// for MacOS if commandline_execution=false then update_mainmenu; {$endif} end; procedure Tmainwindow.deepsky_annotation1Click(Sender: TObject); begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; load_deep;{load the deepsky database once. If loaded no action} plot_deepsky;{plot the deep sky object on the image} Screen.Cursor:=crDefault; end; procedure Tmainwindow.add_marker1Click(Sender: TObject); begin if add_marker1.checked=false then mainwindow.shape_marker1.Visible:=false else begin shape_marker1_fitsX:=startX+1; shape_marker1_fitsY:=startY+1; show_marker_shape(mainwindow.shape_marker1,0 {rectangle},20,20,0 {minimum size},shape_marker1_fitsX, shape_marker1_fitsY); shape_marker1.hint:='Marker x='+floattostrF(shape_marker1_fitsX,ffFixed,0,1)+' y='+ floattostrF(shape_marker1_fitsY,ffFixed,0,1); end; end; procedure Tmainwindow.center_lost_windowsClick(Sender: TObject); begin mainwindow.left:=0; mainwindow.top:=0; stackmenu1.left:=0; stackmenu1.top:=0; insp_left:=0; insp_top:=0; end; procedure Tmainwindow.DisplayHint(Sender: TObject); begin if ((length(GetlongHint(Application.Hint))>0)) then begin // mainwindow.Caption:=GetlongHint(Application.Hint); statusbar1.SimplePanel:=true; statusbar1.Simpletext:=GetlongHint(Application.Hint); end else statusbar1.SimplePanel:=false; end; procedure Tmainwindow.FormDestroy(Sender: TObject); begin settingstring.free; deepstring.free;{free deepsky} wide_field_stars:=nil; {free wide_field_database} recent_files.free; vsp:=nil; end; procedure plot_rectangle(x1,y1,x2,y2: integer); {accurate positioned rectangle on screen coordinates} begin with mainwindow.image1.Canvas do begin moveto(x1,y1); lineto(x1,y2); lineto(x2,y2); lineto(x2,y1); lineto(x1,y1); end; end; procedure plot_the_circle(x1,y1,x2,y2:integer);{plot circle} var size,xcenter,ycenter : integer; begin if mainwindow.Flip_horizontal1.Checked then {restore based on flipped conditions} begin x1:=(head.width-1)-x1; x2:=(head.width-1)-x2; end; if mainwindow.flip_vertical1.Checked=false then begin y1:=(head.height-1)-y1; y2:=(head.height-1)-y2; end; size:=abs(x2-x1); if abs(x2-x1)>20 then {circle} mainwindow.image1.canvas.ellipse(x1,y1,x2+1,y2+1) {circle, the y+1,x+1 are essential to center the circle(ellipse) at the middle of a pixel. Otherwise center is 0.5,0.5 pixel wrong in x, y} else begin {two lines} xcenter:=(x2+x1) div 2; ycenter:=(y2+y1) div 2; mainwindow.image1.canvas.moveto(xcenter-(size div 2),ycenter); mainwindow.image1.canvas.lineto(xcenter-(size div 4),ycenter); mainwindow.image1.canvas.moveto(xcenter+(size div 2),ycenter); mainwindow.image1.canvas.lineto(xcenter+(size div 4),ycenter); end; end; procedure flip(x1,y1 : integer; out x2,y2 :integer);{array to screen or screen to array} begin if mainwindow.Flip_horizontal1.Checked then begin x2:=(head.width-1)-x1;{flip for screen coordinates, 0...head.width-1} end else x2:=x1; if mainwindow.flip_vertical1.Checked=false then begin y2:=(head.height-1)-y1; end else y2:=y1; end; procedure plot_the_annotation(x1,y1,x2,y2:integer; typ:double; name,magn :string);{plot annotation from header in ASTAP format} var {typ >0 line, value defines thickness line} size,xcenter,ycenter,text_height,text_width :integer; {type<=0 rectangle or two lines, value defines thickness lines} begin dec(x1); {convert to screen coordinates 0..} dec(y1); dec(x2); dec(y2); if mainwindow.Flip_horizontal1.Checked then {restore based on flipped conditions} begin x1:=(head.width-1)-x1;{flip for screen coordinates, 0...head.width-1} x2:=(head.width-1)-x2; end; if mainwindow.flip_vertical1.Checked=false then begin y1:=(head.height-1)-y1; y2:=(head.height-1)-y2; end; mainwindow.image1.Canvas.Pen.width:=max(1,round(1*abs(typ))); ; mainwindow.image1.Canvas.font.size:=max(12,round(12*abs(typ))); if typ>0 then {single line} begin mainwindow.image1.Canvas.moveto(x1,y1); mainwindow.image1.Canvas.lineto(x2,y2); end else begin {rectangle or two indicating lines} size:=abs(x2-x1); if ((size>5) and (abs(y2-y1)>5)) then plot_rectangle(x1,y1,x2,y2) {accurate positioned rectangle on screen coordinates} else begin {two lines} xcenter:=(x2+x1) div 2; ycenter:=(y2+y1) div 2; mainwindow.image1.canvas.moveto(xcenter-(size div 2),ycenter); mainwindow.image1.canvas.lineto(xcenter-(size div 4),ycenter); mainwindow.image1.canvas.moveto(xcenter+(size div 2),ycenter); mainwindow.image1.canvas.lineto(xcenter+(size div 4),ycenter); end; end; text_height:=round(mainwindow.image1.canvas.Textheight(name));{font size times ... to get underscore at the correct place. Fonts coordinates are all top/left coordinates } text_width:=round(mainwindow.image1.canvas.Textwidth(name)); {font size times ... to get underscore at the correct place. Fonts coordinates are all top/left coordinates } if x2>=x1 then text_width:=0; if y2>=y1 then text_height:=text_height div 3; mainwindow.image1.Canvas.textout( -text_width+x2, -text_height + y2,name{name}+magn{magnitude}); end; procedure plot_annotations(use_solution_vectors,fill_combo: boolean); {plot annotations stored in fits header. Offsets are for blink routine} var count1,x1,y1,x2,y2 : integer; typ : double; List: TStrings; name,magn : string; begin if head.naxis=0 then exit; {file loaded?} List := TStringList.Create; list.StrictDelimiter:=true; mainwindow.image1.Canvas.Pen.Color:= annotation_color;{clyellow} mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.font.color:=annotation_color; // mainwindow.image1.Canvas.font.size:=round(min(20,max(10,head.height*20/4176))); {$ifdef mswindows} SetTextAlign(mainwindow.image1.canvas.handle, ta_left or ta_top or TA_NOUPDATECP);{always, since Linux is doing this fixed} setbkmode(mainwindow.image1.canvas.handle,TRANSPARENT); {transparent} {$else} {Linux} {$endif} count1:=mainwindow.Memo1.Lines.Count-1; try while count1>=0 do {plot annotations} begin name:=mainwindow.Memo1.Lines[count1]; if copy(mainwindow.Memo1.Lines[count1],1,8)='ANNOTATE' then {found} begin List.Clear; ExtractStrings([';'], [], PChar(copy(mainwindow.Memo1.Lines[count1],12,posex(#39,mainwindow.Memo1.Lines[count1],20)-12)),List); if list.count>=6 then {correct annotation} begin x1:=round(strtofloat2(list[0])); y1:=round(strtofloat2(list[1])); x2:=round(strtofloat2(list[2])); y2:=round(strtofloat2(list[3])); if use_solution_vectors then {for blink routine, images are aligned and possible flipped making the annotation position invalid} begin x1:=round(solution_vectorX[0]*(x1)+solution_vectorX[1]*(y1)+solution_vectorX[2]); {correction x:=aX+bY+c} y1:=round(solution_vectorY[0]*(x1)+solution_vectorY[1]*(y1)+solution_vectorY[2]); {correction y:=aX+bY+c} x2:=round(solution_vectorX[0]*(x2)+solution_vectorX[1]*(y2)+solution_vectorX[2]); {correction x:=aX+bY+c} y2:=round(solution_vectorY[0]*(x2)+solution_vectorY[1]*(y2)+solution_vectorY[2]); {correction y:=aX+bY+c} end; typ:=strtofloat2(list[4]); name:=list[5]; if list.count>6 then magn:=list[6] else magn:=''; plot_the_annotation(x1,y1,x2,y2,typ, name,magn); if fill_combo then {add asteroid annotations to combobox for ephemeris alignment} stackmenu1.ephemeris_centering1.Additem(name,nil); end; end; count1:=count1-1; end; finally List.Free; end; end; procedure plot_persistent_annotation(value : string);{writes text in the image array data} var i,deltax,deltaY,len,x2,y2,fontsize : integer; begin fontsize:=0; while pos('@',value)>0 do begin value:=stringreplace(value, '@', '',[]);{every @ increase the font size} inc(fontsize); {increase font size} end; {add the connnection line using FITS coordinates} deltaX:=stopX-startX; deltaY:=stopY-startY; len:=round(sqrt(sqr(deltaX)+sqr(deltaY))); for i:=0 to len-1 do img_loaded[0,startX+round(i*deltaX/len),startY+round(i*deltaY/len) ]:=round((cwhite+cblack)/2); {convert to screen coordinates. Screen coordinates are used to have the font with the correct orientation} if mainwindow.flip_horizontal1.checked then begin startX:=head.width-startX; stopX:=head.width-stopX; end; if mainwindow.flip_vertical1.checked then begin startY:=head.height-startY; stopY:=head.height-stopY; end; deltaX:=stopX-startX; deltaY:=stopY-startY; if deltaX>=0 then x2:=0 else x2:=3-length(value)*7*fontsize;{place the first pixel or last pixel of the text at the location} if deltaY>=0 then y2:=8*fontsize else y2:=0; annotation_to_array(value, true{transparant},round((cwhite+cblack)/2) {colour},fontsize,stopX+x2,stopY+y2,img_loaded);{string to image array as annotation, result is flicker free since the annotion is plotted as the rest of the image} plot_fits(mainwindow.image1,false,true); end; procedure Tmainwindow.Enter_annotation1Click(Sender: TObject); var value : string; text_x,text_y : integer; boldness : double; begin backup_img; value:=InputBox('Enter annotation text. Add one @ or more to create a persistent annotation','Text:','' ); if value='' then exit; if pos('@',value)>0 then begin plot_persistent_annotation(value); exit; end; mainwindow.image1.Canvas.Pen.width:=max(1,round(1*head.width/image1.width)); ; mainwindow.image1.Canvas.Pen.Color:= annotation_color; {clyellow default} image1.Canvas.brush.Style:=bsClear; image1.Canvas.font.color:=annotation_color; image1.Canvas.font.size:=max(12,round(12*head.width/image1.width)); image1.Canvas.moveto(startX,startY); if ((stopX<>startx) or (stopY<>startY) )=true then {rubber rectangle in action} begin text_x:=stopX; text_y:=stopY; end else begin text_x:=startX+image1.Canvas.font.size; text_y:=startY+image1.Canvas.font.size; end; {$ifdef mswindows} SetTextAlign(image1.canvas.handle, ta_left or ta_top or TA_NOUPDATECP);{always, since Linux is doing this fixed} setbkmode(image1.canvas.handle,TRANSPARENT); {transparent} {$else} {Linux} {$endif} startX:=startX+1; {convert to fits range 1...} startY:=startY+1; {convert to fits range 1...} text_X:=text_X+1; {convert to fits range 1...} text_Y:=text_Y+1; {convert to fits range 1...} if sender<>Enter_rectangle_with_label1 then boldness:=head.width/image1.width else boldness:=-head.width/image1.width; plot_the_annotation(startX,startY,text_X,text_Y,boldness,value,''); add_text ('ANNOTATE=',#39+copy(inttostr(startX)+';'+inttostr(startY)+';'+inttostr(text_X)+';'+inttostr(text_Y)+';'+floattostr6(boldness)+';'+value+';',1,68)+#39); annotated:=true; {header contains annotations} end; procedure Tmainwindow.Exit1Click(Sender: TObject); begin esc_pressed:=true; {stop photometry loop} Application.MainForm.Close {this will call an on-close event for saving settings} end; procedure FITS_BMP(filen:string);{save FITS to BMP file} var filename3:string; begin if load_fits(filen,true {light},true,true {update memo},0,head,img_loaded) {load now normal} then begin use_histogram(img_loaded,true {update}); {plot histogram, set sliders} filename3:=ChangeFileExt(Filen,'.bmp'); mainwindow.image1.picture.SaveToFile(filename3); end; end; procedure Tmainwindow.ShowFITSheader1Click(Sender: TObject); var bericht: array[0..512] of char;{make this one not too short !} begin strpcopy(bericht, 'Origin: '+origin+#13+#10+ 'Telescope: '+ telescop+#13+#10+ 'Instrument: '+instrum+#13+#10+ 'Date-obs: '+head.date_obs+#13+#10+ 'UT-time: '+UT+#13+#10+ 'Plt-label: '+Pltlabel+#13+#10+ 'Plate-id: '+plateid+#13+#10+ 'Bandpass: '+floattostr(bandpass)+#13+#10+ 'Equinox: '+floattostr(equinox)+#13+#10+ 'Exposure-time: '+floattostr(head.exposure)); messagebox(mainwindow.handle,bericht,'FITS HEADER',MB_OK); end; function position_to_string(sep:string; ra,dec:double):string; var l, b : double; begin if coord_frame=0 then result:=prepare_ra8(ra,': ')+sep+prepare_dec2(dec,'° ') else if coord_frame=1 then result:=floattostrF(ra*180/pi, FFfixed, 0, 8)+'°, '+floattostrF(dec*180/pi, FFfixed, 0, 8)+'°' else begin EQU_GAL(ra,dec,l,b);{equatorial to galactic coordinates} result:=floattostrF(l*180/pi, FFfixed, 0, 3)+sep+floattostrF(b*180/pi, FFfixed, 0, 3)+' ° gal'; end; end; procedure Tmainwindow.writeposition1Click(Sender: TObject); var font_height:integer; x7,y7,x8,y8 : integer; begin backup_img; image1.Canvas.brush.Style:=bsClear; image1.Canvas.font.size:=12; {$ifdef mswindows} SetTextAlign(canvas.handle, ta_left or ta_top or TA_NOUPDATECP);{always, since Linux is doing this fixed} setbkmode(canvas.handle,TRANSPARENT); {transparent} font_height:=round(canvas.Textheight('0')*1.2);{font size times ... to get underscore at the correct place. Fonts coordinates are all top/left coordinates } {$else} {Linux} font_height:=round(canvas.Textheight('0')*1.0);{font size times ... to get underscore at the correct place. Fonts coordinates are all top/left coordinates } {$endif} if object_xc>0 then {object sync} begin image1.Canvas.font.color:=$00AAFF; if mainwindow.Flip_horizontal1.Checked=true then x7:=round(head.width-object_xc) else x7:=round(object_xc); if mainwindow.flip_vertical1.Checked=false then y7:=round(head.height-object_yc) else y7:=round(object_yc); if sender<>writepositionshort1 then begin if head.cd1_1<>0 then {solved} image1.Canvas.textout(round(3+x7),round(-font_height+ y7),'_'+position_to_string(',',object_raM,object_decM)) else image1.Canvas.textout(round(3+x7),round(-font_height+ y7),'_'+floattostrF(object_xc,ffFixed,0,2)+', '+floattostrF(object_yc,ffFixed,0,2));{write x,y position if not solved} end else image1.Canvas.textout(round(3+x7),round(-font_height+ y7),'_'+prepare_IAU_designation(object_raM,object_decM)); end else begin {no object sync, give mouse position} image1.Canvas.font.color:=clred; if sender<>writepositionshort1 then begin x8:=round(3+down_x /(image1.width/head.width)); y8:=round(-font_height +(down_y)/(image1.height/head.height)); if head.cd1_1<>0 then image1.Canvas.textout(x8,y8,'_'+position_to_string(',',object_raM,object_decM)) else image1.Canvas.textout(x8,y8,'_'+floattostrF(mouse_fitsX,ffFixed,0,2)+', '+floattostrF(mouse_fitsY,ffFixed,0,2));{write x,y position if not solved} end; end; end; procedure Tmainwindow.FormPaint(Sender: TObject); begin if image_move_to_center then begin mainwindow.image1.top:=0; mainwindow.image1.left:=(mainwindow.panel1.Width - mainwindow.image1.width) div 2; image_move_to_center:=false;{mark as job done} {update shapes to new position} show_marker_shape(mainwindow.shape_marker3,9 {no change in shape and hint},20,20,10{minimum},shape_marker3_fitsX, shape_marker3_fitsY); show_marker_shape(mainwindow.shape_marker4,9 {no change in shape and hint},60,60,30{minimum},shape_marker4_fitsX, shape_marker4_fitsY); end; end; procedure Tmainwindow.sqm1Click(Sender: TObject); begin if head.naxis=0 then exit; {file loaded?} form_sqm1:=TForm_sqm1.Create(self); {in project option not loaded automatic} form_sqm1.ShowModal; {released in the close action} // form_sqm1.release; end; procedure Tmainwindow.FormResize(Sender: TObject); var h,w,mw: integer; begin {$IfDef Darwin}//{MacOS} PageControl1.height:=168;{height changes depending on tabs on off, keep a little more tolerance} minimum1.left:=histogram1.left-11;{adapt to different slider dimensions in Mac} maximum1.left:=histogram1.left-11; minimum1.width:=histogram1.width+24; maximum1.width:=histogram1.width+24; {$ENDIF} panel1.Top:=max(PageControl1.height, data_range_groupBox1.top+data_range_groupBox1.height+5); panel1.left:=0; mw:=mainwindow.width; h:=StatusBar1.top-panel1.top; w:=round(h*head.width/head.height); panel1.width:=mw; panel1.height:=h; mainwindow.image1.height:=h; mainwindow.image1.width:=w; mainwindow.image1.top:=0; mainwindow.image1.left:=(mw-w) div 2; {update shape positions} show_marker_shape(mainwindow.shape_marker1,9 {no change in shape and hint},20,20,10{minimum},shape_marker1_fitsX, shape_marker1_fitsY); show_marker_shape(mainwindow.shape_marker2,9 {no change in shape and hint},20,20,10{minimum},shape_marker2_fitsX, shape_marker2_fitsY); show_marker_shape(mainwindow.shape_marker3,9 {no change in shape and hint},20,20,10{minimum},shape_marker3_fitsX, shape_marker3_fitsY); show_marker_shape(mainwindow.shape_marker4,9 {no change in shape and hint},60,60,30{minimum},shape_marker4_fitsX, shape_marker4_fitsY); end; //procedure stretch_image(w,h: integer); //var // tmpbmp: TBitmap; // ARect: TRect; //begin // try // TmpBmp := TBitmap.Create; // try // TmpBmp.Width := w; // TmpBmp.Height := h; // ARect := Rect(0,0, w,h); // TmpBmp.Canvas.StretchDraw(ARect, mainwindow.Image1.Picture.bitmap); // mainwindow.Image1.Picture.bitmap.Assign(TmpBmp); // finally // TmpBmp.Free; // end; // except // end; // head.width:=mainwindow.Image1.Picture.width; // head.height:=mainwindow.Image1.Picture.height; //end; function load_and_solve : boolean; {load image and plate solve} begin progress_indicator(0,''); result:=load_image(false,false {plot}); result:=((result {succesfull load?}) and (solve_image(img_loaded,head,true {get hist}) )); {find plate solution} end; procedure log_to_file(logf,mess : string);{for testing} var f : textfile; begin assignfile(f,logf); try if fileexists(logf)=false then rewrite(f) else append(f); writeln(f,mess); finally closefile(f); end; end; procedure log_to_file2(logf,mess : string);{used for platesolve2 and photometry} var f : textfile; begin assignfile(f,logf); try rewrite(f); writeln(f,mess); finally closefile(f); end; end; procedure save_annotated_jpg(filename: string);{save viewer as annotated jpg} var JPG: TJPEGImage; begin load_deep;{load the deepsky database once. If loaded no action} plot_deepsky;{annotate} JPG := TJPEGImage.Create; try JPG.Assign(mainwindow.image1.Picture.Graphic); //Convert data into jpg JPG.CompressionQuality :=90; JPG.SaveToFile(ChangeFileExt(filename,'_annotated.jpg')); finally JPG.Free; end; end; procedure write_ini(solution:boolean);{write solution to ini file} var f: text; begin assignfile(f,ChangeFileExt(filename2,'.ini')); rewrite(f); if solution then begin writeln(f,'PLTSOLVD=T'); writeln(f,'CRPIX1='+floattostrE(head.crpix1));// X of reference pixel writeln(f,'CRPIX2='+floattostrE(head.crpix2));// Y of reference pixel writeln(f,'CRVAL1='+floattostrE(head.ra0*180/pi)); // RA (j2000_1) of reference pixel [deg] writeln(f,'CRVAL2='+floattostrE(head.dec0*180/pi));// DEC (j2000_1) of reference pixel [deg] writeln(f,'CDELT1='+floattostrE(head.cdelt1)); // X pixel size [deg] writeln(f,'CDELT2='+floattostrE(head.cdelt2)); // Y pixel size [deg] writeln(f,'CROTA1='+floattostrE(head.crota1)); // Image twist of X axis [deg] writeln(f,'CROTA2='+floattostrE(head.crota2)); // Image twist of Y axis [deg] writeln(f,'CD1_1='+floattostrE(head.cd1_1)); // CD matrix to convert (x,y) to (Ra, Dec) writeln(f,'CD1_2='+floattostrE(head.cd1_2)); // CD matrix to convert (x,y) to (Ra, Dec) writeln(f,'CD2_1='+floattostrE(head.cd2_1)); // CD matrix to convert (x,y) to (Ra, Dec) writeln(f,'CD2_2='+floattostrE(head.cd2_2)); // CD matrix to convert (x,y) to (Ra, Dec) if sqmfloat>0 then writeln(f,'SQM='+floattostrE(sqmfloat)); // sky background if hfd_median>0 then writeln(f,'HFD='+floattostrE(hfd_median)); if hfd_counter>0 then writeln(f,'STARS='+floattostrE(hfd_counter));//number of stars end else begin writeln(f,'PLTSOLVD=F'); end; writeln(f,'CMDLINE='+cmdline);{write the original commmand line} writeln(f,'DIMENSIONS='+inttostr(head.width)+' x '+inttostr(head.height));//write image dimensions Case errorlevel of 2: writeln(f,'ERROR=Not enough stars.'); 16: writeln(f,'ERROR=Error reading image file.'); 32: writeln(f,'ERROR=No star database found.'); 33: writeln(f,'ERROR=Error reading star database.'); end; if warning_str<>'' then writeln(f,'WARNING='+warning_str); closefile(f); end; function platesolve2_command: boolean; var i,error1,regions,count : integer; List: TStrings; command1 : string; f : textfile; resultstr,rastr,decstr,cdelt,crota,flipped,confidence,resultV,line1,line2 : string; dummy,field_size,search_field : double; source_fits,solved,apt_request,file_loaded:boolean; begin settingstring := Tstringlist.Create; {load program parameters, overriding initial settings if any} with mainwindow do if paramcount>0 then begin // Command line: //PlateSolve2.exe (Right ascension in radians),(Declination in radians),(x dimension in radians),(y dimension in radians),(Number of regions to search),(fits filename),(wait time at the end) //The wait time is optional. The 6 of 7 parameters should be separated by a comma. The values should have a decimal point not a comma. Example: platesolve2.exe 4.516,0.75,0.0296,0.02268,999,1.fit,0 //Example platesolve2.exe 4.516,0.75,0.0296,0.02268,999,1.fit,0 List := TStringList.Create; try List.Clear; list.StrictDelimiter:=true;{accept spaces in command but reconstruct since they are split over several parameters} command1:=paramstr(1); for i:=2 to paramcount do command1:=command1+' '+paramstr(i);{accept spaces in command but reconstruct since they are split over several parameters} ExtractStrings([','], [], PChar(command1),List); if list.count>=6 then val(list[0],dummy,error1);{extra test, is this a platesolve2 command?} if ((list.count>=6) and (error1=0)) then {this is a platesolve2 command line} begin result:=true; commandline_execution:=true; {later required for trayicon and popup notifier} filename2:=list[5]; source_fits:=fits_file_name(filename2);{fits file extension?} file_loaded:=load_image(false,false {plot});{load file first to give commandline parameters later priority} if file_loaded=false then errorlevel:=16;{error file loading} ra1.Text:=floattostr6(strtofloat2(list[0])*12/pi); dec1.Text:=floattostr6(strtofloat2(list[1])*180/pi); field_size:=strtofloat2(list[3])*180/pi;{field height in degrees} stackmenu1.search_fov1.text:=floattostr6(field_size);{field width in degrees} fov_specified:=true; {always for platesolve2 command} regions:=strtoint(list[4]);{use the number of regions in the platesolve2 command} if regions=3000{maximum for SGP, force a field of 90 degrees} then search_field:=90 else search_field:= min(180,sqrt(regions)*0.5*field_size);{regions 1000 is equivalent to 32x32 regions. So distance form center is 0.5*32=16 region heights} stackmenu1.radius_search1.text:=floattostrF(search_field,ffFixed,0,1);{convert to radius of a square search field} if ((file_loaded) and (solve_image(img_loaded,head,true {get hist}) )) then {find plate solution, filename2 extension will change to .fit} begin resultstr:='Valid plate solution'; confidence:='999'; resultV:=',1'; solved:=true; end else begin //999,999,-1 //0,0,0,0,404 //Maximum search limit exceeded head.ra0:=999; head.dec0:=999; resultV:=',-1'; resultstr:='Maximum search limit exceeded'; confidence:='000'; solved:=false; errorlevel:=1;{no solution} end; // 0.16855631,0.71149576,1 (ra [rad],dec [rad],1 } // 2.69487,0.5,1.00005,-0.00017,395 {pixelsize*3600, head.crota2, flipped,? ,confidence} // Valid plate solution // .1844945, .72046475, 1 // 2.7668, 180.73,-1.0001,-.00015, 416 // Valid plate solution // 0.16855631,0.71149576,0.0296,0.02268,999,c:\temp\3.fits,0 {m31} assignfile(f,ChangeFileExt(filename2,'.apm')); rewrite(f); str(head.ra0:9:7,rastr);{mimic format of PlateSolve2} str(head.dec0:9:7,decstr); line1:=rastr+','+decstr+resultV {,1 or ,-1}; str(head.cdelt2*3600:7:5,cdelt); if ((head.cdelt2=0{prevent divide by zero}) or (head.cdelt1/head.cdelt2<0)) then begin if source_fits then flipped:='1.0000' else flipped:='-1.0000'; {PlateSolve2 sees a FITS file flipped while not flipped due to the orientation 1,1 at left bottom} end else begin if source_fits then flipped:='-1.0000' else flipped:='1.0000';{PlateSolve2 sees a FITS file flipped while not flipped due to the orientation 1,1 at left bottom} head.crota2:=180-head.crota2;{mimic strange Platesolve2 angle calculation.} end; head.crota2:=fnmodulo(head.crota2,360); {Platesolve2 reports in 0..360 degrees, mimic this behavior for SGP} str(head.crota2:7:2,crota); line2:=cdelt+','+crota+','+flipped+',0.00000,'+confidence; apt_request:=pos('IMAGETOSOLVE',uppercase(filename2))>0; {if call from APT then write with numeric separator according Windows setting as for PlateSolve2 2.28} if ((apt_Request) and (formatSettings.decimalseparator= ',' )) then {create PlateSolve2 v2.28 format} begin line1:=stringreplace(line1, '.', ',',[rfReplaceAll]); line2:=stringreplace(line2, '.', ',',[rfReplaceAll]); end; writeln(f,line1); writeln(f,line2); writeln(f,resultstr); closefile(f); {note SGP uses PlateSolve2 v2.29. This version writes APM always with dot as decimal separator} {extra log} write_ini(solved);{write solution to ini file} count:=0; while ((fileexists(ChangeFileExt(filename2,'.apm'))=false) and (count<60)) do begin sleep(50);inc(count); end;{wait maximum 3 seconds till solution file is available before closing the program} end {list count} else begin {not a platesolve2 command} result:=false; filename2:=command1;{for load this file in viewer} end; finally List.Free; end; end else result:=false; {no parameters specified} end; procedure write_astronomy_wcs(filen: string); var TheFile4 : tfilestream; I : integer; line0 : ansistring; aline,empthy_line : array[0..80] of ansichar;{79 required but a little more to have always room} begin try TheFile4:=tfilestream.Create(filen, fmcreate ); update_integer('NAXIS =',' / Minimal header ' ,0);{2 for mono, 3 for colour} try {write memo1 header to file} for i:=0 to 79 do empthy_line[i]:=#32;{space} i:=0; repeat if i<mainwindow.memo1.lines.count then begin line0:=mainwindow.memo1.lines[i]; while length(line0)<80 do line0:=line0+' ';{guarantee length is 80} strpcopy(aline,(copy(line0,1,80)));{copy 80 and not more} thefile4.writebuffer(aline,80);{write updated header from memo1} end else thefile4.writebuffer(empthy_line,80);{write empthy line} inc(i); until ((i>=mainwindow.memo1.lines.count) and (frac(i*80/2880)=0)); {write multiply records 36x80 or 2880 bytes} finally TheFile4.free; end; except end; end; //procedure write_astronomy_axy(stars: star_list;snr_list : array of double ); //var // TheFile4 : tfilestream; // I,j : integer; // line0,aantallen : ansistring; // aline,empthy_line : array[0..80] of ansichar;{79 required but a little more to have always room} // data: longword; //begin // remove_key('NAXIS1 =',true{one}); {this will damge the header} // remove_key('NAXIS2 =',true{one}); // update_integer('NAXIS =',' / Minimal header ' ,0);{2 for mono, 3 for colour} // update_integer('BITPIX =',' / ' ,8 ); // add_text ('EXTEND =',' T / There may be FITS extension '); // add_text ('AN_FILE =',#39+'XYLS '+#39+' / Astrometry.net file type '); // try // TheFile4:=tfilestream.Create(ChangeFileExt(filename2,'.xyls'), fmcreate ); {write memo1 header to file} // for i:=0 to 79 do empthy_line[i]:=#32;{space} // i:=0; // repeat // if i<mainwindow.memo1.lines.count then // begin // line0:=mainwindow.memo1.lines[i]; // while length(line0)<80 do line0:=line0+' ';{guarantee length is 80} // strpcopy(aline,(copy(line0,1,80)));{copy 80 and not more} // thefile4.writebuffer(aline,80);{write updated header from memo1} // end // else // thefile4.writebuffer(empthy_line,80);{write empthy line} // inc(i); // until ((i>=mainwindow.memo1.lines.count) and (frac(i*80/2880)=0)); {write multiply records 36x80 or 2880 bytes} // i:=0; // strpcopy(aline,'XTENSION= '+#39+'BINTABLE'+#39+' / FITS Binary Table Extension ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80); inc(i); // strpcopy(aline,'BITPIX = 8 / 8-bits character format ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'NAXIS = 2 / Tables are 2-D char. array ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'NAXIS1 = 16 / Bytes in row ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // str(length(stars[0]):13,aantallen); // strpcopy(aline,'NAXIS2 = '+aantallen+' / ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'PCOUNT = 0 / Parameter count always 0 ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'GCOUNT = 1 / Group count always 1 ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TFIELDS = 4 / No. of col in table ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TFORM1 = '+#39+'E '+#39+' / Format of field ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TTYPE1 = '+#39+'X '+#39+' / Field label ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TUNIT1 = / Physical unit of field ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TFORM2 = '+#39+'E '+#39+' / Single precision floating point, 4 bytes ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TTYPE2 = '+#39+'Y '+#39+' / Field label ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TUNIT2 = / Physical unit of field ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TFORM3 = '+#39+'E '+#39+' / Single precision floating point, 4 bytes ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TTYPE3 = '+#39+'FLUX '+#39+' / Field label ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TUNIT3 = / Physical unit of field ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TFORM4 = '+#39+'E '+#39+' / Single precision floating point, 4 bytes ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TTYPE4 = '+#39+'BACKGROUND'+#39+' / Field label ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'TUNIT4 = / Physical unit of field ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'ORIGIN = '+#39+'ASTAP'+#39+' / Written by ASTAP ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'END ');{copy 80 and not more or less} // thefile4.writebuffer(aline,80);inc(i); // // while frac(i*80/2880)>0 do // begin // thefile4.writebuffer(empthy_line,80);{write empthy line} // inc(i); // end; // i:=0; // repeat // data:=INT_IEEE4_reverse(stars[0,i]+1);{adapt intel floating point to non-intel floating. Add 1 to get FITS coordinates} // thefile4.writebuffer(data,4);{write x value} // data:=INT_IEEE4_reverse(stars[1,i]+1);{adapt intel floating point to non-intel floating. Add 1 to get FITS coordinates} // thefile4.writebuffer(data,4);{write y value} // data:=INT_IEEE4_reverse(snr_list[i]);{snr} // thefile4.writebuffer(data,4);{write y value} // data:=INT_IEEE4_reverse(170);{background} // thefile4.writebuffer(data,4);{write y value} // inc(i,1);{counter of 16 bytes or 4*4 bytes} // until i>=length(stars[0]); // j:=80-round(80*frac(i*16/80));{remainder in bytes till written muliple of 80 char} // thefile4.writebuffer(empthy_line,j);{write till multiply of 80} // i:=(16*i + j*80) div 80 ;{how many 80 bytes record left till multiple of 2880} // while frac(i*80/2880)>0 do {write till 2880 block is written} // begin // thefile4.writebuffer(empthy_line,80);{write empthy line} // inc(i); // end; // except // TheFile4.free; // exit; // end; // TheFile4.free; //end; procedure Tmainwindow.FormShow(Sender: TObject); var s : string; histogram_done,file_loaded,debug,filespecified,analysespecified,analysespecified2,extractspecified,focusrequest : boolean; backgr,snr_min : double; binning,focus_count : integer; begin user_path:=GetAppConfigDir(false);{get user path for app config} if load_settings(user_path+'astap.cfg')=false then begin if DirectoryExists(user_path)=false then ForceDirectories(user_path);{create c:\users\yourname\appdata\local\astap or /users/../.config/astap Force directories will make also .config if missing. Using createdir doesn't work if both a directory and subdirectory are to be made in Linux and Mac} end; fov_specified:=false;{assume no FOV specification in commandline} screen.Cursor:=0; if platesolve2_command then begin esc_pressed:=true;{kill any running activity. This for APT} {stop program, platesolve command already executed} halt(errorlevel); {don't save only do form.destroy. Note mainwindow.close causes a window flash briefly, so don't use} end else if paramcount>0 then {file as first parameter} begin {filename2 is already made in platesolve2_command} with application do begin if hasOption('h','help') then begin application.messagebox( pchar( 'Solver command-line usage:'+#10+ '-f filename'+#10+ '-r radius_area_to_search[degrees]'+#10+ {changed} '-fov height_field[degrees]'+#10+ '-ra center_right ascension[hours]'+#10+ '-spd center_south_pole_distance[degrees]'+#10+ '-s max_number_of_stars {typical 500, 0 is auto}'+#10+ '-t tolerance'+#10+ '-m minimum_star_size["]'+#10+ '-z downsample_factor[0,1,2,3,4] {Downsample prior to solving. 0 is auto}'+#10+ #10+ '-check apply[y/n] {Apply check pattern filter prior to solving. Use for raw OSC images only when binning is 1x1}' +#10+ '-d path {specify a path to the star database}'+#10+ '-o file {Name the output files with this base path & file name}'+#10+ '-speed mode[auto/slow] {Slow is forcing reading a larger area from the star database (more overlap) to improve detection}'+#10+ '-sqm pedestal {add measured sqm value to the solution}'+#10+ '-wcs {Write a .wcs file in similar format as Astrometry.net. Else text style.}' +#10+ #10+ '-annotate {Produce deepsky annotated jpg file}' +#10+ '-debug {Show GUI and stop prior to solving}' +#10+ '-log {Write the solver log to file}'+#10+ '-tofits binning[1,2,3,4] {Make new fits file from PNG/JPG file input}'+#10+ '-update {update the FITS/TIFF header with the found solution. Jpeg, png will be written as fits}' +#10+ #10+ 'Analyser and stacker usage:' +#10+ '-analyse snr_min {Analyse only and report median HFD and number of stars used}'+#10+ '-analyse2 snr_min {both analyse and solve}'+#10+ '-extract snr_min {As -analyse but additionally write a .csv file with the detected stars info}'+#10+ '-focus1 file1.fit -focus2 file2.fit .... {Find best focus using files and hyperbola curve fitting. Errorlevel is focuspos*1E4 + rem.error*1E3}'+#10+ '-stack path {startup with live stack tab and path selected}'+#10+ #10+ 'Preference will be given to the command line values.' +#10+ 'Solver result will be written to filename.ini and filename.wcs.'+#10+ 'Star database expected at: '+database_path ), pchar('ASTAP astrometric solver usage:'),MB_OK); esc_pressed:=true;{kill any running activity. This for APT} halt(0); {don't save only do mainwindow.destroy. Note mainwindow.close causes a window flash briefly, so don't use} end; debug:=hasoption('debug'); {The debug option allows to set some solving parameters in the GUI (graphical user interface) and to test the commandline. In debug mode all commandline parameters are set and the specified image is shown in the viewer. Only the solve command has to be given manuallydebug mode } filespecified:=hasoption('f'); focusrequest:=hasoption('focus1'); if ((filespecified) or (debug) or (focusrequest)) then begin commandline_execution:=true;{later required for trayicon and popup notifier and Memo3 scroll in Linux} commandline_log:=((debug) or (hasoption('log')));{log to file. In debug mode enable logging to memo2} if commandline_log then memo2_message(cmdline);{write the original commmand line} if filespecified then begin filename2:=GetOptionValue('f'); if debug=false then file_loaded:=load_image(false,false {plot}) {load file first to give commandline parameters later priority} else file_loaded:=load_image(true,true {plot});{load and show image} if file_loaded=false then errorlevel:=16;{error file loading} end else file_loaded:=false; {apply now overriding parameters} if hasoption('fov') then begin fov_specified:=true; {do not calculate it from header}; stackmenu1.search_fov1.text:=GetOptionValue('fov'); end; if hasoption('r') then stackmenu1.radius_search1.text:=GetOptionValue('r'); if hasoption('ra') then begin mainwindow.ra1.text:=GetOptionValue('ra'); end; {else ra from fits header} if hasoption('spd') then {south pole distance. Negative values can't be passed via commandline} begin head.dec0:=strtofloat2(GetOptionValue('spd'))-90;{convert south pole distance to declination} str(head.dec0:0:6,s); mainwindow.dec1.text:=s; end; {else dec from fits header} if hasoption('z') then stackmenu1.downsample_for_solving1.text:=GetOptionValue('z'); if hasoption('s') then stackmenu1.max_stars1.text:=GetOptionValue('s'); if hasoption('t') then stackmenu1.quad_tolerance1.text:=GetOptionValue('t'); if hasoption('m') then stackmenu1.min_star_size1.text:=GetOptionValue('m'); if hasoption('speed') then stackmenu1.force_oversize1.checked:=('slow'=GetOptionValue('speed')); if hasoption('check') then stackmenu1.check_pattern_filter1.checked:=('y'=GetOptionValue('check')); if focusrequest then {find best focus using curve fitting} begin stackmenu1.clear_inspector_list1Click(nil);{clear list} listview_add(stackmenu1.listview8,GetOptionValue('focus1'),true,L_nr); focus_count:=2; while hasoption('focus'+inttostr(focus_count)) do begin listview_add(stackmenu1.listview8,GetOptionValue('focus'+inttostr(focus_count)),true,L_nr); inc(focus_count); end; stackmenu1.curve_fitting1Click(nil); if debug=false then begin if isConsole then {stdout available, compile targe option -wh used} begin writeln('FOCUS='+floattostrF(focus_best,ffFixed,0,1)); writeln('ERROR_MIN='+floattostrF(lowest_error,ffFixed,0,5)); end; {$IFDEF msWindows} halt(round(focus_best)*10000 +min(9999,round(lowest_error*1000))); {$ELSE} halt(errorlevel);{report hfd in errorlevel. In linux only range 0..255 possible} {$ENDIF} end; end; if debug=false then {standard solve via command line} begin extractspecified:=hasoption('extract'); analysespecified:=hasoption('analyse'); analysespecified2:=hasoption('analyse2'); if ((file_loaded) and ((analysespecified) or (analysespecified2) or (extractspecified)) ) then {analyse fits and report HFD value in errorlevel } begin if ((analysespecified) or (analysespecified2)) then snr_min:=strtofloat2(getoptionvalue('analyse')); if extractspecified then snr_min:=strtofloat2(getoptionvalue('extract')); if snr_min=0 then snr_min:=30; analyse_image(img_loaded,head,snr_min,extractspecified, hfd_counter,backgr,hfd_median); {find background, number of stars, median HFD} if isConsole then {stdout available, compile targe option -wh used} begin writeln('HFD_MEDIAN='+floattostrF(hfd_median,ffFixed,0,1)); writeln('STARS='+inttostr(hfd_counter)); end; update_float('HFD =',' / Median Half Flux Diameter' ,hfd_median); update_float('STARS =',' / Number of stars detected' ,hfd_counter); if analysespecified2=false then {-analyse -extract} begin {$IFDEF msWindows} halt(round(hfd_median*100)*1000000+hfd_counter);{report in errorlevel the hfd and the number of stars used} {$ELSE} halt(errorlevel);{report hfd in errorlevel. In linux only range 0..255 possible} {$ENDIF} end else begin {-analyse2} {$IFDEF msWindows} errorlevel:=round(hfd_median*100)*1000000+hfd_counter;{report in errorlevel the hfd and the number of stars used} {$ELSE} //nothing. {$ENDIF} end; end;{analyse fits and report HFD value} if hasoption('d') then database_path:=GetOptionValue('d')+DirectorySeparator; {specify a different database path} if ((file_loaded) and (solve_image(img_loaded,head,true {get hist}) )) then {find plate solution, filename2 extension will change to .fit} begin if hasoption('sqm') then {sky quality} begin pedestal:=round(strtofloat2(GetOptionValue('sqm'))); if calculate_sqm(false {get backgr},false{get histogr},{var} pedestal) then {sqm found} begin update_float('SQM =',' / Sky background [magn/arcsec^2]' ,sqmfloat); update_text('COMMENT SQM',', used '+inttostr(pedestal)+' as pedestal value'); end; end; if hasoption('o') then filename2:=GetOptionValue('o');{change file name for .ini file} write_ini(true);{write solution to ini file} add_long_comment('cmdline:'+cmdline);{log command line in wcs file} if hasoption('update') then begin if fits_file_name(filename2) then savefits_update_header(filename2) {update the fits file header} else if tiff_file_name(filename2) then save_tiff16_secure(img_loaded,filename2){guarantee no file is lost} else save_fits(img_loaded,ChangeFileExt(filename2,'.fits'),16, true {override});{save original png,tiff jpg to 16 fits file} end; remove_key('NAXIS1 =',true{one}); remove_key('NAXIS2 =',true{one}); update_integer('NAXIS =',' / Minimal header ' ,0);{2 for mono, 3 for colour} if hasoption('wcs') then write_astronomy_wcs(ChangeFileExt(filename2,'.wcs')) {write WCS astronomy.net style} else try mainwindow.Memo1.Lines.SavetoFile(ChangeFileExt(filename2,'.wcs'));{save header as wcs file} except {sometimes error using APT, locked?} end; histogram_done:=false; if hasoption('annotate') then begin use_histogram(img_loaded,true {update}); {plot histogram, set sliders} histogram_done:=true; plot_fits(mainwindow.image1,true {center_image},true);{center and stretch with current settings} save_annotated_jpg(filename2);{save viewer as annotated jpg} end; if hasoption('tofits') then {still to be tested} begin if fits_file_name(filename2)=false {no fits file?} then begin binning:=round(strtofloat2(GetOptionValue('tofits'))); if binning>1 then bin_X2X3X4(binning);{bin img_loaded 2x or 3x or 4x} if histogram_done=false then use_histogram(img_loaded,true {update}); {plot histogram, set sliders} save_fits(img_loaded,changeFileExt(filename2,'.fit'),8,true {overwrite}); end; end; if ((fov_specified) and (stackmenu1.search_fov1.text='0' ) {auto}) then {preserve new found fov} begin stackmenu1.search_fov1.text:=floattostrF(head.height*abs(head.cdelt2),ffFixed,0,2); save_settings2;{save settings with correct fov} end; end {solution} else begin {no solution} if hasoption('o') then filename2:=GetOptionValue('o'); {change file name for .ini file} write_ini(false);{write solution to ini file} if errorlevel=0 then errorlevel:=1;{no solution} end; esc_pressed:=true;{kill any running activity. This for APT} if commandline_log then stackmenu1.Memo2.Lines.SavetoFile(ChangeFileExt(filename2,'.log'));{save Memo3 log to log file} halt(errorlevel); {don't save only do mainwindow.destroy. Note mainwindow.close causes a window flash briefly, so don't use} // Exit status: // 0 no errors. // 1 no solution. // 2 not enough stars detected. // 16 error reading image file. // 32 no star database found. // 33 error reading star database. // ini file is always written. Could contain: // ERROR=...... // WARNING=...... // wcs file is written when there is a solution. Could contain: // WARNING =......... end {standard solve via command line} else begin {debug mode, so tab alignment for settings and testing} stackmenu1.formstyle:=fsSystemStayOnTop; stackmenu1.pagecontrol1.tabindex:=6; {alignment} stackmenu1.panel_manual1.enabled:=false;{hide for user} stackmenu1.panel_ephemeris1.enabled:=false;{hide for user} stackmenu1.ignore_header_solution1.enabled:=false;{hide for user} stackmenu1.classify_groupbox1.enabled:=false;{hide for user} stackmenu1.save_settings_extra_button1.visible:=true; stackmenu1.visible:=true; stackmenu1.setfocus; Mainwindow.stretch1Change(nil);{create gamma curve} exit; end; end;{-f option} end;{with application} {filename as parameter 1} Mainwindow.stretch1Change(nil);{create gamma curve} if application.hasoption('stack') then //for Ekos begin stackmenu1.live_stacking_path1.caption:=application.GetOptionValue('stack');{live stacking path} stackmenu1.pagecontrol1.tabindex:=11; {live stack} mainwindow.Stackimages1Click(nil);// make stack menu visible end else load_image(true,true {plot});{show image of parameter1} end {paramcount>0} else Mainwindow.stretch1Change(nil);{create gamma curve for image if loaded later and set gamma_on} {$IfDef Darwin}// for OS X, {$IF FPC_FULLVERSION <= 30200} {FPC3.2.0} application.messagebox( pchar('Warning this code requires later LAZARUS 2.1 and FPC 3.3.1 version!!!'), pchar('Warning'),MB_OK); {$ENDIF} {$ENDIF} memo1.font.size:=font_size; memo1.font.color:=font_color; memo1.font.name:=font_name; memo1.font.style:=font_style; memo1.font.charset:=font_charset; {note Greek=161, Russian or Cyrillic =204} end; procedure Tmainwindow.batch_add_solution1Click(Sender: TObject); var i,nrskipped, nrsolved,nrfailed,file_age,pedestal2 : integer; dobackup,add_sip,add_lim_magn,solution_overwrite,solved,maintain_date,success : boolean; failed,skipped,mess : string; startTick : qword;{for timing/speed purposes} begin OpenDialog1.Title :='Select multiple files to add astrometric solution'; OpenDialog1.Options :=[ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter :=dialog_filter_fits_tif; esc_pressed:=false; add_sip:=add_sip_check1.Checked; add_lim_magn:=add_limiting_magn_check1.Checked; solution_overwrite:=batch_overwrite1.checked; maintain_date:=maintain_date1.checked; if OpenDialog1.Execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } nrsolved:=0; nrskipped:=0; nrfailed:=0; failed:='Failed files:'; skipped:='Skipped files:'; dobackup:=img_loaded<>nil; if dobackup then backup_img;{preserve img array and fits header of the viewer} startTick := GetTickCount64; try { Do some lengthy operation } with OpenDialog1.Files do for I := 0 to Count - 1 do begin filename2:=Strings[I]; progress_indicator(100*i/(count),' Solving');{show progress} solved:=false; if fits_tiff_file_name(filename2)=false then continue; //skip wrong file types in case somebody typed *.* Application.ProcessMessages; if esc_pressed then break; {load image and solve image} if load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded) then {load image success} begin if ((head.cd1_1<>0) and (solution_overwrite=false)) then begin nrskipped:=nrskipped+1; {plate solved} memo2_message('Skipped: '+filename2+ ' Already a solution in the header. Select option overwrite to renew.'); skipped:=skipped+#13+#10+extractfilename(filename2); end else begin memo2_message('Solving '+inttostr(i+1)+'-'+inttostr(Count)+': '+filename2); solved:=solve_image(img_loaded,head,true {get hist}); if solved then nrsolved:=nrsolved+1 {solve} else begin memo2_message('No solution: '+filename2); nrfailed:=nrfailed+1; failed:=failed+#13+#10+extractfilename(filename2); end; end; if ((head.cd1_1<>0) and ((solved) or (add_sip) or (add_lim_magn)) ) then {time to save} begin if add_sip then mainwindow.sip1Click(nil);{add sip coefficients} if add_lim_magn then begin mainwindow.calibrate_photometry1Click(nil);{calibrate} update_float('LIM_MAGN=',' / estimated limiting magnitude for point sources' ,magn_limit); mess:=''; if pedestal<>0 then begin jd_start:=0; { if altitude missing then force an date to jd conversion'} pedestal2:=pedestal; {protect pedestal setting} if calculate_sqm(true {get backgr},true {get histogr},{var}pedestal2) then begin update_float('SQM =',' / Sky background [magn/arcsec^2]',sqmfloat); update_text('COMMENT SQM',', used '+inttostr(pedestal2)+' as pedestal value'); mess:=' and SQM' end; end else begin update_text('SQM =',char(39)+'Error! Specify first fixed pedestal value in the SQM menu (ctrl+Q).'+char(39)); memo2_message('Can not measure SQM. Specifiy first a fixed pedestal value in the SQM menu. De pedestal value is the median dark or bias value'); end; memo2_message('Added keyword(s) LIM_MAGN'+mess); end; if maintain_date then file_age:=Fileage(filename2); if fits_file_name(filename2) then success:=savefits_update_header(filename2) else success:=save_tiff16_secure(img_loaded,filename2);{guarantee no file is lost} if success=false then begin ShowMessage('Write error !!' + filename2);Screen.Cursor:=crDefault; exit;end; if ((maintain_date) and (file_age>-1)) then FileSetDate(filename2,file_age); end; // else // begin // memo2_message('No solution: '+filename2); // failed:=failed+#13+#10+extractfilename(filename2); // end; end; end;{for i:=} finally memo2_message('Processed in '+ floattostr(round((GetTickCount64 - startTick)/100)/10)+' sec.'); if dobackup then restore_img;{for the viewer} Screen.Cursor:=crDefault; { Always restore to normal } end; progress_indicator(-100,'');{progresss done} nrfailed:=OpenDialog1.Files.count-nrsolved-nrskipped; if nrskipped<>0 then memo2_message(skipped); if nrfailed<>0 then memo2_message(failed); if solution_overwrite then memo2_message(inttostr(nrsolved)+' images solved, '+inttostr(nrfailed)+' no solution. Duration '+floattostr(round((GetTickCount64 - startTick)/100)/10)+ ' sec. For re-solve set option "overwrite solution.') else memo2_message(inttostr(nrsolved)+' images solved, '+inttostr(nrskipped)+' existing solutions, '+inttostr(nrfailed)+' no solution. Duration '+floattostr(round((GetTickCount64 - startTick)/100)/10)+ ' sec.'); end; end; procedure Tmainwindow.stretch1Change(Sender: TObject); begin do_stretching; end; procedure mad_median(list: array of double;leng :integer;out mad,median :double);{calculate mad and median without modifying the data} var {idea from https://eurekastatistics.com/using-the-median-absolute-deviation-to-find-outliers/} i : integer; list2: array of double; begin setlength(list2,leng); for i:=0 to leng-1 do list2[i]:=list[i];{copy magn offset data} median:=Smedian(list2,leng); for i:=0 to leng-1 do list2[i]:=abs(list[i] - median);{fill list2 with offsets} mad:=Smedian(list2,leng); //median absolute deviation (MAD) list2:=nil; end; procedure update_header_for_colour; {update naxis and naxis3 keywords} begin update_integer('NAXIS =',' / Number of dimensions ' ,head.naxis);{number of dimensions, 2 for mono, 3 for colour} if head.naxis3<>1 then {color image} update_integer('NAXIS3 =',' / length of z axis (mostly colors) ' ,head.naxis3) else remove_key('NAXIS3 ',false{all});{remove key word in header. Some program don't like naxis3=1} end; procedure Tmainwindow.demosaic_bayermatrix1Click(Sender: TObject); begin if head.naxis3>1 then {colour} begin memo2_message('Image already in colour. No action.'); exit; end; {$IFDEF fpc} progress_indicator(0,''); {$else} {delphi} mainwindow.taskbar1.progressstate:=TTaskBarProgressState.Normal; mainwindow.taskbar1.progressvalue:=0; {show progress} {$endif} Screen.Cursor:=crHourglass; application.processmessages; backup_img; demosaic_advanced(img_loaded); remove_key('BAYERPAT',false{all});{remove key word in header} remove_key('XBAYROFF',false{all});{remove key word in header} remove_key('YBAYROFF',false{all});{remove key word in header} plot_fits(mainwindow.image1,false,true); stackmenu1.test_pattern1.Enabled:=false;{do no longer allow debayer} update_header_for_colour; {update naxis and naxis3 keywords} Screen.Cursor:=crDefault; {$IFDEF fpc} progress_indicator(-100,'');{back to normal} {$else} {delphi} mainwindow.taskbar1.progressstate:=TTaskBarProgressState.None; {$endif} end; procedure Tmainwindow.star_annotation1Click(Sender: TObject); begin mainwindow.calibrate_photometry1Click(nil);{measure hfd and calibrate for point or extended sources depending on the setting} plot_and_measure_stars(false {calibration},true {plot stars},false {measure lim magn});{plot stars} end; procedure Tmainwindow.Copyposition1Click(Sender: TObject); var Centroid : string; begin if object_xc>0 then Centroid:=#9+'(Centroid)' else Centroid:=''; Clipboard.AsText:=prepare_ra8(object_raM,': ')+#9+prepare_dec2(object_decM,'° ')+Centroid; end; procedure Tmainwindow.Copypositionindeg1Click(Sender: TObject); var Centroid : string; begin if object_xc>0 then Centroid:=#9+'(Centroid)' else Centroid:=''; Clipboard.AsText:=floattostr(object_raM*180/pi)+#9+floattostr(object_decM*180/pi)+Centroid; end; procedure coordinates_to_celestial(fitsx,fitsy : double; head: Theader; out ram,decm : double) {fitsX, Y to ra,dec}; var dRa,dDec,delta,gamma : double; begin dRa :=(head.cd1_1*(fitsx-head.crpix1)+head.cd1_2*(fitsy-head.crpix2))*pi/180; dDec:=(head.cd2_1*(fitsx-head.crpix1)+head.cd2_2*(fitsy-head.crpix2))*pi/180; delta:=cos(head.dec0)-dDec*sin(head.dec0); gamma:=sqrt(dRa*dRa+delta*delta); ram:=head.ra0+arctan2(Dra,delta); {arctan2 is required for images containing celestial pole} decm:=arctan((sin(head.dec0)+dDec*cos(head.dec0))/gamma); end; procedure sensor_coordinates_to_celestial(fitsx,fitsy : double; out ram,decm : double) {fitsX, Y to ra,dec}; var fits_unsampledX, fits_unsampledY :double; u,v,u2,v2 : double; dRa,dDec,delta,gamma : double; begin RAM:=0;DECM:=0;{for case wrong index or head.cd1_1=0} {DSS polynom solution} if mainwindow.polynomial1.itemindex=2 then {DSS survey} begin { Convert from image subsampled pixels position to unsampled pixel position } fits_unsampledX:=subsamp*(fitsX-0.5)+0.5; fits_unsampledY:=subsamp*(fitsY-0.5)+0.5; //{fits (1,1)+subsamp of 2x =>(eqv unsampled 1,5,1,5) //(fits (2,2)+subsamp of 2x =>(eqv unsampled 3,5,3,5) //(fits 1,1)+subsamp of 4x=>(eqv unsampled 2.5,2.5) //(fits 2,2)+subsamp of 4=>(eqv unsampled 6.5,6.5) dsspos(fits_unsampledX , fits_unsampledY, ram, decm ); end else begin {WCS and SIP solutions} if ((mainwindow.Polynomial1.itemindex=1) and (a_order>=2)) then {SIP, Simple Imaging Polynomial use by astrometry.net or spitzer} begin u:=fitsx-head.crpix1; v:=fitsy-head.crpix2; u2:=u + a_0_0+ a_0_1*v + a_0_2*v*v + a_0_3*v*v*v + a_1_0*u + a_1_1*u*v + a_1_2*u*v*v + a_2_0*u*u + a_2_1*u*u*v + a_3_0*u*u*u ; {SIP correction for second or third order} v2:=v + b_0_0+ b_0_1*v + b_0_2*v*v + b_0_3*v*v*v + b_1_0*u + b_1_1*u*v + b_1_2*u*v*v + b_2_0*u*u + b_2_1*u*u*v + b_3_0*u*u*u ; {SIP correction for second or third order} dRa :=(head.cd1_1*(u2)+head.cd1_2*(v2))*pi/180; dDec:=(head.cd2_1*(u2)+head.cd2_2*(v2))*pi/180; delta:=cos(head.dec0)-dDec*sin(head.dec0); gamma:=sqrt(dRa*dRa+delta*delta); decm:=arctan((sin(head.dec0)+dDec*cos(head.dec0))/gamma); ram:=head.ra0+arctan2(Dra,delta); {atan2 is required for images containing celestial pole} if ram<0 then ram:=ram+2*pi; if ram>pi*2 then ram:=ram-pi*2; end else begin {mainwindow.Polynomial1.itemindex=0} if head.cd1_1<>0 then begin coordinates_to_celestial(fitsx,fitsy, head, ram,decm) {fitsX, Y to ra,dec}; if ram<0 then ram:=ram+2*pi; if ram>pi*2 then ram:=ram-pi*2; end; end; end;{WCS solution} end; procedure Tmainwindow.CropFITSimage1Click(Sender: TObject); var fitsX,fitsY,col,dum : integer; ra_c,dec_c, ra_n,dec_n,ra_m, dec_m, delta_ra : double; begin if ((head.naxis<>0) and (abs(stopX-startX)>10)and (abs(stopY-starty)>10)) then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; if startX>stopX then begin dum:=stopX; stopX:=startX; startX:=dum; end;{swap} if startY>stopY then begin dum:=stopY; stopY:=startY; startY:=dum; end; head.width:=stopX-startx+1; head.height:=stopY-starty+1; setlength(img_temp,head.naxis3,head.width,head.height);{set length of image array} for col:=0 to head.naxis3-1 do for fitsY:=startY to stopY do for fitsX:=startX to stopX do {crop image INCLUDING rectangle. Do this that if used near corners they are included} img_temp[col,fitsX-startX,fitsY-startY]:=img_loaded[col,fitsX,fitsY]; img_loaded:=nil;{release memory} img_loaded:=img_temp; update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); {new reference pixel} if head.cd1_1<>0 then begin {do the rigid method.} sensor_coordinates_to_celestial((startX+stopX)/2,(startY+stopY)/2 , ra_c,dec_c {new center RA, DEC position}); //make 1 step in direction head.crpix1. Do first the two steps because head.cd1_1, head.cd2_1..... are required so they have to be updated after the two steps. sensor_coordinates_to_celestial(1+(startX+stopX)/2,(startY+stopY)/2 , ra_n,dec_n {RA, DEC position, one pixel moved in head.crpix1}); //make 1 step in direction head.crpix2 sensor_coordinates_to_celestial((startX+stopX)/2,1+(startY+stopY)/2 , ra_m,dec_m {RA, DEC position, one pixel moved in head.crpix2}); delta_ra:=ra_n-ra_c; if delta_ra>+pi then delta_ra:=2*pi-delta_ra; {359-> 1, +2:=360 - (359- 1)} if delta_ra<-pi then delta_ra:=delta_ra-2*pi; {1 -> 359, -2:=(1-359) -360 } head.cd1_1:=(delta_ra)*cos(dec_c)*(180/pi); head.cd2_1:=(dec_n-dec_c)*(180/pi); delta_ra:=ra_m-ra_c; if delta_ra>+pi then delta_ra:=2*pi-delta_ra; {359-> 1, +2:=360 - (359- 1)} if delta_ra<-pi then delta_ra:=delta_ra-2*pi; {1 -> 359, -2:=(1-359) -360 } head.cd1_2:=(delta_ra)*cos(dec_c)*(180/pi); head.cd2_2:=(dec_m-dec_c)*(180/pi); head.ra0:=ra_c; head.dec0:=dec_c; head.crpix1:=(head.width+1)/2; head.crpix2:=(head.height+1)/2; new_to_old_WCS(head); update_float ('CRVAL1 =',' / RA of reference pixel (deg) ' ,head.ra0*180/pi); update_float ('CRVAL2 =',' / DEC of reference pixel (deg) ' ,head.dec0*180/pi); update_float ('CRPIX1 =',' / X of reference pixel ' ,head.crpix1);{adapt reference pixel of plate solution. Is no longer in the middle} update_float ('CRPIX2 =',' / Y of reference pixel ' ,head.crpix2); update_float ('CROTA1 =',' / Image twist X axis (deg) ' ,head.crota1); update_float ('CROTA2 =',' / Image twist Y axis (deg) E of N if not flipped.' ,head.crota2); update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_2); // Alternative method keeping the old center poistion. Images center outside the image causes problems for image selection in planetarium program // if head.crpix1<>0 then begin head.crpix1:=head.crpix1-startX; update_float ('CRPIX1 =',' / X of reference pixel ' ,head.crpix1);end;{adapt reference pixel of plate solution. Is no longer in the middle} // if head.crpix2<>0 then begin head.crpix2:=head.crpix2-startY; update_float ('CRPIX2 =',' / Y of reference pixel ' ,head.crpix2);end; end; update_text ('COMMENT C',' Cropped image'); plot_fits(mainwindow.image1,true,true); image_move_to_center:=true; Screen.Cursor:=crDefault; end; end; procedure ra_text_to_radians(inp :string; out ra : double; out errorRA :boolean); {convert ra in text to double in radians} var rah,ram,ras,plusmin :double; position1,position2,position3,error1,error2,error3, i :integer; degrees : boolean; data : string; begin inp:=uppercase(inp); {upcase once instead of every stringreplace using rfIgnorecase} degrees:=pos('D',inp)>0;{degrees ?} inp:= stringreplace(inp, ',', '.',[rfReplaceAll]); data:=''; for i := 1 to length(inp) do begin if (((ord(inp[i])>=48) and (ord(inp[i])<=57)) or (inp[i]='.') or (inp[i]='-')) then data:=data+inp[i] else data:=data+' ';{replace all char by space except for numbers and dot} end; repeat {remove all double spaces} i:=pos(' ',data); if i>0 then delete(data,i,1); until i=0; data:=trim(data)+' '; if pos('-',data)>0 then plusmin:=-1 else plusmin:=1; position1:=pos(' ',data); val(copy(data,1,position1-1),rah,error1); if degrees then rah:=rah*24/360;{input was in degrees} position2:=posex(' ',data,position1+1); if position2-position1>1 then {ram available} begin val(copy(data,position1+1,position2-position1-1),ram,error2); {ram found try ras} position3:=posex(' ',data,position2+1); if position3-position2>1 then val( copy(data,position2+1,position3-position2-1),ras,error3) else begin ras:=0;error3:=0;end; end else begin ram:=0;error2:=0; ras:=0; error3:=0; end; ra:=plusmin*(abs(rah)+ram/60+ras/3600)*pi/12; errorRA:=((error1<>0) or (error2>1) or (error3<>0) or (ra>2*pi)); end; procedure Tmainwindow.ra1Change(Sender: TObject); var str1 : string; errorRA : boolean; begin ra_text_to_radians(ra1.text,ra_radians,errorRA); {convert ra in text to double in radians} str(ra_radians*12/pi:0:6,str1); ra_label.Caption:=str1; if errorRA then mainwindow.ra1.color:=clred else mainwindow.ra1.color:=clwindow; end; procedure dec_text_to_radians(inp :string; out dec : double; out errorDEC :boolean); {convert dec in text to double in radians} var decd,decm,decs :double; position1,position2,position3,error1,error2,error3,plusmin,i : integer ; data : string; begin inp:= stringreplace(inp, ',', '.',[rfReplaceAll]); data:=''; for i := 1 to length(inp) do begin if (((ord(inp[i])>=48) and (ord(inp[i])<=57)) or (inp[i]='.') or (inp[i]='-')) then data:=data+inp[i] else data:=data+' ';{replace all char by space except for numbers and dot} end; repeat {remove all double spaces} i:=pos(' ',data); if i>0 then delete(data,i,1); until i=0;; data:=trim(data)+' '; if pos('-',data)>0 then plusmin:=-1 else plusmin:=1; position1:=pos(' ',data); val(copy(data,1,position1-1),decd,error1); position2:=posex(' ',data,position1+1); if position2-position1>1 then {decm available} begin val(copy(data,position1+1,position2-position1-1),decm,error2); {decm found try decs} position3:=posex(' ',data,position2+1); if position3-position2>1 then val( copy(data,position2+1,position3-position2-1),decs,error3) else begin decs:=0;error3:=0;end; end else begin decm:=0;error2:=0;decs:=0; error3:=0; end; dec:=plusmin*(abs(decd)+decm/60+decs/3600)*pi/180; errorDEC:=((error1<>0) or (error2>1) or (error3<>0)); end; procedure Tmainwindow.dec1Change(Sender: TObject); var str1 : string; errorDEC : boolean; begin dec_text_to_radians(dec1.text,dec_radians,errorDEC); {convert dec in text to double in radians} str(dec_radians*180/pi:0:6,str1); dec_label.Caption:=str1; if (errorDEC) then mainwindow.dec1.color:=clred else mainwindow.dec1.color:=clwindow; end; procedure Tmainwindow.enterposition1Click(Sender: TObject); var ra2,dec2,pixeldistance,distance,angle,angle2,angle3 : double; kommapos : integer; error2,flipped : boolean; begin if sender=enterposition1 then begin shape_marker1_fitsX:=startX+1; shape_marker1_fitsY:=startY+1; show_marker_shape(mainwindow.shape_marker1,0 {rectangle},20,20,0 {minimum size},shape_marker1_fitsX, shape_marker1_fitsY); mouse_positionRADEC1:=InputBox('Enter α, δ of mouse position separated by a comma:','Format 24 00 00.0, 90 00 00.0 or 24 00, 90 00',mouse_positionRADEC1); if mouse_positionRADEC1='' then exit; {cancel used} shape_marker1.hint:='Reference 1: '+mouse_positionRADEC1 end else if sender=enterposition2 then begin shape_marker2_fitsX:=startX+1; shape_marker2_fitsY:=startY+1; show_marker_shape(mainwindow.shape_marker2,0 {rectangle},20,20,0 {minimum size},shape_marker2_fitsX, shape_marker2_fitsY); mouse_positionRADEC2:=InputBox('Enter α, δ of mouse position separated by a comma:','Format 24 00 00.0, 90 00 00.0 or 24 00, 90 00',mouse_positionRADEC2); if mouse_positionRADEC2='' then exit; {cancel used} shape_marker2.hint:='Reference 2: '+mouse_positionRADEC2 end; if ( (mouse_positionRADEC1<>'') and (mouse_positionRADEC2<>'')) then {solve} begin flipped:=flipped1.checked; {flipped image} head.crpix1:=shape_marker1_fitsX; head.crpix2:=shape_marker1_fitsY; kommapos:=pos(',',mouse_positionRADEC1); ra_text_to_radians (copy(mouse_positionRADEC1,1 ,kommapos-1) ,head.ra0,error2); {convert ra text to ra_1 in radians} if error2 then begin beep;exit;end; dec_text_to_radians(copy(mouse_positionRADEC1,kommapos+1,99) ,head.dec0,error2); {convert dec text to dec_1 in radians} if error2 then begin beep;exit;end; kommapos:=pos(',',mouse_positionRADEC2); ra_text_to_radians (copy(mouse_positionRADEC2,1 ,kommapos-1) ,ra2,error2); {convert ra text to head.ra0 in radians} if error2 then begin beep;exit;end; dec_text_to_radians(copy(mouse_positionRADEC2,kommapos+1,99) ,dec2,error2); {convert dec text to head.dec0 in radians} if error2 then begin beep;exit;end; pixeldistance:=sqrt(sqr(shape_marker2_fitsX- shape_marker1_fitsX)+sqr(shape_marker2_fitsY- shape_marker1_fitsY)); ang_sep(head.ra0,head.dec0,ra2,dec2 ,distance);{calculate distance in radians} head.cdelt2:=distance*180/(pi*pixeldistance); if flipped then head.cdelt1:=-head.cdelt2 else head.cdelt1:=head.cdelt2; {find head.crota2} {see meeus new formula 46.5, angle of moon limb} angle2:=arctan2(cos(dec2)*sin(ra2-head.ra0),sin(dec2)*cos(head.dec0) - cos(dec2)*sin(head.dec0)*cos(ra2-head.ra0)); {angle between line between the two stars and north} angle3:=arctan2(shape_marker2_fitsX- shape_marker1_fitsX,shape_marker2_fitsY- shape_marker1_fitsY); {angle between top and line between two reference pixels} if flipped then angle:=(angle2+angle3) ELSE angle:=(-angle2+angle3);{swapped n-s or e-w image} angle:=fnmodulo(angle,2*pi); if angle< -pi then angle:=angle+2*pi; if angle>=+pi then angle:=angle-2*pi; head.crota2:=-angle*180/pi;{head.crota2 is defined north to west, so reverse} head.crota1:=head.crota2; old_to_new_WCS(head);{new WCS missing, convert old WCS to new} update_text ('CTYPE1 =',#39+'RA---TAN'+#39+' / first parameter RA , projection TANgential '); update_text ('CTYPE2 =',#39+'DEC--TAN'+#39+' / second parameter DEC, projection TANgential '); update_text ('CUNIT1 =',#39+'deg '+#39+' / Unit of coordinates '); update_float ('CRPIX1 =',' / X of reference pixel ' ,head.crpix1); update_float ('CRPIX2 =',' / Y of reference pixel ' ,head.crpix2); update_float ('CRVAL1 =',' / RA of reference pixel (deg) ' ,head.ra0*180/pi); update_float ('CRVAL2 =',' / DEC of reference pixel (deg) ' ,head.dec0*180/pi); update_float ('CDELT1 =',' / X pixel size (deg) ' ,head.cdelt1); update_float ('CDELT2 =',' / Y pixel size (deg) ' ,head.cdelt2); update_float ('CROTA1 =',' / Image twist X axis (deg) ' ,head.crota1); update_float ('CROTA2 =',' / Image twist Y axis (deg) E of N if not flipped.' ,head.crota2); update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_2); update_text ('PLTSOLVD=',' T / ASTAP manual with two positions'); update_menu_related_to_solver(true); {update menu section related to solver succesfull} plot_north; plot_north_on_image; end; end; procedure Tmainwindow.inversimage1Click(Sender: TObject); var max_range, col,fitsX,fitsY : integer; begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; if nrbits=8 then max_range:= 255 else max_range:=65535; for col:=0 to head.naxis3-1 do {do all colours} begin For fitsY:=0 to (head.height-1) do for fitsX:=0 to (head.width-1) do begin img_loaded[col,fitsX,fitsY]:=max_range-img_loaded[col,fitsX,fitsY] end; end; head.datamax_org:=max_range; use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false,true); Screen.Cursor:=crDefault; { Always restore to normal } end; procedure Tmainwindow.set_area1Click(Sender: TObject); var dum : integer; begin if startX>stopX then begin dum:=stopX; stopX:=startX; startX:=dum; end;{swap} if startY>stopY then begin dum:=stopY; stopY:=startY; startY:=dum; end; {selected area colour replace} areax1:=startX; areay1:=startY; areax2:=stopX; areay2:=stopY; set_area1.checked:=(areaX1<>areaX2); stackmenu1.area_set1.caption:='✓'; stackmenu1.center_position1.caption:='Center: '+inttostr((startX+stopX) div 2)+', '+inttostr((startY+stopY) div 2); end; procedure rotate_arbitrary(angle,flipped: double); var centerxs,centerys : double; begin centerxs:=head.width/2; centerys:=head.height/2; raster_rotate(flipped*angle,centerxs,centerys ,img_loaded); head.width:=length(img_loaded[0]);{update width} ; head.height:=length(img_loaded[0,0]);{update length}; update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); if head.cd1_1<>0 then {update solution for rotation} begin if ((head.crpix1<>0.5+centerxs) or (head.crpix2<>0.5+centerys)) then {reference is not center} begin {to much hassle to fix. Just remove the solution} remove_key('CD1_1 ',false); remove_key('CD1_2 ',false); remove_key('CD2_1 ',false); remove_key('CD2_2 ',false); end; head.crota2:=fnmodulo(head.crota2+angle,360); head.crota1:=fnmodulo(head.crota1+angle,360); head.crpix1:= head.width/2; head.crpix2:=head.height/2; old_to_new_WCS(head);{convert old style FITS to newd style} update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_2); update_float ('CRPIX1 =',' / X of reference pixel ' ,head.crpix1); update_float ('CRPIX2 =',' / Y of reference pixel ' ,head.crpix2); update_float ('CROTA1 =',' / Image twist X axis (deg) ' ,head.crota1); update_float ('CROTA2 =',' / Image twist Y axis (deg) E of N if not flipped.' ,head.crota2); add_text ('HISTORY ','Rotated CCW by angle '+floattostrF(angle,fffixed, 0, 2)); end; remove_key('ANNOTATE',true{all});{this all will be invalid} end; procedure Tmainwindow.rotate_arbitrary1Click(Sender: TObject); var angle,flipped : double; valueI : string; begin flipped:=+1;//not flipped valueI:=InputBox('Arbitrary rotation','Enter angle CCW in degrees: (If solved, enter N for north up)','' ); if valueI='' then exit; if ((valueI='n') or (valueI='N')) then begin angle:=-head.crota2; if head.cd1_1<>0 then //solved begin if ((head.CD1_1>0)=(head.CD2_2>0)) then {Flipped image. Either flipped vertical or horizontal but not both. Flipped both horizontal and vertical is equal to 180 degrees rotation and is not seen as flipped} flipped:=-1; //change rotation for flipped image end else begin application.messagebox(pchar('Abort! Can not execute without astrometric solution. Solve image first.'),'',MB_OK); exit; end; end else begin angle:=strtofloat2(valueI); if mainwindow.flip_horizontal1.checked then flipped:=-flipped;{change rotation if flipped} if mainwindow.flip_vertical1.checked then flipped:=-flipped;{change rotation if flipped} end; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } memo2_message('Start rotation. This takes some time due to subsampling 10x10.'); backup_img; rotate_arbitrary(angle,flipped); plot_fits(mainwindow.image1,false,true); progress_indicator(-100,'');{back to normal} Screen.Cursor:=crDefault; { Always restore to normal } memo2_message('Rotation done.'); end; procedure Tmainwindow.batch_rotate_left1Click(Sender: TObject); var i : integer; dobackup,success : boolean; Save_Cursor : TCursor; begin OpenDialog1.Title := 'Select multiple files to rotate 90 degrees.'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter := dialog_filter_fits_tif; esc_pressed:=false; if OpenDialog1.Execute then begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } dobackup:=img_loaded<>nil; if dobackup then backup_img;{preserve img array and fits header of the viewer} with OpenDialog1.Files do for i := 0 to Count - 1 do begin filename2:=Strings[i]; {load fits} Application.ProcessMessages; if ((esc_pressed) or (load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded)=false)) then begin break;end; if sender=mainwindow.batch_rotate_left1 then rotate_arbitrary(90,1) else if sender=mainwindow.batch_rotate_right1 then rotate_arbitrary(-90,1) else if sender=mainwindow.batch_rotate_1801 then rotate_arbitrary(180,1); if fits_file_name(filename2) then success:=save_fits(img_loaded,filename2,nrbits,true) else success:=save_tiff16_secure(img_loaded,filename2);{guarantee no file is lost} if success=false then begin ShowMessage('Write error !!' + filename2);break; end; end; if dobackup then restore_img;{for the viewer} Screen.Cursor:=crDefault; exit; end; end; procedure Tmainwindow.histogram1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var value: string; begin value:=inttostr(round(hist_range*x/histogram1.Width)); mainwindow.CAPTION:='Histogram value: ' +value; application.hint:=mainwindow.caption; histogram1.hint:=value; end; function RGBToH(r,g,b : single): integer; {https://en.wikipedia.org/wiki/Hue} {Preucil used a polar plot, which he termed a color circle.[8] Using R, G, and B, one may compute hue angle using the following scheme: determine which of the six possible orderings of R, G, and B prevail, then apply the formula given in the table below. } var H, D, Cmax, Cmin: Single; begin Cmax := Max(R, Max(G, B)); Cmin := Min(R, Min(G, B)); if Cmax = Cmin then h := 0 else begin D := Cmax - Cmin; if R = Cmax then h := (G - B) / D else if G = Cmax then h := 2 + (B - R) / D else h := 4 + (R - G) / D; h := h * 60; {make range 0..360} if h < 0 then h := h + 360; end; result:=round(h) end; procedure find_highest_pixel_value(img: image_array;box, x1,y1: integer; out xc,yc:double);{} var i,j,k,w,h : integer; value, val, SumVal,SumValX,SumValY, Xg,Yg : double; function value_subpixel(x1,y1:double):double; {calculate image pixel value on subpixel level} var x_trunc,y_trunc: integer; x_frac,y_frac : double; begin x_trunc:=trunc(x1); y_trunc:=trunc(y1); if ((x_trunc<=0) or (x_trunc>=(head.width-2)) or (y_trunc<=0) or (y_trunc>=(head.height-2))) then begin result:=0; exit;end; x_frac :=frac(x1); y_frac :=frac(y1); try result:= (img[0,x_trunc ,y_trunc ]) * (1-x_frac)*(1-y_frac);{pixel left top, 1} result:=result + (img[0,x_trunc+1,y_trunc ]) * ( x_frac)*(1-y_frac);{pixel right top, 2} result:=result + (img[0,x_trunc ,y_trunc+1]) * (1-x_frac)*( y_frac);{pixel left bottom, 3} result:=result + (img[0,x_trunc+1,y_trunc+1]) * ( x_frac)*( y_frac);{pixel right bottom, 4} except end; end; begin w:=Length(img[0]); {width} h:=Length(img[0,0]); {height} if ((x1>=box) and (x1<w-box) and (y1>=box) and (y1<h-box))=false then begin {don't try too close to boundaries} xc:=x1; yc:=y1; exit end; xc:=x1; yc:=y1; for k:=1 to 2 do {repeat for maximum accuracy} begin value:=-99999; {find highest pixel} for i:=round(xc)-box to round(xc)+box do for j:=round(yc)-box to round(yc)+box do begin val:=img[0,i,j]; if val>value then begin value:=val; end; end; {find center of gravity} SumVal:=0; SumValX:=0; SumValY:=0; for i:=-box to +box do for j:=-box to +box do begin val:=value_subpixel(xc+i,yc+j) - value/2;{use only the brightest parts above half max} if val>0 then val:=sqr(val);{sqr highest pixels} SumVal:=SumVal+val; SumValX:=SumValX+val*(i); SumValY:=SumValY+val*(j); end; Xg:=SumValX/SumVal;{offset} Yg:=SumValY/SumVal; xc:=(xc+Xg); yc:=(yc+Yg); end;{repeat} {center of gravity found} end; procedure plot_simbad(info:string); var name,regel,simobject,typ,mag,colour,sizestr : string; err,p1,p2,p3,p4,p5,p6,p7,ra1,ra2,ra3,dec1,dec2,count,minnen1,minnen2 : integer; m,rah,ram,ras,decd,decm,decs,sign,size : double; slist: TStringList; procedure read_position(start,stop:integer); begin ra1:=posex(' ',regel,start+1); ra2:=posex(' ',regel,ra1+1); ra3:=posex(' ',regel,ra2+1); dec1:=posex(' ',regel,ra3+3);//skip some more for double spaces dec2:=posex(' ',regel,dec1+1); if stop=0 then stop:=posex(' ',regel,dec2+2); rah:=strtofloat1(copy(regel,start+1,ra1-start-1)); ram:=strtofloat1(copy(regel,ra1+1,ra2-ra1-1)); ras:=strtofloat1(copy(regel,ra2+1,ra3-ra2-1)); decd:=strtofloat1(trim(copy(regel,ra3+1,dec1-ra3-1))); decm:=strtofloat1(copy(regel,dec1+1,dec2-dec1-1)); decs:=strtofloat1(trim(copy(regel,dec2+1,stop-dec2-1))); if pos('-',copy(regel,ra3+1,3))>0 then sign:=-1 else sign:=+1; end; begin m:=0;//default unknown magnitude; slist := TStringList.Create; deepstring.clear; deepstring.add('');//add two lines blank comments deepstring.add(''); try slist.Text := info; count:=5;{skip first part} while count+1<=slist.count do begin regel:=ansistring(slist[count]); inc(count); //single object is reported by Simbad if copy(regel,1,6)='Object' then //single object begin minnen1:=pos('---',regel); minnen2:=posex('---',regel,minnen1+4); name:=StringReplace(trim( copy(regel,8,minnen1-2-8)), ' ', '_',[rfReplaceAll]); {name} typ:=trim(copy(regel,minnen1+4,minnen2-(minnen1+5))); end else if copy(regel,1,16)='Coordinates(ICRS' then //single object begin read_position(36,0);//read ra and dec from 36 end else if copy(regel,1,4)='Flux' then //magnitude begin colour:=copy(regel,6,1); if ((colour='B') or (colour='V')) then val((copy(regel,10,posex(' ',regel,11)-10)),m,err);{B or V magnitude} end else if copy(regel,1,7)='Angular' then begin val((copy(regel,15,posex(' ',regel,11)-10)),size,err);//angular size if size<>0 then sizestr:=','+inttostr(round(size*10)) else sizestr:=''; if m=0 then mag:='' {unknown magnitude, e.g ngc1988} else mag:='/'+inttostr(round(m*10));{magn} simobject:=inttostr(round((rah+ram/60+ras/3600)*864000/24))+','+inttostr(round(sign*(abs(decd)+decm/60+decs/3600)*324000/90))+','+name+'['+typ+mag+']'+sizestr; deepstring.add(simobject); break //ready for single object end; //Simbad report a list of objects if ((length(regel)>=130) and (count>=10)) then begin {magnitude} p1:=pos('|',regel);{first column changes in width} p2:=posex('|',regel,p1+1); p3:=posex('|',regel,p2+1); p4:=posex('|',regel,p3+1); p5:=posex('|',regel,p4+1); p6:=posex('|',regel,p5+1); p7:=posex('|',regel,p6+1); //there are more | but are not required if p7>0 then //this is a real line of the object list begin read_position(p3,p4);//read ra and dec within start and stop val(trim(copy(regel,p6+1,p7-p6-1)),m,err);{V magnitude} if m=0 then val(trim(copy(regel,p5+1,p6-p5-1)),m,err);{try B magnitude} if m=0 then mag:='' {unknown magnitude, e.g ngc1988} else mag:='/'+inttostr(round(m*10));{magn} typ:=trim(copy(regel,p2+1,p3-p2-1)); name:=StringReplace(trim(copy(regel,p1+1,p2-p1-1)), ' ', '_',[rfReplaceAll]);{name} simobject:=inttostr(round((rah+ram/60+ras/3600)*864000/24))+','+inttostr(round(sign*(abs(decd)+decm/60+decs/3600)*324000/90))+','+name+'['+typ+mag+']'; //RA[0..864000], DEC[-324000..324000], name(s), length [0.1 min], width[0.1 min], orientation[degrees] //659250,-49674,M16/NGC6611/Eagle_Nebula,80 deepstring.add(simobject); end; end; {correct line of object list} end; finally slist.Free; end; database_nr:=4;{1 is deepsky, 2 is hyperleda, 3 is variable loaded, 4=simbad} plot_deepsky; end; procedure Tmainwindow.gaia_star_position1Click(Sender: TObject); var url,ra8,dec8,sgn,window_size,magn,dec_degrees : string; ang_h,ang_w,ra1,ra2,dec1,dec2 : double; radius,x1,y1 : integer; begin if ((abs(stopX-startX)<2) and (abs(stopY-startY)<2))then begin if object_xc>0 then {object sync} begin window_size:='&-c.bs=5&-out.max=100&Gmag=<23'; {circle search 5 arcsec} stopX:=stopX+8;{create some size for two line annotation} startX:=startX-8; ang_w:=10 {radius 5 arc seconds for Simbad} end else begin application.messagebox(pchar('No star lock or no area selected!'+#10+#10+'Place mouse on a star or hold the right mouse button down while selecting an area.'),'',MB_OK); exit; end; end else begin ang_w:=abs((stopX-startX)*head.cdelt2*3600);{arc sec} ang_h:=abs((stopY-startY)*head.cdelt2*3600);{arc sec} window_size:='&-c.bs='+ floattostr6(ang_w)+'/'+floattostr6(ang_h)+'&-out.max=300&Gmag=<23';{square box} {-c.geom=b square box, -c.bs=10 box size 10arc else radius} sensor_coordinates_to_celestial(startX+1,startY+1,ra1,dec1);{first position} sensor_coordinates_to_celestial(stopX+1,stopY+1,ra2,dec2);{first position} object_raM:=(ra1+ra2)/2; {center position} object_decM:=(dec1+dec2)/2; end; Screen.Cursor:=crHourglass; application.processmessages; image1.Canvas.Pen.Mode := pmMerge; image1.Canvas.Pen.width :=1; mainwindow.image1.Canvas.Pen.Color:= annotation_color;{clyellow} mainwindow.image1.Canvas.brush.Style:=bsClear; str(abs(object_decM*180/pi) :3:10,dec8); if object_decM>=0 then sgn:='+' else sgn:='-'; if object_decM>=0 then sgn:='%2B'{+} else sgn:='%2D'{-} ; str(abs(object_raM*180/pi) :3:10,ra8); if sender=simbad_annotation_deepsky1 then //Simbad deepsky begin x1:=(stopX+startX) div 2; y1:=(stopY+startY) div 2; url:='http://simbad.u-strasbg.fr/simbad/sim-sam?submit=submit+query&maxObject=1000&Criteria=(maintype!=*)'+'%26+region(box,'+ra8+sgn+dec8+',+'+floattostr4(ang_w)+'s+'+floattostr4(ang_h)+'s)&OutputMode=LIST&output.format=ASCII'; // http://simbad.u-strasbg.fr/simbad/sim-sam?submit=submit+query&maxObject=1000&Criteria=(Vmag<15+|+Bmag<15+)%26+region(box,60.2175d%2B25.5763d,+32.3592m+38.5229m)&OutputMode=LIST&output.format=ASCII' plot_simbad(get_http(url)); Screen.Cursor:=crDefault; exit; end else if sender=simbad_annotation_star1 then //Simbad stars begin x1:=(stopX+startX) div 2; y1:=(stopY+startY) div 2; url:='http://simbad.u-strasbg.fr/simbad/sim-sam?submit=submit+query&maxObject=1000&Criteria=(maintype=*)'+'%26+region(box,'+ra8+sgn+dec8+',+'+floattostr4(ang_w)+'s+'+floattostr4(ang_h)+'s)&OutputMode=LIST&output.format=ASCII'; // http://simbad.u-strasbg.fr/simbad/sim-sam?submit=submit+query&maxObject=1000&Criteria=(Vmag<15+|+Bmag<15+)%26+region(box,60.2175d%2B25.5763d,+32.3592m+38.5229m)&OutputMode=LIST&output.format=ASCII' plot_simbad(get_http(url)); Screen.Cursor:=crDefault; exit; end else if sender=mainwindow.gaia_star_position1 then //Gaia stars begin plot_the_annotation(stopX+1,stopY+1,startX+1,startY+1,0,'','');{rectangle, +1 to fits coordinates} url:='http://vizier.u-strasbg.fr/viz-bin/asu-txt?-source=I/355/Gaiadr3&-out=Source,RA_ICRS,DE_ICRS,Plx,pmRA,pmDE,Gmag,BPmag,RPmag&-c='+ra8+sgn+dec8+window_size; //http://vizier.u-strasbg.fr/viz-bin/asu-txt?-source=I/355/Gaiadr3&-out=Source,RA_ICRS,DE_ICRS,pmRA,pmDE,Gmag,BPmag,RPmag&-c=86.5812345-10.3456,bm=1x1&-out.max=1000000&BPmag=%3C21.5 end else if sender=mainwindow.simbad_query1 then begin {sender simbad_query1} radius:=max(abs(stopX-startX),abs(stopY-startY)) div 2; {convert elipse to circle} x1:=(stopX+startX) div 2; y1:=(stopY+startY) div 2; plot_the_circle(x1-radius,y1-radius,x1+radius,y1+radius); url:='http://simbad.u-strasbg.fr/simbad/sim-coo?Radius.unit=arcsec&Radius='+floattostr6(max(ang_w,ang_h)/2)+'&Coord='+ra8+'d'+sgn+dec8+'d&OutputMode=LIST&output.format=HTML'; // url:='http://simbad.u-strasbg.fr/simbad/sim-coo?Radius.unit=arcsec&Radius=0.4692&Coord=195.1060d28.1998d end else if sender=mainwindow.hyperleda_guery1 then begin {sender hyperleda_guery1} plot_the_annotation(stopX+1,stopY+1,startX+1,startY+1,0,'','');{rectangle, +1 to fits coordinates} url:='http://leda.univ-lyon1.fr/fG.cgi?n=a000&ob=ra&c=o&p=J'+ra8+'d%2C'+sgn+dec8+'d&f='+floattostr6(max(ang_w,ang_h)/(60)); //350.1000D%2C50.50000D &f=50 // http://leda.univ-lyon1.fr/fG.cgi?n=a000&c=o&p=J350.1000D%2C50.50000D&f=50&ob=ra end else if sender=mainwindow.ned_query1 then begin {sender ned_query1} radius:=max(abs(stopX-startX),abs(stopY-startY)) div 2; {convert elipse to circle} x1:=(stopX+startX) div 2; y1:=(stopY+startY) div 2; plot_the_circle(x1-radius,y1-radius,x1+radius,y1+radius); url:='http://ned.ipac.caltech.edu/conesearch?in_csys=Equatorial&in_equinox=J2000&coordinates='+ra8+'d%20'+sgn+dec8+'d&radius=' +floattostr6(max(ang_w,ang_h)/(60*2))+'&corr_z=1&z_constraint=Unconstrained&z_unit=z&ot_include=ANY&nmp_op=ANY&search_type=Near%20Position%20Search&out_csys=Equatorial&out_equinox=Same%20as%20Input&obj_sort=Distance%20to%20search%20center'+'&in_objtypes1[Galaxies]=Galaxies&in_objtypes1[GPairs]=GPairs&in_objtypes1[GTriples]=GTriples&in_objtypes1[GGroups]=GGroups&in_objtypes1[GClusters]=GClusters&in_objtypes1[QSO]=QSO&in_objtypes1[QSOGroups]=QSOGroups&in_objtypes1[GravLens]=GravLens&in_objtypes1[AbsLineSys]=AbsLineSys&in_objtypes1[EmissnLine]=EmissnLine'; //http://ned.ipac.caltech.edu/conesearch?in_csys=Equatorial&in_equinox=J2000&coordinates=12.000d%20%2B45.0000d&radius=2&corr_z=1&z_constraint=Unconstrained&z_unit=z&ot_include=ANY&nmp_op=ANY&search_type=Near%20Position%20Search&out_csys=Equatorial&out_equinox=Same%20as%20Input&obj_sort=Distance%20to%20search%20center end else begin {sender aavso_chart1} magn:=inputbox('Chart request','Limiting magnitude chart:' ,'15'); radius:=max(abs(stopX-startX),abs(stopY-startY)) div 2; {convert elipse to circle} x1:=(stopX+startX) div 2; y1:=(stopY+startY) div 2; plot_the_annotation(x1-radius+1,y1-radius+1,x1+radius+1,y1+radius+1,0,'','');{square} ra8:=prepare_ra(object_raM,' '); {radialen to text, format 24: 00 00.0 } dec8:=prepare_dec(object_decM,' '); {radialen to text, format 90d 00 00} if dec8[1]='+' then dec_degrees:=copy(dec8,2,2) else dec_degrees:=copy(dec8,1,3); url:='https://app.aavso.org/vsp/chart/?ra='+copy(ra8,1,2)+'%3A'+copy(ra8,4,2)+'%3A'+copy(ra8,7,99)+'&dec='+dec_degrees+'%3A'+copy(dec8,5,2)+'%3A'+copy(dec8,8,99)+'&scale=C&orientation=visual&type=chart&fov='+inttostr(round( (ang_w+ang_w)/(60*2)))+'&maglimit='+trim(magn)+'&resolution=150&north=up&east=left' // https://app.aavso.org/vsp/chart/?ra=08%3A40%3A29.63&dec=40%3A07%3A24.4&scale=C&orientation=visual&type=chart&fov=120.0&maglimit=12.0&resolution=150&north=up&east=left end; openurl(url); Screen.Cursor:=crDefault; end; procedure Tmainwindow.mountposition1Click(Sender: TObject); begin if head.naxis=0 then exit; if mountposition1.checked then begin plot_large_north_indicator; image1.refresh;{important, show update} end else plot_fits(mainwindow.image1,false,true); {clear indiicator} end; function find_reference_star(img : image_array) : boolean;{for manual alignment} var xc,yc,hfd2,fwhm_star2,snr,flux : double; begin result:=false; {assume failure} if pos('small',stackmenu1.manual_centering1.text)<>0 then {comet} begin find_highest_pixel_value(img,10,startX,startY,xc,yc); end else if pos('medium',stackmenu1.manual_centering1.text)<>0 then {comet} begin find_highest_pixel_value(img,20,startX,startY,xc,yc); end else if pos('large',stackmenu1.manual_centering1.text)<>0 then {comet} begin find_highest_pixel_value(img,30,startX,startY,xc,yc); end else if pos('No',stackmenu1.manual_centering1.text)<>0 then {no centering} begin xc:=startX;{0..head.width-1} yc:=startY; end else {star alignment} HFD(img,startX,startY,14{annulus radius},99 {flux aperture restriction},0 {adu_e},hfd2,fwhm_star2,snr,flux,xc,yc); {auto center using HFD function} if hfd2<90 then {detected something} begin shape_fitsX:=xc+1;{calculate fits positions} shape_fitsY:=yc+1; result:=true; end; end; procedure Tmainwindow.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var width5,height5, xf,yf,k, fx,fy, shapetype : integer; hfd2,fwhm_star2,snr,flux,xc,yc,xcf,ycf : double; begin if flip_horizontal1.Checked then xf:=image1.width-1-x else xf:=x;; if flip_vertical1.Checked then yf:=image1.height-1-y else yf:=y; startX:=round(-0.5+(xf+0.5)/(image1.width/head.width));{starts at -0.5 and middle pixels is 0} startY:=round(-0.5+head.height-(yf+0.5)/(image1.height/head.height)); {from bottom to top, starts at -0.5 and 0 at middle first pixel} stopX:=startX;{prevent random crop and other actions} stopY:=startY; {default good values} snr:=10; hfd2:=2;{just a good value} {for manual alignment and photometry} if ((stackmenu1.pagecontrol1.tabindex=0) and (stackmenu1.use_manual_alignment1.checked) and (pos('S',head.calstat)=0 {ignore stacked images unless callled from listview1. See doubleclick listview1} )) then begin if find_reference_star(img_loaded) then begin if snr>5 then shapetype:=1 {circle} else shapetype:=0;{square} listview_add_xy(shape_fitsX,shape_fitsY);{add to list of listview1} show_marker_shape(mainwindow.shape_manual_alignment1,shapetype,20,20,10{minimum},shape_fitsX, shape_fitsY); end; end else if stackmenu1.pagecontrol1.tabindex=8 {photometry} then begin {star alignment} HFD(img_loaded,startX,startY,14{annulus radius},99 {flux aperture restriction},0 {adu_e},hfd2,fwhm_star2,snr,flux,xc,yc); {auto center using HFD function} if hfd2<90 then {detected something} begin if snr>5 then shapetype:=1 {circle} else shapetype:=0;{square} xcf:=xc+1;{make fits coordinates} ycf:=yc+1; if shape_nr=1 then begin if ((abs(shape_fitsX2-xcf)<=3) and (abs(shape_fitsY2-ycf)<=3)) then begin shape_fitsX2:=shape_fitsX;shape_fitsY2:=shape_fitsY;end{swap, prevent overlapping} else if ((abs(shape_fitsX3-xcf)<=3) and (abs(shape_fitsY3-ycf)<=3)) then begin shape_fitsX3:=shape_fitsX;shape_fitsY3:=shape_fitsY;end; shape_fitsX:=xcf; shape_fitsY:=ycf; end else if shape_nr=2 then begin if ((abs(shape_fitsX-xcf)<=3) and (abs(shape_fitsY-ycf)<=3)) then begin shape_fitsX:=shape_fitsX2;shape_fitsY:=shape_fitsY2;end{swap, prevent overlapping} else if ((abs(shape_fitsX3-xcf)<=3) and (abs(shape_fitsY3-ycf)<=3)) then begin shape_fitsX3:=shape_fitsX2;shape_fitsY3:=shape_fitsY2;end; shape_fitsX2:=xcf; shape_fitsY2:=ycf; {calculate fits positions} end else if shape_nr=3 then begin if ((abs(shape_fitsX-xcf)<=3) and (abs(shape_fitsY-ycf)<=3)) then begin shape_fitsX:=shape_fitsX3;shape_fitsY:=shape_fitsY3;end{swap, prevent overlapping} else if ((abs(shape_fitsX2-xcf)<=3) and (abs(shape_fitsY2-ycf)<=3)) then begin shape_fitsX2:=shape_fitsX3;shape_fitsY2:=shape_fitsY3;end; shape_fitsX3:=xcf; shape_fitsY3:=ycf; end; Shape_alignment_marker1.HINT:='? Refresh plotting';//reset any labels Shape_alignment_marker2.HINT:='?'; show_marker_shape(mainwindow.shape_alignment_marker1,shapetype,20,20,10{minimum},shape_fitsX, shape_fitsY); show_marker_shape(mainwindow.shape_alignment_marker2,shapetype,20,20,10{minimum},shape_fitsX2, shape_fitsY2); show_marker_shape(mainwindow.shape_alignment_marker3,shapetype,20,20,10{minimum},shape_fitsX3, shape_fitsY3); inc(shape_nr); if shape_nr>=4 then shape_nr:=1; end; end; {end photometry} image_move_to_center:=false;{image in moved to center, why is so difficult???} down_x:=x; down_y:=y; down_xy_valid := True; if ssleft in shift then begin Screen.Cursor:=crhandpoint; if ((head.naxis3=3) and (stackmenu1.pagecontrol1.tabindex=13) {pixelmath 1}) then {for colour replace function} begin sample(startX,startY); end; if copy_paste then {paste copied image part} begin width5:=Length(img_loaded[0]); {width} height5:=Length(img_loaded[0][0]); {height} for k:=0 to head.naxis3-1 do {do all colors} begin for fy:=copy_paste_y to copy_paste_y+copy_paste_h-1 do for fX:=copy_paste_x to copy_paste_x+copy_paste_w-1 do begin img_loaded[k,max(0,min(width5-1,round(startX+(fx-copy_paste_x)- (copy_paste_w div 2)))),max(0,min(height5-1,round(startY+(fy-copy_paste_y) - (copy_paste_h div 2))))]:=img_backup[index_backup].img[k,fx,fy];{use backup for case overlap occurs} end; end;{k color} plot_fits(mainwindow.image1,false,true); if ((ssCtrl in shift) or (ssAlt in shift) or (ssShift in shift))=false then begin copy_paste:=false; shape_paste1.visible:=false; end; end; end;{left button pressed} end; {calculates star HFD and FWHM, SNR, xc and yc are center of gravity, rs is the boxsize, aperture for the flux measurment. All x,y coordinates in array[0..] positions} {aperture_small is used for photometry of stars. Set at 99 for normal full flux mode} {Procedure uses two global accessible variables: r_aperture and sd_bg } procedure HFD(img: image_array;x1,y1,rs {annulus diameter}: integer;aperture_small, adu_e {unbinned} :double; out hfd1,star_fwhm,snr{peak/sigma noise}, flux,xc,yc:double); const max_ri=74; //(50*sqrt(2)+1 assuming rs<=50. Should be larger or equal then sqrt(sqr(rs+rs)+sqr(rs+rs))+1+2; var width5,height5,i,j,r1_square,r2_square,r2, distance,distance_top_value,illuminated_pixels,signal_counter,counter,annulus_width :integer; SumVal,Sumval_small, SumValX,SumValY,SumValR, Xg,Yg, r, val,pixel_counter,valmax,mad_bg, flux_e, sd_bg_e,radius : double; HistStart,boxed : boolean; distance_histogram : array [0..max_ri] of integer; background : array [0..1000] of double; {size =3*(2*PI()*(50+3)) assuming rs<=50} function value_subpixel(x1,y1:double):double; {calculate image pixel value on subpixel level} var x_trunc,y_trunc: integer; x_frac,y_frac : double; begin x_trunc:=trunc(x1); y_trunc:=trunc(y1); if ((x_trunc<=0) or (x_trunc>=(width5-2)) or (y_trunc<=0) or (y_trunc>=(height5-2))) then begin result:=0; exit;end; x_frac :=frac(x1); y_frac :=frac(y1); try result:= (img[0,x_trunc ,y_trunc ]) * (1-x_frac)*(1-y_frac);{pixel left top, 1} result:=result + (img[0,x_trunc+1,y_trunc ]) * ( x_frac)*(1-y_frac);{pixel right top, 2} result:=result + (img[0,x_trunc ,y_trunc+1]) * (1-x_frac)*( y_frac);{pixel left bottom, 3} result:=result + (img[0,x_trunc+1,y_trunc+1]) * ( x_frac)*( y_frac);{pixel right bottom, 4} except end; end; begin width5:=Length(img[0]); {width} height5:=Length(img[0][0]); {height} {rs should be <=50 to prevent runtime errors} if aperture_small<99 then annulus_width:=3 {high precession} else annulus_width:=1;{normal & fast} r1_square:=rs*rs;{square radius} r2:=rs+annulus_width; r2_square:=r2*r2; if ((x1-r2<=0) or (x1+r2>=width5-1) or (y1-r2<=0) or (y1+r2>=height5-1) ) then begin hfd1:=999; snr:=0; exit;end; valmax:=0; hfd1:=999; snr:=0; try counter:=0; for i:=-r2 to r2 do {calculate the mean outside the the detection area} for j:=-r2 to r2 do begin distance:=i*i+j*j; {working with sqr(distance) is faster then applying sqrt} if ((distance>r1_square) and (distance<=r2_square)) then {annulus, circular area outside rs, typical one pixel wide} begin background[counter]:=img[0,x1+i,y1+j]; //for testing: mainwindow.image1.canvas.pixels[x1+i,y1+j]:=$AAAAAA; inc(counter); end; end; star_bg:=Smedian(background,counter); for i:=0 to counter-1 do background[i]:=abs(background[i] - star_bg);{fill background with offsets} mad_bg:=Smedian(background,counter); //median absolute deviation (MAD) sd_bg:=mad_bg*1.4826; {Conversion from mad to sd for a normal distribution. See https://en.wikipedia.org/wiki/Median_absolute_deviation} sd_bg:=max(sd_bg,1); {add some value for images with zero noise background. This will prevent that background is seen as a star. E.g. some jpg processed by nova.astrometry.net} {star_bg, sd_bg and r_aperture are global variables} repeat {reduce square annulus radius till symmetry to remove stars} // Get center of gravity whithin star detection box and count signal pixels, repeat reduce annulus radius till symmetry to remove stars SumVal:=0; SumValX:=0; SumValY:=0; signal_counter:=0; for i:=-rs to rs do for j:=-rs to rs do begin val:=(img[0,x1+i,y1+j])- star_bg; if val>3.0*sd_bg then begin SumVal:=SumVal+val; SumValX:=SumValX+val*(i); SumValY:=SumValY+val*(j); inc(signal_counter); {how many pixels are illuminated} end; end; if sumval<= 12*sd_bg then exit; {no star found, too noisy, exit with hfd=999} Xg:=SumValX/SumVal; Yg:=SumValY/SumVal; xc:=(x1+Xg); yc:=(y1+Yg); {center of gravity found} if ((xc-rs<0) or (xc+rs>width5-1) or (yc-rs<0) or (yc+rs>height5-1) ) then exit;{prevent runtime errors near sides of images} boxed:=(signal_counter>=(2/9)*sqr(rs+rs+1));{are inside the box 2 of the 9 of the pixels illuminated? Works in general better for solving then ovality measurement as used in the past} if boxed=false then begin if rs>4 then dec(rs,2) else dec(rs,1); {try a smaller window to exclude nearby stars} end; {check on hot pixels} if signal_counter<=1 then exit; {one hot pixel} until ((boxed) or (rs<=1)) ;{loop and reduce aperture radius until star is boxed} inc(rs,2);{add some space} // Build signal histogram from center of gravity for i:=0 to rs do distance_histogram[i]:=0;{clear signal histogram for the range used} for i:=-rs to rs do begin for j:=-rs to rs do begin distance:=round(sqrt(i*i + j*j)); {distance from gravity center} {modA} if distance<=rs then {build histogram for circel with radius rs} begin val:=value_subpixel(xc+i,yc+j)-star_bg; if val>3.0*sd_bg then {3 * sd should be signal } begin distance_histogram[distance]:=distance_histogram[distance]+1;{build distance histogram up to circel with diameter rs} if val>valmax then valmax:=val;{record the peak value of the star} end; end; end; end; r_aperture:=-1; distance_top_value:=0; HistStart:=false; illuminated_pixels:=0; repeat inc(r_aperture); illuminated_pixels:=illuminated_pixels+distance_histogram[r_aperture]; if distance_histogram[r_aperture]>0 then HistStart:=true;{continue until we found a value>0, center of defocused star image can be black having a central obstruction in the telescope} if distance_top_value<distance_histogram[r_aperture] then distance_top_value:=distance_histogram[r_aperture]; {this should be 2*pi*r_aperture if it is nice defocused star disk} until ( (r_aperture>=rs) or (HistStart and (distance_histogram[r_aperture]<=0.1*distance_top_value {drop-off detection})));{find a distance where there is no pixel illuminated, so the border of the star image of interest} if r_aperture>=rs then exit; {star is equal or larger then box, abort} if (r_aperture>2)and(illuminated_pixels<0.35*sqr(r_aperture+r_aperture-2)){35% surface} then exit; {not a star disk but stars, abort with hfd 999} except end; // Get HFD SumVal:=0; Sumval_small:=0; SumValR:=0; pixel_counter:=0; // Get HFD using the aproximation routine assuming that HFD line divides the star in equal portions of gravity: for i:=-r_aperture to r_aperture do {Make steps of one pixel} for j:=-r_aperture to r_aperture do begin Val:=value_subpixel(xc+i,yc+j)-star_bg; {The calculated center of gravity is a floating point position and can be anyware, so calculate pixel values on sub-pixel level} r:=sqrt(i*i+j*j); {Distance from star gravity center} if r<=aperture_small then SumVal_small:=SumVal_small+Val; {For photometry only. Flux within aperture_small. Works more accurate for differential photometry} SumVal:=SumVal+Val;{Sumval will be star total star flux} SumValR:=SumValR+Val*r; {Method Kazuhisa Miyashita, see notes of HFD calculation method, note calculate HFD over square area. Works more accurate then for round area} if val>=valmax*0.5 then pixel_counter:=pixel_counter+1;{How many pixels are above half maximum} end; flux:=max(sumval,0.00001);{prevent dividing by zero or negative values} hfd1:=2*SumValR/flux; hfd1:=max(0.7,hfd1); star_fwhm:=2*sqrt(pixel_counter/pi);{calculate from surface (by counting pixels above half max) the diameter equals FWHM } //noise calculation if r_aperture<aperture_small then {normal mode} begin radius:=r_aperture; end else begin {photometry mode. Measure only brightest part of the stars} flux:=max(sumval_small,0.00001);{prevent dividing by zero or negative values} radius:=aperture_small; // use smaller aperture end; if adu_e=0 then begin {no adu to e correction} flux_e:=flux; sd_bg_e:=sd_bg; end else begin //adu to e- correction flux_e:=flux*adu_e*sqr(head.xbinning);// if an image is binned the adu's are averaged. So bin2x2 result in four times less adu. sd_bg_e:=sd_bg*adu_e*head.xbinning;//noise is sqrt of signal. So electron noise reduces linear with binning value end; snr:=flux_e /sqrt(flux_e +sqr(radius)*pi*sqr(sd_bg_e)); {For both bright stars (shot-noise limited) or skybackground limited situations snr := signal/noise snr := star_signal/sqrt(total_signal) snr := star_signal/sqrt(star_signal + sky_signal) equals snr:=flux/sqrt(flux + r*r*pi* sd^2). r is the diameter used for star flux measurement. Flux is the total star flux detected above 3* sd. Assuming unity head.gain ADU/e-=1 See https://en.wikipedia.org/wiki/Signal-to-noise_ratio_(imaging) https://www1.phys.vt.edu/~jhs/phys3154/snr20040108.pdf http://spiff.rit.edu/classes/phys373/lectures/signal/signal_illus.html} // memo2_message(#9+'######'+#9+inttostr(round(flux))+#9+ floattostr6(r_aperture)+#9+floattostr6(sd)+#9+floattostr6(snr)+#9+floattostr6(sqr(r_aperture)*pi*sqr(sd))); {==========Notes on HFD calculation method================= Documented this HFD definition also in https://en.wikipedia.org/wiki/Half_flux_diameter References: https://astro-limovie.info/occultation_observation/halffluxdiameter/halffluxdiameter_en.html by Kazuhisa Miyashita. No sub-pixel calculation https://www.lost-infinity.com/night-sky-image-processing-part-6-measuring-the-half-flux-diameter-hfd-of-a-star-a-simple-c-implementation/ http://www.ccdware.com/Files/ITS%20Paper.pdf See page 10, HFD Measurement Algorithm HFD, Half Flux Diameter is defined as: The diameter of circle where total flux value of pixels inside is equal to the outside pixel's. HFR, half flux radius:=0.5*HFD The pixel_flux:=pixel_value - background. The approximation routine assumes that the HFD line divides the star in equal portions of gravity: sum(pixel_flux * (distance_from_the_centroid - HFR))=0 This can be rewritten as sum(pixel_flux * distance_from_the_centroid) - sum(pixel_values * (HFR))=0 or HFR:=sum(pixel_flux * distance_from_the_centroid))/sum(pixel_flux) HFD:=2*HFR This is not an exact method but a very efficient routine. Numerical checking with an a highly oversampled artificial Gaussian shaped star indicates the following: Perfect two dimensional Gaussian shape with σ=1: Numerical HFD=2.3548*σ Approximation 2.5066, an offset of +6.4% Homogeneous disk of a single value : Numerical HFD:=disk_diameter/sqrt(2) Approximation disk_diameter/1.5, an offset of -6.1% The approximate routine is robust and efficient. Since the number of pixels illuminated is small and the calculated center of star gravity is not at the center of an pixel, above summation should be calculated on sub-pixel level (as used here) or the image should be re-sampled to a higher resolution. A sufficient signal to noise is required to have valid HFD value due to background noise. Note that for perfect Gaussian shape both the HFD and FWHM are at the same 2.3548 σ. } {=============Notes on FWHM:===================== 1) Determine the background level by the averaging the boarder pixels. 2) Calculate the standard deviation of the background. Signal is anything 3 * standard deviation above background 3) Determine the maximum signal level of region of interest. 4) Count pixels which are equal or above half maximum level. 5) Use the pixel count as area and calculate the diameter of that area as diameter:=2 *sqrt(count/pi).} end; procedure local_sd(x1,y1, x2,y2,col : integer;{accuracy: double;} img : image_array; out sd,mean :double; out iterations :integer);{calculate mean and standard deviation in a rectangle between point x1,y1, x2,y2} var i,j,counter,w,h : integer; value, sd_old,meanx : double; begin w:=Length(img[0]); {width} h:=Length(img[0,0]); {height} x1:=max(x1,0);{protect against values outside the array} x2:=min(x2,w-1); y1:=max(y1,0); y2:=min(y2,h-1); sd:=99999; mean:=0; if ((y1>y2) or (x1>x2)) then exit; iterations:=0; repeat {mean} counter:=0; meanx:=0; for j:=y1 to y2 do {calculate standard deviation of region of interest} for i:=x1 to x2 do {calculate standard deviation of region of interest} begin value:=img[col,i,j]; if ((iterations=0) or (abs(value-mean)<=3*sd)) then {ignore outliers after first run} begin inc(counter); meanx:=meanx+value; {mean} end; end;{filter outliers} if counter<>0 then mean:=meanx/counter {calculate the mean}; {sd} sd_old:=sd; counter:=0; for j:=y1 to y2 do {calculate standard deviation of region of interest} for i:=x1 to x2 do {calculate standard deviation of region of interest} begin value:=img[col,i,j]; if value<2*mean then {not a large outlier} if ((iterations=0) or (abs(value-mean)<=3*sd_old)) then {ignore outliers after first run} begin sd:=sd+sqr(mean-value); inc(counter); end; end; if counter<>0 then sd:=sqrt(sd/counter); inc(iterations); until (((sd_old-sd)<0.03*sd) or (iterations>=7));{repeat until sd is stable or 7 iterations} end; function rgb_kelvin(red,blue :single):string;{range 2000-20000 kelvin} var ratio,ratio2,ratio3,ratio4,ratio5, temperature :double; begin if ((blue>=18) {and (blue<=250)} and (red>=18) {and (red<=250)}) then {shall not be saturated or near zero} begin ratio:=blue/red; if ((ratio>0.04) and (ratio<1.55)) then {valid between 2000 and 20000 kelvin} begin // y = 4817,4x5 - 4194,2x4 - 7126,7x3 + 12922x2 - 2082,2x + 2189,8 {blackbody temperature, excel polynom fit based on table, http://www.vendian.org/mncharity/dir3/blackbody/UnstableURLs/bbr_color.html} ratio2:=ratio*ratio; ratio3:=ratio2*ratio; ratio4:=ratio3*ratio; ratio5:=ratio4*ratio; temperature:= +4817.4*ratio5 -4194.2*ratio4 -7126.7*ratio3 +12922 *ratio2 -2082.2 *ratio +2189.8; result:=inttostr(round(temperature))+'K'; end else result:=''; end else result:=''; end; procedure erase_rectangle; begin begin mainwindow.image1.Canvas.Pen.color:=clblack;{define otherwise problems in Linux} mainwindow.image1.Canvas.Pen.Mode := pmNotXor; { use XOR mode to draw/erase } mainwindow.image1.Canvas.Pen.width := round(1+head.width/mainwindow.image1.width);{thick lines because image is stretched smaller and otherwise line can't been seen} mainwindow.image1.Canvas.MoveTo(start_RX , start_RY); { move pen back to origin } mainwindow.image1.Canvas.LineTo(stop_RX,start_RY); { erase the old line } mainwindow.image1.Canvas.LineTo(stop_RX,stop_RY); { erase the old line } mainwindow.image1.Canvas.LineTo(start_RX,stop_RY); { erase the old line } mainwindow.image1.Canvas.LineTo(start_RX,start_RY); { erase the old line } mainwindow.image1.Canvas.Pen.Mode := pmCopy;{back to normal} end; end; procedure draw_rectangle(x_sized,y_sized:integer); begin mainwindow.image1.Canvas.Pen.color:=clblack; mainwindow.image1.Canvas.Pen.Mode := pmNotXor; { use XOR mode to draw/erase } mainwindow.image1.Canvas.Pen.width := round(1+head.width/mainwindow.image1.width);{thick lines because image is stretched smaller and otherwise line can't been seen} mainwindow.image1.Canvas.LineTo(X_sized, start_RY); { draw the new line } mainwindow.image1.Canvas.LineTo(X_sized, Y_sized); { draw the new line } mainwindow.image1.Canvas.LineTo(start_RX, Y_sized); { draw the new line } mainwindow.image1.Canvas.LineTo(start_RX, start_RY); { draw the new line } mainwindow.image1.Canvas.Pen.Mode := pmCopy;{back to normal} end; function retrieve_ADU_to_e_unbinned(head_egain :string): double; //Used for SNR calculation in procedure HFD. Factor for unbinned files. Result is zero when calculating in e- is not activated in the statusbar popup menu. Then in procedure HFD the SNR is calculated using ADU's only. var egain: double; begin if ((egain_extra_factor<>0) and (mainwindow.noise_in_electron1.checked)) then begin egain:=strtofloat1(head_egain);//point seperator if egain=0 then egain:=egain_default; result:=egain/egain_extra_factor;{ADU to electrons, factor for unbinned images. For ASI1600 unbinned 1/16 because 0..4095 values result in 0..65535 output} end else result:=0;// zero is calculate snr using ADU's end; function noise_to_electrons(adu_e, binning, sd : double): string; begin if adu_e<>0 then result:=floattostrF(sd*adu_e*binning,FFgeneral,3,3)+' e-' // in electrons else result:=floattostrF(sd,FFgeneral,3,3);//in adu's end; procedure Tmainwindow.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var hfd2,fwhm_star2,snr,flux,xf,yf, raM,decM,pixel_distance,sd,dummy,conv_factor, adu_e : double; s1,s2, hfd_str, fwhm_str,snr_str,mag_str,dist_str,angle_str : string; width5,height5,x_sized,y_sized,factor,flipH,flipV,iterations : integer; color1:tcolor; r,b :single; begin if ssleft in shift then {swipe effect} begin if down_xy_valid then begin if abs(y-down_y)>2 then begin mainwindow.image1.Top:= mainwindow.image1.Top+(y-down_y); // timage(sender).Top:= timage(sender).Top+(y-down_y);{could be used for second image} mainwindow.shape_marker1.Top:= mainwindow.shape_marker1.Top+(y-down_y);{normal marker} mainwindow.shape_marker2.Top:= mainwindow.shape_marker2.Top+(y-down_y);{normal marker} mainwindow.shape_marker3.Top:= mainwindow.shape_marker3.Top+(y-down_y);{normal marker} mainwindow.shape_marker4.Top:= mainwindow.shape_marker4.Top+(y-down_y);{normal marker} end; if abs(x-down_x)>2 then begin mainwindow.image1.left:= mainwindow.image1.left+(x-down_x); // timage(sender).left:= timage(sender).left+(x-down_x); mainwindow.shape_marker1.left:= mainwindow.shape_marker1.left+(x-down_x);{normal marker} mainwindow.shape_marker2.left:= mainwindow.shape_marker2.left+(x-down_x);{normal marker} mainwindow.shape_marker3.left:= mainwindow.shape_marker3.left+(x-down_x);{normal marker} mainwindow.shape_marker4.left:= mainwindow.shape_marker4.left+(x-down_x);{normal marker} end; if ((abs(y-down_y)>2) or (abs(x-down_x)>2)) then begin {three markers} if mainwindow.shape_manual_alignment1.visible then {For manual alignment. Do this only when visible} show_marker_shape(mainwindow.shape_manual_alignment1,9 {no change in shape and hint},20,20,10,shape_fitsX, shape_fitsY); if mainwindow.shape_alignment_marker1.visible then {For manual alignment. Do this only when visible} show_marker_shape(mainwindow.shape_alignment_marker1,9 {no change in shape and hint},20,20,10,shape_fitsX, shape_fitsY); if mainwindow.shape_alignment_marker2.visible then {For manual alignment. Do this only when visible} show_marker_shape(mainwindow.shape_alignment_marker2,9 {no change in shape and hint},20,20,10,shape_fitsX2, shape_fitsY2); if mainwindow.shape_alignment_marker3.visible then {For manual alignment. Do this only when visible} show_marker_shape(mainwindow.shape_alignment_marker3,9 {no change in shape and hint},20,20,10,shape_fitsX3, shape_fitsY3); end; end; exit;{no more to do} end else down_xy_valid := False; {every move without ssleft will invalidate down_xy} if img_loaded=nil then exit; {image load has failed, prevent runtime error} width5:=Length(img_loaded[0]); {width} height5:=Length(img_loaded[0][0]); {height} if flip_horizontal1.Checked then flipH:=-1 else flipH:=1; if flip_vertical1.Checked then flipV:=-1 else flipV:=1; if flipH=-1 then xf:=image1.width-1-x else xf:=x;; if flipV=-1 then yf:=image1.height-1-y else yf:=y; mouse_fitsx:=0.5+(0.5+xf)/(image1.width/width5);{starts at +0.5 and middle pixels is 1} mouse_fitsy:=0.5+height5-(0.5+yf)/(image1.height/height5); {from bottom to top, starts at +0.5 and 1 at middle first pixel} //rubber rectangle x_sized:=trunc(x*width5/image1.width); y_sized:=trunc(y*height5/image1.height); if ssright in shift then {for crop function} begin if mouse_enter=1 then begin start_RX:= x_sized; start_RY:= y_sized; stop_RX:= x_sized; stop_RY:= y_sized; end; mouse_enter:=2;{right button pressed} end else mouse_enter:=0; factor:=round(1+width5/image1.width); if ((abs(stop_RX -x)>factor) and (abs(stop_RY -y)>factor))then begin if ssright in shift then {rubber rectangle} begin erase_rectangle; draw_rectangle(x_sized,y_sized); stopX:=round(-1+mouse_fitsX); {starts at -0.5 and middle pixels is 0} stopY:=round(-1+mouse_fitsY); {from bottom to top, starts at -0.5 and 0 at middle first pixel} if head.cdelt2<>0 then begin pixel_distance:= 3600*sqrt (sqr((X_sized-start_RX)*head.cdelt1)+sqr((start_RY-Y_sized)*head.cdelt2));{pixel distance in arcsec} if pixel_distance<60 then dist_str:=inttostr(round(pixel_distance))+'"' else if pixel_distance<3600 then dist_str:=floattostrF(pixel_distance/60,ffgeneral,3,2)+#39 else dist_str:=floattostrF(pixel_distance/3600,ffgeneral,3,2)+'°'; end else dist_str:=''; if head.cdelt2<>0 then angle_str:='∠='+inttostr(round(fnmodulo (arctan2(flipH*(X_sized-start_RX),flipV*(start_RY-Y_sized))*180/pi + head.crota2,360)) )+'°' else angle_str:=''; ; mainwindow.statusbar1.panels[7].text:=inttostr(abs(X_sized-start_RX)-1)+' x '+inttostr(abs(start_RY-Y_sized)-1)+' '+dist_str+' '+angle_str;{indicate rectangl size} end else begin start_RX:=x_sized; {These values are the same startX,.... except if image is flipped} start_RY:=y_sized; mainwindow.statusbar1.panels[7].text:='';{remove crop size} end; stop_RX:=x_sized; {These values are the same startX,.... except if image is flipped} stop_RY:=y_sized; end; {end rubber rectangle} if ssright in shift then exit; {rubber rectangle with update statusbar is very slow. Does it trigger an event???} {give screen pixel value} str(mouse_fitsx:4:1,s1); {fits images start with 1 and not with 0} str(mouse_fitsy:4:1,s2); {Y from bottom to top} {prevent some rounding errors just outside the dimensions} if mouse_fitsY<1 then mouse_fitsY:=1; if mouse_fitsX<1 then mouse_fitsX:=1; if mouse_fitsY>height5 then mouse_fitsY:=height5; if mouse_fitsX>width5 then mouse_fitsX:=width5; if copy_paste then begin show_marker_shape(mainwindow.shape_paste1,0 {rectangle},copy_paste_w,copy_paste_h,0{minimum}, mouse_fitsx, mouse_fitsy);{show the paste shape} end; try color1:=ColorToRGB(mainwindow.image1.canvas.pixels[trunc(x*width5/image1.width),trunc(y*height5/image1.height)]); ;except;end; {note getpixel(image1.canvas.handle,x,y) doesn't work well since X,Y follows zoom factor !!!} if head.naxis3=3 then {for star temperature} begin try r:=img_loaded[0,round(mouse_fitsx)-1,round(mouse_fitsy)-1]-cblack; b:=img_loaded[2,round(mouse_fitsx)-1,round(mouse_fitsy)-1]-cblack; except {some rounding error, just outside dimensions} end; end else begin r:=0; b:=0; end; mainwindow.statusbar1.panels[4].text:=floattostrF(GetRValue(color1),ffgeneral,5,0)+'/' {screen colors} + floattostrF(GetGValue(color1),ffgeneral,5,0)+'/' + floattostrF(GetBValue(color1),ffgeneral,5,0)+ ' '+rgb_kelvin(r,b) ; try if head.naxis3=1 then mainwindow.statusbar1.panels[3].text:=s1+', '+s2+' = ['+floattostrF(img_loaded[0,round(mouse_fitsX)-1,round(mouse_fitsY)-1],ffgeneral,5,0)+']' else if head.naxis3=3 then mainwindow.statusbar1.panels[3].text:=s1+', '+s2+' = ['+floattostrF(img_loaded[0,round(mouse_fitsX)-1,round(mouse_fitsY)-1],ffgeneral,5,0)+'/'+ {color} floattostrF(img_loaded[1,round(mouse_fitsX)-1,round(mouse_fitsY)-1],ffgeneral,5,0)+'/'+ floattostrF(img_loaded[2,round(mouse_fitsX)-1,round(mouse_fitsY)-1],ffgeneral,5,0)+' '+']' else mainwindow.statusbar1.panels[3].text:=''; except end; sensor_coordinates_to_celestial(mouse_fitsx,mouse_fitsy,raM,decM); mainwindow.statusbar1.panels[0].text:=position_to_string(' ',raM,decM); adu_e:=retrieve_ADU_to_e_unbinned(head.egain);//Used for SNR calculation in procedure HFD. Factor for unbinned files. Result is zero when calculating in e- is not activated in the statusbar popup menu. Then in procedure HFD the SNR is calculated using ADU's only. hfd2:=999; HFD(img_loaded,round(mouse_fitsX-1),round(mouse_fitsY-1),annulus_radius {annulus radius},flux_aperture,adu_e {adu_e unbinned},hfd2,fwhm_star2,snr,flux,object_xc,object_yc);{input coordinates in array[0..] output coordinates in array [0..]} //mainwindow.caption:=floattostr(mouse_fitsX)+', '+floattostr(mouse_fitsy)+', '+floattostr(object_xc)+', '+floattostr(object_yc); if ((hfd2<99) and (hfd2>0)) then begin if ((hfd_arcseconds) and (head.cd1_1<>0)) then conv_factor:=abs(head.cdelt2)*3600{arc seconds} else conv_factor:=1;{pixels} if hfd2*conv_factor>1 then str(hfd2*conv_factor:0:1,hfd_str) else str(hfd2*conv_factor:0:2,hfd_str); str(fwhm_star2*conv_factor:0:1,fwhm_str); if ((hfd_arcseconds) and (head.cd1_1<>0)) then begin hfd_str:=hfd_str+'"';fwhm_str:=fwhm_str+'"';end; str(snr:0:0,snr_str); if adu_e=0 then snr_str:='SNR='+snr_str // noise based on ADU's else snr_str:='SNR_e='+snr_str;// noise based on electrons if flux_magn_offset<>0 then {offset calculated in star annotation call} begin str(flux_magn_offset-ln(flux)*2.511886432/ln(10):0:2,mag_str); mag_str:=', MAGN='+mag_str; end else mag_str:=''; {centered coordinates} sensor_coordinates_to_celestial(object_xc+1,object_yc+1,object_raM,object_decM);{input in FITS coordinates} if ((object_raM<>0) and (object_decM<>0)) then mainwindow.statusbar1.panels[1].text:=prepare_ra8(object_raM,': ')+' '+prepare_dec2(object_decM,'° '){object position in RA,DEC} else mainwindow.statusbar1.panels[1].text:=floattostrF(object_xc+1,ffFixed,7,2)+', '+floattostrF(object_yc+1,ffFixed,7,2);{object position in FITS X,Y} mainwindow.statusbar1.panels[2].text:='HFD='+hfd_str+', FWHM='+FWHM_str+', '+snr_str+mag_str{+' '+floattostr4(flux)}; if display_adu then mainwindow.statusbar1.panels[7].text:='ADU='+floattostrF(flux,ffFixed,0,0); end else begin object_xc:=-999999;{indicate object_raM is unlocked} object_raM:=raM; {use mouse position instead} object_decM:=decM; {use mouse position instead} mainwindow.statusbar1.panels[1].text:=''; local_sd(round(mouse_fitsX-1)-10,round(mouse_fitsY-1)-10, round(mouse_fitsX-1)+10,round(mouse_fitsY-1)+10{regio of interest},0 {col},img_loaded, sd,dummy {mean},iterations);{calculate mean and standard deviation in a rectangle between point x1,y1, x2,y2} mainwindow.statusbar1.panels[2].text:='σ = '+noise_to_electrons(adu_e, head.Xbinning, sd); //reports noise in ADU's (adu_e=0) or electrons end; end; procedure Tmainwindow.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button=mbright then begin PopupMenu1.PopUp;{call popup manually if right key is released, not when clicked. Set in popupmenu autopopup off !!!} {$IfDef Darwin}// for OS X, {not required in Mac. After popup the rectangle is gone} {$ELSE} erase_rectangle; {$ENDIF} end; down_xy_valid := False; Screen.Cursor:=crDefault; end; procedure Tmainwindow.stretch_draw1Click(Sender: TObject); {stretch draw} var tmpbmp: TBitmap; ARect: TRect; begin Screen.Cursor:=crHourglass; application.processmessages; backup_img; try TmpBmp := TBitmap.Create; try TmpBmp.Width := mainwindow.image1.width; TmpBmp.Height := mainwindow.image1.height; ARect := Rect(0,0, mainwindow.image1.width, mainwindow.image1.height); TmpBmp.Canvas.StretchDraw(ARect, mainwindow.Image1.Picture.bitmap); mainwindow.Image1.Picture.bitmap.Assign(TmpBmp); finally TmpBmp.Free; end; except end; Screen.Cursor:=crDefault; end; procedure Tmainwindow.SaveFITSwithupdatedheader1Click(Sender: TObject); begin savefits_update_header(filename2); end; procedure Tmainwindow.Memo1Change(Sender: TObject); begin save1.Enabled:=true; end; procedure Tmainwindow.SaveasJPGPNGBMP1Click(Sender: TObject); var filename3:ansistring; {$IFDEF fpc} PNG: TPortableNetworkGraphic;{FPC} {$else} {delphi} PNG: TPNGObject; {$endif} JPG: TJPEGImage; begin filename3:=ChangeFileExt(FileName2,''); savedialog1.initialdir:=ExtractFilePath(filename3); savedialog1.filename:=filename3; savedialog1.Filter := 'PNG 8 bit(*.png)|*.png;|BMP 8 bit(*.bmp)|*.bmp;|JPG 100% compression quality (*.jpg)|*.jpg;|JPG 90% compression quality (*.jpg)|*.jpg;|JPG 80% compression quality (*.jpg)|*.jpg;|JPG 70% compression quality (*.jpg)|*.jpg;'; savedialog1.filterindex:=SaveasJPGPNGBMP1filterindex; {4 or jpg 90%} if savedialog1.execute then begin if ((pos('.PNG',uppercase(savedialog1.filename))>0) or (savedialog1.filterindex=1) ) then begin {$IFDEF fpc} png:= TPortableNetworkGraphic.Create; {FPC} {$else} {delphi} PNG := TPNGObject.Create; {$endif} try PNG.Assign(mainwindow.image1.Picture.Graphic); //Convert data into png savedialog1.filename:=ChangeFileExt(savedialog1.filename,'.png'); PNG.SaveToFile(savedialog1.filename); finally PNG.Free; end; end else if ((pos('.JPG',uppercase(savedialog1.filename))>0) or (savedialog1.filterindex>=3))then begin {$IFDEF fpc} JPG := TJPEGImage.Create; {$else} {delphi} JPG := TJPEGImage.Create; {$endif} try JPG.Assign(mainwindow.image1.Picture.Graphic); //Convert data into JPG if savedialog1.filterindex=3 then JPG.CompressionQuality :=100; if savedialog1.filterindex=4 then JPG.CompressionQuality :=90; if savedialog1.filterindex=5 then JPG.CompressionQuality :=80; if savedialog1.filterindex=6 then JPG.CompressionQuality :=70; savedialog1.filename:=ChangeFileExt(savedialog1.filename,'.jpg'); JPG.SaveToFile(savedialog1.filename); finally JPG.Free; end; end else {(savedialog1.filterindex=2)} begin {bitmap} savedialog1.filename:=ChangeFileExt(savedialog1.filename,'.bmp'); mainwindow.image1.picture.SaveToFile(savedialog1.filename); end; SaveasJPGPNGBMP1filterindex:=savedialog1.filterindex;{remember} end; end; function stretch_img(img: image_array):image_array;{stretch image, three colour or mono} var colrr,colgg,colbb,col_r,col_g,col_b, largest,luminance,luminance_stretched,factor,sat_factor,h,s,v : single; width5,height5,colours5,fitsX,fitsY :integer; begin colours5:=length(img);{nr colours} width5:=length(img[0]);{width} height5:=length(img[0,0]);{height} setlength(result,colours5,width5,height5); sat_factor:=1-mainwindow.saturation_factor_plot1.position/10; for fitsY:=0 to height5-1 do for fitsX:=0 to width5-1 do begin if colours5=3 then begin col_r:=img[0,fitsx,fitsy]; col_g:=img[1,fitsx,fitsy]; col_b:=img[2,fitsx,fitsy]; colrr:=(col_r-cblack)/(cwhite-cblack);{scale to 0..1} colgg:=(col_g-cblack)/(cwhite-cblack);{scale to 0..1} colbb:=(col_b-cblack)/(cwhite-cblack);{scale to 0..1} if sat_factor<>1 then {adjust saturation} begin RGB2HSV(colrr,colgg,colbb,h,s,v); HSV2RGB(h,s*sat_factor,v,colrr,colgg,colbb);{increase/decrease colour saturation} end; if colrr<=0.00000000001 then colrr:=0.00000000001; if colgg<=0.00000000001 then colgg:=0.00000000001; if colbb<=0.00000000001 then colbb:=0.00000000001; {find brightest colour and resize all if above 1} largest:=colrr; if colgg>largest then largest:=colgg; if colbb>largest then largest:=colbb; if largest>1 then {clamp to 1 but preserve colour, so ratio r,g,b} begin colrr:=colrr/largest; colgg:=colgg/largest; colbb:=colbb/largest; largest:=1; end; if stretch_on then {Stretch luminance only. Keep RGB ratio !!} begin luminance:=(colrr+colgg+colbb)/3;{luminance in range 0..1} luminance_stretched:=stretch_c[trunc(32768*luminance)]; factor:=luminance_stretched/luminance; if factor*largest>1 then factor:=1/largest; {clamp again, could be higher then 1} col_r:=round(colrr*factor*65535);{stretch only luminance but keep rgb ratio!} col_g:=round(colgg*factor*65535);{stretch only luminance but keep rgb ratio!} col_b:=round(colbb*factor*65535);{stretch only luminance but keep rgb ratio!} end else begin col_r:=round(65535*colrr); col_g:=round(65535*colgg); col_b:=round(65535*colbb); end; result[0,fitsx,fitsy]:=col_r; result[1,fitsx,fitsy]:=col_g; result[2,fitsx,fitsy]:=col_b; end {RGB fits with naxis3=3} else begin {mono, naxis3=1} col_r:=img[0,fitsx,fitsy]; colrr:=(col_r-cblack)/(cwhite-cblack);{scale to 1} if colrr<=0.00000000001 then colrr:=0.00000000001; if colrr>1 then colrr:=1; if stretch_on then begin col_r:=round(65535*stretch_c[trunc(32768*colrr)]);{sqrt is equivalent to gamma=0.5} end else begin col_r:=round(65535*colrr);{sqrt is equivalent to gamma=0.5} end; result[0,fitsx,fitsy] :=col_r; end; end; end; function save_PPM_PGM_PFM(img: image_array; colourdepth:integer; filen2:ansistring;flip_H,flip_V:boolean): boolean;{save to 16 bit portable pixmap/graymap file (PPM/PGM) or 32 bit PFM file} var ppmbuffer32: array[0..trunc(bufwide/4)] of Dword; {bufwide is set in astap_main and is 120000} ppmbuffer: array[0..bufwide] of byte absolute ppmbuffer32; header: array[0..26] of ansichar; thefile : tfilestream; i,j,k,m,width2,height2 : integer; dum: double; dummy : word; value1 : single; lw : longword absolute value1; begin result:=false; // colours5:=length(img);{nr colours} width2:=length(img[0]);{width} height2:=length(img[0,0]);{height} if colourdepth=48 then {colour} header:=pansichar('P6'+#10+inttostr(width2)+#10+inttostr(height2)+#10+'65535'+#10) {colour 48 bit} else if colourdepth=16 then {gray} header:=pansichar('P5'+#10+inttostr(width2)+#10+inttostr(height2)+#10+'65535'+#10) {mono 16 bit} else if colourdepth=96 then {colour} header:=pansichar('PF'+#10+inttostr(width2)+#10+inttostr(height2)+#10+'-1.0'+#10) {mono 32 bit} else if colourdepth=32 then {gray} header:=pansichar('Pf'+#10+inttostr(width2)+#10+inttostr(height2)+#10+'-1.0'+#10); {colour 32 bit, little-endian=-1, big-endian=+1} if fileexists(filen2)=true then if MessageDlg('Existing file ' +filen2+ ' Overwrite?', mtConfirmation, [mbYes, mbNo], 0) <> 6 {mbYes} then Exit; try thefile:=tfilestream.Create(filen2, fmcreate ); except thefile.free; exit; end; { Write PPM/PGM Header } thefile.writebuffer ( header, strlen(Header)); { Write Image Data } if colourdepth=48 then {colour} begin for i:=0 to Height2-1 do begin if flip_V=false then k:=height2-1-i else k:=i;{reverse fits down to counting} for j:=0 to width2-1 do begin if flip_H=true then m:=width2-1-j else m:=j; dum:=img[0,m,k]; if dum>$FFFF then dum:=$FFFF;if dum<0 then dum:=$0;dummy:=round(dum); ppmbuffer[m*6 ] :=hi(dummy); ppmbuffer[m*6+1] :=lo(dummy); dum:=img[1,m,k]; if dum>$FFFF then dum:=$FFFF;if dum<0 then dum:=$0;dummy:=round(dum); ppmbuffer[m*6+2] :=hi(dummy); ppmbuffer[m*6+3] :=lo(dummy); dum:=img[2,m,k]; if dum>$FFFF then dum:=$FFFF;if dum<0 then dum:=$0;dummy:=round(dum); ppmbuffer[m*6+4] :=hi(dummy); ppmbuffer[m*6+5] :=lo(dummy); end; thefile.writebuffer(ppmbuffer,width2*6 {2 or 2*3}) ;{works only for byte arrays} end; end else if colourdepth=16 then begin {mono/gray} for i:=0 to Height2-1 do begin if flip_V=false then k:=height2-1-i else k:=i;{reverse fits down to counting} for j:=0 to width2-1 do begin if flip_H=true then m:=width2-1-j else m:=j; dum:=img[0,m,k]; if dum>$FFFF then dum:=$FFFF;if dum<0 then dum:=$0;dummy:=round(dum); ppmbuffer[m*2 ] :=hi(dummy); ppmbuffer[m*2+1] :=lo(dummy); end; thefile.writebuffer(ppmbuffer,width2*2 {}) ;{works only for byte arrays} end; end; if colourdepth=96 then {PFM 32 bit float colour files, little endian} begin for i:=0 to Height2-1 do begin if flip_V=false then k:=height2-1-i else k:=i;{reverse fits down to counting} for j:=0 to width2-1 do begin if flip_H=true then m:=width2-1-j else m:=j; value1:=img[0,m,k]/65535; ppmbuffer32[m*3]:=lw; value1:=img[1,m,k]/65535; ppmbuffer32[m*3+1]:=lw; value1:=img[2,m,k]/65535; ppmbuffer32[m*3+2]:=lw; end; thefile.writebuffer(ppmbuffer,width2*4*3{}) ;{works only for byte arrays} end; end else if colourdepth=32 then {PFM 32 bit float gray scale file, little endian} begin {mono/gray} for i:=0 to Height2-1 do begin if flip_V=false then k:=height2-1-i else k:=i;{reverse fits down to counting} for j:=0 to width2-1 do begin if flip_H=true then m:=width2-1-j else m:=j; value1:=img[0,m,k]/65535; ppmbuffer32[m]:=lw; end; thefile.writebuffer(ppmbuffer,width2*4 {}) ;{works only for byte arrays} end; end; thefile.free; result:=true; end; function save_PNG16(img: image_array; filen2:string;flip_H,flip_V:boolean): boolean;{save to PNG file } var i, j, k,m,colours5,width5,height5 :integer; image: TFPCustomImage; writer: TFPCustomImageWriter; thecolor :Tfpcolor; begin colours5:=length(img);{nr colours} width5:=length(img[0]);{width} height5:=length(img[0,0]);{height} Image := TFPMemoryImage.Create(width5, height5); Writer := TFPWriterPNG.Create; with TFPWriterPNG(Writer) do begin indexed := false; wordsized := true; UseAlpha := false; GrayScale := (colours5=1); end; For i:=0 to height5-1 do begin if flip_V=false then k:=height5-1-i else k:=i;{reverse fits down to counting} for j:=0 to width5-1 do begin if flip_H=true then m:=width5-1-j else m:=j; thecolor.red:=min(round(img[0,m,k]), $FFFF); if colours5>1 then thecolor.green:=min(round(img[1,m,k]), $FFFF) else thecolor.green:=thecolor.red; if colours5>2 then thecolor.blue:=min(round(img[2,m,k]), $FFFF) else thecolor.blue:=thecolor.red; thecolor.alpha:=65535; image.Colors[j,i]:=thecolor; end; end; result:=true; try Image.SaveToFile(filen2, Writer); except result:=false; exit; end; image.Free; writer.Free; end; //function save_PNM16(img: image_array; colors,wide2,head.height:integer; filen2:string;flip_H,flip_V:boolean): boolean;{save to PNM file } //var // i, j, k,m :integer; // image: TFPCustomImage; // writer: TFPCustomImageWriter; // thecolor :Tfpcolor; //begin // Image := TFPMemoryImage.Create(head.width, head.height); // Writer := TFPWriterPNM.Create; // with TFPWriterPNM(Writer) do // begin // FullWidth:=true;{16 bit} // end; // For i:=0 to head.height-1 do // begin // if flip_V=false then k:=head.height-1-i else k:=i;{reverse fits down to counting} // for j:=0 to head.width-1 do // begin // if flip_H=true then m:=wide2-1-j else m:=j; // thecolor.red:=min(round(img[0,m,k]), $FFFF); // if colors>1 then thecolor.green:=min(round(img[1,m,k]), $FFFF) else thecolor.green:=thecolor.red; // if colors>2 then thecolor.blue:=min(round(img[2,m,k]), $FFFF) else thecolor.blue:=thecolor.red; // thecolor.alpha:=65535; // image.Colors[j,i]:=thecolor; // end; // end; // result:=true; // try // Image.SaveToFile(filen2, Writer); // except // result:=false; // exit; // end; // image.Free; // writer.Free; //end; function save_tiff16(img: image_array; filen2:string;flip_H,flip_V:boolean): boolean;{save to 16 bit TIFF file } var i, j, k,m,colours5,width5,height5 :integer; image: TFPCustomImage; writer: TFPCustomImageWriter; thecolor : Tfpcolor; format : string; factor : single; begin colours5:=length(img);{nr colours} width5:=length(img[0]);{width} height5:=length(img[0,0]);{height} Image := TFPMemoryImage.Create(width5, height5); Writer := TFPWriterTIFF.Create; Image.Extra[TiffAlphaBits]:='0'; if nrbits=8 then {8 bit fits} begin format:='8'; factor:=256; {the tiff writer will divide by 256 again} end else begin format:='16'; {32 bit is not available} factor:=1;{default} end; Image.Extra[TiffRedBits]:=format; Image.Extra[TiffGreenBits]:=format; Image.Extra[TiffBlueBits]:=format; Image.Extra[TiffGrayBits]:=format; {add unit fptiffcmn to make this work. see https://bugs.freepascal.org/view.php?id=35081} if colours5=1 then {grayscale} Image.Extra[TiffPhotoMetric]:='1' {PhotometricInterpretation = 0 (Min-is-White), 1 (Min-is-Black), so for 1 black is $0000, White is $FFFF} else Image.Extra[TiffPhotoMetric]:='2';{RGB colour} image.Extra[TiffSoftware]:='ASTAP'; image.Extra[TiffImageDescription]:=mainwindow.memo1.text; {store full header in TIFF !!!} Image.Extra[TiffCompression]:= '8'; {FPWriteTiff only support only writing Deflate compression. Any other compression setting is silently replaced in FPWriteTiff at line 465 for Deflate. FPReadTiff that can read other compressed files including LZW.} For i:=0 to height5-1 do begin if flip_V=false then k:=height5-1-i else k:=i;{reverse fits down to counting} for j:=0 to width5-1 do begin if flip_H=true then m:=width5-1-j else m:=j; thecolor.red:=min(round(img[0,m,k]*factor), $FFFF); if colours5>1 then thecolor.green:=min(round(img[1,m,k]*factor), $FFFF) else thecolor.green:=thecolor.red; if colours5>2 then thecolor.blue:=min(round(img[2,m,k]*factor), $FFFF) else thecolor.blue:=thecolor.red; thecolor.alpha:=65535; image.Colors[j,i]:=thecolor; end; end; result:=true; try Image.SaveToFile(filen2, Writer); except result:=false; exit; end; image.Free; writer.Free; end; procedure Tmainwindow.save_to_tiff1Click(Sender: TObject); var I: integer; fileDate : Integer; err,written : boolean; dobackup : boolean; begin OpenDialog1.Title := 'Select multiple files to convert to (Astro) TIFF. Date will preserved.'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter := 'All formats except TIF|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS;*.png;*.PNG;*.jpg;*.JPG;*.bmp;*.BMP;*.new;*.ppm;*.pgm;*.pbm;*.pfm;*.xisf;*.fz;'+ '*.RAW;*.raw;*.CRW;*.crw;*.CR2;*.cr2;*.CR3;*.cr3;*.KDC;*.kdc;*.DCR;*.dcr;*.MRW;*.mrw;*.ARW;*.arw;*.NEF;*.nef;*.NRW;.nrw;*.DNG;*.dng;*.ORF;*.orf;*.PTX;*.ptx;*.PEF;*.pef;*.RW2;*.rw2;*.SRW;*.srw;*.RAF;*.raf;'+ '|RAW files|*.RAW;*.raw;*.CRW;*.crw;*.CR2;*.cr2;*.CR3;*.cr3;*.KDC;*.kdc;*.DCR;*.dcr;*.MRW;*.mrw;*.ARW;*.arw;*.NEF;*.nef;*.NRW;.nrw;*.DNG;*.dng;*.ORF;*.orf;*.PTX;*.ptx;*.PEF;*.pef;*.RW2;*.rw2;*.SRW;*.srw;*.RAF;*.raf;'+ '|PNG, JPEG, BMP(*.png, *.jpg,*.bmp)|*.png;*.PNG;*.jpg;*.JPG;*.bmp;*.BMP'+ '|Compressed FITS files|*.fz'; opendialog1.initialdir:=ExtractFileDir(filename2); // fits_file:=false; esc_pressed:=false; err:=false; if OpenDialog1.Execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } dobackup:=img_loaded<>nil; if dobackup then backup_img;{preserve img array and fits header of the viewer} try { Do some lengthy operation } with OpenDialog1.Files do for I := 0 to Count - 1 do begin progress_indicator(100*i/(count),' Converting');{show progress} Application.ProcessMessages; if esc_pressed then begin err:=true; break; end; filename2:=Strings[I]; memo2_message(filename2+' file nr. '+inttostr(i+1)+'-'+inttostr(Count)); if sender=save_to_tiff2 then fileDate := FileAge(fileName2); if load_image(false {recenter},false {plot}) then begin filename2:=ChangeFileExt(filename2,'.tif'); if abs(nrbits)<=16 then begin written:=save_tiff16(img_loaded,filename2,false {flip H},false {flip V}); end else begin {32 bit files} memo2_message('This file is 32 bit. Only export to TIFF 32 bit possible. No import!!' ); if head.naxis3<>1 then {color} written:=save_tiff_96(img_loaded,filename2,mainwindow.memo1.text {store full header in TIFF},false {flip H},false {flip V}) {old uncompressed routine in unit_tiff} else written:=save_tiff_32(img_loaded,filename2,mainwindow.memo1.text {store full header in TIFF},false {flip H},false {flip V});{old uncompressed routine in unit_tiff} end; if written then begin if sender=save_to_tiff2 then FileSetDate(filename2,filedate) {function} end else err:=true end else err:=true; end; if err=false then mainwindow.caption:='Completed, all files converted.' else mainwindow.caption:='Finished, files converted but with errors or stopped!'; finally if dobackup then restore_img;{for the viewer} Screen.Cursor:=crDefault; { Always restore to normal } progress_indicator(-100,'');{progresss done} end; end; end; procedure Tmainwindow.convert_to_ppm1Click(Sender: TObject); var I: integer; err : boolean; dobackup : boolean; begin OpenDialog1.Title := 'Select multiple files to convert'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter := 'All formats except PPM |*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS;*.png;*.PNG;*.jpg;*.JPG;*.bmp;*.BMP;*.tif;*.tiff;*.TIF;*.xisf;*.fz;'+ '*.RAW;*.raw;*.CRW;*.crw;*.CR2;*.cr2;*.CR3;*.cr3;*.KDC;*.kdc;*.DCR;*.dcr;*.MRW;*.mrw;*.ARW;*.arw;*.NEF;*.nef;*.NRW;.nrw;*.DNG;*.dng;*.ORF;*.orf;*.PTX;*.ptx;*.PEF;*.pef;*.RW2;*.rw2;*.SRW;*.srw;*.RAF;*.raf;'+ '|FITS files (*.fit*,*.xisf)|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS;*.new;*.xisf;*.fz'+ '|RAW files|*.RAW;*.raw;*.CRW;*.crw;*.CR2;*.cr2;*.CR3;*.cr3;*.KDC;*.kdc;*.DCR;*.dcr;*.MRW;*.mrw;*.ARW;*.arw;*.NEF;*.nef;*.NRW;.nrw;*.DNG;*.dng;*.ORF;*.orf;*.PTX;*.ptx;*.PEF;*.pef;*.RW2;*.rw2;*.SRW;*.srw;*.RAF;*.raf;'+ '|PNG, TIFF, JPEG, BMP(*.png,*.tif*, *.jpg,*.bmp)|*.png;*.PNG;*.tif;*.tiff;*.TIF;*.jpg;*.JPG;*.bmp;*.BMP'+ '|Compressed FITS files|*.fz'; opendialog1.initialdir:=ExtractFileDir(filename2); // fits_file:=false; esc_pressed:=false; err:=false; if OpenDialog1.Execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } dobackup:=img_loaded<>nil; if dobackup then backup_img;{preserve img array and fits header of the viewer} try { Do some lengthy operation } with OpenDialog1.Files do for I := 0 to Count - 1 do begin progress_indicator(100*i/(count),' Converting');{show progress} Application.ProcessMessages; if esc_pressed then begin err:=true; break;end; filename2:=Strings[I]; mainwindow.caption:=filename2+' file nr. '+inttostr(i+1)+'-'+inttostr(Count);; if load_image(false {recenter},false {plot}) then begin if head.naxis3=1 then {monochrome} begin if abs(nrbits)<=16 then begin filename2:=ChangeFileExt(filename2,'.pgm'); save_PPM_PGM_PFM(img_loaded,16 {colour depth},filename2,false {flip H},false {flip V}); end else begin filename2:=ChangeFileExt(filename2,'.pfm'); save_PPM_PGM_PFM(img_loaded,32 {colour depth},filename2,false,false); end; end else begin {colour} if abs(nrbits)<=16 then begin filename2:=ChangeFileExt(filename2,'.ppm'); save_PPM_PGM_PFM(img_loaded,48 {colour depth},filename2,false,false); end else begin filename2:=ChangeFileExt(filename2,'.pfm'); save_PPM_PGM_PFM(img_loaded,96 {colour depth},filename2,false,false); end; end;{colour} end else err:=true; end; if err=false then mainwindow.caption:='Completed, all files converted.' else mainwindow.caption:='Finished, files converted but with errors or stopped!'; finally if dobackup then restore_img;{for the viewer} Screen.Cursor:=crDefault; { Always restore to normal } progress_indicator(-100,'');{progresss done} end; end; end; procedure Tmainwindow.flip_H1Click(Sender: TObject); var col,fitsX,fitsY : integer; vertical :boolean; begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; vertical:= (sender=flip_V1); setlength(img_temp,head.naxis3, head.width,head.height); for col:=0 to head.naxis3-1 do {do all colours} begin For fitsY:=0 to (head.height-1) do for fitsX:=0 to (head.width-1) do begin if vertical then img_temp[col, fitsX,(head.height-1)-fitsY]:=img_loaded[col,fitsX,fitsY] else img_temp[col,(head.width-1)-fitsX,fitsY]:=img_loaded[col,fitsX,fitsY]; end; end; img_loaded:=nil; img_loaded:=img_temp; if head.cd1_1<>0 then {update solution for rotation} begin if vertical then {rotate right} begin head.cd1_2:=-head.cd1_2; head.cd2_2:=-head.cd2_2; end else begin {rotate horizontal} head.cd1_1:=-head.cd1_1; head.cd2_1:=-head.cd2_1; end; new_to_old_WCS(head);{convert new style FITS to old style, calculate crota1,crota2,cdelt1,cdelt2} update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_2); update_float ('CDELT1 =',' / X pixel size (deg) ' ,head.cdelt1); update_float ('CDELT2 =',' / Y pixel size (deg) ' ,head.cdelt2); update_float ('CROTA1 =',' / Image twist of X axis (deg) ' ,head.crota1); update_float ('CROTA2 =',' / Image twist of Y axis E of N (deg) ' ,head.crota2); remove_key('ROWORDER',false{all});{just remove to be sure no debayer confusion} add_text ('HISTORY ','Flipped. '); end; plot_fits(mainwindow.image1,false,true); Screen.Cursor:=crDefault; { Always restore to normal } end; procedure Tmainwindow.MenuItem22Click(Sender: TObject); begin form_inspection1.aberration_inspector1Click(nil); end; procedure Tmainwindow.electron_to_adu_factors1Click(Sender: TObject); begin if head.egain='' then head.egain:=floattostrF(egain_default,FFgeneral,3,3); head.egain:=InputBox('factor e-/ADU, unbinned?', 'At unity gain this factor shall be 1'+#10 ,head.egain); egain_default:=strtofloat2(head.egain);//for next file load. Works with either dot (from header) or komma as decimal separator egain_extra_factor:=round(strtofloat(InputBox('Additional conversion factor for an unbinned sensor', 'For a 12 bit sensor with an output range [0..65535] enter 16'+#10+ 'For a 12 bit sensor with an output range [0. . 4096] enter 1'+#10+ 'For a 14 bit sensor with an output range [0..65535] enter 4'+#10+ 'For a 14 bit sensor with an output range [0..16384] enter 1'+#10+ 'For a 16 bit sensor with an output range [0..65535] enter 1'+#10+ #10+ 'The bit depth of the sensor can be measured from a light using popup menu "Show statistics"'+#10 ,inttostr(egain_extra_factor)))); end; procedure Tmainwindow.halo_removal1Click(Sender: TObject); var fitsX,fitsY,dum,k,startX2,startY2,stopX2,stopY2 : integer; centerX, centerY,distance_center,range,factor : double; mode_left_bottom,mode_left_top, mode_right_top, mode_right_bottom,mode_halo,noise_level, noise_left_bottom,noise_left_top, noise_right_top, noise_right_bottom,required_bg : array[0..2] of double; red_halo,green_halo,blue_halo : boolean; begin if head.naxis=0 then exit; if ((abs(stopX-startX)>10)and (abs(stopY-starty)>10)) then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } Randomize; {initialise} startX2:=startX;{save for Application.ProcessMessages;this could change startX, startY} startY2:=startY; stopX2:=stopX; stopY2:=stopY; backup_img; if startX2>stopX2 then begin dum:=stopX2; stopX2:=startX2; startX2:=dum; end;{swap} if startY2>stopY2 then begin dum:=stopY2; stopY2:=startY2; startY2:=dum; end; for k:=0 to head.naxis3-1 do {do all colors} begin mode_left_bottom[k]:=mode(img_loaded,k,startX2-10,startX2+10,startY2-10,startY2+10,32000);{for this area get most common value equals peak in histogram} mode_left_top[k]:= mode(img_loaded,k,startX2-10,startX2+10,stopY2-10,stopY2+10,32000);{for this area get most common value equals peak in histogram} mode_right_bottom[k]:=mode(img_loaded,k,stopX2-10,stopX2+10,startY2-10,startY2+10,32000);{for this area get most common value equals peak in histogram} mode_right_top[k]:= mode(img_loaded,k,stopX2-10,stopX2+10,stopY2-10,stopY2+10,32000);{for this area get most common value equals peak in histogram} mode_halo[k]:=mode(img_loaded,k,startX2,stopX2,startY2,stopY2,32000);{for this area get most common value equals peak in histogram} required_bg[k]:=(mode_left_bottom[k] + mode_left_top[k] + mode_right_bottom[k] +mode_right_top[k])/4; noise_left_bottom[k]:=get_negative_noise_level(img_loaded,k,startx-10,startx+10,starty-10,starty+10, mode_left_bottom[k]);{find the negative noise level below most_common_level of a local area} noise_left_top[k]:=get_negative_noise_level(img_loaded,k,startx-10,startx+10,stopY-10,stopY+10, mode_left_top[k]);{find the negative noise level below most_common_level of a local area} noise_right_bottom[k]:=get_negative_noise_level(img_loaded,k,stopX-10,stopX+10,starty-10,starty+10, mode_right_bottom[k]);{find the negative noise level below most_common_level of a local area} noise_right_top[k]:=get_negative_noise_level(img_loaded,k,stopX-10,stopX+10,stopY-10,stopY+10, mode_right_top[k]);{find the negative noise level below most_common_level of a local area} noise_level[k]:=(noise_left_bottom[k] + noise_left_top[k] + noise_right_top[k] + noise_right_bottom[k])/4; end; centerX:=(startX2+stopX2-1)/2; centerY:=(startY2+stopY2-1)/2; range:=(stopX2-startX2)/2; for fitsY:=startY2 to stopY2-1 do begin if frac(fitsY/50)=0 then begin Application.ProcessMessages;{this could change startX, startY} if esc_pressed then begin Screen.Cursor:=crDefault; { back to normal } exit; end; end; for fitsX:=startX2 to stopX2-1 do begin distance_center:=sqrt(sqr(fitsX-centerX)+sqr(fitsY-centerY)); factor:=30*(range-distance_center)/range; red_halo:=((img_loaded[0,fitsX,fitsY]<mode_halo[0]+ noise_level[0]*factor) and (img_loaded[0,fitsX,fitsY]>required_bg[0] + noise_level[0]*2)); if head.naxis3-1>=1 then green_halo:=((img_loaded[1,fitsX,fitsY]<mode_halo[1]+ noise_level[1]*factor) and (img_loaded[1,fitsX,fitsY]>required_bg[1] + noise_level[1]*2)) else green_halo:=false; if head.naxis3-1>=2 then blue_halo :=((img_loaded[2,fitsX,fitsY]<mode_halo[2]+ noise_level[2]*factor) and (img_loaded[2,fitsX,fitsY]>required_bg[2] + noise_level[2]*2)) else blue_halo:=false; if ((red_halo) or (green_halo) or (blue_halo)) then begin img_loaded[0,fitsX,fitsY]:= randg(required_bg[0],noise_level[0]); if head.naxis3-1>=1 then img_loaded[1,fitsX,fitsY]:= randg(required_bg[1],noise_level[1]); if head.naxis3-1>=2 then img_loaded[2,fitsX,fitsY]:= randg(required_bg[2],noise_level[2]); end; end; end;{fits loop} plot_fits(mainwindow.image1,false,true); Screen.Cursor:=crDefault; end {fits file} else application.messagebox(pchar('No area selected! Hold the right mouse button down while selecting an area.'),'',MB_OK); end; procedure Tmainwindow.display_adu1Click(Sender: TObject); begin display_adu:=display_adu1.checked; end; procedure Tmainwindow.localcoloursmooth2Click(Sender: TObject); var fitsX,fitsY,dum,k,counter : integer; flux,center_x,center_y,a,b,angle_from_center,mean_value,old_value,rgb,distance,val1,val2,lumr,strongest_colour_local : single; colour,mean : array[0..2] of single; begin if ((head.naxis3<>3) or (head.naxis=0)) then exit; if ((abs(stopX-startX)>2)and (abs(stopY-starty)>2)) then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; center_x:=(startx+stopX-1)/2; center_y:=(startY+stopY-1)/2; a:=(stopX-1-startx)/2; b:=(stopY-1-startY)/2; if startX>stopX then begin dum:=stopX; stopX:=startX; startX:=dum; end;{swap} if startY>stopY then begin dum:=stopY; stopY:=startY; startY:=dum; end; colour[0]:=0; colour[1]:=0; colour[2]:=0; mean[0]:=0; mean[1]:=0; mean[2]:=0; counter:=0; //mean background for fitsY:=startY to stopY-1 do for fitsX:=startX to stopX-1 do begin angle_from_center:=arctan(abs(fitsy-center_Y)/max(1,abs(fitsX-center_X))); distance:=-sqr(fitsX-center_X)+sqr(fitsY-center_Y) + sqr(a*cos(angle_from_center))+ sqr(b*sin(angle_from_center)); //distance outside ellipse if ((distance>=0) and (distance<=2)) then begin for k:=0 to head.naxis3-1 do {do all colors} mean[k]:=mean[k]+img_loaded[k,fitsX,fitsY]; counter:=counter+1; end; end; if counter=0 then exit; for k:=0 to head.naxis3-1 do mean[k]:=mean[k]/counter; //mean colour for fitsY:=startY to stopY-1 do for fitsX:=startX to stopX-1 do begin angle_from_center:=arctan(abs(fitsy-center_Y)/max(1,abs(fitsX-center_X))); if sqr(fitsX-center_X)+sqr(fitsY-center_Y) <= sqr(a*cos(angle_from_center))+ sqr(b*sin(angle_from_center)) then {within the ellipse} begin for k:=0 to head.naxis3-1 do {do all colors} begin colour[k]:=colour[k]+img_loaded[K,fitsX,fitsY]-mean[k]; end; end; end; rgb:=colour[0]+colour[1]+colour[2]+0.00001; {mean pixel flux. Factor 0.00001, prevent dividing by zero} for fitsY:=startY to stopY-1 do for fitsX:=startX to stopX-1 do begin angle_from_center:=arctan(abs(fitsy-center_Y)/max(1,abs(fitsX-center_X))); if sqr(fitsX-center_X)+sqr(fitsY-center_Y) <= sqr(a*cos(angle_from_center))+ sqr(b*sin(angle_from_center)) then {within the ellipse} begin flux:=(img_loaded[0,fitsX,fitsY]-mean[0] +img_loaded[1,fitsX,fitsY]-mean[1] +img_loaded[2,fitsX,fitsY]-mean[2]);//flux of one pixel // strongest_colour_local:=max(red,max(green,blue)); // top:=bg + strongest_colour_local*(flux/rgb);{calculate the highest colour value} // if top>=65534.99 then flux:=flux-(top-65534.99)*rgb/strongest_colour_local;{prevent values above 65535} {apply average colour to pixel} lumr:=flux/rgb; img_loaded[0,fitsX,fitsY]:={new_noise[k]}+ mean[0]+colour[0]*lumr; img_loaded[1,fitsX,fitsY]:={new_noise[k]}+ mean[1]+colour[1]*lumr; img_loaded[2,fitsX,fitsY]:={new_noise[k]}+ mean[2]+colour[2]*lumr; end; end; plot_fits(mainwindow.image1,false,true); Screen.Cursor:=crDefault; end{fits file} else application.messagebox(pchar('No area selected! Hold the right mouse button down while selecting an area.'),'',MB_OK); end; procedure Tmainwindow.move_images1Click(Sender: TObject); var I : integer; succ,err : boolean; thepath:string; begin OpenDialog1.Title := 'Select multiple files to move'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter :=dialog_filter_fits_tif; opendialog1.initialdir:=ExtractFileDir(filename2); esc_pressed:=false; if OpenDialog1.Execute then begin SelectDirectoryDialog1.Title := 'Select destination root directory. Files will be placed in new directory .\name, date'; SelectDirectoryDialog1.InitialDir:=opendialog1.initialdir;//image_store_path; esc_pressed:=false; err:=false; if SelectDirectoryDialog1.Execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } try { Do some lengthy operation } with OpenDialog1.Files do for I := 0 to Count - 1 do begin progress_indicator(100*i/(count),' Moving');{show progress} Application.ProcessMessages; if esc_pressed then begin err:=true; break; end; filename2:=Strings[I]; mainwindow.caption:=filename2+' file nr. '+inttostr(i+1)+'-'+inttostr(Count); if load_fits(filename2,true{light},false {data},false {update memo},0,head_2,img_temp) then {load image success} begin date_to_jd(head_2.date_obs,head_2.exposure);{convert date-obs to jd_start, jd_mid} if jd_start>2400000 then {valid JD} begin jd_start:=jd_start-(GetLocalTimeOffset/(24*60));//convert to local time. jd_start:=jd_start-0.5; //move 12 hour earlier to get date beginning night thepath:=RemoveSpecialChars(object_name)+', '+copy(JDtoDate(jd_start),1,10);// the path without special characters {$ifdef mswindows} thepath:=SelectDirectoryDialog1.filename+'\'+thepath; if DirectoryExists(thepath)=false then createDir(thePath); succ:=renamefile(filename2,thepath+'\'+extractfilename(filename2));//rename is the same as movefile other solution would be succ:=movefile(pchar(filename2),pchar(thepath+'\'+extractfilename(filename2))); {$else} {Linux, Darwin} thepath:=SelectDirectoryDialog1.filename+'/'+thepath; succ:=fileutil.copyfile(filename2,thepath+'/'+extractfilename(filename2), [cffPreserveTime,cffCreateDestDirectory]); //For mulitiple partitions. Renamefile works only for one partition in Linux if succ then succ:=sysutils.deletefile(filename2); {$endif} end else begin memo2_message('Error decoding Julian day!'); succ:=false; end; if succ=false then err:=true;//set error flag end; end; //for loop if err=false then mainwindow.caption:='Completed, all files moved.' else mainwindow.caption:='Finished, files date set but with errors or stopped!'; except end; end; Screen.Cursor:=crDefault; { Always restore to normal } progress_indicator(-100,'');{progresss done} end; img_temp:=nil; end; procedure Tmainwindow.set_modified_date1Click(Sender: TObject); var I : integer; err : boolean; begin OpenDialog1.Title := 'Select multiple FITS files to set "modified date" to DATE-OBS'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter := '8, 16 and -32 bit FITS files (*.fit*)|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS'; esc_pressed:=false; opendialog1.initialdir:=ExtractFileDir(filename2); esc_pressed:=false; err:=false; if OpenDialog1.Execute then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } try { Do some lengthy operation } with OpenDialog1.Files do for I := 0 to Count - 1 do begin progress_indicator(100*i/(count),' Solving');{show progress} Application.ProcessMessages; if esc_pressed then begin err:=true; break; end; filename2:=Strings[I]; mainwindow.caption:=filename2+' file nr. '+inttostr(i+1)+'-'+inttostr(Count); if load_fits(filename2,true{light},false {data},false {update memo},0,head_2,img_temp) then {load image success} begin date_to_jd(head_2.date_obs,head_2.exposure);{convert date-obs to jd_start, jd_mid} if jd_start>2400000 then {valid JD} begin jd_start:=jd_start-(GetLocalTimeOffset/(24*60))+head_2.exposure/(24*3600);//correct for timezone and exposure time if FileSetDate(filename2,DateTimeToFileDate(jd_start-2415018.5))<0 then { filedatatodatetime counts from 30 dec 1899.} err:=true; end else begin memo2_message('Error decoding Julian day!'); err:=true; end; end; end; if err=false then mainwindow.caption:='Completed, all files dates set.' else mainwindow.caption:='Finished, files date set but with errors or stopped!'; except end; Screen.Cursor:=crDefault; { Always restore to normal } progress_indicator(-100,'');{progresss done} end; img_temp:=nil; end; procedure Tmainwindow.FormClose(Sender: TObject; var CloseAction: TCloseAction); begin esc_pressed:=true;{stop processing. Required for reliable stopping by APT} save_settings2; end; procedure Tmainwindow.Export_image1Click(Sender: TObject); var filename3:ansistring; begin filename3:=ChangeFileExt(FileName2,''); savedialog1.filename:=filename3; savedialog1.initialdir:=ExtractFilePath(filename3); if head.naxis3>1 then savedialog1.Filter := 'PNG 16 bit stretched|*.png|PNG 16 bit|*.png|TIFF 16 bit stretched|*.tif|TIFF 16 bit|*.tif|TIFF 32 bit|*.tif|PPM 16 bit stretched|*.ppm;|PPM 16 bit|*.ppm|PFM 32 bit float|*.pfm' else savedialog1.Filter := 'PNG 16 bit stretched|*.png|PNG 16 bit|*.png|TIFF 16 bit stretched|*.tif|TIFF 16 bit|*.tif|TIFF 32 bit|*.tif|PGM 16 bit stretched|*.pgm;|PGM 16 bit|*.pgm|PFM 32 bit float|*.pfm'; savedialog1.filterindex:=export_index; {default 3 tiff stretched} if savedialog1.execute then begin Screen.Cursor:=crHourglass; application.processmessages; if head.naxis3>1 then {color} begin if savedialog1.filterindex=1 then begin img_temp:=stretch_img(img_loaded); save_png16(img_temp,ChangeFileExt(savedialog1.filename,'.png'),flip_horizontal1.checked,flip_vertical1.checked); {Change extension is only required due to bug in macOS only. 2021-10-9 See https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/39423} end else if savedialog1.filterindex=2 then save_png16(img_loaded,ChangeFileExt(savedialog1.filename,'.png'),flip_horizontal1.checked,flip_vertical1.checked) else if savedialog1.filterindex=3 then begin img_temp:=stretch_img(img_loaded); save_tiff16(img_temp,ChangeFileExt(savedialog1.filename,'.tif'),flip_horizontal1.checked,flip_vertical1.checked); end else if savedialog1.filterindex=4 then save_tiff16(img_loaded,ChangeFileExt(savedialog1.filename,'.tif'),flip_horizontal1.checked,flip_vertical1.checked) else if savedialog1.filterindex=5 then save_tiff_96(img_loaded,ChangeFileExt(savedialog1.filename,'.tif'),mainwindow.memo1.text {store full header in TIFF description} ,flip_horizontal1.checked,flip_vertical1.checked) {old uncompressed routine in unit_tiff} else if savedialog1.filterindex=6 then begin img_temp:=stretch_img(img_loaded); save_PPM_PGM_PFM(img_temp,48 {colour depth},ChangeFileExt(savedialog1.filename,'.ppm'),flip_horizontal1.checked,flip_vertical1.checked); end else if savedialog1.filterindex=7 then save_PPM_PGM_PFM(img_loaded,48 {colour depth},ChangeFileExt(savedialog1.filename,'.ppm'),flip_horizontal1.checked,flip_vertical1.checked) else if savedialog1.filterindex=8 then save_PPM_PGM_PFM(img_loaded,96 {colour depth},ChangeFileExt(savedialog1.filename,'.pfm'),flip_horizontal1.checked,flip_vertical1.checked); end {color} else begin {gray} if savedialog1.filterindex=1 then begin img_temp:=stretch_img(img_loaded); save_png16(img_temp,ChangeFileExt(savedialog1.filename,'.png'),flip_horizontal1.checked,flip_vertical1.checked); end else if savedialog1.filterindex=2 then save_png16(img_loaded,ChangeFileExt(savedialog1.filename,'.png'),flip_horizontal1.checked,flip_vertical1.checked) else if savedialog1.filterindex=3 then begin img_temp:=stretch_img(img_loaded); save_tiff16(img_temp,ChangeFileExt(savedialog1.filename,'.tif'),flip_horizontal1.checked,flip_vertical1.checked); end else if savedialog1.filterindex=4 then save_tiff16(img_loaded,ChangeFileExt(savedialog1.filename,'.tif'),flip_horizontal1.checked,flip_vertical1.checked) else if savedialog1.filterindex=5 then save_tiff_32(img_loaded,ChangeFileExt(savedialog1.filename,'.tif'),mainwindow.memo1.text {store full header in TIFF desciption} ,flip_horizontal1.checked,flip_vertical1.checked){old uncompressed routine in unit_tiff} else if savedialog1.filterindex=6 then begin img_temp:=stretch_img(img_loaded); save_PPM_PGM_PFM(img_temp,16{colour depth}, ChangeFileExt(savedialog1.filename,'.pgm'), flip_horizontal1.checked,flip_vertical1.checked); end else if savedialog1.filterindex=7 then save_PPM_PGM_PFM(img_loaded,16{colour depth},ChangeFileExt(savedialog1.filename,'.pgm'),flip_horizontal1.checked,flip_vertical1.checked) else if savedialog1.filterindex=8 then save_PPM_PGM_PFM(img_loaded,32 {colour depth},ChangeFileExt(savedialog1.filename,'.pfm'),flip_horizontal1.checked,flip_vertical1.checked); end; export_index:=savedialog1.filterindex;{remember} Screen.Cursor:=crDefault; end; end; function number_of_fields(const C: char; const S: string ): integer; {count number of fields in string with C as separator} var i: Integer; begin result := 0; for i := 1 to Length(S) do if S[i] = C then inc(result); if copy(s,length(s),1)<>c then inc(result,1); end; function retrieve_memo3_string(x,y :integer;default:string):string; {retrieve string at position x,y. Strings are separated by #9} var m,n1,n2 : integer; tal : string; begin result:='0'; m:=-1; n2:=0; tal:=mainwindow.memo3.Lines[y]+#9; repeat inc(m);{counter} n1:=n2+1; n2:=posex(#9,tal,n1); until ((m>=x) or (n2=0)); if ((n2<>0) and (n2>n1)) then result:=copy(tal,n1,n2-n1) else result:=default; end; Function INT_IEEE4_reverse(x: double):longword;{adapt intel floating point to non-intel float} var value1 : single; lw : longword absolute value1; begin value1:=x; result:=swapendian(lw); end; function save_fits(img: image_array;filen2:ansistring;type1:integer;override2:boolean): boolean;{save to 8, 16 OR -32 BIT fits file} var TheFile4 : tfilestream; I,j,k,bzero2, progressC,progress_value,dum, remain,minimum,maximum,dimensions, colours5,height5,width5 : integer; dd : single; line0 : ansistring; aline,empthy_line : array[0..80] of ansichar;{79 required but a little more to have always room} rgb : byteX3;{array [0..2] containing r,g,b colours} begin result:=false; {get dimensions directly from array} colours5:=length(img);{nr colours} width5:=length(img[0]);{width} height5:=length(img[0,0]);{height} if colours5=1 then dimensions:=2 else dimensions:=3; {number of dimensions or colours} if ((type1=24) and (colours5<3)) then begin application.messagebox(pchar('Abort, can not save grayscale image as colour image!!'),pchar('Error'),MB_OK); exit; end; if override2=false then begin if ((fileexists(filen2)) and (pos('ImageToSolve.fit',filen2)=0)) then if MessageDlg('ASTAP: Existing file ' +filen2+ ' Overwrite?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Exit; if extend_type=1 then {image extensions in the file. 1=image extension, 2=ascii table extension, 3=bintable extension} begin if MessageDlg('Only the current image of the multi-extension FITS will be saved. Displayed table will not be preserved. Continue?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then exit; mainwindow.Memo1.Lines[0]:= head1[0]; {replace XTENSION= with SIMPLE = } end; end; filename2:=filen2; {$IFDEF fpc} progress_indicator(0,''); {$else} {delphi} mainwindow.taskbar1.progressstate:=TTaskBarProgressState.Normal; mainwindow.taskbar1.progressvalue:=0; {show progress} {$endif} Screen.Cursor:=crHourglass; application.processmessages; try TheFile4:=tfilestream.Create(filen2, fmcreate ); try progressC:=0; {update FITs header} if type1<>24 then {standard FITS} begin update_integer('BITPIX =',' / Bits per entry ' ,type1); {16 or -32} update_integer('NAXIS =',' / Number of dimensions ' ,dimensions);{number of dimensions, 2 for mono, 3 for colour} update_integer('NAXIS1 =',' / length of x axis ' ,width5); update_integer('NAXIS2 =',' / length of y axis ' ,height5); if colours5<>1 then {color image} update_integer('NAXIS3 =',' / length of z axis (mostly colors) ' ,colours5) else remove_key('NAXIS3 ',false{all});{remove key word in header. Some program don't like naxis3=1} if type1=16 then bzero2:=32768 else bzero2:=0; update_integer('BZERO =',' / physical_value = BZERO + BSCALE * array_value ' ,bzero2); update_integer('BSCALE =',' / physical_value = BZERO + BSCALE * array_value ' ,1);{data is scaled to physical value in the load_fits routine} if type1<>8 then begin update_integer('DATAMIN =',' / Minimum data value ' ,round(head.datamin_org)); update_integer('DATAMAX =',' / Maximum data value ' ,round(head.datamax_org)); update_integer('CBLACK =',' / Black point used for displaying image. ' ,round(cblack) ); {2019-4-9} update_integer('CWHITE =',' / White point used for displaying the image. ' ,round(cwhite) ); end else begin {in most case reducing from 16 or flat to 8 bit} update_integer('DATAMIN =',' / Minimum data value ' ,0); update_integer('DATAMAX =',' / Maximum data value ' ,255); end; end {update existing header} else begin {special 8 bit with three colors combined in 24 bit} {update FITs header} update_integer('BITPIX =',' / Bits per entry ' ,8); update_integer('NAXIS =',' / Number of dimensions ' ,dimensions);{number dimensions, 2 for mono, 3 for color} update_integer('NAXIS1 =',' / length of x axis ' ,3); update_integer('NAXIS2 =',' / length of y axis ' ,width5); update_integer('NAXIS3 =',' / length of z axis (mostly colors) ' ,height5); update_integer('DATAMIN =',' / Minimum data value ' ,0); update_integer('DATAMAX =',' / Maximum data value ' ,255); update_integer('BZERO =',' / physical_value = BZERO + BSCALE * array_value ' ,0); update_integer('BSCALE =',' / physical_value = BZERO + BSCALE * array_value ' ,1);{data is scaled to physical value in the load_fits routine} {update existing header} end; // update_text ('CALSTAT =',#39+head.calstat+#39); {calibration status} {write memo1 header to file} for i:=0 to 79 do empthy_line[i]:=#32;{space} i:=0; repeat if i<mainwindow.memo1.lines.count then begin line0:=mainwindow.memo1.lines[i];{line0 is an ansistring. According the standard the FITS header should only contain ASCII charactors between decimal 32 and 126.} while length(line0)<80 do line0:=line0+' ';{extend to length 80 if required} strpcopy(aline,(copy(line0,1,80)));{copy 80 and not more} thefile4.writebuffer(aline,80);{write updated header from memo1} end else thefile4.writebuffer(empthy_line,80);{write empthy line} inc(i); until ((i>=mainwindow.memo1.lines.count) and (frac(i*80/2880)=0)); {write multiply records 36x80 or 2880 bytes} if type1=8 then begin minimum:=min(0,mainwindow.minimum1.position); {stretch later if required} maximum:=max(255,mainwindow.maximum1.position); for k:=0 to colours5-1 do {do all colors} for i:=0 to height5-1 do begin inc(progressC); progress_value:=round(progressC*100/(colours5*height5));{progress in %} {$IFDEF fpc} if frac(progress_value/5)=0 then progress_indicator(progress_value,'');{report increase insteps of 5%} {$else} {delphi} if frac(progress_value/5)=0 mainwindow.taskbar1.progressvalue:=progress_value; {$endif} for j:=0 to width5-1 do begin dd:=img[k,j,i];{save all colors} dum:=round((dd-minimum)*255/(maximum-minimum));{scale to 0..255} if dum<0 then dum:=0; if dum>255 then dum:=255; fitsbuffer[j]:=dum; end; thefile4.writebuffer(fitsbuffer,width5); {write as bytes} end; end else if type1=24 then begin minimum:=min(0,mainwindow.minimum1.position); {stretch later if required} maximum:=max(255,mainwindow.maximum1.position); for i:=0 to height5-1 do begin inc(progressC); progress_value:=round(progressC*100/(colours5*height5));{progress in %} {$IFDEF fpc} if frac(progress_value/5)=0 then progress_indicator(progress_value,'');{report increase insteps of 5%} {$else} {delphi} if frac(progress_value/5)=0 mainwindow.taskbar1.progressvalue:=progress_value; {$endif} for j:=0 to width5-1 do begin for k:=0 to 2 do {do all colors} begin dd:=img[k,j,i];{save all colors} dum:=round((dd-minimum)*255/(maximum-minimum));{scale to 0..255} if dum<0 then dum:=0; if dum>255 then dum:=255; rgb[k]:=dum; end; fitsbufferRGB[j]:=rgb; end; thefile4.writebuffer(fitsbufferRGB,width5+width5+width5); {write as bytes} end; end else if type1=16 then begin for k:=0 to colours5-1 do {do all colors} for i:=0 to height5-1 do begin inc(progressC); progress_value:=round(progressC*100/(colours5*height5));{progress in %} {$IFDEF fpc} if frac(progress_value/5)=0 then progress_indicator(progress_value,'');{report increase insteps of 5%} {$else} {delphi} if frac(progress_value/5)=0 mainwindow.taskbar1.progressvalue:=progress_value; {$endif} for j:=0 to width5-1 do begin dum:=max(0,min(65535,round(img[k,j,i]))) - bzero2;{limit data between 0 and 65535 and shift it to -32768.. 32767} { value - bzero result shortint word ($0000 - $8000) and $FFFF = $8000 (-32768 32768 ) note $0000 - $8000 ==> $FFFF8000. Highest bits are skipped ($0001 - $8000) and $FFFF = $8001 (-32767 32769 ) note $0001 - $8000 ==> $FFFF8001. Highest bits are skipped ($2000 - $8000) and $FFFF = $A000 (-24576 40960 ) ($7FFF - $8000) and $FFFF = $FFFF ( -1 65535 ) ($8000 - $8000) and $FFFF = $0000 ( 0 0 ) ($8001 - $8000) and $FFFF = $0001 ( 1 1 ) ($A000 - $8000) and $FFFF = $2000 ( 8192 8192 ) note $A000 - $8000 equals $2000. ($FFFE - $8000) and $FFFF = $7FFE (+32766 32766 ) ($FFFF - $8000) and $FFFF = $7FFF (+32767 32767 ) } fitsbuffer2[j]:=swap(word(dum));{in FITS file hi en low bytes are swapped} end; thefile4.writebuffer(fitsbuffer2,width5+width5); {write as bytes} end; end else if type1=-32 then begin for k:=0 to colours5-1 do {do all colors} for i:=0 to height5-1 do begin inc(progressC); progress_value:=round(progressC*100/(colours5*height5));{progress in %} {$IFDEF fpc} if frac(progress_value/5)=0 then progress_indicator(progress_value,'');{report increase in steps of 5%} {$else} {delphi} if frac(progress_value/5)=0 mainwindow.taskbar1.progressvalue:=progress_value; {$endif} for j:=0 to width5-1 do begin // img[0,j,i]:=341.7177734375; {equals non intel 3772492355} // if img[k,j,i]>4100 then img[k,j,i]:=4100; fitsbuffer4[j]:=INT_IEEE4_reverse(img[k,j,i]);{in FITS file hi en low bytes are swapped} end; thefile4.writebuffer(fitsbuffer4,width5*4); {write as bytes} end; end; remain:=round(2880*(1-frac(thefile4.position/2880)));{follow standard and only write in a multi of 2880 bytes} if ((remain<>0) and (remain<>2880)) then begin FillChar(fitsbuffer, remain, 0); thefile4.writebuffer(fitsbuffer,remain);{write some bytes} end; // if extend_type>=3 then {write bintable extension} // begin // rows:=number_of_fields(#9,mainwindow.memo3.lines[3]); {first lines could be blank or incomplete} // tal:=mainwindow.memo3.lines[0]; // i:=0; // strplcopy(aline,'XTENSION= '+#39+'BINTABLE'+#39+' / FITS Binary Table Extension ',80);{copy 80 and not more or less in position aline[80] should be #0 from string} // thefile4.writebuffer(aline,80); inc(i); // strplcopy(aline, 'BITPIX = 8 / 8-bits character format ',80); // thefile4.writebuffer(aline,80);inc(i); // strplcopy(aline, 'NAXIS = 2 / Tables are 2-D char. array ',80); // thefile4.writebuffer(aline,80);inc(i); // str(rows*4:13,tal); {write only 4 byte floats} // strplcopy( aline,'NAXIS1 = '+tal+' / Bytes in row ',80); // thefile4.writebuffer(aline,80);inc(i); // str(mainwindow.memo3.lines.count-1-1 :13,tal); // strplcopy(aline, 'NAXIS2 = '+tal +' / ',80); // thefile4.writebuffer(aline,80);inc(i); // strplcopy( aline,'PCOUNT = 0 / Parameter count always 0 ',80); // thefile4.writebuffer(aline,80);inc(i); // strplcopy(aline, 'GCOUNT = 1 / Group count always 1 ',80); // thefile4.writebuffer(aline,80);inc(i); // str(rows :3,tal); // strplcopy(aline,'TFIELDS = '+tal+ ' / No. of col in table ',80); // thefile4.writebuffer(aline,80);inc(i); // for k:=1 to rows do // begin // str(k:0,tal); tal:=copy(tal+' ',1,3); // strplcopy(aline,'TFORM'+tal+'= '+#39+'E '+#39+' / Format of field ',80); // thefile4.writebuffer(aline,80);inc(i); // lab:=retrieve_memo3_string(k-1,0,'col'+inttostr(k)); {retrieve type from memo3} // strplcopy(aline,'TTYPE'+tal+'= '+#39+lab+#39+' / Field label ',80); // thefile4.writebuffer(aline,80);inc(i); // lab:=retrieve_memo3_string(k-1,1,'unit'+inttostr(k)); {retrieve unit from memo3} // strplcopy(aline,'TUNIT'+tal+'= '+#39+lab+#39+' / Physical unit of field ',80); // thefile4.writebuffer(aline,80);inc(i); // end; // strplcopy( aline,'ORIGIN = ' +#39+'ASTAP '+#39+' / Written by ASTAP ',80); // thefile4.writebuffer(aline,80);inc(i); // strpcopy(aline,'END '); // thefile4.writebuffer(aline,80);inc(i); // while frac(i*80/2880)>0 do // begin // thefile4.writebuffer(empthy_line,80);{write empthy line} // inc(i); // end; // {write datablock} // i:=0; // for r:=2 to mainwindow.memo3.lines.count-1 do {rows} // begin // for j:=0 to rows-1 do {columns} // begin // tal:=retrieve_memo3_string(j {x},r {y},'0'); {retrieve string value from memo3 at position k,m} // fitsbuffer4[j]:=INT_IEEE4_reverse(strtofloat2(tal));{adapt intel floating point to non-intel floating. Add 1 to get FITS coordinates} // end; // thefile4.writebuffer(fitsbuffer[0],rows*4);{write one row} // i:=i+rows*4; {byte counter} // end; // j:=80-round(80*frac(i/80));{remainder in bytes till written muliple of 80 char} // thefile4.writebuffer(empthy_line,j);{write till multiply of 80} // i:=(i + j*80) div 80 ;{how many 80 bytes record left till multiple of 2880} // while frac(i*80/2880)>0 do {write till 2880 block is written} // begin // thefile4.writebuffer(empthy_line,80);{write empthy line} // inc(i); // end; // end; finally TheFile4.free; end; unsaved_import:=false;{file is available for astrometry.net} result:=true; except memo2_message('█ █ █ █ █ █ Write error!! █ █ █ █ █ █'); end; mainwindow.image1.stretch:=true; Screen.Cursor:=crDefault; {$IFDEF fpc} progress_indicator(-100,'');{back to normal} {$else} {delphi} mainwindow.taskbar1.progressstate:=TTaskBarProgressState.None; {$endif} end; function TextfileSize(const name: string): LongInt; var SRec: TSearchRec; begin if FindFirst(name, faAnyfile, SRec) = 0 then begin Result := SRec.Size; Sysutils.FindClose(SRec); end else Result := 0; end; procedure Tmainwindow.solve_button1Click(Sender: TObject); begin astrometric_solve_image1Click(Sender); end; procedure Tmainwindow.Stackimages1Click(Sender: TObject); begin listviews_begin_update; {speed up making stackmenu visible having a many items} stackmenu1.visible:=true; stackmenu1.setfocus; listviews_end_update;{speed up making stackmenu visible having a many items} end; procedure Tmainwindow.Undo1Click(Sender: TObject); begin restore_img; end; procedure Tmainwindow.Saveasfits1Click(Sender: TObject); begin if extend_type>0 then {multi extension file} savedialog1.filename:=ChangeFileExt(FileName2,'.fits')+'_extract'+inttostr(mainwindow.updown1.position)+'.fits' {give it a new name} else if pos('.fit',filename2)=0 then savedialog1.filename:=ChangeFileExt(FileName2,'.fits') else savedialog1.filename:=FileName2; savedialog1.initialdir:=ExtractFilePath(filename2); savedialog1.Filter := 'IEEE Float (-32) FITS files (*.fit*)|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS|16 bit FITS files (*.fit*)|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS|8 bit FITS files (*.fit*)|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS|8 bit FITS files (special, naxis1=3)(*.fit*)|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS'; if nrbits=16 then SaveDialog1.FilterIndex:=2 else if nrbits=-32 then SaveDialog1.FilterIndex:=1 else if nrbits=8 then SaveDialog1.FilterIndex:=3; if savedialog1.execute then begin if SaveDialog1.FilterIndex=1 then save_fits(img_loaded,savedialog1.filename,-32,false) else if SaveDialog1.FilterIndex=2 then save_fits(img_loaded,savedialog1.filename,16,false) else if SaveDialog1.FilterIndex=3 then begin if ((nrbits=8) or (IDYES= Application.MessageBox('8 bit will reduce image quality. Select yes to continue', 'Save as 8 bit FITS', MB_ICONQUESTION + MB_YESNO) )) then {ask queastion if nrbits is reduced} save_fits(img_loaded,savedialog1.filename,8,false); end else if SaveDialog1.FilterIndex=4 then {special naxis1=3} begin if ((nrbits=8) or (IDYES= Application.MessageBox('8 bit will reduce image quality. Select yes to continue', 'Save as 8 bit FITS', MB_ICONQUESTION + MB_YESNO) )) then {ask queastion if nrbits is reduced} save_fits(img_loaded,savedialog1.filename,24,false); end; add_recent_file(savedialog1.filename);{add to recent file list} end; mainwindow.SaveFITSwithupdatedheader1.Enabled:=true; {menu enable, header can be updated again} end; procedure Tmainwindow.minimum1Change(Sender: TObject); begin min2.text:=inttostr(minimum1.position); shape_histogram1.left:=round(histogram1.left+0.5+(histogram1.width-1) * minimum1.position/minimum1.max); end; procedure Tmainwindow.maximum1Change(Sender: TObject); begin max2.text:=inttostr(maximum1.position); shape_histogram1.left:=round(histogram1.left+0.5+(histogram1.width-1) * maximum1.position/maximum1.max); end; procedure Tmainwindow.maximum1Scroll(Sender: TObject; ScrollCode: TScrollCode; var ScrollPos: Integer); begin if head.naxis<>0 then begin {$IfDef Darwin}// for OS X, if true then {temporary fix. scendscroll doesnt work. See bug report https://bugs.freepascal.org/view.php?id=37454} {$ELSE} if scrollcode=scEndScroll then {$ENDIF} begin plot_fits(mainwindow.image1,false,true); shape_histogram1.visible:=false; end else shape_histogram1.visible:=true; end; mainwindow.range1.itemindex:=7; {manual} end; {#######################################} begin head.height:=100; head.width:=100; // head.naxis:=2; {numer of dimensions} // head.naxis3:=3;{number of colors} head.crpix1:=0;{reference pixel} head.crpix2:=0; head.cdelt1:=0;{deg/pixel for x} head.cdelt2:=0; head.ra0 :=0; head.dec0:=0; {plate center values} {$ifdef CPUARM} size_backup:= 0; {0, one backup images for ctrl-z} index_backup:=size_backup; {$else} size_backup:=2; {0,1,2 three backup images for ctrl-z} index_backup:=size_backup; {$endif} end. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_stars_wide_field.pas�����������������������������������������������������0000644�0001751�0001751�00006142522�14344743400�020564� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_stars_wide_field; {$mode delphi} interface uses Classes, SysUtils; var wide_field_stars : array of single;{contains: mag1, ra1,dec1, mag2,ra2,dec2,mag3........} var wide_database: string=''; function read_stars_wide_field: boolean; //write array to disk implementation uses astap_main, unit_star_database;{for name_database only} function read_stars_wide_field : boolean; var FS : TFileStream; iSize : Integer; // For wide field the stars are stored in a single file w08.001 down to magnitude 8. The stars are sorted from bright to faint. // The file starts with a 4 byte integer specifying the number of records=stars and has for the W08 value 41246. // Each star is stored in a record of three singles (4 byte floats). Starting with magnitude [x10] then RA [radians] and finally DEC[radians]. First star is Sirius): begin try FS := TFileStream.Create(database_path+name_database+'_0101.001',fmOpenRead or fmShareDenyWrite); {read but do not lock file} FS.ReadBuffer(iSize,SizeOf(iSize)); SetLength(wide_field_stars,iSize*3);{set length dynamic array} FS.ReadBuffer(wide_field_stars[0],isize*3*sizeof(single){bytes});{this only works with one dimensional arrays} fs.free; except result:=false; exit; end; wide_database:=name_database;{remember which database is in memory} result:=true; end; { //USED FOR CREATION OF THE WIDE FIELD DATABASE var star_array : array[0..41264,0..2] of single = //all stars up to magnitude 8 ( ( -15 , 1.767725252 , -0.291899504 ), ( -6 , 1.675309906 , -0.919709903 ), ( 0 , 4.873596766 , 0.676937966 ), ( 0 , 3.837100429 , -1.061694783 ), ( 0 , 3.73338603 , 0.334553937 ), ( 1 , 1.381830995 , 0.802764629 ), ( 3 , 1.372430608 , -0.143145706 ), ( 4 , 2.003995701 , 0.091067934 ), ( 5 , 0.426377942 , -0.998974732 ), ( 6 , 3.681865855 , -1.053711359 ), ( 9 , 1.549732466 , 0.129278955 ), ( 10 , 5.195838237 , 0.15482814 ), ( 10 , 3.513311938 , -0.194805659 ), ( 12 , 3.257639986 , -1.101288685 ), ( 12 , 3.349803453 , -1.041767002 ), ( 13 , 1.203938869 , 0.288118709 ), ( 13 , 3.837016909 , -1.061693304 ), ( 13 , 6.011181389 , -0.517025453 ), ( 13 , 4.31710404 , -0.461328283 ), ( 14 , 5.416768855 , 0.790291164 ), ( 14 , 2.654492042 , 0.208867759 ), ( 14 , 1.826600026 , -0.505657973 ), ( 15 , 2.030237452 , 0.489143865 ), ( 15 , 3.257677825 , -1.101295366 ), ( 16 , 4.597233711 , -0.647587482 ), ( 16 , 1.41865076 , 0.110821598 ), ( 16 , 1.423720168 , 0.49927308 ), ( 16 , 1.467008574 , -0.020977593 ), ( 17 , 2.413733433 , -1.216781622 ), ( 17 , 2.135987445 , -0.826178112 ), ( 18 , 4.81785329 , -0.600139807 ), ( 18 , 1.486841177 , -0.03390398 ), ( 19 , 3.277586156 , -0.996845623 ), ( 19 , 5.347898357 , -0.990224574 ), ( 19 , 1.568730303 , 0.784480582 ), ( 19 , 1.669842244 , -0.313389946 ), ( 19 , 1.735344343 , 0.286212838 ), ( 20 , 0.891531101 , 0.870238602 ), ( 20 , 4.613424778 , -0.750453704 ), ( 20 , 1.869210254 , -0.460648381 ), ( 20 , 2.289458152 , -0.954861673 ), ( 20 , 2.896023955 , 1.077754582 ), ( 20 , 4.953531785 , -0.458970775 ), ( 20 , 0.036616818 , 0.507704077 ), ( 20 , 2.192624598 , -1.038633665 ), ( 21 , 0.821041922 , 0.714810732 ), ( 22 , 0.662293435 , 1.557953065 ), ( 22 , 4.401136864 , -1.204764948 ), ( 22 , 3.093793779 , 0.254316638 ), ( 22 , 3.577431731 , -0.933166162 ), ( 22 , 4.19024548 , -0.394821775 ), ( 22 , 3.820114449 , -0.735796768 ), ( 23 , 0.554890706 , 0.409502433 ), ( 23 , 0.190185411 , -0.313926758 ), ( 23 , 2.476565439 , -0.151117012 ), ( 23 , 3.69426906 , -0.634839556 ), ( 23 , 3.886440361 , 1.294257217 ), ( 23 , 0.304289848 , 0.621682363 ), ( 24 , 5.945782904 , -0.818290994 ), ( 24 , 0.040005516 , 1.032365646 ), ( 24 , 0.540609991 , 0.738795133 ), ( 24 , 3.645719772 , -0.825343276 ), ( 24 , 5.795524219 , -0.819634845 ), ( 25 , 2.705180721 , 0.346280774 ), ( 25 , 2.391079517 , -0.758039919 ), ( 25 , 4.697581122 , 0.898651696 ), ( 25 , 3.210566751 , -0.306165342 ), ( 25 , 3.610812672 , 0.860677736 ), ( 25 , 3.377354844 , 0.976682493 ), ( 25 , 1.517374042 , -0.168766482 ), ( 26 , 5.690583577 , 0.172351424 ), ( 26 , 1.56957751 , 0.649484963 ), ( 26 , 4.584821683 , -0.650938357 ), ( 27 , 0.500207854 , 0.363173041 ), ( 27 , 0.247443199 , 1.059706724 ), ( 27 , 1.448652186 , -0.005219911 ), ( 27 , 4.080314638 , -0.718495366 ), ( 27 , 4.985581054 , -0.521506882 ), ( 28 , 6.037880458 , 0.49015388 ), ( 28 , 0.795343079 , 0.071369881 ), ( 28 , 4.495875327 , -0.274443925 ), ( 28 , 2.43076139 , -1.034546983 ), ( 28 , 2.110030759 , -0.698185344 ), ( 28 , 3.848139614 , -0.827081393 ), ( 28 , 4.080319623 , -0.718497415 ), ( 28 , 4.212513925 , -0.345672068 ), ( 29 , 4.078361069 , 0.466248581 ), ( 29 , 4.603030085 , 0.219196073 ), ( 29 , 2.452681932 , -0.960116292 ), ( 29 , 1.937729779 , -0.511435279 ), ( 29 , 4.63597739 , -0.681203606 ), ( 29 , 3.207667893 , -1.025363526 ), ( 29 , 3.178056509 , -0.885274785 ), ( 29 , 3.322722802 , -0.854509425 ), ( 29 , 4.183778845 , -0.455780384 ), ( 30 , 0.992590577 , 0.420710473 ), ( 30 , 1.021594714 , 0.556473305 ), ( 30 , 1.03783648 , 0.698306866 ), ( 30 , 0.176757604 , 0.986758716 ), ( 30 , 0.040126261 , 1.032344376 ), ( 30 , 3.114686078 , 0.937151005 ), ( 30 , 2.887845085 , 0.98406303 ), ( 30 , 3.507813453 , 0.958625624 ), ( 30 , 5.578881022 , 1.092328206 ), ( 30 , 1.481998667 , -0.59470826 ), ( 30 , 1.951058894 , 0.144672899 ), ( 30 , 1.473253248 , 0.369005382 ), ( 30 , 4.350928224 , -0.184427445 ), ( 30 , 2.805422785 , -1.123893965 ), ( 30 , 3.303828074 , -1.206644264 ), ( 30 , 3.920582044 , -0.752832696 ), ( 30 , 4.345356516 , -0.492464162 ), ( 30 , 3.887182444 , -0.279987133 ), ( 31 , 4.36895654 , 0.55155785 ), ( 31 , 0.972698524 , 0.834046327 ), ( 31 , 5.170434341 , 0.787687042 ), ( 31 , 0.05775245 , 0.265002484 ), ( 31 , 6.042164183 , 0.265378761 ), ( 31 , 1.845792506 , -0.415968991 ), ( 31 , 1.45181014 , -0.311057441 ), ( 31 , 1.463602675 , -0.103147218 ), ( 31 , 1.343236433 , -0.088784664 ), ( 31 , 3.271873533 , -0.288265548 ), ( 31 , 2.94136451 , 0.358196314 ), ( 31 , 4.009477956 , -1.198687998 ), ( 31 , 3.343515005 , -1.188711874 ), ( 31 , 4.589520425 , -0.870508141 ), ( 31 , 4.407612434 , -0.598549702 ), ( 31 , 4.281241795 , -0.446680037 ), ( 31 , 4.00118969 , -0.163764302 ), ( 32 , 1.337428361 , 0.719669086 ), ( 32 , 0.374514586 , 1.051298111 ), ( 32 , 1.983563096 , 0.55655938 ), ( 32 , 3.38602376 , 0.668788503 ), ( 32 , 4.488922889 , 1.146940898 ), ( 32 , 5.437656345 , 0.592918023 ), ( 32 , 5.332977585 , 0.7026115 ), ( 32 , 5.622840904 , 1.231516877 ), ( 32 , 1.659430341 , -0.524704235 ), ( 32 , 4.911607372 , -0.471078021 ), ( 32 , 5.016791232 , -0.366935766 ), ( 32 , 4.997793738 , 0.241951739 ), ( 32 , 0.518274463 , -1.074594659 ), ( 32 , 4.167545344 , -1.107123683 ), ( 32 , 3.923329768 , -0.734858635 ), ( 32 , 4.415116229 , -0.664054612 ), ( 32 , 4.020241846 , -0.709435344 ), ( 32 , 3.493230029 , -0.640756969 ), ( 32 , 5.733111916 , -0.652142125 ), ( 33 , 0.565255483 , 0.610640438 ), ( 33 , 3.64199361 , 0.321072911 ), ( 33 , 3.861477152 , 0.47253687 ), ( 33 , 4.368893487 , 0.551602919 ), ( 33 , 4.368894184 , 0.551604047 ), ( 33 , 3.805139842 , 0.668623457 ), ( 33 , 4.293468438 , 1.073632417 ), ( 33 , 4.017429306 , 1.253742337 ), ( 33 , 3.291635479 , -0.408357373 ), ( 33 , 4.546624668 , -0.436325968 ), ( 33 , 4.120162311 , 0.112153925 ), ( 33 , 4.516175563 , 0.433506878 ), ( 33 , 0.11357983 , -1.348301393 ), ( 33 , 1.195540751 , -0.960716648 ), ( 33 , 0.114716153 , -0.738428168 ), ( 33 , 2.561711902 , -1.13571985 ), ( 33 , 2.757722074 , -1.076610898 ), ( 33 , 3.0359096 , -1.099904492 ), ( 33 , 2.82207746 , -0.86255217 ), ( 33 , 1.7355606 , -0.753911769 ), ( 33 , 2.127301586 , -0.42418479 ), ( 33 , 3.343525466 , -1.188709474 ), ( 33 , 4.561392504 , -0.983978549 ), ( 33 , 4.189320385 , -0.670152229 ), ( 33 , 4.025953971 , -0.779982812 ), ( 33 , 3.619392402 , -0.727590344 ), ( 33 , 5.703073963 , -0.281510246 ), ( 34 , 1.317588061 , 0.764860683 ), ( 34 , 0.80632614 , 0.933862878 ), ( 34 , 0.499152913 , 1.111250653 ), ( 34 , 2.352657052 , 0.838462042 ), ( 34 , 4.320636981 , 0.37506266 ), ( 34 , 4.583374097 , 0.912832885 ), ( 34 , 4.969579002 , 0.570540583 ), ( 34 , 5.998038293 , -0.276128587 ), ( 34 , 1.43223992 , -0.362330785 ), ( 34 , 1.365427597 , -0.282840636 ), ( 34 , 3.412855523 , 0.191275629 ), ( 34 , 2.941919788 , 0.269287282 ), ( 34 , 4.834427911 , -0.443714806 ), ( 34 , 5.285318469 , -0.014336687 ), ( 34 , 5.001452351 , -0.085227635 ), ( 34 , 5.176036167 , 0.185236145 ), ( 34 , 4.640269215 , 0.07973381 ), ( 34 , 2.677919916 , -1.222391205 ), ( 34 , 2.404048585 , -1.029164918 ), ( 34 , 1.781057157 , -1.081058966 ), ( 34 , 2.080333076 , -0.924713531 ), ( 34 , 4.658216832 , -0.700348877 ), ( 34 , 3.619880982 , -0.741308719 ), ( 35 , 1.29587989 , 0.578855381 ), ( 35 , 2.649987977 , 0.292563587 ), ( 35 , 2.556252097 , 0.414937697 ), ( 35 , 2.692565334 , 0.748991823 ), ( 35 , 2.499376764 , 0.901873601 ), ( 35 , 3.208924418 , 0.995407934 ), ( 35 , 5.947221595 , 0.527457401 ), ( 35 , 5.635491022 , -0.097236333 ), ( 35 , 5.784825922 , -0.005583719 ), ( 35 , 5.940504794 , 0.189042041 ), ( 35 , 1.415797752 , -0.041838258 ), ( 35 , 1.264723041 , 0.121498667 ), ( 35 , 1.050165016 , 0.217996109 ), ( 35 , 1.462315458 , 0.173383489 ), ( 35 , 1.768394404 , 0.22504736 ), ( 35 , 3.554736073 , -0.01039355 ), ( 35 , 3.323323042 , -0.025301826 ), ( 35 , 3.323297375 , -0.025286484 ), ( 35 , 4.803997437 , -0.52060191 ), ( 35 , 4.251379406 , -0.064495654 ), ( 35 , 1.125285555 , -0.589893114 ), ( 35 , 0.595654141 , -0.899059614 ), ( 35 , 0.777803226 , -0.703446534 ), ( 35 , 2.604300489 , -0.952387071 ), ( 35 , 2.270201614 , -0.923658982 ), ( 35 , 1.788267363 , -0.567379449 ), ( 35 , 1.907392812 , -0.647472266 ), ( 35 , 3.850607904 , -1.134058484 ), ( 35 , 4.417146141 , -0.663533916 ), ( 35 , 3.749853794 , -0.803866016 ), ( 35 , 3.485962178 , -0.404424581 ), ( 35 , 5.840297373 , -1.05173292 ), ( 35 , 4.830080526 , -0.802307426 ), ( 35 , 5.32767155 , -0.257984187 ), ( 36 , 4.514499427 , 0.251165088 ), ( 36 , 1.486844381 , -0.03391526 ), ( 36 , 0.981207714 , 0.420851554 ), ( 36 , 0.999912064 , 0.419805727 ), ( 36 , 0.161321788 , 0.94067739 ), ( 36 , 2.336083708 , 0.103771417 ), ( 36 , 2.921947474 , 0.776641757 ), ( 36 , 2.372010155 , 0.823032234 ), ( 36 , 5.108235827 , 0.487987014 ), ( 36 , 5.029000157 , 1.180927823 ), ( 36 , 5.804112319 , 0.108174928 ), ( 36 , 1.385817648 , -0.11945861 ), ( 36 , 1.478058648 , -0.045379933 ), ( 36 , 1.283914956 , 0.042597919 ), ( 36 , 1.270626088 , 0.097827639 ), ( 36 , 1.172274066 , 0.276996558 ), ( 36 , 1.670984745 , 0.392927697 ), ( 36 , 1.762485709 , 0.438619486 ), ( 36 , 3.185760415 , -0.394788161 ), ( 36 , 4.737724605 , -0.531024284 ), ( 36 , 5.085465573 , 0.054369609 ), ( 36 , 4.143493764 , -0.05987068 ), ( 36 , 1.038607076 , -0.235781636 ), ( 36 , 1.788690126 , -0.883398781 ), ( 36 , 2.284600236 , -0.579210442 ), ( 36 , 4.586268727 , -1.059144862 ), ( 36 , 4.560979059 , -0.969182411 ), ( 36 , 4.50362168 , -0.754701127 ), ( 36 , 4.095658689 , -0.519721982 ), ( 36 , 5.432142174 , -1.155462785 ), ( 36 , 5.971468333 , -0.895655837 ), ( 36 , 5.399914701 , -0.825384406 ), ( 36 , 4.741321127 , -0.874262423 ), ( 37 , 4.804192301 , 1.269441786 ), ( 37 , 0.903954031 , 0.169863162 ), ( 37 , 0.741700509 , 0.47577656 ), ( 37 , 0.49341334 , 0.516229699 ), ( 37 , 0.214506014 , 1.008998408 ), ( 37 , 2.298475865 , 0.112025383 ), ( 37 , 2.448032148 , 0.600265404 ), ( 37 , 2.690821639 , 0.408708282 ), ( 37 , 2.715409689 , 0.724307006 ), ( 37 , 1.920394847 , 0.383661801 ), ( 37 , 1.80113146 , 0.592730029 ), ( 37 , 2.226415789 , 1.059718902 ), ( 37 , 4.128530474 , 0.269155731 ), ( 37 , 4.516241404 , 0.642441418 ), ( 37 , 4.622785978 , 0.802962406 ), ( 37 , 3.684327541 , 1.123572378 ), ( 37 , 5.408950152 , 0.277715868 ), ( 37 , 5.55423245 , 0.527553398 ), ( 37 , 6.029771315 , 0.738727531 ), ( 37 , 4.930904146 , 0.582287936 ), ( 37 , 6.193039465 , 1.354961105 ), ( 37 , 0.712521921 , 0.056464357 ), ( 37 , 1.531359458 , -0.624225732 ), ( 37 , 1.332828519 , -0.390457293 ), ( 37 , 1.513878004 , -0.258691926 ), ( 37 , 1.911535406 , 0.288679831 ), ( 37 , 2.834534661 , -0.282608262 ), ( 37 , 3.866975601 , 0.033034575 ), ( 37 , 2.761158849 , 0.162430147 ), ( 37 , 4.789282587 , -0.641632689 ), ( 37 , 4.668142557 , -0.646525687 ), ( 37 , 4.614587022 , -0.268762667 ), ( 37 , 4.805304818 , -0.050679038 ), ( 37 , 4.268743051 , -0.081894864 ), ( 37 , 4.440379647 , 0.163623918 ), ( 37 , 4.653263023 , 0.483723973 ), ( 37 , 1.110148126 , -1.090368362 ), ( 37 , 3.07876174 , -1.164632327 ), ( 37 , 2.492418766 , -0.995436946 ), ( 37 , 2.490125773 , -0.706273068 ), ( 37 , 3.283235675 , -1.258958858 ), ( 37 , 4.444565322 , -0.97721665 ), ( 37 , 4.175194431 , -0.509884654 ), ( 37 , 3.659425244 , -0.781971798 ), ( 37 , 3.657643745 , -0.734799164 ), ( 38 , 2.192627911 , -1.038635152 ), ( 38 , 0.985357908 , 0.425291842 ), ( 38 , 0.978776701 , 0.563535031 ), ( 38 , 2.53573003 , 0.172648818 ), ( 38 , 2.493792229 , 1.100640336 ), ( 38 , 3.844741673 , 0.239603502 ), ( 38 , 4.284429244 , 0.334290384 ), ( 38 , 4.113483569 , 0.458948415 ), ( 38 , 4.048390728 , 0.508001374 ), ( 38 , 3.935475533 , 0.704944752 ), ( 38 , 4.27492257 , 0.808325321 ), ( 38 , 4.035764634 , 1.029154093 ), ( 38 , 3.287666587 , 1.218035773 ), ( 38 , 5.399834412 , 0.254730221 ), ( 38 , 5.89614832 , 0.877597161 ), ( 38 , 5.103809187 , 0.902870447 ), ( 38 , 5.43362294 , 1.079389546 ), ( 38 , 4.804403315 , 1.269400267 ), ( 38 , 0.453865521 , -0.278057877 ), ( 38 , 5.854095772 , -0.024212452 ), ( 38 , 0.171620152 , 0.538612663 ), ( 38 , 1.502965886 , -0.391842905 ), ( 38 , 1.205669328 , -0.058512039 ), ( 38 , 1.63570633 , 0.392816956 ), ( 38 , 3.101083102 , 0.030767383 ), ( 38 , 4.708140498 , -0.170596192 ), ( 38 , 4.1487333 , 0.078158665 ), ( 38 , 4.659557911 , 0.047241909 ), ( 38 , 4.744450707 , 0.16693019 ), ( 38 , 4.745299423 , 0.502001158 ), ( 38 , 2.405397212 , -1.08763463 ), ( 38 , 2.334578177 , -1.058443442 ), ( 38 , 2.971444551 , -0.951048176 ), ( 38 , 1.960127759 , -0.755729635 ), ( 38 , 2.047681868 , -0.433885393 ), ( 38 , 3.98057164 , -0.909312188 ), ( 38 , 3.979047285 , -0.850641437 ), ( 38 , 3.19242636 , -0.914003314 ), ( 38 , 3.263932838 , -0.876691614 ), ( 38 , 3.692998809 , -0.465712145 ), ( 38 , 5.274429398 , -1.155231981 ), ( 38 , 5.004462804 , -0.48297056 ), ( 38 , 5.672741399 , -0.2908144 ), ( 38 , 5.44401696 , -0.165736807 ), ( 39 , 0.893658485 , 0.157574483 ), ( 39 , 1.172075132 , 0.334757341 ), ( 39 , 0.807997989 , 0.677882547 ), ( 39 , 0.982591173 , 0.743135845 ), ( 39 , 0.247657181 , 0.671944361 ), ( 39 , 2.960419129 , 0.577607985 ), ( 39 , 2.438412205 , 0.642311177 ), ( 39 , 2.026530289 , 0.425819227 ), ( 39 , 2.578607919 , 1.030401906 ), ( 39 , 3.994646405 , 0.58143997 ), ( 39 , 4.451846293 , 0.539770822 ), ( 39 , 4.375965201 , 0.679311151 ), ( 39 , 5.380907637 , 0.197276838 ), ( 39 , 5.230573102 , 0.340204882 ), ( 39 , 5.97778609 , 0.429373456 ), ( 39 , 5.790217818 , 0.442358753 ), ( 39 , 5.562341579 , 0.664052011 ), ( 39 , 5.485456659 , 0.718501162 ), ( 39 , 5.806951856 , 1.015804287 ), ( 39 , 5.97633789 , 1.155399888 ), ( 39 , 0.299306292 , -0.17773089 ), ( 39 , 0.695875764 , 0.00573323 ), ( 39 , 1.555104522 , -0.24725613 ), ( 39 , 2.206352183 , -0.068182859 ), ( 39 , 1.245741596 , -0.056806077 ), ( 39 , 1.060970224 , 0.104532548 ), ( 39 , 3.023761298 , -0.556025432 ), ( 39 , 2.964167966 , -0.25790908 ), ( 39 , 3.228441058 , -0.011639927 ), ( 39 , 3.38415156 , 0.059290509 ), ( 39 , 2.418887025 , 0.040353459 ), ( 39 , 4.964287993 , -0.368382312 ), ( 39 , 4.772443579 , -0.367546046 ), ( 39 , 0.9915399 , -1.295700422 ), ( 39 , 1.515316761 , -0.891268547 ), ( 39 , 0.298388772 , -0.964216563 ), ( 39 , 0.385564182 , -0.756070895 ), ( 39 , 0.97409314 , -0.170313116 ), ( 39 , 2.692525738 , -1.070449949 ), ( 39 , 2.295225462 , -0.803575686 ), ( 39 , 2.780726905 , -0.841696681 ), ( 39 , 2.682266994 , -0.735160558 ), ( 39 , 2.047437075 , -0.809364214 ), ( 39 , 1.897218881 , -0.467270216 ), ( 39 , 3.830499711 , -0.86264698 ), ( 39 , 3.965576323 , -0.79028405 ), ( 39 , 4.149339459 , -0.586909307 ), ( 39 , 3.222030497 , -1.117065368 ), ( 39 , 3.379795699 , -0.997944664 ), ( 39 , 3.848271205 , -0.659624783 ), ( 39 , 3.306067804 , -0.847206421 ), ( 39 , 3.944740769 , -0.441258778 ), ( 39 , 4.218490383 , -0.360748246 ), ( 39 , 5.238606546 , -1.272544345 ), ( 39 , 5.072967165 , -0.775957403 ), ( 39 , 5.0784169 , -0.708896388 ), ( 39 , 5.314771926 , -0.218948681 ), ( 40 , 3.733385627 , 0.334552759 ), ( 40 , 1.568743836 , 0.947436323 ), ( 40 , 1.042681805 , 0.624671641 ), ( 40 , 1.084994619 , 0.832736479 ), ( 40 , 0.59915394 , 0.590738641 ), ( 40 , 0.427585072 , 0.848708833 ), ( 40 , 0.452309565 , 0.884683568 ), ( 40 , 0.53856981 , 1.263992764 ), ( 40 , 4.173352861 , 0.273191251 ), ( 40 , 3.804061106 , 0.530096095 ), ( 40 , 3.507868473 , 0.958563146 ), ( 40 , 6.185318072 , 0.810796579 ), ( 40 , 0.084768442 , -0.154010887 ), ( 40 , 0.366611859 , -0.142849271 ), ( 40 , 0.399175532 , 0.267834902 ), ( 40 , 5.913868563 , -0.002057388 ), ( 40 , 6.096377237 , 0.057288905 ), ( 40 , 1.84899418 , -0.272853717 ), ( 40 , 2.166451302 , 0.160311985 ), ( 40 , 1.133577176 , 0.272750976 ), ( 40 , 1.85052297 , 0.359019322 ), ( 40 , 2.664176146 , -0.215625955 ), ( 40 , 2.972007626 , 0.105230046 ), ( 40 , 4.994632064 , -0.379467774 ), ( 40 , 5.068749812 , -0.311489762 ), ( 40 , 5.215543398 , 0.111760836 ), ( 40 , 4.323673903 , 0.034620553 ), ( 40 , 4.715204585 , 0.051164395 ), ( 40 , 4.702647291 , 0.510469497 ), ( 40 , 1.45571468 , -1.090651657 ), ( 40 , 0.506093484 , -0.900709167 ), ( 40 , 0.114351539 , -0.762352924 ), ( 40 , 0.928965857 , -0.165075266 ), ( 40 , 2.366869217 , -1.158841681 ), ( 40 , 2.739634945 , -1.025195758 ), ( 40 , 2.506483061 , -1.033753512 ), ( 40 , 2.271659202 , -0.814173565 ), ( 40 , 2.060434342 , -0.708180095 ), ( 40 , 2.023742713 , -0.505356563 ), ( 40 , 1.840096068 , -0.487554173 ), ( 40 , 3.413401884 , -1.248765962 ), ( 40 , 3.949320182 , -0.821200778 ), ( 40 , 4.650135026 , -1.129651515 ), ( 40 , 4.426934505 , -0.739372173 ), ( 40 , 4.022124422 , -0.632890747 ), ( 40 , 3.234751811 , -1.054187781 ), ( 40 , 3.754879229 , -0.661224452 ), ( 40 , 4.088536905 , -0.491048894 ), ( 40 , 4.241129771 , -0.339656544 ), ( 40 , 3.853091265 , -0.098792561 ), ( 40 , 5.475146041 , -1.020220275 ), ( 41 , 0.987537087 , 0.417971847 ), ( 41 , 1.319811448 , 0.716906169 ), ( 41 , 0.944618432 , 0.841116916 ), ( 41 , 0.826863784 , 0.782893547 ), ( 41 , 2.258692553 , 0.099548961 ), ( 41 , 2.850622401 , 0.597128746 ), ( 41 , 3.080700375 , 0.833911392 ), ( 41 , 2.358911961 , 0.729216757 ), ( 41 , 1.944832433 , 0.485157698 ), ( 41 , 4.07067078 , 0.547318634 ), ( 41 , 4.684173936 , 0.992624421 ), ( 41 , 3.513483916 , 0.959717663 ), ( 41 , 5.566838218 , 0.091582104 ), ( 41 , 5.180957408 , 0.323484835 ), ( 41 , 5.364251082 , 0.530031168 ), ( 41 , 5.575970431 , 0.609065054 ), ( 41 , 6.197714653 , 0.773770796 ), ( 41 , 5.701963307 , 0.860613982 ), ( 41 , 5.29546803 , 0.815790388 ), ( 41 , 5.048825516 , 0.931470222 ), ( 41 , 5.519304379 , 0.766685779 ), ( 41 , 5.18440912 , 1.226411595 ), ( 41 , 6.062611438 , -0.369524695 ), ( 41 , 0.486343173 , -0.180385284 ), ( 41 , 0.532533198 , 0.0482367 ), ( 41 , 5.98916272 , -0.132284954 ), ( 41 , 6.280199385 , 0.119774035 ), ( 41 , 1.667282427 , -0.58358156 ), ( 41 , 1.532959375 , -0.364487429 ), ( 41 , 1.39441099 , -0.229978593 ), ( 41 , 1.884363543 , -0.008599754 ), ( 41 , 1.348905853 , -0.152787861 ), ( 41 , 1.098972469 , -0.119328356 ), ( 41 , 1.171892738 , 0.278587361 ), ( 41 , 1.147283516 , 0.306171269 ), ( 41 , 1.697171103 , 0.352766654 ), ( 41 , 3.178316942 , -0.43160515 ), ( 41 , 2.988349419 , -0.30864379 ), ( 41 , 2.984194165 , 0.18376828 ), ( 41 , 0.9783444 , -1.131083903 ), ( 41 , 0.618480078 , -1.198332527 ), ( 41 , 0.69636852 , -1.191482992 ), ( 41 , 1.108299262 , -0.738200609 ), ( 41 , 1.202309493 , -0.533415016 ), ( 41 , 0.641348122 , -0.832589779 ), ( 41 , 0.041082697 , -0.798464939 ), ( 41 , 0.838137279 , -0.505854399 ), ( 41 , 0.795814172 , -0.412331512 ), ( 41 , 0.870562621 , -0.379742424 ), ( 41 , 2.724430763 , -1.29209881 ), ( 41 , 1.870773601 , -1.230425286 ), ( 41 , 2.206681636 , -1.154324872 ), ( 41 , 2.374314096 , -0.822011635 ), ( 41 , 2.851424974 , -1.027176896 ), ( 41 , 2.065171259 , -0.839553851 ), ( 41 , 2.135795925 , -0.826329899 ), ( 41 , 2.030056001 , -0.662676148 ), ( 41 , 4.334670326 , -1.377024486 ), ( 41 , 4.003388007 , -1.026291157 ), ( 41 , 4.406031527 , -1.030469627 ), ( 41 , 4.217552228 , -0.642324701 ), ( 41 , 4.32571936 , -0.605707719 ), ( 41 , 3.433540366 , -0.87102987 ), ( 41 , 5.678782713 , -1.350729861 ), ( 41 , 6.097432995 , -1.016395691 ), ( 41 , 5.936983915 , -0.472000321 ), ( 41 , 4.940229163 , -1.085379835 ), ( 41 , 5.015532333 , -0.661569577 ), ( 41 , 5.61414415 , -0.391148457 ), ( 41 , 5.523746886 , -0.300777669 ), ( 42 , 2.705199443 , 0.346266941 ), ( 42 , 0.646468734 , 0.147655554 ), ( 42 , 0.982658899 , 0.427028765 ), ( 42 , 1.231526501 , 0.400671476 ), ( 42 , 0.422330379 , 0.722615306 ), ( 42 , 0.303260713 , 0.824523761 ), ( 42 , 0.143989906 , 1.098366568 ), ( 42 , 0.825196466 , 0.865904026 ), ( 42 , 0.716518805 , 0.859187695 ), ( 42 , 0.760342132 , 0.920878465 ), ( 42 , 0.744808973 , 0.975558775 ), ( 42 , 1.283036062 , 1.157899003 ), ( 42 , 2.586390035 , 0.453900245 ), ( 42 , 2.289367785 , 0.316824838 ), ( 42 , 1.959641646 , 0.554766133 ), ( 42 , 3.016803572 , 1.210053261 ), ( 42 , 4.078835908 , 0.183938427 ), ( 42 , 4.337590263 , 0.740670905 ), ( 42 , 4.227050477 , 0.784266528 ), ( 42 , 3.736645743 , 0.804411966 ), ( 42 , 3.775086106 , 0.904917752 ), ( 42 , 4.196958522 , 1.02219692 ), ( 42 , 5.962625171 , 0.411297096 ), ( 42 , 6.187793063 , 0.755170185 ), ( 42 , 5.573778248 , 0.687566432 ), ( 42 , 5.646052505 , 0.795716367 ), ( 42 , 5.219865441 , 0.612317801 ), ( 42 , 5.886872594 , 1.019537857 ), ( 42 , 5.687625924 , 1.025904841 ), ( 42 , 4.80295781 , 1.245082657 ), ( 42 , 6.121597703 , -0.35083319 ), ( 42 , 5.787679046 , -0.242078448 ), ( 42 , 1.560048345 , -0.615808186 ), ( 42 , 1.80699358 , -0.422093616 ), ( 42 , 1.709794363 , -0.408727827 ), ( 42 , 1.730868348 , -0.336086975 ), ( 42 , 2.012561358 , -0.166701118 ), ( 42 , 2.282995642 , 0.059317729 ), ( 42 , 1.213780998 , -0.249670968 ), ( 42 , 1.443319423 , 0.103810019 ), ( 42 , 1.114981151 , 0.155198218 ), ( 42 , 1.581196832 , 0.168374937 ), ( 42 , 3.110646549 , -0.591807937 ), ( 42 , 3.7350645 , -0.104779587 ), ( 42 , 2.731818567 , -0.293858389 ), ( 42 , 2.530104813 , -0.019953391 ), ( 42 , 4.565651368 , -0.421952937 ), ( 42 , 4.866006813 , -0.143924231 ), ( 42 , 4.750603563 , 0.36328176 ), ( 42 , 4.815817294 , 0.379924381 ), ( 42 , 4.69604013 , 0.650145324 ), ( 42 , 1.56707645 , -0.747266366 ), ( 42 , 1.445191091 , -0.619081056 ), ( 42 , 0.3981864 , -0.856461568 ), ( 42 , 0.288345078 , -0.815389738 ), ( 42 , 0.255719639 , -0.512383607 ), ( 42 , 0.932831661 , -0.377568415 ), ( 42 , 0.71611829 , -0.241882608 ), ( 42 , 0.76981973 , -0.155328459 ), ( 42 , 2.175288664 , -1.342489461 ), ( 42 , 2.553617835 , -1.090967745 ), ( 42 , 2.015087563 , -1.267213691 ), ( 42 , 1.906030654 , -1.186075035 ), ( 42 , 2.271619294 , -1.043025669 ), ( 42 , 3.096576557 , -1.113318534 ), ( 42 , 2.917272016 , -1.02930841 ), ( 42 , 2.258645791 , -0.750299798 ), ( 42 , 2.269376382 , -0.616249543 ), ( 42 , 3.874024879 , -1.379593181 ), ( 42 , 3.22162041 , -1.384258238 ), ( 42 , 4.256151409 , -1.111526491 ), ( 42 , 4.007853154 , -0.835582698 ), ( 42 , 3.949330715 , -0.821197356 ), ( 42 , 3.171629143 , -1.127726815 ), ( 42 , 3.890503574 , -0.760535425 ), ( 42 , 3.691568838 , -0.718722608 ), ( 42 , 3.538846567 , -0.687788153 ), ( 42 , 4.082011652 , -0.258125142 ), ( 42 , 5.960525789 , -1.420377239 ), ( 42 , 5.88730314 , -0.759141145 ), ( 42 , 6.06660859 , -0.789707467 ), ( 42 , 5.234838108 , -0.615690762 ), ( 42 , 5.437110491 , -0.441079399 ), ( 43 , 0.71973081 , 0.176520134 ), ( 43 , 0.744344737 , 0.668773224 ), ( 43 , 1.157906145 , 0.389096068 ), ( 43 , 1.075923346 , 0.878790894 ), ( 43 , 1.323910216 , 1.054914447 ), ( 43 , 0.160925227 , 0.588513154 ), ( 43 , 0.912234421 , 1.046156048 ), ( 43 , 2.305720955 , 0.101885479 ), ( 43 , 2.349596858 , 0.206951788 ), ( 43 , 2.298146183 , 0.501949531 ), ( 43 , 3.61926598 , 0.275730319 ), ( 43 , 4.119244324 , 1.357769794 ), ( 43 , 4.591181597 , 1.511225359 ), ( 43 , 5.692592547 , 0.447591198 ), ( 43 , 5.30349743 , 0.832770064 ), ( 43 , 5.034219349 , 0.683225827 ), ( 43 , 5.294460131 , 0.987302888 ), ( 43 , 5.825290451 , 0.995604475 ), ( 43 , 5.365071798 , 1.09945295 ), ( 43 , 6.099506508 , -0.160266077 ), ( 43 , 5.885401616 , -0.000345885 ), ( 43 , 5.963352102 , 0.212397167 ), ( 43 , 6.195749485 , 0.098144396 ), ( 43 , 1.815740082 , -0.297652229 ), ( 43 , 1.635615224 , -0.109517777 ), ( 43 , 1.268034428 , 0.155333896 ), ( 43 , 1.202775283 , 0.177334792 ), ( 43 , 1.293154325 , 0.235866534 ), ( 43 , 1.213704916 , 0.218353496 ), ( 43 , 1.158431217 , 0.312897239 ), ( 43 , 1.470043893 , 0.162115833 ), ( 43 , 1.460930951 , 0.165624226 ), ( 43 , 1.622894316 , 0.247987356 ), ( 43 , 1.603836774 , 0.25775598 ), ( 43 , 1.53366347 , 0.683270726 ), ( 43 , 2.878749967 , -0.31935848 ), ( 43 , 3.672377999 , 0.026954527 ), ( 43 , 3.079889754 , 0.113936919 ), ( 43 , 4.541473138 , -0.224220103 ), ( 43 , 4.631285629 , -0.224723174 ), ( 43 , 5.134415071 , -0.022458023 ), ( 43 , 5.203145295 , 0.01755105 ), ( 43 , 4.981518099 , -0.100171229 ), ( 43 , 4.424437256 , 0.177414795 ), ( 43 , 4.972535268 , 0.262982701 ), ( 43 , 4.911626278 , 0.358560062 ), ( 43 , 1.117145665 , -0.898589205 ), ( 43 , 1.152087636 , -0.593700148 ), ( 43 , 0.137661102 , -1.098834834 ), ( 43 , 0.189166721 , -1.002918247 ), ( 43 , 0.989790561 , -0.405848408 ), ( 43 , 0.523638604 , -0.367880512 ), ( 43 , 2.817734591 , -1.405690697 ), ( 43 , 2.128985953 , -1.197590079 ), ( 43 , 3.08274206 , -1.067766542 ), ( 43 , 1.723407852 , -0.924597515 ), ( 43 , 2.086717479 , -0.859484714 ), ( 43 , 2.288118882 , -0.744367949 ), ( 43 , 2.062297608 , -0.6782836 ), ( 43 , 2.00202631 , -0.46781276 ), ( 43 , 1.914224884 , -0.435535828 ), ( 43 , 2.314864502 , -0.483617512 ), ( 43 , 2.133782586 , -0.335889702 ), ( 43 , 3.753877009 , -0.984130914 ), ( 43 , 3.807507029 , -0.880645699 ), ( 43 , 4.275329954 , -0.875385013 ), ( 43 , 3.765706829 , -0.689613825 ), ( 43 , 3.176872782 , -0.884207381 ), ( 43 , 3.374763017 , -0.701256833 ), ( 43 , 3.602674099 , -0.576739417 ), ( 43 , 5.613191812 , -1.140758344 ), ( 43 , 4.900167685 , -1.246675006 ), ( 43 , 6.165262954 , -0.660050669 ), ( 43 , 5.693909183 , -0.576420059 ), ( 43 , 5.897063659 , -0.5645478 ), ( 43 , 4.838213684 , -0.856471195 ), ( 44 , 0.9201092 , 0.225787552 ), ( 44 , 1.162000823 , 0.398166502 ), ( 44 , 1.112202334 , 0.844900162 ), ( 44 , 1.297152589 , 0.938152147 ), ( 44 , 0.217358529 , 0.716959982 ), ( 44 , 0.195154152 , 0.842720145 ), ( 44 , 0.31029201 , 0.962544964 ), ( 44 , 2.739647533 , 0.640654407 ), ( 44 , 2.959088553 , 0.550248502 ), ( 44 , 1.989332728 , 0.469406448 ), ( 44 , 1.656416188 , 1.029938903 ), ( 44 , 4.139650844 , 0.316619322 ), ( 44 , 4.178253229 , 0.469100106 ), ( 44 , 4.033828021 , 0.652365292 ), ( 44 , 3.455088988 , 0.486673039 ), ( 44 , 3.288707873 , 0.721859576 ), ( 44 , 4.389391898 , 1.43182056 ), ( 44 , 5.594171947 , 0.34566153 ), ( 44 , 5.803162958 , 0.579066748 ), ( 44 , 5.829268479 , 0.658839707 ), ( 44 , 5.892613728 , 0.752644232 ), ( 44 , 4.907750258 , 0.656335591 ), ( 44 , 4.953837026 , 0.767013816 ), ( 44 , 5.696093846 , 1.066759054 ), ( 44 , 5.274780365 , 1.356323146 ), ( 44 , 5.9759694 , -0.237240802 ), ( 44 , 5.833053021 , -0.135846673 ), ( 44 , 6.038303514 , 0.066671201 ), ( 44 , 0.206540878 , 0.423532436 ), ( 44 , 1.693709741 , -0.568626377 ), ( 44 , 1.807227789 , -0.210115434 ), ( 44 , 1.366727762 , -0.225868327 ), ( 44 , 1.362662275 , -0.207159609 ), ( 44 , 1.41348425 , -0.136281699 ), ( 44 , 1.448322121 , -0.127436466 ), ( 44 , 1.277991022 , -0.095164455 ), ( 44 , 1.463397328 , -0.084445376 ), ( 44 , 1.479977061 , 0.071933256 ), ( 44 , 1.426096245 , 0.05402956 ), ( 44 , 0.946259058 , 0.006952011 ), ( 44 , 3.281472757 , -0.282680675 ), ( 44 , 3.446802009 , -0.096677895 ), ( 44 , 2.652628628 , -0.006488044 ), ( 44 , 3.164293016 , 0.152423962 ), ( 44 , 3.446938307 , 0.305957563 ), ( 44 , 2.889956767 , 0.352209445 ), ( 44 , 4.569948908 , -0.521294817 ), ( 44 , 4.30670364 , -0.322125034 ), ( 44 , 4.720041656 , 0.022775821 ), ( 44 , 4.736212212 , 0.043501553 ), ( 44 , 4.917567538 , 0.317341271 ), ( 44 , 1.504346692 , -1.147300275 ), ( 44 , 0.872851886 , -0.751621419 ), ( 44 , 1.00117556 , -0.63181967 ), ( 44 , 0.088063305 , -1.132137573 ), ( 44 , 0.701064527 , -0.695610846 ), ( 44 , 0.777856403 , -0.703447639 ), ( 44 , 2.772730807 , -1.371963366 ), ( 44 , 2.29820005 , -0.990818342 ), ( 44 , 2.709242552 , -0.978138371 ), ( 44 , 2.880470755 , -0.736979782 ), ( 44 , 2.516852742 , -0.861402469 ), ( 44 , 2.042409716 , -0.452688437 ), ( 44 , 2.580811754 , -0.259124632 ), ( 44 , 2.080686519 , -0.39933274 ), ( 44 , 4.087221041 , -1.157457349 ), ( 44 , 3.218187256 , -1.186141796 ), ( 44 , 3.502136346 , -1.064450677 ), ( 44 , 4.448775246 , -0.927822072 ), ( 44 , 4.028024449 , -0.643304453 ), ( 44 , 3.154750489 , -1.105018294 ), ( 44 , 3.779233581 , -0.789264483 ), ( 44 , 3.619133863 , -0.601284087 ), ( 44 , 3.855673076 , -0.613917862 ), ( 44 , 4.161862029 , -0.29196502 ), ( 44 , 6.282834201 , -1.144539705 ), ( 44 , 6.025213332 , -0.92073509 ), ( 44 , 6.003708873 , -0.567919619 ), ( 44 , 4.749832652 , -1.111249199 ), ( 44 , 5.075516114 , -0.781910162 ), ( 44 , 5.215314612 , -0.730732364 ), ( 44 , 5.017950019 , -0.686630998 ), ( 44 , 5.462100519 , -0.469827783 ), ( 44 , 5.659582968 , -0.339745928 ), ( 45 , 0.71319464 , 0.483579598 ), ( 45 , 1.207289207 , 0.720204967 ), ( 45 , 0.079959472 , 0.642018168 ), ( 45 , 0.532107348 , 1.237560132 ), ( 45 , 0.300119021 , 1.505468958 ), ( 45 , 2.650418409 , 0.615136048 ), ( 45 , 2.194028732 , 0.753762881 ), ( 45 , 2.394874545 , 0.900666996 ), ( 45 , 2.508129011 , 0.908465286 ), ( 45 , 4.108285859 , 0.343309899 ), ( 45 , 4.553916846 , 0.648319109 ), ( 45 , 3.785299468 , 1.321146837 ), ( 45 , 5.425610353 , 0.263095822 ), ( 45 , 5.439569283 , 0.281398081 ), ( 45 , 5.435226962 , 0.536163011 ), ( 45 , 5.442849926 , 0.636882239 ), ( 45 , 5.851332723 , 0.812216599 ), ( 45 , 5.776186542 , 1.12798168 ), ( 45 , 0.016321164 , -0.302571219 ), ( 45 , 6.207809994 , -0.253864518 ), ( 45 , 0.459875747 , 0.159839414 ), ( 45 , 0.274633001 , 0.137711921 ), ( 45 , 6.090771315 , -0.158612951 ), ( 45 , 6.083884672 , -0.105598767 ), ( 45 , 6.143405091 , 0.111329179 ), ( 45 , 5.885404819 , -0.000356612 ), ( 45 , 5.869880592 , 0.024040449 ), ( 45 , 1.723761134 , -0.400809246 ), ( 45 , 1.696537079 , -0.122750401 ), ( 45 , 1.674502346 , 0.080161853 ), ( 45 , 1.714366024 , 0.127983878 ), ( 45 , 1.749595167 , 0.172712949 ), ( 45 , 1.546263055 , 0.35387642 ), ( 45 , 1.541682366 , 0.481923722 ), ( 45 , 2.930661823 , -0.398398676 ), ( 45 , 2.640348939 , -0.228018424 ), ( 45 , 2.952480132 , -0.063736936 ), ( 45 , 3.041013226 , -0.01437192 ), ( 45 , 2.860642647 , 0.431962469 ), ( 45 , 4.542281115 , -0.368514809 ), ( 45 , 5.068990577 , -0.278468296 ), ( 45 , 5.403271439 , -0.019290316 ), ( 45 , 4.918225904 , -0.082868005 ), ( 45 , 4.324655852 , -0.289951397 ), ( 45 , 4.705854681 , 0.526902697 ), ( 45 , 1.22415936 , -0.730669469 ), ( 45 , 1.046870685 , -0.419160012 ), ( 45 , 1.019763719 , -0.429565215 ), ( 45 , 2.380800432 , -1.231127944 ), ( 45 , 2.527881362 , -1.070373918 ), ( 45 , 2.78949694 , -0.970459491 ), ( 45 , 2.736453913 , -0.54223385 ), ( 45 , 2.064114566 , -0.865909154 ), ( 45 , 2.175340819 , -0.639813124 ), ( 45 , 1.995643548 , -0.610312249 ), ( 45 , 1.91247157 , -0.641127697 ), ( 45 , 1.894787553 , -0.459937459 ), ( 45 , 2.296748728 , -0.236454203 ), ( 45 , 4.376593744 , -1.352977445 ), ( 45 , 4.307400734 , -0.829990182 ), ( 45 , 4.606180656 , -0.811682093 ), ( 45 , 4.610055918 , -0.674338736 ), ( 45 , 4.083575896 , -0.784674429 ), ( 45 , 4.347506263 , -0.615320325 ), ( 45 , 4.242472277 , -0.487410147 ), ( 45 , 4.32901535 , -0.374654583 ), ( 45 , 3.38005374 , -1.032306489 ), ( 45 , 3.343949977 , -0.985917652 ), ( 45 , 3.457023193 , -1.045813466 ), ( 45 , 3.672719513 , -0.795931808 ), ( 45 , 3.779425723 , -0.792018216 ), ( 45 , 3.62952356 , -0.575858991 ), ( 45 , 4.221108069 , -0.364234115 ), ( 45 , 3.980314186 , -0.345433917 ), ( 45 , 3.721460565 , -0.179293106 ), ( 45 , 5.87886826 , -1.133875811 ), ( 45 , 5.750510914 , -0.959801924 ), ( 45 , 5.584492838 , -0.932876524 ), ( 45 , 5.889424422 , -0.763567575 ), ( 45 , 6.051392522 , -0.759575073 ), ( 45 , 5.988767805 , -0.573789136 ), ( 45 , 5.796177279 , -0.575760541 ), ( 45 , 4.84928254 , -1.086966925 ), ( 45 , 5.134363144 , -0.434303941 ), ( 45 , 5.59485997 , -0.293817624 ), ( 45 , 5.312993587 , -0.218309287 ), ( 46 , 3.681858978 , -1.053713866 ), ( 46 , 0.784155102 , 0.155461226 ), ( 46 , 1.067696463 , 0.385395288 ), ( 46 , 0.836160993 , 0.344294719 ), ( 46 , 0.495378921 , 0.336729509 ), ( 46 , 0.495375865 , 0.336769619 ), ( 46 , 1.570511906 , 0.801746328 ), ( 46 , 0.91880642 , 0.837676849 ), ( 46 , 1.1268086 , 0.877815408 ), ( 46 , 0.074567701 , 0.67512011 ), ( 46 , 0.913542413 , 0.864090611 ), ( 46 , 1.005135504 , 1.244977821 ), ( 46 , 0.650416118 , 1.17639437 ), ( 46 , 2.494598834 , 0.400862496 ), ( 46 , 2.853529084 , 0.753804088 ), ( 46 , 2.021589065 , 0.504084547 ), ( 46 , 1.949156527 , 0.858897266 ), ( 46 , 1.820712375 , 1.019658881 ), ( 46 , 2.583548766 , 0.943602011 ), ( 46 , 2.518008842 , 1.419411106 ), ( 46 , 3.939640446 , 0.036501798 ), ( 46 , 3.609553162 , 0.304687927 ), ( 46 , 3.816539064 , 0.519166353 ), ( 46 , 4.52768747 , 0.650866657 ), ( 46 , 3.724036257 , 0.903904286 ), ( 46 , 5.56097233 , 0.17463095 ), ( 46 , 5.692006718 , 0.30281365 ), ( 46 , 5.153299383 , 0.305010467 ), ( 46 , 5.149144372 , 0.314399245 ), ( 46 , 5.207461547 , 0.420272961 ), ( 46 , 5.681459324 , 0.893427112 ), ( 46 , 5.888437051 , 0.832641933 ), ( 46 , 6.076162633 , 0.862312586 ), ( 46 , 5.866559068 , 0.863525539 ), ( 46 , 5.112820204 , 0.601317303 ), ( 46 , 4.950209649 , 0.644002644 ), ( 46 , 5.045607772 , 0.665559853 ), ( 46 , 5.133196431 , 0.87655553 ), ( 46 , 5.497028908 , 0.829397261 ), ( 46 , 5.43385933 , 1.00492712 ), ( 46 , 6.055847999 , 1.315756179 ), ( 46 , 5.064374664 , 1.146939926 ), ( 46 , 6.234878532 , -0.490978729 ), ( 46 , 6.135028294 , -0.360278935 ), ( 46 , 0.580318692 , 0.154403944 ), ( 46 , 6.204833633 , 0.031048847 ), ( 46 , 5.774049863 , -0.037619636 ), ( 46 , 5.853476576 , 0.213021095 ), ( 46 , 0.249605512 , 0.408709611 ), ( 46 , 6.132151153 , 0.408483003 ), ( 46 , 6.111438529 , 0.414347058 ), ( 46 , 0.168199583 , 0.511555914 ), ( 46 , 1.643019268 , -0.613307035 ), ( 46 , 1.223661611 , -0.343343648 ), ( 46 , 1.461908447 , -0.104754983 ), ( 46 , 2.131891973 , -0.052077284 ), ( 46 , 2.104277294 , 0.040758771 ), ( 46 , 1.955473402 , 0.15578114 ), ( 46 , 1.113560243 , -0.13398251 ), ( 46 , 1.403953557 , -0.006675117 ), ( 46 , 1.41697676 , 0.032226597 ), ( 46 , 1.162165453 , 0.272588236 ), ( 46 , 1.328935822 , 0.268848538 ), ( 46 , 1.449550726 , 0.324530104 ), ( 46 , 1.637886037 , 0.514806911 ), ( 46 , 3.055249819 , -0.606408851 ), ( 46 , 3.039840521 , -0.17108058 ), ( 46 , 2.49574128 , -0.020676682 ), ( 46 , 2.65247368 , 0.174481553 ), ( 46 , 3.259119884 , 0.493367227 ), ( 46 , 4.615719197 , -0.141701878 ), ( 46 , 4.566779495 , -0.088783127 ), ( 46 , 4.566281882 , 0.072263723 ), ( 46 , 4.129611754 , 0.128326804 ), ( 46 , 4.299692871 , 0.2449195 ), ( 46 , 4.799050014 , 0.629450064 ), ( 46 , 0.137711566 , -1.098960711 ), ( 46 , 0.543193666 , -0.511324275 ), ( 46 , 0.720439839 , -0.324147581 ), ( 46 , 2.18439203 , -1.352354361 ), ( 46 , 2.378648346 , -1.267156924 ), ( 46 , 2.42687925 , -1.00428981 ), ( 46 , 2.340138785 , -0.920196451 ), ( 46 , 3.031454951 , -0.947085131 ), ( 46 , 2.814600694 , -1.041690318 ), ( 46 , 1.788330313 , -0.93588604 ), ( 46 , 1.615731107 , -0.959382823 ), ( 46 , 1.887376854 , -0.8160908 ), ( 46 , 1.98696845 , -0.495139237 ), ( 46 , 2.001990135 , -0.467777559 ), ( 46 , 1.999714011 , -0.442700159 ), ( 46 , 1.981174735 , -0.389134118 ), ( 46 , 2.356581158 , -0.720005037 ), ( 46 , 2.536323668 , -0.411749219 ), ( 46 , 2.093817609 , -0.321132214 ), ( 46 , 3.782548722 , -1.460281747 ), ( 46 , 4.093005108 , -0.742933378 ), ( 46 , 4.037536873 , -0.676031074 ), ( 46 , 4.113230362 , -0.605814787 ), ( 46 , 3.160438711 , -1.102449367 ), ( 46 , 3.430781302 , -0.845845891 ), ( 46 , 3.373336361 , -0.854224954 ), ( 46 , 3.31557571 , -0.697913318 ), ( 46 , 3.635558488 , -0.557243382 ), ( 46 , 4.004790162 , -0.526194843 ), ( 46 , 4.160914995 , -0.442044878 ), ( 46 , 4.1494271 , -0.449447891 ), ( 46 , 3.748572028 , -0.233366222 ), ( 46 , 3.914688714 , -0.075878669 ), ( 46 , 4.960879777 , -1.173443907 ), ( 46 , 5.428174493 , -0.906198507 ), ( 46 , 4.813736696 , -1.073270147 ), ( 47 , 0.874144425 , 0.506989286 ), ( 47 , 0.779996689 , 0.692240136 ), ( 47 , 1.523554395 , 0.683835679 ), ( 47 , 0.312687264 , 0.525160016 ), ( 47 , 0.183545694 , 0.881609289 ), ( 47 , 0.138642384 , 0.951591004 ), ( 47 , 0.915915074 , 1.027627952 ), ( 47 , 1.001475657 , 1.143642196 ), ( 47 , 0.872614911 , 1.145846768 ), ( 47 , 2.283251198 , 0.374691244 ), ( 47 , 2.463764828 , 0.456962017 ), ( 47 , 1.881196665 , 0.52787181 ), ( 47 , 2.403858997 , 1.108514207 ), ( 47 , 2.506623685 , 1.218778721 ), ( 47 , 4.526188476 , 0.577705087 ), ( 47 , 4.156903936 , 0.740995055 ), ( 47 , 4.201009761 , 0.803484605 ), ( 47 , 3.553703787 , 0.855493468 ), ( 47 , 4.633597704 , 1.25920237 ), ( 47 , 5.390057758 , 0.256114762 ), ( 47 , 5.302594549 , 0.446663339 ), ( 47 , 5.340105206 , 0.561823859 ), ( 47 , 5.930896074 , 0.681555108 ), ( 47 , 6.258679281 , 1.003553154 ), ( 47 , 5.862385363 , 0.911546206 ), ( 47 , 5.922649512 , 0.899619511 ), ( 47 , 5.099422903 , 0.430470864 ), ( 47 , 5.240798863 , 0.484391713 ), ( 47 , 5.46831882 , 0.774704156 ), ( 47 , 5.041982205 , 1.280306741 ), ( 47 , 0.06387689 , -0.330449705 ), ( 47 , 6.050544553 , -0.414397493 ), ( 47 , 6.166584382 , -0.365026147 ), ( 47 , 0.00855925 , -0.104970238 ), ( 47 , 0.478136728 , -0.186524346 ), ( 47 , 0.21242709 , 0.132378565 ), ( 47 , 0.442575872 , 0.095777316 ), ( 47 , 5.662524632 , -0.13708464 ), ( 47 , 1.804444758 , -0.352979244 ), ( 47 , 1.736123281 , -0.318305149 ), ( 47 , 1.398222952 , -0.370704844 ), ( 47 , 1.597652184 , -0.260667787 ), ( 47 , 2.263503341 , 0.058317103 ), ( 47 , 1.779626354 , 0.04209849 ), ( 47 , 1.315276342 , -0.125208457 ), ( 47 , 1.415806335 , -0.041836262 ), ( 47 , 1.302662943 , 0.029914394 ), ( 47 , 0.918994595 , -0.088577246 ), ( 47 , 1.286729239 , 0.177149924 ), ( 47 , 1.194902989 , 0.259081188 ), ( 47 , 1.218577552 , 0.277818632 ), ( 47 , 1.762730648 , 0.230865815 ), ( 47 , 1.587899541 , 0.351481995 ), ( 47 , 1.489181726 , 0.288573086 ), ( 47 , 1.322513592 , 0.376810944 ), ( 47 , 1.562044475 , 0.452980966 ), ( 47 , 2.901642461 , 0.128031776 ), ( 47 , 2.48339449 , -0.0483309 ), ( 47 , 3.145402636 , 0.115438306 ), ( 47 , 3.089157836 , 0.352886632 ), ( 47 , 4.711483941 , -0.415675816 ), ( 47 , 4.839788124 , -0.254222354 ), ( 47 , 4.714517435 , -0.064412953 ), ( 47 , 4.957699724 , 0.073370563 ), ( 47 , 5.122956701 , 0.128767777 ), ( 47 , 4.310091244 , -0.146113658 ), ( 47 , 5.044949726 , 0.373332711 ), ( 47 , 4.584714123 , 0.455718697 ), ( 47 , 1.119110363 , -1.035038187 ), ( 47 , 0.997458921 , -0.656596189 ), ( 47 , 1.193393016 , -0.519556264 ), ( 47 , 0.495856632 , -0.808144545 ), ( 47 , 0.697276893 , -0.748603506 ), ( 47 , 0.737808032 , -0.565570293 ), ( 47 , 0.986738683 , -0.211205359 ), ( 47 , 2.750368242 , -1.256514945 ), ( 47 , 2.802275221 , -1.125149989 ), ( 47 , 2.82242628 , -1.123702405 ), ( 47 , 2.810477913 , -1.11633006 ), ( 47 , 2.095846576 , -1.109458971 ), ( 47 , 2.279495883 , -0.927011052 ), ( 47 , 2.934770557 , -1.052740931 ), ( 47 , 2.773273448 , -1.004570177 ), ( 47 , 3.102942249 , -0.78842675 ), ( 47 , 1.896455131 , -0.842504083 ), ( 47 , 2.192693532 , -0.846317418 ), ( 47 , 2.15570073 , -0.704211631 ), ( 47 , 2.143953276 , -0.69147365 ), ( 47 , 2.153263739 , -0.626563536 ), ( 47 , 1.871214415 , -0.692120808 ), ( 47 , 2.004750241 , -0.66859919 ), ( 47 , 2.424924745 , -0.652983482 ), ( 47 , 4.204196495 , -1.00837102 ), ( 47 , 3.469918185 , -1.184985277 ), ( 47 , 3.508155062 , -1.126362509 ), ( 47 , 4.106685594 , -0.779517381 ), ( 47 , 3.982953118 , -0.776681397 ), ( 47 , 4.320596565 , -0.438346573 ), ( 47 , 3.257274322 , -1.101692505 ), ( 47 , 3.25734272 , -0.897984205 ), ( 47 , 3.884583542 , -0.488007933 ), ( 47 , 4.293955921 , -0.349722829 ), ( 47 , 4.18088855 , -0.249223747 ), ( 47 , 6.174441621 , -0.743773465 ), ( 47 , 6.103524738 , -0.56780059 ), ( 47 , 5.786263355 , -0.690176882 ), ( 47 , 4.987787626 , -0.734703729 ), ( 47 , 4.761382996 , -0.802060409 ), ( 47 , 4.905783399 , -0.622073443 ), ( 47 , 5.247589993 , -0.483626286 ), ( 47 , 5.5760646 , -0.56151981 ), ( 47 , 5.623133985 , -0.380607754 ), ( 47 , 5.326151461 , -0.2226898 ), ( 47 , 5.539661045 , -0.198475317 ), ( 47 , 5.444281107 , -0.087754812 ), ( 48 , 0.732662258 , 0.51044338 ), ( 48 , 0.748372214 , 0.611900288 ), ( 48 , 1.38830998 , 0.582425132 ), ( 48 , 1.392598913 , 0.699779937 ), ( 48 , 1.141243068 , 0.811554276 ), ( 48 , 0.346741725 , 0.475846208 ), ( 48 , 0.560656973 , 0.660760461 ), ( 48 , 0.54067359 , 0.738807993 ), ( 48 , 0.213082845 , 0.889561307 ), ( 48 , 0.837493105 , 1.298403758 ), ( 48 , 2.384680465 , 0.671115953 ), ( 48 , 2.731052461 , 0.58984635 ), ( 48 , 2.762971945 , 0.705559101 ), ( 48 , 2.963262594 , 0.666455154 ), ( 48 , 2.505521684 , 0.635254473 ), ( 48 , 2.131286509 , 0.898960376 ), ( 48 , 2.269843371 , 1.122737505 ), ( 48 , 1.653029411 , 1.209844633 ), ( 48 , 1.832928544 , 1.343507601 ), ( 48 , 4.198804004 , 0.398015612 ), ( 48 , 4.143375326 , 0.454971421 ), ( 48 , 3.842893807 , 0.286555744 ), ( 48 , 3.86258502 , 0.296076116 ), ( 48 , 3.946365157 , 0.470324578 ), ( 48 , 3.86147535 , 0.472549389 ), ( 48 , 3.735697732 , 0.896538098 ), ( 48 , 3.47991495 , 0.708127803 ), ( 48 , 5.542916779 , 0.176811012 ), ( 48 , 5.628464221 , 0.412576033 ), ( 48 , 5.690432646 , 0.501624476 ), ( 48 , 5.404082156 , 0.370030994 ), ( 48 , 5.197019685 , 0.394617868 ), ( 48 , 5.304787758 , 0.485450819 ), ( 48 , 5.463429376 , 0.472924044 ), ( 48 , 5.941784031 , 0.511510995 ), ( 48 , 5.852625096 , 0.494461664 ), ( 48 , 5.820150321 , 0.693158542 ), ( 48 , 5.936379415 , 0.772768673 ), ( 48 , 6.152430912 , 1.021871967 ), ( 48 , 6.050244724 , 1.037070144 ), ( 48 , 5.27712115 , 0.64297427 ), ( 48 , 5.313596301 , 0.663799034 ), ( 48 , 5.526592964 , 0.831621297 ), ( 48 , 5.663245593 , 1.08353377 ), ( 48 , 5.248288027 , 1.184622956 ), ( 48 , 5.680747841 , 1.244631002 ), ( 48 , 0.495483816 , 0.055635985 ), ( 48 , 5.893308893 , -0.186369435 ), ( 48 , 6.05194906 , 0.164225141 ), ( 48 , 6.148606062 , 0.222717046 ), ( 48 , 1.540752914 , -0.589941307 ), ( 48 , 1.813507715 , -0.351443326 ), ( 48 , 1.478661654 , -0.125893603 ), ( 48 , 1.571041224 , -0.053664865 ), ( 48 , 1.845305387 , -0.073988283 ), ( 48 , 1.962606934 , 0.209551739 ), ( 48 , 1.48721782 , -0.01970116 ), ( 48 , 1.366992008 , 0.049938493 ), ( 48 , 1.180556316 , 0.282635776 ), ( 48 , 1.15235034 , 0.304453543 ), ( 48 , 1.623395423 , 0.281526582 ), ( 48 , 1.52519183 , 0.220804983 ), ( 48 , 1.809231138 , 0.229990062 ), ( 48 , 1.429576758 , 0.382871388 ), ( 48 , 1.451799253 , 0.561856401 ), ( 48 , 3.293652035 , 0.394956912 ), ( 48 , 4.747660992 , -0.496673794 ), ( 48 , 4.665155134 , -0.553326481 ), ( 48 , 4.658110304 , -0.485740158 ), ( 48 , 4.58766742 , -0.418230124 ), ( 48 , 4.896844046 , -0.1579967 ), ( 48 , 5.089895576 , 0.005908897 ), ( 48 , 4.406243282 , -0.188210196 ), ( 48 , 4.713538252 , 0.076245621 ), ( 48 , 4.951273421 , 0.395231283 ), ( 48 , 0.913685589 , -1.098421824 ), ( 48 , 1.051111108 , -1.084879896 ), ( 48 , 1.041727499 , -1.071637113 ), ( 48 , 0.722342594 , -1.180127287 ), ( 48 , 1.333035707 , -1.003073632 ), ( 48 , 1.526429084 , -0.980302082 ), ( 48 , 1.328243556 , -0.619299949 ), ( 48 , 0.947252047 , -0.702926631 ), ( 48 , 0.972283922 , -0.651252246 ), ( 48 , 0.137105556 , -0.851779629 ), ( 48 , 0.180315492 , -0.804334962 ), ( 48 , 0.636825997 , -0.214510429 ), ( 48 , 3.139944187 , -1.36522959 ), ( 48 , 2.908321474 , -1.0895052 ), ( 48 , 2.807961126 , -1.057086601 ), ( 48 , 2.342987365 , -1.033745837 ), ( 48 , 2.274244723 , -0.825838432 ), ( 48 , 3.106037797 , -1.138058616 ), ( 48 , 2.737581476 , -1.005986479 ), ( 48 , 2.703566863 , -0.9604423 ), ( 48 , 2.656987273 , -0.904277026 ), ( 48 , 2.865482008 , -0.648191401 ), ( 48 , 2.581677026 , -0.812408018 ), ( 48 , 2.483797581 , -0.627468516 ), ( 48 , 2.144273748 , -0.750268995 ), ( 48 , 2.084220589 , -0.529437352 ), ( 48 , 2.284952474 , -0.126252545 ), ( 48 , 4.424389795 , -0.739357306 ), ( 48 , 4.217108758 , -0.788417406 ), ( 48 , 4.203636434 , -0.673744831 ), ( 48 , 4.268627243 , -0.49942114 ), ( 48 , 4.27883243 , -0.421836669 ), ( 48 , 3.41889509 , -0.864415212 ), ( 48 , 4.076159944 , -0.175687667 ), ( 48 , 4.910703936 , -1.132235219 ), ( 48 , 5.391255686 , -1.057373516 ), ( 48 , 6.18654959 , -0.793992833 ), ( 48 , 5.58838396 , -0.712259162 ), ( 48 , 4.967483818 , -0.923954419 ), ( 48 , 4.850955397 , -0.80136785 ), ( 48 , 5.010627466 , -0.706804018 ), ( 48 , 5.002208614 , -0.646904872 ), ( 48 , 5.002206409 , -0.646898321 ), ( 48 , 4.858579067 , -0.738495121 ), ( 48 , 5.22266846 , -0.474206168 ), ( 48 , 5.52888449 , -0.436439818 ), ( 48 , 5.465738527 , -0.156791966 ), ( 49 , 1.891688257 , -0.779070541 ), ( 49 , 2.896024052 , 1.077743858 ), ( 49 , 0.850415416 , 0.367285947 ), ( 49 , 0.514548435 , 0.411827385 ), ( 49 , 0.78195822 , 0.372459855 ), ( 49 , 1.367587497 , 0.671672065 ), ( 49 , 0.970305039 , 0.592800957 ), ( 49 , 1.112162357 , 0.706569854 ), ( 49 , 0.834654906 , 0.691353044 ), ( 49 , 0.321793424 , 0.429063977 ), ( 49 , 0.438867072 , 0.708200385 ), ( 49 , 0.382534687 , 0.792482815 ), ( 49 , 0.24722617 , 1.032898798 ), ( 49 , 0.231544158 , 1.0668351 ), ( 49 , 0.907798732 , 0.856305483 ), ( 49 , 0.533649448 , 0.950986625 ), ( 49 , 1.035959878 , 1.100819448 ), ( 49 , 0.409842397 , 1.033792117 ), ( 49 , 0.506152565 , 1.198782335 ), ( 49 , 2.704079304 , 0.33980559 ), ( 49 , 2.786942688 , 0.558091583 ), ( 49 , 2.959090208 , 0.550239741 ), ( 49 , 1.822200581 , 0.787040001 ), ( 49 , 2.426841464 , 0.942866599 ), ( 49 , 2.723281647 , 1.144347407 ), ( 49 , 2.401544175 , 1.171698988 ), ( 49 , 3.889438116 , 0.333360823 ), ( 49 , 3.710562054 , 0.437925126 ), ( 49 , 4.195080099 , 0.520998448 ), ( 49 , 4.098806892 , 0.639414622 ), ( 49 , 4.403630958 , 0.802554257 ), ( 49 , 4.591413211 , 0.962956301 ), ( 49 , 4.386436428 , 0.991037088 ), ( 49 , 3.5811405 , 0.954373283 ), ( 49 , 3.916423202 , 1.150742378 ), ( 49 , 4.611821806 , 1.200091874 ), ( 49 , 4.310883457 , 1.200234576 ), ( 49 , 3.627809064 , 1.129634259 ), ( 49 , 5.125080698 , 0.345111569 ), ( 49 , 6.0396692 , 0.873594103 ), ( 49 , 6.278863043 , 0.973106549 ), ( 49 , 5.146002132 , 0.526279089 ), ( 49 , 5.079460943 , 0.516991196 ), ( 49 , 5.383917552 , 0.61524279 ), ( 49 , 5.217935869 , 0.67171964 ), ( 49 , 5.294026279 , 0.817087506 ), ( 49 , 5.367146811 , 0.854366848 ), ( 49 , 4.854525889 , 0.99563251 ), ( 49 , 4.935816812 , 1.036525438 ), ( 49 , 5.449520516 , 0.804843171 ), ( 49 , 5.582307785 , 1.132228214 ), ( 49 , 5.115593067 , 1.215606209 ), ( 49 , 0.010177064 , -0.518717727 ), ( 49 , 6.064652169 , -0.391960594 ), ( 49 , 5.949767495 , -0.328655464 ), ( 49 , 0.023279863 , -0.099605935 ), ( 49 , 6.138912094 , 0.021902812 ), ( 49 , 6.000572976 , 0.153872897 ), ( 49 , 0.311780494 , 0.367122648 ), ( 49 , 6.273401411 , 0.438796404 ), ( 49 , 1.603640052 , -0.650186082 ), ( 49 , 1.929572562 , -0.331903086 ), ( 49 , 1.315225297 , -0.349973874 ), ( 49 , 1.639511909 , -0.239432808 ), ( 49 , 1.578825661 , -0.184968301 ), ( 49 , 1.69656288 , -0.12277362 ), ( 49 , 1.622560532 , -0.114324118 ), ( 49 , 2.099736214 , -0.024314704 ), ( 49 , 1.692792066 , -0.083115477 ), ( 49 , 1.308691863 , -0.218829791 ), ( 49 , 1.408626222 , 0.061862054 ), ( 49 , 1.163287856 , 0.256800262 ), ( 49 , 1.351318584 , 0.272221842 ), ( 49 , 3.483563388 , -0.319719565 ), ( 49 , 3.075111892 , -0.32028271 ), ( 49 , 3.718695514 , 0.042049226 ), ( 49 , 3.312826688 , -0.139551893 ), ( 49 , 3.552327214 , 0.063858241 ), ( 49 , 2.523965205 , 0.081139293 ), ( 49 , 2.618921218 , 0.140395466 ), ( 49 , 3.324357401 , 0.178634422 ), ( 49 , 3.077389205 , 0.144128267 ), ( 49 , 2.946129012 , 0.403091947 ), ( 49 , 3.23978853 , 0.451099567 ), ( 49 , 4.791161634 , -0.471983676 ), ( 49 , 4.815629653 , -0.155929598 ), ( 49 , 5.135155033 , -0.122653042 ), ( 49 , 5.210902493 , 0.147670402 ), ( 49 , 4.285080351 , 0.017966332 ), ( 49 , 4.744268518 , 0.152438318 ), ( 49 , 4.712636516 , 0.292357347 ), ( 49 , 4.474062513 , 0.222367963 ), ( 49 , 4.718964884 , 0.376922144 ), ( 49 , 0.501525028 , -1.180659274 ), ( 49 , 1.545096357 , -1.101057711 ), ( 49 , 1.181740889 , -0.784591327 ), ( 49 , 0.969742166 , -0.557427902 ), ( 49 , 0.671273651 , -0.492747707 ), ( 49 , 0.663598704 , -0.266081256 ), ( 49 , 0.854485637 , -0.153927687 ), ( 49 , 0.696239407 , -0.207226686 ), ( 49 , 2.718208645 , -1.167649976 ), ( 49 , 2.133674549 , -1.069964767 ), ( 49 , 2.505185286 , -0.894572323 ), ( 49 , 2.314993826 , -0.812087119 ), ( 49 , 2.311660212 , -0.790769851 ), ( 49 , 1.890285471 , -0.788598127 ), ( 49 , 2.043483039 , -0.821670823 ), ( 49 , 2.15535763 , -0.633942452 ), ( 49 , 1.906000458 , -0.638661148 ), ( 49 , 1.96659182 , -0.540393611 ), ( 49 , 2.022571936 , -0.495859907 ), ( 49 , 1.904951825 , -0.486613692 ), ( 49 , 1.914071588 , -0.428629721 ), ( 49 , 1.96287052 , -0.401849166 ), ( 49 , 2.45742423 , -0.503243015 ), ( 49 , 2.336684831 , -0.483151754 ), ( 49 , 2.391315215 , -0.451316602 ), ( 49 , 2.54905567 , -0.484666067 ), ( 49 , 2.143573908 , -0.22561762 ), ( 49 , 3.654918041 , -1.111546628 ), ( 49 , 4.337508355 , -0.768736064 ), ( 49 , 4.62687448 , -0.862485954 ), ( 49 , 4.669564247 , -0.69971029 ), ( 49 , 4.471632025 , -0.595557697 ), ( 49 , 4.202825876 , -0.859219072 ), ( 49 , 4.100505026 , -0.600602683 ), ( 49 , 3.34073744 , -1.064332793 ), ( 49 , 3.324596854 , -1.0417146 ), ( 49 , 3.606970436 , -0.897674487 ), ( 49 , 3.755560968 , -0.788671881 ), ( 49 , 3.32740749 , -0.85195318 ), ( 49 , 3.362747953 , -0.593402235 ), ( 49 , 3.895795217 , -0.659792106 ), ( 49 , 3.861484293 , -0.614213696 ), ( 49 , 3.788119501 , -0.514729171 ), ( 49 , 4.212536565 , -0.34561027 ), ( 49 , 3.931226298 , -0.14868441 ), ( 49 , 5.77512904 , -0.991409762 ), ( 49 , 5.217850695 , -0.459006754 ), ( 49 , 5.503419068 , -0.563005191 ), ( 49 , 5.517003655 , -0.346539792 ), ( 49 , 5.68393857 , -0.329280428 ), ( 49 , 5.361912187 , -0.310908704 ), ( 50 , 0.996023573 , 0.194484457 ), ( 50 , 1.122507727 , 0.35915707 ), ( 50 , 1.276848542 , 0.640591028 ), ( 50 , 1.30576118 , 0.661297691 ), ( 50 , 0.878949191 , 0.756244955 ), ( 50 , 1.548306747 , 0.972271556 ), ( 50 , 0.598179042 , 0.597295647 ), ( 50 , 0.189659811 , 0.820728682 ), ( 50 , 0.15768872 , 0.945417571 ), ( 50 , 0.868861147 , 0.874319191 ), ( 50 , 0.635407936 , 0.877525859 ), ( 50 , 0.809568949 , 0.989709956 ), ( 50 , 0.986279997 , 1.1055779 ), ( 50 , 0.374980705 , 1.189096249 ), ( 50 , 2.5091846 , 0.691527951 ), ( 50 , 2.751588058 , 0.977040764 ), ( 50 , 2.066015771 , 0.467147309 ), ( 50 , 2.003482195 , 0.603597273 ), ( 50 , 1.913460782 , 0.863323335 ), ( 50 , 2.020240139 , 1.024682726 ), ( 50 , 1.793114343 , 1.179353311 ), ( 50 , 1.805126472 , 1.202328777 ), ( 50 , 2.367291606 , 1.180361645 ), ( 50 , 3.76718911 , 0.147420181 ), ( 50 , 4.150670306 , 0.366135963 ), ( 50 , 3.958872547 , 0.434029411 ), ( 50 , 4.664694953 , 0.886321548 ), ( 50 , 4.150532116 , 0.62229649 ), ( 50 , 4.227928175 , 0.636926112 ), ( 50 , 4.065666868 , 0.713826596 ), ( 50 , 4.591015905 , 0.963153342 ), ( 50 , 3.629371 , 0.601161433 ), ( 50 , 3.434720278 , 0.482134198 ), ( 50 , 3.566830006 , 0.633468314 ), ( 50 , 3.555234803 , 0.648954398 ), ( 50 , 3.743718812 , 0.619759465 ), ( 50 , 3.246423602 , 0.899932524 ), ( 50 , 3.406599034 , 0.983778458 ), ( 50 , 4.179118505 , 0.955576621 ), ( 50 , 4.433327654 , 1.136822748 ), ( 50 , 4.265129764 , 1.322209946 ), ( 50 , 5.729318675 , 0.45247886 ), ( 50 , 5.298289788 , 0.265255236 ), ( 50 , 5.404116224 , 0.420901976 ), ( 50 , 5.266053628 , 0.412149502 ), ( 50 , 5.578304778 , 0.767000391 ), ( 50 , 6.008625056 , 0.849696628 ), ( 50 , 5.299414046 , 0.642399634 ), ( 50 , 5.216911838 , 0.915228752 ), ( 50 , 4.905856826 , 0.692381931 ), ( 50 , 4.898408273 , 0.969349428 ), ( 50 , 6.230450038 , 1.183451881 ), ( 50 , 5.802391618 , 1.262592561 ), ( 50 , 5.966801149 , 1.451313821 ), ( 50 , 5.997142898 , 1.472121386 ), ( 50 , 0.192814106 , -0.185185312 ), ( 50 , 6.203615126 , -0.310957061 ), ( 50 , 0.049139367 , -0.269999814 ), ( 50 , 6.19498481 , -0.248229359 ), ( 50 , 6.104125552 , -0.167740172 ), ( 50 , 0.007961465 , -0.052841152 ), ( 50 , 0.23129278 , -0.019973007 ), ( 50 , 5.881152597 , 0.081917748 ), ( 50 , 6.052419096 , 0.444501335 ), ( 50 , 1.509702638 , -0.56385633 ), ( 50 , 1.376220622 , -0.470256464 ), ( 50 , 1.592548882 , -0.287708128 ), ( 50 , 1.463378806 , -0.09452787 ), ( 50 , 1.462910987 , -0.094067899 ), ( 50 , 2.058177039 , 0.030837182 ), ( 50 , 1.717543849 , -0.02129784 ), ( 50 , 1.777311615 , 0.140275142 ), ( 50 , 1.216890593 , -0.211589555 ), ( 50 , 1.438731863 , -0.019066242 ), ( 50 , 1.022293575 , -0.051569814 ), ( 50 , 0.869911807 , 0.05883245 ), ( 50 , 1.276414903 , 0.248713975 ), ( 50 , 1.537811574 , 0.032377297 ), ( 50 , 1.531709214 , 0.651099493 ), ( 50 , 2.90303166 , -0.476363981 ), ( 50 , 3.523161864 , -0.278789076 ), ( 50 , 3.37874839 , -0.166488623 ), ( 50 , 3.542851905 , -0.109190117 ), ( 50 , 3.788230416 , -0.038885608 ), ( 50 , 3.480206263 , 0.095469056 ), ( 50 , 2.750160012 , -0.011121161 ), ( 50 , 3.012069296 , -0.052422916 ), ( 50 , 2.887770244 , -0.043368571 ), ( 50 , 2.883045021 , 0.106487457 ), ( 50 , 3.398692532 , 0.303856186 ), ( 50 , 3.231974109 , 0.310554922 ), ( 50 , 3.259349629 , 0.468195711 ), ( 50 , 3.256786905 , 0.475919121 ), ( 50 , 4.734295394 , -0.516270511 ), ( 50 , 4.640075561 , -0.378448538 ), ( 50 , 4.908007917 , 0.035952663 ), ( 50 , 4.957805883 , 0.0733444 ), ( 50 , 5.004629736 , 0.193227428 ), ( 50 , 4.2411494 , -0.175656209 ), ( 50 , 4.523066866 , -0.007778936 ), ( 50 , 0.743818813 , -1.310168587 ), ( 50 , 1.526685734 , -1.167643745 ), ( 50 , 0.006928681 , -1.345072076 ), ( 50 , 0.780153783 , -1.118254318 ), ( 50 , 1.385303036 , -0.609077303 ), ( 50 , 1.094541156 , -0.732917765 ), ( 50 , 1.019491313 , -0.606193175 ), ( 50 , 0.462993506 , -0.934128484 ), ( 50 , 0.511260744 , -0.827027856 ), ( 50 , 0.746290621 , -0.3665918 ), ( 50 , 2.504039098 , -1.412689808 ), ( 50 , 3.090299139 , -1.166142066 ), ( 50 , 1.608904524 , -1.20154189 ), ( 50 , 2.44758891 , -1.089166347 ), ( 50 , 2.470942639 , -0.931636375 ), ( 50 , 2.284946204 , -0.869571416 ), ( 50 , 2.404509914 , -0.783092098 ), ( 50 , 2.787068875 , -1.032938061 ), ( 50 , 2.754757749 , -0.937486636 ), ( 50 , 2.574148306 , -0.798185556 ), ( 50 , 1.849573108 , -0.865384914 ), ( 50 , 2.153745968 , -0.82015738 ), ( 50 , 2.082642772 , -0.769861486 ), ( 50 , 2.039487951 , -0.672145633 ), ( 50 , 2.18755418 , -0.636768144 ), ( 50 , 1.825692022 , -0.59536122 ), ( 50 , 1.764852266 , -0.542282464 ), ( 50 , 1.913910913 , -0.641280943 ), ( 50 , 2.44997441 , -0.453183618 ), ( 50 , 2.475366566 , -0.389993186 ), ( 50 , 2.532059511 , -0.250148082 ), ( 50 , 2.442467133 , -0.208999105 ), ( 50 , 2.445569368 , -0.166781779 ), ( 50 , 3.744726289 , -1.413860011 ), ( 50 , 4.277563412 , -1.37350442 ), ( 50 , 3.762865013 , -1.398166845 ), ( 50 , 4.313081243 , -1.223190209 ), ( 50 , 4.546532724 , -1.182822271 ), ( 50 , 4.392406659 , -1.171286711 ), ( 50 , 4.000940554 , -1.063905268 ), ( 50 , 3.730427813 , -0.996343349 ), ( 50 , 3.70841801 , -0.93269659 ), ( 50 , 4.286816988 , -0.865203878 ), ( 50 , 4.458779806 , -0.561016389 ), ( 50 , 3.465521226 , -1.031564653 ), ( 50 , 3.531764602 , -0.893000918 ), ( 50 , 3.455924827 , -0.659781612 ), ( 50 , 3.990790046 , -0.550112363 ), ( 50 , 4.159703628 , -0.351984014 ), ( 50 , 4.110012588 , -0.343473247 ), ( 50 , 3.765940017 , -0.484413174 ), ( 50 , 4.032566554 , -0.180176211 ), ( 50 , 5.40001378 , -1.073908463 ), ( 50 , 6.272668365 , -1.122223298 ), ( 50 , 6.227627204 , -0.876619893 ), ( 50 , 5.827727909 , -0.721632074 ), ( 50 , 5.706070723 , -0.53927739 ), ( 50 , 5.073910668 , -0.949886815 ), ( 50 , 5.251521145 , -0.662200291 ), ( 50 , 4.852156978 , -0.798618233 ), ( 50 , 4.968596657 , -0.647656956 ), ( 50 , 5.04200131 , -0.440815885 ), ( 50 , 5.227047258 , -0.270390543 ), ( 51 , 0.918075655 , 0.1978562 ), ( 51 , 0.680127746 , 0.097617763 ), ( 51 , 0.552247515 , 0.395284964 ), ( 51 , 0.564717377 , 0.452733647 ), ( 51 , 0.867125512 , 0.597296998 ), ( 51 , 0.773565212 , 0.557353644 ), ( 51 , 1.076028382 , 0.481702852 ), ( 51 , 1.376217145 , 0.570507739 ), ( 51 , 1.396330347 , 0.592679438 ), ( 51 , 1.404150123 , 0.729622856 ), ( 51 , 1.264968017 , 0.654298658 ), ( 51 , 1.001575021 , 0.577554192 ), ( 51 , 1.338126047 , 0.900529309 ), ( 51 , 0.707940003 , 0.701494208 ), ( 51 , 0.444258629 , 0.743725089 ), ( 51 , 0.581288729 , 0.771986907 ), ( 51 , 0.296794842 , 0.766926826 ), ( 51 , 0.045033834 , 0.804112795 ), ( 51 , 0.359282968 , 0.794628152 ), ( 51 , 0.239986759 , 1.029262318 ), ( 51 , 0.866686992 , 0.876539372 ), ( 51 , 0.916301343 , 0.967815151 ), ( 51 , 2.11653385 , 0.228948435 ), ( 51 , 2.033840277 , 0.323054148 ), ( 51 , 2.807416586 , 0.404714983 ), ( 51 , 2.88344829 , 0.684376561 ), ( 51 , 1.960613922 , 0.490750104 ), ( 51 , 1.742407711 , 0.741564046 ), ( 51 , 2.771099526 , 1.321439603 ), ( 51 , 3.846904487 , 0.142450051 ), ( 51 , 3.751366284 , 0.284617116 ), ( 51 , 3.936190083 , 0.436468401 ), ( 51 , 3.854656906 , 0.462996456 ), ( 51 , 4.285193084 , 0.539180049 ), ( 51 , 4.357848841 , 0.853963861 ), ( 51 , 3.404586805 , 0.537299182 ), ( 51 , 3.42843454 , 0.624811101 ), ( 51 , 3.482980434 , 0.867117571 ), ( 51 , 4.367331363 , 1.127289533 ), ( 51 , 3.703784145 , 1.353463413 ), ( 51 , 5.18789517 , 0.334093691 ), ( 51 , 5.715279147 , 0.526636159 ), ( 51 , 6.032767817 , 0.74626431 ), ( 51 , 5.940565912 , 0.702065949 ), ( 51 , 6.098815496 , 0.855479136 ), ( 51 , 5.649545502 , 0.672558399 ), ( 51 , 5.659009935 , 0.705350447 ), ( 51 , 6.226727383 , 1.023677244 ), ( 51 , 5.073882103 , 0.458364237 ), ( 51 , 5.108389218 , 0.488085934 ), ( 51 , 5.176766235 , 0.588603301 ), ( 51 , 5.16739323 , 0.651960793 ), ( 51 , 5.088299175 , 0.633868532 ), ( 51 , 5.235638496 , 0.646520288 ), ( 51 , 5.454533331 , 0.768995914 ), ( 51 , 4.818107868 , 0.689530766 ), ( 51 , 4.980474195 , 0.819156347 ), ( 51 , 4.944629712 , 0.885022742 ), ( 51 , 4.816707805 , 1.026274098 ), ( 51 , 4.773126 , 1.123948964 ), ( 51 , 5.809805 , 1.036977116 ), ( 51 , 5.78204194 , 1.086987456 ), ( 51 , 6.102669917 , 1.18877015 ), ( 51 , 5.206709632 , 1.003975207 ), ( 51 , 4.825803622 , 1.144295358 ), ( 51 , 4.949761992 , 1.244376002 ), ( 51 , 0.121857284 , -0.576089713 ), ( 51 , 6.24547067 , -0.330027651 ), ( 51 , 6.277387858 , -0.062072003 ), ( 51 , 0.393542889 , 0.107224368 ), ( 51 , 5.78437906 , 0.088300299 ), ( 51 , 0.063728325 , 0.352673636 ), ( 51 , 1.742182408 , -0.246890927 ), ( 51 , 1.411546431 , -0.24307829 ), ( 51 , 1.656811312 , -0.136535637 ), ( 51 , 1.566747855 , -0.166828572 ), ( 51 , 1.940237346 , -0.282771558 ), ( 51 , 2.033079577 , -0.254185626 ), ( 51 , 1.877223837 , -0.073925111 ), ( 51 , 1.110005716 , -0.179025584 ), ( 51 , 1.338497974 , -0.081248053 ), ( 51 , 1.494332086 , 0.025735396 ), ( 51 , 1.151321533 , 0.165125182 ), ( 51 , 1.108020011 , 0.161680588 ), ( 51 , 1.110917841 , 0.174730444 ), ( 51 , 1.173031548 , 0.227721808 ), ( 51 , 1.218042354 , 0.27575145 ), ( 51 , 1.64255556 , 0.214212257 ), ( 51 , 1.585877305 , 0.343662768 ), ( 51 , 1.415600249 , 0.303399056 ), ( 51 , 1.271371167 , 0.328813206 ), ( 51 , 1.341572495 , 0.325419747 ), ( 51 , 1.588773517 , 0.406014904 ), ( 51 , 1.522868621 , 0.428781417 ), ( 51 , 1.482382585 , 0.451986831 ), ( 51 , 3.456021851 , -0.282753871 ), ( 51 , 3.231291375 , -0.387743962 ), ( 51 , 3.145310856 , -0.343113121 ), ( 51 , 3.12420241 , -0.299339359 ), ( 51 , 2.987170905 , -0.18952801 ), ( 51 , 3.770726683 , 0.101581016 ), ( 51 , 3.527412497 , 0.240415415 ), ( 51 , 2.786329528 , -0.294548596 ), ( 51 , 2.585297204 , -0.141462743 ), ( 51 , 2.74661162 , -0.047807469 ), ( 51 , 2.882241839 , 0.063135335 ), ( 51 , 3.211409283 , 0.260034026 ), ( 51 , 3.374132315 , 0.370791507 ), ( 51 , 3.36716901 , 0.480675127 ), ( 51 , 4.948749116 , -0.39697332 ), ( 51 , 5.051132719 , -0.330791939 ), ( 51 , 4.962587376 , -0.360522017 ), ( 51 , 4.849563806 , -0.321190334 ), ( 51 , 4.951143474 , -0.272325175 ), ( 51 , 4.725838183 , -0.142778652 ), ( 51 , 5.159720385 , -0.281418044 ), ( 51 , 4.902287172 , -0.144429151 ), ( 51 , 4.961372804 , -0.102042445 ), ( 51 , 5.034018113 , 0.04003247 ), ( 51 , 4.803440771 , 0.058944081 ), ( 51 , 5.145205181 , 0.094208351 ), ( 51 , 4.455209938 , -0.073708547 ), ( 51 , 4.15064319 , -0.053942673 ), ( 51 , 4.331033671 , 0.200494541 ), ( 51 , 4.751141102 , 0.34985279 ), ( 51 , 4.913429968 , 0.465344824 ), ( 51 , 4.541795442 , 0.427595622 ), ( 51 , 1.36903155 , -1.172599345 ), ( 51 , 0.330739986 , -1.20209795 ), ( 51 , 1.230716834 , -0.64826508 ), ( 51 , 0.142842358 , -1.100113291 ), ( 51 , 0.32817308 , -0.79465588 ), ( 51 , 0.49901554 , -0.741714972 ), ( 51 , 0.64589842 , -0.590113306 ), ( 51 , 0.390970983 , -0.377502629 ), ( 51 , 0.865546627 , -0.392891801 ), ( 51 , 0.943748036 , -0.304858873 ), ( 51 , 2.248237578 , -1.016211999 ), ( 51 , 2.24855694 , -1.012448906 ), ( 51 , 2.268748385 , -0.925976834 ), ( 51 , 2.205753367 , -0.902811563 ), ( 51 , 3.046110948 , -1.079074817 ), ( 51 , 2.82288183 , -0.990599899 ), ( 51 , 3.082521764 , -0.706815707 ), ( 51 , 3.004510983 , -0.744804322 ), ( 51 , 2.715406741 , -0.726921653 ), ( 51 , 2.419057672 , -0.754460405 ), ( 51 , 2.780419388 , -0.478438224 ), ( 51 , 1.851383374 , -0.990469155 ), ( 51 , 2.13680211 , -0.83666065 ), ( 51 , 2.136274739 , -0.770087184 ), ( 51 , 2.222928938 , -0.780594323 ), ( 51 , 2.039962307 , -0.813470535 ), ( 51 , 2.187697693 , -0.576907101 ), ( 51 , 1.905087066 , -0.406933409 ), ( 51 , 2.267650055 , -0.515949338 ), ( 51 , 2.592685401 , -0.452597915 ), ( 51 , 2.54044947 , -0.417373597 ), ( 51 , 2.276443276 , -0.278276301 ), ( 51 , 3.478510148 , -1.165591717 ), ( 51 , 4.003996569 , -1.110210965 ), ( 51 , 3.763875002 , -1.020302679 ), ( 51 , 4.023559785 , -0.83651392 ), ( 51 , 4.556259937 , -0.770785721 ), ( 51 , 4.698383258 , -0.773920737 ), ( 51 , 4.702774529 , -0.728088527 ), ( 51 , 4.255347789 , -0.826803269 ), ( 51 , 4.175228537 , -0.592825135 ), ( 51 , 4.300426598 , -0.409233236 ), ( 51 , 3.379888049 , -0.997782699 ), ( 51 , 3.390612701 , -0.893588705 ), ( 51 , 3.608200887 , -0.632716917 ), ( 51 , 3.658723211 , -0.435851825 ), ( 51 , 4.077268249 , -0.160284355 ), ( 51 , 5.419037522 , -1.165196504 ), ( 51 , 5.451903715 , -0.806807158 ), ( 51 , 5.958697184 , -0.933751141 ), ( 51 , 5.949390911 , -0.722828034 ), ( 51 , 5.803919937 , -0.56807526 ), ( 51 , 5.127847585 , -0.839493873 ), ( 51 , 4.818434869 , -0.769871856 ), ( 51 , 4.903425691 , -0.668876784 ), ( 51 , 5.23142452 , -0.45719902 ), ( 51 , 5.084476557 , -0.427761853 ), ( 51 , 5.454016558 , -0.589569906 ), ( 51 , 5.355195992 , -0.317856129 ), ( 51 , 5.407344247 , -0.261011592 ), ( 51 , 5.176465457 , -0.344907488 ), ( 52 , 0.719787601 , 0.217208958 ), ( 52 , 0.878022093 , 0.36908353 ), ( 52 , 1.00001928 , 0.421259288 ), ( 52 , 0.781295361 , 0.614062277 ), ( 52 , 1.136003082 , 0.477351332 ), ( 52 , 1.136252154 , 0.603302324 ), ( 52 , 1.391904126 , 0.589017086 ), ( 52 , 1.548821826 , 1.04524708 ), ( 52 , 1.120140823 , 0.935702405 ), ( 52 , 1.411381539 , 1.00433263 ), ( 52 , 1.335790105 , 1.029261216 ), ( 52 , 0.310286382 , 0.548463887 ), ( 52 , 0.593139762 , 0.582218637 ), ( 52 , 0.43349305 , 0.774685942 ), ( 52 , 0.123179853 , 0.774827831 ), ( 52 , 0.349423045 , 1.016333231 ), ( 52 , 0.789200688 , 0.913707085 ), ( 52 , 1.066625389 , 1.032458529 ), ( 52 , 0.449149322 , 1.23259389 ), ( 52 , 1.407377435 , 1.382864097 ), ( 52 , 2.382253273 , 0.088876693 ), ( 52 , 2.495571289 , 0.197209091 ), ( 52 , 2.389994136 , 0.186193746 ), ( 52 , 2.147695084 , 0.307991458 ), ( 52 , 2.877413727 , 0.705647768 ), ( 52 , 2.979385848 , 0.758914965 ), ( 52 , 2.607870757 , 0.716552819 ), ( 52 , 2.416418823 , 0.754289576 ), ( 52 , 2.568244983 , 0.80320691 ), ( 52 , 2.771429956 , 0.996284435 ), ( 52 , 1.935016626 , 0.437210725 ), ( 52 , 2.109742278 , 0.485097333 ), ( 52 , 1.883459274 , 0.686273429 ), ( 52 , 1.792299422 , 0.729203403 ), ( 52 , 1.9681803 , 1.438346397 ), ( 52 , 4.07883894 , 0.183918903 ), ( 52 , 4.224021585 , 0.297525073 ), ( 52 , 3.620313242 , 0.371130665 ), ( 52 , 4.313771307 , 0.730972421 ), ( 52 , 3.463229884 , 0.700801879 ), ( 52 , 3.254367941 , 0.68099924 ), ( 52 , 4.130623498 , 1.092561539 ), ( 52 , 4.666378099 , 1.34328562 ), ( 52 , 3.293135322 , 1.222110057 ), ( 52 , 3.194827246 , 1.354661393 ), ( 52 , 4.064041171 , 1.350001981 ), ( 52 , 5.597685704 , 0.118878118 ), ( 52 , 5.29813263 , 0.500816721 ), ( 52 , 5.431787672 , 0.441033208 ), ( 52 , 5.441851697 , 0.599942564 ), ( 52 , 5.986645468 , 0.755947157 ), ( 52 , 6.222249133 , 0.810185756 ), ( 52 , 5.617150979 , 0.647810539 ), ( 52 , 6.12976382 , 1.087038747 ), ( 52 , 4.974249304 , 0.561046185 ), ( 52 , 5.152385334 , 0.794574629 ), ( 52 , 5.006050057 , 0.630066067 ), ( 52 , 4.745020607 , 0.758546171 ), ( 52 , 5.034917978 , 1.007134743 ), ( 52 , 5.502946506 , 0.805570468 ), ( 52 , 5.928232788 , 1.10975604 ), ( 52 , 5.915731994 , 1.28531899 ), ( 52 , 5.218196348 , 1.02705336 ), ( 52 , 5.373465399 , 1.308202923 ), ( 52 , 5.756283175 , 1.277210713 ), ( 52 , 5.014204197 , 1.336218389 ), ( 52 , 5.817182378 , 1.502872953 ), ( 52 , 0.132543724 , -0.415171727 ), ( 52 , 6.214254161 , -0.318993197 ), ( 52 , 0.019642866 , -0.183427201 ), ( 52 , 0.373595399 , -0.254799072 ), ( 52 , 0.339457547 , 0.063081737 ), ( 52 , 6.072595108 , 0.152194105 ), ( 52 , 0.213708532 , 0.295645685 ), ( 52 , 6.213344501 , 0.512449096 ), ( 52 , 1.551160436 , -0.647879922 ), ( 52 , 1.814191312 , -0.400403227 ), ( 52 , 1.775224421 , -0.25177968 ), ( 52 , 1.318449354 , -0.458594928 ), ( 52 , 1.396190794 , -0.214946616 ), ( 52 , 1.589230927 , -0.117092854 ), ( 52 , 1.533125119 , -0.131213986 ), ( 52 , 2.008816278 , -0.266409009 ), ( 52 , 1.980072745 , -0.25348946 ), ( 52 , 2.09323615 , -0.064221211 ), ( 52 , 1.658032688 , -0.05139089 ), ( 52 , 2.034483025 , 0.187938383 ), ( 52 , 1.944507095 , 0.1618973 ), ( 52 , 1.150518909 , -0.065377508 ), ( 52 , 1.347087983 , -0.077773537 ), ( 52 , 1.451630642 , -0.027782908 ), ( 52 , 1.455273324 , -0.020177407 ), ( 52 , 1.186290561 , -0.000769069 ), ( 52 , 1.209634583 , 0.017423325 ), ( 52 , 0.979603619 , -0.020300448 ), ( 52 , 1.053894858 , -0.027048568 ), ( 52 , 0.841158468 , -0.020884212 ), ( 52 , 1.286226554 , 0.199423194 ), ( 52 , 1.171289473 , 0.285532435 ), ( 52 , 1.565672986 , 0.009651624 ), ( 52 , 1.517194062 , 0.242592324 ), ( 52 , 1.755825922 , 0.307958213 ), ( 52 , 1.393109175 , 0.385647682 ), ( 52 , 1.724389862 , 0.489079949 ), ( 52 , 3.442896752 , -0.403491573 ), ( 52 , 2.981700092 , -0.327775615 ), ( 52 , 3.23034932 , 0.057807564 ), ( 52 , 3.001694889 , 0.049849925 ), ( 52 , 2.518551319 , 0.11930653 ), ( 52 , 2.61023689 , 0.217200894 ), ( 52 , 3.267740652 , 0.452262748 ), ( 52 , 3.21289588 , 0.417925426 ), ( 52 , 3.247657793 , 0.455505176 ), ( 52 , 3.213589895 , 0.577019354 ), ( 52 , 4.763538093 , -0.413668413 ), ( 52 , 4.82300288 , -0.358523061 ), ( 52 , 4.370184202 , -0.309659413 ), ( 52 , 5.063861536 , -0.094517319 ), ( 52 , 5.365368819 , -0.050364701 ), ( 52 , 5.396241802 , -0.044506973 ), ( 52 , 4.051934246 , 0.032146205 ), ( 52 , 4.01130608 , 0.030749935 ), ( 52 , 4.39723979 , 0.091568229 ), ( 52 , 4.800960601 , 0.383289667 ), ( 52 , 4.464255117 , 0.245943303 ), ( 52 , 4.5392294 , 0.315148621 ), ( 52 , 4.722791684 , 0.363614394 ), ( 52 , 4.738705488 , 0.387791702 ), ( 52 , 4.804093511 , 0.503881484 ), ( 52 , 4.743033822 , 0.533415937 ), ( 52 , 4.764321744 , 0.54812971 ), ( 52 , 1.052897562 , -1.066015088 ), ( 52 , 0.801147953 , -1.042628551 ), ( 52 , 0.579921857 , -0.536231121 ), ( 52 , 0.993364045 , -0.416685849 ), ( 52 , 0.509077022 , -0.393169548 ), ( 52 , 0.770662026 , -0.06479761 ), ( 52 , 0.779728527 , -0.048578404 ), ( 52 , 2.264947105 , -1.228485186 ), ( 52 , 2.753403547 , -1.27795519 ), ( 52 , 3.097710382 , -1.225671341 ), ( 52 , 2.819905502 , -1.125990188 ), ( 52 , 2.820853407 , -1.121603931 ), ( 52 , 2.93542747 , -1.119973091 ), ( 52 , 2.676934285 , -1.158422686 ), ( 52 , 2.435157302 , -0.891003667 ), ( 52 , 2.214851883 , -0.926565665 ), ( 52 , 2.363796799 , -0.910863424 ), ( 52 , 2.35126004 , -0.824394237 ), ( 52 , 3.069682955 , -1.090645554 ), ( 52 , 3.058222538 , -1.083676586 ), ( 52 , 2.995811878 , -1.066660691 ), ( 52 , 2.917170573 , -1.081181948 ), ( 52 , 3.079332938 , -0.797442626 ), ( 52 , 2.911536468 , -0.744180327 ), ( 52 , 2.424302816 , -0.673173737 ), ( 52 , 1.988205162 , -0.91688981 ), ( 52 , 1.816305442 , -0.850343378 ), ( 52 , 2.277428944 , -0.792565892 ), ( 52 , 2.270313441 , -0.702736323 ), ( 52 , 2.019993811 , -0.788486745 ), ( 52 , 2.081143698 , -0.759224116 ), ( 52 , 1.913571139 , -0.684347401 ), ( 52 , 1.777427204 , -0.661999312 ), ( 52 , 2.060598355 , -0.60569525 ), ( 52 , 1.899575776 , -0.535577837 ), ( 52 , 2.259627489 , -0.458237701 ), ( 52 , 2.595604539 , -0.331780455 ), ( 52 , 2.501087602 , -0.368537034 ), ( 52 , 2.265107548 , -0.395468963 ), ( 52 , 2.152568744 , -0.275556958 ), ( 52 , 2.269024946 , -0.217736118 ), ( 52 , 2.309775438 , -0.06009489 ), ( 52 , 3.238110049 , -1.178483831 ), ( 52 , 4.247601754 , -0.953484265 ), ( 52 , 4.263034322 , -0.873854026 ), ( 52 , 4.552114009 , -0.828478456 ), ( 52 , 4.413771892 , -0.719608648 ), ( 52 , 4.186621847 , -0.728579992 ), ( 52 , 4.203370794 , -0.451438269 ), ( 52 , 3.585534936 , -0.952244649 ), ( 52 , 3.630630621 , -0.921738329 ), ( 52 , 3.297602901 , -0.715968008 ), ( 52 , 3.865890285 , -0.44408031 ), ( 52 , 4.102750425 , -0.415705934 ), ( 52 , 3.620984154 , -0.316505596 ), ( 52 , 3.712496445 , -0.284524942 ), ( 52 , 3.887809778 , -0.040142809 ), ( 52 , 5.979425897 , -1.398426432 ), ( 52 , 5.518379052 , -1.344363183 ), ( 52 , 5.90359117 , -1.081794517 ), ( 52 , 5.223361943 , -1.028024315 ), ( 52 , 6.036654999 , -0.606481482 ), ( 52 , 5.796379596 , -0.594183118 ), ( 52 , 4.787112375 , -0.977793488 ), ( 52 , 5.268212057 , -0.922942571 ), ( 52 , 5.447576878 , -0.767758227 ), ( 52 , 4.853571628 , -0.692970097 ), ( 52 , 4.812241308 , -0.640007623 ), ( 52 , 4.860579773 , -0.576249099 ), ( 52 , 5.254872616 , -0.559489691 ), ( 52 , 5.730374288 , -0.23652145 ), ( 53 , 1.132773673 , 0.380014087 ), ( 53 , 0.884674364 , 0.362015615 ), ( 53 , 1.004945434 , 0.446436077 ), ( 53 , 0.738678989 , 0.304808769 ), ( 53 , 0.512044884 , 0.310972595 ), ( 53 , 0.579469177 , 0.370202066 ), ( 53 , 0.606284256 , 0.499909098 ), ( 53 , 0.701127431 , 0.472299297 ), ( 53 , 1.1581145 , 0.387457419 ), ( 53 , 1.077761341 , 0.506169296 ), ( 53 , 1.42963422 , 0.601712894 ), ( 53 , 1.416563057 , 0.652496106 ), ( 53 , 1.234414121 , 0.756858354 ), ( 53 , 1.029614654 , 0.835511337 ), ( 53 , 1.221342623 , 0.926410707 ), ( 53 , 1.256668603 , 0.990582568 ), ( 53 , 0.607716671 , 0.826936139 ), ( 53 , 0.09216726 , 0.66267247 ), ( 53 , 0.298622913 , 0.958347933 ), ( 53 , 0.886718405 , 0.858930586 ), ( 53 , 0.856098378 , 0.889027802 ), ( 53 , 0.62115077 , 0.974690311 ), ( 53 , 1.034709882 , 1.066549688 ), ( 53 , 1.36299041 , 1.290609705 ), ( 53 , 0.522011591 , 1.127857742 ), ( 53 , 0.308304012 , 1.200410173 ), ( 53 , 1.310504942 , 1.417107714 ), ( 53 , 1.091029163 , 1.408456893 ), ( 53 , 2.495643522 , 0.16957055 ), ( 53 , 2.344199325 , 0.2674352 ), ( 53 , 2.075477745 , 0.347035865 ), ( 53 , 2.004845369 , 0.308478454 ), ( 53 , 2.181939946 , 0.474992866 ), ( 53 , 2.818114439 , 0.535502656 ), ( 53 , 2.861188119 , 0.584802923 ), ( 53 , 2.523582247 , 0.702318128 ), ( 53 , 2.59930362 , 0.869522704 ), ( 53 , 2.807961388 , 0.806401617 ), ( 53 , 1.96267413 , 0.487225575 ), ( 53 , 1.740177886 , 0.696429687 ), ( 53 , 1.758773302 , 0.777094597 ), ( 53 , 1.679435884 , 0.860235739 ), ( 53 , 2.02488473 , 0.880232563 ), ( 53 , 1.772532426 , 1.037451819 ), ( 53 , 1.648957347 , 1.073644002 ), ( 53 , 2.41877289 , 1.072035351 ), ( 53 , 2.805910852 , 1.205605798 ), ( 53 , 2.009257745 , 1.518783352 ), ( 53 , 4.109340016 , 0.224231276 ), ( 53 , 4.194188892 , 0.311008881 ), ( 53 , 3.990188176 , 0.50901647 ), ( 53 , 4.022146069 , 0.574803048 ), ( 53 , 4.414612455 , 0.430336606 ), ( 53 , 4.4575976 , 0.58587684 ), ( 53 , 4.492270356 , 0.711694269 ), ( 53 , 4.061947155 , 0.712670122 ), ( 53 , 3.650227698 , 0.479821488 ), ( 53 , 3.150760742 , 0.751297377 ), ( 53 , 4.59005699 , 1.189196597 ), ( 53 , 3.990935218 , 1.175374437 ), ( 53 , 3.383650469 , 1.142113181 ), ( 53 , 3.27295726 , 1.207781006 ), ( 53 , 4.001597187 , 1.253564721 ), ( 53 , 3.356361005 , 1.455832223 ), ( 53 , 5.406762735 , 0.176041209 ), ( 53 , 5.439525199 , 0.281394403 ), ( 53 , 5.258498604 , 0.348919742 ), ( 53 , 5.474053011 , 0.489697774 ), ( 53 , 6.11701198 , 0.555231333 ), ( 53 , 5.951969686 , 0.729883747 ), ( 53 , 6.192158168 , 0.880897666 ), ( 53 , 6.005823161 , 0.868013757 ), ( 53 , 5.006608424 , 0.567264948 ), ( 53 , 5.317368553 , 0.610564007 ), ( 53 , 5.241922312 , 0.874492534 ), ( 53 , 4.930038533 , 0.56812175 ), ( 53 , 4.87218322 , 0.584144978 ), ( 53 , 4.906032869 , 0.691378235 ), ( 53 , 4.806389632 , 0.857339699 ), ( 53 , 4.975184415 , 0.881975691 ), ( 53 , 5.195095675 , 0.924806591 ), ( 53 , 5.614998407 , 0.852337534 ), ( 53 , 5.420166344 , 0.878599548 ), ( 53 , 5.744979398 , 1.110475292 ), ( 53 , 5.618948874 , 1.166036247 ), ( 53 , 0.195206201 , -0.384069563 ), ( 53 , 6.120236268 , -0.262484966 ), ( 53 , 0.218689919 , -0.185806411 ), ( 53 , 0.324649402 , -0.138245701 ), ( 53 , 0.448222025 , -0.064410184 ), ( 53 , 0.153830792 , -0.062708298 ), ( 53 , 0.321731516 , 0.132208543 ), ( 53 , 5.805949176 , -0.201845199 ), ( 53 , 5.847721403 , -0.136504037 ), ( 53 , 5.924321218 , -0.073807977 ), ( 53 , 6.094901316 , -0.134854511 ), ( 53 , 6.110158818 , 0.093914297 ), ( 53 , 5.694156854 , -0.158518497 ), ( 53 , 5.670372344 , 0.039147388 ), ( 53 , 5.848860393 , 0.101046032 ), ( 53 , 6.06512337 , 0.171426815 ), ( 53 , 5.988294231 , 0.171670046 ), ( 53 , 0.286601773 , 0.374775062 ), ( 53 , 6.122077206 , 0.214915718 ), ( 53 , 6.250407695 , 0.333707681 ), ( 53 , 0.1314413 , 0.519255772 ), ( 53 , 1.493362232 , -0.605061319 ), ( 53 , 1.585029857 , -0.458741439 ), ( 53 , 1.771463643 , -0.258243327 ), ( 53 , 1.784434236 , -0.264325644 ), ( 53 , 1.266214246 , -0.283036487 ), ( 53 , 1.696576471 , -0.122778268 ), ( 53 , 1.599792462 , -0.073196777 ), ( 53 , 2.058487152 , -0.242592274 ), ( 53 , 1.995244259 , -0.071748105 ), ( 53 , 2.300557191 , -0.033109236 ), ( 53 , 1.778578705 , -0.157053352 ), ( 53 , 1.972654408 , 0.033413869 ), ( 53 , 1.95491927 , 0.121154955 ), ( 53 , 1.979236142 , 0.276226065 ), ( 53 , 1.174237632 , -0.227737094 ), ( 53 , 1.211273488 , -0.043179331 ), ( 53 , 1.46458436 , -0.08475332 ), ( 53 , 1.415817711 , -0.015540289 ), ( 53 , 1.458566714 , 0.065742769 ), ( 53 , 1.063531403 , 0.094868561 ), ( 53 , 0.984691453 , 0.105590718 ), ( 53 , 1.137118191 , 0.263462788 ), ( 53 , 1.709573824 , 0.201491366 ), ( 53 , 1.890940466 , 0.282022106 ), ( 53 , 1.928352784 , 0.356806274 ), ( 53 , 1.638073448 , 0.281750266 ), ( 53 , 1.635570159 , 0.334320975 ), ( 53 , 1.795728261 , 0.379799298 ), ( 53 , 1.427541587 , 0.313497463 ), ( 53 , 1.463687862 , 0.419567968 ), ( 53 , 1.343053935 , 0.356364013 ), ( 53 , 3.092506539 , -0.466872991 ), ( 53 , 2.851408094 , -0.351516051 ), ( 53 , 3.584951096 , -0.15189096 ), ( 53 , 3.34062396 , 0.133925378 ), ( 53 , 3.476546651 , 0.164505699 ), ( 53 , 2.781859795 , -0.233607337 ), ( 53 , 2.694899835 , -0.140828695 ), ( 53 , 2.769826009 , 0.12137273 ), ( 53 , 2.832918399 , 0.184045351 ), ( 53 , 3.141365904 , 0.063794515 ), ( 53 , 3.08885492 , 0.143919037 ), ( 53 , 3.294872939 , 0.320743001 ), ( 53 , 4.952904551 , -0.395692002 ), ( 53 , 4.77877759 , -0.361776735 ), ( 53 , 4.517502275 , -0.464445217 ), ( 53 , 4.517483281 , -0.46442652 ), ( 53 , 4.865285325 , -0.191589039 ), ( 53 , 5.107987632 , -0.048676564 ), ( 53 , 5.196867168 , 0.181772042 ), ( 53 , 5.219574941 , 0.199382253 ), ( 53 , 5.013450492 , 0.10598794 ), ( 53 , 5.051928315 , 0.202379988 ), ( 53 , 5.083229903 , 0.208547273 ), ( 53 , 4.128110906 , -0.031492799 ), ( 53 , 4.94047548 , 0.373938035 ), ( 53 , 4.531820362 , 0.189609009 ), ( 53 , 4.718932518 , 0.376915056 ), ( 53 , 0.212077081 , -1.307664777 ), ( 53 , 0.737534797 , -1.096177138 ), ( 53 , 0.701019443 , -0.952074865 ), ( 53 , 1.240729638 , -1.042528102 ), ( 53 , 1.33068197 , -0.865296709 ), ( 53 , 0.997427381 , -0.656628816 ), ( 53 , 0.221173427 , -0.889882487 ), ( 53 , 0.295829147 , -0.724081842 ), ( 53 , 1.08776443 , -0.285987043 ), ( 53 , 0.621983436 , -0.415680966 ), ( 53 , 0.804060847 , -0.1326578 ), ( 53 , 2.432193364 , -1.307148849 ), ( 53 , 2.190699451 , -1.281067684 ), ( 53 , 2.180852455 , -1.248166195 ), ( 53 , 2.981699188 , -1.133672789 ), ( 53 , 2.991926694 , -1.116538341 ), ( 53 , 2.776555773 , -1.039599479 ), ( 53 , 1.61553808 , -1.304712489 ), ( 53 , 1.795289334 , -1.238542053 ), ( 53 , 2.174308773 , -1.145163595 ), ( 53 , 2.160996612 , -1.098086593 ), ( 53 , 2.35354833 , -1.031171116 ), ( 53 , 2.266293637 , -0.932697089 ), ( 53 , 2.245915895 , -0.871688583 ), ( 53 , 2.278831553 , -0.839487028 ), ( 53 , 3.018603419 , -1.038743863 ), ( 53 , 3.018405417 , -1.037459479 ), ( 53 , 2.847128483 , -0.999033085 ), ( 53 , 2.676370607 , -0.894185654 ), ( 53 , 2.761751008 , -0.820362574 ), ( 53 , 3.036557878 , -0.831509469 ), ( 53 , 2.981068518 , -0.631194425 ), ( 53 , 2.644987325 , -0.826768442 ), ( 53 , 2.613055384 , -0.626417581 ), ( 53 , 2.766409717 , -0.414428766 ), ( 53 , 1.619875557 , -1.144736846 ), ( 53 , 1.601591357 , -1.084810366 ), ( 53 , 1.922682502 , -0.909070795 ), ( 53 , 1.947629842 , -0.890439677 ), ( 53 , 2.123507607 , -0.790039612 ), ( 53 , 2.207250429 , -0.735708265 ), ( 53 , 2.092081166 , -0.685863147 ), ( 53 , 2.069015334 , -0.62617632 ), ( 53 , 1.739340282 , -0.841598588 ), ( 53 , 1.788570808 , -0.813532275 ), ( 53 , 1.886102181 , -0.706838765 ), ( 53 , 1.850249207 , -0.73891612 ), ( 53 , 1.792770108 , -0.599822724 ), ( 53 , 1.959543166 , -0.677396512 ), ( 53 , 2.012638658 , -0.672535101 ), ( 53 , 1.98029611 , -0.634223858 ), ( 53 , 1.935270733 , -0.56203143 ), ( 53 , 1.933001723 , -0.557174442 ), ( 53 , 2.09044585 , -0.406842862 ), ( 53 , 3.512942501 , -1.307055106 ), ( 53 , 4.064495705 , -1.280892233 ), ( 53 , 4.169123161 , -1.197349012 ), ( 53 , 3.162384942 , -1.335504037 ), ( 53 , 3.751798131 , -1.069425984 ), ( 53 , 3.161861276 , -1.192565476 ), ( 53 , 3.586723897 , -1.02602912 ), ( 53 , 4.009103667 , -1.055860641 ), ( 53 , 4.616786364 , -0.951230165 ), ( 53 , 4.643205772 , -0.904698031 ), ( 53 , 4.497294672 , -0.777686341 ), ( 53 , 3.997095385 , -0.724157795 ), ( 53 , 4.034978665 , -0.693080881 ), ( 53 , 4.046116031 , -0.641717817 ), ( 53 , 4.295816815 , -0.655654761 ), ( 53 , 4.236924905 , -0.513420483 ), ( 53 , 3.328504258 , -1.100581088 ), ( 53 , 3.385728982 , -0.991972073 ), ( 53 , 3.241172122 , -1.006639817 ), ( 53 , 3.224462189 , -0.962428453 ), ( 53 , 3.177563642 , -0.849845466 ), ( 53 , 3.157612723 , -0.740627503 ), ( 53 , 3.2445186 , -0.618068641 ), ( 53 , 3.477073972 , -0.549892783 ), ( 53 , 3.908428329 , -0.590894939 ), ( 53 , 4.182597464 , -0.433394227 ), ( 53 , 4.162165886 , -0.42818744 ), ( 53 , 4.162307694 , -0.418499635 ), ( 53 , 3.720897047 , -0.475800146 ), ( 53 , 3.886342421 , -0.279212219 ), ( 53 , 6.248709599 , -1.431500413 ), ( 53 , 5.847016141 , -1.403943664 ), ( 53 , 5.556016627 , -1.223936657 ), ( 53 , 5.410789648 , -1.056846582 ), ( 53 , 5.460702774 , -0.900733265 ), ( 53 , 5.831327735 , -0.726533047 ), ( 53 , 5.910996018 , -0.361444376 ), ( 53 , 5.001825949 , -0.913535374 ), ( 53 , 5.200401194 , -0.695940514 ), ( 53 , 4.770035306 , -0.721451978 ), ( 53 , 4.809726333 , -0.674693677 ), ( 53 , 4.959680629 , -0.651765781 ), ( 53 , 5.53514147 , -0.369906621 ), ( 53 , 5.576131669 , -0.313900003 ), ( 53 , 5.679057784 , -0.245214659 ), ( 54 , 0.63188869 , 0.185187363 ), ( 54 , 0.748283562 , 0.263228751 ), ( 54 , 1.132002306 , 0.368997642 ), ( 54 , 0.996354114 , 0.408772197 ), ( 54 , 0.98089331 , 0.423925733 ), ( 54 , 0.447184495 , 0.353670646 ), ( 54 , 0.809156384 , 0.440785169 ), ( 54 , 0.646495399 , 0.517817048 ), ( 54 , 1.16627615 , 0.401359964 ), ( 54 , 1.145734635 , 0.447313884 ), ( 54 , 1.031830953 , 0.612276692 ), ( 54 , 0.926924852 , 0.803834808 ), ( 54 , 0.863022855 , 0.76837863 ), ( 54 , 0.925653844 , 0.838164366 ), ( 54 , 1.032417738 , 0.884785516 ), ( 54 , 0.577569844 , 0.528881139 ), ( 54 , 0.663680558 , 0.630890365 ), ( 54 , 0.630135107 , 0.872774468 ), ( 54 , 0.160450615 , 0.776476271 ), ( 54 , 0.488645443 , 0.962502412 ), ( 54 , 0.197592083 , 0.963794523 ), ( 54 , 0.108178077 , 1.07915521 ), ( 54 , 0.969331097 , 1.103343678 ), ( 54 , 0.893066232 , 1.127238232 ), ( 54 , 1.00020808 , 1.236925603 ), ( 54 , 0.208432347 , 1.306335615 ), ( 54 , 0.689541393 , 1.270920164 ), ( 54 , 0.547703815 , 1.328455917 ), ( 54 , 0.545997317 , 1.348808892 ), ( 54 , 1.170330279 , 1.462723389 ), ( 54 , 2.207456739 , 0.132024275 ), ( 54 , 2.58258257 , 0.425759235 ), ( 54 , 2.397030503 , 0.384766595 ), ( 54 , 2.368139736 , 0.426783189 ), ( 54 , 2.354199595 , 0.565806386 ), ( 54 , 3.006620963 , 0.686561179 ), ( 54 , 2.85174165 , 0.952689074 ), ( 54 , 1.953623844 , 0.374276054 ), ( 54 , 2.039874574 , 0.583210498 ), ( 54 , 1.928764496 , 0.641590463 ), ( 54 , 2.321054955 , 0.763178831 ), ( 54 , 2.036169432 , 0.654803659 ), ( 54 , 1.774733011 , 0.760589479 ), ( 54 , 1.902014201 , 1.040838834 ), ( 54 , 2.559210188 , 0.997076902 ), ( 54 , 2.800954494 , 1.146957388 ), ( 54 , 3.037113778 , 1.209898439 ), ( 54 , 2.392803081 , 1.167153187 ), ( 54 , 2.543602012 , 1.26104281 ), ( 54 , 2.115251414 , 1.387174879 ), ( 54 , 2.753518657 , 1.440922703 ), ( 54 , 4.039519073 , 0.269269087 ), ( 54 , 4.419892117 , 0.553296429 ), ( 54 , 4.683157864 , 0.69827677 ), ( 54 , 4.080795904 , 0.68085516 ), ( 54 , 4.346865219 , 0.923708684 ), ( 54 , 4.603339352 , 1.079857457 ), ( 54 , 3.834638685 , 0.775002534 ), ( 54 , 3.272283939 , 1.019383487 ), ( 54 , 4.113928705 , 0.913873679 ), ( 54 , 4.216389664 , 1.183517784 ), ( 54 , 3.527515801 , 1.046255562 ), ( 54 , 3.71783375 , 1.211820562 ), ( 54 , 4.236024352 , 1.324314862 ), ( 54 , 5.401007607 , 0.198576851 ), ( 54 , 5.384134292 , 0.227372412 ), ( 54 , 5.47864068 , 0.239484596 ), ( 54 , 5.716595677 , 0.301688626 ), ( 54 , 5.303636996 , 0.41030688 ), ( 54 , 5.618515601 , 0.481863411 ), ( 54 , 5.528536917 , 0.676698822 ), ( 54 , 5.785906961 , 0.785646621 ), ( 54 , 5.673138152 , 0.755272826 ), ( 54 , 5.626290963 , 0.812299098 ), ( 54 , 5.808329896 , 0.887040251 ), ( 54 , 5.928162347 , 0.99126693 ), ( 54 , 5.051538242 , 0.40187067 ), ( 54 , 4.961241116 , 0.574220026 ), ( 54 , 5.19482855 , 0.675846442 ), ( 54 , 5.223907349 , 0.704551491 ), ( 54 , 5.125542385 , 0.74023415 ), ( 54 , 5.14628739 , 0.747323652 ), ( 54 , 5.134013555 , 0.780061044 ), ( 54 , 4.995652602 , 0.931950047 ), ( 54 , 5.025142675 , 0.992385967 ), ( 54 , 5.811181945 , 0.992049564 ), ( 54 , 4.914711097 , 1.316579424 ), ( 54 , 5.685686709 , 1.262218762 ), ( 54 , 0.051223244 , -0.613173325 ), ( 54 , 0.093903164 , -0.505830833 ), ( 54 , 6.104810673 , -0.234908291 ), ( 54 , 0.063103223 , -0.135794575 ), ( 54 , 5.780486189 , -0.015823921 ), ( 54 , 6.062943571 , 0.151444914 ), ( 54 , 6.223805052 , 0.060853355 ), ( 54 , 6.210635382 , 0.180320736 ), ( 54 , 6.250974869 , 0.191068114 ), ( 54 , 0.376352391 , 0.334621955 ), ( 54 , 0.122399617 , 0.312296445 ), ( 54 , 1.660698315 , -0.595925216 ), ( 54 , 1.473679361 , -0.500724418 ), ( 54 , 1.650333725 , -0.348488534 ), ( 54 , 1.648005253 , -0.293492653 ), ( 54 , 1.815625589 , -0.245103334 ), ( 54 , 1.707741077 , -0.216283926 ), ( 54 , 1.861741147 , -0.197118494 ), ( 54 , 1.841057539 , -0.09986801 ), ( 54 , 1.730445776 , -0.090953413 ), ( 54 , 1.848454062 , 0.191143895 ), ( 54 , 1.941544513 , 0.203669721 ), ( 54 , 1.293301777 , -0.090257422 ), ( 54 , 1.392713945 , 0.04529974 ), ( 54 , 1.015320106 , -0.093572517 ), ( 54 , 0.962718811 , -0.090944704 ), ( 54 , 1.171708961 , 0.024097474 ), ( 54 , 1.217826653 , 0.13737462 ), ( 54 , 1.24804517 , 0.204300045 ), ( 54 , 1.106328511 , 0.134670457 ), ( 54 , 1.221979174 , 0.212887011 ), ( 54 , 1.645455188 , 0.173520112 ), ( 54 , 1.462330147 , 0.173398703 ), ( 54 , 1.843123475 , 0.422639219 ), ( 54 , 1.360016774 , 0.280050753 ), ( 54 , 1.599530093 , 0.671642336 ), ( 54 , 3.023351781 , -0.542573645 ), ( 54 , 3.473155059 , -0.348086695 ), ( 54 , 2.917889394 , -0.490102554 ), ( 54 , 3.232909933 , -0.236765431 ), ( 54 , 3.547237647 , -0.177417403 ), ( 54 , 3.437850737 , -0.18745673 ), ( 54 , 3.75044215 , -0.039549386 ), ( 54 , 3.642065912 , -0.026237023 ), ( 54 , 2.662039987 , -0.223693348 ), ( 54 , 2.939823541 , -0.001212707 ), ( 54 , 2.955241825 , 0.03507359 ), ( 54 , 3.345126174 , 0.289337162 ), ( 54 , 4.848003981 , -0.575772045 ), ( 54 , 5.010310335 , -0.336679181 ), ( 54 , 4.529171322 , -0.423887387 ), ( 54 , 5.127433436 , -0.184314834 ), ( 54 , 5.029510632 , -0.138571561 ), ( 54 , 5.40797934 , 0.00848861 ), ( 54 , 4.986879653 , -0.064558987 ), ( 54 , 5.064050702 , -0.015570659 ), ( 54 , 5.055092825 , 0.018941225 ), ( 54 , 5.159921724 , 0.206412071 ), ( 54 , 4.207847397 , -0.19849793 ), ( 54 , 4.20784547 , -0.198503833 ), ( 54 , 4.388767773 , 0.149796559 ), ( 54 , 4.970244233 , 0.237737896 ), ( 54 , 5.085362788 , 0.34553751 ), ( 54 , 4.567608885 , 0.350481087 ), ( 54 , 4.538574474 , 0.44571407 ), ( 54 , 4.663602531 , 0.447198709 ), ( 54 , 4.85565022 , 0.533272922 ), ( 54 , 1.528380628 , -1.385108988 ), ( 54 , 0.795258916 , -1.254932573 ), ( 54 , 1.448173265 , -1.332367742 ), ( 54 , 1.235112377 , -1.237975774 ), ( 54 , 0.865219629 , -1.090863331 ), ( 54 , 0.686832649 , -0.917052699 ), ( 54 , 1.423842088 , -1.028213364 ), ( 54 , 1.548255634 , -0.918632882 ), ( 54 , 1.531034054 , -0.909480715 ), ( 54 , 0.531038435 , -0.780403719 ), ( 54 , 0.460990337 , -0.437256631 ), ( 54 , 0.741348285 , -0.487676944 ), ( 54 , 1.137304449 , -0.360230546 ), ( 54 , 2.274691713 , -1.378167416 ), ( 54 , 3.05210431 , -1.141406327 ), ( 54 , 2.793353766 , -1.136211738 ), ( 54 , 2.315121681 , -1.165745479 ), ( 54 , 1.831898551 , -1.185337236 ), ( 54 , 2.092760937 , -1.057442371 ), ( 54 , 2.533815043 , -1.012003915 ), ( 54 , 2.487462054 , -0.899142723 ), ( 54 , 2.279031385 , -0.926767887 ), ( 54 , 2.329329479 , -0.829396975 ), ( 54 , 3.131405709 , -1.089936851 ), ( 54 , 3.041216648 , -1.069597709 ), ( 54 , 3.133968528 , -0.98292233 ), ( 54 , 2.934537934 , -0.856970004 ), ( 54 , 2.804201977 , -1.033509632 ), ( 54 , 3.026477876 , -0.708367906 ), ( 54 , 2.901184224 , -0.624908861 ), ( 54 , 2.503420566 , -0.855298962 ), ( 54 , 2.559113744 , -0.781123188 ), ( 54 , 2.427682329 , -0.772582086 ), ( 54 , 2.490130475 , -0.706274712 ), ( 54 , 2.720456347 , -0.663403373 ), ( 54 , 1.699396463 , -0.99226406 ), ( 54 , 1.836335669 , -0.897141928 ), ( 54 , 1.879678587 , -0.854002263 ), ( 54 , 2.221275647 , -0.83651672 ), ( 54 , 2.085063368 , -0.795476744 ), ( 54 , 2.106377531 , -0.720990644 ), ( 54 , 2.023288785 , -0.714449367 ), ( 54 , 2.113024904 , -0.570282546 ), ( 54 , 2.311943769 , -0.572133598 ), ( 54 , 2.231904556 , -0.341691823 ), ( 54 , 2.126248984 , -0.358740853 ), ( 54 , 2.049401721 , -0.300706654 ), ( 54 , 2.429013807 , -0.152624756 ), ( 54 , 4.54700932 , -1.223882209 ), ( 54 , 4.310785018 , -1.118018865 ), ( 54 , 4.323276501 , -1.075708806 ), ( 54 , 3.175718549 , -1.31540027 ), ( 54 , 3.513444317 , -1.125480781 ), ( 54 , 3.947976934 , -1.117556872 ), ( 54 , 3.862820401 , -1.097396933 ), ( 54 , 3.912734226 , -1.095736499 ), ( 54 , 3.907656795 , -1.049203842 ), ( 54 , 4.096387633 , -0.914079881 ), ( 54 , 3.797605649 , -0.864275107 ), ( 54 , 3.910797546 , -0.921699756 ), ( 54 , 4.464311603 , -0.929177245 ), ( 54 , 4.564041615 , -0.883720487 ), ( 54 , 4.327090194 , -0.729847179 ), ( 54 , 3.950204651 , -0.716758696 ), ( 54 , 4.231880942 , -0.585490352 ), ( 54 , 3.493403178 , -0.920625192 ), ( 54 , 3.796712045 , -0.791010214 ), ( 54 , 3.180467261 , -0.719628169 ), ( 54 , 3.265395188 , -0.681398395 ), ( 54 , 3.517431906 , -0.693863497 ), ( 54 , 3.940025177 , -0.569735584 ), ( 54 , 4.078059135 , -0.489516749 ), ( 54 , 4.070631329 , -0.294138997 ), ( 54 , 3.955900203 , -0.283737828 ), ( 54 , 5.867507243 , -1.261176596 ), ( 54 , 5.243610062 , -1.036307834 ), ( 54 , 5.195618238 , -1.033125914 ), ( 54 , 5.183734882 , -0.983729791 ), ( 54 , 5.520643193 , -0.955171563 ), ( 54 , 6.278526774 , -0.920580469 ), ( 54 , 5.554762637 , -0.688108401 ), ( 54 , 5.802905073 , -0.593669693 ), ( 54 , 5.822039847 , -0.484623724 ), ( 54 , 5.853801473 , -0.37697051 ), ( 54 , 4.968081615 , -1.050693842 ), ( 54 , 4.942172429 , -0.909456891 ), ( 54 , 5.383984375 , -0.776955851 ), ( 54 , 5.438167882 , -0.684159559 ), ( 54 , 5.23537522 , -0.605599271 ), ( 54 , 4.742198638 , -0.757917124 ), ( 54 , 4.920713631 , -0.705222861 ), ( 54 , 5.510723675 , -0.674259187 ), ( 54 , 5.525760813 , -0.564466793 ), ( 54 , 5.565994918 , -0.360440403 ), ( 54 , 5.410731896 , -0.316581981 ), ( 55 , 0.795764384 , 0.07597296 ), ( 55 , 0.692967337 , 0.383296944 ), ( 55 , 0.757961981 , 0.669105238 ), ( 55 , 1.094452579 , 0.462175592 ), ( 55 , 1.161113112 , 0.548697506 ), ( 55 , 1.397328625 , 0.717082827 ), ( 55 , 1.509274439 , 0.869632933 ), ( 55 , 0.964869328 , 0.655894798 ), ( 55 , 1.131073126 , 0.873507603 ), ( 55 , 1.13530124 , 0.888737222 ), ( 55 , 1.221598488 , 0.933268913 ), ( 55 , 1.287405062 , 0.964452283 ), ( 55 , 0.353969292 , 0.501567309 ), ( 55 , 0.274098613 , 0.55508534 ), ( 55 , 0.536537775 , 0.580916867 ), ( 55 , 0.615105306 , 0.875304897 ), ( 55 , 0.583031077 , 0.891246127 ), ( 55 , 0.179416481 , 0.688683204 ), ( 55 , 0.393142627 , 0.82042651 ), ( 55 , 0.1058612 , 0.907918346 ), ( 55 , 0.247766082 , 1.053529931 ), ( 55 , 0.028112363 , 1.120434424 ), ( 55 , 0.911380857 , 0.870015398 ), ( 55 , 1.137388378 , 1.136914636 ), ( 55 , 0.446568925 , 1.187573727 ), ( 55 , 0.311666802 , 1.120545815 ), ( 55 , 0.22134695 , 1.121329845 ), ( 55 , 0.312813474 , 1.134791557 ), ( 55 , 0.429849254 , 1.274787499 ), ( 55 , 0.874138961 , 1.356719431 ), ( 55 , 2.630278248 , 0.383086194 ), ( 55 , 2.128276152 , 0.376665482 ), ( 55 , 2.337261736 , 0.487422573 ), ( 55 , 2.342849441 , 0.574387304 ), ( 55 , 2.6888466 , 0.511561513 ), ( 55 , 2.622329448 , 0.557121114 ), ( 55 , 3.084554001 , 0.970891133 ), ( 55 , 1.937930596 , 0.709864552 ), ( 55 , 1.963222203 , 0.866937918 ), ( 55 , 1.778751288 , 0.851537718 ), ( 55 , 1.665785402 , 0.932905715 ), ( 55 , 1.687795314 , 1.019575903 ), ( 55 , 2.425259122 , 0.990320885 ), ( 55 , 2.198272884 , 0.928847274 ), ( 55 , 2.24535628 , 1.136988718 ), ( 55 , 4.086226405 , 0.174695007 ), ( 55 , 3.729973362 , 0.176268916 ), ( 55 , 3.749291553 , 0.226964082 ), ( 55 , 3.780618894 , 0.335575928 ), ( 55 , 4.322118068 , 0.35742135 ), ( 55 , 4.286342065 , 0.589900113 ), ( 55 , 4.540752991 , 0.566542864 ), ( 55 , 4.553900971 , 0.64833459 ), ( 55 , 4.485642705 , 0.627184922 ), ( 55 , 4.170438762 , 0.662308939 ), ( 55 , 4.092050408 , 0.704307546 ), ( 55 , 4.346697781 , 0.923283439 ), ( 55 , 4.354630105 , 0.97766397 ), ( 55 , 3.699791262 , 0.765400851 ), ( 55 , 3.701345342 , 0.863215102 ), ( 55 , 3.33851081 , 0.793083686 ), ( 55 , 3.228035563 , 0.854935339 ), ( 55 , 3.575748517 , 0.923656093 ), ( 55 , 3.954396502 , 0.952188838 ), ( 55 , 4.691386824 , 1.256726216 ), ( 55 , 4.283956138 , 1.20618515 ), ( 55 , 3.223750749 , 1.31179974 ), ( 55 , 5.493739007 , 0.074924079 ), ( 55 , 5.662546719 , 0.337175021 ), ( 55 , 5.698818425 , 0.4005332 ), ( 55 , 5.226204144 , 0.293028386 ), ( 55 , 5.33223045 , 0.426664165 ), ( 55 , 5.309227154 , 0.430589886 ), ( 55 , 5.212070581 , 0.424453491 ), ( 55 , 5.282062419 , 0.469567841 ), ( 55 , 5.490249096 , 0.389660026 ), ( 55 , 5.397772578 , 0.461846661 ), ( 55 , 6.157960158 , 0.684790664 ), ( 55 , 6.005650778 , 0.726124069 ), ( 55 , 5.819903323 , 0.793088791 ), ( 55 , 6.021756221 , 0.993884024 ), ( 55 , 5.230028539 , 0.540767126 ), ( 55 , 5.126247046 , 0.514227544 ), ( 55 , 5.309821773 , 0.704503218 ), ( 55 , 5.201012817 , 0.820781413 ), ( 55 , 4.94681303 , 0.645277873 ), ( 55 , 4.90604729 , 0.691381675 ), ( 55 , 4.780658353 , 0.735819486 ), ( 55 , 5.632998206 , 1.055215695 ), ( 55 , 5.768645001 , 1.012297 ), ( 55 , 5.781443244 , 1.09582373 ), ( 55 , 5.77653903 , 1.101657508 ), ( 55 , 6.036874203 , 1.173023258 ), ( 55 , 5.242429527 , 1.131338015 ), ( 55 , 4.912141857 , 1.293046637 ), ( 55 , 5.889977784 , 1.375740807 ), ( 55 , 6.19868005 , -0.55978811 ), ( 55 , 0.209520497 , -0.379130218 ), ( 55 , 0.053092495 , -0.313085058 ), ( 55 , 5.967058237 , -0.342342983 ), ( 55 , 6.206670634 , -0.269621548 ), ( 55 , 0.620491029 , -0.015449295 ), ( 55 , 0.661053189 , 0.039568648 ), ( 55 , 0.537545289 , 0.002245515 ), ( 55 , 6.043926069 , -0.134280187 ), ( 55 , 5.746229284 , 0.210772895 ), ( 55 , 0.043797329 , 0.194531505 ), ( 55 , 0.286656478 , 0.374640807 ), ( 55 , 6.186965866 , 0.321154283 ), ( 55 , 6.129804742 , 0.565223062 ), ( 55 , 1.589720997 , -0.561500081 ), ( 55 , 1.599308892 , -0.403363519 ), ( 55 , 1.609911051 , -0.391436674 ), ( 55 , 1.826478729 , -0.443559972 ), ( 55 , 1.837390841 , -0.440095187 ), ( 55 , 1.821966064 , -0.429877671 ), ( 55 , 1.403987592 , -0.432371662 ), ( 55 , 1.444815533 , -0.364144651 ), ( 55 , 1.239770835 , -0.325795493 ), ( 55 , 1.664223269 , -0.205481668 ), ( 55 , 1.676259675 , -0.201242031 ), ( 55 , 1.753797085 , -0.160009122 ), ( 55 , 1.461786598 , -0.104881643 ), ( 55 , 1.903461469 , -0.272023384 ), ( 55 , 2.087151449 , 0.038841436 ), ( 55 , 1.882306419 , -0.005270848 ), ( 55 , 1.808210467 , -0.019670531 ), ( 55 , 1.689607065 , 0.005221709 ), ( 55 , 1.19640213 , -0.15657402 ), ( 55 , 1.196393381 , -0.143663685 ), ( 55 , 1.412430376 , -0.002789485 ), ( 55 , 1.0586145 , -0.004724072 ), ( 55 , 1.06538713 , 0.049324516 ), ( 55 , 1.3433881 , 0.148321985 ), ( 55 , 1.349702821 , 0.171557704 ), ( 55 , 1.241074286 , 0.194535049 ), ( 55 , 1.064423909 , 0.143072512 ), ( 55 , 1.180827649 , 0.239533675 ), ( 55 , 1.18093837 , 0.273871983 ), ( 55 , 1.518453651 , 0.112643343 ), ( 55 , 1.639515897 , 0.219057328 ), ( 55 , 1.37910981 , 0.197943259 ), ( 55 , 1.456934097 , 0.249678704 ), ( 55 , 1.430123939 , 0.27705181 ), ( 55 , 1.455286927 , 0.323588054 ), ( 55 , 1.344385217 , 0.423506555 ), ( 55 , 1.477571334 , 0.532192085 ), ( 55 , 3.258796557 , -0.572997166 ), ( 55 , 3.061884431 , -0.567225583 ), ( 55 , 3.189859642 , -0.411942408 ), ( 55 , 3.118512567 , -0.448782845 ), ( 55 , 3.306121135 , -0.473674534 ), ( 55 , 3.465255445 , -0.347841284 ), ( 55 , 2.822490247 , -0.301889695 ), ( 55 , 3.288971811 , -0.164969855 ), ( 55 , 3.519961439 , -0.221793148 ), ( 55 , 3.276894769 , 0.428776832 ), ( 55 , 3.057741087 , 0.372669828 ), ( 55 , 3.058907029 , 0.596884917 ), ( 55 , 4.708410111 , -0.528015925 ), ( 55 , 4.724831769 , -0.423811105 ), ( 55 , 4.929108475 , -0.354728124 ), ( 55 , 4.971556245 , -0.224110781 ), ( 55 , 4.602313818 , -0.196209507 ), ( 55 , 4.72583056 , -0.142774694 ), ( 55 , 5.151884838 , -0.284377354 ), ( 55 , 5.19575268 , -0.187854755 ), ( 55 , 5.337118515 , 0.093247809 ), ( 55 , 4.962304214 , 0.044248657 ), ( 55 , 4.831107941 , 0.003421836 ), ( 55 , 4.872306504 , 0.116427393 ), ( 55 , 4.493353251 , -0.183679364 ), ( 55 , 4.427001518 , -0.107409799 ), ( 55 , 4.249214795 , -0.20660888 ), ( 55 , 4.192252221 , -0.146807575 ), ( 55 , 4.241687572 , -0.149183466 ), ( 55 , 4.309760297 , -0.132627505 ), ( 55 , 4.576365802 , 0.005772823 ), ( 55 , 4.413129808 , 0.021220909 ), ( 55 , 4.146436685 , 0.038330544 ), ( 55 , 4.408372045 , 0.126494843 ), ( 55 , 4.871492416 , 0.159201885 ), ( 55 , 4.811957451 , 0.311135025 ), ( 55 , 4.973144336 , 0.457805568 ), ( 55 , 0.043771467 , -1.435082796 ), ( 55 , 0.661886432 , -1.380725648 ), ( 55 , 1.320848892 , -1.244668009 ), ( 55 , 1.34201828 , -1.106538589 ), ( 55 , 1.142728482 , -1.106279874 ), ( 55 , 1.207581417 , -1.083456601 ), ( 55 , 0.020468819 , -1.246810529 ), ( 55 , 0.090104139 , -1.215183484 ), ( 55 , 0.185338434 , -1.14262768 ), ( 55 , 0.632221424 , -1.052657992 ), ( 55 , 0.709356108 , -0.886605781 ), ( 55 , 1.233826283 , -0.8810613 ), ( 55 , 1.321255986 , -0.857850537 ), ( 55 , 1.511701694 , -0.813272392 ), ( 55 , 0.44567464 , -0.564212883 ), ( 55 , 0.272459778 , -0.550684503 ), ( 55 , 0.774050026 , -0.416477792 ), ( 55 , 0.619722181 , -0.188113419 ), ( 55 , 0.814014788 , -0.106266518 ), ( 55 , 0.784027624 , -0.043024359 ), ( 55 , 2.341532392 , -1.495099936 ), ( 55 , 2.621155375 , -1.434912913 ), ( 55 , 2.461480053 , -1.40998065 ), ( 55 , 1.817647969 , -1.386143996 ), ( 55 , 2.431589804 , -1.198864399 ), ( 55 , 2.985312103 , -1.261115987 ), ( 55 , 2.909592839 , -1.23705337 ), ( 55 , 2.655990607 , -1.148690759 ), ( 55 , 2.743985629 , -1.120017364 ), ( 55 , 2.213416691 , -1.223356529 ), ( 55 , 2.319576968 , -1.005893686 ), ( 55 , 2.546874892 , -0.940576294 ), ( 55 , 2.418582189 , -0.969869465 ), ( 55 , 2.270193133 , -0.925290403 ), ( 55 , 2.297328558 , -0.801323834 ), ( 55 , 3.060115302 , -0.752160714 ), ( 55 , 2.991002233 , -0.62941698 ), ( 55 , 2.362071468 , -0.730667697 ), ( 55 , 2.747098901 , -0.534193854 ), ( 55 , 1.846781377 , -1.032851186 ), ( 55 , 2.311044174 , -0.703719631 ), ( 55 , 1.605181971 , -0.735728867 ), ( 55 , 1.711988479 , -0.657941109 ), ( 55 , 1.735717627 , -0.564426935 ), ( 55 , 2.021086943 , -0.629191036 ), ( 55 , 2.031452241 , -0.59621656 ), ( 55 , 1.954706479 , -0.508865977 ), ( 55 , 2.046516458 , -0.434797903 ), ( 55 , 2.027066243 , -0.430643261 ), ( 55 , 1.914863029 , -0.464010222 ), ( 55 , 1.950366937 , -0.402926655 ), ( 55 , 2.135739068 , -0.283597722 ), ( 55 , 2.477378679 , -0.10597215 ), ( 55 , 2.429045297 , -0.11088291 ), ( 55 , 4.278008689 , -1.373010639 ), ( 55 , 4.229405744 , -1.011151837 ), ( 55 , 3.870358261 , -0.914274822 ), ( 55 , 4.395294698 , -1.018252832 ), ( 55 , 4.443165733 , -0.883860068 ), ( 55 , 4.318404142 , -0.807097134 ), ( 55 , 4.42454315 , -0.729659482 ), ( 55 , 4.347510096 , -0.748028651 ), ( 55 , 4.272977251 , -0.744801936 ), ( 55 , 4.055290876 , -0.815640264 ), ( 55 , 4.009627237 , -0.711891398 ), ( 55 , 4.113029383 , -0.653190506 ), ( 55 , 4.130916364 , -0.605326187 ), ( 55 , 4.293615387 , -0.684046146 ), ( 55 , 3.762614772 , -0.607143935 ), ( 55 , 3.453057878 , -0.756926577 ), ( 55 , 3.87353121 , -0.455313885 ), ( 55 , 3.902273232 , -0.430091039 ), ( 55 , 4.119292578 , -0.273550234 ), ( 55 , 3.732387254 , -0.317663421 ), ( 55 , 3.880374513 , -0.2469482 ), ( 55 , 5.536276928 , -1.552583236 ), ( 55 , 4.951330516 , -1.529026859 ), ( 55 , 5.868435022 , -1.00879862 ), ( 55 , 4.815398209 , -1.309767328 ), ( 55 , 5.189834243 , -1.265420804 ), ( 55 , 5.017354073 , -1.194237169 ), ( 55 , 5.839351967 , -0.93604534 ), ( 55 , 5.63784391 , -0.71871324 ), ( 55 , 5.743785452 , -0.650200094 ), ( 55 , 5.284921362 , -0.630276064 ), ( 55 , 4.925504241 , -0.762362607 ), ( 55 , 4.928736335 , -0.75807109 ), ( 55 , 5.060000638 , -0.618222529 ), ( 55 , 5.17499009 , -0.556912013 ), ( 55 , 4.993464442 , -0.541876169 ), ( 55 , 5.681109504 , -0.406024983 ), ( 55 , 5.320608093 , -0.333682528 ), ( 55 , 5.463512947 , -0.096117004 ), ( 56 , 0.970036223 , 0.343832737 ), ( 56 , 0.982458727 , 0.433521315 ), ( 56 , 0.602685224 , 0.347340282 ), ( 56 , 0.852332291 , 0.533315147 ), ( 56 , 1.408646873 , 0.716095972 ), ( 56 , 0.979677844 , 0.636344374 ), ( 56 , 0.986061025 , 0.797297287 ), ( 56 , 1.227856531 , 0.843003908 ), ( 56 , 0.44531997 , 0.615150523 ), ( 56 , 0.715960633 , 0.773128429 ), ( 56 , 0.489377126 , 0.886497945 ), ( 56 , 0.193883721 , 0.835385141 ), ( 56 , 1.120907101 , 1.079483487 ), ( 56 , 0.31544624 , 1.390572397 ), ( 56 , 0.23954833 , 1.460967738 ), ( 56 , 2.480364745 , 0.158070572 ), ( 56 , 2.289654601 , 0.175956075 ), ( 56 , 2.422646546 , 0.260777155 ), ( 56 , 2.547010581 , 0.244724641 ), ( 56 , 2.232248871 , 0.315800311 ), ( 56 , 2.237105829 , 0.356760215 ), ( 56 , 2.391100231 , 0.517564308 ), ( 56 , 2.805740282 , 0.459459817 ), ( 56 , 2.764227255 , 0.61066755 ), ( 56 , 2.493806389 , 0.612655866 ), ( 56 , 2.511674899 , 0.62497332 ), ( 56 , 2.481274352 , 0.795880311 ), ( 56 , 3.020920214 , 1.066082575 ), ( 56 , 2.025083009 , 0.450016055 ), ( 56 , 2.151761635 , 0.517601868 ), ( 56 , 1.985948618 , 0.540370855 ), ( 56 , 2.273373691 , 0.799965352 ), ( 56 , 1.958512077 , 0.840962823 ), ( 56 , 1.686115893 , 0.9823629 ), ( 56 , 1.614361762 , 1.028624145 ), ( 56 , 1.775112922 , 0.997785686 ), ( 56 , 1.639200533 , 1.047176858 ), ( 56 , 2.379760965 , 0.847011666 ), ( 56 , 3.065101349 , 1.164923106 ), ( 56 , 2.150302814 , 1.195098984 ), ( 56 , 1.626871417 , 1.146999033 ), ( 56 , 2.095245163 , 1.290106493 ), ( 56 , 1.772471857 , 1.388594704 ), ( 56 , 2.747445219 , 1.470471876 ), ( 56 , 3.9932644 , 0.08620856 ), ( 56 , 4.193318251 , 0.58116232 ), ( 56 , 4.299631555 , 0.652647323 ), ( 56 , 4.610413284 , 0.847986879 ), ( 56 , 4.275683268 , 0.693044947 ), ( 56 , 4.169194434 , 0.742922174 ), ( 56 , 4.165357194 , 0.752917873 ), ( 56 , 4.562677892 , 1.048045142 ), ( 56 , 3.606694073 , 0.95002889 ), ( 56 , 3.552272227 , 0.966011697 ), ( 56 , 3.950674215 , 0.840396451 ), ( 56 , 4.505323113 , 1.097369841 ), ( 56 , 3.402991237 , 1.162339805 ), ( 56 , 4.300942691 , 1.378192077 ), ( 56 , 5.444579824 , 0.104861428 ), ( 56 , 5.478780318 , 0.219366418 ), ( 56 , 5.251261144 , 0.279797143 ), ( 56 , 5.783928902 , 0.505515636 ), ( 56 , 5.726847374 , 0.502534642 ), ( 56 , 5.890622705 , 0.568498111 ), ( 56 , 5.815427037 , 0.60395801 ), ( 56 , 5.916104653 , 0.691748935 ), ( 56 , 6.17246574 , 0.702252727 ), ( 56 , 6.054782535 , 0.809606266 ), ( 56 , 5.772430108 , 0.779283178 ), ( 56 , 4.979813851 , 0.45887055 ), ( 56 , 5.003122869 , 0.499673517 ), ( 56 , 5.263716972 , 0.627784679 ), ( 56 , 5.316617544 , 0.645770949 ), ( 56 , 5.356284483 , 0.670902325 ), ( 56 , 5.418993635 , 0.728096961 ), ( 56 , 5.195068506 , 0.708598506 ), ( 56 , 4.860501128 , 0.913741325 ), ( 56 , 5.724759152 , 0.973837206 ), ( 56 , 5.812093248 , 1.060447577 ), ( 56 , 5.877782275 , 1.136772131 ), ( 56 , 6.140448848 , 1.228009331 ), ( 56 , 5.806017129 , 1.224047384 ), ( 56 , 6.089586788 , 1.237230237 ), ( 56 , 5.44347558 , 1.405897647 ), ( 56 , 5.359247994 , 1.421096289 ), ( 56 , 6.13945677 , 1.523805479 ), ( 56 , 6.202784977 , -0.314640443 ), ( 56 , 0.412911595 , -0.273604489 ), ( 56 , 0.378997418 , -0.227877942 ), ( 56 , 0.244450991 , -0.196638882 ), ( 56 , 0.288357494 , -0.171728385 ), ( 56 , 0.462457181 , -0.100068492 ), ( 56 , 0.663907512 , -0.018066055 ), ( 56 , 0.619345227 , 0.006904871 ), ( 56 , 0.298286703 , 0.098585035 ), ( 56 , 0.423664309 , 0.211915262 ), ( 56 , 5.832894135 , -0.223950021 ), ( 56 , 6.089325469 , -0.061023594 ), ( 56 , 6.059279834 , 0.037146651 ), ( 56 , 5.703879527 , 0.046881274 ), ( 56 , 5.682171687 , 0.099136467 ), ( 56 , 5.89033414 , 0.077329073 ), ( 56 , 0.089873907 , 0.142948383 ), ( 56 , 0.296511095 , 0.361954131 ), ( 56 , 0.142224396 , 0.354196913 ), ( 56 , 6.010357623 , 0.362491922 ), ( 56 , 1.554866167 , -0.547726097 ), ( 56 , 1.713256706 , -0.559036116 ), ( 56 , 1.604369203 , -0.334500567 ), ( 56 , 1.774345028 , -0.176406631 ), ( 56 , 1.325964272 , -0.425658068 ), ( 56 , 1.25492945 , -0.295541484 ), ( 56 , 1.415792558 , -0.296285235 ), ( 56 , 1.653015066 , -0.163889476 ), ( 56 , 1.468672454 , -0.105849849 ), ( 56 , 1.989957572 , -0.252946522 ), ( 56 , 2.041783417 , -0.21279342 ), ( 56 , 2.144786428 , -0.135659458 ), ( 56 , 2.099765363 , 0.085171189 ), ( 56 , 1.895140714 , 0.05430422 ), ( 56 , 1.30830563 , -0.179144837 ), ( 56 , 1.195166658 , -0.117616925 ), ( 56 , 1.402942397 , -0.00726896 ), ( 56 , 1.43951686 , 0.03122835 ), ( 56 , 1.445316997 , 0.057458456 ), ( 56 , 1.28011359 , 0.043774849 ), ( 56 , 1.286289353 , 0.135767551 ), ( 56 , 1.054916764 , 0.174498387 ), ( 56 , 1.462676239 , 0.178722255 ), ( 56 , 1.537508595 , 0.247343939 ), ( 56 , 1.470716975 , 0.297405753 ), ( 56 , 1.51597774 , 0.30943138 ), ( 56 , 1.695448268 , 0.532202248 ), ( 56 , 3.048521176 , -0.230402116 ), ( 56 , 3.503823172 , -0.309542487 ), ( 56 , 3.694468294 , -0.162551018 ), ( 56 , 3.324633857 , 0.118796506 ), ( 56 , 3.47870605 , 0.238692028 ), ( 56 , 2.753240727 , -0.237163731 ), ( 56 , 2.984680313 , 0.02457008 ), ( 56 , 3.047606625 , 0.141970913 ), ( 56 , 3.122724994 , 0.273088744 ), ( 56 , 3.270093189 , 0.420780217 ), ( 56 , 2.949016924 , 0.232259555 ), ( 56 , 4.552516308 , -0.491188804 ), ( 56 , 4.91460443 , -0.390817325 ), ( 56 , 4.800299581 , -0.276319985 ), ( 56 , 4.436628885 , -0.404050559 ), ( 56 , 5.164262662 , -0.270018619 ), ( 56 , 5.138120858 , -0.249631222 ), ( 56 , 5.212546944 , -0.143596426 ), ( 56 , 5.139085169 , -0.081123135 ), ( 56 , 5.213070197 , 0.00477399 ), ( 56 , 4.995838518 , -0.070364819 ), ( 56 , 4.841908993 , -0.034654203 ), ( 56 , 5.04625999 , 0.084381687 ), ( 56 , 5.059953503 , 0.215980862 ), ( 56 , 4.474752508 , -0.015569554 ), ( 56 , 4.140557064 , -0.066644702 ), ( 56 , 4.231731341 , -0.060506466 ), ( 56 , 4.01876069 , 0.012472389 ), ( 56 , 4.125050659 , 0.095072853 ), ( 56 , 4.331013557 , 0.096363432 ), ( 56 , 4.966534103 , 0.303003955 ), ( 56 , 5.088598504 , 0.350767383 ), ( 56 , 4.504972126 , 0.184742635 ), ( 56 , 4.514524149 , 0.251156132 ), ( 56 , 4.633749411 , 0.278434743 ), ( 56 , 4.656252242 , 0.308869891 ), ( 56 , 4.43037049 , 0.321721634 ), ( 56 , 4.428429075 , 0.365794969 ), ( 56 , 4.796070098 , 0.426664855 ), ( 56 , 4.69240465 , 0.454658757 ), ( 56 , 4.589459133 , 0.495807632 ), ( 56 , 0.855104673 , -1.350675766 ), ( 56 , 0.293719009 , -1.078183552 ), ( 56 , 1.452967771 , -1.120981975 ), ( 56 , 1.393514234 , -0.883213142 ), ( 56 , 1.44058966 , -0.821676089 ), ( 56 , 1.432286837 , -0.649791074 ), ( 56 , 1.131325566 , -0.772625262 ), ( 56 , 0.155719105 , -0.837786177 ), ( 56 , 0.274102767 , -0.809784376 ), ( 56 , 0.529017452 , -0.523643902 ), ( 56 , 0.914555697 , -0.221215244 ), ( 56 , 0.797205371 , -0.134137092 ), ( 56 , 2.558451688 , -1.340002887 ), ( 56 , 2.181693225 , -1.248000095 ), ( 56 , 2.669366499 , -1.013346861 ), ( 56 , 1.681957233 , -1.216300856 ), ( 56 , 2.406617279 , -0.813041613 ), ( 56 , 2.938753382 , -1.040553466 ), ( 56 , 3.107409844 , -0.994619483 ), ( 56 , 2.781403562 , -1.02508971 ), ( 56 , 2.757431328 , -0.786562754 ), ( 56 , 2.49722424 , -0.709465564 ), ( 56 , 2.430153707 , -0.687690705 ), ( 56 , 2.835937271 , -0.59442664 ), ( 56 , 2.804389741 , -0.57099601 ), ( 56 , 2.697083393 , -0.506004534 ), ( 56 , 2.061650425 , -0.948884966 ), ( 56 , 1.775335483 , -0.894765546 ), ( 56 , 1.897027066 , -0.817681007 ), ( 56 , 2.13435453 , -0.849703467 ), ( 56 , 2.216524892 , -0.612849689 ), ( 56 , 1.733244038 , -0.645607213 ), ( 56 , 1.721719053 , -0.571005919 ), ( 56 , 1.769413515 , -0.540161048 ), ( 56 , 1.940501621 , -0.555169005 ), ( 56 , 1.959488164 , -0.549013969 ), ( 56 , 1.874993789 , -0.440364199 ), ( 56 , 1.935064177 , -0.4858006 ), ( 56 , 2.290156244 , -0.648341376 ), ( 56 , 2.399566201 , -0.529982144 ), ( 56 , 2.203745993 , -0.419682185 ), ( 56 , 1.992658684 , -0.34387025 ), ( 56 , 2.394165969 , -0.149915701 ), ( 56 , 2.319420849 , -0.125266849 ), ( 56 , 4.11601686 , -1.47418552 ), ( 56 , 3.581814024 , -1.497251712 ), ( 56 , 3.91771758 , -1.338017748 ), ( 56 , 4.103070127 , -1.281889368 ), ( 56 , 3.51611298 , -1.232677974 ), ( 56 , 3.43881758 , -1.139805308 ), ( 56 , 4.555387477 , -1.097187563 ), ( 56 , 4.670821061 , -0.935714487 ), ( 56 , 4.391046298 , -1.021081698 ), ( 56 , 4.370611477 , -0.866583375 ), ( 56 , 4.567814546 , -0.800115243 ), ( 56 , 4.383871917 , -0.712789421 ), ( 56 , 4.517439427 , -0.585530741 ), ( 56 , 4.175273665 , -0.592793153 ), ( 56 , 4.274085757 , -0.539420979 ), ( 56 , 4.224262015 , -0.459488018 ), ( 56 , 3.279785522 , -1.037143599 ), ( 56 , 3.436711714 , -0.933051476 ), ( 56 , 3.64425207 , -0.910380687 ), ( 56 , 3.62935209 , -0.818538078 ), ( 56 , 3.433523781 , -0.625920735 ), ( 56 , 3.844183921 , -0.630673009 ), ( 56 , 3.871906921 , -0.447229437 ), ( 56 , 4.190133761 , -0.28860832 ), ( 56 , 4.096775746 , -0.336891024 ), ( 56 , 4.069283626 , -0.343318972 ), ( 56 , 3.773439893 , -0.432953973 ), ( 56 , 5.837421471 , -1.352830175 ), ( 56 , 5.884546761 , -1.177914975 ), ( 56 , 6.042651699 , -1.201131863 ), ( 56 , 5.244178151 , -1.168401196 ), ( 56 , 6.148004232 , -1.101490338 ), ( 56 , 6.041732788 , -0.941878071 ), ( 56 , 6.137501664 , -0.920150574 ), ( 56 , 6.100664926 , -0.712534391 ), ( 56 , 6.051470866 , -0.678797777 ), ( 56 , 6.01962199 , -0.514213748 ), ( 56 , 5.763241071 , -0.49661141 ), ( 56 , 4.757904294 , -1.082115921 ), ( 56 , 5.119747503 , -0.790144539 ), ( 56 , 5.045582152 , -0.793530688 ), ( 56 , 5.333987574 , -0.733913544 ), ( 56 , 4.829763927 , -0.839810918 ), ( 56 , 4.957963344 , -0.745445421 ), ( 56 , 4.742199057 , -0.757925938 ), ( 56 , 4.858060347 , -0.675898392 ), ( 56 , 4.908532975 , -0.692655413 ), ( 56 , 5.091744866 , -0.51912328 ), ( 56 , 5.470173116 , -0.694824956 ), ( 56 , 5.603203534 , -0.363949278 ), ( 56 , 5.700837762 , -0.198374483 ), ( 56 , 5.566501009 , -0.264792134 ), ( 56 , 5.603353707 , -0.224764381 ), ( 57 , 0.927642102 , 0.163591742 ), ( 57 , 0.717983151 , 0.267240402 ), ( 57 , 0.769869513 , 0.31454693 ), ( 57 , 1.087205819 , 0.342241557 ), ( 57 , 1.127436996 , 0.376626445 ), ( 57 , 1.033540683 , 0.392300828 ), ( 57 , 1.066226943 , 0.420727526 ), ( 57 , 0.985712053 , 0.428551466 ), ( 57 , 0.708457315 , 0.34926037 ), ( 57 , 0.592151837 , 0.437076952 ), ( 57 , 0.83879567 , 0.475721623 ), ( 57 , 0.909080663 , 0.590046152 ), ( 57 , 0.679723957 , 0.605406029 ), ( 57 , 1.227535986 , 0.499422201 ), ( 57 , 1.154040655 , 0.595689957 ), ( 57 , 1.277561729 , 0.743276925 ), ( 57 , 1.011834675 , 0.599679215 ), ( 57 , 1.084792377 , 0.663894273 ), ( 57 , 1.440637135 , 1.100730049 ), ( 57 , 0.252357836 , 0.506008879 ), ( 57 , 0.365122103 , 0.658247654 ), ( 57 , 0.494315225 , 0.710868466 ), ( 57 , 0.439233191 , 0.755681962 ), ( 57 , 0.162984741 , 0.617837519 ), ( 57 , 0.310540889 , 0.658409514 ), ( 57 , 0.170890455 , 0.861399714 ), ( 57 , 0.299143858 , 1.016887465 ), ( 57 , 0.109553733 , 0.925840477 ), ( 57 , 0.022267703 , 1.070130905 ), ( 57 , 0.007054761 , 1.068539438 ), ( 57 , 0.784657782 , 0.824159328 ), ( 57 , 0.711435468 , 0.961778827 ), ( 57 , 0.767757898 , 1.073750172 ), ( 57 , 1.14230634 , 1.060022788 ), ( 57 , 1.274480369 , 1.108367301 ), ( 57 , 0.536702141 , 1.123817553 ), ( 57 , 0.199184107 , 1.308785952 ), ( 57 , 1.165229619 , 1.410645317 ), ( 57 , 1.178073131 , 1.454576431 ), ( 57 , 2.282913393 , 0.221323137 ), ( 57 , 2.338415449 , 0.202910846 ), ( 57 , 2.345671873 , 0.271947242 ), ( 57 , 2.546233747 , 0.523140916 ), ( 57 , 2.323804883 , 0.566782917 ), ( 57 , 3.047071065 , 0.761403101 ), ( 57 , 2.880864269 , 0.794583614 ), ( 57 , 2.071311834 , 0.830158927 ), ( 57 , 1.730264018 , 0.670998255 ), ( 57 , 1.575055858 , 0.836043751 ), ( 57 , 1.901697155 , 0.824470367 ), ( 57 , 1.932373987 , 0.96483856 ), ( 57 , 2.373676147 , 0.947432789 ), ( 57 , 2.172236772 , 1.039712737 ), ( 57 , 4.133319037 , 0.246364421 ), ( 57 , 4.165116619 , 0.354498423 ), ( 57 , 3.726623007 , 0.226178319 ), ( 57 , 3.659294633 , 0.378665057 ), ( 57 , 4.014863235 , 0.516895122 ), ( 57 , 4.041684539 , 0.599283406 ), ( 57 , 3.885481172 , 0.650531508 ), ( 57 , 3.925309379 , 0.685314352 ), ( 57 , 4.286907323 , 0.588242731 ), ( 57 , 4.545393264 , 0.697682302 ), ( 57 , 4.327486247 , 0.795844573 ), ( 57 , 4.642519146 , 0.939014874 ), ( 57 , 4.473857876 , 0.950690236 ), ( 57 , 4.295355017 , 0.963513223 ), ( 57 , 3.608431053 , 0.672694235 ), ( 57 , 3.385934042 , 0.668727783 ), ( 57 , 3.288415707 , 0.580275921 ), ( 57 , 3.638352128 , 0.937741531 ), ( 57 , 4.014634009 , 0.906848548 ), ( 57 , 3.889614511 , 1.034891926 ), ( 57 , 4.264084086 , 1.042925009 ), ( 57 , 3.349168571 , 1.16570995 ), ( 57 , 4.204150502 , 1.340309644 ), ( 57 , 5.490940277 , 0.189177053 ), ( 57 , 5.764345857 , 0.228976973 ), ( 57 , 5.731762969 , 0.343279811 ), ( 57 , 5.722809949 , 0.346042532 ), ( 57 , 5.793782001 , 0.378779266 ), ( 57 , 5.236228476 , 0.305719117 ), ( 57 , 5.535525327 , 0.52718529 ), ( 57 , 5.471159917 , 0.583605466 ), ( 57 , 6.002808679 , 0.634451484 ), ( 57 , 6.139748215 , 0.748957937 ), ( 57 , 6.185161374 , 0.775431671 ), ( 57 , 6.106460797 , 0.84867836 ), ( 57 , 5.687280838 , 0.668174197 ), ( 57 , 5.823907293 , 0.749684405 ), ( 57 , 5.682719075 , 0.716928862 ), ( 57 , 5.608325226 , 0.815324899 ), ( 57 , 5.767630705 , 0.92296964 ), ( 57 , 6.270706948 , 0.972246476 ), ( 57 , 6.094298253 , 0.928721671 ), ( 57 , 5.97677533 , 0.975692099 ), ( 57 , 6.234473118 , 1.085847944 ), ( 57 , 5.164934653 , 0.449806703 ), ( 57 , 5.201197084 , 0.436194962 ), ( 57 , 5.383968491 , 0.814962066 ), ( 57 , 4.951802583 , 0.726104157 ), ( 57 , 5.093883508 , 0.913160647 ), ( 57 , 4.93745464 , 0.924619393 ), ( 57 , 4.97734628 , 0.971419693 ), ( 57 , 4.876267031 , 1.091300629 ), ( 57 , 5.468595879 , 0.788568581 ), ( 57 , 5.582783762 , 0.864117912 ), ( 57 , 5.64153232 , 0.872275556 ), ( 57 , 5.542557468 , 0.934852027 ), ( 57 , 5.667782818 , 1.003372415 ), ( 57 , 5.372620813 , 0.859052326 ), ( 57 , 5.549290653 , 1.046963344 ), ( 57 , 5.873099747 , 1.235185868 ), ( 57 , 5.260227155 , 1.082032774 ), ( 57 , 5.32156522 , 1.086599771 ), ( 57 , 5.424419898 , 1.163396091 ), ( 57 , 5.900383855 , 1.330401089 ), ( 57 , 5.421837326 , 1.440442944 ), ( 57 , 0.050500393 , -0.485195076 ), ( 57 , 0.229852034 , -0.418976845 ), ( 57 , 0.201593262 , -0.39308574 ), ( 57 , 6.222176861 , -0.325997168 ), ( 57 , 0.065053506 , -0.16702155 ), ( 57 , 6.230585497 , -0.048198339 ), ( 57 , 0.418806241 , -0.268782155 ), ( 57 , 0.525559812 , -0.148771532 ), ( 57 , 0.597716925 , -0.112100076 ), ( 57 , 0.275059668 , -0.084427017 ), ( 57 , 5.967776802 , -0.245332049 ), ( 57 , 5.992932803 , -0.202746154 ), ( 57 , 6.106057183 , -0.089439035 ), ( 57 , 6.019029735 , 0.016797887 ), ( 57 , 5.608101941 , -0.062085485 ), ( 57 , 5.665930013 , 0.100739468 ), ( 57 , 0.141358819 , 0.121396314 ), ( 57 , 0.205189036 , 0.208978993 ), ( 57 , 0.284006594 , 0.260865751 ), ( 57 , 0.203105863 , 0.270092557 ), ( 57 , 0.378283367 , 0.335801784 ), ( 57 , 0.304646518 , 0.343105038 ), ( 57 , 0.174214534 , 0.374168945 ), ( 57 , 0.23985593 , 0.41238882 ), ( 57 , 6.16741987 , 0.392675766 ), ( 57 , 1.601606736 , -0.598857785 ), ( 57 , 1.65667861 , -0.600333585 ), ( 57 , 1.695823024 , -0.564984373 ), ( 57 , 1.482788587 , -0.569491078 ), ( 57 , 1.803413702 , -0.332183921 ), ( 57 , 1.653624584 , -0.365220262 ), ( 57 , 1.498198264 , -0.323890675 ), ( 57 , 1.386098999 , -0.235971392 ), ( 57 , 1.70969866 , -0.142390323 ), ( 57 , 1.634551161 , -0.079734355 ), ( 57 , 1.950986196 , -0.311800494 ), ( 57 , 2.033473885 , -0.118214075 ), ( 57 , 2.209813362 , -0.069602085 ), ( 57 , 2.201635404 , -0.06547468 ), ( 57 , 1.712104631 , -0.102435222 ), ( 57 , 1.785791634 , -0.039654981 ), ( 57 , 1.750087198 , 0.008644311 ), ( 57 , 1.638718821 , -0.008965857 ), ( 57 , 1.977431803 , 0.057433125 ), ( 57 , 1.971383801 , 0.298198573 ), ( 57 , 1.218815687 , -0.250630164 ), ( 57 , 1.345372437 , -0.151241046 ), ( 57 , 1.092468485 , -0.12084543 ), ( 57 , 1.189557089 , -0.056019005 ), ( 57 , 0.865599128 , -0.016243934 ), ( 57 , 1.012308533 , 0.114055138 ), ( 57 , 1.196149992 , 0.097190092 ), ( 57 , 1.134311499 , 0.244958229 ), ( 57 , 1.178736211 , 0.27292903 ), ( 57 , 1.149390236 , 0.292815317 ), ( 57 , 1.609913661 , 0.043625955 ), ( 57 , 1.403794566 , 0.147105825 ), ( 57 , 1.636865549 , 0.241748701 ), ( 57 , 1.515030085 , 0.252865699 ), ( 57 , 1.869104465 , 0.278030281 ), ( 57 , 1.623253957 , 0.345408707 ), ( 57 , 1.766087316 , 0.505634919 ), ( 57 , 1.290827578 , 0.262500815 ), ( 57 , 1.738273653 , 0.505870441 ), ( 57 , 1.427408141 , 0.527239016 ), ( 57 , 1.401549231 , 0.516091992 ), ( 57 , 3.333613455 , -0.494351098 ), ( 57 , 3.419846218 , -0.359248241 ), ( 57 , 2.905801183 , -0.476264887 ), ( 57 , 3.144836214 , -0.182377779 ), ( 57 , 3.603835077 , -0.216882939 ), ( 57 , 3.863732785 , 0.012517765 ), ( 57 , 3.498043133 , 0.036422747 ), ( 57 , 3.591249011 , 0.061738997 ), ( 57 , 3.576070011 , 0.187556967 ), ( 57 , 2.893955115 , -0.197295677 ), ( 57 , 2.852418737 , -0.037159782 ), ( 57 , 2.558617601 , 0.031159485 ), ( 57 , 2.820529276 , 0.24773543 ), ( 57 , 2.758471194 , 0.246744906 ), ( 57 , 2.690766721 , 0.239602845 ), ( 57 , 3.354978224 , 0.246483227 ), ( 57 , 3.271276939 , 0.36470204 ), ( 57 , 3.312283992 , 0.36760966 ), ( 57 , 2.991503391 , 0.287220072 ), ( 57 , 2.820503991 , 0.329714296 ), ( 57 , 2.918270065 , 0.430371129 ), ( 57 , 4.602033071 , -0.568657434 ), ( 57 , 4.720707066 , -0.397591337 ), ( 57 , 4.88042854 , -0.410240307 ), ( 57 , 4.774629787 , -0.378969043 ), ( 57 , 4.95462316 , -0.285848624 ), ( 57 , 4.85921848 , -0.259245212 ), ( 57 , 4.371593833 , -0.347740408 ), ( 57 , 4.813628763 , -0.209699369 ), ( 57 , 4.596744571 , -0.100277307 ), ( 57 , 4.698406904 , -0.071242212 ), ( 57 , 5.088440146 , -0.262728881 ), ( 57 , 5.293723208 , -0.017619133 ), ( 57 , 5.206809615 , -0.054355913 ), ( 57 , 5.151873539 , -0.010841617 ), ( 57 , 5.045950066 , 0.253852148 ), ( 57 , 4.256978873 , -0.146134317 ), ( 57 , 4.070828351 , -0.020711696 ), ( 57 , 3.995996716 , 0.006496535 ), ( 57 , 4.313434954 , 0.011598203 ), ( 57 , 4.323678405 , 0.03462557 ), ( 57 , 4.24663979 , 0.08763414 ), ( 57 , 4.222060877 , 0.172642395 ), ( 57 , 4.758955101 , 0.058018714 ), ( 57 , 4.83447277 , 0.108104599 ), ( 57 , 4.795980189 , 0.126707134 ), ( 57 , 5.040905291 , 0.370571267 ), ( 57 , 4.809016343 , 0.406412312 ), ( 57 , 4.803798623 , 0.521142976 ), ( 57 , 4.747444035 , 0.635299412 ), ( 57 , 1.288007755 , -1.307887391 ), ( 57 , 1.111813668 , -1.085440006 ), ( 57 , 0.240007797 , -1.21348183 ), ( 57 , 0.863283713 , -1.092066614 ), ( 57 , 1.26936698 , -0.933069442 ), ( 57 , 1.477966343 , -0.710474742 ), ( 57 , 1.452369648 , -0.672186434 ), ( 57 , 1.071764028 , -0.482603684 ), ( 57 , 0.447224799 , -0.93796723 ), ( 57 , 0.462954282 , -0.886912961 ), ( 57 , 0.150422 , -0.914078302 ), ( 57 , 0.369487941 , -0.724185843 ), ( 57 , 0.124123455 , -0.696652989 ), ( 57 , 0.405502252 , -0.643421899 ), ( 57 , 0.445272208 , -0.642846964 ), ( 57 , 0.744704007 , -0.622667657 ), ( 57 , 0.87877086 , -0.412514166 ), ( 57 , 0.975480593 , -0.18301151 ), ( 57 , 0.522597653 , -0.363454841 ), ( 57 , 0.43138858 , -0.371321046 ), ( 57 , 1.745535971 , -1.410456857 ), ( 57 , 2.494085098 , -1.275502383 ), ( 57 , 2.474422814 , -1.249678946 ), ( 57 , 3.04230927 , -1.324644838 ), ( 57 , 2.809335119 , -1.121356781 ), ( 57 , 2.049378893 , -1.155337738 ), ( 57 , 1.597662579 , -1.152605411 ), ( 57 , 2.089343466 , -1.061585754 ), ( 57 , 2.084843474 , -1.052472707 ), ( 57 , 2.412601281 , -1.036966809 ), ( 57 , 2.257204801 , -1.097002544 ), ( 57 , 2.329187212 , -1.053373275 ), ( 57 , 2.451449473 , -0.968904838 ), ( 57 , 2.136108662 , -0.978870418 ), ( 57 , 2.250892379 , -0.889586828 ), ( 57 , 2.273677366 , -0.85386144 ), ( 57 , 3.136329821 , -1.122937219 ), ( 57 , 3.086255782 , -1.006991499 ), ( 57 , 2.899494638 , -0.832153441 ), ( 57 , 3.032248583 , -0.857571383 ), ( 57 , 3.043695103 , -0.833345275 ), ( 57 , 2.595532523 , -0.876921704 ), ( 57 , 2.593095053 , -0.790345703 ), ( 57 , 2.522110939 , -0.753828441 ), ( 57 , 1.710299471 , -1.025447697 ), ( 57 , 1.670840274 , -0.983843777 ), ( 57 , 1.707412412 , -0.904520966 ), ( 57 , 1.992868074 , -0.852247047 ), ( 57 , 2.143173127 , -0.845820699 ), ( 57 , 2.157217018 , -0.799962184 ), ( 57 , 2.221481308 , -0.770743985 ), ( 57 , 2.047333112 , -0.817820364 ), ( 57 , 2.064105274 , -0.634667204 ), ( 57 , 1.574366307 , -0.893881871 ), ( 57 , 1.6830534 , -0.840848007 ), ( 57 , 1.849836181 , -0.761056541 ), ( 57 , 1.863651994 , -0.713720842 ), ( 57 , 1.904723079 , -0.668790553 ), ( 57 , 1.725272555 , -0.641927398 ), ( 57 , 1.718381934 , -0.632356098 ), ( 57 , 1.790660007 , -0.553373247 ), ( 57 , 2.006245305 , -0.667773204 ), ( 57 , 2.005948304 , -0.665654261 ), ( 57 , 2.001593255 , -0.636989222 ), ( 57 , 1.877632712 , -0.479817238 ), ( 57 , 1.94351513 , -0.440133036 ), ( 57 , 2.395762466 , -0.319891263 ), ( 57 , 2.203124101 , -0.404105536 ), ( 57 , 2.140893214 , -0.240834526 ), ( 57 , 2.398049015 , -0.153374255 ), ( 57 , 2.249159486 , -0.139315451 ), ( 57 , 3.381532925 , -1.485681948 ), ( 57 , 3.688406819 , -1.340360307 ), ( 57 , 4.448691076 , -1.20895905 ), ( 57 , 4.34477604 , -1.143113995 ), ( 57 , 4.184289057 , -1.135120671 ), ( 57 , 4.312060675 , -1.022763632 ), ( 57 , 4.257858609 , -1.010767212 ), ( 57 , 3.774732051 , -1.190233583 ), ( 57 , 3.737817689 , -1.162178815 ), ( 57 , 3.999471416 , -1.062975691 ), ( 57 , 4.028992825 , -1.035343924 ), ( 57 , 4.15001438 , -0.960900863 ), ( 57 , 4.145666513 , -0.928690453 ), ( 57 , 3.976148863 , -0.965971476 ), ( 57 , 3.979163539 , -0.850743094 ), ( 57 , 3.868005582 , -0.828005571 ), ( 57 , 4.55667698 , -1.058958967 ), ( 57 , 4.469839407 , -1.007270125 ), ( 57 , 4.451044588 , -0.952909226 ), ( 57 , 4.261752278 , -0.939181189 ), ( 57 , 4.369171579 , -0.851075088 ), ( 57 , 4.533953552 , -0.813942867 ), ( 57 , 4.532605469 , -0.770211349 ), ( 57 , 4.39298791 , -0.687260945 ), ( 57 , 4.504125697 , -0.689535004 ), ( 57 , 4.525017032 , -0.570080777 ), ( 57 , 4.084942694 , -0.774877624 ), ( 57 , 3.964744469 , -0.748188992 ), ( 57 , 3.962774497 , -0.70832706 ), ( 57 , 4.438312941 , -0.580488774 ), ( 57 , 4.300419613 , -0.409220589 ), ( 57 , 3.261497809 , -1.029600068 ), ( 57 , 3.611244067 , -0.87826177 ), ( 57 , 3.363962691 , -0.921315764 ), ( 57 , 3.828098303 , -0.805181167 ), ( 57 , 3.825476708 , -0.701827166 ), ( 57 , 3.382982247 , -0.749022352 ), ( 57 , 3.245192921 , -0.679133573 ), ( 57 , 3.200132103 , -0.679443776 ), ( 57 , 3.252250191 , -0.614119589 ), ( 57 , 3.675570444 , -0.478740462 ), ( 57 , 3.545615522 , -0.5007859 ), ( 57 , 3.874452661 , -0.465063882 ), ( 57 , 3.853796793 , -0.436294178 ), ( 57 , 4.169155051 , -0.458431151 ), ( 57 , 3.610322481 , -0.311716843 ), ( 57 , 3.912892199 , -0.199135643 ), ( 57 , 3.790395762 , -0.120443622 ), ( 57 , 5.71998734 , -1.443721328 ), ( 57 , 5.451090591 , -1.200382764 ), ( 57 , 5.860564428 , -0.801610401 ), ( 57 , 5.982275793 , -0.683416627 ), ( 57 , 5.708401615 , -0.825639671 ), ( 57 , 5.756532421 , -0.670120902 ), ( 57 , 5.615706959 , -0.742599912 ), ( 57 , 5.604314189 , -0.71570228 ), ( 57 , 5.884616812 , -0.682997903 ), ( 57 , 5.929136122 , -0.577376575 ), ( 57 , 5.819550632 , -0.439488624 ), ( 57 , 5.340210491 , -0.740416109 ), ( 57 , 4.885110029 , -0.753741034 ), ( 57 , 4.781737351 , -0.771546682 ), ( 57 , 4.836533833 , -0.680607808 ), ( 57 , 5.131389108 , -0.431432515 ), ( 57 , 5.085425894 , -0.418225185 ), ( 57 , 5.064227142 , -0.3909945 ), ( 57 , 5.555783897 , -0.482062282 ), ( 57 , 5.411965797 , -0.58349161 ), ( 57 , 5.798783003 , -0.323228873 ), ( 57 , 5.244617159 , -0.238012954 ), ( 57 , 5.484262053 , -0.169255357 ), ( 57 , 5.577133687 , -0.078878256 ), ( 58 , 0.839674249 , 0.116254295 ), ( 58 , 0.683470639 , 0.217241777 ), ( 58 , 0.891463418 , 0.43151087 ), ( 58 , 0.472041334 , 0.295925957 ), ( 58 , 0.882257 , 0.481840977 ), ( 58 , 0.827342764 , 0.507489296 ), ( 58 , 0.892282609 , 0.585309583 ), ( 58 , 0.643424608 , 0.555033656 ), ( 58 , 1.169440185 , 0.377333383 ), ( 58 , 1.198313601 , 0.505464837 ), ( 58 , 1.261937131 , 0.548673168 ), ( 58 , 1.355761721 , 0.819624551 ), ( 58 , 0.927933156 , 0.61892405 ), ( 58 , 0.931938023 , 0.696371602 ), ( 58 , 1.003879164 , 0.78483357 ), ( 58 , 0.918988956 , 0.839563012 ), ( 58 , 1.236389891 , 0.872205312 ), ( 58 , 1.292057278 , 0.922752804 ), ( 58 , 1.186958322 , 0.940921162 ), ( 58 , 0.41136212 , 0.649909233 ), ( 58 , 0.306773321 , 0.734455228 ), ( 58 , 0.058946095 , 0.716184581 ), ( 58 , 0.074834938 , 0.836839661 ), ( 58 , 0.138244954 , 0.922222189 ), ( 58 , 1.019821999 , 1.01184612 ), ( 58 , 1.388498756 , 1.278766113 ), ( 58 , 0.428156601 , 1.011899793 ), ( 58 , 0.45086226 , 1.056818683 ), ( 58 , 0.470296007 , 1.114406544 ), ( 58 , 0.812124836 , 1.386116186 ), ( 58 , 0.926578099 , 1.481960624 ), ( 58 , 2.211034538 , 0.220852018 ), ( 58 , 2.231866833 , 0.42028918 ), ( 58 , 2.516391166 , 0.543869927 ), ( 58 , 2.20985176 , 0.486820829 ), ( 58 , 2.72333722 , 0.588499026 ), ( 58 , 2.749359893 , 0.679371172 ), ( 58 , 2.539471073 , 0.693899608 ), ( 58 , 2.788556381 , 0.936678903 ), ( 58 , 2.638083915 , 0.940587307 ), ( 58 , 2.808772921 , 0.998307827 ), ( 58 , 2.842242045 , 1.035325187 ), ( 58 , 1.882267162 , 0.468731897 ), ( 58 , 1.85961065 , 0.601678334 ), ( 58 , 2.000797624 , 0.611715957 ), ( 58 , 2.245935565 , 0.63563735 ), ( 58 , 1.817473172 , 0.807634248 ), ( 58 , 1.92548981 , 0.789381833 ), ( 58 , 2.012383934 , 0.840037845 ), ( 58 , 1.891021951 , 0.897602703 ), ( 58 , 2.327289198 , 1.081448173 ), ( 58 , 2.341455227 , 1.127538594 ), ( 58 , 2.617382602 , 0.991549677 ), ( 58 , 2.6966554 , 1.136354034 ), ( 58 , 2.26540806 , 1.134839551 ), ( 58 , 2.179662331 , 1.32220939 ), ( 58 , 3.847232834 , 0.203503272 ), ( 58 , 3.866326019 , 0.264101448 ), ( 58 , 4.176744519 , 0.251590721 ), ( 58 , 3.580861947 , 0.348295798 ), ( 58 , 3.883243648 , 0.4994404 ), ( 58 , 3.940515089 , 0.614458056 ), ( 58 , 4.26186367 , 0.50876602 ), ( 58 , 4.252808527 , 0.590933722 ), ( 58 , 4.539386614 , 0.807058741 ), ( 58 , 4.118921728 , 0.567506737 ), ( 58 , 4.025701928 , 0.690825129 ), ( 58 , 4.093991027 , 0.816757676 ), ( 58 , 4.47385555 , 0.950703372 ), ( 58 , 3.512959327 , 0.416337253 ), ( 58 , 3.615647654 , 0.544376399 ), ( 58 , 3.492027436 , 0.700758786 ), ( 58 , 3.471147431 , 0.713060376 ), ( 58 , 3.232570429 , 1.009910882 ), ( 58 , 3.911233846 , 0.866152467 ), ( 58 , 4.083847399 , 0.953482183 ), ( 58 , 3.79005718 , 0.869951079 ), ( 58 , 3.832108131 , 0.942882907 ), ( 58 , 3.565620219 , 1.243410958 ), ( 58 , 3.885007778 , 1.44007789 ), ( 58 , 3.355855159 , 1.45591816 ), ( 58 , 4.585076791 , 1.517879946 ), ( 58 , 5.792224782 , 0.33991659 ), ( 58 , 5.602439608 , 0.4236658 ), ( 58 , 5.589768662 , 0.416350721 ), ( 58 , 5.232381703 , 0.403194218 ), ( 58 , 5.243603514 , 0.432848703 ), ( 58 , 5.288399232 , 0.462141165 ), ( 58 , 5.287473277 , 0.467903922 ), ( 58 , 5.604986481 , 0.456832907 ), ( 58 , 5.620579384 , 0.562447778 ), ( 58 , 5.460571256 , 0.493063694 ), ( 58 , 5.799839579 , 0.578957926 ), ( 58 , 5.993760879 , 0.781017373 ), ( 58 , 5.685877699 , 0.718288093 ), ( 58 , 5.610291008 , 0.639965452 ), ( 58 , 6.05525774 , 0.860389549 ), ( 58 , 6.226602356 , 1.002714493 ), ( 58 , 6.079807321 , 0.99781176 ), ( 58 , 6.119746474 , 1.049527175 ), ( 58 , 6.063865779 , 1.035550876 ), ( 58 , 5.256071193 , 0.562319291 ), ( 58 , 5.339571618 , 0.654087419 ), ( 58 , 5.181285546 , 0.670339243 ), ( 58 , 5.332375451 , 0.79927807 ), ( 58 , 5.353975182 , 0.861909155 ), ( 58 , 5.201601254 , 0.836566486 ), ( 58 , 4.903759097 , 0.557209255 ), ( 58 , 4.929531304 , 0.572691268 ), ( 58 , 4.907884008 , 0.656152387 ), ( 58 , 4.965599004 , 0.66787125 ), ( 58 , 5.110851187 , 0.878023204 ), ( 58 , 5.12398637 , 0.894224839 ), ( 58 , 4.916237584 , 0.924813763 ), ( 58 , 5.490493238 , 0.776186359 ), ( 58 , 5.479591981 , 0.827593737 ), ( 58 , 5.49124624 , 0.880724862 ), ( 58 , 5.495280958 , 1.037400596 ), ( 58 , 5.704700398 , 1.059286972 ), ( 58 , 5.286557085 , 1.083483881 ), ( 58 , 4.713089867 , 1.396349479 ), ( 58 , 0.146970187 , -0.51589276 ), ( 58 , 0.040804739 , -0.488483893 ), ( 58 , 0.163066766 , -0.432271247 ), ( 58 , 0.215678901 , -0.236701494 ), ( 58 , 5.998484573 , -0.284009974 ), ( 58 , 0.295721395 , -0.170788003 ), ( 58 , 0.256258849 , -0.198619789 ), ( 58 , 0.579461709 , -0.041785035 ), ( 58 , 0.602287945 , 0.030724431 ), ( 58 , 0.573110933 , 0.1495576 ), ( 58 , 0.334239319 , -0.043647392 ), ( 58 , 0.326460108 , -0.016971022 ), ( 58 , 5.773878924 , -0.113836499 ), ( 58 , 5.864809104 , -0.084422581 ), ( 58 , 6.237186394 , 0.018778674 ), ( 58 , 6.180146085 , 0.036698091 ), ( 58 , 5.886709759 , 0.159329332 ), ( 58 , 6.017884761 , 0.204702628 ), ( 58 , 5.774062703 , 0.198732418 ), ( 58 , 6.248123488 , 0.051143178 ), ( 58 , 0.010875141 , 0.148093587 ), ( 58 , 0.024873565 , 0.233808268 ), ( 58 , 0.160520678 , 0.265842458 ), ( 58 , 0.238182147 , 0.334900013 ), ( 58 , 0.039464215 , 0.317855696 ), ( 58 , 0.089043169 , 0.539927961 ), ( 58 , 6.112266739 , 0.530831746 ), ( 58 , 6.169541031 , 0.546727637 ), ( 58 , 1.548431165 , -0.697393642 ), ( 58 , 1.594591434 , -0.619828109 ), ( 58 , 1.57634556 , -0.591876359 ), ( 58 , 1.597380595 , -0.519390965 ), ( 58 , 1.705060792 , -0.484669816 ), ( 58 , 1.613566685 , -0.397480427 ), ( 58 , 1.864781128 , -0.416098678 ), ( 58 , 1.883616624 , -0.364475451 ), ( 58 , 1.810978181 , -0.356133531 ), ( 58 , 1.641167778 , -0.290038828 ), ( 58 , 1.30471601 , -0.285798302 ), ( 58 , 1.612574782 , -0.254545959 ), ( 58 , 1.525454922 , -0.252793517 ), ( 58 , 1.477564901 , -0.114737173 ), ( 58 , 1.917568988 , -0.286167901 ), ( 58 , 1.924099318 , -0.250637891 ), ( 58 , 1.960488319 , -0.033255531 ), ( 58 , 2.242861236 , -0.037549543 ), ( 58 , 1.781617877 , -0.023023805 ), ( 58 , 1.689740075 , -0.004817766 ), ( 58 , 1.724663537 , 0.015537071 ), ( 58 , 1.690087948 , 0.050760781 ), ( 58 , 1.761229573 , 0.068635402 ), ( 58 , 1.773865589 , 0.149873546 ), ( 58 , 1.982104136 , 0.058847048 ), ( 58 , 1.801283073 , 0.146261601 ), ( 58 , 1.817019286 , 0.173773972 ), ( 58 , 2.016089091 , 0.247984005 ), ( 58 , 1.137579431 , -0.132514333 ), ( 58 , 1.373286173 , 0.089992725 ), ( 58 , 0.98150011 , -0.005178992 ), ( 58 , 0.959280937 , 0.053353453 ), ( 58 , 1.096687084 , 0.09639627 ), ( 58 , 1.143460723 , 0.245690871 ), ( 58 , 1.474885879 , 0.131620673 ), ( 58 , 1.529266463 , 0.249675378 ), ( 58 , 1.717414228 , 0.247043739 ), ( 58 , 1.788221335 , 0.282792355 ), ( 58 , 1.548738681 , 0.344695168 ), ( 58 , 1.297530273 , 0.299387959 ), ( 58 , 1.214153361 , 0.361015681 ), ( 58 , 1.43673437 , 0.438949383 ), ( 58 , 1.30095666 , 0.437206333 ), ( 58 , 1.613264927 , 0.403405732 ), ( 58 , 1.531388741 , 0.488132698 ), ( 58 , 3.020609837 , -0.510683615 ), ( 58 , 3.283818651 , -0.241893611 ), ( 58 , 3.288071588 , -0.223923089 ), ( 58 , 3.009132183 , -0.426975804 ), ( 58 , 3.546764295 , -0.268135667 ), ( 58 , 3.597548908 , -0.282378824 ), ( 58 , 3.440655162 , -0.156814806 ), ( 58 , 3.916326218 , -0.002928592 ), ( 58 , 3.401897847 , -0.066529565 ), ( 58 , 2.777449592 , -0.213508092 ), ( 58 , 2.837472434 , -0.155297211 ), ( 58 , 2.909868841 , 0.034119953 ), ( 58 , 2.506922811 , -0.103242392 ), ( 58 , 2.770860441 , 0.150977988 ), ( 58 , 3.185455078 , 0.10135356 ), ( 58 , 3.119999852 , 0.147376461 ), ( 58 , 3.431219438 , 0.394721601 ), ( 58 , 3.194626126 , 0.358524438 ), ( 58 , 3.356651709 , 0.480882342 ), ( 58 , 3.012794149 , 0.32131461 ), ( 58 , 3.230280511 , 0.46458435 ), ( 58 , 3.217987733 , 0.505053647 ), ( 58 , 3.14881194 , 0.629043317 ), ( 58 , 3.09661224 , 0.609675167 ), ( 58 , 4.678476362 , -0.60736127 ), ( 58 , 4.637566246 , -0.644824488 ), ( 58 , 4.82155684 , -0.536811936 ), ( 58 , 4.697982737 , -0.489835821 ), ( 58 , 4.907982503 , -0.436525415 ), ( 58 , 4.860267941 , -0.419443338 ), ( 58 , 4.855165811 , -0.259455172 ), ( 58 , 4.451290481 , -0.436148609 ), ( 58 , 4.746434497 , -0.299389501 ), ( 58 , 4.849520703 , -0.188424956 ), ( 58 , 5.03204179 , -0.214375134 ), ( 58 , 4.919565055 , -0.099577569 ), ( 58 , 4.876448908 , -0.005403894 ), ( 58 , 4.954369795 , 0.115448125 ), ( 58 , 5.100796161 , 0.034037827 ), ( 58 , 5.097874231 , 0.051137031 ), ( 58 , 5.254047459 , 0.127025902 ), ( 58 , 5.102342068 , 0.254745698 ), ( 58 , 5.041099366 , 0.263258076 ), ( 58 , 4.221976468 , -0.222452469 ), ( 58 , 4.696273176 , 0.011699834 ), ( 58 , 4.587401815 , 0.047553848 ), ( 58 , 4.370763592 , 0.020622829 ), ( 58 , 4.36613659 , 0.073647958 ), ( 58 , 4.294297741 , 0.121271108 ), ( 58 , 4.755588574 , 0.054427904 ), ( 58 , 4.754127459 , 0.069695565 ), ( 58 , 4.60161134 , 0.16731833 ), ( 58 , 5.003167947 , 0.423257828 ), ( 58 , 4.847971475 , 0.29545645 ), ( 58 , 4.866023708 , 0.317709776 ), ( 58 , 4.841522293 , 0.416543357 ), ( 58 , 4.55760438 , 0.284502811 ), ( 58 , 4.596235417 , 0.336081393 ), ( 58 , 4.614291365 , 0.424289872 ), ( 58 , 4.478069071 , 0.385436604 ), ( 58 , 4.555782649 , 0.400727911 ), ( 58 , 4.635904411 , 0.428711086 ), ( 58 , 4.825750341 , 0.520610091 ), ( 58 , 4.670424789 , 0.511773602 ), ( 58 , 4.755950166 , 0.636457807 ), ( 58 , 0.818327979 , -1.378613943 ), ( 58 , 1.471386409 , -1.404323955 ), ( 58 , 0.92006344 , -1.160464141 ), ( 58 , 0.585751909 , -1.184050185 ), ( 58 , 0.915935073 , -0.74410829 ), ( 58 , 1.271781264 , -0.609231179 ), ( 58 , 0.994553354 , -0.52655693 ), ( 58 , 1.222215756 , -0.427295782 ), ( 58 , 0.182290209 , -0.986127093 ), ( 58 , 0.522050005 , -0.733583266 ), ( 58 , 0.132822086 , -0.841519541 ), ( 58 , 0.005827891 , -0.878551407 ), ( 58 , 0.027680815 , -0.85652854 ), ( 58 , 0.267502165 , -0.679215517 ), ( 58 , 0.419514109 , -0.521976723 ), ( 58 , 0.783690418 , -0.441106626 ), ( 58 , 1.097832783 , -0.355275746 ), ( 58 , 0.942311121 , -0.195358811 ), ( 58 , 0.680677718 , -0.136694302 ), ( 58 , 1.944430708 , -1.380453425 ), ( 58 , 2.432362193 , -1.304360296 ), ( 58 , 2.659458329 , -1.198739242 ), ( 58 , 2.578399415 , -1.095107825 ), ( 58 , 1.870587571 , -1.230393341 ), ( 58 , 1.669582194 , -1.221447841 ), ( 58 , 2.046886226 , -0.984545016 ), ( 58 , 2.467228236 , -1.081233125 ), ( 58 , 2.33523983 , -0.959344717 ), ( 58 , 2.32409245 , -0.844025293 ), ( 58 , 3.09994142 , -1.093437895 ), ( 58 , 3.038495927 , -1.065565748 ), ( 58 , 2.980734058 , -0.99098593 ), ( 58 , 2.783988803 , -0.999310885 ), ( 58 , 2.734995043 , -0.957789246 ), ( 58 , 2.676742386 , -0.903308094 ), ( 58 , 2.87973748 , -0.764577107 ), ( 58 , 2.922948714 , -0.564923537 ), ( 58 , 2.591091298 , -0.892678387 ), ( 58 , 2.6857424 , -0.752459368 ), ( 58 , 2.417873944 , -0.770488281 ), ( 58 , 2.771639787 , -0.690497139 ), ( 58 , 2.876428507 , -0.588839332 ), ( 58 , 2.746628891 , -0.517730454 ), ( 58 , 1.676514972 , -1.052103813 ), ( 58 , 1.777232892 , -0.969352608 ), ( 58 , 1.999725441 , -0.84825437 ), ( 58 , 1.911442953 , -0.767714893 ), ( 58 , 2.098021372 , -0.945116925 ), ( 58 , 2.116481998 , -0.926908409 ), ( 58 , 2.153612342 , -0.876086801 ), ( 58 , 2.203275087 , -0.746474296 ), ( 58 , 2.241176262 , -0.678038697 ), ( 58 , 2.034072625 , -0.662065524 ), ( 58 , 2.027064435 , -0.662227049 ), ( 58 , 2.174201589 , -0.618748887 ), ( 58 , 1.897839115 , -0.723025859 ), ( 58 , 1.61518287 , -0.704297534 ), ( 58 , 1.645062623 , -0.658632512 ), ( 58 , 1.949129107 , -0.595866825 ), ( 58 , 1.897397161 , -0.471905584 ), ( 58 , 1.88584312 , -0.452782448 ), ( 58 , 2.4866916 , -0.464076243 ), ( 58 , 2.636954385 , -0.423859877 ), ( 58 , 2.649229928 , -0.299186475 ), ( 58 , 2.49730063 , -0.338598075 ), ( 58 , 2.187567626 , -0.350447109 ), ( 58 , 2.038583949 , -0.393038343 ), ( 58 , 2.058248041 , -0.36954599 ), ( 58 , 2.060860538 , -0.259114646 ), ( 58 , 2.21088113 , -0.218773254 ), ( 58 , 3.975630735 , -1.479827168 ), ( 58 , 4.338544345 , -1.238977454 ), ( 58 , 4.36936222 , -1.19199361 ), ( 58 , 4.171757284 , -1.055627429 ), ( 58 , 3.358669174 , -1.256397821 ), ( 58 , 3.877868358 , -1.162278213 ), ( 58 , 3.153047136 , -1.207634089 ), ( 58 , 3.565762342 , -1.076734836 ), ( 58 , 4.028090842 , -1.058670389 ), ( 58 , 3.723105422 , -0.936643834 ), ( 58 , 4.0218263 , -0.843335146 ), ( 58 , 4.356506673 , -0.757447879 ), ( 58 , 4.630668881 , -0.818941749 ), ( 58 , 4.595117008 , -0.718605954 ), ( 58 , 4.428664189 , -0.718218179 ), ( 58 , 4.220519802 , -0.641513653 ), ( 58 , 4.242313867 , -0.495980926 ), ( 58 , 3.374439877 , -1.052930905 ), ( 58 , 3.365428252 , -1.052953569 ), ( 58 , 3.637778979 , -0.931542415 ), ( 58 , 3.500568776 , -0.910764417 ), ( 58 , 3.566537402 , -0.810321685 ), ( 58 , 3.82364956 , -0.807133293 ), ( 58 , 3.820193444 , -0.724618652 ), ( 58 , 3.729359167 , -0.730204234 ), ( 58 , 3.432130344 , -0.725857082 ), ( 58 , 3.180403917 , -0.773639642 ), ( 58 , 3.298738528 , -0.69585704 ), ( 58 , 3.563983617 , -0.462426454 ), ( 58 , 3.602414751 , -0.455811602 ), ( 58 , 4.165483173 , -0.440589337 ), ( 58 , 4.226874884 , -0.413391587 ), ( 58 , 4.215432165 , -0.412010491 ), ( 58 , 4.241129913 , -0.339649951 ), ( 58 , 4.178641563 , -0.366226422 ), ( 58 , 3.998472777 , -0.390943191 ), ( 58 , 3.746506225 , -0.326660746 ), ( 58 , 4.019167473 , -0.101664137 ), ( 58 , 3.932799326 , -0.048084998 ), ( 58 , 6.14388056 , -1.526851203 ), ( 58 , 5.538871359 , -1.277153717 ), ( 58 , 5.719375458 , -1.215262428 ), ( 58 , 5.623255536 , -1.213103414 ), ( 58 , 5.230287263 , -1.207150892 ), ( 58 , 4.924573964 , -1.135829284 ), ( 58 , 5.566580579 , -0.929617944 ), ( 58 , 6.095439809 , -1.082128204 ), ( 58 , 6.131903329 , -0.992204335 ), ( 58 , 6.00740422 , -0.837220538 ), ( 58 , 5.958896559 , -0.812405747 ), ( 58 , 5.643483714 , -0.782757897 ), ( 58 , 5.525827545 , -0.72232281 ), ( 58 , 6.057816946 , -0.503071749 ), ( 58 , 6.027166956 , -0.503599234 ), ( 58 , 5.779715249 , -0.468139681 ), ( 58 , 5.862199507 , -0.432190355 ), ( 58 , 4.780781404 , -1.100526789 ), ( 58 , 5.117736229 , -0.928264996 ), ( 58 , 5.102473519 , -0.758275654 ), ( 58 , 5.237479096 , -0.588271265 ), ( 58 , 4.941266967 , -0.813238377 ), ( 58 , 5.01765079 , -0.731158838 ), ( 58 , 4.988567215 , -0.667641655 ), ( 58 , 4.814842832 , -0.632471632 ), ( 58 , 5.104522939 , -0.470993469 ), ( 58 , 5.089032822 , -0.380075498 ), ( 58 , 5.458571229 , -0.661714565 ), ( 58 , 5.483788617 , -0.458966323 ), ( 58 , 5.451072763 , -0.449970094 ), ( 58 , 5.655679394 , -0.456782027 ), ( 58 , 5.821987639 , -0.367813949 ), ( 58 , 5.649848399 , -0.350532798 ), ( 58 , 5.60781968 , -0.170164622 ), ( 58 , 5.377375326 , -0.171960681 ), ( 59 , 0.831856624 , 0.20721348 ), ( 59 , 0.81330053 , 0.230153401 ), ( 59 , 0.539567026 , 0.452661011 ), ( 59 , 0.592421255 , 0.449989266 ), ( 59 , 0.777081529 , 0.360733629 ), ( 59 , 0.73638452 , 0.439614144 ), ( 59 , 0.79369681 , 0.461855831 ), ( 59 , 1.262390584 , 0.568767053 ), ( 59 , 1.154648076 , 0.59269941 ), ( 59 , 1.388681383 , 0.746859535 ), ( 59 , 1.270398182 , 0.850681142 ), ( 59 , 1.142591544 , 0.986222155 ), ( 59 , 1.397906876 , 1.093513264 ), ( 59 , 0.474237256 , 0.57058776 ), ( 59 , 0.623237911 , 0.722489655 ), ( 59 , 0.506854404 , 0.65016854 ), ( 59 , 0.51731006 , 0.858783018 ), ( 59 , 0.159068754 , 1.052890844 ), ( 59 , 0.132352709 , 1.046805159 ), ( 59 , 0.817320278 , 1.118016516 ), ( 59 , 1.206029825 , 1.121575523 ), ( 59 , 1.494179831 , 1.146637676 ), ( 59 , 1.001858463 , 1.104732889 ), ( 59 , 0.986205303 , 1.17287544 ), ( 59 , 0.561456094 , 1.019684147 ), ( 59 , 0.25534497 , 1.158055696 ), ( 59 , 0.020536104 , 1.172278471 ), ( 59 , 0.398111877 , 1.226339524 ), ( 59 , 1.091245403 , 1.511900785 ), ( 59 , 2.480485927 , 0.142908967 ), ( 59 , 2.256254102 , 0.168521158 ), ( 59 , 2.299173902 , 0.211352409 ), ( 59 , 2.558601773 , 0.206126275 ), ( 59 , 2.097834071 , 0.302093391 ), ( 59 , 2.183995821 , 0.419266124 ), ( 59 , 2.139995185 , 0.445144795 ), ( 59 , 2.693173158 , 0.403267695 ), ( 59 , 2.756995409 , 0.565130835 ), ( 59 , 2.71880877 , 0.591808129 ), ( 59 , 2.714735684 , 0.719574309 ), ( 59 , 3.032868398 , 0.95618632 ), ( 59 , 2.841309173 , 0.987546943 ), ( 59 , 3.006632172 , 1.078264799 ), ( 59 , 1.886871341 , 0.421117871 ), ( 59 , 1.939750127 , 0.482373412 ), ( 59 , 1.911294486 , 0.713551352 ), ( 59 , 1.991970942 , 0.805994048 ), ( 59 , 1.735028442 , 0.99235231 ), ( 59 , 1.772549095 , 1.037455969 ), ( 59 , 2.261799298 , 0.932031009 ), ( 59 , 2.709848509 , 1.199868848 ), ( 59 , 2.100273864 , 1.030574633 ), ( 59 , 2.178540308 , 1.090956722 ), ( 59 , 1.967324621 , 1.19494578 ), ( 59 , 1.838521501 , 1.235835984 ), ( 59 , 2.508469019 , 1.260217699 ), ( 59 , 3.910497963 , 0.252134675 ), ( 59 , 3.914749757 , 0.286026263 ), ( 59 , 4.109858289 , 0.322264814 ), ( 59 , 4.007311166 , 0.359059739 ), ( 59 , 3.842919101 , 0.286545534 ), ( 59 , 3.635584061 , 0.312988229 ), ( 59 , 3.963627479 , 0.45903983 ), ( 59 , 4.240279248 , 0.635733806 ), ( 59 , 4.567387587 , 0.60556119 ), ( 59 , 4.712113582 , 0.794144692 ), ( 59 , 4.5672533 , 0.842296437 ), ( 59 , 4.184263594 , 0.639557989 ), ( 59 , 4.098775942 , 0.639432832 ), ( 59 , 4.545522415 , 0.932362687 ), ( 59 , 3.582456671 , 0.392622199 ), ( 59 , 3.60507171 , 0.717128688 ), ( 59 , 3.360526256 , 0.65479682 ), ( 59 , 3.429007171 , 0.790088382 ), ( 59 , 3.211957526 , 0.709650079 ), ( 59 , 3.261950461 , 0.972369016 ), ( 59 , 3.348052189 , 1.095738515 ), ( 59 , 3.880350923 , 0.804870155 ), ( 59 , 3.933321125 , 1.050767343 ), ( 59 , 4.330290233 , 1.061565514 ), ( 59 , 4.091262551 , 1.209228461 ), ( 59 , 4.633724702 , 1.259342005 ), ( 59 , 3.584477908 , 1.131363045 ), ( 59 , 3.520882827 , 1.372598155 ), ( 59 , 5.51776197 , 0.096043192 ), ( 59 , 5.499798706 , 0.337357602 ), ( 59 , 5.668058979 , 0.353698697 ), ( 59 , 5.406518536 , 0.276426842 ), ( 59 , 5.348019244 , 0.373667826 ), ( 59 , 5.218626351 , 0.290331083 ), ( 59 , 5.253844309 , 0.297880139 ), ( 59 , 5.526167026 , 0.544274333 ), ( 59 , 5.406118334 , 0.529425016 ), ( 59 , 5.415069331 , 0.563867202 ), ( 59 , 5.901131508 , 0.694286152 ), ( 59 , 6.112545884 , 0.666400127 ), ( 59 , 5.979337301 , 0.73222467 ), ( 59 , 5.961067036 , 0.777479246 ), ( 59 , 5.906549533 , 0.988293127 ), ( 59 , 5.251893415 , 0.521733964 ), ( 59 , 4.948970754 , 0.487104434 ), ( 59 , 5.025530164 , 0.545998984 ), ( 59 , 4.995861125 , 0.554029233 ), ( 59 , 5.303161404 , 0.588669408 ), ( 59 , 5.221745191 , 0.632692302 ), ( 59 , 5.315035342 , 0.710908145 ), ( 59 , 5.263217714 , 0.927947208 ), ( 59 , 4.886400611 , 0.910996134 ), ( 59 , 4.960004134 , 1.009051407 ), ( 59 , 5.482863051 , 0.784084065 ), ( 59 , 5.444646582 , 0.834821369 ), ( 59 , 5.482193396 , 0.885378336 ), ( 59 , 5.593817626 , 0.862005409 ), ( 59 , 5.614506949 , 0.923254196 ), ( 59 , 5.36449676 , 0.978575189 ), ( 59 , 5.581830504 , 1.023172636 ), ( 59 , 5.73727121 , 0.988051974 ), ( 59 , 5.983785877 , 1.076816478 ), ( 59 , 6.224772804 , 1.165569698 ), ( 59 , 5.740025811 , 1.140063143 ), ( 59 , 6.085189208 , 1.295580946 ), ( 59 , 5.323697253 , 1.202191565 ), ( 59 , 5.167517068 , 1.210157313 ), ( 59 , 4.958600665 , 1.138965016 ), ( 59 , 5.521743585 , 1.36356628 ), ( 59 , 5.876107353 , 1.375066989 ), ( 59 , 4.842195762 , 1.353451665 ), ( 59 , 0.035153872 , -0.585196697 ), ( 59 , 0.070474842 , -0.5488462 ), ( 59 , 0.040811601 , -0.488482506 ), ( 59 , 6.28084948 , -0.514613882 ), ( 59 , 6.114140314 , -0.471009347 ), ( 59 , 6.02181175 , -0.439207456 ), ( 59 , 6.241977285 , -0.251356169 ), ( 59 , 6.185710099 , -0.227941005 ), ( 59 , 0.443961118 , -0.197685 ), ( 59 , 0.408925476 , -0.122625394 ), ( 59 , 0.539634123 , -0.071627281 ), ( 59 , 0.688086735 , -0.059279674 ), ( 59 , 0.703539752 , -0.012156519 ), ( 59 , 0.211202377 , 0.092025716 ), ( 59 , 5.764315395 , 0.010552988 ), ( 59 , 5.681781644 , 0.022430905 ), ( 59 , 5.87577454 , 0.076689608 ), ( 59 , 5.760164834 , 0.117241637 ), ( 59 , 5.76462034 , 0.144114609 ), ( 59 , 5.9379727 , 0.253942095 ), ( 59 , 6.204401408 , 0.126541067 ), ( 59 , 0.323437129 , 0.281579119 ), ( 59 , 6.068122889 , 0.307076448 ), ( 59 , 6.142136229 , 0.439247415 ), ( 59 , 0.009576755 , 0.472553043 ), ( 59 , 0.081329931 , 0.550078516 ), ( 59 , 6.172516419 , 0.584641248 ), ( 59 , 1.538307683 , -0.656789445 ), ( 59 , 1.675219218 , -0.446418502 ), ( 59 , 1.616950293 , -0.473939558 ), ( 59 , 1.5266886 , -0.40093239 ), ( 59 , 1.775978508 , -0.36678728 ), ( 59 , 1.729536099 , -0.325674506 ), ( 59 , 1.493271717 , -0.39049383 ), ( 59 , 1.422431092 , -0.343752112 ), ( 59 , 1.287677301 , -0.292180674 ), ( 59 , 1.288538861 , -0.286538541 ), ( 59 , 1.259004018 , -0.284998565 ), ( 59 , 1.547798595 , -0.205495068 ), ( 59 , 1.418207339 , -0.180275421 ), ( 59 , 1.472429667 , -0.103644679 ), ( 59 , 1.942258188 , -0.240017334 ), ( 59 , 2.051531015 , -0.160281313 ), ( 59 , 2.062967337 , -0.094744132 ), ( 59 , 1.895736343 , -0.180052295 ), ( 59 , 1.834322499 , -0.14672632 ), ( 59 , 1.930433782 , -0.10442111 ), ( 59 , 2.295292852 , -0.035750135 ), ( 59 , 1.850430024 , -0.092921155 ), ( 59 , 1.928842071 , 0.00309114 ), ( 59 , 1.792588785 , -0.009462706 ), ( 59 , 1.687120871 , -0.026310645 ), ( 59 , 2.01404816 , 0.063261907 ), ( 59 , 2.074863412 , 0.154674885 ), ( 59 , 1.89604836 , 0.211458953 ), ( 59 , 1.239571238 , -0.148415072 ), ( 59 , 1.259320989 , -0.099060906 ), ( 59 , 1.066304732 , -0.223265651 ), ( 59 , 1.045025541 , -0.2194697 ), ( 59 , 1.094309842 , -0.153934544 ), ( 59 , 1.330415398 , -0.053052522 ), ( 59 , 1.28650478 , 0.008152964 ), ( 59 , 0.87752939 , 0.064148761 ), ( 59 , 1.086583059 , 0.233842125 ), ( 59 , 1.167099259 , 0.195690355 ), ( 59 , 1.213701086 , 0.279832046 ), ( 59 , 1.646120065 , 0.089031529 ), ( 59 , 1.592493805 , 0.072581988 ), ( 59 , 1.592479797 , 0.094596189 ), ( 59 , 1.555381768 , 0.165968495 ), ( 59 , 1.565939915 , 0.223547045 ), ( 59 , 1.658369241 , 0.255708455 ), ( 59 , 1.513019091 , 0.276154163 ), ( 59 , 1.633962563 , 0.312522511 ), ( 59 , 1.797682879 , 0.411926684 ), ( 59 , 1.812131512 , 0.442892372 ), ( 59 , 1.343571596 , 0.378819759 ), ( 59 , 1.712395792 , 0.566442725 ), ( 59 , 1.471084939 , 0.469917968 ), ( 59 , 1.471089334 , 0.469913653 ), ( 59 , 1.416516514 , 0.543549771 ), ( 59 , 1.548899886 , 0.553273715 ), ( 59 , 3.243516402 , -0.433553944 ), ( 59 , 3.020583007 , -0.510724013 ), ( 59 , 3.35292066 , -0.48167288 ), ( 59 , 3.27375753 , -0.413580387 ), ( 59 , 3.251523774 , -0.2026468 ), ( 59 , 3.102485139 , -0.093084418 ), ( 59 , 3.554682929 , -0.230633824 ), ( 59 , 3.558386218 , -0.094171338 ), ( 59 , 3.510545781 , -0.090132926 ), ( 59 , 3.302112571 , -0.101788324 ), ( 59 , 3.223068507 , -0.013740961 ), ( 59 , 3.500080206 , 0.089962553 ), ( 59 , 3.343979406 , 0.166443794 ), ( 59 , 3.466762114 , 0.19776814 ), ( 59 , 3.530866483 , 0.18881066 ), ( 59 , 2.854905285 , -0.240121997 ), ( 59 , 2.665689403 , -0.14693516 ), ( 59 , 2.662171675 , -0.146750111 ), ( 59 , 2.730279847 , -0.123201424 ), ( 59 , 2.720269686 , -0.071104788 ), ( 59 , 3.029720106 , 0.053397477 ), ( 59 , 2.467023979 , -0.089316173 ), ( 59 , 2.72818331 , 0.153319719 ), ( 59 , 3.200190728 , 0.179110605 ), ( 59 , 3.30290954 , 0.298266532 ), ( 59 , 3.193305555 , 0.451517844 ), ( 59 , 3.038182551 , 0.484877117 ), ( 59 , 3.061130526 , 0.5540767 ), ( 59 , 4.756446743 , -0.536319871 ), ( 59 , 4.706502021 , -0.501941402 ), ( 59 , 4.72929293 , -0.425175212 ), ( 59 , 4.984924357 , -0.433680372 ), ( 59 , 4.956784294 , -0.404460033 ), ( 59 , 4.948015476 , -0.372801917 ), ( 59 , 4.998999772 , -0.273327217 ), ( 59 , 4.844155931 , -0.326890211 ), ( 59 , 4.778782278 , -0.35583745 ), ( 59 , 4.916252464 , -0.176715762 ), ( 59 , 4.696319783 , -0.275989489 ), ( 59 , 4.658337846 , -0.257016407 ), ( 59 , 4.73910667 , -0.145282186 ), ( 59 , 5.255124204 , -0.012394083 ), ( 59 , 4.915183552 , -0.016787332 ), ( 59 , 4.989625588 , 0.031734941 ), ( 59 , 5.173449506 , 0.132874635 ), ( 59 , 5.089391584 , 0.227315452 ), ( 59 , 5.15348672 , 0.241128224 ), ( 59 , 5.136898274 , 0.28733182 ), ( 59 , 4.318743364 , -0.253960058 ), ( 59 , 4.522708867 , 0.021126595 ), ( 59 , 4.405110059 , 0.23144741 ), ( 59 , 4.386780742 , 0.274801017 ), ( 59 , 4.682861844 , 0.106498235 ), ( 59 , 4.824293127 , 0.140184177 ), ( 59 , 4.957174179 , 0.315979566 ), ( 59 , 4.925712885 , 0.337347574 ), ( 59 , 4.466535015 , 0.237454076 ), ( 59 , 4.597443699 , 0.28478819 ), ( 59 , 4.661833457 , 0.358935245 ), ( 59 , 4.454816111 , 0.395001825 ), ( 59 , 4.532664864 , 0.503054811 ), ( 59 , 4.694267156 , 0.392074441 ), ( 59 , 4.746530946 , 0.455488258 ), ( 59 , 4.746534635 , 0.455557781 ), ( 59 , 4.639765262 , 0.424609341 ), ( 59 , 4.58551656 , 0.54381398 ), ( 59 , 0.425326721 , -1.479505746 ), ( 59 , 1.138695564 , -1.423823033 ), ( 59 , 1.12570424 , -1.399991458 ), ( 59 , 0.916210412 , -1.367501038 ), ( 59 , 0.591143821 , -1.182398456 ), ( 59 , 0.840173729 , -1.000448107 ), ( 59 , 0.927573252 , -0.879263089 ), ( 59 , 1.42719533 , -0.714587697 ), ( 59 , 0.982901611 , -0.826579826 ), ( 59 , 1.022698576 , -0.704361766 ), ( 59 , 1.23549194 , -0.536968539 ), ( 59 , 1.050160932 , -0.532162588 ), ( 59 , 0.004693378 , -0.851893782 ), ( 59 , 0.684937781 , -0.603530911 ), ( 59 , 0.870840613 , -0.421026779 ), ( 59 , 0.988106619 , -0.512046985 ), ( 59 , 0.866946593 , -0.323937136 ), ( 59 , 0.492487189 , -0.295477512 ), ( 59 , 0.637064736 , -0.267761988 ), ( 59 , 0.699018158 , -0.164993288 ), ( 59 , 2.200446609 , -1.412192217 ), ( 59 , 2.800625265 , -1.392480329 ), ( 59 , 2.480578601 , -1.164161164 ), ( 59 , 2.047319232 , -1.052129078 ), ( 59 , 2.072076873 , -1.000118906 ), ( 59 , 2.422923126 , -1.019069277 ), ( 59 , 2.538573507 , -0.963661484 ), ( 59 , 2.186904276 , -1.011823053 ), ( 59 , 2.234379237 , -0.928720916 ), ( 59 , 2.194394915 , -0.909728314 ), ( 59 , 2.415418666 , -0.826209353 ), ( 59 , 2.300840844 , -0.805563427 ), ( 59 , 2.357811435 , -0.753528353 ), ( 59 , 2.996672078 , -0.927814172 ), ( 59 , 2.833569704 , -1.03539627 ), ( 59 , 2.699238561 , -0.979297075 ), ( 59 , 2.706474297 , -0.83250568 ), ( 59 , 3.033459719 , -0.826808353 ), ( 59 , 3.02290418 , -0.705737613 ), ( 59 , 2.503410418 , -0.855306183 ), ( 59 , 2.580149174 , -0.806231095 ), ( 59 , 2.698583098 , -0.727251936 ), ( 59 , 2.451541952 , -0.736445256 ), ( 59 , 2.410770374 , -0.76119333 ), ( 59 , 2.407164462 , -0.685194821 ), ( 59 , 2.518360866 , -0.561625759 ), ( 59 , 2.828455129 , -0.553057493 ), ( 59 , 1.903534372 , -0.816365677 ), ( 59 , 2.090160763 , -0.789165025 ), ( 59 , 2.146751817 , -0.814096639 ), ( 59 , 2.148993152 , -0.807463015 ), ( 59 , 2.271492572 , -0.788732952 ), ( 59 , 2.224245359 , -0.808638866 ), ( 59 , 2.314088724 , -0.734605013 ), ( 59 , 2.075963947 , -0.765240216 ), ( 59 , 2.058059066 , -0.748539437 ), ( 59 , 2.156282963 , -0.560960467 ), ( 59 , 1.64566676 , -0.650199957 ), ( 59 , 1.675587639 , -0.640664659 ), ( 59 , 2.047463103 , -0.61511033 ), ( 59 , 2.025274466 , -0.62939909 ), ( 59 , 1.886832015 , -0.637818975 ), ( 59 , 2.048967577 , -0.581001656 ), ( 59 , 1.891969131 , -0.477457742 ), ( 59 , 1.923855174 , -0.470607026 ), ( 59 , 2.019356593 , -0.459921041 ), ( 59 , 1.977295727 , -0.431280981 ), ( 59 , 1.982290969 , -0.40969284 ), ( 59 , 1.953527702 , -0.398968416 ), ( 59 , 2.227373563 , -0.561285141 ), ( 59 , 2.517644061 , -0.441507353 ), ( 59 , 2.50206937 , -0.399043468 ), ( 59 , 2.483647756 , -0.362139698 ), ( 59 , 2.408455143 , -0.344655646 ), ( 59 , 1.978011266 , -0.338821 ), ( 59 , 2.350693435 , -0.281543328 ), ( 59 , 2.364768907 , -0.008415882 ), ( 59 , 3.935067776 , -1.452590109 ), ( 59 , 3.947848153 , -1.449294065 ), ( 59 , 4.109857841 , -1.327885815 ), ( 59 , 3.989473221 , -1.223118611 ), ( 59 , 4.214653099 , -1.26362558 ), ( 59 , 3.968435052 , -1.170839449 ), ( 59 , 3.459308497 , -1.155873972 ), ( 59 , 3.578683972 , -1.127073429 ), ( 59 , 4.587545716 , -0.993458704 ), ( 59 , 4.569305588 , -0.883667039 ), ( 59 , 4.247142876 , -0.969377501 ), ( 59 , 4.435221568 , -0.912528674 ), ( 59 , 4.64563156 , -0.745765422 ), ( 59 , 4.144969802 , -0.853683852 ), ( 59 , 4.23806107 , -0.717691082 ), ( 59 , 3.99756312 , -0.758957299 ), ( 59 , 4.359337993 , -0.64957116 ), ( 59 , 3.5907304 , -0.990788506 ), ( 59 , 3.329876118 , -0.980461592 ), ( 59 , 3.461809438 , -0.884880229 ), ( 59 , 3.707002729 , -0.898927677 ), ( 59 , 3.783858719 , -0.805204302 ), ( 59 , 3.753161783 , -0.751517632 ), ( 59 , 3.593927825 , -0.734217041 ), ( 59 , 3.577084401 , -0.699040828 ), ( 59 , 3.293015494 , -0.779716328 ), ( 59 , 3.478580459 , -0.767587218 ), ( 59 , 3.52091785 , -0.724268952 ), ( 59 , 3.452021236 , -0.737106221 ), ( 59 , 3.202868973 , -0.798032151 ), ( 59 , 3.368258265 , -0.692556434 ), ( 59 , 3.572245667 , -0.515943789 ), ( 59 , 3.955581421 , -0.539633439 ), ( 59 , 3.93619688 , -0.489754129 ), ( 59 , 4.166998952 , -0.338297843 ), ( 59 , 4.050286443 , -0.291761792 ), ( 59 , 3.665174172 , -0.436525181 ), ( 59 , 5.869484879 , -1.229271169 ), ( 59 , 5.715962104 , -1.129451401 ), ( 59 , 5.785126712 , -1.040852298 ), ( 59 , 5.298462905 , -0.915357859 ), ( 59 , 5.499332583 , -0.894732504 ), ( 59 , 6.140298184 , -1.02059215 ), ( 59 , 6.026317398 , -0.889245711 ), ( 59 , 5.920953049 , -0.708455671 ), ( 59 , 5.551153515 , -0.70285946 ), ( 59 , 5.612922845 , -0.660249459 ), ( 59 , 5.00441462 , -0.842980638 ), ( 59 , 5.239501426 , -0.787368507 ), ( 59 , 4.883602588 , -0.836181442 ), ( 59 , 4.842998643 , -0.824155434 ), ( 59 , 4.760795061 , -0.721857249 ), ( 59 , 5.12315911 , -0.698736605 ), ( 59 , 5.081104344 , -0.486354273 ), ( 59 , 5.598184196 , -0.395649484 ), ( 59 , 5.302871443 , -0.47183639 ), ( 59 , 5.437429863 , -0.375492988 ), ( 59 , 5.366448251 , -0.324347595 ), ( 59 , 5.135875707 , -0.318193718 ), ( 59 , 5.48765948 , -0.27980296 ), ( 59 , 5.515585649 , -0.101632438 ), ( 60 , 0.681251982 , 0.120375924 ), ( 60 , 0.767107795 , 0.319946254 ), ( 60 , 1.05076055 , 0.317541851 ), ( 60 , 0.817805407 , 0.312065702 ), ( 60 , 0.892017221 , 0.363088262 ), ( 60 , 1.003208543 , 0.388228454 ), ( 60 , 1.034385315 , 0.404488318 ), ( 60 , 0.580574571 , 0.266681389 ), ( 60 , 0.569977541 , 0.340341786 ), ( 60 , 0.505495311 , 0.411500744 ), ( 60 , 0.656856689 , 0.440428477 ), ( 60 , 0.55336163 , 0.448627553 ), ( 60 , 0.649292527 , 0.522413273 ), ( 60 , 1.149909581 , 0.366201551 ), ( 60 , 1.095122083 , 0.586198677 ), ( 60 , 1.425992797 , 0.600249453 ), ( 60 , 1.286547164 , 0.769000396 ), ( 60 , 0.862905651 , 0.685622125 ), ( 60 , 0.999790174 , 0.767302921 ), ( 60 , 1.019475361 , 0.849107475 ), ( 60 , 1.46863639 , 0.949958012 ), ( 60 , 1.511924064 , 0.979394428 ), ( 60 , 0.679132242 , 0.651220176 ), ( 60 , 0.684851448 , 0.676015529 ), ( 60 , 0.27446858 , 0.721607864 ), ( 60 , 0.081610341 , 0.764299263 ), ( 60 , 0.201503547 , 0.782980181 ), ( 60 , 0.077307565 , 0.897676441 ), ( 60 , 0.073959829 , 1.07395627 ), ( 60 , 0.01844661 , 1.087124792 ), ( 60 , 0.898658581 , 0.857315733 ), ( 60 , 0.854336146 , 0.99729189 ), ( 60 , 0.93221968 , 0.959492275 ), ( 60 , 0.602144234 , 1.010543192 ), ( 60 , 1.121969254 , 1.009849942 ), ( 60 , 0.971765142 , 1.046663584 ), ( 60 , 1.193430467 , 1.265851986 ), ( 60 , 0.517292682 , 1.076828262 ), ( 60 , 0.407659869 , 1.018003274 ), ( 60 , 0.719204659 , 1.183759248 ), ( 60 , 0.53613778 , 1.132742742 ), ( 60 , 0.280646871 , 1.074773944 ), ( 60 , 1.260317545 , 1.325408102 ), ( 60 , 0.836461528 , 1.421932191 ), ( 60 , 2.517823356 , 0.286895974 ), ( 60 , 2.219281825 , 0.248024188 ), ( 60 , 2.100961559 , 0.28719871 ), ( 60 , 2.196333359 , 0.319954229 ), ( 60 , 2.362312684 , 0.562908792 ), ( 60 , 2.340947337 , 0.701643375 ), ( 60 , 2.857835726 , 0.594013866 ), ( 60 , 2.616250965 , 0.517402245 ), ( 60 , 2.788684615 , 0.661648854 ), ( 60 , 2.920444049 , 0.633715411 ), ( 60 , 2.993014024 , 0.974780219 ), ( 60 , 1.950138709 , 0.353560039 ), ( 60 , 1.902201174 , 0.48690161 ), ( 60 , 2.00819097 , 0.66923724 ), ( 60 , 1.787598313 , 0.569089375 ), ( 60 , 1.739474218 , 0.687486865 ), ( 60 , 1.592851653 , 0.750153317 ), ( 60 , 1.583060244 , 0.87101316 ), ( 60 , 1.997948446 , 0.85126076 ), ( 60 , 2.342352066 , 0.796417058 ), ( 60 , 2.432641123 , 0.817116267 ), ( 60 , 2.183569786 , 1.007812114 ), ( 60 , 2.979511562 , 1.12278345 ), ( 60 , 2.540509149 , 1.208414322 ), ( 60 , 2.800389893 , 1.194561497 ), ( 60 , 2.425432464 , 1.273146653 ), ( 60 , 1.747437405 , 1.361282521 ), ( 60 , 3.769974257 , 0.14388273 ), ( 60 , 3.842814033 , 0.236216619 ), ( 60 , 4.086205921 , 0.28133046 ), ( 60 , 4.256313653 , 0.328252816 ), ( 60 , 3.735310808 , 0.330069462 ), ( 60 , 3.807167681 , 0.388516092 ), ( 60 , 3.884526537 , 0.417344225 ), ( 60 , 4.028257128 , 0.528609857 ), ( 60 , 3.795336978 , 0.554861778 ), ( 60 , 4.325028597 , 0.38738465 ), ( 60 , 4.370355462 , 0.469782759 ), ( 60 , 4.409788751 , 0.520221936 ), ( 60 , 4.595096035 , 0.71982656 ), ( 60 , 4.203289592 , 0.639343492 ), ( 60 , 4.095283491 , 0.880048194 ), ( 60 , 3.564764709 , 0.42958273 ), ( 60 , 3.635378981 , 0.500007719 ), ( 60 , 3.856043394 , 0.706149603 ), ( 60 , 3.831895758 , 0.761702577 ), ( 60 , 3.447248264 , 0.671939356 ), ( 60 , 3.594994908 , 0.908694776 ), ( 60 , 3.353919709 , 1.052780668 ), ( 60 , 3.322946743 , 1.094546909 ), ( 60 , 3.943479701 , 0.831726442 ), ( 60 , 4.134828004 , 0.966504954 ), ( 60 , 4.155082331 , 0.974366518 ), ( 60 , 3.816417241 , 0.861646369 ), ( 60 , 3.807068765 , 0.966876176 ), ( 60 , 4.025695849 , 1.082921658 ), ( 60 , 4.292568367 , 1.076810699 ), ( 60 , 4.025773277 , 1.10550565 ), ( 60 , 4.061914435 , 1.120662481 ), ( 60 , 4.252303974 , 1.280986674 ), ( 60 , 3.207651352 , 1.225217909 ), ( 60 , 3.164587362 , 1.342247067 ), ( 60 , 4.536205016 , 1.398644119 ), ( 60 , 5.368196017 , 0.190170352 ), ( 60 , 5.404993197 , 0.232392809 ), ( 60 , 5.683444912 , 0.188918894 ), ( 60 , 5.690413827 , 0.501640944 ), ( 60 , 5.323267452 , 0.236458145 ), ( 60 , 5.406935689 , 0.380788089 ), ( 60 , 5.886870094 , 0.467105409 ), ( 60 , 5.782231321 , 0.465547363 ), ( 60 , 5.879323087 , 0.694815316 ), ( 60 , 6.101620081 , 0.729086848 ), ( 60 , 5.999775268 , 0.647113472 ), ( 60 , 6.011258497 , 0.686066874 ), ( 60 , 6.06696479 , 0.759969302 ), ( 60 , 6.228865637 , 0.817381688 ), ( 60 , 5.709364774 , 0.674545045 ), ( 60 , 5.582303551 , 0.667369664 ), ( 60 , 6.263828597 , 1.002031372 ), ( 60 , 5.160692072 , 0.565953334 ), ( 60 , 5.165553863 , 0.596252511 ), ( 60 , 5.130418075 , 0.644803706 ), ( 60 , 5.364007263 , 0.636254747 ), ( 60 , 5.408580845 , 0.708244559 ), ( 60 , 5.408581095 , 0.708248939 ), ( 60 , 5.213318479 , 0.645697391 ), ( 60 , 5.305847405 , 0.795506136 ), ( 60 , 5.233111332 , 0.798879288 ), ( 60 , 5.23274233 , 0.908543517 ), ( 60 , 4.921637659 , 0.554260867 ), ( 60 , 4.937573962 , 0.637727354 ), ( 60 , 4.86608766 , 0.601406967 ), ( 60 , 4.914047786 , 0.723296032 ), ( 60 , 4.769461562 , 0.676726006 ), ( 60 , 4.951426336 , 0.852741073 ), ( 60 , 5.14299695 , 0.959493349 ), ( 60 , 5.630169505 , 0.924293363 ), ( 60 , 5.316325595 , 0.96685792 ), ( 60 , 5.859985667 , 1.089424837 ), ( 60 , 5.839057113 , 1.096144699 ), ( 60 , 5.813579764 , 1.104635075 ), ( 60 , 5.693646992 , 1.090142414 ), ( 60 , 6.192298577 , 1.314110371 ), ( 60 , 5.328457012 , 1.11666545 ), ( 60 , 5.525642785 , 1.246706052 ), ( 60 , 5.921993423 , 1.315487184 ), ( 60 , 6.262577474 , -0.557134329 ), ( 60 , 0.033962894 , -0.392852724 ), ( 60 , 0.208223334 , -0.31522558 ), ( 60 , 0.018898684 , -0.288493496 ), ( 60 , 6.227613129 , -0.207899862 ), ( 60 , 6.251960999 , -0.157026001 ), ( 60 , 0.368012367 , -0.120683269 ), ( 60 , 0.524292895 , 0.054022006 ), ( 60 , 0.131072354 , -0.0690699 ), ( 60 , 0.110841779 , 0.033852472 ), ( 60 , 0.483736515 , 0.192739977 ), ( 60 , 0.41851659 , 0.304280449 ), ( 60 , 5.866280402 , -0.23613035 ), ( 60 , 5.833215509 , -0.157779952 ), ( 60 , 5.834235121 , -0.094021502 ), ( 60 , 6.000369564 , -0.087055907 ), ( 60 , 6.170407464 , -0.021775731 ), ( 60 , 6.260391063 , 0.001906154 ), ( 60 , 5.734167637 , -0.074644668 ), ( 60 , 5.651783673 , -0.069522385 ), ( 60 , 5.805936103 , 0.202879849 ), ( 60 , 6.195568928 , 0.168899423 ), ( 60 , 6.054031518 , 0.368856235 ), ( 60 , 6.238062406 , 0.503397734 ), ( 60 , 1.744067226 , -0.531833624 ), ( 60 , 1.462842926 , -0.577336066 ), ( 60 , 1.576110574 , -0.443626027 ), ( 60 , 1.74360068 , -0.413568004 ), ( 60 , 1.87429154 , -0.28334552 ), ( 60 , 1.695692682 , -0.304838259 ), ( 60 , 1.790544303 , -0.298181986 ), ( 60 , 1.739177689 , -0.294501933 ), ( 60 , 1.7042326 , -0.229478781 ), ( 60 , 1.393622042 , -0.477678172 ), ( 60 , 1.331992689 , -0.456452833 ), ( 60 , 1.321003305 , -0.397846768 ), ( 60 , 1.24385185 , -0.371467166 ), ( 60 , 1.299156356 , -0.248395139 ), ( 60 , 1.337851141 , -0.229031146 ), ( 60 , 1.677012044 , -0.226228095 ), ( 60 , 1.638146888 , -0.157704215 ), ( 60 , 1.594581393 , -0.178763775 ), ( 60 , 1.536451489 , -0.157807056 ), ( 60 , 1.638406847 , -0.085782137 ), ( 60 , 1.954161459 , -0.201705538 ), ( 60 , 1.960739197 , -0.180234806 ), ( 60 , 1.88984191 , -0.19637206 ), ( 60 , 1.961001669 , -0.131782605 ), ( 60 , 2.206059614 , 0.036689208 ), ( 60 , 1.681111662 , -0.016535236 ), ( 60 , 1.78486489 , 0.017489027 ), ( 60 , 1.73398742 , 0.107082736 ), ( 60 , 2.007637082 , 0.091299046 ), ( 60 , 1.884327433 , 0.098692563 ), ( 60 , 1.91897114 , 0.12466081 ), ( 60 , 2.143597898 , 0.171410922 ), ( 60 , 1.863607621 , 0.085704825 ), ( 60 , 1.866738764 , 0.130393302 ), ( 60 , 1.857255449 , 0.160320923 ), ( 60 , 1.846986048 , 0.159495063 ), ( 60 , 1.437252139 , -0.060151996 ), ( 60 , 1.358397816 , -0.043472158 ), ( 60 , 1.488301667 , 0.005898355 ), ( 60 , 1.421499437 , 0.009079924 ), ( 60 , 1.137461797 , 0.106997263 ), ( 60 , 1.162178757 , 0.149927554 ), ( 60 , 1.171084962 , 0.257276356 ), ( 60 , 1.563848101 , 0.03206262 ), ( 60 , 1.639167826 , 0.105872548 ), ( 60 , 1.706755049 , 0.196373274 ), ( 60 , 1.471844384 , 0.156239355 ), ( 60 , 1.527360221 , 0.172284839 ), ( 60 , 1.513496917 , 0.16618824 ), ( 60 , 1.620822172 , 0.238035672 ), ( 60 , 1.74443429 , 0.226590444 ), ( 60 , 1.842595263 , 0.267660938 ), ( 60 , 1.790816524 , 0.234103354 ), ( 60 , 1.833746145 , 0.280630961 ), ( 60 , 1.855747812 , 0.395097002 ), ( 60 , 1.68227397 , 0.407133972 ), ( 60 , 1.743373734 , 0.493283441 ), ( 60 , 1.441797336 , 0.268085613 ), ( 60 , 1.431289086 , 0.300874043 ), ( 60 , 1.520064605 , 0.364238543 ), ( 60 , 1.299445163 , 0.417979552 ), ( 60 , 1.624618702 , 0.570606744 ), ( 60 , 1.480497909 , 0.509900885 ), ( 60 , 1.486140408 , 0.547302899 ), ( 60 , 3.105346958 , -0.538204406 ), ( 60 , 3.321652608 , -0.227152215 ), ( 60 , 3.321634367 , -0.227134399 ), ( 60 , 3.378551874 , -0.203304622 ), ( 60 , 3.517655006 , -0.020812113 ), ( 60 , 3.724906019 , -0.01477303 ), ( 60 , 3.795403241 , 0.014468535 ), ( 60 , 3.649761949 , 0.018337692 ), ( 60 , 3.309018575 , 0.032367826 ), ( 60 , 3.671044876 , 0.155245836 ), ( 60 , 3.443568805 , 0.174925021 ), ( 60 , 3.458139461 , 0.201688267 ), ( 60 , 2.787462244 , -0.217181776 ), ( 60 , 2.861068097 , 0.012861616 ), ( 60 , 2.941018756 , 0.140672702 ), ( 60 , 2.583949658 , 0.042844139 ), ( 60 , 2.673864785 , 0.080540569 ), ( 60 , 2.862443963 , 0.107954233 ), ( 60 , 2.738639953 , 0.170385251 ), ( 60 , 3.092034766 , 0.249307541 ), ( 60 , 3.009368698 , 0.269006234 ), ( 60 , 3.188576415 , 0.47615098 ), ( 60 , 4.707713786 , -0.643298312 ), ( 60 , 4.760047791 , -0.589922569 ), ( 60 , 4.685828993 , -0.606549863 ), ( 60 , 4.78920091 , -0.595285325 ), ( 60 , 4.833797308 , -0.520400451 ), ( 60 , 4.571129459 , -0.51879538 ), ( 60 , 4.589079187 , -0.458495817 ), ( 60 , 4.877789739 , -0.373469005 ), ( 60 , 4.88206899 , -0.367443089 ), ( 60 , 4.805689957 , -0.329170007 ), ( 60 , 4.842328482 , -0.254501883 ), ( 60 , 4.614665054 , -0.271765646 ), ( 60 , 4.421876444 , -0.356321228 ), ( 60 , 4.617085403 , -0.190700443 ), ( 60 , 4.739691469 , -0.082928782 ), ( 60 , 5.084849136 , -0.242542503 ), ( 60 , 5.235043611 , -0.17383536 ), ( 60 , 5.210410481 , -0.149650528 ), ( 60 , 4.934810781 , -0.170590346 ), ( 60 , 4.851797723 , -0.017505683 ), ( 60 , 5.107498188 , 0.060116577 ), ( 60 , 5.06095612 , 0.201325826 ), ( 60 , 4.347485024 , -0.040609175 ), ( 60 , 4.38729738 , 0.017806042 ), ( 60 , 3.934912818 , -0.002450545 ), ( 60 , 4.119104137 , 0.043881356 ), ( 60 , 4.192503643 , 0.07728082 ), ( 60 , 4.225737114 , 0.148951091 ), ( 60 , 4.810951642 , 0.209959387 ), ( 60 , 4.555136507 , 0.154505731 ), ( 60 , 4.968874166 , 0.242711129 ), ( 60 , 5.029221385 , 0.376198937 ), ( 60 , 4.529489656 , 0.302252751 ), ( 60 , 4.46068325 , 0.445168988 ), ( 60 , 4.73781605 , 0.562528981 ), ( 60 , 4.763668776 , 0.583762913 ), ( 60 , 0.058165487 , -1.483422601 ), ( 60 , 0.42740396 , -1.448172238 ), ( 60 , 1.464347706 , -1.37568057 ), ( 60 , 1.193624877 , -1.096482281 ), ( 60 , 1.168351422 , -1.09120023 ), ( 60 , 1.124304388 , -1.104010949 ), ( 60 , 0.234029581 , -1.09731179 ), ( 60 , 0.44418731 , -1.06097884 ), ( 60 , 0.721951769 , -1.111855267 ), ( 60 , 0.623572272 , -0.891717812 ), ( 60 , 1.40659934 , -0.97972734 ), ( 60 , 1.547605683 , -0.86615306 ), ( 60 , 1.411104668 , -0.692518261 ), ( 60 , 1.372182835 , -0.627915368 ), ( 60 , 1.453538598 , -0.613301038 ), ( 60 , 1.401852827 , -0.599433253 ), ( 60 , 0.918996789 , -0.826849546 ), ( 60 , 0.905649845 , -0.62275589 ), ( 60 , 0.176610389 , -1.037624709 ), ( 60 , 0.435503236 , -0.980756601 ), ( 60 , 0.483915113 , -0.87626285 ), ( 60 , 0.199698129 , -0.829929111 ), ( 60 , 0.196120429 , -0.74485809 ), ( 60 , 0.317476894 , -0.660723842 ), ( 60 , 0.186378717 , -0.671315151 ), ( 60 , 0.400207261 , -0.528546888 ), ( 60 , 0.757365326 , -0.670847967 ), ( 60 , 0.864147977 , -0.502606389 ), ( 60 , 0.690775778 , -0.526994866 ), ( 60 , 0.681349719 , -0.524384551 ), ( 60 , 0.954674104 , -0.487695095 ), ( 60 , 0.9076398 , -0.196993795 ), ( 60 , 0.67505874 , -0.137180948 ), ( 60 , 0.790502941 , -0.133753367 ), ( 60 , 2.294737171 , -1.387603272 ), ( 60 , 2.737618205 , -1.146760122 ), ( 60 , 2.727017454 , -1.022348543 ), ( 60 , 2.626725779 , -1.054542963 ), ( 60 , 2.579608511 , -1.037180692 ), ( 60 , 2.674796822 , -1.04576753 ), ( 60 , 1.885099433 , -1.102874821 ), ( 60 , 2.078296843 , -1.056384199 ), ( 60 , 2.325921105 , -0.988715614 ), ( 60 , 2.384846849 , -0.973934837 ), ( 60 , 2.535268229 , -0.999372001 ), ( 60 , 2.437813388 , -0.899902594 ), ( 60 , 3.119774611 , -1.104430138 ), ( 60 , 2.897259568 , -1.011511304 ), ( 60 , 2.939377761 , -0.929066053 ), ( 60 , 2.684650969 , -0.959480584 ), ( 60 , 2.867266691 , -0.886015119 ), ( 60 , 2.757373233 , -0.786614209 ), ( 60 , 2.937583447 , -0.774441182 ), ( 60 , 2.986115346 , -0.744716231 ), ( 60 , 2.858043093 , -0.737420967 ), ( 60 , 2.605697555 , -0.918719493 ), ( 60 , 2.608000079 , -0.84498518 ), ( 60 , 2.577403126 , -0.81914758 ), ( 60 , 2.453931874 , -0.803676597 ), ( 60 , 1.706830662 , -1.080000278 ), ( 60 , 2.002784841 , -0.929794339 ), ( 60 , 2.095457274 , -0.854883387 ), ( 60 , 2.096500067 , -0.852972964 ), ( 60 , 2.030255752 , -0.763626662 ), ( 60 , 2.155386068 , -0.63426529 ), ( 60 , 2.101487049 , -0.65072317 ), ( 60 , 2.15643877 , -0.619415028 ), ( 60 , 1.643195175 , -0.68529514 ), ( 60 , 1.750722234 , -0.704236346 ), ( 60 , 1.796404673 , -0.632344807 ), ( 60 , 1.707011062 , -0.615381974 ), ( 60 , 1.768783176 , -0.554942297 ), ( 60 , 2.006982421 , -0.655885231 ), ( 60 , 1.98347266 , -0.471444465 ), ( 60 , 1.982337589 , -0.409715651 ), ( 60 , 2.493789212 , -0.556269116 ), ( 60 , 2.47290371 , -0.502440567 ), ( 60 , 2.249194316 , -0.468505 ), ( 60 , 2.194019104 , -0.459862654 ), ( 60 , 2.114859671 , -0.344320917 ), ( 60 , 2.189984286 , -0.306941276 ), ( 60 , 2.207519446 , -0.260567009 ), ( 60 , 2.335284039 , -0.318368041 ), ( 60 , 2.396304242 , -0.215682525 ), ( 60 , 4.454861205 , -1.50734135 ), ( 60 , 3.897443327 , -1.277404429 ), ( 60 , 3.98181595 , -1.270088568 ), ( 60 , 4.378027113 , -1.176920567 ), ( 60 , 4.430570555 , -1.104265611 ), ( 60 , 4.263345297 , -1.185809328 ), ( 60 , 4.047201991 , -1.12628963 ), ( 60 , 4.169316003 , -1.050306677 ), ( 60 , 3.503201025 , -1.259199382 ), ( 60 , 3.416865652 , -1.247487318 ), ( 60 , 3.455141803 , -1.22071828 ), ( 60 , 3.629372401 , -1.211280729 ), ( 60 , 3.90390512 , -1.151763056 ), ( 60 , 3.642577295 , -1.180753786 ), ( 60 , 3.23846005 , -1.192193664 ), ( 60 , 3.862336019 , -0.970432589 ), ( 60 , 3.811515545 , -0.959907486 ), ( 60 , 3.996344111 , -0.839045353 ), ( 60 , 3.959425726 , -0.856756859 ), ( 60 , 3.911863356 , -0.835652371 ), ( 60 , 4.675698634 , -1.050062774 ), ( 60 , 4.551465741 , -0.986556531 ), ( 60 , 4.572587165 , -0.912766084 ), ( 60 , 4.277897382 , -0.962371158 ), ( 60 , 4.617008926 , -0.74840568 ), ( 60 , 4.42636876 , -0.741397421 ), ( 60 , 4.37987241 , -0.66595944 ), ( 60 , 4.467398201 , -0.665892223 ), ( 60 , 4.478236611 , -0.649747056 ), ( 60 , 4.507208183 , -0.566155916 ), ( 60 , 4.208900961 , -0.66084706 ), ( 60 , 4.083579071 , -0.784664605 ), ( 60 , 4.177249448 , -0.631555362 ), ( 60 , 4.312017705 , -0.648915061 ), ( 60 , 4.37098353 , -0.578509523 ), ( 60 , 4.488951596 , -0.530653235 ), ( 60 , 4.385149846 , -0.497587449 ), ( 60 , 4.296412319 , -0.518453757 ), ( 60 , 4.253760826 , -0.444659583 ), ( 60 , 3.265155953 , -1.122963457 ), ( 60 , 3.261203592 , -1.113329128 ), ( 60 , 3.280923324 , -1.108385298 ), ( 60 , 3.195549567 , -1.09869831 ), ( 60 , 3.376405055 , -1.053764326 ), ( 60 , 3.610489355 , -0.877013892 ), ( 60 , 3.57789211 , -0.871789643 ), ( 60 , 3.27207179 , -0.986545 ), ( 60 , 3.328463579 , -0.976460255 ), ( 60 , 3.451267669 , -0.917467632 ), ( 60 , 3.49484159 , -0.818207989 ), ( 60 , 3.763998761 , -0.843341206 ), ( 60 , 3.638809389 , -0.822542145 ), ( 60 , 3.680273397 , -0.722975778 ), ( 60 , 3.749823908 , -0.645827507 ), ( 60 , 3.381429343 , -0.770624507 ), ( 60 , 3.629567092 , -0.575868565 ), ( 60 , 3.984267971 , -0.629917133 ), ( 60 , 3.971974669 , -0.459592238 ), ( 60 , 3.880354367 , -0.423267976 ), ( 60 , 3.866399628 , -0.404103929 ), ( 60 , 3.916071416 , -0.373979543 ), ( 60 , 4.091923394 , -0.403908701 ), ( 60 , 4.060831441 , -0.28989002 ), ( 60 , 3.748111365 , -0.450519994 ), ( 60 , 3.902467754 , -0.2076664 ), ( 60 , 4.031141416 , -0.215892955 ), ( 60 , 5.897513005 , -1.500404166 ), ( 60 , 5.381267549 , -1.413105812 ), ( 60 , 6.27246532 , -1.434136516 ), ( 60 , 6.216374651 , -1.37516917 ), ( 60 , 6.16680845 , -1.350628744 ), ( 60 , 5.772967035 , -1.328526512 ), ( 60 , 5.69623806 , -1.239339654 ), ( 60 , 5.738605586 , -1.08013213 ), ( 60 , 5.761355248 , -0.975352598 ), ( 60 , 4.767188079 , -1.285857401 ), ( 60 , 4.989430485 , -1.200011971 ), ( 60 , 5.237661799 , -1.168510868 ), ( 60 , 4.902730788 , -1.126640682 ), ( 60 , 5.535069805 , -1.115758221 ), ( 60 , 6.214252429 , -1.124065564 ), ( 60 , 6.271563234 , -1.098796617 ), ( 60 , 6.127074598 , -0.905676297 ), ( 60 , 6.064773738 , -0.748072066 ), ( 60 , 6.038814948 , -0.72393644 ), ( 60 , 6.086753136 , -0.717437942 ), ( 60 , 5.638472265 , -0.592445944 ), ( 60 , 5.889479749 , -0.473111835 ), ( 60 , 5.203828266 , -0.959425055 ), ( 60 , 5.095496134 , -0.948153672 ), ( 60 , 4.843063941 , -1.003971144 ), ( 60 , 5.361560535 , -0.621267632 ), ( 60 , 4.786632584 , -0.891310547 ), ( 60 , 4.928193188 , -0.799530166 ), ( 60 , 4.851740487 , -0.759348112 ), ( 60 , 5.524056461 , -0.525790739 ), ( 60 , 5.416620079 , -0.55150145 ), ( 60 , 5.616670891 , -0.369947386 ), ( 60 , 5.689840453 , -0.257423917 ), ( 60 , 5.685729116 , -0.251319952 ), ( 60 , 5.412876994 , -0.281410857 ), ( 60 , 5.29025298 , -0.22024059 ), ( 60 , 5.475077035 , -0.312815658 ), ( 60 , 5.492096322 , -0.252780473 ), ( 61 , 0.721477166 , 0.082228541 ), ( 61 , 0.768954188 , 0.146275017 ), ( 61 , 0.683224288 , 0.134912937 ), ( 61 , 1.017403113 , 0.302411126 ), ( 61 , 1.156084865 , 0.332341548 ), ( 61 , 1.070509887 , 0.384112024 ), ( 61 , 0.979438873 , 0.365273584 ), ( 61 , 1.002369069 , 0.413844368 ), ( 61 , 0.963300139 , 0.442081086 ), ( 61 , 0.667159849 , 0.262408095 ), ( 61 , 0.735377112 , 0.319108411 ), ( 61 , 0.521848793 , 0.367539581 ), ( 61 , 0.87235534 , 0.47247151 ), ( 61 , 0.786265653 , 0.665521397 ), ( 61 , 1.206409821 , 0.407368547 ), ( 61 , 1.277522923 , 0.486898928 ), ( 61 , 1.180891349 , 0.566492636 ), ( 61 , 1.229785785 , 0.668103293 ), ( 61 , 1.388913139 , 0.589348171 ), ( 61 , 1.380129269 , 0.598868198 ), ( 61 , 1.310328972 , 0.687567006 ), ( 61 , 1.240132636 , 0.711854745 ), ( 61 , 1.568015911 , 0.87134726 ), ( 61 , 0.838456055 , 0.739596837 ), ( 61 , 1.537144298 , 1.029114974 ), ( 61 , 1.393927414 , 1.014337135 ), ( 61 , 1.315985725 , 1.065990474 ), ( 61 , 1.471536098 , 1.119702649 ), ( 61 , 0.51369175 , 0.485270651 ), ( 61 , 0.306847255 , 0.444307942 ), ( 61 , 0.667046675 , 0.602877334 ), ( 61 , 0.571071406 , 0.681366789 ), ( 61 , 0.613886808 , 0.825728188 ), ( 61 , 0.137134844 , 0.586108829 ), ( 61 , 0.262060269 , 0.78039053 ), ( 61 , 0.219505687 , 0.785438171 ), ( 61 , 0.376622834 , 0.758473447 ), ( 61 , 0.420854223 , 0.850370749 ), ( 61 , 0.484128252 , 0.906395197 ), ( 61 , 0.277580129 , 1.065956493 ), ( 61 , 0.011353551 , 1.153644526 ), ( 61 , 0.880881799 , 0.856441212 ), ( 61 , 0.74915829 , 0.817543108 ), ( 61 , 0.99281831 , 0.976017858 ), ( 61 , 0.711198645 , 0.934203003 ), ( 61 , 1.073611472 , 1.198691997 ), ( 61 , 1.329337225 , 1.292710377 ), ( 61 , 0.687677555 , 1.147471514 ), ( 61 , 0.183505156 , 1.154492323 ), ( 61 , 0.137103488 , 1.16098585 ), ( 61 , 0.21015936 , 1.268410603 ), ( 61 , 0.750401806 , 1.202330188 ), ( 61 , 0.732151052 , 1.42153554 ), ( 61 , 0.564681353 , 1.418882687 ), ( 61 , 2.409484895 , 0.06749094 ), ( 61 , 2.368178974 , 0.127379006 ), ( 61 , 2.250802706 , 0.115528393 ), ( 61 , 2.243718791 , 0.147517359 ), ( 61 , 2.081261961 , 0.275587184 ), ( 61 , 2.183194874 , 0.362110526 ), ( 61 , 2.219239142 , 0.421402354 ), ( 61 , 2.098460532 , 0.443189491 ), ( 61 , 2.394524248 , 0.464720779 ), ( 61 , 2.364101408 , 0.486982443 ), ( 61 , 2.331091695 , 0.53370352 ), ( 61 , 2.394787072 , 0.591342376 ), ( 61 , 2.329696424 , 0.62025825 ), ( 61 , 2.690128708 , 0.410210588 ), ( 61 , 2.690826776 , 0.442802789 ), ( 61 , 2.835702346 , 0.488241217 ), ( 61 , 2.899507314 , 0.667437781 ), ( 61 , 3.01294867 , 0.753525117 ), ( 61 , 2.921851805 , 0.754116341 ), ( 61 , 2.537646737 , 0.545899595 ), ( 61 , 2.490234258 , 0.587397182 ), ( 61 , 2.666916503 , 0.652782718 ), ( 61 , 2.737833266 , 0.726066123 ), ( 61 , 2.438401772 , 0.642301919 ), ( 61 , 2.95263406 , 0.863522039 ), ( 61 , 3.124026191 , 0.987830915 ), ( 61 , 1.896741999 , 0.434314044 ), ( 61 , 2.055294007 , 0.58003743 ), ( 61 , 1.847922517 , 0.511928332 ), ( 61 , 2.231107787 , 0.650392315 ), ( 61 , 2.238004019 , 0.66348992 ), ( 61 , 1.819540592 , 0.587845233 ), ( 61 , 1.819202033 , 0.8151527 ), ( 61 , 1.701910965 , 0.814817651 ), ( 61 , 1.941468102 , 0.905599372 ), ( 61 , 2.055532343 , 0.944740013 ), ( 61 , 1.70511473 , 1.015088411 ), ( 61 , 1.667046943 , 1.036238592 ), ( 61 , 2.154762505 , 0.9852733 ), ( 61 , 2.750812927 , 1.121502054 ), ( 61 , 2.921929282 , 1.173036216 ), ( 61 , 2.851343584 , 1.219172062 ), ( 61 , 2.101838504 , 1.052855999 ), ( 61 , 2.307410549 , 1.164271456 ), ( 61 , 2.224270431 , 1.174563158 ), ( 61 , 1.694022662 , 1.231074937 ), ( 61 , 1.747676525 , 1.252253896 ), ( 61 , 2.610890644 , 1.271983545 ), ( 61 , 4.122037345 , 0.301318059 ), ( 61 , 4.238877125 , 0.290871769 ), ( 61 , 4.227085607 , 0.300291203 ), ( 61 , 4.239549965 , 0.41006019 ), ( 61 , 3.959020735 , 0.321864537 ), ( 61 , 3.74143879 , 0.266397177 ), ( 61 , 3.964483089 , 0.438228253 ), ( 61 , 3.806282848 , 0.465604397 ), ( 61 , 4.380161268 , 0.594096118 ), ( 61 , 4.467566801 , 0.607203222 ), ( 61 , 4.395302772 , 0.737204992 ), ( 61 , 4.240246973 , 0.739578558 ), ( 61 , 4.184750629 , 0.870581771 ), ( 61 , 4.346682317 , 0.81355641 ), ( 61 , 3.607252999 , 0.448581506 ), ( 61 , 3.626593226 , 0.605001298 ), ( 61 , 3.483952439 , 0.595128448 ), ( 61 , 3.486599863 , 0.613101159 ), ( 61 , 3.678260909 , 0.889625206 ), ( 61 , 3.337842601 , 0.685563263 ), ( 61 , 3.381319166 , 0.823737251 ), ( 61 , 3.245354733 , 0.742512516 ), ( 61 , 3.518051092 , 0.803338806 ), ( 61 , 3.387199964 , 0.94421457 ), ( 61 , 3.217929532 , 0.928358347 ), ( 61 , 3.250905908 , 0.990958554 ), ( 61 , 4.090754178 , 0.951354184 ), ( 61 , 4.612688209 , 1.264593996 ), ( 61 , 3.411120716 , 1.110210807 ), ( 61 , 3.51743381 , 1.263468343 ), ( 61 , 4.376902238 , 1.352898894 ), ( 61 , 3.589464399 , 1.362487083 ), ( 61 , 5.521538553 , 0.103972866 ), ( 61 , 5.498082644 , 0.131186114 ), ( 61 , 5.589773175 , 0.128358174 ), ( 61 , 5.543697863 , 0.175388769 ), ( 61 , 5.633752842 , 0.21183705 ), ( 61 , 5.452543658 , 0.218965539 ), ( 61 , 5.692080708 , 0.257805266 ), ( 61 , 5.613182738 , 0.338170762 ), ( 61 , 5.624311592 , 0.387104929 ), ( 61 , 5.324813125 , 0.310541286 ), ( 61 , 5.404339237 , 0.413301998 ), ( 61 , 5.59101425 , 0.569197994 ), ( 61 , 5.413161743 , 0.520210358 ), ( 61 , 5.556431985 , 0.639371138 ), ( 61 , 5.819134398 , 0.499303774 ), ( 61 , 6.108108191 , 0.734401625 ), ( 61 , 5.969821872 , 0.653036819 ), ( 61 , 5.995730762 , 0.704713706 ), ( 61 , 5.720680298 , 0.690045259 ), ( 61 , 5.679171777 , 0.712179573 ), ( 61 , 5.573651011 , 0.744969016 ), ( 61 , 5.655059092 , 0.791936013 ), ( 61 , 5.972511719 , 0.949718819 ), ( 61 , 5.859960451 , 0.999805678 ), ( 61 , 5.100513795 , 0.432297094 ), ( 61 , 5.111025227 , 0.464560323 ), ( 61 , 5.162509695 , 0.535430733 ), ( 61 , 5.147624637 , 0.593045182 ), ( 61 , 5.491313469 , 0.731989816 ), ( 61 , 5.165093748 , 0.72907964 ), ( 61 , 5.255537347 , 0.841766423 ), ( 61 , 4.878667128 , 0.692343901 ), ( 61 , 4.905852657 , 0.692392098 ), ( 61 , 4.968849884 , 0.709985616 ), ( 61 , 5.078656131 , 0.757262986 ), ( 61 , 5.047736621 , 0.820324552 ), ( 61 , 5.156616394 , 0.881809394 ), ( 61 , 5.648137974 , 0.902308368 ), ( 61 , 5.57212068 , 0.942442296 ), ( 61 , 5.623798971 , 0.967240429 ), ( 61 , 5.507170489 , 0.989071469 ), ( 61 , 5.481572037 , 0.992874978 ), ( 61 , 5.411824994 , 1.05603863 ), ( 61 , 5.831341969 , 0.998682162 ), ( 61 , 5.819921919 , 1.102389845 ), ( 61 , 5.90381625 , 1.220226761 ), ( 61 , 6.174034499 , 1.250389474 ), ( 61 , 5.208031227 , 1.042119406 ), ( 61 , 5.294729046 , 1.058384384 ), ( 61 , 5.22935005 , 1.108876525 ), ( 61 , 5.312587013 , 1.166853061 ), ( 61 , 4.87044008 , 1.143004039 ), ( 61 , 5.068758967 , 1.389327656 ), ( 61 , 5.556077334 , 1.417748309 ), ( 61 , 0.214828102 , -0.421271124 ), ( 61 , 0.157568824 , -0.398680208 ), ( 61 , 6.063904028 , -0.490237735 ), ( 61 , 0.046766628 , -0.219565365 ), ( 61 , 6.250447716 , -0.248730832 ), ( 61 , 6.200938847 , -0.203865427 ), ( 61 , 0.045010134 , -0.091608701 ), ( 61 , 0.573208264 , -0.175464005 ), ( 61 , 0.243065265 , -0.128237346 ), ( 61 , 0.657779533 , 0.004457456 ), ( 61 , 0.47313012 , 0.064325561 ), ( 61 , 0.177612325 , -0.075955673 ), ( 61 , 0.155121376 , -0.008832123 ), ( 61 , 0.521118268 , 0.214581335 ), ( 61 , 0.392187465 , 0.320366557 ), ( 61 , 5.875542284 , -0.292202778 ), ( 61 , 5.813821357 , -0.247737195 ), ( 61 , 5.908156492 , -0.027480566 ), ( 61 , 6.02450631 , 0.05255574 ), ( 61 , 0.065377771 , 0.15395181 ), ( 61 , 6.24545952 , 0.162540926 ), ( 61 , 0.171695261 , 0.370845971 ), ( 61 , 0.244235085 , 0.474894684 ), ( 61 , 0.181531047 , 0.429855757 ), ( 61 , 6.080035744 , 0.193120162 ), ( 61 , 5.929211275 , 0.340716175 ), ( 61 , 0.090572007 , 0.574406477 ), ( 61 , 6.238167317 , 0.635735307 ), ( 61 , 1.514405093 , -0.499842082 ), ( 61 , 1.619786073 , -0.462198893 ), ( 61 , 1.601157929 , -0.380696834 ), ( 61 , 1.831086609 , -0.377041077 ), ( 61 , 1.636857489 , -0.353812602 ), ( 61 , 1.490911418 , -0.291920068 ), ( 61 , 1.391256475 , -0.316421704 ), ( 61 , 1.341372431 , -0.218026803 ), ( 61 , 1.471080321 , -0.205524302 ), ( 61 , 1.516027615 , -0.183836755 ), ( 61 , 1.410699206 , -0.146880168 ), ( 61 , 1.496177727 , -0.11861064 ), ( 61 , 1.445779475 , -0.117083321 ), ( 61 , 1.618880358 , -0.117884392 ), ( 61 , 1.621970779 , -0.081428096 ), ( 61 , 1.631461317 , -0.065296672 ), ( 61 , 1.551177164 , -0.080576303 ), ( 61 , 1.474322026 , -0.08402058 ), ( 61 , 1.520984841 , -0.071492827 ), ( 61 , 2.031062709 , -0.256400653 ), ( 61 , 1.978198313 , -0.250250601 ), ( 61 , 2.009714052 , -0.142865804 ), ( 61 , 1.972629861 , -0.155028726 ), ( 61 , 2.201767581 , -0.082333997 ), ( 61 , 2.241544859 , 0.083024578 ), ( 61 , 1.686747 , -0.080239951 ), ( 61 , 1.80947306 , -0.030656592 ), ( 61 , 1.711814629 , 0.08475332 ), ( 61 , 1.992185846 , 0.102317554 ), ( 61 , 1.917125414 , 0.047832697 ), ( 61 , 1.900915777 , 0.139238239 ), ( 61 , 2.01525777 , 0.235275492 ), ( 61 , 1.364859478 , -0.105721641 ), ( 61 , 1.463336218 , -0.077218989 ), ( 61 , 1.321029779 , -0.073480163 ), ( 61 , 1.481431352 , -0.062215559 ), ( 61 , 1.486242481 , -0.049309425 ), ( 61 , 1.457633209 , -0.018077149 ), ( 61 , 1.512239326 , 0.02037172 ), ( 61 , 0.953331482 , -0.129019934 ), ( 61 , 1.042275406 , -0.095489717 ), ( 61 , 1.14079106 , -0.001728716 ), ( 61 , 0.945912945 , 0.010238741 ), ( 61 , 1.034237009 , 0.105409271 ), ( 61 , 0.986791888 , 0.118737398 ), ( 61 , 1.272882061 , 0.174097043 ), ( 61 , 1.186237114 , 0.276658868 ), ( 61 , 1.669429426 , 0.219388073 ), ( 61 , 1.585686293 , 0.203872508 ), ( 61 , 1.556952072 , 0.201073579 ), ( 61 , 1.649743509 , 0.251028824 ), ( 61 , 1.843741598 , 0.291023019 ), ( 61 , 1.422859451 , 0.291472106 ), ( 61 , 1.304591401 , 0.253826642 ), ( 61 , 1.412092614 , 0.291455599 ), ( 61 , 1.44965115 , 0.297719306 ), ( 61 , 1.537591203 , 0.346759007 ), ( 61 , 1.455810694 , 0.357341467 ), ( 61 , 1.498038919 , 0.404990968 ), ( 61 , 1.351554157 , 0.489216949 ), ( 61 , 1.621142254 , 0.426207564 ), ( 61 , 1.557424208 , 0.42323673 ), ( 61 , 1.575192609 , 0.481228224 ), ( 61 , 3.187692382 , -0.660966314 ), ( 61 , 3.219202319 , -0.629959244 ), ( 61 , 3.312009557 , -0.530971979 ), ( 61 , 3.039418603 , -0.58591231 ), ( 61 , 3.324057527 , -0.3448593 ), ( 61 , 3.310627991 , -0.318521327 ), ( 61 , 3.207012497 , -0.363799917 ), ( 61 , 3.216005329 , -0.291360374 ), ( 61 , 2.934359871 , -0.322885144 ), ( 61 , 2.998282591 , -0.215663052 ), ( 61 , 2.880642338 , -0.245804661 ), ( 61 , 3.543210051 , -0.326882665 ), ( 61 , 3.50512002 , -0.085949512 ), ( 61 , 3.737195644 , -0.055789919 ), ( 61 , 3.878563818 , -0.014792121 ), ( 61 , 3.331988398 , -0.027532694 ), ( 61 , 3.631626762 , 0.212320665 ), ( 61 , 2.702121813 , -0.218658264 ), ( 61 , 2.83495998 , -0.171964219 ), ( 61 , 2.743364149 , -0.065320205 ), ( 61 , 2.96232531 , 0.028798071 ), ( 61 , 2.579745888 , -0.074063693 ), ( 61 , 2.557638145 , 0.117083538 ), ( 61 , 2.602418946 , 0.155915395 ), ( 61 , 2.988785565 , 0.199495066 ), ( 61 , 3.094676343 , 0.283485117 ), ( 61 , 3.347666732 , 0.208706596 ), ( 61 , 3.294905559 , 0.381899733 ), ( 61 , 3.031235126 , 0.293161452 ), ( 61 , 4.740309739 , -0.628662798 ), ( 61 , 4.691156986 , -0.636620698 ), ( 61 , 4.681672504 , -0.621767982 ), ( 61 , 4.683270169 , -0.606167514 ), ( 61 , 4.688182033 , -0.601558447 ), ( 61 , 4.678919923 , -0.600687863 ), ( 61 , 4.690139265 , -0.43436203 ), ( 61 , 5.069532444 , -0.319552956 ), ( 61 , 5.004158325 , -0.283255886 ), ( 61 , 4.780076194 , -0.325706031 ), ( 61 , 4.787410495 , -0.303233642 ), ( 61 , 4.504770963 , -0.484546389 ), ( 61 , 4.450423541 , -0.437943425 ), ( 61 , 4.55836363 , -0.374227525 ), ( 61 , 4.710698607 , -0.084155248 ), ( 61 , 5.359975216 , -0.05860683 ), ( 61 , 5.343435404 , 0.01864778 ), ( 61 , 5.398768009 , 0.001690739 ), ( 61 , 4.88694759 , -0.135979464 ), ( 61 , 5.071754909 , -0.004406877 ), ( 61 , 5.212734715 , 0.12462266 ), ( 61 , 4.400189469 , -0.260219331 ), ( 61 , 4.257985702 , -0.259165819 ), ( 61 , 4.354708346 , -0.114110956 ), ( 61 , 4.486487362 , -0.018844692 ), ( 61 , 4.473627228 , 0.012221481 ), ( 61 , 4.39457427 , 0.036031055 ), ( 61 , 4.007429369 , -0.008049928 ), ( 61 , 4.367052718 , 0.216333503 ), ( 61 , 4.732559129 , 0.033492073 ), ( 61 , 4.806084026 , 0.094869828 ), ( 61 , 5.089720957 , 0.347166322 ), ( 61 , 4.85537346 , 0.412191876 ), ( 61 , 4.663509557 , 0.336064796 ), ( 61 , 4.723308547 , 0.400084897 ), ( 61 , 4.610345628 , 0.537301909 ), ( 61 , 1.303972482 , -1.439381677 ), ( 61 , 0.470202769 , -1.399347531 ), ( 61 , 1.460606743 , -1.287023645 ), ( 61 , 0.89711749 , -1.210141119 ), ( 61 , 0.863888476 , -1.168092276 ), ( 61 , 0.41567336 , -1.014729217 ), ( 61 , 0.610453781 , -0.976418628 ), ( 61 , 0.861507188 , -0.833420764 ), ( 61 , 0.798191736 , -0.819868442 ), ( 61 , 1.537362945 , -0.997573213 ), ( 61 , 1.446880956 , -0.80154371 ), ( 61 , 1.564798206 , -0.768546817 ), ( 61 , 0.994085053 , -0.630162811 ), ( 61 , 1.164784155 , -0.420300445 ), ( 61 , 1.14796805 , -0.43445184 ), ( 61 , 0.435495361 , -0.980811737 ), ( 61 , 0.563536464 , -0.75951417 ), ( 61 , 0.58700492 , -0.718498613 ), ( 61 , 0.668096693 , -0.604758202 ), ( 61 , 0.364405071 , -0.540108387 ), ( 61 , 0.792535458 , -0.490342742 ), ( 61 , 0.777097737 , -0.411996236 ), ( 61 , 0.997430194 , -0.364827846 ), ( 61 , 1.026542715 , -0.211172414 ), ( 61 , 0.58040106 , -0.366516389 ), ( 61 , 0.639617281 , -0.349797333 ), ( 61 , 0.61995534 , -0.308270127 ), ( 61 , 0.536588005 , -0.267137866 ), ( 61 , 0.704975132 , -0.253928152 ), ( 61 , 0.79384793 , -0.173859834 ), ( 61 , 0.85527447 , -0.103301111 ), ( 61 , 2.282887663 , -1.380030211 ), ( 61 , 2.361182442 , -1.198760544 ), ( 61 , 3.003299265 , -1.26491045 ), ( 61 , 3.020873728 , -1.168703693 ), ( 61 , 2.963806316 , -1.127171741 ), ( 61 , 2.604883879 , -1.20605287 ), ( 61 , 2.472829518 , -1.133229365 ), ( 61 , 2.633560339 , -1.080079763 ), ( 61 , 2.025512419 , -1.218615834 ), ( 61 , 2.288541254 , -1.148857955 ), ( 61 , 2.08223252 , -1.104735736 ), ( 61 , 2.359519776 , -1.064018604 ), ( 61 , 2.100432917 , -0.951474723 ), ( 61 , 2.20966693 , -0.921664449 ), ( 61 , 2.347141866 , -0.847755982 ), ( 61 , 2.335772049 , -0.78612458 ), ( 61 , 3.071262306 , -1.097434879 ), ( 61 , 2.87644228 , -1.070248098 ), ( 61 , 3.116246879 , -1.001997288 ), ( 61 , 2.827824752 , -1.045786319 ), ( 61 , 2.76109548 , -1.023927536 ), ( 61 , 2.901901981 , -0.862056846 ), ( 61 , 2.760062043 , -0.778742592 ), ( 61 , 2.625314305 , -0.931379322 ), ( 61 , 2.545820542 , -0.894098745 ), ( 61 , 2.632575661 , -0.813956235 ), ( 61 , 2.459438441 , -0.818711444 ), ( 61 , 2.426299843 , -0.783629889 ), ( 61 , 2.462099823 , -0.688106668 ), ( 61 , 2.603126709 , -0.583260116 ), ( 61 , 2.49388398 , -0.623360912 ), ( 61 , 1.837317603 , -1.028678075 ), ( 61 , 1.688902554 , -1.012328543 ), ( 61 , 1.921412742 , -0.912990621 ), ( 61 , 1.963470602 , -0.9189295 ), ( 61 , 1.771051565 , -0.914720548 ), ( 61 , 2.052481449 , -0.881561586 ), ( 61 , 2.082763277 , -0.835848907 ), ( 61 , 2.117687137 , -0.81992702 ), ( 61 , 1.59115199 , -0.786745 ), ( 61 , 1.772391406 , -0.659302591 ), ( 61 , 2.10778573 , -0.56659472 ), ( 61 , 1.822605089 , -0.480619422 ), ( 61 , 1.924538757 , -0.451892913 ), ( 61 , 1.905193835 , -0.406847826 ), ( 61 , 1.93856811 , -0.399902657 ), ( 61 , 1.943131002 , -0.383668093 ), ( 61 , 2.324779184 , -0.675860616 ), ( 61 , 2.421439232 , -0.656286881 ), ( 61 , 2.312721522 , -0.514225345 ), ( 61 , 2.314132008 , -0.499472457 ), ( 61 , 2.294323581 , -0.443103857 ), ( 61 , 2.614085748 , -0.418019127 ), ( 61 , 2.714923225 , -0.346736017 ), ( 61 , 2.441512014 , -0.276373501 ), ( 61 , 2.488717441 , -0.271884074 ), ( 61 , 2.204855596 , -0.367313791 ), ( 61 , 2.17471102 , -0.220592712 ), ( 61 , 2.430930356 , -0.254366107 ), ( 61 , 2.220276489 , -0.170144253 ), ( 61 , 4.587847247 , -1.411263414 ), ( 61 , 3.66756876 , -1.371655026 ), ( 61 , 3.465733108 , -1.369166882 ), ( 61 , 4.508564139 , -1.172812646 ), ( 61 , 4.41523764 , -1.141018677 ), ( 61 , 4.041548517 , -1.192218743 ), ( 61 , 4.135916465 , -1.14218764 ), ( 61 , 4.299476969 , -1.10174187 ), ( 61 , 4.358429021 , -1.0644875 ), ( 61 , 4.101242931 , -1.045623672 ), ( 61 , 3.281961061 , -1.274109504 ), ( 61 , 3.713313434 , -1.216833937 ), ( 61 , 3.801661303 , -1.181894929 ), ( 61 , 3.7835109 , -1.148806201 ), ( 61 , 3.668970009 , -1.156613665 ), ( 61 , 3.293901173 , -1.182581332 ), ( 61 , 3.216216665 , -1.146559635 ), ( 61 , 3.530485735 , -1.128806474 ), ( 61 , 3.894646346 , -1.113692619 ), ( 61 , 3.871181683 , -0.911153973 ), ( 61 , 3.724806686 , -0.953398481 ), ( 61 , 3.811360121 , -0.919432924 ), ( 61 , 4.458398502 , -1.029016635 ), ( 61 , 4.550597152 , -1.012473112 ), ( 61 , 4.604752601 , -0.931186558 ), ( 61 , 4.568137964 , -0.906679753 ), ( 61 , 4.673925304 , -0.927298077 ), ( 61 , 4.614018741 , -0.873717376 ), ( 61 , 4.466710691 , -0.823106582 ), ( 61 , 4.425141296 , -0.729984917 ), ( 61 , 4.380343944 , -0.717565875 ), ( 61 , 4.445665318 , -0.656605013 ), ( 61 , 4.518635959 , -0.673623792 ), ( 61 , 4.559866586 , -0.605562755 ), ( 61 , 4.188363251 , -0.942844005 ), ( 61 , 4.278426523 , -0.688194658 ), ( 61 , 4.171834611 , -0.695766632 ), ( 61 , 4.120622998 , -0.729884231 ), ( 61 , 4.075461752 , -0.699295368 ), ( 61 , 4.095866097 , -0.682908152 ), ( 61 , 4.251501942 , -0.576154482 ), ( 61 , 4.204373464 , -0.558518038 ), ( 61 , 4.370309917 , -0.427047546 ), ( 61 , 3.494173061 , -0.973905324 ), ( 61 , 3.148065751 , -1.003632273 ), ( 61 , 3.467604679 , -0.85447175 ), ( 61 , 3.649151984 , -0.813211403 ), ( 61 , 3.703867878 , -0.758710345 ), ( 61 , 3.322147878 , -0.805385198 ), ( 61 , 3.345668778 , -0.581468307 ), ( 61 , 3.405755603 , -0.584789083 ), ( 61 , 3.932311592 , -0.664248551 ), ( 61 , 3.903566765 , -0.581205435 ), ( 61 , 3.987589225 , -0.457164873 ), ( 61 , 4.164798052 , -0.477152246 ), ( 61 , 4.093989299 , -0.366811431 ), ( 61 , 3.985103267 , -0.342918963 ), ( 61 , 3.730726921 , -0.511067509 ), ( 61 , 3.922147696 , -0.194507427 ), ( 61 , 5.419561429 , -1.329603307 ), ( 61 , 4.761543112 , -1.32459293 ), ( 61 , 4.856043911 , -1.290953866 ), ( 61 , 5.196837269 , -1.145044005 ), ( 61 , 5.193937546 , -1.065716881 ), ( 61 , 5.945529629 , -0.824024266 ), ( 61 , 5.919237408 , -0.552642246 ), ( 61 , 5.935726219 , -0.535123717 ), ( 61 , 5.038160033 , -0.78878068 ), ( 61 , 4.749484627 , -0.798787186 ), ( 61 , 4.847865883 , -0.731538234 ), ( 61 , 5.164547316 , -0.655177221 ), ( 61 , 5.188852505 , -0.502474193 ), ( 61 , 5.031905178 , -0.452159899 ), ( 61 , 5.462791635 , -0.579065554 ), ( 61 , 5.347023276 , -0.50026782 ), ( 61 , 5.505445902 , -0.469164759 ), ( 61 , 5.314633656 , -0.38065848 ), ( 61 , 5.201953857 , -0.332405358 ), ( 61 , 5.326644844 , -0.258045086 ), ( 61 , 5.531584361 , -0.304668652 ), ( 61 , 5.457207608 , -0.218958461 ), ( 61 , 5.589729697 , -0.079587835 ), ( 61 , 5.460401546 , -0.098202689 ), ( 62 , 0.788618041 , 0.189720103 ), ( 62 , 1.009084786 , 0.227694159 ), ( 62 , 1.080810009 , 0.264637779 ), ( 62 , 1.08206285 , 0.302637118 ), ( 62 , 1.136304489 , 0.327116244 ), ( 62 , 1.144843273 , 0.363402 ), ( 62 , 1.103283624 , 0.391187152 ), ( 62 , 0.657302541 , 0.346536202 ), ( 62 , 0.413724284 , 0.32218874 ), ( 62 , 0.651141582 , 0.409609189 ), ( 62 , 0.578694354 , 0.421806739 ), ( 62 , 0.85777039 , 0.561706495 ), ( 62 , 0.783937261 , 0.716154217 ), ( 62 , 1.293004344 , 0.63125968 ), ( 62 , 1.443434952 , 0.723644017 ), ( 62 , 1.323442214 , 0.723292998 ), ( 62 , 1.251146145 , 0.703582632 ), ( 62 , 1.467239732 , 0.83278645 ), ( 62 , 1.135515433 , 0.729684912 ), ( 62 , 1.150160722 , 0.740503499 ), ( 62 , 1.126331057 , 0.735497415 ), ( 62 , 0.913850264 , 0.819217186 ), ( 62 , 0.980358915 , 0.804590732 ), ( 62 , 0.996150815 , 0.885523277 ), ( 62 , 1.192999105 , 0.751607368 ), ( 62 , 1.373302863 , 0.928758498 ), ( 62 , 1.36592172 , 1.07948711 ), ( 62 , 1.523132465 , 1.096209477 ), ( 62 , 0.44354788 , 0.524420383 ), ( 62 , 0.505745577 , 0.650619589 ), ( 62 , 0.474086908 , 0.662399277 ), ( 62 , 0.584853401 , 0.828751889 ), ( 62 , 0.254112099 , 0.592546074 ), ( 62 , 0.020112093 , 0.734651378 ), ( 62 , 0.007552891 , 0.739445908 ), ( 62 , 0.071384724 , 0.760874384 ), ( 62 , 0.224985636 , 0.900090393 ), ( 62 , 0.144760387 , 0.95809351 ), ( 62 , 0.185523898 , 1.025439657 ), ( 62 , 0.843860399 , 0.840844346 ), ( 62 , 0.952645533 , 0.993659226 ), ( 62 , 0.602468965 , 1.003849031 ), ( 62 , 1.112777316 , 1.002872569 ), ( 62 , 1.147413346 , 1.040493314 ), ( 62 , 1.076208233 , 1.143550577 ), ( 62 , 0.455102337 , 1.004201801 ), ( 62 , 0.396511828 , 1.153628075 ), ( 62 , 0.58680038 , 1.161069803 ), ( 62 , 0.332477448 , 1.252166449 ), ( 62 , 0.537436833 , 1.288935795 ), ( 62 , 0.040808166 , 1.391277131 ), ( 62 , 0.365556493 , 1.374029388 ), ( 62 , 2.290838331 , 0.0991444 ), ( 62 , 2.681225291 , 0.369443001 ), ( 62 , 2.573636646 , 0.369649614 ), ( 62 , 2.142307635 , 0.255330396 ), ( 62 , 2.207081072 , 0.297495166 ), ( 62 , 2.147719585 , 0.308005983 ), ( 62 , 2.115139816 , 0.328852911 ), ( 62 , 2.121912036 , 0.395062637 ), ( 62 , 2.323825286 , 0.494437801 ), ( 62 , 2.261578242 , 0.572502689 ), ( 62 , 2.422656943 , 0.60447475 ), ( 62 , 2.881279707 , 0.748936063 ), ( 62 , 3.048029728 , 0.81740793 ), ( 62 , 2.542559005 , 0.612488507 ), ( 62 , 2.702825971 , 0.844669475 ), ( 62 , 1.934994841 , 0.400467424 ), ( 62 , 2.011383288 , 0.401747618 ), ( 62 , 2.00363788 , 0.422763076 ), ( 62 , 1.911431992 , 0.540279106 ), ( 62 , 1.864765209 , 0.59357043 ), ( 62 , 2.019010216 , 0.593415568 ), ( 62 , 2.32201152 , 0.733078417 ), ( 62 , 1.802154452 , 0.678395414 ), ( 62 , 1.81184537 , 0.766373747 ), ( 62 , 1.578292504 , 0.854502352 ), ( 62 , 1.621456659 , 0.850160373 ), ( 62 , 1.993093435 , 0.973104848 ), ( 62 , 1.909223885 , 0.90985645 ), ( 62 , 1.735195973 , 1.07301685 ), ( 62 , 2.322141786 , 0.790853955 ), ( 62 , 2.45096974 , 0.989586703 ), ( 62 , 2.265840465 , 0.919987638 ), ( 62 , 2.605900786 , 1.002129242 ), ( 62 , 2.814638286 , 1.176550679 ), ( 62 , 2.528382528 , 1.174117112 ), ( 62 , 2.138298556 , 1.016614879 ), ( 62 , 2.036231195 , 1.142419166 ), ( 62 , 2.184595132 , 1.263741568 ), ( 62 , 2.477752239 , 1.310715486 ), ( 62 , 2.562567078 , 1.381192498 ), ( 62 , 3.018617712 , 1.415941868 ), ( 62 , 3.924308705 , 0.079721801 ), ( 62 , 4.159107924 , 0.230256554 ), ( 62 , 4.137396759 , 0.240652156 ), ( 62 , 4.067320316 , 0.280233856 ), ( 62 , 4.105824403 , 0.27967983 ), ( 62 , 4.16987094 , 0.324991859 ), ( 62 , 3.979659004 , 0.331195224 ), ( 62 , 3.832011219 , 0.319359073 ), ( 62 , 3.898119199 , 0.334305644 ), ( 62 , 3.841312743 , 0.383555973 ), ( 62 , 3.988522693 , 0.554799156 ), ( 62 , 3.909427409 , 0.563742055 ), ( 62 , 3.879445722 , 0.659942916 ), ( 62 , 4.530819562 , 0.67739534 ), ( 62 , 4.631063771 , 0.904396675 ), ( 62 , 4.017295359 , 0.77551373 ), ( 62 , 4.052388375 , 0.823822225 ), ( 62 , 4.197922143 , 0.923552983 ), ( 62 , 4.421315069 , 0.827590002 ), ( 62 , 4.501518568 , 0.86824 ), ( 62 , 4.692300203 , 0.976900104 ), ( 62 , 4.272504758 , 0.855881275 ), ( 62 , 4.376312705 , 0.97198568 ), ( 62 , 3.589811844 , 0.610674992 ), ( 62 , 3.605483482 , 0.672013355 ), ( 62 , 3.740903341 , 0.895481828 ), ( 62 , 3.445716551 , 0.672543803 ), ( 62 , 4.080881243 , 0.941119163 ), ( 62 , 4.130205866 , 0.968226966 ), ( 62 , 4.048535553 , 1.058894654 ), ( 62 , 3.944288651 , 1.150514967 ), ( 62 , 3.973861588 , 1.183000931 ), ( 62 , 3.620520947 , 1.073179238 ), ( 62 , 3.799393834 , 1.102801137 ), ( 62 , 3.475283429 , 1.193946693 ), ( 62 , 3.398110477 , 1.31724416 ), ( 62 , 3.588366376 , 1.444296884 ), ( 62 , 5.58011314 , 0.195537788 ), ( 62 , 5.811315566 , 0.279958402 ), ( 62 , 5.713543933 , 0.357137049 ), ( 62 , 5.586077844 , 0.384430147 ), ( 62 , 5.401415134 , 0.318854404 ), ( 62 , 5.371128976 , 0.359652267 ), ( 62 , 5.20266393 , 0.325884476 ), ( 62 , 5.250271785 , 0.322900891 ), ( 62 , 5.285512023 , 0.381788212 ), ( 62 , 5.603053792 , 0.441786259 ), ( 62 , 5.503085297 , 0.628771898 ), ( 62 , 5.812536323 , 0.435471161 ), ( 62 , 5.795742814 , 0.445814041 ), ( 62 , 5.932254766 , 0.656118627 ), ( 62 , 6.270360386 , 0.74452635 ), ( 62 , 5.941127154 , 0.725176344 ), ( 62 , 5.681126114 , 0.619770087 ), ( 62 , 5.786662574 , 0.789737797 ), ( 62 , 5.580349803 , 0.716291663 ), ( 62 , 5.785127583 , 0.841797856 ), ( 62 , 5.916186105 , 0.873900117 ), ( 62 , 5.935459322 , 0.93978644 ), ( 62 , 5.182803652 , 0.443032761 ), ( 62 , 5.04145088 , 0.532782711 ), ( 62 , 5.063859628 , 0.614111137 ), ( 62 , 5.057176589 , 0.653546865 ), ( 62 , 5.108493873 , 0.632305344 ), ( 62 , 5.094644883 , 0.662198231 ), ( 62 , 5.269544716 , 0.600792365 ), ( 62 , 5.335274931 , 0.716033057 ), ( 62 , 5.410738674 , 0.758493579 ), ( 62 , 5.205533815 , 0.834401261 ), ( 62 , 5.023870966 , 0.705617708 ), ( 62 , 4.939808405 , 0.72227374 ), ( 62 , 4.884963426 , 0.714451424 ), ( 62 , 5.059744913 , 0.949036192 ), ( 62 , 5.062625652 , 1.006098473 ), ( 62 , 4.922994194 , 0.851160232 ), ( 62 , 4.902122838 , 0.940238107 ), ( 62 , 4.758345478 , 0.947509075 ), ( 62 , 4.905703466 , 1.065493346 ), ( 62 , 5.482219649 , 0.858630801 ), ( 62 , 5.514349409 , 0.930017827 ), ( 62 , 5.573003359 , 0.973860487 ), ( 62 , 5.429579783 , 0.985908474 ), ( 62 , 5.422132314 , 1.057690185 ), ( 62 , 5.754755271 , 1.09428812 ), ( 62 , 6.055402794 , 1.110613153 ), ( 62 , 6.193088168 , 1.291589074 ), ( 62 , 5.219926587 , 0.989376998 ), ( 62 , 5.016790367 , 1.151545858 ), ( 62 , 4.779086879 , 1.200007734 ), ( 62 , 5.47484824 , 1.325156487 ), ( 62 , 5.566335694 , 1.344119925 ), ( 62 , 4.712679382 , 1.396294163 ), ( 62 , 4.817800081 , 1.451681585 ), ( 62 , 5.60614163 , 1.405421856 ), ( 62 , 5.36458038 , 1.415336567 ), ( 62 , 5.98235978 , 1.490066365 ), ( 62 , 5.362763539 , 1.459536684 ), ( 62 , 6.25987231 , -0.703365028 ), ( 62 , 0.0598004 , -0.454185007 ), ( 62 , 0.118883521 , -0.445884287 ), ( 62 , 0.095002842 , -0.350079981 ), ( 62 , 0.130328775 , -0.259431749 ), ( 62 , 6.173334438 , -0.266103472 ), ( 62 , 6.033322924 , -0.364278354 ), ( 62 , 6.106042342 , -0.315473551 ), ( 62 , 0.031870189 , -0.303458256 ), ( 62 , 0.03617739 , -0.154014029 ), ( 62 , 6.240640159 , -0.174072076 ), ( 62 , 6.252328497 , -0.055078683 ), ( 62 , 0.574199968 , -0.031863579 ), ( 62 , 0.54020137 , -0.005943877 ), ( 62 , 0.312952768 , -0.039291367 ), ( 62 , 0.278469677 , 0.023851089 ), ( 62 , 0.307871805 , 0.04268341 ), ( 62 , 0.206796023 , 0.117649722 ), ( 62 , 0.210719168 , 0.12740836 ), ( 62 , 0.417893482 , 0.255889079 ), ( 62 , 0.434947868 , 0.286334688 ), ( 62 , 5.875547968 , -0.292200673 ), ( 62 , 5.842552689 , -0.232216999 ), ( 62 , 5.862281158 , -0.125565493 ), ( 62 , 5.8056825 , -0.074470267 ), ( 62 , 6.028056637 , -0.082229471 ), ( 62 , 5.999534219 , 0.01858662 ), ( 62 , 5.705652099 , -0.10326548 ), ( 62 , 5.831843574 , -0.027863378 ), ( 62 , 5.661682803 , -0.006820013 ), ( 62 , 5.613286948 , 0.019237577 ), ( 62 , 5.66241132 , 0.115512468 ), ( 62 , 5.829390514 , 0.149216883 ), ( 62 , 5.942672952 , 0.253356346 ), ( 62 , 6.261938218 , 0.123409484 ), ( 62 , 0.123635753 , 0.177823807 ), ( 62 , 0.206080902 , 0.341713877 ), ( 62 , 0.065157378 , 0.38893181 ), ( 62 , 6.185735877 , 0.293660034 ), ( 62 , 0.061251051 , 0.5795525 ), ( 62 , 1.689409184 , -0.451307275 ), ( 62 , 1.493098369 , -0.532943711 ), ( 62 , 1.471639515 , -0.486452619 ), ( 62 , 1.554396573 , -0.39862885 ), ( 62 , 1.791649693 , -0.449917149 ), ( 62 , 1.806084487 , -0.428281833 ), ( 62 , 1.892837055 , -0.399780835 ), ( 62 , 1.891069266 , -0.395744901 ), ( 62 , 1.833196994 , -0.351830226 ), ( 62 , 1.80363958 , -0.33043606 ), ( 62 , 1.645250969 , -0.39648701 ), ( 62 , 1.637541392 , -0.322495014 ), ( 62 , 1.73126445 , -0.232499817 ), ( 62 , 1.35866067 , -0.206798598 ), ( 62 , 1.702515163 , -0.175955832 ), ( 62 , 1.654274028 , -0.149853986 ), ( 62 , 1.441405919 , -0.129762104 ), ( 62 , 1.566513953 , -0.163749007 ), ( 62 , 1.612710326 , -0.09968303 ), ( 62 , 2.048493047 , -0.233054327 ), ( 62 , 2.122567927 , -0.161345648 ), ( 62 , 1.873337882 , -0.180581252 ), ( 62 , 1.901193885 , -0.184718728 ), ( 62 , 1.894810212 , -0.173616891 ), ( 62 , 1.945401715 , -0.100792402 ), ( 62 , 1.894467017 , -0.068099839 ), ( 62 , 2.194320704 , -0.131651563 ), ( 62 , 2.192574471 , -0.107846467 ), ( 62 , 1.739379656 , 0.028161078 ), ( 62 , 1.828015505 , 0.062872528 ), ( 62 , 1.73607189 , 0.08651021 ), ( 62 , 1.958204549 , 0.263714364 ), ( 62 , 1.122770003 , -0.112961429 ), ( 62 , 1.422615775 , -0.096316068 ), ( 62 , 1.394466065 , -0.024642138 ), ( 62 , 1.457643265 , -0.025664395 ), ( 62 , 1.317022521 , 0.012600354 ), ( 62 , 1.360291386 , 0.018097962 ), ( 62 , 1.416342251 , 0.041070353 ), ( 62 , 1.022286738 , -0.051537106 ), ( 62 , 0.955647053 , -0.098221248 ), ( 62 , 0.997678248 , 0.003976393 ), ( 62 , 0.91960611 , 0.108011312 ), ( 62 , 1.106436827 , 0.178238234 ), ( 62 , 1.529346885 , 0.035337107 ), ( 62 , 1.528114407 , 0.077198314 ), ( 62 , 1.505478075 , 0.069952056 ), ( 62 , 1.675680736 , 0.155071589 ), ( 62 , 1.724792294 , 0.17432852 ), ( 62 , 1.470765007 , 0.192595339 ), ( 62 , 1.843181736 , 0.309895533 ), ( 62 , 1.653832593 , 0.302382349 ), ( 62 , 1.692723558 , 0.357729833 ), ( 62 , 1.427816299 , 0.266294559 ), ( 62 , 1.249143502 , 0.326973558 ), ( 62 , 1.612424264 , 0.387292716 ), ( 62 , 1.575886974 , 0.541654545 ), ( 62 , 1.595077593 , 0.586412993 ), ( 62 , 3.167525219 , -0.622976306 ), ( 62 , 3.069390505 , -0.649093607 ), ( 62 , 3.112987279 , -0.612031833 ), ( 62 , 3.128767617 , -0.581465056 ), ( 62 , 3.030193893 , -0.572915298 ), ( 62 , 3.122694783 , -0.497022535 ), ( 62 , 3.368317585 , -0.466666938 ), ( 62 , 3.497176845 , -0.340152761 ), ( 62 , 3.229628345 , -0.387042763 ), ( 62 , 3.385445031 , -0.267507134 ), ( 62 , 3.024863505 , -0.284150293 ), ( 62 , 2.877673447 , -0.285427125 ), ( 62 , 3.053675748 , -0.25252474 ), ( 62 , 3.207812882 , -0.180064076 ), ( 62 , 3.022875643 , -0.136616071 ), ( 62 , 3.602286306 , -0.275197202 ), ( 62 , 3.445953227 , -0.180282116 ), ( 62 , 3.536167872 , -0.112926048 ), ( 62 , 3.784765754 , -0.10682752 ), ( 62 , 3.751067924 , 0.006706489 ), ( 62 , 3.406003783 , -0.058785571 ), ( 62 , 3.373628189 , -0.062013694 ), ( 62 , 3.183871816 , 0.033102646 ), ( 62 , 3.623354116 , 0.095944591 ), ( 62 , 2.904082353 , -0.193548108 ), ( 62 , 2.667283676 , -0.127700631 ), ( 62 , 2.953836202 , -0.124522738 ), ( 62 , 2.84091002 , -0.053978547 ), ( 62 , 2.83038027 , -0.034188197 ), ( 62 , 2.893938174 , -0.013144388 ), ( 62 , 2.895536974 , -1.42586E-05 ), ( 62 , 2.484502242 , -0.038487472 ), ( 62 , 2.590571786 , 0.103996932 ), ( 62 , 2.713277755 , 0.261375164 ), ( 62 , 3.446133174 , 0.294061943 ), ( 62 , 3.408453575 , 0.298852486 ), ( 62 , 3.43110763 , 0.369190866 ), ( 62 , 3.160257656 , 0.37453219 ), ( 62 , 3.238365453 , 0.432385008 ), ( 62 , 3.230130967 , 0.453820609 ), ( 62 , 3.138504155 , 0.578872176 ), ( 62 , 4.733503611 , -0.626602395 ), ( 62 , 4.825443162 , -0.592465877 ), ( 62 , 4.788318651 , -0.500074626 ), ( 62 , 4.808393861 , -0.496197059 ), ( 62 , 4.592005509 , -0.598292559 ), ( 62 , 4.743757956 , -0.374267446 ), ( 62 , 4.96726809 , -0.393212339 ), ( 62 , 5.068517541 , -0.335706113 ), ( 62 , 5.005336975 , -0.327044871 ), ( 62 , 4.834305748 , -0.310675003 ), ( 62 , 4.480639731 , -0.462741154 ), ( 62 , 4.471338476 , -0.357702965 ), ( 62 , 4.486576895 , -0.30734016 ), ( 62 , 4.517513347 , -0.254543285 ), ( 62 , 5.18385104 , -0.23917613 ), ( 62 , 5.273169131 , -0.175629568 ), ( 62 , 5.407122014 , -0.042113966 ), ( 62 , 5.271040857 , -0.011844762 ), ( 62 , 4.929170298 , -0.103200375 ), ( 62 , 4.936530096 , -0.057910125 ), ( 62 , 5.05186793 , 0.035457185 ), ( 62 , 4.958382608 , -0.031415863 ), ( 62 , 4.928898236 , 0.014592432 ), ( 62 , 4.786065921 , -0.05252225 ), ( 62 , 5.193625405 , 0.137922774 ), ( 62 , 5.240278051 , 0.14935897 ), ( 62 , 5.273678415 , 0.187201507 ), ( 62 , 5.186688672 , 0.206225086 ), ( 62 , 5.135083637 , 0.196754687 ), ( 62 , 5.168661109 , 0.232176274 ), ( 62 , 4.287611284 , -0.036301312 ), ( 62 , 4.6800548 , 0.022775059 ), ( 62 , 4.645055535 , 0.045021856 ), ( 62 , 4.521441182 , 0.038154359 ), ( 62 , 4.227974186 , 0.060293418 ), ( 62 , 4.030535014 , -0.017847528 ), ( 62 , 4.228906723 , 0.111240014 ), ( 62 , 4.736243192 , 0.043485365 ), ( 62 , 4.631836229 , 0.110184999 ), ( 62 , 4.565418293 , 0.132568294 ), ( 62 , 4.791142542 , 0.240453657 ), ( 62 , 4.939421165 , 0.243745341 ), ( 62 , 5.039834034 , 0.352609854 ), ( 62 , 4.7914894 , 0.316457915 ), ( 62 , 4.607638416 , 0.366451786 ), ( 62 , 4.471051364 , 0.342069119 ), ( 62 , 4.519050277 , 0.414391753 ), ( 62 , 4.672276391 , 0.389490992 ), ( 62 , 4.649865725 , 0.54986015 ), ( 62 , 1.440897892 , -1.479773951 ), ( 62 , 0.983481845 , -1.250665128 ), ( 62 , 0.623361648 , -1.285360128 ), ( 62 , 1.470072924 , -1.161694751 ), ( 62 , 1.156663893 , -1.068805369 ), ( 62 , 1.041596402 , -0.996622953 ), ( 62 , 0.093730689 , -1.351355063 ), ( 62 , 0.145716175 , -1.243832113 ), ( 62 , 0.371274816 , -1.123461274 ), ( 62 , 0.505165751 , -1.062216232 ), ( 62 , 0.716349059 , -0.917531865 ), ( 62 , 1.286697336 , -1.021841116 ), ( 62 , 1.128657711 , -0.922573857 ), ( 62 , 1.165452373 , -0.819421104 ), ( 62 , 1.315869959 , -0.693206694 ), ( 62 , 1.266539753 , -0.721176851 ), ( 62 , 1.01908254 , -0.818453337 ), ( 62 , 0.917283746 , -0.722062509 ), ( 62 , 1.18103032 , -0.622266929 ), ( 62 , 1.319380993 , -0.554504088 ), ( 62 , 1.207979023 , -0.536108027 ), ( 62 , 1.24978228 , -0.490216287 ), ( 62 , 1.128470581 , -0.400891878 ), ( 62 , 0.186374676 , -1.051790599 ), ( 62 , 0.399897073 , -0.795445829 ), ( 62 , 0.510575966 , -0.903461299 ), ( 62 , 0.707342088 , -0.669920143 ), ( 62 , 0.192904074 , -0.670570423 ), ( 62 , 0.429602248 , -0.637553015 ), ( 62 , 0.394370609 , -0.457413128 ), ( 62 , 0.842229494 , -0.627334898 ), ( 62 , 0.742847656 , -0.625586934 ), ( 62 , 0.900483682 , -0.47677348 ), ( 62 , 0.717082096 , -0.567666061 ), ( 62 , 0.819648366 , -0.485747455 ), ( 62 , 0.850866555 , -0.455541585 ), ( 62 , 0.757434662 , -0.390549721 ), ( 62 , 1.172214256 , -0.339635138 ), ( 62 , 0.93647871 , -0.17223289 ), ( 62 , 0.914770236 , -0.118770909 ), ( 62 , 0.780110181 , -0.17063402 ), ( 62 , 2.876345859 , -1.476442977 ), ( 62 , 2.311840702 , -1.266256981 ), ( 62 , 2.965341904 , -1.311483236 ), ( 62 , 2.725939591 , -1.29104896 ), ( 62 , 2.852299999 , -1.234302748 ), ( 62 , 2.749527052 , -1.169102131 ), ( 62 , 3.044727514 , -1.180199562 ), ( 62 , 2.855767127 , -1.079078512 ), ( 62 , 2.601242573 , -1.245977857 ), ( 62 , 2.561758108 , -1.135734938 ), ( 62 , 2.481776304 , -1.08686785 ), ( 62 , 2.631077745 , -1.050315609 ), ( 62 , 2.207226241 , -1.1274917 ), ( 62 , 2.114969021 , -1.096699658 ), ( 62 , 2.092945658 , -1.050815156 ), ( 62 , 2.031527234 , -0.989994175 ), ( 62 , 2.10105063 , -0.967865393 ), ( 62 , 2.461313778 , -1.075982217 ), ( 62 , 2.488790034 , -1.018603958 ), ( 62 , 2.441456682 , -0.963184579 ), ( 62 , 2.4608648 , -0.902981941 ), ( 62 , 2.303845531 , -0.922406317 ), ( 62 , 2.458393014 , -0.842765497 ), ( 62 , 2.859220428 , -1.056210568 ), ( 62 , 2.850785958 , -1.027884241 ), ( 62 , 3.057413491 , -0.941932756 ), ( 62 , 2.788118246 , -1.026546125 ), ( 62 , 2.763828173 , -1.015609291 ), ( 62 , 2.789924946 , -0.970526725 ), ( 62 , 2.880382494 , -0.90439104 ), ( 62 , 2.991276893 , -0.65882081 ), ( 62 , 2.639938071 , -0.895590204 ), ( 62 , 2.664374734 , -0.728084089 ), ( 62 , 2.678044518 , -0.704170586 ), ( 62 , 2.422707358 , -0.795093558 ), ( 62 , 2.483890607 , -0.670267883 ), ( 62 , 2.57202615 , -0.649030406 ), ( 62 , 2.519698848 , -0.629994222 ), ( 62 , 2.882748124 , -0.55568943 ), ( 62 , 2.756785651 , -0.492830842 ), ( 62 , 2.77052973 , -0.404497605 ), ( 62 , 1.679572039 , -1.114009753 ), ( 62 , 1.789037485 , -1.051532794 ), ( 62 , 1.965746502 , -0.949444696 ), ( 62 , 1.899580546 , -0.916269654 ), ( 62 , 1.673896601 , -0.910730277 ), ( 62 , 1.864102375 , -0.907012264 ), ( 62 , 2.090925592 , -0.872259588 ), ( 62 , 2.091016971 , -0.872205866 ), ( 62 , 2.114930108 , -0.882968802 ), ( 62 , 2.123599663 , -0.846437898 ), ( 62 , 2.296832545 , -0.717772505 ), ( 62 , 2.220352753 , -0.743290619 ), ( 62 , 2.266146839 , -0.638900509 ), ( 62 , 2.056603435 , -0.752153089 ), ( 62 , 2.038087363 , -0.686453423 ), ( 62 , 2.187785094 , -0.69151123 ), ( 62 , 1.826901611 , -0.798795761 ), ( 62 , 1.608219665 , -0.77416112 ), ( 62 , 1.599955365 , -0.738253306 ), ( 62 , 1.977539784 , -0.699152366 ), ( 62 , 1.937192944 , -0.625485973 ), ( 62 , 1.981873378 , -0.584039315 ), ( 62 , 1.944803205 , -0.553944614 ), ( 62 , 1.858809471 , -0.535042425 ), ( 62 , 1.885246791 , -0.537931652 ), ( 62 , 1.893487963 , -0.529528756 ), ( 62 , 1.814760951 , -0.554842491 ), ( 62 , 1.80455976 , -0.498166921 ), ( 62 , 1.82441797 , -0.474107977 ), ( 62 , 2.490449332 , -0.556574299 ), ( 62 , 2.394260532 , -0.467181343 ), ( 62 , 2.594124451 , -0.392480394 ), ( 62 , 2.635648636 , -0.315928655 ), ( 62 , 2.655471921 , -0.272479347 ), ( 62 , 2.499875912 , -0.235912597 ), ( 62 , 2.290388673 , -0.369447761 ), ( 62 , 2.008111918 , -0.343145202 ), ( 62 , 2.341221815 , -0.291626009 ), ( 62 , 2.494293696 , -0.184168771 ), ( 62 , 2.410446425 , -0.124088216 ), ( 62 , 2.331269339 , -0.094845501 ), ( 62 , 3.646178378 , -1.442800069 ), ( 62 , 3.701960436 , -1.306362193 ), ( 62 , 3.927805073 , -1.346707004 ), ( 62 , 3.926679797 , -1.30956966 ), ( 62 , 4.52298462 , -1.300852983 ), ( 62 , 4.017204195 , -1.177776097 ), ( 62 , 4.135928123 , -1.142194717 ), ( 62 , 4.201326034 , -1.091559982 ), ( 62 , 4.166437926 , -1.060177234 ), ( 62 , 4.193615958 , -0.95256918 ), ( 62 , 3.388236728 , -1.259871187 ), ( 62 , 3.213124904 , -1.267364072 ), ( 62 , 3.528960162 , -1.215224488 ), ( 62 , 3.829886054 , -1.185671283 ), ( 62 , 3.311205109 , -1.172740107 ), ( 62 , 3.476442471 , -1.136883744 ), ( 62 , 3.315813327 , -1.160839014 ), ( 62 , 3.230899055 , -1.149172557 ), ( 62 , 3.501989575 , -1.064165276 ), ( 62 , 3.572756012 , -1.005706821 ), ( 62 , 3.680194737 , -0.981112169 ), ( 62 , 3.769069804 , -0.92810178 ), ( 62 , 4.573331768 , -1.1001927 ), ( 62 , 4.605850606 , -1.044512695 ), ( 62 , 4.424426755 , -1.010726688 ), ( 62 , 4.534401553 , -1.041868523 ), ( 62 , 4.646642678 , -1.004360648 ), ( 62 , 4.702406682 , -0.993028345 ), ( 62 , 4.662792485 , -0.966938457 ), ( 62 , 4.575593259 , -0.962893873 ), ( 62 , 4.501400877 , -0.85300235 ), ( 62 , 4.383664463 , -0.927684047 ), ( 62 , 4.433777511 , -0.88444309 ), ( 62 , 4.45254674 , -0.849073321 ), ( 62 , 4.589423469 , -0.803493962 ), ( 62 , 4.675476103 , -0.7116204 ), ( 62 , 4.577188092 , -0.767490805 ), ( 62 , 4.423128791 , -0.751385118 ), ( 62 , 4.435752643 , -0.712503897 ), ( 62 , 4.417675197 , -0.710755678 ), ( 62 , 4.411321224 , -0.654753231 ), ( 62 , 4.576841205 , -0.641902901 ), ( 62 , 4.550567264 , -0.649630057 ), ( 62 , 4.521957298 , -0.624001951 ), ( 62 , 4.47883275 , -0.618737715 ), ( 62 , 4.453278698 , -0.62717682 ), ( 62 , 4.519771607 , -0.527282223 ), ( 62 , 4.146350243 , -0.792413485 ), ( 62 , 4.286895797 , -0.766411458 ), ( 62 , 4.192697527 , -0.705727965 ), ( 62 , 4.021185337 , -0.711215885 ), ( 62 , 4.134119453 , -0.66179042 ), ( 62 , 4.084893905 , -0.577581263 ), ( 62 , 4.207535019 , -0.579692616 ), ( 62 , 3.169429762 , -1.146847194 ), ( 62 , 3.203908508 , -1.124140729 ), ( 62 , 3.189931216 , -1.069495022 ), ( 62 , 3.163200087 , -1.064097478 ), ( 62 , 3.465344505 , -1.024229461 ), ( 62 , 3.650125666 , -0.954804019 ), ( 62 , 3.237396457 , -0.983918689 ), ( 62 , 3.373130997 , -0.959101063 ), ( 62 , 3.484463455 , -0.895107357 ), ( 62 , 3.522702764 , -0.861866551 ), ( 62 , 3.503206917 , -0.836767228 ), ( 62 , 3.662105253 , -0.879118291 ), ( 62 , 3.836114833 , -0.813078442 ), ( 62 , 3.870646226 , -0.668307623 ), ( 62 , 3.801243496 , -0.678401187 ), ( 62 , 3.565263649 , -0.770445917 ), ( 62 , 3.590644202 , -0.72259029 ), ( 62 , 3.630349301 , -0.551862019 ), ( 62 , 3.622024247 , -0.507568642 ), ( 62 , 3.971152911 , -0.677059512 ), ( 62 , 3.87739564 , -0.639401662 ), ( 62 , 4.090504977 , -0.45867286 ), ( 62 , 3.990530218 , -0.310121925 ), ( 62 , 4.018724207 , -0.271366313 ), ( 62 , 4.173772774 , -0.258826689 ), ( 62 , 3.922058737 , -0.087091736 ), ( 62 , 5.344725403 , -1.454043857 ), ( 62 , 5.403148405 , -1.418766376 ), ( 62 , 6.058087983 , -1.38720404 ), ( 62 , 4.896708985 , -1.427822937 ), ( 62 , 4.840359786 , -1.400332561 ), ( 62 , 6.188973816 , -1.341629667 ), ( 62 , 5.998061846 , -1.223008125 ), ( 62 , 5.663809595 , -1.13139631 ), ( 62 , 5.743159458 , -1.010537505 ), ( 62 , 4.929372013 , -1.274016833 ), ( 62 , 5.110254925 , -1.194398918 ), ( 62 , 5.260452868 , -1.175053015 ), ( 62 , 5.299020371 , -1.106810579 ), ( 62 , 4.974451059 , -1.163330421 ), ( 62 , 5.461339289 , -1.089603062 ), ( 62 , 5.612356533 , -0.954000245 ), ( 62 , 5.474162383 , -0.885361069 ), ( 62 , 6.125722429 , -0.939143897 ), ( 62 , 6.112309913 , -0.878023815 ), ( 62 , 5.937689359 , -1.002209221 ), ( 62 , 5.993641119 , -0.848209893 ), ( 62 , 6.139863811 , -0.875408031 ), ( 62 , 6.094093403 , -0.776483503 ), ( 62 , 6.065730608 , -0.708461578 ), ( 62 , 5.658426398 , -0.576794817 ), ( 62 , 5.983637492 , -0.515507421 ), ( 62 , 5.816123087 , -0.459509992 ), ( 62 , 5.914951594 , -0.418724364 ), ( 62 , 4.823772252 , -1.099945714 ), ( 62 , 4.944518549 , -0.906376101 ), ( 62 , 4.830505777 , -0.926946687 ), ( 62 , 4.912811313 , -0.88789812 ), ( 62 , 4.991471915 , -0.890460542 ), ( 62 , 5.004354296 , -0.87830832 ), ( 62 , 4.943812637 , -0.844066634 ), ( 62 , 5.320223763 , -0.830454928 ), ( 62 , 5.19337866 , -0.830034344 ), ( 62 , 5.237148253 , -0.658019316 ), ( 62 , 4.943638447 , -0.813083655 ), ( 62 , 4.962139164 , -0.766499664 ), ( 62 , 4.983539656 , -0.731477708 ), ( 62 , 4.793849897 , -0.738072291 ), ( 62 , 5.083563645 , -0.511552253 ), ( 62 , 5.023555475 , -0.514914579 ), ( 62 , 5.149245994 , -0.408916125 ), ( 62 , 5.1090203 , -0.371971344 ), ( 62 , 5.508513619 , -0.672513022 ), ( 62 , 5.497780182 , -0.630588068 ), ( 62 , 5.5558943 , -0.635710114 ), ( 62 , 5.807771601 , -0.370587151 ), ( 62 , 5.242086377 , -0.396842458 ), ( 62 , 5.391060526 , -0.288434446 ), ( 62 , 5.133167147 , -0.329047136 ), ( 62 , 5.496053387 , -0.332230583 ), ( 62 , 5.597867865 , -0.162656488 ), ( 63 , 0.805621742 , 0.032526027 ), ( 63 , 0.904567236 , 0.222271721 ), ( 63 , 0.890857479 , 0.220425497 ), ( 63 , 0.652706438 , 0.166951922 ), ( 63 , 0.708959444 , 0.187475675 ), ( 63 , 0.834986797 , 0.227729811 ), ( 63 , 1.101843835 , 0.301546176 ), ( 63 , 1.049880339 , 0.301879855 ), ( 63 , 0.909503362 , 0.397991689 ), ( 63 , 0.992007024 , 0.420902813 ), ( 63 , 0.534876038 , 0.235212738 ), ( 63 , 0.572470878 , 0.452684451 ), ( 63 , 0.830998682 , 0.469433146 ), ( 63 , 0.683803932 , 0.55165791 ), ( 63 , 0.855352616 , 0.605423647 ), ( 63 , 0.776839853 , 0.673955567 ), ( 63 , 1.23582272 , 0.420428584 ), ( 63 , 1.246636572 , 0.412384143 ), ( 63 , 1.21905302 , 0.440140683 ), ( 63 , 1.012612305 , 0.543989781 ), ( 63 , 1.45576359 , 0.606073898 ), ( 63 , 1.469887894 , 0.701314529 ), ( 63 , 1.338779986 , 0.75354062 ), ( 63 , 1.083208084 , 0.658445287 ), ( 63 , 0.951221024 , 0.743207854 ), ( 63 , 0.850610746 , 0.74182893 ), ( 63 , 0.808738739 , 0.708292087 ), ( 63 , 0.977852042 , 0.846896215 ), ( 63 , 0.922792308 , 0.858872486 ), ( 63 , 1.307999978 , 0.927736343 ), ( 63 , 1.496744986 , 0.987537369 ), ( 63 , 1.16507314 , 1.005051613 ), ( 63 , 1.337347359 , 1.067603732 ), ( 63 , 0.373481398 , 0.410350638 ), ( 63 , 0.281273601 , 0.517630929 ), ( 63 , 0.29683262 , 0.558714095 ), ( 63 , 0.332992522 , 0.577956706 ), ( 63 , 0.401975541 , 0.607373342 ), ( 63 , 0.573420102 , 0.550238119 ), ( 63 , 0.690696022 , 0.658449914 ), ( 63 , 0.691439403 , 0.664779596 ), ( 63 , 0.678346749 , 0.692269892 ), ( 63 , 0.429917099 , 0.792374152 ), ( 63 , 0.607285078 , 0.811092587 ), ( 63 , 0.49237855 , 0.898404606 ), ( 63 , 0.233309738 , 0.653065839 ), ( 63 , 0.251594379 , 0.800047362 ), ( 63 , 0.003176245 , 0.789819772 ), ( 63 , 0.279426726 , 0.916328241 ), ( 63 , 0.223720367 , 1.078709099 ), ( 63 , 0.014958856 , 1.110736496 ), ( 63 , 0.770365928 , 0.823167281 ), ( 63 , 0.820589464 , 0.911294878 ), ( 63 , 0.645179961 , 0.882601613 ), ( 63 , 0.633847356 , 0.988027616 ), ( 63 , 0.810139587 , 0.978585268 ), ( 63 , 1.471601233 , 1.164075724 ), ( 63 , 1.321412203 , 1.166240205 ), ( 63 , 1.010970943 , 1.195678701 ), ( 63 , 1.268011051 , 1.238160669 ), ( 63 , 1.107183948 , 1.258834708 ), ( 63 , 1.319169815 , 1.296249928 ), ( 63 , 0.457147316 , 0.99639547 ), ( 63 , 0.446349308 , 1.02324617 ), ( 63 , 0.449300768 , 1.07199885 ), ( 63 , 0.374253826 , 1.238831039 ), ( 63 , 0.737076048 , 1.215352163 ), ( 63 , 0.536470286 , 1.35989467 ), ( 63 , 2.28636328 , 0.075651592 ), ( 63 , 2.362836727 , 0.09845329 ), ( 63 , 2.512751268 , 0.250970927 ), ( 63 , 2.092578606 , 0.231117518 ), ( 63 , 2.151097114 , 0.288227268 ), ( 63 , 2.270887589 , 0.341119856 ), ( 63 , 2.087956086 , 0.288304964 ), ( 63 , 2.059247455 , 0.337281769 ), ( 63 , 2.044480445 , 0.403886079 ), ( 63 , 2.211245942 , 0.470093129 ), ( 63 , 2.211263583 , 0.470113107 ), ( 63 , 2.101937148 , 0.437895282 ), ( 63 , 2.401344977 , 0.383910507 ), ( 63 , 2.402647605 , 0.540404578 ), ( 63 , 2.331084856 , 0.53370822 ), ( 63 , 2.292302456 , 0.535776225 ), ( 63 , 2.270252177 , 0.557487548 ), ( 63 , 2.314895388 , 0.580923664 ), ( 63 , 2.856672382 , 0.444897108 ), ( 63 , 2.802072797 , 0.553214604 ), ( 63 , 2.678327872 , 0.473609111 ), ( 63 , 2.654048466 , 0.551588132 ), ( 63 , 2.877824395 , 0.629937309 ), ( 63 , 2.863398167 , 0.733168809 ), ( 63 , 2.542582403 , 0.845277482 ), ( 63 , 2.640563478 , 0.914051664 ), ( 63 , 3.009477929 , 0.990253412 ), ( 63 , 3.056318969 , 1.011776068 ), ( 63 , 2.707518798 , 0.946261551 ), ( 63 , 2.006695092 , 0.558669566 ), ( 63 , 2.203831718 , 0.611062911 ), ( 63 , 2.239942906 , 0.635936164 ), ( 63 , 2.07553871 , 0.618064815 ), ( 63 , 2.20222759 , 0.733130831 ), ( 63 , 2.125659783 , 0.755031672 ), ( 63 , 1.802309953 , 0.624617943 ), ( 63 , 1.828433054 , 0.664123428 ), ( 63 , 1.802604552 , 0.782597516 ), ( 63 , 1.585211257 , 0.748930604 ), ( 63 , 1.630816554 , 0.89312037 ), ( 63 , 1.622131887 , 0.9188579 ), ( 63 , 1.855066142 , 0.833831695 ), ( 63 , 2.062134458 , 0.963581207 ), ( 63 , 1.820463759 , 1.004670825 ), ( 63 , 1.802417809 , 1.037569133 ), ( 63 , 2.446636536 , 0.894779054 ), ( 63 , 2.550823121 , 1.134189058 ), ( 63 , 2.010726737 , 0.996283052 ), ( 63 , 2.10535906 , 1.10113194 ), ( 63 , 1.943274512 , 1.418206959 ), ( 63 , 2.201501061 , 1.438685351 ), ( 63 , 4.083583894 , 0.196621344 ), ( 63 , 4.024673442 , 0.219344209 ), ( 63 , 4.160785291 , 0.280557808 ), ( 63 , 4.276364396 , 0.368827457 ), ( 63 , 4.082113771 , 0.308145925 ), ( 63 , 4.04762819 , 0.438104316 ), ( 63 , 3.646974106 , 0.245333299 ), ( 63 , 3.659359016 , 0.255670887 ), ( 63 , 3.766022802 , 0.442242442 ), ( 63 , 3.986038276 , 0.401147813 ), ( 63 , 4.367723953 , 0.433866509 ), ( 63 , 4.428932624 , 0.449082729 ), ( 63 , 4.677823643 , 0.697825362 ), ( 63 , 4.484521336 , 0.707134399 ), ( 63 , 4.385995838 , 0.754275914 ), ( 63 , 4.032080236 , 0.790128848 ), ( 63 , 4.471667141 , 0.851781123 ), ( 63 , 4.496447633 , 0.914704534 ), ( 63 , 4.596879623 , 1.00458977 ), ( 63 , 4.447779275 , 0.989406993 ), ( 63 , 3.546533184 , 0.424907575 ), ( 63 , 3.670306158 , 0.477988528 ), ( 63 , 3.751570434 , 0.677082551 ), ( 63 , 3.816340426 , 0.639239745 ), ( 63 , 3.539785915 , 0.734894357 ), ( 63 , 3.378150515 , 0.585290868 ), ( 63 , 3.445457528 , 0.653156115 ), ( 63 , 3.390867422 , 0.805930633 ), ( 63 , 3.354060448 , 0.845907281 ), ( 63 , 3.272640836 , 0.899469569 ), ( 63 , 3.272809317 , 1.025689404 ), ( 63 , 3.929804854 , 0.82514895 ), ( 63 , 3.803555971 , 1.051137932 ), ( 63 , 4.228264595 , 1.011209898 ), ( 63 , 4.170574474 , 1.028207502 ), ( 63 , 4.460455615 , 1.127499898 ), ( 63 , 4.45787665 , 1.314180656 ), ( 63 , 3.579469028 , 0.998464171 ), ( 63 , 3.189565036 , 1.426105242 ), ( 63 , 5.453303486 , 0.137257554 ), ( 63 , 5.55660824 , 0.278942255 ), ( 63 , 5.416061494 , 0.254519193 ), ( 63 , 5.703222789 , 0.300090933 ), ( 63 , 5.652470373 , 0.426770168 ), ( 63 , 5.335799154 , 0.253963697 ), ( 63 , 5.651912796 , 0.492137065 ), ( 63 , 5.596844213 , 0.529008226 ), ( 63 , 5.334692644 , 0.545673808 ), ( 63 , 5.399742849 , 0.551044696 ), ( 63 , 5.462908839 , 0.573320455 ), ( 63 , 5.5286241 , 0.676558779 ), ( 63 , 5.511231723 , 0.674698421 ), ( 63 , 5.880767229 , 0.555717162 ), ( 63 , 5.917241489 , 0.620937383 ), ( 63 , 5.946878147 , 0.659781522 ), ( 63 , 5.842222114 , 0.659203743 ), ( 63 , 5.91609132 , 0.69164109 ), ( 63 , 5.863928151 , 0.673251576 ), ( 63 , 6.106285077 , 0.60725548 ), ( 63 , 6.198909319 , 0.640901052 ), ( 63 , 6.15516727 , 0.67478567 ), ( 63 , 6.263801124 , 0.826513815 ), ( 63 , 5.99167127 , 0.701051579 ), ( 63 , 5.95195308 , 0.688796827 ), ( 63 , 6.111857694 , 0.769967873 ), ( 63 , 6.202227387 , 0.864152508 ), ( 63 , 5.854918189 , 0.734402175 ), ( 63 , 5.797452416 , 0.798358596 ), ( 63 , 5.661256913 , 0.780098664 ), ( 63 , 5.683869856 , 0.865686734 ), ( 63 , 6.083526923 , 0.883448193 ), ( 63 , 5.791989658 , 0.930389815 ), ( 63 , 5.966354256 , 1.020722269 ), ( 63 , 6.234761006 , 1.046832315 ), ( 63 , 5.991120876 , 1.048961283 ), ( 63 , 5.10224476 , 0.35394632 ), ( 63 , 5.131875785 , 0.394195052 ), ( 63 , 5.085121 , 0.434733489 ), ( 63 , 5.04396497 , 0.487405969 ), ( 63 , 4.995884821 , 0.536396012 ), ( 63 , 4.982069815 , 0.586801226 ), ( 63 , 4.978203546 , 0.589959202 ), ( 63 , 5.072607662 , 0.584998495 ), ( 63 , 5.306050109 , 0.678895121 ), ( 63 , 5.324361021 , 0.687712963 ), ( 63 , 5.258555323 , 0.671589539 ), ( 63 , 5.189992399 , 0.675618309 ), ( 63 , 5.157272407 , 0.702571456 ), ( 63 , 5.198129697 , 0.826890741 ), ( 63 , 5.290651381 , 0.898206777 ), ( 63 , 4.951827027 , 0.592863288 ), ( 63 , 4.902640976 , 0.638040198 ), ( 63 , 4.970718839 , 0.684471323 ), ( 63 , 4.872784726 , 0.754361721 ), ( 63 , 4.726128979 , 0.845862306 ), ( 63 , 5.121204155 , 0.859788224 ), ( 63 , 5.010950266 , 0.914995017 ), ( 63 , 4.891026307 , 1.095191132 ), ( 63 , 5.565941227 , 0.837303841 ), ( 63 , 5.453765177 , 0.814393828 ), ( 63 , 5.439504319 , 0.812129296 ), ( 63 , 5.388005714 , 0.905026317 ), ( 63 , 5.448536766 , 0.906006441 ), ( 63 , 5.587475217 , 1.060397052 ), ( 63 , 5.786756613 , 0.983378092 ), ( 63 , 5.886798526 , 1.019344228 ), ( 63 , 5.972247803 , 1.098476605 ), ( 63 , 5.747305569 , 1.154642685 ), ( 63 , 5.90481461 , 1.228254697 ), ( 63 , 5.804329075 , 1.258576326 ), ( 63 , 5.259367176 , 0.983352469 ), ( 63 , 5.2157804 , 1.016648474 ), ( 63 , 5.256679112 , 1.115098854 ), ( 63 , 5.109466614 , 1.239001876 ), ( 63 , 5.815792022 , 1.279454461 ), ( 63 , 0.029835097 , -0.40330839 ), ( 63 , 6.254164561 , -0.422881639 ), ( 63 , 0.177006278 , -0.415516348 ), ( 63 , 0.216232521 , -0.40774785 ), ( 63 , 0.198431572 , -0.22483743 ), ( 63 , 0.191265513 , -0.209670308 ), ( 63 , 6.027428809 , -0.397779315 ), ( 63 , 6.159706072 , -0.372966808 ), ( 63 , 6.098482475 , -0.204428754 ), ( 63 , 6.233187345 , -0.111361793 ), ( 63 , 0.033754371 , -0.04448262 ), ( 63 , 0.286294361 , -0.174176195 ), ( 63 , 0.366725676 , -0.139763837 ), ( 63 , 0.63256512 , -0.048521539 ), ( 63 , 0.706008328 , -0.056092764 ), ( 63 , 0.106871839 , -0.038734992 ), ( 63 , 0.28308419 , 0.098718637 ), ( 63 , 0.325967137 , 0.122085331 ), ( 63 , 5.89175241 , -0.254573155 ), ( 63 , 5.971226902 , -0.184226847 ), ( 63 , 5.896193865 , -0.114417406 ), ( 63 , 5.6996854 , -0.161894694 ), ( 63 , 5.804756724 , -0.067970137 ), ( 63 , 5.733250025 , 0.119814123 ), ( 63 , 6.015755249 , 0.12810053 ), ( 63 , 5.850915785 , 0.142888258 ), ( 63 , 5.768414686 , 0.191529264 ), ( 63 , 6.252990285 , 0.036486949 ), ( 63 , 0.072285106 , 0.143816063 ), ( 63 , 0.079789991 , 0.195581977 ), ( 63 , 0.306267465 , 0.273558686 ), ( 63 , 0.363969448 , 0.357249825 ), ( 63 , 0.12309911 , 0.287018966 ), ( 63 , 6.120327649 , 0.363528254 ), ( 63 , 5.991004792 , 0.293930969 ), ( 63 , 6.048913865 , 0.323203513 ), ( 63 , 5.933174493 , 0.343499352 ), ( 63 , 0.066220255 , 0.476184082 ), ( 63 , 0.02890764 , 0.506499249 ), ( 63 , 0.021435406 , 0.60493473 ), ( 63 , 0.037866486 , 0.639248846 ), ( 63 , 1.489852085 , -0.58295444 ), ( 63 , 1.466828771 , -0.501049726 ), ( 63 , 1.768842161 , -0.409493817 ), ( 63 , 1.757397163 , -0.391789788 ), ( 63 , 1.730861182 , -0.394700577 ), ( 63 , 1.853472545 , -0.38452975 ), ( 63 , 1.941015461 , -0.331826645 ), ( 63 , 1.915638188 , -0.336504367 ), ( 63 , 1.876912385 , -0.326125365 ), ( 63 , 1.611535596 , -0.316367749 ), ( 63 , 1.735207143 , -0.226648305 ), ( 63 , 1.429463432 , -0.373072687 ), ( 63 , 1.393168239 , -0.323232295 ), ( 63 , 1.480345672 , -0.311530889 ), ( 63 , 1.37008123 , -0.254938107 ), ( 63 , 1.325877678 , -0.250807418 ), ( 63 , 1.652884514 , -0.262233341 ), ( 63 , 1.572079958 , -0.225154118 ), ( 63 , 1.687504997 , -0.131109695 ), ( 63 , 1.463633307 , -0.094542496 ), ( 63 , 1.55154992 , -0.083579928 ), ( 63 , 1.966946633 , -0.170638543 ), ( 63 , 1.928739424 , -0.156718143 ), ( 63 , 2.182611706 , -0.015880973 ), ( 63 , 2.180926367 , 0.068904143 ), ( 63 , 1.792037661 , -0.140341548 ), ( 63 , 1.810699718 , -0.048932037 ), ( 63 , 1.672497927 , 0.065701698 ), ( 63 , 1.754000092 , 0.110748905 ), ( 63 , 2.082459911 , 0.150814791 ), ( 63 , 2.046536835 , 0.233382271 ), ( 63 , 1.829698401 , 0.127704233 ), ( 63 , 1.826694989 , 0.133031442 ), ( 63 , 1.813294776 , 0.145286666 ), ( 63 , 1.849437124 , 0.21981018 ), ( 63 , 1.981305739 , 0.184446013 ), ( 63 , 1.94903857 , 0.192139252 ), ( 63 , 1.939326106 , 0.270826108 ), ( 63 , 1.184338214 , -0.238141752 ), ( 63 , 1.192793479 , -0.188236083 ), ( 63 , 1.032507961 , -0.170183241 ), ( 63 , 1.07312659 , -0.15456921 ), ( 63 , 1.196579486 , -0.119346968 ), ( 63 , 1.204398831 , -0.063035636 ), ( 63 , 1.368140209 , -0.14220565 ), ( 63 , 1.375787996 , -0.024583854 ), ( 63 , 1.464324436 , -0.056772916 ), ( 63 , 1.547818398 , 0.016905562 ), ( 63 , 1.420734387 , -0.026027898 ), ( 63 , 1.431276822 , 0.022658854 ), ( 63 , 1.249669825 , -0.051572717 ), ( 63 , 1.352867597 , -0.009872811 ), ( 63 , 1.332539489 , 0.02055301 ), ( 63 , 1.220803751 , -0.018370062 ), ( 63 , 1.25988209 , 0.06262967 ), ( 63 , 1.443323397 , 0.103816186 ), ( 63 , 0.959903816 , -0.01956975 ), ( 63 , 1.106694988 , -0.020067096 ), ( 63 , 1.342325788 , 0.165267465 ), ( 63 , 1.19468987 , 0.164294838 ), ( 63 , 1.138311294 , 0.241978379 ), ( 63 , 1.712115546 , 0.203736916 ), ( 63 , 1.751287602 , 0.286192621 ), ( 63 , 1.741353359 , 0.384508595 ), ( 63 , 1.83026259 , 0.45228615 ), ( 63 , 1.827294941 , 0.455212116 ), ( 63 , 1.392963796 , 0.351411375 ), ( 63 , 1.264206724 , 0.277580104 ), ( 63 , 1.376456864 , 0.388943157 ), ( 63 , 1.400576998 , 0.487943762 ), ( 63 , 1.57818538 , 0.390969991 ), ( 63 , 1.641993019 , 0.418355044 ), ( 63 , 1.598610136 , 0.515088138 ), ( 63 , 1.489420768 , 0.514649262 ), ( 63 , 1.438493663 , 0.50939421 ), ( 63 , 1.583546823 , 0.569574715 ), ( 63 , 1.59757852 , 0.617596712 ), ( 63 , 1.53880801 , 0.591972513 ), ( 63 , 3.185404129 , -0.605712737 ), ( 63 , 3.252014807 , -0.484311688 ), ( 63 , 3.29858864 , -0.35827827 ), ( 63 , 3.287195871 , -0.345447302 ), ( 63 , 2.890307395 , -0.468313204 ), ( 63 , 3.099384796 , -0.27687111 ), ( 63 , 3.071431558 , -0.116543536 ), ( 63 , 3.609443204 , -0.169467937 ), ( 63 , 3.862385644 , -0.024740893 ), ( 63 , 3.799392406 , 0.083290556 ), ( 63 , 3.68233473 , 0.085537747 ), ( 63 , 3.26314026 , -0.080551472 ), ( 63 , 3.366800471 , 0.053353359 ), ( 63 , 3.307716368 , 0.05728807 ), ( 63 , 3.346840702 , 0.103846855 ), ( 63 , 3.493674372 , 0.051350967 ), ( 63 , 3.587533308 , 0.146394684 ), ( 63 , 2.776281109 , -0.285261806 ), ( 63 , 2.661371332 , -0.211105048 ), ( 63 , 2.688458398 , -0.1955366 ), ( 63 , 3.093664144 , -0.005561501 ), ( 63 , 2.981450251 , 0.002303482 ), ( 63 , 2.851055075 , -0.039367486 ), ( 63 , 2.471263285 , -0.025553506 ), ( 63 , 2.498828156 , 0.032531557 ), ( 63 , 2.71838101 , 0.114178702 ), ( 63 , 2.609824109 , 0.145103032 ), ( 63 , 3.2784106 , 0.132721437 ), ( 63 , 3.322976826 , 0.181972695 ), ( 63 , 3.376469941 , 0.216739486 ), ( 63 , 3.370479005 , 0.281388823 ), ( 63 , 3.406177146 , 0.320676682 ), ( 63 , 3.251781803 , 0.417586078 ), ( 63 , 3.225889895 , 0.402029711 ), ( 63 , 3.288069224 , 0.423816944 ), ( 63 , 2.811023113 , 0.344854149 ), ( 63 , 3.072734965 , 0.440143672 ), ( 63 , 3.222442642 , 0.527931101 ), ( 63 , 3.10301361 , 0.582506352 ), ( 63 , 4.703500181 , -0.683064013 ), ( 63 , 4.720263853 , -0.634915897 ), ( 63 , 4.685154992 , -0.607131479 ), ( 63 , 4.681062383 , -0.595416874 ), ( 63 , 4.835009868 , -0.467006213 ), ( 63 , 4.629380004 , -0.56224917 ), ( 63 , 4.662053404 , -0.470802281 ), ( 63 , 4.895044075 , -0.415974994 ), ( 63 , 4.98755542 , -0.335901814 ), ( 63 , 4.477626343 , -0.376382591 ), ( 63 , 4.558004685 , -0.321940198 ), ( 63 , 4.404605086 , -0.273455978 ), ( 63 , 4.537372285 , -0.309913649 ), ( 63 , 4.56856065 , -0.218391713 ), ( 63 , 5.057087167 , -0.271198357 ), ( 63 , 5.188155107 , -0.189732301 ), ( 63 , 5.284717425 , -0.154328269 ), ( 63 , 5.322042249 , -0.018819653 ), ( 63 , 5.485467854 , 0.008086879 ), ( 63 , 5.017210765 , -0.007472742 ), ( 63 , 4.967184406 , 0.108894352 ), ( 63 , 4.833857883 , 0.065423708 ), ( 63 , 5.105854399 , 0.050685534 ), ( 63 , 5.143557374 , 0.059018232 ), ( 63 , 5.198009065 , 0.168070782 ), ( 63 , 5.201288644 , 0.202912014 ), ( 63 , 5.158379627 , 0.212811548 ), ( 63 , 5.094464691 , 0.249275752 ), ( 63 , 5.080512535 , 0.295617003 ), ( 63 , 4.271721418 , -0.259579403 ), ( 63 , 4.245261699 , -0.073668884 ), ( 63 , 4.262629754 , -0.06899811 ), ( 63 , 4.523510253 , -0.108996344 ), ( 63 , 4.583208377 , -0.018562771 ), ( 63 , 4.425181906 , -0.028149688 ), ( 63 , 4.368528217 , -0.017460157 ), ( 63 , 4.205198302 , 0.087038632 ), ( 63 , 4.305880556 , 0.040977264 ), ( 63 , 4.213367006 , 0.14130642 ), ( 63 , 4.165539239 , 0.149755081 ), ( 63 , 4.303058651 , 0.199100013 ), ( 63 , 4.348990516 , 0.270477673 ), ( 63 , 4.661502678 , 0.066396819 ), ( 63 , 4.699008849 , 0.113232055 ), ( 63 , 4.716233102 , 0.109401479 ), ( 63 , 4.620600438 , 0.232645172 ), ( 63 , 4.639814272 , 0.249501251 ), ( 63 , 4.643829762 , 0.251504953 ), ( 63 , 4.630284073 , 0.264911967 ), ( 63 , 4.825487562 , 0.261207709 ), ( 63 , 5.008908346 , 0.294110251 ), ( 63 , 5.084899641 , 0.353806273 ), ( 63 , 5.009356919 , 0.378726911 ), ( 63 , 4.923024676 , 0.410408914 ), ( 63 , 4.467903327 , 0.236780422 ), ( 63 , 4.457357266 , 0.260921617 ), ( 63 , 4.498814641 , 0.423031292 ), ( 63 , 4.821360488 , 0.478128025 ), ( 63 , 4.799078421 , 0.517776572 ), ( 63 , 4.624940618 , 0.544587123 ), ( 63 , 4.715033588 , 0.579685119 ), ( 63 , 4.70674134 , 0.633335453 ), ( 63 , 1.214579795 , -1.355354327 ), ( 63 , 0.505520181 , -1.367433563 ), ( 63 , 0.408618916 , -1.370184221 ), ( 63 , 0.890293819 , -1.215176262 ), ( 63 , 1.33586024 , -1.274740192 ), ( 63 , 0.52223632 , -1.15307823 ), ( 63 , 0.646100379 , -1.122241913 ), ( 63 , 0.751891324 , -1.09797883 ), ( 63 , 0.707474189 , -0.812016146 ), ( 63 , 1.441052279 , -1.115741315 ), ( 63 , 1.417082379 , -0.913092661 ), ( 63 , 1.369598649 , -0.908109656 ), ( 63 , 1.417757859 , -0.771883028 ), ( 63 , 1.498822465 , -0.687779887 ), ( 63 , 1.247570335 , -0.68690492 ), ( 63 , 0.899704622 , -0.726698368 ), ( 63 , 0.254699959 , -1.059346349 ), ( 63 , 0.270659758 , -0.994877253 ), ( 63 , 0.155145593 , -0.956828328 ), ( 63 , 0.196391336 , -0.937501378 ), ( 63 , 0.569524611 , -0.886964299 ), ( 63 , 0.506832413 , -0.869808347 ), ( 63 , 0.63081914 , -0.712787228 ), ( 63 , 0.494760607 , -0.673599822 ), ( 63 , 0.173954888 , -0.781840699 ), ( 63 , 0.13292267 , -0.714528515 ), ( 63 , 0.442690275 , -0.665536512 ), ( 63 , 0.783821555 , -0.567356467 ), ( 63 , 0.933513783 , -0.542441925 ), ( 63 , 0.882576358 , -0.44659146 ), ( 63 , 1.062087196 , -0.351575754 ), ( 63 , 0.561824495 , -0.310307396 ), ( 63 , 0.752877388 , -0.222896484 ), ( 63 , 0.857812831 , -0.159773361 ), ( 63 , 0.834759144 , -0.066526987 ), ( 63 , 2.237035352 , -1.280308623 ), ( 63 , 2.789310402 , -1.300154949 ), ( 63 , 2.811419563 , -1.23673552 ), ( 63 , 2.825293176 , -1.211917068 ), ( 63 , 2.955358856 , -1.183744517 ), ( 63 , 2.789819106 , -1.118960562 ), ( 63 , 2.529641336 , -1.098559029 ), ( 63 , 2.701256506 , -1.128812173 ), ( 63 , 2.741490046 , -1.102429414 ), ( 63 , 2.676253085 , -1.076149346 ), ( 63 , 2.819937268 , -1.057718638 ), ( 63 , 2.688034776 , -1.045510902 ), ( 63 , 2.556571171 , -1.026137336 ), ( 63 , 2.186578331 , -1.118863211 ), ( 63 , 2.131091411 , -1.11353378 ), ( 63 , 2.016597043 , -1.023301572 ), ( 63 , 2.412230823 , -1.063196757 ), ( 63 , 2.33393933 , -1.016471744 ), ( 63 , 2.56853009 , -0.984571457 ), ( 63 , 2.369668128 , -0.9346292 ), ( 63 , 2.374065924 , -0.828008749 ), ( 63 , 2.320561137 , -0.770578316 ), ( 63 , 3.035586749 , -1.069675048 ), ( 63 , 2.908100499 , -1.024071791 ), ( 63 , 2.936273738 , -0.868057849 ), ( 63 , 2.811644657 , -1.047080755 ), ( 63 , 2.798162104 , -1.041558301 ), ( 63 , 2.780606191 , -0.939951288 ), ( 63 , 2.822087119 , -0.862544027 ), ( 63 , 2.771459606 , -0.762087054 ), ( 63 , 3.138016212 , -0.902279386 ), ( 63 , 2.932885974 , -0.807506057 ), ( 63 , 2.977459096 , -0.779222173 ), ( 63 , 3.138000727 , -0.799924239 ), ( 63 , 3.039830219 , -0.649911102 ), ( 63 , 2.821407961 , -0.753861115 ), ( 63 , 2.787455956 , -0.746189627 ), ( 63 , 2.954831704 , -0.663474743 ), ( 63 , 2.602131223 , -0.895985127 ), ( 63 , 2.651131744 , -0.842309698 ), ( 63 , 2.515121617 , -0.850870853 ), ( 63 , 2.471712414 , -0.706887315 ), ( 63 , 2.414795251 , -0.673986531 ), ( 63 , 2.445615867 , -0.655926932 ), ( 63 , 2.542458284 , -0.61962082 ), ( 63 , 2.554142847 , -0.527136746 ), ( 63 , 2.659507383 , -0.625816577 ), ( 63 , 2.719306215 , -0.526432064 ), ( 63 , 2.670557476 , -0.499268527 ), ( 63 , 2.676123887 , -0.471738418 ), ( 63 , 1.736617675 , -1.073951318 ), ( 63 , 1.983826016 , -0.898398837 ), ( 63 , 2.072606629 , -0.917750833 ), ( 63 , 2.139522076 , -0.859353245 ), ( 63 , 2.230428466 , -0.835429171 ), ( 63 , 2.1777018 , -0.841209866 ), ( 63 , 2.159206852 , -0.81133089 ), ( 63 , 2.238518377 , -0.798537699 ), ( 63 , 2.228145792 , -0.78081284 ), ( 63 , 2.304470855 , -0.74112621 ), ( 63 , 2.081150752 , -0.740130683 ), ( 63 , 2.023336261 , -0.666746751 ), ( 63 , 2.132037931 , -0.657660435 ), ( 63 , 1.858941682 , -0.669905494 ), ( 63 , 1.617333 , -0.790318927 ), ( 63 , 1.67875144 , -0.703088537 ), ( 63 , 1.732376234 , -0.665776645 ), ( 63 , 1.820781451 , -0.619714849 ), ( 63 , 1.973839984 , -0.627640971 ), ( 63 , 1.958487299 , -0.555858841 ), ( 63 , 1.827045217 , -0.541016906 ), ( 63 , 1.862590207 , -0.43564377 ), ( 63 , 1.910263512 , -0.467705506 ), ( 63 , 1.901483301 , -0.414344224 ), ( 63 , 2.298686888 , -0.604283747 ), ( 63 , 2.442582101 , -0.595216392 ), ( 63 , 2.603936861 , -0.463375536 ), ( 63 , 2.511365372 , -0.341798733 ), ( 63 , 2.583055096 , -0.288594501 ), ( 63 , 2.170252181 , -0.284229836 ), ( 63 , 2.133433782 , -0.197914612 ), ( 63 , 2.354728518 , -0.335255502 ), ( 63 , 2.423457071 , -0.262236409 ), ( 63 , 2.529809416 , -0.184485577 ), ( 63 , 2.500322211 , -0.148450962 ), ( 63 , 2.30419079 , -0.114477209 ), ( 63 , 3.151700028 , -1.494555934 ), ( 63 , 3.485430147 , -1.395847636 ), ( 63 , 3.84841834 , -1.344104878 ), ( 63 , 3.79440422 , -1.339178468 ), ( 63 , 3.574423451 , -1.320932958 ), ( 63 , 4.061464556 , -1.250603131 ), ( 63 , 3.904736537 , -1.21930542 ), ( 63 , 4.702331299 , -1.32955628 ), ( 63 , 4.221084828 , -0.980717374 ), ( 63 , 3.487673286 , -1.257264759 ), ( 63 , 3.711069643 , -1.227062328 ), ( 63 , 3.338089293 , -1.201323544 ), ( 63 , 3.197369009 , -1.224379872 ), ( 63 , 3.549979602 , -1.145509235 ), ( 63 , 3.704186036 , -1.034575735 ), ( 63 , 3.493198326 , -1.043233059 ), ( 63 , 3.968113942 , -1.11078115 ), ( 63 , 3.91232437 , -1.088464584 ), ( 63 , 3.988015684 , -1.070639403 ), ( 63 , 3.854858784 , -1.09897672 ), ( 63 , 3.848168572 , -1.023044105 ), ( 63 , 3.861192555 , -1.02063008 ), ( 63 , 4.05114186 , -0.900554459 ), ( 63 , 3.690376659 , -0.954163489 ), ( 63 , 3.76701848 , -0.886143793 ), ( 63 , 3.957240478 , -0.90809238 ), ( 63 , 3.924602862 , -0.753282669 ), ( 63 , 4.494678488 , -1.076440577 ), ( 63 , 4.318614739 , -1.008038333 ), ( 63 , 4.676361319 , -0.795883521 ), ( 63 , 4.681329294 , -0.733000757 ), ( 63 , 4.472791607 , -0.79416611 ), ( 63 , 4.475935478 , -0.769776122 ), ( 63 , 4.37972996 , -0.717668697 ), ( 63 , 4.140097255 , -0.915221531 ), ( 63 , 4.112956866 , -0.863758064 ), ( 63 , 4.151784943 , -0.821370097 ), ( 63 , 4.05943566 , -0.731628199 ), ( 63 , 4.076855871 , -0.686777658 ), ( 63 , 4.006220493 , -0.716652272 ), ( 63 , 4.066913584 , -0.674098942 ), ( 63 , 4.200388187 , -0.508516864 ), ( 63 , 4.325710182 , -0.463173406 ), ( 63 , 3.16730697 , -1.144008855 ), ( 63 , 3.162328237 , -1.034165836 ), ( 63 , 3.361167071 , -0.845777835 ), ( 63 , 3.521664508 , -0.857720008 ), ( 63 , 3.553846452 , -0.842509127 ), ( 63 , 3.503935662 , -0.847580961 ), ( 63 , 3.368872016 , -0.83940335 ), ( 63 , 3.791134597 , -0.837622414 ), ( 63 , 3.782261445 , -0.695934886 ), ( 63 , 3.824019096 , -0.691107151 ), ( 63 , 3.832411963 , -0.677089268 ), ( 63 , 3.176846707 , -0.885994021 ), ( 63 , 3.251272935 , -0.742017471 ), ( 63 , 3.272339622 , -0.728431368 ), ( 63 , 3.333483115 , -0.634413171 ), ( 63 , 3.640198337 , -0.498641864 ), ( 63 , 3.935574042 , -0.599678478 ), ( 63 , 3.911781695 , -0.569623476 ), ( 63 , 3.809889459 , -0.536083871 ), ( 63 , 3.914895468 , -0.50890083 ), ( 63 , 4.098710569 , -0.404050553 ), ( 63 , 4.223105326 , -0.4269512 ), ( 63 , 4.060527441 , -0.361785021 ), ( 63 , 4.065401712 , -0.351948255 ), ( 63 , 3.871258642 , -0.372189079 ), ( 63 , 3.826548476 , -0.214740544 ), ( 63 , 4.96619965 , -1.45599271 ), ( 63 , 5.645766767 , -1.443092403 ), ( 63 , 5.66774059 , -1.386537904 ), ( 63 , 5.87241661 , -1.309269188 ), ( 63 , 5.608189719 , -1.253129303 ), ( 63 , 5.392475874 , -1.214939217 ), ( 63 , 6.215310777 , -1.230279064 ), ( 63 , 5.576367518 , -1.128910036 ), ( 63 , 5.753048476 , -1.029952575 ), ( 63 , 5.046084576 , -1.207611381 ), ( 63 , 5.155799078 , -1.149385061 ), ( 63 , 5.048401677 , -1.138441138 ), ( 63 , 4.790997806 , -1.190827444 ), ( 63 , 5.212746809 , -1.067630466 ), ( 63 , 6.083077915 , -1.094372924 ), ( 63 , 5.916172045 , -1.01026319 ), ( 63 , 5.945984743 , -0.772269784 ), ( 63 , 6.158617356 , -0.782670879 ), ( 63 , 6.213524251 , -0.786848521 ), ( 63 , 5.918804366 , -0.70830969 ), ( 63 , 6.015204189 , -0.620010806 ), ( 63 , 5.82758534 , -0.775825188 ), ( 63 , 5.585743391 , -0.785779826 ), ( 63 , 5.746654402 , -0.658806174 ), ( 63 , 6.003314839 , -0.552105361 ), ( 63 , 5.87381304 , -0.41333688 ), ( 63 , 4.798221302 , -1.115064278 ), ( 63 , 4.909582682 , -1.066315088 ), ( 63 , 5.029912077 , -0.881159339 ), ( 63 , 5.348539498 , -0.712038296 ), ( 63 , 5.147392436 , -0.790259161 ), ( 63 , 5.242302626 , -0.71234925 ), ( 63 , 4.760705298 , -0.829264096 ), ( 63 , 5.022323432 , -0.680761544 ), ( 63 , 5.004154829 , -0.65996498 ), ( 63 , 4.856458951 , -0.696256797 ), ( 63 , 4.858057056 , -0.675795026 ), ( 63 , 4.967002619 , -0.541685769 ), ( 63 , 5.006974734 , -0.499807446 ), ( 63 , 5.147955079 , -0.408892984 ), ( 63 , 5.010155088 , -0.430353423 ), ( 63 , 5.723370825 , -0.325040916 ), ( 63 , 5.686404792 , -0.342451868 ), ( 63 , 5.563718776 , -0.302732821 ), ( 63 , 5.379422786 , -0.435357357 ), ( 63 , 5.371561059 , -0.262783702 ), ( 63 , 5.307460277 , -0.21532544 ), ( 63 , 5.501547736 , -0.305973875 ), ( 63 , 5.670002964 , -0.184607744 ), ( 63 , 5.385199769 , -0.239469718 ), ( 64 , 0.772642961 , 0.078560445 ), ( 64 , 0.699278845 , 0.106673505 ), ( 64 , 0.676614973 , 0.130379177 ), ( 64 , 0.755713446 , 0.287683056 ), ( 64 , 0.957445964 , 0.288615792 ), ( 64 , 0.934372438 , 0.311203944 ), ( 64 , 0.976469519 , 0.343212882 ), ( 64 , 0.986324554 , 0.428087118 ), ( 64 , 1.019164529 , 0.448246197 ), ( 64 , 0.6584586 , 0.308980573 ), ( 64 , 0.480587597 , 0.388777361 ), ( 64 , 0.641931164 , 0.471446077 ), ( 64 , 0.714947417 , 0.447474299 ), ( 64 , 0.874525639 , 0.447889522 ), ( 64 , 0.829676613 , 0.485540355 ), ( 64 , 0.854274879 , 0.573460206 ), ( 64 , 0.68553126 , 0.574061477 ), ( 64 , 0.728928995 , 0.620539002 ), ( 64 , 1.151900715 , 0.424131076 ), ( 64 , 1.327510911 , 0.532228799 ), ( 64 , 1.135187173 , 0.55768655 ), ( 64 , 1.027059015 , 0.541851977 ), ( 64 , 1.426174283 , 0.580534507 ), ( 64 , 1.426391254 , 0.618844783 ), ( 64 , 0.994035984 , 0.561911632 ), ( 64 , 1.052638415 , 0.645587982 ), ( 64 , 0.927859165 , 0.782879958 ), ( 64 , 0.85554075 , 0.791435357 ), ( 64 , 0.924227355 , 0.86221168 ), ( 64 , 1.27916225 , 0.922250618 ), ( 64 , 1.489372611 , 0.933357102 ), ( 64 , 1.569919534 , 0.952019703 ), ( 64 , 1.257164685 , 0.970436976 ), ( 64 , 1.088099274 , 0.956933073 ), ( 64 , 1.375280752 , 1.036823348 ), ( 64 , 1.501594473 , 1.072968039 ), ( 64 , 1.336058836 , 1.030113476 ), ( 64 , 0.442047991 , 0.44934253 ), ( 64 , 0.38009342 , 0.600000155 ), ( 64 , 0.686559307 , 0.696316836 ), ( 64 , 0.470369759 , 0.80685458 ), ( 64 , 0.476728607 , 0.835958551 ), ( 64 , 0.05230436 , 0.84041917 ), ( 64 , 0.005765805 , 0.872341346 ), ( 64 , 0.336346363 , 0.783682741 ), ( 64 , 0.316642329 , 0.791291631 ), ( 64 , 0.234732773 , 0.919599155 ), ( 64 , 0.027384967 , 1.019917263 ), ( 64 , 0.002226716 , 1.039509689 ), ( 64 , 0.819384885 , 0.825692719 ), ( 64 , 0.91709727 , 1.03612547 ), ( 64 , 0.739636994 , 0.99630915 ), ( 64 , 0.769736344 , 1.122812961 ), ( 64 , 1.539926753 , 1.195048518 ), ( 64 , 1.031922163 , 1.253522774 ), ( 64 , 1.482341841 , 1.309765907 ), ( 64 , 1.372662285 , 1.33470078 ), ( 64 , 0.319246323 , 1.076975391 ), ( 64 , 0.353828911 , 1.128494488 ), ( 64 , 0.150172238 , 1.165013115 ), ( 64 , 0.264082394 , 1.238886172 ), ( 64 , 0.145400827 , 1.238866954 ), ( 64 , 0.135088495 , 1.34423803 ), ( 64 , 0.070837486 , 1.343043512 ), ( 64 , 0.35776119 , 1.330614281 ), ( 64 , 0.333822115 , 1.394699988 ), ( 64 , 0.332692275 , 1.520973243 ), ( 64 , 2.408224846 , 0.09544428 ), ( 64 , 2.341434589 , 0.073942025 ), ( 64 , 2.32304618 , 0.093204921 ), ( 64 , 2.434103896 , 0.200732582 ), ( 64 , 2.346159794 , 0.163846432 ), ( 64 , 2.19876629 , 0.185561677 ), ( 64 , 2.343702055 , 0.299210919 ), ( 64 , 2.735831459 , 0.337974017 ), ( 64 , 2.132388771 , 0.23807716 ), ( 64 , 2.147691494 , 0.308003156 ), ( 64 , 2.25203669 , 0.267270527 ), ( 64 , 2.315840809 , 0.328680955 ), ( 64 , 2.449802521 , 0.574248256 ), ( 64 , 2.347377839 , 0.527683104 ), ( 64 , 2.831584021 , 0.513402377 ), ( 64 , 2.776636756 , 0.63402048 ), ( 64 , 2.995092939 , 0.583826301 ), ( 64 , 3.045081033 , 0.883451424 ), ( 64 , 2.502398176 , 0.636813359 ), ( 64 , 1.86494729 , 0.491776339 ), ( 64 , 1.763693827 , 0.630225431 ), ( 64 , 1.806202718 , 0.67203604 ), ( 64 , 1.803032912 , 0.670847237 ), ( 64 , 1.870136898 , 0.653538492 ), ( 64 , 1.603284835 , 0.730492721 ), ( 64 , 1.590367597 , 0.900120241 ), ( 64 , 1.781142347 , 0.972208738 ), ( 64 , 1.781179669 , 0.972213905 ), ( 64 , 2.282021681 , 0.818567254 ), ( 64 , 2.326087299 , 1.030723905 ), ( 64 , 2.385508472 , 1.035755548 ), ( 64 , 2.68400472 , 1.046945898 ), ( 64 , 2.884554413 , 1.106901098 ), ( 64 , 2.831061779 , 1.136777255 ), ( 64 , 2.970987027 , 1.171122517 ), ( 64 , 2.932958129 , 1.191569773 ), ( 64 , 2.576058809 , 1.144814349 ), ( 64 , 1.952283186 , 1.157700805 ), ( 64 , 1.736171966 , 1.286228535 ), ( 64 , 2.513757715 , 1.297104951 ), ( 64 , 2.267657153 , 1.285068222 ), ( 64 , 2.255011914 , 1.30417202 ), ( 64 , 2.879522744 , 1.35734303 ), ( 64 , 2.42324076 , 1.46923761 ), ( 64 , 1.57665512 , 1.486708204 ), ( 64 , 3.960466157 , 0.095956469 ), ( 64 , 3.771224987 , 0.1410905 ), ( 64 , 3.965783197 , 0.231006952 ), ( 64 , 4.220944531 , 0.380871589 ), ( 64 , 4.039940877 , 0.340001655 ), ( 64 , 3.863039021 , 0.329606932 ), ( 64 , 3.729262272 , 0.381761914 ), ( 64 , 4.012073562 , 0.567492832 ), ( 64 , 3.814411008 , 0.567834572 ), ( 64 , 4.410097644 , 0.568174097 ), ( 64 , 4.257676719 , 0.478600898 ), ( 64 , 4.288895217 , 0.564316587 ), ( 64 , 4.606388473 , 0.651036022 ), ( 64 , 4.70746609 , 0.793713033 ), ( 64 , 4.40554128 , 0.758002933 ), ( 64 , 4.096348669 , 0.605191563 ), ( 64 , 3.986300296 , 0.667839187 ), ( 64 , 3.988830729 , 0.736028091 ), ( 64 , 4.320119765 , 0.85452525 ), ( 64 , 4.486736539 , 0.887368158 ), ( 64 , 4.456172842 , 1.058525186 ), ( 64 , 3.594305605 , 0.396192732 ), ( 64 , 3.579047502 , 0.541273258 ), ( 64 , 3.648481892 , 0.559079929 ), ( 64 , 3.437830322 , 0.480934574 ), ( 64 , 3.507672595 , 0.646362569 ), ( 64 , 3.553338382 , 0.67700302 ), ( 64 , 3.714284332 , 0.563674241 ), ( 64 , 3.742943568 , 0.837788389 ), ( 64 , 3.312991282 , 0.62747971 ), ( 64 , 3.310760333 , 0.713395843 ), ( 64 , 3.499660319 , 0.766260253 ), ( 64 , 3.525517639 , 0.920581505 ), ( 64 , 3.276142146 , 0.926383569 ), ( 64 , 3.20583188 , 0.932607975 ), ( 64 , 3.16628354 , 1.098381345 ), ( 64 , 3.881983091 , 0.850350599 ), ( 64 , 3.848706027 , 1.069218454 ), ( 64 , 4.349870702 , 1.100817794 ), ( 64 , 4.242990734 , 1.171881956 ), ( 64 , 4.434352611 , 1.276319542 ), ( 64 , 3.431240294 , 1.082829588 ), ( 64 , 3.142895935 , 1.41114961 ), ( 64 , 3.335494199 , 1.407097064 ), ( 64 , 3.161002164 , 1.493788222 ), ( 64 , 3.215551371 , 1.508588403 ), ( 64 , 3.208434682 , 1.530662174 ), ( 64 , 5.444550476 , 0.057709877 ), ( 64 , 5.454093208 , 0.096771253 ), ( 64 , 5.534738744 , 0.121987639 ), ( 64 , 5.804614863 , 0.342358364 ), ( 64 , 5.862863385 , 0.363872594 ), ( 64 , 5.666877151 , 0.445037862 ), ( 64 , 5.324746236 , 0.254282162 ), ( 64 , 5.385067623 , 0.366260122 ), ( 64 , 5.30724111 , 0.376965461 ), ( 64 , 5.375489307 , 0.450379616 ), ( 64 , 5.244827531 , 0.435255233 ), ( 64 , 5.525680558 , 0.469916399 ), ( 64 , 5.559621925 , 0.521870187 ), ( 64 , 5.393677344 , 0.451738807 ), ( 64 , 5.54605765 , 0.633547244 ), ( 64 , 5.897343567 , 0.51561451 ), ( 64 , 5.80698285 , 0.533248334 ), ( 64 , 5.876345689 , 0.653515284 ), ( 64 , 6.053941958 , 0.572908985 ), ( 64 , 6.173139657 , 0.663645415 ), ( 64 , 6.025367185 , 0.675578375 ), ( 64 , 6.033395885 , 0.768969541 ), ( 64 , 6.099639921 , 0.793930127 ), ( 64 , 6.152830036 , 0.857535546 ), ( 64 , 5.514668145 , 0.726542172 ), ( 64 , 5.681654076 , 0.798759632 ), ( 64 , 5.990281987 , 0.879860219 ), ( 64 , 6.052660942 , 0.921825099 ), ( 64 , 5.944358783 , 0.94088413 ), ( 64 , 5.91608684 , 0.978615936 ), ( 64 , 6.033308644 , 0.96405712 ), ( 64 , 6.052690669 , 1.042439437 ), ( 64 , 6.017678585 , 1.04396235 ), ( 64 , 6.233669962 , 1.13230605 ), ( 64 , 5.191970911 , 0.496365666 ), ( 64 , 5.136330874 , 0.511969092 ), ( 64 , 5.177441803 , 0.574013539 ), ( 64 , 5.174274294 , 0.611087047 ), ( 64 , 5.17342235 , 0.62990842 ), ( 64 , 5.057361669 , 0.582740542 ), ( 64 , 5.135388402 , 0.669923862 ), ( 64 , 5.307848701 , 0.646756072 ), ( 64 , 5.3119959 , 0.691037724 ), ( 64 , 5.399147829 , 0.668956144 ), ( 64 , 5.414911005 , 0.682115076 ), ( 64 , 5.202276607 , 0.635863961 ), ( 64 , 5.151714089 , 0.751849827 ), ( 64 , 5.295823866 , 0.757106989 ), ( 64 , 5.318138668 , 0.808473762 ), ( 64 , 5.32296621 , 0.817465996 ), ( 64 , 5.304585244 , 0.87673132 ), ( 64 , 5.181211587 , 0.836140354 ), ( 64 , 5.221821394 , 0.888417858 ), ( 64 , 5.258302494 , 0.904771912 ), ( 64 , 4.894290659 , 0.551832177 ), ( 64 , 4.896236476 , 0.606436873 ), ( 64 , 5.001607509 , 0.722806607 ), ( 64 , 4.787034262 , 0.714488919 ), ( 64 , 5.156838542 , 0.881677417 ), ( 64 , 4.816239458 , 0.930273803 ), ( 64 , 5.495216883 , 0.738701914 ), ( 64 , 5.510049977 , 0.800213726 ), ( 64 , 5.514031219 , 0.817909018 ), ( 64 , 5.635047891 , 0.918389619 ), ( 64 , 5.662051003 , 0.943214087 ), ( 64 , 5.675471291 , 0.95769992 ), ( 64 , 5.37279707 , 0.912980958 ), ( 64 , 5.424605192 , 0.996826627 ), ( 64 , 5.351144279 , 0.988532468 ), ( 64 , 5.374628325 , 0.990994429 ), ( 64 , 5.507169548 , 0.989079325 ), ( 64 , 5.617429724 , 1.042833684 ), ( 64 , 5.539154964 , 1.104718717 ), ( 64 , 5.451054458 , 1.117747752 ), ( 64 , 5.684344436 , 1.034471508 ), ( 64 , 5.712972306 , 1.069408642 ), ( 64 , 5.739266943 , 1.07410693 ), ( 64 , 5.652394884 , 1.190653254 ), ( 64 , 5.702921403 , 1.224360828 ), ( 64 , 6.096945158 , 1.314215741 ), ( 64 , 5.162889114 , 1.012574264 ), ( 64 , 5.178150629 , 1.19446781 ), ( 64 , 5.060446547 , 1.123832617 ), ( 64 , 4.969290203 , 1.213551357 ), ( 64 , 5.068397801 , 1.336217045 ), ( 64 , 0.065334685 , -0.609195062 ), ( 64 , 0.01893479 , -0.510836932 ), ( 64 , 0.059948806 , -0.458758416 ), ( 64 , 6.21547901 , -0.45809279 ), ( 64 , 0.288534554 , -0.418752222 ), ( 64 , 0.293292359 , -0.418818882 ), ( 64 , 0.072891289 , -0.352732312 ), ( 64 , 0.01292025 , -0.349857147 ), ( 64 , 0.037344502 , -0.306802399 ), ( 64 , 6.126697139 , -0.326160626 ), ( 64 , 6.044132094 , -0.298093642 ), ( 64 , 6.064262925 , -0.253257872 ), ( 64 , 6.019615622 , -0.228130373 ), ( 64 , 6.085392949 , -0.186557932 ), ( 64 , 6.14796494 , -0.161726789 ), ( 64 , 0.035786996 , -0.042720975 ), ( 64 , 0.369426559 , -0.273328993 ), ( 64 , 0.383015688 , -0.190266483 ), ( 64 , 0.426016729 , -0.164117201 ), ( 64 , 0.351081942 , -0.19616653 ), ( 64 , 0.236900886 , -0.152559209 ), ( 64 , 0.370060665 , -0.049720628 ), ( 64 , 0.692085386 , 0.060096124 ), ( 64 , 0.198108191 , -0.080789723 ), ( 64 , 0.348215711 , -0.008885598 ), ( 64 , 0.116176075 , -0.00086442 ), ( 64 , 0.077656312 , 0.029475129 ), ( 64 , 0.438879744 , 0.152905666 ), ( 64 , 0.32183066 , 0.132258835 ), ( 64 , 0.261051981 , 0.113153037 ), ( 64 , 0.290426432 , 0.226128723 ), ( 64 , 5.927012341 , -0.137838719 ), ( 64 , 5.948249807 , -0.121527425 ), ( 64 , 5.937606418 , -0.062039194 ), ( 64 , 5.896187936 , -0.050815936 ), ( 64 , 6.111613161 , -0.10312055 ), ( 64 , 6.013788612 , -0.041809165 ), ( 64 , 6.024147089 , 0.0032458 ), ( 64 , 5.751832724 , -0.094695444 ), ( 64 , 5.736021568 , -0.057622174 ), ( 64 , 5.919306403 , 0.204145566 ), ( 64 , 0.010483985 , 0.156325652 ), ( 64 , 0.161963503 , 0.419120137 ), ( 64 , 0.21768119 , 0.483634645 ), ( 64 , 0.217660089 , 0.48364348 ), ( 64 , 0.158543725 , 0.475684004 ), ( 64 , 6.169409297 , 0.363740977 ), ( 64 , 6.072934244 , 0.468559731 ), ( 64 , 6.249973193 , 0.378231375 ), ( 64 , 6.268747102 , 0.395283054 ), ( 64 , 0.058461201 , 0.471018879 ), ( 64 , 6.159773946 , 0.495732644 ), ( 64 , 1.545633481 , -0.508718111 ), ( 64 , 1.533606769 , -0.400155972 ), ( 64 , 1.83400349 , -0.386050053 ), ( 64 , 1.626524309 , -0.310026301 ), ( 64 , 1.502872984 , -0.391377623 ), ( 64 , 1.493307167 , -0.30596202 ), ( 64 , 1.199978662 , -0.347686847 ), ( 64 , 1.382320338 , -0.299189678 ), ( 64 , 1.581983326 , -0.253021633 ), ( 64 , 1.514639434 , -0.283409164 ), ( 64 , 1.673764516 , -0.172346097 ), ( 64 , 1.684158039 , -0.137794155 ), ( 64 , 1.486888955 , -0.181665565 ), ( 64 , 1.481410132 , -0.169413756 ), ( 64 , 1.467169573 , -0.09857483 ), ( 64 , 1.547139762 , -0.070942803 ), ( 64 , 1.960698872 , -0.261803687 ), ( 64 , 2.036558795 , -0.221226097 ), ( 64 , 2.054779175 , -0.194234752 ), ( 64 , 1.861390654 , -0.216315158 ), ( 64 , 1.858021686 , -0.186053306 ), ( 64 , 1.849863504 , -0.176692955 ), ( 64 , 1.929939997 , -0.051996737 ), ( 64 , 2.182901195 , -0.09303087 ), ( 64 , 2.09760378 , -0.050298818 ), ( 64 , 2.020612945 , 0.003303166 ), ( 64 , 2.05421319 , 0.057196685 ), ( 64 , 2.078679509 , 0.078287125 ), ( 64 , 1.833893124 , -0.093664864 ), ( 64 , 1.688669072 , -0.076020746 ), ( 64 , 1.738088281 , -0.044398517 ), ( 64 , 1.694188057 , 0.033380672 ), ( 64 , 1.69840961 , 0.046180043 ), ( 64 , 1.664298077 , 0.039589885 ), ( 64 , 1.79618996 , 0.053089191 ), ( 64 , 1.735167112 , 0.047190538 ), ( 64 , 1.75890133 , 0.052948659 ), ( 64 , 1.747652105 , 0.111199376 ), ( 64 , 1.885497879 , 0.095544969 ), ( 64 , 2.086096173 , 0.125898402 ), ( 64 , 2.102447727 , 0.155581499 ), ( 64 , 1.821366479 , 0.207825707 ), ( 64 , 1.948058347 , 0.185145814 ), ( 64 , 1.920360141 , 0.264291774 ), ( 64 , 1.264057409 , -0.240346935 ), ( 64 , 1.46397349 , -0.076166883 ), ( 64 , 1.398183368 , -0.09368137 ), ( 64 , 1.435308289 , -0.057726237 ), ( 64 , 1.312627187 , -0.100554869 ), ( 64 , 1.451387746 , 0.000206943 ), ( 64 , 1.457174571 , 0.024567964 ), ( 64 , 1.311890232 , -0.036059299 ), ( 64 , 1.301065292 , -0.038617942 ), ( 64 , 1.2971527 , -0.018630364 ), ( 64 , 1.317724692 , 0.028080905 ), ( 64 , 1.38179317 , 0.033986379 ), ( 64 , 1.402030457 , 0.070020316 ), ( 64 , 1.411608919 , 0.092907354 ), ( 64 , 1.425268244 , 0.119876787 ), ( 64 , 1.169638752 , 0.032438843 ), ( 64 , 1.273374278 , 0.238323546 ), ( 64 , 1.116027833 , 0.268790245 ), ( 64 , 1.722515821 , 0.132164539 ), ( 64 , 1.694340856 , 0.179831637 ), ( 64 , 1.652270618 , 0.157898335 ), ( 64 , 1.683683673 , 0.194181999 ), ( 64 , 1.545586975 , 0.184766847 ), ( 64 , 1.750945212 , 0.192043161 ), ( 64 , 1.777578579 , 0.317531711 ), ( 64 , 1.70678453 , 0.295629112 ), ( 64 , 1.71177604 , 0.310398692 ), ( 64 , 1.433700024 , 0.238741375 ), ( 64 , 1.481138664 , 0.379830885 ), ( 64 , 1.287069239 , 0.340080645 ), ( 64 , 1.292673511 , 0.429213452 ), ( 64 , 1.644878788 , 0.414356921 ), ( 64 , 1.55579874 , 0.505137622 ), ( 64 , 1.663293997 , 0.515578194 ), ( 64 , 1.411018952 , 0.505037866 ), ( 64 , 1.538773786 , 0.690708024 ), ( 64 , 3.123768428 , -0.692714842 ), ( 64 , 3.20099413 , -0.589799603 ), ( 64 , 3.085388074 , -0.626696726 ), ( 64 , 3.04132291 , -0.575762279 ), ( 64 , 3.02110126 , -0.466817343 ), ( 64 , 3.136816377 , -0.452197732 ), ( 64 , 3.350564182 , -0.433738711 ), ( 64 , 3.018497621 , -0.362614154 ), ( 64 , 3.063308292 , -0.354206643 ), ( 64 , 3.053620997 , -0.290078679 ), ( 64 , 3.103885406 , -0.212711879 ), ( 64 , 3.090927853 , -0.180010833 ), ( 64 , 3.887724014 , -0.004493501 ), ( 64 , 3.7666865 , 0.021611464 ), ( 64 , 3.349100192 , -0.109991449 ), ( 64 , 3.279667538 , -0.088180785 ), ( 64 , 3.47973126 , -0.01179999 ), ( 64 , 3.534298074 , 0.125295176 ), ( 64 , 3.676210641 , 0.169045726 ), ( 64 , 2.705214696 , -0.158118103 ), ( 64 , 2.634063631 , -0.167095182 ), ( 64 , 3.114700565 , 0.009636608 ), ( 64 , 2.845882713 , 0.017888645 ), ( 64 , 2.992507268 , 0.067367304 ), ( 64 , 2.482890256 , -0.021937132 ), ( 64 , 2.576536714 , 0.075807001 ), ( 64 , 2.807140908 , 0.08285844 ), ( 64 , 2.647620011 , 0.097937789 ), ( 64 , 3.137464026 , 0.009265753 ), ( 64 , 3.046307404 , 0.155052116 ), ( 64 , 3.101966968 , 0.214312859 ), ( 64 , 3.187523864 , 0.293377359 ), ( 64 , 3.460989673 , 0.326841984 ), ( 64 , 3.018283442 , 0.250684853 ), ( 64 , 2.930964273 , 0.251328521 ), ( 64 , 2.863560791 , 0.390111347 ), ( 64 , 2.860675366 , 0.431949994 ), ( 64 , 4.710996171 , -0.724086194 ), ( 64 , 4.656194491 , -0.665186302 ), ( 64 , 4.686074054 , -0.607917295 ), ( 64 , 4.658981682 , -0.392312409 ), ( 64 , 4.934224614 , -0.386807314 ), ( 64 , 5.016962499 , -0.345649123 ), ( 64 , 4.85351738 , -0.255594125 ), ( 64 , 4.568055798 , -0.452802321 ), ( 64 , 4.560129506 , -0.423130818 ), ( 64 , 4.619653367 , -0.382449347 ), ( 64 , 4.812900045 , -0.178357242 ), ( 64 , 4.788322953 , -0.170326051 ), ( 64 , 4.682108925 , -0.190236996 ), ( 64 , 4.64163147 , -0.12356377 ), ( 64 , 4.782051456 , -0.063145725 ), ( 64 , 5.212577327 , -0.143766822 ), ( 64 , 4.943779582 , -0.167122537 ), ( 64 , 5.348162628 , -0.04888048 ), ( 64 , 5.174336362 , -0.050326156 ), ( 64 , 5.197524023 , -0.04295729 ), ( 64 , 5.23327453 , 0.024052918 ), ( 64 , 5.359387419 , 0.05126371 ), ( 64 , 4.898274294 , -0.12345963 ), ( 64 , 4.90374144 , -0.119004085 ), ( 64 , 4.858028617 , -0.103182657 ), ( 64 , 4.817367529 , -0.062543685 ), ( 64 , 4.782606664 , 0.041492077 ), ( 64 , 4.958598485 , 0.043129662 ), ( 64 , 4.922021683 , 0.074028477 ), ( 64 , 4.852517037 , 0.063872517 ), ( 64 , 4.910802582 , 0.095995422 ), ( 64 , 5.186695645 , 0.206223301 ), ( 64 , 4.43939058 , -0.191357664 ), ( 64 , 4.625989975 , -0.037565755 ), ( 64 , 4.408574938 , -0.046332807 ), ( 64 , 4.480624908 , -0.028908685 ), ( 64 , 4.42994061 , 0.23770788 ), ( 64 , 4.353720432 , 0.238876123 ), ( 64 , 4.343417055 , 0.297706563 ), ( 64 , 4.713530891 , 0.010986222 ), ( 64 , 4.858073247 , 0.144307009 ), ( 64 , 4.591298296 , 0.208220709 ), ( 64 , 4.701260202 , 0.192762315 ), ( 64 , 4.687232324 , 0.194244681 ), ( 64 , 4.671925605 , 0.208502675 ), ( 64 , 4.749748157 , 0.249315316 ), ( 64 , 4.756656537 , 0.287569256 ), ( 64 , 4.916111755 , 0.326476728 ), ( 64 , 5.077958102 , 0.353680039 ), ( 64 , 4.98674256 , 0.343149257 ), ( 64 , 4.714400348 , 0.340440027 ), ( 64 , 4.726537383 , 0.342313992 ), ( 64 , 4.770325896 , 0.381890307 ), ( 64 , 4.907307679 , 0.411710843 ), ( 64 , 4.557768368 , 0.272378212 ), ( 64 , 4.563624353 , 0.295269385 ), ( 64 , 4.564100118 , 0.469124911 ), ( 64 , 4.736398711 , 0.377804814 ), ( 64 , 4.732766999 , 0.41785789 ), ( 64 , 4.828811829 , 0.461625136 ), ( 64 , 4.719366357 , 0.581393541 ), ( 64 , 0.819488048 , -1.208899417 ), ( 64 , 1.278845645 , -1.263719569 ), ( 64 , 1.426788816 , -1.197691373 ), ( 64 , 1.030053043 , -1.107646673 ), ( 64 , 1.118543047 , -1.063750488 ), ( 64 , 0.336265139 , -1.158859315 ), ( 64 , 0.671557929 , -0.891753784 ), ( 64 , 0.831016132 , -0.850574519 ), ( 64 , 1.515043305 , -0.94877368 ), ( 64 , 1.175203652 , -0.811840198 ), ( 64 , 1.476069984 , -0.883849853 ), ( 64 , 1.466282019 , -0.825781632 ), ( 64 , 1.326014009 , -0.728567623 ), ( 64 , 1.210045842 , -0.730814705 ), ( 64 , 1.286802108 , -0.691647008 ), ( 64 , 1.397770054 , -0.605609317 ), ( 64 , 1.328356663 , -0.623166775 ), ( 64 , 0.898547687 , -0.626938284 ), ( 64 , 0.194315277 , -1.090787873 ), ( 64 , 0.043064138 , -1.087282028 ), ( 64 , 0.404065139 , -0.86792129 ), ( 64 , 0.481454096 , -0.834547544 ), ( 64 , 0.745248146 , -0.696949999 ), ( 64 , 0.468092222 , -0.72884211 ), ( 64 , 0.413835429 , -0.556630951 ), ( 64 , 0.244023111 , -0.484780455 ), ( 64 , 0.774681297 , -0.666556005 ), ( 64 , 0.844882924 , -0.520180612 ), ( 64 , 0.773244401 , -0.521073539 ), ( 64 , 0.648343134 , -0.542842062 ), ( 64 , 0.781507378 , -0.504532487 ), ( 64 , 0.741100827 , -0.428673847 ), ( 64 , 0.924569759 , -0.447053064 ), ( 64 , 1.067627546 , -0.355732161 ), ( 64 , 1.126907077 , -0.361547083 ), ( 64 , 1.017595197 , -0.321741242 ), ( 64 , 0.656883937 , -0.393493822 ), ( 64 , 0.670508974 , -0.349109014 ), ( 64 , 0.957412538 , -0.182177187 ), ( 64 , 0.887042019 , -0.136059264 ), ( 64 , 0.754194908 , -0.164775764 ), ( 64 , 0.794809163 , -0.113368126 ), ( 64 , 0.78909928 , -0.050240428 ), ( 64 , 2.960866276 , -1.390484833 ), ( 64 , 2.091175713 , -1.278354401 ), ( 64 , 2.409474664 , -1.338027566 ), ( 64 , 2.47754066 , -1.25281146 ), ( 64 , 2.867846043 , -1.310737618 ), ( 64 , 2.966369129 , -1.273363013 ), ( 64 , 2.967349187 , -1.256538458 ), ( 64 , 2.811879749 , -1.264371097 ), ( 64 , 2.852278525 , -1.234300297 ), ( 64 , 2.822200501 , -1.207938333 ), ( 64 , 2.826957065 , -1.121596514 ), ( 64 , 2.907723333 , -1.131671799 ), ( 64 , 2.540392682 , -1.167883888 ), ( 64 , 2.434124756 , -1.170256791 ), ( 64 , 2.652653323 , -1.085967749 ), ( 64 , 2.809415419 , -1.049253041 ), ( 64 , 2.66856308 , -1.026735046 ), ( 64 , 2.626569984 , -1.00093987 ), ( 64 , 2.623222853 , -0.979069502 ), ( 64 , 1.766823306 , -1.229300212 ), ( 64 , 1.701915162 , -1.144374378 ), ( 64 , 2.019726455 , -1.016301482 ), ( 64 , 2.473059681 , -1.039844281 ), ( 64 , 2.265514717 , -1.052732913 ), ( 64 , 2.555493561 , -0.998083831 ), ( 64 , 2.587454775 , -0.966444285 ), ( 64 , 2.516615096 , -0.924029431 ), ( 64 , 2.263455047 , -0.926599138 ), ( 64 , 2.223095547 , -0.946171476 ), ( 64 , 2.39959627 , -0.909010744 ), ( 64 , 3.139090937 , -1.096606779 ), ( 64 , 2.948348838 , -1.001049616 ), ( 64 , 2.82628932 , -1.045020248 ), ( 64 , 2.787096649 , -1.034324191 ), ( 64 , 2.843920833 , -0.999590218 ), ( 64 , 2.672010328 , -0.910414841 ), ( 64 , 2.740322738 , -0.86229944 ), ( 64 , 3.127310292 , -0.821565082 ), ( 64 , 2.859946623 , -0.750848764 ), ( 64 , 2.732139577 , -0.745932179 ), ( 64 , 2.728328481 , -0.741197554 ), ( 64 , 2.684957178 , -0.637353445 ), ( 64 , 2.604464355 , -0.479529095 ), ( 64 , 1.864320871 , -1.042246975 ), ( 64 , 1.763710111 , -0.954616075 ), ( 64 , 1.716690847 , -0.913313099 ), ( 64 , 1.847472777 , -0.914993651 ), ( 64 , 2.056140558 , -0.824080838 ), ( 64 , 2.154436694 , -0.812950903 ), ( 64 , 2.320966206 , -0.71535013 ), ( 64 , 2.311995195 , -0.683144907 ), ( 64 , 2.231452818 , -0.681796259 ), ( 64 , 2.239827308 , -0.669693805 ), ( 64 , 2.013071573 , -0.778977729 ), ( 64 , 2.042656321 , -0.709521115 ), ( 64 , 2.047437459 , -0.710367013 ), ( 64 , 2.029291011 , -0.661267542 ), ( 64 , 2.150503452 , -0.66190688 ), ( 64 , 2.142513289 , -0.650874127 ), ( 64 , 2.148744629 , -0.645583211 ), ( 64 , 2.164121327 , -0.62662816 ), ( 64 , 2.179443048 , -0.603711079 ), ( 64 , 2.134405868 , -0.618805259 ), ( 64 , 2.119474753 , -0.585896462 ), ( 64 , 1.700889711 , -0.876841493 ), ( 64 , 1.842448146 , -0.757540773 ), ( 64 , 1.801117347 , -0.767517374 ), ( 64 , 1.696060374 , -0.716890027 ), ( 64 , 1.706050687 , -0.714121974 ), ( 64 , 1.771742125 , -0.690106657 ), ( 64 , 1.760117147 , -0.684049762 ), ( 64 , 2.000770962 , -0.676868974 ), ( 64 , 2.071115702 , -0.608191222 ), ( 64 , 1.90657039 , -0.539257716 ), ( 64 , 1.892752942 , -0.542511197 ), ( 64 , 1.835684124 , -0.497241858 ), ( 64 , 2.004726581 , -0.468849525 ), ( 64 , 2.055130478 , -0.428107517 ), ( 64 , 2.013203629 , -0.389847557 ), ( 64 , 2.281798199 , -0.627326557 ), ( 64 , 2.338437293 , -0.415701937 ), ( 64 , 2.447505608 , -0.272595439 ), ( 64 , 2.532185305 , -0.187957657 ), ( 64 , 2.183648227 , -0.400111148 ), ( 64 , 2.132470081 , -0.355404074 ), ( 64 , 2.051172974 , -0.340749409 ), ( 64 , 2.193790237 , -0.227854799 ), ( 64 , 2.323528702 , -0.230958464 ), ( 64 , 2.495496392 , -0.180994029 ), ( 64 , 2.521375801 , -0.164486836 ), ( 64 , 2.178389894 , -0.177421231 ), ( 64 , 2.257814039 , -0.086114026 ), ( 64 , 3.771500856 , -1.445975717 ), ( 64 , 4.098452331 , -1.359941615 ), ( 64 , 3.439760018 , -1.369144466 ), ( 64 , 3.889897524 , -1.346976047 ), ( 64 , 3.881684967 , -1.203165109 ), ( 64 , 4.102349357 , -1.225714474 ), ( 64 , 4.367008896 , -1.054998392 ), ( 64 , 3.572498912 , -1.229498167 ), ( 64 , 3.777151936 , -1.154937249 ), ( 64 , 3.455246013 , -1.104846046 ), ( 64 , 3.693200358 , -1.042239178 ), ( 64 , 3.961664525 , -1.139272173 ), ( 64 , 3.953345813 , -0.853177368 ), ( 64 , 4.668249051 , -1.077127047 ), ( 64 , 4.512651721 , -0.992892836 ), ( 64 , 4.455462611 , -0.987075585 ), ( 64 , 4.535713208 , -0.87378148 ), ( 64 , 4.207793126 , -0.937424462 ), ( 64 , 4.246746613 , -0.936739268 ), ( 64 , 4.264476353 , -0.9265388 ), ( 64 , 4.366554179 , -0.898449168 ), ( 64 , 4.297451764 , -0.791499777 ), ( 64 , 4.376672387 , -0.80407877 ), ( 64 , 4.567801591 , -0.800118742 ), ( 64 , 4.578991817 , -0.672246691 ), ( 64 , 4.429015018 , -0.734623852 ), ( 64 , 4.424326158 , -0.732939559 ), ( 64 , 4.530620735 , -0.568159764 ), ( 64 , 4.19784023 , -0.892227796 ), ( 64 , 4.175964241 , -0.84060004 ), ( 64 , 4.25597768 , -0.748736922 ), ( 64 , 4.012188991 , -0.647485134 ), ( 64 , 4.42702914 , -0.533850299 ), ( 64 , 4.379227952 , -0.560357293 ), ( 64 , 4.172364229 , -0.554767717 ), ( 64 , 4.248820846 , -0.426248256 ), ( 64 , 3.296379368 , -1.079347556 ), ( 64 , 3.45980218 , -1.044009517 ), ( 64 , 3.596536489 , -0.890337554 ), ( 64 , 3.266157768 , -0.984529642 ), ( 64 , 3.390165409 , -0.952730927 ), ( 64 , 3.302055658 , -0.878520462 ), ( 64 , 3.698695993 , -0.85004906 ), ( 64 , 3.69216311 , -0.752096171 ), ( 64 , 3.670936649 , -0.702005195 ), ( 64 , 3.191840369 , -0.896397118 ), ( 64 , 3.160254263 , -0.898366067 ), ( 64 , 3.258421604 , -0.85370606 ), ( 64 , 3.464285014 , -0.752916932 ), ( 64 , 3.459444345 , -0.745251108 ), ( 64 , 3.543420533 , -0.670190165 ), ( 64 , 3.469523051 , -0.634803497 ), ( 64 , 3.504373748 , -0.579272245 ), ( 64 , 3.63839031 , -0.616360132 ), ( 64 , 3.920908865 , -0.696521291 ), ( 64 , 3.912131533 , -0.687941471 ), ( 64 , 3.923637359 , -0.661154734 ), ( 64 , 4.008533068 , -0.544706388 ), ( 64 , 3.847811582 , -0.539887215 ), ( 64 , 3.984978756 , -0.419026823 ), ( 64 , 3.955153782 , -0.384534205 ), ( 64 , 4.251974916 , -0.368401415 ), ( 64 , 4.01816004 , -0.316935816 ), ( 64 , 4.152309689 , -0.246678534 ), ( 64 , 4.172390851 , -0.251326504 ), ( 64 , 3.682140731 , -0.391329799 ), ( 64 , 3.654113157 , -0.401819681 ), ( 64 , 3.739643128 , -0.324382693 ), ( 64 , 3.936338325 , -0.132214063 ), ( 64 , 4.835046805 , -1.47283682 ), ( 64 , 5.914265104 , -1.374824413 ), ( 64 , 5.811551668 , -1.328480044 ), ( 64 , 5.547319784 , -1.266140962 ), ( 64 , 5.504182427 , -1.19048117 ), ( 64 , 6.058890968 , -1.284320356 ), ( 64 , 5.974664458 , -1.227800058 ), ( 64 , 6.10138864 , -1.177592041 ), ( 64 , 5.987214551 , -1.102855209 ), ( 64 , 5.952771965 , -1.055915036 ), ( 64 , 5.231126336 , -1.200142366 ), ( 64 , 5.148163378 , -1.163886566 ), ( 64 , 5.395857531 , -1.101678419 ), ( 64 , 4.897292599 , -1.128237537 ), ( 64 , 5.284525906 , -1.003990162 ), ( 64 , 5.141888931 , -1.012007613 ), ( 64 , 5.672296294 , -0.913836297 ), ( 64 , 5.269086744 , -0.9602063 ), ( 64 , 6.121528061 , -1.048172531 ), ( 64 , 6.052996843 , -0.88465255 ), ( 64 , 6.222206357 , -0.701322519 ), ( 64 , 6.12504872 , -0.752661737 ), ( 64 , 5.823576118 , -0.722342118 ), ( 64 , 5.604031194 , -0.813581816 ), ( 64 , 5.977691269 , -0.572566154 ), ( 64 , 5.94445464 , -0.512449384 ), ( 64 , 5.79759618 , -0.578149474 ), ( 64 , 5.832129252 , -0.452009687 ), ( 64 , 5.833761983 , -0.403880883 ), ( 64 , 5.104555682 , -0.967649054 ), ( 64 , 5.107613274 , -0.961853271 ), ( 64 , 5.080474485 , -0.763094425 ), ( 64 , 5.330534325 , -0.87268482 ), ( 64 , 5.237815155 , -0.861336757 ), ( 64 , 5.237917598 , -0.751246037 ), ( 64 , 4.934820806 , -0.71667958 ), ( 64 , 4.963600364 , -0.695041357 ), ( 64 , 4.978865617 , -0.646849432 ), ( 64 , 4.823042769 , -0.628178974 ), ( 64 , 4.941975781 , -0.51277768 ), ( 64 , 5.042070527 , -0.422021731 ), ( 64 , 5.566643602 , -0.631996881 ), ( 64 , 5.649996497 , -0.518296907 ), ( 64 , 5.387789184 , -0.531864996 ), ( 64 , 5.371021228 , -0.508112626 ), ( 64 , 5.754047523 , -0.369712242 ), ( 64 , 5.539472197 , -0.358797865 ), ( 64 , 5.714571931 , -0.222053628 ), ( 64 , 5.364804576 , -0.39081025 ), ( 64 , 5.211081799 , -0.41790031 ), ( 64 , 5.57294695 , -0.231762101 ), ( 64 , 5.500254053 , -0.082575353 ), ( 64 , 5.510850812 , -0.01613968 ), ( 65 , 0.793569271 , 0.093135288 ), ( 65 , 0.823125416 , 0.147857111 ), ( 65 , 0.689470295 , 0.134302806 ), ( 65 , 0.950321954 , 0.269310542 ), ( 65 , 0.821844704 , 0.328033815 ), ( 65 , 0.955572437 , 0.365044596 ), ( 65 , 1.036025434 , 0.426940391 ), ( 65 , 0.564567121 , 0.300596625 ), ( 65 , 0.539786526 , 0.318576814 ), ( 65 , 0.457839756 , 0.350504358 ), ( 65 , 0.606352092 , 0.404354071 ), ( 65 , 0.800689526 , 0.493401294 ), ( 65 , 0.862472509 , 0.54326238 ), ( 65 , 0.728561108 , 0.62803029 ), ( 65 , 1.175177152 , 0.478290832 ), ( 65 , 1.173153609 , 0.529906216 ), ( 65 , 1.112069492 , 0.655242737 ), ( 65 , 1.43124097 , 0.589262397 ), ( 65 , 1.335240891 , 0.627207828 ), ( 65 , 1.390470213 , 0.706247942 ), ( 65 , 1.455076104 , 0.734939353 ), ( 65 , 1.531296498 , 0.899095361 ), ( 65 , 1.083058774 , 0.753825232 ), ( 65 , 0.895162437 , 0.720076381 ), ( 65 , 1.569764402 , 0.965520167 ), ( 65 , 1.076052574 , 0.942616634 ), ( 65 , 1.367982678 , 1.094166826 ), ( 65 , 1.560267708 , 1.153593091 ), ( 65 , 0.45306765 , 0.561856759 ), ( 65 , 0.318487603 , 0.524715791 ), ( 65 , 0.288794939 , 0.561670266 ), ( 65 , 0.375919533 , 0.603519419 ), ( 65 , 0.364916689 , 0.597718055 ), ( 65 , 0.383019689 , 0.703991535 ), ( 65 , 0.655712189 , 0.590505098 ), ( 65 , 0.50161573 , 0.648009791 ), ( 65 , 0.501334449 , 0.710379561 ), ( 65 , 0.608132839 , 0.854442928 ), ( 65 , 0.126293016 , 0.644020641 ), ( 65 , 0.381550365 , 0.717353718 ), ( 65 , 0.087641623 , 0.852861233 ), ( 65 , 0.341078607 , 0.827629531 ), ( 65 , 0.240356996 , 0.849599205 ), ( 65 , 0.271868266 , 0.890726148 ), ( 65 , 0.282658944 , 0.890287805 ), ( 65 , 0.363733243 , 1.014779551 ), ( 65 , 0.222366993 , 0.898984821 ), ( 65 , 0.245298885 , 1.012229003 ), ( 65 , 0.802613036 , 0.835112607 ), ( 65 , 0.756387948 , 0.847704638 ), ( 65 , 0.771628808 , 0.894674908 ), ( 65 , 1.000644428 , 0.996898954 ), ( 65 , 0.958857289 , 0.984069499 ), ( 65 , 0.932388083 , 1.010004153 ), ( 65 , 0.931733394 , 1.025641569 ), ( 65 , 0.75426589 , 0.924981709 ), ( 65 , 0.627717764 , 0.966298834 ), ( 65 , 0.567800919 , 0.939733834 ), ( 65 , 0.597172721 , 0.995801746 ), ( 65 , 0.749457413 , 1.017776201 ), ( 65 , 0.909292535 , 1.051657267 ), ( 65 , 1.088471439 , 1.045592806 ), ( 65 , 1.351498476 , 1.133036741 ), ( 65 , 0.833434243 , 1.132651613 ), ( 65 , 0.861867275 , 1.145955497 ), ( 65 , 1.327387351 , 1.287421051 ), ( 65 , 0.496594041 , 0.97036021 ), ( 65 , 0.573718188 , 1.00610448 ), ( 65 , 0.543968485 , 1.136267234 ), ( 65 , 0.248396972 , 1.200357847 ), ( 65 , 0.203570341 , 1.209958531 ), ( 65 , 0.58188065 , 1.292022977 ), ( 65 , 0.957389438 , 1.3219068 ), ( 65 , 0.579579687 , 1.390881204 ), ( 65 , 0.350465423 , 1.353874904 ), ( 65 , 0.118362412 , 1.397173239 ), ( 65 , 0.301933127 , 1.396460818 ), ( 65 , 0.173497077 , 1.439797178 ), ( 65 , 0.409934443 , 1.553611972 ), ( 65 , 2.260572781 , 0.167107226 ), ( 65 , 2.236921489 , 0.175684252 ), ( 65 , 2.241656792 , 0.231377989 ), ( 65 , 2.317016937 , 0.267928601 ), ( 65 , 2.563153151 , 0.201903245 ), ( 65 , 2.642776092 , 0.275017362 ), ( 65 , 2.448935633 , 0.268280072 ), ( 65 , 2.46763045 , 0.289470114 ), ( 65 , 2.415625653 , 0.371460751 ), ( 65 , 2.504479048 , 0.409338207 ), ( 65 , 2.53788693 , 0.45226111 ), ( 65 , 2.097894409 , 0.345857192 ), ( 65 , 2.029623218 , 0.354581904 ), ( 65 , 2.021828656 , 0.390946618 ), ( 65 , 2.501509219 , 0.495109939 ), ( 65 , 2.323364765 , 0.493214511 ), ( 65 , 2.377644971 , 0.565074859 ), ( 65 , 2.436611992 , 0.617217136 ), ( 65 , 2.35843267 , 0.656319955 ), ( 65 , 2.363515911 , 0.693122952 ), ( 65 , 2.697294946 , 0.478491624 ), ( 65 , 2.447771278 , 0.666507703 ), ( 65 , 2.876726582 , 0.905517613 ), ( 65 , 3.061848565 , 0.962934066 ), ( 65 , 2.765161694 , 0.933701992 ), ( 65 , 2.974994461 , 0.996144797 ), ( 65 , 3.128003233 , 1.074231052 ), ( 65 , 1.999448329 , 0.425172464 ), ( 65 , 2.214876401 , 0.796752376 ), ( 65 , 2.135339713 , 0.740545103 ), ( 65 , 2.070340332 , 0.827041642 ), ( 65 , 1.717888737 , 0.576378456 ), ( 65 , 1.759422481 , 0.648341393 ), ( 65 , 1.811877909 , 0.799812841 ), ( 65 , 1.57216508 , 0.778272772 ), ( 65 , 1.692308093 , 0.827372942 ), ( 65 , 1.763627051 , 0.93016515 ), ( 65 , 2.464971549 , 0.900133297 ), ( 65 , 2.544315061 , 0.948821571 ), ( 65 , 2.23645564 , 0.927019906 ), ( 65 , 2.174078459 , 0.944982248 ), ( 65 , 2.265289566 , 1.046130359 ), ( 65 , 2.596423324 , 1.066677224 ), ( 65 , 2.468486194 , 1.115975637 ), ( 65 , 2.163513534 , 1.053841128 ), ( 65 , 1.929838003 , 1.045489025 ), ( 65 , 1.593298051 , 1.319221967 ), ( 65 , 2.554803083 , 1.3637077 ), ( 65 , 2.405095203 , 1.410728708 ), ( 65 , 2.168118811 , 1.467080369 ), ( 65 , 4.102274151 , 0.21036232 ), ( 65 , 4.224054084 , 0.29765173 ), ( 65 , 3.737375557 , 0.351180953 ), ( 65 , 3.930791905 , 0.384768804 ), ( 65 , 3.914159073 , 0.376209582 ), ( 65 , 4.059543714 , 0.546040025 ), ( 65 , 3.753086705 , 0.531087723 ), ( 65 , 3.862544591 , 0.57225636 ), ( 65 , 3.955716946 , 0.636283514 ), ( 65 , 4.324254409 , 0.614791322 ), ( 65 , 4.557277597 , 0.644938143 ), ( 65 , 4.465881268 , 0.618086608 ), ( 65 , 4.472766263 , 0.764667757 ), ( 65 , 4.409569613 , 0.731239445 ), ( 65 , 4.656247718 , 0.830991208 ), ( 65 , 4.540349464 , 0.841052329 ), ( 65 , 4.063875415 , 0.639076977 ), ( 65 , 4.177858672 , 0.692815969 ), ( 65 , 4.200353341 , 0.824507288 ), ( 65 , 4.346889181 , 0.923705195 ), ( 65 , 4.584661166 , 1.010139472 ), ( 65 , 4.56438562 , 1.0236705 ), ( 65 , 3.456362182 , 0.423377969 ), ( 65 , 3.580757306 , 0.489830548 ), ( 65 , 3.430308352 , 0.506654475 ), ( 65 , 3.788556644 , 0.631757598 ), ( 65 , 3.776395346 , 0.670082774 ), ( 65 , 3.736747931 , 0.693676837 ), ( 65 , 3.727986755 , 0.72462622 ), ( 65 , 3.810655099 , 0.64504761 ), ( 65 , 3.794430844 , 0.729449581 ), ( 65 , 3.813902511 , 0.816579073 ), ( 65 , 3.620449699 , 0.639366111 ), ( 65 , 3.588732495 , 0.727355125 ), ( 65 , 3.674809485 , 0.798539018 ), ( 65 , 3.289031241 , 0.582671 ), ( 65 , 3.335544277 , 0.769743121 ), ( 65 , 3.579590518 , 0.881737244 ), ( 65 , 3.528904056 , 0.885196724 ), ( 65 , 3.415051245 , 1.042245005 ), ( 65 , 3.25113387 , 1.113568796 ), ( 65 , 4.042781956 , 0.94283032 ), ( 65 , 4.05329448 , 0.963337791 ), ( 65 , 3.7477934 , 0.957553011 ), ( 65 , 4.202555222 , 1.036909234 ), ( 65 , 4.434964837 , 1.135151179 ), ( 65 , 4.610558189 , 1.214213416 ), ( 65 , 4.326090648 , 1.267331182 ), ( 65 , 3.623570829 , 1.021707671 ), ( 65 , 3.446303325 , 1.08610208 ), ( 65 , 3.210056207 , 1.266254232 ), ( 65 , 3.184281528 , 1.303087345 ), ( 65 , 3.99183702 , 1.203330361 ), ( 65 , 4.669493453 , 1.366708042 ), ( 65 , 3.6954459 , 1.301908736 ), ( 65 , 3.811898316 , 1.390346844 ), ( 65 , 3.457596833 , 1.404490545 ), ( 65 , 5.511083917 , 0.02673278 ), ( 65 , 5.54129796 , 0.051378072 ), ( 65 , 5.604302407 , 0.177576708 ), ( 65 , 5.390860798 , 0.121249733 ), ( 65 , 5.358714082 , 0.147263298 ), ( 65 , 5.40993869 , 0.196354065 ), ( 65 , 5.530783191 , 0.273288144 ), ( 65 , 5.805414455 , 0.366133725 ), ( 65 , 5.700263666 , 0.446173888 ), ( 65 , 5.698244626 , 0.44651419 ), ( 65 , 5.321019383 , 0.230673828 ), ( 65 , 5.419115767 , 0.305812994 ), ( 65 , 5.351118706 , 0.302212866 ), ( 65 , 5.246321153 , 0.386614506 ), ( 65 , 5.284244913 , 0.368871793 ), ( 65 , 5.312455794 , 0.508723563 ), ( 65 , 5.473235876 , 0.497802096 ), ( 65 , 5.655876157 , 0.524573283 ), ( 65 , 5.420870528 , 0.618826312 ), ( 65 , 5.901814533 , 0.353084273 ), ( 65 , 5.920205334 , 0.622251998 ), ( 65 , 6.277838508 , 0.810062847 ), ( 65 , 6.168501986 , 0.786413328 ), ( 65 , 6.107348545 , 0.844410445 ), ( 65 , 5.70783353 , 0.638447499 ), ( 65 , 5.785074374 , 0.787361116 ), ( 65 , 5.589518365 , 0.70412676 ), ( 65 , 5.569754201 , 0.737431083 ), ( 65 , 5.643076996 , 0.800303089 ), ( 65 , 5.782597746 , 0.815848776 ), ( 65 , 5.746658933 , 0.849426748 ), ( 65 , 5.978487348 , 0.884479044 ), ( 65 , 6.204251619 , 0.999374114 ), ( 65 , 6.236063569 , 1.029100966 ), ( 65 , 6.272536687 , 1.047609078 ), ( 65 , 5.847312134 , 0.993407046 ), ( 65 , 5.877340288 , 0.984951934 ), ( 65 , 6.027981847 , 0.996677566 ), ( 65 , 5.065403699 , 0.387440661 ), ( 65 , 5.009240645 , 0.431550956 ), ( 65 , 5.080547288 , 0.490219862 ), ( 65 , 5.165881479 , 0.473601368 ), ( 65 , 5.244391045 , 0.543104403 ), ( 65 , 5.187306942 , 0.583590031 ), ( 65 , 5.024442565 , 0.466625108 ), ( 65 , 5.043780878 , 0.479195879 ), ( 65 , 4.937528829 , 0.502370428 ), ( 65 , 5.05991821 , 0.651518576 ), ( 65 , 5.354362997 , 0.599155078 ), ( 65 , 5.371194615 , 0.644651546 ), ( 65 , 5.241470465 , 0.647505898 ), ( 65 , 5.297430421 , 0.638874843 ), ( 65 , 5.336028417 , 0.750209635 ), ( 65 , 5.379419946 , 0.753834922 ), ( 65 , 5.407839879 , 0.797038059 ), ( 65 , 5.146871613 , 0.8021115 ), ( 65 , 4.734261622 , 0.732111854 ), ( 65 , 4.780186336 , 0.789037524 ), ( 65 , 4.91739864 , 0.808345978 ), ( 65 , 4.743389804 , 0.867613189 ), ( 65 , 4.799362042 , 0.896182363 ), ( 65 , 4.742457929 , 0.887036489 ), ( 65 , 5.076275016 , 0.87740137 ), ( 65 , 5.086671803 , 1.012768363 ), ( 65 , 4.852841931 , 0.909587911 ), ( 65 , 4.908405844 , 0.958136403 ), ( 65 , 4.947017565 , 1.003327787 ), ( 65 , 4.963173559 , 1.016223904 ), ( 65 , 4.760904201 , 1.054345777 ), ( 65 , 5.508272636 , 0.781749511 ), ( 65 , 5.543671167 , 0.832386302 ), ( 65 , 5.481265287 , 0.891427908 ), ( 65 , 5.444932499 , 0.914658333 ), ( 65 , 5.343063027 , 0.934658989 ), ( 65 , 5.325482933 , 0.93542101 ), ( 65 , 5.345435429 , 1.04021676 ), ( 65 , 5.573329148 , 1.022963013 ), ( 65 , 5.81175112 , 1.031230154 ), ( 65 , 5.88317948 , 1.118493137 ), ( 65 , 6.056091613 , 1.120894298 ), ( 65 , 5.164684253 , 0.995586167 ), ( 65 , 5.246196549 , 1.128084845 ), ( 65 , 5.230319297 , 1.228142021 ), ( 65 , 4.900766604 , 1.2355676 ), ( 65 , 5.366938234 , 1.265914107 ), ( 65 , 5.234273962 , 1.33484494 ), ( 65 , 4.91152033 , 1.395270133 ), ( 65 , 5.040230665 , 1.456700634 ), ( 65 , 0.101276785 , -0.541675998 ), ( 65 , 6.270696024 , -0.464664056 ), ( 65 , 6.238792947 , -0.442117873 ), ( 65 , 6.267910498 , -0.431744704 ), ( 65 , 0.115030741 , -0.326266843 ), ( 65 , 6.09620447 , -0.496353722 ), ( 65 , 6.023190172 , -0.447278042 ), ( 65 , 6.276012641 , -0.276591731 ), ( 65 , 6.237493964 , -0.2768351 ), ( 65 , 0.453404284 , -0.083177585 ), ( 65 , 0.351579798 , -0.056670256 ), ( 65 , 0.591106522 , -0.165222695 ), ( 65 , 0.609471055 , -0.075844049 ), ( 65 , 0.551916482 , 0.000618908 ), ( 65 , 0.287200116 , 0.085652046 ), ( 65 , 0.360487845 , 0.030124802 ), ( 65 , 0.38565273 , 0.138950949 ), ( 65 , 0.461242726 , 0.149384155 ), ( 65 , 5.890614041 , -0.225411342 ), ( 65 , 5.897860298 , -0.190340965 ), ( 65 , 6.027466546 , -0.123241362 ), ( 65 , 5.997685577 , -0.125748616 ), ( 65 , 5.731665912 , -0.179971642 ), ( 65 , 5.815131097 , -0.082395583 ), ( 65 , 6.150277077 , -0.07913937 ), ( 65 , 6.032479304 , -0.114742273 ), ( 65 , 6.00954393 , -0.083952149 ), ( 65 , 6.140277164 , 0.019589195 ), ( 65 , 6.014390151 , -0.024613464 ), ( 65 , 6.010689834 , 0.066505161 ), ( 65 , 6.038892636 , 0.115477933 ), ( 65 , 5.754858255 , -0.076355844 ), ( 65 , 5.83843194 , -0.004154452 ), ( 65 , 5.788596719 , 0.042575104 ), ( 65 , 5.606264075 , -0.059318535 ), ( 65 , 5.610627575 , 0.009327787 ), ( 65 , 5.871633029 , 0.321917294 ), ( 65 , 0.09785408 , 0.235316517 ), ( 65 , 0.252672636 , 0.239037026 ), ( 65 , 0.156685084 , 0.230485285 ), ( 65 , 0.254445659 , 0.373578469 ), ( 65 , 0.120080383 , 0.27969867 ), ( 65 , 0.24105314 , 0.428599942 ), ( 65 , 6.207846645 , 0.285113459 ), ( 65 , 5.957981605 , 0.338016998 ), ( 65 , 6.084050924 , 0.519615461 ), ( 65 , 0.038712012 , 0.444419572 ), ( 65 , 0.021540833 , 0.465106928 ), ( 65 , 0.14319523 , 0.493584058 ), ( 65 , 0.039282319 , 0.4930119 ), ( 65 , 6.180683428 , 0.574287326 ), ( 65 , 6.27803943 , 0.565166993 ), ( 65 , 1.515431365 , -0.622622754 ), ( 65 , 1.672100966 , -0.610811219 ), ( 65 , 1.707801723 , -0.573663404 ), ( 65 , 1.672199095 , -0.55484568 ), ( 65 , 1.629952316 , -0.513052129 ), ( 65 , 1.678684262 , -0.502322543 ), ( 65 , 1.456767132 , -0.520966673 ), ( 65 , 1.61349219 , -0.466020245 ), ( 65 , 1.630807196 , -0.416455895 ), ( 65 , 1.803655411 , -0.43082723 ), ( 65 , 1.787799013 , -0.420208217 ), ( 65 , 1.871094483 , -0.419642873 ), ( 65 , 1.820579182 , -0.387512704 ), ( 65 , 1.656470295 , -0.385771013 ), ( 65 , 1.674617659 , -0.345319361 ), ( 65 , 1.674508462 , -0.263042803 ), ( 65 , 1.50304588 , -0.351270455 ), ( 65 , 1.393231903 , -0.323051717 ), ( 65 , 1.600749487 , -0.195016003 ), ( 65 , 1.713829544 , -0.194889581 ), ( 65 , 1.427155158 , -0.207716962 ), ( 65 , 1.562922477 , -0.017351395 ), ( 65 , 1.996859505 , -0.252038699 ), ( 65 , 1.957265055 , -0.17529614 ), ( 65 , 2.058099202 , -0.223741938 ), ( 65 , 1.990895193 , -0.145059148 ), ( 65 , 1.835456287 , -0.160621992 ), ( 65 , 1.819512802 , -0.142757105 ), ( 65 , 1.967213257 , -0.091219892 ), ( 65 , 1.926743388 , -0.102924884 ), ( 65 , 2.105011117 , -0.110605332 ), ( 65 , 2.187498404 , -0.027962804 ), ( 65 , 2.218687825 , -0.043933009 ), ( 65 , 2.025134713 , 0.041981503 ), ( 65 , 2.060017399 , 0.057190958 ), ( 65 , 2.170871606 , 0.154745232 ), ( 65 , 1.807039677 , -0.102146047 ), ( 65 , 1.799349247 , -0.092788191 ), ( 65 , 1.840808798 , -0.023494897 ), ( 65 , 1.67125987 , -0.057193563 ), ( 65 , 1.696777399 , 0.002232551 ), ( 65 , 1.640170745 , 0.02040683 ), ( 65 , 1.683262767 , 0.039646313 ), ( 65 , 1.840977223 , 0.096990047 ), ( 65 , 1.727883532 , 0.078504755 ), ( 65 , 1.740194729 , 0.082040634 ), ( 65 , 1.803681553 , 0.191912246 ), ( 65 , 2.010559642 , 0.240352853 ), ( 65 , 1.178826996 , -0.237231495 ), ( 65 , 1.141555794 , -0.109680725 ), ( 65 , 1.137285345 , -0.109019847 ), ( 65 , 1.372411773 , -0.143187976 ), ( 65 , 1.463303623 , -0.078437935 ), ( 65 , 1.356860096 , -0.039359982 ), ( 65 , 1.490829858 , -0.050552122 ), ( 65 , 1.478236219 , -0.045284151 ), ( 65 , 1.426745986 , -0.041201245 ), ( 65 , 1.45352077 , -0.029973546 ), ( 65 , 1.420339922 , -0.009493308 ), ( 65 , 1.459479052 , -0.00021596 ), ( 65 , 1.347986214 , 0.056174307 ), ( 65 , 1.441347597 , 0.073384471 ), ( 65 , 1.291421782 , 0.09422896 ), ( 65 , 1.017263033 , -0.115781147 ), ( 65 , 0.958354959 , -0.059227278 ), ( 65 , 1.165066501 , 0.036287527 ), ( 65 , 1.114728459 , 0.107968087 ), ( 65 , 1.187187239 , 0.094423971 ), ( 65 , 1.292185492 , 0.137957477 ), ( 65 , 1.045796529 , 0.180299114 ), ( 65 , 1.107546738 , 0.222592441 ), ( 65 , 1.56166628 , 0.021368567 ), ( 65 , 1.580766706 , 0.029566244 ), ( 65 , 1.639664572 , 0.074763122 ), ( 65 , 1.518450422 , 0.11264061 ), ( 65 , 1.644859368 , 0.123090282 ), ( 65 , 1.609123494 , 0.151309074 ), ( 65 , 1.627475498 , 0.179548548 ), ( 65 , 1.661852508 , 0.205184418 ), ( 65 , 1.505437759 , 0.224942284 ), ( 65 , 1.68192798 , 0.256946698 ), ( 65 , 1.708780636 , 0.277566813 ), ( 65 , 1.694998234 , 0.283407831 ), ( 65 , 1.664313336 , 0.310025799 ), ( 65 , 1.629938406 , 0.326031204 ), ( 65 , 1.734223141 , 0.42919168 ), ( 65 , 1.449682108 , 0.297683017 ), ( 65 , 1.400379973 , 0.345824474 ), ( 65 , 1.443054669 , 0.392037832 ), ( 65 , 1.491877262 , 0.407117436 ), ( 65 , 1.328022127 , 0.371366817 ), ( 65 , 1.203006379 , 0.347000788 ), ( 65 , 1.465745747 , 0.482795179 ), ( 65 , 1.486587819 , 0.557119393 ), ( 65 , 1.454979143 , 0.572481872 ), ( 65 , 1.533400145 , 0.560681681 ), ( 65 , 1.592799915 , 0.662600684 ), ( 65 , 3.281534909 , -0.567822788 ), ( 65 , 3.144661893 , -0.381137503 ), ( 65 , 3.392703635 , -0.397125066 ), ( 65 , 3.26299713 , -0.290280013 ), ( 65 , 2.773536957 , -0.324088412 ), ( 65 , 3.15407244 , -0.134102833 ), ( 65 , 3.692663719 , -0.155185552 ), ( 65 , 3.594952867 , -0.095976413 ), ( 65 , 3.7365543 , -0.115568747 ), ( 65 , 3.727790255 , -0.103797315 ), ( 65 , 3.664409174 , -0.061962447 ), ( 65 , 3.715441592 , 0.023782021 ), ( 65 , 3.685361791 , 0.040099545 ), ( 65 , 3.608196723 , 0.110821576 ), ( 65 , 3.680950428 , 0.13170336 ), ( 65 , 3.680644184 , 0.188226995 ), ( 65 , 2.803533053 , -0.243899832 ), ( 65 , 2.656220427 , -0.189975981 ), ( 65 , 3.047345223 , -0.042512838 ), ( 65 , 3.00150419 , -0.029669259 ), ( 65 , 2.798632163 , -0.030409238 ), ( 65 , 2.815027407 , 0.043421612 ), ( 65 , 2.485084485 , -0.074124352 ), ( 65 , 2.38673204 , 0.025526883 ), ( 65 , 2.723677351 , 0.041326985 ), ( 65 , 2.668772177 , 0.233087887 ), ( 65 , 3.157896038 , 0.096990968 ), ( 65 , 3.28578546 , 0.179693837 ), ( 65 , 3.352068736 , 0.236541479 ), ( 65 , 3.475536536 , 0.345321957 ), ( 65 , 3.354408871 , 0.433530966 ), ( 65 , 2.913222151 , 0.407077651 ), ( 65 , 3.22464142 , 0.453930291 ), ( 65 , 3.226614866 , 0.491415759 ), ( 65 , 3.047947927 , 0.586879766 ), ( 65 , 3.133372147 , 0.563278439 ), ( 65 , 4.75329489 , -0.64005722 ), ( 65 , 4.681538574 , -0.611195672 ), ( 65 , 4.683552353 , -0.609035917 ), ( 65 , 4.764617567 , -0.504427828 ), ( 65 , 4.788311598 , -0.493753712 ), ( 65 , 4.80630022 , -0.434853877 ), ( 65 , 4.639500484 , -0.486667534 ), ( 65 , 4.71239518 , -0.354994934 ), ( 65 , 4.941340445 , -0.465151177 ), ( 65 , 4.840524013 , -0.440811661 ), ( 65 , 4.910098749 , -0.366551008 ), ( 65 , 4.981296509 , -0.396108813 ), ( 65 , 4.987788858 , -0.333410985 ), ( 65 , 4.788642342 , -0.322248223 ), ( 65 , 4.980988553 , -0.266732165 ), ( 65 , 4.521309527 , -0.463453978 ), ( 65 , 4.503938668 , -0.440791243 ), ( 65 , 4.604651133 , -0.384738552 ), ( 65 , 4.694571811 , -0.328162058 ), ( 65 , 4.458675983 , -0.329616707 ), ( 65 , 4.36583529 , -0.356194603 ), ( 65 , 4.530531341 , -0.284694616 ), ( 65 , 4.718433864 , -0.299444614 ), ( 65 , 4.641723955 , -0.235784744 ), ( 65 , 4.820188675 , -0.123501336 ), ( 65 , 4.541689823 , -0.186690348 ), ( 65 , 4.572922419 , -0.143279031 ), ( 65 , 5.129337061 , -0.213859546 ), ( 65 , 5.25819772 , -0.202449896 ), ( 65 , 5.441320468 , -0.043407233 ), ( 65 , 5.207089894 , 0.07680088 ), ( 65 , 4.84432805 , -0.099907615 ), ( 65 , 5.005387957 , 0.01118556 ), ( 65 , 4.86776274 , 0.086145668 ), ( 65 , 4.886310893 , 0.128426258 ), ( 65 , 5.102036949 , 0.004293521 ), ( 65 , 5.128733628 , 0.050858526 ), ( 65 , 5.034114433 , 0.096264174 ), ( 65 , 5.202214054 , 0.180667841 ), ( 65 , 4.984484489 , 0.146146253 ), ( 65 , 5.073698675 , 0.173030096 ), ( 65 , 4.361806824 , -0.166776704 ), ( 65 , 4.219545829 , -0.245589299 ), ( 65 , 4.213853521 , -0.109800445 ), ( 65 , 4.537829107 , -0.103303377 ), ( 65 , 4.48945438 , -0.067790477 ), ( 65 , 4.550318357 , -0.041694667 ), ( 65 , 4.624954695 , -0.011158175 ), ( 65 , 4.621383108 , 0.035393387 ), ( 65 , 4.1310056 , -0.106820373 ), ( 65 , 4.250871542 , 0.103004149 ), ( 65 , 4.459245024 , 0.14749225 ), ( 65 , 4.864196564 , 0.190101768 ), ( 65 , 4.583138024 , 0.20811512 ), ( 65 , 4.716547165 , 0.263420254 ), ( 65 , 4.874492736 , 0.282719461 ), ( 65 , 5.056248552 , 0.34226755 ), ( 65 , 4.968737991 , 0.345476987 ), ( 65 , 4.98214806 , 0.388588981 ), ( 65 , 4.812957 , 0.291258592 ), ( 65 , 4.911329423 , 0.383705179 ), ( 65 , 4.925873706 , 0.419853458 ), ( 65 , 4.416037866 , 0.261349989 ), ( 65 , 4.527373109 , 0.403006809 ), ( 65 , 4.439758274 , 0.442492526 ), ( 65 , 4.700339418 , 0.418812917 ), ( 65 , 4.801497026 , 0.505857156 ), ( 65 , 4.858054312 , 0.539168125 ), ( 65 , 4.628109235 , 0.54606037 ), ( 65 , 4.659451222 , 0.598261309 ), ( 65 , 0.971076976 , -1.488099095 ), ( 65 , 1.309948937 , -1.366593101 ), ( 65 , 0.944663366 , -1.366994986 ), ( 65 , 1.376243476 , -1.284360511 ), ( 65 , 1.079365849 , -1.120850649 ), ( 65 , 0.696081929 , -1.121924953 ), ( 65 , 0.422142329 , -1.017020077 ), ( 65 , 0.892749235 , -0.891209175 ), ( 65 , 0.543625104 , -0.957869212 ), ( 65 , 0.759688282 , -0.887872541 ), ( 65 , 1.46152474 , -1.067726726 ), ( 65 , 1.330857535 , -0.949587482 ), ( 65 , 1.269455988 , -0.933037374 ), ( 65 , 1.529258647 , -0.920972055 ), ( 65 , 1.499615999 , -0.799922715 ), ( 65 , 1.23804176 , -0.716714394 ), ( 65 , 1.02349261 , -0.919626207 ), ( 65 , 1.157675667 , -0.770744956 ), ( 65 , 1.130310631 , -0.591746606 ), ( 65 , 0.039454212 , -0.94250997 ), ( 65 , 0.390556956 , -0.816051482 ), ( 65 , 0.369565592 , -0.777172499 ), ( 65 , 0.567590888 , -0.764727111 ), ( 65 , 0.620456532 , -0.753973498 ), ( 65 , 0.47915511 , -0.67022118 ), ( 65 , 0.664306515 , -0.635775098 ), ( 65 , 0.125339507 , -0.881965266 ), ( 65 , 0.213562927 , -0.815025028 ), ( 65 , 0.001394384 , -0.773023552 ), ( 65 , 0.41818603 , -0.697214648 ), ( 65 , 0.379469174 , -0.567989332 ), ( 65 , 0.534378676 , -0.517761994 ), ( 65 , 0.462602364 , -0.477332609 ), ( 65 , 0.276161998 , -0.515327308 ), ( 65 , 0.875957495 , -0.464368432 ), ( 65 , 0.750236013 , -0.537801937 ), ( 65 , 0.606363832 , -0.45278378 ), ( 65 , 0.623799509 , -0.320371011 ), ( 65 , 0.834608169 , -0.279689601 ), ( 65 , 0.833782178 , -0.23150433 ), ( 65 , 0.808044032 , -0.14440995 ), ( 65 , 2.815534552 , -1.404461458 ), ( 65 , 2.975515358 , -1.354522559 ), ( 65 , 2.578778216 , -1.397327797 ), ( 65 , 2.542307139 , -1.25996613 ), ( 65 , 2.812314261 , -1.236657394 ), ( 65 , 3.118663066 , -1.158491187 ), ( 65 , 2.825967848 , -1.126560274 ), ( 65 , 2.493853347 , -1.164465866 ), ( 65 , 2.701234907 , -1.128803574 ), ( 65 , 2.767268988 , -1.064434931 ), ( 65 , 2.594277387 , -1.019643497 ), ( 65 , 1.940018071 , -1.247393154 ), ( 65 , 2.135884806 , -1.039195782 ), ( 65 , 2.04345208 , -0.985605128 ), ( 65 , 2.406567087 , -1.01173851 ), ( 65 , 2.377130491 , -1.009715346 ), ( 65 , 2.214207248 , -0.960125885 ), ( 65 , 2.27915295 , -0.973444673 ), ( 65 , 2.244855312 , -0.891742432 ), ( 65 , 2.398736627 , -0.862621805 ), ( 65 , 3.047080773 , -1.10606346 ), ( 65 , 3.007428535 , -1.109225377 ), ( 65 , 3.016149014 , -1.069510797 ), ( 65 , 2.906390456 , -0.893842836 ), ( 65 , 2.774294885 , -1.016205002 ), ( 65 , 2.750522233 , -0.996188514 ), ( 65 , 2.690717773 , -0.893688117 ), ( 65 , 3.077057299 , -0.856428954 ), ( 65 , 2.949143329 , -0.836377945 ), ( 65 , 2.944812646 , -0.763296984 ), ( 65 , 2.955002398 , -0.731892964 ), ( 65 , 2.95678694 , -0.606282817 ), ( 65 , 2.721286326 , -0.732219653 ), ( 65 , 2.640920743 , -0.635028928 ), ( 65 , 2.500736171 , -0.682926352 ), ( 65 , 2.41427279 , -0.737800534 ), ( 65 , 2.459800967 , -0.6589791 ), ( 65 , 2.915848342 , -0.523120269 ), ( 65 , 2.676461831 , -0.576504405 ), ( 65 , 2.775401057 , -0.46558428 ), ( 65 , 2.711701427 , -0.413829994 ), ( 65 , 1.800990344 , -1.035694508 ), ( 65 , 1.674567664 , -1.021780269 ), ( 65 , 1.826745393 , -0.972666507 ), ( 65 , 1.965575286 , -0.883291036 ), ( 65 , 1.806569219 , -0.883312039 ), ( 65 , 2.087218513 , -0.897940035 ), ( 65 , 2.107172357 , -0.843429318 ), ( 65 , 2.240585617 , -0.819792104 ), ( 65 , 2.299859195 , -0.786702035 ), ( 65 , 2.318941592 , -0.741840882 ), ( 65 , 2.302405178 , -0.728472093 ), ( 65 , 2.209129638 , -0.681706742 ), ( 65 , 2.048447902 , -0.781051529 ), ( 65 , 2.109634986 , -0.749590128 ), ( 65 , 2.137131588 , -0.744221661 ), ( 65 , 2.023701989 , -0.7035302 ), ( 65 , 2.035739418 , -0.69916936 ), ( 65 , 2.015708859 , -0.672444907 ), ( 65 , 2.157635863 , -0.712545528 ), ( 65 , 1.860298695 , -0.761149562 ), ( 65 , 1.590303674 , -0.78600717 ), ( 65 , 1.574507427 , -0.748230027 ), ( 65 , 1.840390185 , -0.620426847 ), ( 65 , 1.818465448 , -0.616821974 ), ( 65 , 1.708600958 , -0.644716401 ), ( 65 , 1.727436937 , -0.629873861 ), ( 65 , 1.682061569 , -0.611990246 ), ( 65 , 1.767330764 , -0.533833053 ), ( 65 , 1.956438413 , -0.659916919 ), ( 65 , 2.150088026 , -0.522037361 ), ( 65 , 2.078593953 , -0.528567265 ), ( 65 , 1.856734945 , -0.606980512 ), ( 65 , 1.936909823 , -0.527385922 ), ( 65 , 1.863137618 , -0.46524764 ), ( 65 , 1.954910374 , -0.468427499 ), ( 65 , 1.995269328 , -0.414958259 ), ( 65 , 1.92372179 , -0.398814749 ), ( 65 , 2.365379463 , -0.687693965 ), ( 65 , 2.213395598 , -0.552794021 ), ( 65 , 2.352974981 , -0.502757326 ), ( 65 , 2.361391717 , -0.465376092 ), ( 65 , 2.401495882 , -0.404509042 ), ( 65 , 2.587269218 , -0.477024887 ), ( 65 , 2.486357092 , -0.407453307 ), ( 65 , 2.219184993 , -0.402664254 ), ( 65 , 2.130708327 , -0.412207775 ), ( 65 , 2.311466949 , -0.367371482 ), ( 65 , 2.236441375 , -0.262321313 ), ( 65 , 2.47506754 , -0.160984832 ), ( 65 , 2.501624532 , -0.125495558 ), ( 65 , 2.27836462 , -0.208847846 ), ( 65 , 2.260318046 , -0.204967074 ), ( 65 , 2.295603849 , -0.192102371 ), ( 65 , 4.188434041 , -1.361837323 ), ( 65 , 4.025110867 , -1.298517069 ), ( 65 , 4.504417137 , -1.234325203 ), ( 65 , 4.345087779 , -1.254795527 ), ( 65 , 4.437572524 , -1.241136714 ), ( 65 , 4.490614154 , -1.2016055 ), ( 65 , 4.37557088 , -1.091773043 ), ( 65 , 4.159914499 , -1.092692336 ), ( 65 , 3.658727042 , -1.148443138 ), ( 65 , 3.169219798 , -1.198193263 ), ( 65 , 3.251931906 , -1.14791261 ), ( 65 , 3.595177885 , -1.033864377 ), ( 65 , 3.973830823 , -1.072023232 ), ( 65 , 3.879483915 , -0.989054698 ), ( 65 , 3.790526052 , -1.033192925 ), ( 65 , 3.84210379 , -0.98507832 ), ( 65 , 3.832279481 , -0.87094058 ), ( 65 , 3.918901653 , -0.852860399 ), ( 65 , 3.837105617 , -0.856191947 ), ( 65 , 4.696726728 , -1.147099269 ), ( 65 , 4.439674805 , -1.05767346 ), ( 65 , 4.240996823 , -0.948639613 ), ( 65 , 4.458322156 , -0.892408295 ), ( 65 , 4.389966006 , -0.812140286 ), ( 65 , 4.282383512 , -0.841052806 ), ( 65 , 4.634113018 , -0.88158 ), ( 65 , 4.600163229 , -0.846947275 ), ( 65 , 4.525169484 , -0.781534386 ), ( 65 , 4.613990315 , -0.664383801 ), ( 65 , 4.606436187 , -0.653453163 ), ( 65 , 4.425256001 , -0.73040746 ), ( 65 , 4.417082444 , -0.730499461 ), ( 65 , 4.549434672 , -0.659815485 ), ( 65 , 4.504156702 , -0.677586961 ), ( 65 , 4.519730418 , -0.588821918 ), ( 65 , 4.105751891 , -0.833157204 ), ( 65 , 4.054923822 , -0.674317407 ), ( 65 , 4.02080606 , -0.667044765 ), ( 65 , 4.095167522 , -0.683486016 ), ( 65 , 4.182300804 , -0.654569326 ), ( 65 , 4.16919826 , -0.54250889 ), ( 65 , 3.265628292 , -1.078523928 ), ( 65 , 3.178296416 , -1.061982835 ), ( 65 , 3.649184238 , -0.94479156 ), ( 65 , 3.605152872 , -0.954407862 ), ( 65 , 3.278072323 , -0.996259694 ), ( 65 , 3.370269825 , -0.939509832 ), ( 65 , 3.286462342 , -0.909018615 ), ( 65 , 3.733476485 , -0.785428071 ), ( 65 , 3.84112196 , -0.799255977 ), ( 65 , 3.872599443 , -0.760211466 ), ( 65 , 3.576529294 , -0.693727241 ), ( 65 , 3.628558659 , -0.63589456 ), ( 65 , 3.28984948 , -0.871096541 ), ( 65 , 3.424350339 , -0.719013541 ), ( 65 , 3.209201826 , -0.731546612 ), ( 65 , 3.244617616 , -0.685955094 ), ( 65 , 3.331129944 , -0.701237331 ), ( 65 , 3.454232612 , -0.463414896 ), ( 65 , 3.541056388 , -0.490659395 ), ( 65 , 3.598691078 , -0.445078019 ), ( 65 , 3.954180669 , -0.632937544 ), ( 65 , 4.065904121 , -0.5738864 ), ( 65 , 3.894444219 , -0.53367894 ), ( 65 , 4.205857645 , -0.431554934 ), ( 65 , 4.272257062 , -0.352873573 ), ( 65 , 4.23207087 , -0.320112692 ), ( 65 , 4.116420927 , -0.262565463 ), ( 65 , 3.722880633 , -0.46447465 ), ( 65 , 3.817235531 , -0.35673479 ), ( 65 , 3.891450366 , -0.320361154 ), ( 65 , 3.767410239 , -0.204455753 ), ( 65 , 3.956730675 , -0.28770838 ), ( 65 , 3.991753331 , -0.09603663 ), ( 65 , 5.64333071 , -1.396952958 ), ( 65 , 5.76776917 , -1.355467794 ), ( 65 , 4.921022998 , -1.359039334 ), ( 65 , 5.973046603 , -1.112095358 ), ( 65 , 5.319106689 , -1.103593599 ), ( 65 , 5.409930699 , -1.097957209 ), ( 65 , 5.711189569 , -0.982166941 ), ( 65 , 5.325606086 , -0.960823223 ), ( 65 , 5.500947447 , -0.937926402 ), ( 65 , 5.531574293 , -0.792021802 ), ( 65 , 5.542149804 , -0.757173046 ), ( 65 , 5.564299508 , -0.706963364 ), ( 65 , 5.691929362 , -0.672888118 ), ( 65 , 5.668411827 , -0.58781193 ), ( 65 , 5.966047049 , -0.59623116 ), ( 65 , 5.968763998 , -0.452263778 ), ( 65 , 5.803234884 , -0.493793205 ), ( 65 , 4.991719245 , -1.011591848 ), ( 65 , 4.910466306 , -0.992780156 ), ( 65 , 5.203931059 , -0.959519692 ), ( 65 , 5.150098457 , -0.949770997 ), ( 65 , 5.187636974 , -0.923077532 ), ( 65 , 5.053444533 , -0.931790344 ), ( 65 , 4.863001568 , -0.923136318 ), ( 65 , 5.072940842 , -0.894155589 ), ( 65 , 5.290077858 , -0.746664945 ), ( 65 , 5.414567838 , -0.73996075 ), ( 65 , 5.423101728 , -0.690432876 ), ( 65 , 5.388377943 , -0.664795475 ), ( 65 , 5.26013449 , -0.575956336 ), ( 65 , 4.739239396 , -0.903102273 ), ( 65 , 4.970621975 , -0.690014766 ), ( 65 , 4.904957105 , -0.640861119 ), ( 65 , 5.016101825 , -0.631196713 ), ( 65 , 5.046385714 , -0.585074833 ), ( 65 , 5.231376896 , -0.533003056 ), ( 65 , 5.624597954 , -0.545217156 ), ( 65 , 5.416649535 , -0.453787058 ), ( 65 , 5.401238693 , -0.438240481 ), ( 65 , 5.511623411 , -0.484011889 ), ( 65 , 5.639841454 , -0.42918296 ), ( 65 , 5.769190589 , -0.312481735 ), ( 65 , 5.411441717 , -0.414876323 ), ( 65 , 5.451284681 , -0.314789222 ), ( 65 , 5.259720426 , -0.221054755 ), ( 65 , 5.467656308 , -0.201993017 ), ( 65 , 5.544848285 , -0.163266489 ), ( 65 , 5.336404656 , -0.168508479 ), ( 65 , 5.471492994 , -0.120246418 ), ( 65 , 5.50016507 , -0.095599204 ), ( 65 , 5.48166413 , -0.06216234 ), ( 66 , 0.765877784 , 0.035224027 ), ( 66 , 0.643073251 , 0.17796972 ), ( 66 , 0.805805418 , 0.276728659 ), ( 66 , 0.903447791 , 0.327363405 ), ( 66 , 0.998984977 , 0.416378483 ), ( 66 , 1.00078519 , 0.425522425 ), ( 66 , 0.716979607 , 0.31003462 ), ( 66 , 0.465085499 , 0.303909285 ), ( 66 , 0.685098051 , 0.430173273 ), ( 66 , 0.587469319 , 0.500743331 ), ( 66 , 0.922175715 , 0.481215111 ), ( 66 , 0.945380775 , 0.510054659 ), ( 66 , 0.743662796 , 0.558026588 ), ( 66 , 0.744329885 , 0.6448543 ), ( 66 , 0.739355811 , 0.651468404 ), ( 66 , 1.238323006 , 0.57360629 ), ( 66 , 1.393631629 , 0.593155435 ), ( 66 , 1.366966885 , 0.651642439 ), ( 66 , 1.353997483 , 0.651039309 ), ( 66 , 1.443178794 , 0.695088839 ), ( 66 , 1.508942336 , 0.70698435 ), ( 66 , 1.515142164 , 0.742221142 ), ( 66 , 1.327630911 , 0.798992819 ), ( 66 , 0.994304763 , 0.586427772 ), ( 66 , 1.038703024 , 0.607614325 ), ( 66 , 1.045739888 , 0.677543271 ), ( 66 , 1.040598329 , 0.677885699 ), ( 66 , 0.922867853 , 0.711389534 ), ( 66 , 0.92458852 , 0.850585876 ), ( 66 , 1.529622068 , 0.9934224 ), ( 66 , 1.451106135 , 0.998668848 ), ( 66 , 1.236113349 , 1.038836492 ), ( 66 , 0.323251041 , 0.497928488 ), ( 66 , 0.3377228 , 0.554048611 ), ( 66 , 0.319700976 , 0.595128762 ), ( 66 , 0.343756397 , 0.652512983 ), ( 66 , 0.609216689 , 0.695249096 ), ( 66 , 0.730940563 , 0.77269485 ), ( 66 , 0.418362356 , 0.716918773 ), ( 66 , 0.450646514 , 0.791030118 ), ( 66 , 0.455713357 , 0.805285809 ), ( 66 , 0.56094834 , 0.775957737 ), ( 66 , 0.593255369 , 0.834469896 ), ( 66 , 0.542014675 , 0.907006936 ), ( 66 , 0.085921227 , 0.71086099 ), ( 66 , 0.089517177 , 0.8546635 ), ( 66 , 0.358708347 , 0.760685173 ), ( 66 , 0.384872702 , 0.768803429 ), ( 66 , 0.333395206 , 0.839193151 ), ( 66 , 0.275017519 , 0.82686816 ), ( 66 , 0.437281665 , 0.940178272 ), ( 66 , 0.293033905 , 0.933719067 ), ( 66 , 0.201809722 , 0.965260502 ), ( 66 , 0.116320524 , 0.988575781 ), ( 66 , 0.021453092 , 1.021578769 ), ( 66 , 0.203798996 , 1.039771845 ), ( 66 , 0.046155696 , 1.041497092 ), ( 66 , 0.069433491 , 1.064652554 ), ( 66 , 0.03729376 , 1.103118201 ), ( 66 , 0.839692735 , 0.832963457 ), ( 66 , 0.711357751 , 0.842386884 ), ( 66 , 0.699656187 , 0.864988537 ), ( 66 , 0.854393761 , 0.889343956 ), ( 66 , 0.897974035 , 0.941103222 ), ( 66 , 0.950051154 , 0.990289061 ), ( 66 , 0.545706785 , 0.970786504 ), ( 66 , 0.619259812 , 0.999077221 ), ( 66 , 0.693655873 , 1.092424623 ), ( 66 , 0.824244838 , 1.088816543 ), ( 66 , 1.399219758 , 1.164955693 ), ( 66 , 1.103315747 , 1.195571588 ), ( 66 , 0.583347793 , 1.022074921 ), ( 66 , 0.445272827 , 1.065317593 ), ( 66 , 0.611794047 , 1.122892623 ), ( 66 , 0.289665687 , 1.095389022 ), ( 66 , 0.016848174 , 1.164346407 ), ( 66 , 0.007265799 , 1.284767621 ), ( 66 , 0.873175647 , 1.217040328 ), ( 66 , 0.917710291 , 1.254261712 ), ( 66 , 0.939013708 , 1.280142328 ), ( 66 , 1.247991937 , 1.337098555 ), ( 66 , 1.4374079 , 1.360962536 ), ( 66 , 1.125133092 , 1.405615915 ), ( 66 , 0.424866209 , 1.296795932 ), ( 66 , 1.447788441 , 1.499901001 ), ( 66 , 2.348060282 , 0.026904899 ), ( 66 , 2.398834936 , 0.201828834 ), ( 66 , 2.336041633 , 0.300743232 ), ( 66 , 2.352605352 , 0.316504714 ), ( 66 , 2.348795094 , 0.319537088 ), ( 66 , 2.15700608 , 0.227733528 ), ( 66 , 2.148365852 , 0.244417339 ), ( 66 , 2.156291517 , 0.308505371 ), ( 66 , 2.269756353 , 0.348560416 ), ( 66 , 2.26939018 , 0.349200311 ), ( 66 , 2.154145124 , 0.403828351 ), ( 66 , 2.238383905 , 0.420353375 ), ( 66 , 2.098812878 , 0.411599425 ), ( 66 , 2.118907221 , 0.480483188 ), ( 66 , 2.458845329 , 0.439523582 ), ( 66 , 2.492717647 , 0.477994563 ), ( 66 , 2.298012015 , 0.502039632 ), ( 66 , 2.391391658 , 0.567934491 ), ( 66 , 2.43662078 , 0.617223401 ), ( 66 , 2.349458712 , 0.62487322 ), ( 66 , 2.611144956 , 0.484482524 ), ( 66 , 2.689840161 , 0.500592165 ), ( 66 , 2.721386132 , 0.516892509 ), ( 66 , 2.934468479 , 0.625055269 ), ( 66 , 2.939429849 , 0.717137412 ), ( 66 , 3.027857093 , 0.64254767 ), ( 66 , 3.048762459 , 0.787292232 ), ( 66 , 3.012497242 , 0.814330872 ), ( 66 , 3.014503686 , 0.836508348 ), ( 66 , 2.665914169 , 0.709679275 ), ( 66 , 2.609038863 , 0.792624953 ), ( 66 , 2.505958357 , 0.818593578 ), ( 66 , 2.742818971 , 0.789099425 ), ( 66 , 2.740464346 , 0.851350409 ), ( 66 , 2.881645947 , 0.898879291 ), ( 66 , 2.949932289 , 0.921072409 ), ( 66 , 2.706315825 , 0.93863263 ), ( 66 , 2.820329844 , 1.001217006 ), ( 66 , 1.907027524 , 0.46580378 ), ( 66 , 1.957672854 , 0.480892478 ), ( 66 , 1.838194769 , 0.565739468 ), ( 66 , 1.868466298 , 0.590483234 ), ( 66 , 1.971898278 , 0.678861551 ), ( 66 , 2.102767352 , 0.618073704 ), ( 66 , 2.086879947 , 0.76755075 ), ( 66 , 1.995330463 , 0.698568625 ), ( 66 , 2.059763806 , 0.801676392 ), ( 66 , 1.752436223 , 0.627127333 ), ( 66 , 1.924447954 , 0.744481775 ), ( 66 , 1.706285015 , 0.693845482 ), ( 66 , 1.607385671 , 0.716551769 ), ( 66 , 1.583414811 , 0.757091157 ), ( 66 , 1.745179339 , 0.768191585 ), ( 66 , 1.650564733 , 0.80912655 ), ( 66 , 1.647484729 , 0.810252175 ), ( 66 , 1.582812159 , 0.834445249 ), ( 66 , 1.593212446 , 1.036601301 ), ( 66 , 1.747602451 , 1.080754039 ), ( 66 , 2.3535954 , 0.798282297 ), ( 66 , 2.445603387 , 0.915443231 ), ( 66 , 2.486173808 , 0.972932874 ), ( 66 , 2.264550297 , 0.923713167 ), ( 66 , 2.183763862 , 0.935031224 ), ( 66 , 2.520362359 , 1.050923145 ), ( 66 , 2.74849073 , 1.145390175 ), ( 66 , 2.556566031 , 1.110954692 ), ( 66 , 2.696584429 , 1.275365327 ), ( 66 , 2.035292449 , 1.096592137 ), ( 66 , 2.237906629 , 1.209857552 ), ( 66 , 1.893548856 , 1.253438178 ), ( 66 , 2.191108869 , 1.30586764 ), ( 66 , 2.65540241 , 1.464652475 ), ( 66 , 3.898142648 , 0.274109178 ), ( 66 , 4.157957459 , 0.303741175 ), ( 66 , 4.054404217 , 0.28616489 ), ( 66 , 4.074807211 , 0.299097279 ), ( 66 , 3.848030224 , 0.368669618 ), ( 66 , 3.82276946 , 0.405798612 ), ( 66 , 3.672225824 , 0.308361276 ), ( 66 , 3.876315167 , 0.425289061 ), ( 66 , 4.019117406 , 0.435597074 ), ( 66 , 4.087968287 , 0.523438054 ), ( 66 , 4.460564644 , 0.556484903 ), ( 66 , 4.244466245 , 0.465485342 ), ( 66 , 4.239667184 , 0.581942814 ), ( 66 , 4.584413508 , 0.678624028 ), ( 66 , 4.627863009 , 0.758713132 ), ( 66 , 4.638608434 , 0.769420767 ), ( 66 , 4.698467362 , 0.791517781 ), ( 66 , 4.677553665 , 0.814069897 ), ( 66 , 4.441147465 , 0.741976653 ), ( 66 , 4.668998458 , 0.844638897 ), ( 66 , 4.624244103 , 0.868823012 ), ( 66 , 4.083286139 , 0.669750271 ), ( 66 , 4.219300499 , 0.829120346 ), ( 66 , 4.374097514 , 0.871542119 ), ( 66 , 4.561403846 , 0.921365262 ), ( 66 , 4.314129048 , 0.897235128 ), ( 66 , 4.277846488 , 0.908252122 ), ( 66 , 4.552595193 , 0.99504407 ), ( 66 , 4.52253048 , 1.058903623 ), ( 66 , 3.605067133 , 0.539242837 ), ( 66 , 3.237302988 , 0.823481991 ), ( 66 , 3.494342961 , 0.767776839 ), ( 66 , 3.600725132 , 0.97523496 ), ( 66 , 3.192857024 , 0.995785204 ), ( 66 , 3.329502858 , 1.067365891 ), ( 66 , 3.963317464 , 0.873621102 ), ( 66 , 3.881352175 , 0.896654471 ), ( 66 , 3.731873743 , 0.916924424 ), ( 66 , 3.814751917 , 0.995948376 ), ( 66 , 4.559512723 , 1.174724249 ), ( 66 , 4.055053677 , 1.083840027 ), ( 66 , 4.047775876 , 1.0869127 ), ( 66 , 4.268032272 , 1.196507993 ), ( 66 , 4.4464131 , 1.20752279 ), ( 66 , 4.68814584 , 1.311991388 ), ( 66 , 3.587145383 , 1.139230331 ), ( 66 , 3.625799388 , 1.192319762 ), ( 66 , 3.673226681 , 1.198668499 ), ( 66 , 3.462447898 , 1.270582101 ), ( 66 , 3.424454983 , 1.274527372 ), ( 66 , 3.256739765 , 1.255409521 ), ( 66 , 4.243463111 , 1.312678355 ), ( 66 , 4.322453629 , 1.351729893 ), ( 66 , 4.354053139 , 1.377395995 ), ( 66 , 4.524331759 , 1.554000656 ), ( 66 , 5.518551919 , 0.039606801 ), ( 66 , 5.478936044 , 0.079112251 ), ( 66 , 5.383882862 , 0.175576617 ), ( 66 , 5.348281354 , 0.17550565 ), ( 66 , 5.51101083 , 0.257088056 ), ( 66 , 5.735009946 , 0.222546446 ), ( 66 , 5.792312016 , 0.314167704 ), ( 66 , 5.734668815 , 0.344144777 ), ( 66 , 5.743877616 , 0.370707247 ), ( 66 , 5.726004333 , 0.371289636 ), ( 66 , 5.648612378 , 0.397134842 ), ( 66 , 5.639381671 , 0.408312956 ), ( 66 , 5.604193854 , 0.428100138 ), ( 66 , 5.349553506 , 0.242800078 ), ( 66 , 5.328744425 , 0.263617995 ), ( 66 , 5.456859108 , 0.31505639 ), ( 66 , 5.413818712 , 0.347978586 ), ( 66 , 5.364059398 , 0.350595737 ), ( 66 , 5.150781108 , 0.357391754 ), ( 66 , 5.222928199 , 0.366488249 ), ( 66 , 5.279384738 , 0.365047967 ), ( 66 , 5.257702137 , 0.405098261 ), ( 66 , 5.307780446 , 0.484784409 ), ( 66 , 5.467778925 , 0.517466671 ), ( 66 , 5.399804547 , 0.550157312 ), ( 66 , 5.384484753 , 0.605262933 ), ( 66 , 6.024472484 , 0.542499953 ), ( 66 , 6.032545469 , 0.554696213 ), ( 66 , 5.958407249 , 0.5312805 ), ( 66 , 5.940766484 , 0.540456433 ), ( 66 , 5.831553606 , 0.485271331 ), ( 66 , 5.779550803 , 0.574941048 ), ( 66 , 5.761526098 , 0.57606901 ), ( 66 , 5.891093839 , 0.544816821 ), ( 66 , 5.889323273 , 0.623525129 ), ( 66 , 6.162816812 , 0.610032149 ), ( 66 , 6.052303668 , 0.62197549 ), ( 66 , 6.196122362 , 0.657152722 ), ( 66 , 6.057200268 , 0.777751301 ), ( 66 , 6.05323799 , 0.804040484 ), ( 66 , 6.023887662 , 0.791939152 ), ( 66 , 6.104474329 , 0.787783804 ), ( 66 , 6.241192552 , 0.900965672 ), ( 66 , 5.714505251 , 0.718181095 ), ( 66 , 5.777528455 , 0.773967839 ), ( 66 , 5.597184789 , 0.674292276 ), ( 66 , 5.568848079 , 0.772103893 ), ( 66 , 5.699710006 , 0.751553315 ), ( 66 , 5.807937382 , 0.849580141 ), ( 66 , 5.638653869 , 0.845501741 ), ( 66 , 5.926658333 , 0.788590873 ), ( 66 , 5.890954471 , 0.861428219 ), ( 66 , 6.017769324 , 0.918998791 ), ( 66 , 6.209421081 , 0.927687808 ), ( 66 , 5.849727282 , 0.889783009 ), ( 66 , 5.900580038 , 0.943125675 ), ( 66 , 5.956185695 , 1.014841024 ), ( 66 , 6.036043757 , 1.022130778 ), ( 66 , 6.093166417 , 1.081457032 ), ( 66 , 5.089859965 , 0.353585301 ), ( 66 , 5.151599306 , 0.413955199 ), ( 66 , 5.156910946 , 0.477909113 ), ( 66 , 5.21464464 , 0.52700028 ), ( 66 , 5.248265737 , 0.557788358 ), ( 66 , 5.16102735 , 0.511941614 ), ( 66 , 5.234471131 , 0.555478159 ), ( 66 , 4.999431467 , 0.522230446 ), ( 66 , 5.077030183 , 0.579852106 ), ( 66 , 5.120828444 , 0.676525882 ), ( 66 , 5.373886869 , 0.599171603 ), ( 66 , 5.239247109 , 0.638611228 ), ( 66 , 5.322406761 , 0.648083778 ), ( 66 , 5.31871136 , 0.680750504 ), ( 66 , 5.473226836 , 0.710400739 ), ( 66 , 5.469164447 , 0.740197126 ), ( 66 , 5.349715671 , 0.705143182 ), ( 66 , 5.332203619 , 0.717890645 ), ( 66 , 5.312277618 , 0.745640583 ), ( 66 , 5.402940355 , 0.773752116 ), ( 66 , 5.195763818 , 0.660194453 ), ( 66 , 5.229760162 , 0.665069909 ), ( 66 , 5.162595188 , 0.674948767 ), ( 66 , 5.226977533 , 0.737588413 ), ( 66 , 5.169729792 , 0.71063932 ), ( 66 , 5.125739237 , 0.766999695 ), ( 66 , 5.26736674 , 0.876670578 ), ( 66 , 4.92939915 , 0.552038036 ), ( 66 , 4.887811866 , 0.669634307 ), ( 66 , 4.767846133 , 0.718142288 ), ( 66 , 4.804538689 , 0.867875902 ), ( 66 , 5.055486352 , 0.865155584 ), ( 66 , 5.041031513 , 0.873906124 ), ( 66 , 4.96978121 , 0.886787696 ), ( 66 , 4.983424849 , 0.912123494 ), ( 66 , 5.126994511 , 0.916328839 ), ( 66 , 5.110436391 , 0.972701742 ), ( 66 , 5.541322245 , 0.794169381 ), ( 66 , 5.512786703 , 0.878812339 ), ( 66 , 5.491252476 , 0.880733572 ), ( 66 , 5.606535303 , 0.860849444 ), ( 66 , 5.724717078 , 0.973755313 ), ( 66 , 5.370721619 , 0.858930916 ), ( 66 , 5.438226211 , 0.924929852 ), ( 66 , 5.406169357 , 0.977463901 ), ( 66 , 5.50615242 , 0.996092433 ), ( 66 , 5.756884092 , 1.006329669 ), ( 66 , 5.790826766 , 1.026961789 ), ( 66 , 5.907446465 , 1.078233575 ), ( 66 , 5.762441576 , 1.090617486 ), ( 66 , 6.061847489 , 1.138153598 ), ( 66 , 6.064723202 , 1.173597089 ), ( 66 , 5.776094673 , 1.127984545 ), ( 66 , 5.712170115 , 1.165732603 ), ( 66 , 6.260586682 , 1.298700406 ), ( 66 , 6.250276995 , 1.318504079 ), ( 66 , 6.147741568 , 1.312931061 ), ( 66 , 5.149681907 , 1.056047268 ), ( 66 , 5.118911039 , 1.049967864 ), ( 66 , 5.08957034 , 1.091832978 ), ( 66 , 5.357567786 , 1.147652126 ), ( 66 , 5.257319653 , 1.187296751 ), ( 66 , 5.750207838 , 1.308938328 ), ( 66 , 5.839618383 , 1.334968811 ), ( 66 , 5.595318809 , 1.345475452 ), ( 66 , 6.267805335 , 1.451959737 ), ( 66 , 6.179163184 , -0.46908009 ), ( 66 , 0.36000173 , -0.333037676 ), ( 66 , 0.168124991 , -0.354241359 ), ( 66 , 0.123697351 , -0.354922514 ), ( 66 , 0.076557352 , -0.332504678 ), ( 66 , 0.199383838 , -0.286657453 ), ( 66 , 6.126386181 , -0.380044595 ), ( 66 , 6.187422825 , -0.263472699 ), ( 66 , 6.001799088 , -0.351500553 ), ( 66 , 5.995626851 , -0.33467 ), ( 66 , 6.097628335 , -0.282258764 ), ( 66 , 0.099808179 , -0.213087479 ), ( 66 , 0.081635636 , -0.140568825 ), ( 66 , 6.143948881 , -0.19983864 ), ( 66 , 6.176434527 , -0.130276817 ), ( 66 , 0.511162276 , -0.17879343 ), ( 66 , 0.406048329 , -0.157334605 ), ( 66 , 0.306298682 , -0.155446073 ), ( 66 , 0.514833976 , -0.035944012 ), ( 66 , 0.582492681 , 0.087484243 ), ( 66 , 0.022100098 , -0.008786125 ), ( 66 , 0.223864842 , 0.05907158 ), ( 66 , 0.131529058 , 0.084826678 ), ( 66 , 0.379141071 , 0.061706631 ), ( 66 , 0.422044893 , 0.136687042 ), ( 66 , 0.388557827 , 0.127299176 ), ( 66 , 0.407120316 , 0.143265579 ), ( 66 , 0.55066884 , 0.143955178 ), ( 66 , 5.915848101 , -0.304746995 ), ( 66 , 6.158961528 , -0.071361891 ), ( 66 , 6.149883045 , -0.031265304 ), ( 66 , 6.234416605 , 0.038644627 ), ( 66 , 6.160836367 , -0.018950375 ), ( 66 , 6.124073829 , 0.005086235 ), ( 66 , 6.044489041 , 0.022811069 ), ( 66 , 5.726227807 , -0.055409409 ), ( 66 , 5.799528753 , 0.047715068 ), ( 66 , 5.661346312 , 0.081724556 ), ( 66 , 6.015241644 , 0.163296728 ), ( 66 , 5.950314992 , 0.190909277 ), ( 66 , 5.975734833 , 0.182881933 ), ( 66 , 6.007682254 , 0.206791715 ), ( 66 , 5.921380582 , 0.219502968 ), ( 66 , 5.902096141 , 0.227672424 ), ( 66 , 5.804824427 , 0.255336296 ), ( 66 , 5.902626796 , 0.276868322 ), ( 66 , 0.091232081 , 0.191579835 ), ( 66 , 6.219323532 , 0.177670796 ), ( 66 , 0.152369866 , 0.233363955 ), ( 66 , 0.122058726 , 0.340582064 ), ( 66 , 0.113712725 , 0.351629763 ), ( 66 , 0.209083944 , 0.365217854 ), ( 66 , 6.043635851 , 0.289051655 ), ( 66 , 6.049921606 , 0.347510562 ), ( 66 , 6.085141208 , 0.420675471 ), ( 66 , 6.119457598 , 0.452361585 ), ( 66 , 6.078394802 , 0.513846775 ), ( 66 , 0.001744098 , 0.469803213 ), ( 66 , 0.065960085 , 0.550401633 ), ( 66 , 6.280943018 , 0.588578994 ), ( 66 , 0.056013872 , 0.657878112 ), ( 66 , 8.86185E-05 , 0.678222086 ), ( 66 , 1.555849314 , -0.405180054 ), ( 66 , 1.766559811 , -0.477166505 ), ( 66 , 1.807363786 , -0.417627939 ), ( 66 , 1.813170552 , -0.384625698 ), ( 66 , 1.725755012 , -0.385878261 ), ( 66 , 1.882422128 , -0.302484304 ), ( 66 , 1.716722531 , -0.365195813 ), ( 66 , 1.648188186 , -0.334905865 ), ( 66 , 1.790175036 , -0.301804785 ), ( 66 , 1.687345238 , -0.254879414 ), ( 66 , 1.41022891 , -0.466095149 ), ( 66 , 1.340245273 , -0.33841838 ), ( 66 , 1.404335014 , -0.240081183 ), ( 66 , 1.344867834 , -0.263463004 ), ( 66 , 1.343159655 , -0.219794171 ), ( 66 , 1.379578043 , -0.198138648 ), ( 66 , 1.657870009 , -0.244223493 ), ( 66 , 1.662821612 , -0.206250928 ), ( 66 , 1.637966145 , -0.207769888 ), ( 66 , 1.437380965 , -0.126726582 ), ( 66 , 1.462968467 , -0.094037181 ), ( 66 , 1.462864269 , -0.094026358 ), ( 66 , 1.601233552 , -0.108261523 ), ( 66 , 1.509919461 , -0.074507446 ), ( 66 , 1.569178223 , -0.025204146 ), ( 66 , 2.049304984 , -0.24583601 ), ( 66 , 1.992674388 , -0.252088509 ), ( 66 , 1.840559297 , -0.197238413 ), ( 66 , 1.909071669 , -0.116586354 ), ( 66 , 2.248925873 , 0.0478829 ), ( 66 , 2.119819708 , -0.010005907 ), ( 66 , 2.054649774 , 0.001389383 ), ( 66 , 1.7957542 , -0.121588102 ), ( 66 , 1.899455865 , -0.002814537 ), ( 66 , 1.8515155 , 0.02597838 ), ( 66 , 1.68330623 , -0.06787698 ), ( 66 , 1.682405015 , -0.052210391 ), ( 66 , 1.626396161 , -0.043717425 ), ( 66 , 1.677983861 , -0.024753467 ), ( 66 , 1.6421425 , 0.01885532 ), ( 66 , 1.681223368 , 0.026205863 ), ( 66 , 1.839972968 , 0.084091399 ), ( 66 , 1.984306523 , 0.047567985 ), ( 66 , 1.908065182 , 0.116604131 ), ( 66 , 2.048747387 , 0.223648689 ), ( 66 , 1.968494955 , 0.195527239 ), ( 66 , 1.959955426 , 0.222701518 ), ( 66 , 1.994455416 , 0.295034594 ), ( 66 , 1.193984749 , -0.144088997 ), ( 66 , 1.46127352 , -0.071740449 ), ( 66 , 1.497298141 , -0.028160251 ), ( 66 , 1.458434228 , -0.050294696 ), ( 66 , 1.438568224 , -0.014013995 ), ( 66 , 1.433042344 , 0.000354002 ), ( 66 , 1.493536948 , 0.041314454 ), ( 66 , 1.427927616 , 0.040861557 ), ( 66 , 1.284853537 , -0.056302932 ), ( 66 , 1.360001027 , 0.008980822 ), ( 66 , 1.282512552 , 0.027389694 ), ( 66 , 1.36915695 , 0.009778712 ), ( 66 , 1.424713282 , 0.051240537 ), ( 66 , 1.427410656 , 0.067291941 ), ( 66 , 1.311466482 , 0.063105307 ), ( 66 , 1.004752337 , -0.026570912 ), ( 66 , 1.089588819 , 0.057984742 ), ( 66 , 0.912210895 , 0.056701528 ), ( 66 , 0.888589095 , 0.085208382 ), ( 66 , 0.937317767 , 0.11200799 ), ( 66 , 1.160744306 , 0.076329303 ), ( 66 , 1.127528987 , 0.165580406 ), ( 66 , 1.138040351 , 0.161005261 ), ( 66 , 1.106193042 , 0.155161487 ), ( 66 , 1.13281967 , 0.176647484 ), ( 66 , 1.182988711 , 0.263626325 ), ( 66 , 1.159007777 , 0.278220187 ), ( 66 , 1.181514888 , 0.281843607 ), ( 66 , 1.193958779 , 0.284893919 ), ( 66 , 1.545769911 , 0.056291749 ), ( 66 , 1.702102878 , 0.157597975 ), ( 66 , 1.734917496 , 0.189421835 ), ( 66 , 1.628438411 , 0.18544256 ), ( 66 , 1.708922115 , 0.205812892 ), ( 66 , 1.654155631 , 0.222471799 ), ( 66 , 1.460503015 , 0.098801834 ), ( 66 , 1.462643909 , 0.167782858 ), ( 66 , 1.546966078 , 0.205301562 ), ( 66 , 1.647395354 , 0.245369955 ), ( 66 , 1.518586732 , 0.216740951 ), ( 66 , 1.771087233 , 0.221544309 ), ( 66 , 1.876691948 , 0.370772466 ), ( 66 , 1.67935683 , 0.28024474 ), ( 66 , 1.642339784 , 0.299874408 ), ( 66 , 1.618921729 , 0.31643581 ), ( 66 , 1.743257966 , 0.429364863 ), ( 66 , 1.678697801 , 0.437182469 ), ( 66 , 1.446858708 , 0.260557703 ), ( 66 , 1.541636077 , 0.354285101 ), ( 66 , 1.496158979 , 0.331268348 ), ( 66 , 1.397594788 , 0.341702499 ), ( 66 , 1.492546224 , 0.395494524 ), ( 66 , 1.333146956 , 0.345691175 ), ( 66 , 1.334697834 , 0.461288298 ), ( 66 , 1.62454513 , 0.399828756 ), ( 66 , 1.679351986 , 0.518484246 ), ( 66 , 1.468273354 , 0.45274516 ), ( 66 , 1.416506598 , 0.544959073 ), ( 66 , 1.454117912 , 0.563552572 ), ( 66 , 1.473773154 , 0.585718597 ), ( 66 , 3.117241311 , -0.65883692 ), ( 66 , 3.199251638 , -0.595597674 ), ( 66 , 3.245428634 , -0.529454486 ), ( 66 , 3.085981671 , -0.528626952 ), ( 66 , 3.059254592 , -0.509546801 ), ( 66 , 3.049999222 , -0.431493666 ), ( 66 , 3.272806445 , -0.233760931 ), ( 66 , 2.934685225 , -0.379596837 ), ( 66 , 2.840955641 , -0.319956849 ), ( 66 , 2.851651305 , -0.269587685 ), ( 66 , 2.883977427 , -0.275638812 ), ( 66 , 2.895540504 , -0.234484151 ), ( 66 , 2.908992651 , -0.226950948 ), ( 66 , 3.187201503 , -0.135678716 ), ( 66 , 3.203792839 , -0.099759554 ), ( 66 , 3.220827235 , -0.068916647 ), ( 66 , 3.167755708 , -0.054658965 ), ( 66 , 3.146080093 , -0.030869286 ), ( 66 , 3.684200806 , -0.16157804 ), ( 66 , 3.391221767 , -0.210609286 ), ( 66 , 3.44369048 , -0.166471189 ), ( 66 , 3.743816749 , -0.131668276 ), ( 66 , 3.751952354 , -0.117745887 ), ( 66 , 3.683701889 , -0.09392517 ), ( 66 , 3.828698871 , 0.039737907 ), ( 66 , 3.620402787 , 0.146759676 ), ( 66 , 3.569777079 , 0.24961385 ), ( 66 , 2.825828663 , -0.266372436 ), ( 66 , 2.710675633 , -0.240620963 ), ( 66 , 2.780265212 , -0.20505606 ), ( 66 , 2.753162902 , -0.133300596 ), ( 66 , 2.703245915 , -0.089124601 ), ( 66 , 2.734118943 , -0.017243767 ), ( 66 , 2.847510764 , -0.003522481 ), ( 66 , 2.580280408 , -0.107888348 ), ( 66 , 2.583955603 , 0.001316686 ), ( 66 , 2.636051093 , 0.055857587 ), ( 66 , 2.709768463 , 0.039963127 ), ( 66 , 2.819118866 , 0.111228604 ), ( 66 , 2.878389826 , 0.204311293 ), ( 66 , 3.239895172 , 0.092591222 ), ( 66 , 3.262465287 , 0.150277478 ), ( 66 , 3.03567081 , 0.190435271 ), ( 66 , 3.028873752 , 0.192400786 ), ( 66 , 3.218992081 , 0.264319726 ), ( 66 , 3.369376986 , 0.297995788 ), ( 66 , 3.375164134 , 0.33998725 ), ( 66 , 3.29477015 , 0.320743339 ), ( 66 , 3.31191492 , 0.39548052 ), ( 66 , 2.864840308 , 0.445062278 ), ( 66 , 3.26653902 , 0.45774543 ), ( 66 , 3.19403577 , 0.498045176 ), ( 66 , 3.141395915 , 0.594022335 ), ( 66 , 3.11157293 , 0.657610085 ), ( 66 , 4.702273773 , -0.682457974 ), ( 66 , 4.75601993 , -0.571083585 ), ( 66 , 4.869443447 , -0.518348557 ), ( 66 , 4.751225473 , -0.444589209 ), ( 66 , 4.725603488 , -0.396512634 ), ( 66 , 4.750101531 , -0.374365612 ), ( 66 , 4.976000021 , -0.43531794 ), ( 66 , 4.966954314 , -0.434183428 ), ( 66 , 4.939896518 , -0.382608704 ), ( 66 , 5.028591697 , -0.378012783 ), ( 66 , 4.971772125 , -0.324047782 ), ( 66 , 4.866660632 , -0.363734958 ), ( 66 , 4.899653989 , -0.336577046 ), ( 66 , 4.761459009 , -0.346317685 ), ( 66 , 4.894373133 , -0.254194082 ), ( 66 , 4.878520833 , -0.244430686 ), ( 66 , 4.54523746 , -0.434698273 ), ( 66 , 4.468101247 , -0.448517491 ), ( 66 , 4.431138739 , -0.376458572 ), ( 66 , 4.4377889 , -0.341036574 ), ( 66 , 4.433280788 , -0.293321034 ), ( 66 , 4.444885145 , -0.259527983 ), ( 66 , 4.75481537 , -0.243202173 ), ( 66 , 4.680296506 , -0.107226204 ), ( 66 , 5.157665543 , -0.160469861 ), ( 66 , 5.215591066 , -0.117548969 ), ( 66 , 5.071695584 , -0.143138346 ), ( 66 , 5.129075055 , -0.13021136 ), ( 66 , 5.074870001 , -0.129167816 ), ( 66 , 5.083386919 , -0.085250992 ), ( 66 , 5.45104094 , -0.009835151 ), ( 66 , 5.310198023 , 0.156438052 ), ( 66 , 4.924701661 , -0.104791201 ), ( 66 , 4.879926201 , -0.055736961 ), ( 66 , 4.997353258 , -0.026391759 ), ( 66 , 5.056434515 , 0.005918727 ), ( 66 , 4.739106513 , -0.007787868 ), ( 66 , 4.885240749 , 0.091879511 ), ( 66 , 4.877355943 , 0.10268586 ), ( 66 , 5.121525104 , 0.095391336 ), ( 66 , 5.270199981 , 0.164061683 ), ( 66 , 5.056564557 , 0.167862299 ), ( 66 , 5.132410582 , 0.251166622 ), ( 66 , 5.011670976 , 0.251940162 ), ( 66 , 5.146200311 , 0.289219891 ), ( 66 , 4.427336995 , -0.205818904 ), ( 66 , 4.214952778 , -0.10715964 ), ( 66 , 4.314516749 , -0.141883514 ), ( 66 , 4.321873346 , -0.131151731 ), ( 66 , 4.677441132 , -0.021586478 ), ( 66 , 4.563888842 , -0.028822818 ), ( 66 , 4.645155837 , 0.045016238 ), ( 66 , 4.36890212 , 0.021735296 ), ( 66 , 4.536877351 , 0.037344875 ), ( 66 , 4.532969763 , 0.106211994 ), ( 66 , 4.501879918 , 0.137791221 ), ( 66 , 4.017645098 , -0.042141523 ), ( 66 , 4.080030137 , 0.029130217 ), ( 66 , 4.126214614 , 0.015551226 ), ( 66 , 4.452732618 , 0.114901718 ), ( 66 , 4.477471809 , 0.169888534 ), ( 66 , 4.47772288 , 0.182455222 ), ( 66 , 4.328157554 , 0.164309548 ), ( 66 , 4.238954203 , 0.169505398 ), ( 66 , 4.398877646 , 0.237192925 ), ( 66 , 4.746392442 , 0.171896852 ), ( 66 , 4.746449401 , 0.228134906 ), ( 66 , 4.75665278 , 0.287564531 ), ( 66 , 4.874747804 , 0.199341826 ), ( 66 , 4.929280686 , 0.278109567 ), ( 66 , 4.957011079 , 0.314077089 ), ( 66 , 4.974048662 , 0.398189481 ), ( 66 , 4.862166122 , 0.357205451 ), ( 66 , 4.867316174 , 0.411995466 ), ( 66 , 4.497554188 , 0.217587811 ), ( 66 , 4.439819529 , 0.242331911 ), ( 66 , 4.544650311 , 0.292013028 ), ( 66 , 4.440577082 , 0.425530945 ), ( 66 , 4.629882295 , 0.427843513 ), ( 66 , 4.752413884 , 0.531810479 ), ( 66 , 4.544492842 , 0.501923403 ), ( 66 , 4.754330892 , 0.67115807 ), ( 66 , 0.442298855 , -1.381393847 ), ( 66 , 1.426796349 , -1.197697951 ), ( 66 , 1.050383349 , -1.242090775 ), ( 66 , 0.51438167 , -1.141877348 ), ( 66 , 0.273648904 , -1.142424023 ), ( 66 , 0.979853876 , -0.947252439 ), ( 66 , 0.879460668 , -0.833861661 ), ( 66 , 1.533203147 , -1.117594341 ), ( 66 , 1.456226615 , -0.958224536 ), ( 66 , 1.525280832 , -0.783222583 ), ( 66 , 0.969361694 , -0.802114825 ), ( 66 , 1.106520079 , -0.704371998 ), ( 66 , 0.908414776 , -0.625760797 ), ( 66 , 1.148117635 , -0.620372619 ), ( 66 , 1.25588311 , -0.5239431 ), ( 66 , 1.198326357 , -0.419583858 ), ( 66 , 0.305967163 , -1.006970981 ), ( 66 , 0.162784576 , -0.949351682 ), ( 66 , 0.608303965 , -0.730388502 ), ( 66 , 0.691228799 , -0.663067665 ), ( 66 , 0.558916127 , -0.730952613 ), ( 66 , 0.56640127 , -0.713257536 ), ( 66 , 0.470349482 , -0.648552894 ), ( 66 , 0.218441666 , -0.757382339 ), ( 66 , 0.081643034 , -0.754602944 ), ( 66 , 0.289922502 , -0.622398162 ), ( 66 , 0.516813779 , -0.577127005 ), ( 66 , 0.477026667 , -0.54231861 ), ( 66 , 0.391454709 , -0.447112411 ), ( 66 , 0.431241817 , -0.436718916 ), ( 66 , 0.856037107 , -0.538039666 ), ( 66 , 0.831611728 , -0.414312869 ), ( 66 , 0.729480107 , -0.392455405 ), ( 66 , 1.072407449 , -0.35801304 ), ( 66 , 1.09957972 , -0.301507553 ), ( 66 , 1.065295987 , -0.289535385 ), ( 66 , 0.965921564 , -0.341811647 ), ( 66 , 1.031757341 , -0.237321363 ), ( 66 , 0.960762082 , -0.265754961 ), ( 66 , 0.965307849 , -0.205986894 ), ( 66 , 0.655508 , -0.439582597 ), ( 66 , 0.565395411 , -0.424919253 ), ( 66 , 0.536082476 , -0.416904167 ), ( 66 , 0.727601549 , -0.37767887 ), ( 66 , 0.553582241 , -0.334040463 ), ( 66 , 0.856793727 , -0.100017991 ), ( 66 , 1.775780509 , -1.518871614 ), ( 66 , 3.058724298 , -1.45036638 ), ( 66 , 2.846961248 , -1.388573942 ), ( 66 , 3.070079627 , -1.4047022 ), ( 66 , 3.067130664 , -1.384159047 ), ( 66 , 2.772502131 , -1.331842205 ), ( 66 , 3.064158638 , -1.312964822 ), ( 66 , 2.929931705 , -1.246796351 ), ( 66 , 2.868162511 , -1.204941457 ), ( 66 , 2.98167737 , -1.133664772 ), ( 66 , 2.513640971 , -1.133590669 ), ( 66 , 2.485120715 , -1.088400881 ), ( 66 , 2.703950909 , -1.136858866 ), ( 66 , 2.806298327 , -1.067591949 ), ( 66 , 2.7147334 , -1.016922681 ), ( 66 , 2.722027107 , -1.011488286 ), ( 66 , 1.634933841 , -1.285021934 ), ( 66 , 1.761096876 , -1.27616541 ), ( 66 , 1.978169375 , -1.200238516 ), ( 66 , 2.285969336 , -1.19051363 ), ( 66 , 2.273625421 , -1.166164306 ), ( 66 , 2.027766008 , -1.153166898 ), ( 66 , 2.168053123 , -1.120273228 ), ( 66 , 1.958508634 , -1.125909586 ), ( 66 , 2.172613426 , -1.032659146 ), ( 66 , 2.382934154 , -1.125731615 ), ( 66 , 2.458535379 , -1.052473233 ), ( 66 , 2.424165164 , -1.004920078 ), ( 66 , 2.433441014 , -0.951112722 ), ( 66 , 2.205677626 , -1.014615646 ), ( 66 , 2.272087791 , -1.004356126 ), ( 66 , 2.20415263 , -0.968183225 ), ( 66 , 2.223575484 , -0.963264773 ), ( 66 , 2.320233454 , -0.974047552 ), ( 66 , 2.231812875 , -0.949359799 ), ( 66 , 2.212027696 , -0.919878584 ), ( 66 , 2.358955252 , -0.89981396 ), ( 66 , 2.324252776 , -0.909819348 ), ( 66 , 3.103265282 , -1.079418854 ), ( 66 , 2.930722002 , -1.052623443 ), ( 66 , 2.906394115 , -1.046322385 ), ( 66 , 2.901431139 , -1.044734617 ), ( 66 , 2.93239875 , -1.019680106 ), ( 66 , 2.90796338 , -0.889361728 ), ( 66 , 2.825859689 , -1.00299511 ), ( 66 , 2.734639546 , -0.831827724 ), ( 66 , 3.103272685 , -0.766777666 ), ( 66 , 2.9332307 , -0.56607518 ), ( 66 , 2.564462916 , -0.871675831 ), ( 66 , 2.550892163 , -0.847336475 ), ( 66 , 2.492831492 , -0.836928008 ), ( 66 , 2.58154181 , -0.811791453 ), ( 66 , 2.693633923 , -0.817423521 ), ( 66 , 2.682713017 , -0.728253429 ), ( 66 , 2.678825265 , -0.703556753 ), ( 66 , 2.653015979 , -0.651590151 ), ( 66 , 2.46584051 , -0.767531517 ), ( 66 , 2.573728539 , -0.633003529 ), ( 66 , 2.509759645 , -0.625242614 ), ( 66 , 2.796271091 , -0.623809906 ), ( 66 , 2.699281317 , -0.642359709 ), ( 66 , 2.679728622 , -0.415630456 ), ( 66 , 1.67125373 , -1.111478295 ), ( 66 , 1.677446053 , -1.107055512 ), ( 66 , 1.692141995 , -1.084717771 ), ( 66 , 1.625498059 , -1.072923067 ), ( 66 , 1.641964925 , -1.033508931 ), ( 66 , 1.826508858 , -0.984279789 ), ( 66 , 1.888324855 , -1.003404001 ), ( 66 , 1.921525502 , -0.982519509 ), ( 66 , 1.989788987 , -0.975423262 ), ( 66 , 1.892216889 , -0.936679777 ), ( 66 , 1.978571494 , -0.882861109 ), ( 66 , 2.020725646 , -0.872543997 ), ( 66 , 1.763493314 , -0.955229622 ), ( 66 , 2.127973895 , -0.855393073 ), ( 66 , 2.105090554 , -0.779583778 ), ( 66 , 2.237931254 , -0.830872341 ), ( 66 , 2.275827689 , -0.785255853 ), ( 66 , 2.294196373 , -0.772272838 ), ( 66 , 2.248034771 , -0.697610729 ), ( 66 , 2.078695773 , -0.710978991 ), ( 66 , 2.000146651 , -0.697991032 ), ( 66 , 2.035730707 , -0.659259422 ), ( 66 , 2.195982799 , -0.668218864 ), ( 66 , 2.238272926 , -0.604477648 ), ( 66 , 2.103568295 , -0.646643754 ), ( 66 , 2.154110476 , -0.585897553 ), ( 66 , 2.163658788 , -0.539761216 ), ( 66 , 1.748779406 , -0.83115119 ), ( 66 , 1.611767719 , -0.865025469 ), ( 66 , 1.800568419 , -0.741842815 ), ( 66 , 1.808356002 , -0.739416265 ), ( 66 , 1.731604843 , -0.725307958 ), ( 66 , 1.704653691 , -0.705952368 ), ( 66 , 1.68915729 , -0.661395764 ), ( 66 , 1.755244717 , -0.670184874 ), ( 66 , 1.72526307 , -0.641928898 ), ( 66 , 1.997310921 , -0.663399761 ), ( 66 , 1.9697306 , -0.63099263 ), ( 66 , 1.970963493 , -0.62636011 ), ( 66 , 1.934377072 , -0.634254365 ), ( 66 , 1.916491617 , -0.588650916 ), ( 66 , 2.010283278 , -0.487737793 ), ( 66 , 2.070069196 , -0.490529969 ), ( 66 , 1.836215483 , -0.584073979 ), ( 66 , 1.886712147 , -0.479525887 ), ( 66 , 1.987752153 , -0.46475523 ), ( 66 , 1.983043493 , -0.455828617 ), ( 66 , 2.023062323 , -0.445125486 ), ( 66 , 2.032715461 , -0.423347572 ), ( 66 , 1.948999535 , -0.41386271 ), ( 66 , 1.990212246 , -0.386774952 ), ( 66 , 2.324100662 , -0.637836791 ), ( 66 , 2.460170497 , -0.615186325 ), ( 66 , 2.497145592 , -0.499643488 ), ( 66 , 2.414488219 , -0.517738209 ), ( 66 , 2.257988912 , -0.588978237 ), ( 66 , 2.245068076 , -0.568972448 ), ( 66 , 2.237607997 , -0.549701168 ), ( 66 , 2.198341567 , -0.505625699 ), ( 66 , 2.222935399 , -0.477036004 ), ( 66 , 2.515705642 , -0.431138792 ), ( 66 , 2.673086271 , -0.334295288 ), ( 66 , 2.710198406 , -0.313900125 ), ( 66 , 2.216104757 , -0.456108437 ), ( 66 , 2.16815059 , -0.372114575 ), ( 66 , 2.263132821 , -0.344473744 ), ( 66 , 2.220453552 , -0.365655202 ), ( 66 , 2.214625997 , -0.363797437 ), ( 66 , 2.040473354 , -0.279089741 ), ( 66 , 2.214156687 , -0.260668522 ), ( 66 , 2.441555752 , -0.19748176 ), ( 66 , 2.455883446 , -0.17172075 ), ( 66 , 2.26564978 , -0.222311715 ), ( 66 , 2.273404961 , -0.157986864 ), ( 66 , 2.207915189 , -0.183549329 ), ( 66 , 2.261674834 , -0.116279876 ), ( 66 , 4.050223526 , -1.538220882 ), ( 66 , 3.223346001 , -1.543130198 ), ( 66 , 3.253447132 , -1.503612757 ), ( 66 , 3.268151127 , -1.462631527 ), ( 66 , 4.57596242 , -1.444776764 ), ( 66 , 3.202419311 , -1.371376395 ), ( 66 , 3.548167816 , -1.35385973 ), ( 66 , 3.522530694 , -1.303618734 ), ( 66 , 3.752263275 , -1.290993098 ), ( 66 , 3.932992266 , -1.247752564 ), ( 66 , 4.269037611 , -1.274850113 ), ( 66 , 4.30874706 , -1.209970561 ), ( 66 , 4.393545882 , -1.188599587 ), ( 66 , 4.555136165 , -1.14672011 ), ( 66 , 4.416953706 , -1.181273565 ), ( 66 , 4.442986579 , -1.138040662 ), ( 66 , 4.158020248 , -1.137124669 ), ( 66 , 4.193932179 , -1.113110897 ), ( 66 , 4.085332776 , -1.145175064 ), ( 66 , 4.327295387 , -1.12527495 ), ( 66 , 4.232360248 , -1.098991424 ), ( 66 , 3.312808951 , -1.315466046 ), ( 66 , 3.250071587 , -1.267178324 ), ( 66 , 3.470668353 , -1.216137152 ), ( 66 , 3.783819321 , -1.161831828 ), ( 66 , 3.701143485 , -1.103182628 ), ( 66 , 3.440319478 , -1.183276771 ), ( 66 , 3.242720162 , -1.180362117 ), ( 66 , 3.425346751 , -1.124719817 ), ( 66 , 3.605412606 , -1.089986335 ), ( 66 , 3.666439844 , -1.073050562 ), ( 66 , 3.931511083 , -1.127072455 ), ( 66 , 3.983787113 , -1.077633114 ), ( 66 , 3.96161752 , -1.066897204 ), ( 66 , 3.819140575 , -1.047473746 ), ( 66 , 3.887045881 , -0.931456624 ), ( 66 , 3.981615245 , -0.841585201 ), ( 66 , 4.000777993 , -0.806386515 ), ( 66 , 3.830622581 , -0.838170318 ), ( 66 , 4.656199392 , -1.047103182 ), ( 66 , 4.640616526 , -0.995225623 ), ( 66 , 4.262874643 , -0.937189279 ), ( 66 , 4.572385144 , -0.820762595 ), ( 66 , 4.451621915 , -0.785201973 ), ( 66 , 4.42467058 , -0.729401704 ), ( 66 , 4.517663538 , -0.666942925 ), ( 66 , 4.549352197 , -0.626750007 ), ( 66 , 4.46780855 , -0.660504282 ), ( 66 , 4.123298204 , -0.886375778 ), ( 66 , 4.226208949 , -0.682301448 ), ( 66 , 4.07275581 , -0.706706175 ), ( 66 , 3.947561507 , -0.713168954 ), ( 66 , 4.023799433 , -0.656868355 ), ( 66 , 4.133897909 , -0.701526364 ), ( 66 , 4.102645963 , -0.544787063 ), ( 66 , 4.342511487 , -0.623515838 ), ( 66 , 4.432974964 , -0.584804428 ), ( 66 , 4.382040121 , -0.479203038 ), ( 66 , 4.194576811 , -0.556570365 ), ( 66 , 4.154795893 , -0.521630375 ), ( 66 , 4.233578771 , -0.469656891 ), ( 66 , 4.233139174 , -0.429048309 ), ( 66 , 3.194005435 , -1.125919018 ), ( 66 , 3.261499042 , -1.017812463 ), ( 66 , 3.585548683 , -0.952270549 ), ( 66 , 3.569841867 , -0.878773454 ), ( 66 , 3.425684003 , -0.822349033 ), ( 66 , 3.480810033 , -0.830601117 ), ( 66 , 3.531093721 , -0.794784748 ), ( 66 , 3.496900975 , -0.761564757 ), ( 66 , 3.773875488 , -0.81207873 ), ( 66 , 3.666561067 , -0.805071422 ), ( 66 , 3.77959698 , -0.738605306 ), ( 66 , 3.814120976 , -0.734772026 ), ( 66 , 3.800206026 , -0.712882553 ), ( 66 , 3.84100453 , -0.712824451 ), ( 66 , 3.580658421 , -0.773710945 ), ( 66 , 3.736340814 , -0.58017025 ), ( 66 , 3.745448262 , -0.579812992 ), ( 66 , 3.247862104 , -0.826814024 ), ( 66 , 3.249553758 , -0.722300755 ), ( 66 , 3.522265135 , -0.700969576 ), ( 66 , 3.678409986 , -0.552982755 ), ( 66 , 3.54551384 , -0.516010138 ), ( 66 , 3.627350638 , -0.425716517 ), ( 66 , 3.584530444 , -0.409275874 ), ( 66 , 3.896926173 , -0.667713021 ), ( 66 , 4.053427196 , -0.503827159 ), ( 66 , 3.951274474 , -0.533202871 ), ( 66 , 3.985745086 , -0.441740578 ), ( 66 , 3.952278283 , -0.450113549 ), ( 66 , 4.128632801 , -0.489765777 ), ( 66 , 4.093948569 , -0.492302309 ), ( 66 , 4.26287498 , -0.371830355 ), ( 66 , 4.241042472 , -0.339472605 ), ( 66 , 4.25271873 , -0.32352328 ), ( 66 , 3.74861197 , -0.473702222 ), ( 66 , 3.719340553 , -0.425221523 ), ( 66 , 3.866690525 , -0.369597937 ), ( 66 , 3.678553931 , -0.303112846 ), ( 66 , 3.688027417 , -0.285116707 ), ( 66 , 3.684602314 , -0.261307938 ), ( 66 , 3.865736788 , -0.269820004 ), ( 66 , 3.874270104 , -0.224111803 ), ( 66 , 3.919238664 , -0.194688552 ), ( 66 , 4.095713975 , -0.153442864 ), ( 66 , 3.772875908 , -0.203676532 ), ( 66 , 3.937890128 , -0.136842822 ), ( 66 , 5.958264273 , -1.55017602 ), ( 66 , 4.719231771 , -1.487296967 ), ( 66 , 6.104937127 , -1.387053296 ), ( 66 , 5.21867444 , -1.419822686 ), ( 66 , 4.956744204 , -1.408968466 ), ( 66 , 4.736181771 , -1.422214729 ), ( 66 , 5.334999114 , -1.378133243 ), ( 66 , 5.577518104 , -1.315053413 ), ( 66 , 5.418166124 , -1.31513923 ), ( 66 , 6.063908458 , -1.184670778 ), ( 66 , 5.97059987 , -1.076595668 ), ( 66 , 4.971952154 , -1.229924194 ), ( 66 , 5.079300217 , -1.193300706 ), ( 66 , 5.32962963 , -1.165001455 ), ( 66 , 5.398239996 , -1.135046331 ), ( 66 , 5.317704475 , -1.080481461 ), ( 66 , 5.461364434 , -1.08960088 ), ( 66 , 5.566233145 , -1.005858619 ), ( 66 , 5.689676713 , -1.000520713 ), ( 66 , 5.674775589 , -0.972810167 ), ( 66 , 5.624348765 , -0.937348076 ), ( 66 , 6.088556099 , -0.989463751 ), ( 66 , 6.052617351 , -0.865790246 ), ( 66 , 6.034248278 , -0.835112624 ), ( 66 , 6.193591525 , -0.813978793 ), ( 66 , 6.103278127 , -0.827903962 ), ( 66 , 6.143610102 , -0.620368318 ), ( 66 , 6.107433353 , -0.588321094 ), ( 66 , 5.647383474 , -0.749178031 ), ( 66 , 5.908320014 , -0.560987227 ), ( 66 , 6.068401683 , -0.515318466 ), ( 66 , 5.932982609 , -0.494380965 ), ( 66 , 5.741823396 , -0.534176511 ), ( 66 , 5.958304845 , -0.440466562 ), ( 66 , 4.85852667 , -1.024674537 ), ( 66 , 4.755838774 , -1.030445905 ), ( 66 , 4.917401103 , -0.874321268 ), ( 66 , 5.059817155 , -0.900116675 ), ( 66 , 4.950367915 , -0.8705575 ), ( 66 , 5.11480721 , -0.777475571 ), ( 66 , 5.318601112 , -0.832710658 ), ( 66 , 5.39217882 , -0.77383428 ), ( 66 , 5.41668534 , -0.735377262 ), ( 66 , 5.307518294 , -0.636236811 ), ( 66 , 5.353246475 , -0.652817933 ), ( 66 , 5.30772443 , -0.614322563 ), ( 66 , 4.768838719 , -0.882427784 ), ( 66 , 4.819524693 , -0.866624354 ), ( 66 , 4.799779223 , -0.851117721 ), ( 66 , 4.950126125 , -0.79388562 ), ( 66 , 5.070865359 , -0.733321832 ), ( 66 , 4.839861392 , -0.765253228 ), ( 66 , 4.840146428 , -0.678084904 ), ( 66 , 4.883858785 , -0.596316466 ), ( 66 , 5.067990508 , -0.610582649 ), ( 66 , 5.222112725 , -0.533552364 ), ( 66 , 5.144084305 , -0.499290434 ), ( 66 , 5.019840789 , -0.523730994 ), ( 66 , 4.942313369 , -0.536412627 ), ( 66 , 5.538685059 , -0.640654956 ), ( 66 , 5.438059742 , -0.630421882 ), ( 66 , 5.580237637 , -0.502066256 ), ( 66 , 5.469063898 , -0.536149052 ), ( 66 , 5.305122793 , -0.523690112 ), ( 66 , 5.467339413 , -0.415102688 ), ( 66 , 5.651674098 , -0.409356783 ), ( 66 , 5.800966775 , -0.412929108 ), ( 66 , 5.60308064 , -0.397012937 ), ( 66 , 5.716899341 , -0.29399967 ), ( 66 , 5.252295013 , -0.39436485 ), ( 66 , 5.361331773 , -0.27474097 ), ( 66 , 5.205908157 , -0.254879962 ), ( 66 , 5.288193751 , -0.216290433 ), ( 66 , 5.548794836 , -0.252590572 ), ( 66 , 5.476574055 , -0.023960748 ), ( 67 , 1.093927013 , 0.321542691 ), ( 67 , 0.82613894 , 0.362348502 ), ( 67 , 0.954168391 , 0.395479325 ), ( 67 , 0.99530937 , 0.43612669 ), ( 67 , 0.557483015 , 0.31467394 ), ( 67 , 0.530377053 , 0.408327202 ), ( 67 , 0.756624491 , 0.552301561 ), ( 67 , 0.793627548 , 0.678553229 ), ( 67 , 1.179575523 , 0.490999669 ), ( 67 , 1.3292146 , 0.483381924 ), ( 67 , 1.359780675 , 0.521913095 ), ( 67 , 1.329133913 , 0.564086701 ), ( 67 , 1.07743793 , 0.583748539 ), ( 67 , 1.186602346 , 0.641272681 ), ( 67 , 1.416974559 , 0.631807165 ), ( 67 , 1.399396508 , 0.653427576 ), ( 67 , 1.553091504 , 0.721224911 ), ( 67 , 1.479793845 , 0.721828694 ), ( 67 , 1.429656214 , 0.756912275 ), ( 67 , 1.233914506 , 0.670670595 ), ( 67 , 1.310685288 , 0.692103941 ), ( 67 , 1.222520481 , 0.711899952 ), ( 67 , 1.249867776 , 0.739126986 ), ( 67 , 1.396432183 , 0.775366826 ), ( 67 , 1.399110192 , 0.819671739 ), ( 67 , 1.554393478 , 0.904149194 ), ( 67 , 1.51407402 , 0.899204137 ), ( 67 , 0.989084152 , 0.563568825 ), ( 67 , 1.003829449 , 0.661018195 ), ( 67 , 0.98444001 , 0.675030204 ), ( 67 , 1.108254036 , 0.662652424 ), ( 67 , 0.926308362 , 0.71419966 ), ( 67 , 0.923074973 , 0.835353537 ), ( 67 , 0.930934101 , 0.836883633 ), ( 67 , 1.348583543 , 0.857339308 ), ( 67 , 1.200318158 , 1.002162134 ), ( 67 , 1.351185985 , 1.090470568 ), ( 67 , 1.516414411 , 1.110011666 ), ( 67 , 0.333629905 , 0.411712632 ), ( 67 , 0.683312529 , 0.740025977 ), ( 67 , 0.514608634 , 0.727706715 ), ( 67 , 0.514817775 , 0.82197119 ), ( 67 , 0.230778494 , 0.672802885 ), ( 67 , 0.33718093 , 0.689065171 ), ( 67 , 0.256207399 , 0.820942473 ), ( 67 , 0.141579313 , 0.759126215 ), ( 67 , 0.136202511 , 0.767011149 ), ( 67 , 0.01370246 , 0.746091132 ), ( 67 , 0.066747785 , 0.771494438 ), ( 67 , 0.054860579 , 0.780285103 ), ( 67 , 0.055870101 , 0.804514897 ), ( 67 , 0.022521478 , 0.789393073 ), ( 67 , 0.21649925 , 0.833635429 ), ( 67 , 0.36787658 , 0.752970418 ), ( 67 , 0.278768658 , 0.831514538 ), ( 67 , 0.268130395 , 0.864709509 ), ( 67 , 0.292376317 , 0.993689525 ), ( 67 , 0.341347335 , 1.00885547 ), ( 67 , 0.045795238 , 0.997726585 ), ( 67 , 0.169393933 , 1.044162891 ), ( 67 , 0.250150605 , 1.0720124 ), ( 67 , 0.104196563 , 1.063967911 ), ( 67 , 0.0576678 , 1.082815263 ), ( 67 , 0.789295375 , 0.913712326 ), ( 67 , 0.625431362 , 0.909019988 ), ( 67 , 0.668958551 , 0.912962497 ), ( 67 , 0.75427451 , 0.924976127 ), ( 67 , 0.582759141 , 0.926047002 ), ( 67 , 0.651957214 , 0.969288101 ), ( 67 , 0.606825561 , 0.997202438 ), ( 67 , 0.729378656 , 1.057159375 ), ( 67 , 1.067346354 , 0.96108683 ), ( 67 , 1.122902577 , 0.997947293 ), ( 67 , 1.030519837 , 1.040968076 ), ( 67 , 1.281349839 , 1.073053125 ), ( 67 , 0.857035773 , 1.158550694 ), ( 67 , 1.350958488 , 1.21542933 ), ( 67 , 1.418034158 , 1.286433059 ), ( 67 , 0.569098272 , 1.046837794 ), ( 67 , 0.516228988 , 1.040666619 ), ( 67 , 0.428522418 , 1.088243957 ), ( 67 , 0.426674261 , 1.129914912 ), ( 67 , 0.563586974 , 1.24878912 ), ( 67 , 0.309201982 , 1.182988323 ), ( 67 , 0.341693387 , 1.183619005 ), ( 67 , 0.412443774 , 1.20338588 ), ( 67 , 0.268355051 , 1.210534887 ), ( 67 , 0.292016746 , 1.237985031 ), ( 67 , 1.078536246 , 1.291542049 ), ( 67 , 1.140259943 , 1.32829995 ), ( 67 , 1.244599026 , 1.390277014 ), ( 67 , 0.533011656 , 1.317760235 ), ( 67 , 0.440200636 , 1.360814369 ), ( 67 , 0.346814476 , 1.41187131 ), ( 67 , 1.500156679 , 1.495196293 ), ( 67 , 1.201696455 , 1.492730717 ), ( 67 , 0.59679234 , 1.458416861 ), ( 67 , 2.4428148 , 0.091035578 ), ( 67 , 2.293285335 , 0.081399216 ), ( 67 , 2.298456662 , 0.112032437 ), ( 67 , 2.525314319 , 0.188098988 ), ( 67 , 2.266346729 , 0.139930115 ), ( 67 , 2.32249838 , 0.14069603 ), ( 67 , 2.23361994 , 0.171286615 ), ( 67 , 2.353783963 , 0.228190191 ), ( 67 , 2.409788419 , 0.26174936 ), ( 67 , 2.578870586 , 0.228048022 ), ( 67 , 2.522085182 , 0.25039667 ), ( 67 , 2.550362787 , 0.32922326 ), ( 67 , 2.666628824 , 0.361198876 ), ( 67 , 2.438997368 , 0.309002249 ), ( 67 , 2.525973644 , 0.354256929 ), ( 67 , 2.562882617 , 0.41272956 ), ( 67 , 2.0979662 , 0.221280266 ), ( 67 , 2.173981641 , 0.273630559 ), ( 67 , 2.270529535 , 0.343303473 ), ( 67 , 2.26766188 , 0.345197584 ), ( 67 , 2.232658518 , 0.331395947 ), ( 67 , 2.274404883 , 0.357389519 ), ( 67 , 2.077408224 , 0.412311301 ), ( 67 , 2.138979496 , 0.451067507 ), ( 67 , 2.374365152 , 0.486917172 ), ( 67 , 2.287114053 , 0.644336868 ), ( 67 , 2.386135967 , 0.668082733 ), ( 67 , 2.700940973 , 0.431309032 ), ( 67 , 2.856171011 , 0.517136607 ), ( 67 , 2.68389972 , 0.549220923 ), ( 67 , 2.602813538 , 0.56521983 ), ( 67 , 2.783234987 , 0.594784833 ), ( 67 , 2.730328162 , 0.618283209 ), ( 67 , 2.978811263 , 0.701194261 ), ( 67 , 3.120195698 , 0.811174015 ), ( 67 , 2.698899389 , 0.751327537 ), ( 67 , 2.700795723 , 0.81612556 ), ( 67 , 2.462539173 , 0.638562371 ), ( 67 , 2.447766534 , 0.666512344 ), ( 67 , 2.500999108 , 0.794360295 ), ( 67 , 2.449539579 , 0.791855166 ), ( 67 , 2.612494546 , 0.87484691 ), ( 67 , 2.847206458 , 0.916354467 ), ( 67 , 3.011630807 , 0.948795067 ), ( 67 , 2.930055586 , 0.9450897 ), ( 67 , 2.935385415 , 0.958085856 ), ( 67 , 2.677907862 , 0.881331616 ), ( 67 , 3.085427519 , 1.071659669 ), ( 67 , 3.049176379 , 1.123066631 ), ( 67 , 3.126896945 , 1.138701292 ), ( 67 , 1.949655806 , 0.375865549 ), ( 67 , 2.136222226 , 0.507769017 ), ( 67 , 1.908992542 , 0.553232783 ), ( 67 , 1.97839118 , 0.649051863 ), ( 67 , 1.92956289 , 0.680601916 ), ( 67 , 2.11245634 , 0.576497017 ), ( 67 , 2.230428436 , 0.702053799 ), ( 67 , 2.244914555 , 0.822742081 ), ( 67 , 2.05624002 , 0.647201304 ), ( 67 , 1.989377909 , 0.751025607 ), ( 67 , 1.78781572 , 0.654721865 ), ( 67 , 1.873736032 , 0.638147117 ), ( 67 , 1.90987246 , 0.67851512 ), ( 67 , 1.829695956 , 0.738530958 ), ( 67 , 1.703530485 , 0.722594101 ), ( 67 , 1.596427212 , 0.842108689 ), ( 67 , 1.95858826 , 0.808334777 ), ( 67 , 1.945457261 , 0.847314851 ), ( 67 , 1.980329388 , 0.895597898 ), ( 67 , 2.003669584 , 0.940733097 ), ( 67 , 1.728028461 , 0.984115201 ), ( 67 , 1.584202546 , 0.995151718 ), ( 67 , 1.671615913 , 0.994416094 ), ( 67 , 1.729004587 , 1.014130744 ), ( 67 , 1.858870913 , 1.043738913 ), ( 67 , 1.599814003 , 1.107479443 ), ( 67 , 1.576257538 , 1.143627254 ), ( 67 , 2.408280063 , 0.880342119 ), ( 67 , 2.536300793 , 0.975049959 ), ( 67 , 2.227774674 , 0.944555701 ), ( 67 , 2.175035012 , 0.952316541 ), ( 67 , 2.14371622 , 0.951895606 ), ( 67 , 2.833887326 , 1.1136965 ), ( 67 , 2.894878871 , 1.222262816 ), ( 67 , 2.078882314 , 0.986185604 ), ( 67 , 2.105715768 , 0.99960616 ), ( 67 , 2.120758811 , 1.034087112 ), ( 67 , 2.193595402 , 1.05821446 ), ( 67 , 2.13957405 , 1.21694641 ), ( 67 , 1.834118374 , 1.175137736 ), ( 67 , 2.443130352 , 1.291825594 ), ( 67 , 2.807783294 , 1.403718507 ), ( 67 , 2.775202573 , 1.404895898 ), ( 67 , 2.077853403 , 1.400908821 ), ( 67 , 1.746534537 , 1.389275502 ), ( 67 , 1.765002156 , 1.433176374 ), ( 67 , 3.996334591 , 0.112830295 ), ( 67 , 4.061925463 , 0.149733033 ), ( 67 , 3.851535979 , 0.256712127 ), ( 67 , 4.115377842 , 0.238542433 ), ( 67 , 4.086119495 , 0.263570664 ), ( 67 , 4.246085869 , 0.376402616 ), ( 67 , 3.72885544 , 0.243927278 ), ( 67 , 3.573721813 , 0.318787383 ), ( 67 , 3.770054552 , 0.478449633 ), ( 67 , 3.762197138 , 0.512598658 ), ( 67 , 4.455652342 , 0.474661592 ), ( 67 , 4.485546072 , 0.544648623 ), ( 67 , 4.252771332 , 0.590915801 ), ( 67 , 4.335815811 , 0.664824533 ), ( 67 , 4.590252801 , 0.598152075 ), ( 67 , 4.555471967 , 0.673399306 ), ( 67 , 4.674136142 , 0.699397607 ), ( 67 , 4.642889469 , 0.786005719 ), ( 67 , 4.537190706 , 0.790795266 ), ( 67 , 4.136560748 , 0.553885636 ), ( 67 , 4.241625533 , 0.681644803 ), ( 67 , 3.98800867 , 0.751336216 ), ( 67 , 4.664559574 , 0.945874533 ), ( 67 , 3.626256064 , 0.606893929 ), ( 67 , 3.52747532 , 0.710859359 ), ( 67 , 3.78499368 , 0.716017164 ), ( 67 , 3.826315312 , 0.747537882 ), ( 67 , 3.735174484 , 0.795289723 ), ( 67 , 3.26181038 , 0.721780651 ), ( 67 , 3.56337365 , 0.863703248 ), ( 67 , 3.574643015 , 0.904154736 ), ( 67 , 3.94054092 , 0.779195114 ), ( 67 , 3.881996558 , 0.8503592 ), ( 67 , 3.996132888 , 0.889038208 ), ( 67 , 4.097851443 , 1.010972431 ), ( 67 , 4.229941882 , 0.974402182 ), ( 67 , 3.703417272 , 1.035634672 ), ( 67 , 3.654424761 , 1.073279108 ), ( 67 , 3.516722413 , 1.104144323 ), ( 67 , 3.521517447 , 1.129852233 ), ( 67 , 3.811781952 , 1.141370779 ), ( 67 , 3.396031422 , 1.133165773 ), ( 67 , 4.433870088 , 1.355297746 ), ( 67 , 3.554841155 , 1.335992123 ), ( 67 , 5.518270239 , 0.051353076 ), ( 67 , 5.526876004 , 0.066383051 ), ( 67 , 5.447214099 , 0.0636879 ), ( 67 , 5.426530704 , 0.09407641 ), ( 67 , 5.626832427 , 0.11486626 ), ( 67 , 5.621767385 , 0.143037844 ), ( 67 , 5.600717615 , 0.245220945 ), ( 67 , 5.497128123 , 0.293638987 ), ( 67 , 5.724100963 , 0.193582077 ), ( 67 , 5.701866663 , 0.239453104 ), ( 67 , 5.781652197 , 0.258584628 ), ( 67 , 5.655222806 , 0.263219674 ), ( 67 , 5.771114562 , 0.279014165 ), ( 67 , 5.755210601 , 0.331962857 ), ( 67 , 5.624316517 , 0.31251732 ), ( 67 , 5.649483572 , 0.319901717 ), ( 67 , 5.689633585 , 0.39819701 ), ( 67 , 5.636698112 , 0.416177278 ), ( 67 , 5.340307547 , 0.280070035 ), ( 67 , 5.2597391 , 0.270536407 ), ( 67 , 5.271367686 , 0.290849094 ), ( 67 , 5.349523042 , 0.346720376 ), ( 67 , 5.354829558 , 0.357381197 ), ( 67 , 5.376272845 , 0.398359279 ), ( 67 , 5.141287458 , 0.362734576 ), ( 67 , 5.295666424 , 0.423055201 ), ( 67 , 5.251897243 , 0.400394275 ), ( 67 , 5.237104906 , 0.457063907 ), ( 67 , 5.543755838 , 0.391905957 ), ( 67 , 5.549312926 , 0.518565468 ), ( 67 , 5.322514196 , 0.518831108 ), ( 67 , 5.442849771 , 0.636886609 ), ( 67 , 5.508038209 , 0.689562718 ), ( 67 , 5.497480354 , 0.702674459 ), ( 67 , 5.88277294 , 0.432712976 ), ( 67 , 5.882563859 , 0.471563052 ), ( 67 , 5.851222499 , 0.470106254 ), ( 67 , 5.93008907 , 0.652323402 ), ( 67 , 5.85923678 , 0.639827425 ), ( 67 , 5.918289436 , 0.660470673 ), ( 67 , 6.106073667 , 0.625265189 ), ( 67 , 6.064469056 , 0.688866799 ), ( 67 , 6.128644902 , 0.717555201 ), ( 67 , 6.126748808 , 0.726281312 ), ( 67 , 6.205708766 , 0.785251466 ), ( 67 , 5.955428076 , 0.684184538 ), ( 67 , 6.030937869 , 0.777941004 ), ( 67 , 6.096792282 , 0.788255878 ), ( 67 , 6.187144786 , 0.806330826 ), ( 67 , 6.209382423 , 0.90651182 ), ( 67 , 5.697387405 , 0.625829342 ), ( 67 , 5.662772116 , 0.686214315 ), ( 67 , 5.799964874 , 0.78271907 ), ( 67 , 5.799240274 , 0.782863145 ), ( 67 , 5.812079894 , 0.821974281 ), ( 67 , 5.601661592 , 0.65190523 ), ( 67 , 5.599825373 , 0.652870368 ), ( 67 , 5.580695345 , 0.693757829 ), ( 67 , 5.651132164 , 0.762766972 ), ( 67 , 5.671882943 , 0.775486911 ), ( 67 , 5.795677569 , 0.86912073 ), ( 67 , 5.691619384 , 0.817913644 ), ( 67 , 5.716133586 , 0.919741606 ), ( 67 , 6.061873986 , 0.866566637 ), ( 67 , 6.216897671 , 0.973887983 ), ( 67 , 5.835825704 , 0.857428181 ), ( 67 , 5.887747911 , 0.946769893 ), ( 67 , 5.955143457 , 0.916599105 ), ( 67 , 6.206943842 , 1.076505532 ), ( 67 , 6.036201765 , 1.054971141 ), ( 67 , 6.109700007 , 1.081582155 ), ( 67 , 6.111163453 , 1.085826182 ), ( 67 , 6.136355217 , 1.066166434 ), ( 67 , 6.190762461 , 1.084459155 ), ( 67 , 5.154149913 , 0.391874398 ), ( 67 , 5.177788061 , 0.438667684 ), ( 67 , 5.192052659 , 0.472726157 ), ( 67 , 4.974115061 , 0.47063911 ), ( 67 , 5.052792008 , 0.541434873 ), ( 67 , 5.043829472 , 0.545254562 ), ( 67 , 5.059106053 , 0.557917151 ), ( 67 , 5.110627247 , 0.584173381 ), ( 67 , 5.168951081 , 0.600640772 ), ( 67 , 5.138598478 , 0.611257318 ), ( 67 , 5.079349155 , 0.636218573 ), ( 67 , 5.336174015 , 0.684361604 ), ( 67 , 5.383508041 , 0.729062321 ), ( 67 , 5.382864671 , 0.788463059 ), ( 67 , 5.366897797 , 0.801622994 ), ( 67 , 5.225009459 , 0.67122373 ), ( 67 , 5.161539993 , 0.710728718 ), ( 67 , 5.123866059 , 0.731767042 ), ( 67 , 5.298640934 , 0.73485919 ), ( 67 , 4.901216972 , 0.685914449 ), ( 67 , 4.894264949 , 0.71065525 ), ( 67 , 4.927694857 , 0.763313814 ), ( 67 , 4.816912183 , 0.676128155 ), ( 67 , 4.817905703 , 0.741184712 ), ( 67 , 4.859845126 , 0.806677996 ), ( 67 , 5.026874125 , 0.870222242 ), ( 67 , 4.996719049 , 0.871324206 ), ( 67 , 5.139761413 , 0.860192522 ), ( 67 , 5.130972644 , 0.876833729 ), ( 67 , 5.107597057 , 0.97976302 ), ( 67 , 4.920386508 , 0.856519146 ), ( 67 , 4.833274421 , 1.039332802 ), ( 67 , 5.474513635 , 0.806886647 ), ( 67 , 5.442574796 , 0.795517213 ), ( 67 , 5.433863842 , 0.809041091 ), ( 67 , 5.452462391 , 0.895598126 ), ( 67 , 5.695037982 , 0.912241143 ), ( 67 , 5.730482329 , 0.942427191 ), ( 67 , 5.336450277 , 0.954220795 ), ( 67 , 5.276880944 , 0.977850318 ), ( 67 , 5.553582291 , 1.048907551 ), ( 67 , 5.578682999 , 1.067868827 ), ( 67 , 5.581224432 , 1.079633189 ), ( 67 , 5.849671666 , 1.019447725 ), ( 67 , 5.776592345 , 1.043960959 ), ( 67 , 6.161871218 , 1.147365612 ), ( 67 , 5.947529942 , 1.140332609 ), ( 67 , 5.727234803 , 1.094533722 ), ( 67 , 5.723024139 , 1.147598614 ), ( 67 , 6.135702435 , 1.233697974 ), ( 67 , 6.248256116 , 1.354353375 ), ( 67 , 5.275026339 , 1.083440211 ), ( 67 , 5.125914886 , 1.107134782 ), ( 67 , 4.962360195 , 1.089024211 ), ( 67 , 4.848731972 , 1.142082516 ), ( 67 , 4.786467419 , 1.199753094 ), ( 67 , 5.430365584 , 1.217394397 ), ( 67 , 5.377441575 , 1.231015078 ), ( 67 , 5.728110474 , 1.286349993 ), ( 67 , 5.862978446 , 1.365604672 ), ( 67 , 5.735336077 , 1.401647855 ), ( 67 , 6.026851664 , 1.409910817 ), ( 67 , 4.965236478 , 1.344782695 ), ( 67 , 6.1275703 , 1.508277216 ), ( 67 , 0.013668721 , -0.421412642 ), ( 67 , 6.270826658 , -0.363617269 ), ( 67 , 0.232176301 , -0.432433241 ), ( 67 , 0.169361462 , -0.438216615 ), ( 67 , 0.163067135 , -0.432272862 ), ( 67 , 0.268982043 , -0.283898822 ), ( 67 , 0.079772183 , -0.36893584 ), ( 67 , 0.100685376 , -0.278246524 ), ( 67 , 0.176616126 , -0.288274748 ), ( 67 , 0.157300921 , -0.261335784 ), ( 67 , 6.222208523 , -0.326020652 ), ( 67 , 6.137419305 , -0.379449448 ), ( 67 , 0.078507593 , -0.234845265 ), ( 67 , 6.156730845 , -0.109751203 ), ( 67 , 0.466759679 , -0.242402625 ), ( 67 , 0.518225954 , -0.197249604 ), ( 67 , 0.541965489 , -0.206992283 ), ( 67 , 0.456963129 , -0.118091198 ), ( 67 , 0.487078335 , -0.119977337 ), ( 67 , 0.427032018 , -0.060052457 ), ( 67 , 0.413885945 , -0.06150727 ), ( 67 , 0.58421678 , -0.158205223 ), ( 67 , 0.560818955 , -0.116551795 ), ( 67 , 0.713328174 , -0.044181483 ), ( 67 , 0.773064038 , 0.007815009 ), ( 67 , 0.577107203 , 0.047920511 ), ( 67 , 0.574754954 , 0.060260959 ), ( 67 , 0.33593498 , -0.039795836 ), ( 67 , 0.360328179 , -0.007849731 ), ( 67 , 0.377240452 , -0.006966709 ), ( 67 , 0.329846859 , 0.015925691 ), ( 67 , 0.296699158 , 0.034732206 ), ( 67 , 0.316366363 , 0.043124609 ), ( 67 , 0.163671407 , 0.054714981 ), ( 67 , 0.544765306 , 0.135012588 ), ( 67 , 0.311904278 , 0.179626945 ), ( 67 , 0.385758622 , 0.298085285 ), ( 67 , 0.365865511 , 0.310984194 ), ( 67 , 5.91713465 , -0.286026559 ), ( 67 , 5.79270391 , -0.252914498 ), ( 67 , 6.047024171 , -0.138522579 ), ( 67 , 5.801038783 , -0.13180352 ), ( 67 , 5.943292739 , -0.089051902 ), ( 67 , 6.176174781 , 0.02291556 ), ( 67 , 6.008798096 , -0.056637956 ), ( 67 , 5.988871434 , 0.061997844 ), ( 67 , 6.028922334 , 0.061619602 ), ( 67 , 5.691505956 , -0.082570136 ), ( 67 , 5.570472968 , -0.0280627 ), ( 67 , 5.561572243 , 0.001608557 ), ( 67 , 5.538229076 , -0.004100638 ), ( 67 , 5.596396652 , 0.050936462 ), ( 67 , 5.688298701 , 0.131393026 ), ( 67 , 5.864344248 , 0.266710565 ), ( 67 , 5.855961241 , 0.273168512 ), ( 67 , 0.179744681 , 0.163264063 ), ( 67 , 0.073135419 , 0.178806332 ), ( 67 , 6.231711221 , 0.143909656 ), ( 67 , 6.273457956 , 0.200264444 ), ( 67 , 6.265355244 , 0.2658179 ), ( 67 , 0.245008836 , 0.243507158 ), ( 67 , 0.107496368 , 0.249852715 ), ( 67 , 0.376969171 , 0.350296957 ), ( 67 , 0.239852956 , 0.412393573 ), ( 67 , 6.064793099 , 0.251780506 ), ( 67 , 6.11285326 , 0.301118728 ), ( 67 , 6.145268503 , 0.347067605 ), ( 67 , 5.997798734 , 0.295689855 ), ( 67 , 6.062306626 , 0.327001624 ), ( 67 , 6.082429351 , 0.342675533 ), ( 67 , 6.148330502 , 0.4022546 ), ( 67 , 6.163123176 , 0.416146389 ), ( 67 , 6.178170599 , 0.428671871 ), ( 67 , 6.091058158 , 0.432334615 ), ( 67 , 6.117239814 , 0.464403877 ), ( 67 , 6.090204044 , 0.493018464 ), ( 67 , 0.021914453 , 0.483015171 ), ( 67 , 0.142139549 , 0.481374045 ), ( 67 , 0.107606257 , 0.54756152 ), ( 67 , 6.2611093 , 0.514446068 ), ( 67 , 6.252348631 , 0.644962467 ), ( 67 , 1.556907355 , -0.558088926 ), ( 67 , 1.553260633 , -0.550335965 ), ( 67 , 1.535859535 , -0.51399069 ), ( 67 , 1.802072753 , -0.470507407 ), ( 67 , 1.84880587 , -0.437796231 ), ( 67 , 1.826469861 , -0.416798338 ), ( 67 , 1.738268206 , -0.411555139 ), ( 67 , 1.916837115 , -0.305865916 ), ( 67 , 1.875654137 , -0.283349297 ), ( 67 , 1.660616786 , -0.412568364 ), ( 67 , 1.708204314 , -0.373594437 ), ( 67 , 1.702556207 , -0.33536571 ), ( 67 , 1.674262698 , -0.287405504 ), ( 67 , 1.773907641 , -0.253483975 ), ( 67 , 1.703861777 , -0.261002857 ), ( 67 , 1.707821583 , -0.219208037 ), ( 67 , 1.355872473 , -0.452220137 ), ( 67 , 1.40400666 , -0.432371608 ), ( 67 , 1.504668097 , -0.378024958 ), ( 67 , 1.544440666 , -0.3427634 ), ( 67 , 1.463645418 , -0.274677767 ), ( 67 , 1.301030729 , -0.292868484 ), ( 67 , 1.404649825 , -0.30724058 ), ( 67 , 1.366727169 , -0.225858371 ), ( 67 , 1.609024934 , -0.138517872 ), ( 67 , 1.457528158 , -0.122592517 ), ( 67 , 1.609168081 , -0.119054413 ), ( 67 , 2.004525006 , -0.294042444 ), ( 67 , 1.902136689 , -0.283358745 ), ( 67 , 2.00865583 , -0.205122569 ), ( 67 , 1.92545109 , -0.154965973 ), ( 67 , 1.946287576 , -0.079193814 ), ( 67 , 2.213456074 , -0.111874708 ), ( 67 , 2.098997007 , -0.112041406 ), ( 67 , 2.169269021 , -0.058709505 ), ( 67 , 2.152698323 , -0.020347933 ), ( 67 , 2.306552112 , -0.018236178 ), ( 67 , 2.087874642 , 0.05123937 ), ( 67 , 2.169913268 , 0.07363901 ), ( 67 , 1.672810777 , -0.081814191 ), ( 67 , 1.757502301 , -0.072271905 ), ( 67 , 1.770785014 , -0.012505159 ), ( 67 , 1.93082913 , -0.004527795 ), ( 67 , 1.930652997 , 0.012225819 ), ( 67 , 1.834412639 , 0.033711227 ), ( 67 , 1.684929804 , -0.061355051 ), ( 67 , 1.696391769 , -0.009990503 ), ( 67 , 1.688519955 , 0.014679146 ), ( 67 , 1.710941717 , 0.105341707 ), ( 67 , 2.054475985 , 0.07783916 ), ( 67 , 2.04632211 , 0.075636984 ), ( 67 , 1.987143284 , 0.13229406 ), ( 67 , 2.025602625 , 0.224448335 ), ( 67 , 1.997692135 , 0.250289928 ), ( 67 , 1.229149678 , -0.217741571 ), ( 67 , 1.200944116 , -0.169933468 ), ( 67 , 1.099284993 , -0.15424272 ), ( 67 , 1.032052028 , -0.189420075 ), ( 67 , 1.317797328 , -0.096015387 ), ( 67 , 1.478121382 , -0.045373197 ), ( 67 , 1.475802354 , -0.020406152 ), ( 67 , 1.448653019 , -0.004966377 ), ( 67 , 1.445321167 , 0.057466726 ), ( 67 , 1.268664972 , 0.020029765 ), ( 67 , 1.25864885 , 0.047401302 ), ( 67 , 1.408316499 , 0.048797701 ), ( 67 , 1.399449688 , 0.044417231 ), ( 67 , 0.942276785 , -0.089447358 ), ( 67 , 0.920950049 , -0.008400359 ), ( 67 , 0.888394327 , 0.015872668 ), ( 67 , 1.006613319 , 0.027296195 ), ( 67 , 1.018855859 , 0.036983376 ), ( 67 , 1.186131021 , 0.100606397 ), ( 67 , 1.002585258 , 0.164188809 ), ( 67 , 1.17826078 , 0.179100002 ), ( 67 , 1.152972136 , 0.212194067 ), ( 67 , 1.194591924 , 0.231286902 ), ( 67 , 1.20725082 , 0.276968396 ), ( 67 , 1.141370736 , 0.251495942 ), ( 67 , 1.173731493 , 0.282026057 ), ( 67 , 1.627489725 , 0.10500198 ), ( 67 , 1.49835894 , 0.093525143 ), ( 67 , 1.659309831 , 0.134718156 ), ( 67 , 1.697344292 , 0.192318098 ), ( 67 , 1.400133597 , 0.16973084 ), ( 67 , 1.530702502 , 0.252082556 ), ( 67 , 1.76908088 , 0.170440533 ), ( 67 , 1.6897534 , 0.259865951 ), ( 67 , 1.622531805 , 0.381672493 ), ( 67 , 1.682985765 , 0.377775496 ), ( 67 , 1.772261685 , 0.40791018 ), ( 67 , 1.785339998 , 0.4745564 ), ( 67 , 1.751212304 , 0.492124 ), ( 67 , 1.347572047 , 0.346618196 ), ( 67 , 1.436721758 , 0.43892924 ), ( 67 , 1.333556435 , 0.402490365 ), ( 67 , 1.499460275 , 0.444003588 ), ( 67 , 1.516594421 , 0.446255679 ), ( 67 , 1.69708092 , 0.470661454 ), ( 67 , 1.691190293 , 0.56832245 ), ( 67 , 1.47897762 , 0.46457177 ), ( 67 , 1.507499739 , 0.546719251 ), ( 67 , 1.629736509 , 0.648548658 ), ( 67 , 3.112275394 , -0.638399836 ), ( 67 , 3.207503798 , -0.510289619 ), ( 67 , 3.100652134 , -0.476088979 ), ( 67 , 3.283587231 , -0.370227202 ), ( 67 , 3.298143055 , -0.210643381 ), ( 67 , 2.931992426 , -0.467853169 ), ( 67 , 2.858816253 , -0.360671223 ), ( 67 , 2.896816764 , -0.342955703 ), ( 67 , 3.128232467 , -0.240079959 ), ( 67 , 3.137909708 , -0.182835267 ), ( 67 , 3.159069755 , -0.179700657 ), ( 67 , 3.243070017 , -0.08682494 ), ( 67 , 3.131783932 , -0.149200551 ), ( 67 , 3.704503542 , -0.180369309 ), ( 67 , 3.479158731 , -0.200424466 ), ( 67 , 3.365787417 , -0.18043654 ), ( 67 , 3.531007939 , -0.023820896 ), ( 67 , 3.738546448 , -0.155065231 ), ( 67 , 3.870653331 , 0.016942064 ), ( 67 , 3.764550718 , -0.011121656 ), ( 67 , 3.730127723 , 0.058218949 ), ( 67 , 3.37562183 , -0.07374191 ), ( 67 , 3.420436755 , -0.063937773 ), ( 67 , 3.350406739 , 0.062355259 ), ( 67 , 3.533344529 , 0.019105171 ), ( 67 , 3.485643365 , 0.064359566 ), ( 67 , 3.534118223 , 0.104962934 ), ( 67 , 3.60071181 , 0.180205223 ), ( 67 , 3.558550142 , 0.178103771 ), ( 67 , 3.620999406 , 0.230245405 ), ( 67 , 3.510329967 , 0.216980747 ), ( 67 , 2.776340575 , -0.184719211 ), ( 67 , 2.7207238 , -0.06357911 ), ( 67 , 3.032424378 , -0.076124233 ), ( 67 , 3.026428826 , 0.043614283 ), ( 67 , 2.996447445 , 0.052610435 ), ( 67 , 2.520976652 , -0.055339639 ), ( 67 , 2.72042128 , -0.015751475 ), ( 67 , 2.608097849 , -0.033888982 ), ( 67 , 2.732109636 , 0.068635641 ), ( 67 , 2.803972213 , 0.062539855 ), ( 67 , 2.719383572 , 0.09937476 ), ( 67 , 2.78777293 , 0.281474025 ), ( 67 , 3.303583096 , 0.15353472 ), ( 67 , 3.458353985 , 0.327281089 ), ( 67 , 3.474231891 , 0.332516275 ), ( 67 , 3.232395558 , 0.27124121 ), ( 67 , 3.237731032 , 0.292247481 ), ( 67 , 3.361030197 , 0.399033858 ), ( 67 , 3.267003566 , 0.45202637 ), ( 67 , 2.959864772 , 0.209163889 ), ( 67 , 2.949442359 , 0.224177302 ), ( 67 , 2.962695162 , 0.249021576 ), ( 67 , 3.032774768 , 0.356772148 ), ( 67 , 3.0634172 , 0.387649111 ), ( 67 , 2.909178232 , 0.309572237 ), ( 67 , 2.838810566 , 0.408518966 ), ( 67 , 3.149170601 , 0.385616876 ), ( 67 , 3.262190603 , 0.452250467 ), ( 67 , 3.228175615 , 0.496795656 ), ( 67 , 3.22224507 , 0.571574914 ), ( 67 , 3.12078877 , 0.641514107 ), ( 67 , 3.129538022 , 0.704123632 ), ( 67 , 4.69900497 , -0.70346583 ), ( 67 , 4.6955091 , -0.611719463 ), ( 67 , 4.698574361 , -0.570529246 ), ( 67 , 4.696105292 , -0.566795745 ), ( 67 , 4.771827045 , -0.557936107 ), ( 67 , 4.838732106 , -0.463945783 ), ( 67 , 4.63871132 , -0.576854384 ), ( 67 , 4.625198073 , -0.562015314 ), ( 67 , 4.589295493 , -0.58823496 ), ( 67 , 4.581899719 , -0.588461924 ), ( 67 , 4.66566226 , -0.534031296 ), ( 67 , 4.674033108 , -0.533318266 ), ( 67 , 4.863124268 , -0.422760813 ), ( 67 , 4.913184729 , -0.342194962 ), ( 67 , 4.88646875 , -0.350314379 ), ( 67 , 4.761459751 , -0.346310722 ), ( 67 , 4.790284718 , -0.328095789 ), ( 67 , 4.925131405 , -0.324651602 ), ( 67 , 4.932821319 , -0.236881454 ), ( 67 , 4.512713019 , -0.470975164 ), ( 67 , 4.471205661 , -0.447606294 ), ( 67 , 4.644323278 , -0.387374705 ), ( 67 , 4.540333607 , -0.337454932 ), ( 67 , 4.369049375 , -0.315201294 ), ( 67 , 4.569117426 , -0.276694507 ), ( 67 , 4.800034137 , -0.139301671 ), ( 67 , 4.830843648 , -0.140330467 ), ( 67 , 4.762344861 , -0.090844677 ), ( 67 , 4.769841241 , -0.070013124 ), ( 67 , 4.686475912 , -0.028264825 ), ( 67 , 5.098930971 , -0.263585419 ), ( 67 , 5.148161441 , -0.264724714 ), ( 67 , 5.089427105 , -0.253967284 ), ( 67 , 5.187276622 , -0.215016997 ), ( 67 , 4.985398538 , -0.187131826 ), ( 67 , 5.041261318 , -0.105587042 ), ( 67 , 5.245484203 , -0.087089002 ), ( 67 , 5.263062305 , -0.071183402 ), ( 67 , 5.343744825 , 0.023883537 ), ( 67 , 5.37710177 , 0.037224301 ), ( 67 , 5.234644035 , -0.034393721 ), ( 67 , 5.293031003 , -0.005773524 ), ( 67 , 5.384335466 , 0.085496621 ), ( 67 , 5.306232562 , 0.079943647 ), ( 67 , 5.346920327 , 0.115921022 ), ( 67 , 5.280179652 , 0.147344386 ), ( 67 , 5.063432319 , -0.022853403 ), ( 67 , 4.786916144 , 0.017549884 ), ( 67 , 4.772909739 , 0.041772544 ), ( 67 , 4.843660761 , 0.070952841 ), ( 67 , 4.822117835 , 0.088742518 ), ( 67 , 4.910814213 , 0.095989046 ), ( 67 , 5.046525386 , 0.115132573 ), ( 67 , 5.169182792 , 0.152304083 ), ( 67 , 5.185846793 , 0.186646333 ), ( 67 , 5.131851704 , 0.19460646 ), ( 67 , 5.075140571 , 0.260419142 ), ( 67 , 4.278101938 , -0.22533733 ), ( 67 , 4.358067651 , -0.150424133 ), ( 67 , 4.367423583 , -0.145030255 ), ( 67 , 4.187428416 , -0.127446265 ), ( 67 , 4.580565431 , -0.103322143 ), ( 67 , 4.665775893 , 0.034242406 ), ( 67 , 4.621975381 , 0.062043144 ), ( 67 , 4.076845603 , -0.099397464 ), ( 67 , 4.248313728 , -0.025745339 ), ( 67 , 4.314032917 , 0.000945647 ), ( 67 , 4.266117958 , 0.026122286 ), ( 67 , 4.086519042 , -0.009803194 ), ( 67 , 4.303775125 , 0.043771915 ), ( 67 , 4.30894739 , 0.050100271 ), ( 67 , 4.352687562 , 0.092108562 ), ( 67 , 4.747823455 , 0.038722211 ), ( 67 , 4.767684043 , 0.049092661 ), ( 67 , 4.792712922 , 0.226551208 ), ( 67 , 4.571606192 , 0.147336188 ), ( 67 , 4.679755898 , 0.294966061 ), ( 67 , 4.95458937 , 0.251061615 ), ( 67 , 4.940638286 , 0.253689138 ), ( 67 , 4.911758322 , 0.274461029 ), ( 67 , 5.029053802 , 0.29402396 ), ( 67 , 5.042063003 , 0.32317258 ), ( 67 , 4.97894703 , 0.337015313 ), ( 67 , 4.968471944 , 0.359941499 ), ( 67 , 4.980191566 , 0.3636009 ), ( 67 , 4.990369866 , 0.371202687 ), ( 67 , 4.814159002 , 0.256562849 ), ( 67 , 4.840442143 , 0.313877181 ), ( 67 , 4.846319716 , 0.36325902 ), ( 67 , 4.823499163 , 0.396307657 ), ( 67 , 4.79149236 , 0.40660631 ), ( 67 , 4.59769313 , 0.25902585 ), ( 67 , 4.562645254 , 0.28595841 ), ( 67 , 4.464418442 , 0.253249157 ), ( 67 , 4.600922584 , 0.288055339 ), ( 67 , 4.657983006 , 0.329681811 ), ( 67 , 4.606747706 , 0.346336376 ), ( 67 , 4.467505822 , 0.343665282 ), ( 67 , 4.751146489 , 0.435748802 ), ( 67 , 4.669848111 , 0.441412794 ), ( 67 , 4.887059935 , 0.538428963 ), ( 67 , 4.776676915 , 0.509734542 ), ( 67 , 4.723631992 , 0.533305418 ), ( 67 , 4.609226126 , 0.481120059 ), ( 67 , 4.608258571 , 0.49192606 ), ( 67 , 4.636519166 , 0.513456713 ), ( 67 , 4.732987751 , 0.699603762 ), ( 67 , 0.5690551 , -1.337334816 ), ( 67 , 1.280672151 , -1.163704172 ), ( 67 , 1.243391557 , -1.103567055 ), ( 67 , 0.069433772 , -1.324907877 ), ( 67 , 0.634599486 , -1.160539611 ), ( 67 , 0.491228301 , -1.18585613 ), ( 67 , 0.670036765 , -1.092341671 ), ( 67 , 0.159829525 , -1.136637072 ), ( 67 , 0.194888152 , -1.145890227 ), ( 67 , 0.456189979 , -1.064978037 ), ( 67 , 0.524841784 , -0.960153694 ), ( 67 , 0.754463265 , -1.142412072 ), ( 67 , 0.829279871 , -1.115501749 ), ( 67 , 0.928793001 , -1.064939574 ), ( 67 , 0.760676038 , -0.975268905 ), ( 67 , 1.54548354 , -1.125419583 ), ( 67 , 1.377272302 , -0.910748209 ), ( 67 , 1.23805988 , -0.912160668 ), ( 67 , 1.217682525 , -0.901857609 ), ( 67 , 1.271691551 , -0.902779793 ), ( 67 , 1.558753487 , -0.932454344 ), ( 67 , 1.566560501 , -0.894011276 ), ( 67 , 1.545420553 , -0.878925804 ), ( 67 , 1.439184746 , -0.821637061 ), ( 67 , 1.377865361 , -0.609581352 ), ( 67 , 1.06315047 , -0.835345905 ), ( 67 , 0.981059168 , -0.838836894 ), ( 67 , 1.084580008 , -0.800488724 ), ( 67 , 1.17005643 , -0.732336922 ), ( 67 , 1.156018395 , -0.606644024 ), ( 67 , 1.094163617 , -0.61564692 ), ( 67 , 0.991950253 , -0.521890537 ), ( 67 , 1.116020155 , -0.405570256 ), ( 67 , 0.443689421 , -0.873340616 ), ( 67 , 0.753668011 , -0.722428255 ), ( 67 , 0.486247918 , -0.695271173 ), ( 67 , 0.002508012 , -0.926732243 ), ( 67 , 0.147166937 , -0.610964327 ), ( 67 , 0.387130367 , -0.589296509 ), ( 67 , 0.2816152 , -0.58526057 ), ( 67 , 0.315861194 , -0.537606702 ), ( 67 , 0.41390624 , -0.413635877 ), ( 67 , 0.381304099 , -0.38988585 ), ( 67 , 0.731123181 , -0.620479653 ), ( 67 , 0.936196161 , -0.556320405 ), ( 67 , 0.937569098 , -0.446500586 ), ( 67 , 1.077606705 , -0.383869955 ), ( 67 , 0.880082393 , -0.354733856 ), ( 67 , 0.629785549 , -0.451121462 ), ( 67 , 0.487683026 , -0.273099882 ), ( 67 , 2.752477875 , -1.50256615 ), ( 67 , 2.842718532 , -1.324403859 ), ( 67 , 2.008506067 , -1.368108836 ), ( 67 , 2.259906189 , -1.301562866 ), ( 67 , 2.463595818 , -1.223053209 ), ( 67 , 2.158567086 , -1.288173048 ), ( 67 , 2.64850892 , -1.247529699 ), ( 67 , 3.025619188 , -1.225130202 ), ( 67 , 2.785071673 , -1.135194501 ), ( 67 , 2.797351762 , -1.125288896 ), ( 67 , 2.678296555 , -1.187868145 ), ( 67 , 2.523592994 , -1.124032797 ), ( 67 , 2.744818184 , -1.137535622 ), ( 67 , 2.751747873 , -1.07087101 ), ( 67 , 2.630311256 , -1.084838043 ), ( 67 , 2.676332187 , -0.987624109 ), ( 67 , 2.620492863 , -0.993894278 ), ( 67 , 2.596608154 , -1.001519809 ), ( 67 , 1.749526534 , -1.252718271 ), ( 67 , 1.859818539 , -1.201442677 ), ( 67 , 2.109019903 , -1.221233146 ), ( 67 , 1.755907088 , -1.184080899 ), ( 67 , 2.078087248 , -1.066384524 ), ( 67 , 2.080645779 , -1.031938113 ), ( 67 , 2.10424934 , -0.969365736 ), ( 67 , 2.268866179 , -1.03928932 ), ( 67 , 2.343355868 , -1.033698054 ), ( 67 , 2.528294314 , -0.955626125 ), ( 67 , 2.518554894 , -0.936691306 ), ( 67 , 2.406940051 , -0.943122454 ), ( 67 , 2.202091631 , -0.966288419 ), ( 67 , 2.186053939 , -0.911547633 ), ( 67 , 2.243442831 , -0.926271164 ), ( 67 , 2.399303055 , -0.82861526 ), ( 67 , 2.38982851 , -0.778982631 ), ( 67 , 3.033461315 , -1.062812978 ), ( 67 , 2.77376326 , -1.015656964 ), ( 67 , 2.74037223 , -0.998301208 ), ( 67 , 2.851675333 , -0.984722678 ), ( 67 , 2.882411962 , -0.926974606 ), ( 67 , 2.82709699 , -0.91186583 ), ( 67 , 2.912815751 , -0.848925128 ), ( 67 , 2.844416691 , -0.857967293 ), ( 67 , 2.830435515 , -0.833389299 ), ( 67 , 2.704664964 , -0.837083511 ), ( 67 , 2.743244553 , -0.765120604 ), ( 67 , 3.053854461 , -0.881146062 ), ( 67 , 2.88952978 , -0.717581079 ), ( 67 , 3.00187126 , -0.616604903 ), ( 67 , 2.9109316 , -0.568756362 ), ( 67 , 2.60154235 , -0.935830387 ), ( 67 , 2.644687165 , -0.910849368 ), ( 67 , 2.615535145 , -0.784620947 ), ( 67 , 2.682980724 , -0.739722973 ), ( 67 , 2.600924565 , -0.712524953 ), ( 67 , 2.63714011 , -0.697710431 ), ( 67 , 2.430221372 , -0.785606541 ), ( 67 , 2.484365965 , -0.753813367 ), ( 67 , 2.410751244 , -0.7611907 ), ( 67 , 2.4767931 , -0.610997066 ), ( 67 , 2.701674798 , -0.604168347 ), ( 67 , 2.894044956 , -0.557825293 ), ( 67 , 2.914223707 , -0.526661609 ), ( 67 , 2.707720784 , -0.555247473 ), ( 67 , 2.752621902 , -0.462227261 ), ( 67 , 2.712224909 , -0.393196526 ), ( 67 , 1.669036729 , -1.051005908 ), ( 67 , 1.955599189 , -1.01356234 ), ( 67 , 1.580205849 , -1.048886548 ), ( 67 , 1.774529249 , -0.954606619 ), ( 67 , 1.648737267 , -0.920364877 ), ( 67 , 1.795698369 , -0.842868793 ), ( 67 , 1.855597982 , -0.878943541 ), ( 67 , 1.893528681 , -0.880892001 ), ( 67 , 2.135843404 , -0.904822792 ), ( 67 , 2.161532939 , -0.880505855 ), ( 67 , 2.106091857 , -0.871794709 ), ( 67 , 2.090084143 , -0.844325177 ), ( 67 , 2.093370545 , -0.825601212 ), ( 67 , 2.076221969 , -0.802502831 ), ( 67 , 2.163683401 , -0.808296169 ), ( 67 , 2.155860314 , -0.777990585 ), ( 67 , 2.147194664 , -0.757480031 ), ( 67 , 2.23254009 , -0.824510697 ), ( 67 , 2.236964451 , -0.821038654 ), ( 67 , 2.29003971 , -0.777398716 ), ( 67 , 2.329341431 , -0.705942455 ), ( 67 , 2.257243549 , -0.700705121 ), ( 67 , 2.244873488 , -0.656437448 ), ( 67 , 2.027504482 , -0.820451675 ), ( 67 , 2.05385129 , -0.778065244 ), ( 67 , 2.085294567 , -0.71182082 ), ( 67 , 1.977554858 , -0.75199918 ), ( 67 , 2.171927161 , -0.629497951 ), ( 67 , 2.105846192 , -0.635319798 ), ( 67 , 2.116447269 , -0.586276789 ), ( 67 , 1.60149088 , -0.78698967 ), ( 67 , 1.71553054 , -0.674138806 ), ( 67 , 2.038727961 , -0.629599838 ), ( 67 , 1.931180263 , -0.559307837 ), ( 67 , 2.073581985 , -0.539611522 ), ( 67 , 1.83125221 , -0.584259776 ), ( 67 , 1.936770247 , -0.51120201 ), ( 67 , 1.937895865 , -0.503140786 ), ( 67 , 1.833309064 , -0.543520626 ), ( 67 , 2.004935236 , -0.469825138 ), ( 67 , 1.916426781 , -0.435558714 ), ( 67 , 2.323186762 , -0.567395688 ), ( 67 , 2.410142536 , -0.505229177 ), ( 67 , 2.485660425 , -0.46416073 ), ( 67 , 2.172814057 , -0.523662889 ), ( 67 , 2.211531141 , -0.509908324 ), ( 67 , 2.244903032 , -0.472950366 ), ( 67 , 2.369924873 , -0.445132805 ), ( 67 , 2.634108082 , -0.441859585 ), ( 67 , 2.467969751 , -0.442215868 ), ( 67 , 2.691131297 , -0.36075589 ), ( 67 , 2.690187207 , -0.336990608 ), ( 67 , 2.501467267 , -0.373362902 ), ( 67 , 2.607790405 , -0.288369078 ), ( 67 , 2.596179864 , -0.282633544 ), ( 67 , 2.508237231 , -0.211721661 ), ( 67 , 2.11421997 , -0.44854691 ), ( 67 , 2.178916086 , -0.351931738 ), ( 67 , 2.206339249 , -0.304375262 ), ( 67 , 2.301031281 , -0.297629482 ), ( 67 , 2.04968591 , -0.352704969 ), ( 67 , 2.049354913 , -0.340437222 ), ( 67 , 2.003279365 , -0.32599873 ), ( 67 , 2.02014225 , -0.297778839 ), ( 67 , 2.040958396 , -0.279505507 ), ( 67 , 2.326030938 , -0.295882542 ), ( 67 , 2.33834084 , -0.269476074 ), ( 67 , 2.394339554 , -0.284101134 ), ( 67 , 2.417505005 , -0.256475366 ), ( 67 , 2.430155254 , -0.193794196 ), ( 67 , 2.206191877 , -0.156312312 ), ( 67 , 2.218008973 , -0.153878166 ), ( 67 , 4.198676783 , -1.283094986 ), ( 67 , 3.739012492 , -1.355496824 ), ( 67 , 3.966313736 , -1.262004131 ), ( 67 , 4.482488329 , -1.330368555 ), ( 67 , 4.450204384 , -1.281465335 ), ( 67 , 4.414580133 , -1.286704684 ), ( 67 , 4.283130491 , -1.25443938 ), ( 67 , 4.538761377 , -1.222546274 ), ( 67 , 4.628345124 , -1.184281375 ), ( 67 , 4.288764732 , -1.167405718 ), ( 67 , 4.072934747 , -1.069426748 ), ( 67 , 4.276085284 , -1.128338702 ), ( 67 , 4.118632917 , -1.052211139 ), ( 67 , 4.206693549 , -1.032820001 ), ( 67 , 4.271098961 , -1.010542289 ), ( 67 , 4.199552316 , -0.992312106 ), ( 67 , 3.141939311 , -1.364724867 ), ( 67 , 3.1579125 , -1.295280742 ), ( 67 , 3.481591413 , -1.195476263 ), ( 67 , 3.729158434 , -1.146707402 ), ( 67 , 3.152365794 , -1.247716764 ), ( 67 , 3.325216235 , -1.211390607 ), ( 67 , 3.189678856 , -1.191380345 ), ( 67 , 3.54284236 , -1.140082268 ), ( 67 , 3.606764508 , -1.097980214 ), ( 67 , 3.569752567 , -1.019531237 ), ( 67 , 3.835309016 , -1.032218899 ), ( 67 , 4.03934167 , -0.926035449 ), ( 67 , 4.057769992 , -0.912857657 ), ( 67 , 3.827535301 , -0.926087458 ), ( 67 , 3.741222689 , -0.973285587 ), ( 67 , 3.732187314 , -0.933925317 ), ( 67 , 3.862905887 , -0.895616461 ), ( 67 , 3.924028433 , -0.900174748 ), ( 67 , 4.000558464 , -0.835396386 ), ( 67 , 3.977515687 , -0.790239004 ), ( 67 , 3.911848825 , -0.835651022 ), ( 67 , 3.925869845 , -0.764667693 ), ( 67 , 4.683161272 , -1.142999806 ), ( 67 , 4.669289639 , -1.122333517 ), ( 67 , 4.532873972 , -1.097371302 ), ( 67 , 4.554170656 , -1.023902558 ), ( 67 , 4.67498794 , -0.939672349 ), ( 67 , 4.402137398 , -0.923993348 ), ( 67 , 4.426704421 , -0.867617775 ), ( 67 , 4.446632349 , -0.853031745 ), ( 67 , 4.342063629 , -0.789669944 ), ( 67 , 4.559095879 , -0.806378149 ), ( 67 , 4.53528421 , -0.771838951 ), ( 67 , 4.52168116 , -0.738956011 ), ( 67 , 4.645765595 , -0.803596238 ), ( 67 , 4.700056162 , -0.732662281 ), ( 67 , 4.425842111 , -0.729894687 ), ( 67 , 4.434229484 , -0.709649794 ), ( 67 , 4.513687131 , -0.694059142 ), ( 67 , 4.507998013 , -0.662394291 ), ( 67 , 4.221167811 , -0.845132785 ), ( 67 , 4.130637341 , -0.850619623 ), ( 67 , 4.192201474 , -0.682229181 ), ( 67 , 4.224012688 , -0.632368143 ), ( 67 , 4.029158914 , -0.805303306 ), ( 67 , 4.021109819 , -0.784321025 ), ( 67 , 3.993865748 , -0.770556686 ), ( 67 , 4.02539808 , -0.773060104 ), ( 67 , 3.999501907 , -0.739502053 ), ( 67 , 4.106392463 , -0.697837518 ), ( 67 , 4.374160974 , -0.647167196 ), ( 67 , 4.366074955 , -0.622859713 ), ( 67 , 4.272940136 , -0.619435423 ), ( 67 , 4.429402907 , -0.548084891 ), ( 67 , 4.250734751 , -0.552666225 ), ( 67 , 4.260542885 , -0.423800149 ), ( 67 , 3.296475932 , -1.077582702 ), ( 67 , 3.154415605 , -1.085163478 ), ( 67 , 3.331258739 , -1.028046858 ), ( 67 , 3.33611479 , -0.999847158 ), ( 67 , 3.590623037 , -0.886458711 ), ( 67 , 3.427436706 , -0.909588749 ), ( 67 , 3.507523202 , -0.869575932 ), ( 67 , 3.518042575 , -0.851488824 ), ( 67 , 3.766663158 , -0.827582751 ), ( 67 , 3.829293292 , -0.752433364 ), ( 67 , 3.772872895 , -0.773380252 ), ( 67 , 3.670168201 , -0.771400323 ), ( 67 , 3.622969494 , -0.696402511 ), ( 67 , 3.72155518 , -0.712679662 ), ( 67 , 3.774343807 , -0.653578085 ), ( 67 , 3.637022301 , -0.622460337 ), ( 67 , 3.637018053 , -0.622456868 ), ( 67 , 3.155170785 , -0.841161015 ), ( 67 , 3.382082233 , -0.738115866 ), ( 67 , 3.394732021 , -0.679232784 ), ( 67 , 3.19169526 , -0.772886278 ), ( 67 , 3.550846719 , -0.69718247 ), ( 67 , 3.616757036 , -0.623177608 ), ( 67 , 3.564147999 , -0.601581453 ), ( 67 , 3.554906287 , -0.581385637 ), ( 67 , 3.646598573 , -0.546024964 ), ( 67 , 3.656386831 , -0.453751671 ), ( 67 , 3.405812913 , -0.576861706 ), ( 67 , 3.525701497 , -0.460806525 ), ( 67 , 3.466470263 , -0.423838965 ), ( 67 , 3.507894927 , -0.365205342 ), ( 67 , 3.94259982 , -0.627318098 ), ( 67 , 4.026275613 , -0.512114826 ), ( 67 , 4.138360814 , -0.415984823 ), ( 67 , 4.179248165 , -0.410631012 ), ( 67 , 4.262907527 , -0.350883319 ), ( 67 , 4.027477299 , -0.264136413 ), ( 67 , 3.777747244 , -0.468666996 ), ( 67 , 3.890261112 , -0.310516018 ), ( 67 , 3.776445052 , -0.34854347 ), ( 67 , 3.624069381 , -0.347282915 ), ( 67 , 3.769740527 , -0.281032088 ), ( 67 , 3.775546608 , -0.233056319 ), ( 67 , 4.095705444 , -0.153500044 ), ( 67 , 3.98478041 , -0.192114687 ), ( 67 , 3.858147265 , -0.144014364 ), ( 67 , 3.938974222 , -0.052910531 ), ( 67 , 5.637678305 , -1.480218525 ), ( 67 , 6.074678639 , -1.412194235 ), ( 67 , 5.045633968 , -1.322963766 ), ( 67 , 5.603728339 , -1.217086607 ), ( 67 , 5.389145717 , -1.242477146 ), ( 67 , 6.139727174 , -1.162057094 ), ( 67 , 6.065988964 , -1.166881772 ), ( 67 , 5.739786713 , -1.223748321 ), ( 67 , 5.740275481 , -1.222927638 ), ( 67 , 5.664842206 , -1.21527849 ), ( 67 , 5.851545167 , -1.091679322 ), ( 67 , 5.849496684 , -1.003736045 ), ( 67 , 5.191875779 , -1.166106764 ), ( 67 , 5.272379985 , -1.158108627 ), ( 67 , 4.775227397 , -1.234843541 ), ( 67 , 5.049255091 , -1.163454217 ), ( 67 , 4.960714267 , -1.096099341 ), ( 67 , 5.079803389 , -1.099522062 ), ( 67 , 5.64305579 , -0.920449455 ), ( 67 , 5.590623719 , -0.871606439 ), ( 67 , 5.532251617 , -0.854171854 ), ( 67 , 5.487523938 , -0.770321026 ), ( 67 , 5.985376418 , -1.045127574 ), ( 67 , 5.962373016 , -0.867213995 ), ( 67 , 5.963485243 , -0.819246346 ), ( 67 , 6.24214547 , -0.826880027 ), ( 67 , 6.147988904 , -0.776639416 ), ( 67 , 6.17340891 , -0.744981962 ), ( 67 , 5.924497885 , -0.695637625 ), ( 67 , 6.094818634 , -0.718975844 ), ( 67 , 6.000660227 , -0.635100199 ), ( 67 , 5.742388367 , -0.915669867 ), ( 67 , 5.803078071 , -0.839644692 ), ( 67 , 5.741772026 , -0.819055259 ), ( 67 , 5.695512718 , -0.86391051 ), ( 67 , 5.671048613 , -0.740814847 ), ( 67 , 6.00572875 , -0.550942246 ), ( 67 , 6.051788821 , -0.524439438 ), ( 67 , 5.928635073 , -0.501752429 ), ( 67 , 5.778773612 , -0.522141651 ), ( 67 , 5.76325046 , -0.496614903 ), ( 67 , 5.8944022 , -0.455081901 ), ( 67 , 4.746445907 , -1.126620929 ), ( 67 , 4.774655426 , -1.111601669 ), ( 67 , 5.055742787 , -0.979911731 ), ( 67 , 5.012912293 , -0.97251892 ), ( 67 , 4.740717462 , -1.022256412 ), ( 67 , 5.271584078 , -0.917658026 ), ( 67 , 5.295065632 , -0.832758525 ), ( 67 , 5.275545501 , -0.821498118 ), ( 67 , 5.446784207 , -0.77138679 ), ( 67 , 5.400628545 , -0.719564149 ), ( 67 , 5.148403484 , -0.68823994 ), ( 67 , 5.225915123 , -0.664263999 ), ( 67 , 5.327033701 , -0.622620714 ), ( 67 , 4.893513243 , -0.839424767 ), ( 67 , 4.89727567 , -0.833589805 ), ( 67 , 4.940149123 , -0.727965184 ), ( 67 , 5.016350126 , -0.69511906 ), ( 67 , 4.713567622 , -0.829973601 ), ( 67 , 4.804115518 , -0.764012433 ), ( 67 , 4.803668485 , -0.654283635 ), ( 67 , 4.978788852 , -0.646838379 ), ( 67 , 4.954085227 , -0.652519423 ), ( 67 , 5.106187869 , -0.56010517 ), ( 67 , 5.214539908 , -0.576765356 ), ( 67 , 4.95871722 , -0.553079136 ), ( 67 , 5.58392865 , -0.459987238 ), ( 67 , 5.602215952 , -0.43986915 ), ( 67 , 5.457581583 , -0.559466138 ), ( 67 , 5.325281668 , -0.509587518 ), ( 67 , 5.433291178 , -0.475553873 ), ( 67 , 5.413132904 , -0.465048854 ), ( 67 , 5.47208333 , -0.487389333 ), ( 67 , 5.610403255 , -0.415775885 ), ( 67 , 5.628660256 , -0.334197995 ), ( 67 , 5.475031112 , -0.327994302 ), ( 67 , 5.338254587 , -0.24882175 ), ( 67 , 5.497406961 , -0.227794743 ), ( 67 , 5.620976297 , -0.20191017 ), ( 67 , 5.560091488 , -0.185099241 ), ( 67 , 5.568892635 , -0.160825816 ), ( 67 , 5.406583541 , -0.086034374 ), ( 68 , 0.800535343 , 0.108669322 ), ( 68 , 0.925896336 , 0.201447833 ), ( 68 , 0.706863132 , 0.18403955 ), ( 68 , 0.640369312 , 0.184397614 ), ( 68 , 0.787689302 , 0.314243109 ), ( 68 , 0.846115793 , 0.331148286 ), ( 68 , 1.003425361 , 0.416232623 ), ( 68 , 0.992618746 , 0.423905795 ), ( 68 , 0.990433274 , 0.427951147 ), ( 68 , 1.009765729 , 0.43917442 ), ( 68 , 0.946695688 , 0.405107301 ), ( 68 , 0.980081913 , 0.486893187 ), ( 68 , 0.531628502 , 0.262970588 ), ( 68 , 0.62201133 , 0.294440938 ), ( 68 , 0.744887101 , 0.334404672 ), ( 68 , 0.485019166 , 0.358041126 ), ( 68 , 0.620071736 , 0.399219404 ), ( 68 , 0.598530208 , 0.414821945 ), ( 68 , 0.780535835 , 0.377299073 ), ( 68 , 0.796049093 , 0.464398415 ), ( 68 , 0.765182853 , 0.483844701 ), ( 68 , 0.901423624 , 0.501159923 ), ( 68 , 0.938209672 , 0.558793608 ), ( 68 , 0.769110919 , 0.509006534 ), ( 68 , 0.741795336 , 0.5327768 ), ( 68 , 0.611192614 , 0.526877256 ), ( 68 , 0.679960889 , 0.606069621 ), ( 68 , 0.778040036 , 0.566556428 ), ( 68 , 0.745613859 , 0.617740464 ), ( 68 , 0.803535861 , 0.664611661 ), ( 68 , 1.351453138 , 0.520084475 ), ( 68 , 1.067783779 , 0.568473508 ), ( 68 , 1.071642305 , 0.597578966 ), ( 68 , 1.184212333 , 0.698307672 ), ( 68 , 1.433091776 , 0.605584535 ), ( 68 , 1.420261604 , 0.59666426 ), ( 68 , 1.419019302 , 0.608329149 ), ( 68 , 1.369302639 , 0.646337657 ), ( 68 , 1.354004145 , 0.651045188 ), ( 68 , 1.435619566 , 0.737756087 ), ( 68 , 1.56824124 , 0.796211845 ), ( 68 , 1.560421637 , 0.801128269 ), ( 68 , 1.302345209 , 0.651508533 ), ( 68 , 1.332797367 , 0.818845123 ), ( 68 , 1.55804245 , 0.855728509 ), ( 68 , 1.430785528 , 0.841709433 ), ( 68 , 0.860410353 , 0.706557078 ), ( 68 , 0.908893633 , 0.774528165 ), ( 68 , 1.073540708 , 0.818998885 ), ( 68 , 0.94237199 , 0.821890359 ), ( 68 , 0.903587996 , 0.841341778 ), ( 68 , 1.028174722 , 0.918764331 ), ( 68 , 1.275663879 , 0.801796176 ), ( 68 , 1.51677052 , 0.951109672 ), ( 68 , 1.513682958 , 0.993506936 ), ( 68 , 1.514826855 , 1.02600191 ), ( 68 , 1.29660103 , 1.031841209 ), ( 68 , 0.391331064 , 0.398391189 ), ( 68 , 0.477577278 , 0.462033232 ), ( 68 , 0.532913277 , 0.495677245 ), ( 68 , 0.55335201 , 0.510846713 ), ( 68 , 0.45545345 , 0.567500959 ), ( 68 , 0.418177794 , 0.590521424 ), ( 68 , 0.363476243 , 0.637298483 ), ( 68 , 0.650683912 , 0.65152453 ), ( 68 , 0.571132623 , 0.681432233 ), ( 68 , 0.664845818 , 0.702884612 ), ( 68 , 0.713807974 , 0.759878072 ), ( 68 , 0.434626164 , 0.800690583 ), ( 68 , 0.140649955 , 0.610755504 ), ( 68 , 0.153412372 , 0.642841807 ), ( 68 , 0.28191785 , 0.697972847 ), ( 68 , 0.333721277 , 0.749430397 ), ( 68 , 0.253790615 , 0.688971671 ), ( 68 , 0.246575914 , 0.750120202 ), ( 68 , 0.163360404 , 0.703932456 ), ( 68 , 0.105101056 , 0.772564862 ), ( 68 , 0.016128451 , 0.84538242 ), ( 68 , 0.073734025 , 0.863272625 ), ( 68 , 0.386479827 , 0.737698549 ), ( 68 , 0.357207643 , 0.874793113 ), ( 68 , 0.310564038 , 0.806057146 ), ( 68 , 0.293356364 , 0.864904236 ), ( 68 , 0.274439975 , 0.90404674 ), ( 68 , 0.416273785 , 0.931055582 ), ( 68 , 0.337888525 , 1.005869555 ), ( 68 , 0.303596289 , 1.000942053 ), ( 68 , 0.179813247 , 0.911017647 ), ( 68 , 0.135571744 , 0.972183719 ), ( 68 , 0.269493578 , 1.009091318 ), ( 68 , 0.749974903 , 0.78355027 ), ( 68 , 0.759291067 , 0.823111492 ), ( 68 , 0.760867344 , 0.893029239 ), ( 68 , 0.944073285 , 0.975407849 ), ( 68 , 0.938182031 , 1.047923629 ), ( 68 , 0.611522408 , 0.889382178 ), ( 68 , 0.664124618 , 0.967921446 ), ( 68 , 0.607515676 , 0.997791166 ), ( 68 , 0.822207727 , 0.995050079 ), ( 68 , 0.888140875 , 1.024890547 ), ( 68 , 0.878415341 , 1.082088308 ), ( 68 , 0.803737032 , 1.076885927 ), ( 68 , 1.203079851 , 1.036738435 ), ( 68 , 1.013789184 , 1.08812182 ), ( 68 , 1.073963637 , 1.083881314 ), ( 68 , 1.355743917 , 1.109970979 ), ( 68 , 1.335612856 , 1.203796241 ), ( 68 , 1.399038144 , 1.251655926 ), ( 68 , 1.474234714 , 1.250599317 ), ( 68 , 0.527133831 , 1.046483729 ), ( 68 , 0.45100569 , 1.040781817 ), ( 68 , 0.67951832 , 1.193240102 ), ( 68 , 0.485559339 , 1.131932223 ), ( 68 , 0.094705714 , 1.183734451 ), ( 68 , 0.218338483 , 1.235241216 ), ( 68 , 0.11280912 , 1.253270879 ), ( 68 , 0.282891539 , 1.298038225 ), ( 68 , 0.671862947 , 1.244311687 ), ( 68 , 0.765648299 , 1.280566164 ), ( 68 , 0.851393672 , 1.289238685 ), ( 68 , 1.434670039 , 1.366588843 ), ( 68 , 0.86113631 , 1.376628238 ), ( 68 , 0.452946033 , 1.302092159 ), ( 68 , 0.22230081 , 1.360544044 ), ( 68 , 0.264040006 , 1.405784156 ), ( 68 , 0.277866739 , 1.476666702 ), ( 68 , 2.387954171 , 0.045059878 ), ( 68 , 2.370346234 , 0.118963149 ), ( 68 , 2.44916602 , 0.228828349 ), ( 68 , 2.26989609 , 0.114596984 ), ( 68 , 2.577941967 , 0.206689811 ), ( 68 , 2.508887418 , 0.220859854 ), ( 68 , 2.700707456 , 0.309023799 ), ( 68 , 2.658688719 , 0.354865461 ), ( 68 , 2.615671902 , 0.372132981 ), ( 68 , 2.464199356 , 0.345328322 ), ( 68 , 2.553611723 , 0.409705146 ), ( 68 , 2.521252518 , 0.430575553 ), ( 68 , 2.259234311 , 0.336274848 ), ( 68 , 2.329672517 , 0.348491589 ), ( 68 , 2.270388051 , 0.337702417 ), ( 68 , 2.273017309 , 0.341739749 ), ( 68 , 2.268248386 , 0.341049842 ), ( 68 , 2.248521129 , 0.341909616 ), ( 68 , 2.224530707 , 0.457149986 ), ( 68 , 2.339738533 , 0.426685413 ), ( 68 , 2.542689673 , 0.525543721 ), ( 68 , 2.450683245 , 0.563113529 ), ( 68 , 2.257448451 , 0.493824422 ), ( 68 , 2.299996591 , 0.491509234 ), ( 68 , 2.744648102 , 0.518838909 ), ( 68 , 2.964981978 , 0.572909675 ), ( 68 , 3.020329565 , 0.632631427 ), ( 68 , 3.043905775 , 0.780446682 ), ( 68 , 2.829143245 , 0.65572571 ), ( 68 , 2.969374757 , 0.785364875 ), ( 68 , 3.015797358 , 0.851535527 ), ( 68 , 2.584651781 , 0.661729906 ), ( 68 , 2.709890373 , 0.73041008 ), ( 68 , 2.693437869 , 0.72374069 ), ( 68 , 2.700321859 , 0.768751831 ), ( 68 , 2.421467341 , 0.673869169 ), ( 68 , 2.527139055 , 0.753000221 ), ( 68 , 2.667346315 , 0.86307796 ), ( 68 , 2.500720262 , 0.862869123 ), ( 68 , 2.750003744 , 0.882593372 ), ( 68 , 2.780921446 , 0.984911984 ), ( 68 , 1.975900936 , 0.399462428 ), ( 68 , 2.050544722 , 0.492159578 ), ( 68 , 1.871312608 , 0.592258229 ), ( 68 , 2.1388926 , 0.618776219 ), ( 68 , 2.093763636 , 0.629749962 ), ( 68 , 2.14394956 , 0.675979674 ), ( 68 , 2.008116041 , 0.718439179 ), ( 68 , 2.153132254 , 0.842657724 ), ( 68 , 1.820851463 , 0.65266087 ), ( 68 , 1.678351964 , 0.615313147 ), ( 68 , 1.851291579 , 0.655613658 ), ( 68 , 1.663726644 , 0.738973746 ), ( 68 , 1.571496987 , 0.891525371 ), ( 68 , 1.900790211 , 0.792542394 ), ( 68 , 1.890255487 , 0.830886132 ), ( 68 , 1.967624484 , 0.907546467 ), ( 68 , 1.932286167 , 0.964889661 ), ( 68 , 1.721535408 , 0.966093528 ), ( 68 , 1.703334778 , 1.04975454 ), ( 68 , 1.640899623 , 1.033494582 ), ( 68 , 1.619777027 , 1.05511061 ), ( 68 , 2.602439801 , 0.946731004 ), ( 68 , 2.246630325 , 0.847069725 ), ( 68 , 2.657824106 , 1.116180457 ), ( 68 , 2.937056331 , 1.175008682 ), ( 68 , 2.69583314 , 1.240237619 ), ( 68 , 2.168432969 , 1.033047803 ), ( 68 , 2.051327537 , 1.053170666 ), ( 68 , 1.656290914 , 1.214204603 ), ( 68 , 1.858181674 , 1.234504251 ), ( 68 , 2.417501505 , 1.250625646 ), ( 68 , 3.044315198 , 1.354300697 ), ( 68 , 1.983838582 , 1.411914106 ), ( 68 , 2.296753849 , 1.435343904 ), ( 68 , 1.796766903 , 1.512914361 ), ( 68 , 3.95803345 , 0.041233269 ), ( 68 , 3.999410443 , 0.16952302 ), ( 68 , 3.98277666 , 0.186782671 ), ( 68 , 3.907249044 , 0.216952423 ), ( 68 , 3.865303904 , 0.228653601 ), ( 68 , 4.140099651 , 0.222068189 ), ( 68 , 4.071326347 , 0.279460888 ), ( 68 , 4.129445834 , 0.270992757 ), ( 68 , 3.982436186 , 0.336640462 ), ( 68 , 3.917154039 , 0.331385388 ), ( 68 , 3.701248052 , 0.424378125 ), ( 68 , 3.88308 , 0.431454661 ), ( 68 , 3.942733519 , 0.603283233 ), ( 68 , 3.924442829 , 0.691937711 ), ( 68 , 4.259817529 , 0.403566246 ), ( 68 , 4.403695261 , 0.522992449 ), ( 68 , 4.232705609 , 0.466753473 ), ( 68 , 4.207219954 , 0.596534399 ), ( 68 , 4.650846232 , 0.678604297 ), ( 68 , 4.651190436 , 0.686309468 ), ( 68 , 4.703410143 , 0.757771916 ), ( 68 , 4.50148497 , 0.791059828 ), ( 68 , 4.061237104 , 0.601537965 ), ( 68 , 4.05990221 , 0.642365025 ), ( 68 , 4.210284415 , 0.683416396 ), ( 68 , 4.192788754 , 0.683777931 ), ( 68 , 4.229297849 , 0.717254642 ), ( 68 , 4.234213852 , 0.764726105 ), ( 68 , 4.051444477 , 0.675856565 ), ( 68 , 4.356963503 , 0.852805585 ), ( 68 , 4.304551556 , 0.837033311 ), ( 68 , 4.295429187 , 0.912624245 ), ( 68 , 4.664654665 , 1.09605437 ), ( 68 , 3.46272951 , 0.643809625 ), ( 68 , 3.801937947 , 0.757164941 ), ( 68 , 3.859239632 , 0.788642324 ), ( 68 , 3.79281341 , 0.772521093 ), ( 68 , 3.635260284 , 0.704029086 ), ( 68 , 3.613206845 , 0.733859751 ), ( 68 , 3.72394369 , 0.903867243 ), ( 68 , 3.287738738 , 0.664428674 ), ( 68 , 3.15236451 , 0.751897191 ), ( 68 , 3.358158304 , 0.850672897 ), ( 68 , 3.384412145 , 0.959255814 ), ( 68 , 4.084370885 , 0.908799497 ), ( 68 , 3.734997728 , 0.989400651 ), ( 68 , 4.232161909 , 1.044958248 ), ( 68 , 4.134381928 , 1.039665986 ), ( 68 , 4.432131686 , 1.177722643 ), ( 68 , 4.312493413 , 1.170138011 ), ( 68 , 4.67492786 , 1.301475763 ), ( 68 , 4.593183306 , 1.295515405 ), ( 68 , 3.7094672 , 1.201892433 ), ( 68 , 3.46210478 , 1.174397578 ), ( 68 , 3.387826871 , 1.151818267 ), ( 68 , 3.390151724 , 1.173610748 ), ( 68 , 3.302489586 , 1.224953778 ), ( 68 , 3.145422579 , 1.225883432 ), ( 68 , 3.193105843 , 1.351597366 ), ( 68 , 3.928794153 , 1.25255328 ), ( 68 , 3.580871457 , 1.341177222 ), ( 68 , 3.8967075 , 1.364439971 ), ( 68 , 3.621625586 , 1.378734939 ), ( 68 , 4.054176315 , 1.404106028 ), ( 68 , 5.476588922 , 0.031646199 ), ( 68 , 5.532740897 , 0.089911784 ), ( 68 , 5.343493579 , 0.15005343 ), ( 68 , 5.43194642 , 0.214897046 ), ( 68 , 5.523144199 , 0.267500703 ), ( 68 , 5.752852054 , 0.244726328 ), ( 68 , 5.822000826 , 0.299999344 ), ( 68 , 5.817038652 , 0.31903845 ), ( 68 , 5.795853886 , 0.42160903 ), ( 68 , 5.611773694 , 0.315295116 ), ( 68 , 5.581504716 , 0.311049158 ), ( 68 , 5.623036908 , 0.452411074 ), ( 68 , 5.292932867 , 0.20682843 ), ( 68 , 5.414451876 , 0.306674093 ), ( 68 , 5.394224848 , 0.293474128 ), ( 68 , 5.465055933 , 0.314634539 ), ( 68 , 5.36723477 , 0.343263557 ), ( 68 , 5.228300291 , 0.287869097 ), ( 68 , 5.239772049 , 0.349160612 ), ( 68 , 5.195631107 , 0.352757427 ), ( 68 , 5.163632509 , 0.39261081 ), ( 68 , 5.329948487 , 0.398786082 ), ( 68 , 5.523643656 , 0.365587211 ), ( 68 , 5.490423756 , 0.402234216 ), ( 68 , 5.579200707 , 0.43038697 ), ( 68 , 5.549926581 , 0.534407995 ), ( 68 , 5.604161361 , 0.539947018 ), ( 68 , 5.41359801 , 0.455165456 ), ( 68 , 5.490201213 , 0.530511866 ), ( 68 , 5.329769018 , 0.533903615 ), ( 68 , 5.554024499 , 0.624784296 ), ( 68 , 5.425368927 , 0.621123651 ), ( 68 , 5.817139554 , 0.452730799 ), ( 68 , 6.063019167 , 0.517834367 ), ( 68 , 5.732997711 , 0.494646235 ), ( 68 , 6.125233418 , 0.567782795 ), ( 68 , 6.029495103 , 0.604098808 ), ( 68 , 5.906095242 , 0.712426842 ), ( 68 , 6.165128126 , 0.80500996 ), ( 68 , 5.708937183 , 0.572401456 ), ( 68 , 5.855059119 , 0.709763128 ), ( 68 , 5.565227452 , 0.733514529 ), ( 68 , 5.628752451 , 0.794022925 ), ( 68 , 5.619547484 , 0.812651453 ), ( 68 , 5.626995972 , 0.810294893 ), ( 68 , 5.59091151 , 0.815590756 ), ( 68 , 5.797540727 , 0.836595105 ), ( 68 , 5.642510605 , 0.843051117 ), ( 68 , 5.636131012 , 0.847959151 ), ( 68 , 5.882015606 , 0.770050817 ), ( 68 , 5.990070683 , 0.812422102 ), ( 68 , 5.961832927 , 0.80660293 ), ( 68 , 5.983085098 , 0.850555175 ), ( 68 , 6.269776347 , 0.974597116 ), ( 68 , 5.868924601 , 0.894586891 ), ( 68 , 5.890014023 , 0.914844949 ), ( 68 , 5.860452343 , 0.976742257 ), ( 68 , 5.891845575 , 0.998772055 ), ( 68 , 6.042865634 , 0.98943639 ), ( 68 , 6.126682698 , 1.004183499 ), ( 68 , 6.110166032 , 1.051992675 ), ( 68 , 6.243854819 , 1.116746171 ), ( 68 , 6.206172845 , 1.126005533 ), ( 68 , 5.095930002 , 0.353382571 ), ( 68 , 5.16097764 , 0.398833939 ), ( 68 , 5.051273566 , 0.391672013 ), ( 68 , 5.126837877 , 0.475176254 ), ( 68 , 5.097368996 , 0.514001227 ), ( 68 , 5.240260133 , 0.545074237 ), ( 68 , 5.136480812 , 0.497406619 ), ( 68 , 5.183602862 , 0.549889922 ), ( 68 , 5.063312262 , 0.56023118 ), ( 68 , 4.979958054 , 0.515202907 ), ( 68 , 5.038932852 , 0.556070504 ), ( 68 , 5.117808195 , 0.545173785 ), ( 68 , 5.120080148 , 0.579509143 ), ( 68 , 5.106348349 , 0.588669656 ), ( 68 , 5.186821634 , 0.616305413 ), ( 68 , 5.140101347 , 0.615380666 ), ( 68 , 5.017555892 , 0.622401524 ), ( 68 , 5.102914638 , 0.633347699 ), ( 68 , 5.339838021 , 0.646227871 ), ( 68 , 5.261972649 , 0.624624189 ), ( 68 , 5.299955805 , 0.641444629 ), ( 68 , 5.217125169 , 0.701149833 ), ( 68 , 5.133625464 , 0.762815033 ), ( 68 , 5.288621072 , 0.833168747 ), ( 68 , 4.904747948 , 0.672530742 ), ( 68 , 5.049819197 , 0.682789418 ), ( 68 , 4.975574887 , 0.710067899 ), ( 68 , 4.954972536 , 0.734095583 ), ( 68 , 5.125436991 , 0.840620324 ), ( 68 , 5.027691187 , 0.826849674 ), ( 68 , 5.157752124 , 0.968011191 ), ( 68 , 5.067669039 , 1.008225869 ), ( 68 , 4.776453369 , 0.987654279 ), ( 68 , 4.879964405 , 1.059614271 ), ( 68 , 5.481178916 , 0.757897491 ), ( 68 , 5.505606227 , 0.771196645 ), ( 68 , 5.480262397 , 0.774471789 ), ( 68 , 5.546914504 , 0.797165094 ), ( 68 , 5.430625379 , 0.825485515 ), ( 68 , 5.403035537 , 0.83898465 ), ( 68 , 5.452528291 , 0.874883351 ), ( 68 , 5.5958888 , 0.863786941 ), ( 68 , 5.368346904 , 0.868819241 ), ( 68 , 5.379908785 , 0.869893075 ), ( 68 , 5.464413126 , 0.960826876 ), ( 68 , 5.313824887 , 0.948112109 ), ( 68 , 5.302228911 , 0.971386206 ), ( 68 , 5.451171834 , 1.025358609 ), ( 68 , 5.878182572 , 1.080562693 ), ( 68 , 6.003820711 , 1.089648894 ), ( 68 , 5.748257701 , 1.154345088 ), ( 68 , 5.771924638 , 1.15304177 ), ( 68 , 6.163134711 , 1.256651356 ), ( 68 , 6.0117812 , 1.276416973 ), ( 68 , 6.048784983 , 1.319144954 ), ( 68 , 5.18475523 , 1.037139414 ), ( 68 , 5.109912745 , 1.022470463 ), ( 68 , 5.193939141 , 1.06830452 ), ( 68 , 5.376601401 , 1.141433852 ), ( 68 , 5.124315267 , 1.249740501 ), ( 68 , 4.795868593 , 1.248226615 ), ( 68 , 4.946067024 , 1.322741571 ), ( 68 , 5.72563209 , 1.388442098 ), ( 68 , 5.393115142 , 1.386322193 ), ( 68 , 5.29898453 , 1.405542611 ), ( 68 , 4.817718622 , 1.382704575 ), ( 68 , 5.353003263 , 1.421296326 ), ( 68 , 6.281132835 , 1.513312059 ), ( 68 , 4.779909505 , 1.512466631 ), ( 68 , 5.817175666 , 1.504847869 ), ( 68 , 0.007396384 , -0.700729134 ), ( 68 , 6.26258497 , -0.556485294 ), ( 68 , 0.130101809 , -0.560532306 ), ( 68 , 6.18322638 , -0.556256487 ), ( 68 , 6.090108945 , -0.520940837 ), ( 68 , 6.135740596 , -0.478647504 ), ( 68 , 6.177022005 , -0.479811199 ), ( 68 , 6.258565738 , -0.471987711 ), ( 68 , 0.18140208 , -0.439768051 ), ( 68 , 6.104531046 , -0.495460274 ), ( 68 , 6.160720879 , -0.449317609 ), ( 68 , 6.032865468 , -0.323614696 ), ( 68 , 6.099679106 , -0.240773079 ), ( 68 , 0.052579239 , -0.241087475 ), ( 68 , 6.264688224 , -0.229564203 ), ( 68 , 0.18694635 , -0.173168681 ), ( 68 , 6.261662857 , -0.165117616 ), ( 68 , 6.28178216 , -0.10286012 ), ( 68 , 0.388161289 , -0.31306651 ), ( 68 , 0.55056496 , -0.179357178 ), ( 68 , 0.349286703 , -0.172513727 ), ( 68 , 0.317621909 , -0.118393883 ), ( 68 , 0.374896611 , -0.14843276 ), ( 68 , 0.392247604 , -0.097668243 ), ( 68 , 0.374698099 , -0.068548994 ), ( 68 , 0.762648504 , -0.000837614 ), ( 68 , 0.589748606 , 0.012567909 ), ( 68 , 0.566606351 , 0.065786792 ), ( 68 , 0.256400178 , -0.10268418 ), ( 68 , 0.234273805 , -0.078986969 ), ( 68 , 0.157242017 , -0.097240511 ), ( 68 , 0.252364704 , -0.030822563 ), ( 68 , 0.114648001 , 0.066771918 ), ( 68 , 0.536513199 , 0.192313536 ), ( 68 , 5.823451881 , -0.276128701 ), ( 68 , 5.908417763 , -0.167699465 ), ( 68 , 5.947459812 , -0.145062468 ), ( 68 , 5.718539922 , -0.1567804 ), ( 68 , 5.749359535 , -0.149474987 ), ( 68 , 6.095516204 , -0.124973767 ), ( 68 , 6.114579346 , -0.081558614 ), ( 68 , 6.109839722 , -0.068414943 ), ( 68 , 6.038679859 , -0.083681543 ), ( 68 , 5.646701613 , -0.076238471 ), ( 68 , 5.722768343 , 0.013446636 ), ( 68 , 5.595719579 , -0.054633666 ), ( 68 , 5.670266609 , -0.000891197 ), ( 68 , 5.64925189 , 0.031923679 ), ( 68 , 5.529920862 , -0.013351639 ), ( 68 , 5.822795796 , 0.139208901 ), ( 68 , 5.849934678 , 0.244907135 ), ( 68 , 6.247813723 , 0.082822922 ), ( 68 , 6.264112996 , 0.143522261 ), ( 68 , 0.078270262 , 0.222901825 ), ( 68 , 6.282300246 , 0.196758719 ), ( 68 , 0.014065832 , 0.306338465 ), ( 68 , 6.252717843 , 0.312407452 ), ( 68 , 0.225077304 , 0.223133728 ), ( 68 , 0.187091345 , 0.290804525 ), ( 68 , 0.086993981 , 0.283629787 ), ( 68 , 0.057411897 , 0.295325383 ), ( 68 , 0.118155995 , 0.437064484 ), ( 68 , 6.045607514 , 0.26108372 ), ( 68 , 6.032670371 , 0.283310685 ), ( 68 , 6.098266522 , 0.319473759 ), ( 68 , 6.120959398 , 0.358819963 ), ( 68 , 5.996522349 , 0.310578319 ), ( 68 , 6.034822629 , 0.365094526 ), ( 68 , 5.980605478 , 0.334075721 ), ( 68 , 6.031645695 , 0.407369577 ), ( 68 , 6.265617038 , 0.369417276 ), ( 68 , 0.052471281 , 0.409659785 ), ( 68 , 0.007484537 , 0.423293257 ), ( 68 , 6.263042902 , 0.452998891 ), ( 68 , 6.158842883 , 0.500317708 ), ( 68 , 6.117757298 , 0.500809227 ), ( 68 , 6.176379409 , 0.561959196 ), ( 68 , 6.280938946 , 0.588591372 ), ( 68 , 6.275999522 , 0.611094119 ), ( 68 , 0.000930273 , 0.668530133 ), ( 68 , 6.257306533 , 0.685611168 ), ( 68 , 1.584489986 , -0.643553561 ), ( 68 , 1.62527622 , -0.638157084 ), ( 68 , 1.616749792 , -0.607667322 ), ( 68 , 1.597389626 , -0.579779568 ), ( 68 , 1.527841545 , -0.572631686 ), ( 68 , 1.473937195 , -0.605449912 ), ( 68 , 1.475304754 , -0.47491727 ), ( 68 , 1.882113423 , -0.38053853 ), ( 68 , 1.835147874 , -0.360242298 ), ( 68 , 1.819631876 , -0.33928417 ), ( 68 , 1.71010585 , -0.315245064 ), ( 68 , 1.621926053 , -0.317404217 ), ( 68 , 1.667225501 , -0.273384329 ), ( 68 , 1.377637461 , -0.399581146 ), ( 68 , 1.482417054 , -0.356660051 ), ( 68 , 1.384796576 , -0.310228715 ), ( 68 , 1.419544972 , -0.219114071 ), ( 68 , 1.560125476 , -0.315122262 ), ( 68 , 1.599761362 , -0.288305076 ), ( 68 , 1.620374727 , -0.275643172 ), ( 68 , 1.615637308 , -0.26283568 ), ( 68 , 1.704113179 , -0.210853584 ), ( 68 , 1.631671524 , -0.126502208 ), ( 68 , 1.503399665 , -0.119803324 ), ( 68 , 1.661737296 , -0.080210853 ), ( 68 , 1.580170504 , -0.089658061 ), ( 68 , 1.601066457 , -0.058314138 ), ( 68 , 1.952912583 , -0.322744867 ), ( 68 , 1.983041877 , -0.242069638 ), ( 68 , 1.942170329 , -0.25976084 ), ( 68 , 1.945757804 , -0.247466506 ), ( 68 , 2.076835712 , -0.220044427 ), ( 68 , 2.046833917 , -0.19514465 ), ( 68 , 2.056612611 , -0.164142494 ), ( 68 , 1.840588252 , -0.189932861 ), ( 68 , 1.824488259 , -0.18004267 ), ( 68 , 1.975807531 , -0.035507948 ), ( 68 , 1.969121875 , -0.019651203 ), ( 68 , 2.239172536 , -0.091154143 ), ( 68 , 2.292437414 , 0.003450286 ), ( 68 , 2.206993766 , 0.027470764 ), ( 68 , 2.119680476 , 0.037787271 ), ( 68 , 1.781802981 , -0.135343091 ), ( 68 , 1.807039453 , -0.102139294 ), ( 68 , 1.841811841 , -0.065534288 ), ( 68 , 1.798935636 , -0.090298747 ), ( 68 , 1.792107552 , -0.074459942 ), ( 68 , 1.88081278 , -0.068034145 ), ( 68 , 1.890656034 , -0.00452967 ), ( 68 , 1.686073582 , -0.013556692 ), ( 68 , 1.683615491 , 0.014184043 ), ( 68 , 1.710096654 , 0.08626916 ), ( 68 , 1.674531017 , 0.080213162 ), ( 68 , 1.690637414 , 0.090328036 ), ( 68 , 1.729758434 , 0.106171743 ), ( 68 , 1.704091317 , 0.102398334 ), ( 68 , 1.985118315 , 0.057191365 ), ( 68 , 2.010690623 , 0.07105538 ), ( 68 , 2.021756684 , 0.086317978 ), ( 68 , 1.923037794 , 0.062511244 ), ( 68 , 1.960495458 , 0.114881633 ), ( 68 , 2.097045462 , 0.220640259 ), ( 68 , 1.837675256 , 0.205504711 ), ( 68 , 1.951067924 , 0.208653561 ), ( 68 , 1.9721675 , 0.220976631 ), ( 68 , 1.997744113 , 0.245067479 ), ( 68 , 1.1351269 , -0.286885792 ), ( 68 , 1.350431397 , -0.037261912 ), ( 68 , 1.434463192 , 0.028692259 ), ( 68 , 1.482736742 , 0.026035263 ), ( 68 , 1.315227229 , -0.012166362 ), ( 68 , 1.232095858 , -0.016232293 ), ( 68 , 1.400063071 , 0.051121384 ), ( 68 , 1.014535881 , -0.08820756 ), ( 68 , 0.961619581 , -0.056172745 ), ( 68 , 1.000601543 , -0.025369031 ), ( 68 , 1.090041877 , -0.062368643 ), ( 68 , 1.097495825 , -0.007374165 ), ( 68 , 1.100230945 , 0.012840315 ), ( 68 , 1.012920704 , -0.020051726 ), ( 68 , 0.981944742 , 0.045743115 ), ( 68 , 1.25357895 , 0.101021335 ), ( 68 , 1.265626164 , 0.146744078 ), ( 68 , 1.312096636 , 0.190473794 ), ( 68 , 1.088450565 , 0.117367405 ), ( 68 , 1.061058168 , 0.155031882 ), ( 68 , 1.176850541 , 0.183641428 ), ( 68 , 1.205704038 , 0.199185304 ), ( 68 , 1.148781776 , 0.198578304 ), ( 68 , 1.120549003 , 0.282991985 ), ( 68 , 1.613641013 , 0.050073957 ), ( 68 , 1.61615908 , 0.050647181 ), ( 68 , 1.610593155 , 0.131135417 ), ( 68 , 1.680824871 , 0.123668615 ), ( 68 , 1.687095474 , 0.228646241 ), ( 68 , 1.521876608 , 0.209389828 ), ( 68 , 1.572046314 , 0.220109609 ), ( 68 , 1.592495407 , 0.251102897 ), ( 68 , 1.553639263 , 0.242977093 ), ( 68 , 1.530903189 , 0.24518621 ), ( 68 , 1.572562522 , 0.284469451 ), ( 68 , 1.601037114 , 0.285652691 ), ( 68 , 1.833910685 , 0.271140343 ), ( 68 , 1.80930706 , 0.276422691 ), ( 68 , 1.753374873 , 0.248124879 ), ( 68 , 1.723053193 , 0.282843804 ), ( 68 , 1.728032829 , 0.293160005 ), ( 68 , 1.884000305 , 0.296288813 ), ( 68 , 1.80796976 , 0.369327935 ), ( 68 , 1.656619054 , 0.279482132 ), ( 68 , 1.691987995 , 0.362840364 ), ( 68 , 1.653294132 , 0.411954163 ), ( 68 , 1.766877929 , 0.398587292 ), ( 68 , 1.78522286 , 0.404949439 ), ( 68 , 1.797556591 , 0.447904929 ), ( 68 , 1.737977271 , 0.426735649 ), ( 68 , 1.353379825 , 0.236459215 ), ( 68 , 1.329490496 , 0.259335258 ), ( 68 , 1.436923692 , 0.320541295 ), ( 68 , 1.41883451 , 0.359253254 ), ( 68 , 1.209714606 , 0.323636384 ), ( 68 , 1.280933362 , 0.406935587 ), ( 68 , 1.569314966 , 0.377062836 ), ( 68 , 1.616606041 , 0.401388569 ), ( 68 , 1.456124813 , 0.571575416 ), ( 68 , 1.647436953 , 0.613474029 ), ( 68 , 1.518168455 , 0.613645111 ), ( 68 , 1.492014899 , 0.621884247 ), ( 68 , 3.168139227 , -0.575305435 ), ( 68 , 3.339127614 , -0.502062855 ), ( 68 , 3.462063709 , -0.328583924 ), ( 68 , 3.445740438 , -0.288244674 ), ( 68 , 3.185635906 , -0.306090337 ), ( 68 , 3.238936407 , -0.271495762 ), ( 68 , 3.297408864 , -0.293668856 ), ( 68 , 3.012191823 , -0.450270391 ), ( 68 , 2.893242346 , -0.446366443 ), ( 68 , 3.041220337 , -0.400513637 ), ( 68 , 2.993376479 , -0.359232176 ), ( 68 , 2.99280018 , -0.240006029 ), ( 68 , 2.948134681 , -0.219783156 ), ( 68 , 3.243314775 , -0.206161675 ), ( 68 , 2.96931829 , -0.17967261 ), ( 68 , 3.517296486 , -0.294229661 ), ( 68 , 3.665528543 , -0.142453211 ), ( 68 , 3.64322289 , -0.140657433 ), ( 68 , 3.614134633 , -0.119336813 ), ( 68 , 3.501626929 , -0.108265179 ), ( 68 , 3.790863566 , -0.091079758 ), ( 68 , 3.872128745 , 0.035525305 ), ( 68 , 3.334383014 , -0.049613134 ), ( 68 , 3.475054439 , -0.024273306 ), ( 68 , 3.464295107 , 0.025414216 ), ( 68 , 3.265099492 , 0.076732316 ), ( 68 , 3.619321657 , 0.110717362 ), ( 68 , 3.629683502 , 0.176902273 ), ( 68 , 3.619799151 , 0.22707566 ), ( 68 , 3.556229728 , 0.218410114 ), ( 68 , 2.719608655 , -0.233480356 ), ( 68 , 2.76289459 , -0.233948877 ), ( 68 , 2.599448872 , -0.154225617 ), ( 68 , 2.769998923 , -0.068082185 ), ( 68 , 2.734845586 , -0.076591158 ), ( 68 , 2.952260481 , -0.069234658 ), ( 68 , 2.988736792 , -0.038617773 ), ( 68 , 2.940360241 , 0.039587464 ), ( 68 , 2.991741284 , 0.057610314 ), ( 68 , 2.97333594 , 0.115801651 ), ( 68 , 2.655902913 , 0.020261768 ), ( 68 , 2.469916079 , -0.021554232 ), ( 68 , 2.541150594 , -0.004874455 ), ( 68 , 2.616755379 , 0.05907914 ), ( 68 , 2.604053261 , 0.07403211 ), ( 68 , 2.724546336 , 0.041767721 ), ( 68 , 2.755888279 , 0.049648167 ), ( 68 , 2.658344152 , 0.107702249 ), ( 68 , 2.736688537 , 0.197522316 ), ( 68 , 3.094103064 , 0.09044879 ), ( 68 , 2.975063499 , 0.160016156 ), ( 68 , 3.002114114 , 0.208968222 ), ( 68 , 3.225963415 , 0.253793472 ), ( 68 , 3.076966472 , 0.248941914 ), ( 68 , 3.476998427 , 0.296973706 ), ( 68 , 3.469584185 , 0.330198154 ), ( 68 , 3.330562911 , 0.455994601 ), ( 68 , 2.949337359 , 0.220146306 ), ( 68 , 2.809189034 , 0.319616635 ), ( 68 , 3.248260356 , 0.446495833 ), ( 68 , 3.246562335 , 0.451188201 ), ( 68 , 4.800877702 , -0.618348365 ), ( 68 , 4.703427675 , -0.628458058 ), ( 68 , 4.793965447 , -0.446892271 ), ( 68 , 4.633778362 , -0.584751857 ), ( 68 , 4.734973087 , -0.425835615 ), ( 68 , 4.699841462 , -0.417818932 ), ( 68 , 4.72382957 , -0.36194047 ), ( 68 , 4.913385593 , -0.479944737 ), ( 68 , 4.857426644 , -0.420791922 ), ( 68 , 5.073113193 , -0.360299416 ), ( 68 , 4.966245371 , -0.356462611 ), ( 68 , 4.971557538 , -0.336491736 ), ( 68 , 4.92876231 , -0.334096964 ), ( 68 , 5.012313387 , -0.330788399 ), ( 68 , 4.905011254 , -0.337158699 ), ( 68 , 4.794074596 , -0.324974388 ), ( 68 , 4.822577242 , -0.243970004 ), ( 68 , 4.51182278 , -0.485142252 ), ( 68 , 4.529165973 , -0.423839283 ), ( 68 , 4.529661394 , -0.420162475 ), ( 68 , 4.449445447 , -0.318510757 ), ( 68 , 4.356678383 , -0.318009761 ), ( 68 , 4.509980398 , -0.27158214 ), ( 68 , 4.521556593 , -0.265703192 ), ( 68 , 4.553582799 , -0.279922788 ), ( 68 , 4.49737634 , -0.221682759 ), ( 68 , 4.78930783 , -0.269316822 ), ( 68 , 4.686760124 , -0.197877745 ), ( 68 , 4.724481039 , -0.09351831 ), ( 68 , 4.636410367 , -0.084645304 ), ( 68 , 5.253529835 , -0.130371704 ), ( 68 , 5.143146809 , -0.177271233 ), ( 68 , 5.224698506 , -0.116918521 ), ( 68 , 5.036444915 , -0.152180218 ), ( 68 , 5.102278307 , -0.122943713 ), ( 68 , 5.150270512 , -0.095078232 ), ( 68 , 5.195894782 , -0.081928049 ), ( 68 , 5.355791172 , -0.036713864 ), ( 68 , 5.198669546 , 0.071359028 ), ( 68 , 5.249994871 , 0.082559549 ), ( 68 , 5.002922252 , -0.023495905 ), ( 68 , 5.055007072 , 0.007394808 ), ( 68 , 4.992422238 , 0.058131089 ), ( 68 , 4.879572512 , -0.019425441 ), ( 68 , 4.873399089 , 0.06614648 ), ( 68 , 5.109830189 , 0.035110648 ), ( 68 , 5.094988325 , 0.082201126 ), ( 68 , 5.166305815 , 0.166114055 ), ( 68 , 5.232501995 , 0.19731959 ), ( 68 , 5.187508177 , 0.203943931 ), ( 68 , 4.971086329 , 0.176993359 ), ( 68 , 4.94960442 , 0.188642046 ), ( 68 , 4.982086123 , 0.218879645 ), ( 68 , 5.128885395 , 0.272456189 ), ( 68 , 4.225680959 , -0.176328337 ), ( 68 , 4.582942652 , -0.076260572 ), ( 68 , 4.532787034 , -0.049058552 ), ( 68 , 4.677859686 , 0.019392077 ), ( 68 , 4.466690494 , -0.002549284 ), ( 68 , 4.506903584 , 0.006135237 ), ( 68 , 4.419872971 , -0.000640991 ), ( 68 , 4.393351665 , 0.039141963 ), ( 68 , 4.233320083 , 0.027937757 ), ( 68 , 4.083251117 , 0.021424937 ), ( 68 , 3.987261168 , -0.023647214 ), ( 68 , 4.007180972 , 0.016393641 ), ( 68 , 4.13402132 , 0.026978469 ), ( 68 , 4.385112654 , 0.106227168 ), ( 68 , 4.411860951 , 0.164121661 ), ( 68 , 4.25294649 , 0.137151682 ), ( 68 , 4.226348415 , 0.150324729 ), ( 68 , 4.224108604 , 0.17593329 ), ( 68 , 4.335257863 , 0.180970889 ), ( 68 , 4.744457954 , 0.043317042 ), ( 68 , 4.68827063 , 0.065135687 ), ( 68 , 4.651835023 , 0.096519257 ), ( 68 , 4.71292142 , 0.114387002 ), ( 68 , 4.60054214 , 0.229698409 ), ( 68 , 4.697722361 , 0.324848987 ), ( 68 , 4.880697204 , 0.263261364 ), ( 68 , 4.918914983 , 0.295108178 ), ( 68 , 5.012014593 , 0.294098428 ), ( 68 , 4.995466752 , 0.334133155 ), ( 68 , 4.817513971 , 0.356967263 ), ( 68 , 4.807541617 , 0.375380644 ), ( 68 , 4.802467237 , 0.397889064 ), ( 68 , 4.911008506 , 0.348540211 ), ( 68 , 4.872159833 , 0.385849001 ), ( 68 , 4.927229865 , 0.437144234 ), ( 68 , 4.888504428 , 0.456070264 ), ( 68 , 4.486633852 , 0.280890438 ), ( 68 , 4.433833431 , 0.268495629 ), ( 68 , 4.514112359 , 0.454687505 ), ( 68 , 4.520316975 , 0.473569169 ), ( 68 , 4.827263189 , 0.457759423 ), ( 68 , 4.878190474 , 0.49968725 ), ( 68 , 4.633965821 , 0.482504544 ), ( 68 , 4.672919598 , 0.523526095 ), ( 68 , 4.619998199 , 0.571407759 ), ( 68 , 4.704021326 , 0.569812648 ), ( 68 , 4.655172504 , 0.629841941 ), ( 68 , 4.659792553 , 0.638006646 ), ( 68 , 1.1468889 , -1.446861273 ), ( 68 , 1.363242598 , -1.423166231 ), ( 68 , 0.586071386 , -1.332687966 ), ( 68 , 0.071033745 , -1.393672817 ), ( 68 , 0.722663604 , -1.243301996 ), ( 68 , 0.701069489 , -1.208345354 ), ( 68 , 1.470646499 , -1.286309393 ), ( 68 , 1.51757062 , -1.268890682 ), ( 68 , 0.935569983 , -1.147800221 ), ( 68 , 0.85164238 , -1.124764844 ), ( 68 , 1.216586771 , -1.088707213 ), ( 68 , 0.160718999 , -1.331853745 ), ( 68 , 0.046488309 , -1.278003921 ), ( 68 , 0.228677288 , -1.213077681 ), ( 68 , 0.745564705 , -1.178487715 ), ( 68 , 0.505301495 , -0.961190883 ), ( 68 , 0.760730915 , -1.12461356 ), ( 68 , 0.748737922 , -1.10899696 ), ( 68 , 0.671360991 , -1.064347424 ), ( 68 , 0.831886822 , -1.008971279 ), ( 68 , 0.774991225 , -0.960156717 ), ( 68 , 1.541324669 , -1.079302051 ), ( 68 , 1.455499192 , -0.996283655 ), ( 68 , 1.511753039 , -0.928869413 ), ( 68 , 1.41679325 , -0.913038193 ), ( 68 , 1.213547738 , -1.015844675 ), ( 68 , 1.55735049 , -0.768092604 ), ( 68 , 1.541915713 , -0.749117128 ), ( 68 , 1.341425948 , -0.782284049 ), ( 68 , 1.359598382 , -0.65266978 ), ( 68 , 1.344975027 , -0.623401751 ), ( 68 , 1.048328129 , -0.899976982 ), ( 68 , 0.991903674 , -0.885831563 ), ( 68 , 1.010974157 , -0.825831348 ), ( 68 , 1.07957664 , -0.74903745 ), ( 68 , 0.977852359 , -0.709666207 ), ( 68 , 1.026510011 , -0.676476773 ), ( 68 , 1.00629405 , -0.635745252 ), ( 68 , 1.247165192 , -0.593497322 ), ( 68 , 1.142146851 , -0.659422644 ), ( 68 , 1.113448782 , -0.649208006 ), ( 68 , 1.273682711 , -0.597576268 ), ( 68 , 1.289377105 , -0.449031328 ), ( 68 , 1.06274878 , -0.451131523 ), ( 68 , 1.201217007 , -0.428180885 ), ( 68 , 0.411117304 , -0.994859767 ), ( 68 , 0.0621555 , -0.961150407 ), ( 68 , 0.355226939 , -0.889017834 ), ( 68 , 0.429835849 , -0.749235638 ), ( 68 , 0.624434055 , -0.655831307 ), ( 68 , 0.33247929 , -0.733210458 ), ( 68 , 0.268640155 , -0.666984215 ), ( 68 , 0.052058757 , -0.736047995 ), ( 68 , 0.099502463 , -0.685261629 ), ( 68 , 0.133039691 , -0.68973787 ), ( 68 , 0.174422802 , -0.592752224 ), ( 68 , 0.433535824 , -0.585816072 ), ( 68 , 0.358467311 , -0.646672717 ), ( 68 , 0.508667403 , -0.560918784 ), ( 68 , 0.399246769 , -0.523333348 ), ( 68 , 0.520669169 , -0.461327876 ), ( 68 , 0.383932568 , -0.384616359 ), ( 68 , 0.771466488 , -0.617458703 ), ( 68 , 0.889002329 , -0.570846028 ), ( 68 , 0.664061992 , -0.569088196 ), ( 68 , 0.698309366 , -0.53466625 ), ( 68 , 0.765741507 , -0.44165735 ), ( 68 , 0.756179415 , -0.385558593 ), ( 68 , 1.01019327 , -0.371433163 ), ( 68 , 1.114591964 , -0.287022229 ), ( 68 , 0.654170542 , -0.395896793 ), ( 68 , 0.616228969 , -0.347588782 ), ( 68 , 0.469703199 , -0.363822299 ), ( 68 , 0.574038502 , -0.309672997 ), ( 68 , 0.629011162 , -0.283690153 ), ( 68 , 0.571889907 , -0.263040568 ), ( 68 , 0.700072193 , -0.252184774 ), ( 68 , 0.777585482 , -0.209542503 ), ( 68 , 0.715265447 , -0.138106628 ), ( 68 , 2.165393105 , -1.510704185 ), ( 68 , 2.635927292 , -1.423580052 ), ( 68 , 2.788276329 , -1.311745322 ), ( 68 , 2.039856828 , -1.424121295 ), ( 68 , 1.719323716 , -1.355913305 ), ( 68 , 1.986912901 , -1.296345771 ), ( 68 , 2.214647269 , -1.315249218 ), ( 68 , 2.356612368 , -1.298521296 ), ( 68 , 2.252975217 , -1.233539489 ), ( 68 , 3.135404987 , -1.358310689 ), ( 68 , 3.035717995 , -1.271325808 ), ( 68 , 2.892491341 , -1.260864617 ), ( 68 , 3.042287475 , -1.216044831 ), ( 68 , 2.795583886 , -1.12840973 ), ( 68 , 2.839065892 , -1.069354791 ), ( 68 , 2.596562753 , -1.207572287 ), ( 68 , 2.694462266 , -1.141960638 ), ( 68 , 2.605972018 , -1.125541007 ), ( 68 , 2.703855619 , -1.032293916 ), ( 68 , 2.558829272 , -1.035898345 ), ( 68 , 2.654217329 , -1.015758536 ), ( 68 , 1.616351217 , -1.345744104 ), ( 68 , 1.636677579 , -1.251442643 ), ( 68 , 1.991074035 , -1.205262313 ), ( 68 , 2.084592474 , -1.063366018 ), ( 68 , 2.445773838 , -1.081981883 ), ( 68 , 2.284235089 , -1.076681003 ), ( 68 , 2.291145476 , -1.024932311 ), ( 68 , 2.38809132 , -1.002928274 ), ( 68 , 2.534799792 , -0.959641313 ), ( 68 , 2.522232253 , -0.946300861 ), ( 68 , 2.473922401 , -0.849870207 ), ( 68 , 2.293920527 , -0.974836213 ), ( 68 , 2.323082486 , -0.965892804 ), ( 68 , 2.103098394 , -0.954030522 ), ( 68 , 2.181489794 , -0.906550395 ), ( 68 , 2.161677427 , -0.908630485 ), ( 68 , 2.409549444 , -0.800206432 ), ( 68 , 2.303888099 , -0.865252095 ), ( 68 , 2.324760838 , -0.827187709 ), ( 68 , 2.272810609 , -0.84169339 ), ( 68 , 2.279711336 , -0.829409113 ), ( 68 , 3.057015372 , -1.092019303 ), ( 68 , 3.043695806 , -1.062961032 ), ( 68 , 3.021767218 , -1.042273138 ), ( 68 , 2.893328874 , -1.063092527 ), ( 68 , 2.840419783 , -1.046452599 ), ( 68 , 2.870206096 , -1.042523092 ), ( 68 , 2.927406049 , -1.020235859 ), ( 68 , 2.98426793 , -1.010206137 ), ( 68 , 3.094516643 , -1.006907297 ), ( 68 , 3.138946756 , -0.997770726 ), ( 68 , 3.004745848 , -0.957902443 ), ( 68 , 2.89745507 , -0.945929498 ), ( 68 , 2.978088005 , -0.931479481 ), ( 68 , 2.79877927 , -0.978583207 ), ( 68 , 2.844770032 , -0.96234441 ), ( 68 , 2.687564082 , -0.968998504 ), ( 68 , 2.701081506 , -0.885162052 ), ( 68 , 2.883409296 , -0.90888088 ), ( 68 , 2.895942144 , -0.896270658 ), ( 68 , 3.12889818 , -0.90932316 ), ( 68 , 3.108012575 , -0.895614671 ), ( 68 , 3.129953917 , -0.861497602 ), ( 68 , 3.139802124 , -0.813902725 ), ( 68 , 2.904930521 , -0.828024664 ), ( 68 , 2.853321997 , -0.6362917 ), ( 68 , 3.023129917 , -0.631973395 ), ( 68 , 2.95104063 , -0.605068628 ), ( 68 , 2.622252921 , -0.881001697 ), ( 68 , 2.657665728 , -0.843103885 ), ( 68 , 2.570643901 , -0.758916835 ), ( 68 , 2.68349862 , -0.776109298 ), ( 68 , 2.64074631 , -0.736045719 ), ( 68 , 2.680078567 , -0.682490628 ), ( 68 , 2.664649687 , -0.679122049 ), ( 68 , 2.471427767 , -0.737421606 ), ( 68 , 2.454835146 , -0.694202461 ), ( 68 , 2.524955091 , -0.691402188 ), ( 68 , 2.812859496 , -0.644563734 ), ( 68 , 2.799092896 , -0.623626345 ), ( 68 , 2.849343014 , -0.619400711 ), ( 68 , 2.908792245 , -0.501394762 ), ( 68 , 2.806922319 , -0.554316314 ), ( 68 , 2.777641756 , -0.502161552 ), ( 68 , 2.641739118 , -0.608817465 ), ( 68 , 2.669559594 , -0.599247328 ), ( 68 , 2.630303105 , -0.533675408 ), ( 68 , 2.718299709 , -0.424705265 ), ( 68 , 1.937977653 , -1.020860407 ), ( 68 , 1.916821319 , -1.013194728 ), ( 68 , 2.016700384 , -0.963054022 ), ( 68 , 2.010925635 , -0.954813679 ), ( 68 , 1.991576663 , -0.945746848 ), ( 68 , 2.03742897 , -0.913629501 ), ( 68 , 1.921445376 , -0.912951792 ), ( 68 , 2.021770113 , -0.91041772 ), ( 68 , 2.025470053 , -0.880618604 ), ( 68 , 1.801107833 , -0.944053418 ), ( 68 , 1.668157358 , -0.930867114 ), ( 68 , 1.679032557 , -0.921641738 ), ( 68 , 1.769041064 , -0.911077626 ), ( 68 , 1.923488576 , -0.89717561 ), ( 68 , 1.925834965 , -0.846954033 ), ( 68 , 1.834313286 , -0.857571088 ), ( 68 , 2.169994044 , -0.83636201 ), ( 68 , 2.258742712 , -0.807785026 ), ( 68 , 2.283282317 , -0.678584333 ), ( 68 , 2.24356244 , -0.644127072 ), ( 68 , 2.102485581 , -0.778414678 ), ( 68 , 2.06837456 , -0.727852507 ), ( 68 , 1.98465845 , -0.773112363 ), ( 68 , 2.038194552 , -0.724376099 ), ( 68 , 1.666068832 , -0.894266193 ), ( 68 , 1.658551944 , -0.850724783 ), ( 68 , 1.668475613 , -0.802157868 ), ( 68 , 1.733690553 , -0.758367153 ), ( 68 , 1.823918738 , -0.804522663 ), ( 68 , 1.788796877 , -0.793266588 ), ( 68 , 1.840360074 , -0.713783333 ), ( 68 , 1.604756325 , -0.780670568 ), ( 68 , 1.677274155 , -0.747736056 ), ( 68 , 1.674443121 , -0.646025777 ), ( 68 , 1.745114177 , -0.666004296 ), ( 68 , 1.722301714 , -0.593572008 ), ( 68 , 1.786911375 , -0.567969314 ), ( 68 , 1.757213958 , -0.5709441 ), ( 68 , 1.96484314 , -0.715399061 ), ( 68 , 1.96657367 , -0.65168841 ), ( 68 , 1.997292043 , -0.615699991 ), ( 68 , 1.95888953 , -0.60944008 ), ( 68 , 1.998226461 , -0.5608012 ), ( 68 , 2.064841399 , -0.609791713 ), ( 68 , 2.016338989 , -0.52684981 ), ( 68 , 2.102911229 , -0.474987378 ), ( 68 , 1.807875507 , -0.555042762 ), ( 68 , 1.885346365 , -0.477084258 ), ( 68 , 1.839402614 , -0.475129559 ), ( 68 , 1.98039018 , -0.498598477 ), ( 68 , 2.042937999 , -0.428952066 ), ( 68 , 1.991988742 , -0.442139775 ), ( 68 , 1.922224295 , -0.466002156 ), ( 68 , 2.45942233 , -0.5794564 ), ( 68 , 2.538889748 , -0.528892647 ), ( 68 , 2.490016215 , -0.502073806 ), ( 68 , 2.304895321 , -0.499842283 ), ( 68 , 2.204258481 , -0.557460515 ), ( 68 , 2.568728152 , -0.461014626 ), ( 68 , 2.610282161 , -0.438620375 ), ( 68 , 2.488115112 , -0.423659814 ), ( 68 , 2.546040701 , -0.355451962 ), ( 68 , 2.649098504 , -0.370981531 ), ( 68 , 2.648085812 , -0.304457942 ), ( 68 , 2.526362359 , -0.307598217 ), ( 68 , 2.581725297 , -0.197934129 ), ( 68 , 2.298421512 , -0.327386828 ), ( 68 , 2.240821831 , -0.28116541 ), ( 68 , 2.050685679 , -0.415358289 ), ( 68 , 2.078519342 , -0.357152894 ), ( 68 , 2.114211989 , -0.308322914 ), ( 68 , 1.981890014 , -0.351463702 ), ( 68 , 2.055579442 , -0.318473193 ), ( 68 , 2.126096366 , -0.303138426 ), ( 68 , 2.203354192 , -0.266930533 ), ( 68 , 2.203506024 , -0.222787292 ), ( 68 , 2.372555586 , -0.305374812 ), ( 68 , 2.258283704 , -0.219658754 ), ( 68 , 2.336531836 , -0.139125939 ), ( 68 , 2.372439109 , -0.090256876 ), ( 68 , 2.347357297 , -0.08481586 ), ( 68 , 4.520013377 , -1.528338618 ), ( 68 , 4.389064642 , -1.452812468 ), ( 68 , 3.964077102 , -1.401742647 ), ( 68 , 4.192188662 , -1.264720518 ), ( 68 , 3.889911442 , -1.307829822 ), ( 68 , 3.958133645 , -1.254979012 ), ( 68 , 4.064219583 , -1.240270002 ), ( 68 , 3.996689842 , -1.228956153 ), ( 68 , 3.968907717 , -1.199419171 ), ( 68 , 4.366780062 , -1.261862811 ), ( 68 , 4.470490751 , -1.191690716 ), ( 68 , 4.434350803 , -1.075833001 ), ( 68 , 4.389269308 , -1.076236376 ), ( 68 , 4.002185584 , -1.153527944 ), ( 68 , 4.110378435 , -1.120157684 ), ( 68 , 4.226094603 , -1.09924256 ), ( 68 , 4.374884151 , -1.078352363 ), ( 68 , 4.140542548 , -1.053606003 ), ( 68 , 4.224066338 , -1.029237211 ), ( 68 , 4.228718204 , -0.978396233 ), ( 68 , 3.610942696 , -1.243219905 ), ( 68 , 3.577955712 , -1.2354811 ), ( 68 , 3.238650592 , -1.282883138 ), ( 68 , 3.168567809 , -1.283808359 ), ( 68 , 3.837661865 , -1.190374486 ), ( 68 , 3.767878885 , -1.163177369 ), ( 68 , 3.392194098 , -1.186139921 ), ( 68 , 3.653631183 , -1.090643189 ), ( 68 , 3.96518546 , -1.075713061 ), ( 68 , 3.934143632 , -0.981925969 ), ( 68 , 4.017369084 , -0.979700208 ), ( 68 , 3.980043958 , -0.90943679 ), ( 68 , 3.914034677 , -0.897926293 ), ( 68 , 3.91134701 , -0.780236535 ), ( 68 , 4.579226491 , -1.077982138 ), ( 68 , 4.639589031 , -1.007474089 ), ( 68 , 4.681256236 , -0.980088845 ), ( 68 , 4.335392422 , -0.928525098 ), ( 68 , 4.398632586 , -0.801892988 ), ( 68 , 4.336589687 , -0.839700018 ), ( 68 , 4.646098864 , -0.832785245 ), ( 68 , 4.563954637 , -0.868038674 ), ( 68 , 4.537224575 , -0.847371118 ), ( 68 , 4.558440803 , -0.785537339 ), ( 68 , 4.535667179 , -0.796568088 ), ( 68 , 4.54996241 , -0.796119628 ), ( 68 , 4.547526473 , -0.717703873 ), ( 68 , 4.431336501 , -0.756008699 ), ( 68 , 4.441151739 , -0.682697756 ), ( 68 , 4.13690379 , -0.882958469 ), ( 68 , 4.170106175 , -0.777239018 ), ( 68 , 4.154838581 , -0.790360626 ), ( 68 , 4.238135691 , -0.791224973 ), ( 68 , 4.181800802 , -0.769359689 ), ( 68 , 4.168120549 , -0.743604208 ), ( 68 , 4.18863282 , -0.709531755 ), ( 68 , 4.036887381 , -0.824100218 ), ( 68 , 4.067629047 , -0.78657684 ), ( 68 , 3.998864434 , -0.776739335 ), ( 68 , 4.132388053 , -0.619775424 ), ( 68 , 4.034759941 , -0.626872012 ), ( 68 , 4.364263459 , -0.58893755 ), ( 68 , 4.400022332 , -0.544608831 ), ( 68 , 4.470079192 , -0.498894392 ), ( 68 , 4.370420151 , -0.485375179 ), ( 68 , 4.188428836 , -0.58268612 ), ( 68 , 4.296412432 , -0.518435134 ), ( 68 , 4.18827022 , -0.543996368 ), ( 68 , 4.40582384 , -0.430065437 ), ( 68 , 4.299637805 , -0.409460418 ), ( 68 , 3.273910983 , -1.064474567 ), ( 68 , 3.360613175 , -1.054188792 ), ( 68 , 3.377196304 , -1.053051822 ), ( 68 , 3.165053835 , -1.099133555 ), ( 68 , 3.281852298 , -0.979644368 ), ( 68 , 3.325318077 , -0.955755773 ), ( 68 , 3.240978462 , -0.912687533 ), ( 68 , 3.299563866 , -0.91486316 ), ( 68 , 3.482297868 , -0.768913925 ), ( 68 , 3.649667238 , -0.90819317 ), ( 68 , 3.69874672 , -0.870340752 ), ( 68 , 3.713353378 , -0.851422443 ), ( 68 , 3.65122635 , -0.809589083 ), ( 68 , 3.72145296 , -0.726805241 ), ( 68 , 3.549502916 , -0.757872045 ), ( 68 , 3.615880441 , -0.64799643 ), ( 68 , 3.220936924 , -0.912917037 ), ( 68 , 3.236607766 , -0.871773469 ), ( 68 , 3.395446198 , -0.821438939 ), ( 68 , 3.233699858 , -0.742847475 ), ( 68 , 3.287673459 , -0.722813864 ), ( 68 , 3.709765428 , -0.534439773 ), ( 68 , 3.458942004 , -0.556332228 ), ( 68 , 3.563973816 , -0.462475261 ), ( 68 , 3.53303232 , -0.406334257 ), ( 68 , 4.027135466 , -0.465806169 ), ( 68 , 3.832801014 , -0.615696764 ), ( 68 , 3.902312412 , -0.494769721 ), ( 68 , 3.969988263 , -0.418637352 ), ( 68 , 4.14767996 , -0.45884396 ), ( 68 , 4.248431228 , -0.373498803 ), ( 68 , 4.094615508 , -0.347562974 ), ( 68 , 3.980218829 , -0.333474085 ), ( 68 , 4.056045038 , -0.304400906 ), ( 68 , 4.176080058 , -0.279857405 ), ( 68 , 4.115258163 , -0.227886865 ), ( 68 , 3.609420628 , -0.336079169 ), ( 68 , 3.64056215 , -0.299850605 ), ( 68 , 3.786286329 , -0.233167491 ), ( 68 , 4.067918179 , -0.1821966 ), ( 68 , 3.85469535 , -0.169296141 ), ( 68 , 4.016914685 , -0.089357475 ), ( 68 , 5.734994179 , -1.484114115 ), ( 68 , 5.934152629 , -1.453019593 ), ( 68 , 5.976425628 , -1.34479516 ), ( 68 , 5.806325363 , -1.324384911 ), ( 68 , 5.240071782 , -1.291766068 ), ( 68 , 5.53613916 , -1.330160644 ), ( 68 , 5.316491342 , -1.273734249 ), ( 68 , 5.395683695 , -1.240433944 ), ( 68 , 5.489915622 , -1.206832696 ), ( 68 , 6.230529319 , -1.161818903 ), ( 68 , 5.967247216 , -1.144243087 ), ( 68 , 5.794033669 , -1.226715607 ), ( 68 , 4.974084991 , -1.255464111 ), ( 68 , 5.096811068 , -1.215295828 ), ( 68 , 5.310872381 , -1.17732686 ), ( 68 , 5.14211896 , -1.15041971 ), ( 68 , 5.033329333 , -1.098214993 ), ( 68 , 5.222728426 , -1.01099785 ), ( 68 , 5.57966749 , -1.070859785 ), ( 68 , 5.532060814 , -0.94626653 ), ( 68 , 5.313352131 , -0.906126268 ), ( 68 , 5.51627348 , -0.880264859 ), ( 68 , 5.575780703 , -0.850304727 ), ( 68 , 5.438675155 , -0.886725864 ), ( 68 , 5.507451451 , -0.750542676 ), ( 68 , 6.255529548 , -1.150984372 ), ( 68 , 6.238451666 , -1.09676013 ), ( 68 , 6.067001906 , -1.057051085 ), ( 68 , 6.012639649 , -1.031311881 ), ( 68 , 6.174248127 , -0.99179102 ), ( 68 , 6.123342456 , -0.969591159 ), ( 68 , 6.149155505 , -0.951227478 ), ( 68 , 5.9303664 , -0.919649359 ), ( 68 , 5.960922005 , -0.854847549 ), ( 68 , 6.000691248 , -0.846333959 ), ( 68 , 5.858799987 , -0.801945095 ), ( 68 , 6.279532024 , -0.737169793 ), ( 68 , 6.160405049 , -0.728715808 ), ( 68 , 5.968081921 , -0.667110915 ), ( 68 , 6.032598854 , -0.635668131 ), ( 68 , 5.716095678 , -0.832961778 ), ( 68 , 5.685602452 , -0.759157681 ), ( 68 , 5.86718229 , -0.723274352 ), ( 68 , 5.75340477 , -0.769043612 ), ( 68 , 5.814121661 , -0.701685032 ), ( 68 , 5.540262684 , -0.771607471 ), ( 68 , 5.929432352 , -0.671558449 ), ( 68 , 5.898147398 , -0.61593484 ), ( 68 , 5.810349384 , -0.601531879 ), ( 68 , 5.770707741 , -0.560836808 ), ( 68 , 5.077232304 , -0.941538356 ), ( 68 , 4.862578287 , -0.944018472 ), ( 68 , 4.892806874 , -0.880919383 ), ( 68 , 5.236606173 , -0.876445755 ), ( 68 , 5.34978541 , -0.814373335 ), ( 68 , 5.247348476 , -0.788819423 ), ( 68 , 5.285133949 , -0.762051149 ), ( 68 , 5.32431313 , -0.603631758 ), ( 68 , 4.880495802 , -0.850341429 ), ( 68 , 4.847368961 , -0.838019046 ), ( 68 , 4.89011219 , -0.820778893 ), ( 68 , 4.779779098 , -0.85261798 ), ( 68 , 5.02726038 , -0.655949486 ), ( 68 , 4.772565634 , -0.808313597 ), ( 68 , 4.805064135 , -0.68106084 ), ( 68 , 4.910100591 , -0.625825468 ), ( 68 , 4.927446119 , -0.606501066 ), ( 68 , 5.133892449 , -0.570563202 ), ( 68 , 5.172308356 , -0.539361055 ), ( 68 , 5.063358115 , -0.55532086 ), ( 68 , 5.012503125 , -0.437716812 ), ( 68 , 5.159098068 , -0.433879924 ), ( 68 , 5.12500997 , -0.416415683 ), ( 68 , 5.535698797 , -0.650008304 ), ( 68 , 5.592989096 , -0.509046723 ), ( 68 , 5.357012911 , -0.538808761 ), ( 68 , 5.680042518 , -0.438103453 ), ( 68 , 5.604022722 , -0.426256382 ), ( 68 , 5.745481232 , -0.312362572 ), ( 68 , 5.526977339 , -0.352214296 ), ( 68 , 5.695741376 , -0.223111607 ), ( 68 , 5.366352601 , -0.324403065 ), ( 68 , 5.362579361 , -0.311999001 ), ( 68 , 5.234100941 , -0.387661831 ), ( 68 , 5.273021596 , -0.262373713 ), ( 68 , 5.502756612 , -0.236142329 ), ( 68 , 5.536860625 , -0.097428243 ), ( 68 , 5.471966029 , -0.079274494 ), ( 69 , 0.758223158 , 0.162938039 ), ( 69 , 0.694025789 , 0.185642798 ), ( 69 , 0.73299667 , 0.270662838 ), ( 69 , 0.988023019 , 0.235775726 ), ( 69 , 0.956809406 , 0.242440298 ), ( 69 , 1.067525489 , 0.30574151 ), ( 69 , 1.141188077 , 0.321443579 ), ( 69 , 1.141142533 , 0.367210768 ), ( 69 , 0.827189517 , 0.338256738 ), ( 69 , 0.892628796 , 0.384673849 ), ( 69 , 0.985300343 , 0.403988379 ), ( 69 , 1.051331382 , 0.404938648 ), ( 69 , 1.013103287 , 0.439158634 ), ( 69 , 0.965633232 , 0.500955958 ), ( 69 , 0.670255605 , 0.329520004 ), ( 69 , 0.487754295 , 0.319206061 ), ( 69 , 0.413725686 , 0.352075682 ), ( 69 , 0.430321284 , 0.37346882 ), ( 69 , 0.601946317 , 0.506271455 ), ( 69 , 1.198860499 , 0.396052186 ), ( 69 , 1.238747426 , 0.400453654 ), ( 69 , 1.358995411 , 0.537653956 ), ( 69 , 1.223387523 , 0.523109566 ), ( 69 , 1.274854954 , 0.543904553 ), ( 69 , 1.10380656 , 0.567801 ), ( 69 , 1.207036084 , 0.644941141 ), ( 69 , 1.188083041 , 0.646525684 ), ( 69 , 1.372949391 , 0.548061861 ), ( 69 , 1.48184223 , 0.663031102 ), ( 69 , 1.478001905 , 0.730227622 ), ( 69 , 1.391562482 , 0.717248176 ), ( 69 , 1.280982686 , 0.642379312 ), ( 69 , 1.241779869 , 0.667675709 ), ( 69 , 1.307738542 , 0.730827056 ), ( 69 , 1.380779055 , 0.810112918 ), ( 69 , 1.015185323 , 0.565633911 ), ( 69 , 0.970669812 , 0.574885815 ), ( 69 , 1.00453567 , 0.607715831 ), ( 69 , 1.047956768 , 0.698371742 ), ( 69 , 1.03528935 , 0.730953355 ), ( 69 , 0.955331786 , 0.742417172 ), ( 69 , 0.984010649 , 0.733155369 ), ( 69 , 0.953165812 , 0.858799117 ), ( 69 , 1.028053708 , 0.911543169 ), ( 69 , 1.192762633 , 0.751041447 ), ( 69 , 1.166818254 , 0.817705161 ), ( 69 , 1.243185709 , 0.913499461 ), ( 69 , 1.500878308 , 0.957569733 ), ( 69 , 1.401886482 , 0.946888778 ), ( 69 , 1.122269265 , 0.887775544 ), ( 69 , 1.152927762 , 0.906472074 ), ( 69 , 1.255879299 , 0.930269587 ), ( 69 , 1.295139891 , 0.974311809 ), ( 69 , 1.439282491 , 1.051883915 ), ( 69 , 1.485636938 , 1.081212833 ), ( 69 , 1.510625209 , 1.130432325 ), ( 69 , 0.390055553 , 0.441138832 ), ( 69 , 0.577590486 , 0.528888552 ), ( 69 , 0.505313648 , 0.529784426 ), ( 69 , 0.233945232 , 0.514680575 ), ( 69 , 0.414372058 , 0.577999456 ), ( 69 , 0.404894575 , 0.625566807 ), ( 69 , 0.672557856 , 0.676052776 ), ( 69 , 0.549905237 , 0.724883483 ), ( 69 , 0.508485231 , 0.731154159 ), ( 69 , 0.436634801 , 0.710062578 ), ( 69 , 0.588059557 , 0.814847961 ), ( 69 , 0.230641938 , 0.702424065 ), ( 69 , 0.063548922 , 0.716157839 ), ( 69 , 0.026488734 , 0.705436241 ), ( 69 , 0.118716517 , 0.872414859 ), ( 69 , 0.426505686 , 0.844963388 ), ( 69 , 0.452055494 , 0.89912154 ), ( 69 , 0.452243048 , 0.923030503 ), ( 69 , 0.339285613 , 0.988405743 ), ( 69 , 0.186021185 , 0.913455099 ), ( 69 , 0.0529528 , 0.93591253 ), ( 69 , 0.08976069 , 0.987102577 ), ( 69 , 0.048559418 , 1.005100551 ), ( 69 , 0.291907123 , 1.044728662 ), ( 69 , 0.196526697 , 1.09132992 ), ( 69 , 0.780268216 , 0.756848553 ), ( 69 , 0.797937771 , 0.82222691 ), ( 69 , 0.738184129 , 0.824106178 ), ( 69 , 0.90604595 , 0.865678775 ), ( 69 , 1.001205852 , 0.919009936 ), ( 69 , 0.985426692 , 0.961041398 ), ( 69 , 0.836519299 , 0.910421253 ), ( 69 , 0.965171422 , 1.027029833 ), ( 69 , 0.660820393 , 1.012722765 ), ( 69 , 0.613986248 , 0.975797326 ), ( 69 , 0.78447878 , 1.069711285 ), ( 69 , 0.752198672 , 1.106696126 ), ( 69 , 0.77656297 , 1.124327657 ), ( 69 , 1.214100002 , 1.062627345 ), ( 69 , 1.266098522 , 1.110466999 ), ( 69 , 1.298209497 , 1.139316787 ), ( 69 , 1.270696696 , 1.189769477 ), ( 69 , 1.453198202 , 1.187027146 ), ( 69 , 1.478039067 , 1.228087919 ), ( 69 , 1.12507129 , 1.170912587 ), ( 69 , 1.177515574 , 1.210875791 ), ( 69 , 1.49666961 , 1.291297215 ), ( 69 , 0.438588138 , 1.030663906 ), ( 69 , 0.416279337 , 1.100987388 ), ( 69 , 0.650388092 , 1.176385357 ), ( 69 , 0.403792841 , 1.222067905 ), ( 69 , 0.254001219 , 1.230393167 ), ( 69 , 0.164769612 , 1.272255052 ), ( 69 , 1.038663692 , 1.26928313 ), ( 69 , 1.088070663 , 1.284050525 ), ( 69 , 1.423234676 , 1.368592977 ), ( 69 , 0.514355048 , 1.314859448 ), ( 69 , 0.500453597 , 1.364781405 ), ( 69 , 0.854127357 , 1.398531406 ), ( 69 , 0.569437421 , 1.42212758 ), ( 69 , 0.687015262 , 1.46319048 ), ( 69 , 2.336273333 , 0.097142549 ), ( 69 , 2.288642755 , 0.092256766 ), ( 69 , 2.312373685 , 0.114268031 ), ( 69 , 2.311744688 , 0.122430082 ), ( 69 , 2.459480547 , 0.09109713 ), ( 69 , 2.536152169 , 0.156994461 ), ( 69 , 2.245163433 , 0.096062197 ), ( 69 , 2.306707732 , 0.218985338 ), ( 69 , 2.408325002 , 0.314926596 ), ( 69 , 2.109558941 , 0.21259709 ), ( 69 , 2.192703999 , 0.282086534 ), ( 69 , 2.177929053 , 0.281377869 ), ( 69 , 2.315497844 , 0.314219811 ), ( 69 , 2.292883385 , 0.328427337 ), ( 69 , 2.27206539 , 0.344165528 ), ( 69 , 1.996254067 , 0.330167476 ), ( 69 , 2.356039781 , 0.461371629 ), ( 69 , 2.33408916 , 0.457211562 ), ( 69 , 2.44021273 , 0.458177768 ), ( 69 , 2.432983856 , 0.478606851 ), ( 69 , 2.268659285 , 0.571194032 ), ( 69 , 2.221857323 , 0.570588081 ), ( 69 , 2.573399357 , 0.542391039 ), ( 69 , 2.729296251 , 0.631885861 ), ( 69 , 2.751510523 , 0.633083939 ), ( 69 , 2.937928719 , 0.583695729 ), ( 69 , 2.961854756 , 0.619406352 ), ( 69 , 3.070122304 , 0.728193033 ), ( 69 , 3.01271634 , 0.76059674 ), ( 69 , 2.882848896 , 0.745802413 ), ( 69 , 3.001265018 , 0.788628752 ), ( 69 , 2.572072506 , 0.641360742 ), ( 69 , 2.575369514 , 0.691704528 ), ( 69 , 2.63495828 , 0.663566753 ), ( 69 , 2.448942364 , 0.692308645 ), ( 69 , 2.510546874 , 0.697492354 ), ( 69 , 2.548677538 , 0.733915713 ), ( 69 , 2.600971513 , 0.912261731 ), ( 69 , 2.815836182 , 0.795282634 ), ( 69 , 2.845623767 , 0.877289573 ), ( 69 , 2.889794129 , 1.023919078 ), ( 69 , 2.955931252 , 1.051940886 ), ( 69 , 1.895613228 , 0.431289179 ), ( 69 , 1.983246377 , 0.500675308 ), ( 69 , 2.06538361 , 0.489598073 ), ( 69 , 2.017260269 , 0.526527483 ), ( 69 , 2.055137862 , 0.551755379 ), ( 69 , 1.88277208 , 0.460868045 ), ( 69 , 1.857846717 , 0.547916047 ), ( 69 , 1.889621989 , 0.557901814 ), ( 69 , 2.028673054 , 0.690305845 ), ( 69 , 2.159042431 , 0.751098126 ), ( 69 , 1.806966985 , 0.567429228 ), ( 69 , 1.850310039 , 0.63378893 ), ( 69 , 1.70835517 , 0.648877689 ), ( 69 , 1.720559504 , 0.664550738 ), ( 69 , 1.885031475 , 0.765201209 ), ( 69 , 1.746872959 , 0.715055781 ), ( 69 , 1.590443234 , 0.772471953 ), ( 69 , 1.766171418 , 0.776765499 ), ( 69 , 1.619941113 , 0.836127764 ), ( 69 , 1.950298247 , 0.755000519 ), ( 69 , 1.955395103 , 0.811950794 ), ( 69 , 1.957927193 , 0.836365866 ), ( 69 , 1.857300429 , 0.920803467 ), ( 69 , 1.831461605 , 0.917559902 ), ( 69 , 1.837948152 , 0.957425809 ), ( 69 , 1.738050405 , 0.99818183 ), ( 69 , 1.729621437 , 1.041339776 ), ( 69 , 1.763160786 , 1.098908796 ), ( 69 , 2.341196183 , 0.798734246 ), ( 69 , 2.440207426 , 0.819321369 ), ( 69 , 2.369488418 , 0.871759895 ), ( 69 , 2.37935518 , 0.88703409 ), ( 69 , 2.143101031 , 0.929293105 ), ( 69 , 2.135759957 , 0.964392902 ), ( 69 , 2.242386371 , 1.022885741 ), ( 69 , 2.344919394 , 1.016110523 ), ( 69 , 2.78523911 , 1.049346538 ), ( 69 , 2.688026865 , 1.04982212 ), ( 69 , 3.114167311 , 1.28727781 ), ( 69 , 1.972379422 , 1.077862298 ), ( 69 , 1.87461037 , 1.061016382 ), ( 69 , 1.841098244 , 1.111369628 ), ( 69 , 1.574309799 , 1.169610075 ), ( 69 , 1.84024612 , 1.215557695 ), ( 69 , 1.661123507 , 1.259182358 ), ( 69 , 2.28138101 , 1.277042859 ), ( 69 , 2.550079614 , 1.301800046 ), ( 69 , 2.525052505 , 1.31258134 ), ( 69 , 2.689071938 , 1.377885873 ), ( 69 , 1.927892677 , 1.310553228 ), ( 69 , 2.084197104 , 1.353961301 ), ( 69 , 1.715073895 , 1.378450693 ), ( 69 , 3.931445061 , 0.050560392 ), ( 69 , 3.899340375 , 0.10894058 ), ( 69 , 3.978452031 , 0.178315522 ), ( 69 , 3.880889616 , 0.175293333 ), ( 69 , 3.767184636 , 0.147391456 ), ( 69 , 4.143264581 , 0.219192858 ), ( 69 , 3.725509449 , 0.209396776 ), ( 69 , 3.693523106 , 0.296187842 ), ( 69 , 3.88107602 , 0.340519231 ), ( 69 , 3.632659548 , 0.291973758 ), ( 69 , 3.622005467 , 0.325133325 ), ( 69 , 3.730751909 , 0.413397426 ), ( 69 , 3.725891816 , 0.507985172 ), ( 69 , 3.979641942 , 0.38943941 ), ( 69 , 3.995454658 , 0.447546388 ), ( 69 , 3.880070383 , 0.438964368 ), ( 69 , 4.00502879 , 0.586331621 ), ( 69 , 3.903395428 , 0.52471196 ), ( 69 , 3.937943774 , 0.552989867 ), ( 69 , 3.963232234 , 0.588291107 ), ( 69 , 4.269050334 , 0.451981751 ), ( 69 , 4.414962735 , 0.500327574 ), ( 69 , 4.334892469 , 0.532308819 ), ( 69 , 4.191891627 , 0.550962941 ), ( 69 , 4.277378586 , 0.645342896 ), ( 69 , 4.558165536 , 0.570207515 ), ( 69 , 4.465583565 , 0.600105778 ), ( 69 , 4.698061194 , 0.785176924 ), ( 69 , 4.699669998 , 0.800350406 ), ( 69 , 4.62297505 , 0.767970175 ), ( 69 , 4.461985541 , 0.821837269 ), ( 69 , 4.094448089 , 0.761038387 ), ( 69 , 4.01811333 , 0.796999133 ), ( 69 , 4.006616459 , 0.796216375 ), ( 69 , 4.05522354 , 0.832756556 ), ( 69 , 4.150250597 , 0.92340062 ), ( 69 , 4.425777322 , 0.8122546 ), ( 69 , 4.482754212 , 0.84473313 ), ( 69 , 4.433599293 , 0.873341758 ), ( 69 , 4.455980306 , 0.918123265 ), ( 69 , 4.679327167 , 1.054120729 ), ( 69 , 4.449865809 , 1.020365933 ), ( 69 , 4.486038628 , 1.067444137 ), ( 69 , 3.648417231 , 0.452366079 ), ( 69 , 3.463358351 , 0.567761949 ), ( 69 , 3.405258873 , 0.554650418 ), ( 69 , 3.549019902 , 0.58743509 ), ( 69 , 3.546722408 , 0.609243446 ), ( 69 , 3.566840171 , 0.633467838 ), ( 69 , 3.469459774 , 0.618646391 ), ( 69 , 3.768581554 , 0.712872322 ), ( 69 , 3.812418462 , 0.750632997 ), ( 69 , 3.666898056 , 0.68120065 ), ( 69 , 3.636154292 , 0.736264576 ), ( 69 , 3.557130885 , 0.771385515 ), ( 69 , 3.59289261 , 0.79447952 ), ( 69 , 3.699825185 , 0.841434885 ), ( 69 , 3.660498634 , 0.926882469 ), ( 69 , 3.326109866 , 0.587963536 ), ( 69 , 3.188662133 , 0.696237685 ), ( 69 , 3.504145064 , 0.82034147 ), ( 69 , 3.567954436 , 0.885141475 ), ( 69 , 3.350161357 , 0.875403046 ), ( 69 , 3.925146158 , 0.940037693 ), ( 69 , 3.867604859 , 0.988142478 ), ( 69 , 3.742854718 , 0.967354278 ), ( 69 , 4.052018514 , 1.07733432 ), ( 69 , 3.942020885 , 1.047643621 ), ( 69 , 4.01369674 , 1.090386666 ), ( 69 , 3.961182252 , 1.101601308 ), ( 69 , 4.22977289 , 1.106670582 ), ( 69 , 4.434726313 , 1.088561329 ), ( 69 , 4.63118204 , 1.172025714 ), ( 69 , 4.160906337 , 1.199388412 ), ( 69 , 4.209805516 , 1.226300374 ), ( 69 , 4.371841339 , 1.289581398 ), ( 69 , 4.419719481 , 1.315851701 ), ( 69 , 3.565057994 , 1.169999319 ), ( 69 , 3.752072866 , 1.183028386 ), ( 69 , 4.00280503 , 1.292335526 ), ( 69 , 4.434892573 , 1.41126692 ), ( 69 , 3.625997836 , 1.409665449 ), ( 69 , 4.097023605 , 1.488524487 ), ( 69 , 5.509642126 , 0.058470537 ), ( 69 , 5.590991506 , 0.180327736 ), ( 69 , 5.386654449 , 0.120045612 ), ( 69 , 5.338315894 , 0.180872247 ), ( 69 , 5.532506382 , 0.256103676 ), ( 69 , 5.417625164 , 0.241009038 ), ( 69 , 5.73930033 , 0.363881637 ), ( 69 , 5.824205618 , 0.393106658 ), ( 69 , 5.616068014 , 0.281407854 ), ( 69 , 5.323977095 , 0.200176852 ), ( 69 , 5.363162251 , 0.221326879 ), ( 69 , 5.3204323 , 0.25081827 ), ( 69 , 5.324381158 , 0.271278544 ), ( 69 , 5.371695064 , 0.275894778 ), ( 69 , 5.24615632 , 0.242760496 ), ( 69 , 5.304769491 , 0.26733412 ), ( 69 , 5.413099859 , 0.273031776 ), ( 69 , 5.378796094 , 0.29264265 ), ( 69 , 5.367937982 , 0.338960534 ), ( 69 , 5.3596796 , 0.351037873 ), ( 69 , 5.373582396 , 0.382140625 ), ( 69 , 5.253399794 , 0.298854586 ), ( 69 , 5.252151376 , 0.375185518 ), ( 69 , 5.158854717 , 0.322286982 ), ( 69 , 5.137338737 , 0.331201213 ), ( 69 , 5.355315366 , 0.415225724 ), ( 69 , 5.261027096 , 0.397884864 ), ( 69 , 5.222160057 , 0.41498781 ), ( 69 , 5.315768546 , 0.447646558 ), ( 69 , 5.318212417 , 0.47108412 ), ( 69 , 5.466775655 , 0.43484063 ), ( 69 , 5.427078969 , 0.415232901 ), ( 69 , 5.417924744 , 0.422063384 ), ( 69 , 5.480494066 , 0.481284948 ), ( 69 , 5.606853122 , 0.478533775 ), ( 69 , 5.586549028 , 0.584429925 ), ( 69 , 5.456783548 , 0.539532571 ), ( 69 , 5.469674207 , 0.551983435 ), ( 69 , 5.458230409 , 0.606573188 ), ( 69 , 5.450669566 , 0.620697734 ), ( 69 , 5.485650179 , 0.616306794 ), ( 69 , 5.837198929 , 0.470130098 ), ( 69 , 6.041499789 , 0.546413935 ), ( 69 , 5.832403951 , 0.509172007 ), ( 69 , 5.93876057 , 0.632915467 ), ( 69 , 5.932030283 , 0.651942071 ), ( 69 , 6.091246035 , 0.617834212 ), ( 69 , 6.129261744 , 0.63463942 ), ( 69 , 6.245305642 , 0.701586711 ), ( 69 , 6.169614304 , 0.766274707 ), ( 69 , 6.189117206 , 0.741965621 ), ( 69 , 6.216685498 , 0.763517415 ), ( 69 , 6.264129514 , 0.809103275 ), ( 69 , 5.910134365 , 0.711655827 ), ( 69 , 6.010170616 , 0.750716328 ), ( 69 , 6.149884388 , 0.810964456 ), ( 69 , 6.264832025 , 0.841595508 ), ( 69 , 6.274945401 , 0.880507718 ), ( 69 , 6.263753859 , 0.920411884 ), ( 69 , 5.630567494 , 0.783216936 ), ( 69 , 5.740324979 , 0.929270267 ), ( 69 , 5.974663124 , 0.889693942 ), ( 69 , 6.017956498 , 0.912858318 ), ( 69 , 5.93227937 , 0.89284054 ), ( 69 , 6.071105892 , 0.886128779 ), ( 69 , 6.124539228 , 0.943018477 ), ( 69 , 5.966033389 , 0.931686417 ), ( 69 , 5.962452328 , 0.957698395 ), ( 69 , 6.271511183 , 1.065107742 ), ( 69 , 6.10869946 , 1.06726635 ), ( 69 , 6.049650226 , 1.07233007 ), ( 69 , 6.106017207 , 1.095015412 ), ( 69 , 6.19541593 , 1.112218154 ), ( 69 , 5.209277649 , 0.464141048 ), ( 69 , 5.248155714 , 0.497676777 ), ( 69 , 5.283577371 , 0.537381255 ), ( 69 , 5.223504774 , 0.537168278 ), ( 69 , 5.254390932 , 0.545299607 ), ( 69 , 5.208884391 , 0.60360155 ), ( 69 , 4.988577946 , 0.450750178 ), ( 69 , 5.039555267 , 0.488013755 ), ( 69 , 5.01513965 , 0.533481986 ), ( 69 , 5.013781909 , 0.603906013 ), ( 69 , 5.126624731 , 0.589843275 ), ( 69 , 5.028320786 , 0.63150005 ), ( 69 , 5.07315404 , 0.655917239 ), ( 69 , 5.309798533 , 0.549868204 ), ( 69 , 5.301016144 , 0.573670043 ), ( 69 , 5.334326845 , 0.610700698 ), ( 69 , 5.404747934 , 0.674286205 ), ( 69 , 5.481694252 , 0.74645278 ), ( 69 , 5.408543999 , 0.737349366 ), ( 69 , 5.386958908 , 0.717304568 ), ( 69 , 5.390015325 , 0.731123521 ), ( 69 , 5.20824268 , 0.721793061 ), ( 69 , 5.155983776 , 0.698523339 ), ( 69 , 5.325287957 , 0.765405611 ), ( 69 , 5.295562308 , 0.815275992 ), ( 69 , 5.377473278 , 0.841536919 ), ( 69 , 5.360391473 , 0.853794161 ), ( 69 , 5.282072775 , 0.841792634 ), ( 69 , 5.218106733 , 0.821875485 ), ( 69 , 4.956261468 , 0.625011275 ), ( 69 , 5.016808479 , 0.659629807 ), ( 69 , 5.056955418 , 0.704423986 ), ( 69 , 4.954237733 , 0.701223831 ), ( 69 , 4.944987156 , 0.715503317 ), ( 69 , 4.945724075 , 0.748791489 ), ( 69 , 4.970243827 , 0.763077544 ), ( 69 , 4.815947991 , 0.669250487 ), ( 69 , 4.817109216 , 0.766333852 ), ( 69 , 4.854770627 , 0.804467704 ), ( 69 , 4.903969896 , 0.831054951 ), ( 69 , 4.762940052 , 0.842804327 ), ( 69 , 4.806161038 , 0.895370247 ), ( 69 , 4.809243384 , 0.899574368 ), ( 69 , 5.087382209 , 0.784179948 ), ( 69 , 5.105011236 , 0.819370773 ), ( 69 , 5.110639536 , 0.828700402 ), ( 69 , 5.026853597 , 0.870190867 ), ( 69 , 5.011520416 , 0.879016609 ), ( 69 , 5.177285031 , 0.872842847 ), ( 69 , 5.106002439 , 0.988629676 ), ( 69 , 5.130948754 , 0.994532102 ), ( 69 , 4.862978196 , 0.903767631 ), ( 69 , 4.723348156 , 1.023241798 ), ( 69 , 4.967927461 , 1.058847825 ), ( 69 , 4.939440922 , 1.041386936 ), ( 69 , 4.931865312 , 1.061817452 ), ( 69 , 4.741509187 , 1.120875733 ), ( 69 , 5.49311005 , 0.769001947 ), ( 69 , 5.497154502 , 0.785336277 ), ( 69 , 5.623485678 , 0.869087735 ), ( 69 , 5.634378558 , 0.910990765 ), ( 69 , 5.682805144 , 1.00768373 ), ( 69 , 5.398349749 , 0.924552393 ), ( 69 , 5.42574897 , 0.965023111 ), ( 69 , 5.294701004 , 0.962221122 ), ( 69 , 5.309370189 , 0.978087754 ), ( 69 , 5.495538385 , 0.976336697 ), ( 69 , 5.586904013 , 1.059189917 ), ( 69 , 5.803969454 , 0.978848681 ), ( 69 , 5.744125576 , 1.043621501 ), ( 69 , 5.777977004 , 1.04487942 ), ( 69 , 5.923879709 , 1.112985605 ), ( 69 , 6.041212828 , 1.103762161 ), ( 69 , 5.984262289 , 1.099065958 ), ( 69 , 5.620318346 , 1.083786983 ), ( 69 , 5.625827475 , 1.170263666 ), ( 69 , 5.790955904 , 1.263149819 ), ( 69 , 5.18987816 , 1.103115335 ), ( 69 , 5.283756734 , 1.191574601 ), ( 69 , 5.035560394 , 1.171388286 ), ( 69 , 4.853377837 , 1.182928216 ), ( 69 , 5.531304202 , 1.191258778 ), ( 69 , 5.601411872 , 1.213603601 ), ( 69 , 5.557937667 , 1.22221069 ), ( 69 , 5.390826284 , 1.216133024 ), ( 69 , 5.873068391 , 1.408510305 ), ( 69 , 5.246649069 , 1.39069508 ), ( 69 , 4.947579265 , 1.437630746 ), ( 69 , 5.233080167 , 1.477741457 ), ( 69 , 4.926798049 , 1.464416397 ), ( 69 , 0.07988314 , -0.637217188 ), ( 69 , 6.246790109 , -0.605485945 ), ( 69 , 0.07286853 , -0.570523714 ), ( 69 , 0.057008494 , -0.392176339 ), ( 69 , 6.200791354 , -0.421681314 ), ( 69 , 0.212451755 , -0.497346022 ), ( 69 , 0.090799785 , -0.412424924 ), ( 69 , 0.120549867 , -0.351413164 ), ( 69 , 0.173333707 , -0.194633057 ), ( 69 , 6.060017176 , -0.450834216 ), ( 69 , 6.251182262 , -0.323966237 ), ( 69 , 5.999197301 , -0.390436412 ), ( 69 , 5.966507299 , -0.306318579 ), ( 69 , 0.0640445 , -0.258405119 ), ( 69 , 0.064583448 , -0.247453366 ), ( 69 , 6.241506627 , -0.254450088 ), ( 69 , 0.135251775 , -0.176013512 ), ( 69 , 6.161934498 , -0.201492138 ), ( 69 , 6.239976881 , -0.193790002 ), ( 69 , 0.399530009 , -0.332018693 ), ( 69 , 0.477280482 , -0.186822227 ), ( 69 , 0.554333775 , -0.150211932 ), ( 69 , 0.339059208 , -0.133680856 ), ( 69 , 0.370926709 , -0.103785372 ), ( 69 , 0.704694871 , 0.009527688 ), ( 69 , 0.638237336 , 0.109819636 ), ( 69 , 0.548949075 , 0.12266975 ), ( 69 , 0.217802171 , -0.003912819 ), ( 69 , 0.06513469 , -0.052841473 ), ( 69 , 0.166131519 , -0.008789476 ), ( 69 , 0.462146761 , 0.059646343 ), ( 69 , 0.499030599 , 0.153258887 ), ( 69 , 0.497227321 , 0.185215018 ), ( 69 , 0.426230071 , 0.210808252 ), ( 69 , 5.989892965 , -0.175559478 ), ( 69 , 6.022840534 , -0.15499805 ), ( 69 , 5.805536302 , -0.188847895 ), ( 69 , 5.875563012 , -0.128765474 ), ( 69 , 5.877893017 , -0.022849313 ), ( 69 , 6.067901668 , -0.10402623 ), ( 69 , 6.08977989 , 0.022830595 ), ( 69 , 6.082510617 , 0.087214392 ), ( 69 , 6.078472906 , 0.156441832 ), ( 69 , 5.711721816 , -0.094318469 ), ( 69 , 5.704672107 , -0.080437457 ), ( 69 , 5.727952171 , -0.069672121 ), ( 69 , 5.533386235 , -0.017272367 ), ( 69 , 5.530720516 , -0.002860782 ), ( 69 , 5.593078486 , 0.023762556 ), ( 69 , 5.593907978 , 0.075844415 ), ( 69 , 5.61682263 , 0.09409599 ), ( 69 , 5.929036597 , 0.079066122 ), ( 69 , 5.841947921 , 0.283754321 ), ( 69 , 6.161933941 , 0.123650492 ), ( 69 , 0.134324794 , 0.279908915 ), ( 69 , 0.269350046 , 0.441430955 ), ( 69 , 6.219871561 , 0.356315311 ), ( 69 , 5.915917925 , 0.353839895 ), ( 69 , 6.109497629 , 0.403014262 ), ( 69 , 6.17406485 , 0.426308787 ), ( 69 , 6.251199946 , 0.379476116 ), ( 69 , 0.026218054 , 0.49352536 ), ( 69 , 0.028763366 , 0.498349313 ), ( 69 , 0.124246519 , 0.566142984 ), ( 69 , 6.196006343 , 0.480229453 ), ( 69 , 0.022762832 , 0.620826786 ), ( 69 , 1.58411984 , -0.655317785 ), ( 69 , 1.512770699 , -0.632358615 ), ( 69 , 1.545095648 , -0.626623869 ), ( 69 , 1.539464209 , -0.603200521 ), ( 69 , 1.682822448 , -0.518415054 ), ( 69 , 1.640403044 , -0.519905522 ), ( 69 , 1.676466903 , -0.461552929 ), ( 69 , 1.463652065 , -0.58064453 ), ( 69 , 1.506295841 , -0.55273362 ), ( 69 , 1.52674455 , -0.534440839 ), ( 69 , 1.54746136 , -0.465304406 ), ( 69 , 1.65337813 , -0.436554106 ), ( 69 , 1.595925997 , -0.422294013 ), ( 69 , 1.510727042 , -0.412669872 ), ( 69 , 1.554119687 , -0.368654296 ), ( 69 , 1.789396171 , -0.477067281 ), ( 69 , 1.762305751 , -0.44566786 ), ( 69 , 1.83798538 , -0.452885952 ), ( 69 , 1.854854634 , -0.374371837 ), ( 69 , 1.770118035 , -0.299805629 ), ( 69 , 1.749496736 , -0.212620579 ), ( 69 , 1.50000209 , -0.374001822 ), ( 69 , 1.43268151 , -0.391527795 ), ( 69 , 1.451667936 , -0.284817977 ), ( 69 , 1.385755475 , -0.265631509 ), ( 69 , 1.578011639 , -0.272086001 ), ( 69 , 1.521321027 , -0.249832372 ), ( 69 , 1.647526385 , -0.187186245 ), ( 69 , 1.607551091 , -0.194541199 ), ( 69 , 1.660974238 , -0.172631071 ), ( 69 , 1.627192149 , -0.152351825 ), ( 69 , 1.610561558 , -0.144889524 ), ( 69 , 1.546778626 , -0.146832319 ), ( 69 , 1.460841385 , -0.125671353 ), ( 69 , 1.463994281 , -0.091932984 ), ( 69 , 1.570877922 , -0.141503966 ), ( 69 , 1.650604388 , -0.098687206 ), ( 69 , 1.648850843 , -0.076496409 ), ( 69 , 1.981895663 , -0.282513773 ), ( 69 , 1.99230109 , -0.252804074 ), ( 69 , 1.948646486 , -0.230191318 ), ( 69 , 1.967764959 , -0.176410015 ), ( 69 , 2.061558869 , -0.241961477 ), ( 69 , 2.118333592 , -0.176680944 ), ( 69 , 1.8677514 , -0.208100135 ), ( 69 , 1.823796357 , -0.188250877 ), ( 69 , 1.820188076 , -0.188922532 ), ( 69 , 1.997787597 , -0.12144057 ), ( 69 , 2.215176136 , -0.077057352 ), ( 69 , 2.223150049 , -0.016757134 ), ( 69 , 2.088953031 , 0.098144343 ), ( 69 , 1.751322173 , -0.125117379 ), ( 69 , 1.754586759 , -0.106714462 ), ( 69 , 1.720724358 , -0.053653134 ), ( 69 , 1.796323204 , -0.041935008 ), ( 69 , 1.915173562 , 0.001376073 ), ( 69 , 1.922121126 , 0.007043829 ), ( 69 , 1.695755322 , -0.012586211 ), ( 69 , 1.67007795 , 0.073479748 ), ( 69 , 1.79665303 , 0.08873942 ), ( 69 , 1.789853796 , 0.099021129 ), ( 69 , 1.740087613 , 0.120460657 ), ( 69 , 1.99706377 , 0.033656667 ), ( 69 , 1.972414366 , 0.047565918 ), ( 69 , 2.042283669 , 0.09441586 ), ( 69 , 1.876077099 , 0.13481926 ), ( 69 , 1.933052322 , 0.268064608 ), ( 69 , 1.891043899 , 0.240207946 ), ( 69 , 1.90564667 , 0.281824936 ), ( 69 , 1.978374611 , 0.272953495 ), ( 69 , 1.169890978 , -0.264942803 ), ( 69 , 1.13400326 , -0.216404796 ), ( 69 , 1.19164347 , -0.218927787 ), ( 69 , 1.341449678 , -0.151025574 ), ( 69 , 1.237381765 , -0.153526559 ), ( 69 , 1.23735111 , -0.153493047 ), ( 69 , 1.159358572 , -0.173252817 ), ( 69 , 1.132353031 , -0.141713985 ), ( 69 , 1.07986904 , -0.104845845 ), ( 69 , 1.193486581 , -0.121962252 ), ( 69 , 1.194416449 , -0.092679014 ), ( 69 , 1.459102728 , -0.083850519 ), ( 69 , 1.327759065 , -0.105265073 ), ( 69 , 1.416652534 , -0.04359582 ), ( 69 , 1.41664641 , -0.04359415 ), ( 69 , 1.475917326 , -0.071704896 ), ( 69 , 1.447435972 , -0.056138501 ), ( 69 , 1.487629572 , -0.026305093 ), ( 69 , 1.46264337 , -0.012834341 ), ( 69 , 1.559541607 , 0.000479243 ), ( 69 , 1.413085382 , -0.015125441 ), ( 69 , 1.438263814 , -0.000372627 ), ( 69 , 1.489845443 , 0.065939778 ), ( 69 , 1.291618251 , 0.028368603 ), ( 69 , 1.447594544 , 0.092649155 ), ( 69 , 1.312443807 , 0.079715861 ), ( 69 , 1.344263209 , 0.137835351 ), ( 69 , 1.136564298 , -0.022977389 ), ( 69 , 1.058722645 , -0.01398207 ), ( 69 , 1.013541039 , -0.011442387 ), ( 69 , 1.05804936 , 0.067146199 ), ( 69 , 0.961971567 , 0.089462089 ), ( 69 , 1.212592992 , 0.127716784 ), ( 69 , 1.231553356 , 0.1681342 ), ( 69 , 1.273888062 , 0.172307808 ), ( 69 , 1.270645557 , 0.193172576 ), ( 69 , 0.99708383 , 0.168354664 ), ( 69 , 1.109656413 , 0.215507549 ), ( 69 , 1.234766267 , 0.258563666 ), ( 69 , 1.193592097 , 0.314448752 ), ( 69 , 1.165361387 , 0.317780456 ), ( 69 , 1.610042806 , 0.043568431 ), ( 69 , 1.638444988 , 0.069083077 ), ( 69 , 1.548649067 , 0.102287891 ), ( 69 , 1.701862788 , 0.138249215 ), ( 69 , 1.603949843 , 0.182496394 ), ( 69 , 1.665695512 , 0.224482316 ), ( 69 , 1.438987377 , 0.214162449 ), ( 69 , 1.434936694 , 0.219027564 ), ( 69 , 1.617873523 , 0.2384025 ), ( 69 , 1.624160972 , 0.23887802 ), ( 69 , 1.63503201 , 0.27990374 ), ( 69 , 1.599904726 , 0.271248366 ), ( 69 , 1.548627633 , 0.248179598 ), ( 69 , 1.834327711 , 0.266825028 ), ( 69 , 1.775098474 , 0.292732865 ), ( 69 , 1.933282299 , 0.31892595 ), ( 69 , 1.686986302 , 0.270939486 ), ( 69 , 1.639251042 , 0.319350441 ), ( 69 , 1.620478786 , 0.364868015 ), ( 69 , 1.682250128 , 0.409141373 ), ( 69 , 1.730955504 , 0.403136533 ), ( 69 , 1.736054776 , 0.411975196 ), ( 69 , 1.311459562 , 0.251051233 ), ( 69 , 1.307867526 , 0.277795792 ), ( 69 , 1.506184255 , 0.326452479 ), ( 69 , 1.385437165 , 0.351355419 ), ( 69 , 1.316579446 , 0.46550308 ), ( 69 , 1.384298588 , 0.504487352 ), ( 69 , 1.600514738 , 0.41257117 ), ( 69 , 1.565911447 , 0.449890477 ), ( 69 , 1.571233895 , 0.475980228 ), ( 69 , 1.650848878 , 0.474898182 ), ( 69 , 1.703296488 , 0.492393124 ), ( 69 , 1.652084419 , 0.519777669 ), ( 69 , 1.642107539 , 0.525384932 ), ( 69 , 1.631919656 , 0.580220949 ), ( 69 , 1.498280114 , 0.509637556 ), ( 69 , 1.487734973 , 0.57414324 ), ( 69 , 1.505834955 , 0.586879869 ), ( 69 , 1.582262122 , 0.568829148 ), ( 69 , 1.571844152 , 0.578348553 ), ( 69 , 1.653253829 , 0.614489942 ), ( 69 , 1.542328238 , 0.651699523 ), ( 69 , 1.591139222 , 0.673262587 ), ( 69 , 1.536900061 , 0.672997524 ), ( 69 , 3.17052126 , -0.66078346 ), ( 69 , 3.092083715 , -0.628091185 ), ( 69 , 3.174687261 , -0.548230868 ), ( 69 , 3.228508506 , -0.466649672 ), ( 69 , 3.009056506 , -0.489226258 ), ( 69 , 3.174989709 , -0.41848734 ), ( 69 , 3.21043923 , -0.407607723 ), ( 69 , 3.321482454 , -0.487090106 ), ( 69 , 3.441144715 , -0.403291062 ), ( 69 , 3.398866238 , -0.376065165 ), ( 69 , 3.358716598 , -0.277215822 ), ( 69 , 3.332689095 , -0.209690224 ), ( 69 , 3.296725169 , -0.209810125 ), ( 69 , 2.968399722 , -0.494490068 ), ( 69 , 2.960986415 , -0.424869453 ), ( 69 , 2.946515299 , -0.342738745 ), ( 69 , 3.073502422 , -0.36121015 ), ( 69 , 2.995709266 , -0.3727412 ), ( 69 , 2.918847818 , -0.338881971 ), ( 69 , 3.069642449 , -0.262546676 ), ( 69 , 3.171200924 , -0.213643244 ), ( 69 , 3.263410433 , -0.151464028 ), ( 69 , 2.977871002 , -0.154332726 ), ( 69 , 3.029687208 , -0.096464337 ), ( 69 , 3.165954229 , -0.102029594 ), ( 69 , 3.128505311 , -0.083474394 ), ( 69 , 3.479873742 , -0.271372314 ), ( 69 , 3.646860492 , -0.166852545 ), ( 69 , 3.391688386 , -0.155523287 ), ( 69 , 3.568250591 , -0.056482149 ), ( 69 , 3.741012172 , -0.157477569 ), ( 69 , 3.761073714 , -0.034699164 ), ( 69 , 3.712292065 , 0.013951119 ), ( 69 , 3.397575076 , -0.050680136 ), ( 69 , 3.310544189 , -0.076333203 ), ( 69 , 3.568032128 , 0.041577436 ), ( 69 , 3.548054813 , 0.102158193 ), ( 69 , 3.615360476 , 0.138929074 ), ( 69 , 3.574575681 , 0.183422557 ), ( 69 , 3.391280905 , 0.144754484 ), ( 69 , 2.802251429 , -0.240661868 ), ( 69 , 2.714766347 , -0.234044953 ), ( 69 , 2.772320124 , -0.224448324 ), ( 69 , 2.651851257 , -0.133183226 ), ( 69 , 2.710143715 , -0.094504947 ), ( 69 , 2.915932278 , -0.03321689 ), ( 69 , 2.920048566 , -0.023270447 ), ( 69 , 2.943627287 , -0.022183866 ), ( 69 , 3.056077733 , 0.016617659 ), ( 69 , 2.898645794 , -0.022309891 ), ( 69 , 2.863104762 , 0.007556163 ), ( 69 , 2.630302756 , -0.018647962 ), ( 69 , 2.446129342 , 0.003169087 ), ( 69 , 2.428904015 , 0.012721944 ), ( 69 , 2.431258576 , 0.033678354 ), ( 69 , 2.77115108 , 0.03847666 ), ( 69 , 2.820111186 , 0.222487867 ), ( 69 , 2.715014571 , 0.15645648 ), ( 69 , 3.009237511 , 0.132631078 ), ( 69 , 3.034837237 , 0.195274335 ), ( 69 , 3.110052251 , 0.269407132 ), ( 69 , 3.131575113 , 0.30487147 ), ( 69 , 3.3474394 , 0.27212362 ), ( 69 , 3.381935933 , 0.342333577 ), ( 69 , 3.450835079 , 0.370592137 ), ( 69 , 3.43122404 , 0.388860459 ), ( 69 , 2.899671764 , 0.221080021 ), ( 69 , 3.125621174 , 0.465649326 ), ( 69 , 3.12415151 , 0.616807672 ), ( 69 , 3.125373796 , 0.618688324 ), ( 69 , 4.719068041 , -0.664660738 ), ( 69 , 4.781540704 , -0.638333046 ), ( 69 , 4.793144043 , -0.605387769 ), ( 69 , 4.779824593 , -0.603790019 ), ( 69 , 4.6872552 , -0.606112486 ), ( 69 , 4.689691685 , -0.602875197 ), ( 69 , 4.683008257 , -0.604248557 ), ( 69 , 4.659124242 , -0.598834965 ), ( 69 , 4.817393501 , -0.59924483 ), ( 69 , 4.790278948 , -0.582873108 ), ( 69 , 4.78076109 , -0.57755887 ), ( 69 , 4.828805835 , -0.530470681 ), ( 69 , 4.786382788 , -0.483747163 ), ( 69 , 4.561827648 , -0.517853691 ), ( 69 , 4.622245939 , -0.515414438 ), ( 69 , 4.684336955 , -0.476171559 ), ( 69 , 4.760765301 , -0.449635819 ), ( 69 , 4.713232062 , -0.42384646 ), ( 69 , 4.696482817 , -0.383210591 ), ( 69 , 4.882709084 , -0.40460423 ), ( 69 , 5.012326792 , -0.404748462 ), ( 69 , 4.992673576 , -0.399620179 ), ( 69 , 4.963695353 , -0.334285012 ), ( 69 , 4.957780598 , -0.326543932 ), ( 69 , 4.857112918 , -0.320589735 ), ( 69 , 4.936364733 , -0.299398809 ), ( 69 , 4.877582208 , -0.300742745 ), ( 69 , 4.527639938 , -0.464766988 ), ( 69 , 4.55556473 , -0.416164125 ), ( 69 , 4.676648026 , -0.340787846 ), ( 69 , 4.495309134 , -0.339227043 ), ( 69 , 4.387334118 , -0.334002749 ), ( 69 , 4.603845309 , -0.238029331 ), ( 69 , 4.606400331 , -0.106814912 ), ( 69 , 4.723185254 , -0.055101726 ), ( 69 , 5.201622874 , -0.190113274 ), ( 69 , 5.170123481 , -0.1845392 ), ( 69 , 5.001151354 , -0.168114918 ), ( 69 , 5.022272826 , -0.129638333 ), ( 69 , 5.022062039 , -0.115574919 ), ( 69 , 4.993399024 , -0.099219365 ), ( 69 , 5.303502083 , -0.131447226 ), ( 69 , 5.32514563 , -0.111044043 ), ( 69 , 5.291155725 , -0.111112184 ), ( 69 , 5.284417986 , -0.106249931 ), ( 69 , 5.375985799 , -0.091494418 ), ( 69 , 5.339153257 , -0.091913588 ), ( 69 , 5.411430304 , -0.04635011 ), ( 69 , 5.259284064 , 0.007931435 ), ( 69 , 5.181684223 , 0.01897717 ), ( 69 , 5.290902124 , 0.015130314 ), ( 69 , 5.258542774 , 0.036967071 ), ( 69 , 5.303810366 , 0.049681306 ), ( 69 , 5.350553201 , 0.051611684 ), ( 69 , 4.877137619 , -0.083888918 ), ( 69 , 4.908441312 , -0.0065198 ), ( 69 , 5.012895878 , -0.039916569 ), ( 69 , 4.8260826 , 0.013622433 ), ( 69 , 4.959438039 , 0.074430268 ), ( 69 , 4.955652813 , 0.125232186 ), ( 69 , 5.182623422 , 0.100914793 ), ( 69 , 5.118742719 , 0.087779147 ), ( 69 , 5.132185934 , 0.104847767 ), ( 69 , 5.123350661 , 0.135886643 ), ( 69 , 5.245464919 , 0.187428681 ), ( 69 , 4.996626515 , 0.168286476 ), ( 69 , 5.013310912 , 0.197107186 ), ( 69 , 5.14069982 , 0.300950498 ), ( 69 , 5.082214946 , 0.295954116 ), ( 69 , 4.332472271 , -0.184348131 ), ( 69 , 4.363449669 , -0.10614986 ), ( 69 , 4.653111267 , 0.018227303 ), ( 69 , 4.623025674 , 0.059207872 ), ( 69 , 4.546885943 , 0.087272761 ), ( 69 , 4.50022162 , 0.081860776 ), ( 69 , 4.211221429 , -0.061567281 ), ( 69 , 4.208395952 , 0.011722662 ), ( 69 , 4.403292332 , 0.225307569 ), ( 69 , 4.305232338 , 0.161840326 ), ( 69 , 4.214405105 , 0.17341643 ), ( 69 , 4.305379811 , 0.191816463 ), ( 69 , 4.35010201 , 0.252641211 ), ( 69 , 4.305087794 , 0.278774692 ), ( 69 , 4.693301088 , 0.036214923 ), ( 69 , 4.769390431 , 0.052020938 ), ( 69 , 4.770938322 , 0.207419205 ), ( 69 , 4.561030868 , 0.155758039 ), ( 69 , 4.610344743 , 0.24108817 ), ( 69 , 4.744472425 , 0.277777393 ), ( 69 , 4.770248175 , 0.284015705 ), ( 69 , 4.90375813 , 0.190260828 ), ( 69 , 4.875326599 , 0.198197615 ), ( 69 , 4.923475533 , 0.268677959 ), ( 69 , 4.898335263 , 0.265277979 ), ( 69 , 5.050686174 , 0.380722858 ), ( 69 , 4.525505024 , 0.229226031 ), ( 69 , 4.63295954 , 0.375256511 ), ( 69 , 4.418678598 , 0.315240936 ), ( 69 , 4.487936982 , 0.427363857 ), ( 69 , 4.531301745 , 0.450442738 ), ( 69 , 4.633104851 , 0.414574896 ), ( 69 , 4.806038855 , 0.437323948 ), ( 69 , 4.862182677 , 0.519081479 ), ( 69 , 4.870557565 , 0.533808104 ), ( 69 , 4.729355438 , 0.530149192 ), ( 69 , 4.592047801 , 0.461460051 ), ( 69 , 4.643815397 , 0.57990464 ), ( 69 , 4.646189766 , 0.614666194 ), ( 69 , 1.340951856 , -1.463613748 ), ( 69 , 1.057978601 , -1.372407939 ), ( 69 , 0.892779289 , -1.339483384 ), ( 69 , 0.073369849 , -1.374975952 ), ( 69 , 0.194568664 , -1.362792409 ), ( 69 , 0.713017806 , -1.207060586 ), ( 69 , 1.314052465 , -1.297491306 ), ( 69 , 0.920125545 , -1.082240254 ), ( 69 , 1.165474392 , -1.096058281 ), ( 69 , 1.057971943 , -1.070868132 ), ( 69 , 1.04556474 , -0.985631588 ), ( 69 , 0.240023566 , -1.296806685 ), ( 69 , 0.168750562 , -1.276491519 ), ( 69 , 0.554066313 , -1.150972278 ), ( 69 , 0.823984548 , -1.126866756 ), ( 69 , 0.908826238 , -1.010237387 ), ( 69 , 0.612520592 , -0.991070425 ), ( 69 , 0.694333139 , -0.923880659 ), ( 69 , 0.802507016 , -0.766162331 ), ( 69 , 1.492075755 , -1.098050969 ), ( 69 , 1.436793726 , -1.087591465 ), ( 69 , 1.461909686 , -1.027493008 ), ( 69 , 1.296450208 , -1.0134946 ), ( 69 , 1.402309501 , -0.900155359 ), ( 69 , 1.261343789 , -0.989015661 ), ( 69 , 1.381560484 , -0.801343871 ), ( 69 , 1.398953002 , -0.759805821 ), ( 69 , 1.518297285 , -0.709526491 ), ( 69 , 1.346066342 , -0.719279327 ), ( 69 , 1.25909574 , -0.767592402 ), ( 69 , 1.02374129 , -0.810128149 ), ( 69 , 1.109017552 , -0.805175339 ), ( 69 , 1.031885303 , -0.68001808 ), ( 69 , 0.906398747 , -0.765425985 ), ( 69 , 0.851289848 , -0.796984279 ), ( 69 , 0.845763185 , -0.677357065 ), ( 69 , 1.231047257 , -0.656477629 ), ( 69 , 1.162868504 , -0.57275132 ), ( 69 , 1.10304989 , -0.415758215 ), ( 69 , 1.180551487 , -0.401851809 ), ( 69 , 0.062602178 , -1.095576016 ), ( 69 , 0.171007551 , -1.011733832 ), ( 69 , 0.243837832 , -0.928391207 ), ( 69 , 0.193040065 , -0.861946527 ), ( 69 , 0.354776076 , -0.868148996 ), ( 69 , 0.712695866 , -0.707343691 ), ( 69 , 0.599245367 , -0.628015425 ), ( 69 , 0.097554213 , -0.889980911 ), ( 69 , 0.240833038 , -0.827411774 ), ( 69 , 0.379477234 , -0.728632069 ), ( 69 , 0.289995668 , -0.695620954 ), ( 69 , 0.149784032 , -0.740562791 ), ( 69 , 0.360932312 , -0.638732817 ), ( 69 , 0.36946399 , -0.595849492 ), ( 69 , 0.364693481 , -0.425035375 ), ( 69 , 0.78113432 , -0.596712831 ), ( 69 , 0.860840087 , -0.410505455 ), ( 69 , 1.021022969 , -0.403854329 ), ( 69 , 0.968621212 , -0.430266432 ), ( 69 , 1.104155944 , -0.403668826 ), ( 69 , 1.116404251 , -0.386619285 ), ( 69 , 1.076062385 , -0.31504781 ), ( 69 , 0.838877182 , -0.359879387 ), ( 69 , 0.887013116 , -0.304372245 ), ( 69 , 0.534888627 , -0.383375408 ), ( 69 , 0.573941812 , -0.331208886 ), ( 69 , 0.732741344 , -0.217484972 ), ( 69 , 0.853158822 , -0.153068498 ), ( 69 , 0.814007669 , -0.178932102 ), ( 69 , 0.694414361 , -0.171590647 ), ( 69 , 0.783681793 , -0.125318911 ), ( 69 , 0.734001779 , -0.063170065 ), ( 69 , 2.697388389 , -1.447068281 ), ( 69 , 2.803865346 , -1.317090864 ), ( 69 , 2.567107486 , -1.322561339 ), ( 69 , 1.694034792 , -1.348977092 ), ( 69 , 1.986885744 , -1.29633986 ), ( 69 , 2.29351549 , -1.34521975 ), ( 69 , 2.28948857 , -1.305296242 ), ( 69 , 2.584991326 , -1.255647428 ), ( 69 , 2.220457212 , -1.258058933 ), ( 69 , 2.265613843 , -1.209056492 ), ( 69 , 2.351524511 , -1.189253061 ), ( 69 , 2.900740921 , -1.311706646 ), ( 69 , 3.018534367 , -1.289844638 ), ( 69 , 2.932543049 , -1.242979318 ), ( 69 , 2.73500902 , -1.277019564 ), ( 69 , 3.135048274 , -1.234645461 ), ( 69 , 2.573955808 , -1.194140424 ), ( 69 , 2.663166719 , -1.173966925 ), ( 69 , 2.637920875 , -1.128314062 ), ( 69 , 2.66338736 , -1.123714401 ), ( 69 , 2.790278793 , -1.064402831 ), ( 69 , 2.728249795 , -1.027517404 ), ( 69 , 2.614046876 , -1.105589185 ), ( 69 , 2.08433087 , -1.150323215 ), ( 69 , 2.123196039 , -1.108555148 ), ( 69 , 1.92720787 , -1.081252649 ), ( 69 , 2.353319827 , -1.107702917 ), ( 69 , 2.416690923 , -1.069532782 ), ( 69 , 2.29110962 , -1.02492467 ), ( 69 , 2.553807375 , -0.946794824 ), ( 69 , 2.439770826 , -0.983761121 ), ( 69 , 2.394985299 , -0.935381099 ), ( 69 , 2.478169644 , -0.934054883 ), ( 69 , 2.235720895 , -0.865705902 ), ( 69 , 2.400274461 , -0.860267583 ), ( 69 , 2.415190692 , -0.856865453 ), ( 69 , 2.29651804 , -0.82990108 ), ( 69 , 2.377275416 , -0.817088376 ), ( 69 , 3.083148091 , -1.130379783 ), ( 69 , 3.062594353 , -1.051225851 ), ( 69 , 2.976922227 , -1.019034471 ), ( 69 , 2.961504836 , -1.0155437 ), ( 69 , 2.997652419 , -0.98227204 ), ( 69 , 2.953986014 , -0.956047258 ), ( 69 , 2.940209454 , -0.922516595 ), ( 69 , 2.743654613 , -0.99890201 ), ( 69 , 2.763081484 , -0.966683635 ), ( 69 , 2.792367153 , -0.912529525 ), ( 69 , 2.683972036 , -0.96951635 ), ( 69 , 2.727567537 , -0.874531527 ), ( 69 , 2.875732167 , -0.934432807 ), ( 69 , 2.81732656 , -0.828329749 ), ( 69 , 2.708777823 , -0.83018253 ), ( 69 , 2.793607691 , -0.823100832 ), ( 69 , 3.106982174 , -0.862212428 ), ( 69 , 3.13397738 , -0.837368742 ), ( 69 , 2.954720569 , -0.722396751 ), ( 69 , 3.041088033 , -0.679972588 ), ( 69 , 3.054208921 , -0.66511863 ), ( 69 , 3.039448137 , -0.630435825 ), ( 69 , 2.883487788 , -0.706824904 ), ( 69 , 2.945865625 , -0.689003691 ), ( 69 , 2.957072904 , -0.637638773 ), ( 69 , 3.033530774 , -0.621547718 ), ( 69 , 2.593485663 , -0.813965185 ), ( 69 , 2.557557901 , -0.801419978 ), ( 69 , 2.489500946 , -0.79535341 ), ( 69 , 2.437049878 , -0.681440916 ), ( 69 , 2.549308025 , -0.690646879 ), ( 69 , 2.558078708 , -0.584829645 ), ( 69 , 2.563933192 , -0.580217776 ), ( 69 , 2.53689595 , -0.582876342 ), ( 69 , 2.764250986 , -0.702296529 ), ( 69 , 2.767578823 , -0.652522214 ), ( 69 , 2.789339405 , -0.640135162 ), ( 69 , 2.909776538 , -0.533292511 ), ( 69 , 2.821790148 , -0.454620025 ), ( 69 , 2.632792335 , -0.580117578 ), ( 69 , 2.643097744 , -0.539163523 ), ( 69 , 2.728793856 , -0.509528173 ), ( 69 , 2.601673058 , -0.542648957 ), ( 69 , 2.640680784 , -0.492130508 ), ( 69 , 2.63900814 , -0.491984088 ), ( 69 , 2.778166107 , -0.482693372 ), ( 69 , 2.812020154 , -0.418623005 ), ( 69 , 2.711187547 , -0.442843123 ), ( 69 , 2.761588863 , -0.393181135 ), ( 69 , 1.623979861 , -1.143716299 ), ( 69 , 1.701353337 , -1.040053759 ), ( 69 , 1.900155308 , -1.021760975 ), ( 69 , 1.989936083 , -0.999993786 ), ( 69 , 2.043133067 , -0.954945124 ), ( 69 , 1.884619846 , -0.980092578 ), ( 69 , 1.922697238 , -0.911039263 ), ( 69 , 1.975576376 , -0.934714308 ), ( 69 , 1.952201377 , -0.897144873 ), ( 69 , 2.003986345 , -0.856108009 ), ( 69 , 1.649738364 , -0.934777026 ), ( 69 , 1.757606176 , -0.880548559 ), ( 69 , 1.865157035 , -0.911134993 ), ( 69 , 1.844651079 , -0.871405978 ), ( 69 , 1.908919606 , -0.819897408 ), ( 69 , 2.109633247 , -0.863909518 ), ( 69 , 2.126318578 , -0.844472642 ), ( 69 , 2.173016503 , -0.821906953 ), ( 69 , 2.125338463 , -0.834157565 ), ( 69 , 2.095814775 , -0.793372785 ), ( 69 , 2.232324407 , -0.799094858 ), ( 69 , 2.270457852 , -0.73982682 ), ( 69 , 2.302404532 , -0.680537719 ), ( 69 , 2.228662102 , -0.724571815 ), ( 69 , 2.040231616 , -0.820529782 ), ( 69 , 2.142929325 , -0.711362746 ), ( 69 , 2.018833373 , -0.742941373 ), ( 69 , 1.980239562 , -0.752476542 ), ( 69 , 2.008578354 , -0.688035318 ), ( 69 , 2.03093166 , -0.656177013 ), ( 69 , 2.146271794 , -0.624357251 ), ( 69 , 2.170630133 , -0.573688405 ), ( 69 , 2.153579616 , -0.553868585 ), ( 69 , 1.630555202 , -0.901772558 ), ( 69 , 1.842819604 , -0.744075049 ), ( 69 , 1.882232356 , -0.682456483 ), ( 69 , 1.601307142 , -0.806443544 ), ( 69 , 1.706383201 , -0.763002958 ), ( 69 , 1.657187422 , -0.689169686 ), ( 69 , 1.783814322 , -0.609761088 ), ( 69 , 1.940757429 , -0.65085077 ), ( 69 , 2.045066559 , -0.551833603 ), ( 69 , 2.134151174 , -0.529235881 ), ( 69 , 2.125023604 , -0.513221127 ), ( 69 , 2.010953273 , -0.552591189 ), ( 69 , 2.009035419 , -0.524987803 ), ( 69 , 1.913468929 , -0.564557665 ), ( 69 , 1.831471673 , -0.495668082 ), ( 69 , 1.957764015 , -0.508219568 ), ( 69 , 1.931738533 , -0.453983324 ), ( 69 , 1.912028202 , -0.389894706 ), ( 69 , 1.994039168 , -0.373390386 ), ( 69 , 2.317935051 , -0.674274195 ), ( 69 , 2.294460141 , -0.661082893 ), ( 69 , 2.301203468 , -0.603887125 ), ( 69 , 2.36868636 , -0.566186258 ), ( 69 , 2.418842268 , -0.568230554 ), ( 69 , 2.397964718 , -0.52040019 ), ( 69 , 2.378485531 , -0.506463824 ), ( 69 , 2.253040171 , -0.563070552 ), ( 69 , 2.393718257 , -0.45098274 ), ( 69 , 2.47252268 , -0.421807661 ), ( 69 , 2.742849005 , -0.34077535 ), ( 69 , 2.614989179 , -0.355293359 ), ( 69 , 2.629417493 , -0.356468639 ), ( 69 , 2.386354907 , -0.31767984 ), ( 69 , 2.167447469 , -0.381913782 ), ( 69 , 2.139156792 , -0.393282079 ), ( 69 , 2.268458585 , -0.302012549 ), ( 69 , 2.066654534 , -0.406900796 ), ( 69 , 2.05871027 , -0.361647127 ), ( 69 , 2.074700007 , -0.332440471 ), ( 69 , 2.236754061 , -0.251640837 ), ( 69 , 2.188664413 , -0.192783864 ), ( 69 , 2.428004044 , -0.241448375 ), ( 69 , 2.335618726 , -0.198476298 ), ( 69 , 2.33279457 , -0.198573076 ), ( 69 , 2.311144116 , -0.150769962 ), ( 69 , 2.190170895 , -0.187589315 ), ( 69 , 2.292011451 , -0.121799381 ), ( 69 , 2.259459232 , -0.118797195 ), ( 69 , 2.362828415 , -0.077770399 ), ( 69 , 3.812550117 , -1.3954832 ), ( 69 , 3.994440569 , -1.38119743 ), ( 69 , 3.543782402 , -1.390344204 ), ( 69 , 3.181394968 , -1.374994212 ), ( 69 , 3.847959749 , -1.311433673 ), ( 69 , 4.012001042 , -1.25300889 ), ( 69 , 4.526614249 , -1.168532654 ), ( 69 , 4.583300061 , -1.167102309 ), ( 69 , 4.389292299 , -1.182465201 ), ( 69 , 4.50543886 , -1.111521492 ), ( 69 , 4.046759318 , -1.154038991 ), ( 69 , 4.01321667 , -1.160575831 ), ( 69 , 4.131404336 , -1.014480311 ), ( 69 , 3.149637843 , -1.279301515 ), ( 69 , 3.812793652 , -1.180152108 ), ( 69 , 3.728819679 , -1.154608542 ), ( 69 , 3.730757042 , -1.076986842 ), ( 69 , 3.25038021 , -1.13814695 ), ( 69 , 3.360773111 , -1.093294694 ), ( 69 , 3.455427055 , -1.066698803 ), ( 69 , 3.556917605 , -1.09311518 ), ( 69 , 3.589600645 , -1.077528737 ), ( 69 , 3.74833786 , -1.036457968 ), ( 69 , 3.529557653 , -1.08388945 ), ( 69 , 3.54108323 , -1.074815235 ), ( 69 , 3.499923184 , -1.05042641 ), ( 69 , 3.966500084 , -1.080143395 ), ( 69 , 3.909387236 , -1.063009607 ), ( 69 , 3.880077534 , -1.036855214 ), ( 69 , 4.102314723 , -0.993350103 ), ( 69 , 4.108113998 , -0.93185477 ), ( 69 , 4.028039389 , -0.902965296 ), ( 69 , 4.018978074 , -0.833577475 ), ( 69 , 4.007982762 , -0.835654168 ), ( 69 , 3.853928211 , -0.830262205 ), ( 69 , 3.898055373 , -0.80033419 ), ( 69 , 4.670602293 , -1.080785563 ), ( 69 , 4.550052765 , -1.020560717 ), ( 69 , 4.548765726 , -0.947474901 ), ( 69 , 4.424591777 , -0.95012957 ), ( 69 , 4.274808653 , -0.890721598 ), ( 69 , 4.246370408 , -0.870655014 ), ( 69 , 4.369100649 , -0.851079095 ), ( 69 , 4.354577662 , -0.805549485 ), ( 69 , 4.613248559 , -0.859488571 ), ( 69 , 4.640925103 , -0.802351997 ), ( 69 , 4.672515304 , -0.7388077 ), ( 69 , 4.69525995 , -0.73868583 ), ( 69 , 4.663137131 , -0.696366432 ), ( 69 , 4.666192975 , -0.680395239 ), ( 69 , 4.615755656 , -0.660822086 ), ( 69 , 4.452942791 , -0.793283013 ), ( 69 , 4.393986595 , -0.689998914 ), ( 69 , 4.418304434 , -0.656237977 ), ( 69 , 4.529525155 , -0.66609002 ), ( 69 , 4.584977247 , -0.65340046 ), ( 69 , 4.571408255 , -0.649012239 ), ( 69 , 4.117372084 , -0.901109817 ), ( 69 , 4.16627239 , -0.87857424 ), ( 69 , 4.157614358 , -0.883413769 ), ( 69 , 4.119729337 , -0.876432768 ), ( 69 , 4.095819917 , -0.797770461 ), ( 69 , 4.168635245 , -0.777127953 ), ( 69 , 4.105256993 , -0.778821732 ), ( 69 , 4.103318114 , -0.77298201 ), ( 69 , 4.20947623 , -0.688267865 ), ( 69 , 4.221867854 , -0.640877423 ), ( 69 , 4.176065784 , -0.627057223 ), ( 69 , 4.119275688 , -0.551592382 ), ( 69 , 4.356844634 , -0.68333964 ), ( 69 , 4.464983502 , -0.551779624 ), ( 69 , 4.380150882 , -0.467916655 ), ( 69 , 4.416853357 , -0.446816317 ), ( 69 , 4.23036546 , -0.569836962 ), ( 69 , 4.320828447 , -0.487232132 ), ( 69 , 3.17325113 , -1.128909082 ), ( 69 , 3.228399854 , -1.09701241 ), ( 69 , 3.234756072 , -1.087019617 ), ( 69 , 3.267752356 , -1.07985136 ), ( 69 , 3.375583378 , -1.053429585 ), ( 69 , 3.164025487 , -1.067786694 ), ( 69 , 3.195776974 , -1.048380685 ), ( 69 , 3.378809579 , -1.019807098 ), ( 69 , 3.60923051 , -0.912272749 ), ( 69 , 3.509999795 , -0.905391164 ), ( 69 , 3.154758534 , -0.999377953 ), ( 69 , 3.34269906 , -0.953162832 ), ( 69 , 3.192373352 , -0.949766764 ), ( 69 , 3.211079255 , -0.943470538 ), ( 69 , 3.450647128 , -0.923410438 ), ( 69 , 3.483737183 , -0.798746239 ), ( 69 , 3.601701995 , -0.851571721 ), ( 69 , 3.818683853 , -0.810915025 ), ( 69 , 3.865728602 , -0.783089501 ), ( 69 , 3.796811829 , -0.765572052 ), ( 69 , 3.887623522 , -0.747396751 ), ( 69 , 3.873675916 , -0.696848186 ), ( 69 , 3.773101448 , -0.711314319 ), ( 69 , 3.583266586 , -0.803348354 ), ( 69 , 3.590281984 , -0.771278344 ), ( 69 , 3.64658196 , -0.732950546 ), ( 69 , 3.562377684 , -0.740286415 ), ( 69 , 3.540295835 , -0.741151726 ), ( 69 , 3.71259278 , -0.559826552 ), ( 69 , 3.255113401 , -0.865476242 ), ( 69 , 3.3396533 , -0.840732366 ), ( 69 , 3.490481846 , -0.718911163 ), ( 69 , 3.352225549 , -0.780490509 ), ( 69 , 3.411093196 , -0.691428967 ), ( 69 , 3.398492315 , -0.682524176 ), ( 69 , 3.439871951 , -0.632227549 ), ( 69 , 3.189797499 , -0.792778558 ), ( 69 , 3.240871515 , -0.683797543 ), ( 69 , 3.453596941 , -0.613132333 ), ( 69 , 3.556987177 , -0.56221601 ), ( 69 , 3.517421648 , -0.568059527 ), ( 69 , 3.641781259 , -0.6038504 ), ( 69 , 3.367797873 , -0.544577221 ), ( 69 , 3.383937656 , -0.524823628 ), ( 69 , 3.413759791 , -0.493688105 ), ( 69 , 3.995302058 , -0.481645224 ), ( 69 , 3.849386324 , -0.57196609 ), ( 69 , 3.921114638 , -0.482710481 ), ( 69 , 3.913712944 , -0.458763439 ), ( 69 , 4.160904578 , -0.442045483 ), ( 69 , 4.165633412 , -0.397348834 ), ( 69 , 4.210811454 , -0.323578751 ), ( 69 , 3.990109547 , -0.321641123 ), ( 69 , 4.144599934 , -0.31244884 ), ( 69 , 4.107048611 , -0.243828729 ), ( 69 , 3.667813394 , -0.458454615 ), ( 69 , 3.641322923 , -0.388259545 ), ( 69 , 3.694399032 , -0.247924183 ), ( 69 , 3.702203531 , -0.206463426 ), ( 69 , 3.918640678 , -0.303062378 ), ( 69 , 3.978620358 , -0.282040167 ), ( 69 , 3.789681265 , -0.17461046 ), ( 69 , 3.933925908 , -0.05523745 ), ( 69 , 5.746797646 , -1.330136911 ), ( 69 , 5.768852634 , -1.320854142 ), ( 69 , 5.126892333 , -1.426857084 ), ( 69 , 4.900259789 , -1.362513141 ), ( 69 , 5.967005869 , -1.212556865 ), ( 69 , 4.944632775 , -1.285082651 ), ( 69 , 5.018422153 , -1.248756291 ), ( 69 , 5.440096966 , -1.132891572 ), ( 69 , 5.240451945 , -1.131139672 ), ( 69 , 5.53011147 , -1.047059176 ), ( 69 , 5.649958453 , -0.904562935 ), ( 69 , 5.591108378 , -0.903264527 ), ( 69 , 5.582183309 , -0.821262135 ), ( 69 , 6.190384755 , -1.097559345 ), ( 69 , 6.27672448 , -0.999740736 ), ( 69 , 5.960637763 , -0.961041585 ), ( 69 , 5.861732912 , -0.814518912 ), ( 69 , 5.919811398 , -0.758712338 ), ( 69 , 5.891636379 , -0.738118459 ), ( 69 , 6.234335445 , -0.831650377 ), ( 69 , 6.209437041 , -0.808297433 ), ( 69 , 6.163970795 , -0.787516687 ), ( 69 , 6.247044795 , -0.712584784 ), ( 69 , 5.709751492 , -0.833842088 ), ( 69 , 5.809567218 , -0.765194543 ), ( 69 , 5.608580273 , -0.78822574 ), ( 69 , 5.578350385 , -0.756329741 ), ( 69 , 5.572566697 , -0.67850235 ), ( 69 , 5.867057775 , -0.682896757 ), ( 69 , 5.759262269 , -0.550230168 ), ( 69 , 4.813068299 , -1.060276163 ), ( 69 , 4.802729339 , -1.044403432 ), ( 69 , 5.151780132 , -0.946151477 ), ( 69 , 4.919234061 , -0.866219282 ), ( 69 , 5.087315277 , -0.86993335 ), ( 69 , 4.994552808 , -0.844810743 ), ( 69 , 4.959063404 , -0.855080419 ), ( 69 , 4.969315636 , -0.846588245 ), ( 69 , 5.090657831 , -0.812956042 ), ( 69 , 5.21930731 , -0.66892693 ), ( 69 , 5.200075697 , -0.651650151 ), ( 69 , 4.911442757 , -0.842366342 ), ( 69 , 4.933564158 , -0.833914339 ), ( 69 , 4.787855774 , -0.666327266 ), ( 69 , 4.908679783 , -0.69379209 ), ( 69 , 4.926415201 , -0.57090402 ), ( 69 , 4.867038869 , -0.574051482 ), ( 69 , 5.121248477 , -0.596865429 ), ( 69 , 5.11589214 , -0.538777709 ), ( 69 , 5.129519983 , -0.362736217 ), ( 69 , 5.501659465 , -0.629252721 ), ( 69 , 5.500736652 , -0.615967765 ), ( 69 , 5.504031315 , -0.57413681 ), ( 69 , 5.541854521 , -0.518730898 ), ( 69 , 5.434070377 , -0.531948034 ), ( 69 , 5.461159067 , -0.488609146 ), ( 69 , 5.414332706 , -0.498279792 ), ( 69 , 5.460961128 , -0.475514487 ), ( 69 , 5.668747348 , -0.47659981 ), ( 69 , 5.650137763 , -0.353484413 ), ( 69 , 5.578224363 , -0.354924415 ), ( 69 , 5.530509007 , -0.333160211 ), ( 69 , 5.631621018 , -0.249433013 ), ( 69 , 5.6086835 , -0.249186806 ), ( 69 , 5.35825797 , -0.446913959 ), ( 69 , 5.320767048 , -0.365659057 ), ( 69 , 5.40215653 , -0.422876624 ), ( 69 , 5.446427144 , -0.33615859 ), ( 69 , 5.362451531 , -0.30429683 ), ( 69 , 5.183626734 , -0.365779508 ), ( 69 , 5.567573564 , -0.230438479 ), ( 69 , 5.582185778 , -0.227729774 ), ( 69 , 5.613061159 , -0.211130917 ), ( 69 , 5.509074556 , -0.174454899 ), ( 69 , 5.531428486 , -0.035816482 ), ( 70 , 0.757629836 , 0.034352808 ), ( 70 , 0.764179124 , 0.060855818 ), ( 70 , 0.860235751 , 0.118676903 ), ( 70 , 0.910212392 , 0.198797749 ), ( 70 , 0.652700096 , 0.157191779 ), ( 70 , 0.673842691 , 0.202538835 ), ( 70 , 1.044266152 , 0.243903256 ), ( 70 , 1.023083337 , 0.289984542 ), ( 70 , 1.05207254 , 0.352532222 ), ( 70 , 0.915033068 , 0.292555686 ), ( 70 , 0.922195424 , 0.313079946 ), ( 70 , 0.87640764 , 0.35795426 ), ( 70 , 1.01059285 , 0.384515919 ), ( 70 , 1.001979925 , 0.393278081 ), ( 70 , 0.992001777 , 0.415441198 ), ( 70 , 1.007379741 , 0.418201058 ), ( 70 , 0.997028991 , 0.424904093 ), ( 70 , 0.98067195 , 0.487302744 ), ( 70 , 0.607133527 , 0.34360013 ), ( 70 , 0.518840409 , 0.3204064 ), ( 70 , 0.489442966 , 0.420928951 ), ( 70 , 0.590885532 , 0.423591573 ), ( 70 , 0.555639747 , 0.475385402 ), ( 70 , 0.847740118 , 0.400617905 ), ( 70 , 0.922113179 , 0.481214474 ), ( 70 , 0.940877455 , 0.552927978 ), ( 70 , 0.903375347 , 0.600907907 ), ( 70 , 0.706927472 , 0.539925786 ), ( 70 , 0.6729816 , 0.58979506 ), ( 70 , 0.80979729 , 0.642256118 ), ( 70 , 1.110205716 , 0.413579814 ), ( 70 , 1.308544564 , 0.47691884 ), ( 70 , 1.355173608 , 0.537518096 ), ( 70 , 1.258029562 , 0.510252574 ), ( 70 , 1.089302311 , 0.552442426 ), ( 70 , 1.07621732 , 0.565225335 ), ( 70 , 1.271871274 , 0.62507783 ), ( 70 , 1.166337823 , 0.637395921 ), ( 70 , 1.438634988 , 0.617410335 ), ( 70 , 1.335785746 , 0.591990947 ), ( 70 , 1.362446225 , 0.699903733 ), ( 70 , 1.522204848 , 0.689988605 ), ( 70 , 1.497634003 , 0.727725403 ), ( 70 , 1.507536475 , 0.910362022 ), ( 70 , 1.086233941 , 0.724381751 ), ( 70 , 0.948534719 , 0.69969672 ), ( 70 , 0.919592267 , 0.736569063 ), ( 70 , 0.847104303 , 0.700207233 ), ( 70 , 0.866310778 , 0.780500185 ), ( 70 , 0.991651394 , 0.769227703 ), ( 70 , 1.085541342 , 0.876162659 ), ( 70 , 1.027188874 , 0.855919339 ), ( 70 , 0.991259509 , 0.902437598 ), ( 70 , 1.00538728 , 0.915981734 ), ( 70 , 1.24074773 , 0.840816617 ), ( 70 , 1.296099576 , 0.871290239 ), ( 70 , 1.154303003 , 0.887407835 ), ( 70 , 1.186891237 , 0.940952176 ), ( 70 , 1.204317946 , 0.968861935 ), ( 70 , 1.56542437 , 1.053815173 ), ( 70 , 0.33197752 , 0.449760022 ), ( 70 , 0.378428062 , 0.475535551 ), ( 70 , 0.273127126 , 0.484294267 ), ( 70 , 0.297815456 , 0.503829787 ), ( 70 , 0.320903739 , 0.518990545 ), ( 70 , 0.318015083 , 0.559820707 ), ( 70 , 0.385370103 , 0.533324489 ), ( 70 , 0.38271202 , 0.557911017 ), ( 70 , 0.626047336 , 0.618562171 ), ( 70 , 0.654191445 , 0.683068761 ), ( 70 , 0.760278518 , 0.743304588 ), ( 70 , 0.628518474 , 0.734823367 ), ( 70 , 0.6534986 , 0.803397908 ), ( 70 , 0.490311988 , 0.653257944 ), ( 70 , 0.5145632 , 0.711396239 ), ( 70 , 0.447748948 , 0.704717443 ), ( 70 , 0.588505139 , 0.851411429 ), ( 70 , 0.53378386 , 0.817553628 ), ( 70 , 0.476724262 , 0.835949217 ), ( 70 , 0.454788101 , 0.841444693 ), ( 70 , 0.191423807 , 0.581383063 ), ( 70 , 0.245427741 , 0.614854989 ), ( 70 , 0.349424748 , 0.732516773 ), ( 70 , 0.26204736 , 0.780353404 ), ( 70 , 0.142766369 , 0.677949931 ), ( 70 , 0.100165873 , 0.676389961 ), ( 70 , 0.033295211 , 0.700710921 ), ( 70 , 0.168820705 , 0.819551143 ), ( 70 , 0.378404105 , 0.762562367 ), ( 70 , 0.339014977 , 0.778973657 ), ( 70 , 0.419106638 , 0.822301365 ), ( 70 , 0.261777307 , 0.83810556 ), ( 70 , 0.259787569 , 0.854620218 ), ( 70 , 0.307930119 , 0.890352779 ), ( 70 , 0.452837749 , 0.975243666 ), ( 70 , 0.416396844 , 0.978146985 ), ( 70 , 0.304874552 , 0.955379497 ), ( 70 , 0.280431215 , 0.946034976 ), ( 70 , 0.212429336 , 0.909329237 ), ( 70 , 0.154847144 , 0.94603009 ), ( 70 , 0.160452484 , 0.959186061 ), ( 70 , 0.112118904 , 0.959829787 ), ( 70 , 0.114312169 , 0.990979148 ), ( 70 , 0.027388382 , 1.019924784 ), ( 70 , 0.271093465 , 0.98311941 ), ( 70 , 0.277591292 , 1.028158052 ), ( 70 , 0.010012011 , 1.059468804 ), ( 70 , 0.837685603 , 0.805093012 ), ( 70 , 0.889201238 , 0.848304122 ), ( 70 , 0.718007045 , 0.817524866 ), ( 70 , 0.753400549 , 0.852006666 ), ( 70 , 0.674879421 , 0.87381172 ), ( 70 , 0.732705396 , 0.970636217 ), ( 70 , 0.61618015 , 0.951379883 ), ( 70 , 1.028759131 , 0.993420647 ), ( 70 , 1.0421041 , 1.002702732 ), ( 70 , 1.29702912 , 1.077795445 ), ( 70 , 1.372887725 , 1.101772119 ), ( 70 , 0.959880667 , 1.114731597 ), ( 70 , 1.191708416 , 1.180387987 ), ( 70 , 1.433354951 , 1.296906974 ), ( 70 , 0.468184208 , 1.012660432 ), ( 70 , 0.504898786 , 1.034516659 ), ( 70 , 0.609733477 , 1.047712131 ), ( 70 , 0.391730422 , 1.137449705 ), ( 70 , 0.635602265 , 1.074243613 ), ( 70 , 0.224414262 , 1.113191312 ), ( 70 , 0.195552024 , 1.172124384 ), ( 70 , 0.302020222 , 1.216259273 ), ( 70 , 0.334247181 , 1.292011457 ), ( 70 , 0.192198522 , 1.236099256 ), ( 70 , 0.89052597 , 1.294509871 ), ( 70 , 1.032377373 , 1.292941762 ), ( 70 , 1.079627567 , 1.302647854 ), ( 70 , 0.982270044 , 1.301015576 ), ( 70 , 0.674222129 , 1.338978101 ), ( 70 , 0.174497191 , 1.341652478 ), ( 70 , 0.27188774 , 1.428997886 ), ( 70 , 2.344091357 , 0.044066335 ), ( 70 , 2.211011533 , 0.133528725 ), ( 70 , 2.203553779 , 0.164517408 ), ( 70 , 2.174595065 , 0.159722956 ), ( 70 , 2.271294217 , 0.190661202 ), ( 70 , 2.326516146 , 0.303132668 ), ( 70 , 2.523166632 , 0.222290538 ), ( 70 , 2.556324102 , 0.326088465 ), ( 70 , 2.688972817 , 0.309627753 ), ( 70 , 2.488800292 , 0.380700448 ), ( 70 , 2.545452912 , 0.352436564 ), ( 70 , 2.575106213 , 0.428693894 ), ( 70 , 2.11862621 , 0.23569067 ), ( 70 , 2.112267011 , 0.238898641 ), ( 70 , 2.263505442 , 0.41337902 ), ( 70 , 2.251653909 , 0.419771934 ), ( 70 , 1.994439546 , 0.351788409 ), ( 70 , 2.157448965 , 0.361418987 ), ( 70 , 2.21072946 , 0.428192588 ), ( 70 , 2.461495046 , 0.452355099 ), ( 70 , 2.26687998 , 0.567501926 ), ( 70 , 2.271372677 , 0.580795191 ), ( 70 , 2.29348784 , 0.650854617 ), ( 70 , 2.372707588 , 0.676175153 ), ( 70 , 2.721949301 , 0.446242143 ), ( 70 , 2.984019259 , 0.64986929 ), ( 70 , 3.114712552 , 0.714057466 ), ( 70 , 3.062066691 , 0.719726897 ), ( 70 , 3.120601815 , 0.811051091 ), ( 70 , 3.135158032 , 0.833663934 ), ( 70 , 2.827490559 , 0.693630679 ), ( 70 , 3.001653203 , 0.777819671 ), ( 70 , 2.987023245 , 0.848329904 ), ( 70 , 2.590139378 , 0.610581028 ), ( 70 , 2.530557822 , 0.616729164 ), ( 70 , 2.560006312 , 0.78737874 ), ( 70 , 2.740403029 , 0.854582939 ), ( 70 , 2.847130107 , 0.917435246 ), ( 70 , 3.098993351 , 0.946888558 ), ( 70 , 2.700887 , 0.897194798 ), ( 70 , 2.864280152 , 1.003612124 ), ( 70 , 3.134367665 , 1.072758309 ), ( 70 , 2.950981707 , 1.046206305 ), ( 70 , 1.961369777 , 0.342663269 ), ( 70 , 1.974731765 , 0.373631401 ), ( 70 , 1.888545341 , 0.449399131 ), ( 70 , 2.0498628 , 0.458388937 ), ( 70 , 1.892964761 , 0.497313596 ), ( 70 , 1.964490821 , 0.712896583 ), ( 70 , 2.145132959 , 0.566406377 ), ( 70 , 2.181354952 , 0.696118671 ), ( 70 , 2.252608485 , 0.743157993 ), ( 70 , 1.75732961 , 0.568258759 ), ( 70 , 1.813096816 , 0.66174361 ), ( 70 , 1.713348102 , 0.615990455 ), ( 70 , 1.76785062 , 0.687087357 ), ( 70 , 1.648243992 , 0.688948705 ), ( 70 , 1.605018811 , 0.744656971 ), ( 70 , 1.746271097 , 0.773751937 ), ( 70 , 1.715489828 , 0.81116349 ), ( 70 , 1.654042678 , 0.827177913 ), ( 70 , 1.809755726 , 0.853554225 ), ( 70 , 1.884735433 , 0.868993669 ), ( 70 , 1.857319421 , 0.920785462 ), ( 70 , 2.004321703 , 0.881881863 ), ( 70 , 2.014972904 , 0.955843014 ), ( 70 , 1.919337809 , 1.034154411 ), ( 70 , 1.739250868 , 1.072985741 ), ( 70 , 1.684096605 , 1.022823083 ), ( 70 , 2.3260874 , 0.914386118 ), ( 70 , 2.484264984 , 0.981575066 ), ( 70 , 2.152695199 , 0.986590439 ), ( 70 , 2.676811966 , 1.012182665 ), ( 70 , 2.611749569 , 1.028898672 ), ( 70 , 2.10432813 , 1.064539952 ), ( 70 , 1.996397467 , 1.056598707 ), ( 70 , 2.037698528 , 1.117912656 ), ( 70 , 1.970481714 , 1.090859537 ), ( 70 , 2.430473928 , 1.345199713 ), ( 70 , 1.893333627 , 1.37449324 ), ( 70 , 3.906836384 , 0.118415404 ), ( 70 , 4.049491477 , 0.207028097 ), ( 70 , 3.825443386 , 0.224764224 ), ( 70 , 3.919436544 , 0.245003478 ), ( 70 , 4.205501265 , 0.310718971 ), ( 70 , 4.094004693 , 0.427985207 ), ( 70 , 3.707171862 , 0.272640392 ), ( 70 , 3.892626084 , 0.354139202 ), ( 70 , 3.650418773 , 0.277358843 ), ( 70 , 3.6525639 , 0.365712528 ), ( 70 , 3.623262372 , 0.37134946 ), ( 70 , 3.790713543 , 0.451234036 ), ( 70 , 3.679878018 , 0.392622699 ), ( 70 , 3.755737198 , 0.455103661 ), ( 70 , 3.943662591 , 0.472654193 ), ( 70 , 4.07066869 , 0.547317737 ), ( 70 , 4.017873558 , 0.54944839 ), ( 70 , 3.895976738 , 0.570564232 ), ( 70 , 4.360550118 , 0.384065816 ), ( 70 , 4.266331791 , 0.55512904 ), ( 70 , 4.213884045 , 0.562826787 ), ( 70 , 4.526692081 , 0.550098768 ), ( 70 , 4.5411624 , 0.570276628 ), ( 70 , 4.518808023 , 0.605760709 ), ( 70 , 4.487792838 , 0.611469739 ), ( 70 , 4.617777211 , 0.641361341 ), ( 70 , 4.71070659 , 0.754608835 ), ( 70 , 4.502236865 , 0.728327876 ), ( 70 , 4.354884938 , 0.690745392 ), ( 70 , 4.422417269 , 0.747395227 ), ( 70 , 4.659983587 , 0.830490826 ), ( 70 , 4.113202826 , 0.553420896 ), ( 70 , 4.261979848 , 0.69880433 ), ( 70 , 4.189655602 , 0.772817213 ), ( 70 , 4.014420824 , 0.715330355 ), ( 70 , 4.080427177 , 0.753420584 ), ( 70 , 4.036644631 , 0.821362216 ), ( 70 , 4.135434341 , 0.798189375 ), ( 70 , 4.09707764 , 0.819020464 ), ( 70 , 4.33253297 , 0.87514136 ), ( 70 , 4.507768402 , 0.944917143 ), ( 70 , 4.627750855 , 1.000256463 ), ( 70 , 4.257680864 , 0.929147685 ), ( 70 , 4.52075986 , 1.059662061 ), ( 70 , 4.626439598 , 1.111362598 ), ( 70 , 3.556903529 , 0.392707823 ), ( 70 , 3.648083124 , 0.500431671 ), ( 70 , 3.438467564 , 0.433389612 ), ( 70 , 3.397110366 , 0.494271042 ), ( 70 , 3.450360299 , 0.598655755 ), ( 70 , 3.737475285 , 0.562144021 ), ( 70 , 3.46040306 , 0.668049463 ), ( 70 , 3.459351919 , 0.74397824 ), ( 70 , 3.388762718 , 0.760126226 ), ( 70 , 3.229831293 , 0.661515904 ), ( 70 , 3.277177071 , 0.690836575 ), ( 70 , 3.526403265 , 0.882919943 ), ( 70 , 3.565749981 , 0.917920193 ), ( 70 , 3.63611413 , 0.913208342 ), ( 70 , 3.625882118 , 0.930100557 ), ( 70 , 3.655219895 , 0.940906347 ), ( 70 , 3.462831184 , 0.989743718 ), ( 70 , 3.237915387 , 1.074972168 ), ( 70 , 3.892322394 , 0.811163702 ), ( 70 , 4.052881372 , 1.002627459 ), ( 70 , 3.745992907 , 0.908152395 ), ( 70 , 4.002453927 , 1.095561928 ), ( 70 , 3.857446237 , 1.066361989 ), ( 70 , 4.204895598 , 1.03130712 ), ( 70 , 4.666432323 , 1.198858453 ), ( 70 , 4.160351768 , 1.139499165 ), ( 70 , 3.963303854 , 1.148231443 ), ( 70 , 4.426480021 , 1.229824655 ), ( 70 , 3.713292084 , 1.021865979 ), ( 70 , 3.276714497 , 1.150134097 ), ( 70 , 3.203078609 , 1.153825515 ), ( 70 , 4.206242819 , 1.276690788 ), ( 70 , 4.099946184 , 1.395975253 ), ( 70 , 4.05729588 , 1.435768074 ), ( 70 , 5.672461836 , 0.160305747 ), ( 70 , 5.419675959 , 0.113578469 ), ( 70 , 5.436485018 , 0.12879103 ), ( 70 , 5.480723634 , 0.161618673 ), ( 70 , 5.366547676 , 0.179803254 ), ( 70 , 5.723232461 , 0.336968481 ), ( 70 , 5.562233462 , 0.287614611 ), ( 70 , 5.67834628 , 0.382994008 ), ( 70 , 5.691168335 , 0.502327209 ), ( 70 , 5.300836755 , 0.18277771 ), ( 70 , 5.335253784 , 0.217175306 ), ( 70 , 5.247718917 , 0.21570046 ), ( 70 , 5.248062055 , 0.254516162 ), ( 70 , 5.434391974 , 0.315729707 ), ( 70 , 5.431375712 , 0.357607587 ), ( 70 , 5.345856441 , 0.375046053 ), ( 70 , 5.254467608 , 0.309530691 ), ( 70 , 5.249272009 , 0.319312995 ), ( 70 , 5.213035876 , 0.391463051 ), ( 70 , 5.326316924 , 0.388802597 ), ( 70 , 5.444536906 , 0.456891342 ), ( 70 , 5.625437869 , 0.498850221 ), ( 70 , 5.632223123 , 0.557771407 ), ( 70 , 5.419420486 , 0.546497674 ), ( 70 , 5.440156032 , 0.565832748 ), ( 70 , 5.496545959 , 0.677587594 ), ( 70 , 5.832324543 , 0.39960903 ), ( 70 , 5.984054944 , 0.460611442 ), ( 70 , 5.773728987 , 0.527146066 ), ( 70 , 5.803693699 , 0.614594578 ), ( 70 , 5.932153457 , 0.676287074 ), ( 70 , 6.066266991 , 0.567004869 ), ( 70 , 6.065667844 , 0.589355273 ), ( 70 , 6.048456018 , 0.64263344 ), ( 70 , 6.134908316 , 0.686601411 ), ( 70 , 6.13681588 , 0.704857714 ), ( 70 , 6.160301032 , 0.769218962 ), ( 70 , 6.078218421 , 0.734121767 ), ( 70 , 5.934537444 , 0.709825306 ), ( 70 , 6.002989375 , 0.773323748 ), ( 70 , 6.255146929 , 0.899239302 ), ( 70 , 5.718181991 , 0.56997678 ), ( 70 , 5.73931082 , 0.630867911 ), ( 70 , 5.688079011 , 0.668537544 ), ( 70 , 5.807848808 , 0.751024617 ), ( 70 , 5.62478386 , 0.784055211 ), ( 70 , 5.74685367 , 0.813191453 ), ( 70 , 5.78866834 , 0.904182678 ), ( 70 , 5.698707803 , 0.884431294 ), ( 70 , 5.928871505 , 0.773427139 ), ( 70 , 5.957718311 , 0.781076346 ), ( 70 , 5.950234034 , 0.827491502 ), ( 70 , 5.938683178 , 0.903355912 ), ( 70 , 5.94835712 , 0.984515929 ), ( 70 , 6.158525641 , 1.032646858 ), ( 70 , 6.252995873 , 1.059492955 ), ( 70 , 6.004182316 , 1.015709514 ), ( 70 , 6.031944799 , 1.044626136 ), ( 70 , 5.113946774 , 0.365286814 ), ( 70 , 5.1361145 , 0.384075887 ), ( 70 , 5.162334141 , 0.429282204 ), ( 70 , 5.034793782 , 0.44957646 ), ( 70 , 5.114217539 , 0.446745486 ), ( 70 , 5.057505004 , 0.475798654 ), ( 70 , 5.18369061 , 0.48644195 ), ( 70 , 5.224618653 , 0.500801492 ), ( 70 , 5.252240445 , 0.523414334 ), ( 70 , 5.221562896 , 0.540135569 ), ( 70 , 5.186673355 , 0.513166772 ), ( 70 , 5.210515761 , 0.589593044 ), ( 70 , 4.979860126 , 0.495883169 ), ( 70 , 5.012873735 , 0.528851267 ), ( 70 , 5.043703595 , 0.541660391 ), ( 70 , 4.969178576 , 0.52677515 ), ( 70 , 4.963515102 , 0.575778197 ), ( 70 , 4.970019471 , 0.578003386 ), ( 70 , 4.975967415 , 0.588905362 ), ( 70 , 5.012381995 , 0.606681323 ), ( 70 , 5.078766864 , 0.571140652 ), ( 70 , 5.193795154 , 0.630031411 ), ( 70 , 5.131810089 , 0.614594122 ), ( 70 , 5.084590959 , 0.650047797 ), ( 70 , 5.136910659 , 0.673596691 ), ( 70 , 5.298426261 , 0.526692686 ), ( 70 , 5.358444544 , 0.591455831 ), ( 70 , 5.231020788 , 0.619553766 ), ( 70 , 5.251215186 , 0.628756619 ), ( 70 , 5.266983248 , 0.642746285 ), ( 70 , 5.248104938 , 0.659958386 ), ( 70 , 5.287430731 , 0.703891314 ), ( 70 , 5.414396477 , 0.71911906 ), ( 70 , 5.352618016 , 0.689334083 ), ( 70 , 5.344256824 , 0.700813499 ), ( 70 , 5.346949376 , 0.743601856 ), ( 70 , 5.282848867 , 0.719896841 ), ( 70 , 5.162137001 , 0.698083588 ), ( 70 , 5.302688929 , 0.798331848 ), ( 70 , 5.214551218 , 0.829748319 ), ( 70 , 4.927934663 , 0.588195678 ), ( 70 , 4.961866554 , 0.636519447 ), ( 70 , 4.910316201 , 0.63821933 ), ( 70 , 4.866670357 , 0.678842614 ), ( 70 , 5.063428011 , 0.696843102 ), ( 70 , 5.074572573 , 0.750041049 ), ( 70 , 4.977833947 , 0.737428653 ), ( 70 , 4.992785247 , 0.765859391 ), ( 70 , 4.956530852 , 0.771934298 ), ( 70 , 4.761330843 , 0.682433651 ), ( 70 , 4.748885488 , 0.769912876 ), ( 70 , 4.899336916 , 0.830348715 ), ( 70 , 5.087723584 , 0.785627276 ), ( 70 , 5.188288603 , 0.938420796 ), ( 70 , 5.176697029 , 0.949557208 ), ( 70 , 5.068446646 , 0.91414261 ), ( 70 , 5.036769484 , 0.976345781 ), ( 70 , 4.946895861 , 1.047509178 ), ( 70 , 5.477894032 , 0.756898779 ), ( 70 , 5.576540374 , 0.817814751 ), ( 70 , 5.45892151 , 0.897405418 ), ( 70 , 5.67196425 , 0.898439497 ), ( 70 , 5.602362369 , 0.901588325 ), ( 70 , 5.692622699 , 1.016233121 ), ( 70 , 5.63318245 , 1.037047668 ), ( 70 , 5.497033828 , 0.963736337 ), ( 70 , 5.384068033 , 1.077626813 ), ( 70 , 5.774198834 , 0.957838069 ), ( 70 , 5.892860297 , 1.075537275 ), ( 70 , 5.747780837 , 1.069804609 ), ( 70 , 5.854990419 , 1.10200272 ), ( 70 , 5.802090583 , 1.119145969 ), ( 70 , 5.949088187 , 1.093822696 ), ( 70 , 6.054989787 , 1.145229157 ), ( 70 , 6.128711735 , 1.114445247 ), ( 70 , 5.968512073 , 1.135548973 ), ( 70 , 5.683940718 , 1.112138239 ), ( 70 , 5.70832514 , 1.137444006 ), ( 70 , 5.6312963 , 1.191942943 ), ( 70 , 5.973491292 , 1.196784172 ), ( 70 , 5.204549298 , 1.120080562 ), ( 70 , 5.422774724 , 1.157620077 ), ( 70 , 5.266531252 , 1.157290585 ), ( 70 , 5.184426203 , 1.226425876 ), ( 70 , 4.735023976 , 1.168421194 ), ( 70 , 5.145101643 , 1.198215394 ), ( 70 , 5.056806701 , 1.283712861 ), ( 70 , 4.943712307 , 1.252925314 ), ( 70 , 4.72481315 , 1.322793557 ), ( 70 , 5.729915329 , 1.256455729 ), ( 70 , 5.539611115 , 1.312970417 ), ( 70 , 5.596743552 , 1.336154235 ), ( 70 , 5.481260461 , 1.321565971 ), ( 70 , 5.550435086 , 1.331864885 ), ( 70 , 6.159558655 , 1.358211435 ), ( 70 , 6.100048122 , 1.394070691 ), ( 70 , 5.931587216 , 1.420560839 ), ( 70 , 5.294100129 , 1.390178553 ), ( 70 , 5.513517586 , 1.416528818 ), ( 70 , 5.345312089 , 1.451814146 ), ( 70 , 0.015011941 , -0.632701944 ), ( 70 , 0.17695994 , -0.513489838 ), ( 70 , 0.123192988 , -0.506851446 ), ( 70 , 0.018321269 , -0.52595308 ), ( 70 , 6.251250321 , -0.436071886 ), ( 70 , 0.142489948 , -0.442617052 ), ( 70 , 0.25145704 , -0.331587962 ), ( 70 , 0.062589314 , -0.369985169 ), ( 70 , 0.087485921 , -0.308931686 ), ( 70 , 0.184329572 , -0.206037192 ), ( 70 , 6.042486611 , -0.473614278 ), ( 70 , 6.145389963 , -0.443674248 ), ( 70 , 6.10208393 , -0.328846669 ), ( 70 , 6.143304075 , -0.267022953 ), ( 70 , 6.138983869 , -0.266123446 ), ( 70 , 0.009972617 , -0.233999932 ), ( 70 , 0.124600458 , -0.196128214 ), ( 70 , 6.162895531 , -0.191964163 ), ( 70 , 0.048701407 , -0.057970607 ), ( 70 , 0.008921607 , -0.048279192 ), ( 70 , 0.322977735 , -0.235183667 ), ( 70 , 0.38514645 , -0.213736093 ), ( 70 , 0.559949255 , -0.175253545 ), ( 70 , 0.223971597 , -0.164156582 ), ( 70 , 0.439704772 , -0.045766153 ), ( 70 , 0.354705916 , -0.107508252 ), ( 70 , 0.524671071 , -0.058789814 ), ( 70 , 0.677745492 , -0.062197325 ), ( 70 , 0.740159731 , 0.016070694 ), ( 70 , 0.536134862 , -0.041504247 ), ( 70 , 0.556604162 , -0.01081777 ), ( 70 , 0.413731425 , 0.016456447 ), ( 70 , 0.53684105 , 0.058636287 ), ( 70 , 0.523490304 , 0.105336991 ), ( 70 , 0.150320268 , -0.11352488 ), ( 70 , 0.060179968 , 0.024146448 ), ( 70 , 0.456397801 , 0.056262975 ), ( 70 , 0.461334394 , 0.064004025 ), ( 70 , 0.46753872 , 0.189266362 ), ( 70 , 0.254491062 , 0.119454946 ), ( 70 , 0.290708816 , 0.145905448 ), ( 70 , 0.273634867 , 0.159397321 ), ( 70 , 0.298293749 , 0.17293064 ), ( 70 , 0.315541173 , 0.214351894 ), ( 70 , 0.361696109 , 0.198377296 ), ( 70 , 0.354834699 , 0.201354151 ), ( 70 , 0.433103034 , 0.249326752 ), ( 70 , 0.433075695 , 0.290166832 ), ( 70 , 0.401668614 , 0.295761246 ), ( 70 , 5.940349536 , -0.213454127 ), ( 70 , 5.876067345 , -0.195970531 ), ( 70 , 5.961332237 , -0.194892577 ), ( 70 , 5.934721243 , -0.163343955 ), ( 70 , 5.992838007 , -0.104517051 ), ( 70 , 5.797954126 , -0.232138269 ), ( 70 , 5.866928826 , -0.020706719 ), ( 70 , 6.167463714 , -0.076818449 ), ( 70 , 6.150125771 , -0.018082738 ), ( 70 , 6.138005439 , 0.043257919 ), ( 70 , 5.910550061 , 0.010378705 ), ( 70 , 6.121252315 , 0.049187154 ), ( 70 , 6.127302752 , 0.064844782 ), ( 70 , 6.070406464 , 0.087341637 ), ( 70 , 5.700819267 , -0.038617435 ), ( 70 , 5.861948806 , 0.01062191 ), ( 70 , 5.53191035 , 0.020131256 ), ( 70 , 5.536440975 , 0.031197519 ), ( 70 , 5.553439745 , 0.046121983 ), ( 70 , 5.946703424 , 0.086722969 ), ( 70 , 5.962388585 , 0.13234698 ), ( 70 , 5.987990141 , 0.181761384 ), ( 70 , 5.792412154 , 0.168790287 ), ( 70 , 5.853305982 , 0.250803245 ), ( 70 , 5.866120068 , 0.283839108 ), ( 70 , 6.269177623 , 0.082469764 ), ( 70 , 0.112135882 , 0.134230009 ), ( 70 , 0.149145917 , 0.179735965 ), ( 70 , 6.171583109 , 0.095479177 ), ( 70 , 6.176051473 , 0.148695464 ), ( 70 , 6.174892238 , 0.220987819 ), ( 70 , 0.143691823 , 0.282174798 ), ( 70 , 0.329303295 , 0.356298017 ), ( 70 , 6.023742689 , 0.235068585 ), ( 70 , 6.167938641 , 0.311000155 ), ( 70 , 6.218022327 , 0.373319748 ), ( 70 , 5.985472536 , 0.263298798 ), ( 70 , 6.05378172 , 0.359213191 ), ( 70 , 6.167429117 , 0.424857022 ), ( 70 , 6.133341161 , 0.435522702 ), ( 70 , 6.088511407 , 0.44806696 ), ( 70 , 6.228595446 , 0.446445883 ), ( 70 , 0.099631678 , 0.51407302 ), ( 70 , 6.176279871 , 0.541382653 ), ( 70 , 6.266283659 , 0.584464979 ), ( 70 , 1.539359541 , -0.672406893 ), ( 70 , 1.569249167 , -0.61701379 ), ( 70 , 1.729904573 , -0.55652766 ), ( 70 , 1.634084681 , -0.516692016 ), ( 70 , 1.713794694 , -0.478285344 ), ( 70 , 1.45416575 , -0.598717542 ), ( 70 , 1.430481398 , -0.565797855 ), ( 70 , 1.436017829 , -0.525634871 ), ( 70 , 1.645905507 , -0.42018433 ), ( 70 , 1.600222803 , -0.435048177 ), ( 70 , 1.535476886 , -0.440161984 ), ( 70 , 1.552826404 , -0.378564386 ), ( 70 , 1.82827503 , -0.462065484 ), ( 70 , 1.839837979 , -0.410176849 ), ( 70 , 1.7560605 , -0.405484287 ), ( 70 , 1.792792197 , -0.364954493 ), ( 70 , 1.773388735 , -0.346935088 ), ( 70 , 1.920211056 , -0.361355086 ), ( 70 , 1.938580887 , -0.320230101 ), ( 70 , 1.915771012 , -0.300434132 ), ( 70 , 1.836375483 , -0.339369037 ), ( 70 , 1.844911124 , -0.291458964 ), ( 70 , 1.699192829 , -0.394287722 ), ( 70 , 1.704497066 , -0.389588939 ), ( 70 , 1.645550041 , -0.390508539 ), ( 70 , 1.722479396 , -0.358794695 ), ( 70 , 1.700089363 , -0.296903263 ), ( 70 , 1.677051872 , -0.28317308 ), ( 70 , 1.672492172 , -0.258927237 ), ( 70 , 1.778512719 , -0.305581142 ), ( 70 , 1.801033032 , -0.282956367 ), ( 70 , 1.754033395 , -0.279378232 ), ( 70 , 1.782226941 , -0.224111261 ), ( 70 , 1.458499617 , -0.328332346 ), ( 70 , 1.418080446 , -0.338138885 ), ( 70 , 1.265858882 , -0.275840999 ), ( 70 , 1.326207029 , -0.254053613 ), ( 70 , 1.336788387 , -0.256503083 ), ( 70 , 1.692897921 , -0.229695741 ), ( 70 , 1.658558238 , -0.137394449 ), ( 70 , 1.649956478 , -0.11737565 ), ( 70 , 1.434258113 , -0.146200126 ), ( 70 , 1.477691648 , -0.147846749 ), ( 70 , 1.465646287 , -0.098234062 ), ( 70 , 1.473112724 , -0.086116597 ), ( 70 , 1.591362059 , -0.027586074 ), ( 70 , 1.936856871 , -0.303924446 ), ( 70 , 1.946296723 , -0.273434555 ), ( 70 , 2.031033837 , -0.256324284 ), ( 70 , 1.991669898 , -0.254732228 ), ( 70 , 1.864715723 , -0.174273456 ), ( 70 , 1.947880652 , -0.176095325 ), ( 70 , 1.817688009 , -0.145451663 ), ( 70 , 1.874214135 , -0.105486375 ), ( 70 , 1.920356055 , -0.06832109 ), ( 70 , 2.142271289 , -0.117768354 ), ( 70 , 2.116109202 , -0.061012161 ), ( 70 , 2.292254875 , -0.045398212 ), ( 70 , 2.310887403 , 0.025873323 ), ( 70 , 2.270242166 , 0.03350868 ), ( 70 , 2.00253036 , -0.004546542 ), ( 70 , 2.103666351 , 0.051672269 ), ( 70 , 1.797094187 , -0.037979188 ), ( 70 , 1.732656182 , -0.038031556 ), ( 70 , 1.948523416 , -0.00819567 ), ( 70 , 1.881431194 , 0.055703751 ), ( 70 , 1.7646298 , 0.054830745 ), ( 70 , 1.76955067 , 0.080182029 ), ( 70 , 1.719759428 , 0.050597148 ), ( 70 , 2.037703944 , 0.08595859 ), ( 70 , 2.054289231 , 0.102267812 ), ( 70 , 2.139334356 , 0.160013603 ), ( 70 , 2.125408362 , 0.174186665 ), ( 70 , 2.076041374 , 0.182271549 ), ( 70 , 1.869126676 , 0.137555352 ), ( 70 , 1.875574954 , 0.162469101 ), ( 70 , 1.316822607 , -0.190829825 ), ( 70 , 1.322228148 , -0.151201004 ), ( 70 , 1.295817736 , -0.147634916 ), ( 70 , 1.077765281 , -0.1745583 ), ( 70 , 1.078884001 , -0.170307524 ), ( 70 , 1.103649189 , -0.111511332 ), ( 70 , 1.261983835 , -0.08703033 ), ( 70 , 1.101034908 , -0.076972931 ), ( 70 , 1.159158962 , -0.024627358 ), ( 70 , 1.325207253 , -0.044330002 ), ( 70 , 1.368560521 , -0.063216391 ), ( 70 , 1.404865248 , -0.051725681 ), ( 70 , 1.466531814 , -0.077244362 ), ( 70 , 1.484963452 , -0.059813983 ), ( 70 , 1.455728377 , -0.06044448 ), ( 70 , 1.472971029 , -0.024821006 ), ( 70 , 1.26072619 , 0.064395902 ), ( 70 , 1.4379718 , 0.054941699 ), ( 70 , 1.311364591 , 0.06308776 ), ( 70 , 0.959004092 , -0.118281397 ), ( 70 , 0.833062541 , 0.040415793 ), ( 70 , 0.872795839 , 0.025894428 ), ( 70 , 1.024108687 , 0.036478141 ), ( 70 , 1.012306346 , 0.114051817 ), ( 70 , 1.169758393 , 0.142327101 ), ( 70 , 1.28691555 , 0.150097768 ), ( 70 , 1.34290094 , 0.190154814 ), ( 70 , 1.060262672 , 0.160698225 ), ( 70 , 1.072036187 , 0.175181377 ), ( 70 , 1.134103677 , 0.288369162 ), ( 70 , 1.200085311 , 0.300217838 ), ( 70 , 1.1759546 , 0.311767162 ), ( 70 , 1.193576613 , 0.31445052 ), ( 70 , 1.563053918 , 0.032399335 ), ( 70 , 1.623221505 , 0.118356042 ), ( 70 , 1.584612121 , 0.133118816 ), ( 70 , 1.568447907 , 0.146875795 ), ( 70 , 1.750390296 , 0.165212095 ), ( 70 , 1.623063547 , 0.12900252 ), ( 70 , 1.602029904 , 0.159969476 ), ( 70 , 1.68286173 , 0.195821675 ), ( 70 , 1.655549686 , 0.234465075 ), ( 70 , 1.476383725 , 0.148130731 ), ( 70 , 1.55988343 , 0.245400228 ), ( 70 , 1.496474009 , 0.247460381 ), ( 70 , 1.504855584 , 0.280753742 ), ( 70 , 1.734695314 , 0.212556403 ), ( 70 , 1.856933355 , 0.252602611 ), ( 70 , 1.682938337 , 0.245963602 ), ( 70 , 1.773044452 , 0.328778052 ), ( 70 , 1.816341844 , 0.309566474 ), ( 70 , 1.822625343 , 0.312448518 ), ( 70 , 1.810541983 , 0.376491331 ), ( 70 , 1.864370904 , 0.421816086 ), ( 70 , 1.680294367 , 0.296613126 ), ( 70 , 1.711723896 , 0.310316033 ), ( 70 , 1.68497162 , 0.327351031 ), ( 70 , 1.703284651 , 0.393481903 ), ( 70 , 1.655102777 , 0.409618263 ), ( 70 , 1.76496804 , 0.361160637 ), ( 70 , 1.809525417 , 0.423153085 ), ( 70 , 1.769697451 , 0.482989001 ), ( 70 , 1.431837429 , 0.286908484 ), ( 70 , 1.531862798 , 0.323780561 ), ( 70 , 1.508212471 , 0.36119606 ), ( 70 , 1.447110406 , 0.318415177 ), ( 70 , 1.440990859 , 0.358691407 ), ( 70 , 1.455224438 , 0.42984888 ), ( 70 , 1.362911022 , 0.4617023 ), ( 70 , 1.518155129 , 0.430865627 ), ( 70 , 1.602795367 , 0.465691166 ), ( 70 , 1.586352966 , 0.463020169 ), ( 70 , 1.571155552 , 0.49088459 ), ( 70 , 1.667067652 , 0.522972075 ), ( 70 , 1.496492429 , 0.581445743 ), ( 70 , 1.572579613 , 0.60227573 ), ( 70 , 1.639073097 , 0.630914332 ), ( 70 , 1.6032184 , 0.633111941 ), ( 70 , 1.514111868 , 0.598854228 ), ( 70 , 3.177902747 , -0.605191163 ), ( 70 , 3.290791246 , -0.560122301 ), ( 70 , 3.279668948 , -0.540736445 ), ( 70 , 3.284857091 , -0.524379475 ), ( 70 , 3.251669888 , -0.453542979 ), ( 70 , 3.219803697 , -0.419112995 ), ( 70 , 3.062904145 , -0.425615611 ), ( 70 , 3.388131531 , -0.461821804 ), ( 70 , 3.350542499 , -0.436603696 ), ( 70 , 3.395362293 , -0.402389501 ), ( 70 , 3.379406328 , -0.350777125 ), ( 70 , 3.333286926 , -0.229371163 ), ( 70 , 3.000332384 , -0.45135398 ), ( 70 , 3.182976376 , -0.206965141 ), ( 70 , 3.304577131 , -0.144870004 ), ( 70 , 3.052167292 , -0.230127955 ), ( 70 , 3.019169315 , -0.112942236 ), ( 70 , 3.191193438 , -0.047117293 ), ( 70 , 3.133344543 , -0.076271234 ), ( 70 , 3.57781664 , -0.287047289 ), ( 70 , 3.598621725 , -0.248297288 ), ( 70 , 3.539597849 , -0.234725117 ), ( 70 , 3.647238249 , -0.170260362 ), ( 70 , 3.492096546 , -0.197295317 ), ( 70 , 3.479545305 , -0.184065605 ), ( 70 , 3.738602339 , -0.09850779 ), ( 70 , 3.754545968 , 0.003164541 ), ( 70 , 3.647764905 , -0.063915998 ), ( 70 , 3.61565905 , -0.049576644 ), ( 70 , 3.70649897 , 0.048826934 ), ( 70 , 3.314020457 , -0.106475567 ), ( 70 , 3.387872202 , -0.016667536 ), ( 70 , 3.384365263 , 0.000964476 ), ( 70 , 3.392199052 , 0.024920552 ), ( 70 , 3.30680128 , 0.074846546 ), ( 70 , 3.682411095 , 0.196912808 ), ( 70 , 3.629611591 , 0.208346588 ), ( 70 , 3.442019531 , 0.090801035 ), ( 70 , 3.472252614 , 0.138806171 ), ( 70 , 3.402371933 , 0.166260001 ), ( 70 , 2.568792613 , -0.173114033 ), ( 70 , 2.601119932 , -0.133435443 ), ( 70 , 2.732784231 , -0.112177289 ), ( 70 , 2.708474534 , -0.093935711 ), ( 70 , 2.924367716 , -0.128990402 ), ( 70 , 2.891192888 , -0.061308533 ), ( 70 , 2.867267928 , -0.005448631 ), ( 70 , 2.566555891 , -0.126463523 ), ( 70 , 2.464783366 , -0.07475673 ), ( 70 , 2.650959433 , 0.016026854 ), ( 70 , 2.484075677 , -0.055246221 ), ( 70 , 2.421061825 , -0.02770108 ), ( 70 , 2.432768031 , 0.009681675 ), ( 70 , 2.592298337 , 0.086315398 ), ( 70 , 2.747582994 , 0.026009972 ), ( 70 , 2.731339704 , 0.051123876 ), ( 70 , 2.600175103 , 0.133989304 ), ( 70 , 3.133879758 , 0.060772036 ), ( 70 , 3.19251485 , 0.070790018 ), ( 70 , 3.292190545 , 0.134991017 ), ( 70 , 2.994550857 , 0.151135319 ), ( 70 , 3.146952932 , 0.216033505 ), ( 70 , 3.126087345 , 0.247594534 ), ( 70 , 3.475867001 , 0.329925152 ), ( 70 , 3.453737316 , 0.382550029 ), ( 70 , 3.416437475 , 0.395097476 ), ( 70 , 3.255277153 , 0.276879181 ), ( 70 , 3.344668329 , 0.421384201 ), ( 70 , 2.917663784 , 0.300190124 ), ( 70 , 3.054994028 , 0.413785677 ), ( 70 , 2.896126843 , 0.449853515 ), ( 70 , 2.910683098 , 0.445705142 ), ( 70 , 2.957192325 , 0.477560405 ), ( 70 , 3.192943948 , 0.407051745 ), ( 70 , 3.321050447 , 0.531229518 ), ( 70 , 3.074970067 , 0.500390025 ), ( 70 , 3.014672529 , 0.496573777 ), ( 70 , 2.991648806 , 0.523378946 ), ( 70 , 3.069683207 , 0.554347992 ), ( 70 , 4.673566718 , -0.616925745 ), ( 70 , 4.687815739 , -0.608744262 ), ( 70 , 4.647092901 , -0.620149341 ), ( 70 , 4.682753689 , -0.559070423 ), ( 70 , 4.8052146 , -0.540032605 ), ( 70 , 4.881239871 , -0.524086418 ), ( 70 , 4.839792699 , -0.510680783 ), ( 70 , 4.874071651 , -0.497663276 ), ( 70 , 4.778210467 , -0.520511744 ), ( 70 , 4.804921591 , -0.455269459 ), ( 70 , 4.640771636 , -0.570073836 ), ( 70 , 4.578066165 , -0.550377269 ), ( 70 , 4.539861843 , -0.51252003 ), ( 70 , 4.725064286 , -0.485667221 ), ( 70 , 4.6702912 , -0.472320437 ), ( 70 , 4.729612883 , -0.424333955 ), ( 70 , 4.707826277 , -0.393005516 ), ( 70 , 4.92127087 , -0.353857579 ), ( 70 , 5.035913103 , -0.385032391 ), ( 70 , 5.053524341 , -0.329237286 ), ( 70 , 4.944120367 , -0.325277378 ), ( 70 , 4.849013174 , -0.330044749 ), ( 70 , 4.922681329 , -0.256712214 ), ( 70 , 4.503737812 , -0.471988632 ), ( 70 , 4.474608958 , -0.385243997 ), ( 70 , 4.594505475 , -0.305360169 ), ( 70 , 4.428103902 , -0.410372679 ), ( 70 , 4.436624609 , -0.404047617 ), ( 70 , 4.636776971 , -0.271560733 ), ( 70 , 4.809167998 , -0.130880316 ), ( 70 , 4.750151602 , -0.050743673 ), ( 70 , 5.096744817 , -0.320431403 ), ( 70 , 5.078104329 , -0.300126974 ), ( 70 , 5.103485835 , -0.220728843 ), ( 70 , 5.193066728 , -0.174656541 ), ( 70 , 5.134955207 , -0.177284056 ), ( 70 , 4.969921307 , -0.219698278 ), ( 70 , 5.061658954 , -0.115682304 ), ( 70 , 5.271445655 , -0.118009084 ), ( 70 , 5.302205278 , -0.061156971 ), ( 70 , 5.436788878 , -0.00594198 ), ( 70 , 5.361801145 , -0.030278728 ), ( 70 , 5.317263577 , 0.011188655 ), ( 70 , 5.223861689 , 0.006144614 ), ( 70 , 5.23044513 , 0.029081222 ), ( 70 , 5.290896713 , 0.015118987 ), ( 70 , 5.237533767 , 0.058151271 ), ( 70 , 5.261878965 , 0.083348377 ), ( 70 , 4.915771132 , -0.141716059 ), ( 70 , 4.907345112 , -0.114077466 ), ( 70 , 4.893801096 , -0.054426907 ), ( 70 , 4.93530616 , -0.056924304 ), ( 70 , 4.87599603 , -0.050963439 ), ( 70 , 4.988683006 , 0.010054487 ), ( 70 , 5.026786631 , 0.045772165 ), ( 70 , 4.849253288 , -0.008412035 ), ( 70 , 4.874519594 , 0.016603274 ), ( 70 , 4.881092485 , 0.084726439 ), ( 70 , 4.871577592 , 0.086479346 ), ( 70 , 4.846281081 , 0.07872817 ), ( 70 , 5.229635619 , 0.138244078 ), ( 70 , 5.218353267 , 0.178149545 ), ( 70 , 5.248514757 , 0.19044457 ), ( 70 , 5.160787067 , 0.146313326 ), ( 70 , 4.999475042 , 0.114254417 ), ( 70 , 5.036603674 , 0.204425953 ), ( 70 , 5.132116031 , 0.212258731 ), ( 70 , 5.089968883 , 0.206843242 ), ( 70 , 5.013438556 , 0.2579746 ), ( 70 , 5.032029841 , 0.262420886 ), ( 70 , 5.123901802 , 0.283877045 ), ( 70 , 5.09682489 , 0.311479335 ), ( 70 , 4.288683705 , -0.297041004 ), ( 70 , 4.329001508 , -0.216974143 ), ( 70 , 4.318849159 , -0.194247776 ), ( 70 , 4.348146822 , -0.154532011 ), ( 70 , 4.247369666 , -0.070714845 ), ( 70 , 4.563996774 , -0.114876486 ), ( 70 , 4.590051527 , 0.000740998 ), ( 70 , 4.416249947 , -0.04883972 ), ( 70 , 4.495352612 , 0.00840615 ), ( 70 , 4.357033327 , -0.021495613 ), ( 70 , 4.527451365 , 0.030411496 ), ( 70 , 4.529486137 , 0.054933598 ), ( 70 , 4.507258669 , 0.135254506 ), ( 70 , 4.196139416 , -0.065680774 ), ( 70 , 4.231070365 , 0.014306275 ), ( 70 , 4.32559081 , 0.022845447 ), ( 70 , 4.3658794 , 0.073428328 ), ( 70 , 4.369882751 , 0.085027315 ), ( 70 , 4.319045042 , 0.104210201 ), ( 70 , 4.438967696 , 0.108407775 ), ( 70 , 4.456261484 , 0.129650074 ), ( 70 , 4.300838629 , 0.1635455 ), ( 70 , 4.215178062 , 0.232491572 ), ( 70 , 4.703007808 , 0.039332115 ), ( 70 , 4.736927669 , 0.081244208 ), ( 70 , 4.677487442 , 0.07831801 ), ( 70 , 4.888565689 , 0.154783024 ), ( 70 , 4.843079674 , 0.182968547 ), ( 70 , 4.790353397 , 0.207305029 ), ( 70 , 4.795727604 , 0.212812594 ), ( 70 , 4.669424549 , 0.17187969 ), ( 70 , 4.606998269 , 0.210260094 ), ( 70 , 4.643911791 , 0.240578182 ), ( 70 , 4.933868772 , 0.191574891 ), ( 70 , 4.954434839 , 0.230776296 ), ( 70 , 4.985704115 , 0.254241889 ), ( 70 , 4.872529959 , 0.269622383 ), ( 70 , 4.868981444 , 0.296272781 ), ( 70 , 4.913429477 , 0.322672519 ), ( 70 , 4.995504204 , 0.274644649 ), ( 70 , 5.070463947 , 0.309853862 ), ( 70 , 4.979842903 , 0.375486974 ), ( 70 , 5.022945135 , 0.409801831 ), ( 70 , 5.011836115 , 0.422008537 ), ( 70 , 4.981089669 , 0.436785628 ), ( 70 , 4.83353695 , 0.43105242 ), ( 70 , 4.584030151 , 0.305810728 ), ( 70 , 4.587210261 , 0.340716104 ), ( 70 , 4.510166136 , 0.374047356 ), ( 70 , 4.541248175 , 0.375585996 ), ( 70 , 4.548603095 , 0.434206501 ), ( 70 , 4.49981527 , 0.423288141 ), ( 70 , 4.535227687 , 0.489143888 ), ( 70 , 4.739807485 , 0.42609948 ), ( 70 , 4.762710387 , 0.446128671 ), ( 70 , 4.654252044 , 0.449402137 ), ( 70 , 4.729419995 , 0.465145164 ), ( 70 , 4.827960468 , 0.461831093 ), ( 70 , 4.875919909 , 0.516364232 ), ( 70 , 4.781723413 , 0.530579411 ), ( 70 , 4.753223854 , 0.522763416 ), ( 70 , 4.543285943 , 0.545537283 ), ( 70 , 4.602245808 , 0.60653009 ), ( 70 , 1.483433615 , -1.499487132 ), ( 70 , 0.508948567 , -1.422427249 ), ( 70 , 1.130551827 , -1.387900228 ), ( 70 , 0.527828009 , -1.376553482 ), ( 70 , 0.66883431 , -1.324588447 ), ( 70 , 0.830461023 , -1.296695065 ), ( 70 , 0.949797176 , -1.305900405 ), ( 70 , 0.67082527 , -1.262731868 ), ( 70 , 0.693276357 , -1.233595549 ), ( 70 , 1.196673508 , -1.277727364 ), ( 70 , 1.491004912 , -1.176399107 ), ( 70 , 1.271218081 , -1.188032211 ), ( 70 , 0.936553125 , -1.091827675 ), ( 70 , 1.047154192 , -1.080268613 ), ( 70 , 0.221972544 , -1.24182224 ), ( 70 , 0.531620662 , -1.110419858 ), ( 70 , 0.333769862 , -1.176890487 ), ( 70 , 0.356969279 , -1.158622306 ), ( 70 , 0.410132005 , -1.090415688 ), ( 70 , 0.762712182 , -1.117036136 ), ( 70 , 0.850351554 , -1.038706474 ), ( 70 , 0.996645621 , -0.947603019 ), ( 70 , 0.936881879 , -0.948096378 ), ( 70 , 0.737334264 , -0.786970068 ), ( 70 , 1.443139829 , -0.997631938 ), ( 70 , 1.252776119 , -1.032135294 ), ( 70 , 1.152781483 , -0.996091833 ), ( 70 , 1.15844834 , -0.926972605 ), ( 70 , 1.238426993 , -0.843431186 ), ( 70 , 1.229462761 , -0.824826891 ), ( 70 , 1.540949347 , -0.836973571 ), ( 70 , 1.535553493 , -0.71742129 ), ( 70 , 1.28311401 , -0.6660667 ), ( 70 , 1.375084269 , -0.639713157 ), ( 70 , 1.412182038 , -0.651647031 ), ( 70 , 1.07711347 , -0.866177995 ), ( 70 , 0.967603165 , -0.833840114 ), ( 70 , 1.101862196 , -0.774371134 ), ( 70 , 1.080463467 , -0.646853248 ), ( 70 , 0.958877124 , -0.704276892 ), ( 70 , 0.832141545 , -0.681576809 ), ( 70 , 1.056231795 , -0.601829162 ), ( 70 , 1.000762871 , -0.629932584 ), ( 70 , 0.946223588 , -0.589582391 ), ( 70 , 1.163385445 , -0.707368825 ), ( 70 , 1.306034765 , -0.562676117 ), ( 70 , 1.240298268 , -0.481327814 ), ( 70 , 1.195740145 , -0.49654459 ), ( 70 , 1.176111365 , -0.458596808 ), ( 70 , 1.18681215 , -0.361277344 ), ( 70 , 0.157163063 , -1.042264491 ), ( 70 , 0.073795212 , -0.918913634 ), ( 70 , 0.235570629 , -0.851568975 ), ( 70 , 0.299169882 , -0.81450716 ), ( 70 , 0.512277261 , -0.629317898 ), ( 70 , 0.108083702 , -0.890914349 ), ( 70 , 0.159912738 , -0.857537008 ), ( 70 , 0.03989771 , -0.875576577 ), ( 70 , 0.059998994 , -0.849701958 ), ( 70 , 0.343551067 , -0.756301113 ), ( 70 , 0.22632851 , -0.76286572 ), ( 70 , 0.367437712 , -0.555232654 ), ( 70 , 0.379956528 , -0.527720558 ), ( 70 , 0.381440416 , -0.355203062 ), ( 70 , 0.735287238 , -0.589629822 ), ( 70 , 0.762823874 , -0.585117603 ), ( 70 , 0.875911836 , -0.458791798 ), ( 70 , 0.710528392 , -0.491334387 ), ( 70 , 1.022283571 , -0.482908368 ), ( 70 , 0.994765939 , -0.459520308 ), ( 70 , 0.984153203 , -0.452310261 ), ( 70 , 0.914493277 , -0.409724287 ), ( 70 , 0.915502978 , -0.39279242 ), ( 70 , 0.882583478 , -0.368269845 ), ( 70 , 0.842144952 , -0.349528568 ), ( 70 , 0.851954377 , -0.349398611 ), ( 70 , 0.625653114 , -0.471164501 ), ( 70 , 0.688272319 , -0.401279133 ), ( 70 , 0.691833183 , -0.357034949 ), ( 70 , 0.891909316 , -0.244222306 ), ( 70 , 0.917274618 , -0.203277124 ), ( 70 , 0.960722466 , -0.157762173 ), ( 70 , 0.671615732 , -0.215327675 ), ( 70 , 2.244381784 , -1.441053821 ), ( 70 , 2.523484338 , -1.426096609 ), ( 70 , 2.757003001 , -1.429791944 ), ( 70 , 2.159959939 , -1.38436803 ), ( 70 , 1.989983044 , -1.354969336 ), ( 70 , 2.232900981 , -1.306466806 ), ( 70 , 2.494766059 , -1.229926152 ), ( 70 , 2.275650913 , -1.284816004 ), ( 70 , 2.370578985 , -1.232319972 ), ( 70 , 3.061064888 , -1.344859697 ), ( 70 , 2.989692957 , -1.285120801 ), ( 70 , 3.087879303 , -1.181454153 ), ( 70 , 2.848250184 , -1.190492821 ), ( 70 , 2.864940547 , -1.077024541 ), ( 70 , 2.590902976 , -1.219901256 ), ( 70 , 2.537799346 , -1.195637054 ), ( 70 , 2.663790053 , -1.184053735 ), ( 70 , 2.674518448 , -1.13736918 ), ( 70 , 2.466477763 , -1.139175751 ), ( 70 , 2.732424791 , -1.104767747 ), ( 70 , 2.685751629 , -1.091476077 ), ( 70 , 2.777454436 , -1.033066014 ), ( 70 , 2.608484241 , -1.080913672 ), ( 70 , 2.639945424 , -0.993053817 ), ( 70 , 1.790796009 , -1.22149167 ), ( 70 , 1.881814974 , -1.22380411 ), ( 70 , 1.933428805 , -1.23283844 ), ( 70 , 1.811933175 , -1.230264699 ), ( 70 , 1.654798233 , -1.217961972 ), ( 70 , 1.600650069 , -1.174314914 ), ( 70 , 2.130238143 , -1.066000046 ), ( 70 , 2.086367518 , -1.061453634 ), ( 70 , 1.91784698 , -1.067179941 ), ( 70 , 2.050380085 , -1.048094027 ), ( 70 , 2.262229522 , -1.096820996 ), ( 70 , 2.519902771 , -1.045273923 ), ( 70 , 2.48538754 , -1.017508732 ), ( 70 , 2.436542784 , -0.9996019 ), ( 70 , 2.467912223 , -0.929428954 ), ( 70 , 2.171056568 , -1.024462033 ), ( 70 , 2.247844462 , -0.946074624 ), ( 70 , 2.387804054 , -0.893813886 ), ( 70 , 2.281082646 , -0.816930505 ), ( 70 , 2.89187916 , -1.042676787 ), ( 70 , 2.957440661 , -1.033369511 ), ( 70 , 2.922052887 , -1.026911738 ), ( 70 , 2.917798173 , -0.995985551 ), ( 70 , 2.922040161 , -0.954953244 ), ( 70 , 2.915671495 , -0.914576798 ), ( 70 , 2.937782278 , -0.874802347 ), ( 70 , 2.844608694 , -1.019541722 ), ( 70 , 2.824455924 , -1.000516976 ), ( 70 , 2.804308425 , -0.99269841 ), ( 70 , 2.789825292 , -0.97720684 ), ( 70 , 2.856319193 , -0.970735544 ), ( 70 , 2.704694282 , -0.900027135 ), ( 70 , 2.774462818 , -0.859243605 ), ( 70 , 2.764336689 , -0.819883218 ), ( 70 , 2.753054358 , -0.774364718 ), ( 70 , 2.95160572 , -0.80074883 ), ( 70 , 2.96924017 , -0.798120764 ), ( 70 , 3.060624596 , -0.715918689 ), ( 70 , 3.009393561 , -0.67119878 ), ( 70 , 2.833651693 , -0.739448383 ), ( 70 , 2.856187742 , -0.676391789 ), ( 70 , 2.950161098 , -0.715963478 ), ( 70 , 2.983601934 , -0.62987527 ), ( 70 , 2.956832541 , -0.585548267 ), ( 70 , 2.662668853 , -0.838005749 ), ( 70 , 2.480851969 , -0.794085781 ), ( 70 , 2.444573731 , -0.788421392 ), ( 70 , 2.404027529 , -0.755163831 ), ( 70 , 2.556888235 , -0.625951261 ), ( 70 , 2.554288187 , -0.570423799 ), ( 70 , 2.561553699 , -0.545731268 ), ( 70 , 2.733297055 , -0.68699671 ), ( 70 , 2.726854059 , -0.66851897 ), ( 70 , 2.782494097 , -0.623432623 ), ( 70 , 2.669904104 , -0.61653297 ), ( 70 , 2.780366503 , -0.554362834 ), ( 70 , 2.831619247 , -0.487256133 ), ( 70 , 2.805059747 , -0.411008221 ), ( 70 , 1.832529728 , -1.070486215 ), ( 70 , 1.873679845 , -1.05383201 ), ( 70 , 1.664244051 , -1.047580654 ), ( 70 , 1.739398843 , -1.050390756 ), ( 70 , 1.867980649 , -1.000612841 ), ( 70 , 2.014980117 , -0.982883453 ), ( 70 , 2.037510724 , -0.875883417 ), ( 70 , 1.630461115 , -0.993414677 ), ( 70 , 1.57339733 , -1.014069643 ), ( 70 , 1.665386866 , -0.983708733 ), ( 70 , 1.593101808 , -0.981449079 ), ( 70 , 1.738275558 , -0.923835482 ), ( 70 , 1.822808282 , -0.918934477 ), ( 70 , 1.984126321 , -0.780017337 ), ( 70 , 2.077782334 , -0.896023244 ), ( 70 , 2.035054151 , -0.859413234 ), ( 70 , 2.083340506 , -0.808551471 ), ( 70 , 2.119342401 , -0.788385214 ), ( 70 , 2.222924189 , -0.780572186 ), ( 70 , 2.221337869 , -0.766528331 ), ( 70 , 2.302955101 , -0.73779978 ), ( 70 , 2.298289543 , -0.696523655 ), ( 70 , 2.19454341 , -0.754467953 ), ( 70 , 2.243062315 , -0.727433585 ), ( 70 , 2.235248078 , -0.730109801 ), ( 70 , 2.201679397 , -0.711168165 ), ( 70 , 2.227796159 , -0.707061245 ), ( 70 , 2.302663552 , -0.679656644 ), ( 70 , 2.287737475 , -0.654969315 ), ( 70 , 2.045780129 , -0.755923403 ), ( 70 , 2.146379005 , -0.729349509 ), ( 70 , 2.128126823 , -0.72976119 ), ( 70 , 2.013343986 , -0.761579787 ), ( 70 , 2.050195622 , -0.714092644 ), ( 70 , 2.177102968 , -0.68205835 ), ( 70 , 2.155757216 , -0.644937059 ), ( 70 , 2.19903428 , -0.574158398 ), ( 70 , 1.74892703 , -0.832082039 ), ( 70 , 1.670798939 , -0.796372401 ), ( 70 , 1.871727882 , -0.791179218 ), ( 70 , 1.84995353 , -0.761115353 ), ( 70 , 1.899788583 , -0.734573569 ), ( 70 , 1.856793649 , -0.709301397 ), ( 70 , 1.908705448 , -0.679158566 ), ( 70 , 1.599841572 , -0.719425449 ), ( 70 , 1.98081782 , -0.69648157 ), ( 70 , 1.940731916 , -0.650824693 ), ( 70 , 2.050054175 , -0.629951569 ), ( 70 , 1.958528259 , -0.55583315 ), ( 70 , 2.020437143 , -0.482902587 ), ( 70 , 1.828262587 , -0.571110408 ), ( 70 , 1.90291021 , -0.531196888 ), ( 70 , 1.953996787 , -0.495170523 ), ( 70 , 1.989266577 , -0.411002574 ), ( 70 , 2.014808584 , -0.391018116 ), ( 70 , 1.96365242 , -0.340804557 ), ( 70 , 2.365419305 , -0.707811816 ), ( 70 , 2.340158932 , -0.647908425 ), ( 70 , 2.314257857 , -0.627104086 ), ( 70 , 2.49042482 , -0.556607516 ), ( 70 , 2.247940378 , -0.593830794 ), ( 70 , 2.291396781 , -0.562865587 ), ( 70 , 2.212505752 , -0.561707208 ), ( 70 , 2.354931767 , -0.48549159 ), ( 70 , 2.289403194 , -0.415191027 ), ( 70 , 2.360071177 , -0.421559336 ), ( 70 , 2.62557427 , -0.415508676 ), ( 70 , 2.550819509 , -0.397092969 ), ( 70 , 2.667380706 , -0.330874678 ), ( 70 , 2.713941851 , -0.314761842 ), ( 70 , 2.473196107 , -0.334319519 ), ( 70 , 2.438952022 , -0.293230599 ), ( 70 , 2.454533538 , -0.265900481 ), ( 70 , 2.562290552 , -0.300298874 ), ( 70 , 2.602786071 , -0.234990065 ), ( 70 , 2.594339312 , -0.22607547 ), ( 70 , 2.572403641 , -0.205685325 ), ( 70 , 2.124322549 , -0.473233095 ), ( 70 , 2.242873507 , -0.438066854 ), ( 70 , 2.072620193 , -0.409547756 ), ( 70 , 2.131455831 , -0.346626014 ), ( 70 , 2.12048787 , -0.347188129 ), ( 70 , 2.229183362 , -0.276367147 ), ( 70 , 2.175649144 , -0.254232964 ), ( 70 , 2.181213159 , -0.224395556 ), ( 70 , 2.351491003 , -0.278989373 ), ( 70 , 2.322768959 , -0.22356651 ), ( 70 , 2.423271601 , -0.148052267 ), ( 70 , 2.281561846 , -0.171142069 ), ( 70 , 2.208289384 , -0.148618151 ), ( 70 , 2.279881384 , -0.14832754 ), ( 70 , 2.336533305 , -0.139106474 ), ( 70 , 2.334259951 , -0.062054687 ), ( 70 , 4.306643234 , -1.440944504 ), ( 70 , 3.724312998 , -1.475582235 ), ( 70 , 4.375896651 , -1.379234403 ), ( 70 , 4.097244776 , -1.365467281 ), ( 70 , 3.784138823 , -1.372188518 ), ( 70 , 3.585154433 , -1.311010691 ), ( 70 , 4.035871204 , -1.257447277 ), ( 70 , 3.954820292 , -1.259609827 ), ( 70 , 3.993470093 , -1.230819582 ), ( 70 , 3.932457005 , -1.186533083 ), ( 70 , 4.709582305 , -1.358282832 ), ( 70 , 4.48309371 , -1.147517778 ), ( 70 , 4.242756464 , -1.080869901 ), ( 70 , 3.227713746 , -1.340437239 ), ( 70 , 3.311363631 , -1.327603803 ), ( 70 , 3.497107691 , -1.178741996 ), ( 70 , 3.696086503 , -1.107331007 ), ( 70 , 3.159694801 , -1.213387419 ), ( 70 , 3.382315522 , -1.202650484 ), ( 70 , 3.467705689 , -1.10969911 ), ( 70 , 3.483375565 , -1.107396738 ), ( 70 , 3.464615883 , -1.09351706 ), ( 70 , 3.609256773 , -1.092396702 ), ( 70 , 3.536123517 , -1.023887234 ), ( 70 , 3.905571784 , -1.079908521 ), ( 70 , 3.827504127 , -1.08229483 ), ( 70 , 4.031062727 , -1.000609121 ), ( 70 , 4.120154165 , -0.980273203 ), ( 70 , 4.092952305 , -0.951591124 ), ( 70 , 4.061388042 , -0.931559968 ), ( 70 , 3.791765235 , -0.979773315 ), ( 70 , 3.795967134 , -0.979677314 ), ( 70 , 4.650549308 , -1.1226901 ), ( 70 , 4.540551012 , -1.037434577 ), ( 70 , 4.499267595 , -1.012737265 ), ( 70 , 4.53087145 , -0.876352345 ), ( 70 , 4.464640113 , -0.843633084 ), ( 70 , 4.366565556 , -0.850956161 ), ( 70 , 4.337584209 , -0.845812829 ), ( 70 , 4.379639239 , -0.822151671 ), ( 70 , 4.493719901 , -0.820854017 ), ( 70 , 4.495738856 , -0.815739551 ), ( 70 , 4.599711454 , -0.785509842 ), ( 70 , 4.529228114 , -0.760577002 ), ( 70 , 4.583962707 , -0.754440569 ), ( 70 , 4.642985176 , -0.677293253 ), ( 70 , 4.603761773 , -0.677175214 ), ( 70 , 4.607714225 , -0.665015803 ), ( 70 , 4.483671369 , -0.81471247 ), ( 70 , 4.486753492 , -0.716013157 ), ( 70 , 4.391989617 , -0.726243956 ), ( 70 , 4.511246984 , -0.668374991 ), ( 70 , 4.560650926 , -0.600922968 ), ( 70 , 4.534699967 , -0.547369629 ), ( 70 , 4.131148078 , -0.910122201 ), ( 70 , 4.250445839 , -0.854039035 ), ( 70 , 4.168445525 , -0.757327197 ), ( 70 , 4.198270674 , -0.745279934 ), ( 70 , 4.209319628 , -0.660018723 ), ( 70 , 3.961972143 , -0.762930787 ), ( 70 , 4.001108903 , -0.671038966 ), ( 70 , 4.197865044 , -0.64130471 ), ( 70 , 4.063503293 , -0.590270468 ), ( 70 , 4.076073189 , -0.578953073 ), ( 70 , 4.318244579 , -0.717520468 ), ( 70 , 4.348894369 , -0.626858641 ), ( 70 , 4.289690338 , -0.653187897 ), ( 70 , 4.296688714 , -0.609013203 ), ( 70 , 4.293268884 , -0.579442145 ), ( 70 , 4.426327969 , -0.58425866 ), ( 70 , 4.388661603 , -0.46512391 ), ( 70 , 4.185902092 , -0.576173522 ), ( 70 , 4.268503644 , -0.489423189 ), ( 70 , 4.180013872 , -0.553777418 ), ( 70 , 4.239221552 , -0.473874505 ), ( 70 , 4.308756192 , -0.511178319 ), ( 70 , 4.312062888 , -0.44425395 ), ( 70 , 4.393236434 , -0.445559552 ), ( 70 , 3.194688636 , -1.107484425 ), ( 70 , 3.435702282 , -1.044761737 ), ( 70 , 3.349511843 , -1.017486335 ), ( 70 , 3.640767829 , -0.949671128 ), ( 70 , 3.510730293 , -0.898924645 ), ( 70 , 3.219785702 , -1.009675625 ), ( 70 , 3.188277429 , -0.985105693 ), ( 70 , 3.507569757 , -0.835850289 ), ( 70 , 3.532553006 , -0.835592977 ), ( 70 , 3.444663424 , -0.84691577 ), ( 70 , 3.695604146 , -0.830590294 ), ( 70 , 3.821536856 , -0.817090757 ), ( 70 , 3.786299927 , -0.773712274 ), ( 70 , 3.849132886 , -0.746815963 ), ( 70 , 3.743223706 , -0.74335837 ), ( 70 , 3.766741547 , -0.737454802 ), ( 70 , 3.80126879 , -0.704877726 ), ( 70 , 3.594597634 , -0.701239681 ), ( 70 , 3.618379699 , -0.707144358 ), ( 70 , 3.785293074 , -0.618677504 ), ( 70 , 3.675548904 , -0.631451801 ), ( 70 , 3.770970022 , -0.577475504 ), ( 70 , 3.184252839 , -0.903799052 ), ( 70 , 3.218035491 , -0.853919321 ), ( 70 , 3.321176761 , -0.769711095 ), ( 70 , 3.465922727 , -0.747916619 ), ( 70 , 3.272519469 , -0.749263458 ), ( 70 , 3.247253212 , -0.679174081 ), ( 70 , 3.301431248 , -0.686373785 ), ( 70 , 3.397638017 , -0.633122648 ), ( 70 , 3.572858217 , -0.577901775 ), ( 70 , 3.640177262 , -0.501665496 ), ( 70 , 3.432320965 , -0.551735511 ), ( 70 , 3.483624407 , -0.494506106 ), ( 70 , 3.386039871 , -0.5494673 ), ( 70 , 3.769606167 , -0.517950212 ), ( 70 , 3.7612862 , -0.494076098 ), ( 70 , 3.916229083 , -0.444044058 ), ( 70 , 3.953945669 , -0.421184383 ), ( 70 , 4.136178267 , -0.453558955 ), ( 70 , 4.071669589 , -0.427442165 ), ( 70 , 4.126459648 , -0.397122479 ), ( 70 , 4.090711 , -0.386015591 ), ( 70 , 4.051945773 , -0.274022613 ), ( 70 , 3.799031938 , -0.392017576 ), ( 70 , 3.763705966 , -0.362286244 ), ( 70 , 3.741369213 , -0.348436806 ), ( 70 , 3.9894446 , -0.248004578 ), ( 70 , 3.835388651 , -0.184213988 ), ( 70 , 3.860440114 , -0.169373648 ), ( 70 , 3.936021055 , -0.145640517 ), ( 70 , 5.634619048 , -1.449208923 ), ( 70 , 5.421788577 , -1.473185016 ), ( 70 , 5.498366129 , -1.214424316 ), ( 70 , 6.127468631 , -1.259525673 ), ( 70 , 5.918302695 , -1.269084143 ), ( 70 , 6.228176868 , -1.193704019 ), ( 70 , 5.95403405 , -1.116207058 ), ( 70 , 5.954291953 , -1.091677984 ), ( 70 , 5.775187262 , -0.976993639 ), ( 70 , 4.971792049 , -1.315805719 ), ( 70 , 4.914217633 , -1.270845046 ), ( 70 , 5.299619118 , -1.124515233 ), ( 70 , 4.978915509 , -1.097205941 ), ( 70 , 5.179689538 , -1.090029731 ), ( 70 , 5.295805979 , -1.074251654 ), ( 70 , 5.541958843 , -1.117461974 ), ( 70 , 5.543208478 , -1.036861932 ), ( 70 , 5.689774822 , -0.999784325 ), ( 70 , 5.620734841 , -0.912849564 ), ( 70 , 5.532776826 , -0.811457062 ), ( 70 , 6.099996438 , -1.064725764 ), ( 70 , 6.257940824 , -1.039203822 ), ( 70 , 6.093066613 , -0.969126023 ), ( 70 , 6.149809396 , -0.919415182 ), ( 70 , 6.079227791 , -0.866008552 ), ( 70 , 5.878933552 , -1.012301089 ), ( 70 , 5.914706252 , -0.900659506 ), ( 70 , 5.894850859 , -0.862796801 ), ( 70 , 5.919505005 , -0.84309974 ), ( 70 , 5.907557721 , -0.779998938 ), ( 70 , 5.893607551 , -0.769577943 ), ( 70 , 6.180956647 , -0.783530746 ), ( 70 , 6.154758566 , -0.732852613 ), ( 70 , 6.003535887 , -0.717270847 ), ( 70 , 5.753046096 , -0.728169292 ), ( 70 , 5.671738805 , -0.752794731 ), ( 70 , 5.705374357 , -0.662390426 ), ( 70 , 5.763887408 , -0.63803269 ), ( 70 , 5.734795794 , -0.629396113 ), ( 70 , 5.674297265 , -0.602759071 ), ( 70 , 5.65150442 , -0.599180149 ), ( 70 , 5.700259585 , -0.570982316 ), ( 70 , 5.964263165 , -0.579143059 ), ( 70 , 6.037698946 , -0.531360503 ), ( 70 , 5.779231595 , -0.45174476 ), ( 70 , 5.824116612 , -0.418962547 ), ( 70 , 4.886027939 , -1.027460623 ), ( 70 , 4.955697464 , -0.984773797 ), ( 70 , 5.046671442 , -0.915216124 ), ( 70 , 5.131063314 , -0.92517131 ), ( 70 , 4.732892728 , -1.033408226 ), ( 70 , 4.822699139 , -0.996506364 ), ( 70 , 4.763524816 , -0.966247271 ), ( 70 , 4.863793497 , -0.885261436 ), ( 70 , 5.238902971 , -0.865833145 ), ( 70 , 5.199828607 , -0.889758544 ), ( 70 , 5.420391071 , -0.78339431 ), ( 70 , 5.385550627 , -0.758318649 ), ( 70 , 5.381629388 , -0.724766505 ), ( 70 , 5.251644866 , -0.678112334 ), ( 70 , 5.295175976 , -0.671065586 ), ( 70 , 5.360551941 , -0.600565071 ), ( 70 , 5.228242179 , -0.640313447 ), ( 70 , 5.259688707 , -0.605055382 ), ( 70 , 4.847925256 , -0.834710352 ), ( 70 , 4.875707527 , -0.821607543 ), ( 70 , 4.79828122 , -0.797617026 ), ( 70 , 4.913759987 , -0.771844327 ), ( 70 , 4.913366861 , -0.742924799 ), ( 70 , 5.031505158 , -0.675114624 ), ( 70 , 4.781507533 , -0.75343772 ), ( 70 , 4.751190051 , -0.744506289 ), ( 70 , 4.899513805 , -0.685665249 ), ( 70 , 4.918849911 , -0.655351503 ), ( 70 , 4.841681254 , -0.592261797 ), ( 70 , 4.922904805 , -0.591812056 ), ( 70 , 5.158395759 , -0.639381371 ), ( 70 , 5.042213735 , -0.644891129 ), ( 70 , 5.268262136 , -0.518723041 ), ( 70 , 5.118408633 , -0.529933988 ), ( 70 , 4.954257808 , -0.509865097 ), ( 70 , 5.086427502 , -0.391861708 ), ( 70 , 5.433187563 , -0.613773212 ), ( 70 , 5.608018957 , -0.608374498 ), ( 70 , 5.510623743 , -0.508071722 ), ( 70 , 5.456335182 , -0.436045772 ), ( 70 , 5.756517507 , -0.415975662 ), ( 70 , 5.722151036 , -0.406159284 ), ( 70 , 5.559008288 , -0.387675884 ), ( 70 , 5.538183838 , -0.352437877 ), ( 70 , 5.617287617 , -0.23714796 ), ( 70 , 5.398979992 , -0.264376635 ), ( 70 , 5.271839932 , -0.328190538 ), ( 70 , 5.215926684 , -0.336724999 ), ( 70 , 5.199761652 , -0.257904926 ), ( 70 , 5.538883852 , -0.28999858 ), ( 70 , 5.584230166 , -0.244651897 ), ( 70 , 5.63902562 , -0.2141057 ), ( 70 , 5.571835707 , -0.176891715 ), ( 70 , 5.42614066 , -0.20318344 ), ( 70 , 5.384474665 , -0.215438501 ), ( 70 , 5.492340484 , -0.067044422 ), ( 70 , 5.513025338 , -0.027571448 ), ( 71 , 0.704067858 , 0.077272462 ), ( 71 , 0.802211799 , 0.107052343 ), ( 71 , 0.822330953 , 0.133393423 ), ( 71 , 0.680879777 , 0.1122624 ), ( 71 , 0.763236515 , 0.309527761 ), ( 71 , 0.9309276 , 0.240546094 ), ( 71 , 1.095441789 , 0.290544928 ), ( 71 , 1.034926899 , 0.372164932 ), ( 71 , 0.890185151 , 0.347444769 ), ( 71 , 1.021165595 , 0.383012938 ), ( 71 , 0.991716445 , 0.414106675 ), ( 71 , 0.956059613 , 0.431140664 ), ( 71 , 0.605958224 , 0.226762552 ), ( 71 , 0.534154988 , 0.221391742 ), ( 71 , 0.68754385 , 0.359099118 ), ( 71 , 0.584085863 , 0.342336729 ), ( 71 , 0.551978896 , 0.424690376 ), ( 71 , 0.910963656 , 0.530148492 ), ( 71 , 0.948859327 , 0.543151721 ), ( 71 , 0.815358692 , 0.532791474 ), ( 71 , 0.680993631 , 0.513192123 ), ( 71 , 0.731482407 , 0.517987252 ), ( 71 , 0.766583316 , 0.541802798 ), ( 71 , 0.791878113 , 0.565706921 ), ( 71 , 0.800812054 , 0.670379883 ), ( 71 , 1.358313716 , 0.518882742 ), ( 71 , 1.05344991 , 0.497447933 ), ( 71 , 1.43870774 , 0.612761138 ), ( 71 , 1.393016969 , 0.608954337 ), ( 71 , 1.413081684 , 0.635270816 ), ( 71 , 1.35091817 , 0.675190005 ), ( 71 , 1.275577029 , 0.639518981 ), ( 71 , 1.216880765 , 0.737222166 ), ( 71 , 1.410273926 , 0.820680727 ), ( 71 , 1.478934198 , 0.862475119 ), ( 71 , 1.036674775 , 0.636880609 ), ( 71 , 0.945893987 , 0.599474247 ), ( 71 , 0.938572432 , 0.673443599 ), ( 71 , 1.092378551 , 0.684615157 ), ( 71 , 1.13104917 , 0.739684536 ), ( 71 , 1.06189561 , 0.852431619 ), ( 71 , 0.983755353 , 0.831826885 ), ( 71 , 0.918261572 , 0.821408411 ), ( 71 , 0.952151913 , 0.856660022 ), ( 71 , 1.041251335 , 0.942278382 ), ( 71 , 1.272960615 , 0.799889143 ), ( 71 , 1.198893911 , 0.874836047 ), ( 71 , 1.287921403 , 0.900667133 ), ( 71 , 1.412506181 , 0.978936824 ), ( 71 , 1.479561798 , 0.983652328 ), ( 71 , 1.152321468 , 0.933658957 ), ( 71 , 1.49056556 , 1.058066458 ), ( 71 , 1.385177232 , 1.050352021 ), ( 71 , 1.531604879 , 1.147625353 ), ( 71 , 0.417302847 , 0.493398457 ), ( 71 , 0.514959991 , 0.497764359 ), ( 71 , 0.493825882 , 0.502982056 ), ( 71 , 0.260090852 , 0.567089422 ), ( 71 , 0.305220774 , 0.591343685 ), ( 71 , 0.634620045 , 0.611597171 ), ( 71 , 0.640569689 , 0.621584158 ), ( 71 , 0.625215403 , 0.667635328 ), ( 71 , 0.646507423 , 0.67790369 ), ( 71 , 0.752126053 , 0.733403331 ), ( 71 , 0.657473507 , 0.701051927 ), ( 71 , 0.602190613 , 0.748768024 ), ( 71 , 0.659997122 , 0.809742519 ), ( 71 , 0.662813632 , 0.813065541 ), ( 71 , 0.563136615 , 0.732435257 ), ( 71 , 0.528956301 , 0.719293349 ), ( 71 , 0.524695412 , 0.775271328 ), ( 71 , 0.436204506 , 0.727221317 ), ( 71 , 0.496997116 , 0.871668973 ), ( 71 , 0.500688621 , 0.877823616 ), ( 71 , 0.547367697 , 0.883887084 ), ( 71 , 0.226681374 , 0.591489215 ), ( 71 , 0.183361673 , 0.710136726 ), ( 71 , 0.293986992 , 0.663729114 ), ( 71 , 0.267563215 , 0.793284884 ), ( 71 , 0.094187189 , 0.666488972 ), ( 71 , 0.087274324 , 0.667160507 ), ( 71 , 0.038543981 , 0.706762389 ), ( 71 , 0.006808113 , 0.779730735 ), ( 71 , 0.081495387 , 0.77893873 ), ( 71 , 0.203469454 , 0.818451725 ), ( 71 , 0.156256988 , 0.855579854 ), ( 71 , 0.089677379 , 0.794278702 ), ( 71 , 0.079215329 , 0.806589927 ), ( 71 , 0.396975949 , 0.861195097 ), ( 71 , 0.232667714 , 0.866654005 ), ( 71 , 0.352016883 , 0.900498371 ), ( 71 , 0.45022971 , 0.846776843 ), ( 71 , 0.508877545 , 0.930338878 ), ( 71 , 0.486266204 , 0.958615285 ), ( 71 , 0.298351396 , 0.946514643 ), ( 71 , 0.348464494 , 1.015923692 ), ( 71 , 0.050698082 , 1.01598778 ), ( 71 , 0.199691929 , 0.990908287 ), ( 71 , 0.288267134 , 1.00804022 ), ( 71 , 0.168237319 , 1.052865933 ), ( 71 , 0.090434086 , 1.080002632 ), ( 71 , 0.810588088 , 0.762751304 ), ( 71 , 0.845786295 , 0.865137145 ), ( 71 , 0.8222681 , 0.893020126 ), ( 71 , 0.873124501 , 0.889569605 ), ( 71 , 0.895797073 , 1.024414938 ), ( 71 , 0.957938798 , 1.037519255 ), ( 71 , 0.690325144 , 0.881237574 ), ( 71 , 0.609251984 , 0.917369755 ), ( 71 , 0.589610213 , 0.961472322 ), ( 71 , 0.658199723 , 0.969490972 ), ( 71 , 0.738445443 , 0.995416559 ), ( 71 , 0.709464941 , 1.075002132 ), ( 71 , 0.826279725 , 1.122237942 ), ( 71 , 1.125423258 , 1.026091859 ), ( 71 , 1.152651841 , 1.082669386 ), ( 71 , 1.192572879 , 1.119977228 ), ( 71 , 1.081477998 , 1.087865489 ), ( 71 , 1.081324617 , 1.087915189 ), ( 71 , 1.500765587 , 1.162835697 ), ( 71 , 1.249704823 , 1.131146496 ), ( 71 , 1.258075878 , 1.182682924 ), ( 71 , 1.56258794 , 1.214826027 ), ( 71 , 1.484509983 , 1.221414248 ), ( 71 , 1.470140302 , 1.297103464 ), ( 71 , 0.501518478 , 0.987550489 ), ( 71 , 0.449259883 , 1.014308933 ), ( 71 , 0.43248999 , 1.066031241 ), ( 71 , 0.323150916 , 1.062610688 ), ( 71 , 0.676868018 , 1.152777427 ), ( 71 , 0.420599288 , 1.180103864 ), ( 71 , 0.181435154 , 1.149609933 ), ( 71 , 0.023277902 , 1.202261242 ), ( 71 , 0.403239154 , 1.193953617 ), ( 71 , 0.343699946 , 1.263642187 ), ( 71 , 0.080558038 , 1.331275769 ), ( 71 , 0.877272833 , 1.286290857 ), ( 71 , 0.847737854 , 1.295784887 ), ( 71 , 0.804090014 , 1.311606408 ), ( 71 , 0.780774154 , 1.345297711 ), ( 71 , 0.997782597 , 1.363435542 ), ( 71 , 0.51849035 , 1.276743003 ), ( 71 , 0.487852463 , 1.319283095 ), ( 71 , 0.593154665 , 1.381936115 ), ( 71 , 0.562580623 , 1.384848601 ), ( 71 , 0.479447062 , 1.411735053 ), ( 71 , 0.438624154 , 1.421218348 ), ( 71 , 1.471540217 , 1.463655724 ), ( 71 , 0.504911988 , 1.430452218 ), ( 71 , 2.458698741 , 0.134625534 ), ( 71 , 2.480791029 , 0.216162975 ), ( 71 , 2.297454717 , 0.147968178 ), ( 71 , 2.223576794 , 0.146907544 ), ( 71 , 2.328973879 , 0.241385533 ), ( 71 , 2.533293633 , 0.227817677 ), ( 71 , 2.527608272 , 0.232349551 ), ( 71 , 2.473761768 , 0.24963097 ), ( 71 , 2.688973554 , 0.30962044 ), ( 71 , 2.449675022 , 0.289689527 ), ( 71 , 2.427957683 , 0.328299282 ), ( 71 , 2.517425384 , 0.401967912 ), ( 71 , 2.27692859 , 0.346868031 ), ( 71 , 2.296577805 , 0.359822833 ), ( 71 , 2.217088906 , 0.369094837 ), ( 71 , 2.043681757 , 0.320034722 ), ( 71 , 2.09675092 , 0.328873695 ), ( 71 , 2.069182652 , 0.368354159 ), ( 71 , 2.053652576 , 0.421688537 ), ( 71 , 2.11115065 , 0.385207568 ), ( 71 , 2.38867262 , 0.401092386 ), ( 71 , 2.390602421 , 0.447262489 ), ( 71 , 2.431670544 , 0.584688585 ), ( 71 , 2.287452127 , 0.55960081 ), ( 71 , 2.34445202 , 0.566272174 ), ( 71 , 2.380418674 , 0.631464402 ), ( 71 , 2.770005689 , 0.488011027 ), ( 71 , 2.748435567 , 0.498836275 ), ( 71 , 2.794068662 , 0.480406424 ), ( 71 , 2.67344313 , 0.49291487 ), ( 71 , 2.749217491 , 0.70633003 ), ( 71 , 2.827614943 , 0.717504152 ), ( 71 , 3.001740732 , 0.783275242 ), ( 71 , 3.088503653 , 0.869576043 ), ( 71 , 2.472641193 , 0.636298197 ), ( 71 , 2.494534594 , 0.635805901 ), ( 71 , 2.63207561 , 0.874569931 ), ( 71 , 2.512590463 , 0.846341139 ), ( 71 , 2.847744154 , 0.908811896 ), ( 71 , 2.922486566 , 0.944337732 ), ( 71 , 1.953352218 , 0.386440846 ), ( 71 , 2.024437774 , 0.423136648 ), ( 71 , 1.987055001 , 0.499648042 ), ( 71 , 2.050401277 , 0.477576269 ), ( 71 , 2.044132231 , 0.50203063 ), ( 71 , 2.078069535 , 0.521017518 ), ( 71 , 1.907457012 , 0.577544303 ), ( 71 , 1.99990964 , 0.579215536 ), ( 71 , 1.946520024 , 0.556702555 ), ( 71 , 1.926471653 , 0.657327079 ), ( 71 , 1.964251209 , 0.666175789 ), ( 71 , 1.952883956 , 0.674846112 ), ( 71 , 2.216858997 , 0.626429023 ), ( 71 , 2.109410021 , 0.648155226 ), ( 71 , 2.229927098 , 0.699099766 ), ( 71 , 2.051741715 , 0.694128002 ), ( 71 , 2.114765156 , 0.693604046 ), ( 71 , 2.052421815 , 0.799219975 ), ( 71 , 2.164922579 , 0.816851608 ), ( 71 , 2.14759396 , 0.854501369 ), ( 71 , 1.75655396 , 0.678783214 ), ( 71 , 1.764042017 , 0.708985175 ), ( 71 , 1.858605075 , 0.638313261 ), ( 71 , 1.823440958 , 0.727890822 ), ( 71 , 1.77233207 , 0.737671522 ), ( 71 , 1.867961997 , 0.76864207 ), ( 71 , 1.673981831 , 0.707230282 ), ( 71 , 1.612948325 , 0.752947048 ), ( 71 , 1.666885042 , 0.768963475 ), ( 71 , 1.72748867 , 0.762808555 ), ( 71 , 1.636996245 , 0.852313602 ), ( 71 , 1.621454595 , 0.850197027 ), ( 71 , 1.584555069 , 0.93447478 ), ( 71 , 1.985855312 , 0.849645932 ), ( 71 , 1.849961545 , 0.821177951 ), ( 71 , 1.892041332 , 0.824961806 ), ( 71 , 1.890012636 , 0.951095186 ), ( 71 , 1.803953281 , 0.899155899 ), ( 71 , 2.371631791 , 0.926913111 ), ( 71 , 2.454524892 , 0.864719493 ), ( 71 , 2.516394018 , 0.994318194 ), ( 71 , 2.272049454 , 0.8976414 ), ( 71 , 2.114467823 , 0.936865925 ), ( 71 , 2.099632199 , 0.950511894 ), ( 71 , 2.177223042 , 0.98182912 ), ( 71 , 2.352240301 , 1.105704484 ), ( 71 , 2.739128868 , 1.040166198 ), ( 71 , 2.593100775 , 1.04580574 ), ( 71 , 2.523244666 , 1.22637506 ), ( 71 , 2.228507782 , 1.195807775 ), ( 71 , 1.656536975 , 1.198638714 ), ( 71 , 2.521708018 , 1.275490268 ), ( 71 , 2.626647283 , 1.304787793 ), ( 71 , 2.858902565 , 1.34543259 ), ( 71 , 2.950214781 , 1.366747687 ), ( 71 , 2.092697273 , 1.393845047 ), ( 71 , 1.71654386 , 1.364296162 ), ( 71 , 2.368050243 , 1.444173005 ), ( 71 , 2.72575197 , 1.445161219 ), ( 71 , 2.51745326 , 1.447319968 ), ( 71 , 3.899282032 , 0.039050041 ), ( 71 , 3.958933654 , 0.15635247 ), ( 71 , 3.882485559 , 0.183131902 ), ( 71 , 3.905252853 , 0.261443072 ), ( 71 , 3.896186111 , 0.264107416 ), ( 71 , 4.087163642 , 0.26048421 ), ( 71 , 4.100059085 , 0.284738605 ), ( 71 , 4.200875332 , 0.388131359 ), ( 71 , 4.138520922 , 0.391219258 ), ( 71 , 3.770726404 , 0.284030301 ), ( 71 , 3.8894138 , 0.333369214 ), ( 71 , 3.748384351 , 0.332755383 ), ( 71 , 3.685986977 , 0.450591288 ), ( 71 , 3.909572488 , 0.425613517 ), ( 71 , 3.940546525 , 0.493356871 ), ( 71 , 4.00701605 , 0.468461361 ), ( 71 , 4.00551018 , 0.538126552 ), ( 71 , 3.824019831 , 0.479704472 ), ( 71 , 3.789787638 , 0.493762504 ), ( 71 , 3.895265663 , 0.557194868 ), ( 71 , 4.349806458 , 0.399103807 ), ( 71 , 4.310571335 , 0.453514158 ), ( 71 , 4.310793084 , 0.570712288 ), ( 71 , 4.326273037 , 0.584922454 ), ( 71 , 4.376720117 , 0.637214487 ), ( 71 , 4.630488818 , 0.727017269 ), ( 71 , 4.616647002 , 0.760942777 ), ( 71 , 4.396611618 , 0.655549157 ), ( 71 , 4.540050083 , 0.77130342 ), ( 71 , 4.197659569 , 0.698534144 ), ( 71 , 4.303802385 , 0.712253448 ), ( 71 , 4.033934088 , 0.651844275 ), ( 71 , 4.113001563 , 0.798705769 ), ( 71 , 4.228738421 , 0.875823415 ), ( 71 , 4.433462936 , 0.826781478 ), ( 71 , 4.320760576 , 0.8368935 ), ( 71 , 4.434455841 , 0.919760611 ), ( 71 , 4.676378338 , 0.979482287 ), ( 71 , 4.337084919 , 0.911724851 ), ( 71 , 4.387909996 , 0.965405881 ), ( 71 , 4.294777489 , 0.96568583 ), ( 71 , 4.484655521 , 0.973342121 ), ( 71 , 3.499363857 , 0.434276662 ), ( 71 , 3.695421526 , 0.496337733 ), ( 71 , 3.671176122 , 0.55088406 ), ( 71 , 3.500484406 , 0.528689913 ), ( 71 , 3.384831728 , 0.558513533 ), ( 71 , 3.495816601 , 0.660731342 ), ( 71 , 3.747781196 , 0.676622256 ), ( 71 , 3.673142614 , 0.705461834 ), ( 71 , 3.715879307 , 0.738986783 ), ( 71 , 3.622147779 , 0.742763306 ), ( 71 , 3.398785226 , 0.695414709 ), ( 71 , 3.42036372 , 0.750623552 ), ( 71 , 3.325924527 , 0.800704994 ), ( 71 , 3.322571588 , 0.860286265 ), ( 71 , 3.266594071 , 0.866304449 ), ( 71 , 3.542740378 , 0.824395582 ), ( 71 , 3.581082283 , 0.921040488 ), ( 71 , 3.351998691 , 0.91547892 ), ( 71 , 3.307137827 , 0.957367555 ), ( 71 , 3.25741321 , 0.962715242 ), ( 71 , 3.927241748 , 0.778178116 ), ( 71 , 3.737230621 , 0.965134254 ), ( 71 , 3.941652444 , 0.977987212 ), ( 71 , 4.008842728 , 1.021080298 ), ( 71 , 3.927186167 , 1.142773214 ), ( 71 , 4.395000943 , 1.108842019 ), ( 71 , 4.691447213 , 1.215017758 ), ( 71 , 4.626371672 , 1.206915425 ), ( 71 , 4.193004197 , 1.133591385 ), ( 71 , 4.190329404 , 1.180322854 ), ( 71 , 4.533307807 , 1.235483383 ), ( 71 , 4.521362405 , 1.253012013 ), ( 71 , 4.452623723 , 1.312920959 ), ( 71 , 3.521948929 , 1.129573047 ), ( 71 , 3.230539294 , 1.158744939 ), ( 71 , 3.184343363 , 1.350723984 ), ( 71 , 3.913059917 , 1.307268145 ), ( 71 , 4.167062154 , 1.319019014 ), ( 71 , 4.275278018 , 1.328950366 ), ( 71 , 4.343070094 , 1.357083799 ), ( 71 , 4.396631923 , 1.387604968 ), ( 71 , 4.087569014 , 1.406994223 ), ( 71 , 4.1216372 , 1.412533002 ), ( 71 , 3.79331322 , 1.410387798 ), ( 71 , 4.045581213 , 1.4804733 ), ( 71 , 3.841030253 , 1.522187469 ), ( 71 , 5.483784232 , 0.029910944 ), ( 71 , 5.488251609 , 0.073225032 ), ( 71 , 5.615221217 , 0.186188063 ), ( 71 , 5.410511249 , 0.14742576 ), ( 71 , 5.462588433 , 0.153111315 ), ( 71 , 5.37220204 , 0.196534423 ), ( 71 , 5.450857098 , 0.254918526 ), ( 71 , 5.509943714 , 0.278678405 ), ( 71 , 5.728934246 , 0.278070864 ), ( 71 , 5.713163641 , 0.275084953 ), ( 71 , 5.795154036 , 0.306455532 ), ( 71 , 5.841557756 , 0.34839833 ), ( 71 , 5.744754311 , 0.369338032 ), ( 71 , 5.610240564 , 0.272578016 ), ( 71 , 5.649555585 , 0.347954752 ), ( 71 , 5.540394005 , 0.335293156 ), ( 71 , 5.700595115 , 0.387017113 ), ( 71 , 5.679479604 , 0.377023991 ), ( 71 , 5.274507297 , 0.213422985 ), ( 71 , 5.252685402 , 0.261501859 ), ( 71 , 5.317077599 , 0.30302692 ), ( 71 , 5.359560856 , 0.327582617 ), ( 71 , 5.193460991 , 0.309095418 ), ( 71 , 5.16847194 , 0.324433131 ), ( 71 , 5.127457645 , 0.331697599 ), ( 71 , 5.20745423 , 0.420269954 ), ( 71 , 5.308311974 , 0.373580132 ), ( 71 , 5.318314073 , 0.370185832 ), ( 71 , 5.307308274 , 0.388986368 ), ( 71 , 5.34258527 , 0.423725379 ), ( 71 , 5.281662792 , 0.437188168 ), ( 71 , 5.281935609 , 0.496271803 ), ( 71 , 5.493681385 , 0.390090536 ), ( 71 , 5.425064782 , 0.450726362 ), ( 71 , 5.487616309 , 0.460867296 ), ( 71 , 5.454554634 , 0.477831967 ), ( 71 , 5.513023843 , 0.507757634 ), ( 71 , 5.606007111 , 0.451698959 ), ( 71 , 5.37933588 , 0.474941932 ), ( 71 , 5.44488409 , 0.481629608 ), ( 71 , 5.387584737 , 0.567334959 ), ( 71 , 5.492241266 , 0.552354334 ), ( 71 , 5.49769922 , 0.567152554 ), ( 71 , 5.410192804 , 0.617689065 ), ( 71 , 5.923452119 , 0.418901082 ), ( 71 , 5.824173449 , 0.42437829 ), ( 71 , 5.87334234 , 0.452521661 ), ( 71 , 5.910595857 , 0.464226415 ), ( 71 , 5.753778587 , 0.520281653 ), ( 71 , 5.771028162 , 0.582580992 ), ( 71 , 5.868874708 , 0.572312976 ), ( 71 , 5.848901792 , 0.650970959 ), ( 71 , 6.098640372 , 0.541574857 ), ( 71 , 6.098603694 , 0.594221986 ), ( 71 , 6.202433044 , 0.707800653 ), ( 71 , 6.200628232 , 0.730430664 ), ( 71 , 6.247611568 , 0.748917068 ), ( 71 , 6.205694141 , 0.781126765 ), ( 71 , 5.985712794 , 0.721046993 ), ( 71 , 5.922122124 , 0.747181565 ), ( 71 , 6.015985682 , 0.76513011 ), ( 71 , 6.168957782 , 0.814731622 ), ( 71 , 6.200656256 , 0.806656485 ), ( 71 , 6.281215473 , 0.887195587 ), ( 71 , 6.177195964 , 0.894726953 ), ( 71 , 6.279681835 , 0.934851922 ), ( 71 , 5.760830209 , 0.604400231 ), ( 71 , 5.671873952 , 0.689666762 ), ( 71 , 5.764438957 , 0.684970545 ), ( 71 , 5.825287217 , 0.763983067 ), ( 71 , 5.582131544 , 0.677302158 ), ( 71 , 5.574613381 , 0.684336837 ), ( 71 , 5.781167139 , 0.824402605 ), ( 71 , 5.673160797 , 0.867131913 ), ( 71 , 5.724341777 , 0.845388044 ), ( 71 , 5.969617131 , 0.865380772 ), ( 71 , 6.05238125 , 0.876021813 ), ( 71 , 6.133092987 , 0.924664413 ), ( 71 , 6.176096925 , 0.912653297 ), ( 71 , 6.1635582 , 0.937003567 ), ( 71 , 5.99645118 , 0.983195465 ), ( 71 , 5.930166576 , 1.028478614 ), ( 71 , 6.151728552 , 1.021863621 ), ( 71 , 6.256276163 , 1.062091942 ), ( 71 , 5.120033472 , 0.381160671 ), ( 71 , 5.150452966 , 0.409807841 ), ( 71 , 5.03667389 , 0.43656176 ), ( 71 , 5.122599976 , 0.454880927 ), ( 71 , 5.232285963 , 0.480186918 ), ( 71 , 5.18862696 , 0.483983072 ), ( 71 , 5.202218773 , 0.493083849 ), ( 71 , 5.146523127 , 0.530723387 ), ( 71 , 5.156038261 , 0.537714088 ), ( 71 , 4.993191705 , 0.476836452 ), ( 71 , 5.030626291 , 0.510189138 ), ( 71 , 5.047164564 , 0.578183793 ), ( 71 , 4.980729942 , 0.565352251 ), ( 71 , 5.102280766 , 0.551625289 ), ( 71 , 5.155912729 , 0.577406273 ), ( 71 , 5.173495763 , 0.629867466 ), ( 71 , 5.128493185 , 0.605419773 ), ( 71 , 5.034734926 , 0.635723799 ), ( 71 , 5.099162747 , 0.697098162 ), ( 71 , 5.308692866 , 0.619042394 ), ( 71 , 5.295110282 , 0.634049725 ), ( 71 , 5.311819167 , 0.667337771 ), ( 71 , 5.263990936 , 0.682404492 ), ( 71 , 5.274422224 , 0.694611981 ), ( 71 , 5.29675109 , 0.683456165 ), ( 71 , 5.311075693 , 0.708453609 ), ( 71 , 5.477277474 , 0.742000026 ), ( 71 , 5.427509006 , 0.736879958 ), ( 71 , 5.165236219 , 0.668851153 ), ( 71 , 5.186843272 , 0.696679527 ), ( 71 , 5.249742111 , 0.723869788 ), ( 71 , 5.12393947 , 0.723073044 ), ( 71 , 5.322506925 , 0.791745233 ), ( 71 , 5.332899994 , 0.882109742 ), ( 71 , 4.931042995 , 0.582099277 ), ( 71 , 5.006127819 , 0.716529342 ), ( 71 , 5.020292381 , 0.73342624 ), ( 71 , 4.92447235 , 0.789976764 ), ( 71 , 4.959073916 , 0.816220088 ), ( 71 , 4.855757883 , 0.677758881 ), ( 71 , 4.759659421 , 0.778385058 ), ( 71 , 4.717115701 , 0.827340443 ), ( 71 , 4.784894413 , 0.839591388 ), ( 71 , 4.777563877 , 0.85798362 ), ( 71 , 4.736445791 , 0.906654871 ), ( 71 , 5.109531548 , 0.808642615 ), ( 71 , 5.109856963 , 0.84791829 ), ( 71 , 5.111531279 , 0.964569118 ), ( 71 , 5.105981582 , 0.967325454 ), ( 71 , 5.122085044 , 0.98541627 ), ( 71 , 4.778978893 , 0.944921259 ), ( 71 , 4.98327988 , 1.049442452 ), ( 71 , 4.879950602 , 1.108859666 ), ( 71 , 4.735303896 , 1.147090809 ), ( 71 , 5.493037338 , 0.807254487 ), ( 71 , 5.53690674 , 0.825034795 ), ( 71 , 5.509068466 , 0.838294359 ), ( 71 , 5.471054233 , 0.864520769 ), ( 71 , 5.655581332 , 0.881430147 ), ( 71 , 5.737781889 , 0.941364476 ), ( 71 , 5.726657622 , 0.954400664 ), ( 71 , 5.729570608 , 0.981094802 ), ( 71 , 5.583656819 , 0.926038621 ), ( 71 , 5.548664681 , 0.938048114 ), ( 71 , 5.380459322 , 0.950453845 ), ( 71 , 5.381688972 , 0.956477392 ), ( 71 , 5.420467668 , 1.001564396 ), ( 71 , 5.455482247 , 0.991320233 ), ( 71 , 5.506143795 , 1.008196402 ), ( 71 , 5.470257095 , 1.035111015 ), ( 71 , 5.398013693 , 1.071008905 ), ( 71 , 5.524007225 , 1.098191129 ), ( 71 , 5.844361337 , 1.049776796 ), ( 71 , 5.674692874 , 1.042885331 ), ( 71 , 5.732540638 , 1.092827804 ), ( 71 , 5.830760121 , 1.087618746 ), ( 71 , 5.872088461 , 1.105287794 ), ( 71 , 5.782419456 , 1.109652801 ), ( 71 , 6.032957019 , 1.105506298 ), ( 71 , 6.088911144 , 1.1216656 ), ( 71 , 6.125511264 , 1.140454071 ), ( 71 , 6.140447027 , 1.145291371 ), ( 71 , 5.989578884 , 1.186660171 ), ( 71 , 6.217491458 , 1.217451473 ), ( 71 , 6.133279047 , 1.20350966 ), ( 71 , 5.723834954 , 1.132716764 ), ( 71 , 5.834653504 , 1.154169008 ), ( 71 , 5.736542747 , 1.182529482 ), ( 71 , 5.791180365 , 1.233847412 ), ( 71 , 5.973542711 , 1.196797488 ), ( 71 , 5.890514094 , 1.224722679 ), ( 71 , 5.053576752 , 1.063955562 ), ( 71 , 4.985172347 , 1.094417677 ), ( 71 , 4.986042522 , 1.192499028 ), ( 71 , 4.916437159 , 1.182836791 ), ( 71 , 4.869099089 , 1.263276055 ), ( 71 , 4.968199177 , 1.293858042 ), ( 71 , 5.485594536 , 1.205277471 ), ( 71 , 5.548730651 , 1.229433275 ), ( 71 , 5.447301236 , 1.187411143 ), ( 71 , 5.632992975 , 1.236098073 ), ( 71 , 5.725945347 , 1.265188187 ), ( 71 , 5.593661222 , 1.257668762 ), ( 71 , 6.154758558 , 1.359507934 ), ( 71 , 5.547807096 , 1.378381238 ), ( 71 , 5.255391561 , 1.289966129 ), ( 71 , 5.270824193 , 1.358289404 ), ( 71 , 5.326442012 , 1.437588296 ), ( 71 , 5.751677118 , 1.446340116 ), ( 71 , 6.159099413 , 1.504089612 ), ( 71 , 0.047056673 , -0.608434373 ), ( 71 , 6.272896361 , -0.579257074 ), ( 71 , 0.101970849 , -0.520937574 ), ( 71 , 0.112405537 , -0.483638401 ), ( 71 , 6.212767488 , -0.58342665 ), ( 71 , 6.236598448 , -0.486154703 ), ( 71 , 0.06004853 , -0.405183372 ), ( 71 , 6.037252406 , -0.467979645 ), ( 71 , 5.989059567 , -0.332279023 ), ( 71 , 6.044819693 , -0.294932643 ), ( 71 , 0.063114468 , -0.251897543 ), ( 71 , 0.088040318 , -0.227963929 ), ( 71 , 0.097026285 , -0.090618587 ), ( 71 , 6.166385937 , -0.220074319 ), ( 71 , 6.18809762 , -0.150580926 ), ( 71 , 0.043271632 , -0.044704261 ), ( 71 , 6.282202287 , -0.004891874 ), ( 71 , 0.352026846 , -0.242424704 ), ( 71 , 0.516886836 , -0.123537413 ), ( 71 , 0.288442609 , -0.191735691 ), ( 71 , 0.381670223 , -0.162269747 ), ( 71 , 0.390682033 , -0.165614809 ), ( 71 , 0.384054398 , -0.035526128 ), ( 71 , 0.625567354 , -0.108087872 ), ( 71 , 0.63241167 , -0.067950056 ), ( 71 , 0.505706426 , 0.032301629 ), ( 71 , 0.564483178 , 0.104483423 ), ( 71 , 0.605162115 , 0.142780299 ), ( 71 , 0.223350225 , -0.087966423 ), ( 71 , 0.247750954 , -0.047650689 ), ( 71 , 0.129388715 , -0.04957931 ), ( 71 , 0.138228719 , -0.031307 ), ( 71 , 0.063747376 , 0.022632732 ), ( 71 , 0.197178899 , 0.004414376 ), ( 71 , 0.373843933 , 0.051870614 ), ( 71 , 0.360950009 , 0.082695506 ), ( 71 , 0.272677383 , 0.153962852 ), ( 71 , 5.86142308 , -0.260971452 ), ( 71 , 5.995730044 , -0.212768593 ), ( 71 , 5.930915157 , -0.175018308 ), ( 71 , 5.818230692 , -0.2081526 ), ( 71 , 5.729117923 , -0.184357071 ), ( 71 , 5.917913812 , -0.133767261 ), ( 71 , 5.9017254 , -0.112869879 ), ( 71 , 5.874079565 , -0.048686605 ), ( 71 , 6.165046166 , -0.052653253 ), ( 71 , 5.946426319 , 0.004046107 ), ( 71 , 5.947069251 , 0.02124413 ), ( 71 , 5.994637616 , 0.032167498 ), ( 71 , 6.12769436 , 0.107971673 ), ( 71 , 5.666590596 , -0.072441807 ), ( 71 , 5.647235697 , -0.059529002 ), ( 71 , 5.621536435 , -0.050361158 ), ( 71 , 5.563518658 , -0.044888315 ), ( 71 , 5.740573916 , 0.041202383 ), ( 71 , 5.752896589 , 0.065903373 ), ( 71 , 5.634439958 , 0.066641123 ), ( 71 , 5.675828497 , 0.068014683 ), ( 71 , 5.936111513 , 0.079833897 ), ( 71 , 5.779295138 , 0.178725753 ), ( 71 , 5.790312101 , 0.205380475 ), ( 71 , 5.838432714 , 0.243477177 ), ( 71 , 0.069619412 , 0.074194128 ), ( 71 , 6.246833407 , 0.081996951 ), ( 71 , 0.087634376 , 0.109829105 ), ( 71 , 6.231873524 , 0.125017401 ), ( 71 , 6.216934075 , 0.125519465 ), ( 71 , 0.162743085 , 0.199605149 ), ( 71 , 0.137886793 , 0.279612859 ), ( 71 , 0.359163982 , 0.326074474 ), ( 71 , 0.335285644 , 0.367414957 ), ( 71 , 0.263834706 , 0.370866969 ), ( 71 , 0.141945458 , 0.328023251 ), ( 71 , 0.139254735 , 0.342835003 ), ( 71 , 0.164414548 , 0.368257586 ), ( 71 , 0.203980554 , 0.377413313 ), ( 71 , 0.142519096 , 0.404804505 ), ( 71 , 6.148083625 , 0.279471625 ), ( 71 , 6.152424187 , 0.376108746 ), ( 71 , 6.045311416 , 0.430275212 ), ( 71 , 6.102021301 , 0.48177089 ), ( 71 , 6.086686337 , 0.489926375 ), ( 71 , 0.061750153 , 0.458299576 ), ( 71 , 6.236515481 , 0.398883578 ), ( 71 , 0.006916247 , 0.496082869 ), ( 71 , 0.033102947 , 0.552725927 ), ( 71 , 6.238867347 , 0.483119832 ), ( 71 , 6.189677099 , 0.611441818 ), ( 71 , 0.045985659 , 0.578243004 ), ( 71 , 0.072937881 , 0.639307676 ), ( 71 , 1.579994927 , -0.680484678 ), ( 71 , 1.519865456 , -0.583499945 ), ( 71 , 1.645980646 , -0.470065087 ), ( 71 , 1.46872119 , -0.611926579 ), ( 71 , 1.497675504 , -0.583375217 ), ( 71 , 1.523328877 , -0.567308691 ), ( 71 , 1.422510987 , -0.562155659 ), ( 71 , 1.536475232 , -0.452789791 ), ( 71 , 1.77270319 , -0.515938466 ), ( 71 , 1.845289479 , -0.429054504 ), ( 71 , 1.751941442 , -0.354612941 ), ( 71 , 1.753850304 , -0.353430934 ), ( 71 , 1.86909405 , -0.364065358 ), ( 71 , 1.944132158 , -0.339252363 ), ( 71 , 1.833687405 , -0.345599087 ), ( 71 , 1.793926373 , -0.331848542 ), ( 71 , 1.7127822 , -0.366898978 ), ( 71 , 1.766484106 , -0.324118508 ), ( 71 , 1.767873856 , -0.318844252 ), ( 71 , 1.73992077 , -0.28380638 ), ( 71 , 1.754412677 , -0.265571936 ), ( 71 , 1.825632377 , -0.280204605 ), ( 71 , 1.758583805 , -0.239080094 ), ( 71 , 1.279340603 , -0.362542801 ), ( 71 , 1.425292106 , -0.241892974 ), ( 71 , 1.355109933 , -0.20330743 ), ( 71 , 1.560583888 , -0.268886964 ), ( 71 , 1.629315851 , -0.268504821 ), ( 71 , 1.606164724 , -0.277533017 ), ( 71 , 1.589199725 , -0.245812401 ), ( 71 , 1.589062601 , -0.238926853 ), ( 71 , 1.535994995 , -0.270631765 ), ( 71 , 1.555397484 , -0.196842861 ), ( 71 , 1.643635143 , -0.210268714 ), ( 71 , 1.635858865 , -0.153662597 ), ( 71 , 1.487508342 , -0.195483572 ), ( 71 , 1.444275334 , -0.175986333 ), ( 71 , 1.462858499 , -0.105291052 ), ( 71 , 1.463637334 , -0.103189715 ), ( 71 , 1.557322805 , -0.146328621 ), ( 71 , 1.58030918 , -0.127226338 ), ( 71 , 1.597142319 , -0.102630484 ), ( 71 , 1.543282632 , -0.099568408 ), ( 71 , 1.550788262 , -0.084226462 ), ( 71 , 1.585273511 , -0.043260575 ), ( 71 , 1.992270759 , -0.252783485 ), ( 71 , 1.902841724 , -0.253248242 ), ( 71 , 1.963080512 , -0.244160902 ), ( 71 , 1.998513506 , -0.141830487 ), ( 71 , 1.869845842 , -0.224901822 ), ( 71 , 1.841874134 , -0.105112439 ), ( 71 , 1.972088859 , -0.103719313 ), ( 71 , 2.032055022 , -0.099108334 ), ( 71 , 2.022928995 , -0.08216855 ), ( 71 , 2.022553935 , -0.081693235 ), ( 71 , 2.029841305 , -0.077741585 ), ( 71 , 1.881356379 , -0.082087981 ), ( 71 , 1.954751833 , -0.050305138 ), ( 71 , 1.945837951 , -0.039248913 ), ( 71 , 2.167670888 , -0.15733223 ), ( 71 , 2.10649307 , -0.110346152 ), ( 71 , 2.090322475 , -0.075620104 ), ( 71 , 2.127943325 , -0.059458528 ), ( 71 , 2.29656827 , 0.011287485 ), ( 71 , 2.198835669 , -0.026147446 ), ( 71 , 2.000616382 , 0.0088141 ), ( 71 , 2.191226574 , 0.03754699 ), ( 71 , 1.7713452 , -0.128088836 ), ( 71 , 1.749826916 , -0.132167066 ), ( 71 , 1.834128378 , -0.101694247 ), ( 71 , 1.825918784 , -0.052774301 ), ( 71 , 1.767961075 , -0.000753818 ), ( 71 , 1.779330015 , 0.005938146 ), ( 71 , 1.671596648 , -0.061362125 ), ( 71 , 1.735931829 , 0.009198611 ), ( 71 , 1.687396653 , 0.007925739 ), ( 71 , 1.634596806 , 0.039967505 ), ( 71 , 1.754396378 , 0.056691225 ), ( 71 , 1.793285596 , 0.101962993 ), ( 71 , 1.721742284 , 0.086701642 ), ( 71 , 1.709007598 , 0.10068827 ), ( 71 , 1.751861347 , 0.106653932 ), ( 71 , 1.755302838 , 0.129115629 ), ( 71 , 1.774471082 , 0.145962188 ), ( 71 , 1.985275342 , 0.077483983 ), ( 71 , 1.965938487 , 0.091710332 ), ( 71 , 2.073377835 , 0.16318712 ), ( 71 , 1.950768227 , 0.157842576 ), ( 71 , 1.939101002 , 0.178819573 ), ( 71 , 1.783434665 , 0.154743581 ), ( 71 , 1.795930425 , 0.164758022 ), ( 71 , 1.836858797 , 0.185439112 ), ( 71 , 1.869683518 , 0.190682433 ), ( 71 , 1.978582529 , 0.192188818 ), ( 71 , 1.920557443 , 0.281700731 ), ( 71 , 1.164526348 , -0.325609587 ), ( 71 , 1.12677052 , -0.255495089 ), ( 71 , 1.257643021 , -0.165923389 ), ( 71 , 1.207917637 , -0.147663441 ), ( 71 , 1.272677325 , -0.146629477 ), ( 71 , 1.085490145 , -0.151325857 ), ( 71 , 1.233391274 , -0.100484017 ), ( 71 , 1.302185793 , -0.065145689 ), ( 71 , 1.402694074 , -0.026986818 ), ( 71 , 1.372772735 , -0.00982386 ), ( 71 , 1.458058298 , -0.03319274 ), ( 71 , 1.494650609 , -0.000282386 ), ( 71 , 1.521778885 , 0.012663662 ), ( 71 , 1.427488461 , -0.023864948 ), ( 71 , 1.461457472 , -0.002144751 ), ( 71 , 1.242242068 , 0.009911346 ), ( 71 , 1.39546994 , 0.04385872 ), ( 71 , 1.426390563 , 0.063087907 ), ( 71 , 1.40870153 , 0.061997935 ), ( 71 , 1.405810717 , 0.094159458 ), ( 71 , 1.313798179 , 0.0648786 ), ( 71 , 1.35249753 , 0.14263552 ), ( 71 , 0.994751685 , -0.04994097 ), ( 71 , 1.068532252 , -0.042362672 ), ( 71 , 0.971363031 , 0.150698703 ), ( 71 , 1.142197653 , 0.041698127 ), ( 71 , 1.122202743 , 0.087693586 ), ( 71 , 1.114510286 , 0.108190772 ), ( 71 , 1.320010374 , 0.129571913 ), ( 71 , 1.085162148 , 0.176262685 ), ( 71 , 1.164365756 , 0.297199778 ), ( 71 , 1.153549726 , 0.298080757 ), ( 71 , 1.175237229 , 0.306214658 ), ( 71 , 1.641617277 , 0.089258366 ), ( 71 , 1.53784336 , 0.108372737 ), ( 71 , 1.505382026 , 0.110834869 ), ( 71 , 1.54670623 , 0.140574248 ), ( 71 , 1.701401542 , 0.124126974 ), ( 71 , 1.711694096 , 0.153900562 ), ( 71 , 1.640352655 , 0.179445805 ), ( 71 , 1.599016122 , 0.187625155 ), ( 71 , 1.652935312 , 0.194864325 ), ( 71 , 1.677974515 , 0.19646261 ), ( 71 , 1.426807454 , 0.12514107 ), ( 71 , 1.531762673 , 0.200694805 ), ( 71 , 1.443806432 , 0.177374375 ), ( 71 , 1.557022087 , 0.285449495 ), ( 71 , 1.789120846 , 0.210453557 ), ( 71 , 1.72402753 , 0.221111743 ), ( 71 , 1.723273405 , 0.292582609 ), ( 71 , 1.835440117 , 0.29599194 ), ( 71 , 1.860041043 , 0.309697755 ), ( 71 , 1.722008525 , 0.339099507 ), ( 71 , 1.655337497 , 0.406216488 ), ( 71 , 1.779328718 , 0.378587319 ), ( 71 , 1.824729896 , 0.392290009 ), ( 71 , 1.835535157 , 0.409106553 ), ( 71 , 1.819486379 , 0.430094894 ), ( 71 , 1.84184463 , 0.443760672 ), ( 71 , 1.787747659 , 0.44478174 ), ( 71 , 1.793358486 , 0.449579063 ), ( 71 , 1.729785719 , 0.476091542 ), ( 71 , 1.484901064 , 0.267906628 ), ( 71 , 1.259726074 , 0.326494757 ), ( 71 , 1.259825843 , 0.372028421 ), ( 71 , 1.385481158 , 0.419038681 ), ( 71 , 1.461973618 , 0.423952557 ), ( 71 , 1.352938698 , 0.480940891 ), ( 71 , 1.346473161 , 0.493464483 ), ( 71 , 1.584392196 , 0.359297794 ), ( 71 , 1.572854968 , 0.399673284 ), ( 71 , 1.560390502 , 0.429576325 ), ( 71 , 1.551907654 , 0.483729099 ), ( 71 , 1.660706331 , 0.439630781 ), ( 71 , 1.662718426 , 0.512635244 ), ( 71 , 1.708727668 , 0.561403104 ), ( 71 , 1.566135286 , 0.523312034 ), ( 71 , 1.489456457 , 0.51477145 ), ( 71 , 3.134331227 , -0.714662199 ), ( 71 , 3.16871389 , -0.675019118 ), ( 71 , 3.149291573 , -0.604761191 ), ( 71 , 3.241948088 , -0.434080231 ), ( 71 , 3.04461838 , -0.54487584 ), ( 71 , 3.138848407 , -0.524660444 ), ( 71 , 3.07149437 , -0.519191006 ), ( 71 , 3.130741091 , -0.472222901 ), ( 71 , 3.172219382 , -0.414795389 ), ( 71 , 3.121973563 , -0.433842147 ), ( 71 , 3.330167613 , -0.43616816 ), ( 71 , 3.498382637 , -0.32711313 ), ( 71 , 3.377228893 , -0.314815681 ), ( 71 , 3.209696186 , -0.358303377 ), ( 71 , 3.318743703 , -0.246088585 ), ( 71 , 3.263895255 , -0.252220306 ), ( 71 , 3.331612359 , -0.241898087 ), ( 71 , 3.344513791 , -0.20616033 ), ( 71 , 2.948329701 , -0.399956129 ), ( 71 , 3.086516291 , -0.32080986 ), ( 71 , 2.989973217 , -0.324756403 ), ( 71 , 2.87519676 , -0.342177111 ), ( 71 , 3.092258576 , -0.250367125 ), ( 71 , 3.225964395 , -0.155592941 ), ( 71 , 3.071423748 , -0.159393758 ), ( 71 , 3.103120085 , -0.139482821 ), ( 71 , 3.22080136 , -0.069010145 ), ( 71 , 3.191162064 , -0.065961363 ), ( 71 , 3.532059155 , -0.326887467 ), ( 71 , 3.499851397 , -0.251679695 ), ( 71 , 3.610304673 , -0.117033087 ), ( 71 , 3.454329796 , -0.195854923 ), ( 71 , 3.549155609 , -0.133039185 ), ( 71 , 3.509996737 , -0.07522328 ), ( 71 , 3.778334061 , 0.017322426 ), ( 71 , 3.650692138 , 0.052124123 ), ( 71 , 3.791470114 , 0.06492151 ), ( 71 , 3.809401893 , 0.092898468 ), ( 71 , 3.360103742 , -0.133205569 ), ( 71 , 3.32468591 , -0.130910449 ), ( 71 , 3.27614311 , -0.070873779 ), ( 71 , 3.303551136 , -0.040546105 ), ( 71 , 3.176541033 , 0.010840964 ), ( 71 , 3.202360749 , 0.039445842 ), ( 71 , 3.34682722 , 0.158194264 ), ( 71 , 3.493116351 , 0.084248418 ), ( 71 , 3.593571634 , 0.250726169 ), ( 71 , 3.515379597 , 0.271643856 ), ( 71 , 2.737646578 , -0.319165225 ), ( 71 , 2.756006638 , -0.259793341 ), ( 71 , 2.672092255 , -0.262988058 ), ( 71 , 2.781402157 , -0.216312852 ), ( 71 , 2.803237096 , -0.15231735 ), ( 71 , 2.629116485 , -0.232065864 ), ( 71 , 2.589041765 , -0.172852438 ), ( 71 , 2.571245191 , -0.154200662 ), ( 71 , 2.759693998 , -0.106034398 ), ( 71 , 2.986083072 , -0.103159302 ), ( 71 , 3.002223443 , -0.015673054 ), ( 71 , 3.064903453 , 0.041222489 ), ( 71 , 2.833046347 , -0.070230884 ), ( 71 , 2.981250532 , 0.114942561 ), ( 71 , 2.491104863 , -0.098807524 ), ( 71 , 2.406320135 , 0.005080862 ), ( 71 , 2.448468192 , 0.051330322 ), ( 71 , 2.520573681 , 0.029604626 ), ( 71 , 2.562462998 , 0.149579501 ), ( 71 , 2.841133215 , 0.20208369 ), ( 71 , 2.724129549 , 0.184791237 ), ( 71 , 2.743686414 , 0.250344051 ), ( 71 , 3.138968159 , 0.031876997 ), ( 71 , 3.323998574 , 0.172546658 ), ( 71 , 3.039344886 , 0.106564221 ), ( 71 , 3.006258298 , 0.175199185 ), ( 71 , 3.172925897 , 0.226633879 ), ( 71 , 3.093728558 , 0.281565703 ), ( 71 , 3.339838938 , 0.250867046 ), ( 71 , 3.370152502 , 0.298593294 ), ( 71 , 3.351065408 , 0.328762137 ), ( 71 , 3.20802852 , 0.295091878 ), ( 71 , 3.380128969 , 0.385852329 ), ( 71 , 3.358936287 , 0.461311719 ), ( 71 , 3.017365242 , 0.309788786 ), ( 71 , 2.873796614 , 0.342467677 ), ( 71 , 2.958429552 , 0.387112003 ), ( 71 , 3.084925608 , 0.414001791 ), ( 71 , 3.231868567 , 0.472177092 ), ( 71 , 3.203138537 , 0.572191292 ), ( 71 , 3.038950696 , 0.436852029 ), ( 71 , 3.038183176 , 0.48487369 ), ( 71 , 3.091885719 , 0.502652757 ), ( 71 , 3.010995035 , 0.522957376 ), ( 71 , 3.11451067 , 0.586694893 ), ( 71 , 4.736594369 , -0.654010782 ), ( 71 , 4.708791408 , -0.673236723 ), ( 71 , 4.713484433 , -0.652896739 ), ( 71 , 4.709007033 , -0.644705782 ), ( 71 , 4.763349094 , -0.61130982 ), ( 71 , 4.662075806 , -0.665555424 ), ( 71 , 4.661123574 , -0.626494201 ), ( 71 , 4.685055884 , -0.607277428 ), ( 71 , 4.803709977 , -0.58178137 ), ( 71 , 4.741898614 , -0.495043627 ), ( 71 , 4.774262809 , -0.480017704 ), ( 71 , 4.614750822 , -0.599552766 ), ( 71 , 4.623492564 , -0.564093534 ), ( 71 , 4.611932767 , -0.560755018 ), ( 71 , 4.617266663 , -0.489510338 ), ( 71 , 4.72392449 , -0.423336522 ), ( 71 , 4.72954396 , -0.398588762 ), ( 71 , 4.994977625 , -0.440367978 ), ( 71 , 4.897498208 , -0.35451114 ), ( 71 , 5.00460749 , -0.392658521 ), ( 71 , 4.93490927 , -0.354219208 ), ( 71 , 4.922803215 , -0.335084859 ), ( 71 , 5.01324488 , -0.326076543 ), ( 71 , 4.866833873 , -0.336301011 ), ( 71 , 4.851530202 , -0.33379623 ), ( 71 , 4.867778483 , -0.323769692 ), ( 71 , 4.784775637 , -0.358570568 ), ( 71 , 4.779058298 , -0.331486297 ), ( 71 , 4.736627707 , -0.344776046 ), ( 71 , 4.943677553 , -0.28591133 ), ( 71 , 4.832481873 , -0.26831663 ), ( 71 , 4.876214654 , -0.215551488 ), ( 71 , 4.909054651 , -0.199931034 ), ( 71 , 4.505827992 , -0.377096868 ), ( 71 , 4.49890225 , -0.360506992 ), ( 71 , 4.410989851 , -0.288799893 ), ( 71 , 4.519027621 , -0.171198359 ), ( 71 , 4.690262476 , -0.203008587 ), ( 71 , 4.799930196 , -0.167504165 ), ( 71 , 4.6903964 , -0.134989573 ), ( 71 , 4.682965272 , -0.103482506 ), ( 71 , 4.680175464 , -0.091842635 ), ( 71 , 5.139166617 , -0.243585508 ), ( 71 , 5.135793663 , -0.229913002 ), ( 71 , 5.051273695 , -0.278681196 ), ( 71 , 5.057790353 , -0.277653552 ), ( 71 , 5.199998397 , -0.227466925 ), ( 71 , 5.152011327 , -0.131122314 ), ( 71 , 5.047817488 , -0.191492535 ), ( 71 , 4.951983342 , -0.183545839 ), ( 71 , 5.009162643 , -0.136975301 ), ( 71 , 5.072651464 , -0.064896822 ), ( 71 , 5.130585257 , -0.042867509 ), ( 71 , 5.110599178 , -0.036830467 ), ( 71 , 5.303149282 , -0.096634281 ), ( 71 , 5.229626703 , -0.06202447 ), ( 71 , 5.291786685 , -0.052289385 ), ( 71 , 5.365787171 , 0.052293632 ), ( 71 , 5.264986715 , 0.132225739 ), ( 71 , 4.932013096 , -0.138014584 ), ( 71 , 4.918068947 , -0.102949709 ), ( 71 , 4.979242111 , -0.077473675 ), ( 71 , 4.997140709 , -0.016333177 ), ( 71 , 4.967331493 , 0.020910016 ), ( 71 , 4.955909508 , 0.060209402 ), ( 71 , 4.932421263 , 0.13016571 ), ( 71 , 5.062869191 , 0.083377392 ), ( 71 , 5.02265337 , 0.092060763 ), ( 71 , 5.038526469 , 0.10556678 ), ( 71 , 5.112609121 , 0.10069084 ), ( 71 , 5.113863667 , 0.13068336 ), ( 71 , 5.114738964 , 0.162913892 ), ( 71 , 5.18424727 , 0.234815318 ), ( 71 , 5.006660276 , 0.107560121 ), ( 71 , 5.091762478 , 0.210520932 ), ( 71 , 5.107382757 , 0.223691172 ), ( 71 , 5.168779819 , 0.230912445 ), ( 71 , 5.093929724 , 0.319322776 ), ( 71 , 4.313005804 , -0.233867401 ), ( 71 , 4.368251682 , -0.206624346 ), ( 71 , 4.429351841 , -0.116083505 ), ( 71 , 4.229728823 , -0.227815125 ), ( 71 , 4.134828647 , -0.165462887 ), ( 71 , 4.248812507 , -0.141686862 ), ( 71 , 4.272376286 , -0.120024993 ), ( 71 , 4.551273226 , -0.124003571 ), ( 71 , 4.56633029 , 0.01434881 ), ( 71 , 4.54271262 , 0.025218675 ), ( 71 , 4.144991106 , -0.068440272 ), ( 71 , 4.140265483 , -0.017475448 ), ( 71 , 4.254548302 , -0.030971505 ), ( 71 , 4.28295385 , 0.001335276 ), ( 71 , 4.170931937 , -0.037783507 ), ( 71 , 4.133280266 , -0.004713508 ), ( 71 , 4.251485651 , 0.046194827 ), ( 71 , 4.009549774 , -0.027789705 ), ( 71 , 3.996764986 , 0.013882501 ), ( 71 , 4.164475665 , 0.092404453 ), ( 71 , 4.077637087 , 0.082564013 ), ( 71 , 4.146015495 , 0.103927253 ), ( 71 , 4.318725182 , 0.135242977 ), ( 71 , 4.492838898 , 0.175191637 ), ( 71 , 4.461733865 , 0.171389974 ), ( 71 , 4.406820146 , 0.164434396 ), ( 71 , 4.339155001 , 0.151389257 ), ( 71 , 4.168543473 , 0.160977136 ), ( 71 , 4.130860074 , 0.170804228 ), ( 71 , 4.230092755 , 0.205040958 ), ( 71 , 4.245351543 , 0.223417471 ), ( 71 , 4.751109068 , 0.034834259 ), ( 71 , 4.67347447 , 0.091265868 ), ( 71 , 4.654287031 , 0.100779059 ), ( 71 , 4.713303883 , 0.154564411 ), ( 71 , 4.742267382 , 0.154896803 ), ( 71 , 4.673428559 , 0.148895049 ), ( 71 , 4.6489259 , 0.194512315 ), ( 71 , 4.576237473 , 0.18385232 ), ( 71 , 4.719169273 , 0.1969738 ), ( 71 , 4.911914474 , 0.200660479 ), ( 71 , 4.888286654 , 0.210384863 ), ( 71 , 4.893360467 , 0.213568819 ), ( 71 , 4.920501122 , 0.234611865 ), ( 71 , 4.926995162 , 0.255830242 ), ( 71 , 4.951517914 , 0.267778866 ), ( 71 , 4.840930968 , 0.241806526 ), ( 71 , 4.868986363 , 0.296266344 ), ( 71 , 4.992368031 , 0.306421075 ), ( 71 , 5.065818053 , 0.334160405 ), ( 71 , 4.950398021 , 0.35980491 ), ( 71 , 4.796481201 , 0.276216098 ), ( 71 , 4.857444521 , 0.330129747 ), ( 71 , 4.932337563 , 0.420742742 ), ( 71 , 4.930247421 , 0.46120889 ), ( 71 , 4.546375495 , 0.203718654 ), ( 71 , 4.436018385 , 0.24679692 ), ( 71 , 4.444618637 , 0.269746329 ), ( 71 , 4.52266517 , 0.31450115 ), ( 71 , 4.589783208 , 0.293632061 ), ( 71 , 4.406743555 , 0.268376273 ), ( 71 , 4.41461891 , 0.359089686 ), ( 71 , 4.52555228 , 0.451585741 ), ( 71 , 4.535245241 , 0.476190349 ), ( 71 , 4.668845499 , 0.427048177 ), ( 71 , 4.892474445 , 0.528737046 ), ( 71 , 4.774035419 , 0.492464147 ), ( 71 , 4.701068935 , 0.582952483 ), ( 71 , 4.671045382 , 0.643086123 ), ( 71 , 4.699945514 , 0.659788235 ), ( 71 , 1.107315574 , -1.47455422 ), ( 71 , 0.173321053 , -1.495763893 ), ( 71 , 0.944285572 , -1.380535571 ), ( 71 , 0.497866158 , -1.352473564 ), ( 71 , 0.571122661 , -1.325732258 ), ( 71 , 0.531768202 , -1.299324804 ), ( 71 , 0.807197538 , -1.297118346 ), ( 71 , 1.407333126 , -1.288076378 ), ( 71 , 1.198106073 , -1.269436979 ), ( 71 , 1.105029646 , -1.229061219 ), ( 71 , 1.434444068 , -1.142275501 ), ( 71 , 1.15162543 , -1.164774877 ), ( 71 , 0.877238408 , -1.196122908 ), ( 71 , 1.184186367 , -1.043127796 ), ( 71 , 1.050460409 , -1.023839264 ), ( 71 , 0.535063918 , -1.229048275 ), ( 71 , 0.689297505 , -1.174623962 ), ( 71 , 0.186275785 , -1.145084312 ), ( 71 , 0.033530745 , -1.150744945 ), ( 71 , 0.229526502 , -1.112488994 ), ( 71 , 0.781638395 , -0.969803056 ), ( 71 , 0.951955279 , -1.043289406 ), ( 71 , 0.958422586 , -0.981476882 ), ( 71 , 0.655638588 , -1.008961835 ), ( 71 , 0.62654766 , -0.970687906 ), ( 71 , 0.783546245 , -0.940880052 ), ( 71 , 0.721163018 , -0.807860642 ), ( 71 , 1.446883919 , -1.074093911 ), ( 71 , 1.475995887 , -1.031777411 ), ( 71 , 1.398313052 , -1.060804831 ), ( 71 , 1.300413065 , -1.015925991 ), ( 71 , 1.224220226 , -0.847148996 ), ( 71 , 1.53767469 , -0.908537291 ), ( 71 , 1.519399103 , -0.853788489 ), ( 71 , 1.490268509 , -0.842131207 ), ( 71 , 1.427271065 , -0.782987245 ), ( 71 , 1.51621594 , -0.725887207 ), ( 71 , 1.43006827 , -0.68455186 ), ( 71 , 1.352807565 , -0.707893477 ), ( 71 , 0.973394157 , -0.88382751 ), ( 71 , 1.044312971 , -0.766505661 ), ( 71 , 0.941739597 , -0.762992779 ), ( 71 , 0.839640397 , -0.775271896 ), ( 71 , 0.888328581 , -0.699460504 ), ( 71 , 0.935920151 , -0.60794659 ), ( 71 , 1.181979272 , -0.718628764 ), ( 71 , 1.261857188 , -0.598857789 ), ( 71 , 1.104103137 , -0.572376317 ), ( 71 , 1.071685284 , -0.541944206 ), ( 71 , 1.232070546 , -0.404532879 ), ( 71 , 1.133186377 , -0.43676549 ), ( 71 , 0.267565331 , -1.062198094 ), ( 71 , 0.306554219 , -0.992453823 ), ( 71 , 0.422391586 , -0.851784902 ), ( 71 , 0.281005718 , -0.836715021 ), ( 71 , 0.359580394 , -0.761003813 ), ( 71 , 0.575541465 , -0.823283254 ), ( 71 , 0.722344409 , -0.747685057 ), ( 71 , 0.630211128 , -0.652084464 ), ( 71 , 0.150183666 , -0.792828334 ), ( 71 , 0.278932211 , -0.709446167 ), ( 71 , 0.12822281 , -0.709746605 ), ( 71 , 0.110695487 , -0.685233218 ), ( 71 , 0.456463209 , -0.600501222 ), ( 71 , 0.363410924 , -0.585523738 ), ( 71 , 0.203419805 , -0.526931672 ), ( 71 , 0.411852234 , -0.492824832 ), ( 71 , 0.387454676 , -0.432805789 ), ( 71 , 0.857596715 , -0.622929113 ), ( 71 , 0.849405456 , -0.620596226 ), ( 71 , 0.735816812 , -0.652763716 ), ( 71 , 0.838111029 , -0.505840599 ), ( 71 , 0.84372806 , -0.481252507 ), ( 71 , 0.714106995 , -0.576752005 ), ( 71 , 0.76189131 , -0.539146085 ), ( 71 , 0.716668432 , -0.4449726 ), ( 71 , 0.9594512 , -0.497632553 ), ( 71 , 0.999213658 , -0.454356702 ), ( 71 , 1.031843301 , -0.439531311 ), ( 71 , 0.92694497 , -0.429635999 ), ( 71 , 1.059346832 , -0.394358133 ), ( 71 , 1.112665699 , -0.282410778 ), ( 71 , 0.962866678 , -0.339863211 ), ( 71 , 0.871686784 , -0.328893966 ), ( 71 , 0.958237014 , -0.303080223 ), ( 71 , 0.968244018 , -0.250686122 ), ( 71 , 0.987076919 , -0.172485744 ), ( 71 , 0.684322609 , -0.351198799 ), ( 71 , 0.721285425 , -0.356075583 ), ( 71 , 0.606051801 , -0.340946885 ), ( 71 , 0.680435521 , -0.30774986 ), ( 71 , 0.679104602 , -0.260852172 ), ( 71 , 0.521495571 , -0.242118962 ), ( 71 , 0.817291156 , -0.240220011 ), ( 71 , 0.919253472 , -0.169820162 ), ( 71 , 0.759729407 , -0.182252661 ), ( 71 , 0.678095027 , -0.163201964 ), ( 71 , 0.594598702 , -0.171417835 ), ( 71 , 0.85720124 , -0.074831128 ), ( 71 , 0.785620654 , -0.031495366 ), ( 71 , 2.917633021 , -1.505013153 ), ( 71 , 2.262883801 , -1.292820231 ), ( 71 , 3.067972922 , -1.264413486 ), ( 71 , 3.048360993 , -1.263076088 ), ( 71 , 2.771162811 , -1.210413693 ), ( 71 , 3.070083118 , -1.195179228 ), ( 71 , 2.94685157 , -1.160852079 ), ( 71 , 2.787531474 , -1.125701341 ), ( 71 , 2.799440379 , -1.118866351 ), ( 71 , 2.887770805 , -1.12231481 ), ( 71 , 2.552880056 , -1.217575319 ), ( 71 , 2.666904978 , -1.184944728 ), ( 71 , 2.431375322 , -1.181177462 ), ( 71 , 2.535532654 , -1.153311471 ), ( 71 , 2.52563072 , -1.12554383 ), ( 71 , 2.643655901 , -1.114134863 ), ( 71 , 2.669611384 , -1.074109057 ), ( 71 , 2.805880696 , -1.064421773 ), ( 71 , 2.609779355 , -1.092317735 ), ( 71 , 2.614574559 , -1.014527223 ), ( 71 , 2.111350624 , -1.203173874 ), ( 71 , 1.813758098 , -1.195645465 ), ( 71 , 2.087289602 , -1.062166255 ), ( 71 , 2.017376658 , -1.023984693 ), ( 71 , 2.350816564 , -1.126269452 ), ( 71 , 2.32287037 , -0.981608901 ), ( 71 , 2.376033425 , -0.983335651 ), ( 71 , 2.499233623 , -0.996482943 ), ( 71 , 2.495353902 , -0.994642998 ), ( 71 , 2.42072937 , -0.971115979 ), ( 71 , 2.471663047 , -0.957737575 ), ( 71 , 2.473517161 , -0.948615902 ), ( 71 , 2.456983838 , -0.939338305 ), ( 71 , 2.252213578 , -0.989822485 ), ( 71 , 2.205103092 , -0.972994199 ), ( 71 , 2.149130583 , -0.945029834 ), ( 71 , 2.186698165 , -0.917826665 ), ( 71 , 2.166485397 , -0.920834658 ), ( 71 , 2.152213852 , -0.911693158 ), ( 71 , 2.226449539 , -0.892470993 ), ( 71 , 2.345202348 , -0.885745806 ), ( 71 , 2.280187312 , -0.840612898 ), ( 71 , 2.287085844 , -0.822330229 ), ( 71 , 2.285471489 , -0.816795678 ), ( 71 , 3.128322518 , -1.103904739 ), ( 71 , 3.044756783 , -1.105198235 ), ( 71 , 3.038934435 , -1.076259664 ), ( 71 , 2.997576546 , -1.071096534 ), ( 71 , 3.131860636 , -1.055074604 ), ( 71 , 3.043588947 , -1.073114661 ), ( 71 , 3.059445376 , -1.06711458 ), ( 71 , 3.043706841 , -1.053566298 ), ( 71 , 3.000733534 , -1.05585171 ), ( 71 , 2.926482763 , -1.053907759 ), ( 71 , 2.957870637 , -1.03386978 ), ( 71 , 2.955966373 , -1.031583033 ), ( 71 , 3.064265372 , -1.004699771 ), ( 71 , 3.058600921 , -0.96994647 ), ( 71 , 3.069835696 , -0.918385229 ), ( 71 , 2.979761119 , -0.886394577 ), ( 71 , 2.833561154 , -1.035393752 ), ( 71 , 2.77104173 , -1.006656262 ), ( 71 , 2.788188241 , -0.961914603 ), ( 71 , 2.725594565 , -0.948096153 ), ( 71 , 2.810670279 , -0.906239617 ), ( 71 , 2.756445843 , -0.776406429 ), ( 71 , 2.747309472 , -0.751377462 ), ( 71 , 2.994894676 , -0.760325325 ), ( 71 , 3.043608123 , -0.686942776 ), ( 71 , 2.86944201 , -0.800684718 ), ( 71 , 2.870990016 , -0.733727243 ), ( 71 , 2.820673501 , -0.744266411 ), ( 71 , 2.818016622 , -0.715119771 ), ( 71 , 2.953465755 , -0.670181496 ), ( 71 , 2.917569179 , -0.688919645 ), ( 71 , 2.953790704 , -0.609597172 ), ( 71 , 2.945396996 , -0.581497674 ), ( 71 , 2.647954685 , -0.89147354 ), ( 71 , 2.636942475 , -0.845532715 ), ( 71 , 2.519715294 , -0.872479255 ), ( 71 , 2.736494885 , -0.733965585 ), ( 71 , 2.598075612 , -0.725827549 ), ( 71 , 2.484071544 , -0.777350576 ), ( 71 , 2.484789641 , -0.777234226 ), ( 71 , 2.434712906 , -0.796503331 ), ( 71 , 2.511903469 , -0.771226521 ), ( 71 , 2.539548585 , -0.737968826 ), ( 71 , 2.420453317 , -0.758599336 ), ( 71 , 2.563801426 , -0.666536294 ), ( 71 , 2.923327706 , -0.520007835 ), ( 71 , 2.807230706 , -0.560899493 ), ( 71 , 2.642176557 , -0.582805789 ), ( 71 , 2.722364489 , -0.517400081 ), ( 71 , 1.656505024 , -1.113926725 ), ( 71 , 1.713791093 , -1.079096053 ), ( 71 , 1.932713104 , -0.969991092 ), ( 71 , 2.001118405 , -0.981385653 ), ( 71 , 2.073721246 , -0.923315392 ), ( 71 , 2.022373175 , -0.946687561 ), ( 71 , 1.73487272 , -0.965926913 ), ( 71 , 1.888256266 , -0.893814668 ), ( 71 , 2.100217356 , -0.866040661 ), ( 71 , 2.117816068 , -0.851835656 ), ( 71 , 2.177173287 , -0.823986616 ), ( 71 , 2.063140761 , -0.881769129 ), ( 71 , 2.094609614 , -0.785846015 ), ( 71 , 2.133026625 , -0.823346913 ), ( 71 , 2.184172871 , -0.772394972 ), ( 71 , 2.282516896 , -0.795201804 ), ( 71 , 2.297513022 , -0.742920592 ), ( 71 , 2.301373646 , -0.740939808 ), ( 71 , 2.260612741 , -0.663382222 ), ( 71 , 2.071468087 , -0.774153393 ), ( 71 , 1.992414513 , -0.785175019 ), ( 71 , 2.10800241 , -0.717781446 ), ( 71 , 2.005808384 , -0.755370533 ), ( 71 , 2.02071202 , -0.67829881 ), ( 71 , 2.180601662 , -0.653062145 ), ( 71 , 2.166024341 , -0.631853771 ), ( 71 , 2.227460892 , -0.640907792 ), ( 71 , 2.159603437 , -0.622880945 ), ( 71 , 2.15480894 , -0.614502128 ), ( 71 , 1.660023706 , -0.857032367 ), ( 71 , 1.735011417 , -0.864421885 ), ( 71 , 1.777524746 , -0.847589766 ), ( 71 , 1.767908112 , -0.824191491 ), ( 71 , 1.714623079 , -0.847277713 ), ( 71 , 1.786896314 , -0.795290844 ), ( 71 , 1.787035488 , -0.723059337 ), ( 71 , 1.590460909 , -0.788830312 ), ( 71 , 1.675956283 , -0.640588507 ), ( 71 , 1.739486654 , -0.663158147 ), ( 71 , 1.725980742 , -0.632852804 ), ( 71 , 1.772499898 , -0.597648054 ), ( 71 , 1.897092614 , -0.650054403 ), ( 71 , 1.988992377 , -0.582809055 ), ( 71 , 1.929188606 , -0.568756057 ), ( 71 , 2.081524698 , -0.600016103 ), ( 71 , 2.071940728 , -0.550384567 ), ( 71 , 2.015941996 , -0.559898399 ), ( 71 , 2.044687234 , -0.536792547 ), ( 71 , 2.074159753 , -0.493647569 ), ( 71 , 1.935887072 , -0.531435675 ), ( 71 , 1.896339482 , -0.535023397 ), ( 71 , 1.90840085 , -0.50843491 ), ( 71 , 1.90729394 , -0.499171085 ), ( 71 , 1.783913329 , -0.519124637 ), ( 71 , 1.785781996 , -0.505684316 ), ( 71 , 1.994294255 , -0.468043267 ), ( 71 , 2.001289566 , -0.45931292 ), ( 71 , 2.033552613 , -0.403900931 ), ( 71 , 1.906063732 , -0.439108023 ), ( 71 , 1.896743606 , -0.409966872 ), ( 71 , 1.942257809 , -0.36955312 ), ( 71 , 2.303222959 , -0.582911969 ), ( 71 , 2.37045353 , -0.586442032 ), ( 71 , 2.488525973 , -0.583007848 ), ( 71 , 2.424157395 , -0.5816161 ), ( 71 , 2.294859125 , -0.561363512 ), ( 71 , 2.193713506 , -0.551655141 ), ( 71 , 2.182011392 , -0.542759538 ), ( 71 , 2.19278388 , -0.51823099 ), ( 71 , 2.171488734 , -0.518241525 ), ( 71 , 2.256108489 , -0.461056325 ), ( 71 , 2.355719824 , -0.396037541 ), ( 71 , 2.558476148 , -0.476066041 ), ( 71 , 2.578995695 , -0.40172873 ), ( 71 , 2.557405281 , -0.344318226 ), ( 71 , 2.729696795 , -0.342079508 ), ( 71 , 2.674786749 , -0.343638901 ), ( 71 , 2.598748435 , -0.304901411 ), ( 71 , 2.635540721 , -0.315922104 ), ( 71 , 2.457607093 , -0.367176156 ), ( 71 , 2.454320104 , -0.312312466 ), ( 71 , 2.484673916 , -0.305524955 ), ( 71 , 2.551928611 , -0.309034995 ), ( 71 , 2.562015786 , -0.187516141 ), ( 71 , 2.56163723 , -0.18366168 ), ( 71 , 2.209124297 , -0.473777808 ), ( 71 , 2.202944937 , -0.413445846 ), ( 71 , 2.212918337 , -0.409072353 ), ( 71 , 2.199718416 , -0.333991969 ), ( 71 , 2.01996244 , -0.383894751 ), ( 71 , 2.159544623 , -0.3015136 ), ( 71 , 2.187391499 , -0.261380144 ), ( 71 , 2.40057552 , -0.29430747 ), ( 71 , 2.387809677 , -0.232253262 ), ( 71 , 2.479860551 , -0.174304129 ), ( 71 , 2.444986994 , -0.167732744 ), ( 71 , 2.467238737 , -0.111781876 ), ( 71 , 2.295802736 , -0.189018514 ), ( 71 , 2.188560888 , -0.151333853 ), ( 71 , 2.236587869 , -0.10296695 ), ( 71 , 2.315196291 , -0.08201836 ), ( 71 , 2.314368124 , -0.073277898 ), ( 71 , 3.819820859 , -1.566813062 ), ( 71 , 3.558356243 , -1.497917013 ), ( 71 , 4.493616673 , -1.436733416 ), ( 71 , 4.286354755 , -1.409281284 ), ( 71 , 4.454546027 , -1.330286982 ), ( 71 , 4.008103768 , -1.369599653 ), ( 71 , 4.288711707 , -1.326010586 ), ( 71 , 3.483617416 , -1.375724947 ), ( 71 , 3.821856062 , -1.345872499 ), ( 71 , 3.282551517 , -1.392490004 ), ( 71 , 3.635087257 , -1.278783303 ), ( 71 , 3.971279335 , -1.317058903 ), ( 71 , 3.965423928 , -1.234136756 ), ( 71 , 3.858176416 , -1.216053936 ), ( 71 , 3.874418873 , -1.195894808 ), ( 71 , 4.223540608 , -1.255674982 ), ( 71 , 4.263940308 , -1.239032359 ), ( 71 , 4.423659079 , -1.224715839 ), ( 71 , 4.543196133 , -1.109721643 ), ( 71 , 4.348189479 , -1.169459837 ), ( 71 , 4.156508929 , -1.18053549 ), ( 71 , 4.278529258 , -1.196191464 ), ( 71 , 4.188065145 , -1.131919066 ), ( 71 , 4.08611998 , -1.161433569 ), ( 71 , 4.054668122 , -1.150005895 ), ( 71 , 4.025318503 , -1.155609497 ), ( 71 , 4.125344545 , -1.147550358 ), ( 71 , 4.107736174 , -1.135656624 ), ( 71 , 4.23585835 , -0.978636552 ), ( 71 , 4.186152067 , -1.024966549 ), ( 71 , 3.481884807 , -1.280109539 ), ( 71 , 3.560389426 , -1.279806304 ), ( 71 , 3.375724384 , -1.243958528 ), ( 71 , 3.545402375 , -1.208320862 ), ( 71 , 3.378514685 , -1.22237226 ), ( 71 , 3.822496484 , -1.117283751 ), ( 71 , 3.575133565 , -1.181099966 ), ( 71 , 3.635965784 , -1.160861196 ), ( 71 , 3.392606989 , -1.145743093 ), ( 71 , 3.20391528 , -1.161493786 ), ( 71 , 3.551020097 , -1.153286705 ), ( 71 , 3.530320825 , -1.114812436 ), ( 71 , 3.589885242 , -1.080220525 ), ( 71 , 3.64215862 , -1.070489905 ), ( 71 , 3.648066137 , -0.976567411 ), ( 71 , 3.981495263 , -1.100147226 ), ( 71 , 3.965814268 , -1.03222668 ), ( 71 , 3.884527076 , -1.029338971 ), ( 71 , 4.055911629 , -1.018430797 ), ( 71 , 3.782911802 , -1.033892324 ), ( 71 , 3.763903153 , -1.020341782 ), ( 71 , 3.775941704 , -0.960252455 ), ( 71 , 4.006244014 , -0.836009748 ), ( 71 , 3.998044904 , -0.838537819 ), ( 71 , 3.939891736 , -0.83674684 ), ( 71 , 3.893837879 , -0.816115521 ), ( 71 , 3.92659686 , -0.807181377 ), ( 71 , 3.924035543 , -0.758746929 ), ( 71 , 4.603531767 , -1.084044417 ), ( 71 , 4.595405608 , -1.022020428 ), ( 71 , 4.512846239 , -1.094923495 ), ( 71 , 4.540543829 , -1.037435471 ), ( 71 , 4.507236627 , -1.022721541 ), ( 71 , 4.511166552 , -0.991360746 ), ( 71 , 4.700259059 , -0.966588225 ), ( 71 , 4.558797797 , -0.952298007 ), ( 71 , 4.462527036 , -0.952280538 ), ( 71 , 4.51928974 , -0.891571956 ), ( 71 , 4.416336128 , -1.004967679 ), ( 71 , 4.34296163 , -0.93632215 ), ( 71 , 4.350850503 , -0.914236378 ), ( 71 , 4.284385035 , -0.969563475 ), ( 71 , 4.32083569 , -0.915265832 ), ( 71 , 4.28309862 , -0.903236068 ), ( 71 , 4.670854972 , -0.84274509 ), ( 71 , 4.651070761 , -0.854065263 ), ( 71 , 4.509659998 , -0.825882581 ), ( 71 , 4.568659842 , -0.82268886 ), ( 71 , 4.567282924 , -0.799781727 ), ( 71 , 4.595602901 , -0.794322851 ), ( 71 , 4.644797572 , -0.766289122 ), ( 71 , 4.600589488 , -0.707404565 ), ( 71 , 4.653538037 , -0.685301014 ), ( 71 , 4.482692923 , -0.775670208 ), ( 71 , 4.418000357 , -0.750351332 ), ( 71 , 4.485902037 , -0.726319523 ), ( 71 , 4.419127945 , -0.729300587 ), ( 71 , 4.347953087 , -0.703423146 ), ( 71 , 4.555946251 , -0.607368987 ), ( 71 , 4.166698315 , -0.93347061 ), ( 71 , 4.146423149 , -0.855927492 ), ( 71 , 4.222534792 , -0.812025475 ), ( 71 , 4.062171342 , -0.836369814 ), ( 71 , 4.137828994 , -0.774085173 ), ( 71 , 4.277120795 , -0.691672184 ), ( 71 , 4.276951606 , -0.689417965 ), ( 71 , 4.17170432 , -0.710434568 ), ( 71 , 4.233190294 , -0.700381015 ), ( 71 , 4.036539854 , -0.666180646 ), ( 71 , 3.999159411 , -0.690469692 ), ( 71 , 3.988793133 , -0.671813766 ), ( 71 , 4.133668132 , -0.716060157 ), ( 71 , 4.041687843 , -0.638766743 ), ( 71 , 4.298212054 , -0.548420497 ), ( 71 , 4.405005522 , -0.552421977 ), ( 71 , 4.420558121 , -0.531097047 ), ( 71 , 4.212335217 , -0.54903071 ), ( 71 , 4.126704308 , -0.524325677 ), ( 71 , 4.20305324 , -0.466323323 ), ( 71 , 4.385767876 , -0.404641072 ), ( 71 , 4.281814115 , -0.413785336 ), ( 71 , 4.279205089 , -0.381192601 ), ( 71 , 3.253989845 , -1.117403583 ), ( 71 , 3.214146692 , -1.103010766 ), ( 71 , 3.244687396 , -1.075631245 ), ( 71 , 3.405683576 , -1.053749157 ), ( 71 , 3.351206428 , -1.040099103 ), ( 71 , 3.182575151 , -1.043170343 ), ( 71 , 3.387286105 , -0.969723875 ), ( 71 , 3.483240608 , -1.00007958 ), ( 71 , 3.454008483 , -0.993248949 ), ( 71 , 3.473686824 , -0.995912752 ), ( 71 , 3.4741381 , -0.914813945 ), ( 71 , 3.260600207 , -0.972758731 ), ( 71 , 3.307918459 , -0.976185625 ), ( 71 , 3.32769854 , -0.951875283 ), ( 71 , 3.373716679 , -0.928961675 ), ( 71 , 3.463894271 , -0.788654518 ), ( 71 , 3.647172275 , -0.884202275 ), ( 71 , 3.750319717 , -0.804600154 ), ( 71 , 3.630495032 , -0.8354172 ), ( 71 , 3.831987909 , -0.80062156 ), ( 71 , 3.764952825 , -0.691571281 ), ( 71 , 3.781376645 , -0.689810334 ), ( 71 , 3.584957339 , -0.794021124 ), ( 71 , 3.683532764 , -0.72977568 ), ( 71 , 3.596017218 , -0.758193634 ), ( 71 , 3.586754719 , -0.753058277 ), ( 71 , 3.670177639 , -0.653979865 ), ( 71 , 3.693552365 , -0.609098065 ), ( 71 , 3.183525816 , -0.91008501 ), ( 71 , 3.357022766 , -0.711658972 ), ( 71 , 3.467435312 , -0.674596135 ), ( 71 , 3.202852312 , -0.798038415 ), ( 71 , 3.373816277 , -0.687489561 ), ( 71 , 3.58262169 , -0.601533169 ), ( 71 , 3.516694786 , -0.612189599 ), ( 71 , 3.518756715 , -0.593609168 ), ( 71 , 3.640452192 , -0.566284867 ), ( 71 , 3.624476433 , -0.544659541 ), ( 71 , 3.647334218 , -0.533691347 ), ( 71 , 3.578553606 , -0.48132473 ), ( 71 , 3.650014145 , -0.482376268 ), ( 71 , 3.413958599 , -0.510779923 ), ( 71 , 3.546932222 , -0.46404305 ), ( 71 , 3.877012902 , -0.625552572 ), ( 71 , 3.902646902 , -0.595907807 ), ( 71 , 3.924750999 , -0.536021602 ), ( 71 , 3.882589708 , -0.565967043 ), ( 71 , 3.776299717 , -0.504332304 ), ( 71 , 3.838343723 , -0.466421293 ), ( 71 , 3.841547731 , -0.458249094 ), ( 71 , 3.900311174 , -0.418428403 ), ( 71 , 3.858462163 , -0.421122598 ), ( 71 , 4.071629423 , -0.427418606 ), ( 71 , 4.067720613 , -0.416787922 ), ( 71 , 4.233868977 , -0.386715843 ), ( 71 , 4.274246449 , -0.328610889 ), ( 71 , 3.981269648 , -0.315729516 ), ( 71 , 4.094904917 , -0.253377194 ), ( 71 , 3.793989132 , -0.454018466 ), ( 71 , 3.805396088 , -0.409221094 ), ( 71 , 3.851720461 , -0.337051106 ), ( 71 , 3.776281485 , -0.348471321 ), ( 71 , 3.633100865 , -0.326533321 ), ( 71 , 3.658636229 , -0.246476627 ), ( 71 , 4.049869087 , -0.163182242 ), ( 71 , 3.848616831 , -0.213539423 ), ( 71 , 5.538795198 , -1.431652393 ), ( 71 , 6.256376844 , -1.448740584 ), ( 71 , 5.889826935 , -1.365079282 ), ( 71 , 4.837110886 , -1.350303614 ), ( 71 , 5.188748728 , -1.342312422 ), ( 71 , 5.449551706 , -1.200641358 ), ( 71 , 5.488114328 , -1.19423971 ), ( 71 , 6.083139335 , -1.222736051 ), ( 71 , 5.800651105 , -1.237510816 ), ( 71 , 5.826288765 , -1.233133973 ), ( 71 , 5.932007481 , -1.187881336 ), ( 71 , 6.029759205 , -1.101047071 ), ( 71 , 5.70126161 , -1.179780997 ), ( 71 , 5.81945757 , -1.189029599 ), ( 71 , 5.792230888 , -1.187240468 ), ( 71 , 5.838277654 , -1.096265487 ), ( 71 , 5.885808046 , -1.048140866 ), ( 71 , 4.772231902 , -1.318611565 ), ( 71 , 5.097160662 , -1.275680687 ), ( 71 , 4.859827648 , -1.252597498 ), ( 71 , 5.368158409 , -1.205490953 ), ( 71 , 5.330245886 , -1.174828869 ), ( 71 , 5.280363002 , -1.110436235 ), ( 71 , 5.29894989 , -1.086977976 ), ( 71 , 5.04823132 , -1.172284783 ), ( 71 , 4.861796569 , -1.156792735 ), ( 71 , 4.72794069 , -1.161317276 ), ( 71 , 5.192601269 , -1.034354171 ), ( 71 , 5.496413703 , -1.097415293 ), ( 71 , 5.40773176 , -1.07400026 ), ( 71 , 5.691092236 , -0.968190799 ), ( 71 , 5.724234113 , -0.953866956 ), ( 71 , 5.467866013 , -0.902618445 ), ( 71 , 5.563386914 , -0.856914935 ), ( 71 , 5.556653408 , -0.829916142 ), ( 71 , 5.560078807 , -0.799069843 ), ( 71 , 5.442785776 , -0.800312896 ), ( 71 , 5.507814768 , -0.750459894 ), ( 71 , 6.23919354 , -1.145656226 ), ( 71 , 6.139892322 , -1.094969268 ), ( 71 , 6.276029964 , -1.099603039 ), ( 71 , 6.266366099 , -1.097329324 ), ( 71 , 6.025837432 , -1.019927579 ), ( 71 , 6.00990015 , -0.992657904 ), ( 71 , 5.900046373 , -0.755081945 ), ( 71 , 6.231320782 , -0.888218708 ), ( 71 , 6.24399169 , -0.849268502 ), ( 71 , 6.227906737 , -0.842593712 ), ( 71 , 6.191255759 , -0.796079726 ), ( 71 , 6.108635667 , -0.82973128 ), ( 71 , 6.212946317 , -0.793479233 ), ( 71 , 5.991981313 , -0.787977341 ), ( 71 , 6.03757524 , -0.712391828 ), ( 71 , 5.965329616 , -0.727659302 ), ( 71 , 6.106172033 , -0.683447943 ), ( 71 , 5.726241899 , -0.722789557 ), ( 71 , 5.649050567 , -0.639611654 ), ( 71 , 5.679557126 , -0.56778066 ), ( 71 , 5.909903843 , -0.605198312 ), ( 71 , 5.834495849 , -0.60669486 ), ( 71 , 5.971073568 , -0.481102304 ), ( 71 , 5.843932043 , -0.492332775 ), ( 71 , 5.809558814 , -0.473902508 ), ( 71 , 4.975041889 , -1.050754128 ), ( 71 , 4.864651285 , -0.914342207 ), ( 71 , 5.039698579 , -0.854558756 ), ( 71 , 5.111067741 , -0.807616817 ), ( 71 , 4.988049067 , -0.821216009 ), ( 71 , 5.004601579 , -0.80233613 ), ( 71 , 5.065852305 , -0.791926201 ), ( 71 , 5.082972423 , -0.771345751 ), ( 71 , 5.242186827 , -0.827240621 ), ( 71 , 5.282472485 , -0.81568751 ), ( 71 , 5.315682955 , -0.74805653 ), ( 71 , 5.218915958 , -0.768158824 ), ( 71 , 5.168192695 , -0.726217194 ), ( 71 , 5.309481129 , -0.713941841 ), ( 71 , 5.336373608 , -0.617454218 ), ( 71 , 5.253647871 , -0.661116497 ), ( 71 , 5.25170001 , -0.655008217 ), ( 71 , 5.251380439 , -0.638730064 ), ( 71 , 4.725727367 , -0.901455713 ), ( 71 , 4.948123312 , -0.825098188 ), ( 71 , 4.98304188 , -0.709699991 ), ( 71 , 4.732582865 , -0.709260914 ), ( 71 , 4.923135579 , -0.691208968 ), ( 71 , 4.960846186 , -0.581710247 ), ( 71 , 4.84849382 , -0.642441631 ), ( 71 , 4.831886509 , -0.628597997 ), ( 71 , 4.861114583 , -0.575281021 ), ( 71 , 5.058653116 , -0.64393548 ), ( 71 , 5.140032675 , -0.574440032 ), ( 71 , 5.182773776 , -0.497265133 ), ( 71 , 5.037925906 , -0.520653385 ), ( 71 , 4.946625886 , -0.558367646 ), ( 71 , 4.999415991 , -0.507562189 ), ( 71 , 5.016639519 , -0.473239046 ), ( 71 , 5.064442911 , -0.42256771 ), ( 71 , 5.466015626 , -0.68257476 ), ( 71 , 5.538379712 , -0.662056733 ), ( 71 , 5.525711949 , -0.604387448 ), ( 71 , 5.573829744 , -0.536614146 ), ( 71 , 5.584431223 , -0.474889362 ), ( 71 , 5.424768176 , -0.513568491 ), ( 71 , 5.383574149 , -0.511252809 ), ( 71 , 5.438692777 , -0.468949492 ), ( 71 , 5.502392564 , -0.518867928 ), ( 71 , 5.715513836 , -0.478290159 ), ( 71 , 5.791231077 , -0.388170785 ), ( 71 , 5.77022269 , -0.296092041 ), ( 71 , 5.6591323 , -0.32714634 ), ( 71 , 5.581778956 , -0.282390383 ), ( 71 , 5.627245342 , -0.244824599 ), ( 71 , 5.701565303 , -0.204181802 ), ( 71 , 5.361375026 , -0.418603999 ), ( 71 , 5.469584859 , -0.333597402 ), ( 71 , 5.362550942 , -0.364800264 ), ( 71 , 5.345395392 , -0.33918218 ), ( 71 , 5.400990154 , -0.298845343 ), ( 71 , 5.179924111 , -0.298070046 ), ( 71 , 5.327701093 , -0.19168406 ), ( 71 , 5.446361569 , -0.288358562 ), ( 71 , 5.433436053 , -0.27573079 ), ( 71 , 5.465143222 , -0.230434675 ), ( 71 , 5.506499409 , -0.204142328 ), ( 71 , 5.618400788 , -0.203634229 ), ( 71 , 5.530238285 , -0.143727416 ), ( 71 , 5.59368407 , -0.162809308 ), ( 71 , 5.39426597 , -0.216091888 ), ( 71 , 5.360099006 , -0.163543191 ), ( 72 , 0.747608533 , 0.037919733 ), ( 72 , 0.702248583 , 0.085010113 ), ( 72 , 0.918216257 , 0.182537524 ), ( 72 , 0.832610355 , 0.174637366 ), ( 72 , 0.703064664 , 0.105982142 ), ( 72 , 0.63054466 , 0.169519944 ), ( 72 , 0.847098136 , 0.272102493 ), ( 72 , 0.774401194 , 0.28437426 ), ( 72 , 0.92920531 , 0.289685594 ), ( 72 , 0.971330144 , 0.301831125 ), ( 72 , 1.094842693 , 0.278320358 ), ( 72 , 1.121463564 , 0.343393998 ), ( 72 , 1.141376126 , 0.369811315 ), ( 72 , 1.11050845 , 0.391855321 ), ( 72 , 1.085874769 , 0.416628675 ), ( 72 , 0.907673211 , 0.357168405 ), ( 72 , 0.874361239 , 0.346844635 ), ( 72 , 0.961494792 , 0.373601094 ), ( 72 , 0.984498552 , 0.424732146 ), ( 72 , 1.03999322 , 0.420289468 ), ( 72 , 0.931114812 , 0.407849099 ), ( 72 , 0.935689016 , 0.426981007 ), ( 72 , 0.935687957 , 0.426985916 ), ( 72 , 0.762846675 , 0.355576426 ), ( 72 , 0.68489657 , 0.430188449 ), ( 72 , 0.636469114 , 0.439118211 ), ( 72 , 0.641262477 , 0.45449427 ), ( 72 , 0.583333536 , 0.446728983 ), ( 72 , 0.599626196 , 0.501686607 ), ( 72 , 0.800587046 , 0.402500011 ), ( 72 , 0.893683557 , 0.500074192 ), ( 72 , 0.842891751 , 0.542254692 ), ( 72 , 0.73624905 , 0.543042116 ), ( 72 , 0.708203427 , 0.598558729 ), ( 72 , 0.826711594 , 0.651028638 ), ( 72 , 0.716421693 , 0.612869744 ), ( 72 , 0.751315294 , 0.647412456 ), ( 72 , 0.730690874 , 0.659575183 ), ( 72 , 0.804877254 , 0.703239464 ), ( 72 , 0.790584947 , 0.712031723 ), ( 72 , 1.17941595 , 0.346279411 ), ( 72 , 1.187398698 , 0.377555445 ), ( 72 , 1.150766527 , 0.400809682 ), ( 72 , 1.231343724 , 0.400417895 ), ( 72 , 1.281108744 , 0.44272376 ), ( 72 , 1.290514896 , 0.533215983 ), ( 72 , 1.214111859 , 0.558483199 ), ( 72 , 1.371132812 , 0.530578069 ), ( 72 , 1.396318097 , 0.572211986 ), ( 72 , 1.458587167 , 0.717738539 ), ( 72 , 1.404776544 , 0.738029353 ), ( 72 , 1.458046598 , 0.766849744 ), ( 72 , 1.493700893 , 0.751530953 ), ( 72 , 1.483738204 , 0.756147736 ), ( 72 , 1.252429865 , 0.720907363 ), ( 72 , 1.375587313 , 0.823271757 ), ( 72 , 1.389913508 , 0.853872502 ), ( 72 , 0.932236459 , 0.663457663 ), ( 72 , 1.14320464 , 0.696964988 ), ( 72 , 1.153926684 , 0.728322748 ), ( 72 , 1.096165631 , 0.728621542 ), ( 72 , 1.122811842 , 0.806650368 ), ( 72 , 0.895901291 , 0.714768756 ), ( 72 , 1.106912463 , 0.856849819 ), ( 72 , 1.001628821 , 0.837448991 ), ( 72 , 1.181941003 , 0.778462505 ), ( 72 , 1.213435944 , 0.806927055 ), ( 72 , 1.439394728 , 0.932581334 ), ( 72 , 1.560656869 , 0.9713931 ), ( 72 , 1.558275128 , 0.976450694 ), ( 72 , 1.34290447 , 0.973179155 ), ( 72 , 0.42503875 , 0.439235256 ), ( 72 , 0.51514008 , 0.543392018 ), ( 72 , 0.257661318 , 0.482709251 ), ( 72 , 0.241822821 , 0.498450306 ), ( 72 , 0.409749874 , 0.621479725 ), ( 72 , 0.432530247 , 0.637799427 ), ( 72 , 0.455471513 , 0.657435474 ), ( 72 , 0.323003119 , 0.602010056 ), ( 72 , 0.398976956 , 0.676613398 ), ( 72 , 0.662175964 , 0.69747639 ), ( 72 , 0.615423251 , 0.749511434 ), ( 72 , 0.445340688 , 0.761661249 ), ( 72 , 0.617819146 , 0.778415206 ), ( 72 , 0.484518362 , 0.82762554 ), ( 72 , 0.515108669 , 0.866424979 ), ( 72 , 0.264085726 , 0.659586398 ), ( 72 , 0.295742526 , 0.724541729 ), ( 72 , 0.224723259 , 0.719631741 ), ( 72 , 0.039557367 , 0.712821624 ), ( 72 , 0.027661984 , 0.713819301 ), ( 72 , 0.041277729 , 0.8096194 ), ( 72 , 0.115032229 , 0.856065629 ), ( 72 , 0.05685346 , 0.871382761 ), ( 72 , 0.044831847 , 0.912023969 ), ( 72 , 0.304835289 , 0.856149372 ), ( 72 , 0.339469231 , 0.855357369 ), ( 72 , 0.388392832 , 0.902095427 ), ( 72 , 0.407704547 , 0.958968903 ), ( 72 , 0.309700819 , 0.990899519 ), ( 72 , 0.209367526 , 0.897878922 ), ( 72 , 0.141805672 , 0.902828024 ), ( 72 , 0.140451519 , 0.939250297 ), ( 72 , 0.143098435 , 0.944566972 ), ( 72 , 0.024706845 , 0.972320832 ), ( 72 , 0.051249448 , 0.999576552 ), ( 72 , 0.249768488 , 0.959099213 ), ( 72 , 0.237817924 , 0.982960048 ), ( 72 , 0.231667662 , 0.998661042 ), ( 72 , 0.264181585 , 1.018645479 ), ( 72 , 0.141212572 , 1.018197001 ), ( 72 , 0.084274195 , 1.032170803 ), ( 72 , 0.060811822 , 1.047184646 ), ( 72 , 0.00301628 , 1.085168893 ), ( 72 , 0.129177948 , 1.083223087 ), ( 72 , 0.080631133 , 1.085641551 ), ( 72 , 0.040525388 , 1.135705801 ), ( 72 , 0.766343638 , 0.843694033 ), ( 72 , 0.899169761 , 0.868224355 ), ( 72 , 0.858786246 , 0.89392312 ), ( 72 , 1.001150349 , 0.996967146 ), ( 72 , 0.749585283 , 0.925578662 ), ( 72 , 0.591131282 , 0.91648905 ), ( 72 , 0.662743334 , 1.007013691 ), ( 72 , 0.623986021 , 1.001592071 ), ( 72 , 0.580095453 , 0.998380587 ), ( 72 , 0.639516386 , 1.041241167 ), ( 72 , 0.784578095 , 1.006413274 ), ( 72 , 0.846872462 , 1.039578553 ), ( 72 , 0.705475403 , 1.029349484 ), ( 72 , 0.671852783 , 1.033443993 ), ( 72 , 1.088237989 , 1.022065101 ), ( 72 , 1.20578652 , 1.07097484 ), ( 72 , 1.012299571 , 1.053073667 ), ( 72 , 1.299365603 , 1.182912955 ), ( 72 , 1.370657398 , 1.177771139 ), ( 72 , 1.425863918 , 1.225709638 ), ( 72 , 1.537147801 , 1.244236077 ), ( 72 , 0.931312474 , 1.144096628 ), ( 72 , 1.318159769 , 1.207062818 ), ( 72 , 0.424905881 , 1.023415372 ), ( 72 , 0.394033685 , 1.043394641 ), ( 72 , 0.392072263 , 1.051582532 ), ( 72 , 0.447739701 , 1.056761223 ), ( 72 , 0.545521201 , 1.123740369 ), ( 72 , 0.445745808 , 1.165745414 ), ( 72 , 0.511315191 , 1.251835007 ), ( 72 , 0.248378629 , 1.126300812 ), ( 72 , 0.210296461 , 1.136550234 ), ( 72 , 0.382350051 , 1.153260729 ), ( 72 , 0.236081369 , 1.159519859 ), ( 72 , 0.003838596 , 1.16672001 ), ( 72 , 0.093249368 , 1.169465058 ), ( 72 , 0.155419564 , 1.185531673 ), ( 72 , 0.343423683 , 1.271957175 ), ( 72 , 0.987117921 , 1.249973251 ), ( 72 , 0.901804412 , 1.2602264 ), ( 72 , 0.727215792 , 1.316115466 ), ( 72 , 1.134668903 , 1.362744818 ), ( 72 , 1.061092246 , 1.364893757 ), ( 72 , 1.100581989 , 1.37933455 ), ( 72 , 1.17639999 , 1.412527095 ), ( 72 , 0.578079326 , 1.390912968 ), ( 72 , 0.606462107 , 1.496388785 ), ( 72 , 2.364832069 , 0.046621242 ), ( 72 , 2.306223131 , 0.044740914 ), ( 72 , 2.395601168 , 0.131128164 ), ( 72 , 2.406143748 , 0.156657434 ), ( 72 , 2.212204704 , 0.1260321 ), ( 72 , 2.306529379 , 0.182091457 ), ( 72 , 2.183779712 , 0.164060359 ), ( 72 , 2.32933798 , 0.306218507 ), ( 72 , 2.554628873 , 0.1784053 ), ( 72 , 2.546388189 , 0.18357378 ), ( 72 , 2.492926589 , 0.224426096 ), ( 72 , 2.65788408 , 0.323411885 ), ( 72 , 2.513429999 , 0.349862226 ), ( 72 , 2.433685975 , 0.402800333 ), ( 72 , 2.596612045 , 0.429985221 ), ( 72 , 2.498983078 , 0.471008811 ), ( 72 , 2.516832843 , 0.484475522 ), ( 72 , 2.150254943 , 0.19520952 ), ( 72 , 2.159811286 , 0.2806253 ), ( 72 , 2.202417833 , 0.299862889 ), ( 72 , 2.045938804 , 0.317475547 ), ( 72 , 2.018978724 , 0.387879553 ), ( 72 , 2.0931277 , 0.404615566 ), ( 72 , 2.108828175 , 0.458455612 ), ( 72 , 2.176912219 , 0.459636793 ), ( 72 , 2.173411451 , 0.46119463 ), ( 72 , 2.132907579 , 0.479620882 ), ( 72 , 2.419305222 , 0.436525701 ), ( 72 , 2.389483356 , 0.544548906 ), ( 72 , 2.370368929 , 0.573888915 ), ( 72 , 2.371241064 , 0.660429859 ), ( 72 , 2.346473461 , 0.667731611 ), ( 72 , 2.758873636 , 0.426597575 ), ( 72 , 2.623690155 , 0.502383575 ), ( 72 , 2.718729844 , 0.61466197 ), ( 72 , 2.933791181 , 0.607099573 ), ( 72 , 2.905114679 , 0.670105795 ), ( 72 , 2.960434408 , 0.738555957 ), ( 72 , 2.898564338 , 0.678378643 ), ( 72 , 2.816039484 , 0.720950116 ), ( 72 , 2.771339601 , 0.731446882 ), ( 72 , 2.87546191 , 0.788846574 ), ( 72 , 2.885665347 , 0.812689408 ), ( 72 , 2.541973539 , 0.575871022 ), ( 72 , 2.585276638 , 0.620021832 ), ( 72 , 2.449674524 , 0.703085612 ), ( 72 , 2.904953039 , 0.875672129 ), ( 72 , 2.920280005 , 0.896732052 ), ( 72 , 3.013804423 , 0.990412514 ), ( 72 , 2.73308964 , 0.949589545 ), ( 72 , 2.818699735 , 0.993457759 ), ( 72 , 3.05911302 , 1.061898247 ), ( 72 , 2.962941146 , 1.085295476 ), ( 72 , 3.055651987 , 1.089021067 ), ( 72 , 1.965204042 , 0.345802833 ), ( 72 , 1.99695861 , 0.389902631 ), ( 72 , 2.047752921 , 0.427406481 ), ( 72 , 1.917735509 , 0.468148108 ), ( 72 , 1.966367109 , 0.487094246 ), ( 72 , 2.057057845 , 0.509077989 ), ( 72 , 2.096708047 , 0.509710569 ), ( 72 , 2.083672236 , 0.569965396 ), ( 72 , 1.921523438 , 0.490824509 ), ( 72 , 1.923467996 , 0.518959194 ), ( 72 , 1.95212971 , 0.68617117 ), ( 72 , 1.9149553 , 0.674981963 ), ( 72 , 2.13587796 , 0.562363973 ), ( 72 , 2.172227792 , 0.62357751 ), ( 72 , 2.185139208 , 0.624455469 ), ( 72 , 2.120721768 , 0.633067526 ), ( 72 , 2.110387936 , 0.634336252 ), ( 72 , 2.12846466 , 0.673357466 ), ( 72 , 2.193218242 , 0.705873122 ), ( 72 , 2.217081085 , 0.807189777 ), ( 72 , 2.060102521 , 0.631267439 ), ( 72 , 2.060629421 , 0.633027554 ), ( 72 , 2.032018868 , 0.690222641 ), ( 72 , 2.088204218 , 0.759285665 ), ( 72 , 1.740423617 , 0.576271528 ), ( 72 , 1.696075775 , 0.608501254 ), ( 72 , 1.849928187 , 0.708294957 ), ( 72 , 1.841411756 , 0.77577981 ), ( 72 , 1.739565718 , 0.725733816 ), ( 72 , 1.676782033 , 0.754507013 ), ( 72 , 1.678905309 , 0.760061561 ), ( 72 , 1.630656993 , 0.727753398 ), ( 72 , 1.620952883 , 0.753377539 ), ( 72 , 1.591042422 , 0.813063282 ), ( 72 , 2.034328072 , 0.890566873 ), ( 72 , 1.696647774 , 0.915406634 ), ( 72 , 1.654415352 , 0.986571356 ), ( 72 , 1.764577907 , 0.99366641 ), ( 72 , 1.682667669 , 1.019702698 ), ( 72 , 2.343656242 , 0.775089882 ), ( 72 , 2.464288282 , 0.877520818 ), ( 72 , 2.34288673 , 0.99289888 ), ( 72 , 2.96171277 , 1.163858242 ), ( 72 , 3.132863273 , 1.183541148 ), ( 72 , 2.825736383 , 1.14522166 ), ( 72 , 2.56346287 , 1.103865787 ), ( 72 , 2.569037766 , 1.132623758 ), ( 72 , 2.557111357 , 1.145406901 ), ( 72 , 2.916277255 , 1.255918891 ), ( 72 , 2.701736766 , 1.264259504 ), ( 72 , 2.11694928 , 1.008317732 ), ( 72 , 2.04182305 , 1.052358437 ), ( 72 , 2.162898473 , 1.15497191 ), ( 72 , 2.000499998 , 1.156018511 ), ( 72 , 2.199130019 , 1.202963847 ), ( 72 , 2.038023609 , 1.206966363 ), ( 72 , 2.039875587 , 1.225326064 ), ( 72 , 1.876861229 , 1.084473702 ), ( 72 , 1.638884518 , 1.154509628 ), ( 72 , 1.851140261 , 1.316174448 ), ( 72 , 2.384011653 , 1.194595293 ), ( 72 , 2.373518879 , 1.244511961 ), ( 72 , 2.528497463 , 1.269675381 ), ( 72 , 2.842161798 , 1.326354632 ), ( 72 , 2.203006982 , 1.343292879 ), ( 72 , 2.315951439 , 1.364237527 ), ( 72 , 2.451317747 , 1.545845339 ), ( 72 , 3.94170635 , 0.015524534 ), ( 72 , 3.910756379 , 0.059618032 ), ( 72 , 3.968303536 , 0.06746853 ), ( 72 , 3.944911859 , 0.095864285 ), ( 72 , 3.87850276 , 0.103914009 ), ( 72 , 4.033152409 , 0.1480297 ), ( 72 , 4.092755917 , 0.178676093 ), ( 72 , 3.995016702 , 0.176737948 ), ( 72 , 3.972916221 , 0.203745477 ), ( 72 , 3.88205763 , 0.13939476 ), ( 72 , 3.864176972 , 0.142407846 ), ( 72 , 3.863106164 , 0.184988027 ), ( 72 , 3.904442807 , 0.267478571 ), ( 72 , 3.938093063 , 0.280223464 ), ( 72 , 4.116235336 , 0.204393969 ), ( 72 , 4.090139315 , 0.21470791 ), ( 72 , 4.054111415 , 0.227463461 ), ( 72 , 3.977483246 , 0.349820735 ), ( 72 , 3.808421372 , 0.245404375 ), ( 72 , 3.711976862 , 0.266873415 ), ( 72 , 3.898716213 , 0.347111514 ), ( 72 , 3.757502743 , 0.334758394 ), ( 72 , 3.921789207 , 0.421843494 ), ( 72 , 3.882130226 , 0.401989252 ), ( 72 , 3.916917382 , 0.430646504 ), ( 72 , 4.007007308 , 0.46846129 ), ( 72 , 3.902108042 , 0.558803527 ), ( 72 , 3.973453103 , 0.577335334 ), ( 72 , 4.281198042 , 0.388156874 ), ( 72 , 4.381543443 , 0.410459412 ), ( 72 , 4.414690782 , 0.443315996 ), ( 72 , 4.347760306 , 0.539977814 ), ( 72 , 4.370204706 , 0.538884401 ), ( 72 , 4.347481142 , 0.590301798 ), ( 72 , 4.321848797 , 0.589067957 ), ( 72 , 4.402899512 , 0.61010551 ), ( 72 , 4.257927119 , 0.63799511 ), ( 72 , 4.509293387 , 0.680415572 ), ( 72 , 4.601952554 , 0.714004275 ), ( 72 , 4.646609349 , 0.873436384 ), ( 72 , 4.166741484 , 0.599740044 ), ( 72 , 4.1037191 , 0.646067606 ), ( 72 , 4.103413666 , 0.654795078 ), ( 72 , 4.246450206 , 0.664492079 ), ( 72 , 4.223651792 , 0.792037063 ), ( 72 , 3.992186317 , 0.668485764 ), ( 72 , 4.103078265 , 0.765271219 ), ( 72 , 4.080574132 , 0.872561578 ), ( 72 , 4.4069088 , 0.814184495 ), ( 72 , 4.4998725 , 0.903284447 ), ( 72 , 4.499198194 , 0.988881199 ), ( 72 , 3.569247072 , 0.393164616 ), ( 72 , 3.596144657 , 0.481456534 ), ( 72 , 3.63632232 , 0.589690145 ), ( 72 , 3.526929114 , 0.543656677 ), ( 72 , 3.727105946 , 0.621399982 ), ( 72 , 3.827271446 , 0.62709202 ), ( 72 , 3.61076386 , 0.661362511 ), ( 72 , 3.747554482 , 0.848090655 ), ( 72 , 3.334224899 , 0.624284296 ), ( 72 , 3.447113389 , 0.675856933 ), ( 72 , 3.205367163 , 0.686649898 ), ( 72 , 3.250435882 , 0.747958509 ), ( 72 , 3.336030199 , 0.752700937 ), ( 72 , 3.495559997 , 0.825012003 ), ( 72 , 3.530039363 , 0.835090921 ), ( 72 , 3.562916375 , 0.919566761 ), ( 72 , 3.588895229 , 0.972632783 ), ( 72 , 3.445058041 , 0.991935684 ), ( 72 , 3.334560903 , 0.90334733 ), ( 72 , 3.894353954 , 0.972937429 ), ( 72 , 3.742723415 , 0.905100592 ), ( 72 , 3.775443216 , 0.935224802 ), ( 72 , 3.739605354 , 0.951945875 ), ( 72 , 3.735612562 , 0.989823867 ), ( 72 , 3.928734694 , 0.97072194 ), ( 72 , 3.9211227 , 1.0762915 ), ( 72 , 4.355299794 , 1.067658234 ), ( 72 , 4.368141248 , 1.087478758 ), ( 72 , 4.427667092 , 1.083841795 ), ( 72 , 4.541977178 , 1.161745424 ), ( 72 , 4.145739886 , 1.130968926 ), ( 72 , 4.077981776 , 1.183411174 ), ( 72 , 4.434534449 , 1.296466002 ), ( 72 , 3.594802394 , 1.049737287 ), ( 72 , 3.533762202 , 1.120160385 ), ( 72 , 3.884941476 , 1.145736484 ), ( 72 , 3.46008036 , 1.174776764 ), ( 72 , 3.167864688 , 1.19901572 ), ( 72 , 3.276369084 , 1.244416905 ), ( 72 , 3.378258425 , 1.316140364 ), ( 72 , 3.96671121 , 1.215675596 ), ( 72 , 4.091761553 , 1.241867618 ), ( 72 , 3.905178846 , 1.306923943 ), ( 72 , 4.325396816 , 1.392583793 ), ( 72 , 3.304349114 , 1.382570575 ), ( 72 , 4.057457163 , 1.409722095 ), ( 72 , 3.885477277 , 1.409354324 ), ( 72 , 4.27547632 , 1.460795382 ), ( 72 , 3.890656365 , 1.464985625 ), ( 72 , 5.446140596 , 0.047390948 ), ( 72 , 5.489044286 , 0.140714235 ), ( 72 , 5.556617853 , 0.125094185 ), ( 72 , 5.573808387 , 0.143710504 ), ( 72 , 5.638272594 , 0.190430136 ), ( 72 , 5.551039203 , 0.20562439 ), ( 72 , 5.578867339 , 0.201908173 ), ( 72 , 5.399888913 , 0.113461781 ), ( 72 , 5.452641377 , 0.243708257 ), ( 72 , 5.484796565 , 0.298407579 ), ( 72 , 5.674753797 , 0.185217282 ), ( 72 , 5.566297513 , 0.29194162 ), ( 72 , 5.710640607 , 0.391437025 ), ( 72 , 5.685021175 , 0.407039514 ), ( 72 , 5.758827557 , 0.417844312 ), ( 72 , 5.691846198 , 0.509531913 ), ( 72 , 5.337751079 , 0.268117276 ), ( 72 , 5.239761716 , 0.233519748 ), ( 72 , 5.240942645 , 0.25347681 ), ( 72 , 5.287597803 , 0.277080349 ), ( 72 , 5.295239845 , 0.283881204 ), ( 72 , 5.275848313 , 0.295075193 ), ( 72 , 5.375052853 , 0.296560135 ), ( 72 , 5.42797762 , 0.373512854 ), ( 72 , 5.236591261 , 0.307366124 ), ( 72 , 5.19663909 , 0.294221376 ), ( 72 , 5.276232219 , 0.332888949 ), ( 72 , 5.139707536 , 0.324498383 ), ( 72 , 5.196210349 , 0.349756627 ), ( 72 , 5.20709571 , 0.354953867 ), ( 72 , 5.221281403 , 0.416934179 ), ( 72 , 5.287668835 , 0.46942151 ), ( 72 , 5.308669276 , 0.497817473 ), ( 72 , 5.567385896 , 0.44389959 ), ( 72 , 5.58870189 , 0.566392636 ), ( 72 , 5.40763059 , 0.454952433 ), ( 72 , 5.408434207 , 0.465962639 ), ( 72 , 5.368725665 , 0.485773995 ), ( 72 , 5.397342251 , 0.56463848 ), ( 72 , 5.425332223 , 0.59112112 ), ( 72 , 5.382187618 , 0.574347131 ), ( 72 , 5.510518814 , 0.564611636 ), ( 72 , 5.475804654 , 0.589292193 ), ( 72 , 5.555626178 , 0.588056097 ), ( 72 , 5.559270909 , 0.659412515 ), ( 72 , 5.463141106 , 0.604887905 ), ( 72 , 5.474662753 , 0.647057909 ), ( 72 , 5.477651747 , 0.703367992 ), ( 72 , 5.495484056 , 0.714890855 ), ( 72 , 5.921950452 , 0.409688418 ), ( 72 , 6.070169226 , 0.524353422 ), ( 72 , 5.984599813 , 0.57273871 ), ( 72 , 5.988947853 , 0.616756346 ), ( 72 , 5.787556916 , 0.438973165 ), ( 72 , 5.779422956 , 0.447823564 ), ( 72 , 5.777006272 , 0.494772434 ), ( 72 , 6.075572043 , 0.645210189 ), ( 72 , 6.252650004 , 0.721619234 ), ( 72 , 6.187446716 , 0.751849537 ), ( 72 , 5.990425721 , 0.673975029 ), ( 72 , 6.068645959 , 0.794304202 ), ( 72 , 6.261910441 , 0.833018959 ), ( 72 , 6.086923415 , 0.811999848 ), ( 72 , 6.17549932 , 0.878105744 ), ( 72 , 5.740331944 , 0.610463432 ), ( 72 , 5.769476124 , 0.64547012 ), ( 72 , 5.676959155 , 0.605195083 ), ( 72 , 5.619502428 , 0.618007118 ), ( 72 , 5.767074794 , 0.724993399 ), ( 72 , 5.771540685 , 0.747253949 ), ( 72 , 5.829470593 , 0.786953963 ), ( 72 , 5.552293483 , 0.673111766 ), ( 72 , 5.60073185 , 0.698457549 ), ( 72 , 5.640319828 , 0.738189484 ), ( 72 , 5.635734034 , 0.745268776 ), ( 72 , 5.599663614 , 0.776989998 ), ( 72 , 5.601792217 , 0.823176029 ), ( 72 , 5.819080326 , 0.863439457 ), ( 72 , 5.665684641 , 0.869089305 ), ( 72 , 5.682580814 , 0.887639805 ), ( 72 , 5.927851457 , 0.779621152 ), ( 72 , 5.913440815 , 0.788074692 ), ( 72 , 5.926221111 , 0.799824938 ), ( 72 , 5.968648682 , 0.907212742 ), ( 72 , 6.147354513 , 0.936663921 ), ( 72 , 6.278847931 , 0.973119361 ), ( 72 , 6.069887313 , 0.92604026 ), ( 72 , 6.280856092 , 1.006542408 ), ( 72 , 5.848505036 , 0.905145138 ), ( 72 , 5.958562469 , 0.923108116 ), ( 72 , 6.004717333 , 0.985246461 ), ( 72 , 5.785665144 , 0.935902732 ), ( 72 , 5.833847865 , 0.980463133 ), ( 72 , 6.107918973 , 0.999089542 ), ( 72 , 6.065711607 , 1.002659482 ), ( 72 , 6.188795803 , 1.023704565 ), ( 72 , 6.04366712 , 1.025074414 ), ( 72 , 6.008018216 , 1.046529428 ), ( 72 , 6.241325758 , 1.112535894 ), ( 72 , 5.091916274 , 0.368374774 ), ( 72 , 5.172308363 , 0.417881483 ), ( 72 , 5.206607256 , 0.490431444 ), ( 72 , 5.169718648 , 0.510764857 ), ( 72 , 5.162911161 , 0.527654096 ), ( 72 , 5.151706131 , 0.54814678 ), ( 72 , 5.214553802 , 0.535602128 ), ( 72 , 5.199726748 , 0.543517265 ), ( 72 , 5.236501121 , 0.572287544 ), ( 72 , 5.219099673 , 0.577260402 ), ( 72 , 4.959498025 , 0.492171313 ), ( 72 , 4.991322022 , 0.596050598 ), ( 72 , 5.007190958 , 0.60027296 ), ( 72 , 5.142857463 , 0.565595217 ), ( 72 , 5.132497802 , 0.584011452 ), ( 72 , 5.309304008 , 0.565133549 ), ( 72 , 5.299286415 , 0.651947358 ), ( 72 , 5.294345359 , 0.676583561 ), ( 72 , 5.278924572 , 0.683065443 ), ( 72 , 5.457038375 , 0.739704572 ), ( 72 , 5.360038019 , 0.686421532 ), ( 72 , 5.32215614 , 0.718002798 ), ( 72 , 5.346987173 , 0.731474108 ), ( 72 , 5.401729029 , 0.7478183 ), ( 72 , 5.399104036 , 0.750337903 ), ( 72 , 5.238386689 , 0.684297398 ), ( 72 , 5.243638105 , 0.770020901 ), ( 72 , 5.177930448 , 0.77402839 ), ( 72 , 5.174288563 , 0.811325557 ), ( 72 , 5.300389782 , 0.827995402 ), ( 72 , 4.90900932 , 0.611012758 ), ( 72 , 4.935010076 , 0.600287418 ), ( 72 , 4.922039594 , 0.647061686 ), ( 72 , 4.936870694 , 0.686274738 ), ( 72 , 5.049030257 , 0.681180951 ), ( 72 , 5.042804719 , 0.704407779 ), ( 72 , 4.973995285 , 0.754925025 ), ( 72 , 4.994046069 , 0.801486109 ), ( 72 , 4.937066891 , 0.787731913 ), ( 72 , 4.856998916 , 0.707423242 ), ( 72 , 4.845677258 , 0.715160073 ), ( 72 , 4.723353902 , 0.772019252 ), ( 72 , 4.853539878 , 0.798914586 ), ( 72 , 4.79224339 , 0.809952759 ), ( 72 , 5.079169593 , 0.784242721 ), ( 72 , 5.019821458 , 0.845514583 ), ( 72 , 5.027423185 , 1.006615337 ), ( 72 , 4.73856504 , 1.001116934 ), ( 72 , 4.960756257 , 0.990469186 ), ( 72 , 4.883967368 , 1.038959942 ), ( 72 , 5.501413048 , 0.812949475 ), ( 72 , 5.476630703 , 0.808957435 ), ( 72 , 5.530056835 , 0.825148631 ), ( 72 , 5.458304057 , 0.838294423 ), ( 72 , 5.460995734 , 0.866625337 ), ( 72 , 5.655836831 , 0.884516461 ), ( 72 , 5.57963183 , 0.873874703 ), ( 72 , 5.564027702 , 0.89503749 ), ( 72 , 5.628175815 , 0.923870285 ), ( 72 , 5.619949406 , 0.93007314 ), ( 72 , 5.666242262 , 0.935155271 ), ( 72 , 5.685128566 , 0.95228198 ), ( 72 , 5.561514746 , 0.992802772 ), ( 72 , 5.387305667 , 0.858306094 ), ( 72 , 5.347456208 , 0.954418585 ), ( 72 , 5.471548809 , 0.997900139 ), ( 72 , 5.582519354 , 1.01799344 ), ( 72 , 5.559227982 , 1.017477339 ), ( 72 , 5.62452869 , 1.072210711 ), ( 72 , 5.549285691 , 1.046959424 ), ( 72 , 5.441140214 , 1.019564406 ), ( 72 , 5.375940151 , 1.054559574 ), ( 72 , 5.825397414 , 1.031736939 ), ( 72 , 5.797117143 , 1.034797574 ), ( 72 , 5.863600113 , 1.021616944 ), ( 72 , 5.912297589 , 1.061618026 ), ( 72 , 5.780285191 , 1.070548933 ), ( 72 , 5.755178553 , 1.076207356 ), ( 72 , 6.066826441 , 1.126252621 ), ( 72 , 5.976025281 , 1.161583904 ), ( 72 , 5.759831434 , 1.14201705 ), ( 72 , 5.56226138 , 1.130106263 ), ( 72 , 5.648009033 , 1.164592532 ), ( 72 , 5.873984909 , 1.20503593 ), ( 72 , 5.902949047 , 1.292823459 ), ( 72 , 5.269840552 , 1.008796727 ), ( 72 , 5.231740196 , 1.008964894 ), ( 72 , 5.28828991 , 1.041824573 ), ( 72 , 5.21344728 , 1.05793054 ), ( 72 , 5.32918308 , 1.107094041 ), ( 72 , 5.213399175 , 1.129597257 ), ( 72 , 5.276748376 , 1.197284385 ), ( 72 , 4.989374479 , 1.083751255 ), ( 72 , 4.798243431 , 1.176966038 ), ( 72 , 4.774530956 , 1.236293034 ), ( 72 , 5.077023848 , 1.204530367 ), ( 72 , 5.005197649 , 1.257932778 ), ( 72 , 5.668731165 , 1.244564372 ), ( 72 , 5.814064668 , 1.334514977 ), ( 72 , 5.698012843 , 1.365419357 ), ( 72 , 5.976304832 , 1.402681805 ), ( 72 , 5.952054422 , 1.403894304 ), ( 72 , 5.858387155 , 1.430116984 ), ( 72 , 5.127652817 , 1.298133879 ), ( 72 , 5.402175503 , 1.340999292 ), ( 72 , 5.691533973 , 1.466753478 ), ( 72 , 5.5534711 , 1.470590548 ), ( 72 , 0.023280753 , -0.678181459 ), ( 72 , 0.030053976 , -0.678542337 ), ( 72 , 0.124101292 , -0.511120746 ), ( 72 , 0.119416906 , -0.492936686 ), ( 72 , 6.103916055 , -0.533252229 ), ( 72 , 0.032211002 , -0.442573381 ), ( 72 , 0.247923086 , -0.442674016 ), ( 72 , 0.168423049 , -0.411889156 ), ( 72 , 0.125865249 , -0.429990767 ), ( 72 , 0.050570846 , -0.324641712 ), ( 72 , 0.108328557 , -0.322402816 ), ( 72 , 6.093335333 , -0.405365744 ), ( 72 , 5.97463613 , -0.403041187 ), ( 72 , 6.095457082 , -0.329399786 ), ( 72 , 6.104446613 , -0.212414012 ), ( 72 , 0.0722802 , -0.233945769 ), ( 72 , 0.036094635 , -0.258737544 ), ( 72 , 0.024093336 , -0.1678655 ), ( 72 , 0.043885026 , -0.156626937 ), ( 72 , 0.085560811 , -0.126098859 ), ( 72 , 0.023872927 , -0.133791254 ), ( 72 , 6.281101914 , -0.049632781 ), ( 72 , 0.399744361 , -0.213945281 ), ( 72 , 0.487242354 , -0.230973884 ), ( 72 , 0.48111719 , -0.224919419 ), ( 72 , 0.527206545 , -0.14786628 ), ( 72 , 0.447392476 , -0.151133254 ), ( 72 , 0.481116617 , -0.117003736 ), ( 72 , 0.424415876 , -0.006122412 ), ( 72 , 0.557578047 , 0.104451694 ), ( 72 , 0.177986171 , -0.12624409 ), ( 72 , 0.150526184 , -0.079351506 ), ( 72 , 0.128676215 , -0.060549526 ), ( 72 , 0.264738466 , -0.028950589 ), ( 72 , 0.251594537 , 0.031166278 ), ( 72 , 0.09195162 , -0.050781523 ), ( 72 , 0.086601866 , -0.043260431 ), ( 72 , 0.429056599 , 0.045135105 ), ( 72 , 0.382502364 , 0.09341394 ), ( 72 , 0.413975933 , 0.144422339 ), ( 72 , 0.53179272 , 0.137253174 ), ( 72 , 0.547110359 , 0.17587509 ), ( 72 , 0.495229835 , 0.221345046 ), ( 72 , 0.278319784 , 0.11806709 ), ( 72 , 0.375122209 , 0.181636535 ), ( 72 , 0.357673083 , 0.219983786 ), ( 72 , 5.79144804 , -0.182331888 ), ( 72 , 5.800818824 , -0.14286201 ), ( 72 , 5.814555994 , -0.139875375 ), ( 72 , 5.943329412 , -0.060624047 ), ( 72 , 6.146953882 , -0.094065316 ), ( 72 , 6.082933903 , -0.045991655 ), ( 72 , 6.091080654 , -0.024852006 ), ( 72 , 6.052127922 , 0.053273569 ), ( 72 , 6.043233027 , 0.073727377 ), ( 72 , 6.028620415 , 0.077853602 ), ( 72 , 6.10778214 , 0.139310013 ), ( 72 , 5.657236844 , -0.088184529 ), ( 72 , 5.783739495 , 0.010951749 ), ( 72 , 5.813229555 , 0.047708012 ), ( 72 , 5.52639864 , -0.00183256 ), ( 72 , 5.748748754 , 0.072562667 ), ( 72 , 5.985146405 , 0.083531913 ), ( 72 , 5.824085003 , 0.074746101 ), ( 72 , 5.811556612 , 0.120362347 ), ( 72 , 5.757532141 , 0.184595127 ), ( 72 , 5.786536049 , 0.176163315 ), ( 72 , 5.966237677 , 0.246491089 ), ( 72 , 5.834969813 , 0.22513307 ), ( 72 , 5.844215084 , 0.271323632 ), ( 72 , 6.244410579 , 0.039058148 ), ( 72 , 0.023430969 , 0.062938306 ), ( 72 , 0.068263582 , 0.101994126 ), ( 72 , 0.137977794 , 0.159892473 ), ( 72 , 0.0171795 , 0.250955977 ), ( 72 , 6.22043693 , 0.22955435 ), ( 72 , 0.214141756 , 0.258469568 ), ( 72 , 0.292866079 , 0.351703106 ), ( 72 , 0.040684293 , 0.306008843 ), ( 72 , 0.07790457 , 0.35302635 ), ( 72 , 0.039584937 , 0.347754062 ), ( 72 , 0.073818235 , 0.405895309 ), ( 72 , 0.208363706 , 0.458877409 ), ( 72 , 0.169988427 , 0.459433856 ), ( 72 , 6.260468913 , 0.327193288 ), ( 72 , 5.964844468 , 0.300771517 ), ( 72 , 5.995736347 , 0.347164551 ), ( 72 , 6.111422678 , 0.369817811 ), ( 72 , 6.127479631 , 0.414687055 ), ( 72 , 6.107303924 , 0.415824616 ), ( 72 , 6.043445146 , 0.427986954 ), ( 72 , 6.068110973 , 0.462912517 ), ( 72 , 0.025947033 , 0.428808035 ), ( 72 , 6.233097687 , 0.447740525 ), ( 72 , 0.035027117 , 0.547876065 ), ( 72 , 6.193849447 , 0.493022029 ), ( 72 , 6.22395203 , 0.5009714 ), ( 72 , 6.099460907 , 0.531599054 ), ( 72 , 6.19523348 , 0.610080939 ), ( 72 , 6.233397841 , 0.633109233 ), ( 72 , 1.578054421 , -0.611627559 ), ( 72 , 1.71677872 , -0.562455915 ), ( 72 , 1.750257935 , -0.534865745 ), ( 72 , 1.723093665 , -0.525204245 ), ( 72 , 1.673301111 , -0.52116796 ), ( 72 , 1.719737685 , -0.517138316 ), ( 72 , 1.662170707 , -0.517863615 ), ( 72 , 1.487342818 , -0.518723329 ), ( 72 , 1.7873657 , -0.421384937 ), ( 72 , 1.717682169 , -0.459538588 ), ( 72 , 1.759462166 , -0.381569853 ), ( 72 , 1.771323946 , -0.362593094 ), ( 72 , 1.853947561 , -0.363553149 ), ( 72 , 1.923796386 , -0.360394994 ), ( 72 , 1.930267212 , -0.357908024 ), ( 72 , 1.819737969 , -0.298427329 ), ( 72 , 1.876873273 , -0.273750042 ), ( 72 , 1.874465467 , -0.266043368 ), ( 72 , 1.686264463 , -0.337286146 ), ( 72 , 1.656697234 , -0.305891055 ), ( 72 , 1.789550248 , -0.219644971 ), ( 72 , 1.801665776 , -0.212136021 ), ( 72 , 1.375218425 , -0.494541283 ), ( 72 , 1.372313773 , -0.457435408 ), ( 72 , 1.395276611 , -0.452512761 ), ( 72 , 1.394166481 , -0.438503253 ), ( 72 , 1.500484763 , -0.371399794 ), ( 72 , 1.448299456 , -0.291086987 ), ( 72 , 1.212943021 , -0.361072824 ), ( 72 , 1.215098628 , -0.342797792 ), ( 72 , 1.340171365 , -0.301960301 ), ( 72 , 1.402203907 , -0.254039409 ), ( 72 , 1.546337207 , -0.274574864 ), ( 72 , 1.516064788 , -0.266200532 ), ( 72 , 1.490442427 , -0.267693021 ), ( 72 , 1.601038463 , -0.210576302 ), ( 72 , 1.533098244 , -0.203264506 ), ( 72 , 1.734566979 , -0.143738843 ), ( 72 , 1.66546441 , -0.143748349 ), ( 72 , 1.491560704 , -0.214864766 ), ( 72 , 1.494710952 , -0.185507437 ), ( 72 , 1.519194337 , -0.146322063 ), ( 72 , 1.42274669 , -0.187758395 ), ( 72 , 1.406351724 , -0.151252833 ), ( 72 , 1.627726094 , -0.0861426 ), ( 72 , 1.563644923 , -0.081193836 ), ( 72 , 1.959552015 , -0.329434646 ), ( 72 , 1.93001718 , -0.284683869 ), ( 72 , 1.969306582 , -0.261200618 ), ( 72 , 1.987025173 , -0.268474379 ), ( 72 , 1.898676878 , -0.254982932 ), ( 72 , 1.905830804 , -0.238780839 ), ( 72 , 2.073826074 , -0.194630161 ), ( 72 , 2.103156295 , -0.163304169 ), ( 72 , 2.043191884 , -0.118222134 ), ( 72 , 1.857472821 , -0.223608757 ), ( 72 , 1.882107639 , -0.182017025 ), ( 72 , 1.851905222 , -0.182463067 ), ( 72 , 1.805303882 , -0.166079971 ), ( 72 , 1.997179118 , -0.134865008 ), ( 72 , 1.923488531 , -0.107083862 ), ( 72 , 1.909069259 , -0.101624706 ), ( 72 , 1.920191554 , -0.087117329 ), ( 72 , 1.967792938 , -0.037784846 ), ( 72 , 2.178342431 , -0.131913797 ), ( 72 , 2.201543965 , -0.020065924 ), ( 72 , 2.193834357 , -0.015143034 ), ( 72 , 2.247797269 , 0.006325248 ), ( 72 , 2.060099074 , -0.053304 ), ( 72 , 2.051262991 , -0.029362884 ), ( 72 , 2.083183102 , -0.011098832 ), ( 72 , 2.06255143 , 0.059056396 ), ( 72 , 2.140957922 , 0.051474533 ), ( 72 , 2.216246819 , 0.056173806 ), ( 72 , 2.15043908 , 0.086017127 ), ( 72 , 2.172888013 , 0.108807913 ), ( 72 , 1.773821342 , -0.155660694 ), ( 72 , 1.746702651 , -0.110761969 ), ( 72 , 1.80778072 , -0.111513736 ), ( 72 , 1.798572361 , -0.098530923 ), ( 72 , 1.81889309 , -0.064447307 ), ( 72 , 1.794672645 , -0.06132731 ), ( 72 , 1.720470831 , -0.085523346 ), ( 72 , 1.688486398 , -0.077829506 ), ( 72 , 1.744349951 , -0.024088305 ), ( 72 , 1.84838826 , -0.043182585 ), ( 72 , 1.8487146 , -0.00972049 ), ( 72 , 1.847402704 , 0.006002971 ), ( 72 , 1.848199633 , 0.04253884 ), ( 72 , 1.703645975 , -0.052745773 ), ( 72 , 1.71523577 , 0.022223243 ), ( 72 , 1.674611746 , 0.046525375 ), ( 72 , 1.770780132 , 0.043620313 ), ( 72 , 1.738684882 , 0.08041052 ), ( 72 , 1.679160686 , 0.085027811 ), ( 72 , 1.732490605 , 0.096332417 ), ( 72 , 1.965609916 , 0.039483506 ), ( 72 , 1.965369508 , 0.057716825 ), ( 72 , 2.022483112 , 0.060829245 ), ( 72 , 1.985537051 , 0.092445872 ), ( 72 , 1.967608631 , 0.149259495 ), ( 72 , 2.002113258 , 0.139036916 ), ( 72 , 2.040079587 , 0.156596314 ), ( 72 , 2.040033364 , 0.168138387 ), ( 72 , 2.072722753 , 0.219378252 ), ( 72 , 1.892934934 , 0.186588181 ), ( 72 , 1.960063117 , 0.202132369 ), ( 72 , 1.960107451 , 0.250599913 ), ( 72 , 1.93335745 , 0.303854394 ), ( 72 , 1.945615237 , 0.316731628 ), ( 72 , 1.168460496 , -0.194155048 ), ( 72 , 1.272580244 , -0.179600684 ), ( 72 , 1.216826202 , -0.143552794 ), ( 72 , 1.023559452 , -0.166161997 ), ( 72 , 1.135580043 , -0.045876911 ), ( 72 , 1.373086287 , -0.123424805 ), ( 72 , 1.464138999 , -0.084431091 ), ( 72 , 1.396494505 , -0.090903814 ), ( 72 , 1.346228888 , -0.049298279 ), ( 72 , 1.483819848 , -0.024879012 ), ( 72 , 1.460853017 , -0.016639645 ), ( 72 , 1.521418594 , -0.03116402 ), ( 72 , 1.521744412 , -0.026209768 ), ( 72 , 1.55314762 , 0.014593552 ), ( 72 , 1.519503414 , 0.028092646 ), ( 72 , 1.481929348 , 0.014551818 ), ( 72 , 1.368014138 , 0.034341795 ), ( 72 , 1.425709144 , 0.071247679 ), ( 72 , 1.34436713 , 0.065424799 ), ( 72 , 1.320963685 , 0.060347772 ), ( 72 , 1.360393424 , 0.076839513 ), ( 72 , 1.291260943 , 0.081491147 ), ( 72 , 1.028967579 , -0.079014215 ), ( 72 , 0.895959002 , -0.081248899 ), ( 72 , 0.96342589 , -0.040739797 ), ( 72 , 1.070060482 , -0.017663949 ), ( 72 , 1.070181975 , -0.009938813 ), ( 72 , 1.061669613 , 0.053718565 ), ( 72 , 0.868469855 , -0.049635281 ), ( 72 , 0.955213907 , 0.048229611 ), ( 72 , 0.984946401 , 0.125469213 ), ( 72 , 1.188605182 , 0.017104853 ), ( 72 , 1.164351957 , 0.123834373 ), ( 72 , 1.316825151 , 0.198534636 ), ( 72 , 1.110796166 , 0.186773755 ), ( 72 , 1.182267575 , 0.187652427 ), ( 72 , 1.124511376 , 0.241499155 ), ( 72 , 1.146417425 , 0.262776769 ), ( 72 , 1.600956567 , 0.037925355 ), ( 72 , 1.588114937 , 0.049991747 ), ( 72 , 1.57742952 , 0.050774783 ), ( 72 , 1.574381872 , 0.050893972 ), ( 72 , 1.577438827 , 0.055614175 ), ( 72 , 1.503205746 , 0.075732219 ), ( 72 , 1.486816525 , 0.088617102 ), ( 72 , 1.507199931 , 0.109919082 ), ( 72 , 1.750376633 , 0.156810731 ), ( 72 , 1.614193347 , 0.165242106 ), ( 72 , 1.681336419 , 0.196050241 ), ( 72 , 1.677558434 , 0.227154978 ), ( 72 , 1.499276893 , 0.12022606 ), ( 72 , 1.520679958 , 0.131794 ), ( 72 , 1.503998274 , 0.216685 ), ( 72 , 1.483142693 , 0.227288486 ), ( 72 , 1.58194592 , 0.227333972 ), ( 72 , 1.615869784 , 0.241042771 ), ( 72 , 1.607910984 , 0.24384087 ), ( 72 , 1.846722625 , 0.250209832 ), ( 72 , 1.824347857 , 0.248336609 ), ( 72 , 1.831903896 , 0.278223989 ), ( 72 , 1.869094557 , 0.281605118 ), ( 72 , 1.645428953 , 0.276643316 ), ( 72 , 1.637850521 , 0.28677187 ), ( 72 , 1.710382939 , 0.387212769 ), ( 72 , 1.682367731 , 0.391960442 ), ( 72 , 1.681235827 , 0.413805519 ), ( 72 , 1.776821933 , 0.387355008 ), ( 72 , 1.859620288 , 0.433889845 ), ( 72 , 1.768855365 , 0.430615263 ), ( 72 , 1.719664468 , 0.386134802 ), ( 72 , 1.814864677 , 0.476227164 ), ( 72 , 1.411661457 , 0.279958775 ), ( 72 , 1.489536647 , 0.305818949 ), ( 72 , 1.533553354 , 0.321910934 ), ( 72 , 1.52373042 , 0.368892542 ), ( 72 , 1.46626505 , 0.341200635 ), ( 72 , 1.286802569 , 0.285997465 ), ( 72 , 1.288603165 , 0.290076968 ), ( 72 , 1.267116532 , 0.300238909 ), ( 72 , 1.3705029 , 0.37042252 ), ( 72 , 1.33815383 , 0.39288588 ), ( 72 , 1.589128226 , 0.444075307 ), ( 72 , 1.482910791 , 0.422819093 ), ( 72 , 1.530051979 , 0.480047089 ), ( 72 , 1.69153922 , 0.534857981 ), ( 72 , 1.72782928 , 0.54941372 ), ( 72 , 1.680811828 , 0.563248383 ), ( 72 , 1.450627669 , 0.470915026 ), ( 72 , 1.550597936 , 0.522968591 ), ( 72 , 1.51927125 , 0.532937324 ), ( 72 , 1.436750434 , 0.561981546 ), ( 72 , 1.488992931 , 0.591994886 ), ( 72 , 1.58545681 , 0.547864039 ), ( 72 , 1.598117997 , 0.558453037 ), ( 72 , 1.605413667 , 0.629453788 ), ( 72 , 1.569562783 , 0.64948778 ), ( 72 , 1.60655089 , 0.662922607 ), ( 72 , 3.20312492 , -0.641042202 ), ( 72 , 3.060318681 , -0.621402461 ), ( 72 , 3.133119617 , -0.552417587 ), ( 72 , 3.054103103 , -0.583814213 ), ( 72 , 3.132442147 , -0.483654444 ), ( 72 , 3.341765759 , -0.379929274 ), ( 72 , 3.444855792 , -0.351225538 ), ( 72 , 3.408743431 , -0.362638286 ), ( 72 , 3.428531935 , -0.318691111 ), ( 72 , 3.451774568 , -0.298277989 ), ( 72 , 3.179601044 , -0.321759342 ), ( 72 , 3.297168856 , -0.299334553 ), ( 72 , 3.394904949 , -0.261552189 ), ( 72 , 3.382084355 , -0.234795339 ), ( 72 , 2.932276521 , -0.456178835 ), ( 72 , 3.040184598 , -0.426547327 ), ( 72 , 3.059394746 , -0.309022107 ), ( 72 , 3.038939538 , -0.294100195 ), ( 72 , 3.028420197 , -0.280055047 ), ( 72 , 2.849561662 , -0.360062312 ), ( 72 , 3.002920517 , -0.277267718 ), ( 72 , 3.013516016 , -0.227776244 ), ( 72 , 2.935834774 , -0.243190552 ), ( 72 , 2.946961781 , -0.202255723 ), ( 72 , 3.242639434 , -0.127393215 ), ( 72 , 3.09437914 , -0.128467281 ), ( 72 , 3.157257388 , -0.095638183 ), ( 72 , 3.452952058 , -0.243693395 ), ( 72 , 3.553033851 , -0.201371721 ), ( 72 , 3.499985757 , -0.219555025 ), ( 72 , 3.626343804 , -0.238750234 ), ( 72 , 3.625253859 , -0.135863174 ), ( 72 , 3.660824005 , -0.120877163 ), ( 72 , 3.468506684 , -0.19847156 ), ( 72 , 3.467756432 , -0.181002718 ), ( 72 , 3.538030964 , -0.053225407 ), ( 72 , 3.796089956 , -0.074130021 ), ( 72 , 3.720821402 , -0.057985446 ), ( 72 , 3.867197597 , -0.014549412 ), ( 72 , 3.789605171 , 0.048680505 ), ( 72 , 3.561509948 , -0.016255375 ), ( 72 , 3.387023757 , -0.084893152 ), ( 72 , 3.387878544 , -0.016672497 ), ( 72 , 3.268831281 , -0.042404491 ), ( 72 , 3.311485524 , -0.014907938 ), ( 72 , 3.295454396 , 0.03946835 ), ( 72 , 3.382380704 , 0.053225168 ), ( 72 , 3.270160553 , 0.084447764 ), ( 72 , 3.491728108 , 0.057377057 ), ( 72 , 3.486782212 , 0.064974685 ), ( 72 , 3.537136172 , 0.162607478 ), ( 72 , 3.671461356 , 0.162290367 ), ( 72 , 3.394049556 , 0.162985018 ), ( 72 , 3.38377744 , 0.200646019 ), ( 72 , 3.545645824 , 0.251228886 ), ( 72 , 2.826186532 , -0.263714629 ), ( 72 , 2.698266034 , -0.232216472 ), ( 72 , 2.876724956 , -0.180212855 ), ( 72 , 2.77942792 , -0.154291925 ), ( 72 , 2.679690126 , -0.139515555 ), ( 72 , 2.950461743 , -0.060594859 ), ( 72 , 2.964315898 , -0.028901945 ), ( 72 , 2.840306764 , 0.062669105 ), ( 72 , 2.577349513 , -0.128847815 ), ( 72 , 2.526662753 , -0.049559775 ), ( 72 , 2.515292797 , -0.048483929 ), ( 72 , 2.451079522 , -0.048745448 ), ( 72 , 2.388349903 , 0.010473925 ), ( 72 , 2.553750749 , 0.15503345 ), ( 72 , 2.751154835 , 0.037523565 ), ( 72 , 2.814520331 , 0.057709368 ), ( 72 , 2.82445725 , 0.110759464 ), ( 72 , 2.636056591 , 0.202956517 ), ( 72 , 2.743253157 , 0.231934801 ), ( 72 , 2.698047915 , 0.220275133 ), ( 72 , 2.743324845 , 0.299036648 ), ( 72 , 3.287941111 , 0.134032667 ), ( 72 , 3.229204698 , 0.241814901 ), ( 72 , 3.042531925 , 0.109433777 ), ( 72 , 3.080963589 , 0.125208459 ), ( 72 , 3.063342384 , 0.21439692 ), ( 72 , 3.104091606 , 0.20603922 ), ( 72 , 3.443075315 , 0.325082211 ), ( 72 , 3.224946536 , 0.288804199 ), ( 72 , 3.376902841 , 0.467398665 ), ( 72 , 2.96315918 , 0.233712747 ), ( 72 , 2.968986503 , 0.302137742 ), ( 72 , 3.031226827 , 0.293146249 ), ( 72 , 3.179216801 , 0.462394822 ), ( 72 , 3.121550781 , 0.445445721 ), ( 72 , 3.231824233 , 0.472159027 ), ( 72 , 3.046002721 , 0.556422714 ), ( 72 , 3.124397828 , 0.709431052 ), ( 72 , 4.746886085 , -0.67309429 ), ( 72 , 4.765205839 , -0.594611606 ), ( 72 , 4.683549606 , -0.611161671 ), ( 72 , 4.640103028 , -0.61606066 ), ( 72 , 4.712130143 , -0.5830857 ), ( 72 , 4.708439836 , -0.528022549 ), ( 72 , 4.843414892 , -0.576804859 ), ( 72 , 4.868273474 , -0.522508314 ), ( 72 , 4.853035389 , -0.509464648 ), ( 72 , 4.751260192 , -0.523475781 ), ( 72 , 4.625929394 , -0.562984619 ), ( 72 , 4.628275147 , -0.561222935 ), ( 72 , 4.678720844 , -0.546781487 ), ( 72 , 4.547245299 , -0.532350031 ), ( 72 , 4.526255741 , -0.526469516 ), ( 72 , 4.73407405 , -0.430761869 ), ( 72 , 4.730761694 , -0.392714981 ), ( 72 , 4.845408963 , -0.405800795 ), ( 72 , 5.083788759 , -0.323981674 ), ( 72 , 4.947179913 , -0.345527235 ), ( 72 , 4.835078949 , -0.401417111 ), ( 72 , 4.85413626 , -0.331136035 ), ( 72 , 4.764538048 , -0.356455294 ), ( 72 , 4.798937359 , -0.3098105 ), ( 72 , 4.804184994 , -0.26582623 ), ( 72 , 4.91143247 , -0.306216365 ), ( 72 , 4.921768125 , -0.292804922 ), ( 72 , 4.865678729 , -0.296453541 ), ( 72 , 4.898544899 , -0.270914737 ), ( 72 , 4.960088635 , -0.259315511 ), ( 72 , 4.856526267 , -0.289029807 ), ( 72 , 4.575583246 , -0.445248345 ), ( 72 , 4.678889657 , -0.333740369 ), ( 72 , 4.601369137 , -0.318014613 ), ( 72 , 4.357121747 , -0.32857186 ), ( 72 , 4.470186069 , -0.221250465 ), ( 72 , 4.738695357 , -0.14151249 ), ( 72 , 4.742635203 , -0.056427001 ), ( 72 , 5.123922935 , -0.285783271 ), ( 72 , 5.103185905 , -0.268061138 ), ( 72 , 5.109320021 , -0.254175942 ), ( 72 , 5.149091074 , -0.245129175 ), ( 72 , 5.109318441 , -0.200446846 ), ( 72 , 5.162053489 , -0.144998089 ), ( 72 , 4.988215835 , -0.195299235 ), ( 72 , 5.075278501 , -0.186805875 ), ( 72 , 4.947713958 , -0.163543244 ), ( 72 , 5.064967974 , -0.07858419 ), ( 72 , 5.264802769 , -0.077101056 ), ( 72 , 5.30945595 , -0.060953623 ), ( 72 , 5.402424249 , -0.076479007 ), ( 72 , 5.392135207 , -2.41248E-05 ), ( 72 , 5.411810307 , 0.060062493 ), ( 72 , 5.285359115 , -0.002210413 ), ( 72 , 5.153956498 , -0.040377605 ), ( 72 , 5.131340261 , 0.004356381 ), ( 72 , 5.269730008 , 0.042638979 ), ( 72 , 5.300962017 , 0.059462145 ), ( 72 , 5.363378855 , 0.077785658 ), ( 72 , 5.343124973 , 0.096157486 ), ( 72 , 4.896952326 , -0.128060519 ), ( 72 , 4.870039179 , -0.117672868 ), ( 72 , 4.988560137 , -0.097023834 ), ( 72 , 4.931198902 , -0.06323589 ), ( 72 , 4.877985775 , -0.045216187 ), ( 72 , 5.06631561 , -0.020533689 ), ( 72 , 4.979516935 , 0.035487872 ), ( 72 , 4.989858943 , 0.044431857 ), ( 72 , 4.892772578 , 0.079550382 ), ( 72 , 4.882191733 , 0.109447195 ), ( 72 , 5.174717018 , 0.074147936 ), ( 72 , 5.267826831 , 0.192919694 ), ( 72 , 5.01087415 , 0.228601714 ), ( 72 , 5.065376552 , 0.236950658 ), ( 72 , 5.056008514 , 0.287774891 ), ( 72 , 4.331183496 , -0.279050211 ), ( 72 , 4.470465339 , -0.193532899 ), ( 72 , 4.170048 , -0.150937346 ), ( 72 , 4.201798184 , -0.140468501 ), ( 72 , 4.202135745 , -0.101834985 ), ( 72 , 4.699616037 , 0.001162265 ), ( 72 , 4.585236582 , 0.019536197 ), ( 72 , 4.385971873 , -0.053843376 ), ( 72 , 4.399231197 , 0.019030061 ), ( 72 , 4.176328321 , -0.109897306 ), ( 72 , 4.087907836 , -0.105186689 ), ( 72 , 4.260013982 , -0.028761758 ), ( 72 , 4.03929193 , -0.021896369 ), ( 72 , 4.051556809 , 0.010595821 ), ( 72 , 4.144545968 , 0.043645409 ), ( 72 , 4.313458822 , 0.027695383 ), ( 72 , 4.389358413 , 0.070541381 ), ( 72 , 4.326284771 , 0.144767872 ), ( 72 , 4.477296142 , 0.150502003 ), ( 72 , 4.421020204 , 0.18979429 ), ( 72 , 4.295265734 , 0.178970875 ), ( 72 , 4.336444467 , 0.233776132 ), ( 72 , 4.63354889 , 0.076213875 ), ( 72 , 4.727009934 , 0.146946996 ), ( 72 , 4.552393083 , 0.165225077 ), ( 72 , 4.572196452 , 0.198802678 ), ( 72 , 4.73735431 , 0.209506335 ), ( 72 , 4.734232107 , 0.295425674 ), ( 72 , 4.949597132 , 0.233693438 ), ( 72 , 4.898900455 , 0.259048728 ), ( 72 , 4.991779818 , 0.287332352 ), ( 72 , 4.972904678 , 0.283646004 ), ( 72 , 5.047536022 , 0.33119132 ), ( 72 , 5.082135623 , 0.348009817 ), ( 72 , 4.982753499 , 0.333795874 ), ( 72 , 4.994442123 , 0.407172161 ), ( 72 , 4.864159208 , 0.375006127 ), ( 72 , 4.850921453 , 0.382264625 ), ( 72 , 4.782862971 , 0.367216183 ), ( 72 , 4.900459455 , 0.376243349 ), ( 72 , 4.926034614 , 0.369433452 ), ( 72 , 4.927163255 , 0.483809105 ), ( 72 , 4.905939094 , 0.49046038 ), ( 72 , 4.634943848 , 0.300690231 ), ( 72 , 4.696723906 , 0.34712374 ), ( 72 , 4.412183749 , 0.275669676 ), ( 72 , 4.491845848 , 0.385568571 ), ( 72 , 4.493995002 , 0.461734399 ), ( 72 , 4.487045513 , 0.492755396 ), ( 72 , 4.527285967 , 0.504632532 ), ( 72 , 4.768534219 , 0.398368148 ), ( 72 , 4.767092324 , 0.426762701 ), ( 72 , 4.677669534 , 0.424191716 ), ( 72 , 4.723412701 , 0.459175494 ), ( 72 , 4.7151981 , 0.516148447 ), ( 72 , 4.803242654 , 0.480506101 ), ( 72 , 4.588945061 , 0.529131687 ), ( 72 , 4.678451795 , 0.55874859 ), ( 72 , 4.76555372 , 0.581048842 ), ( 72 , 4.758008009 , 0.613857704 ), ( 72 , 4.706613548 , 0.621894518 ), ( 72 , 0.054888256 , -1.54222279 ), ( 72 , 1.117056939 , -1.469233234 ), ( 72 , 0.504856718 , -1.479186268 ), ( 72 , 1.46455468 , -1.424392289 ), ( 72 , 0.995701045 , -1.303655299 ), ( 72 , 0.406759057 , -1.394980611 ), ( 72 , 0.034930722 , -1.371806905 ), ( 72 , 0.044220956 , -1.366608038 ), ( 72 , 0.73626689 , -1.288773922 ), ( 72 , 0.814716217 , -1.257068873 ), ( 72 , 1.29638436 , -1.134736762 ), ( 72 , 1.361591216 , -1.137523594 ), ( 72 , 0.061412205 , -1.30745812 ), ( 72 , 0.348002215 , -1.202485802 ), ( 72 , 0.658333005 , -1.117807105 ), ( 72 , 0.116519504 , -1.209639749 ), ( 72 , 0.338531216 , -1.138159597 ), ( 72 , 0.19596368 , -1.1029937 ), ( 72 , 0.503198707 , -1.052655812 ), ( 72 , 0.372348842 , -1.038446131 ), ( 72 , 0.678615084 , -0.887561579 ), ( 72 , 0.646567079 , -0.877944987 ), ( 72 , 1.429632017 , -1.054469353 ), ( 72 , 1.260057097 , -1.051717192 ), ( 72 , 1.318952909 , -0.978702384 ), ( 72 , 1.404641467 , -0.947230607 ), ( 72 , 1.129234572 , -0.944840381 ), ( 72 , 1.30679396 , -0.863207254 ), ( 72 , 1.1530725 , -0.814107827 ), ( 72 , 1.445024173 , -0.738263411 ), ( 72 , 1.472025456 , -0.663622254 ), ( 72 , 1.32223921 , -0.741730642 ), ( 72 , 1.279688211 , -0.665740969 ), ( 72 , 1.384266425 , -0.685702515 ), ( 72 , 1.425702431 , -0.638524357 ), ( 72 , 1.427866027 , -0.604135079 ), ( 72 , 1.306114125 , -0.643515937 ), ( 72 , 1.369092017 , -0.625275603 ), ( 72 , 1.38054191 , -0.585347278 ), ( 72 , 1.380570575 , -0.567470214 ), ( 72 , 1.368431273 , -0.559674276 ), ( 72 , 1.039581617 , -0.865853482 ), ( 72 , 1.060275192 , -0.84419266 ), ( 72 , 1.003753043 , -0.792124088 ), ( 72 , 1.034237943 , -0.698775228 ), ( 72 , 1.119130129 , -0.678662402 ), ( 72 , 1.109733328 , -0.667757275 ), ( 72 , 1.063513538 , -0.647003913 ), ( 72 , 0.882067119 , -0.816183105 ), ( 72 , 0.837603737 , -0.687065991 ), ( 72 , 0.837231354 , -0.681087158 ), ( 72 , 0.895418758 , -0.648437339 ), ( 72 , 0.978083738 , -0.668107865 ), ( 72 , 1.004771772 , -0.563484756 ), ( 72 , 1.108084386 , -0.646303939 ), ( 72 , 1.101813918 , -0.630978098 ), ( 72 , 1.167968026 , -0.565636672 ), ( 72 , 1.148846576 , -0.561157855 ), ( 72 , 1.359182216 , -0.527533839 ), ( 72 , 1.209049927 , -0.531087349 ), ( 72 , 1.270278757 , -0.441741349 ), ( 72 , 1.108195278 , -0.559241246 ), ( 72 , 0.992098818 , -0.514330809 ), ( 72 , 1.23607775 , -0.4123939 ), ( 72 , 1.141108605 , -0.449051376 ), ( 72 , 1.090764112 , -0.437060937 ), ( 72 , 0.432543424 , -0.984882233 ), ( 72 , 0.431135006 , -0.932690617 ), ( 72 , 0.385349464 , -0.855312068 ), ( 72 , 0.427885444 , -0.804312531 ), ( 72 , 0.411670595 , -0.797451046 ), ( 72 , 0.381743297 , -0.80016439 ), ( 72 , 0.566193266 , -0.902867635 ), ( 72 , 0.712705462 , -0.707335146 ), ( 72 , 0.521115601 , -0.710827338 ), ( 72 , 0.590883619 , -0.71678616 ), ( 72 , 0.188901156 , -0.788562607 ), ( 72 , 0.183086572 , -0.75267045 ), ( 72 , 0.294705275 , -0.728625078 ), ( 72 , 0.264373986 , -0.632477055 ), ( 72 , 0.163164662 , -0.650804671 ), ( 72 , 0.317558596 , -0.61445448 ), ( 72 , 0.457968528 , -0.501382034 ), ( 72 , 0.47384806 , -0.458212754 ), ( 72 , 0.406974937 , -0.422004234 ), ( 72 , 0.331150143 , -0.418410157 ), ( 72 , 0.869591539 , -0.610942171 ), ( 72 , 0.84002755 , -0.565425234 ), ( 72 , 0.859218732 , -0.547202709 ), ( 72 , 0.836969808 , -0.508994877 ), ( 72 , 1.01590532 , -0.388790115 ), ( 72 , 1.090285728 , -0.336621112 ), ( 72 , 0.960837468 , -0.341957218 ), ( 72 , 0.824247688 , -0.33107472 ), ( 72 , 1.018876814 , -0.26128634 ), ( 72 , 0.932669198 , -0.264047431 ), ( 72 , 0.906214096 , -0.25074535 ), ( 72 , 0.502098107 , -0.434405532 ), ( 72 , 0.589207307 , -0.410868837 ), ( 72 , 0.674555215 , -0.382771575 ), ( 72 , 0.651543881 , -0.367187065 ), ( 72 , 0.683142652 , -0.255811513 ), ( 72 , 0.551246349 , -0.269591848 ), ( 72 , 0.763156211 , -0.2447803 ), ( 72 , 0.800811182 , -0.191564358 ), ( 72 , 0.863874501 , -0.182266234 ), ( 72 , 0.649159679 , -0.198042969 ), ( 72 , 0.693859314 , -0.155828896 ), ( 72 , 0.715664797 , -0.1048817 ), ( 72 , 0.743323219 , -0.08702955 ), ( 72 , 0.737591531 , -0.073738409 ), ( 72 , 0.816871372 , -0.031465787 ), ( 72 , 2.501373879 , -1.501161858 ), ( 72 , 2.90690762 , -1.496598545 ), ( 72 , 2.458210436 , -1.359403061 ), ( 72 , 1.60172049 , -1.414815236 ), ( 72 , 2.193881754 , -1.333965661 ), ( 72 , 1.777962182 , -1.341309724 ), ( 72 , 1.978554207 , -1.345347098 ), ( 72 , 2.274944667 , -1.266902841 ), ( 72 , 2.40563469 , -1.208663662 ), ( 72 , 3.075583351 , -1.27671723 ), ( 72 , 2.779522304 , -1.251250838 ), ( 72 , 2.753793385 , -1.181629002 ), ( 72 , 2.944846865 , -1.192545792 ), ( 72 , 3.029067853 , -1.141614699 ), ( 72 , 2.803078031 , -1.123969923 ), ( 72 , 2.900872946 , -1.127756094 ), ( 72 , 2.820588011 , -1.104794425 ), ( 72 , 2.837101217 , -1.093199077 ), ( 72 , 2.819622505 , -1.081085496 ), ( 72 , 2.555476384 , -1.223793173 ), ( 72 , 2.511920019 , -1.19049088 ), ( 72 , 2.627927844 , -1.150486139 ), ( 72 , 2.738299808 , -1.099948402 ), ( 72 , 2.797786451 , -1.046736848 ), ( 72 , 2.64876298 , -1.068396384 ), ( 72 , 2.577107899 , -1.056404617 ), ( 72 , 2.599231943 , -1.031605354 ), ( 72 , 1.906578024 , -1.252259193 ), ( 72 , 2.111205386 , -1.22761428 ), ( 72 , 1.78914247 , -1.157034669 ), ( 72 , 1.639117735 , -1.157016648 ), ( 72 , 2.173299126 , -1.052674881 ), ( 72 , 2.086603935 , -1.061182125 ), ( 72 , 2.341677024 , -1.109073295 ), ( 72 , 2.341808362 , -1.100401472 ), ( 72 , 2.496040528 , -1.068749931 ), ( 72 , 2.503363481 , -1.058150358 ), ( 72 , 2.396538238 , -1.034457597 ), ( 72 , 2.440555026 , -1.028511872 ), ( 72 , 2.391493693 , -1.014543068 ), ( 72 , 2.49881007 , -0.956976968 ), ( 72 , 2.466680913 , -0.950572766 ), ( 72 , 2.413547553 , -0.933834027 ), ( 72 , 2.483913535 , -0.914980498 ), ( 72 , 2.485438697 , -0.883199871 ), ( 72 , 2.250887781 , -0.983880811 ), ( 72 , 2.294977971 , -0.959238462 ), ( 72 , 2.268877497 , -0.929576187 ), ( 72 , 2.355127421 , -0.898906627 ), ( 72 , 2.380229099 , -0.877670862 ), ( 72 , 2.356270853 , -0.864948766 ), ( 72 , 2.428919962 , -0.865310896 ), ( 72 , 2.44353466 , -0.819437787 ), ( 72 , 2.330942045 , -0.759199072 ), ( 72 , 3.055499734 , -1.089650627 ), ( 72 , 3.109506521 , -1.086209537 ), ( 72 , 3.01854775 , -1.057780625 ), ( 72 , 3.014434801 , -1.052748918 ), ( 72 , 3.004462369 , -1.014768728 ), ( 72 , 3.007868904 , -1.009366166 ), ( 72 , 2.935370979 , -1.041570587 ), ( 72 , 2.850346763 , -1.061417731 ), ( 72 , 2.830178758 , -1.051102597 ), ( 72 , 2.955018544 , -1.043177933 ), ( 72 , 2.970989733 , -1.024568243 ), ( 72 , 3.117349736 , -0.994310324 ), ( 72 , 3.050734275 , -1.007745084 ), ( 72 , 3.032762281 , -0.979519455 ), ( 72 , 3.032754119 , -0.929249757 ), ( 72 , 2.79638328 , -1.011166486 ), ( 72 , 2.735486223 , -1.005432077 ), ( 72 , 2.859827217 , -0.943866266 ), ( 72 , 2.732575934 , -0.940582938 ), ( 72 , 2.706112739 , -0.918072509 ), ( 72 , 2.686975609 , -0.875769476 ), ( 72 , 2.805689836 , -0.856203029 ), ( 72 , 2.829952506 , -0.843870945 ), ( 72 , 2.792388458 , -0.860088754 ), ( 72 , 2.802851543 , -0.824151214 ), ( 72 , 3.09687382 , -0.885245124 ), ( 72 , 3.046385641 , -0.798480095 ), ( 72 , 3.017635838 , -0.780832255 ), ( 72 , 3.103857802 , -0.751881508 ), ( 72 , 3.077957385 , -0.707144741 ), ( 72 , 3.006005592 , -0.758856403 ), ( 72 , 3.014795266 , -0.731752264 ), ( 72 , 3.049011102 , -0.703423661 ), ( 72 , 2.856748472 , -0.733357587 ), ( 72 , 2.833324304 , -0.683648788 ), ( 72 , 2.808257301 , -0.681696341 ), ( 72 , 2.898451782 , -0.640909808 ), ( 72 , 2.60581747 , -0.870400899 ), ( 72 , 2.660764395 , -0.828089908 ), ( 72 , 2.54147923 , -0.817949786 ), ( 72 , 2.588611189 , -0.778144688 ), ( 72 , 2.663867392 , -0.790768722 ), ( 72 , 2.680626729 , -0.747150596 ), ( 72 , 2.600464982 , -0.690340793 ), ( 72 , 2.634344928 , -0.685544798 ), ( 72 , 2.623423201 , -0.68854389 ), ( 72 , 2.507642389 , -0.782190105 ), ( 72 , 2.434445409 , -0.652711346 ), ( 72 , 2.77271057 , -0.652078197 ), ( 72 , 2.777678563 , -0.580719336 ), ( 72 , 2.626743883 , -0.596438805 ), ( 72 , 2.606110235 , -0.573477501 ), ( 72 , 2.612441985 , -0.511465039 ), ( 72 , 2.592185081 , -0.488675464 ), ( 72 , 2.778794899 , -0.395585817 ), ( 72 , 2.747588161 , -0.384747174 ), ( 72 , 1.579056736 , -1.132035986 ), ( 72 , 1.828763818 , -1.061894601 ), ( 72 , 1.765995365 , -1.068563652 ), ( 72 , 1.658050483 , -1.070395359 ), ( 72 , 1.689475548 , -1.059911728 ), ( 72 , 1.57623103 , -1.055672309 ), ( 72 , 2.017581813 , -0.979931868 ), ( 72 , 1.93600995 , -0.936701969 ), ( 72 , 1.924346766 , -0.887572901 ), ( 72 , 1.838289223 , -0.880809756 ), ( 72 , 2.135933646 , -0.917597012 ), ( 72 , 2.101309929 , -0.883233655 ), ( 72 , 2.139196195 , -0.855820242 ), ( 72 , 2.210437013 , -0.863888591 ), ( 72 , 2.221253078 , -0.836523846 ), ( 72 , 2.084072902 , -0.813205167 ), ( 72 , 2.143751729 , -0.799675746 ), ( 72 , 2.251636538 , -0.811606114 ), ( 72 , 2.308440382 , -0.763776367 ), ( 72 , 2.33005839 , -0.741516096 ), ( 72 , 2.329780456 , -0.730017993 ), ( 72 , 2.294190853 , -0.708875213 ), ( 72 , 2.306951679 , -0.684754352 ), ( 72 , 2.240414194 , -0.726365092 ), ( 72 , 2.169852125 , -0.742140111 ), ( 72 , 2.209171827 , -0.681728872 ), ( 72 , 2.286439502 , -0.676820563 ), ( 72 , 2.265597668 , -0.65397405 ), ( 72 , 2.036655549 , -0.816842364 ), ( 72 , 1.990684475 , -0.784660776 ), ( 72 , 2.098307144 , -0.751539973 ), ( 72 , 2.107205865 , -0.70515665 ), ( 72 , 2.018078714 , -0.684188958 ), ( 72 , 2.090584844 , -0.6880134 ), ( 72 , 2.030505585 , -0.686701423 ), ( 72 , 2.038404142 , -0.682481492 ), ( 72 , 2.052649476 , -0.632538665 ), ( 72 , 2.166037793 , -0.693821609 ), ( 72 , 2.131928629 , -0.689387643 ), ( 72 , 2.12197041 , -0.678870016 ), ( 72 , 2.173864509 , -0.652309405 ), ( 72 , 2.152440368 , -0.634282074 ), ( 72 , 2.152764715 , -0.633735427 ), ( 72 , 2.088419344 , -0.6461526 ), ( 72 , 2.095467494 , -0.628168455 ), ( 72 , 2.107017433 , -0.578638031 ), ( 72 , 1.652738343 , -0.878931324 ), ( 72 , 1.774756078 , -0.834343175 ), ( 72 , 1.858611977 , -0.738751439 ), ( 72 , 1.813431675 , -0.590039033 ), ( 72 , 1.705447619 , -0.610868994 ), ( 72 , 1.989351159 , -0.653550579 ), ( 72 , 1.929772793 , -0.626844906 ), ( 72 , 1.950264752 , -0.598849543 ), ( 72 , 1.978416045 , -0.582937683 ), ( 72 , 2.081933045 , -0.580319284 ), ( 72 , 2.088465559 , -0.481321051 ), ( 72 , 2.067430332 , -0.458358963 ), ( 72 , 1.868306296 , -0.548525916 ), ( 72 , 1.903818745 , -0.559233523 ), ( 72 , 1.926292931 , -0.492028132 ), ( 72 , 1.897689455 , -0.505524358 ), ( 72 , 1.811853547 , -0.506826209 ), ( 72 , 1.876266006 , -0.501749876 ), ( 72 , 1.994383345 , -0.478597903 ), ( 72 , 1.963646982 , -0.438883471 ), ( 72 , 1.947013885 , -0.364882877 ), ( 72 , 2.359251724 , -0.670545776 ), ( 72 , 2.336219491 , -0.582970422 ), ( 72 , 2.518868329 , -0.540531755 ), ( 72 , 2.47044058 , -0.524206492 ), ( 72 , 2.228975866 , -0.587211967 ), ( 72 , 2.29079666 , -0.540668555 ), ( 72 , 2.207874607 , -0.561469764 ), ( 72 , 2.196983359 , -0.537583912 ), ( 72 , 2.164138866 , -0.526820897 ), ( 72 , 2.26754197 , -0.507591846 ), ( 72 , 2.398793542 , -0.450348336 ), ( 72 , 2.358953564 , -0.370282355 ), ( 72 , 2.551658905 , -0.482245242 ), ( 72 , 2.481183985 , -0.443902248 ), ( 72 , 2.510691854 , -0.395948229 ), ( 72 , 2.66413333 , -0.324688819 ), ( 72 , 2.665427844 , -0.274176229 ), ( 72 , 2.439665979 , -0.393622753 ), ( 72 , 2.469402534 , -0.313239226 ), ( 72 , 2.474056337 , -0.279482898 ), ( 72 , 2.530917012 , -0.226846536 ), ( 72 , 2.197047202 , -0.485595962 ), ( 72 , 2.099791585 , -0.443545305 ), ( 72 , 2.204806182 , -0.386416982 ), ( 72 , 2.231395491 , -0.340440196 ), ( 72 , 2.25566305 , -0.326052439 ), ( 72 , 2.266654648 , -0.31883471 ), ( 72 , 2.066763521 , -0.404692484 ), ( 72 , 2.100107559 , -0.389853457 ), ( 72 , 2.021696128 , -0.389184211 ), ( 72 , 2.06873668 , -0.319936933 ), ( 72 , 2.075166003 , -0.271905164 ), ( 72 , 2.134871695 , -0.271750209 ), ( 72 , 2.346826448 , -0.329679396 ), ( 72 , 2.376667382 , -0.300843071 ), ( 72 , 2.350837985 , -0.292318236 ), ( 72 , 2.327785881 , -0.198823273 ), ( 72 , 2.49352458 , -0.210534308 ), ( 72 , 2.46097026 , -0.095410492 ), ( 72 , 2.260004436 , -0.155016638 ), ( 72 , 2.264292826 , -0.119527258 ), ( 72 , 2.280345302 , -0.076976297 ), ( 72 , 2.337333548 , -0.048705032 ), ( 72 , 4.036068026 , -1.335607827 ), ( 72 , 3.627876798 , -1.276599481 ), ( 72 , 3.820040875 , -1.286210509 ), ( 72 , 4.547043609 , -1.315103952 ), ( 72 , 4.430432809 , -1.209161515 ), ( 72 , 4.310452434 , -1.21931188 ), ( 72 , 4.357661797 , -1.199409166 ), ( 72 , 4.401376931 , -1.170822196 ), ( 72 , 4.063491544 , -1.150928515 ), ( 72 , 4.084917257 , -1.136469524 ), ( 72 , 4.132105511 , -1.095995628 ), ( 72 , 4.076390791 , -1.061302859 ), ( 72 , 4.338667862 , -1.08689305 ), ( 72 , 4.327780086 , -1.087170705 ), ( 72 , 4.335316976 , -1.084228759 ), ( 72 , 4.293570117 , -1.022868224 ), ( 72 , 4.205113161 , -1.055897748 ), ( 72 , 4.123721391 , -1.069861827 ), ( 72 , 4.157867495 , -1.030831797 ), ( 72 , 3.248344472 , -1.347650584 ), ( 72 , 3.466332072 , -1.311984673 ), ( 72 , 3.583264047 , -1.254333498 ), ( 72 , 3.275591238 , -1.275639811 ), ( 72 , 3.27376248 , -1.273834027 ), ( 72 , 3.514749162 , -1.196040459 ), ( 72 , 3.48944544 , -1.175730924 ), ( 72 , 3.634576561 , -1.222555625 ), ( 72 , 3.726698684 , -1.190154141 ), ( 72 , 3.901522862 , -1.159270161 ), ( 72 , 3.873762838 , -1.157712054 ), ( 72 , 3.880822469 , -1.146359521 ), ( 72 , 3.648131166 , -1.115120702 ), ( 72 , 3.30056261 , -1.172355245 ), ( 72 , 3.149200372 , -1.207732319 ), ( 72 , 3.665589926 , -1.09575604 ), ( 72 , 3.490813712 , -1.091293813 ), ( 72 , 3.489085496 , -1.058284124 ), ( 72 , 4.016621357 , -1.039235146 ), ( 72 , 4.099696964 , -0.967385666 ), ( 72 , 4.11923909 , -0.90590952 ), ( 72 , 4.038673781 , -0.896069518 ), ( 72 , 3.747437305 , -1.024272409 ), ( 72 , 3.807222172 , -0.992878788 ), ( 72 , 3.882425274 , -0.920572603 ), ( 72 , 3.764321949 , -0.967457209 ), ( 72 , 3.894221817 , -0.842069972 ), ( 72 , 3.847758379 , -0.825109231 ), ( 72 , 3.912040941 , -0.819439358 ), ( 72 , 3.92625083 , -0.805649164 ), ( 72 , 4.5666527 , -1.098217692 ), ( 72 , 4.656686859 , -1.051703611 ), ( 72 , 4.621043346 , -1.06362151 ), ( 72 , 4.501801531 , -1.026517627 ), ( 72 , 4.45285361 , -1.000059308 ), ( 72 , 4.574475403 , -0.942847209 ), ( 72 , 4.521880214 , -0.865018168 ), ( 72 , 4.486096699 , -0.85318606 ), ( 72 , 4.359208773 , -1.016831995 ), ( 72 , 4.224484549 , -0.926402684 ), ( 72 , 4.409580157 , -0.873449084 ), ( 72 , 4.389797391 , -0.811335553 ), ( 72 , 4.397456906 , -0.792210895 ), ( 72 , 4.305860233 , -0.838532755 ), ( 72 , 4.307330114 , -0.829890403 ), ( 72 , 4.371318239 , -0.791845458 ), ( 72 , 4.365224608 , -0.777961996 ), ( 72 , 4.661285971 , -0.824756444 ), ( 72 , 4.565676993 , -0.848492408 ), ( 72 , 4.589969854 , -0.80445841 ), ( 72 , 4.647127033 , -0.770119698 ), ( 72 , 4.473779515 , -0.821510161 ), ( 72 , 4.427444686 , -0.760265383 ), ( 72 , 4.42524711 , -0.72678913 ), ( 72 , 4.406101817 , -0.733068606 ), ( 72 , 4.428436098 , -0.707291888 ), ( 72 , 4.437112014 , -0.707073824 ), ( 72 , 4.429217701 , -0.67043771 ), ( 72 , 4.410264724 , -0.667703215 ), ( 72 , 4.54098097 , -0.66358507 ), ( 72 , 4.53339379 , -0.610704661 ), ( 72 , 4.560300302 , -0.603221928 ), ( 72 , 4.56104071 , -0.59776276 ), ( 72 , 4.486513179 , -0.610941456 ), ( 72 , 4.210319373 , -0.872925541 ), ( 72 , 4.112121434 , -0.859009121 ), ( 72 , 4.081106126 , -0.866902416 ), ( 72 , 4.073390318 , -0.829699751 ), ( 72 , 4.259260819 , -0.752683883 ), ( 72 , 4.181991695 , -0.777127293 ), ( 72 , 4.254074747 , -0.691639592 ), ( 72 , 4.086010714 , -0.768127962 ), ( 72 , 3.973651878 , -0.763242215 ), ( 72 , 4.15185171 , -0.570478861 ), ( 72 , 4.324837252 , -0.599220655 ), ( 72 , 4.387733874 , -0.59081169 ), ( 72 , 4.360152955 , -0.522276216 ), ( 72 , 4.364091727 , -0.505103679 ), ( 72 , 4.230015244 , -0.541984856 ), ( 72 , 3.326821771 , -1.064975409 ), ( 72 , 3.280658667 , -1.017362735 ), ( 72 , 3.612669965 , -0.976697338 ), ( 72 , 3.643316689 , -0.960305143 ), ( 72 , 3.430704212 , -0.970606833 ), ( 72 , 3.513999054 , -0.905646785 ), ( 72 , 3.516960438 , -0.898486168 ), ( 72 , 3.259298669 , -0.919841101 ), ( 72 , 3.359143793 , -0.878318651 ), ( 72 , 3.340994344 , -0.875814538 ), ( 72 , 3.49917068 , -0.895046224 ), ( 72 , 3.545867592 , -0.775805474 ), ( 72 , 3.7854402 , -0.806580591 ), ( 72 , 3.655647711 , -0.85554536 ), ( 72 , 3.640466489 , -0.849851739 ), ( 72 , 3.691966372 , -0.779974038 ), ( 72 , 3.756150786 , -0.740454156 ), ( 72 , 3.569450686 , -0.746389702 ), ( 72 , 3.650875965 , -0.66879724 ), ( 72 , 3.730746528 , -0.713851126 ), ( 72 , 3.736349829 , -0.559517241 ), ( 72 , 3.158474426 , -0.933720181 ), ( 72 , 3.317719294 , -0.862217606 ), ( 72 , 3.164870899 , -0.877386705 ), ( 72 , 3.232783386 , -0.828238149 ), ( 72 , 3.499597054 , -0.751373259 ), ( 72 , 3.419926748 , -0.712990047 ), ( 72 , 3.281165619 , -0.716549545 ), ( 72 , 3.228726892 , -0.721863719 ), ( 72 , 3.242982935 , -0.654318302 ), ( 72 , 3.403615268 , -0.631501701 ), ( 72 , 3.368249404 , -0.612303493 ), ( 72 , 3.710527447 , -0.525128541 ), ( 72 , 3.591068243 , -0.526787528 ), ( 72 , 3.407993122 , -0.586834653 ), ( 72 , 3.565596505 , -0.412184004 ), ( 72 , 3.501366575 , -0.451007468 ), ( 72 , 3.495365618 , -0.427085056 ), ( 72 , 3.55839283 , -0.384405815 ), ( 72 , 3.957987308 , -0.662278311 ), ( 72 , 3.899863799 , -0.693723222 ), ( 72 , 3.920025784 , -0.652100889 ), ( 72 , 3.927018832 , -0.62885689 ), ( 72 , 3.969244647 , -0.625975997 ), ( 72 , 3.978328981 , -0.5871107 ), ( 72 , 3.958529663 , -0.574392143 ), ( 72 , 3.915339312 , -0.573058767 ), ( 72 , 4.052512463 , -0.549354642 ), ( 72 , 4.085007725 , -0.506126476 ), ( 72 , 4.016538649 , -0.493706611 ), ( 72 , 3.811178192 , -0.581474216 ), ( 72 , 3.792447143 , -0.508123853 ), ( 72 , 3.966079437 , -0.462464698 ), ( 72 , 3.876725381 , -0.444812071 ), ( 72 , 4.201291262 , -0.436584885 ), ( 72 , 4.13666761 , -0.440098409 ), ( 72 , 4.197184726 , -0.383633065 ), ( 72 , 4.176620277 , -0.374997279 ), ( 72 , 4.224217007 , -0.318418459 ), ( 72 , 4.067366693 , -0.383395838 ), ( 72 , 4.040821722 , -0.373153783 ), ( 72 , 4.044101141 , -0.349154426 ), ( 72 , 4.013523376 , -0.341215619 ), ( 72 , 4.079676123 , -0.299131987 ), ( 72 , 4.138246554 , -0.235607119 ), ( 72 , 3.753059896 , -0.489550434 ), ( 72 , 3.813817129 , -0.293557745 ), ( 72 , 3.643499993 , -0.335405887 ), ( 72 , 3.797099549 , -0.266127211 ), ( 72 , 3.722620562 , -0.241904158 ), ( 72 , 3.725042583 , -0.206620867 ), ( 72 , 3.940553543 , -0.30775791 ), ( 72 , 3.842064023 , -0.245162768 ), ( 72 , 3.880373004 , -0.246939589 ), ( 72 , 3.880842069 , -0.148432435 ), ( 72 , 3.821421062 , -0.149668136 ), ( 72 , 3.990156136 , -0.058721115 ), ( 72 , 5.021013711 , -1.333528316 ), ( 72 , 5.674424031 , -1.292814375 ), ( 72 , 5.449856099 , -1.265937215 ), ( 72 , 5.31669992 , -1.270740224 ), ( 72 , 5.396632798 , -1.212145027 ), ( 72 , 5.899914713 , -1.206163079 ), ( 72 , 5.937601269 , -1.181391506 ), ( 72 , 6.156918698 , -1.205631409 ), ( 72 , 6.194558085 , -1.156350347 ), ( 72 , 6.17505685 , -1.129036395 ), ( 72 , 5.605491292 , -1.190787255 ), ( 72 , 5.710435308 , -1.143239394 ), ( 72 , 5.699949233 , -1.091704267 ), ( 72 , 5.69083987 , -1.084100282 ), ( 72 , 5.904394877 , -1.054749301 ), ( 72 , 4.897830119 , -1.227023897 ), ( 72 , 5.146884458 , -1.214793463 ), ( 72 , 5.146115169 , -1.210173836 ), ( 72 , 5.008186574 , -1.202252863 ), ( 72 , 5.369353609 , -1.12033229 ), ( 72 , 5.036105878 , -1.177298285 ), ( 72 , 5.076229958 , -1.144567674 ), ( 72 , 4.967549029 , -1.117044828 ), ( 72 , 5.114684796 , -1.051909451 ), ( 72 , 5.146785189 , -1.016334792 ), ( 72 , 5.564508178 , -1.028524203 ), ( 72 , 5.605849624 , -0.999332226 ), ( 72 , 5.724582094 , -0.973528064 ), ( 72 , 5.548282981 , -0.986413119 ), ( 72 , 5.584432404 , -0.932877371 ), ( 72 , 5.547438805 , -0.913490417 ), ( 72 , 5.594101703 , -0.905397712 ), ( 72 , 5.476592383 , -0.909676467 ), ( 72 , 5.58162405 , -0.865884175 ), ( 72 , 5.597073722 , -0.845760147 ), ( 72 , 5.578320412 , -0.820351709 ), ( 72 , 5.450860446 , -0.841673802 ), ( 72 , 5.517582881 , -0.807320577 ), ( 72 , 5.522576972 , -0.784511764 ), ( 72 , 6.125607436 , -0.939252415 ), ( 72 , 6.05293124 , -0.88466469 ), ( 72 , 5.896943673 , -0.889031132 ), ( 72 , 6.234887582 , -0.817548481 ), ( 72 , 6.123087159 , -0.726076332 ), ( 72 , 5.646241508 , -0.813516216 ), ( 72 , 5.714899915 , -0.813519894 ), ( 72 , 5.827275353 , -0.761568189 ), ( 72 , 5.786083028 , -0.76735919 ), ( 72 , 5.805954731 , -0.658867225 ), ( 72 , 5.628077238 , -0.759353597 ), ( 72 , 5.730111183 , -0.643973629 ), ( 72 , 5.678038312 , -0.621075378 ), ( 72 , 5.92950399 , -0.683383079 ), ( 72 , 5.850081415 , -0.602431604 ), ( 72 , 5.77393477 , -0.521936007 ), ( 72 , 5.779884114 , -0.496281989 ), ( 72 , 5.793350296 , -0.491268388 ), ( 72 , 5.771313641 , -0.477655055 ), ( 72 , 5.79783132 , -0.449781384 ), ( 72 , 5.938801687 , -0.41052945 ), ( 72 , 4.769686965 , -1.049693102 ), ( 72 , 4.888449591 , -1.025903798 ), ( 72 , 5.113605252 , -0.945363258 ), ( 72 , 5.206206075 , -0.926653039 ), ( 72 , 5.074473084 , -0.95187848 ), ( 72 , 5.159882926 , -0.884316542 ), ( 72 , 5.083995824 , -0.891876683 ), ( 72 , 4.722773821 , -1.049595461 ), ( 72 , 4.784281642 , -1.002644846 ), ( 72 , 4.764110958 , -0.984380641 ), ( 72 , 4.782713684 , -0.988750031 ), ( 72 , 4.801216892 , -0.981149951 ), ( 72 , 4.872480247 , -0.981355194 ), ( 72 , 4.906594106 , -0.939021322 ), ( 72 , 4.930352491 , -0.909703457 ), ( 72 , 4.792411968 , -0.948281373 ), ( 72 , 4.951352857 , -0.854300247 ), ( 72 , 5.052667952 , -0.821607629 ), ( 72 , 5.258375904 , -0.80454628 ), ( 72 , 5.280050998 , -0.766101446 ), ( 72 , 5.193143659 , -0.792023914 ), ( 72 , 5.234729634 , -0.652316192 ), ( 72 , 5.214352505 , -0.631841636 ), ( 72 , 5.295740287 , -0.59548067 ), ( 72 , 5.277074391 , -0.591218281 ), ( 72 , 4.790015876 , -0.908274818 ), ( 72 , 4.79566899 , -0.906956449 ), ( 72 , 4.777870354 , -0.878045006 ), ( 72 , 4.849853952 , -0.87591308 ), ( 72 , 5.003562167 , -0.747265416 ), ( 72 , 4.94044168 , -0.714154659 ), ( 72 , 5.029060126 , -0.654919959 ), ( 72 , 4.772652343 , -0.754059567 ), ( 72 , 4.843608357 , -0.765065738 ), ( 72 , 4.892240533 , -0.73594525 ), ( 72 , 4.827669883 , -0.742405499 ), ( 72 , 4.874968616 , -0.712161685 ), ( 72 , 4.866289697 , -0.692800686 ), ( 72 , 4.766879676 , -0.686653522 ), ( 72 , 4.773981917 , -0.670417287 ), ( 72 , 4.915966298 , -0.693438206 ), ( 72 , 4.935556595 , -0.683729567 ), ( 72 , 4.923418573 , -0.646010246 ), ( 72 , 4.985289379 , -0.604454044 ), ( 72 , 4.967484081 , -0.597159277 ), ( 72 , 4.854434741 , -0.616968629 ), ( 72 , 5.072047778 , -0.557400176 ), ( 72 , 5.204305802 , -0.558100783 ), ( 72 , 5.238598058 , -0.498927934 ), ( 72 , 5.068698366 , -0.516714137 ), ( 72 , 5.070479056 , -0.515276734 ), ( 72 , 4.916533172 , -0.517174259 ), ( 72 , 5.035007992 , -0.469090189 ), ( 72 , 5.430953043 , -0.625308461 ), ( 72 , 5.498716067 , -0.597502945 ), ( 72 , 5.580914167 , -0.564724139 ), ( 72 , 5.536947031 , -0.497044722 ), ( 72 , 5.343814438 , -0.507510551 ), ( 72 , 5.528615303 , -0.404019978 ), ( 72 , 5.822012756 , -0.367823282 ), ( 72 , 5.822165304 , -0.335963601 ), ( 72 , 5.786752568 , -0.259983831 ), ( 72 , 5.634912159 , -0.335760233 ), ( 72 , 5.509802225 , -0.335955825 ), ( 72 , 5.577469476 , -0.304774323 ), ( 72 , 5.458092674 , -0.371980275 ), ( 72 , 5.46405286 , -0.342846933 ), ( 72 , 5.325325798 , -0.342913194 ), ( 72 , 5.416276298 , -0.3033121 ), ( 72 , 5.377917115 , -0.289893138 ), ( 72 , 5.37024451 , -0.275262504 ), ( 72 , 5.341715184 , -0.246337682 ), ( 72 , 5.301938221 , -0.233597141 ), ( 72 , 5.43039619 , -0.247590998 ), ( 72 , 5.585721553 , -0.235659385 ), ( 72 , 5.605118022 , -0.117210997 ), ( 72 , 5.596470832 , -0.098323033 ), ( 72 , 5.401493209 , -0.192567919 ), ( 72 , 5.343943336 , -0.153055881 ), ( 72 , 5.563510606 , -0.096903592 ), ( 72 , 5.446555225 , -0.080993802 ), ( 72 , 5.513019467 , -0.040534136 ), ( 73 , 0.894816889 , 0.191572922 ), ( 73 , 0.872083114 , 0.233472682 ), ( 73 , 0.62907727 , 0.179286124 ), ( 73 , 0.776298546 , 0.310901263 ), ( 73 , 0.998919555 , 0.287259803 ), ( 73 , 0.911074838 , 0.359957069 ), ( 73 , 0.956530457 , 0.38123128 ), ( 73 , 0.992252427 , 0.417384452 ), ( 73 , 0.973489622 , 0.448222538 ), ( 73 , 0.643744475 , 0.290479111 ), ( 73 , 0.55879597 , 0.275838167 ), ( 73 , 0.532847987 , 0.385783014 ), ( 73 , 0.552872399 , 0.450833134 ), ( 73 , 0.886112167 , 0.469507241 ), ( 73 , 0.631337952 , 0.510418949 ), ( 73 , 0.63494458 , 0.521505373 ), ( 73 , 1.152992453 , 0.379363508 ), ( 73 , 1.179731265 , 0.411703256 ), ( 73 , 1.230753337 , 0.419065839 ), ( 73 , 1.149777129 , 0.425949562 ), ( 73 , 1.215156142 , 0.470170468 ), ( 73 , 1.24718948 , 0.500220386 ), ( 73 , 1.262165799 , 0.516115082 ), ( 73 , 1.153727146 , 0.598902114 ), ( 73 , 1.132294532 , 0.663195108 ), ( 73 , 1.184263642 , 0.69828865 ), ( 73 , 1.452500272 , 0.633895087 ), ( 73 , 1.380916328 , 0.629571537 ), ( 73 , 1.3594653 , 0.627575467 ), ( 73 , 1.324869286 , 0.650457455 ), ( 73 , 1.366689873 , 0.701508801 ), ( 73 , 1.446203482 , 0.668797229 ), ( 73 , 1.400243208 , 0.713574684 ), ( 73 , 1.330714285 , 0.730948535 ), ( 73 , 1.288260177 , 0.757774306 ), ( 73 , 1.315423416 , 0.774888346 ), ( 73 , 1.366307235 , 0.777840481 ), ( 73 , 1.519493648 , 0.815446324 ), ( 73 , 1.498621391 , 0.916104757 ), ( 73 , 0.998009316 , 0.598828012 ), ( 73 , 1.097156032 , 0.714068556 ), ( 73 , 1.052783903 , 0.699775264 ), ( 73 , 1.082248999 , 0.753608147 ), ( 73 , 1.113673124 , 0.781343785 ), ( 73 , 0.857613411 , 0.674282153 ), ( 73 , 0.909768859 , 0.701113826 ), ( 73 , 0.964005986 , 0.718890701 ), ( 73 , 0.921802575 , 0.728263346 ), ( 73 , 0.925709403 , 0.746115538 ), ( 73 , 0.808600425 , 0.717696121 ), ( 73 , 0.90997836 , 0.763643657 ), ( 73 , 0.952580319 , 0.781933588 ), ( 73 , 0.907268645 , 0.833145951 ), ( 73 , 1.334800953 , 0.873466125 ), ( 73 , 1.361038827 , 0.932915845 ), ( 73 , 1.054276087 , 0.940137626 ), ( 73 , 1.139088087 , 0.98981476 ), ( 73 , 1.225334385 , 1.010188743 ), ( 73 , 1.406481473 , 1.034560372 ), ( 73 , 1.49134373 , 1.104696099 ), ( 73 , 0.354518935 , 0.390512622 ), ( 73 , 0.371827312 , 0.498563791 ), ( 73 , 0.519753155 , 0.579575698 ), ( 73 , 0.446808588 , 0.575291374 ), ( 73 , 0.274186654 , 0.459013774 ), ( 73 , 0.324406518 , 0.533057058 ), ( 73 , 0.2821904 , 0.579151549 ), ( 73 , 0.483830787 , 0.625611776 ), ( 73 , 0.368238187 , 0.643736193 ), ( 73 , 0.61036804 , 0.546931076 ), ( 73 , 0.633830186 , 0.647845267 ), ( 73 , 0.604771233 , 0.7029962 ), ( 73 , 0.662515473 , 0.66534902 ), ( 73 , 0.651396461 , 0.667155983 ), ( 73 , 0.623540033 , 0.723960381 ), ( 73 , 0.668270923 , 0.748672068 ), ( 73 , 0.700818862 , 0.769535843 ), ( 73 , 0.500173238 , 0.70957937 ), ( 73 , 0.432412874 , 0.718395391 ), ( 73 , 0.602962857 , 0.840343707 ), ( 73 , 0.522601796 , 0.863563516 ), ( 73 , 0.495168625 , 0.862975219 ), ( 73 , 0.509934637 , 0.916112561 ), ( 73 , 0.279161793 , 0.619058765 ), ( 73 , 0.157567347 , 0.667621455 ), ( 73 , 0.376485029 , 0.738468136 ), ( 73 , 0.35037759 , 0.759397276 ), ( 73 , 0.214975909 , 0.717009377 ), ( 73 , 0.234254426 , 0.756818493 ), ( 73 , 0.254265455 , 0.795817419 ), ( 73 , 0.137088535 , 0.680338832 ), ( 73 , 0.054971324 , 0.77346719 ), ( 73 , 0.100584954 , 0.777111939 ), ( 73 , 0.158554382 , 0.779095199 ), ( 73 , 0.186815556 , 0.801619953 ), ( 73 , 0.191940298 , 0.856440527 ), ( 73 , 0.058224538 , 0.867835663 ), ( 73 , 0.390282103 , 0.73795116 ), ( 73 , 0.363470158 , 0.791205992 ), ( 73 , 0.310883534 , 0.81384295 ), ( 73 , 0.318343988 , 0.823712075 ), ( 73 , 0.279087736 , 0.852785695 ), ( 73 , 0.325494448 , 0.862709058 ), ( 73 , 0.252770691 , 0.909957608 ), ( 73 , 0.250177799 , 0.911758599 ), ( 73 , 0.420918199 , 0.954627128 ), ( 73 , 0.353746943 , 0.953449039 ), ( 73 , 0.339639051 , 0.967704401 ), ( 73 , 0.323654203 , 1.026463171 ), ( 73 , 0.155279809 , 0.933557474 ), ( 73 , 0.28039584 , 0.996872236 ), ( 73 , 0.175997453 , 1.037842068 ), ( 73 , 0.262007008 , 1.056095943 ), ( 73 , 0.005935575 , 1.061844251 ), ( 73 , 0.133927277 , 1.088282353 ), ( 73 , 0.838576531 , 0.809584868 ), ( 73 , 0.766046709 , 0.825617891 ), ( 73 , 0.915711202 , 0.858933459 ), ( 73 , 0.874390624 , 0.900907164 ), ( 73 , 0.795904431 , 0.948815443 ), ( 73 , 0.917249699 , 0.966476597 ), ( 73 , 0.687670493 , 0.876807107 ), ( 73 , 0.726919608 , 0.943834049 ), ( 73 , 0.701108874 , 1.000221437 ), ( 73 , 0.789309548 , 1.041365351 ), ( 73 , 0.754680528 , 1.05542333 ), ( 73 , 0.770109182 , 1.09274311 ), ( 73 , 1.053092 , 0.978079937 ), ( 73 , 1.210998532 , 1.048774534 ), ( 73 , 1.124569265 , 1.08815393 ), ( 73 , 1.461395797 , 1.135306931 ), ( 73 , 1.223260822 , 1.126733724 ), ( 73 , 1.280319981 , 1.1520264 ), ( 73 , 1.090991137 , 1.193342596 ), ( 73 , 1.001984844 , 1.172255765 ), ( 73 , 1.007971836 , 1.206067947 ), ( 73 , 1.429673809 , 1.301263091 ), ( 73 , 1.352728432 , 1.320892163 ), ( 73 , 0.422422443 , 1.040666783 ), ( 73 , 0.389448483 , 1.047820048 ), ( 73 , 0.406807219 , 1.059178055 ), ( 73 , 0.40820784 , 1.091293549 ), ( 73 , 0.593077032 , 1.103681384 ), ( 73 , 0.605388013 , 1.124427171 ), ( 73 , 0.62154525 , 1.138685123 ), ( 73 , 0.588676284 , 1.157519716 ), ( 73 , 0.750971727 , 1.145551009 ), ( 73 , 0.681910138 , 1.178327907 ), ( 73 , 0.708507664 , 1.187945963 ), ( 73 , 0.499912282 , 1.189461753 ), ( 73 , 0.59645168 , 1.174325336 ), ( 73 , 0.498891321 , 1.207454767 ), ( 73 , 0.458181472 , 1.21304863 ), ( 73 , 0.508449769 , 1.225287194 ), ( 73 , 0.287469786 , 1.151411097 ), ( 73 , 0.13209764 , 1.130082987 ), ( 73 , 0.008623319 , 1.159559316 ), ( 73 , 0.36710763 , 1.27142251 ), ( 73 , 0.355697001 , 1.301668519 ), ( 73 , 0.17639428 , 1.234089501 ), ( 73 , 0.898125247 , 1.277702764 ), ( 73 , 0.706590555 , 1.250116225 ), ( 73 , 1.278206538 , 1.321369305 ), ( 73 , 1.457504494 , 1.393691328 ), ( 73 , 0.526390927 , 1.325625518 ), ( 73 , 0.457020012 , 1.324217201 ), ( 73 , 0.212846975 , 1.369509617 ), ( 73 , 0.040814733 , 1.39128172 ), ( 73 , 0.345263255 , 1.411305012 ), ( 73 , 0.011755543 , 1.448155317 ), ( 73 , 0.764891051 , 1.398125256 ), ( 73 , 0.888013546 , 1.433783812 ), ( 73 , 0.83728352 , 1.446942268 ), ( 73 , 0.166839365 , 1.477855233 ), ( 73 , 2.329430881 , 0.031834739 ), ( 73 , 2.376530054 , 0.061803722 ), ( 73 , 2.414718666 , 0.066751138 ), ( 73 , 2.414579686 , 0.10149982 ), ( 73 , 2.364128969 , 0.098638368 ), ( 73 , 2.434066227 , 0.138685029 ), ( 73 , 2.218988178 , 0.121550239 ), ( 73 , 2.546473732 , 0.2346006 ), ( 73 , 2.651393904 , 0.264540575 ), ( 73 , 2.718292484 , 0.333898841 ), ( 73 , 2.644951557 , 0.375502945 ), ( 73 , 2.59014173 , 0.447975375 ), ( 73 , 2.527297006 , 0.44274621 ), ( 73 , 2.068037574 , 0.279882126 ), ( 73 , 2.097393201 , 0.3184441 ), ( 73 , 2.109968765 , 0.354970834 ), ( 73 , 2.08172144 , 0.365942015 ), ( 73 , 2.063925022 , 0.389810933 ), ( 73 , 2.223842019 , 0.424892583 ), ( 73 , 2.343478629 , 0.381536246 ), ( 73 , 2.331557966 , 0.469906002 ), ( 73 , 2.321986942 , 0.521044576 ), ( 73 , 2.281010655 , 0.55610225 ), ( 73 , 2.295438739 , 0.586197134 ), ( 73 , 2.284477762 , 0.640794394 ), ( 73 , 2.326473971 , 0.646980857 ), ( 73 , 2.851782101 , 0.457409506 ), ( 73 , 2.893718689 , 0.504925697 ), ( 73 , 2.919246837 , 0.524303026 ), ( 73 , 2.88773292 , 0.521354433 ), ( 73 , 2.577636144 , 0.547907251 ), ( 73 , 2.724328277 , 0.596488167 ), ( 73 , 2.965705586 , 0.664977409 ), ( 73 , 3.125790548 , 0.733279712 ), ( 73 , 2.931330454 , 0.747531433 ), ( 73 , 3.107724245 , 0.871475685 ), ( 73 , 3.012864732 , 0.854087766 ), ( 73 , 2.570199916 , 0.594895581 ), ( 73 , 2.528393959 , 0.615108154 ), ( 73 , 2.738997501 , 0.719701471 ), ( 73 , 2.632867269 , 0.733204607 ), ( 73 , 2.538673428 , 0.761611248 ), ( 73 , 2.662839783 , 0.864060675 ), ( 73 , 2.793068007 , 0.817522046 ), ( 73 , 2.809721109 , 0.869190577 ), ( 73 , 2.886736923 , 0.919827278 ), ( 73 , 2.798173568 , 0.924509779 ), ( 73 , 2.920177743 , 1.0101353 ), ( 73 , 2.894442761 , 1.076061806 ), ( 73 , 3.043924421 , 1.094552831 ), ( 73 , 1.966324993 , 0.357646554 ), ( 73 , 1.905935911 , 0.428237741 ), ( 73 , 1.874422381 , 0.449028388 ), ( 73 , 1.882695007 , 0.531847977 ), ( 73 , 1.879374609 , 0.569303638 ), ( 73 , 1.88199319 , 0.577910164 ), ( 73 , 1.972312753 , 0.62138881 ), ( 73 , 1.91955453 , 0.586679613 ), ( 73 , 1.916815951 , 0.602961122 ), ( 73 , 1.938568537 , 0.633740655 ), ( 73 , 1.997544653 , 0.678562466 ), ( 73 , 2.179600129 , 0.611661563 ), ( 73 , 2.130670189 , 0.672384202 ), ( 73 , 2.287501581 , 0.734797485 ), ( 73 , 2.21126704 , 0.696248641 ), ( 73 , 2.076558064 , 0.685683301 ), ( 73 , 1.713697869 , 0.611959932 ), ( 73 , 1.696273115 , 0.636669486 ), ( 73 , 1.771443038 , 0.680157966 ), ( 73 , 1.748411158 , 0.70107543 ), ( 73 , 1.800331257 , 0.696891489 ), ( 73 , 1.677639038 , 0.651296961 ), ( 73 , 1.641054152 , 0.656880561 ), ( 73 , 1.656879515 , 0.670817759 ), ( 73 , 1.71782451 , 0.688460119 ), ( 73 , 1.685813167 , 0.732331315 ), ( 73 , 1.714013146 , 0.818957321 ), ( 73 , 1.677242056 , 0.891464716 ), ( 73 , 1.983583158 , 0.841098279 ), ( 73 , 1.965928103 , 0.853102913 ), ( 73 , 1.893145501 , 0.8464646 ), ( 73 , 1.808786743 , 0.873444608 ), ( 73 , 2.056527594 , 0.955257152 ), ( 73 , 1.773015556 , 0.879300699 ), ( 73 , 1.718976698 , 0.915614766 ), ( 73 , 1.768193135 , 0.926523965 ), ( 73 , 1.64665988 , 1.002067461 ), ( 73 , 1.74413292 , 1.013944937 ), ( 73 , 1.772466714 , 1.037478759 ), ( 73 , 1.766536187 , 1.037587159 ), ( 73 , 1.676277382 , 1.048673462 ), ( 73 , 1.667378377 , 1.077900797 ), ( 73 , 2.391557019 , 0.827702297 ), ( 73 , 2.343956999 , 0.885605832 ), ( 73 , 2.334188868 , 0.921436704 ), ( 73 , 2.573310804 , 0.923116853 ), ( 73 , 2.220351567 , 0.940066282 ), ( 73 , 2.220603166 , 0.989025567 ), ( 73 , 2.412205575 , 0.993820928 ), ( 73 , 2.399018765 , 1.032426383 ), ( 73 , 2.275089475 , 1.030975993 ), ( 73 , 2.230183285 , 1.045667419 ), ( 73 , 2.31119085 , 1.121632011 ), ( 73 , 2.569254096 , 1.048882732 ), ( 73 , 2.663234888 , 1.098064059 ), ( 73 , 2.949725377 , 1.132850875 ), ( 73 , 3.007010266 , 1.177371516 ), ( 73 , 3.103772984 , 1.201372864 ), ( 73 , 2.754639389 , 1.157371526 ), ( 73 , 2.640733372 , 1.174250796 ), ( 73 , 2.422896016 , 1.171786794 ), ( 73 , 2.516231406 , 1.215382069 ), ( 73 , 3.074876968 , 1.276652563 ), ( 73 , 2.818121371 , 1.261662481 ), ( 73 , 2.754902844 , 1.279862289 ), ( 73 , 2.074813084 , 1.082871671 ), ( 73 , 2.007026246 , 1.039575893 ), ( 73 , 2.096131918 , 1.130048104 ), ( 73 , 2.02141389 , 1.210142688 ), ( 73 , 2.18514856 , 1.178565145 ), ( 73 , 2.069692061 , 1.240562477 ), ( 73 , 1.756181712 , 1.155365423 ), ( 73 , 1.58070854 , 1.167618683 ), ( 73 , 1.84813902 , 1.252422294 ), ( 73 , 1.872263289 , 1.255927413 ), ( 73 , 1.850291405 , 1.312937057 ), ( 73 , 2.432637854 , 1.219522619 ), ( 73 , 2.348727117 , 1.233152112 ), ( 73 , 2.404375873 , 1.24554689 ), ( 73 , 2.5217752 , 1.27547665 ), ( 73 , 2.294874696 , 1.279197715 ), ( 73 , 2.923565697 , 1.357633732 ), ( 73 , 2.927360351 , 1.426465005 ), ( 73 , 2.229069571 , 1.365340612 ), ( 73 , 3.953035187 , 0.073888849 ), ( 73 , 3.954489466 , 0.096871502 ), ( 73 , 3.928349839 , 0.133487046 ), ( 73 , 4.017389235 , 0.155569798 ), ( 73 , 4.096402216 , 0.185279335 ), ( 73 , 4.042637234 , 0.175160684 ), ( 73 , 4.035296136 , 0.19184542 ), ( 73 , 4.008569585 , 0.181996837 ), ( 73 , 3.817969554 , 0.228560547 ), ( 73 , 3.965155806 , 0.217972665 ), ( 73 , 3.997322785 , 0.235097071 ), ( 73 , 3.917363217 , 0.262822187 ), ( 73 , 4.122471654 , 0.292120905 ), ( 73 , 4.299026964 , 0.335792559 ), ( 73 , 4.244885599 , 0.333384254 ), ( 73 , 4.026360328 , 0.330207554 ), ( 73 , 4.021127154 , 0.424870632 ), ( 73 , 4.206442093 , 0.440862825 ), ( 73 , 3.746319887 , 0.183442039 ), ( 73 , 3.682287765 , 0.222109457 ), ( 73 , 3.678046238 , 0.261369445 ), ( 73 , 3.66982355 , 0.38355401 ), ( 73 , 3.730909164 , 0.347326481 ), ( 73 , 3.745281903 , 0.371826646 ), ( 73 , 3.895935019 , 0.461901794 ), ( 73 , 4.095886978 , 0.550683299 ), ( 73 , 4.040413466 , 0.566776279 ), ( 73 , 3.998317064 , 0.646988881 ), ( 73 , 3.851332277 , 0.641525433 ), ( 73 , 3.931404461 , 0.699598676 ), ( 73 , 4.284199986 , 0.380697145 ), ( 73 , 4.35379776 , 0.471999917 ), ( 73 , 4.313275711 , 0.50746831 ), ( 73 , 4.413319105 , 0.490821484 ), ( 73 , 4.360855426 , 0.509958125 ), ( 73 , 4.191963254 , 0.559195907 ), ( 73 , 4.323700986 , 0.540019961 ), ( 73 , 4.348171678 , 0.6290121 ), ( 73 , 4.451318909 , 0.599318236 ), ( 73 , 4.425783931 , 0.757584934 ), ( 73 , 4.13534008 , 0.5761698 ), ( 73 , 4.084162959 , 0.694695093 ), ( 73 , 4.043604716 , 0.795944743 ), ( 73 , 4.352428324 , 0.760350162 ), ( 73 , 4.297005533 , 0.779987012 ), ( 73 , 4.383290824 , 0.870265453 ), ( 73 , 4.359088985 , 0.887152227 ), ( 73 , 4.404290164 , 0.923572573 ), ( 73 , 4.587803877 , 0.948688865 ), ( 73 , 4.613055449 , 0.972869596 ), ( 73 , 4.300191358 , 0.892532207 ), ( 73 , 4.398298611 , 1.003375489 ), ( 73 , 4.475350739 , 0.979753296 ), ( 73 , 4.502555098 , 1.01173251 ), ( 73 , 4.424551119 , 1.053518355 ), ( 73 , 4.604072678 , 1.09016173 ), ( 73 , 3.676205475 , 0.552587426 ), ( 73 , 3.401427807 , 0.489837511 ), ( 73 , 3.486426333 , 0.498616157 ), ( 73 , 3.350209064 , 0.51543486 ), ( 73 , 3.763954422 , 0.567289865 ), ( 73 , 3.694399295 , 0.607000082 ), ( 73 , 3.675399659 , 0.630260248 ), ( 73 , 3.909524886 , 0.717973656 ), ( 73 , 3.747895779 , 0.733115862 ), ( 73 , 3.615940138 , 0.73892481 ), ( 73 , 3.725622449 , 0.808527796 ), ( 73 , 3.770298661 , 0.864504225 ), ( 73 , 3.659785803 , 0.813257285 ), ( 73 , 3.316745534 , 0.596313885 ), ( 73 , 3.214469643 , 0.691029424 ), ( 73 , 3.297748304 , 0.692608541 ), ( 73 , 3.30975693 , 0.789182794 ), ( 73 , 3.652095723 , 0.952699973 ), ( 73 , 3.314265007 , 1.062635582 ), ( 73 , 3.148656201 , 1.133402412 ), ( 73 , 4.095617249 , 0.975624313 ), ( 73 , 3.884341082 , 0.914814759 ), ( 73 , 3.879473214 , 0.946517754 ), ( 73 , 3.837119056 , 0.932703208 ), ( 73 , 3.965075584 , 1.126576777 ), ( 73 , 4.292570923 , 1.076813318 ), ( 73 , 4.533110777 , 1.112171939 ), ( 73 , 4.394205135 , 1.174023112 ), ( 73 , 4.215377541 , 1.129011276 ), ( 73 , 4.095243543 , 1.148252302 ), ( 73 , 4.122286206 , 1.198700473 ), ( 73 , 4.552071795 , 1.254368423 ), ( 73 , 4.300006344 , 1.245892005 ), ( 73 , 4.366416947 , 1.268360097 ), ( 73 , 3.688296765 , 0.98647259 ), ( 73 , 3.550707191 , 1.051767446 ), ( 73 , 3.862717294 , 1.140227648 ), ( 73 , 3.658563151 , 1.132611941 ), ( 73 , 3.757371569 , 1.183384822 ), ( 73 , 3.706379313 , 1.214583306 ), ( 73 , 3.269795282 , 1.167518897 ), ( 73 , 3.157264885 , 1.204625232 ), ( 73 , 3.399438952 , 1.232147432 ), ( 73 , 3.288666601 , 1.312707594 ), ( 73 , 4.634701456 , 1.401193448 ), ( 73 , 3.781768665 , 1.370075416 ), ( 73 , 3.212273508 , 1.398445823 ), ( 73 , 3.58516745 , 1.399819799 ), ( 73 , 3.293626346 , 1.496310727 ), ( 73 , 5.454062179 , 0.042477092 ), ( 73 , 5.528692374 , 0.095007369 ), ( 73 , 5.556495275 , 0.125978062 ), ( 73 , 5.446993624 , 0.132542598 ), ( 73 , 5.509446059 , 0.203454656 ), ( 73 , 5.659708491 , 0.204545003 ), ( 73 , 5.61422413 , 0.238904104 ), ( 73 , 5.716559158 , 0.339013636 ), ( 73 , 5.749355276 , 0.354340712 ), ( 73 , 5.65138106 , 0.373571311 ), ( 73 , 5.577099352 , 0.385961821 ), ( 73 , 5.574330322 , 0.393420845 ), ( 73 , 5.695678605 , 0.471230765 ), ( 73 , 5.343304525 , 0.281759345 ), ( 73 , 5.218532071 , 0.262619738 ), ( 73 , 5.247178265 , 0.272062524 ), ( 73 , 5.384432879 , 0.317395998 ), ( 73 , 5.367418343 , 0.339119492 ), ( 73 , 5.335241156 , 0.346444171 ), ( 73 , 5.413124078 , 0.382698701 ), ( 73 , 5.376681262 , 0.364067082 ), ( 73 , 5.359017085 , 0.386194196 ), ( 73 , 5.209949921 , 0.266895813 ), ( 73 , 5.186800886 , 0.329291325 ), ( 73 , 5.184488843 , 0.397286494 ), ( 73 , 5.274011932 , 0.386641292 ), ( 73 , 5.307665243 , 0.390890461 ), ( 73 , 5.334352164 , 0.458985775 ), ( 73 , 5.213528898 , 0.434387943 ), ( 73 , 5.513042151 , 0.418812347 ), ( 73 , 5.512323167 , 0.477022239 ), ( 73 , 5.568838632 , 0.459899848 ), ( 73 , 5.580820172 , 0.519114813 ), ( 73 , 5.341364457 , 0.506189044 ), ( 73 , 5.477696973 , 0.570533354 ), ( 73 , 5.560312004 , 0.598548101 ), ( 73 , 5.57361512 , 0.600765644 ), ( 73 , 5.414155683 , 0.611558095 ), ( 73 , 5.460766596 , 0.663041194 ), ( 73 , 5.504058383 , 0.708915347 ), ( 73 , 5.940352095 , 0.416199497 ), ( 73 , 5.938479004 , 0.439996887 ), ( 73 , 5.947062991 , 0.488492431 ), ( 73 , 5.967862548 , 0.525859464 ), ( 73 , 5.80865022 , 0.484094464 ), ( 73 , 5.764783439 , 0.468275275 ), ( 73 , 5.843019011 , 0.503489457 ), ( 73 , 5.762886066 , 0.548902102 ), ( 73 , 5.737359402 , 0.564417071 ), ( 73 , 5.790390811 , 0.602520713 ), ( 73 , 5.94679212 , 0.653578199 ), ( 73 , 5.843466194 , 0.584803314 ), ( 73 , 5.843812592 , 0.60278979 ), ( 73 , 5.914306912 , 0.690903138 ), ( 73 , 6.014613563 , 0.615785392 ), ( 73 , 6.060444293 , 0.679197203 ), ( 73 , 6.16750536 , 0.726725604 ), ( 73 , 6.167164488 , 0.74783743 ), ( 73 , 6.048270922 , 0.729368349 ), ( 73 , 6.064965271 , 0.837048935 ), ( 73 , 6.104864753 , 0.85380617 ), ( 73 , 6.187250617 , 0.855136449 ), ( 73 , 5.742999442 , 0.582338091 ), ( 73 , 5.737679145 , 0.606906962 ), ( 73 , 5.660793363 , 0.616578316 ), ( 73 , 5.629124961 , 0.619109914 ), ( 73 , 5.728169925 , 0.67780543 ), ( 73 , 5.599420459 , 0.686780412 ), ( 73 , 5.597310992 , 0.714404695 ), ( 73 , 5.547378638 , 0.718815683 ), ( 73 , 5.638487063 , 0.807341467 ), ( 73 , 5.630062468 , 0.844577187 ), ( 73 , 5.711904777 , 0.86702904 ), ( 73 , 5.781939594 , 0.902336114 ), ( 73 , 5.939192295 , 0.785551384 ), ( 73 , 5.947525974 , 0.823248789 ), ( 73 , 5.906312143 , 0.812716569 ), ( 73 , 5.952831232 , 0.862403046 ), ( 73 , 5.985391097 , 0.925521218 ), ( 73 , 6.049905896 , 0.891464843 ), ( 73 , 6.242313115 , 0.945932212 ), ( 73 , 6.20033639 , 1.009475113 ), ( 73 , 6.211064985 , 1.013750748 ), ( 73 , 5.870424824 , 0.879672376 ), ( 73 , 5.818045212 , 0.927716103 ), ( 73 , 5.984570465 , 1.02989264 ), ( 73 , 5.142780852 , 0.402164086 ), ( 73 , 5.123566082 , 0.442482722 ), ( 73 , 5.149702303 , 0.47115666 ), ( 73 , 5.112096906 , 0.471004018 ), ( 73 , 5.204737588 , 0.50601734 ), ( 73 , 5.226860971 , 0.5039516 ), ( 73 , 5.129233263 , 0.545880908 ), ( 73 , 5.154210837 , 0.536188296 ), ( 73 , 5.194294121 , 0.536972267 ), ( 73 , 5.229644349 , 0.580806934 ), ( 73 , 5.080217541 , 0.541877458 ), ( 73 , 4.961472272 , 0.558522654 ), ( 73 , 5.021143505 , 0.552129437 ), ( 73 , 5.078025007 , 0.690987921 ), ( 73 , 5.298244709 , 0.558466017 ), ( 73 , 5.316292396 , 0.56042932 ), ( 73 , 5.284353919 , 0.56351337 ), ( 73 , 5.288489804 , 0.60176956 ), ( 73 , 5.294196166 , 0.621335393 ), ( 73 , 5.268253001 , 0.623401126 ), ( 73 , 5.261888049 , 0.622594455 ), ( 73 , 5.264268386 , 0.632262116 ), ( 73 , 5.236822183 , 0.635547429 ), ( 73 , 5.308178511 , 0.633137884 ), ( 73 , 5.318287478 , 0.668104285 ), ( 73 , 5.445396527 , 0.685699252 ), ( 73 , 5.450330263 , 0.749704795 ), ( 73 , 5.33766462 , 0.711379044 ), ( 73 , 5.379344046 , 0.7313213 ), ( 73 , 5.356471331 , 0.733655537 ), ( 73 , 5.369430049 , 0.773446954 ), ( 73 , 5.217425862 , 0.704967898 ), ( 73 , 5.258556997 , 0.712331564 ), ( 73 , 5.244096808 , 0.713120304 ), ( 73 , 5.270978992 , 0.739758333 ), ( 73 , 5.145755726 , 0.775553694 ), ( 73 , 5.303164489 , 0.767955587 ), ( 73 , 5.254512406 , 0.895139816 ), ( 73 , 5.235536368 , 0.91018721 ), ( 73 , 4.923951686 , 0.589465174 ), ( 73 , 4.918597502 , 0.595127818 ), ( 73 , 4.894210097 , 0.595134959 ), ( 73 , 4.939391218 , 0.654786521 ), ( 73 , 4.936799759 , 0.674166134 ), ( 73 , 4.876105859 , 0.659398646 ), ( 73 , 5.049018029 , 0.720205777 ), ( 73 , 5.066020317 , 0.745023304 ), ( 73 , 4.933693622 , 0.767204516 ), ( 73 , 4.954784782 , 0.82799117 ), ( 73 , 4.823153787 , 0.670920907 ), ( 73 , 4.790084517 , 0.703430206 ), ( 73 , 4.866159562 , 0.725745113 ), ( 73 , 4.732017671 , 0.748059172 ), ( 73 , 4.733391726 , 0.749756513 ), ( 73 , 4.837151957 , 0.810239129 ), ( 73 , 4.812720732 , 0.80919041 ), ( 73 , 4.716998197 , 0.845882617 ), ( 73 , 5.134002585 , 0.846766669 ), ( 73 , 4.979027757 , 0.838375292 ), ( 73 , 4.919618719 , 0.862750191 ), ( 73 , 4.932134382 , 0.947728805 ), ( 73 , 4.828655918 , 1.042058895 ), ( 73 , 4.849035209 , 1.091500374 ), ( 73 , 4.713550243 , 1.109183617 ), ( 73 , 5.482111026 , 0.766208339 ), ( 73 , 5.494293339 , 0.781744748 ), ( 73 , 5.472039111 , 0.787320669 ), ( 73 , 5.529303916 , 0.833122024 ), ( 73 , 5.426820737 , 0.808401712 ), ( 73 , 5.435471669 , 0.884426787 ), ( 73 , 5.498270458 , 0.849616914 ), ( 73 , 5.530974983 , 0.900312401 ), ( 73 , 5.458805423 , 0.914478645 ), ( 73 , 5.622260557 , 0.880435726 ), ( 73 , 5.582470389 , 0.913232547 ), ( 73 , 5.681461279 , 0.912671044 ), ( 73 , 5.726913576 , 0.960626471 ), ( 73 , 5.558939836 , 0.919995053 ), ( 73 , 5.607145417 , 1.013786451 ), ( 73 , 5.396739799 , 0.871087615 ), ( 73 , 5.383336739 , 0.921997166 ), ( 73 , 5.412910916 , 0.961797929 ), ( 73 , 5.295682329 , 0.927228201 ), ( 73 , 5.295346548 , 0.936528925 ), ( 73 , 5.343525548 , 0.96766212 ), ( 73 , 5.514719923 , 0.963949919 ), ( 73 , 5.817044474 , 1.034973135 ), ( 73 , 5.797808514 , 1.06504181 ), ( 73 , 5.765655754 , 1.08165443 ), ( 73 , 6.060517525 , 1.097959896 ), ( 73 , 6.073862728 , 1.129563316 ), ( 73 , 6.076223541 , 1.13101717 ), ( 73 , 6.08644205 , 1.141854817 ), ( 73 , 6.154629413 , 1.123858203 ), ( 73 , 6.108845751 , 1.131818731 ), ( 73 , 6.180537719 , 1.184184765 ), ( 73 , 5.981254787 , 1.164794177 ), ( 73 , 6.10263853 , 1.188758172 ), ( 73 , 5.854513903 , 1.164245018 ), ( 73 , 5.738804936 , 1.147106109 ), ( 73 , 5.599983217 , 1.135058079 ), ( 73 , 5.648974289 , 1.16539396 ), ( 73 , 5.888352418 , 1.229337696 ), ( 73 , 5.181473982 , 0.993275095 ), ( 73 , 5.21350892 , 1.040265997 ), ( 73 , 5.184281413 , 1.071827549 ), ( 73 , 5.332983364 , 1.213220143 ), ( 73 , 5.315286814 , 1.235450755 ), ( 73 , 4.822201977 , 1.131651286 ), ( 73 , 5.12866413 , 1.218337825 ), ( 73 , 5.049993717 , 1.245236643 ), ( 73 , 5.294211597 , 1.272294216 ), ( 73 , 5.462170755 , 1.302695583 ), ( 73 , 6.05448073 , 1.406199453 ), ( 73 , 4.817894802 , 1.353706024 ), ( 73 , 4.826526742 , 1.389785646 ), ( 73 , 4.75675506 , 1.44757703 ), ( 73 , 5.387719298 , 1.43137268 ), ( 73 , 5.970062036 , 1.479619853 ), ( 73 , 6.14227537 , 1.510741247 ), ( 73 , 5.451434081 , 1.465073148 ), ( 73 , 5.283719051 , 1.475585319 ), ( 73 , 5.273413914 , 1.485695445 ), ( 73 , 0.008759995 , -0.661516846 ), ( 73 , 0.008379971 , -0.649790566 ), ( 73 , 0.022553727 , -0.566693275 ), ( 73 , 6.247932907 , -0.578088352 ), ( 73 , 0.04634245 , -0.545894837 ), ( 73 , 6.200905801 , -0.559745337 ), ( 73 , 6.262122243 , -0.373149455 ), ( 73 , 0.241648665 , -0.430403994 ), ( 73 , 0.163063008 , -0.432263299 ), ( 73 , 0.215817361 , -0.405118882 ), ( 73 , 0.214252461 , -0.369161452 ), ( 73 , 0.256262088 , -0.342656814 ), ( 73 , 0.139970567 , -0.318036001 ), ( 73 , 0.110758162 , -0.304177152 ), ( 73 , 0.120774145 , -0.286394996 ), ( 73 , 0.060768437 , -0.306223864 ), ( 73 , 6.088239538 , -0.433745623 ), ( 73 , 6.044323221 , -0.424983332 ), ( 73 , 6.194582445 , -0.39328541 ), ( 73 , 6.160161919 , -0.370889199 ), ( 73 , 6.237075799 , -0.377234 ), ( 73 , 6.24204743 , -0.353139718 ), ( 73 , 6.24293718 , -0.319267574 ), ( 73 , 6.241789159 , -0.228824483 ), ( 73 , 6.276957537 , -0.246528298 ), ( 73 , 6.178480846 , -0.153003024 ), ( 73 , 6.199469713 , -0.138133733 ), ( 73 , 0.038046152 , -0.038791559 ), ( 73 , 0.418410523 , -0.306023669 ), ( 73 , 0.363718927 , -0.313006173 ), ( 73 , 0.416458718 , -0.233538489 ), ( 73 , 0.391321265 , -0.230808558 ), ( 73 , 0.397049081 , -0.086560581 ), ( 73 , 0.322319287 , -0.084609562 ), ( 73 , 0.597584293 , -0.114813477 ), ( 73 , 0.630020506 , -0.054188968 ), ( 73 , 0.563521592 , -0.040705904 ), ( 73 , 0.764601548 , 0.007616842 ), ( 73 , 0.643551303 , -0.01311615 ), ( 73 , 0.701580714 , 0.050589849 ), ( 73 , 0.685740033 , 0.042155557 ), ( 73 , 0.486451469 , -0.073662516 ), ( 73 , 0.486982942 , -0.046042038 ), ( 73 , 0.553293088 , 0.025171373 ), ( 73 , 0.525183506 , 0.076611936 ), ( 73 , 0.118206085 , -0.087335929 ), ( 73 , 0.187764051 , -0.067304364 ), ( 73 , 0.224908883 , -0.054859222 ), ( 73 , 0.077693831 , -0.032510355 ), ( 73 , 0.146107084 , -0.01062858 ), ( 73 , 0.072680615 , 0.032300707 ), ( 73 , 0.079109776 , 0.066266279 ), ( 73 , 0.232668631 , 0.071313906 ), ( 73 , 0.42187795 , 0.117248517 ), ( 73 , 0.474195035 , 0.134107498 ), ( 73 , 0.541067083 , 0.14127654 ), ( 73 , 0.559925078 , 0.154461427 ), ( 73 , 0.545453273 , 0.176557295 ), ( 73 , 0.330638914 , 0.17078177 ), ( 73 , 0.300771179 , 0.169827454 ), ( 73 , 0.292641084 , 0.201621212 ), ( 73 , 0.290641765 , 0.24232739 ), ( 73 , 0.400172825 , 0.190058067 ), ( 73 , 0.372273059 , 0.283738017 ), ( 73 , 0.359400619 , 0.29365693 ), ( 73 , 0.360920247 , 0.300147702 ), ( 73 , 5.957974597 , -0.271986104 ), ( 73 , 5.953123918 , -0.256146532 ), ( 73 , 5.835744273 , -0.27889917 ), ( 73 , 5.823375986 , -0.263584963 ), ( 73 , 5.833492069 , -0.255815092 ), ( 73 , 6.078014131 , -0.16703775 ), ( 73 , 6.044551314 , -0.135345332 ), ( 73 , 5.947296484 , -0.176323947 ), ( 73 , 5.981116735 , -0.127618864 ), ( 73 , 5.726839417 , -0.164377948 ), ( 73 , 5.779330376 , -0.152154151 ), ( 73 , 5.93502337 , -0.114052209 ), ( 73 , 6.175175174 , -0.067256932 ), ( 73 , 6.217739183 , -0.011524274 ), ( 73 , 6.157141204 , 0.041242332 ), ( 73 , 6.055250121 , -0.005167444 ), ( 73 , 5.945938845 , 0.001236894 ), ( 73 , 6.081095064 , 0.038464158 ), ( 73 , 6.018392588 , 0.076062364 ), ( 73 , 5.693802718 , -0.157711097 ), ( 73 , 5.674200616 , -0.121738692 ), ( 73 , 5.736013538 , -0.052308766 ), ( 73 , 5.818168025 , -0.028876541 ), ( 73 , 5.599872297 , 0.048278429 ), ( 73 , 5.591032547 , 0.051906599 ), ( 73 , 5.688288363 , 0.009338708 ), ( 73 , 5.693280684 , 0.052220725 ), ( 73 , 5.750966792 , 0.103676975 ), ( 73 , 5.676852129 , 0.08762618 ), ( 73 , 5.891205998 , 0.002413377 ), ( 73 , 5.900794438 , 0.04513048 ), ( 73 , 5.858074187 , 0.112978237 ), ( 73 , 5.852932037 , 0.125404585 ), ( 73 , 5.867464195 , 0.171221773 ), ( 73 , 5.742063279 , 0.176224397 ), ( 73 , 5.793004515 , 0.187684789 ), ( 73 , 5.829448012 , 0.205248804 ), ( 73 , 5.788233295 , 0.217213736 ), ( 73 , 5.882309259 , 0.213780401 ), ( 73 , 5.919712523 , 0.229612841 ), ( 73 , 5.834959941 , 0.262608425 ), ( 73 , 0.006049097 , 0.118532525 ), ( 73 , 0.137461942 , 0.201270075 ), ( 73 , 0.075971415 , 0.154933397 ), ( 73 , 0.089472571 , 0.190548539 ), ( 73 , 0.091591962 , 0.222907587 ), ( 73 , 6.140545627 , 0.140797975 ), ( 73 , 6.136831487 , 0.150836591 ), ( 73 , 6.282552583 , 0.203745325 ), ( 73 , 0.017473601 , 0.211982311 ), ( 73 , 0.011081216 , 0.283731164 ), ( 73 , 0.287733812 , 0.268464891 ), ( 73 , 0.250894204 , 0.375000849 ), ( 73 , 0.077839155 , 0.285026576 ), ( 73 , 0.178840481 , 0.366874522 ), ( 73 , 0.175978517 , 0.419820392 ), ( 73 , 0.185370316 , 0.482458671 ), ( 73 , 6.045516641 , 0.252240305 ), ( 73 , 6.027285283 , 0.259543934 ), ( 73 , 6.162812771 , 0.303757865 ), ( 73 , 6.190796114 , 0.406802059 ), ( 73 , 5.988068439 , 0.277196567 ), ( 73 , 6.043267614 , 0.325177296 ), ( 73 , 5.91574096 , 0.344119457 ), ( 73 , 6.084692211 , 0.356784046 ), ( 73 , 6.129408807 , 0.444995901 ), ( 73 , 6.033331894 , 0.403699432 ), ( 73 , 0.052463222 , 0.499266542 ), ( 73 , 0.08005476 , 0.530503168 ), ( 73 , 0.035610753 , 0.54766648 ), ( 73 , 0.091203226 , 0.575566996 ), ( 73 , 0.097711184 , 0.620225737 ), ( 73 , 6.178141173 , 0.486334843 ), ( 73 , 6.233373273 , 0.495167296 ), ( 73 , 6.168297327 , 0.521406384 ), ( 73 , 6.126344826 , 0.517885828 ), ( 73 , 6.128359269 , 0.536032233 ), ( 73 , 6.174031038 , 0.555633543 ), ( 73 , 6.209572407 , 0.606430992 ), ( 73 , 1.575388797 , -0.64702074 ), ( 73 , 1.529240516 , -0.656611084 ), ( 73 , 1.555668095 , -0.583540592 ), ( 73 , 1.728561596 , -0.503274562 ), ( 73 , 1.636369385 , -0.512524102 ), ( 73 , 1.627458957 , -0.49678013 ), ( 73 , 1.46138387 , -0.553173152 ), ( 73 , 1.42728233 , -0.550929095 ), ( 73 , 1.515671339 , -0.473588344 ), ( 73 , 1.579993004 , -0.478708297 ), ( 73 , 1.6548097 , -0.435893843 ), ( 73 , 1.509326578 , -0.403878976 ), ( 73 , 1.758858761 , -0.51028737 ), ( 73 , 1.759139357 , -0.494850679 ), ( 73 , 1.800684745 , -0.455820475 ), ( 73 , 1.836053266 , -0.447568396 ), ( 73 , 1.854815611 , -0.352599503 ), ( 73 , 1.907078284 , -0.369830254 ), ( 73 , 1.896024819 , -0.348910536 ), ( 73 , 1.841113282 , -0.307953828 ), ( 73 , 1.821824664 , -0.294773829 ), ( 73 , 1.683211576 , -0.366049369 ), ( 73 , 1.766006422 , -0.332537064 ), ( 73 , 1.835403448 , -0.268758345 ), ( 73 , 1.727208846 , -0.281046604 ), ( 73 , 1.785752187 , -0.221096519 ), ( 73 , 1.365125079 , -0.474338397 ), ( 73 , 1.428611906 , -0.463999761 ), ( 73 , 1.35141415 , -0.392595096 ), ( 73 , 1.523709917 , -0.338591083 ), ( 73 , 1.536812151 , -0.332550855 ), ( 73 , 1.252074336 , -0.370207182 ), ( 73 , 1.303520405 , -0.310784711 ), ( 73 , 1.429177724 , -0.237011432 ), ( 73 , 1.577647595 , -0.286211594 ), ( 73 , 1.596662531 , -0.231217489 ), ( 73 , 1.568051623 , -0.224015848 ), ( 73 , 1.694236502 , -0.227819228 ), ( 73 , 1.659306741 , -0.189932766 ), ( 73 , 1.727451662 , -0.198518712 ), ( 73 , 1.665545779 , -0.168998328 ), ( 73 , 1.685200149 , -0.128481462 ), ( 73 , 1.494622331 , -0.203233484 ), ( 73 , 1.548558271 , -0.160241851 ), ( 73 , 1.502270942 , -0.174842378 ), ( 73 , 1.466529461 , -0.129092202 ), ( 73 , 1.462514276 , -0.103444128 ), ( 73 , 1.609828879 , -0.035554778 ), ( 73 , 1.94657472 , -0.316279468 ), ( 73 , 1.960618337 , -0.302727902 ), ( 73 , 2.017227631 , -0.280460285 ), ( 73 , 2.004745347 , -0.201829305 ), ( 73 , 1.999263907 , -0.185233593 ), ( 73 , 1.84957467 , -0.228586506 ), ( 73 , 1.881888838 , -0.210170098 ), ( 73 , 1.852833802 , -0.201132686 ), ( 73 , 1.879642965 , -0.162943638 ), ( 73 , 1.921231141 , -0.149222303 ), ( 73 , 1.824386989 , -0.157554343 ), ( 73 , 1.878645726 , -0.137375574 ), ( 73 , 1.826544491 , -0.125424045 ), ( 73 , 2.021267275 , -0.072104805 ), ( 73 , 1.937408366 , -0.069444536 ), ( 73 , 1.909335562 , -0.065415335 ), ( 73 , 1.989745526 , -0.054995261 ), ( 73 , 2.21474408 , -0.089870439 ), ( 73 , 2.224941132 , 0.000334711 ), ( 73 , 2.187197156 , 0.018547809 ), ( 73 , 1.977579435 , 0.002867314 ), ( 73 , 2.019509657 , 0.028092461 ), ( 73 , 2.132064965 , 0.033075577 ), ( 73 , 2.163374901 , 0.048893508 ), ( 73 , 2.218113246 , 0.116949155 ), ( 73 , 1.750349884 , -0.09956805 ), ( 73 , 1.682709063 , -0.084340017 ), ( 73 , 1.75678768 , -0.066946117 ), ( 73 , 1.787819036 , -0.023385383 ), ( 73 , 1.867271403 , -0.081642821 ), ( 73 , 1.836673781 , -0.011681479 ), ( 73 , 1.855067263 , 0.005760869 ), ( 73 , 1.870182574 , 0.072885738 ), ( 73 , 1.737030439 , -0.025219119 ), ( 73 , 1.638560354 , 0.014572829 ), ( 73 , 1.594264898 , 0.010694398 ), ( 73 , 1.593235717 , 0.015121947 ), ( 73 , 1.67082474 , 0.065637422 ), ( 73 , 1.677874505 , 0.073069085 ), ( 73 , 1.802001164 , 0.047882943 ), ( 73 , 1.736096923 , 0.039607865 ), ( 73 , 1.825143068 , 0.067993935 ), ( 73 , 1.806855801 , 0.116721684 ), ( 73 , 1.809332462 , 0.117357717 ), ( 73 , 1.707608612 , 0.050813215 ), ( 73 , 1.703820406 , 0.075614852 ), ( 73 , 1.711099282 , 0.084186482 ), ( 73 , 1.971448528 , 0.020331561 ), ( 73 , 1.98772544 , 0.069596154 ), ( 73 , 1.94637949 , 0.097386175 ), ( 73 , 1.899134772 , 0.101551159 ), ( 73 , 2.095764778 , 0.156632731 ), ( 73 , 2.049317277 , 0.212031651 ), ( 73 , 1.914497504 , 0.14811997 ), ( 73 , 1.900234638 , 0.165760147 ), ( 73 , 1.906784231 , 0.165159958 ), ( 73 , 1.816134906 , 0.15263539 ), ( 73 , 1.846617886 , 0.157479543 ), ( 73 , 1.803081212 , 0.184838632 ), ( 73 , 1.842660622 , 0.219593672 ), ( 73 , 1.875788686 , 0.22946912 ), ( 73 , 1.946217028 , 0.246141969 ), ( 73 , 1.93643122 , 0.291035047 ), ( 73 , 1.948028084 , 0.323178875 ), ( 73 , 1.186618505 , -0.220480562 ), ( 73 , 1.313579072 , -0.195617783 ), ( 73 , 1.306565641 , -0.159981181 ), ( 73 , 1.08795506 , -0.138390928 ), ( 73 , 1.089445866 , -0.137743381 ), ( 73 , 1.16399377 , -0.120121937 ), ( 73 , 1.226458151 , -0.117766652 ), ( 73 , 1.369188229 , -0.117780048 ), ( 73 , 1.389388043 , -0.09881261 ), ( 73 , 1.462061529 , -0.082586184 ), ( 73 , 1.377721135 , -0.083713963 ), ( 73 , 1.418167523 , -0.049139452 ), ( 73 , 1.346641157 , -0.057703183 ), ( 73 , 1.427338244 , -0.018896921 ), ( 73 , 1.387608404 , -0.000657904 ), ( 73 , 1.434693797 , 0.037781474 ), ( 73 , 1.24718087 , -0.050765334 ), ( 73 , 1.364067358 , 0.001402758 ), ( 73 , 1.301486292 , 0.007915801 ), ( 73 , 1.292571998 , 0.055428056 ), ( 73 , 1.295855143 , 0.057353633 ), ( 73 , 1.259506878 , 0.063692349 ), ( 73 , 1.360291384 , 0.018089875 ), ( 73 , 1.355033087 , 0.092763184 ), ( 73 , 0.998293289 , -0.122437377 ), ( 73 , 1.041382043 , -0.063969282 ), ( 73 , 1.117118264 , 0.007919497 ), ( 73 , 1.095872731 , 0.040461774 ), ( 73 , 1.045859047 , 0.031325156 ), ( 73 , 1.061830998 , 0.055639109 ), ( 73 , 0.90242882 , 0.000457305 ), ( 73 , 0.830347253 , -0.029579339 ), ( 73 , 0.83632534 , -0.008627959 ), ( 73 , 0.837910761 , 0.001880064 ), ( 73 , 1.032495876 , 0.053370176 ), ( 73 , 0.950472078 , 0.072353792 ), ( 73 , 0.919726679 , 0.093671116 ), ( 73 , 1.160368169 , 0.0180073 ), ( 73 , 1.231456439 , 0.05218329 ), ( 73 , 1.158958351 , 0.098530247 ), ( 73 , 1.176568348 , 0.090131349 ), ( 73 , 1.266621454 , 0.121299645 ), ( 73 , 1.252761208 , 0.175434699 ), ( 73 , 1.322201983 , 0.210481972 ), ( 73 , 1.28600277 , 0.215581282 ), ( 73 , 1.277078467 , 0.216152991 ), ( 73 , 1.154975664 , 0.175341136 ), ( 73 , 1.217990179 , 0.226937067 ), ( 73 , 1.632797667 , 0.068107229 ), ( 73 , 1.634071297 , 0.079290607 ), ( 73 , 1.627390051 , 0.127016154 ), ( 73 , 1.675604297 , 0.160072952 ), ( 73 , 1.494442607 , 0.183928662 ), ( 73 , 1.541170749 , 0.206183986 ), ( 73 , 1.568458122 , 0.217624673 ), ( 73 , 1.662482939 , 0.256645658 ), ( 73 , 1.633216005 , 0.252959733 ), ( 73 , 1.613959048 , 0.259229552 ), ( 73 , 1.615552536 , 0.277616341 ), ( 73 , 1.503262481 , 0.262905997 ), ( 73 , 1.576675622 , 0.330934829 ), ( 73 , 1.566054684 , 0.328471671 ), ( 73 , 1.728192738 , 0.239005012 ), ( 73 , 1.789766242 , 0.287168058 ), ( 73 , 1.777270488 , 0.319790825 ), ( 73 , 1.858468782 , 0.264966011 ), ( 73 , 1.881821053 , 0.267593034 ), ( 73 , 1.850743633 , 0.325831091 ), ( 73 , 1.818674595 , 0.365945654 ), ( 73 , 1.900494436 , 0.383388956 ), ( 73 , 1.708606968 , 0.293708587 ), ( 73 , 1.670398716 , 0.306724668 ), ( 73 , 1.645640274 , 0.330127252 ), ( 73 , 1.663478647 , 0.368830488 ), ( 73 , 1.633956479 , 0.380162288 ), ( 73 , 1.766787766 , 0.364088121 ), ( 73 , 1.785714637 , 0.389395309 ), ( 73 , 1.383570609 , 0.219308081 ), ( 73 , 1.439742385 , 0.281890873 ), ( 73 , 1.520535014 , 0.304270835 ), ( 73 , 1.521692016 , 0.318399023 ), ( 73 , 1.535314745 , 0.340711445 ), ( 73 , 1.513834311 , 0.353984157 ), ( 73 , 1.23423061 , 0.326722173 ), ( 73 , 1.389836187 , 0.380347324 ), ( 73 , 1.535209045 , 0.408104309 ), ( 73 , 1.509374967 , 0.452278676 ), ( 73 , 1.505023347 , 0.459760441 ), ( 73 , 1.566843132 , 0.481044647 ), ( 73 , 1.751039332 , 0.518596545 ), ( 73 , 1.723656224 , 0.548636501 ), ( 73 , 1.486132092 , 0.505742906 ), ( 73 , 1.525570644 , 0.480849395 ), ( 73 , 1.526839978 , 0.554763503 ), ( 73 , 1.57222287 , 0.557471168 ), ( 73 , 1.552632125 , 0.644662821 ), ( 73 , 1.603634739 , 0.66465866 ), ( 73 , 3.130726441 , -0.671884962 ), ( 73 , 3.19604044 , -0.583026918 ), ( 73 , 3.089492984 , -0.61480614 ), ( 73 , 3.147760135 , -0.594291363 ), ( 73 , 3.238206445 , -0.61979981 ), ( 73 , 3.047113054 , -0.586529606 ), ( 73 , 3.03270564 , -0.536243783 ), ( 73 , 3.086773817 , -0.545499717 ), ( 73 , 3.055541848 , -0.497361691 ), ( 73 , 3.410428296 , -0.430511285 ), ( 73 , 3.462078823 , -0.328562036 ), ( 73 , 3.431530178 , -0.260332729 ), ( 73 , 3.239514024 , -0.423009311 ), ( 73 , 3.260469532 , -0.321344926 ), ( 73 , 3.174169799 , -0.317486514 ), ( 73 , 3.387803826 , -0.260927271 ), ( 73 , 3.358813474 , -0.263177075 ), ( 73 , 3.25499665 , -0.260890939 ), ( 73 , 2.966151847 , -0.491994786 ), ( 73 , 2.937422719 , -0.461901336 ), ( 73 , 3.009626493 , -0.436366318 ), ( 73 , 2.974762896 , -0.385809097 ), ( 73 , 3.069084273 , -0.345984143 ), ( 73 , 2.908358538 , -0.369431644 ), ( 73 , 2.882522727 , -0.337594689 ), ( 73 , 2.84898073 , -0.301533713 ), ( 73 , 2.822950391 , -0.274573822 ), ( 73 , 2.941643145 , -0.29471348 ), ( 73 , 2.936263015 , -0.223148934 ), ( 73 , 3.191236404 , -0.293060967 ), ( 73 , 3.102521725 , -0.232534411 ), ( 73 , 3.128166453 , -0.211325299 ), ( 73 , 3.243949372 , -0.106786359 ), ( 73 , 3.0348944 , -0.21663158 ), ( 73 , 3.009066256 , -0.1756285 ), ( 73 , 3.184329693 , -0.091204731 ), ( 73 , 3.121694454 , -0.089615731 ), ( 73 , 3.628462709 , -0.227156088 ), ( 73 , 3.658433265 , -0.210492406 ), ( 73 , 3.719989837 , -0.172790713 ), ( 73 , 3.599509821 , -0.133244948 ), ( 73 , 3.489498674 , -0.203734245 ), ( 73 , 3.530123137 , -0.103942487 ), ( 73 , 3.593218173 , -0.074606762 ), ( 73 , 3.517468858 , -0.063898906 ), ( 73 , 3.74361724 , -0.13904749 ), ( 73 , 3.827268849 , -0.067935506 ), ( 73 , 3.856188037 , -0.043733298 ), ( 73 , 3.853760898 , 0.031844922 ), ( 73 , 3.7458995 , 0.064128383 ), ( 73 , 3.672058773 , 0.074226137 ), ( 73 , 3.656229551 , 0.089318822 ), ( 73 , 3.399038653 , -0.10630868 ), ( 73 , 3.42407139 , 0.005138059 ), ( 73 , 3.291627949 , -0.024565938 ), ( 73 , 3.255094757 , 0.035639902 ), ( 73 , 3.408342262 , 0.076072399 ), ( 73 , 3.509445507 , 0.024428639 ), ( 73 , 3.506597321 , 0.047555175 ), ( 73 , 3.67564866 , 0.180243507 ), ( 73 , 3.635801533 , 0.22238275 ), ( 73 , 3.490438798 , 0.148124731 ), ( 73 , 2.820507577 , -0.234918753 ), ( 73 , 2.708867319 , -0.270139546 ), ( 73 , 2.831643657 , -0.158828026 ), ( 73 , 2.848420247 , -0.119089107 ), ( 73 , 2.633910161 , -0.224754015 ), ( 73 , 2.632603852 , -0.187227574 ), ( 73 , 2.677920981 , -0.128873482 ), ( 73 , 2.708079463 , -0.108085704 ), ( 73 , 3.019395629 , -0.031107575 ), ( 73 , 3.008088089 , -0.01481446 ), ( 73 , 2.884421837 , 0.000821642 ), ( 73 , 2.906134623 , 0.021128319 ), ( 73 , 2.971346686 , 0.085178055 ), ( 73 , 2.943241529 , 0.104593523 ), ( 73 , 2.506927211 , -0.060874575 ), ( 73 , 2.490101053 , -0.070954472 ), ( 73 , 2.622297153 , -0.055663032 ), ( 73 , 2.624935088 , -0.017770393 ), ( 73 , 2.416880113 , 0.049964021 ), ( 73 , 2.758963922 , 0.08108083 ), ( 73 , 2.890902862 , 0.160097609 ), ( 73 , 2.877827593 , 0.173324268 ), ( 73 , 2.59229628 , 0.140923965 ), ( 73 , 2.633496874 , 0.172768375 ), ( 73 , 2.745356436 , 0.177245492 ), ( 73 , 3.121507334 , 0.01912319 ), ( 73 , 3.077896568 , 0.12269403 ), ( 73 , 3.185796874 , 0.286701058 ), ( 73 , 3.141921834 , 0.338928505 ), ( 73 , 3.354873251 , 0.211104632 ), ( 73 , 3.491805117 , 0.310062574 ), ( 73 , 3.364982413 , 0.334431549 ), ( 73 , 3.37632387 , 0.332618127 ), ( 73 , 3.410306972 , 0.371209361 ), ( 73 , 3.417232484 , 0.415852753 ), ( 73 , 3.277086027 , 0.414923594 ), ( 73 , 2.982913498 , 0.299185999 ), ( 73 , 2.97787641 , 0.304331272 ), ( 73 , 3.066252274 , 0.318383557 ), ( 73 , 3.052610323 , 0.331555231 ), ( 73 , 3.025921504 , 0.343478605 ), ( 73 , 3.160241864 , 0.374521992 ), ( 73 , 3.261796414 , 0.490590362 ), ( 73 , 3.091057802 , 0.495969102 ), ( 73 , 3.007703456 , 0.530991947 ), ( 73 , 3.015086387 , 0.564056676 ), ( 73 , 3.078685138 , 0.62647768 ), ( 73 , 3.121426987 , 0.67643271 ), ( 73 , 4.687982679 , -0.674174983 ), ( 73 , 4.710088979 , -0.628685637 ), ( 73 , 4.676871536 , -0.617242534 ), ( 73 , 4.666508876 , -0.617465054 ), ( 73 , 4.730510049 , -0.594339034 ), ( 73 , 4.832494021 , -0.583131767 ), ( 73 , 4.805467661 , -0.561654656 ), ( 73 , 4.825451254 , -0.554226866 ), ( 73 , 4.861928762 , -0.539011898 ), ( 73 , 4.737128425 , -0.510994152 ), ( 73 , 4.595016633 , -0.576967838 ), ( 73 , 4.594829396 , -0.517505147 ), ( 73 , 4.565177608 , -0.495967761 ), ( 73 , 4.626858503 , -0.50480577 ), ( 73 , 4.70910767 , -0.512955476 ), ( 73 , 4.727210017 , -0.459369835 ), ( 73 , 4.73336853 , -0.446903985 ), ( 73 , 4.752946429 , -0.418676667 ), ( 73 , 4.668563277 , -0.422496975 ), ( 73 , 4.673688723 , -0.400056314 ), ( 73 , 4.933282263 , -0.467235766 ), ( 73 , 4.949665091 , -0.432301435 ), ( 73 , 4.925385711 , -0.325192872 ), ( 73 , 4.959967979 , -0.304457631 ), ( 73 , 4.80860267 , -0.400060638 ), ( 73 , 4.874349372 , -0.335268015 ), ( 73 , 4.765817915 , -0.339166851 ), ( 73 , 4.827558449 , -0.272798306 ), ( 73 , 4.955633943 , -0.285351368 ), ( 73 , 4.872924677 , -0.278300879 ), ( 73 , 4.869478299 , -0.245491846 ), ( 73 , 4.902313693 , -0.197868422 ), ( 73 , 4.540085378 , -0.463381703 ), ( 73 , 4.551651399 , -0.438034605 ), ( 73 , 4.470065858 , -0.408244264 ), ( 73 , 4.657948978 , -0.36368178 ), ( 73 , 4.545969714 , -0.35900421 ), ( 73 , 4.47547709 , -0.37144431 ), ( 73 , 4.593901712 , -0.235308773 ), ( 73 , 4.455732257 , -0.236829482 ), ( 73 , 4.727066798 , -0.307354536 ), ( 73 , 4.777677927 , -0.268514675 ), ( 73 , 4.809543907 , -0.251130244 ), ( 73 , 4.764422005 , -0.098156246 ), ( 73 , 5.094914185 , -0.320284475 ), ( 73 , 5.136435028 , -0.251873619 ), ( 73 , 5.026190636 , -0.254547674 ), ( 73 , 5.035277932 , -0.24502939 ), ( 73 , 5.199833506 , -0.191097608 ), ( 73 , 5.273078444 , -0.179996562 ), ( 73 , 5.138760344 , -0.174085212 ), ( 73 , 5.015222107 , -0.234871683 ), ( 73 , 5.063251101 , -0.184313065 ), ( 73 , 5.357153436 , -0.098685974 ), ( 73 , 5.421240417 , -0.040612613 ), ( 73 , 5.398216575 , -0.022878255 ), ( 73 , 5.355619303 , -0.027210381 ), ( 73 , 5.337741309 , -0.007895003 ), ( 73 , 5.141575299 , 0.006031861 ), ( 73 , 5.374430605 , 0.077070404 ), ( 73 , 5.285482263 , 0.152141842 ), ( 73 , 4.92762975 , -0.145085434 ), ( 73 , 4.90249787 , -0.146055216 ), ( 73 , 4.917079619 , -0.132280878 ), ( 73 , 4.968903726 , -0.098346088 ), ( 73 , 4.856896018 , -0.090103709 ), ( 73 , 4.995741752 , -0.070531249 ), ( 73 , 4.979384653 , 0.043296276 ), ( 73 , 4.810114159 , -0.020985498 ), ( 73 , 4.849764353 , -0.028536763 ), ( 73 , 4.903739595 , 0.150532728 ), ( 73 , 5.120862753 , 0.065647331 ), ( 73 , 5.09929639 , 0.064470205 ), ( 73 , 5.066063588 , 0.089205059 ), ( 73 , 5.054431064 , 0.089555783 ), ( 73 , 5.121564323 , 0.138195446 ), ( 73 , 5.201780101 , 0.130210546 ), ( 73 , 5.169193973 , 0.190459928 ), ( 73 , 5.002813942 , 0.120260857 ), ( 73 , 5.007577315 , 0.12188249 ), ( 73 , 5.036005172 , 0.135508917 ), ( 73 , 5.002045072 , 0.124894071 ), ( 73 , 5.077361084 , 0.151144902 ), ( 73 , 5.034808243 , 0.157658275 ), ( 73 , 5.039500811 , 0.181677994 ), ( 73 , 5.021437807 , 0.180566094 ), ( 73 , 5.032673247 , 0.19800313 ), ( 73 , 5.125338798 , 0.191160764 ), ( 73 , 5.080909472 , 0.21437744 ), ( 73 , 5.106709861 , 0.291664388 ), ( 73 , 5.132946841 , 0.277380315 ), ( 73 , 5.106925897 , 0.308841393 ), ( 73 , 4.314276262 , -0.313897756 ), ( 73 , 4.306722492 , -0.310126846 ), ( 73 , 4.31212942 , -0.282957954 ), ( 73 , 4.317200205 , -0.236847043 ), ( 73 , 4.228212928 , -0.168388137 ), ( 73 , 4.163616002 , -0.193561378 ), ( 73 , 4.401970703 , -0.07882338 ), ( 73 , 4.262111242 , -0.095938872 ), ( 73 , 4.266272113 , -0.070461162 ), ( 73 , 4.296374898 , -0.043427058 ), ( 73 , 4.67753534 , 0.019186298 ), ( 73 , 4.35085738 , 0.004448618 ), ( 73 , 4.24632252 , -0.009062761 ), ( 73 , 4.19799615 , -0.014333127 ), ( 73 , 4.110353669 , 0.007975301 ), ( 73 , 3.977534143 , -0.039447223 ), ( 73 , 4.027447054 , 0.008104439 ), ( 73 , 4.176782076 , 0.059435601 ), ( 73 , 4.182151133 , 0.082989474 ), ( 73 , 4.113999626 , 0.120146325 ), ( 73 , 4.349623275 , 0.124043735 ), ( 73 , 4.303139647 , 0.148567003 ), ( 73 , 4.481760543 , 0.157235007 ), ( 73 , 4.449706251 , 0.190512494 ), ( 73 , 4.41710893 , 0.196204519 ), ( 73 , 4.34340586 , 0.298464517 ), ( 73 , 4.703894019 , 0.047471694 ), ( 73 , 4.787609326 , 0.100417039 ), ( 73 , 4.754790008 , 0.108326166 ), ( 73 , 4.695021566 , 0.090083598 ), ( 73 , 4.652096681 , 0.09875339 ), ( 73 , 4.709995405 , 0.112030037 ), ( 73 , 4.744172964 , 0.116955328 ), ( 73 , 4.811950606 , 0.125781225 ), ( 73 , 4.809681383 , 0.131747215 ), ( 73 , 4.885443501 , 0.152415246 ), ( 73 , 4.89027664 , 0.153471666 ), ( 73 , 4.715588251 , 0.166926722 ), ( 73 , 4.846144394 , 0.220107728 ), ( 73 , 4.624822769 , 0.136153349 ), ( 73 , 4.66003884 , 0.17072875 ), ( 73 , 4.548587441 , 0.177956545 ), ( 73 , 4.583109562 , 0.187930041 ), ( 73 , 4.603461043 , 0.22929756 ), ( 73 , 4.610097376 , 0.231411467 ), ( 73 , 4.707071603 , 0.259052554 ), ( 73 , 4.962012801 , 0.23339461 ), ( 73 , 4.961941337 , 0.25888584 ), ( 73 , 4.919595213 , 0.270748186 ), ( 73 , 4.989770707 , 0.301601172 ), ( 73 , 4.901066789 , 0.339754663 ), ( 73 , 4.726975084 , 0.341313805 ), ( 73 , 4.816140396 , 0.413351595 ), ( 73 , 4.940367674 , 0.454245016 ), ( 73 , 4.512439175 , 0.210128147 ), ( 73 , 4.591963521 , 0.251038845 ), ( 73 , 4.540492286 , 0.264577923 ), ( 73 , 4.490004888 , 0.261117286 ), ( 73 , 4.477931078 , 0.265798404 ), ( 73 , 4.529011727 , 0.298880203 ), ( 73 , 4.595254498 , 0.292677718 ), ( 73 , 4.425140305 , 0.272679206 ), ( 73 , 4.434735754 , 0.284230365 ), ( 73 , 4.455152056 , 0.289610213 ), ( 73 , 4.461607765 , 0.33834963 ), ( 73 , 4.378604538 , 0.361560641 ), ( 73 , 4.455480265 , 0.375190559 ), ( 73 , 4.546654451 , 0.369224987 ), ( 73 , 4.737818252 , 0.374298476 ), ( 73 , 4.718882546 , 0.42324118 ), ( 73 , 4.743201109 , 0.40847053 ), ( 73 , 4.760642246 , 0.465495071 ), ( 73 , 4.745121124 , 0.46102853 ), ( 73 , 4.732688481 , 0.473249046 ), ( 73 , 4.814849451 , 0.48011442 ), ( 73 , 4.82955081 , 0.540503292 ), ( 73 , 4.73413153 , 0.507557707 ), ( 73 , 4.787024235 , 0.585308078 ), ( 73 , 4.62191771 , 0.5280153 ), ( 73 , 4.567379602 , 0.544863625 ), ( 73 , 4.664275856 , 0.646842714 ), ( 73 , 4.680563416 , 0.67754741 ), ( 73 , 1.405656853 , -1.414394783 ), ( 73 , 0.868125279 , -1.291314841 ), ( 73 , 1.419413279 , -1.321119118 ), ( 73 , 1.250634197 , -1.196348553 ), ( 73 , 0.875202294 , -1.148170259 ), ( 73 , 1.091372218 , -1.075113929 ), ( 73 , 0.31497212 , -1.289917733 ), ( 73 , 0.305555429 , -1.273339446 ), ( 73 , 0.57560573 , -1.238326471 ), ( 73 , 0.505603249 , -1.193664033 ), ( 73 , 0.713178746 , -1.164388246 ), ( 73 , 0.646309199 , -1.1442925 ), ( 73 , 0.071587723 , -1.228577016 ), ( 73 , 0.023792547 , -1.186120696 ), ( 73 , 0.094069027 , -1.157235755 ), ( 73 , 0.503222872 , -1.052653833 ), ( 73 , 0.759330286 , -1.132707581 ), ( 73 , 0.81961359 , -1.079575187 ), ( 73 , 0.818868359 , -1.077132622 ), ( 73 , 0.958663033 , -0.923566756 ), ( 73 , 0.705166937 , -0.982573888 ), ( 73 , 0.551854655 , -0.961376136 ), ( 73 , 0.593613017 , -0.923081449 ), ( 73 , 0.750371216 , -0.870405636 ), ( 73 , 1.548738633 , -1.040361765 ), ( 73 , 1.459153204 , -0.918544711 ), ( 73 , 1.3677601 , -0.969872274 ), ( 73 , 1.418881376 , -0.948020689 ), ( 73 , 1.38634834 , -0.95071896 ), ( 73 , 1.21694131 , -1.02940251 ), ( 73 , 1.099472582 , -0.932218828 ), ( 73 , 1.130629916 , -0.830211456 ), ( 73 , 1.180245329 , -0.757655702 ), ( 73 , 1.180038429 , -0.754201861 ), ( 73 , 1.508948892 , -0.820421452 ), ( 73 , 1.454940126 , -0.86182132 ), ( 73 , 1.396300174 , -0.821157031 ), ( 73 , 1.505697905 , -0.729229576 ), ( 73 , 1.507110537 , -0.686128139 ), ( 73 , 1.261770342 , -0.739753702 ), ( 73 , 1.267427491 , -0.672983688 ), ( 73 , 1.098316202 , -0.821795339 ), ( 73 , 1.113485995 , -0.668364057 ), ( 73 , 0.838825462 , -0.705272305 ), ( 73 , 0.852792606 , -0.693977061 ), ( 73 , 0.947177544 , -0.633417865 ), ( 73 , 0.954275303 , -0.614427968 ), ( 73 , 0.916147942 , -0.623933662 ), ( 73 , 1.167371946 , -0.706372833 ), ( 73 , 1.206144596 , -0.660199065 ), ( 73 , 1.152855873 , -0.699049994 ), ( 73 , 1.199556685 , -0.62092062 ), ( 73 , 1.179728648 , -0.531347737 ), ( 73 , 1.318268589 , -0.547147343 ), ( 73 , 1.006086118 , -0.535643249 ), ( 73 , 0.9905372 , -0.524569058 ), ( 73 , 1.170429741 , -0.397374955 ), ( 73 , 1.169031239 , -0.375322402 ), ( 73 , 0.098496033 , -1.065258029 ), ( 73 , 0.35113686 , -1.000735064 ), ( 73 , 0.302705487 , -0.987773722 ), ( 73 , 0.394118808 , -0.916187335 ), ( 73 , 0.432568109 , -0.851290064 ), ( 73 , 0.436798829 , -0.851044002 ), ( 73 , 0.060607493 , -0.994826529 ), ( 73 , 0.14615202 , -0.965660419 ), ( 73 , 0.536580587 , -0.925652563 ), ( 73 , 0.664319053 , -0.80060725 ), ( 73 , 0.469632694 , -0.807341693 ), ( 73 , 0.48625989 , -0.793621421 ), ( 73 , 0.516919165 , -0.7185566 ), ( 73 , 0.472802649 , -0.724207078 ), ( 73 , 0.579746972 , -0.602813966 ), ( 73 , 0.582542386 , -0.581808383 ), ( 73 , 0.562641045 , -0.554063244 ), ( 73 , 0.276244552 , -0.715953739 ), ( 73 , 0.28520291 , -0.702845946 ), ( 73 , 0.005596397 , -0.724096482 ), ( 73 , 0.091166565 , -0.684869497 ), ( 73 , 0.114415473 , -0.69202114 ), ( 73 , 0.099765962 , -0.65281345 ), ( 73 , 0.224138239 , -0.672458664 ), ( 73 , 0.185990343 , -0.628703911 ), ( 73 , 0.356276249 , -0.580013066 ), ( 73 , 0.485422389 , -0.539346744 ), ( 73 , 0.414604106 , -0.522025312 ), ( 73 , 0.410549392 , -0.502367298 ), ( 73 , 0.401981191 , -0.412754673 ), ( 73 , 0.379844126 , -0.357643909 ), ( 73 , 0.767273245 , -0.674579459 ), ( 73 , 0.823390452 , -0.618434376 ), ( 73 , 0.71653432 , -0.6336849 ), ( 73 , 0.947501189 , -0.520636156 ), ( 73 , 0.840487669 , -0.543305179 ), ( 73 , 0.820104721 , -0.529076372 ), ( 73 , 0.685423763 , -0.506029626 ), ( 73 , 0.752802402 , -0.487952332 ), ( 73 , 0.97723148 , -0.49966715 ), ( 73 , 1.034974838 , -0.429901781 ), ( 73 , 0.891303407 , -0.424127517 ), ( 73 , 1.138142019 , -0.337469463 ), ( 73 , 1.116054341 , -0.325334461 ), ( 73 , 1.062963673 , -0.351840093 ), ( 73 , 1.047219217 , -0.335921984 ), ( 73 , 1.097055969 , -0.278700597 ), ( 73 , 0.977085479 , -0.333529044 ), ( 73 , 0.950146951 , -0.270266537 ), ( 73 , 0.959453173 , -0.191061106 ), ( 73 , 0.57027354 , -0.492519405 ), ( 73 , 0.559143529 , -0.481209847 ), ( 73 , 0.526682395 , -0.426252273 ), ( 73 , 0.602414033 , -0.41238845 ), ( 73 , 0.720021166 , -0.386890739 ), ( 73 , 0.726226457 , -0.37804957 ), ( 73 , 0.680636899 , -0.373563623 ), ( 73 , 0.564111342 , -0.341566967 ), ( 73 , 0.540606583 , -0.305672377 ), ( 73 , 0.785063596 , -0.238820375 ), ( 73 , 0.644204112 , -0.120933272 ), ( 73 , 0.757375336 , -0.135275647 ), ( 73 , 1.687670766 , -1.548867646 ), ( 73 , 2.240976013 , -1.399033038 ), ( 73 , 2.706284176 , -1.425029719 ), ( 73 , 2.766103201 , -1.405275408 ), ( 73 , 1.605772938 , -1.431928691 ), ( 73 , 2.129958782 , -1.373487585 ), ( 73 , 2.342801384 , -1.290178222 ), ( 73 , 2.203514598 , -1.307459467 ), ( 73 , 2.34372646 , -1.239477719 ), ( 73 , 2.90951852 , -1.236221624 ), ( 73 , 2.707254959 , -1.258907426 ), ( 73 , 2.676744993 , -1.250855318 ), ( 73 , 2.956621808 , -1.188881193 ), ( 73 , 2.916604186 , -1.141941875 ), ( 73 , 2.553650588 , -1.166031909 ), ( 73 , 2.70551473 , -1.172300445 ), ( 73 , 2.655938315 , -1.143383813 ), ( 73 , 2.40833918 , -1.181964775 ), ( 73 , 2.418925582 , -1.13540454 ), ( 73 , 2.512823377 , -1.126666842 ), ( 73 , 2.710904926 , -1.137877038 ), ( 73 , 2.761805548 , -1.049176514 ), ( 73 , 2.721423893 , -1.033336775 ), ( 73 , 2.643026383 , -1.067657066 ), ( 73 , 2.010549443 , -1.25249774 ), ( 73 , 1.950796018 , -1.197553643 ), ( 73 , 2.196593015 , -1.226069513 ), ( 73 , 2.183081423 , -1.205349183 ), ( 73 , 2.133422655 , -1.204128639 ), ( 73 , 2.22405004 , -1.171808377 ), ( 73 , 1.890470657 , -1.132254581 ), ( 73 , 1.584465508 , -1.174782164 ), ( 73 , 1.913956067 , -1.106304992 ), ( 73 , 2.056122407 , -1.098331875 ), ( 73 , 2.132533288 , -1.058118695 ), ( 73 , 2.145353152 , -1.048513251 ), ( 73 , 1.933390925 , -1.086840698 ), ( 73 , 2.018464992 , -1.034916132 ), ( 73 , 1.895290108 , -1.065866618 ), ( 73 , 2.054893381 , -1.041021599 ), ( 73 , 2.103618679 , -0.970475353 ), ( 73 , 2.386100896 , -1.051761216 ), ( 73 , 2.318890802 , -1.070966943 ), ( 73 , 2.50144328 , -1.011652073 ), ( 73 , 2.498226047 , -1.003939928 ), ( 73 , 2.552091711 , -1.004778088 ), ( 73 , 2.476271737 , -1.013941957 ), ( 73 , 2.469565203 , -0.978942509 ), ( 73 , 2.469469521 , -0.939676311 ), ( 73 , 2.446672549 , -0.929477568 ), ( 73 , 2.394013328 , -0.948942265 ), ( 73 , 2.236606366 , -0.962085682 ), ( 73 , 2.272451986 , -0.921564836 ), ( 73 , 2.171838706 , -0.973459917 ), ( 73 , 2.370037437 , -0.867366734 ), ( 73 , 2.362852764 , -0.865322331 ), ( 73 , 2.439079666 , -0.837171692 ), ( 73 , 2.285744601 , -0.884108749 ), ( 73 , 2.283228097 , -0.834382007 ), ( 73 , 2.25458171 , -0.837728834 ), ( 73 , 2.345161314 , -0.772576202 ), ( 73 , 2.3675087 , -0.745386905 ), ( 73 , 3.112521217 , -1.141522273 ), ( 73 , 3.064950519 , -1.10204224 ), ( 73 , 3.046318767 , -1.102992765 ), ( 73 , 3.056998027 , -1.092028861 ), ( 73 , 3.050674404 , -1.089475306 ), ( 73 , 3.054826373 , -1.06789324 ), ( 73 , 3.04101058 , -1.067840812 ), ( 73 , 3.043989209 , -1.064356544 ), ( 73 , 2.955981654 , -1.031579265 ), ( 73 , 2.967091859 , -1.033026336 ), ( 73 , 2.914504633 , -1.017363283 ), ( 73 , 2.880950641 , -1.004618712 ), ( 73 , 2.871418274 , -0.97361091 ), ( 73 , 3.134402495 , -1.042925562 ), ( 73 , 3.090026003 , -1.01615711 ), ( 73 , 2.907386204 , -0.880476215 ), ( 73 , 2.809793788 , -1.039301511 ), ( 73 , 2.817550397 , -1.036861787 ), ( 73 , 2.75914996 , -1.02181774 ), ( 73 , 2.730441298 , -0.959727007 ), ( 73 , 2.670259801 , -0.95967016 ), ( 73 , 2.757019103 , -0.911619071 ), ( 73 , 2.681135285 , -0.904330728 ), ( 73 , 2.718854193 , -0.881860567 ), ( 73 , 2.810493567 , -0.853407794 ), ( 73 , 2.901483309 , -0.84119821 ), ( 73 , 2.837408464 , -0.857172557 ), ( 73 , 2.738816728 , -0.773919096 ), ( 73 , 2.78110809 , -0.759624239 ), ( 73 , 2.754222349 , -0.73704213 ), ( 73 , 3.139281148 , -0.857660328 ), ( 73 , 3.049068166 , -0.835162819 ), ( 73 , 2.95976685 , -0.851499159 ), ( 73 , 2.941263316 , -0.848238957 ), ( 73 , 2.951587559 , -0.800747536 ), ( 73 , 2.991921369 , -0.800765223 ), ( 73 , 3.095611383 , -0.804030124 ), ( 73 , 2.999734647 , -0.695977129 ), ( 73 , 2.927066631 , -0.795597421 ), ( 73 , 2.898988099 , -0.744864545 ), ( 73 , 2.779291066 , -0.721539365 ), ( 73 , 2.977343187 , -0.682509466 ), ( 73 , 2.637467543 , -0.904051745 ), ( 73 , 2.602116781 , -0.83346203 ), ( 73 , 2.529695198 , -0.875072874 ), ( 73 , 2.669981325 , -0.780654697 ), ( 73 , 2.708774992 , -0.748265421 ), ( 73 , 2.705635213 , -0.692938953 ), ( 73 , 2.6259086 , -0.741511082 ), ( 73 , 2.48640767 , -0.767226809 ), ( 73 , 2.477377181 , -0.743131099 ), ( 73 , 2.430073196 , -0.700163193 ), ( 73 , 2.42537553 , -0.656753537 ), ( 73 , 2.567671808 , -0.656873997 ), ( 73 , 2.594172825 , -0.609239719 ), ( 73 , 2.508706581 , -0.599824702 ), ( 73 , 2.825495118 , -0.551580397 ), ( 73 , 2.861696188 , -0.554775325 ), ( 73 , 2.86003446 , -0.470872043 ), ( 73 , 2.654570318 , -0.611103628 ), ( 73 , 2.674019225 , -0.567504436 ), ( 73 , 2.788870664 , -0.451198508 ), ( 73 , 2.720522958 , -0.454763405 ), ( 73 , 2.72460051 , -0.446204221 ), ( 73 , 2.723674606 , -0.429456183 ), ( 73 , 1.571354794 , -1.122417799 ), ( 73 , 1.729865996 , -1.004241695 ), ( 73 , 1.821570902 , -0.971584423 ), ( 73 , 1.964799639 , -0.998508135 ), ( 73 , 2.063188887 , -0.924527163 ), ( 73 , 1.934571181 , -0.933891329 ), ( 73 , 1.726026357 , -0.877830329 ), ( 73 , 1.85207586 , -0.879160528 ), ( 73 , 2.011570545 , -0.834811074 ), ( 73 , 1.989157762 , -0.823021368 ), ( 73 , 1.823645461 , -0.857769432 ), ( 73 , 1.916872859 , -0.806958914 ), ( 73 , 1.915188774 , -0.790572621 ), ( 73 , 2.131361983 , -0.918335932 ), ( 73 , 2.145263019 , -0.873852105 ), ( 73 , 2.090776303 , -0.898249675 ), ( 73 , 2.211160931 , -0.854447258 ), ( 73 , 2.081245535 , -0.85983483 ), ( 73 , 2.094798742 , -0.853559215 ), ( 73 , 2.111559933 , -0.834542081 ), ( 73 , 2.036495909 , -0.83971246 ), ( 73 , 2.090186986 , -0.822762317 ), ( 73 , 2.095474416 , -0.799235053 ), ( 73 , 2.193125595 , -0.783053242 ), ( 73 , 2.249036061 , -0.830278937 ), ( 73 , 2.243339234 , -0.777453215 ), ( 73 , 2.306074347 , -0.740030278 ), ( 73 , 2.307804645 , -0.680154188 ), ( 73 , 2.210783985 , -0.742188108 ), ( 73 , 2.17684072 , -0.742231526 ), ( 73 , 2.258722324 , -0.705730418 ), ( 73 , 2.265257272 , -0.705448402 ), ( 73 , 2.265938962 , -0.694632628 ), ( 73 , 2.24354611 , -0.693399771 ), ( 73 , 2.234676954 , -0.697308798 ), ( 73 , 2.230088094 , -0.68174171 ), ( 73 , 2.071875975 , -0.79698835 ), ( 73 , 2.081840825 , -0.758938182 ), ( 73 , 2.114043777 , -0.746280207 ), ( 73 , 2.011305657 , -0.753713743 ), ( 73 , 2.013083649 , -0.71846052 ), ( 73 , 1.993878703 , -0.701485094 ), ( 73 , 2.090589657 , -0.664108684 ), ( 73 , 2.045601098 , -0.666792066 ), ( 73 , 2.188039277 , -0.692962893 ), ( 73 , 2.142206088 , -0.682041384 ), ( 73 , 2.16188501 , -0.652264433 ), ( 73 , 2.199174754 , -0.640815949 ), ( 73 , 2.092257364 , -0.651048589 ), ( 73 , 2.129326592 , -0.61454979 ), ( 73 , 1.58303135 , -0.935194417 ), ( 73 , 1.785584471 , -0.815234312 ), ( 73 , 1.600113745 , -0.859076469 ), ( 73 , 1.744368611 , -0.757522306 ), ( 73 , 1.828229331 , -0.820712769 ), ( 73 , 1.821787233 , -0.764254468 ), ( 73 , 1.888805015 , -0.765941252 ), ( 73 , 1.783370411 , -0.764478815 ), ( 73 , 1.831932341 , -0.715606551 ), ( 73 , 1.83736812 , -0.712004849 ), ( 73 , 1.908641659 , -0.681109866 ), ( 73 , 1.643881485 , -0.761730347 ), ( 73 , 1.683246881 , -0.715159781 ), ( 73 , 1.715645652 , -0.660116644 ), ( 73 , 1.684066973 , -0.616752403 ), ( 73 , 1.936666721 , -0.690066243 ), ( 73 , 1.916120834 , -0.663884138 ), ( 73 , 1.898905424 , -0.632255738 ), ( 73 , 2.074572984 , -0.529746377 ), ( 73 , 2.099616306 , -0.508955958 ), ( 73 , 1.999211542 , -0.548963438 ), ( 73 , 2.017756152 , -0.483977695 ), ( 73 , 2.105841223 , -0.48073909 ), ( 73 , 2.068119854 , -0.459873116 ), ( 73 , 1.824472671 , -0.536634216 ), ( 73 , 1.832797979 , -0.524969743 ), ( 73 , 1.828582513 , -0.505482382 ), ( 73 , 1.841090165 , -0.465863447 ), ( 73 , 1.990284916 , -0.480032209 ), ( 73 , 1.916219085 , -0.446208611 ), ( 73 , 1.930304815 , -0.434654543 ), ( 73 , 1.896166179 , -0.441610162 ), ( 73 , 1.889500909 , -0.422803577 ), ( 73 , 2.00893966 , -0.384770218 ), ( 73 , 2.391625435 , -0.652033851 ), ( 73 , 2.44326345 , -0.619550951 ), ( 73 , 2.420651383 , -0.62765394 ), ( 73 , 2.29425937 , -0.641285386 ), ( 73 , 2.312225854 , -0.639068552 ), ( 73 , 2.472198892 , -0.591625255 ), ( 73 , 2.446680588 , -0.554319983 ), ( 73 , 2.488677685 , -0.550647139 ), ( 73 , 2.519737413 , -0.520150661 ), ( 73 , 2.486963879 , -0.492933003 ), ( 73 , 2.407869737 , -0.49418113 ), ( 73 , 2.445375757 , -0.50836131 ), ( 73 , 2.268209269 , -0.593585363 ), ( 73 , 2.278568108 , -0.56254243 ), ( 73 , 2.228839505 , -0.543398597 ), ( 73 , 2.197801489 , -0.530440426 ), ( 73 , 2.183023986 , -0.515591664 ), ( 73 , 2.410408118 , -0.446818706 ), ( 73 , 2.346051842 , -0.433562624 ), ( 73 , 2.650876278 , -0.39251773 ), ( 73 , 2.569056445 , -0.337090102 ), ( 73 , 2.658393718 , -0.316587312 ), ( 73 , 2.469339612 , -0.362364418 ), ( 73 , 2.458749404 , -0.29088044 ), ( 73 , 2.182012311 , -0.409486532 ), ( 73 , 2.111940185 , -0.470768181 ), ( 73 , 2.152312506 , -0.423987455 ), ( 73 , 2.188230433 , -0.362931849 ), ( 73 , 2.233951489 , -0.320989084 ), ( 73 , 2.036655371 , -0.36357405 ), ( 73 , 2.095137577 , -0.295895084 ), ( 73 , 2.227128529 , -0.235068567 ), ( 73 , 2.162283638 , -0.237788481 ), ( 73 , 2.335440044 , -0.318640152 ), ( 73 , 2.342348704 , -0.304270089 ), ( 73 , 2.334192151 , -0.275391856 ), ( 73 , 2.443099609 , -0.232231661 ), ( 73 , 2.432490539 , -0.208780866 ), ( 73 , 2.394676344 , -0.187767106 ), ( 73 , 2.377810018 , -0.176655506 ), ( 73 , 2.421139293 , -0.152855768 ), ( 73 , 2.479333557 , -0.134753467 ), ( 73 , 2.35951363 , -0.160422344 ), ( 73 , 2.286673015 , -0.073341739 ), ( 73 , 2.391212765 , -0.04322088 ), ( 73 , 2.336035063 , -0.054943713 ), ( 73 , 3.470131573 , -1.528241164 ), ( 73 , 3.5777891 , -1.464474837 ), ( 73 , 4.702555184 , -1.452747132 ), ( 73 , 4.640122204 , -1.373449507 ), ( 73 , 3.35773467 , -1.408521858 ), ( 73 , 3.80409597 , -1.331232329 ), ( 73 , 4.085012464 , -1.27128681 ), ( 73 , 4.035213549 , -1.244828875 ), ( 73 , 3.81790287 , -1.212187791 ), ( 73 , 4.618123987 , -1.307454037 ), ( 73 , 4.461273158 , -1.26727177 ), ( 73 , 4.635798573 , -1.280949386 ), ( 73 , 4.293826999 , -1.224272516 ), ( 73 , 4.60813075 , -1.167016664 ), ( 73 , 4.34017914 , -1.152164252 ), ( 73 , 4.057273277 , -1.177837143 ), ( 73 , 3.96409694 , -1.160224191 ), ( 73 , 4.375464058 , -1.088562795 ), ( 73 , 4.187043861 , -1.096328825 ), ( 73 , 4.250276976 , -1.012970335 ), ( 73 , 4.231142588 , -0.985113263 ), ( 73 , 3.364988824 , -1.215538341 ), ( 73 , 3.872343746 , -1.155044998 ), ( 73 , 3.743126657 , -1.10677382 ), ( 73 , 3.167035402 , -1.214279115 ), ( 73 , 3.168395718 , -1.206461192 ), ( 73 , 3.287681857 , -1.200053114 ), ( 73 , 3.355571962 , -1.144817112 ), ( 73 , 3.459367304 , -1.074166831 ), ( 73 , 3.673465689 , -1.051697698 ), ( 73 , 3.525670907 , -1.065742329 ), ( 73 , 3.527130263 , -1.039042434 ), ( 73 , 3.61574019 , -1.038396662 ), ( 73 , 3.670890748 , -0.99882887 ), ( 73 , 3.641790003 , -0.972819409 ), ( 73 , 3.948278945 , -1.105253529 ), ( 73 , 3.861473659 , -1.073756121 ), ( 73 , 3.8900414 , -1.06342934 ), ( 73 , 3.946611863 , -1.007028593 ), ( 73 , 3.946173467 , -0.993389392 ), ( 73 , 3.878901585 , -1.014373174 ), ( 73 , 4.129078845 , -1.009018211 ), ( 73 , 4.117547398 , -1.00272771 ), ( 73 , 4.015192269 , -1.001789251 ), ( 73 , 4.163676595 , -0.935201087 ), ( 73 , 4.008876844 , -0.948835953 ), ( 73 , 3.975646139 , -0.916931297 ), ( 73 , 3.818546696 , -0.987205233 ), ( 73 , 3.737325222 , -1.000031757 ), ( 73 , 3.748750241 , -0.975330343 ), ( 73 , 3.753479907 , -0.973738705 ), ( 73 , 3.806925603 , -0.907060741 ), ( 73 , 3.990073747 , -0.820970582 ), ( 73 , 3.893209194 , -0.784133981 ), ( 73 , 4.659010142 , -1.10938575 ), ( 73 , 4.615996858 , -1.037301806 ), ( 73 , 4.450216217 , -1.035509823 ), ( 73 , 4.599809662 , -0.958147719 ), ( 73 , 4.689433773 , -0.975612956 ), ( 73 , 4.535715728 , -0.961967536 ), ( 73 , 4.570840257 , -0.928908058 ), ( 73 , 4.354514819 , -1.023302372 ), ( 73 , 4.362210961 , -0.994742212 ), ( 73 , 4.273240686 , -0.95145353 ), ( 73 , 4.271887946 , -0.862304157 ), ( 73 , 4.463132902 , -0.875466315 ), ( 73 , 4.415169481 , -0.857222661 ), ( 73 , 4.384625624 , -0.831561812 ), ( 73 , 4.310896188 , -0.807233448 ), ( 73 , 4.368093443 , -0.83332734 ), ( 73 , 4.314591035 , -0.78212799 ), ( 73 , 4.671277199 , -0.863862371 ), ( 73 , 4.541534534 , -0.79274792 ), ( 73 , 4.711129166 , -0.833613054 ), ( 73 , 4.61906681 , -0.745850111 ), ( 73 , 4.615985355 , -0.742987696 ), ( 73 , 4.70360285 , -0.732052052 ), ( 73 , 4.655051849 , -0.704961266 ), ( 73 , 4.596692195 , -0.740014606 ), ( 73 , 4.58894975 , -0.716276386 ), ( 73 , 4.546388714 , -0.736209 ), ( 73 , 4.62117195 , -0.659322989 ), ( 73 , 4.462809071 , -0.78285183 ), ( 73 , 4.422127346 , -0.735157405 ), ( 73 , 4.455393224 , -0.734292043 ), ( 73 , 4.406663494 , -0.752372975 ), ( 73 , 4.424794825 , -0.716972326 ), ( 73 , 4.458114123 , -0.58235493 ), ( 73 , 4.114039768 , -0.772080237 ), ( 73 , 4.185215403 , -0.676295002 ), ( 73 , 4.190412211 , -0.680573699 ), ( 73 , 4.048574406 , -0.709644411 ), ( 73 , 4.006770873 , -0.722940107 ), ( 73 , 3.941598298 , -0.720324357 ), ( 73 , 4.050132167 , -0.65203322 ), ( 73 , 4.132512659 , -0.619909745 ), ( 73 , 4.350423523 , -0.675030016 ), ( 73 , 4.289969248 , -0.609561311 ), ( 73 , 4.232468122 , -0.622089059 ), ( 73 , 4.403987629 , -0.593714318 ), ( 73 , 4.430805183 , -0.567294699 ), ( 73 , 4.459047143 , -0.487628673 ), ( 73 , 4.386519854 , -0.537677577 ), ( 73 , 4.273996945 , -0.539335802 ), ( 73 , 4.15918616 , -0.537198831 ), ( 73 , 4.187309282 , -0.52505465 ), ( 73 , 4.186432456 , -0.471524418 ), ( 73 , 4.399234099 , -0.428072415 ), ( 73 , 4.300423506 , -0.408500745 ), ( 73 , 3.192812119 , -1.133575919 ), ( 73 , 3.159335158 , -1.12641641 ), ( 73 , 3.165714133 , -1.121785817 ), ( 73 , 3.349277597 , -1.048611124 ), ( 73 , 3.152088016 , -1.08931964 ), ( 73 , 3.197739798 , -1.041181582 ), ( 73 , 3.271406751 , -1.030163748 ), ( 73 , 3.362552088 , -1.015188956 ), ( 73 , 3.419160823 , -0.988646763 ), ( 73 , 3.633847293 , -0.952601064 ), ( 73 , 3.656196132 , -0.937317023 ), ( 73 , 3.576881726 , -0.945065421 ), ( 73 , 3.438368662 , -0.984101043 ), ( 73 , 3.510729901 , -0.940983685 ), ( 73 , 3.432316875 , -0.95130811 ), ( 73 , 3.611414467 , -0.874849449 ), ( 73 , 3.568909986 , -0.883158462 ), ( 73 , 3.167886048 , -0.946973776 ), ( 73 , 3.45519115 , -0.921748506 ), ( 73 , 3.485068618 , -0.870540761 ), ( 73 , 3.544881343 , -0.82505616 ), ( 73 , 3.404627295 , -0.848295225 ), ( 73 , 3.680525257 , -0.90860856 ), ( 73 , 3.727072963 , -0.892947312 ), ( 73 , 3.658482918 , -0.845878654 ), ( 73 , 3.642031651 , -0.84010925 ), ( 73 , 3.655087183 , -0.82047359 ), ( 73 , 3.801771975 , -0.821565416 ), ( 73 , 3.848628139 , -0.8080523 ), ( 73 , 3.914798014 , -0.735440543 ), ( 73 , 3.904774181 , -0.72196251 ), ( 73 , 3.589821011 , -0.753735951 ), ( 73 , 3.647627084 , -0.687829349 ), ( 73 , 3.780625648 , -0.580325465 ), ( 73 , 3.683158735 , -0.650382063 ), ( 73 , 3.685363299 , -0.622130488 ), ( 73 , 3.699180449 , -0.609983677 ), ( 73 , 3.290579077 , -0.873716956 ), ( 73 , 3.174512198 , -0.795541296 ), ( 73 , 3.173800242 , -0.754794071 ), ( 73 , 3.268727791 , -0.607978955 ), ( 73 , 3.499159697 , -0.678146073 ), ( 73 , 3.546671866 , -0.643216033 ), ( 73 , 3.601813939 , -0.6270192 ), ( 73 , 3.567322151 , -0.611720341 ), ( 73 , 3.644554871 , -0.560238349 ), ( 73 , 3.628693314 , -0.546638173 ), ( 73 , 3.570891658 , -0.520782687 ), ( 73 , 3.419816347 , -0.597780911 ), ( 73 , 3.422598483 , -0.495799345 ), ( 73 , 3.527755927 , -0.478052172 ), ( 73 , 3.496737896 , -0.397829569 ), ( 73 , 3.966422782 , -0.672552558 ), ( 73 , 3.904769042 , -0.635833054 ), ( 73 , 4.023616497 , -0.561816565 ), ( 73 , 3.950137456 , -0.523433241 ), ( 73 , 4.017264927 , -0.453636545 ), ( 73 , 3.856067421 , -0.523543151 ), ( 73 , 3.848245103 , -0.489839417 ), ( 73 , 3.946855327 , -0.493937527 ), ( 73 , 4.000294928 , -0.419052218 ), ( 73 , 3.953997556 , -0.407065206 ), ( 73 , 3.86592694 , -0.444100833 ), ( 73 , 4.115458272 , -0.443587512 ), ( 73 , 4.080875912 , -0.449148746 ), ( 73 , 4.198500981 , -0.395975467 ), ( 73 , 4.182271958 , -0.36466018 ), ( 73 , 3.969804725 , -0.358155153 ), ( 73 , 3.98954901 , -0.330798601 ), ( 73 , 4.113606487 , -0.279497524 ), ( 73 , 4.114701282 , -0.190862348 ), ( 73 , 3.844573811 , -0.394770507 ), ( 73 , 3.822826997 , -0.387067046 ), ( 73 , 3.881005337 , -0.347382637 ), ( 73 , 3.845929265 , -0.347811725 ), ( 73 , 3.799872876 , -0.361604435 ), ( 73 , 3.616984821 , -0.362125393 ), ( 73 , 3.676275432 , -0.345749808 ), ( 73 , 3.661101025 , -0.32503026 ), ( 73 , 3.696736763 , -0.282577819 ), ( 73 , 3.883820752 , -0.270978239 ), ( 73 , 3.887985066 , -0.262278545 ), ( 73 , 3.88598363 , -0.209759358 ), ( 73 , 4.000341313 , -0.227577117 ), ( 73 , 4.011480981 , -0.159642903 ), ( 73 , 3.920810255 , -0.152146809 ), ( 73 , 5.576451708 , -1.487043705 ), ( 73 , 5.714329496 , -1.43875086 ), ( 73 , 5.594709442 , -1.452290952 ), ( 73 , 5.527212101 , -1.408464605 ), ( 73 , 5.961984445 , -1.316364784 ), ( 73 , 5.031580897 , -1.358982763 ), ( 73 , 5.418272527 , -1.315063559 ), ( 73 , 6.19433307 , -1.269330347 ), ( 73 , 6.228183081 , -1.244546603 ), ( 73 , 6.23762204 , -1.15642333 ), ( 73 , 6.070169262 , -1.102874776 ), ( 73 , 6.020260784 , -1.095583291 ), ( 73 , 5.806126479 , -1.192572234 ), ( 73 , 5.632212233 , -1.085039093 ), ( 73 , 5.867207044 , -1.145310066 ), ( 73 , 5.725398548 , -1.083029097 ), ( 73 , 5.746261234 , -1.079424096 ), ( 73 , 5.1734007 , -1.232676076 ), ( 73 , 5.36119368 , -1.182604681 ), ( 73 , 5.023969326 , -1.149766645 ), ( 73 , 4.91690607 , -1.138819983 ), ( 73 , 5.152565608 , -1.016999212 ), ( 73 , 5.469101747 , -1.120452431 ), ( 73 , 5.672722567 , -1.002560399 ), ( 73 , 5.326043906 , -1.025025121 ), ( 73 , 5.515833673 , -0.837077595 ), ( 73 , 5.4321623 , -0.881181728 ), ( 73 , 5.432166304 , -0.881177711 ), ( 73 , 5.49763203 , -0.750761317 ), ( 73 , 6.214654915 , -1.122939239 ), ( 73 , 6.008736627 , -1.001846247 ), ( 73 , 6.250344859 , -1.021892367 ), ( 73 , 6.091518482 , -0.905338278 ), ( 73 , 5.95521189 , -0.991819349 ), ( 73 , 5.977826999 , -0.964018883 ), ( 73 , 5.969329919 , -0.899065304 ), ( 73 , 6.266265065 , -0.921328224 ), ( 73 , 6.195918131 , -0.826003791 ), ( 73 , 6.204448613 , -0.73773503 ), ( 73 , 6.107345541 , -0.717037474 ), ( 73 , 6.032100534 , -0.79070469 ), ( 73 , 6.018105014 , -0.788700002 ), ( 73 , 6.003664843 , -0.74267919 ), ( 73 , 6.023139209 , -0.71822975 ), ( 73 , 5.971222503 , -0.75828454 ), ( 73 , 5.955143013 , -0.711542716 ), ( 73 , 6.168760284 , -0.632923646 ), ( 73 , 6.173697427 , -0.612356191 ), ( 73 , 5.76661648 , -0.926718769 ), ( 73 , 5.744031615 , -0.89732803 ), ( 73 , 5.662367203 , -0.795639853 ), ( 73 , 5.797353851 , -0.75121841 ), ( 73 , 5.674452681 , -0.718794745 ), ( 73 , 5.681957709 , -0.567346362 ), ( 73 , 5.904822914 , -0.613289212 ), ( 73 , 5.933990886 , -0.613917773 ), ( 73 , 5.795905341 , -0.603123509 ), ( 73 , 5.836507672 , -0.554420391 ), ( 73 , 5.775521661 , -0.51219405 ), ( 73 , 5.757448403 , -0.507135216 ), ( 73 , 5.835043412 , -0.478052812 ), ( 73 , 5.757754618 , -0.482244717 ), ( 73 , 5.867685425 , -0.468797709 ), ( 73 , 5.880253726 , -0.461096207 ), ( 73 , 5.86549565 , -0.37693959 ), ( 73 , 4.988169142 , -0.994798466 ), ( 73 , 5.122975918 , -0.979135565 ), ( 73 , 4.731794499 , -1.032849087 ), ( 73 , 5.028302114 , -0.904180957 ), ( 73 , 5.003138435 , -0.897405702 ), ( 73 , 5.073155358 , -0.775924791 ), ( 73 , 5.327783137 , -0.872966962 ), ( 73 , 5.388313584 , -0.732813787 ), ( 73 , 5.340768995 , -0.72947126 ), ( 73 , 5.306883671 , -0.723938397 ), ( 73 , 5.331112437 , -0.711318667 ), ( 73 , 5.183077363 , -0.797929253 ), ( 73 , 5.181072821 , -0.75652443 ), ( 73 , 5.2521584 , -0.629361884 ), ( 73 , 5.323118081 , -0.569266138 ), ( 73 , 4.948677462 , -0.824900904 ), ( 73 , 4.939916469 , -0.777310296 ), ( 73 , 4.914430161 , -0.731608937 ), ( 73 , 4.73970842 , -0.811159961 ), ( 73 , 4.755186163 , -0.784449707 ), ( 73 , 4.81492309 , -0.738683348 ), ( 73 , 4.772092768 , -0.717804992 ), ( 73 , 4.783884068 , -0.706372374 ), ( 73 , 4.947085749 , -0.633346857 ), ( 73 , 4.933958929 , -0.598738801 ), ( 73 , 4.871328904 , -0.61867221 ), ( 73 , 4.889532959 , -0.590910079 ), ( 73 , 5.095152196 , -0.699842497 ), ( 73 , 5.103675966 , -0.53755404 ), ( 73 , 5.197464658 , -0.479476539 ), ( 73 , 5.029756773 , -0.590728507 ), ( 73 , 5.046984693 , -0.556499623 ), ( 73 , 5.044985799 , -0.531620782 ), ( 73 , 4.957363151 , -0.514463886 ), ( 73 , 5.116757736 , -0.489128731 ), ( 73 , 5.08489665 , -0.426071892 ), ( 73 , 5.114969084 , -0.375540552 ), ( 73 , 5.089645463 , -0.370814556 ), ( 73 , 5.510609978 , -0.682368483 ), ( 73 , 5.474299927 , -0.696925986 ), ( 73 , 5.520237429 , -0.649821821 ), ( 73 , 5.409976824 , -0.628910294 ), ( 73 , 5.605401633 , -0.61030083 ), ( 73 , 5.461324457 , -0.513872315 ), ( 73 , 5.378702556 , -0.499086286 ), ( 73 , 5.430552063 , -0.492266303 ), ( 73 , 5.392678541 , -0.467281579 ), ( 73 , 5.529988145 , -0.476331919 ), ( 73 , 5.53793709 , -0.412365098 ), ( 73 , 5.636785596 , -0.443536552 ), ( 73 , 5.872163214 , -0.353202815 ), ( 73 , 5.589648944 , -0.36340743 ), ( 73 , 5.680022846 , -0.345687799 ), ( 73 , 5.660772486 , -0.321871995 ), ( 73 , 5.737788383 , -0.266307832 ), ( 73 , 5.766344287 , -0.272481872 ), ( 73 , 5.752633039 , -0.2210325 ), ( 73 , 5.644708043 , -0.282773674 ), ( 73 , 5.678727987 , -0.259028228 ), ( 73 , 5.275642406 , -0.457703897 ), ( 73 , 5.343411375 , -0.450887304 ), ( 73 , 5.360296669 , -0.421740805 ), ( 73 , 5.258679187 , -0.467980829 ), ( 73 , 5.310639817 , -0.372069131 ), ( 73 , 5.369871855 , -0.36145471 ), ( 73 , 5.361910888 , -0.310917475 ), ( 73 , 5.406483623 , -0.289021748 ), ( 73 , 5.182174296 , -0.297953155 ), ( 73 , 5.238156216 , -0.277282799 ), ( 73 , 5.240813492 , -0.243321763 ), ( 73 , 5.518960967 , -0.299551358 ), ( 73 , 5.462944137 , -0.199659662 ), ( 73 , 5.471828148 , -0.190666001 ), ( 73 , 5.474978859 , -0.155047168 ), ( 73 , 5.32977662 , -0.177051081 ), ( 73 , 5.38183545 , -0.108548125 ), ( 73 , 5.427754085 , -0.097568456 ), ( 73 , 5.428892413 , -0.068337349 ), ( 74 , 0.791620158 , 0.020178996 ), ( 74 , 0.797026785 , 0.090549955 ), ( 74 , 0.760745956 , 0.134043063 ), ( 74 , 0.905532717 , 0.102453406 ), ( 74 , 0.872374191 , 0.151838914 ), ( 74 , 0.822126197 , 0.188419535 ), ( 74 , 0.680775695 , 0.240070157 ), ( 74 , 0.812825704 , 0.203596707 ), ( 74 , 0.839567572 , 0.288269513 ), ( 74 , 0.7892772 , 0.262334675 ), ( 74 , 1.075050566 , 0.251373841 ), ( 74 , 0.911828985 , 0.261741042 ), ( 74 , 1.155042927 , 0.330093324 ), ( 74 , 1.089643842 , 0.42014939 ), ( 74 , 0.871775662 , 0.332942326 ), ( 74 , 0.887156427 , 0.366004173 ), ( 74 , 1.003836433 , 0.394290882 ), ( 74 , 0.988097497 , 0.423324177 ), ( 74 , 0.947675884 , 0.453597407 ), ( 74 , 0.983753229 , 0.500357295 ), ( 74 , 0.962753255 , 0.502184883 ), ( 74 , 0.579061307 , 0.242922642 ), ( 74 , 0.551936364 , 0.234953093 ), ( 74 , 0.760493886 , 0.358940607 ), ( 74 , 0.692119692 , 0.34431149 ), ( 74 , 0.664117217 , 0.384092567 ), ( 74 , 0.571195833 , 0.415373357 ), ( 74 , 0.5597462 , 0.433178947 ), ( 74 , 0.542596595 , 0.452391135 ), ( 74 , 0.781797668 , 0.348885534 ), ( 74 , 0.78804423 , 0.398442433 ), ( 74 , 0.729788551 , 0.400729617 ), ( 74 , 0.920916988 , 0.484003435 ), ( 74 , 0.859839928 , 0.501937789 ), ( 74 , 0.634717193 , 0.565619925 ), ( 74 , 0.692745619 , 0.583271822 ), ( 74 , 0.836642504 , 0.655957384 ), ( 74 , 0.739343987 , 0.592300165 ), ( 74 , 1.183420937 , 0.407461115 ), ( 74 , 1.134777078 , 0.411872247 ), ( 74 , 1.101373569 , 0.411450801 ), ( 74 , 1.092051716 , 0.418540386 ), ( 74 , 1.110620138 , 0.458238002 ), ( 74 , 1.262144711 , 0.494815049 ), ( 74 , 1.258291816 , 0.519633915 ), ( 74 , 1.289390008 , 0.572186329 ), ( 74 , 1.113422292 , 0.521868967 ), ( 74 , 1.150115024 , 0.626625648 ), ( 74 , 1.397093223 , 0.640093051 ), ( 74 , 1.407552347 , 0.657569951 ), ( 74 , 1.334398257 , 0.62563069 ), ( 74 , 1.311416631 , 0.639268404 ), ( 74 , 1.396598084 , 0.694450763 ), ( 74 , 1.384077025 , 0.688770411 ), ( 74 , 1.483114364 , 0.662490541 ), ( 74 , 1.495706956 , 0.666680244 ), ( 74 , 1.497868128 , 0.717729221 ), ( 74 , 1.466869588 , 0.773642511 ), ( 74 , 1.568819679 , 0.812184451 ), ( 74 , 1.269235154 , 0.659049552 ), ( 74 , 1.301224881 , 0.69911189 ), ( 74 , 1.312006175 , 0.702188739 ), ( 74 , 1.321896122 , 0.742969651 ), ( 74 , 1.222109592 , 0.694436413 ), ( 74 , 1.228822098 , 0.735055356 ), ( 74 , 1.306178769 , 0.756135303 ), ( 74 , 1.272097361 , 0.760581196 ), ( 74 , 1.51550829 , 0.874204645 ), ( 74 , 1.005754661 , 0.594321822 ), ( 74 , 1.013670231 , 0.597288023 ), ( 74 , 0.927946855 , 0.622364773 ), ( 74 , 0.911141418 , 0.624938185 ), ( 74 , 0.994873334 , 0.707395702 ), ( 74 , 1.080266495 , 0.664499081 ), ( 74 , 1.065190001 , 0.689563029 ), ( 74 , 1.014693407 , 0.704512407 ), ( 74 , 1.035987178 , 0.756008433 ), ( 74 , 1.086074719 , 0.806823909 ), ( 74 , 0.921331562 , 0.683253318 ), ( 74 , 0.869699518 , 0.681638847 ), ( 74 , 0.845855642 , 0.765544626 ), ( 74 , 0.882275923 , 0.747380985 ), ( 74 , 0.879194385 , 0.792153457 ), ( 74 , 0.996478478 , 0.74841418 ), ( 74 , 1.053451745 , 0.828164571 ), ( 74 , 1.064362475 , 0.849310944 ), ( 74 , 0.952341551 , 0.830371645 ), ( 74 , 0.912494611 , 0.843041549 ), ( 74 , 0.934698057 , 0.848531775 ), ( 74 , 0.99339329 , 0.899344572 ), ( 74 , 1.326668933 , 0.83190697 ), ( 74 , 1.341159332 , 0.877998434 ), ( 74 , 1.370222981 , 0.897617825 ), ( 74 , 1.48661309 , 0.917520383 ), ( 74 , 1.336783887 , 0.94954992 ), ( 74 , 1.542155582 , 1.011647065 ), ( 74 , 1.138645241 , 0.877112337 ), ( 74 , 1.249390124 , 0.971363368 ), ( 74 , 1.109911036 , 0.951627595 ), ( 74 , 0.359588203 , 0.385483523 ), ( 74 , 0.395545848 , 0.452308231 ), ( 74 , 0.43301496 , 0.48443401 ), ( 74 , 0.381114612 , 0.519595132 ), ( 74 , 0.233860123 , 0.507545267 ), ( 74 , 0.257912926 , 0.566459651 ), ( 74 , 0.302050362 , 0.592389638 ), ( 74 , 0.456599817 , 0.64469168 ), ( 74 , 0.389273509 , 0.639273955 ), ( 74 , 0.385851206 , 0.64700273 ), ( 74 , 0.633411295 , 0.591085975 ), ( 74 , 0.673241734 , 0.613480128 ), ( 74 , 0.518252743 , 0.638837243 ), ( 74 , 0.5799685 , 0.70978484 ), ( 74 , 0.582457059 , 0.711921316 ), ( 74 , 0.682052495 , 0.701706173 ), ( 74 , 0.629522822 , 0.695139868 ), ( 74 , 0.685174371 , 0.73412639 ), ( 74 , 0.513619056 , 0.657458632 ), ( 74 , 0.437583624 , 0.69093387 ), ( 74 , 0.570167957 , 0.891065373 ), ( 74 , 0.202480496 , 0.540043272 ), ( 74 , 0.224325465 , 0.569962758 ), ( 74 , 0.218049872 , 0.610412531 ), ( 74 , 0.223425706 , 0.663956513 ), ( 74 , 0.194691937 , 0.709986938 ), ( 74 , 0.279576735 , 0.675242205 ), ( 74 , 0.294451521 , 0.720096556 ), ( 74 , 0.319014996 , 0.727000128 ), ( 74 , 0.342756042 , 0.755397275 ), ( 74 , 0.293900551 , 0.759627317 ), ( 74 , 0.297475164 , 0.781839389 ), ( 74 , 0.000653587 , 0.819257238 ), ( 74 , 0.216080337 , 0.811771383 ), ( 74 , 0.126317768 , 0.844978047 ), ( 74 , 0.158204063 , 0.847457192 ), ( 74 , 0.073574874 , 0.813569855 ), ( 74 , 0.344931093 , 0.797718619 ), ( 74 , 0.318086061 , 0.900623847 ), ( 74 , 0.273411825 , 0.922421718 ), ( 74 , 0.453280671 , 0.866668439 ), ( 74 , 0.469952987 , 0.942554665 ), ( 74 , 0.437247279 , 0.950256236 ), ( 74 , 0.433229022 , 0.952958576 ), ( 74 , 0.454799293 , 0.957948293 ), ( 74 , 0.351732917 , 0.959264011 ), ( 74 , 0.407334971 , 0.97420267 ), ( 74 , 0.099464956 , 0.95374227 ), ( 74 , 0.113909153 , 0.968498624 ), ( 74 , 0.214811064 , 0.996146031 ), ( 74 , 0.162632294 , 1.012573679 ), ( 74 , 0.120757053 , 1.021958641 ), ( 74 , 0.094716333 , 1.076720461 ), ( 74 , 0.005519082 , 1.053397756 ), ( 74 , 0.153538448 , 1.099372034 ), ( 74 , 0.026425227 , 1.111419469 ), ( 74 , 0.011525376 , 1.153669118 ), ( 74 , 0.807480567 , 0.918535977 ), ( 74 , 0.874291461 , 0.96930571 ), ( 74 , 0.663702439 , 0.8758215 ), ( 74 , 0.70305752 , 0.982097202 ), ( 74 , 0.662551964 , 1.004089013 ), ( 74 , 0.654393424 , 1.009161707 ), ( 74 , 0.596785431 , 0.995349807 ), ( 74 , 0.640368173 , 1.00669146 ), ( 74 , 0.785707118 , 0.963209847 ), ( 74 , 0.835702437 , 1.058279972 ), ( 74 , 0.802013258 , 1.052649187 ), ( 74 , 0.746708095 , 1.054488461 ), ( 74 , 0.708642378 , 1.088360675 ), ( 74 , 0.698221194 , 1.092608294 ), ( 74 , 0.81019962 , 1.137195744 ), ( 74 , 1.078653642 , 0.99023695 ), ( 74 , 1.128345492 , 1.055814859 ), ( 74 , 1.059934543 , 1.089457365 ), ( 74 , 1.412301912 , 1.119172839 ), ( 74 , 1.363050469 , 1.181221198 ), ( 74 , 1.282134153 , 1.190635455 ), ( 74 , 0.925649159 , 1.086781406 ), ( 74 , 0.902706425 , 1.15559518 ), ( 74 , 1.21035092 , 1.191752885 ), ( 74 , 1.385475662 , 1.300891502 ), ( 74 , 0.609519039 , 1.047424353 ), ( 74 , 0.326228025 , 1.063581695 ), ( 74 , 0.331917811 , 1.080481877 ), ( 74 , 0.404568985 , 1.109921268 ), ( 74 , 0.520331122 , 1.170127704 ), ( 74 , 0.592308539 , 1.181067623 ), ( 74 , 0.307799666 , 1.120053181 ), ( 74 , 0.051669461 , 1.154122294 ), ( 74 , 0.151087903 , 1.178384538 ), ( 74 , 0.232883751 , 1.220965471 ), ( 74 , 0.388573041 , 1.295108581 ), ( 74 , 0.01482429 , 1.277136169 ), ( 74 , 0.038129533 , 1.29529473 ), ( 74 , 0.049642934 , 1.29999876 ), ( 74 , 0.196884162 , 1.325352993 ), ( 74 , 0.645432886 , 1.286522694 ), ( 74 , 0.754486652 , 1.27892856 ), ( 74 , 0.872442398 , 1.313139191 ), ( 74 , 0.818489567 , 1.323024077 ), ( 74 , 1.0795674 , 1.312014797 ), ( 74 , 1.211800377 , 1.378571008 ), ( 74 , 1.208113511 , 1.411659453 ), ( 74 , 0.357709714 , 1.338843137 ), ( 74 , 0.50644416 , 1.412109207 ), ( 74 , 0.485395852 , 1.420253987 ), ( 74 , 2.361004594 , 0.022342824 ), ( 74 , 2.379125036 , 0.042133187 ), ( 74 , 2.300232426 , 0.076060973 ), ( 74 , 2.321534272 , 0.077948417 ), ( 74 , 2.475197236 , 0.108774111 ), ( 74 , 2.441317532 , 0.170870778 ), ( 74 , 2.267771705 , 0.10056952 ), ( 74 , 2.250822962 , 0.115572436 ), ( 74 , 2.300581517 , 0.132804659 ), ( 74 , 2.252271449 , 0.240463583 ), ( 74 , 2.383287816 , 0.276850106 ), ( 74 , 2.363730195 , 0.29811925 ), ( 74 , 2.681395426 , 0.28166596 ), ( 74 , 2.463964364 , 0.309106301 ), ( 74 , 2.463180925 , 0.316624774 ), ( 74 , 2.395627626 , 0.304899062 ), ( 74 , 2.153605536 , 0.18931009 ), ( 74 , 2.18989128 , 0.237783691 ), ( 74 , 2.130992235 , 0.229570579 ), ( 74 , 2.106228339 , 0.260914863 ), ( 74 , 2.323832058 , 0.317502307 ), ( 74 , 2.268667995 , 0.34126263 ), ( 74 , 2.004057718 , 0.351659302 ), ( 74 , 2.123061949 , 0.391938707 ), ( 74 , 2.177965708 , 0.421927662 ), ( 74 , 2.118903679 , 0.480499959 ), ( 74 , 2.336367776 , 0.460935416 ), ( 74 , 2.448602904 , 0.439163777 ), ( 74 , 2.460225037 , 0.602971387 ), ( 74 , 2.254581454 , 0.452690117 ), ( 74 , 2.350476704 , 0.564955055 ), ( 74 , 2.33428704 , 0.571484325 ), ( 74 , 2.341608557 , 0.580453345 ), ( 74 , 2.343457335 , 0.611270709 ), ( 74 , 2.266553124 , 0.619937348 ), ( 74 , 2.308221802 , 0.669251361 ), ( 74 , 2.732569066 , 0.431363546 ), ( 74 , 2.900083551 , 0.548675955 ), ( 74 , 2.708976691 , 0.535190006 ), ( 74 , 2.72315494 , 0.596782629 ), ( 74 , 2.68848349 , 0.6137338 ), ( 74 , 2.665689271 , 0.636488784 ), ( 74 , 2.762633558 , 0.684543047 ), ( 74 , 2.923093311 , 0.567775054 ), ( 74 , 3.000846425 , 0.662134824 ), ( 74 , 2.935364058 , 0.625352907 ), ( 74 , 3.011897404 , 0.662417139 ), ( 74 , 2.97403571 , 0.705647067 ), ( 74 , 3.005672401 , 0.746877891 ), ( 74 , 2.847965483 , 0.70111239 ), ( 74 , 3.073903347 , 0.846771816 ), ( 74 , 2.925410195 , 0.834238894 ), ( 74 , 3.070885902 , 0.914468062 ), ( 74 , 2.543455414 , 0.563123416 ), ( 74 , 2.575935976 , 0.626107568 ), ( 74 , 2.536696935 , 0.679793554 ), ( 74 , 2.557302802 , 0.695308429 ), ( 74 , 2.643861275 , 0.690835127 ), ( 74 , 2.690074295 , 0.786160057 ), ( 74 , 2.692236437 , 0.825672941 ), ( 74 , 2.489870821 , 0.781370179 ), ( 74 , 2.541256682 , 0.851279289 ), ( 74 , 2.542646366 , 0.89480407 ), ( 74 , 2.759691048 , 0.771115608 ), ( 74 , 2.809977592 , 0.806450362 ), ( 74 , 2.780219805 , 0.812413247 ), ( 74 , 2.767867486 , 0.857081109 ), ( 74 , 2.805049509 , 0.886614466 ), ( 74 , 2.992878315 , 0.909873444 ), ( 74 , 2.971154356 , 0.903390476 ), ( 74 , 2.825286705 , 1.04935493 ), ( 74 , 3.016407904 , 1.041977832 ), ( 74 , 2.879025146 , 1.028110539 ), ( 74 , 2.918880473 , 1.033502235 ), ( 74 , 2.93289402 , 1.068220691 ), ( 74 , 1.944245104 , 0.357704891 ), ( 74 , 1.956550976 , 0.376104731 ), ( 74 , 2.011715613 , 0.435719108 ), ( 74 , 1.954834494 , 0.457756568 ), ( 74 , 1.973153834 , 0.47341445 ), ( 74 , 2.073173584 , 0.495390497 ), ( 74 , 1.836825851 , 0.473986338 ), ( 74 , 1.902548156 , 0.510596683 ), ( 74 , 1.833106151 , 0.519621094 ), ( 74 , 1.948918353 , 0.551870196 ), ( 74 , 1.91554425 , 0.613620826 ), ( 74 , 2.18871835 , 0.592308036 ), ( 74 , 2.218061119 , 0.587917402 ), ( 74 , 2.232204585 , 0.610279356 ), ( 74 , 2.291541005 , 0.761816228 ), ( 74 , 2.069024793 , 0.641261066 ), ( 74 , 2.10112004 , 0.722330052 ), ( 74 , 2.023636848 , 0.764358815 ), ( 74 , 1.727827437 , 0.563573907 ), ( 74 , 1.789863564 , 0.612056082 ), ( 74 , 1.67210723 , 0.619945125 ), ( 74 , 1.881277608 , 0.698865113 ), ( 74 , 1.78614444 , 0.763734295 ), ( 74 , 1.78903256 , 0.806072453 ), ( 74 , 1.683013627 , 0.664107653 ), ( 74 , 1.648371975 , 0.701423518 ), ( 74 , 1.675074391 , 0.712246549 ), ( 74 , 1.621128967 , 0.764431692 ), ( 74 , 1.590697392 , 0.795623929 ), ( 74 , 1.756985454 , 0.833130503 ), ( 74 , 1.665721457 , 0.79606253 ), ( 74 , 1.668633257 , 0.806248295 ), ( 74 , 1.646498063 , 0.86368457 ), ( 74 , 1.981611244 , 0.80547914 ), ( 74 , 1.882888415 , 0.970618677 ), ( 74 , 1.90038731 , 1.043265463 ), ( 74 , 1.69694892 , 0.909764594 ), ( 74 , 1.749657385 , 0.979115533 ), ( 74 , 1.735191043 , 0.966201813 ), ( 74 , 1.680753186 , 0.901159927 ), ( 74 , 1.659437285 , 0.946826235 ), ( 74 , 1.646895917 , 1.026715772 ), ( 74 , 1.618297679 , 1.032697645 ), ( 74 , 1.757833169 , 0.989480667 ), ( 74 , 1.748773529 , 0.9928069 ), ( 74 , 1.846719913 , 1.011069954 ), ( 74 , 1.579986813 , 1.135503489 ), ( 74 , 2.384013463 , 0.865881964 ), ( 74 , 2.387719481 , 0.901111367 ), ( 74 , 2.482671819 , 0.873206315 ), ( 74 , 2.505918311 , 0.94328687 ), ( 74 , 2.254445204 , 0.861778545 ), ( 74 , 2.182189657 , 0.928471007 ), ( 74 , 2.126788328 , 0.965189692 ), ( 74 , 2.411895896 , 1.076445705 ), ( 74 , 2.350871623 , 1.151936501 ), ( 74 , 2.649560556 , 1.063251743 ), ( 74 , 2.904250394 , 1.131044039 ), ( 74 , 3.028645416 , 1.138670812 ), ( 74 , 3.122731783 , 1.173993149 ), ( 74 , 2.509925199 , 1.062754658 ), ( 74 , 2.659523725 , 1.198408613 ), ( 74 , 2.059777238 , 1.038474091 ), ( 74 , 1.99215872 , 1.136143886 ), ( 74 , 1.969628308 , 1.154269833 ), ( 74 , 1.948606785 , 1.275535165 ), ( 74 , 1.764873377 , 1.336669586 ), ( 74 , 2.256566591 , 1.216472438 ), ( 74 , 2.319053374 , 1.226955481 ), ( 74 , 2.349106206 , 1.363899793 ), ( 74 , 2.044682082 , 1.292289865 ), ( 74 , 1.950229575 , 1.319680438 ), ( 74 , 2.256918939 , 1.34472905 ), ( 74 , 1.936459218 , 1.407193458 ), ( 74 , 1.725469578 , 1.406268087 ), ( 74 , 2.356519088 , 1.443725744 ), ( 74 , 3.041905979 , 1.494309747 ), ( 74 , 2.943031645 , 1.494703169 ), ( 74 , 2.082443345 , 1.419859888 ), ( 74 , 3.955198521 , 0.05252011 ), ( 74 , 3.929522478 , 0.150062717 ), ( 74 , 4.069790976 , 0.191452158 ), ( 74 , 4.032771269 , 0.18421814 ), ( 74 , 4.059619472 , 0.209439875 ), ( 74 , 3.782085022 , 0.146289111 ), ( 74 , 4.095996974 , 0.213857335 ), ( 74 , 4.289477747 , 0.340445181 ), ( 74 , 4.213355065 , 0.382090947 ), ( 74 , 4.056755729 , 0.282604662 ), ( 74 , 4.117023408 , 0.400014959 ), ( 74 , 4.119404122 , 0.426915058 ), ( 74 , 3.670977513 , 0.239684537 ), ( 74 , 3.776482178 , 0.359295598 ), ( 74 , 3.580889103 , 0.349307309 ), ( 74 , 3.732559665 , 0.48405296 ), ( 74 , 3.958794287 , 0.399823792 ), ( 74 , 3.943664567 , 0.454458724 ), ( 74 , 3.961935461 , 0.497739228 ), ( 74 , 3.974515164 , 0.510142561 ), ( 74 , 3.966059504 , 0.580594125 ), ( 74 , 3.937847731 , 0.580746815 ), ( 74 , 4.352971161 , 0.391736118 ), ( 74 , 4.369071974 , 0.391585784 ), ( 74 , 4.428419264 , 0.491089579 ), ( 74 , 4.475137371 , 0.517023666 ), ( 74 , 4.385518794 , 0.494942774 ), ( 74 , 4.184862574 , 0.513671096 ), ( 74 , 4.368024193 , 0.6318275 ), ( 74 , 4.290429951 , 0.621537711 ), ( 74 , 4.485169723 , 0.560341299 ), ( 74 , 4.492344722 , 0.582143368 ), ( 74 , 4.579167942 , 0.60979413 ), ( 74 , 4.539885825 , 0.617339655 ), ( 74 , 4.556116544 , 0.644427443 ), ( 74 , 4.479793639 , 0.616508244 ), ( 74 , 4.457401006 , 0.745731415 ), ( 74 , 4.50462288 , 0.763380854 ), ( 74 , 4.58271437 , 0.827333719 ), ( 74 , 4.509328122 , 0.791894088 ), ( 74 , 4.59474915 , 0.861236342 ), ( 74 , 4.115666244 , 0.547748122 ), ( 74 , 4.181833901 , 0.660213003 ), ( 74 , 4.247523564 , 0.695069228 ), ( 74 , 4.078785712 , 0.769133043 ), ( 74 , 4.040373399 , 0.773220165 ), ( 74 , 4.03820282 , 0.801948122 ), ( 74 , 4.131597876 , 0.820065707 ), ( 74 , 4.195526016 , 0.822795366 ), ( 74 , 4.305972516 , 0.784602336 ), ( 74 , 4.460478938 , 0.865576325 ), ( 74 , 4.297892222 , 0.902627535 ), ( 74 , 4.693697384 , 1.071564009 ), ( 74 , 4.599622898 , 1.048741379 ), ( 74 , 4.457199007 , 1.021996278 ), ( 74 , 4.553684149 , 1.064628789 ), ( 74 , 4.709029097 , 1.119501036 ), ( 74 , 3.575410348 , 0.465731122 ), ( 74 , 3.463967412 , 0.448514636 ), ( 74 , 3.616110969 , 0.486617605 ), ( 74 , 3.680259543 , 0.480137903 ), ( 74 , 3.656241528 , 0.568993601 ), ( 74 , 3.455904624 , 0.559992689 ), ( 74 , 3.489392571 , 0.629765721 ), ( 74 , 3.544621892 , 0.642595436 ), ( 74 , 3.725272393 , 0.54446075 ), ( 74 , 3.756141356 , 0.635166961 ), ( 74 , 3.767829093 , 0.686380892 ), ( 74 , 3.708803998 , 0.711713738 ), ( 74 , 3.697269507 , 0.734754834 ), ( 74 , 3.768207184 , 0.862278545 ), ( 74 , 3.295101493 , 0.635742161 ), ( 74 , 3.453469518 , 0.711962676 ), ( 74 , 3.224962479 , 0.703591543 ), ( 74 , 3.57969932 , 0.928369857 ), ( 74 , 3.359815748 , 0.955667768 ), ( 74 , 3.170980952 , 1.005317758 ), ( 74 , 3.396899979 , 1.077164564 ), ( 74 , 3.147673831 , 1.154063132 ), ( 74 , 3.917028538 , 0.776084016 ), ( 74 , 3.982528043 , 0.847899769 ), ( 74 , 4.042480008 , 0.908490368 ), ( 74 , 3.844247915 , 0.911677794 ), ( 74 , 3.811241943 , 0.923462656 ), ( 74 , 3.694373375 , 0.930480657 ), ( 74 , 3.91539398 , 1.006163757 ), ( 74 , 3.870461753 , 1.042139246 ), ( 74 , 4.331449252 , 1.097028996 ), ( 74 , 4.514158493 , 1.105717813 ), ( 74 , 4.415318975 , 1.185341903 ), ( 74 , 4.538065722 , 1.217428771 ), ( 74 , 4.710704896 , 1.250258686 ), ( 74 , 4.299356971 , 1.170634856 ), ( 74 , 4.181571567 , 1.237372341 ), ( 74 , 4.336771787 , 1.187049509 ), ( 74 , 3.652365195 , 1.095936247 ), ( 74 , 3.773828676 , 1.098442094 ), ( 74 , 3.757492182 , 1.140807292 ), ( 74 , 3.734985056 , 1.131903067 ), ( 74 , 3.776661993 , 1.151705841 ), ( 74 , 3.661592284 , 1.123737728 ), ( 74 , 3.49395583 , 1.206056945 ), ( 74 , 3.163302147 , 1.339744468 ), ( 74 , 4.002391907 , 1.242867639 ), ( 74 , 3.870992824 , 1.327188909 ), ( 74 , 4.418880983 , 1.341333513 ), ( 74 , 4.450912678 , 1.363086697 ), ( 74 , 4.534586256 , 1.384135481 ), ( 74 , 3.546480629 , 1.327537418 ), ( 74 , 3.291067561 , 1.400635832 ), ( 74 , 3.403509753 , 1.411522568 ), ( 74 , 3.378217132 , 1.440206566 ), ( 74 , 3.5109623 , 1.454018979 ), ( 74 , 3.469503595 , 1.479206068 ), ( 74 , 3.618256275 , 1.496584093 ), ( 74 , 5.503764185 , 0.018664479 ), ( 74 , 5.511178701 , 0.029565391 ), ( 74 , 5.49378125 , 0.074938045 ), ( 74 , 5.476489105 , 0.131390613 ), ( 74 , 5.579048119 , 0.15637054 ), ( 74 , 5.577568302 , 0.178887051 ), ( 74 , 5.623802646 , 0.193467601 ), ( 74 , 5.623811963 , 0.193469658 ), ( 74 , 5.443876189 , 0.1217525 ), ( 74 , 5.353953759 , 0.158687632 ), ( 74 , 5.409957558 , 0.234215727 ), ( 74 , 5.387913524 , 0.235001186 ), ( 74 , 5.482574791 , 0.256270433 ), ( 74 , 5.497668658 , 0.32496163 ), ( 74 , 5.68877357 , 0.193754197 ), ( 74 , 5.772314616 , 0.275454832 ), ( 74 , 5.746653022 , 0.308608186 ), ( 74 , 5.731877306 , 0.356021206 ), ( 74 , 5.79815907 , 0.386393671 ), ( 74 , 5.578650221 , 0.313944482 ), ( 74 , 5.567020136 , 0.344077922 ), ( 74 , 5.520039675 , 0.325608906 ), ( 74 , 5.619102754 , 0.379366123 ), ( 74 , 5.591079943 , 0.399494045 ), ( 74 , 5.702293368 , 0.347739 ), ( 74 , 5.708015685 , 0.426978176 ), ( 74 , 5.716857962 , 0.446735907 ), ( 74 , 5.669591952 , 0.427511371 ), ( 74 , 5.691469164 , 0.510772032 ), ( 74 , 5.303205407 , 0.177218006 ), ( 74 , 5.345285385 , 0.233633527 ), ( 74 , 5.331682037 , 0.237232963 ), ( 74 , 5.319558306 , 0.251051082 ), ( 74 , 5.362759882 , 0.28369046 ), ( 74 , 5.265324123 , 0.225787799 ), ( 74 , 5.266665279 , 0.232552796 ), ( 74 , 5.258215462 , 0.240227252 ), ( 74 , 5.26881005 , 0.290549797 ), ( 74 , 5.43859342 , 0.295020749 ), ( 74 , 5.472378129 , 0.344775729 ), ( 74 , 5.447136693 , 0.370591934 ), ( 74 , 5.376196392 , 0.325112629 ), ( 74 , 5.272427961 , 0.352904543 ), ( 74 , 5.186845662 , 0.343149808 ), ( 74 , 5.207215359 , 0.354783061 ), ( 74 , 5.180613438 , 0.379985997 ), ( 74 , 5.318959 , 0.357163045 ), ( 74 , 5.282904148 , 0.357561965 ), ( 74 , 5.300476083 , 0.383543214 ), ( 74 , 5.303618393 , 0.414374927 ), ( 74 , 5.344101551 , 0.439464099 ), ( 74 , 5.344205342 , 0.456002066 ), ( 74 , 5.239146124 , 0.41536854 ), ( 74 , 5.224320852 , 0.420402513 ), ( 74 , 5.299293321 , 0.433621793 ), ( 74 , 5.307432847 , 0.462346004 ), ( 74 , 5.279793628 , 0.493388515 ), ( 74 , 5.498579989 , 0.3483951 ), ( 74 , 5.508097523 , 0.407084379 ), ( 74 , 5.447758297 , 0.401630947 ), ( 74 , 5.462143962 , 0.407210856 ), ( 74 , 5.439945846 , 0.426953248 ), ( 74 , 5.404964378 , 0.432457143 ), ( 74 , 5.425460235 , 0.446845296 ), ( 74 , 5.509512535 , 0.462651957 ), ( 74 , 5.676706717 , 0.528787662 ), ( 74 , 5.608325284 , 0.514203868 ), ( 74 , 5.650645792 , 0.554732968 ), ( 74 , 5.641106219 , 0.572060414 ), ( 74 , 5.580561902 , 0.561659249 ), ( 74 , 5.441683891 , 0.561514013 ), ( 74 , 5.374424084 , 0.528153252 ), ( 74 , 5.319654618 , 0.514855622 ), ( 74 , 5.353661579 , 0.530050274 ), ( 74 , 5.335417885 , 0.550647022 ), ( 74 , 5.373423256 , 0.577670668 ), ( 74 , 5.57048823 , 0.633921177 ), ( 74 , 5.519443531 , 0.618362357 ), ( 74 , 5.463916694 , 0.689429055 ), ( 74 , 5.487286192 , 0.692244654 ), ( 74 , 5.491044327 , 0.721829469 ), ( 74 , 5.942096545 , 0.390770058 ), ( 74 , 5.835582782 , 0.460540225 ), ( 74 , 5.919454197 , 0.484927036 ), ( 74 , 5.873534155 , 0.497733773 ), ( 74 , 5.886692507 , 0.506655814 ), ( 74 , 5.999286378 , 0.488859929 ), ( 74 , 6.055407817 , 0.531272064 ), ( 74 , 5.911387253 , 0.522854662 ), ( 74 , 5.998465538 , 0.549406632 ), ( 74 , 5.971016854 , 0.542808712 ), ( 74 , 5.817293715 , 0.476796805 ), ( 74 , 5.864044556 , 0.545620742 ), ( 74 , 5.823196195 , 0.516131159 ), ( 74 , 5.748619243 , 0.511552497 ), ( 74 , 5.774453119 , 0.524250843 ), ( 74 , 5.808453219 , 0.632761695 ), ( 74 , 6.102767084 , 0.588649997 ), ( 74 , 6.114710524 , 0.637065262 ), ( 74 , 6.184883864 , 0.625083197 ), ( 74 , 6.172755029 , 0.659744248 ), ( 74 , 6.246317006 , 0.734480864 ), ( 74 , 6.108746159 , 0.728760179 ), ( 74 , 6.003710188 , 0.72142874 ), ( 74 , 5.9762133 , 0.744051178 ), ( 74 , 5.926045864 , 0.717693569 ), ( 74 , 6.026867295 , 0.771411636 ), ( 74 , 6.201754568 , 0.817861059 ), ( 74 , 6.279894599 , 0.881900293 ), ( 74 , 6.072154579 , 0.822007493 ), ( 74 , 5.714148365 , 0.581403328 ), ( 74 , 5.686596438 , 0.663529736 ), ( 74 , 5.708567034 , 0.679912375 ), ( 74 , 5.751671434 , 0.754658373 ), ( 74 , 5.802178434 , 0.753746737 ), ( 74 , 5.663680146 , 0.716997325 ), ( 74 , 5.628670053 , 0.724491179 ), ( 74 , 5.565823606 , 0.784604914 ), ( 74 , 5.716737193 , 0.765987753 ), ( 74 , 5.738822534 , 0.775248145 ), ( 74 , 5.798973218 , 0.846818096 ), ( 74 , 5.811766158 , 0.876088364 ), ( 74 , 5.672000328 , 0.857529177 ), ( 74 , 5.985812989 , 0.815687591 ), ( 74 , 5.989243832 , 0.88496614 ), ( 74 , 5.981151387 , 0.908664112 ), ( 74 , 6.136326386 , 0.927938144 ), ( 74 , 6.215032019 , 0.963531789 ), ( 74 , 6.257152844 , 0.985925956 ), ( 74 , 6.27352599 , 0.99727555 ), ( 74 , 6.170413779 , 0.968460895 ), ( 74 , 6.183723083 , 0.975228198 ), ( 74 , 5.862646798 , 0.893532792 ), ( 74 , 5.880564815 , 0.898719229 ), ( 74 , 5.920129146 , 0.949866818 ), ( 74 , 5.872033151 , 0.939278713 ), ( 74 , 5.872486028 , 0.941512052 ), ( 74 , 5.81349119 , 0.961634264 ), ( 74 , 5.827176235 , 0.974217093 ), ( 74 , 5.918669872 , 1.019727516 ), ( 74 , 6.166909324 , 1.054373632 ), ( 74 , 6.260067218 , 1.079292221 ), ( 74 , 6.249504038 , 1.079967016 ), ( 74 , 6.032831123 , 1.040304127 ), ( 74 , 6.113533968 , 1.055415725 ), ( 74 , 6.231291196 , 1.113822182 ), ( 74 , 5.12748246 , 0.386740084 ), ( 74 , 5.090883383 , 0.377917342 ), ( 74 , 5.06998246 , 0.392810467 ), ( 74 , 5.19634742 , 0.429821061 ), ( 74 , 5.185197812 , 0.43649857 ), ( 74 , 5.148090365 , 0.428248505 ), ( 74 , 5.059411906 , 0.393933099 ), ( 74 , 5.068661598 , 0.446364946 ), ( 74 , 5.067846195 , 0.446872968 ), ( 74 , 5.057873344 , 0.470050731 ), ( 74 , 5.098264711 , 0.436251044 ), ( 74 , 5.086109015 , 0.455600279 ), ( 74 , 5.199423804 , 0.45772341 ), ( 74 , 5.171786601 , 0.548454375 ), ( 74 , 5.234237502 , 0.574123761 ), ( 74 , 4.997510093 , 0.452394472 ), ( 74 , 5.044637719 , 0.468943268 ), ( 74 , 5.027624917 , 0.562917122 ), ( 74 , 4.992893222 , 0.594932689 ), ( 74 , 5.095858778 , 0.582482836 ), ( 74 , 5.085510866 , 0.596804519 ), ( 74 , 5.120338431 , 0.628701471 ), ( 74 , 5.037404486 , 0.603270382 ), ( 74 , 5.090851015 , 0.69745939 ), ( 74 , 5.325493211 , 0.558914691 ), ( 74 , 5.321159553 , 0.559327844 ), ( 74 , 5.262073497 , 0.624778051 ), ( 74 , 5.273511856 , 0.640046738 ), ( 74 , 5.223865062 , 0.611411472 ), ( 74 , 5.244846974 , 0.616667867 ), ( 74 , 5.227211104 , 0.634042143 ), ( 74 , 5.288822152 , 0.669419179 ), ( 74 , 5.39907879 , 0.664944691 ), ( 74 , 5.449828777 , 0.678323779 ), ( 74 , 5.486516657 , 0.727620927 ), ( 74 , 5.441786186 , 0.740191361 ), ( 74 , 5.380087457 , 0.723855361 ), ( 74 , 5.385514968 , 0.756783238 ), ( 74 , 5.38975576 , 0.775078667 ), ( 74 , 5.361704556 , 0.79794327 ), ( 74 , 5.174554446 , 0.696192157 ), ( 74 , 5.2435682 , 0.729832907 ), ( 74 , 5.237112795 , 0.736839888 ), ( 74 , 5.165034453 , 0.693638136 ), ( 74 , 5.19421438 , 0.762034377 ), ( 74 , 5.173298291 , 0.784764881 ), ( 74 , 5.151540827 , 0.781723321 ), ( 74 , 5.30841752 , 0.791318132 ), ( 74 , 5.250019151 , 0.878061783 ), ( 74 , 5.232138382 , 0.884238647 ), ( 74 , 4.882453123 , 0.562507382 ), ( 74 , 4.888454684 , 0.587897794 ), ( 74 , 4.912363389 , 0.602458658 ), ( 74 , 4.824914692 , 0.616844721 ), ( 74 , 4.897100402 , 0.637948842 ), ( 74 , 5.025677945 , 0.69738789 ), ( 74 , 5.027813899 , 0.719731945 ), ( 74 , 5.019758665 , 0.743534054 ), ( 74 , 4.981424585 , 0.724142483 ), ( 74 , 4.962928465 , 0.734826271 ), ( 74 , 5.018692725 , 0.777718136 ), ( 74 , 4.961320052 , 0.800339646 ), ( 74 , 4.857433296 , 0.7009238 ), ( 74 , 4.84748948 , 0.717445783 ), ( 74 , 4.751179839 , 0.760317088 ), ( 74 , 4.899676705 , 0.784091702 ), ( 74 , 4.891539357 , 0.772676443 ), ( 74 , 4.850964714 , 0.802656725 ), ( 74 , 4.822332 , 0.870293332 ), ( 74 , 4.782445025 , 0.881958674 ), ( 74 , 4.754615309 , 0.879682876 ), ( 74 , 5.110769564 , 0.750266432 ), ( 74 , 5.06109896 , 0.785961546 ), ( 74 , 5.133405735 , 0.799320164 ), ( 74 , 5.10603067 , 0.805430416 ), ( 74 , 5.037192976 , 0.850307972 ), ( 74 , 5.049717678 , 0.870043514 ), ( 74 , 5.201671376 , 0.912484386 ), ( 74 , 5.149900793 , 0.973796828 ), ( 74 , 5.016534046 , 1.020462845 ), ( 74 , 4.833125536 , 0.941621742 ), ( 74 , 4.862650825 , 1.008831405 ), ( 74 , 4.913241109 , 1.041738961 ), ( 74 , 4.906566124 , 1.053284887 ), ( 74 , 4.755518766 , 1.080031176 ), ( 74 , 5.483862276 , 0.748697824 ), ( 74 , 5.529417515 , 0.779709927 ), ( 74 , 5.527784007 , 0.797187227 ), ( 74 , 5.471150055 , 0.774688911 ), ( 74 , 5.479929261 , 0.82204087 ), ( 74 , 5.490174132 , 0.831085772 ), ( 74 , 5.557554335 , 0.796069876 ), ( 74 , 5.522804107 , 0.834350052 ), ( 74 , 5.469103781 , 0.842427556 ), ( 74 , 5.423290351 , 0.856132403 ), ( 74 , 5.603249617 , 0.852061646 ), ( 74 , 5.583805014 , 0.967786958 ), ( 74 , 5.361981788 , 0.859820992 ), ( 74 , 5.450390261 , 0.946568958 ), ( 74 , 5.468580065 , 0.951542004 ), ( 74 , 5.376855424 , 0.94520637 ), ( 74 , 5.306962346 , 0.907549614 ), ( 74 , 5.488237557 , 0.96844493 ), ( 74 , 5.466026791 , 0.987594302 ), ( 74 , 5.517849318 , 1.051672412 ), ( 74 , 5.616894313 , 1.083867226 ), ( 74 , 5.470262583 , 1.078211286 ), ( 74 , 5.515705751 , 1.106181715 ), ( 74 , 5.557604255 , 1.124053181 ), ( 74 , 5.478092758 , 1.146458571 ), ( 74 , 5.769984789 , 0.976444915 ), ( 74 , 5.796970364 , 1.034873518 ), ( 74 , 5.705756465 , 1.041967795 ), ( 74 , 5.723780118 , 1.081107597 ), ( 74 , 5.878902371 , 1.116250347 ), ( 74 , 5.896236956 , 1.11382834 ), ( 74 , 5.807550604 , 1.106531137 ), ( 74 , 6.113888997 , 1.12993757 ), ( 74 , 6.241091636 , 1.167769223 ), ( 74 , 6.174800795 , 1.177956703 ), ( 74 , 5.926187328 , 1.154430632 ), ( 74 , 5.659999383 , 1.087428118 ), ( 74 , 5.741665757 , 1.104110947 ), ( 74 , 5.646921089 , 1.112670494 ), ( 74 , 5.603712361 , 1.099444698 ), ( 74 , 5.851060731 , 1.168766046 ), ( 74 , 5.746796886 , 1.152436887 ), ( 74 , 5.815875172 , 1.203987115 ), ( 74 , 5.544093033 , 1.154675951 ), ( 74 , 5.674648416 , 1.235450555 ), ( 74 , 5.729648725 , 1.216434429 ), ( 74 , 5.92242736 , 1.207918623 ), ( 74 , 6.170338889 , 1.27259983 ), ( 74 , 6.004889515 , 1.271250327 ), ( 74 , 5.79568528 , 1.270048826 ), ( 74 , 6.099666523 , 1.286105547 ), ( 74 , 6.195083338 , 1.322110245 ), ( 74 , 5.299975255 , 1.028683271 ), ( 74 , 5.214248985 , 1.164974705 ), ( 74 , 5.355263018 , 1.200216436 ), ( 74 , 5.047872077 , 1.103175444 ), ( 74 , 4.989311589 , 1.144712773 ), ( 74 , 4.860464633 , 1.158144089 ), ( 74 , 4.918080866 , 1.304213963 ), ( 74 , 5.504837882 , 1.189673234 ), ( 74 , 5.608106468 , 1.230069895 ), ( 74 , 5.301186913 , 1.267206332 ), ( 74 , 5.869298642 , 1.351446354 ), ( 74 , 5.940905794 , 1.354641072 ), ( 74 , 5.950906562 , 1.370402508 ), ( 74 , 5.565836267 , 1.371798742 ), ( 74 , 6.017731231 , 1.402272158 ), ( 74 , 5.554605521 , 1.410326678 ), ( 74 , 5.527583225 , 1.414073226 ), ( 74 , 5.85911864 , 1.484608087 ), ( 74 , 4.738566808 , 1.477525732 ), ( 74 , 5.486357279 , 1.519008679 ), ( 74 , 6.274416886 , -0.679871604 ), ( 74 , 0.092699118 , -0.624814641 ), ( 74 , 6.210650588 , -0.577405584 ), ( 74 , 6.195305889 , -0.571517184 ), ( 74 , 6.167247628 , -0.546103463 ), ( 74 , 0.005901551 , -0.501348113 ), ( 74 , 0.038805434 , -0.387106159 ), ( 74 , 0.141256598 , -0.430156111 ), ( 74 , 0.309930272 , -0.328208823 ), ( 74 , 0.291205064 , -0.270708314 ), ( 74 , 0.0279977 , -0.314826743 ), ( 74 , 0.102180695 , -0.329724496 ), ( 74 , 0.200663094 , -0.290638916 ), ( 74 , 6.094082786 , -0.500634389 ), ( 74 , 5.947334515 , -0.377993891 ), ( 74 , 5.934317043 , -0.335070755 ), ( 74 , 6.11412256 , -0.231593613 ), ( 74 , 6.066535786 , -0.23813922 ), ( 74 , 6.090671387 , -0.230104689 ), ( 74 , 6.081617535 , -0.233782784 ), ( 74 , 6.264939293 , -0.243759546 ), ( 74 , 0.122217593 , -0.20348633 ), ( 74 , 6.176121313 , -0.184222108 ), ( 74 , 6.224601887 , -0.157034093 ), ( 74 , 6.125037507 , -0.147658914 ), ( 74 , 0.458735995 , -0.25416261 ), ( 74 , 0.348908233 , -0.27601969 ), ( 74 , 0.311054828 , -0.235676417 ), ( 74 , 0.308557934 , -0.084511031 ), ( 74 , 0.58339577 , -0.052921683 ), ( 74 , 0.773078892 , -0.010025693 ), ( 74 , 0.645766455 , 0.034222426 ), ( 74 , 0.666286501 , 0.018041239 ), ( 74 , 0.436845309 , -0.004229566 ), ( 74 , 0.475629326 , 0.023239135 ), ( 74 , 0.458516023 , 0.043686402 ), ( 74 , 0.587373138 , 0.029278576 ), ( 74 , 0.598754547 , 0.032470445 ), ( 74 , 0.58705563 , 0.116081659 ), ( 74 , 0.617556817 , 0.135302689 ), ( 74 , 0.207760789 , -0.040523482 ), ( 74 , 0.352931256 , -0.022873278 ), ( 74 , 0.104709258 , -0.060655978 ), ( 74 , 0.079890855 , -0.035165135 ), ( 74 , 0.078802029 , 0.010763594 ), ( 74 , 0.119281881 , 0.049114909 ), ( 74 , 0.287359265 , 0.08567067 ), ( 74 , 0.370489368 , 0.058456634 ), ( 74 , 0.447661292 , 0.178798503 ), ( 74 , 0.499207699 , 0.199016581 ), ( 74 , 0.309391894 , 0.166950575 ), ( 74 , 0.413908003 , 0.219187965 ), ( 74 , 0.338375894 , 0.248578578 ), ( 74 , 5.945186815 , -0.219209391 ), ( 74 , 5.844997175 , -0.291555954 ), ( 74 , 6.047091432 , -0.182177627 ), ( 74 , 6.048829989 , -0.167666206 ), ( 74 , 5.864849453 , -0.177986854 ), ( 74 , 5.968285627 , -0.073848718 ), ( 74 , 5.873531524 , -0.090372213 ), ( 74 , 5.820054818 , -0.077691528 ), ( 74 , 5.865064646 , -0.035988636 ), ( 74 , 6.052781924 , -0.134301719 ), ( 74 , 6.215734718 , -0.05542529 ), ( 74 , 6.229511951 , -0.013305483 ), ( 74 , 6.224614889 , 0.009247338 ), ( 74 , 6.155227414 , 0.015315553 ), ( 74 , 6.186408216 , 0.05881849 ), ( 74 , 5.980544139 , 0.070996039 ), ( 74 , 6.062297209 , 0.037428338 ), ( 74 , 6.021346162 , 0.090050775 ), ( 74 , 6.065511618 , 0.128498062 ), ( 74 , 5.788220034 , 0.032436256 ), ( 74 , 5.652178293 , 0.017017232 ), ( 74 , 5.527771981 , -0.016816191 ), ( 74 , 5.576230378 , 0.050462504 ), ( 74 , 5.639776966 , 0.085053044 ), ( 74 , 5.973115037 , 0.07491552 ), ( 74 , 5.944391136 , 0.090298362 ), ( 74 , 5.918716234 , 0.113658833 ), ( 74 , 5.989130689 , 0.178367179 ), ( 74 , 5.959863642 , 0.195482113 ), ( 74 , 5.788210321 , 0.09066531 ), ( 74 , 5.749534019 , 0.182214579 ), ( 74 , 0.012164848 , 0.037166864 ), ( 74 , 6.176739163 , 0.146299371 ), ( 74 , 6.267156217 , 0.174745723 ), ( 74 , 6.175264536 , 0.191260819 ), ( 74 , 6.252643497 , 0.208114046 ), ( 74 , 6.256588353 , 0.314010056 ), ( 74 , 0.228994057 , 0.238214285 ), ( 74 , 0.156356559 , 0.289176699 ), ( 74 , 0.26396625 , 0.32622957 ), ( 74 , 0.138985763 , 0.315986908 ), ( 74 , 0.137503407 , 0.363543048 ), ( 74 , 0.065184165 , 0.37597684 ), ( 74 , 0.081422146 , 0.399330568 ), ( 74 , 0.228949485 , 0.373666568 ), ( 74 , 0.22522071 , 0.394853804 ), ( 74 , 0.19728216 , 0.411736215 ), ( 74 , 0.220969465 , 0.446539782 ), ( 74 , 0.214507937 , 0.501244478 ), ( 74 , 6.034361903 , 0.287239181 ), ( 74 , 6.197116974 , 0.317897901 ), ( 74 , 6.241751562 , 0.307374039 ), ( 74 , 6.275855366 , 0.343717507 ), ( 74 , 6.111565695 , 0.346286055 ), ( 74 , 6.116598189 , 0.360194451 ), ( 74 , 6.029710829 , 0.346232288 ), ( 74 , 6.045772669 , 0.353273486 ), ( 74 , 6.038150524 , 0.376951764 ), ( 74 , 5.901214178 , 0.342501327 ), ( 74 , 5.943034733 , 0.385714414 ), ( 74 , 6.101040843 , 0.481712708 ), ( 74 , 0.06702455 , 0.498929983 ), ( 74 , 0.04557848 , 0.500085273 ), ( 74 , 0.124187451 , 0.589900274 ), ( 74 , 6.183337524 , 0.535441992 ), ( 74 , 6.168273657 , 0.541328855 ), ( 74 , 6.155713414 , 0.590541696 ), ( 74 , 0.092296828 , 0.626201231 ), ( 74 , 6.2783256 , 0.682611941 ), ( 74 , 1.64258701 , -0.61838314 ), ( 74 , 1.604363218 , -0.604582404 ), ( 74 , 1.516023465 , -0.636826943 ), ( 74 , 1.535613879 , -0.626742646 ), ( 74 , 1.594677784 , -0.58471829 ), ( 74 , 1.687046894 , -0.583207655 ), ( 74 , 1.689110482 , -0.56142751 ), ( 74 , 1.614978377 , -0.520431965 ), ( 74 , 1.67302462 , -0.460410806 ), ( 74 , 1.472731999 , -0.542132091 ), ( 74 , 1.399499423 , -0.509740638 ), ( 74 , 1.473324987 , -0.499623447 ), ( 74 , 1.591395166 , -0.489752245 ), ( 74 , 1.620819732 , -0.472256817 ), ( 74 , 1.66147009 , -0.424117386 ), ( 74 , 1.585700989 , -0.380323651 ), ( 74 , 1.782945153 , -0.492453683 ), ( 74 , 1.747847784 , -0.493331791 ), ( 74 , 1.814636005 , -0.445370397 ), ( 74 , 1.772032981 , -0.362231367 ), ( 74 , 1.934734111 , -0.353085465 ), ( 74 , 1.955153342 , -0.333673938 ), ( 74 , 1.877126927 , -0.335070282 ), ( 74 , 1.800648888 , -0.369734944 ), ( 74 , 1.844328154 , -0.306855257 ), ( 74 , 1.84609124 , -0.279352154 ), ( 74 , 1.866953856 , -0.274027059 ), ( 74 , 1.729360473 , -0.34020144 ), ( 74 , 1.741226795 , -0.31740247 ), ( 74 , 1.691285567 , -0.267142407 ), ( 74 , 1.453117334 , -0.44273918 ), ( 74 , 1.43463801 , -0.423438833 ), ( 74 , 1.380666258 , -0.402451338 ), ( 74 , 1.483956326 , -0.414063531 ), ( 74 , 1.486421433 , -0.354281263 ), ( 74 , 1.3300741 , -0.353346198 ), ( 74 , 1.220061425 , -0.370836929 ), ( 74 , 1.420919001 , -0.229210409 ), ( 74 , 1.422784506 , -0.225229762 ), ( 74 , 1.329207955 , -0.225637905 ), ( 74 , 1.38116063 , -0.196556239 ), ( 74 , 1.542493075 , -0.28388888 ), ( 74 , 1.714730509 , -0.15645352 ), ( 74 , 1.711523891 , -0.129292321 ), ( 74 , 1.631611695 , -0.119086583 ), ( 74 , 1.549506 , -0.171212802 ), ( 74 , 1.421049224 , -0.166727018 ), ( 74 , 1.597398517 , -0.133029017 ), ( 74 , 1.639623644 , -0.108358033 ), ( 74 , 1.503285641 , -0.081956784 ), ( 74 , 1.538015694 , -0.039887935 ), ( 74 , 1.986196903 , -0.306255304 ), ( 74 , 1.897195641 , -0.270111732 ), ( 74 , 1.963023051 , -0.250597517 ), ( 74 , 1.96054622 , -0.229321946 ), ( 74 , 1.955996669 , -0.196616578 ), ( 74 , 2.075569787 , -0.239673534 ), ( 74 , 2.080218721 , -0.225764743 ), ( 74 , 2.074909593 , -0.186094764 ), ( 74 , 2.047355164 , -0.183247491 ), ( 74 , 2.059239544 , -0.168526814 ), ( 74 , 1.876011016 , -0.237646197 ), ( 74 , 1.850238868 , -0.214468541 ), ( 74 , 1.917107315 , -0.153294202 ), ( 74 , 1.794203439 , -0.176021321 ), ( 74 , 1.85600094 , -0.141950643 ), ( 74 , 1.863091015 , -0.095498208 ), ( 74 , 1.969407599 , -0.081659665 ), ( 74 , 2.007088326 , -0.062822062 ), ( 74 , 1.928721002 , -0.097227896 ), ( 74 , 1.892558921 , -0.089981059 ), ( 74 , 1.925859327 , -0.057396653 ), ( 74 , 1.960205468 , -0.079267573 ), ( 74 , 2.183805044 , -0.115665734 ), ( 74 , 2.185496561 , -0.084928222 ), ( 74 , 2.09650042 , -0.085168118 ), ( 74 , 2.166119855 , -0.056304394 ), ( 74 , 2.052986005 , -0.062792485 ), ( 74 , 2.082477612 , 0.019670349 ), ( 74 , 2.102798059 , 0.079262942 ), ( 74 , 2.086112836 , 0.087467209 ), ( 74 , 1.787198333 , -0.129368802 ), ( 74 , 1.782830073 , -0.071147783 ), ( 74 , 1.708683414 , -0.093702304 ), ( 74 , 1.703692567 , -0.08197528 ), ( 74 , 1.720639021 , -0.050714247 ), ( 74 , 1.761042699 , -0.023506214 ), ( 74 , 1.767633032 , -0.017819814 ), ( 74 , 1.834225455 , -0.042447944 ), ( 74 , 1.858253335 , -0.017833085 ), ( 74 , 1.913760273 , 0.004862499 ), ( 74 , 1.814724284 , -0.027667952 ), ( 74 , 1.638196069 , -0.024432625 ), ( 74 , 1.641685071 , 0.000265994 ), ( 74 , 1.709320529 , 0.03519198 ), ( 74 , 1.645246164 , 0.029444011 ), ( 74 , 1.751572575 , 0.016707255 ), ( 74 , 1.795966603 , 0.046262722 ), ( 74 , 1.753669343 , 0.045060139 ), ( 74 , 1.755619309 , 0.050073937 ), ( 74 , 1.786739927 , 0.064431286 ), ( 74 , 1.851692964 , 0.079797006 ), ( 74 , 1.713528112 , 0.066575319 ), ( 74 , 1.76037235 , 0.102080109 ), ( 74 , 1.789388526 , 0.109192952 ), ( 74 , 1.800525281 , 0.136523553 ), ( 74 , 1.737464378 , 0.124760048 ), ( 74 , 1.951787265 , 0.025353268 ), ( 74 , 1.968842553 , 0.037875929 ), ( 74 , 1.957818253 , 0.039851062 ), ( 74 , 1.9198292 , 0.042941146 ), ( 74 , 2.022945848 , 0.10969099 ), ( 74 , 1.944973442 , 0.077584093 ), ( 74 , 1.924052768 , 0.108865816 ), ( 74 , 1.957516953 , 0.14848173 ), ( 74 , 2.083159829 , 0.119583521 ), ( 74 , 2.055313057 , 0.129818519 ), ( 74 , 2.041312686 , 0.128130457 ), ( 74 , 2.114051962 , 0.161757632 ), ( 74 , 2.003194789 , 0.155793958 ), ( 74 , 2.069071635 , 0.234238162 ), ( 74 , 1.915917634 , 0.180029625 ), ( 74 , 2.003082034 , 0.207188151 ), ( 74 , 1.937315218 , 0.190348289 ), ( 74 , 1.965397082 , 0.24198678 ), ( 74 , 2.053050882 , 0.259031603 ), ( 74 , 2.024107044 , 0.266294036 ), ( 74 , 1.137473673 , -0.29373696 ), ( 74 , 1.213849413 , -0.231402421 ), ( 74 , 1.212989708 , -0.22739922 ), ( 74 , 1.329918417 , -0.204212898 ), ( 74 , 1.262381602 , -0.157243524 ), ( 74 , 1.27551984 , -0.137809025 ), ( 74 , 1.299860619 , -0.106506735 ), ( 74 , 1.072951561 , -0.179695749 ), ( 74 , 1.148989623 , -0.134469422 ), ( 74 , 1.235379797 , -0.112942139 ), ( 74 , 1.211754739 , -0.046193254 ), ( 74 , 1.159331482 , -0.038962616 ), ( 74 , 1.459708518 , -0.078320019 ), ( 74 , 1.401929409 , -0.101429503 ), ( 74 , 1.394970635 , -0.085125409 ), ( 74 , 1.339213975 , -0.090160273 ), ( 74 , 1.346328652 , -0.052526296 ), ( 74 , 1.430134952 , -0.037445722 ), ( 74 , 1.453520166 , -0.029965919 ), ( 74 , 1.52591151 , -0.006133458 ), ( 74 , 1.431633996 , -0.029147034 ), ( 74 , 1.462382882 , -0.00470541 ), ( 74 , 1.409800743 , 0.022505065 ), ( 74 , 1.474327461 , 0.016905184 ), ( 74 , 1.446433374 , 0.02949685 ), ( 74 , 1.197503785 , 0.007091126 ), ( 74 , 1.336842867 , 0.046656572 ), ( 74 , 1.466831739 , 0.080802024 ), ( 74 , 1.385519321 , 0.095683976 ), ( 74 , 0.923575751 , -0.061045128 ), ( 74 , 1.002008798 , -0.040643023 ), ( 74 , 0.974648444 , -0.036129539 ), ( 74 , 0.955177265 , -0.02662709 ), ( 74 , 1.162615594 , -0.008924758 ), ( 74 , 0.849113257 , -0.040713529 ), ( 74 , 0.950508983 , 0.002461586 ), ( 74 , 0.831643271 , 0.003704943 ), ( 74 , 0.818836967 , 0.024538367 ), ( 74 , 0.904218257 , 0.039793842 ), ( 74 , 0.932645053 , 0.120881039 ), ( 74 , 0.990731061 , 0.156295925 ), ( 74 , 1.11461746 , 0.069976974 ), ( 74 , 1.182748705 , 0.118519995 ), ( 74 , 1.259620886 , 0.136836397 ), ( 74 , 1.328525139 , 0.136662724 ), ( 74 , 1.331762571 , 0.15606922 ), ( 74 , 1.251238427 , 0.157384614 ), ( 74 , 1.264993181 , 0.238916683 ), ( 74 , 1.060134263 , 0.142069984 ), ( 74 , 1.02433067 , 0.160174573 ), ( 74 , 1.187599338 , 0.187802949 ), ( 74 , 1.142124362 , 0.237101919 ), ( 74 , 1.199812646 , 0.296603427 ), ( 74 , 1.585780526 , 0.067404386 ), ( 74 , 1.627792894 , 0.061244068 ), ( 74 , 1.624049766 , 0.081571708 ), ( 74 , 1.5204879 , 0.082098742 ), ( 74 , 1.528897942 , 0.086511303 ), ( 74 , 1.54217502 , 0.109182846 ), ( 74 , 1.709402331 , 0.118424048 ), ( 74 , 1.751677994 , 0.171984292 ), ( 74 , 1.621807993 , 0.135771895 ), ( 74 , 1.624314923 , 0.180351659 ), ( 74 , 1.681444205 , 0.188651767 ), ( 74 , 1.634146522 , 0.205893091 ), ( 74 , 1.653672273 , 0.22168138 ), ( 74 , 1.475674209 , 0.104771989 ), ( 74 , 1.462924268 , 0.151855457 ), ( 74 , 1.489775034 , 0.160541172 ), ( 74 , 1.462717622 , 0.169245565 ), ( 74 , 1.38355923 , 0.173263239 ), ( 74 , 1.416727804 , 0.201211355 ), ( 74 , 1.514921385 , 0.215362924 ), ( 74 , 1.466696654 , 0.217053795 ), ( 74 , 1.618731991 , 0.209349577 ), ( 74 , 1.584990974 , 0.220219305 ), ( 74 , 1.547288175 , 0.200455873 ), ( 74 , 1.601989796 , 0.252186177 ), ( 74 , 1.564980162 , 0.289684449 ), ( 74 , 1.768206134 , 0.23275592 ), ( 74 , 1.824846503 , 0.248694773 ), ( 74 , 1.684320226 , 0.264414182 ), ( 74 , 1.723327259 , 0.267566911 ), ( 74 , 1.729972106 , 0.274885027 ), ( 74 , 1.711927542 , 0.274124208 ), ( 74 , 1.89317222 , 0.289378142 ), ( 74 , 1.954113456 , 0.332385799 ), ( 74 , 1.901158241 , 0.346400938 ), ( 74 , 1.896154671 , 0.358085184 ), ( 74 , 1.628307411 , 0.331773026 ), ( 74 , 1.642924721 , 0.331850753 ), ( 74 , 1.602640683 , 0.363379687 ), ( 74 , 1.76884293 , 0.412704633 ), ( 74 , 1.84280603 , 0.442687153 ), ( 74 , 1.740500233 , 0.485273436 ), ( 74 , 1.756444207 , 0.512694137 ), ( 74 , 1.391384969 , 0.236790445 ), ( 74 , 1.425198502 , 0.283078569 ), ( 74 , 1.26890439 , 0.28292256 ), ( 74 , 1.283048718 , 0.297174067 ), ( 74 , 1.202822137 , 0.34851565 ), ( 74 , 1.292578645 , 0.376505688 ), ( 74 , 1.292031341 , 0.394028959 ), ( 74 , 1.331686331 , 0.415369572 ), ( 74 , 1.388649604 , 0.502301949 ), ( 74 , 1.605872087 , 0.371674781 ), ( 74 , 1.57728283 , 0.41371047 ), ( 74 , 1.484857286 , 0.428258062 ), ( 74 , 1.673345766 , 0.473298441 ), ( 74 , 1.736956248 , 0.539126262 ), ( 74 , 1.440346429 , 0.515717762 ), ( 74 , 1.452967068 , 0.556265398 ), ( 74 , 1.438803499 , 0.581975641 ), ( 74 , 3.203986682 , -0.589556763 ), ( 74 , 3.281941179 , -0.481120385 ), ( 74 , 3.10269171 , -0.472640036 ), ( 74 , 3.086311303 , -0.453112356 ), ( 74 , 3.424661067 , -0.375590888 ), ( 74 , 3.391058167 , -0.386974158 ), ( 74 , 3.402523875 , -0.354161645 ), ( 74 , 3.387174042 , -0.342633324 ), ( 74 , 3.348184961 , -0.331691836 ), ( 74 , 3.290647765 , -0.31757202 ), ( 74 , 2.925747217 , -0.453725245 ), ( 74 , 2.981475291 , -0.413753493 ), ( 74 , 2.939490986 , -0.401403499 ), ( 74 , 3.070821351 , -0.367185183 ), ( 74 , 3.045948769 , -0.31750389 ), ( 74 , 2.820780435 , -0.344886358 ), ( 74 , 2.907865359 , -0.28852342 ), ( 74 , 2.991951817 , -0.253724341 ), ( 74 , 3.224563346 , -0.23636094 ), ( 74 , 3.278700352 , -0.160251904 ), ( 74 , 3.192516761 , -0.184492478 ), ( 74 , 3.042704831 , -0.215510866 ), ( 74 , 3.06190779 , -0.158414602 ), ( 74 , 3.03982692 , -0.162544845 ), ( 74 , 3.173215948 , -0.118079638 ), ( 74 , 3.230085635 , -0.078719768 ), ( 74 , 3.139693967 , -0.033488759 ), ( 74 , 3.521981352 , -0.312923196 ), ( 74 , 3.486184647 , -0.220750951 ), ( 74 , 3.428960563 , -0.2463025 ), ( 74 , 3.495896659 , -0.174511946 ), ( 74 , 3.480777816 , -0.152430465 ), ( 74 , 3.392384806 , -0.170379364 ), ( 74 , 3.723269468 , -0.147386861 ), ( 74 , 3.719822912 , -0.051878212 ), ( 74 , 3.833102149 , -0.063027519 ), ( 74 , 3.774522271 , 0.098003324 ), ( 74 , 3.781707268 , 0.103572906 ), ( 74 , 3.769956449 , 0.101631985 ), ( 74 , 3.693189722 , 0.122253967 ), ( 74 , 3.705274026 , 0.128890594 ), ( 74 , 3.319077796 , -0.147471395 ), ( 74 , 3.340269235 , -0.083966091 ), ( 74 , 3.383136502 , -0.078604293 ), ( 74 , 3.339199574 , -0.067858412 ), ( 74 , 3.459078584 , -0.03069128 ), ( 74 , 3.604584987 , 0.0892804 ), ( 74 , 3.474943143 , 0.113520454 ), ( 74 , 3.559888815 , 0.144737076 ), ( 74 , 3.450453914 , 0.232246929 ), ( 74 , 3.491323033 , 0.271640872 ), ( 74 , 2.820644256 , -0.262394341 ), ( 74 , 2.691213663 , -0.228630965 ), ( 74 , 2.729114216 , -0.222751336 ), ( 74 , 2.81784774 , -0.186988391 ), ( 74 , 2.658930116 , -0.233216874 ), ( 74 , 2.683145966 , -0.209667439 ), ( 74 , 2.717024174 , -0.163975905 ), ( 74 , 2.841864305 , -0.082668107 ), ( 74 , 2.77254547 , -0.093580542 ), ( 74 , 2.76306206 , -0.093611292 ), ( 74 , 2.941814559 , -0.145347812 ), ( 74 , 2.892730005 , -0.045996127 ), ( 74 , 3.058393054 , -0.011771957 ), ( 74 , 3.000077502 , 0.016676458 ), ( 74 , 3.003772122 , 0.048563571 ), ( 74 , 3.03793142 , 0.057610397 ), ( 74 , 2.897163243 , 0.063508758 ), ( 74 , 2.906650417 , 0.124618241 ), ( 74 , 2.590551369 , -0.067404479 ), ( 74 , 2.509418973 , -0.093711098 ), ( 74 , 2.55337344 , -0.008115984 ), ( 74 , 2.575245924 , -0.003989861 ), ( 74 , 2.483418796 , -0.04801249 ), ( 74 , 2.489643623 , 0.0219437 ), ( 74 , 2.493728892 , 0.025570001 ), ( 74 , 2.457687999 , 0.0611122 ), ( 74 , 2.55094715 , 0.058529073 ), ( 74 , 2.491896192 , 0.05375343 ), ( 74 , 2.486656639 , 0.098713819 ), ( 74 , 2.531478867 , 0.144480658 ), ( 74 , 2.737985511 , 0.062192738 ), ( 74 , 2.807112527 , 0.08284149 ), ( 74 , 2.785807392 , 0.103210885 ), ( 74 , 2.911303849 , 0.178235278 ), ( 74 , 2.802461346 , 0.180735436 ), ( 74 , 2.640139207 , 0.139468262 ), ( 74 , 2.659548536 , 0.167431787 ), ( 74 , 2.612588849 , 0.182540575 ), ( 74 , 2.646883285 , 0.223087059 ), ( 74 , 2.746385189 , 0.212700923 ), ( 74 , 2.742066591 , 0.274991285 ), ( 74 , 3.162170755 , 0.062359099 ), ( 74 , 3.160416358 , 0.086073818 ), ( 74 , 3.063558271 , 0.08286081 ), ( 74 , 3.228509205 , 0.098990906 ), ( 74 , 3.320060958 , 0.154097913 ), ( 74 , 3.057343296 , 0.151356716 ), ( 74 , 3.457113687 , 0.30573154 ), ( 74 , 3.492513891 , 0.306845399 ), ( 74 , 3.47303542 , 0.373180077 ), ( 74 , 3.368097728 , 0.334618996 ), ( 74 , 3.397651195 , 0.384690888 ), ( 74 , 3.350981572 , 0.420548341 ), ( 74 , 3.023023012 , 0.314201631 ), ( 74 , 3.108923053 , 0.356224665 ), ( 74 , 2.833746345 , 0.299261773 ), ( 74 , 2.912557939 , 0.369149823 ), ( 74 , 2.80355902 , 0.317995426 ), ( 74 , 2.765638585 , 0.354372274 ), ( 74 , 3.018805543 , 0.424314333 ), ( 74 , 2.992197366 , 0.466827248 ), ( 74 , 2.956941077 , 0.44436398 ), ( 74 , 3.176905226 , 0.541916816 ), ( 74 , 3.234032262 , 0.605392721 ), ( 74 , 3.077988811 , 0.475041772 ), ( 74 , 3.191932994 , 0.597915403 ), ( 74 , 3.102184526 , 0.586504989 ), ( 74 , 3.128984804 , 0.703175745 ), ( 74 , 4.713725268 , -0.685047083 ), ( 74 , 4.735229746 , -0.658326642 ), ( 74 , 4.721833463 , -0.63458898 ), ( 74 , 4.759055866 , -0.591996573 ), ( 74 , 4.684381536 , -0.608515342 ), ( 74 , 4.659820879 , -0.593809968 ), ( 74 , 4.724237019 , -0.591478466 ), ( 74 , 4.819789286 , -0.563586982 ), ( 74 , 4.783598751 , -0.54666227 ), ( 74 , 4.767479735 , -0.492816138 ), ( 74 , 4.601787925 , -0.556277829 ), ( 74 , 4.661246867 , -0.570224424 ), ( 74 , 4.622709959 , -0.522897141 ), ( 74 , 4.599068322 , -0.530775762 ), ( 74 , 4.524352312 , -0.529733394 ), ( 74 , 4.71441861 , -0.520533457 ), ( 74 , 4.643874353 , -0.413278035 ), ( 74 , 4.712448346 , -0.393543948 ), ( 74 , 4.920167862 , -0.493575004 ), ( 74 , 4.899861047 , -0.4183113 ), ( 74 , 4.862588601 , -0.345310226 ), ( 74 , 4.786461192 , -0.331056224 ), ( 74 , 4.912609598 , -0.320514615 ), ( 74 , 4.896388699 , -0.296900475 ), ( 74 , 4.953479181 , -0.256404246 ), ( 74 , 4.916468159 , -0.252501405 ), ( 74 , 4.851313726 , -0.264988515 ), ( 74 , 4.923286951 , -0.198834762 ), ( 74 , 4.912471448 , -0.183135029 ), ( 74 , 4.522418873 , -0.441664521 ), ( 74 , 4.551898063 , -0.401594389 ), ( 74 , 4.485220066 , -0.436299749 ), ( 74 , 4.500184239 , -0.356480758 ), ( 74 , 4.456034546 , -0.356688501 ), ( 74 , 4.470182085 , -0.3053116 ), ( 74 , 4.502847956 , -0.255178598 ), ( 74 , 4.442553825 , -0.250847042 ), ( 74 , 4.706730084 , -0.294222188 ), ( 74 , 4.682214499 , -0.238244327 ), ( 74 , 4.736483751 , -0.192339032 ), ( 74 , 4.81413845 , -0.214683692 ), ( 74 , 4.79080127 , -0.224625458 ), ( 74 , 4.861644746 , -0.134605697 ), ( 74 , 4.764847227 , -0.152387669 ), ( 74 , 4.819293874 , -0.142687207 ), ( 74 , 4.561581521 , -0.154086201 ), ( 74 , 4.642636265 , -0.103491729 ), ( 74 , 4.6883805 , -0.060448701 ), ( 74 , 5.145305026 , -0.295095097 ), ( 74 , 5.108486803 , -0.282165232 ), ( 74 , 5.077241116 , -0.275978438 ), ( 74 , 5.194292688 , -0.243019193 ), ( 74 , 5.191395384 , -0.199129395 ), ( 74 , 5.201216379 , -0.180712919 ), ( 74 , 5.297110207 , -0.167866345 ), ( 74 , 5.002185538 , -0.207698782 ), ( 74 , 4.958417626 , -0.197632108 ), ( 74 , 5.108904654 , -0.113715266 ), ( 74 , 5.105430239 , -0.007767462 ), ( 74 , 5.289462083 , -0.141241033 ), ( 74 , 5.315251852 , -0.082533356 ), ( 74 , 5.453428382 , -0.005659044 ), ( 74 , 5.360774614 , 0.015417276 ), ( 74 , 5.186463493 , -0.031879581 ), ( 74 , 5.177452419 , -0.024031307 ), ( 74 , 5.172189965 , -0.026162715 ), ( 74 , 5.138063003 , -0.002253897 ), ( 74 , 5.13951646 , 0.026166578 ), ( 74 , 5.318944183 , 0.038980251 ), ( 74 , 5.304142238 , 0.136293674 ), ( 74 , 4.941150066 , -0.065025914 ), ( 74 , 4.84827978 , -0.101047633 ), ( 74 , 4.883523442 , -0.034077946 ), ( 74 , 4.902730558 , -0.027210536 ), ( 74 , 4.972554714 , -0.049487984 ), ( 74 , 5.052526683 , -0.016470216 ), ( 74 , 4.977493399 , -0.00794309 ), ( 74 , 4.955765729 , 0.004627191 ), ( 74 , 4.980990527 , 0.045181004 ), ( 74 , 4.99913096 , 0.074675312 ), ( 74 , 4.85101524 , -0.042209317 ), ( 74 , 4.821269499 , -0.027564045 ), ( 74 , 4.770281753 , -0.030013609 ), ( 74 , 4.974111046 , 0.080472267 ), ( 74 , 4.973577364 , 0.107465109 ), ( 74 , 4.956771008 , 0.124376948 ), ( 74 , 4.873791594 , 0.111973441 ), ( 74 , 5.112241305 , 0.087636943 ), ( 74 , 5.022576058 , 0.090403945 ), ( 74 , 5.236586923 , 0.135448795 ), ( 74 , 5.200130713 , 0.14087775 ), ( 74 , 5.220979892 , 0.144091724 ), ( 74 , 5.040630073 , 0.178240657 ), ( 74 , 4.990593304 , 0.163534703 ), ( 74 , 5.015059808 , 0.178742778 ), ( 74 , 5.015937292 , 0.19399457 ), ( 74 , 4.983840923 , 0.191373794 ), ( 74 , 4.991639108 , 0.197268932 ), ( 74 , 5.100725255 , 0.224417074 ), ( 74 , 5.153682515 , 0.229869979 ), ( 74 , 5.150360362 , 0.285069843 ), ( 74 , 5.04413884 , 0.282065318 ), ( 74 , 4.374621165 , -0.195037297 ), ( 74 , 4.32849193 , -0.169225831 ), ( 74 , 4.457489815 , -0.117573628 ), ( 74 , 4.251087653 , -0.181768762 ), ( 74 , 4.286045201 , -0.152571431 ), ( 74 , 4.334472322 , -0.074391741 ), ( 74 , 4.368280602 , -0.049922817 ), ( 74 , 4.250345397 , -0.072580089 ), ( 74 , 4.586014874 , -0.049337302 ), ( 74 , 4.588092728 , 0.029185415 ), ( 74 , 4.590424675 , 0.049281658 ), ( 74 , 4.474113132 , 0.060015231 ), ( 74 , 4.487047087 , 0.077197369 ), ( 74 , 4.244472873 , -0.030053413 ), ( 74 , 4.033236713 , -0.00949542 ), ( 74 , 4.117987053 , 0.042583993 ), ( 74 , 4.121165182 , 0.058811994 ), ( 74 , 4.135578009 , 0.075018361 ), ( 74 , 4.084317767 , 0.107922418 ), ( 74 , 4.346072425 , 0.024099058 ), ( 74 , 4.286182361 , 0.05384133 ), ( 74 , 4.328698884 , 0.058680546 ), ( 74 , 4.32170654 , 0.07275489 ), ( 74 , 4.411240949 , 0.095799134 ), ( 74 , 4.411542312 , 0.172420489 ), ( 74 , 4.207674613 , 0.104912209 ), ( 74 , 4.204753904 , 0.19955049 ), ( 74 , 4.221188421 , 0.232768562 ), ( 74 , 4.737661446 , 0.034648873 ), ( 74 , 4.850782675 , 0.126217503 ), ( 74 , 4.765496408 , 0.143583009 ), ( 74 , 4.771887992 , 0.188951245 ), ( 74 , 4.791808355 , 0.198902756 ), ( 74 , 4.796322965 , 0.218757824 ), ( 74 , 4.786530985 , 0.210620642 ), ( 74 , 4.626576592 , 0.114571683 ), ( 74 , 4.635485871 , 0.164926869 ), ( 74 , 4.545892433 , 0.169922269 ), ( 74 , 4.649260808 , 0.227233897 ), ( 74 , 4.705157206 , 0.253255225 ), ( 74 , 4.677370541 , 0.267496779 ), ( 74 , 4.677369205 , 0.267500632 ), ( 74 , 4.704166658 , 0.264241859 ), ( 74 , 4.696710758 , 0.31986547 ), ( 74 , 4.913179619 , 0.171362662 ), ( 74 , 4.931642765 , 0.201109345 ), ( 74 , 4.894897957 , 0.213900022 ), ( 74 , 4.983270082 , 0.251848187 ), ( 74 , 4.948559491 , 0.261905853 ), ( 74 , 4.970723185 , 0.264065054 ), ( 74 , 4.852790354 , 0.239763133 ), ( 74 , 4.843246577 , 0.278282373 ), ( 74 , 4.886512463 , 0.307228297 ), ( 74 , 4.901375102 , 0.305251772 ), ( 74 , 5.023004002 , 0.275544383 ), ( 74 , 5.001810709 , 0.276833473 ), ( 74 , 5.040278813 , 0.282693103 ), ( 74 , 5.007144866 , 0.323976076 ), ( 74 , 5.075432205 , 0.353929002 ), ( 74 , 5.067077589 , 0.36586908 ), ( 74 , 4.979194288 , 0.351814681 ), ( 74 , 4.950060968 , 0.355348601 ), ( 74 , 4.81874751 , 0.2732374 ), ( 74 , 4.859696367 , 0.309484688 ), ( 74 , 4.75921273 , 0.322963282 ), ( 74 , 4.812494693 , 0.365885216 ), ( 74 , 4.823602733 , 0.384557268 ), ( 74 , 4.961668185 , 0.455458724 ), ( 74 , 4.933267532 , 0.497855577 ), ( 74 , 4.570783284 , 0.287229705 ), ( 74 , 4.449950924 , 0.31077656 ), ( 74 , 4.399986148 , 0.299033249 ), ( 74 , 4.462114453 , 0.361730331 ), ( 74 , 4.373944986 , 0.376867342 ), ( 74 , 4.515819929 , 0.343504068 ), ( 74 , 4.545828767 , 0.413404128 ), ( 74 , 4.477014374 , 0.407046862 ), ( 74 , 4.67982459 , 0.474616089 ), ( 74 , 4.713562227 , 0.501253142 ), ( 74 , 4.839762785 , 0.51581739 ), ( 74 , 4.736150124 , 0.500656152 ), ( 74 , 4.748195017 , 0.541032656 ), ( 74 , 4.708289743 , 0.52445335 ), ( 74 , 4.63830894 , 0.517539328 ), ( 74 , 4.718545959 , 0.534863108 ), ( 74 , 4.692416371 , 0.56615683 ), ( 74 , 4.699922907 , 0.643342641 ), ( 74 , 1.20766019 , -1.457280995 ), ( 74 , 0.033271758 , -1.501658668 ), ( 74 , 0.449128248 , -1.455034479 ), ( 74 , 0.643481968 , -1.321914501 ), ( 74 , 0.050657983 , -1.39929387 ), ( 74 , 0.572884819 , -1.300293346 ), ( 74 , 1.28049049 , -1.269986686 ), ( 74 , 1.120389349 , -1.216957457 ), ( 74 , 1.295235657 , -1.237876192 ), ( 74 , 1.257094861 , -1.107941852 ), ( 74 , 1.253865904 , -1.072963602 ), ( 74 , 0.869006765 , -1.147169082 ), ( 74 , 1.106818912 , -1.012668204 ), ( 74 , 0.019678372 , -1.272302774 ), ( 74 , 0.357690917 , -1.216821853 ), ( 74 , 0.644810855 , -1.213418403 ), ( 74 , 0.609914443 , -1.188294098 ), ( 74 , 0.696285869 , -1.168628109 ), ( 74 , 0.521873766 , -1.142277651 ), ( 74 , 0.543665443 , -1.136840485 ), ( 74 , 0.252492053 , -1.161707303 ), ( 74 , 0.245977167 , -1.11626649 ), ( 74 , 0.430240369 , -1.145051395 ), ( 74 , 0.723534575 , -1.094746759 ), ( 74 , 0.820912277 , -1.067263389 ), ( 74 , 0.798196909 , -1.06111961 ), ( 74 , 0.921903545 , -0.964278108 ), ( 74 , 0.998553948 , -0.959926363 ), ( 74 , 0.592218879 , -0.911171007 ), ( 74 , 0.841696473 , -0.823016371 ), ( 74 , 1.544912109 , -1.047614464 ), ( 74 , 1.367069658 , -1.039963283 ), ( 74 , 1.528367801 , -0.960854012 ), ( 74 , 1.476671756 , -0.959132117 ), ( 74 , 1.223028316 , -1.028744296 ), ( 74 , 1.152737814 , -0.996100764 ), ( 74 , 1.236986151 , -0.917100461 ), ( 74 , 1.139099206 , -0.851914991 ), ( 74 , 1.323235893 , -0.863800422 ), ( 74 , 1.274235689 , -0.817730879 ), ( 74 , 1.204615604 , -0.787776394 ), ( 74 , 1.46028857 , -0.854299662 ), ( 74 , 1.528872809 , -0.854972161 ), ( 74 , 1.447447821 , -0.855532339 ), ( 74 , 1.262478677 , -0.740257994 ), ( 74 , 1.356916131 , -0.609184524 ), ( 74 , 1.047334324 , -0.739846715 ), ( 74 , 1.002786677 , -0.745735246 ), ( 74 , 1.018638042 , -0.719463819 ), ( 74 , 0.892630795 , -0.796982819 ), ( 74 , 0.843269175 , -0.722214365 ), ( 74 , 0.890576148 , -0.719638005 ), ( 74 , 0.905750526 , -0.696047445 ), ( 74 , 0.998257911 , -0.705092786 ), ( 74 , 1.006793759 , -0.680358559 ), ( 74 , 0.898775446 , -0.62759156 ), ( 74 , 0.973752934 , -0.541388732 ), ( 74 , 1.179421767 , -0.668018789 ), ( 74 , 1.198733157 , -0.607703711 ), ( 74 , 1.241299246 , -0.487798955 ), ( 74 , 1.108532803 , -0.525564285 ), ( 74 , 1.191900844 , -0.446105289 ), ( 74 , 0.055987156 , -1.010761474 ), ( 74 , 0.107857361 , -0.942201926 ), ( 74 , 0.264714596 , -0.917741635 ), ( 74 , 0.428784802 , -0.83661818 ), ( 74 , 0.640343622 , -0.802849196 ), ( 74 , 0.569421656 , -0.793197471 ), ( 74 , 0.540763283 , -0.792598416 ), ( 74 , 0.690309491 , -0.73136178 ), ( 74 , 0.746580305 , -0.714942567 ), ( 74 , 0.676296609 , -0.735011359 ), ( 74 , 0.525641592 , -0.729123376 ), ( 74 , 0.550823182 , -0.690085159 ), ( 74 , 0.646952273 , -0.634265311 ), ( 74 , 0.020237801 , -0.900297247 ), ( 74 , 0.279422294 , -0.70739597 ), ( 74 , 0.320473387 , -0.690100302 ), ( 74 , 0.06431954 , -0.803432293 ), ( 74 , 0.043405395 , -0.779574092 ), ( 74 , 0.166270493 , -0.725922003 ), ( 74 , 0.147485502 , -0.696814795 ), ( 74 , 0.146357629 , -0.665205443 ), ( 74 , 0.208080139 , -0.547213135 ), ( 74 , 0.441585131 , -0.582908902 ), ( 74 , 0.422430578 , -0.563691963 ), ( 74 , 0.231425775 , -0.529824253 ), ( 74 , 0.342183884 , -0.401661113 ), ( 74 , 0.375612657 , -0.397906511 ), ( 74 , 0.790090644 , -0.577874496 ), ( 74 , 0.911556047 , -0.587396487 ), ( 74 , 0.933340379 , -0.534560879 ), ( 74 , 0.814446698 , -0.523384469 ), ( 74 , 0.733689253 , -0.548446745 ), ( 74 , 0.671287919 , -0.522424525 ), ( 74 , 0.694170701 , -0.485588278 ), ( 74 , 0.693377238 , -0.449352063 ), ( 74 , 0.963509079 , -0.488168385 ), ( 74 , 0.989154188 , -0.442564152 ), ( 74 , 1.090739863 , -0.33166476 ), ( 74 , 1.130172617 , -0.311556257 ), ( 74 , 1.004573732 , -0.327180449 ), ( 74 , 0.890683527 , -0.365324202 ), ( 74 , 0.94429573 , -0.338186931 ), ( 74 , 0.852983357 , -0.317215495 ), ( 74 , 1.025281076 , -0.260159101 ), ( 74 , 0.909569698 , -0.230550359 ), ( 74 , 0.619776841 , -0.486270561 ), ( 74 , 0.581337217 , -0.399173939 ), ( 74 , 0.735838775 , -0.363397374 ), ( 74 , 0.518848435 , -0.368826778 ), ( 74 , 0.447660601 , -0.35207848 ), ( 74 , 0.468022905 , -0.305146594 ), ( 74 , 0.618843693 , -0.249316805 ), ( 74 , 0.651851346 , -0.225334184 ), ( 74 , 0.70469632 , -0.263561908 ), ( 74 , 0.856324542 , -0.209195337 ), ( 74 , 0.976347298 , -0.167604388 ), ( 74 , 0.926138619 , -0.123751597 ), ( 74 , 0.849572119 , -0.116979248 ), ( 74 , 0.751523035 , -0.144289366 ), ( 74 , 2.429346438 , -1.477599288 ), ( 74 , 2.640751236 , -1.379888624 ), ( 74 , 2.276522833 , -1.379646802 ), ( 74 , 2.445301902 , -1.321446944 ), ( 74 , 2.277953511 , -1.302175573 ), ( 74 , 2.133435583 , -1.251781674 ), ( 74 , 2.324854449 , -1.218772423 ), ( 74 , 2.886238389 , -1.320590777 ), ( 74 , 2.88862317 , -1.282605129 ), ( 74 , 2.853612198 , -1.259347331 ), ( 74 , 2.74945319 , -1.237227141 ), ( 74 , 2.888727571 , -1.252222263 ), ( 74 , 2.866909328 , -1.198469735 ), ( 74 , 2.72372928 , -1.220293244 ), ( 74 , 2.950177238 , -1.190284859 ), ( 74 , 3.045872008 , -1.145911482 ), ( 74 , 2.842044884 , -1.16613898 ), ( 74 , 2.80122585 , -1.10841034 ), ( 74 , 2.845064598 , -1.07214099 ), ( 74 , 2.61012839 , -1.257765185 ), ( 74 , 2.643520953 , -1.192022406 ), ( 74 , 2.400382583 , -1.143000158 ), ( 74 , 2.507083129 , -1.117547253 ), ( 74 , 2.734666399 , -1.123147647 ), ( 74 , 2.751342671 , -1.070523255 ), ( 74 , 2.67764352 , -1.05179046 ), ( 74 , 2.61791126 , -1.055866111 ), ( 74 , 1.988242596 , -1.230870575 ), ( 74 , 1.80036025 , -1.230629004 ), ( 74 , 2.129018873 , -1.197563419 ), ( 74 , 2.305498838 , -1.141976378 ), ( 74 , 2.231228349 , -1.143587311 ), ( 74 , 2.105342598 , -1.152298613 ), ( 74 , 2.232438802 , -1.088020683 ), ( 74 , 1.880569187 , -1.186149979 ), ( 74 , 1.706140362 , -1.16711177 ), ( 74 , 1.73845778 , -1.153406577 ), ( 74 , 1.630498486 , -1.16377942 ), ( 74 , 2.060020085 , -1.122145465 ), ( 74 , 2.067807062 , -1.057383815 ), ( 74 , 2.084392123 , -1.003199556 ), ( 74 , 2.095301585 , -0.96369507 ), ( 74 , 2.372883521 , -1.12896809 ), ( 74 , 2.430048256 , -1.11308516 ), ( 74 , 2.29821891 , -1.102906254 ), ( 74 , 2.311075815 , -1.102732079 ), ( 74 , 2.450316676 , -1.061692956 ), ( 74 , 2.404473899 , -1.063841681 ), ( 74 , 2.38963831 , -1.032966709 ), ( 74 , 2.52428618 , -1.0327991 ), ( 74 , 2.501452195 , -1.011644382 ), ( 74 , 2.555646392 , -0.912548957 ), ( 74 , 2.479887109 , -0.866643938 ), ( 74 , 2.238785892 , -0.984306298 ), ( 74 , 2.211272231 , -0.966264313 ), ( 74 , 2.334401193 , -0.954682396 ), ( 74 , 2.269146516 , -0.939892406 ), ( 74 , 2.278373523 , -0.924457584 ), ( 74 , 2.115564287 , -0.959742667 ), ( 74 , 2.234373659 , -0.928720952 ), ( 74 , 2.254795237 , -0.916586528 ), ( 74 , 2.269532708 , -0.906550023 ), ( 74 , 2.217712234 , -0.903563004 ), ( 74 , 2.212303825 , -0.892330481 ), ( 74 , 2.256538423 , -0.862632135 ), ( 74 , 2.338026447 , -0.900376765 ), ( 74 , 2.342997595 , -0.867096882 ), ( 74 , 2.327273355 , -0.773759901 ), ( 74 , 2.343652845 , -0.75496218 ), ( 74 , 3.105879706 , -1.127407487 ), ( 74 , 3.028638621 , -1.041637871 ), ( 74 , 3.050623024 , -1.022723233 ), ( 74 , 2.918289693 , -1.074415323 ), ( 74 , 2.915189961 , -1.061608968 ), ( 74 , 2.968603787 , -1.066343644 ), ( 74 , 2.911348229 , -1.044982623 ), ( 74 , 2.909940324 , -1.026137539 ), ( 74 , 2.863521101 , -1.013221191 ), ( 74 , 2.98140309 , -1.02603303 ), ( 74 , 3.133295406 , -1.040089179 ), ( 74 , 3.119917799 , -0.979083752 ), ( 74 , 3.058700369 , -0.952055983 ), ( 74 , 2.954165991 , -0.970797432 ), ( 74 , 2.926266489 , -0.866611877 ), ( 74 , 2.813252886 , -1.039608297 ), ( 74 , 2.846669883 , -1.016693569 ), ( 74 , 2.830236901 , -1.006581079 ), ( 74 , 2.849853281 , -1.009183423 ), ( 74 , 2.773890694 , -1.016566788 ), ( 74 , 2.771027575 , -0.967089763 ), ( 74 , 2.748531179 , -0.95955267 ), ( 74 , 2.679521619 , -0.959820894 ), ( 74 , 2.714633244 , -0.860334386 ), ( 74 , 2.865298997 , -0.883278149 ), ( 74 , 2.79615233 , -0.838195976 ), ( 74 , 2.778278277 , -0.824754754 ), ( 74 , 2.715577392 , -0.837260127 ), ( 74 , 2.749117561 , -0.752755715 ), ( 74 , 3.098278456 , -0.902347291 ), ( 74 , 3.074574875 , -0.857719713 ), ( 74 , 2.974365962 , -0.85124866 ), ( 74 , 2.965047112 , -0.827219932 ), ( 74 , 3.01575085 , -0.784834803 ), ( 74 , 2.957699134 , -0.794227675 ), ( 74 , 2.974160028 , -0.760226536 ), ( 74 , 2.943225029 , -0.747928917 ), ( 74 , 3.029310853 , -0.718285927 ), ( 74 , 2.907423951 , -0.774470997 ), ( 74 , 2.821434417 , -0.743691813 ), ( 74 , 2.94737059 , -0.716582611 ), ( 74 , 2.963476118 , -0.706855687 ), ( 74 , 2.92593383 , -0.568347563 ), ( 74 , 2.631831862 , -0.908374048 ), ( 74 , 2.585728111 , -0.902562528 ), ( 74 , 2.606488055 , -0.864915506 ), ( 74 , 2.525517787 , -0.881531393 ), ( 74 , 2.669745401 , -0.713389743 ), ( 74 , 2.594655629 , -0.756096381 ), ( 74 , 2.466399454 , -0.819304235 ), ( 74 , 2.438490669 , -0.785537598 ), ( 74 , 2.392340506 , -0.723026525 ), ( 74 , 2.501381709 , -0.674344902 ), ( 74 , 2.493696484 , -0.641416421 ), ( 74 , 2.535814127 , -0.628808171 ), ( 74 , 2.479425651 , -0.60919236 ), ( 74 , 2.582776362 , -0.575609607 ), ( 74 , 2.745033586 , -0.664258076 ), ( 74 , 2.835818992 , -0.624906396 ), ( 74 , 2.691566294 , -0.595633213 ), ( 74 , 2.933533348 , -0.519802577 ), ( 74 , 2.85351063 , -0.466806628 ), ( 74 , 2.688072354 , -0.499400506 ), ( 74 , 2.636736225 , -0.495306068 ), ( 74 , 2.775394942 , -0.465580989 ), ( 74 , 2.800715963 , -0.454600946 ), ( 74 , 2.791250742 , -0.393233644 ), ( 74 , 2.747355737 , -0.388284186 ), ( 74 , 1.721604173 , -1.073301408 ), ( 74 , 1.846794451 , -1.032851526 ), ( 74 , 1.841507152 , -1.000349553 ), ( 74 , 1.982988301 , -0.943614064 ), ( 74 , 2.044483737 , -0.919509981 ), ( 74 , 2.036204315 , -0.89006395 ), ( 74 , 1.744121536 , -0.932903674 ), ( 74 , 1.593738038 , -0.949603971 ), ( 74 , 1.64784497 , -0.942103105 ), ( 74 , 1.729880139 , -0.878280238 ), ( 74 , 1.849643927 , -0.884208089 ), ( 74 , 1.903845493 , -0.873509076 ), ( 74 , 1.962429176 , -0.814883809 ), ( 74 , 2.124948734 , -0.906510274 ), ( 74 , 2.180520432 , -0.864577714 ), ( 74 , 2.177951879 , -0.806433768 ), ( 74 , 2.069996679 , -0.875643068 ), ( 74 , 2.089327825 , -0.832223444 ), ( 74 , 2.074328298 , -0.825768947 ), ( 74 , 2.127900134 , -0.824752512 ), ( 74 , 2.155867316 , -0.818863314 ), ( 74 , 2.137458055 , -0.759712559 ), ( 74 , 2.243554772 , -0.796507915 ), ( 74 , 2.239093446 , -0.762420326 ), ( 74 , 2.30974204 , -0.756960121 ), ( 74 , 2.303385119 , -0.756669496 ), ( 74 , 2.311124405 , -0.747409772 ), ( 74 , 2.289651882 , -0.744135582 ), ( 74 , 2.289312904 , -0.720422823 ), ( 74 , 2.308357033 , -0.68791587 ), ( 74 , 2.198221235 , -0.733629753 ), ( 74 , 2.19098403 , -0.715430942 ), ( 74 , 2.257204576 , -0.710196837 ), ( 74 , 2.253164422 , -0.671165147 ), ( 74 , 2.07663295 , -0.778772858 ), ( 74 , 2.07596286 , -0.765236357 ), ( 74 , 2.060538491 , -0.738666889 ), ( 74 , 2.070209565 , -0.727076914 ), ( 74 , 2.097434582 , -0.701567903 ), ( 74 , 1.982923764 , -0.7400009 ), ( 74 , 2.086018217 , -0.655894753 ), ( 74 , 2.024760184 , -0.677499171 ), ( 74 , 2.199773708 , -0.619749838 ), ( 74 , 2.125569458 , -0.634963164 ), ( 74 , 2.100903227 , -0.617477625 ), ( 74 , 2.13035225 , -0.581892759 ), ( 74 , 1.778886703 , -0.825539316 ), ( 74 , 1.768115038 , -0.81774411 ), ( 74 , 1.591625716 , -0.845759631 ), ( 74 , 1.711850806 , -0.790813261 ), ( 74 , 1.713085606 , -0.771801003 ), ( 74 , 1.742913072 , -0.757949992 ), ( 74 , 1.802024082 , -0.743990808 ), ( 74 , 1.795214167 , -0.70773691 ), ( 74 , 1.853057902 , -0.706577282 ), ( 74 , 1.597827859 , -0.799646522 ), ( 74 , 1.609083987 , -0.764665937 ), ( 74 , 1.572091478 , -0.768047343 ), ( 74 , 1.612932612 , -0.732694152 ), ( 74 , 1.797826223 , -0.591929929 ), ( 74 , 1.728784448 , -0.630742004 ), ( 74 , 1.789747626 , -0.591415906 ), ( 74 , 1.995754989 , -0.635615973 ), ( 74 , 1.874096665 , -0.628156683 ), ( 74 , 1.9603743 , -0.596403379 ), ( 74 , 2.068568547 , -0.593799599 ), ( 74 , 2.087297298 , -0.586593134 ), ( 74 , 2.112203273 , -0.509169729 ), ( 74 , 2.007447334 , -0.526549261 ), ( 74 , 2.077939576 , -0.491873902 ), ( 74 , 1.886706031 , -0.558188681 ), ( 74 , 1.872494822 , -0.557344792 ), ( 74 , 1.87845589 , -0.535161252 ), ( 74 , 1.791766888 , -0.545872101 ), ( 74 , 1.874990303 , -0.486655665 ), ( 74 , 1.944113749 , -0.464702758 ), ( 74 , 1.927226697 , -0.422938338 ), ( 74 , 1.905049658 , -0.415856676 ), ( 74 , 1.948860168 , -0.402857112 ), ( 74 , 1.921521328 , -0.38544846 ), ( 74 , 1.965446177 , -0.363166221 ), ( 74 , 2.346285828 , -0.676184065 ), ( 74 , 2.373523849 , -0.641210084 ), ( 74 , 2.406093498 , -0.623917637 ), ( 74 , 2.296674992 , -0.591699065 ), ( 74 , 2.334499073 , -0.595919062 ), ( 74 , 2.455782108 , -0.620009094 ), ( 74 , 2.475029539 , -0.589775124 ), ( 74 , 2.412635071 , -0.5422064 ), ( 74 , 2.426558498 , -0.504160468 ), ( 74 , 2.31127694 , -0.493158266 ), ( 74 , 2.190880142 , -0.499582517 ), ( 74 , 2.250489899 , -0.497048721 ), ( 74 , 2.217494476 , -0.481094932 ), ( 74 , 2.368591659 , -0.492121259 ), ( 74 , 2.364085362 , -0.463585585 ), ( 74 , 2.401903884 , -0.458792851 ), ( 74 , 2.295839817 , -0.464480626 ), ( 74 , 2.332170807 , -0.410529738 ), ( 74 , 2.564189171 , -0.495321412 ), ( 74 , 2.654436167 , -0.344833316 ), ( 74 , 2.695072178 , -0.376790135 ), ( 74 , 2.714095706 , -0.359114456 ), ( 74 , 2.730783778 , -0.354741885 ), ( 74 , 2.665781862 , -0.295498888 ), ( 74 , 2.464473398 , -0.415851423 ), ( 74 , 2.422669491 , -0.34201511 ), ( 74 , 2.427883632 , -0.339623811 ), ( 74 , 2.465274975 , -0.300524075 ), ( 74 , 2.483980759 , -0.239752512 ), ( 74 , 2.499812443 , -0.244359855 ), ( 74 , 2.18040487 , -0.472666201 ), ( 74 , 2.238736176 , -0.429473622 ), ( 74 , 2.100403527 , -0.43552281 ), ( 74 , 2.241663023 , -0.407611212 ), ( 74 , 2.229984828 , -0.354372781 ), ( 74 , 2.16415949 , -0.338738551 ), ( 74 , 2.142634448 , -0.33116015 ), ( 74 , 2.079827351 , -0.288533484 ), ( 74 , 2.079275539 , -0.270950543 ), ( 74 , 2.098920117 , -0.246758909 ), ( 74 , 2.129444327 , -0.235764207 ), ( 74 , 2.352847313 , -0.288024311 ), ( 74 , 2.392869394 , -0.264350712 ), ( 74 , 2.309320464 , -0.271661449 ), ( 74 , 2.38991082 , -0.209798639 ), ( 74 , 2.453857574 , -0.105778456 ), ( 74 , 2.259696107 , -0.221760035 ), ( 74 , 2.309819589 , -0.189962398 ), ( 74 , 2.201992761 , -0.201141126 ), ( 74 , 2.224612717 , -0.182670841 ), ( 74 , 2.360712007 , -0.16091561 ), ( 74 , 2.41156631 , -0.052940762 ), ( 74 , 2.311329493 , -0.099387643 ), ( 74 , 2.363319799 , -0.025768327 ), ( 74 , 3.822730174 , -1.468666641 ), ( 74 , 3.678717763 , -1.447234435 ), ( 74 , 3.90803905 , -1.376771135 ), ( 74 , 4.704335017 , -1.42164445 ), ( 74 , 4.262870669 , -1.410232199 ), ( 74 , 4.348749772 , -1.349941338 ), ( 74 , 4.224544325 , -1.348948457 ), ( 74 , 3.190254442 , -1.462205297 ), ( 74 , 3.782710188 , -1.335514411 ), ( 74 , 3.596964294 , -1.285205575 ), ( 74 , 4.015785721 , -1.318842452 ), ( 74 , 4.097637607 , -1.261833752 ), ( 74 , 3.97292478 , -1.250786415 ), ( 74 , 3.821912118 , -1.221217805 ), ( 74 , 4.672807865 , -1.327480314 ), ( 74 , 4.548838633 , -1.229452207 ), ( 74 , 4.228964283 , -1.240446317 ), ( 74 , 4.316409588 , -1.241351733 ), ( 74 , 4.374974707 , -1.231865164 ), ( 74 , 4.700546591 , -1.240843371 ), ( 74 , 4.650160504 , -1.198124334 ), ( 74 , 4.484770795 , -1.172652876 ), ( 74 , 4.512220441 , -1.151271154 ), ( 74 , 4.44489093 , -1.077604318 ), ( 74 , 4.400437078 , -1.073187931 ), ( 74 , 4.247544974 , -1.134215048 ), ( 74 , 4.218247674 , -1.126813017 ), ( 74 , 4.105627374 , -1.102954734 ), ( 74 , 4.234376785 , -1.098212985 ), ( 74 , 3.385320629 , -1.274659698 ), ( 74 , 3.600366745 , -1.248488474 ), ( 74 , 3.339807423 , -1.251599679 ), ( 74 , 3.527252086 , -1.184547549 ), ( 74 , 3.469557057 , -1.184738065 ), ( 74 , 3.876871794 , -1.161103118 ), ( 74 , 3.739596912 , -1.157460355 ), ( 74 , 3.838164851 , -1.12947157 ), ( 74 , 3.662377596 , -1.184042967 ), ( 74 , 3.758171835 , -1.121229499 ), ( 74 , 3.773184698 , -1.111906601 ), ( 74 , 3.73123725 , -1.08066369 ), ( 74 , 3.337954727 , -1.204799914 ), ( 74 , 3.270389439 , -1.166935598 ), ( 74 , 3.204581516 , -1.161073149 ), ( 74 , 3.632669529 , -1.105773492 ), ( 74 , 3.554900682 , -1.105412371 ), ( 74 , 3.9339587 , -1.115738732 ), ( 74 , 3.883432488 , -1.087877529 ), ( 74 , 4.010580141 , -1.049531746 ), ( 74 , 3.990338914 , -1.042580063 ), ( 74 , 3.853147145 , -1.085725123 ), ( 74 , 3.853494863 , -1.01694239 ), ( 74 , 3.852225022 , -1.013802943 ), ( 74 , 3.930264557 , -1.04391768 ), ( 74 , 4.076991907 , -0.996116115 ), ( 74 , 4.022990941 , -0.997374101 ), ( 74 , 4.023988637 , -0.935583688 ), ( 74 , 4.04865977 , -0.937273988 ), ( 74 , 4.062493551 , -0.918881353 ), ( 74 , 3.761402648 , -1.017373931 ), ( 74 , 3.886556261 , -0.960092771 ), ( 74 , 3.870597159 , -0.938556345 ), ( 74 , 3.726811142 , -0.941291206 ), ( 74 , 3.75555412 , -0.913263412 ), ( 74 , 3.92339595 , -0.852185654 ), ( 74 , 4.523229308 , -1.063889359 ), ( 74 , 4.499748781 , -0.989273311 ), ( 74 , 4.603094877 , -0.993347297 ), ( 74 , 4.624119541 , -0.948699137 ), ( 74 , 4.598289707 , -0.920779119 ), ( 74 , 4.395699591 , -1.041429865 ), ( 74 , 4.367334845 , -1.027457817 ), ( 74 , 4.245716015 , -0.948766144 ), ( 74 , 4.316975605 , -0.900040615 ), ( 74 , 4.346247071 , -0.894303435 ), ( 74 , 4.409595621 , -0.873437202 ), ( 74 , 4.392329982 , -0.821878568 ), ( 74 , 4.396072878 , -0.79343651 ), ( 74 , 4.712206381 , -0.915833925 ), ( 74 , 4.694881588 , -0.854153797 ), ( 74 , 4.53092519 , -0.834574496 ), ( 74 , 4.532184974 , -0.816799856 ), ( 74 , 4.540592106 , -0.803658817 ), ( 74 , 4.695909178 , -0.815106318 ), ( 74 , 4.658217877 , -0.7940462 ), ( 74 , 4.620686444 , -0.753051588 ), ( 74 , 4.570776292 , -0.759986934 ), ( 74 , 4.600098273 , -0.716044492 ), ( 74 , 4.625830179 , -0.684256876 ), ( 74 , 4.476818663 , -0.774449407 ), ( 74 , 4.465292011 , -0.699669327 ), ( 74 , 4.441313867 , -0.663165229 ), ( 74 , 4.38387331 , -0.687556396 ), ( 74 , 4.418034595 , -0.670836761 ), ( 74 , 4.529997634 , -0.692737892 ), ( 74 , 4.463702711 , -0.658333749 ), ( 74 , 4.164906247 , -0.894267753 ), ( 74 , 4.153999666 , -0.794215586 ), ( 74 , 4.282933585 , -0.784434055 ), ( 74 , 4.220317164 , -0.734255871 ), ( 74 , 4.201586316 , -0.758200105 ), ( 74 , 4.14187603 , -0.729397601 ), ( 74 , 4.217219594 , -0.705989068 ), ( 74 , 4.197432405 , -0.655101218 ), ( 74 , 4.100478392 , -0.74643384 ), ( 74 , 4.089225593 , -0.715913866 ), ( 74 , 3.990330306 , -0.757248211 ), ( 74 , 4.040933427 , -0.696195988 ), ( 74 , 4.152078209 , -0.65339959 ), ( 74 , 4.113164654 , -0.561753289 ), ( 74 , 4.12237733 , -0.535573703 ), ( 74 , 4.375441679 , -0.651761258 ), ( 74 , 4.366710529 , -0.648459039 ), ( 74 , 4.268351969 , -0.609377594 ), ( 74 , 4.443299323 , -0.586590251 ), ( 74 , 4.461315077 , -0.563043066 ), ( 74 , 4.484352246 , -0.542413283 ), ( 74 , 4.425902337 , -0.450812415 ), ( 74 , 4.230409204 , -0.569832891 ), ( 74 , 4.176689536 , -0.48246014 ), ( 74 , 4.224216965 , -0.483988007 ), ( 74 , 4.319628117 , -0.43891547 ), ( 74 , 3.230010057 , -1.128316385 ), ( 74 , 3.241959487 , -1.129758703 ), ( 74 , 3.26501151 , -1.078034313 ), ( 74 , 3.41029024 , -1.058915926 ), ( 74 , 3.390275552 , -1.042703542 ), ( 74 , 3.434106196 , -1.02634962 ), ( 74 , 3.16246065 , -1.082048872 ), ( 74 , 3.249393316 , -1.062977934 ), ( 74 , 3.26606042 , -1.062826583 ), ( 74 , 3.527300832 , -0.97354575 ), ( 74 , 3.641584734 , -0.96118751 ), ( 74 , 3.649188548 , -0.94478212 ), ( 74 , 3.573128122 , -0.960358875 ), ( 74 , 3.508734176 , -0.938868512 ), ( 74 , 3.183674633 , -1.018394848 ), ( 74 , 3.1900083 , -0.984390664 ), ( 74 , 3.281346676 , -0.982417577 ), ( 74 , 3.39538929 , -0.945721085 ), ( 74 , 3.358336649 , -0.931339598 ), ( 74 , 3.152565904 , -0.987166414 ), ( 74 , 3.28676892 , -0.88401563 ), ( 74 , 3.802570166 , -0.833029294 ), ( 74 , 3.740051729 , -0.818746113 ), ( 74 , 3.812934006 , -0.810969946 ), ( 74 , 3.803875166 , -0.782025114 ), ( 74 , 3.841964414 , -0.708745601 ), ( 74 , 3.81765925 , -0.649337059 ), ( 74 , 3.598177188 , -0.824094459 ), ( 74 , 3.615713252 , -0.819847235 ), ( 74 , 3.594792132 , -0.793035 ), ( 74 , 3.639742979 , -0.64339865 ), ( 74 , 3.725262289 , -0.639162544 ), ( 74 , 3.816739835 , -0.618960614 ), ( 74 , 3.751320269 , -0.643299615 ), ( 74 , 3.696316277 , -0.619451137 ), ( 74 , 3.729420248 , -0.54193985 ), ( 74 , 3.196547891 , -0.921142499 ), ( 74 , 3.228551683 , -0.843284507 ), ( 74 , 3.284408356 , -0.79342748 ), ( 74 , 3.476566044 , -0.720524296 ), ( 74 , 3.375266628 , -0.75180241 ), ( 74 , 3.331409204 , -0.721200266 ), ( 74 , 3.505434305 , -0.691638751 ), ( 74 , 3.509788076 , -0.663809079 ), ( 74 , 3.531433105 , -0.620839664 ), ( 74 , 3.468424734 , -0.604438651 ), ( 74 , 3.62309494 , -0.542231343 ), ( 74 , 3.433637907 , -0.595550946 ), ( 74 , 3.44271836 , -0.584713146 ), ( 74 , 3.389202722 , -0.477903126 ), ( 74 , 3.584265981 , -0.463059547 ), ( 74 , 3.493940319 , -0.414754595 ), ( 74 , 3.863035024 , -0.630898619 ), ( 74 , 4.049323947 , -0.585479715 ), ( 74 , 4.042412294 , -0.546653746 ), ( 74 , 3.847443468 , -0.518322389 ), ( 74 , 3.77523251 , -0.490979349 ), ( 74 , 3.8396831 , -0.473592902 ), ( 74 , 4.012825957 , -0.423592285 ), ( 74 , 3.836965179 , -0.436834964 ), ( 74 , 3.843449819 , -0.419888401 ), ( 74 , 3.953399179 , -0.391024433 ), ( 74 , 4.154207243 , -0.462915592 ), ( 74 , 4.088933166 , -0.462379875 ), ( 74 , 4.193741653 , -0.423532517 ), ( 74 , 4.096036167 , -0.402290754 ), ( 74 , 4.253752374 , -0.390612773 ), ( 74 , 4.193574771 , -0.36923794 ), ( 74 , 4.276454613 , -0.350053174 ), ( 74 , 4.202392235 , -0.346286516 ), ( 74 , 4.155172205 , -0.32176737 ), ( 74 , 4.050522031 , -0.370177146 ), ( 74 , 4.095802605 , -0.308313103 ), ( 74 , 4.182001878 , -0.234625259 ), ( 74 , 4.047836996 , -0.261001137 ), ( 74 , 4.075600705 , -0.248353741 ), ( 74 , 3.741772523 , -0.470513495 ), ( 74 , 3.721648898 , -0.445137215 ), ( 74 , 3.80985839 , -0.41919424 ), ( 74 , 3.687416904 , -0.39483158 ), ( 74 , 3.850148344 , -0.408855834 ), ( 74 , 3.867929514 , -0.391028953 ), ( 74 , 3.834966148 , -0.389703906 ), ( 74 , 3.749963745 , -0.323299493 ), ( 74 , 3.841972372 , -0.282913524 ), ( 74 , 3.622628402 , -0.364238552 ), ( 74 , 3.704484217 , -0.335905643 ), ( 74 , 3.548206299 , -0.348898505 ), ( 74 , 3.53829926 , -0.341392577 ), ( 74 , 3.597653674 , -0.313059438 ), ( 74 , 3.63140867 , -0.256153659 ), ( 74 , 3.784533701 , -0.258992872 ), ( 74 , 3.910978251 , -0.293231723 ), ( 74 , 3.98087344 , -0.28642758 ), ( 74 , 3.926539599 , -0.190786173 ), ( 74 , 4.003493457 , -0.183272247 ), ( 74 , 3.900188728 , -0.158580706 ), ( 74 , 3.866885173 , -0.136084415 ), ( 74 , 3.96875734 , -0.094166904 ), ( 74 , 3.996918902 , -0.085488155 ), ( 74 , 5.027552357 , -1.457081119 ), ( 74 , 4.939140932 , -1.454146903 ), ( 74 , 4.830017846 , -1.383516679 ), ( 74 , 5.189682333 , -1.283222659 ), ( 74 , 5.594958342 , -1.249156507 ), ( 74 , 5.376685068 , -1.254271686 ), ( 74 , 5.405881341 , -1.240832511 ), ( 74 , 6.111355431 , -1.320038108 ), ( 74 , 5.917158235 , -1.238551913 ), ( 74 , 6.058991364 , -1.11479297 ), ( 74 , 5.841749947 , -1.19231108 ), ( 74 , 5.779841941 , -1.129729565 ), ( 74 , 5.831520572 , -1.105467213 ), ( 74 , 5.79297382 , -1.035343649 ), ( 74 , 4.787688768 , -1.336648037 ), ( 74 , 5.004451967 , -1.304766246 ), ( 74 , 4.946757861 , -1.30827124 ), ( 74 , 5.109534082 , -1.291288503 ), ( 74 , 5.19775452 , -1.27052257 ), ( 74 , 4.883248181 , -1.235749082 ), ( 74 , 5.385996356 , -1.16467477 ), ( 74 , 5.387557861 , -1.104998024 ), ( 74 , 5.297546218 , -1.090642419 ), ( 74 , 4.777128815 , -1.166144736 ), ( 74 , 4.992071902 , -1.113251187 ), ( 74 , 4.926446242 , -1.104260904 ), ( 74 , 5.14699415 , -1.126365081 ), ( 74 , 5.188529257 , -1.078882534 ), ( 74 , 5.049027761 , -1.078871809 ), ( 74 , 5.51772805 , -1.028581183 ), ( 74 , 5.689389237 , -0.951204698 ), ( 74 , 5.657947392 , -0.887443567 ), ( 74 , 5.477481434 , -0.935309794 ), ( 74 , 5.5252132 , -0.84694877 ), ( 74 , 5.44222621 , -0.823320182 ), ( 74 , 5.521938983 , -0.759608525 ), ( 74 , 6.22936524 , -1.13866187 ), ( 74 , 6.20652779 , -1.065729836 ), ( 74 , 6.147138433 , -1.037364142 ), ( 74 , 6.139131699 , -1.019694691 ), ( 74 , 5.982976695 , -1.031443082 ), ( 74 , 6.14454711 , -0.985011419 ), ( 74 , 5.968840159 , -1.024243474 ), ( 74 , 5.834848816 , -0.94808857 ), ( 74 , 5.806873457 , -0.967926091 ), ( 74 , 6.022019121 , -0.902357957 ), ( 74 , 6.024857116 , -0.863095874 ), ( 74 , 5.898325042 , -0.812971214 ), ( 74 , 5.966601327 , -0.784788599 ), ( 74 , 6.264555551 , -0.939316601 ), ( 74 , 6.193564875 , -0.813976574 ), ( 74 , 6.142870925 , -0.878662616 ), ( 74 , 6.099954861 , -0.839731338 ), ( 74 , 6.224532196 , -0.725844608 ), ( 74 , 6.073966718 , -0.767729384 ), ( 74 , 6.128039177 , -0.649279574 ), ( 74 , 5.761924514 , -0.740925217 ), ( 74 , 5.778707143 , -0.678525384 ), ( 74 , 5.613943931 , -0.804038627 ), ( 74 , 5.656558405 , -0.703896207 ), ( 74 , 5.55804908 , -0.752763604 ), ( 74 , 5.62792612 , -0.657868901 ), ( 74 , 5.746662341 , -0.657270654 ), ( 74 , 5.746174891 , -0.617145595 ), ( 74 , 5.839361599 , -0.638718416 ), ( 74 , 5.77389575 , -0.548823466 ), ( 74 , 5.888003687 , -0.50020552 ), ( 74 , 5.866771636 , -0.407839229 ), ( 74 , 5.840232683 , -0.407211073 ), ( 74 , 4.922294356 , -1.086123285 ), ( 74 , 4.988849918 , -1.010972506 ), ( 74 , 4.792283712 , -1.068296146 ), ( 74 , 4.818812795 , -1.040498364 ), ( 74 , 4.883786057 , -1.031882286 ), ( 74 , 4.975480081 , -0.960200651 ), ( 74 , 5.038747294 , -1.01244875 ), ( 74 , 5.216257183 , -0.941558037 ), ( 74 , 4.831597844 , -0.936092356 ), ( 74 , 4.825023194 , -0.936218064 ), ( 74 , 4.835413069 , -0.916300831 ), ( 74 , 4.888701796 , -0.91107406 ), ( 74 , 5.117670922 , -0.816434855 ), ( 74 , 5.131901855 , -0.805496807 ), ( 74 , 4.976966222 , -0.842723848 ), ( 74 , 5.05004346 , -0.792817153 ), ( 74 , 5.365328248 , -0.805495191 ), ( 74 , 5.448058424 , -0.750626478 ), ( 74 , 5.190462606 , -0.659407478 ), ( 74 , 4.747437806 , -0.911721216 ), ( 74 , 4.91119876 , -0.845781458 ), ( 74 , 4.742950734 , -0.842072268 ), ( 74 , 5.064030963 , -0.697939296 ), ( 74 , 4.922404847 , -0.760493665 ), ( 74 , 4.961408661 , -0.679186912 ), ( 74 , 4.76905411 , -0.683520661 ), ( 74 , 4.81541843 , -0.678120032 ), ( 74 , 4.945440562 , -0.650564003 ), ( 74 , 4.981383487 , -0.643867832 ), ( 74 , 4.879635732 , -0.570490563 ), ( 74 , 5.156679808 , -0.643810311 ), ( 74 , 5.059352118 , -0.639823705 ), ( 74 , 5.078193903 , -0.610289569 ), ( 74 , 4.978560909 , -0.580001845 ), ( 74 , 5.074297341 , -0.50727473 ), ( 74 , 5.001768194 , -0.476250279 ), ( 74 , 5.009683826 , -0.468353124 ), ( 74 , 5.044826793 , -0.447973537 ), ( 74 , 5.148408421 , -0.3850697 ), ( 74 , 5.505833788 , -0.638340098 ), ( 74 , 5.470146026 , -0.631745755 ), ( 74 , 5.531635323 , -0.542031082 ), ( 74 , 5.550684287 , -0.533888255 ), ( 74 , 5.351815611 , -0.507440894 ), ( 74 , 5.454522249 , -0.477660692 ), ( 74 , 5.412168769 , -0.42097439 ), ( 74 , 5.447017937 , -0.396921671 ), ( 74 , 5.692138929 , -0.434780583 ), ( 74 , 5.631903567 , -0.448717474 ), ( 74 , 5.686919199 , -0.421347118 ), ( 74 , 5.821159954 , -0.373698425 ), ( 74 , 5.840607173 , -0.361984744 ), ( 74 , 5.833417478 , -0.34951746 ), ( 74 , 5.740554978 , -0.368965654 ), ( 74 , 5.770240586 , -0.296084909 ), ( 74 , 5.667276994 , -0.3425297 ), ( 74 , 5.661971447 , -0.335644452 ), ( 74 , 5.680964786 , -0.300570374 ), ( 74 , 5.749948302 , -0.263955032 ), ( 74 , 5.664611943 , -0.260224787 ), ( 74 , 5.276595761 , -0.496380138 ), ( 74 , 5.322160196 , -0.440340101 ), ( 74 , 5.425532174 , -0.391897048 ), ( 74 , 5.39499449 , -0.359286226 ), ( 74 , 5.447319472 , -0.317680943 ), ( 74 , 5.422140135 , -0.316072897 ), ( 74 , 5.257667477 , -0.372005062 ), ( 74 , 5.281473437 , -0.338318708 ), ( 74 , 5.112550091 , -0.338359131 ), ( 74 , 5.306005792 , -0.284419319 ), ( 74 , 5.25150822 , -0.269014646 ), ( 74 , 5.479444607 , -0.298705968 ), ( 74 , 5.529133167 , -0.243007019 ), ( 74 , 5.508406348 , -0.217246154 ), ( 74 , 5.658876008 , -0.177579354 ), ( 74 , 5.623813807 , -0.156923932 ), ( 74 , 5.569774575 , -0.159834218 ), ( 74 , 5.360573522 , -0.20588479 ), ( 74 , 5.361652329 , -0.204673317 ), ( 74 , 5.388966869 , -0.167214323 ), ( 74 , 5.521927565 , -0.076134094 ), ( 74 , 5.511432597 , -0.022841266 ), ( 74 , 2.644989043 , -0.826761635 ), ( 75 , 0.747640158 , 0.053350811 ), ( 75 , 0.768250459 , 0.107774938 ), ( 75 , 0.861513866 , 0.133618344 ), ( 75 , 0.96662828 , 0.175957589 ), ( 75 , 0.895254528 , 0.217907819 ), ( 75 , 0.875132543 , 0.21549008 ), ( 75 , 0.704220348 , 0.148822163 ), ( 75 , 0.672911148 , 0.156883488 ), ( 75 , 0.637861821 , 0.185633415 ), ( 75 , 0.779993452 , 0.237432181 ), ( 75 , 0.824736241 , 0.224444606 ), ( 75 , 1.071278928 , 0.249338613 ), ( 75 , 1.165122446 , 0.346329579 ), ( 75 , 0.969817981 , 0.397689181 ), ( 75 , 1.005607638 , 0.427524124 ), ( 75 , 0.635134883 , 0.20890316 ), ( 75 , 0.623928629 , 0.307140774 ), ( 75 , 0.601081477 , 0.322103397 ), ( 75 , 0.693755814 , 0.25936212 ), ( 75 , 0.723083543 , 0.29707738 ), ( 75 , 0.730684159 , 0.338082889 ), ( 75 , 0.472748408 , 0.297109172 ), ( 75 , 0.530175715 , 0.31335 ), ( 75 , 0.573314322 , 0.373103462 ), ( 75 , 0.514694014 , 0.411949618 ), ( 75 , 0.553862433 , 0.459432745 ), ( 75 , 0.584861682 , 0.464730561 ), ( 75 , 0.803958179 , 0.37477137 ), ( 75 , 0.831928429 , 0.382089277 ), ( 75 , 0.865383653 , 0.420303084 ), ( 75 , 0.917480764 , 0.524316799 ), ( 75 , 0.832840072 , 0.562455872 ), ( 75 , 0.661187538 , 0.481173308 ), ( 75 , 0.699480171 , 0.520043761 ), ( 75 , 0.668172108 , 0.522978628 ), ( 75 , 0.602628835 , 0.52093174 ), ( 75 , 0.69136246 , 0.537804719 ), ( 75 , 0.700037808 , 0.56409788 ), ( 75 , 0.786642796 , 0.543228058 ), ( 75 , 0.776825953 , 0.550072094 ), ( 75 , 0.818843338 , 0.639071664 ), ( 75 , 0.790883295 , 0.630374912 ), ( 75 , 1.162002675 , 0.374725116 ), ( 75 , 1.188408888 , 0.439566245 ), ( 75 , 1.215159601 , 0.470191691 ), ( 75 , 1.209297048 , 0.487394759 ), ( 75 , 1.139937361 , 0.477351385 ), ( 75 , 1.289227837 , 0.561205247 ), ( 75 , 1.0849415 , 0.451652128 ), ( 75 , 1.0432312 , 0.474683465 ), ( 75 , 1.071446747 , 0.549728187 ), ( 75 , 1.145658597 , 0.566671393 ), ( 75 , 1.17463256 , 0.615502146 ), ( 75 , 1.235182745 , 0.592184219 ), ( 75 , 1.43014601 , 0.592468349 ), ( 75 , 1.37101391 , 0.702362341 ), ( 75 , 1.475953632 , 0.658767537 ), ( 75 , 1.479476642 , 0.662817511 ), ( 75 , 1.470963504 , 0.73003685 ), ( 75 , 1.481048568 , 0.744919657 ), ( 75 , 1.47166557 , 0.769181774 ), ( 75 , 1.314925342 , 0.800904876 ), ( 75 , 1.513454063 , 0.828460162 ), ( 75 , 1.500263792 , 0.832758393 ), ( 75 , 1.386717264 , 0.805086222 ), ( 75 , 1.431053382 , 0.844410359 ), ( 75 , 1.447715313 , 0.85407453 ), ( 75 , 1.498314186 , 0.884916135 ), ( 75 , 0.974767695 , 0.595440355 ), ( 75 , 0.96044401 , 0.595445656 ), ( 75 , 0.929952282 , 0.617827207 ), ( 75 , 0.946473962 , 0.611773057 ), ( 75 , 0.926452795 , 0.664303194 ), ( 75 , 1.060984987 , 0.647889283 ), ( 75 , 1.10879334 , 0.67141536 ), ( 75 , 1.054945549 , 0.697947188 ), ( 75 , 1.13677667 , 0.754647344 ), ( 75 , 1.127989592 , 0.763177855 ), ( 75 , 0.866283227 , 0.671222088 ), ( 75 , 0.940742658 , 0.748510287 ), ( 75 , 0.926219233 , 0.782617477 ), ( 75 , 0.912934509 , 0.786258599 ), ( 75 , 0.89722453 , 0.794395735 ), ( 75 , 0.975178749 , 0.753418449 ), ( 75 , 0.998783824 , 0.887319029 ), ( 75 , 0.997717147 , 0.896678165 ), ( 75 , 1.195879552 , 0.752013932 ), ( 75 , 1.173875131 , 0.745527075 ), ( 75 , 1.224361108 , 0.769637885 ), ( 75 , 1.245569111 , 0.828619159 ), ( 75 , 1.158399188 , 0.805359291 ), ( 75 , 1.377648888 , 0.882473227 ), ( 75 , 1.353188992 , 0.937412349 ), ( 75 , 1.458543549 , 0.982122361 ), ( 75 , 1.192417485 , 0.921619108 ), ( 75 , 1.084922416 , 0.931323609 ), ( 75 , 1.1640035 , 0.97116674 ), ( 75 , 1.341767516 , 0.969355846 ), ( 75 , 1.316535823 , 0.969964 ), ( 75 , 1.323508722 , 1.054558943 ), ( 75 , 0.380013496 , 0.444005354 ), ( 75 , 0.39850707 , 0.513344641 ), ( 75 , 0.457505301 , 0.49668772 ), ( 75 , 0.445488351 , 0.514977993 ), ( 75 , 0.358636241 , 0.553375027 ), ( 75 , 0.252625005 , 0.51523722 ), ( 75 , 0.231823925 , 0.529692903 ), ( 75 , 0.318674542 , 0.578653398 ), ( 75 , 0.291442489 , 0.613405938 ), ( 75 , 0.412866383 , 0.612813619 ), ( 75 , 0.397243562 , 0.689310398 ), ( 75 , 0.586147719 , 0.536248279 ), ( 75 , 0.627815652 , 0.590929233 ), ( 75 , 0.636314025 , 0.646012243 ), ( 75 , 0.590455559 , 0.68363249 ), ( 75 , 0.581301158 , 0.706979814 ), ( 75 , 0.734061033 , 0.761355921 ), ( 75 , 0.678783501 , 0.779114075 ), ( 75 , 0.524870303 , 0.673652993 ), ( 75 , 0.448037688 , 0.672218226 ), ( 75 , 0.565681148 , 0.748002443 ), ( 75 , 0.40825686 , 0.713862118 ), ( 75 , 0.463901916 , 0.76280731 ), ( 75 , 0.656331454 , 0.835205727 ), ( 75 , 0.584845557 , 0.828755882 ), ( 75 , 0.60753364 , 0.875172675 ), ( 75 , 0.505211391 , 0.902124694 ), ( 75 , 0.236344294 , 0.574009312 ), ( 75 , 0.288587407 , 0.619873623 ), ( 75 , 0.25326507 , 0.654489172 ), ( 75 , 0.086294412 , 0.645113675 ), ( 75 , 0.053392217 , 0.696413501 ), ( 75 , 0.059538085 , 0.749608243 ), ( 75 , 0.016333895 , 0.733450024 ), ( 75 , 0.07997491 , 0.777689776 ), ( 75 , 0.150585321 , 0.836291301 ), ( 75 , 0.010324827 , 0.881387973 ), ( 75 , 0.024360054 , 0.928021026 ), ( 75 , 0.373929195 , 0.78167068 ), ( 75 , 0.378900909 , 0.79722161 ), ( 75 , 0.422278706 , 0.843263708 ), ( 75 , 0.262769855 , 0.82586126 ), ( 75 , 0.264386295 , 0.825900279 ), ( 75 , 0.30923068 , 0.85808049 ), ( 75 , 0.307788372 , 0.909824033 ), ( 75 , 0.438889328 , 0.95891862 ), ( 75 , 0.43504539 , 0.973618431 ), ( 75 , 0.349920627 , 0.909864496 ), ( 75 , 0.153728444 , 0.904731353 ), ( 75 , 0.138479355 , 0.941808145 ), ( 75 , 0.193713789 , 0.945135486 ), ( 75 , 0.148423588 , 0.958710839 ), ( 75 , 0.071683546 , 0.941528525 ), ( 75 , 0.130022255 , 0.995373165 ), ( 75 , 0.12611553 , 0.998496885 ), ( 75 , 0.235990041 , 0.995083348 ), ( 75 , 0.179300177 , 0.997833299 ), ( 75 , 0.186096981 , 1.005244587 ), ( 75 , 0.176336456 , 1.038711863 ), ( 75 , 0.183098494 , 1.045709482 ), ( 75 , 0.105991111 , 1.05510458 ), ( 75 , 0.021852141 , 1.141883305 ), ( 75 , 0.007921884 , 1.15726011 ), ( 75 , 0.830528856 , 0.801811116 ), ( 75 , 0.862438738 , 0.81941298 ), ( 75 , 0.736689653 , 0.858419182 ), ( 75 , 0.744177835 , 0.912510534 ), ( 75 , 0.899638184 , 0.844457732 ), ( 75 , 0.91147796 , 0.856435298 ), ( 75 , 0.92113261 , 0.881065444 ), ( 75 , 0.898963523 , 0.897432485 ), ( 75 , 0.917591732 , 0.923184589 ), ( 75 , 0.898534527 , 0.930655297 ), ( 75 , 0.944381498 , 0.92382599 ), ( 75 , 0.833407408 , 0.927523821 ), ( 75 , 0.68418463 , 0.906894057 ), ( 75 , 0.64783503 , 0.926216966 ), ( 75 , 0.61522268 , 0.96705081 ), ( 75 , 0.597598785 , 0.989929637 ), ( 75 , 0.638388229 , 0.998822726 ), ( 75 , 0.600238602 , 1.012634336 ), ( 75 , 0.859555501 , 1.048375363 ), ( 75 , 0.666121861 , 1.077462555 ), ( 75 , 0.808390846 , 1.100069983 ), ( 75 , 1.059102913 , 1.028859441 ), ( 75 , 1.083864646 , 1.062498156 ), ( 75 , 1.09914781 , 1.100264419 ), ( 75 , 1.261431664 , 1.073503864 ), ( 75 , 0.901382002 , 1.102960953 ), ( 75 , 0.959844172 , 1.121988732 ), ( 75 , 1.015333532 , 1.143741089 ), ( 75 , 0.838136652 , 1.135935197 ), ( 75 , 0.87658881 , 1.194797278 ), ( 75 , 1.014870719 , 1.17908554 ), ( 75 , 1.041671704 , 1.187238926 ), ( 75 , 0.911502835 , 1.209217916 ), ( 75 , 1.36332957 , 1.269612592 ), ( 75 , 1.511951255 , 1.302171188 ), ( 75 , 0.473786184 , 1.020281619 ), ( 75 , 0.465927524 , 1.032462959 ), ( 75 , 0.542256867 , 1.051454473 ), ( 75 , 0.537558475 , 1.059482397 ), ( 75 , 0.352863942 , 1.063758102 ), ( 75 , 0.454630049 , 1.079482642 ), ( 75 , 0.678547659 , 1.103803276 ), ( 75 , 0.583813225 , 1.131932649 ), ( 75 , 0.623465671 , 1.200120916 ), ( 75 , 0.274183545 , 1.09273555 ), ( 75 , 0.186899369 , 1.122094448 ), ( 75 , 0.112886678 , 1.141157477 ), ( 75 , 0.136306446 , 1.217973743 ), ( 75 , 0.006962073 , 1.260767274 ), ( 75 , 0.299680153 , 1.233624045 ), ( 75 , 0.217849879 , 1.242251556 ), ( 75 , 0.084213472 , 1.276227686 ), ( 75 , 0.25264478 , 1.317613611 ), ( 75 , 0.061288314 , 1.326921449 ), ( 75 , 0.80888306 , 1.29058672 ), ( 75 , 0.844126305 , 1.296713639 ), ( 75 , 1.132198671 , 1.30264019 ), ( 75 , 0.844360422 , 1.364689661 ), ( 75 , 1.001380232 , 1.401893077 ), ( 75 , 0.503759519 , 1.330370015 ), ( 75 , 0.345452257 , 1.340354503 ), ( 75 , 0.358036958 , 1.379245414 ), ( 75 , 1.063565666 , 1.428978545 ), ( 75 , 1.138389037 , 1.430779916 ), ( 75 , 1.248459248 , 1.466591442 ), ( 75 , 2.312148255 , 0.041225663 ), ( 75 , 2.304721449 , 0.045027034 ), ( 75 , 2.332255299 , 0.095371413 ), ( 75 , 2.3411221 , 0.116225503 ), ( 75 , 2.35324763 , 0.15677019 ), ( 75 , 2.462964702 , 0.110833106 ), ( 75 , 2.462971523 , 0.110826628 ), ( 75 , 2.285027587 , 0.163008514 ), ( 75 , 2.296885248 , 0.184861544 ), ( 75 , 2.216757751 , 0.204315343 ), ( 75 , 2.221594557 , 0.219072636 ), ( 75 , 2.23484969 , 0.223450119 ), ( 75 , 2.392003594 , 0.208525502 ), ( 75 , 2.607352259 , 0.287264103 ), ( 75 , 2.663273243 , 0.365570098 ), ( 75 , 2.485124649 , 0.308082601 ), ( 75 , 2.446212953 , 0.333192923 ), ( 75 , 2.462277729 , 0.41153357 ), ( 75 , 2.564395044 , 0.359620412 ), ( 75 , 2.540994253 , 0.446632007 ), ( 75 , 2.153732603 , 0.181175574 ), ( 75 , 2.145969897 , 0.234659761 ), ( 75 , 2.190180166 , 0.257751543 ), ( 75 , 2.145963531 , 0.28836447 ), ( 75 , 2.304298072 , 0.303592503 ), ( 75 , 2.265004347 , 0.343423625 ), ( 75 , 2.229687814 , 0.331060354 ), ( 75 , 2.250384519 , 0.345070265 ), ( 75 , 2.190675993 , 0.348348552 ), ( 75 , 2.202691721 , 0.351735279 ), ( 75 , 2.25273875 , 0.355024628 ), ( 75 , 2.025601545 , 0.352568448 ), ( 75 , 2.077127817 , 0.413503854 ), ( 75 , 2.184641924 , 0.442199586 ), ( 75 , 2.100959979 , 0.417353907 ), ( 75 , 2.135470463 , 0.433296386 ), ( 75 , 2.377998611 , 0.398510536 ), ( 75 , 2.388659606 , 0.401057173 ), ( 75 , 2.367303757 , 0.451258833 ), ( 75 , 2.315905173 , 0.468214501 ), ( 75 , 2.296149849 , 0.481610061 ), ( 75 , 2.292997488 , 0.496466802 ), ( 75 , 2.362932875 , 0.714545582 ), ( 75 , 2.824734196 , 0.469677359 ), ( 75 , 2.817715243 , 0.568930391 ), ( 75 , 2.649136761 , 0.515085189 ), ( 75 , 2.64337755 , 0.610902509 ), ( 75 , 2.731636281 , 0.685340504 ), ( 75 , 2.998495355 , 0.578122405 ), ( 75 , 2.887481156 , 0.640162946 ), ( 75 , 3.018970397 , 0.723264159 ), ( 75 , 2.856861748 , 0.641557459 ), ( 75 , 2.822652998 , 0.750960407 ), ( 75 , 2.895702937 , 0.773687405 ), ( 75 , 3.118290471 , 0.854033477 ), ( 75 , 2.546927955 , 0.595108462 ), ( 75 , 2.60850666 , 0.613038866 ), ( 75 , 2.517162669 , 0.621318021 ), ( 75 , 2.690584035 , 0.720397435 ), ( 75 , 2.476307072 , 0.74637515 ), ( 75 , 2.407562195 , 0.782325657 ), ( 75 , 2.576510119 , 0.786847203 ), ( 75 , 2.640779234 , 0.882283268 ), ( 75 , 2.588704887 , 0.883503735 ), ( 75 , 2.772988357 , 0.796804739 ), ( 75 , 2.84726831 , 0.798975725 ), ( 75 , 2.755581774 , 0.81810762 ), ( 75 , 2.905450288 , 0.913273801 ), ( 75 , 2.77640477 , 0.909482371 ), ( 75 , 2.840946527 , 0.981530076 ), ( 75 , 2.6943821 , 0.975606984 ), ( 75 , 2.908959818 , 0.978980524 ), ( 75 , 2.930942186 , 1.02799889 ), ( 75 , 1.986143255 , 0.402226135 ), ( 75 , 1.98463203 , 0.435494954 ), ( 75 , 1.907903639 , 0.460132604 ), ( 75 , 2.042539847 , 0.573454812 ), ( 75 , 1.87324492 , 0.526173205 ), ( 75 , 1.854354805 , 0.52992234 ), ( 75 , 1.891565225 , 0.561041224 ), ( 75 , 1.961378338 , 0.613722706 ), ( 75 , 1.998936297 , 0.667740881 ), ( 75 , 2.163435838 , 0.561598503 ), ( 75 , 2.180759124 , 0.614378808 ), ( 75 , 2.080062539 , 0.637774777 ), ( 75 , 2.259924557 , 0.691931585 ), ( 75 , 2.055569027 , 0.649466821 ), ( 75 , 2.062397319 , 0.690070719 ), ( 75 , 2.111658386 , 0.76514235 ), ( 75 , 2.004640414 , 0.709848504 ), ( 75 , 1.966353013 , 0.731120532 ), ( 75 , 2.106210329 , 0.848098778 ), ( 75 , 2.131092029 , 0.855576278 ), ( 75 , 1.767872629 , 0.538012322 ), ( 75 , 1.725113789 , 0.658251823 ), ( 75 , 1.750379023 , 0.684771987 ), ( 75 , 1.781815168 , 0.720860483 ), ( 75 , 1.809810417 , 0.749581887 ), ( 75 , 1.647593131 , 0.69566095 ), ( 75 , 1.714772731 , 0.694373128 ), ( 75 , 1.607081987 , 0.795072644 ), ( 75 , 1.615294495 , 0.816089848 ), ( 75 , 1.691396329 , 0.851321798 ), ( 75 , 1.636150597 , 0.809758738 ), ( 75 , 1.625745151 , 0.827643352 ), ( 75 , 1.612899358 , 0.856307437 ), ( 75 , 1.631816978 , 0.907758834 ), ( 75 , 1.95561332 , 0.802687239 ), ( 75 , 1.819177722 , 0.890210023 ), ( 75 , 1.900349301 , 0.897952449 ), ( 75 , 1.850240117 , 0.895107609 ), ( 75 , 1.843374764 , 0.931722417 ), ( 75 , 2.069280334 , 0.95494608 ), ( 75 , 1.724251278 , 0.922648408 ), ( 75 , 1.661691682 , 0.910158277 ), ( 75 , 1.594454778 , 1.025132018 ), ( 75 , 1.882674704 , 1.051117683 ), ( 75 , 1.667137949 , 1.060769793 ), ( 75 , 1.64633552 , 1.131525014 ), ( 75 , 2.375630474 , 0.758202709 ), ( 75 , 2.294156427 , 0.853096384 ), ( 75 , 2.218061363 , 0.867202036 ), ( 75 , 2.204161992 , 0.94128452 ), ( 75 , 2.28216287 , 1.063426158 ), ( 75 , 2.351869153 , 1.107034804 ), ( 75 , 2.646264113 , 0.973362424 ), ( 75 , 2.616205278 , 0.985666704 ), ( 75 , 2.863190638 , 1.126411492 ), ( 75 , 2.514808803 , 1.095904866 ), ( 75 , 2.875568468 , 1.221538311 ), ( 75 , 2.6958878 , 1.240159072 ), ( 75 , 2.89489769 , 1.316691725 ), ( 75 , 2.066996109 , 1.016019387 ), ( 75 , 2.161328749 , 1.047491177 ), ( 75 , 1.998754412 , 1.073962436 ), ( 75 , 2.238707139 , 1.174475889 ), ( 75 , 1.989993836 , 1.160125971 ), ( 75 , 2.17105235 , 1.224819719 ), ( 75 , 2.079441645 , 1.253970629 ), ( 75 , 1.82391855 , 1.100265852 ), ( 75 , 1.902548316 , 1.130641564 ), ( 75 , 1.645703576 , 1.147037026 ), ( 75 , 1.973074476 , 1.245532651 ), ( 75 , 1.600155952 , 1.267153032 ), ( 75 , 2.282045486 , 1.224597259 ), ( 75 , 2.506256732 , 1.24071691 ), ( 75 , 2.452299141 , 1.307472744 ), ( 75 , 2.87699146 , 1.390611377 ), ( 75 , 2.016913417 , 1.318834386 ), ( 75 , 1.968733396 , 1.343111923 ), ( 75 , 1.946984262 , 1.362137619 ), ( 75 , 1.943590239 , 1.365780346 ), ( 75 , 1.902427256 , 1.438856928 ), ( 75 , 2.336782981 , 1.396790705 ), ( 75 , 2.538365913 , 1.437545782 ), ( 75 , 3.023659602 , 1.47840478 ), ( 75 , 2.771554262 , 1.473051857 ), ( 75 , 2.31636826 , 1.484410145 ), ( 75 , 2.974924056 , 1.529580974 ), ( 75 , 3.944901831 , 0.095912063 ), ( 75 , 3.867095139 , 0.061150377 ), ( 75 , 3.914222824 , 0.094783385 ), ( 75 , 4.022989925 , 0.097679086 ), ( 75 , 4.031718628 , 0.155437758 ), ( 75 , 3.959906023 , 0.161027453 ), ( 75 , 3.963387053 , 0.176518087 ), ( 75 , 3.85189423 , 0.115037763 ), ( 75 , 3.869112916 , 0.127084046 ), ( 75 , 3.852457268 , 0.140956611 ), ( 75 , 3.783101176 , 0.174201628 ), ( 75 , 3.885902216 , 0.22312086 ), ( 75 , 3.867233969 , 0.253250177 ), ( 75 , 3.926819469 , 0.258889155 ), ( 75 , 3.941029578 , 0.313734035 ), ( 75 , 4.192725807 , 0.231630746 ), ( 75 , 4.153916674 , 0.265901467 ), ( 75 , 4.065778169 , 0.283343983 ), ( 75 , 4.057210631 , 0.322884732 ), ( 75 , 3.982665645 , 0.333272308 ), ( 75 , 3.70858527 , 0.198496689 ), ( 75 , 3.78519612 , 0.257511139 ), ( 75 , 3.802905373 , 0.307923574 ), ( 75 , 3.77344018 , 0.372760968 ), ( 75 , 3.656930358 , 0.286286153 ), ( 75 , 3.672243775 , 0.292479204 ), ( 75 , 3.623051742 , 0.370982453 ), ( 75 , 3.660399456 , 0.430954623 ), ( 75 , 3.661211404 , 0.450573514 ), ( 75 , 3.96840824 , 0.430681668 ), ( 75 , 3.876324846 , 0.425295134 ), ( 75 , 3.894206808 , 0.415414961 ), ( 75 , 3.915576871 , 0.441983936 ), ( 75 , 4.024827924 , 0.44722456 ), ( 75 , 4.025321961 , 0.597423073 ), ( 75 , 3.906549301 , 0.572883154 ), ( 75 , 3.979144164 , 0.641493552 ), ( 75 , 3.914398003 , 0.619415874 ), ( 75 , 4.266717912 , 0.412029717 ), ( 75 , 4.407254943 , 0.457436683 ), ( 75 , 4.450069947 , 0.476753287 ), ( 75 , 4.471373376 , 0.49028217 ), ( 75 , 4.255325706 , 0.605855407 ), ( 75 , 4.266693821 , 0.623075624 ), ( 75 , 4.271732194 , 0.659130742 ), ( 75 , 4.359609712 , 0.669245799 ), ( 75 , 4.330825515 , 0.700111306 ), ( 75 , 4.497731895 , 0.561617477 ), ( 75 , 4.489424421 , 0.581207603 ), ( 75 , 4.492452928 , 0.668351589 ), ( 75 , 4.634797182 , 0.664472301 ), ( 75 , 4.681607973 , 0.736746144 ), ( 75 , 4.67815524 , 0.747996377 ), ( 75 , 4.601960629 , 0.757419014 ), ( 75 , 4.450974859 , 0.682449012 ), ( 75 , 4.149321368 , 0.742910076 ), ( 75 , 4.181927862 , 0.754220459 ), ( 75 , 4.133732232 , 0.77839724 ), ( 75 , 4.158864305 , 0.803553371 ), ( 75 , 4.402985228 , 0.841872703 ), ( 75 , 4.62487266 , 0.99256344 ), ( 75 , 4.415095214 , 0.948255728 ), ( 75 , 4.34451394 , 1.008466763 ), ( 75 , 4.481890934 , 1.0169766 ), ( 75 , 3.538724261 , 0.46059616 ), ( 75 , 3.707735416 , 0.545541992 ), ( 75 , 3.679152882 , 0.572707003 ), ( 75 , 3.471483057 , 0.501642793 ), ( 75 , 3.463161272 , 0.52041611 ), ( 75 , 3.567628349 , 0.588840053 ), ( 75 , 3.712969741 , 0.556298512 ), ( 75 , 3.767522985 , 0.649383193 ), ( 75 , 3.843940049 , 0.665875819 ), ( 75 , 3.726189334 , 0.792794339 ), ( 75 , 3.637034523 , 0.9094992 ), ( 75 , 3.305882641 , 0.675160629 ), ( 75 , 3.430554254 , 0.714232846 ), ( 75 , 3.249084921 , 0.721383732 ), ( 75 , 3.176981907 , 0.692118005 ), ( 75 , 3.290184151 , 0.815896854 ), ( 75 , 3.208180933 , 0.822319271 ), ( 75 , 3.239985184 , 0.843917869 ), ( 75 , 3.19726596 , 0.906521497 ), ( 75 , 3.535206059 , 0.798230847 ), ( 75 , 3.428561612 , 0.833880187 ), ( 75 , 3.45929377 , 0.905824413 ), ( 75 , 3.595828014 , 0.971013956 ), ( 75 , 3.515737943 , 0.994324052 ), ( 75 , 3.29942143 , 0.99178839 ), ( 75 , 3.195214155 , 0.972249834 ), ( 75 , 3.215028248 , 0.982294802 ), ( 75 , 3.384118911 , 0.980819391 ), ( 75 , 3.391474962 , 1.006911152 ), ( 75 , 3.354464285 , 1.071267089 ), ( 75 , 3.25108532 , 1.059368022 ), ( 75 , 3.231460626 , 1.111255198 ), ( 75 , 3.98800466 , 0.837215417 ), ( 75 , 3.983737651 , 0.86874256 ), ( 75 , 3.933266434 , 0.858608835 ), ( 75 , 3.93799247 , 0.900927948 ), ( 75 , 4.120501199 , 0.92474475 ), ( 75 , 4.14201547 , 0.981503944 ), ( 75 , 3.964297627 , 0.929609733 ), ( 75 , 4.122014877 , 1.019865083 ), ( 75 , 3.854337743 , 0.938881154 ), ( 75 , 3.833712198 , 0.957368426 ), ( 75 , 3.761174112 , 0.934121703 ), ( 75 , 3.782382974 , 0.978020481 ), ( 75 , 3.945721785 , 1.039082693 ), ( 75 , 4.006686913 , 1.026152008 ), ( 75 , 4.032927881 , 1.056807888 ), ( 75 , 4.011246256 , 1.071192136 ), ( 75 , 3.901281001 , 1.038728695 ), ( 75 , 3.95979049 , 1.129573136 ), ( 75 , 3.940022517 , 1.148032329 ), ( 75 , 4.527513445 , 1.117594726 ), ( 75 , 4.60552177 , 1.209459448 ), ( 75 , 4.587150563 , 1.214746759 ), ( 75 , 4.542974098 , 1.218255776 ), ( 75 , 4.074696755 , 1.115392743 ), ( 75 , 4.080729537 , 1.139315519 ), ( 75 , 4.132033404 , 1.212612333 ), ( 75 , 4.395515161 , 1.206005759 ), ( 75 , 4.678873169 , 1.326464191 ), ( 75 , 4.476713685 , 1.310802893 ), ( 75 , 4.553448774 , 1.327407731 ), ( 75 , 3.838239706 , 1.157966331 ), ( 75 , 3.799974815 , 1.188251008 ), ( 75 , 3.363331998 , 1.099318122 ), ( 75 , 3.144314788 , 1.207513521 ), ( 75 , 3.280862247 , 1.195803424 ), ( 75 , 3.148705006 , 1.236564435 ), ( 75 , 3.482788386 , 1.181376824 ), ( 75 , 3.525851037 , 1.223929252 ), ( 75 , 3.522081891 , 1.227249456 ), ( 75 , 3.555850565 , 1.223807369 ), ( 75 , 3.515686138 , 1.261405625 ), ( 75 , 3.351001255 , 1.238241878 ), ( 75 , 3.313701535 , 1.274112861 ), ( 75 , 3.318559667 , 1.324805761 ), ( 75 , 4.00390728 , 1.20698509 ), ( 75 , 4.169932435 , 1.263480979 ), ( 75 , 4.020771836 , 1.282418175 ), ( 75 , 3.865246008 , 1.256048912 ), ( 75 , 4.614716703 , 1.382536942 ), ( 75 , 3.617688946 , 1.394892102 ), ( 75 , 4.055083863 , 1.40413491 ), ( 75 , 4.495772659 , 1.476524675 ), ( 75 , 4.116596384 , 1.447702598 ), ( 75 , 4.139527505 , 1.459438388 ), ( 75 , 3.312248936 , 1.459865582 ), ( 75 , 3.810437463 , 1.499907415 ), ( 75 , 5.502444726 , 0.018064671 ), ( 75 , 5.515742521 , 0.052218951 ), ( 75 , 5.478926294 , 0.07911418 ), ( 75 , 5.537136921 , 0.132453685 ), ( 75 , 5.507422244 , 0.125308827 ), ( 75 , 5.616364469 , 0.120625224 ), ( 75 , 5.570513832 , 0.131152606 ), ( 75 , 5.607285875 , 0.163783544 ), ( 75 , 5.55400832 , 0.134252023 ), ( 75 , 5.583555846 , 0.166246177 ), ( 75 , 5.532769352 , 0.163407244 ), ( 75 , 5.585352791 , 0.226244841 ), ( 75 , 5.426445446 , 0.114810919 ), ( 75 , 5.397718733 , 0.156693493 ), ( 75 , 5.444352768 , 0.182649495 ), ( 75 , 5.372117716 , 0.196512386 ), ( 75 , 5.571581293 , 0.243529226 ), ( 75 , 5.454842835 , 0.232096428 ), ( 75 , 5.482169866 , 0.258592994 ), ( 75 , 5.491405415 , 0.286873969 ), ( 75 , 5.679719411 , 0.262529109 ), ( 75 , 5.852024722 , 0.313623407 ), ( 75 , 5.749957463 , 0.346936109 ), ( 75 , 5.629182992 , 0.324254914 ), ( 75 , 5.681036168 , 0.330539197 ), ( 75 , 5.687572752 , 0.342694398 ), ( 75 , 5.659460382 , 0.345267187 ), ( 75 , 5.643323927 , 0.376821757 ), ( 75 , 5.550061097 , 0.309298552 ), ( 75 , 5.718321992 , 0.382977175 ), ( 75 , 5.770542741 , 0.411519219 ), ( 75 , 5.65432432 , 0.418265839 ), ( 75 , 5.623044645 , 0.430577336 ), ( 75 , 5.256852186 , 0.277568598 ), ( 75 , 5.310874478 , 0.277029072 ), ( 75 , 5.289689358 , 0.283041455 ), ( 75 , 5.309911001 , 0.292623333 ), ( 75 , 5.284373639 , 0.282582163 ), ( 75 , 5.478379813 , 0.356067698 ), ( 75 , 5.418642662 , 0.361521368 ), ( 75 , 5.252847249 , 0.367398574 ), ( 75 , 5.145387769 , 0.326093511 ), ( 75 , 5.195375216 , 0.385940544 ), ( 75 , 5.208255887 , 0.401233245 ), ( 75 , 5.252735971 , 0.407261194 ), ( 75 , 5.290772632 , 0.447751502 ), ( 75 , 5.288139141 , 0.466764579 ), ( 75 , 5.510010937 , 0.380655121 ), ( 75 , 5.508409736 , 0.485330508 ), ( 75 , 5.528937733 , 0.533999754 ), ( 75 , 5.554335849 , 0.537740715 ), ( 75 , 5.541576361 , 0.562095758 ), ( 75 , 5.588706357 , 0.566404162 ), ( 75 , 5.448152495 , 0.537428837 ), ( 75 , 5.363036906 , 0.494999911 ), ( 75 , 5.389245432 , 0.528011626 ), ( 75 , 5.40239748 , 0.533678519 ), ( 75 , 5.424666982 , 0.590472852 ), ( 75 , 5.400654629 , 0.582354541 ), ( 75 , 5.552260035 , 0.580133949 ), ( 75 , 5.955245596 , 0.425485021 ), ( 75 , 5.918240555 , 0.473363337 ), ( 75 , 5.868865348 , 0.464447659 ), ( 75 , 6.045379728 , 0.505948072 ), ( 75 , 6.058368536 , 0.508954563 ), ( 75 , 6.054848803 , 0.524543273 ), ( 75 , 6.055948589 , 0.54905714 ), ( 75 , 5.925095196 , 0.52226562 ), ( 75 , 5.982535493 , 0.600109298 ), ( 75 , 5.790034834 , 0.46465568 ), ( 75 , 5.767107267 , 0.460383255 ), ( 75 , 5.832903349 , 0.525192166 ), ( 75 , 5.809651768 , 0.560008441 ), ( 75 , 5.804455752 , 0.563535815 ), ( 75 , 5.816546653 , 0.586497224 ), ( 75 , 5.915391683 , 0.572277178 ), ( 75 , 5.917239566 , 0.641624056 ), ( 75 , 5.830678634 , 0.588737947 ), ( 75 , 5.923117964 , 0.688337474 ), ( 75 , 5.91755476 , 0.686568193 ), ( 75 , 5.891416597 , 0.714978364 ), ( 75 , 6.069262734 , 0.543683451 ), ( 75 , 6.103007404 , 0.629894785 ), ( 75 , 6.035848391 , 0.668434347 ), ( 75 , 6.247980038 , 0.711135657 ), ( 75 , 6.137842911 , 0.791312827 ), ( 75 , 6.161028153 , 0.800909909 ), ( 75 , 6.271699717 , 0.842662435 ), ( 75 , 6.251921387 , 0.846167503 ), ( 75 , 6.22619498 , 0.894114283 ), ( 75 , 6.207609295 , 0.897583477 ), ( 75 , 5.730610681 , 0.630524891 ), ( 75 , 5.701877462 , 0.657255215 ), ( 75 , 5.685133395 , 0.661567641 ), ( 75 , 5.810852352 , 0.670480914 ), ( 75 , 5.809155346 , 0.693093156 ), ( 75 , 5.754918412 , 0.727735631 ), ( 75 , 5.729357047 , 0.72611224 ), ( 75 , 5.82857104 , 0.766212625 ), ( 75 , 5.597762096 , 0.67559224 ), ( 75 , 5.560587653 , 0.684927912 ), ( 75 , 5.597500212 , 0.710300182 ), ( 75 , 5.641305168 , 0.705241051 ), ( 75 , 5.683531633 , 0.740728728 ), ( 75 , 5.54422446 , 0.67999963 ), ( 75 , 5.614620081 , 0.764669108 ), ( 75 , 5.625403719 , 0.773846119 ), ( 75 , 5.557135708 , 0.788342758 ), ( 75 , 5.750231544 , 0.817938679 ), ( 75 , 5.809123164 , 0.822886169 ), ( 75 , 5.73645627 , 0.841221976 ), ( 75 , 5.774688506 , 0.866815803 ), ( 75 , 5.677426423 , 0.829819478 ), ( 75 , 5.617745599 , 0.834306528 ), ( 75 , 5.691022249 , 0.859906011 ), ( 75 , 5.950041036 , 0.77720388 ), ( 75 , 5.94950429 , 0.80330809 ), ( 75 , 6.029290283 , 0.887501708 ), ( 75 , 5.877486364 , 0.799175154 ), ( 75 , 5.93540319 , 0.899680211 ), ( 75 , 5.96077005 , 0.909399605 ), ( 75 , 5.981677353 , 0.90081245 ), ( 75 , 5.982391732 , 0.912251284 ), ( 75 , 6.066610876 , 0.855537339 ), ( 75 , 6.065434893 , 0.872502696 ), ( 75 , 6.075236391 , 0.911575136 ), ( 75 , 6.225930628 , 0.957508743 ), ( 75 , 6.263751664 , 1.036996438 ), ( 75 , 5.849650565 , 0.858847031 ), ( 75 , 5.840865021 , 0.919020966 ), ( 75 , 5.976853674 , 0.95725673 ), ( 75 , 5.989080168 , 0.989777007 ), ( 75 , 5.810389268 , 0.915075656 ), ( 75 , 5.849429284 , 0.957160144 ), ( 75 , 5.910296139 , 1.015132246 ), ( 75 , 6.094941531 , 1.006142606 ), ( 75 , 6.021456379 , 1.008321243 ), ( 75 , 6.222687872 , 1.055455697 ), ( 75 , 6.05382494 , 1.029565112 ), ( 75 , 6.224552336 , 1.122268564 ), ( 75 , 5.14627175 , 0.388450266 ), ( 75 , 5.186122608 , 0.435672078 ), ( 75 , 5.053593917 , 0.426151559 ), ( 75 , 5.054778701 , 0.454781706 ), ( 75 , 5.062000009 , 0.465035027 ), ( 75 , 5.241444422 , 0.474549088 ), ( 75 , 5.226856852 , 0.475635658 ), ( 75 , 5.161746908 , 0.478368893 ), ( 75 , 5.183943618 , 0.483503071 ), ( 75 , 5.189386989 , 0.49879886 ), ( 75 , 5.24914827 , 0.494039385 ), ( 75 , 5.285865032 , 0.509057553 ), ( 75 , 5.281965927 , 0.512494812 ), ( 75 , 5.237118265 , 0.52221264 ), ( 75 , 5.223672869 , 0.538544351 ), ( 75 , 5.125482838 , 0.508809513 ), ( 75 , 5.137808447 , 0.516882787 ), ( 75 , 5.146917855 , 0.519212772 ), ( 75 , 5.219173956 , 0.584560463 ), ( 75 , 5.176057069 , 0.560531749 ), ( 75 , 5.214181608 , 0.609132763 ), ( 75 , 5.009222586 , 0.453994201 ), ( 75 , 5.010272773 , 0.472883016 ), ( 75 , 5.068811741 , 0.521948175 ), ( 75 , 5.073575017 , 0.528331984 ), ( 75 , 4.97090378 , 0.552949119 ), ( 75 , 5.277657304 , 0.587855447 ), ( 75 , 5.31412818 , 0.594988264 ), ( 75 , 5.251947918 , 0.668936142 ), ( 75 , 5.322467249 , 0.669205681 ), ( 75 , 5.31950841 , 0.685449502 ), ( 75 , 5.289303871 , 0.670960427 ), ( 75 , 5.398008018 , 0.63850793 ), ( 75 , 5.470145175 , 0.716450098 ), ( 75 , 5.486800704 , 0.740804937 ), ( 75 , 5.444030468 , 0.734235186 ), ( 75 , 5.347149965 , 0.694528391 ), ( 75 , 5.388451765 , 0.728113165 ), ( 75 , 5.229764619 , 0.665078543 ), ( 75 , 5.226654619 , 0.665338563 ), ( 75 , 5.17751613 , 0.689598835 ), ( 75 , 5.22743551 , 0.714310113 ), ( 75 , 5.241310697 , 0.751255815 ), ( 75 , 5.133228927 , 0.731168471 ), ( 75 , 5.169381127 , 0.784159604 ), ( 75 , 5.160907888 , 0.823951593 ), ( 75 , 5.155086045 , 0.826032742 ), ( 75 , 5.303393343 , 0.77036472 ), ( 75 , 5.196374132 , 0.867433628 ), ( 75 , 5.274026716 , 0.882907188 ), ( 75 , 4.889082308 , 0.552281673 ), ( 75 , 4.918036665 , 0.626150101 ), ( 75 , 4.923874493 , 0.636013104 ), ( 75 , 4.948995395 , 0.641119269 ), ( 75 , 4.933468497 , 0.686615273 ), ( 75 , 5.002423796 , 0.652551993 ), ( 75 , 5.02657317 , 0.688023387 ), ( 75 , 4.966920533 , 0.691876946 ), ( 75 , 4.949059799 , 0.719528355 ), ( 75 , 4.971735123 , 0.750722578 ), ( 75 , 4.943620172 , 0.76293985 ), ( 75 , 4.997853079 , 0.736138125 ), ( 75 , 5.006186039 , 0.75599997 ), ( 75 , 4.980135681 , 0.77469143 ), ( 75 , 4.86907983 , 0.751461349 ), ( 75 , 4.769645865 , 0.723866024 ), ( 75 , 4.771241898 , 0.756277069 ), ( 75 , 4.720954591 , 0.835743293 ), ( 75 , 4.915145114 , 0.76027987 ), ( 75 , 4.876362758 , 0.805472865 ), ( 75 , 4.832201662 , 0.869506389 ), ( 75 , 4.786135061 , 0.856863669 ), ( 75 , 4.722336331 , 0.901263953 ), ( 75 , 4.760481095 , 0.903034645 ), ( 75 , 5.041544411 , 0.791255698 ), ( 75 , 5.050747915 , 0.836931859 ), ( 75 , 5.125855156 , 0.811015412 ), ( 75 , 5.091132047 , 0.875213078 ), ( 75 , 5.004110358 , 0.853908225 ), ( 75 , 5.008137382 , 0.86368666 ), ( 75 , 4.983658 , 0.825322481 ), ( 75 , 4.96989282 , 0.860786349 ), ( 75 , 5.045631807 , 0.862622024 ), ( 75 , 5.14083887 , 0.894237099 ), ( 75 , 5.129219765 , 0.934554342 ), ( 75 , 5.149133932 , 0.975768666 ), ( 75 , 5.010564694 , 0.965703332 ), ( 75 , 5.07456911 , 0.981331852 ), ( 75 , 4.78225854 , 0.930207369 ), ( 75 , 4.903322338 , 1.011392725 ), ( 75 , 4.894232816 , 1.074194902 ), ( 75 , 4.801082082 , 1.12055578 ), ( 75 , 5.531789145 , 0.784774864 ), ( 75 , 5.509277656 , 0.778544641 ), ( 75 , 5.591545121 , 0.840685272 ), ( 75 , 5.60294016 , 0.847475151 ), ( 75 , 5.56954736 , 0.851589173 ), ( 75 , 5.462688844 , 0.815675855 ), ( 75 , 5.452197127 , 0.8863316 ), ( 75 , 5.660522167 , 0.891237728 ), ( 75 , 5.637855216 , 0.90570939 ), ( 75 , 5.669230127 , 0.913897019 ), ( 75 , 5.534015446 , 0.928978876 ), ( 75 , 5.57400019 , 0.990699744 ), ( 75 , 5.665504277 , 0.99437864 ), ( 75 , 5.673869198 , 1.004985759 ), ( 75 , 5.635842385 , 1.003609127 ), ( 75 , 5.385545464 , 0.868706047 ), ( 75 , 5.374634823 , 0.864678002 ), ( 75 , 5.368837793 , 0.912699442 ), ( 75 , 5.302423946 , 0.945032066 ), ( 75 , 5.334220537 , 0.958746837 ), ( 75 , 5.316312939 , 0.966875099 ), ( 75 , 5.346279925 , 1.047404954 ), ( 75 , 5.471037488 , 0.983719607 ), ( 75 , 5.627697836 , 1.053805981 ), ( 75 , 5.400935189 , 1.060393771 ), ( 75 , 5.422137947 , 1.103274847 ), ( 75 , 5.807228035 , 1.011272009 ), ( 75 , 5.757743763 , 0.992881093 ), ( 75 , 5.76869993 , 1.013151883 ), ( 75 , 5.811087477 , 1.042325285 ), ( 75 , 5.783488618 , 1.059939446 ), ( 75 , 5.737901052 , 1.082262779 ), ( 75 , 5.831754908 , 1.111993188 ), ( 75 , 5.844779763 , 1.130767855 ), ( 75 , 5.983775121 , 1.076816428 ), ( 75 , 6.015552777 , 1.10090351 ), ( 75 , 6.048218432 , 1.103271256 ), ( 75 , 6.028112974 , 1.104653269 ), ( 75 , 6.092913811 , 1.119039603 ), ( 75 , 6.015076938 , 1.111892232 ), ( 75 , 5.944088311 , 1.132230575 ), ( 75 , 5.907567472 , 1.148981696 ), ( 75 , 5.619276819 , 1.117257265 ), ( 75 , 5.66659135 , 1.123740887 ), ( 75 , 5.746048117 , 1.144822477 ), ( 75 , 5.729443507 , 1.195527659 ), ( 75 , 5.915231787 , 1.225969966 ), ( 75 , 5.866693268 , 1.239998194 ), ( 75 , 6.142352091 , 1.293629314 ), ( 75 , 5.227031485 , 1.062137249 ), ( 75 , 5.213004378 , 1.061571774 ), ( 75 , 5.297836597 , 1.130372114 ), ( 75 , 5.350054931 , 1.20997937 ), ( 75 , 5.234622623 , 1.21141221 ), ( 75 , 4.916251475 , 1.10419669 ), ( 75 , 4.906956851 , 1.131158237 ), ( 75 , 5.03843516 , 1.13922643 ), ( 75 , 4.94795669 , 1.17148578 ), ( 75 , 4.873556798 , 1.183414712 ), ( 75 , 5.064830277 , 1.258415494 ), ( 75 , 5.028190961 , 1.289666808 ), ( 75 , 4.825417984 , 1.251961504 ), ( 75 , 4.945998694 , 1.322719954 ), ( 75 , 5.447588633 , 1.215761352 ), ( 75 , 5.696159605 , 1.259537895 ), ( 75 , 5.416466977 , 1.273642347 ), ( 75 , 5.257318992 , 1.270297982 ), ( 75 , 5.604312052 , 1.325954609 ), ( 75 , 5.842914306 , 1.326681735 ), ( 75 , 6.089784717 , 1.34019139 ), ( 75 , 6.092204291 , 1.363981685 ), ( 75 , 5.53761357 , 1.372930063 ), ( 75 , 5.222791261 , 1.321451633 ), ( 75 , 5.176172198 , 1.386840991 ), ( 75 , 5.05653665 , 1.34028281 ), ( 75 , 4.78033438 , 1.379942984 ), ( 75 , 4.768156527 , 1.422034866 ), ( 75 , 4.811270176 , 1.455059837 ), ( 75 , 5.347515193 , 1.400107961 ), ( 75 , 5.773772049 , 1.537166554 ), ( 75 , 0.057725978 , -0.660134092 ), ( 75 , 6.209532392 , -0.642018142 ), ( 75 , 6.209172271 , -0.50691526 ), ( 75 , 6.141629808 , -0.476092747 ), ( 75 , 6.258530738 , -0.471986665 ), ( 75 , 6.266256399 , -0.38383285 ), ( 75 , 0.264720795 , -0.350639235 ), ( 75 , 0.039218562 , -0.370123228 ), ( 75 , 0.196315894 , -0.211960518 ), ( 75 , 6.121104277 , -0.409318527 ), ( 75 , 6.139292415 , -0.396598839 ), ( 75 , 6.094816309 , -0.370069888 ), ( 75 , 6.112716939 , -0.323645948 ), ( 75 , 6.177145786 , -0.267023347 ), ( 75 , 6.028265377 , -0.391298652 ), ( 75 , 5.97746125 , -0.354043471 ), ( 75 , 6.141091789 , -0.225677666 ), ( 75 , 6.027561256 , -0.249099284 ), ( 75 , 6.241568115 , -0.261515975 ), ( 75 , 0.118311827 , -0.172320463 ), ( 75 , 0.061844931 , -0.125656497 ), ( 75 , 6.208120598 , -0.197723112 ), ( 75 , 6.257227537 , -0.162140404 ), ( 75 , 6.264608289 , -0.158169039 ), ( 75 , 6.225799339 , -0.155285206 ), ( 75 , 6.116713087 , -0.17036937 ), ( 75 , 0.000852272 , -0.006292223 ), ( 75 , 0.384402834 , -0.301270124 ), ( 75 , 0.473919182 , -0.25770375 ), ( 75 , 0.326851143 , -0.276093498 ), ( 75 , 0.539245463 , -0.165125414 ), ( 75 , 0.455649434 , -0.197177442 ), ( 75 , 0.283898597 , -0.240155298 ), ( 75 , 0.265441751 , -0.163597657 ), ( 75 , 0.225247142 , -0.153908731 ), ( 75 , 0.268661694 , -0.118674398 ), ( 75 , 0.370081949 , -0.121935044 ), ( 75 , 0.430846357 , -0.100107915 ), ( 75 , 0.414981326 , -0.04075921 ), ( 75 , 0.550837243 , -0.076185984 ), ( 75 , 0.682607416 , -0.011177536 ), ( 75 , 0.748090917 , -0.012003901 ), ( 75 , 0.61879105 , 0.016930896 ), ( 75 , 0.467161297 , -0.054378415 ), ( 75 , 0.595479699 , 0.039061713 ), ( 75 , 0.608591638 , 0.049225032 ), ( 75 , 0.565784506 , 0.073876349 ), ( 75 , 0.569601564 , 0.106445847 ), ( 75 , 0.266290515 , -0.081136571 ), ( 75 , 0.244507969 , -0.065240427 ), ( 75 , 0.320214103 , -0.04452342 ), ( 75 , 0.262075902 , -0.035244044 ), ( 75 , 0.293150131 , -0.030230586 ), ( 75 , 0.34821881 , -0.008878506 ), ( 75 , 0.336687333 , 0.035174231 ), ( 75 , 0.282424495 , 0.040377142 ), ( 75 , 0.286664814 , 0.073273305 ), ( 75 , 0.092587625 , -0.057794662 ), ( 75 , 0.06286417 , -0.038365586 ), ( 75 , 0.130578581 , -0.019517936 ), ( 75 , 0.055302962 , -0.021418331 ), ( 75 , 0.041312378 , 0.02171324 ), ( 75 , 0.171229468 , 0.054733457 ), ( 75 , 0.173270304 , 0.141767015 ), ( 75 , 0.50311562 , 0.112346719 ), ( 75 , 0.362655584 , 0.160349299 ), ( 75 , 0.357979805 , 0.275569058 ), ( 75 , 0.352060957 , 0.273946552 ), ( 75 , 5.892439861 , -0.285299189 ), ( 75 , 5.921503091 , -0.204747858 ), ( 75 , 5.957451324 , -0.168330281 ), ( 75 , 6.001111252 , -0.099304098 ), ( 75 , 5.777474132 , -0.227236507 ), ( 75 , 5.832707711 , -0.203318512 ), ( 75 , 5.813176026 , -0.193130839 ), ( 75 , 5.764317776 , -0.227387104 ), ( 75 , 5.850589296 , -0.152990344 ), ( 75 , 5.921120337 , -0.132081429 ), ( 75 , 5.862339233 , -0.040173875 ), ( 75 , 6.066833618 , -0.136361496 ), ( 75 , 6.137333971 , -0.115327766 ), ( 75 , 5.980839815 , -0.010083575 ), ( 75 , 6.031870134 , 0.007676431 ), ( 75 , 6.167055328 , 0.080969466 ), ( 75 , 6.153265766 , 0.087492761 ), ( 75 , 6.144760956 , 0.10601751 ), ( 75 , 6.039233224 , 0.057471923 ), ( 75 , 5.734292776 , -0.093418338 ), ( 75 , 5.751426598 , -0.06090898 ), ( 75 , 5.798300208 , 0.073925878 ), ( 75 , 5.561864916 , -0.014519778 ), ( 75 , 5.570107276 , -0.010852597 ), ( 75 , 5.577490066 , 0.020844207 ), ( 75 , 5.601542298 , 0.029342031 ), ( 75 , 5.609109747 , 0.035654574 ), ( 75 , 5.642589994 , 0.079642676 ), ( 75 , 5.690347411 , 0.124939096 ), ( 75 , 5.697479225 , 0.139407734 ), ( 75 , 5.893428074 , 0.075598801 ), ( 75 , 5.950916043 , 0.067878627 ), ( 75 , 5.910239217 , 0.073694495 ), ( 75 , 5.827841963 , 0.07454718 ), ( 75 , 5.966768844 , 0.134540162 ), ( 75 , 6.045085558 , 0.182343506 ), ( 75 , 5.868038733 , 0.152481503 ), ( 75 , 5.749219868 , 0.208519248 ), ( 75 , 5.782279877 , 0.219997958 ), ( 75 , 5.778674116 , 0.238201228 ), ( 75 , 6.270283229 , 0.052815825 ), ( 75 , 0.030839904 , 0.119998086 ), ( 75 , 0.1288724 , 0.181293169 ), ( 75 , 0.060061841 , 0.143004289 ), ( 75 , 0.038452602 , 0.140013819 ), ( 75 , 6.145876017 , 0.164534242 ), ( 75 , 0.015306812 , 0.215666875 ), ( 75 , 0.073137393 , 0.242893955 ), ( 75 , 0.020455128 , 0.261187505 ), ( 75 , 0.13826839 , 0.225364025 ), ( 75 , 0.283263224 , 0.283479452 ), ( 75 , 0.263342219 , 0.300651771 ), ( 75 , 0.331133786 , 0.357827066 ), ( 75 , 0.232588836 , 0.344987348 ), ( 75 , 0.254983289 , 0.427988109 ), ( 75 , 0.235659464 , 0.444855247 ), ( 75 , 0.15779519 , 0.419322637 ), ( 75 , 0.219231199 , 0.495129056 ), ( 75 , 6.176838378 , 0.254707444 ), ( 75 , 6.081619646 , 0.268207123 ), ( 75 , 6.206925661 , 0.325788153 ), ( 75 , 6.144490337 , 0.323552286 ), ( 75 , 5.936354403 , 0.349787864 ), ( 75 , 6.005663832 , 0.400655384 ), ( 75 , 6.118403272 , 0.411052138 ), ( 75 , 6.151868657 , 0.432355764 ), ( 75 , 6.225910861 , 0.496014436 ), ( 75 , 6.15420823 , 0.538113207 ), ( 75 , 6.096956861 , 0.521388115 ), ( 75 , 6.221498019 , 0.581027835 ), ( 75 , 6.201561312 , 0.568298246 ), ( 75 , 6.158992892 , 0.588145704 ), ( 75 , 6.172252669 , 0.599629309 ), ( 75 , 6.253443085 , 0.556935278 ), ( 75 , 6.229087863 , 0.60251366 ), ( 75 , 1.60270455 , -0.64926569 ), ( 75 , 1.520020355 , -0.609758649 ), ( 75 , 1.567620402 , -0.562165423 ), ( 75 , 1.667105685 , -0.611627164 ), ( 75 , 1.674030054 , -0.581526919 ), ( 75 , 1.701740052 , -0.544096844 ), ( 75 , 1.496144497 , -0.592689332 ), ( 75 , 1.62369558 , -0.454655516 ), ( 75 , 1.600715625 , -0.403066112 ), ( 75 , 1.564660481 , -0.376006923 ), ( 75 , 1.762321587 , -0.481559787 ), ( 75 , 1.752987924 , -0.482302886 ), ( 75 , 1.840433801 , -0.409437315 ), ( 75 , 1.80567206 , -0.422890416 ), ( 75 , 1.822030128 , -0.404182126 ), ( 75 , 1.83278258 , -0.401560302 ), ( 75 , 1.670982891 , -0.428583057 ), ( 75 , 1.792250787 , -0.363653877 ), ( 75 , 1.751731876 , -0.385779101 ), ( 75 , 1.747155658 , -0.373326458 ), ( 75 , 1.834635266 , -0.395230002 ), ( 75 , 1.83560987 , -0.360853767 ), ( 75 , 1.869512445 , -0.324681759 ), ( 75 , 1.87142199 , -0.317377308 ), ( 75 , 1.673374507 , -0.33159703 ), ( 75 , 1.663848861 , -0.293280581 ), ( 75 , 1.832045745 , -0.262178607 ), ( 75 , 1.78751622 , -0.262578012 ), ( 75 , 1.805577479 , -0.230232234 ), ( 75 , 1.372820232 , -0.470555587 ), ( 75 , 1.430051659 , -0.447446323 ), ( 75 , 1.308842686 , -0.437279699 ), ( 75 , 1.412127885 , -0.389353916 ), ( 75 , 1.35010191 , -0.403497666 ), ( 75 , 1.370414719 , -0.3778608 ), ( 75 , 1.500108975 , -0.342987684 ), ( 75 , 1.501287709 , -0.319199948 ), ( 75 , 1.43778835 , -0.367211105 ), ( 75 , 1.513978929 , -0.290531859 ), ( 75 , 1.300582902 , -0.384313796 ), ( 75 , 1.295027398 , -0.281610609 ), ( 75 , 1.259466494 , -0.282155027 ), ( 75 , 1.342621279 , -0.301754874 ), ( 75 , 1.427532605 , -0.288408816 ), ( 75 , 1.363986241 , -0.260942356 ), ( 75 , 1.302910066 , -0.258029368 ), ( 75 , 1.311945481 , -0.235685381 ), ( 75 , 1.372093511 , -0.181802493 ), ( 75 , 1.610789949 , -0.245488256 ), ( 75 , 1.625296644 , -0.237776975 ), ( 75 , 1.611170582 , -0.230746856 ), ( 75 , 1.544520604 , -0.246562529 ), ( 75 , 1.564315353 , -0.189191146 ), ( 75 , 1.699392612 , -0.200090261 ), ( 75 , 1.681469853 , -0.158671577 ), ( 75 , 1.71777321 , -0.125724184 ), ( 75 , 1.621766225 , -0.178910445 ), ( 75 , 1.618953179 , -0.127134062 ), ( 75 , 1.696088913 , -0.12165049 ), ( 75 , 1.459440516 , -0.183276483 ), ( 75 , 1.536010683 , -0.171275741 ), ( 75 , 1.499479274 , -0.155993484 ), ( 75 , 1.409660558 , -0.141467448 ), ( 75 , 1.489522646 , -0.121042036 ), ( 75 , 1.479341412 , -0.090660905 ), ( 75 , 1.569953189 , -0.115146914 ), ( 75 , 1.635082432 , -0.077649011 ), ( 75 , 1.549520628 , -0.033632379 ), ( 75 , 1.973400474 , -0.323199809 ), ( 75 , 1.984912524 , -0.247187142 ), ( 75 , 1.907194659 , -0.259126383 ), ( 75 , 2.101988654 , -0.149978078 ), ( 75 , 1.975262924 , -0.168761951 ), ( 75 , 1.932086112 , -0.16812018 ), ( 75 , 1.805516767 , -0.196584418 ), ( 75 , 1.818008095 , -0.142815667 ), ( 75 , 1.873351223 , -0.144586425 ), ( 75 , 1.976517304 , -0.119845064 ), ( 75 , 1.979026185 , -0.108681711 ), ( 75 , 1.932815151 , -0.067938376 ), ( 75 , 1.885696403 , -0.095031534 ), ( 75 , 1.996147589 , -0.035550558 ), ( 75 , 2.239672859 , -0.092994887 ), ( 75 , 2.235339568 , -0.089153192 ), ( 75 , 2.112585092 , -0.084246326 ), ( 75 , 2.122487987 , -0.041780957 ), ( 75 , 2.24502617 , -0.012669989 ), ( 75 , 2.305165394 , 0.009685538 ), ( 75 , 2.206825191 , -0.00719471 ), ( 75 , 2.217625528 , 0.004254107 ), ( 75 , 2.198072446 , 0.001034933 ), ( 75 , 2.219184237 , 0.021771158 ), ( 75 , 2.261681607 , 0.012061387 ), ( 75 , 2.134994726 , -0.007842179 ), ( 75 , 2.007089822 , -0.032716798 ), ( 75 , 2.046268873 , 0.011550977 ), ( 75 , 2.036014195 , 0.03242237 ), ( 75 , 2.158320599 , 0.02020057 ), ( 75 , 2.184667944 , 0.04650707 ), ( 75 , 2.162129913 , 0.049429538 ), ( 75 , 2.236717051 , 0.099794406 ), ( 75 , 2.090956969 , 0.091656421 ), ( 75 , 2.117987368 , 0.101708177 ), ( 75 , 1.790490773 , -0.1080851 ), ( 75 , 1.788636603 , -0.096223371 ), ( 75 , 1.724760112 , -0.083599783 ), ( 75 , 1.746474758 , -0.077864809 ), ( 75 , 1.675052049 , -0.082535723 ), ( 75 , 1.727285667 , -0.055664214 ), ( 75 , 1.700017405 , -0.061991397 ), ( 75 , 1.860786055 , -0.054380336 ), ( 75 , 1.837100412 , -0.056767814 ), ( 75 , 1.847529813 , -0.052803154 ), ( 75 , 1.905065025 , 0.032776556 ), ( 75 , 1.874031072 , 0.033512261 ), ( 75 , 1.872431686 , 0.039320098 ), ( 75 , 1.845151388 , 0.066128952 ), ( 75 , 1.663901358 , -0.021306281 ), ( 75 , 1.655229072 , -0.015965903 ), ( 75 , 1.601293624 , 0.001343342 ), ( 75 , 1.619012757 , 0.040674609 ), ( 75 , 1.665846996 , 0.040882309 ), ( 75 , 1.662634471 , 0.044830828 ), ( 75 , 1.747158771 , 0.044643669 ), ( 75 , 1.767013573 , 0.073908093 ), ( 75 , 1.831196483 , 0.058734578 ), ( 75 , 1.825430911 , 0.107637554 ), ( 75 , 1.807421602 , 0.116726754 ), ( 75 , 1.720724406 , 0.057707647 ), ( 75 , 1.699259008 , 0.074232122 ), ( 75 , 1.768151265 , 0.090988703 ), ( 75 , 1.764732416 , 0.090864468 ), ( 75 , 1.781978726 , 0.108437434 ), ( 75 , 1.984817046 , 0.058348133 ), ( 75 , 1.938635475 , 0.055464937 ), ( 75 , 2.021720712 , 0.05598393 ), ( 75 , 2.007637523 , 0.091295689 ), ( 75 , 2.059398975 , 0.093370655 ), ( 75 , 2.116276942 , 0.183258793 ), ( 75 , 1.907668312 , 0.19419148 ), ( 75 , 1.801842039 , 0.151220292 ), ( 75 , 1.8485676 , 0.187976706 ), ( 75 , 1.836707816 , 0.216422572 ), ( 75 , 1.83529362 , 0.22206516 ), ( 75 , 1.96394568 , 0.175360811 ), ( 75 , 1.326410955 , -0.185618679 ), ( 75 , 1.320478509 , -0.155233485 ), ( 75 , 1.275607877 , -0.134554633 ), ( 75 , 1.119628684 , -0.176026157 ), ( 75 , 1.141385713 , -0.141522821 ), ( 75 , 1.141040686 , -0.106002048 ), ( 75 , 1.09407616 , -0.085100195 ), ( 75 , 1.381437405 , -0.125715319 ), ( 75 , 1.354130472 , -0.132555554 ), ( 75 , 1.461641015 , -0.075996256 ), ( 75 , 1.517537052 , -0.040094667 ), ( 75 , 1.484998397 , -0.042509662 ), ( 75 , 1.483280364 , -0.033627712 ), ( 75 , 1.484036838 , -0.012301237 ), ( 75 , 1.4737777 , -0.013583336 ), ( 75 , 1.5202888 , -0.013257861 ), ( 75 , 1.457514649 , -0.008313614 ), ( 75 , 1.434231679 , 0.021411554 ), ( 75 , 1.447258126 , 0.049442263 ), ( 75 , 1.453634599 , 0.054647838 ), ( 75 , 1.305058389 , -0.037290083 ), ( 75 , 1.268956017 , -0.001663265 ), ( 75 , 1.219424954 , -0.001479137 ), ( 75 , 1.375310777 , 0.02716042 ), ( 75 , 1.431673533 , 0.061710203 ), ( 75 , 1.386153519 , 0.128322332 ), ( 75 , 1.351612156 , 0.125344205 ), ( 75 , 0.8951884 , -0.078152058 ), ( 75 , 0.960614066 , -0.033105253 ), ( 75 , 1.145232619 , -0.009633846 ), ( 75 , 1.122637638 , 0.044149612 ), ( 75 , 0.871570918 , 0.020927593 ), ( 75 , 1.022999575 , 0.090311103 ), ( 75 , 0.961063938 , 0.1323836 ), ( 75 , 1.113142114 , 0.056661058 ), ( 75 , 1.160462072 , 0.089887554 ), ( 75 , 1.10271709 , 0.087804938 ), ( 75 , 1.269041575 , 0.139522391 ), ( 75 , 1.332276794 , 0.131989866 ), ( 75 , 1.322238845 , 0.163753664 ), ( 75 , 1.285815339 , 0.209886786 ), ( 75 , 1.041186843 , 0.192464601 ), ( 75 , 1.169583668 , 0.175790458 ), ( 75 , 1.208285171 , 0.266354363 ), ( 75 , 1.57032991 , 0.069655779 ), ( 75 , 1.576418489 , 0.158343978 ), ( 75 , 1.638842387 , 0.133556988 ), ( 75 , 1.681034645 , 0.159964017 ), ( 75 , 1.62973407 , 0.168052205 ), ( 75 , 1.623290503 , 0.200932897 ), ( 75 , 1.645443128 , 0.209060254 ), ( 75 , 1.670581549 , 0.215734871 ), ( 75 , 1.541559297 , 0.166832378 ), ( 75 , 1.545310568 , 0.178798087 ), ( 75 , 1.481679285 , 0.171886452 ), ( 75 , 1.462927935 , 0.170651463 ), ( 75 , 1.388350284 , 0.16085379 ), ( 75 , 1.444374144 , 0.211128285 ), ( 75 , 1.553484856 , 0.201093117 ), ( 75 , 1.634986618 , 0.254576905 ), ( 75 , 1.479712783 , 0.254063177 ), ( 75 , 1.60202101 , 0.288947269 ), ( 75 , 1.587474692 , 0.298909053 ), ( 75 , 1.548869304 , 0.30371984 ), ( 75 , 1.774942996 , 0.187353419 ), ( 75 , 1.713308587 , 0.262163815 ), ( 75 , 1.727276676 , 0.287043416 ), ( 75 , 1.72725789 , 0.300195221 ), ( 75 , 1.851537522 , 0.265963178 ), ( 75 , 1.920052587 , 0.340698644 ), ( 75 , 1.821926793 , 0.344321177 ), ( 75 , 1.888318479 , 0.372667692 ), ( 75 , 1.727422996 , 0.308791005 ), ( 75 , 1.735571047 , 0.321167296 ), ( 75 , 1.745479736 , 0.343083795 ), ( 75 , 1.621630583 , 0.303294146 ), ( 75 , 1.648672597 , 0.339589975 ), ( 75 , 1.575925179 , 0.338949191 ), ( 75 , 1.612944085 , 0.357576214 ), ( 75 , 1.620108082 , 0.376358974 ), ( 75 , 1.665020293 , 0.347181328 ), ( 75 , 1.802499899 , 0.441764128 ), ( 75 , 1.71941264 , 0.386021855 ), ( 75 , 1.745720448 , 0.41318296 ), ( 75 , 1.398042835 , 0.190069987 ), ( 75 , 1.347260905 , 0.205113675 ), ( 75 , 1.425955912 , 0.237053052 ), ( 75 , 1.422032889 , 0.269720115 ), ( 75 , 1.422638414 , 0.273523319 ), ( 75 , 1.428991667 , 0.279950261 ), ( 75 , 1.338307948 , 0.245810781 ), ( 75 , 1.344325008 , 0.276724639 ), ( 75 , 1.375104024 , 0.262890668 ), ( 75 , 1.417392152 , 0.300143265 ), ( 75 , 1.462053255 , 0.27295136 ), ( 75 , 1.457342807 , 0.271998232 ), ( 75 , 1.484818487 , 0.286088693 ), ( 75 , 1.508926645 , 0.327989249 ), ( 75 , 1.516866349 , 0.365481323 ), ( 75 , 1.411583002 , 0.324642134 ), ( 75 , 1.435390967 , 0.356773589 ), ( 75 , 1.467989844 , 0.383841988 ), ( 75 , 1.433039291 , 0.396927877 ), ( 75 , 1.307286738 , 0.452655389 ), ( 75 , 1.548545279 , 0.393048192 ), ( 75 , 1.57571605 , 0.406746229 ), ( 75 , 1.622883586 , 0.405039304 ), ( 75 , 1.523303617 , 0.447686843 ), ( 75 , 1.558110205 , 0.476764166 ), ( 75 , 1.583841909 , 0.50050824 ), ( 75 , 1.657988543 , 0.496138054 ), ( 75 , 1.700204559 , 0.502317107 ), ( 75 , 1.642223261 , 0.503560313 ), ( 75 , 1.597452761 , 0.505007023 ), ( 75 , 1.502521764 , 0.48400525 ), ( 75 , 1.49436631 , 0.520984741 ), ( 75 , 1.489342374 , 0.544299223 ), ( 75 , 1.504813424 , 0.588569198 ), ( 75 , 1.60182941 , 0.614594788 ), ( 75 , 1.474615901 , 0.621407622 ), ( 75 , 1.509921033 , 0.650678067 ), ( 75 , 1.579910334 , 0.67579442 ), ( 75 , 1.557376708 , 0.66823405 ), ( 75 , 1.564478842 , 0.67882242 ), ( 75 , 1.524387936 , 0.676105531 ), ( 75 , 1.567678956 , 0.698712343 ), ( 75 , 3.143074789 , -0.638139802 ), ( 75 , 3.139537483 , -0.616249798 ), ( 75 , 3.100992158 , -0.578422333 ), ( 75 , 3.226830429 , -0.568782153 ), ( 75 , 3.276521722 , -0.535425061 ), ( 75 , 3.261316591 , -0.501193052 ), ( 75 , 3.215164563 , -0.464235467 ), ( 75 , 3.032615526 , -0.524155714 ), ( 75 , 2.98052144 , -0.504347876 ), ( 75 , 3.187306643 , -0.435614801 ), ( 75 , 3.168966424 , -0.397868049 ), ( 75 , 3.319864266 , -0.483687364 ), ( 75 , 3.382363007 , -0.435559237 ), ( 75 , 3.34693202 , -0.386228698 ), ( 75 , 3.445777122 , -0.387374994 ), ( 75 , 3.427814961 , -0.385220559 ), ( 75 , 3.416294746 , -0.294636123 ), ( 75 , 3.22111023 , -0.363729295 ), ( 75 , 3.280715301 , -0.366192977 ), ( 75 , 3.195294937 , -0.346850062 ), ( 75 , 3.343960462 , -0.317999338 ), ( 75 , 3.336693873 , -0.310294183 ), ( 75 , 2.964612891 , -0.496997494 ), ( 75 , 2.953389447 , -0.475420857 ), ( 75 , 3.003661188 , -0.415857614 ), ( 75 , 2.987962518 , -0.398506595 ), ( 75 , 2.923789656 , -0.446938679 ), ( 75 , 2.957392765 , -0.386521454 ), ( 75 , 3.02362284 , -0.409171633 ), ( 75 , 3.107564649 , -0.335211304 ), ( 75 , 2.979926295 , -0.359982188 ), ( 75 , 2.997778182 , -0.335118422 ), ( 75 , 2.890457859 , -0.373694635 ), ( 75 , 2.972062657 , -0.245758815 ), ( 75 , 3.100866265 , -0.224572233 ), ( 75 , 3.127461192 , -0.187191872 ), ( 75 , 3.032130225 , -0.210961768 ), ( 75 , 3.058028034 , -0.173093385 ), ( 75 , 3.582266691 , -0.223106967 ), ( 75 , 3.682480481 , -0.170080634 ), ( 75 , 3.643240975 , -0.14066123 ), ( 75 , 3.472768936 , -0.215552891 ), ( 75 , 3.405535159 , -0.158836981 ), ( 75 , 3.375538637 , -0.158212693 ), ( 75 , 3.553023702 , -0.150425457 ), ( 75 , 3.548175295 , -0.147358465 ), ( 75 , 3.599516689 , -0.104757845 ), ( 75 , 3.547174096 , -0.042312581 ), ( 75 , 3.541494954 , -0.040424712 ), ( 75 , 3.74672321 , -0.122414324 ), ( 75 , 3.712967035 , -0.104265349 ), ( 75 , 3.798307538 , -0.07095174 ), ( 75 , 3.662848388 , -0.094688627 ), ( 75 , 3.772514005 , -0.040890186 ), ( 75 , 3.809015596 , 0.063869453 ), ( 75 , 3.708369545 , -0.011369966 ), ( 75 , 3.69937438 , -0.000977869 ), ( 75 , 3.666657284 , 0.046677185 ), ( 75 , 3.80576004 , 0.072296838 ), ( 75 , 3.27261903 , -0.105136477 ), ( 75 , 3.464793046 , -0.048991392 ), ( 75 , 3.423647976 , -0.012713806 ), ( 75 , 3.513657254 , 0.014823338 ), ( 75 , 3.476972273 , 0.021645657 ), ( 75 , 3.471174487 , 0.053210154 ), ( 75 , 3.443198357 , 0.054882946 ), ( 75 , 3.281539461 , -0.030928826 ), ( 75 , 3.530917213 , 0.067568362 ), ( 75 , 3.458660006 , 0.071004072 ), ( 75 , 3.553269524 , 0.246282474 ), ( 75 , 3.589036709 , 0.264363058 ), ( 75 , 3.48031792 , 0.240226416 ), ( 75 , 3.497978389 , 0.280669138 ), ( 75 , 3.533083573 , 0.295015656 ), ( 75 , 3.534379254 , 0.332710184 ), ( 75 , 2.688987577 , -0.281731586 ), ( 75 , 2.757730308 , -0.199401156 ), ( 75 , 2.853369872 , -0.217025455 ), ( 75 , 2.800698408 , -0.140608428 ), ( 75 , 2.684372197 , -0.205772943 ), ( 75 , 2.742633789 , -0.110013196 ), ( 75 , 2.723178136 , -0.085999104 ), ( 75 , 2.678085973 , -0.091102366 ), ( 75 , 2.721900448 , -0.039723615 ), ( 75 , 2.960030547 , -0.088459404 ), ( 75 , 3.066673399 , -0.061878612 ), ( 75 , 3.076239259 , -0.009050218 ), ( 75 , 3.02521625 , 0.058685959 ), ( 75 , 2.804780686 , -0.03814078 ), ( 75 , 3.001677311 , 0.049421613 ), ( 75 , 2.554383202 , -0.148051031 ), ( 75 , 2.598867775 , -0.086855178 ), ( 75 , 2.614982986 , -0.053668891 ), ( 75 , 2.73535906 , -0.002596322 ), ( 75 , 2.575306484 , 0.001826602 ), ( 75 , 2.675673504 , 0.053625757 ), ( 75 , 2.58082063 , 0.058789645 ), ( 75 , 2.529242407 , 0.055768218 ), ( 75 , 2.63390721 , 0.069327797 ), ( 75 , 2.63890173 , 0.087336793 ), ( 75 , 2.612815348 , 0.083920761 ), ( 75 , 2.61253703 , 0.106718651 ), ( 75 , 2.561428284 , 0.123758122 ), ( 75 , 2.523637312 , 0.134545491 ), ( 75 , 2.74443637 , 0.046185623 ), ( 75 , 2.666428359 , 0.091671764 ), ( 75 , 2.707609381 , 0.112217151 ), ( 75 , 2.750882843 , 0.123206655 ), ( 75 , 2.895884346 , 0.132327289 ), ( 75 , 2.832028376 , 0.177287292 ), ( 75 , 2.612131316 , 0.19129925 ), ( 75 , 2.684142758 , 0.203753472 ), ( 75 , 2.733378974 , 0.183304229 ), ( 75 , 2.775561879 , 0.202713046 ), ( 75 , 2.717138901 , 0.267799483 ), ( 75 , 2.735289209 , 0.300528129 ), ( 75 , 3.222136007 , 0.140760915 ), ( 75 , 3.1729102 , 0.16864851 ), ( 75 , 3.181803985 , 0.299950354 ), ( 75 , 3.309948693 , 0.240946216 ), ( 75 , 3.271528144 , 0.255695037 ), ( 75 , 3.501272061 , 0.361230179 ), ( 75 , 3.199592034 , 0.384435954 ), ( 75 , 2.926098767 , 0.19724984 ), ( 75 , 2.912923569 , 0.24189464 ), ( 75 , 3.035477271 , 0.311977894 ), ( 75 , 3.086934845 , 0.349658499 ), ( 75 , 2.862048948 , 0.316831847 ), ( 75 , 2.879974851 , 0.384424964 ), ( 75 , 2.927178239 , 0.37237542 ), ( 75 , 2.99385772 , 0.396336252 ), ( 75 , 3.204677166 , 0.412949686 ), ( 75 , 3.07083425 , 0.419058422 ), ( 75 , 3.125245081 , 0.503676894 ), ( 75 , 3.235165353 , 0.436279289 ), ( 75 , 3.233438522 , 0.436901842 ), ( 75 , 3.220941398 , 0.476486488 ), ( 75 , 3.276910386 , 0.548452767 ), ( 75 , 3.199535335 , 0.528541152 ), ( 75 , 2.967874908 , 0.525700774 ), ( 75 , 2.979501984 , 0.555503023 ), ( 75 , 3.023931644 , 0.594308229 ), ( 75 , 3.142310245 , 0.641056622 ), ( 75 , 3.182879074 , 0.674245353 ), ( 75 , 4.712248781 , -0.681779037 ), ( 75 , 4.700558022 , -0.67688616 ), ( 75 , 4.701836592 , -0.664808729 ), ( 75 , 4.78146652 , -0.621988959 ), ( 75 , 4.721495404 , -0.622549204 ), ( 75 , 4.773887748 , -0.603836456 ), ( 75 , 4.676171291 , -0.636482865 ), ( 75 , 4.687155337 , -0.607784781 ), ( 75 , 4.663490969 , -0.611862424 ), ( 75 , 4.653360643 , -0.608868385 ), ( 75 , 4.691677772 , -0.597524108 ), ( 75 , 4.78773425 , -0.54624117 ), ( 75 , 4.778821278 , -0.499401575 ), ( 75 , 4.833377987 , -0.464869287 ), ( 75 , 4.789131446 , -0.486346958 ), ( 75 , 4.801196541 , -0.478357736 ), ( 75 , 4.790319573 , -0.477430811 ), ( 75 , 4.631719653 , -0.594696097 ), ( 75 , 4.564461969 , -0.48170941 ), ( 75 , 4.739574598 , -0.479842708 ), ( 75 , 4.752849988 , -0.484063988 ), ( 75 , 4.696710507 , -0.467293986 ), ( 75 , 4.731721186 , -0.425610099 ), ( 75 , 4.769293795 , -0.40347307 ), ( 75 , 4.675965428 , -0.413250289 ), ( 75 , 4.722828487 , -0.401964095 ), ( 75 , 4.723420673 , -0.399777365 ), ( 75 , 4.709938998 , -0.39212167 ), ( 75 , 4.719596768 , -0.386270934 ), ( 75 , 4.936837706 , -0.474109441 ), ( 75 , 4.956770382 , -0.437124294 ), ( 75 , 4.931428814 , -0.398776746 ), ( 75 , 4.976812478 , -0.343102791 ), ( 75 , 4.935381803 , -0.354304352 ), ( 75 , 4.872335734 , -0.354545767 ), ( 75 , 4.749365931 , -0.370936864 ), ( 75 , 4.720554275 , -0.333464694 ), ( 75 , 4.77788699 , -0.323744314 ), ( 75 , 4.74922356 , -0.323797171 ), ( 75 , 4.82146177 , -0.323562527 ), ( 75 , 4.782049495 , -0.307317252 ), ( 75 , 4.779307222 , -0.293766133 ), ( 75 , 4.921713134 , -0.318151177 ), ( 75 , 4.903767979 , -0.295691009 ), ( 75 , 4.877860198 , -0.235148509 ), ( 75 , 4.886657075 , -0.193866647 ), ( 75 , 4.567728326 , -0.459576681 ), ( 75 , 4.585092204 , -0.416115693 ), ( 75 , 4.470057337 , -0.423073443 ), ( 75 , 4.4658645 , -0.423093845 ), ( 75 , 4.599113248 , -0.401982914 ), ( 75 , 4.68527206 , -0.347098274 ), ( 75 , 4.65763743 , -0.316029018 ), ( 75 , 4.567136412 , -0.37471441 ), ( 75 , 4.643795988 , -0.304330402 ), ( 75 , 4.537359771 , -0.309915066 ), ( 75 , 4.530437345 , -0.275748309 ), ( 75 , 4.518558386 , -0.179722721 ), ( 75 , 4.766755047 , -0.285896927 ), ( 75 , 4.714340846 , -0.226686757 ), ( 75 , 4.799084022 , -0.197008166 ), ( 75 , 4.653614893 , -0.139394086 ), ( 75 , 4.780335447 , -0.095562108 ), ( 75 , 4.763366185 , -0.047586637 ), ( 75 , 5.145263236 , -0.295122089 ), ( 75 , 5.068837045 , -0.300994372 ), ( 75 , 5.148286092 , -0.259170205 ), ( 75 , 5.081932815 , -0.220182745 ), ( 75 , 5.199285413 , -0.220276596 ), ( 75 , 5.06521502 , -0.197237978 ), ( 75 , 5.061651417 , -0.164264933 ), ( 75 , 5.08060065 , -0.162989948 ), ( 75 , 5.045214746 , -0.151670593 ), ( 75 , 4.995281595 , -0.150987662 ), ( 75 , 4.970751928 , -0.119418234 ), ( 75 , 5.108137845 , -0.142883865 ), ( 75 , 5.079153051 , -0.121774865 ), ( 75 , 5.314285424 , -0.140783035 ), ( 75 , 5.298849687 , -0.105546812 ), ( 75 , 5.307690474 , -0.026179435 ), ( 75 , 5.447446827 , 0.030062706 ), ( 75 , 5.443576003 , 0.031970492 ), ( 75 , 5.32234123 , -0.01583539 ), ( 75 , 5.391804606 , 0.057638068 ), ( 75 , 5.228917428 , -0.038949084 ), ( 75 , 5.243199638 , -0.003473533 ), ( 75 , 5.330263416 , 0.029162371 ), ( 75 , 5.325120365 , 0.132901662 ), ( 75 , 5.288492465 , 0.134118824 ), ( 75 , 4.935913414 , -0.139809386 ), ( 75 , 4.944470208 , -0.082590353 ), ( 75 , 4.971556193 , 0.024542821 ), ( 75 , 4.951959676 , 0.019571052 ), ( 75 , 4.950233774 , 0.033109831 ), ( 75 , 5.006051522 , 0.060091457 ), ( 75 , 4.81709525 , -0.043137588 ), ( 75 , 4.863312847 , 0.054729682 ), ( 75 , 4.863018539 , 0.11278923 ), ( 75 , 5.095767901 , 0.037947906 ), ( 75 , 5.276907334 , 0.188250843 ), ( 75 , 5.212374135 , 0.17047329 ), ( 75 , 5.14866769 , 0.132072615 ), ( 75 , 5.230987901 , 0.201840594 ), ( 75 , 5.006230337 , 0.091085111 ), ( 75 , 5.021955345 , 0.141745254 ), ( 75 , 5.009938455 , 0.167226711 ), ( 75 , 5.014798253 , 0.20292326 ), ( 75 , 5.032203444 , 0.260800537 ), ( 75 , 5.141993216 , 0.301194702 ), ( 75 , 5.125267002 , 0.316397724 ), ( 75 , 4.267307559 , -0.234660102 ), ( 75 , 4.266595305 , -0.233398341 ), ( 75 , 4.25665946 , -0.221308597 ), ( 75 , 4.207871712 , -0.198473935 ), ( 75 , 4.325374562 , -0.138248903 ), ( 75 , 4.327538805 , -0.122580969 ), ( 75 , 4.28715334 , -0.074184778 ), ( 75 , 4.535041654 , -0.047983129 ), ( 75 , 4.647929114 , -0.048210132 ), ( 75 , 4.599549928 , -0.05333478 ), ( 75 , 4.382065726 , -0.009717196 ), ( 75 , 4.404461478 , 0.015537379 ), ( 75 , 4.38385739 , 0.040711719 ), ( 75 , 4.12534794 , -0.107255499 ), ( 75 , 4.109188485 , -0.112476017 ), ( 75 , 4.159885062 , -0.052871616 ), ( 75 , 4.209237122 , -0.020251809 ), ( 75 , 4.188944671 , 0.010886034 ), ( 75 , 4.184847595 , 0.010396411 ), ( 75 , 3.982077218 , -0.00666091 ), ( 75 , 4.004103495 , -0.017187892 ), ( 75 , 4.111193005 , 0.136551475 ), ( 75 , 4.285879367 , 0.050184516 ), ( 75 , 4.376619754 , 0.060290352 ), ( 75 , 4.267418313 , 0.106086186 ), ( 75 , 4.451791968 , 0.188881457 ), ( 75 , 4.378840732 , 0.216746915 ), ( 75 , 4.216646626 , 0.094471564 ), ( 75 , 4.249186174 , 0.122067053 ), ( 75 , 4.258587425 , 0.199413764 ), ( 75 , 4.172217926 , 0.17972145 ), ( 75 , 4.222903268 , 0.215956948 ), ( 75 , 4.304051509 , 0.263446637 ), ( 75 , 4.313721599 , 0.331938369 ), ( 75 , 4.75111175 , 0.039147946 ), ( 75 , 4.792975391 , 0.089625318 ), ( 75 , 4.691798366 , 0.099554829 ), ( 75 , 4.663183259 , 0.099505008 ), ( 75 , 4.651089172 , 0.099385618 ), ( 75 , 4.650950044 , 0.103111854 ), ( 75 , 4.642839366 , 0.105799005 ), ( 75 , 4.815116691 , 0.093056064 ), ( 75 , 4.745191727 , 0.165740339 ), ( 75 , 4.783816924 , 0.188752704 ), ( 75 , 4.60247394 , 0.105127577 ), ( 75 , 4.555181675 , 0.150173576 ), ( 75 , 4.611301683 , 0.184559311 ), ( 75 , 4.607974946 , 0.197442245 ), ( 75 , 4.744438083 , 0.265895 ), ( 75 , 4.677662797 , 0.290293489 ), ( 75 , 4.921355952 , 0.194839203 ), ( 75 , 4.974097962 , 0.224972562 ), ( 75 , 4.872131511 , 0.226678219 ), ( 75 , 4.88615175 , 0.263361308 ), ( 75 , 4.910075709 , 0.309401259 ), ( 75 , 5.041661129 , 0.338941739 ), ( 75 , 4.99570401 , 0.33630471 ), ( 75 , 4.972474807 , 0.340102478 ), ( 75 , 5.004221514 , 0.386973359 ), ( 75 , 5.005316752 , 0.394175464 ), ( 75 , 4.811989176 , 0.261828426 ), ( 75 , 4.825908749 , 0.275029877 ), ( 75 , 4.790555576 , 0.313837369 ), ( 75 , 4.74507911 , 0.343244064 ), ( 75 , 4.804467154 , 0.365383592 ), ( 75 , 4.967491977 , 0.415416392 ), ( 75 , 4.513134934 , 0.253991119 ), ( 75 , 4.502902381 , 0.252858718 ), ( 75 , 4.447086293 , 0.245723171 ), ( 75 , 4.516613124 , 0.310694887 ), ( 75 , 4.600590568 , 0.335836858 ), ( 75 , 4.364217872 , 0.309049475 ), ( 75 , 4.604089062 , 0.424973888 ), ( 75 , 4.507916466 , 0.436075391 ), ( 75 , 4.528803349 , 0.50450834 ), ( 75 , 4.712835722 , 0.362001609 ), ( 75 , 4.734339988 , 0.399930145 ), ( 75 , 4.771071127 , 0.458039392 ), ( 75 , 4.632629448 , 0.428872369 ), ( 75 , 4.861290656 , 0.493839757 ), ( 75 , 4.746712963 , 0.520422181 ), ( 75 , 4.805445113 , 0.574906476 ), ( 75 , 4.794674579 , 0.5767499 ), ( 75 , 4.685458624 , 0.530062947 ), ( 75 , 4.684162048 , 0.622598397 ), ( 75 , 4.730342804 , 0.689067141 ), ( 75 , 1.261215142 , -1.540620944 ), ( 75 , 0.6793832 , -1.483827905 ), ( 75 , 1.337852381 , -1.353858436 ), ( 75 , 1.110539999 , -1.323099387 ), ( 75 , 0.273231347 , -1.353526578 ), ( 75 , 0.459895326 , -1.35013249 ), ( 75 , 0.672457637 , -1.291949815 ), ( 75 , 0.850661756 , -1.217938331 ), ( 75 , 1.406829135 , -1.248015792 ), ( 75 , 1.268570061 , -1.218786775 ), ( 75 , 1.488979941 , -1.200265801 ), ( 75 , 1.425460442 , -1.122668292 ), ( 75 , 1.24785588 , -1.153288304 ), ( 75 , 1.073603897 , -1.219480773 ), ( 75 , 0.993443247 , -1.219788903 ), ( 75 , 0.868335168 , -1.149972481 ), ( 75 , 0.93191324 , -1.093273441 ), ( 75 , 0.973685111 , -1.073526579 ), ( 75 , 0.928165071 , -1.071535547 ), ( 75 , 0.350096518 , -1.269714337 ), ( 75 , 0.382442544 , -1.251466015 ), ( 75 , 0.592865532 , -1.211811388 ), ( 75 , 0.659686176 , -1.186263923 ), ( 75 , 0.339705794 , -1.1712964 ), ( 75 , 0.166450658 , -1.152657997 ), ( 75 , 0.093898072 , -1.147582275 ), ( 75 , 0.297025521 , -1.079865016 ), ( 75 , 0.398260249 , -1.136519247 ), ( 75 , 0.572269298 , -1.032394554 ), ( 75 , 0.359339866 , -1.070398018 ), ( 75 , 0.399773562 , -1.069001585 ), ( 75 , 0.427135069 , -1.056124332 ), ( 75 , 0.349998354 , -1.048493854 ), ( 75 , 0.784133801 , -1.110519282 ), ( 75 , 0.772398677 , -1.100166392 ), ( 75 , 0.922437649 , -1.044701425 ), ( 75 , 0.800555747 , -1.028577234 ), ( 75 , 0.746699736 , -0.998198087 ), ( 75 , 0.978590693 , -0.950803077 ), ( 75 , 0.837883138 , -0.984387065 ), ( 75 , 0.620447026 , -1.042997186 ), ( 75 , 0.656156944 , -0.89671026 ), ( 75 , 0.803448878 , -0.835255965 ), ( 75 , 0.780975848 , -0.763572619 ), ( 75 , 0.785976425 , -0.730838704 ), ( 75 , 1.452471829 , -1.107514996 ), ( 75 , 1.479673968 , -1.028996611 ), ( 75 , 1.39072952 , -1.0992961 ), ( 75 , 1.300126682 , -1.011722781 ), ( 75 , 1.422758777 , -1.022089668 ), ( 75 , 1.502443591 , -0.993369886 ), ( 75 , 1.528029841 , -0.961339154 ), ( 75 , 1.47331737 , -0.934365877 ), ( 75 , 1.342020065 , -0.959732666 ), ( 75 , 1.344419372 , -0.860394826 ), ( 75 , 1.349208571 , -0.854853243 ), ( 75 , 1.152421823 , -0.999255198 ), ( 75 , 1.276144445 , -0.97209643 ), ( 75 , 1.321794151 , -0.867480278 ), ( 75 , 1.260823676 , -0.822648432 ), ( 75 , 1.229854036 , -0.834726695 ), ( 75 , 1.225261914 , -0.799238882 ), ( 75 , 1.15966309 , -0.782855036 ), ( 75 , 1.498558688 , -0.869912242 ), ( 75 , 1.468709625 , -0.842724902 ), ( 75 , 1.450118942 , -0.828594069 ), ( 75 , 1.513948114 , -0.796681849 ), ( 75 , 1.526516976 , -0.756853488 ), ( 75 , 1.505811373 , -0.701603855 ), ( 75 , 1.379543247 , -0.71993359 ), ( 75 , 1.399036454 , -0.693853072 ), ( 75 , 1.419468863 , -0.608201192 ), ( 75 , 1.414316318 , -0.600656112 ), ( 75 , 1.033477549 , -0.84611274 ), ( 75 , 1.052842506 , -0.805247163 ), ( 75 , 1.095413997 , -0.819295041 ), ( 75 , 0.964976349 , -0.71154385 ), ( 75 , 0.922447548 , -0.585477118 ), ( 75 , 1.125062707 , -0.596667012 ), ( 75 , 1.267682496 , -0.472997482 ), ( 75 , 1.091079436 , -0.602094643 ), ( 75 , 1.059045435 , -0.479669322 ), ( 75 , 1.206871353 , -0.472076348 ), ( 75 , 1.217078961 , -0.44865841 ), ( 75 , 1.199519146 , -0.437017638 ), ( 75 , 1.094050362 , -0.438016413 ), ( 75 , 0.006502225 , -1.098214471 ), ( 75 , 0.202578656 , -1.011028446 ), ( 75 , 0.217889062 , -1.001578812 ), ( 75 , 0.340290741 , -0.909417816 ), ( 75 , 0.023399589 , -0.994065022 ), ( 75 , 0.178306549 , -0.928693957 ), ( 75 , 0.398258099 , -0.870998278 ), ( 75 , 0.355797285 , -0.787788402 ), ( 75 , 0.533440919 , -0.862355372 ), ( 75 , 0.612019442 , -0.87793744 ), ( 75 , 0.565333321 , -0.793550426 ), ( 75 , 0.691612025 , -0.780731169 ), ( 75 , 0.632192968 , -0.735816525 ), ( 75 , 0.526005428 , -0.710946564 ), ( 75 , 0.080039712 , -0.871022138 ), ( 75 , 0.167791257 , -0.801121624 ), ( 75 , 0.365114778 , -0.714828534 ), ( 75 , 0.214083157 , -0.742843956 ), ( 75 , 0.186380656 , -0.671312218 ), ( 75 , 0.425627553 , -0.66557426 ), ( 75 , 0.434986782 , -0.654036143 ), ( 75 , 0.350211407 , -0.632559616 ), ( 75 , 0.511111287 , -0.542530313 ), ( 75 , 0.433178506 , -0.506535721 ), ( 75 , 0.479789907 , -0.506861161 ), ( 75 , 0.400956782 , -0.483511821 ), ( 75 , 0.435878513 , -0.399916991 ), ( 75 , 0.384161247 , -0.356640064 ), ( 75 , 0.951925694 , -0.546277842 ), ( 75 , 0.895329778 , -0.52086066 ), ( 75 , 0.872973111 , -0.50360648 ), ( 75 , 0.712978915 , -0.595006569 ), ( 75 , 0.66541265 , -0.471292531 ), ( 75 , 0.768483056 , -0.457267352 ), ( 75 , 0.824148879 , -0.434354923 ), ( 75 , 0.773011375 , -0.370836922 ), ( 75 , 1.062392916 , -0.426912293 ), ( 75 , 0.983211598 , -0.358213657 ), ( 75 , 1.05244635 , -0.388787405 ), ( 75 , 1.055593427 , -0.366880693 ), ( 75 , 1.044675037 , -0.354879525 ), ( 75 , 1.108542703 , -0.279131305 ), ( 75 , 0.913804587 , -0.341282789 ), ( 75 , 0.881310785 , -0.269805866 ), ( 75 , 0.966795778 , -0.249572626 ), ( 75 , 0.563216798 , -0.401251543 ), ( 75 , 0.696617237 , -0.356559409 ), ( 75 , 0.698188353 , -0.284635223 ), ( 75 , 0.519300905 , -0.400021467 ), ( 75 , 0.572207904 , -0.336975736 ), ( 75 , 0.57054492 , -0.225613501 ), ( 75 , 0.809493764 , -0.289871071 ), ( 75 , 0.93021545 , -0.175329168 ), ( 75 , 0.832792537 , -0.194182447 ), ( 75 , 0.711764045 , -0.115936744 ), ( 75 , 0.860313236 , -0.072254152 ), ( 75 , 0.803300461 , -0.091513126 ), ( 75 , 0.743234449 , -0.118803747 ), ( 75 , 0.735164247 , -0.100155632 ), ( 75 , 0.75577542 , -0.091617758 ), ( 75 , 2.278266839 , -1.56138268 ), ( 75 , 1.883371696 , -1.474267269 ), ( 75 , 2.007382727 , -1.441316125 ), ( 75 , 2.872303906 , -1.441300567 ), ( 75 , 1.778784425 , -1.414853276 ), ( 75 , 2.250560828 , -1.343917608 ), ( 75 , 1.987999115 , -1.318496644 ), ( 75 , 2.3831418 , -1.336336317 ), ( 75 , 2.389615764 , -1.199996842 ), ( 75 , 2.355770978 , -1.188456574 ), ( 75 , 2.934311542 , -1.252263105 ), ( 75 , 3.055809258 , -1.21600358 ), ( 75 , 2.96751753 , -1.170232334 ), ( 75 , 3.003941417 , -1.160456665 ), ( 75 , 2.88813039 , -1.152131425 ), ( 75 , 2.956219965 , -1.107871287 ), ( 75 , 2.58665594 , -1.247119371 ), ( 75 , 2.623677578 , -1.234436912 ), ( 75 , 2.672250047 , -1.156927125 ), ( 75 , 2.706625675 , -1.153025941 ), ( 75 , 2.613994921 , -1.151625724 ), ( 75 , 2.525278165 , -1.166905525 ), ( 75 , 2.506710066 , -1.15404984 ), ( 75 , 2.465008466 , -1.129365986 ), ( 75 , 2.49455326 , -1.121148358 ), ( 75 , 2.523982397 , -1.091805739 ), ( 75 , 2.770449094 , -1.11934797 ), ( 75 , 2.756934116 , -1.115971654 ), ( 75 , 2.710223408 , -1.020734746 ), ( 75 , 2.633916377 , -1.050684671 ), ( 75 , 2.581737196 , -1.057560801 ), ( 75 , 2.545023256 , -1.047708617 ), ( 75 , 2.573898753 , -1.026419369 ), ( 75 , 2.556967943 , -1.030545911 ), ( 75 , 2.665681541 , -1.032437646 ), ( 75 , 2.657766835 , -1.012996641 ), ( 75 , 2.603829521 , -1.00626622 ), ( 75 , 2.019631103 , -1.248639815 ), ( 75 , 2.009327823 , -1.219042606 ), ( 75 , 1.752760934 , -1.242981298 ), ( 75 , 1.735035661 , -1.232273324 ), ( 75 , 1.74987941 , -1.23308797 ), ( 75 , 2.128226277 , -1.202510888 ), ( 75 , 1.999448806 , -1.177192112 ), ( 75 , 2.01720225 , -1.167694315 ), ( 75 , 1.706945191 , -1.230733671 ), ( 75 , 1.862225351 , -1.169656945 ), ( 75 , 1.886301563 , -1.183056716 ), ( 75 , 1.880404635 , -1.170537511 ), ( 75 , 1.837323117 , -1.146786736 ), ( 75 , 1.768981045 , -1.135236744 ), ( 75 , 1.850679587 , -1.125561272 ), ( 75 , 2.180500916 , -1.048997191 ), ( 75 , 2.116387888 , -1.053967912 ), ( 75 , 2.361922586 , -1.133138781 ), ( 75 , 2.385642842 , -1.096936976 ), ( 75 , 2.310946956 , -1.090982556 ), ( 75 , 2.370107052 , -1.088233614 ), ( 75 , 2.498137704 , -1.056333308 ), ( 75 , 2.469942278 , -1.042730562 ), ( 75 , 2.417776336 , -1.056544144 ), ( 75 , 2.406535308 , -1.005640089 ), ( 75 , 2.327613844 , -0.986448794 ), ( 75 , 2.530055665 , -1.034702143 ), ( 75 , 2.535089215 , -1.030456101 ), ( 75 , 2.501251695 , -1.010243568 ), ( 75 , 2.450733277 , -0.993148149 ), ( 75 , 2.489103906 , -0.963982674 ), ( 75 , 2.581726498 , -0.954005045 ), ( 75 , 2.529331875 , -0.929525486 ), ( 75 , 2.50782948 , -0.908059646 ), ( 75 , 2.514613539 , -0.899078795 ), ( 75 , 2.430397957 , -0.897777786 ), ( 75 , 2.237011498 , -0.968132082 ), ( 75 , 2.200752205 , -0.973711286 ), ( 75 , 2.264855986 , -0.976378826 ), ( 75 , 2.171783218 , -0.975485516 ), ( 75 , 2.212401216 , -0.898382438 ), ( 75 , 2.238119622 , -0.857917236 ), ( 75 , 2.329763737 , -0.915820547 ), ( 75 , 2.349699144 , -0.87702171 ), ( 75 , 2.450799166 , -0.825890851 ), ( 75 , 2.438136464 , -0.823879235 ), ( 75 , 2.319266089 , -0.864944245 ), ( 75 , 2.291495201 , -0.803525387 ), ( 75 , 3.114261365 , -1.139517521 ), ( 75 , 3.061451029 , -1.114032779 ), ( 75 , 3.053594308 , -1.107913314 ), ( 75 , 2.988528236 , -1.107098896 ), ( 75 , 3.035776994 , -1.07473979 ), ( 75 , 3.057923981 , -1.06431121 ), ( 75 , 2.993336869 , -1.035902726 ), ( 75 , 3.054640589 , -1.0297799 ), ( 75 , 3.006609959 , -1.026111126 ), ( 75 , 3.001313896 , -1.024167278 ), ( 75 , 2.901281114 , -1.065551391 ), ( 75 , 2.960609876 , -1.051455948 ), ( 75 , 2.986352128 , -1.015451846 ), ( 75 , 2.966688431 , -1.014990845 ), ( 75 , 2.93878097 , -0.995742192 ), ( 75 , 2.864118108 , -1.004459692 ), ( 75 , 2.878555977 , -0.98097333 ), ( 75 , 3.132879454 , -0.992480482 ), ( 75 , 2.976858676 , -0.987902486 ), ( 75 , 3.009758788 , -0.901679084 ), ( 75 , 2.777972004 , -1.032675508 ), ( 75 , 2.81649237 , -0.973743302 ), ( 75 , 2.701048377 , -0.977743272 ), ( 75 , 2.84621911 , -0.904085003 ), ( 75 , 2.852228537 , -0.898830842 ), ( 75 , 2.896551776 , -0.890627185 ), ( 75 , 2.776333467 , -0.835135397 ), ( 75 , 2.739862217 , -0.838123872 ), ( 75 , 2.799837952 , -0.798807301 ), ( 75 , 3.135690401 , -0.920988944 ), ( 75 , 3.061965771 , -0.883575707 ), ( 75 , 3.053819446 , -0.799438741 ), ( 75 , 2.936892159 , -0.82126705 ), ( 75 , 2.949618241 , -0.825646118 ), ( 75 , 3.113676847 , -0.815794901 ), ( 75 , 3.105737364 , -0.719898667 ), ( 75 , 3.097935884 , -0.702953582 ), ( 75 , 3.013886821 , -0.684787877 ), ( 75 , 2.867515479 , -0.782077217 ), ( 75 , 2.904546818 , -0.752559072 ), ( 75 , 2.897775249 , -0.703518694 ), ( 75 , 2.948779962 , -0.686301692 ), ( 75 , 2.979286327 , -0.632550481 ), ( 75 , 2.972044634 , -0.620006309 ), ( 75 , 2.896748919 , -0.583719823 ), ( 75 , 2.572435588 , -0.909793147 ), ( 75 , 2.559534923 , -0.882716106 ), ( 75 , 2.629091405 , -0.852803705 ), ( 75 , 2.675074092 , -0.836356011 ), ( 75 , 2.614526948 , -0.821915958 ), ( 75 , 2.529293234 , -0.841891157 ), ( 75 , 2.582130466 , -0.788157363 ), ( 75 , 2.55656733 , -0.762336862 ), ( 75 , 2.679295562 , -0.769553783 ), ( 75 , 2.657748245 , -0.762623311 ), ( 75 , 2.644464288 , -0.742198529 ), ( 75 , 2.71959991 , -0.710270669 ), ( 75 , 2.619945884 , -0.748507913 ), ( 75 , 2.593128353 , -0.749041957 ), ( 75 , 2.590133045 , -0.738459035 ), ( 75 , 2.590652873 , -0.730361258 ), ( 75 , 2.481264718 , -0.794131274 ), ( 75 , 2.47259142 , -0.772125694 ), ( 75 , 2.449146136 , -0.74742813 ), ( 75 , 2.385206441 , -0.759056488 ), ( 75 , 2.495872055 , -0.679590073 ), ( 75 , 2.565629207 , -0.669567771 ), ( 75 , 2.618391439 , -0.629065884 ), ( 75 , 2.60480798 , -0.607820367 ), ( 75 , 2.596957096 , -0.588012326 ), ( 75 , 2.746303591 , -0.714931918 ), ( 75 , 2.791990656 , -0.586653899 ), ( 75 , 2.755445854 , -0.613113819 ), ( 75 , 2.769913874 , -0.547106158 ), ( 75 , 2.866122103 , -0.544630664 ), ( 75 , 2.917596419 , -0.519190964 ), ( 75 , 2.819962686 , -0.466456937 ), ( 75 , 2.617745754 , -0.547151339 ), ( 75 , 2.64456793 , -0.508211932 ), ( 75 , 2.633975154 , -0.469657187 ), ( 75 , 2.816729365 , -0.436785154 ), ( 75 , 1.648593846 , -1.117536388 ), ( 75 , 1.724180795 , -1.067670905 ), ( 75 , 1.841446712 , -1.03778306 ), ( 75 , 1.618279615 , -1.073370037 ), ( 75 , 1.814648369 , -0.993757431 ), ( 75 , 1.9696995 , -1.011240057 ), ( 75 , 2.049220781 , -0.961309092 ), ( 75 , 1.847842773 , -0.976477595 ), ( 75 , 1.903131687 , -0.943206986 ), ( 75 , 2.033968778 , -0.899729453 ), ( 75 , 1.574826244 , -0.95908061 ), ( 75 , 1.74368325 , -0.922101117 ), ( 75 , 1.916648191 , -0.872266467 ), ( 75 , 1.993367742 , -0.79292323 ), ( 75 , 1.818513391 , -0.890398749 ), ( 75 , 1.893612324 , -0.843046492 ), ( 75 , 1.894435406 , -0.808538129 ), ( 75 , 1.95604612 , -0.767301661 ), ( 75 , 2.104812396 , -0.897807573 ), ( 75 , 2.162573767 , -0.872540465 ), ( 75 , 2.169781443 , -0.818440656 ), ( 75 , 2.191288143 , -0.83396363 ), ( 75 , 2.125349844 , -0.841066383 ), ( 75 , 2.12413716 , -0.799960136 ), ( 75 , 2.24534182 , -0.772664498 ), ( 75 , 2.301065969 , -0.694634656 ), ( 75 , 2.243684466 , -0.734829152 ), ( 75 , 2.219255004 , -0.718624807 ), ( 75 , 2.19534884 , -0.704779018 ), ( 75 , 2.188760243 , -0.706071199 ), ( 75 , 2.250306072 , -0.713292749 ), ( 75 , 2.022665777 , -0.800474802 ), ( 75 , 2.03469279 , -0.805636501 ), ( 75 , 2.038473261 , -0.757376646 ), ( 75 , 2.070777186 , -0.741281884 ), ( 75 , 2.085268583 , -0.726775077 ), ( 75 , 2.084731765 , -0.72493712 ), ( 75 , 2.121712664 , -0.699870657 ), ( 75 , 2.024824438 , -0.75009884 ), ( 75 , 1.990928628 , -0.707408014 ), ( 75 , 2.048241881 , -0.702586029 ), ( 75 , 2.072042537 , -0.670557928 ), ( 75 , 2.048619501 , -0.680698223 ), ( 75 , 2.15273867 , -0.670875255 ), ( 75 , 2.143971667 , -0.642298891 ), ( 75 , 2.16512447 , -0.626257369 ), ( 75 , 2.150441656 , -0.632299595 ), ( 75 , 2.106793753 , -0.602933234 ), ( 75 , 2.096436506 , -0.595572384 ), ( 75 , 2.141765672 , -0.565125294 ), ( 75 , 2.152209786 , -0.561229544 ), ( 75 , 1.660653584 , -0.908790484 ), ( 75 , 1.588238783 , -0.891838973 ), ( 75 , 1.739280978 , -0.841550259 ), ( 75 , 1.740099124 , -0.764884359 ), ( 75 , 1.902045304 , -0.735484459 ), ( 75 , 1.879107736 , -0.720212603 ), ( 75 , 1.897363742 , -0.718529162 ), ( 75 , 1.781556947 , -0.764462947 ), ( 75 , 1.793763912 , -0.736592582 ), ( 75 , 1.846059426 , -0.704365732 ), ( 75 , 1.891452044 , -0.671795626 ), ( 75 , 1.860278834 , -0.658155684 ), ( 75 , 1.619911441 , -0.783903296 ), ( 75 , 1.610251901 , -0.717645574 ), ( 75 , 1.789774528 , -0.68164492 ), ( 75 , 1.725117464 , -0.677340749 ), ( 75 , 1.820389525 , -0.643794981 ), ( 75 , 1.855413876 , -0.627268083 ), ( 75 , 1.822109158 , -0.619012722 ), ( 75 , 1.807490222 , -0.597300433 ), ( 75 , 1.709344735 , -0.648791886 ), ( 75 , 1.767670268 , -0.552471466 ), ( 75 , 1.940034655 , -0.6679964 ), ( 75 , 1.941953476 , -0.662670523 ), ( 75 , 2.018372152 , -0.634859614 ), ( 75 , 2.05226704 , -0.624662859 ), ( 75 , 2.021437955 , -0.589972358 ), ( 75 , 2.020434707 , -0.581405594 ), ( 75 , 2.009340094 , -0.583379504 ), ( 75 , 1.956457531 , -0.615408221 ), ( 75 , 1.965972801 , -0.594992581 ), ( 75 , 1.95165178 , -0.591499956 ), ( 75 , 1.940338789 , -0.554712205 ), ( 75 , 1.946776053 , -0.552285045 ), ( 75 , 2.040815663 , -0.570221975 ), ( 75 , 2.000407611 , -0.556064822 ), ( 75 , 1.995494591 , -0.537425351 ), ( 75 , 2.005607436 , -0.509474717 ), ( 75 , 1.89387552 , -0.552267115 ), ( 75 , 1.853278633 , -0.557552503 ), ( 75 , 1.913564415 , -0.537539873 ), ( 75 , 1.891331454 , -0.509326826 ), ( 75 , 1.837733615 , -0.535196854 ), ( 75 , 1.882543634 , -0.484011497 ), ( 75 , 2.020065533 , -0.450988153 ), ( 75 , 1.993838343 , -0.424060287 ), ( 75 , 2.033402727 , -0.405961233 ), ( 75 , 1.893827843 , -0.4133217 ), ( 75 , 1.983444135 , -0.371867859 ), ( 75 , 1.938211147 , -0.390299669 ), ( 75 , 2.393788432 , -0.676907849 ), ( 75 , 2.335715018 , -0.668943154 ), ( 75 , 2.301298644 , -0.641420123 ), ( 75 , 2.330083866 , -0.622200373 ), ( 75 , 2.330725919 , -0.561218487 ), ( 75 , 2.518668768 , -0.527285649 ), ( 75 , 2.252691931 , -0.546955795 ), ( 75 , 2.297749319 , -0.518853231 ), ( 75 , 2.214949142 , -0.558391624 ), ( 75 , 2.361013516 , -0.48024098 ), ( 75 , 2.569246332 , -0.384301949 ), ( 75 , 2.526801464 , -0.403083963 ), ( 75 , 2.514454938 , -0.383924624 ), ( 75 , 2.644809775 , -0.365625805 ), ( 75 , 2.650151189 , -0.343980945 ), ( 75 , 2.599338943 , -0.343429902 ), ( 75 , 2.579292264 , -0.32565306 ), ( 75 , 2.477857136 , -0.393194679 ), ( 75 , 2.421769932 , -0.351165293 ), ( 75 , 2.4646841 , -0.272943416 ), ( 75 , 2.604744937 , -0.27743005 ), ( 75 , 2.611492224 , -0.243331902 ), ( 75 , 2.537086158 , -0.183304923 ), ( 75 , 2.170688228 , -0.459058066 ), ( 75 , 2.212128315 , -0.405839467 ), ( 75 , 2.105722069 , -0.436979867 ), ( 75 , 2.094612092 , -0.407548025 ), ( 75 , 2.247507786 , -0.388430909 ), ( 75 , 2.211338934 , -0.317183399 ), ( 75 , 2.079144857 , -0.401501163 ), ( 75 , 2.122568319 , -0.346050435 ), ( 75 , 2.09157404 , -0.339749431 ), ( 75 , 2.017375635 , -0.333474292 ), ( 75 , 2.167994372 , -0.264450638 ), ( 75 , 2.220193037 , -0.2803494 ), ( 75 , 2.2299334 , -0.244557054 ), ( 75 , 2.173016197 , -0.261362609 ), ( 75 , 2.098345258 , -0.27470055 ), ( 75 , 2.11851337 , -0.236884836 ), ( 75 , 2.328296247 , -0.302974302 ), ( 75 , 2.342347965 , -0.304290397 ), ( 75 , 2.412713507 , -0.269117053 ), ( 75 , 2.270680445 , -0.256508348 ), ( 75 , 2.302033796 , -0.236083545 ), ( 75 , 2.392319452 , -0.208428352 ), ( 75 , 2.35858383 , -0.211898861 ), ( 75 , 2.478814907 , -0.17496261 ), ( 75 , 2.426321959 , -0.145741304 ), ( 75 , 2.44666937 , -0.134917869 ), ( 75 , 2.227072402 , -0.122873601 ), ( 75 , 2.364729033 , -0.146164503 ), ( 75 , 2.390954294 , -0.136223934 ), ( 75 , 2.370820579 , -0.077519601 ), ( 75 , 2.378391589 , -0.065989404 ), ( 75 , 2.296697277 , -0.111892833 ), ( 75 , 2.305737446 , -0.043999322 ), ( 75 , 2.384546082 , -0.045367512 ), ( 75 , 3.431880012 , -1.447763285 ), ( 75 , 3.972010929 , -1.389505877 ), ( 75 , 4.506942081 , -1.437945347 ), ( 75 , 4.309933088 , -1.43050131 ), ( 75 , 4.544771495 , -1.379943817 ), ( 75 , 4.54599656 , -1.347275978 ), ( 75 , 4.083875258 , -1.380312588 ), ( 75 , 4.225652024 , -1.348072852 ), ( 75 , 4.277314498 , -1.296882099 ), ( 75 , 4.193942953 , -1.319809255 ), ( 75 , 3.422955621 , -1.41633704 ), ( 75 , 3.236466084 , -1.386955074 ), ( 75 , 3.552645602 , -1.301423543 ), ( 75 , 3.94958784 , -1.259949397 ), ( 75 , 4.305808918 , -1.252594164 ), ( 75 , 4.66491977 , -1.240848004 ), ( 75 , 4.621113871 , -1.233846427 ), ( 75 , 4.576485334 , -1.232794764 ), ( 75 , 4.608909152 , -1.151876511 ), ( 75 , 3.977804019 , -1.181764685 ), ( 75 , 4.333063348 , -1.114280158 ), ( 75 , 4.201303937 , -1.101843078 ), ( 75 , 4.288203789 , -1.092039176 ), ( 75 , 4.387155288 , -1.057035363 ), ( 75 , 4.307244126 , -1.014418637 ), ( 75 , 4.178639191 , -1.050705029 ), ( 75 , 4.269214848 , -1.019159004 ), ( 75 , 4.180514934 , -0.984258341 ), ( 75 , 4.211734127 , -0.983317239 ), ( 75 , 3.27656788 , -1.315992816 ), ( 75 , 3.318432419 , -1.231272337 ), ( 75 , 3.470160408 , -1.23007348 ), ( 75 , 3.510860936 , -1.229254255 ), ( 75 , 3.493443255 , -1.216156454 ), ( 75 , 3.41207336 , -1.208279989 ), ( 75 , 3.762381516 , -1.205771142 ), ( 75 , 3.734637112 , -1.196256224 ), ( 75 , 3.680540158 , -1.19561599 ), ( 75 , 3.654281511 , -1.186924664 ), ( 75 , 3.666444087 , -1.178198403 ), ( 75 , 3.64705008 , -1.15866716 ), ( 75 , 3.601076304 , -1.165089422 ), ( 75 , 3.169107668 , -1.218209804 ), ( 75 , 3.263961019 , -1.199628891 ), ( 75 , 3.296632996 , -1.192948845 ), ( 75 , 3.183623234 , -1.177297752 ), ( 75 , 3.249999664 , -1.180405898 ), ( 75 , 3.328445511 , -1.159906783 ), ( 75 , 3.324306236 , -1.129729159 ), ( 75 , 3.388389595 , -1.123310334 ), ( 75 , 3.571266464 , -1.117981416 ), ( 75 , 3.543301291 , -1.100288913 ), ( 75 , 3.59206161 , -1.077026884 ), ( 75 , 3.671667255 , -1.098701075 ), ( 75 , 3.694809651 , -1.08863749 ), ( 75 , 3.618283135 , -1.060333161 ), ( 75 , 3.483219901 , -1.070377732 ), ( 75 , 3.998341849 , -1.088447806 ), ( 75 , 3.889298309 , -1.038534474 ), ( 75 , 3.958591666 , -1.002514261 ), ( 75 , 3.914350924 , -0.975864827 ), ( 75 , 4.039345108 , -0.995086895 ), ( 75 , 4.109338122 , -0.898343578 ), ( 75 , 4.019529469 , -0.947574035 ), ( 75 , 3.98365598 , -0.907101676 ), ( 75 , 4.060061616 , -0.924727954 ), ( 75 , 4.04578116 , -0.863147627 ), ( 75 , 4.034323481 , -0.847918251 ), ( 75 , 3.807065256 , -0.968025943 ), ( 75 , 3.714857771 , -0.984069929 ), ( 75 , 3.829421799 , -0.874171211 ), ( 75 , 3.923010448 , -0.837020045 ), ( 75 , 3.920572472 , -0.827910198 ), ( 75 , 3.906556379 , -0.813872898 ), ( 75 , 3.917362309 , -0.741714066 ), ( 75 , 4.677828918 , -1.054075842 ), ( 75 , 4.577281491 , -1.030311441 ), ( 75 , 4.527252023 , -1.061943575 ), ( 75 , 4.519210237 , -1.061136145 ), ( 75 , 4.43127014 , -1.059024667 ), ( 75 , 4.43185966 , -1.037033414 ), ( 75 , 4.458884682 , -1.030575999 ), ( 75 , 4.543193439 , -1.047483066 ), ( 75 , 4.688201125 , -1.028203588 ), ( 75 , 4.682659439 , -1.027374619 ), ( 75 , 4.710785584 , -0.981844922 ), ( 75 , 4.658056765 , -0.980282502 ), ( 75 , 4.696692836 , -0.949077679 ), ( 75 , 4.637746694 , -0.970890586 ), ( 75 , 4.507562848 , -0.957357172 ), ( 75 , 4.529092216 , -0.863104889 ), ( 75 , 4.500461316 , -0.87474464 ), ( 75 , 4.350030416 , -0.959673556 ), ( 75 , 4.359084473 , -0.91578983 ), ( 75 , 4.266497172 , -0.934689443 ), ( 75 , 4.3235852 , -0.889616098 ), ( 75 , 4.23787145 , -0.882137764 ), ( 75 , 4.362112349 , -0.876381052 ), ( 75 , 4.395913786 , -0.843335032 ), ( 75 , 4.396118511 , -0.830610425 ), ( 75 , 4.340465903 , -0.862116341 ), ( 75 , 4.339948098 , -0.820381319 ), ( 75 , 4.348912385 , -0.78817633 ), ( 75 , 4.678837569 , -0.902571977 ), ( 75 , 4.628795535 , -0.871958363 ), ( 75 , 4.633146848 , -0.829245603 ), ( 75 , 4.639977883 , -0.813113707 ), ( 75 , 4.63539038 , -0.8080688 ), ( 75 , 4.499906384 , -0.806030937 ), ( 75 , 4.578851614 , -0.815002187 ), ( 75 , 4.599247434 , -0.81333227 ), ( 75 , 4.580919779 , -0.780891023 ), ( 75 , 4.635583346 , -0.760503577 ), ( 75 , 4.670704542 , -0.726902702 ), ( 75 , 4.66780168 , -0.723306794 ), ( 75 , 4.664846517 , -0.723652825 ), ( 75 , 4.601885259 , -0.721243732 ), ( 75 , 4.588956064 , -0.716277817 ), ( 75 , 4.614764051 , -0.712330899 ), ( 75 , 4.587285316 , -0.680990771 ), ( 75 , 4.472568114 , -0.819811116 ), ( 75 , 4.482570795 , -0.818416375 ), ( 75 , 4.42609352 , -0.783513088 ), ( 75 , 4.470306296 , -0.755915143 ), ( 75 , 4.426298088 , -0.730109144 ), ( 75 , 4.436427907 , -0.718281415 ), ( 75 , 4.41089813 , -0.730079026 ), ( 75 , 4.416118746 , -0.709954533 ), ( 75 , 4.431522952 , -0.689492034 ), ( 75 , 4.463231801 , -0.671255923 ), ( 75 , 4.45589895 , -0.66677339 ), ( 75 , 4.400970469 , -0.650182446 ), ( 75 , 4.399052834 , -0.643747407 ), ( 75 , 4.479750299 , -0.629678634 ), ( 75 , 4.168751164 , -0.872289016 ), ( 75 , 4.283745212 , -0.733105436 ), ( 75 , 4.133001392 , -0.736628537 ), ( 75 , 4.061409369 , -0.792808018 ), ( 75 , 3.988024193 , -0.764354008 ), ( 75 , 3.991685858 , -0.73861925 ), ( 75 , 3.970666232 , -0.718717263 ), ( 75 , 4.206872691 , -0.618710102 ), ( 75 , 4.068861313 , -0.664470299 ), ( 75 , 4.143926192 , -0.572615407 ), ( 75 , 4.116529952 , -0.532937162 ), ( 75 , 4.331475755 , -0.716192043 ), ( 75 , 4.326169744 , -0.680932479 ), ( 75 , 4.3357651 , -0.652459822 ), ( 75 , 4.332798647 , -0.585255513 ), ( 75 , 4.293285561 , -0.579468955 ), ( 75 , 4.282305309 , -0.581219498 ), ( 75 , 4.300528153 , -0.559849911 ), ( 75 , 4.486749925 , -0.524506024 ), ( 75 , 4.476527255 , -0.503921529 ), ( 75 , 4.407733817 , -0.466748747 ), ( 75 , 4.188047555 , -0.555633062 ), ( 75 , 4.187198699 , -0.517190631 ), ( 75 , 4.295719494 , -0.473880337 ), ( 75 , 4.2693834 , -0.406216377 ), ( 75 , 3.245007235 , -1.114744435 ), ( 75 , 3.182549149 , -1.113874632 ), ( 75 , 3.193935577 , -1.106206099 ), ( 75 , 3.259578825 , -1.071373928 ), ( 75 , 3.338365082 , -1.04851935 ), ( 75 , 3.220620594 , -1.072853022 ), ( 75 , 3.608716186 , -0.92995569 ), ( 75 , 3.438382778 , -0.989325772 ), ( 75 , 3.495769557 , -0.901832295 ), ( 75 , 3.160189442 , -1.001201346 ), ( 75 , 3.202842325 , -0.968359602 ), ( 75 , 3.456265947 , -0.87382655 ), ( 75 , 3.540903198 , -0.815685596 ), ( 75 , 3.525948069 , -0.786605269 ), ( 75 , 3.475516967 , -0.780238528 ), ( 75 , 3.772597671 , -0.823409603 ), ( 75 , 3.644346409 , -0.821917733 ), ( 75 , 3.661522003 , -0.793591751 ), ( 75 , 3.724713342 , -0.802612281 ), ( 75 , 3.801496862 , -0.709582507 ), ( 75 , 3.633763235 , -0.741479218 ), ( 75 , 3.636699409 , -0.681676758 ), ( 75 , 3.7016704 , -0.576884355 ), ( 75 , 3.715325843 , -0.561446404 ), ( 75 , 3.163651348 , -0.893459301 ), ( 75 , 3.25131957 , -0.843152727 ), ( 75 , 3.164873288 , -0.855335639 ), ( 75 , 3.405504443 , -0.752034494 ), ( 75 , 3.480157752 , -0.755714983 ), ( 75 , 3.496681263 , -0.697957272 ), ( 75 , 3.40331337 , -0.722408215 ), ( 75 , 3.149164203 , -0.730050757 ), ( 75 , 3.218290239 , -0.69821053 ), ( 75 , 3.554188728 , -0.679106715 ), ( 75 , 3.575438432 , -0.63252506 ), ( 75 , 3.567172107 , -0.63830689 ), ( 75 , 3.568324613 , -0.611999822 ), ( 75 , 3.588159514 , -0.593068054 ), ( 75 , 3.580149828 , -0.599664075 ), ( 75 , 3.585597726 , -0.586384455 ), ( 75 , 3.498630052 , -0.630279978 ), ( 75 , 3.541142314 , -0.560963912 ), ( 75 , 3.657161216 , -0.519140022 ), ( 75 , 3.684576057 , -0.507242042 ), ( 75 , 3.653342783 , -0.499779447 ), ( 75 , 3.477026329 , -0.533931928 ), ( 75 , 3.367370963 , -0.542512822 ), ( 75 , 3.391741034 , -0.503833119 ), ( 75 , 3.539198244 , -0.447801567 ), ( 75 , 3.527496857 , -0.4400469 ), ( 75 , 3.495260092 , -0.390658576 ), ( 75 , 3.9489707 , -0.697876548 ), ( 75 , 3.916326364 , -0.617568334 ), ( 75 , 3.931520141 , -0.590613653 ), ( 75 , 4.036304073 , -0.561233762 ), ( 75 , 3.993510994 , -0.486200343 ), ( 75 , 3.883175446 , -0.506748854 ), ( 75 , 3.958734286 , -0.42226216 ), ( 75 , 3.894848015 , -0.420939781 ), ( 75 , 3.950027306 , -0.401658928 ), ( 75 , 4.213138122 , -0.422783344 ), ( 75 , 4.071525949 , -0.450316023 ), ( 75 , 4.11008111 , -0.424119575 ), ( 75 , 4.062756265 , -0.412896029 ), ( 75 , 4.269306248 , -0.303477493 ), ( 75 , 4.213866613 , -0.343501893 ), ( 75 , 4.10112959 , -0.345038061 ), ( 75 , 4.101136382 , -0.34503262 ), ( 75 , 4.118769409 , -0.294421966 ), ( 75 , 4.092782007 , -0.253606075 ), ( 75 , 3.709711875 , -0.443325913 ), ( 75 , 3.742397654 , -0.380986082 ), ( 75 , 3.876941988 , -0.302648386 ), ( 75 , 3.687943417 , -0.259310144 ), ( 75 , 3.638409221 , -0.255939828 ), ( 75 , 3.95566322 , -0.225273076 ), ( 75 , 3.917288367 , -0.217078826 ), ( 75 , 4.058246606 , -0.119466265 ), ( 75 , 3.761339692 , -0.141223923 ), ( 75 , 4.004154436 , -0.090800929 ), ( 75 , 3.904980243 , -0.063360964 ), ( 75 , 5.598621019 , -1.494677411 ), ( 75 , 4.98395925 , -1.465027349 ), ( 75 , 5.500164421 , -1.451182796 ), ( 75 , 5.572573492 , -1.40228482 ), ( 75 , 5.280712505 , -1.380735002 ), ( 75 , 5.27308678 , -1.304769113 ), ( 75 , 5.720878742 , -1.259070114 ), ( 75 , 5.608630677 , -1.267032955 ), ( 75 , 5.997254 , -1.306638846 ), ( 75 , 5.971387543 , -1.238021972 ), ( 75 , 6.273913933 , -1.169478806 ), ( 75 , 5.787438536 , -1.199767222 ), ( 75 , 5.687859177 , -1.187952605 ), ( 75 , 5.641190902 , -1.119630456 ), ( 75 , 5.829999785 , -1.004753887 ), ( 75 , 4.749824003 , -1.310840054 ), ( 75 , 4.738927488 , -1.291627563 ), ( 75 , 5.267538629 , -1.213976587 ), ( 75 , 5.192540252 , -1.210198573 ), ( 75 , 5.379789068 , -1.193321556 ), ( 75 , 5.258446147 , -1.100636945 ), ( 75 , 4.798743488 , -1.16335382 ), ( 75 , 4.992089408 , -1.113254479 ), ( 75 , 5.000209528 , -1.112559037 ), ( 75 , 5.121630634 , -1.100579868 ), ( 75 , 5.148027285 , -1.014961081 ), ( 75 , 5.184873238 , -1.007499171 ), ( 75 , 5.201522521 , -0.989954819 ), ( 75 , 5.4730688 , -1.096687086 ), ( 75 , 5.470493022 , -1.042110139 ), ( 75 , 5.449121402 , -1.033839831 ), ( 75 , 5.556883417 , -0.959734871 ), ( 75 , 5.526188658 , -0.959169553 ), ( 75 , 5.553608089 , -0.899084574 ), ( 75 , 5.625388021 , -0.878197604 ), ( 75 , 5.518020596 , -0.894897018 ), ( 75 , 5.406313496 , -0.860993988 ), ( 75 , 6.059041508 , -1.042607394 ), ( 75 , 6.25218947 , -1.026919249 ), ( 75 , 6.199603575 , -0.98473221 ), ( 75 , 6.158717132 , -0.97987255 ), ( 75 , 6.033343974 , -0.924419309 ), ( 75 , 5.939603814 , -0.99533008 ), ( 75 , 5.90930178 , -0.947680083 ), ( 75 , 5.816042726 , -0.976426325 ), ( 75 , 5.855875675 , -0.940108064 ), ( 75 , 5.883947125 , -0.903872697 ), ( 75 , 5.987827404 , -0.830344357 ), ( 75 , 5.988400415 , -0.802706042 ), ( 75 , 6.282177051 , -0.890109846 ), ( 75 , 6.118406606 , -0.753750998 ), ( 75 , 6.247302245 , -0.744781983 ), ( 75 , 6.239160686 , -0.738288377 ), ( 75 , 6.012178352 , -0.66209151 ), ( 75 , 5.985446449 , -0.626375563 ), ( 75 , 6.06675505 , -0.698710625 ), ( 75 , 6.036640714 , -0.670789854 ), ( 75 , 5.812116887 , -0.668515804 ), ( 75 , 5.609921355 , -0.815463176 ), ( 75 , 5.578189715 , -0.790463624 ), ( 75 , 5.602765229 , -0.698660438 ), ( 75 , 5.706519767 , -0.689613345 ), ( 75 , 5.659103969 , -0.626297602 ), ( 75 , 5.966714747 , -0.607828824 ), ( 75 , 5.85540723 , -0.602487916 ), ( 75 , 5.855914672 , -0.601941887 ), ( 75 , 5.894933022 , -0.541505824 ), ( 75 , 5.765943403 , -0.590555538 ), ( 75 , 5.758692732 , -0.499494677 ), ( 75 , 5.940156922 , -0.442445387 ), ( 75 , 5.829928757 , -0.401587494 ), ( 75 , 5.920066686 , -0.368080593 ), ( 75 , 5.885346394 , -0.385199455 ), ( 75 , 4.937458966 , -1.062835488 ), ( 75 , 5.020600569 , -1.047998315 ), ( 75 , 4.919132669 , -1.053746437 ), ( 75 , 5.07744802 , -0.976266126 ), ( 75 , 5.08082111 , -0.975436422 ), ( 75 , 5.148911825 , -0.87178351 ), ( 75 , 4.790262729 , -0.985723883 ), ( 75 , 4.748470357 , -0.971996059 ), ( 75 , 4.742431664 , -0.945632029 ), ( 75 , 4.794586526 , -0.937902656 ), ( 75 , 4.852599799 , -0.892297285 ), ( 75 , 4.9892701 , -0.878193935 ), ( 75 , 4.961798152 , -0.827125142 ), ( 75 , 5.057719866 , -0.803306078 ), ( 75 , 5.315932714 , -0.891636976 ), ( 75 , 5.327185728 , -0.794927491 ), ( 75 , 5.403534698 , -0.777106496 ), ( 75 , 5.461496868 , -0.71394581 ), ( 75 , 5.190016141 , -0.798455362 ), ( 75 , 5.201541997 , -0.796792861 ), ( 75 , 5.164930169 , -0.770276667 ), ( 75 , 5.129225312 , -0.7177003 ), ( 75 , 5.225600497 , -0.658770705 ), ( 75 , 5.313783855 , -0.701354509 ), ( 75 , 5.32161414 , -0.553784469 ), ( 75 , 4.797764947 , -0.861274114 ), ( 75 , 4.873969165 , -0.841405261 ), ( 75 , 4.883684343 , -0.811338076 ), ( 75 , 4.750490296 , -0.86124269 ), ( 75 , 4.813973773 , -0.844062325 ), ( 75 , 4.729313722 , -0.854017154 ), ( 75 , 4.73884208 , -0.832332092 ), ( 75 , 4.743413259 , -0.826718125 ), ( 75 , 4.800493346 , -0.801513148 ), ( 75 , 4.916572648 , -0.764265963 ), ( 75 , 4.89000812 , -0.770949162 ), ( 75 , 4.925499261 , -0.789985661 ), ( 75 , 5.055882801 , -0.690249682 ), ( 75 , 4.756443061 , -0.801176817 ), ( 75 , 4.753663836 , -0.801792326 ), ( 75 , 4.78303027 , -0.803278399 ), ( 75 , 4.776692988 , -0.795788091 ), ( 75 , 4.801720779 , -0.769288738 ), ( 75 , 4.877028191 , -0.726308504 ), ( 75 , 4.763801796 , -0.751926164 ), ( 75 , 4.749953929 , -0.731977505 ), ( 75 , 4.907263624 , -0.723193797 ), ( 75 , 4.983503104 , -0.611013169 ), ( 75 , 4.91565711 , -0.556902099 ), ( 75 , 4.923468117 , -0.556149709 ), ( 75 , 5.064897941 , -0.676252932 ), ( 75 , 5.142431209 , -0.603008555 ), ( 75 , 5.09977009 , -0.628323079 ), ( 75 , 5.10926462 , -0.570713443 ), ( 75 , 5.2388077 , -0.561573596 ), ( 75 , 5.043037934 , -0.585218558 ), ( 75 , 5.038173024 , -0.510395157 ), ( 75 , 4.965937663 , -0.538001259 ), ( 75 , 5.114043496 , -0.492401387 ), ( 75 , 5.110653251 , -0.449203241 ), ( 75 , 5.08167817 , -0.393971843 ), ( 75 , 5.111239739 , -0.367222463 ), ( 75 , 5.484126745 , -0.59338399 ), ( 75 , 5.54294347 , -0.57334346 ), ( 75 , 5.559037147 , -0.517730625 ), ( 75 , 5.596733046 , -0.513738232 ), ( 75 , 5.402470703 , -0.540667341 ), ( 75 , 5.468056898 , -0.550049913 ), ( 75 , 5.451021019 , -0.526956603 ), ( 75 , 5.461460755 , -0.519776513 ), ( 75 , 5.320604367 , -0.51703531 ), ( 75 , 5.44252569 , -0.461032573 ), ( 75 , 5.471691144 , -0.423779322 ), ( 75 , 5.719320379 , -0.48751156 ), ( 75 , 5.756509563 , -0.39918651 ), ( 75 , 5.611755084 , -0.427332688 ), ( 75 , 5.694505124 , -0.393821355 ), ( 75 , 5.796398775 , -0.288728213 ), ( 75 , 5.603599791 , -0.412488625 ), ( 75 , 5.563472178 , -0.380751196 ), ( 75 , 5.61283776 , -0.366504815 ), ( 75 , 5.706127838 , -0.317876117 ), ( 75 , 5.663330504 , -0.300367888 ), ( 75 , 5.669066409 , -0.242518071 ), ( 75 , 5.332470817 , -0.383211913 ), ( 75 , 5.400588056 , -0.391700569 ), ( 75 , 5.403651434 , -0.366421578 ), ( 75 , 5.327707707 , -0.319814666 ), ( 75 , 5.351736046 , -0.303300799 ), ( 75 , 5.277694119 , -0.359436178 ), ( 75 , 5.242754992 , -0.294428764 ), ( 75 , 5.310189344 , -0.321687169 ), ( 75 , 5.31211543 , -0.276252957 ), ( 75 , 5.358384163 , -0.244295242 ), ( 75 , 5.529030982 , -0.278789285 ), ( 75 , 5.566802351 , -0.159190113 ), ( 75 , 5.56311195 , -0.14578242 ), ( 75 , 5.562836759 , -0.123702358 ), ( 75 , 5.605624393 , -0.097417179 ), ( 75 , 5.446026269 , -0.170148184 ), ( 75 , 5.345658017 , -0.204284616 ), ( 75 , 5.370946474 , -0.175156454 ), ( 75 , 5.487618588 , -0.134625077 ), ( 75 , 5.515582092 , -0.101643672 ), ( 75 , 5.557229724 , -0.112852097 ), ( 75 , 5.556701135 , -0.103175151 ), ( 75 , 5.50509311 , -0.072107408 ), ( 75 , 5.483582292 , -0.064134594 ), ( 75 , 3.020927766 , 1.066089145 ), ( 76 , 0.828810931 , 0.053416588 ), ( 76 , 0.782671125 , 0.116096014 ), ( 76 , 0.635693491 , 0.183365175 ), ( 76 , 0.728162889 , 0.213986241 ), ( 76 , 0.785789555 , 0.185973264 ), ( 76 , 0.863385822 , 0.24167941 ), ( 76 , 0.865913402 , 0.26486076 ), ( 76 , 0.806464544 , 0.240810309 ), ( 76 , 0.764873104 , 0.284643421 ), ( 76 , 1.049893618 , 0.242463215 ), ( 76 , 0.953122702 , 0.264403703 ), ( 76 , 1.081716014 , 0.288512009 ), ( 76 , 1.07610012 , 0.334289261 ), ( 76 , 1.135421682 , 0.335683243 ), ( 76 , 0.944260208 , 0.350239898 ), ( 76 , 0.859357357 , 0.403630068 ), ( 76 , 0.874213839 , 0.41344898 ), ( 76 , 1.043083578 , 0.412388362 ), ( 76 , 1.003319325 , 0.424964679 ), ( 76 , 1.000425539 , 0.42578744 ), ( 76 , 0.925076317 , 0.412718392 ), ( 76 , 0.976165447 , 0.437734905 ), ( 76 , 0.97636499 , 0.460436209 ), ( 76 , 0.942843107 , 0.481591517 ), ( 76 , 0.7140587 , 0.306278035 ), ( 76 , 0.702974043 , 0.328123336 ), ( 76 , 0.440009382 , 0.338095591 ), ( 76 , 0.52061673 , 0.433347398 ), ( 76 , 0.54353108 , 0.443542371 ), ( 76 , 0.874612325 , 0.42835795 ), ( 76 , 0.730878188 , 0.412539665 ), ( 76 , 0.742783884 , 0.442152646 ), ( 76 , 0.784759431 , 0.476497802 ), ( 76 , 0.887497404 , 0.540769275 ), ( 76 , 0.896222106 , 0.553811144 ), ( 76 , 0.883653745 , 0.562689543 ), ( 76 , 0.64911358 , 0.518135496 ), ( 76 , 0.646624136 , 0.521387641 ), ( 76 , 0.614473067 , 0.501540047 ), ( 76 , 0.670032271 , 0.54817646 ), ( 76 , 0.715685112 , 0.564964317 ), ( 76 , 0.709879646 , 0.574233674 ), ( 76 , 0.829490405 , 0.669254293 ), ( 76 , 1.185066285 , 0.398717419 ), ( 76 , 1.133422311 , 0.414312104 ), ( 76 , 1.289690092 , 0.474768567 ), ( 76 , 1.269146817 , 0.49417195 ), ( 76 , 1.290688709 , 0.529493594 ), ( 76 , 1.276115175 , 0.558269851 ), ( 76 , 1.083432118 , 0.566534338 ), ( 76 , 1.207957095 , 0.653430871 ), ( 76 , 1.153376071 , 0.615037761 ), ( 76 , 1.099837161 , 0.61714039 ), ( 76 , 1.112526223 , 0.637076518 ), ( 76 , 1.39989509 , 0.598079938 ), ( 76 , 1.396859265 , 0.624581324 ), ( 76 , 1.396719393 , 0.686673391 ), ( 76 , 1.441452787 , 0.707000022 ), ( 76 , 1.463143997 , 0.754667942 ), ( 76 , 1.529873096 , 0.76814672 ), ( 76 , 1.496603991 , 0.782805583 ), ( 76 , 1.472583391 , 0.778231851 ), ( 76 , 1.328832244 , 0.763189265 ), ( 76 , 1.213534172 , 0.7350791 ), ( 76 , 1.33785996 , 0.78071514 ), ( 76 , 1.427818304 , 0.76803847 ), ( 76 , 1.40579193 , 0.786823292 ), ( 76 , 1.471910823 , 0.836702943 ), ( 76 , 1.369319712 , 0.819897941 ), ( 76 , 1.450178751 , 0.862085494 ), ( 76 , 1.450123739 , 0.862073949 ), ( 76 , 0.999732613 , 0.563116577 ), ( 76 , 0.950936113 , 0.653291619 ), ( 76 , 0.938978146 , 0.663488394 ), ( 76 , 1.107115817 , 0.692550238 ), ( 76 , 1.066362781 , 0.677120017 ), ( 76 , 0.892044049 , 0.698894591 ), ( 76 , 0.91173801 , 0.701386475 ), ( 76 , 0.918148553 , 0.750136982 ), ( 76 , 0.862130007 , 0.744818377 ), ( 76 , 0.902744405 , 0.761932624 ), ( 76 , 0.97654962 , 0.743537625 ), ( 76 , 0.985622806 , 0.795865708 ), ( 76 , 0.952859 , 0.781912863 ), ( 76 , 0.942804276 , 0.813053493 ), ( 76 , 1.081022961 , 0.898020421 ), ( 76 , 0.9803756 , 0.882137291 ), ( 76 , 1.196763781 , 0.80133485 ), ( 76 , 1.499402356 , 0.965667807 ), ( 76 , 1.53364942 , 0.964492675 ), ( 76 , 1.359183082 , 0.929116504 ), ( 76 , 1.38578372 , 0.968952308 ), ( 76 , 1.544869385 , 0.995627829 ), ( 76 , 1.562619102 , 1.036606842 ), ( 76 , 1.142134808 , 0.873277977 ), ( 76 , 1.256759936 , 0.927154303 ), ( 76 , 1.257531927 , 1.033950897 ), ( 76 , 1.313870629 , 1.023905373 ), ( 76 , 1.44760573 , 1.099295449 ), ( 76 , 1.416901764 , 1.10629495 ), ( 76 , 0.407873437 , 0.411727564 ), ( 76 , 0.497127803 , 0.44987504 ), ( 76 , 0.539090084 , 0.479648722 ), ( 76 , 0.255139776 , 0.467500484 ), ( 76 , 0.234870849 , 0.498432296 ), ( 76 , 0.302335861 , 0.60747628 ), ( 76 , 0.459634915 , 0.623299726 ), ( 76 , 0.402555394 , 0.667970943 ), ( 76 , 0.557973221 , 0.620527845 ), ( 76 , 0.667290878 , 0.651588824 ), ( 76 , 0.655402882 , 0.679831822 ), ( 76 , 0.664914723 , 0.699619461 ), ( 76 , 0.709005335 , 0.702688484 ), ( 76 , 0.714418333 , 0.724273166 ), ( 76 , 0.709465394 , 0.743355507 ), ( 76 , 0.656316076 , 0.792930313 ), ( 76 , 0.493833898 , 0.651369912 ), ( 76 , 0.485004654 , 0.663642666 ), ( 76 , 0.500500865 , 0.697245999 ), ( 76 , 0.506200498 , 0.751554968 ), ( 76 , 0.516510778 , 0.761346218 ), ( 76 , 0.550538827 , 0.817854419 ), ( 76 , 0.632950458 , 0.796686519 ), ( 76 , 0.625147853 , 0.805293431 ), ( 76 , 0.657079068 , 0.834445473 ), ( 76 , 0.51809987 , 0.792994916 ), ( 76 , 0.202672985 , 0.540203343 ), ( 76 , 0.183605782 , 0.569169639 ), ( 76 , 0.110371087 , 0.611514526 ), ( 76 , 0.113644647 , 0.625164413 ), ( 76 , 0.182623107 , 0.678867758 ), ( 76 , 0.178172463 , 0.701317378 ), ( 76 , 0.315411566 , 0.714029157 ), ( 76 , 0.259348465 , 0.700836403 ), ( 76 , 0.130285755 , 0.6688722 ), ( 76 , 0.033290845 , 0.699500729 ), ( 76 , 0.078023689 , 0.778031952 ), ( 76 , 0.035989718 , 0.815216496 ), ( 76 , 0.184848868 , 0.766848392 ), ( 76 , 0.135448466 , 0.877099646 ), ( 76 , 0.052853785 , 0.828873222 ), ( 76 , 0.018196797 , 0.870397528 ), ( 76 , 0.065740763 , 0.918734375 ), ( 76 , 0.420530227 , 0.825990568 ), ( 76 , 0.384461606 , 0.833437277 ), ( 76 , 0.265907626 , 0.888005516 ), ( 76 , 0.440746645 , 0.857025915 ), ( 76 , 0.501710093 , 0.945773494 ), ( 76 , 0.350858974 , 0.90466091 ), ( 76 , 0.368354724 , 0.998297479 ), ( 76 , 0.346487063 , 0.999620103 ), ( 76 , 0.226494696 , 0.886182689 ), ( 76 , 0.149272548 , 0.94363608 ), ( 76 , 0.161558437 , 0.963720989 ), ( 76 , 0.105783288 , 0.939369346 ), ( 76 , 0.050828898 , 0.976710739 ), ( 76 , 0.074525726 , 0.993257839 ), ( 76 , 0.055649889 , 0.998808297 ), ( 76 , 0.246526333 , 0.999837041 ), ( 76 , 0.214440878 , 1.009054515 ), ( 76 , 0.28103814 , 1.011959701 ), ( 76 , 0.80976089 , 0.775097176 ), ( 76 , 0.834437911 , 0.785727014 ), ( 76 , 0.815058828 , 0.79849693 ), ( 76 , 0.776235469 , 0.814389374 ), ( 76 , 0.844943544 , 0.817112746 ), ( 76 , 0.862726675 , 0.878962092 ), ( 76 , 0.699720281 , 0.921603625 ), ( 76 , 0.700567005 , 0.982121215 ), ( 76 , 0.596144839 , 0.920168139 ), ( 76 , 0.568992892 , 0.982564883 ), ( 76 , 0.633644798 , 0.964373051 ), ( 76 , 0.68363433 , 0.980817801 ), ( 76 , 0.623482244 , 0.999116268 ), ( 76 , 0.643272742 , 1.031575925 ), ( 76 , 0.634623914 , 1.047289283 ), ( 76 , 0.824002276 , 1.018356251 ), ( 76 , 0.90238291 , 1.054265643 ), ( 76 , 0.853645292 , 1.066883773 ), ( 76 , 0.711896571 , 1.027814535 ), ( 76 , 0.668573291 , 1.047186058 ), ( 76 , 0.69403521 , 1.092146281 ), ( 76 , 0.741630633 , 1.128019588 ), ( 76 , 0.768140136 , 1.148550791 ), ( 76 , 1.003840568 , 1.078561681 ), ( 76 , 1.075638086 , 1.112572264 ), ( 76 , 1.192318235 , 1.134250316 ), ( 76 , 1.246824126 , 1.104087622 ), ( 76 , 1.404420198 , 1.169793538 ), ( 76 , 1.395021958 , 1.186760582 ), ( 76 , 0.967799083 , 1.093421211 ), ( 76 , 0.942755737 , 1.10458619 ), ( 76 , 0.956090688 , 1.145983488 ), ( 76 , 1.109759508 , 1.213120674 ), ( 76 , 1.011113381 , 1.230596794 ), ( 76 , 1.371536677 , 1.21864087 ), ( 76 , 1.444123476 , 1.255315138 ), ( 76 , 1.165267571 , 1.252818817 ), ( 76 , 1.086691515 , 1.245182015 ), ( 76 , 1.127997992 , 1.263780022 ), ( 76 , 0.52209311 , 1.047332318 ), ( 76 , 0.505730993 , 1.088447903 ), ( 76 , 0.40644302 , 1.055043167 ), ( 76 , 0.42230455 , 1.106790687 ), ( 76 , 0.398370569 , 1.105623681 ), ( 76 , 0.613517219 , 1.114810533 ), ( 76 , 0.687536256 , 1.205267517 ), ( 76 , 0.535222134 , 1.244384521 ), ( 76 , 0.319805503 , 1.096567045 ), ( 76 , 0.079607199 , 1.273160413 ), ( 76 , 0.858108958 , 1.221363694 ), ( 76 , 0.705179325 , 1.216661667 ), ( 76 , 0.896418872 , 1.251133518 ), ( 76 , 0.92365864 , 1.36161216 ), ( 76 , 1.143640268 , 1.424745426 ), ( 76 , 0.549968406 , 1.301731587 ), ( 76 , 0.632008044 , 1.328756101 ), ( 76 , 0.618644692 , 1.365787335 ), ( 76 , 0.556510024 , 1.407867176 ), ( 76 , 0.218501456 , 1.430597695 ), ( 76 , 1.307342125 , 1.452047537 ), ( 76 , 0.906500485 , 1.45784397 ), ( 76 , 1.198211548 , 1.474318847 ), ( 76 , 2.309091059 , 0.060827745 ), ( 76 , 2.466927048 , 0.109225368 ), ( 76 , 2.475197653 , 0.108765885 ), ( 76 , 2.498172204 , 0.123279308 ), ( 76 , 2.50756336 , 0.142897963 ), ( 76 , 2.387504127 , 0.168796832 ), ( 76 , 2.171538774 , 0.159951389 ), ( 76 , 2.274513124 , 0.192836551 ), ( 76 , 2.242600126 , 0.184760285 ), ( 76 , 2.247410683 , 0.196931947 ), ( 76 , 2.377871542 , 0.232893721 ), ( 76 , 2.391565227 , 0.245085684 ), ( 76 , 2.391708414 , 0.256761169 ), ( 76 , 2.317705837 , 0.279244345 ), ( 76 , 2.603259355 , 0.256970291 ), ( 76 , 2.588690801 , 0.347977221 ), ( 76 , 2.472144364 , 0.332660579 ), ( 76 , 2.494652867 , 0.349149128 ), ( 76 , 2.493994706 , 0.353789014 ), ( 76 , 2.557868117 , 0.357604655 ), ( 76 , 2.591746763 , 0.483376476 ), ( 76 , 2.553301339 , 0.484175305 ), ( 76 , 2.157804731 , 0.177819759 ), ( 76 , 2.166596153 , 0.192743403 ), ( 76 , 2.107274681 , 0.225920712 ), ( 76 , 2.14506345 , 0.283053106 ), ( 76 , 2.138093539 , 0.296992886 ), ( 76 , 2.268761291 , 0.34106156 ), ( 76 , 2.270239416 , 0.340896064 ), ( 76 , 2.07180639 , 0.315906566 ), ( 76 , 2.103463466 , 0.344478071 ), ( 76 , 2.113886494 , 0.366662624 ), ( 76 , 2.188071295 , 0.382385781 ), ( 76 , 2.203123345 , 0.417931762 ), ( 76 , 2.2308091 , 0.449251749 ), ( 76 , 2.351085891 , 0.443383822 ), ( 76 , 2.468552061 , 0.571807908 ), ( 76 , 2.448653772 , 0.609952892 ), ( 76 , 2.311491629 , 0.513976568 ), ( 76 , 2.325655279 , 0.522923045 ), ( 76 , 2.235279814 , 0.511715952 ), ( 76 , 2.199539728 , 0.546302397 ), ( 76 , 2.279902167 , 0.596653827 ), ( 76 , 2.439077795 , 0.622775834 ), ( 76 , 2.311984107 , 0.588524258 ), ( 76 , 2.366302693 , 0.674681794 ), ( 76 , 2.340373514 , 0.677384709 ), ( 76 , 2.765415055 , 0.407545063 ), ( 76 , 2.848435433 , 0.486342712 ), ( 76 , 2.838636574 , 0.55898527 ), ( 76 , 2.677786594 , 0.45641393 ), ( 76 , 2.605971421 , 0.498489406 ), ( 76 , 2.627170371 , 0.550317516 ), ( 76 , 2.636612959 , 0.566398663 ), ( 76 , 2.753467951 , 0.681035495 ), ( 76 , 2.91729757 , 0.62850831 ), ( 76 , 2.900428128 , 0.667530038 ), ( 76 , 3.049229011 , 0.683691117 ), ( 76 , 3.053593313 , 0.788130326 ), ( 76 , 2.867175142 , 0.721699691 ), ( 76 , 2.909316928 , 0.769959686 ), ( 76 , 2.947332771 , 0.828672967 ), ( 76 , 2.716470427 , 0.743795741 ), ( 76 , 2.74863569 , 0.800269263 ), ( 76 , 2.765711284 , 0.858476167 ), ( 76 , 2.939031417 , 0.96718973 ), ( 76 , 2.960639702 , 0.980782167 ), ( 76 , 3.020846102 , 0.979058892 ), ( 76 , 2.749716798 , 0.889998639 ), ( 76 , 2.748009544 , 0.956890967 ), ( 76 , 2.890735027 , 0.960441705 ), ( 76 , 3.138318232 , 1.070485044 ), ( 76 , 3.04302357 , 1.085532146 ), ( 76 , 3.085192344 , 1.123874479 ), ( 76 , 1.967957067 , 0.356779297 ), ( 76 , 1.964570139 , 0.362755621 ), ( 76 , 2.014010084 , 0.386019818 ), ( 76 , 2.034057956 , 0.411001363 ), ( 76 , 1.926611478 , 0.456563547 ), ( 76 , 1.95395268 , 0.476330737 ), ( 76 , 1.983003804 , 0.49586047 ), ( 76 , 2.072147304 , 0.563469099 ), ( 76 , 2.038769501 , 0.57615062 ), ( 76 , 2.039295768 , 0.585799725 ), ( 76 , 1.887223736 , 0.463634664 ), ( 76 , 1.88852667 , 0.475155848 ), ( 76 , 1.888523755 , 0.475153681 ), ( 76 , 1.869102377 , 0.580632635 ), ( 76 , 1.945725448 , 0.573531752 ), ( 76 , 1.955554335 , 0.70958718 ), ( 76 , 2.136558438 , 0.623118159 ), ( 76 , 2.091855389 , 0.605277758 ), ( 76 , 2.229984248 , 0.668313191 ), ( 76 , 2.22831952 , 0.815936156 ), ( 76 , 2.100401451 , 0.713085135 ), ( 76 , 2.065518145 , 0.798337736 ), ( 76 , 2.175474113 , 0.820893661 ), ( 76 , 2.089829828 , 0.848674485 ), ( 76 , 2.043521308 , 0.868419057 ), ( 76 , 2.141300345 , 0.910058187 ), ( 76 , 1.730495922 , 0.582774433 ), ( 76 , 1.763637835 , 0.645665318 ), ( 76 , 1.872278494 , 0.77247863 ), ( 76 , 1.796801664 , 0.811577133 ), ( 76 , 1.742439593 , 0.733117592 ), ( 76 , 1.721944663 , 0.751628293 ), ( 76 , 1.575611319 , 0.731956397 ), ( 76 , 1.621007285 , 0.770294426 ), ( 76 , 1.619752237 , 0.784561136 ), ( 76 , 1.596124628 , 0.779982192 ), ( 76 , 1.769277673 , 0.771995116 ), ( 76 , 1.584462103 , 0.837535369 ), ( 76 , 1.640959862 , 0.910816006 ), ( 76 , 1.929682227 , 0.875256716 ), ( 76 , 1.995141944 , 0.939693571 ), ( 76 , 2.03342704 , 0.971139197 ), ( 76 , 1.932505791 , 0.96587703 ), ( 76 , 1.908233072 , 1.013147114 ), ( 76 , 1.750005528 , 0.93198043 ), ( 76 , 1.668674247 , 0.977608367 ), ( 76 , 1.642210601 , 0.990206648 ), ( 76 , 1.641459413 , 0.993669589 ), ( 76 , 1.770848929 , 1.093441832 ), ( 76 , 1.677935629 , 1.041943665 ), ( 76 , 1.653919274 , 1.039501131 ), ( 76 , 1.684632455 , 1.094147722 ), ( 76 , 2.453841654 , 0.844909232 ), ( 76 , 2.568129422 , 0.947099303 ), ( 76 , 2.421028372 , 0.970753275 ), ( 76 , 2.526414169 , 1.021858746 ), ( 76 , 2.233644753 , 0.883386729 ), ( 76 , 2.216220456 , 0.933002564 ), ( 76 , 2.106505727 , 0.944768856 ), ( 76 , 2.138938844 , 0.973961868 ), ( 76 , 2.230371819 , 0.959229958 ), ( 76 , 2.461758915 , 1.055000025 ), ( 76 , 2.342724427 , 1.143643822 ), ( 76 , 2.631907805 , 1.013981331 ), ( 76 , 2.633272445 , 1.091966029 ), ( 76 , 2.750073039 , 1.105645402 ), ( 76 , 3.008114989 , 1.168077535 ), ( 76 , 3.094363756 , 1.175104479 ), ( 76 , 2.591366884 , 1.130776466 ), ( 76 , 2.415969267 , 1.148373876 ), ( 76 , 2.492182369 , 1.17881561 ), ( 76 , 2.532976406 , 1.196189004 ), ( 76 , 2.945135308 , 1.256785266 ), ( 76 , 2.767316882 , 1.288652113 ), ( 76 , 2.061546503 , 0.995145519 ), ( 76 , 1.956507686 , 1.079962297 ), ( 76 , 1.931191115 , 1.097216583 ), ( 76 , 2.056335817 , 1.118556348 ), ( 76 , 2.199999087 , 1.08734736 ), ( 76 , 2.136088571 , 1.145992936 ), ( 76 , 2.209231849 , 1.223968467 ), ( 76 , 2.081854322 , 1.251055324 ), ( 76 , 1.886989893 , 1.086680958 ), ( 76 , 1.916787288 , 1.119026161 ), ( 76 , 1.940281391 , 1.149093248 ), ( 76 , 1.749660651 , 1.134235428 ), ( 76 , 1.640799743 , 1.235317805 ), ( 76 , 1.622712927 , 1.241469567 ), ( 76 , 1.942442774 , 1.171937993 ), ( 76 , 1.844283753 , 1.207909612 ), ( 76 , 1.945761877 , 1.288939643 ), ( 76 , 1.593760626 , 1.291535125 ), ( 76 , 2.457749032 , 1.210436912 ), ( 76 , 2.470482678 , 1.227827585 ), ( 76 , 2.533170932 , 1.252360877 ), ( 76 , 2.518267188 , 1.25802749 ), ( 76 , 2.30005405 , 1.263355761 ), ( 76 , 2.534492225 , 1.316503748 ), ( 76 , 2.979337286 , 1.350422138 ), ( 76 , 2.719842681 , 1.367337419 ), ( 76 , 1.730473826 , 1.360043209 ), ( 76 , 1.976942142 , 1.373333687 ), ( 76 , 1.775982648 , 1.400492248 ), ( 76 , 2.340300249 , 1.464097254 ), ( 76 , 2.674414927 , 1.438165031 ), ( 76 , 2.143084351 , 1.473184495 ), ( 76 , 1.844316253 , 1.477654461 ), ( 76 , 2.19684523 , 1.495606222 ), ( 76 , 3.977153886 , 0.049362973 ), ( 76 , 3.96002956 , 0.109417882 ), ( 76 , 3.882209325 , 0.06755301 ), ( 76 , 4.106207043 , 0.162359303 ), ( 76 , 3.977488927 , 0.14865061 ), ( 76 , 3.978901033 , 0.170634118 ), ( 76 , 3.796696257 , 0.145787724 ), ( 76 , 3.770338461 , 0.196296435 ), ( 76 , 3.821488962 , 0.193176446 ), ( 76 , 4.159297175 , 0.215603041 ), ( 76 , 4.174640606 , 0.217780674 ), ( 76 , 4.192726574 , 0.231622709 ), ( 76 , 4.196976339 , 0.235140315 ), ( 76 , 4.200230356 , 0.316150706 ), ( 76 , 4.123045144 , 0.374291261 ), ( 76 , 4.058654954 , 0.414605251 ), ( 76 , 4.057460475 , 0.415685714 ), ( 76 , 4.123141461 , 0.431245171 ), ( 76 , 4.13502438 , 0.496891726 ), ( 76 , 3.764795716 , 0.26073272 ), ( 76 , 3.788475205 , 0.281301121 ), ( 76 , 3.660142882 , 0.254172177 ), ( 76 , 3.865464082 , 0.293183055 ), ( 76 , 3.878375497 , 0.317643141 ), ( 76 , 3.872588105 , 0.332486041 ), ( 76 , 3.791542152 , 0.362470551 ), ( 76 , 3.850116946 , 0.371630187 ), ( 76 , 3.655893903 , 0.282773863 ), ( 76 , 3.706737603 , 0.357293924 ), ( 76 , 3.754851439 , 0.463781809 ), ( 76 , 3.921871811 , 0.437169306 ), ( 76 , 4.02633172 , 0.489687651 ), ( 76 , 3.789649123 , 0.493743797 ), ( 76 , 3.947606601 , 0.673792484 ), ( 76 , 4.296795188 , 0.390656373 ), ( 76 , 4.38528456 , 0.41394847 ), ( 76 , 4.428871177 , 0.50682252 ), ( 76 , 4.3692426 , 0.52836221 ), ( 76 , 4.379214203 , 0.570586246 ), ( 76 , 4.23289465 , 0.444847401 ), ( 76 , 4.237364628 , 0.469348266 ), ( 76 , 4.263641504 , 0.513624589 ), ( 76 , 4.183314161 , 0.523680739 ), ( 76 , 4.154046591 , 0.521533518 ), ( 76 , 4.236340299 , 0.540776434 ), ( 76 , 4.242409404 , 0.569947173 ), ( 76 , 4.4012422 , 0.626958457 ), ( 76 , 4.388648439 , 0.621877504 ), ( 76 , 4.532656236 , 0.573586763 ), ( 76 , 4.545037113 , 0.625246655 ), ( 76 , 4.528321021 , 0.629962351 ), ( 76 , 4.524322771 , 0.688872471 ), ( 76 , 4.525332553 , 0.697578875 ), ( 76 , 4.686313147 , 0.7443326 ), ( 76 , 4.558129135 , 0.684338028 ), ( 76 , 4.452914073 , 0.679073372 ), ( 76 , 4.402735614 , 0.727166249 ), ( 76 , 4.452660834 , 0.798999216 ), ( 76 , 4.474275064 , 0.809063047 ), ( 76 , 4.591200312 , 0.808617611 ), ( 76 , 4.61667137 , 0.795134219 ), ( 76 , 4.663395188 , 0.852343632 ), ( 76 , 4.610158593 , 0.845730086 ), ( 76 , 4.608948774 , 0.862988219 ), ( 76 , 4.704055649 , 0.911378087 ), ( 76 , 4.214151945 , 0.637538156 ), ( 76 , 4.236730614 , 0.751454925 ), ( 76 , 4.002530377 , 0.742917365 ), ( 76 , 4.128689688 , 0.741215825 ), ( 76 , 4.233590527 , 0.848426708 ), ( 76 , 4.080785747 , 0.86739949 ), ( 76 , 4.309063473 , 0.826265496 ), ( 76 , 4.653508925 , 0.935124332 ), ( 76 , 4.701571168 , 0.954090955 ), ( 76 , 4.289672518 , 0.87867151 ), ( 76 , 4.311048998 , 0.900453362 ), ( 76 , 4.393265381 , 0.967086406 ), ( 76 , 4.696846608 , 1.092916107 ), ( 76 , 4.582919941 , 1.113130643 ), ( 76 , 4.662968261 , 1.130394739 ), ( 76 , 3.589138533 , 0.406981467 ), ( 76 , 3.507141985 , 0.445896703 ), ( 76 , 3.640855601 , 0.522127033 ), ( 76 , 3.614290833 , 0.548051641 ), ( 76 , 3.420053991 , 0.541074292 ), ( 76 , 3.728703248 , 0.685503879 ), ( 76 , 3.743578439 , 0.696610211 ), ( 76 , 3.64185721 , 0.646888204 ), ( 76 , 3.647236252 , 0.688758742 ), ( 76 , 3.78617624 , 0.862133379 ), ( 76 , 3.638692828 , 0.835538083 ), ( 76 , 3.615466827 , 0.843979177 ), ( 76 , 3.649640066 , 0.855425914 ), ( 76 , 3.31084237 , 0.686050322 ), ( 76 , 3.428601731 , 0.69123067 ), ( 76 , 3.183522029 , 0.702524749 ), ( 76 , 3.143372146 , 0.778947236 ), ( 76 , 3.288400681 , 0.769616583 ), ( 76 , 3.264057867 , 0.781807644 ), ( 76 , 3.298168724 , 0.799031094 ), ( 76 , 3.233384843 , 0.794378812 ), ( 76 , 3.258647888 , 0.893709604 ), ( 76 , 3.612519503 , 0.876846392 ), ( 76 , 3.563111253 , 0.895257054 ), ( 76 , 3.629597921 , 0.922232697 ), ( 76 , 3.423750998 , 0.939994265 ), ( 76 , 3.315464884 , 0.902771153 ), ( 76 , 3.18237545 , 0.931896362 ), ( 76 , 3.327153733 , 0.994812931 ), ( 76 , 3.311585433 , 1.065155531 ), ( 76 , 3.230841204 , 1.070054203 ), ( 76 , 3.903266885 , 0.813210136 ), ( 76 , 3.959025936 , 0.920534949 ), ( 76 , 4.011649603 , 0.876412416 ), ( 76 , 4.034277668 , 0.946187585 ), ( 76 , 4.034286274 , 0.946185226 ), ( 76 , 3.983558856 , 0.978194724 ), ( 76 , 4.096761503 , 1.002895781 ), ( 76 , 3.804112103 , 0.890489236 ), ( 76 , 3.848504464 , 0.907664546 ), ( 76 , 3.967891309 , 0.996783149 ), ( 76 , 3.844180942 , 1.011534655 ), ( 76 , 3.791579369 , 1.053941937 ), ( 76 , 4.151585826 , 0.997318258 ), ( 76 , 4.267752549 , 1.089486353 ), ( 76 , 4.436676564 , 1.072944107 ), ( 76 , 4.434974377 , 1.13515299 ), ( 76 , 4.447524559 , 1.198672705 ), ( 76 , 4.565288092 , 1.182739377 ), ( 76 , 4.517096349 , 1.176141562 ), ( 76 , 4.609830868 , 1.195354287 ), ( 76 , 4.027424732 , 1.101834886 ), ( 76 , 4.095777587 , 1.201180837 ), ( 76 , 4.611196363 , 1.257593326 ), ( 76 , 4.283253174 , 1.230410013 ), ( 76 , 4.452619804 , 1.277480696 ), ( 76 , 4.549541398 , 1.303119897 ), ( 76 , 4.404885165 , 1.315622945 ), ( 76 , 3.677336095 , 1.076503926 ), ( 76 , 3.642281102 , 1.088685162 ), ( 76 , 3.763284801 , 1.064042438 ), ( 76 , 3.837005178 , 1.119699891 ), ( 76 , 3.659206628 , 1.153679866 ), ( 76 , 3.742677056 , 1.199952741 ), ( 76 , 3.645391139 , 1.220598341 ), ( 76 , 3.453064681 , 1.102107248 ), ( 76 , 3.319632981 , 1.113025744 ), ( 76 , 3.497255669 , 1.116147125 ), ( 76 , 3.473528987 , 1.146531565 ), ( 76 , 3.388869215 , 1.197572838 ), ( 76 , 3.395466776 , 1.199139551 ), ( 76 , 3.165844387 , 1.200683703 ), ( 76 , 3.298068316 , 1.204514199 ), ( 76 , 3.288102606 , 1.264994682 ), ( 76 , 3.949337065 , 1.28966026 ), ( 76 , 4.334219011 , 1.355900537 ), ( 76 , 4.663775821 , 1.384624158 ), ( 76 , 4.006363121 , 1.368231062 ), ( 76 , 3.835058576 , 1.392553009 ), ( 76 , 4.016581864 , 1.414477864 ), ( 76 , 4.188959238 , 1.455677252 ), ( 76 , 5.46711885 , 0.03428336 ), ( 76 , 5.479385831 , 0.133793796 ), ( 76 , 5.567725783 , 0.186496419 ), ( 76 , 5.625196098 , 0.208610229 ), ( 76 , 5.567022681 , 0.200337013 ), ( 76 , 5.389789624 , 0.10959802 ), ( 76 , 5.357747921 , 0.120080933 ), ( 76 , 5.405903824 , 0.148752318 ), ( 76 , 5.477255977 , 0.1696713 ), ( 76 , 5.453148742 , 0.200623093 ), ( 76 , 5.3374919 , 0.193468681 ), ( 76 , 5.360094561 , 0.204566709 ), ( 76 , 5.50104013 , 0.17445987 ), ( 76 , 5.443820802 , 0.226657141 ), ( 76 , 5.430801375 , 0.236584375 ), ( 76 , 5.468240395 , 0.285215903 ), ( 76 , 5.728318756 , 0.235422191 ), ( 76 , 5.641718334 , 0.21885413 ), ( 76 , 5.701653306 , 0.339938837 ), ( 76 , 5.781313398 , 0.395085088 ), ( 76 , 5.555713279 , 0.295292874 ), ( 76 , 5.703825224 , 0.384403738 ), ( 76 , 5.676916688 , 0.38737232 ), ( 76 , 5.677180754 , 0.466876176 ), ( 76 , 5.689369128 , 0.486018792 ), ( 76 , 5.675469338 , 0.501885085 ), ( 76 , 5.349394899 , 0.260807823 ), ( 76 , 5.264632365 , 0.221335431 ), ( 76 , 5.237415091 , 0.228653248 ), ( 76 , 5.286766287 , 0.255670045 ), ( 76 , 5.268042392 , 0.280583323 ), ( 76 , 5.243891942 , 0.288191692 ), ( 76 , 5.420028675 , 0.342574087 ), ( 76 , 5.385531169 , 0.340874241 ), ( 76 , 5.182155951 , 0.277641242 ), ( 76 , 5.187850883 , 0.290205906 ), ( 76 , 5.194695506 , 0.301397484 ), ( 76 , 5.203905149 , 0.327086282 ), ( 76 , 5.28492539 , 0.337980867 ), ( 76 , 5.220703788 , 0.334883765 ), ( 76 , 5.235680534 , 0.347136693 ), ( 76 , 5.149519815 , 0.31240081 ), ( 76 , 5.134011728 , 0.354876537 ), ( 76 , 5.146589082 , 0.372513689 ), ( 76 , 5.317146778 , 0.37560954 ), ( 76 , 5.279068267 , 0.364712388 ), ( 76 , 5.357253079 , 0.456342857 ), ( 76 , 5.253118658 , 0.416214528 ), ( 76 , 5.274034386 , 0.458582462 ), ( 76 , 5.549766507 , 0.402826562 ), ( 76 , 5.450159863 , 0.448032281 ), ( 76 , 5.587825011 , 0.458147116 ), ( 76 , 5.600210028 , 0.543079153 ), ( 76 , 5.392626834 , 0.44468769 ), ( 76 , 5.3710061 , 0.465747831 ), ( 76 , 5.467554045 , 0.508684132 ), ( 76 , 5.466968847 , 0.511938096 ), ( 76 , 5.428229424 , 0.508698764 ), ( 76 , 5.408795644 , 0.537803741 ), ( 76 , 5.416213897 , 0.54541714 ), ( 76 , 5.532360537 , 0.582886684 ), ( 76 , 5.427414224 , 0.594640998 ), ( 76 , 5.41789063 , 0.620395564 ), ( 76 , 5.834522911 , 0.390732892 ), ( 76 , 5.846411936 , 0.448964674 ), ( 76 , 5.99438892 , 0.499608812 ), ( 76 , 6.038891522 , 0.560482406 ), ( 76 , 5.936079071 , 0.492378722 ), ( 76 , 5.951339149 , 0.510978365 ), ( 76 , 5.928377553 , 0.518561712 ), ( 76 , 5.919936911 , 0.537409512 ), ( 76 , 5.993392541 , 0.536909227 ), ( 76 , 5.949775482 , 0.572852449 ), ( 76 , 5.843023655 , 0.483137039 ), ( 76 , 5.809270567 , 0.510588254 ), ( 76 , 5.790658272 , 0.529144901 ), ( 76 , 5.800495986 , 0.613115159 ), ( 76 , 5.877460062 , 0.540296578 ), ( 76 , 5.903416282 , 0.618505602 ), ( 76 , 5.849116463 , 0.612863332 ), ( 76 , 5.866296189 , 0.618422404 ), ( 76 , 6.073411971 , 0.570126399 ), ( 76 , 6.016950625 , 0.594576139 ), ( 76 , 6.114279682 , 0.673386395 ), ( 76 , 6.086761212 , 0.718069582 ), ( 76 , 6.150543382 , 0.674454296 ), ( 76 , 6.149162175 , 0.739322747 ), ( 76 , 6.173394176 , 0.754007327 ), ( 76 , 6.069480848 , 0.761937532 ), ( 76 , 5.932637305 , 0.736546179 ), ( 76 , 6.108116486 , 0.749855098 ), ( 76 , 6.115778277 , 0.769679748 ), ( 76 , 6.08437143 , 0.762665093 ), ( 76 , 6.226069262 , 0.851749979 ), ( 76 , 6.117602762 , 0.851636301 ), ( 76 , 6.158510397 , 0.864077634 ), ( 76 , 6.222405791 , 0.884240001 ), ( 76 , 5.716349855 , 0.555851666 ), ( 76 , 5.663281361 , 0.579463967 ), ( 76 , 5.726244768 , 0.600052815 ), ( 76 , 5.637752705 , 0.596932187 ), ( 76 , 5.64434926 , 0.672430776 ), ( 76 , 5.682127164 , 0.689866662 ), ( 76 , 5.683480266 , 0.716413101 ), ( 76 , 5.751322941 , 0.679401766 ), ( 76 , 5.784541235 , 0.721733837 ), ( 76 , 5.760397537 , 0.743223184 ), ( 76 , 5.762241097 , 0.76977912 ), ( 76 , 5.808284353 , 0.759694084 ), ( 76 , 5.827162681 , 0.763549594 ), ( 76 , 5.842651843 , 0.802939451 ), ( 76 , 5.850596206 , 0.80393175 ), ( 76 , 5.794017942 , 0.771544237 ), ( 76 , 5.634740238 , 0.699264085 ), ( 76 , 5.560250997 , 0.718148815 ), ( 76 , 5.615656392 , 0.754517991 ), ( 76 , 5.805723663 , 0.836252072 ), ( 76 , 5.807542956 , 0.856043103 ), ( 76 , 5.817659362 , 0.861742072 ), ( 76 , 5.736082701 , 0.823021578 ), ( 76 , 5.738667482 , 0.828166921 ), ( 76 , 5.758272246 , 0.857359896 ), ( 76 , 5.775830044 , 0.868682203 ), ( 76 , 5.786459749 , 0.877650733 ), ( 76 , 5.669042762 , 0.805913419 ), ( 76 , 5.621735914 , 0.845335796 ), ( 76 , 5.636295756 , 0.846209225 ), ( 76 , 5.663547362 , 0.846260407 ), ( 76 , 5.747799201 , 0.881207739 ), ( 76 , 5.91064302 , 0.785485084 ), ( 76 , 5.8518068 , 0.841946027 ), ( 76 , 5.865238715 , 0.852102279 ), ( 76 , 6.073719258 , 0.858939111 ), ( 76 , 6.09265577 , 0.881181358 ), ( 76 , 6.1208266 , 0.890948894 ), ( 76 , 6.1990666 , 0.962532417 ), ( 76 , 6.262463315 , 1.013855006 ), ( 76 , 6.164482614 , 1.010643224 ), ( 76 , 5.886422243 , 0.898989188 ), ( 76 , 5.881332575 , 0.900164513 ), ( 76 , 5.836558489 , 0.895669364 ), ( 76 , 5.944597066 , 0.946812842 ), ( 76 , 5.946623833 , 0.955698167 ), ( 76 , 5.845426316 , 0.980945195 ), ( 76 , 6.008487058 , 0.9859427 ), ( 76 , 6.158383932 , 1.037816794 ), ( 76 , 6.143132743 , 1.041877678 ), ( 76 , 6.168002431 , 1.048079969 ), ( 76 , 6.167973621 , 1.055376021 ), ( 76 , 6.028783137 , 1.050641169 ), ( 76 , 6.155865674 , 1.087141735 ), ( 76 , 6.141059188 , 1.115778256 ), ( 76 , 5.119422886 , 0.356300023 ), ( 76 , 5.104561568 , 0.396305538 ), ( 76 , 5.130389056 , 0.450536903 ), ( 76 , 5.058264473 , 0.406732757 ), ( 76 , 5.050620284 , 0.440494379 ), ( 76 , 5.061995892 , 0.46534444 ), ( 76 , 5.107803474 , 0.438440609 ), ( 76 , 5.122706948 , 0.450394645 ), ( 76 , 5.226381628 , 0.458916707 ), ( 76 , 5.234664117 , 0.539549579 ), ( 76 , 5.254742734 , 0.557387709 ), ( 76 , 5.180542676 , 0.538262928 ), ( 76 , 5.135063756 , 0.529271218 ), ( 76 , 5.142811999 , 0.544877541 ), ( 76 , 5.010296207 , 0.44286289 ), ( 76 , 4.996237086 , 0.45096014 ), ( 76 , 4.999811654 , 0.508123783 ), ( 76 , 5.047163541 , 0.543484903 ), ( 76 , 4.930794324 , 0.520374187 ), ( 76 , 4.955952728 , 0.529044497 ), ( 76 , 4.951816127 , 0.543621604 ), ( 76 , 4.95345416 , 0.565489113 ), ( 76 , 5.067775114 , 0.570334577 ), ( 76 , 5.127447918 , 0.596898536 ), ( 76 , 5.157280314 , 0.632256238 ), ( 76 , 5.154773441 , 0.671217691 ), ( 76 , 5.054799236 , 0.592462541 ), ( 76 , 5.036269218 , 0.597165893 ), ( 76 , 5.087514479 , 0.631573988 ), ( 76 , 5.060436985 , 0.641660927 ), ( 76 , 5.314521829 , 0.579298977 ), ( 76 , 5.275500248 , 0.579219176 ), ( 76 , 5.282401404 , 0.590893386 ), ( 76 , 5.362951481 , 0.625370464 ), ( 76 , 5.316531745 , 0.632755505 ), ( 76 , 5.31940529 , 0.641441182 ), ( 76 , 5.274301822 , 0.630896301 ), ( 76 , 5.268460662 , 0.638227723 ), ( 76 , 5.228255735 , 0.60079041 ), ( 76 , 5.301788714 , 0.657919474 ), ( 76 , 5.3267707 , 0.667701153 ), ( 76 , 5.290755046 , 0.702812029 ), ( 76 , 5.37316989 , 0.697066551 ), ( 76 , 5.449837755 , 0.694494785 ), ( 76 , 5.448546876 , 0.728898848 ), ( 76 , 5.418991518 , 0.742203248 ), ( 76 , 5.371452927 , 0.705576838 ), ( 76 , 5.369156972 , 0.706978191 ), ( 76 , 5.336836096 , 0.712103248 ), ( 76 , 5.354836756 , 0.753065351 ), ( 76 , 5.379030404 , 0.785030903 ), ( 76 , 5.384214466 , 0.810116011 ), ( 76 , 5.166252853 , 0.663346967 ), ( 76 , 5.249224397 , 0.701153062 ), ( 76 , 5.212375097 , 0.723687177 ), ( 76 , 5.214050741 , 0.730818625 ), ( 76 , 5.144906741 , 0.709071475 ), ( 76 , 5.174084148 , 0.707822648 ), ( 76 , 5.180976717 , 0.741467829 ), ( 76 , 5.133615212 , 0.715752495 ), ( 76 , 5.163445647 , 0.824575437 ), ( 76 , 5.280592426 , 0.767005494 ), ( 76 , 5.33054943 , 0.782155626 ), ( 76 , 5.269032691 , 0.788074188 ), ( 76 , 5.24375505 , 0.793719294 ), ( 76 , 5.367253745 , 0.848953793 ), ( 76 , 5.260729567 , 0.84765147 ), ( 76 , 5.274561957 , 0.853659029 ), ( 76 , 5.250060897 , 0.88077671 ), ( 76 , 5.296158853 , 0.894307751 ), ( 76 , 4.91841697 , 0.548133116 ), ( 76 , 4.90831172 , 0.579227362 ), ( 76 , 4.972933765 , 0.595072771 ), ( 76 , 4.951778475 , 0.593079113 ), ( 76 , 4.848739651 , 0.586954792 ), ( 76 , 4.861399071 , 0.601232377 ), ( 76 , 4.880067351 , 0.629241171 ), ( 76 , 4.885617367 , 0.663110709 ), ( 76 , 4.870413705 , 0.663826642 ), ( 76 , 4.961561813 , 0.677159755 ), ( 76 , 5.010054041 , 0.683381961 ), ( 76 , 5.059843141 , 0.702794213 ), ( 76 , 5.09377586 , 0.737037377 ), ( 76 , 4.938457553 , 0.723703511 ), ( 76 , 4.932813481 , 0.748960917 ), ( 76 , 4.940476854 , 0.762881179 ), ( 76 , 4.839223632 , 0.766903885 ), ( 76 , 4.747676063 , 0.714096843 ), ( 76 , 4.723324372 , 0.755181187 ), ( 76 , 4.717273623 , 0.791525521 ), ( 76 , 4.741392391 , 0.807620639 ), ( 76 , 4.871396589 , 0.764395502 ), ( 76 , 4.840578165 , 0.802537253 ), ( 76 , 4.780324317 , 0.830090848 ), ( 76 , 4.765856755 , 0.839847544 ), ( 76 , 4.736192753 , 0.861206729 ), ( 76 , 5.079310737 , 0.81050348 ), ( 76 , 5.118808113 , 0.803540188 ), ( 76 , 5.089708539 , 0.837231976 ), ( 76 , 5.034804861 , 0.843853298 ), ( 76 , 4.99067933 , 0.866257994 ), ( 76 , 5.063747337 , 0.878606481 ), ( 76 , 5.086875986 , 0.887527196 ), ( 76 , 5.13796918 , 0.959193979 ), ( 76 , 5.074376387 , 0.961123045 ), ( 76 , 4.881925558 , 0.913573358 ), ( 76 , 4.796611217 , 0.918948471 ), ( 76 , 4.750112761 , 1.011935341 ), ( 76 , 5.000072645 , 1.048935714 ), ( 76 , 4.905917066 , 1.081033549 ), ( 76 , 4.732295351 , 1.113456788 ), ( 76 , 4.774366436 , 1.130144005 ), ( 76 , 5.503193204 , 0.763089195 ), ( 76 , 5.488562271 , 0.781699727 ), ( 76 , 5.490885286 , 0.813400945 ), ( 76 , 5.539573934 , 0.798286991 ), ( 76 , 5.54351551 , 0.831731823 ), ( 76 , 5.527147986 , 0.841058405 ), ( 76 , 5.523694019 , 0.838534142 ), ( 76 , 5.529669239 , 0.869005566 ), ( 76 , 5.447343902 , 0.79328905 ), ( 76 , 5.460749793 , 0.832658888 ), ( 76 , 5.613351381 , 0.920624882 ), ( 76 , 5.708033005 , 0.926593125 ), ( 76 , 5.672405971 , 0.941936324 ), ( 76 , 5.645106347 , 0.947991351 ), ( 76 , 5.560504934 , 0.954108033 ), ( 76 , 5.550197284 , 0.979837879 ), ( 76 , 5.699707554 , 1.013380791 ), ( 76 , 5.589808393 , 0.986837724 ), ( 76 , 5.391160919 , 0.880083759 ), ( 76 , 5.364039945 , 0.880699744 ), ( 76 , 5.319005133 , 0.907169048 ), ( 76 , 5.368273176 , 0.954375693 ), ( 76 , 5.373791623 , 0.983596555 ), ( 76 , 5.31553958 , 1.026414839 ), ( 76 , 5.348190861 , 1.050299075 ), ( 76 , 5.465003474 , 1.023722509 ), ( 76 , 5.644570631 , 1.05304757 ), ( 76 , 5.525808061 , 1.037408009 ), ( 76 , 5.403177615 , 1.028831138 ), ( 76 , 5.39425313 , 1.033466039 ), ( 76 , 5.425178225 , 1.103206942 ), ( 76 , 5.778500375 , 1.025939755 ), ( 76 , 5.691032994 , 1.063122316 ), ( 76 , 5.743297699 , 1.097718095 ), ( 76 , 5.938164255 , 1.161100101 ), ( 76 , 5.697217303 , 1.087485291 ), ( 76 , 5.732964911 , 1.11242477 ), ( 76 , 5.791171269 , 1.192103573 ), ( 76 , 5.592580062 , 1.123375504 ), ( 76 , 5.599412131 , 1.134456232 ), ( 76 , 5.580046934 , 1.151730477 ), ( 76 , 5.545136587 , 1.164301503 ), ( 76 , 5.58834074 , 1.173226963 ), ( 76 , 6.001395537 , 1.226919217 ), ( 76 , 5.836102713 , 1.222755842 ), ( 76 , 5.86539019 , 1.244437867 ), ( 76 , 5.788907296 , 1.260624642 ), ( 76 , 6.201251237 , 1.319157054 ), ( 76 , 5.995694949 , 1.302223039 ), ( 76 , 5.28238853 , 1.001589816 ), ( 76 , 5.243663161 , 1.006213942 ), ( 76 , 5.224062355 , 1.09740991 ), ( 76 , 5.26553015 , 1.111891579 ), ( 76 , 5.231602717 , 1.177609282 ), ( 76 , 5.2807295 , 1.192036424 ), ( 76 , 5.108171428 , 1.199869083 ), ( 76 , 4.866210791 , 1.261421834 ), ( 76 , 4.882902625 , 1.273385008 ), ( 76 , 4.751165729 , 1.259302439 ), ( 76 , 4.943962132 , 1.293091927 ), ( 76 , 4.893245026 , 1.314238704 ), ( 76 , 5.548148058 , 1.236131794 ), ( 76 , 5.771829483 , 1.288490686 ), ( 76 , 5.79166611 , 1.304334269 ), ( 76 , 5.993646615 , 1.377098393 ), ( 76 , 5.623382544 , 1.360224082 ), ( 76 , 5.008025964 , 1.409419001 ), ( 76 , 5.002972744 , 1.409003726 ), ( 76 , 5.94757617 , 1.453348641 ), ( 76 , 5.831862298 , 1.474878576 ), ( 76 , 5.984615788 , 1.484339723 ), ( 76 , 5.267716992 , 1.434951345 ), ( 76 , 0.002360838 , -0.710184311 ), ( 76 , 6.272195369 , -0.64063573 ), ( 76 , 6.281342662 , -0.553060253 ), ( 76 , 0.072178905 , -0.571778427 ), ( 76 , 0.062554596 , -0.480533366 ), ( 76 , 0.264239075 , -0.449413433 ), ( 76 , 0.205069736 , -0.422664514 ), ( 76 , 0.146630772 , -0.455388501 ), ( 76 , 0.186208906 , -0.352450113 ), ( 76 , 0.282844463 , -0.361849697 ), ( 76 , 0.112178672 , -0.377540215 ), ( 76 , 0.058063728 , -0.359858538 ), ( 76 , 0.104702142 , -0.310844934 ), ( 76 , 6.129215989 , -0.477415978 ), ( 76 , 6.093414107 , -0.472645861 ), ( 76 , 6.169768394 , -0.433878895 ), ( 76 , 6.022803255 , -0.456488601 ), ( 76 , 6.083026617 , -0.343757093 ), ( 76 , 6.153456545 , -0.381922102 ), ( 76 , 6.255441395 , -0.35810432 ), ( 76 , 6.255986073 , -0.320526393 ), ( 76 , 6.233053857 , -0.329603634 ), ( 76 , 6.125543213 , -0.310484629 ), ( 76 , 5.923205196 , -0.355672317 ), ( 76 , 5.966218743 , -0.281814324 ), ( 76 , 6.096232456 , -0.31705748 ), ( 76 , 6.107249237 , -0.275454558 ), ( 76 , 6.088350061 , -0.201858388 ), ( 76 , 6.085535569 , -0.169099168 ), ( 76 , 0.001980992 , -0.291421464 ), ( 76 , 0.023739152 , -0.251719571 ), ( 76 , 6.221545848 , -0.257520735 ), ( 76 , 0.127299269 , -0.202421578 ), ( 76 , 6.113897309 , -0.151392657 ), ( 76 , 6.174412867 , -0.133994813 ), ( 76 , 0.061181706 , -0.068224213 ), ( 76 , 6.229319875 , -0.077869664 ), ( 76 , 6.281388362 , -0.032283597 ), ( 76 , 0.399911232 , -0.332174812 ), ( 76 , 0.386623183 , -0.201282773 ), ( 76 , 0.400531823 , -0.179026294 ), ( 76 , 0.512788731 , -0.11916619 ), ( 76 , 0.312125114 , -0.224162385 ), ( 76 , 0.30369105 , -0.203829941 ), ( 76 , 0.315308 , -0.190942912 ), ( 76 , 0.251075436 , -0.18283652 ), ( 76 , 0.289947142 , -0.170460277 ), ( 76 , 0.244950317 , -0.140041193 ), ( 76 , 0.324998268 , -0.088109914 ), ( 76 , 0.578985244 , -0.038890215 ), ( 76 , 0.685636945 , -0.04073623 ), ( 76 , 0.661030137 , 0.019095092 ), ( 76 , 0.618166381 , -0.002595102 ), ( 76 , 0.661152217 , 0.059994774 ), ( 76 , 0.493483728 , -0.023201726 ), ( 76 , 0.445812089 , 0.040284253 ), ( 76 , 0.176323609 , -0.133645401 ), ( 76 , 0.14480664 , -0.067157414 ), ( 76 , 0.369512622 , -0.016934251 ), ( 76 , 0.288403779 , 0.057150839 ), ( 76 , 0.038706454 , 0.01208637 ), ( 76 , 0.046593189 , 0.035878335 ), ( 76 , 0.2414095 , 0.119629876 ), ( 76 , 0.372352932 , 0.025489307 ), ( 76 , 0.359496784 , 0.09164981 ), ( 76 , 0.419083208 , 0.133438353 ), ( 76 , 0.419090673 , 0.133442473 ), ( 76 , 0.361931498 , 0.12951851 ), ( 76 , 0.47967125 , 0.126067166 ), ( 76 , 0.534905137 , 0.158503999 ), ( 76 , 0.442532304 , 0.158354535 ), ( 76 , 0.360940306 , 0.180971719 ), ( 76 , 5.927921507 , -0.24551502 ), ( 76 , 5.970663927 , -0.14158624 ), ( 76 , 5.796979602 , -0.20269712 ), ( 76 , 5.772746493 , -0.148353802 ), ( 76 , 5.824605854 , -0.1175561 ), ( 76 , 5.823732492 , -0.11171148 ), ( 76 , 5.815139991 , -0.112901686 ), ( 76 , 5.852958017 , -0.108964339 ), ( 76 , 6.086085322 , -0.134441238 ), ( 76 , 6.11413451 , -0.108078945 ), ( 76 , 6.058201848 , -0.008724378 ), ( 76 , 6.0801705 , 0.016239246 ), ( 76 , 6.1138332 , 0.038346946 ), ( 76 , 6.079841207 , 0.046698521 ), ( 76 , 6.058826443 , 0.081646332 ), ( 76 , 6.043001917 , 0.080283497 ), ( 76 , 6.105775961 , 0.125923412 ), ( 76 , 5.707273348 , -0.112806411 ), ( 76 , 5.743140511 , -0.121823908 ), ( 76 , 5.840286723 , -0.019595396 ), ( 76 , 5.783128095 , 0.004557172 ), ( 76 , 5.661856382 , 0.010154279 ), ( 76 , 5.592877549 , 0.035383144 ), ( 76 , 5.774479834 , 0.094956266 ), ( 76 , 5.715320399 , 0.090986242 ), ( 76 , 5.681674515 , 0.084375087 ), ( 76 , 5.637051926 , 0.092382855 ), ( 76 , 5.902220163 , 0.019266925 ), ( 76 , 5.902563925 , 0.052437974 ), ( 76 , 5.83592813 , 0.089782661 ), ( 76 , 5.874460404 , 0.137936984 ), ( 76 , 5.895526932 , 0.162657244 ), ( 76 , 5.998419572 , 0.126663776 ), ( 76 , 6.041744455 , 0.154512888 ), ( 76 , 5.943443767 , 0.193477671 ), ( 76 , 5.699916991 , 0.163056236 ), ( 76 , 5.95371054 , 0.249417144 ), ( 76 , 5.921780534 , 0.301641815 ), ( 76 , 5.861974317 , 0.30815244 ), ( 76 , 6.258429029 , 0.064184261 ), ( 76 , 6.260821413 , 0.106588364 ), ( 76 , 0.078023201 , 0.137287404 ), ( 76 , 6.223427042 , 0.170759656 ), ( 76 , 6.191080707 , 0.21283274 ), ( 76 , 0.173149349 , 0.201274799 ), ( 76 , 0.26294571 , 0.317623925 ), ( 76 , 0.025778798 , 0.318242981 ), ( 76 , 0.239905159 , 0.420607303 ), ( 76 , 6.01239687 , 0.237571646 ), ( 76 , 6.127460163 , 0.373721305 ), ( 76 , 6.187923818 , 0.358999056 ), ( 76 , 5.981550786 , 0.314197455 ), ( 76 , 6.047320823 , 0.315681982 ), ( 76 , 6.013129804 , 0.375471853 ), ( 76 , 6.138893274 , 0.443358459 ), ( 76 , 0.01498353 , 0.360662559 ), ( 76 , 6.240323456 , 0.433854207 ), ( 76 , 0.032201668 , 0.46163584 ), ( 76 , 0.128061443 , 0.503140338 ), ( 76 , 0.186720064 , 0.525385179 ), ( 76 , 0.051633649 , 0.496083889 ), ( 76 , 0.03496169 , 0.520763601 ), ( 76 , 0.118377084 , 0.544143213 ), ( 76 , 0.133801307 , 0.560885467 ), ( 76 , 0.065940565 , 0.576488307 ), ( 76 , 6.153196785 , 0.547653123 ), ( 76 , 6.147180009 , 0.554947869 ), ( 76 , 6.139296071 , 0.567597182 ), ( 76 , 6.14280368 , 0.575235757 ), ( 76 , 6.266081412 , 0.54240381 ), ( 76 , 6.263014558 , 0.574073021 ), ( 76 , 0.036993573 , 0.609723879 ), ( 76 , 0.012075733 , 0.625097545 ), ( 76 , 0.033679371 , 0.649006488 ), ( 76 , 6.214595721 , 0.634237673 ), ( 76 , 1.552121748 , -0.665048056 ), ( 76 , 1.619924128 , -0.591157522 ), ( 76 , 1.515686942 , -0.667255979 ), ( 76 , 1.527391311 , -0.603072972 ), ( 76 , 1.561532991 , -0.601723838 ), ( 76 , 1.67069968 , -0.586686537 ), ( 76 , 1.625385656 , -0.50646802 ), ( 76 , 1.626122459 , -0.483905692 ), ( 76 , 1.656582392 , -0.470971955 ), ( 76 , 1.410236306 , -0.554129736 ), ( 76 , 1.401431104 , -0.524851427 ), ( 76 , 1.473452753 , -0.466315505 ), ( 76 , 1.579030445 , -0.47748178 ), ( 76 , 1.606332874 , -0.443592102 ), ( 76 , 1.647701331 , -0.42665525 ), ( 76 , 1.602597547 , -0.39389579 ), ( 76 , 1.77135861 , -0.502865978 ), ( 76 , 1.785086544 , -0.454896167 ), ( 76 , 1.836545574 , -0.42742761 ), ( 76 , 1.841945248 , -0.41009578 ), ( 76 , 1.802990926 , -0.421787331 ), ( 76 , 1.796332856 , -0.415438667 ), ( 76 , 1.787794231 , -0.420215748 ), ( 76 , 1.817629754 , -0.39522607 ), ( 76 , 1.898353688 , -0.397527453 ), ( 76 , 1.861298449 , -0.384229313 ), ( 76 , 1.878422083 , -0.353863314 ), ( 76 , 1.851035843 , -0.371162632 ), ( 76 , 1.809026502 , -0.312713259 ), ( 76 , 1.717236208 , -0.351494342 ), ( 76 , 1.722871785 , -0.342898024 ), ( 76 , 1.689485101 , -0.35641588 ), ( 76 , 1.691237848 , -0.339545107 ), ( 76 , 1.644436434 , -0.324745048 ), ( 76 , 1.686477685 , -0.289749016 ), ( 76 , 1.64030035 , -0.297216554 ), ( 76 , 1.745633593 , -0.301831728 ), ( 76 , 1.811650445 , -0.274079243 ), ( 76 , 1.810281527 , -0.259410545 ), ( 76 , 1.798513827 , -0.230675518 ), ( 76 , 1.797857844 , -0.195554862 ), ( 76 , 1.731514262 , -0.199403155 ), ( 76 , 1.756752954 , -0.18761429 ), ( 76 , 1.365416612 , -0.474013962 ), ( 76 , 1.314694079 , -0.413773362 ), ( 76 , 1.400273185 , -0.367215162 ), ( 76 , 1.355791706 , -0.362127995 ), ( 76 , 1.461545995 , -0.36769969 ), ( 76 , 1.400297413 , -0.343604597 ), ( 76 , 1.49182806 , -0.272818698 ), ( 76 , 1.289962909 , -0.405631481 ), ( 76 , 1.34393313 , -0.351189912 ), ( 76 , 1.268594753 , -0.329872767 ), ( 76 , 1.292459984 , -0.309557009 ), ( 76 , 1.368108943 , -0.298565273 ), ( 76 , 1.371567483 , -0.27625373 ), ( 76 , 1.401956332 , -0.264431153 ), ( 76 , 1.329102612 , -0.260881661 ), ( 76 , 1.330592855 , -0.248237802 ), ( 76 , 1.299151927 , -0.239197239 ), ( 76 , 1.394877684 , -0.192596412 ), ( 76 , 1.393419899 , -0.187572552 ), ( 76 , 1.36115937 , -0.191305347 ), ( 76 , 1.585185267 , -0.280009096 ), ( 76 , 1.610587845 , -0.274044697 ), ( 76 , 1.520431607 , -0.233147179 ), ( 76 , 1.695477845 , -0.227752653 ), ( 76 , 1.698814355 , -0.160725137 ), ( 76 , 1.657705975 , -0.126547363 ), ( 76 , 1.662300852 , -0.116797264 ), ( 76 , 1.492894924 , -0.226723378 ), ( 76 , 1.449134605 , -0.117082068 ), ( 76 , 1.573065027 , -0.130373579 ), ( 76 , 1.560721891 , -0.106370633 ), ( 76 , 1.628433132 , -0.087436833 ), ( 76 , 1.517474407 , -0.112310578 ), ( 76 , 1.946267396 , -0.320495043 ), ( 76 , 1.93387279 , -0.310189526 ), ( 76 , 1.932136388 , -0.291926681 ), ( 76 , 1.999034964 , -0.280023459 ), ( 76 , 2.005911619 , -0.276247405 ), ( 76 , 1.935696016 , -0.246093958 ), ( 76 , 1.910956413 , -0.242374543 ), ( 76 , 2.093301623 , -0.224573689 ), ( 76 , 2.109817382 , -0.142647593 ), ( 76 , 2.082738479 , -0.13613544 ), ( 76 , 2.032647662 , -0.131422419 ), ( 76 , 2.057430109 , -0.121880554 ), ( 76 , 1.882631645 , -0.228124907 ), ( 76 , 1.876821193 , -0.205996398 ), ( 76 , 1.867456396 , -0.202399213 ), ( 76 , 1.862879174 , -0.197699292 ), ( 76 , 1.852473597 , -0.147333381 ), ( 76 , 1.897985271 , -0.13404601 ), ( 76 , 1.949398688 , -0.102429953 ), ( 76 , 2.03404718 , -0.069134892 ), ( 76 , 2.187156506 , -0.140635582 ), ( 76 , 2.2044876 , -0.125145484 ), ( 76 , 2.193953068 , -0.116846969 ), ( 76 , 2.221357555 , -0.102557453 ), ( 76 , 2.199967211 , -0.09912237 ), ( 76 , 2.178395952 , -0.098074157 ), ( 76 , 2.115421463 , -0.094451787 ), ( 76 , 2.242966442 , -0.027382237 ), ( 76 , 2.070670838 , -0.024656227 ), ( 76 , 2.132671594 , 0.013159464 ), ( 76 , 2.121594961 , 0.02054832 ), ( 76 , 2.022888524 , -0.023532182 ), ( 76 , 2.135276183 , 0.022934214 ), ( 76 , 2.209311928 , 0.043452543 ), ( 76 , 2.192364652 , 0.087545272 ), ( 76 , 2.171323566 , 0.108993775 ), ( 76 , 2.154890658 , 0.110011857 ), ( 76 , 2.196945345 , 0.118911109 ), ( 76 , 2.183364651 , 0.139754327 ), ( 76 , 1.825627071 , -0.078976629 ), ( 76 , 1.780006533 , -0.089954613 ), ( 76 , 1.713349256 , -0.093210562 ), ( 76 , 1.713348156 , -0.093207705 ), ( 76 , 1.69207442 , -0.08607322 ), ( 76 , 1.727714669 , -0.069423218 ), ( 76 , 1.705137811 , -0.064807384 ), ( 76 , 1.811412546 , -0.043306563 ), ( 76 , 1.867274956 , -0.081635607 ), ( 76 , 1.838925918 , -0.054411932 ), ( 76 , 1.856791047 , -0.013749858 ), ( 76 , 1.923228784 , -0.014778287 ), ( 76 , 1.824137403 , 0.006446094 ), ( 76 , 1.837808699 , 0.009615226 ), ( 76 , 1.781064867 , 0.005327461 ), ( 76 , 1.817627372 , 0.02021219 ), ( 76 , 1.851228818 , 0.0263096 ), ( 76 , 1.823710155 , 0.040005393 ), ( 76 , 1.851472641 , 0.070236234 ), ( 76 , 1.654158045 , -0.065397019 ), ( 76 , 1.659246083 , -0.035860339 ), ( 76 , 1.654278201 , -0.023858881 ), ( 76 , 1.670397705 , -0.014540402 ), ( 76 , 1.723817063 , 0.031710967 ), ( 76 , 1.598751043 , -0.016815062 ), ( 76 , 1.60238497 , 0.026321402 ), ( 76 , 1.647607397 , 0.030978895 ), ( 76 , 1.631363528 , 0.048991808 ), ( 76 , 1.766387211 , 0.064226527 ), ( 76 , 1.821616105 , 0.050403689 ), ( 76 , 1.850214747 , 0.089569373 ), ( 76 , 1.779198081 , 0.077594046 ), ( 76 , 1.823577409 , 0.114303979 ), ( 76 , 1.736440647 , 0.074325016 ), ( 76 , 1.709879378 , 0.087844295 ), ( 76 , 1.693984666 , 0.092018308 ), ( 76 , 1.732996705 , 0.10575259 ), ( 76 , 1.720795605 , 0.116849062 ), ( 76 , 1.773898403 , 0.160642172 ), ( 76 , 1.984248181 , 0.042256633 ), ( 76 , 1.995555624 , 0.094338673 ), ( 76 , 1.993150822 , 0.106022938 ), ( 76 , 1.961708759 , 0.136842266 ), ( 76 , 2.052413467 , 0.100620392 ), ( 76 , 2.089522841 , 0.147539174 ), ( 76 , 2.007283955 , 0.193547588 ), ( 76 , 1.896122823 , 0.140208022 ), ( 76 , 1.923444826 , 0.168484167 ), ( 76 , 1.879854451 , 0.163674491 ), ( 76 , 1.918027585 , 0.181499628 ), ( 76 , 1.818784412 , 0.198823139 ), ( 76 , 1.832027048 , 0.205984048 ), ( 76 , 2.025281686 , 0.247367885 ), ( 76 , 1.925749962 , 0.229767727 ), ( 76 , 1.952292385 , 0.267320502 ), ( 76 , 1.169234341 , -0.311385217 ), ( 76 , 1.228565166 , -0.256354734 ), ( 76 , 1.169664252 , -0.209475836 ), ( 76 , 1.248601114 , -0.201780066 ), ( 76 , 1.335977482 , -0.181905776 ), ( 76 , 1.315424306 , -0.185866076 ), ( 76 , 1.284799944 , -0.094607916 ), ( 76 , 1.159464365 , -0.089938784 ), ( 76 , 1.138944144 , -0.064906405 ), ( 76 , 1.204417079 , -0.038926694 ), ( 76 , 1.398020251 , -0.140155756 ), ( 76 , 1.421933302 , -0.111052515 ), ( 76 , 1.452774536 , -0.079700479 ), ( 76 , 1.460494179 , -0.07665701 ), ( 76 , 1.433585165 , -0.081979247 ), ( 76 , 1.443745105 , -0.074259886 ), ( 76 , 1.336130309 , -0.060825511 ), ( 76 , 1.39484415 , -0.026468362 ), ( 76 , 1.487725819 , -0.067075322 ), ( 76 , 1.488087503 , -0.040235198 ), ( 76 , 1.440215079 , -0.030536776 ), ( 76 , 1.484514242 , -0.025526414 ), ( 76 , 1.525174162 , -0.011900923 ), ( 76 , 1.4424171 , 0.00637987 ), ( 76 , 1.429488432 , 0.019331315 ), ( 76 , 1.450844056 , 0.046224659 ), ( 76 , 1.267392289 , -0.067461202 ), ( 76 , 1.271950185 , -0.063870816 ), ( 76 , 1.275696964 , -0.055379867 ), ( 76 , 1.340752822 , 0.017298852 ), ( 76 , 1.257060056 , 0.011793285 ), ( 76 , 1.210585756 , 0.00965515 ), ( 76 , 1.228703834 , 0.009776243 ), ( 76 , 1.280509472 , 0.019721795 ), ( 76 , 1.26632646 , 0.064290269 ), ( 76 , 1.34207596 , 0.043093532 ), ( 76 , 1.375334435 , 0.074534336 ), ( 76 , 1.428532528 , 0.074378356 ), ( 76 , 1.387321136 , 0.141463786 ), ( 76 , 1.064813837 , -0.08029423 ), ( 76 , 1.016647627 , -0.076292993 ), ( 76 , 0.937677101 , -0.059552639 ), ( 76 , 0.975669584 , -0.036265167 ), ( 76 , 1.110109062 , 0.028958256 ), ( 76 , 1.103650809 , 0.033574408 ), ( 76 , 0.858178768 , -0.06162056 ), ( 76 , 0.949634522 , 0.019591367 ), ( 76 , 0.919761356 , 0.089928341 ), ( 76 , 0.928742081 , 0.091706714 ), ( 76 , 0.938854121 , 0.099724052 ), ( 76 , 1.017621573 , 0.135609318 ), ( 76 , 0.996477533 , 0.149753568 ), ( 76 , 1.147395564 , 0.050608458 ), ( 76 , 1.281496068 , 0.105013774 ), ( 76 , 1.353210756 , 0.173875742 ), ( 76 , 1.294731651 , 0.153979938 ), ( 76 , 1.215639276 , 0.142683056 ), ( 76 , 1.209237629 , 0.189224464 ), ( 76 , 1.234018688 , 0.213073028 ), ( 76 , 1.108358527 , 0.192461102 ), ( 76 , 1.171088907 , 0.203606506 ), ( 76 , 1.168371538 , 0.204837648 ), ( 76 , 1.167630591 , 0.272079825 ), ( 76 , 1.161084228 , 0.27094783 ), ( 76 , 1.16017428 , 0.304517172 ), ( 76 , 1.60696726 , 0.05913792 ), ( 76 , 1.650558785 , 0.069542107 ), ( 76 , 1.651667164 , 0.078709874 ), ( 76 , 1.504142341 , 0.066869891 ), ( 76 , 1.516250953 , 0.071561051 ), ( 76 , 1.548721575 , 0.093441073 ), ( 76 , 1.571791183 , 0.084412416 ), ( 76 , 1.56407682 , 0.137192846 ), ( 76 , 1.661167543 , 0.092121161 ), ( 76 , 1.662870828 , 0.131517334 ), ( 76 , 1.677669118 , 0.146555012 ), ( 76 , 1.691740223 , 0.1680155 ), ( 76 , 1.65669167 , 0.214546847 ), ( 76 , 1.633811467 , 0.206185422 ), ( 76 , 1.655297661 , 0.226718972 ), ( 76 , 1.443661433 , 0.178972422 ), ( 76 , 1.578048067 , 0.295555978 ), ( 76 , 1.568745165 , 0.329031015 ), ( 76 , 1.816026923 , 0.21957055 ), ( 76 , 1.781433608 , 0.254685923 ), ( 76 , 1.794411353 , 0.263130874 ), ( 76 , 1.727349821 , 0.229985857 ), ( 76 , 1.708332979 , 0.276692433 ), ( 76 , 1.776860478 , 0.295417352 ), ( 76 , 1.776422106 , 0.298798809 ), ( 76 , 1.840270644 , 0.313728444 ), ( 76 , 1.870688813 , 0.308177553 ), ( 76 , 1.940927805 , 0.349079701 ), ( 76 , 1.872499075 , 0.341150682 ), ( 76 , 1.847848678 , 0.335486217 ), ( 76 , 1.826187267 , 0.335485165 ), ( 76 , 1.842523723 , 0.385648485 ), ( 76 , 1.715192429 , 0.295811317 ), ( 76 , 1.707768513 , 0.304005565 ), ( 76 , 1.700960825 , 0.307598229 ), ( 76 , 1.691556731 , 0.318068277 ), ( 76 , 1.664038274 , 0.370003831 ), ( 76 , 1.693652055 , 0.369266104 ), ( 76 , 1.646452991 , 0.386484874 ), ( 76 , 1.65860927 , 0.408491454 ), ( 76 , 1.666004005 , 0.414697125 ), ( 76 , 1.749929242 , 0.360331692 ), ( 76 , 1.735059067 , 0.396474148 ), ( 76 , 1.813484257 , 0.419018915 ), ( 76 , 1.754924511 , 0.444508296 ), ( 76 , 1.401495351 , 0.193887707 ), ( 76 , 1.396523522 , 0.236393883 ), ( 76 , 1.330020233 , 0.232282979 ), ( 76 , 1.304431209 , 0.253937591 ), ( 76 , 1.406697425 , 0.28138917 ), ( 76 , 1.382000938 , 0.321829987 ), ( 76 , 1.434814215 , 0.286697143 ), ( 76 , 1.432981169 , 0.289806784 ), ( 76 , 1.529510335 , 0.314618522 ), ( 76 , 1.494349962 , 0.331394258 ), ( 76 , 1.48422648 , 0.34348655 ), ( 76 , 1.450223461 , 0.333741636 ), ( 76 , 1.464659665 , 0.373556227 ), ( 76 , 1.294998835 , 0.29206518 ), ( 76 , 1.191247303 , 0.337687546 ), ( 76 , 1.29415355 , 0.406574091 ), ( 76 , 1.283751761 , 0.418853144 ), ( 76 , 1.35357004 , 0.386357726 ), ( 76 , 1.325882049 , 0.435843694 ), ( 76 , 1.330097931 , 0.466361639 ), ( 76 , 1.314735865 , 0.463110157 ), ( 76 , 1.604746728 , 0.396323365 ), ( 76 , 1.613663287 , 0.422633101 ), ( 76 , 1.632531618 , 0.418640548 ), ( 76 , 1.638046736 , 0.442156069 ), ( 76 , 1.564743372 , 0.432799295 ), ( 76 , 1.573488735 , 0.506232508 ), ( 76 , 1.671172991 , 0.499539037 ), ( 76 , 1.648717038 , 0.567312436 ), ( 76 , 1.44591844 , 0.484655986 ), ( 76 , 1.50765684 , 0.51135533 ), ( 76 , 1.503249662 , 0.532121411 ), ( 76 , 1.534688441 , 0.54030608 ), ( 76 , 1.515112147 , 0.552564621 ), ( 76 , 1.409456235 , 0.49687135 ), ( 76 , 1.42754964 , 0.522220574 ), ( 76 , 1.480970202 , 0.539145276 ), ( 76 , 1.576995531 , 0.569676589 ), ( 76 , 1.560590732 , 0.580494956 ), ( 76 , 1.639032982 , 0.630869384 ), ( 76 , 1.538728236 , 0.598093645 ), ( 76 , 1.542914247 , 0.630596076 ), ( 76 , 1.548409836 , 0.632656334 ), ( 76 , 3.15728995 , -0.680839319 ), ( 76 , 3.142865804 , -0.633303067 ), ( 76 , 3.116158114 , -0.628183385 ), ( 76 , 3.161549877 , -0.544327516 ), ( 76 , 3.202731858 , -0.565260557 ), ( 76 , 3.221887277 , -0.549703594 ), ( 76 , 3.283764382 , -0.566606695 ), ( 76 , 3.313518196 , -0.515515827 ), ( 76 , 3.189025502 , -0.489881077 ), ( 76 , 3.116231972 , -0.539429399 ), ( 76 , 3.021713033 , -0.508621854 ), ( 76 , 3.082628317 , -0.427333485 ), ( 76 , 3.091120852 , -0.403004292 ), ( 76 , 3.404378034 , -0.417388899 ), ( 76 , 3.262317765 , -0.431576865 ), ( 76 , 3.283930914 , -0.42238659 ), ( 76 , 3.340321007 , -0.351609126 ), ( 76 , 3.486640713 , -0.349127523 ), ( 76 , 3.48523554 , -0.299038573 ), ( 76 , 3.277558748 , -0.341983247 ), ( 76 , 3.246468206 , -0.341599566 ), ( 76 , 3.289577768 , -0.29807166 ), ( 76 , 3.193160296 , -0.347832144 ), ( 76 , 3.22585886 , -0.284030502 ), ( 76 , 3.241572879 , -0.255917242 ), ( 76 , 3.405230281 , -0.242462852 ), ( 76 , 3.280433339 , -0.274295592 ), ( 76 , 3.361840068 , -0.227498273 ), ( 76 , 3.347974997 , -0.21430833 ), ( 76 , 2.951962134 , -0.490955476 ), ( 76 , 2.870688222 , -0.384336537 ), ( 76 , 2.86128421 , -0.285654978 ), ( 76 , 2.840095101 , -0.259900497 ), ( 76 , 2.953127942 , -0.253219863 ), ( 76 , 2.999789528 , -0.217053851 ), ( 76 , 2.908171221 , -0.234183112 ), ( 76 , 2.920444233 , -0.203816304 ), ( 76 , 3.210669091 , -0.241146871 ), ( 76 , 3.096996067 , -0.238278791 ), ( 76 , 3.154674697 , -0.187666936 ), ( 76 , 3.222464689 , -0.155420798 ), ( 76 , 3.020539205 , -0.216359739 ), ( 76 , 3.052834787 , -0.16521715 ), ( 76 , 3.056984607 , -0.146708011 ), ( 76 , 3.213042458 , -0.102028449 ), ( 76 , 3.195976369 , -0.05378352 ), ( 76 , 3.094704288 , -0.120335759 ), ( 76 , 3.114831703 , -0.065924114 ), ( 76 , 3.072072845 , -0.083905142 ), ( 76 , 3.48556388 , -0.209710524 ), ( 76 , 3.639587674 , -0.204120701 ), ( 76 , 3.589234701 , -0.210958575 ), ( 76 , 3.623921992 , -0.132625804 ), ( 76 , 3.413041316 , -0.211336554 ), ( 76 , 3.440324832 , -0.20530914 ), ( 76 , 3.452896316 , -0.183504317 ), ( 76 , 3.446019255 , -0.133614193 ), ( 76 , 3.526952859 , -0.014713233 ), ( 76 , 3.739756132 , -0.10016769 ), ( 76 , 3.716210502 , -0.102231687 ), ( 76 , 3.900075302 , -0.007086183 ), ( 76 , 3.764340483 , 0.039702665 ), ( 76 , 3.789438415 , 0.099149962 ), ( 76 , 3.461660048 , -0.06099205 ), ( 76 , 3.403949934 , -0.020697186 ), ( 76 , 3.436600726 , 0.025731151 ), ( 76 , 3.236939397 , -0.076561222 ), ( 76 , 3.212620446 , -0.056479401 ), ( 76 , 3.197011655 , -0.04316283 ), ( 76 , 3.219950441 , 0.027493591 ), ( 76 , 3.361254901 , 0.10868204 ), ( 76 , 3.526758492 , 0.039021872 ), ( 76 , 3.506719506 , 0.04758941 ), ( 76 , 3.469044314 , 0.078844046 ), ( 76 , 3.518684348 , 0.099636712 ), ( 76 , 3.656583881 , 0.130259492 ), ( 76 , 3.616549236 , 0.169525613 ), ( 76 , 3.557645986 , 0.259913393 ), ( 76 , 3.496656662 , 0.246941472 ), ( 76 , 2.773858402 , -0.243594503 ), ( 76 , 2.790866521 , -0.226791286 ), ( 76 , 2.730836799 , -0.229205546 ), ( 76 , 2.846140837 , -0.193905025 ), ( 76 , 2.863775569 , -0.185443434 ), ( 76 , 2.890788337 , -0.174443776 ), ( 76 , 2.932991557 , -0.165543716 ), ( 76 , 2.881431687 , -0.165680679 ), ( 76 , 2.896526726 , -0.134193538 ), ( 76 , 2.597163213 , -0.192585207 ), ( 76 , 2.800799567 , -0.114753788 ), ( 76 , 2.676986739 , -0.088793813 ), ( 76 , 3.007386242 , -0.077706747 ), ( 76 , 2.963819683 , 0.012624294 ), ( 76 , 3.000032713 , 0.02271531 ), ( 76 , 3.016757333 , 0.053455084 ), ( 76 , 2.862701917 , -0.028238924 ), ( 76 , 2.797650706 , -0.004826502 ), ( 76 , 2.908524711 , 0.03281467 ), ( 76 , 2.630821426 , -0.098051241 ), ( 76 , 2.613770669 , -0.052739472 ), ( 76 , 2.509085613 , -0.08533367 ), ( 76 , 2.560047067 , -0.056041919 ), ( 76 , 2.580158076 , -0.032449284 ), ( 76 , 2.6407045 , -0.061388897 ), ( 76 , 2.71423304 , -0.013118 ), ( 76 , 2.48537872 , -0.054497111 ), ( 76 , 2.54580465 , 0.045859388 ), ( 76 , 2.462754826 , 0.083162894 ), ( 76 , 2.786937641 , 0.100077774 ), ( 76 , 2.856925349 , 0.102065223 ), ( 76 , 2.864548353 , 0.128943821 ), ( 76 , 2.791217801 , 0.154339194 ), ( 76 , 2.734723997 , 0.23782384 ), ( 76 , 3.133804155 , 0.01516503 ), ( 76 , 3.19523272 , 0.102494614 ), ( 76 , 3.056455156 , 0.089708926 ), ( 76 , 3.131778127 , 0.121722656 ), ( 76 , 3.189693211 , 0.152153092 ), ( 76 , 3.201967568 , 0.156590969 ), ( 76 , 3.200464718 , 0.175225675 ), ( 76 , 3.106508418 , 0.154105963 ), ( 76 , 3.154189188 , 0.223529045 ), ( 76 , 3.456767856 , 0.281551546 ), ( 76 , 3.476424446 , 0.345843231 ), ( 76 , 3.459655495 , 0.347638486 ), ( 76 , 3.374133179 , 0.370787295 ), ( 76 , 3.404522176 , 0.376196089 ), ( 76 , 3.236503345 , 0.381752147 ), ( 76 , 3.284483447 , 0.408739153 ), ( 76 , 3.287918792 , 0.426710554 ), ( 76 , 3.244132007 , 0.429231572 ), ( 76 , 3.327687042 , 0.494964314 ), ( 76 , 2.923704475 , 0.277731797 ), ( 76 , 2.86390773 , 0.405795843 ), ( 76 , 2.942657497 , 0.349603555 ), ( 76 , 2.92495678 , 0.396222915 ), ( 76 , 3.16783034 , 0.404996634 ), ( 76 , 3.191175767 , 0.394333529 ), ( 76 , 3.20399831 , 0.462593422 ), ( 76 , 3.248254145 , 0.446503241 ), ( 76 , 3.280530617 , 0.511627557 ), ( 76 , 3.298758021 , 0.558575579 ), ( 76 , 3.157096301 , 0.517995253 ), ( 76 , 3.279094887 , 0.5762101 ), ( 76 , 3.094494609 , 0.490810772 ), ( 76 , 3.03262917 , 0.532476218 ), ( 76 , 3.145292225 , 0.5753261 ), ( 76 , 3.161991663 , 0.620767254 ), ( 76 , 3.126291968 , 0.609179933 ), ( 76 , 4.708335729 , -0.677649799 ), ( 76 , 4.774193702 , -0.656610607 ), ( 76 , 4.783165876 , -0.615070108 ), ( 76 , 4.682963033 , -0.647171591 ), ( 76 , 4.686500573 , -0.614451673 ), ( 76 , 4.6839679 , -0.605486889 ), ( 76 , 4.673274092 , -0.612097183 ), ( 76 , 4.658706119 , -0.614743169 ), ( 76 , 4.78053528 , -0.56449119 ), ( 76 , 4.830476285 , -0.547552371 ), ( 76 , 4.801590785 , -0.546568561 ), ( 76 , 4.782986739 , -0.543831462 ), ( 76 , 4.728119504 , -0.521185145 ), ( 76 , 4.80150065 , -0.507306842 ), ( 76 , 4.620697278 , -0.601867224 ), ( 76 , 4.693842076 , -0.533577254 ), ( 76 , 4.696833899 , -0.527045191 ), ( 76 , 4.703695257 , -0.524738931 ), ( 76 , 4.54409094 , -0.551212675 ), ( 76 , 4.556740836 , -0.52133875 ), ( 76 , 4.574767857 , -0.507168828 ), ( 76 , 4.65141733 , -0.470755666 ), ( 76 , 4.718697089 , -0.516408306 ), ( 76 , 4.746233566 , -0.403262182 ), ( 76 , 4.6788586 , -0.395663572 ), ( 76 , 4.944199987 , -0.484439614 ), ( 76 , 4.998721984 , -0.430664185 ), ( 76 , 4.948574238 , -0.393928374 ), ( 76 , 4.874788653 , -0.448082309 ), ( 76 , 4.847811202 , -0.434448596 ), ( 76 , 4.859839436 , -0.421031866 ), ( 76 , 4.88012607 , -0.403225512 ), ( 76 , 4.907155149 , -0.366013947 ), ( 76 , 4.902395524 , -0.365103847 ), ( 76 , 4.993124995 , -0.375799749 ), ( 76 , 4.996283367 , -0.365604686 ), ( 76 , 5.049455288 , -0.367774843 ), ( 76 , 5.054902472 , -0.326320414 ), ( 76 , 5.006081154 , -0.300928198 ), ( 76 , 5.038975482 , -0.302759977 ), ( 76 , 4.808711053 , -0.389172792 ), ( 76 , 4.809119201 , -0.388141415 ), ( 76 , 4.852968497 , -0.33377702 ), ( 76 , 4.789474717 , -0.343345 ), ( 76 , 4.754890912 , -0.328898025 ), ( 76 , 4.792580095 , -0.322461095 ), ( 76 , 4.794338539 , -0.317164622 ), ( 76 , 4.812811454 , -0.308523637 ), ( 76 , 4.792683015 , -0.306033009 ), ( 76 , 4.928270871 , -0.291872283 ), ( 76 , 4.874497915 , -0.262260113 ), ( 76 , 4.542628318 , -0.478531496 ), ( 76 , 4.544108302 , -0.462536727 ), ( 76 , 4.464007643 , -0.472945079 ), ( 76 , 4.477169409 , -0.463918391 ), ( 76 , 4.608630172 , -0.311793065 ), ( 76 , 4.643223302 , -0.309696507 ), ( 76 , 4.644005771 , -0.294351497 ), ( 76 , 4.452748325 , -0.374586755 ), ( 76 , 4.40513437 , -0.381397071 ), ( 76 , 4.382058411 , -0.393113399 ), ( 76 , 4.398373241 , -0.278634613 ), ( 76 , 4.523618684 , -0.312674108 ), ( 76 , 4.50406361 , -0.301011649 ), ( 76 , 4.498687756 , -0.290336744 ), ( 76 , 4.500734656 , -0.287837643 ), ( 76 , 4.731398704 , -0.3028751 ), ( 76 , 4.725919812 , -0.303929666 ), ( 76 , 4.771693225 , -0.272246603 ), ( 76 , 4.699808762 , -0.238294641 ), ( 76 , 4.75495867 , -0.204635839 ), ( 76 , 4.7913575 , -0.213673694 ), ( 76 , 4.762423954 , -0.197386956 ), ( 76 , 4.827900715 , -0.142866595 ), ( 76 , 4.820226139 , -0.115262548 ), ( 76 , 4.587152732 , -0.19149577 ), ( 76 , 4.70837484 , -0.088116877 ), ( 76 , 4.78092527 , -0.058600793 ), ( 76 , 5.108075012 , -0.319805205 ), ( 76 , 5.171238274 , -0.222115749 ), ( 76 , 5.202966337 , -0.191222303 ), ( 76 , 5.191708787 , -0.187186848 ), ( 76 , 5.225361796 , -0.175197896 ), ( 76 , 5.253456657 , -0.159298339 ), ( 76 , 5.162319784 , -0.145385232 ), ( 76 , 5.172608785 , -0.122522379 ), ( 76 , 5.206438781 , -0.096700773 ), ( 76 , 5.011002171 , -0.226129155 ), ( 76 , 4.956249775 , -0.153493234 ), ( 76 , 5.018036147 , -0.127029935 ), ( 76 , 4.980538148 , -0.108080993 ), ( 76 , 5.138813266 , -0.08834665 ), ( 76 , 5.095789856 , -0.08408612 ), ( 76 , 5.34960064 , -0.067452506 ), ( 76 , 5.355748671 , -0.037000969 ), ( 76 , 5.32272702 , -0.011267078 ), ( 76 , 5.376903795 , 0.038747681 ), ( 76 , 5.171241435 , -0.052979165 ), ( 76 , 5.201370372 , -0.037581218 ), ( 76 , 5.173543509 , -0.012165325 ), ( 76 , 5.140941774 , -0.008550273 ), ( 76 , 5.20111908 , 0.027982983 ), ( 76 , 5.315979632 , 0.064234457 ), ( 76 , 5.382272422 , 0.094982867 ), ( 76 , 5.241502922 , 0.098577876 ), ( 76 , 5.310187759 , 0.123424634 ), ( 76 , 5.264956113 , 0.131912019 ), ( 76 , 4.91648454 , -0.116765708 ), ( 76 , 4.95619962 , -0.100320161 ), ( 76 , 4.969324768 , -0.0824965 ), ( 76 , 4.915235842 , -0.016818715 ), ( 76 , 5.065552112 , 0.015968913 ), ( 76 , 4.956115808 , -0.012918252 ), ( 76 , 4.950657089 , 0.032940809 ), ( 76 , 5.010094827 , 0.022665191 ), ( 76 , 4.818372029 , -0.071352208 ), ( 76 , 4.791329927 , -0.023214878 ), ( 76 , 4.831096583 , 0.003435826 ), ( 76 , 4.854819542 , 0.074984499 ), ( 76 , 4.852137718 , 0.118324544 ), ( 76 , 5.064286437 , 0.051272834 ), ( 76 , 5.098974536 , 0.154697978 ), ( 76 , 5.222496778 , 0.147434655 ), ( 76 , 5.239672529 , 0.13930294 ), ( 76 , 5.248645957 , 0.146562696 ), ( 76 , 5.242303045 , 0.187602932 ), ( 76 , 5.170303985 , 0.188061636 ), ( 76 , 5.226984521 , 0.199224342 ), ( 76 , 5.192767342 , 0.205599365 ), ( 76 , 5.029238631 , 0.105407253 ), ( 76 , 5.063638574 , 0.170004612 ), ( 76 , 4.95061539 , 0.169043028 ), ( 76 , 5.09973341 , 0.192453758 ), ( 76 , 5.111306443 , 0.202946335 ), ( 76 , 5.095068342 , 0.21795139 ), ( 76 , 5.131496264 , 0.253206354 ), ( 76 , 5.058328557 , 0.247446466 ), ( 76 , 5.069340211 , 0.253824575 ), ( 76 , 5.055010017 , 0.291426417 ), ( 76 , 5.113351614 , 0.261256241 ), ( 76 , 5.125836734 , 0.290451683 ), ( 76 , 5.111965837 , 0.313430312 ), ( 76 , 4.2644924 , -0.267525599 ), ( 76 , 4.246324938 , -0.263843132 ), ( 76 , 4.335047818 , -0.219217022 ), ( 76 , 4.321537173 , -0.182246136 ), ( 76 , 4.455930848 , -0.122663396 ), ( 76 , 4.229712341 , -0.216001987 ), ( 76 , 4.217553634 , -0.20779411 ), ( 76 , 4.208121273 , -0.199832119 ), ( 76 , 4.361517454 , -0.131115121 ), ( 76 , 4.510028261 , -0.162035443 ), ( 76 , 4.463504849 , -0.110868062 ), ( 76 , 4.613542336 , -0.050147751 ), ( 76 , 4.44028814 , -0.052652387 ), ( 76 , 4.447793776 , -0.029455595 ), ( 76 , 4.379457636 , -0.013681928 ), ( 76 , 4.561842402 , 0.057791437 ), ( 76 , 4.215967537 , -0.006398842 ), ( 76 , 4.289575119 , -0.014944231 ), ( 76 , 4.283908803 , 0.021216143 ), ( 76 , 4.216028807 , 0.029860497 ), ( 76 , 4.097211825 , -0.00544679 ), ( 76 , 4.065370747 , 0.015413548 ), ( 76 , 3.966074471 , 0.029483082 ), ( 76 , 4.137097166 , 0.027411918 ), ( 76 , 4.09723078 , 0.060516197 ), ( 76 , 4.114205523 , 0.071591995 ), ( 76 , 4.174347228 , 0.103161601 ), ( 76 , 4.072287608 , 0.057991251 ), ( 76 , 4.128701401 , 0.106657773 ), ( 76 , 4.436852045 , 0.113469398 ), ( 76 , 4.47679526 , 0.137088541 ), ( 76 , 4.450636404 , 0.171005141 ), ( 76 , 4.398662767 , 0.194301414 ), ( 76 , 4.402620113 , 0.224831702 ), ( 76 , 4.235502118 , 0.175196099 ), ( 76 , 4.229984153 , 0.202024491 ), ( 76 , 4.254333832 , 0.200529625 ), ( 76 , 4.314280934 , 0.23758412 ), ( 76 , 4.284380648 , 0.23483024 ), ( 76 , 4.246877413 , 0.236038071 ), ( 76 , 4.246877197 , 0.236057734 ), ( 76 , 4.320428085 , 0.264040251 ), ( 76 , 4.31133024 , 0.26793851 ), ( 76 , 4.3127193 , 0.269325996 ), ( 76 , 4.305837046 , 0.282247158 ), ( 76 , 4.330555071 , 0.294048185 ), ( 76 , 4.732752797 , 0.065947453 ), ( 76 , 4.755117682 , 0.055867422 ), ( 76 , 4.759650234 , 0.077389308 ), ( 76 , 4.774086952 , 0.073800506 ), ( 76 , 4.666995508 , 0.076384594 ), ( 76 , 4.628390569 , 0.072446465 ), ( 76 , 4.664235044 , 0.086696326 ), ( 76 , 4.831237391 , 0.122331634 ), ( 76 , 4.849555232 , 0.140101818 ), ( 76 , 4.830311241 , 0.160731936 ), ( 76 , 4.797839518 , 0.207177924 ), ( 76 , 4.608666554 , 0.169555144 ), ( 76 , 4.737320608 , 0.209498805 ), ( 76 , 4.700665907 , 0.220364838 ), ( 76 , 4.767345011 , 0.216309087 ), ( 76 , 4.676605187 , 0.261911114 ), ( 76 , 4.714673736 , 0.298506555 ), ( 76 , 4.904087266 , 0.212381333 ), ( 76 , 4.992243897 , 0.263559167 ), ( 76 , 5.028618975 , 0.314195217 ), ( 76 , 5.006459046 , 0.356466125 ), ( 76 , 4.842266408 , 0.307163965 ), ( 76 , 4.883639771 , 0.357749361 ), ( 76 , 4.773405858 , 0.353903797 ), ( 76 , 4.758737679 , 0.367006821 ), ( 76 , 4.844469376 , 0.381648136 ), ( 76 , 4.849643992 , 0.401186158 ), ( 76 , 4.854629453 , 0.444876383 ), ( 76 , 4.897406972 , 0.49087036 ), ( 76 , 4.481937668 , 0.211637744 ), ( 76 , 4.537894016 , 0.277239128 ), ( 76 , 4.569641095 , 0.31237017 ), ( 76 , 4.555315911 , 0.329009283 ), ( 76 , 4.421587722 , 0.268922484 ), ( 76 , 4.474311499 , 0.374593379 ), ( 76 , 4.370097146 , 0.330244781 ), ( 76 , 4.42337271 , 0.369540187 ), ( 76 , 4.524894519 , 0.466276927 ), ( 76 , 4.700341204 , 0.360216541 ), ( 76 , 4.7211589 , 0.391928696 ), ( 76 , 4.784498082 , 0.408384988 ), ( 76 , 4.751573638 , 0.421651476 ), ( 76 , 4.679222222 , 0.436202176 ), ( 76 , 4.719240817 , 0.444877713 ), ( 76 , 4.848040116 , 0.497348031 ), ( 76 , 4.863514165 , 0.523324203 ), ( 76 , 4.881087342 , 0.531486672 ), ( 76 , 4.762106068 , 0.52200817 ), ( 76 , 4.845583971 , 0.569708736 ), ( 76 , 4.804875236 , 0.573817842 ), ( 76 , 4.609465444 , 0.447087551 ), ( 76 , 4.640193731 , 0.471636496 ), ( 76 , 4.621134757 , 0.472104986 ), ( 76 , 4.656658772 , 0.504577957 ), ( 76 , 4.743764645 , 0.607814892 ), ( 76 , 4.677703141 , 0.591459117 ), ( 76 , 4.659622612 , 0.628342382 ), ( 76 , 4.705516945 , 0.643595615 ), ( 76 , 1.140234683 , -1.532616795 ), ( 76 , 0.284236496 , -1.458924251 ), ( 76 , 0.4294696 , -1.452951085 ), ( 76 , 0.676475294 , -1.435304372 ), ( 76 , 1.004965255 , -1.324628578 ), ( 76 , 0.250247931 , -1.336116943 ), ( 76 , 0.465271241 , -1.304423712 ), ( 76 , 0.726694805 , -1.329822357 ), ( 76 , 0.808827398 , -1.282319655 ), ( 76 , 0.916880614 , -1.301908791 ), ( 76 , 0.974813877 , -1.291692878 ), ( 76 , 1.4252705 , -1.285691655 ), ( 76 , 1.408251604 , -1.262539557 ), ( 76 , 1.340012282 , -1.243902681 ), ( 76 , 1.104439925 , -1.270956755 ), ( 76 , 1.495294519 , -1.171798152 ), ( 76 , 1.396284508 , -1.152920089 ), ( 76 , 0.997608804 , -1.228010003 ), ( 76 , 0.98078759 , -1.222207382 ), ( 76 , 0.929338201 , -1.176701274 ), ( 76 , 0.928396975 , -1.164648025 ), ( 76 , 0.971176157 , -1.120415445 ), ( 76 , 0.982338655 , -1.11228881 ), ( 76 , 0.167043099 , -1.290906769 ), ( 76 , 0.037726587 , -1.295706963 ), ( 76 , 0.284233094 , -1.251987984 ), ( 76 , 0.228957832 , -1.213063757 ), ( 76 , 0.327444649 , -1.201106349 ), ( 76 , 0.548462731 , -1.249765401 ), ( 76 , 0.697499084 , -1.153990775 ), ( 76 , 0.579048229 , -1.154609862 ), ( 76 , 0.4818341 , -1.098821957 ), ( 76 , 0.555012742 , -1.064342413 ), ( 76 , 0.556064156 , -1.041604749 ), ( 76 , 0.50886292 , -1.020517683 ), ( 76 , 0.481006861 , -1.02868898 ), ( 76 , 0.498073837 , -1.010874436 ), ( 76 , 0.805979741 , -1.050629944 ), ( 76 , 0.713794286 , -1.098152071 ), ( 76 , 1.000930715 , -0.929273043 ), ( 76 , 0.639803632 , -0.902413031 ), ( 76 , 0.785978667 , -0.827578243 ), ( 76 , 1.525453461 , -1.058999768 ), ( 76 , 1.338424291 , -1.045064134 ), ( 76 , 1.507569301 , -0.970019911 ), ( 76 , 1.486627717 , -0.928813794 ), ( 76 , 1.454249951 , -0.901315919 ), ( 76 , 1.375623314 , -0.919181552 ), ( 76 , 1.414428188 , -0.932509262 ), ( 76 , 1.362961668 , -0.899712176 ), ( 76 , 1.223065694 , -1.028744085 ), ( 76 , 1.258934327 , -0.869048819 ), ( 76 , 1.23630826 , -0.824175135 ), ( 76 , 1.522478484 , -0.808357404 ), ( 76 , 1.495934351 , -0.789507621 ), ( 76 , 1.474957893 , -0.749820989 ), ( 76 , 1.3511628 , -0.773788394 ), ( 76 , 1.348814203 , -0.733373023 ), ( 76 , 1.246090596 , -0.742710221 ), ( 76 , 1.252364261 , -0.668616514 ), ( 76 , 1.383191771 , -0.545861713 ), ( 76 , 1.063250194 , -0.923783536 ), ( 76 , 0.970313011 , -0.8865535 ), ( 76 , 0.952419594 , -0.861639778 ), ( 76 , 1.071491699 , -0.797035063 ), ( 76 , 1.110471011 , -0.713740532 ), ( 76 , 1.059979433 , -0.694743425 ), ( 76 , 0.847296264 , -0.7025917 ), ( 76 , 1.027534209 , -0.633726153 ), ( 76 , 1.179111071 , -0.680476965 ), ( 76 , 1.182007994 , -0.643610406 ), ( 76 , 1.265082069 , -0.540536535 ), ( 76 , 1.28778176 , -0.528591667 ), ( 76 , 1.302686237 , -0.504186748 ), ( 76 , 1.234499265 , -0.553421714 ), ( 76 , 1.10130501 , -0.551206568 ), ( 76 , 1.183938993 , -0.504084734 ), ( 76 , 1.248264132 , -0.439103942 ), ( 76 , 1.234738534 , -0.424131008 ), ( 76 , 1.228344815 , -0.418467089 ), ( 76 , 1.20988279 , -0.402271295 ), ( 76 , 0.08046402 , -1.10789846 ), ( 76 , 0.276162429 , -1.048910305 ), ( 76 , 0.024417974 , -1.070057921 ), ( 76 , 0.203283521 , -1.01313757 ), ( 76 , 0.236706862 , -1.001872908 ), ( 76 , 0.348953968 , -1.000926639 ), ( 76 , 0.346201402 , -0.936127246 ), ( 76 , 0.390722916 , -0.913962489 ), ( 76 , 0.133797546 , -0.959408332 ), ( 76 , 0.032605187 , -0.977581603 ), ( 76 , 0.3243957 , -0.879930598 ), ( 76 , 0.54799991 , -0.907413795 ), ( 76 , 0.619376773 , -0.864292377 ), ( 76 , 0.475015344 , -0.881097687 ), ( 76 , 0.690511667 , -0.725241359 ), ( 76 , 0.518988483 , -0.749604584 ), ( 76 , 0.488128814 , -0.646499038 ), ( 76 , 0.593550108 , -0.636567388 ), ( 76 , 0.02445551 , -0.894666041 ), ( 76 , 0.080671394 , -0.812136947 ), ( 76 , 0.14485793 , -0.819464592 ), ( 76 , 0.136606635 , -0.761075576 ), ( 76 , 0.155225438 , -0.693723897 ), ( 76 , 0.36233563 , -0.658031796 ), ( 76 , 0.495016694 , -0.585814416 ), ( 76 , 0.546600527 , -0.498438221 ), ( 76 , 0.546615768 , -0.49529396 ), ( 76 , 0.505411125 , -0.508133292 ), ( 76 , 0.350711871 , -0.505916989 ), ( 76 , 0.30566797 , -0.457168072 ), ( 76 , 0.811015508 , -0.65168724 ), ( 76 , 0.789573504 , -0.529933085 ), ( 76 , 0.891833517 , -0.543250057 ), ( 76 , 0.923203794 , -0.552809305 ), ( 76 , 0.897144442 , -0.475994576 ), ( 76 , 0.69718195 , -0.611288781 ), ( 76 , 0.688914758 , -0.587777479 ), ( 76 , 0.657875556 , -0.57608978 ), ( 76 , 0.724900004 , -0.442178247 ), ( 76 , 0.700425133 , -0.421239768 ), ( 76 , 0.745419745 , -0.401906354 ), ( 76 , 0.788920501 , -0.361173379 ), ( 76 , 1.027987989 , -0.45250931 ), ( 76 , 0.938387854 , -0.424239028 ), ( 76 , 0.919210627 , -0.339215634 ), ( 76 , 0.919865798 , -0.322299679 ), ( 76 , 0.900600272 , -0.26813842 ), ( 76 , 0.971896196 , -0.32662511 ), ( 76 , 1.021000252 , -0.217282113 ), ( 76 , 1.01196305 , -0.208880611 ), ( 76 , 0.652655225 , -0.420688943 ), ( 76 , 0.510504665 , -0.447156405 ), ( 76 , 0.740853032 , -0.35335821 ), ( 76 , 0.708223752 , -0.279624899 ), ( 76 , 0.406119663 , -0.334307409 ), ( 76 , 0.446213944 , -0.312215533 ), ( 76 , 0.435310363 , -0.306319888 ), ( 76 , 0.576254154 , -0.309422955 ), ( 76 , 0.620932985 , -0.28810603 ), ( 76 , 0.543251017 , -0.28304945 ), ( 76 , 0.520211551 , -0.263936623 ), ( 76 , 0.794302478 , -0.317789346 ), ( 76 , 0.851205736 , -0.241345705 ), ( 76 , 0.786773752 , -0.199998245 ), ( 76 , 0.908264985 , -0.222598032 ), ( 76 , 0.913242777 , -0.184214527 ), ( 76 , 0.954853214 , -0.148477519 ), ( 76 , 0.925215579 , -0.136834423 ), ( 76 , 0.855659132 , -0.138359912 ), ( 76 , 0.666822707 , -0.199201602 ), ( 76 , 0.681909124 , -0.194886293 ), ( 76 , 0.762045574 , -0.093043025 ), ( 76 , 2.895735027 , -1.557512992 ), ( 76 , 2.595601596 , -1.516868961 ), ( 76 , 3.043850428 , -1.492019297 ), ( 76 , 2.632564655 , -1.440035722 ), ( 76 , 1.772515068 , -1.4659212 ), ( 76 , 2.029995218 , -1.430602979 ), ( 76 , 2.48561041 , -1.435762961 ), ( 76 , 2.41031181 , -1.427127599 ), ( 76 , 2.446229988 , -1.403047919 ), ( 76 , 2.759764993 , -1.42446188 ), ( 76 , 3.129655325 , -1.404897389 ), ( 76 , 2.543935512 , -1.389130959 ), ( 76 , 2.678880644 , -1.378880624 ), ( 76 , 1.610146892 , -1.433916306 ), ( 76 , 2.259157761 , -1.339336151 ), ( 76 , 1.695727933 , -1.377154706 ), ( 76 , 1.661957526 , -1.379970357 ), ( 76 , 1.793889871 , -1.35566401 ), ( 76 , 1.900289484 , -1.324084343 ), ( 76 , 1.968748169 , -1.303602402 ), ( 76 , 1.969620547 , -1.29661242 ), ( 76 , 2.556890199 , -1.293563827 ), ( 76 , 2.44482524 , -1.284645269 ), ( 76 , 2.493252133 , -1.287124683 ), ( 76 , 2.186681755 , -1.256079749 ), ( 76 , 2.40766158 , -1.207826924 ), ( 76 , 2.417875598 , -1.202835671 ), ( 76 , 2.962971215 , -1.323394799 ), ( 76 , 2.805956298 , -1.260035407 ), ( 76 , 2.834823665 , -1.25059847 ), ( 76 , 2.786028393 , -1.227137091 ), ( 76 , 2.753787934 , -1.202483855 ), ( 76 , 3.087597935 , -1.152042992 ), ( 76 , 2.906814764 , -1.200471519 ), ( 76 , 2.908702604 , -1.185496835 ), ( 76 , 2.804041952 , -1.128841803 ), ( 76 , 2.788340183 , -1.134025596 ), ( 76 , 2.807755902 , -1.118204597 ), ( 76 , 2.907223617 , -1.143361726 ), ( 76 , 2.878143398 , -1.090554085 ), ( 76 , 2.708557856 , -1.187967837 ), ( 76 , 2.661343696 , -1.162334553 ), ( 76 , 2.527091467 , -1.091780001 ), ( 76 , 2.716707779 , -1.083377814 ), ( 76 , 2.658832043 , -1.074223531 ), ( 76 , 2.763973747 , -1.037059082 ), ( 76 , 2.724368216 , -1.074281769 ), ( 76 , 2.617387735 , -1.051007555 ), ( 76 , 2.548600038 , -1.044947026 ), ( 76 , 2.598593483 , -1.025219565 ), ( 76 , 1.62300071 , -1.310458726 ), ( 76 , 1.635862613 , -1.250632155 ), ( 76 , 1.99091423 , -1.175973119 ), ( 76 , 1.996692372 , -1.150466679 ), ( 76 , 1.754403491 , -1.216606856 ), ( 76 , 1.905126108 , -1.119179504 ), ( 76 , 2.034986033 , -1.072123745 ), ( 76 , 2.090223533 , -1.074832697 ), ( 76 , 2.085878963 , -1.057926239 ), ( 76 , 2.00116519 , -1.058178822 ), ( 76 , 2.060455893 , -1.040453291 ), ( 76 , 2.379404963 , -1.079076209 ), ( 76 , 2.403583007 , -1.044949182 ), ( 76 , 2.436292286 , -1.041022883 ), ( 76 , 2.320124076 , -1.071974707 ), ( 76 , 2.349982427 , -1.042624389 ), ( 76 , 2.305797244 , -1.016250951 ), ( 76 , 2.304850216 , -1.006327488 ), ( 76 , 2.366711853 , -0.96045991 ), ( 76 , 2.351517967 , -0.953543463 ), ( 76 , 2.526743323 , -1.01718729 ), ( 76 , 2.546165787 , -0.994014916 ), ( 76 , 2.563053292 , -0.990694614 ), ( 76 , 2.566575481 , -0.949400175 ), ( 76 , 2.432686428 , -0.976254347 ), ( 76 , 2.496122276 , -0.934483363 ), ( 76 , 2.43235186 , -0.882732682 ), ( 76 , 2.305904327 , -0.967769086 ), ( 76 , 2.2899454 , -0.926391632 ), ( 76 , 2.293913907 , -0.92453027 ), ( 76 , 2.276675206 , -0.926113247 ), ( 76 , 2.197834784 , -0.965530774 ), ( 76 , 2.201420419 , -0.93787437 ), ( 76 , 2.168053531 , -0.935955942 ), ( 76 , 2.215874754 , -0.874409575 ), ( 76 , 2.375827531 , -0.916547053 ), ( 76 , 2.313302105 , -0.871346937 ), ( 76 , 2.35346608 , -0.842844303 ), ( 76 , 2.335021388 , -0.809151244 ), ( 76 , 3.132747513 , -1.140085885 ), ( 76 , 3.05115185 , -1.098386018 ), ( 76 , 3.083086647 , -1.083494379 ), ( 76 , 3.13037676 , -1.066805412 ), ( 76 , 3.074810686 , -1.054201023 ), ( 76 , 3.031855724 , -1.060917485 ), ( 76 , 3.012551708 , -1.040692986 ), ( 76 , 2.959006073 , -1.099126383 ), ( 76 , 2.899353657 , -1.073175309 ), ( 76 , 2.973847299 , -1.068594104 ), ( 76 , 2.923594966 , -1.048857936 ), ( 76 , 2.887013317 , -1.074460835 ), ( 76 , 2.863180778 , -1.055113404 ), ( 76 , 2.875840488 , -1.032683682 ), ( 76 , 2.945696937 , -1.016813238 ), ( 76 , 2.982957079 , -1.016933167 ), ( 76 , 3.075434267 , -1.024581557 ), ( 76 , 3.141340651 , -0.982500092 ), ( 76 , 2.949563389 , -0.963570258 ), ( 76 , 2.965726586 , -0.916155544 ), ( 76 , 2.774094739 , -1.016421347 ), ( 76 , 2.763193616 , -0.96657595 ), ( 76 , 2.678001188 , -0.929228496 ), ( 76 , 2.882216644 , -0.906650707 ), ( 76 , 2.776660407 , -0.83619162 ), ( 76 , 2.741982872 , -0.81263552 ), ( 76 , 2.77101153 , -0.801014375 ), ( 76 , 2.793566787 , -0.786356588 ), ( 76 , 2.739192443 , -0.787124235 ), ( 76 , 3.109765736 , -0.916240773 ), ( 76 , 3.103758951 , -0.909436984 ), ( 76 , 3.0759664 , -0.900087302 ), ( 76 , 2.936866948 , -0.821272571 ), ( 76 , 2.947442653 , -0.743723724 ), ( 76 , 3.055313515 , -0.683239151 ), ( 76 , 2.880918548 , -0.783840361 ), ( 76 , 2.877923634 , -0.759245581 ), ( 76 , 2.819798217 , -0.723696375 ), ( 76 , 2.800944239 , -0.710195607 ), ( 76 , 2.914103412 , -0.670335845 ), ( 76 , 2.94772005 , -0.667735362 ), ( 76 , 3.002579902 , -0.647269245 ), ( 76 , 2.986765497 , -0.598408548 ), ( 76 , 2.861896537 , -0.612865903 ), ( 76 , 2.878837774 , -0.613362836 ), ( 76 , 2.969323939 , -0.560286373 ), ( 76 , 2.958979605 , -0.554187678 ), ( 76 , 2.629172517 , -0.927614402 ), ( 76 , 2.58452487 , -0.918908039 ), ( 76 , 2.54836878 , -0.896531718 ), ( 76 , 2.554134579 , -0.869392133 ), ( 76 , 2.502997558 , -0.868444214 ), ( 76 , 2.522475285 , -0.851254295 ), ( 76 , 2.508956724 , -0.853282443 ), ( 76 , 2.56741727 , -0.768291053 ), ( 76 , 2.640254747 , -0.801041586 ), ( 76 , 2.661009887 , -0.788787814 ), ( 76 , 2.721791929 , -0.772175732 ), ( 76 , 2.612554114 , -0.721858492 ), ( 76 , 2.555733867 , -0.727225625 ), ( 76 , 2.631471236 , -0.688066812 ), ( 76 , 2.660566494 , -0.658550535 ), ( 76 , 2.53024437 , -0.759400155 ), ( 76 , 2.526594995 , -0.748142525 ), ( 76 , 2.529811202 , -0.712480975 ), ( 76 , 2.419753111 , -0.731162439 ), ( 76 , 2.406516724 , -0.726125631 ), ( 76 , 2.46814687 , -0.703612736 ), ( 76 , 2.574465163 , -0.70107987 ), ( 76 , 2.560504207 , -0.686367271 ), ( 76 , 2.589114199 , -0.670359604 ), ( 76 , 2.59391643 , -0.650840166 ), ( 76 , 2.543226792 , -0.582979019 ), ( 76 , 2.739245854 , -0.6755116 ), ( 76 , 2.741224647 , -0.632164659 ), ( 76 , 2.689391603 , -0.644163461 ), ( 76 , 2.74697494 , -0.574945342 ), ( 76 , 2.706250727 , -0.578203637 ), ( 76 , 2.831859816 , -0.542095668 ), ( 76 , 2.808350655 , -0.53874064 ), ( 76 , 2.832155668 , -0.536703084 ), ( 76 , 2.672251625 , -0.570537361 ), ( 76 , 2.659546491 , -0.573277887 ), ( 76 , 2.65303321 , -0.559541686 ), ( 76 , 2.706123911 , -0.55122506 ), ( 76 , 2.703748178 , -0.540974958 ), ( 76 , 2.715572929 , -0.515843263 ), ( 76 , 2.67380894 , -0.514856124 ), ( 76 , 2.822087534 , -0.445650744 ), ( 76 , 2.782031769 , -0.408098374 ), ( 76 , 2.713291627 , -0.42648606 ), ( 76 , 2.6946004 , -0.416719219 ), ( 76 , 2.704448729 , -0.400925833 ), ( 76 , 2.759412973 , -0.411928646 ), ( 76 , 1.781381919 , -1.0062779 ), ( 76 , 1.821245516 , -0.979148008 ), ( 76 , 1.909615253 , -1.034315445 ), ( 76 , 2.019583601 , -0.965390553 ), ( 76 , 2.048407994 , -0.95666404 ), ( 76 , 2.039386116 , -0.930825829 ), ( 76 , 1.902399156 , -0.959256992 ), ( 76 , 1.919261092 , -0.917430793 ), ( 76 , 1.680299594 , -0.97258095 ), ( 76 , 1.789973434 , -0.92153226 ), ( 76 , 1.6453111 , -0.967168628 ), ( 76 , 1.795336552 , -0.860333566 ), ( 76 , 1.841826577 , -0.880168288 ), ( 76 , 1.953515477 , -0.827530148 ), ( 76 , 1.986531231 , -0.812932809 ), ( 76 , 1.931411996 , -0.778726949 ), ( 76 , 2.135002864 , -0.890330743 ), ( 76 , 2.100472241 , -0.897788251 ), ( 76 , 2.208409197 , -0.845289581 ), ( 76 , 2.209494954 , -0.839521647 ), ( 76 , 2.096968553 , -0.791277151 ), ( 76 , 2.136196276 , -0.826446148 ), ( 76 , 2.146970355 , -0.80273591 ), ( 76 , 2.113483701 , -0.772079869 ), ( 76 , 2.272402245 , -0.786416675 ), ( 76 , 2.235401417 , -0.766748513 ), ( 76 , 2.255932027 , -0.769945699 ), ( 76 , 2.249812084 , -0.742818847 ), ( 76 , 2.299585778 , -0.769247476 ), ( 76 , 2.328330748 , -0.759791375 ), ( 76 , 2.312956776 , -0.734897637 ), ( 76 , 2.318333398 , -0.69368273 ), ( 76 , 2.190975479 , -0.715433408 ), ( 76 , 2.260853603 , -0.69954649 ), ( 76 , 2.233797852 , -0.681834241 ), ( 76 , 2.006747356 , -0.802322325 ), ( 76 , 2.007855514 , -0.791491925 ), ( 76 , 2.030766469 , -0.783348771 ), ( 76 , 2.069589382 , -0.75183912 ), ( 76 , 2.038258536 , -0.756447164 ), ( 76 , 2.023056785 , -0.723747789 ), ( 76 , 1.982637417 , -0.734327765 ), ( 76 , 2.084625597 , -0.700284138 ), ( 76 , 2.038528489 , -0.662736942 ), ( 76 , 2.027842837 , -0.664161091 ), ( 76 , 2.066289391 , -0.644652266 ), ( 76 , 2.155891142 , -0.635746832 ), ( 76 , 2.239867585 , -0.63985399 ), ( 76 , 2.181546541 , -0.638984171 ), ( 76 , 2.219694858 , -0.606180508 ), ( 76 , 2.169021089 , -0.602088926 ), ( 76 , 2.15142436 , -0.603508764 ), ( 76 , 2.13336007 , -0.580258107 ), ( 76 , 2.134354742 , -0.552335813 ), ( 76 , 1.707206263 , -0.865976474 ), ( 76 , 1.739801838 , -0.78652185 ), ( 76 , 1.696750914 , -0.79896884 ), ( 76 , 1.793838631 , -0.825990148 ), ( 76 , 1.891687371 , -0.779070728 ), ( 76 , 1.866744959 , -0.625081954 ), ( 76 , 1.663246389 , -0.781183756 ), ( 76 , 1.719891974 , -0.734772972 ), ( 76 , 1.732433674 , -0.719945056 ), ( 76 , 1.596247881 , -0.766838921 ), ( 76 , 1.683511974 , -0.679552477 ), ( 76 , 1.651938215 , -0.678847632 ), ( 76 , 1.777410902 , -0.679302875 ), ( 76 , 1.761118489 , -0.659274409 ), ( 76 , 1.682631841 , -0.611549634 ), ( 76 , 1.723522464 , -0.611724041 ), ( 76 , 1.750493605 , -0.60233325 ), ( 76 , 1.794922701 , -0.561710647 ), ( 76 , 1.74206318 , -0.55563531 ), ( 76 , 2.022357833 , -0.658869674 ), ( 76 , 2.014035666 , -0.588881417 ), ( 76 , 1.894702824 , -0.635763213 ), ( 76 , 1.923524075 , -0.56682509 ), ( 76 , 2.0650133 , -0.594089902 ), ( 76 , 2.106642995 , -0.544816432 ), ( 76 , 2.114665235 , -0.523005434 ), ( 76 , 2.025284139 , -0.552932305 ), ( 76 , 2.0737388 , -0.461209178 ), ( 76 , 2.068998027 , -0.456441182 ), ( 76 , 1.855640476 , -0.595908039 ), ( 76 , 1.907989713 , -0.506917177 ), ( 76 , 1.863839272 , -0.515561121 ), ( 76 , 1.871907819 , -0.491469507 ), ( 76 , 1.902848907 , -0.468150784 ), ( 76 , 1.830788093 , -0.48680752 ), ( 76 , 1.854431516 , -0.473231437 ), ( 76 , 1.863343753 , -0.449960136 ), ( 76 , 2.007731747 , -0.428309913 ), ( 76 , 1.976740161 , -0.417731195 ), ( 76 , 1.989862383 , -0.389097153 ), ( 76 , 1.957756202 , -0.380562561 ), ( 76 , 2.388034587 , -0.677494559 ), ( 76 , 2.448569566 , -0.617098841 ), ( 76 , 2.38215506 , -0.629992002 ), ( 76 , 2.298851695 , -0.594583544 ), ( 76 , 2.337859573 , -0.598106311 ), ( 76 , 2.421485853 , -0.57712545 ), ( 76 , 2.531954278 , -0.539685733 ), ( 76 , 2.487456894 , -0.499053502 ), ( 76 , 2.388806264 , -0.525041033 ), ( 76 , 2.41600234 , -0.494019107 ), ( 76 , 2.498838191 , -0.478481282 ), ( 76 , 2.288408691 , -0.558868289 ), ( 76 , 2.234250903 , -0.553467736 ), ( 76 , 2.34083083 , -0.512169027 ), ( 76 , 2.249265503 , -0.515282497 ), ( 76 , 2.2212886 , -0.500723112 ), ( 76 , 2.22172012 , -0.500310099 ), ( 76 , 2.360381569 , -0.435806236 ), ( 76 , 2.424350267 , -0.410025497 ), ( 76 , 2.416357751 , -0.399143166 ), ( 76 , 2.319662685 , -0.457385021 ), ( 76 , 2.513481425 , -0.480349304 ), ( 76 , 2.617414725 , -0.460728229 ), ( 76 , 2.571022526 , -0.430164193 ), ( 76 , 2.492918695 , -0.424879433 ), ( 76 , 2.55818041 , -0.395360464 ), ( 76 , 2.696055923 , -0.366981172 ), ( 76 , 2.708593334 , -0.332477117 ), ( 76 , 2.522028442 , -0.331771591 ), ( 76 , 2.361252999 , -0.337587136 ), ( 76 , 2.43548475 , -0.318480817 ), ( 76 , 2.614246582 , -0.27945463 ), ( 76 , 2.557956737 , -0.254643326 ), ( 76 , 2.47793015 , -0.259509244 ), ( 76 , 2.215581352 , -0.434441115 ), ( 76 , 2.075234415 , -0.41989699 ), ( 76 , 2.134782985 , -0.37659014 ), ( 76 , 2.334275005 , -0.328331704 ), ( 76 , 2.28772104 , -0.353723508 ), ( 76 , 2.273895588 , -0.347596816 ), ( 76 , 2.105741528 , -0.388558665 ), ( 76 , 2.0446216 , -0.384133549 ), ( 76 , 2.114132424 , -0.331330286 ), ( 76 , 2.121829981 , -0.320674159 ), ( 76 , 2.101263178 , -0.325342888 ), ( 76 , 2.045226874 , -0.334665368 ), ( 76 , 2.00551677 , -0.31191932 ), ( 76 , 2.058432236 , -0.320399271 ), ( 76 , 2.06224678 , -0.269268722 ), ( 76 , 2.116774361 , -0.297123439 ), ( 76 , 2.165084668 , -0.273770682 ), ( 76 , 2.184968844 , -0.250681945 ), ( 76 , 2.086148976 , -0.25556687 ), ( 76 , 2.358615896 , -0.281928317 ), ( 76 , 2.369849434 , -0.244409564 ), ( 76 , 2.284386796 , -0.245076032 ), ( 76 , 2.464896621 , -0.190848107 ), ( 76 , 2.515534767 , -0.196771899 ), ( 76 , 2.531252822 , -0.158745721 ), ( 76 , 2.467887054 , -0.102571029 ), ( 76 , 2.455864853 , -0.087951823 ), ( 76 , 2.310163517 , -0.192316542 ), ( 76 , 2.408617939 , -0.079503184 ), ( 76 , 2.366675459 , -0.041294565 ), ( 76 , 4.517389543 , -1.368320062 ), ( 76 , 4.16906071 , -1.356686789 ), ( 76 , 3.998538506 , -1.350085624 ), ( 76 , 4.319339786 , -1.312598219 ), ( 76 , 3.742517133 , -1.327992046 ), ( 76 , 3.172512004 , -1.374292848 ), ( 76 , 3.897474251 , -1.277411665 ), ( 76 , 4.132593888 , -1.292315589 ), ( 76 , 4.105850296 , -1.252183662 ), ( 76 , 3.953970113 , -1.241486936 ), ( 76 , 3.941033933 , -1.235468097 ), ( 76 , 3.877722643 , -1.232185368 ), ( 76 , 3.864736818 , -1.215085744 ), ( 76 , 3.901200399 , -1.210790377 ), ( 76 , 3.914780197 , -1.16715422 ), ( 76 , 4.49541175 , -1.315566149 ), ( 76 , 4.536933751 , -1.302119248 ), ( 76 , 4.644016835 , -1.26048551 ), ( 76 , 4.561732694 , -1.15873416 ), ( 76 , 4.573109214 , -1.133612525 ), ( 76 , 4.402306539 , -1.071437878 ), ( 76 , 4.078997296 , -1.202342243 ), ( 76 , 4.213812304 , -1.19442692 ), ( 76 , 4.210310059 , -1.149459282 ), ( 76 , 4.216955188 , -1.105515478 ), ( 76 , 4.227405035 , -1.078624266 ), ( 76 , 4.363061183 , -1.067406789 ), ( 76 , 4.123345216 , -1.031910476 ), ( 76 , 4.236733468 , -1.005445386 ), ( 76 , 3.295509596 , -1.269149669 ), ( 76 , 3.489829089 , -1.236657191 ), ( 76 , 3.4998442 , -1.231279216 ), ( 76 , 3.521812929 , -1.169762412 ), ( 76 , 3.743072155 , -1.187657718 ), ( 76 , 3.880682898 , -1.173528391 ), ( 76 , 3.875577903 , -1.15958132 ), ( 76 , 3.867849475 , -1.126488587 ), ( 76 , 3.675628231 , -1.178714572 ), ( 76 , 3.665063537 , -1.14392724 ), ( 76 , 3.733406627 , -1.101547625 ), ( 76 , 3.712021012 , -1.090464983 ), ( 76 , 3.760861873 , -1.102329065 ), ( 76 , 3.734796468 , -1.090632982 ), ( 76 , 3.307482466 , -1.214806532 ), ( 76 , 3.383996372 , -1.204236253 ), ( 76 , 3.43670037 , -1.149783748 ), ( 76 , 3.438810138 , -1.139831026 ), ( 76 , 3.481920387 , -1.127034402 ), ( 76 , 3.4634179 , -1.096337416 ), ( 76 , 3.582791417 , -1.090820388 ), ( 76 , 3.720735328 , -1.017810773 ), ( 76 , 3.612138124 , -1.045042496 ), ( 76 , 3.633536201 , -1.031421655 ), ( 76 , 3.654142572 , -1.007249142 ), ( 76 , 3.602591197 , -1.016533474 ), ( 76 , 3.593651953 , -1.005136359 ), ( 76 , 3.657706894 , -0.983547719 ), ( 76 , 3.933217819 , -1.150417503 ), ( 76 , 3.820328883 , -1.064795918 ), ( 76 , 4.069748128 , -1.001956751 ), ( 76 , 4.116990714 , -0.980205507 ), ( 76 , 4.122460336 , -0.961697475 ), ( 76 , 4.156983131 , -0.946697388 ), ( 76 , 3.982940153 , -0.908080198 ), ( 76 , 4.067816304 , -0.887871649 ), ( 76 , 4.046644496 , -0.868896035 ), ( 76 , 3.811853488 , -1.026617158 ), ( 76 , 3.841867565 , -0.995391863 ), ( 76 , 3.739153742 , -1.009751692 ), ( 76 , 3.854646738 , -0.957342726 ), ( 76 , 3.850734819 , -0.952933951 ), ( 76 , 3.793425363 , -0.874557898 ), ( 76 , 3.977316564 , -0.790276793 ), ( 76 , 3.922756519 , -0.841856627 ), ( 76 , 4.699706532 , -1.136449255 ), ( 76 , 4.571577732 , -1.104158894 ), ( 76 , 4.573740589 , -1.098605533 ), ( 76 , 4.66976308 , -1.093988991 ), ( 76 , 4.494993181 , -1.059845596 ), ( 76 , 4.442644932 , -1.008599423 ), ( 76 , 4.442393607 , -1.008263429 ), ( 76 , 4.461351839 , -0.989262033 ), ( 76 , 4.655090828 , -1.01570375 ), ( 76 , 4.685878595 , -1.017048705 ), ( 76 , 4.658731664 , -1.002667661 ), ( 76 , 4.616782331 , -0.99172776 ), ( 76 , 4.59541621 , -0.98234669 ), ( 76 , 4.504012747 , -0.931590172 ), ( 76 , 4.569218435 , -0.901793295 ), ( 76 , 4.49198101 , -0.905610164 ), ( 76 , 4.418214775 , -1.009516462 ), ( 76 , 4.342319999 , -1.000997734 ), ( 76 , 4.307089492 , -0.959312864 ), ( 76 , 4.234710382 , -0.965975633 ), ( 76 , 4.228931969 , -0.963065032 ), ( 76 , 4.42862982 , -0.875968797 ), ( 76 , 4.368937004 , -0.897051763 ), ( 76 , 4.402529742 , -0.832853522 ), ( 76 , 4.42031877 , -0.824499575 ), ( 76 , 4.338820793 , -0.868647415 ), ( 76 , 4.363086709 , -0.833987594 ), ( 76 , 4.300748188 , -0.862624168 ), ( 76 , 4.296459724 , -0.788549534 ), ( 76 , 4.355665532 , -0.819111231 ), ( 76 , 4.358515206 , -0.770689141 ), ( 76 , 4.670130482 , -0.82432889 ), ( 76 , 4.646569866 , -0.840451657 ), ( 76 , 4.548312378 , -0.868506578 ), ( 76 , 4.532461195 , -0.748600606 ), ( 76 , 4.610691936 , -0.783292165 ), ( 76 , 4.655511788 , -0.759104513 ), ( 76 , 4.583603184 , -0.763656701 ), ( 76 , 4.536897483 , -0.733571851 ), ( 76 , 4.629947111 , -0.699781115 ), ( 76 , 4.62292147 , -0.686687137 ), ( 76 , 4.450191345 , -0.808389433 ), ( 76 , 4.511179728 , -0.727563638 ), ( 76 , 4.424090106 , -0.730961127 ), ( 76 , 4.424408895 , -0.728058626 ), ( 76 , 4.404839262 , -0.766984107 ), ( 76 , 4.39558735 , -0.729703195 ), ( 76 , 4.393162089 , -0.723980735 ), ( 76 , 4.446740872 , -0.673104046 ), ( 76 , 4.457513573 , -0.665343261 ), ( 76 , 4.419232426 , -0.645998827 ), ( 76 , 4.525136786 , -0.688173856 ), ( 76 , 4.573016857 , -0.643714051 ), ( 76 , 4.567032988 , -0.595025272 ), ( 76 , 4.475530409 , -0.641243732 ), ( 76 , 4.50806579 , -0.569374845 ), ( 76 , 4.141788447 , -0.911338643 ), ( 76 , 4.153441362 , -0.900930795 ), ( 76 , 4.115133948 , -0.804213847 ), ( 76 , 4.220295817 , -0.791441517 ), ( 76 , 4.246593812 , -0.769230768 ), ( 76 , 4.182427592 , -0.778724833 ), ( 76 , 4.207370756 , -0.71287708 ), ( 76 , 4.089236992 , -0.774308265 ), ( 76 , 4.100974099 , -0.761277085 ), ( 76 , 4.081752689 , -0.724404103 ), ( 76 , 4.087268465 , -0.716641658 ), ( 76 , 4.055813386 , -0.707212399 ), ( 76 , 3.986568807 , -0.72420473 ), ( 76 , 4.050728378 , -0.656756389 ), ( 76 , 4.004299176 , -0.694851889 ), ( 76 , 4.118238958 , -0.688734096 ), ( 76 , 4.136541183 , -0.657564882 ), ( 76 , 4.317326747 , -0.581547974 ), ( 76 , 4.282919306 , -0.580052964 ), ( 76 , 4.43733902 , -0.564407642 ), ( 76 , 4.370841722 , -0.572840484 ), ( 76 , 4.420518939 , -0.556416564 ), ( 76 , 4.432572215 , -0.549253634 ), ( 76 , 4.434342716 , -0.546428933 ), ( 76 , 4.471409825 , -0.547384432 ), ( 76 , 4.478942393 , -0.526200183 ), ( 76 , 4.435886377 , -0.53372377 ), ( 76 , 4.452695373 , -0.499766502 ), ( 76 , 4.415089126 , -0.469040244 ), ( 76 , 4.432000171 , -0.445651533 ), ( 76 , 4.228867836 , -0.56029384 ), ( 76 , 4.379296669 , -0.396829516 ), ( 76 , 4.312786611 , -0.431981493 ), ( 76 , 3.211940697 , -1.124940022 ), ( 76 , 3.157054566 , -1.066366553 ), ( 76 , 3.177096931 , -1.060828425 ), ( 76 , 3.19708575 , -1.047907897 ), ( 76 , 3.366727671 , -1.020748607 ), ( 76 , 3.402698451 , -1.002008066 ), ( 76 , 3.306750752 , -1.009945528 ), ( 76 , 3.391874804 , -0.982746793 ), ( 76 , 3.55824228 , -0.999930868 ), ( 76 , 3.630492906 , -0.921710312 ), ( 76 , 3.520957946 , -0.938757987 ), ( 76 , 3.509700511 , -0.942471196 ), ( 76 , 3.533135595 , -0.942529161 ), ( 76 , 3.532716836 , -0.920788981 ), ( 76 , 3.555360696 , -0.886494043 ), ( 76 , 3.572808525 , -0.863852617 ), ( 76 , 3.207052516 , -0.97919276 ), ( 76 , 3.289812126 , -0.987346603 ), ( 76 , 3.287025283 , -0.959602788 ), ( 76 , 3.158146094 , -0.954960274 ), ( 76 , 3.277990616 , -0.92140081 ), ( 76 , 3.515718695 , -0.83460167 ), ( 76 , 3.503201893 , -0.836768732 ), ( 76 , 3.532975574 , -0.806056392 ), ( 76 , 3.423030564 , -0.840076928 ), ( 76 , 3.525979372 , -0.763908562 ), ( 76 , 3.714904714 , -0.912735647 ), ( 76 , 3.756465691 , -0.861610714 ), ( 76 , 3.785230838 , -0.8220354 ), ( 76 , 3.632778697 , -0.888756108 ), ( 76 , 3.648231653 , -0.853308299 ), ( 76 , 3.628421837 , -0.842975379 ), ( 76 , 3.628253143 , -0.842879191 ), ( 76 , 3.815972841 , -0.808173644 ), ( 76 , 3.865702241 , -0.755824709 ), ( 76 , 3.874434371 , -0.726601589 ), ( 76 , 3.798012353 , -0.706441442 ), ( 76 , 3.855549031 , -0.688778423 ), ( 76 , 3.825665243 , -0.639931493 ), ( 76 , 3.605297716 , -0.809249403 ), ( 76 , 3.572311936 , -0.776958158 ), ( 76 , 3.668236249 , -0.730866252 ), ( 76 , 3.672873085 , -0.688336673 ), ( 76 , 3.550377499 , -0.721153921 ), ( 76 , 3.566123359 , -0.713805104 ), ( 76 , 3.618819272 , -0.707125166 ), ( 76 , 3.731766154 , -0.699883258 ), ( 76 , 3.151420254 , -0.916817964 ), ( 76 , 3.193040992 , -0.889366385 ), ( 76 , 3.154967264 , -0.866624457 ), ( 76 , 3.241227121 , -0.796902364 ), ( 76 , 3.286037577 , -0.821099875 ), ( 76 , 3.288420403 , -0.771156691 ), ( 76 , 3.408852933 , -0.781069029 ), ( 76 , 3.394879253 , -0.685343982 ), ( 76 , 3.206802912 , -0.718027669 ), ( 76 , 3.309273983 , -0.677137966 ), ( 76 , 3.568646137 , -0.67887586 ), ( 76 , 3.549142233 , -0.678439724 ), ( 76 , 3.564861633 , -0.64752644 ), ( 76 , 3.588164715 , -0.593047768 ), ( 76 , 3.480345092 , -0.646073915 ), ( 76 , 3.463701219 , -0.605179553 ), ( 76 , 3.469951531 , -0.596087959 ), ( 76 , 3.621497404 , -0.570114629 ), ( 76 , 3.41808078 , -0.517721869 ), ( 76 , 3.398819693 , -0.523572826 ), ( 76 , 3.542390095 , -0.455782024 ), ( 76 , 3.557929404 , -0.394775253 ), ( 76 , 3.92732952 , -0.694606723 ), ( 76 , 3.911388567 , -0.691655356 ), ( 76 , 3.966237912 , -0.635870543 ), ( 76 , 3.835061922 , -0.621373776 ), ( 76 , 3.886100185 , -0.566666361 ), ( 76 , 4.092155135 , -0.545452628 ), ( 76 , 4.108294498 , -0.511373763 ), ( 76 , 4.034562934 , -0.447974026 ), ( 76 , 3.887294593 , -0.494353901 ), ( 76 , 3.805172593 , -0.483627236 ), ( 76 , 3.843779344 , -0.46126708 ), ( 76 , 4.01055173 , -0.423505258 ), ( 76 , 4.148054386 , -0.4059376 ), ( 76 , 4.213588783 , -0.356962919 ), ( 76 , 4.244356289 , -0.340392362 ), ( 76 , 4.241052906 , -0.339465983 ), ( 76 , 4.152286852 , -0.330560823 ), ( 76 , 4.241333571 , -0.318223242 ), ( 76 , 4.097162705 , -0.3444003 ), ( 76 , 4.125074202 , -0.333487532 ), ( 76 , 3.713047065 , -0.494832844 ), ( 76 , 3.759752721 , -0.476872199 ), ( 76 , 3.815485394 , -0.390800371 ), ( 76 , 3.785425547 , -0.383830438 ), ( 76 , 3.905586488 , -0.349307357 ), ( 76 , 3.899366569 , -0.348589603 ), ( 76 , 3.865402426 , -0.30890195 ), ( 76 , 3.769942592 , -0.3455966 ), ( 76 , 3.652051273 , -0.40323706 ), ( 76 , 3.586119427 , -0.331349256 ), ( 76 , 3.772509668 , -0.245769405 ), ( 76 , 4.016973734 , -0.257281216 ), ( 76 , 3.966429907 , -0.244337985 ), ( 76 , 3.975967557 , -0.227840866 ), ( 76 , 3.976488931 , -0.200216679 ), ( 76 , 4.02098101 , -0.119150222 ), ( 76 , 4.029241911 , -0.115389458 ), ( 76 , 4.019306467 , -0.115410174 ), ( 76 , 4.036397116 , -0.109008397 ), ( 76 , 3.83147475 , -0.225340387 ), ( 76 , 3.759203829 , -0.18101371 ), ( 76 , 3.830480936 , -0.096844423 ), ( 76 , 3.946478988 , -0.140447158 ), ( 76 , 3.951915428 , -0.034652949 ), ( 76 , 5.485806976 , -1.514613166 ), ( 76 , 5.718750238 , -1.465397227 ), ( 76 , 5.803506407 , -1.454876639 ), ( 76 , 5.623642329 , -1.394969069 ), ( 76 , 6.160842226 , -1.410709255 ), ( 76 , 5.748209661 , -1.39139219 ), ( 76 , 5.852107387 , -1.308431605 ), ( 76 , 5.736610323 , -1.281796387 ), ( 76 , 5.330769014 , -1.389242197 ), ( 76 , 5.340328819 , -1.379705332 ), ( 76 , 4.801267084 , -1.400442072 ), ( 76 , 4.717223263 , -1.367993473 ), ( 76 , 5.03683998 , -1.344737473 ), ( 76 , 5.233241962 , -1.293821341 ), ( 76 , 5.674202921 , -1.247975212 ), ( 76 , 5.578180976 , -1.274554213 ), ( 76 , 5.393978159 , -1.243741479 ), ( 76 , 6.210269563 , -1.236002916 ), ( 76 , 6.241998259 , -1.205902049 ), ( 76 , 5.998125433 , -1.180058944 ), ( 76 , 5.923334303 , -1.144339129 ), ( 76 , 5.768833495 , -1.138653879 ), ( 76 , 5.537463022 , -1.148412866 ), ( 76 , 5.208995625 , -1.246275234 ), ( 76 , 5.375655924 , -1.148698088 ), ( 76 , 5.434544074 , -1.124474512 ), ( 76 , 5.19005024 , -1.151556492 ), ( 76 , 5.315954924 , -1.102365862 ), ( 76 , 5.013252388 , -1.14378347 ), ( 76 , 4.84502324 , -1.16825222 ), ( 76 , 4.887151657 , -1.12968207 ), ( 76 , 4.937217985 , -1.093403211 ), ( 76 , 4.98747972 , -1.097809729 ), ( 76 , 5.208642211 , -1.109558097 ), ( 76 , 5.24212016 , -1.060045221 ), ( 76 , 5.538267315 , -1.00994443 ), ( 76 , 5.481136836 , -0.963821419 ), ( 76 , 5.688781905 , -1.001273474 ), ( 76 , 5.596392911 , -0.973611173 ), ( 76 , 5.601075301 , -0.969425426 ), ( 76 , 5.594641228 , -0.892295283 ), ( 76 , 5.627427307 , -0.878638308 ), ( 76 , 5.341369057 , -0.951959264 ), ( 76 , 5.475201608 , -0.813351062 ), ( 76 , 5.479304385 , -0.777994404 ), ( 76 , 5.51690238 , -0.751984176 ), ( 76 , 6.16306608 , -1.1109934 ), ( 76 , 6.018276105 , -1.049929579 ), ( 76 , 5.979815779 , -1.038915831 ), ( 76 , 6.036774965 , -0.986086631 ), ( 76 , 6.220198171 , -1.017165763 ), ( 76 , 6.268930589 , -0.997428011 ), ( 76 , 6.225826177 , -0.974057116 ), ( 76 , 6.214767516 , -0.950089565 ), ( 76 , 5.858232496 , -0.980046222 ), ( 76 , 6.001770469 , -0.8085788 ), ( 76 , 5.93465617 , -0.86566074 ), ( 76 , 5.865924684 , -0.852765679 ), ( 76 , 6.229933589 , -0.911135709 ), ( 76 , 6.145383088 , -0.674491215 ), ( 76 , 6.026340392 , -0.78898478 ), ( 76 , 6.046308414 , -0.751860355 ), ( 76 , 5.993073716 , -0.688005499 ), ( 76 , 6.141890125 , -0.586932881 ), ( 76 , 6.047998412 , -0.625592998 ), ( 76 , 5.711465875 , -0.896514756 ), ( 76 , 5.745607879 , -0.811234206 ), ( 76 , 5.730416835 , -0.817402292 ), ( 76 , 5.812108146 , -0.668508614 ), ( 76 , 5.629558069 , -0.769247828 ), ( 76 , 5.58873523 , -0.799551069 ), ( 76 , 5.601099022 , -0.694275761 ), ( 76 , 5.631770435 , -0.674369671 ), ( 76 , 5.626584906 , -0.664729163 ), ( 76 , 5.716337808 , -0.673975418 ), ( 76 , 5.693953392 , -0.670925275 ), ( 76 , 5.747955417 , -0.659113976 ), ( 76 , 5.768658596 , -0.620398633 ), ( 76 , 5.739301205 , -0.576071129 ), ( 76 , 5.869123658 , -0.660248623 ), ( 76 , 5.925560509 , -0.584170753 ), ( 76 , 5.938180717 , -0.558329335 ), ( 76 , 5.934611054 , -0.522653803 ), ( 76 , 5.906017924 , -0.517750431 ), ( 76 , 5.933149918 , -0.494773064 ), ( 76 , 5.786753897 , -0.507383227 ), ( 76 , 5.814631063 , -0.472725441 ), ( 76 , 5.873804235 , -0.48891301 ), ( 76 , 4.808814951 , -1.106216412 ), ( 76 , 4.785564692 , -1.039574434 ), ( 76 , 5.155866806 , -0.964577197 ), ( 76 , 5.174514078 , -0.916852444 ), ( 76 , 4.850068954 , -0.994546633 ), ( 76 , 4.76496012 , -0.984859009 ), ( 76 , 4.890613735 , -0.978954072 ), ( 76 , 4.938254447 , -0.914473063 ), ( 76 , 4.714669714 , -0.99383829 ), ( 76 , 4.745553685 , -0.945096731 ), ( 76 , 4.936658804 , -0.899200897 ), ( 76 , 5.040650076 , -0.835599823 ), ( 76 , 4.985401092 , -0.837155925 ), ( 76 , 5.006364006 , -0.829597505 ), ( 76 , 4.991042606 , -0.812427824 ), ( 76 , 5.231532143 , -0.804383702 ), ( 76 , 5.365065468 , -0.722561295 ), ( 76 , 5.317383183 , -0.743880607 ), ( 76 , 5.196215486 , -0.809149315 ), ( 76 , 5.145761964 , -0.792878715 ), ( 76 , 5.247681423 , -0.722875419 ), ( 76 , 5.18516358 , -0.734406331 ), ( 76 , 5.140869089 , -0.729628584 ), ( 76 , 5.112944228 , -0.740535715 ), ( 76 , 5.310816004 , -0.680698557 ), ( 76 , 5.276158007 , -0.668522144 ), ( 76 , 5.330757308 , -0.638969721 ), ( 76 , 5.259010412 , -0.634938185 ), ( 76 , 5.319702564 , -0.571286536 ), ( 76 , 5.283571066 , -0.564154684 ), ( 76 , 4.86445428 , -0.861361352 ), ( 76 , 4.909785479 , -0.855027605 ), ( 76 , 4.923898563 , -0.810803711 ), ( 76 , 4.775413464 , -0.836961433 ), ( 76 , 4.849143643 , -0.825771927 ), ( 76 , 4.837486871 , -0.806294557 ), ( 76 , 4.981163278 , -0.787552723 ), ( 76 , 5.031806731 , -0.711073921 ), ( 76 , 4.965193124 , -0.735483043 ), ( 76 , 4.8209038 , -0.737035793 ), ( 76 , 4.725668279 , -0.758571245 ), ( 76 , 4.754941772 , -0.740075437 ), ( 76 , 4.732671186 , -0.732521774 ), ( 76 , 4.74052181 , -0.728812765 ), ( 76 , 4.770310377 , -0.685120978 ), ( 76 , 4.862727232 , -0.607646897 ), ( 76 , 5.046020418 , -0.590085791 ), ( 76 , 5.054291895 , -0.578617977 ), ( 76 , 5.25923322 , -0.507548442 ), ( 76 , 4.966716205 , -0.561576195 ), ( 76 , 4.996836986 , -0.456209718 ), ( 76 , 5.16912688 , -0.406040916 ), ( 76 , 5.168550866 , -0.398909179 ), ( 76 , 5.069029883 , -0.456694312 ), ( 76 , 5.044211061 , -0.431397751 ), ( 76 , 5.022172798 , -0.422106489 ), ( 76 , 5.029864051 , -0.427385243 ), ( 76 , 5.530615206 , -0.675295402 ), ( 76 , 5.468294957 , -0.637296572 ), ( 76 , 5.411914133 , -0.624812557 ), ( 76 , 5.495557909 , -0.586737939 ), ( 76 , 5.49526366 , -0.532517955 ), ( 76 , 5.577574094 , -0.59338356 ), ( 76 , 5.568248654 , -0.555276525 ), ( 76 , 5.586417107 , -0.531311209 ), ( 76 , 5.405155021 , -0.58779964 ), ( 76 , 5.456999572 , -0.553723453 ), ( 76 , 5.351324836 , -0.564245694 ), ( 76 , 5.358589914 , -0.512676082 ), ( 76 , 5.417312531 , -0.488604436 ), ( 76 , 5.555883216 , -0.433647899 ), ( 76 , 5.556344028 , -0.397271245 ), ( 76 , 5.543651866 , -0.392302957 ), ( 76 , 5.437912942 , -0.414062818 ), ( 76 , 5.464448802 , -0.370547813 ), ( 76 , 5.696247946 , -0.490909002 ), ( 76 , 5.705832409 , -0.484348295 ), ( 76 , 5.681356577 , -0.45134534 ), ( 76 , 5.664363567 , -0.444101728 ), ( 76 , 5.630578014 , -0.439708145 ), ( 76 , 5.719649348 , -0.358506884 ), ( 76 , 5.604171969 , -0.406495492 ), ( 76 , 5.674848225 , -0.329791575 ), ( 76 , 5.593146318 , -0.284053391 ), ( 76 , 5.713039922 , -0.320906228 ), ( 76 , 5.705513877 , -0.301850144 ), ( 76 , 5.691153348 , -0.278763454 ), ( 76 , 5.779065943 , -0.252145115 ), ( 76 , 5.762365784 , -0.239910016 ), ( 76 , 5.660684368 , -0.200028078 ), ( 76 , 5.348609027 , -0.463498849 ), ( 76 , 5.376992689 , -0.434071567 ), ( 76 , 5.280116078 , -0.441289914 ), ( 76 , 5.255358394 , -0.38731996 ), ( 76 , 5.438893359 , -0.386839855 ), ( 76 , 5.382216631 , -0.38802713 ), ( 76 , 5.472022426 , -0.331561927 ), ( 76 , 5.263173261 , -0.340173137 ), ( 76 , 5.349760253 , -0.261453818 ), ( 76 , 5.515351941 , -0.316120652 ), ( 76 , 5.541998934 , -0.274090753 ), ( 76 , 5.434017319 , -0.262402877 ), ( 76 , 5.49166526 , -0.233342503 ), ( 76 , 5.489198879 , -0.208654252 ), ( 76 , 5.498418417 , -0.1854975 ), ( 76 , 5.635534067 , -0.170091819 ), ( 76 , 5.616750229 , -0.153411496 ), ( 76 , 5.41582541 , -0.235626917 ), ( 76 , 5.36470661 , -0.219761868 ), ( 76 , 5.416669168 , -0.104684582 ), ( 76 , 5.574740794 , -0.100928002 ), ( 77 , 0.77340935 , 0.032929074 ), ( 77 , 0.773008248 , 0.064203339 ), ( 77 , 0.768967108 , 0.07065753 ), ( 77 , 0.7601279 , 0.088108057 ), ( 77 , 0.825432694 , 0.130208802 ), ( 77 , 0.89770811 , 0.103590513 ), ( 77 , 0.905945016 , 0.135270559 ), ( 77 , 0.693735845 , 0.155680493 ), ( 77 , 0.623714123 , 0.149145829 ), ( 77 , 0.672239258 , 0.212591821 ), ( 77 , 0.837491837 , 0.282148986 ), ( 77 , 0.731444189 , 0.265833702 ), ( 77 , 0.830322271 , 0.293449144 ), ( 77 , 1.005248984 , 0.304989736 ), ( 77 , 1.085706144 , 0.301791582 ), ( 77 , 1.125885439 , 0.318637557 ), ( 77 , 1.160051407 , 0.329237104 ), ( 77 , 1.0859965 , 0.40314399 ), ( 77 , 0.860477615 , 0.306703703 ), ( 77 , 0.865380598 , 0.317142072 ), ( 77 , 0.827990814 , 0.349077205 ), ( 77 , 0.863196255 , 0.398491455 ), ( 77 , 1.01272519 , 0.395653483 ), ( 77 , 0.992226271 , 0.429143091 ), ( 77 , 1.034967846 , 0.441269699 ), ( 77 , 1.012105902 , 0.453760281 ), ( 77 , 0.933122207 , 0.415929529 ), ( 77 , 0.965610551 , 0.436477031 ), ( 77 , 1.020312757 , 0.469420246 ), ( 77 , 0.723425798 , 0.361153839 ), ( 77 , 0.664294907 , 0.36857989 ), ( 77 , 0.662341006 , 0.373068455 ), ( 77 , 0.475204688 , 0.285839208 ), ( 77 , 0.550937316 , 0.359400899 ), ( 77 , 0.528711062 , 0.42663279 ), ( 77 , 0.779289832 , 0.42121351 ), ( 77 , 0.834813968 , 0.386948618 ), ( 77 , 0.736354104 , 0.437671042 ), ( 77 , 0.943303487 , 0.523305339 ), ( 77 , 0.817172198 , 0.508298486 ), ( 77 , 0.701214364 , 0.464648715 ), ( 77 , 0.746457924 , 0.528599338 ), ( 77 , 0.728944321 , 0.547943434 ), ( 77 , 0.685810569 , 0.530715502 ), ( 77 , 0.675099352 , 0.59488235 ), ( 77 , 0.670699351 , 0.599366816 ), ( 77 , 0.688722671 , 0.613663854 ), ( 77 , 0.855316617 , 0.611647899 ), ( 77 , 0.852083179 , 0.636622665 ), ( 77 , 0.835119761 , 0.664436248 ), ( 77 , 1.216747811 , 0.404036683 ), ( 77 , 1.303635471 , 0.520866164 ), ( 77 , 1.316698405 , 0.554630475 ), ( 77 , 1.275106219 , 0.6011511 ), ( 77 , 1.073701655 , 0.457478668 ), ( 77 , 1.057005525 , 0.490897101 ), ( 77 , 1.098190477 , 0.550661495 ), ( 77 , 1.140775158 , 0.603380088 ), ( 77 , 1.117785168 , 0.60857325 ), ( 77 , 1.215818689 , 0.671053436 ), ( 77 , 1.138473992 , 0.673298268 ), ( 77 , 1.378359752 , 0.532269427 ), ( 77 , 1.362056872 , 0.574128915 ), ( 77 , 1.342242623 , 0.571835166 ), ( 77 , 1.441602175 , 0.596915104 ), ( 77 , 1.44605571 , 0.641915293 ), ( 77 , 1.38906873 , 0.639349438 ), ( 77 , 1.370266571 , 0.644309785 ), ( 77 , 1.463720833 , 0.661512286 ), ( 77 , 1.415938075 , 0.730020144 ), ( 77 , 1.400928183 , 0.741840614 ), ( 77 , 1.539358632 , 0.774545043 ), ( 77 , 1.239406781 , 0.740348057 ), ( 77 , 1.262891642 , 0.759957722 ), ( 77 , 1.291787337 , 0.75910112 ), ( 77 , 1.321117217 , 0.814372926 ), ( 77 , 1.529620955 , 0.828350032 ), ( 77 , 1.464488586 , 0.839117075 ), ( 77 , 1.507885788 , 0.854947664 ), ( 77 , 1.360797151 , 0.79686231 ), ( 77 , 1.448109365 , 0.890607822 ), ( 77 , 1.55171344 , 0.933051251 ), ( 77 , 0.960453017 , 0.59545078 ), ( 77 , 0.930276928 , 0.582220657 ), ( 77 , 0.942447569 , 0.609536271 ), ( 77 , 0.982064001 , 0.699519742 ), ( 77 , 1.16099246 , 0.736866983 ), ( 77 , 1.012630013 , 0.712049666 ), ( 77 , 1.138331133 , 0.793496776 ), ( 77 , 1.122603135 , 0.815010783 ), ( 77 , 0.86614586 , 0.662097688 ), ( 77 , 0.946908075 , 0.755005113 ), ( 77 , 0.800341817 , 0.72536082 ), ( 77 , 0.839999198 , 0.765508577 ), ( 77 , 0.870718949 , 0.768021988 ), ( 77 , 0.893910136 , 0.836273625 ), ( 77 , 0.995144723 , 0.791591146 ), ( 77 , 1.018720042 , 0.818629897 ), ( 77 , 1.046085969 , 0.840395878 ), ( 77 , 1.044372595 , 0.851058534 ), ( 77 , 1.084136651 , 0.889113316 ), ( 77 , 0.911301882 , 0.834795922 ), ( 77 , 0.915573577 , 0.837350711 ), ( 77 , 1.168150724 , 0.753820667 ), ( 77 , 1.168987838 , 0.756268245 ), ( 77 , 1.203171758 , 0.789141957 ), ( 77 , 1.336311754 , 0.872211122 ), ( 77 , 1.205378038 , 0.826775366 ), ( 77 , 1.23122368 , 0.871261885 ), ( 77 , 1.366665354 , 0.870234633 ), ( 77 , 1.472406519 , 0.985897254 ), ( 77 , 1.475205624 , 1.013534853 ), ( 77 , 1.139050278 , 0.969202907 ), ( 77 , 1.316739361 , 0.997164851 ), ( 77 , 1.461694115 , 1.038885789 ), ( 77 , 1.536460882 , 1.137217155 ), ( 77 , 0.441224147 , 0.401866222 ), ( 77 , 0.502323069 , 0.502613889 ), ( 77 , 0.517919428 , 0.512776545 ), ( 77 , 0.431370808 , 0.552388949 ), ( 77 , 0.300249948 , 0.530717284 ), ( 77 , 0.287555594 , 0.575846247 ), ( 77 , 0.361897984 , 0.555732708 ), ( 77 , 0.344274533 , 0.584960484 ), ( 77 , 0.343221787 , 0.589169339 ), ( 77 , 0.379156646 , 0.654352563 ), ( 77 , 0.611069654 , 0.564064078 ), ( 77 , 0.615421078 , 0.646990997 ), ( 77 , 0.562353886 , 0.686764275 ), ( 77 , 0.601579769 , 0.707739821 ), ( 77 , 0.680305065 , 0.64678981 ), ( 77 , 0.666454705 , 0.690274419 ), ( 77 , 0.689001746 , 0.679254625 ), ( 77 , 0.72427547 , 0.708807506 ), ( 77 , 0.723665581 , 0.714031877 ), ( 77 , 0.4821465 , 0.66850381 ), ( 77 , 0.548766427 , 0.693937882 ), ( 77 , 0.565793308 , 0.733183339 ), ( 77 , 0.522375677 , 0.721689424 ), ( 77 , 0.50513617 , 0.747772496 ), ( 77 , 0.491122899 , 0.782123196 ), ( 77 , 0.598323061 , 0.800029909 ), ( 77 , 0.563690169 , 0.800073173 ), ( 77 , 0.63049871 , 0.826809522 ), ( 77 , 0.643928731 , 0.841803244 ), ( 77 , 0.596029921 , 0.869520399 ), ( 77 , 0.487029225 , 0.821817602 ), ( 77 , 0.596993365 , 0.899349962 ), ( 77 , 0.533922002 , 0.935998096 ), ( 77 , 0.178388184 , 0.543091875 ), ( 77 , 0.263241276 , 0.622924367 ), ( 77 , 0.154932021 , 0.622367665 ), ( 77 , 0.236816821 , 0.681866072 ), ( 77 , 0.200962344 , 0.712242749 ), ( 77 , 0.293013521 , 0.674576649 ), ( 77 , 0.344203605 , 0.697486932 ), ( 77 , 0.321024202 , 0.718216272 ), ( 77 , 0.320894816 , 0.770942531 ), ( 77 , 0.297140747 , 0.747837886 ), ( 77 , 0.293432844 , 0.778706089 ), ( 77 , 0.229656581 , 0.787723514 ), ( 77 , 0.232784933 , 0.813240996 ), ( 77 , 0.097261718 , 0.65905261 ), ( 77 , 0.10485877 , 0.673292516 ), ( 77 , 0.134697891 , 0.724686446 ), ( 77 , 0.05025882 , 0.705093998 ), ( 77 , 0.054803736 , 0.778254508 ), ( 77 , 0.021639675 , 0.797150121 ), ( 77 , 0.20273088 , 0.772928147 ), ( 77 , 0.138710885 , 0.80156119 ), ( 77 , 0.202677503 , 0.792841899 ), ( 77 , 0.204471138 , 0.809195034 ), ( 77 , 0.16560721 , 0.827410676 ), ( 77 , 0.109770193 , 0.838587518 ), ( 77 , 0.025963103 , 0.866073096 ), ( 77 , 0.023436937 , 0.868640945 ), ( 77 , 0.067900885 , 0.873542008 ), ( 77 , 0.042490803 , 0.908063763 ), ( 77 , 0.046122832 , 0.91309662 ), ( 77 , 0.344002898 , 0.797051185 ), ( 77 , 0.430719315 , 0.808898407 ), ( 77 , 0.423690702 , 0.856530047 ), ( 77 , 0.295941951 , 0.817548988 ), ( 77 , 0.239536407 , 0.86228419 ), ( 77 , 0.331892925 , 0.870853268 ), ( 77 , 0.267208886 , 0.908535402 ), ( 77 , 0.447734991 , 0.845024884 ), ( 77 , 0.367383384 , 0.893144633 ), ( 77 , 0.417203892 , 0.910428153 ), ( 77 , 0.425066566 , 0.961167493 ), ( 77 , 0.297553547 , 0.962646151 ), ( 77 , 0.293115677 , 0.983919226 ), ( 77 , 0.319608092 , 1.005122904 ), ( 77 , 0.211245581 , 0.867713078 ), ( 77 , 0.167623984 , 0.894798821 ), ( 77 , 0.245649273 , 0.916145182 ), ( 77 , 0.074188829 , 0.929269472 ), ( 77 , 0.072841798 , 0.953998965 ), ( 77 , 0.019003625 , 0.947269783 ), ( 77 , 0.135557182 , 1.001221484 ), ( 77 , 0.112333765 , 1.011655614 ), ( 77 , 0.240693198 , 0.999656874 ), ( 77 , 0.168385134 , 1.003859152 ), ( 77 , 0.220195984 , 1.04146841 ), ( 77 , 0.077840654 , 1.030749266 ), ( 77 , 0.119427733 , 1.042960284 ), ( 77 , 0.10165632 , 1.051309088 ), ( 77 , 0.079828959 , 1.077340206 ), ( 77 , 0.812442257 , 0.798828077 ), ( 77 , 0.871742148 , 0.848714276 ), ( 77 , 0.788088474 , 0.839371028 ), ( 77 , 0.739958629 , 0.822790281 ), ( 77 , 0.761568657 , 0.840289325 ), ( 77 , 0.703449972 , 0.830275497 ), ( 77 , 0.777648541 , 0.938871919 ), ( 77 , 0.901717838 , 0.887435783 ), ( 77 , 0.88617273 , 0.963940948 ), ( 77 , 0.840083232 , 0.97998531 ), ( 77 , 0.663867792 , 0.8764526 ), ( 77 , 0.705603556 , 0.968335145 ), ( 77 , 0.684518458 , 0.975907199 ), ( 77 , 0.620093122 , 0.987928407 ), ( 77 , 0.61635814 , 1.034069404 ), ( 77 , 0.620932896 , 1.032578869 ), ( 77 , 0.90133979 , 1.052108252 ), ( 77 , 0.686941663 , 1.048741079 ), ( 77 , 0.775063787 , 1.066896645 ), ( 77 , 0.81968309 , 1.093263931 ), ( 77 , 0.838112904 , 1.123248678 ), ( 77 , 0.981664566 , 1.072742485 ), ( 77 , 1.126537829 , 1.08057825 ), ( 77 , 1.28481548 , 1.159522849 ), ( 77 , 1.265764619 , 1.161256848 ), ( 77 , 1.282198762 , 1.177868731 ), ( 77 , 0.925137364 , 1.179588688 ), ( 77 , 1.230738977 , 1.205903563 ), ( 77 , 1.259588762 , 1.230924542 ), ( 77 , 1.320413273 , 1.263893408 ), ( 77 , 1.213655345 , 1.247383341 ), ( 77 , 0.503056043 , 0.996445151 ), ( 77 , 0.530418404 , 1.046712362 ), ( 77 , 0.545920552 , 1.053206238 ), ( 77 , 0.517652139 , 1.074197293 ), ( 77 , 0.532258196 , 1.080445483 ), ( 77 , 0.399475421 , 1.074293876 ), ( 77 , 0.466612762 , 1.058887095 ), ( 77 , 0.648572395 , 1.102830704 ), ( 77 , 0.683099331 , 1.108223943 ), ( 77 , 0.629613076 , 1.100291958 ), ( 77 , 0.606295664 , 1.116105178 ), ( 77 , 0.561810107 , 1.135116753 ), ( 77 , 0.603204237 , 1.144832783 ), ( 77 , 0.687072036 , 1.11898844 ), ( 77 , 0.688890386 , 1.140017838 ), ( 77 , 0.445587363 , 1.205777319 ), ( 77 , 0.58597355 , 1.164623945 ), ( 77 , 0.290747874 , 1.123863397 ), ( 77 , 0.241054128 , 1.126535066 ), ( 77 , 0.317156939 , 1.13462117 ), ( 77 , 0.19981 , 1.160511623 ), ( 77 , 0.022461922 , 1.184030659 ), ( 77 , 0.16518455 , 1.18069617 ), ( 77 , 0.088929781 , 1.201608333 ), ( 77 , 0.004692238 , 1.214322008 ), ( 77 , 0.232664305 , 1.2970027 ), ( 77 , 0.070853167 , 1.343046856 ), ( 77 , 0.772005876 , 1.18992774 ), ( 77 , 0.885605055 , 1.244074661 ), ( 77 , 0.953855353 , 1.304430156 ), ( 77 , 0.753597833 , 1.304419459 ), ( 77 , 1.087315279 , 1.378037643 ), ( 77 , 0.554829954 , 1.306722044 ), ( 77 , 0.228996878 , 1.39347926 ), ( 77 , 1.024435538 , 1.458133127 ), ( 77 , 1.316439746 , 1.481306202 ), ( 77 , 2.388504601 , 0.11935486 ), ( 77 , 2.476651462 , 0.216416433 ), ( 77 , 2.257051448 , 0.104570752 ), ( 77 , 2.321021346 , 0.194355932 ), ( 77 , 2.230832667 , 0.20312426 ), ( 77 , 2.573487427 , 0.193835168 ), ( 77 , 2.610113207 , 0.265660584 ), ( 77 , 2.670575374 , 0.351133663 ), ( 77 , 2.605034727 , 0.344918071 ), ( 77 , 2.692204687 , 0.382452159 ), ( 77 , 2.402007426 , 0.37823709 ), ( 77 , 2.496782009 , 0.381464462 ), ( 77 , 2.626211485 , 0.418551116 ), ( 77 , 2.509549437 , 0.457143452 ), ( 77 , 2.567101017 , 0.497808873 ), ( 77 , 2.237177443 , 0.266591146 ), ( 77 , 2.138495276 , 0.253200171 ), ( 77 , 2.086475739 , 0.232639359 ), ( 77 , 2.121228592 , 0.26785 ), ( 77 , 2.109497892 , 0.294038235 ), ( 77 , 2.244442135 , 0.321098303 ), ( 77 , 2.294389562 , 0.349446925 ), ( 77 , 2.267808197 , 0.336414485 ), ( 77 , 2.270432265 , 0.343596773 ), ( 77 , 2.296659278 , 0.356293796 ), ( 77 , 2.091311033 , 0.293545024 ), ( 77 , 2.065739714 , 0.294017053 ), ( 77 , 2.136744251 , 0.446087757 ), ( 77 , 2.170241862 , 0.472098088 ), ( 77 , 2.350766323 , 0.418299115 ), ( 77 , 2.504526579 , 0.477407431 ), ( 77 , 2.486774006 , 0.585585283 ), ( 77 , 2.260802793 , 0.454618282 ), ( 77 , 2.262971554 , 0.536027452 ), ( 77 , 2.357186301 , 0.560116723 ), ( 77 , 2.39319964 , 0.633761692 ), ( 77 , 2.315753533 , 0.612117797 ), ( 77 , 2.315345122 , 0.643622365 ), ( 77 , 2.298678698 , 0.663958822 ), ( 77 , 2.330685477 , 0.685126656 ), ( 77 , 2.768091931 , 0.37688769 ), ( 77 , 2.691948615 , 0.451318812 ), ( 77 , 2.838314708 , 0.447491349 ), ( 77 , 2.8554797 , 0.532882668 ), ( 77 , 2.847876076 , 0.575756237 ), ( 77 , 2.718439258 , 0.538209351 ), ( 77 , 2.679876415 , 0.548461029 ), ( 77 , 2.655094488 , 0.584920142 ), ( 77 , 2.978704636 , 0.611323677 ), ( 77 , 2.894264989 , 0.627213939 ), ( 77 , 2.933223819 , 0.64389884 ), ( 77 , 2.945469535 , 0.655870412 ), ( 77 , 2.904952752 , 0.773207821 ), ( 77 , 3.012122598 , 0.824572922 ), ( 77 , 3.081119836 , 0.882500937 ), ( 77 , 2.544114127 , 0.648017586 ), ( 77 , 2.642973437 , 0.716372808 ), ( 77 , 2.633096949 , 0.720903064 ), ( 77 , 2.61823323 , 0.73856013 ), ( 77 , 2.649116922 , 0.786443785 ), ( 77 , 2.473209154 , 0.716001283 ), ( 77 , 2.477023244 , 0.719021583 ), ( 77 , 2.504393871 , 0.790393519 ), ( 77 , 2.636078849 , 0.848075655 ), ( 77 , 2.630331465 , 0.870538053 ), ( 77 , 2.474105095 , 0.833800205 ), ( 77 , 2.622054886 , 0.92718993 ), ( 77 , 2.741303061 , 0.80594546 ), ( 77 , 2.712628057 , 0.838491786 ), ( 77 , 2.939981342 , 0.870155108 ), ( 77 , 2.943315162 , 0.924093344 ), ( 77 , 2.914691786 , 0.921911348 ), ( 77 , 3.068170033 , 0.977725532 ), ( 77 , 2.674432518 , 0.898421071 ), ( 77 , 2.805198978 , 0.975477322 ), ( 77 , 1.93796644 , 0.374506792 ), ( 77 , 2.016222141 , 0.400181074 ), ( 77 , 2.026914761 , 0.407448374 ), ( 77 , 2.031281917 , 0.453585472 ), ( 77 , 1.957724352 , 0.430191129 ), ( 77 , 1.983895258 , 0.497450179 ), ( 77 , 1.955649936 , 0.5135614 ), ( 77 , 2.067152898 , 0.463610148 ), ( 77 , 2.041922148 , 0.500341081 ), ( 77 , 2.137874106 , 0.508322226 ), ( 77 , 1.978910929 , 0.534573699 ), ( 77 , 1.996299793 , 0.551760603 ), ( 77 , 2.078731003 , 0.55319055 ), ( 77 , 1.833671432 , 0.469116235 ), ( 77 , 1.915682601 , 0.509348738 ), ( 77 , 1.840073589 , 0.58791972 ), ( 77 , 1.8661763 , 0.579373236 ), ( 77 , 1.85868592 , 0.588916981 ), ( 77 , 1.848827044 , 0.591548613 ), ( 77 , 1.999230601 , 0.566157407 ), ( 77 , 1.977287299 , 0.592472727 ), ( 77 , 1.957971103 , 0.601036303 ), ( 77 , 2.038031643 , 0.610184383 ), ( 77 , 2.017794212 , 0.647617999 ), ( 77 , 2.0145142 , 0.653278191 ), ( 77 , 1.917132599 , 0.640107397 ), ( 77 , 2.130677273 , 0.593976369 ), ( 77 , 2.174622128 , 0.646748945 ), ( 77 , 2.261472293 , 0.646122846 ), ( 77 , 2.272587421 , 0.698442312 ), ( 77 , 2.247322495 , 0.715998117 ), ( 77 , 2.257973292 , 0.822394939 ), ( 77 , 1.995557285 , 0.712886101 ), ( 77 , 2.002229773 , 0.741036004 ), ( 77 , 2.026075284 , 0.791827744 ), ( 77 , 2.172478492 , 0.757645362 ), ( 77 , 1.741389263 , 0.55442422 ), ( 77 , 1.748741668 , 0.576402529 ), ( 77 , 1.726250063 , 0.568572357 ), ( 77 , 1.758322208 , 0.595640363 ), ( 77 , 1.7239604 , 0.646892796 ), ( 77 , 1.788233882 , 0.689039916 ), ( 77 , 1.909723271 , 0.714624432 ), ( 77 , 1.827551407 , 0.690031069 ), ( 77 , 1.816215077 , 0.707497724 ), ( 77 , 1.834698488 , 0.734617685 ), ( 77 , 1.821527058 , 0.754492632 ), ( 77 , 1.844451233 , 0.802108408 ), ( 77 , 1.677773905 , 0.673147858 ), ( 77 , 1.686927302 , 0.692442345 ), ( 77 , 1.739266 , 0.703978991 ), ( 77 , 1.633366507 , 0.692418761 ), ( 77 , 1.619058383 , 0.719641874 ), ( 77 , 1.640013069 , 0.733652172 ), ( 77 , 1.57643622 , 0.788197945 ), ( 77 , 1.753627104 , 0.834151899 ), ( 77 , 1.646049227 , 0.803338053 ), ( 77 , 1.911233322 , 0.787635633 ), ( 77 , 1.904113828 , 0.83145528 ), ( 77 , 1.950980332 , 0.83157835 ), ( 77 , 1.831175034 , 0.84861201 ), ( 77 , 1.908059345 , 0.845852324 ), ( 77 , 2.003850092 , 0.917448596 ), ( 77 , 1.897177516 , 0.917092833 ), ( 77 , 1.913768308 , 1.028325066 ), ( 77 , 1.881703819 , 1.030868775 ), ( 77 , 1.759840016 , 0.862255876 ), ( 77 , 1.762827451 , 0.898019745 ), ( 77 , 1.725095614 , 0.907121171 ), ( 77 , 1.704191785 , 0.921691558 ), ( 77 , 1.711862493 , 0.95736052 ), ( 77 , 1.766806402 , 0.970069747 ), ( 77 , 1.673297429 , 0.926370429 ), ( 77 , 1.649899627 , 0.936744826 ), ( 77 , 1.573479527 , 0.993497331 ), ( 77 , 1.756460302 , 1.041914597 ), ( 77 , 1.737099182 , 1.037591935 ), ( 77 , 1.678713271 , 1.04142489 ), ( 77 , 1.711660275 , 1.09545435 ), ( 77 , 1.597862397 , 1.118438796 ), ( 77 , 2.377258971 , 0.758450985 ), ( 77 , 2.399269791 , 0.869730782 ), ( 77 , 2.318607588 , 0.801681869 ), ( 77 , 2.274347052 , 0.828686182 ), ( 77 , 2.530659402 , 0.933682193 ), ( 77 , 2.492423121 , 1.025493149 ), ( 77 , 2.25771103 , 0.977134628 ), ( 77 , 2.198292923 , 1.002123879 ), ( 77 , 2.164597557 , 0.996453693 ), ( 77 , 2.357392358 , 1.081135071 ), ( 77 , 2.380722983 , 1.11795957 ), ( 77 , 2.591673628 , 1.006759366 ), ( 77 , 2.661328522 , 1.112733221 ), ( 77 , 3.115699182 , 1.255311791 ), ( 77 , 2.414437607 , 1.147029718 ), ( 77 , 2.71460372 , 1.202985402 ), ( 77 , 2.66643921 , 1.236387357 ), ( 77 , 2.875473231 , 1.321582392 ), ( 77 , 1.92829575 , 1.052874434 ), ( 77 , 1.937153131 , 1.07256092 ), ( 77 , 1.994471444 , 1.105497918 ), ( 77 , 1.957870137 , 1.114828253 ), ( 77 , 1.938257294 , 1.119586553 ), ( 77 , 2.17619943 , 1.104061125 ), ( 77 , 2.192962327 , 1.161432661 ), ( 77 , 2.212293639 , 1.174369145 ), ( 77 , 2.063518599 , 1.132781162 ), ( 77 , 2.120523363 , 1.252970046 ), ( 77 , 1.777905002 , 1.100517922 ), ( 77 , 1.737961577 , 1.129838825 ), ( 77 , 1.720144005 , 1.139477175 ), ( 77 , 1.742990521 , 1.154750835 ), ( 77 , 1.982011373 , 1.249476114 ), ( 77 , 2.062261505 , 1.252863515 ), ( 77 , 2.000829912 , 1.284482282 ), ( 77 , 1.731796173 , 1.230506858 ), ( 77 , 1.802253984 , 1.293934173 ), ( 77 , 1.627401741 , 1.348908673 ), ( 77 , 2.39607707 , 1.261950278 ), ( 77 , 2.492052018 , 1.290816553 ), ( 77 , 2.233552047 , 1.268715361 ), ( 77 , 2.246785075 , 1.282481091 ), ( 77 , 2.316939255 , 1.287213116 ), ( 77 , 2.806234002 , 1.351090967 ), ( 77 , 2.886441802 , 1.376783912 ), ( 77 , 2.604052473 , 1.360276716 ), ( 77 , 1.659833475 , 1.402470943 ), ( 77 , 1.58371031 , 1.444289777 ), ( 77 , 1.599935981 , 1.488497189 ), ( 77 , 3.959896252 , 0.161011434 ), ( 77 , 3.809036076 , 0.120998842 ), ( 77 , 3.887862632 , 0.169716879 ), ( 77 , 3.865658735 , 0.17543744 ), ( 77 , 3.881990787 , 0.178033737 ), ( 77 , 3.822336994 , 0.170078424 ), ( 77 , 3.753975733 , 0.149787142 ), ( 77 , 3.803407271 , 0.224396292 ), ( 77 , 4.014700237 , 0.254139374 ), ( 77 , 4.121278559 , 0.196632821 ), ( 77 , 4.13236748 , 0.201203652 ), ( 77 , 4.121630493 , 0.199349636 ), ( 77 , 4.144636227 , 0.245492893 ), ( 77 , 4.157969216 , 0.269313985 ), ( 77 , 4.08340976 , 0.225433763 ), ( 77 , 4.121109957 , 0.288158732 ), ( 77 , 4.253363328 , 0.317936313 ), ( 77 , 4.262792071 , 0.328925507 ), ( 77 , 4.274976957 , 0.346160475 ), ( 77 , 4.200761614 , 0.398041696 ), ( 77 , 3.98245797 , 0.336750938 ), ( 77 , 3.977710958 , 0.375710435 ), ( 77 , 4.094590264 , 0.395753821 ), ( 77 , 4.151658126 , 0.441638952 ), ( 77 , 3.858020449 , 0.322204727 ), ( 77 , 3.870246466 , 0.345563579 ), ( 77 , 3.757022113 , 0.344354567 ), ( 77 , 3.826189806 , 0.426960094 ), ( 77 , 3.71832695 , 0.36028084 ), ( 77 , 3.73583132 , 0.370753747 ), ( 77 , 3.692355322 , 0.386898289 ), ( 77 , 3.778235867 , 0.458411197 ), ( 77 , 3.886280416 , 0.399805838 ), ( 77 , 3.873115483 , 0.420584897 ), ( 77 , 3.904741775 , 0.411773716 ), ( 77 , 3.919194758 , 0.468044035 ), ( 77 , 4.023950555 , 0.440593078 ), ( 77 , 4.042630915 , 0.490915422 ), ( 77 , 3.827171605 , 0.587792966 ), ( 77 , 3.928858825 , 0.551800307 ), ( 77 , 3.871802805 , 0.620773834 ), ( 77 , 3.873895481 , 0.622294191 ), ( 77 , 4.360226968 , 0.387834817 ), ( 77 , 4.315218846 , 0.399591476 ), ( 77 , 4.361605784 , 0.401452076 ), ( 77 , 4.293192625 , 0.495394899 ), ( 77 , 4.470382707 , 0.548228395 ), ( 77 , 4.355768566 , 0.51785939 ), ( 77 , 4.329996155 , 0.525753 ), ( 77 , 4.238498246 , 0.496336478 ), ( 77 , 4.264353101 , 0.482494311 ), ( 77 , 4.168849718 , 0.515520521 ), ( 77 , 4.236455883 , 0.55855741 ), ( 77 , 4.24485919 , 0.568963628 ), ( 77 , 4.318600693 , 0.614388061 ), ( 77 , 4.370545821 , 0.603694141 ), ( 77 , 4.362243646 , 0.619865758 ), ( 77 , 4.267749163 , 0.6018297 ), ( 77 , 4.247352818 , 0.614331946 ), ( 77 , 4.227184389 , 0.620464408 ), ( 77 , 4.592165362 , 0.624358289 ), ( 77 , 4.541266123 , 0.640380034 ), ( 77 , 4.496556067 , 0.695551943 ), ( 77 , 4.613552808 , 0.624815858 ), ( 77 , 4.659922717 , 0.697812463 ), ( 77 , 4.519656158 , 0.726918051 ), ( 77 , 4.439055313 , 0.762424713 ), ( 77 , 4.084965099 , 0.623167554 ), ( 77 , 4.129469992 , 0.636109734 ), ( 77 , 4.109420921 , 0.646618175 ), ( 77 , 4.288126769 , 0.769402385 ), ( 77 , 4.278595804 , 0.795514692 ), ( 77 , 4.033934271 , 0.65185524 ), ( 77 , 4.047724746 , 0.748388884 ), ( 77 , 4.144424828 , 0.777057221 ), ( 77 , 4.102806663 , 0.782449321 ), ( 77 , 4.219924734 , 0.856661237 ), ( 77 , 4.148547666 , 0.846185594 ), ( 77 , 4.388913208 , 0.803630774 ), ( 77 , 4.413018331 , 0.886161454 ), ( 77 , 4.450838238 , 0.925804979 ), ( 77 , 4.557200552 , 0.880077166 ), ( 77 , 4.557997169 , 0.884620757 ), ( 77 , 4.576989132 , 0.887855311 ), ( 77 , 4.575362882 , 0.896418189 ), ( 77 , 4.523019728 , 0.921260909 ), ( 77 , 4.509514607 , 0.968232045 ), ( 77 , 4.366027145 , 0.980296483 ), ( 77 , 4.70879728 , 1.119524669 ), ( 77 , 3.538089262 , 0.423028345 ), ( 77 , 3.428177913 , 0.464008054 ), ( 77 , 3.45589893 , 0.560004778 ), ( 77 , 3.414524077 , 0.566072659 ), ( 77 , 3.546505824 , 0.536659308 ), ( 77 , 3.509818708 , 0.559981578 ), ( 77 , 3.602219971 , 0.604709413 ), ( 77 , 3.497359245 , 0.678589567 ), ( 77 , 3.505528794 , 0.688179656 ), ( 77 , 3.742756335 , 0.58041552 ), ( 77 , 3.787239565 , 0.620928581 ), ( 77 , 3.672026944 , 0.632226511 ), ( 77 , 3.707689618 , 0.651534199 ), ( 77 , 3.73320911 , 0.692486155 ), ( 77 , 3.604101418 , 0.654928567 ), ( 77 , 3.629347182 , 0.692359611 ), ( 77 , 3.625323445 , 0.735748756 ), ( 77 , 3.580329144 , 0.80775535 ), ( 77 , 3.772727679 , 0.834794904 ), ( 77 , 3.69285969 , 0.853133574 ), ( 77 , 3.341136474 , 0.585400657 ), ( 77 , 3.269206905 , 0.605692471 ), ( 77 , 3.260289012 , 0.634849779 ), ( 77 , 3.415349634 , 0.792112386 ), ( 77 , 3.374304589 , 0.814306928 ), ( 77 , 3.379247521 , 0.81642589 ), ( 77 , 3.233516077 , 0.663640876 ), ( 77 , 3.279644328 , 0.789335109 ), ( 77 , 3.180397776 , 0.858445263 ), ( 77 , 3.551151344 , 0.795866832 ), ( 77 , 3.548341659 , 0.833542402 ), ( 77 , 3.531224569 , 0.928125893 ), ( 77 , 3.578767486 , 0.926949426 ), ( 77 , 3.511878333 , 0.958140707 ), ( 77 , 3.422291405 , 0.941677596 ), ( 77 , 3.431386994 , 0.995277483 ), ( 77 , 3.177819273 , 1.022011777 ), ( 77 , 3.353090771 , 1.061511696 ), ( 77 , 3.881568335 , 0.812859207 ), ( 77 , 3.925041738 , 0.94022292 ), ( 77 , 4.01889127 , 0.941232377 ), ( 77 , 3.82621 , 0.957405597 ), ( 77 , 4.014618104 , 1.053840471 ), ( 77 , 4.341544109 , 1.055368751 ), ( 77 , 4.334270865 , 1.068729662 ), ( 77 , 4.209804964 , 1.047977643 ), ( 77 , 4.664543728 , 1.192789782 ), ( 77 , 4.498356625 , 1.15640939 ), ( 77 , 4.374763178 , 1.188658596 ), ( 77 , 4.354581136 , 1.207114215 ), ( 77 , 4.644091081 , 1.267553987 ), ( 77 , 4.487652058 , 1.258975166 ), ( 77 , 4.623939108 , 1.272839675 ), ( 77 , 4.274102459 , 1.228166565 ), ( 77 , 4.661800794 , 1.344422553 ), ( 77 , 3.686353595 , 1.02743399 ), ( 77 , 3.81574635 , 1.103320339 ), ( 77 , 3.815757552 , 1.165788074 ), ( 77 , 3.673982765 , 1.227604535 ), ( 77 , 3.330495867 , 1.150987114 ), ( 77 , 3.438461473 , 1.280079219 ), ( 77 , 3.276504851 , 1.338442412 ), ( 77 , 3.927579669 , 1.170951773 ), ( 77 , 3.899027435 , 1.217582217 ), ( 77 , 3.952106389 , 1.254592484 ), ( 77 , 3.884860344 , 1.27457557 ), ( 77 , 3.921786423 , 1.335665458 ), ( 77 , 4.287256808 , 1.334220449 ), ( 77 , 4.269724792 , 1.35347444 ), ( 77 , 4.686638713 , 1.373221268 ), ( 77 , 4.432506358 , 1.360653844 ), ( 77 , 4.077039148 , 1.334317647 ), ( 77 , 4.533005592 , 1.454515274 ), ( 77 , 3.619580535 , 1.318893145 ), ( 77 , 3.643551184 , 1.368333257 ), ( 77 , 3.563752448 , 1.384986776 ), ( 77 , 3.156226649 , 1.425729981 ), ( 77 , 4.637500922 , 1.495223883 ), ( 77 , 3.482430704 , 1.46431651 ), ( 77 , 3.904094374 , 1.485635578 ), ( 77 , 3.376898421 , 1.529753084 ), ( 77 , 5.510090868 , 0.023877031 ), ( 77 , 5.511094279 , 0.026733135 ), ( 77 , 5.519829955 , 0.044441378 ), ( 77 , 5.513720218 , 0.051070679 ), ( 77 , 5.469418183 , 0.052395382 ), ( 77 , 5.568323027 , 0.076885786 ), ( 77 , 5.56112947 , 0.081850037 ), ( 77 , 5.434389478 , 0.102634587 ), ( 77 , 5.507414547 , 0.125296932 ), ( 77 , 5.612550788 , 0.177063396 ), ( 77 , 5.530315142 , 0.162242766 ), ( 77 , 5.609232727 , 0.20334032 ), ( 77 , 5.586988392 , 0.211905321 ), ( 77 , 5.36069439 , 0.144095622 ), ( 77 , 5.345007014 , 0.160482118 ), ( 77 , 5.364439047 , 0.172748344 ), ( 77 , 5.417904024 , 0.201865941 ), ( 77 , 5.519062876 , 0.217199713 ), ( 77 , 5.437679698 , 0.277643079 ), ( 77 , 5.443872826 , 0.283410328 ), ( 77 , 5.485514512 , 0.283640585 ), ( 77 , 5.683737859 , 0.178157081 ), ( 77 , 5.723425774 , 0.210062216 ), ( 77 , 5.782413081 , 0.252822672 ), ( 77 , 5.662259901 , 0.265565014 ), ( 77 , 5.805237719 , 0.291610384 ), ( 77 , 5.783759014 , 0.305610776 ), ( 77 , 5.805167609 , 0.328067913 ), ( 77 , 5.853165326 , 0.36735844 ), ( 77 , 5.80174 , 0.38819743 ), ( 77 , 5.586507886 , 0.293427084 ), ( 77 , 5.578168142 , 0.309286983 ), ( 77 , 5.597714201 , 0.315238944 ), ( 77 , 5.607560591 , 0.322232657 ), ( 77 , 5.64165377 , 0.361478453 ), ( 77 , 5.574988757 , 0.349172966 ), ( 77 , 5.61398086 , 0.361502385 ), ( 77 , 5.700061276 , 0.400487154 ), ( 77 , 5.726185017 , 0.419091191 ), ( 77 , 5.620010943 , 0.429590361 ), ( 77 , 5.686086172 , 0.445495674 ), ( 77 , 5.301587855 , 0.228426594 ), ( 77 , 5.356952559 , 0.252305048 ), ( 77 , 5.354933869 , 0.291659414 ), ( 77 , 5.29459057 , 0.251506669 ), ( 77 , 5.24099264 , 0.25833559 ), ( 77 , 5.321180692 , 0.271311327 ), ( 77 , 5.33391732 , 0.2952495 ), ( 77 , 5.285116221 , 0.294138548 ), ( 77 , 5.297336241 , 0.31793612 ), ( 77 , 5.464468452 , 0.351304191 ), ( 77 , 5.406691993 , 0.341388803 ), ( 77 , 5.419945049 , 0.346701978 ), ( 77 , 5.329907663 , 0.329048591 ), ( 77 , 5.376076831 , 0.384218293 ), ( 77 , 5.277758287 , 0.327816823 ), ( 77 , 5.160958339 , 0.31360455 ), ( 77 , 5.185668281 , 0.325596823 ), ( 77 , 5.151072495 , 0.376574617 ), ( 77 , 5.288763681 , 0.367707736 ), ( 77 , 5.320909729 , 0.401357585 ), ( 77 , 5.283263217 , 0.410630841 ), ( 77 , 5.337220185 , 0.419520274 ), ( 77 , 5.236464325 , 0.45290897 ), ( 77 , 5.292604707 , 0.476201541 ), ( 77 , 5.49001058 , 0.417035408 ), ( 77 , 5.543673144 , 0.391948962 ), ( 77 , 5.523859919 , 0.427576298 ), ( 77 , 5.456961137 , 0.396720423 ), ( 77 , 5.444055705 , 0.39611504 ), ( 77 , 5.435623836 , 0.400044696 ), ( 77 , 5.48887875 , 0.423283029 ), ( 77 , 5.617809931 , 0.486494719 ), ( 77 , 5.587648385 , 0.503232808 ), ( 77 , 5.559592401 , 0.540379187 ), ( 77 , 5.628518553 , 0.572644438 ), ( 77 , 5.364616581 , 0.470183866 ), ( 77 , 5.381619878 , 0.515286763 ), ( 77 , 5.345368999 , 0.566681635 ), ( 77 , 5.38034862 , 0.552517773 ), ( 77 , 5.388784504 , 0.559108664 ), ( 77 , 5.546937087 , 0.578289537 ), ( 77 , 5.555534412 , 0.619409698 ), ( 77 , 5.543818584 , 0.642206304 ), ( 77 , 5.565710254 , 0.650175935 ), ( 77 , 5.417214346 , 0.626757662 ), ( 77 , 5.526466007 , 0.663906096 ), ( 77 , 5.505789194 , 0.685224651 ), ( 77 , 5.488754153 , 0.702891047 ), ( 77 , 5.870844763 , 0.393992789 ), ( 77 , 5.933803976 , 0.399276801 ), ( 77 , 5.813878826 , 0.414668397 ), ( 77 , 5.991508515 , 0.470840419 ), ( 77 , 5.976843924 , 0.50517772 ), ( 77 , 6.043638845 , 0.49221746 ), ( 77 , 6.035772646 , 0.553086356 ), ( 77 , 5.912476882 , 0.537611163 ), ( 77 , 6.028128356 , 0.569204231 ), ( 77 , 5.995343365 , 0.59685169 ), ( 77 , 5.760072483 , 0.467466612 ), ( 77 , 5.823203269 , 0.516132826 ), ( 77 , 5.851346801 , 0.54645633 ), ( 77 , 5.888842082 , 0.572973882 ), ( 77 , 5.859213402 , 0.586354869 ), ( 77 , 5.899706595 , 0.582536356 ), ( 77 , 5.878889936 , 0.584932644 ), ( 77 , 5.960459277 , 0.622603077 ), ( 77 , 5.822244112 , 0.642835877 ), ( 77 , 6.089886407 , 0.552847976 ), ( 77 , 6.172960234 , 0.631880392 ), ( 77 , 6.131964074 , 0.631188246 ), ( 77 , 6.052106675 , 0.611783018 ), ( 77 , 5.998394609 , 0.628033786 ), ( 77 , 6.059642061 , 0.683604459 ), ( 77 , 6.078584203 , 0.698181192 ), ( 77 , 6.160826857 , 0.668573512 ), ( 77 , 6.137990518 , 0.71638413 ), ( 77 , 6.194296573 , 0.756296659 ), ( 77 , 6.256462938 , 0.777646939 ), ( 77 , 6.196804767 , 0.786681978 ), ( 77 , 6.010992284 , 0.687462686 ), ( 77 , 5.964346282 , 0.687965123 ), ( 77 , 6.040655973 , 0.720374286 ), ( 77 , 5.934465967 , 0.72107002 ), ( 77 , 5.996748449 , 0.759715396 ), ( 77 , 5.982560046 , 0.754643927 ), ( 77 , 6.049962636 , 0.818971228 ), ( 77 , 6.104731235 , 0.752796639 ), ( 77 , 6.142222286 , 0.781648325 ), ( 77 , 6.193067887 , 0.797961823 ), ( 77 , 6.215709764 , 0.809486114 ), ( 77 , 6.104068407 , 0.846412425 ), ( 77 , 6.209997795 , 0.911904973 ), ( 77 , 5.695662089 , 0.572128499 ), ( 77 , 5.663928092 , 0.578128667 ), ( 77 , 5.657266346 , 0.580046011 ), ( 77 , 5.770213016 , 0.600020371 ), ( 77 , 5.837405315 , 0.681133705 ), ( 77 , 5.773484189 , 0.722669252 ), ( 77 , 5.763636098 , 0.761575027 ), ( 77 , 5.59558192 , 0.648647385 ), ( 77 , 5.5860271 , 0.675291973 ), ( 77 , 5.650327762 , 0.688284888 ), ( 77 , 5.613913807 , 0.711020537 ), ( 77 , 5.648900998 , 0.740098806 ), ( 77 , 5.555194733 , 0.765741514 ), ( 77 , 5.540887797 , 0.771449141 ), ( 77 , 5.60844382 , 0.746724455 ), ( 77 , 5.739941701 , 0.784500035 ), ( 77 , 5.665701807 , 0.850211006 ), ( 77 , 5.760114305 , 0.899161775 ), ( 77 , 5.701000309 , 0.909737559 ), ( 77 , 5.759750216 , 0.944353236 ), ( 77 , 5.920862629 , 0.760947422 ), ( 77 , 6.029632309 , 0.836977733 ), ( 77 , 5.89527144 , 0.879030185 ), ( 77 , 6.015230378 , 0.88484385 ), ( 77 , 5.95301655 , 0.897974013 ), ( 77 , 6.093069869 , 0.884380581 ), ( 77 , 6.158103834 , 0.914735606 ), ( 77 , 6.133718511 , 0.93134189 ), ( 77 , 6.199283756 , 0.917353948 ), ( 77 , 6.251162555 , 0.947164951 ), ( 77 , 6.233137064 , 0.971262218 ), ( 77 , 6.139942695 , 0.957599964 ), ( 77 , 6.103897474 , 0.951877921 ), ( 77 , 6.130150816 , 0.979245741 ), ( 77 , 6.166240571 , 1.001953166 ), ( 77 , 5.823809282 , 0.861394547 ), ( 77 , 5.88361695 , 0.895462941 ), ( 77 , 5.953752177 , 0.938224452 ), ( 77 , 5.908673998 , 0.943966264 ), ( 77 , 5.804049733 , 0.952218109 ), ( 77 , 5.787051329 , 0.964238272 ), ( 77 , 5.829018006 , 0.954230452 ), ( 77 , 5.817393705 , 0.965406983 ), ( 77 , 5.905497034 , 0.976135269 ), ( 77 , 5.960685453 , 1.013543591 ), ( 77 , 6.194102594 , 1.029230669 ), ( 77 , 6.159831964 , 1.031356366 ), ( 77 , 6.144402483 , 1.048205366 ), ( 77 , 6.257958819 , 1.075228608 ), ( 77 , 6.27245721 , 1.081952116 ), ( 77 , 6.239050429 , 1.085840425 ), ( 77 , 5.989808037 , 1.063188415 ), ( 77 , 6.052654106 , 1.06172527 ), ( 77 , 6.222145624 , 1.093795957 ), ( 77 , 6.165060485 , 1.102274832 ), ( 77 , 5.071081994 , 0.393331298 ), ( 77 , 5.143344074 , 0.403420433 ), ( 77 , 5.149568155 , 0.41687132 ), ( 77 , 5.076703871 , 0.418460106 ), ( 77 , 5.137214403 , 0.460053703 ), ( 77 , 5.129347982 , 0.473128396 ), ( 77 , 5.114245778 , 0.493348196 ), ( 77 , 5.111630569 , 0.501212541 ), ( 77 , 5.086764431 , 0.501947372 ), ( 77 , 5.20000907 , 0.457926791 ), ( 77 , 5.228961917 , 0.505937797 ), ( 77 , 5.237387286 , 0.520483382 ), ( 77 , 5.158373677 , 0.514837131 ), ( 77 , 5.200968242 , 0.551575246 ), ( 77 , 5.211902104 , 0.578250416 ), ( 77 , 5.206966313 , 0.592546622 ), ( 77 , 5.199981427 , 0.594626332 ), ( 77 , 5.024926934 , 0.458646895 ), ( 77 , 4.995630709 , 0.49197705 ), ( 77 , 5.049548416 , 0.502336513 ), ( 77 , 5.024471456 , 0.521681897 ), ( 77 , 4.965806891 , 0.49150026 ), ( 77 , 5.018612956 , 0.559318932 ), ( 77 , 5.10184984 , 0.533184255 ), ( 77 , 5.131667729 , 0.588974505 ), ( 77 , 5.139923847 , 0.591555518 ), ( 77 , 5.091511548 , 0.626691063 ), ( 77 , 5.018999861 , 0.621250402 ), ( 77 , 5.05086595 , 0.656422864 ), ( 77 , 5.110632589 , 0.67021864 ), ( 77 , 5.079622004 , 0.684368229 ), ( 77 , 5.117882165 , 0.692244875 ), ( 77 , 5.315345466 , 0.570699383 ), ( 77 , 5.298094012 , 0.617167486 ), ( 77 , 5.310203623 , 0.627574167 ), ( 77 , 5.349501704 , 0.625022289 ), ( 77 , 5.255157703 , 0.585562952 ), ( 77 , 5.251216444 , 0.628747145 ), ( 77 , 5.310082683 , 0.657664172 ), ( 77 , 5.282829999 , 0.646516026 ), ( 77 , 5.298970475 , 0.703876303 ), ( 77 , 5.475569847 , 0.725679591 ), ( 77 , 5.352797845 , 0.688746516 ), ( 77 , 5.355506448 , 0.693424152 ), ( 77 , 5.352617813 , 0.704192186 ), ( 77 , 5.35100022 , 0.722205341 ), ( 77 , 5.371753649 , 0.713111738 ), ( 77 , 5.360359486 , 0.733209064 ), ( 77 , 5.369168104 , 0.758580204 ), ( 77 , 5.360398116 , 0.759623348 ), ( 77 , 5.341112796 , 0.780185943 ), ( 77 , 5.209254195 , 0.719589644 ), ( 77 , 5.200426721 , 0.721672752 ), ( 77 , 5.260611205 , 0.720468656 ), ( 77 , 5.240350714 , 0.733187266 ), ( 77 , 5.189327298 , 0.725729692 ), ( 77 , 5.188057395 , 0.774563399 ), ( 77 , 5.176173824 , 0.798246475 ), ( 77 , 5.29444232 , 0.764649537 ), ( 77 , 5.321395173 , 0.759164316 ), ( 77 , 5.28171591 , 0.778704538 ), ( 77 , 5.28030193 , 0.785690249 ), ( 77 , 5.361394849 , 0.830972086 ), ( 77 , 5.34327705 , 0.849849953 ), ( 77 , 5.361755811 , 0.852783073 ), ( 77 , 5.215047845 , 0.814462582 ), ( 77 , 5.282011519 , 0.914295293 ), ( 77 , 4.923842384 , 0.572115447 ), ( 77 , 4.961643715 , 0.608332539 ), ( 77 , 4.94239479 , 0.619231873 ), ( 77 , 4.947460756 , 0.624350769 ), ( 77 , 4.863002868 , 0.600689466 ), ( 77 , 4.845802206 , 0.632667068 ), ( 77 , 4.86137671 , 0.670867566 ), ( 77 , 4.944644586 , 0.679475964 ), ( 77 , 4.967436941 , 0.694255983 ), ( 77 , 4.919104853 , 0.733873514 ), ( 77 , 4.80903649 , 0.63357878 ), ( 77 , 4.80780272 , 0.719304969 ), ( 77 , 4.865328124 , 0.689939644 ), ( 77 , 4.867783003 , 0.703914624 ), ( 77 , 4.891263945 , 0.731594618 ), ( 77 , 4.870352483 , 0.720417455 ), ( 77 , 4.870341706 , 0.720440456 ), ( 77 , 4.835933651 , 0.772427213 ), ( 77 , 4.742019135 , 0.758374371 ), ( 77 , 4.771673004 , 0.797030937 ), ( 77 , 4.906911399 , 0.76503474 ), ( 77 , 4.860368141 , 0.83549183 ), ( 77 , 4.851417176 , 0.87076667 ), ( 77 , 4.733984085 , 0.840133689 ), ( 77 , 4.764427878 , 0.91309911 ), ( 77 , 5.129319317 , 0.827908577 ), ( 77 , 4.991979408 , 0.852886854 ), ( 77 , 5.046267962 , 0.843981643 ), ( 77 , 5.165928565 , 0.868884287 ), ( 77 , 5.165368385 , 0.918236041 ), ( 77 , 5.097081885 , 0.95608754 ), ( 77 , 5.036525559 , 1.04177623 ), ( 77 , 4.862481818 , 0.892094547 ), ( 77 , 4.88191588 , 0.913580441 ), ( 77 , 4.880525498 , 0.96421927 ), ( 77 , 4.899741852 , 0.967811157 ), ( 77 , 4.863117415 , 0.976213209 ), ( 77 , 4.813435974 , 0.949875332 ), ( 77 , 4.807541836 , 0.96219699 ), ( 77 , 4.756270812 , 0.982043028 ), ( 77 , 4.717813068 , 0.994274792 ), ( 77 , 4.921822537 , 1.004068592 ), ( 77 , 4.999643285 , 1.034842154 ), ( 77 , 4.736521229 , 1.13590238 ), ( 77 , 5.492222959 , 0.775178111 ), ( 77 , 5.514789649 , 0.808620433 ), ( 77 , 5.54019427 , 0.805621584 ), ( 77 , 5.484479688 , 0.83040907 ), ( 77 , 5.471713223 , 0.845395045 ), ( 77 , 5.517768298 , 0.914549554 ), ( 77 , 5.563776084 , 0.897284349 ), ( 77 , 5.575667658 , 0.915872174 ), ( 77 , 5.578285488 , 0.94550878 ), ( 77 , 5.604711888 , 0.966331285 ), ( 77 , 5.609316131 , 1.016381155 ), ( 77 , 5.662048952 , 1.025525519 ), ( 77 , 5.402321002 , 0.90768581 ), ( 77 , 5.384299775 , 0.918000497 ), ( 77 , 5.37881052 , 0.925463326 ), ( 77 , 5.457380076 , 0.960347279 ), ( 77 , 5.438501648 , 0.991965256 ), ( 77 , 5.307432522 , 0.909405927 ), ( 77 , 5.305026655 , 0.916336798 ), ( 77 , 5.344087953 , 0.960136185 ), ( 77 , 5.59187439 , 1.057350466 ), ( 77 , 5.586071599 , 1.058208059 ), ( 77 , 5.603531787 , 1.061113051 ), ( 77 , 5.363899854 , 1.054554081 ), ( 77 , 5.420792173 , 1.105684155 ), ( 77 , 5.440295744 , 1.116769893 ), ( 77 , 5.784287414 , 0.997050956 ), ( 77 , 5.952148989 , 1.073583733 ), ( 77 , 5.884743537 , 1.072603889 ), ( 77 , 5.756652767 , 1.052392529 ), ( 77 , 5.726489296 , 1.052966544 ), ( 77 , 5.720183152 , 1.075413776 ), ( 77 , 6.060561673 , 1.096337011 ), ( 77 , 6.039000393 , 1.106484097 ), ( 77 , 6.042234 , 1.118587577 ), ( 77 , 6.13363694 , 1.167991337 ), ( 77 , 5.952010648 , 1.126934769 ), ( 77 , 5.988699722 , 1.18671947 ), ( 77 , 6.043840686 , 1.19412279 ), ( 77 , 6.229577503 , 1.247845125 ), ( 77 , 5.615245716 , 1.109776525 ), ( 77 , 5.805247089 , 1.14360401 ), ( 77 , 5.723031304 , 1.14759318 ), ( 77 , 5.8426471 , 1.194366387 ), ( 77 , 5.556582542 , 1.161043211 ), ( 77 , 5.729635737 , 1.188698655 ), ( 77 , 5.900610871 , 1.180127784 ), ( 77 , 6.002496128 , 1.197591096 ), ( 77 , 6.19304681 , 1.25571765 ), ( 77 , 6.272642952 , 1.289200401 ), ( 77 , 5.881275102 , 1.235723396 ), ( 77 , 5.806431106 , 1.24141319 ), ( 77 , 5.940416257 , 1.278576971 ), ( 77 , 5.958666208 , 1.30121392 ), ( 77 , 6.107217167 , 1.290219711 ), ( 77 , 5.242478524 , 0.977499748 ), ( 77 , 5.186210788 , 0.98612453 ), ( 77 , 5.20629151 , 1.015164819 ), ( 77 , 5.051947036 , 1.044344404 ), ( 77 , 5.286846413 , 1.108761443 ), ( 77 , 5.397730749 , 1.178174266 ), ( 77 , 5.268484824 , 1.137742877 ), ( 77 , 5.229958826 , 1.19401842 ), ( 77 , 4.871195563 , 1.167849484 ), ( 77 , 4.764015726 , 1.154289715 ), ( 77 , 4.854207068 , 1.197551575 ), ( 77 , 5.099776912 , 1.180308061 ), ( 77 , 5.017063827 , 1.260882566 ), ( 77 , 5.008844977 , 1.261298077 ), ( 77 , 4.861908886 , 1.263813266 ), ( 77 , 4.868421254 , 1.278988937 ), ( 77 , 4.738689806 , 1.328752363 ), ( 77 , 4.840738569 , 1.330389528 ), ( 77 , 4.744755177 , 1.354256476 ), ( 77 , 5.560340395 , 1.277118883 ), ( 77 , 5.399163693 , 1.319543322 ), ( 77 , 5.769098212 , 1.315188343 ), ( 77 , 5.845935873 , 1.328610853 ), ( 77 , 6.025842811 , 1.328590918 ), ( 77 , 6.12583297 , 1.352835239 ), ( 77 , 6.140560741 , 1.392688037 ), ( 77 , 5.622009172 , 1.333490952 ), ( 77 , 6.074499901 , 1.438067348 ), ( 77 , 6.180208144 , 1.452185257 ), ( 77 , 5.304575989 , 1.361755096 ), ( 77 , 5.289604769 , 1.404444067 ), ( 77 , 5.051726296 , 1.337256922 ), ( 77 , 5.06457464 , 1.364149761 ), ( 77 , 5.576223794 , 1.43149913 ), ( 77 , 5.752160662 , 1.44636847 ), ( 77 , 5.96681337 , 1.460802858 ), ( 77 , 0.129083508 , -0.568414454 ), ( 77 , 0.109161657 , -0.535812855 ), ( 77 , 0.019121813 , -0.512804819 ), ( 77 , 6.178538494 , -0.534893477 ), ( 77 , 6.255862376 , -0.513066861 ), ( 77 , 6.124982517 , -0.542984615 ), ( 77 , 6.195696436 , -0.505138159 ), ( 77 , 6.196898055 , -0.494970523 ), ( 77 , 6.19783907 , -0.457313093 ), ( 77 , 0.057848978 , -0.459464682 ), ( 77 , 0.043574256 , -0.451597464 ), ( 77 , 0.087120299 , -0.438474582 ), ( 77 , 0.036924651 , -0.420514145 ), ( 77 , 6.280955104 , -0.349706089 ), ( 77 , 0.227809762 , -0.394770127 ), ( 77 , 0.229850892 , -0.374182071 ), ( 77 , 0.349447293 , -0.357283943 ), ( 77 , 0.231819841 , -0.308081085 ), ( 77 , 0.13369808 , -0.324997574 ), ( 77 , 0.251886697 , -0.275539562 ), ( 77 , 0.234328249 , -0.242953903 ), ( 77 , 0.194008942 , -0.234153645 ), ( 77 , 6.155213484 , -0.422297218 ), ( 77 , 5.996618058 , -0.435981553 ), ( 77 , 6.039673364 , -0.388073001 ), ( 77 , 6.108867295 , -0.398307012 ), ( 77 , 6.010993862 , -0.353855796 ), ( 77 , 6.025416936 , -0.337667716 ), ( 77 , 6.23149268 , -0.291460831 ), ( 77 , 6.230545464 , -0.242905402 ), ( 77 , 6.251735957 , -0.209737863 ), ( 77 , 0.133859886 , -0.164197981 ), ( 77 , 0.112909572 , -0.14576087 ), ( 77 , 0.100352829 , -0.112802675 ), ( 77 , 6.178282438 , -0.186535767 ), ( 77 , 0.056369788 , -0.059020435 ), ( 77 , 0.429476913 , -0.277020498 ), ( 77 , 0.3489061 , -0.276013308 ), ( 77 , 0.491768249 , -0.222142871 ), ( 77 , 0.482064688 , -0.215420306 ), ( 77 , 0.453244982 , -0.130544806 ), ( 77 , 0.333388669 , -0.2111331 ), ( 77 , 0.261150866 , -0.145262868 ), ( 77 , 0.307659408 , -0.106194184 ), ( 77 , 0.401491706 , -0.117263787 ), ( 77 , 0.413535836 , -0.035500888 ), ( 77 , 0.60417194 , -0.145897323 ), ( 77 , 0.65642095 , -0.087810275 ), ( 77 , 0.553853365 , -0.031830414 ), ( 77 , 0.706784961 , 0.009606678 ), ( 77 , 0.660988208 , 0.019044994 ), ( 77 , 0.618409813 , -0.006134652 ), ( 77 , 0.459711501 , -0.055308501 ), ( 77 , 0.433791845 , 0.010685321 ), ( 77 , 0.607253857 , 0.061728324 ), ( 77 , 0.188997731 , -0.110597795 ), ( 77 , 0.33423701 , 0.047729188 ), ( 77 , 0.270516191 , 0.04408917 ), ( 77 , 0.256164594 , 0.073405168 ), ( 77 , 0.147931871 , 0.057941444 ), ( 77 , 0.154797795 , 0.074956323 ), ( 77 , 0.185647186 , 0.099053244 ), ( 77 , 0.402514199 , 0.064317831 ), ( 77 , 0.341457294 , 0.044512342 ), ( 77 , 0.346486623 , 0.057413988 ), ( 77 , 0.344146828 , 0.081223051 ), ( 77 , 0.524523963 , 0.120740388 ), ( 77 , 0.495837393 , 0.133237028 ), ( 77 , 0.427388511 , 0.170405462 ), ( 77 , 0.50085184 , 0.240104844 ), ( 77 , 0.36353933 , 0.189234163 ), ( 77 , 0.331328912 , 0.282567324 ), ( 77 , 0.400625281 , 0.272712442 ), ( 77 , 0.398083452 , 0.299357095 ), ( 77 , 5.975322285 , -0.1980806 ), ( 77 , 5.793507074 , -0.175907389 ), ( 77 , 5.720734244 , -0.17519493 ), ( 77 , 5.781649119 , -0.11000009 ), ( 77 , 5.968279193 , -0.073843014 ), ( 77 , 5.910705024 , -0.057710619 ), ( 77 , 6.08308441 , -0.155763324 ), ( 77 , 6.087778852 , -0.106846935 ), ( 77 , 6.040494562 , -0.116760908 ), ( 77 , 6.029545999 , -0.067198785 ), ( 77 , 6.060962146 , -0.04280629 ), ( 77 , 6.198834882 , 0.007257676 ), ( 77 , 6.128958344 , -0.030395751 ), ( 77 , 6.201609981 , 0.043065284 ), ( 77 , 5.966826672 , -0.031221371 ), ( 77 , 6.016514532 , -0.005512472 ), ( 77 , 5.955978374 , -0.012771724 ), ( 77 , 5.957585184 , 0.030583171 ), ( 77 , 6.120589373 , 0.065274285 ), ( 77 , 5.709750199 , -0.10906838 ), ( 77 , 5.742523841 , -0.101739997 ), ( 77 , 5.629797393 , -0.078574071 ), ( 77 , 5.795360791 , -0.061633019 ), ( 77 , 5.741561169 , 0.005240161 ), ( 77 , 5.576671228 , -0.037385155 ), ( 77 , 5.555093586 , -0.019714278 ), ( 77 , 5.620158917 , 0.0555025 ), ( 77 , 5.594724012 , 0.078340582 ), ( 77 , 5.682388036 , 0.103185189 ), ( 77 , 5.861042723 , 0.098546263 ), ( 77 , 5.966843488 , 0.102755618 ), ( 77 , 6.006285945 , 0.118776159 ), ( 77 , 6.021856496 , 0.128872239 ), ( 77 , 5.927353934 , 0.161590758 ), ( 77 , 5.956692079 , 0.203959594 ), ( 77 , 5.778681466 , 0.238201983 ), ( 77 , 5.913182772 , 0.255001573 ), ( 77 , 5.846517415 , 0.217325627 ), ( 77 , 5.832320575 , 0.225501951 ), ( 77 , 6.271854321 , 0.052529442 ), ( 77 , 0.048408404 , 0.072135632 ), ( 77 , 6.229719944 , 0.07382577 ), ( 77 , 6.19723836 , 0.083892156 ), ( 77 , 0.070213309 , 0.14163969 ), ( 77 , 0.051449034 , 0.15952023 ), ( 77 , 0.065408293 , 0.1539053 ), ( 77 , 0.074305183 , 0.181321184 ), ( 77 , 0.001308018 , 0.232343453 ), ( 77 , 6.271140979 , 0.272443275 ), ( 77 , 0.132236167 , 0.27568344 ), ( 77 , 0.284504666 , 0.335063362 ), ( 77 , 0.212697027 , 0.32612019 ), ( 77 , 0.207546289 , 0.329884884 ), ( 77 , 0.312716006 , 0.396572985 ), ( 77 , 0.302747351 , 0.399856507 ), ( 77 , 0.316247138 , 0.405886483 ), ( 77 , 0.095808161 , 0.294550863 ), ( 77 , 0.143940291 , 0.321052898 ), ( 77 , 0.138415365 , 0.340022802 ), ( 77 , 0.113346888 , 0.366941612 ), ( 77 , 0.122922161 , 0.362957038 ), ( 77 , 0.10039816 , 0.390490637 ), ( 77 , 0.240486791 , 0.408696288 ), ( 77 , 0.199731879 , 0.456805542 ), ( 77 , 6.059770826 , 0.191264501 ), ( 77 , 6.055427813 , 0.221186819 ), ( 77 , 6.088217404 , 0.217081121 ), ( 77 , 6.127844298 , 0.252705711 ), ( 77 , 6.111942566 , 0.26263452 ), ( 77 , 6.020848548 , 0.241945998 ), ( 77 , 6.022085116 , 0.243033012 ), ( 77 , 6.101293917 , 0.296451296 ), ( 77 , 6.154590775 , 0.289080399 ), ( 77 , 6.18049597 , 0.360669787 ), ( 77 , 6.155463722 , 0.384799356 ), ( 77 , 5.950792381 , 0.288616859 ), ( 77 , 6.04853135 , 0.331444635 ), ( 77 , 6.021662574 , 0.370346006 ), ( 77 , 6.024968166 , 0.373179488 ), ( 77 , 6.037055318 , 0.408033918 ), ( 77 , 5.998142651 , 0.425637025 ), ( 77 , 6.202764398 , 0.422783344 ), ( 77 , 6.253188493 , 0.453757949 ), ( 77 , 6.270245381 , 0.48125236 ), ( 77 , 6.261742743 , 0.499756153 ), ( 77 , 0.090582062 , 0.462754662 ), ( 77 , 0.119760527 , 0.458642842 ), ( 77 , 0.161700762 , 0.54954252 ), ( 77 , 0.133036346 , 0.561590924 ), ( 77 , 0.124861333 , 0.587025562 ), ( 77 , 6.196187152 , 0.46778666 ), ( 77 , 6.095409115 , 0.530121353 ), ( 77 , 6.163092744 , 0.58889116 ), ( 77 , 6.200321898 , 0.627826584 ), ( 77 , 0.034248323 , 0.675818804 ), ( 77 , 1.544112346 , -0.655089068 ), ( 77 , 1.575810498 , -0.636502966 ), ( 77 , 1.541311936 , -0.572583499 ), ( 77 , 1.561819428 , -0.557132878 ), ( 77 , 1.710148951 , -0.511553309 ), ( 77 , 1.600289193 , -0.548325617 ), ( 77 , 1.648724915 , -0.541212926 ), ( 77 , 1.635847629 , -0.538490596 ), ( 77 , 1.483994663 , -0.545342501 ), ( 77 , 1.513527061 , -0.504243268 ), ( 77 , 1.474127217 , -0.505051204 ), ( 77 , 1.489099975 , -0.459835106 ), ( 77 , 1.624442783 , -0.440607586 ), ( 77 , 1.583938767 , -0.405233549 ), ( 77 , 1.613100384 , -0.38604674 ), ( 77 , 1.786541898 , -0.500072544 ), ( 77 , 1.777864067 , -0.498444118 ), ( 77 , 1.796916408 , -0.463939021 ), ( 77 , 1.79604628 , -0.463126215 ), ( 77 , 1.836052386 , -0.455415975 ), ( 77 , 1.845819959 , -0.422940914 ), ( 77 , 1.729287057 , -0.463122749 ), ( 77 , 1.724466368 , -0.450996453 ), ( 77 , 1.728269593 , -0.433998918 ), ( 77 , 1.728243904 , -0.4209513 ), ( 77 , 1.783674085 , -0.404980285 ), ( 77 , 1.770273216 , -0.363947834 ), ( 77 , 1.88566895 , -0.322581574 ), ( 77 , 1.81916102 , -0.368287925 ), ( 77 , 1.877073516 , -0.323817908 ), ( 77 , 1.668576484 , -0.411794091 ), ( 77 , 1.690669649 , -0.386137707 ), ( 77 , 1.653546982 , -0.384581744 ), ( 77 , 1.734192199 , -0.345487721 ), ( 77 , 1.729447635 , -0.325683291 ), ( 77 , 1.713890738 , -0.30910194 ), ( 77 , 1.662106162 , -0.296463011 ), ( 77 , 1.761460385 , -0.280126731 ), ( 77 , 1.716101879 , -0.258559533 ), ( 77 , 1.707194312 , -0.237390888 ), ( 77 , 1.371606123 , -0.46763582 ), ( 77 , 1.369781406 , -0.401221333 ), ( 77 , 1.546821319 , -0.343908606 ), ( 77 , 1.424195346 , -0.36154716 ), ( 77 , 1.4223386 , -0.343657082 ), ( 77 , 1.430940382 , -0.314228022 ), ( 77 , 1.458349481 , -0.320067924 ), ( 77 , 1.477570546 , -0.29530979 ), ( 77 , 1.481682654 , -0.276950291 ), ( 77 , 1.238238037 , -0.355206065 ), ( 77 , 1.293454378 , -0.268443132 ), ( 77 , 1.291441771 , -0.259594158 ), ( 77 , 1.393472334 , -0.187576729 ), ( 77 , 1.5916195 , -0.313394817 ), ( 77 , 1.611293783 , -0.301794666 ), ( 77 , 1.590797591 , -0.244915734 ), ( 77 , 1.561122113 , -0.247995283 ), ( 77 , 1.515090347 , -0.223482845 ), ( 77 , 1.697067258 , -0.196573158 ), ( 77 , 1.735965799 , -0.153272524 ), ( 77 , 1.636517934 , -0.150571544 ), ( 77 , 1.41188337 , -0.181837046 ), ( 77 , 1.412526538 , -0.144680908 ), ( 77 , 1.485905061 , -0.1336807 ), ( 77 , 1.447273908 , -0.123022085 ), ( 77 , 1.476768047 , -0.088047763 ), ( 77 , 1.612288103 , -0.114075712 ), ( 77 , 1.646092947 , -0.093267183 ), ( 77 , 1.578573232 , -0.041081825 ), ( 77 , 1.953095223 , -0.322826333 ), ( 77 , 1.992313957 , -0.252395609 ), ( 77 , 2.00534609 , -0.242348717 ), ( 77 , 1.888262353 , -0.27055699 ), ( 77 , 1.907306674 , -0.244168158 ), ( 77 , 1.905492437 , -0.234828192 ), ( 77 , 2.015995777 , -0.206862839 ), ( 77 , 2.022781419 , -0.177008236 ), ( 77 , 2.031072783 , -0.177337314 ), ( 77 , 1.975481882 , -0.164254686 ), ( 77 , 2.014771171 , -0.124806819 ), ( 77 , 1.894518633 , -0.223574845 ), ( 77 , 1.907281656 , -0.210035194 ), ( 77 , 1.869188689 , -0.206862848 ), ( 77 , 1.879582285 , -0.202005715 ), ( 77 , 1.934075953 , -0.175733688 ), ( 77 , 1.881511992 , -0.159425254 ), ( 77 , 1.890826827 , -0.15467873 ), ( 77 , 1.811644149 , -0.162685174 ), ( 77 , 1.906606231 , -0.131384179 ), ( 77 , 1.969603277 , -0.152541525 ), ( 77 , 2.002163162 , -0.095407135 ), ( 77 , 1.920815218 , -0.107128008 ), ( 77 , 2.174725546 , -0.132142564 ), ( 77 , 2.153603206 , -0.115093271 ), ( 77 , 2.207011824 , -0.072919694 ), ( 77 , 2.172352207 , -0.03151364 ), ( 77 , 2.278335903 , -0.053232309 ), ( 77 , 2.292232405 , -0.045400279 ), ( 77 , 2.236800787 , -0.055483303 ), ( 77 , 2.245482648 , -0.048077306 ), ( 77 , 2.221509934 , -0.00523941 ), ( 77 , 2.214512076 , 0.014462029 ), ( 77 , 2.062021697 , -0.045747474 ), ( 77 , 2.030527216 , -0.008960646 ), ( 77 , 2.038390047 , 0.016036109 ), ( 77 , 2.081595422 , 0.051501852 ), ( 77 , 2.115608591 , 0.072281599 ), ( 77 , 2.115327981 , 0.107967047 ), ( 77 , 2.167529913 , 0.128665287 ), ( 77 , 2.155027197 , 0.134961528 ), ( 77 , 1.772545372 , -0.091636116 ), ( 77 , 1.850052512 , -0.080695111 ), ( 77 , 1.847628329 , -0.074464128 ), ( 77 , 1.781925215 , -0.08206869 ), ( 77 , 1.780187895 , -0.074205106 ), ( 77 , 1.828029468 , -0.07013636 ), ( 77 , 1.745725027 , -0.041219841 ), ( 77 , 1.726133483 , -0.039163317 ), ( 77 , 1.906855527 , -0.027710236 ), ( 77 , 1.838038508 , 0.000185142 ), ( 77 , 1.833596843 , 0.001454887 ), ( 77 , 1.81755943 , 0.001857343 ), ( 77 , 1.830541452 , 0.016000145 ), ( 77 , 1.695582439 , -0.027742158 ), ( 77 , 1.687125409 , -0.018735604 ), ( 77 , 1.759374325 , -0.000370974 ), ( 77 , 1.730502804 , 0.018395617 ), ( 77 , 1.649239974 , 0.003922369 ), ( 77 , 1.613467883 , 0.017112497 ), ( 77 , 1.661590804 , 0.013054564 ), ( 77 , 1.685713744 , 0.040452752 ), ( 77 , 1.735145369 , 0.031615659 ), ( 77 , 1.812047577 , 0.103156752 ), ( 77 , 1.693663581 , 0.103996178 ), ( 77 , 1.76461771 , 0.109632381 ), ( 77 , 1.797250816 , 0.115311133 ), ( 77 , 1.799497 , 0.13780768 ), ( 77 , 1.738231507 , 0.110256049 ), ( 77 , 1.740315261 , 0.139129184 ), ( 77 , 1.77958575 , 0.137578359 ), ( 77 , 1.971698781 , 0.007992093 ), ( 77 , 1.955700743 , 0.0076901 ), ( 77 , 1.960433412 , 0.058996511 ), ( 77 , 2.002026952 , 0.061623013 ), ( 77 , 1.898109275 , 0.083881081 ), ( 77 , 1.965503648 , 0.134725875 ), ( 77 , 2.099737889 , 0.146189893 ), ( 77 , 2.081074476 , 0.203998779 ), ( 77 , 1.909573494 , 0.162168662 ), ( 77 , 1.939829241 , 0.158745859 ), ( 77 , 1.893069403 , 0.165251583 ), ( 77 , 1.814286304 , 0.154940593 ), ( 77 , 1.821543818 , 0.191524064 ), ( 77 , 1.857919374 , 0.195896905 ), ( 77 , 1.867258776 , 0.219412937 ), ( 77 , 1.84499582 , 0.22845003 ), ( 77 , 1.862962395 , 0.23392375 ), ( 77 , 1.859140616 , 0.244097326 ), ( 77 , 1.983273351 , 0.214756477 ), ( 77 , 1.914067941 , 0.250688674 ), ( 77 , 1.953313479 , 0.256148383 ), ( 77 , 1.888458112 , 0.264909575 ), ( 77 , 1.2416497 , -0.280384292 ), ( 77 , 1.09291798 , -0.26230052 ), ( 77 , 1.272742697 , -0.208523394 ), ( 77 , 1.24788468 , -0.121978533 ), ( 77 , 1.089744796 , -0.219228767 ), ( 77 , 1.163633291 , -0.111770752 ), ( 77 , 1.166510687 , -0.101998294 ), ( 77 , 1.157545097 , -0.098645171 ), ( 77 , 1.194043948 , -0.031957558 ), ( 77 , 1.462164126 , -0.090834245 ), ( 77 , 1.344186016 , -0.108546528 ), ( 77 , 1.367801788 , -0.081210613 ), ( 77 , 1.490515678 , -0.065122724 ), ( 77 , 1.546250211 , -0.01878692 ), ( 77 , 1.510612593 , 0.026774964 ), ( 77 , 1.430750801 , 0.01928676 ), ( 77 , 1.409756289 , 0.018445834 ), ( 77 , 1.418909436 , 0.033568134 ), ( 77 , 1.475976314 , 0.034694831 ), ( 77 , 1.345768409 , 0.01636526 ), ( 77 , 1.210539768 , 0.010030739 ), ( 77 , 1.27497878 , 0.02633885 ), ( 77 , 1.292339677 , 0.035665853 ), ( 77 , 1.263414641 , 0.038427713 ), ( 77 , 1.405394439 , 0.062336631 ), ( 77 , 1.471409161 , 0.083227934 ), ( 77 , 1.335560461 , 0.066120641 ), ( 77 , 1.325403357 , 0.115890965 ), ( 77 , 1.405076326 , 0.122413626 ), ( 77 , 1.361442082 , 0.119350332 ), ( 77 , 0.993930454 , -0.084418127 ), ( 77 , 0.971826868 , -0.080380233 ), ( 77 , 0.919157661 , -0.074583807 ), ( 77 , 0.958799761 , -0.027798527 ), ( 77 , 1.101961625 , -0.043840661 ), ( 77 , 0.858438749 , -0.058712587 ), ( 77 , 0.930271224 , -0.032474527 ), ( 77 , 0.828420491 , 0.025902843 ), ( 77 , 0.881763429 , 0.073489938 ), ( 77 , 0.985636299 , 0.003887121 ), ( 77 , 0.910701364 , 0.076044674 ), ( 77 , 0.919552005 , 0.096220962 ), ( 77 , 1.21135052 , 0.086965358 ), ( 77 , 1.113272859 , 0.069067833 ), ( 77 , 1.166626104 , 0.123263132 ), ( 77 , 1.279503006 , 0.149331172 ), ( 77 , 1.118199347 , 0.124949678 ), ( 77 , 1.100756737 , 0.168425706 ), ( 77 , 1.002319047 , 0.184292047 ), ( 77 , 1.087038871 , 0.187886438 ), ( 77 , 1.066022195 , 0.218294084 ), ( 77 , 1.078556469 , 0.214117439 ), ( 77 , 1.132176989 , 0.208849188 ), ( 77 , 1.23945522 , 0.226746095 ), ( 77 , 1.21097928 , 0.264353373 ), ( 77 , 1.133538728 , 0.22838975 ), ( 77 , 1.152838045 , 0.2575779 ), ( 77 , 1.162918615 , 0.299410972 ), ( 77 , 1.592773994 , 0.036831356 ), ( 77 , 1.615158956 , 0.11030557 ), ( 77 , 1.49179221 , 0.087058746 ), ( 77 , 1.640681162 , 0.114072151 ), ( 77 , 1.741780013 , 0.16835308 ), ( 77 , 1.637126374 , 0.147417222 ), ( 77 , 1.603033173 , 0.160452315 ), ( 77 , 1.682531026 , 0.195400449 ), ( 77 , 1.501222756 , 0.113717514 ), ( 77 , 1.521735794 , 0.137467564 ), ( 77 , 1.512647428 , 0.19079002 ), ( 77 , 1.424082481 , 0.157078135 ), ( 77 , 1.447244103 , 0.161023416 ), ( 77 , 1.413269973 , 0.193445514 ), ( 77 , 1.500337445 , 0.199069056 ), ( 77 , 1.581145028 , 0.226073151 ), ( 77 , 1.577268926 , 0.229188187 ), ( 77 , 1.56244849 , 0.224829618 ), ( 77 , 1.613713204 , 0.240542586 ), ( 77 , 1.506989735 , 0.223214902 ), ( 77 , 1.56126768 , 0.256286936 ), ( 77 , 1.556886921 , 0.26320683 ), ( 77 , 1.571887495 , 0.264086743 ), ( 77 , 1.591954711 , 0.29076803 ), ( 77 , 1.575566919 , 0.296555215 ), ( 77 , 1.736826072 , 0.203945256 ), ( 77 , 1.787236243 , 0.230216404 ), ( 77 , 1.851544638 , 0.259638358 ), ( 77 , 1.788231889 , 0.313966457 ), ( 77 , 1.759754333 , 0.316695756 ), ( 77 , 1.761841681 , 0.325606131 ), ( 77 , 1.83781168 , 0.281087048 ), ( 77 , 1.870207768 , 0.319420204 ), ( 77 , 1.875903943 , 0.328893663 ), ( 77 , 1.942390391 , 0.331706719 ), ( 77 , 1.814662419 , 0.322734392 ), ( 77 , 1.822851439 , 0.357205615 ), ( 77 , 1.850401456 , 0.359499694 ), ( 77 , 1.636068611 , 0.292270009 ), ( 77 , 1.701793228 , 0.312527788 ), ( 77 , 1.705888671 , 0.380564168 ), ( 77 , 1.784394581 , 0.358907231 ), ( 77 , 1.734370877 , 0.386567769 ), ( 77 , 1.781524007 , 0.405338726 ), ( 77 , 1.811101764 , 0.393750133 ), ( 77 , 1.816500525 , 0.436495538 ), ( 77 , 1.808535194 , 0.463048264 ), ( 77 , 1.319198791 , 0.242767152 ), ( 77 , 1.287202912 , 0.254709087 ), ( 77 , 1.314873254 , 0.274790763 ), ( 77 , 1.38358182 , 0.285385946 ), ( 77 , 1.473180371 , 0.266067254 ), ( 77 , 1.54220588 , 0.317124851 ), ( 77 , 1.502186893 , 0.328719971 ), ( 77 , 1.513034038 , 0.352093421 ), ( 77 , 1.540124018 , 0.362639792 ), ( 77 , 1.43915374 , 0.321418426 ), ( 77 , 1.277394552 , 0.255217172 ), ( 77 , 1.282501038 , 0.278048894 ), ( 77 , 1.259641672 , 0.290313123 ), ( 77 , 1.330090067 , 0.318589382 ), ( 77 , 1.281649548 , 0.411098285 ), ( 77 , 1.382401679 , 0.351128118 ), ( 77 , 1.399018731 , 0.363549844 ), ( 77 , 1.569518797 , 0.392189605 ), ( 77 , 1.657467931 , 0.436565187 ), ( 77 , 1.652524553 , 0.442410172 ), ( 77 , 1.611225898 , 0.426346725 ), ( 77 , 1.618291353 , 0.454043191 ), ( 77 , 1.542458567 , 0.437613284 ), ( 77 , 1.507751361 , 0.4383669 ), ( 77 , 1.488288681 , 0.424994368 ), ( 77 , 1.530637408 , 0.454729415 ), ( 77 , 1.601535846 , 0.465496638 ), ( 77 , 1.588325438 , 0.481190295 ), ( 77 , 1.649327062 , 0.488809566 ), ( 77 , 1.714935254 , 0.485640033 ), ( 77 , 1.726444537 , 0.493304148 ), ( 77 , 1.619876769 , 0.504532451 ), ( 77 , 1.623555106 , 0.514734696 ), ( 77 , 1.648296658 , 0.509978272 ), ( 77 , 1.59821562 , 0.507830396 ), ( 77 , 1.625773463 , 0.537197136 ), ( 77 , 1.610551324 , 0.545680227 ), ( 77 , 1.617297056 , 0.559346468 ), ( 77 , 1.706035013 , 0.572560024 ), ( 77 , 1.461607898 , 0.470741891 ), ( 77 , 1.521999119 , 0.477587784 ), ( 77 , 1.480266874 , 0.526226389 ), ( 77 , 1.511665141 , 0.569843608 ), ( 77 , 1.45196869 , 0.559085436 ), ( 77 , 1.610340299 , 0.609008385 ), ( 77 , 1.607841482 , 0.613305928 ), ( 77 , 1.524184089 , 0.597089642 ), ( 77 , 1.557326476 , 0.620965327 ), ( 77 , 1.56136629 , 0.65481533 ), ( 77 , 1.612562948 , 0.668388809 ), ( 77 , 3.110118782 , -0.669135149 ), ( 77 , 3.197448191 , -0.654972082 ), ( 77 , 3.075631301 , -0.635472747 ), ( 77 , 3.085657649 , -0.617793251 ), ( 77 , 3.082122881 , -0.606568571 ), ( 77 , 3.164277147 , -0.597059672 ), ( 77 , 3.173791632 , -0.570058186 ), ( 77 , 3.154789211 , -0.553125874 ), ( 77 , 3.053270397 , -0.610552814 ), ( 77 , 3.039565559 , -0.604680244 ), ( 77 , 3.065642597 , -0.517314232 ), ( 77 , 3.088769039 , -0.494333165 ), ( 77 , 3.082026418 , -0.488056653 ), ( 77 , 3.004119674 , -0.556009823 ), ( 77 , 3.060295365 , -0.465425801 ), ( 77 , 3.193881691 , -0.452765108 ), ( 77 , 3.205702761 , -0.432412352 ), ( 77 , 3.123781182 , -0.387185677 ), ( 77 , 3.104706554 , -0.377614026 ), ( 77 , 3.314317602 , -0.415567434 ), ( 77 , 3.290296764 , -0.410951752 ), ( 77 , 3.441182208 , -0.415772783 ), ( 77 , 3.492887498 , -0.364447788 ), ( 77 , 3.210596849 , -0.384945318 ), ( 77 , 3.222070394 , -0.363200062 ), ( 77 , 3.24577423 , -0.335550286 ), ( 77 , 3.263533722 , -0.324801376 ), ( 77 , 3.201563 , -0.354769195 ), ( 77 , 3.186598095 , -0.345048376 ), ( 77 , 3.37354029 , -0.261195256 ), ( 77 , 3.285150316 , -0.290777138 ), ( 77 , 3.302358267 , -0.27178558 ), ( 77 , 2.943634567 , -0.455100962 ), ( 77 , 2.999133289 , -0.421841495 ), ( 77 , 2.915431635 , -0.375568372 ), ( 77 , 2.967911946 , -0.341707349 ), ( 77 , 3.063225418 , -0.296991026 ), ( 77 , 2.919439069 , -0.358028749 ), ( 77 , 2.821089494 , -0.329415094 ), ( 77 , 2.876603266 , -0.30758517 ), ( 77 , 2.886259995 , -0.295774501 ), ( 77 , 2.837982451 , -0.263628478 ), ( 77 , 3.112713785 , -0.289599008 ), ( 77 , 3.113505765 , -0.281263224 ), ( 77 , 3.135311054 , -0.263845413 ), ( 77 , 3.222700382 , -0.251453613 ), ( 77 , 3.209276934 , -0.245605413 ), ( 77 , 3.131962928 , -0.177284617 ), ( 77 , 3.247882783 , -0.182819258 ), ( 77 , 3.188732127 , -0.164017637 ), ( 77 , 3.175544542 , -0.148111106 ), ( 77 , 3.102460785 , -0.161848147 ), ( 77 , 3.067182927 , -0.159170728 ), ( 77 , 3.093814165 , -0.159137266 ), ( 77 , 3.210884025 , -0.107527186 ), ( 77 , 3.083466313 , -0.065322161 ), ( 77 , 3.596981496 , -0.257620273 ), ( 77 , 3.461621565 , -0.235123507 ), ( 77 , 3.553791265 , -0.232950397 ), ( 77 , 3.544809605 , -0.221012916 ), ( 77 , 3.680258224 , -0.191415951 ), ( 77 , 3.389070436 , -0.208458811 ), ( 77 , 3.399040841 , -0.171613398 ), ( 77 , 3.51095821 , -0.085818888 ), ( 77 , 3.450097901 , -0.086253128 ), ( 77 , 3.763999592 , -0.135624959 ), ( 77 , 3.763997423 , -0.135596478 ), ( 77 , 3.716978155 , -0.106930703 ), ( 77 , 3.88360015 , -9.93443E-05 ), ( 77 , 3.635530112 , -0.061827255 ), ( 77 , 3.609863837 , -0.042647239 ), ( 77 , 3.786395841 , 0.06320625 ), ( 77 , 3.783111715 , 0.104051936 ), ( 77 , 3.677358495 , 0.061869641 ), ( 77 , 3.725857065 , 0.124288131 ), ( 77 , 3.349147102 , -0.081705521 ), ( 77 , 3.258509738 , -0.097602939 ), ( 77 , 3.420334763 , -0.05616552 ), ( 77 , 3.484028264 , 0.021741627 ), ( 77 , 3.435357151 , 0.010196957 ), ( 77 , 3.277914219 , 0.023158308 ), ( 77 , 3.207038794 , -0.023153401 ), ( 77 , 3.357379818 , 0.090262632 ), ( 77 , 3.400492058 , 0.113546476 ), ( 77 , 3.274990839 , 0.061229506 ), ( 77 , 3.25465999 , 0.073299992 ), ( 77 , 3.681431388 , 0.148124802 ), ( 77 , 3.601255953 , 0.158077147 ), ( 77 , 3.420828984 , 0.196010046 ), ( 77 , 3.427701114 , 0.230845898 ), ( 77 , 3.461446257 , 0.233719341 ), ( 77 , 3.470183012 , 0.282657965 ), ( 77 , 3.505641076 , 0.301878983 ), ( 77 , 2.825992052 , -0.26605836 ), ( 77 , 2.751282619 , -0.188633376 ), ( 77 , 2.885244054 , -0.170551566 ), ( 77 , 2.837145484 , -0.156872365 ), ( 77 , 2.660035456 , -0.20761435 ), ( 77 , 2.710305072 , -0.152016059 ), ( 77 , 2.627453089 , -0.182046441 ), ( 77 , 2.650261369 , -0.134821738 ), ( 77 , 2.637410973 , -0.126009364 ), ( 77 , 2.712197022 , -0.067359565 ), ( 77 , 2.738388146 , -0.01680582 ), ( 77 , 2.972605573 , -0.07620368 ), ( 77 , 2.879944767 , -0.060577922 ), ( 77 , 2.929186891 , -0.024339464 ), ( 77 , 2.916409877 , -0.01467481 ), ( 77 , 2.890931942 , -0.001631393 ), ( 77 , 2.848191564 , 0.036866629 ), ( 77 , 2.825200681 , 0.043900005 ), ( 77 , 2.833494758 , 0.060042405 ), ( 77 , 2.971124245 , 0.042276241 ), ( 77 , 3.008926239 , 0.065973573 ), ( 77 , 2.989689864 , 0.100170941 ), ( 77 , 2.897167772 , 0.063505462 ), ( 77 , 2.565915543 , -0.142572895 ), ( 77 , 2.495217698 , -0.088664518 ), ( 77 , 2.533033016 , -0.030198924 ), ( 77 , 2.658942976 , 0.041382398 ), ( 77 , 2.396087411 , -0.027718458 ), ( 77 , 2.376538519 , 0.016036587 ), ( 77 , 2.460522672 , 0.02488219 ), ( 77 , 2.459368765 , 0.042060769 ), ( 77 , 2.513590815 , 0.078787493 ), ( 77 , 2.479419147 , 0.103058269 ), ( 77 , 2.5694778 , 0.144892925 ), ( 77 , 2.768721142 , 0.030724418 ), ( 77 , 2.807362196 , 0.075077943 ), ( 77 , 2.74606401 , 0.109195121 ), ( 77 , 2.67690035 , 0.160325597 ), ( 77 , 2.728994873 , 0.194720852 ), ( 77 , 2.782769714 , 0.301564975 ), ( 77 , 3.159966023 , 0.025514281 ), ( 77 , 3.196118275 , 0.059415561 ), ( 77 , 3.17451909 , 0.078768282 ), ( 77 , 3.132026491 , 0.156901404 ), ( 77 , 3.291400523 , 0.190602063 ), ( 77 , 3.204673317 , 0.15326577 ), ( 77 , 3.199271036 , 0.188801992 ), ( 77 , 2.990732101 , 0.138797484 ), ( 77 , 3.04563186 , 0.226142811 ), ( 77 , 3.165230363 , 0.301749219 ), ( 77 , 3.330370598 , 0.176284434 ), ( 77 , 3.312419182 , 0.287627599 ), ( 77 , 3.479987061 , 0.301813713 ), ( 77 , 3.416657236 , 0.404959154 ), ( 77 , 3.277321861 , 0.289966647 ), ( 77 , 3.269617123 , 0.302317801 ), ( 77 , 3.261804239 , 0.311265017 ), ( 77 , 3.220431336 , 0.32175145 ), ( 77 , 3.273033793 , 0.312337483 ), ( 77 , 3.302215478 , 0.353219405 ), ( 77 , 3.335204663 , 0.38383601 ), ( 77 , 3.28064183 , 0.406118624 ), ( 77 , 3.331974489 , 0.448204153 ), ( 77 , 3.338182873 , 0.478101619 ), ( 77 , 2.937830166 , 0.182335994 ), ( 77 , 2.986438525 , 0.277227481 ), ( 77 , 2.905228585 , 0.219300228 ), ( 77 , 2.909169595 , 0.264974613 ), ( 77 , 2.947099085 , 0.263769334 ), ( 77 , 2.986396598 , 0.302705764 ), ( 77 , 2.876030831 , 0.311133728 ), ( 77 , 2.909993381 , 0.357504313 ), ( 77 , 2.946762789 , 0.481204577 ), ( 77 , 3.174171154 , 0.402164055 ), ( 77 , 3.190678943 , 0.432029484 ), ( 77 , 3.130371789 , 0.467071206 ), ( 77 , 3.223101202 , 0.457114461 ), ( 77 , 3.318672945 , 0.530181527 ), ( 77 , 3.187244092 , 0.507335408 ), ( 77 , 3.237679727 , 0.577542594 ), ( 77 , 3.088962434 , 0.477184297 ), ( 77 , 2.997426619 , 0.495799465 ), ( 77 , 3.163913434 , 0.589040313 ), ( 77 , 4.717574921 , -0.703988317 ), ( 77 , 4.73947412 , -0.654498578 ), ( 77 , 4.680665368 , -0.674441338 ), ( 77 , 4.779797305 , -0.611530625 ), ( 77 , 4.777276194 , -0.612266457 ), ( 77 , 4.736802347 , -0.641499576 ), ( 77 , 4.762114942 , -0.581674325 ), ( 77 , 4.664241892 , -0.665299226 ), ( 77 , 4.698307365 , -0.614381933 ), ( 77 , 4.635162639 , -0.624847921 ), ( 77 , 4.635438763 , -0.61958873 ), ( 77 , 4.753590028 , -0.580048354 ), ( 77 , 4.689231508 , -0.591763225 ), ( 77 , 4.843439142 , -0.584605618 ), ( 77 , 4.853730109 , -0.574896744 ), ( 77 , 4.881995434 , -0.532657696 ), ( 77 , 4.823658875 , -0.528023049 ), ( 77 , 4.756251373 , -0.561014769 ), ( 77 , 4.751085674 , -0.501879678 ), ( 77 , 4.76363605 , -0.489257822 ), ( 77 , 4.640836746 , -0.594833461 ), ( 77 , 4.582627953 , -0.560630073 ), ( 77 , 4.567036453 , -0.558895695 ), ( 77 , 4.575726156 , -0.547760395 ), ( 77 , 4.594530087 , -0.530202813 ), ( 77 , 4.749826117 , -0.486323959 ), ( 77 , 4.751236757 , -0.484914974 ), ( 77 , 4.732039674 , -0.46861088 ), ( 77 , 4.758463161 , -0.454361071 ), ( 77 , 4.784692183 , -0.417185406 ), ( 77 , 4.738909502 , -0.422291767 ), ( 77 , 4.754298487 , -0.411338819 ), ( 77 , 4.69571912 , -0.392008028 ), ( 77 , 4.928874647 , -0.473422576 ), ( 77 , 4.959213881 , -0.404033071 ), ( 77 , 4.894951263 , -0.425060552 ), ( 77 , 5.002714408 , -0.405847958 ), ( 77 , 5.023584617 , -0.355127799 ), ( 77 , 5.061402027 , -0.338005796 ), ( 77 , 5.082583495 , -0.324924504 ), ( 77 , 5.041549901 , -0.345351287 ), ( 77 , 4.989687227 , -0.351311043 ), ( 77 , 4.790039788 , -0.406263392 ), ( 77 , 4.842656831 , -0.365692952 ), ( 77 , 4.871859116 , -0.327911906 ), ( 77 , 4.790811951 , -0.326420545 ), ( 77 , 4.882739858 , -0.262484969 ), ( 77 , 4.920730787 , -0.215195624 ), ( 77 , 4.522131373 , -0.381513226 ), ( 77 , 4.666982124 , -0.349186334 ), ( 77 , 4.679186997 , -0.315730682 ), ( 77 , 4.6121374 , -0.331482027 ), ( 77 , 4.437770491 , -0.341050135 ), ( 77 , 4.381126402 , -0.323606065 ), ( 77 , 4.531983941 , -0.2797732 ), ( 77 , 4.505248294 , -0.179387182 ), ( 77 , 4.749386519 , -0.286525277 ), ( 77 , 4.849549847 , -0.209824011 ), ( 77 , 4.62295873 , -0.238232356 ), ( 77 , 4.754327351 , -0.098682129 ), ( 77 , 4.750647692 , -0.069654974 ), ( 77 , 5.123676724 , -0.284804729 ), ( 77 , 5.105246017 , -0.278828557 ), ( 77 , 5.041537484 , -0.280986952 ), ( 77 , 5.069083118 , -0.244930026 ), ( 77 , 5.021571151 , -0.263157776 ), ( 77 , 5.114331239 , -0.196782654 ), ( 77 , 5.234092291 , -0.204504282 ), ( 77 , 5.242069922 , -0.165587456 ), ( 77 , 5.149119786 , -0.139296582 ), ( 77 , 5.215129939 , -0.136254515 ), ( 77 , 5.227081065 , -0.112482457 ), ( 77 , 4.988888229 , -0.221824502 ), ( 77 , 5.0016944 , -0.203322233 ), ( 77 , 4.928520632 , -0.181167276 ), ( 77 , 4.970397332 , -0.156569492 ), ( 77 , 4.995593909 , -0.141770386 ), ( 77 , 5.015311366 , -0.120633396 ), ( 77 , 5.147285179 , -0.117092776 ), ( 77 , 5.096781061 , -0.007304137 ), ( 77 , 5.318635355 , -0.115875002 ), ( 77 , 5.432143702 , 0.005085809 ), ( 77 , 5.375209294 , -0.002692136 ), ( 77 , 5.396178957 , 0.043560625 ), ( 77 , 5.152745457 , -0.032642111 ), ( 77 , 5.131313558 , 0.001544896 ), ( 77 , 5.196338206 , 0.014736412 ), ( 77 , 5.237590711 , 0.029639109 ), ( 77 , 5.339869434 , 0.115580988 ), ( 77 , 5.248124688 , 0.058067354 ), ( 77 , 5.29435548 , 0.092665222 ), ( 77 , 5.285921073 , 0.105968906 ), ( 77 , 5.331771305 , 0.125171289 ), ( 77 , 4.89782349 , -0.022792963 ), ( 77 , 5.036595827 , -0.019918215 ), ( 77 , 5.013597504 , 0.023607198 ), ( 77 , 4.776146658 , -0.045425183 ), ( 77 , 4.893225096 , 0.009847406 ), ( 77 , 4.761579305 , -0.011508101 ), ( 77 , 4.912990563 , 0.02298635 ), ( 77 , 4.938439124 , 0.052884299 ), ( 77 , 4.901931775 , 0.066068066 ), ( 77 , 4.95484764 , 0.077409575 ), ( 77 , 4.836998565 , 0.084624321 ), ( 77 , 4.857675159 , 0.095041517 ), ( 77 , 4.898979899 , 0.09925724 ), ( 77 , 5.159968668 , 0.086460905 ), ( 77 , 5.132924892 , 0.073078933 ), ( 77 , 5.127033304 , 0.075244809 ), ( 77 , 5.023304025 , 0.073147323 ), ( 77 , 5.134510274 , 0.131788582 ), ( 77 , 5.236969152 , 0.127198751 ), ( 77 , 5.203200258 , 0.159363764 ), ( 77 , 5.262309962 , 0.158707053 ), ( 77 , 5.273297295 , 0.175473909 ), ( 77 , 5.152605535 , 0.208117181 ), ( 77 , 5.226947097 , 0.202281211 ), ( 77 , 5.215003553 , 0.208731685 ), ( 77 , 5.185672012 , 0.21621181 ), ( 77 , 4.989593908 , 0.144752112 ), ( 77 , 5.077019099 , 0.144557752 ), ( 77 , 5.044491458 , 0.162801913 ), ( 77 , 5.069685265 , 0.19060837 ), ( 77 , 4.984786896 , 0.168128225 ), ( 77 , 4.942582583 , 0.161264838 ), ( 77 , 4.94581933 , 0.168573084 ), ( 77 , 4.950114489 , 0.185570667 ), ( 77 , 4.9981654 , 0.196694098 ), ( 77 , 5.079183582 , 0.199686335 ), ( 77 , 5.134363547 , 0.233219248 ), ( 77 , 5.067097868 , 0.255404978 ), ( 77 , 5.05438484 , 0.25262845 ), ( 77 , 5.040648886 , 0.263235592 ), ( 77 , 5.078217202 , 0.279499824 ), ( 77 , 5.108700931 , 0.318533989 ), ( 77 , 4.294380277 , -0.207659616 ), ( 77 , 4.293790509 , -0.192396435 ), ( 77 , 4.460956009 , -0.191148653 ), ( 77 , 4.432354705 , -0.106878834 ), ( 77 , 4.224887667 , -0.24032593 ), ( 77 , 4.231946571 , -0.224897048 ), ( 77 , 4.206956479 , -0.173134967 ), ( 77 , 4.235939116 , -0.144850913 ), ( 77 , 4.356452053 , -0.124847243 ), ( 77 , 4.339198737 , -0.107098457 ), ( 77 , 4.642634526 , -0.031539614 ), ( 77 , 4.566943776 , -0.017484409 ), ( 77 , 4.494975736 , -0.013267485 ), ( 77 , 4.360093854 , -0.030677991 ), ( 77 , 4.372582834 , 0.021670062 ), ( 77 , 4.421783628 , 0.023531947 ), ( 77 , 4.542407118 , 0.08061221 ), ( 77 , 4.47493153 , 0.065753495 ), ( 77 , 4.527211956 , 0.118011928 ), ( 77 , 4.187829864 , -0.106948754 ), ( 77 , 4.219412306 , -0.067682924 ), ( 77 , 4.200603721 , -0.063856193 ), ( 77 , 4.285720938 , 0.008692721 ), ( 77 , 4.200654917 , -0.007196252 ), ( 77 , 4.456920561 , 0.194786588 ), ( 77 , 4.26034271 , 0.140252432 ), ( 77 , 4.377478636 , 0.224766164 ), ( 77 , 4.376199065 , 0.273217206 ), ( 77 , 4.73219331 , 0.021601519 ), ( 77 , 4.683243305 , 0.04656535 ), ( 77 , 4.67942812 , 0.052258674 ), ( 77 , 4.777301745 , 0.064108388 ), ( 77 , 4.768310653 , 0.101619558 ), ( 77 , 4.684450367 , 0.084803868 ), ( 77 , 4.649386402 , 0.099756599 ), ( 77 , 4.653951018 , 0.10682399 ), ( 77 , 4.659498715 , 0.111736075 ), ( 77 , 4.677545372 , 0.117458172 ), ( 77 , 4.870305839 , 0.196228994 ), ( 77 , 4.758750341 , 0.133264287 ), ( 77 , 4.839065711 , 0.203337574 ), ( 77 , 4.630696675 , 0.103544667 ), ( 77 , 4.616436073 , 0.113153115 ), ( 77 , 4.596994312 , 0.125284704 ), ( 77 , 4.578091079 , 0.190227047 ), ( 77 , 4.633816535 , 0.185580784 ), ( 77 , 4.618237075 , 0.222310645 ), ( 77 , 4.623679846 , 0.231844687 ), ( 77 , 4.752493685 , 0.24480002 ), ( 77 , 4.728035863 , 0.245960223 ), ( 77 , 4.658364695 , 0.262411398 ), ( 77 , 4.735560172 , 0.273094077 ), ( 77 , 4.7242335 , 0.293490189 ), ( 77 , 4.696698194 , 0.319870286 ), ( 77 , 4.689157738 , 0.317398726 ), ( 77 , 4.889967745 , 0.191378316 ), ( 77 , 4.869257267 , 0.204697986 ), ( 77 , 4.899591937 , 0.236782216 ), ( 77 , 4.930719205 , 0.267251505 ), ( 77 , 5.025574438 , 0.315690473 ), ( 77 , 4.950979952 , 0.346317318 ), ( 77 , 5.009709368 , 0.380121432 ), ( 77 , 4.877360595 , 0.321865918 ), ( 77 , 4.862201317 , 0.326197078 ), ( 77 , 4.737666153 , 0.362507365 ), ( 77 , 4.821125411 , 0.369969288 ), ( 77 , 4.800977781 , 0.367802732 ), ( 77 , 4.847578762 , 0.377939609 ), ( 77 , 4.825595783 , 0.377097267 ), ( 77 , 4.908501504 , 0.393782355 ), ( 77 , 4.906507533 , 0.410392891 ), ( 77 , 4.869160221 , 0.397161851 ), ( 77 , 4.891258821 , 0.433280342 ), ( 77 , 4.874584809 , 0.426426958 ), ( 77 , 4.939793164 , 0.475786038 ), ( 77 , 4.899433913 , 0.493976094 ), ( 77 , 4.534740578 , 0.194993454 ), ( 77 , 4.553705451 , 0.23382692 ), ( 77 , 4.437994272 , 0.256102487 ), ( 77 , 4.524672976 , 0.276122933 ), ( 77 , 4.55313459 , 0.295012477 ), ( 77 , 4.610285592 , 0.286197497 ), ( 77 , 4.602807742 , 0.310821551 ), ( 77 , 4.666885951 , 0.360187029 ), ( 77 , 4.668530292 , 0.36424617 ), ( 77 , 4.667477665 , 0.365170013 ), ( 77 , 4.639332768 , 0.37707522 ), ( 77 , 4.446584226 , 0.308720541 ), ( 77 , 4.437623635 , 0.318239408 ), ( 77 , 4.411907561 , 0.315513701 ), ( 77 , 4.401336417 , 0.319728303 ), ( 77 , 4.464045072 , 0.376330505 ), ( 77 , 4.430413492 , 0.37511249 ), ( 77 , 4.503393999 , 0.370516528 ), ( 77 , 4.496447154 , 0.370285097 ), ( 77 , 4.509507848 , 0.396985039 ), ( 77 , 4.562982919 , 0.476525877 ), ( 77 , 4.55006509 , 0.486241767 ), ( 77 , 4.702650312 , 0.355103895 ), ( 77 , 4.737227853 , 0.373960192 ), ( 77 , 4.684480745 , 0.432446151 ), ( 77 , 4.623723394 , 0.426099605 ), ( 77 , 4.871919855 , 0.531319338 ), ( 77 , 4.861450317 , 0.532873925 ), ( 77 , 4.762171296 , 0.517844605 ), ( 77 , 4.748475646 , 0.518204612 ), ( 77 , 4.773830095 , 0.550482949 ), ( 77 , 4.817837384 , 0.60204321 ), ( 77 , 4.659024272 , 0.501911614 ), ( 77 , 4.659219123 , 0.529764045 ), ( 77 , 4.668214617 , 0.541702647 ), ( 77 , 4.621443933 , 0.556517649 ), ( 77 , 4.710193358 , 0.536303093 ), ( 77 , 4.729408365 , 0.627804905 ), ( 77 , 0.970973091 , -1.488102135 ), ( 77 , 0.425005657 , -1.436092871 ), ( 77 , 0.828573505 , -1.45789801 ), ( 77 , 1.354527781 , -1.403372248 ), ( 77 , 1.317437126 , -1.337435248 ), ( 77 , 0.907480025 , -1.354604642 ), ( 77 , 0.478272057 , -1.419986643 ), ( 77 , 0.51007064 , -1.315376023 ), ( 77 , 0.346243554 , -1.329050345 ), ( 77 , 0.459609403 , -1.283744311 ), ( 77 , 0.835495896 , -1.30315716 ), ( 77 , 1.388671247 , -1.303726561 ), ( 77 , 1.31186548 , -1.232617242 ), ( 77 , 1.531565826 , -1.220035796 ), ( 77 , 1.499340402 , -1.188238193 ), ( 77 , 1.260834138 , -1.181835513 ), ( 77 , 1.311390409 , -1.123900052 ), ( 77 , 1.058620753 , -1.203353341 ), ( 77 , 0.98185722 , -1.222162902 ), ( 77 , 0.975233448 , -1.075581466 ), ( 77 , 0.942506245 , -1.074111752 ), ( 77 , 1.064135332 , -0.966911107 ), ( 77 , 0.03156547 , -1.339208059 ), ( 77 , 0.192598646 , -1.296178575 ), ( 77 , 0.386992378 , -1.189883597 ), ( 77 , 0.634881072 , -1.22350669 ), ( 77 , 0.567928914 , -1.123206398 ), ( 77 , 0.020385054 , -1.228788215 ), ( 77 , 0.002824197 , -1.163844236 ), ( 77 , 0.479087644 , -1.123749425 ), ( 77 , 0.543276785 , -1.018300485 ), ( 77 , 0.438097632 , -1.064635732 ), ( 77 , 0.928226745 , -1.057216304 ), ( 77 , 0.928231568 , -1.05721528 ), ( 77 , 0.867921543 , -1.011908982 ), ( 77 , 0.938696887 , -1.008972927 ), ( 77 , 0.951587615 , -0.999816808 ), ( 77 , 0.891831501 , -1.004454147 ), ( 77 , 1.010288544 , -0.982513191 ), ( 77 , 1.018302883 , -0.957324977 ), ( 77 , 0.693538814 , -0.957091916 ), ( 77 , 0.829339799 , -0.887189073 ), ( 77 , 0.80527879 , -0.89573093 ), ( 77 , 0.85029139 , -0.88230037 ), ( 77 , 0.709899071 , -0.86794491 ), ( 77 , 0.719698865 , -0.849446739 ), ( 77 , 1.542439512 , -1.105084397 ), ( 77 , 1.509794092 , -1.068659359 ), ( 77 , 1.501971682 , -0.972064152 ), ( 77 , 1.403261145 , -0.930505432 ), ( 77 , 1.265875241 , -1.026270373 ), ( 77 , 1.257478114 , -0.991649264 ), ( 77 , 1.109105385 , -0.980462781 ), ( 77 , 1.051516293 , -0.949319551 ), ( 77 , 1.10741019 , -0.900473081 ), ( 77 , 1.300128473 , -0.882714344 ), ( 77 , 1.558369537 , -0.932312555 ), ( 77 , 1.549011988 , -0.889918796 ), ( 77 , 1.526823928 , -0.890795276 ), ( 77 , 1.475463983 , -0.804758401 ), ( 77 , 1.45272374 , -0.832337947 ), ( 77 , 1.545504324 , -0.823542523 ), ( 77 , 1.492898981 , -0.759359949 ), ( 77 , 1.361643141 , -0.727226125 ), ( 77 , 1.250746902 , -0.734656671 ), ( 77 , 1.030121773 , -0.833812132 ), ( 77 , 1.125757679 , -0.796754672 ), ( 77 , 1.06357163 , -0.780734618 ), ( 77 , 0.961354536 , -0.754696408 ), ( 77 , 0.965983946 , -0.728731954 ), ( 77 , 0.808548046 , -0.715308455 ), ( 77 , 0.980682822 , -0.677495077 ), ( 77 , 0.973539154 , -0.646538126 ), ( 77 , 1.176476242 , -0.682270388 ), ( 77 , 1.222760392 , -0.677311312 ), ( 77 , 1.264802211 , -0.612757561 ), ( 77 , 1.19823387 , -0.587231224 ), ( 77 , 1.185061575 , -0.550126715 ), ( 77 , 1.276864353 , -0.535128523 ), ( 77 , 1.252194578 , -0.513258661 ), ( 77 , 1.089025923 , -0.575533141 ), ( 77 , 1.083354353 , -0.573456954 ), ( 77 , 1.057507049 , -0.497961013 ), ( 77 , 1.053098019 , -0.462805211 ), ( 77 , 1.18734612 , -0.502780086 ), ( 77 , 1.142290871 , -0.379973937 ), ( 77 , 1.169021848 , -0.37532608 ), ( 77 , 0.042280994 , -1.109856601 ), ( 77 , 0.276201111 , -1.048925914 ), ( 77 , 0.077186831 , -1.061147788 ), ( 77 , 0.358481354 , -1.031955399 ), ( 77 , 0.325904842 , -1.001540339 ), ( 77 , 0.435544082 , -0.962532852 ), ( 77 , 0.484281256 , -0.947382056 ), ( 77 , 0.032150876 , -0.991993736 ), ( 77 , 0.214645409 , -0.938541147 ), ( 77 , 0.105595693 , -0.95237509 ), ( 77 , 0.193554939 , -0.867541751 ), ( 77 , 0.261188614 , -0.86831175 ), ( 77 , 0.382181419 , -0.80549845 ), ( 77 , 0.712864296 , -0.779361595 ), ( 77 , 0.468186525 , -0.744192493 ), ( 77 , 0.474190789 , -0.674712602 ), ( 77 , 0.588170554 , -0.655075717 ), ( 77 , 0.644490766 , -0.591606049 ), ( 77 , 0.581620917 , -0.629387046 ), ( 77 , 0.022339801 , -0.910235294 ), ( 77 , 0.085443937 , -0.880159304 ), ( 77 , 0.197835214 , -0.852348876 ), ( 77 , 0.003902305 , -0.880456379 ), ( 77 , 0.084397113 , -0.811560185 ), ( 77 , 0.239864615 , -0.789238931 ), ( 77 , 0.334676521 , -0.718733574 ), ( 77 , 0.023851914 , -0.748526285 ), ( 77 , 0.057464935 , -0.751629192 ), ( 77 , 0.025653679 , -0.728737783 ), ( 77 , 0.066552254 , -0.699807829 ), ( 77 , 0.151304199 , -0.663155614 ), ( 77 , 0.43038907 , -0.561461909 ), ( 77 , 0.56599001 , -0.506266438 ), ( 77 , 0.458286926 , -0.547788537 ), ( 77 , 0.377349783 , -0.528409082 ), ( 77 , 0.209212114 , -0.51214444 ), ( 77 , 0.293158854 , -0.433804401 ), ( 77 , 0.384131434 , -0.473139502 ), ( 77 , 0.771165529 , -0.640527337 ), ( 77 , 0.773231298 , -0.635874773 ), ( 77 , 0.872480871 , -0.593619631 ), ( 77 , 0.902064354 , -0.498480515 ), ( 77 , 0.888643024 , -0.487470635 ), ( 77 , 0.863274646 , -0.459938067 ), ( 77 , 0.67284598 , -0.578019173 ), ( 77 , 0.700363832 , -0.549211533 ), ( 77 , 0.672715914 , -0.550197071 ), ( 77 , 0.747783152 , -0.531239741 ), ( 77 , 0.711487497 , -0.542279412 ), ( 77 , 0.705361193 , -0.524662529 ), ( 77 , 0.625001798 , -0.521329612 ), ( 77 , 0.661312926 , -0.480042289 ), ( 77 , 0.76539591 , -0.452622997 ), ( 77 , 0.825654197 , -0.466274906 ), ( 77 , 0.801934064 , -0.372832043 ), ( 77 , 0.762359121 , -0.36994215 ), ( 77 , 1.139220575 , -0.370852773 ), ( 77 , 1.118375998 , -0.311974152 ), ( 77 , 1.065947285 , -0.339802982 ), ( 77 , 1.02874821 , -0.339171991 ), ( 77 , 1.046218981 , -0.312625252 ), ( 77 , 1.086721426 , -0.277348238 ), ( 77 , 0.808148338 , -0.333032718 ), ( 77 , 0.92252911 , -0.292845794 ), ( 77 , 0.891944561 , -0.273223214 ), ( 77 , 0.990193684 , -0.252694752 ), ( 77 , 0.96370059 , -0.220182009 ), ( 77 , 0.682827546 , -0.417470086 ), ( 77 , 0.676624183 , -0.301757886 ), ( 77 , 0.519262018 , -0.3999991 ), ( 77 , 0.492369991 , -0.340472799 ), ( 77 , 0.544449754 , -0.301725905 ), ( 77 , 0.433508196 , -0.310555701 ), ( 77 , 0.58171188 , -0.260186421 ), ( 77 , 0.622907827 , -0.26007505 ), ( 77 , 0.844816577 , -0.238051497 ), ( 77 , 0.886940298 , -0.198042781 ), ( 77 , 0.93214463 , -0.129415288 ), ( 77 , 0.724291347 , -0.086505752 ), ( 77 , 0.7986308 , -0.036415153 ), ( 77 , 0.757411476 , -0.028642001 ), ( 77 , 2.785176293 , -1.516636599 ), ( 77 , 1.831515152 , -1.461742916 ), ( 77 , 2.876319302 , -1.423418362 ), ( 77 , 2.879616712 , -1.395395045 ), ( 77 , 2.946464435 , -1.352951432 ), ( 77 , 2.570634166 , -1.366276492 ), ( 77 , 2.774597504 , -1.322837125 ), ( 77 , 1.767825864 , -1.44680406 ), ( 77 , 2.235048967 , -1.342643291 ), ( 77 , 1.806672155 , -1.357526354 ), ( 77 , 2.415612009 , -1.319301784 ), ( 77 , 2.330009805 , -1.306984626 ), ( 77 , 2.384659925 , -1.304702739 ), ( 77 , 2.499397168 , -1.268437816 ), ( 77 , 2.495112068 , -1.264812025 ), ( 77 , 2.480278232 , -1.264007454 ), ( 77 , 2.905802653 , -1.328723381 ), ( 77 , 2.895279127 , -1.250171824 ), ( 77 , 3.003464578 , -1.241236735 ), ( 77 , 2.816693222 , -1.30913736 ), ( 77 , 2.810704795 , -1.257761971 ), ( 77 , 2.622735971 , -1.262184743 ), ( 77 , 2.725236375 , -1.249861997 ), ( 77 , 2.848919068 , -1.206399663 ), ( 77 , 2.772904012 , -1.218542803 ), ( 77 , 2.723770683 , -1.189083242 ), ( 77 , 3.103833514 , -1.201845554 ), ( 77 , 3.001997971 , -1.155231038 ), ( 77 , 2.882547264 , -1.152442933 ), ( 77 , 2.824566153 , -1.150481349 ), ( 77 , 2.854065848 , -1.082844698 ), ( 77 , 2.852269643 , -1.076265794 ), ( 77 , 2.683907074 , -1.174354524 ), ( 77 , 2.441220446 , -1.176898965 ), ( 77 , 2.528356115 , -1.104007186 ), ( 77 , 2.667059509 , -1.07806212 ), ( 77 , 2.784249516 , -1.100520625 ), ( 77 , 2.736531625 , -1.082443005 ), ( 77 , 2.743747593 , -1.062812371 ), ( 77 , 2.71872554 , -1.069287014 ), ( 77 , 2.72455607 , -1.050537719 ), ( 77 , 2.706829275 , -1.055127639 ), ( 77 , 2.715503395 , -1.042929312 ), ( 77 , 2.706100351 , -1.041190885 ), ( 77 , 2.613470562 , -1.087628693 ), ( 77 , 2.6569159 , -1.068009553 ), ( 77 , 2.631678827 , -1.044423154 ), ( 77 , 2.568818301 , -1.04950838 ), ( 77 , 2.669566201 , -1.032447362 ), ( 77 , 2.70473125 , -1.003687854 ), ( 77 , 2.62926258 , -0.981863731 ), ( 77 , 2.654838401 , -0.985010357 ), ( 77 , 2.034636217 , -1.251748454 ), ( 77 , 1.617520487 , -1.274314665 ), ( 77 , 2.159148264 , -1.215142995 ), ( 77 , 2.190015243 , -1.175209202 ), ( 77 , 2.27353935 , -1.122852152 ), ( 77 , 2.033533009 , -1.176908381 ), ( 77 , 2.114125826 , -1.173001707 ), ( 77 , 2.134547252 , -1.130557081 ), ( 77 , 2.227527775 , -1.100988608 ), ( 77 , 2.120816476 , -1.123585371 ), ( 77 , 1.65084523 , -1.207116614 ), ( 77 , 1.876995596 , -1.125022077 ), ( 77 , 1.676791647 , -1.146259705 ), ( 77 , 1.711123554 , -1.139962223 ), ( 77 , 1.969606184 , -1.123501986 ), ( 77 , 2.030949128 , -1.120398922 ), ( 77 , 2.126712417 , -1.053284198 ), ( 77 , 2.082840527 , -1.060591665 ), ( 77 , 2.126731206 , -1.03738745 ), ( 77 , 2.048409016 , -1.036417667 ), ( 77 , 2.081120247 , -1.002351941 ), ( 77 , 2.126267924 , -0.988687833 ), ( 77 , 2.058651797 , -0.972190497 ), ( 77 , 2.336820179 , -1.06823026 ), ( 77 , 2.408113117 , -1.052476813 ), ( 77 , 2.388481751 , -1.03235655 ), ( 77 , 2.339985466 , -1.055433491 ), ( 77 , 2.219744705 , -1.049336569 ), ( 77 , 2.522002482 , -1.036702019 ), ( 77 , 2.480444087 , -1.03236007 ), ( 77 , 2.484816465 , -0.986758821 ), ( 77 , 2.478166219 , -0.965775187 ), ( 77 , 2.544738749 , -0.943800126 ), ( 77 , 2.528062324 , -0.92403426 ), ( 77 , 2.536239604 , -0.901157129 ), ( 77 , 2.408805834 , -0.941815478 ), ( 77 , 2.359198417 , -0.94880138 ), ( 77 , 2.402881225 , -0.925823171 ), ( 77 , 2.457056282 , -0.923032244 ), ( 77 , 2.459533917 , -0.915019208 ), ( 77 , 2.514340522 , -0.917079761 ), ( 77 , 2.454258173 , -0.876771479 ), ( 77 , 2.475063001 , -0.852527238 ), ( 77 , 2.24658444 , -1.026191973 ), ( 77 , 2.223489539 , -0.967204544 ), ( 77 , 2.261935358 , -0.93761889 ), ( 77 , 2.282265269 , -0.926381887 ), ( 77 , 2.17527115 , -0.919903259 ), ( 77 , 2.355052798 , -0.946615564 ), ( 77 , 2.340129773 , -0.920185622 ), ( 77 , 2.385501203 , -0.916796904 ), ( 77 , 2.38109693 , -0.87518622 ), ( 77 , 2.330568025 , -0.902325453 ), ( 77 , 2.425627556 , -0.872201397 ), ( 77 , 2.417658524 , -0.863604609 ), ( 77 , 2.445986321 , -0.830196576 ), ( 77 , 2.384876149 , -0.836346974 ), ( 77 , 2.295042176 , -0.849751734 ), ( 77 , 2.273403951 , -0.838934723 ), ( 77 , 2.329641502 , -0.791979477 ), ( 77 , 2.318815358 , -0.796269074 ), ( 77 , 3.11779035 , -1.111785845 ), ( 77 , 2.98736443 , -1.075946999 ), ( 77 , 3.095379276 , -1.054628641 ), ( 77 , 3.065773315 , -1.054540862 ), ( 77 , 3.058853387 , -1.063312833 ), ( 77 , 2.946295066 , -1.050071106 ), ( 77 , 2.916483854 , -1.036945405 ), ( 77 , 2.886755376 , -1.065503094 ), ( 77 , 2.893222185 , -1.061593564 ), ( 77 , 2.901847231 , -1.042199144 ), ( 77 , 2.901491863 , -1.030060113 ), ( 77 , 2.906249986 , -1.024293512 ), ( 77 , 2.942656818 , -1.008820404 ), ( 77 , 2.979234555 , -1.0177855 ), ( 77 , 2.970193923 , -1.01782974 ), ( 77 , 2.979563103 , -1.005958424 ), ( 77 , 2.936998797 , -0.984540961 ), ( 77 , 3.072842857 , -1.019994 ), ( 77 , 3.082488563 , -1.012833399 ), ( 77 , 3.030904093 , -0.997500349 ), ( 77 , 3.07550543 , -0.967991533 ), ( 77 , 2.909099774 , -0.924165091 ), ( 77 , 2.818025599 , -1.038273516 ), ( 77 , 2.812431856 , -1.042617811 ), ( 77 , 2.787960248 , -1.034437044 ), ( 77 , 2.85665142 , -0.952256438 ), ( 77 , 2.817536744 , -0.935995483 ), ( 77 , 2.707952112 , -0.997800119 ), ( 77 , 2.649135977 , -0.95231678 ), ( 77 , 2.707353824 , -0.89796806 ), ( 77 , 2.685942435 , -0.859122423 ), ( 77 , 2.694935784 , -0.84505042 ), ( 77 , 2.878770131 , -0.937041234 ), ( 77 , 2.839777139 , -0.915798276 ), ( 77 , 2.859305682 , -0.918973684 ), ( 77 , 2.821464976 , -0.891026889 ), ( 77 , 2.883430608 , -0.855564868 ), ( 77 , 2.832427596 , -0.816434499 ), ( 77 , 2.780573238 , -0.835806951 ), ( 77 , 2.732199898 , -0.795206726 ), ( 77 , 3.093537645 , -0.89724882 ), ( 77 , 3.051634884 , -0.897528537 ), ( 77 , 2.934690466 , -0.819718494 ), ( 77 , 3.010743052 , -0.779999222 ), ( 77 , 3.119051596 , -0.761153246 ), ( 77 , 3.121459612 , -0.731354648 ), ( 77 , 3.12145088 , -0.731354558 ), ( 77 , 2.979006229 , -0.74958365 ), ( 77 , 3.041574477 , -0.680595329 ), ( 77 , 3.043353874 , -0.641003536 ), ( 77 , 2.872780545 , -0.784254937 ), ( 77 , 2.880965406 , -0.754883049 ), ( 77 , 2.852761627 , -0.752544371 ), ( 77 , 2.929787548 , -0.758519475 ), ( 77 , 2.922239857 , -0.756299684 ), ( 77 , 2.81742359 , -0.724266548 ), ( 77 , 2.787294066 , -0.709866209 ), ( 77 , 3.029698784 , -0.631890552 ), ( 77 , 2.97015061 , -0.623432593 ), ( 77 , 2.927937593 , -0.632257203 ), ( 77 , 2.924978539 , -0.629977648 ), ( 77 , 2.639327159 , -0.908011114 ), ( 77 , 2.57578976 , -0.880263088 ), ( 77 , 2.604294105 , -0.832112019 ), ( 77 , 2.552051465 , -0.872844665 ), ( 77 , 2.526219319 , -0.856273742 ), ( 77 , 2.485151658 , -0.850224372 ), ( 77 , 2.555361597 , -0.801297865 ), ( 77 , 2.662345938 , -0.799180283 ), ( 77 , 2.632335448 , -0.765145949 ), ( 77 , 2.723598962 , -0.768611284 ), ( 77 , 2.576061851 , -0.729122907 ), ( 77 , 2.670144533 , -0.698035418 ), ( 77 , 2.680018252 , -0.686679345 ), ( 77 , 2.488500976 , -0.782950941 ), ( 77 , 2.448084595 , -0.786126423 ), ( 77 , 2.379705516 , -0.735952711 ), ( 77 , 2.45370003 , -0.687313272 ), ( 77 , 2.553145385 , -0.718403983 ), ( 77 , 2.559412451 , -0.709986475 ), ( 77 , 2.563352086 , -0.658418527 ), ( 77 , 2.576646011 , -0.632886109 ), ( 77 , 2.597038356 , -0.582302834 ), ( 77 , 2.500900271 , -0.635381047 ), ( 77 , 2.515180666 , -0.63359571 ), ( 77 , 2.484823926 , -0.593937021 ), ( 77 , 2.751133986 , -0.681792755 ), ( 77 , 2.816275235 , -0.652618407 ), ( 77 , 2.806297928 , -0.610941737 ), ( 77 , 2.739260302 , -0.600388931 ), ( 77 , 2.902502859 , -0.531201581 ), ( 77 , 2.912356239 , -0.497266089 ), ( 77 , 2.877185321 , -0.467197669 ), ( 77 , 2.832884307 , -0.46800985 ), ( 77 , 2.643621127 , -0.476036368 ), ( 77 , 2.65598844 , -0.436101025 ), ( 77 , 2.765713755 , -0.477344701 ), ( 77 , 2.776912495 , -0.466571885 ), ( 77 , 2.727417516 , -0.460034997 ), ( 77 , 2.706217813 , -0.403214291 ), ( 77 , 1.614934745 , -1.139897263 ), ( 77 , 1.662077042 , -1.088286089 ), ( 77 , 1.835735683 , -1.067123374 ), ( 77 , 1.833812801 , -1.062252827 ), ( 77 , 1.626628772 , -1.046066193 ), ( 77 , 1.746918845 , -1.031893317 ), ( 77 , 1.90092433 , -1.026349579 ), ( 77 , 1.917897972 , -1.002669994 ), ( 77 , 1.917084952 , -0.976871383 ), ( 77 , 2.010102429 , -0.971303397 ), ( 77 , 1.903565569 , -0.94642365 ), ( 77 , 1.967148856 , -0.892895902 ), ( 77 , 1.732769038 , -0.913633422 ), ( 77 , 1.779652888 , -0.856265177 ), ( 77 , 1.912036205 , -0.891017295 ), ( 77 , 1.88289388 , -0.862516011 ), ( 77 , 1.859177775 , -0.802309613 ), ( 77 , 2.091658578 , -0.917043608 ), ( 77 , 2.08557964 , -0.912707287 ), ( 77 , 2.19305904 , -0.856104671 ), ( 77 , 2.224101715 , -0.838215563 ), ( 77 , 2.142238476 , -0.846501476 ), ( 77 , 2.196781952 , -0.796075924 ), ( 77 , 2.054475357 , -0.818035831 ), ( 77 , 2.105062798 , -0.808693218 ), ( 77 , 2.196205917 , -0.784798408 ), ( 77 , 2.187878754 , -0.78522251 ), ( 77 , 2.155330667 , -0.781045146 ), ( 77 , 2.127358253 , -0.787975804 ), ( 77 , 2.262128622 , -0.816401937 ), ( 77 , 2.298711893 , -0.689336753 ), ( 77 , 2.189046211 , -0.747626386 ), ( 77 , 2.216659807 , -0.719867324 ), ( 77 , 2.007717374 , -0.775446964 ), ( 77 , 2.093794639 , -0.757891124 ), ( 77 , 2.137167726 , -0.744217112 ), ( 77 , 2.092520732 , -0.711263218 ), ( 77 , 2.10711324 , -0.70208078 ), ( 77 , 2.013014958 , -0.731086384 ), ( 77 , 2.012532706 , -0.684802519 ), ( 77 , 2.034682967 , -0.661439804 ), ( 77 , 2.14150288 , -0.667918055 ), ( 77 , 2.173865135 , -0.652319301 ), ( 77 , 2.160065211 , -0.639750495 ), ( 77 , 2.212867877 , -0.644436764 ), ( 77 , 2.223178058 , -0.597990039 ), ( 77 , 2.100135883 , -0.626643078 ), ( 77 , 2.101650028 , -0.605554767 ), ( 77 , 2.095918982 , -0.598106961 ), ( 77 , 1.585637083 , -0.940564831 ), ( 77 , 1.612079087 , -0.896909627 ), ( 77 , 1.727345557 , -0.842644954 ), ( 77 , 1.726363294 , -0.827872706 ), ( 77 , 1.767549197 , -0.81918383 ), ( 77 , 1.65129378 , -0.838432273 ), ( 77 , 1.735335656 , -0.776595416 ), ( 77 , 1.946003559 , -0.73490943 ), ( 77 , 1.943067332 , -0.718328205 ), ( 77 , 1.90809122 , -0.709576927 ), ( 77 , 1.823093579 , -0.743624818 ), ( 77 , 1.687416182 , -0.769121351 ), ( 77 , 1.756558714 , -0.729817047 ), ( 77 , 1.654095882 , -0.716881386 ), ( 77 , 1.753607419 , -0.694425265 ), ( 77 , 1.811298256 , -0.67293858 ), ( 77 , 1.725111411 , -0.677343445 ), ( 77 , 1.81644056 , -0.673864225 ), ( 77 , 1.727851678 , -0.613855228 ), ( 77 , 1.747771419 , -0.59711281 ), ( 77 , 1.755441909 , -0.552673684 ), ( 77 , 2.011505044 , -0.643477414 ), ( 77 , 1.988017594 , -0.631162363 ), ( 77 , 1.947646014 , -0.61394339 ), ( 77 , 1.935296484 , -0.602456585 ), ( 77 , 1.887474689 , -0.632401887 ), ( 77 , 1.968006069 , -0.610588622 ), ( 77 , 2.063879724 , -0.58114152 ), ( 77 , 2.054799449 , -0.576935046 ), ( 77 , 2.064801135 , -0.555136532 ), ( 77 , 2.094189222 , -0.530154171 ), ( 77 , 2.110541167 , -0.513457028 ), ( 77 , 2.045123027 , -0.528021247 ), ( 77 , 2.026127566 , -0.527698288 ), ( 77 , 2.009238134 , -0.52446123 ), ( 77 , 2.089549965 , -0.487070026 ), ( 77 , 2.064195254 , -0.461014976 ), ( 77 , 2.073906885 , -0.452595014 ), ( 77 , 1.881834675 , -0.600207308 ), ( 77 , 1.913581133 , -0.537536642 ), ( 77 , 1.906713584 , -0.518883357 ), ( 77 , 1.916320005 , -0.506377681 ), ( 77 , 1.869950786 , -0.499389459 ), ( 77 , 1.870862171 , -0.447112226 ), ( 77 , 1.966856269 , -0.490385733 ), ( 77 , 1.999590199 , -0.46946701 ), ( 77 , 1.987679592 , -0.456469612 ), ( 77 , 1.946416675 , -0.467577276 ), ( 77 , 2.035073086 , -0.411897715 ), ( 77 , 1.952665473 , -0.437179212 ), ( 77 , 1.907518524 , -0.425023627 ), ( 77 , 1.954455039 , -0.409975967 ), ( 77 , 1.960787745 , -0.381689444 ), ( 77 , 1.961165475 , -0.381504406 ), ( 77 , 1.952873827 , -0.369067865 ), ( 77 , 2.402241384 , -0.64305611 ), ( 77 , 2.365043549 , -0.622875061 ), ( 77 , 2.333823466 , -0.629319762 ), ( 77 , 2.324898587 , -0.568402818 ), ( 77 , 2.504595668 , -0.558900487 ), ( 77 , 2.504354369 , -0.557459732 ), ( 77 , 2.421914958 , -0.530005146 ), ( 77 , 2.269118857 , -0.593755508 ), ( 77 , 2.313661518 , -0.530873403 ), ( 77 , 2.34548645 , -0.483734348 ), ( 77 , 2.321201483 , -0.482436314 ), ( 77 , 2.490068002 , -0.447089172 ), ( 77 , 2.486065178 , -0.445555005 ), ( 77 , 2.493583431 , -0.410257862 ), ( 77 , 2.638058214 , -0.313101257 ), ( 77 , 2.667258424 , -0.307798171 ), ( 77 , 2.671609071 , -0.280759877 ), ( 77 , 2.625090999 , -0.302519618 ), ( 77 , 2.657851963 , -0.270453911 ), ( 77 , 2.396163726 , -0.365249328 ), ( 77 , 2.47262539 , -0.287009071 ), ( 77 , 2.57867651 , -0.277150859 ), ( 77 , 2.627084555 , -0.262309584 ), ( 77 , 2.609851278 , -0.229144554 ), ( 77 , 2.219581965 , -0.415895105 ), ( 77 , 2.152051927 , -0.410359705 ), ( 77 , 2.244640593 , -0.415862096 ), ( 77 , 2.289782341 , -0.38917573 ), ( 77 , 2.223229173 , -0.327380634 ), ( 77 , 2.265339702 , -0.279822755 ), ( 77 , 2.239049873 , -0.275141671 ), ( 77 , 2.035266158 , -0.376040565 ), ( 77 , 2.105212243 , -0.354622327 ), ( 77 , 2.085238757 , -0.356547516 ), ( 77 , 2.09652714 , -0.312938347 ), ( 77 , 2.041951203 , -0.338656532 ), ( 77 , 2.025725857 , -0.311785012 ), ( 77 , 2.2125997 , -0.273015539 ), ( 77 , 2.101295135 , -0.266259491 ), ( 77 , 2.151629594 , -0.221996384 ), ( 77 , 2.398449794 , -0.241856636 ), ( 77 , 2.424626822 , -0.229188091 ), ( 77 , 2.323864819 , -0.274917979 ), ( 77 , 2.317530085 , -0.239669444 ), ( 77 , 2.398418111 , -0.173449987 ), ( 77 , 2.460538274 , -0.093575106 ), ( 77 , 2.282573206 , -0.216806289 ), ( 77 , 2.25088824 , -0.19707596 ), ( 77 , 2.331090794 , -0.152905642 ), ( 77 , 2.29767892 , -0.150812931 ), ( 77 , 2.290217078 , -0.144122292 ), ( 77 , 2.243425928 , -0.173707941 ), ( 77 , 2.254350914 , -0.169545935 ), ( 77 , 2.29558333 , -0.132370125 ), ( 77 , 2.286207019 , -0.113538867 ), ( 77 , 2.401348385 , -0.107508158 ), ( 77 , 2.402148106 , -0.059808194 ), ( 77 , 2.360094516 , -0.078743026 ), ( 77 , 2.361618208 , -0.044715051 ), ( 77 , 4.032751745 , -1.530868872 ), ( 77 , 4.62240114 , -1.516433021 ), ( 77 , 4.442671627 , -1.397531115 ), ( 77 , 4.466062165 , -1.362747722 ), ( 77 , 4.156821337 , -1.385860331 ), ( 77 , 4.188424954 , -1.361835176 ), ( 77 , 4.220208644 , -1.330918488 ), ( 77 , 4.333424614 , -1.325571848 ), ( 77 , 3.206497955 , -1.417106468 ), ( 77 , 3.700398022 , -1.409597742 ), ( 77 , 3.23476643 , -1.397338513 ), ( 77 , 3.750004289 , -1.312127913 ), ( 77 , 3.987445026 , -1.30745665 ), ( 77 , 3.852233277 , -1.323392309 ), ( 77 , 3.903705694 , -1.319502444 ), ( 77 , 3.758931328 , -1.262179074 ), ( 77 , 3.989016925 , -1.231490823 ), ( 77 , 4.667903107 , -1.329981695 ), ( 77 , 4.417662104 , -1.306023235 ), ( 77 , 4.644023453 , -1.260485001 ), ( 77 , 4.387109711 , -1.253834891 ), ( 77 , 4.662807457 , -1.220529473 ), ( 77 , 4.688047219 , -1.198306725 ), ( 77 , 4.66049187 , -1.155483127 ), ( 77 , 4.548670245 , -1.156611915 ), ( 77 , 4.606965808 , -1.13525968 ), ( 77 , 4.349100689 , -1.169100529 ), ( 77 , 4.513303584 , -1.128026048 ), ( 77 , 4.484573834 , -1.11416103 ), ( 77 , 4.426826003 , -1.107511266 ), ( 77 , 4.458888642 , -1.084566461 ), ( 77 , 4.116931831 , -1.226389217 ), ( 77 , 4.178790697 , -1.171744844 ), ( 77 , 4.194987402 , -1.166730854 ), ( 77 , 4.20354077 , -1.162753533 ), ( 77 , 4.166142185 , -1.150190577 ), ( 77 , 4.204891295 , -1.125127402 ), ( 77 , 4.197009643 , -1.12399678 ), ( 77 , 4.048107628 , -1.099921985 ), ( 77 , 4.044441552 , -1.095471578 ), ( 77 , 4.090937828 , -1.093998334 ), ( 77 , 4.21945323 , -1.095416567 ), ( 77 , 4.251887208 , -1.095550388 ), ( 77 , 4.319235027 , -1.060853902 ), ( 77 , 4.322766353 , -1.046334985 ), ( 77 , 4.204838598 , -1.072874006 ), ( 77 , 4.183250621 , -1.059543424 ), ( 77 , 4.248851659 , -1.004966068 ), ( 77 , 4.266830601 , -1.011225228 ), ( 77 , 4.188409806 , -0.991549364 ), ( 77 , 4.211936189 , -0.974089957 ), ( 77 , 3.36859415 , -1.290169253 ), ( 77 , 3.436460451 , -1.284313518 ), ( 77 , 3.357625024 , -1.251950504 ), ( 77 , 3.685946638 , -1.219497951 ), ( 77 , 3.731661273 , -1.180863588 ), ( 77 , 3.820454486 , -1.199724951 ), ( 77 , 3.810202632 , -1.172649192 ), ( 77 , 3.885559737 , -1.178056016 ), ( 77 , 3.885839459 , -1.156445165 ), ( 77 , 3.588599861 , -1.208587732 ), ( 77 , 3.665777057 , -1.174268563 ), ( 77 , 3.681050164 , -1.16475557 ), ( 77 , 3.779522877 , -1.125320918 ), ( 77 , 3.785146855 , -1.082051466 ), ( 77 , 3.772259504 , -1.071448166 ), ( 77 , 3.163434497 , -1.221769857 ), ( 77 , 3.352233005 , -1.171662271 ), ( 77 , 3.288061262 , -1.153960513 ), ( 77 , 3.239024404 , -1.145081932 ), ( 77 , 3.359424138 , -1.127722654 ), ( 77 , 3.391108416 , -1.107664404 ), ( 77 , 3.381754157 , -1.091859138 ), ( 77 , 3.408495277 , -1.099961736 ), ( 77 , 3.558869842 , -1.137117606 ), ( 77 , 3.566699474 , -1.133343108 ), ( 77 , 3.547850503 , -1.111140514 ), ( 77 , 3.716676439 , -1.0825644 ), ( 77 , 3.672354071 , -1.079228894 ), ( 77 , 3.737498178 , -1.045692021 ), ( 77 , 3.694162822 , -1.04291939 ), ( 77 , 3.582987577 , -1.033720873 ), ( 77 , 3.553525144 , -1.038707535 ), ( 77 , 3.579655362 , -1.010997879 ), ( 77 , 3.644767613 , -0.998064848 ), ( 77 , 3.653300993 , -0.978093537 ), ( 77 , 3.980779253 , -1.126449403 ), ( 77 , 3.877237631 , -1.105760206 ), ( 77 , 3.982660725 , -1.054070181 ), ( 77 , 3.990975263 , -1.044066753 ), ( 77 , 4.025646997 , -1.032654434 ), ( 77 , 3.868955792 , -1.072713721 ), ( 77 , 3.896575677 , -1.06193956 ), ( 77 , 3.871185229 , -1.006660365 ), ( 77 , 3.927443873 , -0.968802925 ), ( 77 , 4.094626124 , -0.930350916 ), ( 77 , 4.001723573 , -0.984094436 ), ( 77 , 3.985835845 , -0.972706791 ), ( 77 , 4.039943738 , -0.948075705 ), ( 77 , 4.03317723 , -0.920060514 ), ( 77 , 3.835718757 , -0.986070182 ), ( 77 , 3.935487159 , -0.906148396 ), ( 77 , 3.912768019 , -0.882936551 ), ( 77 , 3.99932672 , -0.832467659 ), ( 77 , 3.959529472 , -0.842965239 ), ( 77 , 3.912168203 , -0.75845391 ), ( 77 , 4.684737596 , -1.11631004 ), ( 77 , 4.653902462 , -1.09527263 ), ( 77 , 4.593446841 , -1.08623247 ), ( 77 , 4.598840442 , -1.073935901 ), ( 77 , 4.477637074 , -1.054542503 ), ( 77 , 4.483349668 , -1.041391356 ), ( 77 , 4.539797487 , -0.999167285 ), ( 77 , 4.611781133 , -0.962339611 ), ( 77 , 4.583378941 , -0.946663049 ), ( 77 , 4.560108339 , -0.880523525 ), ( 77 , 4.520329735 , -0.912945398 ), ( 77 , 4.395311318 , -1.00288138 ), ( 77 , 4.312157741 , -0.998533243 ), ( 77 , 4.299169105 , -0.986204556 ), ( 77 , 4.423678843 , -0.948825172 ), ( 77 , 4.353814315 , -0.957467426 ), ( 77 , 4.293602393 , -0.967850635 ), ( 77 , 4.230870513 , -0.90958616 ), ( 77 , 4.224919888 , -0.901221135 ), ( 77 , 4.27019388 , -0.862434837 ), ( 77 , 4.37714751 , -0.853065367 ), ( 77 , 4.399594037 , -0.825207015 ), ( 77 , 4.43419113 , -0.817677338 ), ( 77 , 4.365601363 , -0.802119642 ), ( 77 , 4.597980235 , -0.885424213 ), ( 77 , 4.620261184 , -0.798679366 ), ( 77 , 4.516449937 , -0.800740208 ), ( 77 , 4.502301896 , -0.800670898 ), ( 77 , 4.529525114 , -0.748715853 ), ( 77 , 4.648223831 , -0.796516601 ), ( 77 , 4.623196837 , -0.76548617 ), ( 77 , 4.684733096 , -0.763045246 ), ( 77 , 4.670857672 , -0.738309311 ), ( 77 , 4.614239363 , -0.659419027 ), ( 77 , 4.492036954 , -0.824858532 ), ( 77 , 4.449164838 , -0.811280326 ), ( 77 , 4.444264896 , -0.801464262 ), ( 77 , 4.445875955 , -0.683618382 ), ( 77 , 4.381865207 , -0.679701955 ), ( 77 , 4.376459103 , -0.67496497 ), ( 77 , 4.43381301 , -0.649059509 ), ( 77 , 4.488616444 , -0.686580081 ), ( 77 , 4.599973267 , -0.623672364 ), ( 77 , 4.458977447 , -0.651034339 ), ( 77 , 4.509338136 , -0.581895569 ), ( 77 , 4.16628807 , -0.87851698 ), ( 77 , 4.13729038 , -0.868175656 ), ( 77 , 4.193894227 , -0.812253456 ), ( 77 , 4.190436302 , -0.793315648 ), ( 77 , 4.140914137 , -0.851111764 ), ( 77 , 4.102195289 , -0.785780603 ), ( 77 , 4.131771363 , -0.7722109 ), ( 77 , 4.253960044 , -0.802707391 ), ( 77 , 4.214203439 , -0.804333926 ), ( 77 , 4.285830395 , -0.753988442 ), ( 77 , 4.292049541 , -0.716878908 ), ( 77 , 4.190383473 , -0.764851742 ), ( 77 , 4.171076914 , -0.711864128 ), ( 77 , 4.052440083 , -0.783527466 ), ( 77 , 4.061625383 , -0.765588379 ), ( 77 , 4.004643988 , -0.797874731 ), ( 77 , 4.103982515 , -0.732073082 ), ( 77 , 3.949537056 , -0.708068355 ), ( 77 , 4.058432271 , -0.673445538 ), ( 77 , 4.090943033 , -0.682256374 ), ( 77 , 4.212902433 , -0.631237972 ), ( 77 , 4.196594484 , -0.604360519 ), ( 77 , 4.104940897 , -0.61833959 ), ( 77 , 4.038264323 , -0.631802311 ), ( 77 , 4.04383563 , -0.624491217 ), ( 77 , 4.123800704 , -0.612647383 ), ( 77 , 4.116453463 , -0.58304167 ), ( 77 , 4.119492587 , -0.536015157 ), ( 77 , 4.337900675 , -0.670040053 ), ( 77 , 4.295842607 , -0.613925458 ), ( 77 , 4.246406218 , -0.598768588 ), ( 77 , 4.420618886 , -0.580900237 ), ( 77 , 4.427774321 , -0.540703334 ), ( 77 , 4.458519363 , -0.53719651 ), ( 77 , 4.455054408 , -0.517875966 ), ( 77 , 4.467975024 , -0.493167159 ), ( 77 , 4.360464118 , -0.531708464 ), ( 77 , 4.387636874 , -0.503365417 ), ( 77 , 4.456353934 , -0.475623363 ), ( 77 , 4.443078311 , -0.454814529 ), ( 77 , 4.220079784 , -0.578552822 ), ( 77 , 4.205396976 , -0.577203087 ), ( 77 , 4.300718493 , -0.51313646 ), ( 77 , 4.262424718 , -0.519126764 ), ( 77 , 4.248285388 , -0.507140721 ), ( 77 , 4.255620021 , -0.474925032 ), ( 77 , 4.193453717 , -0.47207961 ), ( 77 , 4.355990143 , -0.399563682 ), ( 77 , 4.288547011 , -0.403501464 ), ( 77 , 3.219094764 , -1.11031135 ), ( 77 , 3.375853387 , -1.05329646 ), ( 77 , 3.156419936 , -1.094252726 ), ( 77 , 3.283377861 , -1.045396941 ), ( 77 , 3.270572471 , -1.031236802 ), ( 77 , 3.413484979 , -0.98788509 ), ( 77 , 3.325061404 , -1.00839086 ), ( 77 , 3.287075277 , -1.007340784 ), ( 77 , 3.464719348 , -1.017827239 ), ( 77 , 3.470227298 , -0.99935537 ), ( 77 , 3.604662819 , -0.916543472 ), ( 77 , 3.469342967 , -0.959408688 ), ( 77 , 3.498556792 , -0.967210198 ), ( 77 , 3.514655576 , -0.913890794 ), ( 77 , 3.169208894 , -1.032268489 ), ( 77 , 3.203732614 , -1.027590882 ), ( 77 , 3.23402093 , -0.99089407 ), ( 77 , 3.336533472 , -0.943968347 ), ( 77 , 3.372006171 , -0.916838796 ), ( 77 , 3.362167592 , -0.911666271 ), ( 77 , 3.16180083 , -0.96744942 ), ( 77 , 3.264723322 , -0.93509715 ), ( 77 , 3.156309722 , -0.965532252 ), ( 77 , 3.378046684 , -0.89649931 ), ( 77 , 3.421806175 , -0.92320591 ), ( 77 , 3.435861518 , -0.920679 ), ( 77 , 3.444124945 , -0.902031609 ), ( 77 , 3.46850318 , -0.90416825 ), ( 77 , 3.396548877 , -0.899004976 ), ( 77 , 3.499330727 , -0.871141162 ), ( 77 , 3.565678026 , -0.820577064 ), ( 77 , 3.382180754 , -0.839356319 ), ( 77 , 3.50682325 , -0.793703991 ), ( 77 , 3.685704774 , -0.87391354 ), ( 77 , 3.698745275 , -0.870341073 ), ( 77 , 3.704140327 , -0.844461997 ), ( 77 , 3.785865866 , -0.806376043 ), ( 77 , 3.660260985 , -0.834392159 ), ( 77 , 3.709616544 , -0.801347995 ), ( 77 , 3.70844982 , -0.772848777 ), ( 77 , 3.833638195 , -0.756903252 ), ( 77 , 3.838024103 , -0.690538592 ), ( 77 , 3.565455857 , -0.746675768 ), ( 77 , 3.590903075 , -0.736221833 ), ( 77 , 3.656554991 , -0.666172322 ), ( 77 , 3.637019661 , -0.667871334 ), ( 77 , 3.620240129 , -0.63891076 ), ( 77 , 3.755170159 , -0.605244334 ), ( 77 , 3.691143184 , -0.658500505 ), ( 77 , 3.671147639 , -0.651555733 ), ( 77 , 3.652708994 , -0.609187564 ), ( 77 , 3.738106929 , -0.611010891 ), ( 77 , 3.230262976 , -0.89393415 ), ( 77 , 3.227384537 , -0.863977602 ), ( 77 , 3.309715829 , -0.836760988 ), ( 77 , 3.257324805 , -0.781011545 ), ( 77 , 3.394965294 , -0.810325002 ), ( 77 , 3.399637685 , -0.762779581 ), ( 77 , 3.470482136 , -0.751593441 ), ( 77 , 3.189454573 , -0.808450747 ), ( 77 , 3.278216624 , -0.724392252 ), ( 77 , 3.310370953 , -0.687526391 ), ( 77 , 3.317280989 , -0.660729475 ), ( 77 , 3.332226228 , -0.658156527 ), ( 77 , 3.357758811 , -0.607219459 ), ( 77 , 3.263544566 , -0.640662176 ), ( 77 , 3.352320826 , -0.564173728 ), ( 77 , 3.563869515 , -0.56554929 ), ( 77 , 3.542146964 , -0.542018921 ), ( 77 , 3.618845117 , -0.590328141 ), ( 77 , 3.671415746 , -0.551893328 ), ( 77 , 3.408264888 , -0.584343717 ), ( 77 , 3.448104285 , -0.560156513 ), ( 77 , 3.436776822 , -0.531191341 ), ( 77 , 3.411236289 , -0.538132118 ), ( 77 , 3.378373156 , -0.487989715 ), ( 77 , 3.624988628 , -0.435976857 ), ( 77 , 3.526558821 , -0.390967671 ), ( 77 , 3.907362806 , -0.648592847 ), ( 77 , 3.925745941 , -0.643874471 ), ( 77 , 3.980771055 , -0.61030353 ), ( 77 , 3.919286565 , -0.629441967 ), ( 77 , 3.879123588 , -0.620473671 ), ( 77 , 3.916865516 , -0.573005198 ), ( 77 , 4.025054181 , -0.59617906 ), ( 77 , 3.966604809 , -0.495022886 ), ( 77 , 4.031886822 , -0.476571409 ), ( 77 , 3.873416248 , -0.483443844 ), ( 77 , 3.805716333 , -0.467487394 ), ( 77 , 3.899847577 , -0.495773376 ), ( 77 , 4.008267258 , -0.436344103 ), ( 77 , 3.911818411 , -0.423389525 ), ( 77 , 3.888842931 , -0.416428793 ), ( 77 , 4.171705075 , -0.452668946 ), ( 77 , 4.126952905 , -0.431396833 ), ( 77 , 4.048313953 , -0.439291249 ), ( 77 , 4.120254803 , -0.425781122 ), ( 77 , 4.143719682 , -0.362635092 ), ( 77 , 4.211997919 , -0.413106999 ), ( 77 , 4.278256008 , -0.351124144 ), ( 77 , 4.242736637 , -0.341721744 ), ( 77 , 4.151689769 , -0.359317527 ), ( 77 , 4.062468498 , -0.328762927 ), ( 77 , 4.011859945 , -0.319193808 ), ( 77 , 4.018412914 , -0.268324146 ), ( 77 , 4.14538905 , -0.316655549 ), ( 77 , 3.695878332 , -0.47739524 ), ( 77 , 3.676726426 , -0.468586469 ), ( 77 , 3.730050289 , -0.367649317 ), ( 77 , 3.864756995 , -0.391137681 ), ( 77 , 3.713746021 , -0.208618857 ), ( 77 , 3.987134332 , -0.244745749 ), ( 77 , 3.909040017 , -0.242614686 ), ( 77 , 3.940668653 , -0.224408462 ), ( 77 , 3.966031797 , -0.20578373 ), ( 77 , 4.104120657 , -0.158993289 ), ( 77 , 4.014275616 , -0.151199629 ), ( 77 , 3.879790153 , -0.188971244 ), ( 77 , 3.858725544 , -0.165629915 ), ( 77 , 3.902906649 , -0.146406742 ), ( 77 , 3.942765494 , -0.132145126 ), ( 77 , 3.859394177 , -0.058700865 ), ( 77 , 3.917032408 , -0.070372408 ), ( 77 , 5.920986376 , -1.524025457 ), ( 77 , 6.149120392 , -1.495912579 ), ( 77 , 5.372512478 , -1.40576489 ), ( 77 , 6.261184195 , -1.370178738 ), ( 77 , 5.642264281 , -1.370834789 ), ( 77 , 5.025256556 , -1.420917846 ), ( 77 , 4.82708183 , -1.394998345 ), ( 77 , 5.240719882 , -1.330504546 ), ( 77 , 5.27554058 , -1.295394045 ), ( 77 , 5.167410394 , -1.29949897 ), ( 77 , 5.706481344 , -1.268538867 ), ( 77 , 5.423162279 , -1.255367186 ), ( 77 , 6.251819848 , -1.263608267 ), ( 77 , 6.138821481 , -1.288687821 ), ( 77 , 6.130904389 , -1.278863111 ), ( 77 , 6.018257963 , -1.253787646 ), ( 77 , 6.187738415 , -1.23749392 ), ( 77 , 6.172274427 , -1.238531287 ), ( 77 , 6.251074035 , -1.18723685 ), ( 77 , 6.03128603 , -1.12221711 ), ( 77 , 5.992028482 , -1.112913014 ), ( 77 , 5.847067686 , -1.167386934 ), ( 77 , 5.786040887 , -1.146130268 ), ( 77 , 5.653602156 , -1.099020005 ), ( 77 , 5.905807199 , -1.107792214 ), ( 77 , 5.950301573 , -1.059839803 ), ( 77 , 5.719859045 , -1.041003073 ), ( 77 , 5.751325785 , -0.989703627 ), ( 77 , 5.743913502 , -0.972000828 ), ( 77 , 4.780423134 , -1.345185109 ), ( 77 , 4.758493848 , -1.312281699 ), ( 77 , 5.117338945 , -1.282751901 ), ( 77 , 5.017476717 , -1.192059592 ), ( 77 , 5.166166262 , -1.15713663 ), ( 77 , 5.302974961 , -1.131314309 ), ( 77 , 4.755653204 , -1.250446475 ), ( 77 , 4.96234809 , -1.157713504 ), ( 77 , 4.959699488 , -1.142778701 ), ( 77 , 5.140771197 , -1.115536116 ), ( 77 , 5.130268293 , -1.07566551 ), ( 77 , 5.240457884 , -1.019060458 ), ( 77 , 5.518106272 , -1.117841544 ), ( 77 , 5.532751663 , -1.098624474 ), ( 77 , 5.55266359 , -1.048049649 ), ( 77 , 5.40114392 , -1.058279284 ), ( 77 , 5.641742449 , -1.0419647 ), ( 77 , 5.597554331 , -1.008236487 ), ( 77 , 5.573596962 , -0.94278335 ), ( 77 , 5.593764571 , -0.875864141 ), ( 77 , 5.415346659 , -0.970501407 ), ( 77 , 5.513163839 , -0.923088321 ), ( 77 , 5.432973953 , -0.88150482 ), ( 77 , 5.437104553 , -0.854694205 ), ( 77 , 5.41217181 , -0.817277933 ), ( 77 , 5.467904243 , -0.813635857 ), ( 77 , 6.212625665 , -1.077389757 ), ( 77 , 6.239426249 , -1.067011902 ), ( 77 , 6.183075575 , -1.061782395 ), ( 77 , 6.089034208 , -1.041863437 ), ( 77 , 6.102642359 , -1.017656753 ), ( 77 , 6.248490007 , -1.033268279 ), ( 77 , 6.187079528 , -1.015583639 ), ( 77 , 6.188102323 , -0.985258352 ), ( 77 , 5.976373911 , -1.02851058 ), ( 77 , 5.988456127 , -0.837637058 ), ( 77 , 5.879253725 , -0.861638387 ), ( 77 , 5.889889071 , -0.804156231 ), ( 77 , 5.899100316 , -0.760056987 ), ( 77 , 6.126023663 , -0.760967914 ), ( 77 , 6.224474276 , -0.78241027 ), ( 77 , 6.245490745 , -0.739543766 ), ( 77 , 6.214196891 , -0.710103492 ), ( 77 , 6.060956084 , -0.794329615 ), ( 77 , 6.029138696 , -0.782625136 ), ( 77 , 5.983594861 , -0.725744779 ), ( 77 , 5.969553108 , -0.658977866 ), ( 77 , 6.053807886 , -0.597068742 ), ( 77 , 5.738883163 , -0.680596817 ), ( 77 , 5.615736008 , -0.782034774 ), ( 77 , 5.600459697 , -0.702579205 ), ( 77 , 5.582015023 , -0.68675568 ), ( 77 , 5.573191395 , -0.681537711 ), ( 77 , 5.683162251 , -0.662061559 ), ( 77 , 5.632880726 , -0.637862747 ), ( 77 , 5.687726029 , -0.545396851 ), ( 77 , 5.882729346 , -0.682236442 ), ( 77 , 5.97199267 , -0.60690439 ), ( 77 , 5.798831098 , -0.629301009 ), ( 77 , 5.919519359 , -0.552252488 ), ( 77 , 5.805573952 , -0.590405371 ), ( 77 , 5.786825253 , -0.50098443 ), ( 77 , 5.838962709 , -0.38918516 ), ( 77 , 4.765731357 , -1.116780017 ), ( 77 , 4.763171885 , -1.054495909 ), ( 77 , 5.088981546 , -0.966464971 ), ( 77 , 5.083200305 , -0.961789752 ), ( 77 , 5.162798652 , -0.981932812 ), ( 77 , 5.15860527 , -0.924144125 ), ( 77 , 5.023781353 , -0.982737466 ), ( 77 , 5.068836336 , -0.945736809 ), ( 77 , 5.127124002 , -0.874841883 ), ( 77 , 4.803133301 , -0.993670652 ), ( 77 , 4.945395095 , -0.912016267 ), ( 77 , 4.819160512 , -0.904571882 ), ( 77 , 4.848295039 , -0.934235362 ), ( 77 , 5.139549205 , -0.839731835 ), ( 77 , 5.228382493 , -0.905750458 ), ( 77 , 5.192964581 , -0.883180712 ), ( 77 , 5.395291572 , -0.795132803 ), ( 77 , 5.419544431 , -0.809835906 ), ( 77 , 5.397068175 , -0.652524843 ), ( 77 , 5.250285672 , -0.749157979 ), ( 77 , 5.270440918 , -0.695409273 ), ( 77 , 5.185868895 , -0.715124771 ), ( 77 , 5.138497354 , -0.723585919 ), ( 77 , 5.315604717 , -0.679859535 ), ( 77 , 5.269105902 , -0.622311361 ), ( 77 , 4.724356812 , -0.937282111 ), ( 77 , 4.712726595 , -0.92674985 ), ( 77 , 4.825621047 , -0.896902056 ), ( 77 , 4.987662328 , -0.797821807 ), ( 77 , 4.936350111 , -0.776259425 ), ( 77 , 4.924544501 , -0.713653461 ), ( 77 , 4.972840011 , -0.709001654 ), ( 77 , 5.021306893 , -0.679102658 ), ( 77 , 4.995994497 , -0.662552359 ), ( 77 , 4.773440697 , -0.779312919 ), ( 77 , 4.876712137 , -0.749716746 ), ( 77 , 4.896382946 , -0.731442052 ), ( 77 , 4.745866917 , -0.757336451 ), ( 77 , 4.870766557 , -0.665714625 ), ( 77 , 4.969372917 , -0.627698939 ), ( 77 , 4.896383053 , -0.56491304 ), ( 77 , 4.895445605 , -0.549399312 ), ( 77 , 5.1614956 , -0.653450455 ), ( 77 , 5.127296651 , -0.551691396 ), ( 77 , 5.255297252 , -0.484293818 ), ( 77 , 5.199645288 , -0.472674468 ), ( 77 , 5.19395438 , -0.466278056 ), ( 77 , 5.008710876 , -0.448589143 ), ( 77 , 5.10991888 , -0.514791981 ), ( 77 , 5.117658902 , -0.454276247 ), ( 77 , 5.083725825 , -0.402158516 ), ( 77 , 5.5535563 , -0.624184217 ), ( 77 , 5.596732492 , -0.609341312 ), ( 77 , 5.586246904 , -0.567460186 ), ( 77 , 5.563400793 , -0.540763693 ), ( 77 , 5.428272841 , -0.557256469 ), ( 77 , 5.346593838 , -0.523329642 ), ( 77 , 5.355873153 , -0.502901066 ), ( 77 , 5.35781004 , -0.493246939 ), ( 77 , 5.418285784 , -0.501985135 ), ( 77 , 5.527708883 , -0.405186744 ), ( 77 , 5.484170594 , -0.384073015 ), ( 77 , 5.769272304 , -0.412189221 ), ( 77 , 5.815337212 , -0.364616164 ), ( 77 , 5.792917832 , -0.362322997 ), ( 77 , 5.791966592 , -0.34157153 ), ( 77 , 5.746820774 , -0.334926456 ), ( 77 , 5.784907203 , -0.325820103 ), ( 77 , 5.700494381 , -0.312838813 ), ( 77 , 5.753026584 , -0.231294904 ), ( 77 , 5.285929717 , -0.500826125 ), ( 77 , 5.33877112 , -0.466614968 ), ( 77 , 5.273497526 , -0.411745519 ), ( 77 , 5.439499403 , -0.339260037 ), ( 77 , 5.427607126 , -0.337628104 ), ( 77 , 5.351031497 , -0.334267283 ), ( 77 , 5.221450854 , -0.402585997 ), ( 77 , 5.177119346 , -0.375649865 ), ( 77 , 5.314571667 , -0.318766723 ), ( 77 , 5.319062329 , -0.249424558 ), ( 77 , 5.273497531 , -0.248779109 ), ( 77 , 5.30060239 , -0.190070784 ), ( 77 , 5.512335461 , -0.304886815 ), ( 77 , 5.529159664 , -0.274864243 ), ( 77 , 5.550592177 , -0.254088725 ), ( 77 , 5.44598851 , -0.285338543 ), ( 77 , 5.459904476 , -0.243034217 ), ( 77 , 5.673189611 , -0.170969851 ), ( 77 , 5.588691722 , -0.159729874 ), ( 77 , 5.617288649 , -0.122459999 ), ( 77 , 5.601825288 , -0.114912184 ), ( 77 , 5.461957096 , -0.18007026 ), ( 77 , 5.429166408 , -0.157947805 ), ( 77 , 5.531543629 , -0.097115696 ), ( 77 , 5.492663656 , -0.057916422 ), ( 77 , 0.419507141 , -0.521982017 ), ( 77 , 0.480591124 , 0.388763407 ), ( 78 , 0.779390238 , 0.037007747 ), ( 78 , 0.813219135 , 0.06650004 ), ( 78 , 0.753377345 , 0.113004931 ), ( 78 , 0.937057598 , 0.159722484 ), ( 78 , 0.956163672 , 0.159583524 ), ( 78 , 0.840310464 , 0.149987783 ), ( 78 , 0.878290378 , 0.168596963 ), ( 78 , 0.86504274 , 0.223816953 ), ( 78 , 0.664109969 , 0.117237572 ), ( 78 , 0.688332151 , 0.214145506 ), ( 78 , 0.700100444 , 0.236091358 ), ( 78 , 0.778423524 , 0.178115786 ), ( 78 , 0.757653012 , 0.256043843 ), ( 78 , 0.820767312 , 0.297183243 ), ( 78 , 0.759178588 , 0.279608941 ), ( 78 , 0.986565493 , 0.184113307 ), ( 78 , 1.023455246 , 0.240340243 ), ( 78 , 0.974577614 , 0.286588312 ), ( 78 , 0.942669768 , 0.287374584 ), ( 78 , 1.095957558 , 0.272728102 ), ( 78 , 1.083603432 , 0.344486303 ), ( 78 , 1.08599274 , 0.40311866 ), ( 78 , 0.952002444 , 0.337900474 ), ( 78 , 0.830092471 , 0.371264789 ), ( 78 , 0.984076638 , 0.370818953 ), ( 78 , 1.000022323 , 0.394603929 ), ( 78 , 0.957960829 , 0.39863168 ), ( 78 , 0.992428238 , 0.41325928 ), ( 78 , 0.931316182 , 0.408130226 ), ( 78 , 0.566253175 , 0.229962084 ), ( 78 , 0.602407295 , 0.252491005 ), ( 78 , 0.52866449 , 0.289113177 ), ( 78 , 0.616283344 , 0.408869563 ), ( 78 , 0.54880056 , 0.438859348 ), ( 78 , 0.809420418 , 0.364812217 ), ( 78 , 0.713986829 , 0.420149872 ), ( 78 , 0.733741761 , 0.472422472 ), ( 78 , 0.800682989 , 0.48117616 ), ( 78 , 0.766457981 , 0.469002655 ), ( 78 , 0.909118539 , 0.458502729 ), ( 78 , 0.882727653 , 0.548283518 ), ( 78 , 0.908331273 , 0.572667357 ), ( 78 , 0.887829665 , 0.581743958 ), ( 78 , 0.718269597 , 0.514170071 ), ( 78 , 0.631229734 , 0.482749811 ), ( 78 , 0.621345521 , 0.529260389 ), ( 78 , 0.637417535 , 0.539415466 ), ( 78 , 0.651702631 , 0.538700323 ), ( 78 , 0.664348744 , 0.56022755 ), ( 78 , 0.699413048 , 0.603604942 ), ( 78 , 0.813921421 , 0.586870611 ), ( 78 , 0.823647856 , 0.618867123 ), ( 78 , 0.780645795 , 0.670267608 ), ( 78 , 1.172438289 , 0.360888552 ), ( 78 , 1.205294454 , 0.375878525 ), ( 78 , 1.248789206 , 0.454400476 ), ( 78 , 1.210432895 , 0.449023747 ), ( 78 , 1.136673978 , 0.450773009 ), ( 78 , 1.278325891 , 0.4673479 ), ( 78 , 1.306319211 , 0.542038533 ), ( 78 , 1.268862568 , 0.550925634 ), ( 78 , 1.126802616 , 0.565313031 ), ( 78 , 1.004288026 , 0.517388717 ), ( 78 , 1.077174402 , 0.528366522 ), ( 78 , 1.178364686 , 0.567436865 ), ( 78 , 1.255641898 , 0.640933381 ), ( 78 , 1.21728943 , 0.637855171 ), ( 78 , 1.138746794 , 0.638340756 ), ( 78 , 1.38548141 , 0.57947503 ), ( 78 , 1.378316965 , 0.600782156 ), ( 78 , 1.447571393 , 0.60880433 ), ( 78 , 1.338620225 , 0.602756264 ), ( 78 , 1.359413907 , 0.651010943 ), ( 78 , 1.400735491 , 0.691529835 ), ( 78 , 1.337670666 , 0.672339669 ), ( 78 , 1.505120921 , 0.67192345 ), ( 78 , 1.401167118 , 0.739407543 ), ( 78 , 1.316464117 , 0.677001269 ), ( 78 , 1.322612491 , 0.707785586 ), ( 78 , 1.260516876 , 0.755301135 ), ( 78 , 1.364102098 , 0.775539843 ), ( 78 , 1.44935631 , 0.823665864 ), ( 78 , 1.555030147 , 0.83280564 ), ( 78 , 1.526702035 , 0.869887024 ), ( 78 , 1.4559095 , 0.842605905 ), ( 78 , 1.463490543 , 0.865631908 ), ( 78 , 1.554831558 , 0.934700554 ), ( 78 , 1.009853274 , 0.603960462 ), ( 78 , 1.007295066 , 0.612606299 ), ( 78 , 0.967450658 , 0.656016221 ), ( 78 , 0.9773057 , 0.669748065 ), ( 78 , 0.999015016 , 0.709848691 ), ( 78 , 1.061075402 , 0.664181073 ), ( 78 , 1.051897131 , 0.669804127 ), ( 78 , 1.058065468 , 0.682371734 ), ( 78 , 1.087210247 , 0.700930536 ), ( 78 , 1.164262348 , 0.748890259 ), ( 78 , 1.125823827 , 0.762434235 ), ( 78 , 1.064582157 , 0.767748406 ), ( 78 , 1.095789873 , 0.792410077 ), ( 78 , 1.120284501 , 0.816431448 ), ( 78 , 0.905108085 , 0.663952568 ), ( 78 , 0.893383228 , 0.711410848 ), ( 78 , 0.860421866 , 0.706572337 ), ( 78 , 0.936845292 , 0.781961432 ), ( 78 , 0.874189893 , 0.800644838 ), ( 78 , 0.873679474 , 0.816482815 ), ( 78 , 1.031224757 , 0.784306825 ), ( 78 , 0.97780503 , 0.783385016 ), ( 78 , 0.984203108 , 0.791575103 ), ( 78 , 0.938368532 , 0.793241377 ), ( 78 , 0.989724207 , 0.83084388 ), ( 78 , 0.90250309 , 0.836290724 ), ( 78 , 1.241733173 , 0.781317302 ), ( 78 , 1.195874804 , 0.796494181 ), ( 78 , 1.256153717 , 0.793935225 ), ( 78 , 1.444905739 , 0.89504707 ), ( 78 , 1.379129519 , 0.906817648 ), ( 78 , 1.515347871 , 1.029303982 ), ( 78 , 1.112771434 , 0.884657721 ), ( 78 , 1.165056519 , 0.9076096 ), ( 78 , 1.173201925 , 0.914367086 ), ( 78 , 1.273860881 , 0.95822284 ), ( 78 , 1.173312772 , 0.959936949 ), ( 78 , 1.337478946 , 0.966100959 ), ( 78 , 1.347240788 , 1.001847746 ), ( 78 , 1.341614876 , 1.022638973 ), ( 78 , 1.499076287 , 1.065306443 ), ( 78 , 1.541706498 , 1.076450234 ), ( 78 , 1.409000032 , 1.077766596 ), ( 78 , 1.553918709 , 1.104469358 ), ( 78 , 1.509346007 , 1.1047235 ), ( 78 , 0.39186738 , 0.413470262 ), ( 78 , 0.407172415 , 0.418456151 ), ( 78 , 0.467116312 , 0.456720766 ), ( 78 , 0.527944253 , 0.510304765 ), ( 78 , 0.449111814 , 0.541526813 ), ( 78 , 0.326389717 , 0.461576763 ), ( 78 , 0.244491925 , 0.564480402 ), ( 78 , 0.262959026 , 0.572664252 ), ( 78 , 0.405634302 , 0.590847046 ), ( 78 , 0.330235943 , 0.606077842 ), ( 78 , 0.34728587 , 0.606552092 ), ( 78 , 0.374026121 , 0.634547736 ), ( 78 , 0.370811515 , 0.653711323 ), ( 78 , 0.587752503 , 0.530488644 ), ( 78 , 0.595036162 , 0.541813843 ), ( 78 , 0.565790428 , 0.564028765 ), ( 78 , 0.663731741 , 0.605244246 ), ( 78 , 0.519244393 , 0.599335915 ), ( 78 , 0.660911196 , 0.653695124 ), ( 78 , 0.693160989 , 0.683298942 ), ( 78 , 0.677331928 , 0.708544707 ), ( 78 , 0.729289706 , 0.736099744 ), ( 78 , 0.730313592 , 0.757506163 ), ( 78 , 0.732666489 , 0.771544459 ), ( 78 , 0.629106475 , 0.686717775 ), ( 78 , 0.637913427 , 0.713596604 ), ( 78 , 0.623263074 , 0.759526154 ), ( 78 , 0.672794216 , 0.746720028 ), ( 78 , 0.561492213 , 0.735875659 ), ( 78 , 0.560413103 , 0.753819475 ), ( 78 , 0.515198738 , 0.722325802 ), ( 78 , 0.534155804 , 0.747859335 ), ( 78 , 0.468849649 , 0.751893527 ), ( 78 , 0.596873968 , 0.763960677 ), ( 78 , 0.508213635 , 0.802314667 ), ( 78 , 0.252851661 , 0.610607092 ), ( 78 , 0.206544885 , 0.681195627 ), ( 78 , 0.179780574 , 0.691216013 ), ( 78 , 0.304370638 , 0.665397798 ), ( 78 , 0.353889639 , 0.75457204 ), ( 78 , 0.308454544 , 0.749277558 ), ( 78 , 0.300570619 , 0.789017421 ), ( 78 , 0.256084245 , 0.784634078 ), ( 78 , 0.241882979 , 0.786994806 ), ( 78 , 0.211883192 , 0.784921625 ), ( 78 , 0.245303076 , 0.814267527 ), ( 78 , 0.225950037 , 0.83874508 ), ( 78 , 0.038533219 , 0.712808741 ), ( 78 , 0.009262784 , 0.777232915 ), ( 78 , 0.092394763 , 0.784304828 ), ( 78 , 0.010924048 , 0.827682106 ), ( 78 , 0.147551619 , 0.76212408 ), ( 78 , 0.192817517 , 0.806959701 ), ( 78 , 0.175481418 , 0.824769615 ), ( 78 , 0.103507488 , 0.786955995 ), ( 78 , 0.033261989 , 0.921061398 ), ( 78 , 0.340175942 , 0.832184802 ), ( 78 , 0.26955911 , 0.832606798 ), ( 78 , 0.320143711 , 0.860106817 ), ( 78 , 0.329262082 , 0.903051955 ), ( 78 , 0.4401602 , 0.934989169 ), ( 78 , 0.353740177 , 0.907273622 ), ( 78 , 0.226171599 , 0.854924703 ), ( 78 , 0.181992968 , 0.869751499 ), ( 78 , 0.163717399 , 0.963863581 ), ( 78 , 0.139929943 , 0.977280913 ), ( 78 , 0.062479239 , 0.922598357 ), ( 78 , 0.115693951 , 0.97935915 ), ( 78 , 0.2476721 , 1.047775918 ), ( 78 , 0.205768825 , 1.051863048 ), ( 78 , 0.233303096 , 1.05881359 ), ( 78 , 0.186792797 , 1.095470047 ), ( 78 , 0.118613539 , 1.05883762 ), ( 78 , 0.053934529 , 1.097684663 ), ( 78 , 0.082690856 , 1.104587266 ), ( 78 , 0.007984333 , 1.142421611 ), ( 78 , 0.7862123 , 0.752702799 ), ( 78 , 0.84676993 , 0.834312185 ), ( 78 , 0.771975302 , 0.850044933 ), ( 78 , 0.744657925 , 0.842832008 ), ( 78 , 0.709157618 , 0.820824477 ), ( 78 , 0.733258148 , 0.899745395 ), ( 78 , 0.951279252 , 0.962912954 ), ( 78 , 0.917120722 , 1.036129444 ), ( 78 , 0.677170338 , 0.870226127 ), ( 78 , 0.64575823 , 0.917158326 ), ( 78 , 0.734104266 , 0.973427651 ), ( 78 , 0.594013762 , 0.905521799 ), ( 78 , 0.588547334 , 0.951757527 ), ( 78 , 0.59331699 , 1.01741545 ), ( 78 , 0.72805326 , 1.007644809 ), ( 78 , 0.782991332 , 1.040077239 ), ( 78 , 0.855994808 , 1.049221023 ), ( 78 , 0.882897 , 1.094836171 ), ( 78 , 0.881755401 , 1.095039537 ), ( 78 , 0.73484308 , 1.02680837 ), ( 78 , 0.684702067 , 1.045164668 ), ( 78 , 0.75474137 , 1.12870468 ), ( 78 , 1.025107507 , 1.002529595 ), ( 78 , 1.219395485 , 1.103411259 ), ( 78 , 1.177997218 , 1.094430552 ), ( 78 , 1.06852823 , 1.087729817 ), ( 78 , 1.180660827 , 1.135356272 ), ( 78 , 1.324536174 , 1.101095753 ), ( 78 , 1.351364266 , 1.151988341 ), ( 78 , 1.217678515 , 1.172874498 ), ( 78 , 1.373444278 , 1.175666556 ), ( 78 , 0.936553456 , 1.115072098 ), ( 78 , 0.998952018 , 1.130067857 ), ( 78 , 1.143443619 , 1.182048817 ), ( 78 , 0.92481926 , 1.176785075 ), ( 78 , 0.971949214 , 1.219033385 ), ( 78 , 0.971987832 , 1.219037611 ), ( 78 , 1.121659471 , 1.229613315 ), ( 78 , 1.529094545 , 1.321467616 ), ( 78 , 1.389801695 , 1.325525831 ), ( 78 , 0.582419172 , 1.033163424 ), ( 78 , 0.428066629 , 1.143801769 ), ( 78 , 0.629682427 , 1.108920552 ), ( 78 , 0.549873128 , 1.102561444 ), ( 78 , 0.540260789 , 1.121155698 ), ( 78 , 0.599631823 , 1.139036788 ), ( 78 , 0.691088693 , 1.187893616 ), ( 78 , 0.674548732 , 1.182333209 ), ( 78 , 0.517819498 , 1.179483508 ), ( 78 , 0.486987377 , 1.193124602 ), ( 78 , 0.538910066 , 1.214440068 ), ( 78 , 0.489470243 , 1.234848425 ), ( 78 , 0.542422695 , 1.242873353 ), ( 78 , 0.292323181 , 1.113051658 ), ( 78 , 0.062631506 , 1.155482236 ), ( 78 , 0.005719313 , 1.237942589 ), ( 78 , 0.274764007 , 1.208222385 ), ( 78 , 0.325778264 , 1.24094702 ), ( 78 , 0.416935911 , 1.264351578 ), ( 78 , 0.372956049 , 1.293556187 ), ( 78 , 0.186179125 , 1.245569076 ), ( 78 , 0.922726357 , 1.254183176 ), ( 78 , 0.645117907 , 1.258961667 ), ( 78 , 0.799306353 , 1.307421009 ), ( 78 , 0.829325608 , 1.328154881 ), ( 78 , 0.765964503 , 1.335680342 ), ( 78 , 1.223695985 , 1.336357289 ), ( 78 , 1.458034846 , 1.366992321 ), ( 78 , 0.451568828 , 1.304499171 ), ( 78 , 0.670525718 , 1.355564198 ), ( 78 , 0.012145168 , 1.401192256 ), ( 78 , 0.463194858 , 1.40069157 ), ( 78 , 0.341165407 , 1.423499419 ), ( 78 , 0.615736926 , 1.408944758 ), ( 78 , 1.062529466 , 1.42377606 ), ( 78 , 0.72685325 , 1.497477814 ), ( 78 , 2.351782279 , 0.063810498 ), ( 78 , 2.397722407 , 0.051331411 ), ( 78 , 2.307802683 , 0.065550795 ), ( 78 , 2.279484593 , 0.07987858 ), ( 78 , 2.515389652 , 0.18930086 ), ( 78 , 2.329848618 , 0.146986361 ), ( 78 , 2.310313552 , 0.154718034 ), ( 78 , 2.272715073 , 0.171462857 ), ( 78 , 2.268244878 , 0.20104791 ), ( 78 , 2.376250213 , 0.189369058 ), ( 78 , 2.348629434 , 0.189280624 ), ( 78 , 2.312257344 , 0.258891613 ), ( 78 , 2.393585587 , 0.291498121 ), ( 78 , 2.38350801 , 0.298652157 ), ( 78 , 2.564974534 , 0.23522872 ), ( 78 , 2.509599389 , 0.245665047 ), ( 78 , 2.455548154 , 0.275346933 ), ( 78 , 2.451242517 , 0.3271719 ), ( 78 , 2.384730275 , 0.351147944 ), ( 78 , 2.568730895 , 0.428426547 ), ( 78 , 2.513610512 , 0.404754556 ), ( 78 , 2.552028056 , 0.50105576 ), ( 78 , 2.105502453 , 0.217332322 ), ( 78 , 2.181757613 , 0.283152492 ), ( 78 , 2.16409303 , 0.326267823 ), ( 78 , 2.281595571 , 0.287103879 ), ( 78 , 2.258523723 , 0.34440275 ), ( 78 , 2.267671649 , 0.350569435 ), ( 78 , 2.033981252 , 0.286903276 ), ( 78 , 2.129926728 , 0.335370117 ), ( 78 , 2.126822031 , 0.345878566 ), ( 78 , 2.018298605 , 0.308792905 ), ( 78 , 1.991463733 , 0.317330008 ), ( 78 , 2.078371347 , 0.393932929 ), ( 78 , 2.210755312 , 0.428213276 ), ( 78 , 2.171211828 , 0.433487887 ), ( 78 , 2.351510647 , 0.369415937 ), ( 78 , 2.321320647 , 0.448870931 ), ( 78 , 2.450963205 , 0.497424156 ), ( 78 , 2.48794713 , 0.54675915 ), ( 78 , 2.457333919 , 0.574577526 ), ( 78 , 2.208287886 , 0.499658741 ), ( 78 , 2.239145305 , 0.583486945 ), ( 78 , 2.237960622 , 0.600106788 ), ( 78 , 2.408205452 , 0.61927618 ), ( 78 , 2.316892256 , 0.607778414 ), ( 78 , 2.315733337 , 0.612120314 ), ( 78 , 2.332210857 , 0.700438355 ), ( 78 , 2.706381383 , 0.384167825 ), ( 78 , 2.735548723 , 0.435414107 ), ( 78 , 2.905213353 , 0.523565762 ), ( 78 , 2.811819837 , 0.569321791 ), ( 78 , 2.708091307 , 0.505141782 ), ( 78 , 2.60456968 , 0.490366782 ), ( 78 , 2.635374421 , 0.569796257 ), ( 78 , 2.656028309 , 0.597632785 ), ( 78 , 2.791842674 , 0.66041109 ), ( 78 , 2.738217894 , 0.686474206 ), ( 78 , 3.004570384 , 0.686055867 ), ( 78 , 3.054679198 , 0.733485557 ), ( 78 , 2.847440244 , 0.669053895 ), ( 78 , 2.856049707 , 0.721499557 ), ( 78 , 2.813166571 , 0.728057229 ), ( 78 , 2.945752688 , 0.786463245 ), ( 78 , 2.584262167 , 0.633546568 ), ( 78 , 2.49079558 , 0.597090954 ), ( 78 , 2.512199089 , 0.607034192 ), ( 78 , 2.516057168 , 0.623018459 ), ( 78 , 2.689706747 , 0.792960338 ), ( 78 , 2.443994885 , 0.658959413 ), ( 78 , 2.454019758 , 0.701597144 ), ( 78 , 2.496861012 , 0.763366214 ), ( 78 , 2.568876208 , 0.762102224 ), ( 78 , 2.547084427 , 0.780183919 ), ( 78 , 2.631485237 , 0.806290146 ), ( 78 , 2.609421931 , 0.841593998 ), ( 78 , 2.506863354 , 0.850928557 ), ( 78 , 2.8532818 , 0.832020594 ), ( 78 , 2.851539829 , 0.859247555 ), ( 78 , 3.002801858 , 0.971592376 ), ( 78 , 3.035030503 , 1.015832939 ), ( 78 , 2.696127199 , 0.865274532 ), ( 78 , 2.651743515 , 0.928440843 ), ( 78 , 2.633284716 , 0.930873564 ), ( 78 , 2.75192466 , 0.987318621 ), ( 78 , 2.935745313 , 0.984410675 ), ( 78 , 2.973546636 , 1.020748133 ), ( 78 , 3.04723829 , 1.12009723 ), ( 78 , 3.049163102 , 1.123074257 ), ( 78 , 1.958575727 , 0.380853341 ), ( 78 , 2.029084564 , 0.401767295 ), ( 78 , 2.01473941 , 0.410402673 ), ( 78 , 2.038325478 , 0.413006172 ), ( 78 , 1.910735389 , 0.459599638 ), ( 78 , 2.080432225 , 0.455622758 ), ( 78 , 2.055572392 , 0.551797554 ), ( 78 , 2.077080145 , 0.599860182 ), ( 78 , 1.859560338 , 0.492044183 ), ( 78 , 1.83787492 , 0.509931691 ), ( 78 , 1.80070184 , 0.513876512 ), ( 78 , 1.879776384 , 0.562391757 ), ( 78 , 1.886300976 , 0.630535158 ), ( 78 , 2.198534544 , 0.563626515 ), ( 78 , 2.136745023 , 0.582559797 ), ( 78 , 2.157582466 , 0.592428077 ), ( 78 , 2.217188051 , 0.58518573 ), ( 78 , 2.150764656 , 0.688935193 ), ( 78 , 2.15940906 , 0.708227804 ), ( 78 , 2.280689977 , 0.681751837 ), ( 78 , 2.284887391 , 0.744932459 ), ( 78 , 2.243897762 , 0.788827825 ), ( 78 , 2.065612322 , 0.689084071 ), ( 78 , 2.07248552 , 0.693124496 ), ( 78 , 2.094993604 , 0.72296457 ), ( 78 , 1.986481815 , 0.706969864 ), ( 78 , 1.97061861 , 0.744231919 ), ( 78 , 2.072202946 , 0.767854367 ), ( 78 , 2.039184635 , 0.82620767 ), ( 78 , 2.029233913 , 0.8446491 ), ( 78 , 2.043227465 , 0.86167573 ), ( 78 , 2.129516484 , 0.875050399 ), ( 78 , 2.091567505 , 0.878664626 ), ( 78 , 1.771739513 , 0.576475454 ), ( 78 , 1.695074531 , 0.602008242 ), ( 78 , 1.777611039 , 0.67254274 ), ( 78 , 1.933562927 , 0.710345189 ), ( 78 , 1.928617729 , 0.721008941 ), ( 78 , 1.931805529 , 0.744642165 ), ( 78 , 1.822647983 , 0.712598501 ), ( 78 , 1.67273852 , 0.663852655 ), ( 78 , 1.647817978 , 0.703539064 ), ( 78 , 1.740883176 , 0.724217876 ), ( 78 , 1.646560978 , 0.800414114 ), ( 78 , 1.681782502 , 0.812165229 ), ( 78 , 1.716213872 , 0.824116415 ), ( 78 , 1.615971909 , 0.833209022 ), ( 78 , 1.572327684 , 0.841972429 ), ( 78 , 1.975116629 , 0.812181565 ), ( 78 , 1.929574135 , 0.875237557 ), ( 78 , 1.849028777 , 0.824833119 ), ( 78 , 1.863199505 , 0.86343503 ), ( 78 , 1.842556418 , 0.900024588 ), ( 78 , 2.047350826 , 0.962321964 ), ( 78 , 1.943595789 , 0.986879148 ), ( 78 , 1.94297807 , 0.987310891 ), ( 78 , 1.916393895 , 1.031936454 ), ( 78 , 1.748895678 , 0.907157542 ), ( 78 , 1.57992927 , 0.965435394 ), ( 78 , 1.635254657 , 1.00835961 ), ( 78 , 1.774255963 , 1.008235969 ), ( 78 , 1.821090135 , 1.032978823 ), ( 78 , 1.69634811 , 1.029077319 ), ( 78 , 1.668445231 , 1.083919642 ), ( 78 , 1.601510145 , 1.141472598 ), ( 78 , 2.410597844 , 0.858793678 ), ( 78 , 2.395301685 , 0.860409724 ), ( 78 , 2.28385287 , 0.852789977 ), ( 78 , 2.50373406 , 0.915316152 ), ( 78 , 2.533696369 , 0.931394403 ), ( 78 , 2.468022179 , 0.94275296 ), ( 78 , 2.460212081 , 0.963315339 ), ( 78 , 2.385806352 , 0.92469207 ), ( 78 , 2.382103104 , 0.966728178 ), ( 78 , 2.248092255 , 0.911064403 ), ( 78 , 2.114534871 , 0.955497845 ), ( 78 , 2.217938228 , 0.987869513 ), ( 78 , 2.434821778 , 1.010632771 ), ( 78 , 2.410566768 , 1.024708703 ), ( 78 , 2.445611279 , 1.043367185 ), ( 78 , 2.412011018 , 1.076552723 ), ( 78 , 2.632714889 , 0.989035416 ), ( 78 , 2.628728348 , 0.99978723 ), ( 78 , 2.680873398 , 1.036718642 ), ( 78 , 2.713056327 , 1.063127184 ), ( 78 , 2.727149838 , 1.119764282 ), ( 78 , 2.727558407 , 1.150329248 ), ( 78 , 2.826220647 , 1.142493235 ), ( 78 , 2.928978745 , 1.164810547 ), ( 78 , 3.076181574 , 1.220530793 ), ( 78 , 2.643498199 , 1.124220437 ), ( 78 , 2.40405409 , 1.177463911 ), ( 78 , 2.591993595 , 1.251074129 ), ( 78 , 2.732801752 , 1.181327899 ), ( 78 , 3.11260743 , 1.279183305 ), ( 78 , 2.657998554 , 1.251180642 ), ( 78 , 2.797082277 , 1.287548372 ), ( 78 , 2.954701753 , 1.315154892 ), ( 78 , 2.078527751 , 1.041545221 ), ( 78 , 2.105906226 , 1.101176078 ), ( 78 , 2.023593677 , 1.03479137 ), ( 78 , 2.204579328 , 1.129452948 ), ( 78 , 2.275936799 , 1.129316255 ), ( 78 , 2.108173419 , 1.136827194 ), ( 78 , 1.757413732 , 1.118678982 ), ( 78 , 1.955064561 , 1.160481351 ), ( 78 , 1.763646707 , 1.157089224 ), ( 78 , 1.617175846 , 1.194019098 ), ( 78 , 1.645270935 , 1.212621975 ), ( 78 , 1.887420777 , 1.268419672 ), ( 78 , 1.852435535 , 1.281556584 ), ( 78 , 2.395837267 , 1.207954016 ), ( 78 , 2.415923813 , 1.220654094 ), ( 78 , 2.495295614 , 1.25857545 ), ( 78 , 2.41642824 , 1.313876087 ), ( 78 , 2.668195 , 1.289672583 ), ( 78 , 2.76991417 , 1.339223833 ), ( 78 , 2.785896727 , 1.423877141 ), ( 78 , 2.167669334 , 1.321952569 ), ( 78 , 2.303950847 , 1.355921833 ), ( 78 , 1.798688974 , 1.347830159 ), ( 78 , 1.807229725 , 1.361484179 ), ( 78 , 2.380014822 , 1.384851819 ), ( 78 , 2.351013448 , 1.418698185 ), ( 78 , 2.200670949 , 1.450307708 ), ( 78 , 3.934548566 , 0.012477819 ), ( 78 , 3.911785065 , 0.050966997 ), ( 78 , 3.963210459 , 0.068600107 ), ( 78 , 3.941569282 , 0.084371111 ), ( 78 , 4.11139918 , 0.168435963 ), ( 78 , 4.090904316 , 0.194621574 ), ( 78 , 4.045561304 , 0.233521792 ), ( 78 , 3.811033117 , 0.10968406 ), ( 78 , 3.891765993 , 0.154026985 ), ( 78 , 3.842508799 , 0.15669377 ), ( 78 , 3.867046847 , 0.168335202 ), ( 78 , 3.770318741 , 0.196337475 ), ( 78 , 3.826879175 , 0.195615555 ), ( 78 , 4.151907678 , 0.242704384 ), ( 78 , 4.227450724 , 0.275699348 ), ( 78 , 4.147420379 , 0.354997506 ), ( 78 , 3.998665211 , 0.293094851 ), ( 78 , 3.946581418 , 0.346298047 ), ( 78 , 4.129381438 , 0.347455495 ), ( 78 , 4.12303387 , 0.364448033 ), ( 78 , 4.188863931 , 0.401358402 ), ( 78 , 4.066834931 , 0.393915468 ), ( 78 , 3.795626954 , 0.282893274 ), ( 78 , 3.888884433 , 0.325488873 ), ( 78 , 3.847837379 , 0.322808632 ), ( 78 , 3.684995901 , 0.334695646 ), ( 78 , 3.580879435 , 0.335097639 ), ( 78 , 3.770759275 , 0.448608662 ), ( 78 , 3.746177832 , 0.496370303 ), ( 78 , 3.847412519 , 0.428272038 ), ( 78 , 4.052288556 , 0.473663536 ), ( 78 , 4.104814689 , 0.523117692 ), ( 78 , 4.006355084 , 0.552343808 ), ( 78 , 3.861235121 , 0.528744633 ), ( 78 , 3.833919603 , 0.52386091 ), ( 78 , 3.787270197 , 0.510752514 ), ( 78 , 3.829181212 , 0.551785059 ), ( 78 , 3.960816713 , 0.563029158 ), ( 78 , 3.89105188 , 0.670267554 ), ( 78 , 3.907302896 , 0.692078983 ), ( 78 , 4.331821969 , 0.404226342 ), ( 78 , 4.329863665 , 0.433696845 ), ( 78 , 4.3760503 , 0.451251386 ), ( 78 , 4.276724156 , 0.477058596 ), ( 78 , 4.461564427 , 0.511331289 ), ( 78 , 4.446110967 , 0.549254593 ), ( 78 , 4.438415974 , 0.56257979 ), ( 78 , 4.416509496 , 0.619412491 ), ( 78 , 4.200308156 , 0.4644608 ), ( 78 , 4.212810617 , 0.55123619 ), ( 78 , 4.196476992 , 0.556346377 ), ( 78 , 4.29572779 , 0.566677271 ), ( 78 , 4.290209112 , 0.588137456 ), ( 78 , 4.498337692 , 0.544087377 ), ( 78 , 4.548420374 , 0.710097394 ), ( 78 , 4.367451013 , 0.741092541 ), ( 78 , 4.422784044 , 0.764158439 ), ( 78 , 4.514884592 , 0.736581893 ), ( 78 , 4.543152976 , 0.805475872 ), ( 78 , 4.617894045 , 0.822849307 ), ( 78 , 4.497161777 , 0.812546173 ), ( 78 , 4.577607065 , 0.874188116 ), ( 78 , 4.671498446 , 0.894349414 ), ( 78 , 4.132774188 , 0.533468496 ), ( 78 , 4.148913908 , 0.655435844 ), ( 78 , 4.093466293 , 0.663714916 ), ( 78 , 4.107797443 , 0.67294951 ), ( 78 , 4.119107569 , 0.690694259 ), ( 78 , 4.233553815 , 0.707841908 ), ( 78 , 4.223769397 , 0.709083203 ), ( 78 , 4.299563346 , 0.742108943 ), ( 78 , 4.23530951 , 0.746719608 ), ( 78 , 4.21259688 , 0.763040302 ), ( 78 , 4.244273753 , 0.801009317 ), ( 78 , 4.033035479 , 0.666487905 ), ( 78 , 4.058298071 , 0.696546131 ), ( 78 , 3.948826828 , 0.717494575 ), ( 78 , 4.234728304 , 0.834390788 ), ( 78 , 4.462188058 , 0.889120464 ), ( 78 , 4.438237845 , 0.905810883 ), ( 78 , 4.497564248 , 0.861266338 ), ( 78 , 4.523936069 , 0.867276636 ), ( 78 , 4.526878503 , 0.960908566 ), ( 78 , 4.666857132 , 0.991819374 ), ( 78 , 4.66946136 , 1.030445059 ), ( 78 , 4.279780597 , 0.949222973 ), ( 78 , 4.399437411 , 1.009039513 ), ( 78 , 4.53286455 , 1.091702613 ), ( 78 , 4.588327351 , 1.076595231 ), ( 78 , 4.580358936 , 1.114416968 ), ( 78 , 3.499153483 , 0.453754419 ), ( 78 , 3.501846771 , 0.455807129 ), ( 78 , 3.617429186 , 0.470875096 ), ( 78 , 3.693277349 , 0.538356161 ), ( 78 , 3.669794086 , 0.567043522 ), ( 78 , 3.621458668 , 0.567618001 ), ( 78 , 3.615931817 , 0.575551545 ), ( 78 , 3.479038471 , 0.567005905 ), ( 78 , 3.533999703 , 0.602563926 ), ( 78 , 3.539904834 , 0.636702469 ), ( 78 , 3.839679489 , 0.665153996 ), ( 78 , 3.791379991 , 0.69147932 ), ( 78 , 3.567650718 , 0.736542616 ), ( 78 , 3.65173351 , 0.772876769 ), ( 78 , 3.718610273 , 0.77125654 ), ( 78 , 3.688147207 , 0.81318161 ), ( 78 , 3.721646109 , 0.885106872 ), ( 78 , 3.403924987 , 0.609457794 ), ( 78 , 3.322446343 , 0.708240888 ), ( 78 , 3.409226279 , 0.66406705 ), ( 78 , 3.273383283 , 0.684977498 ), ( 78 , 3.209147233 , 0.674741571 ), ( 78 , 3.299559709 , 0.708366533 ), ( 78 , 3.169181395 , 0.807806653 ), ( 78 , 3.178396381 , 0.854659936 ), ( 78 , 3.168178981 , 0.857977161 ), ( 78 , 3.165915592 , 0.906369422 ), ( 78 , 3.530145515 , 0.737194558 ), ( 78 , 3.574470945 , 0.835945699 ), ( 78 , 3.530164732 , 0.981457297 ), ( 78 , 3.208988838 , 0.920086999 ), ( 78 , 3.256501473 , 0.952752249 ), ( 78 , 3.373680806 , 1.046362584 ), ( 78 , 3.194344973 , 1.125104905 ), ( 78 , 3.178934856 , 1.140567191 ), ( 78 , 3.914498759 , 0.844670876 ), ( 78 , 3.893583494 , 0.849461024 ), ( 78 , 3.892488297 , 0.917858016 ), ( 78 , 4.045885045 , 0.883478106 ), ( 78 , 4.020571172 , 0.913583576 ), ( 78 , 4.125485385 , 0.964312343 ), ( 78 , 3.850145107 , 0.956498193 ), ( 78 , 3.812995507 , 0.964051655 ), ( 78 , 3.726672701 , 0.953603565 ), ( 78 , 3.786104611 , 1.018131262 ), ( 78 , 3.950528126 , 0.971755731 ), ( 78 , 3.976737639 , 1.03068485 ), ( 78 , 4.01423376 , 1.05312814 ), ( 78 , 3.95450453 , 1.044141693 ), ( 78 , 3.859677173 , 1.048133871 ), ( 78 , 4.277486126 , 1.043195465 ), ( 78 , 4.254034348 , 1.058941277 ), ( 78 , 4.340140875 , 1.115874867 ), ( 78 , 4.315367755 , 1.130755415 ), ( 78 , 4.540918244 , 1.14563405 ), ( 78 , 4.595891497 , 1.172932349 ), ( 78 , 4.397222594 , 1.184074939 ), ( 78 , 4.100833513 , 1.128562576 ), ( 78 , 4.186842686 , 1.132604351 ), ( 78 , 4.629924384 , 1.264009612 ), ( 78 , 4.606777877 , 1.27544977 ), ( 78 , 4.634129824 , 1.282149803 ), ( 78 , 4.422829259 , 1.296635146 ), ( 78 , 4.428628074 , 1.299841526 ), ( 78 , 3.873215625 , 1.138862359 ), ( 78 , 3.649568676 , 1.14055126 ), ( 78 , 3.787227 , 1.208696199 ), ( 78 , 3.438844452 , 1.094147043 ), ( 78 , 3.390992238 , 1.234911606 ), ( 78 , 3.498649687 , 1.254401432 ), ( 78 , 3.164283266 , 1.282027278 ), ( 78 , 3.281428423 , 1.305706614 ), ( 78 , 3.158483066 , 1.32761457 ), ( 78 , 3.927731264 , 1.232457353 ), ( 78 , 3.944843414 , 1.350394985 ), ( 78 , 4.19144686 , 1.407223579 ), ( 78 , 3.689250217 , 1.304012393 ), ( 78 , 3.532802794 , 1.306914369 ), ( 78 , 3.45746592 , 1.347297625 ), ( 78 , 3.469061098 , 1.373597221 ), ( 78 , 3.337949263 , 1.394928353 ), ( 78 , 3.457840113 , 1.390196265 ), ( 78 , 3.355064083 , 1.403352502 ), ( 78 , 4.246643151 , 1.442203199 ), ( 78 , 4.005348702 , 1.463623165 ), ( 78 , 5.474732845 , 0.062968488 ), ( 78 , 5.570958019 , 0.091666918 ), ( 78 , 5.459421466 , 0.06092986 ), ( 78 , 5.450119899 , 0.106182418 ), ( 78 , 5.525269862 , 0.131021654 ), ( 78 , 5.627050831 , 0.120070179 ), ( 78 , 5.599547137 , 0.164986889 ), ( 78 , 5.55999576 , 0.167967458 ), ( 78 , 5.518833314 , 0.154285337 ), ( 78 , 5.629287567 , 0.214146596 ), ( 78 , 5.448033702 , 0.165214888 ), ( 78 , 5.401697335 , 0.22850671 ), ( 78 , 5.408348054 , 0.232840501 ), ( 78 , 5.50283276 , 0.208625285 ), ( 78 , 5.462030589 , 0.242929909 ), ( 78 , 5.476129188 , 0.30123503 ), ( 78 , 5.772382943 , 0.245030372 ), ( 78 , 5.737322717 , 0.265732223 ), ( 78 , 5.665758165 , 0.238832435 ), ( 78 , 5.605387149 , 0.252655578 ), ( 78 , 5.826975131 , 0.324685492 ), ( 78 , 5.845032228 , 0.366935378 ), ( 78 , 5.77346373 , 0.32959137 ), ( 78 , 5.73178619 , 0.334668352 ), ( 78 , 5.593712602 , 0.300376927 ), ( 78 , 5.581597565 , 0.390564761 ), ( 78 , 5.561357822 , 0.387331408 ), ( 78 , 5.703570307 , 0.42141176 ), ( 78 , 5.634675703 , 0.396921412 ), ( 78 , 5.272413441 , 0.2021272 ), ( 78 , 5.256415004 , 0.227081573 ), ( 78 , 5.288627879 , 0.26804414 ), ( 78 , 5.268633913 , 0.297063278 ), ( 78 , 5.259631369 , 0.29320978 ), ( 78 , 5.384967725 , 0.27622927 ), ( 78 , 5.371417625 , 0.298035117 ), ( 78 , 5.400455098 , 0.332839853 ), ( 78 , 5.347697564 , 0.339863989 ), ( 78 , 5.201770474 , 0.267443545 ), ( 78 , 5.226101972 , 0.299251063 ), ( 78 , 5.262070739 , 0.341748652 ), ( 78 , 5.263235491 , 0.358127153 ), ( 78 , 5.178039843 , 0.328416909 ), ( 78 , 5.225025678 , 0.379729482 ), ( 78 , 5.310815731 , 0.376411803 ), ( 78 , 5.311978175 , 0.3796335 ), ( 78 , 5.334951997 , 0.420258071 ), ( 78 , 5.26509036 , 0.396397677 ), ( 78 , 5.238802547 , 0.421481534 ), ( 78 , 5.223754847 , 0.444865288 ), ( 78 , 5.249497061 , 0.469354438 ), ( 78 , 5.293992426 , 0.440548612 ), ( 78 , 5.307803904 , 0.451581846 ), ( 78 , 5.309579602 , 0.472196448 ), ( 78 , 5.326333497 , 0.484533795 ), ( 78 , 5.272296837 , 0.474821393 ), ( 78 , 5.258691711 , 0.471802609 ), ( 78 , 5.505873684 , 0.368362687 ), ( 78 , 5.53279365 , 0.379857126 ), ( 78 , 5.520663482 , 0.411904497 ), ( 78 , 5.511623102 , 0.426767703 ), ( 78 , 5.449152334 , 0.401323047 ), ( 78 , 5.453178771 , 0.449786539 ), ( 78 , 5.542571919 , 0.476467738 ), ( 78 , 5.47983926 , 0.500925332 ), ( 78 , 5.622953906 , 0.460970007 ), ( 78 , 5.633656723 , 0.528464264 ), ( 78 , 5.621975497 , 0.527557837 ), ( 78 , 5.547691124 , 0.480898901 ), ( 78 , 5.405014493 , 0.445941258 ), ( 78 , 5.425233991 , 0.475625416 ), ( 78 , 5.383277047 , 0.486468065 ), ( 78 , 5.367883061 , 0.48635591 ), ( 78 , 5.366799712 , 0.533309937 ), ( 78 , 5.399493107 , 0.559467523 ), ( 78 , 5.402719868 , 0.582073282 ), ( 78 , 5.560604445 , 0.606903326 ), ( 78 , 5.482062744 , 0.63490283 ), ( 78 , 5.443077979 , 0.63321563 ), ( 78 , 5.533164548 , 0.672460583 ), ( 78 , 5.53766214 , 0.675951651 ), ( 78 , 5.490924958 , 0.689020707 ), ( 78 , 5.502002253 , 0.697865858 ), ( 78 , 5.882675262 , 0.434060315 ), ( 78 , 5.841408426 , 0.449842527 ), ( 78 , 5.887579106 , 0.47870704 ), ( 78 , 5.996023928 , 0.48897605 ), ( 78 , 6.07010578 , 0.533100877 ), ( 78 , 5.857941654 , 0.529836645 ), ( 78 , 5.756065607 , 0.532893136 ), ( 78 , 5.763582921 , 0.550376295 ), ( 78 , 5.831613865 , 0.569353315 ), ( 78 , 5.888820369 , 0.627222958 ), ( 78 , 5.896063064 , 0.684927248 ), ( 78 , 6.151754288 , 0.611109427 ), ( 78 , 6.127177448 , 0.616636755 ), ( 78 , 6.034509222 , 0.604250219 ), ( 78 , 6.001513695 , 0.631127801 ), ( 78 , 6.146506874 , 0.691481671 ), ( 78 , 6.146867868 , 0.740216369 ), ( 78 , 6.270032407 , 0.813634182 ), ( 78 , 6.033282854 , 0.720428005 ), ( 78 , 6.019237039 , 0.766439059 ), ( 78 , 6.140699499 , 0.791821209 ), ( 78 , 6.228637227 , 0.860330297 ), ( 78 , 6.248859283 , 0.874670962 ), ( 78 , 6.267995085 , 0.937461872 ), ( 78 , 5.723551611 , 0.556969816 ), ( 78 , 5.6432776 , 0.589962774 ), ( 78 , 5.634147966 , 0.626110275 ), ( 78 , 5.724876254 , 0.679889092 ), ( 78 , 5.717902619 , 0.68839472 ), ( 78 , 5.790580837 , 0.661492078 ), ( 78 , 5.78189804 , 0.689105303 ), ( 78 , 5.826363542 , 0.694235121 ), ( 78 , 5.751008632 , 0.753102729 ), ( 78 , 5.776448767 , 0.778247214 ), ( 78 , 5.63222859 , 0.662640337 ), ( 78 , 5.670046549 , 0.728267752 ), ( 78 , 5.665579096 , 0.755567269 ), ( 78 , 5.588957422 , 0.723298292 ), ( 78 , 5.539883278 , 0.740596043 ), ( 78 , 5.552211494 , 0.777224038 ), ( 78 , 5.627190499 , 0.805160743 ), ( 78 , 5.567448879 , 0.798167578 ), ( 78 , 5.692982839 , 0.757982183 ), ( 78 , 5.707554408 , 0.773955303 ), ( 78 , 5.721219601 , 0.775636418 ), ( 78 , 5.734555778 , 0.820323688 ), ( 78 , 5.815909464 , 0.861675859 ), ( 78 , 5.650535833 , 0.821873941 ), ( 78 , 5.634733989 , 0.843977551 ), ( 78 , 5.68439641 , 0.87558716 ), ( 78 , 5.712644764 , 0.881654619 ), ( 78 , 5.895235806 , 0.787934785 ), ( 78 , 5.974673443 , 0.83653669 ), ( 78 , 5.862425113 , 0.791507904 ), ( 78 , 5.888533032 , 0.83363632 ), ( 78 , 5.903124739 , 0.861969481 ), ( 78 , 6.183295144 , 0.932926497 ), ( 78 , 6.190981822 , 0.950205196 ), ( 78 , 6.159375881 , 0.944937624 ), ( 78 , 6.215498868 , 0.968500921 ), ( 78 , 6.031596803 , 0.939157958 ), ( 78 , 6.118139343 , 0.983461932 ), ( 78 , 6.266610131 , 1.043175775 ), ( 78 , 5.837493918 , 0.869695499 ), ( 78 , 5.958287796 , 0.931562362 ), ( 78 , 5.940978873 , 0.949227252 ), ( 78 , 5.965497592 , 0.955601818 ), ( 78 , 5.989045801 , 0.986465014 ), ( 78 , 5.819341657 , 0.914410621 ), ( 78 , 5.874963515 , 0.944283952 ), ( 78 , 5.915127744 , 0.992410069 ), ( 78 , 6.090595731 , 0.989185781 ), ( 78 , 6.033102187 , 1.039481087 ), ( 78 , 6.109400237 , 1.09288765 ), ( 78 , 6.222204988 , 1.105088296 ), ( 78 , 5.118232225 , 0.366564977 ), ( 78 , 5.13941453 , 0.397883314 ), ( 78 , 5.138794562 , 0.423435479 ), ( 78 , 5.139555984 , 0.431321184 ), ( 78 , 5.152505467 , 0.473563217 ), ( 78 , 5.068769052 , 0.464872297 ), ( 78 , 5.213721171 , 0.442097262 ), ( 78 , 5.208740363 , 0.471236349 ), ( 78 , 5.1989651 , 0.479270751 ), ( 78 , 5.162332696 , 0.470053973 ), ( 78 , 5.19706223 , 0.483750725 ), ( 78 , 5.261304047 , 0.490990291 ), ( 78 , 5.253171018 , 0.543212232 ), ( 78 , 5.113522947 , 0.52687735 ), ( 78 , 5.164732566 , 0.559896848 ), ( 78 , 5.152866874 , 0.5692959 ), ( 78 , 5.201096189 , 0.553395865 ), ( 78 , 5.188241503 , 0.572452541 ), ( 78 , 5.025459703 , 0.458136344 ), ( 78 , 4.989137079 , 0.454710569 ), ( 78 , 5.038693816 , 0.466527636 ), ( 78 , 5.023997487 , 0.460718774 ), ( 78 , 5.054699715 , 0.5228445 ), ( 78 , 5.036807697 , 0.529723203 ), ( 78 , 4.951715453 , 0.524173896 ), ( 78 , 5.021231261 , 0.54666597 ), ( 78 , 5.014767454 , 0.573667905 ), ( 78 , 5.016177856 , 0.581381816 ), ( 78 , 5.021868449 , 0.581650092 ), ( 78 , 4.992532053 , 0.581565575 ), ( 78 , 5.027356774 , 0.600002545 ), ( 78 , 5.107690304 , 0.558156497 ), ( 78 , 5.143634126 , 0.5819995 ), ( 78 , 5.074889201 , 0.577040261 ), ( 78 , 5.14211554 , 0.658740375 ), ( 78 , 5.160977589 , 0.657760309 ), ( 78 , 5.032267111 , 0.601795276 ), ( 78 , 5.043284098 , 0.650989746 ), ( 78 , 5.304512171 , 0.545271496 ), ( 78 , 5.317683992 , 0.58032544 ), ( 78 , 5.282173648 , 0.587022881 ), ( 78 , 5.276114235 , 0.592014406 ), ( 78 , 5.309928742 , 0.595849771 ), ( 78 , 5.365996945 , 0.645428204 ), ( 78 , 5.360235769 , 0.659547044 ), ( 78 , 5.276298554 , 0.619309184 ), ( 78 , 5.291493342 , 0.613974772 ), ( 78 , 5.283767244 , 0.627500357 ), ( 78 , 5.260698419 , 0.621472115 ), ( 78 , 5.277337813 , 0.623669866 ), ( 78 , 5.271700229 , 0.640034848 ), ( 78 , 5.279742625 , 0.645396794 ), ( 78 , 5.22032723 , 0.62465533 ), ( 78 , 5.221108075 , 0.633903369 ), ( 78 , 5.241802918 , 0.662956086 ), ( 78 , 5.31951985 , 0.666035103 ), ( 78 , 5.32816554 , 0.681228544 ), ( 78 , 5.271983604 , 0.662699331 ), ( 78 , 5.286723622 , 0.67857879 ), ( 78 , 5.306805225 , 0.714944514 ), ( 78 , 5.400204726 , 0.661972672 ), ( 78 , 5.386000738 , 0.660611947 ), ( 78 , 5.34091213 , 0.690129391 ), ( 78 , 5.349076089 , 0.721459155 ), ( 78 , 5.320396086 , 0.722416318 ), ( 78 , 5.35633255 , 0.751474426 ), ( 78 , 5.328637981 , 0.760775794 ), ( 78 , 5.40304281 , 0.734324147 ), ( 78 , 5.420714246 , 0.79974735 ), ( 78 , 5.200878263 , 0.652333336 ), ( 78 , 5.225759783 , 0.670220794 ), ( 78 , 5.243657388 , 0.676057893 ), ( 78 , 5.23255089 , 0.678592334 ), ( 78 , 5.205549818 , 0.676764347 ), ( 78 , 5.184508348 , 0.658432299 ), ( 78 , 5.133975938 , 0.71499322 ), ( 78 , 5.176284029 , 0.777806569 ), ( 78 , 5.283510223 , 0.752190632 ), ( 78 , 5.317792548 , 0.81233539 ), ( 78 , 5.267863142 , 0.841085162 ), ( 78 , 5.213895421 , 0.886976575 ), ( 78 , 4.915954091 , 0.533835185 ), ( 78 , 4.900121865 , 0.543418156 ), ( 78 , 4.910791504 , 0.59714952 ), ( 78 , 4.888101104 , 0.600691775 ), ( 78 , 4.904104879 , 0.602516428 ), ( 78 , 4.863655647 , 0.624908956 ), ( 78 , 4.869951437 , 0.645234238 ), ( 78 , 5.003901497 , 0.630552087 ), ( 78 , 5.041278136 , 0.675653817 ), ( 78 , 5.011859591 , 0.672108208 ), ( 78 , 4.97667741 , 0.695425309 ), ( 78 , 5.008195276 , 0.679425975 ), ( 78 , 4.976513801 , 0.727528218 ), ( 78 , 5.009147153 , 0.767371759 ), ( 78 , 5.00970185 , 0.768579301 ), ( 78 , 4.867804235 , 0.711563796 ), ( 78 , 4.75998525 , 0.680006535 ), ( 78 , 4.747225949 , 0.69680252 ), ( 78 , 4.79885424 , 0.733072609 ), ( 78 , 4.746637722 , 0.72813533 ), ( 78 , 4.730215235 , 0.810570494 ), ( 78 , 4.822742614 , 0.818304577 ), ( 78 , 4.926761128 , 0.829304402 ), ( 78 , 4.784013503 , 0.844195102 ), ( 78 , 4.795265988 , 0.847732875 ), ( 78 , 4.739085378 , 0.863348805 ), ( 78 , 4.779296533 , 0.889611858 ), ( 78 , 5.085283235 , 0.746704199 ), ( 78 , 5.076775592 , 0.838972154 ), ( 78 , 4.967144881 , 0.834900295 ), ( 78 , 4.956509533 , 0.869183212 ), ( 78 , 5.054917475 , 0.876636788 ), ( 78 , 5.050774981 , 0.896168497 ), ( 78 , 5.109628539 , 0.876101228 ), ( 78 , 5.195174557 , 0.940930421 ), ( 78 , 5.186285069 , 0.972585894 ), ( 78 , 5.087896724 , 0.957948489 ), ( 78 , 5.016202557 , 1.017104869 ), ( 78 , 4.837683578 , 0.906608793 ), ( 78 , 4.876817345 , 0.906628358 ), ( 78 , 4.95017237 , 0.919812448 ), ( 78 , 4.938803247 , 0.926170391 ), ( 78 , 4.806451542 , 0.923317173 ), ( 78 , 4.780135225 , 0.992859536 ), ( 78 , 4.906631977 , 0.999827328 ), ( 78 , 4.901306577 , 1.00911101 ), ( 78 , 4.950214168 , 1.025119363 ), ( 78 , 4.954383511 , 1.063713357 ), ( 78 , 4.912519077 , 1.039503981 ), ( 78 , 4.851611149 , 1.037071559 ), ( 78 , 4.762673086 , 1.057885407 ), ( 78 , 5.497817511 , 0.749293793 ), ( 78 , 5.495915284 , 0.771894439 ), ( 78 , 5.51367503 , 0.791819216 ), ( 78 , 5.477181763 , 0.764280249 ), ( 78 , 5.474902565 , 0.787776785 ), ( 78 , 5.506331483 , 0.820643448 ), ( 78 , 5.550653041 , 0.797676671 ), ( 78 , 5.557714958 , 0.794772511 ), ( 78 , 5.583290735 , 0.859058056 ), ( 78 , 5.522205915 , 0.81966309 ), ( 78 , 5.553372458 , 0.860964451 ), ( 78 , 5.440562679 , 0.822253459 ), ( 78 , 5.526930224 , 0.897552924 ), ( 78 , 5.603350368 , 0.880274377 ), ( 78 , 5.686729944 , 0.914703439 ), ( 78 , 5.659706666 , 0.93159653 ), ( 78 , 5.584971031 , 0.924664116 ), ( 78 , 5.514319815 , 0.948490218 ), ( 78 , 5.5459131 , 0.965728912 ), ( 78 , 5.604326364 , 0.979033967 ), ( 78 , 5.35217485 , 0.891961586 ), ( 78 , 5.328645182 , 0.914735823 ), ( 78 , 5.527973267 , 1.045278345 ), ( 78 , 5.542958683 , 1.050737525 ), ( 78 , 5.577597196 , 1.07839918 ), ( 78 , 5.604481527 , 1.076900767 ), ( 78 , 5.375115119 , 1.048306467 ), ( 78 , 5.394820604 , 1.08235719 ), ( 78 , 5.482144543 , 1.148907325 ), ( 78 , 5.798883997 , 1.027161335 ), ( 78 , 5.741899707 , 1.044285071 ), ( 78 , 5.723843229 , 1.045985997 ), ( 78 , 5.788123925 , 1.058793234 ), ( 78 , 5.796531179 , 1.068981171 ), ( 78 , 5.765819266 , 1.074356108 ), ( 78 , 5.840147637 , 1.103447527 ), ( 78 , 5.796537793 , 1.09486323 ), ( 78 , 6.0073642 , 1.094794624 ), ( 78 , 6.047325734 , 1.12216188 ), ( 78 , 6.087766344 , 1.134679273 ), ( 78 , 5.960575718 , 1.139606113 ), ( 78 , 6.201089425 , 1.193104546 ), ( 78 , 5.645916634 , 1.078619339 ), ( 78 , 5.63130341 , 1.080082418 ), ( 78 , 5.722454434 , 1.129600994 ), ( 78 , 5.596358617 , 1.12100303 ), ( 78 , 5.54196739 , 1.146442232 ), ( 78 , 5.684628253 , 1.205212984 ), ( 78 , 5.904123189 , 1.195639217 ), ( 78 , 5.849142281 , 1.210609467 ), ( 78 , 6.053568502 , 1.23326311 ), ( 78 , 6.271800353 , 1.331938887 ), ( 78 , 6.040002984 , 1.318024711 ), ( 78 , 5.977364541 , 1.311829213 ), ( 78 , 5.248939917 , 0.996315418 ), ( 78 , 5.181262087 , 0.996580798 ), ( 78 , 5.241293282 , 1.08894166 ), ( 78 , 5.11884052 , 1.036659053 ), ( 78 , 5.121581372 , 1.092805651 ), ( 78 , 5.374198928 , 1.090170909 ), ( 78 , 5.26307725 , 1.100840857 ), ( 78 , 5.326437511 , 1.117987855 ), ( 78 , 5.329715724 , 1.129108083 ), ( 78 , 5.203589055 , 1.164222914 ), ( 78 , 5.175058215 , 1.182255896 ), ( 78 , 5.041503302 , 1.154003492 ), ( 78 , 5.059949664 , 1.168916034 ), ( 78 , 4.960280287 , 1.191926605 ), ( 78 , 4.912232579 , 1.199526875 ), ( 78 , 5.12381756 , 1.226262083 ), ( 78 , 5.178836192 , 1.264750841 ), ( 78 , 5.585606807 , 1.214192858 ), ( 78 , 5.514009064 , 1.244669381 ), ( 78 , 5.604255034 , 1.221613566 ), ( 78 , 5.996327442 , 1.332349833 ), ( 78 , 6.111935799 , 1.344996723 ), ( 78 , 6.106355544 , 1.378880314 ), ( 78 , 6.270259042 , 1.392018299 ), ( 78 , 5.996671892 , 1.430034201 ), ( 78 , 5.94740877 , 1.429355297 ), ( 78 , 6.098671288 , 1.436779786 ), ( 78 , 6.060309392 , 1.441361788 ), ( 78 , 5.117609779 , 1.314773591 ), ( 78 , 5.038094597 , 1.331847906 ), ( 78 , 5.102933486 , 1.365991699 ), ( 78 , 5.432558073 , 1.382971602 ), ( 78 , 6.082792587 , 1.470307607 ), ( 78 , 6.139552227 , 1.50112427 ), ( 78 , 6.245965966 , -0.566013352 ), ( 78 , 0.099410091 , -0.617604122 ), ( 78 , 0.120004371 , -0.555503487 ), ( 78 , 0.113173819 , -0.536653772 ), ( 78 , 6.148387137 , -0.493302445 ), ( 78 , 6.186539022 , -0.434223402 ), ( 78 , 6.20978598 , -0.413219396 ), ( 78 , 0.169660293 , -0.446734159 ), ( 78 , 0.227844103 , -0.36841096 ), ( 78 , 0.351272781 , -0.348203557 ), ( 78 , 0.316642301 , -0.357074508 ), ( 78 , 0.307123814 , -0.284607672 ), ( 78 , 0.097447081 , -0.416096018 ), ( 78 , 0.095464076 , -0.401578615 ), ( 78 , 0.114622705 , -0.37826195 ), ( 78 , 0.034859509 , -0.326110994 ), ( 78 , 0.05771691 , -0.299927831 ), ( 78 , 0.066646685 , -0.292454553 ), ( 78 , 6.103830633 , -0.501624654 ), ( 78 , 6.126222293 , -0.476139616 ), ( 78 , 6.149792775 , -0.419551818 ), ( 78 , 6.039104786 , -0.396365438 ), ( 78 , 6.045066228 , -0.392469955 ), ( 78 , 6.096164481 , -0.361021922 ), ( 78 , 6.192711451 , -0.382644771 ), ( 78 , 6.198710769 , -0.331423791 ), ( 78 , 5.983400994 , -0.414782862 ), ( 78 , 6.079310221 , -0.320608049 ), ( 78 , 6.136280956 , -0.226027044 ), ( 78 , 6.047052485 , -0.269700148 ), ( 78 , 6.104804399 , -0.234851123 ), ( 78 , 6.053697023 , -0.206066193 ), ( 78 , 6.089500715 , -0.203021031 ), ( 78 , 0.021418146 , -0.294172868 ), ( 78 , 0.05733775 , -0.134079869 ), ( 78 , 6.144087739 , -0.213146851 ), ( 78 , 6.232878597 , -0.200865132 ), ( 78 , 0.06920482 , -0.097760187 ), ( 78 , 0.023667871 , -0.067228298 ), ( 78 , 6.229262595 , -0.101673312 ), ( 78 , 0.464783962 , -0.184970192 ), ( 78 , 0.511450647 , -0.13637392 ), ( 78 , 0.451052991 , -0.123518208 ), ( 78 , 0.285474279 , -0.225200025 ), ( 78 , 0.227818066 , -0.171607464 ), ( 78 , 0.322554215 , -0.133040907 ), ( 78 , 0.375876363 , -0.116165259 ), ( 78 , 0.443449962 , -0.051653673 ), ( 78 , 0.36584223 , -0.101584221 ), ( 78 , 0.375697784 , -0.038415675 ), ( 78 , 0.618199661 , -0.131654736 ), ( 78 , 0.60589243 , -0.130169784 ), ( 78 , 0.554274079 , -0.073612062 ), ( 78 , 0.538572942 , -0.07556667 ), ( 78 , 0.695196501 , -0.036177267 ), ( 78 , 0.743239403 , 0.016814717 ), ( 78 , 0.561585378 , -0.007627659 ), ( 78 , 0.53572864 , 0.033829959 ), ( 78 , 0.491490222 , 0.043601183 ), ( 78 , 0.597080205 , 0.044961735 ), ( 78 , 0.607924231 , 0.046503669 ), ( 78 , 0.556986309 , 0.098196192 ), ( 78 , 0.203662238 , -0.077297168 ), ( 78 , 0.257659713 , -0.04282124 ), ( 78 , 0.337393635 , 0.032134864 ), ( 78 , 0.258927949 , -0.01177701 ), ( 78 , 0.103160633 , 0.047873935 ), ( 78 , 0.087961323 , 0.052944235 ), ( 78 , 0.222850624 , 0.047876022 ), ( 78 , 0.277844266 , 0.091372857 ), ( 78 , 0.148958328 , 0.103987847 ), ( 78 , 0.216701988 , 0.111825705 ), ( 78 , 0.452224016 , 0.100278283 ), ( 78 , 0.322282544 , 0.08973959 ), ( 78 , 0.525252171 , 0.185526202 ), ( 78 , 0.5046569 , 0.219444131 ), ( 78 , 0.274117879 , 0.130911758 ), ( 78 , 0.271025627 , 0.138592371 ), ( 78 , 0.291036664 , 0.154793766 ), ( 78 , 0.267840951 , 0.147490037 ), ( 78 , 0.441024814 , 0.240382606 ), ( 78 , 0.447020177 , 0.275386805 ), ( 78 , 5.915269394 , -0.307524997 ), ( 78 , 5.903652253 , -0.305463398 ), ( 78 , 5.877608761 , -0.30132026 ), ( 78 , 5.936964861 , -0.29270838 ), ( 78 , 5.95283232 , -0.255023612 ), ( 78 , 5.921421811 , -0.225111 ), ( 78 , 5.78617352 , -0.093522868 ), ( 78 , 5.892877659 , -0.141627623 ), ( 78 , 5.846051715 , -0.070972056 ), ( 78 , 6.12658417 , -0.131786079 ), ( 78 , 6.140279492 , -0.04603305 ), ( 78 , 6.168397956 , -0.039177467 ), ( 78 , 6.187658105 , -0.023310526 ), ( 78 , 6.142369143 , 0.032935086 ), ( 78 , 6.020623743 , -0.042580897 ), ( 78 , 5.965601999 , -0.047298764 ), ( 78 , 6.027428677 , 0.00211695 ), ( 78 , 5.918078 , -0.003255391 ), ( 78 , 6.103431802 , 0.056655336 ), ( 78 , 6.155248402 , 0.091618923 ), ( 78 , 6.1264279 , 0.086067755 ), ( 78 , 6.050951132 , 0.087892304 ), ( 78 , 6.015739507 , 0.093235836 ), ( 78 , 5.779586558 , -0.084474999 ), ( 78 , 5.743633326 , -0.083014973 ), ( 78 , 5.645145768 , -0.094579288 ), ( 78 , 5.703463067 , -0.040019811 ), ( 78 , 5.848993015 , -0.001129821 ), ( 78 , 5.817790965 , 0.00422981 ), ( 78 , 5.851710078 , 0.018052676 ), ( 78 , 5.718337844 , 0.013137916 ), ( 78 , 5.759675004 , 0.016200029 ), ( 78 , 5.803298673 , 0.071529031 ), ( 78 , 5.62132737 , -0.045596593 ), ( 78 , 5.598901378 , -0.0134948 ), ( 78 , 5.680795712 , 0.006038819 ), ( 78 , 5.54821887 , -0.037510168 ), ( 78 , 5.521000187 , 0.01269137 ), ( 78 , 5.592672513 , 0.053718953 ), ( 78 , 5.671280654 , 0.037334397 ), ( 78 , 5.658732499 , 0.101474188 ), ( 78 , 5.6623721 , 0.115698312 ), ( 78 , 5.958702287 , 0.063376056 ), ( 78 , 5.95752344 , 0.064398987 ), ( 78 , 5.920600199 , 0.135822041 ), ( 78 , 5.862191295 , 0.114184959 ), ( 78 , 5.894631747 , 0.147070362 ), ( 78 , 6.020489531 , 0.128387959 ), ( 78 , 5.951942091 , 0.117563045 ), ( 78 , 5.988960727 , 0.133633358 ), ( 78 , 6.046982128 , 0.15526266 ), ( 78 , 6.00008531 , 0.165103719 ), ( 78 , 6.014845474 , 0.171488162 ), ( 78 , 6.040290757 , 0.194968046 ), ( 78 , 5.915126036 , 0.180244437 ), ( 78 , 5.78443739 , 0.104136951 ), ( 78 , 5.834242359 , 0.146155817 ), ( 78 , 5.848399258 , 0.192668507 ), ( 78 , 5.909252365 , 0.299385848 ), ( 78 , 5.882602465 , 0.301299387 ), ( 78 , 6.27050938 , 0.053597895 ), ( 78 , 6.282770877 , 0.103957117 ), ( 78 , 0.036789527 , 0.11548477 ), ( 78 , 0.00116616 , 0.139752603 ), ( 78 , 0.05813497 , 0.155854759 ), ( 78 , 6.179560492 , 0.119741347 ), ( 78 , 6.135457487 , 0.155852806 ), ( 78 , 6.218611494 , 0.262556871 ), ( 78 , 0.207228403 , 0.203196508 ), ( 78 , 0.202867785 , 0.229545886 ), ( 78 , 0.175752568 , 0.276194233 ), ( 78 , 0.296449694 , 0.303898061 ), ( 78 , 0.297666229 , 0.383565509 ), ( 78 , 0.303915237 , 0.415286638 ), ( 78 , 0.122732129 , 0.291747629 ), ( 78 , 0.137544248 , 0.368444086 ), ( 78 , 0.041529344 , 0.341363624 ), ( 78 , 0.249819834 , 0.471230943 ), ( 78 , 0.115046133 , 0.43170408 ), ( 78 , 0.118718974 , 0.446425939 ), ( 78 , 0.19905663 , 0.509453852 ), ( 78 , 6.091781784 , 0.318650707 ), ( 78 , 6.213299544 , 0.305633079 ), ( 78 , 6.178988523 , 0.321911213 ), ( 78 , 6.125775341 , 0.372760391 ), ( 78 , 6.182574289 , 0.379138794 ), ( 78 , 6.002061697 , 0.317581961 ), ( 78 , 5.999638829 , 0.341378645 ), ( 78 , 5.960188775 , 0.33598151 ), ( 78 , 5.952744012 , 0.365425095 ), ( 78 , 6.025927524 , 0.390803795 ), ( 78 , 6.083647552 , 0.344971581 ), ( 78 , 6.159676645 , 0.420814716 ), ( 78 , 6.028297034 , 0.402704445 ), ( 78 , 6.106945402 , 0.479785772 ), ( 78 , 6.280789898 , 0.356289384 ), ( 78 , 6.281974589 , 0.371556312 ), ( 78 , 6.260733686 , 0.392214038 ), ( 78 , 0.088316439 , 0.430500551 ), ( 78 , 0.02642851 , 0.434874586 ), ( 78 , 0.01240205 , 0.493089477 ), ( 78 , 0.092362627 , 0.442236819 ), ( 78 , 0.080762241 , 0.456231165 ), ( 78 , 0.084501712 , 0.461709193 ), ( 78 , 0.093494079 , 0.494388636 ), ( 78 , 0.132910082 , 0.489967242 ), ( 78 , 0.089570575 , 0.540619528 ), ( 78 , 0.116420815 , 0.596619816 ), ( 78 , 6.137086509 , 0.554090819 ), ( 78 , 0.076585446 , 0.637923527 ), ( 78 , 0.073061236 , 0.636900087 ), ( 78 , 6.253862004 , 0.622220376 ), ( 78 , 6.248838969 , 0.634529869 ), ( 78 , 6.281697888 , 0.659726556 ), ( 78 , 6.247714531 , 0.661317736 ), ( 78 , 1.554848322 , -0.683393562 ), ( 78 , 1.603577517 , -0.633720758 ), ( 78 , 1.603459893 , -0.614785062 ), ( 78 , 1.672296195 , -0.540101028 ), ( 78 , 1.667015114 , -0.532907975 ), ( 78 , 1.723233081 , -0.563856718 ), ( 78 , 1.725483598 , -0.551373817 ), ( 78 , 1.732480071 , -0.501020382 ), ( 78 , 1.588773533 , -0.512062787 ), ( 78 , 1.621486301 , -0.487427251 ), ( 78 , 1.664692958 , -0.508769083 ), ( 78 , 1.693377363 , -0.473745638 ), ( 78 , 1.666655963 , -0.460237152 ), ( 78 , 1.432124366 , -0.572867106 ), ( 78 , 1.465800126 , -0.532960966 ), ( 78 , 1.522177536 , -0.565952472 ), ( 78 , 1.548945482 , -0.52893434 ), ( 78 , 1.501883099 , -0.480753427 ), ( 78 , 1.614145297 , -0.447247811 ), ( 78 , 1.599806473 , -0.41085922 ), ( 78 , 1.53762269 , -0.458866047 ), ( 78 , 1.479975798 , -0.434252372 ), ( 78 , 1.782767782 , -0.477886569 ), ( 78 , 1.728517988 , -0.482131883 ), ( 78 , 1.817568785 , -0.452245693 ), ( 78 , 1.801150414 , -0.402245784 ), ( 78 , 1.806154536 , -0.389706278 ), ( 78 , 1.797335435 , -0.38927236 ), ( 78 , 1.770116196 , -0.361171772 ), ( 78 , 1.837285698 , -0.383349078 ), ( 78 , 1.876232715 , -0.341831048 ), ( 78 , 1.885745262 , -0.342438181 ), ( 78 , 1.894424074 , -0.33133201 ), ( 78 , 1.895202134 , -0.321755948 ), ( 78 , 1.824887425 , -0.310305375 ), ( 78 , 1.903353187 , -0.301880134 ), ( 78 , 1.693905054 , -0.384076281 ), ( 78 , 1.689229661 , -0.376162223 ), ( 78 , 1.685954252 , -0.352108731 ), ( 78 , 1.694124734 , -0.34552584 ), ( 78 , 1.639285392 , -0.352583545 ), ( 78 , 1.580376969 , -0.343683349 ), ( 78 , 1.703432889 , -0.295716364 ), ( 78 , 1.736472064 , -0.300598269 ), ( 78 , 1.732305187 , -0.285478101 ), ( 78 , 1.776920712 , -0.280412693 ), ( 78 , 1.834298066 , -0.266317519 ), ( 78 , 1.808284919 , -0.252211044 ), ( 78 , 1.783990524 , -0.251137351 ), ( 78 , 1.83085729 , -0.226930289 ), ( 78 , 1.720595795 , -0.279436477 ), ( 78 , 1.713345461 , -0.276436174 ), ( 78 , 1.690176337 , -0.267313575 ), ( 78 , 1.677267835 , -0.25888878 ), ( 78 , 1.679998028 , -0.253140932 ), ( 78 , 1.723746909 , -0.220063967 ), ( 78 , 1.776381576 , -0.212915424 ), ( 78 , 1.742951456 , -0.210052882 ), ( 78 , 1.758185975 , -0.205357638 ), ( 78 , 1.780043033 , -0.193878403 ), ( 78 , 1.375952127 , -0.519393198 ), ( 78 , 1.448992752 , -0.408926188 ), ( 78 , 1.388659367 , -0.440739548 ), ( 78 , 1.407997743 , -0.405945954 ), ( 78 , 1.471433686 , -0.425898685 ), ( 78 , 1.43843694 , -0.396517618 ), ( 78 , 1.560913236 , -0.338375381 ), ( 78 , 1.535034462 , -0.338363991 ), ( 78 , 1.501442211 , -0.341582085 ), ( 78 , 1.484780721 , -0.335600573 ), ( 78 , 1.413183789 , -0.361764036 ), ( 78 , 1.33207115 , -0.371032697 ), ( 78 , 1.329486975 , -0.370378787 ), ( 78 , 1.317263391 , -0.343180699 ), ( 78 , 1.34617528 , -0.316246241 ), ( 78 , 1.258341651 , -0.346489384 ), ( 78 , 1.213316407 , -0.310950703 ), ( 78 , 1.304719155 , -0.285801796 ), ( 78 , 1.388168966 , -0.282514089 ), ( 78 , 1.599395322 , -0.294889041 ), ( 78 , 1.569138622 , -0.292973424 ), ( 78 , 1.569767267 , -0.275843597 ), ( 78 , 1.573024418 , -0.212398937 ), ( 78 , 1.583425231 , -0.198070825 ), ( 78 , 1.557952624 , -0.189450596 ), ( 78 , 1.714089858 , -0.210428176 ), ( 78 , 1.738922063 , -0.162694741 ), ( 78 , 1.625128403 , -0.183055989 ), ( 78 , 1.675429087 , -0.158280081 ), ( 78 , 1.66667596 , -0.143635158 ), ( 78 , 1.624488975 , -0.127821096 ), ( 78 , 1.678956334 , -0.096060534 ), ( 78 , 1.473142299 , -0.143123574 ), ( 78 , 1.535686907 , -0.127585 ), ( 78 , 1.578880282 , -0.064254844 ), ( 78 , 1.571365657 , -0.008757895 ), ( 78 , 1.964316951 , -0.297883232 ), ( 78 , 1.936578823 , -0.276943925 ), ( 78 , 1.986798074 , -0.245185904 ), ( 78 , 1.981554809 , -0.227581329 ), ( 78 , 2.008128553 , -0.210843671 ), ( 78 , 2.063853864 , -0.245359429 ), ( 78 , 2.056116478 , -0.220099089 ), ( 78 , 2.07759709 , -0.172145948 ), ( 78 , 2.068033813 , -0.162730914 ), ( 78 , 2.053445266 , -0.101280849 ), ( 78 , 1.845327565 , -0.230690757 ), ( 78 , 1.84426194 , -0.23020522 ), ( 78 , 1.844830858 , -0.228565967 ), ( 78 , 1.846251653 , -0.195463169 ), ( 78 , 1.881692844 , -0.183984678 ), ( 78 , 1.893402048 , -0.165032317 ), ( 78 , 1.803401329 , -0.169129056 ), ( 78 , 1.807858753 , -0.167770422 ), ( 78 , 1.81130883 , -0.148335329 ), ( 78 , 1.856973388 , -0.152347358 ), ( 78 , 1.875727015 , -0.100108224 ), ( 78 , 1.966618587 , -0.162490919 ), ( 78 , 1.963860284 , -0.148671961 ), ( 78 , 2.047269648 , -0.081311793 ), ( 78 , 1.948882656 , -0.075370426 ), ( 78 , 1.906311723 , -0.064780802 ), ( 78 , 1.953520928 , -0.053606975 ), ( 78 , 1.989514416 , -0.058788049 ), ( 78 , 1.982366923 , -0.023010001 ), ( 78 , 1.974139019 , -0.009055266 ), ( 78 , 2.169710208 , -0.093706693 ), ( 78 , 2.20995544 , -0.04780001 ), ( 78 , 2.134807341 , -0.079456747 ), ( 78 , 2.170731778 , -0.054238459 ), ( 78 , 2.298447771 , -0.00616901 ), ( 78 , 2.302004875 , 0.001355609 ), ( 78 , 2.224394475 , 0.004773276 ), ( 78 , 2.229840223 , 0.023339704 ), ( 78 , 2.242297016 , 0.02767165 ), ( 78 , 2.069128567 , -0.061874719 ), ( 78 , 2.106053205 , -0.041839321 ), ( 78 , 2.129032466 , -0.023552494 ), ( 78 , 2.132845896 , 0.008018687 ), ( 78 , 2.137916787 , 0.017811243 ), ( 78 , 2.113791966 , 0.016772344 ), ( 78 , 1.967672011 , 0.002716291 ), ( 78 , 2.171154022 , 0.020000221 ), ( 78 , 2.111517532 , 0.059319782 ), ( 78 , 2.13130622 , 0.093662354 ), ( 78 , 2.078600395 , 0.074248297 ), ( 78 , 2.121102403 , 0.097031722 ), ( 78 , 2.126223122 , 0.127112932 ), ( 78 , 2.133738864 , 0.140315934 ), ( 78 , 1.802633109 , -0.135533686 ), ( 78 , 1.80742726 , -0.105042708 ), ( 78 , 1.69206828 , -0.084207445 ), ( 78 , 1.695844259 , -0.066053422 ), ( 78 , 1.793923342 , -0.051459765 ), ( 78 , 1.781834603 , -0.03172785 ), ( 78 , 1.7693954 , -0.02495828 ), ( 78 , 1.909489021 , 0.003160354 ), ( 78 , 1.81860653 , 0.014006066 ), ( 78 , 1.81600831 , 0.040434799 ), ( 78 , 1.691907525 , -0.046424115 ), ( 78 , 1.641162369 , -0.050303576 ), ( 78 , 1.630124474 , -0.039328094 ), ( 78 , 1.660371002 , -0.023853644 ), ( 78 , 1.665591841 , -0.009428506 ), ( 78 , 1.69444867 , -0.012728914 ), ( 78 , 1.689272947 , 0.002355937 ), ( 78 , 1.722041877 , 0.030153614 ), ( 78 , 1.619300952 , -0.032878501 ), ( 78 , 1.622876072 , -0.023102254 ), ( 78 , 1.649897795 , -0.006470294 ), ( 78 , 1.765440648 , 0.010285301 ), ( 78 , 1.81009152 , 0.056494703 ), ( 78 , 1.811771479 , 0.094841122 ), ( 78 , 1.817006754 , 0.104791748 ), ( 78 , 1.718742637 , 0.081374212 ), ( 78 , 1.685995181 , 0.07161833 ), ( 78 , 1.684111745 , 0.077168207 ), ( 78 , 1.811352191 , 0.126866003 ), ( 78 , 1.893925407 , 0.079898141 ), ( 78 , 1.896147052 , 0.091990945 ), ( 78 , 1.991976952 , 0.128290128 ), ( 78 , 1.93651448 , 0.121231356 ), ( 78 , 2.108539296 , 0.173534476 ), ( 78 , 2.03231352 , 0.181442286 ), ( 78 , 2.078397056 , 0.189626452 ), ( 78 , 2.082647725 , 0.231590273 ), ( 78 , 1.857666223 , 0.136899193 ), ( 78 , 1.797375904 , 0.188510572 ), ( 78 , 1.835453609 , 0.222355149 ), ( 78 , 1.981942562 , 0.188920124 ), ( 78 , 1.944180731 , 0.228163045 ), ( 78 , 1.220559709 , -0.296060399 ), ( 78 , 1.172220688 , -0.20871425 ), ( 78 , 1.173359608 , -0.193006212 ), ( 78 , 1.276625533 , -0.183061792 ), ( 78 , 1.32126367 , -0.143281948 ), ( 78 , 1.200882236 , -0.169943764 ), ( 78 , 1.21548876 , -0.163069236 ), ( 78 , 1.28964715 , -0.106599002 ), ( 78 , 1.155251402 , -0.160980987 ), ( 78 , 1.10607442 , -0.181293967 ), ( 78 , 1.018406899 , -0.184052984 ), ( 78 , 1.030167465 , -0.133374004 ), ( 78 , 1.074682291 , -0.136636469 ), ( 78 , 1.201449625 , -0.144717408 ), ( 78 , 1.188385231 , -0.087951498 ), ( 78 , 1.143934761 , -0.081628063 ), ( 78 , 1.10483537 , -0.067804034 ), ( 78 , 1.387606821 , -0.143607448 ), ( 78 , 1.393443873 , -0.128233451 ), ( 78 , 1.390034102 , -0.108977262 ), ( 78 , 1.441078075 , -0.104507022 ), ( 78 , 1.436032288 , -0.095030001 ), ( 78 , 1.422177561 , -0.104573122 ), ( 78 , 1.309857083 , -0.109973156 ), ( 78 , 1.353338496 , -0.067238936 ), ( 78 , 1.29189836 , -0.09290121 ), ( 78 , 1.37986807 , -0.060791749 ), ( 78 , 1.356798907 , -0.030786995 ), ( 78 , 1.488484566 , -0.063400572 ), ( 78 , 1.490684916 , -0.039427361 ), ( 78 , 1.477461388 , -0.044567831 ), ( 78 , 1.468300892 , -0.034624115 ), ( 78 , 1.47149635 , -0.029107423 ), ( 78 , 1.478827863 , -0.020425696 ), ( 78 , 1.475277085 , -0.003216741 ), ( 78 , 1.549109453 , -0.008871899 ), ( 78 , 1.430058681 , -0.031644683 ), ( 78 , 1.411400488 , -0.017495904 ), ( 78 , 1.389173474 , 0.010353245 ), ( 78 , 1.478630598 , 0.049947412 ), ( 78 , 1.335917617 , -0.021712686 ), ( 78 , 1.26828856 , 0.07493726 ), ( 78 , 1.379640537 , 0.030664325 ), ( 78 , 1.413015738 , 0.036340807 ), ( 78 , 1.407288494 , 0.052067759 ), ( 78 , 1.42412718 , 0.067314849 ), ( 78 , 1.446225312 , 0.075319306 ), ( 78 , 1.309594448 , 0.057361525 ), ( 78 , 1.331294736 , 0.106991508 ), ( 78 , 1.405420616 , 0.123737562 ), ( 78 , 1.375215033 , 0.14716858 ), ( 78 , 1.026060405 , -0.08682325 ), ( 78 , 0.997601678 , -0.077168789 ), ( 78 , 1.004905794 , -0.067870846 ), ( 78 , 1.041233653 , -0.046277857 ), ( 78 , 1.05718079 , -0.02849987 ), ( 78 , 1.138088165 , 0.001333259 ), ( 78 , 1.087134818 , 0.003125775 ), ( 78 , 0.872819387 , -0.027787836 ), ( 78 , 0.846703282 , 0.012902365 ), ( 78 , 0.86044029 , 0.027193399 ), ( 78 , 0.934742381 , 0.059900325 ), ( 78 , 0.972000854 , 0.137930285 ), ( 78 , 1.12819661 , 0.043111855 ), ( 78 , 1.204955994 , 0.143565621 ), ( 78 , 1.275616405 , 0.162983077 ), ( 78 , 1.214128042 , 0.151742692 ), ( 78 , 1.290974547 , 0.237903686 ), ( 78 , 1.112713626 , 0.187588575 ), ( 78 , 1.150572483 , 0.241353439 ), ( 78 , 1.13335538 , 0.249096333 ), ( 78 , 1.177234692 , 0.308531411 ), ( 78 , 1.603037305 , 0.05395933 ), ( 78 , 1.615106608 , 0.057826019 ), ( 78 , 1.612802546 , 0.08233719 ), ( 78 , 1.596436042 , 0.100145109 ), ( 78 , 1.611761061 , 0.109526494 ), ( 78 , 1.519529914 , 0.068041392 ), ( 78 , 1.523365053 , 0.073520314 ), ( 78 , 1.537126369 , 0.127918789 ), ( 78 , 1.58623221 , 0.149912316 ), ( 78 , 1.700012944 , 0.148219211 ), ( 78 , 1.720901608 , 0.158572521 ), ( 78 , 1.750358932 , 0.15684064 ), ( 78 , 1.73454422 , 0.159588063 ), ( 78 , 1.748404713 , 0.168527047 ), ( 78 , 1.713953704 , 0.177430306 ), ( 78 , 1.700367758 , 0.186146773 ), ( 78 , 1.641910277 , 0.157562266 ), ( 78 , 1.662711897 , 0.170377557 ), ( 78 , 1.608446353 , 0.168155238 ), ( 78 , 1.604003537 , 0.192121319 ), ( 78 , 1.67381481 , 0.190822737 ), ( 78 , 1.673549567 , 0.245074401 ), ( 78 , 1.460145193 , 0.10693024 ), ( 78 , 1.473148069 , 0.106663735 ), ( 78 , 1.518059753 , 0.138934572 ), ( 78 , 1.51295663 , 0.192859122 ), ( 78 , 1.597041349 , 0.217804329 ), ( 78 , 1.653919548 , 0.245996856 ), ( 78 , 1.600607549 , 0.248032038 ), ( 78 , 1.594600298 , 0.254413354 ), ( 78 , 1.593398529 , 0.269636829 ), ( 78 , 1.619750347 , 0.271604731 ), ( 78 , 1.547869231 , 0.241810637 ), ( 78 , 1.786640019 , 0.210989348 ), ( 78 , 1.757232636 , 0.205450517 ), ( 78 , 1.739000956 , 0.2223251 ), ( 78 , 1.743206111 , 0.225225835 ), ( 78 , 1.80925729 , 0.2299581 ), ( 78 , 1.753144107 , 0.251560205 ), ( 78 , 1.708476496 , 0.269168814 ), ( 78 , 1.777553007 , 0.296220651 ), ( 78 , 1.761131401 , 0.292916351 ), ( 78 , 1.868366835 , 0.270864103 ), ( 78 , 1.861424937 , 0.333517012 ), ( 78 , 1.882298574 , 0.35358646 ), ( 78 , 1.933213456 , 0.358760237 ), ( 78 , 1.857401819 , 0.366445457 ), ( 78 , 1.875098135 , 0.390334375 ), ( 78 , 1.842301528 , 0.363520097 ), ( 78 , 1.840899335 , 0.384656726 ), ( 78 , 1.676367216 , 0.276647729 ), ( 78 , 1.697585527 , 0.309692985 ), ( 78 , 1.660570372 , 0.315015036 ), ( 78 , 1.732389962 , 0.334402694 ), ( 78 , 1.604090132 , 0.330086705 ), ( 78 , 1.667835322 , 0.343873288 ), ( 78 , 1.822856507 , 0.399533191 ), ( 78 , 1.692887367 , 0.413089095 ), ( 78 , 1.814277321 , 0.475592327 ), ( 78 , 1.752798294 , 0.472662297 ), ( 78 , 1.403466136 , 0.276578025 ), ( 78 , 1.33201925 , 0.265985486 ), ( 78 , 1.33986951 , 0.27816537 ), ( 78 , 1.399426027 , 0.300945615 ), ( 78 , 1.510324689 , 0.329178261 ), ( 78 , 1.558306057 , 0.335393703 ), ( 78 , 1.50976847 , 0.372060855 ), ( 78 , 1.408297433 , 0.331813274 ), ( 78 , 1.470610417 , 0.361769578 ), ( 78 , 1.480244789 , 0.407068933 ), ( 78 , 1.265155485 , 0.27106664 ), ( 78 , 1.281037784 , 0.33288586 ), ( 78 , 1.248281161 , 0.328134639 ), ( 78 , 1.280059682 , 0.42197225 ), ( 78 , 1.352103888 , 0.383755393 ), ( 78 , 1.313943887 , 0.409086666 ), ( 78 , 1.327972329 , 0.41062545 ), ( 78 , 1.343586027 , 0.459501666 ), ( 78 , 1.571506542 , 0.348907024 ), ( 78 , 1.588667691 , 0.37514157 ), ( 78 , 1.604168161 , 0.381758638 ), ( 78 , 1.563854101 , 0.404143801 ), ( 78 , 1.658419344 , 0.428770791 ), ( 78 , 1.609177339 , 0.447594417 ), ( 78 , 1.51620796 , 0.400072448 ), ( 78 , 1.524286614 , 0.422764591 ), ( 78 , 1.492051276 , 0.42443826 ), ( 78 , 1.51827549 , 0.430424387 ), ( 78 , 1.530666838 , 0.483207427 ), ( 78 , 1.66063505 , 0.446940744 ), ( 78 , 1.717799787 , 0.488346069 ), ( 78 , 1.693172538 , 0.510365891 ), ( 78 , 1.647164263 , 0.563094805 ), ( 78 , 1.686386618 , 0.593585655 ), ( 78 , 1.667011656 , 0.60382969 ), ( 78 , 1.515877818 , 0.51760685 ), ( 78 , 1.442510792 , 0.549969879 ), ( 78 , 1.501838085 , 0.5777035 ), ( 78 , 1.586467586 , 0.591357597 ), ( 78 , 1.617675263 , 0.597956001 ), ( 78 , 1.605515602 , 0.596269345 ), ( 78 , 1.632102693 , 0.651366791 ), ( 78 , 1.508831398 , 0.657271667 ), ( 78 , 1.569232846 , 0.642533782 ), ( 78 , 1.572317105 , 0.695988394 ), ( 78 , 3.167793039 , -0.68452341 ), ( 78 , 3.109748025 , -0.662994112 ), ( 78 , 3.203182307 , -0.638030102 ), ( 78 , 3.207007996 , -0.632174031 ), ( 78 , 3.199233848 , -0.581772588 ), ( 78 , 3.184328431 , -0.584468089 ), ( 78 , 3.103137009 , -0.644651646 ), ( 78 , 3.127191646 , -0.56318657 ), ( 78 , 3.209533026 , -0.553098853 ), ( 78 , 3.198643114 , -0.550099284 ), ( 78 , 3.253283609 , -0.467953254 ), ( 78 , 3.234400852 , -0.46657025 ), ( 78 , 3.031720037 , -0.495853016 ), ( 78 , 3.030423336 , -0.493723414 ), ( 78 , 3.046467276 , -0.493767454 ), ( 78 , 3.082535717 , -0.435921313 ), ( 78 , 3.081227932 , -0.43412808 ), ( 78 , 3.051583107 , -0.434524655 ), ( 78 , 3.150505731 , -0.363179055 ), ( 78 , 3.147646341 , -0.360656371 ), ( 78 , 3.362768086 , -0.486072503 ), ( 78 , 3.375946415 , -0.478299899 ), ( 78 , 3.331543451 , -0.459049726 ), ( 78 , 3.420544831 , -0.427902621 ), ( 78 , 3.370952232 , -0.403803095 ), ( 78 , 3.448572759 , -0.412328292 ), ( 78 , 3.40853433 , -0.316297413 ), ( 78 , 3.409386743 , -0.312101137 ), ( 78 , 3.333045804 , -0.319125356 ), ( 78 , 3.349792535 , -0.219569547 ), ( 78 , 2.909716986 , -0.411127101 ), ( 78 , 2.986268551 , -0.385494276 ), ( 78 , 2.999352622 , -0.323229483 ), ( 78 , 3.059476499 , -0.29117814 ), ( 78 , 3.00576287 , -0.289636207 ), ( 78 , 2.802857202 , -0.359593766 ), ( 78 , 2.847838352 , -0.289524214 ), ( 78 , 2.8257086 , -0.272744233 ), ( 78 , 2.967988945 , -0.242330766 ), ( 78 , 3.101640204 , -0.268590903 ), ( 78 , 3.108630404 , -0.246565826 ), ( 78 , 3.332743187 , -0.170497005 ), ( 78 , 3.201015199 , -0.166044974 ), ( 78 , 3.01440764 , -0.117269429 ), ( 78 , 3.099312179 , -0.128735172 ), ( 78 , 3.166955954 , -0.102243419 ), ( 78 , 3.177405032 , -0.074822095 ), ( 78 , 3.155635435 , -0.059269938 ), ( 78 , 3.138291633 , -0.057993502 ), ( 78 , 3.119207184 , -0.025370444 ), ( 78 , 3.565066009 , -0.28705858 ), ( 78 , 3.57501948 , -0.26544274 ), ( 78 , 3.50270201 , -0.23014831 ), ( 78 , 3.623073565 , -0.228817787 ), ( 78 , 3.603539301 , -0.195833714 ), ( 78 , 3.680558753 , -0.187297446 ), ( 78 , 3.650354945 , -0.175129181 ), ( 78 , 3.61296077 , -0.140075726 ), ( 78 , 3.637426252 , -0.108010628 ), ( 78 , 3.355441945 , -0.160929975 ), ( 78 , 3.398980335 , -0.152530517 ), ( 78 , 3.484332182 , -0.109359134 ), ( 78 , 3.473420477 , -0.098942773 ), ( 78 , 3.733708272 , -0.133799513 ), ( 78 , 3.75055287 , -0.089919886 ), ( 78 , 3.787707708 , -0.0524285 ), ( 78 , 3.820518126 , 0.060518191 ), ( 78 , 3.590857486 , -0.021082508 ), ( 78 , 3.778254642 , 0.084775444 ), ( 78 , 3.750832479 , 0.102907044 ), ( 78 , 3.358499053 , -0.120081991 ), ( 78 , 3.32745332 , -0.095446344 ), ( 78 , 3.384536493 , -0.061968815 ), ( 78 , 3.255645578 , -0.078203208 ), ( 78 , 3.461099728 , -0.044609849 ), ( 78 , 3.458919312 , -0.039531095 ), ( 78 , 3.403724636 , 0.00536575 ), ( 78 , 3.40996836 , 0.026533811 ), ( 78 , 3.258368544 , -0.003199478 ), ( 78 , 3.172964421 , -0.010994463 ), ( 78 , 3.319748041 , 0.067534845 ), ( 78 , 3.405583938 , 0.0629084 ), ( 78 , 3.382684359 , 0.09250996 ), ( 78 , 3.27848542 , 0.088191916 ), ( 78 , 3.280563881 , 0.099656252 ), ( 78 , 3.49367504 , 0.051345694 ), ( 78 , 3.535934828 , 0.129418879 ), ( 78 , 3.655400539 , 0.208782725 ), ( 78 , 3.453627004 , 0.118477219 ), ( 78 , 3.493049823 , 0.143900024 ), ( 78 , 3.388508693 , 0.162608255 ), ( 78 , 3.503735172 , 0.266173927 ), ( 78 , 3.52749751 , 0.274163219 ), ( 78 , 2.760610772 , -0.295996123 ), ( 78 , 2.832268313 , -0.264673587 ), ( 78 , 2.773537358 , -0.22689835 ), ( 78 , 2.783599537 , -0.200881476 ), ( 78 , 2.883537941 , -0.219188703 ), ( 78 , 2.848085183 , -0.199361206 ), ( 78 , 2.767662901 , -0.172775245 ), ( 78 , 2.742249218 , -0.172460746 ), ( 78 , 2.650950618 , -0.112372445 ), ( 78 , 2.832460327 , -0.094367589 ), ( 78 , 2.689037306 , -0.101735582 ), ( 78 , 2.703483441 , -0.091240208 ), ( 78 , 2.900240646 , -0.07368452 ), ( 78 , 2.879950166 , -0.060580812 ), ( 78 , 2.937151601 , -0.024620288 ), ( 78 , 3.045497537 , -0.027899658 ), ( 78 , 2.999258217 , 0.023965565 ), ( 78 , 2.802835624 , 0.015047679 ), ( 78 , 2.987792558 , 0.03659226 ), ( 78 , 2.996516748 , 0.052493059 ), ( 78 , 2.915694809 , 0.061668593 ), ( 78 , 2.882510833 , 0.065262275 ), ( 78 , 2.974292586 , 0.126061616 ), ( 78 , 2.925665497 , 0.137736248 ), ( 78 , 2.533757032 , -0.120238976 ), ( 78 , 2.54473642 , -0.1157342 ), ( 78 , 2.526236238 , -0.070086308 ), ( 78 , 2.494852662 , -0.059063802 ), ( 78 , 2.550393128 , -0.081283551 ), ( 78 , 2.641324187 , -0.058886797 ), ( 78 , 2.648456645 , -0.057316807 ), ( 78 , 2.666084661 , -0.042151461 ), ( 78 , 2.703750965 , -0.003665889 ), ( 78 , 2.726056848 , -0.013793823 ), ( 78 , 2.691557449 , 0.03137772 ), ( 78 , 2.439640538 , -0.042901918 ), ( 78 , 2.452927996 , -0.007432651 ), ( 78 , 2.445377474 , 0.004952037 ), ( 78 , 2.469658511 , 0.052888978 ), ( 78 , 2.422312487 , 0.036366831 ), ( 78 , 2.616697289 , 0.091133792 ), ( 78 , 2.618937291 , 0.109095523 ), ( 78 , 2.466912027 , 0.074796903 ), ( 78 , 2.753309965 , 0.093223083 ), ( 78 , 2.816797902 , 0.131146993 ), ( 78 , 2.798592758 , 0.149444818 ), ( 78 , 2.811879073 , 0.181070011 ), ( 78 , 2.854880349 , 0.215915549 ), ( 78 , 2.729629431 , 0.15317855 ), ( 78 , 2.564606771 , 0.175840025 ), ( 78 , 2.779551138 , 0.224552386 ), ( 78 , 2.776062819 , 0.2410833 ), ( 78 , 2.742006586 , 0.25749362 ), ( 78 , 3.164189454 , 0.038101295 ), ( 78 , 3.120288857 , 0.056175515 ), ( 78 , 3.167116948 , 0.093501872 ), ( 78 , 3.127651955 , 0.093282381 ), ( 78 , 3.104802237 , 0.12002152 ), ( 78 , 3.287364995 , 0.138676346 ), ( 78 , 3.274955152 , 0.169564482 ), ( 78 , 3.305827638 , 0.184728987 ), ( 78 , 3.295087722 , 0.201545029 ), ( 78 , 3.049994778 , 0.105715818 ), ( 78 , 3.079674012 , 0.121172874 ), ( 78 , 3.108179265 , 0.17363617 ), ( 78 , 3.11075907 , 0.234240341 ), ( 78 , 3.114782157 , 0.244862426 ), ( 78 , 3.162134195 , 0.283944985 ), ( 78 , 3.339878413 , 0.250685944 ), ( 78 , 3.309247192 , 0.259571748 ), ( 78 , 3.373115061 , 0.342171333 ), ( 78 , 3.200445485 , 0.299871716 ), ( 78 , 3.26705267 , 0.348222933 ), ( 78 , 3.303820368 , 0.36997058 ), ( 78 , 3.368051693 , 0.448110288 ), ( 78 , 3.372930349 , 0.467635086 ), ( 78 , 2.962086288 , 0.184942006 ), ( 78 , 3.07767321 , 0.347126275 ), ( 78 , 2.997834693 , 0.381373673 ), ( 78 , 3.048808992 , 0.407199383 ), ( 78 , 2.805082611 , 0.320830265 ), ( 78 , 2.824295808 , 0.394017456 ), ( 78 , 2.860147337 , 0.404288208 ), ( 78 , 2.965230217 , 0.361725982 ), ( 78 , 2.998248384 , 0.436816392 ), ( 78 , 2.867792885 , 0.421375419 ), ( 78 , 2.871723092 , 0.42543191 ), ( 78 , 2.902681545 , 0.439848713 ), ( 78 , 3.279267441 , 0.472358376 ), ( 78 , 3.262764283 , 0.478615121 ), ( 78 , 3.177619207 , 0.528404026 ), ( 78 , 3.249875359 , 0.54164303 ), ( 78 , 3.069079762 , 0.489659022 ), ( 78 , 3.09615908 , 0.514845929 ), ( 78 , 2.990093264 , 0.519380493 ), ( 78 , 3.183794485 , 0.577479136 ), ( 78 , 3.102843597 , 0.642894857 ), ( 78 , 4.70445104 , -0.651669944 ), ( 78 , 4.708708695 , -0.628915343 ), ( 78 , 4.765776557 , -0.666456219 ), ( 78 , 4.776294342 , -0.644008721 ), ( 78 , 4.73744683 , -0.638432683 ), ( 78 , 4.674265555 , -0.659904825 ), ( 78 , 4.671934259 , -0.620150591 ), ( 78 , 4.685263933 , -0.608184295 ), ( 78 , 4.627775982 , -0.622183552 ), ( 78 , 4.660848162 , -0.603569067 ), ( 78 , 4.676965165 , -0.607068909 ), ( 78 , 4.65393516 , -0.603679726 ), ( 78 , 4.688991996 , -0.592650271 ), ( 78 , 4.800310243 , -0.606933568 ), ( 78 , 4.835362508 , -0.566707987 ), ( 78 , 4.87507981 , -0.514426274 ), ( 78 , 4.845542965 , -0.502574607 ), ( 78 , 4.747498813 , -0.541072544 ), ( 78 , 4.784446241 , -0.530668241 ), ( 78 , 4.724569312 , -0.512538086 ), ( 78 , 4.742599893 , -0.50745151 ), ( 78 , 4.760620335 , -0.51928315 ), ( 78 , 4.764804604 , -0.516114981 ), ( 78 , 4.757343816 , -0.509866138 ), ( 78 , 4.853158886 , -0.475098416 ), ( 78 , 4.817838982 , -0.46159099 ), ( 78 , 4.815165618 , -0.456782834 ), ( 78 , 4.617591405 , -0.573752517 ), ( 78 , 4.584415679 , -0.559582734 ), ( 78 , 4.547769655 , -0.551262313 ), ( 78 , 4.554869703 , -0.520482068 ), ( 78 , 4.569599226 , -0.502137152 ), ( 78 , 4.620797451 , -0.495901823 ), ( 78 , 4.73148685 , -0.47800908 ), ( 78 , 4.7527501 , -0.455864309 ), ( 78 , 4.730948748 , -0.422079396 ), ( 78 , 4.746573823 , -0.399328824 ), ( 78 , 4.950778274 , -0.469321043 ), ( 78 , 4.95987288 , -0.429714451 ), ( 78 , 4.901484657 , -0.391143296 ), ( 78 , 4.910010818 , -0.360365202 ), ( 78 , 5.0057982 , -0.428023472 ), ( 78 , 5.015982548 , -0.404759809 ), ( 78 , 4.978899306 , -0.3377113 ), ( 78 , 5.022594788 , -0.277862842 ), ( 78 , 4.814194587 , -0.360474074 ), ( 78 , 4.875848498 , -0.339024503 ), ( 78 , 4.81989682 , -0.34440346 ), ( 78 , 4.849349717 , -0.318742291 ), ( 78 , 4.788524025 , -0.340141185 ), ( 78 , 4.760552988 , -0.323719771 ), ( 78 , 4.77299055 , -0.327495753 ), ( 78 , 4.771946144 , -0.32093452 ), ( 78 , 4.781892888 , -0.318363166 ), ( 78 , 4.79414368 , -0.324922332 ), ( 78 , 4.960167979 , -0.244835981 ), ( 78 , 4.948797766 , -0.237823977 ), ( 78 , 4.85803609 , -0.280010066 ), ( 78 , 4.911205665 , -0.21969378 ), ( 78 , 4.913321218 , -0.17960342 ), ( 78 , 4.501257682 , -0.466049579 ), ( 78 , 4.605769651 , -0.429854654 ), ( 78 , 4.465248399 , -0.404073743 ), ( 78 , 4.494022022 , -0.360937833 ), ( 78 , 4.58136763 , -0.31093277 ), ( 78 , 4.487858617 , -0.352863752 ), ( 78 , 4.429236662 , -0.329591012 ), ( 78 , 4.400275377 , -0.285124501 ), ( 78 , 4.416025919 , -0.258364165 ), ( 78 , 4.489956605 , -0.295026498 ), ( 78 , 4.520375371 , -0.282678158 ), ( 78 , 4.579279391 , -0.279856431 ), ( 78 , 4.583546299 , -0.27292409 ), ( 78 , 4.606493436 , -0.25558339 ), ( 78 , 4.489009542 , -0.229110342 ), ( 78 , 4.524782848 , -0.228657349 ), ( 78 , 4.542245687 , -0.228389647 ), ( 78 , 4.54305634 , -0.210450995 ), ( 78 , 4.487310317 , -0.210022055 ), ( 78 , 4.751653027 , -0.204969275 ), ( 78 , 4.731328623 , -0.190425106 ), ( 78 , 4.890414937 , -0.152174595 ), ( 78 , 4.828273381 , -0.160599697 ), ( 78 , 4.759311071 , -0.19237053 ), ( 78 , 4.6506293 , -0.180712568 ), ( 78 , 4.565294858 , -0.191863908 ), ( 78 , 4.747922445 , -0.124266497 ), ( 78 , 4.722780206 , -0.100102501 ), ( 78 , 4.70699476 , -0.094684186 ), ( 78 , 4.79523963 , -0.071654556 ), ( 78 , 4.696027855 , -0.079874836 ), ( 78 , 4.641417413 , -0.06840883 ), ( 78 , 4.680946368 , -0.062200635 ), ( 78 , 4.653668113 , -0.049946264 ), ( 78 , 4.716548122 , -0.045015427 ), ( 78 , 5.105708994 , -0.318405098 ), ( 78 , 5.05570298 , -0.253757502 ), ( 78 , 5.062037514 , -0.252246801 ), ( 78 , 5.04272324 , -0.258966507 ), ( 78 , 5.032796044 , -0.252155816 ), ( 78 , 5.099026363 , -0.247146525 ), ( 78 , 5.241471896 , -0.188167726 ), ( 78 , 5.226802765 , -0.158100908 ), ( 78 , 5.249160061 , -0.157847491 ), ( 78 , 5.04599716 , -0.20190867 ), ( 78 , 4.944697832 , -0.178375566 ), ( 78 , 4.959953849 , -0.147110671 ), ( 78 , 4.976345663 , -0.128920759 ), ( 78 , 5.055146866 , -0.1167334 ), ( 78 , 5.053244873 , -0.094657514 ), ( 78 , 5.079213061 , -0.096007984 ), ( 78 , 5.082143829 , -0.09455988 ), ( 78 , 5.070450447 , -0.082717867 ), ( 78 , 5.041592804 , -0.054347331 ), ( 78 , 5.064160807 , -0.043209081 ), ( 78 , 5.086043971 , -0.035972395 ), ( 78 , 5.306412986 , -0.134955346 ), ( 78 , 5.375381436 , -0.097796409 ), ( 78 , 5.367008047 , -0.077462747 ), ( 78 , 5.239522385 , -0.075255448 ), ( 78 , 5.258340982 , -0.075183566 ), ( 78 , 5.390664798 , -0.035804424 ), ( 78 , 5.379753473 , 0.042367412 ), ( 78 , 5.228910561 , -0.038945545 ), ( 78 , 5.159631588 , 0.027682755 ), ( 78 , 5.177145855 , 0.025819666 ), ( 78 , 5.191110859 , 0.051556363 ), ( 78 , 5.258595694 , 0.059881636 ), ( 78 , 5.269229018 , 0.083265324 ), ( 78 , 5.284685396 , 0.110805424 ), ( 78 , 4.9261211 , -0.147632209 ), ( 78 , 4.906799767 , -0.124103726 ), ( 78 , 4.950041356 , -0.103981489 ), ( 78 , 4.874018203 , -0.080550151 ), ( 78 , 4.954793211 , -0.040259079 ), ( 78 , 4.901316658 , -0.028722545 ), ( 78 , 4.92731713 , -0.017129754 ), ( 78 , 5.006650097 , -0.019650633 ), ( 78 , 5.071742017 , 0.006689086 ), ( 78 , 5.068436277 , 0.007741589 ), ( 78 , 4.961425706 , 0.026187999 ), ( 78 , 5.018349552 , 0.016265472 ), ( 78 , 4.994854138 , 0.048828798 ), ( 78 , 4.960961129 , 0.042963118 ), ( 78 , 4.789681186 , -0.025560095 ), ( 78 , 4.820260493 , -0.032653364 ), ( 78 , 4.8163524 , -0.02001056 ), ( 78 , 4.833824331 , 0.003490021 ), ( 78 , 4.722437637 , 0.001824807 ), ( 78 , 4.821951292 , 0.06111248 ), ( 78 , 4.944214874 , 0.030641022 ), ( 78 , 4.986815828 , 0.093248076 ), ( 78 , 4.875795958 , 0.056202131 ), ( 78 , 4.846887478 , 0.055056577 ), ( 78 , 4.856899699 , 0.06905051 ), ( 78 , 4.871624589 , 0.09230298 ), ( 78 , 4.847975296 , 0.080754484 ), ( 78 , 4.859003761 , 0.097854785 ), ( 78 , 4.847756236 , 0.100399251 ), ( 78 , 5.163344245 , 0.072856514 ), ( 78 , 5.168477486 , 0.086909997 ), ( 78 , 5.033346322 , 0.074420179 ), ( 78 , 5.031418389 , 0.0861417 ), ( 78 , 5.061534124 , 0.097524192 ), ( 78 , 5.125865659 , 0.10857708 ), ( 78 , 5.119064942 , 0.135663476 ), ( 78 , 5.188683663 , 0.144466203 ), ( 78 , 5.140825054 , 0.152680095 ), ( 78 , 5.183407305 , 0.175228173 ), ( 78 , 5.162969687 , 0.209764986 ), ( 78 , 5.010092172 , 0.156831913 ), ( 78 , 5.07402816 , 0.150215558 ), ( 78 , 5.038832686 , 0.14131369 ), ( 78 , 5.029789644 , 0.150281763 ), ( 78 , 4.944056757 , 0.13762975 ), ( 78 , 4.999257859 , 0.170523175 ), ( 78 , 4.973532841 , 0.199752928 ), ( 78 , 4.999511764 , 0.213062476 ), ( 78 , 5.010142821 , 0.213813416 ), ( 78 , 5.060878859 , 0.209939028 ), ( 78 , 5.104665685 , 0.22929311 ), ( 78 , 5.186515507 , 0.262830125 ), ( 78 , 5.032500548 , 0.255133524 ), ( 78 , 5.097238615 , 0.330168138 ), ( 78 , 4.349149195 , -0.239476392 ), ( 78 , 4.478915603 , -0.188608421 ), ( 78 , 4.417873521 , -0.089877895 ), ( 78 , 4.208089187 , -0.206949435 ), ( 78 , 4.256032784 , -0.192808336 ), ( 78 , 4.22816722 , -0.14344697 ), ( 78 , 4.289105619 , -0.125819149 ), ( 78 , 4.319680297 , -0.002215469 ), ( 78 , 4.449818282 , -0.073673188 ), ( 78 , 4.625838818 , -0.061712946 ), ( 78 , 4.605583792 , -0.050469998 ), ( 78 , 4.639021219 , -0.04011386 ), ( 78 , 4.662708946 , -0.038330695 ), ( 78 , 4.661427841 , -0.031559972 ), ( 78 , 4.679110628 , -0.024964739 ), ( 78 , 4.666858064 , 0.015816047 ), ( 78 , 4.562891681 , 0.036707694 ), ( 78 , 4.621094704 , 0.035849423 ), ( 78 , 4.620604411 , 0.046399361 ), ( 78 , 4.423328228 , -0.075437759 ), ( 78 , 4.426365637 , -0.072669349 ), ( 78 , 4.395691715 , 0.037714786 ), ( 78 , 4.519198444 , 0.11135496 ), ( 78 , 4.117884076 , -0.162587389 ), ( 78 , 4.246574841 , -0.024479327 ), ( 78 , 4.175762953 , -0.013007601 ), ( 78 , 4.235151605 , 0.045745563 ), ( 78 , 3.992271601 , -0.04214947 ), ( 78 , 4.078948255 , -0.002559528 ), ( 78 , 4.165652462 , 0.090923853 ), ( 78 , 4.337253563 , 0.024989554 ), ( 78 , 4.273573283 , 0.096655517 ), ( 78 , 4.326851226 , 0.094833206 ), ( 78 , 4.45548392 , 0.197939292 ), ( 78 , 4.246875462 , 0.105376022 ), ( 78 , 4.166176119 , 0.200986736 ), ( 78 , 4.228976999 , 0.225722548 ), ( 78 , 4.317149092 , 0.184864804 ), ( 78 , 4.356771441 , 0.221002873 ), ( 78 , 4.325728004 , 0.286568665 ), ( 78 , 4.314748346 , 0.321432362 ), ( 78 , 4.754916683 , 0.080341327 ), ( 78 , 4.754147468 , 0.107260461 ), ( 78 , 4.698753568 , 0.087058865 ), ( 78 , 4.737978473 , 0.123742598 ), ( 78 , 4.829682015 , 0.112108033 ), ( 78 , 4.836167396 , 0.119306868 ), ( 78 , 4.83534767 , 0.138825428 ), ( 78 , 4.78463615 , 0.145925519 ), ( 78 , 4.595338163 , 0.134720578 ), ( 78 , 4.671459806 , 0.166539115 ), ( 78 , 4.605678577 , 0.198390293 ), ( 78 , 4.793666085 , 0.250958821 ), ( 78 , 4.646969739 , 0.227327746 ), ( 78 , 4.715466557 , 0.299616527 ), ( 78 , 4.977781827 , 0.253890021 ), ( 78 , 4.957154176 , 0.268178172 ), ( 78 , 4.823846375 , 0.257453768 ), ( 78 , 4.838395031 , 0.261618041 ), ( 78 , 4.989197293 , 0.297873993 ), ( 78 , 5.00848832 , 0.346696751 ), ( 78 , 5.002777324 , 0.399529916 ), ( 78 , 4.843579443 , 0.324428047 ), ( 78 , 4.870958338 , 0.349183859 ), ( 78 , 4.966377198 , 0.431251771 ), ( 78 , 4.967755217 , 0.440673141 ), ( 78 , 4.945119486 , 0.442887552 ), ( 78 , 4.855499062 , 0.430736587 ), ( 78 , 4.521883258 , 0.290784378 ), ( 78 , 4.61220717 , 0.259212789 ), ( 78 , 4.631833473 , 0.334185652 ), ( 78 , 4.593861043 , 0.333115625 ), ( 78 , 4.535959551 , 0.337941809 ), ( 78 , 4.61418083 , 0.359465804 ), ( 78 , 4.582843154 , 0.384595232 ), ( 78 , 4.583436363 , 0.399208106 ), ( 78 , 4.435981624 , 0.273011167 ), ( 78 , 4.397321085 , 0.352650375 ), ( 78 , 4.367415359 , 0.383068489 ), ( 78 , 4.418610249 , 0.36605769 ), ( 78 , 4.532056222 , 0.379988335 ), ( 78 , 4.530910054 , 0.470134507 ), ( 78 , 4.485432736 , 0.473010492 ), ( 78 , 4.483204148 , 0.490811445 ), ( 78 , 4.743082624 , 0.380069668 ), ( 78 , 4.70825891 , 0.415886216 ), ( 78 , 4.793038224 , 0.426534988 ), ( 78 , 4.704416044 , 0.47817668 ), ( 78 , 4.813099818 , 0.512515923 ), ( 78 , 4.833677905 , 0.544509139 ), ( 78 , 4.877987215 , 0.546580378 ), ( 78 , 4.765243987 , 0.482466204 ), ( 78 , 4.807528606 , 0.56282749 ), ( 78 , 4.848156401 , 0.562787828 ), ( 78 , 4.635963601 , 0.450315286 ), ( 78 , 4.636643814 , 0.463415744 ), ( 78 , 4.566631874 , 0.475274477 ), ( 78 , 4.601331421 , 0.49233251 ), ( 78 , 4.565036319 , 0.51409871 ), ( 78 , 4.639371235 , 0.575688186 ), ( 78 , 4.602157451 , 0.565787494 ), ( 78 , 4.605975827 , 0.597032474 ), ( 78 , 4.733655691 , 0.580687533 ), ( 78 , 4.686211888 , 0.60504784 ), ( 78 , 4.700828343 , 0.622645144 ), ( 78 , 4.659882688 , 0.630369382 ), ( 78 , 0.968898847 , -1.467529704 ), ( 78 , 0.845622159 , -1.375785409 ), ( 78 , 0.44348055 , -1.397175314 ), ( 78 , 0.514093028 , -1.374682157 ), ( 78 , 0.382881297 , -1.309754773 ), ( 78 , 0.837438821 , -1.291820964 ), ( 78 , 1.385052984 , -1.248498702 ), ( 78 , 1.120634947 , -1.256594511 ), ( 78 , 1.134438638 , -1.211236129 ), ( 78 , 1.385750932 , -1.19717581 ), ( 78 , 1.551765255 , -1.187631198 ), ( 78 , 1.33130041 , -1.188332012 ), ( 78 , 1.350984099 , -1.113114699 ), ( 78 , 1.335988657 , -1.095847506 ), ( 78 , 0.987242094 , -1.160718364 ), ( 78 , 0.883365858 , -1.148104793 ), ( 78 , 0.932932842 , -1.085023048 ), ( 78 , 1.12430577 , -1.103991424 ), ( 78 , 1.027098406 , -1.06302958 ), ( 78 , 0.052023582 , -1.317318595 ), ( 78 , 0.477252616 , -1.263825189 ), ( 78 , 0.366556188 , -1.262298702 ), ( 78 , 0.361325211 , -1.205668337 ), ( 78 , 0.330693364 , -1.202083231 ), ( 78 , 0.728858623 , -1.174217671 ), ( 78 , 0.528848308 , -1.15800316 ), ( 78 , 0.111462428 , -1.182376418 ), ( 78 , 0.123647542 , -1.12974727 ), ( 78 , 0.465358684 , -1.071476963 ), ( 78 , 0.525779192 , -1.095407283 ), ( 78 , 0.859638167 , -1.105313029 ), ( 78 , 0.697007051 , -1.09425988 ), ( 78 , 0.694982055 , -1.056754072 ), ( 78 , 0.697016812 , -1.039669894 ), ( 78 , 0.934486596 , -0.951408716 ), ( 78 , 0.645585242 , -1.014724347 ), ( 78 , 0.62570174 , -0.991573485 ), ( 78 , 0.575116272 , -0.943326721 ), ( 78 , 1.520994516 , -1.137408465 ), ( 78 , 1.412696955 , -1.092265904 ), ( 78 , 1.437199215 , -1.079021905 ), ( 78 , 1.331116918 , -0.967773743 ), ( 78 , 1.552949494 , -0.9870686 ), ( 78 , 1.368883202 , -0.924595885 ), ( 78 , 1.419073825 , -0.919383583 ), ( 78 , 1.39153736 , -0.900229348 ), ( 78 , 1.409670849 , -0.895649536 ), ( 78 , 1.361596342 , -0.856261205 ), ( 78 , 1.355786351 , -0.845705214 ), ( 78 , 1.292763898 , -0.98482552 ), ( 78 , 1.287812367 , -0.949998548 ), ( 78 , 1.264501707 , -0.950412285 ), ( 78 , 1.235826362 , -0.952859132 ), ( 78 , 1.138512902 , -0.89089094 ), ( 78 , 1.295394851 , -0.922404101 ), ( 78 , 1.246268689 , -0.874000675 ), ( 78 , 1.547985229 , -0.935068054 ), ( 78 , 1.472455213 , -0.823814911 ), ( 78 , 1.38275815 , -0.841102343 ), ( 78 , 1.427955257 , -0.804501809 ), ( 78 , 1.402794813 , -0.774461494 ), ( 78 , 1.386439854 , -0.761010744 ), ( 78 , 1.550600451 , -0.799662866 ), ( 78 , 1.539727988 , -0.790673125 ), ( 78 , 1.43109947 , -0.67904838 ), ( 78 , 1.317995249 , -0.795858743 ), ( 78 , 1.315991626 , -0.782443919 ), ( 78 , 1.334729658 , -0.781539243 ), ( 78 , 1.249354371 , -0.665214538 ), ( 78 , 1.402675538 , -0.689361104 ), ( 78 , 1.31731899 , -0.645404665 ), ( 78 , 1.283141658 , -0.617906317 ), ( 78 , 1.299294501 , -0.608980884 ), ( 78 , 1.38646373 , -0.583511079 ), ( 78 , 1.00180972 , -0.908963422 ), ( 78 , 1.085317701 , -0.827183634 ), ( 78 , 0.946378333 , -0.871931711 ), ( 78 , 0.95016326 , -0.855307964 ), ( 78 , 0.967884524 , -0.84194203 ), ( 78 , 1.030868515 , -0.752517377 ), ( 78 , 1.009853362 , -0.699629153 ), ( 78 , 1.060943078 , -0.687038427 ), ( 78 , 0.913855977 , -0.741227716 ), ( 78 , 0.934080626 , -0.721490862 ), ( 78 , 0.870031991 , -0.638169449 ), ( 78 , 1.024598912 , -0.6231107 ), ( 78 , 1.008856209 , -0.552476852 ), ( 78 , 1.191915789 , -0.6891457 ), ( 78 , 1.198335095 , -0.622377658 ), ( 78 , 1.234207547 , -0.597192397 ), ( 78 , 1.114460817 , -0.631877725 ), ( 78 , 1.30526848 , -0.496378785 ), ( 78 , 1.23954599 , -0.549543455 ), ( 78 , 1.083355747 , -0.573462456 ), ( 78 , 1.113092843 , -0.524854802 ), ( 78 , 1.030552272 , -0.517677259 ), ( 78 , 1.10397114 , -0.498122308 ), ( 78 , 1.177924956 , -0.504043709 ), ( 78 , 1.209624005 , -0.3947048 ), ( 78 , 1.181558195 , -0.373051486 ), ( 78 , 0.10352102 , -1.089512674 ), ( 78 , 0.146359377 , -1.067219767 ), ( 78 , 0.2019516 , -1.093901014 ), ( 78 , 0.033204245 , -1.087604199 ), ( 78 , 0.474868794 , -0.901154575 ), ( 78 , 0.324494307 , -0.92718925 ), ( 78 , 0.379405973 , -0.899201686 ), ( 78 , 0.052752357 , -1.021468483 ), ( 78 , 0.176747498 , -0.968854984 ), ( 78 , 0.235391861 , -0.952810987 ), ( 78 , 0.102768072 , -0.943430803 ), ( 78 , 0.256296246 , -0.894746536 ), ( 78 , 0.426568309 , -0.823412273 ), ( 78 , 0.350530278 , -0.849557632 ), ( 78 , 0.262618597 , -0.881807164 ), ( 78 , 0.347168875 , -0.825408191 ), ( 78 , 0.545952324 , -0.867106765 ), ( 78 , 0.617686713 , -0.84320895 ), ( 78 , 0.533114807 , -0.799981392 ), ( 78 , 0.722959865 , -0.665964259 ), ( 78 , 0.5524741 , -0.647845195 ), ( 78 , 0.522314503 , -0.6181892 ), ( 78 , 0.111867081 , -0.897149412 ), ( 78 , 0.336043783 , -0.74233896 ), ( 78 , 0.364873007 , -0.720302359 ), ( 78 , 0.347130241 , -0.687000875 ), ( 78 , 0.071512106 , -0.750433306 ), ( 78 , 0.108833587 , -0.731048573 ), ( 78 , 0.030283208 , -0.767684365 ), ( 78 , 0.055318419 , -0.753363296 ), ( 78 , 0.004892482 , -0.731081437 ), ( 78 , 0.191163228 , -0.654025689 ), ( 78 , 0.213839722 , -0.632916505 ), ( 78 , 0.371436589 , -0.687289785 ), ( 78 , 0.387592286 , -0.642858496 ), ( 78 , 0.359833921 , -0.605011301 ), ( 78 , 0.340558897 , -0.595813299 ), ( 78 , 0.510749297 , -0.592361646 ), ( 78 , 0.276644651 , -0.55986133 ), ( 78 , 0.260669999 , -0.546919854 ), ( 78 , 0.35239774 , -0.438148971 ), ( 78 , 0.814032579 , -0.694292439 ), ( 78 , 0.771748929 , -0.633510328 ), ( 78 , 0.816885298 , -0.56463837 ), ( 78 , 0.846007415 , -0.572980804 ), ( 78 , 0.872533724 , -0.506015779 ), ( 78 , 0.684563548 , -0.616448825 ), ( 78 , 0.695672542 , -0.446263145 ), ( 78 , 0.788558541 , -0.482455237 ), ( 78 , 0.806016298 , -0.449931124 ), ( 78 , 0.798160441 , -0.381269399 ), ( 78 , 1.028014248 , -0.457542838 ), ( 78 , 0.981210457 , -0.408071253 ), ( 78 , 1.129152043 , -0.309089737 ), ( 78 , 1.133980908 , -0.304806772 ), ( 78 , 1.05520672 , -0.320569499 ), ( 78 , 1.028561765 , -0.308905546 ), ( 78 , 0.874698773 , -0.420882495 ), ( 78 , 0.887577695 , -0.259624371 ), ( 78 , 1.020814846 , -0.244254493 ), ( 78 , 0.921457331 , -0.235599689 ), ( 78 , 0.936531524 , -0.214646633 ), ( 78 , 0.99671732 , -0.232248496 ), ( 78 , 0.586111343 , -0.4870918 ), ( 78 , 0.711044623 , -0.354111116 ), ( 78 , 0.634444021 , -0.380664723 ), ( 78 , 0.445202484 , -0.334975933 ), ( 78 , 0.630374985 , -0.232012445 ), ( 78 , 0.589913009 , -0.210348955 ), ( 78 , 0.835629796 , -0.236058027 ), ( 78 , 0.720862401 , -0.269241057 ), ( 78 , 0.760232708 , -0.193547223 ), ( 78 , 0.848880557 , -0.169068828 ), ( 78 , 0.846123091 , -0.11633801 ), ( 78 , 0.747761706 , -0.052315656 ), ( 78 , 0.776639946 , -0.040784238 ), ( 78 , 2.182933063 , -1.531130351 ), ( 78 , 2.500337557 , -1.501152697 ), ( 78 , 2.782385447 , -1.486925511 ), ( 78 , 2.990102685 , -1.482735176 ), ( 78 , 2.642497037 , -1.467627598 ), ( 78 , 2.01560771 , -1.437140157 ), ( 78 , 2.40283782 , -1.461564127 ), ( 78 , 2.390200754 , -1.436842625 ), ( 78 , 2.761436883 , -1.416560217 ), ( 78 , 2.742392469 , -1.41468701 ), ( 78 , 2.463852041 , -1.380109948 ), ( 78 , 1.926825632 , -1.381666574 ), ( 78 , 2.097600323 , -1.381557995 ), ( 78 , 2.415786481 , -1.249965873 ), ( 78 , 2.458192463 , -1.253294501 ), ( 78 , 2.212302276 , -1.248643416 ), ( 78 , 2.228477007 , -1.236436005 ), ( 78 , 2.344729446 , -1.215475153 ), ( 78 , 3.085916514 , -1.337235949 ), ( 78 , 2.940026328 , -1.32279351 ), ( 78 , 2.928854972 , -1.299633105 ), ( 78 , 3.075256043 , -1.29055057 ), ( 78 , 2.944466744 , -1.22802141 ), ( 78 , 2.747448613 , -1.267602134 ), ( 78 , 2.951827466 , -1.220110172 ), ( 78 , 3.122923819 , -1.196411578 ), ( 78 , 2.988066033 , -1.171637134 ), ( 78 , 2.935709278 , -1.171112238 ), ( 78 , 2.830485537 , -1.174697091 ), ( 78 , 2.789894408 , -1.17225792 ), ( 78 , 2.839501634 , -1.125377618 ), ( 78 , 2.933332339 , -1.138284717 ), ( 78 , 2.84347988 , -1.097905759 ), ( 78 , 2.672233169 , -1.163986399 ), ( 78 , 2.671167144 , -1.155084574 ), ( 78 , 2.46506848 , -1.185440057 ), ( 78 , 2.475293163 , -1.161929615 ), ( 78 , 2.498175173 , -1.141071567 ), ( 78 , 2.435921914 , -1.141979396 ), ( 78 , 2.554464821 , -1.125735062 ), ( 78 , 2.570258644 , -1.099945634 ), ( 78 , 2.55998922 , -1.094485729 ), ( 78 , 2.736586873 , -1.135134262 ), ( 78 , 2.71453034 , -1.079491814 ), ( 78 , 2.788597226 , -1.078485134 ), ( 78 , 2.790023705 , -1.066134358 ), ( 78 , 2.775815828 , -1.050361963 ), ( 78 , 2.707582516 , -1.040850066 ), ( 78 , 2.744977006 , -1.040417355 ), ( 78 , 2.742469967 , -1.027160426 ), ( 78 , 2.608983541 , -1.060253199 ), ( 78 , 2.625392527 , -1.049168269 ), ( 78 , 2.651748401 , -1.018797848 ), ( 78 , 2.607632941 , -0.99246085 ), ( 78 , 1.803223541 , -1.304178701 ), ( 78 , 1.650362489 , -1.258941375 ), ( 78 , 1.857111741 , -1.243903176 ), ( 78 , 1.846429363 , -1.231185109 ), ( 78 , 2.344628305 , -1.15547536 ), ( 78 , 2.229982059 , -1.167009936 ), ( 78 , 2.252826806 , -1.128503494 ), ( 78 , 2.167638721 , -1.124045697 ), ( 78 , 2.161037562 , -1.098079861 ), ( 78 , 1.675665742 , -1.224989142 ), ( 78 , 1.643660932 , -1.205605909 ), ( 78 , 1.846526041 , -1.167425858 ), ( 78 , 2.070356271 , -1.079865504 ), ( 78 , 2.156031426 , -1.072360161 ), ( 78 , 2.163088662 , -1.048194307 ), ( 78 , 2.065977447 , -1.065600488 ), ( 78 , 2.088837119 , -1.059438203 ), ( 78 , 1.963268351 , -1.069013196 ), ( 78 , 1.981466005 , -1.051441873 ), ( 78 , 1.978725135 , -1.033209255 ), ( 78 , 2.035276007 , -1.03129982 ), ( 78 , 2.098642408 , -1.002679933 ), ( 78 , 2.300211485 , -1.11373801 ), ( 78 , 2.456819636 , -1.039453832 ), ( 78 , 2.254406201 , -1.052915197 ), ( 78 , 2.38400245 , -1.033347161 ), ( 78 , 2.348787172 , -1.033127924 ), ( 78 , 2.299883663 , -1.013648901 ), ( 78 , 2.523912386 , -1.004100528 ), ( 78 , 2.566312922 , -0.980860359 ), ( 78 , 2.568568022 , -0.968575699 ), ( 78 , 2.467833649 , -0.960049925 ), ( 78 , 2.390668998 , -0.965590531 ), ( 78 , 2.422211654 , -0.930602226 ), ( 78 , 2.188214472 , -1.014296825 ), ( 78 , 2.164610588 , -0.999535387 ), ( 78 , 2.26369054 , -0.934149053 ), ( 78 , 2.25660329 , -0.929547356 ), ( 78 , 2.284618813 , -0.934183266 ), ( 78 , 2.296789788 , -0.922294631 ), ( 78 , 2.194065945 , -0.950883238 ), ( 78 , 2.127786519 , -0.943610732 ), ( 78 , 2.168367958 , -0.937284343 ), ( 78 , 2.250096213 , -0.913194686 ), ( 78 , 2.271510339 , -0.890365692 ), ( 78 , 2.248714377 , -0.904435238 ), ( 78 , 2.31448823 , -0.905782103 ), ( 78 , 2.349696647 , -0.886742859 ), ( 78 , 2.32146384 , -0.807891489 ), ( 78 , 2.279294179 , -0.812962526 ), ( 78 , 2.301504036 , -0.810724049 ), ( 78 , 2.361161831 , -0.824687848 ), ( 78 , 2.377056907 , -0.782088059 ), ( 78 , 2.313933602 , -0.78052785 ), ( 78 , 2.325243905 , -0.763636384 ), ( 78 , 2.342155029 , -0.761950728 ), ( 78 , 2.346983087 , -0.742199801 ), ( 78 , 3.12899292 , -1.111368075 ), ( 78 , 2.99686667 , -1.096414562 ), ( 78 , 3.039404812 , -1.075293314 ), ( 78 , 3.119858537 , -1.092186526 ), ( 78 , 3.064424223 , -1.063984431 ), ( 78 , 3.14019931 , -1.061213341 ), ( 78 , 3.102684454 , -1.050274467 ), ( 78 , 3.020638794 , -1.062091292 ), ( 78 , 3.014061556 , -1.026455158 ), ( 78 , 2.908975234 , -1.079579066 ), ( 78 , 2.93063138 , -1.054935341 ), ( 78 , 2.913452671 , -1.041458563 ), ( 78 , 2.89911354 , -1.044899844 ), ( 78 , 2.908578146 , -1.025278401 ), ( 78 , 2.873497034 , -1.012154953 ), ( 78 , 2.942331835 , -0.978214082 ), ( 78 , 3.029628379 , -1.005785622 ), ( 78 , 3.082559191 , -0.945587214 ), ( 78 , 3.035975312 , -0.924405981 ), ( 78 , 2.968327981 , -0.9362317 ), ( 78 , 2.810506553 , -1.03978256 ), ( 78 , 2.831447509 , -1.037541706 ), ( 78 , 2.784097596 , -1.03104429 ), ( 78 , 2.788881343 , -0.957508025 ), ( 78 , 2.708706656 , -0.986052445 ), ( 78 , 2.70820733 , -0.936613306 ), ( 78 , 2.643921423 , -0.952821977 ), ( 78 , 2.7169798 , -0.900830076 ), ( 78 , 2.698081328 , -0.913359894 ), ( 78 , 2.699009289 , -0.903132662 ), ( 78 , 2.711067438 , -0.903055945 ), ( 78 , 2.667717832 , -0.881222092 ), ( 78 , 2.851708549 , -0.9135235 ), ( 78 , 2.88939762 , -0.851692883 ), ( 78 , 2.847306883 , -0.806642114 ), ( 78 , 2.7444623 , -0.855013427 ), ( 78 , 2.787833711 , -0.814311701 ), ( 78 , 3.053333979 , -0.80247283 ), ( 78 , 2.997975287 , -0.833592402 ), ( 78 , 3.021918826 , -0.821345816 ), ( 78 , 2.971908108 , -0.80086441 ), ( 78 , 2.947378766 , -0.774844829 ), ( 78 , 2.94112835 , -0.762520153 ), ( 78 , 3.099830223 , -0.811042325 ), ( 78 , 3.117603762 , -0.73381996 ), ( 78 , 3.110848345 , -0.729210236 ), ( 78 , 3.105302862 , -0.703504687 ), ( 78 , 2.990770698 , -0.758301585 ), ( 78 , 3.005051339 , -0.695005905 ), ( 78 , 3.051579865 , -0.687412083 ), ( 78 , 3.048535388 , -0.685007678 ), ( 78 , 3.070877311 , -0.679284884 ), ( 78 , 3.015259033 , -0.658847227 ), ( 78 , 2.880929575 , -0.813349216 ), ( 78 , 2.889366726 , -0.741727612 ), ( 78 , 2.829553323 , -0.774551582 ), ( 78 , 2.769262181 , -0.728666573 ), ( 78 , 2.851872135 , -0.682841638 ), ( 78 , 2.873806511 , -0.666823066 ), ( 78 , 2.812818397 , -0.665702931 ), ( 78 , 2.888576229 , -0.660318657 ), ( 78 , 2.934799003 , -0.617894983 ), ( 78 , 2.875735921 , -0.608703012 ), ( 78 , 2.911260454 , -0.585647603 ), ( 78 , 2.599968207 , -0.924658582 ), ( 78 , 2.60336358 , -0.904632564 ), ( 78 , 2.574720493 , -0.883606699 ), ( 78 , 2.669478562 , -0.8753992 ), ( 78 , 2.613291159 , -0.828843969 ), ( 78 , 2.503581631 , -0.867869446 ), ( 78 , 2.497049301 , -0.822857548 ), ( 78 , 2.596551962 , -0.798326128 ), ( 78 , 2.599619967 , -0.753769659 ), ( 78 , 2.444275468 , -0.757440676 ), ( 78 , 2.536748624 , -0.732686481 ), ( 78 , 2.506707964 , -0.706259314 ), ( 78 , 2.483365942 , -0.680841708 ), ( 78 , 2.547057086 , -0.71978887 ), ( 78 , 2.539579263 , -0.64721487 ), ( 78 , 2.492182688 , -0.627021852 ), ( 78 , 2.465292354 , -0.626663624 ), ( 78 , 2.591455692 , -0.580057679 ), ( 78 , 2.579006956 , -0.549944008 ), ( 78 , 2.759604694 , -0.676265224 ), ( 78 , 2.768699628 , -0.665471545 ), ( 78 , 2.791235301 , -0.653332809 ), ( 78 , 2.764115431 , -0.629468716 ), ( 78 , 2.803176328 , -0.587401172 ), ( 78 , 2.699070892 , -0.624235892 ), ( 78 , 2.746646048 , -0.583096727 ), ( 78 , 2.725536935 , -0.584479547 ), ( 78 , 2.838066611 , -0.590610671 ), ( 78 , 2.894088984 , -0.480278091 ), ( 78 , 2.822055602 , -0.460716304 ), ( 78 , 2.682171457 , -0.537866869 ), ( 78 , 2.689177204 , -0.505771909 ), ( 78 , 2.574556672 , -0.504147393 ), ( 78 , 2.76134703 , -0.464422246 ), ( 78 , 2.819324716 , -0.408976022 ), ( 78 , 2.707675014 , -0.41260828 ), ( 78 , 2.700189271 , -0.404590816 ), ( 78 , 2.769398046 , -0.387521264 ), ( 78 , 1.743538348 , -1.054185528 ), ( 78 , 1.69429541 , -1.040528607 ), ( 78 , 1.816843739 , -1.004916011 ), ( 78 , 1.833349765 , -0.993213406 ), ( 78 , 1.840363538 , -0.988229431 ), ( 78 , 1.789141177 , -0.975701855 ), ( 78 , 1.922708106 , -1.024040646 ), ( 78 , 1.861008943 , -1.008424023 ), ( 78 , 1.878008307 , -0.970190183 ), ( 78 , 1.914460198 , -0.964824122 ), ( 78 , 1.932132929 , -0.916634967 ), ( 78 , 1.982982791 , -0.924447132 ), ( 78 , 1.999264722 , -0.90137166 ), ( 78 , 2.025758815 , -0.880791307 ), ( 78 , 2.029467033 , -0.877686073 ), ( 78 , 1.981582375 , -0.887325523 ), ( 78 , 2.002149777 , -0.882726436 ), ( 78 , 1.651422972 , -0.99483629 ), ( 78 , 1.757954577 , -0.961940183 ), ( 78 , 1.651692064 , -0.936034514 ), ( 78 , 1.66425656 , -0.919134414 ), ( 78 , 1.751133535 , -0.919742777 ), ( 78 , 1.900802902 , -0.881364749 ), ( 78 , 1.869147372 , -0.874419466 ), ( 78 , 1.886856806 , -0.869619483 ), ( 78 , 1.900137345 , -0.841752717 ), ( 78 , 1.962622666 , -0.783859862 ), ( 78 , 1.942017118 , -0.757251194 ), ( 78 , 2.142357325 , -0.860174641 ), ( 78 , 2.140007901 , -0.858075655 ), ( 78 , 2.16305597 , -0.859815475 ), ( 78 , 2.203790617 , -0.858010766 ), ( 78 , 2.2203666 , -0.841081365 ), ( 78 , 2.183364586 , -0.820168497 ), ( 78 , 2.029536894 , -0.853734521 ), ( 78 , 2.055310308 , -0.836646368 ), ( 78 , 2.032074009 , -0.843945141 ), ( 78 , 2.254457048 , -0.829028404 ), ( 78 , 2.241481817 , -0.784455772 ), ( 78 , 2.256161389 , -0.764666158 ), ( 78 , 2.316432 , -0.763607298 ), ( 78 , 2.314787221 , -0.755942922 ), ( 78 , 2.311649624 , -0.728555061 ), ( 78 , 2.317730605 , -0.727125547 ), ( 78 , 2.212719496 , -0.771981715 ), ( 78 , 2.208995485 , -0.735437162 ), ( 78 , 2.217621196 , -0.737055139 ), ( 78 , 2.200883278 , -0.724725659 ), ( 78 , 2.18532124 , -0.716825633 ), ( 78 , 2.209632085 , -0.718852184 ), ( 78 , 2.2281153 , -0.706871349 ), ( 78 , 2.021897072 , -0.821117746 ), ( 78 , 2.071667839 , -0.77453821 ), ( 78 , 2.06788445 , -0.767933751 ), ( 78 , 2.032895998 , -0.781244772 ), ( 78 , 2.099424841 , -0.728823366 ), ( 78 , 2.081342358 , -0.72679907 ), ( 78 , 2.098062044 , -0.707338145 ), ( 78 , 2.042753061 , -0.74189903 ), ( 78 , 2.029555784 , -0.695492307 ), ( 78 , 2.070621524 , -0.700414747 ), ( 78 , 2.098376661 , -0.675877809 ), ( 78 , 2.01951907 , -0.679240878 ), ( 78 , 2.169633984 , -0.702344627 ), ( 78 , 2.240133863 , -0.604733398 ), ( 78 , 2.21371685 , -0.605591752 ), ( 78 , 2.224040217 , -0.594546209 ), ( 78 , 2.211455936 , -0.59646081 ), ( 78 , 2.104918244 , -0.642923282 ), ( 78 , 2.139752387 , -0.632371074 ), ( 78 , 2.129877122 , -0.635616909 ), ( 78 , 2.1022597 , -0.631492736 ), ( 78 , 2.101397468 , -0.624632902 ), ( 78 , 2.153510097 , -0.581194868 ), ( 78 , 2.196263889 , -0.564234692 ), ( 78 , 2.159894539 , -0.538558017 ), ( 78 , 1.648302731 , -0.897820372 ), ( 78 , 1.78453497 , -0.83948379 ), ( 78 , 1.713229655 , -0.840200125 ), ( 78 , 1.722883528 , -0.826880788 ), ( 78 , 1.616454433 , -0.854451866 ), ( 78 , 1.591639704 , -0.845767999 ), ( 78 , 1.849336501 , -0.719196617 ), ( 78 , 1.856167212 , -0.667309015 ), ( 78 , 1.701502208 , -0.7378827 ), ( 78 , 1.697857275 , -0.704619152 ), ( 78 , 1.575571632 , -0.766251032 ), ( 78 , 1.632747362 , -0.727107795 ), ( 78 , 1.751010369 , -0.703243166 ), ( 78 , 1.761528763 , -0.69577969 ), ( 78 , 1.796086763 , -0.66697642 ), ( 78 , 1.735148715 , -0.674190382 ), ( 78 , 1.782075501 , -0.656214859 ), ( 78 , 1.756995027 , -0.639319987 ), ( 78 , 1.835354915 , -0.625487338 ), ( 78 , 1.825117493 , -0.618179701 ), ( 78 , 1.814984104 , -0.577209707 ), ( 78 , 1.725811965 , -0.660743574 ), ( 78 , 1.682965815 , -0.623035532 ), ( 78 , 1.79912835 , -0.558755371 ), ( 78 , 1.745240092 , -0.57406843 ), ( 78 , 1.732579196 , -0.562442066 ), ( 78 , 1.981124369 , -0.651343439 ), ( 78 , 1.961330479 , -0.640266925 ), ( 78 , 2.045621789 , -0.623776893 ), ( 78 , 1.917470281 , -0.654613469 ), ( 78 , 1.915972205 , -0.614079141 ), ( 78 , 2.00635293 , -0.568599458 ), ( 78 , 2.034916317 , -0.583382895 ), ( 78 , 2.059287714 , -0.55215916 ), ( 78 , 2.101313131 , -0.533925877 ), ( 78 , 2.146377407 , -0.527296783 ), ( 78 , 2.141215348 , -0.526186369 ), ( 78 , 2.121167483 , -0.49287077 ), ( 78 , 2.092241009 , -0.496256978 ), ( 78 , 2.0124606 , -0.569743976 ), ( 78 , 2.014386503 , -0.475307136 ), ( 78 , 2.017254512 , -0.474446367 ), ( 78 , 2.06365149 , -0.448765574 ), ( 78 , 1.856743651 , -0.606989257 ), ( 78 , 1.893403214 , -0.581798074 ), ( 78 , 1.906817501 , -0.576763939 ), ( 78 , 1.872308442 , -0.574279817 ), ( 78 , 1.852645435 , -0.558645796 ), ( 78 , 1.923499732 , -0.521211526 ), ( 78 , 1.890268618 , -0.540465408 ), ( 78 , 1.894902698 , -0.491650304 ), ( 78 , 1.839289957 , -0.486237223 ), ( 78 , 1.849133738 , -0.447735676 ), ( 78 , 1.942868976 , -0.491953975 ), ( 78 , 1.936071539 , -0.495868221 ), ( 78 , 2.00724475 , -0.431483855 ), ( 78 , 1.990992133 , -0.429521883 ), ( 78 , 1.990756474 , -0.416057616 ), ( 78 , 2.00672935 , -0.406365941 ), ( 78 , 1.984263349 , -0.397613038 ), ( 78 , 1.916959852 , -0.384843831 ), ( 78 , 1.93216858 , -0.374992701 ), ( 78 , 1.942261438 , -0.369545325 ), ( 78 , 2.400583623 , -0.676283029 ), ( 78 , 2.361239971 , -0.679235715 ), ( 78 , 2.310713314 , -0.64511283 ), ( 78 , 2.317290327 , -0.6007461 ), ( 78 , 2.372078553 , -0.588078169 ), ( 78 , 2.350886666 , -0.55791546 ), ( 78 , 2.450047783 , -0.599284071 ), ( 78 , 2.43790683 , -0.595085815 ), ( 78 , 2.484043891 , -0.587697244 ), ( 78 , 2.449716731 , -0.537667789 ), ( 78 , 2.390277523 , -0.492143671 ), ( 78 , 2.406458167 , -0.496157245 ), ( 78 , 2.462575146 , -0.509302106 ), ( 78 , 2.44687968 , -0.502701438 ), ( 78 , 2.263663385 , -0.591161502 ), ( 78 , 2.265469201 , -0.586626699 ), ( 78 , 2.236181473 , -0.562579174 ), ( 78 , 2.258170283 , -0.532303914 ), ( 78 , 2.313990119 , -0.503719226 ), ( 78 , 2.224692937 , -0.529285702 ), ( 78 , 2.23416023 , -0.512643089 ), ( 78 , 2.26622876 , -0.511358351 ), ( 78 , 2.232560394 , -0.454069068 ), ( 78 , 2.354051839 , -0.404355264 ), ( 78 , 2.587187758 , -0.46697091 ), ( 78 , 2.514031545 , -0.45312422 ), ( 78 , 2.550766354 , -0.407739516 ), ( 78 , 2.623139233 , -0.403980268 ), ( 78 , 2.623499462 , -0.397322291 ), ( 78 , 2.632567944 , -0.299892032 ), ( 78 , 2.426724291 , -0.369960632 ), ( 78 , 2.537251878 , -0.322591497 ), ( 78 , 2.582303793 , -0.245721733 ), ( 78 , 2.59634313 , -0.217593732 ), ( 78 , 2.541908346 , -0.243979059 ), ( 78 , 2.474832748 , -0.242623414 ), ( 78 , 2.560350221 , -0.208375904 ), ( 78 , 2.524921461 , -0.205904341 ), ( 78 , 2.170518006 , -0.508455973 ), ( 78 , 2.146044058 , -0.480375905 ), ( 78 , 2.174400066 , -0.459808946 ), ( 78 , 2.156435086 , -0.435156689 ), ( 78 , 2.079685575 , -0.44356421 ), ( 78 , 2.08311524 , -0.42795971 ), ( 78 , 2.15337542 , -0.418061119 ), ( 78 , 2.182435514 , -0.407695762 ), ( 78 , 2.179591479 , -0.370992082 ), ( 78 , 2.275836863 , -0.387363271 ), ( 78 , 2.277278291 , -0.384463779 ), ( 78 , 2.322469382 , -0.324911099 ), ( 78 , 2.24850275 , -0.332331055 ), ( 78 , 2.25653726 , -0.279597347 ), ( 78 , 2.062758143 , -0.387882602 ), ( 78 , 2.100319294 , -0.389780234 ), ( 78 , 2.112216176 , -0.373090798 ), ( 78 , 2.133870931 , -0.357798297 ), ( 78 , 2.132039016 , -0.34627221 ), ( 78 , 1.970052429 , -0.340536529 ), ( 78 , 1.989451528 , -0.328930228 ), ( 78 , 2.190393244 , -0.240301099 ), ( 78 , 2.125248437 , -0.249949462 ), ( 78 , 2.179449445 , -0.207401349 ), ( 78 , 2.350106905 , -0.302878987 ), ( 78 , 2.392447048 , -0.209676234 ), ( 78 , 2.334285987 , -0.191733633 ), ( 78 , 2.474281309 , -0.22531168 ), ( 78 , 2.481423864 , -0.179264944 ), ( 78 , 2.389971807 , -0.183096096 ), ( 78 , 2.4303593 , -0.167934001 ), ( 78 , 2.39022514 , -0.17197852 ), ( 78 , 2.396493826 , -0.142804751 ), ( 78 , 2.410390836 , -0.120963106 ), ( 78 , 2.272106868 , -0.208169195 ), ( 78 , 2.227363358 , -0.220499457 ), ( 78 , 2.2286748 , -0.205942482 ), ( 78 , 2.227896155 , -0.177980726 ), ( 78 , 2.24178497 , -0.174500846 ), ( 78 , 2.20113726 , -0.148702772 ), ( 78 , 2.215550509 , -0.126018531 ), ( 78 , 2.333988366 , -0.136458478 ), ( 78 , 2.320191257 , -0.11840705 ), ( 78 , 2.274647454 , -0.083936336 ), ( 78 , 2.356027789 , -0.044475966 ), ( 78 , 2.363362713 , -0.010147485 ), ( 78 , 4.101933482 , -1.547318053 ), ( 78 , 4.676904953 , -1.468017494 ), ( 78 , 4.602069648 , -1.414908941 ), ( 78 , 4.212216202 , -1.348036713 ), ( 78 , 3.950383123 , -1.364278133 ), ( 78 , 4.125975129 , -1.306492938 ), ( 78 , 3.763937317 , -1.39130317 ), ( 78 , 3.636881892 , -1.401026644 ), ( 78 , 3.728476605 , -1.334439577 ), ( 78 , 3.282643821 , -1.364745604 ), ( 78 , 4.013660949 , -1.314749218 ), ( 78 , 3.954833736 , -1.259605358 ), ( 78 , 3.775699093 , -1.267474216 ), ( 78 , 3.898228913 , -1.193662532 ), ( 78 , 4.491797416 , -1.310109338 ), ( 78 , 4.423665028 , -1.258437077 ), ( 78 , 4.422418102 , -1.232213445 ), ( 78 , 4.423058933 , -1.205234017 ), ( 78 , 4.634762436 , -1.204623653 ), ( 78 , 4.61385923 , -1.16102432 ), ( 78 , 4.436466096 , -1.172240813 ), ( 78 , 4.349565576 , -1.14469717 ), ( 78 , 4.353603185 , -1.121369702 ), ( 78 , 4.159094256 , -1.134517657 ), ( 78 , 4.123389855 , -1.103191562 ), ( 78 , 4.074839496 , -1.083555549 ), ( 78 , 4.20575432 , -1.059925668 ), ( 78 , 4.180728828 , -1.030169829 ), ( 78 , 4.146709175 , -1.021050388 ), ( 78 , 4.188505644 , -1.013130483 ), ( 78 , 4.180447894 , -0.997417577 ), ( 78 , 3.349543203 , -1.288275027 ), ( 78 , 3.593792785 , -1.273910942 ), ( 78 , 3.317363995 , -1.250445288 ), ( 78 , 3.5090928 , -1.174874676 ), ( 78 , 3.522949425 , -1.164956993 ), ( 78 , 3.704143766 , -1.189278377 ), ( 78 , 3.821789184 , -1.204637523 ), ( 78 , 3.877207781 , -1.161940291 ), ( 78 , 3.853189787 , -1.138461989 ), ( 78 , 3.591640432 , -1.206506289 ), ( 78 , 3.641736137 , -1.167646495 ), ( 78 , 3.252884295 , -1.212597384 ), ( 78 , 3.354804709 , -1.194230544 ), ( 78 , 3.235782056 , -1.20620297 ), ( 78 , 3.488709009 , -1.112747775 ), ( 78 , 3.182066528 , -1.153799394 ), ( 78 , 3.401606851 , -1.123499604 ), ( 78 , 3.533895208 , -1.143225753 ), ( 78 , 3.566684205 , -1.133341993 ), ( 78 , 3.550152414 , -1.130356232 ), ( 78 , 3.612596613 , -1.114605557 ), ( 78 , 3.634386073 , -1.094681743 ), ( 78 , 3.618227875 , -1.083907433 ), ( 78 , 3.690723774 , -1.080937217 ), ( 78 , 3.523022362 , -1.093431763 ), ( 78 , 3.579873692 , -1.051921968 ), ( 78 , 3.482325361 , -1.054131611 ), ( 78 , 3.623454687 , -1.042799717 ), ( 78 , 3.647178953 , -1.036223727 ), ( 78 , 3.595492364 , -1.033863792 ), ( 78 , 3.670995845 , -0.981298396 ), ( 78 , 3.910645191 , -1.06932759 ), ( 78 , 4.011494757 , -1.053747088 ), ( 78 , 3.904951263 , -1.0659749 ), ( 78 , 3.848859598 , -1.01856856 ), ( 78 , 3.928167867 , -1.017638203 ), ( 78 , 3.882818938 , -1.000887108 ), ( 78 , 3.862266201 , -1.004208463 ), ( 78 , 4.086031778 , -0.995089078 ), ( 78 , 4.05273743 , -0.941204168 ), ( 78 , 4.055636893 , -0.885488119 ), ( 78 , 3.747646835 , -1.029271527 ), ( 78 , 3.754982304 , -1.021296582 ), ( 78 , 3.737981902 , -1.017967145 ), ( 78 , 3.862910635 , -0.970521082 ), ( 78 , 3.884682188 , -0.914297413 ), ( 78 , 3.71338691 , -0.967746142 ), ( 78 , 3.745969558 , -0.944739643 ), ( 78 , 3.806060986 , -0.896029317 ), ( 78 , 3.83988578 , -0.908714608 ), ( 78 , 3.894579428 , -0.882820873 ), ( 78 , 3.916919595 , -0.870418841 ), ( 78 , 3.913985966 , -0.856648093 ), ( 78 , 3.935493899 , -0.822982201 ), ( 78 , 4.661087279 , -1.144426196 ), ( 78 , 4.599315005 , -1.043333026 ), ( 78 , 4.464205855 , -1.021843669 ), ( 78 , 4.501697814 , -1.032669981 ), ( 78 , 4.517100027 , -1.009128413 ), ( 78 , 4.707021786 , -1.023749764 ), ( 78 , 4.670947852 , -0.955234405 ), ( 78 , 4.647181654 , -0.944818517 ), ( 78 , 4.631712945 , -0.93326364 ), ( 78 , 4.574385697 , -0.93375146 ), ( 78 , 4.374081969 , -0.991352207 ), ( 78 , 4.303975047 , -0.992822558 ), ( 78 , 4.42884931 , -0.978233448 ), ( 78 , 4.424071566 , -0.961205021 ), ( 78 , 4.365959432 , -0.944863504 ), ( 78 , 4.336319015 , -0.928687087 ), ( 78 , 4.362395971 , -0.907475479 ), ( 78 , 4.263270474 , -0.989339375 ), ( 78 , 4.294692427 , -0.963763806 ), ( 78 , 4.280318043 , -0.95843776 ), ( 78 , 4.260899516 , -0.94558888 ), ( 78 , 4.285488355 , -0.920252389 ), ( 78 , 4.262461294 , -0.870168364 ), ( 78 , 4.262110049 , -0.86328668 ), ( 78 , 4.404517276 , -0.872418454 ), ( 78 , 4.46509876 , -0.879693486 ), ( 78 , 4.428618558 , -0.851516926 ), ( 78 , 4.434186349 , -0.832955766 ), ( 78 , 4.36309169 , -0.833994297 ), ( 78 , 4.307479853 , -0.851513756 ), ( 78 , 4.312228221 , -0.808391741 ), ( 78 , 4.303671043 , -0.799211176 ), ( 78 , 4.336487839 , -0.812603228 ), ( 78 , 4.328378249 , -0.783422856 ), ( 78 , 4.331001163 , -0.763305499 ), ( 78 , 4.326972474 , -0.754294182 ), ( 78 , 4.67300396 , -0.877741989 ), ( 78 , 4.642625756 , -0.918265469 ), ( 78 , 4.599791323 , -0.845937723 ), ( 78 , 4.650078315 , -0.818891897 ), ( 78 , 4.566638105 , -0.870789393 ), ( 78 , 4.554379886 , -0.850102163 ), ( 78 , 4.572732226 , -0.826667259 ), ( 78 , 4.532894738 , -0.861118044 ), ( 78 , 4.519993347 , -0.808737094 ), ( 78 , 4.566357791 , -0.778930429 ), ( 78 , 4.542662632 , -0.802539623 ), ( 78 , 4.531122022 , -0.750179314 ), ( 78 , 4.627853158 , -0.779684879 ), ( 78 , 4.690422411 , -0.753218663 ), ( 78 , 4.643492425 , -0.727126687 ), ( 78 , 4.562418193 , -0.732661275 ), ( 78 , 4.613468231 , -0.703718903 ), ( 78 , 4.588353191 , -0.674522326 ), ( 78 , 4.49872552 , -0.723265443 ), ( 78 , 4.430917827 , -0.7152183 ), ( 78 , 4.442330143 , -0.704283313 ), ( 78 , 4.364988812 , -0.696797241 ), ( 78 , 4.363169446 , -0.694450631 ), ( 78 , 4.456541462 , -0.668748143 ), ( 78 , 4.549633465 , -0.666755668 ), ( 78 , 4.53524927 , -0.663289624 ), ( 78 , 4.56618041 , -0.647732274 ), ( 78 , 4.487886288 , -0.639551675 ), ( 78 , 4.518822592 , -0.590516923 ), ( 78 , 4.50637038 , -0.58226226 ), ( 78 , 4.53231606 , -0.583670528 ), ( 78 , 4.522860518 , -0.56441571 ), ( 78 , 4.174540916 , -0.938794039 ), ( 78 , 4.162398939 , -0.905133435 ), ( 78 , 4.115763558 , -0.892103447 ), ( 78 , 4.130957805 , -0.876570703 ), ( 78 , 4.163253177 , -0.881224893 ), ( 78 , 4.188407325 , -0.808075878 ), ( 78 , 4.220362289 , -0.755525184 ), ( 78 , 4.16885101 , -0.767489007 ), ( 78 , 4.244005956 , -0.693632906 ), ( 78 , 4.203529358 , -0.648095862 ), ( 78 , 4.0434609 , -0.794360573 ), ( 78 , 4.050430442 , -0.787753883 ), ( 78 , 3.99887862 , -0.767085866 ), ( 78 , 4.088556572 , -0.7093493 ), ( 78 , 3.973768603 , -0.763016786 ), ( 78 , 3.988025793 , -0.764347443 ), ( 78 , 3.937285701 , -0.727641825 ), ( 78 , 3.976002508 , -0.710627347 ), ( 78 , 4.187915313 , -0.62562898 ), ( 78 , 4.154881529 , -0.595549732 ), ( 78 , 4.13580246 , -0.578286031 ), ( 78 , 4.33544044 , -0.711576327 ), ( 78 , 4.321385194 , -0.662746537 ), ( 78 , 4.266256547 , -0.65893842 ), ( 78 , 4.393349923 , -0.548961069 ), ( 78 , 4.427360759 , -0.561827923 ), ( 78 , 4.455191144 , -0.498349117 ), ( 78 , 4.301413189 , -0.52216547 ), ( 78 , 4.249221429 , -0.527306628 ), ( 78 , 4.258869254 , -0.534453576 ), ( 78 , 4.278516552 , -0.515133028 ), ( 78 , 4.272313721 , -0.493852451 ), ( 78 , 4.208466357 , -0.50494247 ), ( 78 , 4.210706435 , -0.470328732 ), ( 78 , 4.199635235 , -0.456369726 ), ( 78 , 4.363742497 , -0.454844889 ), ( 78 , 4.40514876 , -0.437585633 ), ( 78 , 4.412890937 , -0.433439393 ), ( 78 , 4.315243646 , -0.428292459 ), ( 78 , 4.307501876 , -0.386222143 ), ( 78 , 3.23892108 , -1.128936964 ), ( 78 , 3.390179787 , -1.049696891 ), ( 78 , 3.225328298 , -1.06703109 ), ( 78 , 3.268819424 , -1.06124529 ), ( 78 , 3.265776651 , -1.053986978 ), ( 78 , 3.202805516 , -1.036671288 ), ( 78 , 3.457027892 , -1.045804499 ), ( 78 , 3.534760099 , -0.989159485 ), ( 78 , 3.448647732 , -1.007833532 ), ( 78 , 3.579878722 , -0.940038108 ), ( 78 , 3.487816452 , -0.971892217 ), ( 78 , 3.441087434 , -0.953200899 ), ( 78 , 3.536560402 , -0.941304289 ), ( 78 , 3.51336266 , -0.904809666 ), ( 78 , 3.14522237 , -1.013527499 ), ( 78 , 3.229312861 , -0.989908422 ), ( 78 , 3.37071775 , -0.919218073 ), ( 78 , 3.203734681 , -0.941083028 ), ( 78 , 3.281348703 , -0.930535776 ), ( 78 , 3.358942591 , -0.89697828 ), ( 78 , 3.370138672 , -0.865662733 ), ( 78 , 3.445662175 , -0.875283951 ), ( 78 , 3.437023264 , -0.867880632 ), ( 78 , 3.52796461 , -0.854730507 ), ( 78 , 3.558787713 , -0.846792648 ), ( 78 , 3.577166151 , -0.8453321 ), ( 78 , 3.547888144 , -0.833791091 ), ( 78 , 3.563009369 , -0.825537698 ), ( 78 , 3.44676494 , -0.830005117 ), ( 78 , 3.388805722 , -0.832283048 ), ( 78 , 3.664176265 , -0.876657036 ), ( 78 , 3.711809341 , -0.833727773 ), ( 78 , 3.861538818 , -0.779554272 ), ( 78 , 3.834524546 , -0.750508852 ), ( 78 , 3.842792906 , -0.736743672 ), ( 78 , 3.875280849 , -0.715894214 ), ( 78 , 3.817137807 , -0.690371399 ), ( 78 , 3.782913966 , -0.67807272 ), ( 78 , 3.616668756 , -0.816136425 ), ( 78 , 3.611451975 , -0.761041437 ), ( 78 , 3.614562833 , -0.758989433 ), ( 78 , 3.56861582 , -0.742019623 ), ( 78 , 3.554555416 , -0.738008309 ), ( 78 , 3.540778298 , -0.725803204 ), ( 78 , 3.648856154 , -0.674797753 ), ( 78 , 3.623587206 , -0.682395993 ), ( 78 , 3.601961175 , -0.672141779 ), ( 78 , 3.627837284 , -0.652619853 ), ( 78 , 3.736773222 , -0.719656751 ), ( 78 , 3.801404724 , -0.605301591 ), ( 78 , 3.657031913 , -0.600306545 ), ( 78 , 3.678761936 , -0.602853892 ), ( 78 , 3.776530226 , -0.575469935 ), ( 78 , 3.22158937 , -0.894398793 ), ( 78 , 3.492572014 , -0.725639036 ), ( 78 , 3.465661513 , -0.719282611 ), ( 78 , 3.444062695 , -0.715927652 ), ( 78 , 3.446203144 , -0.637616149 ), ( 78 , 3.143016565 , -0.831741231 ), ( 78 , 3.235589812 , -0.772629648 ), ( 78 , 3.206441795 , -0.769894193 ), ( 78 , 3.243815203 , -0.730383583 ), ( 78 , 3.189611349 , -0.714750126 ), ( 78 , 3.222817621 , -0.687978482 ), ( 78 , 3.238671058 , -0.671110221 ), ( 78 , 3.229179762 , -0.659810103 ), ( 78 , 3.360526716 , -0.654175457 ), ( 78 , 3.339961142 , -0.653612784 ), ( 78 , 3.547419928 , -0.697649551 ), ( 78 , 3.512440217 , -0.646401935 ), ( 78 , 3.591939958 , -0.615931056 ), ( 78 , 3.55285775 , -0.600176749 ), ( 78 , 3.511602787 , -0.598472794 ), ( 78 , 3.559476752 , -0.565030967 ), ( 78 , 3.637700762 , -0.605012084 ), ( 78 , 3.6315742 , -0.537299104 ), ( 78 , 3.696270249 , -0.54804119 ), ( 78 , 3.714595614 , -0.519843053 ), ( 78 , 3.656109923 , -0.54043969 ), ( 78 , 3.416635778 , -0.598527971 ), ( 78 , 3.361166791 , -0.533668394 ), ( 78 , 3.420187405 , -0.450326997 ), ( 78 , 3.573669884 , -0.433938702 ), ( 78 , 3.509192009 , -0.438577866 ), ( 78 , 3.53432452 , -0.354519547 ), ( 78 , 3.903187581 , -0.68672691 ), ( 78 , 3.982715174 , -0.654895433 ), ( 78 , 3.995997288 , -0.648372032 ), ( 78 , 3.927072647 , -0.573052092 ), ( 78 , 3.900309249 , -0.587173082 ), ( 78 , 3.934890481 , -0.550551784 ), ( 78 , 4.015227904 , -0.609567007 ), ( 78 , 4.024800301 , -0.605771771 ), ( 78 , 4.011515516 , -0.593980953 ), ( 78 , 4.060672193 , -0.586099424 ), ( 78 , 4.081200477 , -0.507031176 ), ( 78 , 3.822753636 , -0.609222958 ), ( 78 , 3.836552517 , -0.582565175 ), ( 78 , 3.849643249 , -0.587018572 ), ( 78 , 3.804821237 , -0.561745479 ), ( 78 , 3.813911356 , -0.557767828 ), ( 78 , 3.920469769 , -0.50108745 ), ( 78 , 4.138067932 , -0.502468446 ), ( 78 , 4.19508939 , -0.4397999 ), ( 78 , 4.174815346 , -0.404641366 ), ( 78 , 4.074958717 , -0.438262668 ), ( 78 , 4.149887763 , -0.394913869 ), ( 78 , 4.097265784 , -0.392238514 ), ( 78 , 4.234264864 , -0.403288164 ), ( 78 , 4.251366704 , -0.386349653 ), ( 78 , 4.232280363 , -0.391126071 ), ( 78 , 4.213760755 , -0.381162012 ), ( 78 , 4.206259518 , -0.345010211 ), ( 78 , 4.162335023 , -0.330755946 ), ( 78 , 4.228248293 , -0.33153811 ), ( 78 , 4.220418027 , -0.313045507 ), ( 78 , 4.039860072 , -0.323163781 ), ( 78 , 4.12700244 , -0.295847944 ), ( 78 , 4.086672846 , -0.296977961 ), ( 78 , 4.062625534 , -0.276553382 ), ( 78 , 4.100743851 , -0.245324655 ), ( 78 , 4.032072025 , -0.249763707 ), ( 78 , 4.029651563 , -0.25050142 ), ( 78 , 4.072084642 , -0.227114533 ), ( 78 , 3.692188793 , -0.431804876 ), ( 78 , 3.830971664 , -0.404294461 ), ( 78 , 3.910953199 , -0.330361066 ), ( 78 , 3.756110545 , -0.337407858 ), ( 78 , 3.804629662 , -0.285582226 ), ( 78 , 3.612517089 , -0.324155507 ), ( 78 , 3.769110073 , -0.225896905 ), ( 78 , 3.710274978 , -0.248224496 ), ( 78 , 3.894389054 , -0.268565102 ), ( 78 , 3.916563264 , -0.22057546 ), ( 78 , 3.96234644 , -0.210344146 ), ( 78 , 3.895928251 , -0.216137533 ), ( 78 , 4.05016878 , -0.199820679 ), ( 78 , 4.050062008 , -0.163368742 ), ( 78 , 4.047576091 , -0.156171535 ), ( 78 , 4.008098222 , -0.146561767 ), ( 78 , 4.002161512 , -0.137122994 ), ( 78 , 4.036572431 , -0.103306914 ), ( 78 , 3.882338973 , -0.160614676 ), ( 78 , 3.823576907 , -0.167774379 ), ( 78 , 3.819884325 , -0.101806336 ), ( 78 , 3.821080344 , -0.091907926 ), ( 78 , 4.004239274 , -0.07844254 ), ( 78 , 3.958148652 , -0.039802831 ), ( 78 , 5.350338801 , -1.502811319 ), ( 78 , 5.649618414 , -1.429897684 ), ( 78 , 5.443699142 , -1.393707984 ), ( 78 , 6.213061008 , -1.440056103 ), ( 78 , 5.730659819 , -1.371469319 ), ( 78 , 4.984846646 , -1.382570314 ), ( 78 , 5.243235903 , -1.304876157 ), ( 78 , 5.098470976 , -1.312034452 ), ( 78 , 5.424651157 , -1.336022588 ), ( 78 , 5.282131372 , -1.250390325 ), ( 78 , 5.419631461 , -1.23798366 ), ( 78 , 5.526106021 , -1.198097669 ), ( 78 , 5.514319808 , -1.188077372 ), ( 78 , 5.982776176 , -1.246601832 ), ( 78 , 5.999878653 , -1.206100333 ), ( 78 , 6.044968871 , -1.088925937 ), ( 78 , 6.035233961 , -1.088786927 ), ( 78 , 5.990189555 , -1.096341078 ), ( 78 , 5.981712611 , -1.096323287 ), ( 78 , 5.640409463 , -1.212828453 ), ( 78 , 5.793448905 , -1.136272628 ), ( 78 , 5.863976386 , -1.140640771 ), ( 78 , 5.920013052 , -1.123809526 ), ( 78 , 5.795708759 , -1.108375654 ), ( 78 , 5.758995949 , -1.060549637 ), ( 78 , 5.816731478 , -1.041816008 ), ( 78 , 5.064558851 , -1.303061789 ), ( 78 , 5.206708283 , -1.264902749 ), ( 78 , 4.872525594 , -1.270369429 ), ( 78 , 5.080230405 , -1.206769975 ), ( 78 , 5.079819663 , -1.191343824 ), ( 78 , 5.478936707 , -1.154534413 ), ( 78 , 5.164266541 , -1.168682557 ), ( 78 , 4.881276243 , -1.225841258 ), ( 78 , 4.790329407 , -1.175610611 ), ( 78 , 4.839057934 , -1.137763169 ), ( 78 , 4.883385193 , -1.132078443 ), ( 78 , 4.855871032 , -1.139031344 ), ( 78 , 4.985556836 , -1.133194727 ), ( 78 , 5.229625867 , -1.101792684 ), ( 78 , 5.235655077 , -1.047571202 ), ( 78 , 5.086439135 , -1.085380678 ), ( 78 , 5.595475946 , -1.044828058 ), ( 78 , 5.560911401 , -1.04212377 ), ( 78 , 5.393410605 , -1.041595784 ), ( 78 , 5.706904711 , -0.923824673 ), ( 78 , 5.629057131 , -0.90993063 ), ( 78 , 5.670929133 , -0.900114235 ), ( 78 , 5.465915413 , -0.92980328 ), ( 78 , 5.27208196 , -0.934628146 ), ( 78 , 5.317629306 , -0.898912662 ), ( 78 , 5.419362721 , -0.877253518 ), ( 78 , 5.503775946 , -0.861342764 ), ( 78 , 5.442689363 , -0.882205174 ), ( 78 , 5.447693146 , -0.849447427 ), ( 78 , 5.470467464 , -0.77389223 ), ( 78 , 6.136846754 , -1.103690516 ), ( 78 , 6.097076234 , -1.095740704 ), ( 78 , 6.038799731 , -0.972115436 ), ( 78 , 6.035671895 , -0.962881843 ), ( 78 , 6.184482146 , -1.015258166 ), ( 78 , 6.275449852 , -0.99827036 ), ( 78 , 6.226539637 , -0.967055606 ), ( 78 , 6.078595897 , -0.961791971 ), ( 78 , 6.053424057 , -0.918086416 ), ( 78 , 6.129164954 , -0.919840387 ), ( 78 , 5.917302169 , -0.953166808 ), ( 78 , 5.80482219 , -0.906886963 ), ( 78 , 5.869884029 , -0.897081146 ), ( 78 , 5.963323162 , -0.89099512 ), ( 78 , 6.025468175 , -0.854222759 ), ( 78 , 6.000395143 , -0.814711431 ), ( 78 , 5.894774961 , -0.843272351 ), ( 78 , 5.92573386 , -0.815247082 ), ( 78 , 6.140020804 , -0.877550773 ), ( 78 , 6.271544035 , -0.804772849 ), ( 78 , 6.214512282 , -0.750910446 ), ( 78 , 6.015317404 , -0.794458581 ), ( 78 , 6.012551557 , -0.78816667 ), ( 78 , 6.050405578 , -0.759286105 ), ( 78 , 6.066421331 , -0.746190915 ), ( 78 , 5.949412784 , -0.70038291 ), ( 78 , 6.078079365 , -0.564041824 ), ( 78 , 5.770966819 , -0.895046839 ), ( 78 , 5.747105833 , -0.867431194 ), ( 78 , 5.775157535 , -0.805083816 ), ( 78 , 5.753608066 , -0.798371462 ), ( 78 , 5.682654482 , -0.874297827 ), ( 78 , 5.675451569 , -0.850263781 ), ( 78 , 5.702305358 , -0.809652784 ), ( 78 , 5.741352713 , -0.789729872 ), ( 78 , 5.841079639 , -0.805246586 ), ( 78 , 5.848525218 , -0.759273618 ), ( 78 , 5.829150408 , -0.745210397 ), ( 78 , 5.59977273 , -0.725245687 ), ( 78 , 5.600628271 , -0.658490599 ), ( 78 , 5.820175192 , -0.606673378 ), ( 78 , 5.888481209 , -0.590815752 ), ( 78 , 5.88483709 , -0.589407628 ), ( 78 , 5.965377115 , -0.570305332 ), ( 78 , 6.011823449 , -0.45570863 ), ( 78 , 5.773301063 , -0.472133884 ), ( 78 , 5.855223495 , -0.442708303 ), ( 78 , 5.916226727 , -0.365383087 ), ( 78 , 4.849964082 , -1.087334046 ), ( 78 , 4.886098678 , -1.035009916 ), ( 78 , 4.973604072 , -1.011904623 ), ( 78 , 4.873490855 , -1.022520724 ), ( 78 , 5.094117171 , -0.959335483 ), ( 78 , 5.089202827 , -0.957552702 ), ( 78 , 5.209327904 , -0.948873011 ), ( 78 , 5.105191189 , -0.935823052 ), ( 78 , 4.831477507 , -0.976590609 ), ( 78 , 4.901862469 , -0.973326177 ), ( 78 , 4.959233912 , -0.952376696 ), ( 78 , 4.837535608 , -0.939864923 ), ( 78 , 4.819679969 , -0.909450548 ), ( 78 , 5.123205424 , -0.849580553 ), ( 78 , 4.977632838 , -0.82107894 ), ( 78 , 5.115416155 , -0.791821148 ), ( 78 , 5.052799574 , -0.79629629 ), ( 78 , 5.263871922 , -0.916672015 ), ( 78 , 5.353860574 , -0.824834503 ), ( 78 , 5.236859628 , -0.850823827 ), ( 78 , 5.276874236 , -0.823289202 ), ( 78 , 5.295241431 , -0.795707124 ), ( 78 , 5.318640706 , -0.777097152 ), ( 78 , 5.284329333 , -0.758770479 ), ( 78 , 5.448637558 , -0.767643444 ), ( 78 , 5.446832033 , -0.698158772 ), ( 78 , 5.344742713 , -0.710938914 ), ( 78 , 5.383388014 , -0.707857442 ), ( 78 , 5.239707771 , -0.767645632 ), ( 78 , 5.195293772 , -0.730589169 ), ( 78 , 5.24136308 , -0.675098609 ), ( 78 , 5.313837981 , -0.701376134 ), ( 78 , 5.301843799 , -0.693232557 ), ( 78 , 5.322692247 , -0.69250819 ), ( 78 , 5.339587983 , -0.613122081 ), ( 78 , 5.261157007 , -0.637037835 ), ( 78 , 5.32849826 , -0.571417002 ), ( 78 , 4.911885446 , -0.813345463 ), ( 78 , 4.743497541 , -0.869418857 ), ( 78 , 4.713952051 , -0.871214388 ), ( 78 , 4.776622178 , -0.851957496 ), ( 78 , 4.790121322 , -0.81812458 ), ( 78 , 4.784273252 , -0.812534619 ), ( 78 , 4.840931531 , -0.82179823 ), ( 78 , 4.879476891 , -0.79353868 ), ( 78 , 4.896182197 , -0.766661947 ), ( 78 , 4.974170911 , -0.817599846 ), ( 78 , 4.962399945 , -0.773206959 ), ( 78 , 5.039219328 , -0.70434015 ), ( 78 , 4.931169332 , -0.736727186 ), ( 78 , 4.912969234 , -0.742312075 ), ( 78 , 4.936585557 , -0.724807062 ), ( 78 , 4.960176193 , -0.689545455 ), ( 78 , 5.00363608 , -0.725015337 ), ( 78 , 5.026510565 , -0.685514478 ), ( 78 , 4.744832415 , -0.818551675 ), ( 78 , 4.729526395 , -0.788516615 ), ( 78 , 4.848651845 , -0.763230839 ), ( 78 , 4.763571869 , -0.744232794 ), ( 78 , 4.723027429 , -0.74883624 ), ( 78 , 4.771182644 , -0.693114813 ), ( 78 , 4.834989275 , -0.669450704 ), ( 78 , 4.819365207 , -0.649732825 ), ( 78 , 4.793779368 , -0.649690504 ), ( 78 , 4.802545392 , -0.641850643 ), ( 78 , 4.883027918 , -0.692861296 ), ( 78 , 4.882226025 , -0.661011231 ), ( 78 , 4.935353223 , -0.650096299 ), ( 78 , 4.986020147 , -0.630003274 ), ( 78 , 4.956649424 , -0.580476614 ), ( 78 , 4.853019972 , -0.664947493 ), ( 78 , 4.85299176 , -0.649479444 ), ( 78 , 4.929949556 , -0.596760487 ), ( 78 , 4.88044023 , -0.584326321 ), ( 78 , 4.918332357 , -0.553973975 ), ( 78 , 5.131063434 , -0.642371275 ), ( 78 , 5.079030183 , -0.585424876 ), ( 78 , 5.177482695 , -0.557379649 ), ( 78 , 5.255210599 , -0.52649922 ), ( 78 , 5.143788101 , -0.528505469 ), ( 78 , 5.133126463 , -0.500466122 ), ( 78 , 5.217960792 , -0.463384004 ), ( 78 , 5.176303512 , -0.47586728 ), ( 78 , 5.015038714 , -0.601962877 ), ( 78 , 4.998851897 , -0.589632652 ), ( 78 , 5.090703005 , -0.459344537 ), ( 78 , 5.197772685 , -0.434560685 ), ( 78 , 5.160147957 , -0.425507322 ), ( 78 , 5.091843478 , -0.419686591 ), ( 78 , 5.066119631 , -0.412242921 ), ( 78 , 5.109078884 , -0.418052599 ), ( 78 , 5.115606869 , -0.39689853 ), ( 78 , 5.490725749 , -0.715476271 ), ( 78 , 5.525518847 , -0.656027771 ), ( 78 , 5.503095841 , -0.614086197 ), ( 78 , 5.588918323 , -0.540271785 ), ( 78 , 5.669406438 , -0.528912166 ), ( 78 , 5.644057545 , -0.486784856 ), ( 78 , 5.618017347 , -0.483963252 ), ( 78 , 5.406853361 , -0.579057328 ), ( 78 , 5.378736966 , -0.547726856 ), ( 78 , 5.463909464 , -0.535767998 ), ( 78 , 5.444908501 , -0.484329264 ), ( 78 , 5.325186522 , -0.509485031 ), ( 78 , 5.410228059 , -0.483761272 ), ( 78 , 5.413088659 , -0.481476773 ), ( 78 , 5.535021795 , -0.422463076 ), ( 78 , 5.512176729 , -0.437626832 ), ( 78 , 5.459344579 , -0.44649914 ), ( 78 , 5.485945276 , -0.416191935 ), ( 78 , 5.696587071 , -0.501345424 ), ( 78 , 5.665887911 , -0.486842004 ), ( 78 , 5.694176749 , -0.462351659 ), ( 78 , 5.707900964 , -0.451654703 ), ( 78 , 5.746654048 , -0.462161229 ), ( 78 , 5.667800595 , -0.426734603 ), ( 78 , 5.622959276 , -0.447573182 ), ( 78 , 5.610399057 , -0.440483374 ), ( 78 , 5.685359769 , -0.404400609 ), ( 78 , 5.70577456 , -0.341699012 ), ( 78 , 5.765924901 , -0.250059265 ), ( 78 , 5.703617988 , -0.253314692 ), ( 78 , 5.644276049 , -0.234749236 ), ( 78 , 5.699814676 , -0.219890805 ), ( 78 , 5.365268183 , -0.398720539 ), ( 78 , 5.342131018 , -0.409732209 ), ( 78 , 5.269463373 , -0.416835363 ), ( 78 , 5.428856268 , -0.369899158 ), ( 78 , 5.37657981 , -0.386674285 ), ( 78 , 5.386346968 , -0.338563156 ), ( 78 , 5.439184387 , -0.299556249 ), ( 78 , 5.204750826 , -0.404149219 ), ( 78 , 5.193540884 , -0.397584511 ), ( 78 , 5.248713367 , -0.323701979 ), ( 78 , 5.249484158 , -0.3027886 ), ( 78 , 5.149928412 , -0.371795137 ), ( 78 , 5.180572329 , -0.327204523 ), ( 78 , 5.228117414 , -0.278728514 ), ( 78 , 5.302430609 , -0.294107919 ), ( 78 , 5.341197105 , -0.233859581 ), ( 78 , 5.265824622 , -0.217116834 ), ( 78 , 5.481012386 , -0.300949286 ), ( 78 , 5.539606846 , -0.246382049 ), ( 78 , 5.599664245 , -0.23585243 ), ( 78 , 5.559408334 , -0.217581576 ), ( 78 , 5.644344322 , -0.16861023 ), ( 78 , 5.451615804 , -0.199925855 ), ( 78 , 5.405962912 , -0.146596691 ), ( 78 , 5.407448956 , -0.108047223 ), ( 78 , 5.538448762 , -0.067931909 ), ( 78 , 5.548439674 , -0.054459551 ), ( 78 , 5.421378647 , -0.092545025 ), ( 78 , 5.720099317 , -1.443713259 ), ( 79 , 0.74825965 , 0.101954028 ), ( 79 , 0.810017012 , 0.106768943 ), ( 79 , 0.822115241 , 0.117349022 ), ( 79 , 0.825548408 , 0.129833833 ), ( 79 , 0.753364122 , 0.113006672 ), ( 79 , 0.920764632 , 0.125632414 ), ( 79 , 0.861979138 , 0.134217744 ), ( 79 , 0.925316902 , 0.132056281 ), ( 79 , 0.94333146 , 0.155097095 ), ( 79 , 0.906111733 , 0.152977357 ), ( 79 , 0.669610793 , 0.099487148 ), ( 79 , 0.765264954 , 0.182511606 ), ( 79 , 0.73034846 , 0.16244295 ), ( 79 , 0.624975882 , 0.189138335 ), ( 79 , 0.788970331 , 0.17879665 ), ( 79 , 0.759000388 , 0.248165 ), ( 79 , 0.766508266 , 0.256678953 ), ( 79 , 0.720119177 , 0.248487791 ), ( 79 , 0.725511238 , 0.261932907 ), ( 79 , 1.001161512 , 0.194501872 ), ( 79 , 1.050432049 , 0.27008955 ), ( 79 , 0.932000012 , 0.256187815 ), ( 79 , 0.984278384 , 0.283840797 ), ( 79 , 1.124152572 , 0.341400343 ), ( 79 , 1.103122588 , 0.341013386 ), ( 79 , 1.132294733 , 0.348154223 ), ( 79 , 1.04643267 , 0.371890214 ), ( 79 , 1.057026572 , 0.391336038 ), ( 79 , 0.87261357 , 0.305454973 ), ( 79 , 0.939451053 , 0.329915969 ), ( 79 , 0.83215675 , 0.327132257 ), ( 79 , 0.984651748 , 0.396087721 ), ( 79 , 0.985505389 , 0.419552087 ), ( 79 , 0.987112913 , 0.42230912 ), ( 79 , 1.051363296 , 0.404916649 ), ( 79 , 1.024259984 , 0.404943099 ), ( 79 , 1.018981994 , 0.449069053 ), ( 79 , 0.962735332 , 0.5021545 ), ( 79 , 0.602570927 , 0.234390357 ), ( 79 , 0.618658222 , 0.270861002 ), ( 79 , 0.707034739 , 0.309909376 ), ( 79 , 0.711297617 , 0.353088871 ), ( 79 , 0.714212427 , 0.369083268 ), ( 79 , 0.664902545 , 0.389802975 ), ( 79 , 0.518339206 , 0.297151872 ), ( 79 , 0.443085447 , 0.325541337 ), ( 79 , 0.604649168 , 0.382181715 ), ( 79 , 0.564210006 , 0.495572259 ), ( 79 , 0.599586062 , 0.501630086 ), ( 79 , 0.810195744 , 0.403066476 ), ( 79 , 0.864243736 , 0.434180296 ), ( 79 , 0.824014434 , 0.442750664 ), ( 79 , 0.74981907 , 0.476018485 ), ( 79 , 0.920722277 , 0.483876678 ), ( 79 , 0.868403527 , 0.570509107 ), ( 79 , 0.746621217 , 0.532497727 ), ( 79 , 0.64149301 , 0.546076855 ), ( 79 , 0.672335189 , 0.56639255 ), ( 79 , 0.692748782 , 0.583263946 ), ( 79 , 0.697451476 , 0.592523295 ), ( 79 , 0.77029658 , 0.538965809 ), ( 79 , 0.811432754 , 0.59357362 ), ( 79 , 0.746107223 , 0.564857756 ), ( 79 , 0.861121822 , 0.634501611 ), ( 79 , 0.801105092 , 0.636027262 ), ( 79 , 0.851838014 , 0.650462959 ), ( 79 , 0.72339465 , 0.600908971 ), ( 79 , 0.724539026 , 0.618725698 ), ( 79 , 0.724801045 , 0.632970327 ), ( 79 , 0.818270525 , 0.682188291 ), ( 79 , 1.193291042 , 0.42375178 ), ( 79 , 1.170670797 , 0.484864899 ), ( 79 , 1.35368852 , 0.533613868 ), ( 79 , 1.209691493 , 0.53056306 ), ( 79 , 1.117164604 , 0.524216643 ), ( 79 , 1.132320461 , 0.539010119 ), ( 79 , 1.047833193 , 0.518551198 ), ( 79 , 1.23319201 , 0.633756193 ), ( 79 , 1.088173319 , 0.628915547 ), ( 79 , 1.385429584 , 0.55543345 ), ( 79 , 1.383593636 , 0.581715663 ), ( 79 , 1.383610887 , 0.581719586 ), ( 79 , 1.405859164 , 0.631793937 ), ( 79 , 1.42087809 , 0.664004858 ), ( 79 , 1.357787047 , 0.617102917 ), ( 79 , 1.368030755 , 0.622262758 ), ( 79 , 1.392883216 , 0.690764521 ), ( 79 , 1.46994275 , 0.669195997 ), ( 79 , 1.488291894 , 0.691765992 ), ( 79 , 1.44270116 , 0.695132362 ), ( 79 , 1.485871973 , 0.695236193 ), ( 79 , 1.488340183 , 0.713534849 ), ( 79 , 1.45120315 , 0.774230715 ), ( 79 , 1.502229673 , 0.760198771 ), ( 79 , 1.561717342 , 0.815190188 ), ( 79 , 1.305763752 , 0.66132015 ), ( 79 , 1.315046761 , 0.697440081 ), ( 79 , 1.355096068 , 0.712862553 ), ( 79 , 1.362411121 , 0.719340291 ), ( 79 , 1.359102246 , 0.780745898 ), ( 79 , 1.273418366 , 0.733855902 ), ( 79 , 1.245085768 , 0.764203669 ), ( 79 , 1.287305037 , 0.749298522 ), ( 79 , 1.291154788 , 0.786004443 ), ( 79 , 1.430246611 , 0.770840343 ), ( 79 , 1.453593782 , 0.818231006 ), ( 79 , 1.513047657 , 0.849446259 ), ( 79 , 1.491244846 , 0.845884802 ), ( 79 , 1.360057975 , 0.81929726 ), ( 79 , 1.461385315 , 0.856308068 ), ( 79 , 1.521253999 , 0.893001929 ), ( 79 , 1.475558813 , 0.897910674 ), ( 79 , 0.922849979 , 0.599912194 ), ( 79 , 0.965931544 , 0.634939061 ), ( 79 , 0.924083234 , 0.636764559 ), ( 79 , 0.917086407 , 0.639457051 ), ( 79 , 0.963584093 , 0.682720502 ), ( 79 , 1.071104279 , 0.703391148 ), ( 79 , 1.083504136 , 0.724143991 ), ( 79 , 1.115274837 , 0.730760427 ), ( 79 , 1.060767848 , 0.73185262 ), ( 79 , 1.085104045 , 0.762437405 ), ( 79 , 1.083090247 , 0.779497429 ), ( 79 , 0.894325317 , 0.702029312 ), ( 79 , 0.887982161 , 0.719193142 ), ( 79 , 0.936398894 , 0.703462995 ), ( 79 , 0.956452382 , 0.720518385 ), ( 79 , 0.821107493 , 0.725800406 ), ( 79 , 0.844990238 , 0.748883044 ), ( 79 , 0.899150387 , 0.790625553 ), ( 79 , 0.874751313 , 0.805753284 ), ( 79 , 0.968296989 , 0.759464719 ), ( 79 , 0.980994653 , 0.803462436 ), ( 79 , 0.990454819 , 0.813632877 ), ( 79 , 1.042201986 , 0.898826279 ), ( 79 , 1.016537032 , 0.891003823 ), ( 79 , 0.997547464 , 0.904481706 ), ( 79 , 1.189204618 , 0.78369609 ), ( 79 , 1.296241091 , 0.835642854 ), ( 79 , 1.263973987 , 0.865479849 ), ( 79 , 1.268215973 , 0.879803792 ), ( 79 , 1.404259758 , 0.898577007 ), ( 79 , 1.390977969 , 0.922076834 ), ( 79 , 1.455184835 , 0.918966446 ), ( 79 , 1.461082671 , 0.924529193 ), ( 79 , 1.44633668 , 0.953860141 ), ( 79 , 1.128764944 , 0.864511762 ), ( 79 , 1.128091529 , 0.908012747 ), ( 79 , 1.145951668 , 0.906540304 ), ( 79 , 1.278497011 , 0.960716217 ), ( 79 , 1.128631329 , 0.934017198 ), ( 79 , 1.19235098 , 0.96798408 ), ( 79 , 1.259430125 , 1.019086453 ), ( 79 , 1.327074248 , 0.957560616 ), ( 79 , 1.412408692 , 1.02871277 ), ( 79 , 1.495073732 , 1.075173113 ), ( 79 , 1.301908612 , 1.02302672 ), ( 79 , 1.466156154 , 1.108612537 ), ( 79 , 1.446676976 , 1.122563148 ), ( 79 , 0.388751836 , 0.379118515 ), ( 79 , 0.426067382 , 0.39369782 ), ( 79 , 0.45724691 , 0.450229246 ), ( 79 , 0.360528306 , 0.463606598 ), ( 79 , 0.501485584 , 0.4859282 ), ( 79 , 0.556870397 , 0.519086266 ), ( 79 , 0.510610887 , 0.541438789 ), ( 79 , 0.434653951 , 0.490647563 ), ( 79 , 0.474927357 , 0.595900939 ), ( 79 , 0.321816814 , 0.458001075 ), ( 79 , 0.217675534 , 0.531454224 ), ( 79 , 0.24165564 , 0.535146529 ), ( 79 , 0.422406448 , 0.573402718 ), ( 79 , 0.363036156 , 0.58101871 ), ( 79 , 0.486195616 , 0.618823726 ), ( 79 , 0.428414019 , 0.616787813 ), ( 79 , 0.3714869 , 0.623661067 ), ( 79 , 0.334720135 , 0.633692838 ), ( 79 , 0.587786301 , 0.530501582 ), ( 79 , 0.605048641 , 0.601915152 ), ( 79 , 0.627945916 , 0.584821388 ), ( 79 , 0.657944158 , 0.630362289 ), ( 79 , 0.535189027 , 0.589274889 ), ( 79 , 0.54038279 , 0.588144392 ), ( 79 , 0.592997786 , 0.641766846 ), ( 79 , 0.551570405 , 0.678928444 ), ( 79 , 0.600812093 , 0.743322937 ), ( 79 , 0.657358407 , 0.762348747 ), ( 79 , 0.694418572 , 0.806401084 ), ( 79 , 0.485623457 , 0.677808701 ), ( 79 , 0.466188338 , 0.676291631 ), ( 79 , 0.495895182 , 0.696094959 ), ( 79 , 0.525165414 , 0.769736045 ), ( 79 , 0.484863599 , 0.759656901 ), ( 79 , 0.593547914 , 0.745200331 ), ( 79 , 0.557785339 , 0.774260701 ), ( 79 , 0.648248679 , 0.84289246 ), ( 79 , 0.625795908 , 0.858388506 ), ( 79 , 0.536977927 , 0.80899077 ), ( 79 , 0.537421885 , 0.848580146 ), ( 79 , 0.550609652 , 0.857939402 ), ( 79 , 0.538752442 , 0.901491027 ), ( 79 , 0.516989613 , 0.926376921 ), ( 79 , 0.199070228 , 0.529466392 ), ( 79 , 0.265700729 , 0.639757576 ), ( 79 , 0.143394141 , 0.625837934 ), ( 79 , 0.231219718 , 0.681454214 ), ( 79 , 0.296604718 , 0.685083133 ), ( 79 , 0.306387858 , 0.714455094 ), ( 79 , 0.213972755 , 0.717886323 ), ( 79 , 0.216166821 , 0.768971162 ), ( 79 , 0.214249252 , 0.770194846 ), ( 79 , 0.283708099 , 0.75525641 ), ( 79 , 0.222509744 , 0.815436064 ), ( 79 , 0.243659951 , 0.818136922 ), ( 79 , 0.118386149 , 0.676801834 ), ( 79 , 0.146165701 , 0.699976897 ), ( 79 , 0.01181184 , 0.749104703 ), ( 79 , 0.027024518 , 0.769132177 ), ( 79 , 0.076991872 , 0.780945512 ), ( 79 , 0.043867616 , 0.809662191 ), ( 79 , 0.170076019 , 0.779518256 ), ( 79 , 0.180849216 , 0.78217284 ), ( 79 , 0.139107635 , 0.849239638 ), ( 79 , 0.091265353 , 0.811333205 ), ( 79 , 0.052999268 , 0.840938535 ), ( 79 , 0.082799032 , 0.884774239 ), ( 79 , 0.082639174 , 0.910582557 ), ( 79 , 0.011649928 , 0.898362209 ), ( 79 , 0.037118454 , 0.913446534 ), ( 79 , 0.037497152 , 0.929459251 ), ( 79 , 0.32726205 , 0.813830701 ), ( 79 , 0.357505416 , 0.825232905 ), ( 79 , 0.424474727 , 0.810872781 ), ( 79 , 0.424492807 , 0.819408679 ), ( 79 , 0.434052384 , 0.842185298 ), ( 79 , 0.373855255 , 0.822373428 ), ( 79 , 0.365531845 , 0.844321158 ), ( 79 , 0.233677527 , 0.846811739 ), ( 79 , 0.278993513 , 0.867951893 ), ( 79 , 0.263327527 , 0.909994086 ), ( 79 , 0.257243607 , 0.916637531 ), ( 79 , 0.275611662 , 0.927474769 ), ( 79 , 0.337439848 , 0.975961747 ), ( 79 , 0.358618068 , 1.017344902 ), ( 79 , 0.223221812 , 0.841362446 ), ( 79 , 0.16899176 , 0.896944721 ), ( 79 , 0.1598636 , 0.933264801 ), ( 79 , 0.230067358 , 0.912428277 ), ( 79 , 0.200070664 , 0.959535244 ), ( 79 , 0.157511365 , 0.957287279 ), ( 79 , 0.156184588 , 0.972274661 ), ( 79 , 0.065588101 , 0.943846589 ), ( 79 , 0.12156402 , 0.92423509 ), ( 79 , 0.075331013 , 0.959593928 ), ( 79 , 0.062138287 , 0.964874585 ), ( 79 , 0.01506377 , 0.969545898 ), ( 79 , 0.018062558 , 0.993457657 ), ( 79 , 0.134213977 , 0.995962496 ), ( 79 , 0.095370067 , 1.011736359 ), ( 79 , 0.047476537 , 0.994364545 ), ( 79 , 0.046917652 , 1.012610073 ), ( 79 , 0.045362297 , 1.020832841 ), ( 79 , 0.158158457 , 1.000205983 ), ( 79 , 0.173934746 , 1.103527263 ), ( 79 , 0.146505989 , 1.056772951 ), ( 79 , 0.068986501 , 1.037427856 ), ( 79 , 0.061566649 , 1.059769746 ), ( 79 , 0.150794163 , 1.097861673 ), ( 79 , 0.07398456 , 1.109208778 ), ( 79 , 0.01861991 , 1.137135612 ), ( 79 , 0.779205229 , 0.832245363 ), ( 79 , 0.788158425 , 0.835751804 ), ( 79 , 0.85016694 , 0.823009747 ), ( 79 , 0.84572996 , 0.836333143 ), ( 79 , 0.878066237 , 0.852235057 ), ( 79 , 0.713605568 , 0.819981546 ), ( 79 , 0.770202607 , 0.869045361 ), ( 79 , 0.892306624 , 0.857650107 ), ( 79 , 0.922137817 , 0.863181996 ), ( 79 , 0.88889769 , 0.903560188 ), ( 79 , 0.881190282 , 0.918418304 ), ( 79 , 0.956038045 , 0.921869765 ), ( 79 , 0.900009793 , 0.979859252 ), ( 79 , 0.889168546 , 1.020485936 ), ( 79 , 0.671578215 , 0.864033161 ), ( 79 , 0.731494244 , 0.941486725 ), ( 79 , 0.60208336 , 0.903763839 ), ( 79 , 0.603917938 , 0.947350417 ), ( 79 , 0.53852331 , 0.954580022 ), ( 79 , 0.591009475 , 0.970317165 ), ( 79 , 0.592389147 , 0.97731952 ), ( 79 , 0.63690052 , 0.979177906 ), ( 79 , 0.681570325 , 1.013609438 ), ( 79 , 0.679193594 , 1.021159399 ), ( 79 , 0.62511512 , 1.013832297 ), ( 79 , 0.835237006 , 1.010599804 ), ( 79 , 0.905128666 , 1.033157051 ), ( 79 , 0.848926587 , 1.077140496 ), ( 79 , 0.715126254 , 1.044104093 ), ( 79 , 0.717399378 , 1.086588782 ), ( 79 , 0.74565648 , 1.088521316 ), ( 79 , 0.765105468 , 1.119758616 ), ( 79 , 1.060000541 , 0.981796071 ), ( 79 , 1.068902318 , 1.0238063 ), ( 79 , 1.21245357 , 1.059002266 ), ( 79 , 1.215475279 , 1.068406605 ), ( 79 , 1.150077116 , 1.042529227 ), ( 79 , 1.205969543 , 1.097964437 ), ( 79 , 0.98496828 , 1.027214121 ), ( 79 , 1.073264768 , 1.075694246 ), ( 79 , 1.072930257 , 1.078516635 ), ( 79 , 1.122834379 , 1.078560088 ), ( 79 , 1.195119721 , 1.128065025 ), ( 79 , 1.472573575 , 1.136939943 ), ( 79 , 1.231276731 , 1.174489525 ), ( 79 , 1.019404385 , 1.129460289 ), ( 79 , 0.97630763 , 1.151527877 ), ( 79 , 1.076039314 , 1.134624475 ), ( 79 , 1.153150764 , 1.181768708 ), ( 79 , 0.968436278 , 1.153963757 ), ( 79 , 0.891224206 , 1.177313696 ), ( 79 , 0.876346517 , 1.182559641 ), ( 79 , 1.089040964 , 1.213690056 ), ( 79 , 0.913743402 , 1.212300551 ), ( 79 , 1.024192469 , 1.225203696 ), ( 79 , 1.237777473 , 1.189435747 ), ( 79 , 1.309636931 , 1.221012867 ), ( 79 , 1.306764472 , 1.249789962 ), ( 79 , 1.186618436 , 1.23177481 ), ( 79 , 1.47286315 , 1.303542843 ), ( 79 , 0.518604363 , 0.970082655 ), ( 79 , 0.462480275 , 1.042537512 ), ( 79 , 0.560755536 , 1.027392861 ), ( 79 , 0.5888339 , 1.020852429 ), ( 79 , 0.420064188 , 1.037757559 ), ( 79 , 0.453428184 , 1.054818827 ), ( 79 , 0.430216434 , 1.061576399 ), ( 79 , 0.396345072 , 1.080245878 ), ( 79 , 0.409834323 , 1.084717995 ), ( 79 , 0.402533133 , 1.11038714 ), ( 79 , 0.647323062 , 1.08593226 ), ( 79 , 0.679420106 , 1.110636902 ), ( 79 , 0.513175347 , 1.141621383 ), ( 79 , 0.443653494 , 1.167766586 ), ( 79 , 0.454882119 , 1.179192691 ), ( 79 , 0.304361783 , 1.074211097 ), ( 79 , 0.295051153 , 1.111673645 ), ( 79 , 0.255023491 , 1.112012331 ), ( 79 , 0.096614651 , 1.159959636 ), ( 79 , 0.010517129 , 1.172209595 ), ( 79 , 0.016401479 , 1.202122777 ), ( 79 , 0.268928322 , 1.230828198 ), ( 79 , 0.320308981 , 1.290158505 ), ( 79 , 0.097043072 , 1.248053537 ), ( 79 , 0.771498453 , 1.201413061 ), ( 79 , 0.845719592 , 1.195997341 ), ( 79 , 0.862311451 , 1.212307956 ), ( 79 , 0.811191981 , 1.239187801 ), ( 79 , 0.669521907 , 1.238424294 ), ( 79 , 0.840760611 , 1.294979626 ), ( 79 , 1.074257483 , 1.333691153 ), ( 79 , 1.47492846 , 1.367583453 ), ( 79 , 1.312917593 , 1.3574387 ), ( 79 , 0.97126411 , 1.346878957 ), ( 79 , 0.877616338 , 1.345078683 ), ( 79 , 0.907827006 , 1.369711333 ), ( 79 , 1.073371192 , 1.392541031 ), ( 79 , 1.172395175 , 1.391057278 ), ( 79 , 1.247970089 , 1.405767319 ), ( 79 , 1.448347121 , 1.414708188 ), ( 79 , 0.377320214 , 1.355747807 ), ( 79 , 0.603477139 , 1.356865123 ), ( 79 , 0.074411449 , 1.482744495 ), ( 79 , 0.010793988 , 1.51900844 ), ( 79 , 0.803368575 , 1.518893819 ), ( 79 , 2.354414496 , 0.024642979 ), ( 79 , 2.363150032 , 0.087037256 ), ( 79 , 2.35077371 , 0.14353057 ), ( 79 , 2.432609768 , 0.14617959 ), ( 79 , 2.480307032 , 0.221205016 ), ( 79 , 2.217459801 , 0.124739397 ), ( 79 , 2.256772979 , 0.129985571 ), ( 79 , 2.30004244 , 0.19930913 ), ( 79 , 2.165323422 , 0.164170611 ), ( 79 , 2.189904946 , 0.175644961 ), ( 79 , 2.19209756 , 0.186083509 ), ( 79 , 2.310654965 , 0.212422262 ), ( 79 , 2.359868261 , 0.219444833 ), ( 79 , 2.425495544 , 0.26194853 ), ( 79 , 2.383943265 , 0.266590255 ), ( 79 , 2.259460684 , 0.252597357 ), ( 79 , 2.292173436 , 0.262614013 ), ( 79 , 2.300788462 , 0.267543896 ), ( 79 , 2.342089774 , 0.305104765 ), ( 79 , 2.564271059 , 0.181251189 ), ( 79 , 2.590971423 , 0.257249597 ), ( 79 , 2.623863393 , 0.273503926 ), ( 79 , 2.490127537 , 0.235543936 ), ( 79 , 2.473151508 , 0.252963293 ), ( 79 , 2.494292513 , 0.275239756 ), ( 79 , 2.735383328 , 0.340552309 ), ( 79 , 2.675578959 , 0.373843895 ), ( 79 , 2.696455219 , 0.383422163 ), ( 79 , 2.658016353 , 0.380311795 ), ( 79 , 2.656130434 , 0.409814672 ), ( 79 , 2.654925128 , 0.424267354 ), ( 79 , 2.446235839 , 0.298927265 ), ( 79 , 2.455697071 , 0.316462193 ), ( 79 , 2.372492202 , 0.35016139 ), ( 79 , 2.385486041 , 0.357941877 ), ( 79 , 2.459955656 , 0.355431103 ), ( 79 , 2.569461217 , 0.394601577 ), ( 79 , 2.600955233 , 0.453774253 ), ( 79 , 2.149554449 , 0.195321336 ), ( 79 , 2.145641503 , 0.195186709 ), ( 79 , 2.169106891 , 0.198112933 ), ( 79 , 2.162234827 , 0.19947927 ), ( 79 , 2.137784171 , 0.226970406 ), ( 79 , 2.114032296 , 0.240410822 ), ( 79 , 2.109945602 , 0.245919168 ), ( 79 , 2.162720687 , 0.306685971 ), ( 79 , 2.267442272 , 0.281719262 ), ( 79 , 2.272894097 , 0.287974062 ), ( 79 , 2.231938925 , 0.302564369 ), ( 79 , 2.327147357 , 0.337233967 ), ( 79 , 2.271777327 , 0.335595473 ), ( 79 , 2.196630451 , 0.316539634 ), ( 79 , 2.181665364 , 0.346463732 ), ( 79 , 2.261884745 , 0.352683682 ), ( 79 , 2.09252277 , 0.363726302 ), ( 79 , 2.111955595 , 0.379363923 ), ( 79 , 2.047381456 , 0.345039418 ), ( 79 , 2.027695646 , 0.391926321 ), ( 79 , 2.16751208 , 0.370549751 ), ( 79 , 2.181713397 , 0.415548684 ), ( 79 , 2.0770507 , 0.430499344 ), ( 79 , 2.103927846 , 0.464916006 ), ( 79 , 2.170924548 , 0.478259853 ), ( 79 , 2.128136713 , 0.471470933 ), ( 79 , 2.155008764 , 0.484826334 ), ( 79 , 2.42681418 , 0.408446473 ), ( 79 , 2.415322765 , 0.423996701 ), ( 79 , 2.378351062 , 0.456656798 ), ( 79 , 2.357700758 , 0.500363029 ), ( 79 , 2.375276716 , 0.510820981 ), ( 79 , 2.458255687 , 0.584057908 ), ( 79 , 2.322551672 , 0.503640719 ), ( 79 , 2.235048726 , 0.561473424 ), ( 79 , 2.355184761 , 0.607805779 ), ( 79 , 2.338423386 , 0.63174115 ), ( 79 , 2.284350529 , 0.634396709 ), ( 79 , 2.381694825 , 0.670880944 ), ( 79 , 2.771956521 , 0.37312291 ), ( 79 , 2.763211061 , 0.438508857 ), ( 79 , 2.796158419 , 0.448552811 ), ( 79 , 2.701846195 , 0.425225331 ), ( 79 , 2.71678094 , 0.429288334 ), ( 79 , 2.769528033 , 0.456551521 ), ( 79 , 2.748784885 , 0.485646804 ), ( 79 , 2.806442041 , 0.512863874 ), ( 79 , 2.818238068 , 0.534558418 ), ( 79 , 2.845189597 , 0.569475332 ), ( 79 , 2.614739107 , 0.480357914 ), ( 79 , 2.735758842 , 0.517928973 ), ( 79 , 2.624147611 , 0.533856936 ), ( 79 , 2.585220699 , 0.550524124 ), ( 79 , 2.730139223 , 0.571777566 ), ( 79 , 2.8367439 , 0.630028782 ), ( 79 , 2.670347447 , 0.632705696 ), ( 79 , 2.723014992 , 0.68130775 ), ( 79 , 2.924361268 , 0.616714519 ), ( 79 , 2.913003108 , 0.642015392 ), ( 79 , 3.023079615 , 0.678313229 ), ( 79 , 3.049701503 , 0.70252764 ), ( 79 , 3.006238796 , 0.718695386 ), ( 79 , 3.072958496 , 0.776512673 ), ( 79 , 2.926197206 , 0.740485705 ), ( 79 , 3.00417117 , 0.767350963 ), ( 79 , 3.101629332 , 0.897322108 ), ( 79 , 3.082330665 , 0.906400456 ), ( 79 , 2.56276089 , 0.572155631 ), ( 79 , 2.579394001 , 0.636853801 ), ( 79 , 2.467953364 , 0.613524532 ), ( 79 , 2.582099919 , 0.691541162 ), ( 79 , 2.646519747 , 0.689468722 ), ( 79 , 2.723810754 , 0.709219917 ), ( 79 , 2.668366511 , 0.728350772 ), ( 79 , 2.685851716 , 0.826739563 ), ( 79 , 2.405544086 , 0.703375776 ), ( 79 , 2.425662655 , 0.740591326 ), ( 79 , 2.534774114 , 0.767813214 ), ( 79 , 2.657866187 , 0.886998863 ), ( 79 , 2.584267304 , 0.858532728 ), ( 79 , 2.582766104 , 0.866057362 ), ( 79 , 2.642407376 , 0.896943713 ), ( 79 , 2.884392087 , 0.832212986 ), ( 79 , 3.055667594 , 0.96521567 ), ( 79 , 2.905530226 , 0.939872291 ), ( 79 , 3.039429503 , 0.979735719 ), ( 79 , 3.017045076 , 0.997191982 ), ( 79 , 2.922874611 , 1.060859537 ), ( 79 , 3.006483449 , 1.109570156 ), ( 79 , 1.970707658 , 0.418876149 ), ( 79 , 1.98526163 , 0.423510715 ), ( 79 , 1.984984393 , 0.493304345 ), ( 79 , 1.965116779 , 0.509486403 ), ( 79 , 2.032802688 , 0.466447685 ), ( 79 , 2.052084283 , 0.501450961 ), ( 79 , 2.090953179 , 0.591198665 ), ( 79 , 2.022383827 , 0.566303586 ), ( 79 , 1.875078364 , 0.449155033 ), ( 79 , 1.874755713 , 0.462902549 ), ( 79 , 1.931051155 , 0.520521754 ), ( 79 , 1.926873853 , 0.559529109 ), ( 79 , 1.837585773 , 0.518989309 ), ( 79 , 1.833346872 , 0.528592144 ), ( 79 , 1.809830644 , 0.520583395 ), ( 79 , 1.869008318 , 0.601932775 ), ( 79 , 1.959283323 , 0.558419214 ), ( 79 , 1.982743018 , 0.578094471 ), ( 79 , 1.93429004 , 0.588127294 ), ( 79 , 1.961100387 , 0.607431152 ), ( 79 , 1.976620022 , 0.646293878 ), ( 79 , 1.963328675 , 0.670865342 ), ( 79 , 2.175969384 , 0.581820006 ), ( 79 , 2.211354885 , 0.599305511 ), ( 79 , 2.2160029 , 0.630503596 ), ( 79 , 2.218203524 , 0.645979174 ), ( 79 , 2.179461305 , 0.691067071 ), ( 79 , 2.130858197 , 0.660914142 ), ( 79 , 2.165140611 , 0.703947088 ), ( 79 , 2.254423588 , 0.694123624 ), ( 79 , 2.337320948 , 0.727415171 ), ( 79 , 2.200242569 , 0.784498872 ), ( 79 , 2.025271631 , 0.677844905 ), ( 79 , 2.098436872 , 0.696565914 ), ( 79 , 2.118047953 , 0.718901584 ), ( 79 , 2.07103009 , 0.729871277 ), ( 79 , 2.104282015 , 0.768330574 ), ( 79 , 2.00220698 , 0.741333189 ), ( 79 , 2.146398632 , 0.789051767 ), ( 79 , 2.14711871 , 0.819281874 ), ( 79 , 2.149221854 , 0.872820935 ), ( 79 , 1.753176938 , 0.569622176 ), ( 79 , 1.853325752 , 0.620120152 ), ( 79 , 1.830209108 , 0.647484773 ), ( 79 , 1.69293457 , 0.631850472 ), ( 79 , 1.722192056 , 0.672650617 ), ( 79 , 1.935078679 , 0.721939945 ), ( 79 , 1.835579128 , 0.704232715 ), ( 79 , 1.832421199 , 0.730708057 ), ( 79 , 1.850543785 , 0.786499852 ), ( 79 , 1.695272428 , 0.682602488 ), ( 79 , 1.704977909 , 0.765861427 ), ( 79 , 1.637508833 , 0.69719114 ), ( 79 , 1.612301766 , 0.719847304 ), ( 79 , 1.659233548 , 0.746996899 ), ( 79 , 1.670817541 , 0.748807949 ), ( 79 , 1.668116462 , 0.775138532 ), ( 79 , 1.63111104 , 0.781076081 ), ( 79 , 1.75374882 , 0.79819688 ), ( 79 , 1.618492693 , 0.829110899 ), ( 79 , 1.913827888 , 0.822683649 ), ( 79 , 1.999594808 , 0.833351392 ), ( 79 , 1.905006484 , 0.908172744 ), ( 79 , 1.993201879 , 0.992354622 ), ( 79 , 1.846079546 , 0.945514193 ), ( 79 , 1.878297121 , 1.001007388 ), ( 79 , 1.802470866 , 0.864530719 ), ( 79 , 1.712994309 , 0.88937807 ), ( 79 , 1.707476725 , 0.938550307 ), ( 79 , 1.787430984 , 0.925561505 ), ( 79 , 1.759517379 , 0.944445835 ), ( 79 , 1.728035118 , 0.972008596 ), ( 79 , 1.570881982 , 0.949330828 ), ( 79 , 1.72894951 , 1.026729053 ), ( 79 , 1.824619502 , 1.060971518 ), ( 79 , 1.714282552 , 1.025331191 ), ( 79 , 1.708331807 , 1.070759584 ), ( 79 , 2.348790273 , 0.815968198 ), ( 79 , 2.415745817 , 0.820136501 ), ( 79 , 2.283815931 , 0.852832965 ), ( 79 , 2.572081361 , 0.998692544 ), ( 79 , 2.418628182 , 0.919485833 ), ( 79 , 2.400750775 , 0.959554153 ), ( 79 , 2.433921129 , 1.003226281 ), ( 79 , 2.165263845 , 0.9135439 ), ( 79 , 2.127121725 , 0.934741118 ), ( 79 , 2.115323391 , 0.968395307 ), ( 79 , 2.238767314 , 0.966115365 ), ( 79 , 2.388643346 , 1.027552054 ), ( 79 , 2.376704022 , 1.064487662 ), ( 79 , 2.277230503 , 1.085777418 ), ( 79 , 2.401112588 , 1.089896181 ), ( 79 , 2.277785093 , 1.107504999 ), ( 79 , 2.733641096 , 1.032420805 ), ( 79 , 2.993508123 , 1.165081478 ), ( 79 , 2.906688138 , 1.149750271 ), ( 79 , 3.035406224 , 1.214269107 ), ( 79 , 2.607081965 , 1.10612143 ), ( 79 , 2.65378116 , 1.152404165 ), ( 79 , 2.444453822 , 1.134633557 ), ( 79 , 2.461390184 , 1.201850866 ), ( 79 , 2.769975949 , 1.199170556 ), ( 79 , 2.650490635 , 1.26730699 ), ( 79 , 2.94593682 , 1.28239787 ), ( 79 , 2.955572314 , 1.297439478 ), ( 79 , 2.0458074 , 0.991016084 ), ( 79 , 2.165818933 , 1.112296467 ), ( 79 , 2.303149248 , 1.155582121 ), ( 79 , 2.032737827 , 1.137138286 ), ( 79 , 2.032756261 , 1.137209859 ), ( 79 , 1.888452334 , 1.162675619 ), ( 79 , 1.916080279 , 1.164807932 ), ( 79 , 1.842122311 , 1.14757846 ), ( 79 , 1.788866025 , 1.178331231 ), ( 79 , 1.849056211 , 1.177346209 ), ( 79 , 1.809357569 , 1.191226763 ), ( 79 , 1.828808187 , 1.199971309 ), ( 79 , 1.632503804 , 1.183988004 ), ( 79 , 1.581361192 , 1.19516499 ), ( 79 , 1.949128537 , 1.27555235 ), ( 79 , 1.959012682 , 1.294128843 ), ( 79 , 1.902379013 , 1.279715443 ), ( 79 , 1.650931414 , 1.273216733 ), ( 79 , 1.83478724 , 1.290830657 ), ( 79 , 1.739714742 , 1.321319931 ), ( 79 , 3.140734141 , 1.389202497 ), ( 79 , 2.85598282 , 1.384839478 ), ( 79 , 2.92780192 , 1.412823525 ), ( 79 , 2.74211848 , 1.416989981 ), ( 79 , 2.002929202 , 1.322703714 ), ( 79 , 1.931809255 , 1.35954541 ), ( 79 , 2.037147376 , 1.425625853 ), ( 79 , 2.00533807 , 1.469521387 ), ( 79 , 3.98261762 , 0.061861974 ), ( 79 , 3.913598929 , 0.072440817 ), ( 79 , 3.840169307 , 0.088434572 ), ( 79 , 3.90709481 , 0.135471127 ), ( 79 , 3.926503211 , 0.147977368 ), ( 79 , 4.047863312 , 0.106485195 ), ( 79 , 4.035799845 , 0.135988296 ), ( 79 , 3.964727206 , 0.17626567 ), ( 79 , 3.95905778 , 0.183753416 ), ( 79 , 3.840002841 , 0.128130608 ), ( 79 , 3.920530532 , 0.165766139 ), ( 79 , 3.791934261 , 0.192729816 ), ( 79 , 3.868056296 , 0.259275465 ), ( 79 , 3.898145539 , 0.274103745 ), ( 79 , 3.911709388 , 0.298501956 ), ( 79 , 4.174632608 , 0.217777507 ), ( 79 , 4.041952258 , 0.256447257 ), ( 79 , 4.090855334 , 0.288492861 ), ( 79 , 4.259667798 , 0.340803674 ), ( 79 , 4.184551781 , 0.319847225 ), ( 79 , 4.188647772 , 0.377370988 ), ( 79 , 4.014870833 , 0.282484201 ), ( 79 , 4.065552715 , 0.355652092 ), ( 79 , 4.140284361 , 0.405636437 ), ( 79 , 3.742043767 , 0.197836602 ), ( 79 , 3.669896038 , 0.228832135 ), ( 79 , 3.703289571 , 0.307858062 ), ( 79 , 3.805115982 , 0.328752944 ), ( 79 , 3.824622472 , 0.412268677 ), ( 79 , 3.823391343 , 0.4186081 ), ( 79 , 3.654657428 , 0.318701652 ), ( 79 , 3.693788244 , 0.312622295 ), ( 79 , 3.675471463 , 0.364439608 ), ( 79 , 3.612636764 , 0.330639241 ), ( 79 , 3.620884963 , 0.337669995 ), ( 79 , 3.646866243 , 0.395848757 ), ( 79 , 3.690006676 , 0.396722051 ), ( 79 , 3.769347492 , 0.475961691 ), ( 79 , 3.719484311 , 0.501213639 ), ( 79 , 3.947820144 , 0.391210715 ), ( 79 , 3.876484527 , 0.390929436 ), ( 79 , 3.926432339 , 0.474042293 ), ( 79 , 4.059370894 , 0.482728403 ), ( 79 , 4.009260702 , 0.522162992 ), ( 79 , 3.94561356 , 0.507516064 ), ( 79 , 3.974439719 , 0.535332147 ), ( 79 , 3.841075161 , 0.531339808 ), ( 79 , 3.793743213 , 0.535468456 ), ( 79 , 3.842932139 , 0.546104262 ), ( 79 , 3.909051867 , 0.635821591 ), ( 79 , 4.333493252 , 0.403479855 ), ( 79 , 4.359386854 , 0.431018248 ), ( 79 , 4.405789238 , 0.495419288 ), ( 79 , 4.412270909 , 0.516104452 ), ( 79 , 4.448765038 , 0.515734589 ), ( 79 , 4.352909526 , 0.503278708 ), ( 79 , 4.366395308 , 0.504663244 ), ( 79 , 4.390255932 , 0.589811959 ), ( 79 , 4.293578247 , 0.516895059 ), ( 79 , 4.216849701 , 0.521933135 ), ( 79 , 4.211423279 , 0.597546584 ), ( 79 , 4.289282895 , 0.569438965 ), ( 79 , 4.352173846 , 0.654327664 ), ( 79 , 4.23768657 , 0.628691101 ), ( 79 , 4.549726516 , 0.59647629 ), ( 79 , 4.464055564 , 0.602838922 ), ( 79 , 4.507140237 , 0.613740624 ), ( 79 , 4.449600822 , 0.644402542 ), ( 79 , 4.646349943 , 0.668873904 ), ( 79 , 4.633506587 , 0.71601916 ), ( 79 , 4.544359318 , 0.737739541 ), ( 79 , 4.660126711 , 0.769814481 ), ( 79 , 4.61501244 , 0.747589699 ), ( 79 , 4.670832812 , 0.776488507 ), ( 79 , 4.689129203 , 0.795072656 ), ( 79 , 4.700073993 , 0.824252223 ), ( 79 , 4.50958374 , 0.734889034 ), ( 79 , 4.411958324 , 0.734447011 ), ( 79 , 4.480766796 , 0.832006478 ), ( 79 , 4.593831799 , 0.835817725 ), ( 79 , 4.54017448 , 0.855427622 ), ( 79 , 4.632913396 , 0.881150763 ), ( 79 , 4.093727578 , 0.632632464 ), ( 79 , 4.125797981 , 0.701229961 ), ( 79 , 4.244288119 , 0.71177502 ), ( 79 , 4.084161016 , 0.694689056 ), ( 79 , 4.083749878 , 0.695190321 ), ( 79 , 4.065488437 , 0.692534113 ), ( 79 , 4.042393621 , 0.767997313 ), ( 79 , 4.058591202 , 0.809590842 ), ( 79 , 4.102925226 , 0.838727244 ), ( 79 , 4.092457343 , 0.874068843 ), ( 79 , 4.19059233 , 0.941893176 ), ( 79 , 4.326325846 , 0.735874704 ), ( 79 , 4.317020704 , 0.750767042 ), ( 79 , 4.322366762 , 0.760013763 ), ( 79 , 4.32812766 , 0.772556897 ), ( 79 , 4.460494308 , 0.878046603 ), ( 79 , 4.459915367 , 0.906557705 ), ( 79 , 4.627371019 , 1.009804667 ), ( 79 , 4.314089358 , 0.903226886 ), ( 79 , 4.283053591 , 0.992693801 ), ( 79 , 4.402047443 , 1.038530544 ), ( 79 , 4.512169482 , 0.979720659 ), ( 79 , 4.575634081 , 1.030362503 ), ( 79 , 4.696383312 , 1.092763813 ), ( 79 , 4.534177633 , 1.077865286 ), ( 79 , 4.615147266 , 1.081300855 ), ( 79 , 4.708244052 , 1.116270506 ), ( 79 , 3.556683785 , 0.36270774 ), ( 79 , 3.627106586 , 0.431013553 ), ( 79 , 3.573352552 , 0.421177218 ), ( 79 , 3.484642608 , 0.460171348 ), ( 79 , 3.542250966 , 0.464272438 ), ( 79 , 3.615188299 , 0.521176587 ), ( 79 , 3.649235414 , 0.55644125 ), ( 79 , 3.640210444 , 0.604006514 ), ( 79 , 3.435715177 , 0.46293184 ), ( 79 , 3.352135217 , 0.530511354 ), ( 79 , 3.580085618 , 0.573093096 ), ( 79 , 3.489725929 , 0.634848906 ), ( 79 , 3.54126596 , 0.647767187 ), ( 79 , 3.549295845 , 0.696975734 ), ( 79 , 3.832244049 , 0.640982581 ), ( 79 , 3.897596469 , 0.71238731 ), ( 79 , 3.770409927 , 0.716269277 ), ( 79 , 3.768013802 , 0.758497351 ), ( 79 , 3.674442161 , 0.760250251 ), ( 79 , 3.604308817 , 0.716239258 ), ( 79 , 3.704652294 , 0.763450737 ), ( 79 , 3.73533528 , 0.875641106 ), ( 79 , 3.609256771 , 0.833029791 ), ( 79 , 3.337508459 , 0.577409578 ), ( 79 , 3.423695348 , 0.686324257 ), ( 79 , 3.439394355 , 0.753657951 ), ( 79 , 3.252613593 , 0.669293903 ), ( 79 , 3.174704485 , 0.734272969 ), ( 79 , 3.228754694 , 0.761118801 ), ( 79 , 3.293033412 , 0.820432548 ), ( 79 , 3.188939948 , 0.904012553 ), ( 79 , 3.488307772 , 0.794596793 ), ( 79 , 3.505244004 , 0.804989846 ), ( 79 , 3.40771649 , 0.916940567 ), ( 79 , 3.621619306 , 0.957651086 ), ( 79 , 3.471783886 , 0.949512912 ), ( 79 , 3.447519934 , 1.01307599 ), ( 79 , 3.348107606 , 0.922613735 ), ( 79 , 3.387168764 , 0.94421795 ), ( 79 , 3.176975394 , 0.9680282 ), ( 79 , 3.270531384 , 0.983155544 ), ( 79 , 3.413868347 , 1.034042213 ), ( 79 , 3.375630725 , 1.038924875 ), ( 79 , 3.241192909 , 1.049026051 ), ( 79 , 3.24457426 , 1.062958936 ), ( 79 , 3.227421492 , 1.088369442 ), ( 79 , 4.003957874 , 0.833196609 ), ( 79 , 3.868085003 , 0.879616849 ), ( 79 , 3.929556295 , 0.882753853 ), ( 79 , 4.03841872 , 0.883034015 ), ( 79 , 4.171512221 , 0.959099372 ), ( 79 , 3.981257419 , 0.923806984 ), ( 79 , 4.126464588 , 0.999435099 ), ( 79 , 3.824359627 , 0.864396968 ), ( 79 , 3.738258707 , 0.929624347 ), ( 79 , 3.692535913 , 0.967450586 ), ( 79 , 3.785643601 , 1.042357703 ), ( 79 , 3.763933926 , 1.043351211 ), ( 79 , 3.999712744 , 1.048931376 ), ( 79 , 3.978841573 , 1.110960628 ), ( 79 , 3.887336123 , 1.095725007 ), ( 79 , 4.190333024 , 0.951601919 ), ( 79 , 4.336297953 , 1.041561885 ), ( 79 , 4.382052833 , 1.064140773 ), ( 79 , 4.126823613 , 1.035186243 ), ( 79 , 4.339703509 , 1.104086604 ), ( 79 , 4.393436767 , 1.106297702 ), ( 79 , 4.681557577 , 1.159231727 ), ( 79 , 4.393128929 , 1.152643064 ), ( 79 , 4.429979607 , 1.18610597 ), ( 79 , 4.007940163 , 1.141808936 ), ( 79 , 3.976914543 , 1.14562084 ), ( 79 , 4.131259531 , 1.228257048 ), ( 79 , 4.463137872 , 1.240256057 ), ( 79 , 4.658464373 , 1.27639779 ), ( 79 , 4.566022271 , 1.270708355 ), ( 79 , 4.289633889 , 1.235637287 ), ( 79 , 4.456256792 , 1.279545709 ), ( 79 , 3.673959428 , 0.998756036 ), ( 79 , 3.723511567 , 1.094404534 ), ( 79 , 3.764605602 , 1.121822166 ), ( 79 , 3.768474096 , 1.130032363 ), ( 79 , 3.720904359 , 1.133123173 ), ( 79 , 3.835338403 , 1.122096671 ), ( 79 , 3.569608962 , 1.162500907 ), ( 79 , 3.625438222 , 1.206949936 ), ( 79 , 3.355112922 , 1.129838178 ), ( 79 , 3.220109208 , 1.200738032 ), ( 79 , 3.480258965 , 1.24349391 ), ( 79 , 3.435279468 , 1.246070054 ), ( 79 , 3.41640637 , 1.251760508 ), ( 79 , 4.040188604 , 1.245117982 ), ( 79 , 4.009149939 , 1.306521957 ), ( 79 , 4.345604823 , 1.382376501 ), ( 79 , 3.552482026 , 1.32291759 ), ( 79 , 3.6885928 , 1.34358589 ), ( 79 , 3.376243582 , 1.342779136 ), ( 79 , 3.382664188 , 1.370076796 ), ( 79 , 3.212018736 , 1.398390739 ), ( 79 , 4.034002557 , 1.429342293 ), ( 79 , 3.942600896 , 1.445560715 ), ( 79 , 4.687943234 , 1.510735817 ), ( 79 , 3.388211322 , 1.498968145 ), ( 79 , 3.885746126 , 1.492197113 ), ( 79 , 5.554503659 , 0.048919914 ), ( 79 , 5.546017203 , 0.068406788 ), ( 79 , 5.451139463 , 0.070366535 ), ( 79 , 5.426658669 , 0.071178999 ), ( 79 , 5.432974138 , 0.10514747 ), ( 79 , 5.505767937 , 0.13141851 ), ( 79 , 5.587764953 , 0.143318304 ), ( 79 , 5.656693644 , 0.137567986 ), ( 79 , 5.560267621 , 0.151133864 ), ( 79 , 5.388697173 , 0.114066864 ), ( 79 , 5.443245898 , 0.172169302 ), ( 79 , 5.345360554 , 0.130427493 ), ( 79 , 5.37334712 , 0.155704308 ), ( 79 , 5.318743925 , 0.176077933 ), ( 79 , 5.362365145 , 0.180311361 ), ( 79 , 5.360865598 , 0.19175999 ), ( 79 , 5.330248426 , 0.191842404 ), ( 79 , 5.418235965 , 0.218487311 ), ( 79 , 5.410013046 , 0.232225059 ), ( 79 , 5.517991614 , 0.209869377 ), ( 79 , 5.506396815 , 0.232554876 ), ( 79 , 5.533809526 , 0.222140714 ), ( 79 , 5.561644253 , 0.24682698 ), ( 79 , 5.515494259 , 0.250864789 ), ( 79 , 5.413612786 , 0.253543389 ), ( 79 , 5.510954461 , 0.275072448 ), ( 79 , 5.489536033 , 0.298158476 ), ( 79 , 5.744342365 , 0.220936263 ), ( 79 , 5.741370494 , 0.241529572 ), ( 79 , 5.69765433 , 0.275021548 ), ( 79 , 5.788812717 , 0.292335559 ), ( 79 , 5.778255662 , 0.283973533 ), ( 79 , 5.838154793 , 0.332316437 ), ( 79 , 5.867583628 , 0.329222832 ), ( 79 , 5.763802357 , 0.381607795 ), ( 79 , 5.598715032 , 0.287923387 ), ( 79 , 5.576082119 , 0.307670328 ), ( 79 , 5.591736609 , 0.299806784 ), ( 79 , 5.646023666 , 0.304472409 ), ( 79 , 5.748433894 , 0.411914747 ), ( 79 , 5.652992099 , 0.418490223 ), ( 79 , 5.608039117 , 0.427456913 ), ( 79 , 5.690405683 , 0.439454622 ), ( 79 , 5.308217018 , 0.208272777 ), ( 79 , 5.280833289 , 0.221981855 ), ( 79 , 5.275309239 , 0.227168731 ), ( 79 , 5.329470643 , 0.234243744 ), ( 79 , 5.357432545 , 0.260830913 ), ( 79 , 5.292045722 , 0.28091793 ), ( 79 , 5.342235219 , 0.294577262 ), ( 79 , 5.27775263 , 0.293337242 ), ( 79 , 5.376357296 , 0.277202311 ), ( 79 , 5.320312785 , 0.328551685 ), ( 79 , 5.342348716 , 0.341646129 ), ( 79 , 5.329730336 , 0.343166173 ), ( 79 , 5.349523936 , 0.35922643 ), ( 79 , 5.356479411 , 0.388116086 ), ( 79 , 5.381779598 , 0.40113053 ), ( 79 , 5.388914608 , 0.413825543 ), ( 79 , 5.208784584 , 0.292833312 ), ( 79 , 5.213092958 , 0.302740014 ), ( 79 , 5.191265373 , 0.285808103 ), ( 79 , 5.19234904 , 0.313411463 ), ( 79 , 5.169451043 , 0.326876289 ), ( 79 , 5.130419873 , 0.324186158 ), ( 79 , 5.146723427 , 0.33457163 ), ( 79 , 5.109445333 , 0.339188437 ), ( 79 , 5.200945022 , 0.365082946 ), ( 79 , 5.239166229 , 0.396348832 ), ( 79 , 5.176319833 , 0.392165326 ), ( 79 , 5.210878967 , 0.394257754 ), ( 79 , 5.285254058 , 0.372663955 ), ( 79 , 5.318036336 , 0.400375615 ), ( 79 , 5.288508862 , 0.417466321 ), ( 79 , 5.346124209 , 0.409193698 ), ( 79 , 5.338155722 , 0.413114661 ), ( 79 , 5.376024739 , 0.442477048 ), ( 79 , 5.275063302 , 0.408666966 ), ( 79 , 5.236130004 , 0.439399673 ), ( 79 , 5.257458276 , 0.454685658 ), ( 79 , 5.315567516 , 0.445221792 ), ( 79 , 5.480955067 , 0.374207099 ), ( 79 , 5.456707622 , 0.414436585 ), ( 79 , 5.425436806 , 0.412677775 ), ( 79 , 5.449772067 , 0.448069483 ), ( 79 , 5.509042427 , 0.45653488 ), ( 79 , 5.505182219 , 0.490456693 ), ( 79 , 5.510209617 , 0.494338677 ), ( 79 , 5.510579993 , 0.505880459 ), ( 79 , 5.623128615 , 0.463739729 ), ( 79 , 5.565896373 , 0.488843791 ), ( 79 , 5.599518317 , 0.520338905 ), ( 79 , 5.561366506 , 0.491393699 ), ( 79 , 5.505313056 , 0.517142691 ), ( 79 , 5.382717871 , 0.451647467 ), ( 79 , 5.411172721 , 0.472559349 ), ( 79 , 5.375007504 , 0.472120698 ), ( 79 , 5.469622844 , 0.540202228 ), ( 79 , 5.455871284 , 0.547214172 ), ( 79 , 5.429908109 , 0.553195059 ), ( 79 , 5.444557584 , 0.552777068 ), ( 79 , 5.343998589 , 0.497847117 ), ( 79 , 5.329379693 , 0.538681646 ), ( 79 , 5.413171495 , 0.547297753 ), ( 79 , 5.416870921 , 0.588341545 ), ( 79 , 5.513778897 , 0.542141222 ), ( 79 , 5.48928222 , 0.546283627 ), ( 79 , 5.52978659 , 0.567270661 ), ( 79 , 5.479756335 , 0.56015586 ), ( 79 , 5.507764026 , 0.588863799 ), ( 79 , 5.491988894 , 0.606038085 ), ( 79 , 5.527367453 , 0.59571522 ), ( 79 , 5.550147321 , 0.622121938 ), ( 79 , 5.521570112 , 0.607585167 ), ( 79 , 5.441357536 , 0.59390833 ), ( 79 , 5.467498407 , 0.606538394 ), ( 79 , 5.44705684 , 0.643878749 ), ( 79 , 5.510241261 , 0.64840274 ), ( 79 , 5.528881173 , 0.66871953 ), ( 79 , 5.506159419 , 0.703562973 ), ( 79 , 5.886592862 , 0.373377391 ), ( 79 , 5.895798445 , 0.418460682 ), ( 79 , 5.974479713 , 0.417027679 ), ( 79 , 5.924404983 , 0.461147578 ), ( 79 , 5.89237281 , 0.496420042 ), ( 79 , 5.966127007 , 0.541703274 ), ( 79 , 6.019862723 , 0.585118809 ), ( 79 , 5.975029456 , 0.567747786 ), ( 79 , 5.785339182 , 0.488093331 ), ( 79 , 5.830573835 , 0.524431644 ), ( 79 , 5.774151929 , 0.519223454 ), ( 79 , 5.725196662 , 0.526934591 ), ( 79 , 5.70645575 , 0.518829009 ), ( 79 , 5.739595517 , 0.538068127 ), ( 79 , 5.746190707 , 0.556070782 ), ( 79 , 5.736712036 , 0.564211516 ), ( 79 , 5.891064454 , 0.580453678 ), ( 79 , 5.90152773 , 0.590171613 ), ( 79 , 5.932076705 , 0.658750767 ), ( 79 , 5.831844679 , 0.602510576 ), ( 79 , 5.92517904 , 0.679815241 ), ( 79 , 6.04834394 , 0.580898902 ), ( 79 , 6.065208845 , 0.643123743 ), ( 79 , 6.028438758 , 0.645511497 ), ( 79 , 6.107520218 , 0.68571822 ), ( 79 , 6.243780231 , 0.71844436 ), ( 79 , 6.213759137 , 0.741120927 ), ( 79 , 5.993116194 , 0.670985679 ), ( 79 , 6.015375078 , 0.694509862 ), ( 79 , 5.960753372 , 0.671945851 ), ( 79 , 6.053011158 , 0.707736421 ), ( 79 , 6.067133229 , 0.721192953 ), ( 79 , 6.049435364 , 0.743375723 ), ( 79 , 5.95870843 , 0.73099458 ), ( 79 , 6.111717068 , 0.778078477 ), ( 79 , 6.246350749 , 0.82881668 ), ( 79 , 6.258882556 , 0.848765477 ), ( 79 , 6.150592996 , 0.844406269 ), ( 79 , 6.27753135 , 0.931779896 ), ( 79 , 5.736727056 , 0.570253971 ), ( 79 , 5.716359875 , 0.607805861 ), ( 79 , 5.715144025 , 0.609412295 ), ( 79 , 5.645201503 , 0.579701228 ), ( 79 , 5.660989215 , 0.603940402 ), ( 79 , 5.628208796 , 0.631434569 ), ( 79 , 5.712856646 , 0.669294795 ), ( 79 , 5.828980949 , 0.678183077 ), ( 79 , 5.763415489 , 0.689855202 ), ( 79 , 5.716657913 , 0.748032065 ), ( 79 , 5.746929221 , 0.743793867 ), ( 79 , 5.806472747 , 0.745894373 ), ( 79 , 5.801937673 , 0.761756267 ), ( 79 , 5.781695125 , 0.781246805 ), ( 79 , 5.616226965 , 0.644470835 ), ( 79 , 5.624668093 , 0.703448712 ), ( 79 , 5.551078534 , 0.700748221 ), ( 79 , 5.549765375 , 0.711644441 ), ( 79 , 5.611318445 , 0.774826227 ), ( 79 , 5.608356083 , 0.803843604 ), ( 79 , 5.617855805 , 0.810123155 ), ( 79 , 5.705852088 , 0.768133822 ), ( 79 , 5.707830196 , 0.799435849 ), ( 79 , 5.823252343 , 0.852079693 ), ( 79 , 5.73723146 , 0.84743836 ), ( 79 , 5.810823716 , 0.871553023 ), ( 79 , 5.647614866 , 0.802770734 ), ( 79 , 5.670710857 , 0.823810476 ), ( 79 , 5.648906488 , 0.86439964 ), ( 79 , 5.7070718 , 0.901060155 ), ( 79 , 6.04180985 , 0.860971846 ), ( 79 , 6.024394342 , 0.871897549 ), ( 79 , 5.874970361 , 0.81265182 ), ( 79 , 5.910581773 , 0.850954847 ), ( 79 , 5.846773097 , 0.828553779 ), ( 79 , 5.973607078 , 0.865096583 ), ( 79 , 5.940146492 , 0.874281176 ), ( 79 , 6.144460906 , 0.896466041 ), ( 79 , 6.123159584 , 0.909360126 ), ( 79 , 6.281133048 , 0.95449373 ), ( 79 , 6.267546672 , 0.977215929 ), ( 79 , 6.23730522 , 0.971431421 ), ( 79 , 6.036474543 , 0.930295193 ), ( 79 , 5.895946081 , 0.887890667 ), ( 79 , 5.871706087 , 0.915223242 ), ( 79 , 5.822423419 , 0.916532843 ), ( 79 , 5.81783975 , 0.968146785 ), ( 79 , 6.077608151 , 0.98675001 ), ( 79 , 6.038230787 , 0.990736291 ), ( 79 , 6.107897317 , 1.040798097 ), ( 79 , 5.989534118 , 1.026367335 ), ( 79 , 6.158027741 , 1.083846798 ), ( 79 , 6.228363933 , 1.119538383 ), ( 79 , 5.141089891 , 0.381955927 ), ( 79 , 5.129652919 , 0.392731451 ), ( 79 , 5.139808955 , 0.454077153 ), ( 79 , 5.150583671 , 0.459300837 ), ( 79 , 5.049177383 , 0.391407105 ), ( 79 , 5.080489955 , 0.498815637 ), ( 79 , 5.123376963 , 0.49594594 ), ( 79 , 5.104767693 , 0.501330229 ), ( 79 , 5.206848188 , 0.46250182 ), ( 79 , 5.226343708 , 0.460296725 ), ( 79 , 5.22287836 , 0.485489719 ), ( 79 , 5.228806714 , 0.49935784 ), ( 79 , 5.281954994 , 0.528374271 ), ( 79 , 5.229921962 , 0.522570642 ), ( 79 , 5.242661017 , 0.527401122 ), ( 79 , 5.216692474 , 0.515130548 ), ( 79 , 5.186585804 , 0.538049178 ), ( 79 , 5.141310511 , 0.554301758 ), ( 79 , 5.18090275 , 0.548573673 ), ( 79 , 5.243508638 , 0.577125668 ), ( 79 , 5.226492157 , 0.597717574 ), ( 79 , 5.204534681 , 0.596672375 ), ( 79 , 5.004671942 , 0.461752853 ), ( 79 , 5.062109814 , 0.487124316 ), ( 79 , 5.00710241 , 0.528053027 ), ( 79 , 5.009449309 , 0.534569886 ), ( 79 , 4.985914017 , 0.548024707 ), ( 79 , 5.136677925 , 0.556736965 ), ( 79 , 5.144209155 , 0.568314685 ), ( 79 , 5.161847179 , 0.600776114 ), ( 79 , 5.144965201 , 0.609987951 ), ( 79 , 5.091794934 , 0.613988547 ), ( 79 , 5.037899444 , 0.631208722 ), ( 79 , 5.081135207 , 0.649048026 ), ( 79 , 5.12132124 , 0.693382495 ), ( 79 , 5.2897042 , 0.559916509 ), ( 79 , 5.269673321 , 0.559910626 ), ( 79 , 5.270744189 , 0.568738598 ), ( 79 , 5.286367045 , 0.593000922 ), ( 79 , 5.294531242 , 0.609345712 ), ( 79 , 5.370155773 , 0.635191171 ), ( 79 , 5.31676624 , 0.611429791 ), ( 79 , 5.326096019 , 0.615268196 ), ( 79 , 5.25378796 , 0.598898596 ), ( 79 , 5.280652368 , 0.631396417 ), ( 79 , 5.235681946 , 0.616040049 ), ( 79 , 5.237371604 , 0.617118871 ), ( 79 , 5.299384013 , 0.639854453 ), ( 79 , 5.308814734 , 0.653599543 ), ( 79 , 5.332962871 , 0.664902514 ), ( 79 , 5.342598452 , 0.680067653 ), ( 79 , 5.30202702 , 0.720798086 ), ( 79 , 5.395092692 , 0.71635435 ), ( 79 , 5.399273697 , 0.722449324 ), ( 79 , 5.450438227 , 0.714110064 ), ( 79 , 5.465370134 , 0.732682359 ), ( 79 , 5.368580205 , 0.709733845 ), ( 79 , 5.346180897 , 0.736170414 ), ( 79 , 5.417967968 , 0.758229779 ), ( 79 , 5.374115923 , 0.788387834 ), ( 79 , 5.367408848 , 0.793240622 ), ( 79 , 5.402226542 , 0.818312045 ), ( 79 , 5.184831123 , 0.648571708 ), ( 79 , 5.18482575 , 0.648570082 ), ( 79 , 5.20490098 , 0.716997401 ), ( 79 , 5.242408999 , 0.703348198 ), ( 79 , 5.253403773 , 0.709590172 ), ( 79 , 5.159940392 , 0.698596294 ), ( 79 , 5.182264326 , 0.738595127 ), ( 79 , 5.145099517 , 0.765143219 ), ( 79 , 5.22218284 , 0.772677108 ), ( 79 , 5.208800521 , 0.793608232 ), ( 79 , 5.152126401 , 0.809572454 ), ( 79 , 5.349291779 , 0.837206393 ), ( 79 , 5.30016693 , 0.832692703 ), ( 79 , 5.31745761 , 0.863897936 ), ( 79 , 5.259182128 , 0.880494445 ), ( 79 , 5.312785152 , 0.892780249 ), ( 79 , 5.25003808 , 0.917614828 ), ( 79 , 4.953363844 , 0.569061241 ), ( 79 , 4.92627288 , 0.602888983 ), ( 79 , 4.953048288 , 0.641263477 ), ( 79 , 4.909524287 , 0.668718594 ), ( 79 , 4.928964222 , 0.67069188 ), ( 79 , 5.043191388 , 0.669891471 ), ( 79 , 4.97580063 , 0.663150693 ), ( 79 , 4.976786526 , 0.695797698 ), ( 79 , 5.059535401 , 0.720314665 ), ( 79 , 5.077791749 , 0.711871353 ), ( 79 , 5.022022586 , 0.729127781 ), ( 79 , 4.945763671 , 0.77020559 ), ( 79 , 4.984104437 , 0.7504185 ), ( 79 , 4.810065023 , 0.704682931 ), ( 79 , 4.846813594 , 0.706646402 ), ( 79 , 4.835338061 , 0.766655694 ), ( 79 , 4.740780339 , 0.7044321 ), ( 79 , 4.731071851 , 0.734712943 ), ( 79 , 4.79180919 , 0.788134664 ), ( 79 , 4.909005996 , 0.805217469 ), ( 79 , 4.913854662 , 0.813863389 ), ( 79 , 4.767025816 , 0.856931021 ), ( 79 , 4.712673319 , 0.888745374 ), ( 79 , 4.823059721 , 0.842942714 ), ( 79 , 5.104847682 , 0.77997754 ), ( 79 , 5.045916723 , 0.813261942 ), ( 79 , 5.075623301 , 0.823719294 ), ( 79 , 5.095303165 , 0.82968042 ), ( 79 , 5.081311604 , 0.876876446 ), ( 79 , 5.007917581 , 0.820929964 ), ( 79 , 5.023185179 , 0.908000765 ), ( 79 , 5.121252501 , 0.909717048 ), ( 79 , 5.163036507 , 0.917363526 ), ( 79 , 5.170542698 , 0.974724442 ), ( 79 , 5.071573998 , 0.909632748 ), ( 79 , 4.991270138 , 0.949269841 ), ( 79 , 5.106470066 , 0.997985548 ), ( 79 , 4.944826237 , 0.884106757 ), ( 79 , 4.729865168 , 0.964683761 ), ( 79 , 4.724955603 , 0.984858514 ), ( 79 , 4.727024725 , 0.993677765 ), ( 79 , 4.830128937 , 0.957934984 ), ( 79 , 4.835965337 , 0.971697095 ), ( 79 , 4.834562543 , 1.001790659 ), ( 79 , 4.790614872 , 1.010383988 ), ( 79 , 4.745077026 , 0.991388 ), ( 79 , 4.96317299 , 1.016228122 ), ( 79 , 4.909394557 , 0.996857995 ), ( 79 , 4.727785998 , 1.132094378 ), ( 79 , 5.509548304 , 0.800857392 ), ( 79 , 5.598767345 , 0.846812043 ), ( 79 , 5.534849344 , 0.824791099 ), ( 79 , 5.448906646 , 0.841826701 ), ( 79 , 5.409428291 , 0.8263313 ), ( 79 , 5.405923041 , 0.832289807 ), ( 79 , 5.401150281 , 0.836797652 ), ( 79 , 5.508284912 , 0.866257153 ), ( 79 , 5.613298095 , 0.860102347 ), ( 79 , 5.608549512 , 0.892431233 ), ( 79 , 5.610290253 , 0.922615198 ), ( 79 , 5.708401073 , 0.949242663 ), ( 79 , 5.670983469 , 0.966359726 ), ( 79 , 5.666922757 , 0.973747819 ), ( 79 , 5.691231688 , 0.966565209 ), ( 79 , 5.596910996 , 0.946502236 ), ( 79 , 5.601059615 , 0.965061553 ), ( 79 , 5.632213993 , 0.967171524 ), ( 79 , 5.601826806 , 1.011244383 ), ( 79 , 5.64480894 , 1.015711605 ), ( 79 , 5.38160342 , 0.874747806 ), ( 79 , 5.403326044 , 0.914180947 ), ( 79 , 5.381904729 , 0.921605232 ), ( 79 , 5.441863648 , 0.918205281 ), ( 79 , 5.423751701 , 0.912748505 ), ( 79 , 5.371577908 , 0.952780899 ), ( 79 , 5.429144669 , 0.980411115 ), ( 79 , 5.253975229 , 0.950602259 ), ( 79 , 5.303936402 , 0.970740203 ), ( 79 , 5.36939538 , 1.017290283 ), ( 79 , 5.547541014 , 1.005665241 ), ( 79 , 5.474143451 , 1.006573213 ), ( 79 , 5.487657029 , 1.026638865 ), ( 79 , 5.485646974 , 1.026546119 ), ( 79 , 5.582635479 , 1.027841403 ), ( 79 , 5.478509039 , 1.047580963 ), ( 79 , 5.434651613 , 1.089015034 ), ( 79 , 5.499035057 , 1.073327252 ), ( 79 , 5.486332113 , 1.096919966 ), ( 79 , 5.77618548 , 0.974760693 ), ( 79 , 5.778286942 , 1.044236552 ), ( 79 , 5.769665834 , 1.066302762 ), ( 79 , 5.732918328 , 1.092579598 ), ( 79 , 5.85491929 , 1.086668945 ), ( 79 , 5.867318649 , 1.109513831 ), ( 79 , 5.812306689 , 1.108039076 ), ( 79 , 6.137422226 , 1.122328481 ), ( 79 , 5.919773747 , 1.138963145 ), ( 79 , 5.945693368 , 1.146356666 ), ( 79 , 6.204184917 , 1.198551111 ), ( 79 , 5.64698499 , 1.117090876 ), ( 79 , 5.714878665 , 1.138538626 ), ( 79 , 5.854564359 , 1.164242597 ), ( 79 , 5.585498195 , 1.128037965 ), ( 79 , 5.646671998 , 1.147374823 ), ( 79 , 5.710957294 , 1.1915947 ), ( 79 , 5.795749167 , 1.221422342 ), ( 79 , 5.798574463 , 1.225919441 ), ( 79 , 5.678254913 , 1.216369574 ), ( 79 , 6.147177999 , 1.260664901 ), ( 79 , 5.876957346 , 1.284120831 ), ( 79 , 5.926904796 , 1.300217994 ), ( 79 , 6.116908634 , 1.322752332 ), ( 79 , 5.219357426 , 0.960338365 ), ( 79 , 5.188875157 , 1.001974564 ), ( 79 , 5.28860536 , 1.049795822 ), ( 79 , 5.148474938 , 1.04442622 ), ( 79 , 5.079610674 , 1.053289145 ), ( 79 , 5.102752509 , 1.058856966 ), ( 79 , 5.316476773 , 1.132158285 ), ( 79 , 5.304465742 , 1.149361458 ), ( 79 , 5.39804809 , 1.123303921 ), ( 79 , 5.29088231 , 1.159963386 ), ( 79 , 5.294060132 , 1.241079233 ), ( 79 , 5.016840357 , 1.081695847 ), ( 79 , 5.047861193 , 1.10318331 ), ( 79 , 5.064771657 , 1.118348524 ), ( 79 , 5.045760269 , 1.171728788 ), ( 79 , 4.879891706 , 1.171592826 ), ( 79 , 4.803245406 , 1.223007829 ), ( 79 , 4.790351256 , 1.221926564 ), ( 79 , 5.112546347 , 1.181635616 ), ( 79 , 5.109838962 , 1.213475715 ), ( 79 , 4.898952384 , 1.231656372 ), ( 79 , 4.869733053 , 1.229883006 ), ( 79 , 4.989422433 , 1.280709714 ), ( 79 , 5.439415188 , 1.220607146 ), ( 79 , 5.622661688 , 1.23149414 ), ( 79 , 5.381787497 , 1.215996256 ), ( 79 , 5.859308795 , 1.309086009 ), ( 79 , 5.885078792 , 1.330563216 ), ( 79 , 6.026287038 , 1.341625761 ), ( 79 , 6.08947333 , 1.382874138 ), ( 79 , 6.208008798 , 1.418964371 ), ( 79 , 6.053427328 , 1.407392118 ), ( 79 , 5.197000139 , 1.372250543 ), ( 79 , 5.164961358 , 1.388234923 ), ( 79 , 4.982116173 , 1.355697767 ), ( 79 , 4.931435067 , 1.378220055 ), ( 79 , 4.741095518 , 1.460540697 ), ( 79 , 5.578715606 , 1.402445645 ), ( 79 , 5.572586843 , 1.427010061 ), ( 79 , 5.786820797 , 1.442703369 ), ( 79 , 5.747217196 , 1.457217208 ), ( 79 , 6.205950258 , 1.491706579 ), ( 79 , 0.022039621 , -0.628574776 ), ( 79 , 0.039470571 , -0.612470127 ), ( 79 , 0.015796945 , -0.542703272 ), ( 79 , 0.026842596 , -0.508787297 ), ( 79 , 6.181488958 , -0.440482609 ), ( 79 , 0.016983883 , -0.495567613 ), ( 79 , 0.047008028 , -0.382814756 ), ( 79 , 0.152855875 , -0.455981004 ), ( 79 , 0.217897319 , -0.385753355 ), ( 79 , 0.181063801 , -0.354294646 ), ( 79 , 0.25291923 , -0.360871701 ), ( 79 , 0.257631528 , -0.337306162 ), ( 79 , 0.111750675 , -0.34792225 ), ( 79 , 0.253786163 , -0.273715015 ), ( 79 , 0.236119405 , -0.282316359 ), ( 79 , 0.127580038 , -0.262939517 ), ( 79 , 0.201699287 , -0.199886409 ), ( 79 , 0.216327997 , -0.191310726 ), ( 79 , 6.130327625 , -0.39274146 ), ( 79 , 6.19022211 , -0.36420455 ), ( 79 , 6.129557068 , -0.374246605 ), ( 79 , 6.134320678 , -0.359839087 ), ( 79 , 6.112802108 , -0.331412353 ), ( 79 , 6.176142037 , -0.289440658 ), ( 79 , 5.962541378 , -0.319158699 ), ( 79 , 6.086342433 , -0.283435313 ), ( 79 , 6.263230871 , -0.311113089 ), ( 79 , 6.251286111 , -0.285795136 ), ( 79 , 0.027414256 , -0.18812012 ), ( 79 , 6.160361946 , -0.208531201 ), ( 79 , 6.25365581 , -0.192259515 ), ( 79 , 6.111481775 , -0.155675678 ), ( 79 , 6.204011811 , -0.104484696 ), ( 79 , 6.195230938 , -0.096812258 ), ( 79 , 0.004894504 , -0.102527314 ), ( 79 , 0.004563041 , -0.101841269 ), ( 79 , 0.050575158 , -0.053723006 ), ( 79 , 6.259815455 , -0.033969691 ), ( 79 , 0.449483392 , -0.252923187 ), ( 79 , 0.297487922 , -0.212372794 ), ( 79 , 0.301258325 , -0.176284088 ), ( 79 , 0.316391376 , -0.160985379 ), ( 79 , 0.209271608 , -0.163101792 ), ( 79 , 0.24532565 , -0.132258563 ), ( 79 , 0.425842529 , -0.11800357 ), ( 79 , 0.439903451 , -0.115327368 ), ( 79 , 0.417506963 , -0.088612687 ), ( 79 , 0.36027898 , -0.06632838 ), ( 79 , 0.61057666 , -0.110339531 ), ( 79 , 0.586281561 , -0.091986337 ), ( 79 , 0.57939493 , -0.041832038 ), ( 79 , 0.751340577 , -0.011355497 ), ( 79 , 0.748272595 , 0.001510414 ), ( 79 , 0.700570344 , 0.032572657 ), ( 79 , 0.714845423 , 0.049168313 ), ( 79 , 0.469331632 , -0.050832606 ), ( 79 , 0.500939228 , 0.059232485 ), ( 79 , 0.605110818 , 0.073230245 ), ( 79 , 0.54941343 , 0.116544798 ), ( 79 , 0.192973716 , -0.137670435 ), ( 79 , 0.173406141 , -0.139738885 ), ( 79 , 0.281986988 , -0.092882352 ), ( 79 , 0.26050159 , -0.075425863 ), ( 79 , 0.127694518 , -0.103184328 ), ( 79 , 0.107111348 , -0.08111957 ), ( 79 , 0.210910209 , -0.008541115 ), ( 79 , 0.249656862 , 0.005973881 ), ( 79 , 0.259128233 , 0.013578796 ), ( 79 , 0.262207324 , 0.045953011 ), ( 79 , 0.105987325 , 0.027147023 ), ( 79 , 0.087055393 , 0.027621515 ), ( 79 , 0.200331892 , 0.010114751 ), ( 79 , 0.165848009 , 0.048234109 ), ( 79 , 0.173587501 , 0.06375518 ), ( 79 , 0.184952351 , 0.07271503 ), ( 79 , 0.265491003 , 0.084367705 ), ( 79 , 0.201132812 , 0.106298548 ), ( 79 , 0.218486714 , 0.133842445 ), ( 79 , 0.157353654 , 0.124893777 ), ( 79 , 0.380817304 , 0.066409696 ), ( 79 , 0.338570668 , 0.102696507 ), ( 79 , 0.552647137 , 0.182865891 ), ( 79 , 0.454907548 , 0.165520191 ), ( 79 , 0.329679996 , 0.121408245 ), ( 79 , 0.403850144 , 0.207389182 ), ( 79 , 0.409221147 , 0.308665755 ), ( 79 , 5.979511156 , -0.245384019 ), ( 79 , 5.933787544 , -0.254010917 ), ( 79 , 5.957913716 , -0.227017754 ), ( 79 , 5.816765334 , -0.242099819 ), ( 79 , 5.899893863 , -0.237333556 ), ( 79 , 5.997393935 , -0.17976657 ), ( 79 , 5.947450332 , -0.145055707 ), ( 79 , 6.029087399 , -0.121484419 ), ( 79 , 5.948153971 , -0.125926186 ), ( 79 , 5.886485666 , -0.170026154 ), ( 79 , 5.774870382 , -0.099351803 ), ( 79 , 5.793160737 , -0.101730713 ), ( 79 , 5.922326464 , -0.105900374 ), ( 79 , 5.825937079 , -0.09747526 ), ( 79 , 6.080109741 , -0.155475059 ), ( 79 , 6.101530198 , -0.129811515 ), ( 79 , 6.096655143 , -0.077412673 ), ( 79 , 5.994052765 , -0.081287871 ), ( 79 , 6.256434068 , 0.010403469 ), ( 79 , 6.218051435 , 0.036502101 ), ( 79 , 6.010186653 , -0.055122541 ), ( 79 , 6.029778673 , -0.046882149 ), ( 79 , 6.035061881 , -0.007518996 ), ( 79 , 6.078136876 , 0.000536761 ), ( 79 , 5.947078564 , 0.006994591 ), ( 79 , 6.112318657 , 0.042870446 ), ( 79 , 6.076557144 , 0.046871996 ), ( 79 , 6.166182537 , 0.07578544 ), ( 79 , 6.123451454 , 0.09148418 ), ( 79 , 6.056529174 , 0.085072386 ), ( 79 , 5.854200809 , 0.011226651 ), ( 79 , 5.716959837 , -0.010580133 ), ( 79 , 5.75374308 , 0.009414232 ), ( 79 , 5.578303293 , -0.064231489 ), ( 79 , 5.582063843 , -0.030884986 ), ( 79 , 5.640354503 , -0.028074932 ), ( 79 , 5.60941142 , -0.004049644 ), ( 79 , 5.646345694 , 0.039783079 ), ( 79 , 5.589126848 , 0.054424169 ), ( 79 , 5.703616174 , 0.076844534 ), ( 79 , 5.751010874 , 0.103706366 ), ( 79 , 5.654788164 , 0.106009104 ), ( 79 , 5.700782943 , 0.114059806 ), ( 79 , 5.702781665 , 0.125234328 ), ( 79 , 5.901592976 , 0.027612455 ), ( 79 , 5.963228105 , 0.085660388 ), ( 79 , 5.878093761 , 0.155751625 ), ( 79 , 5.969711234 , 0.102605595 ), ( 79 , 5.943579822 , 0.140928738 ), ( 79 , 5.972930262 , 0.183823565 ), ( 79 , 5.811295102 , 0.109792372 ), ( 79 , 5.82617492 , 0.122649221 ), ( 79 , 5.841135508 , 0.137275794 ), ( 79 , 5.852692535 , 0.150464715 ), ( 79 , 5.799163439 , 0.164952858 ), ( 79 , 5.724430243 , 0.158463569 ), ( 79 , 5.768843109 , 0.201903436 ), ( 79 , 5.79435877 , 0.228101489 ), ( 79 , 5.892375074 , 0.186353158 ), ( 79 , 5.909759014 , 0.234047714 ), ( 79 , 5.963555018 , 0.261709426 ), ( 79 , 5.938975822 , 0.270268828 ), ( 79 , 5.853244804 , 0.260006793 ), ( 79 , 5.910304471 , 0.274002836 ), ( 79 , 5.929627556 , 0.298472498 ), ( 79 , 5.904549149 , 0.310409409 ), ( 79 , 6.258856545 , 0.042997973 ), ( 79 , 0.001711844 , 0.046695927 ), ( 79 , 6.263700942 , 0.061076053 ), ( 79 , 0.088837713 , 0.083408895 ), ( 79 , 6.230316003 , 0.072872004 ), ( 79 , 0.13554183 , 0.162405426 ), ( 79 , 0.049135016 , 0.138720326 ), ( 79 , 0.075955571 , 0.154922534 ), ( 79 , 0.02676608 , 0.169557333 ), ( 79 , 0.102354655 , 0.206587666 ), ( 79 , 6.19231153 , 0.108229272 ), ( 79 , 6.201125946 , 0.109305033 ), ( 79 , 6.208216669 , 0.172531558 ), ( 79 , 6.099918107 , 0.165864217 ), ( 79 , 0.00181119 , 0.214103754 ), ( 79 , 0.181194879 , 0.226170217 ), ( 79 , 0.145344104 , 0.24157124 ), ( 79 , 0.212929803 , 0.319640747 ), ( 79 , 0.332581217 , 0.293691428 ), ( 79 , 0.34644812 , 0.316556632 ), ( 79 , 0.37226556 , 0.355165987 ), ( 79 , 0.276568948 , 0.329045368 ), ( 79 , 0.282895075 , 0.329774638 ), ( 79 , 0.14419783 , 0.298686709 ), ( 79 , 0.090923687 , 0.322576346 ), ( 79 , 0.146864956 , 0.35663716 ), ( 79 , 0.050624658 , 0.330056137 ), ( 79 , 0.084612887 , 0.349044009 ), ( 79 , 0.220513658 , 0.369372132 ), ( 79 , 0.228594998 , 0.449958029 ), ( 79 , 0.128799997 , 0.434245317 ), ( 79 , 0.208069538 , 0.445661783 ), ( 79 , 0.16026269 , 0.472152597 ), ( 79 , 6.240586732 , 0.307983354 ), ( 79 , 6.204790581 , 0.354226944 ), ( 79 , 6.157022346 , 0.327753022 ), ( 79 , 6.118346618 , 0.338570341 ), ( 79 , 6.184194498 , 0.388162404 ), ( 79 , 6.1843635 , 0.392510848 ), ( 79 , 5.927487777 , 0.37048932 ), ( 79 , 5.95369973 , 0.383131472 ), ( 79 , 6.082460492 , 0.422946911 ), ( 79 , 6.045338415 , 0.453947404 ), ( 79 , 6.061357713 , 0.469720055 ), ( 79 , 0.003491076 , 0.410817967 ), ( 79 , 0.075083614 , 0.411854059 ), ( 79 , 0.0972343 , 0.430735267 ), ( 79 , 0.113641718 , 0.505104263 ), ( 79 , 0.149131389 , 0.552318307 ), ( 79 , 0.074585131 , 0.542345081 ), ( 79 , 0.02248291 , 0.52933753 ), ( 79 , 0.047159056 , 0.535563572 ), ( 79 , 0.047067002 , 0.562739181 ), ( 79 , 0.129378585 , 0.575732076 ), ( 79 , 6.219749527 , 0.553869376 ), ( 79 , 6.150014988 , 0.531144922 ), ( 79 , 6.258596762 , 0.586312364 ), ( 79 , 0.020364888 , 0.598035743 ), ( 79 , 0.057030618 , 0.615947198 ), ( 79 , 0.057059657 , 0.653076673 ), ( 79 , 0.047048729 , 0.654045058 ), ( 79 , 6.22369826 , 0.596841888 ), ( 79 , 6.239984422 , 0.624321102 ), ( 79 , 6.247750065 , 0.661319605 ), ( 79 , 6.279491836 , 0.719106628 ), ( 79 , 1.560321359 , -0.717412145 ), ( 79 , 1.602585618 , -0.646412321 ), ( 79 , 1.524691459 , -0.649001475 ), ( 79 , 1.664290466 , -0.5772088 ), ( 79 , 1.661711593 , -0.534708836 ), ( 79 , 1.618911299 , -0.554562533 ), ( 79 , 1.659064028 , -0.523923481 ), ( 79 , 1.468625147 , -0.606027588 ), ( 79 , 1.423550413 , -0.567325919 ), ( 79 , 1.493712394 , -0.483586664 ), ( 79 , 1.465183603 , -0.44922009 ), ( 79 , 1.480927056 , -0.440573313 ), ( 79 , 1.570994981 , -0.509737287 ), ( 79 , 1.532285297 , -0.408744304 ), ( 79 , 1.859631655 , -0.430810855 ), ( 79 , 1.81389395 , -0.43072626 ), ( 79 , 1.778721424 , -0.43534502 ), ( 79 , 1.715952186 , -0.402597314 ), ( 79 , 1.765042592 , -0.343111023 ), ( 79 , 1.86040625 , -0.408878942 ), ( 79 , 1.898085484 , -0.3820364 ), ( 79 , 1.85103789 , -0.374146571 ), ( 79 , 1.911053627 , -0.372801075 ), ( 79 , 1.874420059 , -0.333628422 ), ( 79 , 1.821930265 , -0.367350787 ), ( 79 , 1.843931857 , -0.3450349 ), ( 79 , 1.820156669 , -0.306479623 ), ( 79 , 1.811947019 , -0.300462992 ), ( 79 , 1.7214118 , -0.328335278 ), ( 79 , 1.704547182 , -0.312823989 ), ( 79 , 1.638793356 , -0.340242418 ), ( 79 , 1.63326499 , -0.340782145 ), ( 79 , 1.67207055 , -0.318044763 ), ( 79 , 1.665136454 , -0.317080203 ), ( 79 , 1.783785062 , -0.282951391 ), ( 79 , 1.735406941 , -0.296938284 ), ( 79 , 1.759320717 , -0.276344388 ), ( 79 , 1.758212153 , -0.274613779 ), ( 79 , 1.856828297 , -0.259567348 ), ( 79 , 1.807228375 , -0.238053328 ), ( 79 , 1.725934798 , -0.279390088 ), ( 79 , 1.701748784 , -0.274428487 ), ( 79 , 1.780078545 , -0.239160902 ), ( 79 , 1.794762891 , -0.194065623 ), ( 79 , 1.743340726 , -0.204162611 ), ( 79 , 1.381385432 , -0.442124399 ), ( 79 , 1.455196712 , -0.424797908 ), ( 79 , 1.381030204 , -0.368263091 ), ( 79 , 1.485381348 , -0.395289996 ), ( 79 , 1.487849365 , -0.376011242 ), ( 79 , 1.551539091 , -0.330922817 ), ( 79 , 1.40755648 , -0.34694307 ), ( 79 , 1.478167951 , -0.297943771 ), ( 79 , 1.4669637 , -0.276141549 ), ( 79 , 1.329155333 , -0.312152443 ), ( 79 , 1.232763998 , -0.366049849 ), ( 79 , 1.21186038 , -0.31993428 ), ( 79 , 1.37218884 , -0.320879186 ), ( 79 , 1.367556171 , -0.323913183 ), ( 79 , 1.370383845 , -0.290866607 ), ( 79 , 1.378867737 , -0.253170507 ), ( 79 , 1.401565686 , -0.24700361 ), ( 79 , 1.39865947 , -0.233640011 ), ( 79 , 1.424358312 , -0.245209059 ), ( 79 , 1.359697799 , -0.181298493 ), ( 79 , 1.581222949 , -0.324073701 ), ( 79 , 1.596127528 , -0.29599687 ), ( 79 , 1.536717126 , -0.306346099 ), ( 79 , 1.511955567 , -0.222158605 ), ( 79 , 1.548792212 , -0.225829247 ), ( 79 , 1.702649571 , -0.215616177 ), ( 79 , 1.655033356 , -0.218745986 ), ( 79 , 1.659113329 , -0.18718872 ), ( 79 , 1.72660545 , -0.157074046 ), ( 79 , 1.695562056 , -0.147677484 ), ( 79 , 1.606298443 , -0.18448991 ), ( 79 , 1.626859372 , -0.179580441 ), ( 79 , 1.642275723 , -0.173402963 ), ( 79 , 1.465609132 , -0.231170534 ), ( 79 , 1.503834477 , -0.222995188 ), ( 79 , 1.496066331 , -0.215578462 ), ( 79 , 1.48099149 , -0.195655096 ), ( 79 , 1.48577447 , -0.182089653 ), ( 79 , 1.468849712 , -0.18323926 ), ( 79 , 1.53747254 , -0.156408474 ), ( 79 , 1.494070185 , -0.167393956 ), ( 79 , 1.4217935 , -0.179477954 ), ( 79 , 1.391971386 , -0.176186804 ), ( 79 , 1.459500516 , -0.143246021 ), ( 79 , 1.512102881 , -0.121218497 ), ( 79 , 1.597290527 , -0.127684101 ), ( 79 , 1.55155311 , -0.133891526 ), ( 79 , 1.510628197 , -0.07011009 ), ( 79 , 1.56284626 , -0.03551772 ), ( 79 , 1.557096907 , -0.020328559 ), ( 79 , 1.973969285 , -0.318546017 ), ( 79 , 1.946042675 , -0.31657121 ), ( 79 , 1.961679019 , -0.306724765 ), ( 79 , 1.990242152 , -0.294869038 ), ( 79 , 1.966411226 , -0.279171334 ), ( 79 , 1.989453323 , -0.256752456 ), ( 79 , 1.993104366 , -0.254147713 ), ( 79 , 1.997302453 , -0.234422678 ), ( 79 , 1.901675941 , -0.227734965 ), ( 79 , 1.977226579 , -0.234225604 ), ( 79 , 1.956688581 , -0.226125938 ), ( 79 , 1.950678923 , -0.213348071 ), ( 79 , 2.0642347 , -0.202892278 ), ( 79 , 2.059180804 , -0.192582762 ), ( 79 , 2.068437025 , -0.184322822 ), ( 79 , 2.112475066 , -0.182018786 ), ( 79 , 2.140250982 , -0.167634797 ), ( 79 , 2.122487008 , -0.161220942 ), ( 79 , 2.017769883 , -0.127882901 ), ( 79 , 2.061995506 , -0.103395841 ), ( 79 , 1.86485565 , -0.245251216 ), ( 79 , 1.902213345 , -0.218918716 ), ( 79 , 1.855629778 , -0.215133471 ), ( 79 , 1.877383994 , -0.194144108 ), ( 79 , 1.893714857 , -0.182378664 ), ( 79 , 1.877377153 , -0.162531557 ), ( 79 , 1.914106928 , -0.159254525 ), ( 79 , 1.922987639 , -0.146974734 ), ( 79 , 1.841678404 , -0.172559075 ), ( 79 , 1.813074128 , -0.146913159 ), ( 79 , 1.888546081 , -0.124780191 ), ( 79 , 1.966123287 , -0.158060668 ), ( 79 , 1.981181352 , -0.133167317 ), ( 79 , 1.956377103 , -0.124948102 ), ( 79 , 2.026014218 , -0.088202274 ), ( 79 , 1.91964803 , -0.079994507 ), ( 79 , 1.904865287 , -0.087882664 ), ( 79 , 1.878131961 , -0.076444593 ), ( 79 , 1.893398209 , -0.065002942 ), ( 79 , 1.911357289 , -0.05436145 ), ( 79 , 1.958845772 , -0.066905865 ), ( 79 , 2.167316399 , -0.158013503 ), ( 79 , 2.168381783 , -0.094584961 ), ( 79 , 2.211823967 , -0.108262763 ), ( 79 , 2.213344487 , -0.061531351 ), ( 79 , 2.125191435 , -0.070057649 ), ( 79 , 2.129316168 , -0.065090546 ), ( 79 , 2.10567521 , -0.057024259 ), ( 79 , 2.15722281 , -0.066846627 ), ( 79 , 2.170688234 , -0.069685248 ), ( 79 , 2.143347982 , -0.027340311 ), ( 79 , 2.226675587 , -0.041544389 ), ( 79 , 2.344115165 , 0.009345428 ), ( 79 , 2.302173895 , 0.000300617 ), ( 79 , 2.211621655 , -0.021214908 ), ( 79 , 2.240227582 , -0.005378361 ), ( 79 , 2.192850594 , -0.00936448 ), ( 79 , 2.27449143 , 0.016721356 ), ( 79 , 2.080906258 , -0.060333322 ), ( 79 , 2.094323715 , -0.03137511 ), ( 79 , 2.053252353 , -0.028096586 ), ( 79 , 2.134966345 , -0.002040926 ), ( 79 , 2.096213801 , -0.001153975 ), ( 79 , 2.048564529 , 0.056216062 ), ( 79 , 2.061133711 , 0.067075188 ), ( 79 , 2.171774926 , 0.048756742 ), ( 79 , 2.172180377 , 0.050959327 ), ( 79 , 2.119702423 , 0.055361866 ), ( 79 , 2.145996209 , 0.074610661 ), ( 79 , 2.13601241 , 0.103432797 ), ( 79 , 2.111276852 , 0.110363361 ), ( 79 , 1.79866584 , -0.112847756 ), ( 79 , 1.77105369 , -0.120363629 ), ( 79 , 1.796754988 , -0.095810547 ), ( 79 , 1.806129171 , -0.076662856 ), ( 79 , 1.815174637 , -0.055410797 ), ( 79 , 1.703003817 , -0.112227431 ), ( 79 , 1.693751775 , -0.085504402 ), ( 79 , 1.755131743 , -0.069387299 ), ( 79 , 1.782355745 , -0.029010609 ), ( 79 , 1.764582401 , -0.042424313 ), ( 79 , 1.751395639 , -0.041031926 ), ( 79 , 1.868399178 , -0.055708264 ), ( 79 , 1.916238182 , -0.028898506 ), ( 79 , 1.916888004 , -0.005827525 ), ( 79 , 1.887565963 , -0.009765556 ), ( 79 , 1.822492159 , 0.026028033 ), ( 79 , 1.870068098 , 0.008025626 ), ( 79 , 1.663214174 , -0.075922911 ), ( 79 , 1.662490273 , -0.061146003 ), ( 79 , 1.724414578 , -0.026354546 ), ( 79 , 1.726771024 , -0.019141232 ), ( 79 , 1.631168267 , -0.018524826 ), ( 79 , 1.632641926 , 0.044935451 ), ( 79 , 1.772322615 , 0.013030727 ), ( 79 , 1.757004294 , 0.02995323 ), ( 79 , 1.794490289 , 0.037331493 ), ( 79 , 1.741829734 , 0.032834855 ), ( 79 , 1.746651558 , 0.061806125 ), ( 79 , 1.811796062 , 0.060524818 ), ( 79 , 1.807745279 , 0.08918858 ), ( 79 , 1.740305187 , 0.090599722 ), ( 79 , 1.708851397 , 0.087733844 ), ( 79 , 1.733284233 , 0.101336005 ), ( 79 , 1.779257253 , 0.109903167 ), ( 79 , 1.959607513 , 0.02621735 ), ( 79 , 1.990794786 , 0.048564058 ), ( 79 , 1.991741964 , 0.050049298 ), ( 79 , 1.93741684 , 0.034678968 ), ( 79 , 2.018366224 , 0.084183655 ), ( 79 , 1.889031193 , 0.065342692 ), ( 79 , 1.945527378 , 0.117165126 ), ( 79 , 2.074808684 , 0.152218971 ), ( 79 , 2.080354234 , 0.157920012 ), ( 79 , 2.023845885 , 0.167614165 ), ( 79 , 1.978027758 , 0.162772282 ), ( 79 , 1.971316226 , 0.171612457 ), ( 79 , 2.046900588 , 0.188598737 ), ( 79 , 2.095960286 , 0.213169555 ), ( 79 , 2.078959838 , 0.205057799 ), ( 79 , 2.049357568 , 0.241870933 ), ( 79 , 1.878365914 , 0.105980958 ), ( 79 , 1.894684816 , 0.126176788 ), ( 79 , 1.85228207 , 0.143961849 ), ( 79 , 1.896369868 , 0.156113394 ), ( 79 , 1.924269675 , 0.177945222 ), ( 79 , 1.917475511 , 0.182276606 ), ( 79 , 1.843527646 , 0.151302165 ), ( 79 , 1.786322809 , 0.167234612 ), ( 79 , 1.806866011 , 0.183693824 ), ( 79 , 1.960447995 , 0.19241524 ), ( 79 , 2.028988474 , 0.277418624 ), ( 79 , 1.907604505 , 0.241999224 ), ( 79 , 1.925415753 , 0.279036667 ), ( 79 , 1.893020473 , 0.276665598 ), ( 79 , 1.977061114 , 0.278946124 ), ( 79 , 1.212998261 , -0.227459038 ), ( 79 , 1.175382013 , -0.245280387 ), ( 79 , 1.275873978 , -0.231613427 ), ( 79 , 1.306461128 , -0.180703271 ), ( 79 , 1.238154042 , -0.186438905 ), ( 79 , 1.064559676 , -0.105625273 ), ( 79 , 1.183430929 , -0.084832704 ), ( 79 , 1.148651929 , -0.087368262 ), ( 79 , 1.375109185 , -0.118792426 ), ( 79 , 1.357617586 , -0.105132598 ), ( 79 , 1.436182184 , -0.101072151 ), ( 79 , 1.460485567 , -0.076654949 ), ( 79 , 1.433030309 , -0.061175411 ), ( 79 , 1.345690396 , -0.067015625 ), ( 79 , 1.294795819 , -0.083446069 ), ( 79 , 1.299427341 , -0.081246823 ), ( 79 , 1.376163846 , -0.058746401 ), ( 79 , 1.380606244 , -0.028658017 ), ( 79 , 1.353092973 , -0.019988898 ), ( 79 , 1.483197112 , -0.058128377 ), ( 79 , 1.460327255 , -0.0642164 ), ( 79 , 1.488060469 , -0.047418464 ), ( 79 , 1.465096101 , -0.041436265 ), ( 79 , 1.47717343 , -0.01847346 ), ( 79 , 1.453252594 , -0.021660234 ), ( 79 , 1.466337204 , -0.01361294 ), ( 79 , 1.413091298 , -0.015139587 ), ( 79 , 1.409757939 , 0.018469015 ), ( 79 , 1.410091256 , 0.019889607 ), ( 79 , 1.474096237 , 0.005537748 ), ( 79 , 1.47453046 , 0.017233558 ), ( 79 , 1.512851178 , 0.047252002 ), ( 79 , 1.457635365 , 0.053361608 ), ( 79 , 1.444624949 , 0.058525191 ), ( 79 , 1.278805354 , -0.022268408 ), ( 79 , 1.271793858 , -0.009540536 ), ( 79 , 1.363078893 , 0.000418592 ), ( 79 , 1.31777823 , 0.028126963 ), ( 79 , 1.319628757 , 0.035745177 ), ( 79 , 1.225818262 , 0.016803619 ), ( 79 , 1.416083937 , 0.061395117 ), ( 79 , 1.444096031 , 0.08148473 ), ( 79 , 1.421754357 , 0.10394817 ), ( 79 , 1.342150623 , 0.079268274 ), ( 79 , 1.360615115 , 0.094401733 ), ( 79 , 1.405583868 , 0.139715119 ), ( 79 , 1.36192531 , 0.119726541 ), ( 79 , 0.977004245 , -0.137578349 ), ( 79 , 1.012862294 , -0.062782867 ), ( 79 , 0.919154391 , -0.074579207 ), ( 79 , 1.139171914 , 0.020845886 ), ( 79 , 1.130025586 , 0.030550084 ), ( 79 , 1.040015963 , 0.025234787 ), ( 79 , 1.110244032 , 0.039030338 ), ( 79 , 0.838473031 , -0.004282914 ), ( 79 , 1.008203933 , 0.030106407 ), ( 79 , 0.954326288 , 0.04760749 ), ( 79 , 1.037352352 , 0.10015733 ), ( 79 , 1.032379452 , 0.117115059 ), ( 79 , 0.950654167 , 0.098462804 ), ( 79 , 1.004218726 , 0.115548286 ), ( 79 , 0.987950435 , 0.126432451 ), ( 79 , 1.153862052 , 0.043466475 ), ( 79 , 1.098112439 , 0.092903482 ), ( 79 , 1.197760701 , 0.174811321 ), ( 79 , 1.27626004 , 0.172159318 ), ( 79 , 1.316041147 , 0.21537508 ), ( 79 , 1.259057672 , 0.225589324 ), ( 79 , 1.040172092 , 0.130440318 ), ( 79 , 1.039597974 , 0.13273685 ), ( 79 , 1.074327863 , 0.148414617 ), ( 79 , 1.194565735 , 0.183567432 ), ( 79 , 1.15225422 , 0.226406921 ), ( 79 , 1.18460573 , 0.242659824 ), ( 79 , 1.130759536 , 0.239468332 ), ( 79 , 1.109709237 , 0.253918446 ), ( 79 , 1.178481474 , 0.282251257 ), ( 79 , 1.202373374 , 0.281773875 ), ( 79 , 1.561244346 , 0.03605537 ), ( 79 , 1.568611169 , 0.04321836 ), ( 79 , 1.653587274 , 0.073152064 ), ( 79 , 1.516512523 , 0.050732159 ), ( 79 , 1.559720366 , 0.087289375 ), ( 79 , 1.495588964 , 0.101996722 ), ( 79 , 1.582120011 , 0.134370087 ), ( 79 , 1.743540427 , 0.170210972 ), ( 79 , 1.728582762 , 0.179505004 ), ( 79 , 1.603329001 , 0.144347031 ), ( 79 , 1.627151727 , 0.157704017 ), ( 79 , 1.628667024 , 0.167517658 ), ( 79 , 1.60490954 , 0.156160109 ), ( 79 , 1.679950026 , 0.183566266 ), ( 79 , 1.680833533 , 0.203919706 ), ( 79 , 1.655800232 , 0.234716534 ), ( 79 , 1.675080854 , 0.24632594 ), ( 79 , 1.50779692 , 0.149781291 ), ( 79 , 1.513330598 , 0.168647928 ), ( 79 , 1.498013975 , 0.183274904 ), ( 79 , 1.481536295 , 0.209501934 ), ( 79 , 1.468510381 , 0.211197519 ), ( 79 , 1.544523854 , 0.216728641 ), ( 79 , 1.582346284 , 0.221153765 ), ( 79 , 1.551822499 , 0.226924795 ), ( 79 , 1.629832449 , 0.244616521 ), ( 79 , 1.620356952 , 0.252637345 ), ( 79 , 1.490403139 , 0.265504793 ), ( 79 , 1.745111693 , 0.203871152 ), ( 79 , 1.745590534 , 0.215984488 ), ( 79 , 1.721409232 , 0.224183502 ), ( 79 , 1.867513378 , 0.271000148 ), ( 79 , 1.870859642 , 0.287892629 ), ( 79 , 1.855982056 , 0.285732191 ), ( 79 , 1.873453709 , 0.288826378 ), ( 79 , 1.922859448 , 0.311994042 ), ( 79 , 1.890372899 , 0.330238285 ), ( 79 , 1.878692188 , 0.34562712 ), ( 79 , 1.840310415 , 0.350022332 ), ( 79 , 1.846457549 , 0.369570597 ), ( 79 , 1.841724009 , 0.380448268 ), ( 79 , 1.68823828 , 0.304586876 ), ( 79 , 1.703535199 , 0.313281983 ), ( 79 , 1.726140957 , 0.331657822 ), ( 79 , 1.745077366 , 0.337062764 ), ( 79 , 1.69286128 , 0.328355086 ), ( 79 , 1.605573125 , 0.321155691 ), ( 79 , 1.738124589 , 0.381424944 ), ( 79 , 1.819593551 , 0.435594162 ), ( 79 , 1.749695324 , 0.441980288 ), ( 79 , 1.679948674 , 0.424149945 ), ( 79 , 1.40912463 , 0.250646299 ), ( 79 , 1.338269521 , 0.252115562 ), ( 79 , 1.356919553 , 0.260433615 ), ( 79 , 1.414399384 , 0.289072097 ), ( 79 , 1.355535304 , 0.304388948 ), ( 79 , 1.490858368 , 0.283336137 ), ( 79 , 1.448831042 , 0.305967665 ), ( 79 , 1.464955097 , 0.327390299 ), ( 79 , 1.524638369 , 0.324942284 ), ( 79 , 1.40352892 , 0.32998385 ), ( 79 , 1.267833895 , 0.263253076 ), ( 79 , 1.263347508 , 0.277307787 ), ( 79 , 1.333142952 , 0.345693643 ), ( 79 , 1.26433622 , 0.38309389 ), ( 79 , 1.375299595 , 0.350040494 ), ( 79 , 1.329940983 , 0.417498664 ), ( 79 , 1.310761607 , 0.421717632 ), ( 79 , 1.339914958 , 0.471166904 ), ( 79 , 1.551731693 , 0.357250793 ), ( 79 , 1.541374164 , 0.375965722 ), ( 79 , 1.558241818 , 0.398613181 ), ( 79 , 1.515161155 , 0.393203313 ), ( 79 , 1.562091041 , 0.42965 ), ( 79 , 1.55427935 , 0.442089683 ), ( 79 , 1.598726255 , 0.462956261 ), ( 79 , 1.670271027 , 0.488459164 ), ( 79 , 1.640729947 , 0.579430982 ), ( 79 , 1.654283593 , 0.589841172 ), ( 79 , 1.656114774 , 0.604584143 ), ( 79 , 1.462965535 , 0.450799049 ), ( 79 , 1.490568391 , 0.464528781 ), ( 79 , 1.500184276 , 0.476406087 ), ( 79 , 1.458262587 , 0.469173137 ), ( 79 , 1.514793623 , 0.513662151 ), ( 79 , 1.55109879 , 0.509179435 ), ( 79 , 1.441975956 , 0.545976789 ), ( 79 , 1.483765261 , 0.598455623 ), ( 79 , 1.596853304 , 0.557641347 ), ( 79 , 1.572869195 , 0.616313218 ), ( 79 , 1.609626976 , 0.640165281 ), ( 79 , 1.577864596 , 0.63731364 ), ( 79 , 1.555159906 , 0.643794794 ), ( 79 , 1.559798253 , 0.674342803 ), ( 79 , 1.563439074 , 0.711863307 ), ( 79 , 3.152679266 , -0.681185977 ), ( 79 , 3.100554153 , -0.657655153 ), ( 79 , 3.131085002 , -0.57523012 ), ( 79 , 3.272956018 , -0.581691627 ), ( 79 , 3.277449148 , -0.552147219 ), ( 79 , 3.315244662 , -0.517604488 ), ( 79 , 3.271679794 , -0.51159228 ), ( 79 , 3.192633845 , -0.534138232 ), ( 79 , 3.219188948 , -0.493433638 ), ( 79 , 3.201271384 , -0.476842851 ), ( 79 , 3.243536842 , -0.462015925 ), ( 79 , 3.000539257 , -0.561116405 ), ( 79 , 2.974005077 , -0.550152293 ), ( 79 , 2.964580686 , -0.529238042 ), ( 79 , 3.164412294 , -0.501260008 ), ( 79 , 3.192017831 , -0.47247517 ), ( 79 , 3.123918575 , -0.435041958 ), ( 79 , 3.137394415 , -0.408652956 ), ( 79 , 3.123508092 , -0.378044402 ), ( 79 , 3.160288809 , -0.367204879 ), ( 79 , 3.395972259 , -0.439209684 ), ( 79 , 3.407587342 , -0.373959283 ), ( 79 , 3.456471692 , -0.364502398 ), ( 79 , 3.395884758 , -0.355773213 ), ( 79 , 3.416657844 , -0.332970104 ), ( 79 , 3.437710105 , -0.332234881 ), ( 79 , 3.419305203 , -0.285130576 ), ( 79 , 3.261594357 , -0.370472178 ), ( 79 , 3.262795933 , -0.318266334 ), ( 79 , 3.266595234 , -0.279351645 ), ( 79 , 3.372758102 , -0.255178978 ), ( 79 , 3.292629023 , -0.285437034 ), ( 79 , 3.32889082 , -0.237906642 ), ( 79 , 3.30884443 , -0.201006838 ), ( 79 , 2.983992718 , -0.470503488 ), ( 79 , 2.924724678 , -0.49341041 ), ( 79 , 2.999714665 , -0.420379034 ), ( 79 , 2.882997652 , -0.44885328 ), ( 79 , 2.950722115 , -0.36111071 ), ( 79 , 3.049528423 , -0.369553451 ), ( 79 , 3.033358921 , -0.358803114 ), ( 79 , 2.783455573 , -0.309531726 ), ( 79 , 2.847735734 , -0.297248383 ), ( 79 , 2.94114051 , -0.269397994 ), ( 79 , 2.911851676 , -0.268078857 ), ( 79 , 2.879401125 , -0.269299449 ), ( 79 , 2.927033588 , -0.228890303 ), ( 79 , 2.913222197 , -0.219668544 ), ( 79 , 2.924293653 , -0.198281745 ), ( 79 , 2.928104574 , -0.196625492 ), ( 79 , 2.949289601 , -0.185285794 ), ( 79 , 3.13234186 , -0.331306078 ), ( 79 , 3.093044514 , -0.289680812 ), ( 79 , 3.243130535 , -0.170550881 ), ( 79 , 3.209886791 , -0.179334777 ), ( 79 , 3.234191188 , -0.166665412 ), ( 79 , 3.219640416 , -0.112247983 ), ( 79 , 3.101158694 , -0.164013445 ), ( 79 , 3.090482517 , -0.154887118 ), ( 79 , 2.983529107 , -0.181912224 ), ( 79 , 2.994478393 , -0.172472081 ), ( 79 , 3.026529649 , -0.11409134 ), ( 79 , 3.091132185 , -0.056529852 ), ( 79 , 3.081919483 , -0.052402315 ), ( 79 , 3.512740264 , -0.272836699 ), ( 79 , 3.600372342 , -0.257733037 ), ( 79 , 3.452430166 , -0.248576745 ), ( 79 , 3.634188277 , -0.186449229 ), ( 79 , 3.645708925 , -0.166222568 ), ( 79 , 3.696309814 , -0.147293863 ), ( 79 , 3.638667114 , -0.148088812 ), ( 79 , 3.629115906 , -0.125189641 ), ( 79 , 3.436766281 , -0.24762769 ), ( 79 , 3.507848575 , -0.189736817 ), ( 79 , 3.450673404 , -0.176330397 ), ( 79 , 3.347128691 , -0.160824744 ), ( 79 , 3.549384699 , -0.147235359 ), ( 79 , 3.567391855 , -0.137391441 ), ( 79 , 3.535374668 , -0.033077155 ), ( 79 , 3.737631235 , -0.130319594 ), ( 79 , 3.68791296 , -0.127002941 ), ( 79 , 3.800483436 , -0.101271269 ), ( 79 , 3.713075494 , -0.046676896 ), ( 79 , 3.846281821 , -0.035625789 ), ( 79 , 3.799177894 , -0.054272627 ), ( 79 , 3.881783838 , 0.026257788 ), ( 79 , 3.783149373 , 0.029931017 ), ( 79 , 3.552903318 , -0.005473939 ), ( 79 , 3.59734945 , 0.012252006 ), ( 79 , 3.656999473 , 0.048580197 ), ( 79 , 3.736479492 , 0.10613628 ), ( 79 , 3.720970586 , 0.139762914 ), ( 79 , 3.33791869 , -0.148911639 ), ( 79 , 3.34659155 , -0.136137777 ), ( 79 , 3.420078126 , -0.090108169 ), ( 79 , 3.440472598 , -0.046754655 ), ( 79 , 3.530819561 , 0.002080181 ), ( 79 , 3.25361712 , -0.004921727 ), ( 79 , 3.150092322 , 0.001778742 ), ( 79 , 3.191433336 , 0.003383836 ), ( 79 , 3.249271006 , 0.024156411 ), ( 79 , 3.224563651 , 0.020351139 ), ( 79 , 3.375766845 , 0.073957505 ), ( 79 , 3.274015304 , 0.077077779 ), ( 79 , 3.365590886 , 0.143299643 ), ( 79 , 3.499512798 , 0.048121525 ), ( 79 , 3.486751382 , 0.0506698 ), ( 79 , 3.511208879 , 0.076832715 ), ( 79 , 3.52621249 , 0.145878078 ), ( 79 , 3.638774377 , 0.176957345 ), ( 79 , 3.613168187 , 0.232769873 ), ( 79 , 3.526263827 , 0.165126897 ), ( 79 , 3.344253963 , 0.162058567 ), ( 79 , 3.357935682 , 0.16359521 ), ( 79 , 3.530389598 , 0.203156048 ), ( 79 , 3.460645061 , 0.26734254 ), ( 79 , 2.736377105 , -0.318624271 ), ( 79 , 2.793254471 , -0.285764227 ), ( 79 , 2.7874515 , -0.274534813 ), ( 79 , 2.825982169 , -0.266089812 ), ( 79 , 2.679340443 , -0.257012457 ), ( 79 , 2.85902909 , -0.211563504 ), ( 79 , 2.695350209 , -0.210814765 ), ( 79 , 2.675914491 , -0.147406325 ), ( 79 , 2.641899364 , -0.166644081 ), ( 79 , 2.58506754 , -0.161124148 ), ( 79 , 2.648954609 , -0.097149534 ), ( 79 , 2.715668918 , -0.077236714 ), ( 79 , 2.748099559 , -0.068338829 ), ( 79 , 2.786130279 , -0.035789937 ), ( 79 , 2.949774857 , -0.155334926 ), ( 79 , 2.906395252 , -0.122316098 ), ( 79 , 3.03144095 , -0.086471169 ), ( 79 , 2.891868926 , -0.111591885 ), ( 79 , 2.916833532 , -0.036099132 ), ( 79 , 3.068861204 , 0.003228751 ), ( 79 , 2.96821298 , 0.004783946 ), ( 79 , 2.833049969 , -0.070219365 ), ( 79 , 2.874711477 , -0.039032028 ), ( 79 , 2.897352732 , -0.000542663 ), ( 79 , 2.841391516 , 0.047244814 ), ( 79 , 2.921954425 , 0.042874259 ), ( 79 , 2.916629549 , 0.056246391 ), ( 79 , 2.864587343 , 0.09203258 ), ( 79 , 2.566123683 , -0.103035148 ), ( 79 , 2.487811239 , -0.104758269 ), ( 79 , 2.492831047 , -0.05796959 ), ( 79 , 2.652669582 , -0.044026965 ), ( 79 , 2.691197317 , -0.048829512 ), ( 79 , 2.594312409 , 0.016473987 ), ( 79 , 2.679714456 , 0.054951898 ), ( 79 , 2.52160004 , -0.005578842 ), ( 79 , 2.43123478 , 0.046751309 ), ( 79 , 2.55925117 , 0.030000876 ), ( 79 , 2.549899889 , 0.034346039 ), ( 79 , 2.562945106 , 0.040408703 ), ( 79 , 2.523213557 , 0.032021293 ), ( 79 , 2.57836654 , 0.141848804 ), ( 79 , 2.740570935 , 0.057868942 ), ( 79 , 2.817489435 , 0.093955172 ), ( 79 , 2.849406178 , 0.086604477 ), ( 79 , 2.84191411 , 0.15967135 ), ( 79 , 2.87192252 , 0.169333196 ), ( 79 , 2.799917073 , 0.187439149 ), ( 79 , 2.666806506 , 0.10765342 ), ( 79 , 2.713461308 , 0.186744526 ), ( 79 , 2.766873176 , 0.215974241 ), ( 79 , 2.79959301 , 0.243971071 ), ( 79 , 2.716059248 , 0.305671228 ), ( 79 , 3.096998939 , 0.038951305 ), ( 79 , 3.14668083 , 0.063393507 ), ( 79 , 3.152869217 , 0.140840999 ), ( 79 , 3.238677655 , 0.084733561 ), ( 79 , 3.262278675 , 0.107414884 ), ( 79 , 3.212522203 , 0.108615465 ), ( 79 , 3.22943895 , 0.172657502 ), ( 79 , 3.199341025 , 0.200998296 ), ( 79 , 3.17474545 , 0.235915224 ), ( 79 , 3.16411454 , 0.235146105 ), ( 79 , 3.181885781 , 0.258823072 ), ( 79 , 3.11783514 , 0.24698354 ), ( 79 , 3.084194287 , 0.261834213 ), ( 79 , 3.475363202 , 0.301946619 ), ( 79 , 3.498559097 , 0.31006482 ), ( 79 , 3.350209293 , 0.332036765 ), ( 79 , 3.352330718 , 0.33724405 ), ( 79 , 3.253535889 , 0.40755595 ), ( 79 , 3.414340654 , 0.41014556 ), ( 79 , 3.279298003 , 0.451521175 ), ( 79 , 3.320148944 , 0.473664883 ), ( 79 , 2.957080189 , 0.216411945 ), ( 79 , 2.912259544 , 0.22712574 ), ( 79 , 2.886036053 , 0.261929803 ), ( 79 , 3.007039418 , 0.285852091 ), ( 79 , 3.081214169 , 0.354637601 ), ( 79 , 3.016598649 , 0.39824148 ), ( 79 , 2.821730439 , 0.288728039 ), ( 79 , 2.874049542 , 0.375399899 ), ( 79 , 2.96749943 , 0.382466004 ), ( 79 , 3.011226867 , 0.441624475 ), ( 79 , 3.225659023 , 0.437381764 ), ( 79 , 3.219469646 , 0.446302989 ), ( 79 , 3.198539597 , 0.4997744 ), ( 79 , 3.197733124 , 0.55494269 ), ( 79 , 3.042246255 , 0.484743055 ), ( 79 , 3.072731841 , 0.521773382 ), ( 79 , 3.021278832 , 0.50692633 ), ( 79 , 2.988542001 , 0.55544864 ), ( 79 , 4.698633478 , -0.696957551 ), ( 79 , 4.738905093 , -0.653331803 ), ( 79 , 4.758118478 , -0.649697585 ), ( 79 , 4.773650019 , -0.59846017 ), ( 79 , 4.663661431 , -0.652964656 ), ( 79 , 4.684027643 , -0.637195279 ), ( 79 , 4.656646368 , -0.608257645 ), ( 79 , 4.672038985 , -0.597158264 ), ( 79 , 4.817520865 , -0.610961816 ), ( 79 , 4.806521425 , -0.585214557 ), ( 79 , 4.891314321 , -0.53283717 ), ( 79 , 4.907448081 , -0.523252706 ), ( 79 , 4.761537333 , -0.517310896 ), ( 79 , 4.77589176 , -0.503334643 ), ( 79 , 4.783886004 , -0.478454496 ), ( 79 , 4.632245047 , -0.560465365 ), ( 79 , 4.665596457 , -0.545503223 ), ( 79 , 4.707122065 , -0.522228907 ), ( 79 , 4.640401163 , -0.526689369 ), ( 79 , 4.57607451 , -0.539858784 ), ( 79 , 4.553325547 , -0.55328149 ), ( 79 , 4.530799526 , -0.52141155 ), ( 79 , 4.621191278 , -0.470158292 ), ( 79 , 4.717685255 , -0.513905561 ), ( 79 , 4.735718934 , -0.485800641 ), ( 79 , 4.696040737 , -0.448075749 ), ( 79 , 4.77075148 , -0.438978684 ), ( 79 , 4.756519819 , -0.414915919 ), ( 79 , 4.665892301 , -0.407873545 ), ( 79 , 4.750562058 , -0.386777 ), ( 79 , 4.744401656 , -0.370038416 ), ( 79 , 4.88355904 , -0.49184511 ), ( 79 , 4.986023239 , -0.425243156 ), ( 79 , 4.849139983 , -0.406935184 ), ( 79 , 4.896688134 , -0.406542218 ), ( 79 , 4.942074835 , -0.389262593 ), ( 79 , 4.884757355 , -0.383371874 ), ( 79 , 5.03373595 , -0.393852624 ), ( 79 , 5.066854771 , -0.325591214 ), ( 79 , 4.955484338 , -0.349353764 ), ( 79 , 4.943358189 , -0.318683408 ), ( 79 , 4.97606108 , -0.305160704 ), ( 79 , 4.997087439 , -0.294381909 ), ( 79 , 4.828868692 , -0.409029831 ), ( 79 , 4.795309195 , -0.323042676 ), ( 79 , 4.80467792 , -0.30336586 ), ( 79 , 4.833682187 , -0.286710286 ), ( 79 , 4.843855245 , -0.28259375 ), ( 79 , 4.807571436 , -0.284917887 ), ( 79 , 4.880869276 , -0.284665346 ), ( 79 , 4.951968669 , -0.288423616 ), ( 79 , 4.926149588 , -0.242691801 ), ( 79 , 4.861314245 , -0.28798123 ), ( 79 , 4.866602603 , -0.281718774 ), ( 79 , 4.870365464 , -0.241447034 ), ( 79 , 4.884490007 , -0.213765261 ), ( 79 , 4.494882427 , -0.484742652 ), ( 79 , 4.468193465 , -0.474998902 ), ( 79 , 4.517002709 , -0.463042505 ), ( 79 , 4.503035502 , -0.448232454 ), ( 79 , 4.515549704 , -0.36598914 ), ( 79 , 4.635311885 , -0.407515865 ), ( 79 , 4.596541542 , -0.320091896 ), ( 79 , 4.459474705 , -0.359458507 ), ( 79 , 4.467862118 , -0.357327031 ), ( 79 , 4.483098463 , -0.336624689 ), ( 79 , 4.475922464 , -0.31618707 ), ( 79 , 4.471555203 , -0.31341972 ), ( 79 , 4.379154295 , -0.361228032 ), ( 79 , 4.424184507 , -0.31375148 ), ( 79 , 4.51876 , -0.30067823 ), ( 79 , 4.51290783 , -0.2724304 ), ( 79 , 4.533344576 , -0.265654342 ), ( 79 , 4.758776088 , -0.293643456 ), ( 79 , 4.713318277 , -0.280417749 ), ( 79 , 4.698429424 , -0.273736253 ), ( 79 , 4.782357565 , -0.260477106 ), ( 79 , 4.722732922 , -0.214996498 ), ( 79 , 4.817087591 , -0.219649526 ), ( 79 , 4.782534641 , -0.195132598 ), ( 79 , 4.74856746 , -0.184146574 ), ( 79 , 4.783317447 , -0.171211395 ), ( 79 , 4.766493249 , -0.127362585 ), ( 79 , 4.618123023 , -0.246157587 ), ( 79 , 4.632801327 , -0.23239306 ), ( 79 , 4.532067706 , -0.178361795 ), ( 79 , 4.613771632 , -0.140271745 ), ( 79 , 4.725794383 , -0.145562282 ), ( 79 , 4.681739596 , -0.138252641 ), ( 79 , 4.709683802 , -0.106652865 ), ( 79 , 4.624198145 , -0.08670931 ), ( 79 , 4.682081946 , -0.045023112 ), ( 79 , 5.09099383 , -0.292929505 ), ( 79 , 5.115709089 , -0.274916983 ), ( 79 , 5.05009866 , -0.280537486 ), ( 79 , 5.082782904 , -0.262257767 ), ( 79 , 5.084972319 , -0.253525424 ), ( 79 , 5.083860645 , -0.234557746 ), ( 79 , 5.124412701 , -0.225624531 ), ( 79 , 5.240330532 , -0.213945954 ), ( 79 , 5.266230622 , -0.155584808 ), ( 79 , 5.26679782 , -0.142797862 ), ( 79 , 5.223744723 , -0.129236325 ), ( 79 , 4.983890881 , -0.231323052 ), ( 79 , 5.029743298 , -0.201590837 ), ( 79 , 5.034812099 , -0.195535538 ), ( 79 , 5.067429157 , -0.177607062 ), ( 79 , 4.939761919 , -0.158522589 ), ( 79 , 5.013606098 , -0.12247846 ), ( 79 , 5.328258672 , -0.110937633 ), ( 79 , 5.292310295 , -0.130170454 ), ( 79 , 5.360857979 , -0.077276806 ), ( 79 , 5.334899452 , -0.088682149 ), ( 79 , 5.336951518 , -0.066530143 ), ( 79 , 5.304569313 , -0.044755732 ), ( 79 , 5.322722422 , -0.03922567 ), ( 79 , 5.311968862 , -0.036011215 ), ( 79 , 5.403328026 , -0.078747538 ), ( 79 , 5.386813269 , -0.011776978 ), ( 79 , 5.441399931 , -0.029560628 ), ( 79 , 5.484190338 , 0.008779976 ), ( 79 , 5.354311374 , -0.038162093 ), ( 79 , 5.341379375 , -0.009904768 ), ( 79 , 5.386023568 , -0.008356336 ), ( 79 , 5.256829004 , 0.020173154 ), ( 79 , 5.136896243 , -0.008591255 ), ( 79 , 5.152439471 , 0.02919921 ), ( 79 , 5.301916615 , 0.040119826 ), ( 79 , 5.346048662 , 0.069628369 ), ( 79 , 5.37770336 , 0.072405733 ), ( 79 , 5.243764994 , 0.082291517 ), ( 79 , 5.249260297 , 0.100145174 ), ( 79 , 5.297768742 , 0.114992248 ), ( 79 , 4.901764131 , -0.099385664 ), ( 79 , 4.942601704 , -0.102086261 ), ( 79 , 4.890370676 , -0.07847885 ), ( 79 , 4.905305219 , -0.027128746 ), ( 79 , 4.988584249 , -0.048667174 ), ( 79 , 5.049165398 , 0.008677707 ), ( 79 , 5.048850985 , 0.012947911 ), ( 79 , 4.963708929 , -0.009191986 ), ( 79 , 5.002972715 , 0.026571398 ), ( 79 , 4.980509703 , 0.022486518 ), ( 79 , 4.986572896 , 0.030925621 ), ( 79 , 4.805686778 , -0.054220954 ), ( 79 , 4.791023335 , -0.035486071 ), ( 79 , 4.818810056 , -0.018582188 ), ( 79 , 4.808990453 , 0.002770693 ), ( 79 , 4.874717686 , 0.05194308 ), ( 79 , 4.862569168 , 0.066854014 ), ( 79 , 4.836025503 , 0.069216512 ), ( 79 , 4.872472701 , 0.10545987 ), ( 79 , 4.909297566 , 0.11617428 ), ( 79 , 5.082799569 , 0.032022898 ), ( 79 , 5.105714559 , 0.061521012 ), ( 79 , 5.08058041 , 0.097120523 ), ( 79 , 5.118929719 , 0.100234961 ), ( 79 , 5.058514732 , 0.124682743 ), ( 79 , 5.120236197 , 0.143624649 ), ( 79 , 5.206250344 , 0.140715991 ), ( 79 , 5.228314818 , 0.187237957 ), ( 79 , 5.252640167 , 0.182577763 ), ( 79 , 5.256104267 , 0.202962894 ), ( 79 , 4.989145632 , 0.104622793 ), ( 79 , 5.035262623 , 0.131200441 ), ( 79 , 5.002007989 , 0.124907137 ), ( 79 , 5.023178905 , 0.148335823 ), ( 79 , 5.060067904 , 0.136059013 ), ( 79 , 4.917145434 , 0.164395825 ), ( 79 , 4.92937703 , 0.183614168 ), ( 79 , 4.973752354 , 0.21487701 ), ( 79 , 5.103332834 , 0.216495273 ), ( 79 , 5.112587185 , 0.237701739 ), ( 79 , 5.189154107 , 0.263976229 ), ( 79 , 5.060344798 , 0.225514665 ), ( 79 , 5.043855537 , 0.228779774 ), ( 79 , 5.064425011 , 0.251659859 ), ( 79 , 5.072369831 , 0.262823293 ), ( 79 , 5.055593314 , 0.27367699 ), ( 79 , 5.102584212 , 0.265030619 ), ( 79 , 5.129936592 , 0.298603696 ), ( 79 , 5.079228127 , 0.314479872 ), ( 79 , 4.333669654 , -0.223385364 ), ( 79 , 4.429685875 , -0.197327243 ), ( 79 , 4.220803019 , -0.229245156 ), ( 79 , 4.2486943 , -0.160623837 ), ( 79 , 4.272137339 , -0.127747966 ), ( 79 , 4.176276926 , -0.190032921 ), ( 79 , 4.203099257 , -0.14801573 ), ( 79 , 4.324452366 , -0.131616154 ), ( 79 , 4.339593716 , -0.142234472 ), ( 79 , 4.377321959 , -0.072436724 ), ( 79 , 4.552908714 , -0.054492301 ), ( 79 , 4.472541558 , -0.088565317 ), ( 79 , 4.501737267 , -0.08099302 ), ( 79 , 4.504591045 , -0.013513955 ), ( 79 , 4.627386343 , -0.049998402 ), ( 79 , 4.655214455 , -0.030009902 ), ( 79 , 4.57950732 , -0.002952431 ), ( 79 , 4.601743671 , 0.071544174 ), ( 79 , 4.374497063 , -0.036913063 ), ( 79 , 4.385127826 , -0.010729043 ), ( 79 , 4.372626529 , 0.039661582 ), ( 79 , 4.560743847 , 0.112211953 ), ( 79 , 4.53786426 , 0.139097531 ), ( 79 , 4.133181778 , -0.14753532 ), ( 79 , 4.212142241 , -0.058447375 ), ( 79 , 4.252670349 , -0.006960509 ), ( 79 , 3.970495156 , -0.015355906 ), ( 79 , 4.164601271 , 0.037392639 ), ( 79 , 4.135718328 , 0.061837811 ), ( 79 , 4.360660851 , 0.059206435 ), ( 79 , 4.37923551 , 0.115514551 ), ( 79 , 4.283477679 , 0.101356988 ), ( 79 , 4.332831907 , 0.115383747 ), ( 79 , 4.438509006 , 0.183736427 ), ( 79 , 4.349182522 , 0.187103827 ), ( 79 , 4.226660072 , 0.094348602 ), ( 79 , 4.207062484 , 0.142027929 ), ( 79 , 4.265646005 , 0.134982921 ), ( 79 , 4.171773731 , 0.138518397 ), ( 79 , 4.209832583 , 0.168337683 ), ( 79 , 4.142255339 , 0.175955057 ), ( 79 , 4.294115687 , 0.199396832 ), ( 79 , 4.3562054 , 0.258199475 ), ( 79 , 4.346438305 , 0.304940189 ), ( 79 , 4.739516165 , 0.027621395 ), ( 79 , 4.719399673 , 0.061185599 ), ( 79 , 4.742118056 , 0.111879757 ), ( 79 , 4.74456659 , 0.114191102 ), ( 79 , 4.697877052 , 0.11938682 ), ( 79 , 4.840931535 , 0.128456837 ), ( 79 , 4.847255689 , 0.140993965 ), ( 79 , 4.839947896 , 0.190102453 ), ( 79 , 4.817765094 , 0.191250265 ), ( 79 , 4.791113517 , 0.212906536 ), ( 79 , 4.804203005 , 0.241148327 ), ( 79 , 4.578496015 , 0.134195296 ), ( 79 , 4.680317815 , 0.150936864 ), ( 79 , 4.60157567 , 0.16712163 ), ( 79 , 4.635743882 , 0.23947851 ), ( 79 , 4.669310567 , 0.270446482 ), ( 79 , 4.719677607 , 0.291786649 ), ( 79 , 4.916741008 , 0.219117577 ), ( 79 , 4.821685841 , 0.246875501 ), ( 79 , 4.917879504 , 0.288432282 ), ( 79 , 4.880860381 , 0.288690249 ), ( 79 , 5.05199494 , 0.328970012 ), ( 79 , 5.079831899 , 0.327093488 ), ( 79 , 5.075457382 , 0.33815488 ), ( 79 , 5.043581325 , 0.354341978 ), ( 79 , 4.945675025 , 0.314523205 ), ( 79 , 5.020891822 , 0.416290897 ), ( 79 , 5.003999789 , 0.415761043 ), ( 79 , 4.81618336 , 0.260181073 ), ( 79 , 4.807601726 , 0.281683858 ), ( 79 , 4.84156939 , 0.314388841 ), ( 79 , 4.863052424 , 0.369622034 ), ( 79 , 4.767099821 , 0.314640145 ), ( 79 , 4.755035511 , 0.372594891 ), ( 79 , 4.827343923 , 0.357416373 ), ( 79 , 4.808492492 , 0.371207605 ), ( 79 , 4.790738298 , 0.38390976 ), ( 79 , 4.883951979 , 0.365349904 ), ( 79 , 4.922778385 , 0.413803541 ), ( 79 , 4.958026479 , 0.402655659 ), ( 79 , 4.955377205 , 0.448462284 ), ( 79 , 4.854163275 , 0.403686821 ), ( 79 , 4.880102093 , 0.441005118 ), ( 79 , 4.852214522 , 0.437504848 ), ( 79 , 4.908019787 , 0.457256284 ), ( 79 , 4.916431774 , 0.479616775 ), ( 79 , 4.920737603 , 0.499927439 ), ( 79 , 4.526518661 , 0.232305487 ), ( 79 , 4.548390931 , 0.264191293 ), ( 79 , 4.439759375 , 0.244644533 ), ( 79 , 4.442213417 , 0.264473624 ), ( 79 , 4.51853456 , 0.31122518 ), ( 79 , 4.591548763 , 0.320898009 ), ( 79 , 4.593769423 , 0.338191577 ), ( 79 , 4.612352817 , 0.353586574 ), ( 79 , 4.616870388 , 0.365145471 ), ( 79 , 4.407420266 , 0.287903663 ), ( 79 , 4.413596943 , 0.412349519 ), ( 79 , 4.530667273 , 0.408962777 ), ( 79 , 4.570900342 , 0.467693348 ), ( 79 , 4.479278216 , 0.418386935 ), ( 79 , 4.709275624 , 0.357042613 ), ( 79 , 4.725397149 , 0.362633012 ), ( 79 , 4.718607711 , 0.397491158 ), ( 79 , 4.742259344 , 0.424312737 ), ( 79 , 4.747889124 , 0.439386045 ), ( 79 , 4.657486769 , 0.423187748 ), ( 79 , 4.665801689 , 0.421958945 ), ( 79 , 4.822972178 , 0.455251433 ), ( 79 , 4.824003476 , 0.483365237 ), ( 79 , 4.819754673 , 0.537585037 ), ( 79 , 4.802155766 , 0.542217066 ), ( 79 , 4.830981532 , 0.558385893 ), ( 79 , 4.841514938 , 0.571158094 ), ( 79 , 4.578145788 , 0.486634797 ), ( 79 , 4.625403508 , 0.510270994 ), ( 79 , 4.628753805 , 0.54591717 ), ( 79 , 4.77029515 , 0.614304589 ), ( 79 , 4.66098962 , 0.667275366 ), ( 79 , 4.71888546 , 0.703782317 ), ( 79 , 0.618193435 , -1.496062996 ), ( 79 , 0.168998873 , -1.490730585 ), ( 79 , 0.684419067 , -1.393017431 ), ( 79 , 1.239606273 , -1.331770575 ), ( 79 , 0.954143784 , -1.322296237 ), ( 79 , 1.035024569 , -1.335360611 ), ( 79 , 0.291763499 , -1.425044826 ), ( 79 , 0.285896277 , -1.354108944 ), ( 79 , 0.083321889 , -1.361162457 ), ( 79 , 0.400746032 , -1.362570981 ), ( 79 , 0.943380503 , -1.291079117 ), ( 79 , 0.62920188 , -1.299152406 ), ( 79 , 0.704520105 , -1.24726039 ), ( 79 , 1.549299519 , -1.270864176 ), ( 79 , 1.462823547 , -1.241587284 ), ( 79 , 1.221557087 , -1.248012542 ), ( 79 , 1.178981521 , -1.184635713 ), ( 79 , 1.359044616 , -1.213811749 ), ( 79 , 1.042270919 , -1.149848006 ), ( 79 , 1.029017917 , -1.137712222 ), ( 79 , 1.050830993 , -1.124373503 ), ( 79 , 0.966468603 , -1.160244655 ), ( 79 , 0.830864156 , -1.178205879 ), ( 79 , 1.251722831 , -1.057715222 ), ( 79 , 0.23193241 , -1.302912862 ), ( 79 , 0.40798398 , -1.236879639 ), ( 79 , 0.638750027 , -1.197910965 ), ( 79 , 0.634835396 , -1.182787045 ), ( 79 , 0.427973287 , -1.161628435 ), ( 79 , 0.630355143 , -1.112257747 ), ( 79 , 0.596635834 , -1.106399888 ), ( 79 , 0.614052023 , -1.091630705 ), ( 79 , 0.608379222 , -1.08100522 ), ( 79 , 0.281746197 , -1.129247232 ), ( 79 , 0.188832145 , -1.131314079 ), ( 79 , 0.417751492 , -1.064066269 ), ( 79 , 0.366282196 , -1.05817483 ), ( 79 , 0.88323127 , -1.042033321 ), ( 79 , 0.882242396 , -1.02447984 ), ( 79 , 0.696671164 , -1.039648836 ), ( 79 , 0.786126595 , -1.044041744 ), ( 79 , 0.96003458 , -0.969493795 ), ( 79 , 0.944621437 , -0.921142068 ), ( 79 , 0.828076735 , -0.968440861 ), ( 79 , 0.940883089 , -0.917285203 ), ( 79 , 0.90410855 , -0.852820444 ), ( 79 , 0.612015431 , -0.979086589 ), ( 79 , 0.559521715 , -0.969115384 ), ( 79 , 0.614766063 , -0.92439318 ), ( 79 , 0.833711866 , -0.808969082 ), ( 79 , 0.765668869 , -0.854041582 ), ( 79 , 0.695589398 , -0.857799613 ), ( 79 , 0.736851442 , -0.808904637 ), ( 79 , 0.793605841 , -0.830060941 ), ( 79 , 0.758591061 , -0.778508516 ), ( 79 , 1.548758719 , -1.149880916 ), ( 79 , 1.528512165 , -1.083508043 ), ( 79 , 1.45172745 , -1.049381687 ), ( 79 , 1.332525797 , -0.998243411 ), ( 79 , 1.325581138 , -0.982662631 ), ( 79 , 1.467651495 , -1.002825123 ), ( 79 , 1.537183054 , -0.985463936 ), ( 79 , 1.473949931 , -0.95231364 ), ( 79 , 1.330152843 , -0.910733869 ), ( 79 , 1.225284013 , -0.97791753 ), ( 79 , 1.302628313 , -0.945486182 ), ( 79 , 1.116944537 , -0.930383585 ), ( 79 , 1.126860995 , -0.923310538 ), ( 79 , 1.155591824 , -0.883541295 ), ( 79 , 1.229486147 , -0.790762863 ), ( 79 , 1.475457229 , -0.832769719 ), ( 79 , 1.498874344 , -0.829838955 ), ( 79 , 1.434938073 , -0.88515073 ), ( 79 , 1.442103773 , -0.874406606 ), ( 79 , 1.414893187 , -0.761117454 ), ( 79 , 1.514101927 , -0.78191397 ), ( 79 , 1.483244946 , -0.724562933 ), ( 79 , 1.272835322 , -0.673878994 ), ( 79 , 1.250232599 , -0.653729117 ), ( 79 , 1.355674301 , -0.63311347 ), ( 79 , 1.309087578 , -0.596323087 ), ( 79 , 1.353286961 , -0.547146747 ), ( 79 , 1.046776142 , -0.945286283 ), ( 79 , 1.028862141 , -0.91189695 ), ( 79 , 1.028289115 , -0.90406042 ), ( 79 , 1.060529582 , -0.901406817 ), ( 79 , 1.070548098 , -0.896599608 ), ( 79 , 1.055688421 , -0.881528494 ), ( 79 , 1.043447736 , -0.853725064 ), ( 79 , 0.96964318 , -0.857851192 ), ( 79 , 1.015180295 , -0.78447179 ), ( 79 , 1.139921797 , -0.786159238 ), ( 79 , 1.142224704 , -0.746779527 ), ( 79 , 0.937318464 , -0.779172824 ), ( 79 , 0.958851769 , -0.704245549 ), ( 79 , 0.906105765 , -0.695224036 ), ( 79 , 0.852576345 , -0.680671065 ), ( 79 , 0.890077332 , -0.648750216 ), ( 79 , 0.919929077 , -0.652272111 ), ( 79 , 1.179218615 , -0.727100524 ), ( 79 , 1.191303307 , -0.668167475 ), ( 79 , 1.253649747 , -0.631970995 ), ( 79 , 1.261697263 , -0.612303613 ), ( 79 , 1.21940259 , -0.593372081 ), ( 79 , 1.184693474 , -0.567557192 ), ( 79 , 1.299153115 , -0.577165064 ), ( 79 , 1.224814073 , -0.492236886 ), ( 79 , 1.27710636 , -0.449866488 ), ( 79 , 1.080092175 , -0.617696183 ), ( 79 , 1.009542568 , -0.538816894 ), ( 79 , 1.007889784 , -0.513143024 ), ( 79 , 1.103976965 , -0.498119021 ), ( 79 , 1.166947072 , -0.509563675 ), ( 79 , 1.10659767 , -0.445569174 ), ( 79 , 1.185982312 , -0.420803181 ), ( 79 , 1.200239091 , -0.362040712 ), ( 79 , 0.284654001 , -1.008711216 ), ( 79 , 0.148623012 , -1.015808546 ), ( 79 , 0.32728547 , -0.970971966 ), ( 79 , 0.399652786 , -0.931468378 ), ( 79 , 0.456644161 , -0.890475256 ), ( 79 , 0.390433234 , -0.89891037 ), ( 79 , 0.397203803 , -0.8938864 ), ( 79 , 0.073998613 , -1.014943634 ), ( 79 , 0.203504063 , -0.944240601 ), ( 79 , 0.122344988 , -0.924191184 ), ( 79 , 0.137859916 , -0.927082288 ), ( 79 , 0.273719558 , -0.82533995 ), ( 79 , 0.289691614 , -0.830694105 ), ( 79 , 0.6282902 , -0.836331824 ), ( 79 , 0.61254216 , -0.818978973 ), ( 79 , 0.579384416 , -0.776478725 ), ( 79 , 0.595545739 , -0.755057364 ), ( 79 , 0.687031789 , -0.814129682 ), ( 79 , 0.70754875 , -0.742326312 ), ( 79 , 0.701897988 , -0.72081999 ), ( 79 , 0.482049398 , -0.741898011 ), ( 79 , 0.509808063 , -0.753602327 ), ( 79 , 0.465925473 , -0.735346002 ), ( 79 , 0.608394536 , -0.680284663 ), ( 79 , 0.684035835 , -0.625334529 ), ( 79 , 0.634723363 , -0.59431896 ), ( 79 , 0.571184249 , -0.559587733 ), ( 79 , 0.101061683 , -0.882236124 ), ( 79 , 0.038451269 , -0.821370493 ), ( 79 , 0.169663996 , -0.755653534 ), ( 79 , 0.27165882 , -0.788403496 ), ( 79 , 0.282145786 , -0.689263406 ), ( 79 , 0.144521059 , -0.693941115 ), ( 79 , 0.008477282 , -0.726299312 ), ( 79 , 0.049297697 , -0.704636787 ), ( 79 , 0.067581352 , -0.706077666 ), ( 79 , 0.039264329 , -0.693546546 ), ( 79 , 0.25928852 , -0.60451443 ), ( 79 , 0.195315185 , -0.547850088 ), ( 79 , 0.378430542 , -0.706566454 ), ( 79 , 0.418796991 , -0.63623768 ), ( 79 , 0.318159483 , -0.623885447 ), ( 79 , 0.341436086 , -0.578356353 ), ( 79 , 0.5560089 , -0.504343655 ), ( 79 , 0.267771792 , -0.582238446 ), ( 79 , 0.384519209 , -0.489579522 ), ( 79 , 0.411490527 , -0.477574345 ), ( 79 , 0.779110068 , -0.663090467 ), ( 79 , 0.851818736 , -0.494713538 ), ( 79 , 0.919234168 , -0.487318076 ), ( 79 , 0.692769377 , -0.534058016 ), ( 79 , 0.739274265 , -0.53778268 ), ( 79 , 0.706286505 , -0.53065866 ), ( 79 , 0.723973806 , -0.531999273 ), ( 79 , 0.645722467 , -0.531297779 ), ( 79 , 0.67710663 , -0.500868092 ), ( 79 , 0.671219463 , -0.49276932 ), ( 79 , 0.664206126 , -0.485019198 ), ( 79 , 0.68414015 , -0.436755694 ), ( 79 , 0.791725817 , -0.496282879 ), ( 79 , 0.732960894 , -0.455415627 ), ( 79 , 0.761165717 , -0.365213165 ), ( 79 , 0.989372369 , -0.433816666 ), ( 79 , 1.040962946 , -0.415305671 ), ( 79 , 1.061435073 , -0.373801459 ), ( 79 , 1.074559669 , -0.340576389 ), ( 79 , 1.077667226 , -0.279067688 ), ( 79 , 0.832061341 , -0.35101195 ), ( 79 , 0.820982552 , -0.336901286 ), ( 79 , 0.854184095 , -0.293718627 ), ( 79 , 0.86754324 , -0.271422744 ), ( 79 , 1.010290456 , -0.299619515 ), ( 79 , 0.968962675 , -0.299254927 ), ( 79 , 0.984023961 , -0.268314505 ), ( 79 , 1.014819115 , -0.274740948 ), ( 79 , 0.923329693 , -0.222264012 ), ( 79 , 1.006117012 , -0.209360137 ), ( 79 , 0.646912956 , -0.461288152 ), ( 79 , 0.636531257 , -0.416127147 ), ( 79 , 0.766681062 , -0.344815438 ), ( 79 , 0.609444616 , -0.334312001 ), ( 79 , 0.536848226 , -0.382435138 ), ( 79 , 0.404061205 , -0.331208337 ), ( 79 , 0.511685511 , -0.308520239 ), ( 79 , 0.565563146 , -0.281460899 ), ( 79 , 0.659136247 , -0.264116538 ), ( 79 , 0.553947313 , -0.274118824 ), ( 79 , 0.566260283 , -0.25978444 ), ( 79 , 0.57234056 , -0.256606263 ), ( 79 , 0.865377421 , -0.169848084 ), ( 79 , 0.902873296 , -0.139320186 ), ( 79 , 0.688745259 , -0.229138247 ), ( 79 , 0.682161396 , -0.225093647 ), ( 79 , 0.716347246 , -0.21803983 ), ( 79 , 0.73886111 , -0.184147538 ), ( 79 , 0.632750729 , -0.177968613 ), ( 79 , 0.831836963 , -0.094140023 ), ( 79 , 0.817355069 , -0.09398969 ), ( 79 , 0.726779173 , -0.116971625 ), ( 79 , 0.758014323 , -0.074136463 ), ( 79 , 0.783571039 , -0.071845949 ), ( 79 , 0.785911476 , -0.064103737 ), ( 79 , 0.763433791 , -0.057722273 ), ( 79 , 2.602668176 , -1.566997655 ), ( 79 , 2.706136389 , -1.510698144 ), ( 79 , 2.766736076 , -1.488441934 ), ( 79 , 2.403339915 , -1.38506746 ), ( 79 , 2.785619018 , -1.387708453 ), ( 79 , 2.998821688 , -1.37046286 ), ( 79 , 2.59864108 , -1.348925158 ), ( 79 , 2.5471204 , -1.339840194 ), ( 79 , 2.734255814 , -1.311600895 ), ( 79 , 2.574953847 , -1.295102601 ), ( 79 , 1.87408227 , -1.386347547 ), ( 79 , 1.866243855 , -1.327311633 ), ( 79 , 2.176169403 , -1.309253594 ), ( 79 , 1.946888276 , -1.319296758 ), ( 79 , 2.356561667 , -1.321660332 ), ( 79 , 2.259516161 , -1.310172349 ), ( 79 , 2.286449139 , -1.296820122 ), ( 79 , 2.486646888 , -1.285418079 ), ( 79 , 2.556776152 , -1.252901268 ), ( 79 , 2.439353555 , -1.279702656 ), ( 79 , 2.463724547 , -1.228884232 ), ( 79 , 2.158555077 , -1.288172929 ), ( 79 , 2.270243604 , -1.254485254 ), ( 79 , 2.304054999 , -1.24469392 ), ( 79 , 3.079369235 , -1.341464545 ), ( 79 , 2.961379292 , -1.294872314 ), ( 79 , 2.897131246 , -1.295869134 ), ( 79 , 3.039688747 , -1.280262978 ), ( 79 , 2.905378542 , -1.268370246 ), ( 79 , 2.817723418 , -1.275244841 ), ( 79 , 2.897054916 , -1.239196946 ), ( 79 , 2.754349473 , -1.203734167 ), ( 79 , 2.749388605 , -1.196458292 ), ( 79 , 3.127438737 , -1.224456387 ), ( 79 , 3.102053885 , -1.188234603 ), ( 79 , 3.024646559 , -1.170324817 ), ( 79 , 2.98298796 , -1.140444287 ), ( 79 , 2.89307138 , -1.17158735 ), ( 79 , 2.937745025 , -1.166748371 ), ( 79 , 2.836182613 , -1.126459125 ), ( 79 , 2.819421204 , -1.127404245 ), ( 79 , 2.823730158 , -1.121629328 ), ( 79 , 2.958189682 , -1.11775427 ), ( 79 , 2.825895746 , -1.057980778 ), ( 79 , 2.681764842 , -1.171854554 ), ( 79 , 2.610368933 , -1.169601165 ), ( 79 , 2.517252251 , -1.159071756 ), ( 79 , 2.411477612 , -1.147165661 ), ( 79 , 2.552227924 , -1.128414162 ), ( 79 , 2.604656269 , -1.106303397 ), ( 79 , 2.541940342 , -1.095174418 ), ( 79 , 2.706975545 , -1.105433646 ), ( 79 , 2.753123827 , -1.075357119 ), ( 79 , 2.759633854 , -1.044856594 ), ( 79 , 2.591684492 , -1.084192418 ), ( 79 , 2.595996882 , -1.058379294 ), ( 79 , 2.621943256 , -1.051145157 ), ( 79 , 2.553468909 , -1.038049872 ), ( 79 , 2.60961343 , -1.027320277 ), ( 79 , 2.626435536 , -0.959988484 ), ( 79 , 1.637872613 , -1.329951345 ), ( 79 , 1.754632468 , -1.254701491 ), ( 79 , 1.715552197 , -1.250487366 ), ( 79 , 1.770771226 , -1.230854378 ), ( 79 , 1.948835476 , -1.214333582 ), ( 79 , 2.146936728 , -1.217417675 ), ( 79 , 2.101130443 , -1.222134576 ), ( 79 , 2.103735531 , -1.217795493 ), ( 79 , 2.28927274 , -1.14661371 ), ( 79 , 2.127274004 , -1.151508655 ), ( 79 , 2.024637795 , -1.172892826 ), ( 79 , 2.248327449 , -1.107262062 ), ( 79 , 2.185565215 , -1.088970121 ), ( 79 , 1.703711005 , -1.203362165 ), ( 79 , 1.709763965 , -1.188920464 ), ( 79 , 1.703346722 , -1.152314717 ), ( 79 , 1.63145416 , -1.154948644 ), ( 79 , 1.711827674 , -1.140939685 ), ( 79 , 2.044841392 , -1.111579036 ), ( 79 , 2.11407241 , -1.096784927 ), ( 79 , 2.145074279 , -1.034085172 ), ( 79 , 2.012774032 , -1.047229643 ), ( 79 , 2.061107014 , -1.038349356 ), ( 79 , 2.378192796 , -1.122063278 ), ( 79 , 2.323663183 , -1.097127274 ), ( 79 , 2.325383215 , -1.044364142 ), ( 79 , 2.318000439 , -1.038184145 ), ( 79 , 2.27977852 , -1.038946502 ), ( 79 , 2.370961322 , -1.008212556 ), ( 79 , 2.502412461 , -1.019031492 ), ( 79 , 2.514095774 , -1.01271815 ), ( 79 , 2.463783411 , -1.024316062 ), ( 79 , 2.542391063 , -0.974444959 ), ( 79 , 2.585975299 , -0.967852631 ), ( 79 , 2.603715072 , -0.961382848 ), ( 79 , 2.543536696 , -0.955845869 ), ( 79 , 2.538832877 , -0.946261844 ), ( 79 , 2.512349353 , -0.945423151 ), ( 79 , 2.522966261 , -0.919667448 ), ( 79 , 2.429164303 , -0.990475011 ), ( 79 , 2.4239235 , -0.98193678 ), ( 79 , 2.453361196 , -0.976690139 ), ( 79 , 2.428921153 , -0.953924207 ), ( 79 , 2.414288639 , -0.942191756 ), ( 79 , 2.493067215 , -0.938927097 ), ( 79 , 2.472842217 , -0.934015848 ), ( 79 , 2.4884518 , -0.912905512 ), ( 79 , 2.212106627 , -0.965737873 ), ( 79 , 2.278542051 , -0.931480754 ), ( 79 , 2.284399831 , -0.907634215 ), ( 79 , 2.219590174 , -0.951186119 ), ( 79 , 2.112913799 , -0.950787093 ), ( 79 , 2.259942587 , -0.874066478 ), ( 79 , 2.392244315 , -0.897731738 ), ( 79 , 2.390839792 , -0.881101054 ), ( 79 , 2.343751777 , -0.891347561 ), ( 79 , 2.408036951 , -0.789495494 ), ( 79 , 2.30650945 , -0.859202094 ), ( 79 , 2.30709107 , -0.833627547 ), ( 79 , 2.319176282 , -0.81229574 ), ( 79 , 2.331803911 , -0.793326499 ), ( 79 , 3.121348742 , -1.111836957 ), ( 79 , 3.109004135 , -1.102527482 ), ( 79 , 2.992148693 , -1.113675968 ), ( 79 , 3.013615183 , -1.095831864 ), ( 79 , 3.018721392 , -1.078143346 ), ( 79 , 3.140782834 , -1.096618869 ), ( 79 , 3.083447168 , -1.087254757 ), ( 79 , 3.079390712 , -1.072428467 ), ( 79 , 3.087254901 , -1.058064935 ), ( 79 , 3.059437554 , -1.067112666 ), ( 79 , 3.037735058 , -1.047384246 ), ( 79 , 3.018592951 , -1.05929968 ), ( 79 , 2.923860703 , -1.051545532 ), ( 79 , 2.884878232 , -1.068524344 ), ( 79 , 2.838071035 , -1.046889751 ), ( 79 , 2.842027058 , -1.04272728 ), ( 79 , 2.906432311 , -1.033960845 ), ( 79 , 2.899859625 , -1.025481582 ), ( 79 , 2.898258126 , -1.020392607 ), ( 79 , 2.9190085 , -1.002165138 ), ( 79 , 3.026641174 , -1.006096481 ), ( 79 , 3.119925105 , -0.979102378 ), ( 79 , 3.024180793 , -0.948143783 ), ( 79 , 2.949083783 , -0.97759934 ), ( 79 , 2.966305814 , -0.93333583 ), ( 79 , 2.908101783 , -0.929766711 ), ( 79 , 3.003006718 , -0.908468353 ), ( 79 , 2.814621954 , -1.014886929 ), ( 79 , 2.815128228 , -1.00763727 ), ( 79 , 2.797242024 , -0.99932172 ), ( 79 , 2.752237851 , -1.005301516 ), ( 79 , 2.739662757 , -0.98099216 ), ( 79 , 2.763181971 , -0.966577623 ), ( 79 , 2.810649465 , -0.973663829 ), ( 79 , 2.831077366 , -0.966204201 ), ( 79 , 2.779229962 , -0.946633437 ), ( 79 , 2.78759857 , -0.935544683 ), ( 79 , 2.786971326 , -0.920909066 ), ( 79 , 2.705906936 , -0.988123079 ), ( 79 , 2.69862517 , -0.9871592 ), ( 79 , 2.684733143 , -0.971964411 ), ( 79 , 2.725177708 , -0.942741308 ), ( 79 , 2.696007111 , -0.953354993 ), ( 79 , 2.650922491 , -0.92956444 ), ( 79 , 2.728296619 , -0.91743755 ), ( 79 , 2.697404019 , -0.887039797 ), ( 79 , 2.686357204 , -0.894597278 ), ( 79 , 2.870033821 , -0.919472709 ), ( 79 , 2.86319674 , -0.839346996 ), ( 79 , 2.779329825 , -0.887971143 ), ( 79 , 2.772510726 , -0.875797109 ), ( 79 , 3.121838927 , -0.929211302 ), ( 79 , 3.036791983 , -0.885620796 ), ( 79 , 3.057125795 , -0.864099281 ), ( 79 , 3.081519063 , -0.841419593 ), ( 79 , 3.037303827 , -0.841760156 ), ( 79 , 3.043533937 , -0.825623149 ), ( 79 , 3.06296787 , -0.808967239 ), ( 79 , 2.939065884 , -0.834686293 ), ( 79 , 3.01736363 , -0.804496052 ), ( 79 , 3.004673233 , -0.787861329 ), ( 79 , 3.097147028 , -0.803117195 ), ( 79 , 3.118922144 , -0.739932911 ), ( 79 , 3.059091946 , -0.71357493 ), ( 79 , 3.104634991 , -0.710130259 ), ( 79 , 3.015401756 , -0.760142144 ), ( 79 , 3.00452884 , -0.744865787 ), ( 79 , 2.880634878 , -0.757290685 ), ( 79 , 2.902877546 , -0.759956841 ), ( 79 , 2.905404522 , -0.731415013 ), ( 79 , 2.824980532 , -0.654911894 ), ( 79 , 2.841387518 , -0.645027114 ), ( 79 , 2.996315469 , -0.665984343 ), ( 79 , 2.643148086 , -0.914658243 ), ( 79 , 2.657031248 , -0.85268619 ), ( 79 , 2.622352633 , -0.818973413 ), ( 79 , 2.552031485 , -0.828685647 ), ( 79 , 2.496212099 , -0.862226173 ), ( 79 , 2.49593362 , -0.841158085 ), ( 79 , 2.579313926 , -0.759324015 ), ( 79 , 2.703031821 , -0.796688276 ), ( 79 , 2.646695615 , -0.791963716 ), ( 79 , 2.452258073 , -0.816101074 ), ( 79 , 2.501136601 , -0.789036157 ), ( 79 , 2.457346472 , -0.784786087 ), ( 79 , 2.4977886 , -0.718726308 ), ( 79 , 2.430482182 , -0.721162106 ), ( 79 , 2.389113014 , -0.695199755 ), ( 79 , 2.465764399 , -0.664617933 ), ( 79 , 2.581478673 , -0.666517433 ), ( 79 , 2.526862116 , -0.68992507 ), ( 79 , 2.555237204 , -0.659949447 ), ( 79 , 2.533886498 , -0.648558559 ), ( 79 , 2.618982044 , -0.61633347 ), ( 79 , 2.521670305 , -0.644471269 ), ( 79 , 2.506091639 , -0.642780535 ), ( 79 , 2.54157385 , -0.620950742 ), ( 79 , 2.475673009 , -0.643682052 ), ( 79 , 2.481451594 , -0.621555492 ), ( 79 , 2.761768448 , -0.696922979 ), ( 79 , 2.817937164 , -0.644784517 ), ( 79 , 2.789588362 , -0.653460969 ), ( 79 , 2.813664423 , -0.616868339 ), ( 79 , 2.701916378 , -0.656807844 ), ( 79 , 2.871832235 , -0.510334693 ), ( 79 , 2.814625332 , -0.518071743 ), ( 79 , 2.807642859 , -0.507273548 ), ( 79 , 2.671443249 , -0.591865222 ), ( 79 , 2.686635769 , -0.544570627 ), ( 79 , 2.721913588 , -0.528539014 ), ( 79 , 2.649023372 , -0.503838943 ), ( 79 , 2.625595583 , -0.461884139 ), ( 79 , 2.646026912 , -0.464223359 ), ( 79 , 2.770848366 , -0.460448692 ), ( 79 , 2.792533788 , -0.412334643 ), ( 79 , 2.753619547 , -0.422020676 ), ( 79 , 1.722556109 , -1.104134298 ), ( 79 , 1.861166103 , -1.047142707 ), ( 79 , 1.69708051 , -1.043233088 ), ( 79 , 1.641721522 , -1.033596393 ), ( 79 , 1.819950787 , -0.960758487 ), ( 79 , 1.927964937 , -0.973389602 ), ( 79 , 1.902206704 , -0.972718486 ), ( 79 , 1.960937479 , -0.914187561 ), ( 79 , 1.940920434 , -0.898389174 ), ( 79 , 1.612817424 , -1.038853677 ), ( 79 , 1.617048441 , -1.027203518 ), ( 79 , 1.727273655 , -0.981360263 ), ( 79 , 1.644103913 , -0.953243958 ), ( 79 , 1.605481362 , -0.9501422 ), ( 79 , 1.590010681 , -0.949184736 ), ( 79 , 1.722922399 , -0.92994345 ), ( 79 , 1.886787874 , -0.860916387 ), ( 79 , 1.991346963 , -0.824529405 ), ( 79 , 1.925899468 , -0.847056097 ), ( 79 , 1.954709237 , -0.822174091 ), ( 79 , 1.837278962 , -0.867575391 ), ( 79 , 1.878988326 , -0.795541133 ), ( 79 , 2.23127872 , -0.850832805 ), ( 79 , 2.193350803 , -0.841422924 ), ( 79 , 2.199656564 , -0.789516388 ), ( 79 , 2.078455839 , -0.872350029 ), ( 79 , 2.093067895 , -0.842633329 ), ( 79 , 2.053717413 , -0.847234516 ), ( 79 , 2.144837126 , -0.806915263 ), ( 79 , 2.114306354 , -0.805494971 ), ( 79 , 2.103592829 , -0.794800347 ), ( 79 , 2.101108597 , -0.789436372 ), ( 79 , 2.240674782 , -0.807172894 ), ( 79 , 2.221436827 , -0.795126748 ), ( 79 , 2.245698161 , -0.777165148 ), ( 79 , 2.295406962 , -0.763600948 ), ( 79 , 2.324303689 , -0.715296554 ), ( 79 , 2.27045976 , -0.739202071 ), ( 79 , 2.27202888 , -0.738984661 ), ( 79 , 2.300687807 , -0.719033326 ), ( 79 , 2.307604584 , -0.703218742 ), ( 79 , 2.296542496 , -0.70505269 ), ( 79 , 2.223613272 , -0.756312528 ), ( 79 , 2.210615509 , -0.757622295 ), ( 79 , 2.20398442 , -0.756854326 ), ( 79 , 2.182566317 , -0.734067464 ), ( 79 , 2.248144264 , -0.692575067 ), ( 79 , 2.2831986 , -0.683079151 ), ( 79 , 2.280417429 , -0.652459484 ), ( 79 , 2.252214759 , -0.632914916 ), ( 79 , 2.257515793 , -0.630706733 ), ( 79 , 2.036937537 , -0.821383411 ), ( 79 , 2.07538441 , -0.764108559 ), ( 79 , 2.042344355 , -0.767978915 ), ( 79 , 2.047315519 , -0.769522119 ), ( 79 , 2.090488073 , -0.761808207 ), ( 79 , 2.096077228 , -0.737836559 ), ( 79 , 2.094305506 , -0.727882139 ), ( 79 , 2.073875218 , -0.730057753 ), ( 79 , 2.075725345 , -0.669102179 ), ( 79 , 2.029062268 , -0.665989634 ), ( 79 , 2.197469022 , -0.671091872 ), ( 79 , 2.140529829 , -0.692271677 ), ( 79 , 2.133856525 , -0.68964724 ), ( 79 , 2.11731456 , -0.681612222 ), ( 79 , 2.157656089 , -0.672101477 ), ( 79 , 2.217970529 , -0.613781643 ), ( 79 , 2.186557714 , -0.609015106 ), ( 79 , 2.199539807 , -0.610305499 ), ( 79 , 2.129292063 , -0.593745926 ), ( 79 , 2.119588315 , -0.581772337 ), ( 79 , 2.168815485 , -0.576088297 ), ( 79 , 2.177961766 , -0.577801018 ), ( 79 , 1.622573377 , -0.886502618 ), ( 79 , 1.714039881 , -0.880924501 ), ( 79 , 1.607054748 , -0.868240317 ), ( 79 , 1.829295272 , -0.789389526 ), ( 79 , 1.809401669 , -0.767862117 ), ( 79 , 1.925726784 , -0.732866889 ), ( 79 , 1.900794985 , -0.735730133 ), ( 79 , 1.801266577 , -0.710228252 ), ( 79 , 1.88168366 , -0.685386334 ), ( 79 , 1.83511463 , -0.663850903 ), ( 79 , 1.878159302 , -0.649550304 ), ( 79 , 1.71318793 , -0.73752009 ), ( 79 , 1.705607966 , -0.721514139 ), ( 79 , 1.692101297 , -0.717868445 ), ( 79 , 1.733224426 , -0.711581061 ), ( 79 , 1.62543623 , -0.75060085 ), ( 79 , 1.659332981 , -0.634482473 ), ( 79 , 1.758591666 , -0.652226705 ), ( 79 , 1.806191425 , -0.638033694 ), ( 79 , 1.839368968 , -0.616938936 ), ( 79 , 1.790881835 , -0.553288329 ), ( 79 , 1.748551167 , -0.572086837 ), ( 79 , 2.006597077 , -0.672794109 ), ( 79 , 1.928351704 , -0.67957166 ), ( 79 , 1.961412437 , -0.665357741 ), ( 79 , 1.999535375 , -0.61052382 ), ( 79 , 1.908749168 , -0.645529539 ), ( 79 , 1.900131729 , -0.638107143 ), ( 79 , 1.92682503 , -0.593585033 ), ( 79 , 2.103252403 , -0.543434575 ), ( 79 , 2.095392702 , -0.544475823 ), ( 79 , 2.101361545 , -0.534429783 ), ( 79 , 2.093599031 , -0.530795655 ), ( 79 , 2.04024539 , -0.533173551 ), ( 79 , 2.036944902 , -0.52269809 ), ( 79 , 2.034721737 , -0.504581356 ), ( 79 , 1.984410411 , -0.513302737 ), ( 79 , 2.00355606 , -0.514438337 ), ( 79 , 2.066414499 , -0.476137117 ), ( 79 , 2.077334236 , -0.466429652 ), ( 79 , 1.935472476 , -0.546286734 ), ( 79 , 1.911328228 , -0.539966052 ), ( 79 , 1.932805892 , -0.51924843 ), ( 79 , 1.931391267 , -0.498909837 ), ( 79 , 1.899430385 , -0.495056837 ), ( 79 , 1.807224269 , -0.534299162 ), ( 79 , 1.851537902 , -0.537122577 ), ( 79 , 1.831388164 , -0.518514217 ), ( 79 , 1.985552894 , -0.497387335 ), ( 79 , 1.939980362 , -0.465646395 ), ( 79 , 2.008458299 , -0.46408692 ), ( 79 , 2.029658134 , -0.430269981 ), ( 79 , 2.015464773 , -0.412241394 ), ( 79 , 1.910186148 , -0.453532184 ), ( 79 , 1.941608594 , -0.426319322 ), ( 79 , 1.916955124 , -0.384825283 ), ( 79 , 1.971574313 , -0.365303697 ), ( 79 , 1.945124066 , -0.365778959 ), ( 79 , 2.433754905 , -0.622903213 ), ( 79 , 2.384049283 , -0.642334045 ), ( 79 , 2.38761402 , -0.602480421 ), ( 79 , 2.367429539 , -0.541360781 ), ( 79 , 2.350799852 , -0.545312555 ), ( 79 , 2.456190466 , -0.608666967 ), ( 79 , 2.453790946 , -0.610456719 ), ( 79 , 2.453736009 , -0.59346972 ), ( 79 , 2.469559512 , -0.547493029 ), ( 79 , 2.44669669 , -0.554316316 ), ( 79 , 2.420571574 , -0.526390085 ), ( 79 , 2.416369486 , -0.490262299 ), ( 79 , 2.390282912 , -0.499057056 ), ( 79 , 2.446531859 , -0.509982306 ), ( 79 , 2.225980675 , -0.577252646 ), ( 79 , 2.297649363 , -0.519380873 ), ( 79 , 2.282303405 , -0.515296781 ), ( 79 , 2.326192619 , -0.494936438 ), ( 79 , 2.211455016 , -0.558963443 ), ( 79 , 2.181409071 , -0.51221005 ), ( 79 , 2.192858534 , -0.505754844 ), ( 79 , 2.227983905 , -0.485800438 ), ( 79 , 2.371362204 , -0.491155001 ), ( 79 , 2.334551247 , -0.490129253 ), ( 79 , 2.363687714 , -0.443883193 ), ( 79 , 2.449608575 , -0.433055088 ), ( 79 , 2.414425419 , -0.429818513 ), ( 79 , 2.517123734 , -0.468766188 ), ( 79 , 2.601621944 , -0.437733734 ), ( 79 , 2.552262182 , -0.409882588 ), ( 79 , 2.578832627 , -0.367722164 ), ( 79 , 2.514896875 , -0.374618946 ), ( 79 , 2.647095853 , -0.403861083 ), ( 79 , 2.599670075 , -0.362123202 ), ( 79 , 2.589884706 , -0.340080769 ), ( 79 , 2.458979962 , -0.380858427 ), ( 79 , 2.481453017 , -0.363025977 ), ( 79 , 2.436561081 , -0.355549171 ), ( 79 , 2.418897978 , -0.325939859 ), ( 79 , 2.464739362 , -0.315739583 ), ( 79 , 2.480896058 , -0.288397151 ), ( 79 , 2.541809739 , -0.262159632 ), ( 79 , 2.612992154 , -0.246841805 ), ( 79 , 2.626574898 , -0.251203198 ), ( 79 , 2.614661726 , -0.222594901 ), ( 79 , 2.52069691 , -0.274018056 ), ( 79 , 2.538340439 , -0.220161988 ), ( 79 , 2.512181489 , -0.20849675 ), ( 79 , 2.146943602 , -0.506181571 ), ( 79 , 2.152124361 , -0.485918481 ), ( 79 , 2.231694565 , -0.448237538 ), ( 79 , 2.183308608 , -0.450655839 ), ( 79 , 2.171077407 , -0.436372641 ), ( 79 , 2.178626321 , -0.415335981 ), ( 79 , 2.104450174 , -0.454919583 ), ( 79 , 2.108298247 , -0.42948171 ), ( 79 , 2.11464112 , -0.425225801 ), ( 79 , 2.116299328 , -0.391554438 ), ( 79 , 2.133031816 , -0.378733665 ), ( 79 , 2.280098424 , -0.390711608 ), ( 79 , 2.246573269 , -0.374530039 ), ( 79 , 2.232009623 , -0.367882984 ), ( 79 , 2.189160305 , -0.361071526 ), ( 79 , 2.17111013 , -0.330848233 ), ( 79 , 2.278081248 , -0.304203753 ), ( 79 , 2.261713251 , -0.266605987 ), ( 79 , 2.023353343 , -0.386905093 ), ( 79 , 2.048755971 , -0.371492624 ), ( 79 , 2.101996411 , -0.369304408 ), ( 79 , 2.095801826 , -0.314237167 ), ( 79 , 2.00253989 , -0.353770198 ), ( 79 , 2.04101774 , -0.348798665 ), ( 79 , 2.033108835 , -0.329946527 ), ( 79 , 2.012217709 , -0.299235809 ), ( 79 , 2.053374802 , -0.330572227 ), ( 79 , 2.096595648 , -0.297303124 ), ( 79 , 2.089662168 , -0.297704467 ), ( 79 , 2.123425506 , -0.301889858 ), ( 79 , 2.229902402 , -0.265023881 ), ( 79 , 2.088804524 , -0.273239764 ), ( 79 , 2.144584858 , -0.251993479 ), ( 79 , 2.113914723 , -0.229265332 ), ( 79 , 2.401629218 , -0.260057864 ), ( 79 , 2.395552245 , -0.247556877 ), ( 79 , 2.371923494 , -0.251978593 ), ( 79 , 2.336395353 , -0.251430314 ), ( 79 , 2.339621718 , -0.242678203 ), ( 79 , 2.273435057 , -0.249463074 ), ( 79 , 2.377865744 , -0.20416939 ), ( 79 , 2.325088597 , -0.204516003 ), ( 79 , 2.451609148 , -0.236267158 ), ( 79 , 2.440101166 , -0.19473327 ), ( 79 , 2.423095889 , -0.158151619 ), ( 79 , 2.4240536 , -0.152587992 ), ( 79 , 2.426319779 , -0.145748679 ), ( 79 , 2.494903299 , -0.130830958 ), ( 79 , 2.271934873 , -0.212388757 ), ( 79 , 2.232980091 , -0.154531368 ), ( 79 , 2.20415049 , -0.170787889 ), ( 79 , 2.186319303 , -0.155043762 ), ( 79 , 2.276878601 , -0.14939687 ), ( 79 , 2.294590402 , -0.121590947 ), ( 79 , 2.357780178 , -0.15925585 ), ( 79 , 2.327444502 , -0.108417281 ), ( 79 , 2.407922163 , -0.121816679 ), ( 79 , 2.299506527 , -0.11795686 ), ( 79 , 2.31765763 , -0.108883549 ), ( 79 , 2.362233273 , -0.058786677 ), ( 79 , 2.347827574 , -0.062447047 ), ( 79 , 4.2143226 , -1.558733121 ), ( 79 , 4.706661112 , -1.524802816 ), ( 79 , 4.14115138 , -1.523094327 ), ( 79 , 3.57980417 , -1.513640809 ), ( 79 , 3.948554924 , -1.509209087 ), ( 79 , 3.887901458 , -1.507872221 ), ( 79 , 4.233109647 , -1.470122808 ), ( 79 , 3.968739578 , -1.464498637 ), ( 79 , 3.831184043 , -1.396193383 ), ( 79 , 4.048211292 , -1.384149749 ), ( 79 , 4.089174451 , -1.376674796 ), ( 79 , 4.18199354 , -1.276674142 ), ( 79 , 3.776718065 , -1.324372138 ), ( 79 , 3.728389958 , -1.322305872 ), ( 79 , 3.507572013 , -1.325238592 ), ( 79 , 3.991254935 , -1.318591584 ), ( 79 , 3.908489165 , -1.277003631 ), ( 79 , 4.10350075 , -1.299281078 ), ( 79 , 4.072085213 , -1.28358318 ), ( 79 , 4.16587721 , -1.267618771 ), ( 79 , 3.977062452 , -1.281527132 ), ( 79 , 3.685671272 , -1.257855201 ), ( 79 , 3.790940735 , -1.249483164 ), ( 79 , 4.000078496 , -1.219598306 ), ( 79 , 3.975952992 , -1.186592103 ), ( 79 , 4.498676002 , -1.27153488 ), ( 79 , 4.310904839 , -1.274471201 ), ( 79 , 4.265927492 , -1.250927855 ), ( 79 , 4.661186658 , -1.181530808 ), ( 79 , 4.641873378 , -1.176407979 ), ( 79 , 4.504787256 , -1.162559554 ), ( 79 , 4.366877442 , -1.142229835 ), ( 79 , 4.422268813 , -1.103665084 ), ( 79 , 4.154106369 , -1.236062704 ), ( 79 , 4.192537591 , -1.19866672 ), ( 79 , 4.067055719 , -1.207305652 ), ( 79 , 4.076635295 , -1.197549341 ), ( 79 , 4.26327706 , -1.180459949 ), ( 79 , 4.073445294 , -1.175289187 ), ( 79 , 3.9921542 , -1.154664477 ), ( 79 , 4.151626878 , -1.120182098 ), ( 79 , 4.133728254 , -1.084685793 ), ( 79 , 4.119789597 , -1.084894812 ), ( 79 , 4.339131159 , -1.134940738 ), ( 79 , 4.276404933 , -1.115977511 ), ( 79 , 4.310659013 , -1.075576548 ), ( 79 , 4.17149918 , -1.048269661 ), ( 79 , 4.124522698 , -1.024283512 ), ( 79 , 4.272937525 , -1.013883622 ), ( 79 , 4.179654101 , -1.017447142 ), ( 79 , 4.201692011 , -0.984812734 ), ( 79 , 3.284839727 , -1.316586493 ), ( 79 , 3.383444503 , -1.290997757 ), ( 79 , 3.215793993 , -1.294052249 ), ( 79 , 3.639298364 , -1.195646384 ), ( 79 , 3.843270973 , -1.168436043 ), ( 79 , 3.842547744 , -1.14176314 ), ( 79 , 3.838202949 , -1.109075414 ), ( 79 , 3.61364184 , -1.189375196 ), ( 79 , 3.641426733 , -1.190972465 ), ( 79 , 3.684160405 , -1.141725451 ), ( 79 , 3.581685452 , -1.1626866 ), ( 79 , 3.264808265 , -1.231244559 ), ( 79 , 3.355733917 , -1.211124984 ), ( 79 , 3.445268735 , -1.161397759 ), ( 79 , 3.496644207 , -1.117884402 ), ( 79 , 3.463532928 , -1.122479657 ), ( 79 , 3.48242865 , -1.111550171 ), ( 79 , 3.154018833 , -1.197030331 ), ( 79 , 3.465314499 , -1.106080793 ), ( 79 , 3.559506003 , -1.140126479 ), ( 79 , 3.573588301 , -1.12913906 ), ( 79 , 3.561994636 , -1.102101004 ), ( 79 , 3.545344968 , -1.088111398 ), ( 79 , 3.621390212 , -1.086902923 ), ( 79 , 3.562896275 , -1.088126805 ), ( 79 , 3.595450529 , -1.071044661 ), ( 79 , 3.613453886 , -1.061319395 ), ( 79 , 3.697847251 , -1.074468035 ), ( 79 , 3.63483865 , -1.070855182 ), ( 79 , 3.489967016 , -1.081564887 ), ( 79 , 3.539371897 , -1.05991813 ), ( 79 , 3.563308218 , -1.020986961 ), ( 79 , 3.698606673 , -0.992937984 ), ( 79 , 3.918401992 , -1.109206793 ), ( 79 , 4.013824405 , -1.056994623 ), ( 79 , 3.982311994 , -1.04879955 ), ( 79 , 3.891978563 , -1.05304162 ), ( 79 , 3.813043375 , -1.061192508 ), ( 79 , 3.820074516 , -1.058401976 ), ( 79 , 3.880707336 , -1.002489465 ), ( 79 , 3.868847405 , -0.998945833 ), ( 79 , 3.898020869 , -0.992778328 ), ( 79 , 4.081652165 , -1.002121562 ), ( 79 , 4.053491355 , -0.970880793 ), ( 79 , 4.139910211 , -0.949384025 ), ( 79 , 4.089762522 , -0.950673341 ), ( 79 , 4.087920536 , -0.937566538 ), ( 79 , 4.045793891 , -0.944295225 ), ( 79 , 4.024283021 , -0.929178394 ), ( 79 , 4.034498482 , -0.922474153 ), ( 79 , 4.055756125 , -0.896953161 ), ( 79 , 4.068303062 , -0.884142519 ), ( 79 , 4.054869158 , -0.871856296 ), ( 79 , 3.790408242 , -0.963800003 ), ( 79 , 3.875553227 , -0.977539251 ), ( 79 , 3.900365828 , -0.960776287 ), ( 79 , 3.777464398 , -0.93295183 ), ( 79 , 3.97268067 , -0.907936929 ), ( 79 , 3.977603168 , -0.891210278 ), ( 79 , 3.992477955 , -0.850802077 ), ( 79 , 3.97966485 , -0.78561843 ), ( 79 , 3.888282781 , -0.869502858 ), ( 79 , 3.904961799 , -0.849920024 ), ( 79 , 3.882365696 , -0.84885441 ), ( 79 , 3.911584087 , -0.826429652 ), ( 79 , 3.888942609 , -0.827390017 ), ( 79 , 3.935223244 , -0.820444118 ), ( 79 , 3.961713403 , -0.795524103 ), ( 79 , 3.910616063 , -0.769553084 ), ( 79 , 4.675584884 , -1.093196422 ), ( 79 , 4.706464481 , -1.059059182 ), ( 79 , 4.578057523 , -1.058369512 ), ( 79 , 4.5288125 , -1.094377948 ), ( 79 , 4.434396267 , -1.049999091 ), ( 79 , 4.451822157 , -0.987973706 ), ( 79 , 4.481139355 , -0.978054993 ), ( 79 , 4.447714329 , -0.957750578 ), ( 79 , 4.642410915 , -0.983593797 ), ( 79 , 4.628825898 , -0.918509907 ), ( 79 , 4.513986139 , -0.977517116 ), ( 79 , 4.483056742 , -0.938223045 ), ( 79 , 4.550379663 , -0.924647306 ), ( 79 , 4.56397272 , -0.882436774 ), ( 79 , 4.543602169 , -0.892265278 ), ( 79 , 4.362238214 , -0.994751195 ), ( 79 , 4.374335444 , -0.974662307 ), ( 79 , 4.385319459 , -0.972481421 ), ( 79 , 4.371258374 , -0.958005761 ), ( 79 , 4.36087889 , -0.904536431 ), ( 79 , 4.227621742 , -0.951758776 ), ( 79 , 4.296931185 , -0.93518463 ), ( 79 , 4.281326691 , -0.915774224 ), ( 79 , 4.298026915 , -0.885729064 ), ( 79 , 4.409112837 , -0.899668573 ), ( 79 , 4.465588066 , -0.893651034 ), ( 79 , 4.424240435 , -0.818856556 ), ( 79 , 4.336075283 , -0.858215216 ), ( 79 , 4.299532068 , -0.829543778 ), ( 79 , 4.296108119 , -0.800258711 ), ( 79 , 4.306362976 , -0.764440753 ), ( 79 , 4.345394105 , -0.754203325 ), ( 79 , 4.644668034 , -0.871784551 ), ( 79 , 4.637248415 , -0.872700318 ), ( 79 , 4.627519305 , -0.867510641 ), ( 79 , 4.604184969 , -0.857663853 ), ( 79 , 4.546099525 , -0.868631845 ), ( 79 , 4.533650108 , -0.849917845 ), ( 79 , 4.539490952 , -0.836574059 ), ( 79 , 4.562646281 , -0.781550516 ), ( 79 , 4.665716872 , -0.806659328 ), ( 79 , 4.704027875 , -0.793365811 ), ( 79 , 4.633414587 , -0.781629683 ), ( 79 , 4.684725356 , -0.748703283 ), ( 79 , 4.655166342 , -0.720504287 ), ( 79 , 4.668674509 , -0.722210647 ), ( 79 , 4.656103779 , -0.713130607 ), ( 79 , 4.591619013 , -0.736214683 ), ( 79 , 4.558994735 , -0.724315997 ), ( 79 , 4.634968621 , -0.706199773 ), ( 79 , 4.469172936 , -0.78959159 ), ( 79 , 4.467711114 , -0.770554247 ), ( 79 , 4.442439589 , -0.802543676 ), ( 79 , 4.484254884 , -0.746180285 ), ( 79 , 4.425371349 , -0.730287282 ), ( 79 , 4.42673709 , -0.729639313 ), ( 79 , 4.366410127 , -0.717802003 ), ( 79 , 4.39809482 , -0.697524456 ), ( 79 , 4.452428147 , -0.66213187 ), ( 79 , 4.380520568 , -0.669053465 ), ( 79 , 4.477635287 , -0.674147544 ), ( 79 , 4.566547142 , -0.668968254 ), ( 79 , 4.478469761 , -0.647554886 ), ( 79 , 4.481507944 , -0.62411245 ), ( 79 , 4.518937996 , -0.599559287 ), ( 79 , 4.516008625 , -0.588973631 ), ( 79 , 4.556953679 , -0.579935326 ), ( 79 , 4.205712668 , -0.887327094 ), ( 79 , 4.154362052 , -0.892554818 ), ( 79 , 4.166761515 , -0.862242284 ), ( 79 , 4.23262405 , -0.885928059 ), ( 79 , 4.083824106 , -0.827079099 ), ( 79 , 4.263216659 , -0.824715451 ), ( 79 , 4.268598346 , -0.810702931 ), ( 79 , 4.276033714 , -0.712426745 ), ( 79 , 4.168403207 , -0.742128859 ), ( 79 , 4.181498104 , -0.727098424 ), ( 79 , 4.164237103 , -0.717758728 ), ( 79 , 4.167506351 , -0.708825585 ), ( 79 , 4.217383132 , -0.685210641 ), ( 79 , 4.189350566 , -0.670084146 ), ( 79 , 4.06771994 , -0.775057609 ), ( 79 , 4.044609964 , -0.769824509 ), ( 79 , 4.004672195 , -0.801502185 ), ( 79 , 4.095511519 , -0.753036514 ), ( 79 , 4.01040472 , -0.740679536 ), ( 79 , 4.002436797 , -0.731765729 ), ( 79 , 4.017672447 , -0.713810587 ), ( 79 , 4.132255558 , -0.719333279 ), ( 79 , 4.157671645 , -0.652732216 ), ( 79 , 4.074392362 , -0.656943366 ), ( 79 , 4.06056705 , -0.65781973 ), ( 79 , 4.040702594 , -0.636571771 ), ( 79 , 4.368029884 , -0.661344875 ), ( 79 , 4.336557907 , -0.620333507 ), ( 79 , 4.268874162 , -0.638191816 ), ( 79 , 4.336300654 , -0.601104344 ), ( 79 , 4.332883691 , -0.550736891 ), ( 79 , 4.415616186 , -0.618879039 ), ( 79 , 4.39650184 , -0.588175946 ), ( 79 , 4.494631188 , -0.538224789 ), ( 79 , 4.428818529 , -0.521032969 ), ( 79 , 4.37889586 , -0.545004861 ), ( 79 , 4.37244776 , -0.532835679 ), ( 79 , 4.397943342 , -0.505396947 ), ( 79 , 4.441418582 , -0.481905622 ), ( 79 , 4.205393565 , -0.577192344 ), ( 79 , 4.201264812 , -0.540094703 ), ( 79 , 4.32273959 , -0.514579365 ), ( 79 , 4.319294862 , -0.435976998 ), ( 79 , 4.2576434 , -0.438466758 ), ( 79 , 3.211543346 , -1.137825686 ), ( 79 , 3.150981298 , -1.130939491 ), ( 79 , 3.155670738 , -1.123142061 ), ( 79 , 3.415311126 , -1.070452004 ), ( 79 , 3.415572449 , -1.060163535 ), ( 79 , 3.32941497 , -1.067254427 ), ( 79 , 3.396988163 , -1.016763656 ), ( 79 , 3.198427707 , -1.087566006 ), ( 79 , 3.162580862 , -1.082143827 ), ( 79 , 3.178575882 , -1.069026233 ), ( 79 , 3.160814258 , -1.065276353 ), ( 79 , 3.361200271 , -1.013233744 ), ( 79 , 3.560870665 , -0.95887283 ), ( 79 , 3.486671689 , -0.919003777 ), ( 79 , 3.594860986 , -0.90931228 ), ( 79 , 3.516540114 , -0.893210602 ), ( 79 , 3.579120047 , -0.882071404 ), ( 79 , 3.574592483 , -0.85516621 ), ( 79 , 3.202479524 , -1.011318731 ), ( 79 , 3.247065457 , -1.010869251 ), ( 79 , 3.222038276 , -1.015422387 ), ( 79 , 3.281792899 , -1.000774633 ), ( 79 , 3.266207801 , -0.985372355 ), ( 79 , 3.219628881 , -0.976958766 ), ( 79 , 3.249228794 , -0.917534466 ), ( 79 , 3.40806763 , -0.927396086 ), ( 79 , 3.425255641 , -0.890841651 ), ( 79 , 3.431932816 , -0.890981764 ), ( 79 , 3.443079288 , -0.863850922 ), ( 79 , 3.583154147 , -0.843315082 ), ( 79 , 3.541272991 , -0.840431703 ), ( 79 , 3.572488268 , -0.819833224 ), ( 79 , 3.63533904 , -0.89300169 ), ( 79 , 3.784248708 , -0.848871336 ), ( 79 , 3.61492648 , -0.838125141 ), ( 79 , 3.724030758 , -0.741136994 ), ( 79 , 3.773349126 , -0.788959436 ), ( 79 , 3.818292558 , -0.760172992 ), ( 79 , 3.89985436 , -0.753321648 ), ( 79 , 3.884008182 , -0.730362836 ), ( 79 , 3.878892506 , -0.705478824 ), ( 79 , 3.891908681 , -0.712196662 ), ( 79 , 3.776457472 , -0.761737346 ), ( 79 , 3.808964133 , -0.740117323 ), ( 79 , 3.7688782 , -0.738041729 ), ( 79 , 3.770426524 , -0.719724718 ), ( 79 , 3.827319657 , -0.655058421 ), ( 79 , 3.831653478 , -0.645910309 ), ( 79 , 3.684157732 , -0.728923181 ), ( 79 , 3.636999702 , -0.72665821 ), ( 79 , 3.671142877 , -0.692368917 ), ( 79 , 3.65139164 , -0.670159422 ), ( 79 , 3.661491038 , -0.656184145 ), ( 79 , 3.602056778 , -0.686891479 ), ( 79 , 3.742216993 , -0.713173639 ), ( 79 , 3.7235314 , -0.697758586 ), ( 79 , 3.706406204 , -0.670780598 ), ( 79 , 3.706268435 , -0.60882754 ), ( 79 , 3.723652461 , -0.585006924 ), ( 79 , 3.239375045 , -0.884665136 ), ( 79 , 3.179358565 , -0.899482111 ), ( 79 , 3.248777086 , -0.8628947 ), ( 79 , 3.26813626 , -0.88397541 ), ( 79 , 3.312662287 , -0.856370109 ), ( 79 , 3.321800708 , -0.852026615 ), ( 79 , 3.341636573 , -0.800156366 ), ( 79 , 3.225698347 , -0.834792653 ), ( 79 , 3.310660099 , -0.789697027 ), ( 79 , 3.300553475 , -0.759019183 ), ( 79 , 3.399556989 , -0.802190737 ), ( 79 , 3.41183022 , -0.807828573 ), ( 79 , 3.374162804 , -0.787875176 ), ( 79 , 3.519053545 , -0.730422223 ), ( 79 , 3.404678985 , -0.741779634 ), ( 79 , 3.397818663 , -0.715333598 ), ( 79 , 3.219222023 , -0.79225479 ), ( 79 , 3.269647156 , -0.692115032 ), ( 79 , 3.346101623 , -0.703379034 ), ( 79 , 3.348646618 , -0.677574286 ), ( 79 , 3.354797173 , -0.646504184 ), ( 79 , 3.310418398 , -0.641071161 ), ( 79 , 3.302499505 , -0.618372731 ), ( 79 , 3.310221645 , -0.613717725 ), ( 79 , 3.304129421 , -0.612641282 ), ( 79 , 3.53707424 , -0.678624287 ), ( 79 , 3.530394308 , -0.624388865 ), ( 79 , 3.466291957 , -0.618546493 ), ( 79 , 3.458034846 , -0.606501252 ), ( 79 , 3.678400234 , -0.552991336 ), ( 79 , 3.617204508 , -0.536011628 ), ( 79 , 3.624732515 , -0.521402818 ), ( 79 , 3.621153714 , -0.491957345 ), ( 79 , 3.637712166 , -0.466132925 ), ( 79 , 3.486154656 , -0.502392948 ), ( 79 , 3.425941228 , -0.497727062 ), ( 79 , 3.422731754 , -0.462196538 ), ( 79 , 3.504451367 , -0.431690736 ), ( 79 , 3.536435779 , -0.412762093 ), ( 79 , 3.941399834 , -0.644503677 ), ( 79 , 3.96492126 , -0.656051908 ), ( 79 , 3.867777657 , -0.649650805 ), ( 79 , 3.913495039 , -0.623006346 ), ( 79 , 3.873231696 , -0.606217399 ), ( 79 , 3.899887261 , -0.588036558 ), ( 79 , 4.109840908 , -0.526158258 ), ( 79 , 3.980117487 , -0.53908022 ), ( 79 , 3.943576979 , -0.531866403 ), ( 79 , 4.044018135 , -0.488201729 ), ( 79 , 4.004050262 , -0.45821677 ), ( 79 , 3.874166949 , -0.562818298 ), ( 79 , 3.854808259 , -0.527238486 ), ( 79 , 3.841559678 , -0.511413963 ), ( 79 , 3.789868336 , -0.487290949 ), ( 79 , 3.850326621 , -0.484980935 ), ( 79 , 3.799338789 , -0.468376312 ), ( 79 , 3.944590283 , -0.489766243 ), ( 79 , 3.919745505 , -0.476948162 ), ( 79 , 3.92920133 , -0.398795705 ), ( 79 , 4.133760753 , -0.451480022 ), ( 79 , 4.144908285 , -0.375086928 ), ( 79 , 4.247466829 , -0.315923998 ), ( 79 , 4.219672017 , -0.295718218 ), ( 79 , 4.179894005 , -0.298290227 ), ( 79 , 4.03589372 , -0.384735995 ), ( 79 , 3.954249206 , -0.338204838 ), ( 79 , 4.029593788 , -0.289101274 ), ( 79 , 4.131500517 , -0.298602151 ), ( 79 , 4.170340049 , -0.26458623 ), ( 79 , 4.20126858 , -0.241065369 ), ( 79 , 4.159533965 , -0.256866761 ), ( 79 , 4.116988051 , -0.176682085 ), ( 79 , 3.729308416 , -0.484536848 ), ( 79 , 3.767213894 , -0.485629987 ), ( 79 , 3.800499545 , -0.441830679 ), ( 79 , 3.755066038 , -0.427725371 ), ( 79 , 3.652494852 , -0.426103949 ), ( 79 , 3.748509022 , -0.400615124 ), ( 79 , 3.70541286 , -0.393347799 ), ( 79 , 3.890995698 , -0.359783644 ), ( 79 , 3.776289186 , -0.348470357 ), ( 79 , 3.625690001 , -0.366257122 ), ( 79 , 3.704529056 , -0.322900278 ), ( 79 , 3.749175549 , -0.251468502 ), ( 79 , 3.768645056 , -0.226549466 ), ( 79 , 3.665732881 , -0.235038046 ), ( 79 , 3.757994319 , -0.198941909 ), ( 79 , 3.981272244 , -0.274277352 ), ( 79 , 3.959433131 , -0.269076888 ), ( 79 , 3.89298129 , -0.235709749 ), ( 79 , 3.878190167 , -0.228979799 ), ( 79 , 3.939469147 , -0.181383374 ), ( 79 , 4.067919557 , -0.167317078 ), ( 79 , 3.831306909 , -0.169957375 ), ( 79 , 3.858920224 , -0.11150778 ), ( 79 , 3.812176424 , -0.119913127 ), ( 79 , 3.944924284 , -0.120208199 ), ( 79 , 3.962313263 , -0.065564847 ), ( 79 , 5.601072704 , -1.488565618 ), ( 79 , 5.582661522 , -1.479286464 ), ( 79 , 5.100400675 , -1.478655286 ), ( 79 , 4.935619327 , -1.458450041 ), ( 79 , 5.18675941 , -1.447344154 ), ( 79 , 5.567269908 , -1.453265339 ), ( 79 , 5.595033667 , -1.398265328 ), ( 79 , 5.879688717 , -1.356444864 ), ( 79 , 4.801444336 , -1.439995378 ), ( 79 , 5.116997607 , -1.42298242 ), ( 79 , 5.170147027 , -1.39781444 ), ( 79 , 5.402430323 , -1.342033171 ), ( 79 , 5.156314396 , -1.353932589 ), ( 79 , 5.163471475 , -1.304970334 ), ( 79 , 5.631985531 , -1.312531645 ), ( 79 , 5.536567192 , -1.281011505 ), ( 79 , 5.491976274 , -1.229095542 ), ( 79 , 5.485398872 , -1.181564948 ), ( 79 , 6.2113836 , -1.295292675 ), ( 79 , 6.226948534 , -1.275822495 ), ( 79 , 5.953067029 , -1.305868908 ), ( 79 , 5.964182223 , -1.213488496 ), ( 79 , 6.005853991 , -1.200501838 ), ( 79 , 5.887446501 , -1.211920532 ), ( 79 , 6.063560916 , -1.160152073 ), ( 79 , 5.978098891 , -1.152799537 ), ( 79 , 5.989992491 , -1.132861157 ), ( 79 , 5.723774861 , -1.22787487 ), ( 79 , 5.705923023 , -1.165980837 ), ( 79 , 5.855677489 , -1.170849005 ), ( 79 , 5.819035945 , -1.16556727 ), ( 79 , 5.61994944 , -1.165770534 ), ( 79 , 5.733359729 , -1.101371049 ), ( 79 , 5.79862443 , -1.115074822 ), ( 79 , 5.809307002 , -1.117259617 ), ( 79 , 5.806983469 , -1.101293861 ), ( 79 , 5.85091195 , -1.054711149 ), ( 79 , 5.808777157 , -1.056763189 ), ( 79 , 5.755909294 , -1.057810199 ), ( 79 , 4.882088477 , -1.335172453 ), ( 79 , 4.726342724 , -1.321031532 ), ( 79 , 4.940010482 , -1.284704948 ), ( 79 , 5.057894176 , -1.267979934 ), ( 79 , 5.171266731 , -1.222025826 ), ( 79 , 4.837322463 , -1.252849305 ), ( 79 , 5.080246682 , -1.223628927 ), ( 79 , 5.104027006 , -1.174754498 ), ( 79 , 5.273473223 , -1.248825227 ), ( 79 , 5.191559453 , -1.132814445 ), ( 79 , 4.850003947 , -1.186040023 ), ( 79 , 4.72505411 , -1.184243031 ), ( 79 , 4.872052265 , -1.167430327 ), ( 79 , 4.996353677 , -1.073514129 ), ( 79 , 5.192054365 , -1.091998457 ), ( 79 , 5.290856651 , -1.014331968 ), ( 79 , 5.108016441 , -1.033613592 ), ( 79 , 5.486314554 , -1.133387407 ), ( 79 , 5.514305941 , -1.107951088 ), ( 79 , 5.481034674 , -1.004782733 ), ( 79 , 5.467594374 , -0.981227081 ), ( 79 , 5.587872483 , -1.009650357 ), ( 79 , 5.689882735 , -0.960926994 ), ( 79 , 5.71885353 , -0.962811597 ), ( 79 , 5.543291094 , -0.95249412 ), ( 79 , 5.5983415 , -0.906570126 ), ( 79 , 5.365880228 , -1.025764879 ), ( 79 , 5.327147191 , -1.030371353 ), ( 79 , 5.401523739 , -1.010089901 ), ( 79 , 5.362791747 , -0.891597364 ), ( 79 , 5.540207863 , -0.888559261 ), ( 79 , 5.531058582 , -0.773037891 ), ( 79 , 6.190090923 , -1.117646082 ), ( 79 , 6.158169643 , -1.015952107 ), ( 79 , 6.066172585 , -1.036196387 ), ( 79 , 6.045183405 , -1.027984983 ), ( 79 , 6.207257251 , -1.011623085 ), ( 79 , 6.16758466 , -0.995772973 ), ( 79 , 5.917251741 , -0.963274699 ), ( 79 , 5.914192023 , -0.963144853 ), ( 79 , 5.852885691 , -0.973273157 ), ( 79 , 5.814778329 , -0.947565477 ), ( 79 , 5.866307488 , -0.851994758 ), ( 79 , 5.911416673 , -0.799088593 ), ( 79 , 5.872804896 , -0.787377611 ), ( 79 , 6.281172684 , -0.922294866 ), ( 79 , 6.263084673 , -0.874653674 ), ( 79 , 6.115100886 , -0.783841809 ), ( 79 , 6.097712153 , -0.789445921 ), ( 79 , 6.202369567 , -0.725713295 ), ( 79 , 6.200356783 , -0.660925628 ), ( 79 , 6.177636397 , -0.679874009 ), ( 79 , 6.182638429 , -0.642308815 ), ( 79 , 6.035335965 , -0.824770495 ), ( 79 , 6.043436552 , -0.750966304 ), ( 79 , 6.036551158 , -0.751877015 ), ( 79 , 5.987144959 , -0.679843171 ), ( 79 , 6.00477424 , -0.66456152 ), ( 79 , 6.154777023 , -0.645028452 ), ( 79 , 6.131513554 , -0.631556266 ), ( 79 , 5.816369644 , -0.85614828 ), ( 79 , 5.764327365 , -0.828260752 ), ( 79 , 5.756761361 , -0.808845869 ), ( 79 , 5.671620516 , -0.881252472 ), ( 79 , 5.699558194 , -0.827341552 ), ( 79 , 5.706903155 , -0.785317949 ), ( 79 , 5.820129602 , -0.799473379 ), ( 79 , 5.786007486 , -0.777316482 ), ( 79 , 5.742360065 , -0.686080461 ), ( 79 , 5.809538593 , -0.664034644 ), ( 79 , 5.818060898 , -0.654222528 ), ( 79 , 5.582804043 , -0.716507196 ), ( 79 , 5.559646648 , -0.697482079 ), ( 79 , 5.623888505 , -0.65283357 ), ( 79 , 5.668209663 , -0.689901829 ), ( 79 , 5.768638659 , -0.600098742 ), ( 79 , 5.914835283 , -0.675866373 ), ( 79 , 5.886657196 , -0.645247575 ), ( 79 , 5.975456033 , -0.610592231 ), ( 79 , 5.879662919 , -0.550728697 ), ( 79 , 5.987264959 , -0.604481756 ), ( 79 , 5.989549545 , -0.50931687 ), ( 79 , 6.011416404 , -0.488100929 ), ( 79 , 5.940381078 , -0.475726555 ), ( 79 , 5.753656198 , -0.564709391 ), ( 79 , 5.887261832 , -0.524018485 ), ( 79 , 5.744976574 , -0.547862462 ), ( 79 , 5.816702305 , -0.462452089 ), ( 79 , 5.926299432 , -0.447795323 ), ( 79 , 5.836049082 , -0.403425702 ), ( 79 , 4.744839157 , -1.143574767 ), ( 79 , 5.012680262 , -1.035547512 ), ( 79 , 4.928451928 , -1.028831992 ), ( 79 , 4.939035136 , -1.011156256 ), ( 79 , 5.174576991 , -0.942255668 ), ( 79 , 5.021113341 , -0.990801739 ), ( 79 , 5.04058581 , -0.931457026 ), ( 79 , 5.066261285 , -0.920176382 ), ( 79 , 5.158989628 , -0.8812516 ), ( 79 , 4.865784163 , -0.970099134 ), ( 79 , 4.93441823 , -0.912812074 ), ( 79 , 4.882506576 , -0.924787499 ), ( 79 , 4.847414925 , -0.89915994 ), ( 79 , 5.084025476 , -0.828274969 ), ( 79 , 5.098289144 , -0.811157669 ), ( 79 , 5.084979863 , -0.785604748 ), ( 79 , 5.097910172 , -0.765947058 ), ( 79 , 5.214939397 , -0.816688642 ), ( 79 , 5.283279232 , -0.761017343 ), ( 79 , 5.399286835 , -0.751249877 ), ( 79 , 5.352345821 , -0.734004736 ), ( 79 , 5.245461758 , -0.776081586 ), ( 79 , 5.268635043 , -0.729052497 ), ( 79 , 5.147362025 , -0.693712433 ), ( 79 , 5.241279371 , -0.673476595 ), ( 79 , 5.242769883 , -0.640168949 ), ( 79 , 5.273121098 , -0.602376366 ), ( 79 , 4.799429723 , -0.862657265 ), ( 79 , 4.880807008 , -0.863079956 ), ( 79 , 4.900667882 , -0.852147606 ), ( 79 , 4.799208226 , -0.806898375 ), ( 79 , 4.839195822 , -0.823484838 ), ( 79 , 4.884658552 , -0.798492923 ), ( 79 , 4.919920661 , -0.760028458 ), ( 79 , 5.011978208 , -0.697436805 ), ( 79 , 4.733411185 , -0.795584188 ), ( 79 , 4.717660127 , -0.799817963 ), ( 79 , 4.774894075 , -0.753190846 ), ( 79 , 4.862059702 , -0.743347579 ), ( 79 , 4.814437306 , -0.740331117 ), ( 79 , 4.742754067 , -0.745652714 ), ( 79 , 4.774997016 , -0.731455722 ), ( 79 , 4.774403664 , -0.697256587 ), ( 79 , 4.751168736 , -0.689309899 ), ( 79 , 4.837061741 , -0.678310913 ), ( 79 , 4.83794568 , -0.663720799 ), ( 79 , 4.809736163 , -0.672747595 ), ( 79 , 4.823761419 , -0.648373594 ), ( 79 , 4.903420482 , -0.712086826 ), ( 79 , 4.883794547 , -0.69657901 ), ( 79 , 4.891798957 , -0.68222342 ), ( 79 , 4.932765747 , -0.642541506 ), ( 79 , 4.937686005 , -0.636385153 ), ( 79 , 4.958189041 , -0.58069464 ), ( 79 , 4.849410773 , -0.65613052 ), ( 79 , 4.859269785 , -0.642380573 ), ( 79 , 4.888250314 , -0.613640829 ), ( 79 , 4.835130565 , -0.627825572 ), ( 79 , 4.862737243 , -0.607654348 ), ( 79 , 4.876995963 , -0.602927175 ), ( 79 , 4.915339058 , -0.591814722 ), ( 79 , 4.908076104 , -0.582664511 ), ( 79 , 4.920269347 , -0.56831059 ), ( 79 , 4.88476108 , -0.575869753 ), ( 79 , 5.102467494 , -0.714645951 ), ( 79 , 5.181313157 , -0.613955535 ), ( 79 , 5.163418985 , -0.587241171 ), ( 79 , 5.023921239 , -0.609190479 ), ( 79 , 5.062313303 , -0.584012818 ), ( 79 , 5.130147326 , -0.57286803 ), ( 79 , 5.098368738 , -0.547817541 ), ( 79 , 5.19120926 , -0.571847538 ), ( 79 , 5.259092897 , -0.485401938 ), ( 79 , 5.182967262 , -0.508922596 ), ( 79 , 5.131501901 , -0.500358432 ), ( 79 , 5.152274525 , -0.483379884 ), ( 79 , 5.179294541 , -0.462351914 ), ( 79 , 5.0297523 , -0.590885492 ), ( 79 , 5.081408182 , -0.537620794 ), ( 79 , 4.938430963 , -0.545637131 ), ( 79 , 5.100282969 , -0.505622534 ), ( 79 , 5.13752243 , -0.383168701 ), ( 79 , 5.135255162 , -0.382275533 ), ( 79 , 5.10949704 , -0.374044759 ), ( 79 , 5.519954238 , -0.572925534 ), ( 79 , 5.665360006 , -0.517321858 ), ( 79 , 5.659246795 , -0.499321333 ), ( 79 , 5.35231409 , -0.535397567 ), ( 79 , 5.504538968 , -0.485259013 ), ( 79 , 5.47422173 , -0.487478569 ), ( 79 , 5.471302123 , -0.45937895 ), ( 79 , 5.473350739 , -0.446401868 ), ( 79 , 5.414129495 , -0.437199954 ), ( 79 , 5.532402481 , -0.389828317 ), ( 79 , 5.681327735 , -0.483306932 ), ( 79 , 5.744315282 , -0.44505048 ), ( 79 , 5.699444628 , -0.433143601 ), ( 79 , 5.678907827 , -0.382729183 ), ( 79 , 5.668594467 , -0.378977448 ), ( 79 , 5.777760976 , -0.38013063 ), ( 79 , 5.760959563 , -0.303449308 ), ( 79 , 5.570481474 , -0.352124214 ), ( 79 , 5.563025965 , -0.350297369 ), ( 79 , 5.704956102 , -0.292561446 ), ( 79 , 5.762432694 , -0.247214095 ), ( 79 , 5.266188725 , -0.47517013 ), ( 79 , 5.392269977 , -0.425395785 ), ( 79 , 5.314952027 , -0.383946775 ), ( 79 , 5.329982943 , -0.373846017 ), ( 79 , 5.327156215 , -0.316889903 ), ( 79 , 5.36977949 , -0.288872559 ), ( 79 , 5.244805871 , -0.333345456 ), ( 79 , 5.14778533 , -0.335640845 ), ( 79 , 5.199327038 , -0.335298035 ), ( 79 , 5.183656406 , -0.305085972 ), ( 79 , 5.221028985 , -0.274081944 ), ( 79 , 5.300186498 , -0.335228065 ), ( 79 , 5.3177872 , -0.311626422 ), ( 79 , 5.327269984 , -0.293738832 ), ( 79 , 5.266803153 , -0.300112177 ), ( 79 , 5.309145381 , -0.264965068 ), ( 79 , 5.350695881 , -0.241956426 ), ( 79 , 5.259386574 , -0.285770665 ), ( 79 , 5.265498244 , -0.225619761 ), ( 79 , 5.320800561 , -0.223469174 ), ( 79 , 5.314770404 , -0.184962787 ), ( 79 , 5.288749179 , -0.187029377 ), ( 79 , 5.508110641 , -0.302126493 ), ( 79 , 5.475679304 , -0.266742938 ), ( 79 , 5.414897948 , -0.253270864 ), ( 79 , 5.450092156 , -0.220097649 ), ( 79 , 5.51357306 , -0.224270161 ), ( 79 , 5.601190477 , -0.210490637 ), ( 79 , 5.591626644 , -0.199992918 ), ( 79 , 5.676514496 , -0.159559203 ), ( 79 , 5.567240225 , -0.163905158 ), ( 79 , 5.50861549 , -0.164896669 ), ( 79 , 5.606636005 , -0.142739456 ), ( 79 , 5.422205574 , -0.19145909 ), ( 79 , 5.550044418 , -0.101466427 ), ( 79 , 5.51273544 , -0.093808155 ), ( 79 , 5.512613265 , -0.04487003 ), ( 79 , 5.475547634 , -0.024013061 ), ( 79 , 1.815621641 , -0.245090132 ), ( 79 , 2.319427927 , -0.125269391 ), ( 79 , 4.933868429 , 0.191557642 ), ( 80 , 0.78666997 , 0.016925092 ), ( 80 , 0.799264161 , 0.023876873 ), ( 80 , 0.782912307 , 0.028816773 ), ( 80 , 0.814998428 , 0.047374969 ), ( 80 , 0.717957448 , 0.098744128 ), ( 80 , 0.725383186 , 0.097603736 ), ( 80 , 0.834140692 , 0.125208428 ), ( 80 , 0.893486398 , 0.17117585 ), ( 80 , 0.849968277 , 0.156695394 ), ( 80 , 0.819576108 , 0.173189459 ), ( 80 , 0.841713335 , 0.194295454 ), ( 80 , 0.842355957 , 0.196674095 ), ( 80 , 0.667575817 , 0.121410839 ), ( 80 , 0.616837066 , 0.155000766 ), ( 80 , 0.78231389 , 0.178202926 ), ( 80 , 0.823535755 , 0.267619694 ), ( 80 , 0.831048724 , 0.279092904 ), ( 80 , 0.791024551 , 0.261483432 ), ( 80 , 0.827615727 , 0.301254113 ), ( 80 , 1.074565309 , 0.273981499 ), ( 80 , 1.1650644 , 0.333650071 ), ( 80 , 1.115747696 , 0.363369749 ), ( 80 , 1.013966802 , 0.324587517 ), ( 80 , 1.025792563 , 0.324463941 ), ( 80 , 0.854205664 , 0.369402096 ), ( 80 , 0.995606578 , 0.372261041 ), ( 80 , 0.993169762 , 0.412049615 ), ( 80 , 0.976044069 , 0.412750185 ), ( 80 , 1.031856688 , 0.395714843 ), ( 80 , 1.001093401 , 0.423196638 ), ( 80 , 0.559033114 , 0.195311565 ), ( 80 , 0.630296891 , 0.27095776 ), ( 80 , 0.548853244 , 0.232877649 ), ( 80 , 0.708335838 , 0.295990265 ), ( 80 , 0.702989388 , 0.328115747 ), ( 80 , 0.636122429 , 0.353947162 ), ( 80 , 0.719085545 , 0.3772341 ), ( 80 , 0.517665848 , 0.278032844 ), ( 80 , 0.487262394 , 0.310609428 ), ( 80 , 0.427326549 , 0.37107573 ), ( 80 , 0.467585715 , 0.369724985 ), ( 80 , 0.509571563 , 0.40231618 ), ( 80 , 0.588837743 , 0.394941707 ), ( 80 , 0.609044868 , 0.445276707 ), ( 80 , 0.632817523 , 0.444831326 ), ( 80 , 0.620085714 , 0.481774313 ), ( 80 , 0.614279747 , 0.497826988 ), ( 80 , 0.577623356 , 0.509686713 ), ( 80 , 0.745666074 , 0.414359095 ), ( 80 , 0.853367901 , 0.469547998 ), ( 80 , 0.87544674 , 0.46997104 ), ( 80 , 0.8710325 , 0.480707718 ), ( 80 , 0.925810017 , 0.515409534 ), ( 80 , 0.925732296 , 0.523705116 ), ( 80 , 0.94736345 , 0.543236355 ), ( 80 , 0.927359922 , 0.552358171 ), ( 80 , 0.888440864 , 0.575863518 ), ( 80 , 0.71777023 , 0.488950928 ), ( 80 , 0.752171243 , 0.526768869 ), ( 80 , 0.634056308 , 0.483171629 ), ( 80 , 0.701851563 , 0.548365401 ), ( 80 , 0.671909805 , 0.548144601 ), ( 80 , 0.704719217 , 0.602419906 ), ( 80 , 0.810538608 , 0.559039371 ), ( 80 , 0.758955233 , 0.553206016 ), ( 80 , 0.838445382 , 0.649569749 ), ( 80 , 0.789435119 , 0.70542544 ), ( 80 , 1.15406586 , 0.396909618 ), ( 80 , 1.157075698 , 0.449405059 ), ( 80 , 1.102959674 , 0.410513617 ), ( 80 , 1.114401973 , 0.42024841 ), ( 80 , 1.272000337 , 0.497887531 ), ( 80 , 1.300371033 , 0.52579069 ), ( 80 , 1.218422427 , 0.553990345 ), ( 80 , 1.295305248 , 0.59301187 ), ( 80 , 1.076387862 , 0.448936258 ), ( 80 , 1.069907683 , 0.481876573 ), ( 80 , 1.076561412 , 0.480351962 ), ( 80 , 1.137214581 , 0.504257287 ), ( 80 , 1.153769929 , 0.50649075 ), ( 80 , 1.244443067 , 0.613623336 ), ( 80 , 1.219183765 , 0.627518242 ), ( 80 , 1.151896852 , 0.614630243 ), ( 80 , 1.105608165 , 0.619185466 ), ( 80 , 1.201693572 , 0.65448201 ), ( 80 , 1.181458076 , 0.700688694 ), ( 80 , 1.372881095 , 0.535318972 ), ( 80 , 1.337180612 , 0.608330719 ), ( 80 , 1.337351008 , 0.620682182 ), ( 80 , 1.388277414 , 0.657118517 ), ( 80 , 1.389963502 , 0.686804172 ), ( 80 , 1.347826867 , 0.689199808 ), ( 80 , 1.493626627 , 0.666674922 ), ( 80 , 1.535625572 , 0.69049831 ), ( 80 , 1.568167649 , 0.731595956 ), ( 80 , 1.51054645 , 0.781613709 ), ( 80 , 1.56790929 , 0.818880824 ), ( 80 , 1.537468789 , 0.817019696 ), ( 80 , 1.282542351 , 0.641539628 ), ( 80 , 1.337137876 , 0.698783673 ), ( 80 , 1.207123394 , 0.716925392 ), ( 80 , 1.210608721 , 0.750854953 ), ( 80 , 1.314694785 , 0.793186953 ), ( 80 , 1.379726395 , 0.746238404 ), ( 80 , 1.431008413 , 0.783848352 ), ( 80 , 1.457596703 , 0.80611087 ), ( 80 , 1.51150219 , 0.836064113 ), ( 80 , 1.511879752 , 0.857408922 ), ( 80 , 1.376609066 , 0.809936096 ), ( 80 , 1.389304176 , 0.821145839 ), ( 80 , 1.538102904 , 0.886222677 ), ( 80 , 1.061235552 , 0.607956292 ), ( 80 , 1.067105879 , 0.626930856 ), ( 80 , 0.965975622 , 0.610523379 ), ( 80 , 0.937029617 , 0.677278546 ), ( 80 , 1.087331898 , 0.635778585 ), ( 80 , 1.06885323 , 0.647293309 ), ( 80 , 1.071890563 , 0.658954341 ), ( 80 , 1.093506487 , 0.671724116 ), ( 80 , 1.05409262 , 0.674839332 ), ( 80 , 1.119846457 , 0.698589 ), ( 80 , 1.141874816 , 0.722695833 ), ( 80 , 1.092653312 , 0.736073415 ), ( 80 , 1.102209278 , 0.735104486 ), ( 80 , 1.145907326 , 0.758331549 ), ( 80 , 1.049732614 , 0.736970729 ), ( 80 , 1.062561663 , 0.736215879 ), ( 80 , 1.044628783 , 0.776348704 ), ( 80 , 1.122564058 , 0.806875046 ), ( 80 , 0.898332819 , 0.667456484 ), ( 80 , 0.8538579 , 0.672255523 ), ( 80 , 0.889794439 , 0.721466927 ), ( 80 , 0.901032946 , 0.737854612 ), ( 80 , 0.96396307 , 0.762743945 ), ( 80 , 0.999277255 , 0.816857392 ), ( 80 , 1.002262987 , 0.832303566 ), ( 80 , 1.057397603 , 0.829146617 ), ( 80 , 0.962885147 , 0.803260302 ), ( 80 , 0.94718326 , 0.824867425 ), ( 80 , 0.982808308 , 0.841165074 ), ( 80 , 0.905945618 , 0.84251884 ), ( 80 , 0.993250725 , 0.879015928 ), ( 80 , 1.024761763 , 0.914881101 ), ( 80 , 1.191444501 , 0.78413506 ), ( 80 , 1.254862783 , 0.802849505 ), ( 80 , 1.335569454 , 0.8492706 ), ( 80 , 1.180242386 , 0.805466345 ), ( 80 , 1.205225817 , 0.826528733 ), ( 80 , 1.289875763 , 0.904672072 ), ( 80 , 1.277489369 , 0.899581575 ), ( 80 , 1.448386188 , 0.894267744 ), ( 80 , 1.415722577 , 0.911589928 ), ( 80 , 1.453979426 , 0.898327952 ), ( 80 , 1.482971083 , 0.923218042 ), ( 80 , 1.370810723 , 0.942906687 ), ( 80 , 1.383093877 , 0.9455107 ), ( 80 , 1.478328485 , 0.972988166 ), ( 80 , 1.504669594 , 0.999085974 ), ( 80 , 1.138369626 , 0.879253257 ), ( 80 , 1.198398185 , 0.890168534 ), ( 80 , 1.222063518 , 0.916057054 ), ( 80 , 1.23040603 , 0.935248556 ), ( 80 , 1.26886522 , 0.986637739 ), ( 80 , 1.140385828 , 0.937252739 ), ( 80 , 1.064014464 , 0.92985862 ), ( 80 , 1.103108613 , 0.949678227 ), ( 80 , 1.139348059 , 0.968748929 ), ( 80 , 1.09624936 , 0.975821843 ), ( 80 , 1.258781005 , 1.0384301 ), ( 80 , 1.233149485 , 1.028160896 ), ( 80 , 1.24574357 , 1.044959965 ), ( 80 , 1.39797525 , 1.018323079 ), ( 80 , 1.474852319 , 1.036103679 ), ( 80 , 1.499353706 , 1.046102788 ), ( 80 , 1.41817544 , 1.079057987 ), ( 80 , 0.427787093 , 0.381978073 ), ( 80 , 0.431730768 , 0.382551618 ), ( 80 , 0.353709974 , 0.439083488 ), ( 80 , 0.558512374 , 0.516100868 ), ( 80 , 0.508099715 , 0.531269658 ), ( 80 , 0.336352239 , 0.523473383 ), ( 80 , 0.247313911 , 0.50262315 ), ( 80 , 0.248653933 , 0.556696139 ), ( 80 , 0.279708864 , 0.549814962 ), ( 80 , 0.483226986 , 0.629212077 ), ( 80 , 0.419485653 , 0.637701808 ), ( 80 , 0.353761466 , 0.663824471 ), ( 80 , 0.431004334 , 0.674606518 ), ( 80 , 0.380644587 , 0.692092451 ), ( 80 , 0.57811071 , 0.561118372 ), ( 80 , 0.568404274 , 0.582334348 ), ( 80 , 0.6424915 , 0.64520102 ), ( 80 , 0.533299122 , 0.5830893 ), ( 80 , 0.573512511 , 0.651917676 ), ( 80 , 0.69216674 , 0.634231947 ), ( 80 , 0.710720807 , 0.648806203 ), ( 80 , 0.738608324 , 0.706510641 ), ( 80 , 0.767611899 , 0.729663696 ), ( 80 , 0.777327243 , 0.734978011 ), ( 80 , 0.738498415 , 0.73190859 ), ( 80 , 0.762103415 , 0.745213523 ), ( 80 , 0.706896318 , 0.722476813 ), ( 80 , 0.629091883 , 0.699772204 ), ( 80 , 0.643500611 , 0.716425474 ), ( 80 , 0.668273617 , 0.729856036 ), ( 80 , 0.642899901 , 0.724691031 ), ( 80 , 0.618587365 , 0.764766469 ), ( 80 , 0.706325746 , 0.785430392 ), ( 80 , 0.484437172 , 0.655443393 ), ( 80 , 0.527054197 , 0.691589811 ), ( 80 , 0.445628101 , 0.687872843 ), ( 80 , 0.463947421 , 0.715290211 ), ( 80 , 0.509912291 , 0.771555061 ), ( 80 , 0.487497746 , 0.808761781 ), ( 80 , 0.573908822 , 0.823954197 ), ( 80 , 0.617389801 , 0.810101687 ), ( 80 , 0.585756883 , 0.856800747 ), ( 80 , 0.580673444 , 0.861913668 ), ( 80 , 0.490796564 , 0.869163058 ), ( 80 , 0.516698198 , 0.905715182 ), ( 80 , 0.226500775 , 0.564910029 ), ( 80 , 0.213410898 , 0.574641834 ), ( 80 , 0.209486122 , 0.636812534 ), ( 80 , 0.176883413 , 0.689926587 ), ( 80 , 0.277001932 , 0.64301269 ), ( 80 , 0.326097417 , 0.68852454 ), ( 80 , 0.272837786 , 0.688973146 ), ( 80 , 0.310863021 , 0.719445969 ), ( 80 , 0.320025708 , 0.719712938 ), ( 80 , 0.264847996 , 0.752466298 ), ( 80 , 0.244062407 , 0.79731523 ), ( 80 , 0.240697351 , 0.818258376 ), ( 80 , 0.110878703 , 0.695158624 ), ( 80 , 0.164681744 , 0.742197596 ), ( 80 , 0.078501662 , 0.711162553 ), ( 80 , 0.089577352 , 0.762606718 ), ( 80 , 0.026054311 , 0.780849274 ), ( 80 , 0.124398449 , 0.832958167 ), ( 80 , 0.172685542 , 0.865217034 ), ( 80 , 0.059410227 , 0.823677739 ), ( 80 , 0.047150403 , 0.855398446 ), ( 80 , 0.080103019 , 0.864106528 ), ( 80 , 0.045740048 , 0.906039362 ), ( 80 , 0.385373233 , 0.74668946 ), ( 80 , 0.395159627 , 0.784150358 ), ( 80 , 0.387068486 , 0.796458062 ), ( 80 , 0.300850329 , 0.801850145 ), ( 80 , 0.254272836 , 0.841591549 ), ( 80 , 0.281025499 , 0.858781502 ), ( 80 , 0.256175813 , 0.858318643 ), ( 80 , 0.277106332 , 0.878109341 ), ( 80 , 0.444102211 , 0.860497431 ), ( 80 , 0.412178946 , 0.865056261 ), ( 80 , 0.434336334 , 0.923544802 ), ( 80 , 0.401322058 , 0.915768507 ), ( 80 , 0.401824891 , 0.942808509 ), ( 80 , 0.488675065 , 0.913835051 ), ( 80 , 0.487282539 , 0.958950766 ), ( 80 , 0.377595255 , 0.927292632 ), ( 80 , 0.282834737 , 0.973516066 ), ( 80 , 0.36798153 , 1.02880897 ), ( 80 , 0.327127847 , 1.042865972 ), ( 80 , 0.219982096 , 0.883666099 ), ( 80 , 0.174920258 , 0.905461734 ), ( 80 , 0.250205231 , 0.930300069 ), ( 80 , 0.066309666 , 0.934932177 ), ( 80 , 0.034374608 , 0.970003546 ), ( 80 , 0.086761603 , 0.972396579 ), ( 80 , 0.212309437 , 0.973869539 ), ( 80 , 0.24530005 , 1.069084081 ), ( 80 , 0.082940215 , 1.053049409 ), ( 80 , 0.087354619 , 1.05835376 ), ( 80 , 0.050421934 , 1.043045628 ), ( 80 , 0.027662519 , 1.055175676 ), ( 80 , 0.027481401 , 1.065978955 ), ( 80 , 0.066155098 , 1.060673101 ), ( 80 , 0.056815967 , 1.094810876 ), ( 80 , 0.043589508 , 1.147443818 ), ( 80 , 0.773427962 , 0.80319908 ), ( 80 , 0.886309097 , 0.848833231 ), ( 80 , 0.850507108 , 0.849901756 ), ( 80 , 0.84250769 , 0.855372456 ), ( 80 , 0.867198157 , 0.868646586 ), ( 80 , 0.737601341 , 0.831225868 ), ( 80 , 0.735216295 , 0.84568251 ), ( 80 , 0.72592763 , 0.866608511 ), ( 80 , 0.735260532 , 0.88832713 ), ( 80 , 0.971325902 , 0.912782616 ), ( 80 , 0.845789882 , 0.903810862 ), ( 80 , 0.931616489 , 0.969690746 ), ( 80 , 0.87640104 , 1.010103321 ), ( 80 , 0.93679176 , 1.022512726 ), ( 80 , 0.957204941 , 1.034383999 ), ( 80 , 0.940190494 , 1.038965978 ), ( 80 , 0.935143423 , 1.042571096 ), ( 80 , 0.626636756 , 0.919461826 ), ( 80 , 0.667291442 , 0.951978653 ), ( 80 , 0.564706877 , 0.92926049 ), ( 80 , 0.654863 , 0.98913853 ), ( 80 , 0.634578271 , 1.015825764 ), ( 80 , 0.830382969 , 1.038900694 ), ( 80 , 0.694723518 , 1.027006237 ), ( 80 , 0.767531199 , 1.054061238 ), ( 80 , 0.701400182 , 1.069576922 ), ( 80 , 0.782719799 , 1.057085412 ), ( 80 , 0.83270366 , 1.113294938 ), ( 80 , 0.811915034 , 1.142549623 ), ( 80 , 1.062389029 , 1.007292166 ), ( 80 , 1.141110256 , 1.061030897 ), ( 80 , 1.025770387 , 1.067532417 ), ( 80 , 1.131101018 , 1.074841326 ), ( 80 , 1.093704397 , 1.07754861 ), ( 80 , 1.079561779 , 1.08891897 ), ( 80 , 1.130996743 , 1.11627673 ), ( 80 , 1.363720826 , 1.122018921 ), ( 80 , 1.370432544 , 1.152912244 ), ( 80 , 1.417155648 , 1.129776094 ), ( 80 , 1.50501609 , 1.186450507 ), ( 80 , 1.457638528 , 1.215819131 ), ( 80 , 1.515907798 , 1.235867377 ), ( 80 , 0.991736784 , 1.090394893 ), ( 80 , 1.091842865 , 1.166690577 ), ( 80 , 0.917254685 , 1.194385018 ), ( 80 , 1.183013555 , 1.227648002 ), ( 80 , 1.198339079 , 1.227777391 ), ( 80 , 1.365582603 , 1.238660257 ), ( 80 , 1.48293361 , 1.259725689 ), ( 80 , 1.211691411 , 1.25479244 ), ( 80 , 1.182554143 , 1.284997259 ), ( 80 , 1.351877079 , 1.317381948 ), ( 80 , 0.521723897 , 0.972403541 ), ( 80 , 0.550973018 , 1.00019799 ), ( 80 , 0.516326604 , 1.009978527 ), ( 80 , 0.562788763 , 1.050587742 ), ( 80 , 0.522935833 , 1.032551407 ), ( 80 , 0.532811793 , 1.052343275 ), ( 80 , 0.485734611 , 1.053368837 ), ( 80 , 0.392257949 , 1.02559835 ), ( 80 , 0.381522468 , 1.052162586 ), ( 80 , 0.340868757 , 1.077179291 ), ( 80 , 0.443167551 , 1.093915536 ), ( 80 , 0.467581391 , 1.11096799 ), ( 80 , 0.394209587 , 1.114539473 ), ( 80 , 0.624857967 , 1.110072183 ), ( 80 , 0.589991587 , 1.117437214 ), ( 80 , 0.515958194 , 1.19621735 ), ( 80 , 0.539966185 , 1.203322062 ), ( 80 , 0.290446855 , 1.093812185 ), ( 80 , 0.352595924 , 1.135932389 ), ( 80 , 0.316481444 , 1.127873332 ), ( 80 , 0.23018277 , 1.201934543 ), ( 80 , 0.230210285 , 1.201946357 ), ( 80 , 0.004184975 , 1.194808231 ), ( 80 , 0.032626454 , 1.205664177 ), ( 80 , 0.004549865 , 1.214810559 ), ( 80 , 0.419737225 , 1.226455926 ), ( 80 , 0.41694355 , 1.264349475 ), ( 80 , 0.333815292 , 1.291738139 ), ( 80 , 0.217317056 , 1.229599961 ), ( 80 , 0.205274739 , 1.27563032 ), ( 80 , 0.031564342 , 1.277759461 ), ( 80 , 0.062711424 , 1.326836621 ), ( 80 , 0.777220813 , 1.207639148 ), ( 80 , 0.786621863 , 1.213036345 ), ( 80 , 0.840607692 , 1.248885182 ), ( 80 , 0.823828097 , 1.266211036 ), ( 80 , 0.817573423 , 1.273840681 ), ( 80 , 0.697614416 , 1.243099491 ), ( 80 , 0.742639232 , 1.272595143 ), ( 80 , 0.558899731 , 1.25386605 ), ( 80 , 0.778347769 , 1.268376497 ), ( 80 , 0.916742493 , 1.313519213 ), ( 80 , 0.769074912 , 1.312527014 ), ( 80 , 0.69009662 , 1.31821003 ), ( 80 , 0.769192161 , 1.32037079 ), ( 80 , 1.020722808 , 1.303164694 ), ( 80 , 0.999964698 , 1.322411839 ), ( 80 , 1.188097282 , 1.354776318 ), ( 80 , 1.509893241 , 1.389638523 ), ( 80 , 0.858845411 , 1.37008699 ), ( 80 , 1.081027363 , 1.413305377 ), ( 80 , 1.062831129 , 1.417666937 ), ( 80 , 0.515320784 , 1.332901146 ), ( 80 , 0.535187205 , 1.377260483 ), ( 80 , 0.629442302 , 1.392259125 ), ( 80 , 0.359602685 , 1.398520602 ), ( 80 , 0.285690037 , 1.430497617 ), ( 80 , 1.335253431 , 1.456955247 ), ( 80 , 1.414737726 , 1.506036597 ), ( 80 , 0.258604556 , 1.450403784 ), ( 80 , 0.155302315 , 1.45964817 ), ( 80 , 0.172783704 , 1.479130425 ), ( 80 , 2.376504675 , 0.033342594 ), ( 80 , 2.335150552 , 0.04587828 ), ( 80 , 2.353470378 , 0.129399303 ), ( 80 , 2.452778501 , 0.097366552 ), ( 80 , 2.49154392 , 0.177244558 ), ( 80 , 2.497297239 , 0.188086945 ), ( 80 , 2.400065445 , 0.131294859 ), ( 80 , 2.386662631 , 0.145364575 ), ( 80 , 2.439969617 , 0.158440646 ), ( 80 , 2.42524238 , 0.181058977 ), ( 80 , 2.414659743 , 0.179870939 ), ( 80 , 2.439031916 , 0.191111686 ), ( 80 , 2.482188457 , 0.219626123 ), ( 80 , 2.44758929 , 0.208716575 ), ( 80 , 2.295319792 , 0.173685954 ), ( 80 , 2.241053323 , 0.236503921 ), ( 80 , 2.346831335 , 0.18874503 ), ( 80 , 2.385704965 , 0.265568008 ), ( 80 , 2.337235712 , 0.247500074 ), ( 80 , 2.271582371 , 0.250959645 ), ( 80 , 2.314979822 , 0.297262435 ), ( 80 , 2.563400791 , 0.189267797 ), ( 80 , 2.628888812 , 0.254042172 ), ( 80 , 2.620291634 , 0.276878507 ), ( 80 , 2.47803024 , 0.239958367 ), ( 80 , 2.573841948 , 0.293881835 ), ( 80 , 2.518181708 , 0.28318984 ), ( 80 , 2.570389902 , 0.315169265 ), ( 80 , 2.664736093 , 0.274086154 ), ( 80 , 2.671721292 , 0.301899618 ), ( 80 , 2.704815044 , 0.356121223 ), ( 80 , 2.582309749 , 0.351936195 ), ( 80 , 2.6095149 , 0.366209846 ), ( 80 , 2.664298478 , 0.416808481 ), ( 80 , 2.435963568 , 0.327789109 ), ( 80 , 2.380158851 , 0.339216725 ), ( 80 , 2.441969334 , 0.358602577 ), ( 80 , 2.452139219 , 0.375219701 ), ( 80 , 2.572396774 , 0.362916234 ), ( 80 , 2.527307595 , 0.369961569 ), ( 80 , 2.584143589 , 0.438218615 ), ( 80 , 2.522962704 , 0.410966358 ), ( 80 , 2.556493586 , 0.472038893 ), ( 80 , 2.585174186 , 0.484746985 ), ( 80 , 2.524009047 , 0.488797869 ), ( 80 , 2.137395504 , 0.221468692 ), ( 80 , 2.178276391 , 0.247851594 ), ( 80 , 2.129573503 , 0.250458716 ), ( 80 , 2.098906276 , 0.282347142 ), ( 80 , 2.297249028 , 0.305358039 ), ( 80 , 2.27843624 , 0.330465901 ), ( 80 , 2.278122384 , 0.338788869 ), ( 80 , 2.301411366 , 0.347704825 ), ( 80 , 2.232645753 , 0.339662162 ), ( 80 , 2.049770704 , 0.263657224 ), ( 80 , 2.064242408 , 0.268385344 ), ( 80 , 2.110395973 , 0.309370663 ), ( 80 , 2.07215911 , 0.33568252 ), ( 80 , 2.125035619 , 0.364626718 ), ( 80 , 2.045345438 , 0.362888005 ), ( 80 , 2.124664714 , 0.397500458 ), ( 80 , 2.096295123 , 0.436921266 ), ( 80 , 2.181713251 , 0.468925891 ), ( 80 , 2.149381323 , 0.503006257 ), ( 80 , 2.331359567 , 0.3876339 ), ( 80 , 2.399686656 , 0.395794905 ), ( 80 , 2.442707957 , 0.426139559 ), ( 80 , 2.355307767 , 0.506384254 ), ( 80 , 2.467422259 , 0.532184168 ), ( 80 , 2.519580553 , 0.540304307 ), ( 80 , 2.398239819 , 0.536034332 ), ( 80 , 2.462455207 , 0.599386436 ), ( 80 , 2.259409703 , 0.563543817 ), ( 80 , 2.400445382 , 0.618067514 ), ( 80 , 2.363699565 , 0.625858011 ), ( 80 , 2.31377803 , 0.611513638 ), ( 80 , 2.325234876 , 0.606382657 ), ( 80 , 2.384778103 , 0.664769132 ), ( 80 , 2.747147636 , 0.41836644 ), ( 80 , 2.757446921 , 0.431498517 ), ( 80 , 2.693989004 , 0.405496149 ), ( 80 , 2.799594807 , 0.476643824 ), ( 80 , 2.869305039 , 0.534990208 ), ( 80 , 2.757735622 , 0.518930998 ), ( 80 , 2.727213114 , 0.530063325 ), ( 80 , 2.694750384 , 0.539083694 ), ( 80 , 2.77280529 , 0.554641446 ), ( 80 , 2.743887746 , 0.60886239 ), ( 80 , 2.787590203 , 0.628590007 ), ( 80 , 2.946597724 , 0.551494005 ), ( 80 , 2.887158994 , 0.663372442 ), ( 80 , 3.024779624 , 0.678169807 ), ( 80 , 3.014332769 , 0.720583255 ), ( 80 , 2.953496657 , 0.728248919 ), ( 80 , 2.991177173 , 0.744100184 ), ( 80 , 3.060187088 , 0.768077203 ), ( 80 , 2.833668353 , 0.722391066 ), ( 80 , 2.771600769 , 0.713419299 ), ( 80 , 2.831590983 , 0.766669839 ), ( 80 , 2.820864748 , 0.769745681 ), ( 80 , 2.827984405 , 0.781939564 ), ( 80 , 2.883304727 , 0.766408726 ), ( 80 , 2.94841777 , 0.800324052 ), ( 80 , 3.045015244 , 0.869329498 ), ( 80 , 2.574401658 , 0.586457146 ), ( 80 , 2.611126791 , 0.711095869 ), ( 80 , 2.585661666 , 0.704708899 ), ( 80 , 2.481435079 , 0.795561881 ), ( 80 , 2.498616644 , 0.84066984 ), ( 80 , 2.626136209 , 0.881055959 ), ( 80 , 2.643232247 , 0.8887163 ), ( 80 , 2.812357464 , 0.862868947 ), ( 80 , 2.9390701 , 0.922411583 ), ( 80 , 2.998585458 , 0.963766358 ), ( 80 , 2.854200663 , 0.956449879 ), ( 80 , 2.987766293 , 1.041328134 ), ( 80 , 2.949319091 , 1.031856293 ), ( 80 , 3.058022716 , 1.049056382 ), ( 80 , 3.07513372 , 1.048018929 ), ( 80 , 2.941221348 , 1.087026482 ), ( 80 , 3.024052227 , 1.083737421 ), ( 80 , 1.917234005 , 0.384400657 ), ( 80 , 2.049022251 , 0.423576838 ), ( 80 , 1.937061506 , 0.485101104 ), ( 80 , 2.058611806 , 0.433198132 ), ( 80 , 2.046462131 , 0.498708059 ), ( 80 , 2.071547864 , 0.529566159 ), ( 80 , 2.018785915 , 0.503243937 ), ( 80 , 2.085554405 , 0.574925243 ), ( 80 , 2.071723962 , 0.604208148 ), ( 80 , 1.843015357 , 0.451096431 ), ( 80 , 1.911096717 , 0.473712605 ), ( 80 , 1.872627882 , 0.530343464 ), ( 80 , 1.920966595 , 0.547460067 ), ( 80 , 1.806215167 , 0.543179716 ), ( 80 , 2.044027379 , 0.639545633 ), ( 80 , 1.97812163 , 0.62480196 ), ( 80 , 1.908218617 , 0.628265492 ), ( 80 , 1.894322813 , 0.620424413 ), ( 80 , 1.995921525 , 0.678378774 ), ( 80 , 2.135884077 , 0.562378085 ), ( 80 , 2.166088211 , 0.620472242 ), ( 80 , 2.208013105 , 0.645466658 ), ( 80 , 2.225027105 , 0.647010069 ), ( 80 , 2.205200736 , 0.652548896 ), ( 80 , 2.128460036 , 0.632573019 ), ( 80 , 2.221892599 , 0.678477533 ), ( 80 , 2.276608814 , 0.783007108 ), ( 80 , 2.073360174 , 0.649162057 ), ( 80 , 2.049611972 , 0.663610964 ), ( 80 , 2.012454944 , 0.684371166 ), ( 80 , 1.984553342 , 0.713431296 ), ( 80 , 1.9798992 , 0.718621032 ), ( 80 , 2.18192956 , 0.77952536 ), ( 80 , 2.166631731 , 0.784270254 ), ( 80 , 2.073586009 , 0.840341755 ), ( 80 , 1.76542002 , 0.55796888 ), ( 80 , 1.782202749 , 0.59030857 ), ( 80 , 1.75654651 , 0.595097724 ), ( 80 , 1.789988108 , 0.635332059 ), ( 80 , 1.80943186 , 0.644712831 ), ( 80 , 1.825523495 , 0.66301188 ), ( 80 , 1.678596043 , 0.61339708 ), ( 80 , 1.688643938 , 0.618357967 ), ( 80 , 1.784157877 , 0.645161628 ), ( 80 , 1.805913984 , 0.683638342 ), ( 80 , 1.739087239 , 0.682770635 ), ( 80 , 1.783367589 , 0.710826018 ), ( 80 , 1.872827185 , 0.673903871 ), ( 80 , 1.902023743 , 0.731798255 ), ( 80 , 1.807253898 , 0.713656879 ), ( 80 , 1.797016311 , 0.725652009 ), ( 80 , 1.775271964 , 0.733706573 ), ( 80 , 1.783800827 , 0.765061512 ), ( 80 , 1.794181445 , 0.768981515 ), ( 80 , 1.806271424 , 0.806642717 ), ( 80 , 1.652187929 , 0.667335106 ), ( 80 , 1.685923124 , 0.704385124 ), ( 80 , 1.739577947 , 0.725734858 ), ( 80 , 1.671970509 , 0.754615736 ), ( 80 , 1.646358021 , 0.713625347 ), ( 80 , 1.610467523 , 0.725188316 ), ( 80 , 1.58631481 , 0.764280586 ), ( 80 , 1.715694 , 0.812867181 ), ( 80 , 1.724529097 , 0.836862272 ), ( 80 , 1.607094857 , 0.862992611 ), ( 80 , 1.573573129 , 0.872289832 ), ( 80 , 1.651252301 , 0.858446794 ), ( 80 , 1.626189212 , 0.902094071 ), ( 80 , 1.949397134 , 0.776295124 ), ( 80 , 1.908731514 , 0.808504208 ), ( 80 , 1.966353263 , 0.871600563 ), ( 80 , 1.968108308 , 0.873506454 ), ( 80 , 1.879996298 , 0.789713393 ), ( 80 , 1.847992749 , 0.836249116 ), ( 80 , 1.912538922 , 0.881467962 ), ( 80 , 1.917006469 , 0.898726401 ), ( 80 , 1.910064933 , 0.901482499 ), ( 80 , 1.971840554 , 0.87529732 ), ( 80 , 1.931348151 , 0.922195078 ), ( 80 , 1.899610359 , 1.000058773 ), ( 80 , 1.759433604 , 0.969257423 ), ( 80 , 1.619165436 , 0.935840125 ), ( 80 , 1.698011097 , 0.953156795 ), ( 80 , 1.703629896 , 0.972086674 ), ( 80 , 1.673644632 , 1.00103311 ), ( 80 , 1.573477952 , 1.045193115 ), ( 80 , 1.794132769 , 1.019576159 ), ( 80 , 1.845050609 , 1.070020052 ), ( 80 , 1.787532116 , 1.055303686 ), ( 80 , 1.664469214 , 1.089089385 ), ( 80 , 1.594049162 , 1.112113626 ), ( 80 , 2.337961829 , 0.779493797 ), ( 80 , 2.311635877 , 0.780235397 ), ( 80 , 2.281732858 , 0.841106011 ), ( 80 , 2.38085047 , 0.877812212 ), ( 80 , 2.334099904 , 0.92426516 ), ( 80 , 2.448035512 , 0.89547579 ), ( 80 , 2.537033813 , 0.909543209 ), ( 80 , 2.418761489 , 0.919470511 ), ( 80 , 2.249493929 , 0.859709871 ), ( 80 , 2.270574449 , 0.903228036 ), ( 80 , 2.258991082 , 0.908098203 ), ( 80 , 2.344717315 , 0.957246205 ), ( 80 , 2.212163266 , 0.935998116 ), ( 80 , 2.195895668 , 0.952944483 ), ( 80 , 2.295191218 , 1.002432188 ), ( 80 , 2.446804306 , 1.070753242 ), ( 80 , 2.278100858 , 1.030255697 ), ( 80 , 2.270535187 , 1.039956754 ), ( 80 , 2.313096743 , 1.079197819 ), ( 80 , 2.397471346 , 1.104217257 ), ( 80 , 2.63944038 , 0.968446248 ), ( 80 , 2.807097405 , 1.085812348 ), ( 80 , 2.609542871 , 1.084365005 ), ( 80 , 2.922333684 , 1.105407816 ), ( 80 , 3.037949137 , 1.157947566 ), ( 80 , 3.076160375 , 1.166991314 ), ( 80 , 2.573480893 , 1.161741337 ), ( 80 , 2.509743522 , 1.141600866 ), ( 80 , 2.606713371 , 1.19520254 ), ( 80 , 2.55122736 , 1.226672096 ), ( 80 , 2.708196974 , 1.204640822 ), ( 80 , 2.007824476 , 0.999408572 ), ( 80 , 1.950193166 , 1.032390515 ), ( 80 , 1.907166984 , 1.045737989 ), ( 80 , 2.019524997 , 1.067396095 ), ( 80 , 2.074293033 , 1.105480611 ), ( 80 , 2.032067492 , 1.129512687 ), ( 80 , 1.984511532 , 1.10254572 ), ( 80 , 2.297793666 , 1.142414073 ), ( 80 , 1.976472703 , 1.168283866 ), ( 80 , 1.897615249 , 1.084485091 ), ( 80 , 1.87903455 , 1.105089891 ), ( 80 , 1.793611454 , 1.122933709 ), ( 80 , 1.592228714 , 1.168374002 ), ( 80 , 1.650378994 , 1.19238547 ), ( 80 , 1.636273109 , 1.233380561 ), ( 80 , 1.897473147 , 1.200862481 ), ( 80 , 1.828148389 , 1.255449614 ), ( 80 , 1.730079937 , 1.25676837 ), ( 80 , 1.683395896 , 1.281681417 ), ( 80 , 1.825811595 , 1.312458073 ), ( 80 , 1.671604694 , 1.306308276 ), ( 80 , 1.690975558 , 1.326808958 ), ( 80 , 1.636338814 , 1.335269668 ), ( 80 , 2.521732581 , 1.297527493 ), ( 80 , 2.231663975 , 1.261718425 ), ( 80 , 2.371437732 , 1.333367581 ), ( 80 , 2.726262319 , 1.320792897 ), ( 80 , 2.608687843 , 1.337149848 ), ( 80 , 2.902680391 , 1.334335461 ), ( 80 , 2.880463279 , 1.355980402 ), ( 80 , 2.770319933 , 1.431614835 ), ( 80 , 1.966219609 , 1.305484092 ), ( 80 , 2.043745181 , 1.343658362 ), ( 80 , 1.989828993 , 1.341000103 ), ( 80 , 2.22276033 , 1.344937378 ), ( 80 , 2.094779401 , 1.355169192 ), ( 80 , 2.079517225 , 1.387867296 ), ( 80 , 1.861356856 , 1.32943747 ), ( 80 , 1.647444611 , 1.384568285 ), ( 80 , 2.443271493 , 1.441856579 ), ( 80 , 2.569697624 , 1.454376274 ), ( 80 , 2.659551444 , 1.51103885 ), ( 80 , 2.050153577 , 1.507341695 ), ( 80 , 3.986035065 , 0.088033326 ), ( 80 , 3.912610261 , 0.094226952 ), ( 80 , 3.878498043 , 0.103918336 ), ( 80 , 3.928651526 , 0.134994223 ), ( 80 , 4.003849488 , 0.136912376 ), ( 80 , 4.033017615 , 0.158600836 ), ( 80 , 3.97861165 , 0.200285493 ), ( 80 , 3.817563403 , 0.172555518 ), ( 80 , 3.95096353 , 0.206945754 ), ( 80 , 3.905663662 , 0.308942043 ), ( 80 , 3.922492152 , 0.302404319 ), ( 80 , 4.087324899 , 0.202465722 ), ( 80 , 4.19050537 , 0.27344496 ), ( 80 , 4.183630683 , 0.282933136 ), ( 80 , 4.065118886 , 0.248874338 ), ( 80 , 4.112202776 , 0.317935673 ), ( 80 , 4.222629158 , 0.274194981 ), ( 80 , 4.218641989 , 0.285399342 ), ( 80 , 4.24931809 , 0.286833859 ), ( 80 , 4.238963121 , 0.29631846 ), ( 80 , 4.228486579 , 0.303103433 ), ( 80 , 4.293550954 , 0.3426878 ), ( 80 , 4.030364648 , 0.311835494 ), ( 80 , 4.04108675 , 0.317146402 ), ( 80 , 4.021794175 , 0.321829513 ), ( 80 , 3.999262048 , 0.357787028 ), ( 80 , 4.00316354 , 0.389213705 ), ( 80 , 4.149855116 , 0.389511104 ), ( 80 , 4.143627462 , 0.413136154 ), ( 80 , 4.186533412 , 0.443924118 ), ( 80 , 4.037063744 , 0.433125802 ), ( 80 , 3.746884542 , 0.302879501 ), ( 80 , 3.699561815 , 0.29437515 ), ( 80 , 3.898127802 , 0.318263799 ), ( 80 , 3.879415987 , 0.343794609 ), ( 80 , 3.876131526 , 0.372077386 ), ( 80 , 3.707838643 , 0.344530295 ), ( 80 , 3.600238776 , 0.320583509 ), ( 80 , 3.745995167 , 0.37477689 ), ( 80 , 3.724770821 , 0.432464283 ), ( 80 , 3.958657638 , 0.39381786 ), ( 80 , 3.995241495 , 0.581546458 ), ( 80 , 3.845718464 , 0.507152449 ), ( 80 , 3.806147398 , 0.528141716 ), ( 80 , 3.925792274 , 0.612622472 ), ( 80 , 3.981848857 , 0.627821699 ), ( 80 , 3.862415584 , 0.599975176 ), ( 80 , 3.866949897 , 0.635828943 ), ( 80 , 3.890501709 , 0.682476883 ), ( 80 , 4.381549111 , 0.410461085 ), ( 80 , 4.370148882 , 0.455178825 ), ( 80 , 4.281492236 , 0.401220968 ), ( 80 , 4.298365061 , 0.419866358 ), ( 80 , 4.328002309 , 0.454333955 ), ( 80 , 4.349430139 , 0.463065185 ), ( 80 , 4.330371913 , 0.483623017 ), ( 80 , 4.463878063 , 0.514511623 ), ( 80 , 4.463188477 , 0.553098693 ), ( 80 , 4.409353597 , 0.589877594 ), ( 80 , 4.42572074 , 0.613099512 ), ( 80 , 4.193429678 , 0.45679975 ), ( 80 , 4.22211309 , 0.506065259 ), ( 80 , 4.248987298 , 0.501471087 ), ( 80 , 4.240461339 , 0.600334649 ), ( 80 , 4.333690208 , 0.539440132 ), ( 80 , 4.341654541 , 0.579676154 ), ( 80 , 4.372199284 , 0.577747302 ), ( 80 , 4.364445756 , 0.651978148 ), ( 80 , 4.294700911 , 0.671573993 ), ( 80 , 4.32131623 , 0.710993624 ), ( 80 , 4.549530713 , 0.582959775 ), ( 80 , 4.563642172 , 0.593376328 ), ( 80 , 4.570533365 , 0.623445454 ), ( 80 , 4.561814155 , 0.659499935 ), ( 80 , 4.469162376 , 0.641460127 ), ( 80 , 4.631520089 , 0.660809863 ), ( 80 , 4.667348445 , 0.691281981 ), ( 80 , 4.660581631 , 0.708465276 ), ( 80 , 4.538813567 , 0.730758829 ), ( 80 , 4.689425845 , 0.789185795 ), ( 80 , 4.711264323 , 0.817186326 ), ( 80 , 4.427513375 , 0.710502279 ), ( 80 , 4.467693764 , 0.793238706 ), ( 80 , 4.46842695 , 0.804393441 ), ( 80 , 4.701508743 , 0.842917707 ), ( 80 , 4.621370059 , 0.845452513 ), ( 80 , 4.58826153 , 0.867834668 ), ( 80 , 4.588312538 , 0.884505904 ), ( 80 , 4.184416376 , 0.644757607 ), ( 80 , 4.093817072 , 0.632637748 ), ( 80 , 4.104820412 , 0.675767089 ), ( 80 , 4.26169684 , 0.674484241 ), ( 80 , 4.281291031 , 0.764799201 ), ( 80 , 4.171852529 , 0.688175661 ), ( 80 , 4.242230161 , 0.806823152 ), ( 80 , 3.981023504 , 0.680462979 ), ( 80 , 4.058401301 , 0.70486397 ), ( 80 , 4.099489835 , 0.74520407 ), ( 80 , 4.128904487 , 0.785776039 ), ( 80 , 4.188911146 , 0.870925559 ), ( 80 , 4.441340815 , 0.826737578 ), ( 80 , 4.410678051 , 0.843755807 ), ( 80 , 4.383428388 , 0.842374614 ), ( 80 , 4.299256945 , 0.792008223 ), ( 80 , 4.379700596 , 0.89958961 ), ( 80 , 4.560274244 , 0.927351435 ), ( 80 , 4.538268015 , 0.976259328 ), ( 80 , 4.671034261 , 1.002580766 ), ( 80 , 4.655728991 , 1.034179355 ), ( 80 , 4.297856282 , 0.880556657 ), ( 80 , 4.34916881 , 0.912049844 ), ( 80 , 4.229623052 , 0.923367713 ), ( 80 , 4.325511955 , 1.009481948 ), ( 80 , 4.48483604 , 0.980379174 ), ( 80 , 4.514861742 , 1.018999009 ), ( 80 , 4.684501324 , 1.065419612 ), ( 80 , 4.656534122 , 1.101697866 ), ( 80 , 4.609683138 , 1.105428655 ), ( 80 , 3.579462887 , 0.388031624 ), ( 80 , 3.577966152 , 0.452506661 ), ( 80 , 3.639681383 , 0.494412568 ), ( 80 , 3.51732981 , 0.535859511 ), ( 80 , 3.382174724 , 0.484605615 ), ( 80 , 3.41362925 , 0.529842688 ), ( 80 , 3.364082589 , 0.549356781 ), ( 80 , 3.452464826 , 0.584086088 ), ( 80 , 3.40351534 , 0.559977288 ), ( 80 , 3.551004845 , 0.564370431 ), ( 80 , 3.536481248 , 0.602009725 ), ( 80 , 3.604509505 , 0.594460351 ), ( 80 , 3.757170232 , 0.680465834 ), ( 80 , 3.844510312 , 0.79258996 ), ( 80 , 3.615229259 , 0.702442116 ), ( 80 , 3.663848288 , 0.733911027 ), ( 80 , 3.792619155 , 0.837583629 ), ( 80 , 3.75372028 , 0.846605514 ), ( 80 , 3.75373254 , 0.846603529 ), ( 80 , 3.347236241 , 0.568410878 ), ( 80 , 3.404128664 , 0.610837823 ), ( 80 , 3.345830448 , 0.753137616 ), ( 80 , 3.226775161 , 0.71452043 ), ( 80 , 3.248095056 , 0.752018719 ), ( 80 , 3.233949378 , 0.724012094 ), ( 80 , 3.252714402 , 0.8442324 ), ( 80 , 3.192621638 , 0.887288551 ), ( 80 , 3.590911645 , 0.873127481 ), ( 80 , 3.567965516 , 0.885137058 ), ( 80 , 3.583259295 , 0.990084483 ), ( 80 , 3.503551614 , 0.901517278 ), ( 80 , 3.525956031 , 1.015942998 ), ( 80 , 3.479884037 , 1.009175995 ), ( 80 , 3.365452618 , 0.85990697 ), ( 80 , 3.29388005 , 0.896409538 ), ( 80 , 3.297846559 , 0.987477269 ), ( 80 , 3.245644248 , 0.945244772 ), ( 80 , 3.410530447 , 0.993955992 ), ( 80 , 3.365544888 , 1.007608057 ), ( 80 , 3.2218102 , 1.053411022 ), ( 80 , 3.158959789 , 1.071695777 ), ( 80 , 3.902582151 , 0.790621644 ), ( 80 , 3.977530604 , 0.870971725 ), ( 80 , 3.871975429 , 0.836178619 ), ( 80 , 3.840932476 , 0.8501383 ), ( 80 , 3.919603673 , 0.874483108 ), ( 80 , 4.11938555 , 0.923379612 ), ( 80 , 4.130505036 , 0.990827767 ), ( 80 , 3.960049264 , 0.92491364 ), ( 80 , 3.95689325 , 0.930538927 ), ( 80 , 3.979130748 , 0.977823523 ), ( 80 , 4.036268927 , 0.97059539 ), ( 80 , 4.081183244 , 1.041599152 ), ( 80 , 3.846671829 , 0.897050195 ), ( 80 , 3.846661324 , 0.897056433 ), ( 80 , 3.831038515 , 0.900212889 ), ( 80 , 3.905778612 , 0.936956745 ), ( 80 , 3.899475793 , 0.960109745 ), ( 80 , 3.714410429 , 0.949613978 ), ( 80 , 3.840471114 , 1.007286295 ), ( 80 , 3.953333417 , 1.007964968 ), ( 80 , 3.963000937 , 1.006301609 ), ( 80 , 3.886875489 , 1.002014209 ), ( 80 , 3.815719116 , 1.044714203 ), ( 80 , 3.937225968 , 1.151307556 ), ( 80 , 4.263674284 , 0.993415941 ), ( 80 , 4.133949925 , 1.038223828 ), ( 80 , 4.196884904 , 1.040758937 ), ( 80 , 4.141912455 , 1.056402787 ), ( 80 , 4.502639851 , 1.101770291 ), ( 80 , 4.483611961 , 1.107225319 ), ( 80 , 4.612373889 , 1.171450469 ), ( 80 , 4.534922577 , 1.174295321 ), ( 80 , 4.642245943 , 1.20556382 ), ( 80 , 4.152550246 , 1.245276248 ), ( 80 , 4.466474485 , 1.218213173 ), ( 80 , 4.364866231 , 1.225874268 ), ( 80 , 4.608416555 , 1.291703501 ), ( 80 , 4.253529071 , 1.237921383 ), ( 80 , 4.205498097 , 1.256057519 ), ( 80 , 4.235135208 , 1.263501114 ), ( 80 , 3.679753557 , 1.226763503 ), ( 80 , 3.511030951 , 1.154794304 ), ( 80 , 3.364718372 , 1.20941294 ), ( 80 , 3.224287095 , 1.140876018 ), ( 80 , 3.165778917 , 1.200077378 ), ( 80 , 3.316230111 , 1.200832896 ), ( 80 , 3.541161292 , 1.253030312 ), ( 80 , 3.421052003 , 1.263662169 ), ( 80 , 3.372130682 , 1.249158286 ), ( 80 , 3.964139181 , 1.263082435 ), ( 80 , 4.125453489 , 1.288679085 ), ( 80 , 3.873553175 , 1.24967627 ), ( 80 , 3.758380062 , 1.310061248 ), ( 80 , 4.023862585 , 1.337626548 ), ( 80 , 4.289815385 , 1.402400311 ), ( 80 , 3.664520267 , 1.281037413 ), ( 80 , 3.746414854 , 1.320667481 ), ( 80 , 3.586553463 , 1.302373495 ), ( 80 , 4.232623815 , 1.43254827 ), ( 80 , 4.422097024 , 1.479422978 ), ( 80 , 3.602016163 , 1.475034356 ), ( 80 , 3.519568425 , 1.48825596 ), ( 80 , 5.50666436 , 0.065728368 ), ( 80 , 5.572844672 , 0.068276245 ), ( 80 , 5.452731426 , 0.076040605 ), ( 80 , 5.47215294 , 0.069017508 ), ( 80 , 5.469963564 , 0.107645666 ), ( 80 , 5.489276314 , 0.120372213 ), ( 80 , 5.631304173 , 0.125203905 ), ( 80 , 5.596220053 , 0.136041872 ), ( 80 , 5.648309173 , 0.165790305 ), ( 80 , 5.632590967 , 0.177265647 ), ( 80 , 5.639763788 , 0.206833557 ), ( 80 , 5.399614303 , 0.091107605 ), ( 80 , 5.45217455 , 0.151785747 ), ( 80 , 5.426437857 , 0.159071468 ), ( 80 , 5.449273201 , 0.207078341 ), ( 80 , 5.346865082 , 0.137443742 ), ( 80 , 5.385789817 , 0.179214222 ), ( 80 , 5.411258866 , 0.184524008 ), ( 80 , 5.420711284 , 0.220482646 ), ( 80 , 5.403330011 , 0.232688161 ), ( 80 , 5.549199942 , 0.226050783 ), ( 80 , 5.57582669 , 0.253748026 ), ( 80 , 5.438941083 , 0.220297634 ), ( 80 , 5.446532326 , 0.269993519 ), ( 80 , 5.491945531 , 0.26062159 ), ( 80 , 5.50091191 , 0.280366896 ), ( 80 , 5.492885104 , 0.311840982 ), ( 80 , 5.716321801 , 0.188621189 ), ( 80 , 5.686758649 , 0.218477472 ), ( 80 , 5.753293775 , 0.267162578 ), ( 80 , 5.691356775 , 0.297495223 ), ( 80 , 5.779226865 , 0.276765052 ), ( 80 , 5.808662023 , 0.309612913 ), ( 80 , 5.843376768 , 0.315561208 ), ( 80 , 5.842757885 , 0.325569838 ), ( 80 , 5.805395322 , 0.342200944 ), ( 80 , 5.819232841 , 0.367385058 ), ( 80 , 5.649989509 , 0.330161249 ), ( 80 , 5.666549162 , 0.331186291 ), ( 80 , 5.689908312 , 0.337798397 ), ( 80 , 5.62825014 , 0.365616369 ), ( 80 , 5.554840259 , 0.34359834 ), ( 80 , 5.575075009 , 0.357884074 ), ( 80 , 5.602120639 , 0.382763841 ), ( 80 , 5.742492339 , 0.424809241 ), ( 80 , 5.714699733 , 0.420435487 ), ( 80 , 5.746361354 , 0.441005221 ), ( 80 , 5.636782655 , 0.440145131 ), ( 80 , 5.711260314 , 0.448721769 ), ( 80 , 5.384212769 , 0.256782716 ), ( 80 , 5.281884863 , 0.254138359 ), ( 80 , 5.326118906 , 0.279526294 ), ( 80 , 5.297517038 , 0.310611394 ), ( 80 , 5.315577549 , 0.319888388 ), ( 80 , 5.303029724 , 0.32228072 ), ( 80 , 5.375244912 , 0.27773386 ), ( 80 , 5.385463947 , 0.311571945 ), ( 80 , 5.469053822 , 0.365314988 ), ( 80 , 5.454234674 , 0.364426775 ), ( 80 , 5.355665268 , 0.33105796 ), ( 80 , 5.384870392 , 0.348207233 ), ( 80 , 5.358718132 , 0.344926787 ), ( 80 , 5.343774736 , 0.336767837 ), ( 80 , 5.359901807 , 0.35800976 ), ( 80 , 5.336252705 , 0.354808854 ), ( 80 , 5.205050173 , 0.283512171 ), ( 80 , 5.20522587 , 0.310930002 ), ( 80 , 5.261064284 , 0.307137602 ), ( 80 , 5.258253225 , 0.312044268 ), ( 80 , 5.184160353 , 0.349008095 ), ( 80 , 5.279289547 , 0.366551854 ), ( 80 , 5.297404925 , 0.387858868 ), ( 80 , 5.297406396 , 0.387888849 ), ( 80 , 5.364124668 , 0.43762759 ), ( 80 , 5.321518684 , 0.422934099 ), ( 80 , 5.263078695 , 0.404360023 ), ( 80 , 5.279432038 , 0.44570198 ), ( 80 , 5.226696421 , 0.427522121 ), ( 80 , 5.254161452 , 0.450119638 ), ( 80 , 5.319385368 , 0.455665542 ), ( 80 , 5.312682988 , 0.460241827 ), ( 80 , 5.332638574 , 0.459689309 ), ( 80 , 5.506139244 , 0.413046659 ), ( 80 , 5.450038039 , 0.390805465 ), ( 80 , 5.435274093 , 0.401731448 ), ( 80 , 5.454423137 , 0.455019179 ), ( 80 , 5.4465062 , 0.460675096 ), ( 80 , 5.537295201 , 0.471064902 ), ( 80 , 5.460392522 , 0.478720267 ), ( 80 , 5.476155894 , 0.490264775 ), ( 80 , 5.598811621 , 0.517286087 ), ( 80 , 5.583839139 , 0.524426565 ), ( 80 , 5.507590692 , 0.532710002 ), ( 80 , 5.618872699 , 0.554930885 ), ( 80 , 5.573514588 , 0.556748293 ), ( 80 , 5.566765809 , 0.559286602 ), ( 80 , 5.402095688 , 0.472617459 ), ( 80 , 5.390822765 , 0.482563546 ), ( 80 , 5.362568881 , 0.486104554 ), ( 80 , 5.40831874 , 0.49023395 ), ( 80 , 5.472941069 , 0.505820881 ), ( 80 , 5.471369753 , 0.514866021 ), ( 80 , 5.433300904 , 0.554559582 ), ( 80 , 5.362641423 , 0.496759174 ), ( 80 , 5.36096801 , 0.502234932 ), ( 80 , 5.33471819 , 0.492993034 ), ( 80 , 5.339324527 , 0.55287226 ), ( 80 , 5.40823691 , 0.542981788 ), ( 80 , 5.520970143 , 0.58459613 ), ( 80 , 5.479123539 , 0.561458654 ), ( 80 , 5.528030458 , 0.632755573 ), ( 80 , 5.457989941 , 0.626956958 ), ( 80 , 5.470269678 , 0.630576062 ), ( 80 , 5.417344253 , 0.623620725 ), ( 80 , 5.424903697 , 0.623809821 ), ( 80 , 5.429528636 , 0.640772488 ), ( 80 , 5.495109196 , 0.635803889 ), ( 80 , 5.512149117 , 0.665889814 ), ( 80 , 5.478640989 , 0.678972089 ), ( 80 , 5.876277065 , 0.398142875 ), ( 80 , 5.965603443 , 0.418616817 ), ( 80 , 5.963569314 , 0.450352477 ), ( 80 , 5.915240652 , 0.444103533 ), ( 80 , 5.818216895 , 0.419348824 ), ( 80 , 5.952508228 , 0.516790709 ), ( 80 , 5.971660402 , 0.583693971 ), ( 80 , 6.006883292 , 0.599398658 ), ( 80 , 5.811922155 , 0.454371368 ), ( 80 , 5.888493107 , 0.523400322 ), ( 80 , 5.784639672 , 0.521964174 ), ( 80 , 5.741482825 , 0.545669983 ), ( 80 , 5.755190482 , 0.56693961 ), ( 80 , 5.760313487 , 0.583362138 ), ( 80 , 5.925560485 , 0.57990415 ), ( 80 , 5.901820612 , 0.597403524 ), ( 80 , 5.833384126 , 0.58593837 ), ( 80 , 5.82404723 , 0.631031999 ), ( 80 , 5.880827135 , 0.660126163 ), ( 80 , 6.053969865 , 0.572876178 ), ( 80 , 6.084860374 , 0.611139852 ), ( 80 , 6.043285896 , 0.582691654 ), ( 80 , 6.064224259 , 0.657763599 ), ( 80 , 6.071270115 , 0.667061502 ), ( 80 , 6.082119205 , 0.712068865 ), ( 80 , 6.160890122 , 0.711571861 ), ( 80 , 5.962521452 , 0.670674614 ), ( 80 , 5.972677052 , 0.672414917 ), ( 80 , 6.055417874 , 0.69458033 ), ( 80 , 6.079019552 , 0.724012467 ), ( 80 , 6.050260239 , 0.744510872 ), ( 80 , 5.97544953 , 0.765212898 ), ( 80 , 5.998399485 , 0.74195165 ), ( 80 , 6.002991831 , 0.760252541 ), ( 80 , 6.028222457 , 0.794305192 ), ( 80 , 6.027783408 , 0.817332572 ), ( 80 , 6.08168352 , 0.77837924 ), ( 80 , 6.133799867 , 0.791456021 ), ( 80 , 6.145541415 , 0.797496 ), ( 80 , 6.164900745 , 0.82051617 ), ( 80 , 6.245874861 , 0.833470714 ), ( 80 , 6.20646455 , 0.857854366 ), ( 80 , 6.150777779 , 0.857081383 ), ( 80 , 6.217388229 , 0.882913443 ), ( 80 , 6.26817718 , 0.941782528 ), ( 80 , 5.69171718 , 0.529066622 ), ( 80 , 5.756869761 , 0.596564173 ), ( 80 , 5.74276118 , 0.603014879 ), ( 80 , 5.638936611 , 0.579038373 ), ( 80 , 5.612510602 , 0.625509432 ), ( 80 , 5.655516599 , 0.661070648 ), ( 80 , 5.790289559 , 0.629952832 ), ( 80 , 5.783944762 , 0.635036759 ), ( 80 , 5.796785578 , 0.687166332 ), ( 80 , 5.78247262 , 0.692547832 ), ( 80 , 5.717896823 , 0.716680542 ), ( 80 , 5.724137547 , 0.739002901 ), ( 80 , 5.749324172 , 0.754288108 ), ( 80 , 5.752546622 , 0.770486989 ), ( 80 , 5.793693117 , 0.749675884 ), ( 80 , 5.785362117 , 0.772962373 ), ( 80 , 5.776294497 , 0.780605665 ), ( 80 , 5.61470032 , 0.654803647 ), ( 80 , 5.603711456 , 0.657331446 ), ( 80 , 5.556336594 , 0.670244731 ), ( 80 , 5.574644193 , 0.693702432 ), ( 80 , 5.642441737 , 0.71250195 ), ( 80 , 5.669772482 , 0.709251021 ), ( 80 , 5.655488171 , 0.731860001 ), ( 80 , 5.63655196 , 0.728567828 ), ( 80 , 5.629731765 , 0.733827127 ), ( 80 , 5.564615866 , 0.719298442 ), ( 80 , 5.590106921 , 0.732693401 ), ( 80 , 5.533961403 , 0.763547394 ), ( 80 , 5.535578541 , 0.76496213 ), ( 80 , 5.602912842 , 0.832632891 ), ( 80 , 5.813383314 , 0.83424906 ), ( 80 , 5.761348485 , 0.856114387 ), ( 80 , 5.796039325 , 0.859068721 ), ( 80 , 5.621042483 , 0.836954188 ), ( 80 , 5.635268728 , 0.842610733 ), ( 80 , 5.680008508 , 0.860421405 ), ( 80 , 5.717626128 , 0.86059272 ), ( 80 , 5.718621154 , 0.862850266 ), ( 80 , 5.718302117 , 0.890087007 ), ( 80 , 5.897146332 , 0.736902486 ), ( 80 , 5.869104413 , 0.777344101 ), ( 80 , 5.904986593 , 0.804863129 ), ( 80 , 5.924418674 , 0.792520599 ), ( 80 , 5.943596163 , 0.821483641 ), ( 80 , 5.966431011 , 0.80647687 ), ( 80 , 6.029906036 , 0.837733167 ), ( 80 , 5.999877748 , 0.863470262 ), ( 80 , 5.868586936 , 0.799076245 ), ( 80 , 5.910930729 , 0.829376301 ), ( 80 , 5.855519976 , 0.852585699 ), ( 80 , 5.927328098 , 0.86464228 ), ( 80 , 6.015212129 , 0.900727318 ), ( 80 , 6.001581744 , 0.918423942 ), ( 80 , 6.029160246 , 0.922260649 ), ( 80 , 6.150194801 , 0.902076912 ), ( 80 , 6.173128476 , 0.918223299 ), ( 80 , 6.261728828 , 0.952784959 ), ( 80 , 6.224585715 , 0.962585647 ), ( 80 , 6.261177285 , 0.980452021 ), ( 80 , 6.120377018 , 0.946363665 ), ( 80 , 6.115996364 , 0.956719613 ), ( 80 , 6.13015121 , 0.961426711 ), ( 80 , 6.132620078 , 0.967344739 ), ( 80 , 6.025092389 , 0.948033965 ), ( 80 , 6.241366041 , 0.997648686 ), ( 80 , 6.21515792 , 1.008085131 ), ( 80 , 5.886000391 , 0.889474208 ), ( 80 , 5.89765238 , 0.894332361 ), ( 80 , 5.826653538 , 0.879655743 ), ( 80 , 5.862366143 , 0.900911901 ), ( 80 , 5.883937029 , 0.9226717 ), ( 80 , 5.845736662 , 0.922953576 ), ( 80 , 5.963381507 , 0.936184344 ), ( 80 , 5.822160451 , 0.923968485 ), ( 80 , 5.860056373 , 0.963996264 ), ( 80 , 5.788698772 , 0.927263434 ), ( 80 , 5.829407754 , 0.956894973 ), ( 80 , 5.851501658 , 0.977137303 ), ( 80 , 5.957354613 , 0.997287482 ), ( 80 , 5.884365927 , 0.993459417 ), ( 80 , 5.944782217 , 1.021469245 ), ( 80 , 6.058008206 , 0.997974822 ), ( 80 , 6.010141868 , 0.995064767 ), ( 80 , 6.062120119 , 1.076105136 ), ( 80 , 6.134140838 , 1.072239235 ), ( 80 , 6.201260451 , 1.136503854 ), ( 80 , 5.091153059 , 0.369360301 ), ( 80 , 5.099311156 , 0.383648132 ), ( 80 , 5.072419919 , 0.387253703 ), ( 80 , 5.08197094 , 0.387479638 ), ( 80 , 5.106893462 , 0.392709622 ), ( 80 , 5.098395624 , 0.396500763 ), ( 80 , 5.120080313 , 0.410108844 ), ( 80 , 5.17447444 , 0.420560711 ), ( 80 , 5.127029952 , 0.409702958 ), ( 80 , 5.14219107 , 0.453414498 ), ( 80 , 5.087486262 , 0.437257099 ), ( 80 , 5.134365081 , 0.486668214 ), ( 80 , 5.21389445 , 0.454748707 ), ( 80 , 5.227211474 , 0.475310639 ), ( 80 , 5.23841035 , 0.473714857 ), ( 80 , 5.165906182 , 0.478945398 ), ( 80 , 5.27841384 , 0.51883119 ), ( 80 , 5.239352794 , 0.520479581 ), ( 80 , 5.154640126 , 0.483548978 ), ( 80 , 5.17365792 , 0.528087335 ), ( 80 , 5.133775738 , 0.54517162 ), ( 80 , 5.149582787 , 0.559478785 ), ( 80 , 5.21588212 , 0.585653814 ), ( 80 , 5.043782507 , 0.479191827 ), ( 80 , 4.978278574 , 0.464600197 ), ( 80 , 5.039526608 , 0.495577061 ), ( 80 , 5.068590241 , 0.529977639 ), ( 80 , 5.028264757 , 0.529667483 ), ( 80 , 4.939381979 , 0.502114909 ), ( 80 , 4.98586057 , 0.5112512 ), ( 80 , 4.975182789 , 0.507155918 ), ( 80 , 4.996897227 , 0.548717042 ), ( 80 , 5.011260245 , 0.559575454 ), ( 80 , 5.113356553 , 0.544806249 ), ( 80 , 5.103046793 , 0.547583942 ), ( 80 , 5.123050301 , 0.57613359 ), ( 80 , 5.119542819 , 0.58438168 ), ( 80 , 5.111657789 , 0.601609679 ), ( 80 , 5.092259736 , 0.608436858 ), ( 80 , 5.108005275 , 0.612663859 ), ( 80 , 5.141915218 , 0.591772906 ), ( 80 , 5.179148224 , 0.600719002 ), ( 80 , 5.115214062 , 0.614383199 ), ( 80 , 5.127699539 , 0.623178144 ), ( 80 , 5.05634952 , 0.655990576 ), ( 80 , 5.129551966 , 0.698607654 ), ( 80 , 5.078723482 , 0.665223474 ), ( 80 , 5.07031535 , 0.689187544 ), ( 80 , 5.077897121 , 0.694972013 ), ( 80 , 5.330025663 , 0.563990823 ), ( 80 , 5.265935171 , 0.569028984 ), ( 80 , 5.291243798 , 0.58460854 ), ( 80 , 5.308786688 , 0.592539372 ), ( 80 , 5.359329728 , 0.612509428 ), ( 80 , 5.342022248 , 0.655813917 ), ( 80 , 5.287876539 , 0.631762523 ), ( 80 , 5.262266194 , 0.624225457 ), ( 80 , 5.266356819 , 0.635239498 ), ( 80 , 5.240322113 , 0.657969097 ), ( 80 , 5.302340773 , 0.673850791 ), ( 80 , 5.272488774 , 0.665648863 ), ( 80 , 5.317417797 , 0.702091444 ), ( 80 , 5.292484762 , 0.710717268 ), ( 80 , 5.302884271 , 0.714892987 ), ( 80 , 5.408534364 , 0.669778932 ), ( 80 , 5.42725402 , 0.688698479 ), ( 80 , 5.350170688 , 0.678259359 ), ( 80 , 5.358580168 , 0.708785859 ), ( 80 , 5.360596542 , 0.713872859 ), ( 80 , 5.386744738 , 0.732978617 ), ( 80 , 5.328898838 , 0.712106594 ), ( 80 , 5.336538143 , 0.750384376 ), ( 80 , 5.38501855 , 0.787470025 ), ( 80 , 5.388065494 , 0.817648036 ), ( 80 , 5.381017919 , 0.823196607 ), ( 80 , 5.207134099 , 0.631771567 ), ( 80 , 5.209211102 , 0.682548333 ), ( 80 , 5.283858276 , 0.721741209 ), ( 80 , 5.286940647 , 0.722430867 ), ( 80 , 5.271410759 , 0.743616313 ), ( 80 , 5.241940938 , 0.754463372 ), ( 80 , 5.180704003 , 0.715487076 ), ( 80 , 5.154175661 , 0.735510448 ), ( 80 , 5.121606433 , 0.759521552 ), ( 80 , 5.159319048 , 0.76832399 ), ( 80 , 5.152103727 , 0.77717203 ), ( 80 , 5.298642045 , 0.734854634 ), ( 80 , 5.304079895 , 0.739357162 ), ( 80 , 5.292722234 , 0.747614945 ), ( 80 , 5.301515586 , 0.748622293 ), ( 80 , 5.308062824 , 0.761001731 ), ( 80 , 5.309568082 , 0.762417904 ), ( 80 , 5.319044559 , 0.783254207 ), ( 80 , 5.32083865 , 0.789152464 ), ( 80 , 5.300641456 , 0.785893819 ), ( 80 , 5.315016495 , 0.792322434 ), ( 80 , 5.27291789 , 0.788829344 ), ( 80 , 5.293240168 , 0.858502481 ), ( 80 , 5.315336095 , 0.855966398 ), ( 80 , 5.218130461 , 0.858621038 ), ( 80 , 5.19584337 , 0.878868239 ), ( 80 , 5.199120506 , 0.884092012 ), ( 80 , 5.294557235 , 0.898761224 ), ( 80 , 5.256944262 , 0.900211658 ), ( 80 , 5.250916648 , 0.903005501 ), ( 80 , 4.906612289 , 0.593342513 ), ( 80 , 4.924648351 , 0.601151038 ), ( 80 , 4.89638305 , 0.606453251 ), ( 80 , 4.945717279 , 0.604286319 ), ( 80 , 4.985702404 , 0.603577499 ), ( 80 , 4.85347451 , 0.645750106 ), ( 80 , 4.899285792 , 0.645049004 ), ( 80 , 4.885662508 , 0.700170347 ), ( 80 , 4.906948217 , 0.681917531 ), ( 80 , 5.038924339 , 0.663022739 ), ( 80 , 5.033044113 , 0.681337443 ), ( 80 , 4.976046305 , 0.686578201 ), ( 80 , 4.991759328 , 0.700156997 ), ( 80 , 5.040892705 , 0.700115835 ), ( 80 , 5.026294895 , 0.766034275 ), ( 80 , 4.947586314 , 0.703784986 ), ( 80 , 4.9298231 , 0.710974803 ), ( 80 , 4.925286904 , 0.753900936 ), ( 80 , 4.985788823 , 0.75254279 ), ( 80 , 4.956339586 , 0.811812134 ), ( 80 , 4.810194232 , 0.64403576 ), ( 80 , 4.798624447 , 0.682274707 ), ( 80 , 4.773786145 , 0.75554632 ), ( 80 , 4.893832141 , 0.760084574 ), ( 80 , 4.827606114 , 0.816971903 ), ( 80 , 4.903802386 , 0.798510168 ), ( 80 , 4.876409638 , 0.837438665 ), ( 80 , 4.871918945 , 0.852687049 ), ( 80 , 4.834679616 , 0.890758626 ), ( 80 , 4.765839607 , 0.920121206 ), ( 80 , 5.108082799 , 0.751148663 ), ( 80 , 5.11730111 , 0.758033266 ), ( 80 , 5.097312594 , 0.820767795 ), ( 80 , 5.006286078 , 0.804342305 ), ( 80 , 4.961466448 , 0.902700466 ), ( 80 , 5.152018257 , 0.846705612 ), ( 80 , 5.154108888 , 0.879266081 ), ( 80 , 5.194502911 , 0.96820477 ), ( 80 , 5.144770794 , 0.945645978 ), ( 80 , 5.033902989 , 0.928732308 ), ( 80 , 5.09800297 , 0.941960939 ), ( 80 , 5.040495046 , 0.962912209 ), ( 80 , 5.009489066 , 0.966879013 ), ( 80 , 5.062838606 , 0.992850064 ), ( 80 , 5.006168334 , 1.013594143 ), ( 80 , 4.899053355 , 0.862987867 ), ( 80 , 4.873321077 , 0.956678992 ), ( 80 , 4.777047167 , 1.012335552 ), ( 80 , 4.928201884 , 1.009500298 ), ( 80 , 4.816700189 , 1.026291873 ), ( 80 , 4.816986736 , 1.026679423 ), ( 80 , 4.758313172 , 1.141109228 ), ( 80 , 4.742989299 , 1.149962302 ), ( 80 , 4.718446737 , 1.15102655 ), ( 80 , 5.515163115 , 0.760824318 ), ( 80 , 5.493780349 , 0.810524321 ), ( 80 , 5.48682702 , 0.82348652 ), ( 80 , 5.54653167 , 0.793318909 ), ( 80 , 5.552281084 , 0.800407354 ), ( 80 , 5.554680884 , 0.81936612 ), ( 80 , 5.519430635 , 0.822869932 ), ( 80 , 5.531245553 , 0.852679639 ), ( 80 , 5.547878177 , 0.879684803 ), ( 80 , 5.473502139 , 0.853986682 ), ( 80 , 5.446307823 , 0.872584836 ), ( 80 , 5.502835153 , 0.909961441 ), ( 80 , 5.605937219 , 0.862046739 ), ( 80 , 5.6603513 , 0.896464916 ), ( 80 , 5.579263751 , 0.875848597 ), ( 80 , 5.683922114 , 0.929392062 ), ( 80 , 5.642709179 , 0.935331092 ), ( 80 , 5.659051929 , 0.953609307 ), ( 80 , 5.585021188 , 0.924650311 ), ( 80 , 5.586083562 , 0.945687662 ), ( 80 , 5.551377332 , 0.939539676 ), ( 80 , 5.573045152 , 0.960958355 ), ( 80 , 5.58624765 , 0.98603176 ), ( 80 , 5.631578414 , 0.975531019 ), ( 80 , 5.396193891 , 0.888193504 ), ( 80 , 5.34443415 , 0.895173446 ), ( 80 , 5.352791189 , 0.921486997 ), ( 80 , 5.34852752 , 0.927285752 ), ( 80 , 5.416715864 , 0.946131728 ), ( 80 , 5.418781256 , 0.949794597 ), ( 80 , 5.308354919 , 0.914505558 ), ( 80 , 5.335586793 , 0.932313394 ), ( 80 , 5.318506601 , 0.969458025 ), ( 80 , 5.289456164 , 0.99140284 ), ( 80 , 5.321389952 , 0.989205317 ), ( 80 , 5.289586327 , 1.001595452 ), ( 80 , 5.358178954 , 1.042565643 ), ( 80 , 5.534703942 , 0.978175105 ), ( 80 , 5.548992374 , 1.020342721 ), ( 80 , 5.450302332 , 1.025343989 ), ( 80 , 5.449600467 , 1.066718643 ), ( 80 , 5.365113198 , 1.064523488 ), ( 80 , 5.395758285 , 1.089644976 ), ( 80 , 5.389529207 , 1.090304038 ), ( 80 , 5.450883789 , 1.091347877 ), ( 80 , 5.455814957 , 1.114191856 ), ( 80 , 5.759925262 , 0.960275555 ), ( 80 , 5.794408673 , 0.987489649 ), ( 80 , 5.743529285 , 1.019490158 ), ( 80 , 5.884274226 , 1.021716454 ), ( 80 , 5.755052108 , 1.048660734 ), ( 80 , 5.773681832 , 1.061995621 ), ( 80 , 5.75027135 , 1.064979638 ), ( 80 , 5.881496645 , 1.11618649 ), ( 80 , 5.903892635 , 1.114916037 ), ( 80 , 5.812895796 , 1.112450682 ), ( 80 , 5.907826724 , 1.138357431 ), ( 80 , 6.061327019 , 1.116992635 ), ( 80 , 6.117589168 , 1.126079445 ), ( 80 , 6.213036105 , 1.161551336 ), ( 80 , 6.078271723 , 1.17069873 ), ( 80 , 5.990298257 , 1.162557957 ), ( 80 , 6.021039611 , 1.185947273 ), ( 80 , 5.72620487 , 1.101314896 ), ( 80 , 5.726202343 , 1.101324371 ), ( 80 , 5.65554382 , 1.111791259 ), ( 80 , 5.804697184 , 1.157225124 ), ( 80 , 5.60239432 , 1.154398941 ), ( 80 , 5.651498823 , 1.144720383 ), ( 80 , 5.682965926 , 1.15824086 ), ( 80 , 5.618532926 , 1.163404744 ), ( 80 , 5.574801137 , 1.163059349 ), ( 80 , 5.566338062 , 1.192964258 ), ( 80 , 6.205323375 , 1.293805457 ), ( 80 , 6.26250347 , 1.306795456 ), ( 80 , 5.854336882 , 1.226235662 ), ( 80 , 5.808075298 , 1.238759475 ), ( 80 , 5.820111931 , 1.264760529 ), ( 80 , 5.945514109 , 1.297320546 ), ( 80 , 6.018846301 , 1.269055288 ), ( 80 , 6.26439089 , 1.359952929 ), ( 80 , 5.256335454 , 0.976023169 ), ( 80 , 5.218871528 , 0.992935596 ), ( 80 , 5.256297217 , 1.005483651 ), ( 80 , 5.288654944 , 1.040685695 ), ( 80 , 5.24912423 , 1.0411219 ), ( 80 , 5.31851955 , 1.05798223 ), ( 80 , 5.280796646 , 1.070690948 ), ( 80 , 5.22120785 , 1.052064334 ), ( 80 , 5.24327967 , 1.08477556 ), ( 80 , 5.23140467 , 1.100140214 ), ( 80 , 5.079487507 , 1.068199763 ), ( 80 , 5.182627216 , 1.114579114 ), ( 80 , 5.113805349 , 1.101757476 ), ( 80 , 5.109751568 , 1.105049483 ), ( 80 , 5.122667044 , 1.143729058 ), ( 80 , 5.345192007 , 1.069855954 ), ( 80 , 5.31165801 , 1.084516326 ), ( 80 , 5.368899815 , 1.15291059 ), ( 80 , 5.348408426 , 1.171840569 ), ( 80 , 5.197704915 , 1.144005756 ), ( 80 , 5.23627887 , 1.194448744 ), ( 80 , 5.02349152 , 1.10321743 ), ( 80 , 4.746406894 , 1.176637194 ), ( 80 , 5.152901095 , 1.220605108 ), ( 80 , 5.221863392 , 1.262053502 ), ( 80 , 5.095638822 , 1.264981763 ), ( 80 , 4.944672302 , 1.229903657 ), ( 80 , 5.488328769 , 1.182695605 ), ( 80 , 5.636166006 , 1.257299499 ), ( 80 , 5.461971192 , 1.305232722 ), ( 80 , 5.496861401 , 1.351862423 ), ( 80 , 5.937416485 , 1.361743466 ), ( 80 , 6.194601608 , 1.393141873 ), ( 80 , 5.994847132 , 1.40045496 ), ( 80 , 6.09575585 , 1.398660692 ), ( 80 , 6.224218645 , 1.420315098 ), ( 80 , 6.218745572 , 1.445250973 ), ( 80 , 5.335416114 , 1.327207837 ), ( 80 , 5.300101564 , 1.406317018 ), ( 80 , 4.735652174 , 1.422195559 ), ( 80 , 4.975847524 , 1.44289862 ), ( 80 , 6.229197666 , 1.484898459 ), ( 80 , 5.190225567 , 1.439113066 ), ( 80 , 5.266607345 , 1.485114666 ), ( 80 , 5.208963953 , 1.496773695 ), ( 80 , 0.02384099 , -0.651051786 ), ( 80 , 6.261715489 , -0.65214395 ), ( 80 , 0.02900747 , -0.629802639 ), ( 80 , 0.050294488 , -0.601442332 ), ( 80 , 0.038266235 , -0.607275491 ), ( 80 , 6.24539684 , -0.628931562 ), ( 80 , 0.0131321 , -0.60639051 ), ( 80 , 6.247453024 , -0.58384843 ), ( 80 , 6.256790629 , -0.529834532 ), ( 80 , 6.268095506 , -0.515054358 ), ( 80 , 6.132427199 , -0.523737397 ), ( 80 , 0.05065292 , -0.412462572 ), ( 80 , 0.051987752 , -0.398248349 ), ( 80 , 6.282001211 , -0.430142 ), ( 80 , 0.166296133 , -0.482079819 ), ( 80 , 0.193966781 , -0.462767857 ), ( 80 , 0.29153965 , -0.398920499 ), ( 80 , 0.342436626 , -0.352389647 ), ( 80 , 0.22923789 , -0.366464686 ), ( 80 , 0.264595275 , -0.31623834 ), ( 80 , 0.085393108 , -0.380608994 ), ( 80 , 0.157644621 , -0.362302839 ), ( 80 , 0.154132191 , -0.324017778 ), ( 80 , 0.253766905 , -0.273740314 ), ( 80 , 0.22972602 , -0.225788186 ), ( 80 , 0.242211835 , -0.219077469 ), ( 80 , 0.208736451 , -0.190312156 ), ( 80 , 6.079452962 , -0.495938903 ), ( 80 , 6.070223301 , -0.469769663 ), ( 80 , 6.21137167 , -0.399728622 ), ( 80 , 6.156244069 , -0.278948021 ), ( 80 , 5.992548837 , -0.417644935 ), ( 80 , 6.020425315 , -0.286232036 ), ( 80 , 6.083744071 , -0.295121691 ), ( 80 , 6.09772667 , -0.238134588 ), ( 80 , 6.073734563 , -0.208285751 ), ( 80 , 6.07371723 , -0.208283491 ), ( 80 , 0.047523527 , -0.242648861 ), ( 80 , 6.219335832 , -0.238795584 ), ( 80 , 6.222039343 , -0.23482234 ), ( 80 , 6.223467475 , -0.233251387 ), ( 80 , 0.119313316 , -0.151125789 ), ( 80 , 6.184367145 , -0.232794745 ), ( 80 , 6.251539802 , -0.155245934 ), ( 80 , 6.122154142 , -0.187839945 ), ( 80 , 6.112497101 , -0.183828472 ), ( 80 , 6.123020525 , -0.163799613 ), ( 80 , 6.125058293 , -0.14768867 ), ( 80 , 0.034920184 , -0.131676067 ), ( 80 , 0.037158071 , -0.118544945 ), ( 80 , 0.066628463 , -0.107138212 ), ( 80 , 6.237559801 , -0.096919851 ), ( 80 , 0.362357644 , -0.289024084 ), ( 80 , 0.392579518 , -0.27452465 ), ( 80 , 0.372207602 , -0.261698079 ), ( 80 , 0.343444047 , -0.23381737 ), ( 80 , 0.495838315 , -0.181793046 ), ( 80 , 0.52837542 , -0.192833856 ), ( 80 , 0.431983406 , -0.183233449 ), ( 80 , 0.427935839 , -0.180479448 ), ( 80 , 0.435969046 , -0.174037436 ), ( 80 , 0.370054772 , -0.182042584 ), ( 80 , 0.271806828 , -0.186128649 ), ( 80 , 0.324532231 , -0.13803842 ), ( 80 , 0.298651699 , -0.107777593 ), ( 80 , 0.397840293 , -0.122748374 ), ( 80 , 0.424203909 , -0.072306055 ), ( 80 , 0.337653138 , -0.098308821 ), ( 80 , 0.295592799 , -0.082825958 ), ( 80 , 0.383636096 , -0.062370171 ), ( 80 , 0.613102318 , -0.111339444 ), ( 80 , 0.608014223 , -0.051988186 ), ( 80 , 0.601200506 , -0.03560735 ), ( 80 , 0.656843054 , -0.029174484 ), ( 80 , 0.663860061 , -0.020858781 ), ( 80 , 0.697540785 , 0.002531843 ), ( 80 , 0.747401822 , 0.029713594 ), ( 80 , 0.731573981 , 0.029762906 ), ( 80 , 0.601024058 , -0.002791569 ), ( 80 , 0.675805378 , 0.021731822 ), ( 80 , 0.528275945 , -0.043546215 ), ( 80 , 0.560491614 , -0.007316109 ), ( 80 , 0.469483566 , 0.002709056 ), ( 80 , 0.649034841 , 0.062354121 ), ( 80 , 0.172966274 , -0.053817212 ), ( 80 , 0.255116216 , -0.029052492 ), ( 80 , 0.103263985 , -0.053392372 ), ( 80 , 0.076270782 , 0.005619635 ), ( 80 , 0.084112301 , 0.009084799 ), ( 80 , 0.181361536 , 0.030507055 ), ( 80 , 0.189341719 , 0.045102008 ), ( 80 , 0.196008873 , 0.055868044 ), ( 80 , 0.22662733 , 0.070864808 ), ( 80 , 0.337469252 , 0.08141459 ), ( 80 , 0.484066105 , 0.104828472 ), ( 80 , 0.484838425 , 0.149191208 ), ( 80 , 0.556872644 , 0.154399467 ), ( 80 , 0.49829838 , 0.173662381 ), ( 80 , 0.400927905 , 0.174325458 ), ( 80 , 0.491394565 , 0.21716929 ), ( 80 , 0.269041715 , 0.127501635 ), ( 80 , 0.291895472 , 0.151010096 ), ( 80 , 0.336970092 , 0.184945292 ), ( 80 , 0.319173764 , 0.203901425 ), ( 80 , 0.302134716 , 0.209940325 ), ( 80 , 0.267747536 , 0.207918465 ), ( 80 , 0.332798922 , 0.282155646 ), ( 80 , 0.401052089 , 0.280054381 ), ( 80 , 5.894721092 , -0.254244886 ), ( 80 , 5.85364738 , -0.252321302 ), ( 80 , 5.866708324 , -0.230121998 ), ( 80 , 5.867517701 , -0.226159005 ), ( 80 , 5.866554196 , -0.194719571 ), ( 80 , 6.032423878 , -0.196625349 ), ( 80 , 5.93196647 , -0.132727157 ), ( 80 , 5.980004685 , -0.120680849 ), ( 80 , 5.966293158 , -0.117465544 ), ( 80 , 5.85641939 , -0.189336526 ), ( 80 , 5.755312333 , -0.196964811 ), ( 80 , 5.758539772 , -0.18000711 ), ( 80 , 5.789146508 , -0.117451074 ), ( 80 , 5.795597235 , -0.111395534 ), ( 80 , 5.774965798 , -0.102801763 ), ( 80 , 5.854592092 , -0.107886502 ), ( 80 , 5.824077959 , -0.102753124 ), ( 80 , 5.821718249 , -0.100290785 ), ( 80 , 5.912754125 , -0.026611299 ), ( 80 , 5.892120522 , -0.012866354 ), ( 80 , 5.88852337 , -0.003580015 ), ( 80 , 6.114077852 , -0.122576902 ), ( 80 , 6.094408753 , -0.031944361 ), ( 80 , 6.146901706 , -0.014597238 ), ( 80 , 6.178890798 , 0.054989893 ), ( 80 , 5.989393966 , -0.045829416 ), ( 80 , 6.019150967 , -0.050363149 ), ( 80 , 6.116221923 , 0.0534132 ), ( 80 , 6.070356431 , 0.055030461 ), ( 80 , 6.056428458 , 0.062357594 ), ( 80 , 6.017860145 , 0.107346598 ), ( 80 , 6.04304735 , 0.113750958 ), ( 80 , 6.08869067 , 0.107859064 ), ( 80 , 5.720577662 , -0.138009631 ), ( 80 , 5.700166282 , -0.072045067 ), ( 80 , 5.67465303 , -0.043918886 ), ( 80 , 5.819982655 , 0.015291736 ), ( 80 , 5.725557622 , 0.024595574 ), ( 80 , 5.797438473 , 0.00589801 ), ( 80 , 5.592309336 , -0.078309075 ), ( 80 , 5.613371791 , -0.052167534 ), ( 80 , 5.607390019 , -0.034709595 ), ( 80 , 5.643325224 , 0.018912828 ), ( 80 , 5.548566403 , -0.015206396 ), ( 80 , 5.550491772 , 0.028507937 ), ( 80 , 5.629770537 , 0.042857337 ), ( 80 , 5.776131094 , 0.083628302 ), ( 80 , 5.753522015 , 0.104960722 ), ( 80 , 5.660252884 , 0.102124809 ), ( 80 , 5.655889047 , 0.107113347 ), ( 80 , 5.687917443 , 0.160085738 ), ( 80 , 5.892014227 , 0.035628854 ), ( 80 , 5.907035837 , 0.032460441 ), ( 80 , 5.946346947 , 0.116422987 ), ( 80 , 5.85127655 , 0.115034178 ), ( 80 , 5.926957866 , 0.129979629 ), ( 80 , 6.014124061 , 0.197009669 ), ( 80 , 6.005738729 , 0.227841254 ), ( 80 , 5.763292498 , 0.137049174 ), ( 80 , 5.771149234 , 0.148602475 ), ( 80 , 5.821271799 , 0.161016507 ), ( 80 , 5.84085851 , 0.180733822 ), ( 80 , 5.720855595 , 0.180947717 ), ( 80 , 5.740043928 , 0.189884099 ), ( 80 , 5.898089845 , 0.187851224 ), ( 80 , 5.945688876 , 0.244924361 ), ( 80 , 5.924840329 , 0.261544619 ), ( 80 , 5.844197622 , 0.245568814 ), ( 80 , 5.845427516 , 0.28209685 ), ( 80 , 5.838539874 , 0.286037066 ), ( 80 , 5.899895261 , 0.276203585 ), ( 80 , 0.016003693 , 0.068188211 ), ( 80 , 0.043270921 , 0.084344197 ), ( 80 , 6.257389478 , 0.085013089 ), ( 80 , 6.261373289 , 0.146423798 ), ( 80 , 0.114773815 , 0.106366239 ), ( 80 , 0.158847091 , 0.154879504 ), ( 80 , 0.125891315 , 0.146323834 ), ( 80 , 0.117256381 , 0.162663739 ), ( 80 , 6.158174564 , 0.170374052 ), ( 80 , 6.182714325 , 0.192249195 ), ( 80 , 6.16361189 , 0.191600195 ), ( 80 , 6.252550145 , 0.208134256 ), ( 80 , 6.196079115 , 0.258492551 ), ( 80 , 0.149270142 , 0.253348942 ), ( 80 , 0.240578825 , 0.295132634 ), ( 80 , 0.350595826 , 0.316294588 ), ( 80 , 0.342018329 , 0.324236455 ), ( 80 , 0.109895038 , 0.296557657 ), ( 80 , 0.181960778 , 0.35145101 ), ( 80 , 0.222899645 , 0.399362869 ), ( 80 , 0.220836919 , 0.422658829 ), ( 80 , 0.236830181 , 0.443211208 ), ( 80 , 0.247590408 , 0.459720242 ), ( 80 , 0.18074437 , 0.489435333 ), ( 80 , 6.067117542 , 0.188780727 ), ( 80 , 6.058306133 , 0.239621061 ), ( 80 , 6.098922409 , 0.288814512 ), ( 80 , 6.228795589 , 0.295613604 ), ( 80 , 6.17451674 , 0.287616179 ), ( 80 , 6.225904822 , 0.30593906 ), ( 80 , 6.168045224 , 0.389713802 ), ( 80 , 5.948547705 , 0.301088758 ), ( 80 , 6.001817879 , 0.310609501 ), ( 80 , 5.995548095 , 0.342052083 ), ( 80 , 6.089820213 , 0.426245542 ), ( 80 , 6.082455738 , 0.444298639 ), ( 80 , 6.106009503 , 0.462182608 ), ( 80 , 6.271578394 , 0.390388483 ), ( 80 , 0.021599589 , 0.406130747 ), ( 80 , 0.053516863 , 0.393690545 ), ( 80 , 0.040438167 , 0.44123559 ), ( 80 , 6.274732451 , 0.424807229 ), ( 80 , 6.198189477 , 0.431010851 ), ( 80 , 6.211473363 , 0.438015353 ), ( 80 , 6.228146062 , 0.456074799 ), ( 80 , 6.221092814 , 0.459636762 ), ( 80 , 0.123379111 , 0.489748201 ), ( 80 , 0.129596917 , 0.526476279 ), ( 80 , 6.231676835 , 0.483713786 ), ( 80 , 6.21344681 , 0.511325471 ), ( 80 , 0.02392568 , 0.595260836 ), ( 80 , 6.278148957 , 0.588900433 ), ( 80 , 0.081180871 , 0.628142208 ), ( 80 , 6.253517254 , 0.611773362 ), ( 80 , 1.609909163 , -0.664357039 ), ( 80 , 1.645399693 , -0.627747333 ), ( 80 , 1.65260497 , -0.626751932 ), ( 80 , 1.518507769 , -0.601617658 ), ( 80 , 1.601901713 , -0.567503606 ), ( 80 , 1.687855794 , -0.556270884 ), ( 80 , 1.723354017 , -0.546138329 ), ( 80 , 1.716815689 , -0.509806912 ), ( 80 , 1.628519633 , -0.525103443 ), ( 80 , 1.621825685 , -0.475275468 ), ( 80 , 1.686631691 , -0.455601765 ), ( 80 , 1.487300474 , -0.547224304 ), ( 80 , 1.483323507 , -0.534703476 ), ( 80 , 1.523101152 , -0.55314224 ), ( 80 , 1.456659861 , -0.52255781 ), ( 80 , 1.563130295 , -0.508061939 ), ( 80 , 1.621072959 , -0.415088897 ), ( 80 , 1.554673375 , -0.420430105 ), ( 80 , 1.519891125 , -0.426978995 ), ( 80 , 1.599472724 , -0.386499077 ), ( 80 , 1.554408547 , -0.375123803 ), ( 80 , 1.547845074 , -0.371411963 ), ( 80 , 1.748680171 , -0.503570797 ), ( 80 , 1.736538435 , -0.485169191 ), ( 80 , 1.751578769 , -0.481483236 ), ( 80 , 1.7781809 , -0.448284407 ), ( 80 , 1.846101165 , -0.441989949 ), ( 80 , 1.830716666 , -0.403241227 ), ( 80 , 1.745028802 , -0.413709341 ), ( 80 , 1.754721119 , -0.391713095 ), ( 80 , 1.759844093 , -0.379307362 ), ( 80 , 1.731918259 , -0.388627718 ), ( 80 , 1.77629648 , -0.368293 ), ( 80 , 1.77392858 , -0.363235424 ), ( 80 , 1.771860645 , -0.359658749 ), ( 80 , 1.869462426 , -0.420225556 ), ( 80 , 1.870735193 , -0.414954358 ), ( 80 , 1.895938261 , -0.40042061 ), ( 80 , 1.84083167 , -0.406824737 ), ( 80 , 1.900580603 , -0.351311541 ), ( 80 , 1.930080291 , -0.310887591 ), ( 80 , 1.827107672 , -0.359804315 ), ( 80 , 1.814599575 , -0.344897818 ), ( 80 , 1.804210586 , -0.321954133 ), ( 80 , 1.845656855 , -0.320021135 ), ( 80 , 1.903804898 , -0.291762705 ), ( 80 , 1.658458329 , -0.403264138 ), ( 80 , 1.693176545 , -0.380449425 ), ( 80 , 1.673757349 , -0.352165897 ), ( 80 , 1.719654926 , -0.375875717 ), ( 80 , 1.724649362 , -0.355912719 ), ( 80 , 1.722502365 , -0.348244609 ), ( 80 , 1.629572345 , -0.371179654 ), ( 80 , 1.61343174 , -0.357888173 ), ( 80 , 1.611557099 , -0.322823854 ), ( 80 , 1.663064307 , -0.291070567 ), ( 80 , 1.680385546 , -0.264239476 ), ( 80 , 1.82023978 , -0.274774572 ), ( 80 , 1.789375742 , -0.251918248 ), ( 80 , 1.792983342 , -0.248952471 ), ( 80 , 1.7908872 , -0.246324382 ), ( 80 , 1.809844608 , -0.247046921 ), ( 80 , 1.808715621 , -0.24003085 ), ( 80 , 1.710335008 , -0.270168295 ), ( 80 , 1.751813306 , -0.243403005 ), ( 80 , 1.789018691 , -0.226259856 ), ( 80 , 1.382554864 , -0.388787711 ), ( 80 , 1.388923623 , -0.380907011 ), ( 80 , 1.519965901 , -0.38489573 ), ( 80 , 1.514988066 , -0.376002248 ), ( 80 , 1.480401927 , -0.3111682 ), ( 80 , 1.490088354 , -0.309190879 ), ( 80 , 1.26028222 , -0.40631846 ), ( 80 , 1.261825064 , -0.402499982 ), ( 80 , 1.307402175 , -0.390949256 ), ( 80 , 1.258040162 , -0.344350708 ), ( 80 , 1.251567899 , -0.32113188 ), ( 80 , 1.376222641 , -0.332672485 ), ( 80 , 1.390917644 , -0.306703141 ), ( 80 , 1.410722839 , -0.258887585 ), ( 80 , 1.386195187 , -0.22332386 ), ( 80 , 1.367722595 , -0.197596311 ), ( 80 , 1.554610669 , -0.300892718 ), ( 80 , 1.588692234 , -0.273691779 ), ( 80 , 1.554037589 , -0.270912456 ), ( 80 , 1.62176181 , -0.219884215 ), ( 80 , 1.538248063 , -0.254068946 ), ( 80 , 1.501462088 , -0.253282156 ), ( 80 , 1.576638433 , -0.227356195 ), ( 80 , 1.556558602 , -0.229662854 ), ( 80 , 1.553787459 , -0.229253962 ), ( 80 , 1.544224795 , -0.216320871 ), ( 80 , 1.663894628 , -0.245154288 ), ( 80 , 1.680951559 , -0.19079936 ), ( 80 , 1.685553528 , -0.175254233 ), ( 80 , 1.713566223 , -0.131056227 ), ( 80 , 1.609932181 , -0.168387022 ), ( 80 , 1.694866274 , -0.114282246 ), ( 80 , 1.671178895 , -0.114022252 ), ( 80 , 1.659669874 , -0.103756825 ), ( 80 , 1.477756461 , -0.225888989 ), ( 80 , 1.511930174 , -0.192428438 ), ( 80 , 1.51389476 , -0.171723039 ), ( 80 , 1.394399156 , -0.169311143 ), ( 80 , 1.462886701 , -0.093989628 ), ( 80 , 1.653051518 , -0.08837988 ), ( 80 , 1.667548648 , -0.082966981 ), ( 80 , 1.636771125 , -0.080633537 ), ( 80 , 1.592339014 , -0.093257791 ), ( 80 , 1.625136838 , -0.063470254 ), ( 80 , 1.485366647 , -0.077164976 ), ( 80 , 1.539915366 , -0.055168368 ), ( 80 , 1.578411816 , -0.029290996 ), ( 80 , 1.970628932 , -0.300153508 ), ( 80 , 1.960704927 , -0.261797679 ), ( 80 , 1.996451788 , -0.273692626 ), ( 80 , 2.028053278 , -0.263278823 ), ( 80 , 2.002860218 , -0.239154304 ), ( 80 , 1.913837483 , -0.290511363 ), ( 80 , 1.917934209 , -0.277263492 ), ( 80 , 1.967242242 , -0.22983139 ), ( 80 , 1.93941666 , -0.212955665 ), ( 80 , 2.066930307 , -0.214079664 ), ( 80 , 2.034570137 , -0.216685748 ), ( 80 , 2.044257016 , -0.213254479 ), ( 80 , 2.029178164 , -0.205323498 ), ( 80 , 2.035842383 , -0.203993921 ), ( 80 , 2.04784097 , -0.199476609 ), ( 80 , 2.056413089 , -0.194985242 ), ( 80 , 2.116414234 , -0.155163458 ), ( 80 , 1.996798925 , -0.171475765 ), ( 80 , 1.989666899 , -0.162535677 ), ( 80 , 2.050087386 , -0.149742468 ), ( 80 , 2.07852124 , -0.139473174 ), ( 80 , 2.087413218 , -0.111782595 ), ( 80 , 2.024177409 , -0.117178021 ), ( 80 , 1.857963175 , -0.241261354 ), ( 80 , 1.863212781 , -0.213548187 ), ( 80 , 1.889020728 , -0.216056919 ), ( 80 , 1.88860532 , -0.202463915 ), ( 80 , 1.846717849 , -0.19438443 ), ( 80 , 1.911931521 , -0.198877644 ), ( 80 , 1.931441039 , -0.157745085 ), ( 80 , 1.878426277 , -0.177403143 ), ( 80 , 1.906268954 , -0.169839326 ), ( 80 , 1.894391438 , -0.161561576 ), ( 80 , 1.913945814 , -0.132322915 ), ( 80 , 1.803326333 , -0.195923997 ), ( 80 , 1.812282162 , -0.177827065 ), ( 80 , 1.839169384 , -0.169316347 ), ( 80 , 1.820194972 , -0.149085448 ), ( 80 , 1.886962952 , -0.143326488 ), ( 80 , 1.838226574 , -0.143173273 ), ( 80 , 1.839512633 , -0.110164203 ), ( 80 , 1.975834281 , -0.127146698 ), ( 80 , 1.966782211 , -0.117250557 ), ( 80 , 2.006306874 , -0.108981946 ), ( 80 , 1.922072301 , -0.115259381 ), ( 80 , 1.899667715 , -0.088382479 ), ( 80 , 1.997596977 , -0.045330658 ), ( 80 , 2.138496244 , -0.117728923 ), ( 80 , 2.144828938 , -0.104987735 ), ( 80 , 2.218250491 , -0.074802922 ), ( 80 , 2.097812586 , -0.08305546 ), ( 80 , 2.087873365 , -0.063492351 ), ( 80 , 2.181342459 , -0.021802657 ), ( 80 , 2.240697567 , -0.051966793 ), ( 80 , 2.26110666 , -0.03261541 ), ( 80 , 2.317227968 , 0.008197021 ), ( 80 , 2.306760189 , 0.016438209 ), ( 80 , 2.190654295 , -0.002794042 ), ( 80 , 2.171398516 , 0.008365797 ), ( 80 , 2.251881613 , 0.035756994 ), ( 80 , 2.23604974 , 0.064112511 ), ( 80 , 2.041152703 , -0.061604159 ), ( 80 , 2.083295866 , -0.051445541 ), ( 80 , 2.074998306 , -0.038223385 ), ( 80 , 2.051778115 , -0.025463022 ), ( 80 , 2.030296027 , -0.007648823 ), ( 80 , 2.003873223 , 0.001925856 ), ( 80 , 1.986562279 , 0.009524372 ), ( 80 , 2.063112682 , 0.014279729 ), ( 80 , 2.032408573 , 0.044677176 ), ( 80 , 2.203949248 , 0.078489696 ), ( 80 , 2.19843272 , 0.090021969 ), ( 80 , 2.096030698 , 0.056704005 ), ( 80 , 2.105025833 , 0.072454866 ), ( 80 , 2.145160359 , 0.107668374 ), ( 80 , 2.162108124 , 0.133294127 ), ( 80 , 1.766177564 , -0.163958264 ), ( 80 , 1.775808775 , -0.146931475 ), ( 80 , 1.767128127 , -0.103719337 ), ( 80 , 1.793165879 , -0.074351408 ), ( 80 , 1.818497041 , -0.063769722 ), ( 80 , 1.81529664 , -0.055893764 ), ( 80 , 1.720491307 , -0.092992473 ), ( 80 , 1.692302353 , -0.089969271 ), ( 80 , 1.714670017 , -0.066673339 ), ( 80 , 1.864308106 , -0.051755467 ), ( 80 , 1.898091943 , -0.049279651 ), ( 80 , 1.886712807 , -0.044930279 ), ( 80 , 1.877214748 , -0.012009706 ), ( 80 , 1.857173357 , -0.021033936 ), ( 80 , 1.855153046 , -0.015106264 ), ( 80 , 1.922448077 , -0.027856135 ), ( 80 , 1.919168709 , -0.023020029 ), ( 80 , 1.897324798 , -0.024010852 ), ( 80 , 1.900123446 , -0.020474441 ), ( 80 , 1.90831579 , 0.011317478 ), ( 80 , 1.785342942 , -0.007893154 ), ( 80 , 1.810628615 , 0.035653707 ), ( 80 , 1.833743482 , 0.043845988 ), ( 80 , 1.857203555 , 0.068931311 ), ( 80 , 1.654286722 , -0.060026791 ), ( 80 , 1.668927444 , -0.04729408 ), ( 80 , 1.659738491 , -0.02261127 ), ( 80 , 1.741729676 , 0.007036396 ), ( 80 , 1.64098287 , 0.015289395 ), ( 80 , 1.584951814 , -0.010502961 ), ( 80 , 1.735284236 , 0.036664621 ), ( 80 , 1.832400711 , 0.071259005 ), ( 80 , 1.797494424 , 0.083157349 ), ( 80 , 1.799703294 , 0.108357062 ), ( 80 , 1.720862446 , 0.044229407 ), ( 80 , 1.724627188 , 0.069270763 ), ( 80 , 1.750719805 , 0.072336118 ), ( 80 , 1.68383908 , 0.078948238 ), ( 80 , 1.693179048 , 0.103367915 ), ( 80 , 1.777376651 , 0.095534968 ), ( 80 , 1.781857224 , 0.096720538 ), ( 80 , 1.759527682 , 0.106760677 ), ( 80 , 1.744833298 , 0.105713742 ), ( 80 , 1.780137231 , 0.118000258 ), ( 80 , 1.787876973 , 0.136925133 ), ( 80 , 1.735731701 , 0.113282418 ), ( 80 , 1.956645469 , 0.059214228 ), ( 80 , 1.966138414 , 0.079487638 ), ( 80 , 2.035878261 , 0.072092536 ), ( 80 , 1.999692314 , 0.086270855 ), ( 80 , 2.012209692 , 0.097622891 ), ( 80 , 1.923110562 , 0.059470274 ), ( 80 , 1.905557468 , 0.055652309 ), ( 80 , 2.077011861 , 0.11364739 ), ( 80 , 2.067124165 , 0.157101674 ), ( 80 , 2.124085213 , 0.170470028 ), ( 80 , 2.096423194 , 0.173021405 ), ( 80 , 2.09186728 , 0.173413862 ), ( 80 , 2.00346955 , 0.136676599 ), ( 80 , 2.052868658 , 0.17043654 ), ( 80 , 1.897396845 , 0.126098728 ), ( 80 , 1.850160418 , 0.143985654 ), ( 80 , 1.910014534 , 0.136067175 ), ( 80 , 1.932116605 , 0.17184055 ), ( 80 , 1.926220857 , 0.192192379 ), ( 80 , 1.80850161 , 0.19294872 ), ( 80 , 1.86354984 , 0.172423885 ), ( 80 , 1.856972669 , 0.239279445 ), ( 80 , 2.049056768 , 0.246636745 ), ( 80 , 1.982802488 , 0.246110052 ), ( 80 , 2.0149176 , 0.271969935 ), ( 80 , 1.91454802 , 0.236125427 ), ( 80 , 1.89364463 , 0.24389798 ), ( 80 , 1.911094486 , 0.274732141 ), ( 80 , 1.975900491 , 0.285275676 ), ( 80 , 1.983069956 , 0.295904422 ), ( 80 , 1.195195864 , -0.317282134 ), ( 80 , 1.158810069 , -0.286554943 ), ( 80 , 1.133982106 , -0.254669697 ), ( 80 , 1.15127903 , -0.244615538 ), ( 80 , 1.095027903 , -0.250684114 ), ( 80 , 1.170156818 , -0.214069316 ), ( 80 , 1.162568559 , -0.184153753 ), ( 80 , 1.248391409 , -0.226461957 ), ( 80 , 1.290496508 , -0.137772809 ), ( 80 , 1.26410144 , -0.111997339 ), ( 80 , 1.099948544 , -0.230785892 ), ( 80 , 1.094047175 , -0.197769515 ), ( 80 , 1.068745295 , -0.205932261 ), ( 80 , 1.115780547 , -0.15074939 ), ( 80 , 1.06682044 , -0.107736121 ), ( 80 , 1.20148218 , -0.08266789 ), ( 80 , 1.182613345 , -0.086582589 ), ( 80 , 1.186795678 , -0.076473432 ), ( 80 , 1.158923688 , -0.088865964 ), ( 80 , 1.163964409 , -0.086086665 ), ( 80 , 1.104104687 , -0.075258382 ), ( 80 , 1.134244247 , -0.077475398 ), ( 80 , 1.135521014 , -0.065511622 ), ( 80 , 1.180588718 , -0.038911542 ), ( 80 , 1.459259821 , -0.076292171 ), ( 80 , 1.441490429 , -0.057584913 ), ( 80 , 1.392905732 , -0.05363151 ), ( 80 , 1.348065064 , -0.047511444 ), ( 80 , 1.479275259 , -0.046233682 ), ( 80 , 1.467373313 , -0.028541979 ), ( 80 , 1.465206262 , -0.017224486 ), ( 80 , 1.461734489 , -0.014234173 ), ( 80 , 1.559712804 , 0.00697409 ), ( 80 , 1.527049684 , 0.002674309 ), ( 80 , 1.421220357 , -0.035610719 ), ( 80 , 1.434994445 , -0.010525707 ), ( 80 , 1.452233507 , -0.012447207 ), ( 80 , 1.437526093 , -0.000739763 ), ( 80 , 1.454881519 , 0.010844736 ), ( 80 , 1.376024453 , 0.001052557 ), ( 80 , 1.27518213 , 0.032279646 ), ( 80 , 1.295150325 , 0.026545871 ), ( 80 , 1.288528756 , 0.051711448 ), ( 80 , 1.249116966 , 0.057054615 ), ( 80 , 1.274907915 , 0.0819016 ), ( 80 , 1.407723992 , 0.04541296 ), ( 80 , 1.367536589 , 0.064355216 ), ( 80 , 1.323330525 , 0.070084832 ), ( 80 , 1.286074113 , 0.083309021 ), ( 80 , 1.359255777 , 0.099522888 ), ( 80 , 0.994078397 , -0.122625075 ), ( 80 , 1.005036768 , -0.08859676 ), ( 80 , 0.959350476 , -0.033606096 ), ( 80 , 1.129739845 , -0.016133177 ), ( 80 , 1.115405495 , 7.26855E-05 ), ( 80 , 1.139786352 , 0.015075132 ), ( 80 , 1.076402309 , 0.029378312 ), ( 80 , 1.064800177 , 0.067031249 ), ( 80 , 0.862875225 , 0.064246541 ), ( 80 , 1.015761061 , 0.030503391 ), ( 80 , 0.984263437 , 0.056543851 ), ( 80 , 0.97015833 , 0.131810021 ), ( 80 , 1.121030937 , 0.079285738 ), ( 80 , 1.183045955 , 0.127970546 ), ( 80 , 1.153113285 , 0.127757166 ), ( 80 , 1.31038361 , 0.169309179 ), ( 80 , 1.202479086 , 0.177501615 ), ( 80 , 1.2968597 , 0.188667208 ), ( 80 , 1.266055033 , 0.185081184 ), ( 80 , 1.135673119 , 0.137072203 ), ( 80 , 1.131466354 , 0.162297655 ), ( 80 , 0.990186803 , 0.166334242 ), ( 80 , 1.091009184 , 0.189300052 ), ( 80 , 1.079102276 , 0.236287241 ), ( 80 , 1.154856188 , 0.225217946 ), ( 80 , 1.176132801 , 0.242506798 ), ( 80 , 1.183969779 , 0.276029151 ), ( 80 , 1.215863084 , 0.303827103 ), ( 80 , 1.198627828 , 0.309760001 ), ( 80 , 1.153991536 , 0.294716125 ), ( 80 , 1.146456932 , 0.293054897 ), ( 80 , 1.172896754 , 0.301684887 ), ( 80 , 1.579933622 , 0.030732315 ), ( 80 , 1.636697626 , 0.067714814 ), ( 80 , 1.617101119 , 0.067574077 ), ( 80 , 1.499690947 , 0.069887299 ), ( 80 , 1.482456804 , 0.07739811 ), ( 80 , 1.47598119 , 0.086113062 ), ( 80 , 1.599927169 , 0.1174701 ), ( 80 , 1.542458736 , 0.133606873 ), ( 80 , 1.591042056 , 0.143486506 ), ( 80 , 1.571926832 , 0.156312362 ), ( 80 , 1.627661454 , 0.131496538 ), ( 80 , 1.718163424 , 0.126362771 ), ( 80 , 1.747407844 , 0.171353419 ), ( 80 , 1.706738466 , 0.173481841 ), ( 80 , 1.61473519 , 0.133132345 ), ( 80 , 1.639571026 , 0.147609484 ), ( 80 , 1.614977825 , 0.159777159 ), ( 80 , 1.629523157 , 0.178858178 ), ( 80 , 1.678175762 , 0.224460307 ), ( 80 , 1.460673431 , 0.114384849 ), ( 80 , 1.454410194 , 0.149024866 ), ( 80 , 1.435425367 , 0.176905905 ), ( 80 , 1.484381443 , 0.178939672 ), ( 80 , 1.581771342 , 0.231940457 ), ( 80 , 1.560168377 , 0.239248188 ), ( 80 , 1.634958701 , 0.254573845 ), ( 80 , 1.594234576 , 0.265107663 ), ( 80 , 1.536126785 , 0.251408924 ), ( 80 , 1.547337572 , 0.27065908 ), ( 80 , 1.585953051 , 0.317357737 ), ( 80 , 1.776062838 , 0.192833882 ), ( 80 , 1.792911869 , 0.203569932 ), ( 80 , 1.780237305 , 0.200413737 ), ( 80 , 1.761616322 , 0.210079589 ), ( 80 , 1.746457969 , 0.210339834 ), ( 80 , 1.808387453 , 0.255264157 ), ( 80 , 1.805783752 , 0.257471227 ), ( 80 , 1.828622037 , 0.279962644 ), ( 80 , 1.742199157 , 0.238864578 ), ( 80 , 1.740662255 , 0.265403133 ), ( 80 , 1.717114128 , 0.254653053 ), ( 80 , 1.797135788 , 0.289954094 ), ( 80 , 1.74788106 , 0.307880624 ), ( 80 , 1.759071464 , 0.313514746 ), ( 80 , 1.922130124 , 0.311796709 ), ( 80 , 1.897367875 , 0.323967061 ), ( 80 , 1.884153181 , 0.347066866 ), ( 80 , 1.908130881 , 0.36205859 ), ( 80 , 1.809291086 , 0.308650042 ), ( 80 , 1.815997502 , 0.328125195 ), ( 80 , 1.808025786 , 0.342000594 ), ( 80 , 1.870137738 , 0.383004811 ), ( 80 , 1.827639231 , 0.377226853 ), ( 80 , 1.836507779 , 0.384242785 ), ( 80 , 1.672947491 , 0.263575541 ), ( 80 , 1.670402063 , 0.30673475 ), ( 80 , 1.69426692 , 0.322336372 ), ( 80 , 1.696879588 , 0.353239982 ), ( 80 , 1.715979255 , 0.346336234 ), ( 80 , 1.726178075 , 0.364572184 ), ( 80 , 1.725475366 , 0.374022142 ), ( 80 , 1.642043711 , 0.316879191 ), ( 80 , 1.64128751 , 0.332574784 ), ( 80 , 1.658945651 , 0.346868155 ), ( 80 , 1.630730995 , 0.337430386 ), ( 80 , 1.660396129 , 0.368102543 ), ( 80 , 1.653678274 , 0.401445317 ), ( 80 , 1.767420486 , 0.397753019 ), ( 80 , 1.775205604 , 0.413300713 ), ( 80 , 1.757980923 , 0.405156928 ), ( 80 , 1.794912783 , 0.407768245 ), ( 80 , 1.791774798 , 0.413522568 ), ( 80 , 1.801634498 , 0.449671795 ), ( 80 , 1.688612655 , 0.414233245 ), ( 80 , 1.797207464 , 0.460764243 ), ( 80 , 1.763658007 , 0.479613727 ), ( 80 , 1.403570691 , 0.221101438 ), ( 80 , 1.346979135 , 0.263610266 ), ( 80 , 1.469659291 , 0.272593771 ), ( 80 , 1.516012315 , 0.326884517 ), ( 80 , 1.553666585 , 0.33819263 ), ( 80 , 1.538139541 , 0.344784368 ), ( 80 , 1.479756967 , 0.345026212 ), ( 80 , 1.494046724 , 0.35975569 ), ( 80 , 1.492217668 , 0.393604917 ), ( 80 , 1.491318575 , 0.399148126 ), ( 80 , 1.467968181 , 0.383843979 ), ( 80 , 1.271423544 , 0.269362569 ), ( 80 , 1.328054809 , 0.377750776 ), ( 80 , 1.252793239 , 0.322666137 ), ( 80 , 1.285551181 , 0.417793938 ), ( 80 , 1.356092179 , 0.358996677 ), ( 80 , 1.357820082 , 0.40254252 ), ( 80 , 1.365968058 , 0.425804356 ), ( 80 , 1.558286214 , 0.366122192 ), ( 80 , 1.582508752 , 0.384787863 ), ( 80 , 1.60605516 , 0.414306419 ), ( 80 , 1.632550727 , 0.418086992 ), ( 80 , 1.593019732 , 0.450310491 ), ( 80 , 1.621318871 , 0.436500282 ), ( 80 , 1.534447853 , 0.399930154 ), ( 80 , 1.509612448 , 0.41446808 ), ( 80 , 1.542700937 , 0.423887283 ), ( 80 , 1.498501647 , 0.420374118 ), ( 80 , 1.509461243 , 0.422803601 ), ( 80 , 1.583351317 , 0.451757076 ), ( 80 , 1.559109614 , 0.468681906 ), ( 80 , 1.549247525 , 0.477215048 ), ( 80 , 1.695310317 , 0.48230649 ), ( 80 , 1.668829904 , 0.504609017 ), ( 80 , 1.715139448 , 0.490112238 ), ( 80 , 1.699073897 , 0.514524309 ), ( 80 , 1.690824335 , 0.517353814 ), ( 80 , 1.613224513 , 0.510302588 ), ( 80 , 1.607917408 , 0.533599463 ), ( 80 , 1.615494361 , 0.533186161 ), ( 80 , 1.621867383 , 0.544077488 ), ( 80 , 1.617302585 , 0.557793198 ), ( 80 , 1.452809469 , 0.451936213 ), ( 80 , 1.47334026 , 0.457579292 ), ( 80 , 1.522337863 , 0.508520939 ), ( 80 , 1.52405808 , 0.51883096 ), ( 80 , 1.557724334 , 0.534237719 ), ( 80 , 1.545776168 , 0.532216777 ), ( 80 , 1.503727889 , 0.506434609 ), ( 80 , 1.449651523 , 0.509551877 ), ( 80 , 1.40936682 , 0.518865415 ), ( 80 , 1.485427886 , 0.603000489 ), ( 80 , 1.57463873 , 0.557842628 ), ( 80 , 1.55399263 , 0.61499854 ), ( 80 , 1.569894319 , 0.629102902 ), ( 80 , 3.187834224 , -0.64289006 ), ( 80 , 3.1890444 , -0.584134729 ), ( 80 , 3.078107966 , -0.656637536 ), ( 80 , 3.129612044 , -0.614239164 ), ( 80 , 3.052590504 , -0.614918436 ), ( 80 , 3.157043574 , -0.563003737 ), ( 80 , 3.127297362 , -0.563173425 ), ( 80 , 3.143350848 , -0.52947413 ), ( 80 , 3.272742636 , -0.559546819 ), ( 80 , 3.224459146 , -0.58105877 ), ( 80 , 3.176602301 , -0.54350582 ), ( 80 , 3.174810206 , -0.507241533 ), ( 80 , 3.228824555 , -0.497868351 ), ( 80 , 3.039401593 , -0.585920624 ), ( 80 , 2.987354056 , -0.509279159 ), ( 80 , 2.991912522 , -0.480815418 ), ( 80 , 3.045280721 , -0.493166054 ), ( 80 , 3.14600615 , -0.462158538 ), ( 80 , 3.091451581 , -0.437832017 ), ( 80 , 3.322714721 , -0.359830927 ), ( 80 , 3.422232059 , -0.300844411 ), ( 80 , 3.236245824 , -0.399480608 ), ( 80 , 3.259569131 , -0.390769028 ), ( 80 , 3.301601517 , -0.371871693 ), ( 80 , 3.257308204 , -0.337132956 ), ( 80 , 3.252780229 , -0.337873847 ), ( 80 , 3.1831928 , -0.367448039 ), ( 80 , 3.326637102 , -0.265951919 ), ( 80 , 3.308645496 , -0.216165525 ), ( 80 , 2.959349602 , -0.496273341 ), ( 80 , 3.005219847 , -0.460063886 ), ( 80 , 2.973347588 , -0.418781877 ), ( 80 , 3.078184632 , -0.374795699 ), ( 80 , 3.00552832 , -0.390881243 ), ( 80 , 3.086823965 , -0.335032845 ), ( 80 , 3.100053949 , -0.309621692 ), ( 80 , 3.014780364 , -0.35256198 ), ( 80 , 3.010647146 , -0.312171583 ), ( 80 , 2.982449136 , -0.307543553 ), ( 80 , 3.007406463 , -0.302956825 ), ( 80 , 2.866085295 , -0.384561043 ), ( 80 , 2.843338249 , -0.385222697 ), ( 80 , 2.855675983 , -0.353148397 ), ( 80 , 2.931687757 , -0.35164561 ), ( 80 , 2.811524532 , -0.334089975 ), ( 80 , 2.786278936 , -0.31219934 ), ( 80 , 2.973656662 , -0.221626543 ), ( 80 , 3.089910852 , -0.288828296 ), ( 80 , 3.088737593 , -0.269858905 ), ( 80 , 3.102358977 , -0.25729592 ), ( 80 , 3.279501018 , -0.193247946 ), ( 80 , 3.321134352 , -0.16136479 ), ( 80 , 3.259311144 , -0.154104323 ), ( 80 , 3.195752436 , -0.203490712 ), ( 80 , 3.205420585 , -0.156908333 ), ( 80 , 3.173081528 , -0.106182504 ), ( 80 , 3.065408969 , -0.081146314 ), ( 80 , 3.156990349 , -0.042700665 ), ( 80 , 3.099874099 , -0.042213299 ), ( 80 , 3.477450118 , -0.229666266 ), ( 80 , 3.522351723 , -0.232309638 ), ( 80 , 3.574859936 , -0.211052944 ), ( 80 , 3.497581859 , -0.205026265 ), ( 80 , 3.596512933 , -0.199610321 ), ( 80 , 3.625127562 , -0.198248472 ), ( 80 , 3.583939156 , -0.182428867 ), ( 80 , 3.419166843 , -0.202165408 ), ( 80 , 3.449332968 , -0.188752985 ), ( 80 , 3.397273279 , -0.12127109 ), ( 80 , 3.559258555 , -0.107445611 ), ( 80 , 3.520728017 , -0.103510877 ), ( 80 , 3.476117699 , -0.097281677 ), ( 80 , 3.500217684 , -0.081379342 ), ( 80 , 3.508652929 , -0.079181201 ), ( 80 , 3.573149911 , -0.044166733 ), ( 80 , 3.743515565 , -0.104219931 ), ( 80 , 3.72896223 , -0.092970337 ), ( 80 , 3.758227588 , -0.091031891 ), ( 80 , 3.826132293 , -0.074682006 ), ( 80 , 3.822198254 , 0.003836235 ), ( 80 , 3.871403691 , 0.047170654 ), ( 80 , 3.850726372 , 0.040057046 ), ( 80 , 3.646896958 , 0.026522254 ), ( 80 , 3.649847708 , 0.03916775 ), ( 80 , 3.671418568 , 0.071806269 ), ( 80 , 3.685665711 , 0.122145637 ), ( 80 , 3.726908728 , 0.137551476 ), ( 80 , 3.369401593 , -0.106298396 ), ( 80 , 3.329139818 , -0.070695955 ), ( 80 , 3.398980598 , -0.036336452 ), ( 80 , 3.369372027 , -0.01621526 ), ( 80 , 3.367912617 , 0.00147846 ), ( 80 , 3.182737612 , -0.013243925 ), ( 80 , 3.25172242 , 0.013434001 ), ( 80 , 3.288270264 , 0.073661209 ), ( 80 , 3.326028385 , 0.074920899 ), ( 80 , 3.368158562 , 0.137954862 ), ( 80 , 3.326011294 , 0.140367009 ), ( 80 , 3.477036147 , 0.090084945 ), ( 80 , 3.640677088 , 0.131645014 ), ( 80 , 3.707277614 , 0.179044058 ), ( 80 , 3.692308951 , 0.188952259 ), ( 80 , 3.639101904 , 0.241459156 ), ( 80 , 3.44416114 , 0.122110908 ), ( 80 , 3.489131416 , 0.169168014 ), ( 80 , 3.352433304 , 0.159028502 ), ( 80 , 3.521125005 , 0.207842804 ), ( 80 , 3.451911589 , 0.242772187 ), ( 80 , 3.50646446 , 0.302310685 ), ( 80 , 2.737227157 , -0.303944328 ), ( 80 , 2.901132681 , -0.205244032 ), ( 80 , 2.790362054 , -0.138983017 ), ( 80 , 2.856926878 , -0.146239806 ), ( 80 , 2.70091231 , -0.195232084 ), ( 80 , 2.709163585 , -0.1494306 ), ( 80 , 2.663360535 , -0.095475491 ), ( 80 , 2.731205428 , -0.137160042 ), ( 80 , 2.793661024 , -0.116769564 ), ( 80 , 2.760041606 , -0.07300275 ), ( 80 , 2.974827085 , -0.099808048 ), ( 80 , 2.935527905 , -0.089307257 ), ( 80 , 2.964271794 , -0.028914039 ), ( 80 , 3.031591115 , -0.043471112 ), ( 80 , 3.042454031 , -0.010088379 ), ( 80 , 2.96510035 , -0.003304799 ), ( 80 , 3.025426148 , 0.043005312 ), ( 80 , 2.865279275 , -0.020403656 ), ( 80 , 2.907982485 , -0.001940512 ), ( 80 , 2.942243338 , 0.104084017 ), ( 80 , 2.909729769 , 0.116903249 ), ( 80 , 2.552071035 , -0.116999674 ), ( 80 , 2.548857907 , -0.107872344 ), ( 80 , 2.61827336 , -0.087486956 ), ( 80 , 2.523612072 , -0.067277826 ), ( 80 , 2.476368327 , -0.066280948 ), ( 80 , 2.576098947 , -0.02482273 ), ( 80 , 2.561633598 , -0.010816145 ), ( 80 , 2.711238029 , -0.003843965 ), ( 80 , 2.434401409 , -0.059126406 ), ( 80 , 2.466628578 , -0.014613586 ), ( 80 , 2.512471629 , 0.003490957 ), ( 80 , 2.416734982 , -0.003267318 ), ( 80 , 2.435954438 , 0.012386217 ), ( 80 , 2.363142339 , -2.38635E-05 ), ( 80 , 2.36860278 , 0.007124112 ), ( 80 , 2.510740017 , 0.068148288 ), ( 80 , 2.775179579 , 0.047954917 ), ( 80 , 2.721497137 , 0.045685756 ), ( 80 , 2.786933792 , 0.10008607 ), ( 80 , 2.682235627 , 0.100344493 ), ( 80 , 2.775446264 , 0.122796782 ), ( 80 , 2.737642865 , 0.125949089 ), ( 80 , 2.841526035 , 0.160971641 ), ( 80 , 2.850858333 , 0.228960009 ), ( 80 , 2.843796865 , 0.236769784 ), ( 80 , 2.702491943 , 0.160795501 ), ( 80 , 2.702942105 , 0.173140098 ), ( 80 , 2.707183437 , 0.198143893 ), ( 80 , 2.668560856 , 0.210074765 ), ( 80 , 2.626419659 , 0.213729199 ), ( 80 , 2.637368341 , 0.237277446 ), ( 80 , 2.74224282 , 0.200538551 ), ( 80 , 2.714679586 , 0.197361638 ), ( 80 , 2.737033189 , 0.217206175 ), ( 80 , 2.797551682 , 0.294506046 ), ( 80 , 2.758022538 , 0.313977872 ), ( 80 , 3.247148966 , 0.104221142 ), ( 80 , 3.227940761 , 0.105438563 ), ( 80 , 3.217736345 , 0.115206445 ), ( 80 , 3.293722685 , 0.189125592 ), ( 80 , 3.01795146 , 0.137244016 ), ( 80 , 3.106433784 , 0.153977788 ), ( 80 , 3.165401427 , 0.19130036 ), ( 80 , 3.085986168 , 0.221033174 ), ( 80 , 3.373606565 , 0.217570772 ), ( 80 , 3.346964149 , 0.237659437 ), ( 80 , 3.318240855 , 0.284129372 ), ( 80 , 3.44705006 , 0.281833406 ), ( 80 , 3.503972031 , 0.319018912 ), ( 80 , 3.50700664 , 0.333201942 ), ( 80 , 3.368067707 , 0.33454714 ), ( 80 , 3.437925453 , 0.34788459 ), ( 80 , 3.159119654 , 0.328364538 ), ( 80 , 3.279298644 , 0.376584813 ), ( 80 , 3.273930394 , 0.383065051 ), ( 80 , 3.338219907 , 0.411787914 ), ( 80 , 3.293263905 , 0.422792025 ), ( 80 , 3.272159982 , 0.424783165 ), ( 80 , 3.298815467 , 0.443720839 ), ( 80 , 2.967743633 , 0.298704892 ), ( 80 , 3.115971385 , 0.317116195 ), ( 80 , 2.869442754 , 0.275077754 ), ( 80 , 2.792437115 , 0.315248581 ), ( 80 , 2.939466513 , 0.351302319 ), ( 80 , 2.939464033 , 0.351304796 ), ( 80 , 3.0108188 , 0.434316898 ), ( 80 , 3.010102313 , 0.435414541 ), ( 80 , 2.957299893 , 0.437227324 ), ( 80 , 2.943276888 , 0.448736802 ), ( 80 , 2.967784561 , 0.494111644 ), ( 80 , 2.93697359 , 0.472135277 ), ( 80 , 2.937853559 , 0.474287951 ), ( 80 , 3.153374296 , 0.42665869 ), ( 80 , 3.052026659 , 0.44158878 ), ( 80 , 3.101125446 , 0.490383138 ), ( 80 , 3.019415052 , 0.527764219 ), ( 80 , 3.146895199 , 0.534732993 ), ( 80 , 4.698411828 , -0.70486169 ), ( 80 , 4.752907733 , -0.6738958 ), ( 80 , 4.714500805 , -0.675984716 ), ( 80 , 4.727252538 , -0.665066282 ), ( 80 , 4.693863188 , -0.675054101 ), ( 80 , 4.672283575 , -0.67152063 ), ( 80 , 4.693386966 , -0.665819713 ), ( 80 , 4.737265065 , -0.632480017 ), ( 80 , 4.740074578 , -0.59891224 ), ( 80 , 4.690108043 , -0.612424399 ), ( 80 , 4.630618043 , -0.610332672 ), ( 80 , 4.68373605 , -0.600385769 ), ( 80 , 4.72239548 , -0.589366463 ), ( 80 , 4.69465888 , -0.598415159 ), ( 80 , 4.742327647 , -0.554271618 ), ( 80 , 4.796623087 , -0.606341006 ), ( 80 , 4.833418352 , -0.560521028 ), ( 80 , 4.782339429 , -0.589190135 ), ( 80 , 4.836433559 , -0.543371536 ), ( 80 , 4.751593654 , -0.543847775 ), ( 80 , 4.75644351 , -0.53630015 ), ( 80 , 4.783687619 , -0.504954174 ), ( 80 , 4.84719289 , -0.487850468 ), ( 80 , 4.770500546 , -0.474994731 ), ( 80 , 4.602484799 , -0.609278128 ), ( 80 , 4.598668575 , -0.594755428 ), ( 80 , 4.63507189 , -0.567635452 ), ( 80 , 4.675717406 , -0.548261072 ), ( 80 , 4.692679798 , -0.523978719 ), ( 80 , 4.573622245 , -0.544668795 ), ( 80 , 4.588443806 , -0.527886824 ), ( 80 , 4.56451219 , -0.49819314 ), ( 80 , 4.615278433 , -0.496324736 ), ( 80 , 4.728900275 , -0.501514586 ), ( 80 , 4.728412139 , -0.46894325 ), ( 80 , 4.683063035 , -0.482217991 ), ( 80 , 4.70920265 , -0.450624327 ), ( 80 , 4.759232527 , -0.388156948 ), ( 80 , 4.677124262 , -0.449825003 ), ( 80 , 4.654342552 , -0.413377542 ), ( 80 , 4.66166939 , -0.405486321 ), ( 80 , 4.720420631 , -0.421619766 ), ( 80 , 4.741923651 , -0.392080078 ), ( 80 , 4.747977998 , -0.388760078 ), ( 80 , 4.742169724 , -0.384787279 ), ( 80 , 4.723963047 , -0.375395548 ), ( 80 , 4.921455206 , -0.472739702 ), ( 80 , 4.907608865 , -0.450268272 ), ( 80 , 4.980295401 , -0.405408228 ), ( 80 , 4.872967908 , -0.458842478 ), ( 80 , 4.844732471 , -0.445931266 ), ( 80 , 4.859658215 , -0.444170367 ), ( 80 , 4.866594121 , -0.38555996 ), ( 80 , 5.016299221 , -0.349782067 ), ( 80 , 5.031578576 , -0.356429348 ), ( 80 , 4.953224491 , -0.353550566 ), ( 80 , 4.989689113 , -0.328220114 ), ( 80 , 4.952477713 , -0.342754396 ), ( 80 , 4.790711827 , -0.389967541 ), ( 80 , 4.858482287 , -0.355496033 ), ( 80 , 4.849412476 , -0.334381647 ), ( 80 , 4.817786216 , -0.341685347 ), ( 80 , 4.817369447 , -0.33848636 ), ( 80 , 4.831072043 , -0.330805362 ), ( 80 , 4.784944851 , -0.328231498 ), ( 80 , 4.758348812 , -0.3099286 ), ( 80 , 4.872512638 , -0.300315537 ), ( 80 , 4.916783165 , -0.260284303 ), ( 80 , 4.953456934 , -0.274869084 ), ( 80 , 4.854763791 , -0.274045624 ), ( 80 , 4.863160917 , -0.254274107 ), ( 80 , 4.860072653 , -0.251778608 ), ( 80 , 4.526772715 , -0.484623685 ), ( 80 , 4.504655129 , -0.40012132 ), ( 80 , 4.628751347 , -0.416019085 ), ( 80 , 4.57394091 , -0.365882065 ), ( 80 , 4.549096727 , -0.34238373 ), ( 80 , 4.598861481 , -0.311303513 ), ( 80 , 4.427201721 , -0.381871938 ), ( 80 , 4.393657735 , -0.350897242 ), ( 80 , 4.548221838 , -0.302649167 ), ( 80 , 4.505494877 , -0.264656122 ), ( 80 , 4.478379151 , -0.21661134 ), ( 80 , 4.768259422 , -0.289300262 ), ( 80 , 4.761163121 , -0.277420219 ), ( 80 , 4.780801773 , -0.27739884 ), ( 80 , 4.764087747 , -0.273665454 ), ( 80 , 4.788455495 , -0.259166005 ), ( 80 , 4.741065421 , -0.261333025 ), ( 80 , 4.788648712 , -0.222076469 ), ( 80 , 4.794615283 , -0.217364827 ), ( 80 , 4.852872151 , -0.163545522 ), ( 80 , 4.745390571 , -0.16018498 ), ( 80 , 4.791545984 , -0.150686678 ), ( 80 , 4.612994539 , -0.244367214 ), ( 80 , 4.622802937 , -0.196646561 ), ( 80 , 4.580640694 , -0.194500351 ), ( 80 , 4.555152232 , -0.163334616 ), ( 80 , 4.617054375 , -0.141972718 ), ( 80 , 4.798808293 , -0.086595109 ), ( 80 , 4.687371247 , -0.073512586 ), ( 80 , 4.724565852 , -0.023326261 ), ( 80 , 5.119657619 , -0.28990485 ), ( 80 , 5.074519848 , -0.305804062 ), ( 80 , 5.063771298 , -0.29748131 ), ( 80 , 5.051286683 , -0.278642146 ), ( 80 , 5.059472929 , -0.247026917 ), ( 80 , 5.097263691 , -0.211979417 ), ( 80 , 5.178838231 , -0.212024117 ), ( 80 , 5.186510396 , -0.211578411 ), ( 80 , 5.16266044 , -0.186414774 ), ( 80 , 5.138231408 , -0.169839449 ), ( 80 , 5.053501537 , -0.199816383 ), ( 80 , 4.976656294 , -0.141525942 ), ( 80 , 5.012951241 , -0.132961707 ), ( 80 , 5.010605425 , -0.129813805 ), ( 80 , 5.133749309 , -0.083281051 ), ( 80 , 5.121341794 , -0.08276224 ), ( 80 , 5.156550083 , -0.074864089 ), ( 80 , 5.069223805 , -0.032102806 ), ( 80 , 5.109448098 , -0.035512888 ), ( 80 , 5.286661906 , -0.127388082 ), ( 80 , 5.274020101 , -0.122532856 ), ( 80 , 5.315550384 , -0.110169392 ), ( 80 , 5.369377224 , -0.094067106 ), ( 80 , 5.358066517 , -0.08865072 ), ( 80 , 5.330508468 , -0.083874921 ), ( 80 , 5.310045559 , -0.021151675 ), ( 80 , 5.297055446 , -0.015098306 ), ( 80 , 5.426746132 , -0.042761583 ), ( 80 , 5.422111485 , -0.041230626 ), ( 80 , 5.378573332 , -0.025504094 ), ( 80 , 5.447400756 , 0.003411647 ), ( 80 , 5.352389982 , 0.033440677 ), ( 80 , 5.406264885 , 0.02092032 ), ( 80 , 5.222996999 , -0.017228695 ), ( 80 , 5.272689479 , -0.005193639 ), ( 80 , 5.285220917 , -0.002441714 ), ( 80 , 5.172465822 , -0.002538624 ), ( 80 , 5.292026268 , 0.057704357 ), ( 80 , 5.298073058 , 0.066422716 ), ( 80 , 5.34597401 , 0.055061269 ), ( 80 , 5.28150474 , 0.097467387 ), ( 80 , 4.939859148 , -0.126687827 ), ( 80 , 4.984675079 , -0.096808066 ), ( 80 , 4.87146513 , -0.079876501 ), ( 80 , 5.004514585 , -0.030267072 ), ( 80 , 5.076844712 , -0.009435303 ), ( 80 , 5.08892652 , -0.001735945 ), ( 80 , 4.945676109 , 0.015189249 ), ( 80 , 5.018538213 , 0.041143211 ), ( 80 , 4.795377528 , -0.055301237 ), ( 80 , 4.858687261 , 0.033223927 ), ( 80 , 4.753920366 , 0.006826092 ), ( 80 , 4.761265633 , 0.034584541 ), ( 80 , 4.907135672 , 0.032716346 ), ( 80 , 4.875663936 , 0.045890123 ), ( 80 , 4.889194 , 0.046850496 ), ( 80 , 4.896102115 , 0.070411092 ), ( 80 , 4.942213282 , 0.070742845 ), ( 80 , 4.836312454 , 0.065969823 ), ( 80 , 4.834791912 , 0.100532864 ), ( 80 , 4.914530336 , 0.08993736 ), ( 80 , 4.874950502 , 0.131390444 ), ( 80 , 4.887233244 , 0.135487835 ), ( 80 , 4.907096842 , 0.139237658 ), ( 80 , 5.196095314 , 0.077586323 ), ( 80 , 5.026487692 , 0.076005843 ), ( 80 , 5.03860768 , 0.080634068 ), ( 80 , 5.029273642 , 0.092461069 ), ( 80 , 5.112716707 , 0.119705511 ), ( 80 , 5.121440775 , 0.136649176 ), ( 80 , 5.098145975 , 0.145871709 ), ( 80 , 5.147229699 , 0.13690522 ), ( 80 , 5.129560483 , 0.162668199 ), ( 80 , 5.114557136 , 0.171420481 ), ( 80 , 5.164241128 , 0.213054014 ), ( 80 , 5.166618122 , 0.215939816 ), ( 80 , 5.033140491 , 0.116089004 ), ( 80 , 5.066623382 , 0.171327888 ), ( 80 , 5.081908442 , 0.176040089 ), ( 80 , 5.039742886 , 0.171174163 ), ( 80 , 5.061212183 , 0.1935973 ), ( 80 , 4.982038037 , 0.199930436 ), ( 80 , 4.993295334 , 0.226840149 ), ( 80 , 5.138217076 , 0.221483154 ), ( 80 , 5.100701235 , 0.217655806 ), ( 80 , 5.194174591 , 0.253314189 ), ( 80 , 5.0679343 , 0.231388391 ), ( 80 , 5.062300302 , 0.246766207 ), ( 80 , 5.096575114 , 0.245608935 ), ( 80 , 5.026064484 , 0.254506552 ), ( 80 , 4.399321373 , -0.268094392 ), ( 80 , 4.336487755 , -0.252492849 ), ( 80 , 4.287300215 , -0.197640153 ), ( 80 , 4.442037285 , -0.21091987 ), ( 80 , 4.442750047 , -0.184060199 ), ( 80 , 4.415630555 , -0.154700802 ), ( 80 , 4.200606504 , -0.148255057 ), ( 80 , 4.182629891 , -0.116997006 ), ( 80 , 4.212588094 , -0.109788448 ), ( 80 , 4.305179693 , -0.152333718 ), ( 80 , 4.349398183 , -0.109856534 ), ( 80 , 4.537139951 , -0.0706713 ), ( 80 , 4.482194919 , -0.050048321 ), ( 80 , 4.530205471 , -0.013350624 ), ( 80 , 4.63599886 , -0.042305126 ), ( 80 , 4.602775969 , -0.028016122 ), ( 80 , 4.661201023 , -0.017742704 ), ( 80 , 4.551101427 , 0.014671494 ), ( 80 , 4.61721115 , 0.078386394 ), ( 80 , 4.424997232 , -0.075764328 ), ( 80 , 4.422157586 , -0.01973338 ), ( 80 , 4.386150517 , -0.017370423 ), ( 80 , 4.433542962 , 0.024791627 ), ( 80 , 4.421126166 , 0.052721343 ), ( 80 , 4.547267316 , 0.090998791 ), ( 80 , 4.522507311 , 0.089506742 ), ( 80 , 4.541370177 , 0.112323656 ), ( 80 , 4.153161474 , -0.140384577 ), ( 80 , 4.176240021 , -0.119177554 ), ( 80 , 4.050836813 , -0.104770646 ), ( 80 , 4.156323992 , -0.033270396 ), ( 80 , 4.255379847 , -0.011140701 ), ( 80 , 4.241851264 , -0.001931816 ), ( 80 , 4.1564321 , -0.018003214 ), ( 80 , 4.090530327 , -0.015442897 ), ( 80 , 4.084131378 , 0.001174978 ), ( 80 , 4.007537711 , -0.013731692 ), ( 80 , 3.989603166 , 0.006450758 ), ( 80 , 3.969292816 , 0.012621912 ), ( 80 , 4.164396515 , 0.057416986 ), ( 80 , 4.296145571 , 0.020251485 ), ( 80 , 4.317846215 , 0.079863631 ), ( 80 , 4.336163095 , 0.132120429 ), ( 80 , 4.31451316 , 0.146625433 ), ( 80 , 4.419852675 , 0.19724196 ), ( 80 , 4.238464464 , 0.130300106 ), ( 80 , 4.20554906 , 0.143639071 ), ( 80 , 4.269828145 , 0.126720789 ), ( 80 , 4.292577213 , 0.202296754 ), ( 80 , 4.407091551 , 0.244936505 ), ( 80 , 4.35138469 , 0.274204377 ), ( 80 , 4.370572772 , 0.278409975 ), ( 80 , 4.314760181 , 0.321426736 ), ( 80 , 4.322682911 , 0.325226694 ), ( 80 , 4.679971595 , 0.02984061 ), ( 80 , 4.731429432 , 0.060809498 ), ( 80 , 4.656387854 , 0.077302204 ), ( 80 , 4.698364027 , 0.076391977 ), ( 80 , 4.655823624 , 0.099340228 ), ( 80 , 4.820398754 , 0.126209454 ), ( 80 , 4.830329382 , 0.134961106 ), ( 80 , 4.826544477 , 0.153141398 ), ( 80 , 4.842748595 , 0.160527716 ), ( 80 , 4.773556901 , 0.164790501 ), ( 80 , 4.771777875 , 0.170575346 ), ( 80 , 4.802289358 , 0.176348875 ), ( 80 , 4.600613159 , 0.113816036 ), ( 80 , 4.598418158 , 0.14143033 ), ( 80 , 4.602975993 , 0.164461261 ), ( 80 , 4.611664433 , 0.175226855 ), ( 80 , 4.589439662 , 0.208251796 ), ( 80 , 4.740452678 , 0.215514648 ), ( 80 , 4.676912921 , 0.209578259 ), ( 80 , 4.708845394 , 0.242686994 ), ( 80 , 4.763159961 , 0.219044969 ), ( 80 , 4.725507417 , 0.261841856 ), ( 80 , 4.759170692 , 0.280242844 ), ( 80 , 4.711121065 , 0.252433867 ), ( 80 , 4.656331201 , 0.262447752 ), ( 80 , 4.703813364 , 0.268898928 ), ( 80 , 4.688657438 , 0.28464576 ), ( 80 , 4.896002659 , 0.20525554 ), ( 80 , 4.978973392 , 0.273731755 ), ( 80 , 4.861755484 , 0.252520013 ), ( 80 , 4.879007102 , 0.264667059 ), ( 80 , 5.036417953 , 0.332726608 ), ( 80 , 4.924703571 , 0.345737261 ), ( 80 , 4.958091876 , 0.346407464 ), ( 80 , 5.024281007 , 0.390658949 ), ( 80 , 4.807678105 , 0.27270584 ), ( 80 , 4.793271913 , 0.32079509 ), ( 80 , 4.758683293 , 0.319202945 ), ( 80 , 4.776620028 , 0.332471035 ), ( 80 , 4.901778575 , 0.403364536 ), ( 80 , 4.934201099 , 0.408833782 ), ( 80 , 4.967849519 , 0.454862627 ), ( 80 , 4.961312852 , 0.453775775 ), ( 80 , 4.841505356 , 0.454758374 ), ( 80 , 4.915774212 , 0.445738062 ), ( 80 , 4.941942168 , 0.465809187 ), ( 80 , 4.941085166 , 0.46679795 ), ( 80 , 4.505616949 , 0.202384831 ), ( 80 , 4.52590127 , 0.242055791 ), ( 80 , 4.543743655 , 0.237898661 ), ( 80 , 4.561495481 , 0.271383533 ), ( 80 , 4.484130242 , 0.265472886 ), ( 80 , 4.463262432 , 0.25591603 ), ( 80 , 4.539664496 , 0.280982256 ), ( 80 , 4.541188397 , 0.297403688 ), ( 80 , 4.512963665 , 0.298180832 ), ( 80 , 4.512407552 , 0.334752082 ), ( 80 , 4.639380905 , 0.308744116 ), ( 80 , 4.602350315 , 0.334007365 ), ( 80 , 4.586518663 , 0.352331884 ), ( 80 , 4.620188388 , 0.388766333 ), ( 80 , 4.443659726 , 0.351594679 ), ( 80 , 4.391338518 , 0.349468224 ), ( 80 , 4.353430733 , 0.341332772 ), ( 80 , 4.515155549 , 0.420261625 ), ( 80 , 4.584387939 , 0.419596678 ), ( 80 , 4.49260431 , 0.411516196 ), ( 80 , 4.449137396 , 0.422439724 ), ( 80 , 4.459470753 , 0.436997557 ), ( 80 , 4.738096462 , 0.404017295 ), ( 80 , 4.671175523 , 0.405890557 ), ( 80 , 4.677903961 , 0.458851569 ), ( 80 , 4.73493112 , 0.481091404 ), ( 80 , 4.799977312 , 0.513967678 ), ( 80 , 4.808333387 , 0.52440666 ), ( 80 , 4.756215632 , 0.538259238 ), ( 80 , 4.820029051 , 0.579174684 ), ( 80 , 4.632082495 , 0.492405352 ), ( 80 , 4.681306768 , 0.518021775 ), ( 80 , 4.632208837 , 0.516596255 ), ( 80 , 4.600505498 , 0.519459026 ), ( 80 , 4.75774095 , 0.603160528 ), ( 80 , 4.658975975 , 0.60952599 ), ( 80 , 4.640759792 , 0.606932921 ), ( 80 , 4.67368544 , 0.670949931 ), ( 80 , 4.719745543 , 0.701244691 ), ( 80 , 0.476534814 , -1.542126873 ), ( 80 , 1.05921831 , -1.50526284 ), ( 80 , 0.544257814 , -1.436394462 ), ( 80 , 0.910002303 , -1.408635558 ), ( 80 , 0.786456029 , -1.415253545 ), ( 80 , 1.236229878 , -1.440235482 ), ( 80 , 1.076595533 , -1.409129094 ), ( 80 , 1.183175261 , -1.372399737 ), ( 80 , 1.536471133 , -1.371612356 ), ( 80 , 1.278638919 , -1.368364352 ), ( 80 , 0.988556113 , -1.338944557 ), ( 80 , 0.445926284 , -1.394737632 ), ( 80 , 0.755200044 , -1.358969116 ), ( 80 , 0.572433816 , -1.33165861 ), ( 80 , 0.01755185 , -1.40316164 ), ( 80 , 0.344897021 , -1.344437668 ), ( 80 , 0.023451693 , -1.383230899 ), ( 80 , 0.043966604 , -1.378842688 ), ( 80 , 0.034876917 , -1.365040125 ), ( 80 , 0.654870346 , -1.322686749 ), ( 80 , 0.855796788 , -1.283668784 ), ( 80 , 0.809027455 , -1.256706993 ), ( 80 , 0.61377391 , -1.279550262 ), ( 80 , 0.668002618 , -1.264378679 ), ( 80 , 0.793553279 , -1.216214079 ), ( 80 , 1.493421362 , -1.323493131 ), ( 80 , 1.401577434 , -1.325009726 ), ( 80 , 1.414912822 , -1.302585434 ), ( 80 , 1.549975618 , -1.276721504 ), ( 80 , 1.436182623 , -1.236136595 ), ( 80 , 1.209602304 , -1.288804478 ), ( 80 , 1.209961802 , -1.26495655 ), ( 80 , 1.164838045 , -1.267700997 ), ( 80 , 1.159666211 , -1.221619611 ), ( 80 , 1.133482166 , -1.206379667 ), ( 80 , 1.329718664 , -1.126534528 ), ( 80 , 1.337974625 , -1.102153156 ), ( 80 , 1.253385271 , -1.096576158 ), ( 80 , 1.287680986 , -1.095977321 ), ( 80 , 0.94656391 , -1.194469397 ), ( 80 , 0.819186709 , -1.150515075 ), ( 80 , 0.9950151 , -1.131600513 ), ( 80 , 1.135850813 , -1.102590837 ), ( 80 , 1.130942545 , -1.025320909 ), ( 80 , 1.011041171 , -1.053485265 ), ( 80 , 1.071292471 , -1.020635716 ), ( 80 , 0.088468506 , -1.347786532 ), ( 80 , 0.163148218 , -1.319585628 ), ( 80 , 0.265712317 , -1.268812127 ), ( 80 , 0.268574577 , -1.24878018 ), ( 80 , 0.603201652 , -1.183135041 ), ( 80 , 0.528109551 , -1.136369023 ), ( 80 , 0.585675562 , -1.113442716 ), ( 80 , 0.072120705 , -1.163958415 ), ( 80 , 0.077625075 , -1.158182027 ), ( 80 , 0.100671187 , -1.136584632 ), ( 80 , 0.252348304 , -1.113065035 ), ( 80 , 0.612072093 , -1.059079548 ), ( 80 , 0.806493732 , -1.137683132 ), ( 80 , 0.878784119 , -1.073175468 ), ( 80 , 0.904437017 , -1.069167831 ), ( 80 , 0.803455943 , -1.065455423 ), ( 80 , 0.802110038 , -1.061870397 ), ( 80 , 0.701297892 , -1.014696009 ), ( 80 , 0.806836982 , -0.997742698 ), ( 80 , 0.925190889 , -0.915848984 ), ( 80 , 0.885226866 , -0.895563426 ), ( 80 , 0.69264024 , -0.924160734 ), ( 80 , 0.628561024 , -0.948788081 ), ( 80 , 0.78085322 , -0.93705695 ), ( 80 , 0.806247644 , -0.922043626 ), ( 80 , 0.839736798 , -0.811415916 ), ( 80 , 1.53000054 , -1.139000921 ), ( 80 , 1.533777218 , -1.10882827 ), ( 80 , 1.476728049 , -1.067561729 ), ( 80 , 1.302628346 , -1.032049295 ), ( 80 , 1.30999499 , -1.005442597 ), ( 80 , 1.490733152 , -0.985026927 ), ( 80 , 1.533616708 , -0.936473278 ), ( 80 , 1.408906989 , -0.991628942 ), ( 80 , 1.432735779 , -0.940476405 ), ( 80 , 1.421188248 , -0.933405917 ), ( 80 , 1.281102885 , -1.000636079 ), ( 80 , 1.28113494 , -0.913313451 ), ( 80 , 1.320042355 , -0.880434158 ), ( 80 , 1.322935561 , -0.87828483 ), ( 80 , 1.312330044 , -0.83084566 ), ( 80 , 1.264437511 , -0.843190514 ), ( 80 , 1.268308544 , -0.797060908 ), ( 80 , 1.242712146 , -0.777584567 ), ( 80 , 1.213755238 , -0.778872633 ), ( 80 , 1.515950998 , -0.850822844 ), ( 80 , 1.470215214 , -0.837141903 ), ( 80 , 1.361298446 , -0.825083731 ), ( 80 , 1.3984329 , -0.829343693 ), ( 80 , 1.438059376 , -0.781490804 ), ( 80 , 1.524427338 , -0.77985429 ), ( 80 , 1.440419777 , -0.760602294 ), ( 80 , 1.445034408 , -0.738297848 ), ( 80 , 1.389462341 , -0.716362476 ), ( 80 , 1.477454211 , -0.720762061 ), ( 80 , 1.486629893 , -0.638523419 ), ( 80 , 1.303817892 , -0.790463592 ), ( 80 , 1.304651144 , -0.7573479 ), ( 80 , 1.345827171 , -0.714055022 ), ( 80 , 1.313105777 , -0.733090919 ), ( 80 , 1.295826449 , -0.732750065 ), ( 80 , 1.309562669 , -0.716419027 ), ( 80 , 1.330302761 , -0.690466047 ), ( 80 , 1.262011602 , -0.725831775 ), ( 80 , 1.237113688 , -0.728738739 ), ( 80 , 1.421940572 , -0.617026463 ), ( 80 , 0.982671394 , -0.894651176 ), ( 80 , 1.033725644 , -0.86845051 ), ( 80 , 1.00790597 , -0.846951116 ), ( 80 , 1.082946701 , -0.843793601 ), ( 80 , 1.011652079 , -0.805684584 ), ( 80 , 1.150796996 , -0.758465403 ), ( 80 , 1.117446159 , -0.691498117 ), ( 80 , 1.093008115 , -0.707483122 ), ( 80 , 0.891386079 , -0.787083829 ), ( 80 , 0.900463335 , -0.747628775 ), ( 80 , 0.978742327 , -0.731253696 ), ( 80 , 0.897571337 , -0.721261855 ), ( 80 , 0.858456234 , -0.720311719 ), ( 80 , 0.885475005 , -0.720053123 ), ( 80 , 0.897042915 , -0.668677695 ), ( 80 , 0.876939231 , -0.65362427 ), ( 80 , 0.875317553 , -0.641855771 ), ( 80 , 0.938572285 , -0.627229497 ), ( 80 , 0.96014632 , -0.603021745 ), ( 80 , 0.973724637 , -0.567740066 ), ( 80 , 1.249833001 , -0.62492936 ), ( 80 , 1.15801688 , -0.622664004 ), ( 80 , 1.102045565 , -0.630821973 ), ( 80 , 1.138406024 , -0.606202886 ), ( 80 , 1.129205836 , -0.595524899 ), ( 80 , 1.172025012 , -0.566630872 ), ( 80 , 1.2732478 , -0.580652293 ), ( 80 , 1.261986283 , -0.548502762 ), ( 80 , 1.217115401 , -0.487149568 ), ( 80 , 1.285782368 , -0.504064056 ), ( 80 , 1.251516801 , -0.459065122 ), ( 80 , 1.031833399 , -0.553189131 ), ( 80 , 1.06845738 , -0.527472519 ), ( 80 , 0.994560791 , -0.525294343 ), ( 80 , 1.086255586 , -0.504571283 ), ( 80 , 1.088776329 , -0.454146225 ), ( 80 , 1.093827345 , -0.443784924 ), ( 80 , 1.176887516 , -0.506669177 ), ( 80 , 1.173309649 , -0.439733631 ), ( 80 , 1.132616704 , -0.453023134 ), ( 80 , 1.149025026 , -0.44325886 ), ( 80 , 1.181618189 , -0.408541886 ), ( 80 , 0.194336578 , -1.090783368 ), ( 80 , 0.213253406 , -1.053647934 ), ( 80 , 0.25887495 , -1.019362478 ), ( 80 , 0.417599443 , -0.964061945 ), ( 80 , 0.020676517 , -0.992064271 ), ( 80 , 0.052461912 , -0.955582823 ), ( 80 , 0.072170043 , -0.968127716 ), ( 80 , 0.125169061 , -0.950002428 ), ( 80 , 0.084542428 , -0.939757631 ), ( 80 , 0.16597907 , -0.885475214 ), ( 80 , 0.403848919 , -0.864435592 ), ( 80 , 0.423776199 , -0.842849043 ), ( 80 , 0.237352979 , -0.854315814 ), ( 80 , 0.368989198 , -0.797985339 ), ( 80 , 0.399201457 , -0.779399744 ), ( 80 , 0.407768162 , -0.766214546 ), ( 80 , 0.531968903 , -0.874880734 ), ( 80 , 0.565656527 , -0.848213555 ), ( 80 , 0.572820758 , -0.813063097 ), ( 80 , 0.727620107 , -0.714866497 ), ( 80 , 0.723221413 , -0.693187313 ), ( 80 , 0.682051831 , -0.675960812 ), ( 80 , 0.700448703 , -0.63693678 ), ( 80 , 0.670170018 , -0.652882155 ), ( 80 , 0.542848677 , -0.759353097 ), ( 80 , 0.534527981 , -0.707212744 ), ( 80 , 0.622157696 , -0.687898626 ), ( 80 , 0.651714537 , -0.627300752 ), ( 80 , 0.50587414 , -0.632601658 ), ( 80 , 0.544064036 , -0.615635021 ), ( 80 , 0.56377383 , -0.555172982 ), ( 80 , 0.103533884 , -0.861456847 ), ( 80 , 0.199383625 , -0.84302073 ), ( 80 , 0.135678209 , -0.848947481 ), ( 80 , 0.070368724 , -0.847458752 ), ( 80 , 0.136953409 , -0.801133347 ), ( 80 , 0.269298385 , -0.806613711 ), ( 80 , 0.272344575 , -0.769675395 ), ( 80 , 0.301250855 , -0.740051395 ), ( 80 , 0.288213092 , -0.73017852 ), ( 80 , 0.146635709 , -0.675199807 ), ( 80 , 0.207285099 , -0.644770561 ), ( 80 , 0.200516108 , -0.535975565 ), ( 80 , 0.337568057 , -0.65048499 ), ( 80 , 0.491202038 , -0.596804053 ), ( 80 , 0.525005072 , -0.560033155 ), ( 80 , 0.489529167 , -0.567927579 ), ( 80 , 0.460562014 , -0.460717278 ), ( 80 , 0.321752624 , -0.543082651 ), ( 80 , 0.474375147 , -0.416604668 ), ( 80 , 0.925970878 , -0.563883463 ), ( 80 , 0.843878024 , -0.505712431 ), ( 80 , 0.841612527 , -0.502188415 ), ( 80 , 0.890400888 , -0.454431249 ), ( 80 , 0.670256986 , -0.57293137 ), ( 80 , 0.761912826 , -0.520854917 ), ( 80 , 0.62499542 , -0.521338664 ), ( 80 , 0.631652034 , -0.500067353 ), ( 80 , 0.714520574 , -0.486933014 ), ( 80 , 0.668835297 , -0.458864913 ), ( 80 , 0.841813728 , -0.458302652 ), ( 80 , 0.773268968 , -0.435901919 ), ( 80 , 0.78617058 , -0.363076694 ), ( 80 , 0.996801005 , -0.413586518 ), ( 80 , 1.097694868 , -0.355005526 ), ( 80 , 1.055350868 , -0.357356469 ), ( 80 , 1.058156481 , -0.340312593 ), ( 80 , 1.016445374 , -0.322181542 ), ( 80 , 0.895406998 , -0.367780786 ), ( 80 , 0.954794225 , -0.352830777 ), ( 80 , 0.957811698 , -0.331581677 ), ( 80 , 0.943424002 , -0.323772434 ), ( 80 , 0.828202753 , -0.339631055 ), ( 80 , 1.024622722 , -0.296882235 ), ( 80 , 0.894533299 , -0.246369839 ), ( 80 , 0.952697854 , -0.195498554 ), ( 80 , 0.980579139 , -0.178878608 ), ( 80 , 0.534897179 , -0.466724901 ), ( 80 , 0.582944667 , -0.432666679 ), ( 80 , 0.533161615 , -0.419569555 ), ( 80 , 0.6632345 , -0.40289847 ), ( 80 , 0.648812017 , -0.345555862 ), ( 80 , 0.681095251 , -0.299248424 ), ( 80 , 0.532081948 , -0.289180949 ), ( 80 , 0.591090458 , -0.278833127 ), ( 80 , 0.668703458 , -0.250673097 ), ( 80 , 0.545369035 , -0.273639994 ), ( 80 , 0.836792992 , -0.260504981 ), ( 80 , 0.854741485 , -0.258307742 ), ( 80 , 0.866940442 , -0.248777182 ), ( 80 , 0.851984785 , -0.226670091 ), ( 80 , 0.770035374 , -0.262151887 ), ( 80 , 0.796144694 , -0.236170808 ), ( 80 , 0.783325248 , -0.186427574 ), ( 80 , 0.789344176 , -0.175157402 ), ( 80 , 0.887762433 , -0.248194787 ), ( 80 , 0.932358585 , -0.129659647 ), ( 80 , 0.882214801 , -0.089670753 ), ( 80 , 0.695027935 , -0.205041874 ), ( 80 , 0.737099298 , -0.090225465 ), ( 80 , 0.734685247 , -0.085888444 ), ( 80 , 0.781646542 , -0.083486143 ), ( 80 , 0.779559703 , -0.073457305 ), ( 80 , 0.785842036 , -0.011913465 ), ( 80 , 2.138509201 , -1.473838831 ), ( 80 , 2.893000875 , -1.42456188 ), ( 80 , 2.872963155 , -1.410822658 ), ( 80 , 2.730500061 , -1.371792543 ), ( 80 , 2.465302234 , -1.348304928 ), ( 80 , 2.463154216 , -1.339114851 ), ( 80 , 2.67244343 , -1.327804174 ), ( 80 , 2.614012034 , -1.270402066 ), ( 80 , 1.813899325 , -1.410885329 ), ( 80 , 1.623269845 , -1.423305398 ), ( 80 , 2.085013147 , -1.389851683 ), ( 80 , 2.220253262 , -1.377522646 ), ( 80 , 2.28177257 , -1.345958374 ), ( 80 , 2.34057339 , -1.333276175 ), ( 80 , 2.55041558 , -1.2898031 ), ( 80 , 2.206310347 , -1.240065609 ), ( 80 , 2.89190323 , -1.319367859 ), ( 80 , 2.859404827 , -1.312354632 ), ( 80 , 3.137382716 , -1.291692223 ), ( 80 , 3.061763708 , -1.2480208 ), ( 80 , 2.988736144 , -1.253328442 ), ( 80 , 2.93888586 , -1.232863151 ), ( 80 , 2.776588794 , -1.265507338 ), ( 80 , 2.870143749 , -1.241058219 ), ( 80 , 2.785651151 , -1.209052297 ), ( 80 , 2.934706355 , -1.18693965 ), ( 80 , 3.140780175 , -1.192661043 ), ( 80 , 2.885568906 , -1.180146214 ), ( 80 , 2.817949594 , -1.07520614 ), ( 80 , 2.684585604 , -1.215383132 ), ( 80 , 2.565135958 , -1.166975566 ), ( 80 , 2.577921387 , -1.142257017 ), ( 80 , 2.445653938 , -1.160453205 ), ( 80 , 2.714827357 , -1.146508463 ), ( 80 , 2.764056834 , -1.140893576 ), ( 80 , 2.641215624 , -1.096975423 ), ( 80 , 2.650659441 , -1.086288297 ), ( 80 , 2.76942709 , -1.051945437 ), ( 80 , 2.730386958 , -1.061728126 ), ( 80 , 2.714194284 , -1.025916698 ), ( 80 , 2.622606566 , -1.052315023 ), ( 80 , 2.55689735 , -1.029694625 ), ( 80 , 2.575426703 , -1.01309092 ), ( 80 , 2.687267643 , -1.001382564 ), ( 80 , 2.619739356 , -1.013282145 ), ( 80 , 2.597872292 , -0.982573135 ), ( 80 , 2.635530666 , -0.975781542 ), ( 80 , 2.627147894 , -0.959612327 ), ( 80 , 1.637152203 , -1.344815156 ), ( 80 , 2.021675508 , -1.222862722 ), ( 80 , 1.714930068 , -1.287201825 ), ( 80 , 1.91767367 , -1.225373416 ), ( 80 , 1.942346561 , -1.228777013 ), ( 80 , 1.993695773 , -1.195735962 ), ( 80 , 2.14794374 , -1.243838509 ), ( 80 , 2.128665654 , -1.219970817 ), ( 80 , 2.283850371 , -1.133304353 ), ( 80 , 2.183996046 , -1.117167614 ), ( 80 , 2.239763287 , -1.114293206 ), ( 80 , 2.255305363 , -1.110510503 ), ( 80 , 2.222692098 , -1.104382596 ), ( 80 , 1.578429759 , -1.259212048 ), ( 80 , 1.707177397 , -1.179506807 ), ( 80 , 1.866553683 , -1.18572096 ), ( 80 , 1.932171789 , -1.161320178 ), ( 80 , 1.7518727 , -1.142651155 ), ( 80 , 1.887054728 , -1.071315813 ), ( 80 , 1.950129618 , -1.14489157 ), ( 80 , 2.067354779 , -1.088731676 ), ( 80 , 2.045493868 , -1.067480619 ), ( 80 , 2.174605412 , -1.052627987 ), ( 80 , 2.087286369 , -1.06213974 ), ( 80 , 2.080917107 , -1.057641524 ), ( 80 , 1.950404023 , -1.039840936 ), ( 80 , 2.010807382 , -1.027486889 ), ( 80 , 2.069163237 , -1.022334145 ), ( 80 , 2.087886321 , -0.952420432 ), ( 80 , 2.343998476 , -1.074477518 ), ( 80 , 2.491514188 , -1.055103132 ), ( 80 , 2.414713603 , -1.050401162 ), ( 80 , 2.374958187 , -1.057073401 ), ( 80 , 2.443976078 , -1.028594564 ), ( 80 , 2.265512499 , -1.052737539 ), ( 80 , 2.353874906 , -1.025222696 ), ( 80 , 2.309239784 , -1.00661201 ), ( 80 , 2.320704081 , -0.999960795 ), ( 80 , 2.339555602 , -0.969151516 ), ( 80 , 2.476356378 , -1.028588913 ), ( 80 , 2.478019943 , -1.000589396 ), ( 80 , 2.467248114 , -1.001159704 ), ( 80 , 2.485483005 , -0.955088474 ), ( 80 , 2.531280958 , -0.972342386 ), ( 80 , 2.581359798 , -0.966632054 ), ( 80 , 2.499584674 , -0.952878552 ), ( 80 , 2.5035777 , -0.943169863 ), ( 80 , 2.548700303 , -0.938031469 ), ( 80 , 2.501386433 , -0.92206016 ), ( 80 , 2.473246008 , -0.903552774 ), ( 80 , 2.513687619 , -0.903114203 ), ( 80 , 2.50812562 , -0.882481662 ), ( 80 , 2.19156624 , -1.043398918 ), ( 80 , 2.193730864 , -1.01034439 ), ( 80 , 2.181783054 , -0.992362349 ), ( 80 , 2.23397329 , -0.983858428 ), ( 80 , 2.236096818 , -0.967074463 ), ( 80 , 2.272404465 , -0.980304659 ), ( 80 , 2.323007204 , -0.9307099 ), ( 80 , 2.249284951 , -0.961723556 ), ( 80 , 2.278130748 , -0.920768905 ), ( 80 , 2.300555393 , -0.906202101 ), ( 80 , 2.283621109 , -0.911213695 ), ( 80 , 2.113542437 , -0.959850181 ), ( 80 , 2.167894969 , -0.933307539 ), ( 80 , 2.263407998 , -0.894904573 ), ( 80 , 2.344012616 , -0.919834799 ), ( 80 , 2.407238403 , -0.888662367 ), ( 80 , 2.342906423 , -0.878885392 ), ( 80 , 2.431167512 , -0.833140686 ), ( 80 , 2.371454207 , -0.82735748 ), ( 80 , 2.269835415 , -0.845543979 ), ( 80 , 2.288675 , -0.837512118 ), ( 80 , 2.292286616 , -0.801370834 ), ( 80 , 2.33455321 , -0.764995998 ), ( 80 , 3.066665657 , -1.1184755 ), ( 80 , 3.0626867 , -1.113439264 ), ( 80 , 3.050199479 , -1.107057658 ), ( 80 , 3.044719241 , -1.090281718 ), ( 80 , 3.121865144 , -1.08553313 ), ( 80 , 3.084316857 , -1.065368409 ), ( 80 , 3.074620839 , -1.062044082 ), ( 80 , 3.052489397 , -1.078613824 ), ( 80 , 3.047122544 , -1.058613939 ), ( 80 , 2.956643078 , -1.075743365 ), ( 80 , 2.916714668 , -1.075585684 ), ( 80 , 2.923721573 , -1.064286926 ), ( 80 , 2.971222814 , -1.050016164 ), ( 80 , 2.91548735 , -1.051497743 ), ( 80 , 2.930818876 , -1.036574671 ), ( 80 , 2.88249621 , -1.052503737 ), ( 80 , 2.853990013 , -1.053353842 ), ( 80 , 2.881489511 , -1.02944845 ), ( 80 , 2.905878919 , -1.024940981 ), ( 80 , 2.896755915 , -1.025647298 ), ( 80 , 2.899705457 , -1.024408127 ), ( 80 , 2.901186602 , -1.021923807 ), ( 80 , 2.851476273 , -1.026911386 ), ( 80 , 2.982475938 , -1.031149169 ), ( 80 , 2.919869109 , -1.024930175 ), ( 80 , 2.968926032 , -0.994019877 ), ( 80 , 2.935359451 , -0.993714717 ), ( 80 , 2.916793046 , -1.027802491 ), ( 80 , 2.890235456 , -1.010418767 ), ( 80 , 2.885589963 , -0.990772807 ), ( 80 , 3.137474326 , -1.020082082 ), ( 80 , 3.056703503 , -0.982968612 ), ( 80 , 3.010324408 , -0.965495483 ), ( 80 , 3.010438841 , -0.964546556 ), ( 80 , 3.075074825 , -0.974232084 ), ( 80 , 3.069925086 , -0.963343412 ), ( 80 , 3.058168324 , -0.961649434 ), ( 80 , 3.044695734 , -0.923135396 ), ( 80 , 2.952163976 , -0.96962141 ), ( 80 , 2.962977587 , -0.971364913 ), ( 80 , 2.950179095 , -0.959092096 ), ( 80 , 2.899332119 , -0.926917711 ), ( 80 , 3.008786457 , -0.935941228 ), ( 80 , 2.953209363 , -0.888825951 ), ( 80 , 2.929603429 , -0.875613662 ), ( 80 , 2.814148334 , -1.046064722 ), ( 80 , 2.78711846 , -1.032872216 ), ( 80 , 2.832618978 , -1.011758603 ), ( 80 , 2.812356028 , -1.004704907 ), ( 80 , 2.801342957 , -0.994994974 ), ( 80 , 2.774905744 , -1.016173009 ), ( 80 , 2.7538822 , -1.013149908 ), ( 80 , 2.775942401 , -1.009898141 ), ( 80 , 2.722487227 , -1.00294531 ), ( 80 , 2.803786583 , -0.951769233 ), ( 80 , 2.752642221 , -0.942707548 ), ( 80 , 2.798499417 , -0.9330833 ), ( 80 , 2.796151109 , -0.931580746 ), ( 80 , 2.707747288 , -0.990550634 ), ( 80 , 2.685909645 , -0.979270959 ), ( 80 , 2.684180883 , -0.971398025 ), ( 80 , 2.67385823 , -0.980014853 ), ( 80 , 2.681550305 , -0.965052273 ), ( 80 , 2.715324411 , -0.960838646 ), ( 80 , 2.723870442 , -0.937726372 ), ( 80 , 2.638788997 , -0.959072811 ), ( 80 , 2.686966788 , -0.918970232 ), ( 80 , 2.686830177 , -0.918804161 ), ( 80 , 2.660314669 , -0.922858383 ), ( 80 , 2.649174854 , -0.916890378 ), ( 80 , 2.749411171 , -0.931021116 ), ( 80 , 2.760703062 , -0.927467591 ), ( 80 , 2.687136859 , -0.911132075 ), ( 80 , 2.714397299 , -0.864484369 ), ( 80 , 2.813453824 , -0.888110655 ), ( 80 , 2.840826625 , -0.864000135 ), ( 80 , 2.893820575 , -0.889980546 ), ( 80 , 2.86447869 , -0.843553357 ), ( 80 , 2.774659507 , -0.828721867 ), ( 80 , 2.780328701 , -0.793793365 ), ( 80 , 2.76100904 , -0.761445663 ), ( 80 , 3.090244605 , -0.872563256 ), ( 80 , 3.059549819 , -0.876040975 ), ( 80 , 3.079085905 , -0.870046794 ), ( 80 , 3.134741525 , -0.877089521 ), ( 80 , 3.035193109 , -0.823241532 ), ( 80 , 3.031969093 , -0.810781018 ), ( 80 , 3.016849161 , -0.778904838 ), ( 80 , 3.063029969 , -0.796726952 ), ( 80 , 3.058756947 , -0.774987442 ), ( 80 , 3.062669492 , -0.769749431 ), ( 80 , 3.132156278 , -0.763064421 ), ( 80 , 3.135411273 , -0.758129567 ), ( 80 , 3.089210571 , -0.703222676 ), ( 80 , 2.991147639 , -0.7447705 ), ( 80 , 2.991153967 , -0.722530301 ), ( 80 , 3.049698585 , -0.695694428 ), ( 80 , 2.900383575 , -0.804582501 ), ( 80 , 2.892597005 , -0.793164219 ), ( 80 , 2.833809781 , -0.772915939 ), ( 80 , 2.877147285 , -0.752794633 ), ( 80 , 2.930335437 , -0.727181365 ), ( 80 , 2.914899201 , -0.73986321 ), ( 80 , 2.874233774 , -0.725543392 ), ( 80 , 2.869445686 , -0.717897035 ), ( 80 , 2.899128372 , -0.695000652 ), ( 80 , 2.822704756 , -0.772796213 ), ( 80 , 2.79114957 , -0.760078679 ), ( 80 , 2.787119782 , -0.757400854 ), ( 80 , 2.784753092 , -0.716775654 ), ( 80 , 2.849627836 , -0.705415647 ), ( 80 , 2.871852487 , -0.622464849 ), ( 80 , 2.875893906 , -0.599835169 ), ( 80 , 2.942584251 , -0.610535098 ), ( 80 , 2.975171312 , -0.581213413 ), ( 80 , 2.963022447 , -0.541152137 ), ( 80 , 2.609330718 , -0.923157212 ), ( 80 , 2.658581425 , -0.88382728 ), ( 80 , 2.68579558 , -0.837633112 ), ( 80 , 2.574275076 , -0.836844192 ), ( 80 , 2.569741173 , -0.836228669 ), ( 80 , 2.475393647 , -0.843080155 ), ( 80 , 2.594920569 , -0.798878468 ), ( 80 , 2.601889969 , -0.789870851 ), ( 80 , 2.710861131 , -0.777365156 ), ( 80 , 2.666206074 , -0.769421364 ), ( 80 , 2.66173168 , -0.741480391 ), ( 80 , 2.650597582 , -0.749792267 ), ( 80 , 2.710926727 , -0.706174416 ), ( 80 , 2.638446564 , -0.736962135 ), ( 80 , 2.598387391 , -0.705718877 ), ( 80 , 2.470224239 , -0.83363663 ), ( 80 , 2.471488667 , -0.805042316 ), ( 80 , 2.486611965 , -0.783816942 ), ( 80 , 2.44586963 , -0.772885096 ), ( 80 , 2.4626142 , -0.765907317 ), ( 80 , 2.410421503 , -0.764058081 ), ( 80 , 2.404734023 , -0.755199198 ), ( 80 , 2.373010699 , -0.725279425 ), ( 80 , 2.454385273 , -0.686201385 ), ( 80 , 2.444405452 , -0.644974592 ), ( 80 , 2.639494112 , -0.613501834 ), ( 80 , 2.504787368 , -0.630785652 ), ( 80 , 2.559133071 , -0.545839578 ), ( 80 , 2.778373318 , -0.67118532 ), ( 80 , 2.724529559 , -0.673358947 ), ( 80 , 2.760795716 , -0.568279593 ), ( 80 , 2.839385169 , -0.601903032 ), ( 80 , 2.877875013 , -0.577270462 ), ( 80 , 2.852730484 , -0.564209806 ), ( 80 , 2.857274652 , -0.529436728 ), ( 80 , 2.834357471 , -0.523503624 ), ( 80 , 2.827815776 , -0.460740345 ), ( 80 , 2.662554361 , -0.539283497 ), ( 80 , 2.699301034 , -0.567898793 ), ( 80 , 2.720890591 , -0.539757927 ), ( 80 , 2.711965813 , -0.522514573 ), ( 80 , 2.56798042 , -0.529191099 ), ( 80 , 2.597078593 , -0.498059992 ), ( 80 , 2.767303641 , -0.424154124 ), ( 80 , 2.805208839 , -0.392858492 ), ( 80 , 2.704447559 , -0.393108033 ), ( 80 , 2.729630373 , -0.383155343 ), ( 80 , 1.595655235 , -1.077714817 ), ( 80 , 1.706483651 , -1.029818648 ), ( 80 , 1.885692602 , -1.044393701 ), ( 80 , 1.996535984 , -0.998618039 ), ( 80 , 1.869472859 , -1.018789751 ), ( 80 , 2.027533154 , -0.953647537 ), ( 80 , 2.072831277 , -0.953672461 ), ( 80 , 2.064259203 , -0.919346477 ), ( 80 , 1.877965573 , -0.97021359 ), ( 80 , 1.942226137 , -0.927001218 ), ( 80 , 1.888785063 , -0.940636989 ), ( 80 , 1.915409368 , -0.91699623 ), ( 80 , 1.911870162 , -0.908143089 ), ( 80 , 1.98137742 , -0.929645502 ), ( 80 , 1.994235552 , -0.9139556 ), ( 80 , 2.02574445 , -0.903827018 ), ( 80 , 1.996373991 , -0.897474926 ), ( 80 , 1.783045084 , -0.942722606 ), ( 80 , 1.784997063 , -0.858510991 ), ( 80 , 1.841871561 , -0.943479913 ), ( 80 , 1.855989549 , -0.918208209 ), ( 80 , 1.887133722 , -0.87826594 ), ( 80 , 1.893112327 , -0.871558746 ), ( 80 , 1.95613289 , -0.851944259 ), ( 80 , 2.000331517 , -0.832715827 ), ( 80 , 1.917437031 , -0.824163821 ), ( 80 , 1.907475094 , -0.814982569 ), ( 80 , 1.902452196 , -0.801030834 ), ( 80 , 2.146559453 , -0.906918473 ), ( 80 , 2.141892246 , -0.893443577 ), ( 80 , 2.155247054 , -0.878111523 ), ( 80 , 2.127375616 , -0.859929194 ), ( 80 , 2.160982803 , -0.85835527 ), ( 80 , 2.176178796 , -0.83352156 ), ( 80 , 2.171363024 , -0.821624667 ), ( 80 , 2.181508748 , -0.832172321 ), ( 80 , 2.18656443 , -0.825952233 ), ( 80 , 2.124222452 , -0.830086907 ), ( 80 , 2.080401366 , -0.828482272 ), ( 80 , 2.138156977 , -0.834585923 ), ( 80 , 2.125836624 , -0.814034936 ), ( 80 , 2.267649331 , -0.809539001 ), ( 80 , 2.262690802 , -0.801591863 ), ( 80 , 2.282551217 , -0.79950855 ), ( 80 , 2.261181777 , -0.795754005 ), ( 80 , 2.237089719 , -0.76871437 ), ( 80 , 2.256354387 , -0.759790489 ), ( 80 , 2.312954981 , -0.742819346 ), ( 80 , 2.301922778 , -0.741507091 ), ( 80 , 2.345660899 , -0.721713502 ), ( 80 , 2.308592665 , -0.697320048 ), ( 80 , 2.186854759 , -0.737809899 ), ( 80 , 2.208459994 , -0.711854338 ), ( 80 , 2.284360936 , -0.691149187 ), ( 80 , 2.247034003 , -0.651739158 ), ( 80 , 2.001819117 , -0.782429964 ), ( 80 , 2.0813051 , -0.719008825 ), ( 80 , 2.095523544 , -0.7086924 ), ( 80 , 2.09857008 , -0.708078339 ), ( 80 , 2.018560164 , -0.73705108 ), ( 80 , 2.038205678 , -0.724616606 ), ( 80 , 2.026534924 , -0.70773628 ), ( 80 , 2.08654708 , -0.691377498 ), ( 80 , 2.159486451 , -0.715642659 ), ( 80 , 2.157445731 , -0.706990804 ), ( 80 , 2.175827408 , -0.675340383 ), ( 80 , 2.138894934 , -0.666044237 ), ( 80 , 2.158737575 , -0.661810195 ), ( 80 , 2.149294886 , -0.639962323 ), ( 80 , 2.231558852 , -0.640431373 ), ( 80 , 2.227805993 , -0.638338328 ), ( 80 , 2.211387129 , -0.603835456 ), ( 80 , 2.204765147 , -0.599820862 ), ( 80 , 2.210128672 , -0.579690535 ), ( 80 , 2.209134001 , -0.575026623 ), ( 80 , 2.128233432 , -0.653196099 ), ( 80 , 2.10711149 , -0.632151316 ), ( 80 , 2.147319348 , -0.623653696 ), ( 80 , 2.0817844 , -0.614617257 ), ( 80 , 2.084860026 , -0.609614643 ), ( 80 , 2.114734355 , -0.609068741 ), ( 80 , 2.120809095 , -0.606588955 ), ( 80 , 2.185435273 , -0.572380448 ), ( 80 , 2.138483017 , -0.574534426 ), ( 80 , 2.162087124 , -0.558135246 ), ( 80 , 2.163658329 , -0.539752433 ), ( 80 , 2.159893765 , -0.530916186 ), ( 80 , 1.73977513 , -0.850306574 ), ( 80 , 1.696108962 , -0.860189251 ), ( 80 , 1.765381334 , -0.816356973 ), ( 80 , 1.675413125 , -0.801915187 ), ( 80 , 1.734057059 , -0.784978804 ), ( 80 , 1.779052799 , -0.780495829 ), ( 80 , 1.836307902 , -0.714699392 ), ( 80 , 1.817314701 , -0.715413748 ), ( 80 , 1.843365044 , -0.664250695 ), ( 80 , 1.619076731 , -0.783200881 ), ( 80 , 1.655768673 , -0.748506791 ), ( 80 , 1.65716729 , -0.746159316 ), ( 80 , 1.684931275 , -0.726700856 ), ( 80 , 1.704649881 , -0.705949985 ), ( 80 , 1.647941226 , -0.7096232 ), ( 80 , 1.759970281 , -0.713995516 ), ( 80 , 1.776001028 , -0.711289638 ), ( 80 , 1.813472743 , -0.674858693 ), ( 80 , 1.781422424 , -0.674671358 ), ( 80 , 1.755196443 , -0.670180537 ), ( 80 , 1.769237418 , -0.643144837 ), ( 80 , 1.73588563 , -0.630313625 ), ( 80 , 1.699348563 , -0.595050118 ), ( 80 , 1.766990831 , -0.612987699 ), ( 80 , 1.762677161 , -0.566031623 ), ( 80 , 1.776572816 , -0.540311815 ), ( 80 , 1.933772397 , -0.68226258 ), ( 80 , 2.015877657 , -0.669312593 ), ( 80 , 2.024047141 , -0.658346276 ), ( 80 , 2.022591376 , -0.640390664 ), ( 80 , 2.023744784 , -0.632131773 ), ( 80 , 2.005728686 , -0.622944116 ), ( 80 , 2.005841751 , -0.599731743 ), ( 80 , 1.925320276 , -0.619524094 ), ( 80 , 1.939336648 , -0.59967195 ), ( 80 , 1.920081414 , -0.586337821 ), ( 80 , 2.082157883 , -0.578382659 ), ( 80 , 2.047823098 , -0.581714396 ), ( 80 , 2.12404922 , -0.543991472 ), ( 80 , 2.134177389 , -0.521365823 ), ( 80 , 1.992139839 , -0.546645026 ), ( 80 , 2.048159321 , -0.53333959 ), ( 80 , 2.017273415 , -0.527807091 ), ( 80 , 1.972800226 , -0.517229466 ), ( 80 , 2.024446062 , -0.496223969 ), ( 80 , 2.043410785 , -0.49494898 ), ( 80 , 2.052183337 , -0.488212775 ), ( 80 , 2.093380054 , -0.490569214 ), ( 80 , 2.022557073 , -0.474365691 ), ( 80 , 2.035159683 , -0.460580433 ), ( 80 , 1.868700863 , -0.58247829 ), ( 80 , 1.896660016 , -0.568327383 ), ( 80 , 1.854427487 , -0.550233194 ), ( 80 , 1.896219764 , -0.549664767 ), ( 80 , 1.883605984 , -0.520246731 ), ( 80 , 1.912364099 , -0.521586295 ), ( 80 , 1.833617271 , -0.542265124 ), ( 80 , 1.902119242 , -0.479072361 ), ( 80 , 1.836060232 , -0.484744671 ), ( 80 , 1.837848395 , -0.483236314 ), ( 80 , 1.834198633 , -0.463346194 ), ( 80 , 1.880505735 , -0.452460039 ), ( 80 , 1.972081358 , -0.443474931 ), ( 80 , 1.992867064 , -0.420765585 ), ( 80 , 1.981024268 , -0.413679261 ), ( 80 , 2.010791052 , -0.42365913 ), ( 80 , 1.899782162 , -0.452485574 ), ( 80 , 1.914664802 , -0.435439958 ), ( 80 , 1.963274217 , -0.41538689 ), ( 80 , 1.958697993 , -0.404066492 ), ( 80 , 2.006355592 , -0.387357493 ), ( 80 , 1.966766573 , -0.380653841 ), ( 80 , 1.946887754 , -0.356093308 ), ( 80 , 2.370192232 , -0.674527945 ), ( 80 , 2.369970525 , -0.673867306 ), ( 80 , 2.394724312 , -0.616964652 ), ( 80 , 2.313492306 , -0.640100218 ), ( 80 , 2.274834038 , -0.627516117 ), ( 80 , 2.375183727 , -0.57773611 ), ( 80 , 2.311496874 , -0.573659798 ), ( 80 , 2.348964968 , -0.560993802 ), ( 80 , 2.468508657 , -0.578999038 ), ( 80 , 2.418383381 , -0.584959282 ), ( 80 , 2.419355281 , -0.583352223 ), ( 80 , 2.513515957 , -0.545105332 ), ( 80 , 2.521002819 , -0.535432065 ), ( 80 , 2.529037195 , -0.521351236 ), ( 80 , 2.487806174 , -0.526115952 ), ( 80 , 2.417871322 , -0.490740211 ), ( 80 , 2.395580011 , -0.505385424 ), ( 80 , 2.466632259 , -0.50577937 ), ( 80 , 2.481344253 , -0.459862482 ), ( 80 , 2.425924889 , -0.474657684 ), ( 80 , 2.297782028 , -0.580233589 ), ( 80 , 2.255674683 , -0.553649533 ), ( 80 , 2.252500056 , -0.534030081 ), ( 80 , 2.310161958 , -0.539902391 ), ( 80 , 2.220756288 , -0.538423905 ), ( 80 , 2.220375142 , -0.522747057 ), ( 80 , 2.207098529 , -0.522422839 ), ( 80 , 2.233745506 , -0.466067652 ), ( 80 , 2.261595602 , -0.461349731 ), ( 80 , 2.256452826 , -0.455061899 ), ( 80 , 2.338519101 , -0.465074434 ), ( 80 , 2.37453291 , -0.423070275 ), ( 80 , 2.39826731 , -0.394492233 ), ( 80 , 2.315995171 , -0.455851144 ), ( 80 , 2.3546721 , -0.423003613 ), ( 80 , 2.377320335 , -0.366937323 ), ( 80 , 2.327314738 , -0.401302405 ), ( 80 , 2.369766244 , -0.358605751 ), ( 80 , 2.647848156 , -0.431379247 ), ( 80 , 2.647840457 , -0.431371795 ), ( 80 , 2.506560751 , -0.428242975 ), ( 80 , 2.540054153 , -0.413800991 ), ( 80 , 2.543133218 , -0.400821034 ), ( 80 , 2.533487476 , -0.376670116 ), ( 80 , 2.678515333 , -0.402826977 ), ( 80 , 2.63682534 , -0.39373102 ), ( 80 , 2.631988329 , -0.365315802 ), ( 80 , 2.608328159 , -0.369704493 ), ( 80 , 2.592415065 , -0.318787243 ), ( 80 , 2.589139612 , -0.312867983 ), ( 80 , 2.648946146 , -0.30515913 ), ( 80 , 2.626759833 , -0.314024142 ), ( 80 , 2.432005739 , -0.37237695 ), ( 80 , 2.458854537 , -0.275784416 ), ( 80 , 2.560534733 , -0.288793133 ), ( 80 , 2.540686683 , -0.277869994 ), ( 80 , 2.62396687 , -0.269723935 ), ( 80 , 2.579867678 , -0.239587921 ), ( 80 , 2.518976515 , -0.25920276 ), ( 80 , 2.137424806 , -0.451137082 ), ( 80 , 2.163764588 , -0.350111845 ), ( 80 , 2.27101636 , -0.366747441 ), ( 80 , 2.314362566 , -0.369046633 ), ( 80 , 2.296353479 , -0.35652864 ), ( 80 , 2.225829542 , -0.320206122 ), ( 80 , 2.252603379 , -0.263970713 ), ( 80 , 2.094042384 , -0.388950696 ), ( 80 , 2.084093462 , -0.334075328 ), ( 80 , 2.108846812 , -0.324380042 ), ( 80 , 2.02281543 , -0.37143384 ), ( 80 , 2.027718148 , -0.308802834 ), ( 80 , 2.02502353 , -0.295530465 ), ( 80 , 2.15253892 , -0.316596982 ), ( 80 , 2.201894377 , -0.26982242 ), ( 80 , 2.240592 , -0.265353187 ), ( 80 , 2.202072631 , -0.254843395 ), ( 80 , 2.218297037 , -0.236580888 ), ( 80 , 2.222865453 , -0.224238166 ), ( 80 , 2.354548248 , -0.299947715 ), ( 80 , 2.403825986 , -0.269816684 ), ( 80 , 2.405484044 , -0.260882078 ), ( 80 , 2.420223238 , -0.26086674 ), ( 80 , 2.337504351 , -0.245049976 ), ( 80 , 2.267186911 , -0.252885648 ), ( 80 , 2.497649571 , -0.195204582 ), ( 80 , 2.496676499 , -0.18925566 ), ( 80 , 2.480220762 , -0.160516441 ), ( 80 , 2.493152684 , -0.142149291 ), ( 80 , 2.409908429 , -0.193363529 ), ( 80 , 2.442605706 , -0.104576215 ), ( 80 , 2.272654412 , -0.182313382 ), ( 80 , 2.345310327 , -0.176137142 ), ( 80 , 2.318372713 , -0.159223104 ), ( 80 , 2.267748098 , -0.167326195 ), ( 80 , 2.304938378 , -0.139146284 ), ( 80 , 2.210798639 , -0.205507752 ), ( 80 , 2.174440727 , -0.176733314 ), ( 80 , 2.218159273 , -0.143411952 ), ( 80 , 2.188391904 , -0.142973161 ), ( 80 , 2.227830514 , -0.124923407 ), ( 80 , 2.362234177 , -0.138300456 ), ( 80 , 2.345387263 , -0.129340284 ), ( 80 , 2.420483913 , -0.079307971 ), ( 80 , 2.313716646 , -0.04775109 ), ( 80 , 4.428340353 , -1.483707474 ), ( 80 , 4.330588087 , -1.458965602 ), ( 80 , 4.471724241 , -1.41522282 ), ( 80 , 4.162072358 , -1.364127298 ), ( 80 , 4.063063941 , -1.374506427 ), ( 80 , 4.359626031 , -1.317527616 ), ( 80 , 4.243137046 , -1.314110384 ), ( 80 , 3.530079718 , -1.400756327 ), ( 80 , 3.546035115 , -1.380117424 ), ( 80 , 3.513088391 , -1.377985821 ), ( 80 , 3.859774825 , -1.356729267 ), ( 80 , 3.68086152 , -1.357120798 ), ( 80 , 3.608996102 , -1.353086227 ), ( 80 , 3.210273955 , -1.409959275 ), ( 80 , 3.377892327 , -1.362002772 ), ( 80 , 3.564634178 , -1.335321986 ), ( 80 , 3.936831124 , -1.304206489 ), ( 80 , 3.93190472 , -1.269188498 ), ( 80 , 3.803312913 , -1.298380716 ), ( 80 , 3.749787629 , -1.252168322 ), ( 80 , 3.925522477 , -1.203440443 ), ( 80 , 4.646589326 , -1.350075797 ), ( 80 , 4.551399567 , -1.332589277 ), ( 80 , 4.647140232 , -1.270435407 ), ( 80 , 4.289315292 , -1.255220136 ), ( 80 , 4.618259782 , -1.195953364 ), ( 80 , 4.69540192 , -1.173752397 ), ( 80 , 4.464863136 , -1.201555296 ), ( 80 , 4.442005969 , -1.194842109 ), ( 80 , 4.443602017 , -1.178459811 ), ( 80 , 4.454990404 , -1.160839162 ), ( 80 , 4.435521918 , -1.153820736 ), ( 80 , 4.40759338 , -1.169830945 ), ( 80 , 4.34934148 , -1.131103295 ), ( 80 , 4.416585501 , -1.094977764 ), ( 80 , 4.293069213 , -1.15496129 ), ( 80 , 4.037952626 , -1.198910571 ), ( 80 , 4.087898162 , -1.177832596 ), ( 80 , 4.061512303 , -1.14492519 ), ( 80 , 4.063338747 , -1.143906108 ), ( 80 , 4.112786554 , -1.152273584 ), ( 80 , 4.103601378 , -1.114186425 ), ( 80 , 4.2035388 , -1.1059711 ), ( 80 , 4.366554911 , -1.091784706 ), ( 80 , 4.33315141 , -1.06297054 ), ( 80 , 4.202896422 , -1.054282981 ), ( 80 , 4.139515336 , -1.027253624 ), ( 80 , 4.270893784 , -1.011086668 ), ( 80 , 3.163519117 , -1.3209893 ), ( 80 , 3.441049089 , -1.270995195 ), ( 80 , 3.431452578 , -1.270565354 ), ( 80 , 3.451944372 , -1.253395746 ), ( 80 , 3.31738808 , -1.25917273 ), ( 80 , 3.462148109 , -1.19553231 ), ( 80 , 3.678560697 , -1.208054904 ), ( 80 , 3.729760787 , -1.199601654 ), ( 80 , 3.8313853 , -1.203421408 ), ( 80 , 3.817253595 , -1.179429659 ), ( 80 , 3.883272211 , -1.146926195 ), ( 80 , 3.662838246 , -1.164334153 ), ( 80 , 3.753114533 , -1.066079661 ), ( 80 , 3.458951197 , -1.139550337 ), ( 80 , 3.500094027 , -1.120830524 ), ( 80 , 3.431923088 , -1.135867876 ), ( 80 , 3.179754155 , -1.197983163 ), ( 80 , 3.165670272 , -1.184239402 ), ( 80 , 3.230237657 , -1.156866449 ), ( 80 , 3.463425007 , -1.109795777 ), ( 80 , 3.473553152 , -1.092292655 ), ( 80 , 3.606388662 , -1.12880099 ), ( 80 , 3.614185521 , -1.129074796 ), ( 80 , 3.632784178 , -1.10647195 ), ( 80 , 3.631889185 , -1.095630077 ), ( 80 , 3.618312097 , -1.083856804 ), ( 80 , 3.559046165 , -1.079792043 ), ( 80 , 3.69985273 , -1.073534403 ), ( 80 , 3.700123183 , -1.060732664 ), ( 80 , 3.750533994 , -1.042881026 ), ( 80 , 3.673575617 , -1.061040869 ), ( 80 , 3.663008823 , -1.057091503 ), ( 80 , 3.64633569 , -1.048121746 ), ( 80 , 3.484502132 , -1.090677851 ), ( 80 , 3.571006293 , -1.017733089 ), ( 80 , 3.619066441 , -1.045846693 ), ( 80 , 3.68445181 , -1.015793649 ), ( 80 , 3.587903396 , -1.023107071 ), ( 80 , 3.624777646 , -1.004969556 ), ( 80 , 3.626434748 , -1.003105457 ), ( 80 , 3.58906648 , -1.009716396 ), ( 80 , 3.643669477 , -0.990324072 ), ( 80 , 3.921522856 , -1.134533251 ), ( 80 , 3.990561356 , -1.110552801 ), ( 80 , 4.000054435 , -1.105645014 ), ( 80 , 3.972806471 , -1.085468763 ), ( 80 , 4.024443349 , -1.032313789 ), ( 80 , 4.002720518 , -1.018716172 ), ( 80 , 3.817115837 , -1.06402734 ), ( 80 , 3.816447587 , -1.043437651 ), ( 80 , 3.972678813 , -0.997161381 ), ( 80 , 4.093097707 , -1.045044825 ), ( 80 , 4.082283139 , -1.027409415 ), ( 80 , 4.055924831 , -1.018420954 ), ( 80 , 4.177488457 , -0.948277159 ), ( 80 , 4.090320041 , -0.948848906 ), ( 80 , 4.142736733 , -0.923117409 ), ( 80 , 4.044184235 , -0.960242868 ), ( 80 , 3.768678708 , -1.050913366 ), ( 80 , 3.783000339 , -0.999881949 ), ( 80 , 3.810545014 , -0.981155659 ), ( 80 , 3.692256404 , -0.946086652 ), ( 80 , 3.682190547 , -0.938544133 ), ( 80 , 3.785338933 , -0.906398444 ), ( 80 , 3.945048071 , -0.91129352 ), ( 80 , 3.931920703 , -0.73807885 ), ( 80 , 4.680454659 , -1.127846554 ), ( 80 , 4.658757424 , -1.08267788 ), ( 80 , 4.699236668 , -1.052859583 ), ( 80 , 4.557255221 , -1.054420089 ), ( 80 , 4.643251884 , -1.012466971 ), ( 80 , 4.700279542 , -0.966589575 ), ( 80 , 4.66942423 , -0.944742259 ), ( 80 , 4.62198717 , -0.928688799 ), ( 80 , 4.509721301 , -0.93309683 ), ( 80 , 4.503979828 , -0.912783339 ), ( 80 , 4.546499216 , -0.904962742 ), ( 80 , 4.558022081 , -0.897491401 ), ( 80 , 4.38195134 , -1.02222361 ), ( 80 , 4.376786295 , -1.020513555 ), ( 80 , 4.363765363 , -1.00016503 ), ( 80 , 4.297008364 , -0.994952289 ), ( 80 , 4.325740339 , -0.97633484 ), ( 80 , 4.303420989 , -0.974271368 ), ( 80 , 4.421889134 , -0.947306705 ), ( 80 , 4.373672634 , -0.945504247 ), ( 80 , 4.25449632 , -0.98394865 ), ( 80 , 4.272728198 , -0.95926393 ), ( 80 , 4.266760382 , -0.963626153 ), ( 80 , 4.288852249 , -0.960591416 ), ( 80 , 4.295162332 , -0.955147013 ), ( 80 , 4.250697288 , -0.945476593 ), ( 80 , 4.309149648 , -0.920987835 ), ( 80 , 4.274795868 , -0.921044476 ), ( 80 , 4.331660119 , -0.914058051 ), ( 80 , 4.332307963 , -0.890077712 ), ( 80 , 4.245650788 , -0.891275525 ), ( 80 , 4.251107099 , -0.874165099 ), ( 80 , 4.275508413 , -0.860671034 ), ( 80 , 4.386268277 , -0.865964373 ), ( 80 , 4.446256558 , -0.86819495 ), ( 80 , 4.436305038 , -0.820646058 ), ( 80 , 4.401812949 , -0.809859159 ), ( 80 , 4.340958445 , -0.837580429 ), ( 80 , 4.324258255 , -0.811218475 ), ( 80 , 4.314465941 , -0.785987717 ), ( 80 , 4.59467121 , -0.890089741 ), ( 80 , 4.636068733 , -0.884128433 ), ( 80 , 4.602656157 , -0.835650288 ), ( 80 , 4.611879206 , -0.824572139 ), ( 80 , 4.644989749 , -0.81726893 ), ( 80 , 4.580085219 , -0.869002243 ), ( 80 , 4.555719371 , -0.862021776 ), ( 80 , 4.546667585 , -0.838618378 ), ( 80 , 4.522913056 , -0.781256601 ), ( 80 , 4.663965075 , -0.770357209 ), ( 80 , 4.678048636 , -0.754068323 ), ( 80 , 4.63828809 , -0.733903995 ), ( 80 , 4.602908701 , -0.749045677 ), ( 80 , 4.585465783 , -0.709650571 ), ( 80 , 4.624492036 , -0.70299457 ), ( 80 , 4.607472602 , -0.671476587 ), ( 80 , 4.605501175 , -0.660574632 ), ( 80 , 4.463636051 , -0.806126013 ), ( 80 , 4.498958521 , -0.759034809 ), ( 80 , 4.499029049 , -0.727770802 ), ( 80 , 4.427012817 , -0.72296822 ), ( 80 , 4.437867788 , -0.714814524 ), ( 80 , 4.382308764 , -0.774558522 ), ( 80 , 4.374174353 , -0.763568626 ), ( 80 , 4.369488978 , -0.734094615 ), ( 80 , 4.407061133 , -0.726428024 ), ( 80 , 4.356554559 , -0.692057161 ), ( 80 , 4.516013793 , -0.679757492 ), ( 80 , 4.501290023 , -0.660665251 ), ( 80 , 4.571858765 , -0.637495484 ), ( 80 , 4.476249367 , -0.638584623 ), ( 80 , 4.512910087 , -0.613136806 ), ( 80 , 4.51058489 , -0.573385431 ), ( 80 , 4.511484409 , -0.562715788 ), ( 80 , 4.144196524 , -0.917416866 ), ( 80 , 4.177770374 , -0.87737497 ), ( 80 , 4.137881557 , -0.868537909 ), ( 80 , 4.073094888 , -0.85522499 ), ( 80 , 4.084998678 , -0.850207655 ), ( 80 , 4.146352606 , -0.820725086 ), ( 80 , 4.130677874 , -0.815063991 ), ( 80 , 4.103230314 , -0.772255613 ), ( 80 , 4.119766953 , -0.769935367 ), ( 80 , 4.292428522 , -0.719903038 ), ( 80 , 4.145160358 , -0.744389778 ), ( 80 , 4.164392479 , -0.718598094 ), ( 80 , 4.23746819 , -0.700379419 ), ( 80 , 4.209932402 , -0.711007564 ), ( 80 , 4.213969569 , -0.695400605 ), ( 80 , 4.226188795 , -0.682515374 ), ( 80 , 4.253019661 , -0.682966149 ), ( 80 , 4.210682973 , -0.684466091 ), ( 80 , 4.206885706 , -0.651139157 ), ( 80 , 3.996470005 , -0.76624007 ), ( 80 , 4.033993627 , -0.766678657 ), ( 80 , 4.08052175 , -0.76513536 ), ( 80 , 4.093526141 , -0.725358969 ), ( 80 , 4.099984925 , -0.72585954 ), ( 80 , 4.092685291 , -0.700040227 ), ( 80 , 3.985724799 , -0.77138973 ), ( 80 , 3.975886594 , -0.76504623 ), ( 80 , 3.955527502 , -0.748497675 ), ( 80 , 4.131456772 , -0.644672432 ), ( 80 , 4.170648028 , -0.622662181 ), ( 80 , 4.062511301 , -0.622035354 ), ( 80 , 4.089661323 , -0.559508557 ), ( 80 , 4.349780415 , -0.648243579 ), ( 80 , 4.346999605 , -0.596904506 ), ( 80 , 4.335736392 , -0.546100132 ), ( 80 , 4.446401255 , -0.58516168 ), ( 80 , 4.412155217 , -0.535336522 ), ( 80 , 4.472931597 , -0.5240964 ), ( 80 , 4.431119242 , -0.510980249 ), ( 80 , 4.389163783 , -0.509737982 ), ( 80 , 4.372586559 , -0.508339011 ), ( 80 , 4.384397392 , -0.479201722 ), ( 80 , 4.220594173 , -0.588333495 ), ( 80 , 4.247131913 , -0.560788809 ), ( 80 , 4.140220135 , -0.514585468 ), ( 80 , 4.24973859 , -0.49310477 ), ( 80 , 4.240496899 , -0.451760161 ), ( 80 , 4.397248602 , -0.41843306 ), ( 80 , 4.260432329 , -0.436138445 ), ( 80 , 3.201631398 , -1.098363769 ), ( 80 , 3.297681561 , -1.074652132 ), ( 80 , 3.279127512 , -1.062644541 ), ( 80 , 3.286339371 , -1.063729608 ), ( 80 , 3.338965725 , -1.085903116 ), ( 80 , 3.311046499 , -1.082647316 ), ( 80 , 3.436219188 , -1.051897573 ), ( 80 , 3.433022505 , -1.037496399 ), ( 80 , 3.336637085 , -1.055434008 ), ( 80 , 3.376285487 , -1.052992905 ), ( 80 , 3.351784929 , -1.050864926 ), ( 80 , 3.396221469 , -1.020505228 ), ( 80 , 3.142086974 , -1.091895406 ), ( 80 , 3.210332879 , -1.06691856 ), ( 80 , 3.341761369 , -1.020999533 ), ( 80 , 3.305500298 , -1.013839056 ), ( 80 , 3.319506988 , -1.005857994 ), ( 80 , 3.338945172 , -1.001101906 ), ( 80 , 3.488564004 , -1.033989066 ), ( 80 , 3.530962519 , -0.958496265 ), ( 80 , 3.417284915 , -0.979315773 ), ( 80 , 3.432154582 , -0.947586601 ), ( 80 , 3.563637347 , -0.928367126 ), ( 80 , 3.528376003 , -0.92864256 ), ( 80 , 3.188566234 , -1.034586697 ), ( 80 , 3.249911737 , -1.014382006 ), ( 80 , 3.157482339 , -1.005168889 ), ( 80 , 3.322608968 , -0.982699373 ), ( 80 , 3.337321084 , -0.920763637 ), ( 80 , 3.264362994 , -0.908887949 ), ( 80 , 3.290394179 , -0.938526823 ), ( 80 , 3.559509028 , -0.858596705 ), ( 80 , 3.492602262 , -0.859117579 ), ( 80 , 3.547522271 , -0.81788392 ), ( 80 , 3.3888004 , -0.832285092 ), ( 80 , 3.432162558 , -0.803444417 ), ( 80 , 3.432172389 , -0.803445071 ), ( 80 , 3.534563722 , -0.780384078 ), ( 80 , 3.712298852 , -0.896242076 ), ( 80 , 3.727006792 , -0.847837926 ), ( 80 , 3.646052982 , -0.861555415 ), ( 80 , 3.69848779 , -0.841005077 ), ( 80 , 3.761434011 , -0.779444424 ), ( 80 , 3.794846227 , -0.788331455 ), ( 80 , 3.903709908 , -0.733831715 ), ( 80 , 3.905755114 , -0.717688882 ), ( 80 , 3.803446662 , -0.752036397 ), ( 80 , 3.750464151 , -0.714766393 ), ( 80 , 3.828458836 , -0.64093387 ), ( 80 , 3.605384298 , -0.823028253 ), ( 80 , 3.590720921 , -0.820137281 ), ( 80 , 3.646414634 , -0.779275106 ), ( 80 , 3.601383155 , -0.791479827 ), ( 80 , 3.619084205 , -0.771633368 ), ( 80 , 3.645932831 , -0.743944798 ), ( 80 , 3.661920211 , -0.700304268 ), ( 80 , 3.679109904 , -0.692944506 ), ( 80 , 3.613718992 , -0.736263303 ), ( 80 , 3.595168967 , -0.721689834 ), ( 80 , 3.58206987 , -0.693199342 ), ( 80 , 3.670783 , -0.685100181 ), ( 80 , 3.613928941 , -0.66780975 ), ( 80 , 3.760342574 , -0.675110532 ), ( 80 , 3.794088271 , -0.646464575 ), ( 80 , 3.692468795 , -0.631029563 ), ( 80 , 3.667317566 , -0.624576742 ), ( 80 , 3.721952999 , -0.545232641 ), ( 80 , 3.190660163 , -0.911369397 ), ( 80 , 3.24023784 , -0.860904242 ), ( 80 , 3.296996519 , -0.860150553 ), ( 80 , 3.315116206 , -0.858682238 ), ( 80 , 3.161558562 , -0.873359732 ), ( 80 , 3.175943735 , -0.872187724 ), ( 80 , 3.403341195 , -0.804809274 ), ( 80 , 3.389894808 , -0.787678201 ), ( 80 , 3.508137349 , -0.731349411 ), ( 80 , 3.469870106 , -0.7049171 ), ( 80 , 3.472444101 , -0.699089477 ), ( 80 , 3.355894822 , -0.744108278 ), ( 80 , 3.390915783 , -0.694395289 ), ( 80 , 3.424116916 , -0.710044648 ), ( 80 , 3.458348299 , -0.692779215 ), ( 80 , 3.419139844 , -0.680129548 ), ( 80 , 3.179627606 , -0.784107499 ), ( 80 , 3.299127583 , -0.747921172 ), ( 80 , 3.142238985 , -0.782963296 ), ( 80 , 3.267644116 , -0.662649277 ), ( 80 , 3.356125885 , -0.693194549 ), ( 80 , 3.332156651 , -0.618093169 ), ( 80 , 3.320453034 , -0.553936204 ), ( 80 , 3.469883951 , -0.653190112 ), ( 80 , 3.51159526 , -0.604508068 ), ( 80 , 3.492836806 , -0.587436809 ), ( 80 , 3.558182834 , -0.593719313 ), ( 80 , 3.544805413 , -0.559517879 ), ( 80 , 3.663977773 , -0.585367031 ), ( 80 , 3.63849519 , -0.523788565 ), ( 80 , 3.565977264 , -0.500778425 ), ( 80 , 3.651559962 , -0.482798595 ), ( 80 , 3.410165321 , -0.568263332 ), ( 80 , 3.404141785 , -0.559250334 ), ( 80 , 3.37672059 , -0.511521098 ), ( 80 , 3.439107424 , -0.492265965 ), ( 80 , 3.565286086 , -0.482622866 ), ( 80 , 3.532149988 , -0.478031424 ), ( 80 , 3.468495356 , -0.416302015 ), ( 80 , 3.934874395 , -0.644526495 ), ( 80 , 4.00194285 , -0.603486547 ), ( 80 , 3.946345349 , -0.633299491 ), ( 80 , 3.883748339 , -0.652748558 ), ( 80 , 4.014461733 , -0.573604421 ), ( 80 , 4.028670959 , -0.563975077 ), ( 80 , 4.108576968 , -0.509416604 ), ( 80 , 4.06717181 , -0.49159245 ), ( 80 , 3.965009918 , -0.512523168 ), ( 80 , 4.036748994 , -0.46692816 ), ( 80 , 4.016838698 , -0.471644041 ), ( 80 , 4.023801687 , -0.471308977 ), ( 80 , 3.829762324 , -0.619957188 ), ( 80 , 3.82598591 , -0.607288279 ), ( 80 , 3.797209361 , -0.586764211 ), ( 80 , 3.827568685 , -0.526684094 ), ( 80 , 3.798745833 , -0.511553384 ), ( 80 , 3.958126889 , -0.479571947 ), ( 80 , 3.987642389 , -0.425493313 ), ( 80 , 3.890537994 , -0.424239446 ), ( 80 , 3.852198696 , -0.427468613 ), ( 80 , 3.921214374 , -0.390985527 ), ( 80 , 4.133549412 , -0.472759707 ), ( 80 , 4.126716007 , -0.444982751 ), ( 80 , 4.167871812 , -0.449918194 ), ( 80 , 4.094404279 , -0.43031117 ), ( 80 , 4.054246639 , -0.426761221 ), ( 80 , 4.084675709 , -0.379558508 ), ( 80 , 4.140421997 , -0.35689608 ), ( 80 , 4.133529532 , -0.357273018 ), ( 80 , 4.200826193 , -0.404587791 ), ( 80 , 4.218715468 , -0.381596308 ), ( 80 , 4.241584764 , -0.332703158 ), ( 80 , 4.230243948 , -0.299998672 ), ( 80 , 4.060995824 , -0.381850568 ), ( 80 , 4.03771287 , -0.382739426 ), ( 80 , 4.070966916 , -0.30101677 ), ( 80 , 4.174637306 , -0.236942394 ), ( 80 , 4.063653347 , -0.226630226 ), ( 80 , 4.081094589 , -0.218300507 ), ( 80 , 3.795360022 , -0.445811938 ), ( 80 , 3.789528664 , -0.40098983 ), ( 80 , 3.8350755 , -0.406865948 ), ( 80 , 3.876930141 , -0.302648724 ), ( 80 , 3.788668598 , -0.358922666 ), ( 80 , 3.840343501 , -0.282781737 ), ( 80 , 3.716522197 , -0.331920208 ), ( 80 , 3.585478753 , -0.323811856 ), ( 80 , 3.581609003 , -0.310542077 ), ( 80 , 3.646052074 , -0.281779832 ), ( 80 , 3.693790258 , -0.304667971 ), ( 80 , 3.784844057 , -0.275992617 ), ( 80 , 3.772653706 , -0.256799245 ), ( 80 , 3.683518732 , -0.211705846 ), ( 80 , 3.694439742 , -0.20074435 ), ( 80 , 3.928662211 , -0.325108371 ), ( 80 , 3.947673525 , -0.261754593 ), ( 80 , 3.961786245 , -0.254685663 ), ( 80 , 3.884588225 , -0.267780755 ), ( 80 , 3.888767169 , -0.237487603 ), ( 80 , 3.921374716 , -0.222852521 ), ( 80 , 4.014937457 , -0.23023846 ), ( 80 , 4.057887381 , -0.222991612 ), ( 80 , 4.051972228 , -0.152668655 ), ( 80 , 4.07143611 , -0.141050202 ), ( 80 , 4.019766511 , -0.153740674 ), ( 80 , 3.845470903 , -0.198347933 ), ( 80 , 3.895983623 , -0.151764618 ), ( 80 , 3.819037781 , -0.158749184 ), ( 80 , 3.835365584 , -0.101006812 ), ( 80 , 3.874793581 , -0.096110777 ), ( 80 , 3.900870534 , -0.09724575 ), ( 80 , 6.192583346 , -1.507951442 ), ( 80 , 6.251834197 , -1.499157166 ), ( 80 , 5.958686287 , -1.461572801 ), ( 80 , 5.539452418 , -1.3835848 ), ( 80 , 6.229209191 , -1.463661708 ), ( 80 , 6.033974871 , -1.443543459 ), ( 80 , 4.77858757 , -1.428420326 ), ( 80 , 5.307991604 , -1.37892156 ), ( 80 , 4.989394824 , -1.328479063 ), ( 80 , 5.204953098 , -1.329583497 ), ( 80 , 5.560195959 , -1.236714655 ), ( 80 , 5.610867277 , -1.234255935 ), ( 80 , 5.448935982 , -1.260339648 ), ( 80 , 5.343942478 , -1.250691641 ), ( 80 , 5.403987699 , -1.223004954 ), ( 80 , 6.003769201 , -1.30891661 ), ( 80 , 6.093965413 , -1.226111345 ), ( 80 , 5.863115435 , -1.270668843 ), ( 80 , 6.204873336 , -1.211904353 ), ( 80 , 6.081963217 , -1.191909617 ), ( 80 , 6.10321867 , -1.139740554 ), ( 80 , 6.158026054 , -1.123494201 ), ( 80 , 6.122540097 , -1.132592602 ), ( 80 , 5.726034031 , -1.231319009 ), ( 80 , 5.697354495 , -1.210627199 ), ( 80 , 5.700235487 , -1.198760606 ), ( 80 , 5.591450769 , -1.16355315 ), ( 80 , 5.592763137 , -1.124160915 ), ( 80 , 5.703310254 , -1.085868515 ), ( 80 , 5.875594206 , -1.091525188 ), ( 80 , 5.891770296 , -1.087028902 ), ( 80 , 5.775787749 , -1.054832397 ), ( 80 , 5.742854727 , -1.051202427 ), ( 80 , 5.779544771 , -0.98261892 ), ( 80 , 5.223501606 , -1.258623698 ), ( 80 , 4.99689662 , -1.287689761 ), ( 80 , 5.065009491 , -1.267620883 ), ( 80 , 5.08908708 , -1.247318491 ), ( 80 , 4.865311077 , -1.244847489 ), ( 80 , 4.900793228 , -1.244219702 ), ( 80 , 4.974066863 , -1.248520813 ), ( 80 , 5.076796744 , -1.211378638 ), ( 80 , 5.0017217 , -1.218767154 ), ( 80 , 5.413749363 , -1.12024209 ), ( 80 , 5.212879979 , -1.191344446 ), ( 80 , 5.111415972 , -1.161581122 ), ( 80 , 4.830453919 , -1.21093133 ), ( 80 , 4.871569145 , -1.205712323 ), ( 80 , 4.794333434 , -1.214732733 ), ( 80 , 4.930293919 , -1.174379928 ), ( 80 , 5.021419197 , -1.134312368 ), ( 80 , 5.089216006 , -1.137891567 ), ( 80 , 5.089329141 , -1.103571089 ), ( 80 , 5.309861126 , -1.040980243 ), ( 80 , 5.244382958 , -1.037565861 ), ( 80 , 5.15991352 , -1.029937019 ), ( 80 , 5.233456834 , -0.960737603 ), ( 80 , 5.580266167 , -1.100424186 ), ( 80 , 5.630514494 , -1.0508134 ), ( 80 , 5.619036651 , -1.036093147 ), ( 80 , 5.562999632 , -1.035181765 ), ( 80 , 5.398788584 , -1.085042426 ), ( 80 , 5.447679172 , -1.007155216 ), ( 80 , 5.653444274 , -1.041846121 ), ( 80 , 5.569451314 , -0.957418829 ), ( 80 , 5.584226669 , -0.877471334 ), ( 80 , 5.380948549 , -1.014255245 ), ( 80 , 5.2710657 , -0.974624619 ), ( 80 , 5.423559303 , -0.881021903 ), ( 80 , 5.402665254 , -0.883539338 ), ( 80 , 5.330616954 , -0.88622344 ), ( 80 , 5.508738649 , -0.8727396 ), ( 80 , 5.582457782 , -0.862167557 ), ( 80 , 5.455484898 , -0.847753465 ), ( 80 , 5.525677346 , -0.799285314 ), ( 80 , 6.13856636 , -1.041000712 ), ( 80 , 6.102492887 , -1.047193162 ), ( 80 , 6.091916716 , -1.043373004 ), ( 80 , 6.121335759 , -1.005747512 ), ( 80 , 6.279034952 , -1.039012368 ), ( 80 , 6.272155122 , -1.029123808 ), ( 80 , 6.25327466 , -0.948887785 ), ( 80 , 6.105985819 , -0.932352861 ), ( 80 , 5.906233839 , -1.016027136 ), ( 80 , 5.980224502 , -0.963759347 ), ( 80 , 5.92872637 , -0.937790471 ), ( 80 , 5.766853192 , -0.945224463 ), ( 80 , 5.837222411 , -0.878335987 ), ( 80 , 6.014856082 , -0.892336678 ), ( 80 , 6.032430737 , -0.867397212 ), ( 80 , 6.195917668 , -0.900882442 ), ( 80 , 6.163426063 , -0.874680112 ), ( 80 , 6.151578053 , -0.801011359 ), ( 80 , 6.11049078 , -0.753101526 ), ( 80 , 6.268861766 , -0.736453281 ), ( 80 , 6.244120335 , -0.726056164 ), ( 80 , 6.187389759 , -0.725432717 ), ( 80 , 6.21721254 , -0.669030236 ), ( 80 , 6.0215982 , -0.811444236 ), ( 80 , 6.047401212 , -0.68798885 ), ( 80 , 5.978458987 , -0.724164226 ), ( 80 , 5.948448268 , -0.698296072 ), ( 80 , 5.973782685 , -0.695923282 ), ( 80 , 6.106027802 , -0.63059518 ), ( 80 , 6.069053443 , -0.586853766 ), ( 80 , 6.041764476 , -0.572818423 ), ( 80 , 5.744248124 , -0.925867549 ), ( 80 , 5.726835434 , -0.865462022 ), ( 80 , 5.795765064 , -0.874502589 ), ( 80 , 5.814573124 , -0.851082854 ), ( 80 , 5.844052461 , -0.814820315 ), ( 80 , 5.780590014 , -0.798598949 ), ( 80 , 5.810572108 , -0.781023605 ), ( 80 , 5.801399244 , -0.719518898 ), ( 80 , 5.756984383 , -0.747175011 ), ( 80 , 5.725168053 , -0.750133563 ), ( 80 , 5.613826205 , -0.782723778 ), ( 80 , 5.578043115 , -0.807179147 ), ( 80 , 5.560054454 , -0.776546149 ), ( 80 , 5.610561061 , -0.764079315 ), ( 80 , 5.526652864 , -0.722302234 ), ( 80 , 5.544678025 , -0.697702362 ), ( 80 , 5.586643928 , -0.706263589 ), ( 80 , 5.588438222 , -0.676857906 ), ( 80 , 5.61048742 , -0.625468869 ), ( 80 , 5.905856766 , -0.618640729 ), ( 80 , 5.92721255 , -0.605761991 ), ( 80 , 5.935748678 , -0.569651357 ), ( 80 , 5.867125317 , -0.580670934 ), ( 80 , 5.897086939 , -0.564693865 ), ( 80 , 6.011621146 , -0.57938749 ), ( 80 , 6.035251961 , -0.543545135 ), ( 80 , 6.079461119 , -0.524542815 ), ( 80 , 6.065565208 , -0.505197689 ), ( 80 , 5.942419589 , -0.524097193 ), ( 80 , 5.915777975 , -0.529458355 ), ( 80 , 5.937327513 , -0.517919415 ), ( 80 , 5.99279143 , -0.495948864 ), ( 80 , 5.944176324 , -0.477915469 ), ( 80 , 5.959017488 , -0.470879682 ), ( 80 , 5.798421746 , -0.567115678 ), ( 80 , 5.873743005 , -0.507584276 ), ( 80 , 5.72456593 , -0.529121014 ), ( 80 , 5.732105035 , -0.5004232 ), ( 80 , 5.789667193 , -0.516849618 ), ( 80 , 5.845976334 , -0.478024382 ), ( 80 , 5.861046463 , -0.451044309 ), ( 80 , 5.82582453 , -0.453208009 ), ( 80 , 5.825594006 , -0.447642415 ), ( 80 , 5.846922834 , -0.384306375 ), ( 80 , 4.775953682 , -1.137945691 ), ( 80 , 4.847854117 , -1.100271125 ), ( 80 , 4.822446137 , -1.090861484 ), ( 80 , 4.804787859 , -1.085489782 ), ( 80 , 4.828408628 , -1.076182128 ), ( 80 , 4.992120747 , -1.0427183 ), ( 80 , 4.869338937 , -1.053810471 ), ( 80 , 4.90512659 , -1.029405161 ), ( 80 , 4.904035961 , -0.983964125 ), ( 80 , 4.962395705 , -0.974477269 ), ( 80 , 4.958106255 , -0.974899966 ), ( 80 , 5.054201662 , -1.027554137 ), ( 80 , 5.123870498 , -0.984680444 ), ( 80 , 5.029935541 , -1.016950424 ), ( 80 , 5.068357175 , -0.96652817 ), ( 80 , 5.127305434 , -0.934116436 ), ( 80 , 4.764011336 , -1.029504754 ), ( 80 , 4.752703527 , -1.00856844 ), ( 80 , 4.819933316 , -0.959183894 ), ( 80 , 4.931061391 , -0.95056186 ), ( 80 , 4.933198809 , -0.941838967 ), ( 80 , 4.884873708 , -0.945133739 ), ( 80 , 4.718637161 , -0.976942102 ), ( 80 , 4.781382992 , -0.96614002 ), ( 80 , 4.793366696 , -0.920702284 ), ( 80 , 4.887542924 , -0.901504742 ), ( 80 , 5.098216916 , -0.835704823 ), ( 80 , 5.010844624 , -0.860633315 ), ( 80 , 4.95948085 , -0.839078507 ), ( 80 , 4.973239393 , -0.826071417 ), ( 80 , 5.074995677 , -0.754170186 ), ( 80 , 5.237180836 , -0.91956047 ), ( 80 , 5.291494095 , -0.878104941 ), ( 80 , 5.2350514 , -0.887601896 ), ( 80 , 5.33462128 , -0.852862498 ), ( 80 , 5.354600832 , -0.848106576 ), ( 80 , 5.334752859 , -0.77819126 ), ( 80 , 5.32489707 , -0.748765284 ), ( 80 , 5.352948304 , -0.715506969 ), ( 80 , 5.198708408 , -0.734672113 ), ( 80 , 5.2677289 , -0.72970654 ), ( 80 , 5.274671814 , -0.710226534 ), ( 80 , 5.22441653 , -0.687397412 ), ( 80 , 5.221768446 , -0.647634132 ), ( 80 , 5.305599226 , -0.689264521 ), ( 80 , 5.353254943 , -0.652821853 ), ( 80 , 5.37896365 , -0.632313184 ), ( 80 , 5.349179739 , -0.587060176 ), ( 80 , 5.260803938 , -0.658247488 ), ( 80 , 5.279269576 , -0.621451541 ), ( 80 , 5.267957475 , -0.620291232 ), ( 80 , 5.227986653 , -0.614151036 ), ( 80 , 5.336730851 , -0.576799704 ), ( 80 , 5.269355588 , -0.581868851 ), ( 80 , 5.310152749 , -0.54469083 ), ( 80 , 4.742578523 , -0.924464657 ), ( 80 , 4.764774103 , -0.901524242 ), ( 80 , 4.826451814 , -0.888017227 ), ( 80 , 4.80119746 , -0.857441267 ), ( 80 , 4.858811411 , -0.876360372 ), ( 80 , 4.8443258 , -0.863747262 ), ( 80 , 4.801068874 , -0.826824037 ), ( 80 , 4.72115665 , -0.85190446 ), ( 80 , 4.760646303 , -0.843065897 ), ( 80 , 4.730491725 , -0.832875038 ), ( 80 , 4.888701172 , -0.756417173 ), ( 80 , 5.012208755 , -0.786726507 ), ( 80 , 5.054466052 , -0.695949405 ), ( 80 , 4.925562048 , -0.72146616 ), ( 80 , 4.822741714 , -0.778293193 ), ( 80 , 4.848843119 , -0.765260918 ), ( 80 , 4.816464215 , -0.740421912 ), ( 80 , 4.817414312 , -0.726098963 ), ( 80 , 4.745980865 , -0.696830989 ), ( 80 , 4.821313453 , -0.673262004 ), ( 80 , 4.88419234 , -0.650775646 ), ( 80 , 4.907289387 , -0.665470902 ), ( 80 , 4.966541628 , -0.651306832 ), ( 80 , 4.981931113 , -0.626045028 ), ( 80 , 4.9405918 , -0.621757951 ), ( 80 , 4.84725207 , -0.616476183 ), ( 80 , 4.898407886 , -0.587009554 ), ( 80 , 5.1490818 , -0.652776651 ), ( 80 , 5.040959648 , -0.607539013 ), ( 80 , 5.0570219 , -0.580826042 ), ( 80 , 5.074047366 , -0.574596176 ), ( 80 , 5.22973109 , -0.569486808 ), ( 80 , 5.266128231 , -0.513407878 ), ( 80 , 5.170971878 , -0.554814579 ), ( 80 , 5.200387027 , -0.498412802 ), ( 80 , 5.167784699 , -0.482423489 ), ( 80 , 5.210560371 , -0.465936871 ), ( 80 , 5.026803782 , -0.56954201 ), ( 80 , 5.041621039 , -0.562030901 ), ( 80 , 4.982383065 , -0.568925349 ), ( 80 , 5.021649671 , -0.555151763 ), ( 80 , 5.014037572 , -0.534527517 ), ( 80 , 5.038908782 , -0.538214865 ), ( 80 , 5.047555837 , -0.500335913 ), ( 80 , 4.934769816 , -0.540379181 ), ( 80 , 4.922622162 , -0.52983489 ), ( 80 , 4.974209235 , -0.489580427 ), ( 80 , 5.026853347 , -0.414351374 ), ( 80 , 5.058384261 , -0.411169847 ), ( 80 , 5.129722097 , -0.406822121 ), ( 80 , 5.065334228 , -0.3758704 ), ( 80 , 5.08815603 , -0.376018292 ), ( 80 , 5.502507914 , -0.676138738 ), ( 80 , 5.465616261 , -0.679044112 ), ( 80 , 5.587378136 , -0.623138767 ), ( 80 , 5.523885204 , -0.632848519 ), ( 80 , 5.520436751 , -0.564517457 ), ( 80 , 5.479595801 , -0.550724978 ), ( 80 , 5.479935773 , -0.549878586 ), ( 80 , 5.618507247 , -0.554935871 ), ( 80 , 5.598662839 , -0.537757912 ), ( 80 , 5.63665094 , -0.550611123 ), ( 80 , 5.538636323 , -0.558915518 ), ( 80 , 5.543558286 , -0.49726392 ), ( 80 , 5.603599835 , -0.44612933 ), ( 80 , 5.387757875 , -0.592048678 ), ( 80 , 5.401329238 , -0.583702325 ), ( 80 , 5.403032635 , -0.540238819 ), ( 80 , 5.442270134 , -0.483430168 ), ( 80 , 5.324328975 , -0.508432727 ), ( 80 , 5.412372297 , -0.509615794 ), ( 80 , 5.439977543 , -0.474431465 ), ( 80 , 5.374602554 , -0.489975838 ), ( 80 , 5.514387618 , -0.424505869 ), ( 80 , 5.550343427 , -0.420997951 ), ( 80 , 5.439008364 , -0.43484027 ), ( 80 , 5.44665874 , -0.398729217 ), ( 80 , 5.535387681 , -0.378442506 ), ( 80 , 5.762662597 , -0.40662207 ), ( 80 , 5.635954477 , -0.441589558 ), ( 80 , 5.617436925 , -0.412173076 ), ( 80 , 5.792857598 , -0.425756133 ), ( 80 , 5.793853358 , -0.376873446 ), ( 80 , 5.855574217 , -0.339218601 ), ( 80 , 5.720061776 , -0.352361645 ), ( 80 , 5.727615038 , -0.340726685 ), ( 80 , 5.795629555 , -0.311310807 ), ( 80 , 5.615828064 , -0.33263265 ), ( 80 , 5.656481497 , -0.321003126 ), ( 80 , 5.647347311 , -0.235335515 ), ( 80 , 5.681080332 , -0.213794562 ), ( 80 , 5.318499556 , -0.417028218 ), ( 80 , 5.329795793 , -0.409729893 ), ( 80 , 5.239984876 , -0.457688707 ), ( 80 , 5.306654928 , -0.410330555 ), ( 80 , 5.306942153 , -0.349467826 ), ( 80 , 5.437421659 , -0.379569102 ), ( 80 , 5.447247016 , -0.317650417 ), ( 80 , 5.321300733 , -0.347548422 ), ( 80 , 5.372725371 , -0.299125569 ), ( 80 , 5.284806688 , -0.353693525 ), ( 80 , 5.238237565 , -0.346571225 ), ( 80 , 5.250019246 , -0.318385102 ), ( 80 , 5.244118271 , -0.30630805 ), ( 80 , 5.152304913 , -0.363700971 ), ( 80 , 5.149442743 , -0.358627687 ), ( 80 , 5.168416844 , -0.303696917 ), ( 80 , 5.203016467 , -0.294724012 ), ( 80 , 5.332912015 , -0.272723339 ), ( 80 , 5.327570348 , -0.269281745 ), ( 80 , 5.35071864 , -0.213224577 ), ( 80 , 5.509002599 , -0.270080135 ), ( 80 , 5.532573355 , -0.272686889 ), ( 80 , 5.570213781 , -0.258712517 ), ( 80 , 5.44638298 , -0.292156107 ), ( 80 , 5.499273302 , -0.192131469 ), ( 80 , 5.588462907 , -0.224909368 ), ( 80 , 5.649289266 , -0.158600193 ), ( 80 , 5.649001088 , -0.12901791 ), ( 80 , 5.398501721 , -0.230109437 ), ( 80 , 5.40786012 , -0.205324758 ), ( 80 , 5.389681594 , -0.157145935 ), ( 80 , 5.476213734 , -0.125313857 ), ( 80 , 5.564974968 , -0.104864011 ), ( 80 , 5.561458902 , -0.104078922 ), ( 80 , 5.573847326 , -0.093636118 ), ( 80 , 5.555507225 , -0.07446782 ), ( 80 , 5.453341165 , -0.116881399 ), ( 80 , 5.216913831 , 0.91521504 ), ( 80 , 3.106044062 , -1.138065021 ), ( 80 , 4.452549048 , -0.849074196 ), ( 80 , 4.961226091 , 0.57422289 ) ); var FS : TFileStream; I,iSize : Integer; begin try FS := TFileStream.Create(database_path+'w08_0101.001', fmCreate); except exit; end; iSize:= Length(star_array); FS.WriteBuffer(iSize,SizeOf(iSize));//store length of array For I := 0 To iSize - 1 Do //store array begin FS.writebuffer(star_array[i,0],sizeof(single)); FS.writebuffer(star_array[i,1],sizeof(single)); FS.writebuffer(star_array[i,2],sizeof(single)); end; FS.Free;} end. ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_star_align.pas�����������������������������������������������������������0000644�0001751�0001751�00000120422�14344743400�017365� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_star_align; {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } interface uses Classes, SysUtils,Graphics,math, astap_main, unit_stack; type star_list= array of array of double; solution_vector = array[0..2] of double; var starlist1, starlist2 :star_list; quad_star_distances1, quad_star_distances2: star_list; A_XYpositions : star_list; b_Xrefpositions,b_Yrefpositions : array of double; quad_smallest : double; nr_references,nr_references2 : integer; solution_vectorX, solution_vectorY,solution_cblack : solution_vector ; Savefile: file of solution_vector;{to save solution if required for second and third step stacking} procedure find_stars(img :image_array; hfd_min:double; max_stars :integer;out starlist1: star_list);{find stars and put them in a list} procedure find_quads(starlist :star_list; min_leng:double; out quad_smallest:double; out quad_star_distances :star_list); {find more quads build quads using closest stars} procedure find_triples_using_quads(starlist :star_list; min_leng:double; out quad_smallest:double; out quad_star_distances :star_list); {Find triples and store as quads. Triples are extracted from quads to maximize the number of triples and cope with low amount of detectable stars. For a low star count (<30) the star patterns can be different between image and database due to small magnitude differences. V 2022-9-23} procedure find_quads_xy(starlist :star_list; out starlistquads :star_list); {FOR DISPLAY ONLY, build quads using closest stars, revised 2020-9-28} function find_offset_and_rotation(minimum_quads: integer;tolerance:double) : boolean; {find difference between ref image and new image} procedure reset_solution_vectors(factor: double); {reset the solution vectors} procedure display_quads(starlistquads :star_list);{draw quads} implementation uses unit_annotation; { lsq_fit: } { Find the solution vector of an overdetermined system of linear equations according to the method of least squares using GIVENS rotations } { } { Solve x of A x = b with the least-squares method } { In matrix calculations, b_matrix[0..nr_equations-1,0..nr_columns-1]:=solution_vector[0..2] * A_XYpositions[0..nr_equations-1,0..nr_columns-1]} { } { see also Montenbruck & Pfleger, Astronomy on the personal computer} procedure lsq_fit( A_matrix: star_list; {[0..nr_equations-1, 0..3]} b_matrix : array of double;{equations result, b=A*s} var x_matrix: array of double ); const tiny = 1E-10; {accuracy} var i,j,k, nr_equations,nr_columns,hhh : integer; p,q,h : double; temp_matrix : star_list; begin nr_equations:=length(A_matrix); nr_columns:=length(A_matrix[nr_equations-1]);{should be 3 for this application} temp_matrix:=A_matrix; {In dynamic arrays, the assignment statement duplicates only the reference to the array, while SetLength does the job of physically copying/duplicating it, leaving two separate, independent dynamic arrays.} setlength(temp_matrix,nr_equations,nr_columns);{duplicate A_matrix to protect data in A_matrix} for j:=0 to nr_columns-1 do {loop over columns of temp_matrix} {eliminate matrix elements A[i,j] with i>j from column j} for i:=j+1 to nr_equations-1 do if temp_matrix[i,j]<>0 then begin{calculate p, q and new temp_matrix[j,j]; set temp_matrix[i,j]=0} if abs(temp_matrix[j,j])<tiny*abs(temp_matrix[i,j]) then begin p:=0; q:=1; temp_matrix[j,j]:=-temp_matrix[i,j]; temp_matrix[i,i]:=0; end else begin h:=sqrt(temp_matrix[j,j]*temp_matrix[j,j]+temp_matrix[i,j]*temp_matrix[i,j]); if temp_matrix[j,j]<0 then h:=-h; p:=temp_matrix[j,j]/h; q:=-temp_matrix[i,j]/h; temp_matrix[j,j]:=h; temp_matrix[i,j]:=0; end; {calculate the rest of the line} for k:=j+1 to nr_columns-1 do begin h:= p*temp_matrix[j,k] - q*temp_matrix[i,k]; temp_matrix[i,k] := q*temp_matrix[j,k] + p*temp_matrix[i,k]; temp_matrix[j,k] := h; end; h:= p*b_matrix[j] - q*b_matrix[i]; b_matrix[i] := q*b_matrix[j] + p*b_matrix[i]; b_matrix[j] := h; end; for i:=0 to nr_columns-1 do x_matrix[i]:=0; //2022, extra precaution to zero x_matrix for i:= nr_columns-1 downto 0 do {back substitution} begin H:=b_matrix[i]; for k:=i+1 to nr_columns-1 do h:=h-temp_matrix[i,k]*x_matrix[k]; if temp_matrix[i,i]<>0 then x_matrix[i] := h/temp_matrix[i,i] else x_matrix[i]:=9999999999999999; //v2022. Prevent runtime error dividing by zero. Should normally not happen. In case of zero due to wrong double star detection by using triples force a failure {solution vector x:=x_matrix[0]x+x_matrix[1]y+x_matrix[2]} end; end; {lsq_fit} procedure display_quads(starlistquads :star_list);{display quads in the viewer} var i, nrquads,x,y, flipx,flipy: integer; begin if head.naxis=0 then exit; {file loaded?} mainwindow.image1.Canvas.Pen.Mode := pmMerge; mainwindow.image1.Canvas.Pen.width := round(1+head.height/mainwindow.image1.height);{thickness lines} mainwindow.image1.Canvas.brush.Style:=bsClear; if mainwindow.flip_horizontal1.Checked=true then begin flipx:=-1; x:=head.width; end else begin flipx:=1; x:=0; end; if mainwindow.flip_vertical1.Checked=false then begin flipy:=-1; y:=head.height; end else begin flipy:=1; y:=0; end; nrquads:=Length(starlistquads[0])-1; for i:=0 to nrquads do begin mainwindow.image1.Canvas.Pen.Color :=$606060 +random($9F9F9F); if odd(i) then mainwindow.image1.Canvas.Pen.Style := pssolid else mainwindow.image1.Canvas.Pen.Style := psdot; try mainwindow.image1.Canvas.moveto(x+flipx*round(starlistquads[0,i]),y+flipy*round(starlistquads[1,i]));{move to star 1} mainwindow.image1.Canvas.lineto(x+flipx*round(starlistquads[2,i]),y+flipy*round(starlistquads[3,i]));{draw line star1-star2} mainwindow.image1.Canvas.lineto(x+flipx*round(starlistquads[4,i]),y+flipy*round(starlistquads[5,i]));{draw line star2-star3} mainwindow.image1.Canvas.lineto(x+flipx*round(starlistquads[0,i]),y+flipy*round(starlistquads[1,i]));{draw line star3-star1} mainwindow.image1.Canvas.lineto(x+flipx*round(starlistquads[6,i]),y+flipy*round(starlistquads[7,i]));{draw line star1-star4} mainwindow.image1.Canvas.lineto(x+flipx*round(starlistquads[4,i]),y+flipy*round(starlistquads[5,i]));{draw line star4-star3} mainwindow.image1.Canvas.moveto(x+flipx*round(starlistquads[6,i]),y+flipy*round(starlistquads[7,i]));{move to star4} mainwindow.image1.Canvas.lineto(x+flipx*round(starlistquads[2,i]),y+flipy*round(starlistquads[3,i]));{draw line star4-star2} except end; end; memo2_message(inttostr( nrquads)+ ' quads found.'); end; procedure QuickSort_starlist(var A: star_list; iLo, iHi: Integer) ;{ Fast quick sort. Sorts elements in the array list with indices between lo and hi, sort in X only} var Lo, Hi : integer; Pivot, Tx,Ty: double;{ pivot, T are the same type as the elements of array } begin Lo := iLo; Hi := iHi; Pivot := A[0,(Lo + Hi) div 2]; repeat while A[0,Lo] < Pivot do Inc(Lo) ; {sort in X only} while A[0,Hi] > Pivot do Dec(Hi) ; if Lo <= Hi then begin {swap} Tx := A[0,Lo]; Ty := A[1,Lo]; A[0,Lo] := A[0,Hi]; A[1,Lo] := A[1,Hi]; A[0,Hi] := Tx; A[1,Hi] := Ty; Inc(Lo) ; Dec(Hi) ; end; until Lo > Hi; if Hi > iLo then QuickSort_starlist(A, iLo, Hi) ; {executes itself recursively} if Lo < iHi then QuickSort_starlist(A, Lo, iHi) ; {executes itself recursively} end; procedure find_quads(starlist :star_list; min_leng:double; out quad_smallest:double; out quad_star_distances :star_list); {build quads using closest stars, revised 2022-4-10} var i,j,k,nrstars,j_used1,j_used2,j_used3,nrquads,Sstart,Send,tolerance : integer; distance,distance1,distance2,distance3,x1,x2,x3,x4,xt,y1,y2,y3,y4,yt, dist1,dist2,dist3,dist4,dist5,dist6,dummy,disty : double; identical_quad : boolean; begin nrstars:=Length(starlist[0]);{number of quads will be equal (super rare) or lower} quad_smallest:=9999999; if nrstars<4 then begin {not enough stars for quads} SetLength(quad_star_distances,8,0); exit; end; if nrstars>=150 then begin quickSort_starlist(starlist,0,nrstars-1); {sort in X only} tolerance:=round(0.5*sqrt(nrstars));{tolerance band is about twice the every star distance} end else tolerance:=1;{switch pre-filtering in X off} nrquads:=0; SetLength(quad_star_distances,8,nrstars);{will contain the six distances and the central position} j_used1:=0;{give it a default value} j_used2:=0; j_used3:=0; for i:=0 to nrstars-1 do begin distance1:=1E99;{distance closest star} distance2:=1E99;{distance second closest star} distance3:=1E99;{distance third closest star} Sstart:=max(0,i-(nrstars div tolerance)); Send:=min(nrstars-1,i+(nrstars div tolerance)); {search in a limited X band only. The stars list is sorted in X. Search speed increases with about 30%} for j:=Sstart to Send do {find closest stars} begin if j<>i{not the first star} then begin disty:=sqr(starlist[1,j]-starlist[1,i]); if disty<distance3 then {pre-check to increase processing speed with a small amount} begin distance:=sqr(starlist[0,j]-starlist[0,i])+distY ;{square distances are used} if distance>1 then {not an identical star. Mod 2021-6-25} begin if distance<distance1 then begin distance3:=distance2;{distance third closest star} j_used3:=j_used2;{remember the star position in the list} distance2:=distance1;{distance second closest star} j_used2:=j_used1;{remember the star position in the list} distance1:=distance;{distance closest star} j_used1:=j;{mark later as used} end else if distance<distance2 then begin distance3:=distance2;{distance third closest star} j_used3:=j_used2;{remember the star position in the list} distance2:=distance;{distance second closest star} j_used2:=j; end else if distance<distance3 then begin distance3:=distance;{third closest star} j_used3:=j;{remember the star position in the list} end; end;{not an identical star. Mod 2021-6-25} end; {pre-check} end; end;{j} x1:=starlist[0,i]; {copy first star position to the quad array} y1:=starlist[1,i]; x2:=starlist[0,j_used1]; {copy the second star position to the quad array} y2:=starlist[1,j_used1]; x3:=starlist[0,j_used2]; y3:=starlist[1,j_used2]; x4:=starlist[0,j_used3]; y4:=starlist[1,j_used3]; xt:=(x1+x2+x3+x4)/4; {mean x position quad} yt:=(y1+y2+y3+y4)/4; {mean y position quad} identical_quad:=false; if nrquads>=1 then {already a quad stored} begin k:=0; repeat {check for identical quads} if ( (abs(xt-quad_star_distances[6,k])<1) and (abs(yt-quad_star_distances[7,k])<1) ) then {same center position, found identical quad already in the list} begin identical_quad:=true; k:=999999999;{stop} end; inc(k); until k>=nrquads; end; if identical_quad=false then {new quad found} begin // try dist1:=sqrt(distance1);{distance star1-star2, use previous value already calculated} dist2:=sqrt(distance2);{distance star1-star3} dist3:=sqrt(distance3);{distance star1-star4} dist4:=sqrt(sqr(x2-x3)+ sqr(y2-y3));{distance star2-star3} dist5:=sqrt(sqr(x2-x4)+ sqr(y2-y4));{distance star2-star4} dist6:=sqrt(sqr(x3-x4)+ sqr(y3-y4));{distance star3-star4} {sort six distances on size in five steps} for j:=1 to 5 do {sort on distance} begin if dist6>dist5 then begin dummy:=dist5; dist5:=dist6; dist6:=dummy; end; if dist5>dist4 then begin dummy:=dist4; dist4:=dist5; dist5:=dummy; end; if dist4>dist3 then begin dummy:=dist3; dist3:=dist4; dist4:=dummy; end; if dist3>dist2 then begin dummy:=dist2; dist2:=dist3; dist3:=dummy; end; if dist2>dist1 then begin dummy:=dist1; dist1:=dist2; dist2:=dummy; end; end; quad_star_distances[0,nrquads]:=dist1;{largest distance} quad_star_distances[1,nrquads]:=dist2/dist1;{scale relative to largest distance} quad_star_distances[2,nrquads]:=dist3/dist1; quad_star_distances[3,nrquads]:=dist4/dist1; quad_star_distances[4,nrquads]:=dist5/dist1; quad_star_distances[5,nrquads]:=dist6/dist1; if dist1<quad_smallest then quad_smallest:=dist1;{measure the smallest} // except // On E :Exception do // begin // memo2_message(E.Message+ ' exception in procedure calc_quad_distances'); // stackmenu1.Memo2.enablealign;{allow paint messages from other controls to update tmemo. Mod 2021-06-26} // stackmenu1.Memo2.Lines.EndUpdate; {update memo2} // end; // end; if dist1>min_leng then {large enough for earth based telescope} begin quad_star_distances[6,nrquads]:=xt;{store mean x position} quad_star_distances[7,nrquads]:=yt;{store mean y position} inc(nrquads); {new unique quad found} end; end; end;{i} SetLength(quad_star_distances,8,nrquads);{adapt to the number found} end; procedure find_triples_using_quads(starlist :star_list; min_leng:double; out quad_smallest:double; out quad_star_distances :star_list); {Find triples and store as quads. Triples are extracted from quads to maximize the number of triples and cope with low amount of detectable stars. For a low star count (<30) the star patterns can be different between image and database due to small magnitude differences. V 2022-9-23} var i,j,k,nrstars,j_used1,j_used2,j_used3,nrquads,Sstart,Send,tolerance, nrrealquads : integer; distance,distance1,distance2,distance3,x1a,x2a,x3a,x4a,xt,y1a,y2a,y3a,y4a,yt, {dist4,dist5,dist6,}dummy,disty, dist12,dist13,dist14,dist23,dist24,dist34, quad_tolerance : double; identical_quad : boolean; quad_centers : star_list; procedure get_triple(x1,y1,x2,y2,x3,y3,dist1,dist2,dist3: double); var j : integer; begin xt:=(x1+x2+x3)/3; {mean x position triple 123} yt:=(y1+y2+y3)/3; {mean y position triple 123} identical_quad:=false; if nrquads>=1 then {already a triple stored} begin k:=0; repeat {check for identical quads} if ( (abs(xt-quad_star_distances[6,k])<1) and (abs(yt-quad_star_distances[7,k])<1) ) then {same center position, found identical quad already in the list} begin identical_quad:=true; k:=999999999;{stop} end; inc(k); until k>=nrquads; end; if identical_quad=false then {new triple found} begin //quad-triples method. sort the distances on length. Largest first and scale the others relative to largest distance} {sort six distances on size in five steps} for j:=1 to 2 do {sort on distance} begin if dist3>dist2 then begin dummy:=dist2; dist2:=dist3; dist3:=dummy; end; if dist2>dist1 then begin dummy:=dist1; dist1:=dist2; dist2:=dummy; end; end; //store triple in quad record quad_star_distances[0,nrquads]:=dist1;{largest distance} quad_star_distances[1,nrquads]:=dist2/dist1;{scale relative to largest distance} quad_star_distances[2,nrquads]:=dist3/dist1; quad_star_distances[3,nrquads]:=0; //fill the rest of quad record with zeros quad_star_distances[4,nrquads]:=0; quad_star_distances[5,nrquads]:=0; if dist1<quad_smallest then quad_smallest:=dist1;{measure the smallest} if dist1>min_leng then {large enough for earth based telescope} begin quad_star_distances[6,nrquads]:=xt; {mean x position triple} ;{store mean x position} quad_star_distances[7,nrquads]:=yt;{store mean y position} inc(nrquads); {new unique quad found} end; end;//123 end; begin nrstars:=Length(starlist[0]);{number of quads will be equal (super rare) or lower} quad_smallest:=9999999; if nrstars<4 then begin {not enough stars for quads} SetLength(quad_star_distances,8,0); exit; end; if nrstars>=150 then begin quickSort_starlist(starlist,0,nrstars-1); {sort in X only} tolerance:=round(0.5*sqrt(nrstars));{tolerance band is about twice the every star distance} end else tolerance:=1;{switch pre-filtering in X off} nrquads:=0;//triples as quads nrrealquads:=0;//real quads SetLength(quad_star_distances,8,nrstars*4);{will contain the six distances and the central position of the triples stored as quads} SetLength(quad_centers,2,nrstars);{temporary storage for quad center to check for duplicates} j_used1:=0;{give it a default value} j_used2:=0; j_used3:=0; for i:=0 to nrstars-1 do begin distance1:=1E99;{distance closest star} distance2:=1E99;{distance second closest star} distance3:=1E99;{distance third closest star} Sstart:=max(0,i-(nrstars div tolerance)); Send:=min(nrstars-1,i+(nrstars div tolerance)); {search in a limited X band only. The stars list is sorted in X. Search speed increases with about 30%} for j:=Sstart to Send do {find closest stars} begin if j<>i{not the first star} then begin disty:=sqr(starlist[1,j]-starlist[1,i]); if disty<distance3 then {pre-check to increase processing speed with a small amount} begin distance:=sqr(starlist[0,j]-starlist[0,i])+distY ;{square distances are used} if distance>1 then {not an identical star. Mod 2021-6-25} begin if distance<distance1 then begin distance3:=distance2;{distance third closest star} j_used3:=j_used2;{remember the star position in the list} distance2:=distance1;{distance second closest star} j_used2:=j_used1;{remember the star position in the list} distance1:=distance;{distance closest star} j_used1:=j;{mark later as used} end else if distance<distance2 then begin distance3:=distance2;{distance third closest star} j_used3:=j_used2;{remember the star position in the list} distance2:=distance;{distance second closest star} j_used2:=j; end else if distance<distance3 then begin distance3:=distance;{third closest star} j_used3:=j;{remember the star position in the list} end; end;{not an identical star. Mod 2021-6-25} end; {pre-check} end; end;{j} x1a:=starlist[0,i]; {copy first star position to the quad array} y1a:=starlist[1,i]; x2a:=starlist[0,j_used1]; {copy the second star position to the quad array} y2a:=starlist[1,j_used1]; x3a:=starlist[0,j_used2]; y3a:=starlist[1,j_used2]; x4a:=starlist[0,j_used3]; y4a:=starlist[1,j_used3]; xt:=(x1a+x2a+x3a+x4a)/4; {mean x position quad with stars 1234} yt:=(y1a+y2a+y3a+y4a)/4; {mean y position quad with stars 1234} identical_quad:=false; if nrrealquads>=1 then {already a quad stored} begin k:=0; repeat {check for identical quads} if ( (abs(xt-quad_centers[0,k])<1) and (abs(yt-quad_centers[1,k])<1) ) then {same center position, found identical quad already in the list} begin identical_quad:=true; k:=999999999;{stop} end; inc(k); until k>=nrrealquads; end; if identical_quad=false then {new quad found} begin //quad-triples method. Split the found quad in four triples and store as quad. This will help for below 30 faint stars where due magnitude differences the database show some different stars and therefore patterns} quad_centers[0,nrrealquads]:=xt; //store previously found quad center quad_centers[1,nrrealquads]:=yt; inc( nrrealquads); dist12:=sqrt(distance1); dist13:=sqrt(distance2); dist14:=sqrt(distance3); dist23:=sqrt(sqr(x2a-x3a)+ sqr(y2a-y3a));{distance star2-star3} dist24:=sqrt(sqr(x2a-x4a)+ sqr(y2a-y4a));{distance star2-star4} dist34:=sqrt(sqr(x3a-x4a)+ sqr(y3a-y4a));{distance star3-star4} get_triple(x1a,y1a,x2a,y2a,x3a,y3a,dist12,dist23,dist13);//stars 123 get_triple(x1a,y1a,x2a,y2a,x4a,y4a,dist12,dist24,dist14);//stars 124 get_triple(x1a,y1a,x3a,y3a,x4a,y4a,dist13,dist34,dist14);//stars 134 get_triple(x2a,y2a,x3a,y3a,x4a,y4a,dist23,dist34,dist24);//stars 234 end; end;{i} quad_centers:=nil;//free mem SetLength(quad_star_distances,8,nrquads);{adapt to the number found} end; procedure find_quads_xy(starlist :star_list; out starlistquads :star_list); {FOR DISPLAY ONLY, build quads using closest stars, revised 2020-9-28} var i,j,k,nrstars_min_one,j_used1,j_used2,j_used3,nrquads : integer; distance,distance1,distance2,distance3{,dummy },x1,x2,x3,x4,xt,y1,y2,y3,y4,yt : double; identical_quad : boolean; begin nrstars_min_one:=Length(starlist[0])-1; if nrstars_min_one<3 then begin {not enough stars for quads} SetLength(starlistquads,10,0); exit; end; nrquads:=0; SetLength(starlistquads,10,nrstars_min_one);{number of quads will be lower} j_used1:=0;{give it a default value} j_used2:=0; j_used3:=0; for i:=0 to nrstars_min_one do begin distance1:=1E99;{distance closest star} distance2:=1E99;{distance second closest star} distance3:=1E99;{distance third closest star} for j:=0 to nrstars_min_one do {find closest stars} begin if j<>i{not the first star} then begin distance:=sqr(starlist[0,j]-starlist[0,i])+ sqr(starlist[1,j]-starlist[1,i]); if distance>1 then {not an identical star. Mod 2021-6-25} begin if distance<distance1 then begin distance3:=distance2;{distance third closest star} j_used3:=j_used2; distance2:=distance1;{distance second closest star} j_used2:=j_used1; distance1:=distance;{distance closest star} j_used1:=j;{mark later as used} end else if distance<distance2 then begin distance3:=distance2;{distance third closest star} j_used3:=j_used2; distance2:=distance;{distance second closest star} j_used2:=j; end else if distance<distance3 then begin distance3:=distance;{third closest star} j_used3:=j; end; end;{not an identical star. Mod 2021-6-25} end; end;{j} x1:=starlist[0,i]; {1e star position} y1:=starlist[1,i]; x2:=starlist[0,j_used1]; {2e star positio} y2:=starlist[1,j_used1]; x3:=starlist[0,j_used2]; y3:=starlist[1,j_used2]; x4:=starlist[0,j_used3]; y4:=starlist[1,j_used3]; xt:=(x1+x2+x3+x4)/4; {mean x position quad} yt:=(y1+y2+y3+y4)/4; {mean y position quad} identical_quad:=false; if nrquads>=1 then {already a quad stored} begin k:=0; repeat {check for identical quads} if ( (abs(xt-starlistquads[8,k])<1) and (abs(yt-starlistquads[9,k])<1) ) then {same center position, found identical quad already in the list} begin identical_quad:=true; k:=999999999;{stop} end; inc(k); until k>=nrquads; end; if identical_quad=false then {new quad found} begin starlistquads[0,nrquads]:=x1; {copy first star position to the quad array} starlistquads[1,nrquads]:=y1; starlistquads[2,nrquads]:=x2; {copy the second star position to the quad array} starlistquads[3,nrquads]:=y2; starlistquads[4,nrquads]:=x3; starlistquads[5,nrquads]:=y3; starlistquads[6,nrquads]:=x4; starlistquads[7,nrquads]:=y4; starlistquads[8,nrquads]:=xt;{store mean x position} starlistquads[9,nrquads]:=yt;{store mean y position} inc(nrquads); {new unique quad found} end; end;{i} SetLength(starlistquads,10,nrquads);{reduce array length to number quads one shorter since last entry is not filled} end; function find_fit( minimum_count: integer; quad_tolerance: double) : boolean; var nrquads1,nrquads2, i,j,k: integer; median_ratio : double; matchList1, matchlist2 : array of array of integer; ratios : array of double; begin result:=false; {assume failure} nrquads1:=Length(quad_star_distances1[0]); nrquads2:=Length(quad_star_distances2[0]); {minimum_count required, 6 for stacking, 3 for plate solving} if ((nrquads1<minimum_count) or (nrquads2< minimum_count)) then begin nr_references:=0; exit; end;{no solution abort before run time errors} {Find a tolerance resulting in 6 or more of the best matching quads} setlength(matchlist2,2,1000); nr_references2:=0; i:=0; repeat j:=0; repeat {database} {image } if abs(quad_star_distances1[1,i] - quad_star_distances2[1,j])<=quad_tolerance then {all length are scaled to the longest length so scale independent} if abs(quad_star_distances1[2,i] - quad_star_distances2[2,j])<=quad_tolerance then if abs(quad_star_distances1[3,i] - quad_star_distances2[3,j])<=quad_tolerance then if abs(quad_star_distances1[4,i] - quad_star_distances2[4,j])<=quad_tolerance then if abs(quad_star_distances1[5,i] - quad_star_distances2[5,j])<=quad_tolerance then begin matchlist2[0,nr_references2]:=i;{store match position} matchlist2[1,nr_references2]:=j; inc(nr_references2); if nr_references2>=length(matchlist2[0]) then setlength(matchlist2,2,nr_references2+1000);{get more space} end; inc(j); until j>=nrquads2;{j loop} inc(i); until i>=nrquads1;{i loop} //memo2_message('Found '+inttostr( nr_references2)+ ' references'); if nr_references2< minimum_count then begin nr_references:=0; exit; end;{no solution abort before run time errors} setlength(ratios,nr_references2); {calculate median of the longest lenght ratio for matching quads} for k:=0 to nr_references2-1 do ratios[k]:=quad_star_distances1[0,matchlist2[0,k]]/quad_star_distances2[0,matchlist2[1,k]]; {ratio between largest length of found and reference quad} median_ratio:=smedian(ratios,nr_references2); {calculate median absolute deviation of the longest length ratio for matching quads} // for k:=0 to nr_references2-1 do {find standard deviation orientation quads} // deviations[k]:=abs(median_ratio1-ratios[k]); // mad:=smedian(deviations);{mad is about 0.67499 *sigma for a normal distribution} // memo2_message('mad :'+floattostr6(mad)); nr_references:=0; setlength(matchlist1,2,1000); for k:=0 to nr_references2-1 do {throw outliers out} begin if abs(median_ratio-ratios[k])<=quad_tolerance*median_ratio then begin matchlist1[0,nr_references]:=matchlist2[0,k];{copy match position within tolerance} matchlist1[1,nr_references]:=matchlist2[1,k]; // if abs(quad_star_distances2[6,matchlist1[1,1]]-880.617)<1 then // beep; inc(nr_references); if nr_references>=length(matchlist1[0]) then setlength(matchlist1,2,nr_references+1000);{get more space if running out of space} end else if solve_show_log then memo2_message('quad outlier removed due to abnormal size: '+floattostr6(100*ratios[k]/median_ratio)+'%'); end; ratios:=nil; {free mem} {outliers in largest length removed} if (nr_references>=3) then {use 3 quads center position} begin {fill equations} setlength(A_XYpositions,nr_references,3); setlength(b_Xrefpositions,nr_references); setlength(b_Yrefpositions,nr_references); for k:=0 to nr_references-1 do begin A_XYpositions[k,0]:=quad_star_distances2[6,matchlist1[1,k]]; {average x position of quad} A_XYpositions[k,1]:=quad_star_distances2[7,matchlist1[1,k]]; {average y position of quad} A_XYpositions[k,2]:=1; // if A_XYpositions[0,0]=A_XYpositions[1,0] then // beep; b_Xrefpositions[k]:=quad_star_distances1[6,matchlist1[0,k]]; {x position of ref quad/database} b_Yrefpositions[k]:=quad_star_distances1[7,matchlist1[0,k]]; {Y position of ref quad} {in matrix calculations, b_refpositionX[0..nr_equations-1,0..2]:=solution_vectorX[0..2] * A_XYpositions[0..nr_equations-1,0..2]} { b_refpositionY[0..nr_equations-1,0..2]:=solution_matrixY[0..2] * A_XYpositions[0..nr_equations-1,0..2]} end; result:=true;{3 or more references} end; // else // if solve_show_log then {global variable set in find stars} // memo2_message('Found matches: '+inttostr(nr_references)); matchlist2:=nil; matchlist1:=nil; end; procedure get_brightest_stars(nr_stars_required: integer;{500} highest_snr: double;snr_list : array of double; var starlist1 : star_list);{ get the brightest star from a star list} const range=200; var snr_histogram : array [0..range] of integer; i,count,nrstars, snr_scaled: integer; snr_required : double; begin for i:=0 to length(snr_histogram)-1 do snr_histogram[i]:=0; {clear snr histogram} for i:=0 to length(snr_list)-1 do begin // memo2_message(#9+inttostr(i)+#9+floattostr6(snr_list[i])) ; snr_scaled:=trunc(snr_list[i]*range/highest_snr); snr_histogram[snr_scaled]:=snr_histogram[snr_scaled]+1;{count how often this snr value is measured} end; count:=0; i:=range+1; repeat dec(i); count:=count+snr_histogram[i]; // memo2_message(#9+inttostr(snr_histogram[i])+ #9 +inttostr(i)); until ((i<=0) or (count>=nr_stars_required)); snr_required:=highest_snr*i/range; count:=0; nrstars:=length(starlist1[0]); for i:=0 to nrstars-1 do if snr_list[i]>=snr_required then {preserve brightest stars} begin starlist1[0,count]:=starlist1[0,i];{overwrite in the same array} starlist1[1,count]:=starlist1[1,i]; // For testing: // memo2_message(#9+floattostr(snr_list[i])+#9+floattostr(starlist2[0,count])+ #9 +floattostr(starlist2[1,count])); // mainwindow.image1.Canvas.Pen.Mode := pmMerge; // mainwindow.image1.Canvas.Pen.width := round(1+head.height/mainwindow.image1.height);{thickness lines} // mainwindow.image1.Canvas.brush.Style:=bsClear; // mainwindow.image1.Canvas.Pen.Color := clred; // mainwindow.image1.Canvas.Rectangle(round(starlist1[0,i])-15,head.height-round(starlist1[1,i])-15, round(starlist1[0,i])+15, head.height-round(starlist1[1,i])+15);{indicate hfd with rectangle} inc(count); end; setlength(starlist1,2,count);{reduce length to used length} end; procedure find_stars(img :image_array; hfd_min:double; max_stars :integer;out starlist1: star_list);{find stars and put them in a list} var fitsX, fitsY,nrstars,radius,i,j,retries,m,n,xci,yci,sqr_radius,width2,height2 : integer; hfd1,star_fwhm,snr,xc,yc,highest_snr,flux, detection_level : double; img_sa : image_array; snr_list : array of double; // flip_vertical,flip_horizontal : boolean; // starX,starY :integer; startTick2 : qword;{for timing/speed purposes} const buffersize=5000;{5000} begin {for testing} // mainwindow.image1.Canvas.Pen.Mode := pmMerge; // mainwindow.image1.Canvas.Pen.width := round(1+hd.height/mainwindow.image1.height);{thickness lines} // mainwindow.image1.Canvas.brush.Style:=bsClear; // mainwindow.image1.Canvas.font.color:=$FF; // mainwindow.image1.Canvas.font.size:=10; // mainwindow.image1.Canvas.Pen.Color := $FF; // flip_vertical:=mainwindow.flip_vertical1.Checked; // flip_horizontal:=mainwindow.Flip_horizontal1.Checked; width2:=length(img[0]);{width} height2:=length(img[0,0]);{height} solve_show_log:=stackmenu1.solve_show_log1.Checked;{show details, global variable} if solve_show_log then begin memo2_message('Start finding stars'); startTick2 := gettickcount64;end; SetLength(starlist1,2,buffersize);{set array length} setlength(snr_list,buffersize);{set array length} setlength(img_sa,1,width2,height2);{set length of image array} detection_level:=max(3.5*noise_level[0],star_level); {level above background. Start with a high value} retries:=2; {try up to three times to get enough stars from the image} repeat highest_snr:=0; nrstars:=0;{set counters at zero} for fitsY:=0 to height2-1 do for fitsX:=0 to width2-1 do img_sa[0,fitsX,fitsY]:=-1;{mark as star free area} for fitsY:=0 to height2-1-1 do begin for fitsX:=0 to width2-1-1 do begin if (( img_sa[0,fitsX,fitsY]<=0){star free area} and (img[0,fitsX,fitsY]-cblack>detection_level){star}) then {new star, at least 3.5 * sigma above noise level} begin HFD(img,fitsX,fitsY,14{annulus radius},99 {flux aperture restriction},0 {adu_e}, hfd1,star_fwhm,snr,flux,xc,yc);{star HFD and FWHM} if ((hfd1<=10) and (snr>10) and (hfd1>hfd_min) {0.8 is two pixels minimum} ) then begin {for testing} // if flip_vertical=false then starY:=round(height2-yc) else starY:=round(yc); // if flip_horizontal=true then starX:=round(width2-xc) else starX:=round(xc); // size:=round(5*hfd1); // mainwindow.image1.Canvas.Rectangle(starX-size,starY-size, starX+size, starY+size);{indicate hfd with rectangle} // mainwindow.image1.Canvas.textout(starX+size,starY+size,floattostrf(hfd1, ffgeneral, 2,1));{add hfd as text} // mainwindow.image1.Canvas.textout(starX+size,starY+size,floattostrf(snr, ffgeneral, 2,1));{add hfd as text} radius:=round(3.0*hfd1);{for marking star area. A value between 2.5*hfd and 3.5*hfd gives same performance. Note in practice a star PSF has larger wings then predicted by a Gaussian function} sqr_radius:=sqr(radius); xci:=round(xc);{star center as integer} yci:=round(yc); for n:=-radius to +radius do {mark the whole circular star area as occupied to prevent double detection's} for m:=-radius to +radius do begin j:=n+yci; i:=m+xci; if ((j>=0) and (i>=0) and (j<height2) and (i<width2) and (sqr(m)+sqr(n)<=sqr_radius)) then img_sa[0,i,j]:=1; end; {store values} inc(nrstars); if nrstars>=length(starlist1[0]) then begin SetLength(starlist1,2,nrstars+buffersize);{adapt array size if required} setlength(snr_list,nrstars+buffersize);{adapt array size if required} end; starlist1[0,nrstars-1]:=xc; {store star position} starlist1[1,nrstars-1]:=yc; snr_list[nrstars-1]:=snr;{store SNR} if snr>highest_snr then highest_snr:=snr;{find to highest snr value} end; end; end; end; if solve_show_log then memo2_message(inttostr(nrstars)+' stars found of the requested '+inttostr(max_stars)+'. Background value is '+inttostr(round(cblack))+ '. Detection level used '+inttostr( round(detection_level)) +' above background. Star level is '+inttostr(round(star_level))+' above background. Noise level is '+floattostrF(noise_level[0],ffFixed,0,0)); dec(retries);{In principle not required. Try again with lower detection level} if detection_level<=7*noise_level[0] then retries:= -1 {stop} else detection_level:=max(6.999*noise_level[0],min(30*noise_level[0],detection_level*6.999/30)); {very high -> 30 -> 7 -> stop. Or 60 -> 14 -> 7.0. Or for very short exposures 3.5 -> stop} until ((nrstars>=max_stars) or (retries<0));{reduce dection level till enough stars are found. Note that faint stars have less positional accuracy} img_sa:=nil;{free mem} SetLength(starlist1,2,nrstars);{set length correct} setlength(snr_list,nrstars);{set length correct} if nrstars>max_stars then {reduce number of stars if too high} begin if solve_show_log then memo2_message('Selecting the '+ inttostr(max_stars)+' brightest stars only.'); get_brightest_stars(max_stars, highest_snr, snr_list, starlist1); end; if solve_show_log then memo2_message('Finding stars done in '+ inttostr(gettickcount64 - startTick2)+ ' ms'); end; procedure reset_solution_vectors(factor: double); {reset the solution vectors} begin solution_vectorX[0]:=factor;{should be one} // x:=s[1]x+s[2]y+s[3] } solution_vectorX[1]:=0; solution_vectorX[2]:=0; solution_vectorY[0]:=0; // y:=s[1]x+s[2]y+s[3] solution_vectorY[1]:=factor;{should be one} solution_vectorY[2]:=0; end; function find_offset_and_rotation(minimum_quads: integer;tolerance:double) : boolean; {find difference between ref image and new image} var xy_sqr_ratio : double; begin if find_fit(minimum_quads, tolerance)=false then begin result:=false; reset_solution_vectors(0.001);{nullify} exit; end; result:=true;{3 quads required giving 3 center quad references} {in matrix calculations, b_refpositionX[0..nr_equations-1,0..2]:=solution_vectorX[0..2] * A_XYpositions[0..nr_equations-1,0..2]} { b_refpositionY[0..nr_equations-1,0..2]:=solution_vectorY[0..2] * A_XYpositions[0..nr_equations-1,0..2]} {find solution vector for X:=ax+by+c / b_Xref:=solution[0]x+solution[1]y+solution[2]} lsq_fit( A_XYpositions {[0..nr_equations-1, 0..2]},b_Xrefpositions, solution_vectorX {[0..2]} ); {find solution vector for Y:=ax+by+c / b_Yref:=solution[0]x+solution[1]y+solution[2]} lsq_fit( A_XYpositions {[0..nr_equations-1, 0..2]},b_Yrefpositions, solution_vectorY {[0..2]} ); xy_sqr_ratio:=(sqr(solution_vectorX[0])+sqr(solution_vectorX[1]) ) / (0.00000001+ sqr(solution_vectorY[0])+sqr(solution_vectorY[1]) ); if ((xy_sqr_ratio<0.9) or (xy_sqr_ratio>1.1)) then {dimensions x, y are not the same, something wrong.} begin result:=false; reset_solution_vectors(0.001);{nullify} if solve_show_log then {global variable set in find stars} memo2_message('Solution skipped on XY ratio: '+ floattostr(xy_sqr_ratio)); end; end; end. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_hjd.pas������������������������������������������������������������������0000644�0001751�0001751�00000037660�14344743400�016022� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_hjd; { Converts Julian day to Heliocentric Julian Day. Difference is maximum +- 500 sec / 8.3 minutes } {Copyright (C) 2017, 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } {$mode delphi} interface uses Classes, SysUtils, math, LazSysUtils, {nowUtc} astap_main {for theader}; var ra_mean : double=0; dec_mean: double=0; function calc_jd_now: double; {get julian day for now} function JD_to_HJD(jd,ra_object,dec_object: double): double;{conversion JD to HJD} {see https://en.wikipedia.org/wiki/Heliocentric_Julian_Day} procedure equ_gal(ra,dec:double;out l,b: double);{equatorial to galactic coordinates} function airmass_calc(h: double): double; // where h is apparent altitude in degrees. function atmospheric_absorption(airmass: double):double;{magnitudes} procedure calculate_az_alt(calc_mode : integer;head: Theader; out az,alt : double);{calculate az, alt. Move try to use header values else force calculation. Unit degrees} procedure altitude_and_refraction(lat,long,julian,temperature,pressure,ra3,dec3: double; out az,alt : double);{altitude calculation and correction ra, dec for refraction} procedure polar2(x,y,z:double;out r,theta,phi:double); implementation uses unit_stack, unit_ephemerides,unit_asteroid, unit_aberration; function calc_jd_now: double; {get julian day for now} var yy,mm,dd :word; hour,min, ss,ms: Word; dt :tdatetime; begin dt:=LazSysUtils.NowUTC; DeCodeDate(dt,YY,MM,DD); DecodeTime(dt,hour,min,ss,ms); result:=julian_calc(yy,mm,dd,hour,min,ss+ms/1000);{calculate julian day} end; { sun: low precision solar coordinates (approx. 1') } { jd : julian day } { ra : right ascension (in radians; equinox of date) } { dec: declination (in radians; equinox of date) } { Factors from "Astronomy on the personal computer" } procedure sun(jd:real; var ra,dec: double); {jd var ra 0..2*pi, dec [0..pi/2] of Sun equinox of date} const cos_ecl=cos(23.43929111*pi/180);{obliquity of ecliptic} sin_ecl=sin(23.43929111*pi/180);{obliquity of ecliptic} var angle,l,m,dl,sin_l,cos_l,y,z,rho,t: double; begin t:=(jd-2451545)/36525; {time in julian centuries since j2000 } m := 2*pi*frac(0.993133+99.997361*t); dl:= 6893.0*sin(m)+72.0*sin(2*m); angle:=frac(0.7859453 + m/(2*pi) + (6191.2*t+dl)/1296e3);{orbit position} if angle<0 then angle:=angle+1; {frac(-1.1) is -0.1, should become 0.9} l := 2*pi*angle; {orbit position in radians} sincos(l,sin_l,cos_l); y:=cos_ecl*sin_l;{convert helio to geocentric coordinates} z:=sin_ecl*sin_l; rho:=sqrt(1.0-z*z); dec := arctan(z/rho); ra := 2*arctan(y/(cos_l+rho)); if (ra<0) then ra:=ra+(2*pi); end; //procedure precession(jd, ra1,dec1 : double; var ra2,dec2 : double); {precession correction, simple formula, new Meeus chapter precession} //var // t,dra,ddec,sin_ra1,cos_ra1,m,n,n2 : double; //begin // t:=(jd-2451545)/36525; {time in julian centuries since j2000 } // m:=3.075+0.00186*t;{seconds} // n:=1.33621-0.00057*t; {seconds} // n2:=20.043-0.0085*t;{arcsec} // sincos(ra1,sin_ra1,cos_ra1); // dra:=(m + n *sin_ra1*tan(dec1))*pi/(3600*12);{yearly ra drift in radians} // ddec:=n2*cos_ra1*pi/(3600*180); {yearly dec drift in radians} // ra2:=ra1+(dra*t*100);{multiply with number of years is t*100} // dec2:=dec1+(ddec*t*100); //end; function JD_to_HJD(jd,ra_object,dec_object: double): double;{conversion Julian Day to Heliocentric Julian Day} var {see https://en.wikipedia.org/wiki/Heliocentric_Julian_Day} ra_sun, dec_sun : double; sin_dec_object,cos_dec_object,sin_dec_sun,cos_dec_sun : double; begin sun(jd,ra_sun,dec_sun);{get sun position in equinox of date coordinates} precession3(jd, 2451545 {J2000},ra_sun,dec_sun); {precession} sincos(dec_object,sin_dec_object,cos_dec_object); sincos(dec_sun,sin_dec_sun,cos_dec_sun); result:=jd - 500{sec}*(1/(24*3600))*(sin_dec_object* sin_dec_sun + cos_dec_object * cos_dec_sun * cos(ra_object - ra_sun)); {assume 500 sec travel time Sun- Earth} end; procedure equ_gal(ra,dec:double;out l,b: double);{equatorial to galactic coordinates} const {North_galactic pole (J2000)} pole_ra : double = (12+51/60+26.27549/3600)*pi/12; {12h51m26.27549 https://www.aanda.org/articles/aa/pdf/2011/02/aa14961-10.pdf } pole_dec: double = (27+7/60+41.7043/3600)*pi/180; {+27◦07′41.7043′′} posangle: double = (122.93191857-90)*pi/180; {122.93191857◦} // Converting between galactic to equatorial coordinates // The galactic north pole is at RA = 12:51.4, Dec = +27:07 (2000.0), // the galactic center at RA = 17:45.6, Dec = -28:56 (2000.0). // The inclination of the galactic equator to the celestial equator is thus 62.9°. // The intersection, or node line, of the two equators is at // RA = 282.25°, Dec = 0:00 (2000.0), and at l = 33°, b=0. var sin_b, cos_b, sin_pole_dec, cos_pole_dec :double; begin sincos(pole_dec,sin_pole_dec, cos_pole_dec); b:=arcsin(cos(dec)*cos_pole_dec*cos(ra - pole_ra) + sin(dec)*sin_pole_dec); sincos(b,sin_b, cos_b); l:=arctan2( (sin(dec) - sin_b *sin_pole_dec ) , (cos(dec)*cos_pole_dec*sin(ra - pole_ra)) ) + posangle; end; function fnmodulo(x,range: double):double; begin {range should be 2*pi or 24 hours or 0 .. 360} result:=range*frac(x/range); if result<0 then result:=result+range; {do not like negative numbers} end; //function altitude(ra3,dec3 {2000},lat,long,julian:double):double;{conversion ra & dec to altitude only. This routine is created for speed, only the altitude is calculated} //{input RA [0..2pi], DEC [-pi/2..+pi/2],lat[-pi/2..pi/2], long[-pi..pi] West positive, East negative !!,time[0..2*pi]} //var t5,wtime2actual : double; // sin_lat,cos_lat,sin_dec,cos_dec:double; //const // siderealtime2000=(280.46061837)*pi/180;{[radians], 90 degrees shifted sidereal time at 2000 jan 1.5 UT (12 hours) =Jd 2451545 at meridian greenwich, see new meeus 11.4} // earth_angular_velocity = pi*2*1.00273790935; {about(365.25+1)/365.25) or better (365.2421874+1)/365.2421874 velocity dailly. See new Meeus page 83} //begin // wtime2actual:=fnmodulo((long)+siderealtime2000 +(julian-2451545 )* earth_angular_velocity,2*pi); {As in the FITS header in ASTAP the site longitude is positive if east and has to be added to the time} {change by time & longitude in 0 ..pi*2, simular as siderial time} {2451545...for making dayofyear not to big, otherwise small errors occur in sin and cos} // precession3(2451545 {J2000},julian,ra3,dec3); {precession, from J2000 to Jnow} // t5:=wtime2actual-ra3; // sincos(lat,sin_lat,cos_lat); // sincos(dec3,sin_dec,cos_dec); // try // {***** altitude calculation from RA&DEC, meeus new 12.5 *******} // result:=arcsin(SIN_LAT*SIN_DEC+COS_LAT*COS_DEC*COS(T5)); // except // {ignore floating point errors outside builder} // end; //end; {-----------------------------------------------------------------------} { POLAR2: conversion of cartesian coordinates (x,y,z) } { into polar coordinates (r,theta,phi) } { (theta in [-pi/2 deg,+pi/2]; phi in [0 ,+ 2*pi radians] } {-----------------------------------------------------------------------} procedure polar2(x,y,z:double;out r,theta,phi:double); var rho: double; begin rho:=x*x+y*y; r:=sqrt(rho+z*z); phi:=arctan2(y,x); if phi<0 then phi:=phi+2*pi; rho:=sqrt(rho); theta:=arctan2(z,rho); end; {----------------------------------------------------------------} { EQUHOR: conversion of equatorial into horizontal coordinates } { DEC : declination (-pi/2 .. +pi/2) } { TAU : hour angle (0 .. 2*pi) } { PHI : geographical latitude (in rad) } { H : altitude (in rad) } { AZ : azimuth (0 deg .. 2*pi rad, counted S->W->N->E->S) } {----------------------------------------------------------------} procedure equhor2 (dec,tau,phi: double; out h,az: double); var cos_phi,sin_phi, cos_dec,sin_dec,cos_tau, sin_tau, x,y,z, dummy: double; begin sincos(phi,sin_phi,cos_phi); sincos(dec,sin_dec,cos_dec); sincos(tau,sin_tau,cos_tau); x:=cos_dec*sin_phi*cos_tau - sin_dec*cos_phi; y:=cos_dec*sin_tau; z:=cos_dec*cos_phi*cos_tau + sin_dec*sin_phi; polar2(x,y,z, dummy,h,az) end; PROCEDURE RA_AZ(RA,de,LAT,LONG,t:double;out azimuth2,altitude2: double);{conversion ra & dec to altitude,azimuth} {input RA [0..2pi], DEC [-pi/2..+pi/2],lat[-0.5*pi..0.5*pi],long[0..2*pi],time[0..2*pi]} begin EQUHOR2(de,ra-long-t,lat, {var:} altitude2,azimuth2); azimuth2:=pi-azimuth2; if azimuth2<0 then azimuth2:=azimuth2+2*Pi; end; PROCEDURE AZ_RA(AZ,ALT,LAT,LONG,t:double;out ra,dcr: double);{conversion az,alt to ra,dec} {input AZ [0..2pi], ALT [-pi/2..+pi/2],lat[-0.5*pi..0.5*pi],long[0..2pi],time[0..2*pi]} begin EQUHOR2(alt,az,lat,{var:} dcr,ra); ra:=pi-ra+long +t; while ra<0 do ra:=ra+2*pi; while ra>=2*pi do ra:=ra-2*pi; end; function atmospheric_refraction(altitude_real {degrees},p {mbar},t {celsius} :double):double; {atmospheric refraction correction, input output in degrees} var hn :real; begin hn:=(altitude_real + 10.3/(altitude_real +5.11))*pi/180; {radians} result:=((p/1010)*283/(273+t)) * (1.02/60)/(sin(hn)/cos(hn) ); {note: tan(x) = sin(x)/cos(x)} {bases on meeus 1991 page 102, formula 15.4} end; procedure altitude_and_refraction(lat,long,julian,temperature,pressure,ra3,dec3: double; out az,alt : double);{altitude calculation and correction ra, dec for refraction} {input RA [0..2pi], DEC [-pi/2..+pi/2],lat[-pi/2..pi/2], long[-pi..pi] West NEGATIVE, East POSTIVE !!,time[0..2*pi]} var wtime2actual : double; const siderealtime2000=(280.46061837)*pi/180;{[radians],sidereal time at 2000 jan 1.5 UT (12 hours) =Jd 2451545 at meridian greenwich, see new meeus 11.4} earth_angular_velocity = pi*2*1.00273790935; {about(365.25+1)/365.25) or better (365.2421874+1)/365.2421874 velocity dailly. See new Meeus page 83} begin wtime2actual:=fnmodulo(+long+siderealtime2000 +(julian-2451545 )* earth_angular_velocity,2*pi);{Local sidereal time. As in the FITS header in ASTAP the site longitude is positive if east and has to be added to the time} RA_AZ(ra3,dec3,lat,0,wtime2actual,{var} az,alt);{conversion ra & dec to altitude,azimuth} {correct for temperature and correct head.ra0, head.dec0 for refraction} if temperature>=100 {999} then temperature:=10 {default temperature celsius}; az:=az*180/pi;{in degrees} alt:=alt*180/pi; alt:=alt+atmospheric_refraction(alt,pressure {mbar},temperature {celsius});{astrometric to apparant altitude} // AZ_RA(azimuth2,result,LAT,0,wtime2actual, {var} ra_mean,dec_mean);{conversion az,alt to ra_mean,dec_mean reverse corrected for refraction} // RA_AZ((23+9/60)*pi/12,(-6-43/60)*pi/180,(38+55/60)*pi/180,-(5+8/60)*pi/12,(8+(34)/60)*pi/12,{var} azimuth2,altitude2);{conversion ra & dec to altitude,azimuth} // RA_AZ2((23+9/60)*pi/12,(-6-43/60)*pi/180,(38+55/60)*pi/180,0,(8-5+(34-8)/60)*pi/12,{var} azimuth2,altitude2);{conversion ra & dec to altitude,azimuth} // RA_AZ2((23+9/60)*pi/12,(-6-43/60)*pi/180,(38+55/60)*pi/180,+(5+8/60)*pi/12,(8+(34)/60)*pi/12,{var} azimuth2,altitude2);{conversion ra & dec to altitude,azimuth} // AZ_RA(AZIMUTH2,ALTITUDE2,39*pi/180,0,(8-5+(34-8)/60)*pi/12, {var} ra_mean,dec_mean);{conversion az,alt to ra_mean,dec_mean reverse corrected for refraction} // AZ_RA2(AZIMUTH2,ALTITUDE2,39*pi/180,0,(8-5+(34-8)/60)*pi/12, {var} ra_mean,dec_mean);{conversion az,alt to ra_mean,dec_mean reverse corrected for refraction} // AZ_RA2(AZIMUTH2,ALTITUDE2,39*pi/180,+(5+8/60)*pi/12,(8+(34)/60)*pi/12, {var} ra_mean,dec_mean);{conversion az,alt to ra_mean,dec_mean reverse corrected for refraction} // beep; end; procedure calculate_az_alt(calc_mode : integer;head: Theader; out az,alt : double);{calculate az, alt. Move try to use header values else force calculation. Unit degrees} var site_lat_radians,site_long_radians,ra,dec : double; errordecode : boolean; err : integer; begin {calc_mode 0: use from header or calculate from position. If not available calculate} {calc_mode 1: force calculation from time, location and position without nutation and aberration} {calc_mode 2: force high accuracy calculation including nutation and aberration) from time, location and position} az:=strtofloat2(centaz); alt:=strtofloat2(centalt); if (((alt=0) or (calc_mode>0)) and (head.cd1_1<>0)) then {calculate from observation location, image center and time the altitude} begin if sitelat='' then begin sitelat:=lat_default; sitelong:=long_default; end; val(sitelat,site_lat_radians,err); {try to process 3.7E+01} if err=0 then begin site_lat_radians:=site_lat_radians*pi/180; errordecode:=false end else {try to process string 37 00 00} dec_text_to_radians(sitelat,site_lat_radians,errordecode); if errordecode=false then begin val(sitelong,site_long_radians,err); {try to process 3.7E+01} if err=0 then begin site_long_radians:=site_long_radians*pi/180; errordecode:=false end else {try to process string 37 00 00} dec_text_to_radians(sitelong,site_long_radians,errordecode); if errordecode=false then begin if jd_start=0 then date_to_jd(head.date_obs,head.exposure);{convert date-obs to jd_start, jd_mid} if jd_mid>2400000 then {valid JD} begin ra:=head.ra0; {duplicate to protect J2000 position} dec:=head.dec0; if calc_mode=2 then {high accuracy including nutation and aberration} J2000_to_apparent(jd_mid,ra,dec) {from J2000 to Jnow apparent, aberrration, precession nutation without refraction} else precession3(2451545 {J2000},jd_mid,ra,dec); {from J2000 to Jnow mean, precession only. without refraction} altitude_and_refraction(site_lat_radians,site_long_radians,jd_mid,focus_temp,pressure,ra,dec,az,alt);{In formulas the longitude is positive to west!!!. } end else memo2_message('Error decoding Julian day!'); end; end; if errordecode then memo2_message('Error decoding site longitude or latitude!'); end; end; function airmass_calc(h: double): double; // where h is apparent altitude in degrees. begin // Pickering, 2002, https://en.wikipedia.org/wiki/Air_mass_(astronomy) if h>=0.0000001 then result := 1 / sin((pi/180) * (h + (244 / (165 + 47 * power(h,1.1))))) else result:=999; end; function atmospheric_absorption(airmass: double):double;{magnitudes relative to vacuum} {The Extinction, Scattering, Absorption due to the atmosphere expressed in magnitudes. Reference http://www.icq.eps.harvard.edu/ICQExtinct.html see also https://www.skyandtelescope.com/astronomy-resources/transparency-and-atmospheric-extinction/} var a_ozon,a_ray,a_aer : double; begin a_ozon:=airmass*0.016; {Schaefer's (1992) value Aoz =0.016 magnitudes per air mass for the small ozone component contributing to atmospheric extinction.} a_ray:=airmass*0.1451; {Rayleigh scattering by air molecules. Expressed in magnitudes} a_aer:=airmass*0.120; {Extinction due to aerosol scattering is due to particulates including dust, water droplets and manmade pollutants. Expressed in magnitudes} result:=a_ozon+a_ray+a_aer;{Total extinction, scattering, absorption due to the atmosphere expressed in magnitudes. 0.2811*airmass} end; end. ��������������������������������������������������������������������������������astap_2022.12.09.orig/macOS_packages_projects/������������������������������������������������������0000755�0001751�0001751�00000000000�14344743400�020246� 5����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/macOS_packages_projects/macOS_projects.zip������������������������������������0000644�0001751�0001751�00000116274�14344743400�023720� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������PK���TCQ������������ ��g17.pkgprojUX � J_I_�[W޾Wv/E{vWH!jV#'uÈjvIw8 $Ak NLbP( UQ?cn绿WYsxDqyo[vjZJ˶QyZ7yNot1ycTmvvN?o%Nj?e>GsP腡7۞xqtmfVmWWm7u-L;Cc]Ḇmw-DqeV7qՋbo|Pcltw{vlMj7)hq K7tGV}0݃ xi�u`āe,qwp%;6'dI,lrE+ܮS2Ny=fZ.KG`oF}2 =/N/Q>[/ضdw9c?%̎}bß]\jagqUq.QoܼdړMe?QR<QHּR`޷侀by?,2(RW]GAp4YvoZ'Lw8ֽTp|WN|ԧZ_~\i .϶-./־bw9g/<qQ\Zaoy \sENN6"܀* Vc0Cw4[W>e2}Go`P)7ԚW酾?8'V0xW_OA瀒|vpzF<=>~۸Cm^"]y\< nW^|糎ܯ =xUxzai ͂id.|vVMAԸzr,W]�ϐ+;x*['TtA=C9G6bjg$ ^}~/DyQ)G=yW~_aop߼?P"=H+򵿕ʟ=WU~{Weϗn"f^ide3 7uqn lm!7dzU=7̏p~/^{wE~T=}܍]\(}X˴fZ*{=\@ˈptwvv菇8<p8/K�p^p 8p 8p8�G8y88�GC 9p$88�GC 9p$8�go8QGCr +֪a*HpX*HpX*HpX*(pX8cHpH#!98cp^<p48UG]p$8UG]p$8UG8<p$8<�GCr  1p$8$GCr  1p$8$GCr scp1p48$GCr  1p$8$GCr  1p8<s  1p$8$GCr  1p$8$GCr  1p8<s  1p$8$GCr [W 8p 8: : :߫8cHpH#!98cHpH#!98 W 1p$8$GCr  1p$8$GCr >8rHpq#!8rHpq# @(p8p48$GCr  1p$8$GCr  1p$8$QqhpH#!98cHpH#!98cHpHyAr  1p$8$y8]?p488V kUV kUV kUV8cHpH#!98cHpH#!98c(p8GCr  1p$8$GCr  1p$8$G8cp80�GZp$8UGZp$8UGZp$8UGZp8hpH#!98cHpH#!98cHpH�GCr  1p$8$GCr  1p$8$GGC 9p$88�GC 9p$88 p8|w8cHpH#!98cHpH#!98c(p8p48$GCr  1p8/^p48\�G5p$8\�G8p$8G8p$8G8p8| 8cHpH#!98cHpH#!98c(p^p8/y8cHpH#!98cHpH#!98 98cHpH#!98cp^<p48UG]p$8UG]p$8UG8<p$8<�GCr  1p8Y8֪#a 8֪#a 8֪#a 878�GC 9p8o_p^tnr^!ٚʹ;_u䳙Au`TZ{I!5\]N</DyvٍɜիZPR:qnVhЬ^ϭˊ1[rEQra-n*1AN-+qWaVX sOE_š_<vOT4RҹY,Z,¥.ջ*a.!f7;y[R^?/ hpAP d0n4y#Xة?i?VqӍڦc?]k6fknzq< "9n~Zc3;[vNܶi7m:]~2ڍҾ|4ۓ}W>Gfש6j8ai[\ǶԾiײN[ Gt8*. תnAaNxFLj5jE[:>lvri[m5>Zf;Tq&;mL7ş'W ļẅ́f##~iWL.*jyr6X8ԗzqZd2,9t;ɦ0UfNAV{c׵o^=?4^x6݃ܝk_fͽd<Now<~F33LR=n�2-Og=j7;z!jX5)gjmut얾oi6ro'; :vwX1=#u\Ugj֎k-SRN&m8K9dЏah1[8/{k/xt|YSa[u-6/-D7O[qxpӏP'f2*vyC˸(_#zZ]iޣ8jfM?epˋ /~K>yp;x3OC}p5:{I~{$EGv`zR ufF㨓;f¡ óA/&_oEU&뜕QXlU,.ѥWjW̋ךtlݏMsbv ;uDn t_xбHwiIFq)ɿ< {ɼТ(Xi~ٝIJ5͇yY0NhsbGhw9wٚmlbuQN*r}x~pf6OLnoU/FW~ߕr3i;niV۶fUz~rz==|awخYqJώk`|h|n7MB?C.'VIsoc ΃U,d~ U `zi{" |th΂ρSS;\7p~}Ʉ<a?�Q2;'s+d> 3 { ^9ޙ?=DQ_D$S Ӎ`dn<^O bpm"?\h�nu3[Cw+U鋳{尟m?NQDfN~fne پKQ_vpV3K˼ЙR2jYLàܧTš O4y O4|P(PK(DL��X�PK��� P������������ ��g18.pkgprojUX �J_! ^�_WZΫ`QԶ,Ri 37fJ=Ϋ $ONly1\aިި q76/7kY(:omVجVxWu^iٖV6UQ8?կ_nywmF7FV8a|m'm&lF3I^_^|ߴ;tߒ0&?O:Yi j66-<ljf->{Om1Qвnsyhtlk5װݼinQ&zPtevSwySزm3fj7-n4;Yw?7{ xi�u`āe,qw"pbfrl~p{͝:bz{PV]ˑ/OA<jC~mr:Ezj<G }Y "l:*x< 㵛מlZ{}c.*|хB*╪$7kŋU./a<=eQg܋vJZ: ~tZ0ie-gZo,S]_GU/5_ƕ?>W+áWZ˳Mˋ]{ƙO\AŪ{W_VC[p ץ~zQj AU?y5eO z_ :T .|*rz+wʼnk-)^:U5C?9̇?h^C3vqo{yEtse+'q\y*Np?'|<VQSXꅥKțiI̅/YٴxO哣.�gҎ/ʖ';=])j}Pѽ{fIùxߚ=Nrѓw_5[J 5N)ң"_[ٳC׾=_"f^iGcn76kIo[ȇ6ߎ\Fau0yhW(վї^tK1bim[NYJN_}^Bv;;[yu"!%Bv)%B"BB\ D!BAuBAB"H!{A<!%BC D !AB-<!ZyBh!AH!dBTf]!%BC.-uh! D a]!Z2BXAº BeR"L!Z*B2Uh!dBT"D CR"{h! D ^!Z2BA!Bx>!Zχ D !SEB-L!Z*B2Uh!dBT"D !SEK%wSEH2Uh!dBT"D !SEB-L!Z*BSEH2Uh!dBT"D !SEB-L!Z*B2UH!<!dBT"D !SEeR"h!\ D :!ZkBXE.Bv) D*B2Uh!dBT"D !SEB-L!Z*B/!dBT"D !SEB-L!Z*B2U(!|o!%BC D !AB-<!ZyBh!<c)"D*B2Uh!dBT"D !SEB-L!Z*B!dBT"D !SEB-L!Z*B2Uh!dB^"D !SEB!dg!!BXAº Be.-uh! D a]!R?!%BT"D !SEB-L!Z*B2Uh!dBT"CR"L!Z*B2Uh!dBT"D !SEB-L!R?!%BT"D DsBe.-uh! D a]!Z2BXAAH2Uh!dBT"D !SEB-L!Z*B2UH!!SEB-L!Z*B2Uh!dBT"D {)B-<!ZyBh!!BC D 3H!|o!%BT"D !SEB-L!Z*B2Uh!dBT"]!SEB-L!Z*B|_!%BAuBC-]h!"D am!ZkB BJ"D !SEB-L!Z*B2Uh!dBT"D 2B^*BJ"D !SEB-L!Z*B2Uh!dBT"*BJ"D !SEB-L!Z*B2U(!y>!%BA½ Bep/-{h!<-C|BAH2Uh!dQB~c]!%BC.-uh! D a]!Z2BXA;yBJ D !AB%d 9{[jՈفȋM twhTrP{UQ=:ϫ<-kA +xۉ] ]c|{_nTt$s*WjATj^̭RYʆ>sR2fK5YHQ=t˅Wb:%BW>;-BVX 7sϞE/{88yr[>=Q`HVJ^SgaW- |V]\0rX03١rBya@lC2wo7Xü,Tzf4Fm1ͮ5u5\mfS|_Mm7?t{˱ڙe-r;Gm۝p{h٦5H^}yo'eЯ:5h13̮cnTFfõj[rLFLz5jE[Vi;N6mֵ;]>eo..Bߋzkllg/{|L[3 i~ͤ^ږkvO6Xɥ4Mjfr% mN?`zG:֚'ch}v f:*3ywf;6msoim\Ys;=BIOhff{=n�2-Ox>j7;8[-#ktsպ~5xjmut-Mq3mw :v7Q.ʰl8㚭NKͪ[;6ZIn;{kdu3$؋}q8_&F_Z&9ZköZmvߙ[boǟ`J6SOǏM;eT0,˸(_#zߴ\i֣;8jy/ޙ3LhI=q./.2kGKyֿ; wW?[t2Li:#0FoyҬteQX[L_~mf4:-e&W |1⹹A0NVKwQ#9z>wcᦆFslZ˂`Ϲ Kgnj~L'94Apdi8]6f&˦3Ghw͏979n;ietxrOn&Ndm?uS+r`G۴ٴ]%ڸmk㦱Jo[u%>+[yHh,8RƧ}yj$d:=8d1 GMΙo'VFaco1{*3ݻLo?c/Z&\Y9pU:4ڟx wj' ?&cs0N& +G:\Fwgd.{yߘGA\qFa/y9+'0G(/g<G[t-'?' nϣ:\8W> W6棱1=t7R坾xsT `XT9מ!UA4>1=̾s,71o;kp̖6f[/ed) X2k͆2sSc `ެuk1ZJ-X4?,>9o:QPK2���PK���ۍ.T������������ ��h17.pkgprojUX �aa�[Sgkϯ`u#: =7H̡�Fs WeeTV?/v&^ v[ͽqkm/n[]ni0}x4ĭۓ3;ɹչՉ2&'nMhLNw6ugs'G,v{;[G[F/zgVgӭͣg򷥙of<<>{k+gWgFk6;:'=3~9zƛ5Z208was'3k VVg_/g|`6`rgoscgrohrhc,,~E4˜frœ?| }_]xo_L=|sO[YlMvǘ/}+^xt~e,sϾޥϿeoO_+Ӹ}<yvT'ώm喿dǻ͍↿j_6`%Ͻl[<?4=c_7pf>W+/>Gۭ}Acrk{(Q:{qw`nH,mo4:/0X7|6_|e>Z9=h7T7kl 9<0V7ѿl^`罃|nP<x:<qoh:&v^>=Əg_\knc‘Ãpic뎗gZKO?OѳVvS _noا0R/Fꆏp;'1ZNo8 ^m;fC|y_/Ekgx}t>ޥ7t^m|zוݘ?|jMz}G7NӯYvKW ?{̮-\k~x׮ ɏtMtVN.$v( ?n }⟞ ǥRO3_w7w^n}zSI A:sD~O=}5~/kIT3?k3~A S;׌%v&î'76x><\?ͣ7L15˝WcyK~;%]jݲcu[X.2>_OMOMߙCv> 3uvcd,vYT;ةvNv|;<bd6N ShT; ;Վ6N ShT; ;Վ6N3=;юN+ST;2;ՎN5d;٩v+S8VfqN v`Sj5D;`'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;C׺혓`1'NcNjǜ;Վ9 vsT;$ةvI֝lGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'q;;َN+ST;2;ՎN+S4;7d;٩vS8GgqNj9:;Վkةv\NT;2;ՎN+ST;2;ՎN+SD;M1;َN+ST;2;ՎN+ST;2;ՎNsOWfѕ٩vtev]f lw;Վ,vsT;B٩v̅S e1Nc.hnb'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىv&v]jGWfѕ٩vtev]jGWfѕ٩vtev]hnb'ѕ٩vtev]jGWfѕ٩vtev]jGWfy;T;;ՎNS;T;;ՎNAv甝lGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'{Nvtev]jGWfѕ٩vtev]jGWfѕ٩vtev甝lGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ڹ+ST;2;ՎN3=�d;ةv|gS e1Nc.j\(;ՎPvsD; N+ST;2;ՎN+ST;2;ՎN+'�;َN+ST;2;ՎN+ST;2;ՎN�d;2;ՎN+ST;2;ՎN+ST;2;ю{T;2;ՎN+ST;2;ՎN+L;َNS;T;;ՎNS;T;d'q,v]jGWfѕ٩vtev]jGWfѕ٩vtev]hvtev]jGWfѕ٩vtev]jGWfѕ٩vtevb'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىv?lGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'y+ST;2;] e'۱a1Nc>j|;Վ,vYT;ةvg_(;َN+ST;2;ՎN+ST;2;ՎN~d;2;ՎN+ST;2;ՎN+ST;2;юT;2;ՎN+ST;2;ՎN+SD;N+ST;2;ՎN+ST;2;ՎN+_(;َN+ST;2;ՎN+stvYT;γةvgS8bqNvS~hvtev]jGWfѕ٩vtev]jGWfѕ٩vtevGg'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvlGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'qtv]jGWfѕ٩vtev]jGWfѕ٩vtev]hvtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;)]jGWfѕ٩vtev]jGWfѕ٩vtev]hgZWfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;=]jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ڹ+ST;2;ՎN+ST;2;ՎN+SD;tev]jGWfѕ٩vtev]jGWfѕ٩vtev]h确N+ST;2;΃)YT;ةv|gS e1Nc.j\(;ՎPvsD;B٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;ՎN+ST;2;ՎN+ST;2;ՎNsOWfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;]jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'y+ST;2;ՎN+S4;+S8VfqNXjDZ2;Վk0ةv\N v`LjGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ڹ+ST;2;ՎN+ST;2;ՎN+SD;tev]jGWfѕ٩vtev]jGWfѕ٩vtev]h羮N+ST;2;ՎN+ST;2;ՎN+<Е٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;ՎN+ST;2;ՎN+S4;O9GgqNj9:;ՎstvT;٩v\N/vi~ST;2;ՎN+ST;2;ՎN+SD;wuev]jGWfѕ٩vtev]jGWfѕ٩vtev]h瞮N+ST;2;ՎN+ST;2;ՎN+ו٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;ՎN+ST;2;ՎN+ST;2;ՎNPWfѕ٩vtev]jGWfѕ٩vtev]jGWfbJawةvv}jGawةvv}juD;Ӯdѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;=]jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ڹ+ST;2;ՎN+ST;2;ՎN+SD;tev]jGWfѕ٩vtev]jGWfѕ٩vtev]h确N+ST;2;ՎN+ST;2;ՎN+<٩vAvmjGd٩vAvmjGdىv]sN+ST;2;ՎN+ST;2;ՎN+Օ٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev{2;ՎN+ST;2;ՎN+ST;2;ՎNs_Wfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;C]jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ٹ;5 ShT; ;Վ6N ShT; ;Վ6N L攝jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ڹ+ST;2;ՎN+ST;2;ՎN+SD;tev]jGWfѕ٩vtev]jGWfѕ٩vtev]h羮N+ST;2;ՎN+ST;2;ՎN+<Е٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;ՎN+ST;2;ՎN+ST;2;NS;T;;ՎNS;T;;Վىv]7N+ST;2;ՎN+ST;2;ՎN+Օ٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev{2;ՎN+ST;2;ՎN+ST;2;ՎNs_Wfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;C]jGWfѕ٩vtev]jGWfѕ٩vtevS٩vS8GgqNj9:;Վstv~Shgڵ_T;2;ՎN+ST;2;ՎN+ST;2;]]jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ڹ+ST;2;ՎN+ST;2;ՎN+SD;uev]jGWfѕ٩vtev]jGWfѕ٩vtev]h灮N+ST;2;ՎN+ST;2;ՎN+<ԕ٩vtev]jGWfѕ٩vtev{S٩v+S8VfqNXj5T;`q ;Վk0؉v]N+ST;2;ՎN+ST;2;ՎN+Օ٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev{2;ՎN+ST;2;ՎN+ST;2;ՎNs_Wfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;C]jGWfѕ٩vtevSةv|gSb1Nc.j\(;ՎPvsT;BىvͅST;2;ՎN+ST;2;ՎN+SD;wuev]jGWfѕ٩vtev]jGWfѕ٩vtev]h瞮N+ST;2;ՎN+ST;2;ՎN+ו٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;ՎN+ST;2;ՎN+ST;2;ՎNPWfy0+ST;2;ՎN+ST;2;ՎN+LT;2;ՎN+ST;2;ՎN+ST;2;]]jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ڹ+ST;2;ՎN+ST;2;ՎN+SD;uev]jGWfѕ٩vtev]jGWfѕ٩vtev]h灮N+ST;2;ՎN+S4;ly;Վ,vYT;γةvgS~j;T;a'qtv]jGWfѕ٩vtev]jGWfѕ٩vtev]hvtev]jGWfѕ٩vtev]jGWfѕ٩vtevGg'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvlGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'qtv]jGWfBvwةvgSb1Nc>j|;Վ,vYD;N+ST;2;ՎN+ST;2;ՎN+_(;َN+ST;2;ՎN+ST;2;ՎN~d;2;ՎN+ST;2;ՎN+ST;2;юT;2;ՎN+ST;2;ՎN+|Yd;;ՎNS;T;;ՎNSnhvtev]jGWfѕ٩vtev]jGWfѕ٩vtevb'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىv?lGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'q,v]jGWfѕiv'�;َ,vYT;B٩v̅S e1Nc.j\(;ю{T;2;ՎN+ST;2;ՎN+SD; N+ST;2;ՎN+ST;2;ՎN+'�;َN+ST;2;ՎN+ST;2;ν)甝lGawةvv}jGawةvv =d;2;ՎN+ST;2;ՎN+ST;2;юsN+ST;2;ՎN+ST;2;ՎN+=d;2;ՎN+LMd;ةv|gS e1Nc.j\(;ՎPvsD;~w;َN+ST;2;ՎN+ST;2;ՎNw7T;2;ՎN+ST;2;ՎNs׿)f'qNj9:;ՎstvT;٩v\N/vlGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ovtev{ug'1'NcNjǜ;Վ9 vsT;$ةvIS혓`'q;;َN+ST;2;ՎNs5d;٩v+S8VfqN v`Sj54;AvmjGdy;䏿v[w6_om;w䉃?t%ÿ1K|w^GRL=r9q5.k7^upHt]iG犱y;.l crqD.|X͍1cqHϋ^> .wO=}l+?wﻏ4Lo?J?n ӻߋW-Mv<<׿e|FrWᙍ{vӎ۰/iF}w}n^9{ 9v3{…m8n ^RޛuN<X,;Xsuln0><|pW^oW\8zG/>ria~u7+W=luy0~}d~a>g\.eܛ~pMho73_ WfVOwqeu9iwq\A4ŵٳ#}ҭ5Xm\3k_ά^20[|6v<3=s' #+=rqa~v}a7W;^'{q󳻍,,^~Ʈճ^?W4O_K'A74fݖ'}G ֿ~gZ,ŧLYϲl^ՙ}y43?|8{ܽG>~kn~zy]xQ8?ӑ_wlqy pf'{gga[Wˋk.-͌vrfY̙]&O?laW|܅ףן{s9X? ^b~fyEWVK7쩣 m~\zfiu|<Ɍ>0r ݣo?m<_vvNhK k_?SKՅ7/hxV'KY>9wf\>Znl=mz99=6˛Yh{+ÝZ-q|xzifNh'Rdiŋ_~vy?booΝN?9>]MCo[G>]{sk0:,{WqXE>{7OyLz;ƒ;ۇ?/_Of?kt5q<9vt⇽3#K{6^Gw#tʯG㏳__\yp}1..=/>[88ut*^8/?60w|\tj^u)gO/߿s.9.Z\svaR<hGle}fyy.L=ߌWk 39=;&>ieul:Q̭퍩%##=Tw{~~.U:~j8n'~m'Y]\\X_bQ-Ml 7[r}5<35Feoo`&,pW|y?Lv~*.ȜC`o:~voo᫋3)+q]Ӊã߲q?!aonЇ/6}bg&V^l~<ڃO<x><9hOSZwv$w0[}w>w㺸b 'F;hx'nN>N _>q{wG߿O]'7}osq.wְ2XYY]\~g_H}g7ΩN~ZG?xmIKg.W9S^gN2We_p^]и]?PK)��\ �PK���.T������������ ��h18.pkgprojUX �aa�[Sgkϯ`u#: =7H̡�Fs WeeTV?/w&^v[ͽqkm/n[]vi0}x4ĭۓ3;ɹչՉ2&'oMhLNOw6ugs'G?/v{;[G[F/fgVgӭͣgٯgVOmÍ?|ay೵۳ +3K5Y_|~{~u?{voO=?_~y+3 o3>{|xt0|ux034qxxe_gg"~y7j~anypeNmOIvW>>s{4|1<S'ӖfVhh{gh{xxv}1K_,?_Y9Kܳ?w|ӗ>o4nmOɳc7~_/n`{shW7g>ztsx1zbn_A=c_7pf>W+>Gۭ}Acjk{(Q:{qw`nH,mo8:/0X7|6_|e>Z9=h7T7kl ><4V7ѿl^`𧽃}nP:x6<aoh:&v^=Əƫf^ _\W #?ZK'8//cuϴ$ ~;gm}5 OqaoGOaV_ ̓pwbe/Obqv~[/>P_Aw? l'x6Az]Wvc?;G|n_Gе: iv~/^[b_ه]fvnC];+v�^v]O~oWԧ rr'kDia`/_v8.|qG7{/wjӛJ w7 ҙ#*5~y݈Ksc_N ј\ Xx\:f/a<7vM0Ƌnnomm|q8=dɭpǟlk+_׽Yҥf/VEo"㓟E[3}7]vvNsv{v|gSbڹ;v؉vN9;D;_Nv ;َ6N ShT; ;Վ6N ShT; ;;D;2;ՎN+ST;2;`8VfqNXjDZ2;Վk0ةv\N v`lGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ڹ+S4;]NcNjǜ;Վ9 vsT;$ةvIS혓`1'NZwv]jGWfѕ٩vtev]jGWfѕ٩vtev]hǵd;2;ՎN+ST;2;ՎN+|8GgqNj9:;ՎstvT;bq;юSN+ST;2;ՎN+ST;2;ՎN+7d;2;ՎN+ST;2;ՎN+ST;2;=]jGWfѕ٩vtev/&vYT;ةv̅S e1Nc.j\(;ՎPvlGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'vtev]jGWfѕ٩vtev]jGWfѕ٩vtevlGWfѕ٩vtev]jGWfѕ٩vtev]fsNS;T;;ՎNS;T;;ՎىvSv]jGWfѕ٩vtev]jGWfѕ٩vtev]h9e'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvSv]jGWfѕ٩vtev]jGWfѕ٩vtev]h羮N+ST;2;{bNc.j\(;ՎPvsT;B٩v̅'�;َN+ST;2;ՎN+ST;2;ՎN�d;2;ՎN+ST;2;ՎN+ST;2;ю{T;2;ՎN+ST;2;ՎN+SD; N+ST;2;ՎN+ST;2;ՎN3Yd;;ՎNS;T;;ՎNSnhvtev]jGWfѕ٩vtev]jGWfѕ٩vtevb'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىv?lGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'q,v]jGWfѕ٩vtev]jGWfѕ٩vtev]h灮N+S4;w/l~j|;Վ,vYT;ةvgSb1N~d;2;ՎN+ST;2;ՎN+ST;2;юT;2;ՎN+ST;2;ՎN+SD;N+ST;2;ՎN+ST;2;ՎN+_(;َN+ST;2;ՎN+ST;2;ՎN~d;2;ՎN+ST;2;ՎNsvgS8bqN<jy;Վwةv\NvGg'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvlGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'qtv]jGWfѕ٩vtev]jGWfѕ٩vtev]hvtev]jGWfѕ٩vtev]jGWfѕ٩vtevGg'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىv4;tev]jGWfѕ٩vtev]jGWfѕ٩vtevi]jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ڹ+ST;2;ՎN+ST;2;ՎN+SD;tev]jGWfѕ٩vtev]jGWfѕ٩vtev]h羮N+ST;2;ՎN+ST;2;ՎN+<Е٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;ՎN+S4;|gSbNc.j\(;ՎPvsT;B٩v̅L eѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;=]jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ڹ+ST;2;ՎN+ST;2;ՎN+SD;tev]jGWfѕ٩vtev]jGWfѕ٩vtev]h确N+ST;2;ՎN+<rNXjDZ2;ՎcevT;`q ;Վk0ةv\N3 v]jGWfѕ٩vtev]jGWfѕ٩vtev]h箮N+ST;2;ՎN+ST;2;ՎN+ӕ٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;ՎN+ST;2;ՎN+ST;2;ՎN@Wfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+|>j9:;ՎstvT;٩vS8Ggq;Վk؉v]N+ST;2;ՎN+ST;2;ՎN+Օ٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev{2;ՎN+ST;2;ՎN+ST;2;ՎNs_Wfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;C]jGWfѕ٩vtev]jGWfѕ٩vtev]f)}jGawةvv}jGawةvv LnjGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'ڹ+ST;2;ՎN+ST;2;ՎN+SD;tev]jGWfѕ٩vtev]jGWfѕ٩vtev]h羮N+ST;2;ՎN+ST;2;ՎN+<Е٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;ՎN+ST;2;ՎN+ST;2;ՎNhJd٩vAvmjGd٩vAvmjGd'ڙv);ՎN+ST;2;ՎN+ST;2;ՎNsWWfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;}]jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'y+ST;2;ՎN+ST;2;ՎN+SD;uev]jGWfѕ٩vtev]jGWfѕ٩vtev]dԔ6N ShT; ;Վ6N ShT; ;Վ6N3Sv]jGWfѕ٩vtev]jGWfѕ٩vtev]h箮N+ST;2;ՎN+ST;2;ՎN+ӕ٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;ՎN+ST;2;ՎN+ST;2;ՎN@Wfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+S4;S;ՎNS;T;;ՎNS;T;d'ڙv ;ՎN+ST;2;ՎN+ST;2;ՎNsWWfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;}]jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'y+ST;2;ՎN+ST;2;ՎN+SD;uev]jGWfѕ٩vtev]jGWfѕivN9GgqNj9:;ՎstvT;٩v\N/vi~ST;2;ՎN+ST;2;ՎN+SD;wuev]jGWfѕ٩vtev]jGWfѕ٩vtev]h瞮N+ST;2;ՎN+ST;2;ՎN+ו٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;ՎN+ST;2;ՎN+ST;2;ՎNPWfѕ٩vtev]jGWfѕivM9VfqNXjDZ2;Վcev`Sj5T;`'ڙv ;ՎN+ST;2;ՎN+ST;2;ՎNsWWfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;}]jGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'y+ST;2;ՎN+ST;2;ՎN+SD;uev]jGWfѕivObN;j\(;ՎPvsT;B٩v̅S e'ڙ6N+ST;2;ՎN+ST;2;ՎN+Օ٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev{2;ՎN+ST;2;ՎN+ST;2;ՎNs_Wfѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvT;2;ՎN+ST;2;ՎN+ST;2;C]fN+ST;2;ՎN+ST;2;ՎN3+ST;2;ՎN+ST;2;ՎN+SD;wuev]jGWfѕ٩vtev]jGWfѕ٩vtev]h瞮N+ST;2;ՎN+ST;2;ՎN+ו٩vtev]jGWfѕ٩vtev]jGWfѕ٩vtev2;ՎN+ST;2;ՎN+<ttvYT;γةvgS8bqNvS~hvtev]jGWfѕ٩vtev]jGWfѕ٩vtevGg'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىvlGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'qtv]jGWfѕ٩vtev]jGWfѕ٩vtev]hvtev]fs e'۱a1Nc>j|;Վ,vYT;ةvg_(;َN+ST;2;ՎN+ST;2;ՎN~d;2;ՎN+ST;2;ՎN+ST;2;юT;2;ՎN+ST;2;ՎN+SD;N+ST;2;ՎN+ST;2;ՎNg;T;;ՎNS;T;;ՎNAvb'ѕ٩vtev]jGWfѕ٩vtev]jGWfѕىv?lGWfѕ٩vtev]jGWfѕ٩vtev]jGWf'q,v]jGWfѕ٩vtev]jGWfѕ٩vtev]hvtev]jGWfy�d;ةv|gS e1Nc.j\(;ՎPvsD; N+ST;2;ՎN+ST;2;ՎN+'�;َN+ST;2;ՎN+ST;2;ՎN�d;2;ՎN+ST;2;ՎN+S$;Sv}jGawةvv}jGawةv\7NT;2;ՎN+ST;2;ՎN+SD;~);َN+ST;2;ՎN+ST;2;ՎNT;2;ՎN3w7bNc.j\(;ՎPvsT;B٩v̅Md;2;ՎN+ST;2;ՎN+ST;2;юN+ST;2;ՎN+ST;2;]l9:;ՎstvT;٩vS8Ggq;Վk؉vbv]jGWfѕ٩vtev]jGWfѕ٩vtev]hǿ)f'ѕiv֝lǜ;Վ9 vsT;$ةvIS혓`1'NcNhǵd;2;ՎN+ST;2;}`8VfqNXjDZ2;Վk0ةv\N v`<vAvmf,v;í;omw;w䉃?t%wÿ1K|w^GRL=r9q5.k7^upHt]iG犱;.l crqD.|X͍1cqH|ȋ^> .O=}l+?wﻏ4Lm?J?l ߋW-Mn:<׿e|FrWᙍ{vӎ۰/iF}}n^9{ 9v3…m8n ^RuN<X,3Xsu|n0><|pWZoW\8zG>ria~u+W=luy0~?]20XYYY\o2M?8Oml뙧S]\Y:~N]wuq+~qmyHntk VGkfmٙK<7_xg֎r}fgudqaarg_..Ϯ/?js+d~|aow鳻,,^~Ʈg^?W4»O_K'A4fݖ'}G ֿzgZ,?ŧLYϲlެՙ}y43?|8{ܽG>~0__~^k0Nl||<_<}|u޽eYYtyq٥.]3_99~-?j]|5z;o%+yo'[d}eutzÞ:ʸgOoٯfV1ˣ 3+g"=`x8=8f{֫eggxJtZڸe,̯ί. ֿ|;~ Gǫ2<Yι3pco7lY.ϲ]憇Gۻ']oՍã7Klkt՟GKol?=v'KlW/_n۷tGx~w>vtl=g ~B<܇_aܳ߸Ǣ.q?}ks3qv_lp|9AYXY<Ļ9Љ&~ŇD.M8xyi+]?^}m~ypQ1ǚ,.l|'%xiqӫyթӛ=QFƟF~j{gk̹hqY8sمJu҇>~噳39l;bOfs6{vL~ybujܙ[Y_9SկKXX STq~{gx8,guqqau~Ez[o6y08nM|θ}W+oﶆ;{/G_3+{p81&\dx01ssok'2ʯVqqF{ݏ{V<Od__Q$мGGޅ>x9<8>p-;�x}8oѾ'Vy~~}4`s|ƋχG×h2<'ۏ//i>Xo81Z@[>qָuѽujxO~Sۻ?gdt81}x)~/gn<B;qNu3ʯx1kL__8sʙ:8v^2.M݂OlPKU=.)��\ �PK���.T������������ ��v17.pkgprojUX �aa�[W޾W^=\]&YInPe7&vuM* i 2&ga B<Ft񏍞}y7;zfꘕJ٨U66Uc2zjݮW:͆eW6UQٸT_~rꏯo `<[3nl3`k 6[ONGoMǨ3NL:-~ wË۷gٛf27N|d5n[ <b͒[|vbqDqi&ww8c״F˲fiMo(Tà:au<n-6̮ѭ~J6qjfk&w&%e7nXio?iԗ" lUol1ӥԋ^sKvlv&^)ܮWOyG{TMW]~ߗ|Atn_e>,ضdw9}%GHՇV8G?W -ڏfb]O& zvړ kO^4fL־JʍZJq_ŪW(]֚WOI;ZRC/FZix2lwoZ'L{}_8ֽT:yx@ֿZ^_l6^}Śi\xEU]1s_juxqGp]ϭZ;N0݈`U?zÉ"oSk9{+Jy~ypz'gξ.<N(?7, N/?Sm^"ݸﹲy$ohg_>zC]CXⅥW47 3[5,>ՃcjX<B<li|Sфp/Q e{CFp>0/*ygO qݯ;?o)+?HUԌ|oGU讟*_yK7QjS/4z@c66JߵmD2vU/ŽBgGaL n՛&NV?oTKbzj"?2٫o/z9y6px8g8Q8 19p$8q#a >py(p^8 �p^�GC 9p$88�GC 9p$888m�GCr  1p8UGÈ kUV kUV kUV kUQV 1p$8$GCr  1p$8$yhp*Hp*Hpq#yHpx8 8cHpH#!98cHpH#!98 ]cp^1p48$GCr  1p$8$GCr  1p8<s  1p$8$GCr  1p$8$GCr  1p8<s  1p$8$GCr ߫9p$8q#a : : Q*hpH#!98cHpH#!98cHpH{UGCr  1p$8$GCr  1p$8$qhpq#!8rHpq#!8�GCr  1p$8$GCr  1p$8$GCr 8cHpH#!98cHpH#!98 =cHpH#!9lqa*HpX*HpX*HpX*(p8GCr  1p$8$GCr  1p$8$G8cHpH#!98cHpH#!98 ?p48$G8֪#a 8֪#a 8֪#a 8֪�GCr  1p$8$GCr  1p$8$GCr 8cHpH#!98cHpH#!98]; 9p$88�GC 9p$88�GQqhpH#!98cHpH#!98cHpHGCr  1p$8$*hp�G88: : :߫8cHpH#!98cHpH#!98 WK98cHpH#!98cHpH#!9g!98cHpH#!98}*Hp*Hp*Hpx8qyhpH#!9�kU0�GZp$8UGZp$8UGZp$8UG8rHpq#!�9p ||9ӿ[>@|3WKSioƅpub ʫwai;yU[ٓ9˫WqVRuO*ѪY])̓v[}TգZVb8ÜZW!;-ªѭwnnG앯|{2*}.LwgGn/ko;: W直˻K8K0չr;n\,n`z𠒽LmX 6Ꚗ}o:GlͺcvgOy^5u4ZVm3(Nlq*{5 ۙp9n4M1,m/{;-KއOD-81mte;mٍeͦ\u?iOq۽n-]ĵL;2zٲ5.(Ln՚i-Vev>m75h+ܨOavo[ 7;lfU83z;f۰M'Ygw4J/~lƓkqH95gȜKGԳLo>-!b;[+1;J;5~c66_zU<xyxl:{usxx<T-̚}S!iy4vj=:{}Z-; 3={z) !nt9_=#5LUM89K߷4YwL~de,FYT2L2<Oϳ?P/>e'߱LB9i?|s~J1oޚbk6; {7w{~'y=-OՓ4Ѻݰك列A%uǯw6o<~}il{{˽i~2wA,Fw>T:k2-,;6;Q*qL-929Sc]}-۞PNiX_/F{Expݟ^OR|u:I~6'333?F,o֊Gr OC]y7v~^i}onY4K #4Q}npE~nZw8W ?ɞߥs+7hgKr8{{zzlN>˲lY%S4]3~mꝝO?qM߼^<OO/0/-ou2}rB8D^ňw*`|WYɩYlop׈'e[T/ ,%bim};3v,R!.%g^|78=3Yn7IG9Ke~s~9iO^Xtwi~5{y>^!a<,v J+vk]7krewәrScEuU"_Y1=]2{ON&LLL֯7^+zڱ4qƼJ?TοNc4},E쒻V&'W5IHj0DgDxxHh˹X&71z 7ϼ< 4u9CU;\y;8} '< OGr_}k:nQ_x#›]Goa]Cng9 >}�|k<??<~ӵ=+J|?`�molNݍDyg/~t*ӗ*ףAo|vp6:Nb/LO</1,7q`k^ӝȉwY+"~?YĂ f!!\Y*խkYZY^sCYH4ϸ>tQu2PKjm���PK����׈XS}��_e�� ���w08.pkgproj][w6~ 6vfrB 8p0( M}\$,o֌F| Y~1u9 #{_['N;ț|mַ_zhܨ \aNɒȵy^|q,Gt<<жVm۟ #^ �Q&ʎ@NtԞ2<uO?u㩪)՗]8f_nml}a$4 AMYCRGd, y׷-[.rB7 M Ii Q Ck9ٞ-Hɭ%Lsm< '0<i!U0.R+0rF0J9)-jQ)t_~gIuy|’C˧0SPQ]k~S&9su /tFS ]U޻T߲MKu<w#5}N SB՜^_rJ$ ςT%,U)HOh Av`ja?l2{R07 oϦË)AfznychȅcvetrtI>}2uFNN0 Tw69rv̳ |M%]?tz6T-^l4nHVìAs whIĂe߿oh djnzn͛蠠YQSC+L`0{<ơ>L{?>̨l@[t̩嫀-[zԌ mEr5l4јVB3l^;S ;JMu%LLCYΫfraj5`o~'jNtsU:ot@c"bOJVY'Y+"vg!EIqѸ彮cTXV̈́ i%5j)D -}e҈˾&028"fcaklE0gs9iw:'XLJǽl/˔Vln4R %GZ7^^#/lcB ],8/(?ߝٝYx]⚛h[%K۴oPysT⭪JqgQ=lͶ^eUʙW2ܸi.d:D9y9G˜VC Sz!h@ CFF¸Fߊʕ) /%]:}pjʒandh@0̅K˻LA7mHXq 4=}QݦtI u맕&^<Uэxx^gO0@& ,�ad\!n dDrR<Q3!GӾ"$"K)KE*bVOV[ )3`G +M2I%,֥hY}@~dheL* ,F,7kHE_ALt+OU'N҄l-ﰌ;ؘ7TҬoA},Fx!)sJ{9%_&W5Iӗv6ߺChC›&$.<G U dA#@ !IjN9:)!.+*VRoR_ RFb~6195XSm|JCQdCR T6ZKeB C?rr}90l sXIUH`9t "!eKCJ!%& $.8?m߁8@K}蘒,0 l{W叼<sA3As`] &+p]pS.|u-~Q"ls[?f舛Eٜpo~9yaNgMgMbYIv Q80vk¶s#@ޭ_JW%h D�~ZkoJxŏsȳwq=Ůȟ0}T1gEN^mkA N}$e('6`6l?dcN롾]+drPK����e0P:φ��iR�� ���astap.pkgproj\[w8~N ֯;q_v;{<l3F"y8l8̯"3DU*}_UI*|& t}N#Po;7cAk緓ɚDt(,fn yItE,3*2)L(B#tnh?Q?Q E=4SeNt4+sSǝD'É30/C;A6`5plbҕa2 ES A*.>&g!IY9a2�KQ1YH[H(`}1)�4ʏL$$03PYA,VLEOMUFВjڅ:4 jxUEu QE4m9Y;]/ScNذ ݀?>E/ *red6Wpv'v/CcOX#Od1V0.FWIZixƖHC y*7޴fג_kdՈTn0vϏ^.~]DqXND9i/ls;򃖩gJ'9$Zv-gDTUwFÇ0󖫝*T:UXF˜FӲlE4h$崫37Sv$ldԛPhrzaPbejʽcW)uFtOcwt)}[LwN[v)< (lߵ^.KD;=>Q3m@=1ȽG7p<wky7{>/.3CA=EpykZӯۀcl‘b=<kʣ i@./^A"d@ shKU PNMo. 'x]Xz`:R5Ќ(Xb%Uöu =hԭ-T~ɡǒ褡C<YiHEMuhA6L2*Qmu޿4UBf̥:I#4GBz8P ;ӟb@]*gט+_ ?T=V} .$Xq$mLVwCk4$mrh>%|{GCYt:&VVߏ?v'p|,_aS?1/=`mfJcVJ$`?xm,jٲӏ� 4k a뀥aiGƙvQb~R#8/LkXq"1l=#͠ "&PWT6EʃiI#hX ``}s@֒" s+^rlF˝yzCEi_B_K> &ZJ/oAmgL_J{A[%U^pi^;hZ|'-nOS<RHЉ^vz\RE?|1!\6KW'>"KōW"v׀*S9\c<~suKUyT C Iܛ\Z]�2R{T1@9;Of*l<ǮZ>Iy2*7M#ֹ14=w51r.My f6]V"k`$^/ݙù)uK q!~ӡMҜ-`@{ހCÂj&F&PXQ%R, s+Tȝv 7Eܲih"ޠY)&#BtK9486Ӹ,zGg"~q<`6ܡzmq>w;v?+?<{rS 3a5?]p+q XȎƯIݷIumn8C2,"s5C7 &1)Mmw'3Zhx{`vzF\o[ܹ[8h$ћ<\Eݺ?Þ5hdP0ʍ3{uYN~Tv2[ u`�OW ?Yʿ4$5b-$k$J[16aubK+kTM-C!Y[zLq_LɇPK���TCQ(DL��X� � ��������@����g17.pkgprojUX� J_I_PK��� P2��� � ��������@��g18.pkgprojUX�J_! ^PK���ۍ.T)��\ � � ��������@#��h17.pkgprojUX�aaPK���.TU=.)��\ � � ��������@jM��h18.pkgprojUX�aaPK���.Tjm��� � ��������@Kw��v17.pkgprojUX�aaPK�����׈XS}��_e�� �������� �����w08.pkgprojPK�����e0P:φ��iR�� �������� ���(��astap.pkgprojPK��������ٚ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_asteroid.pas�������������������������������������������������������������0000644�0001751�0001751�00000104313�14344743400�017055� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_asteroid; {Copyright (C) 2021 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls, LCLIntf, ColorBox, Buttons,{for for getkeystate, selectobject, openURL} math, astap_main, unit_stack, unit_ephemerides; type { Tform_asteroids1 } Tform_asteroids1 = class(TForm) add_annotations1: TCheckBox; annotate_asteroids1: TButton; BitBtn1: TBitBtn; BitBtn2: TBitBtn; cancel_button1: TButton; ColorBox1: TColorBox; date_label1: TLabel; date_obs1: TEdit; download_mpcorb1: TLabel; file_to_add1: TButton; file_to_add2: TButton; Group_Box1: TGroupBox; Group_Box2: TGroupBox; help_asteroid_annotation1: TLabel; label_start_mid1: TLabel; Label2: TLabel; Label3: TLabel; latitude1: TEdit; longitude1: TEdit; max_magn_asteroids1: TEdit; annotation_size1: TEdit; max_nr_asteroids1: TEdit; mpcorb_filedate1: TLabel; mpcorb_filedate2: TLabel; mpcorb_path2: TLabel; mpcorb_path1: TLabel; OpenDialog1: TOpenDialog; showfullnames1: TCheckBox; add_subtitle1: TCheckBox; font_follows_diameter1: TCheckBox; showmagnitude1: TCheckBox; max_magn_asteroids2: TUpDown; annotation_size2: TUpDown; up_to_magn1: TLabel; up_to_number1: TLabel; procedure annotate_asteroids1Click(Sender: TObject); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); procedure cancel_button1Click(Sender: TObject); procedure download_mpcorb1Click(Sender: TObject); procedure file_to_add1Click(Sender: TObject); procedure file_to_add2Click(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormKeyPress(Sender: TObject; var Key: char); procedure FormShow(Sender: TObject); procedure Group_Box1Click(Sender: TObject); procedure help_asteroid_annotation1Click(Sender: TObject); procedure latitude1Change(Sender: TObject); procedure longitude1Change(Sender: TObject); private public end; var form_asteroids1: Tform_asteroids1; const maxcount_asteroid : string='10000'; maxmag_asteroid : string='17'; mpcorb_path : string='MPCORB.DAT'; cometels_path : string='CometEls.txt'; font_follows_diameter:boolean=false; showfullnames: boolean=true; showmagnitude: boolean=false; add_annotations: boolean=false;{annotation to the fits header} add_date: boolean=true; procedure plot_mpcorb(maxcount : integer;maxmag:double;add_annot :boolean) ;{read MPCORB.dat}{han.k} function deltaT_calc(jd: double) : double; {delta_T in days} implementation uses unit_hjd; {for polar2} {$R *.lfm} var // X_pln,Y_pln,Z_pln : double; {of planet} wtime2actual: double; midpoint : boolean; site_lat_radians,site_long_radians : double; const sun200_calculated : boolean=false; {sun200 calculated for comets} VAR // TEQX : double; // pb_earth, vb_earth : r3_array;{heliocentric earth vector} ph_earth, vh_earth : r3_array;{Barycentric earth vector} ph_pln : r3_array;{helio centric planet vector} procedure Tform_asteroids1.help_asteroid_annotation1Click(Sender: TObject); {han.k} begin openurl('http://www.hnsky.org/astap.htm#asteroid_annotation'); end; procedure Tform_asteroids1.latitude1Change(Sender: TObject);{han.k} var errordecode:boolean; begin dec_text_to_radians(latitude1.Text,site_lat_radians,errordecode); if errordecode then latitude1.color:=clred else latitude1.color:=clwindow; end; procedure Tform_asteroids1.longitude1Change(Sender: TObject);{han.k} var errordecode:boolean; begin dec_text_to_radians(longitude1.Text,site_long_radians,errordecode); if errordecode then longitude1.color:=clred else longitude1.color:=clwindow; end; //function calculate_Earth_vector(mjd : double; out PV_earth: PV_array): integer;// PV_earth vector contains X,Y,Z in AU and XV,YV, ZV speeds in AU/day //Const // TAU=499.004782; //var // R : double; // PH, VH, PB, VB : PH_array; //begin // if ((mjd>88070) {>year 2100} or (mjd<15021 {<year 1900})) then {calculate_Earth_Moon_Barycentre_vector outside years 1900 to 2100. This is valid from 1000 to 3000} // begin //The barycenter is located on average 4,671 km (2,902 mi) from Earth's center. This gives a small error} // sla_PLANET(mjd,3, {out} PV_earth, result {error}); // end // else // begin {high accuracy routine for year 1900 to 2100} // sla_EPV (mjd, PH, VH{, PB, VB });{high accuracy for years 1900 to 2100} // PV_earth[1]:=PH[1]; {x position} // PV_earth[2]:=PH[2]; {y position} // PV_earth[3]:=PH[3]; {z position} // PV_earth[4]:=VH[1]/(24*3600); {Convert velocity VH to AU per second} // PV_earth[5]:=VH[2]/(24*3600); // PV_earth[6]:=VH[3]/(24*3600); // end; // R:=sqrt(sqr(PV_earth[1])+sqr(PV_earth[2])+sqr(PV_earth[3]));{Earth Sun distance} // if ((R>0.9) and (R<1.1)) then result:=0 else result:=99; {Earth at one AU distance?} //end; procedure parallax_xyz(wtime,latitude : double;var x,y,z: double); {X,Y,Z in AU, parallax can be 8.8 arcsec per au distance. See new meeus page 78} const AE=149597870.700; {ae has been fixed to the value 149597870.700 km as adopted by the International Astronomical Union in 2012. Note average earth distance is 149597870.662 * 1.000001018 see meeus new 379} var sin_latitude_corrected, cos_latitude_corrected, height_above_sea, flatteningearth, x_observ,y_observ,z_observ,u :double; begin height_above_sea:=100;{meters} flatteningearth:=0.99664719; {earth is not perfect round} u:=arctan(flatteningearth*sin(latitude)/cos(latitude)); {tan:=sin/cos} sin_latitude_corrected:=flatteningearth*sin(u)+height_above_sea*sin(latitude)/6378140; cos_latitude_corrected:=cos(u)+height_above_sea*cos(latitude)/6378140; {above values are very close to sin(latitude) and cos(latitude)} X_observ := (6378.14/AE)*cos_latitude_corrected * COS(wtime); Y_observ := (6378.14/AE)*cos_latitude_corrected * SIN(wtime); Z_observ := (6378.14/AE)*sin_latitude_corrected; X:=X-X_observ; Y:=Y-Y_observ; Z:=Z-Z_observ; end; procedure minor_planet(sun_earth_vector:boolean;julian {dynamic time}:double;year,month:integer;day,a_e, a_or_q,a_i,a_ohm,a_w,a_M :double;var RA3,DEC3,DELTA,sun_delta:double); { Comet hale bopp YEAR:=1997; MONTH:=03; D:=29.74151986; Q:= 0.901891; Perihelion distance q in AU, AORQ ECC:= 0.994952; Eccentricity e INC2:= 89.0445; Inclination i, OrbInc LAN:= 283.2449; Longitude of the ascending node, Anode AOP:= 130.5115; Argument of perihelion, Perih} const TAU=499.004782; var JSTAT,I : integer; x_pln,y_pln,z_pln,TL,R, epoch,mjd : double; U : U_array; pv : r6_array; begin mjd:=julian-2400000.5; {convert to mjd} if sun_earth_vector=false then begin sla_EPV2(mjd,false {heliocentric}, ph_earth,vh_earth);{Heliocentric position earth including light time correction, high accuracy for years 1900 to 2100} sun200_calculated:=true; end; epoch:= julian_calc(year,month,day,0,0,0)-2400000.5; {MJD} if a_M<1E98 then {asteroid. Use a_M, mean anomoly as an indicator for minor planet or comet, The mean anomoly of a comet is in princple zero and at perihelion} orbit (mjd, 2 {minor planet}, epoch, a_i*pi/180, a_ohm*pi/180,a_w*pi/180, a_or_q,a_e,a_M*pi/180, 0, PV, JSTAT) //Determine the position and velocity. else orbit (mjd, 3 {comet} , epoch, a_i*pi/180, a_ohm*pi/180,a_w*pi/180,a_or_q, a_e,0 , 0, PV, JSTAT);//Determine the position and velocity. if (Jstat <> 0) then begin exit; end; { Option JFORM := 2, suitable for minor planets:; *; * EPOCH := epoch of elements (TT MJD); * ORBINC := inclination i (radians); * ANODE := longitude of the ascend; * PERIH := argument of perihelion, little omega (radians); * AORQ := mean distance, a (AU); * E := eccentricity, e (range 0 to <1); * AORL := mean anomaly M (radians); *; * Option JFORM := 3, suitable for comets:; *; * EPOCH := epoch of elements and perihelion (TT MJD); * ORBINC := inclination i (radians); * ANODE := longitude of the ascend; * PERIH := argument of perihelion, little omega (radians); * AORQ := perihelion distance, q (AU); * E := eccentricity, e (range 0 to 10);} R:=sqrt(sqr(pv[1]-ph_earth[1])+sqr(pv[2]-ph_earth[2])+sqr(pv[3]-ph_earth[3]));{geometric distance minor planet and Earth in AU} TL:=TAU*R;// Light time (sec); {note with PB_earth, so distance to Barycentric position there is a big error. Use PH_earth} x_pln:=pv[1]-ph_earth[1]-TL*(pv[4]);{ Correct position for planetary aberration. Use the speed values to correct for light traveling time. The PV_earth is already corrected for aberration!!} y_pln:=pv[2]-ph_earth[2]-TL*(pv[5]); z_pln:=pv[3]-ph_earth[3]-TL*(pv[6]); PARALLAX_XYZ(wtime2actual,site_lat_radians,X_pln,Y_pln,Z_pln);{correct parallax X, Y, Z in AE. This should be done in Jnow so there is a small error in J2000 } polar2(x_pln,y_pln,z_pln,delta,dec3,ra3) ; ph_pln[1]:=pv[1];{store for illumination calculation} ph_pln[2]:=pv[2]; ph_pln[3]:=pv[3]; sun_delta:=sqrt(sqr(pv[1])+sqr(pv[2])+sqr(pv[3])); end; procedure illum2( x,y,z, xe,ye,Ze: double; out R_SP,R_EP,elong,phi,phase: double); var xp,yp,zp, re, c_phi : double; begin xp:=x-xe; yp:=y-ye; zp:=z-ze; //minor planet geocentric position {Compute the distances in the Sun-Earth-planet triangle} r_sp:= sqrt(sqr(x)+sqr(y)+sqr(z)); {Distance Sun and minor planet} re := sqrt(sqr(xe)+sqr(ye)+sqr(ze)); {Distance Sun and Earth} r_ep:= sqrt(sqr(xp)+sqr(yp)+sqr(zp)); {Distance Earth and minor planet} elong:=(180/pi)*arccos( ( r_ep*r_ep + re*re - r_sp*r_sp ) / ( 2.0*r_ep*re ) );{calculation elongation, phase angle and phase} c_phi:=( sqr(r_ep) + sqr(r_sp) - sqr(re) ) / (2.0*r_ep*r_sp); phi :=(180/pi)*arccos( c_phi );{phase angle in degrees} phase:= 100*0.5*(1.0+c_phi); {0..100} end; function illum_planet : double; { Get phase angle comet. Only valid is comet routine is called first.} var r_sp,r_ep,elong,phi1,phase1 :double; begin illum2(ph_pln[1],ph_pln[2],ph_pln[3],ph_earth[1],ph_earth[2],ph_earth[3],r_sp,r_ep,elong,phi1, phase1 );{ heliocentric positions minor planet and earth} result:=phi1*pi/180; end; Function asteroid_magn_comp(g ,b :double):double; {Magnitude change by phase asteroid, New meeus 32.14} {han.k} {g = slope parameter, b= angle sun-asteroid-earth} var b2,q1,q2 :double; begin b2:=sin(b*0.5)/cos(b*0.5); {tan is sin/cos} q1:=EXP(-3.33*EXP(0.63*LN(b2+0.00000001))); {power :=EXP(tweedevar*LN(eerstevar))} q2:=EXP(-1.87*EXP(1.22*LN(b2+0.00000001))); asteroid_magn_comp:= -2.5*ln( (1-g)*q1 + g*q2 )/ln(10); end; //A brief header is given below: //Des'n H G Epoch M Peri.(w) Node(ohm) Incl. e n a Reference #Obs #Opp Arc rms Perts Computer //---------------------------------------------------------------------------------------------------------------------------------------------------------------- //00001 3.4 0.15 K205V 162.68631 73.73161 80.28698 10.58862 0.0775571 0.21406009 2.7676569 0 MPO492748 6751 115 1801-2019 0.60 M-v 30h Williams 0000 (1) Ceres 20190915 //00002 4.2 0.15 K205V 144.97567 310.20237 173.02474 34.83293 0.2299723 0.21334458 2.7738415 0 MPO492748 8027 109 1821-2019 0.58 M-v 28h Williams 0000 (2) Pallas 20190812 //00003 5.2 0.15 K205V 125.43538 248.06618 169.85147 12.99105 0.2569364 0.22612870 2.6682853 0 MPO525910 7020 106 1821-2020 0.59 M-v 38h Williams 0000 (3) Juno 20200109 //00004 3.0 0.15 K205V 204.32771 150.87483 103.80908 7.14190 0.0885158 0.27150657 2.3620141 0 MPO525910 6941 102 1821-2019 0.60 M-p 18h Williams 0000 (4) Vesta 20191229 //00005 6.9 0.15 K205V 17.84635 358.64840 141.57102 5.36742 0.1909134 0.23866119 2.5740373 0 MPO525910 2784 77 1845-2020 0.53 M-v 38h Williams 0000 (5) Astraea 20200105 //00006 5.7 0.15 K205V 190.68653 239.73624 138.64343 14.73966 0.2032188 0.26107303 2.4245327 0 MPO525910 5745 90 1848-2020 0.53 M-v 38h Williams 0007 (6) Hebe 20200110 //; Readable designation yyyymmdd.ddd e a [ae] i ohm w Equinox M-anomaly H G //;-------------------------------------------------------------------------------------------------------------------------- // (1) Ceres |20200531.000|0.0775571| 2.7676569| 10.58862| 80.28698| 73.73161|2000|162.68631| 3.4 | 0.15|J1 function strtofloat(st: string) : double; {han.k} var error2 : integer; begin val(st,result,error2); end; function fnmodulo(x,range: double):double; begin {range should be 2*pi or 24 hours or 0 .. 360} result:=range*frac(x/range); if result<0 then result:=result+range; {do not like negative numbers} end; function deltaT_calc(jd: double) : double; {delta_T in days} var year : integer; y,u,t : double; begin y:=(2000 +(JD-2451544.5)/365.25); year:=round(y); if ((year>=2016) and (year<=2020)) then begin t:=y-2016; result:=(68.3+t*0.54);{seconds} // (71-68.3)/5 = 0.54 end else if ((year>=2021) and (year<=2024)) then begin t:=y-2021; result:=(71+t*0.5);{seconds} // (73-71)/4 = 0.5 end else if ((year>=2025) and (year<=2049)) then begin t:=y-2000; result:=(61.46+t*(0.32217+t*(0.005589)));{seconds} end else if ((year>=2050) and (year<=2149)) then begin u:=(y-1820)/100; t:=2150-y; result:=(-20+32*u*u-0.5788*t);{seconds} end else if ((year>=2150) and (year<=2999)) then begin // End of Espenak range u:=(y-1820)/100; result:=(-20+32*u*u);{seconds} end else result:=60; result:=result/(24*3600);{convert results to days} end; procedure convert_MPCORB_line(txt : string; var desn,name: string; var yy,mm,dd,a_e,a_a,a_i,a_ohm,a_w,a_M,h,g: double);{read asteroid, han.k} var code2 : integer; // degrees_to_perihelion,c_epochdelta : double; date_regel : STRING[5]; centuryA,monthA,dayA :string[2]; //const // Gauss_gravitational_constant: double=0.01720209895*180/pi; begin desn:='';{assume failure} date_regel:=copy(txt,21,25-21+1); {21 - 25 a5 Epoch (in packed form, .0 TT), see http://www.minorplanetcenter.net/iau/info/MPOrbitFormat.html} // date_regel:='J9611'; // 1996 Jan. 1 = J9611 // 1996 Jan. 10 = J961A // 1996 Sept.30 = J969U // 1996 Oct. 1 = J96A1 // 2001 Oct. 22 = K01AM str(Ord(date_regel[1])-55:2,centuryA); // 'A'=65 code2:=Ord(date_regel[4]); if code2<65 then code2:=code2-48 {1..9} else code2:=code2-55; {A..Z} monthA := Formatfloat('00', code2);{convert to string with 2 digits} code2:=Ord(date_regel[5]); if code2<65 then code2:=code2-48 {1..9} else code2:=code2-55; {A..Z} dayA := Formatfloat('00', code2); {convert to string with 2 digits} if ((centuryA='19') or (centuryA='20') or (centuryA='21')) then {do only data} begin name:=copy(txt,167,194-167+1); desn:=copy(txt,1,5); H:=strtofloat(copy(txt,8,12-8+1)); { 8 - 12 f5.2 Absolute magnitude, H} G:=strtofloat(copy(txt,14,19-14+1)); {14 - 19 f5.2 Slope parameter, G} yy:=strtofloat(centuryA+date_regel[2]+date_regel[3]);{epoch year} mm:=strtofloat(monthA);{epoch month} dd:=strtofloat(dayA); {epoch day} a_M:=strtofloat(copy(txt,27,35-27+1)); {27 - 35 f9.5 Mean anomaly at the epoch, in degrees} a_w:=strtofloat(copy(txt,38,46-38+1)); {38 - 46 f9.5 Argument of perihelion, J2000.0 (degrees)} a_ohm:=strtofloat(copy(txt,49,57-49+1)); {49 - 57 f9.5 Longitude of the ascending node, J2000.0 (degrees)} a_i:=strtofloat(copy(txt,60,68-60+1)); {60 - 68 f9.5 Inclination to the ecliptic, J2000.0 (degrees)} a_e:=strtofloat(copy(txt,71,79-71+1)); {71 - 79 f9.7 Orbital eccentricity} a_a:=strtofloat(copy(txt,93,103-93+1)); {93 - 103 f11.7 Semimajor axis (AU)} end; end; procedure convert_comet_line(txt : string; var desn,name: string; var yy,mm,dd, ecc,q,inc2,lan,aop,M_anom,H,k: double); {han.k} var error1 : integer; g : double; begin desn:='';{assume failure} //date_regel:=copy(txt,21,25-21+1); {21 - 25 a5 Epoch (in packed form, .0 TT), see http://www.minorplanetcenter.net/iau/info/MPOrbitFormat.html} yy:=strtofloat(copy(txt,15,4));{epoch year} if ((yy>1900) and (yy<2200)) then {do only data} begin name:=copy(txt,103,39); desn:=copy(txt,159,10); H:=strtofloat(copy(txt,91,5)); { Absolute magnitude, H} val(copy(txt,97,4),g,error1); k:=g*2.5; { Comet activity} yy:=strtofloat(copy(txt,15,4));{epoch year} mm:=strtofloat(copy(txt,20,2));{epoch month} dd:=strtofloat(copy(txt,23,7));{epoch day} q:=strtofloat(copy(txt,31,9)); {q} ecc:=strtofloat(copy(txt,41,9)); aop:=strtofloat(copy(txt,51,9)); lan:=strtofloat(copy(txt,61,9)); inc2:=strtofloat(copy(txt,71,9)); M_anom:=1E99;{Should be zero since comet values are give at perihelion. But label this as a a comet by abnormal value 1E99} {Hale Bopp Q:= 0.91468400000000005; Perihelion distance q in AU; ECC:= 0.99492999999999998; Eccentricity e INC2:= 88.987200000000001; Inclination i LAN:= 283.36720000000003; Longitude of the ascending node AOP:= 130.62989999999999; Argument of perihelion} end; end; procedure plot_mpcorb(maxcount : integer;maxmag:double;add_annot :boolean) ;{read MPCORB.dat}{han.k} const a_g : double =0.15;{asteroid_slope_factor} siderealtime2000=(280.46061837)*pi/180;{[radians], sidereal time at 2000 jan 1.5 UT (12 hours) =Jd 2451545 at meridian greenwich, see new meeus 11.4} earth_angular_velocity = pi*2*1.00273790935; {about(365.25+1)/365.25) or better (365.2421874+1)/365.2421874 velocity dailly. See new Meeus page 83} var txtf : textfile; count,fontsize : integer; yy,mm,dd,h,a_or_q, DELTA,sun_delta,ra2,dec2,mag,phase,delta_t, SIN_dec_ref,COS_dec_ref,c_k,fov,cos_telescope_dec,u0,v0 ,a_e,a_i,a_ohm,a_w,a_M : double; desn,name,s, thetext1,thetext2,fontsize_str:string; flip_horizontal, flip_vertical,form_existing, errordecode : boolean; procedure plot_asteroid(sizebox :integer); var dra,ddec, delta_ra,det,SIN_dec_new,COS_dec_new,SIN_delta_ra,COS_delta_ra,hh : double; x,y : double; begin //memo2_message('Asteroid position at :'+head.date_obs+', '+#9+floattostr(ra2*180/pi)+','+floattostr(dec2*180/pi)); {5. Conversion (RA,DEC) -> (x,y)} sincos(dec2,SIN_dec_new,COS_dec_new);{sincos is faster then separate sin and cos functions} delta_ra:=ra2-head.ra0; sincos(delta_ra,SIN_delta_ra,COS_delta_ra); HH := SIN_dec_new*sin_dec_ref + COS_dec_new*COS_dec_ref*COS_delta_ra; dRA := (COS_dec_new*SIN_delta_ra / HH)*180/pi; dDEC:= ((SIN_dec_new*COS_dec_ref - COS_dec_new*SIN_dec_ref*COS_delta_ra ) / HH)*180/pi; det:=head.cd2_2*head.cd1_1 - head.cd1_2*head.cd2_1; u0:= - (head.cd1_2*dDEC - head.cd2_2*dRA) / det; v0:= + (head.cd1_1*dDEC - head.cd2_1*dRA) / det; if sip then {apply SIP correction} begin x:=(head.crpix1 + u0 + ap_0_0 + ap_0_1*v0+ ap_0_2*v0*v0+ ap_0_3*v0*v0*v0 +ap_1_0*u0 + ap_1_1*u0*v0+ ap_1_2*u0*v0*v0+ ap_2_0*u0*u0 + ap_2_1*u0*u0*v0+ ap_3_0*u0*u0*u0); {3th order SIP correction, fits count from 1, image from zero therefore subtract 1} y:=(head.crpix2 + v0 + bp_0_0 + bp_0_1*v0+ bp_0_2*v0*v0+ bp_0_3*v0*v0*v0 +bp_1_0*u0 + bp_1_1*u0*v0+ bp_1_2*u0*v0*v0+ bp_2_0*u0*u0 + bp_2_1*u0*u0*v0+ bp_3_0*u0*u0*u0); {3th order SIP correction} end else begin x:=(head.crpix1 + u0); {in FITS range 1..width} y:=(head.crpix2 + v0); end; if ((x>-50) and (x<=head.width+50) and (y>-50) and (y<=head.height+50)) then {within image1 with some overlap} begin {annotate} if showfullnames then thetext1:=trim(name) else thetext1:=trim(desn)+'('+floattostrF(mag,ffgeneral,3,1)+')'; if showmagnitude then thetext2:='{'+inttostr(round(mag*10))+'}' {add magnitude in next field} else thetext2:=''; if add_annot then begin {store annotation. Fractions are for ephemeride alignment stacking} add_text ('ANNOTATE=',#39+copy(floattostrF(x+1-sizebox,FFFixed,0,2)+';'+floattostrF(y+1-sizebox,FFFixed,0,2)+';'+floattostrF(x+1+sizebox,fffixed,0,2)+';'+floattostrF(y+1+sizebox,FFFixed,0,2)+';-'+fontsize_str {-1 or larger}+';'{boldness}+thetext1+';'+thetext2+';',1,68)+#39); {store in FITS coordinates 1..} annotated:=true;{header contains annotations} end; plot_the_annotation(round(x+1-sizebox) {x1},round(y+1-sizebox) {y1},round(x+1+sizebox){x2},round(y+1+sizebox){y2},-max(1,round(fontsize*10/12)/10){typ},thetext1,thetext2); {plot annotation} end; end; procedure read_and_plot(asteroid: boolean; path :string); begin assignfile(txtf,path); try Reset(txtf); while ((not EOF(txtf)) and (count<maxcount) and (esc_pressed=false)) do {loop} begin ReadLn(txtf, s); if length(s)>10 then begin if asteroid then convert_MPCORB_line(s, {var} desn,name, yy,mm,dd,a_e,a_or_q {a},a_i,a_ohm,a_w,a_M,H,a_g){read MPC asteroid} else convert_comet_line (s, {var} desn,name, yy,mm,dd,a_e ,a_or_q {q},a_i,a_ohm,a_w,a_M,H,c_k); {read MPC comet} if ((desn<>'') and (a_or_q<>0)) then {data line} begin try inc(count); {comet is indicated by a_M:=1E99, Mean anomoly, an abnormal value} minor_planet(sun200_calculated,jd_mid+delta_t{delta_t in days},round(yy),round(mm),dd,a_e,a_or_q,a_i,a_ohm,a_w,a_M,{var} ra2,dec2,delta,sun_delta); if sqr( (ra2-head.ra0)*cos_telescope_dec) + sqr(dec2-head.dec0)< sqr(fov) then {within the image FOV} begin if asteroid then begin mag:=h+ ln(delta*sun_delta)*5/ln(10); {log(x) = ln(x)/ln(10)} phase:=illum_planet; { Get phase comet. Only valid if comet routine is called first.} mag:=mag+asteroid_magn_comp(a_g{asteroid_slope_factor},phase); {slope factor =0.15 angle object-sun-earth of 0 => 0 magnitude 5 0.42 10 0.65 15 0.83 20 1} end else begin {comet magnitude} mag:=H+ ln(delta)*5/ln(10)+ c_k*ln(sun_delta)/ln(10) ; end; if mag<=maxmag then begin if asteroid then plot_asteroid(annotation_diameter) else plot_asteroid(annotation_diameter*5); end; if frac(count/10000)=0 then begin if form_existing then form_asteroids1.caption:=inttostr(count); application.processmessages;{check for esc} end; end;{within FOV} except end; end; end;{longer then 10} end; finally CloseFile(txtf); end; end; begin if head.naxis=0 then exit; if head.cd1_1=0 then begin memo2_message('Abort, first solve the image!');exit;end; cos_telescope_dec:=cos(head.dec0); fov:=1.5*sqrt(sqr(0.5*head.width*head.cdelt1)+sqr(0.5*head.height*head.cdelt2))*pi/180; {field of view with 50% extra} flip_vertical:=mainwindow.flip_vertical1.Checked; flip_horizontal:=mainwindow.flip_horizontal1.Checked; mainwindow.image1.Canvas.brush.Style:=bsClear; form_existing:=assigned(form_asteroids1);{form existing} {$ifdef mswindows} mainwindow.image1.Canvas.Font.Name :='default'; {$endif} {$ifdef linux} mainwindow.image1.Canvas.Font.Name :='DejaVu Sans'; {$endif} {$ifdef darwin} {MacOS} mainwindow.image1.Canvas.Font.Name :='Helvetica'; {$endif} mainwindow.image1.canvas.pen.color:=annotation_color;{color circel} mainwindow.image1.Canvas.font.color:=annotation_color; fontsize:=round(min(20,max(10,head.height*20/4176))); if font_follows_diameter then begin fontsize:=max(annotation_diameter,fontsize); mainwindow.image1.Canvas.Pen.width := 1+annotation_diameter div 10;{thickness lines} end; mainwindow.image1.Canvas.font.size:=fontsize; str(max(1,fontsize/12):0:1,fontsize_str); {store font size for header annotations} if date_avg<>'' then date_to_jd(date_avg,0 {head.exposure}){convert date-AVG to jd_mid be using head.exposure=0} else date_to_jd(head.date_obs,head.exposure);{convert date-OBS to jd_start and jd_mid} if jd_start<=2400000 then {no date, found year <1858} begin mainwindow.error_label1.caption:=('Error converting date-obs or date-avg from the FITS header'); mainwindow.error_label1.visible:=true; memo2_message(filename2+ ' Error converting date-obs or date-avg from the FITS header'); exit; end; dec_text_to_radians(sitelat,site_lat_radians,errordecode); if errordecode then memo2_message('Warning observatory latitude not found in the fits header'); dec_text_to_radians(sitelong,site_long_radians,errordecode); {longitude is in degrees, not in hours. East is positive according ESA standard and diffractionlimited} {see https://indico.esa.int/event/124/attachments/711/771/06_ESA-SSA-NEO-RS-0003_1_6_FITS_keyword_requirements_2014-08-01.pdf} if errordecode then memo2_message('Warning observatory longitude not found in the fits header'); delta_t:=deltaT_calc(jd_mid); {calculate delta_T in days} wtime2actual:=fnmodulo(site_long_radians+siderealtime2000 +(jd_mid-2451545 )* earth_angular_velocity,2*pi);{Local sidereal time. As in the FITS header in ASTAP the site longitude is positive if east and has to be added to the time} sun200_calculated:=false; count:=0; sincos(head.dec0,SIN_dec_ref,COS_dec_ref);{do this in advance since it is for each pixel the same} if add_annot then begin remove_key('ANNOTATE',true{all});{remove key annotate words from header} annotated:=false; end; if mpcorb_path<>'' then begin if fileexists(mpcorb_path) then read_and_plot(true,mpcorb_path) else memo2_message('MPCORB.DAT file not found: '+ mpcorb_path+' Set path in Asteroid & Comet annotation menu, CTRL+R' ); end; count:=0; if cometels_path<>'' then begin if fileexists(cometels_path) then read_and_plot(false,cometels_path) else memo2_message('CometEls.txt file not found: '+ cometels_path+' Set path in Asteroid & Comet annotation menu, CTRL+R' ); end; {write some info at bottom screen} if form_existing then begin with mainwindow do begin if add_date then begin mainwindow.image1.Canvas.textout(round(0.5*fontsize),head.height-round(4*fontsize),'Position[α,δ]: '+mainwindow.ra1.text+' '+mainwindow.dec1.text);{} mainwindow.image1.Canvas.textout(round(0.5*fontsize),head.height-round(2*fontsize),'Midpoint date: '+JdToDate(jd_mid)+', total exp: '+inttostr(round(head.exposure))+'s');{} end; end; end; end; function test_mpcorb : boolean; begin if fileExists(form_asteroids1.mpcorb_path1.caption)=false then begin form_asteroids1.mpcorb_path1.Font.color:=clred; form_asteroids1.mpcorb_filedate1.caption:='No MPCORB.DAT file'; result:=false; exit; end else begin form_asteroids1.mpcorb_filedate1.caption:=DateTimeToStr(FileDateToDateTime(FileAge(form_asteroids1.mpcorb_path1.caption))); form_asteroids1.mpcorb_path1.font.color:=clgreen; result:=true; end; end; function test_cometels : boolean; begin if fileExists(form_asteroids1.mpcorb_path2.caption)=false then begin form_asteroids1.mpcorb_path2.Font.color:=clred; form_asteroids1.mpcorb_filedate2.caption:='No CometEls.txt file'; result:=false; exit; end else begin form_asteroids1.mpcorb_filedate2.caption:=DateTimeToStr(FileDateToDateTime(FileAge(form_asteroids1.mpcorb_path2.caption))); form_asteroids1.mpcorb_path2.font.color:=clgreen; result:=true; end; end; procedure set_some_defaults; {wil be set if annotate button is clicked or when form is closed} begin with form_asteroids1 do begin {latitude, longitude} sitelat:=latitude1.Text; sitelong:=longitude1.Text; lat_default:=sitelat; long_default:=sitelong; if midpoint=false then head.date_obs:=date_obs1.Text else date_avg:=date_obs1.Text; annotation_color:=ColorBox1.selected; annotation_diameter:=form_asteroids1.annotation_size2.Position div 2; end; end; procedure Tform_asteroids1.annotate_asteroids1Click(Sender: TObject); {han.k} var maxcount : integer; maxmag : double; Save_Cursor: TCursor; begin set_some_defaults; font_follows_diameter:=font_follows_diameter1.checked; maxcount_asteroid:=max_nr_asteroids1.text; maxcount:=strtoint(form_asteroids1.max_nr_asteroids1.text); maxmag_asteroid:=max_magn_asteroids1.text; maxmag:=strtofloat2(form_asteroids1.max_magn_asteroids1.text); showfullnames:=form_asteroids1.showfullnames1.checked; showmagnitude:=form_asteroids1.showmagnitude1.checked; add_annotations:=form_asteroids1.add_annotations1.checked; add_date:=form_asteroids1.add_subtitle1.checked; if ((test_mpcorb=false) and (test_cometels=false)) then begin exit; end;{file not found} mpcorb_path:=form_asteroids1.mpcorb_path1.caption; cometels_path:=form_asteroids1.mpcorb_path2.caption; Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } plot_mpcorb(maxcount,maxmag,add_annotations); Screen.Cursor:=crDefault; form_asteroids1.close; {normal this form is not loaded} mainwindow.setfocus; end; procedure Tform_asteroids1.BitBtn1Click(Sender: TObject); begin mpcorb_path1.caption:=''; mpcorb_path:=''; test_mpcorb; end; procedure Tform_asteroids1.BitBtn2Click(Sender: TObject); begin mpcorb_path2.caption:=''; cometels_path:=''; test_cometels; end; procedure Tform_asteroids1.cancel_button1Click(Sender: TObject); {han.k} begin esc_pressed:=true; form_asteroids1.close; {normal this form is not loaded} mainwindow.setfocus; end; procedure Tform_asteroids1.download_mpcorb1Click(Sender: TObject); begin openurl('https://minorplanetcenter.net/iau/MPCORB.html'); end; procedure Tform_asteroids1.file_to_add1Click(Sender: TObject); {han.k} begin OpenDialog1.Title := 'Select MPCORB.DAT to use'; OpenDialog1.Options := [ofFileMustExist,ofHideReadOnly]; opendialog1.Filter := 'MPCORB.DAT(*.DAT*)|*.dat;*.DAT'; if opendialog1.execute then begin mpcorb_path1.caption:=OpenDialog1.Files[0]; test_mpcorb; end; end; procedure Tform_asteroids1.file_to_add2Click(Sender: TObject); begin OpenDialog1.Title := 'Select CometEls.txt to use'; OpenDialog1.Options := [ofFileMustExist,ofHideReadOnly]; opendialog1.Filter := 'CometEls.txt file (Com*.txt)|Com*.txt'; if opendialog1.execute then begin mpcorb_path2.caption:=OpenDialog1.Files[0]; test_cometels; end; end; procedure Tform_asteroids1.FormClose(Sender: TObject; var CloseAction: TCloseAction); begin set_some_defaults; end; procedure Tform_asteroids1.FormKeyPress(Sender: TObject; var Key: char);{han.k} begin {set form keypreview:=on} if key=#27 then begin esc_pressed:=true; end; end; procedure Tform_asteroids1.FormShow(Sender: TObject);{han.k} begin esc_pressed:=false;{reset from cancel} mpcorb_path1.caption:=mpcorb_path; test_mpcorb; mpcorb_path2.caption:=cometels_path; test_cometels; if date_avg<>'' then begin date_label1.caption:='DATE_AVG'; label_start_mid1.caption:='Midpoint of the observation'; date_obs1.Text:=date_avg; midpoint:=true; end else begin date_label1.caption:='DATE_OBS'; label_start_mid1.caption:='Start of the observation'; date_obs1.Text:=head.date_obs; midpoint:=false; end; max_nr_asteroids1.text:=maxcount_asteroid; max_magn_asteroids1.text:=maxmag_asteroid; {latitude, longitude} if sitelat='' then {use values from previous time} begin sitelat:=lat_default; sitelong:=long_default; end; latitude1.Text:=trim(sitelat); {copy the string to tedit} longitude1.Text:=trim(sitelong); showfullnames1.Checked:=showfullnames; showmagnitude1.Checked:=showmagnitude; add_annotations1.Checked:=add_annotations; form_asteroids1.add_subtitle1.checked:=add_date; ColorBox1.selected:=annotation_color; annotation_size2.position:=annotation_diameter*2; font_follows_diameter1.checked:=font_follows_diameter; end; procedure Tform_asteroids1.Group_Box1Click(Sender: TObject); begin mpcorb_path:=''; end; end. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_raster_rotate.pas��������������������������������������������������������0000644�0001751�0001751�00000132351�14344743400�020124� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_raster_rotate; //This unit applies an accurate arbitrary rotation on a raster image. It distributes the flux of each source pixel up to 4 positions. // This unit is copyright 2021, Han Kleijn // Based on code copyright 2012, Sudonull, https://sudonull.com/post/134233-Precise-rotation-of-the-bitmap-image-at-an-arbitrary-angle // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at https://mozilla.org/MPL/2.0/. {$mode delphi} interface uses Classes, SysUtils, Math,forms {application.processmessages},astap_main; procedure raster_rotate(angle, CX, CY: double; var img: image_array); {accurate raster rotation} procedure rotate_arbitraryold(angle: double; var img: image_array); {no longer used. Only for testing} implementation type expoint = record X, Y: extended; end; el = record S: extended; // the flux for this area. Y, X: integer; // pixel coordinates of the flux end; flux = array [1..9] of el;// total number of pieces of 9 neighbors per side of Equal 1, the order of the necks is not selected var swidth, sheight, scolours: integer; tgAd2, tgBd2, sinB, cosB, sinBucosBd2, cosAu2, cosBu2, triS, pdx, pdy: double; function Point2Ang(x, y, CentrX, CentrY, R: double): double; // Resultat - angle between Y-axis and slow from 12:00 hourly arrow 0 ° -360 ° var dx, dy: double; begin if R <> 0 then begin dx := x - CentrX; dy := y - CentrY; if dx < 0 then if dy < 0 then Result := 360 + 180 * arcsin(dx / R) / pi else Result := 180 - 180 * arcsin(dx / R) / pi else if dy < 0 then Result := 180 * arcsin(dx / R) / pi else Result := 180 - 180 * arcsin(dx / R) / pi; end else Result := 0; end; function Ang2Point(angle, R: double): expoint; // angle 0-360 °, counting from 12:00 hourly hand, Resultat - point at the edge with R and 0.0 var z: integer; begin z := trunc(angle / 180); case z of 0: begin Result.X := r * sin(pi * angle / 180); Result.Y := r * -cos(pi * angle / 180); end; 1: begin angle := angle - 180 * z; Result.X := r * -sin(pi * angle / 180); Result.Y := r * cos(pi * angle / 180); end; end; end; function DoMax(x: double): integer; begin if x < 0 then if frac(abs(x)) > 1e-6 then Result := trunc(x) - 1 else Result := trunc(x) else if frac(x) > 1e-6 then Result := trunc(x) + 1 else Result := trunc(x); end; function calculate_relevant_source_pixels(x, y: integer; CX, CY, angle: double): flux; var ug, vcx, vcy, R, x1, x2, x3, x4, y1, y2, y3, y4,// Pixel Point Codes dx1,{ dx2,} dx3, dx4, dy1, dy2, dy3, dy4, // auxiliary variables s1, s2, s3, s4, s5, s6, s7, s8, s9: double;// squares i,{ j,} ix1, ix2, ix3, ix4, iy1, iy2, iy3, iy4: integer; begin dx1 := x + 0.5 - CX; // add 0.5 to the pixel coordinate - this is the upper left corner, but we have a center dy1 := y + 0.5 - CY; R := sqrt(dx1 * dx1 + dy1 * dy1); // Radius of rotation of the center of the pixel if R > 0 then begin // copy Point2Ang + angle if dx1 < 0 then if dy1 < 0 then ug := angle + 360 + 180 * arcsin(dx1 / R) / pi else ug := angle + 180 - 180 * arcsin(dx1 / R) / pi else if dy1 < 0 then ug := angle + 180 * arcsin(dx1 / R) / pi else ug := angle + 180 - 180 * arcsin(dx1 / R) / pi; end else ug := angle; if ug >= 360 then ug := ug - 360 * trunc(ug / 360); // Zero 360 ° case trunc(ug / 180) of // copy Ang2Point + CX CY 0: begin vcx := CX + R * sin(pi * ug / 180);// Fine coordinates of the axis of the pixel after the rotation of the reference speed, in the output speed vcy := CY - R * cos(pi * ug / 180); end else begin ug := ug - 180 * trunc(ug / 180); vcx := CX - R * sin(pi * ug / 180); vcy := CY + R * cos(pi * ug / 180); end; end; if (vcx < 0) or (vcy < 0) or (vcx >= sWidth) or (vcy >= sHeight) then {outside the image} begin Result[1].s := -1; // use 1st item as indicator exit; end; for i := 1 to 9 do Result[i].s := 0; // reset all areas/fractions // Coordinates of pixel angles after rotation of the pixel center if (vcx < 3) or (vcy < 3) then begin x1 := vcx + pdx + 10; // +10 add-ons for the art of glass in a positive square y1 := vcy + pdy + 10; x2 := vcx - pdy + 10; y2 := vcy + pdx + 10; x3 := vcx - pdx + 10; y3 := vcy - pdy + 10; x4 := vcx + pdy + 10; y4 := vcy - pdx + 10; end else begin x1 := vcx + pdx; y1 := vcy + pdy; x2 := vcx - pdy; y2 := vcy + pdx; x3 := vcx - pdx; y3 := vcy - pdy; x4 := vcx + pdy; y4 := vcy - pdx; end; // index of the drive, in which the angle of the output of the drive ix1 := trunc(x1); // SAME RIGHT iy1 := trunc(y1); ix2 := trunc(x2); // SAME iy2 := trunc(y2); ix3 := trunc(x3); // SAME LEFT iy3 := trunc(y3); ix4 := trunc(x4); // SAME UPPER iy4 := trunc(y4); // all formulas below work only in the positive quadrant of the coordinate system! if iy3 = iy2 then if iy4 = iy1 then if ix4 = ix3 then if ix1 = ix2 then begin //option 1 //╔═══╦═══╦═══╗ //║ 4 ║ 1 ║ ║ The corners of the source image pixel is at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 3 ║ 2 ║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dy2 := frac(y2); dx3 := 1 - frac(x3); dy3 := frac(y3); dx4 := 1 - frac(x4); dy4 := 1 - frac(y4); s3 := dx3 * dy3 + (dx3 * dx3 - dy3 * dy3) * tgAd2; // size of fragment at position 3 s4 := dx4 * dy4 + (dy4 * dy4 - dx4 * dx4) * tgAd2; // size of fragment at position 4 s1 := 0.5 + (dy4 - dy2) / cosAu2; s2 := 1 - s1 - s3; // size of fragment at position 2 s1 := s1 - s4; // size of fragment at position 1 Result[1].s := s1; Result[1].X := ix1; Result[1].Y := iy1; Result[2].S := s2; Result[2].X := ix2; Result[2].Y := iy2; Result[3].S := s3; Result[3].X := ix3; Result[3].Y := iy3; Result[4].S := s4; Result[4].X := ix4; Result[4].Y := iy4; end else begin // option 15 //╔═══╦═══╦═══╗ //║ 4 ║ 1 ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║3,2║ ║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); dy4 := 1 - frac(y4); s4 := dx1 / cosb + dy2 / sinB - 1; s4 := s4 * s4 * tris; // size of fragment at position 4 Result[1].S := s4; Result[1].X := ix1; Result[1].Y := iy2; s2 := dx1 * dx1 / sinBucosBd2 - s4; // size of fragment at position 2 s1 := 0.5 + (dy4 - dy2) / cosAu2; s3 := 1 - s1 - s4; // size of fragment at position 3 s1 := s1 - s2; // size of fragment at position 1 Result[2].S := s1; Result[2].X := ix4; Result[2].Y := iy4; Result[3].S := s2; Result[3].X := ix1; Result[3].Y := iy1; Result[4].S := s3; Result[4].X := ix2; Result[4].Y := iy2; end else if ix1 = ix2 then begin // option 11 //╔═══╦═══╦═══╗ //║ ║4,1║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 3 ║ 2 ║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dy2 := frac(y2); dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s1 := dx3 / cosB + dy4 / sinB - 1; s1 := s1 * s1 * tris; Result[1].S := s1; Result[1].X := ix3; Result[1].Y := iy4; s3 := dx3 * dx3 / sinBucosBd2 - s1; s2 := 0.5 + (dy4 - dy2) / cosAu2; s4 := 1 - s2 - s3; s2 := s2 - s1; Result[2].S := s2; Result[2].X := ix4; Result[2].Y := iy4; Result[3].S := s3; Result[3].X := ix3; Result[3].Y := iy3; Result[4].S := s4; Result[4].X := ix2; Result[4].Y := iy2; end else begin // option 4 //╔═══╦═══╦═══╗ //║ Y ║ 4 ║ 1 ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 1 ║ 3 ║ Y ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s1 := dx3 / cosB + dy4 / sinB - 1; if s1 > 0 then begin s1 := s1 * s1 * tris; Result[1].S := s1; Result[1].X := ix3; Result[1].Y := iy4; end else s1 := 0; s6 := dx1 / cosb + dy2 / sinB - 1; if s6 > 0 then begin s6 := s6 * s6 * tris; Result[2].S := s6; Result[2].X := ix1; Result[2].Y := iy2; end else s6 := 0; s4 := dx3 * dx3 / sinBucosBd2 - s1; s3 := dx1 * dx1 / sinBucosBd2 - s6; s2 := 0.5 + (dy4 - dy2) / cosAu2; s5 := 1 - s2 - s4 - s6; s2 := s2 - s1 - s3; Result[3].S := s2; Result[3].X := ix4; Result[3].Y := iy4; Result[4].S := s4; Result[4].X := ix3; Result[4].Y := iy3; Result[5].S := s5; Result[5].X := ix2; Result[5].Y := iy2; Result[6].S := s3; Result[6].X := ix1; Result[6].Y := iy1; end else if ix4 = ix2 then if ix4 = ix1 then begin // option 10 //╔═══╦═══╦═══╗ //║ ║ 4 ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 3 ║2,1║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s1 := dx3 / cosB + dy4 / sinB - 1; s1 := s1 * s1 * tris; Result[1].S := s1; Result[1].X := ix3; Result[1].Y := iy4; s2 := dy4 * dy4 / sinBucosBd2 - s1; s3 := dx3 * dx3 / sinBucosBd2 - s1; s4 := 1 - s1 - s2 - s3; Result[2].S := s2; Result[2].X := ix4; Result[2].Y := iy4; Result[3].S := s3; Result[3].X := ix3; Result[3].Y := iy3; Result[4].S := s4; Result[4].X := ix4; Result[4].Y := iy3; end else if ix3 = ix2 then begin // option 17 dx1 := frac(x1); dy4 := 1 - frac(y4); s2 := dx1 / sinB + dy4 / cosB - 1; s2 := s2 * s2 * tris; Result[1].S := s2; Result[1].X := ix1; Result[1].Y := iy4; s1 := dy4 * dy4 / sinBucosBd2 - s2; s4 := dx1 * dx1 / sinBucosBd2 - s2; s3 := 1 - s1 - s2 - s4; Result[2].S := s1; Result[2].X := ix4; Result[2].Y := iy4; Result[3].S := s4; Result[3].X := ix1; Result[3].Y := iy1; Result[4].S := s3; Result[4].X := ix4; Result[4].Y := iy1; end else begin // option 5 //╔═══╦═══╦═══╗ //║ Y ║ 4 ║ Y ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 3 ║ 2 ║ 1 ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s1 := dx3 / cosB + dy4 / sinB - 1; if s1 > 0 then begin s1 := s1 * s1 * tris; Result[1].S := s1; Result[1].X := ix3; Result[1].Y := iy4; end else s1 := 0; s3 := dx1 / sinB + dy4 / cosB - 1; if s3 > 0 then begin s3 := s3 * s3 * tris; Result[2].S := s3; Result[2].X := ix1; Result[2].Y := iy4; end else s3 := 0; s2 := dy4 * dy4 / sinBucosBd2; s4 := dx3 * dx3 / sinBucosBd2 - s1; s6 := dx1 * dx1 / sinBucosBd2 - s3; s5 := 1 - s2 - s4 - s6; s2 := s2 - s1 - s3; Result[3].S := s2; Result[3].X := ix4; Result[3].Y := iy4; Result[4].S := s4; Result[4].X := ix3; Result[4].Y := iy3; Result[5].S := s6; Result[5].X := ix1; Result[5].Y := iy1; Result[6].S := s5; Result[6].X := ix4; Result[6].Y := iy3; end else if ix4 = ix3 then begin // option 16 //╔═══╦═══╦═══╗ //║ 4 ║ ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 3 ║2,1║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s2 := dx1 / sinB + dy4 / cosB - 1; s2 := s2 * s2 * tris; Result[1].S := s2; Result[1].X := ix1; Result[1].Y := iy4; s1 := dy4 * dy4 / sinBucosBd2 - s2; s4 := 0.5 + (dx1 - dx3) / cosAu2; s3 := 1 - s4 - s1; s4 := s4 - s2; Result[2].S := s1; Result[2].X := ix4; Result[2].Y := iy4; Result[3].S := s3; Result[3].X := ix3; Result[3].Y := iy3; Result[4].S := s4; Result[4].X := ix1; Result[4].Y := iy1; end else begin // option 12 //╔═══╦═══╦═══╗ //║ ║ 4 ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║3,2║ 1 ║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s1 := dx3 / cosB + dy4 / sinB - 1; s1 := s1 * s1 * tris; Result[1].S := s1; Result[1].X := ix3; Result[1].Y := iy4; s2 := dy4 * dy4 / sinBucosBd2 - s1; s3 := 0.5 + (dx3 - dx1) / cosBu2; s4 := 1 - s3 - s2; s3 := s3 - s1; Result[2].S := s2; Result[2].X := ix4; Result[2].Y := iy4; Result[3].S := s3; Result[3].X := ix3; Result[3].Y := iy3; Result[4].S := s4; Result[4].X := ix1; Result[4].Y := iy1; end else if iy3 = iy4 then if ix3 = ix2 then if ix4 = ix1 then if iy2 = iy1 then begin// option 2 //╔═══╦═══╦═══╗ //║ 3 ║ 4 ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 2 ║ 1 ║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx4 := frac(x4); dy2 := frac(y2); dy4 := 1 - frac(y4); dx1 := frac(x1); dy1 := frac(y1); s4 := dx4 * dy4 + (dy4 * dy4 - dx4 * dx4) * tgBd2; s1 := dx1 * dy1 + (dx1 * dx1 - dy1 * dy1) * tgBd2; s3 := 0.5 + (dy4 - dy2) / cosBu2; s2 := 1 - s3 - s1; s3 := s3 - s4; Result[1].S := s1; Result[1].X := ix1; Result[1].Y := iy1; Result[2].S := s2; Result[2].X := ix2; Result[2].Y := iy2; Result[3].S := s3; Result[3].X := ix3; Result[3].Y := iy3; Result[4].S := s4; Result[4].X := ix4; Result[4].Y := iy4; end else begin // option 13 //╔═══╦═══╦═══╗ //║ 3 ║4,1║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 2 ║ ║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); dx3 := 1 - frac(x3); s4 := dx1 / cosb + dy2 / sinB - 1; s4 := s4 * s4 * tris; Result[1].S := s4; Result[1].X := ix1; Result[1].Y := iy2; s3 := dy2 * dy2 / sinBucosBd2 - s4; s1 := 0.5 + (dx3 - dx1) / cosBu2; s2 := 1 - s1 - s4; s1 := s1 - s3; Result[2].S := s1; Result[2].X := ix3; Result[2].Y := iy3; Result[3].S := s3; Result[3].X := ix2; Result[3].Y := iy2; Result[4].S := s2; Result[4].X := ix1; Result[4].Y := iy1; end else if iy2 = iy1 then begin // option 18 //╔═══╦═══╦═══╗ //║3,4║ ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 2 ║ 1 ║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); dy4 := 1 - frac(y4); s2 := dx1 / sinB + dy4 / cosB - 1; s2 := s2 * s2 * tris; Result[1].S := s2; Result[1].X := ix1; Result[1].Y := iy4; s4 := dx1 * dx1 / sinBucosBd2 - s2; s1 := 0.5 + (dy4 - dy2) / cosBu2; s3 := 1 - s1 - s4; s1 := s1 - s2; Result[2].S := s1; Result[2].X := ix4; Result[2].Y := iy4; Result[3].S := s3; Result[3].X := ix2; Result[3].Y := iy2; Result[4].S := s4; Result[4].X := ix1; Result[4].Y := iy1; end else begin // option 14 //╔═══╦═══╦═══╗ //║3,4║ 1 ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 2 ║ ║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); s4 := dx1 / cosb + dy2 / sinB - 1; s4 := s4 * s4 * tris; Result[1].S := s4; Result[1].X := ix1; Result[1].Y := iy2; s2 := dx1 * dx1 / sinBucosBd2 - s4; s3 := dy2 * dy2 / sinBucosBd2 - s4; s1 := 1 - s2 - s3 - s4; Result[2].S := s2; Result[2].X := ix1; Result[2].Y := iy1; Result[3].S := s3; Result[3].X := ix2; Result[3].Y := iy2; Result[4].S := s1; Result[4].X := ix2; Result[4].Y := iy1; end else if ix2 = ix1 then if ix3 = ix4 then begin // option 9 //╔═══╦═══╦═══╗ //║3,4║ 1 ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ ║ 2 ║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); dx3 := 1 - frac(x3); s3 := dx3 / sinB + dy2 / cosB - 1; s3 := s3 * s3 * tris; Result[1].S := s3; Result[1].X := ix3; Result[1].Y := iy2; s4 := dy2 * dy2 / sinBucosBd2 - s3; s2 := 0.5 + (dx1 - dx3) / cosAu2; s1 := 1 - s2 - s3; s2 := s2 - s4; Result[2].S := s4; Result[2].X := ix2; Result[2].Y := iy2; Result[3].S := s2; Result[3].X := ix1; Result[3].Y := iy1; Result[4].S := s1; Result[4].X := ix3; Result[4].Y := iy3; end else if iy3 = iy1 then begin // option 8 //╔═══╦═══╦═══╗ //║ 3 ║4,1║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ ║ 2 ║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dy2 := frac(y2); dx3 := 1 - frac(x3); s3 := dx3 / sinB + dy2 / cosB - 1; s3 := s3 * s3 * tris; Result[1].S := s3; Result[1].X := ix3; Result[1].Y := iy2; s1 := dx3 * dx3 / sinBucosBd2 - s3; s4 := dy2 * dy2 / sinBucosBd2 - s3; s2 := 1 - s1 - s3 - s4; Result[2].S := s1; Result[2].X := ix3; Result[2].Y := iy3; Result[3].S := s4; Result[3].X := ix2; Result[3].Y := iy2; Result[4].S := s2; Result[4].X := ix2; Result[4].Y := iy3; end else begin // option 7 //╔═══╦═══╦═══╗ //║ 3 ║ 4 ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ ║1,2║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dy2 := frac(y2); dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s3 := dx3 / sinB + dy2 / cosB - 1; s3 := s3 * s3 * tris; Result[1].S := s3; Result[1].X := ix3; Result[1].Y := iy2; s1 := dx3 * dx3 / sinBucosBd2 - s3; s2 := 0.5 + (dy4 - dy2) / cosBu2; s4 := 1 - s2 - s3; s2 := s2 - s1; Result[2].S := s1; Result[2].X := ix3; Result[2].Y := iy3; Result[3].S := s2; Result[3].X := ix4; Result[3].Y := iy4; Result[4].S := s4; Result[4].X := ix4; Result[4].Y := iy2; end else if iy3 = iy1 then begin // option 6 //╔═══╦═══╦═══╗ //║ 3 ║ 4 ║ 1 ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ Y ║ 2 ║ Y ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); dx3 := 1 - frac(x3); s4 := dx3 / sinB + dy2 / cosB - 1; if s4 > 0 then begin s4 := s4 * s4 * tris; Result[1].S := s4; Result[1].X := ix3; Result[1].Y := iy2; end else s4 := 0; s6 := dx1 / cosb + dy2 / sinB - 1; if s6 > 0 then begin s6 := s6 * s6 * tris; Result[2].S := s6; Result[2].X := ix1; Result[2].Y := iy2; end else s6 := 0; s1 := dx3 * dx3 / sinBucosBd2 - s4; s3 := dx1 * dx1 / sinBucosBd2 - s6; s5 := dy2 * dy2 / sinBucosBd2; s2 := 1 - s1 - s3 - s5; s5 := s5 - s4 - s6; Result[3].S := s1; Result[3].X := ix3; Result[3].Y := iy3; Result[4].S := s3; Result[4].X := ix1; Result[4].Y := iy1; Result[5].S := s5; Result[5].X := ix2; Result[5].Y := iy2; Result[6].S := s2; Result[6].X := ix2; Result[6].Y := iy3; end else begin // option 3 //╔═══╦═══╦═══╗ //║ 3 ║ 4 ║ Y ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ Y ║ 2 ║ 1 ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s4 := dx3 / sinB + dy2 / cosB - 1; if s4 > 0 then begin s4 := s4 * s4 * tris; Result[1].S := s4; Result[1].X := ix3; Result[1].Y := iy2; end else s4 := 0; s3 := dx1 / sinB + dy4 / cosB - 1; if s3 > 0 then begin s3 := s3 * s3 * tris; Result[2].S := s3; Result[2].X := ix1; Result[2].Y := iy4; end else s3 := 0; s1 := dx3 * dx3 / sinBucosBd2 - s4; s6 := dx1 * dx1 / sinBucosBd2 - s3; s2 := 0.5 + (dy4 - dy2) / cosBu2; s5 := 1 - s2 - s4 - s6; s2 := s2 - s1 - s3; Result[3].S := s6; Result[3].X := ix1; Result[3].Y := iy1; Result[4].S := s5; Result[4].X := ix2; Result[4].Y := iy2; Result[5].S := s1; Result[5].X := ix3; Result[5].Y := iy3; Result[6].S := s2; Result[6].X := ix4; Result[6].Y := iy4; end else if ix4 = ix2 then if ix3 = ix4 then begin // option 21 //╔═══╦═══╦═══╗ //║ 4 ║ Y ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 3 ║ 1 ║ ║ //╠═══╬═══╬═══╣ //║ 2 ║ Y ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); dy4 := 1 - frac(y4); s2 := dx1 / sinB + dy4 / cosB - 1; if s2 > 0 then begin s2 := s2 * s2 * tris; Result[1].S := s2; Result[1].X := ix1; Result[1].Y := iy4; end else s2 := 0; s6 := dx1 / cosb + dy2 / sinB - 1; if s6 > 0 then begin s6 := s6 * s6 * tris; Result[2].S := s6; Result[2].X := ix1; Result[2].Y := iy2; end else s6 := 0; s1 := dy4 * dy4 / sinBucosBd2 - s2; s5 := dy2 * dy2 / sinBucosBd2 - s6; s4 := dx1 * dx1 / sinBucosBd2; s3 := 1 - s4 - s1 - s5; s4 := s4 - s2 - s6; Result[3].S := s1; Result[3].X := ix4; Result[3].Y := iy4; Result[4].S := s4; Result[4].X := ix1; Result[4].Y := iy1; Result[5].S := s5; Result[5].X := ix2; Result[5].Y := iy2; Result[6].S := s3; Result[6].X := ix2; Result[6].Y := iy1; end else if ix4 = ix1 then begin // option 2 //╔═══╦═══╦═══╗ //║ 3 ║ 4 ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 2 ║ 1 ║ ║ //╠═══╬═══╬═══╣ //║ ║ ║ ║ //╚═══╩═══╩═══╝ dy2 := frac(y2); dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s1 := dx3 / cosB + dy4 / sinB - 1; if s1 > 0 then begin s1 := s1 * s1 * tris; Result[1].S := s1; Result[1].X := ix3; Result[1].Y := iy4; end else s1 := 0; s5 := dx3 / sinB + dy2 / cosB - 1; if s5 > 0 then begin s5 := s5 * s5 * tris; Result[2].S := s5; Result[2].X := ix3; Result[2].Y := iy2; end else s5 := 0; s2 := dy4 * dy4 / sinBucosBd2 - s1; s6 := dy2 * dy2 / sinBucosBd2 - s5; s3 := dx3 * dx3 / sinBucosBd2; s4 := 1 - s3 - s2 - s6; s3 := s3 - s1 - s5; Result[3].S := s2; Result[3].X := ix4; Result[3].Y := iy4; Result[4].S := s3; Result[4].X := ix3; Result[4].Y := iy3; Result[5].S := s6; Result[5].X := ix2; Result[5].Y := iy2; Result[6].S := s4; Result[6].X := ix2; Result[6].Y := iy3; end else begin // option 23 //╔═══╦═══╦═══╗ //║ Y ║ 4 ║ Y ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 3 ║ ║ 1 ║ //╠═══╬═══╬═══╣ //║ Y ║ 2 ║ Y ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s1 := dx3 / cosB + dy4 / sinB - 1; if s1 > 0 then begin s1 := s1 * s1 * tris; Result[1].S := s1; Result[1].X := ix3; Result[1].Y := iy4; end else s1 := 0; s3 := dx1 / sinB + dy4 / cosB - 1; if s3 > 0 then begin s3 := s3 * s3 * tris; Result[2].S := s3; Result[2].X := ix1; Result[2].Y := iy4; end else s3 := 0; s7 := dx3 / sinB + dy2 / cosB - 1; if s7 > 0 then begin s7 := s7 * s7 * tris; Result[3].S := s7; Result[3].X := ix3; Result[3].Y := iy2; end else s7 := 0; s9 := dx1 / cosb + dy2 / sinB - 1; if s9 > 0 then begin s9 := s9 * s9 * tris; Result[4].S := s9; Result[4].X := ix1; Result[4].Y := iy2; end else s9 := 0; s2 := dy4 * dy4 / sinBucosBd2 - s1 - s3; s8 := dy2 * dy2 / sinBucosBd2 - s7 - s9; s4 := dx3 * dx3 / sinBucosBd2; s6 := dx1 * dx1 / sinBucosBd2; s5 := 1 - s4 - s6 - s2 - s8; s4 := s4 - s1 - s7; s6 := s6 - s3 - s9; Result[5].S := s4; Result[5].X := ix3; Result[5].Y := iy3; Result[6].S := s2; Result[6].X := ix4; Result[6].Y := iy4; Result[7].S := s6; Result[7].X := ix1; Result[7].Y := iy1; Result[8].S := s8; Result[8].X := ix2; Result[8].Y := iy2; Result[9].S := s5; Result[9].X := ix4; Result[9].Y := iy3; end else if ix3 = ix4 then begin // option 20 //╔═══╦═══╦═══╗ //║ 4 ║ Y ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 3 ║ 1 ║ ║ //╠═══╬═══╬═══╣ //║ Y ║ 2 ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s2 := dx1 / sinB + dy4 / cosB - 1; if s2 > 0 then begin s2 := s2 * s2 * tris; Result[1].S := s2; Result[1].X := ix1; Result[1].Y := iy4; end else s2 := 0; s5 := dx3 / sinB + dy2 / cosB - 1; if s5 > 0 then begin s5 := s5 * s5 * tris; Result[2].S := s5; Result[2].X := ix3; Result[2].Y := iy2; end else s5 := 0; s6 := dy2 * dy2 / sinBucosBd2 - s5; s1 := dy4 * dy4 / sinBucosBd2 - s2; s3 := 0.5 + (dx3 - dx1) / cosAu2; s4 := 1 - s3 - s2 - s6; s3 := s3 - s1 - s5; Result[3].S := s1; Result[3].X := ix4; Result[3].Y := iy4; Result[4].S := s3; Result[4].X := ix3; Result[4].Y := iy3; Result[5].S := s4; Result[5].X := ix1; Result[5].Y := iy1; Result[6].S := s6; Result[6].X := ix2; Result[6].Y := iy2; end else begin // option 19 //╔═══╦═══╦═══╗ //║ Y ║ 4 ║ ║ The corners of the source image pixel are at position 1,2,3,4 at the destination. Y=Yellow is where some flux could be missed. //╠═══╬═══╬═══╣ //║ 3 ║ 1 ║ ║ //╠═══╬═══╬═══╣ //║ 2 ║ Y ║ ║ //╚═══╩═══╩═══╝ dx1 := frac(x1); dy2 := frac(y2); dx3 := 1 - frac(x3); dy4 := 1 - frac(y4); s1 := dx3 / cosB + dy4 / sinB - 1; if s1 > 0 then begin s1 := s1 * s1 * tris; Result[1].S := s1; Result[1].X := ix3; Result[1].Y := iy4; end else s1 := 0; s6 := dx1 / cosB + dy2 / sinB - 1; if s6 > 0 then begin s6 := s6 * s6 * tris; Result[2].S := s6; Result[2].X := ix1; Result[2].Y := iy2; end else s6 := 0; s2 := dy4 * dy4 / sinBucosBd2 - s1; s5 := dy2 * dy2 / sinBucosBd2 - s6; s3 := 0.5 + (dx3 - dx1) / cosBu2; s4 := 1 - s3 - s2 - s6; s3 := s3 - s1 - s5; Result[3].S := s2; Result[3].X := ix4; Result[3].Y := iy4; Result[4].S := s3; Result[4].X := ix3; Result[4].Y := iy3; Result[5].S := s4; Result[5].X := ix1; Result[5].Y := iy1; Result[6].S := s5; Result[6].X := ix2; Result[6].Y := iy2; end; if (vcx < 3) or (vcy < 3) then for i := 1 to 9 do begin Result[i].x := Result[i].x - 10; // after the calculations, change the coordinates of the left / upper pixels to the place Result[i].y := Result[i].y - 10; end; end; procedure raster_rotate(angle, CX, CY: double; var img: image_array); var ug, R, red, green, blue, dx, dy : double; i, j, k, rw, rh, xd, yd, U90,progressC,progress_value : integer; ep1, ep2, ep3, ep4: expoint; X: flux; temp_img: image_array; begin if angle >= 360 then angle := angle - 360 * trunc(angle / 360); // Zero 360 ° if angle = 0 then begin exit; end; scolours := length(img);{nr colours} swidth := length(img[0]);{width} sheight := length(img[0, 0]);{height} angle := angle mod 360; {make 0..360} if angle < 0 then angle := 360 - abs(angle); U90 := trunc(angle / 90); if (angle - U90 * 90) = 0 then begin // on a corner, curl 90 °, repeat quickly and without loss, case U90 of // flip the image for multiple of 90 degrees. 1:begin //90° temp_img := nil; setlength(temp_img, scolours, sheight, swidth); for k := 0 to scolours - 1 do for j := 0 to sheight - 1 do for i := 0 to swidth - 1 do temp_img[k, sheight - 1 - j, i] := img[k, i, j]; end; 2:begin //180° temp_img := nil; setlength(temp_img, scolours, swidth, sheight); for k := 0 to scolours - 1 do for j := 0 to sheight - 1 do for i := 0 to swidth - 1 do temp_img[k, swidth - 1 - i, sheight - 1 - j] := img[k, i, j]; end; 3:begin //270° temp_img := nil; setlength(temp_img, scolours, sheight, swidth); for k := 0 to scolours - 1 do for j := 0 to sheight - 1 do for i := 0 to swidth - 1 do temp_img[k, j, swidth - 1 - i] := img[k, i, j]; end; end; img:=nil; {release memory} img:=temp_img; exit; {finished} end; R := sqrt(CX * CX + CY * CY);// for the ouput image ug := Point2Ang(0, 0, CX, CY, R) + angle; if ug >= 360 then ug := ug - 360 * trunc(ug / 360); ep1 := Ang2Point(ug, R); // each corner is correct to repeat separately, so do not lose the pixels with domax ep1.X := ep1.X + CX; ep1.Y := ep1.Y + CY; dx := CX - swidth; dy := CY - sheight; R := sqrt(dx * dx + CY * CY); ug := Point2Ang(swidth, 0, CX, CY, R) + angle; if ug >= 360 then ug := ug - 360 * trunc(ug / 360); ep2 := Ang2Point(ug, R); ep2.X := ep2.X + CX; ep2.Y := ep2.Y + CY; R := sqrt(dx * dx + dy * dy); ug := Point2Ang(swidth, sheight, CX, CY, R) + angle; if ug >= 360 then ug := ug - 360 * trunc(ug / 360); ep3 := Ang2Point(ug, R); ep3.X := ep3.X + CX; ep3.Y := ep3.Y + CY; R := sqrt(CX * CX + dy * dy); ug := Point2Ang(0, sheight, CX, CY, R) + angle; if ug >= 360 then ug := ug - 360 * trunc(ug / 360); ep4 := Ang2Point(ug, R); ep4.X := ep4.X + CX; ep4.Y := ep4.Y + CY; case U90 of 0: begin //90° yd := domax(ep1.Y); xd := domax(ep4.X); rw := abs(domax(ep2.X) - xd); rh := abs(domax(ep3.Y) - yd); end; 1: begin //90° yd := domax(ep4.Y); xd := domax(ep3.X); rw := abs(domax(ep1.X) - xd); rh := abs(domax(ep2.Y) - yd); end; 2: begin //180° yd := domax(ep3.Y); xd := domax(ep2.X); rw := abs(domax(ep4.X) - xd); rh := abs(domax(ep1.Y) - yd); end else begin //270° yd := domax(ep2.Y); xd := domax(ep1.X); rw := abs(domax(ep3.X) - xd); rh := abs(domax(ep4.Y) - yd); end; end; temp_img := nil; setlength(temp_img, scolours, rw, rh);{set length of temp img. Larger then orginal due to rotation} angle := 360 - angle; // Rotate backwards ug := angle - trunc(angle / 90) * 90; // The angle of rotation of the point of the square of the pixel is the relative center of the pixel. Range 0 ° to 90 ° pdx := sqrt(0.5) * sin(pi * (ug + 45) / 180); pdy := -sqrt(0.5) * cos(pi * (ug + 45) / 180); tgBd2 := tan(pi * (90 - ug) / 180) / 2; // auxiliary variables for speeding up tgAd2 := tan(pi * ug / 180) / 2; sinB := sin(pi * (90 - ug) / 180); cosB := cos(pi * (90 - ug) / 180); cosAu2 := cos(pi * ug / 180) * 2; cosBu2 := cos(pi * (90 - ug) / 180) * 2; triS := cos(pi * ug / 180) * sin(pi * ug / 180) / 2; sinBucosBd2 := sin(pi * (90 - ug) / 180) * cos(pi * (90 - ug) / 180) * 2; progressC:=0; for i := yd to yd + rh - 1 do begin if frac((progressC)/400)=0 then {report every 400th line} begin progress_value:=round(progressC*100/(rh));{progress in %} progress_indicator(progress_value,'');{report progress} Application.ProcessMessages;{this could change startX, startY} if esc_pressed then begin img_temp:=nil; exit; end; end; inc(progressC); for j := xd to xd + rw - 1 do begin X := calculate_relevant_source_pixels(j, i, CX, CY, angle); // Calculate the source flux positions and area and store in X. All coordinates are of the source image if x[1].S = -1 then continue; // use the first item as an indicator red := 0; green := 0; blue := 0; for k := 1 to 9 do if x[k].S > 1e-9 then begin if (x[k].Y >= 0) and (x[k].X >= 0) and (x[k].Y < sheight) and (x[k].X < swidth) then {got through X} begin red := red + x[k].S * img[0,x[k].X,x[k].Y];// summation of the source flux if scolours > 2 then {colour image, do blue and green} begin green:= green + x[k].S * img[1,x[k].X,x[k].Y];// summation of the source flux blue := blue + x[k].S * img[2,x[k].X,x[k].Y];// summation of the source flux end; end; end; temp_img[0, j - xd,i - yd] := red; {store flux in destination} if scolours > 2 then {colour image} begin temp_img[1,j - xd, i - yd] := green; temp_img[2,j - xd, i - yd] := blue; end; end; end; img := nil; {release memory} img := temp_img; {swap arrays} end; procedure rotate_arbitraryold(angle: double; var img: image_array); {no longer used. Only for testing} var col,fitsX,fitsY,maxsize,i,j,progress_value,progressC,xx,yy,resolution : integer; cosA,sinA,factor, centerx,centery,centerxs,centerys,factX,factY,Cos_div_res,Sin_div_res : double; value0,value1,value2 :single; img_temp : image_array; begin if angle = 0 then begin exit; end; scolours := length(img);{nr colours} swidth := length(img[0]);{width} sheight := length(img[0, 0]);{height} if ((swidth<>sheight) or (img[0,0,0]<>0) or (img[0,swidth-1,0]<>0) or (img[0,0,sheight-1]<>0) or (img[0,swidth-1,sheight-1]<>0)) then {fresh image} maxsize:=round(1+sqrt(sqr(sheight)+sqr(swidth))) {add one pixel otherwise not enough resulting in runtime errors} else {assume this image is already rotated. Enough space to rotate} maxsize:=swidth; centerX:=maxsize/2; centerY:=maxsize/2; centerxs:=swidth/2; centerys:=sheight/2; setlength(img_temp,scolours, maxsize,maxsize);{set length of new image} {clear array} for col:=0 to scolours-1 do {do all colours} begin For fitsY:=0 to (maxsize-1) do for fitsX:=0 to (maxsize-1) do img_temp[col,fitsX,fitsY]:=0 end; sincos(angle*pi/180,sinA,cosA); if ((sinA=0) or (cosA=0)) then resolution:=1 else resolution:=10;{for angle 0,90,180,270 degrees no need to sub sample} factor:=1/sqr(resolution);{1/(number of subpixels), typical 1/(10x10)} //one_div_res:=1/resolution; Cos_div_res:=cosA/resolution; Sin_div_res:=sinA/resolution; progressC:=0; For fitsY:=0 to sheight-1 do begin inc(progressC);{counter} if frac(fitsY/100)=0 then begin Application.ProcessMessages;{this could change startX, startY} if esc_pressed then begin img_temp:=nil; exit; end; progress_value:=round(progressC*100/(head.height));{progress in %} progress_indicator(progress_value,'');{report progress} end; for fitsX:=0 to swidth-1 do begin value0:=img_loaded[0,fitsX,fitsY]; if value0>=0.01 then {do only data. Use red for detection} begin if scolours>1 then value1:=img_loaded[1,fitsX,fitsY];{>=2 colour image} if scolours>2 then value2:=img_loaded[2,fitsX,fitsY];{>=3 colour image} begin factX:=centerX+(fitsX-centerxs-0.5)*cosA - (fitsY-centerys-0.5)*sinA; factY:=centerY+(fitsX-centerxs-0.5)*sinA + (fitsY-centerys-0.5)*cosA; for i:=0 to resolution-1 do {divide the pixel in resolution x resolution subpixels} for j:=0 to resolution-1 do {divide the pixel in resolution x resolution subpixels} begin {new position of subpixel} xx:=trunc(factX+ i*Cos_div_res - j*Sin_div_res); // xx:=trunc(centerX +(fitsX-centerxs-0.5+i/resolution)*cosA - (fitsY-centerys-0.5+j/resolution)*sinA); yy:=trunc(FactY +i*Sin_div_res + j*Cos_div_res); // yy:=trunc(centerY +(fitsX-centerxs-0.5+i/resolution)*sinA + (fitsY-centerys-0.5+j/resolution)*cosA); {do all colours} if ((xx>=0) and (xx<maxsize) and (yy>=0) and (yy<maxsize)) then {check required for small square images} begin img_temp[0,xx,yy ]:=img_temp[0,xx,yy] + value0*factor;{factor is typical 1/100 due to 10x10 subpixel} if scolours>1 then img_temp[1,xx,yy]:=img_temp[1,xx,yy] + value1*factor; {this is the fastest way rather then for col:=0 to head.naxis3-1 loop} if scolours>2 then img_temp[2,xx,yy]:=img_temp[2,xx,yy] + value2*factor; end; end; end; end; end; end; head.width:=maxsize; head.height:=maxsize; img:=nil; img:=img_temp; end; end. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_thumbnail.lfm������������������������������������������������������������0000644�0001751�0001751�00000007174�14344743400�017230� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object thumbnails1: Tthumbnails1 Left = 829 Height = 563 Top = 224 Width = 938 HorzScrollBar.Increment = 50 HorzScrollBar.Page = 936 VertScrollBar.Increment = 50 VertScrollBar.Page = 500 Align = alTop AutoScroll = True Caption = 'FITS Thumbnails' ClientHeight = 563 ClientWidth = 938 Icon.Data = { 7E03000000000100010010100000010018006803000016000000280000001000 0000200000000100180000000000000300006400000064000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFF000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000FFFFFF000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFF000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000FFFFFF000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFF000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000FFFFFF000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000FFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000FFFFFF0000000000000000 00000000000000000000000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000000000000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000000000000000000000000000000000000000000000FFFFFF00 0000000000FFFFFF000000000000000000000000000000000000000000000000 000000000000000000000000FFFFFF000000000000FFFFFF0000000000000000 00000000000000000000000000000000000000000000000000000000FFFFFF00 0000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000 } OnClose = FormClose OnCreate = FormCreate OnKeyPress = FormKeyPress OnPaint = FormPaint OnResize = FormResize OnShow = FormShow Position = poScreenCenter LCLVersion = '2.0.12.0' object Panel1: TPanel Left = 0 Height = 500 Top = 0 Width = 936 TabOrder = 0 end object PopupMenu1: TPopupMenu AutoPopup = False Left = 768 Top = 24 object MenuItem1: TMenuItem Caption = 'View image' Hint = 'Open in the viewer' OnClick = MenuItem1Click end object MenuItem2: TMenuItem Caption = 'Rename to *.bak' Hint = 'Rename to *.bak. ' OnClick = MenuItem2Click end object renameimage1: TMenuItem Caption = 'Rename image' Hint = 'Give the image a new name' OnClick = renameimage1Click end object copyto1: TMenuItem Caption = 'Copy to' Hint = 'Copy to a different directory' OnClick = copyto1Click end object moveto1: TMenuItem Caption = 'Move to' Hint = 'Move to a different directory' OnClick = copyto1Click end object MenuItem5: TMenuItem Caption = '-' end object changedirectory1: TMenuItem Caption = 'Change directory' Hint = 'Browse to a different location' ShortCut = 16468 OnClick = changedirectory1Click end end end ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/readme how to compile.txt�����������������������������������������������������0000644�0001751�0001751�00000001567�14344743400�020276� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������How to compile ASTAP: 1) Install Lazurus (this will also install Free Pascal Compiler) 2a) Start Lazarus GUI. Load astap.lpi or astap_linux.lip or astap_mac.lpi. Menu Run, Run or Compile 2b) Command line: Windows: lazbuild -B astap.lpi Linux: lazbuild -B astap_linux.lpi Linux, PIE executable that you can run only via a terminal or a symlink: lazbuild -B astap_linux_pie.lpi Mac: lazbuild -B astap_mac.lpi ----------------------------------------------------------------------------------------------------------------------------------- Notes: Linux QT5 widget: Using your distros repository - Fedora, Mageia - sudo dnf install qt5pas<enter> Ubuntu, Debian - sudo apt install libqt5pas1 <enter> lazbuild -B astap_linux_qt5.lpi See: https://wiki.lazarus.freepascal.org/Qt5_Interface �����������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_stack.pas����������������������������������������������������������������0000644�0001751�0001751�00001533760�14344743400�016365� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_stack; {Copyright (C) 2017, 2022 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } interface uses {$IFDEF fpc} {$else} {delphi} {$endif} {$ifdef mswindows} Windows, ShlObj,{for copy file(s) to clipboard} {$IFDEF fpc}{mswindows & FPC} {$else} {delphi} system.Win.TaskbarCore, Vcl.ImgList, {$endif} {$else} {unix} LCLType, {for vk_...} unix, {for fpsystem} {$endif} SysUtils, Variants,Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, StdCtrls, math, ExtCtrls, Menus, Buttons, LCLIntf,{for for getkeystate, selectobject, openURL} clipbrd, Types,strutils, astap_main; type { Tstackmenu1 } Tstackmenu1 = class(TForm) actual_search_distance1: TLabel; add_noise1: TButton; add_substract1: TComboBox; add_time1: TCheckBox; save_settings_image_path1: TCheckBox; annotate_mode1: TComboBox; apply_normalise_filter1: TCheckBox; browse1: TBitBtn; browse_blink1: TBitBtn; browse_monitoring1: TBitBtn; browse_mount1: TBitBtn; browse_live_stacking1: TBitBtn; Button1: TButton; calculated_sensor_size1: TLabel; donutstars1: TCheckBox; check_pattern_filter1: TCheckBox; auto_select1: TMenuItem; photom_stack1: TMenuItem; photom_calibrate1: TMenuItem; photom_green1: TMenuItem; Separator1: TMenuItem; target_altitude1: TLabel; target_azimuth1: TLabel; direction_arrow1: TImage; label_latitude1: TLabel; label_longitude1: TLabel; monitor_latitude1: TEdit; monitor_longitude1: TEdit; use_triples1: TCheckBox; MenuItem33: TMenuItem; target_distance1: TLabel; target_group1: TGroupBox; delta_ra1: TLabel; delta_dec1: TLabel; RAposition1: TLabel; monitor_applydarkflat1: TCheckBox; help_monitoring1: TLabel; monitor_date1: TLabel; file_to_add1: TBitBtn; browse_photometry1: TBitBtn; browse_dark1: TBitBtn; browse_bias1: TBitBtn; browse_flats1: TBitBtn; browse_inspector1: TBitBtn; annotations_visible1: TLabel; classify_flat_date1: TCheckBox; classify_flat_exposure1: TCheckBox; hours_and_minutes1: TCheckBox; center_position1: TLabel; calculator_binning1: TLabel; Label3: TLabel; Label43: TLabel; live_monitoring1: TButton; monitoring_path1: TLabel; monitoring_stop1: TButton; DECposition1: TLabel; removeselected5: TMenuItem; menukeywordchange1: TMenuItem; MenuItem32: TMenuItem; keywordchangelast1: TMenuItem; keywordchangesecondtolast1: TMenuItem; calc_polar_alignment_error1: TButton; planetary_image1: TCheckBox; classify_dark_date1: TCheckBox; flat_combine_method1: TComboBox; GroupBox8: TGroupBox; green_purple_filter1: TCheckBox; help_mount_tab1: TLabel; osc_preserve_r_nebula1: TCheckBox; lrgb_auto_level1: TCheckBox; lrgb_colour_smooth1: TCheckBox; lrgb_smart_colour_sd1: TComboBox; lrgb_smart_smooth_width1: TComboBox; lrgb_preserve_r_nebula1: TCheckBox; preserve_red_nebula1: TCheckBox; add_valueB1: TEdit; add_valueG1: TEdit; add_valueR1: TEdit; alignment1: TTabSheet; align_blink1: TCheckBox; aavso_button1: TButton; mount_analyse1: TButton; analysephotometrymore1: TButton; blink_button_contB1: TButton; blink_unaligned_multi_step_backwards1: TButton; changekeyword9: TMenuItem; clear_mount_list1: TButton; keyword9: TMenuItem; list_to_clipboard9: TMenuItem; MenuItem29: TMenuItem; MenuItem30: TMenuItem; MenuItem31: TMenuItem; mount_ignore_solutions1: TCheckBox; extract_green1: TButton; changekeyword6: TMenuItem; changekeyword7: TMenuItem; annulus_radius1: TComboBox; keyword8: TMenuItem; changekeyword8: TMenuItem; keyword6: TMenuItem; keyword7: TMenuItem; copy_to_photometry1: TMenuItem; copy_to_blink1: TMenuItem; Label26: TLabel; flux_aperture1: TComboBox; Label27: TLabel; listview9: TListView; MenuItem28: TMenuItem; mount_add_solutions1: TButton; mount_write_wcs1: TCheckBox; PopupMenu9: TPopupMenu; removeselected9: TMenuItem; renametobak9: TMenuItem; monitor_action1: TComboBox; select9: TMenuItem; selectall5: TMenuItem; selectall9: TMenuItem; SpeedButton2: TSpeedButton; mount1: TTabSheet; apply_box_filter2: TButton; tab_monitoring1: TTabSheet; target1: TLabel; test_osc_normalise_filter1: TButton; undo_button6: TBitBtn; unselect9: TMenuItem; Viewimage9: TMenuItem; yyyyyy: TMenuItem; xxxxxx: TMenuItem; merge_overlap1: TCheckBox; timestamp1: TCheckBox; Analyse1: TButton; analyseblink1: TButton; analysedarksButton2: TButton; analyseflatdarksButton1: TButton; analyseflatsButton3: TButton; analysephotometry1: TButton; analyse_inspector1: TButton; add_bias1: TCheckBox; binning_for_solving_label3: TLabel; analyse_objects_visibles1: TButton; binning_for_solving_label4: TLabel; bin_image1: TButton; ignorezero1: TCheckBox; Equalise_background1: TCheckBox; GroupBox17: TGroupBox; bin_factor1: TComboBox; undo_button12: TBitBtn; write_video1: TButton; Label36: TLabel; Label49: TLabel; Label54: TLabel; Label62: TLabel; most_common_mono1: TButton; correct_gradient_label1: TLabel; save_settings_extra_button1: TButton; calculated_scale1: TLabel; osc_colour_smooth1: TCheckBox; smart_colour_sd1: TComboBox; raw_conversion_program1: TComboBox; GroupBox15: TGroupBox; focallength1: TEdit; GroupBox13: TGroupBox; help_stack_menu3: TLabel; ignore_header_solution1: TCheckBox; copy_files_to_clipboard1: TMenuItem; interim_to_clipboard1: TCheckBox; Label13: TLabel; Label22: TLabel; Label25: TLabel; min_star_size_stacking1: TComboBox; go_step_two1: TBitBtn; osc_smart_colour_sd1: TComboBox; osc_smart_smooth_width1: TComboBox; update_annotation1: TCheckBox; update_solution1: TCheckBox; update_annotations1: TCheckBox; Label23: TLabel; Label24: TLabel; Label28: TLabel; ephemeris_centering1: TComboBox; panel_ephemeris1: TPanel; pixelsize1: TEdit; saturation_tolerance1: TTrackBar; remove_luminance1: TCheckBox; curve_fitting1: TButton; apply_artificial_flat_correction1: TButton; apply_artificial_flat_correctionV2: TButton; apply_background_noise_filter1: TButton; apply_dpp_button1: TButton; apply_factor1: TButton; apply_file1: TButton; apply_gaussian_blur_button1: TButton; apply_gaussian_filter1: TButton; apply_get_background1: TButton; apply_horizontal_gradient1: TButton; apply_hue1: TButton; apply_remove_background_colour1: TButton; apply_vertical_gradient1: TButton; area_selected1: TLabel; area_set1: TLabel; artificial_image_gradient1: TCheckBox; auto_background1: TCheckBox; auto_background_level1: TButton; bayer_pattern1: TComboBox; bb1: TEdit; bg1: TEdit; Bias: TTabSheet; blink_button1: TButton; blink_button_contF1: TButton; photometry_repeat1: TButton; solve_and_annotate1: TCheckBox; blink_stop1: TButton; lights_blink_pause1: TButton; blink_unaligned_multi_step1: TButton; blue_filter1: TEdit; blue_filter2: TEdit; blue_filter_add1: TEdit; blur_factor1: TComboBox; br1: TEdit; Button_free_resize_fits1: TButton; calibrate_prior_solving1: TCheckBox; refresh_astrometric_solutions1: TButton; clear_blink_alignment1: TButton; clear_blink_list1: TButton; clear_inspector_list1: TButton; clear_dark_list1: TButton; clear_image_list1: TButton; clear_photometry_list1: TButton; clear_selection2: TButton; clear_selection3: TButton; colournebula1: TButton; colourShape1: TShape; colourShape2: TShape; colourShape3: TShape; create_test_image_stars1: TButton; Darks: TTabSheet; dark_areas_box_size1: TComboBox; dark_spot_filter1: TButton; ddp_filter1: TRadioButton; ddp_filter2: TRadioButton; demosaic_method1: TComboBox; downsample_for_solving1: TComboBox; downsample_solving_label1: TLabel; Edit_a1: TEdit; edit_background1: TEdit; Edit_gaussian_blur1: TEdit; edit_k1: TEdit; edit_noise1: TEdit; Edit_width1: TEdit; export_aligned_files1: TButton; extract_background_box_size1: TComboBox; files_live_stacked1: TLabel; filter_artificial_colouring1: TComboBox; filter_groupbox1: TGroupBox; Flats: TTabSheet; force_oversize1: TCheckBox; gb1: TEdit; gg1: TEdit; gr1: TEdit; gradient_filter_factor1: TEdit; green_filter1: TEdit; green_filter2: TEdit; green_filter_add1: TEdit; GroupBox1: TGroupBox; GroupBox10: TGroupBox; GroupBox11: TGroupBox; GroupBox12: TGroupBox; GroupBox14: TGroupBox; GroupBox16: TGroupBox; GroupBox2: TGroupBox; GroupBox3: TGroupBox; GroupBox4: TGroupBox; GroupBox5: TGroupBox; GroupBox6: TGroupBox; GroupBox7: TGroupBox; raw_box1: TGroupBox; GroupBox9: TGroupBox; GroupBox_astrometric_solver_settings1: TGroupBox; groupBox_dvp1: TGroupBox; GroupBox_equalise_tool1: TGroupBox; GroupBox_equalise_tool2: TGroupBox; GroupBox_star_alignment_settings1: TGroupBox; GroupBox_test_images1: TGroupBox; help_astrometric_alignment1: TLabel; help_astrometric_solving1: TLabel; help_blink1: TLabel; help_live_stacking1: TLabel; help_osc_menu1: TLabel; help_photometry1: TLabel; help_inspector_tab1: TLabel; help_pixel_math1: TLabel; help_pixel_math2: TLabel; help_stack_menu1: TLabel; help_uncheck_outliers1: TLabel; hfd_simulation1: TComboBox; HueRadioButton1: TRadioButton; HueRadioButton2: TRadioButton; hue_fuzziness1: TTrackBar; lights: TTabSheet; image_to_add1: TLabel; Label1: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label2: TLabel; Label20: TLabel; Label21: TLabel; Label29: TLabel; Label30: TLabel; Label31: TLabel; Label32: TLabel; Label33: TLabel; Label34: TLabel; Label35: TLabel; Label37: TLabel; Label38: TLabel; Label4: TLabel; Label41: TLabel; Label42: TLabel; Label44: TLabel; Label45: TLabel; Label46: TLabel; Label47: TLabel; Label48: TLabel; Label5: TLabel; Label50: TLabel; Label51: TLabel; Label52: TLabel; Label53: TLabel; Label55: TLabel; Label56: TLabel; Label57: TLabel; Label58: TLabel; Label59: TLabel; Label6: TLabel; Label61: TLabel; Label64: TLabel; Label65: TLabel; Label67: TLabel; Label68: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label_results1: TLabel; listview1: TListView; listview2: TListView; listview3: TListView; listview4: TListView; listview5: TListView; listview6: TListView; listview7: TListView; listview8: TListView; list_to_clipboard8: TMenuItem; live_stacking1: TButton; live_stacking_path1: TLabel; live_stacking_pause1: TButton; live_stacking_restart1: TButton; luminance_filter1: TEdit; luminance_filter2: TEdit; make_osc_color1: TCheckBox; manual_centering1: TComboBox; mark_outliers_upto1: TComboBox; min_star_size1: TComboBox; max_stars1: TComboBox; MenuItem23: TMenuItem; MenuItem26: TMenuItem; MenuItem27: TMenuItem; mosaic_box1: TGroupBox; mosaic_crop1: TUpDown; mosaic_crop2: TEdit; mosaic_width1: TUpDown; mosaic_width2: TEdit; most_common_filter_radius1: TEdit; most_common_filter_tool1: TButton; multiply_blue1: TEdit; multiply_green1: TEdit; multiply_red1: TEdit; new_height1: TLabel; new_height2: TLabel; new_saturation1: TTrackBar; noisefilter_blur1: TComboBox; noisefilter_sd1: TComboBox; nr_selected1: TLabel; nr_total1: TLabel; nr_total_bias1: TLabel; nr_total_blink1: TLabel; nr_total_inspector1: TLabel; nr_total_darks1: TLabel; nr_total_flats1: TLabel; nr_total_photometry1: TLabel; osc_auto_level1: TCheckBox; oversize1: TComboBox; pagecontrol1: TPageControl; panel_manual1: TPanel; Panel_solver1: TPanel; Panel_star_detection1: TPanel; photometry_binx2: TButton; photometry_button1: TButton; photometry_stop1: TButton; PopupMenu8: TPopupMenu; radius_search1: TComboBox; scale_calc1: TLabel; auto_rotate1: TCheckBox; use_ephemeris_alignment1: TRadioButton; write_jpeg1: TCheckBox; xxxxxxx: TComboBox; rainbow_Panel1: TPanel; rb1: TEdit; red_filter1: TEdit; red_filter2: TEdit; red_filter_add1: TEdit; removeselected8: TMenuItem; remove_deepsky_label1: TLabel; renametobak8: TMenuItem; replace_by_master_dark1: TButton; replace_by_master_flat1: TButton; reset_factors1: TButton; resize_factor1: TComboBox; restore_file_ext1: TButton; Result1: TTabSheet; result_compress1: TMenuItem; MenuItem25: TMenuItem; rename_result1: TMenuItem; MenuItem24: TMenuItem; more_indication1: TLabel; list_to_clipboard7: TMenuItem; MenuItem20: TMenuItem; MenuItem21: TMenuItem; MenuItem22: TMenuItem; ColorDialog1: TColorDialog; extend_object_name_with_time_observation1: TMenuItem; MenuItem19: TMenuItem; list_to_clipboard6: TMenuItem; PopupMenu7: TPopupMenu; removeselected7: TMenuItem; renametobak7: TMenuItem; rg1: TEdit; ring_equalise_factor1: TComboBox; rr1: TEdit; sample_size1: TComboBox; saved1: TLabel; save_as_new_file1: TButton; save_result1: TButton; sd_factor1: TComboBox; sd_factor_list1: TComboBox; search_fov1: TComboBox; select7: TMenuItem; select8: TMenuItem; selectall3: TMenuItem; selectall4: TMenuItem; selectall6: TMenuItem; selectall2: TMenuItem; selectall1: TMenuItem; selectall7: TMenuItem; list_to_clipboard1: TMenuItem; selectall8: TMenuItem; show_quads1: TBitBtn; sigma_decolour1: TComboBox; smart_colour_smooth_button1: TButton; smart_smooth_width1: TComboBox; solve1: TButton; solve_show_log1: TCheckBox; SpeedButton1: TSpeedButton; splitRGB1: TButton; stack_button1: TBitBtn; MenuItem16: TMenuItem; MenuItem17: TMenuItem; MenuItem18: TMenuItem; MenuItem15: TMenuItem; PopupMenu6: TPopupMenu; removeselected6: TMenuItem; renametobak6: TMenuItem; select6: TMenuItem; stack_method1: TComboBox; star_database1: TComboBox; star_level_colouring1: TComboBox; subtract_background1: TButton; TabSheet1: TTabSheet; tab_blink1: TTabSheet; tab_live_stacking1: TTabSheet; tab_photometry1: TTabSheet; tab_Pixelmath1: TTabSheet; tab_Pixelmath2: TTabSheet; tab_stackmethod1: TTabSheet; test_pattern1: TButton; quad_tolerance1: TComboBox; uncheck_outliers1: TCheckBox; undo_button1: TBitBtn; undo_button10: TBitBtn; undo_button11: TBitBtn; undo_button13: TBitBtn; undo_button14: TBitBtn; undo_button15: TBitBtn; undo_button16: TBitBtn; undo_button2: TBitBtn; undo_button3: TBitBtn; undo_button4: TBitBtn; undo_button5: TBitBtn; undo_button7: TBitBtn; undo_button8: TBitBtn; undo_button9: TBitBtn; undo_button_equalise_background1: TBitBtn; unselect6: TMenuItem; unselect7: TMenuItem; unselect8: TMenuItem; unselect_area1: TButton; UpDown1: TUpDown; use_astrometry_internal1: TRadioButton; use_manual_alignment1: TRadioButton; use_star_alignment1: TRadioButton; Viewimage6: TMenuItem; Viewimage7: TMenuItem; Viewimage8: TMenuItem; width_UpDown1: TUpDown; write_log1: TCheckBox; powerdown_enabled1: TCheckBox; classify_dark_exposure1: TCheckBox; classify_dark_temperature1: TCheckBox; classify_flat_filter1: TCheckBox; keyword1: TMenuItem; changekeyword1: TMenuItem; changekeyword2: TMenuItem; changekeyword3: TMenuItem; changekeyword4: TMenuItem; keyword2: TMenuItem; keyword3: TMenuItem; keyword4: TMenuItem; copy_to_images1: TMenuItem; help_stack_menu2: TLabel; MenuItem13: TMenuItem; copypath1: TMenuItem; PopupMenu5: TPopupMenu; renametobak5: TMenuItem; MenuItem10: TMenuItem; MenuItem11: TMenuItem; MenuItem12: TMenuItem; MenuItem4: TMenuItem; MenuItem5: TMenuItem; MenuItem6: TMenuItem; MenuItem7: TMenuItem; MenuItem8: TMenuItem; MenuItem9: TMenuItem; PopupMenu2: TPopupMenu; PopupMenu3: TPopupMenu; PopupMenu4: TPopupMenu; removeselected2: TMenuItem; removeselected3: TMenuItem; removeselected4: TMenuItem; renametobak2: TMenuItem; renametobak3: TMenuItem; renametobak4: TMenuItem; select2: TMenuItem; select3: TMenuItem; select4: TMenuItem; luminance_filter_factor2: TEdit; classify_filter1: TCheckBox; classify_object1: TCheckBox; MenuItem1: TMenuItem; MenuItem2: TMenuItem; MenuItem3: TMenuItem; removeselected1: TMenuItem; green_filter_factor2: TEdit; blue_filter_factor2: TEdit; classify_groupbox1: TGroupBox; ImageList_colors: TImageList; unselect2: TMenuItem; unselect3: TMenuItem; unselect4: TMenuItem; unselect1: TMenuItem; select1: TMenuItem; OpenDialog1: TOpenDialog; Memo2: TMemo; ImageList2: TImageList; PopupMenu1: TPopupMenu; renametobak1: TMenuItem; Viewimage1: TMenuItem; press_esc_to_abort1: TLabel; Viewimage2: TMenuItem; Viewimage3: TMenuItem; Viewimage4: TMenuItem; Viewimage5: TMenuItem; procedure add_noise1Click(Sender: TObject); procedure align_blink1Change(Sender: TObject); procedure analyseblink1Click(Sender: TObject); procedure annotate_mode1Change(Sender: TObject); procedure browse_monitoring1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure calibrate_prior_solving1Change(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure help_monitoring1Click(Sender: TObject); procedure help_mount_tab1Click(Sender: TObject); procedure listview1ItemChecked(Sender: TObject; Item: TListItem); procedure live_monitoring1Click(Sender: TObject); procedure auto_select1Click(Sender: TObject); procedure make_osc_color1Click(Sender: TObject); procedure monitoring_stop1Click(Sender: TObject); procedure lrgb_auto_level1Change(Sender: TObject); procedure keywordchangelast1Click(Sender: TObject); procedure keywordchangesecondtolast1Click(Sender: TObject); procedure calc_polar_alignment_error1Click(Sender: TObject); procedure monitor_action1Change(Sender: TObject); procedure monitor_latitude1EditingDone(Sender: TObject); procedure monitor_longitude1EditingDone(Sender: TObject); procedure mount_analyse1Click(Sender: TObject); procedure analysephotometry1Click(Sender: TObject); procedure analyse_inspector1Click(Sender: TObject); procedure apply_hue1Click(Sender: TObject); procedure auto_background_level1Click(Sender: TObject); procedure apply_background_noise_filter1Click(Sender: TObject); procedure bayer_pattern1Select(Sender: TObject); procedure bin_image1Click(Sender: TObject); procedure blink_stop1Click(Sender: TObject); procedure blink_unaligned_multi_step1Click(Sender: TObject); procedure browse_mount1Click(Sender: TObject); procedure browse_dark1Click(Sender: TObject); procedure browse_inspector1Click(Sender: TObject); procedure browse_live_stacking1Click(Sender: TObject); procedure analyse_objects_visibles1Click(Sender: TObject); procedure browse_photometry1Click(Sender: TObject); procedure aavso_button1Click(Sender: TObject); procedure clear_mount_list1Click(Sender: TObject); procedure extract_green1Click(Sender: TObject); procedure clear_inspector_list1Click(Sender: TObject); procedure copy_to_blink1Click(Sender: TObject); procedure copy_to_photometry1Click(Sender: TObject); procedure curve_fitting1Click(Sender: TObject); procedure ephemeris_centering1Change(Sender: TObject); procedure focallength1Exit(Sender: TObject); procedure go_step_two1Click(Sender: TObject); procedure luminance_filter1exit(Sender: TObject); procedure help_inspector_tab1Click(Sender: TObject); procedure help_live_stacking1Click(Sender: TObject); procedure help_pixel_math2Click(Sender: TObject); procedure hue_fuzziness1Change(Sender: TObject); procedure listview8CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); procedure listview8CustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean); procedure live_stacking1Click(Sender: TObject); procedure copy_files_to_clipboard1Click(Sender: TObject); procedure most_common_mono1Click(Sender: TObject); procedure mount_add_solutions1Click(Sender: TObject); procedure new_saturation1Change(Sender: TObject); procedure check_pattern_filter1Change(Sender: TObject); procedure pagecontrol1Change(Sender: TObject); procedure pagecontrol1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure photom_calibrate1Click(Sender: TObject); procedure photom_green1Click(Sender: TObject); procedure photom_stack1Click(Sender: TObject); procedure PopupMenu1Popup(Sender: TObject); procedure press_esc_to_abort1Click(Sender: TObject); procedure rainbow_Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure rainbow_Panel1Paint(Sender: TObject); procedure remove_luminance1Change(Sender: TObject); procedure result_compress1Click(Sender: TObject); procedure rename_result1Click(Sender: TObject); procedure restore_file_ext1Click(Sender: TObject); procedure colournebula1Click(Sender: TObject); procedure refresh_astrometric_solutions1click(Sender: TObject); procedure clear_photometry_list1Click(Sender: TObject); procedure export_aligned_files1Click(Sender: TObject); procedure extend_object_name_with_time_observation1Click(Sender: TObject); procedure FormDropFiles(Sender: TObject; const FileNames: array of String); procedure FormPaint(Sender: TObject); procedure help_blink1Click(Sender: TObject); procedure help_photometry1Click(Sender: TObject); procedure listview7CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); procedure listview7CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); procedure live_stacking_pause1Click(Sender: TObject); procedure live_stacking_restart1Click(Sender: TObject); procedure more_indication1Click(Sender: TObject); procedure photometry_binx2Click(Sender: TObject); procedure photometry_button1Click(Sender: TObject); procedure saturation_tolerance1Change(Sender: TObject); procedure save_result1Click(Sender: TObject); procedure save_settings_extra_button1Click(Sender: TObject); procedure smart_colour_smooth_button1Click(Sender: TObject); procedure classify_filter1Click(Sender: TObject); procedure apply_get_background1Click(Sender: TObject); procedure help_osc_menu1Click(Sender: TObject); procedure help_uncheck_outliers1Click(Sender: TObject); procedure listview6CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); procedure list_to_clipboard1Click(Sender: TObject); procedure selectall1Click(Sender: TObject); procedure apply_remove_background_colour1Click(Sender: TObject); procedure reset_factors1Click(Sender: TObject); procedure search_fov1Change(Sender: TObject); procedure solve_and_annotate1Change(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure star_database1DropDown(Sender: TObject); procedure apply_box_filter2Click(Sender: TObject); procedure tab_monitoring1Show(Sender: TObject); procedure test_osc_normalise_filter1Click(Sender: TObject); procedure test_pattern1Click(Sender: TObject); procedure blink_button1Click(Sender: TObject); procedure create_test_image_stars1Click(Sender: TObject); procedure clear_blink_alignment1Click(Sender: TObject); procedure clear_blink_list1Click(Sender: TObject); procedure Edit_width1Change(Sender: TObject); procedure flux_aperture1change(Sender: TObject); procedure help_astrometric_solving1Click(Sender: TObject); procedure listview1CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); procedure listview1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); procedure listview2CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); procedure listview2CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); procedure listview3CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); procedure listview3CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); procedure listview4CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); procedure listview4CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); procedure listview6CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); procedure copy_to_images1Click(Sender: TObject); procedure resize_factor1Change(Sender: TObject); procedure analysedarksButton2Click(Sender: TObject); procedure analyseflatsButton3Click(Sender: TObject); procedure analyseflatdarksButton1Click(Sender: TObject); procedure changekeyword1Click(Sender: TObject); procedure dark_spot_filter1Click(Sender: TObject); procedure free_resize_fits1Click(Sender: TObject); procedure copypath1Click(Sender: TObject); procedure help_pixel_math1Click(Sender: TObject); procedure help_stack_menu2Click(Sender: TObject); procedure help_stack_menu3Click(Sender: TObject); procedure listview1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure sd_factor_blink1Change(Sender: TObject); procedure solve1Click(Sender: TObject); procedure splitRGB1Click(Sender: TObject); procedure clear_dark_list1Click(Sender: TObject); procedure clear_image_list1Click(Sender: TObject); procedure help_astrometric_alignment1Click(Sender: TObject); procedure help_stack_menu1Click(Sender: TObject); procedure help_internal_alignment1Click(Sender: TObject); procedure removeselected1Click(Sender: TObject); procedure show_quads1Click(Sender: TObject); procedure subtract_background1Click(Sender: TObject); procedure browse1Click(Sender: TObject); procedure save_as_new_file1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: char); procedure apply_gaussian_filter1Click(Sender: TObject); procedure select1Click(Sender: TObject); procedure stack_button1Click(Sender: TObject); procedure browse_blink1Click(Sender: TObject); procedure browse_flats1Click(Sender: TObject); procedure browse_bias1Click(Sender: TObject); procedure replace_by_master_dark1Click(Sender: TObject); procedure replace_by_master_flat1Click(Sender: TObject); procedure apply_gaussian_blur_button1Click(Sender: TObject); procedure Analyse1Click(Sender: TObject); procedure apply_factor1Click(Sender: TObject); procedure apply_file1Click(Sender: TObject); procedure file_to_add1Click(Sender: TObject); procedure clear_selection2Click(Sender: TObject); procedure clear_selection3Click(Sender: TObject); procedure renametobak1Click(Sender: TObject); procedure listview1DblClick(Sender: TObject); procedure apply_dpp_button1Click(Sender: TObject); procedure most_common_filter_tool1Click(Sender: TObject); procedure undo_button2Click(Sender: TObject); procedure edit_background1Click(Sender: TObject); procedure FormShow(Sender: TObject); procedure undo_button_equalise_background1Click(Sender: TObject); procedure unselect1Click(Sender: TObject); procedure unselect_area1Click(Sender: TObject); procedure UpDown1Click(Sender: TObject; Button: TUDBtnType); procedure FormResize(Sender: TObject); procedure listview1ColumnClick(Sender: TObject; Column: TListColumn); procedure listview1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); procedure apply_artificial_flat_correction1Click(Sender: TObject); procedure stack_method1Change(Sender: TObject); procedure use_astrometry_internal1Change(Sender: TObject); procedure use_ephemeris_alignment1Change(Sender: TObject); procedure use_manual_alignment1Change(Sender: TObject); procedure use_star_alignment1Change(Sender: TObject); procedure apply_vertical_gradient1Click(Sender: TObject); procedure Viewimage1Click(Sender: TObject); procedure write_video1Click(Sender: TObject); private { Private declarations } SortedColumn: Integer; public { Public declarations } end; var stackmenu1: Tstackmenu1; type TfileToDo = record name : string; listviewindex : integer; end; type tstarlistpackage = record {for photometry tab} width: integer; height: integer; flux_magn_offset : double; starlist : star_list; end; var starlistpack : array of tstarlistpackage;{for photometry tab} var calc_scale:double; counterR,counterG, counterB, counterRGB,counterL, counterRdark,counterGdark, counterBdark, counterRGBdark,counterLdark, counterRflat,counterGflat, counterBflat, counterRGBflat,counterLflat, counterRbias,counterGbias, counterBbias, counterRGBbias,counterLbias, temperatureL,temperatureR,temperatureG,temperatureB,temperatureRGB, exposureR, exposureG,exposureB,exposureRGB,exposureL : integer; sum_exp,sum_temp,photometry_stdev : double; referenceX,referenceY : double;{reference position used stacking} jd_mid : double;{julian day of mid head.exposure} jd_sum : double;{sum of julian days} jd_stop : double;{end observation in julian days} files_to_process, files_to_process_LRGB : array of TfileToDo;{contains names to process and index to listview1} flat_norm_value{,dark_average,dark_sigma } : double; areay1,areay2 : integer; hue1,hue2: single;{for colour disk} asteroidlist : array of array of array of double; solve_show_log : boolean; process_as_osc : integer;//1=auto 2=forced process as OSC image var {################# initialised variables #########################} areaX1:integer=0; {for set area} areaX2:integer=0; dark_exposure : integer=987654321;{not done indication} dark_temperature: integer=987654321; dark_gain : string='987654321'; flat_filter : string='987654321';{not done indication} last_light_jd: integer=987654321; last_flat_loaded : string=''; last_dark_loaded : string=''; new_analyse_required: boolean=false;{if changed then reanalyse tab 1} new_analyse_required3: boolean=false;{if changed then reanalyse tab 3} quads_displayed:boolean=false;{no quads visible, so no refresh required} equalise_background_step: integer=1; ra_target : double=999; dec_target : double=999; jd_start : double=0;{julian day of date-obs} const dialog_filter='FITS files and DSLR RAW files |*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS;*.fz;*.tif;*.tiff;*.TIF;*.xisf;'+ '*.RAW;*.raw;*.CRW;*.crw;*.CR2;*.cr2;*.CR3;*.cr3;*.KDC;*.kdc;*.DCR;*.dcr;*.MRW;*.mrw;*.ARW;*.arw;*.NEF;*.nef;*.NRW;.nrw;*.DNG;*.dng;*.ORF;*.orf;*.PTX;*.ptx;*.PEF;*.pef;*.RW2;*.rw2;*.SRW;*.srw;*.RAF;*.raf;'+ '|FITS files (*.fit*)|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS;*.fz;'+ '|JPEG, TIFF, PNG PPM files|*.png;*.PNG;*.tif;*.tiff;*.TIF;*.jpg;*.JPG;*.ppm;*.pgm;*.pbm;*.pfm;*.xisf;'+ '|RAW files|*.RAW;*.raw;*.CRW;*.crw;*.CR2;*.cr2;*.CR3;*.cr3;*.KDC;*.kdc;*.DCR;*.dcr;*.MRW;*.mrw;*.ARW;*.arw;*.NEF;*.nef;*.NRW;.nrw;*.DNG;*.dng;*.ORF;*.orf;*.PTX;*.ptx;*.PEF;*.pef;*.RW2;*.rw2;*.SRW;*.srw;*.RAF;*.raf;'; procedure listview_add(tl: tlistview; s0:string; is_checked:boolean; count:integer); procedure listview_add_xy(fitsX,fitsY: double);{add x,y position to listview} procedure update_equalise_background_step(pos1: integer);{update equalise background menu} procedure memo2_message(s: string);{message to memo2} procedure update_stackmenu;{update stackmenu1 menus} procedure box_blur(colors,range: integer;var img: image_array);{combine values of pixels, ignore zeros} procedure check_pattern_filter(var img: image_array); {normalize bayer pattern. Colour shifts due to not using a white light source for the flat frames are avoided.} procedure black_spot_filter(var img: image_array);{remove black spots with value zero} {execution time about 0.4 sec} function create_internal_solution(img :image_array;hd: theader) : boolean; {plate solving, image should be already loaded create internal solution using the internal solver} function apply_dark_and_flat(var img : image_array): boolean ; inline; {apply dark and flat if required, renew if different head.exposure or ccd temp} procedure smart_colour_smooth( var img: image_array; wide, sd:double; preserve_r_nebula,measurehist:boolean);{Bright star colour smooth. Combine color values of wide x wide pixels, keep luminance intact} procedure green_purple_filter( var img: image_array);{Balances RGB to remove green and purple. For e.g. Hubble palette} procedure date_to_jd(date_time:string;exp :double);{convert date_obs string and exposure time to global variables jd_start (julian day start exposure) and jd_mid (julian day middle of the exposure)} function JdToDate(jd:double):string;{Returns Date from Julian Date} procedure resize_img_loaded(ratio :double); {resize img_loaded in free ratio} function median_background(var img :image_array;color,sizeX,sizeY,x,y:integer): double;{find median value of an area at position x,y with sizeX,sizeY} procedure analyse_image(img : image_array;head: Theader; snr_min:double;report:boolean;out star_counter : integer; out backgr, hfd_median : double); {find background, number of stars, median HFD} procedure sample(sx,sy : integer);{sampe local colour and fill shape with colour} procedure apply_most_common(sourc,dest: image_array; radius: integer); {apply most common filter on first array and place result in second array} procedure report_results(object_to_process,stack_info :string;object_counter,colorinfo:integer);{report on tab results} procedure apply_factors;{apply r,g,b factors to image} procedure listviews_begin_update; {speed up making stackmenu visible having a many items} procedure listviews_end_update;{speed up making stackmenu visible having a many items} procedure analyse_listview(lv :tlistview; light,full, refresh: boolean);{analyse list of FITS files} function julian_calc(yyyy,mm:integer;dd,hours,minutes,seconds:double):double; {##### calculate julian day, revised 2017} function RemoveSpecialChars(const STR : string) : string; {remove ['.','\','/','*','"',':','|','<','>']} const L_object=0; {lights, position in listview1} L_filter=1; L_result=2; L_bin=3; L_hfd=4; L_quality=5; L_background=6; L_nrstars=7; L_sharpness=8; L_exposure=9; L_temperature=10; L_width=11; L_height=12; L_type=13; L_datetime=14; L_position=15; L_gain=16; L_solution=17; L_x=18; L_y=19; L_calibration=20; L_focpos=21; L_foctemp=22; L_centalt=23; L_centaz=24; L_sqm=25; L_nr=26;{number of fields} D_exposure=0; D_temperature=1; D_binning=2; D_width=3; D_height=4; D_type=5; D_date=6; D_background=7; D_sigma=8; D_gain=9; D_jd=10; D_nr=11;{number of fields} F_exposure=0; {flats} F_filter=10; F_jd=11; F_calibration=12; F_nr=13;{number of fields} FD_exposure=0; {flat_darks} FD_nr=10;{flat darks} B_exposure=0; {blink} B_temperature=1; B_binning=2; B_width=3; B_height=4; B_type=5; B_date=6; B_calibration=7; B_solution=8; B_annotated=9; B_nr=10;{number of fields} P_exposure=0; {photometry tab} P_temperature=1; P_binning=2; P_width=3; P_height=4; P_type=5; P_background=6; P_filter=7; P_date=8; P_jd_mid=9; P_jd_helio=10; P_magn1=11; P_snr=12; P_magn2=13; P_magn3=14; P_hfd=15; P_stars=16; P_astrometric=17; P_photometric=18; P_calibration=19; P_centalt=20; P_airmass=21; P_limmagn=22; P_nr=23;{number of fields} I_date=6;//inspector tab I_nr_stars=7; I_focus_pos=8; M_exposure=0; {mount analyse} M_temperature=1; M_binning=2; M_width=3; M_height=4; M_type=5; M_date=6; M_jd_mid=7; M_ra=8; M_dec=9; M_ra_m=10; M_dec_m=11; M_ra_e=12; M_dec_e=13; M_ra_jnow=14; M_dec_jnow=15; M_ra_m_jnow=16; M_dec_m_jnow=17; M_centalt=18; M_centaz=19; M_crota_jnow=20; M_foctemp=21; M_pressure=22; M_nr=23;{number of fields} icon_thumb_down=8; {image index for outlier} icon_king=9 {16};{image index for best image} video_index : integer=1; frame_rate : string ='1'; implementation uses unit_image_sharpness, unit_gaussian_blur, unit_star_align, unit_astrometric_solving,unit_stack_routines,unit_annotation,unit_hjd, unit_live_stacking, unit_monitoring, unit_hyperbola, unit_asteroid,unit_yuv4mpeg2, unit_avi,unit_aavso,unit_raster_rotate, unit_listbox,unit_aberration; type blink_solution = record solution_vectorX : solution_vector {array[0..2] of double}; solution_vectorY : solution_vector; end; var bsolutions : array of blink_solution; {$IFDEF fpc} {$R *.lfm} {$else} {delphi} {$R *.lfm} {$endif} {$ifdef mswindows} Function ShutMeDown:string; var hToken : THandle; tkp,p : TTokenPrivileges; RetLen : DWord; ExReply: LongBool; Reply : DWord; begin if OpenProcessToken(GetCurrentProcess,TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY,hToken) then begin if LookupPrivilegeValue(nil,'SeShutdownPrivilege',tkp .Privileges[0].Luid) then begin tkp.PrivilegeCount := 1; tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; AdjustTokenPrivileges(hToken,False,tkp,SizeOf(TTokenPrivileges),p,RetLen); Reply := GetLastError; if Reply = ERROR_SUCCESS then begin ExReply:= ExitWindowsEx(EWX_POWEROFF or EWX_FORCE, 0); if ExReply then Result:='Shutdown Initiated' else Result:='Shutdown failed with ' + IntToStr(GetLastError); end; end; end; end; {$else} {unix} {$endif} function inverse_erf(x :double):double; {Inverse of erf function. Inverse of approximation formula by Sergei Winitzki. Error in result is <0.005 for sigma [0..3] Source wikipedia https://en.wikipedia.org/wiki/Error_function} const {input part of population [0..1] within, result is the standard deviation required for the input} a =0.147; begin if x<0.99999 then result:=sqrt(sqrt(sqr( (2/(pi*a)) + ln(1-x*x)/2)-(ln(1-x*x)/a) ) - (2/(pi*a) + ln(1-x*x)/2) ) else result:=99.99; end; procedure update_stackmenu;{update stackmenu1 menus, called onshow stackmenu1} begin with stackmenu1 do begin {set bevel colours} Panel_solver1.bevelouter:=bvNone; Panel_star_detection1.bevelouter:=bvNone; Panel_solver1.color:=clForm; Panel_star_detection1.color:=clForm; panel_manual1.color:=clForm; panel_ephemeris1.color:=clForm; min_star_size_stacking1.enabled:=false; if use_star_alignment1.checked then begin Panel_star_detection1.bevelouter:=bvSpace; {blue corner} Panel_star_detection1.color:=CLWindow; min_star_size_stacking1.enabled:=true; end else if use_astrometry_internal1.checked then begin Panel_solver1.bevelouter:=bvSpace; Panel_solver1.color:=CLWindow; Panel_star_detection1.color:=CLWindow; end else if use_manual_alignment1.checked then begin panel_manual1.bevelouter:=bvSpace; panel_manual1.color:=CLWindow; end else if use_ephemeris_alignment1.checked then begin panel_ephemeris1.bevelouter:=bvSpace; panel_ephemeris1.color:=CLWindow; end; end;{stack menu} end; function ansi_only(s:string): string; begin result:=StringReplace(s,'Δ','offset',[rfReplaceAll]); result:=StringReplace(result,'α','RA',[rfReplaceAll]); result:=StringReplace(result,'δ','DEC',[rfReplaceAll]); end; procedure memo2_message(s: string);{message to memo2. Is also used for log to file in commandline mode} begin {$IFDEF unix} {linux and mac} if commandline_execution then writeln(s); {linux command line can write unicode} {$ELSE } if ((commandline_execution) and (isConsole)) then {isconsole, is console available, prevent run time error if compiler option -WH is checked} writeln(ansi_only(s)); {log to console for Windows when compiler WIN32 gui is off} {$ENDIF} if ((commandline_execution=false) or (commandline_log=true)) then {no commandline or option -log is used} begin stackmenu1.memo2.lines.add(TimeToStr(time)+' '+s); {fill memo2 with log} {$IFDEF unix} if ((commandline_execution=false){save some time and run time error in command line} and (stackmenu1.Memo2.HandleAllocated){prevent run time errors}) then begin // scroll down: stackmenu1.Memo2.SelStart:=Length(stackmenu1.Memo2.lines.Text)-1; stackmenu1.Memo2.VertScrollBar.Position:=65000; end; {$ELSE } {$ENDIF} end; end; procedure listviews_begin_update;{speed up making stackmenu visible having a many items} begin stackmenu1.listview1.Items.beginUpdate; stackmenu1.listview2.Items.beginUpdate; stackmenu1.listview3.Items.beginUpdate; stackmenu1.listview4.Items.beginUpdate; stackmenu1.listview5.Items.beginUpdate; stackmenu1.listview6.Items.beginUpdate; stackmenu1.listview7.Items.beginUpdate; stackmenu1.listview8.Items.beginUpdate; // stackmenu1.listview9.Items.beginUpdate;{not stored} end; procedure listviews_end_update; {speed up making stackmenu visible having a many items} begin stackmenu1.listview1.Items.EndUpdate; stackmenu1.listview2.Items.EndUpdate; stackmenu1.listview3.Items.EndUpdate; stackmenu1.listview4.Items.EndUpdate; stackmenu1.listview5.Items.EndUpdate; stackmenu1.listview6.Items.EndUpdate; stackmenu1.listview7.Items.EndUpdate; stackmenu1.listview8.Items.EndUpdate; // stackmenu1.listview9.Items.EndUpdate; end; procedure listview_add(tl: tlistview; s0:string; is_checked: boolean; count:integer); var ListItem: TListItem; i : integer; begin with tl do {stackmenu.listview2} begin {Items.BeginUpdate; is set before calling this procedure} ListItem := Items.Add; ListItem.Caption := s0;{with checkbox} ListItem.checked:=is_checked; for i:=1 to count do ListItem.SubItems.Add(''); // Items[items.Count-1].Checked:=true; {Items.EndUpdate; is set after calling this procedure} end; end; procedure listview_add_xy(fitsX,fitsY: double);{add x,y position to listview} var i: integer; begin with stackmenu1 do for i:=0 to listview1.Items.Count-1 do if listview1.Items[i].Selected then begin ListView1.Items.item[i].subitems.Strings[L_X]:=floattostrF(fitsX,ffFixed,0,2); ListView1.Items.item[i].subitems.Strings[L_Y]:=floattostrF(fitsY,ffFixed,0,2); {$ifdef darwin} {MacOS} {bugfix darwin green red colouring} stackmenu1.ListView1.Items.item[i].Subitems.strings[L_result]:='✓ star'; {$endif} end; end; procedure listview5_add(tl: tlistview; s0,s1,s2,s3,s4,s5,s6:string); var ListItem: TListItem; begin with tl do {stackmenu.listview5} begin Items.BeginUpdate; {stop updating} ListItem := Items.Add; ListItem.Caption := s0;{with checkbox} ListItem.SubItems.Add(s1); ListItem.SubItems.Add(s2); ListItem.SubItems.Add(s3); ListItem.SubItems.Add(s4); ListItem.SubItems.Add(s5); ListItem.SubItems.Add(s6); Items.EndUpdate;{start updating} end; end; procedure count_selected; {report the number of lights selected in images_selected and update menu indication} var c, images_selected : integer; begin images_selected:=0; for c:=0 to stackmenu1.ListView1.items.count-1 do if stackmenu1.ListView1.Items[c].Checked then inc(images_selected,1); stackmenu1.nr_selected1.caption:=inttostr(images_selected);{update menu info} end; function add_unicode(u,tekst:string): string; begin result:=stringreplace(tekst,'♛','',[rfReplaceAll]);//remove crown result:=stringreplace(result,'👎','',[rfReplaceAll]);//remove thumb down result:=u+result; end; procedure list_remove_outliers(key:string); {do statistics} var quality_mean,quality_sd,sd_factor : double; c, counts,nr_good_images,quality, best, best_index : integer; sd : string; begin best:=0; with stackmenu1 do begin counts:=ListView1.items.count-1; ListView1.Items.BeginUpdate; try {calculate means} c:=0; quality_mean:=0; nr_good_images:=0; repeat if ((ListView1.Items.item[c].checked) and (key=ListView1.Items.item[c].subitems.Strings[L_result])) then begin {checked} if strtofloat(ListView1.Items.item[c].subitems.Strings[L_hfd])>90 {hfd} then ListView1.Items.item[c].checked:=false {no quality, can't process this image} else begin {normal HFD value} {$ifdef darwin} {MacOS} quality:=strtoint(add_unicode('',stackmenu1.ListView1.Items.item[c].Subitems.strings[L_quality]));//remove all crowns {$else} quality:=strtoint(ListView1.Items.item[c].subitems.Strings[L_quality]); {$endif} quality_mean:=quality_mean+quality; inc(nr_good_images); if quality>best then begin best:=quality; best_index:=c; end; end; end; inc(c); {go to next file} until c>counts; if nr_good_images>0 then quality_mean:=quality_mean/nr_good_images else exit; //quality_mean:=0; {calculate standard deviations} begin c:=0; quality_sd:=0; repeat {check all files, remove darks, bias} if ((ListView1.Items.item[c].checked) and (key=ListView1.Items.item[c].subitems.Strings[L_result]))then begin {checked} {$ifdef darwin} {MacOS} quality:=strtoint(add_unicode('',ListView1.Items.item[c].Subitems.strings[L_quality]));//remove crown {$else} quality:=strtoint(ListView1.Items.item[c].subitems.Strings[L_quality]); {$endif} quality_sd:=quality_sd+sqr(quality_mean -quality); end; inc(c); {go to next file} until c>counts; quality_sd:=sqrt(quality_sd/nr_good_images); memo2_message('Analysing group '+key+ ' for outliers.'+#9+#9+' Average image quality (nrstars/sqr(hfd))='+floattostrF(quality_mean,ffFixed,0,0)+ ', σ='+floattostrF(quality_sd,ffFixed,0,1)); {remove outliers} sd:=stackmenu1.sd_factor_list1.Text; if pos('%',sd)>0 then {specified in percentage} begin sd:=StringReplace(sd,'%','',[]); sd_factor:=inverse_erf(strtofloat2(sd)/100);{convert percentage to standard deviation} end else sd_factor:=strtofloat2(sd); c:=0; repeat if ((ListView1.Items.item[c].checked) and (key=ListView1.Items.item[c].subitems.Strings[L_result])) then begin {checked} ListView1.Items.item[c].subitems.Strings[L_result]:='';{remove key, job done} {$ifdef darwin} {MacOS} quality:=strtoint(add_unicode('',ListView1.Items.item[c].Subitems.strings[L_quality]));//remove all crowns {$else} quality:=strtoint(ListView1.Items.item[c].subitems.Strings[L_quality]); {$endif} if (quality_mean- quality)>sd_factor*quality_sd then begin {remove low quality outliers} ListView1.Items.item[c].checked:=false; ListView1.Items.item[c].SubitemImages[L_quality]:=icon_thumb_down; {mark as outlier using imageindex} {$ifdef darwin} {MacOS} ListView1.Items.item[c].Subitems.strings[L_quality]:=add_unicode('👎',ListView1.Items.item[c].Subitems.strings[L_quality]);//thumb down {$endif} memo2_message(ListView1.Items.item[c].caption+ ' unchecked due to low quality = nr stars detected / hfd.' ); end; end; inc(c); {go to next file} until c>counts; end;{throw outliers out} if best<>0 then begin ListView1.Items.item[best_index].SubitemImages[L_quality]:=icon_king; {mark best index. Not nessesary but just nice} {$ifdef darwin} {MacOS} ListView1.Items.item[best_index].Subitems.strings[L_quality]:=add_unicode('♛',ListView1.Items.item[best_index].Subitems.strings[L_quality]);//add crown {$endif} end; finally ListView1.Items.EndUpdate; end; end;{with stackmenu1} end; procedure analyse_image(img : image_array;head: Theader; snr_min:double;report:boolean;out star_counter : integer; out backgr, hfd_median : double); {find background, number of stars, median HFD} var width5,height5,fitsX,fitsY,size,radius,i,j,retries,max_stars,n,m,xci,yci,sqr_radius : integer; hfd1,star_fwhm,snr,flux,xc,yc,detection_level,hfd_min, min_background : double; hfd_list : array of double; img_sa : image_array; var f : textfile; var {################# initialised variables #########################} len: integer=1000; begin width5:=Length(img[0]); {width} height5:=Length(img[0][0]); {height} max_stars:=500; SetLength(hfd_list,len);{set array length to len} get_background(0,img,true,true {calculate background and also star level end noise level},{var}backgr,star_level); detection_level:=max(3.5*noise_level[0],star_level); {level above background. Start with a high value} retries:=2; {try up to three times to get enough stars from the image} hfd_min:=max(0.8 {two pixels},strtofloat2(stackmenu1.min_star_size_stacking1.caption){hfd});{to ignore hot pixels which are too small} if ((nrbits=8) or (head.datamax_org<=255)) then min_background:=0 else min_background:=8; if ((backgr<60000) and (backgr>min_background) ) then {not an abnormal file} begin repeat {try three time to find enough stars} star_counter:=0; if report then {write values to file} begin assignfile(f,ChangeFileExt(filename2,'.csv')); rewrite(f); {this could be done 3 times due to the repeat but it is the most simple code} writeln(f,'x,y,hfd,snr,flux'); end; setlength(img_sa,1,width5,height5);{set length of image array} for fitsY:=0 to height5-1 do for fitsX:=0 to width5-1 do img_sa[0,fitsX,fitsY]:=-1;{mark as star free area} for fitsY:=0 to height5-1 do begin for fitsX:=0 to width5-1 do begin if (( img_sa[0,fitsX,fitsY]<=0){area not occupied by a star} and (img[0,fitsX,fitsY]-backgr>detection_level)) then {new star. For analyse used sigma is 5, so not too low.} begin HFD(img,fitsX,fitsY,14{annulus radius},99 {flux aperture restriction},0 {adu_e}, hfd1,star_fwhm,snr,flux,xc,yc);{star HFD and FWHM} if ((hfd1<=30) and (snr>snr_min) and (hfd1>hfd_min) {two pixels minimum} ) then begin hfd_list[star_counter]:=hfd1;{store} inc(star_counter); if star_counter>=len then begin len:=len+1000; SetLength(hfd_list,len);{increase size} end; radius:=round(3.0*hfd1);{for marking star area. A value between 2.5*hfd and 3.5*hfd gives same performance. Note in practice a star PSF has larger wings then predicted by a Gaussian function} sqr_radius:=sqr(radius); xci:=round(xc);{star center as integer} yci:=round(yc); for n:=-radius to +radius do {mark the whole circular star area as occupied to prevent double detection's} for m:=-radius to +radius do begin j:=n+yci; i:=m+xci; if ((j>=0) and (i>=0) and (j<height5) and (i<width5) and (sqr(m)+sqr(n)<=sqr_radius)) then img_sa[0,i,j]:=1; end; if report then begin writeln(f,floattostr4(xc+1)+','+floattostr4(yc+1)+','+floattostr4(hfd1)+','+inttostr(round(snr))+','+inttostr(round(flux)) ); {+1 to convert 0... to FITS 1... coordinates} end; end; end; end; end; dec(retries);{In principle not required. Try again with lower detection level} if detection_level<=7*noise_level[0] then retries:= -1 {stop} else detection_level:=max(6.999*noise_level[0],min(30*noise_level[0],detection_level*6.999/30)); {very high -> 30 -> 7 -> stop. Or 60 -> 14 -> 7.0. Or for very short exposures 3.5 -> stop} if report then closefile(f); until ((star_counter>=max_stars) or (retries<0));{reduce detection level till enough stars are found. Note that faint stars have less positional accuracy} if star_counter>0 then hfd_median:=SMedian(hfd_List,star_counter) else hfd_median:=99; end {backgr is normal} else hfd_median:=99;{Most common value image is too low. Ca'+#39+'t process this image. Check camera offset setting.} img_sa:=nil;{free mem} end; procedure analyse_image_extended(img : image_array;head: Theader; out nr_stars, hfd_median, median_outer_ring, median_11,median_21,median_31, median_12,median_22,median_32, median_13,median_23,median_33 : double); {analyse several areas} var heeadwidth,headheight,fitsX,fitsY,radius,i, j, retries,max_stars,n,m,xci,yci,sqr_radius, nhfd, nhfd_outer_ring, nhfd_11,nhfd_21,nhfd_31, nhfd_12,nhfd_22,nhfd_32, nhfd_13,nhfd_23,nhfd_33 : integer; hfd1,star_fwhm,snr,flux,xc,yc,backgr,detection_level : double; img_sa : image_array; hfdlist, hfdlist_11,hfdlist_21,hfdlist_31, hfdlist_12,hfdlist_22,hfdlist_32, hfdlist_13,hfdlist_23,hfdlist_33, hfdlist_outer_ring :array of double; starlistXY : array of array of integer; len,starX,starY : integer; begin if head.naxis3>1 then {colour image} begin convert_mono(img,head); get_hist(0,img);{get histogram of img_loaded and his_total. Required to get correct background value} end else if (bayerpat<>'') then {raw Bayer image} begin check_pattern_filter(img); get_hist(0,img);{get histogram of img_loaded and his_total. Required to get correct background value} end; max_stars:=500; //fixed value len:=max_stars*4; {should be enough. If not increase size arrays} SetLength(hfdlist,len*4);{set array length on a starting value} SetLength(starlistXY,2,len*4);{x,y positions} setlength(img_sa,1,head.width,head.height);{set length of image array} get_background(0,img,true,true {calculate background and also star level end noise level},{var}backgr,star_level); detection_level:=max(3.5*noise_level[0],star_level); {level above background. Start with a high value} retries:=2; {try three times to get enough stars from the image} repeat nhfd:=0;{set counter at zero} if backgr>8 then begin for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_sa[0,fitsX,fitsY]:=-1;{mark as star free area} //the nine areas: //13 23 33 //12 22 32 //11 21 31 for fitsY:=0 to head.height-1 do begin for fitsX:=0 to head.width-1 do begin if (( img_sa[0,fitsX,fitsY]<=0){area not occupied by a star} and (img[0,fitsX,fitsY]-backgr>detection_level){star}) then {new star. For analyse used sigma is 5, so not too low.} begin HFD(img,fitsX,fitsY,25 {LARGE annulus radius},99 {flux aperture restriction},0 {adu_e}, hfd1,star_fwhm,snr,flux,xc,yc);{star HFD and FWHM} if ((hfd1<=35) and (snr>30) and (hfd1>0.8) {two pixels minimum} ) then begin {store values} radius:=round(3.0*hfd1);{for marking star area. A value between 2.5*hfd and 3.5*hfd gives same performance. Note in practice a star PSF has larger wings then predicted by a Gaussian function} sqr_radius:=sqr(radius); xci:=round(xc);{star center as integer} yci:=round(yc); for n:=-radius to +radius do {mark the whole circular star area as occupied to prevent double detection's} for m:=-radius to +radius do begin j:=n+yci; i:=m+xci; if ((j>=0) and (i>=0) and (j<head.height) and (i<head.width) and (sqr(m)+sqr(n)<=sqr_radius)) then img_sa[0,i,j]:=1; end; if ((img[0,xci ,yci]<head.datamax_org-1) and (img[0,xci-1,yci]<head.datamax_org-1) and (img[0,xci+1,yci]<head.datamax_org-1) and (img[0,xci ,yci-1]<head.datamax_org-1) and (img[0,xci ,yci+1]<head.datamax_org-1) and (img[0,xci-1,yci-1]<head.datamax_org-1) and (img[0,xci-1,yci+1]<head.datamax_org-1) and (img[0,xci+1,yci-1]<head.datamax_org-1) and (img[0,xci+1,yci+1]<head.datamax_org-1) ) then {not saturated} begin {store values} hfdlist[nhfd]:=hfd1; starlistXY[0,nhfd]:=xci; {store star position in image coordinates, not FITS coordinates} starlistXY[1,nhfd]:=yci; inc(nhfd); if nhfd>=length(hfdlist) then begin SetLength(hfdlist,nhfd+max_stars); {adapt length if required and store hfd value} SetLength(starlistXY,2,nhfd+max_stars);{adapt array size if required} end; end; end; end; end; end; end; dec(retries);{In principle not required. Try again with lower detection level} if detection_level<=7*noise_level[0] then retries:= -1 {stop} else detection_level:=max(6.999*noise_level[0],min(30*noise_level[0],detection_level*6.999/30)); {very high -> 30 -> 7 -> stop. Or 60 -> 14 -> 7.0. Or for very short exposures 3.5 -> stop} until ((nhfd>=max_stars) or (retries<0));{reduce dection level till enough stars are found. Note that faint stars have less positional accuracy} nhfd_11:=0; nhfd_21:=0; nhfd_31:=0; nhfd_12:=0; nhfd_22:=0; nhfd_32:=0; nhfd_13:=0; nhfd_23:=0; nhfd_33:=0; nhfd_outer_ring:=0; if nhfd>0 then {count the stars for each area} begin SetLength(hfdlist_outer_ring,nhfd);{space for all stars} SetLength(hfdlist_11,nhfd);{space for all stars} SetLength(hfdlist_21,nhfd);{space for all stars} SetLength(hfdlist_31,nhfd); SetLength(hfdlist_12,nhfd); SetLength(hfdlist_22,nhfd); SetLength(hfdlist_32,nhfd); SetLength(hfdlist_13,nhfd); SetLength(hfdlist_23,nhfd); SetLength(hfdlist_33,nhfd); {sort the stars} for i:=0 to nhfd-1 do begin hfd1:=hfdlist[i]; starX:=starlistXY[0,i]; starY:=starlistXY[1,i]; //the nine areas. FITS 1,1 is left bottom: //13 23 33 //12 22 32 //11 21 31 if sqr(starX - (heeadwidth div 2) )+sqr(starY - (headheight div 2))>sqr(0.75)*(sqr(heeadwidth div 2)+sqr(headheight div 2)) then begin hfdlist_outer_ring[nhfd_outer_ring]:=hfd1; inc(nhfd_outer_ring); end;{store out ring (>75% diameter) HFD values} if ( (starX<(head.width*1/3)) and (starY<(head.height*1/3)) ) then begin hfdlist_11[nhfd_11]:=hfd1; inc(nhfd_11); end;{store corner HFD values} if ( (starX>(head.width*2/3)) and (starY<(head.height*1/3)) ) then begin hfdlist_31[nhfd_31]:=hfd1; inc(nhfd_31); if nhfd_31>=length(hfdlist_31) then SetLength(hfdlist_31,nhfd_31+500); end; if ( (starX>(head.width*2/3)) and (starY>(head.height*2/3)) ) then begin hfdlist_33[nhfd_33]:=hfd1; inc(nhfd_33); if nhfd_33>=length(hfdlist_33) then SetLength(hfdlist_33,nhfd_33+500);end; if ( (starX<(head.width*1/3)) and (starY>(head.height*2/3)) ) then begin hfdlist_13[nhfd_13]:=hfd1; inc(nhfd_13); if nhfd_13>=length(hfdlist_13) then SetLength(hfdlist_13,nhfd_13+500);end; if ( (starX>(head.width*1/3)) and (starX<(head.width*2/3)) and (starY>(head.height*2/3)) ) then begin hfdlist_23[nhfd_23]:=hfd1; inc(nhfd_23); end;{store corner HFD values} if ( (starX<(head.width*1/3)) and (starY>(head.height*1/3)) and (starY<(head.height*2/3))) then begin hfdlist_12[nhfd_12]:=hfd1; inc(nhfd_12); end;{store corner HFD values} if ( (starX>(head.width*1/3)) and (starX<(head.width*2/3)) and (starY>(head.height*1/3)) and (starY<(head.height*2/3))) then begin hfdlist_22[nhfd_22]:=hfd1; inc(nhfd_22); end;{square center} if ( (starX>(head.width*2/3)) and (starY>(head.height*1/3)) and (starY<(head.height*2/3))) then begin hfdlist_32[nhfd_32]:=hfd1; inc(nhfd_32); end;{store corner HFD values} if ( (starX>(head.width*1/3)) and (starX<(head.width*2/3)) and (starY<(head.height*1/3))) then begin hfdlist_21[nhfd_21]:=hfd1; inc(nhfd_21); end;{store corner HFD values} end; end; nr_stars:=nhfd; if nhfd>0 then hfd_median:=SMedian(hfdList,nhfd) else hfd_median:=99; if nhfd_outer_ring>0 then median_outer_ring:=SMedian(hfdlist_outer_ring,nhfd_outer_ring) else median_outer_ring:=99; if nhfd_11>0 then median_11:=SMedian(hfdlist_11,nhfd_11) else median_11:=99; if nhfd_21>0 then median_21:=SMedian(hfdlist_21,nhfd_21) else median_21:=99; if nhfd_31>0 then median_31:=SMedian(hfdlist_31,nhfd_31) else median_31:=99; if nhfd_12>0 then median_12:=SMedian(hfdlist_12,nhfd_12) else median_12:=99; if nhfd_22>0 then median_22:=SMedian(hfdlist_22,nhfd_22) else median_22:=99; if nhfd_32>0 then median_32:=SMedian(hfdlist_32,nhfd_32) else median_32:=99; if nhfd_13>0 then median_13:=SMedian(hfdlist_13,nhfd_13) else median_13:=99; if nhfd_23>0 then median_23:=SMedian(hfdlist_23,nhfd_23) else median_23:=99; if nhfd_33>0 then median_33:=SMedian(hfdlist_33,nhfd_33) else median_33:=99; hfdlist:=nil;{release memory} hfdlist_outer_ring:=nil; hfdlist_11:=nil; hfdlist_21:=nil; hfdlist_31:=nil; hfdlist_12:=nil; hfdlist_22:=nil; hfdlist_32:=nil; hfdlist_13:=nil; hfdlist_23:=nil; hfdlist_33:=nil; img_sa:=nil;{free mem} end; procedure get_annotation_position;{find the position of the specified asteroid annotation} var count1 : integer; x1,y1,x2,y2 : double; name : string; List: TStrings; begin List := TStringList.Create; list.StrictDelimiter:=true; name:=stackmenu1.ephemeris_centering1.text;{asteroid to center on} count1:=mainwindow.Memo1.Lines.Count-1; try while count1>=0 do {plot annotations} begin if copy(mainwindow.Memo1.Lines[count1],1,8)='ANNOTATE' then {found} begin List.Clear; ExtractStrings([';'], [], PChar(copy(mainwindow.Memo1.Lines[count1],12,80-12)),List); if list.count>=6 then {correct annotation} begin if list[5]=name then {correct name} begin x1:=strtofloat2(list[0]);{fits coordinates} y1:=strtofloat2(list[1]); x2:=strtofloat2(list[2]); y2:=strtofloat2(list[3]); listview_add_xy( (x1+x2)/2,(y1+y2)/2);{add center annotation to x,y for stacking} end; end; end; count1:=count1-1; end; finally List.Free; end; end; procedure analyse_tab_lights(full : boolean); var c,star_counter ,i,counts : integer; backgr, hfd_median,alt,az,sharpness : double; Save_Cursor : TCursor; red,green,blue,planetary : boolean; key,filename1,rawstr : string; img : image_array; begin with stackmenu1 do begin counts:=ListView1.items.count-1; if counts<0 then {zero files} begin memo2_message('Abort, no images to analyse! Browse for images, darks and flats. They will be sorted automatically.'); exit; end; Save_Cursor:=Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } esc_pressed:=false; jd_sum:=0;{for sigma clip advanced average} planetary:=planetary_image1.checked; red:=false; green:=false; blue:=false; c:=0; {convert any non FITS file} while c<=counts {check all} do begin if ListView1.Items.item[c].checked then begin filename1:=ListView1.items[c].caption; if fits_tiff_file_name(filename1)=false {fits or tiff file name?} then begin memo2_message('Converting '+filename1+' to FITS file format'); Application.ProcessMessages; if esc_pressed then begin Screen.Cursor:=crDefault; { back to normal } exit; end; if convert_to_fits(filename1) {convert to fits} then ListView1.items[c].caption:=filename1 {change listview name to FITS.} else begin {failure} ListView1.Items.item[c].checked:=false; ListView1.Items.item[c].subitems.Strings[L_result]:='Conv failure!'; end; end; end;{checked} inc(c); end; c:=0; repeat {check for double entries} i:=c+1; while i<=counts do begin if ListView1.items[i].caption=ListView1.items[c].caption then {double file name} begin memo2_message('Removed second entry of same file '+ListView1.items[i].caption); listview1.Items.Delete(i); dec(counts); {compensate for delete} end else inc(i); end; inc(c); until c>counts; counts:=ListView1.items.count-1; c:=0; repeat {check all files, remove darks, bias} if ((ListView1.Items.item[c].checked) and ((length(ListView1.Items.item[c].subitems.Strings[L_hfd])<=1){hfd} or (new_analyse_required)) ) then {hfd unknown, only update blank rows} begin {checked} if counts<>0 then progress_indicator(100*c/counts,' Analysing'); Listview1.Selected :=nil; {remove any selection} ListView1.ItemIndex := c;{mark where we are, set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} Listview1.Items[c].MakeVisible(False);{scroll to selected item} filename2:=ListView1.items[c].caption; Application.ProcessMessages; if esc_pressed then begin Screen.Cursor:=crDefault; { back to normal } exit; end; if load_fits(filename2,true { update head_2.ra0..},true,false {update memo},0,head_2,img)=false then {load in memory. Use head_2 to protect head against overwriting head} begin {failed to load} ListView1.Items.item[c].checked:=false; ListView1.Items.item[c].subitems.Strings[L_result]:='No FITS!'; end else begin if pos('DARK',uppercase(imagetype))>0 then begin memo2_message('Move file '+filename2+' to tab DARKS'); listview2.Items.beginupdate; listview_add(listview2,filename2,true,D_nr);{move to darks} listview2.Items.endupdate; listview1.Items.Delete(c); dec(c);{compensate for delete} dec(counts); {compensate for delete} end else if pos('FLAT',uppercase(imagetype))>0 then begin memo2_message('Move file '+filename2+' to tab FLATS'); listview3.Items.beginupdate; listview_add(listview3,filename2,true,F_nr); listview3.Items.endupdate; listview1.Items.Delete(c); dec(c);{compensate for delete} dec(counts); {compensate for delete} end else if pos('BIAS',uppercase(imagetype))>0 then begin memo2_message('Move file '+filename2+' to tab FLAT-DARKS / BIAS'); listview4.Items.beginupdate; listview_add(listview4,filename2,true,FD_nr); listview4.Items.endupdate; listview1.Items.Delete(c); dec(c);{compensate for delete} dec(counts); {compensate for delete} end else begin {light frame} if ((planetary=false) and (full=true)) then analyse_image(img,head_2,10 {snr_min},false,star_counter,backgr, hfd_median) {find background, number of stars, median HFD} else begin star_counter:=0; backgr:=0;star_level:=0; backgr:=0; hfd_median:=-1; end; ListView1.Items.BeginUpdate; try begin ListView1.Items.item[c].subitems.Strings[L_object]:=object_name; {object name, without spaces} ListView1.Items.item[c].subitems.Strings[L_filter]:=head_2.filter_name; {filter name, without spaces} if head_2.naxis3=3 then ListView1.Items.item[c].subitems.Strings[L_filter]:='colour'; {give RGB lights filter name colour} if AnsiCompareText(red_filter1.text,head_2.filter_name)=0 then begin ListView1.Items.item[c].SubitemImages[L_filter]:=0; red:=true; end else if AnsiCompareText(red_filter2.text,head_2.filter_name)=0 then begin ListView1.Items.item[c].SubitemImages[L_filter]:=0 ; red:=true; end else if AnsiCompareText(green_filter1.text,head_2.filter_name)=0 then begin ListView1.Items.item[c].SubitemImages[L_filter]:=1; green:=true; end else if AnsiCompareText(green_filter2.text,head_2.filter_name)=0 then begin ListView1.Items.item[c].SubitemImages[L_filter]:=1; green:=true; end else if AnsiCompareText(blue_filter1.text,head_2.filter_name)=0 then begin ListView1.Items.item[c].SubitemImages[L_filter]:=2; blue:=true; end else if AnsiCompareText(blue_filter2.text,head_2.filter_name)=0 then begin ListView1.Items.item[c].SubitemImages[L_filter]:=2; blue:=true; end else if AnsiCompareText(luminance_filter1.text,head_2.filter_name)=0 then ListView1.Items.item[c].SubitemImages[L_filter]:=4 else if AnsiCompareText(luminance_filter2.text,head_2.filter_name)=0 then ListView1.Items.item[c].SubitemImages[L_filter]:=4 else if head_2.naxis3=3 then ListView1.Items.item[c].SubitemImages[L_filter]:=3 else {RGB color} if head_2.filter_name<>'' then ListView1.Items.item[c].SubitemImages[L_filter]:=7 {question mark} else ListView1.Items.item[c].SubitemImages[L_filter]:=-1;{blank} ListView1.Items.item[c].subitems.Strings[L_bin]:=floattostrf(head_2.Xbinning,ffgeneral,0,0)+' x '+floattostrf(head_2.Ybinning,ffgeneral,0,0); {Binning CCD} ListView1.Items.item[c].subitems.Strings[L_hfd]:=floattostrF(hfd_median,ffFixed,0,1); ListView1.Items.item[c].subitems.Strings[L_quality]:=inttostr5(round(star_counter/sqr(hfd_median))); {quality number of stars divided by hfd} if hfd_median>=99 then ListView1.Items.item[c].checked:=false {no stars, can't process this image} else begin {image can be futher analysed} ListView1.Items.item[c].subitems.Strings[L_nrstars]:=inttostr5(round(star_counter {star_level}));//nr of stars ListView1.Items.item[c].subitems.Strings[L_background]:=inttostr5(round(backgr)); if full then sharpness:=image_sharpness(img) else sharpness:=0; ListView1.Items.item[c].subitems.Strings[L_sharpness]:=floattostrF(sharpness,ffFixed,0,3); {sharpness test} end; if head_2.exposure>=10 then ListView1.Items.item[c].subitems.Strings[L_exposure]:=inttostr(round(head_2.exposure)) {round values above 10 seconds} else ListView1.Items.item[c].subitems.Strings[L_exposure]:=floattostrf(head_2.exposure,ffgeneral, 6, 6); if head_2.set_temperature<>999 then ListView1.Items.item[c].subitems.Strings[L_temperature]:=inttostr(head_2.set_temperature); ListView1.Items.item[c].subitems.Strings[L_width]:=inttostr(head_2.width); {width} ListView1.Items.item[c].subitems.Strings[L_height]:=inttostr(head_2.height);{height} if stackmenu1.make_osc_color1.checked then process_as_osc:=2//forced process as OSC images else if ((head_2.naxis3=1) and (head_2.Xbinning=1) and (bayerpat<>'')) then //auto process as OSC images process_as_osc:=1 else process_as_osc:=0;//disable demosaicing if ((head_2.naxis3=1) and (head_2.Xbinning=1) and (bayerpat<>'')) then rawstr:=' raw' else rawstr:=''; ListView1.Items.item[c].subitems.Strings[L_type]:=copy(imagetype,1,5)+inttostr(nrbits)+rawstr;{type} {$ifdef darwin} {MacOS, fix missing icons by coloured unicode. Place in column "type" to avoid problems with textual filter selection} if red then ListView1.Items.item[c].subitems.Strings[L_type]:='🔴' +ListView1.Items.item[c].subitems.Strings[L_type] else if green then ListView1.Items.item[c].subitems.Strings[L_type]:='🟢' +ListView1.Items.item[c].subitems.Strings[L_type] else if blue then ListView1.Items.item[c].subitems.Strings[L_type]:='🔵' +ListView1.Items.item[c].subitems.Strings[L_type]; {$endif} ListView1.Items.item[c].subitems.Strings[L_datetime]:=copy(StringReplace(head_2.date_obs,'T',' ',[]),1,23);{date/time up to ms} ListView1.Items.item[c].subitems.Strings[L_position]:=prepare_ra5(head_2.ra0,': ')+', '+ prepare_dec4(head_2.dec0,'° ');{give internal position} {is internal solution available?} if head_2.cd1_1<>0 then ListView1.Items.item[c].subitems.Strings[L_solution]:='✓' else ListView1.Items.item[c].subitems.Strings[L_solution]:='-'; ListView1.Items.item[c].subitems.Strings[L_calibration]:=head_2.calstat; {status calibration} if focus_pos<>0 then ListView1.Items.item[c].subitems.Strings[L_focpos]:=inttostr(focus_pos); if focus_temp<>999 then ListView1.Items.item[c].subitems.Strings[L_foctemp]:=floattostrF(focus_temp,ffFixed,0,1); if head_2.egain<>'' then ListView1.Items.item[c].subitems.Strings[L_gain]:=head_2.egain {e-/adu} else if head_2.gain<>'' then ListView1.Items.item[c].subitems.Strings[L_gain]:=head_2.gain; if centalt='' then begin calculate_az_alt(0 {try to use header values} ,head_2,{out}az,alt); if alt<>0 then begin centalt:=floattostrf(alt,ffgeneral, 3, 1); {altitude} centaz:=floattostrf(az,ffgeneral, 3, 1); {azimuth} end; end; ListView1.Items.item[c].subitems.Strings[L_centalt]:=centalt; ListView1.Items.item[c].subitems.Strings[L_centaz]:=centaz; ListView1.Items.item[c].subitems.Strings[L_sqm]:=sqm_value; if use_ephemeris_alignment1.Checked then {ephemeride based stacking} get_annotation_position;{fill the x,y with annotation position} end; finally ListView1.Items.EndUpdate; end; end;{end light frame} end;{this is a fits file} end;{checked and hfd unknown} inc(c); {go to next file} until c>counts; if ((green) and (blue) and (classify_filter1.checked=false)) then memo2_message('■■■■■■■■■■■■■ Hint, colour filters detected in light. For colour stack set the check-mark classify by Image filter! ■■■■■■■■■■■■■'); if (stackmenu1.uncheck_outliers1.checked) then begin {give list an indentification key label based on object, filter and head_2.exposure time} for c:=0 to ListView1.items.count-1 do begin if ListView1.Items.item[c].SubitemImages[L_quality]=icon_thumb_down then {marked at outlier} begin ListView1.Items.item[c].checked:=true;{recheck outliers from previous session} end; ListView1.Items.item[c].SubitemImages[L_quality]:=-1;{remove any icon mark} {$ifdef darwin} {MacOS} ListView1.Items.item[c].subitems.Strings[L_quality]:=add_unicode('', ListView1.Items.item[c].subitems.Strings[L_quality]);//remove all crowns and thumbs {$endif} if ListView1.items[c].Checked=true then ListView1.Items.item[c].subitems.Strings[L_result]:= ListView1.Items.item[c].subitems.Strings[L_object]+'_'+{object name} ListView1.Items.item[c].subitems.Strings[L_filter]+'_'+{filter} ListView1.Items.item[c].subitems.Strings[L_exposure]; {head_2.exposure} end; {do statistics on each constructed key} repeat c:=0; key:=''; repeat {check all files, uncheck outliers} if ListView1.Items.item[c].checked then begin key:=ListView1.Items.item[c].subitems.Strings[L_result]; if key<>'' then list_remove_outliers(key); end; if esc_pressed then begin Screen.Cursor:=crDefault; { back to normal } exit; end; inc(c) until c>counts; until key='';{until all keys are used} end; count_selected; {report the number of lights selected in images_selected and update menu indication} new_analyse_required:=false; {back to normal, head_2.filter_name is not changed, so no re-analyse required} img:=nil; {free mem} // if ((minbackgr<>0) and (pos('Sigma',stackmenu1.stack_method1.text)>0)) then // if maxbackgr/(minbackgr)>1.3 then memo2_message('█ █ █ █ █ █ Warning, some images have a significant higher background value. Method sigma clip average will not be effective in removing satellite tracks. Suggest to unselect/remove images with a high background value!! █ █ █ █ █ █ '); Screen.Cursor:=crDefault; { back to normal } progress_indicator(-100,'');{progresss done} end; end; procedure Tstackmenu1.Analyse1Click(Sender: TObject); begin analyse_tab_lights(true {full}); end; procedure Tstackmenu1.browse1Click(Sender: TObject); var i: integer; begin OpenDialog1.Title := 'Select lights to stack'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.filename:=''; opendialog1.Filter :=dialog_filter; if opendialog1.execute then begin listview1.Items.beginUpdate; for i:=0 to OpenDialog1.Files.count-1 do begin listview_add(listview1,OpenDialog1.Files[i], pos('_stacked',OpenDialog1.Files[i])=0 {do not check mark lights already stacked} ,L_nr); end; listview1.Items.EndUpdate; end; count_selected; {report the number of lights selected in images_selected and update menu indication} end; procedure report_results(object_to_process,stack_info :string;object_counter,colorinfo:integer);{report on tab results} begin {report result in results} with stackmenu1 do begin listview5_add(listview5,filename2 ,object_to_process, inttostr(object_counter)+' ' {object counter} ,stack_info ,inttostr(head.width) ,inttostr(head.height) ,head.calstat); ListView5.Items.item[ ListView5.Items.count-1].SubitemImages[1]:=5;{mark 2th columns as done using a stacked icon} ListView5.Items.item[ ListView5.Items.count-1].SubitemImages[0]:=colorinfo; {color, gray icon} end; application.processmessages; {end report result in results} end; procedure update_equalise_background_step(pos1: integer);{update equalise background menu} begin with stackmenu1 do begin if ((pos1<1) or (pos1>5)) then begin pos1:=1;saved1.caption:=''; end; if pos1>1 then go_step_two1.enabled:=true; equalise_background_step:=pos1; undo_button_equalise_background1.enabled:=true; save_result1.Enabled:=false; remove_deepsky_label1.enabled:=false; most_common_filter_tool1.enabled:=false; most_common_mono1.enabled:=false; correct_gradient_label1.enabled:=false; apply_gaussian_filter1.enabled:=false; subtract_background1.enabled:=false; save_result1.Enabled:=false; save_as_new_file1.enabled:=false; case pos1 of 1: begin save_as_new_file1.Enabled:=true; save_result1.Enabled:=true; remove_deepsky_label1.enabled:=true;undo_button_equalise_background1.caption:=''; end;{step 1,6} 2: begin most_common_filter_tool1.enabled:=true;{step 3}most_common_mono1.enabled:=head.naxis3>1;{colour}remove_deepsky_label1.enabled:=true; undo_button_equalise_background1.caption:='1'; end; 3: begin apply_gaussian_filter1.enabled:=true;{step 4}correct_gradient_label1.enabled:=true;undo_button_equalise_background1.caption:='3'; end; 4: begin subtract_background1.enabled:=true;{step 5}undo_button_equalise_background1.caption:='4';end; 5: begin save_result1.Enabled:=true;{step 5}undo_button_equalise_background1.caption:='1';end; end;{case} end; end; procedure Tstackmenu1.save_as_new_file1Click(Sender: TObject); {add equalised to filename} var dot_pos :integer; begin if Length(img_loaded)=0 then begin memo2_message('Error, no image in viewer loaded!'); exit; end; if pos('.fit',filename2)=0 then filename2:=changeFileExt(filename2,'.fits'); {rename png, XISF file to fits} dot_pos:=length(filename2); repeat dec(dot_pos); until ((filename2[dot_pos]='.') or (dot_pos<=1)); insert(' original',filename2,dot_pos); save_fits(img_loaded,filename2 ,-32, true); if fileexists(filename2) then begin saved1.caption:='Saved'; report_results(object_name,'',0,-1{no icon});{report result in tab results} end else saved1.caption:=''; update_equalise_background_step(equalise_background_step+1); {update menu} end; procedure Tstackmenu1.subtract_background1Click(Sender: TObject); var fitsX, fitsY,col,col2,nrcolours :integer; begin if head.naxis=0 then exit; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; if load_fits(filename2,true {light},true,true {update memo},0,head,img_temp) then {success load} begin nrcolours:=length(img_loaded)-1;{nr colours - 1} for col:=0 to head.naxis3-1 do {all colors} begin {subtract view from file} col2:=min(nrcolours,col); {allow subtracting mono lights from colour} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_temp[col,fitsX,fitsY]:=img_temp[col,fitsX,fitsY] - img_loaded[col2,fitsX,fitsY]+1000; {use temp as temporary rather then img_loaded since img_loaded could be mono} end; img_loaded:=img_temp; {use result} use_histogram(img_loaded,true); plot_fits(mainwindow.image1,false,true);{plot real} end; update_equalise_background_step(5 {force 5 since equalise background is set to 1 by loading fits file} );{update menu} Screen.Cursor:=crDefault; end; procedure Tstackmenu1.show_quads1Click(Sender: TObject); var hfd_min : double; max_stars,binning : integer; starlistquads : star_list; warning_downsample: string; begin if head.naxis=0 then application.messagebox( pchar('First load an image in the viewer!'), pchar('No action'),MB_OK) else begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } max_stars:=strtoint2(stackmenu1.max_stars1.text);{maximum star to process, if so filter out brightest stars later} if max_stars=0 then max_stars:=500;{0 is auto for solving. No auto for stacking} if quads_displayed then plot_fits(mainwindow.image1,false,true); {remove quads} binning:=report_binning(head.height{*cropping}); {select binning on dimensions of cropped image} if use_astrometry_internal1.checked then begin if head.cdelt2=0 {jpeg} then head.cdelt2:=binning*strtofloat2(search_fov1.text)/head.height; hfd_min:=max(0.8 {two pixels},strtofloat2(stackmenu1.min_star_size1.text){arc sec}/(head.cdelt2 *3600) );{to ignore hot pixels which are too small} end else hfd_min:=max(0.8 {two pixels},strtofloat2(stackmenu1.min_star_size_stacking1.caption){hfd});{to ignore hot pixels which are too small} bin_and_find_stars(img_loaded,binning,1 {cropping},hfd_min,max_stars,false{update hist}, starlist1, warning_downsample);{bin, measure background} find_quads_xy(starlist1,starlistquads);{find quads} display_quads(starlistquads); quads_displayed:=true; starlistquads:=nil;{release memory} Screen.Cursor:=crDefault; end; end; procedure Tstackmenu1.help_stack_menu1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#stack_menu'); end; procedure Tstackmenu1.help_internal_alignment1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#internal_alignment'); end; procedure listview_removeselect(tl :tlistview); var index: integer; begin index:=tl.Items.Count-1; while index>=0 do begin if tl.Items[index].Selected then tl.Items.Delete(Index); dec(index); {go to next file} end; end; procedure Tstackmenu1.removeselected1Click(Sender: TObject); begin if sender=removeselected1 then listview_removeselect(listview1);{from popup menu} if sender=removeselected2 then listview_removeselect(listview2);{from popup menu} if sender=removeselected3 then listview_removeselect(listview3);{from popup menu} if sender=removeselected4 then listview_removeselect(listview4);{from popup menu} if sender=removeselected5 then listview_removeselect(listview5);{from popup menu} if sender=removeselected6 then listview_removeselect(listview6);{from popup menu blink} if sender=removeselected7 then listview_removeselect(listview7);{from popup menu photometry} if sender=removeselected8 then listview_removeselect(listview8);{inspector} if sender=removeselected9 then listview_removeselect(listview9);{mount analyse} end; procedure Tstackmenu1.help_astrometric_alignment1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#astrometric_alignment'); end; procedure Tstackmenu1.clear_image_list1Click(Sender: TObject); begin ListView1.Clear; stackmenu1.ephemeris_centering1.clear; end; procedure Tstackmenu1.clear_dark_list1Click(Sender: TObject); begin listview2.Clear end; procedure update_stackmenu_mac;//Update menu shortcuts for Mac begin with stackmenu1 do begin with selectall1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with list_to_clipboard1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with selectall2 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with selectall3 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with selectall4 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with selectall5 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with selectall6 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with list_to_clipboard6 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with selectall7 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with list_to_clipboard7 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with selectall8 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with list_to_clipboard8 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with selectall9 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with list_to_clipboard9 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 end; end; procedure Tstackmenu1.FormCreate(Sender: TObject); var RealFontSize : integer; begin RealFontSize := abs(Round((GetFontData(stackmenu1.Font.Handle).Height * 72 / stackmenu1.Font.PixelsPerInch))); if realfontsize>11 then stackmenu1.font.size:=11;{limit fontsize} {$ifdef mswindows} {$else} {unix} copy_files_to_clipboard1.visible:=false; {works only in Windows} copy_files_to_clipboard1.enabled:=false; {$endif} {$IfDef Darwin}// for MacOS if commandline_execution=false then update_stackmenu_mac; {$endif} end; procedure Tstackmenu1.FormKeyPress(Sender: TObject; var Key: char); begin if key=#27 then begin esc_pressed:=true; memo2_message('ESC pressed. Execution stopped.'); end; end; procedure Tstackmenu1.apply_gaussian_filter1Click(Sender: TObject); var Save_Cursor : TCursor; begin if head.naxis=0 then exit; Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; gaussian_blur2(img_loaded,4*strtofloat2(most_common_filter_radius1.text)); plot_fits(mainwindow.image1,false,true);{plot} Screen.Cursor:=crDefault; update_equalise_background_step(equalise_background_step+1);{update menu} end; procedure listview_select(tl:tlistview); var index: integer; begin tl.Items.BeginUpdate; for index:=0 to tl.Items.Count-1 do begin if tl.Items[index].Selected then tl.Items[index].Checked:=true; end; tl.Items.EndUpdate; end; procedure Tstackmenu1.select1Click(Sender: TObject); begin if sender=select1 then listview_select(listview1);{from popupmenu} if sender=select2 then listview_select(listview2);{from popupmenu} if sender=select3 then listview_select(listview3);{from popupmenu} if sender=select4 then listview_select(listview4);{from popupmenu} if sender=select6 then listview_select(listview6);{from popupmenu blink} if sender=select7 then listview_select(listview7);{from popupmenu blink} if sender=select8 then listview_select(listview8); if sender=select9 then listview_select(listview9); end; procedure Tstackmenu1.browse_bias1Click(Sender: TObject); var i: integer; begin OpenDialog1.Title := 'Select flat dark (bias) images'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.filename:=''; opendialog1.Filter :=dialog_filter; //fits_file:=true; if opendialog1.execute then begin listview4.Items.beginupdate; for i:=0 to OpenDialog1.Files.count-1 do {add} begin listview_add(listview4,OpenDialog1.Files[i],true,FD_nr); end; listview4.Items.endupdate; end; end; procedure Tstackmenu1.browse_blink1Click(Sender: TObject); var i: integer; begin OpenDialog1.Title := 'Select images to add'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter :=dialog_filter; //fits_file:=true; if opendialog1.execute then begin listview6.items.beginupdate; for i:=0 to OpenDialog1.Files.count-1 do {add} listview_add(listview6,OpenDialog1.Files[i],true,B_nr); listview6.items.endupdate; end; end; procedure Tstackmenu1.browse_flats1Click(Sender: TObject); var i: integer; begin OpenDialog1.Title := 'Select flat images'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.filename:=''; opendialog1.Filter :=dialog_filter; //fits_file:=true; if opendialog1.execute then begin listview3.items.beginupdate; for i:=0 to OpenDialog1.Files.count-1 do {add} begin listview_add(listview3,OpenDialog1.Files[i],true,F_nr); end; listview3.items.endupdate; end; end; function median_background(var img :image_array;color,sizeX,sizeY,x,y:integer): double;{find median value of an area at position x,y with sizeX,sizeY} var i,j,count,size2,stepX,stepY : integer; value : double; pixArray : array of double; w,h : integer; begin if (sizeX div 2)*2=sizeX then sizeX:=sizeX+1;{requires odd 3,5,7....} if (sizeY div 2)*2=sizeY then sizeY:=sizeY+1;{requires odd 3,5,7....} size2:=sizeX*sizeY; SetLength(pixArray,size2) ; stepX:=sizeX div 2; stepY:=sizeY div 2; count:=0; w:=Length(img[0]); {width} h:=Length(img[0,0]); {height} begin for j:=y-stepY to y+stepY do for i:=x-stepX to x+stepX do begin if ((i>=0) and (i<w) and (j>=0) and (j<h) ) then {within the boundaries of the image array} begin value:=img[color,i ,j]; if value<>0 then {ignore zero} begin pixArray[count]:=value; inc(count); end; end; end; end; //sort QuickSort(pixArray, Low(pixArray), count-1 { normally 8 for 3*3 equals High(intArray)}) ; result:=pixArray[count div 2]; {for 3x3 matrix the median is 5th element equals in range 0..8 equals intArray[4]} pixArray:=nil; end; procedure artificial_flatV1(var img :image_array; box_size :integer); var fitsx,fitsy,i,j,col,step, colors,w,h :integer; offset : single; bg : double; img_temp2 : image_array; begin colors:=Length(img); {colors} w:=Length(img[0]); {width} h:=Length(img[0,0]); {height} {prepare img_temp2} setlength(img_temp2,colors,w,h); for col:=0 to colors-1 do {do all colours} for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do img_temp2[col,fitsX,fitsY]:=0; if (box_size div 2)*2=box_size then box_size:=box_size+1;{requires odd 3,5,7....} step:=box_size div 2; {for 3*3 it is 1, for 5*5 it is 2...} {create artificial flat} for col:=0 to colors-1 do {do all colours} begin bg:=mode(img_loaded,col,round(0.2*head.width),round(0.8*head.width),round(0.2*head.height),round(0.8*head.height),32000) -bg; {mode finds most common value for the 60% center } for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin img_temp2[col,fitsX,fitsY]:=0; if ((frac(fitsX/box_size)=0) and (frac(fitsy/box_size)=0)) then begin offset:=mode(img_loaded,col,fitsX-step,fitsX+step,fitsY-step,fitsY+step,32000) -bg; {mode finds most common value} if ((offset<0) {and (offset>-200)}) then begin for j:=fitsy-step to fitsy+step do for i:=fitsx-step to fitsx+step do if ((i>=0) and (i<w) and (j>=0) and (j<h) ) then {within the boundaries of the image array} img_temp2[col,i,j]:=-offset; end; end; end; end;{all colors} {smooth flat} gaussian_blur2(img_temp2,box_size*2); // img_loaded:=img_temp2; // exit; {apply artificial flat} for col:=0 to colors-1 do {do all colours} for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do img[col,fitsX,fitsY]:=img[col,fitsX,fitsY]+img_temp2[col,fitsX,fitsY]; img_temp2:=nil; end; procedure artificial_flatV2(var img :image_array; centrum_diameter:integer); var fitsx,fitsy,dist,col,centerX,centerY, colors,w,h,leng,angle,count,largest_distX,largest_distY :integer; offset,oldoffset : single; bg,sn,cs : double; median,test : array of double; begin colors:=Length(img); {colors} w:=Length(img[0]); {width} h:=Length(img[0,0]); {height} areax1:=startX; areay1:=startY; areax2:=stopX; areay2:=stopY; if pos('de',stackmenu1.center_position1.caption)>0 then {contains word default} begin centerX:=w div 2; centerY:=h div 2; end else begin centerX:=(areax1+areax2) div 2; centerY:=(areay1+areay2) div 2; end; centrum_diameter:=round(h*centrum_diameter/100);{transfer percentage to pixels} largest_distX:=max(centerX, w-centerX); largest_distY:=max(centerY, h-centerY); leng:=round(sqrt(sqr(largest_distX)+sqr(largest_distY))); setlength(median,leng+1); for col:=0 to colors-1 do {do all colours} begin get_background(col,img,true,false{do not calculate noise_level},bg,star_level); {should be about 500 for mosaic since that is the target value} oldoffset:=0; for dist:=leng downto 0 do begin if dist>centrum_diameter then begin{outside centrum} setlength(test,360*3); count:=0; for angle:=0 to (356*3)-1 do begin sincos(angle*pi/(180*3),sn,cs); fitsy:=round(sn*dist) + (centerY); fitsx:=round(cs*dist) + (centerX); if ((fitsX<w) and (fitsX>=0) and (fitsY<h) and (fitsY>=0)) then {within the image} begin //memo2_message(inttostr(angle)+' ' +floattostr(fitsX)+' '+floattostr(fitsY) ); offset:=img[col,fitsX,fitsY]-bg; if oldoffset<>0 then offset:=0.1*offset+0.9*oldoffset;{smoothing} oldoffset:=offset; test[count]:=img[col,fitsX,fitsY]-bg; inc(count,1); end; end; if count>5 then {at least five points} begin median[dist]:=smedian(test,count); end else median[dist]:=0; // memo2_message(#9+ floattostr(dist)+#9+ floattostr(median[dist]) +#9+ inttostr(count)); end {outside centrum} else median[dist]:=median[dist+1]; end; for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin dist:=round(sqrt(sqr(fitsX - (centerX))+sqr(fitsY - (centerY))));{distance from centre} if median[dist]<>0 then begin offset:=median[dist]; img[col,fitsX,fitsY]:=img[col,fitsX,fitsY]-offset; end; end; end;{all colors} test:=nil; median:=nil; end; procedure Tstackmenu1.apply_artificial_flat_correction1Click(Sender: TObject); var Save_Cursor : TCursor; box_size :integer; begin if head.naxis<>0 then begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; {store array in img_backup} try box_size:=strtoint(dark_areas_box_size1.text);except end; memo2_message('Equalising background of '+filename2); {equalize background} if sender<>apply_artificial_flat_correctionV2 then artificial_flatV1(img_loaded, box_size) else artificial_flatV2(img_loaded, strtoint(StringReplace(ring_equalise_factor1.text,'%','',[]))); plot_fits(mainwindow.image1,false,true);{plot real} Screen.Cursor:=crDefault; end; end; procedure apply_factors;{apply r,g,b factors to image} var fitsX, fitsY :integer; multiply_red,multiply_green,multiply_blue,add_valueR,add_valueG,add_valueB,largest,scaleR,scaleG,scaleB,dum :single; acceptzero :boolean; begin acceptzero:=stackmenu1.ignorezero1.checked=false; {do factor math behind so "subtract view from file" works in correct direction} add_valueR:=strtofloat2(stackmenu1.add_valueR1.Text); add_valueG:=strtofloat2(stackmenu1.add_valueG1.Text); add_valueB:=strtofloat2(stackmenu1.add_valueB1.Text); multiply_red:=strtofloat2(stackmenu1.multiply_red1.Text); multiply_green:=strtofloat2(stackmenu1.multiply_green1.Text); multiply_blue:=strtofloat2(stackmenu1.multiply_blue1.Text); {prevent clamping to 65535} scaleR:=(65535+add_valueR)*multiply_red/65535;{range 0..1, if above 1 then final value could be above 65535} scaleG:=(65535+add_valueG)*multiply_green/65535; scaleB:=(65535+add_valueB)*multiply_blue/65535; largest:=scaleR; if scaleG>largest then largest:=scaleG; if scaleB>largest then largest:=scaleB; if largest=0 then largest:=1; {prevent division by zero} {use largest to scale to maximum 65535} if ((multiply_red<>1) or (multiply_green<>1) or (multiply_blue<>1) or (add_valueR<>0) or (add_valueG<>0)or (add_valueB<>0)) then begin for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin dum:=img_loaded[0,fitsX,fitsY]; if ((acceptzero) or (dum>0)) then {signal} begin dum:=(dum+add_valueR)*multiply_red/largest; if dum<0 then dum:=0; img_loaded[0,fitsX,fitsY]:=dum; end; if head.naxis3>1 then {colour} begin dum:=img_loaded[1,fitsX,fitsY]; if ((acceptzero) or (dum>0)) then {signal} begin dum:=(dum+add_valueG)*multiply_green/largest; if dum<0 then dum:=0; img_loaded[1,fitsX,fitsY]:=dum; end; end; if head.naxis3>2 then {colour} begin dum:=img_loaded[2,fitsX,fitsY]; if ((acceptzero) or (dum>0)) then {signal} begin dum:=(dum+add_valueB)*multiply_blue/largest; if dum<0 then dum:=0; img_loaded[2,fitsX,fitsY]:=dum; end; end; end; end; end; procedure Tstackmenu1.apply_factor1Click(Sender: TObject); begin if head.naxis<>0 then begin backup_img; {move viewer data to img_backup} Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } apply_factors; use_histogram(img_loaded,true); plot_fits(mainwindow.image1,false,true);{plot real} Screen.Cursor:=crDefault; end; end; procedure Tstackmenu1.apply_file1Click(Sender: TObject); var fitsX, fitsY, col : integer; flat_norm_value,flat_factor : single; idx,old_naxis3 : integer; begin if head.naxis<>0 then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; {move viewer data to img_backup} old_naxis3:=head.naxis3; idx:=add_substract1.itemindex; {add, multiply image} if length(image_to_add1.Caption)>3 then {file name available} begin if load_fits(image_to_add1.Caption,false {dark/flat},true {load data},true {update memo},0,head,img_temp) then {succes load} begin if ((idx=5) or (idx=6)) then {apply file as flat or multiply} begin flat_norm_value:=0; for fitsY:=-14 to 15 do {do even times, 30x30} for fitsX:=-14 to 15 do flat_norm_value:=flat_norm_value+img_temp[0,fitsX+(head.width div 2),fitsY +(head.height div 2)]; flat_norm_value:=round(flat_norm_value/(30*30)); for fitsY:=1 to head.height do for fitsX:=1 to head.width do begin for col:=0 to old_naxis3-1 do {do all colors. Viewer colours are stored in old_naxis3 by backup} begin if idx=5 then {as flat=divide} begin flat_factor:=flat_norm_value/(img_temp[min(col,head.naxis3-1),fitsX-1,fitsY-1]+0.0001); {This works both for color and mono flats. Bias should be combined in flat} end else begin {multiply} flat_factor:=img_temp[min(col,head.naxis3-1),fitsX-1,fitsY-1]/flat_norm_value; {This works both for color and mono flats. Bias should be combined in flat} end; img_loaded[col,fitsX-1,fitsY-1]:=img_loaded[col,fitsX-1,fitsY-1]*flat_factor ; end; end; head.naxis3:=old_naxis3;{could be changed by load file} end {apply file as flat} else for col:=0 to head.naxis3-1 do {all colors} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin if idx=0 then {add} img_loaded[col,fitsX,fitsY]:=img_temp[col,fitsX,fitsY]+img_loaded[col,fitsX,fitsY] else if idx=1 then {viewer minus file} img_loaded[col,fitsX,fitsY]:=img_loaded[col,fitsX,fitsY]{viewer} - img_temp[col,fitsX,fitsY]{file} else if idx=2 then {viewer minus file +1000} img_loaded[col,fitsX,fitsY]:=img_loaded[col,fitsX,fitsY]{viewer} - img_temp[col,fitsX,fitsY]{file} +1000 else if idx=3 then {file minus viewer} img_loaded[col,fitsX,fitsY]:=img_temp[col,fitsX,fitsY]{file} - img_loaded[col,fitsX,fitsY]{viewer} else if idx=4 then {file minus viewer} img_loaded[col,fitsX,fitsY]:=img_temp[col,fitsX,fitsY]{file} - img_loaded[col,fitsX,fitsY]{viewer}+1000; end; end;{file loaded} end; img_temp:=nil; use_histogram(img_loaded,true); plot_fits(mainwindow.image1,false,true);{plot real} Screen.Cursor:=crDefault; end; end; procedure Tstackmenu1.undo_button2Click(Sender: TObject); begin if mainwindow.Undo1.enabled then restore_img; end; procedure Tstackmenu1.UpDown1Click(Sender: TObject; Button: TUDBtnType); begin auto_background1.Checked:=false; end; procedure Tstackmenu1.apply_dpp_button1Click(Sender: TObject); var Save_Cursor : TCursor; fitsx,fitsy,col : integer; a_factor,k_factor,bf,min,colr : single; bg : double; begin if head.naxis<>0 then begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } mainwindow.stretch1.Text:='off';{switch off gamma} a_factor:=strtofloat2(edit_a1.Text); k_factor:=strtofloat2(edit_k1.Text); backup_img; {store array in img_backup} {find background} if auto_background1.Checked then begin get_background(0,img_loaded,true,false{do not calculate noise_level},bg,star_level); min:=bg*0.9; edit_background1.Text:=floattostrf(min,ffgeneral, 4, 1); //floattostr6(min); for col:=0 to head.naxis3-1 do {all colors} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_loaded[col,fitsX,fitsY]:=img_loaded[col,fitsX,fitsY]-min; {subtract background} end else min:=strtofloat2(edit_background1.Text); if ddp_filter2.Checked then gaussian_blur2(img_loaded,strtofloat2(Edit_gaussian_blur1.text)); for col:=0 to head.naxis3-1 do {all colors} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin bf:=(img_loaded[0,fitsX,fitsY] +a_factor); if bf<0.00001 then colr:=0 else begin colr:= k_factor*a_factor*(img_backup[index_backup].img[col,fitsX,fitsY]-min)/bf ; if colr>65535 then colr:=65535; if colr<0 then colr:=0; end; img_loaded[col,fitsX,fitsY]:=colr; end; apply_dpp_button1.Enabled:=false; use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,true,true);{plot real} Screen.Cursor:=crDefault; end; end; procedure apply_most_common(sourc,dest: image_array; radius: integer); {apply most common filter on first array and place result in second array} var fitsX,fitsY,i,j,k,x,y,x2,y2,diameter,most_common,colors3,height3,width3 : integer; begin diameter:=radius*2; colors3:=length(sourc);{nr colours} height3:=length(sourc[0,0]);{height} width3:=length(sourc[0]);{width} for k:=0 to colors3-1 do {do all colors} begin for fitsY:=0 to round((height3-1)/diameter) do for fitsX:=0 to round((width3-1)/diameter) do begin x:=fitsX*diameter; y:=fitsY*diameter; most_common:=mode(sourc,k,x-radius,x+radius-1,y-radius,y+radius-1,32000); for i:=-radius to +radius-1 do for j:=-radius to +radius-1 do begin x2:=x+i; y2:=y+j; if ((x2>=0) and (x2<width3) and (y2>=0) and (y2<height3)) then dest[k,x2,y2]:=most_common; end; end; end;{K} end; procedure Tstackmenu1.most_common_filter_tool1Click(Sender: TObject); var radius : integer; Save_Cursor : TCursor; begin if Length(img_loaded)=0 then begin memo2_message('Error, no image in viewer loaded!'); exit; end; Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; {move copy to backup_img} try radius:=strtoint(stackmenu1.most_common_filter_radius1.text);except end; apply_most_common(img_backup[index_backup].img,img_loaded,radius); {apply most common filter on first array and place result in second array} plot_fits(mainwindow.image1,false,true);{plot real} Screen.Cursor:=crDefault; update_equalise_background_step(equalise_background_step+1);{update menu} end; procedure Tstackmenu1.edit_background1Click(Sender: TObject); begin auto_background1.checked:=false; end; procedure Tstackmenu1.clear_selection3Click(Sender: TObject); begin listview4.Clear; end; procedure listview_rename_bak(tl : tlistview); var index : integer; begin index:=tl.Items.Count-1; while index>=0 do begin if tl.Items[index].Selected then begin filename2:=tl.items[index].caption; deletefile(changeFileExt(filename2,'.bak'));{delete *.bak left over from astrometric solution} if RenameFile(filename2,ChangeFileExt(filename2,'.bak')) then tl.Items.Delete(Index); end; dec(index); {go to next file} end; end; procedure listview_update_keyword(tl : tlistview; keyw,value :string );{update key word of multiple files} var index,counter,error2: integer; waarde : double; filename_old : string; success : boolean; begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } index:=0; esc_pressed:=false; counter:=tl.Items.Count; while index<counter do begin if tl.Items[index].Selected then begin filename2:=tl.items[index].caption; filename_old:=filename2; if load_image(false,false {plot}) then {load} begin while length(keyw)<8 do keyw:=keyw+' ';{increase length to 8} keyw:=copy(keyw,1,8);{decrease if longer then 8} if uppercase(value)='DELETE' then remove_key(keyw, true {all}){remove key word in header. If all=true then remove multiple of the same keyword} else begin val(value,waarde,error2); {test for number or text} if error2<>0 then {text, not a number} begin while length(value)<8 do value:=value+' ';{increase length to minimum 8, one space will be added in front later. See FITS standard 4.2.1.1 Single-record string keywords} update_text(keyw+'=',#39+value+#39);//spaces will be added later end else update_float (keyw+'=',' / ' ,waarde); {update listview} if keyw='OBJECT ' then if tl=stackmenu1.listview1 then tl.Items.item[index].subitems.Strings[L_object]:=value; if keyw='FILTER ' then begin if tl=stackmenu1.listview1 then tl.Items.item[index].subitems.Strings[L_filter]:=value;{light} if tl=stackmenu1.listview3 then tl.Items.item[index].subitems.Strings[F_filter]:=value;{flat} end; end; if fits_file_name(filename_old) then success:=savefits_update_header(filename2) else if tiff_file_name(filename_old) then success:=save_tiff16_secure(img_loaded,filename2){guarantee no file is lost} else begin filename2:=changefileExt(filename_old,'.fits');//xisf and raw files tl.items[index].caption:=filename2; {converted cr2 or other format when loaded. Update list with correct filename} success:=save_fits(img_loaded,filename2,nrbits,true); //save as fits file end; if success=false then begin ShowMessage('Write error !!' + filename2);break;end; tl.ItemIndex := index;{mark where we are. Important set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} tl.Items[index].MakeVisible(False);{scroll to selected item} application.processmessages; if esc_pressed then break; end else beep;{image not found} end; inc(index); {go to next file} end; Screen.Cursor:=crDefault; end; procedure Tstackmenu1.renametobak1Click(Sender: TObject); begin if sender=renametobak1 then listview_rename_bak(listview1);{from popupmenu} if sender=renametobak2 then listview_rename_bak(listview2);{from popupmenu} if sender=renametobak3 then listview_rename_bak(listview3);{from popupmenu} if sender=renametobak4 then listview_rename_bak(listview4);{from popupmenu} if sender=renametobak5 then listview_rename_bak(listview5);{from popupmenu} if sender=renametobak6 then listview_rename_bak(listview6);{from popupmenu blink} if sender=renametobak7 then listview_rename_bak(listview7);{from popupmenu photometry} if sender=renametobak8 then listview_rename_bak(listview8);{from popupmenu inspector} if sender=renametobak9 then listview_rename_bak(listview9);{from popupmenu mount analyse} end; procedure Tstackmenu1.clear_selection2Click(Sender: TObject); begin listview3.Clear end; procedure Tstackmenu1.file_to_add1Click(Sender: TObject); begin OpenDialog1.Title:= 'Select image'; OpenDialog1.Options:= [ofFileMustExist,ofHideReadOnly]; opendialog1.Filter:= 'FITS or TIFF files|*.fit;*.fits;*.FIT;*.FITS;*.fts;*.FTS;*.tif;*.tiff;*.TIF'; if opendialog1.execute then begin image_to_add1.caption:=OpenDialog1.Files[0]; end; end; procedure Tstackmenu1.FormResize(Sender: TObject); var newtop : integer; begin pagecontrol1.height:=classify_groupbox1.top;{make it High-DPI robust} newtop:=browse1.top + browse1.height+5;; listview1.top:=newtop; listview2.top:=newtop; listview3.top:=newtop; listview4.top:=newtop; listview5.top:=newtop; listview6.top:=newtop; listview7.top:=newtop; listview8.top:=newtop; memo2.top:=classify_groupbox1.top+ classify_groupbox1.height+4;{make it High-DPI robust} memo2.height:=stackmenu1.Height-memo2.top;{make it High-DPI robust} end; procedure set_icon_stackbutton(col: boolean);//update glyph stack button to colour or gray var bmp : tbitmap; begin bmp := TBitmap.Create; if col then stackmenu1.ImageList2.GetBitmap(12, bmp){colour stack} else stackmenu1.ImageList2.GetBitmap(6, bmp);{gray stack} stackmenu1.stack_button1.glyph.assign(bmp); freeandnil(bmp); end; procedure Tstackmenu1.FormShow(Sender: TObject); begin edit_background1.Text:=''; stackmenu1.stack_method1Change(nil);{update several things including raw_box1.enabled:=((mosa=false) and filter_groupbox1.enabled} set_icon_stackbutton(classify_filter1.checked);//update glyph stack button stackmenu1.width_UpDown1.position:=round(head.width*strtofloat2(stackmenu1.resize_factor1.caption)); stackmenu1.listview1.columns.Items[l_centaz+1].caption:=centaz_key; {lv.items[l_sqm].caption:=sqm_key; doesn't work} stackmenu1.listview1.columns.Items[l_sqm+1].caption:=sqm_key; {lv.items[l_sqm].caption:=sqm_key; doesn't work} stackmenu1.flux_aperture1change(nil);{disable annulus_radius1 if mode max flux} hue_fuzziness1Change(nil);{show position} annotations_visible1.enabled:= mainwindow.annotations_visible1.checked; {latitude, longitude} stackmenu1.monitor_latitude1.Text:=lat_default; stackmenu1.monitor_longitude1.Text:=long_default; update_stackmenu; stackmenu1.pagecontrol1Change(Sender);//update stackbutton1.enabled end; procedure Tstackmenu1.undo_button_equalise_background1Click(Sender: TObject); begin if mainwindow.Undo1.enabled then begin if equalise_background_step=5 then begin {restart from step 1} if load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded) then{succes load} begin use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false,true);{plot real} update_equalise_background_step(0); {go to step 0} end; end else begin restore_img; end; end; end; procedure listview_unselect(tl :tlistview); var index: integer; begin tl.Items.BeginUpdate; for index:=0 to tl.Items.Count-1 do begin if tl.Items[index].Selected then tl.Items[index].Checked:=false; end; tl.Items.EndUpdate; end; procedure Tstackmenu1.unselect1Click(Sender: TObject); begin if sender=unselect1 then listview_unselect(listview1);{popupmenu} if sender=unselect2 then listview_unselect(listview2);{popupmenu} if sender=unselect3 then listview_unselect(listview3);{popupmenu} if sender=unselect4 then listview_unselect(listview4);{popupmenu} if sender=unselect6 then listview_unselect(listview6);{popupmenu blink} if sender=unselect7 then listview_unselect(listview7); if sender=unselect8 then listview_unselect(listview8);{inspector} if sender=unselect9 then listview_unselect(listview9);{inspector} end; procedure Tstackmenu1.unselect_area1Click(Sender: TObject); begin area_set1.caption:='⍻' end; procedure Tstackmenu1.apply_gaussian_blur_button1Click(Sender: TObject); begin if head.naxis=0 then exit; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; gaussian_blur2(img_loaded,strtofloat2(blur_factor1.text)); use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false,true);{plot} Screen.cursor:=crDefault; end; procedure Tstackmenu1.listview1ColumnClick(Sender: TObject; Column: TListColumn); begin SortedColumn:= Column.Index; end; function CompareAnything(const s1, s2: string): Integer; var a,b : double; s : string; error1:integer; begin s:=StringReplace(s1,',','.',[]); {replaces komma by dot} s:=trim(s); {remove spaces} val(s,a,error1); if error1=0 then begin s:=StringReplace(s2,',','.',[]); {replaces komma by dot} s:=trim(s); {remove spaces} val(s,b,error1); end; if error1=0 then {process as numerical values} begin if a>b then result:=+1 else if a<b then result:=-1 else result:=0; end else result:=CompareText(s1,s2);{compare as text} end; procedure Tstackmenu1.listview1Compare(Sender: TObject; Item1, Item2: TListItem; Data: Integer; var Compare: Integer); var tem : boolean; begin if SortedColumn = 0 then Compare := CompareText(Item1.Caption, Item2.Caption) else if SortedColumn <> 0 then Compare := CompareAnything(Item1.SubItems[SortedColumn-1], Item2.SubItems[SortedColumn-1]); if TListView(Sender).SortDirection = sdDescending then Compare := -Compare; end; procedure listview_view(tl : tlistview); {show image double clicked on} var index : integer; fitsX,fitsY: double; theext : string; begin for index:=0 to TL.Items.Count-1 do begin if TL.Items[index].Selected then begin filename2:=TL.items[index].caption; theext:=ExtractFileExt(filename2); if theext='.y4m' then begin memo2_message('Can not run videos'); exit; end;{video} if theext='.wcs' then filename2:=changefileext(filename2,'.fit');{for tab mount} if theext='.wcss' then filename2:=changefileext(filename2,'.fits');{for tab mount} if load_image(mainwindow.image1.visible=false,true {plot}) {for the first image set the width and length of image1 correct} then begin if ((tl=stackmenu1.listview1) and (stackmenu1.use_manual_alignment1.checked)) then {manual alignment} show_shape_manual_alignment(index){show the marker on the reference star} else mainwindow.shape_manual_alignment1.visible:=false; if ((tl=stackmenu1.listview7) and (stackmenu1.annotate_mode1.itemindex>0)) then {show variable stars} begin application.processmessages; mainwindow.variable_star_annotation1Click(nil);//show variable star annotations end; end else beep;{image not found} exit;{done, can display only one image} end; end; end; procedure Tstackmenu1.listview1DblClick(Sender: TObject); begin listview_view(TListView(Sender)); if ((pagecontrol1.tabindex=8) {photometry} and (annotate_mode1.itemindex>0)) then mainwindow.variable_star_annotation1Click(nil);//plot variable stars and comp star annotations end; function date_obs_regional(thedate : string):string;{fits date but remote T and replace . by comma if that is the regional separator} begin result:=StringReplace(thedate,'T',' ',[]);{date/time} if formatSettings.decimalseparator<>'.' then result:=StringReplace(result,'.',formatSettings.decimalseparator,[]); {replaces dot by komma} end; procedure analyse_listview(lv :tlistview; light,full, refresh: boolean);{analyse list of FITS files} var c,counts,i,iterations, hfd_counter,tabnr : integer; backgr, hfd_median, hjd,sd, dummy,alt,az,ra_jnow,dec_jnow,ra_mount_jnow, dec_mount_jnow,ram,decm,rax,decx,adu_e : double; filename1 : string; Save_Cursor : TCursor; loaded, red,green,blue : boolean; img : image_array; nr_stars, hfd_outer_ring, median_11,median_21,median_31, median_12,median_22,median_32, median_13,median_23,median_33 : double; begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } esc_pressed:=false; if full=false then lv.Items.BeginUpdate;{stop updating to prevent flickering till finished} counts:=lv.items.count-1; red:=false; green:=false; blue:=false; loaded:=false; c:=0; {convert any non FITS file} while c<=counts {check all} do begin if lv.Items.item[c].checked then begin filename1:=lv.items[c].caption; if fits_tiff_file_name(filename1)=false {fits file name?} then {not fits or tiff file} begin memo2_message('Converting '+filename1+' to FITS file format'); Application.ProcessMessages; if esc_pressed then begin Screen.Cursor:=crDefault; { back to normal } exit; end; if convert_to_fits(filename1) {convert to fits} then lv.items[c].caption:=filename1 {change listview name to FITS.} else begin {failure} lv.Items.item[c].checked:=false; lv.Items.item[c].subitems.Strings[L_result]:='Conv failure!'; end; end; end;{checked} inc(c); end; if lv.name=stackmenu1.listview2.name then tabnr:=2 {dark tab} else if lv.name=stackmenu1.listview3.name then tabnr:=3 {flat tab} else if lv.name=stackmenu1.listview4.name then tabnr:=4 {dark-flat tab} else if lv.name=stackmenu1.listview6.name then tabnr:=6 {blink tab} else if lv.name=stackmenu1.listview7.name then tabnr:=7 {photometry tab} else if lv.name=stackmenu1.listview8.name then tabnr:=8 {inspector tab} else if lv.name=stackmenu1.listview9.name then tabnr:=9 {mount analyse tab} else tabnr:=0; c:=0; repeat {check for double entries} i:=c+1; while i<=counts do begin if lv.items[i].caption=lv.items[c].caption then {double file name} begin memo2_message('Removed second entry of same file '+lv.items[i].caption); lv.Items.Delete(i); //dec(i); {compensate for delete} dec(counts); {compensate for delete} end else inc(i); end; inc(c); until c>counts; for c:=0 to lv.items.count-1 do begin if ((lv.Items.item[c].checked) and ((refresh) or (length(lv.Items.item[c].subitems.Strings[4])<=1){height}) or ((full) and (tabnr<=4 {darks, flat,flat-darks}) and (length(lv.Items.item[c].subitems.Strings[D_background])<=1)) ) then {column empthy, only update blank rows} begin progress_indicator(100*c/lv.items.count-1,' Analysing'); lv.Selected :=nil; {remove any selection} lv.ItemIndex := c;{mark where we are. Important set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} lv.Items[c].MakeVisible(False);{scroll to selected item} filename1:=lv.items[c].caption; Application.ProcessMessages; if esc_pressed then begin break;{leave loop}end; loaded:=load_fits(filename1,light {light or dark/flat},full {full fits},false {update memo},0,head_2,img); {for background or background+hfd+star} if loaded then begin {success loading header only} try begin if head_2.exposure>=10 then lv.Items.item[c].subitems.Strings[D_exposure]:=inttostr(round(head_2.exposure)) else lv.Items.item[c].subitems.Strings[D_exposure]:=floattostrf(head_2.exposure,ffgeneral, 6, 6); lv.Items.item[c].subitems.Strings[D_temperature]:=inttostr(head_2.set_temperature); lv.Items.item[c].subitems.Strings[D_binning]:=floattostrf(head_2.Xbinning,ffgeneral,0,0)+' x '+floattostrf(head_2.Ybinning,ffgeneral,0,0); {Binning CCD} lv.Items.item[c].subitems.Strings[D_width]:=inttostr(head_2.width); {image width} lv.Items.item[c].subitems.Strings[D_height]:=inttostr(head_2.height);{image height} lv.Items.item[c].subitems.Strings[D_type]:=imagetype;{image type} if light=false then begin if head_2.egain<>'' then lv.Items.item[c].subitems.Strings[D_gain]:=head_2.egain {e-/adu} else if head_2.gain<>'' then lv.Items.item[c].subitems.Strings[D_gain]:=head_2.gain; if ((full=true) and (tabnr in [2,3,4,7])) then {get background for dark, flats, flat-darks, photometry} begin {analyse background and noise} get_background(0,img,true {update_hist},false {calculate noise level}, {var} backgr,star_level); lv.Items.item[c].subitems.Strings[D_background]:=inttostr5(round(backgr)); if tabnr<=4 then begin //noise {analyse centre only. Suitable for flats and dark with amp glow} local_sd((head_2.width div 2)-50,(head_2.height div 2)-50, (head_2.width div 2)+50,(head_2.height div 2)+50{regio of interest},0,img, sd,dummy {mean},iterations);{calculate mean and standard deviation in a rectangle between point x1,y1, x2,y2} adu_e:=retrieve_ADU_to_e_unbinned(head_2.egain); //Factor for unbinned files. Result is zero when calculating in e- is not activated in the statusbar popup menu. Then in procedure HFD the SNR is calculated using ADU's only. lv.Items.item[c].subitems.Strings[D_sigma]:=noise_to_electrons(adu_e, head_2.Xbinning, sd);//reports noise in ADU's (adu_e=0) or electrons end; end; end; if tabnr=2 then {dark tab} begin lv.Items.item[c].subitems.Strings[D_date]:=copy(head_2.date_obs,1,10); date_to_jd(head_2.date_obs,head_2.exposure);{convert head_2.date_obs string and head_2.exposure time to global variables jd_start (julian day start head_2.exposure) and jd_mid (julian day middle of the head_2.exposure)} lv.Items.item[c].subitems.Strings[D_jd]:=floattostrF(jd_start,ffFixed,0,1); {julian day, 1/10 day accuracy} end else if tabnr=3 then {flat tab} begin lv.Items.item[c].subitems.Strings[F_filter]:=head_2.filter_name; {filter name, without spaces} if AnsiCompareText(stackmenu1.red_filter1.text,head_2.filter_name)=0 then begin Lv.Items.item[c].SubitemImages[F_filter]:=0;red:=true; end else if AnsiCompareText(stackmenu1.red_filter2.text,head_2.filter_name)=0 then begin Lv.Items.item[c].SubitemImages[F_filter]:=0;red:=true; end else if AnsiCompareText(stackmenu1.green_filter1.text,head_2.filter_name)=0 then begin lv.Items.item[c].SubitemImages[F_filter]:=1; green:=true; end else if AnsiCompareText(stackmenu1.green_filter2.text,head_2.filter_name)=0 then begin lv.Items.item[c].SubitemImages[F_filter]:=1; green:=true; end else if AnsiCompareText(stackmenu1.blue_filter1.text,head_2.filter_name)=0 then begin lv.Items.item[c].SubitemImages[F_filter]:=2; blue:=true; end else if AnsiCompareText(stackmenu1.blue_filter2.text,head_2.filter_name)=0 then begin lv.Items.item[c].SubitemImages[F_filter]:=2; blue:=true; end else if AnsiCompareText(stackmenu1.luminance_filter1.text,head_2.filter_name)=0 then lv.Items.item[c].SubitemImages[F_filter]:=4 else if AnsiCompareText(stackmenu1.luminance_filter2.text,head_2.filter_name)=0 then lv.Items.item[c].SubitemImages[F_filter]:=4 else if head_2.naxis3=3 then lv.Items.item[c].SubitemImages[F_filter]:=3 else {RGB color} if head_2.filter_name<>'' then lv.Items.item[c].SubitemImages[F_filter]:=7 {question mark} else lv.Items.item[c].SubitemImages[F_filter]:=-1;{blank} {$ifdef darwin} {MacOS, fix missing icons by coloured unicode. Place in column "type" to avoid problems with textual filter selection} if red then Lv.Items.item[c].subitems.Strings[D_type]:='🔴' +Lv.Items.item[c].subitems.Strings[D_type] else if green then Lv.Items.item[c].subitems.Strings[D_type]:='🟢' +Lv.Items.item[c].subitems.Strings[D_type] else if blue then Lv.Items.item[c].subitems.Strings[D_type]:='🔵' +Lv.Items.item[c].subitems.Strings[D_type]; {$endif} lv.Items.item[c].subitems.Strings[D_date]:=copy(head_2.date_obs,1,10); date_to_jd(head_2.date_obs,head_2.exposure);{convert head_2.date_obs string and head_2.exposure time to global variables jd_start (julian day start head_2.exposure) and jd_mid (julian day middle of the head_2.exposure)} lv.Items.item[c].subitems.Strings[F_jd]:=floattostrF(jd_start,ffFixed,0,1); {julian day, 1/10 day accuracy} lv.Items.item[c].subitems.Strings[F_calibration]:=head_2.calstat; end else if tabnr=4 then {flat darks tab} begin lv.Items.item[c].subitems.Strings[D_date]:=copy(head_2.date_obs,1,10); end else if tabnr=6 then {blink tab} begin lv.Items.item[c].subitems.Strings[B_date]:=StringReplace(copy(head_2.date_obs,1,19),'T',' ',[]);{date/time for blink. Remove fractions of seconds} lv.Items.item[c].subitems.Strings[B_calibration]:=head_2.calstat; {calibration head_2.calstat info DFB} if annotated then lv.Items.item[c].subitems.Strings[B_annotated ]:='✓' else lv.Items.item[c].subitems.Strings[B_annotated ]:=''; end else if tabnr=7 then {photometry tab} begin lv.Items.item[c].subitems.Strings[P_date]:=StringReplace(copy(head_2.date_obs,1,19),'T',' ',[]);{date/time for blink. Remove fractions of seconds} lv.Items.item[c].subitems.Strings[P_filter]:=head_2.filter_name; date_to_jd(head_2.date_obs,head_2.exposure);{convert head_2.date_obs string and head_2.exposure time to global variables jd_start (julian day start head_2.exposure) and jd_mid (julian day middle of the head_2.exposure)} lv.Items.item[c].subitems.Strings[P_jd_mid]:=floattostrF(jd_mid,ffFixed,0,5);{julian day} hjd:=JD_to_HJD(jd_mid,head_2.ra0,head_2.dec0);{conversion JD to HJD} lv.Items.item[c].subitems.Strings[P_jd_helio]:=floattostrF(Hjd,ffFixed,0,5);{helio julian day} calculate_az_alt(0 {try to use header values} ,head_2,{out}az,alt); {try to get a value for alt} if ((centalt='') and (alt<>0)) then centalt:=floattostrf(alt,ffGeneral, 3, 1); {altitude} lv.Items.item[c].subitems.Strings[P_centalt]:=centalt; {altitude} if alt<>0 then lv.Items.item[c].subitems.Strings[P_airmass]:=floattostrf(AirMass_calc(alt),ffFixed, 0,3); {airmass} {magn is column 9 will be added separately} {solution is column 12 will be added separately} if head_2.calstat<>'' then lv.Items.item[c].subitems.Strings[P_calibration]:=head_2.calstat else lv.Items.item[c].subitems.Strings[P_calibration]:='None'; {calibration head_2.calstat info DFB} if head_2.cd1_1=0 then lv.Items.item[c].subitems.Strings[P_astrometric]:='' else lv.Items.item[c].subitems.Strings[P_astrometric]:='✓'; if full {amode=3} then {listview7 photometry plus mode} begin analyse_image(img,head_2,10 {snr_min},false,hfd_counter,backgr, hfd_median); {find background, number of stars, median HFD} lv.Items.item[c].subitems.Strings[P_background]:=inttostr5(round(backgr)); lv.Items.item[c].subitems.Strings[P_hfd]:=floattostrF(hfd_median,ffFixed,0,1); lv.Items.item[c].subitems.Strings[P_stars]:=inttostr5(hfd_counter); {number of stars} end; end else if tabnr=8 then {listview8 inspector tab} begin lv.Items.item[c].subitems.Strings[I_date]:=StringReplace(copy(head_2.date_obs,1,19),'T',' ',[]);{date/time for blink. Remove fractions of seconds} lv.Items.item[c].subitems.Strings[I_focus_pos]:=inttostr(focus_pos); analyse_image_extended(img,head_2, nr_stars, hfd_median, hfd_outer_ring, median_11,median_21,median_31, median_12,median_22,median_32, median_13,median_23,median_33); {analyse several areas} if ((hfd_median>25) or (median_22>25) or (hfd_outer_ring>25) or (median_11>25) or (median_31>25) or (median_13>25) or (median_33>25)) then begin lv.Items.item[c].checked:=false; {uncheck} lv.Items.item[c].subitems.Strings[I_nr_stars]:='❌' ; end else lv.Items.item[c].subitems.Strings[I_nr_stars]:=floattostrF(nr_stars,ffFixed,0,0); lv.Items.item[c].subitems.Strings[I_nr_stars+2]:=floattostrF(hfd_median,ffFixed,0,3); lv.Items.item[c].subitems.Strings[I_nr_stars+3]:=floattostrF(median_22,ffFixed,0,3); lv.Items.item[c].subitems.Strings[I_nr_stars+4]:=floattostrF(hfd_outer_ring,ffFixed,0,3); lv.Items.item[c].subitems.Strings[I_nr_stars+5]:=floattostrF(median_11,ffFixed,0,3); lv.Items.item[c].subitems.Strings[I_nr_stars+6]:=floattostrF(median_21,ffFixed,0,3); lv.Items.item[c].subitems.Strings[I_nr_stars+7]:=floattostrF(median_31,ffFixed,0,3); lv.Items.item[c].subitems.Strings[I_nr_stars+8]:=floattostrF(median_12,ffFixed,0,3); lv.Items.item[c].subitems.Strings[I_nr_stars+9]:=floattostrF(median_32,ffFixed,0,3); lv.Items.item[c].subitems.Strings[I_nr_stars+10]:=floattostrF(median_13,ffFixed,0,3); lv.Items.item[c].subitems.Strings[I_nr_stars+11]:=floattostrF(median_23,ffFixed,0,3); lv.Items.item[c].subitems.Strings[I_nr_stars+12]:=floattostrF(median_33,ffFixed,0,3); end else if tabnr=9 then {mount analyse tab} begin lv.Items.item[c].subitems.Strings[M_date]:=date_obs_regional(head_2.date_obs); date_to_jd(head_2.date_obs,head_2.exposure);{convert head_2.date_obs string and head_2.exposure time to global variables jd_start (julian day start head_2.exposure) and jd_mid (julian day middle of the head_2.exposure)} //http://www.bbastrodesigns.com/coordErrors.html Gives same value within a fraction of arcsec. //2020-1-1, JD=2458850.50000, RA,DEC position 12:00:00, 40:00:00, precession +00:01:01.45, -00:06:40.8, Nutation -00:00:01.1, +00:00:06.6, Annual aberration +00:00:00.29, -00:00:14.3 //2020-1-1, JD=2458850.50000 RA,DEC position 06:00:00, 40:00:00, precession +00:01:23.92, -00:00:01.2, Nutation -00:00:01.38, -00:00:01.7, Annual aberration +00:00:01.79, +00:00:01.0 //2030-6-1, JD=2462654.50000 RA,DEC position 06:00:00, 40:00:00, precession +00:02:07.63, -00°00'02.8",Nutation +00:00:01.32, -0°00'02.5", Annual aberration -00:00:01.65, +00°00'01.10" //jd:=2458850.5000; //head_2.ra0:=pi; //head_2.dec0:=40*pi/180; //head_2.ra0:=41.054063*pi/180; //head_2.dec0:=49.22775*pi/180; //jd:=2462088.69; //head_2.ra0:=353.22987757000*pi/180; //head_2.dec0:=+52.27730247000*pi/180; //jd:=2452877.026888400; //head_2.ra0:=(14+34/60+16.4960283/3600)*pi/12; {sofa example} //head_2.dec0:=-(12+31/60+02.523786/3600)*pi/180; //jd:=2456385.46875; lv.Items.item[c].subitems.Strings[M_jd_mid]:=floattostrF(jd_mid,ffFixed,0,7);{julian day} if ra_mount<99 then {mount position known and specified} begin if stackmenu1.hours_and_minutes1.checked then begin lv.Items.item[c].subitems.Strings[M_ra_m]:=prepare_ra8(ra_mount,':'); {radialen to text, format 24: 00 00.00 } lv.Items.item[c].subitems.Strings[M_dec_m]:=prepare_dec2(dec_mount,':');{radialen to text, format 90d 00 00.1} end else begin lv.Items.item[c].subitems.Strings[M_ra_m]:=floattostrf(ra_mount*180/pi,ffFixed, 9, 6); lv.Items.item[c].subitems.Strings[M_dec_m]:=floattostrf(dec_mount*180/pi,ffFixed, 9, 6); end; if jd_mid>2400000 then {valid JD} begin ra_mount_jnow:=ra_mount; dec_mount_jnow:=dec_mount; J2000_to_apparent(jd_mid, ra_mount_jnow,dec_mount_jnow);{without refraction} lv.Items.item[c].subitems.Strings[M_ra_m_jnow]:=floattostrf(ra_mount_jnow*180/pi,ffFixed, 9, 6); lv.Items.item[c].subitems.Strings[M_dec_m_jnow]:=floattostrf(dec_mount_jnow*180/pi,ffFixed, 9, 6); end; end; if head_2.cd1_1<>0 then begin if stackmenu1.hours_and_minutes1.checked then begin lv.Items.item[c].subitems.Strings[M_ra]:=prepare_ra8(head_2.ra0,':'); {radialen to text, format 24: 00 00.00 } lv.Items.item[c].subitems.Strings[M_dec]:=prepare_dec2(head_2.dec0,':');{radialen to text, format 90d 00 00.1} end else begin lv.Items.item[c].subitems.Strings[M_ra]:=floattostrf(head_2.ra0*180/pi,ffFixed, 9, 6); lv.Items.item[c].subitems.Strings[M_dec]:=floattostrf(head_2.dec0*180/pi,ffFixed, 9, 6); end; if ra_mount<99 then {mount position known and specified} begin lv.Items.item[c].subitems.Strings[M_ra_e]:=floattostrf((head_2.ra0-ra_mount)*cos(head_2.dec0)*3600*180/pi,ffFixed, 6,1); lv.Items.item[c].subitems.Strings[M_dec_e]:=floattostrf((head_2.dec0-dec_mount)*3600*180/pi,ffFixed, 6,1); end else begin lv.Items.item[c].subitems.Strings[M_ra_e]:='?'; lv.Items.item[c].subitems.Strings[M_dec_e]:='?'; end; ra_jnow:=head_2.ra0;{J2000 apparent from image solution} dec_jnow:=head_2.dec0; if jd_mid>2400000 then {valid JD} begin J2000_to_apparent(jd_mid, ra_jnow,dec_jnow);{without refraction} // rax:=ra_jnow; // decx:=dec_jnow; // nutation_aberration_correction_equatorial_classic(jd_mid,ra_jnow,dec_jnow);{Input mean equinox. M&P page 208} // memo2_message(#9+filename2+#9+floattostr(jd_mid)+#9+floattostr((ra_jnow-rax)*180/pi)+#9+floattostr((dec_jnow-decx)*180/pi)); lv.Items.item[c].subitems.Strings[M_ra_jnow]:=floattostrf(ra_jnow*180/pi,ffFixed, 9, 6); lv.Items.item[c].subitems.Strings[M_dec_jnow]:=floattostrf(dec_jnow*180/pi,ffFixed, 9, 6); calculate_az_alt(2 {force accurate calculation from ra, dec},head_2,{out}az,alt); {call it with J2000 values. Precession will be applied in the routine} if alt<>0 then begin centalt:=floattostrf(alt,ffFixed, 9, 6); {altitude} centaz:=floattostrf(az,ffFixed, 9, 6); {azimuth} end; lv.Items.item[c].subitems.Strings[M_centalt]:=centalt; lv.Items.item[c].subitems.Strings[M_centaz]:=centaz; end; {calculate crota_jnow} coordinates_to_celestial(head_2.crpix1,head_2.crpix2+1, head_2, ram,decm); {fitsX, Y to ra,dec} {Step one pixel in Y} J2000_to_apparent(jd_mid,ram,decm);{without refraction} lv.Items.item[c].subitems.Strings[M_crota_jnow]:=floattostrf(arctan2( (ram-ra_jnow)*cos(dec_jnow),decm-dec_jnow)*180/pi,ffFixed, 7, 4); end; if focus_temp<>999 then Lv.Items.item[c].subitems.Strings[M_foctemp]:=floattostrF(focus_temp,ffFixed,0,1); Lv.Items.item[c].subitems.Strings[M_pressure]:=floattostrF(pressure,ffFixed,0,1); end; end; finally end; end else begin lv.Items.item[c].checked:=false; {can't analyse this one} memo2_message('Error reading '+filename1); end; end;{hfd unknown} end; if ((green) and (blue) and (stackmenu1.classify_flat_filter1.checked=false)) then memo2_message('■■■■■■■■■■■■■ Hint, colour filters detected in the flat. For colour stacking set the check-mark classify by Flat Filter! ■■■■■■■■■■■■■'); if full=false then lv.Items.EndUpdate;{can update now} progress_indicator(-100,'');{progresss done} img:= nil; Screen.Cursor:=crDefault;{back to normal } end; procedure average(mess:string; file_list : array of string; file_count:integer; var img2: image_array);{combine to average or mean, make also mono from three colors if color} var {this routine works with mono files but makes coloured files mono, so less suitable for commercial cameras producing coloured raw lights} c,fitsX, fitsY : integer; img_tmp1 :image_array; begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } {average} for c:=0 to file_count-1 do begin memo2_message('Adding '+mess+' image '+inttostr(c+1)+ ' to '+mess+' average. '+file_list[c]); {load image} Application.ProcessMessages; if ((esc_pressed) or (load_fits(file_list[c],false {light},true,true {update memo},0,head,img_tmp1)=false))then begin Screen.Cursor:=crDefault; exit;end; if c=0 then {init} begin setlength(img2,1,head.width,head.height);{set length of image array mono} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img2[0,fitsX,fitsY]:=0; {clear img} end; if head.naxis3=3 then {for the rare case the darks are coloured. Should normally be not the case since it expects raw mono FITS files without bayer matrix applied !!} begin {color average} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img2[0,fitsX,fitsY]:=img2[0,fitsX,fitsY]+(img_tmp1[0,fitsX,fitsY]+img_tmp1[1,fitsX,fitsY]+img_tmp1[2,fitsX,fitsY])/3;{fill with image} end else begin {mono average} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img2[0,fitsX,fitsY]:=img2[0,fitsX,fitsY]+img_tmp1[0,fitsX,fitsY];{fill with image} end; end;{open files} if file_count>1 then {not required for single/master files} For fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img2[0,fitsX,fitsY]:=img2[0,fitsX,fitsY]/file_count;{scale to one image} img_tmp1:=nil;{free mem} Screen.Cursor:=crDefault; { Always restore to normal } end; function average_flatdarks(exposure:double): integer; var c,file_count : integer; file_list : array of string; begin analyse_listview(stackmenu1.listview4,false {light},false {full fits},false{refesh});{update the flat-dark tab information. Convert to FITS if required} setlength(file_list,stackmenu1.listview4.items.count); file_count:=0; result:=0;{just in case no flat-dark are found} for c:=0 to stackmenu1.listview4.items.count-1 do if stackmenu1.listview4.items[c].checked=true then begin if ((exposure<0){disabled} or (abs(strtofloat(stackmenu1.listview4.Items.item[c].subitems.Strings[FD_exposure])-exposure)<0.01)) then begin file_list[file_count]:=stackmenu1.ListView4.items[c].caption; inc(file_count); end; end; if file_count<>0 then begin memo2_message('Averaging flat dark frames.'); average('flat-dark',file_list,file_count,img_bias);{only average} result:=head.width; {width of the flat-dark} end; head.flatdark_count:=file_count; file_list:=nil; end; procedure box_blur(colors,range: integer;var img: image_array);{combine values of pixels, ignore zeros} var fitsX,fitsY,k,x1,y1,col,w,h,i,j,counter,minimum,maximum : integer; img_temp2 : image_array; value, value2 : single; begin col:=length(img);{the real number of colours} h:=length(img[0,0]);{height} w:=length(img[0]);{width} if range=2 then begin minimum:=0 ; maximum:=+1; end {combine values of 4 pixels} else if range=3 then begin minimum:=-1; maximum:=+1; end {combine values of 9 pixels} else if range=4 then begin minimum:=-1; maximum:=+2; end {combine values of 16 pixels} else begin minimum:=-2; maximum:=+2; end; {combine values of 25 pixels} setlength(img_temp2,col,w,h);{set length of image array} for k:=0 to col-1 do begin for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin value:=0; counter:=0; for i:=minimum to maximum do for j:=minimum to maximum do begin x1:=fitsX+i; y1:=fitsY+j; if ((x1>=0) and (x1<=w-1) and (y1>=0) and (y1<=h-1)) then begin value2:=img[k,x1, y1]; if value2<>0 then begin value:=value+value2; inc(counter);end;{ignore zeros} end; end; if counter<>0 then img_temp2[k,fitsX,fitsY]:=value/counter else img_temp2[k,fitsX,fitsY]:=0; end; end;{k} if ((colors=1){request} and (col=3){actual}) then {rare, need to make mono, copy back to img} begin for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do for k:=0 to col-1 do img[0,fitsx,fitsy]:=(img_temp2[0,fitsx,fitsy]+img_temp2[1,fitsx,fitsy]+img_temp2[2,fitsx,fitsy])/3; end else img:=img_temp2;{move pointer array} head.naxis3:=colors;{the final result} img_temp2:=nil; end; procedure check_pattern_filter(var img: image_array); {normalize bayer pattern. Colour shifts due to not using a white light source for the flat frames are avoided.} var fitsX,fitsY,col,h,w,counter1,counter2, counter3,counter4 : integer; value1,value2,value3,value4,maxval : double; oddx, oddy :boolean; begin col:=length(img);{the real number of colours} h:=length(img[0,0]);{height} w:=length(img[0]);{width} if col>1 then begin memo2_message('Skipping normalise filter. This filter works only for raw OSC images!'); exit; end else memo2_message('Normalise raw OSC image by applying check pattern filter.'); value1:=0; value2:=0; value3:=0; value4:=0; counter1:=0; counter2:=0; counter3:=0; counter4:=0; for fitsY:=(h div 4) to (h*3) div 4 do {use one quarter of the image to find factors. Works also a little better if no dark-flat is subtracted. It also works better if boarder is black} for fitsX:=(w div 4) to (w*3) div 4 do begin oddX:=odd(fitsX); oddY:=odd(fitsY); if ((oddX=false) and (oddY=false)) then begin value1:=value1+img[0,fitsX,fitsY]; inc(counter1) end else {separate counters for case odd() dimensions are used} if ((oddX=true) and (oddY=false)) then begin value2:=value2+img[0,fitsX,fitsY]; inc(counter2) end else if ((oddX=false) and (oddY=true)) then begin value3:=value3+img[0,fitsX,fitsY]; inc(counter3) end else if ((oddX=true) and (oddY=true)) then begin value4:=value4+img[0,fitsX,fitsY]; inc(counter4) end; end; {now normalise the bayer pattern pixels} value1:=value1/counter1; value2:=value2/counter2; value3:=value3/counter3; value4:=value4/counter4; maxval:=max(max(value1,value2),max(value3,value4)); value1:=maxval/value1; value2:=maxval/value2; value3:=maxval/value3; value4:=maxval/value4; for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin oddX:=odd(fitsX); oddY:=odd(fitsY); if ((value1<>1) and (oddX=false) and (oddY=false)) then img[0,fitsX,fitsY]:=round(img[0,fitsX,fitsY]*value1) else if ((value2<>1) and (oddX=true) and (oddY=false)) then img[0,fitsX,fitsY]:=round(img[0,fitsX,fitsY]*value2) else if ((value3<>1) and (oddX=false) and (oddY=true)) then img[0,fitsX,fitsY]:=round(img[0,fitsX,fitsY]*value3) else if ((value4<>1) and (oddX=true) and (oddY=true)) then img[0,fitsX,fitsY]:=round(img[0,fitsX,fitsY]*value4); end; end; procedure black_spot_filterold(var img: image_array);{remove black spots with value zero} {execution time about 0.4 sec} var fitsX,fitsY,k,x1,y1,col,w,h,i,j,counter,range,left,right,bottom,top : integer; img_temp2 : image_array; value, value2 : single; black : boolean; begin col:=length(img);{the real number of colours} h:=length(img[0,0]);{height} w:=length(img[0]);{width} {find the black borders.} left:=-1; repeat inc(left); black:=( (img[0,left, h div 2]=0) or ((col>=1) and (img[1,left, h div 2]=0)) or ((col>=2) and (img[2,left, h div 2]=0))) until ((black=false) or (left>=w-1)); right:=w; repeat dec(right); black:=( (img[0,right, h div 2]=0) or ((col>=1) and (img[1,right, h div 2]=0)) or ((col>=2) and (img[2,right, h div 2]=0))) until ((black=false) or (right<=0)); bottom:=-1; repeat inc(bottom); black:=( (img[0,w div 2, bottom]=0) or ((col>=1) and (img[1,w div 2,bottom]=0)) or ((col>=2) and (img[2,w div 2,bottom]=0))) until ((black=false) or (bottom>=h-1)); top:=h; repeat dec(top); black:=( (img[0,w div 2,top]=0) or ((col>=1) and (img[1,w div 2,top]=0)) or ((col>=2) and (img[2,w div 2,top]=0))) until ((black=false) or (top<=0)); range:=1; setlength(img_temp2,col,w,h);{set length of image array} for k:=0 to col-1 do begin for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin value:=img[k,fitsX, fitsY]; if value<=0 then {black spot or or -99999 saturation marker} if ((fitsX>=left) and (fitsX<=right) and (fitsY>=bottom) and (fitsY<=top)) then {not the incomplete borders} begin range:=1; repeat counter:=0; for i:=-range to range do for j:=-range to range do begin if ((abs(i)=range) or (abs(j)=range)) then {square search range} begin x1:=fitsX+i; y1:=fitsY+j; if ((x1>=left) and (x1<=right) and (Y1>=bottom) and (y1<=top)) then {not the incomplete borders} begin value2:=img[k,x1, y1]; if value2>0 then begin value:=value+value2; inc(counter);end;{ignore zeros or -99999 saturation markers} end; end; end; if counter<>0 then value:=value/counter else inc(range); until ((counter<>0) or (range>=100));{try till 100 pixels away} end; img_temp2[k,fitsX,fitsY]:=value; end; end;{k} img:=img_temp2;{move pointer array} img_temp2:=nil; end; procedure black_spot_filter(var img: image_array);{remove black spots with value zero} {execution time about 0.4 sec} var fitsX,fitsY,k,x1,y1,col,w,h,i,j,counter,range,left,right,bottom,top : integer; img_temp2 : image_array; value, value2 : single; black : boolean; begin col:=length(img);{the real number of colours} h:=length(img[0,0]);{height} w:=length(img[0]);{width} range:=1; setlength(img_temp2,col,w,h);{set length of image array} for k:=0 to col-1 do begin {find the black borders for each colour} left:=-1; repeat inc(left); black:=img[k,left, h div 2]=0; until ((black=false) or (left>=w-1)); right:=w; repeat dec(right); black:=img[k,right, h div 2]=0; until ((black=false) or (right<=0)); bottom:=-1; repeat inc(bottom); black:=img[k,w div 2, bottom]=0; until ((black=false) or (bottom>=h-1)); top:=h; repeat dec(top); black:=img[k,w div 2,top]=0; until ((black=false) or (top<=0)); for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin value:=img[k,fitsX, fitsY]; if value=0 then {black spot or saturation marker} if ((fitsX>=left) and (fitsX<=right) and (fitsY>=bottom) and (fitsY<=top)) then {not the incomplete borders} begin range:=1; repeat counter:=0; for i:=-range to range do for j:=-range to range do begin if ((abs(i)=range) or (abs(j)=range)) then {square search range} begin x1:=fitsX+i; y1:=fitsY+j; if ((x1>=left) and (x1<=right) and (Y1>=bottom) and (y1<=top)) then {not the incomplete borders} begin value2:=img[k,x1, y1]; if value2<>0 then {ignore zeros due to black spot or saturation} begin value:=value+value2; inc(counter); end; end; end; end; if counter<>0 then value:=value/counter else inc(range); until ((counter<>0) or (range>=100));{try till 100 pixels away} end; img_temp2[k,fitsX,fitsY]:=value; end; end;{k} img:=img_temp2;{move pointer array} img_temp2:=nil; end; procedure Tstackmenu1.analyseflatsButton3Click(Sender: TObject); begin analyse_listview(listview3,false {light},true {full fits, include background and noise},new_analyse_required3{refresh}); new_analyse_required3:=false;{analyse done} end; procedure Tstackmenu1.analyseflatdarksButton1Click(Sender: TObject); begin analyse_listview(listview4,false {light},true {full fits, include background and noise},false{refresh}); end; procedure Tstackmenu1.changekeyword1Click(Sender: TObject); var keyw,value :string; lv: tlistview; begin if sender=changekeyword1 then begin lv:=listview1;{from popup menu} new_analyse_required:=true;end; if sender=changekeyword2 then lv:=listview2;{from popup menu} if sender=changekeyword3 then begin lv:=listview3;{from popup menu} new_analyse_required3:=true;{tab 3 flats}end; if sender=changekeyword4 then lv:=listview4;{from popup menu} if sender=changekeyword6 then lv:=listview6;{from popup menu} if sender=changekeyword7 then lv:=listview7;{from popup menu} if sender=changekeyword8 then lv:=listview8;{from popup menu} if sender=changekeyword9 then lv:=listview9;{from popup menu} keyw:=InputBox('All selected files will be updated!! Hit cancel to abort. Type keyword:','','' ); if length(keyw)<2 then exit; value:=InputBox('New value header keyword (Type DELETE to remove keyword):','','' ); if length(value)<=0 then exit; listview_update_keyword(lv,uppercase(keyw),value);{update key word} end; procedure Tstackmenu1.dark_spot_filter1Click(Sender: TObject); var Save_Cursor : TCursor; fitsx,fitsy,i,j,k,x2,y2,radius,most_common,progress_value : integer; neg_noise_level,bg : double; begin if head.naxis<>0 then begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } get_background(0,img_loaded,true,false{do not calculate noise_level}, {var} bg,star_level); {should be about 500 for mosaic since that is the target value} backup_img; {store array in img_backup} {equalize background} radius:=50; for k:=0 to head.naxis3-1 do {do all colors} begin for fitsY:=0 to (head.height-1) {div 5} do begin if frac(fitsY/100)=0 then begin Application.ProcessMessages; if esc_pressed then begin Screen.Cursor:=crDefault; { back to normal } exit; end; progress_value:=round(100*(fitsY)/(((k+1)/head.naxis3)*(head.height))); progress_indicator(progress_value,'');{report progress} end; for fitsX:=0 to (head.width-1) {div 5} do begin if ((frac(fitsx/10)=0) and (frac(fitsY/10)=0)) then begin most_common:=mode(img_backup[index_backup].img,k,fitsX-radius,fitsX+radius-1,fitsY-radius,fitsY+radius-1,32000); neg_noise_level:=get_negative_noise_level(img_backup[index_backup].img,k,fitsX-radius,fitsX+radius,fitsY-radius,fitsY+radius,most_common);{find the most common value of a local area and calculate negative noise level} for i:=-radius to +radius-1 do for j:=-radius to +radius-1 do begin x2:=fitsX+i; y2:=fitsY+j; if ((x2>=0) and (x2<head.width) and (y2>=0) and (y2<head.height)) then if img_loaded[k,x2,y2]<bg then {below global most common level} if img_loaded[k,x2,y2]<most_common-neg_noise_level then {local dark spot} img_loaded[k,x2,y2]:=most_common-neg_noise_level; end; end;{/3} end; end; end;{k color} plot_fits(mainwindow.image1,false,true);{plot real} progress_indicator(-100,'');{back to normal} Screen.Cursor:=crDefault; end; end; function value_sub_pixel(k2: integer;x1,y1:double):double; {calculate image pixel value on subpixel level} var x_trunc,y_trunc: integer; x_frac,y_frac : double; begin x_trunc:=trunc(x1); y_trunc:=trunc(y1); if ((x_trunc<0) or (x_trunc>(head.width-2)) or (y_trunc<0) or (y_trunc>(head.height-2))) then begin result:=0; exit;end; x_frac :=frac(x1); y_frac :=frac(y1); try result:= (img_loaded[k2,x_trunc ,y_trunc ]) * (1-x_frac)*(1-y_frac);{pixel left top, 1} result:=result + (img_loaded[k2,x_trunc+1,y_trunc ]) * ( x_frac)*(1-y_frac);{pixel right top, 2} result:=result + (img_loaded[k2,x_trunc ,y_trunc+1]) * (1-x_frac)*( y_frac);{pixel left bottom, 3} result:=result + (img_loaded[k2,x_trunc+1,y_trunc+1]) * ( x_frac)*( y_frac);{pixel right bottom, 4} except end; end; // Not used, makes HFD worse. //procedure add_sub_pixel_fractions(fitsX,fitsY: integer ; x1,y1:double); {add pixel values on subpixel level} //var // x_trunc,y_trunc,col: integer; // x_frac,y_frac,value : double; //begin // x_trunc:=trunc(x1); // y_trunc:=trunc(y1); // x_frac :=frac(x1); // y_frac :=frac(y1); // try // for col:=0 to head.naxis3-1 do {all colors} // begin {add the value in ration with pixel coverage} // value:=img_loaded[col,fitsX-1,fitsY-1]; {pixel value to spread out over 4 pixels} // img_average[col,x_trunc ,y_trunc ] :=img_average[col,x_trunc ,y_trunc ] + value * (1-x_frac)*(1-y_frac);{pixel left top, 1} // img_average[col,x_trunc+1,y_trunc ] :=img_average[col,x_trunc+1,y_trunc ] + value * ( x_frac)*(1-y_frac);{pixel right top, 2} // img_average[col,x_trunc ,y_trunc+1] :=img_average[col,x_trunc ,y_trunc+1] + value * (1-x_frac)*( y_frac);{pixel left bottom, 3} // img_average[col,x_trunc+1,y_trunc+1] :=img_average[col,x_trunc+1,y_trunc+1] + value * ( x_frac)*( y_frac);{pixel right bottom, 4} // end; // {keep record of the pixel part added} // img_temp[0,x_trunc ,y_trunc ] :=img_temp[0,x_trunc ,y_trunc ] + (1-x_frac)*(1-y_frac);{pixel left top, 1} // img_temp[0,x_trunc+1,y_trunc ] :=img_temp[0,x_trunc+1,y_trunc ] + ( x_frac)*(1-y_frac);{pixel right top, 2} // img_temp[0,x_trunc ,y_trunc+1] :=img_temp[0,x_trunc ,y_trunc+1] + (1-x_frac)*( y_frac);{pixel left bottom, 3} // img_temp[0,x_trunc+1,y_trunc+1] :=img_temp[0,x_trunc+1,y_trunc+1] + ( x_frac)*( y_frac);{pixel right bottom, 4} // except // end; //end; procedure resize_img_loaded(ratio :double); {resize img_loaded in free ratio} var img_temp2 : image_array; FitsX, fitsY,k,w,h,w2,h2 : integer; x,y : double; begin w2:=round(ratio*head.width); h2:=round(ratio*head.height); repeat w:=max(w2,round(head.width/2)); {reduce in steps of two maximum to preserve stars} h:=max(h2,round(head.height/2)); {reduce in steps of two maximum to preserve stars} setlength(img_temp2,head.naxis3,w,h);; for k:=0 to head.naxis3-1 do for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do begin X:=(fitsX*head.width/w); Y:=(fitsY*head.height/h); img_temp2[k,fitsX,fitsY]:=value_sub_pixel(k,x,y); end; img_loaded:=img_temp2; head.width:=w; head.height:=h; until ((w<=w2) and (h<=h2)); {continue till required size is reeached} img_temp2:=nil; update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); if head.cdelt1<>0 then begin head.cdelt1:=head.cdelt1/ratio; update_float ('CDELT1 =',' / X pixel size (deg) ' ,head.cdelt1);end; if head.cdelt2<>0 then begin head.cdelt2:=head.cdelt2/ratio; update_float ('CDELT2 =',' / Y pixel size (deg) ' ,head.cdelt2);end; if head.cd1_1<>0 then begin head.crpix1:=head.crpix1*ratio; update_float ('CRPIX1 =',' / X of reference pixel ' ,head.crpix1); head.crpix2:=head.crpix2*ratio; update_float ('CRPIX2 =',' / Y of reference pixel ' ,head.crpix2); head.cd1_1:=head.cd1_1/ratio; head.cd1_2:=head.cd1_2/ratio; head.cd2_1:=head.cd2_1/ratio; head.cd2_2:=head.cd2_2/ratio; update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ' ,head.cd2_2); end; head.XBINNING:=head.XBINNING/ratio; head.YBINNING:=head.YBINNING/ratio; update_float ('XBINNING=',' / Binning factor in width ' ,head.XBINNING); update_float ('YBINNING=',' / Binning factor in height ' ,head.YBINNING); if head.XPIXSZ<>0 then begin head.XPIXSZ:=head.XPIXSZ/ratio; head.YPIXSZ:=head.YPIXSZ/ratio; update_float('XPIXSZ =',' / Pixel width in microns (after stretching) ' ,head.XPIXSZ); update_float('YPIXSZ =',' / Pixel height in microns (after stretching) ' ,head.YPIXSZ); update_float('PIXSIZE1=',' / Pixel width in microns (after stretching) ' ,head.XPIXSZ); update_float('PIXSIZE2=',' / Pixel height in microns (after stretching) ' ,head.YPIXSZ); end; add_text ('HISTORY ','Image resized with factor '+ floattostr6(ratio)); end; procedure Tstackmenu1.free_resize_fits1Click(Sender: TObject);{free resize FITS image} begin if head.naxis=0 then exit; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; resize_img_loaded(width_UpDown1.position/head.width {ratio}); use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,true,true);{plot} Screen.cursor:=crDefault; end; procedure Tstackmenu1.copypath1Click(Sender: TObject); var index,counter :integer; begin with listview5 do begin index:=0; counter:=Items.Count; while index<counter do begin if Items[index].Selected then begin Clipboard.AsText:=extractfilepath(items[index].caption); end; inc(index); {go to next file} end; end;{with listview} end; procedure Tstackmenu1.help_pixel_math1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#pixel_math'); end; procedure Tstackmenu1.help_stack_menu2Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#stack_menu2'); end; procedure Tstackmenu1.help_stack_menu3Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#results'); end; procedure Tstackmenu1.listview1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=vk_delete then listview_removeselect(TListView(Sender)); end; procedure Tstackmenu1.sd_factor_blink1Change(Sender: TObject); begin esc_pressed:=true; {need to remake img_backup contents for star supression} end; procedure Tstackmenu1.solve1Click(Sender: TObject); begin if ((head.width<>100) or (head.height<>100)) then {is image loaded?, assigned(img_loaded) doesn't work for jpegs} mainwindow.astrometric_solve_image1Click(nil) else memo2_message('Abort solve, no image in the viewer.'); end; procedure Tstackmenu1.splitRGB1Click(Sender: TObject); var fitsx, fitsY : integer; filename1,memo2_text: string; begin if ((head.naxis=0) or (head.naxis3<>3)) then begin memo2_message('Not a three colour image!'); exit;end; memo2_text:=mainwindow.Memo1.Text;{save fits header first FITS file} filename1:=ChangeFileExt(FileName2,'.fit');{make it lowercase fit also if FTS or FIT} setlength(img_buffer,1,head.width,head.height);{create a new mono image} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_buffer[0,fitsX,fitsY]:=img_loaded[0,fitsX,fitsY]; filename2:=StringReplace(filename1,'.fit','_red.fit',[]);{give new file name } update_text ('FILTER =',#39+'Red '+#39+' / Filter name '); save_fits(img_buffer,filename2,-32,false);{fits header will be updated in save routine} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_buffer[0,fitsX,fitsY]:=img_loaded[1,fitsX,fitsY]; filename2:=StringReplace(filename1,'.fit','_green.fit',[]);{give new file name } update_text ('FILTER =',#39+'Green '+#39+' / Filter name '); save_fits(img_buffer,filename2,-32,false);{fits header will be updated in save routine} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_buffer[0,fitsX,fitsY]:=img_loaded[2,fitsX,fitsY]; filename2:=StringReplace(filename1,'.fit','_blue.fit',[]);{give new file name } update_text ('FILTER =',#39+'Blue '+#39+' / Filter name '); save_fits(img_buffer,filename2,-32,false);{fits header will be updated in save routine} img_buffer:=nil;{release memory} {restore old situation} mainwindow.Memo1.Text:= memo2_text;{restore fits header} filename2:=filename1; end; procedure Tstackmenu1.analysedarksButton2Click(Sender: TObject); begin analyse_listview(listview2,false {light},true {full fits, include background and SD},false{refresh}); {img_loaded array and memo1 will not be modified} end; procedure Tstackmenu1.resize_factor1Change(Sender: TObject); var factor: double; begin factor:=strtofloat2(resize_factor1.text); Edit_width1.text:=inttostr(round(head.width*factor)); end; procedure Tstackmenu1.Edit_width1Change(Sender: TObject); begin new_height1.caption:=inttostr(round(width_UpDown1.position*head.height/head.width)); end; procedure Tstackmenu1.flux_aperture1change(Sender: TObject); begin annulus_radius1.enabled:=flux_aperture1.itemindex<>0;{disable annulus_radius1 if mode max flux} {recalibrate} if flux_magn_offset<>0 then begin memo2_message('Flux calibration cleared. For magnitude measurements in viewer recalibrate by ctrl-U. See viewer tool menu. '); flux_magn_offset:=0; end; end; procedure Tstackmenu1.help_astrometric_solving1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#alignment_menu'); end; procedure Tstackmenu1.listview1CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); begin stackmenu1.nr_total1.caption:=inttostr(ListView1.items.count);{update counting info} end; procedure Tstackmenu1.listview1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin if stackmenu1.use_manual_alignment1.checked then begin if length(sender.Items.item[Item.Index].subitems.Strings[L_X])>1 then {manual position added, colour it} Sender.Canvas.Font.Color := clGreen else Sender.Canvas.Font.Color := clred; end else begin Sender.Canvas.Font.Color := clmenutext;{required for high contrast settings. Otherwise it is always black} end; {$ifdef mswindows} {$else} {unix} {temporary fix for CustomDraw not called} if Item.index=0 then stackmenu1.nr_total1.caption:=inttostr(sender.items.count);{update counting info} {$endif} end; procedure Tstackmenu1.listview2CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); begin stackmenu1.nr_total_darks1.caption:=inttostr(ListView2.items.count);{update counting info} end; procedure Tstackmenu1.listview2CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin {$ifdef mswindows} {$else} {unix} {temporary fix for CustomDraw not called} if Item.index=0 then stackmenu1.nr_total_flats1.caption:=inttostr(ListView2.items.count);{update counting info} {$endif} Sender.Canvas.Font.Color := clmenutext;{required for high contrast settings. Otherwise it is always black} end; procedure Tstackmenu1.listview3CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); begin stackmenu1.nr_total_flats1.caption:=inttostr(sender.items.count);{update counting info} end; procedure Tstackmenu1.listview3CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin {$ifdef mswindows} {$else} {unix} {temporary fix for CustomDraw not called} if Item.index=0 then stackmenu1.nr_total_flats1.caption:=inttostr(sender.items.count);{update counting info} {$endif} Sender.Canvas.Font.Color := clmenutext;{required for high contrast settings. Otherwise it is always black} end; procedure Tstackmenu1.listview4CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); begin stackmenu1.nr_total_bias1.caption:=inttostr(sender.items.count);{update counting info} end; procedure Tstackmenu1.listview4CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin {$ifdef mswindows} {$else} {unix} {temporary fix for CustomDraw not called} if Item.index=0 then stackmenu1.nr_total_bias1.caption:=inttostr(sender.items.count);{update counting info} {$endif} Sender.Canvas.Font.Color := clmenutext;{required for high contrast settings. Otherwise it is always black} end; procedure Tstackmenu1.listview6CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); begin stackmenu1.nr_total_blink1.caption:=inttostr(sender.items.count);{update counting info} end; procedure Tstackmenu1.listview6CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin {$ifdef mswindows} {$else} {unix} {temporary fix for CustomDraw not called} if Item.index=0 then stackmenu1.nr_total_blink1.caption:=inttostr(sender.items.count);{update counting info} {$endif} Sender.Canvas.Font.Color := clmenutext;{required for high contrast settings. Otherwise it is always black} end; procedure Tstackmenu1.test_pattern1Click(Sender: TObject); begin if head.naxis<>0 then mainwindow.demosaic_bayermatrix1Click(nil);{including back and wait cursor} end; function listview_find_selection(tl : tlistview) :integer;{find the row selected} var index,counter: integer; begin result:=0; index:=0; counter:=tl.Items.Count; while index<counter do begin if tl.Items[index].Selected then begin result:=index; break; end; inc(index); {go to next file} end; end; procedure Tstackmenu1.blink_button1Click(Sender: TObject); var Save_Cursor : TCursor; hfd_min : double; c, x_new,y_new,fitsX,fitsY,col,first_image,stepnr,nrrows, cycle,step,ps,bottom,top,left,w,h,max_stars: integer; reference_done, init{,solut},astro_solved,store_annotated,success,res : boolean; st : string; begin if listview6.items.count<=1 then exit; {no files} Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } save_settings2;{too many lost selected files . so first save settings} if listview6.Items.item[listview6.items.count-1].subitems.Strings[B_width]='' {width} then stackmenu1.analyseblink1Click(nil); hfd_min:=max(0.8 {two pixels},strtofloat2(stackmenu1.min_star_size_stacking1.caption){hfd});{to ignore hot pixels which are too small} max_stars:=strtoint2(stackmenu1.max_stars1.text);{maximum star to process, if so filter out brightest stars later} if max_stars=0 then max_stars:=500;{0 is auto for solving. No auto for stacking} mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.canvas.font.color:=$00B0FF ;{orange} esc_pressed:=false; first_image:=-1; cycle:=0; if sender=blink_button_contB1 then step:=-1 else step:=1;{forward/ backwards} nrrows:=listview6.items.count; setlength(bsolutions,nrrows);{for the solutions in memory. bsolutions is destroyed in formdestroy} stepnr:=0; if ((sender=blink_button1) or (solve_and_annotate1.checked) or (sender=write_video1) or (sender=nil){export aligned}) then init:=true {start at beginning for video} else init:=false;{start at selection} reference_done:=false;{ check if reference image is loaded. Could be after first image if abort was given} repeat stepnr:=stepnr+1; {first step is nr 1} if init=false then c:=listview_find_selection(listview6) {find the row selected} else begin if step>0 then c:=0 {forward} else c:=nrrows-1;{backwards} end; init:=true; repeat if ((esc_pressed=false) and (listview6.Items.item[c].checked) ) then begin if first_image=-1 then first_image:=c; listview6.Selected :=nil; {remove any selection} listview6.ItemIndex := c;{mark where we are. Important set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} listview6.Items[c].MakeVisible(False);{scroll to selected item} filename2:=listview6.items[c].caption; mainwindow.caption:=filename2; Application.ProcessMessages; if esc_pressed then break; {load image} if load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded)=false then begin esc_pressed:=true; break;end; use_histogram(img_loaded,true {update}); {plot histogram, set sliders} if first_image=c then inc(cycle); if cycle>=2 then stackmenu1.update_annotation1.checked:=false;{reset any request to update fits header annotations} if solve_and_annotate1.checked then begin astro_solved:=false;{assume failure} if head.cd1_1=0 then {get astrometric solution} begin listview6.Selected :=nil; {remove any selection} listview6.ItemIndex := c;{mark where we are. Important set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} listview6.Items[c].MakeVisible(False);{scroll to selected item} memo2_message(filename2+ ' Adding astrometric solution to files.'); if solve_image(img_loaded,head,true {get hist}) then begin{match between loaded image and star database} astro_solved:=true;{saving will be done later} memo2_message(filename2+ ' astrometric solved.'); end else memo2_message(filename2+ 'No astrometric solution found for this file.'); end; if head.cd1_1<>0 then begin if ((annotated=false) or (stackmenu1.update_annotation1.checked)) then begin plot_mpcorb(strtoint(maxcount_asteroid),strtofloat2(maxmag_asteroid),true {add annotations}); listview6.Items.item[c].subitems.Strings[B_annotated ]:='✓'; end; if ((astro_solved) or (stackmenu1.update_annotation1.checked)) then {save solution} begin if fits_file_name(filename2) then success:=savefits_update_header(filename2) else success:=save_tiff16_secure(img_loaded,filename2);{guarantee no file is lost} if success=false then begin ShowMessage('Write error !!' + filename2);Screen.Cursor:=crDefault; exit;end; end; end; end;{astrometric solve and annotate} {find align solution} if align_blink1.checked then begin st:=listview6.Items.item[c].subitems.Strings[B_solution]; if st='' then {no solution yet} begin if reference_done=false then {get reference} begin memo2_message('Working on star alignment solutions. Blink frequency will increase after completion.'); get_background(0,img_loaded,false {no histogram already done},true {unknown, calculate also datamax}, {var} cblack,star_level); find_stars(img_loaded,hfd_min,max_stars,starlist1);{find stars and put them in a list} find_quads(starlist1,0,quad_smallest,quad_star_distances1);{find quads for reference image} reset_solution_vectors(1);{no influence on the first image since reference} {store solutions in memory} bsolutions[c].solution_vectorX:=solution_vectorX; bsolutions[c].solution_vectorY:=solution_vectorY; listview6.Items.item[c].subitems.Strings[B_solution]:='✓ '+inttostr(c);{store location in listview for case list is sorted/modified} ListView6.Items.item[c].SubitemImages[B_solution]:=icon_king; {mark as best quality image} reference_done:=true; end else begin mainwindow.caption:=filename2+' Working on star solutions, be patient.'; get_background(0,img_loaded,false {no histogram already done} ,true {unknown, calculate also noise_level} , {var} cblack,star_level); find_stars(img_loaded,hfd_min,max_stars,starlist2);{find stars and put them in a list} find_quads(starlist2,0,quad_smallest,quad_star_distances2);{find star quads for new image} if find_offset_and_rotation(3,strtofloat2(stackmenu1.quad_tolerance1.text)) then {find difference between ref image and new image} begin bsolutions[c].solution_vectorX:=solution_vectorX; bsolutions[c].solution_vectorY:=solution_vectorY; listview6.Items.item[c].subitems.Strings[B_solution]:='✓ '+inttostr(c);{store location in listview for case list is sorted/modified} ListView6.Items.item[c].SubitemImages[B_solution]:=-1; {remove any older icon_king} memo2_message(inttostr(nr_references)+' of '+ inttostr(nr_references2)+' quads selected matching within '+stackmenu1.quad_tolerance1.text+' tolerance.' +' Solution x:='+floattostr6(solution_vectorX[0])+'*x+ '+floattostr6(solution_vectorX[1])+'*y+ '+floattostr6(solution_vectorX[2]) +', y:='+floattostr6(solution_vectorY[0])+'*x+ '+floattostr6(solution_vectorY[1])+'*y+ '+floattostr6(solution_vectorY[2]) ); end else begin memo2_message('Not enough quad matches <3 or inconsistent solution, skipping this image.'); reset_solution_vectors(1);{default for no solution} end; end; end {end find solution} else begin {reuse solution} ps:=strtoint(copy(st,4,10)); solution_vectorX:=bsolutions[ps].solution_vectorX; {restore solution} solution_vectorY:=bsolutions[ps].solution_vectorY; end; if ((head.naxis3=1) and (mainwindow.preview_demosaic1.checked)) then begin demosaic_advanced(img_loaded);{demosaic and set levels} end; setlength(img_temp,head.naxis3,0,0);{set to zero to clear old values (at the edges} setlength(img_temp,head.naxis3,head.width,head.height);{new size} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin x_new:=round(solution_vectorX[0]*(fitsx)+solution_vectorX[1]*(fitsY)+solution_vectorX[2]); {correction x:=aX+bY+c} y_new:=round(solution_vectorY[0]*(fitsx)+solution_vectorY[1]*(fitsY)+solution_vectorY[2]); {correction y:=aX+bY+c} if ((x_new>=0) and (x_new<=head.width-1) and (y_new>=0) and (y_new<=head.height-1)) then for col:=0 to head.naxis3-1 do {all colors} img_temp[col,x_new,y_new]:=img_loaded[col,fitsX,fitsY] ; end; img_loaded:=img_temp; end{star align} else {un-aligned blink} begin {nothing to do} end; left:=0; bottom:=0; if ((sender=write_video1) and (areax1<>areaX2)) then {cropped video} begin {crop video, convert array coordinates to screen coordinates} if mainwindow.flip_horizontal1.checked then left:=head.width-1-areaX2 {left} else left:=areaX1;{left} if mainwindow.flip_vertical1.checked then bottom:=head.height-1-areaY2 {bottom} else bottom:=areaY1;{bottom} end; if timestamp1.checked then begin if date_avg='' then annotation_to_array('date_obs: '+head.date_obs,false,65535,1{size},left+1,bottom+10,img_loaded) {head.date_obs to image array as font. Flicker free method} else annotation_to_array('date_avg: '+date_avg,false,65535,1{size},left+1,bottom+10,img_loaded);{head.date_obs to image array as font} end; store_annotated:=annotated;{store temporary annotated} annotated:=false;{prevent annotations are plotted in plot_fits} plot_fits(mainwindow.image1,false {re_center},true); annotated:=store_annotated;{restore anotated value} if ((annotated) and (mainwindow.annotations_visible1.checked)) then plot_annotations(true {use solution vectors!!!!},false); {corrected annotations in case a part of the lights are flipped in the alignment routien} if sender=write_video1 then {write video frame} begin w:=head.width; h:=head.height; top:=0; {left is already calculated} if areax1<>areaX2 then {crop active, convert array screen coordinates} begin if mainwindow.flip_vertical1.checked=false then top:=head.height-1-areaY2 {top} else top:=areaY1;{top} w:=areaX2-areaX1+1; h:=areaY2-areaY1+1 {convert to screen coordinates} end; if video_index=2 then res:=write_avi_frame(left,top,w,h) else res:=write_yuv4mpeg2_frame(head.naxis3>1,left,top,w,h); if res=false then begin memo2_message('Error writing video'); ; c:=999999; {stop} end; end; end; inc(c,step); until ((c>=nrrows) or (c<0)); until ((esc_pressed) or (sender=blink_button1 {single run}) or (sender=write_video1) or (sender=nil){export aligned}); img_temp:=nil;{free memory} Screen.Cursor:=crDefault;{back to normal } end; procedure Tstackmenu1.create_test_image_stars1Click(Sender: TObject); var i,j,m,n, stepsize,stepsize2, starcounter,subsampling : integer; sigma,hole_radius,donut_radius,hfd_diameter,shiftX,shiftY,flux,flux_star,diam,intensity : double; gradient,diagn_star : boolean; begin mainwindow.memo1.visible:=false;{stop visualising memo1 for speed. Will be activated in plot routine} mainwindow.memo1.clear;{clear memo for new header} reset_fits_global_variables(true,head); nrbits:=16; extend_type:=0; {no extensions in the file, 1 is ascii_table, 2 bintable} head.height:=1800;//1800; head.width:=head.height*3 div 2;{aspect ratio 3:2} Randomize; {initialise} head.datamin_org:=1000;{for case histogram is not called} head.datamax_org:=65535; cblack:=head.datamin_org;{for case histogram is not called} cwhite:=head.datamax_org; gradient:=stackmenu1.artificial_image_gradient1.checked; sigma:=strtofloat2(stackmenu1.hfd_simulation1.text)/2.5;{gaussian shaped star, sigma is HFD/2.5, in perfect world it should be /2.354 but sigma 1 will be measured with current alogorithm as 2.5} starcounter:=0; {star test image} head.naxis3:=1; {head.naxis3 number of colors} filename2:='star_test_image.fit'; for j:=0 to 10 do {create an header with fixed sequence} if (j<>5) then {skip head.naxis3 for mono images} mainwindow.memo1.lines.add(head1[j]); {add lines to empthy memo1} mainwindow.memo1.lines.add(head1[27]); {add end} update_integer('BITPIX =',' / Bits per entry ' ,nrbits); update_integer('NAXIS1 =',' / length of x axis ' ,head.width); update_integer('NAXIS2 =',' / length of y axis ' ,head.height); if head.naxis3=1 then remove_key('NAXIS3 ',false{all});{remove key word in header. Some program don't like naxis3=1} update_integer('DATAMIN =',' / Minimum data value ' ,0); update_integer('DATAMAX =',' / Maximum data value ' ,round(head.datamax_org)); add_text ('COMMENT 1',' Written by Astrometric Stacking Program. www.hnsky.org'); add_text ('COMMENT A',' Artificial image, background has value 1000 with sigma 100 Gaussian noise'); add_text ('COMMENT B',' Top rows contain hotpixels with value 65535'); add_text ('COMMENT C',' Rows below have Gaussian stars with a sigma of '+floattostr6(sigma)); add_text ('COMMENT D',' Which will be measured as HFD '+stackmenu1.hfd_simulation1.text); add_text ('COMMENT E',' Note that theoretical Gaussian stars with a sigma of 1 are'); add_text ('COMMENT F',' equivalent to a HFD of 2.354 if subsampled enough.'); add_text ('COMMENT ',' ,Star_nr, X, Y, Flux '); setlength(img_loaded,head.naxis3,head.width,head.height);{set length of image array} For i:=0 to head.height-1 do for j:=0 to head.width-1 do begin if gradient=false then img_loaded[0,j,i]:=randg(1000,100 {noise}){default background is 1000} else img_loaded[0,j,i]:=-500*sqrt( sqr((i-head.height/2)/head.height) +sqr((j-head.width/2)/head.height) ){circular gradient} + randg(1000,100 {noise}){default background is 100} end; stepsize:=round(sigma*3); if stepsize<8 then stepsize:=8;{minimum value} subsampling:=5; For i:=stepsize to head.height-1-stepsize do for j:=stepsize to head.width-1-stepsize do begin if ( (frac(i/100)=0) and (frac(j/100)=0) ) then {reduce star density if HFD increases} begin if i>head.height-300 then {hot pixels} img_loaded[0,j,i]:=65535 {hot pixel} else {create real stars} begin shiftX:=-0.5+random(1000)/1000; {result between -0.5 and +0.5} shiftY:=-0.5+random(1000)/1000; {result between -0.5 and +0.5} flux_star:=0; diagn_star:=false; inc(starcounter); intensity:=(65000/power(starcounter*2700*1800/(head.height*head.width),0.85));{Intensity} // if sigma*2.5<=5 then {gaussian stars} if donutstars1.Checked=false then {gaussian stars} begin stepsize2:=stepsize*subsampling; for m:=-stepsize2 to stepsize2 do for n:=-stepsize2 to stepsize2 do begin // flux:=(65000/power(starcounter,0.85)){Intensity}*(1/sqr(subsampling)* exp(-0.5/sqr(sigma)*(sqr(m/subsampling)+sqr(n/subsampling)))); flux:=Intensity*(1/sqr(subsampling*sigma){keep flux independent of HFD and subsmapling} * exp(-0.5*(sqr(m/subsampling)+sqr(n/subsampling))/sqr(sigma)) ); flux_star:=flux_star+flux; img_loaded[0,j+round(shiftX+n/subsampling),i+round(shiftY+m/subsampling)]:= img_loaded[0,j+round(shiftX+n/subsampling),i+round(shiftY+m/subsampling)]+flux ; {gaussian shaped stars} if frac(starcounter/20)=0 then begin img_loaded[0,180+starcounter+round(shiftX+n/subsampling),130+starcounter+round(shiftY+m/subsampling)]:=img_loaded[0,180+starcounter+round(shiftX+n/subsampling),130+starcounter+round(shiftY+m/subsampling)]+flux; {diagonal gaussian shaped stars} diagn_star:=true; end; end; end else begin {donut stars} for m:=-stepsize to stepsize do for n:=-stepsize to stepsize do begin hfd_diameter:=sigma*2.5; hole_radius:=trunc(hfd_diameter/3);{Half outer donut diameter} donut_radius:=sqrt(2*sqr(hfd_diameter/2)-sqr(hole_radius)); diam:=sqrt(n*n+m*m); if ((diam<=donut_radius) and ( diam>=hole_radius {hole})) then begin flux:=1000*sqr(j/head.width); flux_star:=flux_star+flux; img_loaded[0,j+n,i+m]:=img_loaded[0,j+n,i+m]+flux;{DONUT SHAPED stars} end; end; end; add_text('COMMENT ',' ,star'+inttostr(starcounter)+', '+floattostr4(j+shiftX+1)+', '+floattostr4(i+shiftY+1)+', '+floattostr4(flux_star) ); {add the star coordinates to the header} if diagn_star then add_text('COMMENT ',' ,star'+inttostr(starcounter)+'D, '+floattostr4(j+shiftX+1+180+starcounter)+', '+floattostr4(i+shiftY+1+130+starcounter)+', '+floattostr4(flux_star) ); {diagonal stars} end; end; end; update_menu(true);{file loaded, update menu for fits. Set fits_file:=true} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,true,true);{plot test image} end; procedure Tstackmenu1.clear_blink_alignment1Click(Sender: TObject); var c : integer; begin for c:=0 to listview6.items.count-1 do begin bsolutions:=nil; listview6.Items.item[c].subitems.Strings[B_solution]:='';{clear alignment marks} end; end; procedure Tstackmenu1.clear_blink_list1Click(Sender: TObject); begin esc_pressed:=true; {stop any running action} listview6.Clear; end; procedure Tstackmenu1.browse_dark1Click(Sender: TObject); var i: integer; begin OpenDialog1.Title := 'Select dark images'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.filename:=''; opendialog1.Filter :=dialog_filter; if opendialog1.execute then begin listview2.items.beginupdate; for i:=0 to OpenDialog1.Files.count-1 do {add} begin listview_add(listview2,OpenDialog1.Files[i],true,D_nr); end; listview2.items.endupdate; end; end; procedure Tstackmenu1.browse_inspector1Click(Sender: TObject); var i: integer; begin OpenDialog1.Title := 'Select images to add'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter :=dialog_filter; //fits_file:=true; if opendialog1.execute then begin listview8.items.beginupdate; for i:=0 to OpenDialog1.Files.count-1 do {add} begin listview_add(listview8,OpenDialog1.Files[i],true,L_nr); end; listview8.items.endupdate; end; end; procedure Tstackmenu1.browse_live_stacking1Click(Sender: TObject); var live_stack_directory : string; begin if SelectDirectory('Select directory containing the files to stack live', live_stacking_path1.caption , live_stack_directory) then begin live_stacking_path1.caption:=live_stack_directory;{show path} end; end; procedure Tstackmenu1.analyse_objects_visibles1Click(Sender: TObject); var Save_Cursor : TCursor; begin if ListView1.items.count=0 then begin memo2_message('Abort, No files in tab IMAGES.' ); exit;end;{no files in list, exit} Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } if listview1.selected=nil then ListView1.ItemIndex := 0;{show wich file is processed} filename2:=Listview1.selected.caption; if load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded)=false then begin memo2_message('Abort, can'+#39+'t load '+ filename2); Screen.Cursor:=crDefault; { back to normal } exit; end; if ((head.cd1_1=0) or (stackmenu1.ignore_header_solution1.checked)) then {no solution or ignore solution} begin memo2_message('Solving file: '+ filename2); if create_internal_solution(img_loaded,head)= false then begin memo2_message('Abort, can'+#39+'t solve '+ filename2); Screen.Cursor:=crDefault; { back to normal } exit; end; end; memo2_message('Annotating file: '+ filename2+ ' and extracting objects.'); plot_mpcorb(strtoint(maxcount_asteroid),strtofloat2(maxmag_asteroid),true {add annotations}); if annotated then begin mainwindow.annotations_visible1.checked:=true; plot_annotations(false {use solution vectors},true {fill combobox}); stackmenu1.ephemeris_centering1.itemindex:=stackmenu1.ephemeris_centering1.items.count-1;{show first found in the list} end else memo2_message('No object locations found in image. Modify limiting count and limiting magnitude in Asteroid & Comet annotation menu, CTRL+R'); memo2_message('Ready. Select the object to align on.'); Screen.Cursor:=crDefault; { back to normal } end; procedure Tstackmenu1.browse_photometry1Click(Sender: TObject); var i: integer; begin OpenDialog1.Title := 'Select images to add'; OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter :=dialog_filter; //fits_file:=true; if opendialog1.execute then begin listview7.items.beginupdate; for i:=0 to OpenDialog1.Files.count-1 do {add} listview_add(listview7,OpenDialog1.Files[i],true,P_nr); listview7.items.endupdate; end; end; procedure Tstackmenu1.aavso_button1Click(Sender: TObject); begin if form_aavso1=nil then form_aavso1:=Tform_aavso1.Create(self); {in project option not loaded automatic} form_aavso1.Show{Modal}; end; procedure Tstackmenu1.clear_mount_list1Click(Sender: TObject); begin esc_pressed:=true; {stop any running action} listview9.Clear; end; procedure Tstackmenu1.extract_green1Click(Sender: TObject); var c : integer; Save_Cursor : TCursor; fn,col,ff : string; begin case QuestionDlg (pchar('Raw colour separation'),pchar('This will extract the green, blue or red pixels from the (calibrated) raw files and write to result to new files. Select colour:'),mtCustom ,[20,'Red pixels', 21, 'Green pixels', 'IsDefault', 22, 'Blue pixels', 23, 'Cancel'],'') of 20: col:='TR'; 21: col:='TG'; 22: col:='TB'; else exit; end;{case} Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } esc_pressed:=false; if listview7.items.count>0 then begin for c:=0 to listview7.items.count-1 do if listview7.Items.item[c].checked then begin ff:=ListView7.items[c].caption; if fits_tiff_file_name(ff)=false then begin memo2_message('█ █ █ █ █ █ Can'+#39+'t extract. First analyse file list !! █ █ █ █ █ █'); beep; exit; end; fn:=extract_raw_colour_to_file(ff,col{'TG' or 'TB'},1,1); {extract green red or blue channel} if fn<>'' then begin ListView7.items[c].caption:=fn; end; {scroll} listview7.Selected :=nil; {remove any selection} listview7.ItemIndex := c;{mark where we are. Important set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} listview7.Items[c].MakeVisible(False);{scroll to selected item} application.processmessages; if esc_pressed then begin Screen.Cursor:=crDefault; exit; end; end; end; analyse_listview(listview7,true {light},false {full fits},true{refresh}); {refresh list} Screen.Cursor:=crDefault; { Always restore to normal } end; procedure Tstackmenu1.clear_inspector_list1Click(Sender: TObject); begin esc_pressed:=true; {stop any running action} listview8.Clear; end; procedure Tstackmenu1.copy_to_blink1Click(Sender: TObject); var index,counter: integer; begin index:=0; listview6.Items.beginUpdate; counter:=listview5.Items.Count; while index<counter do begin if listview5.Items[index].Selected then begin listview_add(listview6,listview5.items[index].caption,true,L_nr); end; inc(index); {go to next file} end; listview6.Items.endUpdate; end; procedure Tstackmenu1.copy_to_photometry1Click(Sender: TObject); var index,counter: integer; begin index:=0; listview7.Items.beginUpdate; counter:=listview5.Items.Count; while index<counter do begin if listview5.Items[index].Selected then begin listview_add(listview7,listview5.items[index].caption,true,L_nr); end; inc(index); {go to next file} end; listview7.Items.endUpdate; end; procedure Tstackmenu1.curve_fitting1Click(Sender: TObject); var p,a,b,posit, center,hfd : double; c,img_counter,i,fields : integer; array_hfd : array of tdouble2; var {################# initialised variables #########################} len: integer= 200; begin memo2_message('Finding the best focus position for each area using hyperbola curve fitting'); memo2_message('Positions are for an image with pixel position 1,1 at left bottom. Area 1,1 is bottom left, area 3,3 is top right. Center area is area 2,2'); memo2_message('Offset in focuser steps relative to center area (area 2,2).'); {do first or second time} analyse_listview(listview8,true{light},true{full fits},false{refresh}); setlength(array_hfd,len); if sender<>nil then fields:=11 else fields:=1; for i:=1 to fields do {do all hfd areas} begin img_counter:=0; with listview8 do for c:=0 to listview8.items.count-1 do begin if Items.item[c].checked then begin posit:=strtofloat2(Items.item[c].subitems.Strings[I_focus_pos]);{inefficient but simple code to convert string back to float} if posit>0 then begin hfd:=strtofloat(Items.item[c].subitems.Strings[I_focus_pos+i]); if hfd<15 then {valid data} begin array_hfd[img_counter,1]:=posit; array_hfd[img_counter,2]:=hfd; inc(img_counter); if img_counter>=len then begin len:=len+200; setlength(array_hfd,len); {adapt size} end; end; end else if i=1 then memo2_message('█ █ █ █ █ █ Error, no focus position in fits header! █ █ █ █ █ █ '); end; end; if img_counter>=4 then begin find_best_hyperbola_fit(array_hfd, img_counter, p,a,b); {input data[n,1]=position,data[n,2]=hfd, output: bestfocusposition=p, a, b of hyperbola} if i=1 then memo2_message('full image'+#9+ 'Focus='+floattostrf(p,ffFixed,0,0)+#9+'a='+floattostrf(a,ffFixed,0,5)+#9+' b='+floattostrf(b,ffFixed,9,5) +#9+'_____________' +#9+#9+'error='+floattostrf(lowest_error,ffFixed,0,5)+#9+' iteration cycles='+floattostrf(iteration_cycles,ffFixed,0,0)); if i=2 then begin memo2_message('center'+#9+ 'Focus='+floattostrf(p,ffFixed,0,0)+#9+'a='+floattostrf(a,ffFixed,0,5)+#9+' b='+floattostrf(b,ffFixed,9,5) +#9+'_____________' +#9+#9+'error='+floattostrf(lowest_error,ffFixed,0,5)+#9+' iteration cycles='+floattostrf(iteration_cycles,ffFixed,0,0));center:=p;end; if i=3 then memo2_message('outer ring'+#9+ 'Focus='+floattostrf(p,ffFixed,0,0)+#9+'a='+floattostrf(a,ffFixed,0,5)+#9+' b='+floattostrf(b,ffFixed,9,5) +#9+'offset='+floattostrf(p-center,ffFixed,0,0)+#9+#9+'error='+floattostrf(lowest_error,ffFixed,5,5)+#9+' iteration cycles='+floattostrf(iteration_cycles,ffFixed,0,0)); if i=4 then memo2_message('area 1,1'+#9+ 'Focus='+floattostrf(p,ffFixed,0,0)+#9+'a='+floattostrf(a,ffFixed,0,5)+#9+' b='+floattostrf(b,ffFixed,9,5) +#9+'offset='+floattostrf(p-center,ffFixed,0,0)+#9+#9+'error='+floattostrf(lowest_error,ffFixed,5,5)+#9+' iteration cycles='+floattostrf(iteration_cycles,ffFixed,0,0)); if i=5 then memo2_message('area 2,1'+#9+ 'Focus='+floattostrf(p,ffFixed,0,0)+#9+'a='+floattostrf(a,ffFixed,0,5)+#9+' b='+floattostrf(b,ffFixed,9,5) +#9+'offset='+floattostrf(p-center,ffFixed,0,0)+#9+#9+'error='+floattostrf(lowest_error,ffFixed,5,5)+#9+' iteration cycles='+floattostrf(iteration_cycles,ffFixed,0,0)); if i=6 then memo2_message('area 3,1'+#9+ 'Focus='+floattostrf(p,ffFixed,0,0)+#9+'a='+floattostrf(a,ffFixed,0,5)+#9+' b='+floattostrf(b,ffFixed,9,5) +#9+'offset='+floattostrf(p-center,ffFixed,0,0)+#9+#9+'error='+floattostrf(lowest_error,ffFixed,5,5)+#9+' iteration cycles='+floattostrf(iteration_cycles,ffFixed,0,0)); if i=7 then memo2_message('area 1,2'+#9+ 'Focus='+floattostrf(p,ffFixed,0,0)+#9+'a='+floattostrf(a,ffFixed,0,5)+#9+' b='+floattostrf(b,ffFixed,9,5) +#9+'offset='+floattostrf(p-center,ffFixed,0,0)+#9+#9+'error='+floattostrf(lowest_error,ffFixed,5,5)+#9+' iteration cycles='+floattostrf(iteration_cycles,ffFixed,0,0)); if i=8 then memo2_message('area 3,2'+#9+ 'Focus='+floattostrf(p,ffFixed,0,0)+#9+'a='+floattostrf(a,ffFixed,0,5)+#9+' b='+floattostrf(b,ffFixed,9,5) +#9+'offset='+floattostrf(p-center,ffFixed,0,0)+#9+#9+'error='+floattostrf(lowest_error,ffFixed,5,5)+#9+' iteration cycles='+floattostrf(iteration_cycles,ffFixed,0,0)); if i=9 then memo2_message('area 1,3'+#9+ 'Focus='+floattostrf(p,ffFixed,0,0)+#9+'a='+floattostrf(a,ffFixed,0,5)+#9+' b='+floattostrf(b,ffFixed,9,5) +#9+'offset='+floattostrf(p-center,ffFixed,0,0)+#9+#9+'error='+floattostrf(lowest_error,ffFixed,5,5)+#9+' iteration cycles='+floattostrf(iteration_cycles,ffFixed,0,0)); if i=10 then memo2_message('area 2,3'+#9+ 'Focus='+floattostrf(p,ffFixed,0,0)+#9+'a='+floattostrf(a,ffFixed,0,5)+#9+' b='+floattostrf(b,ffFixed,9,5) +#9+'offset='+floattostrf(p-center,ffFixed,0,0)+#9+#9+'error='+floattostrf(lowest_error,ffFixed,5,5)+#9+' iteration cycles='+floattostrf(iteration_cycles,ffFixed,0,0)); if i=11 then memo2_message('area 3,3'+#9+ 'Focus='+floattostrf(p,ffFixed,0,0)+#9+'a='+floattostrf(a,ffFixed,0,5)+#9+' b='+floattostrf(b,ffFixed,9,5) +#9+'offset='+floattostrf(p-center,ffFixed,0,0)+#9+#9+'error='+floattostrf(lowest_error,ffFixed,5,5)+#9+' iteration cycles='+floattostrf(iteration_cycles,ffFixed,0,0)); end else if i=1 then memo2_message('█ █ █ █ █ █ Error, four or more images are required at different focus positions! █ █ █ █ █ █ '); end; end; procedure Tstackmenu1.ephemeris_centering1Change(Sender: TObject); begin new_analyse_required:=true;{force a new analyse for new x, y position asteroids} end; procedure Tstackmenu1.focallength1Exit(Sender: TObject); begin if sender=focallength1 then {manual entered} focallen:=strtofloat2(stackmenu1.focallength1.text);{manual entered focal length, update focallen} if sender=pixelsize1 then {manual entered} head.xpixsz:=strtofloat2(stackmenu1.pixelsize1.text);{manual entered micrometer, update xpixsz} if ((head.cd1_1<>0) and (head.cdelt2<>0)) then {solved image} begin calc_scale:=3600*abs(head.cdelt2); if sender=focallength1 then {calculate pixelsize from head.cdelt2 and manual entered focallen} begin head.xpixsz:=calc_scale*focallen/((180*3600/1000)/pi); stackmenu1.pixelsize1.text:=floattostrf(head.xpixsz,ffgeneral, 4, 4); end else begin {calculate focal length from head.cdelt2 and pixelsize1} focallen:=(head.xpixsz/calc_scale)*(180*3600/1000)/pi; {arcsec per pixel} stackmenu1.focallength1.text:=floattostrf(focallen,ffgeneral, 4, 4); end; end else begin {not a solved image} if focallen<>0 then calc_scale:=(head.xpixsz/focallen)*(180*3600/1000)/pi {arcsec per pixel} else calc_scale:=0; end; if calc_scale<> 0 then calculated_scale1.caption:=floattostrf(calc_scale, ffgeneral, 3, 3)+' "/pixel' else calculated_scale1.caption:='- - -'; if head.xpixsz<>0 then calculated_sensor_size1.caption:=floattostrf(head.width*head.xpixsz*1E-3, fffixed, 3, 1)+' x'+floattostrf(head.height*head.xpixsz*1E-3, fffixed, 3, 1)+' mm' else calculated_sensor_size1.caption:='- - -'; if ((head.xpixsz<>0) and (focallen<>0)) then scale_calc1.Caption:=floattostrf((head.width*head.xpixsz/focallen)*(180/1000)/pi,ffgeneral, 3, 3)+'° x '+floattostrf((head.height*head.xpixsz/focallen)*(180/1000)/pi, ffgeneral, 3, 3)+'°' else scale_calc1.Caption:='- - -'; end; procedure Tstackmenu1.go_step_two1Click(Sender: TObject); begin load_image(mainwindow.image1.visible=false,true {plot}); update_equalise_background_step(2); {go to step 3} end; procedure Tstackmenu1.luminance_filter1exit(Sender: TObject); var err,mess,mess2 :boolean; red1,red2,green1,green2,blue1,blue2,lum1,lum2 : string; begin new_analyse_required:=true; new_analyse_required3:=true;{tab 3 flats} err:=false; mess:=false; mess2:=false; red1:=trim(red_filter1.text); {remove spaces before and after} red2:=trim(red_filter2.text); green1:=trim(green_filter1.text); green2:=trim(green_filter2.text); blue1:=trim(blue_filter1.text); blue2:=trim(blue_filter2.text); lum1:=trim(luminance_filter1.text); lum2:=trim(luminance_filter2.text); {remove duplication because they will be ignored later. Follow execution of stacking routine (for i:=0 to 4) so red, green, blue luminance} if AnsiCompareText(green1,red1)=0 then begin err:=true;green1:=''; end; if AnsiCompareText(green1,red2)=0 then begin err:=true;green1:=''; end; if AnsiCompareText(green2,red1)=0 then begin err:=true;green2:=''; end; if AnsiCompareText(green2,red2)=0 then begin err:=true;green2:=''; end; if AnsiCompareText(blue1,red1)=0 then begin err:=true;blue1:=''; end; if AnsiCompareText(blue1,red2)=0 then begin err:=true;blue1:=''; end; if AnsiCompareText(blue2,red1)=0 then begin err:=true;blue2:=''; end; if AnsiCompareText(blue2,red2)=0 then begin err:=true;blue2:=''; end; if AnsiCompareText(blue1,green1)=0 then begin err:=true;blue1:=''; end; if AnsiCompareText(blue1,green2)=0 then begin err:=true;blue1:=''; end; if AnsiCompareText(blue2,green1)=0 then begin err:=true;blue2:=''; end; if AnsiCompareText(blue2,green2)=0 then begin err:=true;blue2:=''; end; if AnsiCompareText(lum1,red1)=0 then begin mess:=true; end; if AnsiCompareText(lum1,red2)=0 then begin mess:=true; end; if AnsiCompareText(lum2,red1)=0 then begin mess2:=true; end; if AnsiCompareText(lum2,red2)=0 then begin mess2:=true; end; if AnsiCompareText(lum1,green1)=0 then begin mess:=true; end; if AnsiCompareText(lum1,green2)=0 then begin mess:=true; end; if AnsiCompareText(lum2,green1)=0 then begin mess2:=true; end; if AnsiCompareText(lum2,green2)=0 then begin mess2:=true; end; if AnsiCompareText(lum1,blue1)=0 then begin mess:=true; end; if AnsiCompareText(lum1,blue2)=0 then begin mess:=true; end; if AnsiCompareText(lum2,blue1)=0 then begin mess2:=true; end; if AnsiCompareText(lum2,blue2)=0 then begin mess2:=true; end; red_filter1.text:=red1; red_filter2.text:=red2; green_filter1.text:=green1; green_filter2.text:=green2; blue_filter1.text:=blue1; blue_filter2.text:=blue2; luminance_filter1.text:=lum1; luminance_filter2.text:=lum2; if err then memo2_message('Filter name can be used only once for RGB! Use matrix to use a filter more than once.'); if mess then luminance_filter1.font.Style:=[fsbold] else luminance_filter1.font.Style:=[]; if mess2 then luminance_filter2.font.Style:=[fsbold] else luminance_filter2.font.Style:=[]; end; procedure Tstackmenu1.help_inspector_tab1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#inspector_tab'); end; procedure Tstackmenu1.help_live_stacking1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#live_stacking'); end; procedure Tstackmenu1.help_pixel_math2Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#pixel_math2'); end; procedure update_replacement_colour; var r,g,b,h,s,v : single; colour : tcolor; saturation : double; begin colour:=stackmenu1.colourShape2.brush.color; RGB2HSV(getRvalue(colour),getGvalue(colour),getBvalue(colour),h,s,v); if stackmenu1.remove_luminance1.checked=false then saturation:=stackmenu1.new_saturation1.position /100 else saturation:=0; HSV2RGB(h , s * saturation {s 0..1}, v {v 0..1},r,g,b); {HSV to RGB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} stackmenu1.colourshape3.brush.color:=rgb(trunc(r),trunc(g),trunc(b)); end; procedure sample(sx,sy : integer);{sampe local colour and fill shape with colour} var halfboxsize,i,j,counter,fx,fy,col_r,col_g,col_b :integer; r,g,b,h,s,v,colrr,colgg,colbb,luminance, luminance_stretched,factor, largest : single; dummy1,radiobutton2: boolean; begin dummy1:=stackmenu1.HueRadioButton1.checked; radiobutton2:=stackmenu1.HueRadioButton2.checked; if ((dummy1=false) and (radiobutton2=false)) then exit; halfboxsize:=max(0,(stackmenu1.sample_size1.itemindex)); counter:=0; colrr:=0; colgg:=0; colbb:=0; for i:=-halfboxsize to halfboxsize do for j:=-halfboxsize to halfboxsize do {average local colour} begin fx:=i+sX; fy:=j+sY; if ((fx>=0) and (fx<head.width) and (fy>=0) and (fy<head.height) ) then begin inc(counter); colrr:=colrr+img_loaded[0,sX,sY]; colgg:=colgg+img_loaded[1,sX,sY]; colbb:=colbb+img_loaded[2,sX,sY]; end; end; if counter=0 then exit; colrr:=((colrr/counter)-cblack)/(cwhite-cblack);{scale to 0..1} colgg:=((colgg/counter)-cblack)/(cwhite-cblack);{scale to 0..1} colbb:=((colbb/counter)-cblack)/(cwhite-cblack);{scale to 0..1} if colrr<=0.00000000001 then colrr:=0.00000000001; if colgg<=0.00000000001 then colgg:=0.00000000001; if colbb<=0.00000000001 then colbb:=0.00000000001; {find brightest colour and resize all if above 1} largest:=colrr; if colgg>largest then largest:=colgg; if colbb>largest then largest:=colbb; if largest>1 then {clamp to 1 but preserve colour, so ratio r,g,b} begin colrr:=colrr/largest; colgg:=colgg/largest; colbb:=colbb/largest; largest:=1; end; if stretch_on then {Stretch luminance only. Keep RGB ratio !!} begin luminance:=(colrr+colgg+colbb)/3;{luminance in range 0..1} luminance_stretched:=stretch_c[trunc(32768*luminance)]; factor:=luminance_stretched/luminance; if factor*largest>1 then factor:=1/largest; {clamp again, could be higher then 1} col_r:=round(colrr*factor*255);{stretch only luminance but keep rgb ratio!} col_g:=round(colgg*factor*255);{stretch only luminance but keep rgb ratio!} col_b:=round(colbb*factor*255);{stretch only luminance but keep rgb ratio!} end else begin col_r:=round(255*colrr); col_g:=round(255*colgg); col_b:=round(255*colbb); end; RGB2HSV(col_r,col_g,col_b,h,s,v); {RGB to HSVB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} if dummy1 then begin HSV2RGB(h , s {s 0..1}, v {v 0..1},r,g,b); {HSV to RGB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} stackmenu1.colourshape1.brush.color:=rgb(trunc(r),trunc(g),trunc(b)); stackmenu1.hue_fuzziness1Change(nil); end else if RadioButton2 then begin HSV2RGB(h , s {s 0..1}, v {v 0..1},r,g,b); {HSV to RGB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} stackmenu1.colourshape2.brush.color:=rgb(trunc(r),trunc(g),trunc(b)); update_replacement_colour; end; end; procedure Tstackmenu1.hue_fuzziness1Change(Sender: TObject); var colour :tcolor; oldhue,s,v,dhue : single; begin dhue:=hue_fuzziness1.position; colour:=colourShape1.brush.color; RGB2HSV(getRvalue(colour),getGvalue(colour),getBvalue(colour),oldhue,s,v); hue1:=oldhue - dhue/2; if hue1>360 then hue1:=hue1-360; if hue1<0 then hue1:=hue1+360; hue2:=oldhue + dhue/2; if hue2>360 then hue2:=hue2-360; if hue2<0 then hue2:=hue2+360; stackmenu1.rainbow_panel1.refresh;{plot colour disk in on paint event. Onpaint is required for MacOS} end; procedure Tstackmenu1.listview8CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin stackmenu1.nr_total_inspector1.caption:=inttostr(sender.items.count);{update counting info} end; procedure Tstackmenu1.listview8CustomDrawSubItem(Sender: TCustomListView; Item: TListItem; SubItem: Integer; State: TCustomDrawState; var DefaultDraw: Boolean); begin if sender.Items.item[Item.Index].subitems.Strings[I_nr_stars]='❌' then Sender.Canvas.Font.Color := clred else Sender.Canvas.Font.Color := clmenutext;{required for high contrast settings. Otherwise it is always black} {$ifdef mswindows} {$else} {unix} {temporary fix for CustomDraw not called} if Item.index=0 then stackmenu1.nr_total_inspector1.caption:=inttostr(sender.items.count);{update counting info} {$endif} end; procedure Tstackmenu1.live_stacking1Click(Sender: TObject); begin save_settings2;{too many lost selected files . so first save settings} esc_pressed:=false; live_stacking_pause1.font.style:=[]; live_stacking1.font.style:=[fsbold,fsunderline]; Application.ProcessMessages; {process font changes} if pause_pressed=false then {restart} stack_live(round(strtofloat2(stackmenu1.oversize1.Text)), live_stacking_path1.caption){stack live average} else pause_pressed:=false; end; {$ifdef mswindows} procedure CopyFilesToClipboard(FileList: string); {See https://forum.lazarus.freepascal.org/index.php?topic=18637.0} var DropFiles: PDropFiles; hGlobal: THandle; iLen: integer; begin iLen := Length(FileList) + 2; FileList := FileList + #0#0; // <-- Important to make it work hGlobal := GlobalAlloc(GMEM_SHARE or GMEM_MOVEABLE or GMEM_ZEROINIT, SizeOf(TDropFiles) + iLen); if (hGlobal = 0) then raise Exception.Create('Could not allocate memory.'); begin DropFiles := GlobalLock(hGlobal); DropFiles^.pFiles := SizeOf(TDropFiles); Move(FileList[1], (PChar(DropFiles) + SizeOf(TDropFiles))^, iLen); GlobalUnlock(hGlobal); OpenClipboard(mainwindow.Handle); EmptyClipboard; SetClipboardData(CF_HDROP,hGlobal); CloseClipboard; end; end; {$else} {unix} {$endif} procedure Tstackmenu1.copy_files_to_clipboard1Click(Sender: TObject); var index : integer; info : string; begin {$ifdef mswindows} {get file name selected} info:=''; for index:=0 to listview5.items.count-1 do begin if listview5.Items[index].Selected then begin info:=info+listview5.items[index].caption+#0; {Separate the files with a #0.} end; end; CopyFilesToClipboard(info); {$else} {unix} {$endif} end; procedure Tstackmenu1.most_common_mono1Click(Sender: TObject); begin mainwindow.convertmono1Click(nil); {back is made in mono procedure} end; procedure Tstackmenu1.mount_add_solutions1Click(Sender: TObject); var c: integer; Save_Cursor : TCursor; refresh_solutions,success : boolean; thefile,filename1 : string; begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } esc_pressed:=false; refresh_solutions:=mount_ignore_solutions1.checked; {refresh astrometric solutions} {solve lights first to allow flux to magnitude calibration} with stackmenu1 do for c:=0 to listview9.items.count-1 do {check for astrometric solutions} begin if ((esc_pressed=false) and (listview9.Items.item[c].checked) and (listview9.Items.item[c].subitems.Strings[M_ra]='')) then begin filename1:=listview9.items[c].caption; mainwindow.caption:=filename1; Application.ProcessMessages; {load image} if ((esc_pressed) or (load_fits(filename1,true {light},true,true {update memo},0,head_2,img_temp)=false)) then begin Screen.Cursor:=crDefault;{back to normal } exit; end; if ((head.cd1_1=0) or (refresh_solutions)) then begin listview9.Selected :=nil; {remove any selection} listview9.ItemIndex := c;{mark where we are. Important set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} listview9.Items[c].MakeVisible(False);{scroll to selected item} memo2_message(filename1+ ' Adding astrometric solution to file.'); Application.ProcessMessages; if solve_image(img_temp,head_2,true {get hist}) then begin{match between loaded image and star database} if mount_write_wcs1.checked then begin thefile:=ChangeFileExt(filename1,'.wcs');{change file extension to .wcs file} write_astronomy_wcs(thefile); listview9.items[c].caption:=thefile; end else begin if fits_file_name(filename1) then success:=savefits_update_header(filename1) else success:=save_tiff16_secure(img_temp,filename1);{guarantee no file is lost} if success=false then begin ShowMessage('Write error !!' + filename1);Screen.Cursor:=crDefault; exit;end; end end else begin listview9.Items[c].Checked:=false; listview9.Items.item[c].subitems.Strings[M_ra]:='?'; listview9.Items.item[c].subitems.Strings[M_dec]:='?'; memo2_message(filename1+ 'No astrometric solution found for this file!!'); end; end end; end; Screen.Cursor:=crDefault;{back to normal } update_menu(false);//do not allow to save fits. img_load is still valid but memo1 is cleared. Could be recovered but is not done stackmenu1.mount_analyse1Click(nil);{update. Since it are WCS files with naxis,2 then image1 will be cleared in load_fits} end; procedure Tstackmenu1.new_saturation1Change(Sender: TObject); begin update_replacement_colour; end; procedure Tstackmenu1.check_pattern_filter1Change(Sender: TObject); begin if check_pattern_filter1.checked then calibrate_prior_solving1.checked:=false; end; procedure Tstackmenu1.pagecontrol1Change(Sender: TObject); var theindex :integer; begin theindex:=stackmenu1.pagecontrol1.tabindex; mainwindow.shape_alignment_marker1.visible:=(theindex=8); {hide shape if stacked image is plotted} mainwindow.shape_alignment_marker2.visible:=(theindex=8); {hide shape if stacked image is plotted} mainwindow.shape_alignment_marker3.visible:=(theindex=8); {hide shape if stacked image is plotted} mainwindow.labelVar1.visible:=(theindex=8); mainwindow.labelCheck1.visible:=(theindex=8); mainwindow.labelThree1.visible:=(theindex=8); stack_button1.enabled:=((theindex<=6) or (theindex>=13)); end; var FLastHintTabIndex : integer; procedure Tstackmenu1.pagecontrol1MouseMove(Sender: TObject; {Show hints of each tab when mouse hovers above it} Shift: TShiftState; X, Y: Integer); var TabIndex: Integer; begin TabIndex := PageControl1.IndexOfTabAt(X, Y); if FLastHintTabIndex <> TabIndex then Application.CancelHint; if TabIndex <> -1 then PageControl1.Hint:= PageControl1.Pages[TabIndex].Hint; FLastHintTabIndex := TabIndex; end; procedure Tstackmenu1.photom_calibrate1Click(Sender: TObject); var index,counter,oldindex,position,i: integer; ListItem: TListItem; begin position:=-1; index:=0; listview1.Items.beginUpdate; listview1.clear;//lights counter:=listview7.Items.Count; while index<counter do begin if listview7.Items[index].Selected then begin if position<0 then position:=index;//store first position listview_add(listview1,listview7.items[index].caption,true,L_nr); end; inc(index); {go to next file} end; listview1.Items.endUpdate; oldindex:=stack_method1.itemindex; stack_method1.itemindex:=5; //calibration only, no de-mosaic stack_button1Click(sender); // move calibrated files back form results as *_cal.fits listview_removeselect(listview7); listview7.Items.BeginUpdate; index:=listview1.Items.Count-1; while index>=0 do begin with listview7 do begin ListItem := Items.insert(position); // ListView1.Items.item[c].subitems.Strings[L_calibration] ListItem.Caption:=listview1.items[index].caption; ListItem.checked:=true; for i:=1 to P_nr do ListItem.SubItems.Add(''); // add the other columns ListItem.subitems.Strings[P_calibration]:=ListView1.Items.item[index].subitems.Strings[L_calibration];//copy calibration status dec(index); {go to next file} end; end; listview7.Items.EndUpdate; listview1.clear; stack_method1.itemindex:=oldindex;//return old setting save_settings2; analyse_listview(listview7,true {light},false {full fits},true{refresh}); {refresh list} end; procedure Tstackmenu1.photom_green1Click(Sender: TObject); var c : integer; Save_Cursor : TCursor; fn,col,ff : string; begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } esc_pressed:=false; if listview7.items.count>0 then begin for c:=0 to listview7.items.count-1 do if listview7.Items[c].Selected then begin ff:=ListView7.items[c].caption; if fits_tiff_file_name(ff)=false then begin memo2_message('█ █ █ █ █ █ Can'+#39+'t extract. First analyse file list to convert to FITS !! █ █ █ █ █ █'); beep; exit; end; fn:=extract_raw_colour_to_file(ff,'TG',1,1); {extract green red or blue channel} if fn<>'' then begin ListView7.items[c].caption:=fn; end; {scroll} // listview7.Selected :=nil; {remove any selection} listview7.ItemIndex := c;{mark where we are. Important set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} listview7.Items[c].MakeVisible(False);{scroll to selected item} application.processmessages; if esc_pressed then begin Screen.Cursor:=crDefault; exit; end; end; end; analyse_listview(listview7,true {light},false {full fits},true{refresh}); {refresh list} Screen.Cursor:=crDefault; { Always restore to normal } end; procedure Tstackmenu1.photom_stack1Click(Sender: TObject); var index,counter,oldindex,position,i: integer; ListItem: TListItem; oldmakeosc,oldclassify_filter,oldclassify_object : boolean; begin position:=-1; index:=0; listview1.Items.beginUpdate; listview1.clear; counter:=listview7.Items.Count; while index<counter do begin if listview7.Items[index].Selected then begin if position<0 then position:=index;//store first position listview_add(listview1,listview7.items[index].caption,true,L_nr);// add to tab light end; inc(index); {go to next file} end; listview1.Items.endUpdate; analyse_tab_lights(false {full});//update also process_as_osc if process_as_osc>0 then begin memo2_message('█ █ █ █ █ █ Abort !! For photometry you can not stack OSC images. First extract the green channel. █ █ █ █ █ █'); beep; exit end; oldindex:=stack_method1.itemindex; stack_method1.itemindex:=0; //average stack_button1Click(sender);// stack the files in tab lights // move calibrated files back listview_removeselect(listview7); listview7.Items.BeginUpdate; with listview7 do begin ListItem := Items.insert(position); ListItem.Caption:=filename2; // contains the stack file name ListItem.checked:=true; for i:=1 to P_nr do ListItem.SubItems.Add(''); // add the other columns dec(index); {go to next file} end; listview7.Items.EndUpdate; listview1.clear; stack_method1.itemindex:=oldindex;//return old setting save_settings2; analyse_listview(listview7,true {light},false {full fits},true{refresh}); {refresh list} end; procedure Tstackmenu1.PopupMenu1Popup(Sender: TObject); begin auto_select1.enabled:=stackmenu1.use_manual_alignment1.checked; end; procedure Tstackmenu1.press_esc_to_abort1Click(Sender: TObject); begin esc_pressed:=true; end; procedure Tstackmenu1.rainbow_Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var w2,h2 : integer; hue,dhue,oldhue,s,v,r,g,b : single; colour : tcolor; begin with rainbow_Panel1 do begin w2:= width div 2; h2:= height div 2; hue:=180+Arctan2(x-w2,y-h2)*180/pi; dhue:=hue_fuzziness1.position; hue1:=hue - dhue/2; hue2:=hue + dhue/2; stackmenu1.rainbow_panel1.refresh;{plot colour disk on an OnPaint event. Required for MacOS} end; {adapt shape colours} if HueRadioButton1.checked then begin colour:=colourShape1.brush.color; RGB2HSV(getRvalue(colour),getGvalue(colour),getBvalue(colour),oldhue,s,v); HSV2RGB(hue , s {s 0..1}, v {v 0..1},r,g,b); colourShape1.brush.color:=rgb(trunc(r),trunc(g),trunc(b)); end; if HueRadioButton2.checked then begin update_replacement_colour; // colour:=colourShape2.brush.color; // RGB2HSV(getRvalue(colour),getGvalue(colour),getBvalue(colour),oldhue,s,v); // HSV2RGB(hue , s {s 0..1}, v {v 0..1},r,g,b); // colourShape2.brush.color:=rgb(trunc(r),trunc(g),trunc(b)); // HSV2RGB(hue , s*new_saturation1.position /100 {s 0..1}, v {v 0..1},r,g,b); // colourShape3.brush.color:=rgb(trunc(r),trunc(g),trunc(b)); end; end; procedure Tstackmenu1.rainbow_Panel1Paint(Sender: TObject); {pixel draw on paint required for MacOS} var i,j,w2,h2,diameter :integer; r,g,b,h,x,y,radius,s,v : single; colour : tcolor; begin with stackmenu1.rainbow_panel1 do begin w2:= width div 2; h2:= height div 2; for i:=-w2 to w2 do for j:=-h2 to h2 do begin if sqr(i)+sqr(j)<sqr(w2) then {plot only in a circel} begin h:=180+Arctan2(i,j)*180/pi; radius:=(i*i+j*j)/(w2*h2); HSV2RGB(h, radius {s 0..1}, 255 {v 0..1},r,g,b); canvas.pixels[i+w2,j+h2]:=rgb(trunc(r),trunc(g),trunc(b)); end; end; Canvas.Pen.width :=2;{thickness lines} Canvas.pen.color:=clblack; sincos(hue1*pi/180,x,y); canvas.moveto(w2,h2); canvas.lineto(w2-round(x*(w2-3)),h2-round(y*(w2-3))); sincos(hue2*pi/180,x,y); canvas.moveto(w2,h2); canvas.lineto(w2-round(x*(w2-3)),h2-round(y*(w2-3))); colour:=colourShape1.brush.color; RGB2HSV(getRvalue(colour),getGvalue(colour),getBvalue(colour),h,s,v); canvas.Brush.Style:=bsClear;{transparent style} diameter:=max(0,round(w2*s - w2*saturation_tolerance1.position/100)); canvas.Ellipse(w2-diameter, h2-diameter, w2+diameter, h2+diameter); diameter:=min(w2,round(w2*s + w2*saturation_tolerance1.position/100)); canvas.Ellipse(w2-diameter, h2-diameter, w2+diameter, h2+diameter); end; end; procedure Tstackmenu1.remove_luminance1Change(Sender: TObject); begin update_replacement_colour; end; procedure Tstackmenu1.result_compress1Click(Sender: TObject); var index,counter: integer; filen : string; begin index:=0; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } counter:=listview5.Items.Count; esc_pressed:=false; while index<counter do begin if listview5.Items[index].Selected then begin filen:=listview5.items[index].caption; Application.ProcessMessages; if ((esc_pressed) or (pack_cfitsio(filen)=false)) then begin beep; mainwindow.caption:='Exit with error!!'; Screen.Cursor:=crDefault; exit;end; end; inc(index); {go to next file} end; stackmenu1.caption:='Finished, all files compressed with extension .fz.'; Screen.Cursor:=crDefault; { Always restore to normal } end; procedure Tstackmenu1.rename_result1Click(Sender: TObject); var index,counter: integer; thepath, newfilen : string; begin index:=0; counter:=listview5.Items.Count; while index<counter do begin if listview5.Items[index].Selected then begin filename2:=listview5.items[index].caption; thepath:=extractfilepath(filename2); newfilen:=thepath+InputBox('New name:','',extractfilename(filename2)) ; if ((newfilen='') or (newfilen=filename2)) then exit; if RenameFile(filename2,newfilen) then listview5.items[index].caption:=newfilen else beep; end; inc(index); {go to next file} end; end; procedure Tstackmenu1.restore_file_ext1Click(Sender: TObject); var searchResult : TSearchRec; filen : string; counter : integer; begin counter:=0; esc_pressed:=true; {stop all stacking} If SysUtils.FindFirst (live_stacking_path1.caption+PathDelim+'*.*_',faAnyFile,searchResult)=0 then begin Repeat With searchResult do begin filen:=live_stacking_path1.caption+PathDelim+searchResult.Name; if copy(filen,length(filen),1)='_' then begin if RenameFile(filen,copy(filen,1,length(filen)-1))=false then {remove *.*_} beep else inc(counter); end; end; Until SysUtils.FindNext(searchResult)<>0; SysUtils.FindClose(searchResult); end; live_stacking_pause1.font.style:=[]; live_stacking1.font.style:=[]; memo2_message('Live stacking stopped and '+inttostr(counter)+' files renamed to original file name.'); end; procedure Tstackmenu1.colournebula1Click(Sender: TObject); var radius, fitsX,fitsY : integer; value,org_value : single; star_level_colouring : double; Save_Cursor : TCursor; begin if Length(img_loaded)=0 then begin memo2_message('Error, no image in viewer loaded!'); exit; end; Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; {move copy to img_backup} get_background(0,img_loaded,false {do not calculate hist},false {do not calculate noise_level}, {var} cblack,star_level); try radius:=strtoint(stackmenu1.filter_artificial_colouring1.text);except end; memo2_message('Applying most common filter with factor '+stackmenu1.filter_artificial_colouring1.text); setlength(img_temp,3,head.width,head.height);{new size} apply_most_common(img_backup[index_backup].img,img_temp,radius); {apply most common filter on first array and place result in second array} memo2_message('Applying Gaussian blur of '+floattostrF(radius*2,ffFixed,0,1)); gaussian_blur2(img_temp,radius*2); setlength(img_loaded,3,head.width,head.height);{new size} memo2_message('Separating stars and nebula. Making everything white with value '+stackmenu1.star_level_colouring1.text+' above background.'); star_level_colouring:=strtoint(stackmenu1.star_level_colouring1.text); for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin {subtract view from file} org_value:=img_backup[index_backup].img[0,fitsX,fitsY]; {stars+nebula} {smooth nebula} value:=org_value - img_temp[0,fitsX,fitsY]; if value>star_level_colouring then {star} begin img_loaded[0,fitsX,fitsY]:=org_value; if head.naxis3>1 then img_loaded[1,fitsX,fitsY]:=img_backup[index_backup].img[1,fitsX,fitsY] else img_loaded[1,fitsX,fitsY]:=org_value; if head.naxis3>2 then img_loaded[2,fitsX,fitsY]:=img_backup[index_backup].img[2,fitsX,fitsY] else img_loaded[2,fitsX,fitsY]:=org_value; end else {nebula} begin img_loaded[0,fitsX,fitsY]:=org_value; img_loaded[1,fitsX,fitsY]:=cblack+(org_value-cblack)*value/star_level_colouring; img_loaded[2,fitsX,fitsY]:=cblack+(org_value-cblack)*value/star_level_colouring; end end; head.naxis3:=3; head.naxis:=3; update_header_for_colour; {update header naxis and naxis3 keywords} update_text ('HISTORY 77',' Artificial colour applied.'); use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false,true);{plot real} Screen.Cursor:=crDefault; end; procedure Tstackmenu1.refresh_astrometric_solutions1click(Sender: TObject); var c : integer; begin if (IDYES= Application.MessageBox('This will renew the astrometric solutions of all files and could take some time. Are you sure?', 'Renew astrometric solutions of all files?', MB_ICONQUESTION + MB_YESNO) )=false then exit; if listview7.items.count>0 then begin for c:=0 to listview7.items.count-1 do begin listview7.Items.item[c].subitems.Strings[P_astrometric]:='';{clear astrometry marks} listview7.Items.item[c].subitems.Strings[P_photometric]:='';{clear photometry marks} end; end; stackmenu1.photometry_button1Click(Sender);{refresh astrometric solutions} end; procedure Tstackmenu1.clear_photometry_list1Click(Sender: TObject); begin esc_pressed:=true; {stop any running action} listview7.Clear; end; procedure Tstackmenu1.export_aligned_files1Click(Sender: TObject); var c,fitsX,fitsY,x_new,y_new,col,ps : integer; Save_Cursor : TCursor; st : string; begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } esc_pressed:=false; align_blink1.checked:=true; for c:=0 to listview6.items.count-1 do {check alignement and if not align} begin st:=listview6.Items.item[c].subitems.Strings[B_solution]; if st='' then begin memo2_message('Doing the alignment first'); stackmenu1.clear_blink_alignment1Click(nil); stackmenu1.blink_button1Click(nil); break; end; end; for c:=0 to listview6.items.count-1 do {this is not required but nice} begin st:=listview6.Items.item[c].subitems.Strings[B_solution]; if st<>'' then {Solution available} begin filename2:=listview6.items[c].caption; mainwindow.caption:=filename2; listview6.Selected :=nil; {remove any selection} listview6.ItemIndex := c;{mark where we are. Important set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} listview6.Items[c].MakeVisible(False);{scroll to selected item} if load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded)=false then begin esc_pressed:=true; break;end; {load fits} Application.ProcessMessages; if esc_pressed then break; {reuse solution} ps:=strtoint(copy(st,4,10)); solution_vectorX:=bsolutions[ps].solution_vectorX; {use stored solution} solution_vectorY:=bsolutions[ps].solution_vectorY; setlength(img_temp,head.naxis3,head.width,head.height);{new size} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin for col:=0 to head.naxis3-1 do {all colors} img_temp[col,fitsX,fitsY]:=0;{clear memory} end; {align} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin x_new:=round(solution_vectorX[0]*(fitsx)+solution_vectorX[1]*(fitsY)+solution_vectorX[2]); {correction x:=aX+bY+c} y_new:=round(solution_vectorY[0]*(fitsx)+solution_vectorY[1]*(fitsY)+solution_vectorY[2]); {correction y:=aX+bY+c} if ((x_new>=0) and (x_new<=head.width-1) and (y_new>=0) and (y_new<=head.height-1)) then for col:=0 to head.naxis3-1 do {all colors} img_temp[col,x_new,y_new]:=img_loaded[col,fitsX,fitsY] ; end; {fix black holes} img_loaded:=img_temp; black_spot_filter(img_loaded); if pos('_aligned.fit',filename2)=0 then filename2:=ChangeFileExt(Filename2,'_aligned.fit');{rename only once} if timestamp1.checked then begin if date_avg='' then annotation_to_array('date_obs: '+head.date_obs,false,65535,1{size},1,10,img_loaded) {head.date_obs to image array as annotation} else annotation_to_array('date_avg: '+date_avg,false,65535,1{size},1,10,img_loaded);{head.date_obs to image array as annotation} end; add_text ('COMMENT ',' Image aligned with other images. '); if nrbits=16 then save_fits(img_loaded,filename2,16,true) else save_fits(img_loaded,filename2,-32,true); memo2_message('New aligned image created: '+filename2); listview6.items[c].caption:=filename2; end end; img_temp:=nil; if head.naxis<>0 then plot_fits(mainwindow.image1,false {re_center},true);{the last displayed image doesn't match with header. Just plot last image to fix} Screen.Cursor:=crDefault;{back to normal } end; function JdToDate(jd:double):string;{Returns Date from Julian Date, See MEEUS 2 page 63} var A,B,C,D,E,F,G,J,M,T,Z: double; {!!! 2016 by purpose, otherwise with timezone 8, 24:00 midnigth becomes 15:59 UTC} HH, MM, SS : integer; year3 : STRING[6]; begin if (abs(jd)>1461*10000) then begin result:='Error, JD outside allowed range!' ;exit;end; jd:=jd+(0.5/(24*3600));{2016 one 1/2 second extra for math errors, fix problem with timezone 8, 24:00 midnight becomes 15:59 UTC} Z:=trunc (JD + 0.5); F:=Frac(JD + 0.5); If Z < 2299160.5 Then A:=Z // < 15.10.1582 00:00 {Note Meeus 2 takes midday 12:00} else begin g:= int((Z-1867216.25) / 36524.25); a:=z+1+g-trunc(g/4); end; B := A+1524+ {special =>} (1461*10000);{allow up to 40.000 year in past, 1461 days *100000 = 4x 10000 years} C := trunc((B-122.1)/365.25); D := trunc(365.25 * C); E := trunc((B-D)/30.6001); T := B-D-int(30.6001*E) + F; {day of the month} if(E<14) then M := E-1 else M := E-13; if (M>2) then J := C-4716 else J := C-4715; j:=J - {special= >} 4*10000;{allow up to 40.000 year in past, 1461 days *100000 = 4x 10000 years} F:=fnmodulo(F,1);{for negative julian days} HH:=trunc(F*24); MM:=trunc((F-HH/24)*(24*60));{not round otherwise 23:60} SS:=trunc((F-HH/24-MM/(24*60))*(24*3600)); str(trunc(j):4,year3); result:=year3+'-' +leadingzero(trunc(m))+'-'+leadingzero(trunc(t))+'T'+leadingzero(HH)+':'+leadingzero(MM)+':'+leadingzero(SS); end; function julian_calc(yyyy,mm:integer;dd,hours,minutes,seconds:double):double; {##### calculate julian day, revised 2017} var Y,M : integer; A, B , XX : double; begin IF MM>2 THEN begin Y:=YYYY; M:=MM;end else {MM=1 OR MM=2} begin Y:=YYYY-1; M:=MM+12;end; DD:=DD+HOURS/24+MINUTES/(24*60)+SECONDS/(24*60*60); if ((YYYY+MM/100+DD/10000)<1582.10149999) then B:=0 {year 1582 October, 15, 00:00 reform Gregorian to julian, 1582.10149999=1582.1015 for rounding errors} else {test year 837 april 10, 0 hours is Jd 2026871.5} begin A:=INT(Y/100); B:=+ 2 - A + INT(A/4) end; if Y<0 then XX:=0.75 else xx:=0;{correction for negative years} result:=INT(365.25*Y-XX)+INT(30.6001*(M+1)) + DD + B + 1720994.5; end; //function UTdecimal(date : string): string; {UT date in decimal notation} //var dayfract : string; //begin // {'2021-03-08T17:55:23'} // str(strtoint(copy(date,12,2))/24 +strtoint(copy(date,15,2))/(24*60) + strtoint(copy(date,18,2))/(24*60*60):0:4,dayfract);{convert time to fraction of a day} // result:=copy(date,1,4)+copy(date,6,2)+copy(date,9,2)+copy(dayfract,2,5); //end; procedure date_to_jd(date_time:string; exp: double);{convert head.date_obs string and head.exposure time to global variables jd_start (julian day start head.exposure) and jd_mid (julian day middle of the head.exposure)} var yy,mm,dd,hh,min,error2 : integer; ss : double; begin jd_start:=0; val(copy(date_time,18,7),ss,error2); if error2<>0 then exit; {read also milliseconds} val(copy(date_time,15,2),min,error2);if error2<>0 then exit; val(copy(date_time,12,2),hh,error2);if error2<>0 then exit; val(copy(date_time,09,2),dd,error2);if error2<>0 then exit; val(copy(date_time,06,2),mm,error2);if error2<>0 then exit; val(copy(date_time,01,4),yy,error2);if error2<>0 then exit; jd_start:=julian_calc(yy,mm,dd,hh,min,ss);{calculate julian date} jd_mid:=jd_start+exp/(2*24*3600);{Add half head.exposure in days to get midpoint} end; procedure Tstackmenu1.extend_object_name_with_time_observation1Click( Sender: TObject); var index,counter,error2: integer; interval,jd: double; timestr,inp: string; begin inp:=InputBox('Extend value keyword OBJECT with rounded Julian day','Hit cancel to abort. Type the rounding interval in seconds:','' ); if length(inp)<=0 then exit; val(inp,interval,error2); if interval<1 then interval:=1; if error2<>0 then begin beep; exit; end; index:=0; counter:=listview1.Items.Count; while index<counter do begin if listview1.Items[index].Selected then begin filename2:=listview1.items[index].caption; if load_image(false,false {plot}) then {load only} begin date_to_jd(head.date_obs,head.exposure);{convert head.date_obs string and head.exposure time to global variables jd_start (julian day start head.exposure) and jd_mid (julian day middle of the head.exposure)} jd:=round(jd_start*24*3600/interval)*interval/(24*3600); {round to time to interval } str(jd:1:5, timestr); if pos('-JD',object_name)=0 then object_name:=object_name+'-JD'+timestr {add head.date_obs without seconds} else object_name:=copy(object_name,1,length(object_name)-16)+'-JD'+timestr; update_text('OBJECT =',#39+object_name+#39); {spaces will be added/corrected later} new_analyse_required:=true;{allow reanalyse} if nrbits=16 then save_fits(img_loaded,filename2,16,true) else save_fits(img_loaded,filename2,-32,true); end else beep;{image not found} end; inc(index); {go to next file} end; end; procedure Tstackmenu1.FormDropFiles(Sender: TObject; const FileNames: array of String); var i,pageindex : integer; begin pageindex:=pagecontrol1.pageindex; case pageindex of 1: listview2.Items.beginUpdate;{darks} 2: listview3.Items.beginUpdate;{flats} 3: listview4.Items.beginUpdate;{flat darks} 7: listview6.Items.beginUpdate;{blink} 8: listview7.Items.beginUpdate;{photometry} 9: listview8.Items.beginUpdate;{inspector} 10: listview9.Items.beginUpdate;{mount} else listview1.Items.beginUpdate; {lights} end; for i := Low(FileNames) to High(FileNames) do begin if image_file_name(FileNames[i])=true then {readable image file} begin case pagecontrol1.pageindex of 1: listview_add(listview2,FileNames[i],true,D_nr);{darks} 2: listview_add(listview3,FileNames[i],true,F_nr);{flats} 3: listview_add(listview4,FileNames[i],true,FD_nr);{flat darks} 7: listview_add(listview6,FileNames[i],true,B_nr);{blink} 8: listview_add(listview7,FileNames[i],true,P_nr);{photometry} 9: listview_add(listview8,FileNames[i],true,P_nr);{inspector} 10: listview_add(listview9,FileNames[i],true,P_nr);{mount} else begin {lights} listview_add(listview1,FileNames[i],true,L_nr); if pos('_stacked',FileNames[i])<>0 then {do not check mark lights already stacked} listview1.items[ListView1.items.count-1].checked:=false; end; end; end; end; case pageindex of 1: listview2.Items.EndUpdate;{darks} 2: listview3.Items.EndUpdate;{flats} 3: listview4.Items.EndUpdate;{flat darks} 7: listview6.Items.EndUpdate;{blink} 8: listview7.Items.EndUpdate;{photometry} 9: listview8.Items.EndUpdate;{inspector} 10: listview9.Items.EndUpdate;{mount} else begin {lights} listview1.Items.EndUpdate; count_selected; {report the number of lights selected in images_selected and update menu indication} end; end; end; procedure Tstackmenu1.FormPaint(Sender: TObject); begin case pagecontrol1.tabindex of 7:more_indication1.visible:=stackmenu1.width<=export_aligned_files1.left+20; 8:more_indication1.visible:=stackmenu1.width<=mark_outliers_upto1.left+20; 9:more_indication1.visible:=stackmenu1.width<=GroupBox_test_images1.left+20; else more_indication1.visible:=false; end; end; procedure Tstackmenu1.help_blink1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#blink'); end; procedure Tstackmenu1.help_photometry1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#photometry'); end; procedure Tstackmenu1.listview7CustomDraw(Sender: TCustomListView; const ARect: TRect; var DefaultDraw: Boolean); begin stackmenu1.nr_total_photometry1.caption:=inttostr(sender.items.count);{update counting info} end; procedure Tstackmenu1.listview7CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean); begin {$ifdef mswindows} {$else} {unix} {temporary fix for CustomDraw not called} if Item.index=0 then stackmenu1.nr_total_photometry1.caption:=inttostr(sender.items.count);{update counting info} {$endif} Sender.Canvas.Font.Color := clmenutext;{required for high contrast settings. Otherwise it is always black} end; procedure Tstackmenu1.live_stacking_pause1Click(Sender: TObject); begin pause_pressed:=true; live_stacking_pause1.font.style:=[fsbold,fsunderline]; live_stacking1.font.style:=[]; Application.ProcessMessages; {process font changes} end; procedure Tstackmenu1.live_stacking_restart1Click(Sender: TObject); begin esc_pressed:=true; live_stacking_pause1.font.style:=[]; live_stacking1.font.style:=[]; Application.ProcessMessages; {process font changes} end; procedure Tstackmenu1.more_indication1Click(Sender: TObject); begin case pagecontrol1.tabindex of 7:stackmenu1.Width:=export_aligned_files1.left+export_aligned_files1.width+10;{set width if clicked on arrow} 8:stackmenu1.Width:=mark_outliers_upto1.left+mark_outliers_upto1.width+10; 9:stackmenu1.Width:=GroupBox_test_images1.left+GroupBox_test_images1.width+10; end; end; procedure Tstackmenu1.photometry_binx2Click(Sender: TObject); var c: integer; begin esc_pressed:=false; if (IDYES= Application.MessageBox('Binning images 2x2 for better detection. Original files will be preserved. Continue?', 'Bin 2x2', MB_ICONQUESTION + MB_YESNO) )=false then exit; listview7.Items.beginUpdate; for c:=0 to listview7.items.count-1 do begin if ((esc_pressed=false) and (listview7.Items.item[c].checked) ) then begin filename2:=listview7.items[c].caption; if fits_file_name(filename2)=false then begin memo2_message('█ █ █ █ █ █ Can'+#39+'t bin x 2. First analyse file list to convert to FITS !! █ █ █ █ █ █'); beep; exit; end; mainwindow.caption:=filename2; Application.ProcessMessages; if ((esc_pressed) or (binX2X3_file(2)=false)) {converts filename2 to binx2 version} then exit; listview7.Items[c].Checked:=false; listview_add(listview7,filename2,true,P_nr);{add binx2 file} end; end;{for loop} listview7.Items.endUpdate; end; procedure find_star_outliers(report_upto_magn: double; var outliers : star_list) {contains the four stars with largest SD } ; var stepnr,x_new,y_new,c,i,j,nr_images,smallest,w,h,w2,h2 : integer; stars_mean,stars_sd,stars_count : array of array of single; created : boolean; sd,xc,yc : double; const factor=10; {div factor to get small variations at the same location} begin memo2_message('Searching for outliers'); created:=false; stepnr:=0; nr_images:=0; w2:=999999; h2:=999999; outliers:=nil;{wil be used for detection later} repeat inc(stepnr); for c:=0 to stackmenu1.listview7.items.count-1 do {do all files} begin Application.ProcessMessages; if esc_pressed then begin exit; end; if stackmenu1.listview7.Items.item[c].checked then begin {read solution} {load file, and convert astrometric solution to vector solution} filename2:=stackmenu1.listview7.items[c].caption; if load_fits(filename2,true {light},false {only read header},false {update memo},0,head_2,img_temp)=false then begin esc_pressed:=true; exit;end; {calculate vectors from astrometric solution to speed up} sincos(head_2.dec0,SIN_dec0,COS_dec0); {do this in advance since it is for each pixel the same} astrometric_to_vector;{convert astrometric solution to vectors} w:=(starlistpack[c].width div factor); h:=(starlistpack[c].height div factor); if w2>w then w2:=w;{find smallest dimensions used} if h2>h then h2:=h; if created=false then begin setlength(stars_mean,w+1,h+1); setlength(stars_sd,w+1,h+1); setlength(stars_count,w+1,h+1); for i:=0 to w do for j:=0 to h do begin stars_mean[i,j]:=0; stars_sd[i,j]:=0; stars_count[i,j]:=0; end; created:=true; end; if starlistpack[c].height<>0 then {filled with data} begin if stepnr=1 then inc(nr_images);{keep record of number of lights} try for i:=0 to min(length(starlistpack[c].starlist[0])-2,5000) do {calculate mean of the found stars} begin xc:=(solution_vectorX[0]*(starlistpack[c].starlist[0,i])+solution_vectorX[1]*(starlistpack[c].starlist[1,i])+solution_vectorX[2]); {correction x:=aX+bY+c} yc:=(solution_vectorY[0]*(starlistpack[c].starlist[0,i])+solution_vectorY[1]*(starlistpack[c].starlist[1,i])+solution_vectorY[2]); {correction y:=aX+bY+c} if ((xc>=factor) and (xc<=starlistpack[c].width-1-factor) and (yc>=factor) and (yc<=starlistpack[c].height-1-factor)) then {image could be shifted and very close to the boundaries. Prevent runtime errors} begin x_new:=round(xc/factor); y_new:=round(yc/factor); if stepnr=1 then begin {CALCULATE MEAN of stars} stars_mean[x_new,y_new]:=stars_mean[x_new,y_new]+ starlistpack[c].flux_magn_offset-ln(starlistpack[c].starlist[3,i]{flux})*2.511886432/ln(10); {magnitude} stars_count[x_new,y_new]:=stars_count[x_new,y_new]+1;{counter} end else {CALCULATE SD of stars} if stepnr=2 then stars_sd[x_new,y_new]:= stars_sd[x_new,y_new]+sqr( (stars_mean[x_new,y_new]/stars_count[x_new,y_new])- (starlistpack[c].flux_magn_offset-ln(starlistpack[c].starlist[3,i]{flux})*2.511886432/ln(10)) ); {sd calculate by sqr magnitude difference from mean} end; end;{for loop} except beep; end; end;{valid image} end; end;{for c:=0 loop} until stepnr>2; if created then begin setlength(outliers,4,4); for i:=0 to 3 do for j:=0 to 3 do outliers[i,j]:=0; {find largest outliers} for i:=0 to w2 do for j:=0 to h2 do begin try if stars_count[i,j]>=round(nr_images*0.8) then {at least in 80% of the cases star detection} if (stars_mean[i,j]/stars_count[i,j])<=report_upto_magn then {magnitude lower then} begin sd:=sqrt(stars_sd[i,j]/stars_count[i,j]); if ((sd>outliers[2,0]) or (sd>outliers[2,1]) or (sd>outliers[2,2]) or (sd>outliers[2,3])) then begin if ((outliers[2,0]<=outliers[2,1]) and (outliers[2,0]<=outliers[2,2]) and (outliers[2,0]<=outliers[2,3])) then smallest:=0 else if ((outliers[2,1]<=outliers[2,0]) and (outliers[2,1]<=outliers[2,2]) and (outliers[2,1]<=outliers[2,3])) then smallest:=1 else if ((outliers[2,2]<=outliers[2,0]) and (outliers[2,2]<=outliers[2,1]) and (outliers[2,2]<=outliers[2,3])) then smallest:=2 else if ((outliers[2,3]<=outliers[2,0]) and (outliers[2,3]<=outliers[2,1]) and (outliers[2,3]<=outliers[2,2])) then smallest:=3; {replace the smallest sd} outliers[0,smallest]:=i*factor;{store x} outliers[1,smallest]:=j*factor;{store y} outliers[2,smallest]:=SD;{store sd} end; end; except beep; end; end ;{for loop} if nr_images<6 then memo2_message('Warning, not enough images for reliable outlier detection'); if outliers[2,0]<>0 then memo2_message('Found star 1 with magnitude variation. σ = '+ floattostr6(outliers[2,0])+' at x=' +inttostr(round(outliers[0,0]))+', y='+inttostr(round(outliers[1,0]))+'. Marked with yellow circle.'); if outliers[2,1]<>0 then memo2_message('Found star 2 with magnitude variation. σ = '+ floattostr6(outliers[2,1])+' at x=' +inttostr(round(outliers[0,1]))+', y='+inttostr(round(outliers[1,1]))+'. Marked with yellow circle.' ); if outliers[2,2]<>0 then memo2_message('Found star 3 with magnitude variation. σ = '+ floattostr6(outliers[2,2])+' at x=' +inttostr(round(outliers[0,2]))+', y='+inttostr(round(outliers[1,2]))+'. Marked with yellow circle.' ); if outliers[2,3]<>0 then memo2_message('Found star 4 with magnitude variation. σ = '+ floattostr6(outliers[2,3])+' at x=' +inttostr(round(outliers[0,3]))+', y='+inttostr(round(outliers[1,3]))+'. Marked with yellow circle.' ); end; // stars:=nil; stars_sd:=nil; stars_mean:=nil; stars_count:=nil; end; procedure Tstackmenu1.photometry_button1Click(Sender: TObject); var Save_Cursor : TCursor; magn,hfd1,star_fwhm,snr,flux,xc,yc,madVar,madCheck,madThree,medianVar,medianCheck,medianThree, backgr,hfd_med,apert,annul, rax1,decx1,rax2,decx2,rax3,decx3,xn,yn,adu_e : double; saturation_level : single; c,i,x_new,y_new,fitsX,fitsY,col,{first_image,}size,starX,starY,stepnr,countVar, countCheck,countThree : integer; flipvertical,fliphorizontal,init,refresh_solutions,analysedP,store_annotated, warned,success : boolean; starlistx : star_list; starVar, starCheck,starThree : array of double; outliers : array of array of double; astr,memo2_text,filename1 : string; function measure_star(deX,deY : double): string;{measure position and flux} //var //starX,starY :double; begin HFD(img_loaded,round(deX-1),round(deY-1),annulus_radius {14, annulus radius},flux_aperture,adu_e, hfd1,star_fwhm,snr,flux,xc,yc);{star HFD and FWHM} if ((hfd1<50) and (hfd1>0) and (snr>6)) then {star detected in img_loaded} begin if head.calstat='' then saturation_level:=64000 else saturation_level:=60000; {could be dark subtracted changing the saturation level} if ((img_loaded[0,round(xc),round(yc)]<saturation_level) and (img_loaded[0,round(xc-1),round(yc)]<saturation_level) and (img_loaded[0,round(xc+1),round(yc)]<saturation_level) and (img_loaded[0,round(xc),round(yc-1)]<saturation_level) and (img_loaded[0,round(xc),round(yc+1)]<saturation_level) and (img_loaded[0,round(xc-1),round(yc-1)]<saturation_level) and (img_loaded[0,round(xc-1),round(yc+1)]<saturation_level) and (img_loaded[0,round(xc+1),round(yc-1)]<saturation_level) and (img_loaded[0,round(xc+1),round(yc+1)]<saturation_level) ) then {not saturated star} begin magn:=starlistpack[c].flux_magn_offset - ln(flux)*2.511886432/ln(10); result:=floattostrf(magn, ffFixed, 5,3); {write measured magnitude to list} // mainwindow.image1.Canvas.textout(round(dex)+40,round(dey)+20,'hhhhhhhhhhhhhhh'+floattostrf(magn, ffgeneral, 3,3) ); // mainwindow.image1.Canvas.textout(round(dex)+20,round(dey)+20,'decX,Y '+floattostrf(deX, ffgeneral, 3,3)+','+floattostrf(deY, ffgeneral, 3,3)+' Xc,Yc '+floattostrf(xc, ffgeneral, 3,3)+','+floattostrf(yc, ffgeneral, 3,3)); // memo2_message(filename2+'decX,Y '+floattostrf(deX, ffgeneral, 4,4)+', '+floattostrf(deY, ffgeneral, 4,4)+' Xc,Yc '+floattostrf(xc, ffgeneral, 4,4)+', '+floattostrf(yc, ffgeneral, 4,4)+' '+result+ ' deltas:' + floattostrf(deX-xc, ffgeneral, 4,4)+',' + floattostrf(deY-yc, ffgeneral, 4,4)+'offset '+floattostrf(starlistpack[c].flux_magn_offset, ffgeneral, 6,6)+'fluxlog '+floattostrf(ln(flux)*2.511886432/ln(10), ffgeneral, 6,6) ); // if Flipvertical=false then starY:=(head.height-yc) else starY:=(yc); // if Fliphorizontal then starX:=(head.width-xc) else starX:=(xc); // if flux_aperture<99 {<>max setting}then // begin // mainwindow.image1.Canvas.Pen.style:=psSolid; // mainwindow.image1.canvas.ellipse(round(starX-flux_aperture-1),round(starY-flux_aperture-1),round(starX+flux_aperture+1),round(starY+flux_aperture+1));{circle, the y+1,x+1 are essential to center the circle(ellipse) at the middle of a pixel. Otherwise center is 0.5,0.5 pixel wrong in x, y} // end; // mainwindow.image1.canvas.ellipse(round(starX-annulus_radius),round(starY-annulus_radius),round(starX+annulus_radius),round(starY+annulus_radius));{three pixels, 1,2,3} // mainwindow.image1.canvas.ellipse(round(starX-annulus_radius-4),round(starY-annulus_radius-4),round(starX+annulus_radius+4),round(starY+annulus_radius+4)); end else result:='Saturated'; end else result:='?'; end; procedure plot_annulus(x,y: integer); {plot the aperture and annulus} begin if Flipvertical=false then starY:=(head.height-y) else starY:=(y); if Fliphorizontal then starX:=(head.width-x) else starX:=(x); if flux_aperture<99 {<>max setting}then mainwindow.image1.canvas.ellipse(round(starX-flux_aperture-1),round(starY-flux_aperture-1),round(starX+flux_aperture+1),round(starY+flux_aperture+1));{circle, the y+1,x+1 are essential to center the circle(ellipse) at the middle of a pixel. Otherwise center is 0.5,0.5 pixel wrong in x, y} mainwindow.image1.canvas.ellipse(round(starX-annulus_radius),round(starY-annulus_radius),round(starX+annulus_radius),round(starY+annulus_radius));{three pixels, 1,2,3} mainwindow.image1.canvas.ellipse(round(starX-annulus_radius-4),round(starY-annulus_radius-4),round(starX+annulus_radius+4),round(starY+annulus_radius+4)); end; procedure plot_outliers;{plot up to 4 yellow circles around the outliers} var k: integer; begin mainwindow.image1.Canvas.Pen.Color := clyellow; for k:=0 to length(outliers[0])-1 do begin if flipvertical=false then starY:=round(head.height-(outliers[1,k])) else starY:=round(outliers[1,k]); if Fliphorizontal then starX:=round(head.width-outliers[0,k]) else starX:=round(outliers[0,k]); mainwindow.image1.Canvas.ellipse(starX-20,starY-20, starX+20, starY+20);{indicate outlier rectangle} mainwindow.image1.Canvas.textout(starX+20,starY+20,'σ '+floattostrf(outliers[2,k], ffgeneral, 3,0));{add hfd as text} end; end; procedure nil_all; begin //img_temp:=nil;{free memory} starlistx:=nil;{free memory} starlistpack:=nil; {release memory} outliers:=nil; starCheck:=nil; starThree:=nil; Screen.Cursor:=crDefault;{back to normal } end; begin if listview7.items.count<=0 then exit; {no files} Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } save_settings2;{too many lost selected files . so first save settings} if ((pos('V',star_database1.text)=0) and (pos('v',star_database1.text)=0)) then memo2_message(star_database1.text +' used █ █ █ █ █ █ Warning, select a V database for accurate Johnson-V magnitudes !!! See tab alignment. █ █ █ █ █ █ '); {check is analyse is done} analysedP:=true; for c:=0 to listview7.items.count-1 do begin if ((listview7.Items.item[c].checked) and (listview7.Items.item[c].subitems.Strings[B_width]='' {width})) then analysedP:=false; end; if analysedP=false then stackmenu1.analysephotometry1Click(nil); application.processmessages;{show result} flipvertical:=mainwindow.flip_vertical1.Checked; fliphorizontal:=mainwindow.flip_horizontal1.Checked; apert:=strtofloat2(flux_aperture1.text); aperture_ratio:=apert;{remember apert setting} annul:=strtofloat2(annulus_radius1.text); esc_pressed:=false; warned:=false; memo2_message('Checking for astrometric solutions in FITS header required for star flux calibration against star database.'); refresh_solutions:=(sender=stackmenu1.refresh_astrometric_solutions1); {refresh astrometric solutions} {solve lights first to allow flux to magnitude calibration} memo2_text:=mainwindow.Memo1.Text;{backup fits header} for c:=0 to listview7.items.count-1 do {check for astrometric solutions} begin if ((esc_pressed=false) and (listview7.Items.item[c].checked) and (listview7.Items.item[c].subitems.Strings[P_astrometric]='')) then begin filename1:=listview7.items[c].caption; mainwindow.caption:=filename1; Application.ProcessMessages; {load image} if ((esc_pressed) or (load_fits(filename1,true {light},true,true {update memo},0,head_2,img_temp)=false)) then begin nil_all;{nil all arrays and restore cursor} exit; end; if ((head_2.cd1_1=0) or (refresh_solutions)) then begin listview7.Selected :=nil; {remove any selection} listview7.ItemIndex := c;{mark where we are. Important set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} listview7.Items[c].MakeVisible(False);{scroll to selected item} memo2_message(filename1+ ' Adding astrometric solution to files to allow flux to magnitude calibration using the star database.'); Application.ProcessMessages; if solve_image(img_temp,head_2,true {get hist}) then begin{match between loaded image and star database} if fits_file_name(filename1) then success:=savefits_update_header(filename1) else success:=save_tiff16_secure(img_temp,filename1);{guarantee no file is lost} if success=false then begin ShowMessage('Write error !!' + filename2);Screen.Cursor:=crDefault; exit;end; listview7.Items.item[c].subitems.Strings[P_astrometric]:='✓'; end else begin listview7.Items[c].Checked:=false; listview7.Items.item[c].subitems.Strings[P_astrometric]:=''; memo2_message(filename1+ 'Uncheck, no astrometric solution found for this file. Can'+#39+'t measure magnitude!'); end; end else begin listview7.Items.item[c].subitems.Strings[P_astrometric]:='✓'; end; end;{check for astrometric solutions} end;{for loop for astrometric solving } {astrometric calibration} if ((refresh_solutions) or (esc_pressed{stop} )) then begin mainwindow.Memo1.Text:= memo2_text;{restore fits header} mainwindow.memo1.visible:=true;{Show old header again} Screen.Cursor:=crDefault;{back to normal } if refresh_solutions then memo2_message('Ready') else memo2_message('Stopped, ESC pressed.'); exit; end; outliers:=nil; stepnr:=0; init:=false; setlength(starlistpack ,listview7.items.count);{to store found stars for each image. Used for finding outliers} for c:=0 to listview7.items.count-1 do starlistpack[c].height:=0;{use as marker for filled} memo2_message('Click on variable, Check and 3 stars(pink marker) to record magnitudes in the photometry list.'); repeat setlength(starVar,listview7.items.count); setlength(starCheck,listview7.items.count);{number of stars could fluctuate so set maximum space each loop} setlength(starThree,listview7.items.count); countVar:=0; countCheck:=0; countThree:=0; stepnr:=stepnr+1; {first step is nr 1} for c:=0 to listview7.items.count-1 do begin if ((esc_pressed=false) and (listview7.Items.item[c].checked) ) then begin listview7.Selected :=nil; {remove any selection} listview7.ItemIndex := c;{mark where we are. Important set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} listview7.Items[c].MakeVisible(False);{scroll to selected item} filename2:=listview7.items[c].caption; mainwindow.caption:=filename2; Application.ProcessMessages; if starlistpack=nil then begin nil_all; exit; end; {load image} if ((esc_pressed) or (load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded)=false)) then begin esc_pressed:=true; nil_all; exit; end; use_histogram(img_loaded,true {update}); {plot histogram, set sliders} if ((stepnr=1) and ((pos('F',head.calstat)=0) or (head.naxis3>1)) ) then begin if warned=false then begin if pos('F',head.calstat)=0 then memo2_message('█ █ █ █ █ █ Warning: Image not calibrated with a flat field (keyword CALSTAT). Absolute photometric accuracy will be lower. Calibrate images first using "calibrate only" option in stack menu. █ █ █ █ █ █'); if head.naxis3>1 then memo2_message('█ █ █ █ █ █ Warning: Colour image!! Absolute photometric accuracy will be lower. Process only raw images. Set bayer pattern correctly in tab "Stack method" and extract the green pixels in tab photometry. █ █ █ █ █ █') end; warned:=true;{only one message} listview7.Items.item[c].subitems.Strings[P_photometric]:='Poor'; end else begin listview7.Items.item[c].subitems.Strings[P_photometric]:='✓'; end; if starlistpack=nil then {should not happen but it happens?} begin nil_all; exit; end; if starlistpack[c].height=0 then {not filled with data} begin if apert<>0 then {aperture<>auto} begin analyse_image(img_loaded,head,30,false {report}, hfd_counter,backgr,hfd_med); {find background, number of stars, median HFD} if hfd_med<>0 then begin flux_aperture:=hfd_med*apert/2;{radius} annulus_radius:=min(50,round(hfd_med*annul/2)-1);{radius -rs ..0..+rs, Limit to 50 to prevent runtime errors} end else flux_aperture:=99;{radius for measuring aperture} end else{auto} begin flux_aperture:=99;{radius for measuring using a small aperture} annulus_radius:=14;{annulus radius} end; {calibrate using POINT SOURCE calibration using hfd_med found earlier!!!} plot_and_measure_stars(true {calibration},false {plot stars},true{report lim magnitude}); {get flux_magn_offset} listview7.Items.item[c].subitems.Strings[p_limmagn]:=floattostrF(magn_limit,FFgeneral,4,2); if flux_magn_offset<>0 then begin measure_magnitudes(annulus_radius,false {deep},starlistx); {analyse} starlistpack[c].starlist:=starlistX;{store found stars in memory for finding outlier later} starlistpack[c].width:=head.width; starlistpack[c].height:=head.height; starlistpack[c].flux_magn_offset:=flux_magn_offset; end else starlistpack[c].height:=0; {mark as not valid measurement} end; setlength(img_temp,head.naxis3,head.width,head.height);{new size} {standard aligned blink} if init=false then {init} begin initialise_var1;{set variables correct for astrometric solution calculation. Use first file as reference and header "head"} head_ref:=head;{backup solution for deepsky annotation} sensor_coordinates_to_celestial(shape_fitsX,shape_fitsY,rax1,decx1 {fitsX, Y to ra,dec}); abbreviation_var_IAU:=prepare_IAU_designation(rax1,decx1); sensor_coordinates_to_celestial(shape_fitsX2,shape_fitsY2,{var} rax2,decx2 {position}); name_check_iau:=prepare_IAU_designation(rax2,decx2); sensor_coordinates_to_celestial(shape_fitsX3,shape_fitsY3,rax3,decx3 {fitsX, Y to ra,dec}); init:=true; end; mainwindow.image1.Canvas.Pen.Mode := pmMerge; mainwindow.image1.Canvas.Pen.width :=1;{thickness lines} mainwindow.image1.Canvas.Pen.Color := clRed; mainwindow.image1.Canvas.Pen.Cosmetic:= false; {gives better dotted lines} mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.font.color:=clyellow; mainwindow.image1.Canvas.font.size:=10; //round(max(10,8*head.height/image1.height));{adapt font to image dimensions} {measure the three stars selected by the mouse in the ORIGINAL IMAGE} listview7.Items.item[c].subitems.Strings[P_magn1]:=''; {MAGN, always blank} listview7.Items.item[c].subitems.Strings[P_magn2]:=''; {MAGN, always blank} listview7.Items.item[c].subitems.Strings[P_magn3]:=''; {MAGN, always blank} if starlistpack[c].flux_magn_offset<>0 then {valid flux calibration} begin // do var star if mainwindow.shape_alignment_marker1.visible then begin adu_e:=retrieve_ADU_to_e_unbinned(head.egain);//Used for SNR calculation in procedure HFD. Factor for unbinned files. Result is zero when calculating in e- is not activated in the statusbar popup menu. Then in procedure HFD the SNR is calculated using ADU's only. mainwindow.image1.Canvas.Pen.Color := clRed; celestial_to_pixel(rax1,decx1, xn,yn); {ra,dec to fitsX,fitsY} astr:=measure_star(xn,yn); {var star} listview7.Items.item[c].subitems.Strings[P_magn1]:=astr; listview7.Items.item[c].subitems.Strings[P_snr]:=inttostr(round(snr)); if ((astr<>'?') and (copy(astr,1,1)<>'S')) then {Good star detected} begin starVar[countVar]:=strtofloat2(astr); inc(countVar); end; end; if mainwindow.shape_alignment_marker2.visible then begin //do check star mainwindow.image1.Canvas.Pen.Color := clGreen; celestial_to_pixel(rax2,decx2, xn,yn); {ra,dec to fitsX,fitsY} astr:=measure_star(xn,yn); {chk} listview7.Items.item[c].subitems.Strings[P_magn2]:=astr; if ((astr<>'?') and (copy(astr,1,1)<>'S')) then {Good star detected} begin starCheck[countCheck]:=strtofloat2(astr); inc(countCheck); end; end; if mainwindow.shape_alignment_marker3.visible then begin //do star 3 mainwindow.image1.Canvas.Pen.Color := clAqua; {star 3} celestial_to_pixel(rax3,decx3, xn,yn); {ra,dec to fitsX,fitsY} astr:=measure_star(xn,yn); {star3} listview7.Items.item[c].subitems.Strings[P_magn3]:=astr; if ((astr<>'?') and (copy(astr,1,1)<>'S')) then {Good star detected} begin starThree[countThree]:=strtofloat2(astr); inc(countThree); end; end; end; {calculate vectors from astrometric solution to speed up} sincos(head.dec0,SIN_dec0,COS_dec0); {do this in advance since it is for each pixel the same} astrometric_to_vector;{convert astrometric solution to vectors} {shift, rotate to match lights} for fitsY:=1 to head.height do for fitsX:=1 to head.width do begin x_new:=round(solution_vectorX[0]*(fitsx-1)+solution_vectorX[1]*(fitsY-1)+solution_vectorX[2]); {correction x:=aX+bY+c} y_new:=round(solution_vectorY[0]*(fitsx-1)+solution_vectorY[1]*(fitsY-1)+solution_vectorY[2]); {correction y:=aX+bY+c} if ((x_new>=0) and (x_new<=head.width-1) and (y_new>=0) and (y_new<=head.height-1)) then for col:=0 to head.naxis3-1 do {all colors} img_temp[col,x_new,y_new]:=img_loaded[col,fitsX-1,fitsY-1] ; end; img_loaded:=nil; img_loaded:=img_temp; {quick and dirty method to correct annotations for aligned lights} head.crpix1:=solution_vectorX[0]*(head.crpix1-1)+solution_vectorX[1]*(head.crpix2-1)+solution_vectorX[2];{correct for marker_position at ra_dec position} head.crpix2:=solution_vectorY[0]*(head.crpix1-1)+solution_vectorY[1]*(head.crpix2-1)+solution_vectorY[2]; head.cd1_1:=abs(head.cd1_1)*sign(head_ref.CD1_1); head.cd1_2:=abs(head.cd1_2)*sign(head_ref.CD1_2); head.cd2_1:=abs(head.cd2_1)*sign(head_ref.CD2_1); head.cd2_2:=abs(head.cd2_2)*sign(head_ref.CD2_2); store_annotated:=annotated;{store temporary annotated} annotated:=false;{prevent annotations are plotted in plot_fits} plot_fits(mainwindow.image1,false {re_center},true); annotated:=store_annotated;{restore anotated value} if ((annotated) and (mainwindow.annotations_visible1.checked)) then //header annotations plot_annotations(true {use solution vectors!!!!},false); {corrected annotations in case a part of the lights are flipped in the alignment routien} mainwindow.image1.Canvas.Pen.width :=1;{thickness lines} mainwindow.image1.Canvas.Pen.Cosmetic:= false; {gives better dotted lines} mainwindow.image1.Canvas.Pen.style:=psSolid; mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.font.color:=clyellow; mainwindow.image1.Canvas.font.size:=10; //round(max(10,8*head.height/image1.height));{adapt font to image dimensions} {plot the aperture and annulus} if starlistpack[c].flux_magn_offset<>0 then {valid flux calibration} begin mainwindow.image1.Canvas.Pen.mode:=pmCopy; if mainwindow.shape_alignment_marker1.visible then begin mainwindow.image1.Canvas.Pen.Color := clRed; plot_annulus(round(shape_fitsX),round(shape_fitsY)); end; if mainwindow.shape_alignment_marker2.visible then begin mainwindow.image1.Canvas.Pen.Color := clGreen; plot_annulus(round(shape_fitsX2),round(shape_fitsY2)); end; if mainwindow.shape_alignment_marker3.visible then begin mainwindow.image1.Canvas.Pen.Color := clAqua; {star 3} plot_annulus(round(shape_fitsX3),round(shape_fitsY3)); end; end; mainwindow.image1.Canvas.Pen.Mode := pmMerge; mainwindow.image1.Canvas.Pen.width :=round(1+head.height/mainwindow.image1.height);{thickness lines} mainwindow.image1.Canvas.Pen.style:=psSolid; mainwindow.image1.Canvas.Pen.Color := $000050; {dark red} if starlistpack[c].height<>0 then {valid measurement} for i:=0 to length(starlistpack[c].starlist[0])-2 do begin size:=round(5*starlistpack[c].starlist[2,i]);{5*hfd} x_new:=round(solution_vectorX[0]*(starlistpack[c].starlist[0,i])+solution_vectorX[1]*(starlistpack[c].starlist[1,i])+solution_vectorX[2]); {correction x:=aX+bY+c} y_new:=round(solution_vectorY[0]*(starlistpack[c].starlist[0,i])+solution_vectorY[1]*(starlistpack[c].starlist[1,i])+solution_vectorY[2]); {correction y:=aX+bY+c} if flipvertical=false then starY:=(head.height-y_new) else starY:=(y_new); if Fliphorizontal then starX:=(head.width-x_new) else starX:=(x_new); mainwindow.image1.Canvas.Rectangle(starX-size,starY-size, starX+size, starY+size);{indicate hfd with rectangle} magn:=starlistpack[c].flux_magn_offset-ln(starlistpack[c].starlist[3,i]{flux})*2.511886432/ln(10); mainwindow.image1.Canvas.textout(starX+size,starY-size,floattostrf(magn*10, ffgeneral, 3,0));{add magnitude as text} end;{measure marked stars} {plot outliers (variable stars)} if outliers<>nil then plot_outliers; if annotate_mode1.itemindex>0 then mainwindow.variable_star_annotation1Click(nil); end;{find star magnitudes} end; if ((stepnr=1) and (countvar>4)) then {do it once after one cycle finished} begin if mainwindow.noise_in_electron1.checked then //report SNR info based on the last checked file. memo2_message('SNR reporting based on EGAIN= '+ head.egain+'. Additional factor for unbinned images '+ inttostr(egain_extra_factor)) else memo2_message('SNR reporting based on ADUs. Can be changed to electrons and factors can be set using the popup menu of the viewer statusbar'); find_star_outliers(strtofloat2(mark_outliers_upto1.text), outliers); if outliers<>nil then plot_outliers; end; {do statistics} if countVar>=4 then begin mad_median(starVar,countVar{length},{var}madVar,medianVar);{calculate mad and median without modifying the data} memo2_message('Var star, median: '+floattostrf(medianVar, ffgeneral, 4,4)+', σ: '+floattostrf(1.4826*madVar {1.0*sigma}, ffgeneral, 4,4)); end else madVar:=0; if countCheck>=4 then begin mad_median(starCheck,countCheck{counter},{var}madCheck,medianCheck);{calculate mad and median without modifying the data} memo2_message('Check star, median: '+floattostrf(medianCheck, ffgeneral, 4,4)+', σ: '+floattostrf(1.4826*madCheck {1.0*sigma}, ffgeneral, 4,4)); end else madCheck:=0; if countThree>4 then begin mad_median(starThree,countThree{counter},{var}madThree,medianThree);{calculate mad and median without modifying the data} memo2_message('3 star, median: '+floattostrf(medianThree, ffgeneral, 4,4)+', σ: '+floattostrf(1.4826*madThree {1.0*sigma}, ffgeneral, 4,4)); end else madThree:=0; photometry_stdev:=madCheck*1.4826;{mad to standard deviation} plot_graph; {aavso report} until ((esc_pressed) or (sender<>photometry_repeat1 {single run})); nil_all;{nil all arrays and restore cursor} end; procedure Tstackmenu1.saturation_tolerance1Change(Sender: TObject); begin stackmenu1.rainbow_panel1.refresh;{plot colour disk in on paint event. Onpaint is required for MacOS} end; procedure Tstackmenu1.save_result1Click(Sender: TObject); var dot_pos :integer; begin // if pos(' original',filename2)=0 then begin dot_pos:=length(filename2); repeat dec(dot_pos); until ((filename2[dot_pos]='.') or (dot_pos<=1)); insert(' equalised',filename2,dot_pos); end; save_fits(img_loaded,filename2 ,-32, false); if fileexists(filename2) then begin saved1.caption:='Saved'; report_results(object_name,'',0,-1{no icon});{report result in tab results} end else saved1.caption:=''; {save result, step 6} undo_button_equalise_background1.enabled:=false; undo_button_equalise_background1.caption:=''; go_step_two1.enabled:=false; end; procedure Tstackmenu1.save_settings_extra_button1Click(Sender: TObject); begin save_settings2;{too many lost selected files . so first save settings} end; procedure star_smooth(img: image_array;x1,y1: integer); const max_ri=50; //sqrt(sqr(rs+rs)+sqr(rs+rs))+1; var x2,y2,rs,i,j,k,counter,col,drop_off :integer; val,bg_average,rgb,luminance : double; color,bg,bg_standard_deviation : array[0..2] of double; value_histogram : array [0..max_ri] of double; begin rs:=14;{14 is test box of 28, HFD maximum is about 28} if ((x1-rs-4<=0) or (x1+rs+4>=head.width-1) or (y1-rs-4<=0) or (y1+rs+4>=head.height-1) ) then begin exit;end; try for col:=0 to 2 do begin counter:=0; bg_average:=0; for i:=-rs-4 to rs+4 do {calculate mean at square boundaries of detection box} for j:=-rs-4 to rs+4 do begin if ( (abs(i)>rs) and (abs(j)>rs) ) then {measure only outside the box} begin val:=img[col,x1+i,y1+j]; if val>0 then begin bg_average:=bg_average+val; inc(counter) end; end; end; bg_average:=bg_average/(counter+0.0001); {mean value background} bg[col]:=bg_average; end; for col:=0 to 2 do begin counter:=0; bg_standard_deviation[col]:=0; for i:=-rs-4 to rs+4 do {calculate standard deviation background at the square boundaries of detection box} for j:=-rs-4 to rs+4 do begin if ( (abs(i)>rs) and (abs(j)>rs) ) then {measure only outside the box} begin val:=img[col,x1+i,y1+j]; if ((val<=2*bg[col]) and (val>0)) then {not an outlier} begin bg_standard_deviation[col]:=bg_standard_deviation[col]+sqr(bg[col]-val); inc(counter); end; end; end; bg_standard_deviation[col]:=sqrt(bg_standard_deviation[col]/(counter+0.0001)); {standard deviation in background} end; for k:=0 to max_ri do {calculate distance to average value histogram} begin val:=0; counter:=0; for i:=-k to k do {square around center} begin val:=val+img[col,x1+i,y1+k]; val:=val+img[col,x1+i,y1-k]; val:=val+img[col,x1+k,y1+i]; val:=val+img[col,x1-k,y1+i]; inc(counter,4); end; value_histogram[k]:=val/counter;{add average value for distance k from center} end; k:=0; repeat {find slow down star value from center} inc(k); until ((value_histogram[k-1]<1.3*value_histogram[k]) or (k>=max_ri)); drop_off:=k; // Get average star colour for col:=0 to 2 do begin color[col]:=0; for i:=-rs to rs do for j:=-rs to rs do begin x2:=x1+i; y2:=y1+j; if sqr(drop_off)>i*i+j*j then {within star} begin val:=img[col,x2,y2]-bg[col]; if val<60000 {not saturated} then color[col] :=color[col]+ img[col,x2,y2]-bg[col];{if written in separate term it would be 20% faster but having fixed steps} end; end; end; // apply average star colour on pixels rgb:=color[0]+color[1]+color[2]+0.00001; {0.00001, prevent dividing by zero} for i:=-rs to rs do for j:=-rs to rs do begin x2:=x1+i; y2:=y1+j; if sqr(drop_off)>i*i+j*j then {within star} begin luminance:=( img[0,x2,y2]-bg[0] +img[1,x2,y2]-bg[1] +img[2,x2,y2]-bg[2])/3; img[0,x2,y2]:=bg[0]+luminance*color[0]/rgb; img[1,x2,y2]:=bg[1]+luminance*color[1]/rgb; img[2,x2,y2]:=bg[2]+luminance*color[2]/rgb; img_temp[0,x2,y2]:=1; {mark as processed} end; end; except end; end; procedure smart_colour_smooth( var img: image_array; wide, sd:double; preserve_r_nebula,measurehist:boolean);{Bright star colour smooth. Combine color values of wide x wide pixels, keep luminance intact} var fitsX,fitsY,x,y,step,x2,y2,count,width5,height5 : integer; img_temp2 : image_array; flux,red,green,blue,rgb,r,g,b,sqr_dist,strongest_colour_local,top,bg,r2,g2,b2,noise_level1, peak,bgR2,bgB2,bgG2,highest_colour,lumr : single; bgR,bgB,bgG : double; copydata,red_nebula : boolean; begin if length(img)<3 then exit;{not a three colour image} width5:=Length(img[0]); {width} height5:=Length(img[0][0]); {height} setlength(img_temp2,3,width5,height5);{set length of image array} step:= round(wide) div 2; get_background(0,img,measurehist {hist},true {noise level},{var} bgR,star_level);{calculate red background, noise_level and star_level} get_background(1,img,measurehist {hist},false{noise level},{var} bgG,star_level);{calculate green background} get_background(2,img,measurehist {hist},false {noise level},{var} bgB,star_level); noise_level1:=noise_level[0];{red noise} bg:=(bgR+bgG+bgB)/3; {average background} for fitsY:=0 to height5-1 do for fitsX:=0 to width5-1 do begin red:=0; green:=0; blue:=0; count:=0; peak:=0; bgR2:=65535; bgG2:=65535; bgB2:=65535; r2:=img[0,fitsX,fitsY]-bgR; g2:=img[1,fitsX,fitsY]-bgG; b2:=img[2,fitsX,fitsY]-bgB; if ( (r2>sd*noise_level1) or (g2>sd*noise_level1) or (b2>sd*noise_level1) ) then {some relative flux} begin for y:=-step to step do for x:=-step to step do begin x2:=fitsX+x; y2:=fitsY+y; if ((x2>=0) and (x2<width5) and (y2>=0) and (y2<height5) ) then {within image} begin sqr_dist:=x*x+y*y; if sqr_dist<=step*step then {circle only} begin r:= img[0,x2,y2]; G:= img[1,x2,y2]; B:= img[2,x2,y2]; {find peak value} if r>peak then peak:=r; if g>peak then peak:=g; if b>peak then peak:=b; {find lowest values. In some cases the background nebula} if r<bgR2 then bgR2:=r; if g<bgG2 then bgG2:=g; if b<bgB2 then bgB2:=b; if ((r<60000) and (g<60000) and (b<60000)) then {no saturation, ignore saturated pixels} begin begin if (r-bgR)>0 then red :=red+ (r-bgR); {level >0 otherwise centre of M31 get yellow circle} if (g-bgG)>0 then green:=green+ (g-bgG); if (b-bgB)>0 then blue:= blue + (b-bgB); inc(count); end; end; end; end; end; end; copydata:=true; rgb:=0; if count>=1 then begin red:=red/count;{scale using the number of data points=count} green:=green/count; blue:=blue/count; if peak>star_level then {star level very close} begin highest_colour:=max(r2,max(g2,b2)); if preserve_r_nebula then red_nebula:=((highest_colour=r2) and (r2-(bgR2-bgR)<150){not the star} and (bgR2-bgR>3*noise_level1)) else red_nebula:=false; if red_nebula=false then begin if red<blue*1.06 then{>6000k} green:=max(green,0.6604*red+0.3215*blue); {prevent purple stars, purple stars are physical not possible. Emperical formula calculated from colour table http://www.vendian.org/mncharity/dir3/blackbody/UnstableURLs/bbr_color.html} flux:=r2+g2+b2;//pixel flux rgb:=red+green+blue+0.00001; {average pixel flux, 0.00001, prevent dividing by zero} strongest_colour_local:=max(red,max(green,blue)); top:=bg + strongest_colour_local*(flux/rgb);{calculate the highest colour value} if top>=65534.99 then flux:=flux-(top-65534.99)*rgb/strongest_colour_local;{prevent values above 65535} lumr:=flux/rgb; img_temp2[0,fitsX,fitsY]:=bg+ red*lumr; //usg average bg and not bgR. See "if copydata" below. img_temp2[1,fitsX,fitsY]:=bg+ green*lumr; img_temp2[2,fitsX,fitsY]:=bg+ blue*lumr; copydata:=false;{data is already copied} end; end; end; if copydata then {keep original data but adjust zero level} begin img_temp2[0,fitsX,fitsY]:=max(0,bg+r2);{copy data, but equalise background levels by using the same background value} img_temp2[1,fitsX,fitsY]:=max(0,bg+g2); img_temp2[2,fitsX,fitsY]:=max(0,bg+b2); end; end; img:=img_temp2;{copy the array} img_temp2:=nil; end; procedure green_purple_filter( var img: image_array);{Balances RGB to remove green and purple. For e.g. Hubble palette} var fitsX,fitsY : integer; r2,g2,b2, lum,ratio : double; begin if length(img)<3 then exit;{not a three colour image} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin r2:=img[0,fitsX,fitsY]; g2:=img[1,fitsX,fitsY]; b2:=img[2,fitsX,fitsY]; if ((g2>r2) and (g2>b2)) then begin lum:=r2+g2+b2; if r2>=b2 then {red stronger then blue} begin ratio:=min(r2/max(b2,0.001),30); r2:=lum*ratio/(ratio+ratio+1); g2:=r2; b2:=lum*1/(ratio+ratio+1) end else begin {blue stronger then red} ratio:=min(b2/max(r2,0.001),30); b2:=lum*ratio/(ratio+ratio+1); g2:=b2; r2:=lum*1/(ratio+ratio+1) end; img[0,fitsX,fitsY]:=r2; img[1,fitsX,fitsY]:=g2; img[2,fitsX,fitsY]:=b2; end; if ((g2<r2) and (g2<b2)) then {to weak green, purple background} begin lum:=r2+g2+b2; if r2>=b2 then {red stronger then blue} begin ratio:=min(r2/max(b2,0.001),30); r2:=lum/(1+1+ratio); g2:=r2; b2:=lum*ratio/(1+1+ratio); end else begin {blue stronger then red} ratio:=min(b2/max(r2,0.001),30); b2:=lum/(1+1+ratio); g2:=b2; r2:=lum*ratio/(1+1+ratio); end; img[0,fitsX,fitsY]:=r2; img[1,fitsX,fitsY]:=g2; img[2,fitsX,fitsY]:=b2; end; end; end; procedure Tstackmenu1.smart_colour_smooth_button1Click(Sender: TObject); begin if Length(img_loaded)<3 then begin memo2_message('Error, no three colour image loaded!'); exit; end; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; smart_colour_smooth(img_loaded, strtofloat2(smart_smooth_width1.text),strtofloat2(smart_colour_sd1.text),preserve_red_nebula1.checked,false); plot_fits(mainwindow.image1,false,true);{plot real} Screen.Cursor:=crDefault; end; procedure Tstackmenu1.classify_filter1Click(Sender: TObject); begin stackmenu1.stack_method1Change(nil);{update several things including raw_box1.enabled:=((mosa=false) and filter_groupbox1.enabled} end; procedure Tstackmenu1.apply_get_background1Click(Sender: TObject); var Save_Cursor : TCursor; radius : integer; begin if head.naxis<>0 then begin Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; {move copy to img_backup} try radius:=strtoint(extract_background_box_size1.text);except end; apply_most_common(img_backup[index_backup].img,img_loaded,radius); {apply most common filter on first array and place result in second array} plot_fits(mainwindow.image1,true,true);{plot real} Screen.Cursor:=crDefault; end; end; procedure Tstackmenu1.help_osc_menu1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#osc_menu'); end; procedure Tstackmenu1.help_uncheck_outliers1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#uncheck_outliers'); end; procedure Tstackmenu1.list_to_clipboard1Click(Sender: TObject); {copy seleced lines to clipboard} var index,c : integer; info : string; lv : tlistview; begin info:=''; if sender=list_to_clipboard9 then lv:=listview9 else if sender=list_to_clipboard8 then lv:=listview8 else if sender=list_to_clipboard7 then lv:=listview7 else if sender=list_to_clipboard6 then lv:=listview6 else if sender=list_to_clipboard1 then lv:=listview1 else begin beep; exit; end; {get column names} for c := 0 to lv.Items[0].SubItems.Count-1 do try info:=info+lv.columns[c].caption+#9; except info:=info+'Error'+#9; end; info:=info+slinebreak; {get data} for index:=0 to lv.items.count-1 do begin if lv.Items[index].Selected then begin info:=info+lv.items[index].caption; {get sub items} for c := 0 to lv.Items[index].SubItems.Count - 1 do try info:=info+#9+lv.Items.item[index].subitems.Strings[c]; except info:=info+#9+'Error'; end; info:=info+slinebreak; end; end; Clipboard.AsText:=info; end; procedure Tstackmenu1.selectall1Click(Sender: TObject); begin if sender=selectall1 then begin listview1.selectall; listview1.setfocus;{set focus for next ctrl-C. Somehow it is lost} end; if sender=selectall2 then begin listview2.selectall; listview2.setfocus; end; if sender=selectall3 then begin listview3.selectall; listview3.setfocus; end; if sender=selectall4 then begin listview4.selectall; listview4.setfocus; end; if sender=selectall5 then begin listview5.selectall; listview5.setfocus; end; if sender=selectall6 then begin listview6.selectall; listview6.setfocus; end; if sender=selectall7 then begin listview7.selectall; listview7.setfocus; end; if sender=selectall8 then begin listview8.selectall; listview8.setfocus; end; if sender=selectall9 then begin listview9.selectall; listview9.setfocus; end; end; procedure remove_background( var img: image_array); var fitsX,fitsY : integer; luminance,red,green,blue : double; begin if length(img)<3 then exit;{not a three colour image} for fitsY:=2 to head.height-1-2 do for fitsX:=2 to head.width-1-2 do begin red:=img[0,fitsX,fitsY]; green:=img[1,fitsX,fitsY]; blue:=img[2,fitsX,fitsY]; luminance:=red+blue+green+0.00001; {0.00001, prevent dividing by zero} img[0,fitsX , fitsY ]:=red/luminance; img[1,fitsX , fitsY ]:=green/luminance; img[2,fitsX , fitsY ]:=blue/luminance; end; end; procedure Tstackmenu1.apply_remove_background_colour1Click(Sender: TObject); var fitsX,fitsY: integer; background_r,background_g,background_b, red,green,blue,signal_R,signal_G,signal_B,sigma,lumn : double; begin if head.naxis3<3 then exit;{prevent run time error mono lights} // if head.naxis=0 then exit; Screen.Cursor:=crHourglass; application.processmessages; backup_img; sigma:=strtofloat2(sigma_decolour1.text);{standard deviation factor used} get_background(1,img_loaded,true {hist},true {noise level},{var}background_G, star_level);{calculate background and noise_level} get_background(2,img_loaded,true {hist},true {noise level}, {var}background_B, star_level);{calculate background and noise_level} {red at last since all brigthness/contrast display is based on red} get_background(0,img_loaded,true {hist},true {noise level}, {var}background_R, star_level);{calculate background and noise_level} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin red:=img_loaded[0,fitsX,fitsY]; green:=img_loaded[1,fitsX,fitsY]; blue:=img_loaded[2,fitsX,fitsY]; if ((red-background_r<sigma*noise_level[0]) and (green-background_G<sigma*noise_level[1]) and (blue-background_B<sigma*noise_level[2])) then {low luminance signal} begin {distribute the colour to luminance} signal_R:=red-background_R; signal_G:=green-background_G; signal_B:=blue-background_B; lumn:=(signal_R+signal_G+signal_B)/3;{make mono} red:=background_r+lumn; green:=background_G+lumn; blue:=background_B+lumn; end; img_loaded[0,fitsX , fitsY ]:=red; img_loaded[1,fitsX , fitsY ]:=green; img_loaded[2,fitsX , fitsY ]:=blue; end; plot_fits(mainwindow.image1,false,true);{plot} Screen.cursor:=crDefault; end; procedure Tstackmenu1.reset_factors1Click(Sender: TObject); begin add_valueR1.Text:='0.0'; add_valueG1.Text:='0.0'; add_valueB1.Text:='0.0'; edit_noise1.Text:='0.0'; multiply_red1.Text:='1.0'; multiply_green1.Text:='1.0'; multiply_blue1.Text:='1.0'; end; procedure Tstackmenu1.search_fov1Change(Sender: TObject); begin fov_specified:=true;{user has entered a FOV manually} end; procedure Tstackmenu1.solve_and_annotate1Change(Sender: TObject); begin update_annotation1.enabled:=solve_and_annotate1.checked;{update menu} end; procedure Tstackmenu1.SpeedButton2Click(Sender: TObject); begin lat_default:=InputBox('Default observer location:','Enter the default observer latitude in degrees [DD.DDD or DD MM]',lat_default ); long_default:=InputBox('Default observer location:','Enter the default observer longitude in degrees. East is positive, West is negative [DDD.DDD or DD MM]',long_default ); if length(long_default)>0 then save_settings2; end; procedure Tstackmenu1.star_database1DropDown(Sender: TObject); var SearchRec: TSearchRec; s : string; begin with stackmenu1 do begin star_database1.items.clear; if SysUtils.FindFirst(database_path+'*0101.*', faAnyFile, SearchRec)=0 then begin repeat s:=uppercase(copy(searchrec.name,1,3)); star_database1.items.add(s); until SysUtils.FindNext(SearchRec) <> 0; end; SysUtils.FindClose(SearchRec); star_database1.items.add('auto'); end; flux_magn_offset:=0;{reset flux calibration. Required if V17 is selected instead of H17} end; procedure Tstackmenu1.apply_box_filter2Click(Sender: TObject); begin if Length(img_loaded)=0 then begin memo2_message('Error, no image in viewer loaded!'); exit; end; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; box_blur(1 {nr of colors},2,img_loaded); use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false,true);{plot real} Screen.Cursor:=crDefault; end; procedure Tstackmenu1.tab_monitoring1Show(Sender: TObject); begin target_group1.enabled:=stackmenu1.monitor_action1.itemindex=4; end; procedure Tstackmenu1.test_osc_normalise_filter1Click(Sender: TObject); begin if Length(img_loaded)=0 then begin memo2_message('Error, no image in viewer loaded!'); exit; end; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; check_pattern_filter(img_loaded); use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false,true);{plot real} Screen.Cursor:=crDefault; end; procedure Tstackmenu1.analyseblink1Click(Sender: TObject); begin analyse_listview(listview6,true {light},false {full fits},false{refresh}); listview6.alphasort; {sort on time} end; procedure Tstackmenu1.annotate_mode1Change(Sender: TObject); begin vsx:=nil;//clear downloaded database vsp:=nil; end; procedure Tstackmenu1.browse_monitoring1Click(Sender: TObject); var live_monitor_directory : string; begin if SelectDirectory('Select directory to monitor', monitoring_path1.caption , live_monitor_directory) then begin monitoring_path1.caption:=live_monitor_directory;{show path} end; end; procedure Tstackmenu1.Button1Click(Sender: TObject); begin form_listbox1:=TForm_listbox1.Create(self); {in project option not loaded automatic} form_listbox1.ShowModal; if object_found then begin target1.caption:=keyboard_text; ra_target:=ra_data;{target for manual mount} dec_target:=dec_data; end; form_listbox1.release; report_delta;{update delta position of target} end; procedure Tstackmenu1.calibrate_prior_solving1Change(Sender: TObject); begin if calibrate_prior_solving1.checked then check_pattern_filter1.checked:=false; end; procedure Tstackmenu1.FormDestroy(Sender: TObject); begin bsolutions:=nil;{just to be sure to clean up} end; procedure Tstackmenu1.help_monitoring1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#monitoring'); end; procedure Tstackmenu1.help_mount_tab1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#mount_tab'); end; procedure Tstackmenu1.listview1ItemChecked(Sender: TObject; Item: TListItem); begin if item.checked=false then begin item.SubitemImages[L_quality]:=-1; {no marker. Required for autoselect to remove this item permanent from statistics} {$ifdef darwin} {MacOS} item.subitems.Strings[L_quality]:=add_unicode('', item.subitems.Strings[L_quality]);//remove crown or thumb down {$endif} end; end; procedure Tstackmenu1.live_monitoring1Click(Sender: TObject); begin save_settings2;{too many lost selected files . so first save settings} esc_pressed:=false; live_monitoring1.font.style:=[fsbold,fsunderline]; Application.ProcessMessages; {process font changes} monitoring(monitoring_path1.caption){monitor a directory} end; procedure Tstackmenu1.auto_select1Click(Sender: TObject); var index,total: integer; psx,psy : string; someresult : boolean; begin total:=listview1.Items.Count-1; esc_pressed:=false; someresult:=false; index:=0; shape_fitsX:=-99; while index<=total do begin if listview1.Items[index].Selected then begin filename2:=listview1.items[index].caption; psx:=ListView1.Items.item[index].subitems.Strings[L_X]; if psx<>'' then begin shape_fitsX:=-1+ strtofloat2(psx);{keep updating each image} psy:=ListView1.Items.item[index].subitems.Strings[L_Y]; shape_fitsY:=-1+ round(strtofloat2(psy));{keep updating each image} end else if shape_fitsX>0 {at least one reference found} then if load_image(true,false {plot}) then {load} begin if find_reference_star(img_loaded) then begin ListView1.Items.item[index].subitems.Strings[L_X]:=floattostrF(shape_fitsX,ffFixed,0,2); ListView1.Items.item[index].subitems.Strings[L_Y]:=floattostrF(shape_fitsY,ffFixed,0,2); {$ifdef darwin} {MacOS} {bugfix darwin green red colouring} stackmenu1.ListView1.Items.item[index].Subitems.strings[L_result]:='✓ star'; {$endif} memo2_message(filename2+ ' lock');{for manual alignment} someresult:=true; startX:=round(shape_fitsx-1);{follow star movement for next image} startY:=round(shape_fitsY-1); end; application.processmessages; if esc_pressed then break; end; end; inc(index); {go to next file} end; if someresult=false then memo2_message('Select first one star in the first image for alignment. Then select all images for automatic selection the same star.'); end; procedure Tstackmenu1.make_osc_color1Click(Sender: TObject); begin stackmenu1.stack_method1Change(nil);{update several things including raw_box1.enabled:=((mosa=false) and filter_groupbox1.enabled} end; procedure Tstackmenu1.monitoring_stop1Click(Sender: TObject); begin esc_pressed:=true; live_monitoring1.font.style:=[]; Application.ProcessMessages; {process font changes} end; procedure Tstackmenu1.lrgb_auto_level1Change(Sender: TObject); var au : boolean; begin au:=lrgb_auto_level1.checked; lrgb_colour_smooth1.enabled:=au; lrgb_preserve_r_nebula1.enabled:=au; lrgb_smart_smooth_width1.enabled:=au; lrgb_smart_colour_sd1.enabled:=au; end; procedure Tstackmenu1.keywordchangelast1Click(Sender: TObject); begin sqm_key:=uppercase(InputBox('Type header keyword to display in the last column:','',sqm_key )); new_analyse_required:=true; stackmenu1.listview1.columns.Items[l_sqm+1].caption:=sqm_key; {lv.items[l_sqm].caption:=sqm_key; doesn't work} while length(sqm_key)<8 do sqm_key:=sqm_key+' '; end; procedure Tstackmenu1.keywordchangesecondtolast1Click(Sender: TObject); begin centaz_key:=uppercase(InputBox('Type header keyword to display in the second to last column:','',centaz_key )); new_analyse_required:=true; stackmenu1.listview1.columns.Items[l_centaz+1].caption:=centaz_key; {lv.items[l_sqm].caption:=sqm_key; doesn't work} while length(centaz_key)<8 do centaz_key:=centaz_key+' '; end; { Calculate the offset in ra, dec from polar error input delta_altitude: elevation error pole delta_azimuth : azimuth error pole ra1_mount : ra position mount 1 dec1_mount : dec position mount 1 jd1 : Julian day measurement 1 ra2_mount : ra position mount 2 dec2_mount : dec position mount 2 jd2 : Julian day measurement 2 latitude longitude output delta_ra delta_dec } procedure polar_error_to_position_error(delta_alt ,delta_az, ra1_mount,dec1_mount,jd1,ra2_mount,dec2_mount,jd2,latitude,longitude: double; out delta_ra,delta_dec : double); const siderealtime2000=(280.46061837)*pi/180;{[radians], sidereal time at 2000 jan 1.5 UT (12 hours) =Jd 2451545 at meridian greenwich, see new Meeus 11.4} earth_angular_velocity = pi*2*1.00273790935; {about(365.25+1)/365.25) or better (365.2421874+1)/365.2421874 velocity daily. See new Meeus page 83} var sidereal_time1,sidereal_time2,h_1,h_2 : double; begin sidereal_time1:=fnmodulo(+longitude+siderealtime2000 +(jd1-2451545 )* earth_angular_velocity,2*pi); {As in the FITS header in ASTAP the site longitude is positive if east and has to be added to the time} sidereal_time2:=fnmodulo(+longitude+siderealtime2000 +(jd2-2451545 )* earth_angular_velocity,2*pi); {As in the FITS header in ASTAP the site longitude is positive if east and has to be added to the time} h_1:=ra1_mount-sidereal_time1; h_2:=ra2_mount-sidereal_time2; delta_Ra:=delta_alt*(TAN(dec2_mount)*SIN(h_2)-TAN(dec1_mount)*SIN(h_1)) +delta_az*COS(latitude)*(TAN(dec1_mount)*COS(h_1)-TAN(dec2_mount)*COS(h_2)); delta_Dec:=delta_alt*(COS(h_2)-COS(h_1)) +delta_az*COS(latitude)*(SIN(h_2)-SIN(h_1)); end; {Polar error calculation based on two celestial reference points and the error of the telescope mount at these point(s). Based on formulas from Ralph Pass documented at https://rppass.com/align.pdf. They are based on the book “Telescope Control’ by Trueblood and Genet, p.111 Ralph added sin(latitude) term in the equation for the error in RA. For one reference image the difference in RA and DEC caused by the misalignment of the polar axis, formula (3): delta_ra:= de * TAN(dec)*SIN(h) + da * (sin(lat)- COS(lat)*(TAN(dec1)*COS(h_1)) delta_dec:=de * COS(h) + da * COS(lat)*SIN(h)) where de is the polar error in elevation (altitude) where da is the polar error in azimuth where h is the hour angle of the reference point equal ra - local_sidereal_time Using the above formula calculate the difference in RA and DEC by subtracting the first image postion from the second reference image. The common term sin(lat) will be nulified. Formula (4) Writing the above formulas in matrix notation: [delta_Ra;delta_Dec]= A * [delta_Elv;delta_Azm] then [delta_Elv;delta_Az] = inv(A)*[delta_Ra;delta_Dec] Mount is assumed to be ideal. Mount fabrication error & cone errors are assumed to be zero. Meridian crossing between the two images should be avoided} procedure polar_error_calc(ra1,dec1,ra1_mount,dec1_mount,jd1,ra2,dec2,ra2_mount,dec2_mount,jd2,latitude,longitude: double; out delta_Elv,delta_az : double);{calculate polar error based on two images. All values in radians} const siderealtime2000=(280.46061837)*pi/180;{[radians], sidereal time at 2000 jan 1.5 UT (12 hours) =Jd 2451545 at meridian greenwich, see new Meeus 11.4} earth_angular_velocity = pi*2*1.00273790935; {about(365.25+1)/365.25) or better (365.2421874+1)/365.2421874 velocity daily. See new Meeus page 83} var determinant,delta_ra, delta_dec,sidereal_time1,sidereal_time2,h_1,h_2 : double; A,B, C, C_inv : array[0..1,0..1] of double; begin sidereal_time1:=fnmodulo(+longitude+siderealtime2000 +(jd1-2451545 )* earth_angular_velocity,2*pi); {As in the FITS header in ASTAP the site longitude is positive if east and has to be added to the time} sidereal_time2:=fnmodulo(+longitude+siderealtime2000 +(jd2-2451545 )* earth_angular_velocity,2*pi); {As in the FITS header in ASTAP the site longitude is positive if east and has to be added to the time} memo2_message('Local sidereal time image 1: '+prepare_ra6(sidereal_time1,' ')); {24 00 00} memo2_message('Local sidereal time image 2: '+prepare_ra6(sidereal_time2,' ')); {24 00 00} delta_ra:=(ra2_mount-ra2)- (ra1_mount-ra1); delta_dec:=(dec2_mount-dec2)- (dec1_mount-dec1); h_1:=ra1_mount-sidereal_time1; h_2:=ra2_mount-sidereal_time2; // [delta_Ra;delta_Dec]= A * [delta_Elv;delta_Azm] // Fill matrix image 1 with data. A[0,0]:=TAN(dec1_mount)*SIN(h_1); // A[1,0]:=COS(latitude)* ({SIN(LAT_rad)}-TAN(dec1_mount)*COS(h_1)); //sin(lat_rad) will be nulified anyhow when B-A is calculated} A[1,0]:={SIN(LAT_rad)}-COS(latitude)*TAN(dec1_mount)*COS(h_1); //sin(lat_rad) will be nulified anyhow when B-A is calculated} A[0,1]:=COS(h_1); A[1,1]:=COS(latitude)*SIN(h_1); // Fill matrix image 2 with data. B[0,0]:=TAN(dec2_mount)*SIN(h_2); // B[1,0]:=COS(latitude)*({SIN(LAT_rad)}-TAN(dec2_mount)*COS(h_2)); //sin(lat_rad) will be nulified anyhow when B-A is calculated} B[1,0]:={SIN(LAT_rad)}-COS(latitude)*TAN(dec2_mount)*COS(h_2); //sin(lat_rad) will be nulified anyhow when B-A is calculated} B[0,1]:=COS(h_2); B[1,1]:=COS(latitude)*SIN(h_2); //difference, image 2 - image 1 C[0,0]:=B[0,0]-A[0,0]; C[1,0]:=B[1,0]-A[1,0]; C[0,1]:=B[0,1]-A[0,1]; C[1,1]:=B[1,1]-A[1,1]; // Calculate the inverse matrix inv(C) determinant:=C[0,0]*C[1,1]-C[0,1]*C[1,0]; C_inv[0,0]:=+C[1,1]/determinant; C_inv[1,1]:=+C[0,0]/determinant; C_inv[1,0]:=-C[1,0]/determinant; C_inv[0,1]:=-C[0,1]/determinant; // [delta_Elv;delta_Az] = inv(A)*[delta_Ra;delta_Dec] // Use the inverse matrix to calculate the polar axis elevation and azimuth error from the delta_dec and delta_ra between the two image positions. delta_Elv:=C_inv[0,0]*delta_ra+C_inv[1,0]*delta_Dec; delta_Az:=C_inv[0,1]*delta_ra+C_inv[1,1]*delta_Dec; if abs(determinant)<0.1 then memo2_message('█ █ █ █ █ █ Warning the calculation determinant is close to zero! Select other celestial locations. Avoid locations with similar hour angles, locations close to the celestial equator and locations whose declinations are close to negatives of each other. █ █ █ █ █ █ '); end; procedure Tstackmenu1.calc_polar_alignment_error1Click(Sender: TObject); var c: integer; Save_Cursor : TCursor; errordecode : boolean; ra1,dec1,ra1_mount,dec1_mount,jd1,ra2,dec2,ra2_mount,dec2_mount,jd2, delta_alt,delta_az,sep, site_long_radians,site_lat_radians : double; counter : integer; ns,ew : string; begin memo2_message('Instructions:'); memo2_message(' 1: Synchronise the mount and take one image.'); memo2_message(' 2: Slew the mount to a second point in the sky and take a second image without synchronising the mount.'); memo2_message('Conditions: The image header should contain the correct time, observer location and mount position. Images should be solvable.'); Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } esc_pressed:=false; stackmenu1.mount_add_solutions1Click(nil);{add any missing solutions and analyse after that} counter:=0; {solve lights first to allow flux to magnitude calibration} with stackmenu1 do for c:=0 to listview9.items.count-1 do {check for astrometric solutions} begin if ((esc_pressed=false) and (listview9.Items.item[c].checked) and (listview9.Items.item[c].subitems.Strings[M_ra_jnow]<>'')) then begin filename2:=listview9.items[c].caption; Application.ProcessMessages; {load image} if esc_pressed then begin Screen.Cursor:=crDefault;{back to normal } exit; end; if counter=0 then begin ra1:=strtofloat(listview9.Items.item[c].subitems.Strings[M_ra_jnow])*pi/180; dec1:=strtofloat(listview9.Items.item[c].subitems.Strings[M_dec_jnow])*pi/180; ra1_mount:=strtofloat(listview9.Items.item[c].subitems.Strings[M_ra_m_jnow])*pi/180; dec1_mount:=strtofloat(listview9.Items.item[c].subitems.Strings[M_dec_m_jnow])*pi/180; jd1:=strtofloat(listview9.Items.item[c].subitems.Strings[M_jd_mid]); memo2_message('Image 1: '+filename2); inc(counter); end else begin ra2:=strtofloat(listview9.Items.item[c].subitems.Strings[M_ra_jnow])*pi/180; dec2:=strtofloat(listview9.Items.item[c].subitems.Strings[M_dec_jnow])*pi/180; ra2_mount:=strtofloat(listview9.Items.item[c].subitems.Strings[M_ra_m_jnow])*pi/180; dec2_mount:=strtofloat(listview9.Items.item[c].subitems.Strings[M_dec_m_jnow])*pi/180; jd2:=strtofloat(listview9.Items.item[c].subitems.Strings[M_jd_mid]); ang_sep(ra1,dec1,ra2,dec2, {out}sep);{calculates angular separation. according formula 9.1 old Meeus or 16.1 new Meeus, version 2018-5-23} if sep>5*pi/180 then begin dec_text_to_radians(sitelat,site_lat_radians,errordecode); if errordecode then begin memo2_message('Warning observatory latitude not found in the fits header'); exit; end; dec_text_to_radians(sitelong,site_long_radians,errordecode); {longitude is in degrees, not in hours. East is positive according ESA standard and diffractionlimited} {see https://indico.esa.int/event/124/attachments/711/771/06_ESA-SSA-NEO-RS-0003_1_6_FITS_keyword_requirements_2014-08-01.pdf} if errordecode then begin memo2_message('Warning observatory longitude not found in the fits header'); exit; end; memo2_message('Image 2: '+filename2); if site_long_radians>0 then ew:=' E' else ew:=' W'; if site_lat_radians>0 then ns:=' N' else ns:=' S'; memo2_message('Location (rounded) '+inttostr(round(site_lat_radians*180/pi))+ns+' '+inttostr(round(site_long_radians*180/pi))+ew+'. Angular seperation between the images is '+floattostrF(sep*180/pi,ffFixed,0,1)+'°' ); polar_error_calc(ra1,dec1,ra1_mount,dec1_mount,jd1,ra2,dec2,ra2_mount,dec2_mount,jd2,site_lat_radians,site_long_radians, {out} delta_alt,delta_az);{calculate polar error based on the solves} if delta_alt>0 then ns:=' above the celestial pole' else ns:=' below the celestial pole'; if delta_az>0 then ew:=' east of the celestial pole.' else ew:=' west of the celestial pole.'; memo2_message('Polar axis is '+floattostrF(abs(delta_alt)*60*180/pi,ffFixed,0,1)+#39+ns+' and '+floattostrF(abs(delta_az)*60*180/pi,ffFixed,0,1)+#39+ew); counter:=0;{restart for next images} end else memo2_message('Skipped image ' +filename2+'. The angular distance between the two images is '+floattostrF(sep*180/pi,ffFixed,0,1)+'°'+' and too small!'); end; end; end; Screen.Cursor:=crDefault;{back to normal } stackmenu1.mount_analyse1Click(nil);{update} end; procedure Tstackmenu1.monitor_action1Change(Sender: TObject); begin target_group1.enabled:=stackmenu1.monitor_action1.itemindex=4; end; procedure Tstackmenu1.monitor_latitude1EditingDone(Sender: TObject); begin lat_default:=monitor_latitude1.text; report_delta; {report delta error} end; procedure Tstackmenu1.monitor_longitude1EditingDone(Sender: TObject); begin long_default:=monitor_longitude1.text; report_delta; {report delta error} end; procedure Tstackmenu1.mount_analyse1Click(Sender: TObject); begin save_settings2;{too many lost selected files . so first save settings} analyse_listview(listview9,true {light},false {full fits},true{refresh}); end; procedure Tstackmenu1.analysephotometry1Click(Sender: TObject); begin if sender=analysephotometrymore1 then analyse_listview(listview7,true {light},true {full fits},true{refresh}) else analyse_listview(listview7,true {light},false {full fits},true{refresh}); listview7.items.beginupdate; listview7.alphasort;{sort on time} listview7.items.endupdate; end; procedure Tstackmenu1.analyse_inspector1Click(Sender: TObject); begin stackmenu1.memo2.lines.add('Inspector routine using multiple images at different focus positions. This routine will calculate the best focus position of several areas by extrapolation. Usage:'); stackmenu1.memo2.lines.add('- Browse for a number of short exposure images made at different focuser positions around best focus. Use a fixed focuser step size and avoid backlash by going one way through the focuser positions.'); stackmenu1.memo2.lines.add('- Press analyse to measure the area hfd values of each image.'); stackmenu1.memo2.lines.add('- Press curve fitting. The curve fit routine will calculate the best focuser position for each area using the hfd values. The focuser differences from center will indicate tilt & curvature of the image.'); stackmenu1.memo2.lines.add(''); stackmenu1.memo2.lines.add('Remarks:'); stackmenu1.memo2.lines.add('It is possible to make more than one exposure per focuser position, but this number should be the same for each focuser point.'); stackmenu1.memo2.lines.add('Note that hfd values above about 20 will give erroneous results. Un-check these files prior to curve fitting. Values will be slightly different from viewer figure which can measure only up to HFD 10.'); stackmenu1.memo2.lines.add(''); memo2_message('Start analysing images'); analyse_listview(listview8, true {light},true {full fits},false{refresh}); if listview8.items.count>1 then {prevent run time error if no files are available} begin listview8.Selected :=nil; {remove any selection} listview8.ItemIndex := 0;{mark where we are. } listview8.Items[0].MakeVisible(False);{scroll to selected item and fix last red colouring} memo2_message('Ready analysing. To copy result, select the rows with ctrl-A and copy the rows with ctrl-C. They can be pasted into a spreadsheet. Press now "Hyperbola curve fitting" to measure tilt and curvature expressed in focuser steps.'); end; end; procedure Tstackmenu1.apply_hue1Click(Sender: TObject); var fitsX, fitsY,fuzziness :integer; r,g,b,h,s,s_new,v,oldhue,newhue,dhue,saturation_factor,v_old1,v_old2,v_old3,s_old,saturation_tol : single; colour: tcolor; remove_lum : boolean; begin if ((head.naxis=0) or (head.naxis3<>3)) then exit; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; fuzziness:=hue_fuzziness1.position; saturation_tol:=saturation_tolerance1.position/100; saturation_factor:=new_saturation1.position /100; remove_lum:=remove_luminance1.checked; colour:=colourShape1.brush.color; RGB2HSV(getRvalue(colour),getGvalue(colour),getBvalue(colour),oldhue,s_old,v); colour:=colourShape3.brush.color; RGB2HSV(getRvalue(colour),getGvalue(colour),getBvalue(colour),newhue,s_new,v); if stackmenu1.area_set1.caption<>'✓' then {no area selected} begin areax1:=0; areay1:=0; areax2:=head.width-1; areaY2:=head.height-1; end; {else set in astap_main} v_old1:=0; v_old2:=0; v_old3:=0; for fitsY:=areay1 to areay2 do for fitsX:=areax1 to areax2 do begin {subtract view from file} RGB2HSV(max(0,img_loaded[0,fitsX,fitsY]-cblack), max(0,img_loaded[1,fitsX,fitsY]-cblack), max(0,img_loaded[2,fitsX,fitsY]-cblack), h,s,v); {RGB to HSVB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} dhue:=abs(oldhue - h); if (((dhue<=fuzziness) or (dhue>=360-fuzziness))and (abs(s-s_old)<saturation_tol {saturation speed_tolerance1} )) then {colour close enough, replace colour} begin if remove_lum then v:=min(min(v_old1,v_old2),v_old3);{take the lowest value} HSV2RGB(newhue , min(1,s_new*saturation_factor) {s 0..1}, v {v 0..1},r,g,b); {HSV to RGB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} img_loaded[0,fitsX,fitsY]:=r +cblack; img_loaded[1,fitsX,fitsY]:=g +cblack; img_loaded[2,fitsX,fitsY]:=b +cblack; end else begin v_old3:=v_old2; v_old2:=v_old1; v_old1:=v; end; end; //use_histogram(0); plot_fits(mainwindow.image1,false,true);{plot real} HueRadioButton1.checked:=false; HueRadioButton2.checked:=false; Screen.Cursor:=crDefault; end; procedure Tstackmenu1.auto_background_level1Click(Sender: TObject); var r,g,b,star_levelR, star_levelG,star_levelB : double; begin if length(img_loaded)<3 then exit;{not a three colour image} apply_factor1.enabled:=false;{block apply button temporary} application.processmessages; get_background(1,img_loaded,true {get hist},true {get noise},{var} G,star_levelG); get_background(2,img_loaded,true {get hist},true {get noise},{var} B,star_levelB); {Do red last to maintain current histogram} get_background(0,img_loaded,true {get hist},true {get noise},{var} R,star_levelR); add_valueR1.text:=floattostrf(0, ffgeneral, 5,0); add_valueG1.text:=floattostrf(R*(star_levelG/star_levelR)-G, ffgeneral, 5,0); add_valueB1.text:=floattostrf(R*(star_levelB/star_levelR)-B, ffgeneral, 5,0); multiply_green1.text:=floattostrf(star_levelR/star_levelG, ffgeneral, 5,0); {make stars white} multiply_blue1.text:=floattostrf(star_levelR/star_levelB, ffgeneral, 5,0); multiply_red1.text:='1'; apply_factor1.enabled:=true;{enable apply button} end; procedure background_noise_filter(img : image_array; max_deviation,blur:double); var fitsX,fitsY,count,i,j,col,stepsize :integer; SD1, average1, SD, average, maxoffs ,val: double; img_outliers : image_array; const step=100; begin setlength(img_outliers,head.naxis3,head.width,head.height);{set length of image array mono} for col:=0 to head.naxis3-1 do {do all colours} begin {first estimate of background mean and sd, star will be included} average1:=0; count:=0; For fitsY:=0 to (head.height-1) div step do for fitsX:=0 to (head.width-1) div step do begin val:=img[col,fitsX * step,fitsY * step]; if val<32000 then average1:=average1+val; inc(count); end; average1:=average1/count; sd1:=0; count:=0; For fitsY:=0 to (head.height-1) div step do for fitsX:=0 to (head.width-1) div step do begin val:=img[col,fitsX *step,fitsY *step]; if val<32000 then sd1:=sd1+sqr(average1-val); inc(count); end; sd1:=sqrt(sd1/(count)); {standard deviation} {second estimate of mean and sd, star will be excluded} average:=0; sd:=0; count:=0; For fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin val:=img[col,fitsX,fitsY]; if val<average1+5*sd1 then average:=average+val; inc(count); end; average:=average/count; For fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin val:=img[col,fitsX,fitsY]; if val<average1+5*sd1 then sd:=sd+sqr(average-val); inc(count); end; sd:=sqrt(sd/(count)); {standard deviation} maxoffs:=max_deviation*sd;{typically 3} for fitsY:=0 to head.height-1 do {mark signal pixel and store in img_outliers} for fitsX:=0 to head.width-1 do begin if (img[col,fitsX, fitsY]-average)>maxoffs then {signal} img_outliers[col,fitsX, fitsY]:=img[col,fitsX, fitsY] {store as signal} else begin count:=0; {find if signal nearby} stepsize:=round(blur*1.5);{adapt range to gaussian blur range} for i:=-stepsize to stepsize do for j:=-stepsize to stepsize do if ((fitsX+i>=0) and (fitsX+i<head.width) and (fitsY+j>=0) and (FitsY+j<head.height)) then begin if (img[col,fitsX+i, fitsY+j]-average)>maxoffs then {signal} begin inc(count); end; end; if count>0 then {signal} begin img_outliers[col,fitsX, fitsY]:=img[col,fitsX, fitsY];{store outlier for possible restoring} img[col,fitsX, fitsY]:=average;{change hot pixel to average} end else img_outliers[col,fitsX, fitsY]:=0;{not signal} end; end; end;{all colours} gaussian_blur2(img,blur);{apply gaussian blur } {restore signal} for col:=0 to head.naxis3-1 do {do all colours} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin if img_outliers[col,fitsX, fitsY]<>0 then img[col,fitsX, fitsY]:=img_outliers[col,fitsX, fitsY]; end; img_outliers:=nil; end; procedure Tstackmenu1.apply_background_noise_filter1Click(Sender: TObject); begin if Length(img_loaded)=0 then begin memo2_message('Error, no image in viewer loaded!'); exit; end; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; background_noise_filter(img_loaded,strtofloat2(stackmenu1.noisefilter_sd1.text),strtofloat2(stackmenu1.noisefilter_blur1.text)); // use_histogram(true);{get histogram} plot_fits(mainwindow.image1,false,true);{plot real} Screen.Cursor:=crDefault; end; procedure Tstackmenu1.bayer_pattern1Select(Sender: TObject); begin demosaic_method1.enabled:=pos('X-Trans',bayer_pattern1.text )=0; {disable method is X-trans is selected} end; procedure Tstackmenu1.bin_image1Click(Sender: TObject); begin if head.naxis<>0 then begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; {move viewer data to img_backup} if bin_factor1.itemindex=0 then bin_X2X3X4(2) else bin_X2X3X4(3); plot_fits(mainwindow.image1,true,true);{plot real} Screen.Cursor:=crDefault; end; end; procedure Tstackmenu1.align_blink1Change(Sender: TObject); begin solve_and_annotate1.enabled:=align_blink1.checked; end; procedure Tstackmenu1.add_noise1Click(Sender: TObject); var fitsX,fitsY,col: integer; noise,mean : double; begin if head.naxis<>0 then begin backup_img; {move viewer data to img_backup} Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } noise:=strtofloat2(stackmenu1.edit_noise1.Text); if add_bias1.checked then mean:=3*noise else mean:=0; for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do for col:=0 to head.naxis3-1 do img_loaded[col,fitsX,fitsY]:=max(0,img_loaded[col,fitsX,fitsY]+randg(mean,noise){gaussian noise}); plot_fits(mainwindow.image1,false,true);{plot real} Screen.Cursor:=crDefault; end; use_histogram(img_loaded,true {update}); {update for the noise, plot histogram, set sliders} end; procedure Tstackmenu1.blink_stop1Click(Sender: TObject); begin esc_pressed:=true; end; procedure Tstackmenu1.blink_unaligned_multi_step1Click(Sender: TObject); var c,step : integer; Save_Cursor : TCursor; init : boolean; begin if listview1.items.count<=1 then exit; {no files} Save_Cursor := Screen.Cursor; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } save_settings2;{too many lost selected files . so first save settings} esc_pressed:=false; init:=false; if sender=blink_unaligned_multi_step_backwards1 then step:=-1 else step:=1;{forward/ backwards} repeat if init=false then c:= listview_find_selection(listview1) {find the row selected} else begin if step>0 then c:=0 {forward} else c:=listview1.items.count-1;{backwards} end; init:=true; repeat if ((esc_pressed=false) and (listview1.Items.item[c].checked) ) then begin listview1.Selected :=nil; {remove any selection} listview1.ItemIndex := c;{mark where we are. Important set in object inspector Listview1.HideSelection := false; Listview1.Rowselect := true} listview1.Items[c].MakeVisible(False);{scroll to selected item} filename2:=listview1.items[c].caption; mainwindow.caption:=filename2; Application.ProcessMessages; if esc_pressed then break; {load image} if load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded)=false then begin esc_pressed:=true; break;end; use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false {re_center},true); {show alignment marker} if (stackmenu1.use_manual_alignment1.checked) then show_shape_manual_alignment(c) {show the marker on the reference star} else mainwindow.shape_manual_alignment1.visible:=false; end; inc(c,step); until ((c>=listview1.items.count) or (c<0)); until esc_pressed ; Screen.Cursor:=crDefault;{back to normal } end; procedure Tstackmenu1.browse_mount1Click(Sender: TObject); var i: integer; begin OpenDialog1.Title := 'Select images to analyse'; {including WCS files !!!} OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist,ofHideReadOnly]; opendialog1.Filter :=dialog_filter; //fits_file:=true; if opendialog1.execute then begin listview9.items.beginupdate; for i:=0 to OpenDialog1.Files.count-1 do {add} begin listview_add(listview9,OpenDialog1.Files[i],true,M_nr); end; listview9.items.endupdate; end; end; procedure Tstackmenu1.copy_to_images1Click(Sender: TObject); var index,counter: integer; begin index:=0; listview1.Items.beginUpdate; counter:=listview5.Items.Count; while index<counter do begin if listview5.Items[index].Selected then begin listview_add(listview1,listview5.items[index].caption,true,L_nr); end; inc(index); {go to next file} end; listview1.Items.endUpdate; end; procedure double_size(img: image_array; w,h : integer; var img2 : image_array);{double array size} var fitsX,fitsY,i,x,y:integer; begin setlength(img_buffer,head.naxis3,w,h);{set length of image array} for fitsY:=0 to h do for fitsX:=0 to w do begin for i:=0 to head.naxis3-1 do begin x:=fitsX div 2; y:=fitsY div 2; if ((x<=head.width-1) and (y<=head.height-1)) then {prevent problem if slightly different} img_buffer[i,fitsX ,fitsY] :=img[i,x,y]; end; end; head.height:=h; head.width :=w; img2:=img_buffer; end; procedure load_master_dark(jd_int: integer); var c : integer; d,day_offset : double; filen : string; begin // analyse_listview(stackmenu1.listview2,false {light},false {full fits},false{refresh});{find dimensions, head_2.exposure and temperature} c:=0; day_offset:=99999999; filen:=''; dark_exposure:=round(head.exposure);{remember the requested head.exposure time} dark_temperature:=head.set_temperature; if head.egain<>'' then dark_gain:=head.egain else dark_gain:=head.gain; while c<stackmenu1.listview2.items.count do begin if stackmenu1.listview2.items[c].checked=true then if ( (stackmenu1.classify_dark_exposure1.checked=false) or (dark_exposure=round(strtofloat2(stackmenu1.listview2.Items.item[c].subitems.Strings[D_exposure])))) then {head_2.exposure correct} if ( (stackmenu1.classify_dark_temperature1.checked=false) or (abs(dark_temperature - strtoint(stackmenu1.listview2.Items.item[c].subitems.Strings[D_temperature]))<=1 )) then {temperature correct within one degree} if ( (stackmenu1.classify_dark_temperature1.checked=false) or (dark_gain = stackmenu1.listview2.Items.item[c].subitems.Strings[D_gain])) then {gain correct} if head.width=strtoint(stackmenu1.listview2.Items.item[c].subitems.Strings[D_width]) then {width correct} begin d:=strtofloat(stackmenu1.listview2.Items.item[c].subitems.Strings[D_jd]); if abs(d-jd_int)<day_offset then {find flat with closest date} begin filen:=stackmenu1.ListView2.items[c].caption; day_offset:=abs(d-jd_int); end; end; inc(c); end; if (filen<>'') then {new file} begin if ((head_ref.dark_count=0){restart} or (filen<>last_dark_loaded)) then begin memo2_message('Loading master dark file '+filen); if load_fits(filen,false {light},true,false {update memo},0,head_2,img_dark)=false then begin memo2_message('Error'); head_ref.dark_count:=0; exit; end; {load master in memory img_dark} {test compatibility} if ((round(head_2.exposure)<>0 {dark exposure is measured}) and (round(head.exposure){request}<>round(head_2.exposure))) then memo2_message('█ █ █ █ █ █ Warning above dark exposure time ('+floattostrF(head_2.exposure,ffFixed,0,0)+') is different then the light exposure time ('+floattostrF(head.exposure,ffFixed,0,0) +')! █ █ █ █ █ █ '); if ((head_2.set_temperature<>999 {dark temperature is measured}) and (head.set_temperature{request}<>head_2.set_temperature)) then memo2_message('█ █ █ █ █ █ Warning above dark sensor temperature ('+floattostrF(head_2.set_temperature,ffFixed,0,0)+') is different then the light sensor temperature ('+floattostrF(head.set_temperature,ffFixed,0,0) +')! █ █ █ █ █ █ '); if ((head_2.gain<>'' {gain in header}) and (head.gain{request}<>head_2.gain)) then memo2_message('█ █ █ █ █ █ Warning above dark gain ('+head_2.gain+') is different then the light gain ('+head.gain+')! █ █ █ █ █ █ '); last_dark_loaded:=filen; {required for for change in light_jd} if head_2.dark_count=0 then head_2.dark_count:=1; {store in head of reference file} end; end else begin memo2_message('█ █ █ █ █ █ Warning, could not find a suitable dark for exposure "'+inttostr(round(head.exposure))+' and temperature '+inttostr(head.set_temperature)+' and gain '+head.gain + '"! De-classify temperature or exposure time or add correct darks. █ █ █ █ █ █ '); head_2.dark_count:=0;{set back to zero} end; end; procedure load_master_flat({filter: string;width1,}jd_int :integer ); var c : integer; d,day_offset : double; filen : string; begin c:=0; day_offset:=99999999; filen:=''; while c<stackmenu1.listview3.items.count do begin if stackmenu1.listview3.items[c].checked=true then begin if ((stackmenu1.classify_flat_filter1.checked=false) or (AnsiCompareText(head.filter_name,stackmenu1.listview3.Items.item[c].subitems.Strings[F_filter])=0)) then {filter correct? ignoring case} if head.width=strtoint(stackmenu1.listview3.Items.item[c].subitems.Strings[D_width]) then {width correct, matches with the light width} begin d:=strtofloat(stackmenu1.listview3.Items.item[c].subitems.Strings[F_jd]); if abs(d-jd_int)<day_offset then {find flat with closest date} begin filen:=stackmenu1.ListView3.items[c].caption; day_offset:=abs(d-jd_int); end; end; end; inc(c); end; if filen<>'' then begin if ((head_ref.flat_count=0){restart} or (filen<>last_flat_loaded)) then {new file} begin memo2_message('Loading master flat file '+filen); //head_ref.flat_count:=0;{set back to zero} if load_fits(filen,false {light},true,false {update memo},0,head_2,img_flat)=false then begin memo2_message('Error'); head_2.flat_count:=0; exit; end; {load master in memory img_flat} last_flat_loaded:=filen; {required for for change in light_jd} flat_filter:=head.filter_name; {mark as loaded} if pos('B',head_2.calstat)=0 then begin if head_2.flatdark_count=0 then {not an older flat} memo2_message('█ █ █ █ █ █ Warning: Flat not calibrated with a flat-dark/bias (keywords CALSTAT or BIAS_CNT). █ █ █ █ █ █') else head_2.calstat:=head_2.calstat+'B'; {older flat temporary till 2022-12 till all flats have "B" in in calstat. Remove 2022-12} end; if head_2.flat_count=0 then head_2.flat_count:=1; {not required for astap master} if ((process_as_osc>0) and (stackmenu1.apply_normalise_filter1.checked)) then begin memo2_message('Applying normalise filter on master (OSC) flat.'); check_pattern_filter(img_flat); end end; end else begin memo2_message('█ █ █ █ █ █ Warning, could not find a suitable flat for "'+head.filter_name+'"! De-classify flat filter or add correct flat. █ █ █ █ █ █ '); head_2.flat_count:=0;{set back to zero} end; end; procedure replace_by_master_dark(full_analyse : boolean); var path1,filen,gain :string; c,counter,i,file_count : integer; specified: boolean; exposure,temperature,width1: integer; day : double; file_list : array of string; begin save_settings2; with stackmenu1 do begin analyse_listview(listview2,false {light},false {full fits},false{refresh});{update the tab information} if esc_pressed then exit;{esc could by pressed while analysing} setlength(file_list,stackmenu1.listview2.items.count); repeat file_count:=0; specified:=false; for c:=0 to stackmenu1.listview2.items.count-1 do if stackmenu1.listview2.items[c].checked=true then begin filen:=stackmenu1.ListView2.items[c].caption; if pos('master_dark',ExtractFileName(filen))=0 then {not a master file} begin {set specification master} if specified=false then begin exposure:=round(strtofloat2(stackmenu1.listview2.Items.item[c].subitems.Strings[D_exposure])); temperature:=strtoint(stackmenu1.listview2.Items.item[c].subitems.Strings[D_temperature]); gain:=stackmenu1.listview2.Items.item[c].subitems.Strings[D_gain]; width1:=strtoint(stackmenu1.listview2.Items.item[c].subitems.Strings[D_width]); day:=strtofloat(stackmenu1.listview2.Items.item[c].subitems.Strings[D_jd]); specified:=true; end; if ( (stackmenu1.classify_dark_exposure1.checked=false) or (exposure=round(strtofloat2(stackmenu1.listview2.Items.item[c].subitems.Strings[D_exposure])))) then {exposure correct} if ( (stackmenu1.classify_dark_temperature1.checked=false) or (temperature=strtoint(stackmenu1.listview2.Items.item[c].subitems.Strings[D_temperature]))) then {temperature correct} if ( (stackmenu1.classify_dark_temperature1.checked=false) or (gain=stackmenu1.listview2.Items.item[c].subitems.Strings[D_gain])) then {gain correct} if width1=strtoint(stackmenu1.listview2.Items.item[c].subitems.Strings[D_width]) then {width correct} if ((classify_dark_date1.Checked=false) or (abs(day-strtofloat(stackmenu1.listview2.Items.item[c].subitems.Strings[D_jd]))<=0.5)) then {within 12 hours made} begin file_list[file_count]:=filen; inc(file_count); end; end; end;{checked} Application.ProcessMessages; if esc_pressed then exit; head.dark_count:=0; if file_count<>0 then begin memo2_message('Averaging darks.'); average('dark',file_list,file_count,img_dark); {the result will be mono so more suitable for raw lights without bayer applied. Not so suitable for commercial camera's image and converted to coloured FITS} if esc_pressed then exit; Application.ProcessMessages; if esc_pressed then exit; if ((file_count<>1) or (head.dark_count=0)) then head.dark_count:=file_count; {else use the info from the keyword dark_cnt of the master file} path1:=extractfilepath(file_list[0])+'master_dark_'+inttostr(head.dark_count)+'x'+inttostr(round(exposure))+'s_at_'+inttostr(head.set_temperature)+'C_'+copy(head.date_obs,1,10)+'.fit'; update_integer('DARK_CNT=',' / Number of dark image combined ' ,head.dark_count); { ASTAP keyword standard:} { interim files can contain keywords: EXPOSURE, FILTER, LIGHT_CNT,DARK_CNT,FLAT_CNT, BIAS_CNT, SET_TEMP. These values are written and read. Removed from final stacked file.} { final files contains, LUM_EXP,LUM_CNT,LUM_DARK, LUM_FLAT, LUM_BIAS, RED_EXP,RED_CNT,RED_DARK, RED_FLAT, RED_BIAS.......These values are not read} head.naxis3:=1; {any color is made mono in the routine. Keywords are updated in the save routine} head.naxis:=2; {any color is made mono in the routine. Keywords are updated in the save routine} update_text ('COMMENT 1',' Written by ASTAP. www.hnsky.org'); head.naxis3:=1; {any color is made mono in the routine} if save_fits(img_dark,path1,-32,false) then {saved} begin listview2.Items.BeginUpdate; for i:=0 to file_count-1 do begin c:=0; counter:=listview2.Items.Count; while c<counter do begin if file_list[i]=stackmenu1.ListView2.items[c].caption then {processed} begin listview2.Items.Delete(c); dec(counter);{one file less} end else inc(c); end; end; listview_add(listview2,path1,true,D_nr);{add master} listview2.Items.EndUpdate; analyse_listview(listview2,false {light},full_analyse {full fits},false{refresh});{update the tab information} end; img_dark:=nil; end; Application.ProcessMessages; if esc_pressed then exit; until file_count=0;{make more than one master} save_settings2;{store settings} file_list:=nil; memo2_message('Master darks(s) ready.'); end;{with stackmenu1} end; function extract_letters_only(inp : string): string; var i : integer; ch: char; begin result:=''; for i:=1 to length(inp) do begin ch:=inp[i]; case ch of // valid char 'A'..'Z','a'..'z','-' : result := result + ch; end;{case} end; end; procedure Tstackmenu1.replace_by_master_dark1Click(Sender: TObject); {this routine works with mono files but makes coloured files mono, so less suitable for commercial cameras producing coloured raw lights} begin if img_loaded<>nil then {button was used, backup img array and header and restore later} begin img_backup:=nil;{clear to save memory} backup_img; end;{backup fits for later} replace_by_master_dark(true {include background and SD}); if img_loaded<>nil then restore_img; {button was used, restore original image array and header} end; procedure replace_by_master_flat(full_analyse : boolean); var fitsX,fitsY,flat_count : integer; path1,filen,flat_filter,expos : string; day,flatdark_exposure,flat_exposure : double; c,counter,i : integer; specified,classify_exposure: boolean; flat_width,flat_dark_width: integer; flatdark_used : boolean; file_list : array of string; begin with stackmenu1 do begin save_settings2; analyse_listview(listview3,false {light},false {full fits},new_analyse_required3{refresh});{update the tab information. Convert to FITS if required} if esc_pressed then exit;{esc could be pressed in analyse} new_analyse_required3:=false; flatdark_exposure:=-99; classify_exposure:=classify_flat_exposure1.checked; setlength(file_list,stackmenu1.listview3.items.count); repeat flat_count:=0; specified:=false; i:=stackmenu1.listview3.items.count-1; for c:=0 to stackmenu1.listview3.items.count-1 do if stackmenu1.listview3.items[c].checked=true then begin filen:=stackmenu1.ListView3.items[c].caption; if pos('master_flat',ExtractFileName(filen))=0 then {not a master file} begin {set specification master} if specified=false then begin flat_filter:=stackmenu1.listview3.Items.item[c].subitems.Strings[F_filter]; flat_width:=strtoint(stackmenu1.listview3.Items.item[c].subitems.Strings[D_width]); day:=strtofloat(stackmenu1.listview3.Items.item[c].subitems.Strings[F_jd]); flat_exposure:=strtofloat(stackmenu1.listview3.Items.item[c].subitems.Strings[F_exposure]); specified:=true; end; if ((stackmenu1.classify_flat_filter1.checked=false) or (flat_filter=stackmenu1.listview3.Items.item[c].subitems.Strings[F_filter])) then {filter correct?} if flat_width=strtoint(stackmenu1.listview3.Items.item[c].subitems.Strings[D_width]) then {width correct} if ((classify_flat_date1.Checked=false) or (abs(day-strtofloat(stackmenu1.listview3.Items.item[c].subitems.Strings[F_jd]))<=0.5)) then {within 12 hours made} if ((classify_exposure=false) or (abs(flat_exposure-strtofloat(stackmenu1.listview3.Items.item[c].subitems.Strings[F_exposure]))<0.01 )) then {head.exposure correct?} begin file_list[flat_count]:=filen; inc(flat_count); end; end; end;{checked} Application.ProcessMessages; if esc_pressed then exit; if flat_count<>0 then begin Application.ProcessMessages; if esc_pressed then exit; if abs(flat_exposure-flatdark_exposure)>0.01 then {already a dark loaded?} begin if classify_exposure=false then begin flat_exposure:=-99; {do not classify on flat dark head.exposure time} end else begin analyseflatdarksButton1Click(nil); {head.exposure lengths are required for selection} memo2_message('Selecting flat darks with exposure time '+floattostrF(flat_exposure,FFgeneral,0,2)+ 'sec'); end; flat_dark_width:=average_flatdarks(flat_exposure);{average of bias frames. Convert to FITS if required} flatdark_exposure:=flat_exposure;{store this head.exposure for next time} if flat_dark_width=0 then memo2_message('█ █ █ █ █ █ Warning no flat-dark/bias found!! █ █ █ █ █ █ ') else if flat_width<>flat_dark_width then begin memo2_message('Abort, the width of the flat and flat-dark do not match!!');exit end; flatdark_used:=false; end; memo2_message('Combining flats.'); Application.ProcessMessages; if esc_pressed then exit; average('flat',file_list,flat_count,img_flat);{only average, make color also mono} memo2_message('Combining flats and flat-darks.'); Application.ProcessMessages; if esc_pressed then exit; if flat_count<>0 then begin if head.flatdark_count<>0 then begin memo2_message('Applying the combined flat-dark on the combined flat.'); flatdark_used:=true; for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin img_flat[0,fitsX,fitsY]:=img_flat[0,fitsX, fitsY ] - img_bias[0,fitsX, fitsY ]; {flats and bias already made mono in procedure average} end; end; end; Application.ProcessMessages; if esc_pressed then exit; head.naxis3:=1; {any color is made mono in the routine} if flat_count<>0 then begin flat_filter:=extract_letters_only(flat_filter); {extract_letter is added for filter='N/A' for SIPS software} if flat_filter='' then head.filter_name:=copy(extractfilename(file_list[0]),1,10);{for DSLR images} if classify_exposure then begin str(flat_exposure:0:2,expos);flat_filter:=flat_filter+'_'+expos+'sec'; end; path1:=extractfilepath(file_list[0])+'master_flat_corrected_with_flat_darks_'+flat_filter+'_'+inttostr(flat_count)+'xF_'+inttostr(head.flatdark_count)+'xFD_'+copy(head.date_obs,1,10)+'.fit';; update_integer('FLAT_CNT=',' / Number of flat images combined. ' ,flat_count); update_integer('BIAS_CNT=',' / Number of flat-dark or bias images combined. ' ,head.flatdark_count); if head.flatdark_count<>0 then head.calstat:=head.calstat+'B'; update_text ('CALSTAT =',#39+head.calstat+#39); {calibration status} { ASTAP keyword standard:} { interim files can contain keywords: head.exposure, FILTER, LIGHT_CNT,DARK_CNT,FLAT_CNT, BIAS_CNT, SET_TEMP. These values are written and read. Removed from final stacked file.} { final files contains, LUM_EXP,LUM_CNT,LUM_DARK, LUM_FLAT, LUM_BIAS, RED_EXP,RED_CNT,RED_DARK, RED_FLAT, RED_BIAS.......These values are not read} update_text ('COMMENT 1',' Created by ASTAP www.hnsky.org'); head.naxis3:=1; {any color is made mono in the routine. Keywords are updated in the save routine} head.naxis:=2; {any color is made mono in the routine. Keywords are updated in the save routine} if save_fits(img_flat,path1,-32,false) then {saved} begin listview3.Items.BeginUpdate; {remove the flats added to master} for i:=0 to flat_count do begin c:=0; counter:=listview3.Items.Count; while c<counter do begin if file_list[i]=stackmenu1.ListView3.items[c].caption then {processed} begin listview3.Items.Delete(c); dec(counter);{one file less} end else inc(c); end; end; listview_add(listview3,path1,true,F_nr);{add master} listview3.Items.EndUpdate; analyse_listview(listview3,false {light},full_analyse {full fits (for standard deviation)},false{refresh});{update the tab information} end; img_flat:=nil; end; end; Application.ProcessMessages; if esc_pressed then exit; until flat_count=0;{make more than one master} if flatdark_used then listview4.Items.Clear;{remove bias if used} save_settings2;{store settings} file_list:=nil; memo2_message('Master flat(s) ready.'); end;{with stackmenu1} end; procedure Tstackmenu1.replace_by_master_flat1Click(Sender: TObject); begin if img_loaded<>nil then {button was used, backup img array and header and restore later} begin img_backup:=nil;{clear to save memory} backup_img; end;{backup fits for later} replace_by_master_flat(true {include measuring background and SD}); if img_loaded<>nil then restore_img; {button was used, restore original image array and header} end; function create_internal_solution(img: image_array; hd: theader) : boolean; {plate solving, image should be already loaded create internal solution using the internal solver} begin if solve_image(img,hd,true) then {match between loaded image and star database} begin if fits_file_name(filename2) then begin result:=savefits_update_header(filename2) end else result:=save_tiff16(img,filename2,false {flip H},false {flip V}); if result=false then ShowMessage('Write error !!' + filename2); end else result:=false; end; function apply_dark_and_flat(var img : image_array): boolean ; inline; {apply dark and flat if required, renew if different head.exposure or ccd temp} var fitsX,fitsY,k : integer; value,flat_factor,dark_norm_value,flat11,flat12,flat21,flat22 : double; begin result:=false; date_to_jd(head.date_obs,head.exposure {light}); {convert date-obs to global variables jd_start, jd_mid. Use this to find the dark with the best match for the light} if pos('D',head.calstat)<>0 then {is the light already calibrated} memo2_message('Skipping dark calibration, already applied. See header keyword CALSTAT') else begin load_master_dark(round(jd_start)); {will only be renewed if different head.exposure or head.set_temperature.} if head_2.dark_count>0 then {dark and flat use head_2 for status} begin dark_norm_value:=0; for fitsY:=-4 to 5 do {do even times, 10x10 for bayer matrix} for fitsX:=-4 to 5 do dark_norm_value:=dark_norm_value+img_dark[0,fitsX+(head.width div 2),fitsY +(head.height div 2)]; dark_norm_value:=round(dark_norm_value/100);{scale factor to apply flat. The norm value will result in a factor one for the center.} for fitsY:=0 to head.height-1 do {apply the dark} for fitsX:=0 to head.width-1 do begin value:=img_dark[0,fitsX,fitsY]; {Darks are always made mono when making master dark} for k:=0 to head.naxis3-1 do {do all colors} img[k,fitsX,fitsY]:=img[k,fitsX,fitsY] - value; end; {for stacking} head_ref.calstat:='D'; {dark applied, store in header of reference file since it not modified while stacking} head_ref.dark_count:=head_2.dark_count; head_ref.datamax_org:=head.datamax_org-dark_norm_value;{adapt light datamax_org} {for SQM measurement, live stacking} head.calstat:='D'; {dark applied, store in header of reference file} head.dark_count:=head_2.dark_count; head.datamax_org:=head.datamax_org-dark_norm_value;{adapt light datamax_org} result:=true; end; end;{apply dark} if pos('F',head.calstat)<>0 then memo2_message('Skipping flat calibration, already applied. See header keyword CALSTAT') else begin load_master_flat({head.filter_name,head.width,}round(jd_start));{will only be renewed if different filter name. Note load will overwrite head.calstat} last_light_jd:=round(jd_start); if head_2.flat_count<>0 then begin flat_norm_value:=0; flat11:=0; flat12:=0; flat21:=0; flat22:=0; for fitsY:=-4 to 5 do {do even times, 10x10 for Bay matrix} for fitsX:=-4 to 5 do begin value:=img_flat[0,fitsX+(head_2.width div 2),fitsY +(head_2.height div 2)]; flat_norm_value:=flat_norm_value+value; if ((odd(fitsX)) and (odd(fitsY)) ) then flat11:=flat11+value; if ((odd(fitsX)=false) and (odd(fitsY)) ) then flat12:=flat12+value; if ((odd(fitsX)) and (odd(fitsY)=false) ) then flat21:=flat21+value; if ((odd(fitsX)=false) and (odd(fitsY)=false) ) then flat22:=flat22+value; end; flat_norm_value:=round(flat_norm_value/100);{scale factor to apply flat. The norm value will result in a factor one for the center.} if process_as_osc>0 then {give only warning when converting to colour. Not when calibrating for green channel and used for photometry} if max(max(flat11,flat12),max(flat21,flat22))/min(min(flat11,flat12),min(flat21,flat22))>2.0 then memo2_message('█ █ █ █ █ █ Warning flat pixels differ too much. Use white light for OSC flats or consider using option "Normalise OSC flat" █ █ █ █ █ █ '); for fitsY:=1 to head.height do {apply the flat} for fitsX:=1 to head.width do begin flat_factor:=flat_norm_value/(img_flat[0,fitsX-1,fitsY-1]+0.001); {bias is already combined in flat in combine_flat} if abs(flat_factor)>3 then flat_factor:=1;{un-used sensor area? Prevent huge gain of areas only containing noise and no flat-light value resulting in very strong disturbing noise or high value if dark is missing. Typical problem for converted RAW's by Libraw} for k:=0 to head.naxis3-1 do {do all colors} img[k,fitsX-1,fitsY-1]:=img[k,fitsX-1,fitsY-1]*flat_factor; end; {for stacking} head_ref.calstat:=head_ref.calstat+'F'+head_2.calstat{B from flat};{mark that flat and bias have been applied. Store in the header of the reference file since it is not modified while stacking} head_ref.flat_count:=head_2.flat_count; head_ref.flatdark_count:=head_2.flatdark_count; {for SQM measurement, live stacking} head.calstat:=head.calstat+'F'+head_2.calstat{B from flat};{mark that flat and bias have been applied. Store in the header of the reference file} head.flat_count:=head_2.flat_count; head.flatdark_count:=head_2.flatdark_count; result:=true; end;{flat correction} end;{do flat & flat dark} end; procedure calibration_only; {calibrate lights only} var c,x,y,col : integer; object_to_process, stack_info : string; begin Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } with stackmenu1 do begin memo2_message('Calibrating individual files only.'); for c:=0 to ListView1.items.count-1 do {first get solution ignoring the header} if ListView1.items[c].Checked=true then begin try { Do some lengthy operation } ListView1.Selected :=nil; {remove any selection} ListView1.ItemIndex := c;{show wich file is processed} Listview1.Items[c].MakeVisible(False);{scroll to selected item} progress_indicator(100*c/ListView1.items.count-1,'');{indicate 0 to 100% for calibration} filename2:=ListView1.items[c].caption; {load image} Application.ProcessMessages; if ((esc_pressed) or (load_fits(filename2,true {light},true,true {update memo, required for updates},0,head,img_loaded)=false)) then begin memo2_message('Error loading file '+filename2); Screen.Cursor:=crDefault;exit;end; if apply_dark_and_flat(img_loaded) {apply dark, flat if required, renew if different head.exposure or ccd temp} then begin //success added dark or flat memo2_message('Calibrating file: '+inttostr(c+1)+'-'+inttostr( ListView1.items.count-1)+' "'+filename2+'" to average. Using '+inttostr(head.dark_count)+' darks, '+inttostr(head.flat_count)+' flats, '+inttostr(head.flatdark_count)+' flat-darks') ; Application.ProcessMessages; for Y:=0 to head.height-1 do for X:=0 to head.width-1 do for col:=0 to head.naxis3-1 do begin img_loaded[col,X,Y]:= img_loaded[col,X,Y]+500; {add pedestal} end; if esc_pressed then exit; if process_as_osc>0 then {do demosaic bayer} demosaic_bayer(img_loaded); {convert OSC image to colour} {head.naxis3 is now 3} update_text ('COMMENT 1',' Calibrated by ASTAP. www.hnsky.org'); update_text ('CALSTAT =',#39+head.calstat+#39); {calibration status} add_integer('DARK_CNT=',' / Darks used for luminance. ' ,head.dark_count);{for interim lum,red,blue...files. Compatible with master darks} add_integer('FLAT_CNT=',' / Flats used for luminance. ' ,head.flat_count);{for interim lum,red,blue...files. Compatible with master flats} add_integer('BIAS_CNT=',' / Flat-darks used for luminance. ' ,head.flatdark_count);{for interim lum,red,blue...files. Compatible with master flats} { ASTAP keyword standard:} { interim files can contain keywords: head.exposure, FILTER, LIGHT_CNT,DARK_CNT,FLAT_CNT, BIAS_CNT, SET_TEMP. These values are written and read. Removed from final stacked file.} { final files contains, LUM_EXP,LUM_CNT,LUM_DARK, LUM_FLAT, LUM_BIAS, RED_EXP,RED_CNT,RED_DARK, RED_FLAT, RED_BIAS.......These values are not read} ListView1.Items.item[c].subitems.Strings[L_calibration]:=head.calstat; ListView1.Items.item[c].subitems.Strings[L_result]:=head.calstat; filename2:=StringReplace(ChangeFileExt(filename2,'.fit'),'.fit','_cal.fit',[]);{give new file name } memo2_message('█ █ █ Saving calibrated file as '+filename2); save_fits(img_loaded,filename2,-32, true); ListView1.items[c].caption:=filename2;//update list. Also used for photometry object_to_process:=uppercase(ListView1.Items.item[c].subitems.Strings[L_object]); {get a object name} stack_info:=' '+inttostr(head.flatdark_count)+'x'+'FD '+ inttostr(head.flat_count)+'x'+'F '+ inttostr(head.dark_count)+'x'+'D '+ '1x'+head.filter_name; report_results(object_to_process,stack_info,0,-1{no icon});{report result in tab results} end //calibration else //no change begin Application.ProcessMessages; memo2_message(filename2 + ' No dark of flat found or is already calibrated!!!!'); if esc_pressed then exit; end; finally end; end; end;{with stackmenu1 do} plot_fits(mainwindow.image1,true,true);{update to last image, activate memo1} Screen.Cursor:=crDefault; memo2_message('Calibration of the individual files is complete. New files are posted in the results tab'); end; procedure put_best_quality_on_top(var files_to_process : array of TfileToDo);{find the files with the lowest hfd unless an image is larger} var best_quality,quality : double; first, best_index,i, width1, largest_width : integer; quality_str : string; file_to_do : Tfiletodo; begin first:=-1; largest_width:=-1; best_index:=999999; best_quality:=0; for i:=0 to length(files_to_process)-1 do begin if length(files_to_process[i].name)>1 then {has a filename} begin stackmenu1.ListView1.Items.item[i].SubitemImages[L_quality]:=-1;{remove any older icon_king} width1:=strtoint(stackmenu1.ListView1.Items.item[i].subitems.Strings[L_width]); if first=-1 then begin first:=i; largest_width:=width1; end; quality_str:=stackmenu1.ListView1.Items.item[i].subitems.Strings[L_quality];{number of stars detected} {$ifdef darwin} {MacOS} quality_str:=add_unicode('',quality_str);//remove all crowns and thumbs {$endif} if length(quality_str)>1 then quality:=strtoint(quality_str) else quality:=0;{quality equals nr stars /sqr(hfd)} if width1>largest_width then {larger image found, give this one preference} begin width1:=largest_width; best_quality:=quality; best_index:=i; end else if width1=largest_width then {equal size} begin {equal size} if quality>best_quality then begin best_quality:=quality; best_index:=i; end; end; end; {has a file name} end;{for loop} if best_index<999999 then {selection worked} begin if best_index<>first then {swap records, put best quality first} begin file_to_do:=files_to_process[first]; files_to_process[first]:=files_to_process[best_index]; files_to_process[best_index]:=file_to_do; end; stackmenu1.ListView1.Items.item[best_index].SubitemImages[L_quality]:=icon_king; {mark as best quality image} {$ifdef darwin} {MacOS} {bugfix darwin icons} stackmenu1.ListView1.Items.item[best_index].Subitems.strings[L_quality]:=add_unicode('♛',stackmenu1.ListView1.Items.item[best_index].Subitems.strings[L_quality]);//add crown {$endif} memo2_message('Reference image selected based on quality (star_detections/hfd) is: '+files_to_process[best_index].name); end; end; function RemoveSpecialChars(const STR : string) : string; {remove ['.','\','/','*','"',':','|','<','>']} var {################# initialised variables #########################} InvalidChars : set of char = ['.','\','/','*','"',':','|','<','>']; var I : integer; begin Result:=''; for i:=1 to length(str) do if not(str[i] in InvalidChars) then result:=result+str[i] end; function propose_file_name(mosaic_mode,add_time: boolean;object_to_process,filters_used:string) : string; {propose a file name} var hh,mm,ss,ms : word; begin if object_to_process<>'' then result:=object_to_process else result:='no_object'; if head.date_obs<>'' then result:=result+', '+copy(head.date_obs,1,10); result:=result+', '; if mosaic_mode then result:=result+'mosaic '; if counterR<>0 then result:=result+inttostr(counterR)+'x'+inttostr(exposureR)+'R '; if counterG<>0 then result:=result+inttostr(counterG)+'x'+inttostr(exposureG)+'G '; if counterB<>0 then result:=result+inttostr(counterB)+'x'+inttostr(exposureB)+'B '; if counterRGB<>0 then result:=result+inttostr(counterRGB)+'x'+inttostr(exposureRGB)+'RGB '; if counterL<>0 then result:=result+inttostr(counterL)+'x'+inttostr(exposureL)+'L '; {head.exposure} result:=StringReplace(trim(result),' ,',',',[rfReplaceAll]);{remove all spaces in front of comma's} telescop:=trim(telescop); if trim(telescop)<>'' then result:=result+', '+telescop; if length(filters_used)>0 then result:=result+', ('+filters_used+')'; instrum:=trim(instrum); if instrum<>'' then result:=result+', '+instrum; result:=RemoveSpecialChars(result);{slash could be in date but also telescope name like eqmod HEQ5/6} if add_time then begin decodetime(time,hh,mm,ss,ms); result:=result+'_'+leadingzero(hh)+leadingzero(mm)+leadingzero(ss); end; if pos('Aver',stackmenu1.stack_method1.text)>0 then result:=result+'_average'; result:=result+'_stacked.fits'; end; procedure Tstackmenu1.stack_button1Click(Sender: TObject); var i,c,over_size,over_sizeL,nrfiles, image_counter,object_counter, first_file, total_counter,counter_colours : integer; filter_name1, filter_name2,defilter, filename3, extra1,extra2,object_to_process,stack_info,thefilters,mess : string; lrgb,solution,monofile,ignore,cal_and_align, mosaic_mode,sigma_mode,calibration_mode,calibration_mode2,skip_combine,success,classify_filter, classify_object,sender_photometry : boolean; startTick : qword;{for timing/speed purposes} min_background,max_background,backgr : double; filters_used : array [0..4] of string; begin save_settings2;{too many lost selected files, so first save settings} esc_pressed:=false; memo2_message('Stack method '+stack_method1.text); memo2_message('Oversize '+oversize1.text+ ' pixels'); mosaic_mode:=pos('stich',stackmenu1.stack_method1.text)>0; sigma_mode:=pos('Sigma',stackmenu1.stack_method1.text)>0; skip_combine:=pos('skip',stackmenu1.stack_method1.text)>0; cal_and_align:=pos('alignment',stackmenu1.stack_method1.text)>0; {calibration and alignment only} sender_photometry:=(sender=photom_stack1);//stack instruction from photometry tab? classify_filter:=((classify_filter1.checked) and (sender_photometry=false));//disable classify filter if sender is photom_stack1 classify_object:=((classify_object1.checked) and (sender_photometry=false));//disable classify object if sender is photom_stack1 if ((stackmenu1.use_manual_alignment1.checked) and (sigma_mode) and (pos('Comet',stackmenu1.manual_centering1.text)<>0)) then memo2_message('█ █ █ █ █ █ Warning, use for comet stacking the stack method "Average"!. █ █ █ █ █ █ '); if stackmenu1.use_ephemeris_alignment1.checked then begin if length(ephemeris_centering1.text)<=1 then begin memo2_message('█ █ █ █ █ █ Abort, no object selected for ephemeris alignment. At tab alignment, press analyse and select object to align on! █ █ █ █ █ █'); exit; end else memo2_message('Ephemeris alignment on object '+ephemeris_centering1.text); end; startTick := gettickcount64; if img_loaded<>nil then begin img_backup:=nil;{clear to save memory} backup_img; end; ;{backup image array and header for case esc pressed.} calibration_mode:=pos('Calibration only',stackmenu1.stack_method1.text)>0;//"Calibration only" calibration_mode2:=pos('de-mosaic',stackmenu1.stack_method1.text)>0;//"Calibration only. No de-mosaic" if ListView1.items.count<>0 then begin memo2_message('Analysing images.'); analyse_tab_lights(calibration_mode=false); {analyse any image not done yet. For calibration mode skip hfd and background measurements} if esc_pressed then exit; if ((calibration_mode2) or (sender_photometry)) then process_as_osc:=0;// do not process as OSC if process_as_osc>0 then begin if process_as_osc=2 then memo2_message('Colour stack. Forced processing as OSC images. Demosaic method '+demosaic_method1.text) else memo2_message('Colour stack. OSC images detected. Demosaic method '+demosaic_method1.text); if classify_filter{1.checked} then begin // memo2_message('■■■■■■■■■■■■■ OSC images. Will uncheck "Classify by filter" ! ■■■■■■■■■■■■■'); classify_filter{1.checked}:=false; end; end else if classify_filter{1.checked} then memo2_message('LRGB colour stack (classify by light filter checked)') else memo2_message('Grayscale stack (classify by light filter unchecked)'); set_icon_stackbutton((process_as_osc>0) or (classify_filter{1.checked}));//update glyph stack button to colour or gray memo2_message('Stacking ('+stack_method1.text+'), HOLD ESC key to abort.'); end else begin memo2_message('Abort, no images to stack! Browse for images, darks and flats.'); exit; end; if ListView2.items.count<>0 then begin memo2_message('Analysing darks.'); replace_by_master_dark(false {include background and SD}); if esc_pressed then begin restore_img;exit;end; end; if ListView3.items.count<>0 then begin memo2_message('Analysing flats.'); replace_by_master_flat(false {include background and SD}); if esc_pressed then begin restore_img;exit;end; end; dark_exposure:=987654321;{not done indication} dark_temperature:=987654321; dark_gain:='987654321'; flat_filter:='987654321';{not done indication} min_background:=65535; max_background:=0; if ((calibration_mode) or (calibration_mode2)) then {calibrate lights only} begin calibration_only; if process_as_osc>0 then Memo2_message('OSC images are converted to colour.'); Memo2_message('Ready. Resulting files are available in tab Results and can be copied to the Blink, Photometry or Lights tab.'); exit; end; Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } progress_indicator(0,''); if use_manual_alignment1.checked then {check is reference objects are marked} begin for c:=0 to ListView1.items.count-1 do if ListView1.items[c].Checked=true then begin try { Do some lengthy operation } ListView1.Selected :=nil; {remove any selection} ListView1.ItemIndex := c;{show wich file is processed} Listview1.Items[c].MakeVisible(False);{scroll to selected item} if length(ListView1.Items.item[c].subitems.Strings[L_X])<=1 then {no manual position added} begin memo2_message('█ █ █ Abort! █ █ █ Reference object missing for one or more files. Double click on all file names and mark with the mouse the reference object. The file name will then turn green.'); Screen.Cursor:=crDefault; exit; end; Application.ProcessMessages; finally end; end; end;{check for manual stacking} {activate scrolling memo2} stackmenu1.memo2.SelStart:=Length(stackmenu1.memo2.Lines.Text); stackmenu1.memo2.SelLength:=0; if ((use_astrometry_internal1.checked) or (use_ephemeris_alignment1.checked)) then {astrometric alignment} begin memo2_message('Checking astrometric solutions'); if use_ephemeris_alignment1.checked then ignore:=stackmenu1.update_solution1.checked {ephemeris} else ignore:=stackmenu1.ignore_header_solution1.Checked; {stacking} for c:=0 to ListView1.items.count-1 do if ( (ListView1.items[c].Checked=true) and ((ignore) or (ListView1.Items.item[c].subitems.Strings[L_solution]<>'✓') ){no internal solution } ) then begin try { Do some lengthy operation } ListView1.Selected :=nil; {remove any selection} ListView1.ItemIndex := c;{show wich file is processed} Listview1.Items[c].MakeVisible(False);{scroll to selected item} progress_indicator(10*c/ListView1.items.count-1,' solving');{indicate 0 to 10% for plate solving} filename2:=ListView1.items[c].caption; Application.ProcessMessages; if esc_pressed then begin restore_img; Screen.Cursor:=crDefault; exit;end; {load file} if load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded){important required to check head.cd1_1}=false then begin memo2_message('Error loading file '+filename2);{failed to load} Screen.Cursor:=crDefault; exit;end; if ((head.cd1_1=0) or (ignore)) then solution:= create_internal_solution(img_loaded,head) else solution:=true; if solution=false then begin {no solution found} ListView1.items[c].Checked:=false; memo2_message('No solution for: "'+filename2+'" un-checked this file.'); end {no solution found} else memo2_message('Astrometric solution for: "'+filename2+'"'); if solution then begin stackmenu1.ListView1.Items.item[c].subitems.Strings[L_solution]:='✓'; stackmenu1.ListView1.Items.item[c].subitems.Strings[L_position]:=prepare_ra5(head.ra0,': ')+', '+ prepare_dec4(head.dec0,'° ');{give internal position} end else stackmenu1.ListView1.Items.item[c].subitems.Strings[L_solution]:=''; {report internal plate solve result} finally end; end; memo2_message('Astrometric solutions complete.'); if mosaic_mode then begin SortedColumn:= L_position+1; listview1.sort; memo2_message('Sorted list on RA, DEC position to place tiles in the correct sequence.') end; end; if stackmenu1.auto_rotate1.checked then {fix rotationss} begin memo2_message('Checking orientations'); for c:=0 to ListView1.items.count-1 do if ( (ListView1.items[c].Checked=true) and (stackmenu1.ListView1.Items.item[c].subitems.Strings[L_solution]='✓' {solution} ) ) then begin try { Do some lengthy operation } ListView1.Selected :=nil; {remove any selection} ListView1.ItemIndex := c;{show wich file is processed} Listview1.Items[c].MakeVisible(False);{scroll to selected item} progress_indicator(10*c/ListView1.items.count-1,' rotating');{indicate 0 to 10% for plate solving} filename2:=ListView1.items[c].caption; Application.ProcessMessages; if esc_pressed then begin restore_img; Screen.Cursor:=crDefault; exit;end; {load file} if load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded){important required to check head.cd1_1}=false then begin memo2_message('Error loading file '+filename2);{failed to load} Screen.Cursor:=crDefault; exit;end; head.crota2:=fnmodulo(head.crota2,360); if ((head.crota2>=90) and (head.crota2<270)) then begin memo2_message('Rotating '+filename2+' 180°'); //mainwindow.imageflipv1Click(nil); {horizontal flip} //mainwindow.imageflipv1Click(sender);{vertical flip} raster_rotate(180,head.width/2,head.height/2 ,img_loaded);{fast rotation 180 degrees} if nrbits=16 then save_fits(img_loaded,filename2,16,true) else save_fits(img_loaded,filename2,-32,true); end; finally end; end; memo2_message('Orientation task complete.'); end; if use_ephemeris_alignment1.checked then {add annotations} begin memo2_message('Checking annotations'); for c:=0 to ListView1.items.count-1 do // and (stackmenu1.ListView1.Items.item[c].subitems.Strings[I_solution]:='✓')and ( length(stackmenu1.ListView1.Items.item[c].subitems.Strings[I_X])<=1){no annotation yet} if ( (ListView1.items[c].Checked=true) and (stackmenu1.ListView1.Items.item[c].subitems.Strings[L_solution]='✓' {solution} ) and ((stackmenu1.update_annotations1.checked) or (stackmenu1.auto_rotate1.checked ) or ( length(stackmenu1.ListView1.Items.item[c].subitems.Strings[L_X])<=1)){no annotation yet} ) then begin try { Do some lengthy operation } ListView1.Selected :=nil; {remove any selection} ListView1.ItemIndex := c;{show wich file is processed} Listview1.Items[c].MakeVisible(False);{scroll to selected item} progress_indicator(10*c/ListView1.items.count-1,' annotations');{indicate 0 to 10% for plate solving} filename2:=ListView1.items[c].caption; memo2_message('Adding annotations to FITS header and X,Y positions of selected object to list for '+filename2); Application.ProcessMessages; if esc_pressed then begin restore_img; Screen.Cursor:=crDefault; exit;end; {load file} if load_fits(filename2,true {light},true,true {update memo},0,head,img_loaded){important required to check head.cd1_1}=false then begin memo2_message('Error loading file '+filename2);{failed to load} Screen.Cursor:=crDefault; exit;end; plot_mpcorb(strtoint(maxcount_asteroid),strtofloat2(maxmag_asteroid),true {add_annotations}); if fits_file_name(filename2) then success:=savefits_update_header(filename2) else success:=save_tiff16_secure(img_loaded,filename2);{guarantee no file is lost} if success=false then begin ShowMessage('Write error !!' + filename2);Screen.Cursor:=crDefault; exit;end; get_annotation_position;{fill the x,y with annotation position} finally end; end; memo2_message('Annotations complete.'); end; progress_indicator(10,''); Application.ProcessMessages; if esc_pressed then begin restore_img;Screen.Cursor:=crDefault; exit;end; object_counter:=0; total_counter:=0; head.dark_count:=0;{reset only once, but keep if dark is loaded} head.flat_count:=0;{reset only once, but keep if flat is loaded} head.flatdark_count:=0;{reset only once} for c:=0 to ListView1.items.count-1 do begin ListView1.Items.item[c].SubitemImages[L_result]:=-1;{remove any icons. Mark third columns as not done using the image index of first column} ListView1.Items.item[c].subitems.Strings[L_result]:='';{no stack result} end; repeat {do all objects} image_counter:=0; object_to_process:=''; {blank do this object} extra1:=''; {reset always for object loop} extra2:=''; {reset always for object loop} counterR:=0; counterG:=0; counterB:=0; counterRGB:=0; counterL:=0; monofile:=false;{mono file success} head.light_count:=0; counter_colours:=0;{number of lrgb colours added} counterRdark:=0; counterGdark:=0; counterBdark:=0; counterRGBdark:=0; counterLdark:=0; counterRflat:=0; counterGflat:=0; counterBflat:=0; counterRGBflat:=0; counterLflat:=0; counterRbias:=0; counterGbias:=0; counterBbias:=0; counterRGBbias:=0; counterLbias:=0; exposureR:=0; exposureG:=0; exposureB:=0; exposureRGB:=0; exposureL:=0; for i:=0 to 4 do filters_used[i]:=''; inc(object_counter); lrgb:=((classify_filter{1.checked}) and (cal_and_align=false));{ignore lrgb for calibration and alignment is true} over_size:=round(strtofloat2(stackmenu1.oversize1.Text));{accept also commas but round later} if lrgb=false then begin SetLength(files_to_process, ListView1.items.count);{set array length to listview} nrfiles:=0; for c:=0 to ListView1.items.count-1 do begin files_to_process[c].name:='';{mark empthy} files_to_process[c].listviewindex:=c;{use same index as listview1 except when later put lowest HFD first} if ((ListView1.items[c].Checked=true) and (ListView1.Items.item[c].SubitemImages[L_result]<0)) then {not done yet} begin if object_to_process='' then object_to_process:=uppercase(ListView1.Items.item[c].subitems.Strings[L_object]); {get a object name to stack} if ( (classify_object{1.checked}=false) or (mosaic_mode){ignore object name in mosaic} or ((object_to_process<>'') and (object_to_process=uppercase(ListView1.Items.item[c].subitems.Strings[L_object]))) ) then {correct object?} begin {correct object} files_to_process[c].name:=ListView1.items[c].caption; inc(image_counter);{one image more} ListView1.Items.item[c].SubitemImages[L_result]:=5;{mark 3th columns as done using a stacked icon} ListView1.Items.item[c].subitems.Strings[L_result]:=inttostr(object_counter)+' ';{show image result number} {$ifdef darwin} {MacOS} {bugfix darwin green red colouring} if length(ListView1.Items.item[c].subitems.Strings[L_X])>1 then {manual position added, colour it} ListView1.Items.item[c].subitems.Strings[L_result]:='✓ star'+ListView1.Items.item[c].subitems.Strings[L_result]; {$endif} inc(nrfiles); if mosaic_mode then begin backgr:=strtofloat2(ListView1.Items.item[c].subitems.Strings[L_background]); min_background:=min(backgr,min_background); max_background:=max(backgr,max_background); end; end; end; end; if nrfiles>1 then {need at least two files to sort} begin if mosaic_mode=false then put_best_quality_on_top(files_to_process); {else already sorted on position to be able to test overlapping of background difference in unit_stack_routines. The tiles have to be plotted such that they overlap for measurement difference} if sigma_mode then begin if length(files_to_process)<=5 then memo2_message('█ █ █ █ █ █ Method "Sigma Clip average" does not work well for a few images. Try method "Average". █ █ █ █ █ █ '); stack_sigmaclip(over_size,process_as_osc,{var}files_to_process,counterL) {sigma clip combining} end else if mosaic_mode then stack_mosaic(over_size,{var}files_to_process,abs(max_background-min_background),counterL) {mosaic combining} else if cal_and_align then {calibration & alignment only} begin memo2_message('---------- Calibration & alignment for object: '+object_to_process+' -----------'); calibration_and_alignment(over_size,process_as_osc,{var}files_to_process,counterL){saturation clip average} end else stack_average(over_size,process_as_osc,{var}files_to_process,counterL);{average} if counterL>0 then begin exposureL:=round(sum_exp/counterL); {average head.exposure} temperatureL:=round(sum_temp/counterL); {average head.exposure} monofile:=true;{success} end; if esc_pressed then begin progress_indicator(-2,'ESC'); restore_img;Screen.Cursor:=crDefault; { back to normal } exit; end; end else begin counterL:=0; {number of files processed} monofile:=false;{stack failure} end; end else begin {lrgb lights, classify on filter is true} SetLength(files_to_process_LRGB,6);{will contain [reference,r,g,b,colour,l]} for i:=0 to 5 do files_to_process_LRGB[i].name:='';{clear} SetLength(files_to_process, ListView1.items.count);{set array length to listview} for i:=0 to 4 do begin case i of 0: begin filter_name1:=(red_filter1.text);filter_name2:=(red_filter2.text); end; 1: begin filter_name1:=(green_filter1.text);filter_name2:=(green_filter2.text);end; 2: begin filter_name1:=(blue_filter1.text);filter_name2:=(blue_filter2.text);end; 3: begin filter_name1:='colour';filter_name2:='Colour';end; else begin filter_name1:=(luminance_filter1.text);filter_name2:=(luminance_filter2.text);end; end;{case} nrfiles:=0; for c:=0 to ListView1.items.count-1 do begin files_to_process[c].name:='';{mark as empthy} files_to_process[c].listviewindex:=c;{use same index as listview except when later put lowest HFD first} if ((ListView1.items[c].Checked=true) and (ListView1.Items.item[c].SubitemImages[L_result]<0){not yet done} and (length(ListView1.Items.item[c].subitems.Strings[L_filter])>0) {skip any file without a filter name} ) then begin {not done yet} if object_to_process='' then object_to_process:=uppercase(ListView1.Items.item[c].subitems.Strings[L_object]); {get a next object name to stack} if ((classify_object{1.checked}=false) or (mosaic_mode) {ignore object name in mosaic} or ((object_to_process<>'') and (object_to_process=uppercase(ListView1.Items.item[c].subitems.Strings[L_object]))) ) {correct object?} then begin {correct object} defilter:=ListView1.Items.item[c].subitems.Strings[L_filter]; if ( (AnsiCompareText(filter_name1,defilter)=0) or (AnsiCompareText(filter_name2,defilter)=0) ) then begin {correct filter} filters_used[i]:=defilter; files_to_process[c].name:=ListView1.items[c].caption; inc(image_counter);{one image more} ListView1.Items.item[c].SubitemImages[L_result]:=5;{mark 3th columns as done using a stacked icon} ListView1.Items.item[c].subitems.Strings[L_result]:=inttostr(object_counter)+' ';{show image result number} inc(nrfiles); first_file:=c; {remember first found for case it is the only file} head.exposure:= strtofloat2(ListView1.Items.item[c].subitems.Strings[L_exposure]);{remember head.exposure time in case only one file, so no stack so unknown} if mosaic_mode then begin backgr:=strtofloat2(ListView1.Items.item[c].subitems.Strings[L_background]); min_background:=min(backgr,min_background); max_background:=max(backgr,max_background); end; end; end; end; end; if nrfiles>0 then begin if nrfiles>1 then {more than one file} begin if mosaic_mode=false then put_best_quality_on_top(files_to_process); {else already sorted on position to be able to test overlapping of background difference in unit_stack_routines. The tiles have to be plotted such that they overlap for measurement difference} if sigma_mode then stack_sigmaclip(over_size,process_as_osc,{var}files_to_process, counterL) {sigma clip combining} else if mosaic_mode then stack_mosaic(over_size,{var}files_to_process,abs(max_background-min_background),counterL) {mosaic combining} else stack_average(over_size,process_as_osc,{var}files_to_process,counterL);{average} over_sizeL:=0; {do oversize only once. Not again in 'L' mode !!} if esc_pressed then begin progress_indicator(-2,'ESC'); restore_img; Screen.Cursor:=crDefault; { back to normal } exit; end; if ((over_size<>0) and ( head.cd1_1<>0){solution}) then {adapt astrometric solution for intermediate file} begin {adapt reference pixels of plate solution due to oversize} head.crpix1:=head.crpix1+over_size; if over_size>0 then head.crpix2:=head.crpix2+over_size else head.crpix2:=head.crpix2+round(over_size*head.height/head.width); {if oversize is negative then shrinking is done in ratio. Y shrinkage is done with factor round(oversize*height/width. Adapt head.crpix2 accordingly.} update_float ('CRPIX1 =',' / X of reference pixel ' ,head.crpix1); update_float ('CRPIX2 =',' / Y of reference pixel ' ,head.crpix2); end; update_text('COMMENT 1',' Written by ASTAP. www.hnsky.org'); update_text('CALSTAT =',#39+head.calstat+#39); if pos('D',head.calstat)>0 then begin update_integer('DATAMAX =',' / Maximum data value ',round(head.datamax_org)); {datamax is updated in stacking process. Use the last one} update_integer('DATAMIN =',' / Minimum data value ',round(pedestal_s)); add_text ('COMMENT ',' D='+ExtractFileName( last_dark_loaded )); end; if pos('F',head.calstat)>0 then add_text ('COMMENT ',' F='+ExtractFileName( last_flat_loaded )); if sigma_mode then update_text ('HISTORY 1',' Stacking method SIGMA CLIP AVERAGE') else update_text ('HISTORY 1',' Stacking method AVERAGE'); update_text ('HISTORY 2',' Active filter: '+head.filter_name);{show which filter was used to combine} {original head.exposure is still maintained } add_integer('LIGH_CNT=',' / Light frames combined. ' ,counterL); {for interim lum,red,blue...files.} add_integer('DARK_CNT=',' / Darks used for luminance. ' ,head.dark_count);{for interim lum,red,blue...files. Compatible with master darks} add_integer('FLAT_CNT=',' / Flats used for luminance. ' ,head.flat_count);{for interim lum,red,blue...files. Compatible with master flats} add_integer('BIAS_CNT=',' / Flat-darks used for luminance. ' ,head.flatdark_count);{for interim lum,red,blue...files. Compatible with master flats} { ASTAP keyword standard:} { interim files can contain keywords: head.exposure, FILTER, LIGHT_CNT,DARK_CNT,FLAT_CNT, BIAS_CNT, SET_TEMP. These values are written and read. Removed from final stacked file.} { final files contains, LUM_EXP,LUM_CNT,LUM_DARK, LUM_FLAT, LUM_BIAS, RED_EXP,RED_CNT,RED_DARK, RED_FLAT, RED_BIAS.......These values are not read} stack_info:=' '+inttostr(head.flatdark_count)+'x'+'FD '+ inttostr(head.flat_count)+'x'+'F '+ inttostr(head.dark_count)+'x'+'D '+ inttostr(counterL)+'x'+head.filter_name; filename3:=filename2; filename2:=StringReplace(ChangeFileExt(filename2,'.fit'),'.fit','@ '+stack_info+'_stacked.fit',[]);{give new file name for any extension, FIT, FTS, fits} memo2_message('█ █ █ Saving as '+filename2); save_fits(img_loaded,filename2,-32,true {override}); files_to_process_LRGB[i+1].name:=filename2;{should contain [nil,r,g,b,l]} if ( (AnsiCompareText(luminance_filter1.text,filters_used[i])=0) or (AnsiCompareText(luminance_filter2.text,filters_used[i])=0) ) then begin files_to_process_LRGB[5].name:=filename2; {use this colour also for luminance!!} filters_used[4]:=filters_used[i];{store luminance filter} memo2_message('Filter '+filters_used[i]+' will also be used for luminance.'); end; stack_info:='Interim result '+head.filter_name+' x '+inttostr(counterL); report_results(object_to_process,stack_info,object_counter,i {color icon});{report result in tab result using modified filename2} filename2:=filename3;{restore last filename} extra1:=extra1+head.filter_name; end{nrfiles>1} else begin files_to_process_LRGB[i+1]:=files_to_process[first_file]; {one file, no need to stack} if ( (AnsiCompareText(luminance_filter1.text,filters_used[i])=0) or (AnsiCompareText(luminance_filter2.text,filters_used[i])=0) ) then begin files_to_process_LRGB[5]:=files_to_process[first_file]; {use this colour also for luminance!!} filters_used[4]:=filters_used[i];{store luminance filter} memo2_message('Filter '+filters_used[i]+' will also be used for luminance.'); end; over_sizeL:=over_size;{do oversize in 'L' routine} counterL:=1; end; case i of 0: begin extra2:=extra2+'R'; end; 1: begin extra2:=extra2+'G';end; 2: begin extra2:=extra2+'B'; end; 3: begin extra2:=extra2+'-'; end; else begin extra2:=extra2+'L'; end; end;{case} // extra1:=extra1+head.filter_name; end; end;{for loop for 4 RGBL} if skip_combine=false then begin {combine colours} if length(extra2)>=2 then {at least two colors required} begin files_to_process_LRGB[0]:=files_to_process_LRGB[5];{use luminance as reference for alignment} {contains, REFERENCE, R,G,B,RGB,L} if files_to_process_LRGB[0].name='' then files_to_process_LRGB[0]:=files_to_process_LRGB[1]; {use red channel as reference if no luminance is available} if files_to_process_LRGB[0].name='' then files_to_process_LRGB[0]:=files_to_process_LRGB[2]; {use green channel as reference if no luminance is available} counterL:=0;//reset counter for case no Luminance files are available, so RGB stacking. stack_LRGB(over_sizeL {zero if already stacked from several files},files_to_process_LRGB, counter_colours); {LRGB method, files_to_process_LRGB should contain [REFERENCE, R,G,B,RGB,L]} if esc_pressed then begin progress_indicator(-2,'ESC'); restore_img;Screen.Cursor:=crDefault; { back to normal } exit; end; end else if length(extra2)=1 then begin memo2.lines.add('Error! One colour only. For LRGB stacking a minimum of two colours is required. Remove the check mark for classify on "Light filter" or add images made with a different optical filter.'); //filters_used[5]:=filters_used[i]; lrgb:=false;{prevent runtime errors with head.naxis3=3} end; end; end; Screen.Cursor:=crDefault; { Always restore to normal } if esc_pressed then begin progress_indicator(-2,'ESC'); restore_img;exit;end; if ((cal_and_align=false) and (skip_combine=false)) then {do not do this for calibration and alignment only, and skip combine} begin //fits_file:=true; nrbits:=-32; {by definition. Required for stacking 8 bit files. Otherwise in the histogram calculation stacked data could be all above data_max=255} if ((monofile){success none lrgb loop} or (counter_colours<>0{length(extra2)>=2} {lrgb loop})) then begin if counter_colours<>0{length(extra2)>=2} {lrgb loop} then begin if stackmenu1.lrgb_auto_level1.checked then begin memo2_message('Adjusting colour levels as set in tab "stack method"'); stackmenu1.auto_background_level1Click(nil); apply_factors;{histogram is after this action invalid} stackmenu1.reset_factors1Click(nil);{reset factors to default} if stackmenu1.green_purple_filter1.checked then begin memo2_message('Applying "remove green and purple" filter'); green_purple_filter(img_loaded); end; use_histogram(img_loaded,true {update}); {plot histogram, set sliders} if stackmenu1.lrgb_colour_smooth1.checked then begin memo2_message('Applying colour-smoothing filter image as set in tab "stack method"'); smart_colour_smooth(img_loaded,strtofloat2(lrgb_smart_smooth_width1.text),strtofloat2(lrgb_smart_colour_sd1.text),lrgb_preserve_r_nebula1.checked,false {get hist});{histogram doesn't needs an update} end end else begin memo2_message('Adjusting colour levels and colour smooth are disabled. See tab "stack method"'); use_histogram(img_loaded,true {update}); {plot histogram, set sliders} end; end else begin if process_as_osc>0 then begin if stackmenu1.osc_auto_level1.checked then begin memo2_message('Adjusting colour levels as set in tab "stack method"'); stackmenu1.auto_background_level1Click(nil); apply_factors;{histogram is after this action invalid} stackmenu1.reset_factors1Click(nil);{reset factors to default} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} if stackmenu1.osc_colour_smooth1.checked then begin memo2_message('Applying colour-smoothing filter image as set in tab "stack method".'); smart_colour_smooth(img_loaded,strtofloat2(osc_smart_smooth_width1.text),strtofloat2(osc_smart_colour_sd1.text),osc_preserve_r_nebula1.checked,false {get hist});{histogram doesn't needs an update} end end else begin memo2_message('Adjusting colour levels and colour smooth are disabled. See tab "stack method"'); use_histogram(img_loaded,true {update}); {plot histogram, set sliders} end; end else {mono files} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} end; plot_fits(mainwindow.image1,true,true);{plot real} remove_key('DATE ',false{all});{no purpose anymore for the original date written} remove_key('EXPTIME',false{all}); {remove, will be added later in the header} remove_key('EXPOSURE',false{all});{remove, will be replaced by LUM_EXP, RED_EXP.....} remove_key('CCD-TEMP',false{all});{remove, will be replaced by SET-TEMP.....} remove_key('SET-TEMP',false{all});{remove, will be added later in mono or for colour as LUM_TEMP, RED_TEMP.....} remove_key('LIGH_CNT',false{all});{remove, will be replaced by LUM_CNT, RED_CNT.....} remove_key('DARK_CNT',false{all});{remove, will be replaced by LUM_DARK, RED_DARK.....} remove_key('FLAT_CNT',false{all});{remove, will be replaced by LUM_FLAT, RED_FLAT.....} remove_key('BIAS_CNT',false{all});{remove, will be replaced by LUM_BIAS, RED_BIAS.....} { ASTAP keyword standard:} { interim files can contain keywords: EXPTIME, FILTER, LIGHT_CNT,DARK_CNT,FLAT_CNT, BIAS_CNT, SET_TEMP. These values are written and read. Removed from final stacked file.} { final files contains, LUM_EXP,LUM_CNT,LUM_DARK, LUM_FLAT, LUM_BIAS, RED_EXP,RED_CNT,RED_DARK, RED_FLAT, RED_BIAS.......These values are not read} update_text ('COMMENT 1',' Written by ASTAP. www.hnsky.org'); head.calstat:=head.calstat+'S'; {status stacked} update_text ('CALSTAT =',#39+head.calstat+#39); {calibration status} if use_manual_alignment1.checked=false then {don't do this for manual stacking and moving object. Keep the date of the reference image for correct annotation of asteroids} begin head.date_obs:=jdToDate(jd_stop); update_text ('DATE-OBS=',#39+head.date_obs+#39);{give start point exposures} if ((head.naxis3=1) and (counterL>0)) then {works only for mono} begin update_float('JD-AVG =',' / Julian Day of the observation mid-point. ', jd_sum/counterL);{give midpoint of exposures} date_avg:=JdToDate(jd_sum/counterL); {update date_avg for asteroid annotation} update_text ('DATE-AVG=',#39+date_avg+#39);{give midpoint of exposures} head.date_obs:=JdToDate((jd_sum/counterL) - head.exposure/(2*24*60*60)); {estimate for date obs for stack. Accuracy could vary due to lost time between exposures}; update_text ('DATE-OBS=',#39+head.date_obs+#39+'/ Calculated for stack JD_AVG - EXPTIME/(2*86400)'); //add_text ('COMMENT ',' UT midpoint in decimal notation: '+ UTdecimal(date_avg)); end; end else;{keep head.date_obs from reference image for accurate asteroid annotation} if pos('D',head.calstat)>0 then add_text ('COMMENT ',' D='+ExtractFileName( last_dark_loaded )); if pos('F',head.calstat)>0 then add_text ('COMMENT ',' F='+ExtractFileName( last_flat_loaded )); if sigma_mode then update_text ('HISTORY 1',' Stacking method SIGMA CLIP AVERAGE') else update_text ('HISTORY 1',' Stacking method AVERAGE');{overwrite also any existing header info} if head.naxis3>1 then begin if process_as_osc>0 then begin remove_key('BAYERPAT',false{all});{remove key word in header} remove_key('XBAYROFF',false{all});{remove key word in header} remove_key('YBAYROFF',false{all});{remove key word in header} update_text('HISTORY 2',' De-mosaic bayer pattern used '+bayer_pattern[bayerpattern_final]); update_text('HISTORY 3',' Colour conversion: '+ stackmenu1.demosaic_method1.text+ ' interpolation.') end else update_text('HISTORY 2',' Combined to colour image.'); end else update_text('HISTORY 2',' Processed as gray scale images.'); if lrgb=false then {monochrome} begin {adapt astrometric solution. For colour this is already done during luminance stacking} if ((over_size<>0) and ( head.cd1_1<>0){solution}) then {adapt astrometric solution for intermediate file} begin {adapt reference pixels of plate solution due to oversize} head.crpix1:=head.crpix1+over_size; if over_size>0 then head.crpix2:=head.crpix2+over_size else head.crpix2:=head.crpix2+round(over_size*head.height/head.width); {if oversize is negative then shrinking is done in ratio. Y shrinkage is done with factor round(oversize*height/width. Adapt head.crpix2 accordingly.} update_float ('CRPIX1 =',' / X of reference pixel ' ,head.crpix1); update_float ('CRPIX2 =',' / Y of reference pixel ' ,head.crpix2); end; head.exposure:=sum_exp;{for annotation asteroid} update_integer('EXPTIME =',' / Total luminance exposure time in seconds. ' ,round(head.exposure)); update_integer('SET-TEMP=',' / Average set temperature used for luminance. ' ,temperatureL); add_integer('LUM_EXP =',' / Average luminance exposure time. ' ,exposureL); add_integer('LUM_CNT =',' / Luminance images combined. ' ,counterL); add_integer('LUM_DARK=',' / Darks used for luminance. ' ,head.dark_count); add_integer('LUM_FLAT=',' / Flats used for luminance. ' ,head.flat_count); add_integer('LUM_BIAS=',' / Flat-darks used for luminance. ' ,head.flatdark_count); thefilters:=head.filter_name; {used later for file name} stack_info:=' '+inttostr(head.flatdark_count)+'x'+'FD '+ inttostr(head.flat_count)+'x'+'F '+ inttostr(head.dark_count)+'x'+'D '+ inttostr(counterL)+'x'+inttostr(exposureL)+'L ('+thefilters+')'; {head.exposure} end else {made LRGB color} begin head.naxis:=3;{will be written in save routine} head.naxis3:=3;{will be written in save routine, head.naxis3 is updated in save_fits} if length(extra2)>1 then update_text('FILTER =',#39+' '+#39);{wipe filter info} head.exposure:=exposureL*counterL;{for annotation asteroid} update_integer('EXPTIME =',' / Total luminance exposure time in seconds. ' ,round(head.exposure)); {could be used for midpoint. Download time are not included, so it is not perfect} if counterL>0 then //counter number of luminance used in LRGB stacking begin add_integer('LUM_EXP =',' / Luminance exposure time. ' ,exposureL); add_integer('LUM_CNT =',' / Luminance images combined. ' ,counterL); add_integer('LUM_DARK=',' / Darks used for luminance. ' ,counterLdark); add_integer('LUM_FLAT=',' / Flats used for luminance. ' ,counterLflat); add_integer('LUM_BIAS=',' / Flat-darks used for luminance. ' ,counterLbias); add_integer('LUM_TEMP=',' / Average set temperature used for luminance. ' ,temperatureL); end; if counterR>0 then begin add_integer('RED_EXP =',' / Red exposure time. ' ,exposureR); add_integer('RED_CNT =',' / Red filter images combined. ' ,counterR); add_integer('RED_DARK=',' / Darks used for red. ' ,counterRdark); add_integer('RED_FLAT=',' / Flats used for red. ' ,counterRflat); add_integer('RED_BIAS=',' / Flat-darks used for red. ' ,counterRbias); add_integer('RED_TEMP=',' / Set temperature used for red. ' ,temperatureR); end; if counterG>0 then begin add_integer('GRN_EXP =',' / Green exposure time. ' ,exposureG); add_integer('GRN_CNT =',' / Green filter images combined. ' ,counterG); add_integer('GRN_DARK=',' / Darks used for green. ' ,counterGdark); add_integer('GRN_FLAT=',' / Flats used for green. ' ,counterGflat); add_integer('GRN_BIAS=',' / Flat-darks used for green. ' ,counterGbias); add_integer('GRN_TEMP=',' / Set temperature used for green. ' ,temperatureG); end; if counterB>0 then begin add_integer('BLU_EXP =',' / Blue exposure time. ' ,exposureB); add_integer('BLU_CNT =',' / Blue filter images combined. ' ,counterB); add_integer('BLU_DARK=',' / Darks used for blue. ' ,counterBdark); add_integer('BLU_FLAT=',' / Flats used for blue. ' ,counterBflat); add_integer('BLU_BIAS=',' / Flat-darks used for blue. ' ,counterBbias); add_integer('BLU_TEMP=',' / Set temperature used for blue. ' ,temperatureB); end; if counterRGB>0 then begin add_integer('RGB_EXP =',' / OSC exposure time. ' ,exposureRGB); add_integer('RGB_CNT =',' / OSC images combined. ' ,counterRGB); add_integer('RGB_DARK=',' / Darks used for OSC. ' ,counterRGBdark); add_integer('RGB_FLAT=',' / Flats used for OSC. ' ,counterRGBflat); add_integer('RGB_BIAS=',' / Flat-darks used for OSC. ' ,counterRGBbias); add_integer('RGB_TEMP=',' / Set temperature used for OSC. ' ,temperatureRGB); end; if counterL>0 then add_text ('COMMENT 2',' Total luminance exposure '+inttostr(round(counterL*exposureL))+', filter '+filters_used[4]); if counterR>0 then add_text ('COMMENT 3',' Total red exposure '+inttostr(round(counterR*exposureR))+', filter '+filters_used[0] ); if counterG>0 then add_text ('COMMENT 4',' Total green exposure '+inttostr(round(counterG*exposureG))+', filter '+filters_used[1] ); if counterB>0 then add_text ('COMMENT 5',' Total blue exposure '+inttostr(round(counterB*exposureB))+', filter '+filters_used[2] ); if counterRGB>0 then add_text ('COMMENT 6',' Total RGB exposure '+inttostr(round(counterRGB*exposureRGB))+', filter '+filters_used[3] ); { ASTAP keyword standard:} { interim files can contain keywords: EXPTIME, FILTER, LIGHT_CNT,DARK_CNT,FLAT_CNT, BIAS_CNT, SET_TEMP. These values are written and read. Removed from final stacked file.} { final files contains, LUM_EXP,LUM_CNT,LUM_DARK, LUM_FLAT, LUM_BIAS, RED_EXP,RED_CNT,RED_DARK, RED_FLAT, RED_BIAS.......These values are not read} thefilters:=''; for i:=0 to 4 do if length(filters_used[i])>0 then thefilters:=thefilters+' '+filters_used[i]; thefilters:=trim(thefilters); stack_info:=' '+inttostr(head.flatdark_count)+'x'+'FD '+ inttostr(head.flat_count)+'x'+'F '+ inttostr(head.dark_count)+'x'+'D '+ inttostr(counterR)+'x'+inttostr(exposureR)+'R '+ inttostr(counterG)+'x'+inttostr(exposureG)+'G '+ inttostr(counterB)+'x'+inttostr(exposureB)+'B '+ inttostr(counterRGB)+'x'+inttostr(exposureRGB)+'RGB '+ inttostr(counterL)+'x'+inttostr(exposureL)+'L ('+thefilters+')'; {head.exposure} end; filename2:=extractfilepath(filename2)+propose_file_name(mosaic_mode, stackmenu1.add_time1.checked {tab results} or sender_photometry,object_to_process,thefilters);{give it a nice file name} if head.cd1_1<>0 then memo2_message('Astrometric solution reference file preserved for stack.'); memo2_message('█ █ █ Saving result '+inttostr(image_counter)+' as '+filename2); if save_fits(img_loaded,filename2,-32, true)=false then exit; if save_settings_image_path1.checked then save_settings(changefileext(filename2,'.cfg')); if head.naxis3>1 then report_results(object_to_process,stack_info,object_counter,3 {color icon}) {report result in tab results} else report_results(object_to_process,stack_info,object_counter,4 {gray icon}); {report result in tab results} {close the window} end; {not zero count} end; {not calibration and alignment} Application.ProcessMessages;{look for keyboard instructions} total_counter:=total_counter+counterL; {keep record of lights done} until ((counterL=0){none lrgb loop} and (extra1=''){lrgb loop} );{do all names} if ((total_counter=0) and (image_counter=0)) then {somehow nothing was stacked} begin memo2.lines.add('No images in tab lights to stack.'); if classify_filter{1.checked} then memo2.lines.add('Hint: remove check mark from classify by "light filter" if required.'); if classify_object{1.checked} then memo2.lines.add('Hint: remove check mark from classify by "light object" if required.'); if use_astrometry_internal1.checked then memo2.lines.add('Hint: check field of view camera in tab alignment.'); end else memo2.lines.add('Finished in '+IntToStr( round((gettickcount64 - startTick)/1000)) + ' sec. The FITS header contains a detailed history.'); {$IFDEF fpc} progress_indicator(-100,'');{back to normal} {$else} {delphi} mainwindow.taskbar1.progressstate:=TTaskBarProgressState.None; {$endif} update_menu(true); img_temp:=nil;{remove used memory} img_average:=nil; img_final:=nil; img_variance:=nil; if write_log1.checked then Memo2.Lines.SaveToFile(ChangeFileExt(Filename2,'.txt')); if powerdown_enabled1.checked then {power down system} begin i:=60; {60 seconds} repeat beep; memo2.lines.add(TimeToStr(time)+' Will shutdown system in '+inttostr(i) + ' sec!! Hit ESC or uncheck shutdown action to avoid.'); wait(1000); {smart sleep} // application.processmessages; if ((powerdown_enabled1.checked=false) or (esc_pressed)) then begin memo2.lines.add(TimeToStr(time)+' Shutdown avoided.'); exit; end; dec(i); until i<=0; {$ifdef mswindows} mainwindow.caption:= ShutMeDown; {$else} {unix} fpSystem('/sbin/shutdown -P now'); {$endif} end; end; procedure Tstackmenu1.stack_method1Change(Sender: TObject); var method : integer; sigm, mosa,cal_and_align,cal_only : boolean; mode : string; begin method:=stack_method1.ItemIndex; sigm:=(method in [1,7]);{sigma clip} mosa:=(method=2);{mosaic} cal_and_align:=(method=3);{} cal_only:=(method in [4,5]);{} //Average //Sigma clip average //Image stiching mode //Calibration and alignment only //Calibration only //Calibration only. No de-mosaic //Average, skip LRGB combine //Sigma clip, skip LRGB combine mosaic_box1.enabled:=mosa; raw_box1.enabled:=((mosa=false) and (classify_filter1.checked=false)); if mosa then raw_box1.caption:='RAW one shot colour images (Disabled by stack method)' else if classify_filter1.checked then raw_box1.caption:='RAW one shot colour images (Disabled by ☑ Light filter)' else raw_box1.caption:='RAW one shot colour images'; filter_groupbox1.enabled:=((mosa=false) and (classify_filter1.checked)); if mosa then filter_groupbox1.caption:='LRGB stacking (Disabled by stack method)' else if classify_filter1.checked=false then filter_groupbox1.caption:='LRGB stacking (Disabled by ☐ Light filter)' else filter_groupbox1.caption:='LRGB stacking'; sd_factor1.enabled:=sigm; if ((use_astrometry_internal1.checked=false) and (mosa)) then begin use_astrometry_internal1.checked:=true; memo2_message('Switched to INTERNAL ASTROMETRIC alignment. Set in tab aligment the mosaic width and height high enough to have enough work space.'); end; if mosa then memo2_message('Astrometric image stitching mode. This will stitch astrometric tiles. Prior to this stack the images to tiles and check for clean edges. If not use the "Crop each image function". For flat background apply artificial flat in tab pixel math1 in advance if required.'); classify_object1.enabled:=(mosa=false); {in mosaic mode ignore object name} oversize1.enabled:=(mosa=false); {in mosaic mode ignore this oversize setting} classify_filter1.enabled:=((cal_and_align=false) and (cal_only=false) and (mosa=false)); classify_object1.enabled:=((cal_only=false) and (mosa=false)); if classify_filter1.checked then mode:='LRGB ' else mode:=''; stack_button1.caption:='STACK '+mode+'('+stack_method1.text+')'; if ((method>=6 {Skip average or sigma clip LRGB combine}) and (classify_filter1.Checked=false)) then memo2_message('█ █ █ █ █ █ Warning, classify on Light Filter is not check marked !!! █ █ █ █ █ █ '); set_icon_stackbutton((classify_filter1.checked) or (make_osc_color1.checked));//update glyph stack button to colour or gray end; procedure Tstackmenu1.use_astrometry_internal1Change(Sender: TObject); begin update_stackmenu; end; procedure Tstackmenu1.use_ephemeris_alignment1Change(Sender: TObject); begin update_stackmenu; end; procedure Tstackmenu1.use_manual_alignment1Change(Sender: TObject); begin update_stackmenu; end; procedure Tstackmenu1.use_star_alignment1Change(Sender: TObject); begin update_stackmenu; end; procedure Tstackmenu1.apply_vertical_gradient1Click(Sender: TObject); var fitsX,fitsY,i,k,most_common,y1,y2,x1,x2,counter,step : integer; mean : double; begin if head.naxis=0 then exit; memo2_message('Remove gradient started.'); Screen.Cursor:=crHourglass; application.processmessages; { Show hourglass cursor, processmessages is for Linux } backup_img; step:=round(strtofloat2(gradient_filter_factor1.text)); mean:=0; counter:=0; {vertical} if sender=apply_vertical_gradient1 then for k:=0 to head.naxis3-1 do {do all colors} begin for fitsY:=0 to (head.height-1) div step do begin y1:=(step+1)*fitsY-(step div 2); y2:=(step+1)*fitsY+(step div 2); most_common:=mode(img_backup[index_backup].img,k,0,head.width-1,y1,y2,32000); mean:=mean+most_common; inc(counter); for i:=y1 to y2 do for fitsX:=0 to head.width-1 do begin if ((i>=0) and (i<=head.height-1)) then img_loaded[k,fitsX,i]:=most_common;{store common vertical values} end; end; end;{K} {horizontal} if sender=apply_horizontal_gradient1 then for k:=0 to head.naxis3-1 do {do all colors} begin for fitsX:=0 to (head.width-1) div step do begin x1:=(step+1)*fitsX-(step div 2); x2:=(step+1)*fitsX+(step div 2); most_common:=mode(img_backup[index_backup].img,k,x1,x2,0,head.height-1,32000); mean:=mean+most_common; inc(counter); for i:=x1 to x2 do for fitsY:=0 to head.height-1 do begin if ((i>=0) and (i<=head.width-1)) then img_loaded[k,i,fitsY]:=most_common;{store common vertical values} end; end; end;{K} mean:=mean/counter; gaussian_blur2(img_loaded,step*2); for k:=0 to head.naxis3-1 do {do all colors} begin for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin img_loaded[k,fitsX,fitsY]:=mean+img_backup[index_backup].img[k,fitsX,fitsY]-img_loaded[k,fitsX,fitsY]; end; end;{k color} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,false,true); memo2_message('Remove gradient done.'); Screen.Cursor:=crDefault; end; procedure Tstackmenu1.Viewimage1Click(Sender: TObject); begin if sender=Viewimage1 then listview_view(listview1);{from popupmenus} if sender=Viewimage2 then listview_view(listview2); if sender=Viewimage3 then listview_view(listview3); if sender=Viewimage4 then listview_view(listview4); if sender=Viewimage5 then listview_view(listview5); if sender=Viewimage6 then listview_view(listview6);{popup menu blink} if sender=Viewimage7 then listview_view(listview7);//photometry if sender=Viewimage8 then listview_view(listview8);{inspector} if sender=Viewimage9 then listview_view(listview9);{mount} end; procedure Tstackmenu1.write_video1click(Sender: TObject); var filen : string; crop,res : boolean; nrframes,c : integer; begin crop:=false; case QuestionDlg('Crop', 'Crop of full size video?', mtCustom, [ 20, 'Crop', 21, 'Cancel',22, 'Full size', 'IsDefault'], '') of 20: crop:=true; 21: exit; end; if InputQuery('Set video frame rate menu', 'Video can be saved as uncompressed in Y4M or AVI container.'+#10+ 'For monochrome images Y4M video files will be smaller.'+#10+ 'To crop set the area first with the right mouse button.'+#10+ #10+#10+ 'Enter video frame rate in [frames/second]:', frame_rate)=false then exit; mainwindow.savedialog1.initialdir:=ExtractFilePath(filename2); mainwindow.savedialog1.Filter := ' Currently selected Y4M|*.y4m|AVI uncompressed| *.avi'; if video_index=2 then begin mainwindow.savedialog1.filename:=ChangeFileExt(FileName2,'.avi'); mainwindow.savedialog1.filterindex:=2; {avi} end else begin mainwindow.savedialog1.filename:=ChangeFileExt(FileName2,'.y4m'); mainwindow.savedialog1.filterindex:=1; end; if mainwindow.savedialog1.execute then begin filen:=mainwindow.savedialog1.filename; if pos('.avi',filen)>0 then video_index:=2 {avi} else video_index:=1; {y4m} stackmenu1.analyseblink1Click(nil); {analyse and secure the dimension values head_2.width, head_2.height from lights} if video_index=2 then {AVI, count frames} begin nrframes:=0; for c:=0 to listview6.items.count-1 do {count frames} begin if listview6.Items.item[c].checked then inc(nrframes); end end; if crop=false then begin areax1:=0;{for crop activation areaX1<>areaX2} areax2:=0; if video_index=2 then res:=write_avi_head(filen,frame_rate,nrframes,head_2.width,head_2.height){open/create file. Result is false if failure} else res:=write_YUV4MPEG2_header(filen,frame_rate,((head_2.naxis3>1) or (mainwindow.preview_demosaic1.checked)),head_2.width,head_2.height); end else {crop is set by the mouse} begin if areaX1=areaX2 then begin application.messagebox(pchar('Set first the area with the mouse and mouse popup menu "Set area" !'), pchar('Missing crop area'),MB_OK); exit; end; if video_index=2 then res:=write_avi_head(filen,frame_rate,nrframes,areax2-areax1+1,areay2-areay1+1 ){open/create file. Result is false if failure} else res:=write_YUV4MPEG2_header(filen,frame_rate,((head.naxis3>1) or (mainwindow.preview_demosaic1.checked)),areax2-areax1+1,areay2-areay1+1 ); end; if res=false then begin memo2_message('Video file creation error!'); exit; end; stackmenu1.blink_button1Click(Sender);{blink and write video frames} if video_index=2 then close_the_avi(nrframes) else close_YUV4MPEG2; memo2_message('Ready!. See tab results. The video written as '+mainwindow.savedialog1.filename); filename2:=mainwindow.savedialog1.filename; report_results('Video file','',0,15 {video icon});{report result in tab results} end; end; end. ����������������astap_2022.12.09.orig/unit_sqm.lfm������������������������������������������������������������������0000644�0001751�0001751�00000014737�14344743400�016050� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object form_sqm1: Tform_sqm1 Left = 735 Height = 616 Top = 81 Width = 596 Caption = 'SQM measurement' ClientHeight = 616 ClientWidth = 596 KeyPreview = True OnClose = FormClose OnKeyPress = FormKeyPress OnShow = FormShow Position = poScreenCenter LCLVersion = '2.0.12.0' object help_sqm_measurement1: TLabel Cursor = crHandPoint Left = 544 Height = 30 Hint = 'Help asteroid annotation' Top = 568 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_sqm_measurement1Click end object date_obs1: TEdit Left = 144 Height = 23 Hint = 'Format YYYY-MM-DDTHH:MM:SS.SSS. Timezone 0, universal time' Top = 24 Width = 249 BorderSpacing.Around = 5 OnExit = date_obs1Exit ParentShowHint = False ShowHint = True TabOrder = 1 Text = '2020-02-11T22:10:41.222' end object date_label1: TLabel Left = 55 Height = 15 Top = 24 Width = 82 Anchors = [akTop, akRight] Caption = 'DATE_OBS [UT]:' ParentColor = False end object label_start_mid1: TLabel Left = 408 Height = 15 Top = 24 Width = 123 Caption = 'Start of the observation' ParentColor = False end object latitude1: TEdit Left = 144 Height = 23 Hint = 'The latitude of the observatory in degrees.' Top = 56 Width = 113 OnChange = latitude1Change OnExit = latitude1Exit ParentShowHint = False ShowHint = True TabOrder = 2 Text = '0' end object Label2: TLabel Left = 91 Height = 15 Top = 56 Width = 46 Anchors = [akTop, akRight] Caption = 'Latitude:' ParentColor = False end object Label3: TLabel Left = 80 Height = 15 Top = 88 Width = 57 Anchors = [akTop, akRight] Caption = 'Longitude:' ParentColor = False end object longitude1: TEdit Left = 144 Height = 23 Hint = 'The longitude of the observatory in degrees. For east enter positive, for west enter negative values.' Top = 88 Width = 113 OnChange = longitude1Change OnExit = longitude1Exit ParentShowHint = False ShowHint = True TabOrder = 3 Text = '0' end object ok1: TButton Left = 264 Height = 30 Hint = 'Ok' Top = 568 Width = 86 Caption = '✔' Default = True OnClick = ok1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 0 end object altitude_label1: TLabel Left = 19 Height = 15 Top = 248 Width = 118 Caption = 'Altitude calculated [°]:' ParentColor = False end object sqm_label1: TLabel Left = 20 Height = 15 Top = 280 Width = 117 Caption = 'SQM [magn/arcsec²]:' Font.Style = [fsBold] ParentColor = False ParentFont = False end object Label1: TLabel Left = 9 Height = 180 Top = 360 Width = 522 Caption = 'Pre-conditions'#13#10'1) Image is astrometrical solved for flux-calibration against the star database.'#13#10'2) The background value is larger then pedestal value or mean dark value. If not expose longer.'#13#10'3) Apply on single unprocessed raw images only.'#13#10'4) Providing dark image(s) in tab darks (ctrl+A) or entering a pedestal value (mean value of a dark) '#13#10' increases the accuracy. If possible provide also a flat(s) in tab flats.'#13#10'5) DSLR/OSC raw images require 2x2 binning. For DSLR images this is done automatically.'#13#10' extinction coefficient '#13#10'7) The calculated altitude is correct. The altitude will be used for an atmospheric'#13#10' extinction correction of the star light. The altitude is calculated based on time, latitude, '#13#10' longitude. Note that poor transparancy will result in lower values compared with'#13#10' handheld meters.' ParentColor = False end object Label4: TLabel Left = 7 Height = 15 Top = 216 Width = 130 Caption = 'Background (measured):' ParentColor = False end object Label5: TLabel Left = 39 Height = 15 Top = 128 Width = 98 Anchors = [akTop, akRight] Caption = 'Pedestal (manual):' ParentColor = False end object pedestal1: TEdit Left = 144 Height = 23 Hint = 'Enter camera pedestal correction to zero the background. Measure for the median or mean value of a dark frame and use that as pedestal value.' Top = 128 Width = 113 OnExit = pedestal1Exit ParentShowHint = False ShowHint = True TabOrder = 4 Text = '0' end object background1: TEdit Left = 144 Height = 23 Hint = 'Automatically measured from the light frame' Top = 216 Width = 113 Color = clMenu OnChange = longitude1Change ParentShowHint = False ReadOnly = True ShowHint = True TabOrder = 5 Text = '0' end object altitude1: TEdit Left = 144 Height = 23 Hint = 'Calculated from light frame time, geographic location and celestial position' Top = 248 Width = 113 Color = clMenu OnChange = longitude1Change ParentShowHint = False ReadOnly = True ShowHint = True TabOrder = 6 Text = '0' end object sqm1: TEdit Left = 144 Height = 23 Hint = 'The measured sky background expressed in magnitudes per square arcseconds.' Top = 280 Width = 113 Color = clMenu Font.Style = [fsBold] OnChange = longitude1Change ParentFont = False ParentShowHint = False ReadOnly = True ShowHint = True TabOrder = 7 Text = '0' end object error_message1: TLabel Left = 16 Height = 56 Top = 312 Width = 567 AutoSize = False Caption = 'Message: none' Font.Color = clRed ParentColor = False ParentFont = False WordWrap = True end object sqm_applydf1: TCheckBox Left = 280 Height = 19 Hint = 'Use the darks & flats in the stack menu' Top = 128 Width = 113 Caption = 'Apply dark && flat ' OnChange = sqm_applydf1Change TabOrder = 8 end object green_message1: TLabel Left = 144 Height = 48 Top = 168 Width = 432 AutoSize = False Caption = 'Message: none' Font.Color = clGreen ParentColor = False ParentFont = False WordWrap = True end end ���������������������������������astap_2022.12.09.orig/readme.txt��������������������������������������������������������������������0000644�0001751�0001751�00000001177�14344743400�015501� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ASTAP is written in Object Pascal and compiled with the Free Pascal Compiler using Lazarus the open source cross platform IDE. For the Windows use the astap.lpi project file. For the Mac use the astap_mac.lpi project file. For Linux use the astap_linux.lpi project file. For the command-line version use /command-line_version/astap_command_line.lpi {Copyright (C) 2017 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_astrometry.pas�����������������������������������������������������������0000644�0001751�0001751�00000017466�14344743400�017470� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_astrometry; {Copyright (C) 2017,2018 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at https://mozilla.org/MPL/2.0/. } interface uses Forms,SysUtils,strutils,Classes, {tstringlist}astap_main,unit_stack; function astrometry_net(filename3: string;make_new,update_header, remove_tmp, show_console, keep_open: boolean) :boolean;{use local astrometry.net} implementation procedure DeleteFiles(lpath,FileSpec: string);{delete files such *.wcs} var lSearchRec:TSearchRec; begin // lPath := IncludeTrailingPathDelimiter(lPath); if FindFirst(lpath+FileSpec,faAnyFile,lSearchRec) = 0 then begin try repeat SysUtils.DeleteFile(lPath+lSearchRec.Name); until SysUtils.FindNext(lSearchRec) <> 0; finally SysUtils.FindClose(lSearchRec); // Free resources on successful find end; end; end; //'C:\cygwin\bin\bash.exe' //'--login-c" solve-field --overwrite --scale-low 2.43250219767136 --scale-high 2.97305824159833 --scale-units arcsecperpix --objs 150 --downsample 4 --no-plots --no-fits2fits ""C:/Users/H/AppData/Local/ccdciel/tmp/ccdcieltmp.fits"" "' //'--login-c" solve-field --overwrite --scale-low 2.43250219767136 --scale-high 2.97305824159833 --scale-units arcsecperpix --objs 150 --downsample 4 --no-plots --no-fits2fits ""C:/Users/H/AppData/Local/ccdciel/tmp/ccdcieltmp.fits"" "' //http://manpages.ubuntu.com/manpages/zesty/man1/solve-field.1.html // -3 RA, --ra RA // RA of field center for search, format: degrees or hh:mm:ss // -4 DEC, --dec DEC // DEC of field center for search, format: degrees or hh:mm:ss // -5 degrees, --radius degrees // Only search in indexes within 'radius' of the field center given // by --ra and --dec // -2, --no-fits2fits // Don't sanitize FITS files; assume they're already valid // // -L, --scale-low scale // Lower bound of image scale estimate // // -H, --scale-high scale // Upper bound of image scale estimate // -u, --scale-units units // In what units are the lower and upper bounds? Choices: // // "degwidth", "degw", "dw" // width of the image, in degrees (default) // // "arcminwidth", "amw", "aw" // width of the image, in arcminutes // // "arcsecperpix", "app" // arcseconds per pixel function astrometry_net(filename3: string;make_new,update_header, remove_tmp, show_console, keep_open: boolean) :boolean;{use local astrometry.net} var filename_wcs, filename_new,param: string; scale : double; paramlist : TStringList; fpath : string; begin result:=false; mainwindow.caption:='Solving: '+ExtractFileName(filename3); fpath:=ExtractFilePath(filename3); {$ifdef mswindows} if FileExists(stackmenu1.cygwin1.text)=false then begin application.messagebox(pchar('Can'+#39+'t find local astrometry.net program. Check path or installation.'),pchar('No local astrometry.net'), 0); exit end; {$else} {unix} if FileExists(stackmenu1.cygwin1.text+'/solve-field')=false then begin application.messagebox(pchar('Can'+#39+'t find local astrometry.net program solve-field. Check path or installation.'),pchar('No local astrometry.net'), 0); exit end; {$endif} if cdelt2<>0 then scale:=cdelt2*3600 {arcsec per pixel} else if cdelt1<>0 then scale:=cdelt1*3600 {from scale in header} else scale:=calc_scale; {from focal length and sensor pixel size in arcsec per pixel} filename_wcs:=changeFileExt(filename3,'.wcs'); filename_new:=changeFileExt(filename3,'.new'); filename3:=StringReplace(filename3,'\','/',[rfReplaceAll]); paramlist:= TStringList.Create; paramlist.QuoteChar := #0; paramlist.add('--overwrite'); {overwrite} paramlist.add('--no-plots'); {no plots} // paramlist.add('--no-fits2fits'); {no fits check}{this option moved to adjustable parameters since no longer available in newer astrometry.net versions like 0.73} if make_new=false then begin paramlist.add('--new-fits');{no .new file} paramlist.add('none'); end; if stackmenu1.limit_pixelsize1.checked then begin paramlist.add('--scale-units');{scale-units arcsecperpix} paramlist.add('arcsecperpix'); paramlist.add('--scale-low');{scale-low in arcsecperpix} paramlist.add(floattostr2(scale*0.9)); paramlist.add('--scale-high');{scale-high in arcsecperpix} paramlist.add(floattostr2(scale*1.1)); end; if stackmenu1.limit_area1.checked then begin paramlist.add('--ra'); paramlist.add(floattostr2(ra_radians*180/pi)); paramlist.add('--dec'); paramlist.add(floattostr2(dec_radians*180/pi)); paramlist.add('--radius');{radius} paramlist.add(stackmenu1.search_area1.text); end; deletefile(filename_wcs);{remove any existing file} {get the extra parameters from the user} ExtractStrings([' '], [], PChar(stackmenu1.astrometry_extra_options1.text),paramlist); {$ifdef mswindows} param:=stringreplace(paramlist.delimitedtext,',',' ',[rfReplaceAll]); param:=stringreplace(param,'"','',[rfReplaceAll]); { paramlist.QuoteChar :=#0 doesn't work always} if pos('System32',stackmenu1.cygwin1.text)=0 then {Cygwin solver} begin if keep_open then ExecuteAndWait('cmd.exe /k '+stackmenu1.cygwin1.text+' --login solve-field "'+filename3+'" '+param,show_console){execute command and wait} else ExecuteAndWait(stackmenu1.cygwin1.text+' --login solve-field "'+filename3+'" '+param,show_console);{execute command and wait} end else begin {win10 Linux subsystem solver} // C:\Windows\System32\bash.exe -c "solve-field /mnt/c/astap.fpc/_M95_test_image.fit --overwrite --downsample 4" // 'C:/astap.fpc/_M95_test_image.fit' filename3:='/mnt/'+lowercase(copy(filename3,1,1))+copy(filename3,3,255);{drive should be lowercase} if keep_open then ExecuteAndWait('cmd.exe /k '+stackmenu1.cygwin1.text+' -c "solve-field '+#39+filename3+#39+' '+param+'"',show_console){execute command and wait} else ExecuteAndWait( stackmenu1.cygwin1.text+' -c "solve-field '+#39+filename3+#39+' '+param+'"',show_console);{execute command and wait} end; {$else} {unix} paramlist.insert(0,filename3); //param.Add('"--overwrite --no-plots --objs 150 --downsample 4 --ra 300.000000 --dec 40.410216 --radius 10"'); execute_unix(stackmenu1.cygwin1.text+'/solve-field',paramlist, show_console); {$endif} paramlist.Free; Application.ProcessMessages; if ( (fileexists(filename_wcs)=false) and (fileexists(filename_new)=false) ) then begin application.messagebox(pchar( 'No astrometric solution found for: '+'"'+filename3+'"'),pchar('No solution'), 0); end else result:=true; if update_header then begin wait(500);{smart sleep} deletefile(changeFileExt(filename3,'.bak'));{delete otherwise next rename is not possible} if renamefile(filename3,changeFileExt(filename3,'.bak')) then renamefile(changeFileExt(filename3,'.new'),filename3) ; end; if remove_tmp then begin Application.ProcessMessages; try DeleteFiles(fPath,'*.corr');{delete with wildcard all since files are sometimes not yet available and dlete them next time} DeleteFiles(fPath,'*.match'); DeleteFiles(fPath,'*.rdls'); DeleteFiles(fPath,'*.solved'); DeleteFiles(fPath,'*.axy'); DeleteFiles(fPath,'*.xyls'); finally end; end; end; end. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/astap_cursor.res��������������������������������������������������������������0000644�0001751�0001751�00000003270�14344743400�016717� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� �����������������������4�� �������������������(��� ���@�������������������������������������������������������������������`��������������`������������������������������������������D��� �C�R�O�S�S�_�C�U�R�S�O�R�_�L�I�N�U�X��������������������� � �@���4���4�� �������������������(��� ���@�������������������������������������������������������������������`��������������`����������������������������������������8��� �C�R�O�S�S�_�C�U�R�S�O�R��������������������� � �@���4����� �����������������(��� ���@���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0����M�A�I�N�_�I�C�O�N������������������� ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2022.12.09.orig/unit_download.pas�������������������������������������������������������������0000644�0001751�0001751�00000003114�14344743400�017047� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_download; {download file. See example https://wiki.lazarus.freepascal.org/fphttpclient} {created 2019-9-5} interface uses classes, forms, fphttpclient, openssl, opensslsockets; {in case of compile problems, temporary copy from fpc source the opensslsockets.pp and fpopenssl.pp from /home/h/fpc/packages/openssl/src to hnsky directory} function download_file(url, filename:string):boolean;{download file} function get_http(url: string): string;//get webpage in string implementation function get_http(url:string): string; var Client: TFPHttpClient; begin result:=''; //for early exit if InitSSLInterface=false then begin application.messagebox(pchar('Install OpenSSL. Required for https conections to AAVSO'), pchar('Missing library'),0);exit;end; Client := TFPHttpClient.Create(nil); try { Allow redirections } Client.AllowRedirect := true; result:=Client.Get(url); finally Client.Free; end; end; function download_file(url, filename:string):boolean;{download file} var Client: TFPHttpClient; FS: TStream; begin result:=true; InitSSLInterface; { SSL initialization has to be done by hand here } Client := TFPHttpClient.Create(nil); FS := TFileStream.Create(Filename,fmCreate or fmOpenWrite); try try Client.AllowRedirect := true;{ Allow redirections } Client.Get(url,FS); except // on E: EHttpClient do // application.messagebox(pchar(E.Message),pchar(Error_string),0); // else // raise; result:=false; end; finally FS.Free; Client.Free; end; end; end. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������