astap_2024.05.01.orig/0000755000175100017510000000000014614535560013477 5ustar debiandebianastap_2024.05.01.orig/unit_hyperbola.pas0000644000175100017510000001527614614535560017243 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, 2024 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 vertical hyperbola is defined as: sqr(y/a)-sqr(x/b)=1} var x : double; begin x:=perfectfocusposition - position; result:=a*sqrt(1+sqr(x/b));//The y or 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. The y-axis is the HFD. The x-axis the offset from the perfect focus position } {a,b are the hyperbola parameters, a is the lowest HFD value at focus position, the asymptote y:= +-x*a/b} {rev1} {A vertical hyperbola is defined as: sqr(y/a)-sqr(x/b)=1} {Note using the HFD there are two solutions, either left or right side of the hyperbola} var k : double; begin k:=hfd/a; if k<1 then k:=1;{prevent run time errors} result:=b*sqrt(sqr(k)-1); //calculate x position of the vertical hyperbola 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_hfd_position, lowest_hfd_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_hfd_position:=data[i,1]; end; if ((data[i,2]0.1){avoid zero's}) then begin lowest_hfd:=data[i,2]; lowest_hfd_position:=data[i,1]; end; end; if highest_hfd_position sqr(b):=sqr(x)/(-1+sqr(y/a)) ==> b:=x/sqrt(-1+sqr(y/a)) rev2} b:=(highest_hfd_position-lowest_hfd_position)/sqrt(-1+sqr(highest_hfd/a));{rev2.} p:=lowest_hfd_position; iteration_cycles:=0; {set starting test range} a_range:=a; b_range:=b; p_range:=(highest_hfd_position-lowest_hfd_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_2024.05.01.orig/unit_calc_trans_cubic.pas0000644000175100017510000010123614614535560020524 0ustar debiandebianunit unit_calc_trans_cubic; // DESCRIPTION: // This unit calculates the 3th order transfer function between two set of matching quads or star positions. // The output are ten transfer coefficients for X axis and ten coefficients for the Y-axis. {Copyright (C) 2024 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/. } {This unit is based on some C language routines from the package Match. See describtion below. Conversion and modification for the ASTAP program by Han Kleijn. The original Match version was suitable an eight coefficients 3th order solution but was extended to a ten cofficients 3th order solution by Cecile Melis for the Siril program. The licence of this code has been changed to MPL2 with permission from Michael Richmond by email dated 2024-2-15: "Yes, I grant you permission to change the license for the code you have adopted to the Mozilla Public License, v2.0." } // ============================================================================== // Original description for the Match program. // http://spiff.rit.edu/match/ {* match: a package to match lists of stars (or other items) * Copyright (C) 2000 Michael William Richmond * * Contact: Michael William Richmond * Physics Department * Rochester Institute of Technology * 85 Lomb Memorial Drive * Rochester, NY 14623-5603 * E-mail: mwrsps@rit.edu * * * */ } interface uses Classes, SysUtils,math, astap_main; type TMatrix = array of array of Double; TVector = array of Double; s_star = record x, y: Double; end; TStarArray = array of s_star; TTrans = record x00,x10,x01,x20,x11,x02,x30,x21,x12,x03 : double; //was orginally a, b, c, d, e, f, g, h y00,y10,y01,y20,y11,y02,y30,y21,y12,y03 : double; // i, j, k, l, m, n, o, p end; function Calc_Trans_Cubic(stars_reference: TStarArray; // First array of s_star structure we match the output TRANS takes their coords into those of array B stars_distorted: TStarArray; // Second array of s_star structure we match out trans: TTrans; // Transfer coefficients for starsA positions to starsB positions out err_mess : string // any error message ): boolean; //succes implementation type Tsolutionvector = array[0..9] of Double; const MATRIX_TOL=1E-100; {/*************************************************************************** * PROCEDURE: gauss_pivot * * DESCRIPTION: * This routine is called by "gauss_matrix". Given a square "matrix" * of "num"-by-"num" elements, and given a "vector" of "num" elements, * and given a particular "row" value, this routine finds the largest * value in the matrix at/below the given "row" position. If that * largest value isn't in the given "row", this routine switches * rows in the matrix (and in the vector) so that the largest value * will now be in "row". * * RETURN: * SH_SUCCESS if all goes well * SH_GENERIC_ERROR if not -- if matrix is singular * * */} procedure Gauss_Pivot(var matrix: TMatrix; // I/O: a square 2-D matrix we are inverting num: Integer; // I: number of rows and cols in matrix var vector: TSolutionVector; // I/O: vector which holds "b" values in input var biggest_val: TVector; // I: largest value in each row of matrix row: Integer // I: want to pivot around this row ); var i, col, pivot_row : Integer; big, other_big,temp: Double; begin pivot_row := row; big := Abs(matrix[row][row] / biggest_val[row]); // Finding the row with the largest value for pivoting for i := row + 1 to num - 1 do begin other_big := Abs(matrix[i][row] / biggest_val[i]); if other_big > big then begin big := other_big; pivot_row := i; end; end; // If another row is better for pivoting, switch it with 'row' // and switch the corresponding elements in 'vector' // and switch the corresponding elements in 'biggest_val' // If another row is better for pivoting, switch it with 'row' if pivot_row <> row then begin for col := row to num - 1 do begin // Manual swapping of matrix elements temp := matrix[pivot_row][col]; matrix[pivot_row][col] := matrix[row][col]; matrix[row][col] := temp; end; // Manual swapping of vector elements temp := vector[pivot_row]; vector[pivot_row] := vector[row]; vector[row] := temp; // Manual swapping of biggest_val elements temp := biggest_val[pivot_row]; biggest_val[pivot_row] := biggest_val[row]; biggest_val[row] := temp; end; end; {*************************************************************************** * PROCEDURE: gauss_matrix * * DESCRIPTION: * Given a square 2-D 'num'-by-'num' matrix, called "matrix", and given * a 1-D vector "vector" of 'num' elements, find the 1-D vector * called "solution_vector" which satisfies the equation * * matrix * solution_vector = vector * * where the * above represents matrix multiplication. * * What we do is to use Gaussian elimination (with partial pivoting) * and back-substitution to find the solution_vector. * We do not pivot in place, but physically move values -- it * doesn't take much time in this application. After we have found the * "solution_vector", we replace the contents of "vector" with the * "solution_vector". * * This is a common algorithm. See any book on linear algebra or * numerical solutions; for example, "Numerical Methods for Engineers," * by Steven C. Chapra and Raymond P. Canale, McGraw-Hill, 1998, * Chapter 9. * * If an error occurs (if the matrix is singular), this prints an error * message and returns with error code. * * RETURN: * SH_SUCCESS if all goes well * SH_GENERIC_ERROR if not -- if matrix is singular * * */} function Gauss_Matrix(var matrix: TMatrix; // I/O: the square 2-D matrix we'll invert will hold inverse matrix on output num: Integer; // I: number of rows and cols in matrix var vector: Tsolutionvector; // I/O: vector which holds "b" values in input and the solution vector "x" on output out err_mess : string // O: Any error message ): boolean; var i, j, k : integer; biggest_val: TVector; solution_vector: TVector; factor, sum : Double; begin err_mess:=''; //clear message; SetLength(biggest_val, num); SetLength(solution_vector, num); // Step 1: Find the largest value in each row of matrix, // and store those values in 'biggest_val' array. // We use this information to pivot the matrix. for i := 0 to num - 1 do begin biggest_val[i] := Abs(matrix[i][0]); for j := 1 to num - 1 do begin if Abs(matrix[i][j]) > biggest_val[i] then biggest_val[i] := Abs(matrix[i][j]); end; if biggest_val[i] = 0.0 then begin // Handle the error: "gauss_matrix: biggest val in row is zero" // Error handling code should go here. In Pascal, you might raise an exception // or handle the error in a way that's appropriate for your application. err_mess:='Gauss_matrix: biggest val in row is zero'; exit(false); end; end; // Step 2: Use Gaussian elimination to convert the "matrix" // into a triangular matrix, in which the values of all // elements below the diagonal are zero. for i := 0 to num - 2 do begin // Pivot this row (if necessary) Gauss_Pivot(matrix, num, vector, biggest_val, i); // Remark: Gauss_Pivot give never an error in the code. // if Gauss_Pivot(matrix, num, vector, biggest_val, i) =false then // begin // err_mess:='Gauss_matrix error: singular matrix.'; // Exit(false); // end; if Abs(matrix[i][i] / biggest_val[i]) < MATRIX_TOL then begin err_mess:='Gauss_matrix error: row has a too tiny value'; Exit(false); end; // Eliminate this variable in all rows below the current one for j := i + 1 to num - 1 do begin factor := matrix[j][i] / matrix[i][i]; for k := i + 1 to num - 1 do begin matrix[j][k] := matrix[j][k] - factor * matrix[i][k]; end; // And in the vector, too vector[j] := vector[j] - factor * vector[i]; end; end; // Make sure that the last row's single remaining element isn't too tiny if Abs(matrix[num - 1][num - 1] / biggest_val[num - 1]) < MATRIX_TOL then begin err_mess:='Gauss_matrix error: last row has a too tiny value'; Exit(false); end; // Step 3: We can now calculate the solution_vector values // via back-substitution; we start at the last value in the // vector (at the "bottom" of the vector) and work // upwards towards the top. solution_vector[num - 1] := vector[num - 1] / matrix[num - 1][num - 1]; for i := num - 2 downto 0 do begin sum := 0.0; for j := i + 1 to num - 1 do begin sum := sum + matrix[i][j] * solution_vector[j]; end; solution_vector[i] := (vector[i] - sum) / matrix[i][i]; end; // step 4: okay, we've found the values in the solution vector! // We now replace the input values in 'vector' with these // solution_vector values, and we're done. for i := 0 to num-1 do begin vector[i] := solution_vector[i]; end; Result:=true; end; // /************************************************************************ // * // * // * ROUTINE: calc_trans_cubic // * // * DESCRIPTION: // * Given a set of "nbright" matched pairs of stars, which we can // * extract from the "winner_index" and "star_array" arrays, // * figure out a TRANS structure which takes coordinates of // * objects in set A and transforms then into coords for set B. // * In this case, a TRANS contains the sixteen coefficients in the equations // * // * x' = A + Bx + Cy + Dxx + Exy + Fyy + Gx(xx+yy) + Hy(xx+yy) // * y' = I + Jx + Ky + Lxx + Mxy + Nyy + Ox(xx+yy) + Py(xx+yy) // * // * where (x,y) are coords in set A and (x',y') are corresponding // * coords in set B. // * // * // * What we do is to treat each of the two equations above // * separately. We can write down 8 equations relating quantities // * in the two sets of points (there are more than 8 such equations, // * but we don't seek an exhaustive list). For example, // * // * x' = A + Bx + Cy + Dxx + Exy + Fyy + GxR + HyR // * x'x = Ax + Bxx + Cxy + Dxxx + Exxy + Fxyy + GxxR + HxyR // * x'y = Ay + Bxy + Cyy + Dxxy + Exyy + Fyyy + GxyR + HyyR // * x'xx = Axx + Bxxx + Cxxy + Dxxxx + Exxxy + Fxxyy + GxxxR + HxxyR // * x'xy = Axy + Bxxy + Cxyy + Dxxxy + Exxyy + Fxyyy + GxxyR + HxyyR // * x'yy = Ayy + Bxyy + Cyyy + Dxxyy + Exyyy + Fyyyy + GxyyR + HyyyR // * x'xR = AxR + BxxR + CxyR + DxxxR + ExxyR + FxyyR + GxxRR + HxyRR // * x'yR = AyR + BxyR + CyyR + DxxyR + ExyyR + FyyyR + GxyRR + HyyRR // * // * (where we have used 'R' as an abbreviation for (xx + yy)) // * // * Now, since we have "nbright" matched pairs, we can take each of // * the above 8 equations and form the sums on both sides, over // * all "nbright" points. So, if S(x) represents the sum of the quantity // * "x" over all nbright points, and if we let N=nbright, then // * // * S(x') = AN + BS(x) + CS(y) + DS(xx) + ES(xy) + FS(yy) // * + GS(xR) + HS(yR) // * S(x'x) = AS(x) + BS(xx) + CS(xy) + DS(xxx) + ES(xxy) + FS(xyy) // * + GS(xxR) + HS(xyR) // * S(x'y) = AS(y) + BS(xy) + CS(yy) + DS(xxy) + ES(xyy) + FS(yyy) // * + GS(xyR) + HS(yyR) // * S(x'xx) = AS(xx) + BS(xxx) + CS(xxy) + DS(xxxx) + ES(xxxy) + FS(xxyy) // * + GS(xxxR) + HS(xxyR) // * S(x'xy) = AS(xy) + BS(xxy) + CS(xyy) + DS(xxxy) + ES(xxyy) + FS(xyyy) // * + GS(xxyR) + HS(xyyR) // * S(x'yy) = AS(yy) + BS(xyy) + CS(yyy) + DS(xxyy) + ES(xyyy) + FS(yyyy) // * + GS(xyyR) + HS(yyyR) // * S(x'xR) = AS(xR) + BS(xxR) + CS(xyR) + DS(xxxR) + ES(xxyR) + FS(xyyR) // * + GS(xxRR) + HS(xyRR) // * S(x'yR) = AS(yR) + BS(xyR) + CS(yyR) + DS(xxyR) + ES(xyyR) + FS(yyyR) // * + GS(xyRR) + HS(yyRR) // * // * At this point, we have a set of 8 equations, and 8 unknowns: // * A, B, C, D, E, F, G, H // * // * We can write this set of equations as a matrix equation // * // * b = M * v // * // * where we KNOW the quantities // * // * b = ( S(x'), S(x'x), S(x'y), S(x'xx), S(x'xy), S(x'yy), S(x'xR), S(x'rR) ) // * // * matr M = [ N S(x) S(y) S(xx) S(xy) S(yy) S(xR) S(yR) ] // * [ S(x) S(xx) S(xy) S(xxx) S(xxy) S(xyy) S(xxR) S(xyR) ] // * [ S(y) S(xy) S(yy) S(xxy) S(xyy) S(yyy) S(xyR) S(yyR) ] // * [ S(xx) S(xxx) S(xxy) S(xxxx) S(xxxy) S(xxyy) S(xxxR) S(xxyR) ] // * [ S(xy) S(xxy) S(xyy) S(xxxy) S(xxyy) S(xyyy) S(xxyR) S(xyyR) ] // * [ S(yy) S(xyy) S(yyy) S(xxyy) S(xyyy) S(yyyy) S(xyyR) S(yyyR) ] // * [ S(xR) S(xxR) S(xyR) S(xxxR) S(xxyR) S(xyyR) S(xxRR) S(xyRR) ] // * [ S(yR) S(xyR) S(yyR) S(xxyR) S(xyyR) S(yyyR) S(xyRR) S(yyRR) ] // * // * and we want to FIND the unknown // * // * vector v = ( A, B, C, D, E, F, G, H ) // * // * So, how to solve this matrix equation? We use a Gaussian-elimination // * method (see notes in 'gauss_matrix' function). We solve // * for A, B, C, D, E, F, G, H (and equivalently for I, J, K, L, M, N, O, P), // * then fill in the fields // * of the given TRANS structure argument. // * // * It's possible that the matrix will be singular, and we can't find // * a solution. In that case, we print an error message and don't touch // * the TRANS' fields. // * // * [should explain how we make an iterative solution here, // * but will put in comments later. MWR ] // * // * RETURN: // * SH_SUCCESS if all goes well // * SH_GENERIC_ERROR if we can't find a solution // * // * // */ function Calc_Trans_Cubic(stars_reference: TStarArray; // First array of s_star structure we match the output TRANS takes their coords into those of array B stars_distorted: TStarArray; // Second array of s_star structure we match out trans: TTrans; // Transfer coefficients for starsA positions to starsB positions out err_mess : string // any error message ): boolean; //succes var matrix : Tmatrix; vector : Tsolutionvector;//array[0..9] of Double; s1, s2 : s_star; sumx2, sumx2x1, sumx2y1, sumx2x1sq, sumx2x1y1, sumx2y1sq, sumx2x1cu, sumx2x1sqy1, sumx2x1y1sq, sumx2y1cu, sumy2, sumy2x1, sumy2y1, sumy2x1sq, sumy2x1y1, sumy2y1sq, sumy2x1cu, sumy2x1sqy1, sumy2x1y1sq, sumy2y1cu, sum, sumx1, sumy1, sumx1sq, sumx1y1, sumy1sq, sumx1cu, sumx1sqy1, sumx1y1sq, sumy1cu, sumx1qu, sumx1cuy1, sumx1sqy1sq, sumx1y1cu, sumy1qu, sumx1pe, sumx1quy1, sumx1cuy1sq, sumx1sqy1cu, sumx1y1qu, sumy1pe, sumx1he, sumx1pey1, sumx1quy1sq, sumx1cuy1cu, sumx1sqy1qu, sumx1y1pe, sumy1he : Double; r,c,i : integer; begin // in variable names below, a '1' refers to coordinate of star s1 (which appear on both sides of the matrix equation) // and a '2' refers to coordinate of star s2 (which appears only on left hand side of matrix equation) err_mess:=''; //clear message; if length(stars_reference) <10 {AT_MATCH_REQUIRE_CUBIC} then begin err_mess:='Calc_Trans_Cubic: Not enough equations.'; exit(false); end; // if_assert(trans.order = AT_TRANS_CUBIC)=false then begin result:=0; exit; end; // allocate a matrix we'll need for this function SetLength(matrix, 10, 10); // Assuming a 10x10 matrix // First, we consider the coefficients x00,x10,x01,x20,x11,x02,x30,x21,x12,x03 in the trans. // We form the sums that make up the elements of matrix M sum := 0.0; sumx1 := 0.0; sumy1 := 0.0; sumx1sq := 0.0; sumx1y1 := 0.0; sumy1sq := 0.0; sumx1cu := 0.0; sumx1sqy1 := 0.0; sumx1y1sq := 0.0; sumy1cu := 0.0; sumx1qu := 0.0; sumx1cuy1 := 0.0; sumx1sqy1sq := 0.0; sumx1y1cu := 0.0; sumy1qu := 0.0; sumx1pe := 0.0; sumx1quy1 := 0.0; sumx1cuy1sq := 0.0; sumx1sqy1cu := 0.0; sumx1y1qu := 0.0; sumy1pe := 0.0; sumx1he := 0.0; sumx1pey1 := 0.0; sumx1quy1sq := 0.0; sumx1cuy1cu := 0.0; sumx1sqy1qu := 0.0; sumx1y1pe := 0.0; sumy1he := 0.0; sumx2 := 0.0; sumx2x1 := 0.0; sumx2y1 := 0.0; sumx2x1sq := 0.0; sumx2x1y1 := 0.0; sumx2y1sq := 0.0; sumx2x1cu := 0.0; sumx2x1sqy1 := 0.0; sumx2x1y1sq := 0.0; sumx2y1cu := 0.0; sumy2 := 0.0; sumy2x1 := 0.0; sumy2y1 := 0.0; sumy2x1sq := 0.0; sumy2x1y1 := 0.0; sumy2y1sq := 0.0; sumy2x1cu := 0.0; sumy2x1sqy1 := 0.0; sumy2x1y1sq := 0.0; sumy2y1cu := 0.0; for i := 0 to min(length(stars_reference)-1,length(stars_distorted)-1) do //take the minimum of the two array for the case one list is longer. Should not happen normally. begin sumx2 := sumx2 + stars_distorted[i].x; sumx2x1 := sumx2x1 + (stars_distorted[i].x * stars_reference[i].x); sumx2y1 := sumx2y1 + (stars_distorted[i].x * stars_reference[i].y); sumx2x1sq := sumx2x1sq + (stars_distorted[i].x * stars_reference[i].x * stars_reference[i].x); sumx2x1y1 := sumx2x1y1 + (stars_distorted[i].x * stars_reference[i].x * stars_reference[i].y); sumx2y1sq := sumx2y1sq + (stars_distorted[i].x * stars_reference[i].y * stars_reference[i].y); sumx2x1cu := sumx2x1cu + (stars_distorted[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x); sumx2x1sqy1 := sumx2x1sqy1 + (stars_distorted[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].y); sumx2x1y1sq := sumx2x1y1sq + (stars_distorted[i].x * stars_reference[i].x * stars_reference[i].y * stars_reference[i].y); sumx2y1cu := sumx2y1cu + (stars_distorted[i].x * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); sumy2 := sumy2 + stars_distorted[i].y; sumy2x1 := sumy2x1 + (stars_distorted[i].y * stars_reference[i].x); sumy2y1 := sumy2y1 + (stars_distorted[i].y * stars_reference[i].y); sumy2x1sq := sumy2x1sq + (stars_distorted[i].y * stars_reference[i].x * stars_reference[i].x); sumy2x1y1 := sumy2x1y1 + (stars_distorted[i].y * stars_reference[i].x * stars_reference[i].y); sumy2y1sq := sumy2y1sq + (stars_distorted[i].y * stars_reference[i].y * stars_reference[i].y); sumy2x1cu := sumy2x1cu + (stars_distorted[i].y * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x); sumy2x1sqy1 := sumy2x1sqy1 + (stars_distorted[i].y * stars_reference[i].x * stars_reference[i].x * stars_reference[i].y); sumy2x1y1sq := sumy2x1y1sq + (stars_distorted[i].y * stars_reference[i].x * stars_reference[i].y * stars_reference[i].y); sumy2y1cu := sumy2y1cu + (stars_distorted[i].y * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); { elements of the matrix } sum := sum + 1.0; sumx1 := sumx1 + stars_reference[i].x; sumy1 := sumy1 + stars_reference[i].y; sumx1sq := sumx1sq + (stars_reference[i].x * stars_reference[i].x); sumx1y1 := sumx1y1 + (stars_reference[i].x * stars_reference[i].y); sumy1sq := sumy1sq + (stars_reference[i].y * stars_reference[i].y); sumx1cu := sumx1cu + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].x); sumx1sqy1 := sumx1sqy1 + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].y); sumx1y1sq := sumx1y1sq + (stars_reference[i].x * stars_reference[i].y * stars_reference[i].y); sumy1cu := sumy1cu + (stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); sumx1qu := sumx1qu + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x); sumx1cuy1 := sumx1cuy1 + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].y); sumx1sqy1sq := sumx1sqy1sq + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].y * stars_reference[i].y); sumx1y1cu := sumx1y1cu + (stars_reference[i].x * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); sumy1qu := sumy1qu + (stars_reference[i].y * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); sumx1pe := sumx1pe + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x); sumx1quy1 := sumx1quy1 + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].y); sumx1cuy1sq := sumx1cuy1sq + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].y * stars_reference[i].y); sumx1sqy1cu := sumx1sqy1cu + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); sumx1y1qu := sumx1y1qu + (stars_reference[i].x * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); sumy1pe := sumy1pe + (stars_reference[i].y * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); sumx1he := sumx1he + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x); sumx1pey1 := sumx1pey1 + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].y); sumx1quy1sq := sumx1quy1sq + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].y * stars_reference[i].y); sumx1cuy1cu := sumx1cuy1cu + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].x * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); sumx1sqy1qu := sumx1sqy1qu + (stars_reference[i].x * stars_reference[i].x * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); sumx1y1pe := sumx1y1pe + (stars_reference[i].x * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); sumy1he := sumy1he + (stars_reference[i].y * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y * stars_reference[i].y); end; // Now turn these sums into a matrix and a vector // For the matrix, we fill the lower triangle and then transpose for the upper one rows 0-9 - column 0 matrix[0][0] := sum; matrix[1][0] := sumx1; matrix[2][0] := sumy1; matrix[3][0] := sumx1sq; matrix[4][0] := sumx1y1; matrix[5][0] := sumy1sq; matrix[6][0] := sumx1cu; matrix[7][0] := sumx1sqy1; matrix[8][0] := sumx1y1sq; matrix[9][0] := sumy1cu; //rows 1-9 - column 1 matrix[1][1] := sumx1sq; matrix[2][1] := sumx1y1; matrix[3][1] := sumx1cu; matrix[4][1] := sumx1sqy1; matrix[5][1] := sumx1y1sq; matrix[6][1] := sumx1qu; matrix[7][1] := sumx1cuy1; matrix[8][1] := sumx1sqy1sq; matrix[9][1] := sumx1y1cu; //rows 2-9 - column 2 matrix[2][2] := sumy1sq; matrix[3][2] := sumx1sqy1; matrix[4][2] := sumx1y1sq; matrix[5][2] := sumy1cu; matrix[6][2] := sumx1cuy1; matrix[7][2] := sumx1sqy1sq; matrix[8][2] := sumx1y1cu; matrix[9][2] := sumy1qu; //rows 3-9 - column 3 matrix[3][3] := sumx1qu; matrix[4][3] := sumx1cuy1; matrix[5][3] := sumx1sqy1sq; matrix[6][3] := sumx1pe; matrix[7][3] := sumx1quy1; matrix[8][3] := sumx1cuy1sq; matrix[9][3] := sumx1sqy1cu; //rows 4-9 - column 4 matrix[4][4] := sumx1sqy1sq; matrix[5][4] := sumx1y1cu; matrix[6][4] := sumx1quy1; matrix[7][4] := sumx1cuy1sq; matrix[8][4] := sumx1sqy1cu; matrix[9][4] := sumx1y1qu; //rows 5-9 - column 5 matrix[5][5] := sumy1qu; matrix[6][5] := sumx1cuy1sq; matrix[7][5] := sumx1sqy1cu; matrix[8][5] := sumx1y1qu; matrix[9][5] := sumy1pe; //rows 6-9 - column 6 matrix[6][6] := sumx1he; matrix[7][6] := sumx1pey1; matrix[8][6] := sumx1quy1sq; matrix[9][6] := sumx1cuy1cu; //rows 7-9 - column 7 matrix[7][7] := sumx1quy1sq; matrix[8][7] := sumx1cuy1cu; matrix[9][7] := sumx1sqy1qu; //rows 8-9 - column 8 matrix[8][8] := sumx1sqy1qu; matrix[9][8] := sumx1y1pe; //rows 9 - column 9 matrix[9][9] := sumy1he; // and we transpose for r := 0 to 8 do begin for c := r + 1 to 9 do begin matrix[r][c] := matrix[c][r]; end; end; vector[0] := sumx2; vector[1] := sumx2x1; vector[2] := sumx2y1; vector[3] := sumx2x1sq; vector[4] := sumx2x1y1; vector[5] := sumx2y1sq; vector[6] := sumx2x1cu; vector[7] := sumx2x1sqy1; vector[8] := sumx2x1y1sq; vector[9] := sumx2y1cu; //Writeln('before calling solution routines for ABCDEFGHIJ, here's matrix'); // and now call the Gaussian-elimination routines to solve the matrix. // The solution for TRANS coefficients A, B, C, D, E, F, I, J will be placed // into the elements on 'vector" after "gauss_matrix' finishes. if gauss_matrix(matrix, 10, vector,err_mess)=false then begin err_mess:=err_mess+', Calc_trans_cubic: can not solve for coeffs A,B,C,D,E,F,G,H,I,J'; exit(false); end; //Writeln('after calling solution routines, here's matrix'); trans.x00 := vector[0]; trans.x10 := vector[1]; trans.x01 := vector[2]; trans.x20 := vector[3]; trans.x11 := vector[4]; trans.x02 := vector[5]; trans.x30 := vector[6]; trans.x21 := vector[7]; trans.x12 := vector[8]; trans.x03 := vector[9]; // Okay, now we solve for TRANS coefficients y00,y10,y01,y20,y11,y02,y30,y21,y12,y03 // using the * set of equations that relates y' to (x,y) //rows 0-9 - column 0 matrix[0][0] := sum; matrix[1][0] := sumx1; matrix[2][0] := sumy1; matrix[3][0] := sumx1sq; matrix[4][0] := sumx1y1; matrix[5][0] := sumy1sq; matrix[6][0] := sumx1cu; matrix[7][0] := sumx1sqy1; matrix[8][0] := sumx1y1sq; matrix[9][0] := sumy1cu; //rows 1-9 - column 1 matrix[1][1] := sumx1sq; matrix[2][1] := sumx1y1; matrix[3][1] := sumx1cu; matrix[4][1] := sumx1sqy1; matrix[5][1] := sumx1y1sq; matrix[6][1] := sumx1qu; matrix[7][1] := sumx1cuy1; matrix[8][1] := sumx1sqy1sq; matrix[9][1] := sumx1y1cu; //rows 2-9 - column 2 matrix[2][2] := sumy1sq; matrix[3][2] := sumx1sqy1; matrix[4][2] := sumx1y1sq; matrix[5][2] := sumy1cu; matrix[6][2] := sumx1cuy1; matrix[7][2] := sumx1sqy1sq; matrix[8][2] := sumx1y1cu; matrix[9][2] := sumy1qu; //rows 3-9 - column 3 matrix[3][3] := sumx1qu; matrix[4][3] := sumx1cuy1; matrix[5][3] := sumx1sqy1sq; matrix[6][3] := sumx1pe; matrix[7][3] := sumx1quy1; matrix[8][3] := sumx1cuy1sq; matrix[9][3] := sumx1sqy1cu; //rows 4-9 - column 4 matrix[4][4] := sumx1sqy1sq; matrix[5][4] := sumx1y1cu; matrix[6][4] := sumx1quy1; matrix[7][4] := sumx1cuy1sq; matrix[8][4] := sumx1sqy1cu; matrix[9][4] := sumx1y1qu; //rows 5-9 - column 5 matrix[5][5] := sumy1qu; matrix[6][5] := sumx1cuy1sq; matrix[7][5] := sumx1sqy1cu; matrix[8][5] := sumx1y1qu; matrix[9][5] := sumy1pe; //rows 6-9 - column 6 matrix[6][6] := sumx1he; matrix[7][6] := sumx1pey1; matrix[8][6] := sumx1quy1sq; matrix[9][6] := sumx1cuy1cu; //rows 7-9 - column 7 matrix[7][7] := sumx1quy1sq; matrix[8][7] := sumx1cuy1cu; matrix[9][7] := sumx1sqy1qu; //rows 8-9 - column 8 matrix[8][8] := sumx1sqy1qu; matrix[9][8] := sumx1y1pe; //rows 9 - column 9 matrix[9][9] := sumy1he; // and we transpose for r := 0 to 8 do begin for c := r + 1 to 9 do begin matrix[r][c] := matrix[c][r]; end; end; vector[0] := sumy2; vector[1] := sumy2x1; vector[2] := sumy2y1; vector[3] := sumy2x1sq; vector[4] := sumy2x1y1; vector[5] := sumy2y1sq; vector[6] := sumy2x1cu; vector[7] := sumy2x1sqy1; vector[8] := sumy2x1y1sq; vector[9] := sumy2y1cu; // And now call the Gaussian-elimination routines to solve the matrix. if gauss_matrix(matrix, 10, vector,err_mess)=false then begin err_mess:=err_mess+', Calc_trans_cubic: Can not solve for coeffs y00,y10,y01,y20,y11,y02,y30,y21,y12,y03'; exit(false); end; //Writeln('after calling solution routines, here's matrix'); // const A,K 00 // x; B,L 10 // y; C,M 01 // x*x; D,N 20 // x*y; E,O 11 // y*y; F,P 02 // x*x*x; G,Q 30 // x*x*y; H,R 21 // x*y*y; I,S 12 // y*y*y; J,T 03 trans.y00 := vector[0]; trans.y10 := vector[1]; trans.y01 := vector[2]; trans.y20 := vector[3]; trans.y11 := vector[4]; trans.y02 := vector[5]; trans.y30 := vector[6]; trans.y21 := vector[7]; trans.y12 := vector[8]; trans.y03 := vector[9]; //free_matrix(matrix, 10);//Not required in FPC Result :=true; end; // TEST PROGRAM FOR DEVELOPMENT ONLY ================================================================================== { 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; var b : TVector; i,j,k, count : Integer; x,y,x2,y2,testx,testy, maxerrorX,maxerrorY,correction,errorposX,errorposY: Double; distorted,reference,ideal: TStarArray; trans: TTrans; sss : string; f: textfile; begin count:=0; setlength(distorted,50); setlength(reference,50); // setlength(ideal,10000); for j:=1 to +10 do begin for i:=1 to +10 do begin //x:=j*150;//image 3000x3000 //y:=i*150; reference[count].x:=i;//reference X reference[count].y:=j;//reference X distorted[count].x:=i+1000+i*i*0.00001+i*j*0.00002+j*j*0.00003+i*i*i*0.00004+i*i*j*0.00005+i*j*j*0.00006+j*j*j*0.00007; distorted[count].y:=j+1000+i*i*0.00008+i*j*0.00009+j*j*0.00010+i*i*i*0.00011+i*i*j*0.00012+i*j*j*0.00013+j*j*j*0.00014; inc(count); if count>=length(distorted) then break; end; if count>=length(distorted) then break; end; setlength(distorted,count); setlength(reference,count); //TESTING ============ if Calc_Trans_Cubic(reference, // First array of s_star structure we match the output TRANS takes their coords into those of array B distorted, // Second array of s_star structure we match trans, // Place solved coefficients into this existing structure's fields sss )=false then beep //failure else //succes beep; // const A,K // x; B,L // y; C,M // x*x; D,N // x*y; E,O // y*y; F,P // x*x*x; G,Q // x*x*y; H,R // x*y*y; I,S // y*y*y; J,T // log_to_file( 'c:\temp\test.txt',floattostr(reference[i].x)+#9+floattostr(reference[i].y)+#9+floattostr(testX)+#9+floattostr(testY)); beep; } end. astap_2024.05.01.orig/unit_aberration.pas0000644000175100017510000001440114614535560017371 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_2024.05.01.orig/unit_monitoring.pas0000644000175100017510000002523514614535560017437 0ustar debiandebianunit unit_monitoring; {Copyright (C) 2017, 2024 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} var 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; 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) and (image_file_name(name){readable image name?} )) then begin 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) or (head.cd1_1=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)); mainwindow.image1.Canvas.Pen.mode:=pmXor; 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; count : integer=0; solver : boolean; begin with stackmenu1 do begin esc_pressed:=false; 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,head);{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; 5: form_inspection1.background_contour1Click(nil); 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 begin wait(1000);{wait 1 second unless something happens} if count=0 then live_monitoring1.caption:=' ▶' else if count=1 then live_monitoring1.caption:='▶ ' else if count=2 then live_monitoring1.caption:=' ▶ '; inc(count); if count>2 then count:=0; end; end;{live average} until esc_pressed; live_monitoring:=false; live_monitoring1.font.style:=[]; memo2_message('Monitoring stopped.'); counterL:=counter; end;{with stackmenu1} end; end. astap_2024.05.01.orig/unit_aavso.pas0000644000175100017510000004755714614535560016376 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, Buttons; type { Tform_aavso1 } Tform_aavso1 = class(TForm) baa_style1: TCheckBox; hjd1: TCheckBox; delta_bv1: TEdit; Image_photometry1: TImage; Label10: TLabel; Label11: TLabel; Label9: TLabel; name_variable1: TComboBox; name_variable2: TEdit; magnitude_slope1: TEdit; 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; Label6: TLabel; Label8: TLabel; Label3: TLabel; obscode1: TEdit; Label1: TLabel; Filter1: TComboBox; procedure delta_bv2Change(Sender: TObject); procedure FormResize(Sender: TObject); procedure hjd1Change(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 name_variable1DropDown(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; var 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=false; hjd_date : boolean=false; aavso_filter_index: integer=0; delta_bv : double=0; magnitude_slope : double=0; 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,column_var,column_check :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; hjd_date:=hjd1.checked; aavso_filter_index:=filter1.itemindex; delta_bv:=strtofloat2(form_aavso1.delta_bv1.text); magnitude_slope:=strtofloat2(form_aavso1.magnitude_slope1.text); end; end; procedure Tform_aavso1.report_to_clipboard1Click(Sender: TObject); var c,date_column : integer; err,err_message,snr_str,airmass_str, delim,fn,fnG,detype,baa_extra,magn_type,filter_used,settings,date_format: string; stdev_valid : boolean; snr_value,err_by_snr : double; PNG: TPortableNetworkGraphic;{FPC} function transform_magn(mag: string):string; var m : double; begin m:=strtofloat2(mag); str(m+delta_bv*magnitude_slope:5:3,result); end; begin get_info; stdev_valid:=(photometry_stdev>0.0001); if stdev_valid then err_message:='MERR:=max(StDev:2/SNR).' else err_message:='MERR:=2/SNR.'; delta_bv:=strtofloat2(form_aavso1.delta_bv1.text); magnitude_slope:=strtofloat2(form_aavso1.magnitude_slope1.text); 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; if hjd1.Checked then begin date_format:='HJD'; date_column:=P_jd_helio; end else begin date_format:='JD'; date_column:=P_jd_mid; end; if stackmenu1.reference_database1.ItemIndex=0 then settings:=stackmenu1.reference_database1.text+' '+uppercase(name_database) else settings:=stackmenu1.reference_database1.text; settings:=settings+', aperture='+stackmenu1.flux_aperture1.text+' HFD, annulus='+stackmenu1.annulus_radius1.text+' HFD'; aavso_report:= '#TYPE='+detype+#13+#10+ '#OBSCODE='+obscode+#13+#10+ '#SOFTWARE=ASTAP, v'+astap_version+' ('+settings+ ')'+#13+#10+ '#DELIM='+delimiter1.text+#13+#10+ '#DATE='+date_format+#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[column_var+1 {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 Check 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 reference_database1.itemindex=0 then //local database if pos('v',name_database)>0 then magn_type:=', transformed to Johnson-V. ' else magn_type:=' using BM magnitude. ' else //online database magn_type:=', transformed '+stackmenu1.reference_database1.text; if snr_str<>'' then begin if filter1.itemindex=0 then filter_used:=listview7.Items.item[c].subitems.Strings[P_filter] //take from header else filter_used:=copy(filter1.text,1,2);//manual input aavso_report:= aavso_report+ stringreplace(name_var,'_',' ',[rfReplaceAll])+delim+ StringReplace(listview7.Items.item[c].subitems.Strings[date_column],',','.',[])+delim+ transform_magn(listview7.Items.item[c].subitems.Strings[column_var{P_magn1}])+delim+ err+ delim+filter_used+delim+ 'NO'+delim+ 'STD'+delim+ 'ENSEMBLE'+delim+ 'na'+delim+ abbreviation_check+delim+ stringreplace(listview7.Items.item[c].subitems.Strings[column_check{P_magn2}],',','.',[])+delim+ airmass_str+delim+ 'na'+delim+ {group} abbreviation_var_IAU+delim+ 'Ensemble of Gaia DR3 stars'+magn_type+' '+err_message+#13+#10; end; 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); var i,start: integer; abrv : string; begin name_check1.items.clear; name_check1.items.add(mainwindow.Shape_alignment_marker2.HINT); name_check1.items.add(abbreviation_check);//the last name name_check1.items.add(name_check_IAU);// created from position for i:=p_nr_norm+1+1 to p_nr do if odd(i+1) then //not snr column begin abrv:=stackmenu1.listview7.Column[i].Caption; if pos('000',abrv)>0 then //check star name_check1.items.add(abrv); end; end; procedure Tform_aavso1.name_variable1Change(Sender: TObject); begin plot_graph; end; procedure Tform_aavso1.name_variable1DropDown(Sender: TObject); var i: integer; abrv : string; begin name_variable1.items.clear; name_variable1.items.add(mainwindow.Shape_alignment_marker1.HINT); name_variable1.items.add(object_name);//from header name_variable1.items.add(name_var); for i:=p_nr_norm+1 to p_nr do if odd(i+1) then // not a snr column begin abrv:=stackmenu1.listview7.Column[i].Caption; if pos('000',abrv)=0 then //not a check star name_variable1.items.add(abrv); end; end; function find_correct_var_column : integer; var i: integer; begin for i:=p_nr_norm+1 to p_nr do begin if ((odd(i+1)) and (form_aavso1.name_variable1.text=stackmenu1.listview7.Column[i].Caption)) then begin result:=i-1; exit; end; end; result:=P_magn1; end; function find_correct_check_column : integer; var i: integer; begin for i:=p_nr_norm+1 to p_nr do if ((odd(i+1)) and (form_aavso1.name_check1.text=stackmenu1.listview7.Column[i].Caption)) then begin result:=i-1; exit; end; result:=P_magn2; end; procedure Tform_aavso1.FormResize(Sender: TObject); begin plot_graph; end; procedure Tform_aavso1.hjd1Change(Sender: TObject); begin plot_graph; end; procedure Tform_aavso1.delta_bv2Change(Sender: TObject); begin plot_graph; end; procedure plot_graph; {plot curve} var x1,y1,c,textp1,textp2,textp3,nrmarkX, nrmarkY,wtext,date_column : integer; scale,range : double; text1,text2,date_format : 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; if form_aavso1.hjd1.Checked then begin date_format:='HJD'; date_column:=P_jd_helio; end else begin date_format:='JD (mid)'; date_column:=P_jd_mid; end; 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'); column_var:= find_correct_var_column; column_check:=find_correct_check_column; 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[date_column]); 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[column_var]);{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[column_check]);{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]); {3th star} 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; if magn_min>magn_max then exit; //no info magn_min:=trunc(magn_min*100)/100; {add some rounding} magn_max:=trunc(magn_max*100)/100; if magn_max-magn_min<0.3 then begin magn_max:=0.15+(magn_max+magn_min)/2; magn_min:=-0.15+(magn_max+magn_min)/2;;end;//minimum range 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),date_format{JD (mid) or HJD}); 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 if data[0,c]<>0 then //valid JD 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} 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 if data[0,c]<>0 then //valid JD 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} 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 if data[0,c]<>0 then //valid JD 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} 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); var dum : string; begin obscode1.text:=obscode; // if length(mainwindow.Shape_alignment_marker1.HINT)>0 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)>0 then name_check1.text:=mainwindow.Shape_alignment_marker2.HINT ; // else // name_check1.text:=abbreviation_check; delimiter1.itemindex:=delim_pos; baa_style1.checked:=baa_style; hjd1.checked:=hjd_date; if stackmenu1.reference_database1.itemindex=0 then Comparison1.Text:=name_database else Comparison1.Text:=stackmenu1.reference_database1.text; filter1.itemindex:=aavso_filter_index; form_aavso1.delta_bv1.text:=floattostrF(delta_bv,ffFixed,5,3); form_aavso1.magnitude_slope1.text:=floattostrF(magnitude_slope,ffFixed,5,3); aavso_report:=''; plot_graph; end; end. astap_2024.05.01.orig/unit_yuv4mpeg2.pas0000644000175100017510000001030114614535560017100 0ustar debiandebianunit unit_yuv4mpeg2;{writes YUV4MPEG2 uncompressed video file. Pixels are taken from Timage} {$MODE Delphi} {Copyright (C) 2017, 2023 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_2024.05.01.orig/unit_star_database.pas0000644000175100017510000025031414614535560020045 0ustar debiandebianunit unit_star_database; {HNSKY reads star databases type .290 and 1476} {Copyright (C) 2017, 2023 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 hnskyhdr1476_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; hnskyhdr1476_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 (G05) 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 forms,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 : ^hnskyhdr1476_6; { pointer to hnsky record } p5 : ^hnskyhdr1476_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; warning : boolean; begin result:=true; warning:=false; //warning for old database database_type:=1476;{type .1476 database} database:=lowercase(database); if length(database)>0 then typ:=database[1] else typ:='a'; 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 in ['d','v','h'] then //d80,v50, h18 begin if fileexists( database_path+database+'_0101.1476') then begin name_database:=database; {try preference} exit; end; end; // no else since there is a v50 and v17!! if typ in ['v','g'] then//v17, g18 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>6) and (fileexists( database_path+'g05_0101.290'))) then begin name_database:='g05'; database_type:=290; end //preference for G05 for large FOV else if ((fov>6) and (fileexists( database_path+'v05_0101.290'))) then begin name_database:='v05'; database_type:=290; end else if ((fov>6) and (fileexists( database_path+'v17_0101.290'))) then begin name_database:='v17'; database_type:=290; warning:=true; end //preference for V17 for large FOV else if fileexists( database_path+'d80_0101.1476') then begin name_database:='d80'; end //for tiny field of view else if fileexists( database_path+'d50_0101.1476') then begin name_database:='d50'; end else if fileexists( database_path+'v50_0101.1476') then begin name_database:='v50'; end //photometry database else if fileexists( database_path+'d20_0101.1476') then begin name_database:='d20'; end else if fileexists( database_path+'d05_0101.1476') then begin name_database:='d05'; end else if fileexists( database_path+'g05_0101.290') then begin name_database:='g05'; database_type:=290; end else if fileexists( database_path+'v05_0101.290') then begin name_database:='v05'; database_type:=290; end else if fileexists( database_path+'h18_0101.1476') then begin name_database:='h18';warning:=true; end //old database sorted on magnitude else if fileexists( database_path+'g18_0101.290') then begin name_database:='g18';warning:=true; database_type:=290; end //old database sorted on magnitude else if fileexists( database_path+'h17_0101.1476') then begin name_database:='h17'; warning:=true;end // old database sorted on magnitude else if fileexists( database_path+'v17_0101.290') then begin name_database:='v17'; database_type:=290;warning:=true; end //old database sorted on magnitude else if fileexists( database_path+'g17_0101.290') then begin name_database:='g17'; database_type:=290;warning:=true; end //old database sorted on magnitude else begin application.messagebox(pchar('No star database found!'+#13+'Download and install one star database.'), pchar('ASTAP error:'),0); result:=false; end; if warning then warning_str:='Old database!'; //first potential warning. No add required 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 <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"/> <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="23"> <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"/> <ComponentName Value="form_inspection1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit10> <Unit11> <Filename Value="unit_hjd.pas"/> <IsPartOfProject Value="True"/> </Unit11> <Unit12> <Filename Value="unit_monitoring.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> <Unit20> <Filename Value="unit1.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Form2"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit1"/> </Unit20> <Unit21> <Filename Value="unit2.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Form3"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit2"/> </Unit21> <Unit22> <Filename Value="unit_raster_rotate.pas"/> <IsPartOfProject Value="True"/> </Unit22> </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> <CodeGeneration> <TargetCPU Value="i386"/> </CodeGeneration> <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_2024.05.01.orig/unit_stack.lfm����������������������������������������������������������������0000644�0001751�0001751�00001225760�14614535560�016360� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object stackmenu1: Tstackmenu1 Left = 49 Height = 707 Top = 195 Width = 1862 HorzScrollBar.Page = 300 HorzScrollBar.Range = 1920 VertScrollBar.Visible = False AllowDropFiles = True Caption = 'stack menu' ClientHeight = 690 ClientWidth = 1862 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 OnCreate = FormCreate OnDestroy = FormDestroy OnDropFiles = FormDropFiles OnKeyPress = FormKeyPress OnResize = FormResize OnShow = FormShow LCLVersion = '3.2.0.0' object PairSplitter1: TPairSplitter Cursor = crVSplit Left = 0 Height = 690 Top = 0 Width = 1920 Align = alClient Color = clForm Position = 500 SplitterType = pstVertical object PairSplitterSide1: TPairSplitterSide Cursor = crArrow Left = 0 Height = 500 Top = 0 Width = 1920 ClientWidth = 1920 ClientHeight = 500 Constraints.MinHeight = 440 object pagecontrol1: TPageControl Left = 0 Height = 500 Hint = 'Stack menu' Top = 0 Width = 1920 ActivePage = lights Align = alClient AutoSize = True Images = ImageList2 ParentBiDiMode = False ParentFont = False ParentShowHint = False ShowHint = True TabIndex = 0 TabOrder = 0 OnChange = pagecontrol1Change OnMouseMove = pagecontrol1MouseMove object lights: TTabSheet Hint = 'Select here the light frames.' AutoSize = True Caption = 'Lights' ClientHeight = 472 ClientWidth = 1912 ImageIndex = 22 OnShow = lightsShow ParentFont = False object nr_selected1: TLabel Left = 424 Height = 15 Top = 10 Width = 6 Caption = '0' ParentColor = False ParentFont = False end object nr_total1: TLabel Left = 472 Height = 15 Hint = 'Total number of images in the list' Top = 10 Width = 6 Caption = '0' ParentColor = False ParentFont = False end object Analyse1: TButton Left = 120 Height = 25 Hint = 'Analyse and move dark, flat or bias images to the corresponding tabs. To analyse planetary image on sharpness set in tab alignment max stars on 0.' Top = 5 Width = 179 AutoSize = True Caption = 'Analyse and organise images' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 0 OnClick = Analyse1Click end object Label9: TLabel Left = 448 Height = 15 Top = 10 Width = 5 Caption = '/' ParentColor = False ParentFont = False end object clear_image_list1: TButton Left = 821 Height = 25 Hint = 'Clear the frame list' Top = 5 Width = 71 AutoSize = True Caption = 'Clear list' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 OnClick = clear_image_list1Click end object listview1: TListView Left = 0 Height = 436 Hint = 'Double click to view image' Top = 36 Width = 1912 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 36 Checkboxes = True Columns = < item AutoSize = True Caption = 'File' MinWidth = 150 Width = 33 end item AutoSize = True Caption = 'Object' MinWidth = 50 end item AutoSize = True Caption = 'Filter' MinWidth = 41 Width = 41 end item Caption = 'Result' MinWidth = 60 Width = 60 end item AutoSize = True Caption = 'Bin' MinWidth = 33 Width = 32 end item Alignment = taRightJustify Caption = 'HFD' MinWidth = 40 Width = 40 end item Alignment = taRightJustify Caption = 'Quality' MinWidth = 60 Width = 60 end item Alignment = taRightJustify Caption = 'Background' MinWidth = 110 Width = 110 end item Alignment = taRightJustify Caption = 'Stars' MinWidth = 80 Width = 80 end item Alignment = taRightJustify Caption = '-' MinWidth = 50 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 = 'Width' MinWidth = 50 end item Alignment = taRightJustify Caption = 'Height' MinWidth = 50 end item AutoSize = True Caption = 'Type' MinWidth = 50 Width = 40 end item AutoSize = True Caption = 'Date/time' MinWidth = 120 Width = 68 end item Alignment = taRightJustify AutoSize = True Caption = 'Position' MinWidth = 80 Width = 58 end item Caption = 'Gain' MinWidth = 60 Width = 60 end item Alignment = taRightJustify Caption = 'Solution' MinWidth = 80 Width = 80 end item Caption = 'X ref' MinWidth = 60 Width = 60 end item Caption = 'Y ref' MinWidth = 60 Width = 60 end item AutoSize = True Caption = 'Calibration' MinWidth = 73 Width = 73 end item Caption = 'FocPos' MinWidth = 60 Width = 60 end item Caption = 'FocTemp' MinWidth = 70 Width = 70 end item Caption = 'CentAlt' MinWidth = 60 Width = 60 end item Caption = 'CentAz' MinWidth = 60 Width = 60 end item Caption = 'SQM' MinWidth = 60 Width = 60 end> 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 = 528 Height = 19 Hint = 'After analysing uncheck files with abnormal HFD or abnormal amount number of stars detected.' Top = 8 Width = 125 Caption = 'Untick worst images' ParentFont = False TabOrder = 3 end object sd_factor_list1: TComboBox Left = 715 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 = 944 Height = 30 Hint = 'Online help about analyse' Top = 0 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 = 1048 Height = 25 Hint = 'Un-aligned blink. Note: For single step blink use the keyboard left and right arrows.' Top = 5 Width = 50 AutoSize = True Caption = '▶▶' Constraints.MinWidth = 50 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 5 OnClick = blink_unaligned_multi_step1Click end object lights_blink_pause1: TButton Left = 984 Height = 25 Hint = 'Pause blinking' Top = 5 Width = 50 AutoSize = True Caption = '||' Constraints.MinWidth = 50 ParentFont = False TabOrder = 6 OnClick = blink_stop1Click end object blink_unaligned_multi_step_backwards1: TButton Left = 1112 Height = 25 Hint = 'Un-aligned blink. Note: For single step blink use the keyboard left and right arrows.' Top = 5 Width = 50 AutoSize = True Caption = '◀◀' Constraints.MinWidth = 50 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 7 OnClick = blink_unaligned_multi_step1Click end object planetary_image1: TCheckBox Left = 1224 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 = 67 Caption = 'Planetary' TabOrder = 8 end object browse1: TBitBtn Left = 0 Height = 26 Hint = 'Browse and select lights to stack' Top = 5 Width = 92 AutoSize = True Caption = 'Browse' Constraints.MinWidth = 92 Images = ImageList2 ImageIndex = 23 OnClick = browse1Click TabOrder = 9 end object analyse_lights_extra1: TButton Left = 328 Height = 25 Hint = 'Report satellite streaks. For streak detection settings see tab "pixel math 2"' Top = 5 Width = 34 AutoSize = True Caption = '+' ParentFont = False TabOrder = 10 OnClick = Analyse1Click end object most_right1: TStaticText Left = 1300 Height = 16 Top = 10 Width = 3 AutoSize = True Caption = '|' ParentShowHint = False TabOrder = 11 Visible = False end end object Darks: TTabSheet Hint = 'Select here the dark frames.' Caption = 'Darks' ClientHeight = 472 ClientWidth = 1912 ImageIndex = 1 ParentFont = False object replace_by_master_dark1: TButton Left = 296 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' ParentFont = False TabOrder = 0 OnClick = replace_by_master_dark1Click end object clear_dark_list1: TButton Left = 1051 Height = 25 Hint = 'Clear the frame list' Top = 5 Width = 71 AutoSize = True Caption = 'Clear list' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 OnClick = clear_dark_list1Click end object listview2: TListView Left = 0 Height = 436 Hint = 'Double click to view image' Top = 36 Width = 1912 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 = 90 Width = 90 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 item AutoSize = True Caption = 'Issues' Width = 46 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 = 120 Height = 25 Hint = 'Analyse image files' Top = 5 Width = 67 AutoSize = True Caption = 'Analyse' Constraints.MinWidth = 67 ParentFont = False TabOrder = 3 OnClick = analysedarksButton2Click end object nr_total_darks1: TLabel Left = 224 Height = 15 Hint = 'Number of images in the list' Top = 9 Width = 6 Caption = '0' Color = clBtnFace ParentColor = False ParentFont = False Transparent = False end object classify_dark_date1: TCheckBox Left = 744 Height = 19 Hint = 'Combine darks within 12 hour time range to master' Top = 8 Width = 203 Caption = 'Classify by date for master creation' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 end object browse_dark1: TBitBtn Left = 0 Height = 26 Hint = 'Browse and select darks' Top = 5 Width = 92 AutoSize = True Caption = 'Browse' Constraints.MinWidth = 92 Images = ImageList2 ImageIndex = 23 OnClick = browse_dark1Click TabOrder = 5 end object most_right2: TStaticText Left = 1248 Height = 16 Top = 8 Width = 3 AutoSize = True Caption = '|' TabOrder = 6 Visible = False end end object Flats: TTabSheet Hint = 'Select here the flat frames' Caption = 'Flats' ClientHeight = 472 ClientWidth = 1912 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.' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 0 OnClick = replace_by_master_flat1Click end object clear_selection2: TButton Left = 1128 Height = 25 Hint = 'Clear the frame list' Top = 5 Width = 71 AutoSize = True Caption = 'Clear list' ParentFont = False TabOrder = 1 OnClick = clear_selection2Click end object analyseflatsButton3: TButton Left = 136 Height = 25 Hint = 'Analyse image files' Top = 5 Width = 67 AutoSize = True Caption = 'Analyse' ParentFont = False TabOrder = 2 OnClick = analyseflatsButton3Click end object listview3: TListView Left = 0 Height = 431 Hint = 'Double click to view image' Top = 41 Width = 1912 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 41 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 item AutoSize = True Caption = 'Issues' Width = 46 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 = 26 Hint = 'Browse and select flats' Top = 5 Width = 92 AutoSize = True Caption = 'Browse' Constraints.MinWidth = 92 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 = 203 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 = 19 Width = 258 Caption = 'Classify by exposure time for master creation.' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 6 end object most_right3: TStaticText Left = 1250 Height = 16 Top = 8 Width = 3 AutoSize = True Caption = '|' TabOrder = 7 Visible = False end end object Bias: TTabSheet Hint = 'Select here the flat-dark/bias frames.' Caption = 'Flat darks' ClientHeight = 472 ClientWidth = 1912 ImageIndex = 3 ParentFont = False object clear_selection3: TButton Left = 664 Height = 25 Hint = 'Clear the frame list' Top = 6 Width = 71 AutoSize = True Caption = 'Clear list' ParentFont = False TabOrder = 0 OnClick = clear_selection3Click end object analyseflatdarksButton1: TButton Left = 136 Height = 25 Hint = 'Analyse image files' Top = 6 Width = 67 AutoSize = True Caption = 'Analyse' ParentFont = False TabOrder = 1 OnClick = analyseflatdarksButton1Click end object listview4: TListView Left = 0 Height = 436 Hint = 'Double click to view image' Top = 36 Width = 1912 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 = 26 Hint = 'Browse and select flat-darks (bias)' Top = 6 Width = 92 AutoSize = True Caption = 'Browse' Constraints.MinWidth = 92 Images = ImageList2 ImageIndex = 23 OnClick = browse_bias1Click TabOrder = 3 end object most_right4: TStaticText Left = 1250 Height = 16 Top = 10 Width = 3 AutoSize = True Caption = '|' TabOrder = 4 Visible = False end end object Result1: TTabSheet Hint = 'This page contains the result of stacking. See pop-up menu for more options.' Caption = 'Results' ClientHeight = 472 ClientWidth = 1912 ImageIndex = 6 ParentFont = False object listview5: TListView Left = 0 Height = 436 Hint = 'Double click to view image' Top = 36 Width = 1912 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 = 448 Height = 25 Hint = 'Help' Top = 5 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 = 536 Height = 19 Hint = 'Add time to stack file name. This allow comparison of different settings.' Top = 8 Width = 163 Caption = 'Add time to stack file name' TabOrder = 1 end object save_settings_image_path1: TCheckBox Left = 768 Height = 19 Hint = 'Save a copy of the settings at image location. Can be retrieved with viewer file menu.' Top = 8 Width = 161 Caption = 'Include configuration copy' Checked = True State = cbChecked TabOrder = 2 end object clear_result_list1: TButton Left = 1000 Height = 25 Hint = 'Clear result list' Top = 5 Width = 53 AutoSize = True Caption = 'Clear' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 3 OnClick = clear_result_list1Click end object most_right5: TStaticText Left = 1250 Height = 16 Top = 5 Width = 3 AutoSize = True Caption = '|' TabOrder = 4 Visible = False end end object tab_stackmethod1: TTabSheet Hint = 'Set here the stack method' Caption = 'Stack method' ClientHeight = 472 ClientWidth = 1912 ImageIndex = 5 ParentFont = False object stack_method1: TComboBox Left = 125 Height = 23 Hint = 'Select stack method.' Top = 24 Width = 222 DropDownCount = 20 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'Average' 'Sigma clip average' 'Image stitching mode' 'Calibration and alignment only' 'Calibration only' 'Calibration only. No de-mosaic' 'Average, skip LRGB combine' 'Sigma clip, skip LRGB combine' 'Comet and stars sharp' ) ParentFont = False Style = csDropDownList TabOrder = 0 Text = 'Average' OnChange = stack_method1Change OnDropDown = stack_method1DropDown 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 Label_masterflat1: 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 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 = 56 Height = 28 Hint = 'Help' Top = 55 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 = 2 object red_filter1: TEdit Left = 0 Height = 23 Hint = 'Enter here a filter name for red' Top = 16 Width = 72 Color = 11842815 ParentFont = False TabOrder = 2 Text = 'Red' OnExit = luminance_filter1exit end object green_filter1: TEdit Left = 0 Height = 23 Hint = 'Enter here a filter name for green' Top = 40 Width = 72 Color = 11861940 ParentFont = False TabOrder = 4 Text = 'Green' OnExit = luminance_filter1exit end object blue_filter1: TEdit Left = 0 Height = 23 Hint = 'Enter here a filter name for blue' Top = 64 Width = 72 Color = 16757940 ParentFont = False TabOrder = 6 Text = 'Blue' OnExit = luminance_filter1exit end object red_filter2: TEdit Left = 72 Height = 23 Hint = 'Enter here a second filter name for red' Top = 16 Width = 72 Color = 11842815 ParentFont = False TabOrder = 3 Text = 'SII' OnExit = luminance_filter1exit end object green_filter2: TEdit Left = 72 Height = 23 Hint = 'Enter here a second filter name for green' Top = 40 Width = 72 Color = 11861940 ParentFont = False TabOrder = 5 Text = 'G' OnExit = luminance_filter1exit end object blue_filter2: TEdit Left = 72 Height = 23 Hint = 'Enter here a second filter name for blue' Top = 64 Width = 72 Color = 16757940 ParentFont = False TabOrder = 7 Text = 'OIII' OnExit = luminance_filter1exit 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 ParentFont = False TabOrder = 0 Text = 'L' OnExit = luminance_filter1exit end object luminance_filter2: TEdit Left = 72 Height = 23 Hint = 'Enter here a second filter name for Luminance' Top = 112 Width = 72 ParentFont = False TabOrder = 1 Text = 'Ha' OnExit = luminance_filter1exit 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 = 76 Caption = 'Auto levels' Checked = True Color = clDefault ParentColor = False ParentFont = False State = cbChecked TabOrder = 20 OnChange = lrgb_auto_level1Change end object lrgb_colour_smooth1: TCheckBox Left = 0 Height = 19 Hint = 'Apply colour smooth after stacking.' Top = 200 Width = 98 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 = 115 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 = 144 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 = 208 Hint = 'Tools for equalizing the tiles of the mosaic.' Top = 16 Width = 313 Caption = 'Image stitching (mosaic) settings' ClientHeight = 188 ClientWidth = 309 Enabled = False ParentBackground = False ParentFont = False TabOrder = 3 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 = 8 Width = 128 Caption = 'Equalise background' Checked = True ParentFont = False State = cbChecked TabOrder = 0 end object Label65: TLabel Left = 0 Height = 15 Top = 40 Width = 114 Caption = 'Crop each image [%] ' ParentColor = False ParentFont = False end object mosaic_crop2: TEdit Left = 184 Height = 23 Hint = 'Use to remove poor areas near borders' Top = 40 Width = 48 ParentFont = False TabOrder = 1 Text = '0' end object mosaic_crop1: TUpDown Left = 232 Height = 23 Top = 40 Width = 17 Associate = mosaic_crop2 Max = 99 Min = 0 MinRepeatInterval = 25 Position = 0 TabOrder = 2 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 = 72 Width = 190 Caption = 'Merge overlapping backgrounds' ParentFont = False TabOrder = 3 end object limit_background_correction1: TCheckBox Left = 0 Height = 19 Hint = 'If equalizing background is not working then switch this off.' Top = 104 Width = 169 Caption = 'Limit background correction' ParentFont = False TabOrder = 4 end object Label35: TLabel Left = 8 Height = 40 Top = 147 Width = 296 AutoSize = False Caption = 'For an LRGB mosaic combine the colours after creating a mosaic for each colour.' ParentColor = False WordWrap = True 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 ParentBackground = False ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 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 = 194 Caption = 'Force processing as OSC images. ' Color = clDefault ParentColor = False ParentFont = False TabOrder = 0 OnClick = make_osc_color1Click 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' ) ParentFont = False Style = csDropDownList TabOrder = 1 Text = 'auto' OnSelect = bayer_pattern1Select 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 ParentFont = False TabOrder = 3 OnClick = test_pattern1Click 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 = 408 Height = 30 Hint = 'Undo last action' Top = 96 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 = 76 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 = 72 Width = 98 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 = 72 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 = 72 Width = 72 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 = 72 Width = 115 Caption = 'preserve_R_nebula' Checked = True State = cbChecked TabOrder = 10 end end object most_right6: TStaticText Left = 1456 Height = 16 Top = 8 Width = 3 AutoSize = True Caption = '|' TabOrder = 5 Visible = False end end object alignment1: TTabSheet Hint = 'Set here the frame alignment and solver options.' Caption = 'Alignment' ClientHeight = 472 ClientWidth = 1912 ImageIndex = 7 OnShow = alignment1Show ParentFont = False object use_star_alignment1: TRadioButton Left = 8 Height = 19 Hint = 'Star alignment is the best option for stacking' Top = 24 Width = 95 Caption = 'Star alignment' Checked = True ParentFont = False TabOrder = 0 TabStop = True OnChange = use_star_alignment1Change 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 = 115 Caption = 'Manual alignment' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 OnChange = use_manual_alignment1Change 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' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 OnClick = solve1Click 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_alignment1: TRadioButton Left = 8 Height = 19 Hint = 'Use this for mosaic building.' Top = 64 Width = 137 Caption = 'Astrometric alignment' ParentFont = False TabOrder = 3 OnChange = use_astrometry_alignment1Change end object GroupBox_astrometric_solver_settings1: TGroupBox Left = 208 Height = 192 Top = 0 Width = 872 AutoSize = True Caption = 'Solver' ClientHeight = 172 ClientWidth = 868 ParentBackground = False ParentFont = False TabOrder = 4 object Panel_solver1: TPanel Left = 0 Height = 172 Top = 0 Width = 868 AutoSize = True BevelColor = clMenuHighlight BevelOuter = bvSpace ClientHeight = 172 ClientWidth = 868 ParentBackground = False 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 DropDownCount = 20 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '' ) ParentFont = False Sorted = True TabOrder = 3 OnChange = star_database1Change OnDropDown = star_database1DropDown end object Label53: TLabel Left = 375 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' ) ParentFont = False TabOrder = 0 Text = '1' OnChange = search_fov1Change end object GroupBox_star_alignment_settings1: TGroupBox Left = 1 Height = 164 Top = 7 Width = 362 AutoSize = True Caption = 'Tetrahedron detection' ClientHeight = 144 ClientWidth = 358 ParentBackground = False 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 ParentBackground = False 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 = 3 Items.Strings = ( '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 = 4 Items.Strings = ( '0.003' '0.004' '0.005' '0.006' '0.007' '0.008' '0.009' '' ) 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 = 153 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' ) ParentFont = False Style = csDropDownList TabOrder = 0 Text = '0' OnChange = resize_factor1Change 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 force_oversize1: TCheckBox Left = 696 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 = 43 BorderSpacing.Around = 5 Caption = 'Slow' Color = clBtnFace ParentColor = False ParentFont = False TabOrder = 5 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' ) ParentFont = False TabOrder = 2 Text = '1.5' OnChange = resize_factor1Change 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 = 333 Caption = 'Ignore existing FITS header solution for astrometric stacking' ParentFont = False TabOrder = 6 end object save_settings_extra_button1: TButton Left = 792 Height = 25 Hint = 'Save settings' Top = 6 Width = 75 Caption = 'Save' TabOrder = 7 Visible = False OnClick = save_settings_extra_button1Click end object use_triples1: TCheckBox Left = 696 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 = 72 BorderSpacing.Around = 5 Caption = 'Use triples' Color = clBtnFace ParentColor = False ParentFont = False TabOrder = 8 end object add_sip1: TCheckBox Left = 696 Height = 19 Hint = 'Use SIP coeficients for accurate positional information of celestial objects and image stitching.' Top = 33 Width = 98 BorderSpacing.Around = 5 Caption = 'SIP coefficients' Color = clBtnFace ParentColor = False ParentFont = False TabOrder = 9 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 ParentBackground = False 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 ItemIndex = 0 Items.Strings = ( 'Star centering' 'Comet centering (small object)' 'Comet centering (medium object)' 'Comet centering (large object)' 'No centering' ) ParentFont = False Style = csDropDownList TabOrder = 0 Text = 'Star centering' 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 = 130 Caption = 'Ephemeris alignment' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 7 OnChange = use_ephemeris_alignment1Change 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 ParentBackground = False 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 = ( '' ) ParentFont = False Style = csDropDownList TabOrder = 0 OnChange = ephemeris_centering1Change end object analyse_objects_visible1: TButton Left = 238 Height = 25 Hint = 'This will fill the combobox with objects visible in the selected light' Top = 4 Width = 217 AutoSize = True Caption = 'Analyse the selected file in tab lights' TabOrder = 1 OnClick = analyse_objects_visible1Click 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 = 205 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 = 212 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 = 78 Caption = 'Auto rotate' ParentFont = False TabOrder = 4 end end object most_right7: TStaticText Left = 1432 Height = 16 Top = 8 Width = 3 AutoSize = True Caption = '|' TabOrder = 9 Visible = False end end object tab_blink1: TTabSheet Hint = 'Blinking tool for astronomical images.' AutoSize = True Caption = 'Blink' ClientHeight = 472 ClientWidth = 1912 ImageIndex = 11 OnShow = tab_blink1Show ParentFont = False object listview6: TListView Left = 0 Height = 407 Hint = 'Double click to view image' Top = 65 Width = 1912 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 65 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 = 'Alignment' 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 = 991 Height = 25 Hint = 'Clear image list' Top = 34 Width = 61 Caption = 'Clear' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 OnClick = clear_blink_list1Click end object nr_total_blink1: TLabel Left = 24 Height = 15 Hint = 'Number of images in the list' Top = 8 Width = 6 Caption = '0' ParentColor = False ParentFont = False end object blink_button1: TButton Left = 296 Height = 26 Hint = 'Blink check-marked images once' Top = 34 Width = 75 Caption = '▶|' ParentFont = False TabOrder = 2 OnClick = blink_button1Click end object blink_stop1: TButton Left = 208 Height = 26 Hint = 'Stop blinking' Top = 34 Width = 75 Caption = '⏹' ParentFont = False TabOrder = 3 OnClick = blink_stop1Click end object blink_button_contF1: TButton Left = 384 Height = 26 Hint = 'Continous blink check-marked images' Top = 34 Width = 43 Caption = ' ▶' ParentFont = False TabOrder = 4 OnClick = blink_button1Click end object align_blink1: TCheckBox Left = 512 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 = 4 Width = 87 Caption = 'Align images' Checked = True ParentFont = False State = cbChecked TabOrder = 5 end object clear_blink_alignment1: TButton Left = 296 Height = 25 Hint = 'Clear the star alignment. Apply this if alignment is poor.' Top = 4 Width = 146 AutoSize = True Caption = 'Clear image alignment' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 6 OnClick = clear_blink_alignment1Click end object analyseblink1: TButton Left = 120 Height = 25 Hint = 'Analyse image files' Top = 34 Width = 67 AutoSize = True Caption = 'Analyse' ParentFont = False TabOrder = 7 OnClick = analyseblink1Click end object help_blink1: TLabel Cursor = crHandPoint Left = 1100 Height = 30 Hint = 'Online help' Top = 0 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 = 850 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' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 8 OnClick = export_aligned_files1Click end object write_video1: TButton Left = 850 Height = 25 Hint = 'Write image list as YUV4MPEG2 video with extension y4m.' Top = 34 Width = 102 AutoSize = True Caption = 'Write video' Constraints.MinWidth = 102 TabOrder = 9 OnClick = write_video1Click end object timestamp1: TCheckBox Left = 512 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 = 34 Width = 80 Caption = 'Time stamp' Checked = True ParentFont = False State = cbChecked TabOrder = 10 end object blink_button_contB1: TButton Left = 440 Height = 26 Hint = 'Continous blink check-marked images' Top = 34 Width = 43 Caption = '◀' ParentFont = False TabOrder = 11 OnClick = blink_button1Click end object browse_blink1: TBitBtn Left = 0 Height = 25 Hint = 'Select images to blink.' Top = 34 Width = 92 Caption = 'Browse' Images = ImageList2 ImageIndex = 23 OnClick = browse_blink1Click TabOrder = 12 end object Annotations_visible2: TCheckBox Left = 656 Height = 19 Hint = 'Same option as in the viewer under View.' Top = 34 Width = 119 Caption = 'Annotations visible' TabOrder = 13 OnClick = Annotations_visible2Click end object most_right8: TStaticText Left = 1250 Height = 16 Top = 9 Width = 3 AutoSize = True Caption = '|' TabOrder = 14 Visible = False end object Label6: TLabel Left = 1080 Height = 15 Top = 34 Width = 193 Caption = 'For Track and Stack see popup menu' ParentColor = False end object blink_annotate_and_solve1: TButton Left = 656 Height = 25 Hint = 'Reannotate and solve all checked images. To refresh the solution set the override option in tab Alignment.' Top = 4 Width = 144 Caption = '(Re)annotate (&&solve)' TabOrder = 15 OnClick = blink_annotate_and_solve1Click end object blink_binx2: TButton Left = 992 Height = 25 Hint = 'Bin the images for better photometric detection. Original files will not be affected.' Top = 4 Width = 61 Caption = 'Bin x 2' ParentFont = False TabOrder = 16 OnClick = photometry_binx2Click end end object tab_photometry1: TTabSheet Hint = 'Photometry of variable stars.' Caption = 'Photometry' ClientHeight = 472 ClientWidth = 1912 ImageIndex = 19 OnShow = tab_photometry1Show ParentFont = False object analysephotometry1: TButton Left = 104 Height = 26 Hint = 'Analyse image files' Top = 34 Width = 80 Caption = 'Analyse' ParentFont = False TabOrder = 0 OnClick = analysephotometry1Click end object nr_total_photometry1: TLabel Left = 16 Height = 15 Hint = 'Number of images in the list' Top = 8 Width = 6 Caption = '0' ParentColor = False ParentFont = False end object photometry_stop1: TButton Left = 208 Height = 26 Hint = 'Stop photometry blinking' Top = 34 Width = 75 Caption = '⏹' ParentFont = False TabOrder = 1 OnClick = blink_stop1Click end object photometry_button1: TButton Left = 296 Height = 26 Hint = 'Scroll through the check-marked images once and measure the marked stars.' Top = 34 Width = 75 Caption = '▶|' ParentFont = False TabOrder = 2 OnClick = photometry_button1Click end object photometry_repeat1: TButton Left = 384 Height = 26 Hint = 'Continous scrolling through the check-marked images and measure the marked stars.' Top = 34 Width = 40 Caption = '▶' ParentFont = False TabOrder = 3 OnClick = photometry_button1Click end object clear_photometry_list1: TButton Left = 592 Height = 25 Hint = 'Clear image list' Top = 34 Width = 61 Caption = 'Clear' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 OnClick = clear_photometry_list1Click end object listview7: TListView Left = 0 Height = 407 Hint = 'Double click to view image' Top = 65 Width = 1912 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 65 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 (start)' MinWidth = 120 Width = 73 end item Alignment = taRightJustify Caption = 'JD (midpoint)' 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 = 71 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 OnDblClick = listview1DblClick OnKeyDown = listview1KeyDown end object help_photometry1: TLabel Cursor = crHandPoint Left = 1147 Height = 30 Hint = 'Online help' Top = 29 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 = 592 Height = 25 Hint = 'Bin the images for better photometric detection. Original files will not be affected.' Top = 4 Width = 61 Caption = 'Bin x 2' ParentFont = False TabOrder = 6 OnClick = photometry_binx2Click end object mark_outliers_upto1: TComboBox Left = 976 Height = 23 Hint = 'Mark in the image outliers down to this magnitude' Top = 5 Width = 48 ItemHeight = 15 ItemIndex = 3 Items.Strings = ( '11' '12' '13' '14' '15' '16' '17' ) ParentFont = False TabOrder = 7 Text = '14' OnChange = flux_aperture1change end object aavso_button1: TButton Left = 976 Height = 25 Hint = 'Generate AAVSO report' Top = 34 Width = 99 AutoSize = True Caption = 'AAVSO report' TabOrder = 8 OnClick = aavso_button1Click end object flux_aperture1: TComboBox Left = 512 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 = 5 Width = 72 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' '' ) ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 9 Text = '3.0' OnChange = flux_aperture1change end object Label26: TLabel Left = 448 Height = 15 Top = 11 Width = 49 Alignment = taRightJustify Caption = 'Aperture:' ParentColor = False end object analysephotometrymore1: TButton Left = 104 Height = 26 Hint = 'Analyse image files extra' Top = 4 Width = 80 BorderSpacing.Top = 2 Caption = '+' ParentFont = False TabOrder = 10 OnClick = analysephotometry1Click end object annulus_radius1: TComboBox Left = 512 Height = 23 Hint = 'Annulus inner diameter [ x HFD]. The annulus diameter has to be larger then the aperture diameter.' Top = 34 Width = 72 DropDownCount = 17 ItemHeight = 15 ItemIndex = 2 Items.Strings = ( '4' '5' '6' '7' '8' '9' '10' ) ParentFont = False TabOrder = 11 Text = '6' OnChange = flux_aperture1change end object Label27: TLabel Left = 455 Height = 15 Top = 36 Width = 47 Alignment = taRightJustify Caption = 'Annulus:' ParentColor = False end object speedButton_location1: TSpeedButton Left = 1040 Height = 25 Hint = 'Default observer location for the case it is not available in the file header. Use this for DSLR images.' Top = 4 Width = 25 Images = ImageList2 ImageIndex = 20 OnClick = speedButton_location1Click end object browse_photometry1: TBitBtn Left = 0 Height = 25 Hint = 'Select images for photometry' Top = 34 Width = 92 Caption = 'Browse' Images = ImageList2 ImageIndex = 23 OnClick = browse_photometry1Click TabOrder = 12 end object annotate_mode1: TComboBox Left = 664 Height = 23 Hint = 'Annotate variable and comparison stars' Top = 34 Width = 283 DropDownCount = 17 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( 'No annotation' 'Annotation local DB mag 11' 'Annotation local DB mag 13' 'Annotation local DB mag 15' 'Annotation online DB mag 13' 'Annotation online DB mag 15' 'Annotation online DB mag 99' 'Annotation local DB mag 11 & measure all' 'Annotation local DB mag 13 & measure all' 'Annotation local DB mag 15 & measure all' 'Annotation online DB mag 13 & measure all' 'Annotation online DB mag 15 & measure all' 'Annotation online DB mag 99 & measure all' ) ParentFont = False TabOrder = 13 Text = 'Annotation local DB mag 11' OnChange = annotate_mode1Change end object reference_database1: TComboBox Left = 664 Height = 23 Hint = 'Reference star database to be used. Set to '#13#10'1) Online , Gaia ->auto '#13#10'or'#13#10'2) Local star database and select in tab alignment V50 for Johnson-V.' Top = 5 Width = 160 DropDownCount = 17 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'Local star database' 'Online Gaia -> auto' 'Online Gaia BP' 'Online Gaia->V' 'Online Gaia->B' 'Online Gaia->R' 'Online Gaia->SG (g'')' 'Online Gaia->SR (r'')' 'Online Gaia->SI (i'')' ) ParentFont = False TabOrder = 14 Text = 'Local star database' OnChange = reference_database1Change end object transformation1: TButton Left = 832 Height = 25 Hint = 'This will calculate the transformation equation ∆ V = a + T*(B-V) using the image in the viewer' Top = 4 Width = 107 AutoSize = True Caption = 'Transformation' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 15 OnClick = transformation1Click end object Label19: TLabel Left = 1112 Height = 25 Hint = 'See popup menu for calibration && extraction' Top = 6 Width = 99 AutoSize = False Caption = 'See popup menu for calibration && extraction' Font.Height = -9 ParentColor = False ParentFont = False WordWrap = True end object most_right9: TStaticText Left = 1250 Height = 16 Top = 36 Width = 3 AutoSize = True Caption = '|' TabOrder = 16 Visible = False end end object tab_inspector1: TTabSheet Hint = 'Measure the best focus position for several areas of the image.' Caption = 'Inspector' ClientHeight = 472 ClientWidth = 1912 ImageIndex = 17 object analyse_inspector1: TButton Left = 136 Height = 26 Hint = 'Analyse image files' Top = 6 Width = 88 Caption = 'Analyse' ParentFont = False TabOrder = 0 OnClick = analyse_inspector1Click end object listview8: TListView Left = 0 Height = 436 Hint = 'Double click to view image' Top = 36 Width = 1912 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 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 = 1024 Height = 25 Hint = 'Clear image list' Top = 6 Width = 53 AutoSize = True Caption = 'Clear' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 OnClick = clear_inspector_list1Click 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' ParentFont = False TabOrder = 3 OnClick = curve_fitting1Click 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 object most_right10: TStaticText Left = 1250 Height = 16 Top = 3 Width = 3 AutoSize = True Caption = '|' TabOrder = 5 Visible = False end end object mount1: TTabSheet Hint = 'Measure the mount celestial position offsets.' Caption = 'Mount analyse' ClientHeight = 472 ClientWidth = 1912 ImageIndex = 21 object listview9: TListView Left = 0 Height = 431 Hint = 'Double click to view image' Top = 41 Width = 1912 Align = alClient AutoSortIndicator = True BorderSpacing.Top = 41 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' ParentFont = False TabOrder = 1 OnClick = mount_analyse1Click 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' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 OnClick = mount_add_solutions1Click end object mount_ignore_solutions1: TCheckBox Left = 616 Height = 19 Hint = '(Re)solve image list.' Top = 0 Width = 147 Caption = 'Ignore existing solutions' TabOrder = 3 end object clear_mount_list1: TButton Left = 1056 Height = 26 Hint = 'Clear image list' Top = 5 Width = 53 Caption = 'Clear' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 OnClick = clear_mount_list1Click end object mount_write_wcs1: TCheckBox Left = 616 Height = 19 Hint = 'Write solution to a new separate header file only. (.wcs)' Top = 19 Width = 147 Caption = 'Do not modify the lights' Checked = True State = cbChecked TabOrder = 5 end object help_mount_tab1: TLabel Cursor = crHandPoint Left = 1008 Height = 30 Hint = 'Online help' Top = 0 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' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 7 OnClick = calc_polar_alignment_error1Click end object hours_and_minutes1: TCheckBox Left = 832 Height = 19 Hint = 'Format of positions' Top = 0 Width = 76 Caption = 'HH:MM:SS' TabOrder = 8 end object most_right11: TStaticText Left = 1250 Height = 16 Top = 5 Width = 3 AutoSize = True Caption = '|' TabOrder = 9 Visible = False end end object tab_live_stacking1: TTabSheet Hint = 'Stack live images' Caption = 'Live stacking' ClientHeight = 472 ClientWidth = 1912 ParentFont = False object live_stacking1: TButton Left = 16 Height = 25 Hint = 'Start live stacking.' Top = 128 Width = 75 Caption = '▶' ParentFont = False TabOrder = 0 OnClick = live_stacking1Click end object live_stacking_pause1: TButton Left = 16 Height = 25 Hint = 'Pause live stacking process.' Top = 168 Width = 75 Caption = '||' Font.Style = [fsBold] ParentFont = False TabOrder = 1 OnClick = live_stacking_pause1Click end object live_stacking_restart1: TButton Left = 16 Height = 25 Hint = 'Stop live stacking.' Top = 208 Width = 75 Caption = '⏹' Font.Style = [fsBold] ParentFont = False TabOrder = 2 OnClick = live_stacking_restart1Click end object live_stacking_path1: TLabel Left = 16 Height = 15 Top = 64 Width = 15 Caption = '---' 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 Label20: TLabel Left = 32 Height = 15 Top = 344 Width = 218 Caption = 'Darks and flats will be applied if available.' ParentColor = False ParentFont = False end object Label30: TLabel Left = 32 Height = 15 Top = 280 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 = 32 Height = 15 Top = 312 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 = 289 AutoSize = True Caption = 'Monitoring' ClientHeight = 95 ClientWidth = 285 ParentBackground = False TabOrder = 3 object interim_to_clipboard1: TCheckBox Left = 0 Height = 19 Hint = 'After adding a file copy the interim image to clipboard.' Top = 24 Width = 285 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 = 264 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 = 4 end object most_right12: TStaticText Left = 1272 Height = 16 Top = 11 Width = 3 AutoSize = True Caption = '|' TabOrder = 5 Visible = False end object Label15: TLabel Left = 32 Height = 15 Top = 376 Width = 227 Caption = 'Processed files will get a new extension *.*_' 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 = 193 AutoSize = True Caption = 'Rename all files back to original' ParentFont = False TabOrder = 6 OnClick = restore_file_ext1Click end end object tab_monitoring1: TTabSheet Caption = 'Monitoring' ClientHeight = 472 ClientWidth = 1912 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 = ' ▶ ' Font.Style = [fsBold] ParentFont = False TabOrder = 1 OnClick = live_monitoring1Click end object monitoring_stop1: TButton Left = 16 Height = 25 Hint = 'Stop monitoring' Top = 208 Width = 75 Caption = '⏹' Font.Style = [fsBold] ParentFont = False TabOrder = 2 OnClick = monitoring_stop1Click 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' 'Background Contour' ) ParentFont = False Style = csDropDownList TabOrder = 3 Text = 'none' OnChange = monitor_action1Change 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 = 118 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 ParentBackground = 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' TabOrder = 0 OnClick = Button1Click 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 ParentShowHint = False ShowHint = True TabOrder = 1 Text = '0' Visible = False OnEditingDone = monitor_longitude1EditingDone end object monitor_latitude1: TEdit Left = 626 Height = 23 Hint = 'The latitude of the observatory in degrees.' Top = 312 Width = 113 ParentShowHint = False ShowHint = True TabOrder = 2 Text = '0' Visible = False OnEditingDone = monitor_latitude1EditingDone 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 object most_right13: TStaticText Left = 1320 Height = 16 Top = 8 Width = 3 AutoSize = True Caption = '|' TabOrder = 6 Visible = False end end object tab_Pixelmath1: TTabSheet Hint = 'Pixel math tools 1' Caption = 'Pixel math 1' ClientHeight = 472 ClientWidth = 1912 Enabled = False ImageIndex = 4 OnShow = tab_Pixelmath1Show 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 ParentBackground = False ParentFont = False TabOrder = 0 object Label14: TLabel Left = -2 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 = -2 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' ParentFont = False TabOrder = 8 OnClick = apply_factor1Click 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' ParentFont = False TabOrder = 6 OnClick = auto_background_level1Click end object reset_factors1: TButton Left = 374 Height = 23 Hint = 'Reset the add and multiply factors' Top = 24 Width = 48 Caption = 'Reset' ParentFont = False TabOrder = 7 OnClick = reset_factors1Click end object ignorezero1: TCheckBox Left = 23 Height = 19 Hint = 'Do not modifiy values of zero and below' Top = 60 Width = 135 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 ParentBackground = False ParentFont = False TabOrder = 1 object apply_artificial_flat_correction1: TButton Left = 64 Height = 25 Hint = 'Equalise corners of the image below the average background. ' Top = 12 Width = 109 AutoSize = True Caption = 'Raise dark areas' ParentFont = False TabOrder = 1 OnClick = apply_artificial_flat_correction1Click 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' ) ParentFont = False TabOrder = 0 Text = '20' OnChange = resize_factor1Change end object apply_artificial_flat_correctionV2: TButton Left = 272 Height = 25 Hint = 'Equalise all. There should be no object in the center of the image and deepsky objects should be small.. ' Top = 12 Width = 96 AutoSize = True Caption = 'Ring equalise' ParentFont = False TabOrder = 3 OnClick = apply_artificial_flat_correction1Click 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%' ) ParentFont = False TabOrder = 4 Text = '10%' OnChange = resize_factor1Change 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 ParentBackground = False 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 ParentFont = False TabOrder = 1 OnClick = most_common_filter_tool1Click end object most_common_filter_radius1: TEdit Left = 305 Height = 23 Hint = 'Median filter factor (box size). Typical value is 30' 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 ParentFont = False TabOrder = 3 OnClick = apply_gaussian_filter1Click 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 = 'To remove fuzzies use the viewer popup menu "Remove deepsky object"' Top = 73 Width = 278 Alignment = taCenter AutoSize = False Caption = 'Remove fuzzies 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 ParentFont = False TabOrder = 4 OnClick = subtract_background1Click 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' ParentFont = False TabOrder = 0 OnClick = save_as_new_file1Click 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 ParentFont = False TabOrder = 5 OnClick = save_result1Click 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' ParentFont = False TabOrder = 7 OnClick = dark_spot_filter1Click 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 ParentFont = False TabOrder = 9 OnClick = most_common_mono1Click 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 ParentBackground = False 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' ParentFont = False TabOrder = 1 OnClick = apply_remove_background_colour1Click 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 ParentBackground = False 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' ParentFont = False TabOrder = 1 OnClick = smart_colour_smooth_button1Click 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 = 121 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 ParentBackground = False 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 = 115 Height = 25 Top = 44 Width = 150 AutoSize = True Caption = 'Apply' Constraints.MinWidth = 150 ParentFont = False TabOrder = 2 OnClick = apply_background_noise_filter1Click 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 ParentBackground = False 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 = 212 Height = 30 Hint = 'This will remove any vertical gradient. For any other angle apply both.' Top = -6 Width = 65 AutoSize = True Caption = 'Apply ↕' Constraints.MinHeight = 30 ParentFont = False TabOrder = 1 OnClick = apply_vertical_gradient1Click 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 ParentFont = False TabOrder = 2 OnClick = apply_vertical_gradient1Click end end object GroupBox11: TGroupBox Left = 792 Height = 400 Top = 8 Width = 377 Caption = 'Colour replace' ClientHeight = 380 ClientWidth = 373 ParentBackground = False TabOrder = 7 object HueRadioButton1: TRadioButton Left = 8 Height = 19 Hint = 'Click on the image in the viewer to select a colour' Top = 46 Width = 74 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 = 79 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 = 104 Height = 25 Hint = 'Add noise to the image in the viewer' Top = 347 Width = 184 AutoSize = True Caption = 'Apply' Constraints.MinWidth = 184 ParentFont = False TabOrder = 2 OnClick = apply_hue1Click 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 = 304 Height = 30 Hint = 'Undo last action' Top = 347 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' ) ParentFont = False Style = csDropDownList TabOrder = 5 Text = '1x1' OnChange = resize_factor1Change 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 = 328 Height = 25 Hint = 'Unselect area. If unselected the colours in whole image will be replaced.' Top = 144 Width = 35 Caption = '⍻' TabOrder = 8 OnClick = unselect_area1Click 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 = 9 end object new_colour_luminance1: TTrackBar Left = 152 Height = 39 Hint = 'New luminance [0..200%]' Top = 272 Width = 96 LineSize = 5 Max = 200 OnChange = new_colour_luminance1Change PageSize = 5 Position = 100 TickStyle = tsNone TabOrder = 10 end object blend1: TCheckBox Left = 120 Height = 19 Hint = 'This option on allows the removal of coloured hot pixels and streaks ' Top = 208 Width = 180 Caption = 'Blend in with the surroundings' Checked = True State = cbChecked TabOrder = 11 OnChange = blend1Change end end object most_right14: TStaticText Left = 1560 Height = 16 Top = 8 Width = 3 AutoSize = True Caption = '|' TabOrder = 8 Visible = False end object GroupBox22: TGroupBox Left = 1176 Height = 280 Top = 128 Width = 375 Caption = 'Unsharp mask' ClientHeight = 260 ClientWidth = 371 ParentBackground = False TabOrder = 9 object unsharp_amount1: TTrackBar Left = 0 Height = 39 Hint = 'Amount of unsharp mask which is subtracted from the image in the viewer.' Top = 43 Width = 216 LineSize = 5 Max = 990 OnChange = unsharp_amount1Change PageSize = 5 Position = 500 TickStyle = tsNone TabOrder = 0 end object Label7: TLabel Left = 28 Height = 15 Top = 16 Width = 47 Alignment = taRightJustify Caption = 'Amount:' ParentColor = False end object unsharp_radius1: TTrackBar Left = 0 Height = 39 Hint = 'Radius of the Gaussian blur' Top = 122 Width = 216 LineSize = 5 Max = 30 Min = 1 OnChange = unsharp_radius1Change PageSize = 5 Position = 8 TickStyle = tsNone TabOrder = 1 end object Label37: TLabel Left = 37 Height = 15 Top = 97 Width = 38 Alignment = taRightJustify Caption = 'Radius:' ParentColor = False end object unsharp_edit_amount1: TEdit Left = 88 Height = 23 Hint = 'Amount of unsharp mask which is subtracted from the image in the viewer.' Top = 16 Width = 60 TabOrder = 2 Text = '50' OnChange = unsharp_edit_amount1Change end object unsharp_edit_radius1: TEdit Left = 88 Height = 23 Hint = 'Radius of the Gaussian blur' Top = 96 Width = 60 TabOrder = 3 Text = '0.8' OnChange = unsharp_edit_radius1Change end object Label66: TLabel Left = 168 Height = 15 Top = 16 Width = 10 Caption = '%' ParentColor = False end object Label69: TLabel Left = 168 Height = 15 Top = 98 Width = 30 Caption = 'Pixels' ParentColor = False end object undo_button22: TBitBtn Left = 272 Height = 30 Hint = 'Undo last action' Top = 152 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 apply_unsharp_mask1: TButton Left = 272 Height = 25 Hint = 'Apply unsharp mask. Zoom in to see the difference.' Top = 197 Width = 75 Caption = 'Apply' TabOrder = 5 OnClick = apply_unsharp_mask1Click end object unsharp_threshold1: TTrackBar Left = 0 Height = 39 Hint = 'This will keep the background noise untouched. Expressed in standard deviation of background noise. Set at 2 or 3 σ.' Top = 202 Width = 216 LineSize = 5 Max = 40 OnChange = unsharp_threshold1Change PageSize = 5 Position = 20 TickStyle = tsNone TabOrder = 6 end object Label70: TLabel Left = 20 Height = 15 Top = 176 Width = 55 Alignment = taRightJustify Caption = 'Threshold:' ParentColor = False end object unsharp_edit_threshold1: TEdit Left = 88 Height = 23 Hint = 'This will keep the background noise untouched. Expressed in standard deviation of background noise. Set at 2 or 3 σ.' Top = 176 Width = 60 TabOrder = 7 Text = '2' OnChange = unsharp_edit_threshold1Change end object Label71: TLabel Left = 168 Height = 15 Top = 176 Width = 7 Caption = 'σ' ParentColor = False end end end object tab_Pixelmath2: TTabSheet Hint = 'Pixel math tools 2' Caption = 'Pixel math 2' ClientHeight = 472 ClientWidth = 1912 Enabled = False ImageIndex = 4 OnShow = tab_Pixelmath2Show object groupBox_dvp1: TGroupBox Left = 8 Height = 296 Top = 8 Width = 265 Caption = 'Digital development process' ClientHeight = 276 ClientWidth = 261 ParentBackground = False ParentFont = False TabOrder = 0 object Label29: TLabel Left = 8 Height = 15 Top = 16 Width = 164 Caption = 'Yij = k [ a * Xij / ({Xij} + a ) ] + b' ParentColor = False ParentFont = False end object Label31: TLabel Left = 48 Height = 15 Top = 109 Width = 17 Alignment = taRightJustify Caption = 'a =' ParentColor = False ParentFont = 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 =' ParentColor = False ParentFont = False end object Label34: TLabel Left = 32 Height = 15 Top = 53 Width = 22 Alignment = taRightJustify Caption = '{ } =' ParentColor = False ParentFont = False end object apply_dpp_button1: TButton Left = 8 Height = 30 Top = 216 Width = 184 Caption = 'Apply' ParentFont = False TabOrder = 8 OnClick = apply_dpp_button1Click 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 = 97 Height = 23 Hint = 'Background value' Top = 180 Width = 69 ParentFont = False TabOrder = 5 Text = '0' OnClick = edit_background1Click 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 = 47 Caption = 'None' Checked = True ParentFont = False TabOrder = 0 TabStop = True end object ddp_filter2: TRadioButton Left = 71 Height = 19 Top = 73 Width = 89 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 = 44 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 = 32767 Min = 0 OnClick = UpDown1Click Position = 0 TabOrder = 6 Thousands = False 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 = 152 Width = 256 Caption = 'Add noise' ClientHeight = 84 ClientWidth = 252 ParentBackground = False 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' ParentFont = False TabOrder = 0 OnClick = add_noise1Click 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 = 111 Caption = 'Add 3σ bias value' ParentFont = False TabOrder = 2 end end object GroupBox_test_images1: TGroupBox Left = 776 Height = 120 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 = 100 ClientWidth = 251 ParentBackground = False ParentFont = False TabOrder = 2 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' ParentFont = False TabOrder = 0 OnClick = create_test_image_stars1Click 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 = 129 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' ) ParentFont = False TabOrder = 1 Text = '2.5' OnChange = resize_factor1Change end object donutstars1: TCheckBox Left = 8 Height = 19 Top = 64 Width = 78 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 ParentBackground = False ParentFont = False TabOrder = 3 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' ParentFont = False TabOrder = 1 OnClick = apply_get_background1Click 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' ) ParentFont = False TabOrder = 0 Text = '20' OnChange = resize_factor1Change end end object GroupBox4: TGroupBox Left = 288 Height = 60 Top = 74 Width = 212 Caption = 'Gaussian blur' ClientHeight = 40 ClientWidth = 208 ParentBackground = False ParentFont = False TabOrder = 4 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' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 OnClick = apply_gaussian_blur_button1Click end object blur_factor1: TComboBox Left = 6 Height = 23 Top = 3 Width = 63 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '0.5 ' '0.6' '0.7' '0.8' '2' '5' '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 ParentBackground = False ParentFont = False TabOrder = 5 object add_substract1: TComboBox Left = 87 Height = 23 Hint = 'Add or subtract files.' Top = 32 Width = 197 ItemHeight = 15 Items.Strings = ( 'Add file to view' 'Subtract file from view' 'Subtract file from view +1000' 'Subtract file scaled from view' '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' ParentFont = False TabOrder = 1 OnClick = apply_file1Click 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 ParentBackground = False ParentFont = False TabOrder = 6 object splitRGB1: TButton Left = 7 Height = 30 Hint = 'This will make three separate files' Top = 1 Width = 184 Caption = 'Split in R, G, B' ParentFont = False TabOrder = 0 OnClick = splitRGB1Click end end object GroupBox10: TGroupBox Left = 288 Height = 64 Top = 288 Width = 426 Caption = 'Resize current viewer image' ClientHeight = 44 ClientWidth = 422 ParentBackground = False ParentFont = False TabOrder = 7 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' ParentFont = False TabOrder = 3 OnClick = free_resize_fits1Click end object Edit_width1: TEdit Left = 92 Height = 23 Hint = 'Width' Top = 5 Width = 56 ParentFont = False TabOrder = 1 Text = '300' OnChange = Edit_width1Change 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' '' '' ) ParentFont = False TabOrder = 0 Text = '0.5' OnChange = resize_factor1Change end object new_height1: TLabel Left = 200 Height = 15 Top = 8 Width = 24 Caption = '1080' ParentColor = False end object new_height2: TLabel Left = 176 Height = 15 Top = 8 Width = 6 Caption = 'x' ParentColor = 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 ParentBackground = False TabOrder = 8 object Label24: TLabel Left = 8 Height = 40 Top = 4 Width = 130 Alignment = taRightJustify AutoSize = False Caption = 'Telescope focal length [mm]' Constraints.MaxHeight = 40 Constraints.MaxWidth = 130 Constraints.MinHeight = 40 ParentColor = False ParentFont = False WordWrap = True end object focallength1: TEdit Left = 144 Height = 23 Hint = 'Focal length of telescope used in mm.' Top = 8 Width = 48 BorderSpacing.Around = 5 ParentFont = False TabOrder = 0 Text = '500' OnExit = focallength1Exit end object Label23: TLabel Left = 8 Height = 40 Top = 48 Width = 130 Alignment = taRightJustify AutoSize = False Caption = 'Sensor pixel size after binning [µm]' Constraints.MaxHeight = 40 Constraints.MaxWidth = 130 Constraints.MinHeight = 40 ParentColor = False ParentFont = False WordWrap = True end object pixelsize1: TEdit Left = 144 Height = 23 Hint = 'The image sensor pixel size in micrometer after binning.' Top = 48 Width = 48 BorderSpacing.Around = 5 ParentFont = False TabOrder = 1 Text = '5' OnChange = pixelsize1Change OnExit = focallength1Exit end object calculated_scale1: TLabel Left = 252 Height = 15 Hint = 'Arcseconds per pixel' Top = 53 Width = 15 BorderSpacing.Around = 5 Caption = '0.0' ParentColor = False end object scale_calc1: TLabel Left = 252 Height = 15 Hint = 'Image dimensions in degrees' Top = 27 Width = 42 Caption = '0.0 x 0.0' ParentColor = False end object Label28: TLabel Left = 208 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 = 104 Width = 30 Caption = '------' ParentColor = False end object calculated_sensor_size1: TLabel Left = 252 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 = 287 Height = 56 Top = 352 Width = 225 Caption = 'Binning' ClientHeight = 36 ClientWidth = 221 ParentBackground = False TabOrder = 9 object bin_factor1: TComboBox Left = 8 Height = 23 Hint = 'Bin current image in the viewer. Noise will be reduced.' Top = 5 Width = 62 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '2x2' '3x3' '4x4' ) ParentFont = False Style = csDropDownList TabOrder = 0 Text = '2x2' OnChange = resize_factor1Change 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 = 81 Height = 28 Hint = 'Bin current image in the viewer. Noise will be reduced.' Top = 5 Width = 97 Caption = 'Apply' ParentFont = False TabOrder = 2 OnClick = bin_image1Click end object undo_button21: TBitBtn Left = 184 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 = 3 end end object GroupBox8: TGroupBox Left = 288 Height = 60 Top = 136 Width = 212 Caption = 'Box blur filter' ClientHeight = 40 ClientWidth = 208 ParentBackground = False ParentFont = False TabOrder = 10 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' ParentFont = False TabOrder = 1 OnClick = apply_box_filter2Click end object box_blur_factor1: TComboBox Left = 6 Height = 23 Hint = 'Factor of bluring' Top = 4 Width = 63 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( '2x2' '3x3' '4x4' '5x5' '6x6' '7x7' '8x8' '9x9' '10x10' ) ParentFont = False Style = csDropDownList TabOrder = 2 Text = '2x2' end end object GroupBox18: TGroupBox Left = 776 Height = 64 Top = 264 Width = 256 Caption = 'Remove stars' ClientHeight = 44 ClientWidth = 252 ParentBackground = False ParentFont = False TabOrder = 11 object remove_stars1: TBitBtn Left = 128 Height = 30 Top = 0 Width = 77 Caption = 'Apply' Images = ImageList2 ImageIndex = 27 OnClick = remove_stars1Click TabOrder = 0 end object undo_button17: TBitBtn Left = 217 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 = 1 end end object GroupBox19: TGroupBox Left = 775 Height = 64 Top = 336 Width = 256 Caption = 'Increase nebulosity signal' ClientHeight = 44 ClientWidth = 252 ParentBackground = False ParentFont = False TabOrder = 12 object increase_nebulosity1: TBitBtn Left = 128 Height = 30 Hint = 'To the image an copy will be added with the stars removed to increase nebulosity signal. An internet connection is required for downloading Gaia stars. '#13#10#13#10'This could be used for stacking. E.g. to increase the OIII nebulosity signal. Note the background noise will also increase.' Top = 0 Width = 77 Caption = 'Apply' Images = ImageList2 ImageIndex = 27 OnClick = remove_stars1Click TabOrder = 0 end object undo_button18: TBitBtn Left = 217 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 = 1 end object UpDown_nebulosity1: TUpDown Left = 88 Height = 23 Hint = 'Factor to increase the nebulosity signal' Top = 5 Width = 17 Associate = increase_nebulosity3 Increment = 10 Max = 20 Min = 1 Position = 3 TabOrder = 2 end object increase_nebulosity3: TEdit Left = 32 Height = 23 Hint = 'Factor to increase the nebulosity signal' Top = 5 Width = 56 ParentFont = False TabOrder = 3 Text = '3' OnChange = Edit_width1Change end end object GroupBox14: TGroupBox Left = 512 Height = 112 Hint = 'Artificial colouring of H-alpha images. Clouds will be made red. Stars white.' Top = 80 Width = 200 Caption = 'Artificial colouring' ClientHeight = 92 ClientWidth = 196 ParentBackground = False ParentFont = False TabOrder = 13 object colournebula1: TButton Left = 7 Height = 30 Top = 53 Width = 136 Caption = 'Colour nebula' ParentFont = False TabOrder = 0 OnClick = colournebula1Click end object star_level_colouring1: TComboBox Left = 8 Height = 23 Hint = 'Star level above background' Top = 21 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 = 21 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 = 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 = 3 end end object GroupBox20: TGroupBox Left = 528 Height = 56 Top = 352 Width = 186 Caption = 'Normalise raw OSC image' ClientHeight = 36 ClientWidth = 182 ParentBackground = False TabOrder = 14 object undo_button19: 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 = 0 end object bin_image2: TButton Left = 296 Height = 30 Hint = 'Bin current image in the viewer. Noise will be reduced.' Top = 5 Width = 80 Caption = 'Apply' ParentFont = False TabOrder = 1 OnClick = bin_image1Click end object test_osc_normalise_filter2: TButton Left = 8 Height = 25 Hint = 'Normalise flux of RGGB pixels as if the received light was white and all pixels have the same sensitivity. Preferable after dark has been applied. Use CTRL-Z to undo.' Top = 5 Width = 80 AutoSize = True Caption = 'Normalise' ParentFont = False TabOrder = 2 OnClick = test_osc_normalise_filter1Click end object undo_button20: TBitBtn Left = 145 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 = 3 end end object GroupBox21: TGroupBox Left = 1047 Height = 216 Top = 184 Width = 337 Caption = 'Satellite streak detection' ClientHeight = 196 ClientWidth = 333 ParentBackground = False TabOrder = 15 object contour_gaussian1: TComboBox Left = 32 Height = 23 Hint = 'Smoothens noise and improves contour detection' Top = 16 Width = 63 ItemHeight = 15 ItemIndex = 5 Items.Strings = ( '0' '0.5 ' '0.6' '0.7' '0.8' '1' '1.5' '2' '3' '4' '5' ) ParentFont = False TabOrder = 0 Text = '1' OnChange = contour_gaussian1Change end object label_gaussian1: TLabel Left = 105 Height = 15 Top = 16 Width = 71 Caption = 'Gaussian blur' ParentColor = False end object contour_sigma1: TComboBox Left = 32 Height = 23 Hint = 'Standard deviation above noise. Typical values 2 to 3.' Top = 56 Width = 64 ItemHeight = 15 Items.Strings = ( '1.5' '1.8' '2' '2.5' '3' '4' '5' ) ParentFont = False TabOrder = 1 Text = '2.0' end object Label39: TLabel Left = 105 Height = 15 Top = 56 Width = 87 Caption = 'σ detection level' ParentColor = False end object ClearButton1: TButton Left = 232 Height = 30 Hint = 'Clear' Top = 152 Width = 75 Caption = 'Clear' TabOrder = 2 OnClick = ClearButton1Click end object detect_contour1: TBitBtn Left = 24 Height = 30 Hint = 'Detect object contours and write streak formula to header' Top = 152 Width = 77 Caption = 'Detect' Images = ImageList2 ImageIndex = 27 OnClick = detect_contour1Click TabOrder = 3 end object detection_grid1: TComboBox Left = 32 Height = 23 Hint = 'Distance between vertical and horizontal grid lines in pixels. Will only test at the grid lines to speed up.' Top = 96 Width = 64 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( '200' '400' '600' ) ParentFont = False TabOrder = 4 Text = '400' end object Label40: TLabel Left = 105 Height = 15 Top = 96 Width = 75 Caption = 'Detection grid' ParentColor = False end end object most_right15: TStaticText Left = 1392 Height = 16 Top = 8 Width = 3 AutoSize = True Caption = '|' TabOrder = 16 Visible = False end end end end object PairSplitterSide2: TPairSplitterSide Cursor = crArrow Left = 0 Height = 185 Top = 505 Width = 1920 ClientWidth = 1920 ClientHeight = 185 object memo2: TMemo Left = 0 Height = 91 Top = 94 Width = 1920 Align = alBottom Anchors = [akTop, akLeft, akBottom] DoubleBuffered = True Font.CharSet = ANSI_CHARSET Font.Name = 'Courier New' Font.Pitch = fpFixed Font.Quality = fqDraft Lines.Strings = ( '' ) ParentDoubleBuffered = False ParentFont = False ScrollBars = ssVertical TabOrder = 0 end object Panel_stack_button1: TPanel Left = 0 Height = 94 Top = 0 Width = 1920 Align = alClient ClientHeight = 94 ClientWidth = 1920 ParentBackground = False TabOrder = 1 object stack_button1: TBitBtn Left = 24 Height = 41 Hint = 'Stack check marked images using darks, flats and flat dark frames.' Top = 8 Width = 260 Caption = 'Stack check marked images' OnClick = stack_button1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 0 end object press_esc_to_abort1: TLabel Left = 288 Height = 15 Hint = 'Hit ESC key or click on this text to stop.' Top = 8 Width = 98 Caption = 'Press ESC to abort.' Color = clForm ParentColor = False ParentShowHint = False ShowHint = True Transparent = False OnClick = press_esc_to_abort1Click end object classify_groupbox1: TGroupBox Left = 427 Height = 60 Top = 0 Width = 632 Caption = 'Classify by' ClientHeight = 40 ClientWidth = 628 ParentBackground = False ParentFont = False TabOrder = 1 object classify_filter1: TCheckBox Left = 72 Height = 19 Hint = 'Activate this option if you want to stack LRGB or RGB images using filter name. Set filter names in stack method' Top = -2 Width = 72 Caption = 'Light filter' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 0 OnClick = classify_filter1Click end object classify_object1: TCheckBox Left = 72 Height = 19 Hint = 'Activate this option if you want to stack images of different objects in one run.' Top = 16 Width = 81 Caption = 'Light object' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 end object classify_flat_filter1: TCheckBox Left = 384 Height = 19 Hint = 'Activate this option if you want link the flats based on filter name.' Top = 16 Width = 64 Caption = 'Flat filter' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 end object classify_dark_exposure1: TCheckBox Left = 208 Height = 19 Hint = 'Activate this option if you want link the darks based on exposure duration.' Top = -2 Width = 120 Caption = 'Dark exposure time' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 end object classify_dark_temperature1: TCheckBox Left = 384 Height = 19 Hint = 'Activate this option if you want link the darks based on sensor temperature.' Top = -2 Width = 110 Caption = 'Dark temperature' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 3 OnChange = classify_dark_temperature1Change end object classify_dark_gain1: TCheckBox Left = 208 Height = 19 Top = 16 Width = 68 Caption = 'Dark gain' TabOrder = 5 end object delta_temp1: TEdit Left = 536 Height = 23 Hint = 'Temperature tolorance' Top = -2 Width = 30 ParentShowHint = False ShowHint = True TabOrder = 6 Text = '3' end object delta_temp_updown1: TUpDown Left = 566 Height = 23 Top = -2 Width = 17 Associate = delta_temp1 Max = 5 Min = 1 Position = 3 TabOrder = 7 end object Label60: TLabel Left = 584 Height = 15 Top = 0 Width = 13 Caption = '°C' ParentColor = False end object Label63: TLabel Left = 520 Height = 15 Top = 0 Width = 8 Caption = '±' ParentColor = False end end object help_stack_menu2: TLabel Cursor = crHandPoint Left = 1088 Height = 30 Hint = 'Help' Top = 14 Width = 9 Caption = '?' Font.Color = clBlue Font.Height = -21 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True OnClick = help_stack_menu1Click end object powerdown_enabled1: TCheckBox Left = 1131 Height = 19 Hint = 'If selected, shutdown computer after completion.' Top = 8 Width = 175 Caption = 'Power down after completion' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 end object write_log1: TCheckBox Left = 1131 Height = 19 Hint = 'Write the stack log to a file with .txt extension at the light directory.' Top = 32 Width = 115 Caption = 'Write stack log file' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 3 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 = { 4C7A1F00000010000000100000001E0700000000000078DAED5CDB4E153D14E6 51FE47F18A17402E848040624039A880220909202A180E9210F5061220846838 4494A3918478E1052FE08537BEC9F2FF1A4B86A1EDACD576CF6CA1DD59A1D3E9 B7D6D7D5D5616675EF696C6CA4C69C34088AA9BF4487AD2F5747A3813F57A45C 6DB66B89779DAF577C91CFAFFBF8CB8E9FC0357023E4E7CF9F3766ACD75D7EFD FA95FC1049262626AEC8D9D999514C7DB9D8221DA6BEBA70F4E431B662C273B1 261D26BE5CBC6DBC3E7869898DAF6AFCA1F317237E62C46FE8FAF15DBFE91A98 24C98D96524BEEDA23C6E6AF6726BDAEEBA2C93EE7BA6BB2691B97D47E8CF197 E17F8E4EA964C7E5F3B71678D39CBB6241123F367C88FF62967BF7EED1FDFBF7 A9BBBB5B496F6F2FA1AD08F7F0E143821C1E1ED2FBF7EF69656585BE7FFF4EFD FDFD74F7EE5DA5E7E9D3A7463D9D9D9DF4ECD9337AF3E60D7DFCF891B6B6B6E8 D3A74F74727242EFDEBD5375E81C1C1C34E2DBDADAE8D5AB57B4BABA4A1B1B1B F4E1C307DADEDE56B8A3A323FAFAF5ABE2D5DEDEAE248BC5F1D0D0108D8E8E2A CEEBEBEBB4B9B9A978ECEEEED2E7CF9F15F6DBB76F8AC3F3E7CF696060E04247 474787C2F6F4F4A8F90087A5A5257AFCF8318D8C8CD0DADA1AEDEFEFD3F1F131 9D9E9E2A5D4F9E3C21E0B48E478F1E299DF0F7DCDC1CB5B4B450535393BA3E77 7575D1F2F2B2C2611C185F761CF01DF83F78F040E15FBE7C49B76FDFBEC0C3F7 38F7E5CB970B0E0B0B0B176300065C3177A8CFCECE2ADD1A0F810DF8537340EC 8E8F8F5FF20138000FBD98C73B77EE507373B3C2C33EF0F0C38F1F3F14C7ECF8 51C7FCEB981B1B1B537E000FE8999E9EA69D9D1DDADBDB53FCA11F71353333A3 74C047F03FFCAA75E078787858C50CEC03031DE0707070A0CE65E3007ED2E340 BC9BA4AFAF8FDEBE7D4B982F531C8207E61CBAC125BB8E20F0F1E2E2A26ACFC6 507E2D687F602E606B727252C516FC3235357525866D7AC007E3820FC01FF57C 3FEEB5CA66C7758ED3277BCE759DB471C9E3A55C6C782E17179EC325E1C3F1A6 FBA198B120C14BEECD6ABDAE7CD775C83D86A9BF498FAD1F47B78D1787AB6B5C 1CFB457E913C1F48F0F55EB8BCB9F1513407B19E3D42EDC7187FD5F3560F222D 55E0B37DA5F87C5F09DED4CF8437E9B2D970E16DC71CFF71E7D6D587E397221B 129FD643FC5525788EAB079196844FF8EB84AF6CDD355CFE2057F0E2C50B954F D3827C0D7277F9BEF94F6B6BABCAC920D79217E473909328C2BF7EFD5AF5CFB6 235F353F3FAF7218790CC6009B5AD01778D4C11DB923CD01BA753FE4F180479F 3C57ADC3760C416E0678E4759017423E07F91DE4A5742ED455470E283B0EF0D1 3A91E30157D4C11F7C51471B8E4DBED37ED7FD741D7E83A08E365DCF7FB49FF2 BA306F10AD4BD713DE8EC73C9AFC8F38B2E16DEBC6B48E4CF8FC3AB00962AB68 1D877E38D719174E7A4E9FE7DAF06DB39DB3E15D6329B253E43FDDC6C5DB384B F026DE65D997FA90EBFF18F31F1A7F31E2DF77FDC5C8FF9FADFEE7162EDE33FF 9FC5DFFA7DCB295CBC24FF6FC34F74FC764AC247C267E6468ACFC74228FED277 ED84F8BCAE507CC8BA8EBD2760CA7F70F3AC523CCE61AF17E2F3BD892C3EAB47 6A3B8FCDE7D67C6CBB3898B0363FE8762EDEA6D3179BB5ED83CDC686141B32EE 86FF9F8D5D7B18129FB9E2DE36773EEBD565B716F7FE319E1D623C7BC4787629 EBD9A7E8BE3BE4DE4FA2C327675496FD2AFC5F55FCD5D3FA0B7D864FF8844FF8 7F032FBD96B9EC71AEC5D9F6A27C912D0FE5F3FF29E47AEFE22CE510FA7FB2EA FBAC1878A92EDB1C96F13FAE288E7DCFC7BA7F0ABD8F317E7FC313C7D553D487 7B9EC3CF07EBEA7BD3F1A1FE8F31FFDCF893F034F597AE09DFB194A5A3D6FB80 319E57439F4743F61B6BB95FC9C5FBDA90DE7B49F7FFCAB65F85FFCBCC55951D FB590E21DF1FAE37BCF68B0FDE56E7E04DFD393A8AF816E9A8F579571FAEAF5D BE91FA39F63CF9C64A3DC57F8848F60E397C5CBFA1E2EC5716F5B771B161397A 6DBC4CBF0734E9777134E15C7E7571B1ED374B7E37E61A93CBBF5C7C884F25BF CF2B9A03E9EFFBA431258D4B573C727948D660C85EBFA3F8BE33248BA308F628 024F0AC051245C8CB1F89E73F593CE1759B84ADE33E39A0FDF986BF08CBB503C 31EAB5C293E418EF16A80741A945DF10CCBFE4131746B755E183AAFC5EB65DAE BD7A8BC3C6F4FEEFF4FEEFC8F8F4FEEF72E327B6A4F55F3FEB3FE113BE96EB3F 424EA0E1FCFC9C7C45E35DBA6D9B17091F0F1F3C7F0536ACDC123E0A3E64FE52 092BAEFD94A2369FFD392E9EB3E75584378D8B8397604C768AF0D27DDE54E405 EFA8901C17E9B0D5B93AF27FCB18BF96BCFD6CBB4457080FA9EF4D58C91CC4B4 2B8D9998BE4AD8DA9638F7FF6414F6FD53C207E16BFAFCC6E29FF021F82AEFFF 53FCDCECF829B261BB38257C3CBCAFC479FFFF5F4A7F3FBA41B773F1DEEFFFFF FBF1E162C3CBDEFF9FD1EDE0923F8E86B7F0BFE283DC71347CC5E3BFFCCE7D19 7F572CFAE04D5C5CFC25EB4A8AE7C81FBA6B529C } 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 AutoCheck = True Caption = 'Change keyword last column' Hint = 'Change the key listed in this column' RadioItem = True OnClick = keywordchangelast1Click end object column_fov1: TMenuItem AutoCheck = True Caption = 'FOV' Hint = 'This value is calculated if the images are batch solved (in viewer menu tools).' RadioItem = True OnClick = column_fov1Click end object column_sqm1: TMenuItem AutoCheck = True Caption = 'SQM' Hint = 'This key is available if the images are batch solved (in viewer menu tools) with option add SQM.' RadioItem = True OnClick = column_sqm1Click end object column_lim_magn1: TMenuItem Caption = 'LIM_MAGN' Hint = 'This keyword is available if the images are batch solved (in viewer menu tools) with option add limiting magnitude.' RadioItem = True OnClick = column_lim_magn1Click 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 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 MenuItem14: TMenuItem Caption = 'Refresh astrometrical solutions of selected files' Hint = 'Refresh astrometrical solutions of selected files' OnClick = MenuItem14Click end object Separator5: 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 = { 4C7A1A0000001000000010000000790500000000000078DAED9A7F6C136518C7 DF0C90C13644891B9A98484C8C99736159B60C340ACE95FD2AA3DD3A298CB1CD 4D46366743058404D62C0B01379718D1A8E8C4FDA1310634BA0494E89A74636C 6E8AC80091902831F80FD34C8CC1B17D7D8B57739E77D77BEFBDAD5BFBBECDB7 4DEFDECFFB3CF7BCCF7BF75CAF8480102121A19894CF478484846254E20C2824 14BBA2EF508A9E17540595CE8217BCE0672FEFF7FB89909050CC0A7A22619A5E 1F565E69DBE7F385F549C9B3FAABC56BC543CD271E5F04CFCFCBE7662A728185 57F3653AD64EB8D8985DDFD3D46EDD8E049BC9BEFFB9ADD119476F7FB8318CFA A83686D16353F5C5044FAC624D8CA17AFC1CB1331A7F43F3CFC9138EF12D5D2F 56D94194BE9A9B9BA1142B1B6E9B5196650C5E9ED77F1EBB3389B582B72A0767 B2FF53D99EDAF26CA2ABAE21BFB476EB2ED7732FBCE66CD876706DD5336E65BF FACD7971B515B66497B330DD51566ADBD0E0A9DBB2FF95E34D5D9FDCF0062EC1 73F12FD4FD00ACFF1E28EA3E8322F7A63A39DFEA7D6CE04847063A5B3250EDCE 43EBF0CF68F911D87E19A8BF04545C044ACE03B6A343B0ED7909F915351E39BF CFBBF2ADDF8E2FC1AFDD896869CAC6F6B36368A4DC66CA392F506E0458F11D90 F62D70DFF00456EEDC3F2AE76B2B729BAE1E49C0B5A37168DF968E9A0BE328A7 5CC139E0D1B3C072CADDFF0D7077FF9F78A8ED3DD8DC9557D7946F4C0BF11B5C B6C7FD2FDF855FDE2738B82B1D76EAEB2ACA659E011E380DDC330C247D05DC36 3089F8DE712CFD60044525EB3A437CB933FF8E57773C3879E530C19B7BD3B0E2 E428522977EFD7C0E221207E80B2FD94ED9BC4B237FCC8DAD18EFC32F7C94247 E9C2D018D5EB9FF8695F63FA656FED236D454FD7B52FFBE81C160C52EED424E6 536E4160020BFD1348FC720249276E2263CF21EA832327C4AFB5172F95C7E4C9 8DD51F279D18457C60128B3EFF1DD9CF1FE8CBF61EE8CBF1B48EACAE6A1C2870 BAF616AE2B8DD3CA9D024759F6C3AD8791D043ED7D7113D9DE173F64C9BDE2B5 257356D5348D2FA2BEDEFE59D0DFB7AFE7B9ABE7B08C4163F4C7E263E3B8B37B 9CF2EF0463966294B5DBED296B5C1558F26970BE4691BB69EB68A1A36C1E035F 49E38BDCCA06D0385D2B2A713A587CA77C025526D5F262BB7D7E046AFAE0B1BE 2B699E093E4B56936599E083733D24496FDEEBA9BAA894739B4C755D52B2625F 8AC404D91B928F1E459F3699FF6D8A7D1E697B90DD4D7585AA45C5768857FAD0 2231BBA5EF5552BFD7A9E62A6CCB7D982BF581C4845AAAAC9F5F615BEE835FF6 3D55C607D7F118C363A7318991B71E06BE47631E8F1954BD0A9F24CDAB1125A9 F01D0CFE77A8F0ABA97AA9FAC3A857EA4BA2A1FE57ABD3593515F5D54CA9F5CD DA301227569EE59EC26AFB9188FF74D5F791C8FDD06B707010BC529E5358B645 03AF120F55198DDFBF7FCD08B32D5A78ABE317EBF9C7B876ADF91B91AC050201 43DBB478A37634B643C73EC2F030E0FFFF9E3B84C60E7E1A919C918D0786F841 C5FF59CB5B143FD3F36761FE5891BF66D68F6989EB7F64CFBFB11E3FDEBC64A9 3574ECCF767E4AD6B5C85FB1FEC5FD53F4DF3F89FC15EB7FA6C74F2FA78DD8D2 5A53D1C0F3C64FE4AFA85F6773FD2ACE9F919588BFB87E45F2FA25F2CFFADFFF C5F54B5CBFC4FD536C5EFFC5EF2FE2F9B558FFA2FE17F5ABA85FC5FA8FF6FABF 2B82229C2CE16409274B3859C2C9124E9670B28493259C2CE16409274B3859C2 C9124E966A00E6453859C2C9124E9670B28493259C2CE16409274B3859C2C912 4E9670B28493259CAC053ADD99695ABE53848B35CB875833BC9C65E5952C0BAF C61AE5B55823BC1E1B8E0FC7EAF146582DDE28ABC6B3B04A9E9595F366D8106F 96B542393BCF0B0909C5A888058DF7B79B7F3ED5EB935BFB345E82B78EE79E3F 1D1B5ACE09DE3ADEACFE06B8000EFC } 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 blink_stack_selected1: TMenuItem Caption = 'Track and Stack all selected files for all annotations' Hint = 'Stack selected files aligned for each annotated object' ImageIndex = 6 OnClick = blink_stack_selected1Click end object Separator6: 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 sensitive pixels. Check in advance the de-mosaic pattern in stack menu, tab stack method.' ImageIndex = 25 OnClick = photom_green1Click end object photom_blue1: TMenuItem Caption = ' or extract Blue channel of selected raw files' Hint = 'For raw OSC images only. Not for images converted to colour. The routine will extract the blue sensitive pixels. Check in advance the de-mosaic pattern in stack menu, tab stack method.' ImageIndex = 29 OnClick = photom_green1Click end object photom_red1: TMenuItem Caption = ' or extract Red channel of selected raw files' Hint = 'For raw OSC images only. Not for images converted to colour. The routine will extract the red sensitive pixels. Check in advance the de-mosaic pattern in stack menu, tab stack method.' ImageIndex = 28 OnClick = photom_green1Click end object Separator3: TMenuItem Caption = '-' end object photometric_calibration1: TMenuItem Caption = 'Photometric calibration selected files' Hint = 'Photometric calibration and save it to the file header.' OnClick = photometric_calibration1Click end object Separator2: TMenuItem Caption = '-' 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 stack_groups1: TMenuItem Caption = 'Stack selected files in groups, mode average' ImageIndex = 6 OnClick = stack_groups1Click end object Separator1: TMenuItem Caption = '-' end object refresh_astrometric_solutions1: TMenuItem Caption = 'Refresh astrometrical solutions of selected files' 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.' OnClick = refresh_astrometric_solutions1Click end object Separator4: 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_2024.05.01.orig/unit_constellations.pas�������������������������������������������������������0000644�0001751�0001751�00000111435�14614535560�020311� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit 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_2024.05.01.orig/unit_live_stacking.pas��������������������������������������������������������0000644�0001751�0001751�00000051714�14614535560�020075� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_live_stacking; {Copyright (C) 2017, 2024 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(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;*.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;', 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_start_first)+#39);{give begin date exposures} update_float('JD-AVG =',' / Julian Day of the observation mid-point. ',false, jd_sum/counterL);{give midpoint of exposures} head.date_avg:=JdToDate(jd_sum/counterL); {update date_avg for asteroid annotation} update_text ('DATE-AVG=',#39+head.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 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(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,aa,bb,cc,dd,ee,ff : double; init, solution, 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; starlist1,starlist2 : star_list; rename_counter: integer=0; count : integer=0; img_average : image_array; 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_start_first:=1E99; {begin observations in Julian day} jd_end_last:=0;{end observations in Julian day} light_exposure:=987654321;{not done indication} light_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,500);{maximum star to process, if so filter out brightest stars later} {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<>'') and (bayerpat[1]<>'N') {ZWO NONE}) then //auto process as OSC images if ((head.naxis3=1) and (head.Xbinning=1) and (bayerpat<>'') and (bayerpat[1]<>'N') {ZWO NONE}) 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,head);{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; height_max:=head.height; setlength(img_average,head.naxis3,height_max,width_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,fitsY,fitsX]:=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.date_avg,head.exposure);{convert date-obs to jd} jd_start_first:=min(jd_start,jd_start_first);{find the begin date} jd_sum:=jd_sum+jd_mid;{sum julian days of images at midpoint head.exposure.} aa:=solution_vectorX[0]; bb:=solution_vectorX[1]; cc:=solution_vectorX[2]; dd:=solution_vectorY[0]; ee:=solution_vectorY[1]; ff:=solution_vectorY[2]; if colour_correction=false then {no colour correction} begin for fitsY:=0 to head.height-1 do {skip outside "bad" pixels if mosaic mode} for fitsX:=0 to head.width-1 do begin x_new:=round(aa*(fitsx)+bb*(fitsY)+cc); {correction x:=aX+bY+c x_new_float in image array range 0..head.width-1} y_new:=round(dd*(fitsx)+ee*(fitsY)+ff); {correction y:=aX+bY+c} 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,y_new,x_new]:=(img_average[col,y_new,x_new]*(counter-1)+ img_loaded[col,fitsY,fitsX])/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:=0 to head.height-1 do {skip outside "bad" pixels if mosaic mode} for fitsX:=0 to head.width-1 do begin x_new:=round(aa*(fitsx)+bb*(fitsY)+cc); {correction x:=aX+bY+c x_new_float in image array range 0..head.width-1} y_new:=round(dd*(fitsx)+ee*(fitsY)+ff); {correction y:=aX+bY+c} 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,fitsY,fitsX]; if dum<>0 then {signal} begin dum:=(dum+add_valueR)*multiply_red/largest; if dum<0 then dum:=0; img_average[0,y_new,x_new]:=(img_average[0,y_new,x_new]*(counter-1)+ dum)/counter; end; if head.naxis3>1 then {colour} begin dum:=img_loaded[1,fitsY,fitsX]; if dum<>0 then {signal} begin dum:=(dum+add_valueG)*multiply_green/largest; if dum<0 then dum:=0; img_average[1,y_new,x_new]:=(img_average[1,y_new,x_new]*(counter-1)+ dum)/counter;end; end; if head.naxis3>2 then {colour} begin dum:=img_loaded[2,fitsY,fitsX]; if dum<>0 then {signal} begin dum:=(dum+add_valueB)*multiply_blue/largest; if dum<0 then dum:=0; img_average[2,y_new,x_new]:=(img_average[2,y_new,x_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} if count=0 then live_stacking1.caption:=' ▶' else if count=1 then live_stacking1.caption:='▶ ' else if count=2 then live_stacking1.caption:=' ▶ '; inc(count); if count>2 then count:=0; 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_2024.05.01.orig/unit_listbox.lfm��������������������������������������������������������������0000644�0001751�0001751�00000003622�14614535560�016725� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object 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_2024.05.01.orig/astap_linux_pie.lpi�����������������������������������������������������������0000644�0001751�0001751�00000011777�14614535560�017406� 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 // 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_2024.05.01.orig/copyright.txt�����������������������������������������������������������������0000644�0001751�0001751�00000000424�14614535560�016250� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������{Copyright (C) 2017 by Han Kleijn, www.hnsky.org email: han.k.. at...hnsky.org The Source Code 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_2024.05.01.orig/astap_linux_aarch64_qt5.lpi���������������������������������������������������0000644�0001751�0001751�00000012634�14614535560�020643� 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"/> <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="977321217161" 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> <CodeGeneration> <TargetCPU Value="aarch64"/> <TargetOS Value="linux"/> </CodeGeneration> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> <RunWithoutDebug Value="True"/> <UseExternalDbgSyms Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <ConfigFile> <WriteConfigFilePath Value="$(ProjOutDir)\fpclaz.cfg"/> </ConfigFile> <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_2024.05.01.orig/unit_aavso.lfm����������������������������������������������������������������0000644�0001751�0001751�00000016411�14614535560�016352� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object form_aavso1: Tform_aavso1 Left = 177 Height = 452 Hint = 'Enter your geographic location manually for airmass calculation.' Top = 113 Width = 1385 Caption = 'AAVSO report' ClientHeight = 452 ClientWidth = 1385 OnClose = FormClose OnResize = FormResize OnShow = FormShow LCLVersion = '3.2.0.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 = 208 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 = 416 Width = 168 Caption = 'Report to clipboard' TabOrder = 1 OnClick = report_to_clipboard1Click end object Filter1: TComboBox Left = 16 Height = 23 Hint = 'The filter used for the observation.' Top = 256 Width = 208 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'Take from file header' 'CV (unfiltered)' 'TG (green filter or green of OSC)' 'V (Johnson-V)' ) ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 Text = 'Take from file header' end object Label6: TLabel Left = 240 Height = 15 Top = 256 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 Label2: TLabel Left = 16 Height = 15 Top = 376 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 = 304 Width = 88 ItemHeight = 15 ItemIndex = 0 Items.Strings = ( 'tab' ',' ';' '|' ) ParentFont = False ParentShowHint = False Style = csDropDownList TabOrder = 3 Text = 'tab' end object Label4: TLabel Left = 243 Height = 15 Top = 306 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 = 160 Width = 208 Enabled = False ParentShowHint = False ReadOnly = True ShowHint = True TabOrder = 4 Text = 'Gaia' end object Label5: TLabel Left = 243 Height = 15 Top = 160 Width = 92 Caption = 'Comparison stars' 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 = 416 Width = 168 Caption = 'Report to file' TabOrder = 5 OnClick = report_to_clipboard1Click 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 = 208 Width = 208 DropDownCount = 30 ItemHeight = 15 ParentFont = False ParentShowHint = False ShowHint = True Sorted = True TabOrder = 6 OnChange = name_check1Change OnDropDown = name_check1DropDown end object Image_photometry1: TImage Cursor = crCross Left = 400 Height = 452 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 = 344 Width = 68 Caption = 'BAA style' ParentShowHint = False ShowHint = True TabOrder = 7 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 both on the variable && 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 delta_bv1: TEdit Left = 16 Height = 23 Hint = 'Colour difference between variable and check star. This will be used for differential magnitude correction for variable star based on the slope. ' Top = 84 Width = 64 ParentShowHint = False ShowHint = True TabOrder = 8 Text = '0' OnChange = name_variable1Change end object Label9: TLabel Left = 88 Height = 15 Top = 84 Width = 43 Caption = '∆(b-v) ' ParentColor = False end object magnitude_slope1: TEdit Left = 16 Height = 23 Hint = 'Slope of magnitude difference caused by the colour difference between variable and check star. A differential correction will be applied on the variable magnitude in the final report. Enter here the slope found by pressing button "Transformation". ' Top = 112 Width = 64 ParentShowHint = False ShowHint = True TabOrder = 9 Text = '0' OnChange = name_variable1Change end object Label10: TLabel Left = 88 Height = 15 Top = 112 Width = 28 Caption = 'slope' ParentColor = False end object Label11: TLabel Left = 243 Height = 60 Top = 84 Width = 133 AutoSize = False Caption = 'Optional differential magnitude correction of the var.' ParentColor = False WordWrap = True end object name_variable1: TComboBox Left = 16 Height = 23 Hint = 'The star''s identifier. It can be the AAVSO Designation, the AAVSO Name or the AAVSO Unique Identifier. Limit: 30 characters.' Top = 48 Width = 208 DropDownCount = 30 ItemHeight = 15 ParentFont = False ParentShowHint = False ShowHint = True Sorted = True TabOrder = 10 OnChange = name_check1Change OnDropDown = name_variable1DropDown end object hjd1: TCheckBox Left = 116 Height = 19 Hint = 'Report the date as Heliocentric Julian Day' Top = 344 Width = 39 Caption = 'HJD' ParentShowHint = False ShowHint = True TabOrder = 11 OnChange = hjd1Change 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_2024.05.01.orig/unit_contour.pas��������������������������������������������������������������0000644�0001751�0001751�00000041245�14614535560�016742� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_contour;// Moore Neighbor Contour Tracing Algorithm {Copyright (C) 2023 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,forms,math,controls,lclintf,fpcanvas, astap_main; procedure contour( plot : boolean;img : image_array; var head: theader; blur, sigmafactor : double);//find contour and satellite lines in an image function line_distance(fitsX,fitsY,slope,intercept: double) : double; procedure trendline_without_outliers(xylist: star_list; len{length xylist} : integer; out slope, intercept,sd: double);//find linear trendline Y = magnitude_slope*X + intercept. Remove outliers in step 2 //procedure add_to_storage;//add streaks to storage //procedure clear_storage;//clear streak storage type streak =record slope : double; intercept : double; end; var streak_lines : array of streak; // storage for streaks of one image nr_streak_lines : integer; implementation uses unit_stack,unit_gaussian_blur,unit_astrometric_solving; procedure draw_streak_line(slope,intercept: double);//draw line y = slope * x + intercept var x,y, x1,y1,x2,y2: double; w,h : integer; flipV,fliph : boolean; begin with mainwindow do begin Flipv:=mainwindow.flip_vertical1.Checked; Fliph:=mainwindow.Flip_horizontal1.Checked; w:=image1.Canvas.Width-1; h:=image1.Canvas.height-1; end; //start point line x1:=0; y1:=intercept; if y1>h then begin y1:=h; x1:=(h-intercept)/slope; end else if y1<0 then begin y1:=0; x1:=(-intercept)/slope; end; //end point line x2:=w-1; y2:=slope*(w-1)+intercept; if y2>h then begin y2:=h; x2:=(h-intercept)/slope; end else if y2<0 then begin y2:=0; x2:=(-intercept)/slope; end; //draw if Fliph then begin x1:=w-x1; x2:=w-x2; end; if Flipv=false then begin y1:=h-y1; y2:=h-y2; end; mainwindow.image1.Canvas.MoveTo(round(x1),round(y1)); mainwindow.image1.Canvas.lineTo(round(x2),round(y2)); end; function line_distance(fitsX,fitsY,slope,intercept: double) : double; begin //y:=ax+c => 0=by+ax+c //0:=-y+ax+c and b=-1 //distance:=abs(a.fitsX+b.fitsY+c)/sqrt(sqr(a)+sqr(b)) See https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line result:=abs(slope*fitsX -fitsY + intercept)/sqrt(sqr(slope)+1); end; procedure trendline(xylist: star_list; len{length xylist} : integer; out slope, intercept:double); //find linear trendline Y = magnitude_slope*X + intercept var //idea from https://stackoverflow.com/questions/43224/how-do-i-calculate-a-trendline-for-a-graph sumX,sumX2,sumY, sumXY,median,mad : double; count, i : integer; median_array : array of double; begin count:=0; sumX:=0; sumX2:=0; sumY:=0; sumXY:=0; for i:=0 to len-1 do begin inc(count); //memo2_message(#9+floattostr(xylist[0,i])+#9+floattostr(xylist[1,i])); sumX:=sumX+xylist[0,i]; //sum X= sum B_V values = sum star colours; sumX2:=sumx2+sqr(xylist[0,i]); sumY:=sumY+xylist[1,i]; //sum Y, sum delta magnitudes; sumXY:=sumXY+xylist[0,i]*xylist[1,i]; end; Slope:=(count*sumXY - sumX*sumY) / (count*sumX2 - sqr(sumX)); // b = (n*Σ(xy) - ΣxΣy) / (n*Σ(x^2) - (Σx)^2) Intercept:= (sumY - Slope * sumX)/count; // a = (Σy - bΣx)/n end; procedure trendline_without_outliers(xylist: star_list; len{length xylist} : integer; out slope, intercept,sd: double);//find linear trendline Y = magnitude_slope*X + intercept. Remove outliers in step 2 var e : double; xylist2 : star_list; counter,i : integer; begin trendline(xylist, len{length xylist}, {out} slope, intercept); // find standard deviation sd:=0; for i:=0 to len-1 do sd:=sd + sqr(slope*xylist[0,i] - xylist[1,i] + intercept)/(sqr(slope)+1);// sum the sqr line distance. Note the line distance is abs(slope*fitsX -fitsY + intercept)/sqrt(sqr(slope)+1), See https://en.wikipedia.org/wiki/Distance_from_a_point_to_a_line sd:=sqrt(sd/len); //sd //calculate the trendline but ignore outliers in Y (b-v) setlength(xylist2,2,len); counter:=0; for i:=0 to len-1 do begin e:=abs(xylist[1,i]{y original} - (slope * xylist[0,i]+intercept{y mean})); //calculate absolute error if e<1.5 *sd then //not an outlier keep 86.64% begin xylist2[0,counter]:=xylist[0,i];// xy list without outliers xylist2[1,counter]:=xylist[1,i]; inc(counter) end; end; trendline(xylist2, counter{length xylist2}, {out} slope, intercept); xylist2:=nil; end; procedure contour( plot : boolean;img : image_array; var head: theader; blur, sigmafactor : double);//find contour and satellite lines in an image var fitsX,fitsY,ww,hh,fontsize,minX,minY,maxX,maxY,x,y,detection_grid,binning : integer; detection_level,surface,{leng,}maxleng,slope, intercept,sd : double; restore_his, Fliph, Flipv : boolean; img_sa,img_bk : image_array; contour_array : array of array of integer; contour_array2 : star_list; bg,sd_bg : double; procedure mark_pixel(x,y : integer);{flip if required for plotting. From array to image1 coordinates} begin // show_marker_shape(mainwindow.shape_alignment_marker1,1,10,10,10{minimum},X,Y); if Fliph then x:=ww-1-x; if Flipv=false then y:=hh-1-y; mainwindow.image1.Canvas.pixels[x*binning,y*binning]:=clYellow; // application.processmessages; end; procedure mark_pixel_blue(x,y : integer);{flip if required for plotting. From array to image1 coordinates} begin // show_marker_shape(mainwindow.shape_alignment_marker1,1,10,10,10{minimum},X,Y); if Fliph then x:=ww-1-x; if Flipv=false then y:=hh-1-y; mainwindow.image1.Canvas.pixels[x*binning,y*binning]:=clBlue; // application.processmessages; end; procedure writetext(x,y : integer; tex :string); begin if Fliph then x:=ww-1-x; if Flipv=false then y:=hh-1-y; mainwindow.image1.Canvas.textout(min(ww*binning-600,x*binning),y*binning,tex);{} end; // procedure local_background(x1,y1:integer; out bg,sd: double); // var // i,counter,startX,stopX,startY,stopY : integer; // mad_bg : double; // background : array [0..100] of double; // begin // startX:=max(0,x1-14); // startY:=max(0,y1-14); // stopX:=min(w,x1+14); // stopY:=min(h,y1+14); // counter:=0; // for i:=startX to stopX do {calculate the mean outside the the detection area} // begin // background[counter]:=img_bk[0,i,startY]; // inc(counter); // end; // for i:=startX to stopX do {calculate the mean outside the the detection area} // begin // background[counter]:=img_bk[0,i,stopY]; // inc(counter); // end; // for i:=startY-1 to stopY-1 do {calculate the mean outside the the detection area} // begin // background[counter]:=img_bk[0,startX,i]; // inc(counter); // end; //} // bg:=Smedian(background,counter); // for i:=0 to counter-1 do background[i]:=abs(background[i] - bg);{fill background with offsets} // mad_bg:=Smedian(background,counter); //median absolute deviation (MAD) // sd:=mad_bg*1.4826; {Conversion from mad to sd for a normal distribution. See https://en.wikipedia.org/wiki/Median_absolute_deviation} // {star_bg, sd_bg and r_aperture are global variables} // end; procedure find_contour(fx,fy : integer);// Moore Neighbor Contour Tracing Algorithm function img_protected(xx,yy :integer) : boolean;//return true if pixel is above detection level but avoids errors by reading outside the image. begin if ((xx>=0) and (xx<ww-1) and (yy>=0) and (yy<hh-1)) then result:=img_bk[0,yy,xx]>detection_level else result:=false; end; var detection : boolean; direction, counter,counterC,startX,startY,i,j,k,offset : integer; const newdirection : array[0..7] of integer=(-1,0,0,+1,+1,+2,+2,-1);//delta directions directions : array[0..7,0..1] of integer=((-1,-1), //3 south east, direction (-1,0), //0 east (-1,+1), //0 north east (0,+1), //1, north (+1,+1), //1 north west (+1,0), //2 west (+1,-1), //2 south west (0,-1)); //3 south begin direction:=1;// , north=0, west=1, south=2. east=3 startX:=fx; startY:=fy; counter:=0; counterC:=0; setlength(contour_array,2,4*ww); repeat detection:=false; for i:=0 to 7 do begin j:=((i+direction*2) and $7); if img_protected(fx+directions[j,0],fy+directions[j,1])then //pixel detected begin fx:=fx+directions[j,0]; fy:=fy+directions[j,1]; detection:=true; direction:=direction+newdirection[i]; //new direction break; end; end; if detection=false then break else begin if plot then mark_pixel(fx,fy); contour_array[0,counterC]:=fx; contour_array[1,counterC]:=fy; inc(counterC); end; img_sa[0,fy,fx]:=img_sa[0,fy,fx]+1;//mark as inspected/used if img_sa[0,fy,fx]>1 then break;//is looping local inc(counter); until (((fx=startX) and (fy=startY)) or (counter>4*ww)); //mark inner of contour surface:=0; maxX:=0; minX:=999999; maxY:=0; minY:=999999; for i:=0 to counterC-1 do begin minX:=min(contour_array[0,i],minX); maxX:=max(contour_array[0,i],maxX); minY:=min(contour_array[1,i],minY); maxY:=max(contour_array[1,i],maxY); for j:=0 to counterC-1 do begin //mark inner of contour if contour_array[1,i]=contour_array[1,j] then //y position the same begin for k:=min(contour_array[0,i],contour_array[0,j]) to max(contour_array[0,i],contour_array[0,j]) do //mark space between the mininum and maximum x values. With two pixel extra overlap. begin if img_sa[0,contour_array[1,i],k]<0 then begin surface:=surface+1; img_sa[0,contour_array[1,i],k]:=+1;//mark as inspected/used end; // mark_pixel_blue(k,contour_array[1,i]); //application.processmessages; end; end; end; end; if surface>200*2 then begin maxleng:=sqrt(sqr(maxY-minY)+sqr(maxX-minX)); //writetext(contour_array[0,i],contour_array[1,i],floattostr(surface)+ ', '+floattostr(maxleng)+ ', '+floattostr(sqr(maxleng)/surface)); if ((maxleng>200) and (sqr(maxleng)/surface>10)) then begin setlength(contour_array2,2,counterC); for i:=0 to counterC-1 do //convert to an array of singles instead of integers begin contour_array2[0,i]:=contour_array[0,i]; contour_array2[1,i]:=contour_array[1,i]; //memo2_message(#9+floattostr(contour_array[0,i])+#9+floattostr(contour_array[1,i])); end; trendline_without_outliers(contour_array2,counterC,slope, intercept,sd); intercept:=intercept*binning; sd:=sd*binning; if sd<10 then begin // A real line, sd max is about line thickness plus a nearby star. if plot then begin mainwindow.image1.Canvas.Pen.mode:=pmXor; mainwindow.image1.Canvas.Pen.Color := clred; draw_streak_line(slope,intercept);//draw satellite streak mainwindow.image1.Canvas.pen.color:=clyellow; end; if plot then writetext(min(ww*binning,contour_array[0,counterC div 2]),contour_array[1,counterC div 2],' Y='+floattostrf(slope,ffgeneral,5,5)+'*X + '+Floattostrf(intercept,ffgeneral,5,5)+ ', σ='+ Floattostrf(sd,ffgeneral,3,3)); memo2_message('Streak found: '+filename2+', Y='+floattostrf(slope,ffgeneral,5,5)+'*X + '+Floattostrf(intercept,ffgeneral,5,5)+ ', σ='+ Floattostrf(sd,ffgeneral,3,3)); contour_array2:=nil; streak_lines[nr_streak_lines].slope:=slope; streak_lines[nr_streak_lines].intercept:=intercept; inc(nr_streak_lines); if nr_streak_lines>=length(streak_lines) then setlength(streak_lines,nr_streak_lines+20); //get more memory end; end; end; end; begin restore_his:=false; binning:=1; if head.naxis3>1 then {colour image} begin memo2_message('Converting image to mono'); binX1_crop(1, img, img_bk);{crop image, make mono, no binning} get_hist(0,img_bk);{get histogram of img and his_total. Required to get correct background value} restore_his:=true; end else if (bayerpat<>'') then {raw Bayer image} begin memo2_message('Binning raw image for streak detection'); binX2_crop(1, img {out}, img_bk);{combine values of 4 pixels and crop is required, Result is mono} get_hist(0,img_bk);{get histogram of img and his_total. Required to get correct background value} restore_his:=true; binning:=2; end else img_bk:=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.} ww:=Length(img_bk[0,0]); {width} hh:=Length(img_bk[0]); {height} streak_lines:=nil; nr_streak_lines:=0; setlength(streak_lines,20);//allow 20 streak lines with mainwindow do begin if plot then 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:=clLime; image1.Canvas.Pen.Color := clYellow; 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; end; setlength(img_sa,1,hh,ww);{set length of image array} gaussian_blur2(img_bk, blur);{apply gaussian blur } get_background(0,img_bk,{cblack=0} false{histogram is already available},true {calculate noise level},{out}bck);{calculate background level from peek histogram} detection_level:=sigmafactor*bck.noise_level+ bck.backgr; detection_grid:=strtoint2(stackmenu1.detection_grid1.text,400) div binning; for fitsY:=0 to hh-1 do for fitsX:=0 to ww-1 do img_sa[0,fitsY,fitsX]:=-1;{mark as star free area} for fitsY:=0 to hh-1 do begin for fitsX:=0 to ww-1 do begin if ((detection_grid<=0) or (frac(fitsX/detection_grid)=0) or (frac(fitsy/detection_grid)=0)) then //overlay of vertical and horizontal lines if (( img_sa[0,fitsY,fitsX]<0){untested area} and (img_bk[0,fitsY,fitsX]>detection_level){star}) then {new star} begin find_contour(fitsX,fitsY); if frac(fitsY/300)= 0 then begin application.processmessages; if esc_pressed then break; end; end; end; end; end;{with mainwindow} if restore_his then begin img_bk:=nil; get_hist(0,img);{get histogram of img and his_total} end; img_sa:=nil;{free mem} end; end. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/unit_asteroid.lfm�������������������������������������������������������������0000644�0001751�0001751�00000022776�14614535560�017066� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object form_asteroids1: Tform_asteroids1 Left = 98 Height = 439 Top = 181 Width = 596 Caption = 'Annotation of asteroids and comets' ClientHeight = 439 ClientWidth = 596 KeyPreview = True OnClose = FormClose OnKeyPress = FormKeyPress OnShow = FormShow Position = poScreenCenter LCLVersion = '3.2.0.0' object annotate_asteroids1: TButton Left = 184 Height = 25 Hint = 'Annotate asteroids' Top = 408 Width = 224 Caption = 'Annotate asteroids && comets' TabOrder = 0 OnClick = annotate_asteroids1Click end object cancel_button1: TButton Left = 432 Height = 25 Hint = 'Cancel' Top = 408 Width = 75 Caption = 'Cancel' TabOrder = 1 OnClick = cancel_button1Click end object help_asteroid_annotation1: TLabel Cursor = crHandPoint Left = 533 Height = 30 Hint = 'Help asteroid annotation' Top = 400 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 = 280 Top = 0 Width = 582 Caption = 'Database' ClientHeight = 260 ClientWidth = 578 TabOrder = 2 OnClick = Group_Box1Click object file_to_add1: TButton Left = 16 Height = 25 Hint = 'Browse and select MPCORB.DAT to use' Top = 32 Width = 35 AutoSize = True Caption = '...' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 0 OnClick = file_to_add1Click end object mpcorb_filedate1: TLabel Left = 84 Height = 15 Top = 32 Width = 15 Caption = '---' ParentColor = False end object up_to_number1: TLabel Left = 16 Height = 15 Top = 105 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 = 104 Width = 78 ParentShowHint = False ShowHint = True TabOrder = 4 Text = '10000' end object up_to_magn1: TLabel Left = 16 Height = 15 Top = 136 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 = 136 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 = 136 Width = 14 Associate = max_magn_asteroids1 Max = 25 Min = 0 Position = 17 TabOrder = 6 end object showfullnames1: TCheckBox Left = 312 Height = 19 Top = 164 Width = 105 Caption = 'Show full names' Checked = True State = cbChecked TabOrder = 10 end object ColorBox1: TColorBox Left = 312 Height = 22 Top = 105 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 = 212 Width = 118 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 = 236 Width = 217 Caption = 'Add as annotations to the FITS header' ParentShowHint = False ShowHint = True TabOrder = 13 end object file_to_add2: TButton Left = 16 Height = 25 Hint = 'Browse and select MPCORB.DAT to use' Top = 64 Width = 35 AutoSize = True Caption = '...' ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 OnClick = file_to_add2Click end object mpcorb_filedate2: TLabel Left = 84 Height = 15 Top = 64 Width = 15 Caption = '---' ParentColor = False end object mpcorb_path2: TLabel Left = 210 Height = 15 Hint = 'Path to CometEls.txt file' Top = 64 Width = 81 Caption = 'AllCometEls.txt' ParentColor = False end object showmagnitude1: TCheckBox Left = 312 Height = 19 Top = 188 Width = 108 Caption = 'Show magnitude' TabOrder = 11 end object mpcorb_path1: TLabel Left = 210 Height = 15 Hint = 'Path to MPCORB.DAT file' Top = 32 Width = 73 Caption = 'MPCORB.DAT' ParentColor = False end object BitBtn1: TBitBtn Left = 52 Height = 24 Hint = 'Clear and disable' Top = 32 Width = 24 Images = mainwindow.ImageList1 ImageIndex = 3 OnClick = BitBtn1Click ParentShowHint = False ShowHint = True TabOrder = 1 end object BitBtn2: TBitBtn Left = 52 Height = 24 Hint = 'Clear and disable' Top = 64 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 = 104 Width = 48 MaxLength = 4 ParentColor = True ParentShowHint = False ShowHint = True TabOrder = 14 Text = '40' end object annotation_size2: TUpDown Left = 472 Height = 23 Top = 104 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 = 140 Width = 194 Caption = 'Font follows annotation diameter' ParentShowHint = False ShowHint = True TabOrder = 9 end object download_mpcorb1: TBitBtn Left = 16 Height = 25 Hint = 'Download MPCORB.DAT or CometEls.txt using default browser' Top = 0 Width = 100 AutoSize = True Caption = '⇩ Download ⇩' Font.Color = clBlue OnClick = download_mpcorb1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 15 end end object Group_Box2: TGroupBox Left = 8 Height = 122 Top = 280 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 = 94 Height = 15 Top = 8 Width = 27 Anchors = [akTop, akRight] Caption = 'Date:' ParentColor = False end object latitude1: TEdit Left = 128 Height = 23 Hint = 'The latitude of the observatory in degrees.' Top = 40 Width = 144 ParentShowHint = False ShowHint = True TabOrder = 1 Text = '0' OnChange = latitude1Change 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 = 145 ParentShowHint = False ShowHint = True TabOrder = 2 Text = '0' OnChange = longitude1Change 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_2024.05.01.orig/unit_stack_routines.pas�������������������������������������������������������0000644�0001751�0001751�00000365642�14614535560�020320� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_stack_routines; {Copyright (C) 2017, 2024 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( var files_to_process : array of TfileToDo; out counter : integer );{stack LRGB mode} procedure stack_average(process_as_osc:integer; var files_to_process : array of TfileToDo; out counter : integer);{stack average} procedure stack_mosaic(process_as_osc:integer; var files_to_process : array of TfileToDo; max_dev_backgr: double; out counter : integer);{mosaic/tile mode} procedure stack_sigmaclip(process_as_osc:integer; var files_to_process : array of TfileToDo; out counter : integer); {stack using sigma clip average} procedure calibration_and_alignment(process_as_osc:integer; var files_to_process : array of TfileToDo; out counter : integer); {calibration_and_alignment only} {$inline on} {!!! 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_calc_sincos_dec0;{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} procedure stack_comet(process_as_osc:integer; var files_to_process : array of TfileToDo; out counter : integer); {stack using sigma clip average} var pedestal_s : double;{target background value} var SIN_dec0,COS_dec0,x_new_float,y_new_float,SIN_dec_ref,COS_dec_ref : double; gain_refxxx: string; implementation uses unit_astrometric_solving, unit_contour; procedure calc_newx_newy(vector_based : boolean; fitsXfloat,fitsYfloat: double); inline; {apply either vector or astrometric correction. Fits in 1..width, out range 0..width-1} 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 third order} begin u:=u0 + a_0_0+ a_0_1*v0 + a_0_2*v0*v0 + a_0_3*v0*v0*v0 + a_1_0*u0 + a_1_1*u0*v0 + a_1_2*u0*v0*v0 + a_2_0*u0*u0 + a_2_1*u0*u0*v0 + a_3_0*u0*u0*u0 ; {SIP correction for second or third order} v:=v0 + b_0_0+ b_0_1*v0 + b_0_2*v0*v0 + b_0_3*v0*v0*v0 + b_1_0*u0 + b_1_1*u0*v0 + b_1_2*u0*v0*v0 + b_2_0*u0*u0 + b_2_1*u0*u0*v0 + b_3_0*u0*u0*u0 ; {SIP correction for second or third order} 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} //sincos(head_ref.dec0,SIN_dec_ref,COS_dec_ref); Alread done during initialisaion 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; centerX,centerY,scale_correctionX,scale_correctionY : double; begin a_order:=0; {SIP correction should be zero by definition} calc_newx_newy(false,head.crpix1, head.crpix2) ;//this will only work well for 1th orde solutions centerX:=x_new_float; centerY:=y_new_float; calc_newx_newy(false,head.crpix1+1, head.crpix2); {move one pixel in X} solution_vectorX[0]:=+(x_new_float- centerX); solution_vectorX[1]:=-(y_new_float- centerY); calc_newx_newy(false,head.crpix1, head.crpix2+1);{move one pixel in Y} solution_vectorY[0]:=-(x_new_float- centerX); solution_vectorY[1]:=+(y_new_float- centerY); //Correction for image distortion. The solution was extracted by comparison the distorted image with a linear star database. The solution factors are then typical a tiny amount smaller then "one" scale_correctionX:=sqrt(sqr(solution_vectorX[0])+sqr(solution_vectorX[1]));//for scale to "one" scale_correctionX:=scale_correctionX*head_ref.cdelt1/head.cdelt1;//relative scale to reference image. Note a temperature change is followed by a focus correction and therefore a change in image scale. solution_vectorX[0]:=solution_vectorX[0]/scale_correctionX;//apply correction solution_vectorX[1]:=solution_vectorX[1]/scale_correctionX; scale_correctionY:=sqrt(sqr(solution_vectorY[0])+sqr(solution_vectorY[1]));//for scale to "one" scale_correctionY:=scale_correctionY*head_ref.cdelt2/head.cdelt2;//relative scale to reference image. Note a temperature change is followed by a focus correction and therefore a change in image scale. solution_vectorY[0]:=solution_vectorY[0]/scale_correctionY;//apply correction solution_vectorY[1]:=solution_vectorY[1]/scale_correctionY; calc_newx_newy(false,(head.crpix1)*(1-scale_correctionX)+1, (head.crpix2)*(1-scale_correctionY)+1); solution_vectorX[2]:= x_new_float;//range 0..width-1 solution_vectorY[2]:= Y_new_float; flipped:=head.cd1_1*head.cd2_2 - head.cd1_2*head.cd2_1>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*head_ref.cd2_2 - head_ref.cd1_2*head_ref.cd2_1>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; if stackmenu1.solve_show_log1.checked then memo2_message('Astrometric vector solution '+solution_str) end; procedure initialise_calc_sincos_dec0;{set variables correct} begin sincos(head.dec0,SIN_dec_ref,COS_dec_ref);{do this in advance to reduce calculations since it is for each pixel the same. For blink header "head" is used instead of "head_ref"} end; procedure calculate_manual_vector(c: integer); //calculate the vector drift for the image scale one and 0..h, 0..w range. var ra1,dec1,x1,y1,shiftX,shiftY : double; dummy : string; begin if head.cd1_1=0 then //pure manual stacking begin solution_vectorX[0]:=1; solution_vectorX[1]:=0; solution_vectorX[2]:=referenceX{-1}-(strtofloat2(stackmenu1.ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]){-1}); {calculate correction. The two subtractions are neutralizing each other} solution_vectorY[0]:=0; solution_vectorY[1]:=1; solution_vectorY[2]:=referenceY{-1} - (strtofloat2(stackmenu1.ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]){-1});//the two subtractions are neutralizing each other end else begin // pixel_to_celestial(head,1,1,1 {formalism}, ra1,dec1 ); sincos(head.dec0,SIN_dec0,COS_dec0);//intilialize SIN_dec0,COS_dec0 astrometric_to_vector;{convert 1th order astrometric solution to a vector solution} dummy:=stackmenu1.ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]; dummy:=stackmenu1.ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]; //convert the astroid position to ra, dec pixel_to_celestial(head,strtofloat2(stackmenu1.ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_X]),strtofloat2(stackmenu1.ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_Y]),1 {formalism}, ra1,dec1 ); //calculate the astroid position to x,y coordinated of the reference image celestial_to_pixel(head_ref, ra1,dec1,x1,y1);//ra,dec ref image to fitsX,fitsY second image //convert the center based solution to solution with origin at 0,0 if solution_vectorX[0]<0 then solution_vectorX[2]:=solution_vectorX[2]+head.width-1; if solution_vectorY[1]<0 then solution_vectorY[2]:=solution_vectorY[2]+head.height-1; shiftX:=x1 {-1} - referenceX{-1}; //The asteroid correction. The two subtractions are neutralizing each other shiftY:=y1 {-1} - referenceY{-1}; //The asteroid correction. The two subtractions are neutralizing each other solution_vectorX[2]:=solution_vectorX[2]-shiftx; solution_vectorY[2]:=solution_vectorY[2]-shifty; end; end; procedure stack_LRGB(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,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,aa,bb,cc,dd,ee,ff : double; init, solution,use_manual_align,use_ephemeris_alignment, use_astrometry_internal,use_sip : boolean; warning : string; starlist1,starlist2 : star_list; img_temp,img_average : image_array; begin with stackmenu1 do begin {move often uses setting to booleans. Great speed improved if use in a loop and read many times} use_manual_align:=stackmenu1.use_manual_alignment1.checked; use_ephemeris_alignment:=stackmenu1.use_ephemeris_alignment1.checked; use_astrometry_internal:=use_astrometry_alignment1.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,500);{maximum star to process, if so filter out brightest stars later} use_sip:=stackmenu1.add_sip1.checked; counter:=0; jd_sum:=0;{sum of Julian midpoints} jd_start_first:=1E99;{begin observations in Julian day} jd_end_last:=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,fitsY,fitsX]; 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,fitsY,fitsX]:=500+img_average[col,fitsY,fitsX]/tempval {scale to one image by diving by the number of pixels added} else img_average[col,fitsY,fitsX]:=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,mainwindow.memo1.Lines,head,img_loaded)=false then begin memo2_message('Error loading '+filename2);exit;end; if init=false then begin head_ref:=head;{backup solution} initialise_calc_sincos_dec0;{set variables correct, do this before apply dark} // initialise_var2;{set variables correct} end; if use_sip=false then a_order:=0; //stop using SIP from the header in astrometric mode saturated_level:=head.datamax_org*0.97;{130} if c=1 then begin get_background(0,img_loaded,true,false, {out} bck);{unknown, do not calculate noise_level} background_r:=bck.backgr; //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, {out} bck);{unknown, do not calculate noise_level} background_g:=bck.backgr; //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, {out} bck);{unknown, do not calculate noise_level} background_b:=bck.backgr; //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, {out} bck);{unknown, do not calculate noise_level} background_r:=bck.backgr; //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, {out} bck);{unknown, do not calculate noise_level} background_L:=bck.backgr; //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:= update_solution_and_save(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 height_max:=head.height; width_max:=head.width; setlength(img_average,3,height_max,width_max);{will be color} setlength(img_temp,3,height_max,width_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,fitsY,fitsX]:=0; //clear img_average img_temp[col,fitsY,fitsX]:=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} calculate_manual_vector(c);//includes memo2_message with solution vector 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_str) 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.date_avg,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_start_first:=min(jd_start,jd_start_first);{find the begin date} jd_end_last:=max(jd_end,jd_end_last);{find latest end time} jd_sum:=jd_sum+jd_mid;{sum julian days of images at midpoint exposure} if use_astrometry_internal then astrometric_to_vector;{convert 1th order astrometric solution to vector solution} aa:=solution_vectorX[0];//move to local variable to improve speed a little bb:=solution_vectorX[1]; cc:=solution_vectorX[2]; dd:=solution_vectorY[0]; ee:=solution_vectorY[1]; ff:=solution_vectorY[2]; for fitsY:=0 to head.height-1 do {skip outside pixels if color} for fitsX:=0 to head.width-1 do begin x_new:=round(aa*(fitsx)+bb*(fitsY)+cc); {correction x:=aX+bY+c result in image array range 0..head.width-1} y_new:=round(dd*(fitsx)+ee*(fitsY)+ff); {correction y:=aX+bY+c} 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,fitsY,fitsX]; 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,y_new,x_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,y_new,x_new]:=img_average[0,y_new,x_new] + rr_factor*value;{execute only if greater then zero for speed}img_temp[0,y_new,x_new]:=img_temp[0,y_new,x_new]+1; end; if rg_factor>0.00001 then begin img_average[1,y_new,x_new]:=img_average[1,y_new,x_new] + rg_factor*value; img_temp[1,y_new,x_new]:=img_temp[1,y_new,x_new]+1; end; if rb_factor>0.00001 then begin img_average[2,y_new,x_new]:=img_average[2,y_new,x_new] + rb_factor*value; img_temp[2,y_new,x_new]:=img_temp[2,y_new,x_new]+1; end; end; end; if c=2 {green} then begin value:=img_loaded[0,fitsY,fitsX]; 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,y_new,x_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,y_new,x_new]:=img_average[0,y_new,x_new] + gr_factor*value;{execute only if greater then zero for speed}img_temp[0,y_new,x_new]:=img_temp[0,y_new,x_new]+1; end; if gg_factor>0.00001 then begin img_average[1,y_new,x_new]:=img_average[1,y_new,x_new] + gg_factor*value;img_temp[1,y_new,x_new]:=img_temp[1,y_new,x_new]+1; end; if gb_factor>0.00001 then begin img_average[2,y_new,x_new]:=img_average[2,y_new,x_new] + gb_factor*value;img_temp[2,y_new,x_new]:=img_temp[2,y_new,x_new]+1; end; end; end; if c=3 {blue} then begin value:=img_loaded[0,fitsY,fitsX]; 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,y_new,x_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,y_new,x_new]:=img_average[0,y_new,x_new] + br_factor*value;{execute only if greater then zero for speed}img_temp[0,y_new,x_new]:=img_temp[0,y_new,x_new]+1; end; if bg_factor>0.00001 then begin img_average[1,y_new,x_new]:=img_average[1,y_new,x_new] + bg_factor*value; img_temp[1,y_new,x_new]:=img_temp[1,y_new,x_new]+1;end; if bb_factor>0.00001 then begin img_average[2,y_new,x_new]:=img_average[2,y_new,x_new] + bb_factor*value; img_temp[2,y_new,x_new]:=img_temp[2,y_new,x_new]+1;end; end; end; if c=4 {RGB image, naxis3=3} then begin begin img_average[0,y_new,x_new]:=img_average[0,y_new,x_new] + img_loaded[0,fitsY,fitsX]-background_r; img_temp[0,y_new,x_new]:=img_temp[0,y_new,x_new]+1; end; begin img_average[1,y_new,x_new]:=img_average[1,y_new,x_new] + img_loaded[1,fitsY,fitsX]-background_g; img_temp[1,y_new,x_new]:=img_temp[1,y_new,x_new]+1; end; begin img_average[2,y_new,x_new]:=img_average[2,y_new,x_new] + img_loaded[2,fitsY,fitsX]-background_b; img_temp[2,y_new,x_new]:=img_temp[2,y_new,x_new]+1; end; end; if c=5 {Luminance} then begin {r:=l*(0.33+r)/(r+g+b)} colr:=img_average[0,y_new,x_new] - 475 + red_add; {lowest_most_common is around 450 to 500} colg:=img_average[1,y_new,x_new] - 475 + green_add; colb:=img_average[2,y_new,x_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,y_new,x_new]:=1000+(img_loaded[0,fitsY,fitsX] - background_l)*(red_f); img_average[1,y_new,x_new]:=1000+(img_loaded[0,fitsY,fitsX] - background_l)*(green_f); img_average[2,y_new,x_new]:=1000+(img_loaded[0,fitsY,fitsX] - 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; sum_exp:=exposureR+exposureG+exposureG+exposureL+exposureRGB; 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,0]); {width} h:=Length(img[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,middleY,step_size*fitsX]; p12[fitsX]:=img[0,middleY,step_size*fitsX+1]; p21[fitsX]:=img[0,middleY+1,step_size*fitsX]; p22[fitsX]:=img[0,middleY+1,step_size*fitsX+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} if abs(gain2-gain1)>0.01 then //warn only if there is a large egain difference memo2_message('█ █ █ █ █ █ Warning light with different EGAIN!! '+copy(head.egain,1,5)+' ínstead of '+copy(head_ref.egain,1,5)+' [e-/ADU]. Will try to 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(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,max_stars,old_naxis3 : integer; background_correction, weightF,hfd_min,aa,bb,cc,dd,ee,ff : double; init, solution,use_manual_align,use_ephemeris_alignment, use_astrometry_internal,use_sip : boolean; tempval : single; warning : string; starlist1,starlist2 : star_list; img_temp,img_average : image_array; begin with stackmenu1 do begin use_manual_align:=stackmenu1.use_manual_alignment1.checked; use_ephemeris_alignment:=stackmenu1.use_ephemeris_alignment1.checked; use_astrometry_internal:=use_astrometry_alignment1.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,500);{maximum star to process, if so filter out brightest stars later} use_sip:=stackmenu1.add_sip1.checked; counter:=0; sum_exp:=0; sum_temp:=0; jd_sum:=0;{sum of Julian midpoints} jd_start_first:=1E99;{begin observations in Julian day} jd_end_last:=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,mainwindow.memo1.Lines,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; old_naxis3:=head.naxis3; add_text('COMMENT 9', ' Reference file was ' + filename2); head_ref:=head;{backup solution} initialise_calc_sincos_dec0;{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>old_naxis3 then begin memo2_message('█ █ █ █ █ █ Abort!! Can'+#39+'t combine colour to mono files.'); exit;end; end; if use_sip=false then a_order:=0; //stop using SIP from the header in astrometric mode apply_dark_and_flat(img_loaded,head);{apply dark, flat if required, renew if different head.exposure or ccd temp} memo2_message('Adding file: '+inttostr(counter+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 {init} begin jd_mid_reference:=jd_mid; //for ephemeris stacking height_max:=head.height; width_max:=head.width; binning:=report_binning(head.height);{select binning based on the height of the first light. Do this after demosaic since SuperPixel also bins} setlength(img_average,head.naxis3,height_max,width_max); setlength(img_temp,1,height_max,width_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,fitsY,fitsX]:=0; {clear img_average} img_temp[0,fitsY,fitsX]:=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 else if use_astrometry_internal=false then 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:=bck.backgr;{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-bck.backgr; 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} head.pedestal:=background_correction; 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} calculate_manual_vector(c);//includes memo2_message with solution vector 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-bck.backgr; 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} head.pedestal:=background_correction; 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_str) 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.date_avg,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_start_first:=min(jd_start,jd_start_first);{find the begin date} jd_end_last:=max(jd_end,jd_end_last);{find latest end time} jd_sum:=jd_sum+jd_mid;{sum julian days of images at midpoint exposure} if use_astrometry_internal then astrometric_to_vector;{convert 1th order astrometric solution to vector solution} aa:=solution_vectorX[0]; //move to local variables for some speed improvement bb:=solution_vectorX[1]; cc:=solution_vectorX[2]; dd:=solution_vectorY[0]; ee:=solution_vectorY[1]; ff:=solution_vectorY[2]; for fitsY:=0 to head.height-1 do {skip outside "bad" pixels if mosaic mode} for fitsX:=0 to head.width-1 do begin x_new:=round(aa*(fitsx)+bb*(fitsY)+cc); {correction x:=aX+bY+c x_new_float in image array range 0..head.width-1} y_new:=round(dd*(fitsx)+ee*(fitsY)+ff); {correction y:=aX+bY+c} 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,y_new,x_new]:=img_average[col,y_new,x_new]+ img_loaded[col,fitsY,fitsX]*weightf;{image loaded is already corrected with dark and flat}{NOTE: fits count from 1, image from zero} img_temp[0,y_new,x_new]:=img_temp[0,y_new,x_new]+weightF{typical 1};{count the number of image pixels added=samples.} end; end; end; progress_indicator(10+89*counter/images_selected,' 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.height,head.width);{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,fitsY,fitsX]; for col:=0 to head.naxis3-1 do begin {colour loop} if tempval<>0 then img_loaded[col,fitsY,fitsX]:=background_correction+img_average[col,fitsY,fitsX]/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,fitsY,fitsX-1]<>0)) then img_loaded[col,fitsY,fitsX]:=background_correction+img_loaded[col,fitsY,fitsX-1]{take nearest pixel x-1 as replacement} else if ((fitsY>0) and (img_temp[0,fitsY-1,fitsX]<>0)) then img_loaded[col,fitsY,fitsX]:=background_correction+img_loaded[col,fitsY-1,fitsX]{take nearest pixel y-1 as replacement} else img_loaded[col,fitsY,fitsX]:=0;{clear img_loaded since it is resized} end; {black spot} end;{colour loop} end;{pixel loop} end; {counter<>0} end;{simple average} end;{with stackmenu1} {arrays will be nilled later. This is done for early exits} end; procedure calculate_required_dimensions(head_ref,head: theader; var x_min,x_max,y_min,y_max: double);//for image stitching mode var ra,dec,x,y : double; formalism : integer; begin formalism:=mainwindow.Polynomial1.itemindex; pixel_to_celestial(head,1,1,formalism , ra, dec); //left bottom celestial_to_pixel(head_ref, ra,dec, x,y);{ra,dec to fitsX,fitsY} x_min:=min(x_min,x); x_max:=max(x_max,x); y_min:=min(y_min,y); y_max:=max(y_max,y); pixel_to_celestial(head,head.width,1,formalism , ra, dec); //right bottom celestial_to_pixel(head_ref, ra,dec, x,y);{ra,dec to fitsX,fitsY} x_min:=min(x_min,x); x_max:=max(x_max,x); y_min:=min(y_min,y); y_max:=max(y_max,y); pixel_to_celestial(head,1,head.height,formalism , ra, dec); //left top celestial_to_pixel(head_ref, ra,dec, x,y);{ra,dec to fitsX,fitsY} x_min:=min(x_min,x); x_max:=max(x_max,x); y_min:=min(y_min,y); y_max:=max(y_max,y); pixel_to_celestial(head,head.width,head.height,formalism, ra, dec); //right top celestial_to_pixel(head_ref, ra,dec, x,y);{ra,dec to fitsX,fitsY} x_min:=min(x_min,x); x_max:=max(x_max,x); y_min:=min(y_min,y); y_max:=max(y_max,y); 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(process_as_osc: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,greylevels,count,formalism : integer; value, dummy,median,median2,delta_median,correction,maxlevel,mean,noise,hotpixels,coverage, raMiddle,decMiddle, x_min,x_max,y_min,y_max,total_fov,fw,fh : double; //for mosaic tempval : single; init, vector_based,merge_overlap,equalise_background,use_sip : boolean; background_correction,background_correction_center,background : array[0..2] of double; counter_overlap : array[0..2] of integer; bck : array[0..3] of double; oldsip : boolean; img_temp,img_average : image_array; begin with stackmenu1 do begin //find dimensions of this package memo2_message('Analysing and calculating celestial field-of-view dimensions.'); x_min:=0;//for mosaic mode x_max:=0; y_min:=0; y_max:=0; formalism:=mainwindow.Polynomial1.itemindex; count:=0; total_fov:=0; init:=false; oldsip:=sip; sip:=false;//prevent large error due to sip outside image for c:=0 to length(files_to_process)-1 do if length(files_to_process[c].name)>0 then begin if load_fits(files_to_process[c].name,true {light},false{load data},false {update memo} ,0,mainwindow.memo1.Lines,head,img_loaded)=false then begin memo2_message('Error loading '+filename2);exit;end; if init=false then begin head_ref:=head;{backup solution} init:=true; end; calculate_required_dimensions(head_ref,head, x_min,x_max,y_min,y_max); total_fov:=total_fov+head.cdelt1*head.cdelt2*head.width*head.height; inc(count); end; sip:=oldsip; if abs(x_max-x_min)<1 then begin memo2_message('Abort. Failed to calculate mosaic dimensions!');exit;end; {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_start_first:=1E99;{begin observations in Julian day} jd_end_last:=0;{end observations in Julian day} init:=false; use_sip:=stackmenu1.add_sip1.checked; dummy:=0; if stackmenu1.classify_object1.Checked then memo2_message('█ █ █ █ █ █ Will make more then one mosaic based "Light object". Uncheck classify on "Light object" if required !!█ █ █ █ █ █ '); {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,mainwindow.memo1.Lines,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} fw:=head.cdelt1*abs(x_max-x_min); fh:=head.cdelt2*abs(y_max-y_min); coverage:=total_fov/(fw*fh); if coverage<0.5 then begin memo2_message('█ █ █ █ █ █ Abort!! Too many missing tiles. Field is '+floattostrF(fw,FFFixed,0,1)+'x'+floattostrF(fh,FFfixed,0,1)+ '°. Coverage only '+floattostrF(coverage*100,FFfixed,0,1)+ '%. Is there in outlier in the image list? Check image α, δ positions. For multiple mosaics is classify on "Light object" set?'); exit;end; pixel_to_celestial(head,(x_min+x_max)/2,(y_min+y_max)/2,formalism, raMiddle, decMiddle);//find middle of mosaic sincos(decMiddle,SIN_dec_ref,COS_dec_ref);// as procedure initalise_var1, set middle of the mosaic head_ref.ra0:=raMiddle;// set middle of the mosaic head_ref.crpix1:=abs(x_max-x_min)/2; head_ref.crpix2:=abs(y_max-y_min)/2; end; if use_sip=false then a_order:=0; //stop using SIP from the header in astrometric mode memo2_message('Adding file: '+inttostr(counter+1)+'-'+nr_selected1.caption+' "'+filename2+'" to mosaic.'); // Using '+inttostr(dark_count)+' dark(s), '+inttostr(flat_count)+' flat(s), '+inttostr(flatdark_count)+' flat-dark(s)') ; if a_order=0 then Memo2_message('█ █ █ █ █ █ Warning. Image distortion correction not working. Either the option SIP not checkmarked or SIP terms not in the image header. Activate SIP and refresh astrometrical solutions with SIP checkmarked!! █ █ █ █ █ █'); 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} begin width_max:=abs(round(x_max-x_min)); height_max:=abs(round(y_max-y_min)); setlength(img_average,head.naxis3,height_max,width_max); setlength(img_temp,1,height_max,width_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,fitsY,fitsX]:=0; {clear img_average} end; img_temp[0,fitsY,fitsX]:=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 //measure background in all four corners bck[0]:=mode(img_loaded,false{ellipse shape},col,0,round(0.2*head.width), 0,round(0.2*head.height),32000,greylevels); bck[1]:=mode(img_loaded,false{ellipse shape},col,0,round(0.2*head.width), round(0.8*head.height),head.height-1,32000,greylevels) ; bck[2]:=mode(img_loaded,false{ellipse shape},col,round(0.8*head.width),head.width-1, 0,round(0.2*head.height),32000,greylevels) ; bck[3]:=mode(img_loaded,false{ellipse shape},col,round(0.8*head.width),head.width-1, round(0.8*head.height),head.height-1,32000,greylevels) ; background[col]:=smedian(bck,4); 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.date_avg,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_start_first:=min(jd_start,jd_start_first);{find the begin date} jd_end_last:=max(jd_end,jd_end_last);{find latest end time} jd_sum:=jd_sum+jd_mid;{sum julian days of images at midpoint 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; ap_order:=0;// don't correct for RA to XY for mosaic !!! 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+cropH) to head.height-(1+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+cropW) to head.width-(1+1+cropW) do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} 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 if img_loaded[0,fitsY,fitsX]>0.0001 then {not a black area around image} begin if img_average[0,y_new,x_new]<>0 then {filled pixel} begin for col:=0 to head.naxis3-1 do {all colors} begin correction:=round(img_average[col,y_new,x_new]-(img_loaded[col,fitsY,fitsX]+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+cropH to head.height-(1+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+cropW to head.width-(1+1+cropW) do begin calc_newx_newy(vector_based,fitsX,fitsY);{apply correction} 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 if img_loaded[0,fitsY,fitsX]>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,y_new,x_new]=0 then {blank pixel} begin for col:=0 to head.naxis3-1 do {all colors} img_average[col,y_new,x_new]:=img_loaded[col,fitsY,fitsX]+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,y_new,x_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,fitsY);{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,y_new,x_new]:= img_average[col,y_new,x_new]+ delta_median*(1-img_temp[0,y_new,x_new]{distance border}/(dummy+img_temp[0,y_new,x_new]));{adapt overlap} end else begin {method 1} value:=img_loaded[col,fitsY,fitsX]+background_correction_center[col]; local_sd(fitsX-15 ,fitsY-15, fitsX+15,fitsY+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,fitsY,fitsX-1]<maxlevel) and (img_loaded[col,fitsY,fitsX+1]<maxlevel) and (img_loaded[col,fitsY-1,fitsX]<maxlevel) and (img_loaded[col,fitsY+1,fitsX]<maxlevel) {check nearest pixels} ) then {not a star, prevent double stars at overlap area} img_average[col,y_new,x_new]:=+img_average[col,y_new,x_new]*img_temp[0,y_new,x_new]{distance border}/(dummy+img_temp[0,y_new,x_new]) +(value+background_correction[col])*dummy/(dummy+img_temp[0,y_new,x_new]);{calculate value between the existing and new value depending on BORDER DISTANCE} end; end; img_temp[0,y_new,x_new]:=dummy; end; end; end; end; end; progress_indicator(10+89*counter/images_selected{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. could be modified by OSC conversion} head_ref.naxis:= head.naxis; {store colour info in reference header} 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.height,head.width);{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,fitsY,fitsX]; {if <>0 then something was written} for col:=0 to head.naxis3-1 do begin {colour loop} if tempval<>0 then img_loaded[col,fitsY,fitsX]:=img_average[col,fitsY,fitsX] {no divide} else begin { black spot filter or missing value filter due to image rotation} if ((fitsX>0) and (img_temp[0,fitsY,fitsX-1]<>0)) then img_loaded[col,fitsY,fitsX]:=img_loaded[col,fitsY,fitsX-1]{take nearest pixel x-1 as replacement} else if ((fitsY>0) and (img_temp[0,fitsY-1,fitsX]<>0)) then img_loaded[col,fitsY,fitsX]:=img_loaded[col,fitsY-1,fitsX]{take nearest pixel y-1 as replacement} else img_loaded[col,fitsY,fitsX]:=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} //disable sip mainwindow.Polynomial1.itemindex:=0;//switch to WCS a_order:=0; end; procedure stack_sigmaclip(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,max_stars,old_naxis3 : integer; variance_factor, value,weightF,hfd_min,aa,bb,cc,dd,ee,ff : double; init, solution,use_manual_align,use_ephemeris_alignment, use_astrometry_internal,use_sip : boolean; tempval, sumpix, newpix,target_background,background_correction : single; warning : string; starlist1,starlist2 : star_list; img_temp,img_average,img_final,img_variance : image_array; 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,500);{maximum star to process, if so filter out brightest stars later} use_sip:=stackmenu1.add_sip1.checked; use_manual_align:=stackmenu1.use_manual_alignment1.checked; use_ephemeris_alignment:=stackmenu1.use_ephemeris_alignment1.checked; use_astrometry_internal:=use_astrometry_alignment1.checked; counter:=0; sum_exp:=0; sum_temp:=0; jd_sum:=0;{sum of Julian midpoints} jd_start_first:=1E99;{begin observations in Julian day} jd_end_last:=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,mainwindow.memo1.Lines,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; old_naxis3:=head.naxis3; head_ref:=head;{backup solution} initialise_calc_sincos_dec0;{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>old_naxis3 then begin memo2_message('█ █ █ █ █ █ Abort!! Can'+#39+'t combine colour to mono files.'); exit;end; end; if use_sip=false then a_order:=0; //stop using SIP from the header in astrometric mode apply_dark_and_flat(img_loaded,head);{apply dark, flat if required, renew if different head.exposure or ccd temp} memo2_message('Adding light file: '+inttostr(counter+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 use_astrometry_internal then begin //for making all background the same for better sigma clip function get_background(0, img_loaded, True {update_hist}, False {calculate noise level}, {var} bck); solutions[c].cblack:=bck.backgr; //background after applying dark and flats!! Not the same as in listview1 end; if init=false then begin binning:=report_binning(head.height);{select binning based on the height of the first light. Do this after demosaic since SuperPixel also bins} if 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} end; end; height_max:=head.height; width_max:=head.width; setlength(img_average,head.naxis3,height_max,width_max); setlength(img_temp,head.naxis3,height_max,width_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,fitsY,fitsX]:=0; {clear img_average} img_temp[col,fitsY,fitsX]:=0; {clear img_temp} end; target_background:=max(500,bck.backgr); //target for all images. Background of reference image or when lower then 500 then 500. memo2_message('Target background for all images is '+floattostrF(target_background,FFFixed,0,0)); 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} calculate_manual_vector(c);//includes memo2_message with solution vector 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} begin memo2_message(inttostr(nr_references)+' of '+ inttostr(nr_references2)+' quads selected matching within '+stackmenu1.quad_tolerance1.text+' tolerance. '+solution_str); solutions[c].solution_vectorX:= solution_vectorX;{store solutions} solutions[c].solution_vectorY:= solution_vectorY; solutions[c].cblack:=bck.backgr; 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:=bck.backgr; 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} background_correction:=solutions[c].cblack - target_background;//for sigma clip. First try to get backgrounds equal for more effective sigma clip head.datamax_org:=min($FFFF,head.datamax_org-background_correction);{note head.datamax_org is already corrected in apply dark} {1} date_to_jd(head.date_obs,head.date_avg,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_start_first:=min(jd_start,jd_start_first);{find the begin date} jd_end_last:=max(jd_end,jd_end_last);{find latest end time} jd_sum:=jd_sum+jd_mid;{sum julian days of images at midpoint exposure} if use_astrometry_internal then astrometric_to_vector;{convert 1th order astrometric solution to vector solution} aa:=solution_vectorX[0];//move to local variable to improve speed a little bb:=solution_vectorX[1]; cc:=solution_vectorX[2]; dd:=solution_vectorY[0]; ee:=solution_vectorY[1]; ff:=solution_vectorY[2]; for fitsY:=0 to head.height-1 do {average} for fitsX:=0 to head.width-1 do begin x_new:=round(aa*(fitsx)+bb*(fitsY)+cc); {correction x:=aX+bY+c x_new_float in image array range 0..head.width-1} y_new:=round(dd*(fitsx)+ee*(fitsY)+ff); {correction y:=aX+bY+c} 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,y_new,x_new]:=img_average[col,y_new,x_new]+ (img_loaded[col,fitsY,fitsX]- background_correction) *weightF;{Note fits count from 1, image from zero} img_temp[col,y_new,x_new]:=img_temp[col,y_new,x_new]+weightF {norm 1};{count the number of image pixels added=samples} end; end; end; end; progress_indicator(10+round(0.3333*90*(counter)/images_selected),' ■□□');{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,fitsY,fitsX]<>0 then img_average[col,fitsY,fitsX]:=img_average[col,fitsY,fitsX]/img_temp[col,fitsY,fitsX];{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,mainwindow.memo1.Lines,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,head);{apply dark, flat if required, renew if different head.exposure or ccd temp} memo2_message('Calculating pixels σ of light file '+inttostr(counter+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,height_max,width_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,fitsY,fitsX]:=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 calculate_manual_vector(c); end; end else begin {reuse solution from first step average} solution_vectorX:=solutions[c].solution_vectorX; {restore solution} solution_vectorY:=solutions[c].solution_vectorY; bck.backgr:=solutions[c].cblack; end; end; init:=true;{initialize for first image done} weightF:=calc_weightF;{calculate weighting factor for different exposure duration and gain} background_correction:=solutions[c].cblack - target_background;//for sigma clip. First try to get backgrounds equal for more effective sigma clip head.datamax_org:=min($FFFF,head.datamax_org-background_correction);{note head.datamax_org is already corrected in apply dark} {2} if use_astrometry_internal then astrometric_to_vector;{convert 1th order astrometric solution to vector solution} aa:=solution_vectorX[0];//move to local variable to improve speed a little bb:=solution_vectorX[1]; cc:=solution_vectorX[2]; dd:=solution_vectorY[0]; ee:=solution_vectorY[1]; ff:=solution_vectorY[2]; for fitsY:=0 to head.height-1 do {skip outside "bad" pixels if mosaic mode} for fitsX:=0 to head.width-1 do begin x_new:=round(aa*(fitsx)+bb*(fitsY)+cc); {correction x:=aX+bY+c x_new_float in image array range 0..head.width-1} y_new:=round(dd*(fitsx)+ee*(fitsY)+ff); {correction y:=aX+bY+c} 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,y_new,x_new]:=img_variance[col,y_new,x_new] + sqr( (img_loaded[col,fitsY,fitsX]- background_correction)*weightF - img_average[col,y_new,x_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)/images_selected{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,fitsY,fitsX]<>0 then {reuse the img_temp from light average} img_variance[col,fitsY,fitsX]:=1+img_variance[col,fitsY,fitsX]/img_temp[col,fitsY,fitsX]; {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,mainwindow.memo1.Lines,head,img_loaded)=false then begin memo2_message('Error loading '+filename2);exit;end; apply_dark_and_flat(img_loaded,head);{apply dark, flat if required, renew if different head.exposure or ccd temp} memo2_message('Combining '+inttostr(counter+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,height_max,width_max); setlength(img_final,head.naxis3,height_max,width_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,fitsY,fitsX]:=0; {clear img_temp} img_final[col,fitsY,fitsX]:=0; {clear img_temp} end; end; 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 calculate_manual_vector(c); end; end else begin {reuse solution from first step average} solution_vectorX:=solutions[c].solution_vectorX; {restore solution} solution_vectorY:=solutions[c].solution_vectorY; bck.backgr:=solutions[c].cblack; end; end; init:=true;{initialize for first image done} weightF:=calc_weightF;{calculate weighting factor for different exposure duration and gain} background_correction:=solutions[c].cblack - target_background;//for sigma clip. First try to get backgrounds equal for more effective sigma clip head.datamax_org:=min($FFFF,head.datamax_org-background_correction); {3} if use_astrometry_internal then astrometric_to_vector;{convert 1th order astrometric solution to vector solution} aa:=solution_vectorX[0];//move to local variable to improve speed a little bb:=solution_vectorX[1]; cc:=solution_vectorX[2]; dd:=solution_vectorY[0]; ee:=solution_vectorY[1]; ff:=solution_vectorY[2]; //phase 3 for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin x_new:=round(aa*(fitsx)+bb*(fitsY)+cc); {correction x:=aX+bY+c x_new_float in image array range 0..head.width-1} y_new:=round(dd*(fitsx)+ee*(fitsY)+ff); {correction y:=aX+bY+c} 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,fitsY,fitsX]- background_correction)*weightF; if sqr (value - img_average[col,y_new,x_new])< variance_factor*{sd sqr}( img_variance[col,y_new,x_new]) then {not an outlier} begin img_final[col,y_new,x_new]:=img_final[col,y_new,x_new]+ value;{dark and flat, flat dark already applied} img_temp[col,y_new,x_new]:=img_temp[col,y_new,x_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)/images_selected{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.height,head.width);{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 tempval:=img_temp[col,fitsY,fitsX]; if tempval<>0 then img_loaded[col,fitsY,fitsX]:={background_correction+}img_final[col,fitsY,fitsX]/tempval {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,fitsY,fitsX-1]<>0 then img_loaded[col,fitsY,fitsX]:={background_correction+}img_loaded[col,fitsY,fitsX-1]{take nearest pixel x-1 as replacement} else if img_temp[col,fitsY-1,fitsX]<>0 then img_loaded[col,fitsY,fitsX]:={background_correction+}img_loaded[col,fitsY-1,fitsX]{take nearest pixel y-1 as replacement} else img_loaded[col,fitsY,fitsX]:=0;{clear img_loaded since it is resized} end {fill black spots} else img_loaded[col,fitsY,fitsX]:=0;{clear img_loaded since it is resized} end; {black spot filter} end; 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 stack_comet(process_as_osc:integer; var files_to_process : array of TfileToDo; out counter : integer); {stack comets using ephemeris method. Comet is stacked aligned. Driting stars are surpressed except for first frame} type tsolution = record solution_vectorX : solution_vector {array[0..2] of double}; solution_vectorY : solution_vector; cblack : array[0..2] of single; end; var solutions : array of tsolution; fitsX,fitsY,c,width_max, height_max, old_width, old_height,x_new,y_new,col, old_naxis3 : integer; value,weightF,hfd_min,aa,bb,cc,dd,ee,ff,delta_JD_required,target_background, JD_reference : double; init, solution,use_manual_align,use_ephemeris_alignment, use_astrometry_internal,use_sip : boolean; tempval,jd_fraction : single; background_correction : array[0..2] of single; img_temp,img_final,img_variance : image_array; 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} use_sip:=stackmenu1.add_sip1.checked; use_manual_align:=stackmenu1.use_manual_alignment1.checked; use_ephemeris_alignment:=stackmenu1.use_ephemeris_alignment1.checked; use_astrometry_internal:=use_astrometry_alignment1.checked; counter:=0; sum_exp:=0; sum_temp:=0; jd_sum:=0;{sum of Julian midpoints} jd_start_first:=1E99;{begin observations in Julian day} jd_end_last:=0;{end observations in Julian day} init:=false; {find the JD moment when the pixel is at max value} 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,mainwindow.memo1.Lines,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; old_naxis3:=head.naxis3; head_ref:=head;{backup solution} initialise_calc_sincos_dec0;{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>old_naxis3 then begin memo2_message('█ █ █ █ █ █ Abort!! Can'+#39+'t combine colour to mono files.'); exit;end; end; if use_sip=false then a_order:=0; //stop using SIP from the header in astrometric mode apply_dark_and_flat(img_loaded,head);{apply dark, flat if required, renew if different head.exposure or ccd temp} memo2_message('Registrating drifting stars movements: '+inttostr(counter+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; //calculate background for best quality drifting star supression begin //for making all background the same for better sigma clip function memo2_message('Measuring background for all colours'); for col:=0 to head.naxis3-1 do /// for all colours begin get_background(col, img_loaded, True {update_hist}, False {calculate noise level}, {var} bck); solutions[c].cblack[col]:=bck.backgr; end; end; if init=false 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} height_max:=head.height; width_max:=head.width; setlength(img_variance,2,height_max,width_max);//two colour array for fitsY:=0 to height_max-1 do for fitsX:=0 to width_max-1 do begin img_variance[0,fitsY,fitsX]:=0;//will be used for storing the max value during time period img_variance[1,fitsY,fitsX]:=0;//will be used for storing the time (jd_fraction) when maximum occurs end; target_background:=max(500,solutions[c].cblack[0]); //target for all images. Background of reference image or when lower then 500 then 500. memo2_message('Target background for all images is '+floattostrF(target_background,FFFixed,0,0)); end;{init, c=0} solution:=true; if init=true then {second image} calculate_manual_vector(c)//includes memo2_message with solution vector 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; 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} for col:=0 to head.naxis3-1 do background_correction[col]:=solutions[c].cblack[col] - target_background;//for sigma clip. First try to get backgrounds equal for more effective sigma clip head.datamax_org:=min($FFFF,head.datamax_org-background_correction[0]);{note head.datamax_org is already corrected in apply dark} {1} date_to_jd(head.date_obs,head.date_avg,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_start_first:=min(jd_start,jd_start_first);{find the begin date} jd_end_last:=max(jd_end,jd_end_last);{find latest end time} jd_sum:=jd_sum+jd_mid;{sum julian days of images at midpoint exposure} jd_fraction:=frac(jd_mid);//Take fraction because single has not enough resolution for JD if counter=1 then JD_reference:=jd_Start // JD of reference image. Can not use JD_start_first since it can go back in time by the min() function else if counter=2 then begin //calculate drift compared to the reference image delta_JD_required:= abs(jd_start-jd_reference)* 3*strtofloat2(ListView1.Items.item[files_to_process[c].listviewindex].subitems.Strings[L_hfd])/sqrt(sqr(solution_vectorX[2])+sqr(solution_vectorY[2])); memo2_message('For stars 3*HFD drift takes '+ floattostrF(delta_JD_required*24*3600,FFFixed,4,0)+'sec'); end; aa:=solution_vectorX[0];//move to local variable to improve speed a little bb:=solution_vectorX[1]; cc:=solution_vectorX[2]; dd:=solution_vectorY[0]; ee:=solution_vectorY[1]; ff:=solution_vectorY[2]; for fitsY:=0 to head.height-1 do {average} for fitsX:=0 to head.width-1 do begin x_new:=round(aa*(fitsx)+bb*(fitsY)+cc); {correction x:=aX+bY+c x_new_float in image array range 0..head.width-1} y_new:=round(dd*(fitsx)+ee*(fitsY)+ff); {correction y:=aX+bY+c} if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin value:=0; for col:=0 to head.naxis3-1 do //do all colours value:=value+(img_loaded[col,fitsY,fitsX]- background_correction[col]) *weightF; //sum red, green/blue if value>img_variance[0,y_new,x_new] then begin img_variance[0,y_new,x_new]:=value; // Find the highest value for this (final) pixel position img_variance[1,y_new,x_new]:=jd_fraction; // The time this highest value occurs Take fraction because single float has not enough resolution for JD end; end; end; end;//solution progress_indicator(10+round(0.5*90*(counter)/images_selected),' ■□');{show progress} finally end; end;{try} end; {find the JD moment when the pixel is at max value} // combine images but throw out the moments when a star is drifting to each pixel. This moment is detected by the max value and recorded in phase 1 in img_variance. 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,mainwindow.memo1.Lines,head,img_loaded)=false then begin memo2_message('Error loading '+filename2);exit;end; apply_dark_and_flat(img_loaded,head);{apply dark, flat if required, renew if different head.exposure or ccd temp} date_to_jd(head.date_obs,head.date_avg,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_fraction:=frac(jd_mid);//Take fraction because single has not enough resolution for JD memo2_message('Combining '+inttostr(counter+1)+'-'+nr_selected1.caption+' "'+filename2+'", ignoring moving stars. 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,1,height_max,width_max); setlength(img_final,head.naxis3,height_max,width_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_final[col,fitsY,fitsX]:=0; {clear final} img_temp[0,fitsY,fitsX]:=0; {clear counter} end; 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 calculate_manual_vector(c); end; end else begin {reuse solution from first step average} solution_vectorX:=solutions[c].solution_vectorX; {restore solution} solution_vectorY:=solutions[c].solution_vectorY; end; end; weightF:=calc_weightF;{calculate weighting factor for different exposure duration and gain} for col:=0 to head.naxis3-1 do /// for all colours background_correction[col]:=solutions[c].cblack[col] - target_background;//try to get backgrounds equal head.datamax_org:=min($FFFF,head.datamax_org-background_correction[0]); {phase 2} // if use_astrometry_internal then // astrometric_to_vector;{convert 1th order astrometric solution to vector solution} aa:=solution_vectorX[0];//move to local variable to improve speed a little bb:=solution_vectorX[1]; cc:=solution_vectorX[2]; dd:=solution_vectorY[0]; ee:=solution_vectorY[1]; ff:=solution_vectorY[2]; //phase 2 for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin x_new:=round(aa*(fitsx)+bb*(fitsY)+cc); {correction x:=aX+bY+c x_new_float in image array range 0..head.width-1} y_new:=round(dd*(fitsx)+ee*(fitsY)+ff); {correction y:=aX+bY+c} if ((x_new>=0) and (x_new<=width_max-1) and (y_new>=0) and (y_new<=height_max-1)) then begin if ((init=false) or (abs(jd_fraction{when is star spot is passing by} - img_variance[1,y_new,x_new])>delta_JD_required )) then // Avoid streaks. Skip stacking when star is passing by begin for col:=0 to head.naxis3-1 do {do all colors} begin value:=(img_loaded[col,fitsY,fitsX]- background_correction[col])*weightF; img_final[col,y_new,x_new]:=img_final[col,y_new,x_new]+ value;{dark and flat, flat dark already applied} img_temp[0,y_new,x_new]:=img_temp[0,y_new,x_new]+weightF {norm 1};{count the number of image pixels added=samples} end; end; end; end; init:=true;{initialize for first image done} progress_indicator(10+45+round(0.5*90*(counter)/images_selected{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.height,head.width);{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 tempval:=img_temp[0,fitsY,fitsX]; if tempval<>0 then img_loaded[col,fitsY,fitsX]:={background_correction+}img_final[col,fitsY,fitsX]/tempval {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[0,fitsY,fitsX-1]<>0 then img_loaded[col,fitsY,fitsX]:={background_correction+}img_loaded[col,fitsY,fitsX-1]{take nearest pixel x-1 as replacement} else if img_temp[0,fitsY-1,fitsX]<>0 then img_loaded[col,fitsY,fitsX]:={background_correction+}img_loaded[col,fitsY-1,fitsX]{take nearest pixel y-1 as replacement} else img_loaded[col,fitsY,fitsX]:=0;{clear img_loaded since it is resized} end {fill black spots} else img_loaded[col,fitsY,fitsX]:=0;{clear img_loaded since it is resized} end; {black spot filter} end; end;{counter<>0} end;// combine images but throw out the moments when a star is at the pixel. This moment is detected by the max value. end;{with stackmenu1} {image arrays will be nilled later. This is done for early exits} solutions:=nil; end; {comet and stars sharp} procedure calibration_and_alignment(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, max_stars,old_naxis3 : integer; background_correction, hfd_min,aa,bb,cc,dd,ee,ff : double; init, solution,use_manual_align,use_ephemeris_alignment, use_astrometry_internal,use_sip : boolean; warning : string; starlist1,starlist2 : star_list; img_temp,img_average : image_array; 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,500);{maximum star to process, if so filter out brightest stars later} use_sip:=stackmenu1.add_sip1.checked; use_manual_align:=stackmenu1.use_manual_alignment1.checked; use_ephemeris_alignment:=stackmenu1.use_ephemeris_alignment1.checked; use_astrometry_internal:=use_astrometry_alignment1.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,true {init=false} {update memo for saving},0,mainwindow.memo1.Lines,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; old_naxis3:=head.naxis3; head_ref:=head;{backup solution} initialise_calc_sincos_dec0;{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>old_naxis3 then begin memo2_message('█ █ █ █ █ █ Abort!! Can'+#39+'t combine colour to mono files.'); exit;end; end; if use_sip=false then a_order:=0; //stop using SIP from the header in astrometric mode apply_dark_and_flat(img_loaded,head);{apply dark, flat if required, renew if different head.exposure or ccd temp} memo2_message('Calibrating and aligning file: '+inttostr(counter+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:=bck.backgr;{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-bck.backgr; 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} head.pedestal:=background_correction; end; end; if init=false then {init} begin height_max:=head.height; width_max:=head.width; setlength(img_average,head.naxis3,height_max,width_max); setlength(img_temp,head.naxis3,height_max,width_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,fitsY,fitsX]:=0; {clear img_average} img_temp[col,fitsY,fitsX]:=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} calculate_manual_vector(c);//includes memo2_message with solution vector 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-bck.backgr; 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} head.pedestal:=background_correction; 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_str) 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); if use_astrometry_internal then astrometric_to_vector;{convert 1th order astrometric solution to vector solution} aa:=solution_vectorX[0];//move to local variable to improve speed a little bb:=solution_vectorX[1]; cc:=solution_vectorX[2]; dd:=solution_vectorY[0]; ee:=solution_vectorY[1]; ff:=solution_vectorY[2]; for fitsY:=0 to head.height-1 do {skip outside "bad" pixels if mosaic mode} for fitsX:=0 to head.width-1 do begin x_new:=round(aa*(fitsx)+bb*(fitsY)+cc); {correction x:=aX+bY+c result in image array range 0..head.width-1} y_new:=round(dd*(fitsx)+ee*(fitsY)+ff); {correction y:=aX+bY+c} 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,y_new,x_new]:=img_average[col,y_new,x_new]+ img_loaded[col,fitsY,fitsX]+background_correction;{Note fits count from 1, image from zero} img_temp[col,y_new,x_new]:=img_temp[col,y_new,x_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.height,head.width);{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,fitsY,fitsX]<>0 then img_loaded[col,fitsY,fitsX]:=img_average[col,fitsY,fitsX]/img_temp[col,fitsY,fitsX] {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,fitsY,fitsX-1]<>0){and (img_temp[col,fitsY-1,fitsX]<>0)}{keep borders nice for last pixel right}) then img_loaded[col,fitsY,fitsX]:=img_loaded[col,fitsY,fitsX-1]{take nearest pixel x-1 as replacement} else if img_temp[col,fitsY-1,fitsX]<>0 then img_loaded[col,fitsY,fitsX]:=img_loaded[col,fitsY-1,fitsX]{take nearest pixel y-1 as replacement} else img_loaded[col,fitsY,fitsX]:=0;{clear img_loaded since it is resized} end {fill black spots} else img_loaded[col,fitsY,fitsX]:=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]; mainwindow.Memo1.Lines.EndUpdate; update_float ('CRPIX1 =',' / X of reference pixel ',false ,head.crpix1); update_float ('CRPIX2 =',' / Y of reference pixel ',false ,head.crpix2); update_text ('COMMENT S',' After alignment only CRPIX1 & CRPIX2 existing solution corrected.'); mainwindow.Memo1.Lines.EndUpdate; end; update_text ('COMMENT 1',' Calibrated & aligned by ASTAP. www.hnsky.org'); update_float ('PEDESTAL=',' / Value added during calibration or stacking ',false ,head.pedestal);//pedestal value added during calibration or stacking 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(object_name,inttostr(round(head.exposure)),0,999 {color icon});{report result in tab result using modified filename2} progress_indicator(10+round(90*(counter)/images_selected{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_2024.05.01.orig/astap_mac.lpi�����������������������������������������������������������������0000644�0001751�0001751�00000022166�14614535560�016144� 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_2024.05.01.orig/build_astap.sh����������������������������������������������������������������0000644�0001751�0001751�00000011762�14614535560�016331� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'AMD64 file does not exist, aborting!!' exit fi cp /home/h/astap.fpc/astap /home/h/astap_install/astap_amd64/opt/astap cd /home/h/astap_install sudo rm *.rpm sudo fakeroot dpkg-deb -Zxz --build /home/h/astap_install/astap_amd64 sudo /home/h/alien/alien-8.95/alien.pl -r -c -k /home/h/astap_install/astap_amd64.deb cp *.rpm astap_amd64.rpm #unpack 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 #build amd64 qt5 using stable version!! rm ~/astap.fpc/astap /home/h/fpcupdeluxe_stable/lazarus/lazbuild /home/h/astap.fpc/astap_linux_qt5.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'AMD64 QT5 file does not exist, aborting!!' exit fi sudo cp /home/h/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 /opt/astap/dcraw-astap /opt/astap/unprocessed_raw-astap #Build i386 rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux_gkt2_i386.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'I386 file does not exist, aborting!!' exit fi cp /home/h/astap.fpc/astap /home/h/astap_install/astap_i386/opt/astap cd /home/h/astap_install sudo fakeroot dpkg-deb -Zxz --build /home/h/astap_install/astap_i386 #build aarch64 rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux_aarch64.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'aarch64 file does not exist, aborting!!' exit fi cp /home/h/astap.fpc/astap /home/h/astap_install/astap_aarch64/opt/astap cd /home/h/astap_install sudo fakeroot dpkg-deb -Zxz --build /home/h/astap_install/astap_aarch64 sudo cp /home/h/astap.fpc/astap /opt/astap sudo cp /home/h/astap_install/astap_aarch64/opt/astap/unprocessed_raw-astap /opt/astap tar -czvf astap_aarch64.tar.gz /opt/astap/astap /opt/astap/astap.ico /opt/astap/*.txt /opt/astap/deep_sky.csv /opt/astap/variable_stars.csv /usr/share/applications/ASTAP.desktop /opt/astap/unprocessed_raw-astap #build aarch64 qt5 rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux_aarch64_qt5.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'aarch64 qt5 file does not exist, aborting!!' exit fi sudo cp /home/h/astap.fpc/astap /opt/astap tar -czvf astap_aarch64_qt5.tar.gz /opt/astap/astap /opt/astap/astap.ico /opt/astap/*.txt /opt/astap/deep_sky.csv /opt/astap/variable_stars.csv /usr/share/applications/ASTAP.desktop /opt/astap/unprocessed_raw-astap # read -p "Press any key to resume ..." #build armhf #use old compiler. New one has problems with triplets routine rm ~/astap.fpc/astap /home/h/fpcupdeluxe_stable/lazarus/lazbuild /home/h/astap.fpc/astap_linux_armhf.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'armhf file does not exist, aborting!!' exit fi cp /home/h/astap.fpc/astap /home/h/astap_install/astap_armhf/opt/astap cd /home/h/astap_install sudo fakeroot dpkg-deb -Zxz --build /home/h/astap_install/astap_armhf sudo cp /home/h/astap.fpc/astap /opt/astap sudo cp /home/h/astap_install/astap_armhf/opt/astap/unprocessed_raw-astap /opt/astap # not dcraw-astap tar -czvf astap_armhf.tar.gz /opt/astap/astap /opt/astap/astap.ico /opt/astap/*.txt /opt/astap/deep_sky.csv /opt/astap/variable_stars.csv /usr/share/applications/ASTAP.desktop /opt/astap/unprocessed_raw-astap #build armhf qt5 #use old compiler. New one has problems with triplets routine rm ~/astap.fpc/astap /home/h/fpcupdeluxe_stable/lazarus/lazbuild /home/h/astap.fpc/astap_linux_armhf_qt5.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'armhf qt5 file does not exist, aborting!!' exit fi sudo cp /home/h/astap.fpc/astap /opt/astap tar -czvf astap_armhf_qt5.tar.gz /opt/astap/astap /opt/astap/astap.ico /opt/astap/*.txt /opt/astap/deep_sky.csv /opt/astap/variable_stars.csv /usr/share/applications/ASTAP.desktop /opt/astap/unprocessed_raw-astap rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux_cross_compile_to_Darwin_M1.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'macos M1 file does not exist, aborting!!' exit fi zip astap_mac_M1.zip /home/h/astap.fpc/astap rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux_cross_compile_to_Darwin_X86_64.lpi zip astap_mac_X86_64.zip /home/h/astap.fpc/astap if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'macos file does not exist, aborting!!' exit fi #restore amd64 installation sudo dpkg -i ./astap_amd64.deb ��������������astap_2024.05.01.orig/unit_astrometric_solving.pas��������������������������������������������������0000644�0001751�0001751�00000220075�14614535560�021346� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_astrometric_solving; {Copyright (C) 2017, 2024 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. | For each quad sort the six quad distances. // Label them all where d1 is the longest and d6 the shortest distance. | Label them all where d1 is the longest and d6 the shortest distance. // | //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 α (crval1), δ (crval2). // // Calculate from the solution the pixel size in x (cdelt1) an y (cdelt2) and at the image center position the rotation of the x-axis (crota1) // and y-axis (crota2) relative to the celestial north using goniometric formulas. Convert these to cd1_1,cd1_2,cd_2_1, cd2_2. // // 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, unit_calc_trans_cubic; function solve_image(img :image_array;var hd: Theader; get_hist{update hist}, check_patternfilter : 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 position_angle(ra1,dec1,ra0,dec0 : double): double;//Position angle of a body at ra1,dec1 as seen at ra0,dec0. Rigorous method procedure equatorial_standard(ra0,dec0,ra,dec, cdelt : double; out xx,yy: double); function read_stars(telescope_ra,telescope_dec,search_field : double; database_type,nrstars_required: integer;out starlist : star_list; out nrstars:integer): boolean;{read star from star database} 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} procedure binX1_crop(crop {0..1}:double; img : image_array; var img2: image_array);{crop image, make mono, no binning} var star1 : array[0..2] of array of single; mag2 : double; {magnitude of star found} implementation 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; function position_angle(ra1,dec1,ra0,dec0 : double): double;//Position angle between a line from ra0,dec0 to ra1,dec1 and a line from ra0, dec0 to the celestial north . Rigorous method //See book Meeus, Astronomical Algorithms, formula 46.5 edition 1991 or 48.5 edition 1998, angle of moon limb or page 116 edition 1998. //See also https://astronomy.stackexchange.com/questions/25306/measuring-misalignment-between-two-positions-on-sky // PA=arctan2(cos(δ0)sin(α1−α0), sin(δ1)cos(δ0)−sin(δ0)cos(δ1)cos(α1−α0)) In lazarus the function is arctan2(y/x) // is seen at point α0,δ0. This means you are calculating the angle at point α0,δ0 (the reference point) towards point α1,δ1 (the target point). // To clarify: // Point α0,δ0 (Reference Point): This is where the observation is made from, or the point of reference. // Point α1,δ1 (Target Point): This is the point towards which the position angle is being measured. // Position Angle (PA): This is the angle measured at the reference point α0,δ0, going from the direction of the North Celestial Pole towards the target point α1,δ1, measured eastward (or counter-clockwise). // So in your observational scenario, if you were at point α0,δ0 and wanted to determine the direction to point α1,δ1, the PA would tell you the angle to rotate from the north, moving eastward, to align with the target point. var sinDeltaRa,cosDeltaRa, sinDec0,cosDec0, sinDec1,cosDec1 : double; begin sincos(ra1-ra0,sinDeltaRa,cosDeltaRa); sincos(dec0,sinDec0,cosDec0); sincos(dec1,sinDec1,cosDec1); result:=arctan2(cosDec1*sinDeltaRa,sinDec1*cosDec0 - cosDec1*sinDec0*cosDeltaRa); 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 conversion 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} {ra0, 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 off} {$INLINE ON} {procedure standard_equatorialold(ra0,dec0,x,y,cdelt: double; out ra,dec : double); inline; //transformation from CCD coordinates into equatorial coordinates var sin_dec0 ,cos_dec0,delta : 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 dec := arcsin ( (sin_dec0+y*cos_dec0)/sqrt(1.0+x*x+y*y) ); 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; end; } {transformation from CCD coordinates into equatorial coordinates} {ra0,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; out ra,dec : double); inline;{transformation from CCD coordinates into equatorial coordinates} var sin_dec0 ,cos_dec0,delta : 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); delta:=cos_dec0-y*sin_dec0; ra:=ra0+arctan2(-x,delta); //atan2 is required for images containing celestial pole dec:=arctan((sin_dec0+y*cos_dec0)/sqrt(sqr(x)+sqr(delta))); 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; end; //procedure give_spiral_position(position : integer; out 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; database_type,nrstars_required: integer;out starlist : star_list; 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; 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(starlist,2,nrstars_required);{set array length} if database_type>1 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,starlist[0,nrstars]{x},starlist[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 starlist} 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,starlist[0,nrstars]{x},starlist[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,starlist[0,nrstars]{x},starlist[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,starlist[0,nrstars]{x},starlist[1,nrstars]{y});{store star CCD x,y position} inc(nrstars); end; end; end else begin {wide field database, database_type=1} 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,starlist[0,nrstars]{x},starlist[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(starlist,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,nrcolors,width5,height5: integer; val : single; begin nrcolors:=Length(img); width5:=Length(img[0,0]); {width} height5:=Length(img[0]); {height} w:=trunc(crop*length(img[0,0]{width})); {cropped} h:=trunc(crop*length(img[0]{height})); setlength(img2,1,h,w); {set length of image array} shiftX:=round(width5*(1-crop)/2); {crop is 0.9, shift is 0.05 * width} shiftY:=round(height5*(1-crop)/2); {crop is 0.9, start at 0.05 * 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 and make mono} val:=val + img[k ,shiftY+fitsY,shiftX+fitsx]; img2[0,fitsY,fitsX]:=val/nrcolors; 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,0]); {width} height5:=Length(img[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,h,w); {set length of image array} shiftX:=round(width5*(1-crop)/2); {crop is 0.9, shift is 0.05 * width} shiftY:=round(height5*(1-crop)/2); {crop is 0.9, start at 0.05 * 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,shiftY+fitsY*2 ,shiftX+fitsX*2]+ img[k,shiftY+fitsY*2 +1,shiftX+fitsX*2]+ img[k,shiftY+fitsY*2 ,shiftX+fitsX*2+1]+ img[k,shiftY+fitsY*2 +1,shiftX+fitsX*2+1])/4; img2[0,fitsY,fitsX]:=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,0]); {width} height5:=Length(img[0]); {height} w:=trunc(crop*width5/3); {1/3 size and cropped} h:=trunc(crop*height5/3); setlength(img2,1,h,w); {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,shiftY+fitsY*3 ,shiftX+fitsX*3 ]+ img[k,shiftY+fitsY*3 ,shiftX+fitsX*3+1]+ img[k,shiftY+fitsY*3 ,shiftX+fitsX*3+2]+ img[k,shiftY+fitsY*3 +1,shiftX+fitsX*3 ]+ img[k,shiftY+fitsY*3 +1,shiftX+fitsX*3+1]+ img[k,shiftY+fitsY*3 +1,shiftX+fitsX*3+2]+ img[k,shiftY+fitsY*3 +2,shiftX+fitsX*3 ]+ img[k,shiftY+fitsY*3 +2,shiftX+fitsX*3+1]+ img[k,shiftY+fitsY*3 +2,shiftX+fitsX*3+2])/9; img2[0,fitsY,fitsX]:=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,0]); {width} height5:=Length(img[0]); {height} w:=trunc(crop*width5/4); {1/4 size and cropped} h:=trunc(crop*height5/4); setlength(img2,1,h,w); {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,shiftY+fitsY*4 ,shiftX+fitsX*4 ]+ img[k,shiftY+fitsY*4 ,shiftX+fitsX*4+1]+ img[k,shiftY+fitsY*4 ,shiftX+fitsX*4+2]+ img[k,shiftY+fitsY*4 ,shiftX+fitsX*4+3]+ img[k,shiftY+fitsY*4 +1,shiftX+fitsX*4 ]+ img[k,shiftY+fitsY*4 +1,shiftX+fitsX*4+1]+ img[k,shiftY+fitsY*4 +1,shiftX+fitsX*4+2]+ img[k,shiftY+fitsY*4 +1,shiftX+fitsX*4+3]+ img[k,shiftY+fitsY*4 +2,shiftX+fitsX*4 ]+ img[k,shiftY+fitsY*4 +2,shiftX+fitsX*4+1]+ img[k,shiftY+fitsY*4 +2,shiftX+fitsX*4+2]+ img[k,shiftY+fitsY*4 +2,shiftX+fitsX*4+3]+ img[k,shiftY+fitsY*4 +3,shiftX+fitsX*4 ]+ img[k,shiftY+fitsY*4 +3,shiftX+fitsX*4+1]+ img[k,shiftY+fitsY*4 +3,shiftX+fitsX*4+2]+ img[k,shiftY+fitsY*4 +3,shiftX+fitsX*4+3])/16; img2[0,fitsY,fitsX]:=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,0]);{width} height5:=length(img[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,0]);{width} ; // head.height:=length(img_binned[0]); // plot_fits(mainwindow.image1,true);{plot real} // exit; get_background(0,img_binned,true {load hist},true {calculate also standard deviation background},{out}bck {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} if length(img_binned[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; nrstars:=Length(starlist3[0]); for i:=0 to nrstars-1 do {correct star positions for cropping. Simplest method} begin starlist3[0,i]:=(binning-1)*0.5+starlist3[0,i]*binning +(width5*(1-cropping)/2);//correct star positions for binning/ cropping. Position [3.5,3,5] becomes after 2x2 binning [1,1] after x2 [3,3]. So correct for 0.5 pixel starlist3[1,i]:=(binning-1)*0.5+starlist3[1,i]*binning +(height5*(1-cropping)/2); // For zero based indexing: // A star of 2x2 pixels at position [2.5,2.5] is after 2x2 binning at position [1,1]. If doubled to [2,2] then the position has 0.5 pixel shifted. // A star of 3x3 pixels at position [4,4] is after 3x3 binning at position [1,1]. If tripled to [3,3] then the position has 1.0 pixel shifted. // A star of 4x4 pixels at position [5.5,5.5] is after 4x4 binning at position [1,1]. If quadruped to [4,4] then the position has 1.5 pixel shifted. // So positions measured in a binned image should be corrected as x:=(binning-1)*0.5+binning*x and y:=(binning-1)*0.5+binning*y 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}, {out}bck{ 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; // for i:=0 to length(starlist3[0])-1 do // log_to_file('d:\temp\referenceA1.txt',floattostr(starlist3[0,i])+', '+floattostr(starlist3[1,i])); 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; procedure create_grid_list( width2, height2, nrpoints : integer; out grid_list : TStarArray); // Create list of nbpoints x nbpoints positions in the image equally spread. Positions relative to the image center. var middleX,middleY : Double; s, x, y,counter : integer; begin middleX:=width2/2; middleY:=height2/2; setlength(grid_list,nrpoints*nrpoints); counter:=0; for y := 0 to nrpoints-1 do begin for x := 0 to nrpoints-1 do begin grid_list[counter].x := -middleX+x*width2/(nrpoints-1); grid_list[counter].y := -middleY+y*height2/(nrpoints-1); inc(counter); end; end; end; function add_sip(hd: Theader;ra_database,dec_database:double) : boolean; var stars_measured,stars_reference,grid_list1,grid_list2 : TStarArray; trans_sky_to_pixel,trans_pixel_to_sky : Ttrans; len,i,position,j,nr : integer; succ: boolean; err_mess: string; ra_t,dec_t, SIN_dec_t,COS_dec_t, SIN_dec_ref,COS_dec_ref,det, delta_ra,SIN_delta_ra,COS_delta_ra, H, dRa,dDec,MatrixDeterminant,u0,v0,sep,sepsmallest : double; cd : array[0..1,0..1] of double; solution_vectorXinv,solution_vectorYinv : solution_vector; const nrpoints=6; begin result:=true;// assume success {1) Solve the image with the 1th order solver. 2) Get the x,y coordinates of the detected stars= "stars_measured" 3) Get the x,y coordinates of the reference stars= "stars_reference" 4) Shift the x,y coordinates of "stars_measured" to the center of the image. so position [0,0] is at CRPIX1, CRPIX2. 5) Convert reference stars coordinates to the same coordinate system as the measured stars. In my case I had to convert the quad x,y coordinates to ra, dec and then convert these to image position using the original first order solution 6) Now both the "stars_measured" and "stars_reference" positions match with stars in the image except for distortion. Position [0,0] is at CRPIX1, CRPIX2. 7) For pixel_to_sky call: Calc_Trans_Cubic(stars_measured, stars_reference,...). The trans array will work for pixel to sky. 8) For sky_to_pixel call: Calc_Trans_Cubic(stars_reference, stars_measured,...) The trans array will work for sky to pixel. } len:=length(b_Xrefpositions); if len<20 then begin memo2_message('Not enough quads for calculating SIP.'); exit(false); end; setlength(stars_measured,len); setlength(stars_reference,len); sincos(hd.dec0,SIN_dec_ref,COS_dec_ref);;{ For 5. Conversion (RA,DEC) -> x,y image in fits range 1..max} for i:=0 to len-1 do begin stars_measured[i].x:=1+A_XYpositions[0,i]-hd.crpix1;//position as seen from center at crpix1, crpix2, in fits range 1..width stars_measured[i].y:=1+A_XYpositions[1,i]-hd.crpix2; standard_equatorial( ra_database,dec_database, b_Xrefpositions[i], {x reference star} b_Yrefpositions[i], {y reference star} 1, {CCD scale} ra_t,dec_t) ; //calculate back to the reference star positions {5. Conversion (RA,DEC) -> x,y image in fits range 1..max} sincos(dec_t,SIN_dec_t,COS_dec_t); // sincos(hd.dec0,SIN_dec_ref,COS_dec_ref);{Required but for speed executed outside the for loop} delta_ra:=ra_t-hd.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:=hd.cd2_2*hd.cd1_1 - hd.cd1_2*hd.cd2_1; stars_reference[i].x:= - (hd.cd1_2*dDEC - hd.cd2_2*dRA) / det; stars_reference[i].y:= + (hd.cd1_1*dDEC - hd.cd2_1*dRA) / det; end; succ:=Calc_Trans_Cubic(stars_reference, // First array of s_star structure we match the output trans_sky_to_pixel takes their coords into those of array B stars_measured, // Second array of s_star structure we match trans_sky_to_pixel, // Transfer coefficients for stars_measured positions to stars_reference positions. Fits range 1..max err_mess // any error message ); if succ=false then begin memo2_message(err_mess); exit(false); end; {sky to pixel coefficients} AP_order:=3; //third order AP_0_0:=trans_sky_to_pixel.x00; AP_0_1:=trans_sky_to_pixel.x01; AP_0_2:=trans_sky_to_pixel.x02; AP_0_3:=trans_sky_to_pixel.x03; AP_1_0:=-1+trans_sky_to_pixel.x10; AP_1_1:=trans_sky_to_pixel.x11; AP_1_2:=trans_sky_to_pixel.x12; AP_2_0:=trans_sky_to_pixel.x20; AP_2_1:=trans_sky_to_pixel.x21; AP_3_0:=trans_sky_to_pixel.x30; BP_0_0:=trans_sky_to_pixel.y00; BP_0_1:=-1+trans_sky_to_pixel.y01; BP_0_2:=trans_sky_to_pixel.y02; BP_0_3:=trans_sky_to_pixel.y03; BP_1_0:=trans_sky_to_pixel.y10; BP_1_1:=trans_sky_to_pixel.y11; BP_1_2:=trans_sky_to_pixel.y12; BP_2_0:=trans_sky_to_pixel.y20; BP_2_1:=trans_sky_to_pixel.y21; BP_3_0:=trans_sky_to_pixel.y30; //inverse transformation calculation //swap the arrays for inverse factors. This works as long the offset is small like in this situation succ:=Calc_Trans_Cubic(stars_measured, // reference stars_reference, // distorted trans_pixel_to_sky, // Transfer coefficients for stars_measured positions to stars_reference positions err_mess // any error message ); if succ=false then begin memo2_message(err_mess); exit(false); end; sip:=true; // SIP definitions https://irsa.ipac.caltech.edu/data/SPITZER/docs/files/spitzer/shupeADASS.pdf //Pixel to sky coefficients A_order:=3; A_0_0:=trans_pixel_to_sky.x00; A_0_1:=trans_pixel_to_sky.x01; A_0_2:=trans_pixel_to_sky.x02; A_0_3:=trans_pixel_to_sky.x03; A_1_0:=-1+ trans_pixel_to_sky.x10; A_1_1:=trans_pixel_to_sky.x11; A_1_2:=trans_pixel_to_sky.x12; A_2_0:=trans_pixel_to_sky.x20; A_2_1:=trans_pixel_to_sky.x21; A_3_0:=trans_pixel_to_sky.x30; B_0_0:=trans_pixel_to_sky.y00; B_0_1:=-1+trans_pixel_to_sky.y01; B_0_2:=trans_pixel_to_sky.y02; B_0_3:=trans_pixel_to_sky.y03; B_1_0:=trans_pixel_to_sky.y10; B_1_1:=trans_pixel_to_sky.y11; B_1_2:=trans_pixel_to_sky.y12; B_2_0:=trans_pixel_to_sky.y20; B_2_1:=trans_pixel_to_sky.y21; B_3_0:=trans_pixel_to_sky.y30; update_integer('A_ORDER =',' / Polynomial order, axis 1. Pixel to Sky ',3); update_float('A_0_0 =',' / SIP coefficient ',false,A_0_0); update_float('A_1_0 =',' / SIP coefficient ',false,A_1_0); update_float('A_0_1 =',' / SIP coefficient ',false,A_0_1); update_float('A_2_0 =',' / SIP coefficient ',false,A_2_0); update_float('A_1_1 =',' / SIP coefficient ',false,A_1_1); update_float('A_0_2 =',' / SIP coefficient ',false,A_0_2); update_float('A_3_0 =',' / SIP coefficient ',false,A_3_0); update_float('A_2_1 =',' / SIP coefficient ',false,A_2_1); update_float('A_1_2 =',' / SIP coefficient ',false,A_1_2); update_float('A_0_3 =',' / SIP coefficient ',false,A_0_3); update_integer('B_ORDER =',' / Polynomial order, axis 2. Pixel to sky. ',3); update_float('B_0_0 =',' / SIP coefficient ',false ,B_0_0); update_float('B_0_1 =',' / SIP coefficient ',false ,B_0_1); update_float('B_1_0 =',' / SIP coefficient ',false ,B_1_0); update_float('B_2_0 =',' / SIP coefficient ',false ,B_2_0); update_float('B_1_1 =',' / SIP coefficient ',false ,B_1_1); update_float('B_0_2 =',' / SIP coefficient ',false ,B_0_2); update_float('B_3_0 =',' / SIP coefficient ',false ,B_3_0); update_float('B_2_1 =',' / SIP coefficient ',false ,B_2_1); update_float('B_1_2 =',' / SIP coefficient ',false ,B_1_2); update_float('B_0_3 =',' / SIP coefficient ',false ,B_0_3); update_integer('AP_ORDER=',' / Inv polynomial order, axis 1. Sky to pixel. ',3); update_float('AP_0_0 =',' / SIP coefficient ',false,AP_0_0); update_float('AP_1_0 =',' / SIP coefficient ',false,AP_1_0); update_float('AP_0_1 =',' / SIP coefficient ',false,AP_0_1); update_float('AP_2_0 =',' / SIP coefficient ',false,AP_2_0); update_float('AP_1_1 =',' / SIP coefficient ',false,AP_1_1); update_float('AP_0_2 =',' / SIP coefficient ',false,AP_0_2); update_float('AP_3_0 =',' / SIP coefficient ',false,AP_3_0); update_float('AP_2_1 =',' / SIP coefficient ',false,AP_2_1); update_float('AP_1_2 =',' / SIP coefficient ',false,AP_1_2); update_float('AP_0_3 =',' / SIP coefficient ',false,AP_0_3); update_integer('BP_ORDER=',' / Inv polynomial order, axis 2. Sky to pixel. ',3); update_float('BP_0_0 =',' / SIP coefficient ',false,BP_0_0); update_float('BP_1_0 =',' / SIP coefficient ',false,BP_1_0); update_float('BP_0_1 =',' / SIP coefficient ',false,BP_0_1); update_float('BP_2_0 =',' / SIP coefficient ',false,BP_2_0); update_float('BP_1_1 =',' / SIP coefficient ',false,BP_1_1); update_float('BP_0_2 =',' / SIP coefficient ',false,BP_0_2); update_float('BP_3_0 =',' / SIP coefficient ',false,BP_3_0); update_float('BP_2_1 =',' / SIP coefficient ',false,BP_2_1); update_float('BP_1_2 =',' / SIP coefficient ',false,BP_1_2); update_float('BP_0_3 =',' / SIP coefficient ',false,BP_0_3); end; function solve_image(img :image_array;var hd: Theader;get_hist{update hist},check_patternfilter :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,i, database_density,limit,err : integer; search_field,step_size,ra_database,dec_database,ra_database_offset,radius,fov2,fov_org, max_fov,fov_min,oversize,oversize2, sep_search,seperation,ra7,dec7,centerX,centerY,correctionX,correctionY,cropping, min_star_size_arcsec,hfd_min, current_dist, quad_tolerance,dummy, extrastars,flip, extra,distance,mount_sep, mount_ra_sep,mount_dec_sep,ra_start,dec_start,pixel_aspect_ratio, crota1,crota2,flipped_image : double; solution, go_ahead, autoFOV,use_triples,yes_use_triples : boolean; startTick : qword;{for timing/speed purposes} distancestr,oversize_mess,mess,info_message,popup_warningG05,popup_warningSample,suggest_str, solved_in, offset_found,ra_offset_str,dec_offset_str,mount_info_str,mount_offset_str,warning_downsample : string; starlist1,starlist2 : star_list; var {with value} quads_str: string=' quads'; const popupnotifier_visible : boolean=false; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key result:=false; esc_pressed:=false; warning_str:='';{for header} startTick := GetTickCount64; popup_warningG05:=''; if check_patternfilter 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,500);{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; 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 G05 database! '; if warning_str<>'' then memo2_message(warning_str); popup_warningG05:=#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; if max_stars=0 then max_stars:=500;// temporary. Remove in 2024; val(copy(name_database,2,2),database_density,err); if ((err<>0) or (database_density=17) or (database_density=18)) then //old databases V17, G17, G18, H17, H18 database_density:=9999 else database_density:=database_density*100; min_star_size_arcsec:=strtofloat2(stackmenu1.min_star_size1.text); {arc sec}; autoFOV:=(fov_org=0);{specified auto FOV} 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;; limit:=round(database_density*sqr(fov2)*hd.width/hd.height);//limit in stars per square degree. limit=density*surface_full_image if limit<max_stars then begin max_stars:=limit;//reduce the number of stars to use. memo2_message('Database limit for this FOV is '+inttostr(max_stars)+' stars.'); 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]); if ((hd.xpixsz<>0) and (hd.ypixsz<>0) and (abs(hd.xpixsz-hd.ypixsz)>0.1)) then //non-square pixels, correct. Remove in future? begin //very very rare. Example QHY6 camera memo2_message('Rare none square pixels specified.'); pixel_aspect_ratio:=hd.xpixsz/hd.ypixsz; for i:=0 to nrstars-1 do {correct star positions for non-square pixels} begin starlist2[0,i]:=hd.width/2+(starlist2[0,i]-hd.width/2)*pixel_aspect_ratio; end; end else pixel_aspect_ratio:=1;// this is the case in 99.95% of the cases {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_warningG05+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));{A little less. The square search field is based on height only.} 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.1; max_distance:=round(radius/(0.1*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 solve_show_log then //begin // memo2_message('Read database at: '+prepare_ra(ra_database,' ')+', '+prepare_dec(dec_database,' ')); //end; 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;{start 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 match_nr=0 then oversize2:=oversize else oversize2:=max(oversize, sqrt(sqr(hd.width/hd.height)+sqr(1))); //Use full image for solution for second solve. if read_stars(ra_database,dec_database,search_field*oversize2,database_type,round(nrstars_required*oversize2*oversize2*extrastars),{out} starlist1 ,{out}database_stars)= false then begin {$IFDEF linux} //keep till 2026 if ((name_database='d50') and (dec_database>pi*(90-15)/180)) then //Files 3502,3503 and 3601.1476 had permission error. Star database fixed on 2023-11-27 application.messagebox(pchar('Star database file permission error near pole. Update the D50 database to crrect !!'), pchar('ASTAP error:'),0) else {$ENDIF} application.messagebox(pchar('No star database found at '+database_path+' !'+#13+'Download and install one star database.'), 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} 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 else match_nr:=0;//This should not happen for the second solve but just in case 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} if solution then begin hd.ra0:=ra_radians;//store solution in header hd.dec0:=dec_radians; hd.crpix1:=centerX+1;{center image in fits coordinate range 1..hd.width} hd.crpix2:=centery+1; 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; //New 2023 method for correct rotation angle/annotation near to the celestial pole. if solution_vectorX[0]*solution_vectorY[1] - solution_vectorX[1]*solution_vectorY[0] >0 then // flipped? flipped_image:=-1 //change rotation for flipped image, {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} else flipped_image:=+1;//not flipped // position +1 pixels 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{equatorial position}); // the position 1 pixel away crota2:=-position_angle(ra7,dec7,hd.ra0,hd.dec0);//Position angle between a line from ra0,dec0 to ra1,dec1 and a line from ra0, dec0 to the celestial north . Rigorous method // position 1*flipped_image pixels in direction hd.crpix1 standard_equatorial( ra_database,dec_database,(solution_vectorX[0]*(centerX+flipped_image) + solution_vectorX[1]*(centerY) +solution_vectorX[2]), {x} //A pixel_aspect_ratio unequal of 1 is very rare, none square pixels (solution_vectorY[0]*(centerX+flipped_image) + solution_vectorY[1]*(centerY) +solution_vectorY[2]), {y} 1, {CCD scale} ra7 ,dec7{equatorial position}); crota1:=pi/2-position_angle(ra7,dec7,hd.ra0,hd.dec0);//Position angle between a line from ra0,dec0 to ra1,dec1 and a line from ra0, dec0 to the celestial north . Rigorous method if crota1>pi then crota1:=crota1-2*pi;//keep within range -pi to +pi hd.cdelt1:=flipped_image*sqrt(sqr(solution_vectorX[0])+sqr(solution_vectorX[1]))/3600; // from unit arcsec to degrees hd.cdelt2:=sqrt(sqr(solution_vectorY[0])+sqr(solution_vectorY[1]))/3600; hd.cd1_1:=+hd.cdelt1*cos(crota1); hd.cd1_2:=-hd.cdelt1*sin(crota1)*flipped_image; hd.cd2_1:=+hd.cdelt2*sin(crota2)*flipped_image; hd.cd2_2:=+hd.cdelt2*cos(crota2); hd.crota2:=crota2*180/pi;//convert to degrees hd.crota1:=crota1*180/pi; //end new 2023 method 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_ra8(hd.ra0,': ')+#9+prepare_dec2(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; mainwindow.Memo1.Lines.BeginUpdate; if ((stackmenu1.add_sip1.checked) and (add_sip(hd,ra_database,dec_database))) then //takes about 50 ms sec due to the header update. Calculations are very fast begin //SIP added update_text ('CTYPE1 =',#39+'RA---TAN-SIP'+#39+' / TAN (gnomic) projection + SIP distortions '); update_text ('CTYPE2 =',#39+'DEC--TAN-SIP'+#39+' / TAN (gnomic) projection + SIP distortions '); mainwindow.Polynomial1.itemindex:=1;//switch to sip end else begin //No SIP added. update_text ('CTYPE1 =',#39+'RA---TAN'+#39+' / first parameter RA, projection TANgential '); update_text ('CTYPE2 =',#39+'DEC--TAN'+#39+' / second parameter DEC, projection TANgential '); end; 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 ',false,hd.crpix1); update_float('CRPIX2 =',' / Y of reference pixel ',false ,hd.crpix2); update_float('CRVAL1 =',' / RA of reference pixel (deg) ',false ,hd.ra0*180/pi); update_float('CRVAL2 =',' / DEC of reference pixel (deg) ',false ,hd.dec0*180/pi); update_float('CDELT1 =',' / X pixel size (deg) ',false ,hd.cdelt1); update_float('CDELT2 =',' / Y pixel size (deg) ',false ,hd.cdelt2); update_float('CROTA1 =',' / Image twist X axis (deg) ',false ,hd.crota1); update_float('CROTA2 =',' / Image twist Y axis (deg) E of N if not flipped.',false ,hd.crota2); update_float('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,hd.cd1_1); update_float('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,hd.cd1_2); update_float('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,hd.cd2_1); update_float('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,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); mainwindow.Memo1.Lines.EndUpdate; 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(starlist1,starlist2,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 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_2024.05.01.orig/unit_image_sharpness.pas������������������������������������������������������0000644�0001751�0001751�00000006172�14614535560�020421� 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, 2024 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} w:=length(img[0,0]);{width} h:=length(img[0]);{height} result:=0; average:=0; {for OSC and mono images} for i:=0 to (h-4) div 4 do {step 4 pixels in height} for j:=0 to (w-4) div 4 do {step in width} 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_2024.05.01.orig/linux_scripts/����������������������������������������������������������������0000755�0001751�0001751�00000000000�14614535560�016405� 5����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/linux_scripts/build_astap.sh��������������������������������������������������0000644�0001751�0001751�00000012004�14614535560�021225� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'AMD64 file does not exist, aborting!!' exit fi cp /home/h/astap.fpc/astap /home/h/astap_install/astap_amd64/opt/astap cd /home/h/astap_install sudo rm *.rpm sudo fakeroot dpkg-deb -Zxz --build /home/h/astap_install/astap_amd64 sudo /home/h/alien/alien-8.95/alien.pl -r -c -k /home/h/astap_install/astap_amd64.deb cp *.rpm astap_amd64.rpm rm ./astap-2*.rpm #unpack 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 #build amd64 qt5 using stable version!! rm ~/astap.fpc/astap /home/h/fpcupdeluxe_stable/lazarus/lazbuild /home/h/astap.fpc/astap_linux_qt5.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'AMD64 QT5 file does not exist, aborting!!' exit fi sudo cp /home/h/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 /opt/astap/dcraw-astap /opt/astap/unprocessed_raw-astap #Build i386 rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux_gkt2_i386.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'I386 file does not exist, aborting!!' exit fi cp /home/h/astap.fpc/astap /home/h/astap_install/astap_i386/opt/astap cd /home/h/astap_install sudo fakeroot dpkg-deb -Zxz --build /home/h/astap_install/astap_i386 #build aarch64 rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux_aarch64.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'aarch64 file does not exist, aborting!!' exit fi cp /home/h/astap.fpc/astap /home/h/astap_install/astap_aarch64/opt/astap cd /home/h/astap_install sudo fakeroot dpkg-deb -Zxz --build /home/h/astap_install/astap_aarch64 sudo cp /home/h/astap.fpc/astap /opt/astap sudo cp /home/h/astap_install/astap_aarch64/opt/astap/unprocessed_raw-astap /opt/astap tar -czvf astap_aarch64.tar.gz /opt/astap/astap /opt/astap/astap.ico /opt/astap/*.txt /opt/astap/deep_sky.csv /opt/astap/variable_stars.csv /usr/share/applications/ASTAP.desktop /opt/astap/unprocessed_raw-astap #build aarch64 qt5 rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux_aarch64_qt5.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'aarch64 qt5 file does not exist, aborting!!' exit fi sudo cp /home/h/astap.fpc/astap /opt/astap tar -czvf astap_aarch64_qt5.tar.gz /opt/astap/astap /opt/astap/astap.ico /opt/astap/*.txt /opt/astap/deep_sky.csv /opt/astap/variable_stars.csv /usr/share/applications/ASTAP.desktop /opt/astap/unprocessed_raw-astap # read -p "Press any key to resume ..." #build armhf #use old compiler. New one has problems with triplets routine rm ~/astap.fpc/astap /home/h/fpcupdeluxe_stable/lazarus/lazbuild /home/h/astap.fpc/astap_linux_armhf.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'armhf file does not exist, aborting!!' exit fi cp /home/h/astap.fpc/astap /home/h/astap_install/astap_armhf/opt/astap cd /home/h/astap_install sudo fakeroot dpkg-deb -Zxz --build /home/h/astap_install/astap_armhf sudo cp /home/h/astap.fpc/astap /opt/astap sudo cp /home/h/astap_install/astap_armhf/opt/astap/unprocessed_raw-astap /opt/astap # not dcraw-astap tar -czvf astap_armhf.tar.gz /opt/astap/astap /opt/astap/astap.ico /opt/astap/*.txt /opt/astap/deep_sky.csv /opt/astap/variable_stars.csv /usr/share/applications/ASTAP.desktop /opt/astap/unprocessed_raw-astap #build armhf qt5 #use old compiler. New one has problems with triplets routine rm ~/astap.fpc/astap /home/h/fpcupdeluxe_stable/lazarus/lazbuild /home/h/astap.fpc/astap_linux_armhf_qt5.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'armhf qt5 file does not exist, aborting!!' exit fi sudo cp /home/h/astap.fpc/astap /opt/astap tar -czvf astap_armhf_qt5.tar.gz /opt/astap/astap /opt/astap/astap.ico /opt/astap/*.txt /opt/astap/deep_sky.csv /opt/astap/variable_stars.csv /usr/share/applications/ASTAP.desktop /opt/astap/unprocessed_raw-astap rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux_cross_compile_to_Darwin_M1.lpi if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'macos M1 file does not exist, aborting!!' exit fi zip astap_mac_M1.zip /home/h/astap.fpc/astap rm ~/astap.fpc/astap /home/h/fpcupdeluxe/lazarus/lazbuild /home/h/astap.fpc/astap_linux_cross_compile_to_Darwin_X86_64.lpi zip astap_mac_X86_64.zip /home/h/astap.fpc/astap if [[ ! -f ~/astap.fpc/astap ]] ; then echo 'macos file does not exist, aborting!!' exit fi #restore amd64 installation sudo dpkg -i ./astap_amd64.deb ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/linux_scripts/build_database.sh�����������������������������������������������0000644�0001751�0001751�00000002046�14614535560�021666� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������cd ~/astap_install #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/w08_star_database_mag08_astap #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/v16_star_database_mag16_colour_hnsky #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/g17_star_database_mag17_astap #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/v17_star_database_mag17_colour_astap #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/g17_star_database_mag17_hnsky #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/v17_star_database_mag17_colour_hnsky #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/g18_star_database_mag18_hnsky #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/d05_star_database #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/d20_star_database #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/d50_star_database #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/g05_star_database #sudo fakeroot dpkg-deb -Zxz --build ~/astap_install/v50_star_database sudo fakeroot dpkg-deb -Zxz --build /home/h/astap_install/variable_star_database ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/astap_linux_aarch64.lpi�������������������������������������������������������0000644�0001751�0001751�00000012212�14614535560�020042� 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"/> <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"/> <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="linux"/> </CodeGeneration> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> <RunWithoutDebug Value="True"/> <UseExternalDbgSyms Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <ConfigFile> <WriteConfigFilePath Value="$(ProjOutDir)\fpclaz.cfg"/> </ConfigFile> <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_2024.05.01.orig/astap_linux.lpi���������������������������������������������������������������0000644�0001751�0001751�00000011605�14614535560�016537� 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"/> <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"/> <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_2024.05.01.orig/astap_linux_cross_compile_to_Darwin_M1.lpi������������������������������������0000644�0001751�0001751�00000012463�14614535560�024026� 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_2024.05.01.orig/astap_linux_gkt2_i386.lpi�����������������������������������������������������0000644�0001751�0001751�00000012137�14614535560�020240� 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"/> <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"/> <ComponentName Value="form_inspection1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </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="i386"/> </CodeGeneration> <Linking> <Debugging> <GenerateDebugInfo Value="False"/> <DebugInfoType Value="dsDwarf2Set"/> <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_2024.05.01.orig/astap.lpi���������������������������������������������������������������������0000644�0001751�0001751�00000023410�14614535560�015315� 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_2024.05.01.orig/acknowledgement of databases.txt����������������������������������������������0000644�0001751�0001751�00000103520�14614535560�021705� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������******deep_sky.csv******* This is a free to use deepsky database of 30000 objects for non commercial use only. A compilation by Han Kleijn developed between 1997 and 2020 for the Hallo Northern Sky program and heavilly based on the work of these people: SAC81, Saguaro Astronomy Club Database version 8.1, March 22, 2010 Steve Coe Database manager Saguaro Astronomy Club. Webpage https://www.saguaroastro.org/sac-downloads Wolfgang Steinicke's REV NGC&IC, webpage http://www.klima-luft.de/steinicke/index_e.htm. Any non-commercial use of my data is free! If a commercial use is planned, please contact me! Please inform the author Dr. Wolfgang Steinicke (also in case of non-commercial use, e.g. in a free software). In any case, a proper acknowledgment of the source, including an answer-back to the author is necessary. These data are part of a scientific project and subject to copyright! HyperLeda, see Hyperleda acknowledgement below Sh2, A catalogue of HII regions. SHARPLESS S. 1959ApJS....4..257S - Astrophys. J., Suppl. Ser., 4, 257-279 (1959) vdB, A study of reflection nebulae. VAN DEN BERGH S. 968AJ.....73..233R - Astron. J., 73, 233-245 (1968) HCG, A revised catalog of CfA1 galaxy groups in the Virgo/Great Attractor flow field. NOLTHENIUS R. 1993ApJS...85....1N - Astrophys. J., Suppl. Ser., 85, 1-25 (1993/March-0) LDN, Catalogue of dark nebulae. LYNDS B.T. 1962ApJS....7....1L - Astrophys. J., Suppl. Ser., 7, 1-52 (1962) PK, Accurate coordinates of planetary nebulae. KOHOUTEK L. and KUHL D. 2002AN....323..484K - Astron. Nachr., 323, 484-487 (2002) Furthermore SIMBAD Astronomical Database - Centre de Données astronomiques de Strasbourg was heavilly used for the compilation. ******variable_stars.csv****** Selection from GCVS, the General Catalogue of Variable Stars, version 5.1 by Samus N.N., Kazarovets E.V., Durlevich O.V., Kireeva N.N., Pastukhova E.N. Astronomy Reports, 2017, vol. 61, No. 1, pp. 80-88 {2017ARep...61...80S} Compiled 2019-6-6. ******Hyperleda.csv large galaxy database****** This is an extract from HyperLEDA database from http://leda.univ-lyon1.fr HyperLEDA is a database and a collection of tools to study the physics of galaxies and cosmology. The project, started in 1983, is currently maintained by a collaboration between Observatoire de Lyon (France) and the Special Astrophysical Observatory (Russia). The principle behind HyperLEDA is to collect measurements published in literature and modern surveys, and to combine them into a unique homogeneous description of the astronomical objects. This enables the researcher to compare objects located at very different distances. This approach is a continuation of the famous series of Bright Galaxy Catalogues (RC1, RC2, RC3) by de Vaucouleurs and co-workers. The result of the homogenization is the Leda catalogue. HyperLeda is not only used by researchers, but also by sky lovers or amateur astronomers interested to learn more about galaxies, by students, and by professors. HyperLeda is developed in the frame of the Virtual Observatory, an initiative intended to facilitate the exchange and usage of the data at the global scale. All the data and the software is publicly available in open-source for non-commercial purposes. - Paper: Makarov et al. http://adsabs.harvard.edu/abs/2014A%26A...570A..13M - We acknowledge the usage of the HyperLeda database (http://leda.univ-lyon1.fr ******D05, D20, D50, V50, G05 star databases****** These are an extract of the Gaia star catalog release DR3 by European Space Agency Science & Technology in a special format developed for the HNSKY planetarium program and ASTAP program . We acknowledge the usage of the Gaia database This work has made use of data from the European Space Agency (ESA) mission Gaia (https://www.cosmos.esa.int/gaia), processed by the Gaia Data Processing and Analysis Consortium (DPAC, https://www.cosmos.esa.int/web/gaia/dpac/consortium). Funding for the DPAC has been provided by national institutions, in particular the institutions participating in the Gaia Multilateral Agreement. The Gaia data are open and free to use, provided credit is given to ’ESA/Gaia/DPAC’. In general, access to, and use of, ESA’s Gaia archive (hereafter called ’the website’) constitutes acceptance of the following, general terms and conditions. Neither ESA nor any other party involved in creating, producing, or delivering the website shall be liable for any direct, incidental, consequential, indirect, or punitive damages arising out of user access to, or use of, the website. The website does not guarantee the accuracy of information provided by external sources and accepts no responsibility or liability for any consequences arising from the use of such data. GAIA DATA RELEASE DOCUMENTATION Gaia Data Release 2 Documentation release 1.2 [-] Gaia Data Release 2 Documentation release 1.2 I Introduction to Gaia DR2 II Gaia data processing III Gaia data analysis IV Gaia catalogue V Gaia archive Miscellaneous Acknowledgements Credit and citation instructions Colophon Acronyms Documentation change log Bibliography Miscellaneous Miscellaneous Credit and citation instructions Acknowledgements This work presents results from the European Space Agency (ESA) space mission Gaia. Gaia data are being processed by the Gaia Data Processing and Analysis Consortium (DPAC). Funding for the DPAC is provided by national institutions, in particular the institutions participating in the Gaia MultiLateral Agreement (MLA). The Gaia mission website is https://www.cosmos.esa.int/gaia. The Gaia archive website is https://archives.esac.esa.int/gaia. The Gaia mission and data processing have financially been supported by, in alphabetical order by country: • the Algerian Centre de Recherche en Astronomie, Astrophysique et Géophysique of Bouzareah Observatory; • the Austrian Fonds zur Förderung der wissenschaftlichen Forschung (FWF) Hertha Firnberg Programme through grants T359, P20046, and P23737; • the BELgian federal Science Policy Office (BELSPO) through various PROgramme de Développement d’Expériences scientifiques (PRODEX) grants and the Polish Academy of Sciences - Fonds Wetenschappelijk Onderzoek through grant VS.091.16N; • the Brazil-France exchange programmes Fundação de Amparo à Pesquisa do Estado de São Paulo (FAPESP) and Coordenação de Aperfeicoamento de Pessoal de Nível Superior (CAPES) - Comité Français d’Evaluation de la Coopération Universitaire et Scientifique avec le Brésil (COFECUB); • the Chilean Dirección de Gestión de la Investigación (DGI) at the University of Antofagasta and the Comité Mixto ESO-Chile; • the National Science Foundation of China (NSFC) through grants 11573054 and 11703065; • the Czech-Republic Ministry of Education, Youth, and Sports through grant LG 15010, the Czech Space Office through ESA PECS contract 98058, and Charles University Prague through grant PRIMUS/SCI/17; • the Danish Ministry of Science; • the Estonian Ministry of Education and Research through grant IUT40-1; • the European Commission’s Sixth Framework Programme through the European Leadership in Space Astrometry (ELSA) Marie Curie Research Training Network (MRTN-CT-2006-033481), through Marie Curie project PIOF-GA-2009-255267 (Space AsteroSeismology & RR Lyrae stars, SAS-RRL), and through a Marie Curie Transfer-of-Knowledge (ToK) fellowship (MTKD-CT-2004-014188); the European Commission’s Seventh Framework Programme through grant FP7-606740 (FP7-SPACE-2013-1) for the Gaia European Network for Improved data User Services (GENIUS) and through grant 264895 for the Gaia Research for European Astronomy Training (GREAT-ITN) network; • the European Research Council (ERC) through grants 320360 and 647208 and through the European Union’s Horizon 2020 research and innovation programme through grants 670519 (Mixing and Angular Momentum tranSport of massIvE stars – MAMSIE) and 687378 (Small Bodies: Near and Far); • the European Science Foundation (ESF), in the framework of the Gaia Research for European Astronomy Training Research Network Programme (GREAT-ESF); • the European Space Agency (ESA) in the framework of the Gaia project, through the Plan for European Cooperating States (PECS) programme through grants for Slovenia, through contracts C98090 and 4000106398/12/NL/KML for Hungary, and through contract 4000115263/15/NL/IB for Germany; • the European Union (EU) through a European Regional Development Fund (ERDF) for Galicia, Spain; • the Academy of Finland and the Magnus Ehrnrooth Foundation; • the French Centre National de la Recherche Scientifique (CNRS) through action ’Défi MASTODONS’, the Centre National d’Etudes Spatiales (CNES), the L’Agence Nationale de la Recherche (ANR) ’Investissements d’avenir’ Initiatives D’EXcellence (IDEX) programme Paris Sciences et Lettres (PSL∗ ) through grant ANR-10-IDEX-0001-02, the ANR ’Défi de tous les savoirs’ (DS10) programme through grant ANR-15-CE31-0007 for project ’Modelling the Milky Way in the Gaia era’ (MOD4Gaia), the Région Aquitaine, the Université de Bordeaux, and the Utinam Institute of the Université de Franche-Comté, supported by the Région de Franche-Comté and the Institut des Sciences de l’Univers (INSU); • the German Aerospace Agency (Deutsches Zentrum für Luft- und Raumfahrt e.V., DLR) through grants 50QG0501, 50QG0601, 50QG0602, 50QG0701, 50QG0901, 50QG1001, 50QG1101, 50QG1401, 50QG1402, 50QG1403, and 50QG1404 and the Centre for Information Services and High Performance Computing (ZIH) at the Technische Universität (TU) Dresden for generous allocations of computer time; • the Hungarian Academy of Sciences through the Lendület Programme LP2014-17 and the János Bolyai Research Scholarship (L. Molnár and E. Plachy) and the Hungarian National Research, Development, and Innovation Office through grants NKFIH K-115709, PD-116175, and PD-121203; • the Science Foundation Ireland (SFI) through a Royal Society - SFI University Research Fellowship (M. Fraser); • the Israel Science Foundation (ISF) through grant 848/16; • the Agenzia Spaziale Italiana (ASI) through contracts I/037/08/0, I/058/10/0, 2014-025-R.0, and 2014-025-R.1.2015 to the Italian Istituto Nazionale di Astrofisica (INAF), contract 2014-049-R.0/1/2 to INAF dedicated to the Space Science Data Centre (SSDC, formerly known as the ASI Sciece Data Centre, ASDC), and contracts I/008/10/0, 2013/030/I.0, 2013-030-I.0.1-2015, and 2016-17-I.0 to the Aerospace Logistics Technology Engineering Company (ALTEC S.p.A.), and INAF; • the Netherlands Organisation for Scientific Research (NWO) through grant NWO-M-614.061.414 and through a VICI grant (A. Helmi) and the Netherlands Research School for Astronomy (NOVA); • the Polish National Science Centre through HARMONIA grant 2015/18/M/ST9/00544 and ETIUDA grants 2016/20/S/ST9/00162 and 2016/20/T/ST9/00170; • the Portugese Fundação para a Ciência e a Tecnologia (FCT) through grant SFRH/BPD/74697/2010; the Strategic Programmes UID/FIS/00099/2013 for CENTRA and UID/EEA/00066/2013 for UNINOVA; • the Slovenian Research Agency through grant P1-0188; • the Spanish Ministry of Economy (MINECO/FEDER, UE) through grants ESP2014-55996-C2-1-R, ESP2014-55996-C2-2-R, ESP2016-80079-C2-1-R, and ESP2016-80079-C2-2-R, the Spanish Ministerio de Economía, Industria y Competitividad through grant AyA2014-55216, the Spanish Ministerio de Educación, Cultura y Deporte (MECD) through grant FPU16/03827, the Institute of Cosmos Sciences University of Barcelona (ICCUB, Unidad de Excelencia ’María de Maeztu’) through grant MDM-2014-0369, the Xunta de Galicia and the Centros Singulares de Investigación de Galicia for the period 2016-2019 through the Centro de Investigación en Tecnologías de la Información y las Comunicaciones (CITIC), the Red Española de Supercomputación (RES) computer resources at MareNostrum, and the Barcelona Supercomputing Centre - Centro Nacional de Supercomputación (BSC-CNS) through activities AECT-2016-1-0006, AECT-2016-2-0013, AECT-2016-3-0011, and AECT-2017-1-0020; • the Swedish National Space Board (SNSB/Rymdstyrelsen); • the Swiss State Secretariat for Education, Research, and Innovation through the ESA PRODEX programme, the Mesures d’Accompagnement, the Swiss Activités Nationales Complémentaires, and the Swiss National Science Foundation; • the United Kingdom Rutherford Appleton Laboratory, the United Kingdom Science and Technology Facilities Council (STFC) through grant ST/L006553/1, the United Kingdom Space Agency (UKSA) through grant ST/N000641/1 and ST/N001117/1, as well as a Particle Physics and Astronomy Research Council Grant PP/C503703/1. The Gaia project and data processing have made use of: • the Set of Identifications, Measurements, and Bibliography for Astronomical Data (SIMBAD, Wenger et al. 2000), the ’Aladin sky atlas’ (Bonnarel et al. 2000; Boch and Fernique 2014), and the VizieR catalogue access tool (Ochsenbein et al. 2000), all operated at the Centre de Données astronomiques de Strasbourg (CDS); • the National Aeronautics and Space Administration (NASA) Astrophysics Data System (ADS); • the SPace ENVironment Information System (SPENVIS), initiated by the Space Environment and Effects Section (TEC-EES) of ESA and developed by the Belgian Institute for Space Aeronomy (BIRA-IASB) under ESA contract through ESA’s General Support Technologies Programme (GSTP), administered by the BELgian federal Science Policy Office (BELSPO); • the software products TOPCAT, STIL, and STILTS (Taylor 2005, 2006); • Matplotlib (Hunter 2007); • IPython (Pérez and Granger 2007); • Astropy, a community-developed core Python package for Astronomy (The Astropy Collaboration et al. 2018); • R (R Core Team 2013); • Vaex (Breddels and Veljanoski 2018); • the Hipparcos-2 catalogue (van Leeuwen 2007). The Hipparcos and Tycho catalogues were constructed under the responsibility of large scientific teams collaborating with ESA. The Consortia Leaders were Lennart Lindegren (Lund, Sweden: NDAC) and Jean Kovalevsky (Grasse, France: FAST), together responsible for the Hipparcos Catalogue; Erik Høg (Copenhagen, Denmark: TDAC) responsible for the Tycho Catalogue; and Catherine Turon (Meudon, France: INCA) responsible for the Hipparcos Input Catalogue (HIC); • the Tycho-2 catalogue (Høg et al. 2000), the construction of which was supported by the Velux Foundation of 1981 and the Danish Space Board; • data products from the Two Micron All Sky Survey (2MASS, Skrutskie et al. 2006), which is a joint project of the University of Massachusetts and the Infrared Processing and Analysis Center (IPAC) / California Institute of Technology, funded by the National Aeronautics and Space Administration (NASA) and the National Science Foundation (NSF) of the USA; • the ninth data release of the AAVSO Photometric All-Sky Survey (APASS, Henden et al. 2016), funded by the Robert Martin Ayers Sciences Fund; • the first data release of the Pan-STARRS survey (Chambers et al. 2016; Magnier et al. 2016a; Waters et al. 2016; Magnier et al. 2016c, b; Flewelling et al. 2016). The Pan-STARRS1 Surveys (PS1) and the PS1 public science archive have been made possible through contributions by the Institute for Astronomy, the University of Hawaii, the Pan-STARRS Project Office, the Max-Planck Society and its participating institutes, the Max Planck Institute for Astronomy, Heidelberg and the Max Planck Institute for Extraterrestrial Physics, Garching, The Johns Hopkins University, Durham University, the University of Edinburgh, the Queen’s University Belfast, the Harvard-Smithsonian Center for Astrophysics, the Las Cumbres Observatory Global Telescope Network Incorporated, the National Central University of Taiwan, the Space Telescope Science Institute, the National Aeronautics and Space Administration (NASA) through grant NNX08AR22G issued through the Planetary Science Division of the NASA Science Mission Directorate, the National Science Foundation through grant AST-1238877, the University of Maryland, Eotvos Lorand University (ELTE), the Los Alamos National Laboratory, and the Gordon and Betty Moore Foundation; • the second release of the Guide Star Catalogue (GSC2.3, Lasker et al. 2008). The Guide Star Catalogue II is a joint project of the Space Telescope Science Institute (STScI) and the Osservatorio Astrofisico di Torino (OATo). STScI is operated by the Association of Universities for Research in Astronomy (AURA), for the National Aeronautics and Space Administration (NASA) under contract NAS5-26555. OATo is operated by the Italian National Institute for Astrophysics (INAF). Additional support was provided by the European Southern Observatory (ESO), the Space Telescope European Coordinating Facility (STECF), the International GEMINI project, and the European Space Agency (ESA) Astrophysics Division (nowadays SCI-S); • the eXtended, Large (XL) version of the catalogue of Positions and Proper Motions (PPM-XL, Roeser et al. 2010); • data products from the Wide-field Infrared Survey Explorer (WISE), which is a joint project of the University of California, Los Angeles, and the Jet Propulsion Laboratory/California Institute of Technology, and NEOWISE, which is a project of the Jet Propulsion Laboratory/California Institute of Technology. WISE and NEOWISE are funded by the National Aeronautics and Space Administration (NASA); • the first data release of the United States Naval Observatory (USNO) Robotic Astrometric Telescope (URAT-1, Zacharias et al. 2015); • the fourth data release of the United States Naval Observatory (USNO) CCD Astrograph Catalogue (UCAC-4, Zacharias et al. 2013); • the fifth data release of the Radial Velocity Experiment (RAVE DR5, Kunder et al. 2017). Funding for RAVE has been provided by the Australian Astronomical Observatory, the Leibniz-Institut für Astrophysik Potsdam (AIP), the Australian National University, the Australian Research Council, the French National Research Agency, the German Research Foundation (SPP 1177 and SFB 881), the European Research Council (ERC-StG 240271 Galactica), the Istituto Nazionale di Astrofisica at Padova, The Johns Hopkins University, the National Science Foundation of the USA (AST-0908326), the W. M. Keck foundation, the Macquarie University, the Netherlands Research School for Astronomy, the Natural Sciences and Engineering Research Council of Canada, the Slovenian Research Agency, the Swiss National Science Foundation, the Science & Technology Facilities Council of the UK, Opticon, Strasbourg Observatory, and the Universities of Groningen, Heidelberg, and Sydney. The RAVE website is at https://www.rave-survey.org/; • the first data release of the Large sky Area Multi-Object Fibre Spectroscopic Telescope (LAMOST DR1, Luo et al. 2015); • the K2 Ecliptic Plane Input Catalogue (EPIC, Huber et al. 2016); • the ninth data release of the Sloan Digitial Sky Survey (SDSS DR9, Ahn et al. 2012). Funding for SDSS-III has been provided by the Alfred P. Sloan Foundation, the Participating Institutions, the National Science Foundation, and the United States Department of Energy Office of Science. The SDSS-III website is http://www.sdss3.org/. SDSS-III is managed by the Astrophysical Research Consortium for the Participating Institutions of the SDSS-III Collaboration including the University of Arizona, the Brazilian Participation Group, Brookhaven National Laboratory, Carnegie Mellon University, University of Florida, the French Participation Group, the German Participation Group, Harvard University, the Instituto de Astrofísica de Canarias, the Michigan State/Notre Dame/JINA Participation Group, Johns Hopkins University, Lawrence Berkeley National Laboratory, Max Planck Institute for Astrophysics, Max Planck Institute for Extraterrestrial Physics, New Mexico State University, New York University, Ohio State University, Pennsylvania State University, University of Portsmouth, Princeton University, the Spanish Participation Group, University of Tokyo, University of Utah, Vanderbilt University, University of Virginia, University of Washington, and Yale University. The GBOT programme (Section 3.2.2) uses observations collected at (i) the European Organisation for Astronomical Research in the Southern Hemisphere (ESO) with the VLT Survey Telescope (VST), under ESO programmes 092.B-0165, 093.B-0236, 094.B-0181, 095.B-0046, 096.B-0162, 097.B-0304, 098.B-0034, 099.B-0030, 0100.B-0131, and 0101.B-0156, and (ii) the Liverpool Telescope, which is operated on the island of La Palma by Liverpool John Moores University in the Spanish Observatorio del Roque de los Muchachos of the Instituto de Astrofísica de Canarias with financial support from the United Kingdom Science and Technology Facilities Council, and (iii) telescopes of the Las Cumbres Observatory Global Telescope Network. In addition to the currently active DPAC (and ESA science) authors of the peer-reviewed papers accompanying Gaia DR2, there are large numbers of former DPAC members who made significant contributions to the (preparations of the) data processing. Among those are, in alphabetical order: Christopher Agard, Juan José Aguado, Alexandra Alecu, Peter Allan, France Allard, Walter Allasia, Carlos Allende Prieto, Antonio Amorim, Kader Amsif, Guillem Anglada-Escudé, Sonia Antón, Vladan Arsenijevic, Rajesh Kumar Bachchan, Angelique Barbier, Mickael Batailler, Duncan Bates, Mathias Beck, Antonio Bello García, Vasily Belokurov, Philippe Bendjoya, Hans Bernstein† , Lionel Bigot, Albert Bijaoui, Françoise Billebaud, Nadejda Blagorodnova, Thierry Bloch, Klaas de Boer, Marco Bonfigli, Giuseppe Bono, François Bouchy, Steve Boudreault, Guy Boutonnet, Pascal Branet, Elme Breedt Lategan, Scott Brown, Pierre-Marie Brunet, Peter Bunclark†, Roberto Buonanno, Robert Butorafuchs, Joan Cambras, Heather Campbell, Christophe Carret, Manuel Carrillo, César Carrión, Fabien Chéreau, Jonathan Charnas, Ross Collins, Leonardo Corcione, Nick Cross, Jean-Charles Damery, Eric Darmigny, Peter De Cat, Céline Delle Luche, Markus Demleitner, Sékou Diakite, Carla Domingues, Sandra Dos Anjos, Laurent Douchy, Pierre Dubath, Yifat Dzigan, Sebastian Els, Wyn Evans, Guillaume Eynard Bontemps, Fernando de Felice, Agnès Fienga, Florin Fodor, Aidan Fries, Jan Fuchs, Flavio Fusi Pecci, Diego Fustes, Duncan Fyfe, Emilien Gaudin, Yoann Gérard, Anita Gómez, Ana González-Marcos, Andres Gúrpide, Eva Gallardo, Daniele Gardiol, Marwan Gebran, Nathalie Gerbier, Andreja Gomboc, Eva Grebel, Michel Grenon, Eric Grux, Pierre Guillout, Erik Høg, Gordon Hopkinson†, Albert Heyrovsky, Andrew Holland, Claude Huc, Jason Hunt, Brigitte Huynh, Giacinto Iannicola, Mike Irwin, Yago Isasi Parache, Thierry Jacq, Laurent Jean-Rigaud, Isabelle Jégouzo-Giroux, Asif Jan, Anne-Marie Janotto, François Jocteur-Monrozier, Paula Jofré, Anthony Jonckheere, Antoine Jorissen, Ralf Keil, Dae-Won Kim, Peter Klagyivik, Jonas Klüter, Jens Knude, Oleg Kochukhov, Indrek Kolka, Janez Kos, Irina Kovalenko, Maria Kudryashova, Ilya Kull, Alex Kutka, Frédéric Lacoste-Seris, Valéry Lainey, Claudia Lavalley, David LeBouquin, Vassili Lemaitre, Thierry Levoir, Chao Liu, Davide Loreggia, Denise Lorenz, Ian MacDonald, Marc Madaule, Tiago Magalhães Fernandes, Valeri Makarov, Jean-Christophe Malapert, Hervé Manche, Mathieu Marseille, Christophe Martayan, Oscar Martinez-Rubi, Paul Marty, Benjamin Massart, Emmanuel Mercier, Frédéric Meynadier, Shan Mignot, Bruno Miranda, Marco Molinaro, Marc Moniez, Alain Montmory, Stephan Morgenthaler, Ulisse Munari, Jérôme Narbonne, Anne-Thérèse Nguyen, Thomas Nordlander, Markus Nullmeier, Derek O’Callaghan, Pierre Ocvirk, Joaquín Ordieres-Meré, Patricio Ortiz, Jose Osorio, Dagmara Oszkiewicz, Alex Ouzounis, Fabien Péturaud, Max Palmer, Peregrine Park, Ester Pasquato, Xavier Passot, Marco Pecoraro, Roselyne Pedrosa, Christian Peltzer, Hanna Pentikäinen, Jordi Peralta, Bernard Pichon, Tuomo Pieniluoma, Enrico Pigozzi, Bertrand Plez, Joel Poels† , Ennio Poretti Merate, Arnaud Poulain, Guylaine Prat, Thibaut Prod’homme, Adrien Raffy, Serena Rago, Piero Ranalli, Gregory Rauw, Andrew Read, José Rebordao, Philippe Redon, Rita Ribeiro, Pascal Richard, Daniel Risquez, Brigitte Rocca-Volmerange, Nicolas de Roll, Siv Rosén, Idoia Ruiz-Fuertes, Federico Russo, Jan Rybizki, Damien Segransan, Arnaud Siebert, Helder Silva, Dimitris Sinachopoulos, Eric Slezak, Riccardo Smareglia, Michael Soffel, Danuta Sosnowska, Maxime Spano, Vytautas Straižys, Dirk Terrell, Stephan Theil, Carola Tiede, Brandon Tingley, Scott Trager, Licia Troisi, Paraskevi Tsalmantza, David Tur, Mattia Vaccari, Frédéric Vachier, Pau Vallès, Walter Van Hamme, Mihaly Varadi, Sjoert van Velzen, Lionel Veltz, Teresa Via, Jenni Virtanen, Antonio Volpicelli, Jean-Marie Wallut, Rainer Wichmann, Mark Wilkinson, Patrick Yvard, and Tim de Zeeuw. In addition to the DPAC consortium, past and present, there are numerous people, mostly in ESA and in industry, who have made or continue to make essential contributions to Gaia, for instance those employed in science and mission operations or in the design, manufacturing, integration, and testing of the spacecraft and its modules, subsystems, and units. Many of those will remain unnamed yet spent countless hours, occasionally during nights, weekends, and public holidays, in cold offices and dark clean rooms. At the risk of being incomplete, we specifically acknowledge, in alphabetical order, from Airbus DS (Toulouse): Alexandre Affre, Marie-Thérèse Aimé, Audrey Albert, Aurélien Albert-Aguilar, Hania Arsalane, Arnaud Aurousseau, Denis Bassi, Franck Bayle, Pierre-Luc Bazin, Emmanuelle Benninger, Philippe Bertrand, Jean-Bernard Biau, François Binter, Cédric Blanc, Eric Blonde, Patrick Bonzom, Bernard Bories, Jean-Jacques Bouisset, Joël Boyadjian, Isabelle Brault, Corinne Buge, Bertrand Calvel, Jean-Michel Camus, France Canton, Lionel Carminati, Michel Carrie, Didier Castel, Philippe Charvet, François Chassat, Fabrice Cherouat, Ludovic Chirouze, Michel Choquet, Claude Coatantiec, Emmanuel Collados, Philippe Corberand, Christelle Dauga, Robert Davancens, Catherine Deblock, Eric Decourbey, Charles Dekhtiar, Michel Delannoy, Michel Delgado, Damien Delmas, Emilie Demange, Victor Depeyre, Isabelle Desenclos, Christian Dio, Kevin Downes, Marie-Ange Duro, Eric Ecale, Omar Emam, Elizabeth Estrada, Coralie Falgayrac, Benjamin Farcot, Claude Faubert, Frédéric Faye, Sébastien Finana, Grégory Flandin, Loic Floury, Gilles Fongy, Michel Fruit, Florence Fusero, Christophe Gabilan, Jérémie Gaboriaud, Cyril Gallard, Damien Galy, Benjamin Gandon, Patrick Gareth, Eric Gelis, André Gellon, Laurent Georges, Philippe-Marie Gomez, José Goncalves, Frédéric Guedes, Vincent Guillemier, Thomas Guilpain, Stéphane Halbout, Marie Hanne, Grégory Hazera, Daniel Herbin, Tommy Hercher, Claude Hoarau le Papillon, Matthias Holz, Philippe Humbert, Sophie Jallade, Grégory Jonniaux, Frédéric Juillard, Philippe Jung, Charles Koeck, Marc Labaysse, Réné Laborde, Anouk Laborie, Jérôme Lacoste-Barutel, Baptiste Laynet, Virginie Le Gall, Julien L’Hermitte, Marc Le Roy, Christian Lebranchu, Didier Lebreton, Patrick Lelong, Jean-Luc Leon, Stephan Leppke, Franck Levallois, Philippe Lingot, Laurant Lobo, Céline Lopez, Jean-Michel Loupias, Carlos Luque, Sébastien Maes, Bruno Mamdy, Denis Marchais, Alexandre Marson, Benjamin Massart, Rémi Mauriac, Philippe Mayo, Caroline Meisse, Hervé Mercereau, Olivier Michel, Florent Minaire, Xavier Moisson, David Monteiro ,Denis Montperrus, Boris Niel, Cédric Papot, Jean-François Pasquier, Gareth Patrick, Pascal Paulet, Martin Peccia, Sylvie Peden, Sonia Penalva, Michel Pendaries, Philippe Peres, Grégory Personne, Dominique Pierot, Jean-Marc Pillot, Lydie Pinel, Fabien Piquemal, Vincent Poinsignon, Maxime Pomelec, André Porras, Pierre Pouny, Severin Provost, Sébastien Ramos, Fabienne Raux, Florian Reuscher, Nicolas Riguet, Mickael Roche, Gilles Rougier, Bruno Rouzier, Stephane Roy, Jean-Paul Ruffie, Frédéric Safa, Heloise Scheer, Claudie Serris, André Sobeczko, Jean-François Soucaille, Philippe Tatry, Théo Thomas, Pierre Thoral, Dominique Torcheux, Vincent Tortel, Stephane Touzeau, Didier Trantoul, Cyril Vétel, Jean-Axel Vatinel, Jean-Paul Vormus, and Marc Zanoni; from Airbus DS (Friedrichshafen): Jan Beck, Frank Blender, Volker Hashagen, Armin Hauser, Bastian Hell, Cosmas Heller, Matthias Holz, Heinz-Dieter Junginger, Klaus-Peter Koeble, Karin Pietroboni, Ulrich Rauscher, Rebekka Reichle, Florian Reuscher, Ariane Stephan, Christian Stierle, Riccardo Vascotto, Christian Hehr, Markus Schelkle, Rudi Kerner, Udo Schuhmacher, Peter Moeller, Rene Stritter, Jürgen Frank, Wolfram Beckert, Evelyn Walser, Steffen Roetzer, Fritz Vogel, and Friedbert Zilly; from Airbus DS (Stevenage): Mohammed Ali, David Bibby, Leisha Carratt, Veronica Carroll, Clive Catley, Patrick Chapman, Chris Chetwood, Tom Colegrove, Andrew Davies, Denis Di Filippantonio, Andy Dyne, Alex Elliot, Omar Emam, Colin Farmer, Steve Farrington, Nick Francis, Albert Gilchrist, Brian Grainger, Yann Le Hiress, Vicky Hodges, Jonathan Holroyd, Haroon Hussain, Roger Jarvis, Lewis Jenner, Steve King, Chris Lloyd, Neil Kimbrey, Alessandro Martis, Bal Matharu, Karen May, Florent Minaire, Katherine Mills, James Myatt, Chris Nicholas, Paul Norridge, David Perkins, Michael Pieri, Matthew Pigg, Angelo Povoleri, Robert Purvinskis, Phil Robson, Julien Saliege, Satti Sangha, Paramijt Singh, John Standing, Dongyao Tan, Keith Thomas, Rosalind Warren, Andy Whitehouse, Robert Wilson, Hazel Wood, Steven Danes, Scott Englefield, Juan Flores-Watson, Chris Lord, Allan Parry, Juliet Morris, Nick Gregory, and Ian Mansell. From ESA, in alphabetical order: Ricard Abello, Ivan Aksenov, Matthew Allen, Salim Ansari, Philippe Armbruster, Alessandro Atzei, Liesse Ayache, Samy Azaz, Jean-Pierre Balley, Manuela Baroni, Rainer Bauske, Thomas Beck, Gabriele Bellei, Carlos Bielsa, Gerhard Billig, Carmen Blasco, Andreas Boosz, Bruno Bras, Julia Braun, Thierry Bru, Frank Budnik, Joe Bush, Marco Butkovic, Jacques Candeé, David Cano, Carlos Casas, Francesco Castellini, David Chapmann, Nebil Cinar, Mark Clements, Giovanni Colangelo, Peter Collins, Ana Colorado McEvoy, Vincente Companys, Federico Cordero, Sylvain Damiani, Fabienne Delhaise, Gianpiero Di Girolamo, Yannis Diamantidis, John Dodsworth, Ernesto Dölling, Jane Douglas, Jean Doutreleau, Dominic Doyle, Mark Drapes, Frank Dreger, Peter Droll, Gerhard Drolshagen, Bret Durrett, Christina Eilers, Yannick Enginger, Alessandro Ercolani, Matthias Erdmann, Orcun Ergincan, Robert Ernst, Daniel Escolar, Maria Espina, Hugh Evans, Fabio Favata, Stefano Ferreri, Daniel Firre, Michael Flegel, Melanie Flentge, Alan Flowers, Steve Foley, Jens Freihöfer, Rob Furnell, Julio Gallegos, Philippe Garé, Wahida Gasti, José Gavira, Frank Geerling, Franck Germes, Gottlob Gienger, Bénédicte Girouart, Bernard Godard, Nick Godfrey, César Gómez Hernández, Roy Gouka, Cosimo Greco, Robert Guilanya, Kester Habermann, Manfred Hadwiger, Ian Harrison, Angela Head, Martin Hechler, Kjeld Hjortnaes, John Hoar, Jacolien Hoek, Frank Hoffmann, Justin Howard, Arjan Hulsbosch, Christopher Hunter, Premysl Janik, José Jiménez, Emmanuel Joliet, Helma van de Kamp-Glasbergen, Simon Kellett, Andrea Kerruish, Kevin Kewin, Oliver Kiddle, Sabine Kielbassa, Volker Kirschner, Kees van ’t Klooster, Jan Kolmas, Oliver El Korashy, Arek Kowalczyk, Holger Krag, Benoît Lainé, Markus Landgraf, Sven Landstroem, Mathias Lauer, Robert Launer, Laurence Tu-Mai Levan, Mark ter Linden, Santiago Llorente, Tim Lock, Alejandro Lopez-Lozano, Guillermo Lorenzo, Tiago Loureiro, James Madison, Juan Manuel Garcia, Federico di Marco, Jonas Marie, Filip Marinic, Pier Mario Besso, Arturo Martín Polegre, Ander Martínez, Monica Martínez Fernández, Marco Massaro, Paolo de Meo, Ana Mestre, Luca Michienzi, David Milligan, Ali Mohammadzadeh, David Monteiro, Richard Morgan-Owen, Trevor Morley, Prisca Mühlmann, Jana Mulacova, Michael Müller, Pablo Munoz, Petteri Nieminen, Alfred Nillies, Wilfried Nzoubou, Alistair O’Connell, Karen O’Flaherty, Alfonso Olias Sanz, Oscar Pace, Mohini Parameswaran, Ramon Pardo, Taniya Parikh, Paul Parsons, Panos Partheniou, Torgeir Paulsen, Dario Pellegrinetti, José-Louis Pellon-Bailon, Joe Pereira, Michael Perryman, Christian Philippe, Alex Popescu, Frédéric Raison, Riccardo Rampini, Florian Renk, Alfonso Rivero, Andrew Robson, Gerd Rössling, Martina Rossmann, Markus Rückert, Andreas Rudolph, Frédéric Safa, Jamie Salt, Giovanni Santin, Fabio de Santis, Rui Santos, Giuseppe Sarri, Stefano Scaglioni, Melanie Schabe, Dominic Schäfer, Micha Schmidt, Rudolf Schmidt, Ared Schnorhk, Klaus-Jürgen Schulz, Jean Schütz, Julia Schwartz, Andreas Scior, Jörg Seifert, Christopher Semprimoschnig, Ed Serpell, Iñaki Serraller Vizcaino, Gunther Sessler, Felicity Sheasby, Alex Short, Heike Sillack, Swamy Siram, Christopher Smith, Claudio Sollazzo, Steven Straw, Pilar de Teodoro, Mark Thompson, Giulio Tonelloto, Felice Torelli, Raffaele Tosellini, Cecil Tranquille, Irren Tsu-Silva, Livio Tucci, Aileen Urwin, Jean-Baptiste Valet, Martin Vannier, Enrico Vassallo, David Verrier, Sam Verstaen, Rüdiger Vetter, José Villalvilla, Raffaele Vitulli, Mildred Vögele, Sergio Volonté, Catherine Watson, Karsten Weber, Daniel Werner, Gary Whitehead, Gavin Williams, Alistair Winton, Michael Witting, Peter Wright, Karlie Yeung, Marco Zambianchi, and Igor Zayer, and finally Vincenzo Innocente from CERN. ��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/unit_inspector_plot.lfm�������������������������������������������������������0000644�0001751�0001751�00000031253�14614535560�020306� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object form_inspection1: Tform_inspection1 Cursor = crHandPoint Left = 629 Height = 270 Top = 283 Width = 948 Caption = 'Image inspection' ClientHeight = 270 ClientWidth = 948 KeyPreview = True OnClose = FormClose OnKeyPress = FormKeyPress OnShow = FormShow Position = poDesktopCenter LCLVersion = '3.0.0.3' object undo_button1: TBitBtn Left = 712 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 = 784 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 = 712 Height = 26 Hint = 'Show image distortion using the star positions and solution. Lines a 50x larger then distortion.' Top = 88 Width = 186 AutoSize = True Caption = 'Show distortion' Constraints.MinWidth = 186 Images = mainwindow.ImageList1 ImageIndex = 40 OnClick = show_distortion1Click ParentShowHint = False ShowHint = True TabOrder = 1 end object aberration_inspector1: TBitBtn Left = 712 Height = 26 Hint = 'Makes a compilation of the image corners and the center for a closer inspection.' Top = 128 Width = 186 AutoSize = True Caption = 'Aberration inspector F6' Constraints.MinWidth = 186 Images = mainwindow.ImageList1 ImageIndex = 39 OnClick = aberration_inspector1Click ParentShowHint = False ShowHint = True TabOrder = 2 end object background_values1: TBitBtn Left = 712 Height = 25 Hint = 'Annotate the image with the median background values relative to the center.' Top = 48 Width = 186 AutoSize = True Caption = 'Background values' Constraints.MinWidth = 186 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 = 86 AutoSize = True 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 = 71 Caption = 'Extra stars' ParentShowHint = False ShowHint = True TabOrder = 1 OnChange = extra_stars1Change end object rectangle1: TRadioButton Left = 17 Height = 19 Hint = 'Octagon shape. For perfect optic the octagon will form a square' Top = 40 Width = 64 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 = 60 Caption = 'Triangle' ParentShowHint = False ShowHint = True TabOrder = 3 OnChange = triangle1Change 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' ) ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 Text = '0' OnChange = measuring_angle1Change 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 = 153 Caption = 'Add unroundness vectors' Checked = True ParentShowHint = False ShowHint = True State = cbChecked TabOrder = 0 OnChange = vectors1Change 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 = 76 Caption = 'Add values' ParentShowHint = False ShowHint = True TabOrder = 1 OnChange = values1Change 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 = 107 Caption = 'Voronoi diagram' ParentShowHint = False ShowHint = True TabOrder = 2 OnChange = voronoi1Change 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 = 124 Caption = '2D contour diagram' ParentShowHint = False ShowHint = True TabOrder = 3 OnChange = contour1Change 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 = 49 AutoSize = True Caption = 'HFD' ParentShowHint = False ShowHint = True TabOrder = 4 OnClick = roundness1Click 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' ParentShowHint = False ShowHint = True TabOrder = 5 OnClick = roundness1Click 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 = 904 Height = 17 Hint = 'Data to clipboard' Top = 88 Width = 18 ParentShowHint = False ShowHint = True TabOrder = 5 end object GroupBox4: TGroupBox Left = 456 Height = 200 Top = 56 Width = 199 ClientHeight = 180 ClientWidth = 195 TabOrder = 6 object background_contour1: TBitBtn Left = 8 Height = 25 Hint = 'Show the background values as a contour' Top = 136 Width = 186 AutoSize = True Caption = 'Background contour' Constraints.MinWidth = 186 Images = mainwindow.ImageList1 OnClick = background_contour1Click ParentShowHint = False ShowHint = True TabOrder = 0 end object grid_size1: TComboBox Left = 104 Height = 23 Hint = 'Grid used for median values.' Top = 48 Width = 72 DropDownCount = 13 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( '20' '30' '40' ) ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 Text = '30' OnChange = grid_size1Change end object Label1: TLabel Left = 24 Height = 15 Top = 48 Width = 68 Caption = 'Grid size[px]:' end object gradations1: TComboBox Left = 104 Height = 23 Hint = 'How many background shall be detected' Top = 88 Width = 72 DropDownCount = 13 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( '5' '10' '20' '30' ) ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 Text = '10' OnChange = gradations1Change end object Label2: TLabel Left = 24 Height = 15 Top = 88 Width = 60 Caption = 'Gradations:' end object Label3: TLabel Left = 24 Height = 15 Top = 8 Width = 41 Caption = 'Binning' end object bin_factor1: TComboBox Left = 104 Height = 23 Hint = 'Bin current image in the viewer. Noise will be reduced.' Top = 5 Width = 72 ItemHeight = 15 ItemIndex = 1 Items.Strings = ( '1x1' '2x2' '3x3' '4x4' ) ParentFont = False Style = csDropDownList TabOrder = 3 Text = '2x2' OnChange = bin_factor1Change end end end �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/unit_sqm.pas������������������������������������������������������������������0000644�0001751�0001751�00000027411�14614535560�016050� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_sqm; {Copyright (C) 2017, 2024 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; bortle1: 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; backup_made : boolean; function calculate_sqm(get_bk,get_his : boolean; var pedestal2 : integer) : boolean; {calculate sky background value} var correction,az,airm : 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; if backup_made=false then //else the backup is already made in applyDF1 begin backup_img; {move viewer data to img_backup} backup_made:=true; end; bin_X2X3X4(2); //bin 2x2 end else form_sqm1.green_message1.caption:=''; end; if ((head.mzero=0) or (head.mzero_radius<>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} head.mzero_radius:=99;{calibrate for extended objects} plot_and_measure_stars(true {calibration},false {plot stars},false{report lim magnitude}); end; result:=false; if head.mzero>0 then begin if get_bk then get_background(0,img_loaded,get_his {histogram},false {calculate also noise level} ,{var}bck); 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>=bck.backgr 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:=head.mzero - ln((bck.backgr-pedestal2-head.pedestal)/sqr(head.cdelt2*3600){flux per arc sec})*2.5/ln(10) ;// +head.pedestal was the value added calibration calibration calculate_az_alt(1 {force calculation from ra, dec} ,head,{out}az,altitudefloat); // centalt:=inttostr(round(alt));{for reporting in menu sqm1} if altitudefloat>0 then begin airm:=airmass_calc(altitudefloat); correction:= atmospheric_absorption(airm)- 0.28 {correction at zenith is defined as zero by subtracting 0.28}; sqmfloat:=sqmfloat+correction; result:=true; end else begin memo2_message('Negative altitude calculated!'); warning_str:=warning_str+'Negative altitude calculated!'; end; end else begin memo2_message('MZERO calibration failure!'); warning_str:=warning_str+'MZERO calibration failure!'; end; if backup_made then begin restore_img; backup_made:=false; end; end; function bortle(sqm: double): string; begin //https://en.wikipedia.org/wiki/Bortle_scale //https://www.cleardarksky.com/lp/ChrSprPkPAlp.html if sqm>21.99 then result:='Bortle 1, excellent dark-sky site' else if sqm>21.89 then result:='Bortle 2, truly dark site' else if sqm>21.69 then result:='Bortle 3, dark rural sky' else if sqm>21.25 then result:='Bortle 4, rural sky' else if sqm>20.49 then result:='Bortle 4.5, rural/suburban sky' else if sqm>19.50 then result:='Bortle 5, suburban sky' else if sqm>18.94 then result:='Bortle 6, bright suburban sky' else if sqm>18.38 then result:='Bortle=7, suburban/urban sky' else if sqm>17.80 then result:='Bortle 8, city sky' else result:='Bortle 9, inner-city sky'; 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.date_avg,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:='?'; bortle1.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:='?'; bortle1.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} if form_sqm1<>nil then {see form_sqm1.FormClose action to make this working reliable} begin backup_img; backup_made:=true;//required in calculateSQM for 2x2 bining OSC end; apply_dark_and_flat(img_loaded,head);{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},{var} pedestal2)=false then {failure in calculating sqm value} begin if altitudefloat<1 then error_message1.caption:=warning_str; warning_str:=''; //clear error message //error_message1.caption+'Could not retrieve or calculate altitude. Enter the default geographic location'+#10; sqm1.caption:='?'; bortle1.caption:=''; exit; end; {report} background1.caption:=inttostr(round(bck.backgr)); altitude1.caption:=inttostr(round(altitudefloat)); sqm1.caption:=floattostrF(sqmfloat,ffFixed,0,2); bortle1.caption:=bortle(sqmfloat); 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} backup_made:=false; 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_2024.05.01.orig/astap.lpr���������������������������������������������������������������������0000644�0001751�0001751�00000000656�14614535560�015335� 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. ����������������������������������������������������������������������������������././@LongLink���������������������������������������������������������������������������������������0000644�0000000�0000000�00000000151�00000000000�011600� L����������������������������������������������������������������������������������������������������ustar �root����������������������������root�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/__compile and make installer and copy to webpage, compile also 32 bit version .bat������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/__compile and make installer and copy to webpage, compile also 32 bit version 0000644�0001751�0001751�00000001236�14614535560�031503� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������del .\*.ppu del .\*.O d:\lazarus\lazbuild astap_w64.lpi -B pkzip25 -add astap .\astap.exe pkzip25 -add astap .\deep_sky.csv pkzip25 -add astap .\unprocessed_raw.exe copy astap.zip C:\webpage\webpage\homepage_hnsky /y "C:\Program Files (x86)\Inno Setup 5\compil32.exe" /cc C:\astap.fpc\output\astap_install.iss copy C:\astap.fpc\output\Output\mysetup.exe C:\webpage\webpage\homepage_hnsky\astap_setup.exe /y d:\lazarus\lazbuild astap_w32.lpi -B pkzip25 -add astapwin32 .\astap.exe pkzip25 -add astapwin32 .\deep_sky.csv pkzip25 -add astapwin32 .\variable_stars.csv copy astapwin32.zip C:\webpage\webpage\homepage_hnsky /y pause ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/astap_linux_cross_compile_to_Darwin X86 .lpi����������������������������������0000644�0001751�0001751�00000012462�14614535560�024076� 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_2024.05.01.orig/astap_main.lfm����������������������������������������������������������������0000644�0001751�0001751�00000254067�14614535560�016331� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object mainwindow: Tmainwindow Left = 78 Height = 634 Hint = ' ' Top = 184 Width = 1333 AllowDropFiles = True Caption = 'Astrometric Stacking Program and fits viewer (ASTAP)' ClientHeight = 634 ClientWidth = 1333 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 = '3.2.0.0' 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 StatusBar1: TStatusBar Left = 0 Height = 23 Top = 611 Width = 1333 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 PairSplitter1: TPairSplitter Cursor = crVSplit Left = 0 Height = 611 Top = 0 Width = 1333 Align = alClient Color = clForm Position = 176 SplitterType = pstVertical object PairSplitterSide1: TPairSplitterSide Cursor = crArrow Left = 0 Height = 176 Top = 0 Width = 1333 ClientWidth = 1333 ClientHeight = 176 object Panel_top_menu1: TPanel Left = 0 Height = 176 Top = 0 Width = 1333 Align = alClient AutoSize = True ClientHeight = 176 ClientWidth = 1333 ParentBackground = False TabOrder = 0 object Label2: TLabel Left = 47 Height = 25 Hint = 'Declination' Top = 27 Width = 11 Alignment = taRightJustify Caption = 'δ' Font.Height = -19 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True end object Label1: TLabel Left = 46 Height = 25 Hint = 'Right ascension' Top = 1 Width = 12 Alignment = taRightJustify Caption = 'α' Font.Height = -19 ParentColor = False ParentFont = False ParentShowHint = False ShowHint = True end object SpeedButton1: TSpeedButton Left = 1 Height = 22 Hint = 'Browse & preview fits files' Top = 10 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 ra1: TEdit Left = 67 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 = 2 Width = 95 ParentShowHint = False PopupMenu = PopupMenu_ra_dec1 ShowHint = True TabOrder = 0 Text = '00 00 00.0' OnChange = ra1Change OnDblClick = radec_search1Click end object ra_label: TLabel Left = 169 Height = 15 Top = 8 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 = 169 Height = 15 Top = 32 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 BitBtn1: TBitBtn Left = 241 Height = 42 Hint = 'Show stack menu. CTRL-A' Top = 7 Width = 48 AutoSize = True Caption = '∑ ' Font.Height = -24 OnClick = Stackimages1Click ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 1 end object solve_button1: TButton Left = 305 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 = 10 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 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 OnClick = solve_button1Click end object save1: TButton Left = 446 Height = 30 Hint = 'Save FITS file with plate solution' Top = 10 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 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 3 OnClick = SaveFITSwithupdatedheader1Click end object Polynomial1: TComboBox Left = 449 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 = 51 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' ) ParentColor = True ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 Text = 'WCS' OnChange = Polynomial1Change end object data_range_groupBox1: TGroupBox Left = 1 Height = 120 Hint = ' ' Top = 54 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 ParentBackground = False ParentFont = False TabOrder = 5 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 ParentShowHint = False ShowHint = True TabOrder = 2 Text = '0' OnEditingDone = min2EditingDone 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 ParentShowHint = False ShowHint = True TabOrder = 3 Text = '65535' OnEditingDone = max2EditingDone 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' ) ParentBidiMode = False ParentColor = True ParentShowHint = False ShowHint = True Style = csDropDownList TabOrder = 4 Text = 'Medium' OnChange = range1Change 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' ) ParentColor = True ParentShowHint = False ShowHint = True TabOrder = 5 Text = 'off' OnCloseUp = stretch1CloseUp OnExit = stretch1Exit 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 dec1: TEdit Left = 67 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 = 28 Width = 95 ParentShowHint = False PopupMenu = PopupMenu_ra_dec1 ShowHint = True TabOrder = 6 Text = '+00 00 00.00' OnChange = dec1Change OnDblClick = radec_search1Click end object inversemousewheel1: TCheckBox Left = 449 Height = 19 Hint = 'Inverse zoom action of the mouse wheel.' Top = 80 Width = 101 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 = 7 end object image_north_arrow1: TImage Left = 449 Height = 69 Hint = 'Long axis is north, small axis is east, F indicates flipped image.' Top = 104 Width = 69 ParentShowHint = False ShowHint = True Transparent = True end object PageControl1: TPageControl Left = 596 Height = 174 Top = 1 Width = 736 ActivePage = TabSheet1 Align = alClient BorderSpacing.Left = 595 TabIndex = 0 TabOrder = 8 object TabSheet1: TTabSheet Caption = 'Header' ClientHeight = 146 ClientWidth = 728 object Memo1: TMemo Left = 0 Height = 146 Top = 0 Width = 728 Align = alClient Font.Height = -9 Font.Name = 'Courier' Lines.Strings = ( '' ) ParentFont = False PopupMenu = PopupMenu_memo1 ScrollBars = ssVertical TabOrder = 0 WordWrap = False OnChange = Memo1Change OnKeyUp = Memo1KeyUp end end object TabSheet2: TTabSheet Caption = 'Table' ClientHeight = 146 ClientWidth = 728 object Memo3: TMemo Left = 0 Height = 146 Top = 0 Width = 728 Align = alClient Font.Height = -9 Font.Name = 'Courier' Lines.Strings = ( '' ) ParentFont = False ScrollBars = ssAutoVertical TabOrder = 0 WordWrap = False OnKeyUp = Memo1KeyUp end end end object UpDown1: TUpDown Left = 801 Height = 23 Hint = 'Scroll through the images and tables in the FITS extension.' Top = 2 Width = 47 Min = 0 OnClick = UpDown1Click Orientation = udHorizontal ParentShowHint = False Position = 0 ShowHint = True TabOrder = 9 Visible = False end object rotation1: TLabel Left = 523 Height = 15 Hint = 'Orientation of the image north axis, independent of flip settings.' Top = 132 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 flip_indication1: TLabel Left = 523 Height = 15 Hint = 'The image is flipped. Either the east is swapped with west or north is swapped with south.' Top = 152 Width = 6 Caption = 'F' 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 Visible = False end end end object PairSplitterSide2: TPairSplitterSide Cursor = crArrow Left = 0 Height = 430 Top = 181 Width = 1333 ClientWidth = 1333 ClientHeight = 430 object Panel1: TPanel Left = 0 Height = 430 Hint = 'hint' Top = 0 Width = 1333 Align = alClient ClientHeight = 430 ClientWidth = 1333 Color = 2105376 Font.CharSet = ANSI_CHARSET Font.Color = clBlack Font.Height = -12 Font.Pitch = fpVariable Font.Quality = fqDraft ParentBackground = False ParentColor = False ParentFont = False ParentShowHint = False TabOrder = 0 OnMouseDown = Panel1MouseDown OnMouseMove = Panel1MouseMove OnMouseWheelDown = Panel1MouseWheelDown OnMouseWheelUp = Panel1MouseWheelUp object Image1: TImage Left = 122 Height = 264 Top = -1 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 = 9 Height = 11 Top = 105 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 = 17 Height = 31 Hint = 'reference 1' Top = 1 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 = 16 Height = 28 Top = 32 Width = 158 Caption = 'Error loading file!!' Font.Color = clRed Font.Height = -20 ParentColor = False ParentFont = False Visible = False end object shape_marker2: TShape Left = 80 Height = 31 Hint = 'reference 2' Top = 1 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 = 137 Height = 31 Top = 1 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 = 193 Height = 31 Top = 1 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 = 249 Height = 31 Hint = 'Mount' Top = 1 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 = 9 Height = 11 Top = 137 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 = 9 Height = 11 Hint = '3' Top = 169 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 = 39 Height = 30 Top = 97 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 = 39 Height = 30 Top = 129 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 = 39 Height = 30 Top = 161 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 = 321 Height = 11 Hint = 'Lock unreliable, check position' Top = 9 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 boxshape1: TShape Left = 369 Height = 75 Hint = 'Select rectangle' Top = 25 Width = 104 Brush.Color = clNone Brush.Style = bsClear Enabled = False ParentShowHint = False Pen.Color = clYellow Pen.EndCap = pecSquare Pen.JoinStyle = pjsMiter Pen.Mode = pmXor Visible = False end end end 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 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 cal_batch1: TMenuItem AutoCheck = True Caption = ' ☑ option "Calibrate"' Hint = 'Calibrate image prior to solving' end object add_limiting_magn_check1: TMenuItem AutoCheck = True Caption = ' ☑ option "Add limiting magnitude, SQM, CENTALT"' 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. Will also add CENTALT if missing.' 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 version 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, filter"' Hint = 'Move selected images to a new directory based in the header info object name, exposure date and filter.' 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 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 online Gaia database up to about magnitude 20.' 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 flipVH1: TMenuItem Caption = 'Flip horizontal and vertical' Hint = 'This is equivalent to 180° rotation.' ImageIndex = 45 ShortCut = 16604 OnClick = flipVH1Click end object fittowindow1: TMenuItem Caption = 'Fit to window' Hint = 'Fit to window.' ShortCut = 16603 OnClick = fittowindow1Click end object zoomfactorone1: TMenuItem Caption = 'Zoom 100%' Hint = 'Zoom to 100%. Image pixels will match with screen pixels.' ShortCut = 16605 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 star_profile1: TMenuItem AutoCheck = True Caption = 'Star profile' Hint = 'Show the star profile for the star at the mouse cursor.' 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 grid_az_alt1: TMenuItem AutoCheck = True Caption = 'A, h grid' Hint = 'Adds an azimuth & altitude grid to image' OnClick = grid_az_alt1Click end object grid_ra_dec1: TMenuItem AutoCheck = True Caption = 'α, δ grid' Hint = 'Adds a right ascension & declination grid to image' ShortCut = 16455 OnClick = grid_ra_dec1Click 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 basic 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 angular_distance1: TMenuItem Caption = 'Angular distance (▭)' ImageIndex = 35 OnClick = angular_distance1Click end object measuretotalmagnitude1: TMenuItem Caption = 'Measure total magnitude (▭, ⬭)' Enabled = False Hint = 'This will report the total magnitude within the pulled shape. Press ctrl or shift for ellipse shape. Flux is measured relative to median background up to five pixels outside the shape. Best accuracy is achieved by using monochrome images.' OnClick = measuretotalmagnitude1Click end object show_statistics1: TMenuItem Caption = 'Show statistics (▭, ⬭)' Hint = 'Within selection shape. Calculate mean, median standard deviation, minimum and maximum values within the shape. Press ctrl or shift for ellipse shape.' ImageIndex = 34 OnClick = show_statistics1Click end object mpcreport1: TMenuItem Caption = 'MPC1992 report line (.)' Hint = 'Write a MPC1992 report line to the clipboard for the object at the cursor.. This report line can be tested at: https://minorplanetcenter.net/cgi-bin/checkmp.cgi' ImageIndex = 49 OnClick = mpcreport1Click end object export_star_info1: TMenuItem Caption = 'Star info to clipboard (▭)' Enabled = False Hint = 'Within selection shape. To clipboard the x,y positions, HFD, and if available α, δ and measured magnitude' ImageIndex = 48 OnClick = export_star_info1Click end object Separator3: TMenuItem Caption = '-' 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 manually 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 = 'Deepsky annotation (▭) (Simbad)' Hint = 'Annotate the selected area with deepsky object info from Simbad' ImageIndex = 38 OnClick = gaia_star_position1Click end object simbad_annotation_deepsky_filtered1: TMenuItem Caption = 'Deepsky annotion filtered (▭) (Simbad)' Hint = 'Annotate the selected area with deepsky object info from Simbad. A input will be shown to filter on object type.' ImageIndex = 38 OnClick = simbad_annotation_deepsky_filtered1Click end object MenuItem21: TMenuItem Caption = '-' end object simbad_annotation_star1: TMenuItem Caption = 'Star annotation (▭) (Simbad)' Hint = 'Annotate the selected area with star info from Simbad' ImageIndex = 18 OnClick = gaia_star_position1Click end object vizier_gaia_annotation1: TMenuItem Caption = 'Magnitude annotation (▭) (Gaia, transformed)' Hint = 'Annotate the selected area with transformed Gaia magnitudes from Vizier' ImageIndex = 18 OnClick = gaia_star_position1Click end object Separator2: TMenuItem Caption = '-' end object simbad_query1: TMenuItem Caption = 'Browser query (▭) (Simbad)' 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 = 'Browser query (▭) (HyperLeda)' 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 = 'Browser query (▭) (Ned)' 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 = 'Browser query (▭) (Gaia)' 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 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 dust_spot_removal1: TMenuItem Caption = 'Dark dust spot removal (▭)' Hint = 'To remove a dark spot caused by a dust particle. Select an ellipse shaped area by holding the CTRL key.' ImageIndex = 47 OnClick = dust_spot_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. Press ctrl of shift for ellipse shape. 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 ( ⬭)' 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 = { 4C7A320000001000000010000000F90B00000000000078DAED5D49A855CD113E 90049245B6C926F941C82204841FF240341B8785A222222A06E70147149C677D 8EA8CFF7C4795838C60115679C16A2E240200F17BAD1A0D908A2FE2690C42871 E89C6A6FDFF4EDD74355779F73EE7DEFF4A53843D757555D5DDDB7CFEDBE7D92 C49C0E1F3ECC80128F24B03E32542C4586CC6B3A77E14DE5F72D47E299BA02DE C683C9CB129F557CDB623C6F4A7248CDCDCD4C900F5677ED234BB5C7C73E9517 8EB76FDFAE929CAF92499E8C37519E785B1974A46229F6C8FC3E6511185F3FE8 CA40F121C54F4999BA5C5263C8C6A7C3B9F874FC363DA67C8C8D587CA87E9B0C 8C7D54DD656A94047DA8AD1F15F93A9E6FF75DDFC5B532049F1BDB716C514BD4 EF005506FDFBC354161AB663797CB0B53EC4DADC91D76603D65FF63C978D9DED BBDC35E609E94FA978DD78CB65938AA7DA6BC2DBC680267B7C6C29F1E178DDF8 3C662C50C76CB6E7ADACDA0EB55D63DB7767EAD7A858CC781C83A5C808C587DA 1FA2B79EB031F0B162B051ED8FF5DC14D2DFF86243FAB990BE527D0ED79D53C7 43BEF15074FCC568FB213113CB673E755FC477478327A610394F8919C1A7BB5F 93FFE0C1832A5E96A562FF9FCF8C78558FE91CAB5F27175256FA4D326AEE59F4 E3FC9790ECEF587E3D5E8D054399B5FAD7AF5F5F43329F9A27E94B2CB231D499 DBB2EDBA11F04C73EE63038BD01FC6AA07FC2F8015DDCD9E3204AEB922032B47 E597712E193ADEA2F1729928E5CFED17F5E666DE9DFA1E751FDE475BAEC547FC 96EA8BCF52BFC0C8E73E36D8B026FDB25E1FDD58BFD9F4CBEDDF47B7C0C9ED19 A35FE597712E5B74BC36BCAA9F8AC7E897CB642ABF6A03C5E732DEE7B87AF5EA 6012493EC7A4125FE24B7C38BE68A2DA6C2A7F892FF1259E8E6FA4F66FEBFF7C F18D6E7F892FF145C67FD97E4A7CD97EBAE6F7DFB7B92C893AFC88D4C9F3958F 0AE8F4F965FD77F1FA0F9B3B28B17E58CA3A72DD7F15A97A7DD6AD87FE6FB308 9C6F19BB624C52D609975452499D8FB2584F10ABEFF7FD8EA4F6912E3D18BC98 ECD72EC249F35CF2194BB432C47DCC7FD24C786CF9551B30BA75F52EE3A875A8 FDDF7C2A8D3AE651E3882A431B039D4946FCF563216BF48A58EBC672D091C77A BE587D38CBB9AC2CC0D7B17DC972A8FF2CD7D7D6BBBD49C0FA671B2FB60F61C4 18601EF6B30CFA1796535C67D1BEB28A9F24679F84F6B931FAEC98755A74BB27 E1D48494A3C568EE658137DA6CB8AFC5278EFF8E648D0FB0BF2EFCEF193F3AD9 D8F8C5942B0B6C1282ED0AED5F9728F147C4A3E76F1BA5FD67E183ACFD5FB67F BFB980D07984D03908DBBC04750EC3A583AA072B27C45F9D7D4F9690B809F57D CC18A1C6A36F9CC46C67D8F80AD97B11B38781CFBE4718FF637563F612B36143 EA25745FCB18FD4656784A19B28E2FAC0E4ADB76C55DC8DEA545C5D76F7EF50E E4263E24B03E32540C45868957B647472EACCC47E1C194C5C4E32A8B4B1EC6DE 22F2B1F6EBE450F9639627247EF288FD186D4F96F1E7732CC98AE099A45BB76E 5A6A6A6AE2CF2C36ECEEDDBBD9A3478FB4249EC76CD89B376F6A09F2A74C99A2 C563B13B77EEEC8087EB5DBB7659B193274F66DBB76FE724E3E17CC78E1DECEA D5AB5A82FC499326B1B6B6364E2D2D2D55BCB0F9F2E5CB5A82FC091326B0AD5B B772DAB66D1B3B70E040D587DDBB77E7F5A123C81F356A14DBB4691327D0BB7F FFFE1ADD67CE9C3112E4C33AF38D1B37B2CD9B37B3BD7BF77628F7A953A78C04 F9EBD6ADE37828A3CEE7C78F1FD7D2860D1B38FFDAB56B3BF85BC61F3972444B 2246C0DFB6583B78F0A096C68C19638D53817751C66DD498CAF7D7E48F0F7DFF 50E8FB8F64DE98EF70F2F15123BDBF27145F1455176B154C94F7A864890FB5BF C4D3712A9E228752C759E075328AF0BF2FD5530A7D97521EEF622AF1C5E075FF 63F25913EC1B0731E228460CC67EFF88EFFE70D87DC97C6418FBE41CF1A6BDD5 7CCAE1BB7F5F89F7C387D65FD1F117DA7E62F9BFFCF8D517958752CF2A2FF55D 9DB129D4FE18FE2B3FF13F35FB9B78E23AEC93A2E133E16C326D78AA6D582CC5 16AA5F30BA43F12EB945E17D64F8D4BD4B1FB51E307141C98F5DCF585C427C67 01758F69176F6C7CE2F11E8690FDB5653CD54F3A5E936D365E6A9DBA646265D8 F0365B30FA7D7C65AB4F4A9D141DCF79C46EBD7C2E5DBAC442E8E2C58BAC57AF 5EAC5FBF7E6CD0A0416CC488117CAE7BE6CC996CC182057CACB865CB16B667CF 1E76ECD83176FEFC7976FDFA7576EFDE3D8E75E1A1EF94F1E7CE9DABC15FB870 C11B0FD8B367CFB29E3D7BD6E0C78F1FCF66CC98518387B9EFA3478FD6E0017B F2E4498EEFDBB76F153F6EDC38141EB060932F1EB0870E1DE2F83E7DFAD4E0A7 4F9FEEC40316D62108FCC08103D9F0E1C3ABF8F9F3E7B355AB5655F130272FE3 010B7EF5C50316D605F8E2017BE2C40976E5CA152F026CE12DB0C0F9BED0B9C0 98F38018B921F33731E61E4D7C5D1D1FEA7F57FD53E6F6EA653E114D75F8FB59 51BFB5FBFECEAFE262FC3E55CAC85646683D1735AF11FD3750565FF4F1E347F6 E2C50B3E3682F59B305EFFF0E103AA0F7CF3E60D5BB972251FBB2E5DBA94AF55 5DB468117BF2E48913FFF5EB5776E3C60D8E5FB66C195BB870219B376F1E5BB1 62051FFBBD7CF992DBF5FCF973F6EAD52BF6E9D3A70E32216FC080011C0763C8 A143877239F02C00B6C0BB23972F5FCE962C59C2C7922047C6BF7FFF9EE7C17A 5B187B4E9B368DF5EFDF9F9FC35A2D581F0C6B68C13EB807E377613B941DC6D3 B05676F0E0C1DC0E18CBCE9A358B9709CA00FE047BC03FB0B615D6C802F6F1E3 C7ACB5B595AFEB3D7DFA341FD7CE9E3D9B63C166B8063FAC59B38663870D1BC6 468E1CC99E3D7BC65EBF7ECD79402FAC7D061D602B946FDFBE7D7CFC0CB6C278 1A6C029F40B96EDDBAC575C333DCDCB973797DC1F302940F6C837B13274EE4CF 45E04B783E81E3E2C58BD9B56BD7D8E7CF9F79D9E1190A78C15E903B76EC58EE 6FC04D9D3A95F5E8D183EB065FC0F307F809F40A9FBF7DFB963F07805DB0361B 9EBDC07FF04C3067CE1CEEEBBB77EF32E0FBF2E50B33C52CD43DC4CFC3870FD9 FDFBF7D9D3A74FD9BB77EF78ECCAFAEA8D32487F48E9784A7F4BE943E508D7BD 1CB81FA5B43DA59729FD3BA53D95DF38F656AEE1FEB60A9F2EB5C1DF9C521A90 D2D3947E52C1C3F159E53EE4B76AB04DC4DF5D9A14FC9F529A56396F97CA2A1C 0CD77FA99C03DF3105FFD7947E5D39FF21A55F2A78B87E5B39FFAE521E39FD87 68FF7F35FABFB3E877A5638EF29F48696B4ABD53FA31D1FF90A64AD77F4F69AD 4646ABA1FE21FD3CA57F4A65FF9D21FEDA34F127D2FE94FE91D2BF527A91D26F 0DBEE8598907E0F924DDFF7D4A7F4CE9FB8A9DBFA8873577F5DA2FC9D4D29230 1DB970EDEDEDCC8475C9C0F09BF0365C7BE5E49B7DB578CB5E1D897C14781853 50F07026FE37A4EA77EC15F22DBFBDCACCE4F20B992A55EFC3B152788107DDC2 7E9083EAB7A4FD3B84ED8015F58C8925E095CB0D3660B17A79096B843684FDFE 1F3D7AB4B1CFB7E5352A1EEE855057F75F597F8DEF3FDFB183C0BA7C6AAA2B93 0D98BA725D537D148A2FDB67B1F822EB3F347E43DA4F8CF66B4AF0DB938E42F9 B0F7551EF988CD53EFDBF0BA7C17BFED1A630F56874F797CFC81B1CDA4035B5E 1D1E5BFF3ABC0B6B2BB72B667D7CEF92872DB34D1EA5DC54FBCA84FB0F970F56 DEE749F7AE131B098CEEFD16D8F7BD84FC77D2A43F46F9F3F07F99F24BBEEF1A 0AD9032D64FF392AD6B67720660F36173F666F42932DB1F2B179217B59C6C0FB C8C0EEFD98650CC58E7FCFF6C742A977EFDE4158E9BB00452A2F150BFA426D8E E1379D6D40205FE880A37C4F9CBB7CA31EB17ED2E1854EF93C2BFD72B9555F9B F452EA1F137F3679BA3CD92E5B7C6163DDE6DFD8B177E7CE9D1A72F52B2A3F16 679323AE295859867A1F8335F1DB64606DA4CAF5B193E263DF315C083EC4FE10 FF51EB2F347E62C46F68FB0969BF365E58EB45B976C9309D6365A8C7AC13E811 A4EA97EF536485D841F5BD0E4BA983987AA93113D35725D69C604D292438DA08 C3134A181D43860CF1960F58413E58483A1958DF84E8A7945FE5A1D45DA88F54 A2D6735E3ECA3B6EEB513650F94B659962CE8950499E17F0396681D7CD99D8E6 5228F32F267C88FF6226F80F884C541CF6BE8ECF371F6BA7898F5A4E22DEC96F C11BDF3B8790617D5F31D206EB7BEF083248BEDCFDD39F79D7276005F9C60360 63C5ACAD5DE4D12E5DE97FD716BDBF } 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' TextFont.Height = -11 Title = 'ASTAP astrometric solver' TitleFont.Height = -23 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 = 736 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 = 960 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 az_alt1: TMenuItem AutoCheck = True Caption = 'A, h' Hint = 'Azimuth and altitude at the mouse pointer. Geographic longitude, latitude and time of observation should be specified in header.' OnClick = az_alt1Click 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 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_2024.05.01.orig/unit_gaussian_blur.pas��������������������������������������������������������0000644�0001751�0001751�00000012545�14614535560�020110� 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(var 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; h, w ,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,i,x]*weight; if colors>=2 then valg:=valg + scl[1,i,x]*weight; if colors>=3 then valb:=valb + scl[2,i,x]*weight; end; tcl[0,i,j] := valr; if colors>=2 then tcl[1,i,j] := valg; if colors>=3 then tcl[2,i,j] := valb; end; end; procedure BlurV (scl, tcl :image_array; K: TKernel; h, w,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,y,j]*weight; if colors>=2 then valg:=valg + scl[1,y,j]*weight; if colors>=3 then valb:=valb + scl[2,y,j]*weight; end; tcl[0,i,j] := valr; if colors>=2 then tcl[1,i,j] := valg; if colors>=3 then tcl[2,i,j] := valb; end; end; procedure gaussian_blur2(var img :image_array; radius: double);{apply gaussian blur on array} var K: TKernel; img_temp2 : image_array; w,h,colors :integer; begin if radius<0.001 then exit;//prevent runtime error for radius 0 MakeGaussianKernel(K, radius, 255, 1); colors:=Length(img); {colors} w:=Length(img[0,0]); {width} h:=Length(img[0]); {height} setlength(img_temp2,colors,h,w);{set length of image array} BlurH(img, img_temp2,k, h-1, w-1,colors); BlurV(img_temp2, img,k, h-1, w-1,colors); img_temp2:=nil; end; end. �����������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/unit_annotation.pas�����������������������������������������������������������0000644�0001751�0001751�00000271633�14614535560�017431� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_annotation; {deep sky and star annotation & photometry calibation of the image} {$mode delphi} {Copyright (C) 2017, 2024 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(fill_variable_list: boolean);{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 load_variable_13;{load variable stars. If loaded no action} procedure load_variable_15;{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(out stars_measured: integer);{measure or plot distortion} procedure plot_artificial_stars(img: image_array;head:theader;magnlimit: double);{plot stars as single pixel with a value as the mangitude. For super nova search} procedure plot_stars_used_for_solving(starlist1,starlist2: star_list; 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} var deepstring : Tstrings; linepos : integer; naam2,naam3,naam4: string; var {################# initialised variables #########################} 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 magn 11 loaded, 4 is variable magn 13 loaded, 5 is variable magn 15 loaded, 6=simbad} type tvariable_list = record {for photometry tab} ra : double; dec : double; abbr : string; end; var variable_list: array of tvariable_list;{for photometry tab} variable_list_length : integer=0; implementation uses unit_star_database, unit_stack, unit_star_align, unit_online_gaia, unit_astrometric_solving; 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,0]); {width} h:=Length(img[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,y2,x2]:=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 magn 11 loaded, 4 is variable magn 13 loaded, 5 is variable magn 15 loaded, 6=simbad} except; clear; beep; application.messagebox(pchar('The deep sky database was 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 magn 11 loaded, 4 is variable magn 13 loaded, 5 is variable magn 15 loaded, 6=simbad} except; clear; beep; application.messagebox(pchar('The variable star database not found!'),'',0); esc_pressed:=true; end; end; end; end; procedure load_variable_13;{load the variable star database once. If loaded no action} begin if database_nr<>4 then {load variable database} begin with deepstring do begin try LoadFromFile(database_path+'variable_stars_13.csv');{load deep sky data from file } database_nr:=4;{1 is deepsky, 2 is hyperleda, 3 is variable magn 11 loaded, 4 is variable magn 13 loaded, 5 is variable magn 15 loaded, 6=simbad} except; clear; beep; application.messagebox(pchar('The additional variable star database was not found! Download from the ASTAP webpage and install.'),'',0); esc_pressed:=true; exit; end; end; if copy(deepstring.strings[0],1,4)<>'V001' then application.messagebox(pchar('Please download and install a new version of the "Variable_stars" database!'),'',0{MB_OK}); end; end; procedure load_variable_15;{load the variable star database once. If loaded no action} begin if database_nr<>5 then {load variable database} begin with deepstring do begin try LoadFromFile(database_path+'variable_stars_15.csv');{load deep sky data from file } database_nr:=5;{1 is deepsky, 2 is hyperleda, 3 is variable magn 11 loaded, 4 is variable magn 13 loaded, 5 is variable magn 15 loaded, 6=simbad} except; clear; beep; application.messagebox(pchar('The additional variable star database was not found! Download from the ASTAP webpage and install.'),'',0); esc_pressed:=true; exit; end; end; if copy(deepstring.strings[0],1,4)<>'V001' then application.messagebox(pchar('Please download and install a new version of the "Variable_stars" database!'),'',0{MB_OK}); 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 magn 11 loaded, 4 is variable magn 13 loaded, 5 is variable magn 15 loaded, 6=simbad} except; clear; beep; application.messagebox(pchar('HyperLeda database not found! Download from the ASTAP webpage and install.'),'',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 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(fill_variable_list: boolean);{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,fitsX,fitsY, 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,x,y : integer; overlap : boolean; begin if ((head.naxis<>0) and (head.cd1_1<>0)) then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key flip_vertical:=mainwindow.flip_vertical1.Checked; flip_horizontal:=mainwindow.flip_horizontal1.Checked; if fill_variable_list=false then //for photometry begin fill_variable_list:=false; variable_list:=nil; variable_list_length:=0; end; {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 } pixel_to_celestial(head,(head.width+1)/2,(head.height+1)/2,mainwindow.Polynomial1.itemindex,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.cd1_1*head.cd2_2 - head.cd1_2*head.cd2_1>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.pen.Mode:=pmXor; 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 celestial_to_pixel(head,ra2,dec2, fitsX,fitsY);{ra,dec to fitsX,fitsY} x:=round(fitsX-1);//In image array range 0..width-1, fits count from 1, image from zero therefore subtract 1 y:=round(fitsY-1); 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 len:=length1/(abs(head.cdelt2)*60*10*2); {Length in pixels} if ((head.cdelt2<0.25*1/60) or (len>=1) or (database_nr>=3)) then//avoid too many object on images with a large FOV begin if ((database_nr>=3) and (database_nr<=5)) 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+head.crota2)*flipped; 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; {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, Plot green} {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); if ((fill_variable_list) and (text_counter<length(variable_list))) then //special option to add objects to list for photometry begin variable_list[text_counter].ra:=ra2; variable_list[text_counter].dec:=dec2; variable_list[text_counter].abbr:=naam2; variable_list_length:=text_counter; end; 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;//min size for large FOV 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, 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,fitsX,fitsY : double; name: string; flip_horizontal, flip_vertical: boolean; text_dimensions : array of textarea; i,text_counter,th,tw,x1,y1,x2,y2,x,y,count,counts,mode : integer; overlap : 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 } pixel_to_celestial(head,(head.width+1)/2,(head.height+1)/2,mainwindow.Polynomial1.itemindex,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); {$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.pen.mode:=pmXor; 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 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; celestial_to_pixel(head,ra,dec, fitsX,fitsY);{ra,dec to fitsX,fitsY} x:=round(fitsX-1);//In image array range 0..width-1, fits count from 1, image from zero therefore subtract 1 y:=round(fitsY-1); 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+')';//display V always if ((pos('S',head.passband_database)>0) or (stackmenu1.reference_database1.itemindex>5)) then //check passband_active in case auto selection is used. begin //Sloan filters used if vsp[count].SGmag<>'?' then name:=name+'_SG='+vsp[count].Vmag+'('+vsp[count].Verr+')'; if vsp[count].SRmag<>'?' then name:=name+'_SR='+vsp[count].Bmag+'('+vsp[count].Berr+')'; if vsp[count].SImag<>'?' then name:=name+'_SI='+vsp[count].Rmag+'('+vsp[count].Rerr+')'; end else begin //UBVR if vsp[count].Bmag<>'?' then name:=name+'_B='+vsp[count].Bmag+'('+vsp[count].Berr+')'; if vsp[count].Rmag<>'?' then name:=name+'_R='+vsp[count].Rmag+'('+vsp[count].Rerr+')'; end 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_mean(list: array of double; leng : integer; out mean,standard_error_mean,cv : double);{Remove outliers from population using MAD. } var {idea from https://eurekastatistics.com/using-the-median-absolute-deviation-to-find-outliers/} i,count : integer; median, mad,sd : 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} sd:=mad*1.4826;//standard deviation calculated from mad if median>0 then cv:=sd/median; {Coefficient of variation, defined as the ratio of the standard deviation to the mean} count:=0; mean:=0; standard_error_mean:=0; for i:=0 to leng-1 do if abs(list[i]-median)<1.50*sd 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 begin mean:=mean/count; {mean without using outliers} standard_error_mean:=sd/sqrt(count); //https://onlinestatbook.com/2/estimation/mean.html end; end; procedure get_database_passband(filterstr: string; out passband :string);//report local or online database and the database passband var datab,filterstrUP :string; begin datab:=stackmenu1.reference_database1.text; if ((pos('auto',datab)>0) or (pos('Local',datab)>0)) then //local or auto begin //auto filterstrUP:=uppercase(filterstr); if ((length(filterstrUP)=0) or (pos('CV',filterstrUP)>0)) then passband:='BP' //Johnson-V, online else if pos('S',filterstrUP)>0 then //sloan begin if pos('G',filterstrUP)>0 then passband:='SG' //SDSS-g else if pos('R',filterstrUP)>0 then passband:='SR' //SDSS-r else if pos('I',filterstrUP)>0 then passband:='SI' //SDSS-i else passband:='BP' //online ; //unknown end else //Johnson-Cousins if pos('G',filterstrUP)>0 then passband:='V' //TG, Johnson-V, online else if pos('V',filterstrUP)>0 then passband:='V' //Johnson-V, online else if pos('B',filterstrUP)>0 then passband:='B' //Johnson-V, online Blue else if pos('R',filterstrUP)>0 then passband:='R' //Johnson-V, online red else passband:='BP'; //online take clear view memo2_message('Auto selected transformation as set in tab Photometry. Filter='+filterstr+'. Online Gaia ->'+passband); end else //manual begin if pos('BP',datab)>0 then passband:='BP' //Gaia blue=CV=Gray, online else if pos('V',datab)>0 then passband:='V' //Johnson-V, online else if pos('B',datab)>0 then passband:='B' //Johnson-B, online else if pos('R',datab)>0 then passband:='R' //Cousins-R, online else if pos('SG',datab)>0 then passband:='SG' //Gaia blue=CV=Gray, online else if pos('SR',datab)>0 then passband:='SR' //Johnson-V, online else if pos('SI',datab)>0 then passband:='SI' //Johnson-B, online else passband:='??'; memo2_message('Manual selected transformation as set in tab Photometry. Filter='+filterstr+'. Online Gaia ->'+passband); end; end; procedure plot_and_measure_stars(flux_calibration,plot_stars, report_lim_magn: boolean);{flux calibration, annotate, report limiting magnitude} var telescope_ra,telescope_dec,fov,ra2,dec2, magn,Bp_Rp, hfd1,star_fwhm,snr, flux, xc,yc, sep,SIN_dec_ref,COS_dec_ref, standard_error_mean,fov_org,fitsX,fitsY, frac1,frac2,frac3,frac4,u0,v0,x,y,x2,y2,flux_snr_7,apert,cv : double; star_total_counter,len, max_nr_stars, area1,area2,area3,area4,nrstars_required2,count,nrstars : integer; flip_horizontal, flip_vertical : boolean; mzero_array,hfd_x_sd : array of double; database_passband : string; data_max : single; starlist1 : star_list; procedure plot_star; var u,v,u2,v2 : double; 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} celestial_to_pixel(head,ra2,dec2, fitsX,fitsY);{ra,dec to fitsX,fitsY} x:=(fitsX-1);//In image array range 0..width-1, fits count from 1, image from zero therefore subtract 1 y:=(fitsY-1); 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(magn))+':'+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(magn)) ); len:=round((200-magn)/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) and (Bp_Rp<>-128 {if -128 then unreliable Johnson-V magnitude, either Bp or Rp is missing in Gaia})) then begin HFD(img_loaded,round(x),round(y), annulus_radius{14,annulus radius},head.mzero_radius,0 {adu_e. SNR only in ADU for consistency}, 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 ((img_loaded[0,round(yc),round(xc)]<data_max) and (img_loaded[0,round(yc-1),round(xc)]<data_max) and (img_loaded[0,round(yc+1),round(xc)]<data_max) and (img_loaded[0,round(yc),round(xc-1)]<data_max) and (img_loaded[0,round(yc),round(xc+1)]<data_max) and (img_loaded[0,round(yc-1),round(xc-1)]<data_max) and (img_loaded[0,round(yc-1),round(xc+1)]<data_max) and (img_loaded[0,round(yc+1),round(xc-1)]<data_max) and (img_loaded[0,round(yc+1),round(xc+1)]<data_max) ) then {not saturated} begin if counter_flux_measured>=length(mzero_array) then begin SetLength(mzero_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; mzero_array[counter_flux_measured]:=magn/10 + 2.5 * ln(flux)/ln(10); //should be constant for all stars 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 Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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 } pixel_to_celestial(head,(head.width+1)/2,(head.height+1)/2,1{wcs and sip if available},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.mode:=pmCopy; 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; data_max:=head.datamax_org-1; 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} 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} if flux_calibration then begin max_nr_stars:=round(head.width*head.height*(730/(2328*1760))); {limit to the brightest stars. Fainter stars have more noise} setlength(mzero_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 stackmenu1.reference_database1.itemindex=0 then //local database begin if select_star_database(stackmenu1.star_database1.text,head.height*abs(head.cdelt2) {fov})=false then exit; memo2_message('Using star database '+uppercase(name_database)); if uppercase(copy(name_database,1,1))='V' then passband_active:='magV' else passband_active:='magBP';// for reporting end else begin //Reading online database. Update if required get_database_passband(head.filter_name,database_passband);//report local or online database and the database passband ang_sep(telescope_ra,telescope_dec,gaia_ra,gaia_dec,sep); if ((sep>0.15*fov_org) or (online_database=nil)) then //other sky area, update Gaia database online begin if select_star_database(stackmenu1.star_database1.text,fov_org {fov})=false then exit; // max_nr_stars:=20; if read_stars(telescope_ra,telescope_dec,fov_org, database_type, max_nr_stars,{out} starlist1,{out} nrstars) then {read star from local star database to find the maximum magnitude required for this.Max magnitude is stored in mag2} begin //maximum magnitude mag2 is known for the amount of stars for calibration using online stars memo2_message('Requires stars down to magnitude '+floattostrF(mag2/10,FFgeneral,3,1)+ ' for '+inttostr( max_nr_stars)+' stars') ; if read_stars_online(telescope_ra,telescope_dec,fov_org, mag2/10 {max_magnitude})= false then begin memo2_message('Error. failure accessing Vizier for Gaia star database!'); Screen.Cursor:=crDefault; exit; end; end else begin memo2_message('Error 1476'); Screen.Cursor:=crDefault; exit; end; end; database_type:=0;//online convert_magnitudes(database_passband {set in call to get_database_passband}) //convert gaia magnitude to a new magnitude. If the type is already correct, no action will follow //database_passband will be stored in passband_active end; //online sincos(head.dec0,SIN_dec_ref,COS_dec_ref);{do this in advance since it is for each pixel the same} if database_type>1 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*sqr(fov)/sqr(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, magn,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, magn,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, magn,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, magn,Bp_Rp)) ) do plot_star;{add star} end; close_star_database; end else if database_type=1 then begin {W08 single file wide field database} if wide_database<>name_database then read_stars_wide_field;{load wide field stars array} count:=0; 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 magn:=wide_field_stars[count*3];{contains: mag1, ra1,dec1, magn,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 else begin //Database_type=0, Vizier online, Gaia count:=0; //database should all ready been filled while (count<length(online_database[0])) do {read stars} begin ra2:=online_database[0,count]; dec2:=online_database[1,count]; magn:=online_database[5,count]*10;//magnitude if magn<>0 then plot_star;{add star} 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(mzero_array,counter_flux_measured {length},head.mzero,standard_error_mean,cv );//calculate and store mzero in header head.passband_database:=passband_active; //passband_active is global variable. Now store in the header. head.passband_database can also be retrieved using keyword MZEROPAS if copy(stackmenu1.flux_aperture1.text,1,1)='m' then //=Max, calibration for extended objects update_float('MZERO =',' / Magnitude Zero Point. '+head.passband_database+'=-2.5*log(flux)+MZERO',false,head.mzero) else update_text ('MZERO =',' 0 / Unknown. Set aperture to MAX for ext. objects ');//use update_text to also clear any old comment update_float('MZEROR =',' / '+head.passband_database+'=-2.5*log(flux)+MZEROR using MZEROAPT',false,head.mzero);//mzero for aperture diameter MZEROAPT update_float('MZEROAPT=',' / Aperture radius used for MZEROR in pixels',false,head.mzero_radius); update_text ('MZEROPAS=',copy(char(39)+passband_active+char(39)+' ',1,21)+'/ Passband database used.'); // The magnitude measured is // fluxratio:=flux * 2.511886432^magn Should be the same for all stars // fluxratio/flux:=2.511886432^magn // magn:=ln(flux_ratio/flux)/ln(2.511886432) // str(ln(flux_ratio/flux)/ln(2.511886432):0:1,mag_str); // equals str(log(flux_ratio/flux)/log(2.511886432):0:1,mag_str); ln() can be replaced by log() in a division // Note log(2.511886432)=0.4 equals 1/2.5 // equals str(2.5*log(flux_ratio) - 2.5*log(flux)):0:1,mag_str); // equals 2.5*log(flux_ratio) is MZERO // so MZERO=2.5*ln(flux_ratio)/ln(10); // backward: // str(MZERO - 2.5*log(flux)):0:1,mag_str); // str(MZERO - 2.5*ln(flux)/ln(10)):0:1,mag_str); // // test proves it: // mag:=ln(flux_ratio/flux)/ln(2.511886432); // mag:=MZERO - 2.5*ln(flux)/ln(10); //flux_ratio:=exp(mzero*ln(10)/2.5); if head.mzero_radius=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(head.mzero_radius*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.'); memo2_message('Photometric calibration is only valid if the filter passband ('+head.filter_name+') is compatible with the passband reference database ('+head.passband_database+'). This is indicated by the coloured square icons in tab photometry.'); 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 7 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:=head.mzero-ln(flux_snr_7)*2.5/ln(10); //global variable. same as: mzero-ln(flux)*2.5/ln(10) magn_limit_str:='Limiting magnitude is '+ floattostrF(magn_limit,ffgeneral,3,1)+' ( σ='+floattostrF(standard_error_mean,ffgeneral,2,0)+', SNR=7, aperture ⌀'+stackmenu1.flux_aperture1.text+')'; memo2_message(magn_limit_str); mainwindow.caption:='Photometry calibration successful. '+magn_limit_str; end; end else begin magn_limit_str:='Calibration failure! Less then three usable stars found.'; mainwindow.caption:=magn_limit_str; memo2_message(magn_limit_str); end; mzero_array:=nil; hfd_x_sd:=nil; end; Screen.Cursor:=crDefault; end;{fits file} end;{plot stars} procedure measure_distortion(out stars_measured : integer);{measure or plot distortion} var telescope_ra,telescope_dec,fov,fov_org,ra2,dec2, mag2,Bp_Rp, hfd1,star_fwhm,snr, flux, xc,yc, frac1,frac2,frac3,frac4,u0,v0,x,y,x2,y2,astrometric_error_innner, astrometric_error_outer,sep, ra3,dec3,astrometric_error_innnerPS,astrometric_error_outerPS : double; star_total_counter, max_nr_stars, area1,area2,area3,area4,nrstars_required2,i,sub_counter, sub_counter2,sub_counter3,sub_counter4,scale,count, formalism : integer; flip_horizontal, flip_vertical : boolean; errors_sky_pixel1, errors_sky_pixel2,errors_pixel_sky1,errors_pixel_sky2 : array of double; procedure plot_star; var fitsX,fitsY : double; begin celestial_to_pixel(head,ra2,dec2, fitsX,fitsY);{ra,dec to fitsX,fitsY} x:=fitsX-1;//fits count from 1, image from zero therefore subtract 1 y:=fitsY-1; 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 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 ( (sqr(x-head.crpix1)+sqr(y-head.crpix2)<sqr(0.25*head.height)) and (sub_counter<length(errors_sky_pixel1))) then begin errors_sky_pixel1[sub_counter]:=sqrt(sqr(X-xc)+sqr(Y-yc));{add errors to array} inc(sub_counter); //check sky to pixel errors: if sub_counter3<length(errors_pixel_sky1) then begin pixel_to_celestial(head,xc+1,yc+1,formalism,ra3,dec3);{calculate the ra,dec position} ang_sep(ra3,dec3,ra2,dec2,errors_pixel_sky1[sub_counter3] );//angular seperation inc(sub_counter3); end; end; if ( (sqr(x-head.crpix1)+sqr(y-head.crpix2)>sqr(0.5*head.height)) and (sub_counter2<length(errors_sky_pixel2))) then begin errors_sky_pixel2[sub_counter2]:=sqrt(sqr(X-xc)+sqr(Y-yc));{add errors to array} inc(sub_counter2); //check sky to pixel errors: if sub_counter4<length(errors_pixel_sky2) then begin pixel_to_celestial(head,xc+1,yc+1,formalism,ra3,dec3);{calculate the ra,dec position} ang_sep(ra3,dec3,ra2,dec2,errors_pixel_sky2[sub_counter4] );//angular seperation inc(sub_counter4); end; end; 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 Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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 } pixel_to_celestial(head,(head.width+1)/2,(head.height+1)/2,0{wcs only},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.mode:=pmCopy; 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; sub_counter2:=0; sub_counter3:=0; sub_counter4:=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(errors_sky_pixel1,max_nr_stars); setlength(errors_sky_pixel2,max_nr_stars); setlength(errors_pixel_sky1,max_nr_stars); setlength(errors_pixel_sky2,max_nr_stars); {sets file290 so do before fov selection} if select_star_database(stackmenu1.star_database1.text,15 {neutral})=false then exit; 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} formalism:=mainwindow.Polynomial1.itemindex; if database_type>1 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)) ) do plot_star;{add star} end; close_star_database; end else begin {W08 database} if wide_database<>name_database then read_stars_wide_field;{load wide field stars array} count:=0; 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} astrometric_error_innner:=smedian(errors_sky_pixel1,sub_counter); //pixels astrometric_error_outer:=smedian(errors_sky_pixel2,sub_counter2); astrometric_error_innnerPS:=smedian(errors_pixel_sky1,sub_counter)*180/pi;//median value degrees astrometric_error_outerPS:=smedian(errors_pixel_sky2,sub_counter2)*180/pi; memo2_message('Pixel->Sky error inside '+floattostr4(astrometric_error_innnerPS*3600)+'" or ' +floattostr4(astrometric_error_innnerPS/head.cdelt2)+' pixel using '+inttostr(sub_counter3)+ ' stars.'+ ' Outside '+floattostr4(astrometric_error_outerPS*3600)+'" or ' +floattostr4(astrometric_error_outerPS/head.cdelt2)+' pixel using '+inttostr(sub_counter4)+ ' stars.'); memo2_message('Sky->Pixel error inside '+floattostr4(astrometric_error_innner*head.cdelt2*3600)+'" or ' +floattostr4(astrometric_error_innner)+' pixel using '+inttostr(sub_counter)+ ' stars.'+ ' Outside '+floattostr4(astrometric_error_outer*head.cdelt2*3600)+'" or ' +floattostr4(astrometric_error_outer)+' pixel using '+inttostr(sub_counter2)+ ' stars.'); mainwindow.image1.Canvas.Pen.mode:=pmXor; 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; mainwindow.image1.Canvas.textout(500,head.height-50,'Pixel->Sky error inside '+floattostr4(astrometric_error_innnerPS*3600)+'", outside '+floattostr4(astrometric_error_outerPS*3600)+'"'); mainwindow.image1.Canvas.textout(500,head.height-25,'Sky->Pixel error inside '+floattostr4(astrometric_error_innner*head.cdelt2*3600)+'", outside '+floattostr4(astrometric_error_outer*head.cdelt2*3600)+'"'); // errors_sky_pixel1 :=nil; not required auto deallocated // errors_sky_pixel2:=nil; Screen.Cursor:=crDefault; end;{fits file} end;{measure distortion} procedure plot_artificial_stars(img: image_array;head: theader; magnlimit:double);{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, m_limit,sep : double; x,y,count : integer; passband : string; procedure plot_star; begin celestial_to_pixel(head, ra2,dec2, fitsX,fitsY);{ra,dec to fitsX,fitsY} 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 if img[0,y,x]>=1000 then //empthy img[0,y,x]:=mag2 //no star at this location else img[0,y,x]:=-2.5*ln(power(10,-0.4*img[0,y,x]) + power(10,-0.4*mag2))/ln(10);//combine magnitudes end; end; begin if ((head.naxis<>0) and (head.cd1_1<>0)) then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key counter_flux_measured:=0; {find middle of the image} {Fits range 1..width, if range 1,2,3,4 then middle is 2.5=(4+1)/2 } pixel_to_celestial(head,(head.width+1)/2,(head.height+1)/2,0 {wcs is sufficient},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 exit; {sets file290 so do before fov selection} fov_org:= sqrt(sqr(head.width*head.cdelt1)+sqr(head.height*head.cdelt2))*pi/180; {field of view with 0% extra} m_limit:=magnlimit+1-0.5;//go one magnitude fainter //since G magnitude is used to retrieve which about 0.5 magnitude fainter then mag limit. {BP~GP+0.5} linepos:=2;{Set pointer to the beginning. First two lines are comments} // 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)) and (mag2<=m_limit*10)) 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)) and (mag2<=m_limit*10)) 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)) and (mag2<=m_limit*10)) 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)) and (mag2<=m_limit*10)) do plot_star;{add star} // end; // close_star_database; // end // else // if database_type=1 then {W08 database} // begin {W08, 001 database} // if wide_database<>name_database then // read_stars_wide_field;{load wide field stars array} // count:=0; // 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 // else begin //Database_type=0, Vizier online, Gaia ang_sep(telescope_ra,telescope_dec,gaia_ra,gaia_dec,sep); if ((sep>0.15*fov_org) or (online_database=nil)) then //other sky area, update Gaia database online begin if read_stars_online(telescope_ra,telescope_dec,fov_org,m_limit {max_magnitude}) then begin get_database_passband(head.filter_name,passband);//report local or online database and the database passband convert_magnitudes(passband) //convert gaia magnitude to a new magnitude. If the type is already correct, no action will follow end; end; count:=0; while count<length(online_database[0]) do {read stars} begin ra2:=online_database[0,count]; dec2:=online_database[1,count]; mag2:=online_database[5,count]*10; // transformed magnitude if mag2=0 then mag2:=online_database[3,count]*10; // use BP magnitude if mag2=0 then mag2:=(online_database[2,count]+0.5)*10; //use G magnitude instead, {BP~GP+0.5} plot_star;{add star} inc(count); end; end; Screen.Cursor:=crDefault; end;{fits file} end;{plot stars} procedure plot_stars_used_for_solving(starlist1,starlist2: star_list; 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*hd.cd2_2 - hd.cd1_2*hd.cd2_1>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 else flipped:=+1; 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_2024.05.01.orig/unit_xisf.pas�����������������������������������������������������������������0000644�0001751�0001751�00000042167�14614535560�016226� 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, 2024 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.} if head.cd1_1<>0 then begin 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('CRPIX1',head.crpix1); extract_double_keyword('CRPIX2',head.crpix2); end; 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('CDELT2',head.cdelt2); if head.cdelt2<>0 then begin extract_double_keyword('CROTA1',head.crota1); extract_double_keyword('CROTA2',head.crota2); extract_double_keyword('CDELT1',head.cdelt1); end; 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; bck.backgr:=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.height,head.width); for k:=1 to head.naxis3 do {do all colors} begin For i:=head.height-1 downto 0 do //XISF is top-down 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,i,j]:=fitsbuffer2[j] else if nrbits=-32 then {4 byte floating point FITS image} img_loaded2[k-1,i,j]:=65535*fitsbufferSINGLE[j]{store in memory array, scale from 0..1 to 0..65535} else if nrbits=8 then img_loaded2[k-1,i,j]:=(fitsbuffer[j]) else if nrbits=-64 then {8 byte, floating point bit FITS image} img_loaded2[k-1,i,j]:=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,i,j]:=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_2024.05.01.orig/unit_astrometry_net.pas�������������������������������������������������������0000644�0001751�0001751�00000027515�14614535560�020334� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_astrometry_net; {Copyright (C) 2017, 2024 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; Button2: 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 Button2Click(Sender: TObject); procedure cygwin1Change(Sender: TObject); procedure cygwin1DropDown(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: char); procedure FormShow(Sender: TObject); procedure keep_console_open1Change(Sender: TObject); procedure show_console1Change(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 button2.caption:='Stop'; 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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.Button2Click(Sender: TObject); begin esc_pressed:=true; button2.caption:='Stop pressed'; 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; procedure Tform_astrometry_net1.keep_console_open1Change(Sender: TObject); begin keep_console_open:=keep_console_open1.checked; end; procedure Tform_astrometry_net1.show_console1Change(Sender: TObject); begin show_console:=show_console1.checked; end; end. �����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/star_database_creation/�������������������������������������������������������0000755�0001751�0001751�00000000000�14614535560�020160� 5����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/star_database_creation/Pascal source AAVSO retrieval.rar����������������������0000644�0001751�0001751�00004011335�14614535560�026171� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������Rar!�ϐs�� �������t 7���C��%!W3� ��unit_retrieval.pas� <~ tkjL8%7y7@m9m$sOw aH%khf9ҋ\~Y%a9H/>,sv{aFg u ->öײؾw)uwe,t=oln7]Vlk0 kwDGo>4݈q-na0u?7r) ywK!_N18~1&>EE!E 7;xjq;rOqjn 1@3_Pza19pːiXáQrCG1mҧQ%:ljɥwE~0I._ػeN\+f,/S콪E<P]{/mvS}͈~hQeW`ؤrmàBu:Fr`UŮ dPV ~f"m~ Cvm 2%H`E1b{aCofN]K_y,]mvA%1v#/Coh�P([K4Rҟ&13z2Zq7G�;O3Z~["2m�yM淴\X WVH΃}we&Į.灰caWIEh^\:҃Gظ`;S Jc-'Q�jߓ8݈tx&(SMg&� FCc|XUb `ϲ 7}S|�_s#12�>'(`3xQ8=ww^Y˷JdZ[Idx'Zo}x`'"䉇9Pk\Uy%u5VABm?u"e*C>@ 𱑻u-ԑ ``͙혰vAEuGKp>p\n.lj*KB=!BS2CcG34MCflXU7=P" Tx҈#Gqb'}3!y:B2\(3ߌcrd5~WI(G@�@&8E(2NQS`ï+R3&-mE4qejFCuh3Hg)R0He nu=JF@*e F)4b511'BrÞS/%PAS<)Ǧ ]V|^H AJC2&MRtDa6Qxfo)\) r릅P>utoTl YF6:JPiSLK+V7d| Kj'\pld*H"JYT隿C~UJCP**\f*fՌ\u4T{tMCj[t$%m*Q;rg\n眨!-ʠinx~(' NPXRSh;^.~56E٭ԛ"nV?7 Nym@)8s7#fô-}" dnjm UMdHN3\x{B,6P{ y&|��htvu~Y-$uLjdCR&mnHU'N48?p 5ܔm PrAwg`b²*x3-8 Jyofcϋ]~!Q˧`L70S]P};YIᓌj j Cl 3a(M 0 {>d&uLW>8(x+ya͡ۊ;% όچQ-q pX hVR܇pVQ{ ǖN/ޗ1[*Z^ِgU6xyǧb_\;dRuW =d&*7 )(J )ptYf{<0!UD39 yOw̗$R E<ptBME՘UڊOq=un{p@8H�fg~Fw(96:0P|�G[Noa@Q54 `eָSm�oiw,no{5 6�ycv0~)E1Aԅ-rq6ήo f*,M]T+3K 2` B A2z_/1 ے%LY幕�߻@P "eFN� +@mhYsMQusHG/O2��Bfί!xLDS9QWՒ-AGdUDm,3T-}|k76�26e͙i =iLeL 9S$V-,i4ݐ"fyPto6>0B9HEG|Je3y8QxYC:@ `z,,hVv @7^z6\cr1җ'<QUu,*蘈G "zo(dD}"xIiIx l:ma'\�kL3S+x/A}n.c{dc{Sr6kz,}k?'+ 2\ÆK" 'Xǡx}ͷV9wIIB)b$4?9nwfRN ="Q 0$OSE_c0 Ud$kU@"@Zt͙D'&cЗ'D1 -/>U:B 0|)*42%Kl\ҩFp[l=ުuju-" 'ZF*|/-5b�+4@ *?fz+ohrUIz撖n>gcgg˒yZY4Ƀ/xK,a/IK+IK3_`n Jc ( {9T91c!CLbNӵC'1 '[}|~YHĺOYi&?JJy` ̹h+}`qQAEq|pqUr{cOknU#,ZW<*I}ׁ7q:U;1h$%ZбX e93P-EVR e2 E} #D50=jh6HƉ0xYh= v_$:yC6EpuNy# s;M rELIv!4O)DB1wr8y2d9ԉ+S2&de>m9=Qq ivdD qh )"/tɅL`( r-پB%etc+a@'9W9Y70\ފԆy l79.g�2/?0nc"z0TǎCsbjœ^ d:ڪe,Qy^yу@%ah-EvwWĸuMu+\*$"9#](T18S􃇎G|xp~}̬�Yl`Bl4*uuSAA-ASP)Ҵ(İLRTr^La*MAԤnxOpw ,L\ԋD2 ԍÃiW MӁ+-: ڕ2upr?!zݚ&z\JϢ^*~%x$!sŮ;8L{3Nl8=ä_^qiD:]jƛ[$(~e]=WsE{6&�뫨Uʣj ?_҇I:S-jw{wݏ .?Q# Dh?$2vd WcL�>2ppLd&w0`@l,emU�j%@%A,W1r5uK#LT('�X )$.}Y$f*ceC)O1G͘~2+k ,3 3Rt 8�$����5.W3� ��aavso_retrieval.lpr�  /[ Gc g% Ί4-z,NP!<!f|V/ ߃ ~Py*�B'AOcA@>Ii˗,;P (q<3^`^LDwAz#(R2W�HN سG3li*ׄbj3-}[Wb0~ۦD;=V[-D5~(Y0)rF{QsrYkRv+Kx/ۣqaO(t 8�����!W3� ��aavso_retrieval.lpi� P̐{WFн7ۨDZѩTvFmͻRE@rldrWD~881%Ĺ�}<DcVY2;ew[˷'ņ a .ya/w;z%=f*hhO vwz;cZ01$cAuQKC5fgh{xpH0㬗89 e͋'q~1uϭR0Hk x+z_f-T#yβ#|>`_I- 8ay“gp(s<3w8nTnc Ai7 턘ct|(m 2ɷØNi R*`Q)o P3ؐhW .ݒ/w_0IL9X^~ž@qr6$mzs%DG8UQcEmPT3=v<MCKr53b/2ΉO|OLPf葊[|#o{|d&k@I<&4w)[oY_oZuSсdN`гBTMg*Nƪ(Z@Qa}eh ni tpVNc+:&.y6%82yk1LڛAJ{?&iF@UFt 8� ����t!W3� ��aavso_retrieval.lps�e -x,-]c�BvVQ2-+ YϹwόwsxz~z4i:a p^RI&iUGSW[ojş^(!_qwwH`L.#FE| R)I<ʵ^>!2b w3{}:LeJTbN02{ Pa~ v2dZsӯpԍ-@gɬk= /߾N՛Ь7Md rK6v lmv~؆vst0󋄓5q4+1|" +Z&UNyeUӥvZUЮ+ [ս@#n#kcq$4'x'MW})YyRLJtSH[#>2D5qHO'n!eFVdچBv\N.V+Jմ\pJ5} W}|1t*!]ѝK7u_q*TҩW3_`cza?N_S)ȵiS%&鹈h 8(h¦{і 5^p_۱m&VDzzRYϽy\mV&: p's 6ҞIڕS:3SpN)s&!x?�<+)1wh6b̳?OOx)%|O~t \����&��ɞW3<� ��_Backup to source_AAVSO retrieval and save to all drives.bat A qH'N'(kKZfȸ/$7|N]]ٟOA\((#C2>B`qwnI3YtSEs-3ͣϤwN6rdÌiq+(oHË꡻/6CԞ"'TREz5iEm#CgZJG2(| `}p0{|"P@6_bR!t@7�)��[��gNW3� ��unit_retrieval.lfm�1X  xaiDs|$( 0v5{8 )FTRG[I7n�~ xO̒$H x\@^Bő ?]Ϸ!Bs?#ɧQ|I#_[Z! 1ع3|D2)n9\˷6[r09ҫ%Δˉ+ZA.=[~t$5hVxc~=ZfaFʹ$ʘ靎W3A�7ߴ(=<~shJ%")Xj@E5 ko`(%W=` 0當-az``VI`|bWN6nh &?`/fqCydm-.TGׁe!C';pYj.ؾ_\C.z?3OۑGx:N.80,@ #t粵u$LcJ;ATĝ,y.v~{VVPg%nn9𒄪Xu >kb {+,z[ kt@ t,�l���@m~vM3 � ��ssleay32.dll 3C !2CAMQ"AvF@#V$XTr@EuT~ CU ].1 ў}U]9<|=,t]^uWwa�(�\l` ��D@VKC.ddUL JD@dU$ H\wҪZEJP~EWw_ULFƋ3luౡ/ nǻX\xL{iɱ|>^/҈ץnZNza_M/7IK'ANv=\ꮟX4}>`Ǭ_HןYl~7UZ"0 (7F?oL|4 Uaj+ AT#~YʽE3wMkš1XCɕOqUWUxJ#5x#ֵX0g6h@KF!dž2tYwUKTb=g ڻ9>8\VT7eopV;V7XjGTWoTض{pKmR5sc5}gǮ ]i4#u۔?j@6ugf%)9cyJ(YYo72$4&-kJKR3׾IkR( aM87[ ںfٯ/j'm&;+gVaF]Gža !R=_tC[1J2g:(GwxL|0x(C]ix<�PXYеjbHIj#xR(l[270n_j6 #;7y&/9`ª`q[ w3U<D)Bٚ[,4V|!LzO q hR[o&6i�q =@Vuѕ?�x6O70J:Yx? }F0dںp )?T M/h%U]ĈK-e`9qYbBzZLkU~82T} RSgSհŬ'0m %1/uH SkeN|V1k-[=/˜'0[FWs. 0uӏ)lջI5�mL+.9NNC"4́lx0 w-pLC.lN%\֖p_~A7D=s91շo4$FJVv%"FqgBh8BT9+0jqW&%� 8}CPvK0WHry\=Ѡܺ<̝rtPucYNY )` l{wN#yGwr?B,lX(Hkh|G |4Iu ~ yRJ^p]oCKuE;¢Aw xֆ}׽^|_j[J5mJI9ol1\λR7nK0$V!h=ڗ{hM}\iզoLc@ov@)!Yq>Ѯ Cfpz\^nl;w5Vb ݔ9|m@ԇ]XoK4XN]jƱy$'8�o~ �,ӈ9PҕX-Y( n2dX ~YSj0wMYX Qz.g4.tFVY=q@@cz/ iW!nMQt(xV Z:ԛS>lD;N2e*jdۍyRsɓb]5<8F<V:8'NjU]=0 7(+8Krz%?˜P:>:i ()QR�+1�9X?$i| Ȋ썒oѣi>dTBJ(0H�މ ή'z3?a]ٕЫ3pE5jʃQ�A跌h'F#YmE-*j$'ٴľtJHI>vLI7\4Su/Q;YE0E~/se+s|ƪб< $Fkњ-^r8QhLssEbu ܕrNT#̢8l_qvH% -A!]#={)O1�/[d|h<ʵ6LR[r̓>KKyۧt3K/)ٲjn"U` '3o}qCIܝIS9t u[Frٽ Xfո2afт`,}h̉Ma왾XSt:ij(H*"th4],t쵆} 6Hsnr 7G m+ќ$g5IivDF|*ڎtI]s_ߍh9`-IfλœŸ\b{Tώ--9opQXP0qj񃖮R~ #BHTdcI K\Gvh-Z91ވ]LZ@0`-cƮv,&r҂9oGrl|HaqoG<mK(kƉ<Pd+wj7qsuzUuF'=E _ضuLHS :Pyay*�0 $뱦2:2hƯ|f41wJAbk@ny kbdV&>,eW<cD?E*I1ʫ89H1*iBl+ dS~͕-UIa/Dk@*Tw~a05/ "Q<Ƴ<ӛ.9)~NrP4K3z.y[4MLE.K�]$b <}ٕqw?+�: y:3e+{g={0] 6etGX4Qa:&1>&.c@B?ܘOYnE}94K8]0~%S8~O IӀL"3# ~.�mD Q{0˽7L(�Jc(8Zb`xKI;>Τ9.H+b@MYuZj `?!1 f7*FQp,k@ic#D*E6QU_BA9O8 en./xw *u`oG7H"_MT}Yy/NqA|`bb mD[ X+YXRSy$zw~AcY3:Y|`�ضo+!{j+DƱe lr T^Y {.!y#<N;,`vCKo P, ֶI]$/x]yO$;/]3Lu?1@(Whrfa(�f«_F-Hi:?:Qdܫ?Fl[F.>*9,Jiʡ\v4>}Ys=P'u*},ɅmA֑W s>b0 +Y:|]s-ݵvk>Ԇ80Qƻo+$bq,}WWPۊ.2-i!3%"M3e So tqo}g3sZ|i|I6q-j-٭ޭG f: /E3,E 0-D*FZ_ ,^;vi8Zbg7aMkc$pMQZ3$Q\?0,1PxXV$no*Ji49KVk amnuebXmy"GBK[HZTq\(2�dS3\I \tnb[;#Kf Vs탁4m0>ԑRZ+D8ֱW<<&l'IA9Q) _br[X =Xg~e6,U Sʢ=:JRc#DVyh[32bެ:숐N%)>WqD`ړ{3!ٲEj%^&EdyƯ3ͥ]̣`&z|ȩ,04,>q'+ g�MkVvaj;oFUHC_doK'XksSt; PJuη[:~rxu1TBbh;ļ.ȗYIJ#%y_4job'ap7ea-<w'6z 80 ~ҿ~p~ <M,Y'۟f(E, K-ue,X&X.&4؁W\p{BGnM[ϳ:Ϯ�V3_ĩuM&L ƆMCM&<Q{anh7'C˟I|U2LNze@amDZv).fAD0s&L ƫ{!,hHmCdʢ\{26h-j5頩�;0_>.ǙްI!8*Y{oXʕyjY^)^nȡX0XJ%6% v&r5I֮jǯt$ XèUO m.;qKC7;Ib_vO:D4]" cwm+MJ׍K,|v Kt`3"U`ZæS'XjzȲmy}Ycҧ+7͊$=RgkE!�3qgZ�js44-1i5 J1X$ܗ[<T1½UQ@aRsr 86 EZK$cSiax<V+4rjSaps<t?rrP.^Ե\%YhWnhk̛!q2il.Hh,ұB +ji2,d V-C ^+UK;20/H|nKq/u.A"Is!^N}#PFKr$d/J3'b*4>vEπJι\DZά˖,f5#<fEvz0jZy�8�Oo73rJg�z9&*rmQ9g{IL[(X.1٬\* 2WhS׺g 峐s. '@ꥆXӄte$D:3M6b*)r_y%EItG~w c(xd>(sW6C^s%nlNɾ֯c:Ƿ!|�v{e|[<4󕵵 * -}wzZigES-rk<i˒ (M%W}xAۼGŀ؁"z93.Izy"ZQ~;Eg1omt:{툿 d8ePVrp6}جIJ@o\{}�O}M/\iHy y!(yVGjCȖ) O`l X<�塊h鞶Y5;TϠ>N,>q6s;5|j KA5*q m:Lj௏ݕrL8׷&p30P>fizXVӕO �=s.@Kzaiמ2ڹh#c!Rpt@ ]�Io$Yo.gI1�DA9RTV:~16 ꟱Ri�?*}DjÄgsAM…k D蝵oܧIw ldG#&7&o*d:P#%d]R޼2)g�3! c8&`tfZU8Mzeu߷&E^բ[Wt aM+2OlLyaažkX[!׋P ̌HM/<p {ҘTTRYؙ͋vwqEX<ygZkXR-pkg8fnxՙf "#caNZlx'te7޿Ǒ̝C^.4V,ƚ8V'm>*z22;zAI?qb/@ O^3UhRÇE<s#U ̧U,Z&٫7u)@s&[N9yZDېM|1y(gpYٕ֨rhd ޙ1!WPzni+|Ělk-~b/5 rЖAK�(`KԋմKmj vѲZim�Lk tKw; $+u1`:6m߻Ɩ (w"K %Ci_LΨK(GݠOnkys-8Ra}M'YP7hø;Pڇο޹hl4ߎ|8t b҆%ȽlJoSUBIDc�=lX0i<P7n(a�@Bͻaif8aVX-ȕsHZTj:5P[ x>:tc 9Y̵)m3ꁇrq YG;--҃wDtmDAS?X{:)cDaOv۪\WK�gdSTVk͖NN^MJ"Yd`'G+ZbYdIqR>[j<o.̠$13H-K- kѼHhUĘ. 2n]RW $,boB3DPX>S#O5DTbMs:ϊK#0jN!ޭg4c6L7OJ/{ROm6$LpJ+ .z�0Cxјe8{p~6!w`aQOaԧ8+䡩ecz-ގD0\p3lu5�p\s>U֩b%Uevptc̷ i:0ϓMucjLSUn么ѤxMY?&g"H<.m}QO]OA > V^++*SG2`kōԨ;b/v5%\1D1G(7 GZɪ@`<꯫LjmxVlx% L4ϵbe[GEA2yݛCw*0Nv?wVbUjevvUۦz{hGK)b$QQN ՘Wܦi-c) qoXNLrs:v.%1ܞ9w])JxN [xjɆ慴%^;G0'EVB$$hEu%xhWBȓ+8pz7K5\$َ͒gEGFOvkUY֔`aqr޲mXV|e5nHD WJ EomV^QKF|Y2�js՘\aFl&n'x O%d2E- Vќ E= gg2STlN)p:krC0 v//yT*x5 MGr/Δ/ ee Z۸bDJ.DbDu7Hz1aHO2|Iw_H+ EիN*GRѕkuo۩vwϺ Ѱ{+zY)G5ѫGpQ"FwЁKBBcJȽVKq{j/4ocXq}F)hy\c#cLZ$b 3&-J=ӦQ~@xpnG)u;Elzf=N㽵Nڄg$*P(vP%TDM9ѵFK6ilc}ڠnS]q"jj#$>}+V?CR1%K36usd/8=.b|&٥ШoDZ|Ti֟<kQ~\ ,rōG/t1ݤs=D KB*^Z%?TN~@:$F-׈?˃룎�[9<|p̷~6|} {s [3 C4`kD|9U c$Aw6kh"j˜V�0 _�*fqj#WIVaO'P OO~L/3kgQ,#5 =}kI$b_jdA:-kEL+'TncJo`^3L:?' $O3`WI$`WA?_@u6�KBGVXߧNe "43c'r5&@c~쐨mF8gذ|yRZLm}-()o ꊗ4()S=!bdȑ6um̩T1@=HK =$>sO98Φ=q`T@ U,[ f݃WwkÙ=…;" f,R͒vŰH$#X3/[&U)+{7()BNp+6XO'n0\>>Vgzo&U�5ce3t-5EWO]H=)z2ݵh3`e52kԋs_)@z,FIh"-%?I>YyK6>DJqP~k3:1QCQLv3uG jg[V¾Y ] ݆Daz<~a_'-GYv4!gf>rSCn/d1'R$vD/6;4#w4<P8gM)Vw‹MvG􍈂Z$ZIab_n�m0\] ƋTʢT݇qSѶX%CSMWJB޻/ck>Z3!c^3^lUJ'_K>XZ 77/Vv J c&Τ7W0_l*1htF3_3u\EZvYƾT/97}XyQaI*vI6 * ,򑱽,m[զrœ~$jP78e*a | %CU&<W/diD ''b73myZ01 l=Jsl*9FkL<٦ /hJƓVwV_quY[6}iP7`Y`']3N_y`I҂tBdRBhR7 IۭM%w^%׳4?mU:̚@Ý?D]Sg'jB?\tuظ5V<z3kuc?<.gIR%`lL5ͨA.JAieBjvϧ. jbYJ<Wwjun/Xdj4>[,0O|DBK�sf˶gŅ,XZK c>96_eC `j ùsf玳9R,rQϕek:ӼzCm&LӯV[۔f p,/~^`d@nyBө1c),z8EeUeyF[Řb;͞lΗ͠PO.[05֣/'\faOFg�8˚ #"34%M}VިOU80τJyZluB[>]эد}9MU,S=_{` [εgJP[M!a~\Z›(0xGG1ݟ`= ]м-sm2BWGc%Vk |[wmGV,BD 8xNჾi WU�Hhkk)yϴ^Kaj}:XՍsQϕ4ԫP<VB?4SƒT=fs0kT黚A{é:"!L*usLD aX YrC}UrI e88zLRB`>`]ݞ\̈́=}`# (k;G>fqV,5X sx+D FJ)ӭmɢ# 1Gf|=zm'y Hvhh 4EAJ*Ԣ5֪\iUڃ�UaN _mt+#Ƃ@ɘ#nR dY;|\>;r<::P L?EfED[ 9 NF)8ItLʊ s n@ {J˂Ti}͗�م4fzW2 Pm8:1: _o5l3S'_ժC!LŨrMw�^!"f4Kc I~UJc g(vM]כ,*RK͑yfSKrf:~%VҞI-PZd-@wɖә98qNUA~!_*7ŪHQ6ywUU %!khߣ!Fxmb-D-LghQ B)g3"3g3q-[dvTM> /A`:Z7I=ea&V &Y~tV6d]TtM r.`Q[Rkֿa7cKO[i.ܙc,1=斧vڰ"7K\J5tj[ m>>&gXɂnO8{F0Ivxj DI^>6&^�#MxS7] bxv#?R;)XzM[isMQ&3I A#:nJ#ZHY*NP h^X90!z3tn1&u~f+u0I�n.9#P:4ݟ{VAb7z` 7όF(O<JIxI;Hk3to!抴P?n"'c/?`c%X�$RƘʮOO"9x:ܪ g|a}a;qQXiO0D` ~� zR zE!6g,J{gd!u=Rx#Q0&#  [Bޝ1BNExlM٬p[?ߪ�ǯ:"�? N#5Bw w~څ2rj,XL4tn22/65z{u!! ICm~7_:/LV|sŖe8MgL&'1HN]yB6%/]U&{.fyy*ZPrDUT+lӋCJrKۆ<;UoQ03Rq> 81~�5]*s5}e[$WgZF-Ų٦T:z\T Xd6s<S֗1N&sm|@KC; P UXb*gp[& /&9ޭ2Y5:?%VsdOc�rI(lir@5-J冉xR 3=D0T! y&\ QzY-#{+,ڝoN%6‚M�C0f%4mGp- Y}ܞf5.#wx++}�Σ;!u!K"=c%np=oUVFcu t&j &oNGׇI@b%C䇩 !V2ra4U49A!,j�o?�}8Abn '߷qc&kS=i'ub+* .5h>; nxm~{Do ~n]SMjur\T.;\ci32] ;6;v^aU|uØؙܸxzlCQB oԧ9χ$ '>[ۃGK DfL5a\FGNtGC2Lf=ůtu^a0/T6]S$¿rttL<%ѭoIz"P0UeUyCIyn1HUq[)Կտ>CyIǒ K?}i 1aN|@ΤHYspOC2!vb~36Em%8)2ѫ/>>HyDd'#v%i5܃OdөԶBcY&|]dgd6AY~N%VpnR2pfʝl93@:݁ߙۢIgB#>t&j#O1 whꁢd잃56F(S~hS; Y_ g%}.Pi'뱗ђ]6;}K(ΞSW̗WA(܎-tvjk7+K9`~`1^9OLآ1a"Ip|ɽ Sn džyF E"JndVi d 0ea4l)(HUV:B^a8尹N5Rن06qEOs�vOzCÑ5;{A猷<d&Q52@i6t3}0fZ� k0V9 /ڌ|2wɁiLXv'=ۥRlNl55tr~-0<L]'M"RV  Go7tًy|y:Ac iƀukKyaM s5%*~DQm+{u./typTO<ωI*O$cT(rCWV ؆4_93Qٻ=:1lr%>H'dpTh'C-2x0'BMaִ`?}Y<y5I' }%/3^OP߀rng H vv'f(\<i;h#o{Ih �'Ԉ*�NyP+;ڊ0#<*><-&o(><S«xǚb~q~nc;K</'}o8(\O${>+lvmhF]sMQuRE_p?u)Fh7coZp}U.8{P1!5iq&@畝{&-A3lE]8,⟊:/O] N!tw.3|G]a~5$uz\L;h:S^iΨy=x"@3Lٌg:߆jBE[Ƈw5L!6vŗ<Qbº+%=zT$ѓ>X3wqJ#EsQr(QɄ 8hWEme8[,qR:P<R)9LFFlPS^{a}0Q]Ya%Yľ=aߧ1Mk9:t <ݮV4RЫS !4ԲB“6C|aUaw+bwcS #_h4%SLBuJ,NN-~hP9P>h^x'`` d4:5G/2UK' @P:cHcڵ} |l.k>[nQU&'HPď&28ͥ}<H)7W5Au: pCW>DOCGwc{�f玺C<ɋ1xʶIyǙb@у|ly٬գFgǶx2_.ӏ>c͒Ni0~<cu;וw|tk",[ t�`zhc& u8vI7j3x P&c1|oU \qŦ( X¥WzG"ScܴGNmXֆq|O1a?nމ7WLqN@`5af&*2Kc2S?֟wxsڥݳ_)` n h[My0"NCr@]Ⱗ">{Cwbq@"jUU"/cch!۹Zda?qvD:Ӟ9VE:gf#n49{>PD-G{j| aՒMC-#32l2wh*нgv vfH=Ӛ XbTS^}ZTPfdi,=o'`<0@l 6ʪJ"/7:wWd6P= yJ۷&A$VI̖zS!Rƨܝ!n:CC2]j ~b\MOY0qiBF>ZjmwA^qU"dͳU$卌IUN ]8 L7*M8T&3"s4bNN]P8^BIJ&T'�i2s<^x6PCnLrbqSm%D#Df'Kvvkdԓm.!]@qbc{j:B F膊4UK8W"<aM2WwX5[2|?W xxAZY E Fv% JaOFݛb WE+4G&sP;<ڂ}F7SRg$9fԘ`o`QZJ#j@JL&R1!ZJ ;F-{;@eK msV``1cBt᧏1n>70X@wаcﶡfXeCpTؠ)ܝ ]09zA u. L'($B23ח OEB `V9rjg/��GS 8?Xm<<1rJבkz"NxSUC>�ܻLvw9q1>YsPݩG4a*f.ZβŪKD+b  Yql1FH1?i62|"iCg)m a&DSlۺ2ڭ!ӛЃe`׷/KN}(O9Z5ڠ.T.H:�`1}*%04Ce_7 цta35Tgty* C3`템4x8?* -ou`A喘`k%�x~.'T T.|G) wPb+iPd懘ҟb)Y''jJ48+OBm⮕|�GXrc`>5fͥG)Ko{|W q\ dΗrG SAzZ`k@>]p-B:OT3k\JHyF<&q:UFZ=|P{@1LD\[HhX]6ADeO(R(D"XU1T8S}ƂTc6SBJ›Ϯ:Ü*_T{&WDEi\5%zj DĽ#ԯ#�/@m|WC=yKEGd_Xsr ֺY0=ߴ9MđD&'!oڍfW#M:(n=Y8gSh}s*|C3}\>l9C F@eNDT8\pLaq\;t}mCap1~`nb2s.zWp,I[(-H;1:+, M-q#Kâ9Xw53i= KέTPɤsf>PO% Q; ,e"xq/Q3v!/zL1^xV~efѕ.QIBa/I2E2\q!qƦR$&/s)=Hc uTZ.'N? 9TeG[SrXL270GDm膀9xt1`{/ I@=9�'s_ CYCIWUv}geV} grW-A\¤7 b>tW?b$Ѳt("Ieje냝f͉Iw_>}Κ-Ja5њʽB5s*?>b^=\QMKKmA>'B؛dlO&>q^jDU d1^Sox8ZaC(LP{K댵?I,msՆl.)e be[~1Fص1ڨQ erHL,~ z~ȆSGz#wE>ܞOZ%ޙSc afrx5}z'6"D;Of�&9wMh'r,h'X["\1y�9qI zpC<zp3 2x {SX#s;G<t'>ѯ N@S�;y04TlX,a�Z5LcmPažxLAx'&v\Emn$i62tl>H8Mhq(say^a}P\�**nY8*›"7JU/v A_ƿ򄭑 <2�+i{=YמAWpPWVWFK�9\3>7 rkenS�(vb'xќȅ+ 06H7Ľ2X32eKqW˖@ۭ b.<HMq)֕ I4ݛ{4y�M?^li\\ k`*Lfno120ˣmcoyR+'\lo4yܕVҌ„3u3``itqNO|b7f^�JeVxT*|5X#[ʦ: A{y?U; 0pkUM#mɒ>JxgSn̢Mc^0)3:^wJA˝aG:x.v[zkp5`@?3{֔^ #Y _?a0՝@qy+k=,.Pv7xŐWsa~<7/eQ.K4 -F0n#P50sHc`!)*d,yY;,JǒL5%<5Qǘ5׶of%{H1aĝ2>jH) H2i_ϯ ?x;iԾԠTE˿~F.ʘ*I(Z\rܦfnowM~.3.;!q#J~BJmC~2ʝ0;B4o3Fa5\%x"!�ނ/s<x%Hlаw:҄qϪCR|Ep{kuTu{|֜|̀zxyE9 Jj>*}<v%fsNx? .|l>>Aw8T@}o5�w7ʚ܀gSViK~q{Eh}"Kԗk@wo&db&cQŷBbw8~.k?|Ug|{ f3)oKsBNARxca_j`Ըz!5j~Gd w0d�!�Gx.1;@Vo& YJƇ?\l4j$qC=t}WRk-K_Mr 5a 8p <$dK/wjygNp'o¦3b�gg\uD Ek724 /QSw:_v7yD"{j,Yb*dzPT&Rk)(kg�LvW\ �Me`});B8Ox,p '[8fmL"Gl( ؄OG ;xχ=@Hr~lǧM͞*+&0f3w~`?CU 0R% :%֯;Q7>:xb.bD @sxZnmfe8v@ ?8b)8?[�;� MLw8JD1H~0[~ X6`ǻeBȧi&Χ~$m-j0K] ng^L!:A�yۢXؽُU%)rF׆(SUS1sV1tI02+�(9S/yHex+2}4m9pO3RaJI�N"(x5+*N\l5oleFL�V|4z@FglR]Wij9r%Jݡɨ$A :Ռ)и#4`!)✝+vDZ%t;@uL r+MH 'H臼ql5-gN:t } 5'WhᬾIӵM'%>/G*w%jXO¦@3TlBlkzNMQ )@  gZw? kHmPJd_9 A"dqo$PkPM틔@Qk6):i&zLBš L>"PQ92T:l'\n+›hϢJ y{Ң_pb#Eqa F8�9Xq(p?>UX'  B,)aS2i 'ExX/nkS+3y5RvڨZ�@Zn?Q~Dve8 S|.ulk֋xkO}՚a6m-YœYwjuZݢMzClm#8Y�"1ⰾp]5;[z 'l?-7O㪆AoRi{WYBg|hב%䕠 %kg1b3F •/2FTsq9|*0+i'J(v;M �a|AcDu #{qyVT:.@wݹ?8 *cC_v£LJ%pXoΡ5'9&0[xUOIIMVķR,t&ukb=֘7" $muelQpx0IF)U9b;;>xd#x.Ojc<W͕wUCS`ؾ|M=Ͻ5!] gomIQ|Xw6{QP/^<{ ֫{gR1˄Foe-MݲݣNNޠOzR+UUvMƁqפ5?884 +bcQM'\ 9} ~rLe|uFwdke$oAqie,"4Ytu T*PiW|Ե CO䋈FB`7B>uUei8ҋD*K]P"VB+dL8kG3[nJ}<ɂgSFM7YfKn ZCccV-[.[fPQ+ n:d}L) AM} tHFukD$!*r+H d3{:Il)q <csfJs_ӟvO^�txI7f{Ԡf8>: �@p:�W�RM<H+) ˚+o\5u w'͏iC\]53qgRQ0$yzѧVЖNϬRukKj]%qSMsD fj F;Z,NP_+,n̤+ݴ4XŮU%ecӠ4Rƞ9Kn;B"R{Vb.( T 97s Y;x6d]T Bc)Um5tms;x4`Ia{6 \~SmZSU)tD l \ѿgS[5&Ô9?IԒ)$jUwrJCEqFat Yw 3=Y_k85U*xpB9ͥdW Q+\)Ib6vjo"{g`S>pׇ@u)DC2ЯZ5 ah~ z٥G ~n_ *0*z*OP`*]v!5>"ظǵ{NmRjp~H[Mv7StZA[lGu+HZd+ rw2R{$dCy3]lkw &D:؏G!Y#vC�X? K1K'$T<n:Fe)(U0 N¯Jԋv` &|ѝ3׫= /8 @/v#$ O8<#^Fw\(ɇ|We֪Ҽ-`*|2l4H #-8Es~$-`^\ J?&FҴ4؉,W$kS�PF.LPO>OVWj恩Հ֪Mz.N+ M7kI)9:Ib>")8gU^M!GoYj}j,煏uj|{X^MGu)OʿRB<ty4> 1/yx-Kb5@wvP K~jEzTJb> ^)l]{HyalBT6tNf\>/vr3B�("gTUQ00|˼<=?o"~lޘbj:B1pR#[v (28G.23A(BuLT q(*Qmzp\0?,`FRR/;Fk~K4՜%CTJo8o<c鹛3:<k7}z5HzSJŇ!gxEo})cͷ csNre7wߍڪTIv ⟵ =b_O&ȝș � A-"}lWli?֟苇?Ԛ/n ZD?-drO|<iC0?6"*#.Jj4l+] ?Z#5v0qwHH?^˞'">>9x94&ʋi߂U ߓԎqvK?(W73yjUl$IM3[,e_j3vus2|t΂ﻞIC76<CѹS3:xF\~n l"QT:=Xn屑߅G5>eI윔0B%b*> +KϪ>B~UTJ묋ycUӒo'eRՃXTCrKbzć֪&]QZ<\ 7JO#DKC;,c1LS9@0#2W?NK+_zn"0H.EDg+)T>٫^jm薄@-Ac8U;דya <_H9Dafm<Abp�Y N:Qd 5"D47� eN WU ɓ 0 g+`׮ǿ6YtlDg[\I8Í}"8Y`:zsԏ ю*y�3ݍu_DLt561nfkWhT=,~т-bV\I)ޑ;$eq!qr.z& K_-I"%|L'`maй_I;ͷ1}L\l݌Yd쯠uݦ�plTa?쩪%7P>,gvUxφۄwPD"znÍn߆5OyQ^JO覽OK,ԕ{ ?<} HgA8O{O>* ږJW |/w^Lb|r8'I,v(]1F. 8Y[2 [0P|OpkiaB.bIr£-̅*KBڞ7PH $zJ nIIXeZYMq/lTɯ#P3B# oMSUG(WހOgqhzNb}8/[đD03կUoE` \aghۖ t=fQiaiH=??I Xs QYΜxIݢRvMu˱zSBL"?/J) 3\L9W E|AOEIFa勿z4D<T0 HN'"?PPToS$}B~hvδ%; [-_ "µhlCR <rJjZyq'7>R$=ӡ*vu;z|q#G48"T/9)s"ua+ʫV1דAɷ_e>B,1KQ84+AW=)1/Q'^Zw婟Y稵X,„=ـ9T)3.8a7:QFywCt0Z$,Bp�# oAXf\[W~% gG*~ւxg^ 5^u^r9 0zkTSgQC LDQE6tmX8wMX[Up?:W3TlOr2I.>rP7 Wensւ ?e:(ЈtPY`i>5c5fsA�mwЪ*(ę"Z2q|N֌Cםƽ{;qERPR2vJqㆂ $bP:0l 1*&G>(NlkbF}\B-I;-&XSԎ@OFMՆʼnYw3sNSW}Q{J&w,(#NU H^EO--Pw2aH%MA=SO&IC[2N6=k>%Lgz܂�f8_BcBH. 2]f׌fh"S=={b #i1BXw/>w{5쩂ZAKH(Z4O' |qw|D_u~~Jy+?M*p"r.b[g\>}vx%'hۢz!Ӻ'E*ǘUi]*b6uL,OL*vF>=_"i5wLN=9m_P/>(TŃVK5ly\%ZtQ xr$vKۻ=y})8LT6H{: Ù/}+}ћBjvL I^O q#+L2)s/ʃ;>ҧM#!g1JI$!"@}7lUJ:=i H>c*lz` uޯ+_$V\O6NqaõZ7&/=+v".˟ zsl"o<S~ IMZ[{KBw(MXʐ<E@A8q'2%gs [m=9 1i3lI 800~kEHAM;E(l�6g9&ѐFu}EXl<tkZ" ͨk(wW<*o=G1i\'+.!i1e NGr 7P5jW?M厶2UC+7?^OG#oɀWC8kbcP|h!Йkؽ [tYwǚ�м ?xWHG}ڱ6!Ӛ?e�̌·^|0&^ 3s"c'_p537\MV=@^f1a j` gL422gkef?ߤhڟLz&OJ0R_ �su ujv9Q5<?I<|J=uRMU%@]//?{JSc1QlYHHt W_SIkm0xL,1Jb1<+|A'1AcXW<Teգ̟$^j)fknTUcJ֊ip񁾫0v+@uV݆A;Pnq:c WJ)0<hS׶IM}Xvĥ`Aző]8Q8t>L;\Pя(rzy֥a/V( j^ ;[7g-NFFQ ǽLH7~'2LpO(oZN֧O0UP$:P˯y*ƗV)`5&� 4hLX'^ SCɡwN wN S�A*h. ߉)OP(Bø"68wZS{է=t[TָQΣaI]>]!mًj9 e &({j'AKv ZAļG4 ]䇟:HKD&B2baC.C픧265 rw?rǶ okL]~}*# yZr~WXݝİT,Q}qQ4l>n.kqk72PaiS05HŠ` ?sm <_HNڟcg=Cr'< 烡a?J0];|7˞]9{EI=,m7/~m jGYn o꾋eRpYHROI1s? թ^ ?FvĜxޣr ߱"\S<A ǷDGpGv})'i]c5eT(i컞妳^ɥJ37sue QCCU7z,we \UH:xIaD\p)c0N mGܠQdy)eO |%JΉe U|RiP1bhHq3R (<!@p~SGh^<uc04r^7-Gl%$&[;[;[9 p/$6L_/9)$fl/fP M4v;]L \Yf\벷*]昸QKy.k4i{:||f?BJ8^-t86A4}�ާZ@R6,QOwJ<⛸`<`qmT?^s- RY?U᮱"_f#'nDi>cR[]MJIZMZEO@V(UU,0HmGA#VƧ"X~?cײ Ҫ/xhJ\m (hM9ŋD|'_Xetl)CL&9رE&$KJ?р@G,<R<R%4-*r zI g>d}튮 n7Ė= 5w&StOZ@�1rɯ>cjfYGGC�~=?4MP7`5xn!A*s5ZKDƼhw ݖ m//mx4N+ZS P'41qG)=;<1%|s B 8[@眐SfoY^ڨ%=j̊7z5U#A 1!/6S1n&n$$ z.@u^Uɫdm433rK6Y�`- "|uk~j8^J~V6GAr+6+T c7y+2~Q2UIJ'xמeps>1x|!~Iv$QO|y߫4<"tJߏZT=<0`W-)fta Sz:Cn12OjДK=Pmm,.?w,.4W0)V:W4V2]P=d35ķu`(;{G$2Cl&h(8oDU i\0zaI#쨿0v\TZ9q}uw<SOKVvYpXD͋_e9kf12 ;?u ` cEND :T(`qrMj!,#U!H+Ӭ77Ѹ 43 RyӨ<+m*~S4T]Uj{z6OX"J]IS$&<+y%N{%Wc0c>Fblή\1$R_W2 4plܣ_-\@(+#o:/qДOȶEa5 $ vng-JﳘV1p;ˌ6]TM?v˞U*=ꪅWS`I #^ϑgt;>GdA?ҊlLej2JrˬjtӜ+TqAa # gA^Q:S]?!wFrd.åJqb=>&wowDy%o_A+Ϭŀ:TU *\*'+gD_yIްGua@n�SUw>pa]rp_t%Y[\4#0IOt?n.7U|inժŕVl9%0ds1˔6JFH–,xZ!{* YH;m{5V(#x_4#C:B E*F^4|_ݩڦv~@PX^#'yl_0p{hXf-\*] Jwà8Yd;$F3HdM]ca Җ1 M 衏`W:ȗלW%w%›5*|{pΑPHb? S KN&WN u9'(Hng *2 }|a.ȽBѱcS3 %M>89V| یN2ţVFXK~NtHԨ8=TI(ViV5DUX%WZf9`X,7e~Dewƺ"G Vz"'|4W{R8OOYT,w3Kɽ qxٵ(~ބ덂kxjiiTo%H"ݝ$\s5 Y R6\In]XsxI5k wEeՀk$f�GV ۱|ǃICgkUp ձ WrzZx:{[n,6eZ+³=ulYڪRW$7k/KSSRqLb3}%킛>,T)SRFCm扬`r&PLʪEMfOv9HؚƦE_/0[ 玜4!@vR<X`H4hM3Ovkzkت# *ձ"+5=72 ɊьhQ�j.YUA|5T%ǀČ{|cd l,7 �9(i�� ƉҀb\/HȪr[� j5XH! ?+bX Wϫv}f_fpb?YHٽS 0,TeWY0dRqHʤMc.sV2X/E-j_5`Stu9*^FS@ "exTSQSY\oL>f 02eĖL%cIIx\4n۫x[Z~HzڭZTĿ ]-yM#YJ%aK\ :h85)/~|>,a2ʏ>X,?ݱG:o5Ҽ-En݄S�qhݼ:Z{фI嚧",yP6ip|cnct;u:(=憤%mθ'I43jD7[D^ʫؙ'1]l)O` J>A I6c8d̓Ym*%:V;f(f(勥t B`.X8ĨU-2`> ٟ ( [Z ~jM)ثlq#/0(^-j4#I ꐼib/2c8y$o_ >vѼҵqDiV#ɳi56դp|4]ȿa'hАfUPYy2 })V_YOQ>/2]jtvQOʉD<Dm'􍮹G$Q9ا㪭7u}2+i]b)`w$$I޹jU?6θ`$6t'<O?$ǑE۶2!m _"\,fcTO5G6>G3vY&F J Iq]AVD·iOPns_ {3sŬR-o+P5->7ICiiN)n.eݵ'/Ó?N9xؼe_~TAŽ-I^!5N VܛE! .?^ɼk6v;YQf 6;ҫZ&2s߆"&@fXjx/�l¿ u�,\@dto,w2=U$3]` O%EeNTczj&l…#=iDs7fMٺI ^eUAˠ@Af̆\&eLz Y~0W H|, s9u-3((< YOt�q 1\ɐl|/|!A?DR>} GևvlH')fX:<V kOzXţn3Ն > iQ>=kD+ch<21V9Z e:+wHݣ&n.FUodAzvx[jYgJ *Si*+ Iqf/Lo[';SP_xCej1^gޓ5N PqK qt7+|h A~}իJ-ӉD+thVPl{,m2lUzZaSq4JG7ݙw#Ïx1 8ci'Ud̴Dq/SՐGG,cAV)d7sk'{۪2@yb/X\6wJV�L%+;FWYhkI%CeY ݑ5F\5QŔ"G0n/끨6,I駟$ 4Tm>#l{Z>V4"C^ֿVbҫ{ZpRطtA sM/4-щd(mwU@ :X ƕ&ǍÙ�* %%gvV�ZvZWY@(c˶@Ses4V>q>>сCR'YPURE z?7ɠڵu D?`&l(%ۯ4tGXI]24qX14Q1H1fB>B枉*G}|M.]c,Ik, dE*Ԝ5]o| iY*C¹ZQ'ee 3]_mcPC4lmZw&7e7<]rJԩ[v7{Ɉ\OXϜy;\227NGjq_#ƉAdNyI~230(AdnRE|O%):vXl`6p~[?O~ :4SҠEE~=SٹooIֳDNqQm* &E@I TM;G WFz\ΫL;ymc ja@'H3|oi[ju|C;Z!MZo|A!cZ$l0B^ Fs|]IW )-CO,WFTkFD`Piz]:`|Vsq$ w )z(8 l%Y7/tjF j;!xvx3.l+02d40p6Hg *Aޢ! AR3Ϫ!#!5@Xu"ʚLARh}t8czJ&\Co8)E6e$&\F¤J*4dN"!Donf7l<xIz Dь"5'zg^a< ;( vH6\‰[2B FڸOAW Ud~{<p@\!xRRCe/)h۫?y܋軱#:0(/qHu&sz;si)% D%_d;) ʢ'[&TcWP%|*+%BI)뛱[m?C-*bb\}GtKZ38:&)~ᎼEzX<u;C ,, wYkt`mX y?=k2I_?ao}<A|'W  yErGR$%'Y,8i$߈Lu)Z6v:RZ9S_ލF[SF*ȫdJm\uqNqyqC~z(>7+#cs< ww)"XJoZK{~۫)8`~΍u:.K]4֕k*(w,f-鎑њJ*E`wzUDz53}mXp7,f颚xz_>7 5vHKˠ'z#tDs2 [HrҀG'MjT.kxdH3`4r*c(+ܓ蒎'dsbF-zP=JH$*ܜ\P{X{nWWwW Jyq$'h;lcvwVt2f&wvmj‡-讚ƙW5(< ĚO M?7$$:u]2CD=4  =R�EVE-{#* f3dͧC\զ>Ű-<IG>a3ղt )5:7N96iIOY= eqռrVk-TX]>z3r_s?7C ~I+ uq;VsH8dj:vl##UO86ϙE}MD3T{6Ke{?# A[2gDw .C? 4j^1] \�i?RTbk5^u]ɌMvuT8Td ѓZEt*2kh*ӦsVs <o=9<L簥Ӣ3/n`ӼL^_~>|u<tZOe%Y.>,Nuj?pGKtʉMUmov:p""yi7 "z: ҥP;Kq@;] Z-ۀA xSB-9(<Y#4c=$ރ-R\5KqQѐo*n>m9׏966kWaW#ٙC}S$Uū|&:6WOfW^qS6VR5zlkY^O3b}QyE.旫a o}6W`=͖#q <MnKD=} .a#6E騼J55i7cMhEqrsFל$jH<g~V.0M \8?"r[ 9Uk cozJ.a L#+Lɵ`9E^n2xzM WʋU~8pqU,EN|5IUY%kJc8uZ0|PdUb&"^ne"6HH) hYOĝ}%׫˫LM1ݟiv=y>L6$iJgo2XEXc-!MC)aP_Q]UH+kQ48,ujNyu:!XT q>0?8OzM'IAtkwX@mC "ċQZ! 0Ӵ|qy;GbC0,g>r Q ޴j㥻.q5N1wOV z�xH|f.n;JJrm\Tgqbﳒ<23ҧ{:[-x<{6v<bXc27W>5n"@I:2)b:NTޓjEΑeZIlv"ػӊNڹYytW?X6N.~9 :}Tb԰}=xdWzcfEժFag<(31dff9!WN2Uא>A݃x &젹 N91jĝs4էcXxO r ᵹԊnWkW#uO$+TOZBG%G@OC^ڶOH:ğF-Tv w#%$YbI`:}_O#|\&cvK5,,Vγ,='Pizn'W(Hk*yۙ3n7Ca1ŎXwUһ ?X#vtXZxKAZG޲pQ*{sd;6?y7 qt&Mp2 ̢UbpK!/N mCCWi& QL>WXYW6y2A^X"&Ky+qT Al%Y찎GC%x8JǏρO`?,]%9!/w10#(~WN>P[YY[ѐ ַ6 ߮ML.V"ֈYC9>٠||AhT#͐syq'-j$j1!zU̫ )Ԭm1 \ 8#gyU+'%r&\F?C^vo["|TjߟZuʹB=k\|m]'oQf:6 5,pA@WdʇvM*x'w7j: ǣjyI&6͌2t8VrݑCdZJ{@eOpUqr"~bRn`?wK R;ĩxMa4[9A@o/4vxӰE}9W8rj %>W;83f8ǃu|oXgN ]Fdi!35޷q9<BƏ;d�,jn4;LS:9$Mw&0?b^PщԪ{%?HpPjiD4IN\-jaY]gh~ѫj#[plvYʒ,?| 'tBQM5-T56~H*MH.Y ;\I:O4"fw;֬tµIޢ03ѹfX䖐 6_kM>P5D&}/sܝ-g!wmd5O#lWkxy(�/&tKVbqvtx^XD.ѪtV4DtW H$p; 8 n\-ծGLޟ*/ercXb-S}>ڊP~*>;QG^_v9kPcuS(w o {Iځ&R]4EyQT<|~?^a :11t0 wY,WYtFĞ#-Gt{I -dcz!]w\aN;Uȁ=?_*Zn=<%C![Ÿl ulPdb ԍ:4T1|z!YR:֐:>5*[v#RxC`XJČn-dD"z?W%GI 8K3ȷ9űJϛiD~.hK8tA�ˢT*k'^׃Bcnr'*p_I#l6W뾅v�>2'+Nerp`^!|:^W.zmkG4B#_[L#8/K0_27ow-u}EWGkCsKM)[Hұ^DD6.t<0;6 :'uZĔZy"-*̐ 1p\hqkmjU*8(ײ[µYt)/5m&0-fcz[ Nt"$:0,G Tg,'qzϫ5%CY/\dHQ =^hE`oOQ|P(S"٭hU̡' ~U6[A 8_O >kYLe$0qk9b-ysf_ hl(3z)7$Uc`ߦ.ꋾؾF >ϒ8x˧j 4*4vsja].b\V<슼U:~Ю̸fGΝwNDNlNsы%XI#0_n^jіi(g j\OmNbBҍ'4Ƶ$RL#˂m&ܠ҂tq0`/Jer.s/ҹ;#cX ҂Dzdm{uyeQ60w:9\uN ̷q ?IV:2Cu)R5K^I5k[Aw_cnbeĔ)B;`<1&M|~HkNJ8 x1 f(fQQuK\'Y MՅc:بRRcBSAD)?%S LR bŃ!Eqԍgl/fA;->XPk;ݿaCY.1'. Vdj4azi-ԜrH #~De$ߞ9ԋ%CBHz3'Tl ԎRX6.J.7 3s`<Z5.s֍ _I95i7zQ憒xa~k d[rH@>bSl5Ne\~oZ_Z[mcw^?YŝV 66XZKr@[Zeg8_PiZ3kQPoUC ?7LsX88v*O (&=%F;7<<Ȕ1SY$꟏^ͫzYy>sc%,g?`[Dطq 3\NXYҠgC՞sqrԎ硅$ﺖsX:D[j5C(aXi&2%->KAX\V;S2I=j'ue=ZU7$d,*Hy{ڧڶyUc\hיK Bֻf} Y;P;{*_ߝ91.x L4'btxɐm7í:鄄)䅃306U$ΆƯ- w*k^K✡fΙ5̰Ҷt͚>1 Ÿ]O_;N}>fO2bR2icQ6iZ?Zd3ܾclpϦѨ+|3ȕ'xz 0\a \(w]S[ ~SU67]%%}#JN=ߙMy̞r['3b"nL96)B/]W92 _Լ5ɔ^4Ћt'?EJ2?m9dچċtnΞm 4f-jg0=x:0|0~1[JQ<%�I'bRbsS&iNa&ȫY4I1IÆ67<<?U?}t4Sm}x%B?6пEmW[fiy +U Wt[ZH],NHz.(Cmbe9ۍUQy[Ƽ4m6bƆBUvgIE8ƫu+ۺ&zhECb!gyrWI-3BM"N^GP&cI&`ՆPS$)#l@$�3L¤[+W%JARR_ 4 `bٯ ^zHBHdBe If@1*P  `W2'0@�`AK. � ()0``a� d 0.`` X{_2Gd3 5ip .(νuSuhQ8xK;u8~_>̐gH5={;L ѲJtŲA "YyL#FUK\{UH> BQq½@Qyx+Xf"~tch]/\V>粷@P8cRg;f<FX ɣdzs؏ ']BvB__^0_ȸ+Gj +,^g{Ѧ }lĈk悘h$,}(g Ik}\`l:y#! GK%-l/>>'�Z{qb>QO>gΫ X?JT;GW<ŀz26*Dc\y'+O|i1mێNlƳip-unO\XkrVPkC]{ӛa|J^JjάhÌW�JGSWA/cs~wgl O@s-O`&a}RZZ~O(0YX-G)kW̓ 3?7EVתl:DMp|AJp&+o{Bx|4Ʒ35P I<= N|)dԜ׷c& θK@'`-!S-)ԇC|. /Aޙ܇|=Hux}Dc"KE;y"#i᧮קf!c!)V8aSQy飉C׆uؿ$=#xO8vQJZ(F`c5P,M/ ]/S~y _6U;\Ml3Q\5ˬyԜlJ٧I=yOw/xa Wig2 )^u|m; ³n{ YǴFxF'M~\mp ࡡnL/hkw}ʼnצA+Ug&趇Fnk7mHAS K+ kq-g֪H+k cRbv->cu&07C&Ǣ1|n2cot%#4#k V?Ll^.yB#>?.YuIP e,Vn9Q=տ҆]EٳqC =ao~4eE7? oZ}$#:Źtm twVv\^\ݭWUhxamЍ{<4leh؅ל &$qB\4I;t{MBr&|sH&ÛXַ5Ht5�jc?G;>RC%|V }x !ձ+�x"+ }SzG Sd]^!0"d,Df8L 6%[g{ /n}wnG/='V޴"hG$|{dYL$CuZ%ay߀Xah/fW?~Y0s٣T1b͙+&^ 1~D_:U_,k?`}wWKvb>6mǢ;2yBEsMɦER:X[4pP~ ʰlr`ŀa.rWd :G=F=?aa7t8{ۙOpnD y8)#@O;sEƿB HC?=+#.9nd�iEk)groK{k'wQx#'?[g @4p7I}`hQO} ~BB}_Zv&+ :IgCN+Y^kbzIs$`iyY<˪[b:V#Om3!SizwRxjo>}t֤&i#1<k�@Am 42Rt0prC~%/Y1j36.nEѫLN#uNFsAt};{ ԫ¿2ګw$e Vyːe/s</m?sEHUaիZLy\#[3]i0@_ ξ7`K)"2 7 Ï`vF /Vܜ⏡G-֑$ ە3Ϲ'^9z=KLs0})<OK"p'ŇJ<]Yc10'?]jmclYB)f\ͧƚѻFʑlXW &Sūu{Ho֯"y}^W#hMov̓ϷBF@ uq}T Cl u]o#f]$(Vu<:QYK/p?8r?htϐ G�`4ޡubΙ.KJP<;@P%98XQE,-=5b,VN41-3yh+*|J[˶wul=5{3&~hg=K/OƬ ~fQfM.\وgr=W~ ~y}wᇊ]�wk4'K]Sh{=[n_$Ms$QoY�~X+%*_VYau?Vʯ"=|<?^7=}22I7$M cYp_"ИCY+ڂbPIZuk6އ�</SH4P3*v_ gZTYUDA3$'~.5Hvu{T/+ՐgQo-~>4TJyeݥWdtwDa*|@n1EOd}F%"HTf b{Ϧ[y;swGrxRTZ`/bl3_v<fLV`^dX/N7@s@9UyNk%H#ehcΣJ1qv\ػ/mWڍdD(^΢Bno) qX Ϲ"u@Ԁ2E 3*ϰ@MbE)PjV?z}mSpU*3 Dn.�;w8K{GiE\U@j}i "k5G0a>Mvc5w2vق "^;(;On>Dm+rQ/ خ[>/A˕?o&/bs+tB0m$}7>GIqH!իwuḭ~*_/7J<W#!?Yw {Y7=]xFH[* {/H{_5GA b3Ju\8K_X=6<V|XW}aZR1XP6K7MqTJT2}US쏽Y䢄2Ѽ#j Hfy_ Zw:5 ?镀OL'f''#Ӵ1hbzO餧E=AGYP.Rnbԅri:>!۟3T>]$T ԒiUc~ijJjEj s'YnJ_u^QE:nHN2H0q[{ɏG  d7`!^*= <:|j@k @ \k�6 RC*q;~ͨ E ܀񂩲p:p$:>щE.^3|>dà kQ pB m[?]BVCWK˒iEvF<BӉ EjF>;(Dɓ} Zw6l̃z~RE1۽I9EP]ix!eΒ]'G&Gޣ^!ͯW_e3v4?۵/nڮ:e%F")$Q:?LezGynV:3D/%|qANOp /CQlyײ<^]/fcn� %oQkt}'"RXZ 5`y'wW$ עqy=Z*&=xDd+s@zQ*.ozan>˟�؃QFA.x69sw,oW4UVK:M,clB͟gy(>.YE;�w28N;4$q7e},ߦ ui4M:20L[gc-Zy&) _}^=yI@}~*awXzPT?cX0? %/+yUCgD0ZNQ؏mxa]`o"m*BaO fahS,ΟJ${aLZIW{9ښqq1B2WGNZ̛vhyF`Z<C/fд bILr[J]If/`$QZh_GO+l#LTq ^}G:p|\j_a "as~N~PTYxXNuECllﺐ9^#ۭoy^:;[uA[u[|/�u s5﬚%x^7E74U~mF_WVOftC=ABJjȨ֕_WZح}+ (qWi[P |nm?/ q / `) J3RLVpjQIU/K)}R}X&S ʸWzAQ%2*eʩ)A| |pIo/`Tvv* g'z5ZU|`sUznx:&RIr*}k!pM]P!*C�U9~M >Kcu=𙲹Rϸl-d\mu#}6Jb) �P[H쯡Wp{:ت$Jϛ_w3rh`1uhƕ=4& 'MT|G*Rhf#y[쳛:r ĺ_|v0>&s o UG.z o,%AqrV6:/X:Apu+3pI_?SǪŦŽ@|?0&+zx@bz?Oz{-9+D=AoLDZF�NoNra.R{= z5k^s-n؄5'_vmO?C6Nǒf{zH7'�Rεy/]YjJokIQFrqkD~T9*43z7"  _w!b4R+*-?6RbQԛ{Rn~koupkPRpG3o@6 bg18G䠲N(Eg ht߹7%9̈́<hle(xwwקZٯr*GScc�އ6. ,jѿU*1oPŎ?wqݍ{=? |Z^~j7cW*)obklTN` BfۑVӔ=**NUz{:HU/vk ߹KCzF9N&qoH)˗Ȋ5疢3\όRJ(͹q/5 pxkK3MSٵ~kᠦMYP}S 8AOm9dYq7]tk&;\I,5Q_MoX8B=Z؊^w·Z,HOokrYN8z"܅%_7-S*�av.ܪY(U-__|5Wq{ݧ\5.2Vt>9FRn6 ZGxɿH#e*W>E*:NϘMMQ˟ulM_9AEi.!H}u?۫8fﹿ6g8 *^;n]WU5z5x^P!ִ}ts{- =bT"EZF]X=/貂"qKs�u E$uHn&{5}<}#؃{|z_;˫"bWGv]SqB (PRN7NNrӂ7"Ԩ2s9X18xDJ~$0`? 4q-ā[@0A~M̘:R0 ;UU(i.ׄ`G{_+ս`aQ=iE[pU+U3;Oq^D8tlњ@{z܍ul6 >ê JvO+[%J7bwzؓ?lڶ,(9e |~<3O Gu4>vIo_6Kv}rJ&'d-*jJ(j,a!jsࡥ 6aK@s\dȽu}A.>}-mrm iw:D)BKgҝ|ET2͝28~UQ0Y!C�ҫ(?w0Le4Z@hVirG |C=rft$BPBZt"OG`pۢ\緢~ziƬTik{d㷍K/EM4WݫEkd 1׌U'tJb}ѕ*{KtSjI)R'#~isJU#tzJbXB hHh fr?dvd{0+E 0ZX#{Dj9КͤqRuI!&!"k^Gvo`:ȋ2NVdaϏ AipÓw4oB>%>sS9Lsb-UOxu7/Eu+0WG/*\Zv⽫e&QĨh9UyfJ2<HbEH]=ڹ*>spoԹ[#$#\'eO!V%0Vcߍ,tq}5<ޟP2m"*׈;*Y`7pb̸8a9ߏD!!:D]!%3R¸8n dAYc] <:�%#21flg?XRsD76{޿<n{;~@j?ӍZ+Pl&DsebĦ@hv4W.Lp6�[lc񳅌=uwYFz!"m>"T2PCZ:Xk.nx[z?jXOF$>_c1b=*(>nI8ǙnA@!𣏕=~'vѾ\I`:5^ ,J],82PS:9`_6:ؒhF`RAki BkD`uI:PlPP93!MC[V/&cX^0ZԝANSQ }_darWnOK#؂r4gͶ{;n[ nƘ>·PkҎ%gr"kshU/w_u:xl Y{=[PԻ<@d8bUeoʋqmʖ7bLR_7( 9ۆ0$O[Z͹+S$m`bD(ȀyWw]˅8W qS) \c#RP0# jOmUɷw#7YM0A$�|vMl*P\sN}ޮЮD(wQ_f&6F_E)SXW U~]htɜ&=OH8{Pwehp˾n]gڏe+~p. zI>C/hP z `p u2UlIg/JQaﶏL|s^xNu_~3Fz <̛7 ݸ\c!,pcw+Tpku^_pc.=Zus!VAU";_lo?+oS>yE|\:VHuAw%xRX<gYvU]#j-59Ś7eNx vU!A̓Yp(BtfrK?6(Ҁc@"]V'5hUgDz1L>:hU`ĕAnʧu+yZvBrfʫh:#C?&bލݪkGAym='uބZ!7^Xe{$:Xs(ŵsihMm%Xҫ:5vB]67p5 62EmbkfD[4f!fBs\HIhueEZ<6?q;3h[a>ߓ|.XpE5|Ir|JD@UM)?m�m6w[LobcPёvFZS(,d;̡7h|邆 MA]{dV\`^yD]8Ip0uF n5֚Im8 c vvp[0?]!v4b/ ?)+v%K@ƪ�r)1LohLh+h(j zK 'dpp4qtX1F!j5|"P ;4=&AUd(=n+Мr(x Zy@]+J<v  6aR[lmS[OܰM^\0Hbj0`71Y@Dž|=MpH`۵ՈEX욃lC7&d%,2N|LzM+Ƈ,cY}sk.Z` ZW7c4=1u<=:fַ r/1Z܊Am-N:uZra=a|qV9 u~.V+nl^ ث+V]˴W+ɬ YE{U~ʥeʫ+۬->:eޙũƦ ;re~sF ;Ӱί,@1E-O Uj*q9yB{U،?@5,hl_豟ك?պfZQa֬ќDEv_Ք_:TM"K8m┕2&YxUBRB?UDگTqAxu.0#pU4rп(^L=[~ +R.4ҕ}bre &:MltLXyX.#]|\gQDe>e^~X=@FA ~%9 xL.T*r*//S~(:I`7[]`is}<-BOooqc3'rN@�NoA`mfmqtYnKcwpzbJȫU|l*!EG\٬\f6O@ IvW/Eӓd i >;h==5 +mp<fK 6JK|yaK8t+6O<A),^ݓ^]u`-^ {^ApMQJ#_`qKRTVN*л UnNj e182g۲(Pڅ!,icW ) DՐƱAsRT«\]- al8IKlFgx*U(K"oHZ'$C_̏e=q~(V9'ӄnXL1^>^7­_zu{ILzX?&c;1{pcq7Gu֧]N:%ͩϲոx6#tx>}3n30ǭ=HFDP/i=EhF\;<- I>-V[}7L!p>AvGF8ʢ/`U3H�j  p6S! ߭OpA@,i? vT:#Ŧ&]bB!n +D0aW>%!�'\y)~\l*[#ejumSCh䥋uY(Z< T~̓D)smڝk1�=kc&S@NQ&q}^ D @$j;hw 8 =pڇX^p+o9!'JЛ( ɸ+n1h0Y; zկy[n}%wOlPl'j�[x.]B⡩Vӵj/NJ:ArL4Gcpb|>&bSKœl*XÛdJpg*#ɷ7$LMAP|&\]ʶ^xz-S}Yg̷'EV6O9%>So/If6B#/d}\ 6dLtFeyw XT:8')Wh1BEBTF2&opy5yGrŠ7P(ƹ L nYavچJN_B` sm; ڭ.,!/ء-ׅ^>JTn3.2477u!HNxDbtmL ȼ&!e.vQ>)3kIOq|^y�.#?\\s\ q3 `.|/a&\~c0-xIRU5Q~L쐨|F?ChǛJc3;db?G+r5^ױn[Yd'7$)EǃY}9 bLv$zԥu1oi,[&�d^Q|-'^O'E3�FA];ߜXJ ӝn3[M,ygW8<-X&)3eW10|4igHRtd)>>I(Y(GhNotbȑܢY,ɨ?ׯ}=Pj0jH;`>ɇSNS4ب_۟}T}vĶ@?(x~}]vVU@~;拼6k4?=Y)iMEI ^@[f/IB5I![*DNlZ5g:$Yn31RC-c&/qC[UՔhw q4BA=59&F'B~oL?:8~gtbxNM528#ӦMUM,ܜ}m<@&-t@w,r pa8(\0q "Ԩ7=XRD=~u<SD%C+2~j|'d-r/U;f d7ZÕ> {U\o\bM% oNN,*n 2 jġDD<v<VIk^FAD1̄ ,Ž9mk<\WT=-j.Xqoao͢ Z\\TN_Awnplsc$"HȒt/(4MDʍDbK j7HjVlnS N(&N~,?&,O+>:mF̫W.,kp@#wp?SXۓւ Л)8q&Ç svLpqlsUȋAhZhIJ|4jwrDGzƽ_n,g}VѶ DdttFc ٻ&Iľ{<8{8o`ML E3_ 3H6AH&/hC3މZښ;D:K3lP+9fEɿ=L!ZE _Q qz ԕyp{MChikԋI1 GU;|rb:Ƶ3GuK aWWV] cՊ X(݋?|u7- Շwg+^i!"SuRoXks,fnEo/ԭ<R/}5vJv*Sn~̀,xDRb<=:@N!+%ͭN~RK/ o€qN@''~>N|Z~ij.,Me#ߋ*D>3JZ>܎)zEro 6`.б!j*i̔0m^yKH:),`<=g yjF[k@4|-XyΝކKBZ'f 酭lbaߕtM)GlʾE\v:%ت nQu/V=%O}%$^pb=SkV6Om]VrTa)}JQ{o\ D~ Hw�߿"@ ccxH&R.M2%dA!QG>?+ҫw$oy' L@?(FZҸ9>,.Lp'Ǭ6 m|o=r5ɖ<ao?Ίg5<~}jy=z?(߼SAT0FVp/'23ނ,O{�+un7k _m:Uf9i>V?(f'Qe2I zD8Xu_VKn# -8" 6ctK\ @wGFҡ\Otz!Z<Ӿʥt Jɕy~?-)*jiJFQ0͹I9|FV\j5F>H� E?D뚰E;[Xg[Ft&} ,;іz�lRie1n-Ο<<[ILjKG̡Q1ؿ|RO'"v2 ^AY&1 v;z#dLId7 ]`hkϬ=d?ژ#k'-F񉂙)ȌzyxlDiŲhv, m3ZѲH"EuYAO #j(:Ԟ fAu:DiF~ JЙڇA+w 9Y* }Erd^:?O\{p ~nw紛(1`<o!簺hO$R~^M7kR0yȁ63(t]8x6H8JJzt݂{r|R{Ŋ/:/ݪܜ,[Fv'Z0ݗY,pk[ AEH8zd( _4 6~�:atU D}P6QRDQ[(9</ zIc:Npw \zb2'n̉;+4TB)D.#5$D:V"oj"in7Jr/O] <3g:a؟uI r [K몵z+Š фemEWXAh" v6e_${D ̦@l"Jb"ǝ>jvh_!xĖO?^L`CE3T �%T`�d&SNua_Gf\23V�D$p%p,Lfb3 uf�o'ua!yhg |1֗/<DQJAz$#/"$=/}ߝ`lrbKxP녹 &q[DTL# 9oɛXM=e {�4吹_$HS2#vQv䍠5ț2},^El"$}7ZĵγWG}AfM:uL߈m2~XD^Eϸ!!ZeE+QwWE2x4 }cZv{_Ҏհ` L!wиngޱvB|?4GηWKanZvW_lBI;ڋ1r$4e=j7êQ'Nڅ:-πgpsM�"j9`4xN t'CDb=)| I;->w4%ZzQ7J~ѴX_RXe>%u`L@y"[8"bq~Gm4}N.Z.q"4c1'%)0AG˫מL_rbl¤pqFmh(b<-pL.WD4um8>7%^^'gZP<4mS/Ua &%jqWm{ ĩ c-@@T2ڬ7 }U,^P|Si b: W&ugx`)m.h]:避#7ƤfκCr:!@p>[j ={0N$Ny 3l:oac:i |Q`DF OMC76r.ӌowf�#|}ՐuSxi�AJ֡9%oNz=@-hC5/گ _fGoR=5yD:U$۱Y1R i9|1ش{aB/j2~8;fyT)y0j̫, M1Έq Ø)|AM \wEGlj˸YjĖ&giS/[݀/O;K=vB-\0U c%Tdra'L.D>9<w �Qo m 6&@5d`L)ai>kIf"[΅X  sPh"~uY-;-xrڳ;)"[PǨG0HͻFM{C}3Ѽ&.eEk~$MK%wGtpm]*'^^qd2.-qne -W \? It+i+?@Nr,E� &;=*Nқe 8TMÙ0Tɏq " bO1xW:ū@,{WP#\5+P:[[ A18r_|wpq>-H^E'̝J w,އ;;\ Bs` Rfd4 |cdkv&]U,ƋI:|ϰ7Uutߍ_#_pG-NFw,N2H C8I$WE]ӣOC:ǦaH^م-X�=h+B Ւ<gLB}IFy+6-i yg:!jgrp�kh>˚k琷@zp69Igq||d9t'4n<bmsGvjՎ U8Ba4}x]Tkj[ca AێqnEyIsH( mz#cp=,q"GuX\3O7=$@3drC+xORPcyOZqwtt5_[Kie#12 ^ke' Ūƛ:2.UxW@7}gQ mS>:]Ah3B65֓uoh+}PaE4su>i)VDjwdv8䗑 杶l#nv ͨj`w~=5u˗Fp[g se%pfq,90N}MWOK(;I`Z@yC.3w{I 7~G>@?96<,]s~ ?2:(X3(q3~kUNqEZ'7ˈMI/-'B\H^]OM11[dYK""|d$=y"4yMGۄ Tɚu(5(b<Y rnulllr=GK?Dpkɗn XZQ!3!c7$C\4톳yOK̰V5B~rk7r;6dAH/ i}P%({o'1"?(e7 94]ɀg睝 3tZk x_0m\xl&^ȃJI;-!-9 NtЛr@" k#EMU1C#uQHZZ4QW~T]jZHoDED:mh8RMiAx/NIYfNxTp_Ɔ@jm?ͻFVќd#E}dt}$hW wx ] /0E -=h]'| TP_pY~{WJ[RE|)еo剾}Nsxef'lr5a<yC^#.5r5ng%N~ ے͡f)4|/Kx6 ;0%(b҈$!iSY,5$GvjW"o%>Ӱ|zKв">UnI-j 4 vMNk**֌Ժ[[[J/1 5 -eT3T҆k14D57E)(|i zo \`=)"d?[ (ư ^R1t 16[0nww+L25DAv{ ><37$~ЪXhx[5^!#<>5U%=\EKbrRݞnkg܀\hqlMXVh6:fϡ@<a #-pG3Y`w>=oǁL/HR06^ċ=@Q_P[/ lYm.k|ۄ o'k7c&%N{m}7޾&%95(v#dr?<`DeNkL K 5l�p`6'y-q6k{NM=. Ηjt}Cr3ٮAF8E_B\r- DY)M][$?8&6|A魣B4/+Ǒ֐x<ϳBk-RdpCZ#rb86Cui@_lߗjx0t;HN44bga1 0v/Z  FbhNEqH�RLrўmӧH:jB}&#=EP{[-nAg#z]%NoT4a4C~K-C,?fػ,%ν&_~y<Vqu<ޯ_$\Q}u?[y>fMF7ҷY#KqJY th'yR&V/-DKܢ]DNf7SBm=s+yxI菓لwS!c~3Eȵ)P;ik6Fc+쩳J)rYI8`JObԩgɉ8&LK" {b{<F6SZokPP;#+VwDp_KX$zA\ вds Jk=E3AG3gB!A,{A;ዬ/J]HEjP+PH6,9 ݾoFLNODCߺ`W1Tqݔ m}.9Fpt0VX@& D!S0*%tWLaLeԍ{ *," LiOmr F1Zi=N$>Ojn.%Vr\I:*Yj f2jePhk _7)gMiop@*VqijqHʉZym8N4ί-ԝE+X̞{~1iHiOdh'LkQn vi2AEX~rP}ŏL+|۾Ǯ_.F,Y)p (|kb/A_F' vb$RD̦[2AV'>:2)BKWu7$)'Z7j4 XSr f  FW.*WM3_?^s3?/R$iFKZ˕CDQʥ| nM]u(!� _ ~"OSG3jU? +: BL6VP^ Sm;Io}[&[S}Vt4i897$Ȭ.Y:ӐO~Te�kw$8c't8SF`YhVxX帱ox'@4xs=W ?s76pٍ�S[(@yiHq_;u{}tX¿ȁe V7?Fb$.v-eҤIHlnsC1aOuZXq"5h\_&R'.CBnõ09:Í? 勠3돖 &A^ƕV(PQ\ЎU,"8|q4<zmq$~vO^=#@X2·lj,̶!w)vHݳ"1F`<[ZCE>~FszqB~iX_e682l<KBIf{;n$C'3/l86U0vl\mЄ2m02QLSf|܆9+OwK%.9*(@ONwWmj~}ƅWk(cd.ݛ5'E ep#LukV]¼w�xMOMdrhV#DKG| Ԃ|;;+T6Q(�"*|Eu%Ӿ ۷}'HsxmN5cNNkMiqgwhBw<#'?7Ր<sw^Fy<خ%;êrIc,N'x H;L-=I< {"mF LTJTIn'J_*k)ҰS2S-™O|ƩLФjJnww=½7=$j@@Y\qH~VSuYOw0+|8t<tT͋ [2 d4|t8BJ-ua.qyN~d?Ml?�$%3AnLdbߤt9ƍ⬚G:[h[6'7O?.O{ژtBknzIB^(z.ꍏziWZJ\w׊5az_�j&)#ȎЎWC"gP^Z'e۷ߵ_3>5׏oSapϏpOI5<'>G/ۻ_n=TwqWFN�m5s;XQ}(OԀ5X%9zJuQ*Bxf/%|W(OYB\,VdGa˸/~{Y06zs洛 ~L)ui剛.)Ljy ñƏ4lE</8>c~LԍeXM#D]F>Sݨe{.ÝE c�-/f�W̓fߋXd@/"Ja%Yl-̳Johkd~$@jP '^BIR>v{L}GW'w4rR;ĊVP '$Y5N Zǜwh`h"0?$@h(& :4~8٬y4v3ZMu90&hɳQ'.abavzZ1ʹ' __ ?'c"aN.Sz^z٪t'wفk'Q� F+X]ܤr5x>`UǸGZQ8S Ni5jWF W((ɲ\ՖM> -G%(F =N1A&Zۄޑs^֦1R!)~b4_K8dF^ZUGU7]wJ(H,f�p#g4ޓ)d+Y$PJxteKkQ z]6U*hVOooo&Qut"wyq[ՍF,[!nɪH�;is:+GJy.x|amhFZ3Y�j9׵q s3DA1 J>qu鮈[]R :ML EvEk MAF-Jy-d[$Sy?x0W!4$bݑqD>&ʪEm]#+ 3%?EqڽQʹ"U@U0GEW|}4]h ܨS.7V|=#\~^4wJZsɍr8q܃ڲ"^/'ؑau}4K9ӐN!H4"_@iP |pg$zTvY׌'oe@bs,Vo+mޖ]8P4.-9d?hh?'ğ O07r/s& Y 2{vh]<"׮Va >^u\@x&R3+5 {!x],^4T"E@`5ky%܃ᢈXRPylHT?qUS)'3d?#H2%QGX"B&EO"duۢ&[NI*E 4慎t )Y(T6BQUݫWW/zv_K6CWW++\й|h=rpJ+W8"rzXE^\**Ӕ_Տfe0iX&<<'_  k]fs5 ?3 cd{In}%?47: 5 pPaIi} u)F/nLujpt; //^HE|D6Fjs/J)p-3W rc;R<e!Tw<%NW/-,lrGqKW _ B*)ɬ*^;_cn. 4e˯r?MYɈC5 T?8)5G3Q9=z?d::QtT8JC$;TTg,Հ=Zre{ 6{WuZ U[q8KfⓏqm+{?TD z^kq6N=`Xj#5ST_37r!FBzƀrgl\NL__q 0C}h_w}$G͸/gw0`j]72[ݶTnZ N\_V$ s=kbGJ�E7QH$s oǺK?fuYt5nj9wޮ! S'F<q|:v{m8#ߌs?eg+lsblcMazL M #,MIL/i-/ qw,MyV':u7Dub'a(5❾&2# :]`3!q8rC=7 5)$j:_bsHޖ/,)& OV0}nGچ.hPn?~me g q3[>VWm@euX|{9g;gK&iԭ<QdAᝁk񨛸ےԝ!Hj+IA[OTݸ#ȭn5K3'Ӧ?ݷ-1\|.Mt;7v3ų�Nkطq]dW ޔ;kۖoAslE Ѿŧ ~/w7Jмlg;3=G轣$@u|WWlp٣7ˮ0͒3 M7Zyč4A^&x=GCo   Wձn@?40 Nfrj.B`ly0R?q I(zYMr^c�&Bt(;Myl/ f'aoDZ,a`~ Vo`Ϸ,"vaWO2'j˯mڟ -atE)IpO}<<ᰍi\݆4Vf.*_؂$qd<aO¼5v75yl'=I*Ir== fV0%yjo;(kY0C�uJ';wNv%C_!)8/ ԺiތXgvUK="o\Z9#A4S$ lr;#*5-XUfm'P΁QPiR@6 v{^_!~Eښ[sw8S^l$kU=I6BNAv 8Fu2Q{:@4YG"``*$ZV>]/+Y8�bR_ JKި]Cd/)|+Kh#!h|wz%0O?,Ӷ^*8>"v&Lr/k u32`;`bS₩lm sy}##C),Zz"c_%,2Ki#l ���FG< f1G '$b.[g(5NqAM9AkEX( 'C^;R/ΝA(b{4S zU_Vz>#3+mw+H2=Kǰ�<ogJ;r;褻OV^zӷd-قid?=Q7;\FN&p^&INl`o70?'4�Ҍ*k2OJW(n}\2"v|:t?�l|+ﵼ}n8Ed$Zg\||c'7bqYLJ>AuN{nG!CƵGw0c>󬣇JE6s(J]x4nڇ=j^vٍY8�7ʍ]yfVFYM_ iڪ�g&yυieDlw?޹,c,NlW1i%^[";:PΝ7؝o:Mvc}Q7/ic̳Ym9:6؈yL|o٦/E۪k"[+Lwg-p.fȈefյ6CL7yu`Ske }qTg&Po*`o0 괫mki<X^<1Mߍ"~ 7,liҵJ?q+aZq -]obQ-ZZ!W1vEV9ޱq玩|'XxfjJ&07a9̓I"!kO&>p+64 |M+7 }K^�tZ{ԋ+ CPx }w~7ȲxYneU@Rܯb+.["+ˍ^/?Le jC�+ ~×LmI6/vq'疖[iyuf&l_/VV~Vfe^7m]:bm}NWC4J k|?.A~0cgI}fÛJڲq%Xev医 +f||5r`hO) a\<tے18[KāɃ4Pb\!5# ?!Җ@7 c5r )<ɡחf*Dϰ+`J9MlƲ5\RO"E?&|8E` 6tZ~l361 t+̃AAZк0ڜ +oPv I(JpƳ,%c^Mj8ʵm/JC#(:g/5m[4cHp -k1/  gTȴ N݇mT uvLm6Xi5W r^D3sR|{|exQ0+fr[%LQHqfh})$/FNzZ7߻O3!Cwfe%.(-QhJ0ṭ~GC_+7 <Z/m,S~^ A37ޓdM\n#x\M7O,*IԈ0?bi͠QRqUM.A$Ĉ[>&2덮w:yHk^r+M q Ԭ$vdik`#p0&vd' ʖMɹYW+*%GXD\(5DH+a8"AjMD&O< Jp*yw 퇻ɉ*i?,8mXD-䙤5֦V(2Kפ0K<4EwohtQ&-@|}tڕy3xVn5 ԭ7IgGnpnno|~!4qYƓG1s&{wm{ڟfb]?ܛ ~ l;$ZR]LFTkۖue~u ITB;L7P(*_U1zo_S+z\]81x:h3RIs0ULكj,ːw#. K$xh";>\0P r68N(T@];6ӬlMΑ)Ba%U:DX9@%gU~}INVı52nq1]ʕ+s&bԬbPG'6e6qMԏ*2<RIP79{}GWRcVq-.>DVp:l0i}5n9 q/Qt(e?n;=?�QFuY0-�3X_,{ 1ى7JqSgڮL)9bffEvN5X<+W i\,9ĠZ,F$q~uOZG/)7Sq}cyZ ~#n9ŒfTnxXn&F]XKWGt 5q{76~SKUC4~՟ Hw-",]֥$"2O:h&{!K^+F|k/4m]qɴ 6!$fx (Vգ6P3V_ZX@CfZՠZx u֋QDERYY2�VE~Qa¦Y$8I ?И񡞭EJҪTA&7P)F\rb_: {ҎZǏכEb |˷(^1R x;| cF XM5Pg7j/tKt ~R@^@+ʆ:j;[d .# dѸ4n峺WO.:$D uWx ~f$ @ jjj/)z;Ue>|?Bl1x.LpD \(uf B|�o@QdX%AGauk%Hx|ISW~ 4%U}gZ_a5=0*kV�f'?*aF;*K C9\Z _(ap`d.&vuG @)@qSzv�NRxࣃ`!ZZ.jFeBL/ҳ T~_ P>R6ʐf^0lU󆨪B_LDPC]aU"*\ PegU3-"W,ii߸ <(&9A5mGXܟU|P_ lZ|Xv*JDHm�b,nZә IS4' L/ū:uz<J1N&fR7Y \ktGߪP#QP0?T.o꟰o[~rB snpf-sXy|P7e7MC_& JpT|O6 "m/YixYYdD*)} _=zw2Xr;B W^fd¥>? x"'6`e T\4KWm}[`nFvWL'^"٪8 ԛf 9ϊLTʕm:<e<aׄALLlEN>]zD S0|x>)^꽯<`WY\>ʋ^5f CH[éZX4+ƫX{ʦ!*nȩܙI1[b I:dY75C{ ݯL釲p6xHHfւoSF\8jJ=~^1ͰL/0#mW+Q ǹ.Z_Rj)5/aꊦ,^s㻟-Ix`v|wqĻc\ fEL~{OOg/巟iՋwo.s&:YwIou-SU랓o"0Ԧ:r!wdW#l>R獵 c- $'GͭCEvIg%,ZJtDew&s>rD?u\FB>aw \< i[0#;aWZxD2|X^QZ0p_h3juRɘUwJ*I) ԇ2x[kR~uJg_tfn1e%vE.dT ܘ BQp)6S)M`>|"dHd?2QU?ُyGfHx>B%2YWDH}xV1ȥ ,sCʋHr@8D[OLF23sfHY6ڒ왘j;=Y�V^$4dQ@NX"4i22+4[zs#/-(VU})�P]n#N8H02 (M}D}uysߨ `fJW�KS)юV̠p ^s }8L@2< 6x>%wqSOʇ2)<;0-N:ⶼ՛]bn +nmv�WД}5><4{ $:? EURtO~u슃o #/Wʼ(@˅BՆ~].]6,Ҩ|5٦#sJ?B;]Nuv]#ٍ;YH`T'یΙVu�d1= ~}ܸ82[Kiq (FxiF'>C%ܧ֮+p1l=iAp${*ݿGpn w,}>S}ŲѻSp oQHŇmv -զNRu)dX{Η70s%3EYcU9{fI!XP.BYf-h^y<ɢٜXQ9[s ^Q/N?G?Ð ya?� 83n0X?kK;O_6@~ h''2'vGU8h~pɿzn2I(uKF<~P Yx4N0| �0 �_z @}pcnbhXƂe4Sp;1AIi Bȍs{WԒhO7O(`PuW1],2p=4ױ4 ޡiDyFל8ѓ0<-ɮӮ.Lqb;&&X!6&x|q)*SFQ)xIO3UtC"'SG0L%Lk�C"Q9(G۪k -^J5:yh ?{e<  Yϸh1WԵ9[7z7(hkKJhgNT܁/}HbR ?3æǏYcZS$zDOm G,⦿bI\PnNnIԤY]ʫh=#oN!5-ꐫ| gKiJpQ<z4_!O]Dq vSb' -\_[6I@>b0 Qx }hfj缦FILx ׎`ӽ+uQ75#zKl7SS@0|^o)գ`b͈\ѐEh& i?ȽwF/ulHIF@Z} kLݤB7Z]W`@lZD$^(>oE2 Wcߵtn, guoQH? *.(*մe߈ر_ z[ F<Kㄏ@y)Ẓ.SXDYrV2Bbﰅ\:v'?+=ۺ_d]澮dNݓ!QS>o{I4[iZsfW1MWfcp>  o_ NcW:S1K:44:MUL^ʹOTo#w NKRM"L�mHH_;]b/T}ܟ6UR)�>vHlg_hZ&/gÝ>lVsK{!bcÊ}P #|<cC`)E<S)4lb v@ɉS4_CXq]^fuԨAVos~�<chuPޓ6 lL[`v]VM""kHˉt00oe}%kF@47T\'V?^tU5 jMB<cu8 [=%m&փE~<pz(kAhj)^xK+q !y9T+]eʙas١+8곪+< +D5Yѷ15}<ӛvqGnN?as`tAfcT_ȭK\Sbh29b8bQOYq"54U:v۲ WO#(±8Q?4.MM*TfZbK(`%lP~1G#g])&]qȼ:)><X׮Te6P}y&c+^4b}poմyaSq{0QranU<kqz|>=wK^` a~ʕv[vZ0.4q,{4c*;(̜4d֬]9 T9uX0#s#azP?&zDuFHX R<Wq mv٥/,.g BÁIո#gL_% Ź9rZ?#|Qji1Mud6_i,hA'5 Wf5kmcP9mx)uѳK!$%21:{i{ה} u@h.>tV_otώoކ4?~4ѴFzx#JB.̮)5elK)]wg'ٴ+ݤQ1ݩd)%0PxN#N^K~V̄w6(ru"lV.=N!O]knQH>7;ǖi޷B #AQyDa2Jv*i{ݿM X m05%GgQ[ZU&!,S@b/#B-3eKAo681[ז>~@[jrۏG4u4x'4-V+ٜf;]1cǞef5 y6,; ТbkXsqtDى'cǂ/ppT4=*mu]ALt_K| _f13坱݀9n1\,]7߆7 e0nBah8B.YTH4O=%8}bʸ`F?Vz%<pIN$E"#jj 25|^l C_ g{!C3@Gfz4=PݱqɂfP1vcϱW>[WimyHawً E حJ<r5y`f :y-cC&FnS%4k>EVm:6IMa<9֣%=FQ 81z.kVNoz3fO1^\Bx>xY^_H$݊g6CxRw^s긬-),JXo'WԝLT塃ڴBwGH; SIK9F8/jE+"bٯ)UYת_ Jfwdzt!f'xChgPv+djMbf߯@Df\X7 YCAA ЏN0Y2<0Grm`u'Hg DAq`{}{ 6\sG4xW[5&R^CaF`H0J]뎛1prTZWw/X4Uf()H9{n)EsQp8g�[ܑ. Cķ(ډGsjOA֯<]ʪi!k� U~"HP%g��;9b`ZNm''U*{yu2M pS @G9q&sŦAr5xH ?4IM"s& `{ܞdS ˥{9AC~%ܽpxI=kp)2*X(tƲ|\Zbd$TM!6:*nQFL̕ ܮɑE [QI4,+cEsRIi<F "] :JfA 6tY;nǺ` <'H֐M בE2=C!]g�m~knoD[Vafמ> 004ӬYT�~Tc%jnܗ-Hљ^[x^ vJ~9xN/4񀓚Mb.hk{ƻR5ƕڇcYzsiqUfT\#P`'je9Z(lA#E[ٜ nR֊ ڮL OߧGIEk`1]|`9Ji%fIG&W :$Hȟxch'uEt&c"K~e`g;ĵ x/Cc:\tRx-ɯ&QQ bpann}5B;aS,%H,䭶[JDR w52O!#!D%f`= MUt%!JJP،ʕiU^#aʡv\ (-edy//fzx4&|dtѳ9,ߗKa9$Xy?^.LLi,4߇`[oYHѲ3G΄tQ#J1H" q;`zǕӭj>qt,*QyyS0TMe[\:iS6V8ew4Ny8~:xꛙVJP k%°bbt2Z[ohz!݋XeVHSYr O([.޼c%N<8/}# sw,7R# O�ڙO5PV10[%wΩay#On}; S@%SlJ+?l3XT4(Wj(E+E%hyQo;ЖCvr୕ŹY/qP8Φ4VI I~QLJ@A}e!:%DUǔ>^ EzYLgj&W Ϊ#d̺ygisvW~$+uM&BFH#[]µ3�v͗> wQ+{c#z;0Jq&uڮM*7vx̍8LJ写޶tiětV׼ظ;Iz,d}op "J>9ws)jl ش"Ȕ0RE1]jLG9 \Ν_T%uQM 7E>sfX:xkK!;*ELwڨQ43 ' 8.DQ}C]<143&ŖiYCYq῰91' 8[+%TaA)smWui0܄\;ԏ0 H+'&F&mxۑtV-\?U$Vh^i]+gݎ1%fDOqQ/&N+nݻ{<Ğ<祁k [vB^W#YІOǁ]QƘt$ex{ɮKF%jH!$}M8q?!\ ǰK$AF" /H%Gvel;v}0k A5̏~黪/O31g@(2|o8u,04lھ{ǰ+`I8IO֤W|0)Fߋ" :tgO웜q%1 onM=]%zp aX7Xޠs8tg|m--gZg>UMeapw%\K}ˍDPkT \cI#A4!i*_L\H`|"]&A4AvO+"fgS8w\ ;QM@5zI¦RFAbQi^M_}Й8xe&v/L~cg1Gkzáof `wN"sa >1I}Sl-N-eG<p6[6�4: |X(M݈G=ދN$ǒD I�s젱̃K Q^0S'*vmUʴ{Hj8=g~@b[zu~TG+y*1yh_N-< `:Ҷ$ `ꆥا;Xa~dD_5)'/7p1r!{mnHȎE )x:Y =&16h8M3aHAF ';^pzIyU  1Јrt(iј]ި|tauKp\=A mՠ O5܃Q:mT+TSc`*]%֬)Pns!:�{J�:;`!2tFѧMtۺN£X=vBY\pJOl=ىC۝1k$fq@<AgyrCa]Mnv.کMɩ%+K .91\Y ,Pr\@,1QzՍMZ~Egң )@5|4v {mX"숱MҎ'F)u@RD)/Lsnڽ @ (y�%t SL4L3<nkV^i&&"x;$w[6Z dL4c;?<S0}#{^w0x@ڤKbnpQibY;&ktk`p!2wbD`ɇT%FhI2@]4/C3(5\z¬.n'(feٹs 5OafY@rsaqzncb;p-94?۹X$/4"o,+L?ӹdOrPxi{iyOcCO>3R*Ce|G:^[s@ b;\%򊽽Ѡ2W=l,i !FanZ-Е,�^f/$=c% |૿.庹[^]ԜD ZD>^\:pImɫ�D{6,-^F١4[EvM-_Cy` BgTf7vZ;²*h4뷍MV>ic{ V.W~M}c5irCVAT^ >T%uLpIW<kvd_Oу�kMGT`_UYpTAZMR\sjgbG5S7m8^y0(lB*=T}{i`٠)Efr0tKV4k5� ب'8^$+sVhY_N_W搦?>Ӏe ^l*61Cذubx~~ӃQcOrPq?k~CsD _ozDS+NOsi@ ;MJ'")+gLs:i>56LDnVݭ2C Ax+j<?I/bCjJ: S@ R3]?TZ*{򼉏c6G<;GEz6hGx)E幅1 ^OVL Jެ/u_sR7^d]:3"kp}Mkl_{ktv r6=DEv4:ŎKqp9^'BzZLX!'d, : J͵\q|Z;=پ x17~mE1cGj0v7~.)o!fYEKܑE34h0Q{s[ҏpr9FײqQbWrWr6+>D\[6i4(HGe?>`GʣGx} VіGֆ^p7f̗m,3|v�:pb T7)tPS~gK<˅4rV#PzD[A pEx|fC21=u%n @j3mnKlƱvfGXʐ1lTJc0gܽthL={~]N>:WFQn z?IoeԼ]됝o9DA[Ϙυ3>W9ݫF[=ƈjwi)@χJ 4]'њW՗l1iO>vg8*RoB4 D][¬oo5Zlַ":s]rBoڏ1)gW_ %´6lRkqٻ|MJ`sYM$B]#Ѥ836+Hj+[&qLGTg/pI Fz@:CֈD_luoWķǰ.7cKK'= 1?PyʸE.g*·�H}Ƣm/u#ٚIZj/ev Z\*m*<n4?dĦju;&l@Jg $,#=wDtQ#TKX~g`cy7͝\{`GY{Ҙ'ɪ1x(%Ua?zD S]R&gX.j! XCtj^$XOr6uUm c :XWSwy+{ cpP HjݶѬi هy]3-.MA>l ɘ@ԯH R앂$ߠMx�z!g _܂m(�] }W8D!G/V$Z=2PA0,>Wu D)>p _$S+um-iZHrEV;+*>1L|DJb-%$aDnEIÜ8>-Z=g,c *1޹q6\HO]KF1#`-im?<L`@_e XA꛵uE:|Gw:'^^AnJMvȚ~aKnGmTt[w LJ<Lw۵u%Nj' >~hM?zbSֽ}²by=.94 ܶ蠎Ep;X/<8nez .7鼲3Z)(GKqgGo: y 5"Oo,Y�yJS$Ila8auǓƕyYZӘ<0P1YwҏUv^OmB[Xoc`Sµѓ?T V n>8sPp m3M#/{>|jpoxKd̏TvO'-6Ie)t͢Q D 3+񟜊P ܦϽ4(,=c))]2!> ?f~mFw<# t&cQost,jŒ3ʷ&ϴogͤZzșbIE!砍d^dbw](9�q)B;10z KKv/Is1{ S!m /il}-OCN[(f4 ݃R}rkgIZCZ)ѤLzڂIaa+ɌSqu[ z=G<L;PT�\܉Mb 'T Ia ً%ZK CiQj(2Q,H?&Lqg1~*7//y]"W~'zv܊óLHa6pŞٕsO0+y.V@ /d 0wYdxdP輻G9xN|\{p[D* *umYIQu2v.|ŢjcX[i?𭌗 - oULڠ̮d`Qۥ={vr:e۪_\xl]Q92S-?^iW[f')$F ҙ$)FNm|r'_q('ӜD&n@T\KwA3fX\0{P_Fww3|~gw+/.Zi6pC++J#VJ\z?HQڗ<ToM" U=Bd?N2Ih& Cwӷ@fqLN=>9bO e6񇺲W4ce5SKw6ybL^5D, Yx nNЍ"SX%ѷpۊ.UU>L[ LM:Te- {hx3t4/p_.vhQ@nF>Hwnp r_K d7d>EB;ҹt8gO?\htDصkKl!EY/mG.m$үDm\?;Б~2JyZg'-=+K;CU ӹ-C ( z*1MuST~98pד{.lu]a w$To:M lIQ_WhY|OWtaѻv xj,02mU*5nS{(;5㹼By5a dN?jotG}0K*FVgKd'H�Gݛ~Q|˩sYL;^GhX klLc6rTUVYqz7 ۼmEv4u'ؼm[:\5+Bbtsgg78Ӹvx@i9RC޾pzW=$j'KWq7" ]S_8\/¹�?"AX ܌*4 f !0S3g&jٶƻOCQt\Hi#ceprIW@W(c;D;5A7^0:jz}>.~$wd l2۾BVϑz>O~_,KB0b\=ƚeRZh8pHw=dٝk #bN !8bpSQ-} #RN4 f#tTq|Zkr}fkfd3+lxHJYzō Slris:rxM@βܘ^ Ίd3J1pŠ~;׌U1eMAMMs2e<9:00xxץ3{S-Sb%F}5v*DJqOJ"]zF{ԛ%nm_vq"C5h6JkVB&թsD2h#(?_\)\Jv=VJLBAضyPllT3$wΞHF3о$" {(y-dHZe ^4Œ شN+>¸lTh{=aT)-D,~6{6S$B:ITnE@Sq\TlQ({C/u2w=P6{�%Wt$e~e58le1v&}w7IG4xbPۀAakB`3BZͺ^|TjY.s@`2ށKO'a4'}NŤ },R }g'l˄O#BE;"|NBe r#€'* HIp}E%X-3FO?}QExxխmb!qj_l;ogJg"2ݞm Oi2fI9zHvSIf61 V$vQ& ף^"Il Ή]˙|m4{6.x,1KCsߊJuh=S? pH14G(K@NP<JF}\8?gE$Ibx|jlHalݶт{U$G0wӑDYhy`rjO<vH8GD' UKco+9U5+܊ovV1owܲG,y /e+scϺLA?s.Y4aRT}/&A;Nx5ەaPh+!yK;Uz&& vlnUlfQF[*GO~}樉 6!"x^,qf>K]݀B#[ؠOalo±16nQsR*a ;sų\Sh94&!@<j3( (U6fl:xi[|Ȼ�]-%cY54RCXѺb̔UQPfv__'PpvݟLlt l 5 `uu\3+$\ܰ>lP==e"cUU>8Fj=?o nCfw37x19 l~lMh9$pZ(beTvK—۴PH|Td%H(P)KhA'@"CL"_@׆| ^~e,Abf*rS`~hK%B>%+,԰Djhtٱ'3;5,+A:PL v#p p ^0PFB QUCRBUSR,;sV7 .CsL>P2FV=%A<�_s7%ZuxPEhN_NlݓJrVWP9puL7xW^F^ൊ8]bߴYè4v>S GOl|$6ϩ}Y~&l>C5Lg@*R*?bj69@\xlG+7t#VÃT8BWں^xy.& V\UIԼusQftYFky*%?V}<g~lَs[*"l|JۧW?jqK9vsQLW1a7{aVV{LTcFJDH#%urDha/�mYW0l|y@,\E2F!m[Ό$]ߔq<T`ga[j,y3qiU^V/*2 e7Z:6e8sH< -jmx(Gx(.?`Z"MY>4 cMO=A87h!L\;QۋMSMub3kkUWVW6h(rXOOJϥ"#A 7Q1e%׺ao*\M{x<ȵhC FQ]l /:~Fk _΂x75jq՝mޕl4.x2:T bֶٳO-Q {~^[䷌ŒF z2,zoAȧu 5nP5+HoPIڃ].,gL@gDշE g6{mU#܇۷`갰C1&ұpip!~SIR/̤QV.,Mc HVb0*UA0(x pE1 o}\hUb_f:/iV`d^ϐf1LhB2hS'4`eW>2ke#BڙHpgΗ+`x鳰̍,5))S(rR !I2VmKcgT$07bt$ VD L@ 4QSCSRNZDl+g*x\~ŜWZbbΞ)l>,UJr?/\PV82$Ny `?/Ca3>֎hR' ٱFz>+˒!ho]kXAFa=w܆L{k7b~|i yMl.ѫx1t'1l)T0σHH&0 5aTڶ f2;\}H="?wy 6\3.p`q'@(if@Fm7Îħf%9̉N4 /W\(MfzK78V̩2=lSHM0J2) T-'(6p^oxB {Ā6WV O H p?5yY!ӆs_ 5Q& ]kyf6ёfcZfJF\Y>!gpy <v{@~v.Qr-E.s$P2hFh7(a* +_ػAr~⯀ 2tr1 bQt\8 dCCe>%cƅ9enT2k1Duid$ K6Ɋ`bG.+&("no Oו U&p ;< i,EJo 2 u\SfFjۧ]AK 9PKcp2"UԍwUjgb,}M'x[^Z'Ҝ2$f! _8;҉e4^t Og`rg\m~xއVkɥ{�jJgԕRNǃ(iwR:&n;qWf9bӴɖPRT$LY$1\a{{!ĩ< ;??*tP]%U~.T-UMC('+Φe.&…q>U82zb2ydcLro@IR|m 8%FvYб#_I\jj@rؚ!-l&9U@:4udˈ|.{z0\. %Le<Ҝ /޵d;7ڄcX9B|QI'ivPДl˵oT/G?'塥3gZ{Njh�Sڐ6drBXߗ�;VE,X UVl*NBuY\sˬu}o^8RG>ðƶUEYts|dC}`:/naQcf &NIEpר, '- " :t{{Juϓǫ$buؿ߲ˀqN$h&S@AL~sj㿥KWz[1@S> Fc׮N<F-O z. <-"g*9i5^Xr;M(JZm_ga ގcgΰM'*M-&qa)2xeeu?ŽnXQz?y*}F<NP=a\Y}Q"(E|5:HMJs $v@~nA Z:Wݛ dI{_i )Z =J$d[&\ *|c8:[kS-O*4%�P >8:&z& l<Zq >GĽrDPwk5,'PH|tӡ�i>f= O zPdfG]uA|{|UiN�9y(.[bK)w3-\fjF켛\4Pl@qAּ�"Y9 NjSFq5"PH@:ZեV$^lKMcv<f_& vy/ץӗ@-"9nB;=W7붪g,};AAL/ѣp'&hRׅݑ<m �3�~O^׆kJh27 Hd_+~YM$DdҲam ] qspIߥd'L* ^P!�eS3~ >zz䚷+l=Tx'BKe2Ȯ-0W_j,75b_wy{r?3^<"V' w@czb-;n,�8 )F 2{fR s{'nMy�_PS<εYd+7qj@*IPC{1@ݲ 4W;8). %dݭHtR1%p?󍟭v(SDTCg8 A|{bFdaoYl-Ud1,p::E*PEB*0r|S #ja- RU$&&蓃ܪ}I%z8C-yE*ֽFkBA8Eve eɬ}‹:@u%'j"u!GLyɆrr6PL&O$NyZk`\%Z64  `.L;[3z+5PzZ?xQe.Eqc T1*XdZ-1hdf쉩sn:=�m3g5SܝU]?:PbVƂZn41vCx4:j4 .k(oU`y)tN_t#YXƯ\`B/P*?ٕR˶״l|XBkᴍx3JӄAzArĐ/OQw0B7:I~x*E:PS#w?")1 wX5M]Y79eI9^\0QO(Xh#E% dh1\v&:>z:E)? <'1,?,6LO"Ȩ<3 Y4;g}|lw$r@n!d:JѰO9inZ/a5FVµpzְWUi:& U@ƸD&Q4M8wO#A5OV/iiIcg,Eqq[t@Ս!Ai,<,TZYsW sޛsQp0M̅z seQ L[X>bcGSژ\`Cd*yp6o<[ҊWw♦ V!, iA2- XY,Xr7 ˕~d<\/.&6_$v\B4ڂfRsF/SALpvZvД<�O6h,1r:%ɍdԦ0~ijDBw+AItұ+_[.ew{1,$7K!@^+-PYՆ 1 Y/pqPdҳMNWq~4] N.RdcrB`Wxk7irv1}>X,Z\$YG{ *L~PxχL^!|bUx\ iKdODn22'p m,XnA#QO#aNްU8xˊuYFcJC_(14 z;$Z3uA༱fe"?*>uפ֤e~ƈTN ! }Tr �q IPm<̺Z:S> ɜ~B :KM~%ˢr"DԠ?&4>r/ay)6NNT%=#]i3BfYӸ A#Y-; ZyVUov &QBѠl}}l�|@uҘATl@Qm+JjZ\m0{BFC2U̼^F"-tq,ti͏3$3b(,~ГAC容0"g|WBP1Uafh?2ڮHK+/s~h[ݠ(+p^N� y>sF�l-ZL57 ɏd%�7 t\1lm۫`Ap<Jc]e=!ONm[Mt^YFsۂ1f?5HI;ӳ^@Aή6�J0GAr8}YJl]77 ըAUo.t:& n4<sV~Wm`;i-v$DӅ"pE3NTT>0hO^ 7ɵWd𓲱lٲʵ(㈸j]LBT < B Siqǧj9zxIAtNK(:|$RnUUG@e|.2ai 0,xg !cdhU4 r@y"ζ,}BizҁF!oi S<[-<<j u֛iEBc߇fA @Q 㻅:2aur``Zy2"Sh4ɀI6�7 iiQ.I"OymhTj<Уr Ä́D")ؠVͩ1, ,'1s1ء=ɱT6?'dhBJcF/{?Vhny 2=oh8>1tKVLJc0^(_ )_x)Yмatݎϱ@j)�=ޝizj#[$8¹zE׬j@.[.c9wu݈%X_K/fݎE v: ߠÙ  .vuᆩLX#ϪdL [/}z‘ʉ*%pAĶF;C&'D;3uUne]NHHH.*(ד2Xb[? UQii= a}S<)RCp>ԻH{gx[jDepjT us6^?[K o{z0ijmR;Um1%}ԥV5{A|C(W:Cɓ&),zff 1VjG1DoF::#C�[6 .ic~nqS9zhȌ[6NcR$pIE(2oSAT"8\OO<{ N@@)>Zӂ)�ƙY=Qz]XCia9Q] .]2w~4$ɀ M4= yL uϩ嗪d唎54㥺# L"jԖ}̕R]=<J>d|?>F"~Btl3H#Sp'PlՍnu g _K s9^]u| -" r7k947{}ch7Pž&`h=lp}< Ql% θ8^˞.K Z.{Nӓ) sW9WvE 8TJ$DWB}/`&ju_}̓᾽W^RКiߎ}.MJ!-p4G)*co xAuKpq6pD\cJӃKqW^ t6LUͷ7g%in6lg`q,[5Xև}W0j=/={I|j5Co j̰\orJC-N;Å# ײ UaƑF#O]΢lxQgIZ4ۯw7#4xF[c]5^uȚHGeH TO/ F= {I.i`$  χI+Iwﭨ:c~B/}&vc\v7?"XQT-~ m+t+e(9͕EfiQcv'u_>Kz05%i;҅gDy6U>/B#q}ߓF^uQBP冕1q۴S&Qaa_H1:hE*t 9"?DHϥ};sy陸d󞰩*V:7h^!ыd= #Wjvۥ|҅.5Q]Yau!ޕx/ o:+G2 p.B;1ɼ)Io$%Y i2__~S9y5NJ(y7̭ ѵԴ=ςxԳM{ƱDXWכ 'yIpkC@+5^F8r L�HL_UX^ `f/MEEB{ೀ _}M_ &/ X^' >_)O}nd>rO$ 0dK\et^l HS'\UC |'zA~\43FdO{1M$'5Ys'>ee}褆c CܱHN=Tv*fbb4abh}s}stP}xcY7<ƚ0n܅AAyHCvf3a~p^̀%\{L>dЛ% `S)F޼^%+?B-x*HzD勴§Hb @ɓ|5BZF0vϗ&|g1uqj>�\; vLtrqhSbZ4cPʈ?|;i-捛smcK&UV<fo([dx8۟˻0qna"R`q:DN[b9ٰd%#.ՊXB"y.0pK÷ 3Ztnt1@NQCӪ&=a gG)sOG8�w}{Ԟ#\6HxGy #>Fh呍`Æ-9S9l[JG$MS.K^hWCk|3Bi`7HMڊǵ@G9W nz4"@kp4\*X\)k.O?(J:nC>sZM$46[ Y+l|q(|nIG1_El|`"p= и(sOʇCM\$?yg4lJ- HWq }4z+r=Qy�q (0e[Jo) ̜D@T^rQڣG5rQ7+)@ěwSubݹ:&-l Ll4_9Q,`ڿ;BML p8o/*Z_OX8R婖%',e,\QD&| PE(b6ۑwxIGJmph+$*ѻ@VӭNXE\Ϗ^@#^$Ki>˽+kP9Pt)BKj'HQҭRZ&/&sFWI�SIђow5P/ [lR%3}@ڦަF/w:_xh~Z`Ҵ@\Ea\Yjc&2)LxYf\l ?S G͇)0Ö֖ic1 }uc˵ӄDy3O<n9Y*7x<bIU˄3& |{D8LaoxH-4jfsBmq,q|1Bya;Q(],1jK5,ǓYd_0=q1pH/ۘٲ=@ڟ 敉mȏOĺ FcR84 GQO:py Rr}1.@4!w@l,P( C4hW�)tfTXĝY;zqeRLYTp. U ٍnYp 5rBVE<s3o+=)ߝ>%JJھq¥=jf(*vx;^*h́P&'#:q'/8A 8,0lN2*w.Zg ({^_;3{ 9z i0Q ϺA[lNITu'?渓.n/gmq-W:9rCUꋲsXR̐q51K+M[StDMۤ3u�}z^]瞝>\X XمN}{Q ~}9޴L!p wevpBjj#ME{ឣ*r/4᝜t`fTLc2al36-_WteY ItW?RUGb%c7rQKMD�S.o 'u=W[>)(L\}V n&)[-z&k=?7 qI?QHoلİaxAa(5tEʾkk< 92!UDiY[W9Aj9J>X%ӳ BjnyY%])ؑE5ci_eB;Rr`{#.l-̫;+o;tVGt/nsșjv/Z=`!2Qxt֊y*۝ŽZ3Z"jM2%ޓh ŌS"~̓+3Dؼs'nؠn=q\"a>-M\y%VNDs@^9ײhv>I M :Q a1s:,Yu�҉n0А=BX,SB%e_{$٢K$c$!|CĖ#fև33s.8=\so#ᚈ~`=j7r- uK e; ʆz[ה3'VˊeF0Ͷy[Kqox▁G"jig}j%vjg5;];|=Pt&:[3/?5rtȶ.hf?Sױ.MR ܮl%G!Fd/ dsYOAf6o *{`5@0�qƨ>7jj T,\_~jR+lmҏȶ:um+{}uS⃪n"/pUI4|SS+L> 10߁!+%Yfw5/yuá^KT-BC yMET˚Jo,I!~;=c �ϻ%΂Ա/Ai%%aܽϢD7Ro~-f\2fj4+ůPO Ώ;lVӝv9q|5'Ju.OeK '}=Ƥ] /מqڧ�e^_eo Pmt$;Ɉ{1O{1$:/ R.<"E)u\WK2咹r=l&S]r(+&i)Ks-dKSieda -S?}WLM!]29"g ['Tև|嚏�„„lxZj%jM2-n=}@ O˰k@_ 9Ճ} \O/;@޼!̊-rԳ{@oa$^*8uaƯUn+W=NYI J A %)R$Y-؆73^6.MN/'ΡGB kF'GJ(:A_gr#RO\(sj]-Q !Ac$mi,dTɓBsc%G ⦘xWZ@zP .jڱAwsYe^э*O(:F{%j .UMiĹ"M[WX 49.ߋy\zl8zb*`s![2"%[#i­)hɁAG*vň%b*p#ԴSɑyKӿ҅dX'DjiTkBY逮:+%:yʙXTM}h$?Tf" ]/M*̯42Z&hK_H?pa[2ڗWLh ޲5b�`/Z7z!PThǡa1%Oj(Fe9Tn_]X-vhc2^TsRn-d~Aٰ3oXX 1k͛^~\W޻nSQJ'G̀ fۣ"h[(iS @Kľ#onn 3JɊ"69Cľti,I9!xˁv7|X 樰bM8::#hT"n&5hGh+UH(5О x RoY ǒG"J3�020%fq; >UQs41TrgNduԒ뭵)d, XXKg|Ft.jie1u] ogjApELlnyk'Diuh~Z#َUҥCHkuWәF#`r~tK~G*^Ũs^Gɰ7d2/!Apqo18|,&j_Φm¦9jjXTVX g.ltIN {Z�,n8=p>P~dCDzp^HXih�isOyUv%8]k)se )?M*Nk\ۏw{/6{L0}n |Ehف`8LTk�\i#tmpڟ\&l ].pBsBϗ&ias?,0)Bs>X+<78'[ #rodA=LƂjU.~-T?6m�Jmf0ns$y)xzд<ʾUvgHOp+u;b ?\ QΩC*Ń YļSrdi:wқхhCVďd,(e>&MʠҢ3az9z̺Z װgQ3R tN{fmAtNhTYq=gG-[,.O'ewH\ g�^z_+Q!QP юGHQf]W�6s&恧ɰzh!>jfaˮ/*n='rGeȶDn3 JVO36 3 vw4:XSA!X>~#1{Wl7#1dH0 ?`|K Gu^/ˇH%)iprBq;wHQ֏ڕbqRAxF>7=]1=?(UI bhS*I hH"Q\O͘qqf9ϊUN.k1FWɖ?D%ʗXQ>{ ۅVcDD&tSCP{=>^Qf[R@dH'{(c+IP{{D%+ wkBD+C3]2It$Jϐ$?Ns@Po`< *oBt6e;w5ɑӊBwm� hQa~`1ɺI r}*{ulrXt푞GF/[@V1q~Tz(G#ꩄ/X͸N+n<t5XNAA=~=SR] UU&ɚ6qf*h5uPM3^bѣGڍ2=|0!XtthћGEr=|P/Xtth#LJBkҌ= ߰(pG'}<)<Ӱ*?~ٻ3AN߮RFsl-Mh7 ;?{>79e('DDc#FU9*q:cQGNx`żѬwfcRV?/2ȗE8/fƢoEFG#v[/b?9%.πF}B<~y">|舉QQ\xH a;T%6o%')+^0!Z?^a("j9=A$M=^=9&kYT.T3]p>-ˀZ߷`PGYʞO_gO/h oBa2-J|X1T̜)5f_wJKv鑞2=@|`oUw�`\%fi09gl}Md+ĺA&`n?t(#GG`3(QGGGGGGJ6ݰ{V" ?^cyԔjRV?/2ȗALe5}_5|r/z0aŦj^YXs e7h"LR 9r摆F%#D\sZrq=,2qG'-/gqߗ1|_&}#GGG!ȣ.k|۠BS}@dBC\xstkeH?PS$T.ުʮ7HG]4lFdz(GGGGGGGGGG<$x(ͣ2 A#BB.ȏA6gG$]9t#Gn+QG%b<zHFT49C~EY\ak/WH@ N׺|UNW^x(#fu*Y_сG2utc٣G{ B i\1 )b3eEºuX(Q#G8}1ȣGn+QG%b<zHFT{hQ�t^ 66~mbӝ+A�XXFvv×|#6|bI/,ۿ<TVqkx)I 7YpAPWiREV,8/+ ݈}U޵#hܾeЬsƔ+Ygըȕ"SoUl}0[D95mFgGШݱ 1l^V~lZT -TY71Hc#mh.υ|5c] kv L.'HQ/U[,(=S1i 2ďG:+M ܞZz9hoak%kXcN[_Cxzъ! )k,</y@`!SCGތ֭- WDiXC'onC rÀ2>5) yg:b�pVl'cV pG\-+бy{1] Z;~ = :)Db\!;/KzVrͶ67١�mfێm͘o/)Z.ɱ6*z%^ۄZlo&7r6eB`7w}>}K KUyd+]ݽb  ӄα?wpb`{j8W«A|>d`~R�i~c\$ҟ|!S9ռ~6V_YVFS!)eϞh[X-'!e,IW68= ?7|`[y/;D,4RkoEx#_,${' ;зHyOōZ#¾QV,HP.s-:yHifnBt;p#eea֌LXO4hQ>7m^kyrmm�Jol0(o8~.d+Z~3IMep>$y'E<6*44xǪ^>LwtD|%tfsύ&ǩ5?=3Cz 072lxй-1TwD|[nۛCNzSuoMOs_o9 3npNsQ.oE C{!/cӝGWx۳N5i/tsE>q-c:뮘m5\G||;Jֲ(Q6aԟӿTi}?KI17E3۹gA௝�ָCMQ@>aG �;q˺NZԝdn!K>=nmZpZU?<vh;nR5ZQzT"qOG$Zxt G˷@7F(vuk3B_g$BUu1LI]^B~�A({̩ɻ!zA.8D/+a`E#~jfDf#">LYǞxuz)eNrqMk?'N$Ri3kwEn!zo ;~4^cK$oz᫟D 6^e|_�A2Ϫ9([lN!ΧFfKGJI�&(}z)Vۡᄶx_>ӡsF;md;ه-H -MS ^Nxo|[rv b9X H-_TZ*U.u$Ɇ]� j#I~٘-8U]f�8,?G--<G_ktR[I~D_G&=9Y+˝ӈ Qt"�m>TQ7P\wO2)\$lIs:ca >~7'R<$@?z/OMt qᣦ,/)lҫ$0u�DFvf\ (>p9@PCOUtyn߳<)u^`"6/:rfè^>)˜4N<+86JDpRi2b&½=][{n: L0}i7O@责HޙU>a@w""c�a �x a:AxKnR '@ dbq�i@�@o$7rr]4OU]Rw#2;U$ i:y�QAxk35[L-uAE2L|.[*5/\HGc >_BLMV5ރٞ{ǧGI+䂘5z阰 qY;}S| 324^@߄M(6)zy 5-e f=\-Gpv!Nn}/oּ2 ynw݈{ qJ|}/+~ jo"?n ]n̷aŞ˾jm[ !?{OKYi0֠y_L|>H']^ |hs>W+q<4Y-ϲpwRmGe|wG`LlW|t7WzU8s[qnyn9hD'Xf#?..3s}E\OsR=|K3ZS^ k,HY39JףN>Vi4c..z_UeL{X9M &,] gȎB 1?|C}�KQ9hsQojEx޾ }:$n'"O hqv͡=[TkoTF^,6 uXc1-Z-',W'I>uYͯ/.W#rIieެCg^a]`2e`S_ NsקUF2Fԝt>y퐿jB 6>pQwƩnI,"�ض:f 3Y+t&t+ ]8N<&e1Y_,F\kb{f[֗wSv6H}#{/H]P Gw}9R=`Of1ʠՑ N]'=*={G3ԅ~1\AKdgu;Cy.ysU*=Y]%}>58î/v<Bq֤葸oTq~ X0}̜*c`m:@+<cG-gSe\SY0)hi,4kA@1,j]xi&޽IaBxH4!N�ѨO L\? }1PP{s]zbս89-w>Yc>I:#jۮs,=i4P>CRu^Mv!\ EZ#JC-lzt|| TJN'n6.=DS22+@0D7u?7qɑjH⿮Ys/ ?'p7:XvJn3ew/Fq+8W N�+�2qC$a^(pR0h𤳢+T?^ pn q RWņu_8,^;D[M"CںIjT5tV!~{,"QN{?_Dx([zx|Jo ̮G4'J46Etv= ID' ̈́(sk6}_/Ra4Aw{Zn)Gp5n"9,CcݟA ٧!y}nw7vAEu#hw.E|~]犏7fB7eoxV}\F1wG2 wsiA.o2iq؛*yѝ D<a<}Yn9wFxnp#tցj`ﱽ6}!Qw^ Q.Y^@FmI`^-|#=__E[e6i'~cS'W{YriΊyX,kLC0ϋO|u-9/hsCMKz^~=γj7(xml+K] Hc)>=Tݏ?a__ѣg\H{ٝ<\r9> r@ޑآ-Zs_Nv^@>.�-Bw=<x2yd X5[JLIj`,ķ] c,#YkCJv`5ZWr? .l԰Bi20!� Ӈab(ݞ0`H~:@“CoW"nK6 ~j5H 6WЦW:uz;?Bu DxY8Z?T F-6{bGd{l L) |1ۄ7Hȥ5?(B3%lЅN!2{bN(yhU=-_xEiYK"wnlg)WQ~3|45#B C9^]sZp dʁ~P=pD{_C^CR _I uuGyT`9!|S7}  KZ#SmlܸF�>v!hx ɬrz?=pxAg/�ӔP9bezg19?l!O Έ#(e!WC9Z\͍'vxt3O4sj F# N{hCRCzHg(Թ&z;HEʗ[;(4hoF.H Oe ! /)΅9x_dݴ箯+T|߀79}ҋI{vҸmt' m,_>'3>kQm_jf4w>Wt.0~\=+Еjo[<*QS [A~aգfϼ/M~ Yge c-gbrhg_GuQɨ}н q=np(|i@Y_c {U )h}}Tg5 :. 'cmwQ1#Sѧ|a2LYrn׬t>5`]ME2vM8c Z ^_p6lvLV/ayyȏ.{4:?r ?<6E Ȉr;<JZ؎ھ5e4ep 3 43@ Y.z _E{˾C}G3.t/Y|^F&XH9o/Zlk\ʇ<qpe-\ Yw V. ) ] wW}YjZ+텳 8 hz|-4un.M?UɆ}ܮ{~@:OrG)[Vwoqݯ?ۆ<v J]hWQMlɈv%ؗ\Y/F_K Ђ>/A]Y>�k]˳gj}`}Z WlkXrV|bp;O$iw?kl[:}G>˛j=?}.m}="-u-d|аgDvtg?Xl4Ʒggf?Lj-KZX[a"/ APЦ٣N?Y5̟Z?48 WgDN<Y.bOuBUN7.{/y&߾"[<v1lyB,n}薯4H,ˤGlj)ܳ�M"?Zr1ICܙG?Q}W*m`Z<56դhc/CP@9,<:Uϲ<B^ndt{v\#,eq n汛?n,.qp`|ϯ=Ѣm{0V~ Ak6ժn:t"?0GqabiNo߮UG)a}π`npyHshT&#"1Qn9#qeoVQ)][iEEInbө[ z.|]ClCd~ssYNjڬcG{4O7T$BXI)ӈ!3z4rmHcZtouڀz\s^w-,si1:*M[֧-wfZ7ZqN>caFf~xalc;ןNy=]a[N_.}aƺs.yo ++e٘X^y7筊ǛK~e-޹ޱ_g+6e8IQӾ$`wY@q,+G[TU{HF}.7ϕaL9_d99t;(7J*z ._-P_ץ:%s&WnN#O&Lp _ًЂ~[X_;P6<A柑_"(/|usls{5W}.. QD[Ztp5}Y59Los2g2U7?DZ{Wb,{I^(p!tڸǮ�JZ0'TBb>("?sq SUK=ln Jcɥ{ Dq)wk5Kb=lT=nq w*m%h 6}O6\.t'JdCG\$$۞H[$Wx]#0u촥oqΓ(LA֏|5}<&SC`MXǖHDT;n{D2>>?w^},#$%p-X]{̱r埴gXdF2RJM3 #fNwsMkdے3LV-bF ұݝ<GHK?"7 6 7} !c |kKلX!c:ѝ.o\-L7cmߙ0KbGn/7a9g֩fG-U1q,!ި4yve""<6?vfdCD̉vlGۇG=~ 00y:v^V<ⵈ<e#ƳslV|aZpdSJ'mYZNZڻSgO[{lX7lk.,ZOwӥ~ņ,4+f_Ю1na C4B0ꋫERӉ#d0 5 DsGJщ89:,χ(ׇ<p 6DN,5luy uvS\7@cQ{F sGO ":uEu[tyS$28uQ`gתs{>.#8DKxXeϜf5Џd1١yۣEn#קx}uhWƟe{Uî+ jn(/hFb&v-U)گ- ]e+qH U/k0RMk+e_�xv#@{㫹Gjz&^}?$ԟfv FrWf(rG!NT]]9v$ W^z?Ij,ՠFٷj+}Ԩ_F 'ʔ ї_(D +ռ9w,Vvx6Gli։悄>l5iXFaS_R2#~Ljxxv4αkXs(cۜN]XRjجX˩ϖT-nJUf6s"['K [l?i)2f<{gDtDπ}zAG+Hj)Xfͨ[+Z2$nH#z=TzܙJOy5tǪvxe_[(,z2%G |xAUΙw+L/W%!/_?Ю1amy| Al!U\y}^C0)sƻ)іx,}~>1,.86OױQl%s9pIMi {`pyVFꑀGΗr 0f0k_s5YEoU2rxN\.lxr_+Y-1y5˳yw*vGv̢` s_s̴_{,ˌtXkќC�</ZOI0=|(&+Mv4XcW7 Ӫ>r:,#ƈwHqssE}vb~> uR(X0�c �<r7H6w .yo8!e> JyWr=5ю'ip\a#gZ鼌aR$< ҭ/ǻ ,nt|}=kO}3p;,I;) -c/澨S\+tF;EGn:dag_"DTQ<r‰><(˸S4׏`<Vi+'N{SZ*m\ƣC ̥÷X\ttMNLsn(u9sDZͷ}Z#.^[?BfN}.xK4e厁#9cނܽEY-0'rFAAFb9f@[ZrAo w"#J$[s q%dkdia&8%nӹʕ{s?V @ޮNPC뽍Z76, >PSnq^XS  `VU CdDp)'X[ Vf{pVb7mk8ێٿO뜖+H/aH ezGHwrx W+yo{/"wN,/5a=Qm qe΅t.%چe=ϼ[~IZ<ʓT_{=#d(YK:]9g˯- v- )`W4S�]iRZ XZ36&ԏ.*Pw-Ij-akbZbJLCG<{}KO v[g̥InZR,7vaȥaRQx-qlKL_["ǁ-!ݥFdt */^=])Ln{әB)- �~ϦҰ#)qibx|p;_Gżֿ#KB8-"6o^q/kik!XZEDL@Dub"21Ԍa"4US[|ЗjY WK\Ho"٩Qvsi@|Ox{4iG[?AM-?[mCMH@:Qսܴ:h۱w Iv TG*wpQf$!"9p>DKwV /s;6|@-\sU/Tx֏5fY'C75Z]? D 8lnIQ5&ީԔu)Fղklz.ݼ@]{7WGr<14L0+!؎3k\*Qnނ5x;Ϛ JY2˜Y5Zp8?@21<G!ԅ?kR E2O0MV?OZ0_&/!jX9v%fy1n CKbY+˞U>Xh!Eԅyavh9Un-.P ܜ9YxZMq_lBNw .SMƃ8ly>⸞enZZ2$N_)>D/zԝJ>vLZ72l~aHFE)-$?PrnX{5 WX&_uD?2h̓˽ $4Ghݗ Zzm/l&Z#Z{г^'LYDGi׈uн"ބ ]=ù[<>G=Ѳ%w\'3/1R*aNUUssŒoH~GQaFǹ%1.ʜ?ɏӈNDc`GB|hwӸK\_+N1t|M8#Nc6:*KMVDك*޵rY4SlDogJ]1"Ӥh~C{EZosyգI#K,ۋԢt4ss\uI&ބv[_SX)HQŌ n&\RߢoaDڧh SэE/qsW )r`4 lHj2an:@#ĭҍB tTuW^,8b`U> ~2KԖt,qo/0"1-Yw}%;?G??H79{=�<B_]z2Η,&&Ș-q=y9/cb=Ukpe ŶVg8fz~Rx2ţ 5ZIt$mFw!-N8guآ%ǎeȻo<"踵-R`[NZ57ggg;+yO6<tin} ˟'կ5Lfܱg[df\}qFA,C`Цac̷J{CUE! >Wl ۬ [?ܝK(u~^­oG}?qtǛOJy vY-ʩ'{;sY=¯eY=1՝ {Z^ +۠}'a^hv;*v-Wv=I" rh#>t7 ֥ 'a $)\[4�}ig("G<Oxn^eQ[՗^QsCXoKC>[o[?2;n0x!^Iyy었 * X0E<>r-Jhx]wx L.,!(ךZ#~_j7+ܻ8aB]q�;?dFkh*WTkAċJsE2 $Ĝ?O(Aa6~ճ <u6eаi+)ƹbhH֋Ug"3if\3~ۓ%r}7tt bG%m^IR^~b ,tE/j__ dZDgVhzb~<h.>':64,==V1o~*]:3>'*JvKJxt_]qo͵.0_lR%nWt% u ]4R:}SbA>Z%-ٜ@L2A?/鞭WXr%l=[?z7_ژNI<AR*U0D~HK =B{9d)yD8 u J1'̗/H<]: iS]:_tgKiaa H7%_3̪|&HG2R]!}Q!^uWOV^-{3ɪԍUyЗ/ΐg:IK6gݤ鋪,J_[OTv)W*LDBv?lUVNKMx;[3:/zy>Vޜ-/5^/mr?-w \+FgK/ >=~xژl;chV? &ڧo l_wOvZ>ťLg: <o}{ln|K; xjNzgƁ~.?gf!~8E­jpGi5Ӑ!)ϽgMǒU%U*ggM,x_B4bf!~!~ ̜N3o酳~';愁'Ƴvx'}wB՟ƄiSmƖ}O-{vgC4 69ColV]' Ķ~OuDa1$Ҏ?O"o{;-_ c^q;!3gVO'[~YAvd?Z4 ~_Xߖ|.L2۴$ݐ3'� �.HAboTz]h%VP]+=Usj:M 9�odθI*wqЖQM6COnttLY"^oh& }+||~?%7oo#$FS٭@v=HK~T% 7ؕp٪_zslUإys}*_5[xXL,!oӇ6n_4ˊ,6P?KOpE꿞77`+1174փ]Zl錄0EK/$)!EE H6Ƥy@ ş-!~Wª.kx,$7<jYȏla>iorING 4d3֖@Ym*-5\}OIT'~2#v8:NVN}G_ |c~[TN=S ,m= mn\i h1Zyj5_&:Ԋ% oٚ !r5en:Cv5&l87 g CN~�w]ɴ]~_]ޭ0_FP5VW* ~U-ʲIVoW \k,Mn?q<z9Bv0z!ًUUj8m 9j)"Y[5uSh"(NyFInЛwJDmt.S0uWvSkbm]۴}n:4ڥ64NnsT'�&7 fѫYb'Syhyy+0ެprݱ䑹M,nSqLlܦЛujΫV %W^@ i][n9M6A:H]fiۈft (Oqؙa+mnMIkH®Ҿ$jpW)wnٜS&v&wǭ5Q٦-.F>&h}̲U8r'16|�QhmI &pACcNmb|2e 2U) bxg ^V!6ؙ>G 7J.ۥnI?ĺt/X|8M:@V&0^?vN8c~˦uŲ _ ms1nOR jA-j줴 m~@~-h|sMjǓ[>4kyRq!tBl->~{{yFIzgɘ-WI*Ḋ$t/V:F7^x#2$a%0Ƥ8x~z3ذrttN֖j Ij12#I#=&6r88,;_wko [7"ؼlcg #m?#2PR%r7{F|#m]NUPNRUsk # ǫCNw4<oy`Mm=,vIf [F0`<p$br čYE|;\P(BIYAZ|E\)_ݤ,ς?G[2M_6LFnD !969')& -m>aiX =B�#g9S_(7.腮e,ۘB �]OƙbJܱA+`B 7v|$^`|ŠF A"+aMJiH"G=k-m|H͑1SR`, \yo0= &;F2)XIP?[+ZӝmrBK<5޴FO �L(Įē# uK/`Z|^ڌ9 _XዄCOz@APjN!`B;iV(5!Ba�+b yDD^p +Ddp۸ P,͊q=D1׈ż$djn0Zhr"\I! P;FT˜!\lVu&aI2 $cS( Snt]K/)20锦XBdH͞e/V!\~]W7ۋg2;ҷ9͠SQ h\"cD\Q̙g3n+QL:@Ғ/ZS`,WHOv| kȄD6ipB Óyuma*LȐjI\I3\1pE\TyA,L{?8w0BX CPPL# +ŷB gr$\c . $cԉ'dḴU aIb 5p8bsN�˜[ ICI}ˊ'ڲKXց:/脊ς8x1RmGwr:uW/q(.Ioja/%~^>h>AQLۋ33.$rho=ZYjj " 0i%¼v(1(Iyઈ@< 2yB<9"E?5p1K6H2Ф -DQ ҩ7d>gf̗Nb A=@JȐ/敗s̩17C3c8IQbkx/0E82=xXA1C0De} 㭃C#R"GdI`s�IP3aH{MNNzIzdpʒ&HI%`R$rF"^E=Iw3a#{,UF3cRC2)V<3#xzXT2O|+2E%-Ix< ?U]+'FLK,hg5[g"ȅ).c=-L]�!;J4^,d4O<*Kƌ*`^)'̀<\"f" +3>D6.D%5"z(s`IK)jc#�]w7) *X1KRHĐ](M�J76d12SA+RN*ZRA-gS0D4ن6Ys/b�Q4"V|Ff2G l>ڊ1F^bz"} $XlV@HƋKgrʀz (q8Yey|ZS^c_[&'CQ$Ӎ2a$g:דV#H'L%M$AVòKRaP =ŧE9{vL{hFA5bg&Rgn%4F4:.-_�xHx^�SZ])LR(T勎0(+),Q3͊zgap)gU\S;[uS.аpl֝&)cHd:(Z |b ƈ0mУo\KR%,LiSX*ֲQɎQ52 *x.igz*FkD(CֈvIja ;[1'-(:\A\lVu95Q$Pb3pkIjL[w01F 4\RBB?hf2.TLU֘K*wqfւ*Sά^2R\.ribSz>w(efs "mށNɣ4 ̓e/'24%dK.$2K II!,C)U^8рC4�Ӣiv)x`|"~ҶioI4]y\pŬ2'uy6#EMsH]$cXMeK۟6_߉}5襁/͓I[4'Ig ś/8\tHIjt@$iB>X K@ieϋ XP6Y+"r2 a0!n21&UÙ^3K>w"beE-ܙWG *ZLi/ԋJx܊=7 ֈ+ ILS*9Zr!my 瘪 j.D+_٩(#6-$TWpa.$d8j�]HԎx<rOT^:OD WZnu4OC Y~, \*ͩݏkqB 4bH )@>Gv$UCxƑ֪Y.`A<B#$'Y]S\ĜI*e+ 疍L流ڸ[)F—{SkQwjs~J՝s\c\e=IJ4aVY,@ #-툊Q6,LBDP!&:i-sS;HvVœjIg\cˑCUc4c<n#r(kK2WS?l>}J,S�cAoނ<LV'88L_剨ƜdLM.\kRZsz-7# ǜ6R r=֦)jf0WCpq/lqUC|]SgbH26D#D#'//Y"@*H r"×d:v 6Gәy2B r ]ֶN~&- \",0+0\o ;(J_gU eQu[%d&8[n@+oVbѩ~A {\Υ r9n8C1pE ^^֗r Es,LQ0m98PFZH%7߉Բ +5bg ŠǸ{fG(Z$EAGsЫcĪzh~|*N7/ *hdflQ6]S(zZ/Ps0D"j3y,A߃+՘wF`JNjaGkUf͍\) \JOԓ6ʻVF[> 3CNSR=G: }"W4kqS֞PƚqZ)wÈ=L0,'/θ[5aett 9k<7|XȆJG7"0ÑlemTBq><(3\ ±U<Ӫ7fc$4BBbNXdbL$ * uVHS a8J"CZNv>F|K|Z<縲^Gr9AѵΗ46.(YRu๲ .H $g@>asEċׅq˦e(hգoGbu`(~⫆Jr= ɎI-^تE:-F"~?9ݝ۱bڗ.xW ,㾕ijP41NhW(D�w%- (;̻?3d|mx곛�M%#D,"ʪ?OvY-%RԕxLyy$ZX$gYl J絽H"* X JjF§0sX?Q<1#6IrW�2&#X\n\�Q!j M_6Қ\}y;aq -˩2d:Z(bEGYtYub8CIJ8ȲKR="GH(."Ofs>6@ТHS,E/t疹`Į?:2‰b{3bl܎?Eˌ8FIj``q%[cG?DE:62bm<P9}xze=KH(?:(i Iz* "ȝh*Vk)ůΈޖ)jd "\pH!!Y=Cy.\LC Xcfw -&-9d AjX4!Rf:R(t\T[2,�]H l5L3'j�>Yw2cD) ([yv 1DzΛ!?8: &jUc1$?:,2bAE2q)WVqQiPZqBd" "LeP"c q kXw((oӦZT$ wEKL/(YguE j_MR(2ΗZw ',Rɢ'QJc%;oEeK^c ~ZX5 `z tŘU12Hp(,NGXm#$[ ȀJz˵̊1ﶧLQ-^\yH2SR|^ϨQ]-TV&OQY-˝\qI5Oomf.<\PǺn;‰Ro�f8H7muL#$k y5'e⋉6�`'wʧ aP+)bשXe󟏫tcbV硙[5x Y=gqSDfy5{Uc56& "Od*[RAھQ<v{2eʌi+%C»s2cnٝbwj1a(*6 LƋ&1g^U+5k-[GW&�X6cY4x׊{lbI f㮶R:]ȎW;C?a&.GWlj \je)cM.H ~>횅0ׅ2ם.1\U,+鮔`Qa|!xK'3ZǿCk2,G\āS%˜31j\$ђze)"iK[ {,cd%=bQ}Cbu#hg,Nj<&\dSCD4*5)5/ zYAKq"Ԁ ! LMأJLQ6w'uot! m*7LCKYCE.Ige�c<J\n_KX\ 'RVw*$h#�5@=l束GLK#D ]a hOΉݒd [D|\u."'>/q`,S{f+iG8$q[elVbAyQ|Zә8@P@9j|=KSr\N~~GōY' mXS?YmωPv*~19Gc=I9rXN[ʉQ󍝮F)">QW@P=+JV Iw?HQ&ZY]`˦BU^,FBQi )q>%&"kp2Ԣ2f$ޙrPQ8-g ;뀔 Y 7YCz 2N :57$}Q׮gSTM z 0Ԑi!<){K_v|q{yX-hǥdFrں1bdż&)aÍHWKjGr8 U9ڪevw AB|U]vUl fI橬iu~P%a뢸34%܁?1{Uە,D;1wd,9鱌\$99,ؔɢJ2.3AytFUŒRI'?S�q"0+\5Â,+ѴWmެWl?(VL QbPQQmJS֊*׷RqwsMz*@{B@E$yFg _5�zcqH|c<k'ܫA A,"W*ܲB4 2P1&p1?]pah.jUG+,J[ Z<z21G<e$b]O]�u@\M,R?kM8j)'B9r0H27CǙY=|Cz<!C^nc q;KkB|6\(zb{ʈ<o?!JEЬ$4O:*Wn8@cZ#3U| uŚL=eU Y'[u VHzTgLc-{3(�tGUx= ~I r0 iX[Gz<(dObR#i![Y>FX}T cv/{>M }/n1[0[mECdt7{)W9ziW?V,ׄʸD*S}vd,qXVv: mM!SSR>�n?v�?P�"�;ζB]iOmw;GLN?"K*Yܷ _59XuļA!ju*M êJ8k\k:>[Ѵg?R'MO鵎ͫNWxU23]9ٽ8G봶d,pZO<OY%{)#˼e&4ai-sWt1m_S4 D֩do9@#m3-fut: {w=. ';[ѦOL H6m.֊vֽ{IKv4_.p:{cz__j3:}_R-\tI×r>StMKu}9F۶t^QA?[:.}3 =k<}'lIn[5:e~k5GsvNܾ;/4[ª?s%;{:]߻g6y)`n4%'ǼҥݸU Cۜtn-yw4E~dO?~ gJ~% [R?=/ *Ua1Ot?*^gYacYjo&ݡ G@cs)U|bP,~"X Kõ=1_LLSj<B?~Eh-,EAK3Ԫ=je2+BSq9 6ߋi:*Y O|;\V ) B^#qjΖK 7mULh,N[Jqle(Y#aOUROؙSJ?hJ �^TbUW+j X<_]CuJh{hOG QR<cUXWgT?@7N(2BLdynZdaD\]~MeIUXAuzeȊІ ဧS4 iP,)v>Ht eWaCX(@2n)ujRTH1mU> \ّ96Z7(eBS6sJ袜DJ<zZ _me6Yn߶ ArU7t6a]? '{') t/xۙ U( 7ͷ-haEO.tOC->T12P^*C[Ja$( W[J;tOtJX.;mJy-:uEO(YJdȴEUvO|{ӗ|_pBҁ,yoۯ|:o }u.>zWW{|{qgeg? zo?|*CXWXvOg㱱q,Oűy_%|;r+kjw_?˂QvܴvU7^/eؼg|6d+@Eo 嵮#o5o[mq>AiWp 6?9?[5{ m~Klv, #0?VwrAuTN9,WF{<<e䅞mǏ׃f@v/J56*ukT)2BujvJ?>Z]m)S0jQ _G$TOxOf0J7RRYSSS\OD�j"lNF%0*ASS=O RMLʒL)R]HBioR2^XHs00$éS<:u?!?{'im)>uN6“ OM#]ĘbIϩSR8bɌ&4c$PSS'$y$ ˓&ȑ ^T&L?6 $2'\Lܙrs#\q<0w&OJ%%TʩS0MhI,JK'4L8^IL&lD:$:U$T) 9|U4':L[B)S)m&� )RAN%DT)$:)>2tDI ѓFL򟸓&<14PMQ:j>Rk552N))) 'V뻃 {Gոz7W(:^M:VKmGJ]ny:gG=OOjl캞kiis%1wfMWMvGG'>Lϕ?1d/M4z2S4snuZtܔ:xq_Vh3z1Hʤ&P;g>vv&aaCeOA&s�+0 D $DALj QPFpx!GxU/��.//U!ഇ~?q%%&@ \qi)޸q^Pxc(Šp0DFݹ%` $ z s;}Uj`D 1_?|lq;hݩ)!5<3: ׽<ǧ+&A#˄<)޺@/ڏOSk5][!&;�!@f /_l#4Ti 58ޯ\uwY$z,M6I…l?&*#O7Qy8K:Ѓv5˅v�F]WEV;ϫ:\20nڪ?d ^d)&!)v2\+HaN@QQZ(0F@8e#�ad`Y[UkG/'DW}xV ZvLiOnE,>s Cjk0N+ X?}WbO|6HdRJ׵X!uيu)?*icuN,>׺Ɇ(XAбZ{)X#F }V"2YW$| n+GCwGJ j粱{2M `2,?EҎa#*T e^I!1dab8@Y6 SK*),Z`H;6!NB$&�~ֺkC(#c~@2ɕ& Z2l,UfF5<-B.;\JYHǟmp\# dF9qZ"8N2UMDS@s/aePi,­iV2-Oc`8ƃO"T:v^xwްZ2a*ڠ*ᝨuGI'7TuYT�ׇlq_{WY.w>,g %ш.sZ>x:m|} Qg(5Q.'yv`OUӽ$ oWV$xS!;#Jtcᗬ:0V*BT9%glؙVcpo}Cr$^p.0gāݓY? YMljuDEHp3,b!6 ?]'�LvH._0AWpLgppHCUfՒkluXXb {ku3' Un+P8,P`*ecEu2Ws7rP +d^yp8rޫfǐB/%v$(\9hz􁕫z?CJ{bTEśw8."Q[v4°Z5vӔFW$Q$u6Uk9Ec{!3U9 CsѝK2AtYF2{*%n3g�ka)xhel׵űrs \ f7,vr.A14bѝ*NtCtCt{ Q#JtvEt}"#k!{ L2 \i|1qMوg٫T+'M/ȧkehX)W4 t0m@pÇ1sÇ8b^~1vQꨨIKF$́gNKN*MDK;&a;6ӃcʻfM.aT4lea3RX=03R# VP�QW+3`Ñ`'9Fѹ8ENZ5= 3$ !|RFȘii)rriD 1'"Y]7ZI)gL*ʈ dpFtu]-XP aƕ`+<I(IA[F2`洚&Gr'9քruDPԠe8xAfG"3E܉ѓf8 59Dz*$MǢ)x8')Jc1{ {#9A,gk`PËn 1vj$GvlTᘵLZC "C͊kUk`3`=.c_H9M)8(F'Jq >M}7 x 2BlBPG( =‡@! u2:p9QŸ]%"0;! Q.X_C Yշ^Ôg&r¢�1Qz1(slwD͘Ty$�&!֐Bdf;M&cX!2b`!B0يSdcj!c jCJ3 0q&9uf<e貞uf9Rd|aHgPfIC`*3 ѳ'bl'cl!>3NH@ӌ\^UdҏXaS`PjlCְCZ;OD+4:vC@|Q1*YebfIGA\s n8b+j"fC^8F2‘UA)ٖٛÀ6C`|l?J}g(P}Qc.?Gkc�c4<A(cOԨN3af;Sbf8R*iFü࠘JJP|ٌuGXeTUfb2 (^@#.flcFzPEٳ͂5\(Ql1%n$VG�ƒ,#-�bLF;W1ڕݍaK eĪ)`Pp<5l8Z fDcT26F$F;PF>�v#%TW ƑAňԴcZB1ڳkf1clv#8XnF3b<bc )y#%V,LJ$i3»6"A9/bkd!cj rccr!cx!̛EkӘ|M,!PgQAP|V |AKVj al36#6(8@vsKR �;4r;;! dPL0WHMs#zΝ`%A=7 T]Qɽ¾=ڝnq5y? Ic{3�_@>~tFuw^;iGM?)9hyrX?/,I5,ȪC8]wtj`Z?PdL#9SlkdXM{u߽#5t'c^c3jMQY cP 7\: 4 f&tIy4<$@ e^7k)S4ڝP0wmK"ysh~jg AaCsiXCrªZ*}Ujbӡ [#^ښ:6!&Ҁy,5ն&K#8Û%?+TZ]t w7~,~�'%FTAlaML뜕`XfE2.!zoygW__$V@VMw:a/<% {}>|0~5;'\DĽl3NC f/%ei.-IIJe$O ^-ɤNayF]eL,a94<;E=j덈j g4hx&y%,SO=b洖 X_Q#wwMmn.<z@ML0?ʅZ8>JcCLR?>Rl2v.DL'`%%ʔ2v��(U3ṅ˖ Os{|]b50z)N6}_!vH{UsٝlB1>('V,*n2E+GDe<=+SO G`],mGPGʋX7`[’ش|9+auחOb}k%gi"rbDؑ|my5c9|b&[jEady Hcd xd<#ݮ奃\Ϟ%#\|E3"W`g=?ݮՑUBi X$%4NO50 V2&M픖gу)#yoN\ε<9TI<Ȓ0;l+ʞ?$3,+Ayxx@{�ݓ_TZoXSIMjy\1k;AϷ]> Q?@yؿψF7gm0L̽{ fahEO t Љ8$A>wƀKպ*ǐœyax 2$! L+6Lʚ_Tb\'eݍTgqV@?ږɉ~[xwpqVf)'i|lG ޒ&͔RNrRRJ2g(?A> pmmZ:mNw>TTki ܅,DCOG:E$K9{;oK/:ZFS:KRxلb<(89'98pmOԼ4"r:X4*P:!# ݓ8Ð"Y]`X>IS;9l/bON{GV8_T+`a Fi284}4̅ծ vע[^b悇,i[Ҝ4cjഃCSbPT}EiU4k"Nm4Wh2PGp+HYٵ,$C!/j?ieܫe &LR6iGl_k%?T8k i}u�V4ląE&' t,ӸdzR P6ItMA9J"H}2'0<}ii ؘɈjiNw=2{:Yr*2Cdwjl͂e\7y簭FÑzL>rK6x:4NQb͢7aBe!-u+h&V fsWJ<|`<q9+Z8ωCѤǎ^4 !\%~tZv,#Q,XHeSIthx&}zx(6q!8LH97"<HTv~7+뫫\*\SCJװQV%6 l'}ak0xUf\D6jo,|Ad-Gle`ӁrΙJ K v[gb<=᠕@oHC~�U }d\cꬫ' &rc8UkV"\bvyi, &|&LGΊ&l+/ؕUqq9ΊR5UYHHNWl~ZU&ȝ(EyߍRze2Txwg*%!8#ƦorKF+1r@ujNcN F8&[iaĈ|g"AG-,sȵNKEbA|$Ic9 K+�Iɑ#@E;0 9vC3H_):(ΊHOa x4jrR!:)0{L.0J,NwІk^p硄I)Zz-U-�Ro< 4CԔ?O80F^x&yIt#K804( (vQbʕWs"xAXb"PxgOr'3*Nsr4@t g3ɡs̒Bgv jzEZnT@l5Q9Z0/c^L*]mZ)ƳaϔNфKNuPL�50o &=Ps?REXt&Tk9|<d[O`gE׃g\U}5!?WËA1<wkkH^Wh Fi1 #nяƦuf _#Xc\rd/oM;Ձr3Gv�z,b8_<+ؑ M[,�1IM1XdnЈ5A�C{d ؔ8/oW*y Oטƙ{y` Q*0HaRhCxx$EU*#LH&4w>Y&bvOy5 Q$͋8^w& SHro#B +^2w̪;*B~he/;gr-07VɛNCc]̊m323gX2Ē]4 ?&k/w`-M�yPaAdOAM$3IG;ڬ6+xW:NX+ȊOgƛ2y{,eu!?T%9ŅU>s'ncԙ,a+W|$ŗz>ows*}M̽sc F`,)ȷhL+;"SeVZHQY[W;Xdʣ;%w;x2blYWԭ=>BH֕L4r~̃V`�ă}Ll VOb⮼(P:xBpH*!6*\h"7R:~xϛ,?G"ZzNWb[&4m]Oy!'>vk+�nDn`vF(ҼԥڵukVԖ#esmQmUBgh^U+$'X[HT&)TS![%Zr9 y$x͘ ?yπoŠ{s!ŝN2@nss /wT+bFtس:zȦ`07YsTTZ򓑊Pߒ3کX9}.ֹJRAT% Q 7ml,Ui颺wUX8uIJL]~虧4 ($Vb|c9,v�y@AOCȠ }xH/'ZT7aV%Nc'm$7 iaah|UKNN$ 5/&Tx/ݖ B7|v#4X`(0\f*LlN,` x(JAcLʵ2HRN<NLJiT}w^n#LZ݅Ƹ`# Qcՠ)xeC' AsX*˻YKf%1`ob37$]LH+uӣp仄@]$ŕܰ˼,oqڎr郮dc 3M H76&t TGd3' VZ*GXNцiW{Aqƴ.b<%ϦXmR!uHiRz,`F53xuٌ2ihxc' Y9Q4=1 d޽>3VB4+Rb MJ8z0!ǻY"*2iaF>cJ3H8a pq<SOJ%]4!# qR%d`†}|IɖfD.X?Gs$D ْ>nPݙ(n̴R :F 2ٝcH?I4"چ@'g%] XcGMB{#X`vZt,[k)0+i8r©y5խgTAbo,@y\@Iq%mq)wʐq1x?-r)9lH@9!,ϹYvLs2p%dc!9X׼{,x73z?sBμ^w8gSC* " l}qcǖ L" ɥ3ɁzAn$ZIO ǎE #opt4خYB(ҚWv!(BpY-'ORr f )g(vrނg*$Qz5PQ)1Wu`羭 ݞ'ze}ٟ/=aZ럓w]"IGo[#dӰ:(]QToRG\K L Ge*]�fͫ>݃"b>${F,x#fmn 2wnO(tos.AexB;jՌKbX-9H٥R`hAPfnǡqF*SmDfӤMI v2,ljEǮ(xlx <੟-pl sūr}ʃgqY(qv5|Z�JE̬ӷsM͂Z 8{g){{dʷ}b6Vmʓ 03żSShAoj1 +-ONLߖ0/QdXW$<=`Mk.:!p%2\%+^WwĀoRb]<WgXObL`q{/xD�K3qF'b '}x8T. bc 'e7p8p7X8T}@׊(Dz('3} A/UHg&“ύp,)�B0U,K�|LSb7j*#eHU=9kUV_%A??1}x&xbWjngZ4qs{ WpVȷC%d!`x_PL ) ;*^PyUټwx}YʵXZevl0*fNO&F/Ex x}-j:L2ʌ킸KQi0<Pg\9bӵ Ra kˏ}a$2\*=Mō\\CF,Agn v*jݲ|2 Wv/qh8 zSW -ޣV 5f$%I5}\3$:Gʄq\F$͎D fIpUy6TOkMK*MRѕV2\|F5;^ōv1>B;FcvEfz̢O?eT|f˗Y<qقǿ G*(vVG!Ve;V@ȏ$:/f ZJZIu;6zUsx41fC6_T$^;n]H^.$Ah|_GCjprHyn>Bntɧ|bJh< 5XY=4Ҩ*رIUabU^0qPFO7ՖUĨ/\-D$J갵pd"DvQ,%Iy ;lHg]$f?w#ּ](ʡ]:֑~t<Y?x&yLUp0pMVģa>>vlcCpOl6,+: θ'N,+)}$ꖲ C;!�<')|]McxR<xaQ,=rʮ!Å]j>,nL1eŇMa5mI2UWDrF^B=%bu~<X&\>t{ hx16}'4OJʃA C X& wUヨ~< fX؄Xhx}7{|βT)n ^-Eu6UlaWMHzgOWJ!kFZVwb@'ZVp@BڟK/sUODV 2!f G1ygw-,DCr>"{-k5RʻV8wsiZa>6{4^-wzn9VÃE(Zl,,G`kTDe XfZDŽ\7kߒc0e^M<d_�ԶHP׫e5+ \!%k_$?]b_SbpVKczygKo 2nx-^Iuguf_Y UEݘ{b)_OCz y>E!k`2rZDwc*oI! ۈ�YйaNêHAشlٻb_@;-<jJݯGe6A(%}7h PP: p''YC.E!akrb1)@fZ?˦MTA}kIu!5&�uL1ek2kꇚ)'vᝇCr "5`[ga7^mHTjYs:ʘ&*rE5˔Dy"Q4L/t^jLR?@O WV^y5gL R]x{X![QRI=צ1^ۍv6ᢾUBFܖx(Me͸rH̺RK>$Zbz)>|(e[;4+tN A,Gc[);,ţLG2Q|v�0�(\�R��pi l4H4icMLq2ĩUM*ªLכ �2Kj7aoê_~ >a)v" 2]<IeNKqC ѧEf :< :'.G->|*·.[O;WM:BA"<r*O++ɪ<:;>]X;5ck|/[]TgRUMAPUaL+{ DÄjb/xelv>X9spݺch �j1xY<l> ؑ=lGܸ/^қ-c.Mݹd\k>xWѦвZ&| Zj&d}e괶,ʐx똉2Yh^ =G{É]::uǽ!#Hv:@=αZ"i"S.6ũ ;fZ( py82c- :z1 ta0f�hl B0gz7v>X2se1emWaTY'*0H^߹"<97TP)|ccJy˃ !jߒ�dlDFw@ P!Co9014'37B 9~;aN쿧SG4$TL(FߣW9~I`BWs!8_sp/?+I/D-.b;M.<s=иQkCRys950iAQ8nM.COO~BQ~&KW;gf<J)r>-x2Pڃ(W㯤)#{t I0%*BԒ>WB\<D}ZDt|E{*_pCߤ5Rd2)pp?>/ ^D/IȎ3?w~a@ BG@B؈l2غ!QKJ Ch/}^L!p?˓eFnnEUZDHItU?�6ytexXJ I,)x!3MgԚ:$YSXMNP ?w*Dž!Æ/φgI1ݷCômqyw9^O%*F"p]v t]{C{oLۿ4O>G1/w\ o;ᄎ~ W Z+Ŗ!y|+[kOܿ^w}W{oMg@;=<zy/+Q`y-נ}ڟ?5Oi{c֕ۛ[ggۮo;=M]w[kv{}tv%tgkwK/R{=wWLLTz3~'EoWO?{yZWл]|>.m&J g[Ƣwy+}/Ӂt<~})z_06{}=O7/ef; z]{ @x]=>Q5wwoFR?/ ӻvfխʹݾB+(}?uXrHG%b̭zN?m~ubVӋsi:x<NxU^_]g1%lo_l[Kn~??ؾ쪼"X ׾`R[وL%1uޝ)|.w:1wuݿJ/sޏ#M濵Rݼ]20anKi\}'5˻kO۽zh.Z@ƭctU_G{k^x6{햡Yozb}}z~}ߍ~UwEߣۯ"i߿M͝ݢqRn99yw}ݥݾߢ'!s|nyn>?׸u׳?s_5gomf;-uZ-嬪_c\|;g1ـ,cEڥA-pz0vvݍN_[[{=if<iPma] m^smiKgo~'?Lǹ8م�peaI{</t;_t>%;ozw)]Ozρ`\ zaw؊Dڢ(^ q "|Oo�KQ~wKDN,{P�x:`$ c/e>RL#G8�9'Ih?ߔdĥ%RvP޷a7~H UА(\ /"64KgzBN㑀|;�zG*u'Q)\F,-<B$]euie:,Go"A,D 95�:yL KO^'Y~`D;,L 4-j1ӡ<?I̼&K0}b9F_\"<*pá> :,uI>fx-|cy7H~~1{[!u=}c9o?Oƿǁ3~;.|:_OzM Co;w=#iy=,%_w^8rgsgUp5rNz77Sio~+KN;~_Rgo[ɽ{)^\LQ*TmiM.f;g�Kn/=Jv뚵{lioōsz[}?gnzW7{My[}Fj|]W̻KW]I- ߻1/uBr?ws3^=|_{kjǺō~77|d>/+n/ԓ9~/6eiNq"[qalcGo?+g7z7uB^ƫ.^~km6.mnau/U? Ӹ[[ߥD<m^״}P$BoG9G3kۧU;+>soIyk=~c5eOwsnƒ}cUP|ou?al߻m/<@OĮ|\ ca=>U?sk^T!mϡiz&u aT|וӫ[}Qcgw&zyVnO5mx}'9ڐoDnòK{EZ wϱ}YSݾomM{// m] Ͽm]^C LwNwq-p y20zsw߉Ҽm2zu)> ާշg~g9RPq[&^Q!q/ o4Xl:paB 0 „.Ml=C 﫭}UY%S/+W@P2S/J`Q%IBE0 4O|`/p0EQzN:O!$? <*J<Þ߶tԢY|5٬ĩ ֒m/ny\ g%sMk յ#Mxvj)b96�UQfc5SQGg@V a0=.sVo#5P�/mĒ؋ " pJh[Y6U+ŭs5kz*oe_cfuDKxE>+b,-q;Xލc%M>pBmwfsvٵwwy"^mn \gef8iaD\1"V^w!}7KL"ouA$lϚ+0,�9>ێ6*؃xP4@ۄ{]UM"izSq bdB0w'!sR1F2A x.Rnsd-ǣ6Wڂ~SS<<#8It"#q0z#DO$C܈H/M#u<wEyS+3lWX7ߕwwWf$VD g(s`Ů2MJ+# 7<-1�-{X6wwqDdjЀzTlc&~Im m7$BO0|(یeqfݚGuꈡsq=W{)F֣EQq2 }5<dޮqo_^ r%r&,bT R@uI5[04pddukZd #xkA[p\d|tW%i ^E"dGFFmDːKFL+,"Y4rO <0orr1|&Ru<(Yd&ch}L"^޿ʕd Jyp$Rxb%\}D|᫸{.9K +RJcNiJHz fIOKJdNԡI0`5H<q)1L2:ML%.yUz"וI h#*R؇!޴X8>a޴{-Qe:G+ה^%zSQ"F)*3>j5D~xmBWF9ߔ/@iɞ.h jtBՖKTlO&+ cZ]"R&4HvJ:mG bUNFNhoƕ-u_,P%dk@|grIqdX,av+NHN3 0 iN"RQ//6輽̽}kxT4Ȣiq 7]\Qq //o鈵>k<Aiup/jcv}ka% dN-oiۘ6LY}D,;^Ƨo`ٻν^SF!SBH] G #H ’$L>B{ ,j^�#IOX9Mk+qH̉r}t%h3sa[o?gA{twZ=!2IMg*-_fڥt3���cW3� ��aavso_retrieval.icoQٕX Asac!<HyЇcHGX8 !!6<ֵ#]A]93U5S3WKTԱL~���ܰ YofbKC{3?jOxO I<Єgo1 !S|#=qA=1c?@aqi֠1f(Sve҇uz(OTjyH`giUeqHMO]}_? kTg.6:P0_}\5*?k;IsPHͱY?K|_b_vs*G1'`R fJH <CoB5dK:,'=My\ͽBqxy GwIa\x1P +ߢ)U8T@HۅN}; |.ZDYuXy0X#a.BII鋂?-,Y%9�Y!SoZ fdgJgS.yE+VYb <iH˝HOL^M,^dhA Z^@iAͷ M,jj}Q;lGlT#ߤG[1& LcQtQ#i-æ#LBzD&#"b'呃z)O[#y[1mY*�"q.jyv؟e,91S x0|QvTJSH2 Kܣ@3t@s s �?HB璊,v؜)̕IvmvD;>]]))xeg}OdZXy цl߀3m֏68\6% ƽ M\i_SB3K10*s؉6]b[P N r$/t\i@E wZ(gjy'N^Id ]EEO|s䏛S#{< 9}{oB'/��vmoW v݀ކ̠SjpɭVJq,2* th]$,QD3BÈXkV'&$p߭t6u'=^s' B͛ZQ}hdkZajHsG1Gc Q'ͪNF7"ZB�^Lv�;j nػ"p+5̂(vxѯ FXaEN<qlHOFߎA3 #DPt#/ ޟro߯K / ہh3nP3TS 8 $� L}їyY栭 <^ׇ>fmPjO!^ L>u<qa)9 Y`E&7h O#ۺ2v?6kӟHMn8>PiQw\#(RpY6NL([b9&֭yzqs]>]FbB ?yی.!QC &+ mTJkvL Ȑ8bS htM^÷s�&|AwԎ$ Wy;)sc7dĭ\i&ܝ֢a"-m!=xV_ ~PѹH(2~qjPz:QЫKR ؘNh)8<Jy.^9T+vMya)|n% tNrJ +` {Nq[d}T =ߟgi׃_f:xoӬƍQł߰R<MQxNMώjaHwӆg6^II!n-RwkjzfgK炊e!q=A6Hh X\?FpiB/H-q.WOQ#ߏ $M?^Bzg7o"h?$( 끋aIe`;.ѫg{\~*Sm4dwU.;O> JVJ;鑁Fxy`| 9FRv(oJGW?pZc*�jZJH8@  (&x \Vlx$ZyG$ 4]vgy?o]m%Cf9{twԪDxOp?ׅg]V_^qbV<*>0y(%5%:M1> 1s&-_]sYx:Y/I Nb$>SNsd�FʽhWŀxkf|2mşB\a"�k{hH~GX|(I8=rbdr ]f ":<?u[◒BO/ ;$urSc̠>!$LraKL^Aw>.7 4Si/KP_!-VemDydbSHc{Q{Q?5;qg} p>kqDL_䞒X[!#BϒeY\f_RɷuA*1~`F:*ns??'TѝA~kǼ B_K\g~^GMd6( $z+tV PZςb׀p$C_j`_Vg耤;p VGUw禅]HEYø &\&|+!Q{w_>0V:We@Ā7ߟ<xp]LWxQk9]ReLk[ R6ܲ2DZLW{\t84p8)RTJ([h%VNAed4ikCV^i+[eQ%%y3Z9h(*N|3+XPO2~N]]ދW6nZO(x6EA$6Q&o~\Ǽ4j? i+).nB#iQ~M$J3�9oc]M^|ꖳ1$s "I^#IL%}&~L+Ѽ�EDO+tӀT'n+c灿Г\Dsox^P+m$9qEՄW%m/ 6dW|P)~C1-pτzxdrĚia#4^GvAUz^|CHÔAdg0mĴDk'KKנ4#`1Dqͮ Nji�7!|d\;cJ TG>a'?ř 5(se>3yT hwi"H뉇_(cǩQ"t0ۿ'kmq@i&{>Ըq--]@_Q"/hEb 2O?;|}yF؜ݏ]v֙|9{BbAv.?~~@J@ҽyZ:gʒudh5(~JUf;=z ,33"G[wuzix(A4E9d~5Q)e`ȃQ25= AKr_q#b"ԇܢzh fr"nG[\s �gǮO R|5__*p?C9꼐#4l o?^NX|11SnE2l{ĢmN~LXgs'LcS{T}lPd?1hěBKJtB">?y (\qOSStMJW'W;$jz`D.m odS:el˪ Jhp|Jo1;H0o:o*^+i wIԥQr-rHX+o/sUwa%ń 5HЪ85,TC;2s$}Lτu;Hˏ#w@܊8n1y7䞹7.5u|"ĮXɤ3N&z<ڳ48[50NwS~)=j0j-bw@Ꝛ%; 8xDŽ*$3WDPޑFbF`S{IϾXʄ,Ig*TJT R "YعrT3"MKgK {7&W{ECr4e>9xiJV,[Ou?\ΔfC?]qyV7:?9i! n,D&+b3{E:|7ULP#S۸D_{, F lM`!+߈!<Z!tpCT K镎%%M[q; $@LUИ6sG3k9xyydGLOMHowѡlg)%qSIf6?N,5'> ?0֘' z_c,WxwYtBkxjU C9 _#ie3 9do`,{OG R$Ϛxݱ7w`Q͍͙op ~{Mn]ud7bѝ`1$YVAI ̩fTL Ͱ@\B8!.h[Rf ؚZ`\C7gT0 J{)H"~f7v´c5WO)F݅qvƍV_ߜw,MP0!rtf1 p}wvtSUï0 vSRokV |kBŻ RxgM[FܭVպ>%ظzÃa؆ZgRvsM 6sӃ!(\{JZpF"onM4H#b6KxQldhQN9y,l`D.ǰ2`?"*_D*r bVzQh*f&=Ic5)/4Pv-$\:|F5?J{9U&u޽^#xl*Ӹ 6鶅'\ QDW\z5 >)d>%_#XDsw⫐MwK %ט\~}44ΠvDL#V'[ԗRJowU+"fRFD >ZlbH"˺5փx鋳߈珵x4{z9@?-=/2,s&sL�9C^3\T70<Wc+S.7 f\^x$(h׏+$x#l(+^ Y]= =n* D>Aw_.$QWo5;>@z*7>]w4WP1?B|7!-=/Y?3hXmw}q9݃YLt ޹< 9t|!QDBY>&~WY`221_7r`mzt"4>];<w_uP>kjtw#?cE݃xRS͸,t|c4_Zs]~զ܋ɓ흿+̈́_N(@: <W|zv4c~pi94D:v0RQzѓ~Xޏ�,Lv7"6htR4Ƕ `dt~kVIĞ}{2߈mtQ,VJ&sVi5%YuS/${>K(:o0[ӕ|Yl`&%h!IG=43o`scYAIm1!cۺC SfN-uPӁ4?T[c*79Zbt*H+|?6MoɨiqBuFLl/z$s.5Zrܯ(}Xoj!r%]x!Y8i1`je q�4Ü$.@IE#T@y/mv-wFH)2{7g9/p4A3' @tK䁷@:r|S͈:șovkBaQ$BM =FS5g݁JlIZ㘞.#\1c<͈ڔȤc4Cҕ/ٰ*GQ ruh4٘=y-zS? FdX(Nq6bܪ$~Ҡ ~}lfTlLd69M|ً;VBp{@Y0jQ/6ά5:?_*4ND:~Ĩd␱k֯Kg孎Bc5_V21e;xf!i)/eb&e_gS1☫�󐲍<oAVOMSe*0 Awkp*8U PHكJcǷW7~0 *߹HR◴U` Xpˢ쮜ñ^"FRH8Ψxa&v)}4s\<`+- sn:~eD+epGdUiOb?b[2ǤLS\eanA[yYM9,\YTU~36RFfi )o{2e.?Vy3wzdkSu명>PH @"1M~e,Z]<m!5kR4,}9y!З!KȤ z6Wcb/fQsF}sD-ϋx6V%o[o٫ge54K%^|ͦ5=cuLh?J(&@wPK*XD:U|:9]Y߈}f2jgZ"_Ih$|`f=dc K>B%AWsu.n.fDH@͓n.uC�3U<$];mJsh=X><JU?t�]aOe"i 4qZRuxU~K.Ty}H{<WEI߱tD%W@Cx4q*p:Og[{Rɴus2A?8.Z|^E\1`_dO<b(>ڨ^c[nLIfL Oia|Irb((W`z'<jMNш p?AMA@i-1>ɴqPtvv dy'$Mu-/~|J7a_*+Ew( 1~f πM'3:~J.bB_W e~f6kH>\X' :l}q];8eC7G舂Ckj+ogRf}[ hgĄ/Mb#@_L__{YOyɶu8ԘUToO@lPA}lvLԋ6mA]q|iE)t}Qݷ`:6͝B[Gq#߈~ӄ?jwj%_fXk՘+[ ayL3'ҳr[G\>-T!NHy>^CFu/Pk,"Qc1xelKRD۵L4!!U10>Lw`ߝ8${o >Q`b袐Sfl;vWb1+s\-Sõ.O]]F'"oqiV@Q57jNZٻi*ǙDa p+3#wo*zix4kd؛Cy*xc-OLSaze?`\8S|X-Eؽh.^7McDHSm\uCo@nAak=Z #xzĤ7~j*3źili@ht0ȚXRsP)XЄV^ *rQ;Q=܉yw=?ednD 48VStPf 1” X}4wkqS#kЉd^Q|]dŐBPԴF~~GƝa>ɥơddl\k;L=By ~YuMOZF.cGnj` Ite?D#G&J5Uq e+<GJs^~l&'_ NeHB/I&6w\_jc'±Q_Z\]:`ugDqW!/iDIMy|u_/ȪTi$7 ^;)y~]WR7Pd5:pٟb栉)$*?c7 ƙ9x 3Yӗ_6QRLl^0*Y( "=B�S:Rm> >#-LBB-n:_d3P2Coc<ٮI5|V9ab~۬cX́<1T3!pt]=.uȦ󌿜z򮭥̸#N Z/7)2], yH8W_:ʚG<xA*bF@˩tnWUn+ђyIe[.ϣGU>O"@b(1?iq}|N?krs'76.D}KoY\7b5Yyz['UK&W\q7�Q js8n@?GrbUR9 /+L~}] PUaY_1 :{"sV5\[7c[V;G[~=$A6 ?|̭ C7dPo\c@М)>}Op~׼ 4歷.x^bp7C[ac?B:upUJ߄+ ͱs"ҞnnUkt{pI_CݯF-#i WPtJI1賘/B*LƩ0uHnG#9y:p~irxa}2!ƣDk VF, >YE~Z7Ix}1Ɗd,NN;VDbON+"yA$E|򢧖egiAmT6Pa;WK]fUT_9jcK:~~u{7VՇF;j# o[EGB Eӣ\O g F?g}{_D&O| > ~hx4r7n,e]o0TGZ٣F2&B  x%w Y\ߊU*trh\ǵ(ALDBuq-7TYNϒdm-i+-|&[ݸNS=gAiڭXCoxf$(4|vMCWdG,ҭuaٹ}pdʘqDyL0$HER@ -Mҽ;tk^ό#Y@fTs  6B/?uv<w<A%cϾf%sR@NO b=;ۨc‘3r0ePR! 157vQB-\(\, dtao;h̽4H*ٲq; z*[iLHTr.L2&>#)qBg9 B ۿ^KNiэxL>kG]d3nivA`*175r+ c? RhiT! 3 f`N))gh(>h `y VC'tkj=IQ.7w71LM_n.7cjTA\of``m2hdR (%3*-8KßJ^0߰֟g0(>$Fq˂, x?0Cw4&KRGVaCooaz&MO}Mo4.FW'ZKFБ+kS8?xD[ ˔d@),�)7,LֈmئߎUw`[\kbٚYr5MQKĎd}dCuD<URzS[=#do5ܰe~$K'I*V"?][Bې61?NϤF ܋| -j�EITtww a3DWfUFsز?U>"n&P~>Q>qq\ʌvθq.|ݻ <6jͿmSF8)p?1 ߝ Mx5Ld =&d~y?id(4�4\s}95``b*ŲL~k٥kO:Av|Z>×IF8|ĊXyR`vդ" {q#V[2jh:91yȮеM%dmjpR~L}H2wpM~rn5ySL}+ď_O 9>ܥ?k߯i,؜*uwJG{ U\>ь8)961ye*  ;qfouH&ѧdUwL ]2|΄/)yO=YiZ>n1viR ^E3c[yT$ "Œk)xrzS2E9)=iH!PI)=oE"RJ%! 8Z,8@ʛSy.yL7Kq] LzV m}6}Ö _MV19Vh3*6Wb' 8Ư`B?jرF%ɩSuD>QD|3x:_lOB^\ƗP Xgf O0@S}5ȆLsu;@�Np嬍# /;!)6Pg $f," .8S9 ƨɺORL3STUB+YvdV(Fb81^Mc;nÍwgv릲D.6džR{%V%6BQvWa)&@hpkePrADG8wUxW"o6W Fv A.vHyS!nu=J+p'|o~~t/ҟp;HJ;HG m6:>$0N, ,:͚}ء=v0{fݶ}JMPN2Vn a([ &tg~82S0p8b=4 S9uVw) e\] .ղ_Hp~L]g|xD7CXH ?%QoGe4E+(Sv 9.^s2ܠ*HE( Ʋ|pd/p[C kj-RKr6hЊ+IXPj> o~$)|'- !!bnfM| 7׷'El/#<mmӅ|ѓco@ 7z;&z/0[% &pN4?mX Ի+Lk <3#�ZyNCFS g+q6P|�\<>�C7ѻe7;eU첟‘ȌSO]ϊ?߈rL'4 []�.}8̇-ONG<SagT)餝F~C_M?Y ~~SxLʪ5ęt$t_WWVĻ�^;t'g`Pڰ ؉<Ti0t2|F�Oa$M/}$17f$ͪ;>=M Y$x73jlPg鈾@ *[&${2c?!(DSd}#76);#.!I=] *`oѴ55$BTnQ䮑w?^٢o-:آ0N`$$-2&WGD3etW7àCwKA7_Q^ F4� Q<\NA]�hkp/ ͈5SnjV߰Yd4 zAe>RpEh4]j}'gzj˖2n4Qۖc-+Py _"㰝LNϮ܃HI+z1z]SSz ҮGO@:X!f4/%ըn縋 b*sd8Ԡbg�3e?t_bOlB4bNdYЈ#Mb=d?�gTnLX:KΝnKkR}("/u1h+Eu~0_^V,1^" {C�R_ѸPcS9S{`X4,(s[0:Xl`<ij_|1#ܑ4gznl`hI7ZM0fkqB~gZ=l #3|hU I:^V>?G}'|W\hbq.Q-w0f':d{VHUM 79d* ̡'[FjFW˲ )t2&g4͓rMa%\mV.%\f3/$ѝx2ۤvvvA@30IWW2m%vD?l"-b@UNRupKONÝP ')9/ 2N#ceْ]Fi[&h%<%[sh S_/0<_6`@mG׼ UEmN)+WInW "W�L<, f]h1*US\"@f5D?%qnue]YmJ<Z(5&~K3b[z~]u:ldG/廲!XNEJxWgdr\Bb� k܎r؏yuQ0[T1NNr B FQpxF);{�U""x? vGY<w47{ڴgX0Ņuw@w 7॰DUL?zjVϲ]A=Q-Kl}Sn~s ݃=&@yR*6\j^dDrZ1SzISO�K^G5a�e%O>ҟ']3Q5`ȩ~4 M1蹺l"CbBv>$rIFWPket.߷`ZCeWJyv{a۞$�a Wy)I&(I><P.˰7F@SY]}ޱICN4€EHI[زM#R~;fuz 5acȲ04Qƞ-YYsF>ds89˓dަm@qL_m~& lV.m<7$;hԞg`3^  !< spt(;_? ep Њ7RϤY| *?�nG_s\/|%엽1ZBRz-&|zCτ~MLOk3G7qL(W^$qXϤNzPaׅ 6I-MrZEIL' F7 ȗz .9dWpxߛ.X/(刀,?MF-kow̠6Vzg/x>O& 릈Ja>2ɻ;3HVB2BǚAG1EtlKgkS_5�xw2ܤY\]I>$Lmp�A 73dfK;8L]7PUT(% fA*M;=5!zzښS^`5ᜋ|VxjJxFq(ym\bi)5"BXhs H%$'X یN NlDZ$'5hFjmܐcP/'A$N)]5`2Y4f073 ;M8H7sZU"d9}=0l1:mvxL>}" �;#x(Ix&WŤ�'OP<o1Ow@0Ps(4 >8%\??uBYI Й~t-S4ؤ؊,D1TbGcٟC_h>Ɛ{=~=ce"^�.x,Ei8a@a�iwH>muQlUL+Qz  h f =Ev!Mu>:*<f ntD&4[s†;.X-eտkϠ&[$5h;rj2a'aѐ4XO ^6ehon_.+MU,ރʂ 4Ԯ&'ڂɯ>I۹Beʛufteⰾ9BBA. Yot&AB4hlhH%+r@Un)=uYi ZF%?{SFn`5-F=L;W]Ly&u(4(O]&n~˓SV3x/Ov}ż'.Zp;"uĎ+t;H8o "Fdef70SL)+;sfPm @_,Qò0;<7uCGHz}@ME&gѢcY&e% Hi3VoM6|յa=M ȕ77ͥmϛxkVW4<Q^w0 A?95 9u)?}ȎEܯ�I2 afW<!P_Er+YI2XLb/ ie_jVL bGA:΀P{2{Px+lu22voSoFknG" 'cQ2FS5 :!keuLA@﹅%�E3H*㽨`HvLT-YF$0P79K1Pqت)5ɓ1|gds$,E8I߈3)]y<>ZwiGYԻm{fP�hHs  n4/xTjaшT=_ZSn,U驱 Xd4az[5Ѹ.Zw2I$/pU{Y~ђz~M'$9|N]`EzXe+*Q}JJL nO_a\WЧt@Jq�YѤNFMs]_@�rԍt B4c#Ay1UwV8X<c|gr92GZCi&?LWZ"ٝ hZ[CA봪ird_%As߷?Wxt?2.fq.6b/oe'yI%q>H6leRR-ųJM+/8-L%vR`w@>!;@ ra$Fi:-ol!dvFN&ZO9w$]:n*Rތv\{(Y2RKe~L.}5)*֋TD.?rpȾ<2ܷPU~/OrrR�7ٟPvWOx�7v} WLI9NP EH\,ETk|*#X?|I l=>m'7dX-_z8ي?e)]IzXұm'/ R䱼 d!z@ {y4<P" ĵxI z]Ҍt`bIDg_ɦDՑlp+ 8aGo4Mӄ)ggƟO?Yl$1 y&kNb@=1quj'2k77js~ 2}w^};Pϵ׉㣅-(٦_-_]n㻂>oK]ܟ7#JԊ%%^=MDEHq«Aۃ~=-jWӽv1hލQqD!H$kI<WК\qs�DdKWw|m AT4̙$QiG7''k8�OjU[/}^54M?HD lO8Ӳ#9e&#xw ٥ZPd$`'z¥TdžR' LҨ`)⇦%8 G(v<S,:`25t`.$l%I)n~z xF V5e^Z #{LO Codŋ&RmZƙiRB5Le jS9? r*^ti&T nn/t Þ/ia΀J#>(n̾%c@[9>+|I*M^Ku(أ�d%f�A€7mkm[2t~ V:QFQDe&U.}^:ofB*UQ 7̛y$1BB6RMB1+4 m9p ݯx⢲E>{۵֑i?ȵ9a#>?#,,Cml%b}o á׬uI_W7.#BimQib2嚊}&~YVUhl[!M^ƙhj[�`C*稥[ef_~Q  ;P:8ƒvhPZjkŽcSx֣ܳMo*t7!dF޵IA:rQ'l.y٤⅃Vnj6ۊ~]@@NΈhƷUm rVDfTf ,9Y$x~1q:I6ڋ!Ҩv7| o "ټ<NZ$tM؋y6ϯnspK$o+"} -/jz!X@%A׫CHEPv'H0 cb[| tXDnOsTpy1bkK,ۖ5fl5{KsoZf=hyې,A%VInsz`mELCFޟ Ҥb dIRm-vye= Y;I-|oa4Cw^+AXg'mZZʚӧ>_ډ�?/NH4X~G91o)-r!=�5i\s_.]@ zQ0g#Xg-D5֋4'HH+emiX6܎OI_ D,eN2x*z7gL|ͽY*O,˴@ |~ÜU`W d/_8 [[ridYvf=`Џy1il U7G7F oE-;`oYܬ&&QrO" nE]I'Ɓ.x&` kO?EŬFqPb k>6@Bof-Ҍ�< S\ȏZ>9Ϝ\Hb�rzRxZx0Ke0K疂I =(p+}o~%?֟Z)gh }TZ-}pfA8)s G"s#_%Dqйx%Kфr->1}ٙ(*v*{ a;% ,,x/6E};tʚ6F _p9v"m KpW!K7#y>׺¥43䑲�eo`봞ˇDLW$kh2q} ^;l0|T[\KG>6RD>˗"ؽHpIll ~8W`W9I!2t~Sh_: 5mFqa >4I^G7yt ֔,( x+2VQ_0Dn}lmm`tGO5>ddZw *U Vֽv:8kd3Z;#}zs2/W%ͧ!fQPoKHj8)c !\l_�-ߛy*^^ߘ9y KcTd |q>ᯎa~7uYL&?4|)TSHҩxP0_|WɳkkvxK/ Їb}}Tsbr6@̓7<cfh>4}t6*_(yռI ~x̃ -#?Kwex+q4Q,An,{'?D"%S*oDJ$=ٱ( zd̿hM2&Yy+7}6>m}rݙ[<<?E&>>IѿQ4gO.3["0i"7븦]K|wFzktuF̪ {w[ i@c̛kH nAFD* $Ca)kjV0!{[{<u~q :|R#A~_Ih-4Ҫ6.؜1f筯Y- Er6$e(%妧 &R{ u$'OP0f*ߗ8=tg݋)U':-zxB86$}]MYsH<+T!]XWqE^YXdNKlcSd]1i1F7@X@6a{%8p+82doXsaպ0ء e(99ܞmν\\yvC|V&8" W碤׏u c|95=גQOIm/ï\e`9em/“%V4maK:dV/:=nH=1z=E̳SZS]Ja!.oXxW1> d?wh}Ydm?[+4yoe�:,}Ut-=4nԺ9Fg"&"]ȾG0շ6SB~~>1'+yr/n`-JEDȈ$- tQX Q@^3GӀh(QeZV#&m:aN K]DGߨ 1nC[ &|gWzTB 5.;]H9Nd':R' i9֙ q>ʸzNtLrԹ~+ώ;|h{,X}RE9ŷ304{0Of׳k>Qjɉa9Y9Z`BB+Q|c7ǜl5]= |}L"FBq U?.SHFn%br~S,Gfsmp 4~fh̎}ξsGt�ڋP'W|$&pCkBH|&2m )f@1 +LXn:f(ZH  iM a <C:]IT{V_= El>ƚÊ6O!5]"V(/Mc^dz >}MWVϐZVSA�*a1 6s=s.$$2 t,ǿ3R҅.qYl'ZãKmľ5~Oa?˺O u*ChOǐB2Ȯ<V ["4ܠx1H>vOѭ;^5~X~*{bk(/23Y/#B 6怿=Ԯ?| ԃ~< ba>a}/#e>F/qCɻPqx̦?8Fm*4mf;봀oCqgql>U$(eeu`UًE]ٗw"4.XIa^|But*aG^e\l—iRXJb29gjxOpbG$D[GYzI!" �5rq}":ܺIlV )zDy;6隯V.`~Bil0̽[~3HfG �Ne"ʟ- :Hɯ� U�} rBEg[>gA *.q"I%2 Dh")EjX;=;V gij.~!L 4 ;fz3*wyc od mĩ<,@DW" NO]Ez`= 3 Ym)IQp):'"Ci&r+b6_nl\Uā1yt�<gh9ɐJ:T9aΒ삱3k ^^_eo]9UQL>u ,>u8ZoN4RG?I˟!:ǀqvjb)Hl^X^Z_-8'Qjkl1T.ވW>Ta3;ZČ27J;ipaمzBcldc}4`"ϞZ]{qN0py[eh ]mY{o^|fv!EݥhDbT2fI8쌣>]< ߎ$^c| yQGυ+h3k4ӌ&XzI/{~aźɺ3F`Ƿm 5P]![33NVcVoQ%+8S: j& (Xw/CLVRQA5W*vK@*UpXzt|L j"P_g f.](ZNĊ%P%{�M?Cޱ#Ֆ}=zMf;LRqtb$tR|+uZ997z> O|D c}'+/V; X ؞,#o(h!Kd=UWJ hLt#4')`$, ^oA{} fB(jQLԨy轵"`2q%|.[ǥJkb2gSWޖ1POq`Fti6k uc?F{6tQQ:k!Rܛʭ݋xN/OtNLcJ|cyU}*x:k<a :wDQYh mɷAZgçjAo4: `H@$`d�^Oh+ps 5{2&;&oGۀ}á2 D7EkXd+/;CB#p�mC` gm6D|E’l a*_{Re tѓ&QK0IGLŤ/ХP5^T8C9Ίay&xNj$*FyxE$Q˷=4{K-åbK$"moL Dn/aƃt4aG�~M*5wlt ͹@12U!N/-TXLcmBu="Q |2SpH5=Y~O_ -�GƗԋ;)t70t[l<_K_*u\ݝo+]=N_qb\ dnqSY`{xLWbDl"#$mΓIl~F{.*^1sOUP~ bz Q.YUCRզS0)B檔QvAOW`B__Oϒ¤NWw̄Cl/jcbͲ8n_%mL1 |,rՎ{`0l}|$~ØڤIJ]0ī(21Mb=CsE�Pn qQ&wedkGVu5";4y͂ד!sf�nLB=(>zT |(b˯3܋$֣�"Ck#y $yr/\T?T鬤8"K[a#OԘMx%܈gFJH>!,e##| 6ؿs ? sKŏM~Üp-)0raM@'a&lsrw#ǃ:54#TR8r R3?b5v]`:[ V]QNUeApݲ byN0ܦ%u|8%=MEidRQ*,'�CܢE)}X-5G -'k^:n.?{m@\ ftP;Զ}"视7`ìMU;U4s`)$sW%2*\x^OK{?DWrdV@RìHA״U|jjn˄=/aʐ1oe_D ѬB)P7x3G :LqaQ1{_vzF}L=p+*}K|eqneZ27ojbݘ=2<c; hE"GflK `w7 Etw(5tDtMH.|0ϋ!'o+F9dkgS+d*+J 0Zͪ]yWKoCsٕuNKZ5"p[3݉^vy,O,"0~ ^%+Q9bYE`0W.829rk, cx}zte"wȇ+s6 Y⨎8a*xh)P:POi (|S]ّd|prB%;jnzX_jMzX*fk&c 83{AfvP ,P#>^ߨ]ğ_DKYآ_W؁'缧J j؛;ynFf^Y#QnOS<Ij_?|---GĩxCh/nZ9)F*tYy !jZ|6!4rhNSIܪ0 Ƨ %SV¾ #W;hj1AG�A9Y4$CUԱeMj^ A6m{2L|<|2sDrAx RH[-T'\\ R\yqA t~!+# ^yHeS+%uڮM>]UǙQ/Dg~d|Ϊ,>J(zz$~sj(}&Lrq�4C̪_Іm@ϐ\ȝ4:p`^  =VwWZٲ]X]"Ss+Zs˅j8Kذ]}0[u+ 4{�m2a}ZdPyk0 =Su@tҐ4nʏ. :G kh12zDs^ި餳{#MW%:hg4UW!)gYHvLF:@6ߌbe|� Vp[88�!Ip\\]@kϖ\CA^o~~Yj=.b(\ gzyzFZp4h{}N<ikXC削%”v, .#b(üKf2R'UA#5h8$( S4sg`  m*$ʎߚzzX xɎu|~~<,�iO:gI0ɜݚԝ:} s19;2H;kw෇ø̰%lH~8P{C<+LCmYoteRe*WI*~OVE}v}bD\,ȮKO@R$*Y։FHKeJ`K84A ?~WޙP+b/7rD!7 z6U?ω1k}Ȧ}V,!ndd!Zba+H R漚(DuWF:2+eKb'Hl^mu|@H O, 79L6ȸL eӨotWv[y4d.zt7-w~vc&ϳ~dSPzzDEZRwqQI+ gL;ۅ~,��l͈ۧ٣6Pړۊ;~s3Ǡ F t^KzÀ/8-�;~%mrVq#˅JW*}PJr :{ʡ>ojh�$\<lvSOӓwԯo2!{ru" <#s4 Bd (qҔG@,0'!>$P6 =fj<֩UgTcuAKp<gYj=۸Ê_ʞQ{נ|P8m 풻|JpN^?ٵشD~ � 0NLT|xZM_wF <Cſ+v) Z+L}o:Y> :މg}c4>I`H3ssR _&i!nHY$њ$_)un试GŪs>HH()1w *SD4D6M@ 1G$blr&KOƗ&𤝻+BNKj}y@[k1ڎ)j+24r79 h]YCW-2ĉ\ Oyu 6/CҀjz U--ZeH9;8p[e12@�?\\T}_KK*!*N-NŸAY7?? q)kiduLqCEZòlbr̦1o-@890q(힥PnLNdH!‚50|ǁЧ@I>nRҗT4}eOi9M.,ir` tkxi%541 _9U[;QX1UBr=gq5=~3Y38{8qRմvs3eqPL܏aeB5Ƿj/M�S"pj?Cc0 yؑ ai侹Zv6; w Ql­(`0SbClLTvA�5(3ܿϱ�&d:jܢjBj4|l 単0X�7jK1*%&C0`7lpR|޶/'j/m꣪:{qR<DÁGqq)'a<d11DKƋyM82Fg^T®M頿B@7ahaE|ud*)0DlJ).<|ͩzAQJڔA1x^}3\SR\w8 XJ.y}LP&ԨֿphT)vKA$ن|g2Ůk_'>ol7=KoFҊxE% O ^`Z*�}`:w. :ޜ3aYd]<5ԟ]my=s‘KB=# rK{-t*9-z3 Zl-n"S.�4<Fw� O@rxR@^-y -SF?F`5v4Iu^DsFcoaEZQ .xGOTd6RtN6l8O=/NJZw~}w1o"gռM9)Eu$J*4E|:iYX=±P?׌V! JPb�&O*P7PA?4TIZ>6G SuCOE$7h߉(w.^r\gd |MҦ,lيΊ`]H@iJPS?ߡAȳ x4U~-݃q|"Q#@Xe OI$_/~el jU船wJ!BX+"RE܇>^S͛.~} ')D"4yig$ 39#=f^zj8>#aĂ�Qfפ^.B&Wxc7 @hHt}={06W9Hó_]£ Mԥ&XǸ%ɀMටP!�Q$3�.(ln-`z`Ix\.5WvY;g߱znjs{:H#! y5\$*J>ɺR8P X@Z]=ʌH@Q5~ef qRR!Dac\c+~񧜗{u-<Ds%[ZHOH(YY v3bGպNS7L}9IК}aWT6a+x!WadgH )Y#:y 3oGC],X@D ®4jY vf$]u>ǔN٦fg~:*?kH*14B'nj/q 'פ3MoM'*:Q27kjS=*Zi K?GăMHr33[QA #5j>"Tto7eAAx"M:ºUp4u.YIԦбBz9a(9 q١G#1Ty#[f("V6jgFAU3Oq;9sE?# ׅ$0!#u͡x|NgWO:vHh`]/_Oi9_P7F@ 3,rW!Mqy$ʜ;r; Wf gQYY`YEKM Ζ_ gt,D=3Pl}.\\)OȬ�}y Z[kϱtYC2SDzZu1ЌO4oV`ZeV:2h] E4/\Ż4Hf:(Co@!fO;-ժ$))BSjkpCѳƼGT-.׿o86ݒO9`&MDs08,',* qs60 ;^.^b( g\eӨ DHjpf[gI2glWQޔD@xWNrʩGj .zP/@2+xD!RiITB~CGdbx42;<uY{ߎ]j4 BzJ:mQ`cb+ܜO_Hr9W WINUv3M2!5�A+CI@=Q>fEfr%\,*]7iib;.ܗ<eq;:CVY4N#5H)b w7W;V`ʑ]<8=7pp XMNPA%[8Tˍx@񭦪U:9X0Z{(48r-]v$$tv8AM]iRHCXRq+oPM,:U|iLi<OvG�oVޏ_]v}P5/.|Wig3巢}<&ܶS}-ig#ˍIz"�]"7l=x8h;F!,eyk}q艫(^ȻnU 9p(Ǧ|N-sK/f Ccg2?/s/Zڬc<B<p~7 U=";<ÖyT%OT; UXS ln lDe Nq=3wz5!4/{/cm& _ )PU ::gwBEd�6-OdK~Tubi  \$ 'N 6R+tmXk<V|PCVpYY¹Z69h48 ҭ- U2Ig6N#G_aO+ڵ-<]*bف8{VEF,*pƻ;{|.e;=Q#f^E!0; Foh\yYu&k:mef2]~uv2ū?\h� he?i5MmY<es.y_5pX#[qː~_PsnOtPlƘ-9M^f4r3SvRX; tDOij>3m2GݞK~7o]*) :(3&zy ZZmNZOdPſ-v�!V('p8[]!oTR6*@wpOL…1@)`;#YeKLb3( ڌ�h>Vw 36\dC<HQlКEl ˻Y~ �=YԶDK2 Hu?8ܢ$G1ot퍑^an#'MW(VٸN9<7ֈv>axѡX mLvF ɠ.@Ʀ zq22QC]E;r< y#bub| j3̟d*fa4(B9)Z$@$5>#АK죌o$8IM2"_fGheKfp8A '>`!~�:kFۙE4w@IB:e*$VFn"w& _x^o}Md -{EzNH*5H_Oa( tnzD@ĚNj9Jr\#N@6CMӔUS 8 0F m}͒yG qt]'ǣQ:KKI aʹv'2qbU;bZ55Za &Ѷ:Dӱ1O_u޵ޠP #)$Үh!v:cq1z,}H>h_�s{=T$.PQ[N{;'un0N]m( ?w} tlXu1<̹f+)MA3ju۫qv"Qsg՜(d@庥_DѠ*x/dQ3l#:Kcv`M}u?[e3ơ�E iCZKI�h?چgn´)东ڡ<" 衕B[P4e 2D3[ѹ8,mQ)mZhL,ӭ>Y| ^n�@JhpyϦCe|"ceZrVeܽq1]$HCs9F&$2^ .AiV#|,vwq~G8s#oB/cf.q$])ѥLWbi `Bb˜~4+{wXR\}{~MHW9>Lw}WK̶yXJr|f=wweoEM=VCkZ$^zk.ČzNђ *f%% =Va l5u#SƧZ;rw0¬^M(�ı~z:22nMm(`|kIտ#%NE@J`yN5EnMQ8B))û6^y2%w^([>jgIcsN,&(8{7"+:4nv19Uӛr8nD? q3~>*yy6)o>_} =*R3)P=3,8\}YOI5fecb'wtiΰD %mvْFE=B//8|T4AAs:~| q<ʿ>/1O,ѡgceQ]̾8�gP�-4>.̷, 2.,G(CW 0k 9b/Nc''='9qg4<F*f ZQRCOYO[(!m{6nHua 6O|aPo\Mn``r25~NU< 4<^NXgb CTBa{J .9[M TR,^<X#�iB V=b}3iK*(fc[kw; g 1<[u@?iӷO>֋gFC]]gVy6v 7U~ES6-W,Ck6/xzl&V6d,`|AS^OGX )$f{Z6e ʿnlz `yM~7\Q3\=w}yH߯; YDvb*Y$\R.vS5e7ݛ2ϔ%qj0~S;w <>*XSӞ)<D-k0z T$vclž)azS8ta2E@H9Elt:b ihA H+.6J!@|[* Ϧ|iPu(EBpdIY8LvQVu'(YAe|Ёk9UWukqj\/ADO/ZAk8a<э}8tu`R#P RhYS5my 6ڒhyv۬JFS ȳܞMM:A1[z@1ͯl`?ʛ7ku2{yMv{, lCiߢ5:kMt L:D`>$71x^719';bāvA8#g; nyGx$ dEgT[tOLM[i*57$Tz.P2!K(9Z zVa ;m)a=ZKt 7Ǘ%4ne0�"#3H0.ͺ}H+k(-)�1FZRHꩵ]}JK0ƽ5mlZ0nA #inWocE#X ϧkXl�] rmFPm[?Vz~>+MRôgSoXJ8wsŕ{րFfb6u>�e⬊JMDdB3H'mk @嘁nw P2]P1$迯Yb4Y.cwun[~{ƌ__ =m<׉rG ̏˫ |w&+V{7'tk<-i7…c\`^3-e,1(NP |^K .v:<o|U!ndfQYFs + &|~-**1&B 䢔Z% tǎ5&}O\7M3~JM֨iԨlĮ[{-vv̚,^x#LpoA?-}YvB?kyprhÖF]fəm<E~FL^]˯HUUM}$@tl 1 @3*2قʣ  ("" KC[}׽ououUs矗/[Zo"U_z18q|g1{))zA,xƍT"Wd]fnYf%\mѷ#DMJ |ů;ghM'[3rZH%.[֌&_g"[ɶGIr%<], :WJ71㝗.ٸ^'sGoF v9kNWyĒqX 9Go1`\"7n"o>WuL~ۺǢ Izۦ^Y'~.} `aݜFȼa\;Un#Yho^5}{_tˬIRN}Y#s8Ym}]Kϑ:z}_ʌ~)|7nzgˇkb/qurpI[pf&xM@=EQa}ݠ+Fih[ ONJkˮgҰ>EnACy]r3ڽ zd?ypuh=׹^Vs둋*fH'>X4FwҤΞ57OR$ݦ52OYtq~6bCš{8j G18+ꑧ{NE e:L<%9G<v"*϶7f3@~'?f]\ÐVoD_e 9[Hw2,qn}/)BBy3} qu;"d' KypohM!؊,7khٰxw~/դ4~%<j;z-{|BL|91kzF#31pa#&1E.z*Q'G^^op g7lo)l_<wM6z<t鯓sFsDQF^W$A#,ջre#3&:Vs,1F"iy ShmTߣ7=[L L;m <g.=ew..S֠Q)%)J2>0ӵnդ}|YAr{ˤ٧"}݆*6vg X/p 7N&a\rf�])ͦ':�a(܆w]|kR/t3ƛ|p)[]#_&}[1H&QK82σjtاNNk}XrԫTۋz=~woO_lsxװo8MᛳPAf)޽)Vfе\?d`hJy\ƈJ+ n)| )]Y#A׫\vUt6]/+QRp_)"2U׼StKZG5Fg ~ex*3\״^e'GT1QU>Kx͒ǽş @IʌwRTb7}EOK bt'F@;. nВpK-i̸ FS jrr<̠K6'Y˩kŷ+iZ)u~]f*]9zsX ؙCY?.sFý[ǿ&jyMTcXni<t }n^\!~OsdMdx9}>\#v-/<bNKoGzagn3k'ƪ1fq~V&@-$3 }@ 3OTT TD!MA9?h#\:]u [p`jtVh,kDf#|A SJB]9iDlԬӿk]8^gч_Q]=w9~Ȏ䳿RMIi�Q%W¦{Skp5?#jqT0N& ^Uy3O Ymo*â+s#nu8EcB/L߿GƑ̍ywяz]}ݜb2?>dOe qMHo҇by\jWJF-J P?[d9;Oef+4︂`;.Xd/o2^O:)6Rm=#94?܄]e-Ne<|hnjw*rg6T'KAՃϥG8_JݱlGWm֦})E'N1UJ+bUX0Xb]j)q5>Da> {2`,1I-QKZEކM\^ h D^ >Xɢ&+:`y\~M07NBwQ;64kDsVC=G\8F,,B^k[cr5ׇnxJasJ +[/s\)w +EQ͵z2gǻ:=[/LCˍI_yfM8bqӀE2Kß:ަSCڰb&M+=E6ҠIxtQ49^<GK(s|7'1(cJOV/RrP{ܕV{&^I"Dcx]'":TȚyT唲\(gw]#&͹P#z^=IQrIG_?5!EZ=}{QDqcꝢp; [/ǡ.uk|'RxhNJ1y9:o Eڿ+cg o[F t,=TnmGƒ[`"6kZg袝,H5C>)u2X̜]!q݁OG]*tF2l~J_7%$+'tn$]4 =~9pY -N Tڐz=+_8>2 Z'=BWafߎwz˸NIΛP᜸[SzCi`s8V ڵpBBLN,)M.=@Ιd2oِnsjL#4S٢~I - f#^Fc/~"SIYFN\Xm6yz-Ļ)_ﵺhW~ٌ~ZK8Kt޴XQ;Hf4jN vl)5DAhWlTqw9r~ R_y&jz5QLiv?4l=/Ymj- /S轢3`(XfFŘʔm){xe%}fisw~_IpwI[yXu3$I $oxL*6LKwm4'*0pܯ4l[ʞ{fo~D9cO?3OG1ndK=.zݤZ\=gwf2َvgJŶ fG)Z]dXН/D~#E욨tOί P LDQ5~f=t[3q$C3k<H7E6[[Nkæ_9Wb޹wŤŗ)duXjyml>L\s#BϊsEF]o/e"֟$b*A6v1VZ5kCK9<Ry/|>E:7y\ےd0׳5G^4몴lY%|.pzY'|}?Bs N #WC@w/%}<&7q|`PV{424޿7aՊ]\.ol# 6Փ74`sXF6ޞ*z$ขec;+.e;[}iszka7FRw&HLdO 7AG7,Xm*q7niՔ#APg{gr0应dҘPOT=zL X9wLp3w.g7z*.֋)&9A /+C7v$6. J?8[ljy1zp-X]D'헁R{81Χr.ۉJqGHr'm#'>GkV[3 1^&N.kNn3 hg*Xo~\xZiϊ'Fɿ`V4u!8;Ùv$ ;GGm^/y}Zi >_&GC҇q\֝yN"SR !6ܾ ֻxi/9IG܊:<?1ueZg31bW|G+}>*YOa!uu &+-Ok㋼q*<;@՝`nkE'Շ9l&V+@MY,ؑApr7/|ggsܮ{}! LVeTc5eRt'κ^_ɰ= ͒01Ő0eAn}U%ՓVmwalưXݎf !#"gE+q)y.x>]oۇEˏuDzxGbS{�׽z<d'k/Wɴx+4qsdcmk5#5&ggz%@FϿ~ʖ:('Dg$WCf ww9_uā7v%M:]n Jgg%;௸3b 7[ӳv":_;aգ-Z*9]IA?;a 럓0tNW~}q.pdqe{*7MŬ6bF2W_t$rI;gxChR |<w+\{aSwHUh]/ҥPH .;fmFܵ_\^0w+Ly^ }úgt]>r%i&f7loqACFv7?+oG49w{rB'kx{cW�Vm)s4C`XH%eGyo r^^Xije:Q`)OuOr,*Tx:crm%*[42z#ĪH,u1y("5R—c 3\b)]wt"cK&oN[㷘mt8a=07ⶓ2y4mο ǷoߣymkgjJ-;rg2ɜ A}b%*I>Kb'0̳Y|h0akOy$g8 ީn Hb1~¶`2Mxykmj( 3i )oey%/ 5ɫ,r9Ö)ov4Z:k 9Y譮/\fzX&HUyڄ;m]Nnua0ii"eR?o mG^<R9ۺ0?/Ff|}$l|]RU;+~o,'lJTs>%Gh+Ur& ^/Cbtd57@/>yYلvIx8I$m{+'KܐvѺp'[1âvXLJ-=8%淋pÝu@ҿszz-֍bF?ZkVrsY-Ƈ4 p4Ѓ<!Ѽ+:J'a2~N4yr[_xXGfC ݌R[~nO #zL¹ކ1%ia۳bmP+["T(889eoֿ~U\xYhMmzT.KL8'wՉMD~4"݃ -Xhx;3eUwیma%Orjx;&w&@n1g,^{+֭^/ =gPGiqr+ʐݟC6"xF/vutrN_5UM%Z5bDusC5epzg)tu#JmTlovIS.G;x ;`~ZAC/#eQ@.V%}b֕Zq8t:w+W,Sgy7[iCYL*C =c~,ciGSf]ݣ<W!P c R g{:Gfȣ|Nwh=Rh9i=*}q"8j~:ol}AHe=%_GO,;309vJ0>AzRc^ESamø\5_ͨ? E|H?Kc@I֣V֦V֨VV֪VSE" ZUJ3 k 듑<Z -(Kekukn[v"Q{yc]XEȌ 8}'F"̪:'4"wX4ڷZZ[Vsl/_(=Wun*ߑ/"8ND$@XDڅ-gD㰨(&f.6Ӛ~EӲ#vT@U)`-uYP TSh>Pu8M&ǾtܸpvCKg5U+ VJ+ 8f^y 9d~DqDvEд[DD @FEUm=}| BbV9'`d{cU�ܽ&s,-+."O]� 1 tR-ZHf ;L%uCȭ6jx=P\4־^Pt҃H+]Qx+<,u*{Er>pr$2H~ ,Ȭ*I}�X|zz:*J咑> $ׅ� IKNNI&;<fUUJi m*h�K&$ 9 =b_@I!=I4Bx>O U6z(O WlLieUa@PFE qD.jYN{�)Jjɥ3*')+%>f|pt`C% 4ASUB|=pY0ITΈT~Ĉ+ bI9a]$rifpT�v�)+ _Ϝvn:bjO)^I'+G*fC`@@a%do@9'�0TߨA= !f4/�j�+WD߻ )ot C ozui"_Xa|bOyCO:0P) Jdhpg<xz!nˆIQ}TϹ@0L�uv窵0!IА Z܈CR!p* @0=So&OEo.0SeO=9o3|(hZaOU2a K%~cYS855 Z䀆_(EYL=%lAx ΅D o%C2ENF߾lfXnGu3y{5Շ r맀mIbiHCMՐQdW$%Nu]1i1p!.�|]U=UI'|p$I# iE3욦 2;EACJv+>*0 Ba髫�TY6T'<|𿂟\�6c U"f0)>+U`O*)Zhhf:rS!!=ϭ0h5a.B\{2)V3hA4UX > `@ +?+l閼.!U%~fOn``,0OX8|@!䨑=_aGkRA ~ X1 wXhpฑW-VC@ �"@jSBx)7˽1clQL{xK7k yb@(ؤ;5o6tTnO A,0x$RxYl̀^#�+#?s)X7aVos_�e:;ycGX"I!0.rg$,}2+y-P1fX1 @$!<w z0f3翤:4&т_S�HWIzNW_gO!<[@&@j$ΜO<;q n0@@ULD/ppЭ}-jX*S$$8̍ JX~P < }-1z}>Z{} M0 w W0*,<w[/) Bɑ"UFFD4VTYSwqQ2{ڪ0d�fBC\IqP.>ɠC^`!ؿQ/-U/ }"$8`\m1n0sb-,{2 /0{8>wﰟf2Nי>GӄetGraf>ۋ篃9k/!܉u"v0Z8 {vd(Kjh�\CH-ބVpvn]Y88|<Yr E|\dHr #A؝?5 |eNݮʀ#;QG j#o]\5ZT>0}G wfh' 0 TXZkJd;�eH[GNVE{y?{ǒ PKJÖh, }FVK}}z{HcKtfX=x5l18dGW!tLW-M>m_" hq WaΨ? =H}vłAÊlQ,_q(+z(mwa.z__~e3H ROBQCUq9U {O\�0\>0a"UE |>{0k+3 ":x{ޯAs2}kA>*p.KR N&ǎE}kle} PXce-D԰;4H@8 m4n.WmWF9iem%dOPV-ٲsɼ Fx]e`m>l\UeIBiAz~YD@;dE!%$҉`F&J;eEh0ZZ`8 /!{h)K TQh)d�P!$r? }W7T<Oxѻ Y eFOA;Jd1T#4[ԳT=1e|0UC\n4 BjUJ t7eQW`ɒ˾7fH~T1 2DSV#\gW_ _~r('<-3`C%`B$VXAG _&!g$<%�,!A2,uI v L|֢]YEnhB(@B+HAb\F̋NBORw|CfC  �b.qT{͟X!'~N @BnB/ {2w|N-h4y"eK(A=|EA2|AS,QX` R(b`16d'ڰ"q~RHdb#�珏>w?_]PWfoaTb ݒ�b;<xUY?~6&Rat h L3M*)�/>?pA[@X*!&9_ ZdH7*jk/5V`yBܭs& Մut[n 7P}(Yj`ATedSt-ƬKGxT~_gڙ # H]Fu0b|vrVCA0APc4-HgtG 3@~V7WmP�N"E?e(L| ˨pxy^PT\!RL>ޫ  >-GCzϦ)tsE>(Y51v!ȴp+t BZ(�F*UM|D9z#Uv>;p ^J+J C fIuHvIjp4\Y0A`%UCP!p (4'M ,Ͽcyow\Bʼn]UR 0~Zpnh6v෗nhԹAl�6D+B$A_ݽ/^W7f1шhaUu*):3s+.a}3i4n&D%2-w!3\ZdKY\YB_}�5cϼa,X0'z Fn/$,|0=p7N ^_JDȟҀ罆̗ .8| ^u:ɕ(yHBD[)]J�XRdG}GLH miOSgVWIroL,R*ˣ|6hU[0Lvb!wU?OC@.]Yc(LP=#R[sڼzHghBW9kŐJbOmygz> "R.0|mQi]ЄrkQzo0r 珢rVDTp`j=QXlZυgj{@Q;#vVF*SΙ4* '7k0\ @d|+.*eEk=XЈ_!"W(F2 [WH]x:id|h5YЃ,[H--/hx 0?Uf'[{&<aX%h*4 "8#tA2=ScOˡ8wl v*d&X:U VGwng+10 E8}DM>W^  � "pH#Tf̫xlW? 0T : qWH~!4.f5+BEE+1KWŏ,Vxj_d0@bHQs:zj Ԟ7f}?V^xg2Ɉʥ�/c飆v78!7-]]߅dŒ qSBXx8. X �j F"!0W+WUcwVW"HUՄ&uAÒGrj(hl}aFڀ;QMMOLhÈQd0 U85Ϊ躄V **?.U At'>uh N )PX邾D!coަY9"@i*d Sf̢&+wE57ma=H�On$t[@Iߌ CzBn xCF*nZC7qQS[1趯!p냛ڠ_٫`9'k# $p-<ds~\x.IP}*_pKuW<~;cP@.Y"@ LD~߉Tݗ90um+? cK5\4~=Hu ~t~+* z,~H.aYh#قvC,VW6Ͽgu쥻;ć,uUU p|tyX�8;-Uh1__Cכ6$u 1 {0r=rX;R)_ kHF cAd:=$IiNl}KF za%g/M6tu&p§f"Wd.KkW߶诀jf_]>902fBX9!\cM9H|3/Z~'}]p AGw$csF6[=EoNUo}2x=y|$lG:m+Y[.m= u",c*]ڥWzd?{?_jp'XzDZw?x ˳A=0@(��"H! !'>i7uPxE~LIemxٷ(<$(e} 82]aa&YBfUJ׶M] *P~IO GSpĠA`rjU Ⱥhi y 2Of&ƪdGt%Pr74' \Mڻ\%24O}x$6aO)V U?ij=$hTNgdžac{ 6 EEq(x(T? 5'@Q3Q|*(Nտ&uJMVB Ӳ?N&-;r +<5(N8<hOu Njݶ 9:<o|ed#mad'gU5>*{m&Oϑ$AG\٨$-]qO7*Aq_f�!oG 7BV< G1 d~Ϯ\1s^kG,3G;;G{F|Akv\<@@煮yx!XLbL>C ab`BuEc-lY4!wu26H^RM ~9;QMqG4”TM>{k4j޿;k۳m1%6y7+qY"ux{,tiZl$ i{&PO`ZH��S[! !5nHBGc;4@؆LAnF160~j0�8yG B"!i .7w.{ۋ[fe I_V/U_*U]p}uWuw߽;|( Z֭55E`4[5#M++] I .^hc�ʇ(ănټ"nU@M<cGkQt?І.͸v*)h .'g� ޓlm>_:Me#ﶔ'PsJ4S)xa>L钲JܜAX[rkQ[WBtZio22>?= uhL(La<C}TaOu>뼱 c7y� Saj3W>Uaud_ rJEםBO&n"ؗB*WIY;#gap{<el�]Xa%^)Oʪ a/t 6މmcV,QfL㢐ˏ߸Y!EPi> :j;KabzWw cS[g|p2T/"pc+~Wׅr?< ^ GˉŨ^; ,J"W_s1#/s(J X8ԓKЪ%Tv ١Rf3 wno'V7>9(/w6vi."9}2AVX)BG{}O0y|ۼu 벞,FVoL/ɪR| JӮ(N2Y0PsMّ*PM!1k'&XVK:RM 8RvHE+,ʇzԑ C~B6L[x꿕}f⢓5'֯OtpXj;d[0<꟧a>L猪:F`{H o5.xj}H\Ӡj.pi=yz6O@l5#W_qF,492�H@)eyv :�H>ȶ8(G—@CUgt*yT on�ޟYXѹL$h<L]rj@^Ъ-yfu4k~bZ}a^"Q`N@Ḭc�FEK#)XEZAsщ UDZ\~k]MԠU(%ՁY8 @fp5zK'.kW̩t㯤Aw6f%;cFnPuKq8^:)."'|3Sa5_x!?cVHtk=ۢ&(ōԁt&Ï+@˲Pj,U/Ώg8q2|9pKtcF#۲K8 <;xXCo& qN10<o{v9mC2'E}IU ?@<J~G|\[)gZǘDӁ<}նB x C4v*]5 ,K.Zn^W0%_%S\.{fTӇ}cŖC͵\oU3e|vj& #]]@pKif%xO9,Ju͒L}%bnc6OL7SCT$JJ؂2g}Iҥg9!1gTf!piSKtSX|9m|oG6 [ ^CdpsJ{O|IZWVb)ێ1NxFeާfPHZ U@4;^`1Yl65)x }Y2]pcvdT>85⋒{°K5kSB Vwmrm1O~fh( ۗɍ EM :tMhY-3E?FxwڽڧX1 .ᢿ?Umk[-q?vo~ `t*:N+t &Ņʫkda֫+Dx6KFPf !NcWG<c6KcO(0dt^x2k\6''Z@=(SNwO([L@FD fm\tz GZ 9#Q+D~3eĵ΄ շlbWDZ$;YsY>X+@*Q@@~y0Ӄ>?'v3(-W[D,]Y'.Miݝ;D1aN˥vk@ꛇZe&a"Dž[5F8羴F y�7S xތ(ǂ۠]bٕU<*: [g/8~ǃ3YӉU9Q` +ǁ3Kxv%�3{v&Xb O~d߰!G4cgp(G$g[6xXkop͞viowӍcz' _9@nXa z<ǿWYh煄,00m] �ᜢa@|[}}[07kB_HAwhd c 2B! rO;UYZRZvu46*ϘEM t weў) F3=Dd 2d4VLH~w$D�B'? *, x|?O8={Mb/f dxYe"6`gSNr#vÉy_)#."0hW/{u;M$\۠W(I?v RQrݕ%95pg- "p1Fq3zY<_nO8oԇNa.Z=Q9c֟_ IrvbWQHe٣dЕA=Ѥy/@?1ޭm},_ U&cOHLy/(z96]l Zup8],GraLnv wYZ-Z ,_lHZnS)jj$/R.Z# T։X 7;yrfO%~XQSZ蚦zoU;˝9pdv:v[ʷ%5`.q / G)?Z+MNq-ȶ]_&|Q veـI3g']}Mq 9@0N=.N7Ԙl W 䨂8 S;`#OUIWM9A~'{Z%o/`9oZ}{Cy´z`ů>6&a"jH;׺,E/zɶV.( ؕ+p wpoN=�`B"lUoi50䤶Ҍ.__=ɠڳ8pde1*a]f ٺDK%qRFΑ(W.S(o S!H;\u}] 4~"HI}D$Y귯/t%|jT<,H %;WLH'͈rU5<Sҏ`BZj>غq_U^{f oe:P|/aMrII=|#}%^ L^ҶpY.kOjn>.V};HM0#ٜȃ\-ϣiaVJ^$ y;/kkNEo>gT2n&sBPئ11lu:{%_Rp*Vϋ {T;2 iV c~4ǂ,Dʌf[0;3$Ss;0+Y;D?cX=H!W =\6g8;#AzA[E/P_ѫ &Yg79#4b,3x1oimxj%UgͻRr r^:I9+8$(-N 87_!V ;^&^9PbB ݐܴ V3Гqy1*"URQ]<B D?QKΨC_i.Gt3e4l>Ge<( P~mW$ RK_25EZ5U(P㖱_5@#o*'w7 :ޙ_&=5e]>µVLă!&+/M m3dj^> =gLob*vH"dg7#I﹗Uq6jJ|hٞ}fpHJAvO1l*+;L/A|tK$FMڿ`DE镟Yv*[\5qMӌ^ø/!VaV-H$8 Ȟg^k?uŸ|lݭx�./@MTb8g}2ƭ5t==fd?8Ddc{t÷? E,&Bx1h_CF+rD eM&лA7^)Nwduܮø^r_tJ Xh" }LX?y6"ڌ5=^/F#5C4^DU77.?Ukga|0bkG&nDDY�O،mJ /qOT0q�8Dzzp>(Xdx|_Mpm+yGyH[.5^I ;5/j9rںrW:d5Y%ɦ|_\Gدj?$IY%b~Oh_)|;V+4Hb蟲>zfhӗ&YF7Z^ 1Op/5PB|˵uʑ0`=�$RUK~067\|Kcy~ty\' O!E>+ sowudӌB{Oy9]aTf$èds!;O]/ g9#zCe E gT[ �op~kG$tDF (f[Ѭ8`;\Tnj@DHi79|։eڀK "9yD@tK8ͫ|We% >c Df")jn1data %le0œ3�qjWTҰLVH]Y]ے\</ 2jq4ϙrg\@sPGNI &ZkPګAc F|Ŵ]m&oD  <.v$Dl!@li�x+pUӜOdm <+޴+iҲ8p[rV%#Cjejo\Z1vB=<~DpVj\wzX> !]rq7yM5D:x:8$ wM]lq;\n.++a4dUF_clo sc~1]j�66c׎ѩǩ7 P[ssGܽ(Y>^.614u_ =1'1ڻd,kԙ{m 6'o}VΩWy0)S�x/4O_7!84T5O6l[jMc%jwp&5kU[d}aUܳBR&ghN `Gj%3o̟O̚+(2S6ִYU D 3w~@  ةKu}z,z,_S\],U{8uc^ôM{;g>:N1c%:fըNF'k0aSIwU5:\#WLTn6ߡ [-^L=׿'Nd\,vW.ѿR &fC<lx#qʤ pe/տ*ͣC9SX@.aRs[0f'&�475d .\%ǣ>}:aO!o^i/hT/눒.Gk,H:0쭷mDz]*3s\Rn >,Za^._Z$7޲hrd@p!%)tU툯qҶc_2Rկụ٢tRҖ</1E~,vc$&*ELC'] EMA?AmB,Ю?ݱ07ο 1i/ $Z2ЪMA;{W:~{}=ϔӎ/}eGhͬHҗ3J{:|ք%>Vxټ獪foi|xͬMFpS;Um3= }!Mo=_0P/ ] ltkXJ0Z3܋c-&oIo|%[AT (N!2ѣ@,C􇚕\rp'‡*d`82 ڳwx֣rœ[ެ/2bPow aE).*}K9mh1x,e 7ȶ}L"}~+\>|_ cI5YOͣ&<o=掷vc~o GO(ȉ^EC06*�V;&%=5K~hǘ{&k弆#aa#ɛNgg^zvÛ I[qJRu$_Y+(Ń~Lۍ,~׀} >=jP>Z&ӱaOY^$?}kxR7{JBPag> {<* sៀde<VJ!p'h=4^)t/-<(GXI^Go?~\&N~7vrԶUГNF3_ =O/dN+xSXӿ G  4ˆhŔzpuNee}Y&H\q3!Ja3N%լԨKȍu6WmmNJ]r7Y]t TY"[ͼ}8!"}V7lюo$%;J{4c69nl|[=rHy~<6 rFT$B IFyVǫ_/yv؅քqyObxgy #Bc Oi.^~xF($�iƶt^~ʟTsq ҇\\RsYSuw`0qj,S^# XJˡu׺}8̗c&kd `ƈ"R#.pM8�cI>*)'10]?F9A^Ruo4"Dn mYCؕ2hVBFng܉)_BiX9 XH<UkQ arf\Q[c|q>xpP\B$V"Q߂sR1qD ؝uiRlP4H}At@.sC^YhFBT9Vgq8g``}tQa솧׸*O&$!,Eh^||= {?r[ <VBLБ2.ъ�ޜd2"%Y2$>DPk/pT�.dk{}@!$*.%S|;7}C߆su.XUG(LEWx 8A1 lU`X@)QSaM:~V zfww5jtmdn/P)S5O$=y*XwO`p $5պϬM LREQ<KH=n;moGm?ތ8m;qs$HZEn(Vs\ZTc H&{.�jSM��t!K$]\09K_, PlVMlWN�._AݑP8X~f HUDjC|t t8!ץ"x;߮XgO}[S=(ʯNt*ΡSUxz3ĭ:\.Vt9fsPi TVH:3fΑ7>8@ƒe fWAzD֋R[W㦕T1`:ܵz 猒G8}(T\/^h LD};z`zNE}HúK#GO TF#`l(yЬ)eҖr'ïM.IKLE76> PRgc 0/6"НGdM[7�(O{A#�Ȫ 6('rEm xMr7̌ ؄:i僷 ̥;Vu9ǫ0EXK4:Ea̡*^řM*gљ>N_N)*!G.~G&UD]1soMjזńoF�zCfׂWYapm0r"]Ù~tt%;yʷk6.Ug`WzV5C|p*wkG̦Cz3ghp}(,<݇6B +#6!<By0@X ߦ⢱汫r+FxEq~95p5d9ڷ qV ,;v.-80j9�HN$]ԟ>NPl=<l~\#ݹD.YP$1޺n 椎9MD̲HS~{2xӵCtէDB8 fC>\m׃ ׼гGn\ F7R87X| pċ+VFlNdf<OO;xYJJyQ }%rĆɡhqb_NR5b5$uH"_;-כsjoyYT[hpelܼsjBd\Z}(vYpiAm,o*ږQlО|<FJKVz`Bt,*a^G~Gi慅~DE`JjUKa:;FmH氪'Dvq�\V[W̺Ȭ0k]9APp-V7uVX9r`PvuAz5qicm fbAbW#R}ٹY3,.T\R~CC#q;VѫG,ٕZKɼr҂?0eq\l0|5o_HlTRõHRqV5u[ӯh& 塰c[ޛSZϊD>Nߺ<W%|Ǐś.}Ng?mI|p/bwxm֚c_,h6p.l,Kx^{v+rKd(}[aţ-GG| ,tm_(y^tmε}~kRz_janpz-m|/ͦ<ͦ|/uԸ}WteWNo,>Sҷڞk~ijr9i~ׂW50e;E]acէR$?n+O/QGڕA5.طG}7/!yݟ�3JRy"^_rD+W]NdT~U/S v`hNUJ^}*~I[RƳ8$2W!g}dݾ26,]6Ê W5@իߏpS w6|�8C5G!E.qmE!v!0ltoۭ;z8;G^@~tJr`˻*+r1 ^+5!QO)W')ѣ Uܾ ;bG/}8<tohPÇWzl(PA F<28I.B}�fu֓jSKK~{n8[O!AX}AWڌDnQuC� 鿐JE5#ջoM3..*O22GѤG|(J"qpaBCRdz|9o_4?^cwo,޳Yۺr!çeLpv冒ɂRh6U=l i&/ڕąlBNkmWߣc.LK"-*('H^I;e2GhM݉SS„# 6]dn#~Ć|Ps=Cw#;#$dU}cPm\!8'QΥ|yOEMnD=Xst~IO݊& gn[|ؖe :]5U6s 1z8LH>}(Ҙ⎙O l=s8q[v ӾLMϵ/h$QY=,@~æ_pX/O8+Bb 7|o|*e<⠚('>{ ӈ?x"*`τ=lE~Խɩ][\�NkWq�ƛŽf)(b<&{&�=帄 6PQ>aA#}Yo[;tYTsߤQT!!p%MG+u*iVxb?{sf >< 7%poXMw?wvI ^C�蝫>\�Rnmh:j&}kk%,'Oe]$?jqFd} Nk:%bnQPTb?=g0G]iXa2= $08$.USWu ,AAпtP;�dA^v z 36ZHAįoXݨ|E[,e/7 2e:\nLboF8D;(Y<Y`v+XGB:=w?.^ciܔgRo!BmjA|2d͊&`Byw#ּQyr2^GϪ|)څ*tҫ6 $ˁx+Dfz;vByG|Kk <;W/HN=Wn\ݣdmٲiėhFg57E-&o"v(�HꐮI(t*ZƮj*u/,!Al]"4[<8A<r8^~+$M*ɍϙ<�Hj1\g~հKG8"}n_p/CKVNY.pMf5L޷!~/I#DD+.$\13Pu>m{iȳrEsY+$K8Yv,__C1#vjiCn | mnG5|Iհ*vR923;԰Aꚃi"jw8e:X>q+ig5iXbgq h v |kgrI;aly8h)U3M`]͌i|Ȱ Ǫ(zYTR]Ic`(%q0Y+8Fj2>6N@!|d*^>-?ś%5rE|ƿ<z!^B&jÌsnjfdmdUs4I"jVړB?ӻTY9 !iҎn,c BY<dK*la6 ͋jiN4Hwț,,"?[BLJeex"aRFKhՒZP§zUVHȸI8)D/_'^[.)7:`ںsT7RtMiag 7rY4um8@6Q;rȗj9Oofsr։8PmM~qGH=hPJ g;|MdMx/Ia4*ސ3MsFrP._l;8՛2 pc&ejdf:MR_#blaG z^- W|:N@_hg]]?{LukA1R3oY<!>*wdVN*73"6Af=1orU�³Gj -08Ʋd%�xluR_<Cwb pCA8P;m«}/$7 |} :ٍ^9Oٜˇo:g,CLp2*UY;wܴ}8U2?z.|t@{KC`>#W+pwL]eǙ<+hn]/SDM"e,< 8P 8D ײxqcNVEdB)hZz$ �y@O--t }[g! 7s/Po<5pY;yشa-6*d>b8hsJ;syb2w/"}#E):JNJHC{h 21~Jk I@*FМJ~Q=&zvH:3%2d8{$+5pYo?޹R7=9#VZn (t`~16\+K7&2J//yB]Yze 겝]JQsHߔ NvQ7Oy?2_ȇt̬7Dj\ObwP~+%sD4J`JXqn|59.Ƥh86vl̐D_#}1<dT,/⢧ذ1k[ x}@W҇niNU1@"Fq\u)QF{FrK-;U 7>X<dCP# sh>aU2c`9e>LКPNF iysy^Nvxx>]W~sR͛%{ iEYHxUhq5q`T :$ӤCo29XcЇ~7ɒ }sFE5'+.c#E`"=E;Y?~ sb0vfkl 9!(;4"_w}'ka}J ϕ<.7|XhAOFѥY-meC̰L>wWz5]ztBp6!E_8PṠFf(8P;&U)UpI_tEPY񚡓,69muhɾ;}窎67:0Jo)6c$RlWOk>.e?,ڳz:n_ۂq Οà` t{U5M4BdeXO̭^9<;]U"ڰ;CRtM3{Jʞ35t8,#Q+K(JDz Ⱦxo([J+g+Z-e&V' ~" ^R"W.@y#M&$'Z 1ZjVKɵ*F_Z Z^Ib~~jRCFz>/�*w ̞px $I:jTL|nWLoa)sd*6xP\^x9+=S ߚuJyI!o.^KWϷ&}+ RL{Ė0;>n}? Ehb|d{߄3/=%oeu8GiU _dz,2Aݛ}iC(<XYєy\(1A93!@ m6OԋRZhWeD^cKKd04dwޜȔNʓ3|xO^X:9g֬k[ pW~<&~m7ׂ Ӈ?&i,uƒ_/%;R"^&Q&pXN__H"ޭyNI ڐޅ+"L0+*<P(ʕ]YxxC:X4[#we eGb`qY]/+@-ʊq7僟ˠg<\(3y0ڱ)OFk? . -b<8u$rhӒK"&m}( |]9r-̧=. ؎BfߔVʮlYA~'n!ˡ}$C4P*B?;I}-tD;/C&!re;ŠAUˉ(e}dbڷ{E?\Fac,}4#t9ep+Mػi|8[01@փ=RSU z{r{=9ܮ?p+7A,�/g%$G>&g,'ѱ ༝)snQMT[V/*63~$S 8lut45epMEͼxRZZ\cݢzI"<0M|-L%لk2;oǍ4 D!;h`H\nqܿxi1Vlt; xC`|x9tk~c]棤FIn۝%;.܏pV<QX$2*4k*gv3-{lzk6//{/%։/_H;fMrkjdgKjw 5dŘ5MbN,V|9V%qpݒv{dJfNo3&uJc#ZnEr`EvR=";ٱ`R_0D"ސmx.6اx͜ǣ>6M�2% ܲſM7;4/ts]*r'pfksgFI:f a*{nF\|M `2FvarU^B5;~fP jBm.�W3VٓB]2.W G Ԧ*idAU6[cߓŰ7pҎ�e 'sl/bF 4fYt9Ķ (m<$ Å*8`l3KY7"72Bܫ zT_ڈmq[2ȠKgD%̋]>� aTCv.x7u8(4Cg6[-1c8n5 3jvHza5CpPh>@Y==Ѿ/.g'fvƗ̈́s)\az}nކ{7C6t7s剚#^3q7!˱t9W foVsϵec;rtmg KÊm8Hib2Q̫+8۱AoG7 gٸ-[Cextfg#/pK'{ d!U q; F} +yS }Y(S' ۭL rǡ=1[<B.E3=D`Df~rr<@[Q34Q'^>I~G~ݙj&p ) N&Ɍh 7zhG i ɟuC"6/0 Ɨ1,II1 " �^k4-7ҳcp-AI ۙeaI 91{@|faVuߙӯ?} fϳB S%r_Dp sUF i28@A.<M'c8E<RmM So4?J:#qqL_Q: 5|xa\Z8N-*X!p}"[jXSqwքdtJ75|xdž|ID>eLlc ԝ0~])k)AJW;h9o`JX:v[Ƈ pس)zes_ Bbh*DGÐ![P|>'pe^0WVOJ."vIŠY/_>Sz0ʃƞU|HM_ބn6NeS[g5aI+YIӽF[F|"e) xYν4WJn„aXI\HB'FPC <dgK<OFȷT畞R4;R27f "D{J.G $&9R~8Ʀ82 Lڐ@|=O9iNЖ acچ�ԍxQ$Q/Tu0&Zr9)Z=+ⱕ ̈́ 2DKX�0- A9aܝ=BP])9gea[a|~?& >Ds`hװ1`NtaTO ̞q3<vjHe$G0a*Y�5~= )#͞gҭ1d_GD>_<h笌l0{$|;ץZʬL,M,N,OZ(6XAe6i72SO }&2 8nsQuNh%G6<ɟ7`= ўp_ҌÇAWJu69P{)ƞ 1Aah{<3KIߙWGz-s' /%b!Lj(YMM:u9MAGNUyؓsZQ&rHJC1٭H+" 101ߞc[ QG8-'i/`<_fńVP9C20C2D;Q22_1y+D )*鵁3E4/3y9Ɍ23dK:|c;AH~[.ݼǓO d:2 VDĔ4JL+<dBn(wF9R\Jaօ!_ ѷݙcGX6aOl̬}bhytAاu 8Gѣ6V(ufAĞE%rSo oN[R kb�%O쮝ˈT?#r{t@Fh:IӸ ,[4dy|kwB5s\.]F\x0gzx6�|aMI 3Aĭ[][VGsIMCU&Tp-RlQɫ-#jv(藑 LBpK7siQ&}CiMCz:a@�i,#tNC-S:$q4fORToF9 |6ֿ"gt 8Ya4XS-|bfckw03itF/oכD3YMfOH<gؖ MB4,-$u7x:Y5tVpeE]ϏhߐYٌf :{8_/0+^ft'ɴęs%GĶ+z!*mسhsӭ(ME.63N1 kgH!y>}"I˕4= lj}c89bTkD>NMM~I329J9ov+W!I;a ׻kGVWgՒ0Mj8-}sGqU1[CُLXTQA< Lh9Av Zd68.scas/hS&`!Xe&\l9l1Ro~-ٓgoۀCewp񚸭hLIfہve[7HV 9M!d+XRL6jk3c 8QS3D 2& HqY;F~$.D?6Ĕp˷1h.D˜ec-քvc3q"EΚZd CŎAs`2}2A~:{֭8h0lȢ̏"otK<F) \A v?r8#{CM4t:#jC-;]z ;ej xh钔{2tXƤDb|WnŒƍ߳ɢXe]-a$:=d*b|"l<?rWI":f W ZH㎸U!e;cPi}ʠsD|MjbIeTlx,QM+᥌#؂Ӗ@)rϖm$w[ʹ{U%P4yl L=Rc ɵLtMȃkz$z!pR4:[E4*G>?mZօ9OΔ3a@猹ȿEehX ڇ$jJ^QQD7޿˦;�ٕ|j Mwѣɗ<#߅<u m{&cb<>H[ꛖ;WJ7,V+i=jGꯣϣ"Ky(:q+:XJYucmI"?PbL[خA(: %{'D�8<_T 'npV4-&zp:1AQUbaTuLrǐ{{AL1PׄN?b*w S4`R3M=N{P{KB<>M*Nfޘ2aښAw'i7ZY ȆKf ǂ@Jɹ Eh甈wl:1_&YDZT[wC +g޽a.qCH9W%Dvf2̣`WGfá?iQ3ʟoWPe>LD;LaRofSYyYC)r̍Jv+ך`G6$GZp`9;CH2ؔ/qh\dsmŞf+4 N R�:'<ۍ S |,X372V3ƬU;iAC3m[cW4za6V7<D(τ < 3A,q&9:;zbՌB쳁Af5 }NF[W{%tη.v3.VSs>l 4>hfrFbIkIhhy+Fto_CO6I>YyHGWCQeo7oqdCWm0 #RG'MϿuN8-h1.*4N26eJ2,qlWțq4PAjօF;->)w{ _t8 Zc9֊ S/\cfcyeRk4Z-P#Sۂҕ#3om$߭Hkc1I5s `p6ѝ b :Y>K=Dvsİ$"Q 6mF [*` >g,gO&΍t~pR7V~>-~\H8RڲL0GF#6e3V&%R>M~\ڏ\: REGgS܎$v J ^C ?Pu|*3JYk4L<_C (]Hr/h8@p" )y#ZLRdZb% 'GLJ;B,B!F[X%X$E/^T*I7gB/.'xG玾\g\Huc6cA<低u<'!P>\xN ȔTc‡h+tV 6Ni[C>@`Yp fbP(OHU㱠wg;Y4 ʈBxuyVq_2}53 X<`:@<e'J-2<{:(gm âPp< s1D9 ( nw `Piws.Q//ąTCqn!dz SQq z˄E|SЖ$&gÝ&l 'ї ٥DHP&5"X3=obcӐ.%6<Z.~M7Hl 4Lr7ɉ $RA'lQ.ӌrIS t;=t\Bgg w36::3g\N:_f $GT&f&6Xf!׭8`ǃuBn<4s#UkWB%uKA~NK mntQ%M;UfK폿K?GOx&&Op!P'd@f?P|Mr8;`coĪe#FQn*'~jIbQϛvv"rdGexgKU2CTAN/ޑg3:Ij�IU!/~I$:u}$rMoDMr= tǩ%?^tNȃD93Yb@sdƆx)*1=)wc{ݰXd~;I&GI4e3mr[-NtDkDE<8"dt^^+~%`z�+x҉JC{»<zgURgaa7c^8a(1^^m2\M\(>rS8<1?cj=#+r&9ʇy?$b#V1KՆ 6A} ]xi#dA,jQ}(>+ sݙQ'cktZRw[.k=�э.4m8`3v|WKѹR .὇RfF J9Z2<½ !Ͻn\8adRipN$9C; z�#җN 4c) [C"72g0(~:q[WqC! }΋À6iá-s.`C.e} 80% s|#W ꧍*Ƚ; 3q7#6ܛLduGAM&fQŒ$QMX.zpDCjvg:?o[oA^7=ަ|դgw/7lF .9{rr4bϡ> <$)>cѓ?xX޲?9|=v _u]Ӄrd@=ضa~|?0A{#sk" S]#skx͹?!=bz< tW�7����YI37� ��OpenSSL License for files libeay.dll and ssleay.dll.txt " <~xJfрlKl,w/QÀvǚl? ?{;4$só3n >.IG|D" !�#W/pZkƇGٵP:xrfaw9xA9ϑ،ٲJ}8ݰgucLhv<N<6M:W|2ׂ'^a!3߆l-t~#xeےV3'')#IKU 5J-p5oatCߡH%ী9nEFP@o B.! `{ lkF5ۊHt٫"D *Zsޯ9glP{O$/b Z콁 ?c[94ENQd0jhM;x48 li<6~؂&2ÀV)'@;l!)@gd =gdn8l#ogSڡQ�D QrQ>RtI;L I\wSP  猐9,X x Iٷ㩃BԋTقs'ĽPPØ:β%T7XzDOtn"_K^"/_g,gr<`'K{>%nLI1Z7yxQK y2-0l\2`PȈfH"{1yjLáG!gΨsObMױ-IqP}L ZdNڔ*EƧ`hD"= m/,QNۼj>>%A)~OŽ$^ye=7̽ =wZ3LlD8ݷrٺ;r#-a7Yh8|f~ s`3}t<SaW[z:1 [3af:Msv}Eb0)YKykHq`d,|GVP o�So ٪{ 2L8.9R?H(g`7:BhW+]Ip߭3En k=z*T@B+X@xNĩ635Z%` a�0,C|SWIe( ]A/roUwY_' x]Ӡk_Rk  Xk@ W dSV!Q(Qw⼫>mmç=+ 9FR53~aŽ" x3G r Z$<7(>7 e5S~I˧u}誺\kJ\} %sʒ~#|pN|&Ƴ)KUuxK tv=djT @7 z!Rxl!ҝHȜ CJg5m!|lUEa!8/żSJ rC`8Ӫ!^ӯ`jʣW(I gA?qV,j j Aڹ(zZnV1_UzFj׆<82U>X^_}LFs>8)/e+j*zn "He t.|RKk[0SbBu5ՁtD6PRFE@ة;M$f9q܂kf2O3Ԕ�if&~?ܑ6o#oM:o'Hȣ p'\FÆ+ʋ(BkXq(dhOʷ BBH{̐yɅT\ϸq'_ r3>w舢 "1Gȟ?>67wVeo/ m 0vaA_56hfm72H6k:AV n_l*^q |4L)C.1ǘNu_%W8J:yuoqnacqr_mΪ)T !0#v+>4t,� ��"�G)~vM3 � ��libeay32.dll%Օ B3&d !H"28 A dI***(*+(dh S.ܼ[򍭼V֖ב2a Ez0Nugӭ{&H ϾsϾ~}< ߽Zt{z7?kϟ׾ލnz7c0��Yqpi�� Y. _U01*U�AVj#DC`%#p >PEPϨzl0 ={fMh3 M/i{ ?aw\b;))bӚ|-onon['7J3ݮ/ƷJ(G:2|P?](Yr;h|5R .+qz_ p|HbO54Ř?="?V(ҕse)2eSwLC)g˨ J%oۤx3;jZj?KQR9y`ĤE1{cN Qz?K@86~I #S8V:}rxmMdc;Dnfe7,9! TDAq"Gb Lhy,4y.M2KXy[K�:A6fҐwp,*|=w@x)z|3NƕKϠ_ty rta#aKμ*=j98z<Ɇ}PRhzAΐ+M̸V=q;@%C!)CפX<@3A^idU fT;}0{9ʉ{&nM"CsM<XXZBpP _:9(i!'~Jȑ@|hqՍҊgR*wZ.#yLk։/�ihsʛtJbUȰ_CWwhF)srH61Jp ꛔn)xT|y@f߅%!?(n_Xf5X2?t52%g`JrsLғBVRHQ$ HNe:-9A2Zkg:dBUnÇyФlxbs[)$]Kz]\}b8JC1'Hch;I7waJX|ogS *3F%"sݦk j^k~1y sX|!Rᮭ>A< BO&u?Q^>h17EP8g>i*sa2T)Jx-sPi1oq ,QƃF&I DgvЄ6G 7Aa`~Tj3�>B0H A]ȶgcOZP_(@Ahn#;y?wXe0^2r(ncϹфk&'.lÙdc3uwb[&n҈l7q)8ޫ\n~ơxb&sǫ;hԴ>>&gf<4GW桋{EB~0#B~T貁o.5U/_TSoNm>[wh Cg(5uWԢ'.C^BMX$xJl*7lf'~R5< 0V--9W,S,L򧠼}-ޝ^kqNig'PC0c%bԲDP=*[w҃.?ƛ.!cBA[97"je7 %XgC#9E J$| Q1iP(HV6\hfkSh%EG{>FwRg!ϟ[U9\HV6S4dpf€Cu06T!+<ࡁܛ&pf )P_au2?"s fϝ @$ևm *Oorlfd{e; 8FyĤw2u5-vA1)k-j-tTWjv pHy:>֖j݌W=-5Z\RFEVBpI 6TO!=]X o͑N cb">C|0)ow"Oq#dOy+T{o? �n@ }(`~s)K 5 5|KGSov7caM?ZCm$*Ӹ0! -1`s Z_^3Ik~fdfXJcCvH"]Ǿ�KXW9Q,/dom4$}E:~ zqLc<ѿN\+#ܣU"9.jY d%z?h4zM؎pgΠ5P+Y1 GcqZc!{vlEY�qƴ#E6=Klo}qE9>�KiķEM=G()n)~Up^)kyzЪ}<ӵƣبL pFT#BTN^l pOO87։x,;O|*gaξ2QDUq.*a|tgOHPJTG ~/)5fn`ɧYJ%M]"MnF|x##ED7z1~)$/]W0ϣB0Ͳpcqr1ʣu2: &::wTHYcĭR9Ք(6d3*16Ḛ̌e,!h<').]no&^)fÒۜ׺x+61`n2߫Iv+.I:y3MK Y=dʦ6xPVXR2;) 1Oo1`eQ-*e66d,7-.(q z w!bZ:gbBl}j"T )lI>lv"M<?Oѥ먁9u.[nF)vنϖFp1PлpvhV:ϧbaC<>xG aZR!cԆ]^GQz~�!M?H0fp)kqj&:oMxXWiyAwէ 9 ˼jJZ+(CP#0w)(ٙKwDq1ң2nM-yds@d,Mnh9&bԽTK4?l`]Q5t<th*' D<)D3Fd29sСw9/H/o.ә̠jq^5X|5JwaL>D�' of0 !қ1Y/Rl'^~`&hO[\#]WO4 ` }281S2瑡hƮG1:%q"#=`q&Cwq[RTt8/2E7GG)HKvwg'<(Dɗs-s>,L$YK’9F8I�dp+Ee/Hz, *T(^-0xYP=/Z4+ro! AY [Л2mv3 QmzBVm6 * | }?0&ۿ}B){HHI`), owzi|D8pu6#7]TmdVq)DHT,l_u'>Zf[dr?mHFd?2y3D?邕}bh\fOmxz}fMΘ+ˇ̸}Ke<Δ? ;1nuaA60vB`uoN:ikwrqF=n;OpYĖq19irZ*P=rW#5vgmh92-|aPkkZR6e @{F<'}=meCL8{n]/yOgY-=a] +q1d$9f[Dks}"S}\dm#Jdž%Jm&MH26E겷w'*وNmMn4g &5fTh@</HQhxoq.R`E {J5)p0kֵ nȵ Eܮ=#}jdZdEO:%(2l1*iS-zI|]+fA:mKp"cFB@9|aD6;~vU\?ģ<@Et7P0=ߨGCYR7^.eEӾp'v\v8L49HHƸ8~iC[2jzbp==*K뢧&I�$yatٝv{gY= =gH}f} 76H?\&ĶEE?`>lt&h k'9~#\e4BF0E>nPj'F9=`ҔNAW`nJb|e@/HtF[$-~] A~u<Q t t[`>ZHJyvu U H**gOD{)ZSVEsJx &F) Zˎʪ%{ujڰG~E&%7fqr!Vwqæ2O Y9߹FrUbFS#tT,a{IZ8ħzGQG0!#$kM)mU2+r0NqVv[Lg~[}TUK΃,x$bc{l6@,9{]DĈz8 !lY&t1ȡ#풰/vw ą �[CdO}MGeqq poMhGo(\,?NP, {)Yrۙeg9Od6鿄:8,HRMʯs.}` W[GLe=i8 ٲyFR^L~1r)o!#˙hIp:Cm)M\Lvr7{={Pthim/?*4 u#b ˵ر-73^ʟ̵۞e-iradɟ?- oɇS&O'ЭÆ)4g@l1EUmd6-8 7!i9_e+fo%2=&vwz`E#`!a1Bz*8kT`qXGS+xw,~'Hc=duf}:$rUq~oْ Ry:#^iWt>T>XxjxWN4Cl]G %wqxZ-ܙYF UW>H#tvqV_G {l(u>q1_ u6,Y_V9,~5ߜP'H'?Yi>>s.WUm>uRqjhǣ#IgG-W�7|}X\@4uag,KX-!ȣ+KZ)`qJٞ` 6-U{/"㟑U;b{vfǼw(]~QhR�vppJ-i+|g &0+.;q^ƅc| !sZyW``nh ePlϝET xs@ Yފ6X}1m;hpI'OR=qM6 `T V͊,F0wx)a`î#0/YV pti#&ڽ5ʍmx[b)i~@1/ !l~ ]7f,o3 [�uOu] R + {Fw =kXoДC DHM[7͑HK4w~㖸9މ55쵷^vҢǨWQ6[O`l' [K- GVW2}̓*lQܾ|sacdtUV=HYֆaEhQ:$RC(N,^1nahh ^M/>[ 0"u"<0ߏ=�pqm~,xY5]5׆jѫiƲ"ʟ h՝jtRQNj>.2oe�oڶw:[MOAdL,p;hW2wD<(Ɲkq%BM5Y5tu<ϡ_LȢ8_\Ow OMCy:%[y@oB̰6[lӅg֥b#L .7|_dlPOMV !rC.NZNy3NYnL&UVu?;= ω"h$O5\~Bl[rvEB'ھTRڥWXQ ݇&y'?΀6X4"�Ӄ3GoxW륶4F]\4NG& r->,q*g0xH;lUMoPMsṖM#j>ӡkSy7�C@<�?SM4,-cCг  y{iCRKGOdɀ||_ZiTBqo: t`To0|o+Z~|I n&<)ݏCy8D~2T> lcxXMN=~4/q1^ç菪Xn + [EO?zTkVLQQk?I ݙ|vLcY$z |J >HͲ ?5Ъhɔpn0W8v;j^N6ЪzL ]]z]0q:; \]?Vݣ׀c`D{/(zyG)U|"lͮf{G#ԋzt&Sž0Ě4q߂-G 3"IXY#nRv6 BU{dGEz,эzOHRcH̐~F@T43s堢 5` 6n.&5231Ro{/~m!cSA-ܼܔH6e,\z> y'}n^H~t-}B<v:޼G4c�Kӫ(n۱CK!GrfQF}/,z%=ոZy: -)ñ$7W]gE֣}6�3qVjeEA|yUZa#Y^ҡ͎uۍܶ홼_.o7Mb IDZRL#;q ԣI)"GVs/(S<*uOȌT_z vC|~ gI (Ps`g$03iu$4 !I]ZhE;<@|�z.M't ;#*ɘ.vg󚟍u8c)Cr0cˮuL8X.y<#̀Ѽh^t`~ԍc//L$O|N[ZCMޞҟw4Cx'.GcfMA^ԀIЅRS9Hϣ)?({v=,#IvaP Pjo NDqfҨDd4boD}dY%Сmqn⽓&5W- K$wwWF/Ȼ"n.GEtLT1kt#bwF¶_tj: wϞ,?^q$ bC/btE [Iϼt?uzbiMGCx6nڧ7\I#;N7;K5,>=.pok}pi]cCmyZ&>}'47 jLsCݙ' 0{dr_^x_@<:Z]|Ȓ˷1:j ג:,C)w?S~)|S=CKc$76DP_'-"R~@`' /$^h~ Y"=˻}պ<!MG(l�4)=4F|yG<8L|ڜ\O}j᮴wimvo() 9Oг]Oz.Ij>hp~f�5"UMN4y"*sG=^X#`*R6A^t&C p.ӮPކ9aƍAvId+wPTW�t,! 9}?@E/c4ejDeD"D}BGMINamK~hMg o<OOxJ34vG&7 (f-vM2{&h%[.a4(m  n6醮�b(bO `|rSjqfz2иk$�7:a͜0FhTh._ F!8"Gi>l}6{1A3yL`6 v0.}a$-7.|2xqj^=l�1!kՂ]u-}}WGxb uݬ,:RQEw9ۣƍ7z0ćŪ\:(X!K"Bn6kub y5ʀ4ibpSd7DDtg"d/u0a'Te^]&`zt}tO g'EoM!^-[/EQ1TZ'�mX']^^ڛ^V k`Le,#: !un}دP8tyu2nJ"3 6q(Pի/kge~Hhy)e賭5x^bﴰgP-ZPSD2\CI"L .T /\ 0mޚv/7Frr^s.1t;{wnZڕ qU0՗KXW)D'ڗUy_WO U9Q]Q_WOPy6ݤ),| %TO;B ? jLHPw L6-! R!ΟuQW|EUsϦ*a`*1;C3' %oOD۹+۾x9(0h.+.!z)*jrwJUӜ˜yz+M`CKh\E#/D: ê߫+,SJQcQ SUЛ[;ޢCr~.ZrQ;`|h?P߫|A'$㹓qBX<KW@ڴUĐeƶ�7UɑXI7dMvD*3ch1ۨS*4,yww)T/D>yfQ|o,3k>%$>#L($GhZ+#%<'@ǘKe0HŵVw5B؎u쌲_Jic# e�;VLVn0>+8AɗΝYi_าЇ^1>U;˩M5HA:L,oq@= *S Twl$X�yW|tz5,uihW~8�|} i%F{2au5A ( YkM<ukiQx|N{^ڿ)g ߱lwفӛ kP{9!hfhv6km* hK|U>ƿ[@U=HŏKhqogs͵%䷿Mݒ@wܟ�'gط *}/װNOӇg�h>>E$?D8ja ,Zzc ?0}KԒ_3XNOt�j:q@[P|N#/WKo{( %lQsYy M;0;{˲NFb\Љ\N #-w~-;�ӹ, Rgot%yup#!O?#:Ϳ4ڗ9'A"m7M'}'[,[BzQ+a1JBҪ.*20@o6}XWCVWBW�G[c' s̞tovrM<#NǸr%94(H-jď=[7Q[uKxf~4AL>Upڭjix\B]y?lgk E\ u}6]_3/t#W>^~HY -)[*AA~(\ J64BFyA Z^iU M ZWR;)ήeQ-,_݇.xŽW5ۭ!W~m>b}|T7SGFҖ0/\Vd_"W5m-W(W\7I[n>f}"/L p:U(\$Ϋ_dK,ģpѦNV5K0DX]4)_)|eL|4.pXXEq҃iU^Z62z]?sB5%^sl-]HRk)x_tj֣f/RUFaW6[W|PwyOOdЖb6 Uj(;+g?k{.wARp/v7&uc@LYC%B3ӽHblYCoPVY(AKFeyUE{*;Y'C|-YXB~j}b2QS sTJJY*7gwS}*0r81~@\{qGpEi0-*n \83 edϱV22`Rԡ !m9Zv&a!WAM߅1R[rO vD CP{Y@DgZ~CLa*\M!"H@uЯS@者kH<4qepju2MPݞKx|g~pob۸v#\L_ GL=^DЁdG  jθ}%0 Is'[õD*[[{swA亓@7|a.bʒ3xK>R,'vUAUKȚI\:%5!qEVI0՚d(gM#zV#q;YKPkiuCSCMRN['E䞔 I?`ÏdscU<: xs 5%\[;ku[%XYs7Ex뒱xA^Yϖ(fK)+(n.vu7z`^r֕ ߆W) 藲=oWvt[Kd[{!i ;`iA^/I zZ.E,:HT]Fee8:ڵ1phc+]߆U+rB7f7 J T4HWz ԕ?]ńѦ[!c`M0F8 m2>~O#X;e)-Zu 0]2?lDj=IzCl5ڃ`#ֱ;YH .à]"G(uKJ9+i4'Zuǚ"뫺UțA8]kZ?ܿndEġAW!QNLZTqq.CC6X0SK$^tK~ʵ-LVйu9O6>D;v2κ)3VUylZG1 c~"Fm4ak|nמ[2w%`4 \CDet/M*?{%:b[ n67!C]65C/M (н;:,q!L3:gMf.*F- 5�݈ %g�΁ٚ {a>2/O Lm)[@z;_u# 3*hՠ#hymʱ9iRHgd<kse v.wDf ^Q?Wq\^'3񁹤1] xm͞ӆQ&ȔB?5oa(.-N7t?~K?dC_ =5O~^-bӲii^p_!=?T;uc Is=2Ѽp:?ۻlKnrs]~6u[U;n6;w=RɣSSn$vĉ0[n(Sd6Kv۴k߉ o+Mzw[Jݟ ^`~TXeLֻU߅1 ?%L>|4}}TYV@,oN+TY2ס #Mq{9;r";ﴙ0A~.SvѨΟ417$}MJQ Lkt&J5-;(n`%jDv&LMEۂđnwS d]Y�ޖ3]g3o1k < *S+dFKpR;ੰ4X!"][%|GI-q/P$D|U&Z^y"\z"1}fi8f(%\KdW2Ix&/~1r�dl ?=\� ^ j+svH|OڏOF2m)?h瓆WFi~0ib_I)X"xbw2K579qw~(͕kFHKnk^bxc#O;N۽"ǴPِY}\'˷SΧi}MsedUO gY˂Ͽy!Yl,8وYkP RrSl rm8ոX9'DwOUi @ws^p ?B[p[x9([}(jǒ46g\y,tRTt0iW7FzQZq#)[Z/[7G mmf4EN..uǝ=KDڤ7~mӹi4g~۹8רe=A'ya5{0#Ơl^oWVQLiМ-\Fj іDNJaS@?ei/hm-Hg^~Xͩ$M�ΊF}?hlhbUaJߝbRxoŨ7`:V^5j6&3lp&h*t{*QY=gTrmZ3\rfA$ H'ak[c{cPX6SjW μq]I}e=,:RN v 9S <ei+216$'; '/%lSXw2򰐬?~ u?Ǧ%ԈE&TWd| .<H %K%ei.j*<4'H -b5Ԗ1]󒢖zbB=+1?^g alm\2e1Җߚe}5[&Q!K=;zPk=lv8ΐMfdE6\QWޣ:mSYkc.+;dŞld$O6M]Qׂ^y32AsQN0UT΍Y$B6RT,다v!v60xU]TeJBS+c\Q:㧲k+ӄ!Xu8k\WZ露wkb8q!5+z,ѽp%vBSVmث%[2<~;eu<j=פL\D ;|N7e@&S@ςmj;7g*ggi Њgj%- 1l`5U#OL4wكqCDT'0 \Kל} "^jc8vhzKM4'(q?4/+ 3JB3dq'nң'pB֑Ri18{͑Y[d4XыuNPbr2ZTTvt5> fCV#9o ߈T526^J!F7SH.R<#=Z5BPZN #Y)h1f]k+`i�g*>g]oĸZtRw@ r7EEaUau\qƬ Hct#X<2 *fF(t1@2QS9d طf@AB\ 33F (W&pLfEIJ\@j`Iֿ ZcCMJ3 :d�$;;ۋ\KͼJ|֌ӂm Opmr,-cQ1%^w. |hX].q2=:5Pmv*Ɣ6DaX'Ca*IQma*o%כ*|{T$M ŒFLbq2ZNHIo׎['ZmңBD/MgVB)yI]"%2Ϫ%U`N7WW̱9LWi5Ċ&ǵ=glZhNSqpOBEaFNJ*P!VF Z%0+dIacRIvFIJ ЪەKc1ʡ o5UŚMI3xǔ hGܟ)' JO (ktMDTV,XV|`;+KAʪ 0rb 6N Ak7DeLr l`b`ꨆ85h b N0.@X iDxdR\4QĀd7aff|qiJzn-Ⱦ xA`ڙ)gǬ62*~``! |ۆUx"0š]jyv+Eϓh. b)y4ʜya=Щ?)jд̒Tª⨺E\Vj=9@eSUWdS9vq`ԙ"WExTdp,my;cS 'I>E? ƆdpbhRm{d!lbсlj3(&P34^SMMY$X1uA85O&E22UT@ЂiFM:*Vv6{&3>+hl}gو xA8hN[Pjj@' ( N|XL Qjx6ꮖ%MfЂEV%;욡3PܖoeA""vlzፐy'`0"MJhUa(9hmhmЪ&-l{UX&2ls)t-fcܕ!&XXο@hzZ*J*䡨3tS֐>Դ^Bptb4zZ.3*hU[gM57-#rHNWn#hy:0Cp%KtϿegT4^*aפ|. Co}/R [L_8"ҥ|7pJ\'b nVGJp6tv{vvz᷈?>Xi. h \p.s }t':%$Ě2-y1yTfIQRWI7?0w~ẇ̇3U 8E ̇,%ㇿ%avtnDX9e ;Pc?Ň383b1e?>Gur>ǿ|i͆')|?p2:P`k/ *ب?`h'͘2./I6KrQtghy_GI/xB;O{i/ÞGb>Ofr?߻#dXm5F! 4aِu pч=n.dѽ@/2? /C &wz66T/L4/g,D\@hhle0v_3o#Mdz?d/2t[= nm]] @0=Ӎ\#=ѽ>C/0KMm.`zs[h�X7; VAkx/jՓМ9?[WNC'Z<j)F@̦̪9Tr}E,eQʣKTrp % .G PĪ2aQ^^8,B2tfĂZXGfIݺ?]"=SPwG�NCl#�mvo~\,>7x5ϸL#>\pgv.C3.|z3S};\l6VC4U>�lFXwwt.wϏ́A9H6I $ԃ`|lғa/%+.79],6mPI'}^}ق07PI{Syڸ&MH^W}ҳ$uHd>Ox6oHf"&.+E1ᜟ㭼y $w$/AN+I %>ӘHi)u82D ~)PmqvFsv hsJRX{e@Avyh�{zx^|*g`(XX;[cʏz멵 ^?k�U U 59pU-UlWKgn #d}!='a9N{e o*I~mn̐.duv6Q&VK�IΓ?)M,v^Vf_#&$tO #FUdI Ÿ# G3 "d+1(`%+9zqຐ&’DWT4rQ}'BFH+G&9Dz_n;g_^CdlPԅTRS:P~zxDJx$l  'r+l._%dlͭS{rN@#DSe $ B¬W~ʸlHjgq[CC SJ|a>ÒC4zl5?~4ȗ]vs]@"(fuM1= to\UFfBXF+$a6t+L'㠽C)`IuИ/0˧@_o9L >zTif(_nLo0# Sԇ5nLQwkr4I9Hgtg섯Re!L `{Z_$=C>,5ib,4iiw9I* zZhJC'/l'w *WP7~ Jj .iPDNKЭ讁Cm?]nj&JA[u%?\oV]`3P7o2?|SPmMmsq"an}w]M[nz [XD8ckvg7CY3msƗ!HoqUAY;yh--N[/ ;Bl6PHxCR–s4/r} Iuz[ swYnȂzj^ǬI]SV$'A(o&JsBEo)5H^3IKWf,:HrI6k4Z?$LRKvꃑ &-Q0 Z etw`M-pH)Ԑ952/?7<c[]i9g4'nC@G 'P$nUB1],nTM:YlY`jc=gꜶʤO!d̴ 91=3WkL*'ۉK2oѸ~>Ǫnl-NI�A*ris K Nۡ Ha4%*C+#2%zw #Sĸfp"%X&#[ݐPpU.ATH°:r1('FsN):dfR?%ս$,}, wD~h=q/ 9+%5cv`|ǩtʊ^cn@OV)~93Zi%.K3kڛ[䒳3z Iz:؉5hUg^qd+z<ɟ^de'4+z=I.2a ¦T!pLV@>ׄʆN.^+gy˄2 M1gn{Ւ .sx6׆g Uq}jsjȯL(=X8~|U"K3k 0}0j/M �>4wڐz/]BLz Xo$D`9l.u~[f-ܹ0x:Bp=*<XIR5X]plzXǃVUQڼ*a(ջdȆ.B/Nܕ8:&2HjM~u�uSv1S6A$0 G*m#j<bSǏ,x*CS6ɟBCJetxMf\0aaLeXzdA9�L=M&gC+p`+nǏcChB#*]Ƈ삮. QKVENK;I,<IB@֦>@z<Ҙ%S`gS*\. 52 a+;kUa)gRtY%X�τzu w8vR/ hOz;R;DFLÌK:? n>T>S8X\hcw\eapMlH[ESwTUh4q6'E*oM^hY)hx#{�<>Kl=A.z>j=c[tge%D̮Lzy% CH=VOꏌ L;RqP+_d~gNr-&Ң::ߔnfڋYSq|1XH='�g91͹[so[5!zM+i~}$ҽ&4qPltʔ~iS}?m=Zw14s^sFϟSST$US\; ldg/]\2V[�:[No>\PsՔ.6gEлjEj:|_Wy]b97ۗFx&E@fqI~(W?yo 3nkmݕU~rݣE�_`U1| G׸U5 t>T4ۥs? ST4~L僎 ƯDeuR)tͩ "ԩ&p7.LZqi=[TxxLJT;U&*mgɔ@s*ob蠬L O~ L;kE8ZD3iq7蜄ė HSw^_9qT8$ |XLJΪqOk9+،ϥ@E; Dfj'"D%>_ʢwx%'9*&ESX$q\GnD[~{'=ؤ>b)Oq9+Fo SĸقM?;2~#0 M@&|0$t2pK#l&9T J8M@ ;c)K'ԍYHHK/԰J ?%&R-P Wo%~rpbd�ND#U, Qڞ,YVg7DuT\v 2jf kğH(ц͙(>7<<ioɒm#n [""$Lӄ.*s r<OQ"VRddL.> ZIn${Eӕi&,"aHͱbr8%|g0Ic OsrDf ߟZtሪT'`m+ q;/�X"6[fbVCoJ8I\CȼϳS^DnKWt^PFmUnXf! m6&n-&2|-B)3ĸVnfX$g pMDm|F,$od!|Źh%R'&!i'dw~s\2J/?uD1 *S^8. 9: e)ӂ%gNa2=Z&\e1-S9%|.!$Qp#zƗ 1thvf}MK'.14N3G]3:LY:i{#Tsva39Ӆ2|r%ЖJnH*)&5,Mޝ6dj.xu#g_~ uRI^ %XgfBK)-ђ!` O9XdXd&ER:i;cRX[<Fx2iCR/anbA_%bLe@GS9"pLCi"r&;8DUy"vݤ\93ɗMM |gg ~b&Ȑ`cY9VE#* ea$<2)SHQ|EY-"݁̕8M]u6wԆ}SWn}rS  ,1p�M܉b9O^[tIy|:]ЂE,']Hy+#;le(kѐ^v*O4fx4wo$00LQ^^yֱL݅fl$jkk`}F@CGbt[�f={4TWqJ%Y646qƹ`$P ߨ 3ϴϟSܕ 0NnK8szUu$p="$]ֵYS2;QB=e _O[}OHPI@"+dLAq+XbjԀa҈ 6(+l1FtlLVu cVBu1i�}�]hSvhemTE� n<瘟.@� POL7/9٩8eOiE~`A=Y6 /¼yM~= -1X˒5 |CЅp6Vfdzkof{%ʮ)w>'6ߕ9$&-_n?F>k=>`#|UzeM_B*O))Dw3 pf mcnJ:%6k%)5qeJ\OYUWff+W@& uqcCŁnټC"caI,4yWE݆Q⛪SQ gSq< @хf .ZU3ڰ#�q}t#EΆg{UC g_SLFYbф,LL9Z(j0QI'Dj\Iv7�4z- uzfIq&2E#,H8IM&TrMBU*֝qɗѩ,+S%~C"<l$Er=pͼLD`aP2Elp}> "#vHg lL 3(ڤ2cu",F!>Cи$Dhv)l &0%+"Z{T(ַ ̂٠[+8XCAm#o ؜4њFF0>p 7TyXD[E !"= .,B]]6;}lnCoQ/B-yw|w-V鸅xϷLITًkM^ ý8!8ul#xwy-UtXx/B3.-q\t (קDNrlL햪/Y<8?_& YzLcXQ-bZhH|-[-*Rd00!T(6, &e*0O{NцvjÆ_L1W1XVai]chxٚp,D=k/NZFCFbb X;(U )6yZv]!eHs|i-FAy<67aRi4vB+.o9 ÿ 4Ddd 34M"قh1e"B9̙\:bLґ'$9Q2z qFn1רJ`)ȱ.,9-|_/.&1}o/a,8}EEq`l [،%v`]pLȶ,}%ל|h发EFc"XY~קQIbq"?^ ¹>ɤjz$Fw9q�k<'3"P}8cDݚXAU;?%DBꤶK;pL);="o|ĈTD+ЍoΖ->d.Ytr{re} ۸x058yRC.oy7x٥{=>5kO,+@, p׽UYB4 \QuDO 6pgڥHo2Z-X@{UG P ED5tz< rӧo�} ~ >?qz&Q4Z驗:Sۃ%sq-ƮhE4CnG誓`DL?S;kU9'Be曊!UAu˓%saLHWog!DV{UU,?vӗ^l NrSR{Pnj[X;O&/1 [JD $sLŮ܀3 "ytm:ɦ3 {Q i嘮lIz4=j, ;vAѸAmȞƪ0+[>ہ0Bѫ "{r:kLgkgYL=_t[tZTsǁ. cZHϳ1w�p ͖,NqYgDgd-$YL<eqd2x~p6HrMftdg{]'ʄ;frL,z -f[9p-nMk39alZKhX̳/FN,\YH.p6H~ j{iem Yf4S if4Ѣ hfEPj}\{ϤD35t=L,3SΣR0g 6 [a7>$ĉm\{Hn~%^q"s-QJ7 wgLH(9. [|6>m{4͎*jr2=5W{GO%toøiIKoHS?favSY gf+pS~ߣKSgc>/ w{[F܆�˹+p[:D>x1HgtSHw Q q` #pXx1 Cx�=xE>\�?b3w Q g8{O:F^} ^O`tNP>('.zDNlSͿh-'N[X̎azqEURӉa^ʞ)JSon $Ώ??ȰeS֜MYzS*}rrO^@/P.;^3yPq7 k!~$� *htF}^Ostg1.Ew7Y5k~>I r歾W4[> ܈cRعM@3)[=$.bP~VS ZtxL&m^zqczqU|3%arQcXʽ!Müq+앖Zyé8n>&aJd<ͬ7q|~120khERaq66Xk<#(1TŸrFcLksY<dY^RHzD3z3Xs9$t5@GhOzQMqG5!5>+oH538s\#:kB:l 5Jo]u Ѧ6{sr=bъG'(:o:pM 4=(~ /e|\.zAj?lZn2NKc2g+-8Y$J4'h|]qt_鴮cLf.</>Qqyn\һ"+O~C֒?~npR|ƍh̦ gyf5.NKݱmdGXڡ{I*eYwެ Еy_̟>[< =(> |m.+WێY~byݮA.ܝz;l[QIޝ~ ݤ!g "{CVAPUoe #dy$~9t?\f9_×&M^6Q^VZ㵨#] OS'窶[nϡYg)fg6c@77̒:>#Ls07|j-YWx4h"vN *X4CDYŔ7:2IQ!9e-t jBRYڰؒ+d՝!>8ig|�NP[ ݐ SC,ȁett4+LcAG&O$1k<O<˺a<K='_=O:>iDUN_!2p<T 'BՖ=\�b,t1DmQU|C]p6PM` b"t=�dNu%j8˻G-bY}/8G,8O=&9څ ] suF 2>#4>C#6>cC:>5wFCBXc|@ՊUdJNp:thqC983U}aBT�PfxA8ؘ"!>n%7]Yx9ؼPP/e 9s9B̈́mBt1ix!A/d<wR{ЗJK9`%Gֲb peLOT21:F3&N̥e:٠uu4)&uBeBK2㭚 h|:!)fG\,Nf4<0înVdyrf;XG lyN\3&Pfɡ?fel:B6rF7ǯHn?Jc|I\iƫje;3IOuSNuSZ[8ӧ4^sD2)G9.4os`oVr~o,O}n綹/oW~O&u}_wпyM~*~ UKUFeTy>|_z]籲nW{f2jOs4>%;WgvoMzٝ7va߯|튲cwOۗWŪY_;~EA?7sJG-gs<OsytWݥ.'z͏U;ۨ?/'9^֧+gI1i76ycQz-vhGR[^K(.e=F/O8]&soܦ~~+|ێɖy_ trM>}-zQ{mҸS֡z|R РF# ]Z_tАT_ͮ> ox0G[aw8Bt ɏ,܄uΩ,Ok oRV?y?VĿGܳ2 +NCjP=F/LtaQ9B n6r޷^sAʊ_q- )\&5f:$`h-RM[aDJGd_]/lq~%} [ ~/? M;s~a.|{#cX]Cڞ7n`wV)=pVԉVԣ.iʃ筳UY}^*JR'*o*cԶ [Sz xdnWO[ 2Ig$ӧIO`io\Ai |lcv0UB}4ny;r a/']i!%|ƚ˴!7Pv01Cpl *䓏H0.CW|caDrEOH~ڜw8"-='`#;kh<(l[$)@e 춶$&-ȥPྞ80d?c[[Xh%�^ @Qlp:[FN ҇LoI�߰8#1 ,A¬B zOp'}> �lc� bjЦy4>[i^N8/#)j3CdFgR5K K3|YKwm U$-|dU B4|P>іlY4&0D�t>g 631m Pǽރ\u>PޙMxM VCfF#5t$3l;|+6<֣rgFQӖ9~�fnstߟ'z>O;ˆFtc\cNWb ^5bEDZZk!Č+vŶ[(p:Ek>śme="c7W[j놮,Vn*fGv*|bFmPEKy1Ij:QV(jAT }aò0Xlo0lWH1c1Jؽ,P(0븣#қiSp)q&H5ȤE+4hD~KFӥWtp?%Twd}ʥp{#8WM#bq| H<+(Ij"xP_[B:}dg;Ӿ S-x�<k M_Jl};Sc#ꥺ^2vڛ"H#>+$"e#0:l}G=ɵ] ^df̫}G<T_6k˶NQ]f]zpfb%l{#2lYl{Acev/i1˷KDgRVhj3=!gJ+-f~D5\mIXhZp`+52zͲm!bi\mcIL4Va d_ S*4.m?Z}cQ XԒO)BhOlj|>H*5kkhlڀ\FvM<(Cl}*9c49Tl>{ccK&Im]DU1 X@kOըqV468R [ey7+K^|(VQ;r>dv.6 Qh4olDo y�^mܡ%eh\l3ijwP=ڦq7;𔸬aQW9y"r.rG.n+G-r[8宎Z奊1_ZYx%і&9ac9_>tr+*RⱑEUxRjʁ},e]1KHcr9F#OrrP 1{8: U&aA2=G6=|ҧGl lm_qICdp.g;=y'%%h?篏cqPw's/x<A6J;_x{>?Y_`4ʏ^N=bz8+~nL{ JqCyW\g9py9LVJ!yWM |@l{~|D߽f~-mM7ۭA쌑ؒ U)U>)|^M!pVsR=94GѣO Thr<j/վ?ϫd0][OuK8)hPYvQ͜د$n "Meh{4+7'F$YT �23 W!=uC&Dds<idW Ae{.P aw+,"$-ydr3J8 uun.ɮS `e&Ai\)$ˑFإ2B49RH uGoޙ)7D<S[7ro!Vfy,cO0#ەY KC$*ŭW #C6zh\]oDMi D`hwD>ѪV:|дVoҋhlf֧:'|80U%mskSd4: c<PL;Y* (ׄ}WLk9)Rjq }CY p PD7%NVyX,+!^^ %u3dYTKU-tܡB WxWr!ox߆~ C Pb^aV!Fad $XG bX-8l Hd#0E2+ ^Ն eޑ]] ;u2 g"kU \XXh yjaCIZdUEX0nAU*Sc*A:2ȩ䊜FS8/*Im=Q)EJr#ߙT9퟊Mtb#RKzxNrP>q'QLcU?j;nƫ~~oGb3Vj׬Ҽ߃9nr Fl wYGLIl]>d?/ffg]zZiy]>#M3m6F\Ȍs&A: iS[j?;B9ov3MgPh;~՚vT"G+2| iuGxR޵,/>]?,!bO35`o}|>W36Rsi^4ڼ8i f|:w%jVQ_;Y`33C9؟ RNGQȔc|#sR=�YLs7|)=|^vj+/p\VrE9Xz!g7LΐT`u$NlI"p�ԅ!a%.V՝!<I["{6.V !wd6P TJhZe%Jj)%VK �>$,�l(XdJ Q:>iDUa+|hw+DQ5=v4b-BZƈNT 1}QU|EK XPZ6j"id(Zs,@^{W iZʍZyDOC&j Vɮ?b+ 稪0 @>H> �C c HQi,yϛq15V%\n;p 9pe5 3&8ù ʟRT5!@:UbbNw4װ&cW]Wx_K$o(zmiM ).%/hFS wa-%/};jBGִ{bpSK32{%/h^4ZnTκhҤTZv\*뛝 xzգ@întҠ/3#٠/\_%U M4îvyZButךvv_<뜵(fB6u*mV<&51B$jƪyR5849xMo)rNLƞ_sVG|(|O|CӂΟӿ<n;Nj2zq^Si}Ӌڻ7!~+Ӎڻnu]KOwG)g/~zrWwcݞ/ͬ=9۟IӝڻX~/\3{>]|?o<v~sӪ6{WwǧYNj1geX]c=;OiCӵKNw]=;_M;ݫx5O h=<OK.%w|_ 3ڻnhO3]^֞7^~ Ϟ5ǡW==Uh<xw?jz|_A6ǧǵv7ǧ?==>]z}_{_bz}{Ws?z}#ڻM0'}~9]54_(>ڻz_iǧw_m3Ll}ݮWȸ{=MwiA쿛U rχ܇ܕޮS^zVs_ع>%/W[i׾_%]wesrg'ϡ3PgIIcjW>yVeyznD3|yNB ΍u9-zn޻Вl>.JE<Q, u(dzu*kyuK L I~ň7~r3o)O]f]]tRGMϒlpr [m Ne:CWM9[k 8(ҵ]:Q\o-َwi0:|\'\kϿOeQI2|ok:f=ކ`tZP`ޞYOFZ$v g?LpGkIucl+ˁ:'2 het~ϻ9Ew #N=*6W0X>8MV½4 BkA2OSdݫl:\b!^y{vAe6gN;`-)^�:mEUF_ Tkq�Wa\2b*=uJb]d4sd(SHZLA$N >� 9I7jOlb_չ? <d<< υѿ(͕dTۃ%o]ow`U tQ�jw[бPɼ!z-|fۑ>˞aɸ̐%@+,wi?3mAܴ+n_yϸ/ "A˖GfTw7c% d- 1U/ O-f;3S "pT/Z^g7tWr@mMm-݋H/<b�ms\f.ku#k_ LZJ(Z,UXcIjڷ,V6vGJASXQQ)2R(bj<ډ6PfGǬ`lrɠ`lj ëT a_@=:EhZE;VyMcW"fk&gM*iSJfL cUŐ�tsڬƞMd~Vc;~4g[I^u9[|{\5H \_NG,' Nntrq(h) ~i[7_5gN+q'l(c^UY?Bkl#ЂLjhchd7ck#wzVJ#HF'$F/UV.aߒ'3�*`|^CZr$.05\yS`!0A'1׋`XW(!|3F=)C+vawǃ ;0]EuZZSWBF|(SEw`I'vݘj1آx}fa44"rDn]#*n֌Xݳu!Ubv4-ޛ#]9y >RFaicÿgcp;‡a:I,/!$;gq/ ׌|qZ׎xP'I*(eSrQ ȧ/ðg% Rts%nKaI-ŭ،|Z؎xL*$χ&yEhV~1KɲYlJB0DF QYjX%.-&}mJa]#!+Ť/ISB0*\asR:Y8`rT#*^/:RrعiSq8rZȫNŢJ\ZN*rt["3)qi:lTDFQq.mtw S=V7'aF�iSiZPxp5« 5]8 R.R}bҕ}/ϨZ1{AƵx< /E^ڪ_.ک-pvK4[uy3fe>d~wΙɒށG;f]?;.d\9+څO_>҅+T%Z\>υ0GAWIT_2[$ J$J,oO#6սpm֒{3I|WxnW[ÃD @T`=CQUޛ/g>6'@x0*]6_tW--򜪵o.}G*-GY̨'tna9UIj{w_|@~?պawoumB DpsUᔇ3o|eO L8.n ϵI*eJ`>TVPp_=-.ޝʽMQ?FbaH+"CzU #Qe AV=>F tS\*UM ز!ɫ)4xs0h܆)$j'L=IJNh~G@ig 9ZizduwAQX(ڳ_4 v| nܰ\&`!rҷ /ğZQ>rC?C: jjnxB��$mL6Z%MXWE2- :}F%~DYC`߾2w#9_S1P|8b$!Dr9RdGn+%^FX:nHz:@apr! ޵PCY&ӆZ(m WT]JNVmW=ۑk 7xԵ-+$Y ZYm^0չb4W`}i ^d;tucذo1`=Hh3KN[b1y2c?_ň,V#Ԇc>货jrվvE Qj4N 0\6D y~G3AsFk ѐf\s0$keTfOT3I cs͈c(b!AR Dã #6#6RBBH/|rH.!vEE$:H-r2:+r  U<QSsWc9v9L(\v9Ks3]RDZOE3A$I ]RΓ<~v9-ٙw%{zi<d'dy~ >Lc[?r!e9dY*=cGw吟5cZdEY5tx'.qQ5nv}Zjq2Й>L.rW^<ӱZ;v?a1 ?XOdmo>v^[Cl53Dh:<ގdim+Hgڝ2 $m=p4̺zjSda͹%{o(>}GI8TЙPl�jwm^fc#iL/VOG6*t_R]a|G=-QM  -ק \3O`t?='ihOS^[J4q^i>:Wvj0Bչ# tzFkT 4ܟ r%͑-IAV`osUrTVY|* n+�aY r *tҶTSd!UhV! Z$5hD O4+U\[*+59sEUwX܅ ^�<VVByqPURxz7"`r&*լ*n~0+EV= S?PE[~>;Vl0n>6q.* A i|`Wg㏏UNEW=ފF΂ : e<Ω)Aht"<b#BX O2�XljjC.*Zr[.u*-3!ljҌ\dmX0)%1J ⌣CO(F6.0.,.e3rZQ(1vи``i0Q{{ dMYAE,F f ~(E.+8 x)iPK@r傔]Uh[QO4uE9Y"kQ1:IhDf<-# g nܰ,.$0G1(CvfևNU`y*pŜe!í]LEݵȌӖjn /CVa4QT!Ӗjy N x9u0(y*qrҥbK MG"ʑ\sRH]hs  cYZ3PL,~3:fA}H.Yݎ~Y.3{csEc=H9u,:Ht3֎|s )x#θ6' N F1K*p8N0Cml10*Շ/ B]Z@.$aу]<pX>|ج"}) BF0^.8N,KWػa64lB xZ0kWO*)[TdMYNX1 ByTlXS '\@ H/Ed*G5uRp%JCqc?aAe@z+܋*G/5f}б&=CMkFw#L,~3sM>uͻkKx,p3}hlg/C+Z9GWT83<rZ9c;GiLY|زd`r,:*AfdWt,x2u);V} hAl*N,tu$uaLj}e)j7J64߰�wwwxY=U7)UGJ.νiv:j2SpwN 73KVSWo[ʱsu5sV;�(=ueŚ53TFRc*iSJT֧ryTNtͯ6]o6ul:hq}׷GsiF*͏[ϴ_<}'phcBOX9%uk|ɨ &2M-?vϢND~қS6\' ЛLۚqڥ$1 ^/$792|-jp[;}o>ޯNvRVDS?U;@h<[E}>V@E)ϷJd*?YsC}%9~ ˳#jVѣ |/ĮwY!Ɨj<vu5 ^{HɋH``'&."rb'&/'<dɊśk;gFv¬3Fe՛,>IgY Q;$ϧyߝlw8 L˶Ia6oIUΦ!-.6td|L 1K4+#-O==^;#i*xn8 %}v7 O~_c4 0\Ltޣ/K\T_NϿj7M=)NUJ_kr~?zf[گM 7 <2L-r>B_r:(^C/{&œݜ.KڮMu3glj[g^f^'䔩6]{MwwK#7^')$.-P,=(rZe8WiXUt+:s~:mgœ}[,ryg%KޫX uZ WZu t۷ݝGk|IIqoe [Clx5^ γ>\ߕNǒtgC7^ӟ=dJ#gxEΏzzM.8ru鵫=}Z3Z @C;Ϳoƽ}ϔB]n5ۇ%n 54tx#Dqƾ8~8f^wz{slh)OoB̶#SkRT>=KY݄ui\0:p@*M]p8_녁(a1Lթ%ʤc6pmX}ms yӀ@GV8*(m 8 _녁7ۨn.Φʤcb�c+B�pi B:%Rrؕr<�W~(w`]x)AH@\6؟.Vt:ib åuD혁xJ`#m."j:3R*FLU1C؇br"p)TS#8#IrkF*abp+F*cbֈr8F'$XD: qcb"l2M;#Y/>]lڹ$O찑0gv̉PNd3Ծ]^UGdPKd]17@zAٹ;N:ˣbuQ4 nrP � ԃ8H>]aGd& W`@4W�rv|�uF٨NPV#@=G4 5کr֌R-0x18jh62ԍZ6: Blʖ'C-hڗӁe6*W =R2ˍ Bŭ\ Cl}fCW\ aC-QdDu]l<T%ˀLuhR"lpZGQ'Ó$bp%'-. E0MKHjF%'HJt/m(<b]hS f61) A֭Ffcf=O7ᗰh_ltNYa-gj}C`gE8ph񀳈*K^@|9U+3})B<Fnv׾c}X2;Ve4tdncHõf5>9GwVi4S Wpב?2=E�<_ U@&]#Z@492A9B9bORo߈ i5<g't/RѺ*1_ڣ})ἒVJCN&ISe,D_.̒_hOV6><^e <7IW/=M&2`O_6 _B}mSi{y0ϴqϯ-n 6b{9^']5]p/罄w%e%lJh4!O2<p9\τGARo|.u*>tX0Ew v[BZU`v>=Z>40 4wksȺx|.vܖOݙ+XV.l=,!.; 5j@hzt'-$SQ 8ySm^Y)$~x7by1.x;f). 5zey=zPէj[n@ {BOי܃t+Q=<(sbEn,VCnUXܓU*#K[h4U{E4 m#Ckg~.~4oտQ)n-m[=VF~ 4qS@4g*4APEPF!8 W?D xGkEiפפѥGڤg071bOW0*z[)E3Ab\uz?:/x:fJ*3 H$XE>"8K0la2NUޤHfFJՊ'pNviU0g )Rȯ{e,.ZϢ< F hR° {%_D&p9NN07@b9(\0yn  Eqf^~!;x]%K ny o( I t K�p^Ox'=2cOŀ+@2mr#>JK@ΜMN[x̀ H*fwL O֘XhijS%LTp<Rz@p ?"Et/ђま`p%T"] oQ a50_'p ݼ~8_ ٔ*w0Hq꘰8wS.ٗe/1}p#?v#gto_w Ļj}K ygbbDۧ9{ x7ܕŠؚ~ spM4=bm>'q sUl&ىӚ#oܑP � s{;O &l7b0g+m\6�(:tm;@+ڤx/#~/IL6p/tۑ,zmcpבL09 I`t29_qAL2:ZwU-c)nW z*p/vcۑ|cӿR88OKn#@8 Ka)`tJNzM|v0h`t' �5KܩRO8q@%g"[ "9ֿzOG%e>qFH%0o*zbE<o(hʼn�ѳVFDȈS'I%2}\�U^+Хהɫ(hI4;:[|q\,c2pnOŅ3|?+v>PxʼJrEg<;` fP_N<Ҧ>..(ccQ}7돚ӑj6$;2 ?u~u|!Xa_halO׮tO_HUؽ&|;!x?WM%j]}PZ~ǽU3&][CN٪Nqv 5dX7Xr  Oڐ?O))}gh�kvB+Sh&Mˡ?r&IC[7g,MѬNf~Z,ss]{֗9$m Vx Er. 0T/߈U'.qO1 aXoI]%Ϋ<[}�}T藺0lmbWڷtƻ FG2:2K۝Vxetٵ:и֨E~荪 zOk./p>^~_FI{s�VÚҝp0InD`UݶȆhwv]mEM}dd:o9�5Mh\1 тF[~D5滵p*X7ظ<&SFI{s�VŒ�lJv~`r:oуj#Vܯm Sk.l_*mK۝VxGS+qG�NFFU~j-닮T|Ş$:q {s8'O gU�rfgU�nCgU�scfgU�nGgU�tgCgU�n Y߅g|,=3Ϻc>gt_@쟁br4J׻=Ղ,n߄p?5!5nos!b2=r"EvŽK.4 X>:V%7u .@P[ڂ<v%r&xFFJ9* Knq[%r5R #ڽh"'CF{Q^Hļ+Ij-%"9!;jFU,, a{Q^ĽPZ_%b\*ճ_oV8iTKr&֌_OU'D@FnG: 6?H?qPF#n휶Z)ݏlopg{V4q "[G7y)TrxvWox4+rIrb(J_V]ծͅt˳sI&[#VXZڵjfu}όg4֣۟oy?Lf#u}^T=OM T+i_M" oSW"N\]pgBm֒O\|p {U+c0AUkIJLgR+Q~|G<Oi"Zwh}Ft2#o՜!p�2(ڥv4~.,e}q;B̢ۆL[)),| J^-b5uK.Mx-p[Cz޴=ȶx,]m} 'Z]{6W tM,5rE&!<Avd",S7!sDDVUp7-تG,/t6,B~&*i㞰aC>|DFH#В$.2KAzc$GH2R HgR(~5{_5~<-{vY$uYgyewWhKj|I)&ulU!#/ =9a'ʌ?Mą/<[:OM IIci|}ܪKW J8zNWzGwO?B_//9PωR⼧+>}[ԽJz㽴1AI{}<6MvŒi_th)>U@_㜜~RQ8znœ?�M~CQ9rOW3䓚۟|3VQ{G&}٩}Q)_I9 }$m�(?”47P[7aDn݃1jY=5HO@{ϻ8",rCY>UH'v1 xͨFT4Cʋ6ᮕR[q7Aۉ1j'"y 8ݴEnAUJy�D-Om vG""|5ʵq\&3nA@g'6{8X )$4wП59X\ˆTyqehh*x«D $"L{]qiD= -& nv0<pE7jS!ZdՓVL>LYdиj EH2vGʹnT1j)$ Sv?1 ț(܅? <DXښTI4q7Mfm]5W۔ukSv?4eeXT`&3ov'ςOiܶOeT8 s\SrI֦B*?س5NGMF̆Ty\~iM̫̆224M 6cC٥H?tuSKCo/=Գcge3q7=; cNI͑3՘+=C,__E]|J%kMc}s1ZnFU}4?}H{S9l~k|:PeR2Q0%TvkKU^wd>,bꡅ+'P[J6"CPU6;to#Ovv=y*UO't;zѷ㣺WEy*@$@YL;un9pIA+:8ҡIAh.m@gP;o㆕H.<Zڒ볗n܄vl~*p8Gv}PGmS. yS*|޶TRwN5UBwk>~L؉;4LY?1D9 f_ct{-wϒtNl'(kV}{t{Q@O3V-Zjf;矌~Af;"c}H]*po+>Kse{U/#_ȿl{{dhyi7u7C{N>c'(Ky QPq'i#.865]8X3䓚h+vYXPzRB3SS#{hGYJF=3Ҙ v R#q#ݣ$"EB$*(KJ\:r%B> V9(W' *eIʓʊF-k<>T"E1x M*Zk iT9r5Ȇȩ{|\2G>DU\\EW EvV7�zwDVD{5BZU5PI^ 'Ou <iu/o.Ln\\U.1V 4ܬnA&5w{5BZU5PrhPڴ05/o&^J7'យ17$\5Y p"+Gmc& nxKJ*xO RBe䩳yB|(1X)FΠ".DhY IEK_vT iT~`J{"C^.XH  UTUEV"Vz�Q"PXs#, SԒ.Jn[%|T�lVZD[d'% '3K$"�8g6)P #Ɵxa ImS3fai炽.Z/ "KL@F_>cҪv_ cϪG}D|],~ m8yy8}D^3M?Wlf| cChձ� t+NwC:h N|:�L+dσ`ɚ2alàO:ez3hgix?|2gMX*o@tc3rƌik7àf1.S? ;l&,ƅ8@q.,#-Ɠ9KxL/OZ0>A>Ӌ|!mubm?-ڥFDn̡* =A/&Gm=ޗmebc7^e n 57}7Hn>!s~A" X}#t i~|l/ׁ2Vp<oC՘2�RXV<TЁs}Ij7M_ӯeW<&_(ʭtEЁ ai6 F$TY�!ogD@>* |<tA�Z@b@ς=?8A,|اˌnz,b3_{z3j-^ǦcWVhtWdꜯ=-tޞ1ѓ{TdXqX L o{ܼo,τGl}i֠f> 7aJ}jnTvZլְ݇f>7aj}kn\vZ׬݇f> 7a}lndv[1٬݇feXJ}mVnl3v[eی݇f>7aY}nVnt3v[݌݇f>7aY}oVn|3v[困ߌ݇f>7aYf&EGf>K7a}qn눳n\Q݇f>7aqEϢYs9T)}>/G7| )maߟԧ)ZoQ1\™ $OUվAzGek|fG!^h`K>;{x֙L_+�ԕ+2}pΑHWg\5> .A98b +f޷X~fP+Lpk?LL�`8F;xDZSǺu\@[d }BUmM`-~pP[|BXudѪTrΗ �Nlwdǖ/y (JǼ]s;iWiTEq4P>"(hzO�H_@S)E6sS-Uy'S]Jĵ] sc3M.s=\dpdB3 1266/ ORJ0{#6bE<=wKc'3dpW]}ҩ`~ŭ'2ú1wUwXw}أ,iAao5"�xޖ2+IOGܔ@0)\~hgMrc I v2: A@@1 EA Fj">ju޳"M­%8j\0g�uP߄yniYu$!#u1ng+kͬq㶾.a] i9JWO`pyК9w醋V]R YZ]Y䡁.O]?6w b_ x~): N+D.2mfmaQ';}G E۝@}V#{1{X PtWq�ejw#* 92 qӽL�G蠓v  ԡ֌k&s])ZQ4E*Ъ EV)&E5 xdjT  ڳ-0�1񍿰4' 1~+mbKcSC}Ђ:R@!jgg㥽G<Hr$94}yBIE D ҘJfXЯ0`=LiQgM_aE`޽}Ec.DWgd�)6iąo�#fT@E(1Jq)fϜa.pC\MLJKЩ_NHrF* du.7Dtq22iq`v_�(Ez?ysRk/ĒkY lzzdu?;B#{z7NȐw!-6jkE\xGE(̃^ƞi$Ԍ?"U%Zi_*jtj"8}J0w*踾;�t |O(AW?,% p}f57WX?=kRIH)^K rTq`e /8?}@r%Dx?&^0 1  qc%\lb-} M uF=!|3BqONt#,%cWmԑqHZ>FfcYIw/(:o2?Ka˜(7ލX7RhSZcXW^DywrM R` ?!\/PHʖgxbSctt-ojXL2;Fz޾t ov~&f,Lz AE+ְ\JhVXA"}bVto`fplANV#տNvbyUZ)WG[�-F3TfzPA31 s cz͐!*qf^=2[$`ݍV #'�o  i1;+~I|Z$Xc7@Nx>Rէ$ZҌI"$ҼK[gWx"wK6h `[RK ˆ?ûmGBO8_2/dD9~t$ֱr"~ *DR.ƞ i< f"MDʒx fp~3ğp)ש=zqanI3C0>US1'[^cA JYHPO1 12tO:$,/K6G#-N/oH9 jƋNzȞz7b_/jf3Ի؅928|s DUA.E at޹.F1nXv4q7hKc6yf?ѩ)sVc;vY--DHwo\aeH!5Gp8BAk�Ms,_Q(N?@>kJΆ d^z\ƨT_pq+w&>H{! H2#8H?4Q ?4U7�j1)rXkˣQ`yAxGڮyBQ[Y-NTI(h I"QCYIlt(}xUu%RRJ #Q>�UdiCrGPs 8hCi۴K|Q6ڕ qnmuEi'nQ(ACMphbor>$TwkAͱpUk;ZէGl "MrEfNc<asf%KIt@ USFdI Z迹;D%e\§yE%rh{X3qI%ӥ&_ԥiC)ROz*Wh)oRȗF? glջC );;ӧ^i»v|=! K1[gjr@ )7 /cSbWe=GW:_S *�}mODi(xܭgW.q :|J,VKIQ$*/#5pEEv}k=5YK(TئxI'$cbP3`B'kZ&&.^Ç ɢ QA)SE:0hŀ ]1fgj2 ER-m}$|r.z=lߏ^T M"MNHo FQCV:;p8q/+^o^o^3ӋL[ƒ (W24!*E>J^8BTD_4+<>T'E\$uT*u'Ds16lq yc:qg?p+z(ZN#<W�>W-T݈XFf2K+L@A`$"}SӌH}*g[%$:".;l3N|2ô fRGQ_iLLp"-zKKyWw"HE<i<~Б2fsĉl0ҎŸF`?7" ֲ&`w((?89tzLXA0Hޔ'sճ  eHDFnmiV.*Y/ Y. f#V:Im蛩 o& <VN`(e 3 B|~U\aQ|;ivSp&mѿ;SĿXG)o%Mr6F0cQ4G*(4)F?wk#{pmrb2y^ٌ�$!Nw4>3.z( _ GOJF<>n%T1|3!-īDs+t. CBDjɅyޛB%Ntf]@rfC0پu4pacF?#F;bXz[ ψ,n4Vɡ))c@6KPi"@�[t$.b vǞ?JmPAiQvʔ;-)*3� 4D|iNY^ 8<2 Lm F)F@_F*$zq>df~ѪiVpNQƽ1My�q JkP,  cd&Rao3 Vi2/8>?\<+5ML(ʉI!+n杁A]0xm=Ú0Sr _࿺ѥ_`` h` l!‡G ʕ 1 Xǔ5 Y(k:"i AR1'`Pk7 )j!Zd0t|n.)K ~ aBK__S@4S}mD8Df L{}mAR)(CsDz`X%?I ƏHU"?:ǸGv0.y5#ʠ96?q`ADc2�3d4)'*yy@=L+2K+b1ut>-3L|nP=#Q?G8P]^>0e6L}cÄ s̚;ȱMZf`,3džZ`gDh2 HH&a|YGc4(nGPR>97.pSWǧ_00(ɱGO}(f\EyZb~OX ULu~Q`11o`1`6"ѴbP?0&f:AW iS@Exr/ZƼa|y^89vSTAED '/Tt?6m!cƦq y$3DEsya /1\ځ271 "SB4Za5?b)|2X8JD)`(r KTY H,*t ,lpPإM鳱#8[Dse UqS(]WQ9F,lR:l#*CJVi t_pݰg,T;IQ@ 1E19 CL僌| M8{\q!tg` +%n8O!0" N1rRu [3^V0g"j4)YYaBh"GUc 'CLpd,e0L- yQXy[ѓl<ck FXЬD'A\]ڌy1osVsn-jB9{$9_}HWH>Ǫ@ xq&Aq.h *Ryp>>)1VYa @H{B+i#r$S%;7_ᨒ| $p;6T@cmfƹ.!B,eɽ{q|dXyEi{>rUg3^cOa5!?gHY-^,NZdž62^A PX<^f,G<Ioan(`x8HۊHW{30l?\1j-?<<�Z&nF5)n- ;:T Bf5x@|y7dA&mCu'>ZoXGc8wjAWw+UX؟ ܄P�&cxSvyڹZp|ljE w~wY&opOas^/R8ۭ3&D2DҼ"c ]<O/@;hy `B '�!r_?9&cYʴBEVxN>FyCJ˲G/h1pbᑠġĩıX`Q#XxWPL*ZNϹNj@c9`úzE=w‘]]1qzq? X0nʖmNt)&cJ'&&*a4;Y$dK!^vPJKBY{q̮G<($C]J9`b%I- $8Н ;xuz޻=1w<>avƛػ^W,A,(C-)^sƪ*>8"<=!-W$${w1<`ϜHd@UŃ a.!9R;�S.T} IdHx2lꏄz=-$IԴ;+GUc$�^ګ ^ ;OQ4ȔDFi )q3ԱDh D凂}D'8Z0DNZr~oOx淭4f6\[1>'|Ŝ/I_y\Ɯ+<ߵ5?-[}϶AZw~2>jb9UxGqa*r#hٽ _R3~1+k13`{bH0i TA׾5Re6p ib^GsR/6/c@?0[>vFD$IC͟O t bڍ=!@bs 1"5 ;2,Q&C\xW�~z%z<d8i {1lt@zZN ,Cࠚi Z3"ᰑYb(fY%Ir_ \Ex~s-݆,$w0 2)OHZr0 3f%e^fdHW H2Ez؍Yddu{>7o&wWo:@s.Uկ!@rV$o:a^-g?L('ȷ68V6N(D%j a~$pՔ{5�s@80(|zg4iWЉzUpEykoy3;6gUG5 }7&p3z޼GLF0�s}.\G;˽Nson9F nTyt Q.8YLVd+#9Νg%p~ZGBp0|"?Rt<JIR))%+UpZVpLas3}pk38W iP"ߠ'?O<(I- NM)Ex;uz 2 Bƪ)37? nɋZDp0saCq0Oqr` *H#`vy]J$ĐJk"Nd14$WXKaj%W U5Y {f]Ao}Un �pv#ҥWjf  lg55kAA%fJ)>.--O"ߏWWW8**aLǪUڴ*rjeuCA|hU ^HQ1`md6RJ�Ҫ.r i�2o"ŅGB q ?Y+<!# N$XaеJd.Sx0X1iF٧I@"h9 վ>VCkm%fHdIq\#ys8.}r:08÷ e3%qg@0L@d>:B4c{{™=y c?2me*f |2+~luA<yP+E+BugNF_d)RѠe6<nju1VyS3Յj7H+ Ŧ'3|-vCE?mN {6_ V54%Md`:6> iNқZ8f4r/U iS1i X0&zO@ h P-Fi2s\̕y d .Nfg_*ye ÌZefLj JF;ɸ%13XYY^ A:}F_(gCqOZwWxՅO籕zʝ왱Eju3o*qSs0t86ʼuϞUfa xv0JJhw*ӓ;vc `5$_]�t,ځpra#*qddWO5Wob4$٧}T(S=t(-43Ɗ4#1/`_Ɓaq܉=!ĽAm0qlhl.D*>9~_.z=i8HGu?TlQ,4m,ݨ؟1{6?G~^$1(3ZvTn|gu:;Ny}`7Ɵ ^01p~s#UЍ"-DZRxN$F $کTt@-*\!\ lg �MCg8W:>ȘMW[ j>BB=�d싿B紈k_U :UoĽ`+p5L/6;@Paì ?;E̕7-ckG2"MS}hdTM^ol'D<e6ƙ#b<s&/11!.0bݘ\ &4`U c,ߢ+CCpk8JNH؈<*%dWE($Bjvj[MDo%W9]*PD(NSi@-O$scʫU|c+WH\I_;z֫WV_W8Re\¹Ec?%3&4D jmAT4QmxX |SFz; b:n;ԴxU YbEO0Y; DٌT6P9{`XM82Ak W*$ O2w%hYԻHU2f|a�:yM2 Jqj*$s6'2bIϴjNϮ-5ݲ+"eF  0 bP0nOZjCP5Wor肫*YwsюJ\V$;AyB̫VSO?<*U*\pՖ`kM6kPp?3;/\V%\DQt:5]΁U W3 #c.B'ڥ8bGEp($�#ǔ rIKN(czDݨqGۄ{A�}(ٖѢ32+5OuŸ *Hc@|W9t2<A l*22fA̫jLV6X~beU,UX-eUҶFTP_ׅKT͍5 .SSuUv4%O,x$ƺ ҀynF󻌕WabU>N bᄢ9ؘ]“aWVy\eUbB_ĮZ`ހJث\W J*qY8iu!šb,֦onJx) ŀoUr04{F�HlbBc�f D&Q� n˂gK B8?됎0F|eLh23p͡ɏh@V0UpUWݽXu'T[]]bQ|:sU{iaC1`{L- t7rD&ɼ<U+B"FBqwPYQٌ} 0?AuWvUAQdWpfya+/}c%;20e!g2ɕ#(ϣm4b_Y%/b/]d/ .Ê wĭ4Q7r"%:ou+\7IVIOrG2 V(. %jޝ4`p1ΌGJ(<qa.C?\GpLJ-Fr0{do^ƑMu#s/W8y)5Lu18Fq>gW܎'景xXɁ<[7 l?vGjy,eTcl'kUec=EӀ1}M/3f<K/47ē x{-x#+ ׬_{lj J/O<\x;#L'� 蓢3uл\M^K2^/{ǪW^bS\ *tAQ~׹&W3::@6eӕ翅o>xU;Xש.~P_;͇l;ٰO¡ν<x?d<`S.gu~ps⸡%ҡ DfzZk$ S튥Ŧu`i|< F04G]gSrfO0FA;޴ 䑗U瑑_߭z1{4JzZ%? rY?sr5\&폥:IzҰDh I(X& &$qMΪgpG=0]j;p8.0gz3Ꟗ, .<(k976/04wn@i.#>ItdHECҌؒr$kGWH=V|>ymU{%=jޓ.{Wl<8r?"ɐ�J2aK;\"KF\VrdT/&F Y : MOH7ϡK&gQ쾪a]pmK`rdKv !S4GCoI $qa3Ie%*B~ (>v]wǣ?(M@v[M?΅fMrqC bf8cQc™G \~B,3 P):u#kEF끣dx%蔊XU@Rn1 eJk2BO\X>wہ)p&Á^2Eݤp)޴ٱ+#I.;<kcHn8qAHNWRG k +/Y!Ya9hK r)yEax3�"F.Zh2 kv[ruWf/fԪE՜KHz"~k.N`yC3}pr +gڱVkũ!QdН32Ú3B&Kcn5IJB\1|!sh'\݆,.pn>X6EjbNP0uY}d9\LOyu܎�ӈy/~.V(DX͞7^+szjWl쇌f+Y .]u%ZxtEGA$Zm}tu@{UH+*W. L&8h7=M璯+jJj&:9s yyyeb~e(<{&W*o.)RY? FޘT>f"z斟lh#X3KAkOq }.<'R{$6"=#{'3<Rs"mI=:y4qt<u6c~{msA'zTaA{MiO`tZg9܀RZkf@K~§2pگߨmM�ԼPQ\5=�%.IZ [w)v4 4$6j斞ݧv ETsEA{ʖ8j Rop>˖b֑׬te ɕ7qFN[@sнUƖg>qٳй?A-uyv#Lli50=Kv>eŋCk@^ըKb&Q!EDf?1{gi5~ε$_(;Bl~Y=18 C#BX]6}\dap= =UzV̕sdn7\#.qC.3Q,)2ʻ1222wTr7MpϽ;S)DBHf]-{�^ WH!Xr8y9aٔ*꿋7uV".buza\P4ՙ95^:J4eyw*xPpR�j_J13"J'ؓ<&ccGJӮqʒD眦ck 8lsA<NK[Wو]忪{> �Д3Gp`1!fQ 24u;�fZWJ{n񦘪2kׅCKG~yV" ΫfT6+-<3SގËލNZX瞯իVtdO2c+,T#8G߬́ h)슧B YiK{ e$f;=Qrҡ6YtdJz,bܩ}r/[X(/~"iyQ17v%aGK=m%WgՈKq[_m 8kdQA??2>}9.Ԩܟqy =o\5LOBKIs2\[|ݓMol-\Ͳ]{3I'[q™,8 {8>i56l͍@wּˁ,W<s4};vXvC+ @rMlt璪AAqW:s6<#˽= qJvF � c|ʃG31GF oMvQ8bpv *ʾ^ lHN|C> "5Tu"GeD4b? 36#Ó'B j.՛je-bȳp&;XR[e[-!hܩrB/9M@箓4w�tk|OSUv=|N .zK16eA|i_b[}p/h7Tvɪb<ߚ39Y-[5S+9ngtvl XL.ETDfQ]~YڡS㔚5rEf/PvcܘZi'E N2 'Z7zES p:"(sr61{xyTa\Mn=|M+zvUy<b8(;+ow\ӢypS>�=i?FESxW9QƿfNH|^di>OԲuO;ĉ<CwzyhbnLstr-+= .^vlfm^f,QVYZE=).܈XYY H:nos`gORC`Ju9Jl 6&,)@P,$G%ɬ>D+ \ಱ\|!>"O:W,"D};TcJ3fROd=^<legsy <(rs9ѹ5?H0U8tJ4c}mA)7x`ZEO o1ONKEќ> $N/c6/( bpZqrȥBWl8Y")AMq{$~ ײ<AW+ 5~||:]Jj᫯~ `x)PH}vU}tQwvŦ[3Kl5ýw!$zYN&f%59BJ:4g úI9<tC>)2X7d~�("{(vŁ,>~- {-7WAE@pDKGJZrH]:Uz z`M'h(^Lwm9kmp?&5[\\k9nߵp˝ez!/�o/8vo6x&RA״^ō*NIN3BEů>SiiMDp\Rҿ4srtS9 !1_S}$+b*"sئē^olzb6/^CotX02;Tn,&yn ex�Qs[z*1f=$EciNYI 5N1JjSQBPasTB ^n3 `A"{/sb(J,+OtI]R5PVeEefMV c VYfa:LYRP$vzL.%+s!'(N^ÅӢnx'WCO):⹕ӏuWiYB]|s>WcIUcO>HI9F[A3Cz&CZP4ݪ8ݪv5ڻLX:o^Mpp<~(cXSq^7!5CWhP-qw53JLسgٞ )Lflȧ?PcFLkኙ3kyVьyR?k;uSU tfONmMY FM#THRf3Ċfnj)�6TݮedQ:s:17."I4WJS%x[)pXk2]#ˤN9g\'}3;.nt{D[yӡTiB/?hTNc*{ΔJ\G\GfHn,;6+/̲D S;C;>E`+bf?*e~ XVWu1mF{P+J$3/!:D[xWknk3W.K0f=}#\[gUY:9zlYvqK/ jakH^1 z2Sg3Q"X=N+ ݡ{\gs=(?pR]dQxE~ }E#צ6h?-zoi&^Ɗ|UQ\Z+Gp\Fx ±8h R↮:w|p;$ME�qB:yuoPha5~BI' NaqN@\`\H]2*psAz=sI7eA}wO]OjLo1)I{`h2q0'n_p:bE7FM$Ȓ͜F=k!ƝG-:)IR9O)4KgL1Үy +?eT1[@>O2fZ|mJ+0b+;"yvߧV+y3 tp`ȴrEh<XNHϕ;P4"egj"(KLF4|;'H #E] 8c-I/({* Z( 1M 3vqM˵+qE+il}bT3yE+u: Xb+ZZ%I'>T|ܩ;\)KX~\Z?]"h!ZIKcZl%Ds+5g)#z3пөa{ ҞU/ 2X{+pV:GǻS?(mI/4Wf^橷˔\C'q5Tj琉1 V}0UeDG]8^oBUhq*TLFe,7Ce8y0^R 81�^{rETEYް=FD%%׏,We2(]qQYVSAyv@uXn ^U$x&<#x<R:]ɇ"9&gqwAZ[z0GL# ]Ub x, 8FTQ?, ;$ucU+ܫ+VXe Ɇ¾b8 (I,tle>4L6<y:JqIv參 4ӟw  =eF7êGR]/*1e N`xY- >f*Rߧ&p]#7 /kԖ H̫zd#{“u7ԜS9eO7Q,*ů\]*Xf\/VDۖP[|^$%?bÛQ\jJT`.@_*kWFδEίm8Ν"J}v(@}I[τ:;>cJ�TUǥy (;VT O~4'}Մ00v{-)+~?M=p142O <ZGKpҶEDZn}SoG?I<Q[:n)\45)X3) lK#l$5"ɞccD0W<e crNl8z?J<#07,+'JCKqY"&*C7%Z ]<bxND`\o] +\>nlTQ3NT)dB0 FU̼JĎU䷥ +s#iLQJ#vb:jr*2O1#-S9Yi7n KUp5y8? .cO@8H4IzERv$YnR&ƙlpQs+$kΜOE2s&Q7"P 1tjH9p܋\GT~΀j~Gw<mRX-C tR7˕ 5bFZlL_QePLp Rr"p')OA6,抹Tۦ+, 4R2N8Ѕ*`ԝ1_ yF12ОSBg-NSa,EetVw25VJ)]Րf: &)_U&Ϥ|gG;@?/P^b޼5v >Q:-MrUؤizt!w#QF'<^O =[}Ha p؏bhbܥtLgxDPyx'8_{A_1{bNHጇ;.㊚~*oq;J<͢9m>9/1>w? 6 dÇ~%<8ћ/>@_2nz4qڛEo?*? ;d]'d4#5J$/櫈α.UK+2Kjuꪜrlvy4N+_?X2 D@P_ A/Ǹ1(ig ߪx2vwO,ڛ$ ?$kRRY'd}&nh!C /ڃNt[ڃFw!4EO3dv.$kକ#fPdk# ϟ ΐNT֢Z&u)�Vg+Yrh ^=bx+5OtzqM##TC)62DC"٫z>tw;;i9i"WE8H`/%3w5FY5/BkߣuRưXY0}cUK9]5;Z{E,yvT-EY>OLes]1k{!gtVIypٺ&El3w*2&c[9qyV2{ >k.{2C /bK?4v}TMκNMЭNxqH9A&75ۆ6cjVhLN858@/<ʐ\Ir<!0 [U=< `J S0 }aj2m5UW9F*2 O c_232%Z@̶ VfQdZlnRaNa;HyKוֹ6.6"p_<B t\p3ܽv iv:~ǔd%`c,[NAe Jף)59)ʮY T 5�dC5C'qyFrM\ ɢ}E^:n@'2K3}Z0Ba)1s8T2iY+G\cɇ7S}5 ?<DEIU\|aKWЯ6-8HZy yI``sEp'`bbyKة)Obsq| ݫ)`s'b^>Y n%hMiԱAiCX&ZkO2(�G z#0&w[d$Həֱ̞=D~"uᾉ }+d\TT"Jj 2mh있l606=x^;N7ٺoxv.\sn%3 g0kQ*8j&Q(*bmq+;<v1tyRKL?RΖ.g xt{|Ab]Po&H7{+1{G&l\\7mɶA)]&yدAY)nFi:tO *XPyԱ@\*^SbE/e%;h.Fx@ߩiӛEyo`nZCetXӲ(}SuFdbWHޠi#~e_6 : Y/A&oL.472)-Nݹ^8N):9uh8.Q.oKV,R >PɣDt, 4f?>X_]lQFz1j�Jb܊|�! sv(7™o^rČ*b'bߎ&�@%tы{\$4rp hc3׍xp>xc*22~_Y_EXϧtP+wf=9Z`0RAW =AGkmuo/ n?gCӮ`,[f#KZ}6Sd?8w=u烚U~ޮx0F<H)q{ wgMT*2p`bGQdwDN}jG̕CNwp>k/g0x8f[QVL 쐡. TiY3;](^a.D>k$rzKy5#5Lvd2mSF -86K\xIUtΙ&٨bbC|V|“x"/t(VA\ɞyTt_OQzͷyD{PS }1\LKZau"!< uz):;1 6jQo[WfHZ 34Lj&2fh4-8l$K 6&f9Й@<I*|&T- 34feK-f K)*k_kY\k.-؉r?0ƉfOR1\r UOcƊBaP  TPq 74wo*ܭK?DaLaJ;P%;Y6җX|[Vpw`CIyoV`z3%{X)w2NK̳'a!T0!AO6\VuJ4ߺs[^VBᜓQnaV|}813лz!?%:{!Dd[F%<MC̰~wu>7y&."? iihx3r: :əkm lf?KVfx\WNp:B&5՘KEZ3gOsOwy?TsO72y=MW񭜁q>rCs+zEau@4㜼S=w#c|Ǝ35bt}dOU4{?IU?F8ŒN~mO�XJ4n Te|_&+M%GeNct̯F`ֲl`5P^ZI8uFe7g<p_:w]I\0rLx!d=U=p^Ll` B_F =5Cqhg Pv@ `OxK0L5q|#_% 'ܠt(s6ijuTR4deI(2 )AMj GL6¦v!l/G ؇ M5N샃`SDy샄,}ƩP8dOjɆ|TjtSἨpʂxjʆ, 0G,%hi[@G0AV)kY"%fYr2G%񠾩E5~hzyrcfu0T"=0 .±_^}#r#X[|ioeXoTL5fE)gAg�5uaFـY:ooBlfg&^SCuk6tj`ρjukL�b5gukNЁjukeAT?@V76 f`"=gU5h5waik0| /%Q_ԊwnΤmf\m@R.[ bJˋ%( p+M<_KS\L{'v]B=nV'\.CF J:Nǝi4tZBmMͮӋTh8Nql4b2IMS ߚ],=MFAatZCI@4W{-Y0P86]+b=T7Ju%T4Ҫ#ݱjc9,Jxū0+77܆Q.1uI*"=#e=*ن8A2]*=YMrU *= VE֞2]+b=1z㡋-33y=6#Ξ4],"> lGlig:Y|&-K`1 K8el&!qtZd3 GԶ 4\|Z-K`J s-e(nIoF5# j[T83]/>Gl>N~*_Kơ( R6HLwAYbɋY;B y?ډt K': y?.r6ZwߎCm'Aw%[ۡ)ڀ m(1^G yh5pЌ#C<0~|`G<G1F;[Ϗ'S# S?i(St=U,_] Fۖ$2 rz7WÉmx@1l]csˆ:G_Be cF;BwQÒvy/㺇υ-p!#Շu ';5�,O>M>qL;r^K` Uv=Ӗ.&ǭ|z `ffb` E+5B>|eN#V$޷y v/뱔ɹQn`eGU]$7}Yo[~;K �lNM m6ڮ)G45'ass>h[BƠ>g8*\h/t_)WGENORyiw$/婓O;V~Zj<cǟ) ?(ROX%-9OZ9yq@vˌMZ+dzS¾'oxjG%݉Jf-?7̺y7'u\?mlB(ldc(}?*鋉yb H9}뵭t6^oXȲ{8l|IȝFYrOW&}8:fNg&҉E$�L\TLQ(*,3w|?R>_L3RtSpM\7GvX,2 cYNäϖ#xQ-&hIOfZd}"E]tzTBgq1ڄe;-_ 1:c|5.u[$#|23DڐUi"3~,4^b䕓2d(YG*S3,AT@z)x()k'5R1ɶ_%1(h8SdDbd] @%0 ^7s)0*Pٝ*KƯ㧌U<3ξܫxox+Ȝߝ`m7u|\!*5/|xv}w~6Hpoh)E YV':BR|Pу!(ptG,f=ٿS4Bn}!6KeXړZN1K^&uiXr~ j5I[uX4'w(ז+P-5c^9Ա34Vz\EO**0{(4][GKGZ|,?YMaL39`Mo[acqI ǀaa":9I$py7̬\M(տ*?&3tB5[<8=ug(h"}r ii@>mn2ȉBxq?2Ti蛏 M Y6-hvE'hȮ0\譍85VL9Cq[yQ7 y(YK&EYNV:�d4Vt[a,Eeی+[ABxDێۂ9I^H㇊0H+[p+s(dys)=YO43RuO_޻p|pfl]V`_{/_zf.{'nysV7X7xGQtrDSY1wq[$'ǿS[nm0. q9ۭGK__C9D77&6]UW&CX^b`_JƬ`I&t1$_kB^D^Ra&ڏl Hc]cJթ6\w9;/ Ցn$)bcy,Neѝ֌b\f M#(0\^cwn5 ܧ,X!֎~0cb vh÷E:qyIf{q9Ɵmhpd{c]hWRzA0Zc;vh旎-o>wO ,vqnI/ouTA[L/t <48N`iIhEm+GaDSaT]K*ar:34|'qi% vנHGq ɉp|[OFXiܷk/{25Z7~X08O}G,OpNß?M?>ӓKE~Y~28mhOW"9uNH_A6WMh Dy"qԾSYB6]-[3'/T䄊Ϋg)Y+$W$"3dU#mUvJ[LkcP< S ש<.sّ9{Dë`Q{|s6o7t|T:8JE>0{1YʍaؤhZmnfvgkIg:v]A [ AmKv0^cC^^+|TPzj*ٶכzmۇf._;nvKu-dKu-[Rs`&6CgEPܺ}|_2[3&[%pwfw`~eC"pa g>  =OIٿ t4>syf %+|/:g]贬<{2_7̓FxIJ_!}f q̑ʟ ?),"IGD=gy9t a!TyDi/FF,9t-v=diV;n]gu#2C9}鎉;rZ41Is<EbS{O'{c,:0+DL1fjī EΛ5??uyglaXFy 'OiCo8ۃ2HiWߓg)c`ɹUE-p,U8{O`v!=W=:<0QG)uF${Oއ B(jD}QĮ<:!|̠gq$M l{[|cеϻcWFs6g 6"=]tcP}4D[B919;:,=VA[uy I5UeY_2.yhTi~ ib>Bcek C<s_msh6{4}Sθ\RB>><NlQt^:sPD1:]P D̀kӁh8, ]rcxzynN"qԵԧO%y0 Zr]v@Q$ߎ[U ׻tƌ:AI C!GZI#K Sֆ: <IZ蜁D3ȼgx.&cJ3�iYݎhod|BFh Oڶ(Cۣ>?p=ctKB?j]BEu(NX=8ѯZZyG''tP{%sO'$6 )ʋ#�<넑M]pΰJ9 1j#:'tL[Me cZ&-w:4QJTԚ34!�DD4\:W"!kQM$M2(x*/fa>nЪs0hSF--sNoe~F%NM! 'PKGdc %AM%^'�C$6o8wF7D+tM.xSOt_ QZ-?\OMtY8e#4Cmm;:v:Q%nݢBhƍ(}o R;?J-2'paKFJwyI<qChzޢ4me e9IA)?Pq_9HV8<3$.}8tU]<` 3DԺ11;zHPrSaQiS#2hJjWbՎBOzsPs ?6.U'[%;Cmz2[Ί\?o?o ƎxR=)O/1ӡB(扭"D�+s8̎q4 T:{'[D}JV/MȰ̩ԑV Qg%?~1kߡi" lt tm%O&;19QBE܎Lk5?@1}9(j_|\ .E~"[bڠi63Ҵ%賉 9޲Sa}>3]UFLtYbf5G"l` n&%PGNRf zaklp977T223h@in.j{pJ}4F_ƹi;ɫ0i�qYCkUu0dkVZZ*,jp]&ikVf[uV!jD|@5f|ZMjA%60؛1t5U<E-Q;ӳ$h �t6ƑUeY.m}Qf&6܅r؋D_X"`tyL@]Sf" cLM6qlld�y eT\k8�1I*6{cYɋSC8sCfم3W�1%0#tTM=`Έ7v:acM6'r Af<ogu3ϟ q &f:1@7^&s(V2 d 3 b鐇Hvknb﬍}'N9ɁXyS{f{.tZᚳ:OR$dMGqR=&=[3bCA)4`-Ƶfݝc/){BdZI+p;)i92K/ 4N(ՙu&eE;2f0gVOP/mfatŽG0D/ށ̹DhLώU՚&`hg }3uv.yů1į}EM{'!(Ê%B?MV떟+OT8YϱzA#t4`||# l4yb.=>-ޟ ?- xؕIkJ Nx cxTF)?cLz#ʏĖ_=trJD7]=P6vup憱ׅtJAJ86j1th4>lýag ;v@!#ɫk4&"-G1gSwU$Ss1 &)sl;P+Y~u$o7bj\=8z6O ?3PR۸-C 3DFҵi LYBvS93n$6Fm?.OQzz 9b:cmn[C\B]2LoъΪK(ފE ڌN5ދ/F0!CP 5R0?RV"S;!2mkh;;/lezh⎤O4AOYT[#]2˛#:mCw֥Z\TϾSFn*RE TLPS!0@:*p[GY+Mv%hL-*2)aBզ9|fۛ=~Ypߕ7Fl3J!އrV:1�č,a[ȘsLYmi>4o>cd<uYCyfqٕ5>R̭,Ua`lV#dL.j{poe_Ox7TB\PoJcP5f_?3r&ܻsNʵ.F{iQMlHwߤvZdγ2&M '?lra+G7E@%q5 |O ޑ!Ja,y!<zF)vaS?eȾ: VfrrC)Kjux}wG>!=Da1U0:ySł璈+`cD͕UU#ōaؼeT* Ι91Q.H[i !]ŧNvi͹1]S1H2s^gt2^.~S�~'/O!$ s�`W'2WK,`JjnG?gl<F #gr-P`YY5]A"_k~ɸf l&!,N,ęN-( E2q&XmT䈩Pk+-bBe:Ԣ]mN {>-koFܗB`$]֓Lu<Ng1j{{]<Nh <&HBSKE?o|Sඅ.712pz0O"COfٶ-n. TkyROUYVtm)Z383}*Sx ~Am7,5EkL&ъx]EbM_:JzyۧHa߯';[7IX5YcՈJ' k莓G#ya/ݘ+޹f]# .܏(]a~.χ{k$J ]7/ѼF݅;Wuz: 6LBIWUc\I5屨+!ȌEfC!"C~݄.栺9ƍe�W,>έJfSVt\ e<6Q, rJ}jP{1㚯j/j*v\F^]ԏ̞0n3O7<я-סI1t߻B|E c ޘק ꮜ6;ǖj֍9Z%y ų0j[ftl _iU~F*UJ fM?.T*nM_`CaUPas{cM:0 53ts^ ;"NP'I9`vό\ަ 9e�d[;pL7!|e2NB$1Bgn=r} &CbU*PuRäGMPFc7{#1,:4b O~ 'H^c1:J|&2'eCCtCU<d<d\V6RIu|Lm7']8~L' sNl>#H(0N:Kx@DQ6 `@ӑwf+dr ?0~C#mRY {xG'S+hȹ$JVቶ NqDMUδ1"pC@hV*hc#l[ C+|vcII*DS-?F+e|&FߎȯMGj[Pf%gKf84cYGlv5!zTAHOq6V5m 0[5v+Fq>/R+v%i0#pq^jB./f9cM Ux=: ["MRj_iyF�#ھ>D"[T/Cr[*3.>JtF5N{z1UywԁstΣ{_\և5&޲Oϣ5t"E/QO,)u,R,)A%`t- RuPRXس +ԗ%-G[ ։<A4y.;.N}0QRSeOZu� P55ѱevjF:]ͫ'"v~,Qdm!4n^iY#`.eeK33Lt }2ފ|+jn9yV?#* LMe*9ˇ[VeVSZO8K1}E#bhr~dcd?Zh ׍H[#|HQ;W~li [G=!4m13R"i[m U{cRhBo) 4H49BiK1qJ.,:.48c5$F]ԥ)af  F#]w aLҒg5ZeW=Yt(i=v^ܵ}y/Mv4yy _o!UͨݓJצDrZ=Cn'5Txha {\̸a]Hc~f9yF[HzFE&D)2wHk+/[ ĈrHPa2V7txݟ@m%ԫ4VxAy5VHh4es?]w~.Jb6C,|mF^"ZFE,3uPjތ)at|m,\fu`R F MڀЃY n&E.d ˥߅�wiE .7G]冩thwO6pt%n&睧75]9$r#Ac-6q CJ[1j\5! s73/d2_q/|H^*W~Vf"A_\EJ�hZ0 hc/8v0]FЅԷi+tit4KfwXbғR, yY^=S;)#(3G|Cu. dqտڷ7f6P X.HEuB%>"HR�I< `96΃B9T@1V,bhRRxà'fn\?wl6h`ֹ .9'+!*!!0E �nѕ~ gČNZ8/#&ʊ8]9G {vqF"pmj!,\yhs< PtP/I p> [Ey0CR5%C|[c{$k|y](hb+v YcG 'tE!*Wb,7jǏ%(2j}yu矿M Ê~bJ`U59OEsFyiQhmhHTV5NIʏg[6&3!i2gӭaZ\2Q9Z-ϨT-E6~8c6"@fX,Z96U%zrX(B%&ÃXl&<.Q'ǽv܅39>!/fKO~zd؛1K` j{EߵgܞN9;BʬSA_B�o !y@OXn q9t=h簳s>Dl6 ágkЯy!�qL`;} K8,~?z*+><-o!<F͜nmm/Cö?V?Ї׻xxw_R05.ݿo~67{>w{'*:+o6s3=^oل,/ʵZXho0d [{n۽XĖQ<47827+~{ϔOjza|0wxh>k _lI/\8=.=׆󿐉n?̐c7h@ߟ`kk dvѰnu'VYzo{Pւe y>|~/ O]zpoP<O_\3U߇ŇݼBhrծß탧փm߁μvn7 w|azz{aCCer/ 6Lb!*H,c{{զʅ?±zv w#j WHzsRS V beNO"r wz ^f]L\jFG]6h5~_A4#x}!{cCx@o1n0^2~r Lw/T.o. Ut wno%΅1{x\,GP7$2F=n &]|[LBBhóo;z,s`3A+ -XlϾ>nŽ'9!dVy_ yv> o7r./� u|IKK\fvvoB[钒/WՈ!sY!_g=pKˮ hU> wHX< DF\;jfx{ZG #B{p{ 2ŕ}}H1 e=>V+wS_^F;3t<ٷ=ͿĜ[~^'ݼWkxOere= Vv<o[ 8_~7k5tn9{vZ/ȿ7UZ7: =Xu>W`Y{i۷#Ja+rW}quFH鼽x}81Kl6Z} g }H?|oVu~ int^9/;oEg]1 =f?ŀ7R|}/>`\,ao,/3f0:X{'/ ? 7Cߡ }g83,9^{k;;s\?//S_C~h=VEKo} Dݽ1R<h7^(W}3ҙc7aBZ$AWjWazXȏ89s⃺|2׽HM~li)uo3!x0!2a P_l8Of4@竵 Yb /87;אyn_ aL9}F7oY#+A9�no`38 6KX|[*l/X}3f.$-]54˿iԖKΙ 7 fy վ(xvS 8 `+b.%_u%zet!t8, ="L>,^;plE[/Iw;Ypz`8tSYx}0[ˏtuX``k@{:o`j9,~ VVwOyąXasBcBV]y?PYx_6,}K~Ir=&Z{0XnZrcudCcwp>`n7t3KBZW>3W\m t>[ u!aY`"1kl`_p+z'΀]֐:YXi&N<|vgoZHEz;ooXmCyxg g%CnXska3sCrawHm{7rOhhIܿL6}J!ӘowR׿w'Ç?ʅUVU\@^1L|5mZ=<i;x oˢw wW,w8<rU{waN[gZ EsY;lp[$?.?yE,].X=$ S`áFýͲ!`[㼆3sw|N~yT&k8}= ??+an k'﹆mx^z!x_'6sXXdar5~\mBedž9O}q ޣ 7Oc/5[;[3G'}9mnZI}w4gorӡzWPNNGwv7}. e}|[H`:|yݯ<Oj3ک �~/n17,n5S+l/~ncmvz&CBZxe5 mߓy[V#uz+8YCu\_rMV{v9$}|s{U֫+z[^/և<]da[oil+?zUn쿨;0M#e<)74e4'gs1L{ß3y"G+6ADr9@$ :5ӌ~yC)Lay:_VAf^7Wb>NU@d tc:s蠸na֏`k#U'BfN2D]VcE,Z<EQ-`RޘFn]!)OV_MFHˀc2 ţI0RK3C[2Y<j&ZsPy.fq8p_xc'S;zA>J:MFS"_ &xyg#otOZkk*OmKheDTx+8d<L NVuau&uf9A]z~};%mjԚs^fr$u~Eݕ.:tbH<ttH\;jm&i91?ցQ&̎�]ղ֟ˉ3/y#ζ&,dYBx̿%"ǜ~8Y!z4LDK3(zO?y9㧎ΘD&MX* Hv+hHhp2sr 2]<.ܔ1�ki#dE3S^V>OC4ׅ+J]*Ei{BmU"kv7.Z0�awyqA- r%ާ4jKHU֖XHHl̈́3XUQ!h Wr4kP!ՆuXQCF}qlru~gYC;;r<ETa ".USFK,(턃&ҫy̭( @ŜhcS'd,Th3U)@)!T*r<^稄S5e )bcʼ1DJ1ӬqyVbryggEfx/Uj/Uw|U/U?q=|u. V]ʱEՕQj޲}_boGu/ٍOO5֖ow^[GoW.(uު/Z8og]c8ʹ~Knz__Q~_[l$3oUKszYz/mJW$H$ 9֋kI+I\?v'mAHR*0Z}+%@ց*-G~k>c)WpxNϫ268e\ZYQ'.۟zʣ1 _B>./QY|/{O3foc¨@f׿w~Y3w2Wkzͷ+42J7;q _z{ۇ+ߊ;٨䲺uoS kח^=供i,U3 }F :f>W?oLܽYw\h +لǨ&e\^wTluFjRYtx(j=_ iUinGlooE?QiʻQ iQO/i#rc9]<=}ZW u\ߑx2hc0d,' cWThl\a>yX.vR//L27C ڻ&vlo0kj?(ϤۤߎWI?L5;(ԑR@FRJm >HqLqA=i IfȘȘ,!9#O:is9jH5.Y7FBAI�1: ZN"d|\d9'ڵ>v΁u5۩Ķ o&#s HMn?%:P.ymCE LSE aeTqoQdPMTz\A Y#eF>5i.sS'*B)La?3go\z^ʶGzT^Z3�27PPI`*yR:&8nPO![K5IFo1@' c<μ^W{B_KH1k%["q &T&"TܖM;Ei5&I38\RRR(xGlI.[50ZI |Vj@8 5ŧ ږld'!AΡȇm xYcԲ I%s("w%V$GNE%!#~'.ܵH`Bk^ISLKтBd1' סA6)9vyg$ŬkY5 I$lkb~L) mKBpXSI>z=CM&ř'*BX\y,S坱0:;40e3HK\6̲q ,*Id[gk >o5kʔ*}o$ZH|ݹ0ͽ10Aʥ:1زs5lwYQGY鯗v~0kHleBXTԲÔųlIxIwƝxp6'PE8ܚ$(V=9ȍS>JV3 4dko͘$2,t-IQK6sJf2JaA3PH]pRYw<+,8{p7 8QH$d>31:$R'HHkyua\:FI/k|o%Àe"RL/*VAIk& #7O>W쎄gt᧣5RwyF' Vxƶӳ5- dا>?e{16^%XyOzޗ'ODeDYtS\.鈉۴sGyoQX@܊$ 4ތ>rL&H`ٟ:(Dsy2V SH\s&PӦuSd496']iݙ"f<;jq9( &c3rMKYo8fȲȪU'%rN|dRl2LvSihxT O4s:'8M&sD̐8\ONJTe5Zhٶ(d#C'I$Ϧ&NX&hڛLrڥg<~S \_"_Nyd:: 8^:ZL꯲8oNe<֛hm$RZ:[O}fKQDҗ2ANdlwE=&n!d)KӈITGz; g(�B|_Br^!:'ʡNl={lb ,dӟx]V*0.ϕz>}NfgD:R>_)uS^e�f*G6ӣgLO9lm ~s�j\!@Zb,Q=FٔL7Q1娀/x V>nԫg-RXd.6XgX7=lJ *Ynd˔> ٘!V彜.Y@!Ĕp i- [($@g0n!`x7 Kkh? iY] .$ 5nY̐b'#u,F e4$#2akMHDjf7˄52N1+9F߄5?KȵS=jvR][X?O�rMׄ5: /•R7Ԫ&p@;e56ؗ7Wț&J>l zYY*Ocs(/b¿ϗgfΖ;BYUY'YYi꜉>vfȮh -|TGwXZLDe:fgް-(4SWA\[ o5yذOS{-f{mg"{*IؚIyp1P!yNouou,Bq'εLjjN䐜Q}5XM{ײyH74je$IL ),a?$Pn cf# T +=d#]D0s.amLX5Qd?䛺j5@ĉ=ialZ=Ķ/28vHKs(NxWbl}b-GţAg?'56&72s^_\e_9̨P37l}o' &nu ss4k{n;Eve bnzN1^l|c2ǘ92 ˍ4$웓3Ia(f^m)O`C4"Xr &Ҝ$ªfY6qznZ:)6i4kh rjHb]TB5L$DXK>N ƩPBJ4TjBkLJDU0EBEqW^ Cɶ ٕGjF�IQ#awz%T 󐎃0$^ܢb8! ]h7@"$ _@#%[aCC @ j YJ{h^f_/Pdt ++7 4!Gs3GU II$. +ЅL:pDl/.2SB' Zp"{DuP:6@%9ۤva),:d�@I B9q 73$btx5Zwbr4ǰ7*>խl\ycp8oʛN,0&γ\o;ϛf%?џ{ Kc4!?yOi@3#jŚa fM4SDȉT Ɓdd2ޡWC!m`6X ;zÓujVpSYsVnVUܔ@xAaGN ?$ࢵVTYVXqRPJ3 g|g`uf&* uSM*{}c@4K_xV1E2tw ^'A^ ԗ_<Gyxva7 ў;XvEGx3e$QOAlD P>>Dټ9> $s"[[aM H> YwO~X*x|ip~T݈P7΢@t6?)o"ffH28/ǥ3pꇘGnq) JCV(<ɟ-WlԷVD$QJ۲ DL,+ Ml&Σ _i&Hl:T-h&˴DBfQ+LYdg^gZAnSR 2tYH!-l͖ pK'?$'PE]O)d ֤^$J@7(PWZIҲ<53Js}9I^ر9bˌÿ"ǿcBzo_ڦ7?aWf,~EP5{2h(o*v.:B0b{}ذ\˱yO/kŽÓ@Eu ?ER3Y[R$[sD}-8A.8)!w8>ȯ8|,νhKJeOϧd4FrRh# ͠KFSY*l/:!Z{mDi^:Nf~6Aw03RҐ&,ewXDЏ/xO&m*ozQX\žA LSxfu'jPeg &t}ևzE-S2&T�Dık{TT(40,th9AqAex(vTv)5fP Fhks }Im2b'G>vxq^OB "P̊JB%(E_\⣫L_;9R}T%S`ωRNv4n!I&괖ִRbYuye ?? tb3#ėmv!nO9O֖NJ) pHڇ>껴;%OTO]e:PBPzt.q/[$dВzv\߈}v<0r3s>^[߃:gϟQFUmM|J aL$*qVxz"e>ȋ*q3T_Чl&e ↏}X$}%R6{-0)4mmžR"X(_V%N$~zp]ӟwj˅��ZGSL@AL16+Ǘޘ:ƾ)1>X�}2 %zT,XWa|N]:->}RI _m#I2o{-,5T|Xހ&4(O}$/e1+a>^2;ȧd\1 fgfFap/.zKLF]AۥyU;ѽ:䩖Y0q \m0) "-)av;eٖ<@[ٮxչTk-P3񔩋23`N*7C,M&%ie +G%ŏ;WXEo{n<Db~Hɓ\d-,9Al e-1Օ(?Hb6ˤ}%y[%R⮪wd9{-'X3Q@QΦr@g1B=wyeN;EBio.d1n"+KSbE-q\**oS񋁵͛ՂHOø#kZk JON:z-Vh]F LWiS8<&O&DIzK-�h4g^Sd⨵P'lp/pPpI;8Jqu QFc;Ӭ�ASxk yQHZGv3k7;CL+Y GF(w3\~-Y^5Qin% J+V:*bl5tpl7̲<t-7Ctz+eK7brD)"[9jgcq0#t �,TtH?ve>q*U1ZwHӐewyzH0?Rid m㙦qY֡ Ci8K6}kX} YIK}kSğXCZ\{.nhN4REZ헢t8?> i 8a(1*IHu;=p;qQMC4kMTU)=1v}UB( a7Dd YrLg g%scBƾ.ߛ6x*lF/i%5,I#-Qa`h+a,,c|shw;/_\2Vu *0F&)#Zrp.3[Y~JH:)c#/~8I2NS,Ħ Z|Y%=Cge29 Q6n3yTMv7.-S(_=Pş:b.KO (lÆ#*mvo3ؤRdjkt<؃j C56 QTz>({h$Jh!vlMje/4tTq>UV.<+8[:k8:[몆$;)#pBgBɮy7TvZq]4PJ4yQ e4b8:y?)=vEB4O9)kFfZw<$J{Dfh%JeV&? my3͛'^}Fb!z&pTM4!6I>pB_2J rqN˥s`-#~pi�3 2YRcievҿ,\{;+6 aAYieCDrK zLo:8_TRd/մ,*ku<hH6luV<E>NFT[`oa~X J @7$Ca(nָ,>K+RWZPe |6-Dԫ(l% |OTg Cc(l*F* @ Y+'ߛϿ6>7IlL"؛8bR1f=Cw/ޢtr&7Qa #)])R<uOg^Rm+zvgMVyfij7ԚfŚgI"s f!R_T2=s,ԍVi;B()Rd@|ȫS,iVؚy8j"�|pL]*dZgI@@f=ZZDSA98 >ZrF!b"xBOixDjNB¢Nk,`ymj@<tfozzuz0B7x2K3Lk:nE΄ByB{(<V]EYhuObɂN̍n"FULlR~f0Y}G`y;>?l믲­aս=EIɌv 8L7iMAŀgJvlyJp1kRaOIx"oO}ٷ :gq/8<ũ,Rm>AZK zkʤc~\ĵ# $!L,K3_H=h2 g2ߵ(.vC 3'̮R)GqlMl&\q&B_܋0Yc67stOe&`=3%S dcƳƎfٱ8+Ad? iF;c"%Yצ:oJ Zo3O'3RLHG٧ Lğ82mZ!Gf2l0}R/7gP1ԙd崨xuLF$*]3msYk62k1ۄkͅpCkc'Zlzg!b;k1+[>d"~&96vK9,GK'I#$YT=KoKBIahif|wؗ壹5!VHDz&aF8zO`QH6&߮1~=#,jZvWT)CØPA\zߗdP0&c{2g*>iR앐0@Pi؉^B3[ *Z[+�-eX̔\F]~[s " {gEtڳYGY5}06W=!m2͐TZ 8RvX nPn L~Zʏ2*ڱQƱ3B3r*}�s-p/e /7w϶@Gu>"ϯܑ?T_Oá!: #L s?9zz~jD(K\"_l&:yJ/[N>c@Z� A)L5jDMob1JV!%+h!+eTt֙kٸ rjp,FLթiÜtBB `з1m=UL͈8'aq S9t{-΋m: T +gQՏxͰ0kݦ R/ksĆ_\[T4)1BγR^�r g-7O[~ހR;C렇q=oq*OQI=RاƲa0\k\nO8 &gfq+&Wu y,~xPx\OLN9)1K}:zXmh&Us.,1=16E 6K3>opS_p@#M{�\˳ nK.b^CJ9W&!SJ(zI>pX/jάu]gn%yUC{#Q\ +Y-%.y͏.r; ['e,9dmY 1gb'!#H-iwug$E[mu9u܋=ڀAьǎ)ўyޙǡ55c lY a,e?۳HTs碩 5KIẼTέ)!<;?5"V:ƞ3#_k+3AClnϋQ*1;2T|2[i3&D7xI/5,2>\̘l)344㷩2nhf~E l6dJ=ɁTBMH/t3+iY,c)=q1X]R0PCi>3-g+vE3Nщ$ Q uǃ% (VaQ,^{8TD4[L-qŚJFZTH 2I&9H?"yu5ӳ+J(lh:LZDy)0ӓhE�̥<5<Z겷^T h={ Lé4fH`1I57D<`5*j0f)C3jDrR�*˔UUU*UrO6y<0^r<Ol�mxmwR!㊪ۻ0zp9߻}u; y카fP4{GH8ߧ n.YMm3Ma%S"<c YOR3OwAϥfnBX�eR(W;{[D2.&R#5PjZtSւܧTU3TQ* AA Fjf\@EA ":3YHF40(EmP;�hX}b0v|fi {١;Fk'Ca6h|)P15͸4ՁϹSد~>֢(w>Fni( DT53J[C׊73xSؚV3y<'A%nSl@xڈM:t)иCN 79Մ6FG~x3~ 3/#7ݕG-Iq:F5r!-zw#8? *q9Ҍd&y3MmN@bp-VO<[\-pCͯOKYrlœP�<g;nA.Fs* 8''U#9ώ 3AEŦZn`E>tF+ mmAO9'{m 6haaU<,5iO+⻜1fdgQT[3=7`uD4y摝cp@D#91/Tte�󠫱9_˼)8ql#<=u[jM^wS<3Ǻ2mB&(L@"$TAԇ\à̔Bq '@KI<t]12rLÍbu3nǷg|QZYR4�!,*o0[_ܗzYxa/;miDh#ԓgjF,[c<=9JoBka u(G+R4D_Ҡ./VgzOR9jƃMZdE qΜ�ѶØƄ<H|v<_7RƑߵzG=:4cݭ8ő$@2/w?wGFӥ8XqitlhD>ƈã<h=:n{!VHDaY?FXx4W!S2<lobxF$?:ڶ񣈰hDZw]<NXa[xZo@!Xo @:Dk}J!cciHxXi] Pk 94bCﵖM摥3Ŧ1IiWw-$wD研ۛhKճR(;Qmi\Ndyճ"|gmK+ ӘĶ(V=cK7GmG|s+_D/M=-V5YUݨbY]jϮ7B908<Q;^ ee2V?yˠ<tn^w BmRݛc,Mi3+!Zϐ9`vN>>{RO/{.O>E"^J^/`^LD\ٮaeeBV6j~o#víQ=cwQUJUcm 7J!j]+!eLd;/qNuraU<FFg\/x4S'3�zN]%Ԧ dzd֬6ZޕhyM noζ jk6੬kz&r͍|-\ڄ4xQH6!VjH&:mּ;NTCf.<!=7F8<,7!Å1w/n-$N Bq 'Bq{R).L͟;5~ڷRu''jxZh0XǧN9nlG<缫q2o"#)mݮÒU88ـ/U.h^yYY0V otkR\Ӈ:Gؚ5bx 8"* ~C6'#ɧ,T92t�˗LZ4ͦ{I˓7hdy/ɽOᗎH?"=d8i#^7]" M@=,* .ݒb{& ݒ51 j峁Q8HrJqj>6Gy9=l "|Q5W|v]V}IiúUnQHix@>>&b6sb7z˙t2@`r"}~7UzC<BhGİ\ &@ �{kL.Q+7Y `w-lOÚ&5ŶN D $]!WI*z+j HZҢ?FxfdlM:&i)vgfQQL4X]rM"jB&b~my MH2Vq4$}ҫr[G6iYu<HIKe|Ae1BuyQPZG5<HThb=| �zB ܛSS$FrW1C]`bQ|"l3vgJD[+9xDHrK=<Hr,hI׼ԉ; IDUy 6MM<>_9u`{חX$r8Tvδ߅W>pCڰHO9&P.bmb%+SAw=Zݠ:dcDɹpݫ zߍ`XX�Ck مx+& вΞ"S۠μuJ^fA}bk<sUbAXQOB�ҽ>ty)jԊt7fk{\Rqh8Ty~vm ^|ZE;\mzh|g4ܲp]MԭWzR^lɺΐϜ1TJLbZaGj7:ûzu&(ieq p){OȼXI-r (KUe}yqT&a#)o +G!ABq ĿWW>}E-"~XE 9B<#*DOLp]p[U5WuJp(RQixDE) !SӜ뉜u+Kk2QV1($z{CSjU7:=eMP"nTӽ*;Y#A�\̹J瘫djV*!WK"CRmal 2~+6uE_~[H [E?^;UQ5%oHVw5BMX,UcH�__OH'+xYisZ48qXejHX9Z5<j䢮<pg0k/QXcA2lNڡ+g"wPk mfi}Cw ? Qb <otrxRDMZuDMuQ<̔dsҤT1m|9R*z<aibqb g/A:@Ú�?-V,>bڭK^=DUFԺ)1;MbMJ6V�rÊ}yS7umE=5k|mEnzldonט,(+遖ZG0Thg~ڠU2ג‘[t=f.d帥t;nG顺cyMp:HV6W @'ϷvEݽ匎)e?5lbK> rIisWR_Zǩ{сC 6҆;A}*籣LӍ?\Wb1]�#Ǝ̙ŢRE2 E/X@RxuOj%YTbV,r S<i??. WLsA]Gw7ekA9EҘ9-BȠR+b4%U2MV()a�䮤PPA+< ]B U(.&sY⻓TWeb7=ҨhVц8b?H!Yk"KUl2+ǹ15$>X، a7 I)z"8[؜{bk^+ٙ)vv7/'er>>ԡ}�lZ|{+D"-PڀŒ6ZWxwz 9a@- b+_؝xy_fNiB@l0ӈ~` ~`_1_оy8]s M}l:q�V:UeKrA ҡ(Ȱ >qw.`&@+-QVůl<(_# Bc?Sc28׋mQ?o:bk|m/oט9ڼ&?UGZ1qU-?R٭[O8Ŗ 0iq8Up㬎1|Dh_# "|.k[ }/xv?\I%@ͣ1/צ%{zP@UE^I+XZy>M5!{(@2�|%cgt|ёgB6'C9{YA*%A%01ǝC;x{3"G!S܂b,{l2޶z/0#;ZGqGTIAmbOxs@u+GAĔp9 W޼['hL3Ö_R *(=&C/s͙RGә5:,wҀ`X&{ARjq Yu;NvL̚0> 碣辟e GG-㼎}euܹ] 2INc/ϑEc9 U '%8?*⶞OG;G1w{c^gW[J[uMҗ_b B~r'4^dĐѨh[j6wBO/2/ B]]ᩯ^g `�"/σ `Q @OȈr B(WV !o!?! 4ry BeA1~i%E9`$|/O {.Ѓ 9x6~wpJܣ$(Gd>rI=F 5\3Vm3.QX8)$U-+镖`B t[?9Zq!?ri)ܧO܋Ww"C /&O{x?Ʋ˝Qu_$l=Ng2C.S Ց.׃ުKåT v3K&-LEk%ʶmx'Qdꋠ~f`8FbsT7@$. 1G"iiW7APҔ/k9߁l }(` }(`$TٚZ4MFl)C:P951˳R܍&fmƽwG'-BGjP{Qaz45Y=+ 7iL~g՗]V" #ʄ&R! n]zNdoûX?(N<n; Uw)QɿT^EUAhulP}.[fK>{kbm:yvD/eL΄w&24d΄&(ٍ&^y"Q 93;90Ho@ǁ&$ rXlx(@pq܌\svc>|ʩÒ(\+o~Q?X@U 2U%ܼe8'YhÏK-Vdj`}'HIUE`s~fj6 MQ$c;Kyi6k3yCv٭''k{M$_4eGpxIDk- ^$g)ӂ'VJi?!:R 6ůT93T=J.V-IbzqVJ.s^ i ya87\bbL+_P;-i ba3IU1\�<xVD-߄Eކ!lXF<-GyQa\8Y1z 8!lq71Kѭ3˚�ZEB^rM -˅�fC~R V,7=z` 5T*8Jp~N@S[Ohik+9ɒkkOM؞n!:{`tS d͙O0 M�0 H9^9 _3fpSߞ*$նmj$]$&JaU Oꪼ&n@:49~4J# Yw:?NV!a'EyVF|^ϋ߹HHE܌&|_%ϋ)VՀ}ra0%2`0Yg|^ѝx.qI!˴`g\!B5eVȍOŪݙx5UFRi|S/NH23##9Դpʂ=g3`(V-J0 ҅)f55ԡB]|a-KLS5MJY3]J[ jTCfi5Ɠ[އM{AV0| &k|^u(Z0|3I CP*t 34IJ҅BP0fi5ԡ(cJN0|&nE.988pP4)8p�A:PliB'C=gQh)Jҝ ;oiV�ɴJh/n{<ah>M>>IJɭa%%Od; X\챊ej!PZ$ kF_rL/3&NbɌp<ۋ&U5x#^7_|8њ^?JަО삕=mѰ2;.i;E+W(w0S5ƿf<A+ =[CuSh@b-IICuB yM =l*HxJy=uG7 #3W~CP=H.XFrun߅-\4:@)yGh˵u!c8>݋Sw® (z}]?cq9#eBQ}S.4V_!jEٔX~f` )Bѧ9WwLLf㌙)t;|<$`fc]u7_uIlbc^ G]=S GW#8@OtC̬Ƭ;p[nׂ;Z`h#?( Dò&5G=G6}Mk Bk $xn-? izSbŽhwL%+#8>:q ߣ_'` {~☟&P]0`:?+PWgvP $&W{f7*bռ~d.^Fb?>/ E*bXvv#؞tdUܻT2|e5 #@l@Q7ILt@}!+n`i:P|d^ ~iCkQ7tp&ju bxS' 6 çg%dpuݜf<(SmbzZV{PZF ^|7@v -Ī~$S@QWפ-zOԄXt�/I$Ղ\]iz <i&xACz ` K̽6�_S9o"Hyi& LC3#<,(bwPWP~IpDRVѩ~eo`m~/7YP^rZ8>7+Vq@2`,ًW/SSC na%1Kxcrc%n v v3<!v?z_-C^cK0K g1<^by."T?y/+1v1Kc1K\cc,^c`1F?/1K"c<aMhL~t9c ǰc@ǤbQ)C&"1{1VYAY።[C LiRҘ1K�c1K,c1%1F.5Iju 1 B cjcK11J)!Ws0=Ľ;J_IԫL@ԥ1N:bǢc19 :T2&$ғ1"c @s/bcK1~Ŀaq%/$ %,I1WS cRƘ0%:$F?r_ĪR*zz?[$F?1[3C^%11KNbp|T#/K*D2?J_żK }ɏc^1B  P%1%1cK1BJ(K~Ya/)Lu8q]vv/&>t%p1ݥ1՘b kR֘1>KJdiYC |i|f5&+1L| |'Lw w?ffc1Kc%1b9(%1NcK1¥1&cK11R2<F3)fs#_6'z'$>Ľ7FOH/gDtvzB~L b_OHoT'xt~1;Q";N/ ҉] w'*$gqj' $vB&u"ClIP&$%tyjJrilh(߭<JѤ5caغ;2Q&�]뢌LTIgቆ%$DD[^3%%-JD@]󡀖2 t~a,Q)a+ľpJJ V%t[ĩDOK0`b[gG% %wqBO~F0IK_ 6%:/"LYt+]X0bX'EIKo4H/iDD_$X~"D]}L_;"Av! Q/!ĽG5&fkL/ļG f%Q1ĸnVd|n(b_d5J&W@N%tlFDj1/Ba{npQ4;|#/&7tpDjف|Q5oxbZNEbXGFE(\"q/J#;QoyO@iWG4NF%:?�Q8ķh=jr%t|ta~qD#>%uolK.c2F\KFnj'1)G2(U;[wGOlKOۏ`gD=ĿS=s&ƊSY AșR*,%K= ӈq(LSNJ}D$^Z_G7%qU(TQI:D7,7}ѭr*o*"6⊭ȯXn* ![E,Skx;œo)$c}NqV7"rDo٩E^l(7+#|)C_x*."kإZHn&3q(VB\uÒqraZJ8 O$pK8m տp2@W;5fĜȚ"۴&c|/r?o|Jܘ/{_92mbb8 6i_q`܋+$bPF nUKֹ o%L /5cqC.w^)# O,aHq(O+"q$7&IEWănZ# br9oQHm ۉmU9*>&=3qY9!j7r6kvEjw�NLdu"r]츞q+Z*%v^7,95;two-͡rCo+&wnrFnb\ B`v-W|QT+wj-Ov"zn[7&9EdޠVM& lLbEYL*[m(HHBBI7(n% <*Ƌ]Qa=wW @ . ¬k6-Oh;,/Mʟ[95mreܷ#x`a[|(+ rg4+&rq6R6pZ>&uX8[J E@ih6˓Vۡ`؍rW3Alxfd L7[Ea]91yɪ,ݠ&|P94+&9Xȋa7R,l[+ o([&HViV~-W X+/XG% 9,X&!Sq([-K]0>&e ,mH%w"9Y}ʹ2͆/x%fŏraw-˓llߔl#ji}kx5뉔fh-MKiMɢVwqbq- 3i7  [&GYrLA o6Ѷmag83R b++QnMyŹ4{ፃrgv6S޸m+}l8mꅴ 7ɵ譳 ;q\XNX.+dWM+04(V#jrlw 6mmڮ+3Z+0qY]{`7=$ы:g-o6m'+h2幭bcs`ͦ|XΨkOŝ庆m33Ei=zÏ9}a]qɣ۶Kq5^�2,HrftdeZkp3q C""Y(B0wA4:D0sr-V zӈ^tXMp:b<+z'-yTi^`1v0Mɳ t=Q`< [LGř81Q߭v~Gխw4⧤!ވ"yΟSp}Ԥ,Nd<Tݷ =7RPv\\ܻt}^G$#!ˢlRNLeP2b*{=iV\h'P_=fs=P`?ҮyAz3 A}w8ž<Ϲ1y+p4kp�6ѫ7rN}Nw7M! !<::lr޳Al:mrţaSsLqzӊf6oi? /Jwr9٩H}Gv<x3nj`TކĒUoBigΩys(Io=>hwaC`w�g9BAۏXTL jpnnen1>8>@RW9.X3|wEt.fs>wPs>s>J3@fu~P<J,g�*'Dc8\Su"&)0yFU3o㷙3t+ o3,W:a lw 2]R+]3u uˠnX!xsuPs{xc(X(&wa0}C[F!^Y2>+X5{{Ȅtow Q5URqssP8"z pɒ EzŲ܈}~Lgv2nj'n]"6s{\i baw '547\AvƔh|:Ƃo~Ӣ(뼙 _;#0f"d]Z^%}:S3KCM ^n(e3txh⦝x~jQZK^/o7'<HR0k$ N&vn֒F_وr'!w:Bk8`4S~4eLeap_˘o`2o@_$t*3uR}5 U䆙w cSʥ?2ȝ}@.+j˧,nVN UPiJ WFPR"nXXuz5R]ΈŐc2}o:7})m (ޑ\x*ڋ9Qq'߶'BjPؑop6?6 ؂rB /|}ѴwQ;jn~lœe"PM+diQs4CDgjMV>J=/4B؟!&> dI ;QFtIkt!Y!^/ZyX~Qb/ q>!BxAxxEb Re!9P$S !4? fE=}Ntmh % @ѩy}c(U !<Vb51鉣`uZ(46UnTpvL4ɱnБrH+jV(;/AIe7teZȹaJuzAt)@2P8ٲ1raEˮ[C[һO"Bl;(!GWNo*Br'iZY|/i^fL92còȇ&4?Q*H;,Hy-l<a1�yL&;+yKô ;(@ b:MG;BO߿lwql &e-\"YQNՆ+FIL#6 TMȅ' 6&ב}N4CxFᬵbǾFU1VrJ:ja)CAUXO.j@<8m?-+2v##[)%w(vY}+'á-:]ƢWG{x[J.YgiZhj a%ܜe6=w2V$3X%2߄ '!p 2B0 ]/]I,s)53+a td$'>QPV;cN<̆!ͫ[pOʙ)ގOZMgu]-Ag_VY798!Y`z"M`2;xSBcaY7y'h^IZF8WZr3o9Ĉ,w˸`~fݒ!9.d4&MJFSOjL#6M[,j.Ey`f +ӫ8&Ь;5q;.ڿ3g_ڕ ӕBH(_+Tŗ9rۯ+A.zG `"v4! _HYR(GwNbE:%3k)کB3"{b.3Ít0j1J~ 2OMv-(諔c>n 3~ȞMM,R"qֶ@pr )2)@;'M8g.T{}}CF91C/szD?[D> Zp#îD`™1|x -ըi"p 6S>2n�:^.o~!z| VF+t+~Q[BைF̻8rmMc6Qa '7Pɼi':|f2T�;ҤIxk-ЍGk!N,mF9OR2]g3]fAԔ}5=?`.Uw\V*0IvX[h^V؏[}Ekt14.AkJ#*.[ ^ÄR|ʑxOQ' 'KE#!eDNRBiB=Wx:䅢ZJil+yF \<|¾0M+vJyɪ(*&^^mYm拙ՖkEO9mi #f*CFNrp$N6_ڊ0$O !l=.z󵹊.cI.QkהvwcBBeGda5ȦhIj𕷧ĈWUF}VTOJB#ަte~LT/Z'2HR~PtFJ9 @Nn,LBesPv""]Ox9:)"(/w櫙l@4tZ/Lސ&;h#iwLUe7Ӥxc4։Y`ɤd[9s9Qj'A1gN*| ;~ E BIKC(=W([29Ϳx xB ZwGS2CDzRj| e$JR*ԛX9! <[/[^z-$-hl\غ8{d?!N~w]UMM(L{rW"ό({Y2<(4X:ۂ"]ƩċzkR1rkZ>VU>*<))h{&b4QBּh8kr5�Z9D:Xxń2e/wŠ纾_n> LXE SxlMXvvrI6Px[[Y6Boke'yDOwk$_pgH.'QNxWu=Жemmt㦔P6:j(M�HWz~7o@?gV3d"KYl,@֑$ChS.sLnDrU;!%Cn'oFuuߏPI[$lV7 ⵊ;<if9eՕ $lA .Kby2㔋0c7SfYOug ;')6ϴ>^6uLcb c>[-' ܮ!n�/cLb7#)'reBFUpAQ`M+Bϫ_jZs6Rxz^#B([H$a4cDTSQ_BFRbt!%$ZU$Iն>M x'y7ٟ zOOLUY9yrm3^V3/7CVF9D T~F#V!^mK|~)Нğ6BԨxt~iDNF' L!2.}N7<ކ?. 2Tb)nrDxK"|JKbSzi].t\b\ٳ~WM%q?\'Dڗe7MIG97(1- e+'}dl[E)VwZ]Ҡ~_pWұ^POe�0p{u' <+[1}\(W%VjJr]Y�>jfCTw o&$huD!8Fvonnl*3f>gğ,mN|k# .՜VU)RA jo wig`IVJ]A]!ı&W)>XTJaN2l͝i6 +\8X'R�o⯸8$Wpbl]*WGU1-<>雪#KVf~wޮE=.|S,Rџ+5pi3f/<(e;\ש樁EJ k]KG.ϭ1{N߱bZ7&QTGόLd'RW 7#uݼoB>VW[1*F<KvRw|V ^P#�bؠyZGH, ב½ҋ̸M><Eix9E4Hrl]Ɨs={HVZ$m)ԮW>qUT9 Glҙlؔ69Z>D♡߸m[H"߄\m^帖WbK'DRh`xGNoh j3.}C(<epv_RX5xK/msmܨB4GCX [@YA{Qa-U35R~Oɣ N5*W�|7VU <tH5LOAT/]Wswd*a>%;Fk8y>EzYv+U7n c}J.±q+d7ϯ+dҽ˭\W'}ͨQ:;%V=܅.TNJAi (i :rV+~PȞoܧ!]HZ Q^/G]h'膿"=Bj5b'. Y,Î["LŽ &3/2'|{ֺ^-ktiםm{ є'4a$#"}P4XvmtԽ/� @qz7~OniJx ?׃0&#&IkjrTTd,9$D%a1j A *605$"Fm1rA3fB2)Mhi�Oq_峒10t _:,C0Hk|$oBW#\']{^1hOHI<}Gw& XN]\|Z<Q!ƅ29oD3s3Vmeqo ǒ*UVH'cTuCedۥ$;G/˲W^L4i_syC,S%ÀZpb3LV{鿻ڊP hDpJ'oKECG1ا1 ̦rg�%8-0Tmb=Z "fr۾Xa=dBuV{%-o t?sΡfqjpƉ$h\`xQĔKhܙ>[Q^p T]mctjytL JF~h߸Xbʾd$d.CIoB,~#._cQ«aƋ?&D +xG+!T+jxԮ`dԡȗb4ߴ%~h ,N(WqS8#>9guv[qW)+ !Gk:hwTfte:Э J͒D}LO[LŽ )!\k2Q1?Og̣Tاi2\tAqmS.}ppZ5ٱ̬YoBqS=G>\]vmqc3RvQġ&c3 ܁]FZyr̮2}vvGLӄײxdON.\! M$7ZlSks�C/ineyQ55Y>ei]C1!V3 7Gq⃹ ӆjP=Y9j ,\+zBo/-MV{33GX-UI_9f}Zm%gBhC(%0 v|T_\6c28Xc˄AWSZ|#\<ӟh$"#PsdNbxK42' C$`#"՗Tsӵrخ@g8Fe pёQamK&BΞ8]Tbd7 " :g/ O \Ψ$72g%f_].Q5-ehʙ)AnT9|d9@ڍVwmAD h0VB\yCr#+1nۋXR|c4Jj̆ 41I`pK~H&wR-p4_?ah*q h |"¡DW!7ӵGZڭm#-ړەoU0n] <T/n̔Qf7#lZMԂn mmeI&;WAp5>!'9FjJ8,ѽ%k-t7 Zp<sO6HܦN sOU2m=gʟ?D7ڦ[1'Mvr=X9G&nC{v^:>-gRNTBUGMybC=@LoS"'r{)TO}O BSҕ~BJ9Ma m)&M._T %F% yN݇BN5K $G,P*#T[3vXW{o'�&gV`&YKsX㎬<87ʻ2/h[y㌢$biHx) _}'`BYal/TyOZ|1g)ΩC8c.0z8_?:d^I/W/ GN;tD=i Yxe畡[^'{|278WtbY3[ݥV^=oQ$N$QO%>2}->_GGe[BU#"4Zš@\[L5bD:{ɾ {=i_+HP?mc!y[lV,ϛѢ L@0�]*`hFI43oG^]x !m/To63q6SuvKj@0wu]N&9炼\ k9+ L=)錂>=~ kJ‡\]�BZrQ67& P�uA0ua+FtSSg-w. 7^>8PNKqoƈ݋qq8ͶSX;{)ïRM+/ga;cooq 9ht4)얾2OG#1lt78j$HتH?+^- pp#ճMCC2 @V[}$ #-^ Q(g[<`o@wˣ })tTj%x(TߎdڵSYU 'o3qxT�1Qb-.,d<U~ 5R[)]J@Fa xgs~ C8cuc&KLBex M1nDfA-͝SЖ|$1h2܊W3�.NH89S*n^U7 dLCFjƨ?L_Yi3" 9xX?|vG\ÂnVǎ)o,zH`\Jg/<3l#L%nH,IZRb2gYfS*'DnvEHT7Mp< 3 1^ZKdr/򬪖<c3Mf.TAhU8(!M}wbl= fg<<(~*dk]B;N(cYݜ186h*CCLz*|rT&&!?Vm<WRa!ԅu(6" cEx8Ƹ&%8rHV(zI~Y_?^6−R؁[DnSr.33|)5"tӊNBH;s7/ kA(eݳ5Cϕc-T\U͙o(@!" մS)|L02 ŝq+G5r8FI\_:BŌ< r +PZ6yJH eTofz>du X)$b4| Kq(,eX/t7#Y�PgjޢE_a_ %%00ݧ~x焘Ӆ{mG*o@z~]*rjJSF2­]thsP6KS wəT7(N >mBh0)nJ=N;muĎ#րvP6NU"#s,rK*?_-/{18,5T| ]ہ۬B iZ̅8]´1`toעe5 sMp<�H?t`FGi 4LPU{21 㧗`U4p2x:ͪO;|o{'Hz-jeyJtؓ8ز½ -*+ \IHy#Xh{b $Da.Ā߸e/wjm^B٣8h lk7`B<v kb|YQgȀG2- ʎp=7&Y7]nM1FVX[>${6O*=^M0QD0g:z)ܞXGDp#L2=<?*}Df2$/F[6yyTNOe-cH2kV lA+Cb,9||3i8q]=4@uˏ \h֤RGp$Bّg\4]g3u 5;L%lM70q;AH|> hZګmֽv0h[E\=%x2|,UqA<|MԼmRil{E0V%֝-;n=ML Z*Vӻ@=ⅆ|PͩEovJ*dqO{j_5m9TST@Gr{O�ѽg:?cGL"+~4ҁ*PБ97(1ߦ!ֻ\R;wOm9iQ#!q{itEMNMl?֟t>~7.gK1G9yf;P' py fKe3OZ u}m^64/N܆I<hsSap Zv0[U5֎autRGyoa4FhmeبՍטŞ8 Z0l,;k`A*LKfE!{ڱ0 Z2bDj#>׋n&ԕ ς5 MO ^jAk�T>*sRm�}UX"U \Clh%:PƤVuK&is6 Q4@Cm ׂ& L&<Ժn<L&\Իj6x65&beaHqD|_hH]frE.S43‚i9z%O~3]X@Bx{ȁ1sݑ`;KgR66٤[18D2%e,19nI/|+ -1<P,`Q] [RxEJ9![M�0QN-#)g(5MFE3kWf<`Jgᇆi-iIu=^{6 d>rcȃ1S10JIc#<B#F:x9ċIwN'یO+ʣs|"*YoS#S¬SzF[VL:?rޏٳ, [cgFb[@YW\mKw56am,Fp]$< v83:dK/.u�w444.ᐙCtˢrcČ/2`)rqɧu\ǧ S!T/?9s(7b6<>GiX=ۘ4 ˹)2A%�u"[YfEېۧ'<N[z<tr\/^/d<_IIg"%zgdK% FFGYz?d;^'*OEt<�!J%+N$ThO=f}58\qP`{v�˝2V|6]Y)nҪFHRdۗƃPO^y>ZdP%:*QAS%ڏOVQOP>ɱmN>|9o8TJT*AU&#S,ڝQyHS#:jwVVͧԽ6*2I9#2U5 D3 Lg)(]->%z(V5L"-"5*F<:>,!5*)i ( 6J5sVA}'˻/r!cݤ"WpD?<ZB^$wF;Pd6Th1TJW,V*0>K Bcٶq?hRUU W͗i;>k3~Jpz>ȳ!zHSc^>c!Wbo3^Qշml@cO bw6>5Ttܫ[rhr`*BgAiE�PzrkmcZb &sGDt` Zo ghӄ.ި(VyP??GÌptCΥi \F;HӞ;\ľ] {Wʀs̬C%.#~f!@a Qw-@y#$-;6Dy�*$qUF)^8 :6/4"k(}<rUoE9*DUvDIY80~hΫÎH6ѼtyIȟ&< VU76=|3Ui y{ԧ&CݤMVh~aR, #Y(R2d Mő  xeUA e)dxAT%v �.9ԃGSnS vz ?1mۤi5Рx$!7�c XI"J 0 J2[bYm6Z')WLABxKR̐V IJ @i<AȎ^Dd=D* ʬ4"/o4Hp&8 6S)>IZ�S˙a+$rʪ)`}t߂ʑn]|ّ_.-Z5adJꗟsuuFLz8BB?g-^k\tk?|LSh6%Mj㔞9 s)$ %ׂݵk r?dۯxG]~o6Ǩz_q~n,gW{wlۻ?s*/󱤿ޣ,v]?wW '%8O: +A$W?}/G{~}_gC^o~')`1I=q<uoݚinjϿw>ٷ0ؘi[a?V}'o_ܧb1}׍x?r9_s/{>>+mq"8Gk~p#x\~8 ޾{cp4mڒKTzoWQ~}U&ۊEsپk':NqM?'Sj3? T_,'{9T/G}o~kϓ ױyc/f&kCs?V=5??_Qb}k޷x߻~o8ߋ Jh~/~ і!B[ mU2M[W!:y~۠:6< `=r)n:N~O9;'eUjEaoh|uvo[~~i9:BG\&u%b>] ^GZ:?Joһ+ɉՋU\VKjp/̕mxIdZE],UnZn$t=+<'ZZg#w1k6Wsϭ3Dڿ7^Ӵ3I�my-ڣ"2Sx3hӤlm5{\iW--'<QTh@D&Tff�l#Tr:0Fd*[NfmaS)V&l fqȊ(xf vr7|o?[f\?L }{R Y93tjA,i3ݢl>'Θlq{d@cgh s;Kg1fDf`KƐ$M�1\Ju]ڑ@{c3Y?hdpFӨRo0dbJ[f~�q.3<�g.D1a+ p@hBL3 u6sOC6*qn�6w]o4ߥ.ܭ׾ Jܕ /} r%oằB (6##YJ''�PƓg^x{|rlX4 Ŭ�ˋɫvh|[I녁ΫLB�V?(Nry�ojڮNz3 =mԾ߾-| wGګЄx1:Dw_cz{Rk c=~Hʛ2IބǾ:4x#o {>:Ù:RQ?O;NO(]3|49^0n z&4A4׽2gmW&l=,^{{5]snn3Qpc2Zj=֢eԣq޽("< pT+XZ}~mSܓv0`PO.w1d["){E<K'g|Ogy>xB_/ض#!2yI8-%{|Yuofܵh&>=nFM,7%OPaZay6}^Nɉ̞m19 HOBN@s/?y!()3ɛy@BO<A&aɕ<i>EN,sǥ&!5 &ы�"xHRG Z43 Uj,c<R򾷊c)ʌr2<J dM59/+ tE) EVxL,r0VanrVn;Py-?g/рn;|L<u�pq18QYaP&b/uڹ[h%v>Za`-Mچj+v4)1zG!$%&ߚYS~nʂdVO'_ı2UnvTW|#ĺVw/*#`o mTA {l%úye»l8%쨃A~~5ػ{@bP-w9$۹JeE-4I}}~}Eʦh TYTߘi8w<-~bpqF܁.:oE툥sнd6mTj{W! rTW?]LX(f5tۿSGv6x>`,O0~x>>!w[=B}\]f՝CBuM+ (I!N}sEn{5({2H.w(a)u\ʙD#KEb>]E*Jˊ zQFĝ48Hea{n *Uu\TL [ \j{/0[;-פ^\T1=LOL<0 :h 1&9ˋȲєQ9R?R$X$7h3x!Ўf1TpءkfF3VQ3]?H@^Ϫg5VU{0t '@�lEk2e Ysvz,A_6? F*3S$=nH>3(fՆ>=beÓz`)&_بz[|j@n~h4>H>fm* gpXDyӦBFK3pP~ZE5ʯ%yBTZk; AēΨ\GZYz$yduacy>ԜUGrY ÇH6+A٧N<Cϫjֿ38meRLu5]aL`@SH 1jN[_E3ۓgD1Tv=-bs)_a&Z&Ξ y+6M'q0Ы"<ml>pw!9 GpSߞP}l6^0?&ۣMf}%0ƣۭ0Oep(Ja'-Y/58JE{A-[`\h9H_/WthO-Xi;՚2P^ S/F Zܷ-z�Y-k4b$sHB>To[>wNyDfhG:`6f 3JNW]iҹ.d0GY#bYTYwkVަJmWdYU{ʆdыG $%ׁ ^njỲB Zu áT!Ӻ>Ftr0ibN`cC9-5\!Сw'/ܥWsoBsBj[JxK_fc 1pl;9!0{f pK*@2a%Y)\Xd;N #,|K`a 0l]hPLpATf!GOfCs+0=V\rujag 7EXs+I5xbDԤ?f{`*ukIcZɉ 塌h#110^#N͚s[KKj˙򭢫F<L4T_zEЪ"vT 62so=[[c:(<M еuO#!;912nYD</`yyۃ >~b ^fg|Աtld"B+G2utRi/((+%@Ͷ:[3 1bӓZPV q-oK37xh>fm<GULY(̍;Gk:,h'hʓZ'z?Zk?SxK*n:h�(W|mBV<O̟)a'Pt:KNJsM%xRe2c<2\S"1G6L;<!}!W?b'Ff#.&E!&]I85xUID!KvЮwl5gB4 W#ΙR4B!AAvsTAA&qǧ@fd(|*]{J~;j`'"|yѹEPmթ  =@ԣZO/1&)FJQRs #N}5)Jwz޸ӖCQȵ-vI(ڏ49JDn�@,#ÏIWϫk),oBx=J {g$@ſICؘ;-a '$q$6Ɠ#kn@~yV.|YG}L Ġz[v&eb{@]ÊwZOzN`v$* /szIŻ*'=̟ܶ_lJP ɔcy]dT/bjݥݫLfR+7 ʝC#$aVCtT-v5& 55A8cOn#˽k^LC8A=�YW=ڍ\aK7xm4�&{.Nz[# �hԶTBBr6W`3k{X iE[!l d>& 5fC/،\& UpŸ|op.`)ԘĢOyđbG#˜yksL{ɐ4S+ca5&;Aɝ%'Bq]1P'рOe?>fU e5k<&35|:lZLwU, BLcƆ<)Vr)qNyO/>oR0 t'8/dܡ]Ė/>i9/KVÛBxsE&3P(y:bqTR8PAxf*%ƶ7`qCU|Wh ` x .ǖ{!炙U[ &ilvaZ =J',5 p$eE@d1Yz!{K*CV;͍xHVak0<eہl/`%pגx85ͽR:5-!�<"OR1wOVqG7(88)<׾|~,& h;QM(&jG bHUgC)-zӆN8³޹!M6:t,hR+ Jq͘!ȁ0+OyEO@arf .L VթYÈ*pe\vFfTUog-QȄuP-~rE*z=HL-pmndR<^J4|�X-+zqTșuhhTՓSieq-J9rjic @}PGJ1>jz*q٭%AT#oƠz_~@IBaz hZΚGHPTz%E{[IFك4'�kUuS*5N/0 Ibi*2j_(r\9/Bq.١dסY+U!`[Q-w)Wϲ!R>q~꽒kC7yFNqxf5@'&=NTxBMik@M5(P�Ǹh}YdB;[M, ь f♣E>'3-8)H39W% xQ|Ѓhsi8c<hQ珸v T4 0 eŊdC+9>=Bhyd@*"&0:9۫͠MDFfS]!Ԃ}9r]=B_^%(xC:9wr&6$z󄁛_LaeFM!=R_ Q[**@=5lB0 i||o52*lMCY4syO~|$4+BvHd{-^=|z档\8߫2xbW@HXe& D*KBC }CEI{Y2b&bieE-mm0{/K%M#~1(61�ĭs`_{ Ҙ͍(NUra󜱱z(Jǀk<2E:/l%?ɼz +=Qw.+P3o 1N>�D=݈퓁{ 1sɈCQq<giyEO̚GkPמXb(b8-9C ܌]~\RO<yR[i#{u' أLd-ΙdE|u;WkF- 9:Z @ʾZecG]Щ SPRw)Ih ApsD>]`6J|*k>-T-^d'0 2Z<�NZ</C,=` vӰ\j*3?H$U*<EVЪfoJ�MSG9eg~ bt}!ɭN'])Tz06S!AmFŸ^wO*] [5Cϯ{`#!x={`ϽE-+KJN:c�7cIPӞz2hhcPXۃS&b־rlcM--I}?p-$Y}5p#l j"ʅ F<)ӣ­"\1qA/ɿ9*a'@IBo,3?L>xȗِ@+-)6}PcurQ= >A4ۻjc/~B2q#O:}\uS 55M**jz!4!e.Y�..T"<۶oL K0 @,PSiyT,#L;ndJ"aaoI\)wYeLsK.i̭{AyO c@WPRFOK�R RG֞29^lgغ=j  q.# |\'08gƹdg toMЋ+_%)�ASڼo=SNp^}i()eO[NXa<y<xĩSnV[e^_K$-m"뭎 2XKZ/%FxN5SRiS}u\?Hܥ. uX,qۆW}L|?Ё&ԉ<5r`>(k��S'X Hm' ̒j-IGsÍ߉>4}}>Nһ?LVK<%b+ Nf i/3=y*C|u#٣f۱6^y]<1.֥*>*ʍZ7ډ6238Pxڈk ߬xiEmk$vwRcP5~ B�8X#B=KimdNtoJ=NX߷vϤ>H,wN2f?�=P%9jg\[f#Ż:`ֽ*A^zoJT䖖@B>ٱfpIf=疛#=t*c1R :U,Nܥʣlećآ)IUx N=*|8zyaɦС,zP3R~x;D8fN#fE\"5 xN׍(L_aIj7*Oe:6kT�"!9ycb_aaJ2g8fH@CK _jPizPΠ1vz2M֥I|Wqĕq6 Cm{R+Y3*�BP;LI�蒖קT+'=BFXh aYĈ"'0yx1:~^Y>90#[#-%[tDJΐl#,B]IE\%nщx|qLӌy2_1l H^ ïwe8 S U-ITD]d>ڏƷB s>Q}3MF륚)O~yX4i'ujbHYw4Zl ZzJ38 7lhJ(&<UcU3+U3j\<b4}ƾ ж VZ:ʿrm0LIJOypWM3g)#'by|Vj/*>Y7fC81oܛ]3Ҋ6XK ˂N߰C_"듭ys�\ɞ/]n>JN6Ctibr51P6Ϟ[iE! n=5Ǯp>Hq\Civ4{DQ`PXXO:#V3 [#ƅs2w~1!}}*HȊ=Rg!d% !RSZd|YaVr?@^jLskt=u&=fVT&W2"锊ޑZ}9njLummՕ lf�mdVR gz,Δ~\U!u92$.X0BԦmP^-ay%;@x5|ۀ)Oa^,ԙVWK <yڙX>k B|$%; V753;0GL:5nfV]oYU|YEp,[{y (g� FsquLZ sۓ7Lے7r_H87+@2QN =l!JH*im"i&&ЭB;H̽ʳf hگaW w6Vhw_Mު9^13gKd.ug,{ʈݽ_/$4]jF6r/;rQ7,i%\v׺OcвYj4�J 'KyVlX};i)GŷGlT9en"c1CxLU۹~rº~]H%v_VkؒSFڃQ]*Ъ\Œ3w/!N26ċ1I$]W?p@%:kK7 >@vzD v5h3_ ͥ.;(8Tͽdj0T S~䱓l`/ւ +0| vukhe{d!ȧ#&u YR/AF}\zޯ\?gQ0QnxjxR ?/# ӏYQݬj}O_}ٷKYп�\)Uf7ϻzf/}|-ָ[CI0d{ g*]d^>shU6`BY?Et+IC*TkeK>~ڡ\3oʴqaG `.#I8(JSqq4M,IxfT]a[X"PGNLxۼSN: 8!$\)7: t]łYI,OBC9 nHZAuʽQ4Cۻ[Dau&Q!zT5=8'xĆƤ R$x *X0l4;|-4М=bʆ˯ )oUeBF}h@up�Gy'_2z p7ٽ *xΕDNaHhlf  F&MnrO̿ȹf--,Q+-nTw?4pOz3l\5zۢuVQ[,q6ԤnpkOHQ2 "`Ӡ5 ]+BMEYBS6PKqpe@$ImKACw@%xs`CH*N hStm4U\8xqqNz4Uh/L6B* } jx mAՇ@{XkdV{ddXu\[7V > ZL$]֯!FB8b@-9{U$C|:ǧ�u-(ԝZRЈ BC(/B!΁ڰ#d-k/ MV%@.m+#ʚٍ::G h:/֕e5]Pw3k+X- 8SͰGH$CS6.h$fuU8m2?pX(@js�!hOU=:)l�%uMe3ZrCCы٤L̕W*U{~i׽=+iɒA"Wvn�mz,E|iW 0iP^K {n$j}*b(Yn=||^F|Co G^7:<މ3Ҡzvhb%=:Ύ8֙ܔYR+3nNF.ȓS3"Ii%O8' Y4axd9h22P`p7 5( D9^z "L \spj:eIFp$%4ռ]6.z3dOr'X-)2Aա*sU`"Y;QvLц�A7� 3s. N l5$5t_H8A8}C~]RATnbN&?�0vm(·Օw"mp+ܟ7Cx'6shP` ୃ堵͠) k0/YKF 4%ۼ'<xyzy_unbT9ļ?HDw +gPs@W=69wh.mRV%eP.@*|56LNYnlٺ562(k6 LYocnƸmiimYfY**sg8s ǫ<yU~zOgGSw/PehcGgH`85Ј@& ~#:6Qc 8VA'6J`hP)chSi0"hVkBbA,ͤJ,&O[&xʳ_$iȞ9i<:iC6csBZ63[{=:d(O֤5;0d3oӬ~^,"3/zqV gÞg^Yl[q*z?dY}nCih�ՃՀ$g=VXԽ[{ / 4XX@19Ω ǺdMh#9粵AܫUeZ΋V �b[,y**y;eM>K2rZRraBgYM@Q)�HpLs,_2|t_Px|7Tޓ-6sS~C^##^K7x~e<=4ڮ6ul{_yV[J <vl@Ken"*qrx8'9ܧ4.zI ć] xB׳ 7՝$È 弇#Jӝ4}*iL|fwwVJ.`v@{^z !/1 kh檛�5 ^{z''Վe; j7jսKm ğvIooI{2n4n]~hdEuɓ\8XZ`~#WH =U G:Ή m[fr|`Υul]RqӅiUeSWX-%CRB޿ιljxWU10wV\MVidolqD;40<Cmz||Vg5Y�<.?^"Q/"ʯ]xp7O<o\qzHoF /h)�M>C5~8SLL&szU_Ev:B-Ւ=KBy[l*IgxlUY &̪JX^6'P^0j_8<| 9B%C ~3* ;A\+0ފS*P>�l-}MG"tTs3i}PX.qWU7  ̾ ̷>}Hlt9cq\\BmEy@*ٰs'[qzrP8XF %(hNꪙa'w-+T؜NrݰBkn}р 7mhHdj�g*APj9`dLCH#"T66KRKĶD[sW&j#a5 8p ?`fR@,YV/@LBjR#P`JPN+{I"}t>ZŠd ] yeptt?&�CQ4:zt >`5!g  Zi3G" ٛ6vvmWNEܱ% Q`߇J1Gnmtl9!!A pڣa8@_ocbgEV ytu# QPn7s&&NZEM~O_~2}PBm8>`ivRzCaY!ϛSUw TL*dxbVͦXd(;M.s"Oh>GC4}gLM^p:%a čɺO㋢q~Q%ɒr@r[I`ݪٕX *?@A^"¿l}X n>&&㛙5]񐬱fd$A n Ɖ)/Y4)I!lP83VlF�)m`̶g!$!l] (َ5Ҙ\qQ ^62JtFnA]&bDbKK_+~� Q,`2-6L6g@L#q<L~382<?dwh)f\Ħ;V"p <:. +z6[Mqkc޾T oƥ<rZQIi3>cNa P岪# ke� 2&I:[kXQU jqv4$VvF8ߕVv<Zx`.u!m!k DI]trSʄOɡeB*SVjP:iCAc !}yv@,J\'sKQT6&\s-^ d3aO!$\HvL7\Ƭ1y䉚B@ߨ(t:I'PnJW;|1�bJDmh/w䮥�lqw.7N|ΌPYI)*N`o0nI L"^>=41KqE3,ճԧ` pI!B϶½Sotz2}3*-CG:h(iBy<-5K=^k!v)0+S:"N�a᫑pM܍dR (\�L-Tl \.izhzP@I ҸR p H)!ts8kdSP7-=c6igr.«Eu0Е9+1|RϿ}C1I`ˉb޽lv&k{?Ud{ͭTwN;SsOYF9j|!T. g.k ƗR9szةBEǍD({&Ner#&5J2�!*Jn=ufBxeVo Aj:W <9!kHJ%-dH)% ) x?9E� ,{ЧSۛq6x 1SBB^u̽P%[jlGOtJ8sϥ|hDL3\X{ܾ 6%:&NpoOd6$TRUu 0R˽[>oh;kn"*|F6&H+<C-װ^BGZEOFm['>m]aJU-ӷ|"hwrZ^3G=p:!(&-Ďգ* 5_9R7 Qos9{nm}-dr]YT\Knע ѾojɅ1,+Ɗr vٟf*0�[IYDA XY"d;If'b'T ^V3SUٲAoS�$uCҪm)JA$PMt% 1J+LkߒҰ$%\4U4:, hZA ѵ*V?tЬJ?KN=#yJRk3&sHF 5⽍lh}ӌp?D)I Tx6yz)(-P ,h e1jH(lXg\Iյ<ʰaebo;FupE֑l�! t@ו eA岠ٳU^N%s02\ͽM?ĽmlSPm倱Q?޿[?ξ3׳U�.Oa ٷۨ+2^\ԋ z>R{#|F=cP=BB$_Iܩ_>SM~Ӱڟ=ۏig.Ny$Mk6&Gkw�%f |qc")駼Uz'\6򔆸_+͛@T9Ƌ7fzΨ<$sBu Ԝ\GorB4)Mk 'qn{T;SxǞoźBl}O3}1oc^87#}]X n&=~o/]ϭ!9k'cЗGECػ<rՈ Bؽ\M|tk;0g b4ӼB|-n|RC^5(ҧʷwa➽W}yF8Ɠ.~;쒢^Q)qOMB1J'tn 'fB:$;+' 6Ù'G4psy3Zkh* !]u<5`[mЅ}}cF; UD (#I"ؼ PwѬ]:xgmp[5,pkVz!K[_0?p ~:-{>[i=u!BnWeDI ?ҵ* i?Off=~<hsAȬBxVQx(iϰU^) ėI!VV:.tdO}3 |NsI)Lj8P D2C.Pq:]Ίkx!KNw,'zmͰ)Ԓ҃VԊcCEy:$ r uLl9 lQni?p76%pWmR҈s`89F2;P%[ų pD=`py S^8@l\rѱйn"N#=Z?`IS??hGOA-S4b| 4Y>*c(qߖ.280r2eQjB =9-p9}[`RXO9F#+O87M=5ÈfaGԳ/}CQ9up1<8J9ΡV}7{' I+I#$=¯Y[ ;y*8|&' -ն)|ʀ[YT_T@[1v޼~k\=^ =3R}uF0z7<YG߽i`(S^ ں]`U| ] К"ۂ�tKùcaW<75Zμ맯BOoFTX3Cbf4N6&.|SS Ӗ˽ifgto ~0Kk#DٷWŸj/ݚCkN/n}U8@'jmhg3-Ό<AqIKS`8]>)lLtU%T4ҷFlU%]#'<mE|<m $f(IV>(!r5_Wڱ?kYLg4dM?Y}2[CDlO63NfNޮI"z3|_RVra`ܟFʏTdl[,R#\x`|6 ;L"B2twOv5mZ U*s*+>գ(O7R�C{zO[IZ7VZFjQZ|j YR(�sH@ZSzv7ؔd{rhMtAtJvAJ|i}l/TTS;譴vLW2U?pF{1UQ5X \C1Cx,ʏh,IyCIVmLiu%pI2S[X {C4Y㵥)%8FH-PE~^yЁ,w> L^FWQT/$mrif0pLSmD*m`'Tyi*>?O =$;zOU*:/Og�)zMukp`~O?unh^4ֶPl1ݰ&eks\ FzAC C`K&sؙV6ã k루^FxX"= ,Ń0#Svjaއ4`q&qgc(J9j8e^ct38RSL[΂iOzb>T+Oz.W>#H6ӧH1&:ɬƨxƎ# 5;9t0 |v+9^ɀzuRfwJn5ӊכ >nVklPm?a[ڸSҾh GXO@*|?Y$tD/s'ggQ^V�y$6 5tgv}^oԑ|U#SxDm%YF8C�?C䈍/ ~*LnR&寀HR >ՈBOډS2ڇk'v٧�i5 MB9U!W;Yp[NM?HQ Q<?q|̱̌_b*J7NYmm{4Cn1_貪Wv2Hޝ\w!fhX<٪f aYF Tι2(ו�\ںN#GU1x7V)_琗=1YwFx88>fIpX v#ZfL� ĠBv6Ui3lytyh<ϫ8A7|T: J(`M|:X6QTALѺ-fKy‰j3o&slv|=K�OzX#³ _5bE vy#C~lxC 6^Ak�> wzE]$L\Wxb9n V(aK)̵UB{wP 8;׿WB<_r)2_>0xJ`P?6C4leM  {;ϐ6�Z #"Kz<L#2?}u GcDϘN1gУ([pmA bAηx\u eBq8 9.<OQmsS# #uEĮ-".<%}C'EgF-YaKǑg1hwv]0Rf\!3qxV~:mw9vmr^ n΀F}PzEA7cg2cR>=a YrN XmurVxCM8(Q a&B0 ԩ*Q*lfX蔁MJOK!{%6fCl0= Rgonkm) W $Fv"C=wڳ,<;}|15_<ݐW'%3GBlFRVFSӌGvsec_CM ,zC yUr* ߫k@vy\ t{|Tx\2xbݴ+m}Қ u1q. u]/ӕoK <PRL_z(aX$n %PftPOɔ•=xEsΰH O[(E#E2rB./(hdxzzAdc@Ќ4#=A~MXuu$d(m ٴŎMz0ǀG!/!Ysj�h%ɷeb-WPNEf@_^J˜?C0px}nq6B4 sObOΛl dۏk/n5w$x Eo}R2a;CЄW>',G8c$y=21XuEZ':P4/ j*ϠtjT}9lXh-ȗ&I잽.@£ğ2d5"&bSB5G!¨C*5@V8U,soQ Üͺidՠ Xt,6{Pq!'nT=wG!ݨUhLI@RG[gݶp,k_}rܭXmS)Ѩ>AyAW}\#osZ 6Zֳ4 }6mB<QPVn*fFJ[j ܴs$$ϊw#r=&K0)>q뗝ueR¿%~3Asc V|E_ .ь,[B{|"H'Wa7UJem_[;4޷x.0]mz ѯ}40IMM6g6HoR<`utV7ZnO4: WYҨ]+dݿog{G1z16lz6P:M OZ=; $}S?{zz@GmL*d7Cd79ETĿ˕ [Kui*GUvXb׵Cv[ Ynw$ O)hu rb׶C*)(w]x &Sk,5orYO^>Z5kE CAפ,e Y.6@UcBPùSoOAU3K!nc1O܉%@%7zaV26J*l26oF!g3b)U|14_]"d5o!YY8!p*ԄN3"zƹ\8{%(g3BY1x[[E e;a°2o"$c-Zjdwib HE\e__lMcP~nFmܝ͘K wNېF'X~lC LZKs{$ =G:QU ZrePFEs򻫵gtdJM^^)Ϗ.E B͞".&˓edbUOckh_a@`c9r#nH9bx``q2ʈ,5nt)-SOL}XOU0;?o~mV|6w7ǫ<sČ:8r0Rk5S9i׼ BZlRm<5 ڏjqy]tw nR،ksm ek~D, *'yp$mQRR"sC;(9G3too4'&$TW?^ fAqx'HSR;DPprXjTn/-qĩr&fξ^Idi5]9%2?W ,W;"#k~ y1{OQw 8�p"b\fm5䃪ӯ*'lCF OceQBZPnǕk'Ƞ6M\G);cf;g*,/S.wO,c f֨ƍFk0kڏ0h;Ќ9c M HVJ /qE?v?C!VCck&JËXS,qެC%n<E%K JGdMAgfM^F�Nl5{YѸTu \ݘWzrnZK:$lw/n)||sp'Їuif1)xm4Ay_GgL(s#+O)HT#PxږWbv?hr5"GHR/<tl_WA^&r)!DC:a -SZ}y%:!vm PKEvMCDV_ 񅰮ϰmCЯ :!i4TD`iBg;4|n\`6b+Wߣ/P } V9GGީ"XwwusnW 輜5QHBp8,ߖh&JrEf&o꿑||xA?OmNDm}6&$;UAzLA艭e� R}E\OSGyR+f`?c&d7p(a9C`\ с&d9aʉ}�4t=G |qwɋp%筚ܵM<xƺ#UIq4V'?$r\qAz_>"S�.kBŤ8s}59 B썑VTu3[8`XF>{_^*~tXz~d)(^ys1iZl+=^`["NsP{~X|uB+ *XPO1qL2 %gr+%'s?/y{8"Z w_Ɲj=hM+ RgKemz<B^0+璜+v4�%pQg뷇p%L"a|b[6/#sNi*nv.,Q r<\%|h'Ha,IGF? ]|\nx|uN񖍯ju4$i2YCu (uUʊF^#u :m@WCm4sJD%WuU(vcΑJ<'",\*6VpQ'ФL#�iLlkPofP^%n]\,un*�@ܩwDr3q5ыl$$f>Muѓ G|$VO5uK(m|d]n  tRr`_=]�%O$ͦWI[x~߬ٚM ClAobQɃU.=C"&S,k!2+~G$H{IND`;V?Fa졟ښdM;Xۃͦ!rLO翙a"X?^xB%Dn4aYa׳'p|UC� =4b| £*M(.W�f�/k}>tϱߑu_ZoW~ >>}ѾśNY]O5̋f(uH V;G.͖۫C?4rl*,O{+Z ^׵[ k̶r9afI\1Ld'@7SBh89*@)@@ߦؖȠ.mz5"n�Zs|=~أg  ؊Y}A[�8Α'~8;DoZk/_3}_Jp1 m~!Q!G+JP)�fz?R.?6rB0\H}.]B0LR۴*+,L$ jbH:AaՎT>?nTqvW'*p;S͐ wXЦߟYW$;JMtȡУY@{nɒ}xSc*ڨ(ÃpynqnumZ 1?:g!D^ NF)ƈͯ<CHwdP:Ĕwsdߜ{0C~wM4I �;w¡\/e9;N/'ߡ}�?ΏĖ'e#x[PHHDϢ:i0DW5x`]2Jb158%==rh(Oͷ.m50*I� ~cgLݒ9ݩ^J'3kHXxO;_HqvB.1R%xaܥL `Ƴ1ؚkNV (x}lkPrN]o] n nI2￙(lᛒU*h9i[0QK毯C3_(cY'7R<uP쾔}ʙ}v#<<s@^::<P:˂ȓ/=bޜlM{Ѕ/2hGFP-M1vkHQ\n- ^w˨@ґŹH<q2\#KLeO>Kd?Iv"_3X 3]?nU>ANx|g ADztOm_&قB:"lLNd`tl-~F()QxI?5V;u RiWeÛ9j|}{G(8]53$`&%Z7z٥Imx E!J^qbr#h@w??:}6QSw;44qi8m$fly^%uϷ\q)F$%>VTy{9qs28#dcR[{ X n%,>*}K/Nn]7>G}iK_}1pYR3cI)mWthݸ %,uȍ7�b)/O9Fkd-AvɄ4)1Ru!>O=}\  ҁ:zv Կ4c9`Z: :.Yu]cp[N]G8 ܨΰ}iXoI],rɯsRv_Zm h#yq@i36ue`j׶F'u2msz唐;v;nk �؝@]sq\=�6Q:(.<Fz!JuVW.Ǩ/sƅ"rwaMu2DG僐r.ιѧ3c%"&'ńϤh3*7 x;mD7f\6٣t[R!X. <iN~u\%Q_Ϟ"3̺*囉<ȱU=f}J"0kRb6$`2nD$qTn@)ױ,7;K|cE= *$[a?~V~Oyi"ꜻv-qUď>F,~E`UBPSxs kȵ {9aaR^),xR,3mр`¸[G%[32@!D� "]BNi9)%t@3iL0 MEʣZ}EKtgձ櫥S 2hia{"t:7O<n-__D6l翯ҊG2?΍G<Ș(J_'b.{i]sQ  mVFs.}(p H<:T8H-^7[>ޢdw0ct}7ү3D)=$:?rzCkGIM$z4*,˨r*O])ۏ>~r�F?hY˖z BvaV(dfg%Vo9Sv}S #cK̀{5gb�i%JW~ t͠{̟㶶u.,5t~`q_ f~wQdIWv7y]CH}ZqΉ%f۪[Ыm' zJ1uɁU1OIaK+, A$Aƪpp&~{{_OiIO*|+dzmLe{W6ͥnϹF^&C̟nR"xJ3е`Kl8 JE/d<JRzIXꀨ2ho24m%N~΢iG[0ᩢ/ !(#@.vlg[<O[:Q{ҩ@gl/mګLEYA*X CF ڌ%"EQmr<l [:V*[QgѼ]);wJ>BUis5.^(M5#7FgH/n J+1HM5>iSn1bґa`>b$4- tTdk(dCcaA+wS=\|g~OJJ6N(v.. `?rSX Vp!R u wѐy2j3h}'3ޑlX - T/qk]U3>;ns+yb{a5lNηw^Pu&,D o541I{{!릆 aLm;q(>EsBQ/:>Ѹt"S K6PFSHV4D2Y?6\b牟g&>.YS5:!M_HhbgY?XB=cu"|Xη8 ^sEcO((~̪t vYRc2P w^3Ό0LTs tXK$aFg9e\~#<܌lKƓD2GO3j`o:P0?D_!I!D(ƵӐG[p] =*+8d9ȶ!؏,;ݶs/RbSH11dcChYkp2F*3S+Ўg~1xP0т9J 8tFү`SO,F؄r�nȾkHHO0^3ܨbꚞ��AGUҧ=N`Ҭ\4{|)=EFXJsǞ괿�PC(m%= ;8xn ; nwT|vp+r/nl "1V~ . ;oہy>bK>S;ۅBQF8Up7}V rO x!".^Y]:8-J@2UCDnSF6`uu꼋<>`@UӞP`Q�*In Z항%>ATRhT 1p1eG 4Zڨ%D (I4槍X F'³ < mWΪjT#:{ 6%胵ۀۄET GG%aL<pǀܕj_*qt.YJOƦź]ߨj`.v]3݀ U}œ) BPv6MU<$գuH#fS?GspIu+~QhrJ#1<O٦F://ѡGK"<)"<&< Ȁ;xNksS]u8t&t):A%F/2JYU}/!A,TC:ݾ#Q8U*25cx)ŬKidG3.G#̐"iΑ2r dSz(r-ZQBGv:?Fޏ#4whL2"i#bƣ#0$Ձ={TK>}vȭL*,;ѡGLF&#r<WBEu1srAF(h_2%.}BDee=3)΍L˒.|QH)$Q HDo$6a XR�_1sH#Cc#Z+h\z,̞B^&A4XaiчӸJzY~-^zdq'K^ny'A7u;I-[gѷ-}FzR:C[c3, Q\ 7c\?2L�{V5/]32i~7UP?4Z-B;eYTß?矲FjT&Uü֚ZwGwy闍T?1HC .!Ab$RR5R]LAF5 XJ֡ \^4գ^ @yE봝}Խ(T�G6h@ź_w&vwřюlVD[gO3J?.ONAxi]S xT#dG[[8 R6_Ucv*0H+[=`UO*t,GѱJ:,ڟFR;x݇;`+|/Nd8>=�n]:dȴB(m1LC%VPfMzc kmqlQ7$ȁy;-d5>m�s*wAFI;yx J:KpRx0:`"sqkoxP8`[h16 !E45${P � L`JH#.-gѡP� SWLGS~hЕi lO6 D?<LĦs!x_&C7#x�\zn"[N+b(tj@ywA?1Qg)RkN "ZvQ�JfcRjl!ѡ"3U!J{? =,ɾ dvd_㒑T`aR gaB+L0  a\!H]kZە]P'PTj QˎfѰHD\GO-6c\<|wvs# jyQ�>P.Gm~]pàQ< sKoZa]"Sl>~j@~C6JOA7h00A×w$? l.E-Y(ETֵZL\Iuam=:4t0D# \G+ࠐ =|dCi`yrl4~{~WCqb%|-xZw\UʻU7G1UzLD 1>oI]*WCom 'sv(]F:qgsB{okj[ol/~;W@߿M N9/NUϕɯy: -tUCi5ȿ!ڤcm6V7vO^Q-%$O$ʼQg+L~* ȹ*- ]!.=ys6;�642}KߘX@SĘmGh˯q$u.׬Z]jpngd;s/8~ws߈/b:-p/(K^#9X%2Ke#22pEF21_B`go2PSPF?xY$~K/A3bQ C5 z!3uGgڐR*;X6!ev3VI{.V/5h%XP3\zRIRCiI;D^3e.KuP $LVV'(H&-{SoƵ{&M=s_!g}ƏWoOaJ|Ok y\iþ-`Efe .j)aE2FE\uz{9NONY[0di0\O&\*5~-1x-z�_8bRJ4yŊgUiȦX"{�_qdN.t/Yڿ΋Pق[nBs\..;gqس!yӌ"'kp` urz<BiL6囗WuB?p5{5[X*ʛ5yǁ7P@&0Jr]ky,m}%<ۃ&mrIst|{ AbyNOpɧ'pZafhuxV0<&D숍2&F+tՇ>15{(.vE:*[A^8I"kY=?!<Z[]0іM@ui:-Wx^'T0UD H@Ӟ<'?z2^Zj _h<ohؕe-g8q`1\j'sCFWtl-G~2a&Lj-%V�aj߂Z]:#7)[rsoA Hx6yqI;+ hr~2>0߾ G$<(`8-׵'-}McX?it]f+\RG$ c%%34ya{'- / 3CW'SriM`ɱ|HiYn2UH+2ln%Wn$<0cĆŠnq1cxEv `jqX@Za:#Ey>)k Q Ƿh9[8%T(SF. �4&jyrNܨ>~Υs<){(tWg wAgו3h|#8zYg?y~X4bw~hgS̍1 d,k>^Q-.=]C~\(nx^!uo}$4s*:F\#lz]̘l=r%l9U/ "붜hx$dGLO\Cю&v;64$NՄT!}`DC(Nt9RXzHh$UH.D+aW(ZXnZϫteލx`//*;Vk  /g%cV X͇s'B)Tש:R5KF`2�/ ^5ZU Th x'OtDž~V!!f=1I|j:d-c7 FUzɌkEj oΩ '&*PbfoCIi#MAjHDoYIu4(RjK%oC6M J�`eQ2ЩVrd[%[`&5%a%ogusԥ}bx 8[:Uur�nZsm"`~ÂWGW\瞐DQ}i"=.I* ,y[�{Ev/RSjJ֤_;R2Iq %<4Gw`DM$7-`(I D„;fUSD\Lxٝ1rp>'B6ebX(C܆"`i&qVDw=@\\M 7f{gq#W0:rΰ;e+,3 /7Σ񵅧B00˛8b7y 6<?2b9B{A/{Bka+ȽF 8wt^5i#c=I3KY<UQ'Yr>(L$傼Y3CE˹5sB멠0XW >xbVe=Rz>WT))SSd|?v/ F\ٕG38gn? ݍ^ʲ汢R+ Pp잖^k-93lm߶T d3 \Xᤧ&`ԀD54u&Y;9ma<$eAvcxךdS0+9 0 Pիwo=(7.A{DXCe%;|_A+XGVbReUG/<7Sl c\LgzY_2 Fj|Mh-b"L  dIx+ /isUd0~zAJo*G>6.GHG<F9gqن8U3Ӌݟßr XqױM ef \Sߥ& 0{\ JC@Frw~O`xZ) =]:,)^-~mC?%b KYg$y乼2KD_bA0~ww7/ȵ;T m0뫁BC_:M�; iũP1\g#1?ľIq 8*VӔl(cz7l9,ұS j̭c1Yn|$8Rބ GdB>0e69>E�Sn^BpX90Lx~bSSSSSSKNK^D67PQ9L\}(LK}\xb K' {osX8Xn\Q5:*1RETƧ>5wɊ=lc? s{QiQʎTrN[!l90&!r;݅Qy绹ܰώb7!6Mve*Ն㮹F ! $l\&6do3NIܹ`;�m7m$(JB_\93N$J1^&uSghe' 2[ q96ӕs_{>i*~ O"zP>{|.ot[XE@s[ޅ>Sw=ꠐ7*F*d)& 00g>LNE gxtQ8oFL#t:hUo꯿L3m|HI1V~aes`q'AR $\~zLHd(<j,xnXk!J<#v.x/7sOװ7k C^;/%8#tºjwU<|VBEnW,NQVMY|BD֡'تP,SѓDrȴN3z:JE{7@:NK).t'B-Xx^/@9ňų+^w[p5 � ~ώ NJcx ;L:,L[bQ wS+M09D &ϱrG3ȍq)+4f{{E]2c܉={xL%_w=(Ȓ^=zߧ_g!=\ܙG^)~aW iT)S^SS0Lj4O>c0fkAv[]SKw"vO2/�RjK).LeݾЬwF%&&B5TV`?JT*3 {`ޜcR? l%UM5dר׈6@mO)f{Qነu`M" CS5\lN925FfF7R@(oQ>=ȾQIl=yԐId83On<+F % oQ(q Y;^$'7Afݦ&XLe&XJCo.ʏm-OZ/phsr|Èc*#=!5ybI$̓j~]&dPbKSBGmP<}\1ӷq) *4A.#N/ӧˤDhQƆߔG7 @_[)'hXeZKu`Hw8q"ILP$S=\X .~<y$UQl%TNu .gΐHn !IrUDJ$w^Q%R=אJdnp3Vk0(%TS<$+mMXhgUb 9Gr{-xR },O낥Y>"a5�bgdt/�&^;N55#>AKѝ2'dyf=o4JR j:H"mQscy|1R}M7T)*U4]fw4IzR40{iYS40NkMIWVE5D4ו9^J"7u/l 7U$(3 IT,tRqd*N|>jXbDV;�w&'^4Ϭ^TM̓Xy#c{ҋHuFg9J$':P|{>ecl QijKa嚮z?U\I^FJ֒h]4y U>?Ϊi03 v1K>gyPXp \C9.e,ò:|k kʗWG;Xmqm^B/En uqP%P3>ÝRJ+UW ԐoR\!7[5c"Wi|]3xC*ګvS2ΛnJV¯B +v̅5oAl +v̅2fږR\Y0zRn| _lcBK~ ru?t/L3ow@s Dpggwlۻ}jbwO70p8l$wXԮ-XǺ_e+ۖK^g֛m>%=NlU5S-WEbp摩8mU 2BAvhǠn>$) w56ze Q>5u B9w.0q#&qEPj-ga�$qד,*UIh+  `pW|„CuGnT BhU cDd1)!s{UfV~x”_JW@xGxW-߮-nA%t$hLSȮ *_,W*+pjzTY9>4xb=7Ut_,>6ŏ`{/<.Ս.%HZ6 s_#1#ȴy0z 7B*1]|u)N3TG3Q2ܹˋ*`GL=Lw(7[mRWΧ;C\X,qfD97X蒱E3Qθe7,6T6vK߈}.CtvOJ5 dR߳2[De'bz8صǀjZ A%ݿ=Ervd"߼=SH@[]_,`y?,`an(ItKՉ>a=5íM2H[Xը }lЃbaӒ)PPuǓR&^&tXS1z炾1' EW4)T '0]@S4Z:m{S=H4l(S(x`|qy5Wস v aOzbB`N~Q S\pDZϝ)Zu}X](R@�]0R{ZGQ8K�}k.).`p@)G>(Yx߹O; ]HSVMnA4QwւLsՅ;�2%DZd^4]]9,4q5쐡b,NFuh +=?ߺ2+HV!G^..{t!!9P'z.\Tg}HM'D U~_R:~jZe+M8נNf!;W^s_{z S3vL꒳ "4ɍ:*|ڹkK9Ž,$.i=L+?[;rl J=wMB6uZ;aKFۙQGRAM *i�)A(JkAНd�?mEq#LH01#=5MH�\.\$o'9 vcЭ6q/,Ci<7,1s3 Bd_w0< jօO+By uzR9WÈ7>-z~Vz\ǾLIS+N)|L#H_)&~j9=g4_3 송r0)]^)u^ "5\þQʽ1T56r'4 2<l5�y8kȎJ>d<5x0)7A^9M]MqcG[)'<;f P~KA2 j_W =텈 +k k!D{j+Sݶ*_N(ѻkWqXFJsREUH"5éL0*H}٢ gFSk<wM2hӺOngxϦa$ ӕ _%T ۠qT>T3Y(Fn㐁AЀ$ ŎmjxDdTo"6 pz pt@(jsT y""~z\ y^\1>%@ {LotY$|޸on kKqT![/tdYD_ ``%HرV_#fp9) CX t Hר׽VȳG(Mvwn [߰D �(8l$Lm崘M)m7! ZL"!lgx5`[緞ZZ3Mad?-mnFsqL{MÄ@!?Y( ^\긐A!P9q-B`!>k1!ڎ XւʄʗBʄXᓼ<75h)H;kOR~@C39b 3rA[aȩ={PyXم h)T"AwRq!} 6n "*+"B"B;i!c~.rncw  k%!.ϞVL)'\FI4H6Fa_:oCA�s7@? Jks>Ӷ3-WR8ڡ]Xd:WwC`şDr5_?c؎djV3>9p~xChgKZ3G:>ڔnAR)TO`>0O@Cmv4-c<O >5e4z}9e)%ԫSZ> 8v;0B޺yة@"6<<zo)yGI0EqȇVlƯ eKt;a8ƳTOu} $l$*>-|~Uqx8˩<u<&!a{ D} )S$H86[@/1F-=_<+U:(Eڃ"sYV%Tycv%G-i+BM5_Vuf։on(8We˗]n9U3 ~"sD&>=}v VlNJi;_ٕnxdj5zVG*Pu+d:v ZRZ5Lz*g̩NG\2n0Ll9* y6)I[Fd>@S{}Iz(>x6'rh.o7\.MB\lA5y&D_$cYpqN A|.}{7"_C L~)9 uJCY8"7ţ8sg ~(H<'漏9ٙ,|\~cwnD /+\ww}+H}2Ao 2!L-w+ͺ1] `B;56*TpMR R)RT r/3䨜 g+W5^[5'N5q wDL6*n-$$z P*cKĸMխ0RS ~{-\׀  h_zqy]ϼ0c-N6g z ,>xe#&j2I(L Ɖ)kSWA^:_ O=u9I"+nC\: %|ԯG+ !*d;ID߬<5>02!WР̈T|O-!FA sWwwR㼠!~UPecKI5D!=)k`UB<΋$,W#p9NpmC>ی`6c ^l|Q6X^9y<:<sbylЦK4<VQG vxu4iөSNB;.[Oq6Z |3f}MIz}`M]rquWĞDzh~:xENjw<T v</jJ2*̽R֝Lz3nX4srZvpc)s;ɮ.x/NXܢ@~_BP<ql1u+@xe957[.m�h;5 Pg$Z(OԺч/PÝOBuN\k s~=x]wTFJ4Cfjh[/PB мR?8aOyHe_^\7@q\aCp.}g<CMU i#fBT% M[s\P^*a8HXʄhBu fP�1v'  4ʼnHcpv=Nj:9ύ]LDϬH sɄ J8,c#ˈb2y�~Lx #TQ&.[:v]1] f:>W~kJԍr}דK=f1'0ϧԎfGڎ_ }RC5tT?EM 8PdyKުg>U4_- r>UZ_.b(Bu 7| 4Qąo@� <3#/||UҗToTUո_mܾҷI4긹}d``sŵY(;-Y:�bǩ7pи&xmj/۲f 朑4eOB~"% >P+5UlKq֩ؕU`<+R\_9xqAѹ7!0^ Զ߄pNYwSΪ\Ȃj7ΤGvZC =DqAҘܐmO^DT־UԛyvͽH\&i83R l>l̯Fm"A`Tyс;dGMŚzcrdc 5 UAZSu&:vZ8Gl0.z& 96.QᓌuEmnOKg(1솻 Qxyxs2Z%JF`}$2BGqQGB|L:*~R!:oCURH^[$S|&E`]Pg#Z1#"?4LnQ -�{ԀĬ*OSj .*�2dgk @NH("Z#0FVt�{`,}p4N'1Q C|l?k]VVΉk,.Ki+Jj R;&lgRxighu'l`]` SSӿٯZopxT"oUh0p.Vׅ"Rp"PM9:maHEk˓9;_[IOrӨ-_ v?v2Z䒘z/1/]/[I)Ƹ>ɏX\'\g*27>t8(}đ@HUOԬ&+36̘e1oir,Gq%bgVVn^RhBՀ*ޑgX["u �II= 8;*FI{:nPB EcSs5|>IF<@b 1=WxqmeUC#,xX`_ 7hKPZ$oɗ(:AI^FDci(՞!P7#o 55` CrOFv/<ڍ|͠Ld"Sg$(}6UEg9rĕ*N1.%| 2 w#(ze j]d+/h qkjQJ CFPD4e;%s /؄w5c^"3ÃъvyMPzYm9B̡vXР# z1A4$JP&1Ba6j -(NכEY!:*y*g? N#:ﶧ )T:ObRLi|bf%D x#C*%Sd ?(I@g I8~_HNOʧ6 U Q0BƉ!_β`8T 8ٿ-g8+Tݍ\,_6rշu_GkR_@Z>f~hv#rnŗ@TQژh`':/U :=hb;WA92e,Ovy֥6zEE`Ħ �ߡH6*a1pAy�x*2@y@cT;�=@^L!$`X܋>)B$@ɩԄHbjYL0Gf̃s"˗10K >:G 4>>r'Ci6ij�bcB;&_H8~iQ~/+5suj /�xUS8(kg:MYHшӧc>4ݠ6jp5.?݌܋־3|G)FZ(.U bTD=Aé^ bL!<!�C-B:EZ."4 ClEG."@d#RDDp2v-H%#,`DEh:@>[BR@Gpæ:+,)745T֢Y0ŏXmǗoC+rt̿r&+J{:9vasQe/ %x\Ւ)/&zYM M s2noV?TM/ 2rbk3p*kk(~;-Қ1[nP:굀T?mW: fX iQ㢒h]p.ڠv6[\Z}�YUƁ e@8-۰!V7/N�L5i:ZC&;pjMIu/fCwH _nֺzǿP:u?`6?C6�xKku 7>Z&1o M߯(7HqCw/ PG//ۙSR'4jx^jM*<j .K{u=9{#%q8{|E&o{7s^Rw~O¾.`{Rn]:L{){\2<plH׵5 3|VoGc1îv՛X~V<`!+*g3EKvjrЂ? |O66q Y=5fYvVk),6j}hv{ޟY7x |P[p_?Veef[jS#.A,ii^Qn#%yDƁU1tBɳC<S w \RtϠv+L|Feqg{ը, x{QbAWSMZ}S5E_uUVq?FAՠ|&)C:H׎'IN2` @_;[ޛ^`IUr_vnuXM#ljfIysCR,ay-^w~@Q`&D<jz\θ.n@Ⱥ{EZ_7.$Op굾y{V,({z`.h#bj"g k9gD*zkKROUR=dN3Jd4LfXJdbU?%l @[λs/N'0_E*=㲍뼟V 4,Z1%1RItҿMUD#3@ Sk%«,NeWb!rzv4P.!bC 3K(객zCc>Wl9Q}ʺ[gJWS>`>CrIH29%Ɪ,+9A\OȲ5?!O,t[b]|o.K4Sq{-Vc}]肮tLG!qfO.MW٧l(aw/`/.Q=[{ssF}ub߮ED:BiY) w78[�Ŵe\1us3BPX욻גnRjCټx_"Zx8scp^Sk,Вomygc5[KZ),P4QAն>*Kh!fmfe/7~\ꨙmؘ+yN<bα5t(oDC<gmZ*fUhv;:kz8uiS!7zmjtqi CbsD^rAHXuvqcPVoLuPƿpƔ%*a(ys8NỼJhR떙N?O|3_Ib]VN){MBKʬqnbp+Q)geN{DoʪPG\ N<F3=:ӹ�kvSc(ºH=(傿5͒|G+,P8Ysyr]aaNK*=T1(/ús8̔{\Ui*=4l׋.xB@ZReTEb }F5Kj{ |S.x)of;KlzP2&<h0W}["33z^*>3Ҹ !yҘ5)̚kiK[(I Je'<+;KHSgJ2ʲs1sO}Uq}bUk&eZ|s](=/c)][NӺ7OĠ򑒵U۠-P:l`}8bv>Vg,`bQTeĨ13|K//\7BARP̻`o},0jZ?ohAE#w/9e9q-%K7TR68s:SOȲvƹ=X~ G[_}Wlo^ekyXeɃ=O&i be 1TV?4R_CXfs 80aٞP.&Lyι(b]O¬T{+X3UtV49HԪmJſfja4pT2a[4N3QI ~tUF{a,XlT vE}Ō9Vu}p�oZEѻ0r7ݢ0[#-"j}SZä~%Ͱ'E "e )޽x(N7zz)1+e94ϞVKC+sOvᅠuUXGLmMlN?G7^0gAob;֊,>?;o4E'AWӣrT'ah 4"7`kk|شYFHOCR:}W𢯌f;CJӭߏx_XKv(#2TEl\=Wx9obw]N;c=&wrn$)qnd<*.+WЖZXKcW�އ WsmlMnd"Ba9ɀW Qpt۞Ai _tр.Qm]5T{UCf4b7UݱD07يY2(#sPYKT0,x4uӜBȁM_nJsBxObZ@.YܖN5vz\8|!`N̜7%e= ֬['G!2UӮ2Ԥ TD%@?`\5 53g*AMI:ąS@`_7Dt]m@ۋ7SMDcGk̯#7H"?RiEm6U׽~_g ZdX2)?|}tlqM  <ZE�\Y.vEGx\'8ā&Nu+G}g~gSg5 C3M\"H:JEB%bBb�q�53? %9�Ż$@ {zo|KJΒ@uPr P~΄vvs5\ԫe|hO~L9<Y89E 'SX@7K(F+`%u2VL:2<v?+>fRώk7 } q,<PvZY \\"[st1V6H K'ܭirVY>^:2j镽J2P'(NoF-NNFJ_G=[Hj2VԀZV]7t6zOwl`ߖ AS_"{Z^S!c7V^u7XQ:%?b*ٳ}}[1m3m �Q s)X J9j̟ efGz>*ZrŲiB҄dhʪ&vT*B,aWPʺZN]~DOhV״9>[unEU m|{i/q+P">jFlﴝdiO5] U%=UÙ _}~^-y#Y5^*6\|^q&@X.5enV#.b|V_YZq;-bx(2WA,Xa[z{j2xAca:4T%)nD†b * %S πzGRx [[%擗btCeS|dw`0$V+UT3S<i"ժO>VC 5WnO%-c$j܎3U+R~5;œgL͟쑑P=GsrMn<(} *DU);?�f|ݎɩ(T];)e{!FIut!, Ic j'Be}@ Ȇjd2/\1&H e*Z(` Zb ,PY'i0V0f~u%b7])Gl(b[^Q-!(Va}`m, m ׆un8lz*5 >-z!|WPֺ=u5QTҐv!XSg8X2*e1Kxb"^NtܚvK;KQQx[PI05(F E(1MBd/S5^[mFXa  Ԭ`פۋ#KRa�v68LXFAoJIݫQ*)ZVJњ4nJGq<7'{RIe)k}fkwZGIB&C>WBwy1Tj '(BŅ/@h{}m'MϝRXT{]ќ~qa36ivæs(MxVnlvt=_*h@6 s^,!k-357? UflwVs=Uݺ5Dm+o"rJk*Y{zTո9(WYiaW9ye"reu9(aMQ*xlG/&p83̧ }F6:6{O:}M^"YeQJzRRrI~~MAj?}ĥ7nׂ?jA:^ v>TI;Y QIR6r<p5n<cATQ+h:&dbEV A.Vw^ 4%%ͺ{.e2]O+l~K�H\;t'GQq#> gJfQԥ̴h$I!n'm!s(Ti՞CU�蘽*3e1âG2 VA2 K0~ Q2l?.3UgL (Y @(z#v&<aNw k:_#r3dU>_&UP.R8շҞ|j>{06[o5큽_,Wx #`D- 0-(/ؔIkTݝO%Ӓ!~J%?]!jS9yYQ1vQQ+I̾Ks(F�|jSVӕ&TM/?x/4HN�x>7r>םYI{ǀ\ lm@Qz=~YG~8f(&4lj!cltm+\sAl9bJoB0r8RBxQN!. JMn # kl˦Y2Sk-CV�>٣Ɲ/$ݒH;p0Nxr8qpngV_Qtk)D8dRAX޷Q!mWAdg)1wOWӥwY/maml 7ԴZ褑ؾU:hmMZ v`K7&R2`O^u;\~^o Fȝ-q96 \֖{, ^Z�5 Ex\eɓqYMد<~[3t{z6F5Opңd an-djy,%Fq9>ZScD+[6 KQ tf)m MoB[;% +rR M˦�;=~XG5}w~(ҭ(yzIr;e|[6Å r <+BKB^`aʄFB^678}щH<Ⱥk{WpIy$pF afymLn35!>tM|Mbz <+N$e!BW 䉫Uyr^~*E{Jޒy yҧ jKhARsVO/T>O1>4Вkr5i}tD^[-嶗{QUJFgI̧(t'G[$t,~ff: 3 D,4J#crUҭ/; XΨo_yɍϔL2X`1oCH# {@zfDxG>EB@aʹǚZق%w ٟhZ$Z-2a23aY?-ֺ9B例` ,?O9eo%2+L2%J'Gi[N|xQQT%VCU1JǡajvOh*ڬM*!EJ肯 I^ZY6tmYyh6u~KJCPO52yn=5Jvߪ2oM M⒱zu_ u}uKƀo*Ow)Rb^*Uo{ONI's8_VWjۏ7v\MRMM8+MNmO,N谭<>+$ u{_5N�/R!TSn]SmVA"B#&=DLx70?VgX& A~o|gڸec%l]XV-?Sهo oSw|}^ cO_اQZ G˜Ju֙(}60!}at>c+ $g ]{Y.$VX.!~L 51 nuj G ,ܯ(V\ msɍ꨾g'&zq( Jq֒ff,HA{h$sN/m?-Ȯ/nq@HXdtB` ZYK{o`-�LoƷ($)%A(W%yFWE{ANB2&s>Ǯ n[k.X(v7iLJաd~ $ήAη׼KSGI¯vt%H5.ma,~6l+Io%]52:B^椹@gZ:5S]&,:?"^<qOIs;>*!s@éáUw]i/x|(H#G-):M*:1d+dKqi* 6#&&,?RDpǩaϮ'.ߟ?;{bO,:ٚf59a[W[Cr W31is7cnBUflR<6<tuZg:j6bIӔ\Ð;3Ս2םC跼 |6Ve&߱U~)K4c Ͼ7U�ga+?g֝oM5Z <yDNRT8 tSUjm6f,*smk)Z(\>(*>}EL:~>[5f]WCxOC]Y \Kah~cEۂZ~@&ͪ,+? B`6 O0t D[\PANΜ 1j2禍P {xQѼ4e1%X4,>dhnjL/l.y*F;stC�Hg/-l^ߜ1*0{#f@/jZ=4'v\ 4~ ~ S+HPѪ10iBm|1lkEi!kdߟfJDqoG61sV gʺLî.3fڃ ]Z4ؤO%@E<s�PW +N^]~F5ٳ$볃2׌ųԮ+Oh}`[@TԂۅHլjW(W6AZkih?Ԍ?HsvCuaeߩ#s}Mo|#ȗC5#fi-E(F<Uwu`c 1 D|TG͚x`+2%[q`q;t۹͒u rO sE*Uٙ||%y}knn XNgQr8dz�<8޴Dgo܄&G) ;foP�~p XZxξ-zqxl>c]D2 ǝj ;i\L0,pRǭ1AUTLꬫ�UvB2_PMtcL?~%VD#Re>ꆞWNkY'ŭI1D-Rܚs兒 d$ <)�Np'38$ŭds&WDzک\w7Xİ-2`4Lqr:~(I9K)B-'`7RԒ 7۟1^ESԒB** o[~dQYK-@N=:7y~Т~8:?xCLt'+w@ST#A\HUk:~ 'SX뾯yM}:q1;zDL<0;jA�)*%_L*UPws7s9J'Iwب4kk*jt-#߳@ȄWS00d 3`'@΀>S-? h&/cWΣΛM uPk`T#34"5䆷?{5:F#tpw[Re֥m#W:)@χJ`.T (P:#LE ͙4l*DG`g}9SN!8N!8 G>K<5`uJxaS)Jm"I1meV͘l챽8տq) e <L}P2,$9O|vVl/M#]&kzZREױZ~$@㡳2rRF�$]Qu<V'+gɫDMJE Eo CQe7RӯSܕ0>¬Bӣ g5:4j҇p69%9y`c{변dgK7fW~Ń1êV,q FTS떑؜ &g>\.^ EHs90HR[C5Ç^)hy*Vs&5?;VʖԒrHj? д'U[^ߪRr6~(~Wsō59IJŽ<mAZĂV q#g] Av[Ya]ڤxhQQ/fcpC ̖ͱme(P+;d8- HUvjX�gvmzW%F�خ8˦$4GHi vP0-R{炰pJ!k3v^⌙Lǫ{!dZ`KjFZEI˗IBj)( (hh}f3=T=.(sv%ג/ݱlZw>#C:D{)3;ԏ5O,0Byח4Sڌ ii{-SL'nqxSf'H[1PZyUo_Iytgw,qWGh-;e8f5D,ĔJB@R'XMvA҂ lnTC?=]T}u0rRLK} ½Uq}w/\?/0 "%D5{%Ew<\x]$Nb=vAW啬U$rN!ʿCj 9HΧ:µh|Ɛpaj @מӅsOyip@NF�FA<z?߷  +hTOJ`_<H:Q6iFAaC{ oGv1D!Hy p0B=O6a ~^ 9�I@k6%8`b{g@;\dk2iQ 8b8-\CYGIP= |3(M& ]_S(-zZt$;{W"k^y, iLYC]VENq)?5׽`2A(znl;t%;h Khz|FY{qXh1RќC(6M#boQ';P;4h|t½ox@I5~QQ"{t9(Cח낺�B݈cAdW.B #3C h6qw}6\".80~1jUL�N@ E>|;*v"-hg7;=WE/ Ϋ[UqLKj;PBA|9#rB;NtuOtP,?x3i2r2Yܢ3dsL8vF9tR(BMYlpyWy〟\`ٚ3uF/~#:+Wo6@?! /aIbݟ>p U?k(?�-ǓLqYM';Źp/ )Z[�o_m:;+C8)U"?A`JZG[Ykl oNC|{;Th5 :{6B'e'Q�yre=夗54R/f Jdf9 B5t'blZ.? VEo[ђd4Cd7.ΩɠXW jd=YNi߷*$WЍjrQr !l%F}E^X*KR{йM[s1UW}*C=9خ=�>$,wTQ !m8*�Zem=RQַ_9~0E|-qTE/lֵـw0F2ϋ0ߗ!avTv�p FR Շ{ͻ@ʄATBx< �R9+˲&Nȑ@YmTr0qTthx�dΡ;׻לz| s#&Bpy�?ڈb3ߊS ع2g-i>A*G§ټh)?x:@@P&BJ_zi;6wRmVrC.VԠS`}0;>ҞugX]mDp/[ӿB�??03JxgF5NםM\pqM燒N^ÀAmP5t#!�'\<@9MDF!#UP9)wL>̃ǵ]2]yÇ,R<, ^8ۯF?2/p${71b\\As ϓ S^(CB4_wdS]9hNRH n1W' AwF* /kG/#&F@JzOܹf6V&#$Y&4(˾�V  ᣿2C2|6M :wG޿6ػDzI86:hhƹ N(AB;  ~~jlzKQ zJWECf DXE 9v92ajN)ل^F {r"ώI `UP3/),Գh=mG׈ݒic,2گzlIG"t>Kꣅ 7 |"av -c܌UVk:5$$r])9(bhLjvDuDaCoc Hxz졼Ⱥ>G s8S8BA anQ*4ó_u0<@CRa4aԦ.U QmFQ')T Ċ%&8Y650. 쟖0 YTj*qC|1rKhHŽ BO~8A2+jCXVyfP(m0Rʫ@NJbpwoͱOOҹKΑsF0Yenpy#+>NpR=vj�94XuE &?4]uKr+\1؀AD1 %|!= 1K|` \%!bMߓDe.ٗBmO5^D$q~'ݨLpt Oc7t6(ӱgA'0r;?)džyD,4b|L?FBPwX }\ok838gԺmCc mL3 ֱ  }mlfuXwi_Ƹ}BԱyNfwn٘p�T̷v`ssant#> mGJ�*1~$U"έ/KBd Hnt d"ӱTZŪaU-HLb޷Z _;\8j gkmM'ä52ߴ2 YH`A,_:n+\7 z񵰐`[lstn)C8>nüpk:D>㍇x'ɗ%KOf#"90dOɰ U)Ao?J34W-+Y7I[l,l,VY:< :d٪nx^E/}An,)`yX],*z&FoO"{$mzG?Ɠ\\L*)s:,)woRM)Y6N)?E" F vCjPVUFGUA GeTrZca2c_Ox{T~SyM˴8Z6&h2?H9h`̩K2h I(D㑗 ȺcYh?3LXd놩_O3N9jfe\;i0PooK#epm1 A; 0kBRe`]KC!ʲ6\3&K [urQݬZ2BaNWw#�L›; ~TB?; #envBmޟݝv%<͏i"ti8P · f1IZ2\LsYËQMڌ:{�MΜ,zD*cI1@Y l)S:J[@:4!:QͲ65x�م]ڄkIjCw=G+`O١# q1 ]L/:[ ufo$ )تՍE_W6X 8AYr4VlH%txp+n9=q]'YgjI<RI t|D ܿC bLDH�"W-}<B3Eh(�=6큋ًLP6Se#caFh!k1Nt`}ttU2WJg{k;zU ߱8a"rnůG( t])Kh�s&̛admۍ1ځ| oY0S@t|#G@VOqN+-00Ϻ~mw@>*>`.>6 ٕ۱Ϳ|;snzy]."R#["GQ*W| ݅ /$Ɯr?"*])9,tj,ʏ W(70`qYnO~ӱe_K]ibF< kYK @ߐovP<@˵gkg 3.9ڶ^&ڹ0䪍^@XݢN'T_B=mͫSS==gpW%D `?:۹_U-T}j'*2(,<h1'gvij$bBpoSPX e P$4pv[Z)U ¢=z�xm|�yn* X`~aTuЬasCgx\̗Gvz/|Cdcҁ1 LOV}9f޷./c`7<}ʯׅ^!% ']1mkөsFEod#i6@S{<-�FGqV 7F-/{_G7jˢו4Q1=D@*6w s1!0Npf <_pbz&2U: IH?�f: ϗˉ[ ȄIړjVZ/|^M`p6s=.% T=|VD+vl<}=ao%[WN%PӲ<`E& l7m?<\,(X%0{ v Z61&(ACxemlr P2nG�TF <`s]Ovgj5{)%)_T ѓʳrr^'_2%&`7y9&@8섷3'^KĮ>rP%4.t5Ln$ <ֲg$[^Qr!QnMsCbP#*CHoxkRŝioTTers O !VG3/_z`Or+<d[y)F+{".Og~O&vSs7^[#|ػtL?,v~Ŗ >\?j:>3W!_AH;]+ 5jxYzς=1V5uO Z(cvjqǜعR)zE=9z5G&rz7<= OjPDQA4 ˟2q y m/^pm�_vg5ջ3}<{_U]|p~�/+v4{"*e@TT8.~3*wy]BwMj#Y8<`/i ~ <�@H_.{,F^6< n̄tWҤz$@[@5 N O1_C6'bJη{Wf=X$*jthm5<QHDA&@| O&\]QS!KowZPx5N ڟLzZфDe-dn(~Qھw܇RgH31UȌ A @3EhNu lLC4 P⦃5n50npsAK^6Yo8MFn;GXhq:(:wԣġY`ca=77ڇAʣ-ʫ^3E Җ{Z9F||EVĂ0uuKh׽躁{uOTQiey3V}0^W]|T]fd~&�ZU+MS1΁֖=?cQ}6ې_VoR[lrn 2pQ E"C30߀ oKD>{Zw:9o s Pu!U}ZNfo+=U|u/eht$1 w ~ak!x#'C4*B G.;^8y{:!+gD(QEn>)/̰ȄhH29XQOQS羒~s˦|` 6 (e5GrGh:'LEi=?.jymn o7s,ע7nUyR^X- ևr!]YCUx:81CxmYIq ΋[.T}9߇)5RfT%ӣ vb3<083'Xj-co-yYdODo큙uC9>,|jbn;KDx٨2(?k{Y>+q^=F*ʚߊ[&wQ/pn+>GF+%áI7+pZ8}I{qWWE嘨:];*O=̰rP?*(vQ>>ĵ-w*գE%(oO�#\<Lӏ >B)F:ۉ޳)z_8̭ 4qvmE'96MOd/`Y!ܫr'S69[eՔ4yr9N8ØM5c|BAOF< CYuɈ<si'bAd~mM?(̡I*%AMXeKV>4mk OvgR -vQ1֘r黝?k`ZEDŽ\%ͣ;*t^x-ߘoNG9 Kcr@ kwcnD\g'YQľiiZP盓;%h:!�L(TS^1+2<]l`pqOB,fN`{\Y}Q m_զhk̝֯#;4W߲J&$j8L\ UIe�)S;+Hp_`HZѽc\wT:,g9Rf, _>gwqu ʜG}sQO{ڈ<E Ril7mNMo` Fh:]o͂:U59kBP; ҙaXZa zKV&w(BFxbўފUg@1.͓Qj-1Y<VeH  _MO %GVcӮMjy;ĥV.U(lz8[~-dX1okf=dz[KUy,KN/  s�*̀TBeSAݟmė‚퍽/N{^\z ΟFtz}?I1=*]G>}z^쀁M`:bŞm�ڑ͡ k-G hbHN;+Lw쟲rԭl.:.xe<xK\Z`gx]c,1N"5Y?xI?J߉ F91yaQ�"M-_FiBHؙ*܋= ݙkBҠ!rWPƦ]"> QN|\%5T_tePH.`"#:R5-2Vu;bʹ%TH!ݐgɒdtVXy)>԰qdFj]<Jxrm,.Q`41LU%Ś?F& g6~9ψIG: )/G0ѢQJ $$M<z#Jgw$(ޒXꫀNuyf6;GAzxP^Qviwo" @C36mY g/;VTo;ąUisc\7?3: ƁO}t90 Whns$ц.3vB%Хn'�3YOpl (@Sfb743|Vi7 tN˜pc 3YG~DgÝ@<nfN;w^x.V]*jǫUpo;{#Kod3x*3o>WTcεL/2Sپ*MXOj2o^k "jUN꜔D3]S -;đgmlmy&TSy DĥOVE) U5 zkIZBd@idU@DɎ?wK&=Q収xLDXwhbeyɫ y7sm H@U8=|9G$X:AG.z1Ok=][#RCxqhApqzb?W H_2ho ׆D{<1Kw%+70 ~2"HoU`ռc8|ŶL101VpozүCVY Y9Ab->a񡢏 (|V"udC7(%("4?NX�4ep$޼Li$stŠVZF!Qʱ�{We#k}Y X 7Aj.<ʮ]wXo{oU#K㙭ސ䖷մq0(P,Bf21õ<"4N+?֜wzʪ4lrWssq\fǫy43_|َ_S8.TSU[۽Qa׌5xAľJsuOEgv 7jPn&OEMha&.ve=Dxl_wn/EQ޸l8Sx\1׼O56_`Daj)Sv+ d-ݖPiEQd=;*l\$ܴ>.WJ9>TB\TFtM'JG rYWN{82X[1G#s鷷d~G3%W? +C$翑åÒK;Kep_^a/16ܯ\~zW/k/-9(-8tA2i'X>6iroMQ Z<ɐ^srސb@^di|Y žgB6 GLR*lQf<9݀aҚCx~#q}Sa!A)>tj[oVh ɪe@_8`;JVX667ID\V WdkPc:k\R,zɧ\>qs+l|Ez(7dP F|H /eub:tGqMExj, q0 šu8zہm0[V3 O&txP 1RlYsXC-fW@~UK*IP`fNC _YN.LCՄ?rë4:\TG|߿ƒt M%CS.vsW[-dž.dR 8^b4 W"!3U]r~3BKa;'u ǎڱltgĽ[.:w&⻹)xE؏RgL6 !橽g;b/GFy䖊o!L\w4- sbóʲ]o'W|`Pa FT( WNyEe>L()/[2cr>$(އ/O%>D>6=:Z}_opzIF]0Nrll}xFNkXnqفXVDJ6BR]'vaNwr }zGCdz`;j<ZCtr2đvِ|vh.agEX[e+ +%z@ 7Z9ϵ9wpɏѸ�85Wfj2+ߴKD1[*[4ѦyBȊHXlE^gK_@wv]')Ggi<L0:8-A|2u,GHLEML%(=^.N8Ө .D ]c]*&Nʽ* ] 0ryS-~B0Ǖ#�/( h@f<Qz2dM3!S Abr.f(Ynr鞛] Ʌ` 05`@|tSY;;;nkSvwC,`Ft_i0,W Һ>4{ 562rlx'YWdVX0ڱcٞ/Ɇ7/ m]L2#?#ҵǩl M5'F7+zYB}:F7t{U9WRy'Eo5dDMVbDȞw$u, Z$WK/*,dᦊ8ϕ rȃy`zK^nhp^X/$w/:(.rKj&>L g/%}{/ל =I3 1Wqm*Ѣ8Ipz[y/ SYiO&܊ޖ8ozLj1ۿJWc`y`u *#y  MO*$hl-#dٓ6c<+)ט ݼTJ?m�#(a# ۞I[FWCڧ~P۹hDҎ}Im*ΞUiy>`4aSqA> fG.C-@ ΅NvHiQJHJbf6MNX #wN eO2sHb+p1TyWr x=)W�XgҨS9W=sf*0S(5iɁ1އXPZCF„QDHgf99o\cʊCК7_ eفfvH9(loCj̄rŏ oC8v6o:[uB.@^āRH/rtkҩd@ e,E5'r5T% Bwֵ1Uj^rq"7$2Y+ fhD3 `s  >r#s^7xO) FHUn7 /4?$O/ G,KI'+ [1m1zkJPB- 4Urx& prAZ9_@AGdj,4~53t(8"Ѓ`)|'$tb]NW;^E>y~4JB52@9p_{|܊*dʜ(uJNr!עnB_sԵwMhte&gXZ$&}CPhr*"k`!M&Mܙ4._9Z BW\j%yˊ݉Rq;4ޡI!s"r-Uk ~|n̏yJ(h >/(ا0Xq.FKz*;>RtXp>V[] {?r2-7塚^PGAA&c&< w*py6fU*]Gww+&#׭U-%2Iʦq+hұ0q_gvʗ8f됓7*'p!8o,\D;b.\E$!pxAev!&TaIP\yl`G[|\]uDX_hn*cWKw IƑyuge+j٢&Yɤ)o�U!~K*!B-e LB0bpfu(*&R!Ҥ+u9a>%zӄ8G1EB(u1BdlCm(5{|EIϤ9 B!n7izQLK:5#+|2Juʎs4ФK lv!јttBS9aloW/(󖴇PA*ŘV'.#[z`v_ ; S-fnoqwb::_%F4]FQI4j,D3Ƥ[f/Ӭ]$ڴJj|VM:!/F99/Ͼ<&<C):(2$X`ig(^1U>:7 0v5::n5q'ӠauiNO)7yi;hGFz 8O§,aIsFWZ{?\tQKOO,3?Xm#vs h!W{.f#:qݱ\p“G= qHd'r'S; ~n7V(&uy+I]?aUh>KDt-aW!Ni"K�\PB]aOb[wzfx\-"15pr1 NkaI>%`~  .~co>I¶ڴmQVhZC*]d$OJ6a&ȹCPlgspP:b4QxS4iϝ,&t Vgֻ^bkeC @w;s:B—j޷҇ZWK٦J.ͿEHi UR7ȥ sa^1h7ݧFusB<;XLON+ڛhKal{є}v@l2SXdݺh'm (Yw)ǒ2r  F:W*>Hͭ[ }n#ͫP3+߱)pAz!T91 jjRW}s o."ER~șr޹28qO"bve_!gN1jvA?:guU"\@}v+<�^mV` {x0 #߹Q9^q6zhc i8mA* ,Gf`}8#622.b8c i=AjlO'û(v:baX]]+ρ'"H n@1WG5)oԮBza+*3 brDŽTZQd"ϙ;APBF㙊Cj!C 8UvN<#K{83W;Δ 8?4*:<Qp8[`i1'>.S;m6/(={fnv.`O?"~vD fvA͸~ymH'TDϘerp5*<XP lVL#�{kyݚKRL$8q zv1orcPk7v,S GDpi?] \ $18us: L=r}sȩ%Jjlpm(p&[ԫ4$C9KFNN 5j/PT-L\6ܐqY1GԽjF,ֆnV^=2H7WrUF}>+3ѫgbͿ'5 ǟ|I>c)F)ܶ.K<%?{+)E2x *w1M  {,D ͈?<k _՜9'- ĻOqX֔Ad[In)T!KwjERl>!L3?N0[{]kEx6m<Zq�]!JS7e7 x|{*!~W_~m9�ͣk�x|25a5ayb� ƘńQ6}8'VPw,TAl+-?C m@!uxƴ~aWȡ#D+gᜇe*lɃB#^�*F\G0lf~ >?Ek/ڻQdhX :wg.@~ZwbY"|ݳfo3E~YmG1w?.,z}wQae|GCw@ `0 Lʩ%Z&fESls[G-lgʹ19ǔ=_/%sing|}@YbGh($W@<~riQb"h*/ЀB]Cﶠ xkaQ�ӽGαsr!ܠ#l5zz ePiGD#ݻdK=2{3br,{kW, q %noPDŽu{"Alr9@0as`)ߺޢvN{hԊo•b2OJe=0e.( 1Hу;J:b0Ga]šS�ʶbtLEJYpО)4eg6d=*|s]5 Ȳ49ƶx(:բP&nجir"lϴuK$-_|G"(U-!;G䚍];BY@68X%ӆO2VkumKkL1 T:teXF3wjzͱ:ZTE'RA.sv0,#BKkA8 F/a۽^P՞hNH"2hȂ 7%}=G&)Zт:'$cq HA#DuX]Cpoh~n,̸:/ hBv rw y$˱ZdfiM;ok{"GnaSygXũF%n'{䁝g= %Jld"VOXK;.2} Zdz+|ɦ_)Sc/.X{о~"*Iט83|8!"ZAa=Ro_Vk[Wqd~IO#E/Z"i^-WkS .}= nrS>�:r\/-:qN+8w%܀Js5X p0/%+qD=nܝԕ@ X;J?uQ??\m7}[fN7q*E mwG S@觾z&-#y2`ӣde=#S5c<<I m9#c.];OUIHHpb`#w饇<BOO"Y{�$${:ҷOSo@GWh8r :�amb7]< R&o3P9 [ϩܟXN-Co8=LW</hj_CE ccyRG<eV:Wآ>>ouUlѫ6NKinZ|8b ;^]SzR*$J6}4mY"z !s%@9ȄfAuJHGv#ʂkg6,yŦSy zں9 ~[[O7&oٍ:[W⢍xA ·!7GI "|?Lt:-26P}7d#>w/aK|8E@ #c|ގEѺHBElQ$co_5(d<?eO+coFV[DQRwF_T̀Êj%BŠ)"옳p`IE7 XmNh\G0"U(r0UuaYp+ʺ'jѠ5A ]U ;꒰Vf5{N;6ǪqY^A;@_7>DZ(p-$w�Rh7"͉\BciowxIG >7OMK^:y}PYSovQ$<sDgh]Ct&/ ђS!JGWLyM i537`h\K$<JA] ^ aKdQ!Lt !:pсWxLTo[JAC&d]JkrA/4ZE RJ7Gΐ 9.@\�Qˁ(oRxO ǪiQ 0@e{i*U>hRu/y)/*.06eCQ.W|Yk|" hm]LS�*/P4[ngwvI_yVf\?9 9WSC!lsm2ߍ}25* 0E춈頷U(,lYMC>gyY7O*e*\n{dHC ͲTk?жWuTvI魇* cbޥ %gF|k1s,<}ʺe3 (z׷7=vDIsgE3ON&vq=U:3J..a*H5b6}52CTq͍Yx-mY "@GLA �U PNlR%L@\X/be6}AX:վux 24X HI&oF7~fz7ĜӁ'EN7}~΄l{%O"QYHko>|"Ӧc4, 7ÐD=e;ٲ}Fo7˲P3P +bxD\c &b[Y$Ӊ9ǒ)옛H<_@l:f$M=0NB#C o';lWԜyvP~8NCR 'oGHᔇ C|vsf�nZ7@*a]?j]iT')1g ϳWt)޴<[&کgEO!٤~b3 8(; R㺶'tx[8kPx u[QD>Cʗ8b;ކh�TFTp>IVU!5|<59aÉέ3) ja!ɔHuO,#Š*XØ9}Qg<nwVv8:} A[^xo3ѵ'&Y>FW@{pg<(􌌺*nE ܡ#}YW*J3V*l]*zuvX Ef;y?^;F=trRR!izl2K7t.;<p  wTB}Y8Tc!OBsаp^^!G-(d%ћ*FxR$JF$N>t5VQ(Tݓ?U(|TU"{ eAZ~**Ӗc5'j&9ǝ s<CBOOHxI)uVsH*Z)7 wA LT)D/CB0GmT.?*O|P#wM Ss)@۴NJR>wm<~PweàG=rșXsb̗ �2H+ˏb?.o] ŧUm&nUM׫#h_��;l;� k-ƖHA?l%Kx `9 ,x © ˺,}:�t�Ck[mz|yL;<:SN N5//J_Y@##n1ޔnc21I+Egz*Td\>T Dai#BL^(<}rv.o-H輗I)|P1p?+(xX,$lF$(m5 S}p;ηm?$a?T]To}0cxƏfO-,,6NY"\a-} &Tq)1{i�q{˜d68g,_6+1\H`=q3m>Vͻb( >�/xNSV<.c8F68?`CH(aZ>>6-p6Қ`^b?cU7[ács,pA($>Wno'T)Ecϳ\)NqˮaϏkh^tjShZP2*v0dE3Ȟb_O߂EgNJ)ta+/HvhrY$iq,T٭=-x r!h B6` K,)$eT銳<s)E{=6n>AD>M/g+>;:ʯ@  "\ @}wzsaJ{X?a z]�xf񮙯E d߈bsWj,VZT]d{ %6o:)ʿ >&9 ft"`ȳ+#I D֭},PPm* 0cHUk(n^^/r.9Ƣ z:V+"&oEi`xcX*/'wm̝,:]c'OhTM2A$h!%G 6>ר Σ#j_*ylbY3&;BC*1XyۣF8|܌.1UVod;ɝw%G+hU{`2HNNM<=@>Yd)CbsMO1!<9|{IVmxQʧ=}V٘WLS>T8'uȻΠ^ws/߾}Iy}CªQiGNx1ʳĄ4xH)H *HKlG<)n1> JlʏJ,MaxW<B].28J衈&mS 'PK۷¶6HЊQ,JzOʯj ,}J*R $LP QْJ:jAkC*+D~ꄖ!uB~/Ϩ&]|łSY28Ja\]%LXcI7dؘyD\,6pvs 9x z IVLq5aT vnk鎭?\ޅMٟDVQ:<*o#qШ^>6՗*ŭ(4YӣH /Xsq^eS`1Uk \Y{}T XYm$osڎ5�Q\k%Zr�_t�:G[ >0$bLʨ[М�X Qϣ3eQCߎ\g{þCT}#aVֻ>+lA#sF/b;W#*3j_9HʉFK VٌxԙdQDT S)1ig/Q5\||ūg}aQ 3"x߇ifH\ S2lѫl`"T.%@'ʮx&d;H"&N9CH(B蒏#DU:%LIwzQU*z0;_5ei}uR y{_@F1r|F,"t#k=h[*;$V,CJO̶H BhwiwxvoE܊nY\;Fh0Bd@艣ԩWX:FU g#%VW~#Z[PMqfZP*lNapx/M~(>ݢP5^CxeسN�r %W$&7ݯ} +F*ѱcRĄޘs*mT.S.M:(>ssS,[.U7XUsQ jqt]۩:> 9 k(o+bo5\t87y�5~?H}`HGճf8c/Ƴi`|K + H2uK'^]!d!x"v}70+ 6srB9aiEm?GHT#H}<pdeАLF8cj�tsfqnV\ 1?8%G-eq Jl;[t~,܉^<9j?|*\@Ys8v^L1ёOZ<yulpK| )th�K5I)K((Ïm31|t٠=3/IDqbw'{aVMUv/n\<xHPO*A1餙[t7&}y_1m$T0\oRQ<WH)4gףmт1 (b䮊@df 4 ?o}@JM/1@PL{85}Ia(5 T)aI9&|㈺~aI i^Df(j!="y> Ċ]JdJgw$E2a(]# 0ϕ=]6<,^eJ |Z^D{/3"X@q] "*ۦxTʕĭ+�p.0DFL0ԗTXΖo4�ʆ4*E̼NiPE=QDLB?"'ͮI/ӿܸ5xG Ř"o4|>_ޮH\'q{wv2 0 |z?P4Zǜn/xVm0s^o0EZTP@#x+`Z!t Z`X3 �ꓖeKW*ITUiZđbY7ѠIJU<B /)׌tre1L0 SAՖ`642d # 阜d>zvj^rw]OtXj/!?:#F|yp>M8?B>1;ځi[Э Ŋ01, JZcCn)RGj%ʅ9[?f`,Qmt_Tv߽2s!ZV)" $AvpLg.({V=[Evϋȷy4™j!?i$61 %:6IJ2)~{hb7kl>͚=::{)SX85%wB<GRu=r'NlpSD^fFljvOn+,"+iɴ;Hz(7sfD=V_˓0*Q&Z3e/LCgC!\\~ 塌kR<nHC&-v\pZyT>X<ե0�y%AԳ'a>O8ӊ]wbe섩2ƈ\{7TEC TpE}viLoXsIQC=I rLLD|~`^]HN M5:$[oYHS'rgwKVE/l|lC=Й<:٧vOwxŚP=rI9 )&PvP)B~=_ @HUũDK;#Gg/ NGšwI*?T}`# 1qZesӳpH? .}__+Xa_*j܋acg7@oǒfޱtv6i~ 1{{o]Ŧh @KlʊE=ŏs/&u#'x}ϲƨX{"Z~,O}z9ub8?vw'Hpow`}үx6m|6(,/>²EkyG1V?.]8MٝHYDq1dt2Zڡ‘0ADSȺ Wڢׇ. =f+w8G"$ \>uJ"φ,�jʪ'͒gswD~}Z-q%'Pw@{EiUܑ[(Ү5|ZU.0FDٗeC1X$$ZRV&󿋕 sQ)kn+lapQa˫jo僮-Av?VcՖ0UPjyJ?}!W\~!ୂOn? '_{`R_b_NnY`աN?$8_\yԕA4oT={='('rpp5$Y#ޡ»kֻG<8o*뮊$q~a 9aM&0ܧQr|\ 8Mjiq<�q\N^RG})Uocσ\֐˟iä/ކږkC6, lGZP% ^> 3,=`o)¡ $͆d~8$PJ}hbͨBĮn/c.k u@ɾq9 ˬ]]09v4?ѯP5l 1>>GDpW=X̓BםmJ߇WoDߑ~!/cՍs�! &ͻD ۇVպG΋3|v`5&jl0wC rWes\jbQ$:5 78} q~jVN mx*igYЋrI80)_{G>Nq,s}OC{eO-# 7|?'V Ù$㉓m|HV@ p{aFktM%`d>[$;>l%hi2Yt7|8_9$!XKdĨA8:OU~|$L"B)8OgT4tNIyJ>-E<r+7P}۪a_K F9Pt{fC^~P}#z qK 9"JToɀPZX+M /~>'#d1guVV.Si\G@-̤BU {ͅ}t. r&6 [B Qπ$�l…/`2Gt5ז-o֕nXWߎY|̬E[L(Z. %R! Ir44v</J w8B/<{3lrpig@`fP:?kkOV?([gwM^w+GV)$ۈ65Նh"p2J Cg\|J0f"y nBVd.>/OAo9KY%߹l]2"R$rFfްP,'NX눽(pDz̧evX`4>FY{ �1ʐQ<Xõ ە!>trFM^�/lq#7_ˣ�/>1E={C>+)0/ t bNS_U CfS @!P,D~"C-<lPs-*ma5|49"/!E8v/(Tdgm'h *hrR|SӘ:<_N*ՋVs(k [MXn//n0Knuv뚱'`fpsP> $9ïHԯD� !.0jŊ P �&cH26^7MXaai#N mh)55!&l.�:�:y{S�sWsV/a%B|CTN$56YY̿2uLJG}N~ 6JIF5qo튽j'Bab'N\} ~ԕ`X{6H+ ɅrRca:VX!-3e=0XE\IDڛ�6YcY?)@{7{**P}@jpjxhј@\A%ylP0ɾtߖ|~|!g!1ojŶw_mS '�s@Yb+א^VbuIaVs6avBYd@F R:_v  i /pku_�Ok\;nG/U< pg [O_'nE鼣ހ% ͧ}#'?ɨ'#$[(}[tӻя YY@xAB%3 O.ҚDž@c4S;DAWk֜^ouCɺ,.^>KҭGUגI-{3B,Gǻ*~d|aG]TDx뗕Ky,ԎCxKsV�fmTg Ya,%}/a V\+A/wV/ @ύ{̰ `ǍlަjnÙ wgsC<'zK]h)ŗ>§ѥF7Id(7;MxKa~ oZd-p;~M>: #6 ;0pn@֟.�s3+_IYhY )(?:zgƱv6JŻЯP,*觑sp} :i+T۟>OyRvuVǸH;MG>;ZPm+ML0,N:;Řq6`c+4w@@ FC6/7%o&g\z=Zpj^[]-=XS&ht3D%K-{{Hea|[Bݘ)aL0lgJ=VZ k͟,Wԯ A1ԬLz[blM̓= @=iIH7:;{9 :!5}뤅^b}]nG}-~Zy&KBMiJ}ۭ9,RYp+f*3@f WG'8o_\q8Ÿ ܌n�8d?\ O)/b-H,*崃iyœkeý/MR;j. ?jZo_,=5QA|W w$Wh `:bzg}cXDݳ^21!9P̐�$5�+�'F'dϪ_]nJaܣ6 ]5-Vy XxR*tvb'WgNLyl-@F To\Bj0&,bՏ />< �VLWBhБoEMF!{`G1n*/h%q =Jf F|kjԸs.f.rxFG"_O[U2f4Tt9k;Y-[!>�[i&I{m(Drhi#Bæ#{ưcKfr?Y�%.JW҆ [Dlv 7�1vԋVSCtSEPehwM;)~"8Gú4\UcIoVď4v9_i;krb U=j#IL~侪-EÎ˷*m¯ gMzeR ^Y%9!=GmKp|!8UkPwIK qgcӁ׾D|끪?(;*'x汲N- ;JQb09LqPiTq胚 `xNA ! t#xwfDтؗ!AO:NQ? JT5?ykY:iBڷ!4돉hC (X7Xh$HV2e8Yo!-Kr5؝SWM,đVcm ΥYuXve<45?b9Y yɱ&4OFMڍjx`RR⡡ 7{T�mAu; t:[ˠ{U[HL4V&h3ZÙT ;qt8zLJ n4 (+APHU>7?l:b`<v{w(xz~.&Uꤓ/^7yUY$Uw�|Ѭ{?_7XV<peVuLr 2UTT>ο NS@469Lap6`+lw__'b0NDK\GX,X` `+W|:}`~\h{#Эg|B&hPHs##PK Pb" {(1F#*oFe@{1'Spp91&vɂPhG@X;g*$u:]M2[A0[E-x6֍r6Ћщ)I@:)GklR^(c -p"?4R! xේY]E%E x@Hl&M* o{r(%E#sDt6N;e.- x1pٚ3shotlg`4םUNIk*s:QAPbxƗ\3ǘT_ ׼+dL0=:["9ڤe}롥m.N$O s$@}A6n(60`K]cxo`8S�7ϵ*AmTt 51ԇJX5b͛pz*@@C?ni˽~b(}4o9<`jh/ievy ] H 3C߁}q`yݡ(I?9uMiLs\Wg;&$tNk8y0 Ҡz#@xT)=4Xm%'IK_BT1*(*ܯkXI{�{9C�AQZիUC" *oHӸcƭbe r|ClFN" ɀ0Y&|zጽʶ&L1޻O!x_chz2?!NPcR@t24 ! L.'nC4aQeZoHgu�juE̝ �Q>`k^<'P9̇Fi/R~ D+z`gx Xiwcgk<j ([`q~v"[�Uq�#CP'^ӺRR E=ȧRZi2ij>ҍmy}0"dR^")Tl+0 V=?G 8Ⲕ ۱gaS#?,SpLew3"rc:ae][΋2`<Ճ!rkZ)'U2O~jć&>[Wm!-aHA֋z\j=\c._UϥԻ&ױՅL _ R).gsMn_*;R,ے/wO0@.]I3+t~j0 !S ] AU"ٴt*0oB_u\ʎviԎ׹ޕkhqN#k$ oIx:q_RϟF[VHLZGQs\*ߜLwbXz~8?UQsum#0ђ u t`_aPBRqܡ[Snt�crCA`GCcrtȖ!(+aH$AB=@tC�Ew;݆M\aá ;bg%PuSaH-Fj=͑\4bUnN>TMUNT: .K" 53e3{R")ePϩ)VLG!Z>\Vڜ n1lٰ6sִ܃aH}d4 O>\h$,@B2#nX C)Q!WPTz~P#oq@@?h#SlHK(JКq,ǰcV|PTFVȾ~} h/!4E_|Y-ҟPGX=!X#lMTpIӣ[kI?uU1~A_:�Uy8C' G:m5AI&ʖ>!gfJkWk\X0?w T<Qo ?]^”<\a2B7pdAs難=Փ q.F_qdN0$&0mIJ2;WVB"jCBWu5UlIa(al?qa=q?ń2Á0w$KC?sU s-MdV1)G#KMenm>e:l- U.Jbk|CW*pI?sR ^TR%T5svڕT|#AI#wZC\!<FC{Nu}?;VC]PX'ʙ=G\eU+r+j}0y!綅Hڑޛ3OEQŤy_"\idZ|?}�S`5 vѨNF,+"!"vAEO ]yI+ԛۨs1.?@tU;cY潓h"7ӺjTDKNR\`*pVSHCw}z/(`#ѤOyڟ< ;l+"ṵQC"ƌ!mM}"Zj3fx_��2J@$$W񏽊YyQW^󌘪뫩r"pNCEݰ6sugU:zڴ:Tv)rLn,|Y/B8Uc|>Kb4%"Jvɺrr^ab`w(1t$a(qbܤC}ǶyYM_{z7Cv׳W _| ۤa<OHClB-6"7XCC|+_V)�z^Ŵ:x)HqMǘbn^Pփw*jǧ:0uҤǒY_' Lm uKU_(MFpCcid}Ad@6{ >{%I"㥉ph".c{o O`ցw%Y"Ofw!f`Z} UC<! ={d> *[3]JKFC2Ak{Zhh^-RO fSw\鸿r=-پs)7R^U`l}b;KU^>mjv7[ 43J?S)EJ]ߢwZe'!Ctًr+!  ƅŽ&_~XUpEPCi0`u#ԽoTg,uɉm&:xŠSa"M*-_ \=F<:@> ~aO2vpL>f6Oq +Gm.30ɖghs/(o8f-)ck yM\8{}[zEs .cw+`ù4*Vʉ&g:H1>Й vtn:,U#; Ifs#E#4�_=F8qՆzPuoe1$+|M9vVūAm[K#d8o$CNaƺ YTjǖ`~8&ZXǾGiW(%V-v6ѨEy!s)䪥4Ku'Ł*et׿l߈a0ۙqhmlܰ4ZݴCiEP<N_lB.sQMS-:t֫&{A]V_+P>[>.@Хn2:n+ṟv?Ѿ+_iY/9%-QOցx߀I*L۴0Z-{r{`e8OZv!q׉)`L_*Fd9,LK<[f>Mٰ!m-TT W؆�(?�٘ ܁n_Ap CO`};U?[,N+脠_*)K'Rx1q쪴 aq!d?L4&* FR(7mn}0sVɹVdXC5}Ո;Q-)zLj*Xw%=4gDEPֹ ʔ72䔣D_%ן<\)y7;^e]dڗ"WY0y7$;'`^0)G!j�<GZu%"BJs[s)#w%ySN�l(V{g>N(g]\gWReߔ)paӏgS^="@yB8!)s~Z sRD팙i+ՁUj}.q[#hv&ӹq.WX$CC- BlF \@.eX?W%Qp2sQ kIܥxv#r PB/\xM~z_W~ܝoEi94dN`c6zFI\c8RđUVɰF\nI,OLBֲ?vn'KZ)3bz:G*ʤ*]aV�;4aKƻr]ǹww}I܏dWS7*ۛr's Va{HIFr!ZS%Hϒ+)֒HH3񤼩d\) i'];`!ߝ<<D̷c{RO&NLkJQ (Z,8c}t/ޒZ4 KkDV@k OS-QibƃC'Qpk&n)1KvRAn.k[>8sk!4 ETI DـY~g6a_JhߣO^b-M @ &ֈgz_ xf :o- h�h;uLxn dNMbuNćY"rΟ<plY#*y”beyͰ˧G$mtX:@c,g)Ve`e!Mk?FYTS^W桤Haicce@p~(!D7Py:^X~? l۶ yZ|ҽ)uYd+9~7sx}-]̈9:hr×7&^ "ucvCƹ$<guUV}=7X4kHJ>c&`ֶ kFٳx x*.H,}6'aK*++�OA,"3e<+ɞ.7XUTNYFuPp)"+p9_VoGvSZ!(ɻ)\Ѻ^vr bRǭbvo$hl.;UIH4)rZR%p<MX=:&ѡRP/PE=V~o f*Hbi z)0 *ND,wC #%ZQpJ2T'>IF8h߂߾űmVE= E3&AjdQLiqބmN/ȩ�<`t+eE,/0m,/^ttFeҌB~Pn(2 \хp=$rk 5 VM!ѩ9bL-0(w| Bw"_9⒉LS*t]?y¯/)jD)Quqw!:Lў4h@uՁ~8;DS/YПR{k C_?6)<dA/T!7+}Z7ܥ(ʡ>hckJswPv 4'@:~V 5dvԛ2߫BՆi -9AH҈o _8 "[_B\W\Wtgׄ=HZ_<"WQTh T�ԣ6a?8x9Oӽ|UjSۄᯞF5 =@2ޠgl Ʌ151 FuW+̌/`#>J AJ1jY_t*ze5?"H. 4#ҕ.N9 5"YD̒xs9w d&<q^/[믙SŤjl5&x� A5]fas~qC)ѿށWzŜы\pW,?wQW1u劤Is!XL<f0ʜBA^+-Hܽ1.TtNᏅOQ뷽N ' ˍ duTE7umeɚ)K|!4ITQ|l:.0`9=L9K$Z� ;G+ދ 8?Pp-~Xb&kiZPKߐǴp6Ot(0.CnN9/DКwg0 IY1qCDA#xDCR_~pO 53 ~H+D' E;]H-|"R7<W+jUsds#}[.e�t@Pq$F '/\׳!vS.%n[@/p J�(re3U-\Ê {YkXUpEIR)Ls΋|c:/JQཇDRvю}' $�=YBZEö£>tZ}N'{;ylS7mJS�x\<iخ/Kv,Qn,-(wGiъmݓIB*?*dbԨgʳ)MWeQZ 3&*yrcec<CpV=_^8 5WhiffޔFz("*V^@zVRkń;E ;.4"9�gu ~,pt@z~zŨ"C$rok;@Np2ExW,qdZj^ܨtoPVcX#s2|{!y BSV[ĖoB6wR. "h"BOQtF e\n 4AyO GaV4w|@i] Z5t9B+v=˜{y^eڞQTg ፫Mf˃IJw.13*vDH&79{&l,irF]#H/ eϰ0-WOSMNDgPV Щ9_?8=.ςQ,З1י Ѓ44]=MEU2 oeLe3PӴT}ŰoMB~~2JKJCpi!JslyuN%�roY aؐ$|=g[|M4Etg9G!g/ ,߀1e|~pM$J81ZRꛫJ3ogH|Luwb3.Zj:Na"B; W%Egs7=oDZYb.2ByIٸ<c+Nq � b^iī FFDvq͙Zy9~{ߍ(M^5@I>(Z^?.&/D7:ڶ&uG:ia1n])Qn/{ܿa~~}k-s0fκ_әP9[GAAUGj"U:<i*e3A] Gz# 8J*t!{ r~&OzV J 6לlsZ͌G;8i5 7IA^P'`_6xL}{GIxyٱD6^{&7p3E}RS5-iJƤ/{=REoDo|t<W*D>Oi oE?ZiCZO,3{z9 Q_G}b,5zL?W1&'.m)_FXqӺeK�/_4h lky9p +'CkAu)^2r(;|K-](F7!?~/U4˯dU[ 1ǶE%`Z1(r[@\d37ao#Z,1;7m'wW\=mYng�Ĵb<4]҅{ۨ⒉� KL`+2=57Q&.&w\LTl)uٟU|~4M6;ƙ_ϔ KiExu13J\\Y;E,twkG t2R?U�Xe~$Koj^-\XH*a<٦jH?gkD1(Iҿ>&e cy•Gw򊭱"*b_ͪD`#ÎP\C8;RAPu"}}X>d(K{b8,96.x_vgr ;e>3Lsp))9JQPjUAT= V}To,L\e T؞d�r;({vh |jѼbM1:˞k[)no]_څkSFn{>!{ ̸۪j938CqE$эeOCa*2�l$=_aj-޹T9 S;< %U f%9HԞܖƂ@$u#E%|47:a^i(O"qugQ,&r v 2EbAtD􉪸=εٗ{q̟>kH;Dh:~tkN'њ2ijL"BTq+R5n*KI³xsR&a?Xt3c>^M֤55U*ҋ=LJJcBU)1[Ha${SRS_Ԃٯo(zi~֪ҺɚxADL I Iv4' `I:Epc( v}/F6`dzS}mb{ܺT%)eeIE6C+w1ZLjL{2T9|m(w?4m4.M'{BgMe|h "΢V ,J8qs-蓝F3 U �(4ܱ1~0[()㝞T*=钥0-SH~ĎZ+GUsX+A-J|P;jxi%^W~RXa/Pdު{]<]3ڨc3|*S*�*t="?D.$hQ o rE"k䒆FeV,P9as]܂`dg 5gB"wE܀wƞiu@o#؇ِ#,-^ z]ךvufk%.5W0$EQ0X~pS mD#ݝ%UBO*3qqsd!,dUdҽ#P盋 QO9KJ]ebҰG w̬$¶;:.\Ɠ.٣XzL&\{nVmisvm6"ڌUxN+7ך D}V]mV?F =&VՔ'>fߺ-f|<q#Lj[Tgk]^b?8$N{c+i<|)kJ8ȼIH]dY2v&2Uusuu k3) y 2*1ƄCBˡɉtSR/UƑ;luݎӐj@Ovr_iWT^4ᘀX_RDSsR܁DE "-%blGC_rWF&N?ŕ=0g҄m{tF +~%-μjy$-oVhr)*ruU܅skhiz - EwEF4W? dfj8X*^,7&т\Q+CG3oZ,^h}IVs@$C 5}XfQ(2}'?Z&W�U.fN\p8>{$;$hn$;Hy_JJEb/\ �u$ptw -o0GK="s" QM%>P34aj$Q9|b|W omۻ8 [-NaRBH6g7;/^[y:ˌOmX0:wSh4dI?s5(1EQQJ"3:K \&Pqh>^N/j>?( A}${݃Ԑ71$fm՛Ɨ1rSqC]B>k3LЎZط\ކUpGiy%J3 Vo\Roh�?#GxI xƏh߼`C.V=܏ej  Y\g~W"VYfb'+NQ#]F>8zs*$\';fwׯ%֛!Q~n:9kFb= pf}�Gv(<=;g*L_5oa?uJVNysgL-O_)D5A4rwc#^yW߰o҃!D&Ph{v88=[C  p~bՖ_OLHJyS7: 8' J֩jr>Fq7J4TW= GiH$Ob;`@ -?jGa}j.4"nV_|WctnEj}H?Bsp\.R# K/B·BVpjq m2UfNl^Կ#Vl;-c n&of?l+d##&G vbS=\5]D\!c"IipԊ5}뗫+[hW >Zl*0 DZ!G*.oTyV0Ƥ^<Mp-Ef ;Vt3F~==2ֺ|B3eK%Q:ufI%D}t  ѭ1}$O Cr5qf \ӡjkEΥUM6pCvwțBJ<srS2բc>^]Y;ҶΝ_iaCvQ KB!2w Ԏ|^^jII[YsDAE1;`=sщL bM:̝g (?ɫ|Vy H-"r=%/, Vepah8MMr4_^a է~y=e cX))+tN!h _Cy踁4(x=O_~(KqfORa5|v .YB~d)i(T|0rq須A~sJ'(|;mLfdaY+p.22x P ÷ՃrP$1VI=\C+WYC틜:MmZrrMGfn "y1]:jPp0k?v:X`yŪVMVmIGΜ'$t61>:Nبp%5dk.M٣(-;-O_>1W` rKWGagv&}6ѤNdpіA&ơ3!}eax=wc7󕪮Y(#K,w3>\w#P9w`!`*O Nn4[[yH,zF^YKo Ll=Bo%~~,(%<zQsBrAnQpnpJ~'GuzxʙֽڂcAۥv8idRa)8L4fc�w^=IlO\(k R&eڴ,=a(2Rgi`z{JꓝdEqװqH8/FZH+L'կ*W/q:5%7.{_ǽ{{2}[n뽝`4v i{JsW;7/ԽGuCvXoGpt?+'u(ծ/g9^cA1 6Qk x9YHlUQT|=@x@`x�p{)+ߎ~.H+` wlށkhձ kV 2:!lt(y[N3S-g:Q^sv z@8KėI' gU'5ÿJ{r0V",% XybAJx0 ٵg3rNZ gs ɪ-Yitիq&zioT x5kKG!uaW{Rr8Ź" 6_S+Ou)׺ )ר5v WK,o].a88X8X7IΕCIth>pusSÁ.M@և[JOz;+hcTm|VWZtO[N>zÃ'U{iGUfva:2m3$F{e<=_M:Kc i:ڹI1&QCF bhxK%Fh/eqn7Hxcաk'ۼa 9Q?)*ukLiRtm%·\l*04GoqA&^8$ިBA㒯y5pTeU*$^rݒȴC%cHJ#U+m^OP˾˖jr?:T]}wf;a[#EOdĊi>”/2?͋\,a7u :9Zh$b[R~_Y~G][xL`[ ɣk"> <>l uh�M9;SLk!N2 vZ84jc_d4D#g?hZoARt,7:.OA)_>-4_6 �̙}:׎R %&^`I*s4}{Pɝ@9*zfUDL"G &k:d/H7iTzI0Ap.ga*ђjrHww,#(YAx) <k $@ʀ#O'{X+OD8FJLHg;-vw#߆W* P, b- +%C"Ƅ#J&PA##'[1*`ԈKh؂\ |ŇPS&D9;B<IVvkoGƖQTfN_:3ҟv76`Ov μ)-}Aź i]ݙi%v<#vͺD<sQL 7f-febjNC K7wJCF~cr^wCt63QKՀ~˅dנJE5"C~9k5F}E[fi^P~Ud5D.2 e?";[Sn`J`d||vy�`<Gc<ZH> g/K(&DT EѕƟl<# ofUҶ:Byз]\ʩqSDc7//[w#- ;Vհ Ƒs(;hw E?#䛴:;o,O}0m 9K  q'2{vQrcoǞ]_E9kJze("}=؂T:H==LH|7.([ڢ\y*c3hR�.*%dk=]Tevs$.p0q 5[&lTK2c̹xmL1 5m|UAwFT ^p[jvu-ѽ>z%h%\*|2Kojx;NoY~g1HngJv\uB,?6|><T by#ҟS;u�ͳKZw쓇iwa!Rl$jedDQRC)aG9k9S4׵} AZ�ˋUew_/U>q^?Q?HӰ2<<?`V  Dhwͽ2=y].@Ϡ^uf^b#*5Rj"bo��% 3E83Lwu1c޺u!@"҅J̥�W僛\x416YSb)"FrVSE}wЗ,1:xb?DUW/�a-y! g㡻{CF z3pS^ _Ϭ2rߝUXXOpce]Pu5uk}ƽUI2@8ha_R0Hl2չuttiR"dp`mȃxCw@.\%A}灓V-+qZ;àJaeǠt `K!΁]!/F9;}}NB{%%_*6NNкh&h=^bXItH!{i]ig%$N F'-̿aS:3)rjj_"fҁYK ok睪aNtV EpThk[M 96xӣ1IAsO9*5G̝Q"LǘX#vVrCZYSI xd䝚\wjN !!l#2>^{4\�<F&[L&,"`EYdm{56$oOuXzzG }FqsL&^3T ?ẃ<2MH<sfaQw~% 菤)0DjN- }opGRjlyt6Qi5I 4ڂqv d$ e-x!$c� (*ܟ a~):*)Z䛌2+rA2iVKʧIL d ۣtEٓ=Zp9*K8K>F7]x#GD;[zK>Obհ3NL*'A7" Y);@OP"�GQ7-ia# ww)fqgߊ3 3 JK쒕=]!PGGD8_oԛh#ܲ7DoncҖ=Z(MH:dܨ;`L-jXڴs^|Yܷ&2:[IP(gmMt ql#[pgߖOL#S|.!*#BӅaDԏb�Hl~yh^cր c2#ǔނ޿m4uU/e1YxUZl#kpur-f%(7rnPLbf tn gx.T\-N3ꭻ_OU48.fW݂El̪k?r+UJ,)4-ۛ{?™5Լ5isnV~)x=#HmIQP[ b,~qHl;(I7ygCmO ; j;`׈{s*QY)@:-5ը!ĢPj\k,u O" ZO]Wl# /\xNm '>_zE=bMQf)Ӥ$%<搖oOa/@q*~EQpb]xR':1os2MT߿шäv e._rEcP#6|!&niN@Z7Q؉զnV6n?�g ŒxW_vň/GYVkղ(ӬAf#XGdǮbu+rq0{ q({{L|8ss؄!3>O{W\LG][u3l >TOd- ~q",6kln�SXwQS_`ruIwf_h/^2njcdR7w/vD U Ϟ348j"RAj}_ ЯאI)(M#"A- jJq$lJM> Zp]%b3W ~rQ=lwG/$C!yENK=GArA (Vju\܍ sHI 74uJdB/y!"}w*QR }H*t5L5ћ(s>حK$f2f`.WDGОy0nR"mG'ȠML6e:j˛bY}ϖ<PÊVp8{>`-4'X> ~c?eqI\ZRb\Cɶp KK-U#k8; *Hf^d&., .Cko׉n=8T0A&m"͊R&᝱)|ȕa׾}#n(H#9�͊gsU)]-ew (]FT6k81˯x ?GFtѬS;L<Z65~&3UG=A{̭)٪5vp�c-ib~h=a&^Y�}އE9Z1i٫bdUpg*=-86xgma  xʔJz,ͯ*Ap q>o-amO%jۺw2Q'؅W �xgH(tl4; W+r2uQY`G'4ޡ.D_뛘aͲ(W[c[- XMCjiIb9d/0E,pb> 0Iq{/>+S7!d`9mbg ebj%kPPMì`pǹdđ8[NcSe%OW_2;26!xUN&_r[4e)ǃmۊGN* Z#iPEUZm^&C9>_sS_5x7bD{sp{7ȃZCܱJ0Vd645S O_Og +׼ZiLhw?Ra=02As7K2fLLdVI=0] \∑=qӆhLEo2,),1fZ3D \5e!_\^d0QZ2 `!ofqB诅O&n\3*ۦ,݉飌WĭVD꾚q"~j~YY]yBXȳp ꭭rs̪'1V :@8]<#)ȰJ!xE(t q,]UԖ5ƴț/ ו  _=0QPy*̡_lEf)47.8∹N-m!esc@j<!䂨_"a5[ ǡ + &Rcs'C7aU_KX:A:ɺ cG#Wxs$wyqc'etd,fa"?Sm8<n ݹipFsSjaw݆rt[rDuk Gi^&"64}o|+?c. 3E -.AU|I.r?s!LlN %T:<YiJF_#|#ꀺ8i&.X#Nr-Zg7f7t2NZa o- ȅ2p3ÕCvJ^eI{088o?K5GBHв`mRo/vw%e'׿˼&D-3b[ō\͑ZUAgyn-|;؍i mIe$lô @ӡcvrb91Y͝-O.JzQC%GLћbLxnϭkuGA(Mpv9ʟ]%kVΚъe6?{ȯbf.Ud䩩laONTq?0`ÔGA# z̽8q/Mea{s,)xd0Y9xbm*vv(!c Jş}@~̠tΆkJYv(<s _ʾfA8^Ax?20a 6NvԱŋƌ3q#,,4Z򼰫Qb)\$q/3P4 \nvfUM+5/}Qy:[܀F6OOk⊜ٴߢНhIUc!AbklvNKOT̉ =1B{OV|.oW=qpDȭ[F.<N¾Bڃ yr_.z!Br�EyȌB M\_}-g(ڧk2_";Fw9eqcyȆ,#>L/Uqh͙a3=P ԷEz�bE>PX;NI*|[oX=]UʵvnI)V>]ʪˡ"6 fXSaV-[H3n2)\ zt¼kmVlkp ,&`+D\/WМ`]xRmI/?p׉K¾VцwdAʂ*e&m~y.\ ԁD"QId4�<Y%rHk_Ow#"1+`&=kJlQ�:>pH�m(CK+y`+/`4`w[י~MCUih~PX|_PPδY$\rEdWA}bYuKE*)誱m5=\&8YsAH^N薅kQ9G)9{djpF쐕'UB]u5_Ԍmj<tC3+'v&.ހZ0`sxrdUvJ%b. ߾"XKC 'O"Ff0 曄lmZAd2Aǜ1ۇJ \ jNA $tɏȖʍmG ôa>Wn>@Y3T5O ΑpiW%kJӘհ•f%""SG "PDTa" Z1fl$u5M|܈ 5pYu<vcv#Di$\Oa 44yd$9ӿGܻic X -p^/tWV܄+hQ4}sƚUWMkCZI/( !sOn/=W ȑ& :w\1Z5uタz('7lx|_ > 3x\+pAB0ى>?s SFE;EW%FE} gE8n' it1 <`4?# z!ĖU;ȟ#&LNd!X`]ɱ</8;fx:0 v+J0lVHBD<6 "{|3V |7=6&(ӊ$a%{&`gt#p.mFݿ˽"[D'^☙&Netf2k?!":p\6A{IU R *0akJU[^d!<s2N'2&"n]FDEkWҐuE_ ~*QSO~C1 O MUI+cx;ݍ&-j@WղNȋ[` پ{"ANnZ}ęs ߟb&ahkڔ^V> dG@v?Omvf.|ZdGgj>jwjv(̥7"^Av[Mtָd5|O؈Hf'G[g$Xt1J+\V,( 8Ă^zQ/=E^ %Kekq8ѡ*^+/`ғo].F|A?OY0 &BZ*ٱ/Kz&lL3#435 QxA<Acu٤NSx5Kީvm<4I,Ͳ�<[)%G47UЗi>h8125Ddc6MC2YxM|ΚsCwY6Mɝ!^!ҠPI7ji9vE}A#?rVƛV͸.{l+\F۔Xұ2B�`")&xx}"^bh} j3vÆB?dN _b gB·njh `mLw`8 Le!}V]9c@xF/د ׮S)^/5TdQdF Ѝr$pUg<?k)εKC:y$Z"K 䵎�H?q$#1pH#4UW))oY8s'@*ѩ({2/ַ�΄kQ% Gp ׀lry6Ec⧆nw"o;Q#&: WG9 ; <ѕd 3!DƑB[ wcG#3Ɉ+G LJI&@ {'B׎ЃQvyȜ Y!Ě\0]hCRwWaٿC$�kyG!`{+oE 4y".*%ЭWXWbv #>%0`V )ju2Q( *08 /+LuslPZS4z6S1{专.pfXV3ח9{Xo7vwð (fk6Z^ۊh*!nE"&88W0*Ak<_lgi G)o<(+lX CF;+U?Ӑ.dD Ȭg4A 6|V,kx=0/6QP hH6X s+#qJyö9uP-mַt,<^HUJA] jNi[_ ꁿ:oنKYR*w-B¿ D>kIڋydC2�Q'&~+Zoj}r+k6qƯ $PF􄂙лQn}?dvL1�4LYEM|i8꾅pr6&LI#%NC&Fsf3!͎/ZOi^DZ8rG%&􀇜>_^=j0ȟhW*jrPFzB2RhlCOc:Z7Y wW^96W@N)F@1:s_^!Er٭sΒդjή 5XpVdU_,A\~m S+bVZ:vꂑIَf]Dkrw%n>h+qџG 0i1Ʋ2SNw-Rgf ?5R*IM,g|dx:!t6 {p2ڰ;syX].D/ +*(].~7 r歠HVi�|> -v8|#;\zg\ !`S_/z4//Ğ*8C:sb^g;gaBֱa- $4?R q|I,9?43lM66FiD鶩.pRlELs'Zß J{&G"?͊>m,A}ܡd�fz v<um[g0 _GNQ ǪGxyjwޥLGw&.u-+CYx]Tk+ \Nٝ: bRN,”&Pz3RIQ'yzWS'Y% q�%U %�mŎ>*H`h$ob{1ȳLx=T�%(-i>OFZRͲDB tɬYYV4^.(ڃW<,o^T�Y<Ǹz{h`9#衴&]`!FJE #f`]u0/bٔ}}#puXE)Y`0/K.rU"qqk4 }zJnX²Ga/UGq2)fv(Ո4J3^"b0^iҬ(؎@>,҈"qWdNfqeSC 6A>iKNh6;¶5G sIAq-5L^-ROn أ T7z"C`MHuK >rϝӪM2io$ J|36V<bjQ0Y48p1' t;wRј7(j؛MGҢwu<{JX(e~Ҵt`9xx%y*KP9cs*"ﲱ)9&~(/W#IN!T<E)bC[0?J4ps v}|Bkq:Hif3-d4! _X3 =(`~m;'kx{QHIuW}!<ۀ*4f$SlUȣ!� E&fA{chl|i32"|CZּT҅(W"ݧg6.E=G6>�T 7w5߶!.Nm﵆+/kV:&b=`9ZAQ _قŞ x]t10tأ4U{r"E GOy $f ̓n4.Ew97.4f2Dę_|LyyӳC*gtf(=yv-EZ~J=hj=a[kxbeBu%<KQ w[GU]rqa: mMa 3zq\jF eazXIS3#aD!")ɘ-AL� (U6 PpMxV޳Zo,al]DaA. E= zЍպox$ƾΙHd-"Ry1�W<*ý {uD bԊf@nAvF5sbcN?Ukvt>X:$Iޙ%!a`jm6gB^o.,m|MΧmWo^۫I3mjv>rBX{J&}yN/f?Xxh7 EdѲqaG\>1oh023fbdaKbPZ[i�-loưıҎ[q+j?i1~`!6ׂ1}6"ZXeS ffvW::_zl5}=yG<a<Wp餌GK1߲!!.qIT҇KA19P!tMGuKnk{F_$VSʻ_Wsڊ�/Ĥ,PS%hѦ!_JlX@19͆6 LeEf&'JиK2Z%4ẘYi>̚D4H+:k^lƅsʏN&1&rZZj`g|"wR=P~5#MOMXl^JNZ:J0T*C W3)/^VCY/}^+lLPmT#k*s:4uT$}PiV$c6\@-ip,ڇs1CG 7~AAQ<L>9 $jp] ?vNݹu$DUH&}!V9QWexҘDYD[V}e|ҁ뛄 ,/YH1&.LV=T6h4$=aGLT]EHh%E)٦$DJ<ы}R$ GiJEw%K, ٝ=;.i 8<@;Eyuf%dǞvl=2Dpթy''<H&@%6 g RvSfZģ(lK.|K×ώtܨiF;%VEeMo,{-K1p6aoP-zw>7'yƉs$hњfEyYވmvF뗱LƥM!Q2ckm+:l7nJR{7`knT^C:[LoUuC|pYQ>8,*/ 4|&$p}fL6anO+ctr:[z޶Bй`IQ}< 䳾Q]k/BYhOC$Qf2#!laYcp`#9᧑ORnzBp qMG FZkZ^3hnF8x~e|Ғjs` /;BXNw$s̻zyjo5(Z*NQ{M1>X6z}"ѦL2+9B,59)k_Y7F571Yw4o lJ뿈#}GTuaE'uVw1ݳpw8kz"kjk,rEopa4%h^x3c]D") HH9((&gO"jB9| xvӅޱ-K—U.*4HHZm5%Bh6Zri<WN�]+'la!% y2^ul-ǂ[ħ)ב$`5VKS e:gbA>ͱa;j6e Rrو>KuL\!-aVV\GzY9{+2]/gH*@j#r0߯<$cO$ڸ{!|b{z1Р5)lD+5Qeo*~ X o.N#2eJڔi2zMI1Y~{7:VbFOTX e`n+5YTXjBdn�-lu2m00`~2>.Ԛ%WteN)ϬbqȈ@:9D_pbkNmu?pU 1l5Ŏۛn Rthǧ}}i"{LHCeh̃kDN0b5/8 pRqr D?JO"ytD),A8 g0y<wMW(}n R W}BGD3  5tO6 wa6|06QMr3f`WquEw^h<<14xȶba f+w3,FBB^9klw^)(Dk0|QPbaɁD(ջ;m2R4r7C"Z%B/ D*<Hp# M rcKwXndzd%=kzƻý {W6VG!*PĞM@W;Us E\,y8Scq"d0`WZ3fWul4B̃Nb H"$cXG)[Tt]EG9]@C;sŐ67cr!_6 Sr_8,seL-m� xQ�"a;W1_PUWmǖR&;䖧{h@ˎ\h}!=S_cR`yd8,UKVYA1N^,M}pHK$C%);UD:*ˏpX6XQ sC0@U GIDR3<68;{o$qY[j�nC|)jhFsIE\ ? K3bN2u܋wE H}5:V qit9;6MbuabK\ؿmq�W Io?Ѕu\/L+_" 厭Isq2ԇۍ:teC)ǒ^G0јnw<sK6d&2SYaQk6KY~C f ]@]4׃9$|EMN낖A6贻YkiUmzHGH\EpOcxc3k㎽ v&i[ւl}m 1e%#\.)y˕D8{څ~X t4t3 [N <Mirq'qJy { CeMwZo&,8p?hf9(^C؁̉,aůsuk)֯뙊2j+n[pBu7bϦ2+l;,1P7F#+wĘ Sm)@-3!`ZUo zk1rVn@-c٬MlTo^nr17g3-D Bعe%|./k0&ܖ`6oEUve>ٱ y.<1vS`IIB5Kv Xs(A3T)#;y;[Z38 >Q&OԿ)u4H}ߞZ-C/t9Ϗ2؎k==s״9fD@_#dn*6 4֫6vvM1:_|[n5y浖"#WJŨ9+gngm#p_jI}i #SV88'H^>R8 FSVW[;Pnc=w_\"XXUsaCC^V pA: d?@F7d e*՛k;#&0ԕF.%o#7.> jf.^-{wlku'fzI0+O7ٮFv\7:&^L$La׵"0Ze.gngX+X͂w 0ôM=i߾r댆ɫuY,BhU=P@ 5i5䱁W(5n,ŐtSUCFVkm9sk\ H2J#vLukt{N[:HD/a|}-f2 d\ɦPڛb}tCr!A唗\ڃ޲:#1OE24韛/d#.8yWҘ- 0Bέ2^+( '}n[FІ{ YNk &( Iz1y +4_F۱$zS1K=z&VBW?:WN9{TZTs&I;Q:a 60. e.fa9nl@^d)IA<H3B FD]*+Xg5t'iZ&];t~}R7pJxS|Q5R,ڇg~πih6cp':x0Щ.&sq-Ad`Ϋ\fύ1PTcx~y׮I >bJDn urS_5Șen#,uy5]FZhAx!5Al @3NS}'jh%܃`l}f4AiG B9͚X;0+$Vh!cU\eY,si-mYzA S̄xh(é@b`ʝJ:aSnԸ@#g4�ey-Ca'F^<~$0ck|Z1')PђX苶ִf}&$5l$�)] . ͺ΄ާkִ0_Q>܉|G&9ըdʌGV7NPom|ueI3"a`w/VqO g]ί@SD!n3/{|~8[U67~1&' `ȍy.ULRROkNb4~JQN؝(e,)jbS`g^P擡$wa)EೃZ}r gI@ 8]9 qۣ~GWv\lѺMuq.gPļߩgW}kQ4p˭"qmݣ wty�K]\79ILjbW$vKo5uҬe.׹@$"ӱ W&4!{o4t*+jUdʶ>(ҫWބifD`#g~. Un2w[!-LL|>ge~s-~zDl=u;) xzĞ:gV㷑lj|;a96#yzn.$x3%�ɿoc0<H|5UB8a9 gkfo~=l{#N*_c9dk>i5CH׭&/늨oD15Z("3ڷ)<ItvjT'Rf2(_T&i1I 6&˚dzr 0®Zg}RS{9w%ĵ)f%<oKAei$+V3.o1XfMgyW',;qb`?uh(pTX^"4<z%oSun28o9fNzY 4ʔgr9}6e Z<1}Y |Z{pwr#�qM_,-̬+wD{y9ֳp0t")IR0�MCw &yhW jf> ;MkUm4ZF_#R�Q'만!<4(5v(Y6zOƳ~m\;,LX?qDkݺyi3ǘ1Ew߹VI83{IY#U0}}ק]?a?HR1#ZѸKގ $T:%u]n'&8&){Q9�7xeNoNmt9 ?�oy8'uW7+ډp?7~98eu4志]-X9{Hh0f x3 +fZ3Z)dMe,xJ.<R \c΁Gf&D ;2^pN?M'^UyFUr`b/T`}+%mG68VXA*W)d)7&PAG+n&<+֤17I0"˒rxhaR%ůu[ 6a|1S虀}2EU'�\<^؎HJD`UWo%׌Ԃ]kȷAIwȂ?yPMr2YL'c"|l>ٗp<i=bҬ/P.B>n=܈Y3wܿ '螚%VNx|5kO S OxY&+Y2%r~b:_B]#Y^=@*OQIմ\W;"Ooh%Z aI:dJsXfY4דXN_Aa_Zy$^2J)aGE~#'<†q~MBdh/zni'Ǣ[ e~]ݱQW~Գ.L=(0/4Pf uW kS(=ޝbk OO/Ac(ʪjR?&f^`2F }[t4]?8m[.ȴ 1mTøң}\6f@ē@/",B`2s$Aa rb}GK1&rW5dbgrbDgdS ADur2֏$fa,{O~?$1x\ '̀H(1dy, UH8/D;hO{@E౒*GM}zVv+2.&bnï7gfo(w"}8}ʳr K_&S|1N-o v~VlqmVي!oTPIJ yZĦy\c8sJjoHMQ|$Dxk0?wA$?eqv$%J_v|3h2@oBqd@a-iߺs Kż'M8psTfp=_A64�: 0ShL�#&e$ 9ּw"+#dT*{}|tΥ~ƿ_M;2=YnPQ,߁Ufbٯ@V3W v^g{ٗz<,u֝{e]ZLm-/מ@膱vn$*1jڋ\G@A 6<d协iAWhC5kң{DIcϝM<v&K<ݴXAQ+tkɄ:qM'g>~ |Y80E>Am>Nа&9ݼfn<w\^j4MHEŵ~x,hL*Hd\ ӖV݃BdvY`oal PcV/ >~{%<[C㯲'u -n7lECOE |Vn wfdÿW\X3hLRK8hЦ@&SƐRm< Ƕ(doսEc4_/()@5y@`Uk6˞o䎒 aOhӲge/i5 LLnv1b.ꦛhp#_fY0t/mwm*"j6reEv+UEtcǢP43n46[H?;~KY7J,GOcq0=Y!4u)gCF_wu,pZMsG3QG["lR7U8>ƮԷl7pWE[.(l3ilt!adRtA7[}J/7w:(zP3VOtU#5Bp6&�ΌģA/H t�xYԷ)9bH  �72KdLpm!.M`Ag։u|nQ?.fMD5ysU@leҪ> &cw(e5Ogtf-E}'E A}6 kg{$%n[.G%ERѕ̈́|QsG<kOqb:ٔ%�`$WhR >l_ͦu?o-p5{r&YHODžҘ"kG7'[rN)jLl Mŗ:9G%yyCvnp7*34 3iD %l18*֙o٪-Eo` -[WNi8Zett[&D!b� S ˫/E6qHͧw8YS¶QGVX+L;՘ V;IT Ƿsn@c;C$%2`K+GNz3H<'Acp2#TWV8Ҵv$2 ~;y 8lB 1Lz!4<VHU}l$4xӤ9_@ ;N&X&E9_9󆯖XD2}87@_;37K`o׻ɻHuj7 ߱f)C[)|x>&] CBx$EPؕ}0`O$=f If$ioEK)SMpk YgpUlLjȔ®e7ovM-ke\{S `Z캜k(#tf]2ySSֵBjLp+Lwv*g3kUŠf{BRL:Z|r@^NHG>\'7`=6+CN{ ~d;bHzv3#Pf&K ٜ uV<|X~`ã8(uo8]:1xYGm S�1pA?%"qY}V5$|55{\HA}恝wI K<`-. EfIҡ ]q@/#[Ƣ#'[hz_X5 Qԁ*>f7O\U+vT3b&FgSI<9{(͗Z}|'#ܐ3�>1Tqh/K=G[Ht}0mL;MjX5`QШ0p܋pF0 !]\[`M ¶Y@B«u :)'f/AYO"8qAO8{gl_љߢ<MȑLs-2-H@2M '2<:/B&=3 O%0<Me](.u8dž`RO x:IvXݥ wc Ck$K P`;*o0D+CZ{ݥtB - 7``57 UAbN9lb ~ZcJ71χHveԠ#xgv#'ݟaڎ_%[;'FwC"\=&]R. = tŎbJ`50ta_ҁ[/\*1y;"lM+ Z &/¥QGXy:E)>P:@\TR6v3FAR#QQZλaTRv\"դz/0bQ*xCX٘籣X9üfeI2F-/{6HG@ qg/�Rsk9ez.FVU:/4L!?E!4x_iE;ԣˏ"+7 o>*;unjYY~`+rtaw(\,NXQ“b8mؖU*6 -( s/@#\=!{u+F~Llg쮭Eu-ݹδh7㺆,ݰ (xT6-L-~Y >OXyj,0z:2Jb4Yg<MFMg(SyE ?Af8:,CG"YE+0,HOn LGb]tޢt[!}d8DooFf8R(4cls9# hZۼqi`dEZHjgeZ5#?eKy.h4S '02_;E'4Ji ?aFJuM[b&B|Lwn",8WscdBJa4|S_� @}R%vWGV9vbVP?l֯v<)y&C;pw`+R{s(T HePZ,o\2s:7?}aE3$ބ΃__3\B׌ҰrcOeӾ%WSE~96 U%p?}9h:GP3}ʬ l󬐯iCeʆ=-clw+e.*,cr\?$mܓC}%6Dօ(KNhk y V8x.=2a[CgmN�{,쥩։{ ۀT}{=Qr9@ɿtel_-}qY/EV`+2yꖝTK0f}ū! %5p-"쐸@=O#h<F92L%88?K 5ٝ n$w+O#u){j\|@-L:gt4մ2y\д; 2ޣA4 g+qY I>纉F{Y4Q!Х_ +!?߽*B٧E ŢjG38PYvz򣽑OEUpD'P*)yj*BWȀՃԁB�kh'TTnߪ5\Q"$[95^kεWӪ6 hi=Q+mxު4eTlIIWoUYT!4WN)=U�ү|PV="rEU4`vB8`\ݏРt-DCae>cn Jv2]h"_'vޓU{||njĢ4ͩ힘ySKLg^_I;F hբ+WxZnEֶȳ-*t00VneZUZ5g-'^!:{WFwyuY`wF\t]!u }:d$ۛvKˆkkh)w\`+H <NU,J҈F~$|8 :\s:MOdMPav|{.G(զG{ڕ-ghUa*^0Ci  i!ʬh{J@6M�NP]BQ®P-xpvQ& 5rbJnҠVǢQCNA(!'+n *Ҹ+UP+cBͭU+uJfLk)(T Xy\H>]bn/-kC=~ ߳^.n(轳si-x mX$I0`2p^:Q*El-bLx0y(ݱ??-qem|~}ټm(^+#}i|-H75|*rx%No8�d[uuIn UjJ)U'udꪐj W/*# ʹ2w\bMT eq 1]cpQ烴Ok$*&@PsvH>[2gj\N u_q2/r;2kߏu}^Nn:p2B۴- w ~�Y�<DmHTǣ)S|N_%rPT%?o#^{wxjeF3,F=,vZ 2SONImC%?m~`ձj}fr2>"Z7udjPl;b X^HZ7BT@#:TrΎSԓb{{A׏ }Sn +:~Fn?]nI;$?zfh`,LsiMTy_~}Pl+7}mg L߬f̙|ؘO{*{)5_ģ%+[~ eO=4vhx`lN"J+F6nsxz4ƞ\\J ;B ~&OO~֛OqEN4CKTqA@ΜXvj-9E4J}T4{8\$Nwk2a:1"ZclE}v20#*uwI=ҏL|"p<6z+ٸy}c\gB%I29kWgKYCQFGSSMN尪y7!(H 0f*%3^kLfOůOw 1T5ӟ*SƭUE'cOG駕n ?h[oK-k֓v3/?b.*H9bԪRx`ے9:v6I]]W�LET )wU]SS 1ۄƹ,1ʋ/?mu"K@7`,)cB댕ZԓO"v#j<P:F8ᒑE炖C?+%tJhe}eö%QD's_gQގ_@j{~֎Ė Bj(=ޢIzxJϥI+/bbeRN2lY[(<vKwG'JpeIbje=C ψ~?(W'կUwUs__GrC&a}F> VW̒gl 1/@,䙿<YO#7*w%?J3 ; 7ANɂ$ޞJBοt+75/lx.[SKp`KRİRꢘ4i-qi*>#13xpTB #&qH樌M17Ja`17"=jFUH.Ҷ?ZWCCW!r \*!:_9 nYDC nN>(o1~k;d`#��ZD�%)^�$m1DJYL[ɉu#h|m57Bp9'nzZZ-&{Qթ>FX^qt0 `]M>.p'@]IX f -1JtA>RҌL[:r=0ҵ8㤆Ɛͬy1.rKG_Lz^@,0Os.i9XN{#ZY3f1s .-(Z8[ D; 9y2б5sJp$fwu)5vĢL*"p@ї�ߡ9#D%Ztm򓁜N*kkfZ!1uM! n1<SD*~ ï*ęH&9y\>%}maNhl3& 4孹  !- *aSCbH8Yx?PccPM^%DZmX0 l\"[4(r++WŨ[6G9]ڇǤچO5gg rЂ+,6:#R<}4Pi</}{A0ʵǤ I *2(wV I xhVNU+?7@[IF?MWjJ'7Ӄb;nw+�an^'Bd^A@tV\A0~ c 6< q`M bQt~t<VRY-]_%~6iC& =:pۊ(\ ųCfVAhVw7"L2C8H3skP5H](վ6nHWW+dilJZb! JCFë4dUj1<}{ VѐU`&ɼ;tH5#![NAd*Ќw >2Yu[奈)@%ˤf*bo/ry%f*%,vF#K:q 8 QwDD0'OM\Bi.MZw[WKIv?iu_ 09n0wZY1'SX&}|Bj+ ^5RU {-:qrِG]vڶ666Bj/M?N�]6_B͑*#2⬕q.'n#\pD0ƖFq=' z{F<0cq%zf yhk/zn6V4W?0I|.lxZLr^:$^Q?'W53A/$5\2}<{ <O'n"dĊ=!# ]|]eX{B. H{?.a6RqE]C+f!u'`2 15B'Ofɔ*Mz]q:W_ާt,Lva~iSYuA+t ]x1o̯1"SM5 ^hLww"^}dǭ 9Oec{Z .IRe%vQE0<En`s뀏h8kCMdQ+ dB65uLϰ<@tw\* ȴRAV!ϻmʬp"l- b$Heщxg9G, 9Fr' d;%'%vFPME(#",v`DV<| ,!'':2٬Ceǥnw+!7x )"15Ultc-/>@? Nwڇ띻A+c]ؿu S ۞6QzOIz9N mϷ"zmH/w@`RK3 ^z`\՜zc`o*w^�ث[?O6�U=.! 1ssu 2 8W!!9 ¯PN˙$d2ԕ5Z{e2?-My{_0W3$I@+2&4s0(/ Jen c$o Sɾsd76t L])LĺL כBрP ώU-!`ǂ ,>it&> "T倜@"xӴ/jub,sz1%sCˬqad^`ʵ]s{"NQ|4xA_-? O=lUb'Qga5UAWfφ sa_%wwʑ h寮_eBVmXC⤘|_H4g׉%gy!¯َ8} Iưh10L,#)bwm}Nypl_XDžˤ#ax $u^?\]$2;~Ae=34e-chc⪾ǂh/DV1. 4�W ܒѫ DŽ` y|38k^E#UY%,XϳPc<Y<F 2ŃHٓ5 BrTȚ~OenW+ؕtؔ+}.,;&Z0Q"~a擥@y |8iw;|esn|p= l`}V?=OotEbV@tte%zМ{錿Zn'i^A<]ݥ>LshF*)}̀`R"f;HO_C}yLjwVO&?y1֥4c'oQh QLCsa`Y 1e|fIHk/5G!_"\Ļ\ @v :{F+C\`mw~Vأ5ِ[i"A|t<^ 'ú.n 䎠C2debuzfey ҂atq >DאقӮzN;oІSwQr2Y)g_5TvvJYcޕ|(NQc:D ^;}pN-go~P򾵿^Ų@B7ޫE3:wV GyخVas81?Rϔx "w[1xL;54.o݂DNpߜ08jxة>GX! f<p7(2?XQV10OD{7kM2dwDv wWjSPwt0poEیxtAIg )<mpL/;,C_LtS|4YLc7cqdQ C}bI{܋VB˔ ˬ&[ U.)l+&C4]+^K:0DsP#vLA5&8$U=Xq4i/h,W(eۛӄeHO$4Fģ\*@!]_2p(,ォ<49ʵ9sr Ѭ*>9me fgYZS^-s[]atNJ_(c zQ=L~\ li-w$fhKccs`$:6˽_!Rbyޥ9~ *MAcڮBu#j6=-A̮UW{S<XE@*|׷6 ARe-Qsx L؇Ze®cH`(N@2f@H(1n75ƿF$fij 3̫9.bgL 1 jÃ͈oCf,U Z<gk `D*lWȒbgI2gC׽c2q*uEiN9, kbyVMj[]]WKob:8i<mv FY/)Ԧң23.,\G"ZGU,Ytyn#2o# p$j7n #bT0-Ju17W OAFŋIx+sR2-DAW\Mlf,}(%;y#.Vkd~3y=x0 ;eH: "fT 8Γ(+"չ}=B>K*V}3u6Ik?rDRE7IuZ<:T5g&D)0vN/56ܒ%Ût%jvnF"f_#{Z"hLQBۯ\mE$fB߷Bw!t"#/8vQ}sgayD酼yQTu¸|I\9v=)V@t~x<ښᳳa蓛HNɋsRGj\C�U#9)!oDM-JɁkk`E^fY\wB),EH|)X9BwO2H|+!d?ٺ4]b54QH%HuȂ|JO rE)* 5}J&8Gg4>*)$̎5lr!kW1p>8tGA X!RK.5W͊)O=fK"E]JE+THZ1Dbp'%ҺA?[+ nc"rRˏMTwlg:sh`k/l$Hz" b8N|<:(Fm@HTw+ž>m끿kX"6()FxT^~տW}0T4pVՈDO6 ZeT0ŏZ,5ǒ XbD^5RZ ,$Tm@\fkzIl[J H$Ͽ.e4]ruDW-1OU6y]!J hoϹƐ/0;#0WF1r~!`:0,\޵Q6wS#&}:("46dSNe͒ Q=˕~>'ʻ*|J9ƒPOL .&g BD2,xoOWLJb\D?δk}H>5d-�^TTF,lS\%dX),6`s1Q_d6/i^v+ *`"2A '9&W.rJ7倖Na `bplL:S/&!.L,O6e0^ }!37kC0:(u|Cu9L>$t6k?0;hёwf�[D𼄂e>t.p`w|6dreCr9>70T<+yd̯=" Pʀ\ӆs{ly0&.c@FwRrWv`kn,0P׍xCrauԼ#^.^YH׍|]o 0ɋ bc82]nEP[b#Fp$@XzO2۟}ͯ^dgj=75[a6~*Mvy|*83m0NIxg෱_9&J:8JN5)Іouޏ`i>*>& )[vbTLڎbP1- k i7dۡ <<8M7:}k!o펍Z24'еs ̻65nJ (b{p~{;6ب~ &ڋv}9)|]L6IF%JRxpHKv%6;MDᩁQFJXX>ugA˜Mf,*:"m 9I0n`ڽ"!ÑE#-7)I DŽ ^$ݧT} [sH"ƵY:"AoÒP,$b>`k}h~<;ޙnjdC9Gx\1<@9?2Ā8^O$|1tB"�bpH�Km^eT-mIך=sA'T3[vRe), P4H"3pXF+&1\lAO:E0l@P@o9#{.n#s' fO e`̄aP28H2)gZQʆ1UPbbÆot%OTtC Vg �mg57)N3ϫОez}˼1fDz .pZ@՝vK0&2!$:嵝k;/-Uchg8xP>+o.>zr8C\vunu>7^Ӛi53hʘATp9'}e$]>T ?"I5COx^�ys5 lIMb':St=2ۗ 0P6Imp\n.hӓC/M2C-+^e^qvRx=qE>Ԝ=2Qm~l@YaSހtRMmuufmbBUr _RA+Jzzi,6 3P'ζ0 ׋B|q.mB=;r}>6M]ME,a n-}Ϩ<TKȚA[J&cWQTYk'7<! Sݚc[G9: ,& 4A#/O1Om=>LjͣۜM]NT;dlk]7Qh~8 1m^8J+˟LFd^]\a1q=Xksr8?k1ʃX,o KȂ yUEA% L*f@zhݺrC 9|!yl4}znylҀewU31*iwڬ:Kqwk㖾H(2_H~fvl|4ؾ-,%"롘uLZJyQ{0ɢRVveK /c,)}Zz(f&|#e.:fG.܇x[e1U!q8dlxQKQHVJ хr66oGrKes �S0/T5Nf G23t+l3^j眾9Z8of\Y;r_nUs2/L/15@ƸgG=?~WR K;Z sBj0ò+69F`mPs=y>(|'PFWxǏ �4|@r0ǝn?8G~N}cYcʝb<2E*1@/17Ah u\h]X? ]h;ٗ51ݪIMWuLkXHڭGpR0=HH2v؎5 6\ِ1Rheo.Y'eAgsLccaTkvw^ķ P9_m`޷ "c UA2 ]R&6Jpi'u])qrܪQ}lB4MYC>!Ve+%`lY'Nv?Y)Tj~U0w^Se<+2.=_n 阴 .$[Yoi# \,`֝<3[WBi4ptJтG8銻3PZ Nlra}%`8ϝsA B 1|AlmwhT}N\9A8D ɞupUP]a LB󻢗56h 6?ciED׶Z6S*Z,i/?�|5F e;m>Msw iyOnSɍ%ԗyFZw+E쐮1<s?Zۡ̍.z2)|!iیb*^:<4LNW[ etvňyf`xΧ7O%(J(�O> uƞ*Ѐۏ0ii=,B{PᠼͮN'x%&jY6w@c;#R۠%Q.h޷3 TZRemaKf}V# ,Bwh~Ka|"jYCu~@IjE7%CH;Gj<fЮƩ1N2Z!71kN* N: _Ͳ{>>z:cU]ҕhEXVwvs|t;K<.l|7XM- :B X`Ba6V`Ό^eœwN(JWh{Α谁TdЮ}wAa3JRj`}ZsȐ\:8k5ʧB$`1} 7߷wyZ?󯾢dk2ň3i} r|tvaErW̓Nǂ�؝xKRy#]Ŋa 8t\Hޠ*Lo_J^0ZҋMV#)2/4sM;,82 kKIr*73|Dd2kh~7gsn]]ȏw^R ?h@²̏(~p)yP{:z-Ֆ.Epr S-%삜b*"'Ɏz~$;/;Qw»ِbK<ީfRT uǰ=|t'}nDJL/c..6I琏 \ IOY%QrAur-;|tv Rdif ~LAzqܻծ=1uvãv+!thZd_ΙNEFF*erTS۸Aw9I[Oo.]}=͗U׽uҳ7w-n j�g;䇡r ĥH$CPhֺjQ}9s0tB^~Nx:z(ٛ,R\"9*H1RI,2sdXv VfEkND3p\J0i�q )7ZO=$N=o\ Ìkr9~>"!Z~GzR?؂߽|aLO@V_[z %>| (3|�g]&Gsm(PS!'Sh CPq.]cV/pcB>YsP>qEq{Gp>tpZ_=!o[{ˊֽea?Rjcݺ'vMNu1"iB6ZLv5`h;4n<>vL"?E顁" ߝLtEy_Tůđrz&-9&?¨ ,@{ B_gLn�s6P" ���'BY. _U01*U�AVj#DC`%#pw 4#ӒaCKӫJxw3֥1_Xj92^p+B㒦;jaNJ}O>ݼ ʔ\qzy&K_i.ۋ4Cr:N*_vcɛ,'ɓK֕Fkӌ a |]6@ɨٕweo.^vjVv, Y!m4=Zv T~M;Q`}'anut Ϗ΀v仩d'>! ɘݿ6R\:Shb(JYk"G,6~LhΏ&sF`_V61Ln$wg'" .֖? 2S}S)s܀|;fIk8|2IlꞑŃI<m[zUD\`D%Ixhnn޲ʾ&pfkHM!ϵ$#>B+âK`Ļe}҆ŒA9gō*CM HmieF&)]_h{|07 M+g++5en[-<S Aީ< hVjbBo/�OǠ NX*h? 2t pLpOq wUm`6cdW@#}\|;;VV|:^S6O^<J7ѿZ{/P_v&8~TR|p*Wj81-AYBXMѕ!` uoL' (m[tj%YG?VZ.heJ iuK "h4cd \ Ga+(ȬsoY~5@EyL{L$췴Gz%jgc`7P%v⼆zWVi.?/HMU e4Z|0wuioU}D6PL@g "/y4\_ _XvJꊭS?"5-l Rb|Z)>4F\4>A%ftYN(h"<!prkP~_y(}O07`W{9`կr.6@_Ʉ€@K# 1hl[Ps5ɑhPAHrw#M=?n͚N(ϩGLzM]-*RHUշq6B.t.g]NJKPє TqkcqK7jPHw: =hd#vO : ȕ~;MS5՝]9(fLS`�Ӳ;l@Ϡ9e\8?_7$4 IS@fG#^yI kipW"$H\+=9΅QXpo[fDWĠY:?^6 )=*UnFu^՜ۙt|Ԯ30Y B(C%q%e(+Rg==H~�M)* ڥq㾉&ji* WTQW[+Ym˸s+\$n-,\ǛRZYk%jIWށ42.ċ-\32�f? =ZP Ǔc^"Ox(ursَr}4Xg: p(롃3iΤoPиF,ág$THLmF>?%'r|/'NJdհ`/*婋)A>`YڥnȡtLe 9uB1�n/1Wڋ?;a!f@ yd7 sO;54GOx45k"4r<㶍y< Pv 7|٭̊~uـ8h>]'lÅ܆G\g3S73mhŶ*V azw~GS}b@L'"YA;H+-q"0_<$8:c0dֺPgwsT~NM|mK; al.<r&w'* m8i6iS7c{k5BPL;PÑG{lܣY&ir6-<׍h.nW0 m EbR~9ƏEj^~>(ٝ\($y6T ُ&37y9.^?g_Q;G77Է�Տ֪HG_LhL'MT\<7u8_ObWHtb۰׊s\;OJeW|%bwk~RIqJtiDb<`!Mb%;mT0l``hC$RF,Ķœ([(4bh΄)N\?&G]; k*\O>lH+k[}kQ"<H܉3cvQ++9~hBWV#4dȮmfԳ|R h5?Q|FZOuu\utcёAC6JS֤Mo1z^\p|?I\& <p7ShK %Y"*Մz@l- U-dUCB$l)A;: YkzӭP5imڦ4N|^n߶)Xz&/6 芒-rLj4& P_->jF,{E<2c#F(J8p'W'ٗ& viJ_YBC{ `[5G*X|:vՏmG^5Yo1^{P\'H4RslOpFNr ЛC-LaωRx'W'i$T+zDKZy ݦoÜb]KaǕ';|c%VYof{1`"%Qm:Ijmh-rv'm(ǀ<%f$(oQo(-dxˀ^3XtYg`ZD|7_wUsV<Uw8f~a9v ;)L6E.ש2{>IJXJ#]-HXSuAEݤ5O~p4HI[Av1`YyuC`q#dbfv )ZDW0_Yes[R@0ê}T}Ne+Xٽ9Ph@xGO+jb/jd^3T\hnTm4bA] 0tˆ#aWa Mc]s/є]VÓj_ -g8 =P|O᧕ aU`|xQM\k 6Pbh,Wf,b{A^5o P@L(YAUU Qv}BuQ6U-o|OGl aߘ=ڠZzY%LrmQx٥T#|d򃱚i<9 xl}}>ytLgZТ}~?ό8Z|lѓVespNޖ5^Q0K}LOz,v^qx - 0~дIM~D*#5+A{|x4(ۑ攪d%R^@+ktocz?nzvd]/4~2a|(y\Ϊ̢~D~cC?g1^0_4YDE2ɫS7O[W |_<P`jq65Z\ /aGr}BJX!7reU݉'B|FphTԟؘ.w\%^}3 wx] 0$uHgM#'"*4:3K@齆^)XL�kYK)?ոip;YUBE )Y`:yWq6A2-7z&ec5))ﲆO|qWcapB,!ׄcI**qԽT3_ 0mf_+A^CqD7Կ=K/TP%1Z@C<eIxxdEf= ~,~j%oYib}H쿇.sb.;Ua _r˫ךv`ɗQlS0/`}~Xf2ĉQ -U Bm5^Y;#`i^Y X;wfa2|J7#ZZ,utApYZ 4Ol8(qEOhղU|U&Ս<Fc/*2Pv憎$_Ne|&}?(Mvz*{)QH)YT cW2z2w]M?ۏ&(&r1^?x,7?1dE_."FVgdOʽ1Q* q@v(˯-բA gDM\TF^@k"nh.ùXr\p2#VWWu ؄Iڽt,'(~ 2e:G }D\ !sr9ۥq5zfBp6o j Fa6OtaVr7׵B8>‡TfOёy3cw269xAd6@A3cnIhW$&`n\h{~4ݟ~|6]2pP}2uםᶚQ BlYjIWp]"C!яNOf@dOg qqQN, .<CғT1@sV1uw׉ '2C㧎#yOETi4#cAч4(45*?CϋO &�]IaԨEHxp3{p}.㣈וֹA:ݝsE> **ޤz֐5I-4Q嶢LyȭTPty3 h`Z^Li!uKtFMR#x'Mj9 �<E {;7l{_0X<̋UrsBh;Nyd/o&H,G9qs 3٘m4둨]*/#2ºV ZFM<LJT2!C(?%m{J8:9V=^z X2s Jl-S-LYei~KB6$FÜ>5FW_F989yL8$#(3t?["_kґi.H}#B즥{F4/l2Ta[3M&>޵<7cu 3gM'$Ki1zQƌ4OA~l=X'mS;Y|:4f`γɌM 쀦bdӎhh/% .@Y Dar!ШgvJj(xlԈ1a8p'mU}Ӳ͹aG2! ')rneAgS]wFS(5B&q:Q;գɭ�W{pAd;P]t"_oS&4f®ZyFŎĖ'!s&CV<IF%TZ؍m M=h38>Oμup^^_\ur  G Uq9R)r9_b_ #${'*!FW"Y+aj\>fVA d7L *F?2"bQ_`#&#>lDMFJnEo"[S4lWڎʛ9xSUUQӇB?*ЦDj/GNkm CE)gXuG N: " 'ҡ-nNm2( F[Tj 3B�I*NW ?4r`CE<fM2 s΋?B.wrX=A Sr<*xA3>*ī|B?ݔ_ĺO،sNwUa*jR57D$tL⌣=o+2#x_d 'ZuZ(2k>KeR|ח mՂ~DЃY%sOS8MNOhp7"g\(ddГd V1djo̺Tb ϯO*ry;;9uteΚ-FO )аfe;f o_BNCbha*{<I6WAS >4=Q}xS=$R;j^ITG:@i'+cIcFbp8P%T~!: [= +p(zC38VY>Xꋄ36d~N)L FjD)R#ۖ5|T '{r3ϣϨiBl˨FZcr_?b3))W.Y+*+7RxE°Vߎ&pzn5ƂB&(=,wly :qdQb-`s4<9cU}5~OUeǤ{M%-�O_rFgm3]C1]ŭuhːD{S/ӟtP^ڸ2] W:ecTF&!cTF◅K[sZդD9cx]]ہ8$*OgRkQ&(%2>v>T\ ~T,K z[uvdVrE-G@g�jd@™HLL9 dEjx4<6h @[n{B)5aB[CfT ͒r'}ala2=j{MLxqO@Ɇ@}{J+>cD1U,{L(Z;ERͼk~/F>8BqS)>ל7 r4̄z}}Qo<ŻpJ՗K#-)+Bq˞~[zMFޱ^~ijzݒ);m~_$'7luGGfP7w&_Ke} 㐽 ,۳Kb,>^.7ĕCBw@|PYks}d`d{k9eDi(֡w']G@[bꈙ5LƦFlPʄZ**Lf|VPV<c ކujb͐ C߶fO*8h)a:IO�Vy/ _ЬERRJL۱{,73)0Q~N*x^ӊ] fPL$BEޛBk#zzo$r-.j*Rc /ޣZ$cQyԻ5y'S<Bժ9 iKaSk+0'c>^ehSKzwo# ;raPθQ5WB| @UG2V,d6 "n!18@{ہa9N|Vut~g40JSW9[ZDCcyl@t�amH(o]2m @q 3̓w=N#omR-ijKK!rd_"=bu'4DKU;N?]Q,ƪ N/=ӡ L2ʽ"PYJ>ՀZk1_2c IJJ)n<A uYFJBfO*sz;,g)lг"ХrwsC? #LT|?_mô\sgfv䥦.x!/֕#rzC|~w [rpհAʶ?@Yв'7rЊNӲ6~3c&)[U6VP7_xL#|KjP&,q Cl5(5f  ۮk;rw4SL<Cc�D S7[f+4iB(('b{H8L 2FIcWhj4NDzy_*$83<JDE6Mړ{MժS\l Na`5QJ}aZE^^ ?ۻXۣ:Y)cJMpO%8&(VF ʗɒXVC{z:BrK䝍xF&`ZH,/r.0o⼝8шOlھU逭<iu{|X0Os6c~ݘESS`,TN -e,a5ۑ}*l\ Q5sXD[�,rvǠǶ ;H�y3"osD \i1Sgl2-kb2- R!2zxG@j t5خvd=d{rN2jEՀ=�R3uA7tߐYn8q~kujל) <2E[R =&:cGQTtO:?/72"/BO7ebmllc̤71J FD0ki,dX|05nxzO,Nk}B5X4ˬ[PTl(i.q؁{c F.&b=`K4ꊪ_ƍSCaq{_d⢂ft5Z#i̠آ7X;\u80| y9RaeMԴ0b\jF ,\d6wRx$)``C]t} �~vqmθ'dÛs[? g'w2<_}/ks8FeL}M0)D!.eA{I>SǴjic&2 4V/rA4sQW=0bεRM? 9Ke5.lT;I[F%N[ELsϏ)n[05`v My.)W]̒V."tíu@YH,D'uN_ <-w-Ԁ΢BZ,q_>WsxF{TD[ k춌" ca(hVw-Qn (J$^~} bKex0ˋ^R*D5ꓲd%맍23'H}wP^@p+�z撫p]U/E16M)NN5] "yl(x#hw'p$ Э܅Lo7(ͻxB}XG2VlϽiztRK 1) ẑv;S@@6GC0uQn ;RiOQܨ1QC#{~ ~(ЭPARQW-y<bWs(f�nRLWO>18_Id6?pm#Nhѯ|roPn).2mEvs2yX yR_0/Bgq e*3 )ߚ'+bwRXK'gh+i;] Xtرjm-ˢ$Z+d0$q-YchLpzf4[#n qs[--!:k"5̊4mN^N?k\rvCH7{n)\[4K9ƒX<_PKԫ*epԚFxC;UAWk V Zx$@Աdh+*KhAIG"=|PNO<ZG+1kyc"mMss g1VJtXy,ymiUe9 عd[O7AGڑ>LLWbY&9\ehY+TÔH٦b1R'g8ZYB2 wyB\QvS|n?kKύล*ǥn4WھrV6ӨK M$sd=n xn5g̷/ކ$TbKkV㞄)뭕6n+Kp6QLUЭ qLff荑pB982FcCƈ؅S]1*X~OoPEdFx(8Xw$2u*gygr4Hf}%y[F!DU#ΤHWdY<ubwAr,c2:W, 5kIz#1Ew$Q:, XzߒK|B 7QTѯCܩ ƿނŏ)XW9bAڷ4/H0c@8^"ҧjYcpPY:mHr6`V|xܠq^˃ nC7GD!'q9܅b!["li/S1z5<01lq~/e <iaa-[pH@׼ տ~(CK(cCVKQNͷc ph5a[w23$ ^]ˈHp%<:O<UyH-\a DpD:E7y̆I4n*�RŘ8aS7h)@2F[ʊ:> +V/5(Ƈ͕1K"^&g#'uH >¬zX@3bI&d,BPDk<W2{0L۶TI^.{L/ܛ"3N2}<FCӈ?$nJ9KFɊRow* z_sڍ}9 1K'TE�\&dMAYVA=f1RЯ2k輆ʻ1o}~1q^Oq{y�ڼۼϼ}/.kޘ7GuTLB-&#v д.w`*jlo%219ԝ E$*g%15hfbI,2J*r BEx?0̓U %t@ww%4,:βP.HcbҴٌ}}0ج/|v!M)K/lRI6zrw^춫V;=Z8MFgET1lvZ �2v7"Ms.ɪ g&{/$!FA$ߊQ`zr Eʌ ֦XxĜ-٥EF)ߐ,DoYd`$C1ѧIKCD+>*teStwAAFF>qT"Fqf\c M@V"H-r+0# $a9?i^PqNKBP~`fï{#KKF 8v//ؒƻ֗dS,+B5y{.-IuOª(ɾ co(?!$nिGzë<h1_U-8i3\?9ۿz@`�^egxOM[(6EU93ЏULy(*kf/|z8Jby'dpg @8D[f a<CO 6w�IO88ʄB3L}XtB8ffmzGFB}K.{jo{|ebVv:|?߷*k*/ *~tF>?:Zh7$Dٴgd8P^=l^n0EnUkx74il|宔t8�옣Ld d4-#Ն?ˮ5*zv5l.ZǺL~#wiY1u1)d+ozlQ~hs̅~.@Gh `?pQPdgE, {jҕY2\ �>&kϏ Bj|80c g.�fPïs0P[T)U@L3pA}d\%<BRP="#")U?-[%PWc$]`{WS FPza7vEQnƐ7ۇ=9v8sNYqtho1yKEh)V-0wF~Jϸj-c[*):6"my_~*>OYĢ1&Msq㫑Uq iOBKJd'ኧW2{dr,eEDjBq.M"UPtdHb oSs(+(4wXxA!yN6]؅;qXXjK`[ؔ D[ &Uj\*Q\R9uCIwkVֈC{zEK"ZucN]cL铵ZX$.�c[[0b]'z'߭HBVN4_P]QQUS_KϊV2 ~"!|-[Q`~h2 naPm}"im&2/g N K*nՋ@;Og|s;<y9RɌ?aqZn!b`ק=&('i(V;R@"B : ue(ɏ3ly[A1/`p 'd{[u8^tde(ngkݱq,EqLDɪȽ.^%ިJs' }7}yȵn(w  bR/ cǍޭ}_ʵN�/Ÿ[CI6S˜\1}EÛ1 K&\0t^R'vwePLiЌ=m8o&i__ :E%E!r2XpDO(eu{հ d]:'AI5SW�NX2l79:o+ҴpT07tXq+'~񮣈i7G#SZX\&JKv4#;_x+6y y_Ö=wM|aFKr`v}`;g)nMn$BP8Zdz~/u-M"f9E'iYO@ Śȯ$ON]]^l oK8:y'4TII ݨhx wX:'pjHZ=dCPP o5�N+P/Hj:Kdnq0%z>xY<GJش~i^KG++_UojWb7jaӇVx 9Xa/ ') f|#]82 ۪6&:ƹEl1&%ԉ9'!EY@mJ!VV",. 6^ 43J>e ( #ӽI7: J}ᵠI8I<,"ֳM"}a?zC=wƕof́NB V_"(72Cӝ*ù+.IDx 0ncNVz-ŧ͸K3qI{N?O$iik<*'1\Z ꎲ%Hš'HWX;/Ҋ9S%VKy.'v5<)nFKtN[s8Fm}mj[,Ыw-eY:gmϽ6̲XkGyŷ."mZF!E;fa+-3BS9h=͸2'BE- e^~-*:bm(,akϵbe+aNީm;gQjD1AN, /.f>0Nl+}* ;wc p> 4.dsN5]ebU,&b"jwxCSz}|܈1fXEmaz` kɰO&aO<fo122O2o;w[N /#t^zj??ȶ?2ﯕ r(I¼Q lC7J"OTzr5Τ"hv5fX XB<&-ݼy"0'< ~X?!2j=&tm+&y˾:f>$vι|Xh4<ecj_ETg JW2ʢ-Qs.HXZw>{sf3ݵ;X}1O#'FfXD'^_W!�#S Wo[|T˴os91hB#`2iYl{(?Ⱥ~ApU-`N(;I)F f8` q=l`8VO^PÊ0n|p $Dd @L;?-xYS3>*vJN,uH`u;cn jA]H"ӹLwRBr*="h֚]ZФ-xj�+R䗪s%j!<[-oHS܃ m%6䴙pZ2A5h>J5]3JvC `bK {\#F@,ӸcCFO뽕~@!FJ9Y˭M$GDo׆ fMo;L3 ,B=kGؠ փnB5IXujN6Al?ֆBAndCUiHYćʝNqv_3c>mf�9NhsesiCF(:(i.ԝ �g@/ԯT 'lh"), {R}q9divT^CGfp /I0t` 4_PQWmđKqyTt}--"(xפY`-;\4H~z*�DV:Zߺ+v)>҂@f]2gʚ:Xïd9vrTݧ+ +o16e wGC Ul }zi#>bu3.q%dG}ԛxWTkXZ3[UQvpw1z+=|(BGqpC8pѧ`!qCԀpǛl?UAa? J9N} lc>rƳ;B4aKx7c5 _ 'fƪjV"3nZ;ݱ! ( ,>mQ~ Bi\98aL! 5[m|gNOK8{wgwv=1.'_! V&ƛdU'ԙ~~wa ̷zɔb1t2(zw^֥xex1P#VUjW1^3a$' ?2-Kh{!\ǿx^'ШG2(8`ȵ7G(0e%<\'@;Z�A>2B4T9�*ѧIթYV?:Z<#k�nV!Rx 2F*~0NT__N<z_#4pxUaߘq"50h b 3OՂZhO�4;Lٓ15}xbCZ;t^蜾ov| *tE/f$=O6ÿ [KTDuTa9#nƊw`)69Z/ :7]!h)}!&)]<jXZMD{lM IiS /BM‹g1@ zx9*o;<ʦN8/!>#m(3|-cj7t|%wi; {R țeom>;]egQp/iQ� }wA;h_߂bG<?@Bq=_,ZuJbts@*b#4U[^b0:)cTp;?SK6dn:{Rc^[,>!K衐f/.6+9nܠ^[Ao <4Zn2-'L.>|ZF8h2 3SV8Jcn,BzTk�`W}!H%(M'>4|\{< -Ae3Rvk*B~h@c v+!˥�xx!dnP4h%@Id{_6t̄Y= Q:6A;i�P`ZyXj`ѡډG-O1m)ycVn͟ԬEmn"4&5V aG8UxNW׾L@abR5,} #@8qS# $zy}]?E%SIn 1Br|9@E :HHгefMn*Nx5x߷MtHy)4xDM;DTtk[lDO<eRxǯ&>{z;F$YJEc(+a$tSx:VKy{OW.񖠻e@|lxFc, -Pv Ha}oʾ#Dƣԣ,om�̀!IB9Sg1*1h:xnṫ%W.:nQU[;Hum*zwW�15+0ת各3xhH_$l'ln׿M[aϳ5jtS-@f:QJu':IB&4KēzaGtIT/_]Hˆw-O_wu"TeГH<kBe͊ך_'ȶS@={.x M SLjDC&kʈmƂHu`V\ j ޵&1KhBQLJV;ڊ\>Ms@gmG[zصD ޣlJ<# 8^3k} D/яAEZͨ[+7@W}#(ht>?x 4j6<O}D_VBFŝFv٦/ ˊg^c\{Aav&ͳ3D</zĄ}5}<(z;H x#yKI{(E%Mome=꤃U$5p}dԜ$Fd<A?#|H<a*^5b;ϬN$&^Y m}N_^"~˱Ksg +72иWdW�m׀5|H9sIfUdzv u 5BsX6eƙ~122O2o;x< }^a #՞R:N#"Sթ50 zOBV9Fb)2Ϣ#x9qẂ7Ͽ57e*CM=ÔߎGt0U4)tX(&~,ɛ޻'i74-xy:2>lhE]Ѭa~N*r %3.7&9bS$vӇ&*T|xWFyҙ5w)m>Elَ8QW<zˠӽÇ3~܅oh7FZsgCT*m4uZpϰ (g } Mĝ`]8gfQ .#Mş{;%đ�^ b[rl1-ś&i.砡@PtıV,3 _w=W3E`C0y2jB Fdo@TEęsdGfJ563qg2Z$>!Ŗon@.,J"A<4u._i&?'+  m? yݍxhFϫ:u$|9qe)C iۃC1UPv)ёC#&3Ez_6~eUE)VPm*hem�:zѰM c,)Po9;�c:v wiT`F){*PZR2B'YWY]լ'=:`Ov@15s`? i�fQp%\qkkXdWQ)|=ۧZ̴&-E$tyk..=~0Z=QUDH{pof"/v*d`yx{tg;{Sc5} Osa{f�ivylkyco_|! peuD# 1WmYj\a!5耕bY˙](B>.FԔY\It7MSd`2^?'y0)((rGt#ar/p"` LD@ w|6aR]IM=ϟ&ZF;~{QjhhY õ#{h088.$Z`1Iq/pLv0AN7J3y@Ll@ԇ& [!:RS$ )"m }ěԞ$'<IAxƄW?P0*\}mOCLV-kUY) 3ϰu#e1QZRupvdgd3&azqYfn$:!1Ǽ9 `QclT�ɫtOF\cZq?IF?Z`/g5_-И㤒D`,N.1h07�jtY`/L~?\?= 9 BKF*x܀`VҚF)8z#&o_cwjXCrH6,Bt#j=XqВcN= RLlx-L|Mu]WsU5R { +y!)Beݶ'z"|W*Z'_bl;}7FgG j-ڋ%ԄwY;vNC[,^#IƱiڨ�a&ZN Xl=*ZExևO <]hYBt換w# 'o~ 9L2`qLI/b>94.PY ^XcX~L~-Z]7a.=[ 3aҫ  ?Dz°#GqU �R1=Рn۟܈z1 \)DH l' \) kwd:P76a CH~U"Aw xmR-O5bq?Gnjd׸3o�YA0C9u2eB1� _F1 ^&}tGqT<T7jT7x@YB^`,Ӊn/{( ~p0cP>VACz>9(N`+O$.[< ǮWO$Bcn`4Po\Eż\|[v|jm|}`IJl|Jkc S֬ǝz7YeOwOH҈N< !DbIFcWy/C�:^'<#10Y#r)%Ip&wI@B} B| yaU%#-CIvb$Igթ"{7J_H7�l,=  LybhVJ,}uB͗9l?jv^<_D)6iCO<\;̜D7цin) x'3q LQuju7зAj E:8zy|-% xNڂ:zLuK E^>:&넲A&PS{Nv:, Ag{G^zdО AE)9qMan>ږ$�WDF\bσ?<7(?셒0vwF]8k@Ibmm2sVOBIywC$ۃDž] ahPپRj8F#vC): ^*Kdت#Y4l(F̻FJ "쇂 DR0me/*PKXgPN|cE9FʸMf24L0cFw7%ucDÏ%AJqt]b=,IZ;kҧ6|%ڟR:GL<ɶ YE?ru+;XGE٪XT$ 6"jrZ;qq k=p ;`~|~XSl:iGrPZUjh2=RC؞;�ֵYCQ[[]%3q{ddupX'a_k\bTg:\ߗ9BAk-]w: f=3rm5Up?.x3[Yrb_iw"a׫"'IN5@be;S% ;hOYAˁT[z:vj K 0K:I|qqLWiAHyZcvU?? EM98L/2֗fֽ($2jX^I W{=Z8R24bio8UGkhAc7Aev6 >7 uWԐzﷴ෼3Џ}*0酞y0%LQ,(䟡J" /.(PhߪcI F7rhcʬ])E'@DJ\гqătC;Q'->A;ge/wOIyrDoלH\RA: z�J!L88Z yt ~U>޼k1;#p;~'0lBB룕qm\жBv'yYd.,0#Ӹ=$|dw~6R2R_ bco "Pϥq�T�P> RPX-T%=-5 X{nkψ#jBZtq%fPy)E۽ t+-ɳR_?%IsjXrߢlέhCF@  ڤaijT]bT":7U{ c2o[Y̎oB=UXb1Or04%\@O/A mt#"R.^!W ݾ7X[ 0lːo6]B+ >)/mO6] R|np2P t`^4(`zZ{-W񪣏*w7Ph!qK*~ vGzlOlX\m͑f4XܲrHP[6`yg%-2)T:p?G$ށq.K6[㛺@|�.ޡ'S85f%wqYT+?@|,_ ~sfb^jca}Z-~vY[mE2%Q P˫6dԛw"`(7+S]E bOKep\<އdV Ɉ}uK:a_7z^>K1t0bRkѨ2 }TR!7Er@b-tL *TI^G&Roپ_FWH ܁_ohw4<F DN,]K~8XEO~\4$恀A7I#dEβ xMnY.:`.]]nѷK Ԃn=yO\" BϧU6 W ς^SQ*EhlV$LXa&+vl)oy0iQǙf.l:P]ucx+`t_\?-[KI} ߸JRh"2-F ^U|kцp=_>ZoBH tQw[?bJ ԑkJDU+@ /X8!hpRhIUK7h%k&aԏ :dzm}2*60|uVaoX7Z,Zm?~Og?u%GMW:׫a0z~ſH\h`22OVzh|A;_wdl0w9G?A&(_xI¶e^Ļˢ?1!^nhm3Dj?KArf[~p7G(R{NbCȴ=}ᄳF*~G$~e/LlVcRA{V}O`{&3К~v"MZ狲q`:Z-<[)2d6ΌGK<$$B0厏ȒAT"(ۅϋۣ _G-`#qSl 7 /33q tAİ-cDAO'4{HtHOZ&7cz 03ՐIwCusl.QSvqhߜ}oy8\gE;Hs*yBfejѐZ[%5yG΍:ʳ*' nD40gz{dɓx/tay}r|X P)dY% $uqY$<;0jopu2X1U ,4 i$Ak;8U$׺FMC3eV"Dp�!%ʧKC:dee ̈Xm]"!T$X |\m;Җз!d &amaG;PfP 4^5.=x8c;akH<<TGJRvC)鼓I޿HvNfcH%!*J`abWJɵGT ?M,iI%Jw c S!Vb);VDM 'sks;?IvKCkݱVvzк(gY 6s+X223lK0Ch{˧ H$yM+SA2Y yzw% qǟNl)ڝҹv�u+f �κFqK#Nnk# i:ꋋA[QU inOjIIcF0M4nnO)Ji WOdQ#l}=^fI( q-gOvY~l. %l.& ]NtG4f\8*>!~\ hfTkHsnp?Q ~ eS4$|7I]�HmwoK?-ks~7!aq7~#dlrp 0'UZ�Ba^En^[ v|#M_\@w~!/SjiU^ V}v_5E8 ^4> �_�c<~vX�XMr,r,>!-ne<֧%4H|zYvVv2;Z:BzwbX2E.W fz\ lw*ogk#lRZw۪(za;,2?QTIi3΂1QPy9FOۀC @@FѰ-'[D=qLm .�Z44:^S$\nZ+|i\qŅ 2Q(e`t >核 Z"{)<bc5꠹.|m&r  S * L7 SV˲à�SHd(yWIm5W𙀭92s1`nanфDʶ'/-'L͡h۩F0`kΎY5L~uPW.48}(CF*yu \i&סOϵ=њ閴O}3>Q.#^׾;Pwy`Tp|?aX}ierf#˱Vb< 2 MC|,L@v5-W=Ӌk{V~]]d{"ғβoMݓ$AS`#|PH+x^\V]XeЮY:2n&XNq1S$Y EPms8:!7P$?nt'lx4@PP*qklX@| hulvuKPS!=0 ' չ!eL5q VST۱N#@֚O8sF:fe@ץjvv$_6%d^/2vT ~[QC+.Ź+lI]S uOڱ wO9څbv=;/w[>.rv%>) `oꌒ,(#=x?ޠWQ秵5š ?5q;q>ZZRu,BY&vV1:+T LBTH$4a9W G(JNѥ9lSzb6zりmڮBf&@i|ssrqZTF|z~<3M SD*uF߁5DK{1NwAfsq/ojDl"I�u[y%AҦ3HShcSm/EU Wm,METճ gv322aEh0mggz>P6j̟jX !& m.9~K U;vo߼ Hnn-ם,Oc^KES[&p@ItŘ@ΦWϹw5@n>G=28x3^?�I.c]t pϽ~82/psuѸЌV?Z<*u*1#)N)\0Ц/Hto2�V&X$JJB7[ni wPjި£e& _9wZף5_R4&�?$KR~i4'_~zgT%st1_QƝ~p%% y̛S \9,X|l 톀|~fwKFӤ>~tevR(/�d%ɨaa!Zc;4ϠPSȺ^ޕ;kkڝk=DB\NQ4q ~ӹ'`#!6`I0p?%F )g70Ppk'zOI1Rp\CRD_R|)_�K 9@<p 6G1h.q >$(izJZBr?Џ 9b#.xyQ8A6jஃ2ʟS 3N7W'-aͧW0vdU.׶nn_/Ͽ̅98ޱҴ GWr(җVrUVm15<vdLdAw?ro5G 1-2$|B Ku-DGFT|I,~:u+~?Ғo}4ӛ'4 _kJ�)ޔ{&<A7-fC rPe b QZ*ԅbRHt@#Hpڢ7R<@t9lsӋ&<?RIGjG\:|H.YZ_h3_^1Q %sPs#Et2I$BhV9(7/it[wKzso 3ޔ]FmFH\̫{bY„Ķ) Ih+l[ļ~8}E{K .t!\<K= N|f/ gAIZI6u *; aB1v; DtCj,sQ=E.xQY婳Xeo^(R/o'O Z QqiR ؃'R><RsrgP*΅N<Q\- WŰE%DO4yG9h:ѳ%nR4Shh[hK:f?e!˨L 쇵`'~)Um-jb*74BoHQ ]d7zƒPGW+G`eCIvDVyef̗2rh;͚@P-{ۻ*J(p ɑf1 ox8dg*Zғ/ljv"zC~ vv-ur ʟ<MSDK&UA8oㅄPТ q/|!^iT(c10AvKbxv7MOHl [,>#&G*˭>d IHc8] 5C+ـߙ [[QLVj�[7BX�n[�^% Cpl:RZ?LYiNsǮ iѹum)FHhx"nwʑ|z5xl0#E1A\8IB(Lp2KEHzuA#xKMp{ma3W)Ds󩦅r{a0~c|x7T v0Czy{=f 2;G \Ƌ:\&_7{6d}u}鷹 *QYLxUp}]vő+ZxKy&j-aGZUlY7Z?mb]bRxc(-4izѕ^OV,~(V/da{vp0#M_hV땒 hWY*_x@OuvQ iaaPgsQ^Df\&eMB$J(( �7 a6m#^U $xH0H0o1aGչ[<620;~o@jgݾʎ)7-{ е!?. 0~wVtE͔[$ ei~yږ~H6m� hdGa=\V?8zPͺ֎//6xg?k\:l"WE9$6Rƪyxuq-a<:@Xv;0C吧f:xؐˣڎqUE>FvM 8gZ<W{'NpowJ\=@V#C4e8:uZJ?nAq9I (7ӕߔh^[wsW;P-[0ɟ~Rv/}FSykQo8J)`uKTṽi^U$(7l}jƒڥ'b߳Y7\a`-[D ն-Wp=oAɄtӁvrmmw|ķ=1Zԭj 9h|Toi#ău4+C< ;w:p[$3Zo iIH苛CBIc>x6x =+ 1+#T)R 3 hp 4q_4<:l<2Jݤw? lzJXh/}}X:zp% ;b.EM7nj/*o#Bhw{e[8 ۤ]{|太Fcr>}j:Ш \@)9a7�54NsHU>$'Hܺz–o"k͕֖wm5ʂԵH"iTl? J2_`jT਷_}grܣ*{y(Q2-ÊNKlm"޳[n~ZY+byGV?tw~tk!FcC^4-u/-r?`dsajeEa/^Â* S&c}lt'&Ԡ<`i(5BD F_s{dO2/ ;6Ԭ+KPIVG[C\t">e<VHM4@%Q5*U;rOf&e[VUHMD&ֱ 7&wh$UXBEqʛ?\r Ԫ!C0lZo |j3s_.<L}Edub;O&U`S0hCycqɖ2` fMPf̧ZעU;U_,2.qWܲo ΅<F-*G> -!>޿ KTtۊJX%2༽fɬr#Y"HrJ1SWpj}ɲ]sDH'jB1PK3>!zPM:%л^w(qMG,&P4(<Υ^g4FsyY_kk2e5PEmYi($I_>6"킮�nD8F(n/�GCPH4 c`]4G6"z<>|-�=]~qRh7N_xUqLiAZٓѐ <&TƜQ*mCQzbt7=ar sd)߷CChSl[:n(Tk`}*(k֪zyC}-ͽ1sjF<'ԛ}y4mBD7w^њlopȋ5s'墛{`rx )L{ Ƅpg#])/0qmgwLJHcgKz觾r%M㓽S#IUϷ&t=OLUn]C٧jlVD]lKDZkC3w.IJ&aQ9ݹS},1%3'0Hl]X.qZ’Ԯ'=OiiÂԐ7;\Fj)+f(g?dtD NS }RNEuyan�a5,W7B͙O!$]+H)}⩑j4UF+vvf3=1 ݏj|(>pТ"OZsiC[V𭦱!(eedޒ�g.+! Q:a 4<1Ux,L{:"#7yaۇ#b{.2z1rLvPCO h^AgsCsVD 82J{<u Њ!k Ӟ]G6fw=u<L=<R&ywQ?\7 p&e#=+X4b3/ qC@p"aӵ;sIY L V$^ WS:P I$^$ ba7|99ta<65<ͮ4]J״@c-RBPP(v Jyg5FiiƋ$6z<*.E_FLxmZp 8bo` K,.A6[fl,Z"Cpt 39aA b;NUҤckqmCMY.M#Ā/h{\5n.5/ptMB gpn]>XD h69DN/T�I]Hwjk7ٚRRz:7QJ#p,C{8C+HЊGɄTb0W !ς cU e7{5,7d3Lq+^3h?NJ;F$^ $x!aub)ǜПqϜ`%I|J�kT[c0 :/ ="sZQS@yҗ)E11a hXSlPVS-/<,(Foل rJ6g%~2<5;\3<#29M>rU447+)?4w/ y:ѯ'.w�QfJ3<86wp1=uc %N1y^QXMST aIl,P{U_x֖pmf xtTgUCA櫔گSd/ ( ɾoВv1u9T7GM\Pso_ĸ&؟ދǂ[jXse̅SB6΄n'%N֛ "y1e?Kir33{V\-HMXHuMH{(4lX iSkg>l6^6SGl5p/vʎFH5o[q1AvH?[e,܄},aP-Aq|H]V225t|ǵ.80LDjyˁ ~:x`_mp"qڢ! g f/vWN pb*v~n!8AʼToumE&}x5/(I?HhEDZUkd m4&%<=D+XUT!  ~GV7Af˔uQ,])ƣu0'e5:94`Ij(6G̜_VwE׭tX$Ϙxәt;&6T#w?2m ZG5d^ؐ1ee<O:W-Amz[*H-ƥGow]NGM(&  сAU;֦uփ1YE!|a*%"΋p+ı Ż!}�4a/h#IV\MF%vjy~{!Q{O45BTuĠS9ζ*Ĩ@ʋVչRA`1D&}#sT"jvW>ҀJ?!T5 C<^5=*ں8D$pljcp֘z˖obg "yO*djU ^q53M.~YYQLҏpt?ux/Fatq7,ːS+%ӑliIFU>PSEr؁I2"Ie}:Ngon≖NIQN?0 b z2֬eYs&Ϭq ئ}pA[%<T&_I6`>kҺna}Vz-S|F!W̉ M:95Ti>Q7YNЙDuv6|yϊ{{J~Br>M@Kd&{?Fkr|XHl71c($A opԞ |rW2û5kuuG'Qb q3}pGz=i<.죄ب-`ItCQ6nsGXŒ &6HuL ZSc *+!pszke3vnkTkQ,%gtb, ryvbm(!,dbW�aPNc2δA΅2�'ujxpN%0܉iVT^VbT' <9ܞVhJGvQI_N@ne PIr͌'BoޙǰHxEQ9ٴ :ǺJVaNl]V|(ԬM:2 8~\֜\>utI"Qt&V’pY]<<=_f4D.s#Pkx/+UGqôׇjMf™) O]ԉ圀-?C$,U:^6:9,tە6+! DvCY£C($i;Ac3YCWh4 h9Xp^0׹PX)o%P!o>ri?$ aQШy8 qm %b1s)[Ю%d򊣜:EcО O?0e]֝}m֟AX[o M 3b\de�6Sbq]WR냸g! 罫 tVtYϐx┡w|0oq 5G׾VOR4 m�} m�[DTU$/ P(Gرm v]%xc /,tQ3CTѯP bW#R/̴k#F@T*G)W6HёQ˙Ddfy^!HXiue (NC L&w {ٌrsG= F#b&') 2Ѿi>nm>Ap50r%򔫓V:n{BJa Y ^!}W ۼ»jɓ1dG4& 1Fۧ&KnNKky/Ao -s g <S3dwY uD8v/23v$ ;8%~Ĕ_Ғ6. >5{7{K= i$-{ /d0EĚ'$O2BAAEYl) I* RbG\ B'tW'/m(CB- RHwpY @bPF%#UsdžQԢ#2 uYMB3z3vL0|=}D*Pg6>3K\xFA {H>cXO^@bC6:@dCQ^1<^XյOdƳBLBB]>`gKת६4bS]'WLG-Bڈt3{ J0ny-γQ$K�{33B0K"W .1-CkCgCä y'QsWu?u26N^_t$piӼ[։cyB s1F]V !D}Š&Rz$i։ }]cʙ!K1ԞVf jO22CoNO8IY*xlt]ҕ?+ņwTlb A6<vZ8o]BMZ]Jg>A[ T%Y.J.R) Ÿ ls"Yfw'8<f7$84VR,JSU%dv;q6)щN al&5 xh6WDzNiW�8 o1w΋%. ~Oed~ԋ ?0a}+ˁBmra.Ev&W0_#%'3Q6aXl٫AblLAqئ~h,`o5�ZڶYk*.{I)S \܉ouzd٘GK_GKݰ a9tx/N㢷CQ_M/b9`6=ѹ0-NGs[x6ٍ{yވIol D>k%i-$vGM<4prO )8 2l0/ZA-&@-|g)t5g~y"-Bjxl}]+fb؝| N,8B +[%51 diPK"/VGJQuk-QHoN Q,pҎYXt]rm + *4aR^WeN8ˌGʙC;IQRek!wCo5͢.7xU]xtT1נY"[qh؉s?bPo؅wlljZF!?gB8|a;E%F&%F㹰Os@5 c ހc {tǐAX~Cg_Z|y4c̡IN(ia4)d1XF\z|x�xOp~UR=\O/BoIS["O`9lq6z Z�e54Ƴ~\Kv 5~(&e_'X8Ʃ7ԸnaV W6}Ŭ< `[e6=-1S|H*9۝cƢ~ h.kQ|߰(=4 @ *kOꂐe ZiG޵_I&DAqj2}nh#ϫE}AG};ٰ \7|}dD/>Ky[>r@5w?)-MaߛoK,v(̨8owͬ[*~H0[˒~>Bz4\WmS'̚הZS~DždTd{; 6B%l/1)\#3€Rkiw3ڔUvnWriK>%ҝC&?,,y< 55ԅ[~3aPݒ /N?Lrk�Ԃ^\swӿ"B/RO:=X9^"\gf"w>n|~V|?,]_&q 4ތ/Uu0)9߾UWu0~xw;U=iZs//&_t> L+&AL,,L &AL,9qiFQ okJ*:#F=XvI. C`^x Q^Dx\!rȰP/8'^)7{!L?X|eo[O:jJtpgu}i^A[ya 2x?p/Tvꐬ+GI*2Et@J^ 2XjJbXkJ:kVe[Ǩ WIJ^*3gԄH?'SVi !@T:姅Wqꙹ`#]Uf?(T;YI\dҲQGR֩ČD-Hb7#>@ǗN".󞄃BP壩颩HZ>xMW^wSQM!|#48҇o#x&.ؽ'擰%)BCJz0uMdzXJ�P9> rl$St)enCfH6` ǞHjB8QPnI46U-;j!Ns=U4!&"0su _յGTkBB3\$V}1;SMaN,ґ.UJW~ >OD="ZA>n#SίRIՖFRփ/)YW=k] _x|];d~ކ&(`Ƞ5{zSh䒚 5_5 ~A^HA@ b:Y4 ]!b�k*?Zuo|ev8_ܘ+L1>Y,ݘSdO|a~h=5ѵsaUϴi(ͅo'˭E_(CP"d1(l]XC.U@7sН�< M_:Fk (.4fCjr]>](JWtU>z#'/f\nV']:?CCYQ>b^<%vj .T:HL $5F3Ȱ]fn,Fe.wh朚͏lho>Pou2tzD�hu^H39Opz/)}ߗ AŅڇ=K#pʂة"@Nuĵw>tEVvn?hw *4^W",F_)jr{Pu.\GswDݖw4i TKq4/plb+`"B7Z!A,(Uɤ 'M:ho@k1nGwf@zg*~eܨSq2znvWE^[ K9'iZU0ELO9uF/}UŋSzQ)Tm)#E[U.VxL?W k{ h>w>j"@|W!"#:x3sT9^ fUףo ]I-OT!)eOjߛ q>j" !@P'OYaU\·}6_]v8:3ԙ5ttD=7i2گUFssVh_w#Ku EYc%AّrO 5kaގ<ܐ.c)Iy<<  |#r9]DEq@a̧'{C2v2˽)T:E1-RhE4FrFk/Q|t@C& DM<8eӧ[B0 oʡ' @2|C޴',~lLq)>jgGC>NLrP1\;[JfMn{\rٻǯr sYԮ4Haj\_=q.;K ,<P.|Z[Sb`)Q m +e[*,Mw̲u7? }Ѫc.#G`K#aY8C@8 C<z-8Z �J62= %fq^,U-:ށMI )0#i@Q={4@O=ZB7%ɋJM򛈞}vCMmxHgYIF)Meu0ŠjŮ0|w!�oAIF,M<͒ %ز$AG<:q*(<7ď<:"H|iݧ .Ql 0b%[4 fYud_[D&# o892K(o&=E %7)~:~W`g.]Zp?[A +'h< U>H8ĈQen|1MJYFC$ɏJ"3OE+ʢw.qayqWU N,mqY(󟇯xvQA7i~ؚ/\ݩcz:}]ϴN^�oL̆-a^hԼD2k+PHn>+kR۠{}"ߺ+ ~f<5q&MLcRluQm W�Bj&_�@Ǚ>MhPzs';^^Նs>LثN#h5;j'c/ kXt_ϣgZ4JY9N;q.{T8%qz¾2hQԗ):]Gye5|"[ Uei@@wa]->$'w W/ty0HpH]>w5w eU1duK݄qmqZq GF㳧~KDqzouGPXN Q;:t��C ƌZ, KMggIJ5ٽ#V/GJ7lLҏP #]Xz6LGO+3X86l똇 B) <<-Fa=a"5qq;J(U]4KOySCY*k7Pǭ) lɚu+wL{ ݰ a8X: v!b$0g!ׁj3!ZU\WЏ^⩜X*lM$4p}=)K"9_kހIoi(s(5WNh3$&]p3El8 &o['N[myXN d5J8UWˉ)Ub3{gEV\8/#),n,/'QukDRw j<E�vÂo^_Y0f\>Q~ t Ms%%< Tvwcc{㮐uXJ*R~l';]hZ o?#6SnZ?g!_ONQ'k?ޝN>!|N} _Z;/ q>+ ! H\t( &S[p~ _�s~=3M~@r]HW9Wr >;$ DpXBQzO)}Wszh<r+xᕺcgÚ^8a]oCAx2x=9n8A͂,8Co ,-QJ5-H/9vP|\/J U(MT⴨~׃&[Eΐu̶aB%t紷sIH=P3gFW1@L5`G`W#˼f}1Ӓ #Xy<{o|Jj(,L1RZyTbG6h>؞:}J'>,}޻{j v%S=B_L1zrU#4FpXDM{WS#Tojh|L=0vsfj =QAЃ,8+[W.֬k--V&_G祇>Π pypF#,̘{]Α VrGkX">dI˵?^O?棤`oY.,5[fxY]ٌ5PN&j^a!`u3]T*2)!xےZxN~pX&}T="V@Z aT tEOU"'4V ۻOO@/~ Gj ,q3 Dj48EڄnC(âF6,x?~ 6|)cF x!C2Xyd{3З8&@,�KSَ�tcw*JDK(]c0`zd?~ &hN'.,:ڧ Qca%R% Hwװȇ)H=ZGyGzMdssz[xsjh*㍿FT"<2?!n,FSψIrvة6 b �_/2y/cWr~Ǝ҉ |.!c"V5>;(>%*T3JI T9Aym7ս{ᡠ _,}~hbWf]�r +ΌqM&b%Qzt}u@製'(RgLk7RQdf}aNTR 75^0yي2~Bq)V@N%D=yGO!T]9@?Gg( EA-~@o81C:"k1'ŪD8sQ?psB9J(5-ޠ5;ŏ4 YsIuM@kZd55*f,T=(҂UJϮu1l.>gdЂGt݈E{)@O/O65W˚["`˜ZrpiUekTSM$ܑZޘqԏa滽 Q'rR9=8_;quD6o\h)Sx˃,4U>oV5X}2q"(M&E`YVYZZR s*3k~]j#vtQ]\ۊik,v)еR�䠊Bu 3a? nҲsMM_gB*8t1ۓI4Q FJWM˒8g'y -Vdy^nIR>xV*,M3q4} MȢ⿌_?pi0E0q:ƍ!%;(8Љ34uS‹chr[r$D @nD�+rd`rL Wq:<Zj+ڮM,+ .;n5|}*1B+t :ER^vU7/0!r5HK'JU88.:7;ZBSUvQg"X ,<S&*#50P2<Š}r{n]aa[(s>ʣǠĬEA#)"[F7@-U19p/3 +EcvX䪸CnV({SkS{"YOѷ6]X{ophn4?֞wsl;Sq[(۞0ԊK hyK(RB"v9! MgA᷇ێ_rJѨD3}k6Ly; [4bmFrr�׈"- y$>@Usr7Z׌2~ܒ5XeizƦ:OFr7"gc:a/^fU4gpcآvfXdS )x2q\l*tjZtt;ܛ- h�Hּ_ Ӂ&F@|g8Trq'{oۈ[mx1%>h2"mݠ�+AK @)N7ZLs?6Z}J:N Y: ^ mBOvy6yNdRͽ3כw-2ǁ/!\q:ݿ̷[3µZ[okb-)=paP|Ii1x筳V([jFc\4⒇zuD.&ILlWHg ?aꏖ*kKd&�#zvyldF)KMͬGQ*-Js4޵Lowy|Px7n~lm^}Ħ_|<*iVHkttg3؏"$ Clk(7]t{wmI3tnɇs|oaF2s<msRUN];&ݬLt61KWo1\pެQk o(;Xa ߢJ$nT0ʹMEqU$WsRN$DB-80stsЇLy7;z]P2^25֧e㸮!hs 2MVЖ%LCZƱmLZ$~ JAp-pDONu5 [P�P@_%eS, .frBз"ē>X œ$^:+Gt{ h/T\*巠f=NgYd~⇄.pW +-%Ȣm>Rh=!CAZpĬ?FCʁʂЁ$�zF£i=$QPvMbŌ ̘,XMxѝeAͱaNYx;dwkgx )<ꚹ ,qZ@ ^9^xTv>MV0Ke'(=TCUƣƂn~QI'SLJ G[!7op2>@YM}eRsIo?w5k�Qn-1Ͼ^AY;ϮQtܫ:/w,v0u*QdkχC�,TL>WEڗyxLe\5]쀳 _]7gogb}B #`wb㯹]|�wOw!ΣOJ40*:L\% d 25^ zi*< r P>W*SÅ gTFx_Fi<t 0,{CFN<TuZņV4 ړ$dsL֨tx,ǎ1YC%!#8CN#iz7GA^ь]Yr ]AS(4Y볖KVVyCɌ ,""8$ &K0c5&Uy"]ӣ Q4õ>>AZvUjo²D-AݪŀPEBJM U9 y4:n> L;Qs|\�>ٗr|_ M ^{ _=j /ՠANVqven<njytC­BO/T ܸiA7R\PA"g整?:n@ƟgXM:]b2K\W9LC9ejR<Od) 5؃_^b&JN(lT BE-MsN|Gm,!@E]sJMLHMo֞[F}S (-MҎg>G^EW1绲;dBbQJY% ^'s؄G6=SK25R)ǃi=9iwIyc?AўPy۬�g0GClJ´ -eSxgiQGvBQ{-d} k%~13@7 I9vQw(?߫}>Խ.ӣ BF9I|}3cZ f`c$^ LA~1Up b5LcM-/8?:zh}6-Ql&g^:$\>ɮCTʐc}opF;k 4&$Vo R7;dH'cKWظm8sˤ?-}ٶCO:K>ter,/>b'jZ:.n䘨wC2yRߦ$&Qaދ#X/饙Tq =UWąpmR  ?gATw${͟zfx *BZ`kAlK=z1~^8UYy WᕯP`.\z~_^1&~'uDe-% Tw?Q{ F#u*C;ڂqd~W_-~FTs&O^4AtR^N®xrCN/Fw�2,zK9E1~C{ |C`<c $Y-~0I|KKv 1~p9tK/OpljYψ`t-WKy]_jӹ :ߕy(yxxP44Ъ\=T:~KgRuĶin+~ NE ><b嬚,<&i#d �Hk7g/B7LQ2 3gQջY~z^^2Z`8ZYﰨ /ȿxYзؼUDP5HX1juC.:/Ԕq-qYyן+.Ʋ0א^i}I(.Z ] T0̊Āe%l_Q%I, lfrY)r<<5/-]̠`_N5x © QA$$ <&#) zd�rrWtCGw1 7dTq<dyaBٽ/έC$>$ᛤuќ?ħ퇀I! 39oױ3꩙-i?t2ir|3GIզe$>o6nJ|4׊3ˎbX90 Aܜ˕uT"FK ["3q1ᙲfuuƆ{[ TvM ŏ`2ogθ^ ,+b<6b)(ZppMTWh0>kϋX_S hK9@sوܕ:7srXoҷ9vNlO3lȔnenKHJy/lz|+A]D#j2m+oNiJm#ru`c&ʟɠFc(ǶN1sdF騏Rd<%1][oL?W߶#f&19c9jsV[ ۪m{L藾?'Ә}sc1JE#i& ]8(q7ƇhRvM$m㕨) @; /vӘd2l{\/ "XԱ&$mTKf&ŀf?4d }aZ¬v\U=~OysCDK6!M%ܪjA[UX#+<^9 JOMs;'s ;՝N8% ]{+sKW)x > Cd){. 6ڕ5}e3KL2aڏ،O +P`[[245[Xm]B/}fhykz)'Զ/ UħT\`nrn#8�XL襅*fihLN U1q8VK<b e0HOyI3ON9[}0�fa�.IPT^vu$la⇂7}fXYsm PJ=PiK@x-8r$οDtR_Dx1P3x>3z8Sen)$@MTݏBNhqg?lȭyQ[sk(nz)x(׍l_o/:Og\f^I/HJSqOU3d9^`Ǚ:4!3 ]׌okͷӞj \r]PJ:j{>Ȥ񤫬0 s:RT_Ze?9Ru_ AwFtAȭj9[iER3!z7hyGg"H-|xy6mtt.S3xQw{z43_2m=[wSb3fc!k iLVU?,z΅`&l^lNQH'V_I;)N5 XPpJ_#WDe {)R V%O-pL־6o'c yˀO'ck~w> sc.h5͛ses#귌�kHߔlb#Q6L cj5ހwQSO,-чlDB9,v-^ygfZS1Fr([@y}Xg#%a >?rDh @Ȯ,#-ڬ.ʺR ߍm7^¹@? t QdTP lDȊyWRAdωAt_Li6{O=B$U \ ` [m6;jj}QAYɖcä\Ըˏcd& ٴLOr oWk] tf&;i/ؠ޽8E�3W`{(1!i2fUx >~7rA_!wphT%Gr昂cd皕mJ4Z'рwxyqCSh_e^.\_ ">1W ~"Kly!Z`loj>Ў %y(VkFv9l劑q߬2aMEZ1_N!^iIDcލUh4N J*Aغ/N`֛K),I;6W\?|=1 oQ!i%lJ=Jn'J$);"V <+E_ ^,v*z)DysC\RD'˽)vIᨾd?ATo_q8ݷaLBG[,^>.,/hٖ7K} >Oς}+~ϸPfch_J=O&4 }�[5=dmXuyj*q6j+!a`A[[!C<]Z_ř\$=vV!cEbDxi2QߧĨy~?7 _č(dXk@gQnь+qU.ި"mhWp|;uE74}KL}[Ot$S4A<J7$vUl}+LPMMS0e}~ϙISP<49ejVwf&H(fLv0 ?Ħ4eDJCe �*M`P,z -9z\;�>*MyHZʈ7g]ٮjˊoHZyh"c!-,qPqʅ1'+]x㹚Jc2]:?6׈ҐMFO(/Er$c֧O<`H|wd*1+ePc<vhn Z-tֳf0%6Coɦ6OOyQleOE9<9c?Q=#5\t3tߞqK'buAEJc9T0*SuGCQ|({!OO<Ql29.z Kiѣ^"؋ҽ\#TlZ-;9 [jō1)?E2oYGnr2*H-GUH;\";~<-A0ցt壜h.X1C=`X+ aw U10FSBu>›ebVJwHKJ{QyShueĶM�-8xM?jui|eIܽة~4oHdٛr݅N|*>CjX?N`Y|価<uF.1 2?1O^<vrK _#!/o gY;K~/V?J+7ZC+64<sHغ8~�I)GPzcH)vH&M|ߏ e1žɔl`>FG{28!Q D0p1q£$L,AT"G%<u5rSZNb_L;>DX@V4qѭ=YzhtnR6MGjyp#j E&#TQ6[hd u@d]n^bDW~ M.vHWf/O'; նAyytݡ|Qnw0K RXCm^Ϋy,*+h�x"G`xI8QbH!LA>nakjܑeqLhX遆A'O"Yv r䧵k W|kG1wF%ۀ~iOzI˪6ejTW ;"`A2/T֢jU)iAC7nyV?7PCCCçO9ޢ-/m(dxzxzx~T?*!!롗Ҷ9h_26Vq3rHƵ +w@{[kRϘauZJ(K&"̟F bƲb@|`" çeށ=*0iRܙ>gA~AhIhR:࢙W!9 F^{I'\1c=bh1 aɻ4ݹvW&tDh)i-pIGOMzt9Ƣv.J1.5@t۪aeRBp eQ9�,"f|ӱqBB$>dBG|@ig)&iex1{UkأKfBy.&9Jшkᶈ*6¹۔ Cm8W8'Qw^O j4=(=xcPڰƸ;,%߶WJB14!CuxF"d S.CX%L]W38Sjhaty7vZxg<>R~=55>/<p(;^+׽1a1AoJ^ʕ9N.30بBQǸ1f$R+ A턆FL?ݔ+/Ņ/>\d;΅3*MA3L3QPGXQ *ltZ� �pO:z`0`#ڠ>* *@@$3f/V V~\&<,vq]~^x!lc bp<s'R]Cjc n <;:r b+E@tݣ>+IA .\TE{ GT"ON84ܧM^ؠ x¤G\qV+oG& bw # k]`ɴ}5b-cXln8@PC!!5)r\ly�آm<EA<devѴ {vf"DJQFxx=v_eH׽59 ar |!޸vkkh]&9soh<k\&e"fPe�xp^:o-r;kIi+wV T\ג./"r6Q/9~ZJ6nsA\Ko<{ r,o.-|88#,{u߸l)dpc)y@A]²i0 M�A1Elҁ@*x^s^?*(O J/ ;?p<2yы2#"!ٜ#Wg7ه NgMt΁"~3yhg<;+ Âڇ]*(<z# IÏÅ%{ IO\* ^\'dQ%A]sPjÍ:+N >Z+8̣34ef=#3c619c?ba>:͆1:n<D*׀]YybG@RVdmɕ/cܚH%\"ȝP0Ut ,BizFB^8Lpob 鄲m1!g[1Q o 3 $)7?¹&v|O&}8E`E$ `L.0Y\%Qg;ZrYsбx.`}W%Vh{?Qm /+�ϥ u(|BINw Ѡ+s녦^&Jk�x R_Ym̥EK^t <dЅdBf0c^F'5 㡎[|S;M@ Ib&tJy@]rO*wT*ykC\@y'nX-ZQ??Oi$W36b<IH8zysYE6Fi召1\ RBZ(X贈S@10؅pQS퉁>=5"(s3!I#`d*LB"zkS 6A1bZV7ӟ(2sܺaEɞ>o5{JOzĘuG4}+cˍ. _~9NZI2<&cLhz +R"G_$*v;GvMAs-D(|"*11̔%(S]TnX҈+3BD-.yvʃ;PeʦM1rc#W'˕3f yGjkż6-ZjO7AVMRˑUz]pejOa~tc5d]:u% #- /YE/V{&g(d|yEA645CHj22dWA5KOzGse]+~G^9xHzSޘ,Twߘ&c 6"FɓЖdVu aZg�#)j+54l<wg B$b}#`􁀮-!GU]U0<;< }wቝ//e',eBQLt`vR;sG2N7.1χ'R?#uy?ԾMF~4mxMݗqJB)KKt9 />S,s[2( Şr}@ ƺU uBUsxD=V�AU<Vx^#vD!ˑږ�}^fYŻR[-}F,x~G-y)ǧny7&lz# C%5X[rVgpxd;3vf Zmq96�~x*BG#M}e,8 /Eճ0:Z{7{@qkc-e2Dw? `7t6"[^E,yxC џ{ #O=4{DuOm"}ync<OD<uDW j^x76m }j\h,ˆo+%b n|e"D�8ߘi8R(IG#-Κũu]qC폈=\.\w>ˊ]ߵx%5 }1 R>j5m-( Նvä]�^ faHsPc_q킢V8q_'!0_m$I>Mی8lϷo鮧4>;uKga"CSoA(4߾:r]ԠE,KMl}d7n ^09{'0aB?w1i5l*ɞ΁s.U⊴n}3:"aZ 1Qw|] ieڡ/q4 /l4AQ{Vt:A[K͊~3j>7*pP6[Xg46VΝ웹Vne)tÝ$rrp_'>g} ~K o&E~$ A t7[:KIio7f'OO߼q czRt<LM߹"�ԅ*Ņ+"mi}<<$YɟE Zl/o {mJ\,'c7 ]+VZ<crhۗyF֋hYa-@7%[bQo�É ({eIo,z SD [jtC狀"ʀTT;7;6()-Lkco^i '+{r.L7dži[Ti|@@\}01B;ڛ34^o@yJmmkWYt٧5j",yzv=WFȽ[`v`}txHi1Q3iib.QNOG5;~MV݃$, SB_cGhOwR.JJÕT7Q/-?+$[puS{Zr~rlO o}3@;ŗ>kP T`h+sﷲ8�PuCzO>{'kEI3wC=GƆ$E7VX;oC|e[cž7UC46bP-hW{k^_xĜMZd5O6˿j%4r' mFvWցyH̕s0#'wVI*wsM4;ӽ- 5n d:%WSV Y*= O,GCmݥ, %4s|OQ:!hV;I01c˭%j$xg|,q?`G` Vhw57~^V T%pC^ 婿@JIjE'1$tPb`d2~ |߾Q8ظEZg3 ^EM?k.r}ej!e zsl e=X'&Ve V62[b u1ԛjm7uGj?tlPG.w\]OR%ctO yz}mťyBwޣ]&iQh?tnRN{![YϪ{lg墳szd=3.oY\|$(W k"ud'il>;=<۾ֺ,44oolێsD{u؆W6mD\"! d0 &9f2ƔNT, 7ɳ s�8ᠰ �bY^/0q�k=~t�aʭ "T.cJWvɦ21RC/Ȝ)BEē#^ᖕ#,sr̈́k$> JꥍNM`ӽ@Ϗ Uy _ӌc)'DhZ6DCm\N!c'ORt-E]5ݔ-2]=BF� %JȵF5QK7mL_i[eޑjZ?+D TO黿ϋ >T ">IPp/Dv=z.ܢ�XRg/ 6,2,o{{郫_d9w~C2u(@=q4eYXq# m?c)iGlߐh_okT@[?8;a>C>)Zoޝϝe5/=vkYHy,;z:b6ӎb+D".Ay/1XM?p9_frD pb|ԖϾڮiOʎ;MssGq]j1+st +kSVuXL >nl23"fy(,6%wӟ}l h^Zp;C7nFޏC-84CLDC< UY6r=r]+u/7+^q. =zsW7"җOO򛘿 {E·+aK(? CO%"6!>uӽ΅')vyXӗLOӌ~Du&>.@&eQ|+</iUe=~TP34 (kh;}\^oJ5F!XHi2PlJ{'ʏ :D\5(W5v պ|YѽMĪp)e6_҇o!iwDd_a9:-9 s{qs=agu>y"'A&M!!bHvŮ^"V "ӪT(q} 5a@GsH#$'H#3RꢤuAׁ|6�KWG &yT0ce95P46xh4hRQM92 -*A[FδRlk`a dCבHiozЌcX=dpW|R$x[ _YwQ& > qYÐN+ pTzۂDe{en2_3 >Ðf+ b\Aʂ(-(EY(+Ak�MQ! إ-9M_ARbQ"MBJy̭gg K^0%&^ۜ 䣕gHI_ruHZ�w;BVH_!11ɟU JY}&BEha<\|7ȻS(7 !X)THPU`q aIY Mp[dA�+BY>N\ʄ5!\$tD_:vPF)S!ꭐ?:(jd&Cj%co)<m D+_jhE4NA4 ,!j䎿/[ PratT};dMDMhc"!UJ'5QȒGzR$sX?Ȝ"KJ$I7�Y-#"Ûs(Aن5IgB88C\ɹyGk 0R]"uQy^C7ý/gh¼pgzx 68,Հ1lF!ibLҳU}ԉ[+wƒgFѢV>"E#@y{RE\E @qynQ8jAâ{s|SBd|Έ]<X6>q%~ny ]"KЄ@Y.rDpqnb"Z}3rUbhח~pt FJR>|4QGԄnA32+7 *UoǸNkq>l9Q{ [J=xM"\Kpю}7XA`tX|ȑxq  ?˹b*!9kQl-<@vr& 0Czm*SS=op{?q23ָf:Xq능 CJv9l8 UYV 2BS┊-5ܛY~wnԐJ)2(%2(I9D2&!g5UԋO/]_Xr'Ɵ}+^ KNVE,Qچ0)w"}⅒'^8rJA"ijD4J)PD 0PpȹQeH‘w|*ES;EJqR +e)q䡑,)GEHl4Pr*)膥 Ev=Y) /BRDz %iPIH4$2 )9FNON ǸclrԻk}=NcGq#_`{džD\ '99H웷I✌D&~c f :%"vRh<j6"ćt9TBM;䇍+�$$Qv~`5ʇO`-@ME^Pl"f TqђJY)ݒ wdW 9Ьi Nx\uHzN[ؙ4 LCn`P/*.GiS%4P3RGݶYz\n )ߧ֌ɕdH3`M/a(Fv<,2o?0uk"22.Uo+1^<\σ%-97+t[Vݘ}iKj@S1^ٯt_/U3m9|-N}oY+&J7U &%X#GTuEH][eDfp߈ X]ݿ4U~CC/ Pl.je OGu~Aa|J. ۯ;\R#p&<DP09 8|֠hޣuqGv}_H:ѐҠ|a_! !sCXJw%M'2WXj0~_iE+.#Kv>q|Hʤ'^b9sV;b)dRBHt]^`͑gC`ƹӡFwJ<a6;pȰ+&"":8l_-X{Vys >^09~CUit/'C.8i<ON`Z8>fB{Wڷ/ߔ=x78Y%N6ē$<=*i;Gru;~ZKb bCy⽷u]J{bY+cous `D8 yۜ"nNxڽg�RWRe_L¿Dzl6<4n-]N*0&拴fl5!@j\NQ!v n"dގPVv,BV"d&4* Uv ȀU66\_NJ?xьN@/ X 4$.XF|>.0 5h7%s-l$;\D0L;`Nkhʍ冱_ѵ=Khpw,Fʍ w04{1"G%gn0!}bbfqș=]Ԗk]eʣ!w?E\8^sW|q%-)a"}!*%T0/44YnCi0�"X!E?Q]+"h#?h]?wu@y!9O5&,v}5;Rƃ,l8@Z5738oB>Pڏ3(Ttn%� q5.\׋~A8_+W=ZWVn7{3,Dy=pQsOg,~73Bc)׽, M|AF[826~BtOU@Џ6.?%L%%˄#+?m1⑓W! ==W+kG @ #T"cශBIqxٍK@>V$3C3$8B裗vÏ?z43@~Ԫբtƥ=vB_)<-RSxQ82G.*sؚ ,g] _m0G** z?\\u\K6oJ)&;1P槷Q/&7: ɔ$BLh!VuHrY=[Sָ֎H)E|EX. /("^BQo=RV|#^"sOUlWu.߮w1v*#{ V0+KH_S]dnܘikKr']z7֦Dq\ 6aqy :Ш{S^TB-5|_haUF2i\}Mh5l*C+*.ejGxaEyX1:9rMoa[T&t W�VgWYȋ>KhsuxSmآ{4 %,Ҫ^ߕ ?}oܲ(v)@Isde)-4`bA7ȭo>^hƬXdF3+ Ħ+#Xx4v߲*rM'<;0Jx¹[xRy|5."ҕtϖD|[;-dlu3"ZM=ͱo괣,pt0{201 ��$t x,� P2�m@*8dN<#3%cˆVOiŔ]#\7m̾{bv5[3QN{e҂H=l1;~ܐQJBm[ [ vH9C&wD\i=H8N?sY!I.?<JFJK/u?bo?!C8RYT[C)WrS7>.+S,NM Ja[rE 48\$u4boWE&ㆅ#e=a8 A6 {+XrǺY!]!^{dqݑf"`ݫ}VN.*Ϣ\W&83,I Ja[3LF}O܂E `6NOlUurtS0,ÉdljnЅ,Ђn?DO=B%+j 0w&+g6 xRU_F'z`ňL[1b{ մUT&n:P ]:19j*uߘ8#u i!?%<gBIԉ�C\9]cg<mG2Kpؠ9ögĦtgǴgv*ow(LA{࣓SaܷoCŴ{,=)1=$"A)9m)w )z4-}=-=P�/) ~gYˍqTyW_ǂm.]d7$7>~K BW5glrM/~*]_-Af`T2}崁}빿26UY 6+us,ek*>øLmH?VRwB 4 A4Lɪ6"@zߩ0k/mV,\<H;{r^[/|'nc#u7eaILX\u顐 adv/l:s஼*K6lJe >,Y$dSAv|+},"�2gx FOCyM^i,(=s%,e J*=X`̬@NtJb0#Ѱpx(~( h"iٶ"/]1}-ua79Ag}Hzٓl<ɥo/-vAxۊ, y̵y~f2<MCto}0K*"tQC#OnΆ" UWgL@P$W6<1d3쵹"k?Dy: ]QנbY:0xs/6Gh?=\l񵠙{aݯ|f^Er.e!-H6t6aK "4${7ONQnX+*' >i@ ᤨC0ݤקJ 0*n1$C<Kn%_<ݏ\3||lA9Tnerf_W8ݹb4\뒋q\2\K56˃2!qگKI V�ÌĨU~1zIOΫR!ՠp|N/\yms2`4|7&)\נ,{1;}0s'/G\2 l'V`Qist{4_ "kFRMtD7#0[K|t 6N oMqc^ޮW=1b6BU"Eq\tI%%jRճOnlj.Hk@+>8&EKʷTBBq o#0<Sq*<*ʸ4u`EKw#l0P)?2fp=�Q9O-lrgew<bb*髠C /q&#Tl۝B׳aĈ@g 9C_@j\J}?p<bxWfv]tk *Z!Nu^V3jm=ӪV aD]rw.1vOV'}OoA(e{MXsg\{Š|ӬfTcbCFO¤{"&NkYD b"BG"(OC_mb9`oҪ*9r&8ݙm]�wCjxkJhYA:A-)FnsS9UrL}^w |lLjV@ Q]u:L#~z}>5u֓ M~ FlQ]-B w0`4D.tU蹕Cx9 dzMr'}<ʣ/m a7T/Qju [zE"CLֳ3.ԩ`W4/z}q%SsR,0o]\|(fb# NjnQm9Xc؏"+rY(0Ò=TD{ dwIDIvKpkFY|u!M0kG wzwDH'o� QWYi(5[VG; ]`7Y#mCHCi&"`H|ԔZ>;!&oGU뎩ie0erv %/BvyM7f+G]uvmb Db+=*Օi]h'-m֒o7]GɭSLtFá|ώ-8f +ԃU\鋖�_9+Kj074Y:V5qdm3%˕.A.a(L{6!i_ΎT]Q^:Nk;[KxH>gHK  _ͭ(IZ G/(t6OOy+#HN*%)hq)pRvt2wzacJAd]irtXxJI PFޤOJdzԜȆzy>{i?f� }5 K $0+)e~(e y2+sʬza0NxfclS̹Jp&Uez?AfymfpűdBԐ?A٣s}@|گ ;� \A<) 7m rl"APx,D5$ǸCeG>q!Wp)-z8xG5 ~+ө"cFQt EҋI!]L7֓y8p R•G/gh8$w+\(b+h /f"j8e0 $9"%ZU\X*wRwr@+VBzB0i@= #!t֛:Ǖ<kIgPcƆ+\]U-j΋~6/N>‚u" {( b(땃>둃u;uAqySyRp`ᩚY6伪kw^QeF l �]�4p^PmGwrEliضTo4Mwۮ;<,ߋlļ{OQyx1BRoQn^/?-P&?t9cjV;BU7NF~*lRضyUӨgR"d~bZT fz{ x5rc4Ct(g;(z`@�w~Zfvf{d~9vnwz ]cyFRºTkڍi J>x<1;bNLӡBt_WۍC$lk-8A!ޞV7n7a9!ee7\hE;(}qDf3lDg(#T+IGCm\'KUV Bs;٭ DjQ_U]ߢJհ)FH*=fp#hjB/PgM^'7+;fѽM+$.ҠlO3BkrQb$T|FYhy1`.tEIR^+-5Vަ*퉠|rY@SsBvo ҶflCu{#};y1 z*;:J>!M?Q7PX5$́ POE 5k d"RW7Nh樢hRpq!~]]EQj%lꑇ٘eVyX Qa]SUQP֮V4S<2"zÃ}ۀ.{Zc:k@.+5Ad֤l:Ϙ(Vj�CjF(k|ΉQPo>]#ZށJ^ .W\kTRӛo]x{x'v{Ka}gl3fZŐI +V9ؿQ' gwQ4 +7er!HNijc/,BR::˅H0Л$ Z1w&Sh ])0%K OFh4POg)ibcI xQ5R1oV1Tԅ(2&|2}w..y_t]k6hEugDH4Ol9Blg꺈.@q&@}DګEg ]_C]RgDHGΑ="|hJ3]"N!*9r-Fk-)^p~ӎ~_T\̩ =Yfjw^R4Hԏ%h}R{>j2Y̆,U/qO?WiO-qQm{?$dbL̊-eLbiEg\}oωԊwue眶"Şd#-U9_d1$0W>"~p ̺uF ]7}ouݜ*7=]z}UwEuҋq\@8,:)倪7C@*t!4='ޢ&΋'%p-'5Npj뱹߽ph,qd/[,JյN,xb #0vWNdqUe9kh5N"5* #؈W?TeKoۥ(+ u!z_N/pT(J8*FO*w_*-.ֽUYдFJF:1p;ps#-J0/i'Q+M:8+VhXGn^Q(V ]Eqz8t+(Q>:,`۲uE8T.C$n��$ބOFܩCT\"xEɢ^E 0J*-(3<ntc+U7GNU=JR@tf,A@ иMT+FSwuҝ"GF)exM!IKMt<Wu>v_Hr'K^Ν9ߍ [D _P =sYxwGdSS+iyw^o{I;K3ӈ8e%v7|jތN�)PJ}1K2WkQ5_v(-z]Rł'S'K9-}"&?k NU~[D[dLBӘ YǨ 5b&T ܵOAMvjY)#n_f5U1~%vJWqw5߶{HD`W8\ 6�pabHnz|Y.GU Ko&yl쮵ܫTjKbB-݄w1g& A&t#Zm~]%R>eC +ʖ\gorW&>OT1n4ԯ;WkG&F#Ӈ$w~1m_}ҒgAn’w@0-dۻi$%5CIHium6 Nb=q<r=֥;A{z>o6ԛwn3 !s zs& #,v 1޲ynLgrD/Q5t| kdž,f\2el$H3\'@G}&C6.C]CN"]Qz!0f0wEy{w` Ez P$hcd-_.9ed<y0W/6Uwm6}g!=ʏKZ7r0f^-Ewev+,4h3b8 @bM*_y]GnTP1AV?cJ$뾅>c&@Y/n2y"l4liA$+}5n(ʦ[Wn ;eYˈ \,1it {[]gs+ߪ _.32pL4 NR@t[5鑖+3pí>,d_lqZB`ZsUlx\'2lw.U` աnzH3'S~JdʭƱZm'Ygj= 4v҆D^/[{>b̈́?7{jS7BzpWt?5@b][<ʂjR!"EQh(])M ˄)};mIkL/}\8C8žAu*1'4XXlN9~{TN6] 3h;XQ7K.`붇Or"5G D7ZזF-ٵR4mO8s吲:]wͷ+mF LW#)j bZJuu.]cjIgBzdz4]`J6{PνQYZVlhI/Ǜ׺)x>"$R%|aϪLxC;뾍%k <[ 3D'$T(Mސ鍽3\g^ iCy"Uaq~;+67o8- g£>�++)Tv2SG8m*V2/:ԈYA~Hspvee9&L-y6Zz5;()%OO93e` 4/~}5Uʫ1[*<ԋ!&q1848*c<$\{dk}Ge3 NgQ)1N#kɊu{YB�M0k &.󣦷|T8U{<cPLcb ^ǵrw77*_ lt9 M|‹V�ͯȽc6Nq2.)eb_F8$Or?ES]ϙ0d,,Geȁde77'K$gN˵2 XD:qx%}ܞ\= <vqfzi5rV.^]B.-פ |HEA?G'̨1\L<[Wƈ ̊riE|ri)~^ÖWhfӍMzK  %rES,G`On. RVB9F$NuZrqT"I1StK<[I:ko 2Q:L`OW.Ļ:%" iMpQ=T9) vTޯ'*O}%C;r;Fu ^WK?tւyE‰!OZ4Jx~1Aɋv5[˒g9(v;Uoy%i 쏯Dl d# {lyt'']w#_:P{)=XX[%yd8S[@Ҽ##0\;0aS#G3M7g|BS~OV~:2Ãũ^ ȕب#]!BN·Mgb&|܂;<31/| nQȓK<&äpl Ɛ@.EJ i#-ZG%_9wS=ezqEEY8uĖ[2y!.}@n ;s_Cʎ| k]_b"n̤XxJLGc΍) ՘:kwJ�N{ڴ_cW�mϐÉZa-gm_3L;(:֔No]Kux G'1"ɔ3u0Fl*P/{ecmp^o僺 폌~N!Eƈ]#zrޘ%H*ị+M`NB5N_l+vK"PT_@2fN>#07~$wG+j˘rb̊2,B9M`W$¸@;?9VZak`Juu2"�)D&<R$1>ORQyL̂A &_!fOӕ/[ s^,]U?0hv0 )j?X5ͼtUVsU/.U_"UX_ܛt^bqO"w_>DS@պ"L rߏu tsЧǵe`{*0-`nIgt5~ #}5ۊ;�F$q߈eIt&Ӷ FCpg}+ \DTG{c!HR!t5m0DOA\q6-*%x0grJEP-NiFi\ڥAT bDzh^Cx[~wVZTm>Uwsڢghvq)w`} Ezd7&xXTUn9Ef\X)D2K~N?C~']пe̙Ѱb\L?D=)`z"Zd&Br  #zDgS*ZyRF|I?_ eE]/p\\rev#UEQS5_QF�*m_Rs-*ht?yȕ6]'P~M3uCp[Z:Ǒ] L_)~hrw-bG~^EI:=%XL~luܤ'tPc|yQmw=HQHk'b^%D@O>Ic|1 چ]{Lͨ~nJ?ͳw*H,$[5B}LB17#*Si?p VdsINKuH?:tViY8?dlTf7(F8gQquJTk|HB.͠(^ ߧO&uSsGuN.=O<:ǝ([>`GA^mD s-z;QkZđOuM<ׁk|Ylq/u#s~_kiVfmk<ܕt#5q7 %2"⎋\.Cz$W-v4C>pύt)LK $Z[V[ZR=l8<ы5X:%Mi' pKtYg&*�ڗ;kmKktKO@~ &^`F5V^#Q !n_#L)Y9LyOA ,ǚht@|qh Mƻ)Yk:d8"v%E&::,x(Z'`Shǣ!0Y8 qdi+"|X_T]|G{NWI ԙ{uuNR5q[f se 꼀4ϒBm1|#v %;"N,r*0 �J`,_(GPAuQ^$瓓^Gk,q#{T|Pf:π@I8cF+5Zr%v[ld{תDnVmEˑdV| H5kɵ9"tpr`X)G~%.>/sb=}i.GО@;6 v_ XzUwe:q/ J]!>Deȃ>{3r-f" xROGS~[RekSWٙ4k:1 _˼1F˄׌͟cqSab}mb!DdGWwYv-ſ?{di%8wc>gGq{K'`]6ifEAXx!J0"4f/x_o�3%׈5V_LUPTvӥ0dP_j>BE2(C}E Ǜ?V|1ľ@P iQzNlEC&#ӡ7{?b䠕�uRQp'HpOaw][;7fcJ0nӕh5wӬAFWO/6} IW `A~"2 (IfG4vij[*:{\ʑPĶI?k)O-5 )tP ^ohIY\QЁ2G6NE9NͺF=u>OW7(9pD]}rHa+=NxGIS,z¾9ԡ P[oQNk2C!_PY54Fj{w]'Xu'P\O0.tdƄzhEkit{(SML8z6{^9RCQڄ_g孿>yE3)>fT0yd3"2m/2,Bid#fTJ;%3rP~7\<@FEw[1*ވ ii{8/q_R?%R�ùC.}C^;~oL"ꐷ~>{nE8w~ER#%w3er<#LBǵR6 8z&K/YߢgVaHjZslWk&}<.3N}?B-sdG`iImŨ֙doKo?5dxTl&^ߢ]P\WJ �:Y0k2%P$ " ;p9^2˻˥ f+3#$-1ՖZQ(3devܽ.쨘3P"8QY9 躉J4 9xB=br(wߡe{$u$NL}V^</af&NfsnUeQ_-Ap�fWX@wmx`6DwJ{yPC5EoT.ŕUxN<+YTx\&6gp]p̥6}y:UZV_?V0 7 ,wi'ݗr?wdϟ$OUXFϳg>쇣$sޅV zR=)P`z/{"*fxt%H (##q2w5f^[_&^WDI+k$NF=jg)9|N$ 7"s*љH7nRP;r^(gߺS=Bg,aP @wo.k,U#T;@`*1  EpY(3RεN[�1)q.o xbKA fc*]o҂JSdYԻa8X &&`V<G>h8jݔYB&p]_L\Ml{B5bN>r1n社܆QB`KfTx솎Ucri !o4FJ�]"?{']oΒ Ӧ=ZҊ҆$)>p W}%ԕ."I aj&+:"Xc_{\j{@J5O67NӰj ԑv jnмqY6k6ܲ'H G/sڸ҈ \kH\ V:+%~>f,K<DXd{H]CtO }+!=1 &Q AgZ s2Gֱծ84޺�e}g(4 }[ .ߣ"7 i OW ޝm? _f'Nh( sEyo).X3&[o_|=$) #oAd7Fg�3-ʓ9I*dSr?^}<;3VR|L)?_R,hO7.p۟wS h늆#'W7ÒFjgc;L,оnGb:~(\!}9Jao[ DtQnE1}F4dF#׊{m`B9&h`>0AmOX2!A PM0"`wEދ'.둇KՖc(!UDP.WMZq'$P6ӱ]e鳕m|`znۍu,$W xAOj]�=73Xn4!F`ǩ4 PJ@hM ހ u9(x(2]x1]u>Z1EWD->=Ǧ)OG}$Յ (DY- -صlYw33##&ncJ4M ~gdx5ʈ+s҇z7 |+S M�΅R\ҁ #'�yΎlEbf7cdui(~;iV>vf>*b+TeJu6 Di:Z[5i[!z<3-Ps3x# +L,.P%#zظU<~?\4=w|FDVݸ$zY׏Y\AZZZp!FBRu_ QBKhsw IްB6m4Hޏh>e5ɫz֫\S5hENjT(6^_qY{{zIZ)S;[S9Xs`d(4i_�u~ի02Y$^Sg .7ܚW˩5qL&Pmzsq:0jJС$Y7kNZ%2J\yZ~H2Xy}([^HE0O c`]]2t֪T`!+sŮG><8",5/$ esajy|^4ͷ&%.+]#=,cF&˹V4'~#;}䗝j v$a|*="Hd *|&h,9 qZ25&O":bt:+]zBL)"7{2ic!cy$i7{!YBe5!cpZu}:z4>I\tGT}PGGyԊO[8xfY'ι8jtt@TJ酮u@]q J*Ȳ<uԎGюVaE6D~ N9F&?C`ZĚ1POOa,@ Dqj6+#oVխ tgH} ES#!NAPK򯖫w$�FLlG㝣Į{)+7ηC|&زVa6M4VnIx|Dc=$V"S+c;!ĄEC+T`zّkf`I?41힂4Qսax S.4||,_^ɺUBFkat=@}e;CJ2'eA!¬.&B½cPl34zGGv"8& :\hBBBnFJy@%iNQP6_zuVWLQ� foaۄo$Q'F̬Hh8, pF"8-ǩIyL'ጵ4=?O؃3G|v}SY}o/czN t<4^WKc@Cv:>"螳ݻ-zi:A.7om,L&I<_NPdt2ǀ@K_]n1wpSaA{-ldyRߥ 8нxяiZuߛyEH,@kRŮ}Mv$at /(oi3Zg\I9 ؏]Yl_eTjMpJ'\:ȣtUvmJ'ɥS x@߰B# PEwB2xx^=T;mNZ`2+s믳ae86x0UwmIH^EȍR;}],9Lk&ih5W`N!P]z ȃZLB"'^2EiIM7/ I(oEiX1`gL7*/ iJ�V_2PhLsccG,K|DXS+\[j!u觼Y(Lt>]gV,pAN˼cX}õ�^m\چyy2kx4lk|Q7\7q !CA/+<NtA9w =' ~zA*dhGe }cTέId T2xݩ81R0LԯQL~.$F>2U_'D1 ?ܨ`R2 M5y/%& h 9ŷfU σ,R@&ʠO0u&Mm /CdɎOώzsP]dPFI�!(F$I9+@>ZF1,Rӝ!^i#K:ug8,1D� n@~hK @գ$jų7 LWAr3ҷ{f@4+Np@OdS9g7uz²|=L0\@:)ڝG̢oɎ{JAL"2<NlѶOۉy{] En�yf,{RDcǮYE}&h1Vhgo[U1z+v 8)\n!7|h>#;p;a:WggHÂڋӘbMY$�xH'XiGja{QGs?p%9*J! j۞k18Ógy@Q/N/%l&~/O%Q&-}cqgT15Nڕ:Fu|-Ueȥe&D fTĹkcЃ.<PI)$8plȥ)Ku\^VL|tywVkyZeI]p_t:Dm:#V5$xsBU}̺琽q|>KICY;ӂ1Y$Xg:F7�D P.rryhiӖ)84-2qΧ�Ҥ 8efPt4;I'ڀ?��0F -[ ,'4*pRYa@5ݘxkPocsa&b;B/pRpR>iLB|qUAr܃̢O1*fYs*g��PEsQa+\L_<XU?ZbXGp41-Mm  bF_ :} VJ;Dr^tଌ^34]l¼kȻKN+GK~uPma{XwNB5\�SxSa{Mʜ@CߒASƂDBt�~-RW8ޫ}ZȐK3� {W$H7RiLF2γWx*mcGh'ggX:í{R(L6VuVgUO>EE G6Ec5bT2ېSAGz'hܟ]=2wJiF.2wa1"-x :ˣ'HVPXU ))1JO^ȪvQ&j]4[JIjR~(rO�'%}n!8GvÅtiꊹԪɪ0͋y<n; RЈ)P~*=O4;davq.v  *xPP*(fܨrv:͝v~I2db"X-h7׶bk.Tw|H<Ʉ֨խnuv,%e0%/U~avbՉv=Hc0"KqBJ7Cncɨë5́\]OrW}+`5חT.H艶DZg89$~od;jY> p",fpHO!}N-C0IӕתI=4ru A|^yV ٯJ5~~97ĢS&!ONxJL7#!D=q;6TW5)3|JuPFʔ{"q(3ۿy�zVI!h؀ߨQtB̽5mKa+VOb`MGqk>ZZ" VS*}~uW\SxzƷB{ JIj꼩Bΐήh+"kd- >+l²,Jxb4c݃5y_uk%0K fp]RZQѲ6܏6[ܵxU"f&TYtd�kMrGD$wtcjqr t_r~ W|Jil?Y(}Nma*ޖN\H5[8M.&lN 誃@t?0E#"A(|vta\7,-u2z5}+0}ئ4jȻi\Y:zÓXÍ-VE Ю3: ~)Qf;Cuᡵt=HŪ헽TQ0Fm>\Po~**x@Ν&t�H3gF9$q~Y)S)WUR�Ȧ6PK:᠌zA l-;LvљmtFpUGkXWZLޏ!z˰kjwؒ5HS{̉MG |OeY/-s 7nz j˪4}C~h)5n\]G׋IUs}YF󅃹o ]hbC_:j3H-7}O$7m[ۋro0fLzBtXsӏ]^&Oq5 ZQI~4u@HGz9}ʹtΒY܆y]W-jH~ 2a}TtDCWyN_\uDԬ^c-d٠[-ط{kb+jcgdPۋ`Q^b}4#oKiZfҵRG>*L}T~bI><}̣_͋+A4*M)kϼpóhzBLPo$Ӵn,8+IAWRQg?*ew\ 釜mB:|S#WHڷ3|db}pԖ֞Na`Y~X,ϧ'n5ob;9TUh lnPr NR O0dkwo/IK͇B<2(t<~q!鈼!2bHj ht j0y,QτaRaw 譑$7#|*Xf]~7 ]ʬn^ĶءHI: ." H.)"r%W=~å�6O+R,l}LJa\`Sv}x_:3+J*:b&OM ?DO]LQD:ɭu&Ȋ̺,i[cpceV5cHگIq뎤ºN nqvn ԟF4vNky8Lf=CH�}G;#@?RFOHhktOUy캣Tn( -Gyp9h{f`;+�aG b\J7FPmͻoF`cS쓻7*~&nսD"A;K]1w gdj^Sns"c?<ƜxAʔ8<q,lM >szC? W24PmޔiyK1 KV5'a%8s8 @=F0Q..9k)nl<y"#ߚ$Gg䯇'KA(@AWbCcQd7BC #7 ] vm^ kԿ$OTai YՎ\ȵk#Кb̃ڳ%XńS 4 DŽmWjghU(ZtO�Z;l6|&rZ<NYz&q <o9nE]d`k<XϹީISpvZ4 ;hj3?{Ѓt�<6&徽b9t(R6ܲ頹6if+yY`'GP D._:s0q種}J`0퀊i*\`&IY.nhż,'yyn*'o/G&kEv.B A`A4jJ+=/{/}:/} )Fwr ^�=qUWH3CcZ 0)�Vz*UPEʧ.!^M,n-M_z_9f!:Z\y5"RUEcwmڑ*1ThN@ \?@tWQ1Jm{&1ե ]�uf1 y S_VCC&x$:Yl œCH~͗ q\\Y3c{\Gw15)]yh ]q`CD4W%D}pKWMYQӂ 2<|hzЈ4E4?{p  2E5mޘ-#:ӀL'}= `g ~fXt&E6n!qsڳ5fΡףm'g<;VR58*Ü4b|ڭ"5tN\P?rAѴU+ #3@{zB^F ѡL0K}q: zՐLV7l^> 2DYjϴj,}DhnIo0N i/ k:RŽ*;õت^HsrmgjE_<'tIK^@@X0Īs\[gϣ$*;wMN^e!֙k7Lh߂6j;3 ΁=M|F*&Tqq:7ŎlzY4~R` [ =W܉ch<Sƛ~JUI+O'|05!}U(.&W8@e՟G(\>M,i K3~b0g|]�zRl0x^9d4(-2;zNvBu}ujn~?;&)k$BOL Dg:Jф\_. Zʍ5;z,Ӛc˥l�0^v+Tc#MBF?O;ɊhlK{'7:v14"7{b q>s?aĴhDl1Nnu_"Z26{le՝77 \6ƒ9_v>ȳ$/Ө z_-F?!^¸ OzӇ?jIf -Cq}[ב]=0ͳxVj· r">.P\UC"Ra3ȥM L^5Ƌ+1Җ>(Q?\8a~UkT0F!H̰!"E6rjShfԔ/�`[_M%cޯ c |?0zHO+QR|zX9NJ#OXcQ⾷{B~^B^Lz\6'K1'f+FVW/u95),G`Ϟb@N{ �lPGh�O�G}^X2Rp+/DXl75`ht0 hu�B|QvM+9P0FO~!o|E;Gr^zs+DG{)̀Lsթz_ۆB; GrD #(D@#padـ 0fڤmTJIN,G T70�#0cb{-` [^|qfK~}�T=Rb50;8f6"`# coڤi[ͣA  ןmL']&&lO 5jVb =W*3ǢS9` 8w{1y2L ?5<bӦht\t6w0ݣqv;H^흐 -zIW)^YUvR$E_E%^ziS/v%߀qMT$?/< \f(7!NOܼO/j!Q3 ~!Dkn"A"-0+-TieK}. ZI@}JصLj>QX.%д hH'#c(r׏Yh mþfղ㲶*x?^(: ><JЌQfCjʷq-*40ͽl:es\xGLZ+S؆-VSWGFVb_3Fgcld*їN ZZ?1>'Zt2C\y@m͆f9"A\],vCږV-0QZMVҬ!yaxWwͨ#*�t77i c2#*#_?]iDbqݴRޢE%ddhЅ~.x0!FB@NK*cC~`*B2\X9.5.g]bFU\D&l,;&GwbkPC*~n __PeBV= ^A|Swdf krqk#grJ5@>kX4KyTqdi☎-SA( kDZ%M;>[V]@Gգ^5)h~t1cG3zg F43^ g r8:O''nyV-sKVS,H YU�MKq$nJnB ݎf8 ֝<.ѫ{k<蚃j6n~M-bR$ј#|W0pJ7`Ki-JZ 4r`a_9PUB@A?{e`7* Y!x >p-4E*8$KQtJ!}6GTjWŇASBۀ5B$@qd((M< j¥Q*/'Ʒ`iƘghFGfz0-ӣ%Gy$N 57G۹@`@􁶊mYC$CVU*[)=A\r[(s .V՗rmLil]uG+Sw\3/E<6sa!HtUn 䱸:[')݃]OҵBjod V.ъ@s+6anav#:(�p'$B+AO}^!WBp^,xNo%u ,? LSz:`>JŁfQg~'m0~sѴ+h+40$YpY֜y>z)o:nuf @{(\U?PwxG46їϏ5mb_&t\!X3,7Ub&pFvI UM 6) )~y' d,жrp]Üjc*@s*N·E6A,M@ z ^д4 ߺ_vPNo? QJV/irzU_H_ I@z Ns.bp$gḷѱGbh3u^yމ30FO"moPK {]Ϙ},Pɧ0ID|TFH]8^*'x�ߒw1Κ5F,Z0=zR$C6/F k&a ߜgI*[j]@cmclX)mbҏ/ Sa!>j60S p~ N~x7jĥҘ+gk'q=Sr'j 5gG:e0kDqšhMR)i�[^g,(˹[U@{̍_H r~y08fq3g˽g%ҁ#r^!gѫ,R:2 `u?غ D|w#+;"DA~BEB1t_wUxa߇Ę!>G%25Ĝtȗ(ӢeTu>#H0gaC p'(W^FO\i[�7` $~>ydZOKu!@J=8Nsg/T?[:'wzDUJZAS:{[+>JX` 3zrR?HNw ,3%(E$붦lQ3S*uҵ.lL~Ҫy}{j1 .=(zchQ=w mV`r).3f"k50Sv 4.}[%9V%变"!`rZZh=Զ.Jl&]ٴ*Q52a]5`DGhF=mE*򜾷Si^&bg{En}-3pŬR(QFN9kMhC'Z\ xu`Jr8 Q @bZOB{>pZ ξwo]B`;-1^G[s]ݡb} jpS>ў6(4)F8_s9= FJ ?dS sKLoIB\HVQcLSsQqGU+! ɑQJ fLb56Dc# hLF?ѸPa&\$#JZs &32b7WL:fh|vE<` ^ & S9rDzABS x`(M53M$HX(0ŒrovP0cWy[?ZUD:+ox(Yʆkr֕B3mhı $ xIBH>&tZL篡>3Vc7LsZ !G(0YB3g5C5hLJMl끗=Jsa'8E}^ξ`ShV\3Ԧ;&\U B\fk嗪n_̟4|Th]78ƾn} _"\!N})G3`?S�tAvFܱ/R{DA 5& 0/O./&viFi2zwd]YDEIHſ+4QĠ{s>CtOqn0׫. 'dAf8x7|sm,>a&vn9oG�k.<jPjoqGu0Fœ'j錷&X`MJ,pzlfSڌZ1S5"MIUb~b1DMf, W<v,{Xsd;nzNgtXYO S!LY hpsH5]:gς7w]gЛ',fπhSL.â&׎x18-|\s^9m]R\ئ9q"&Ma P⌫!.sTo%fZNv c0@R\/L�ϊqGFzԖrysnϾ?6LTù~tHsϣwQ5lf"loh:# %91B gg\5$h? sol ivVq x&}ǔSCR1`v:Sߴb}kq0~5%5Cs?Q.�?t! YHudX#e Umwr&˚5@(S8P! rhS)eNY/bNMI`d/x{#kۆSK褢{L";y6 hKxIN9A30 \<r*sڂC8@Q8*L>�/NCoeh| %KЮ%90LO[o56)O B;#6`%a.]T]3AWiwL?m?Nmڰb;&E@g#&>"ϱm}wS:QtwЫoLmBpέQuyYx5\eCOsmS Z>W|:Ih%05&InBCkR rHܰ^|4\9Ețz?E`{UK ^g_g0&k̝~6VZCr+߲=""߱Q<?S)=.dUFʹA@fE|WLjpð Rl=(>X8DZ-Wgfn 4qEhKb̖Lџg9Ls+۬e4jc3zJ}*\d0?y'كX/TNQ]ǜɉAv2b3X`ʷ6G8It-4_ʃdd5>0hhq<F_9ƭL5D }#R/ @;,hH^7&)5Ɓ }wt#" >;(iќGcEǐllo)0og3]5:!D N1c"pkz!L5Bw,(@kDՇ%QJ\.<Jaxy9yECb( ,Rx>Jn;=cwwҴJ<SGL+] ϟ=[)StDCm.sry;=wx6KI3ZG=8UNNTf򧎻M_iLʡ(dJ#zwmCTQp@KBwbS�Gh2Es+/{'gr?~Q�qR];4xqƫ3+(tN9SL@ >r +5:j"~ś^'GaKPBWW ߞFۧ4�હȁ cA ?}no|'~e7ynu;k~}(=*!-&qϝgDWNq�5ޙNM*=a�Rmp*6]ϼ?X#skL[JXnGh6s?eo O>saglv do'/n f`}xlψuL5=?+GRþ'k7jG{PDcPZY3b|d=Q1Bc\c|Pյrȏ󠓻6(cUl pkƁN\-F ]'_ ŘFR0:_]0D&zQⵡ2B塿xdw:E֋}Q\fco*h0⒉M6 3<C42 �6T Z\.cLw3;zӰ<D 'E:?9xfٗ :^s$k7١9EAg#$]SP=z;kFڅ"J_/CZfFq9@mԞᏚ衕Sr?Z)4idOaP_OE}ݻƜ\ޓ9%vixkg'{,J?@/̈́f¶z{3wKk>D8$JSN}5mϣX/)ݮH~S)hA!J oK-#\) ܳ؏Rh\!s!Pǚ#"?ryLY0b_.YNBbTzUpVٖi-RrHi/3 r_bǚcY(f*0~^VJvh Ǒ \,+4? -VYӭuo:r3w^g >L[հt<zz7? ~;zZ$lDoϹUf} 5ACH#kJoq*MQ{dt ZY#rP+ߢ6ӛE',#Ju@sHM?A{d_ݱ;/DX> Fܚ"4'CC*Ic&a) H4 4=Єt⓲-#"<jҌt;ٖ4vx}0# BI-+RT?AҐBlۻۯe?kМ;v%g!Ōgo۷6C ǧ#U-rѲLR^ soIE;D.-JLOemHo2P--1X)ckqF@6C'PlP,C�],G*IBlAg6?_fcBS^r/_q%N[ʡUyKUiF谗!nP z,Ou%.$UߧX~�?#k " v#SKu]H#j�Y%St?OL;ۋRpY Xbk#'ۛ)ԅk %ŨM"EQ <c+6" CM?.鞍`Gڠp&d>tP2;yG$f0،YT+4LnE q9aDCM8LzSdIy*j3ǻvQ}Դ8[ga_"7x,쬊<э33voo-;JIwTc.l.&'s6r1`]{GXlbwˑd>P2 pѤN),U'Al3:)*o\kU(N-vw[S&61bUHK ^V~oEO7 .";sG]s8􇂗Z{WDbnjʹ*|h-|g4L{I]=tλOyk oD>6>5 &|zuym[zEO|gލ3}Mu(U?]gi»j|+.A^' ^(5|mv oP{L4\3o{\o'Ăf>6UeYVO}E'3S<Myz|&iIFO:gS4FYm{Z-Z{}W65c|ۤZ-R{84ʦ^ XILޢ{&w>= Vnm8gR |>4 dwXCP>2*Ч>e*c}ލ]=w J3OЧơ3@ϏkYm{=COz450#WB.CmWiT>/McӨz}�RKc6][jb)Tw4E]44]y[fG5P}ѵ!.WgwSR"K]nخE-~yEdtBEJ/~bX$նhlT -w fG@Ps7ä��ll%~)O՞Ӝx6E MxTMۓVȆ?7eay-u@mmHN)tCsxϱ?D# Xrew�Å 9YXϾݝDa"FE}c }5m9(b =!wꂅYyU ~%w}TmL>`wqlp-Jpf4pib| ,Gpo5<nT%ETh4q;q#า`2j6 ox\8ۍ�,g`H(j&[c[, oB OcA2&#N{k;tph9N:JгG_?% 0xXM*޻zfW>fr\Ao}YDs|#�PO\wJBYlrA"VW4;XAcRԠ3Z77Ԧnd3Di X+ׂ[fI @PBdCr3.k6pJ|*vJW' 1d͝颖{[;x/zX2)qYwuO?nSo/my!nۜsΕœI#s(c@{(9HkuBz߸ ȌE}' *+qn zRЕN*ڞ|Q,m(~�rNBĪjѩAD6~2J`h`9_dmRHx}x-zw&…NZ\!aypSiIݯI }98@Lh-hԢ) ƍITBJV>Q۽зwVS8T$+2|Y5ZXGk�T`&+6dcSu֧kxldD TkS+1,Q&苼kmh/llFY"ZSG{F|x*'*7-R\^i Z:'n\OߙQj?Qd(85{ ,B7ّ9(;*|(M Ǖ>�L-ím萺h? >i:j`_["蚂8(00J{‰~KR S̭jT9TRBGN"iP:ڿUR.|ÊmR#oxM.,2HY 7(`) \,* u,XK`(P|5A>: zYHκmCM`kohVNKtw[I*:R$jDUH) al~q4{!ı6Wg#5N`Bf紷 ()‚GMrf|TSφt~iSl/t;]ƵdP,.ݤ o>Ey;F-}. l2a=ڌ'MZl,<yq*@K&yR5J]F'x,DdW jMl5|N>W4^xtOmQ5Kv~I6YijQ HQNy@ǽHf#mj\R?H\/VvX^D~r&On w\Y NSU33RA.rit^X6: ɛC㓄Fq$5޼{deh{no^#-6!a7]c >=/ Z.c`(|,5/݈K +9VD$hQE4~9Cح�7+p2s.]Ë+X_Z%(Аb}$; DށWWWco}3Ḁ,ױSo\P+q)�<�tU0&U4~|SR&9I8 D]Լ1O .3HG[`q@W`N|۶^h@N(dYD >p{P9g'ߦ<�=uPZ �;s4�ǹGgx`̟eiFhLS~fcba̛.!cٺĭg\QҎ"q!-pMhO;ZXO)؏Θ3lK%B,e8=2)ѝZkȞ5[N'sz$bZ3~zl}-]^R�w߀Bumցj5n0 CݛaT㔃X,{ōŒ 8^rj lء {#0/YNoEP9*EwL81E]Tr0cG9"„$[廑6 w "  SʉGOMT4Է*Z8Ot#un}ʊLW{ena%o:5wJ k&\ڐP/vlfF=D%X%;?8�O35H+39p8&Lj|"#23n)s5ut)H�__D%} h 0m܍﫜?AJ\E^ͤp_Ge**44AҲycw= \'(x(q 6tW/KK?3L xy2((e ^ɗ&i鉠ln_a~lhWv:wձ{B ANXgI &J\&0Aʁ\*OMENo {v 5}4Hq^jJl澙y0c2,z.ak3L_RZs097dCTgZ3U가'M/%H~?=kI0v£|?iZܩݬ*0Y!wu/H=&~(f 1\Nu79x/T|q9&XwA gMO$ѯ^ZmAvTt%OYKP"Z!@`߽8`DC1(s`Q_"Խ>{ԥ T89+y* 8V}M?˔4@3Wd{ gS=Y28ǟDM6ϧQ;ѓ$'E6mAVeH#�=sMޥ x iZ"pq/ i 4iɄ0u-";z1˶fo`FMYMQ4t mÕi_mrab{>\Spl(/k ^=ő vބQ<GF,+ϿYƭѱڣoHysy b=AUEu<�ڼBh!W;-v%ӄ% u YMͼMΩ ;C>M0L+y4 7$ bMuOjkI:jYJkp!$x,srA*Wѓ!g%b?,6s$.i-uP>8'+: +]o~s B8]#+VDe8꧟8x}"oF_ЏF%&ض#sAJtäǒQ-+ @??aCO`$8ꚫSs+`pe[J8,513糝qJ_,o3r Omb|]g/AE#UN'a6Qs.3<?ż9<&xy@ɇcʩBrV8}ۯX(`@->ER `irֆRDbks$||fO6&QrHJAʛQU?©}HjFexQ>Y՞Ӣ.clC\e=L bQ;+\SK |#U\7a/k] Ld-ICx/Ja$P_j!:vqr͔0__os>2~@Vm%v=GH웗2ry_^恪1d`2%׈A(zjf`/al�p[ߟl ww$ Ϗl=4 9߀cuvzCЅ'!B]`}b"rTtL"Ua~|='EV CwK|NSW~v㾂/'zŮD}UxG5խ9CSțp Vל4~طc =v[5a40.%>3g! ߦћl>=sвgV3[Q|;,=m\>=[԰!ъ0L4{#7�' cNkXxV?WeLax_ wAaS} 6f(OttY%u**M9me3ljM^XZ1x:< G_ DbD~nn].Yk@LABa;7Q4|dD7<(+OWYECC_bHKQ.8}P| Y r{@*䖇w62-(aD`Q2.W VV;nv8nj<LfԐYHw67cS('7R!jps!`py}ўs@E[{h8)E[/5w&<dc<rSJ0GIyc:=QďW`uZ>RĔxR^}Au7Rɪ j\*Ln(WxJ뗖 PTUǣEY%foo.ik[hn%k[AM} }+-&/C]EuL6&4nET[$Z;3Ӑ=ikZ{㷆 aO<7x8[${v<cxDGW-6LwS⚼<H^nbB~MH;#o^M:2X%[ody]}M]-vx�VRqT%oD3'uMdKeLrpS8n֑fL6BY-T|Mto+~o q߸b. e\R@K(,l/On(9{EЇ; i;fWI;ŻmV;h<t2?0ROs�l]ךDe2zu8l8z:FwzE)\XlPxbNcK53ZsTs3oaq&2JG3ҢE@:Z{:$P5Ũa:@csŌyƘO#L6xjy4kЎ@9O-4gv:;uppz $4?BwY7aNFRָ/kLF~`9|CϘF,-pIjݽIPsu<.q~;&F>ձYbRTg犕M*uJU>?h~a(aLd4i|x`SV̠o)(/WUPGĄO.(9JXۄ*UIU-xΧvDwq9igve EmvЯH०[3H2sڷWmX_K�3 50n;v""hngA}Jsͣ"m㿆PK2boZ,b?6N S6IIn o⏥<K}q<[\A+V+[Z5o k,k?h2TMta*B~unqsr/X( f/ jrb&kї\}Ë( k }Nܥ>?殇| pC/K.#@V8HwQK' uW2%_uOpY>:vcb*yZNZpy/ 2x׭Y@xer!28G&+^C6iK08P7>8} xo(V^֨Mi ,o.g˛>7zr͏ 2nrវ$# s8GDGE %i[w LhUEXPY4}( ,=[39*|s?LVb Oph �+gP:APjzn2>h>ۢ+'=Ռux\P$}fNb_ eԾ+v赇{K=ootAKj8�}?Ą02{K<.}ӃTHjZ9gaϮQSaUqL]G/=-E^8\%\ݐX7/Ԡ6NPh`W#>>ES4ErpsĠ>Ůzb*Yߔ0wPm+3ԟ_'�\OXfdLL0&4Ï6' y0RM&Nҗ_@Ӥ[g SPiQ./QeƎ*%xX +v4=%) /~p "⽥mNSJr??aT+l!-4& ؁cT^վtKq!8ʕ~Sx^Әi A& k&0hϺrdrdؖ6-73EH"H- ipϜN >_Fbrhɇ W[n>;VygD\P[| B e0l|R\K.-4l:R5  z99ƭAgL;nGYE};[nuJcRhCgMFBt$I ؝4I4D\O:_rGgGDom?9Q}FW p%[DV*>ykK,Ar+,1q)0q&?$%hxwcި6.jpwuq ("Lsva tyΛJc=ʤPe;"J[Slo[ѻCN6 raZDB.:i JL6ǧRi`zl׸7=A(@"UlfGYXX~XչZ3@Zq@P{4+["i\V͝Ie Y@2*2}o k15>2H]r.WuN"@&=Cuxv`@.8 ]g;CYZ|t]5fp+8XEIwZX H+|/A0ƌa qVMXk%qUs|:K' M:(׎a4Bca5()W6 ~@n?xWbzcȹNY6ez&~\SokA�C5?*ᶋi!/8<Xq> l*="`)Y;. I/jIZ`]ٝ 4!-:;G@+A,!bXK^HQh' l(> .hMmi"hLnGOW6 nΜ]2%3ۜRw7uxv9`4O%[2Lwo!mg N)V#7BY)7Ov$5X&Sk b&Yh L Rp[ +O{inT[ߘ"'+Ml 8t?/SSu(,chوD^c}]pwm9NkTq-)[ƽm]ge~"&t5(qMO4;sVhG#c8Q/məG-×2&cw'Z +Cd×9oÏGFޖ@{s܍gg5[N"{,k}"RG(۹bफ़v^\T,(?Xp=_n_cN@ƶVZ4!:H쇉R>h$r ũae%yb<塶m3d! H a-ȼ@lQ^~ ЋH ;.s[p^K/|ps4Iq8`d׸jDJ4s9(!XhRNj3<Nl~*-4#sW\:s8~~¨ ~}@u`NC5N9{9 ֽ@ۯЛqf8\zƪGøm  `y5+`OܹђM`o|:ez>? :ZIp<ég iD*]75-a!ԇާl[QOE~0r0�}K*=yIG EE <u+٬Y7 Hh!_;`^(?Eʟ61]T<wnj2;-i/tz/_,0Fnƅ5 fsn MuR) v)[CEF,|麵<qeMyvܗY@NcÃB"uժfqkTaÐ>@'&k O64i5Nr>�S @aѓK8,j^H (^G$;#M^'Y̋hc.yTefbԱn^TSd(}HW lz{tF(Bډ%P]QY N d rm<seb.a+-P7DpC6i,F&ʗ[` 7^?Rҽ32JCmᑮqEx۪T]5av+^Yn.,>lfȏBq8:L7  lyU ? Җ aիɆ7m0i,#\[4goDV`6ᶪ,iGN5°"% BuJ�ovfï@wrVD $̶ o+nCR[L=MiB W ɐu~DzTB .(6 'a*Az({ '~wʽXe(@^24% bN)&r`=go=P-Y71W7l|)<+RSԘl?oTlW/گHqZ=I.;?gՓQUP5<ur>* KѪ^0u01dd;j#O,:3GJff 瘲bp`yX&쵊.Y6qa0U嵋Lحa-,UǑ~jrW b 4Tmz'e~vWsO]Tb'9 WƭI֞T8&Z_T>nk‘,x^ |}s8RK2q^aE{>$p~;2Uiu̜|L"; }iZ#wyQ Q.[YvQ k|B2wmoԿL!,f 䠳Q� vμmjMs_!i<d9<+ 7uB#K<Jf�Y]E'''o`ps&G1 oA #k2t~w%F&@J;{yfޔvkzѻL#{wBGeP$p'CC@;1%ީ.}T q=N8Ͽ3e ֈXKN).GQ.s]S<+ل'R^s欖:Ub<pX"M4MSDlaM#~ !6X !^5~ ^';p٦Ns; ʏǹ&6ݥaC3rq3×= CXWrVSf3R(Iڀ  A|糀:ϡ=o l.V'A~Q+URr7W,�voٺ� 5 ~y:WxuɀL >5C�=fvp1zmܰ)lkvj{;c4]波O`QI2̧? A+ÝAs>r΅5٠_ތF\ sSH+C~Du:JT><)k`M07aAqq~P47M[ qaO]a|$p1&{K.ԀN:A!ELU|~<kC =(�3SaلUM^NB&,k8GC܃xw#>nw:W3 1 V43Yxv4Ƴ#?(i431ffvHz1 FGBw:ɗ&|\L}t;>W/,9aƵ X? /!f =)hp%4n2wdC۹*"I4n{Rfs8`|Qy Gw6>P=yMC_<kǙA6ъMAm ;YbV$<kv2<D #1@3ۨ3 $?&U~w?&?kqc,WQ%HIky%?VGm> t==À:l-ZC` >4e\CYTiM?bh'6-G�`+s\hIV)jgGx|zا/ ) ̚؛L}_W?3y֣7=׿: 4ysۼm *>b4mЇ#{0:N. 'py:<};ew 7<ϛ�g A= bUX6pe�rfiUt) u9_*%JI}f/xc}M;`, !19!F}Ɵ㨴Άqw&o`NR%6?jCX مda3X_F ?q/R(h F| ^k܎ y>e.]{Ƈ )hԉwDo7@2H08'.b6?ɂ0qvDɸ8ޡw{Pt(KE>6߰s`K\$v"=HVr*\ٶȝ[2p$E8ް�Nͣ%p�|Y ~׿<vn݆4{y<0;7#h/Ӻ5jᴧb>a*ϱ+(OB� /wqpg/C߀>g{ngEo +D7; z_*,diULF `ݐ8iT+*J;gAs"E֝y.7R_H+7e|8wVP}h'_�vr-MTX.ƟNY U茲(X8T+B28鸓Ry5={¾<(!Fr52LwKB/<.i[._<`yT N\VUAk\W"j x 1oSv(˧f8h,eQ Ԕ$(hܠ=?^_s:!LIgb> L Hr>a4&m~8F-P s %-Ӭuy 5$Cb1nd@S([$e! X|op<I<2q"jP <+7VD3`o0?Ѻ=[Ԋ+׎ ӘGa=yLag݉uzG Hsq5ߡ27;vNu`Ns`cy NIKmջA1}K@HӇmX]ԛ͐Ƹ]GhdƋѽg'I|8A :Sx!T =Rp'wOGU�6lRmU/CCx7B BF! 2.YIe 9.Qm>wR:wr ط<[d^UA QgTA=jWRPL4e~(tw *r@51T#)&hfq=(Y8Fi;gsB=gRQ#|r P)ǫ<Ae_x FYvX)UFvtk2<fȹ#PR샏O _=I vET $ 6CPr("->ʮC OuÖ~9JJB _S9$?&&RcFr{'wԷ6A+~SGfƚ83Dt f 6*f4Fx4g]+/D_�^Whx-/E[!1U-A[.Ai6/)Vt?7ۏ o90Z9?0#_*wb5NpA)lL!`wS0W=/vzEIS=y iߙ;mji?V`hLt_΢|[D| w(_{fe(`Urݛ 78,YLAw{fc GR5yw=Qf=ۼDi^ uL=Lq;4Mvd(7l/_qXۜ0E`V,fbp)op<kJmSV F?n,OD<&*t)Tg}"Uast-cXzOlNcŌd=~Qm,cͽxxj7V0 MZ).P~cwZU`_Bd3u^v 93ޟ|m6?,YHUY܃fv^]ΙFbĖ[Ozg7xʬ{\6,Pu#qcP>H+e !*/J0 e)�$Cn䮰N77w]l{eP !y$ᵐw[?apX 趦wZS1 vEY85GgzpAkFlԷZJa0hc4Ut.9<A'ڰ+372jÚ01;�d{ln4~Kć>OHCIShޠm<%7W%J_U'n|ϲłb7 veԲtGض%AA@ V:g>ϘVAt YXD@ت֘D?�Jr, C]lUb#7_N`xB kn?yoܸw,Ճ�j{@Jc ߿ASl)Z|N;.菲nItgHЯySŇ1Vc hY<zъbn @4 `]+',62MGW]n.KJ4ˣ0h̊یdsu#7?pt=n@j_C+86MRЪ<ߢ]o*ur?V̶F9Wb;D`ݽft{0~t9)dLw~py}X|gpeI ;}Xb <Lʏ1T-kσ13:l8مcBV?XGw8A d\>X;@e-<Fu7vSW450xC4z6Ξë{fz3W|e46}wqi87bPJْ)lG'hAn7M/\OPݤYn5`lE5*0; vFWCsX9GZ)dqu3yGce <o5UG;K54{5ch=/FD+Wʼ8eqFt06Une]UԶ.Afƃ詫3GY58;P6k`9` >g7݆?{"Ds tRvG,|,?_P7"xN{ߛ<iLͱTWmKVo<gnį4@:ny\48k(CMG(mȆeNBfLg{oz-4BJԠ)e_Ã,$R�<o;$Ӻ!4OY}$0-90`塙g5ܩՒ]Ҋ:<2JG0~l!})1C0ey{,dz~c¡A@S *E heZ;|,v'6o/'U�<SNڜ ͑["ο3\Px:1ʧfDz႒�CE/bChC#"4Lfi:52 d\VOl-@ЬZR3QN~+LБ} =_ ߳ yQ^r DK"'[xM E4j|vQŐ)izJQ}3- 7Hf[iQ kOA1,*2r 72�0etMrG)IFWz.rEn@\bvsT҃nps`"g @T܈&LBvkЪ8<VN%3H+nLܷ?2/Ɠܑs;6Ϙbc/eaC72vja Gga8 {Ct7{JtUQRučHqXU][¡mrH b(0,γ> w҆[7Ѱ}-X!ⷆ$F-}§ Х+=T];B_̋PwA yjT#J$: udI~BhJεPiNiNIN5W o; f|=fkht4Zu~9۠0>"'9gB3z`~I$d0GwP `@F~o_?B@%?O1+9AQY9a9Z{# 'ә,Y B8f,CW />/c*qCog�{Bmԛ)_|z(k "$3X #2' RLk i.{F Iq6 )0;(DTu^)cmm{॓Rf&y|g\�Gx^_nZ(ikJ0s~&:چSJi q2 p[yNWϔL+K:VlR=ӱ_M>kHA\ ܓv7 :}N6H� #tl"g/֋' ˔2=G Jx'Q%�F/xqke8zmB/do1GP̋2&C+^=/ʚ);p 2 7#`_V.}k&f](ǎ݁<zaKFbc3'7Wt i"J~)u֚3 )?^3 g=wjVX.p(+zD $>ɒZ)F%+hԃ^v0x5),?X6h*SxDLc57Ӄt Ր3 e,}eRPp%IǴ<w k2ufr:J'L\}:ED D)TAM  Dnhԛ0X/0̑wA88x?h|S=ۍZG AM/#"*44m2<#~ZǬQP|={.r[2xQהNcr*v, #) -E.D|.<VS[gpx,mH"A~6 ȲDTSa8fߝ"K;E�A3Ϩ]Bde) Y@5; E.ths.GSᷴpO['<N8/iAΆoZ8+}g+@jL(_VYStWtM랱9 ʧ2*2v8rDnjTKLsdy2{Hrfrnft~A^(j-z<gA+rl\|2W4T.JoڝTr3f.xk"{@Iۿ;PZ|<-2f|S&!ض qQ@+BP z҂1B/JyHAfbB,,袴Sn yTD `1w�"뀺ϵ~|jS*HĚ8pO>=-Xex,qKt'@Tp0R�2&7;m`Y4yԆ ]xA=d ^; KTZ.x=*(`{9j&C8'm0$F{u䵰\mrRF{l||~,?P̆|9bjn*ZG</jEz￑c\)3br _w|swBm'NL v׊17։>DOt}GtgP-oxYCn _MkJfy AޗFHiQ$ECg;udAק�8{#6uIU`�9r`L)ʠMPV pqB,tj]wW[Rv`)lY~vn@̺z׻7ES= ai7/bVʼn/" ˦ G%Q5+P<SP} D Bjp�M ϒcsU۞eQ= lO7LSpJ@pT$w>av6VCE 'xJHm/&4GK#{^ dfd M%n]P.xx Ŋ47�<EX/9Q#icY?3-4.9=G$ mϨdЫER {*MoJy[ICSx_.tA*]Э}iQtQ>Ҏ迨4T(=RNW6awD@e LȴƏ/AG!|D<ώb,c@n𙛽g>v }./ ke.ض˙ e8+ ]Iqau>A8lXO=CFe3Qx ݴuQ#nCcˈqb0ps,QdT~d3Sw٤�xtfh㍓6-^[#z?,#{RoF(<cvzKN\.7Q!FX�w$֡4<@.6ad~}_3/\Sc7i|21aiw2q? r3E?srX3-@ a#'h |ijxqZ�Fu@ Y4V}vW ,'_,s.)d4rv'ȯ)l"Nwݘ(_=y; H?륤f/ ߤi~3Z와E  od6R 2�k%y=N{C$lWj˕$T^DYdf+OѢED[!˴fY}Gś$?G⩴Q FosH|oq1?*5*3 ޲3Kt.hwmُQn>{CƤ6)`D 0OP#TKxԜ7! X  7P颧 ISo|:W.rY+,OcXAQЭh7<lQXGh$Ret P*)…x(Ɔ6jqiփۍV_A 1Y΍pܷV#EX+쑀- nBTidzP,d0|'NEYݕbԾȜSo]c6h/'(Pggt6|EgA—:E:r%$$YJZ6 "by,f{=1.mbnQPpX&!!33ɝlf=_Cw03&e�Y]9~(9OF9UCU"v1GK�C!_rNX 218Qv o$*~P6B;/ )\ŮoJ$ zNưԋ̫]$kF�ŒtiKrWcꠃm㹇y4U˺;靿D !.B 1jdH0` + +*J܊S8MK@ .rGSm gϾyf΀w΀un #vMU{w+O"\?Ly^MW о3S0#n>gme#yl&GﱳS{::XPm z'hz[[0>Wl _5ʡk `P .xA׆u {b ty`o; ):n1O `C3q}\5םlQNiyEW9y{SKM'#\⵳IZz2B|h;hȡ=Y^$Tw H5ء [X.8'6~9k(?v(N US!@SdY6 t<#4bjNfB 2!};5}Ѥuyq\4L^pMG[m{CX)3+SUaS增W0jtiqF+(NLwn<B#-`-:C,_z8@> }`g I(_܏S]_3 jgj۪| DD-BQ9T-F5[ >*.B$aZx%  ?LȥeLݏ*}l{86O14*jY$،j@uo_QAݴ_2N ڰL%npDגw g%r`L#Y&>Z3_.w@Ccpe{d^-mA2S&2NfLO)O~z sOr0Y.C0mZSok9CK=FHm h)S.W\)8SFd>5mY3u^>8Iè_Ai`@y(-YU?ڄ]Hi,؇ s<{xwБح e`X&eIKD5臧_/۞}Ҽ:id5[=V%DރWkӶXP$ULƦ4(Tuf1{D8᭄`4e :.z$﹁+9=rQw|Ïh+^|kk;Sfͨy6;e=Ow0{žY@@(*#gm_Id&&ND 3C6r"b4TdnjlʉxgC[ XЦ![~MDhX5;綉r�ds]!:FMrr%,=z^+*4i-UQKI&&hUuR�ƥ,]+}׍ݚՃzѳ&aCΐ:" 䚲e79߮L_1w x" g9�\l0qΔl׈|0e8d\_ >*TS8u}.u ]M/tM_C\8v1lXEJP+ӣ B@LQ%k|b^䁇GyP3MH?hR%q&Ib7:MT ΦAƛ^*e3(%GB {(E/ R\RwBi8C.?&||$c;A|TL95Ot8О�.:& p f$`};mf8^NHt.v3/σtqɲTrGa9�,>,<yP\XƎɨZFNݵCo-񪠜 _k>$T'FG@D)q!tِ@eL"p }NrJ!UCG0KֽĔJ-HѸ?z=1Gk3 >LF~DP E (0Za?4ї\)-oEһ E ى PB܈JGGQ3y^jI%t#ʵ7ї�葞}-.r@[P_xHe3cKZWBC4$Q|^@GTGj= Z sc+ޕVQ"t3Oc+Dr{li4f xȟKi KtY+Ol^xTP4m*VMs;P6>Jaa L}k~g~x"${]-S! Wq$=}.AM-g5ϋK<9'S'I'27yrZtiS.+ cTquڲ>~=ȶ.ݨq" ΍~7 D AҡwG,9oGFއ-[M$H6)O^usf$vm=ΥW/-fLqz2{J\11^E+~/'_zȎtxX=F@Ohf]>Rbr{~ 7!#R"i6I` �^zm?qh؂GZgcW)T�m7*~XCquA|G'|;9˜<+eoÙ rv{lV!SR]hEYD u݄0{92!Ugd'c $TPD[ECC*i@CjYSo 9Ql.M)6nm?{_peuOL*k}kijx`ݮW)ޮ"$B4fhۊG!#GNY{w>~)G})!(cĖB\7a`~O [ F?B"{ӑ?G*p_*,RUSPjTSm⠤<&VXŊd,V@s_[ :;M`F@j=@1.KisnE3㨻Uވwqvu9h]eec9ڞmLfD hrڊ<eϤ \[ [Aʴ,{ߡbZ*{f`V�ĝ"\WFB`a7@ {Aq|mֹ[3/%{AӘ|6kј =h4aCQσZL4#wbH@z’~dDSrь/"Tsl! ٟ5Jt1ga낢ټ2޼79Ĺȿa�#P 0{k|t 5.\ ` xfA-1ڴ0pjgz2dE.G@ $W `nc@õ͇g$6;70>rM�yيP)_$*,UWXCz; ]*n@DJG!9tDD,|ӺKo\O.`O뗣K}_=UVCS%7"ة(eAG;C#Mi}R9+smi,}8 @E}wл$4'8 &;btVA6\mu`> 62t[swɍH!<T1ke. &P7Wzu'`ej$\tw�AzƔ㬓N%S|'cWz$<{v7xXY+ Onޡ9{' 9!xy{!.vO1G#v௖m8_֏J~UޓcJ}D_\M75S21إgЁkDiq <9*SkV6»fQ{N%7r!s4Ƒ$Y">]_W `PKI�ѕ߿ 9oܻIxpWHc'$%B)D^^}J*!H#|]0<?Gc+7^c<|) pSɬ)I ^ Hk~hIJyGSИ 9qIac'3 ;tPVxPK";ϾU7ܱxW7-l3 q3T {pdB78mCpj >8!Ē&Fv'0\%]_c8p߳:'< ֚h*:oYFc-å'Icd c[aʞ:Q(Af">}eZ4(H v\oP\W qHD=bg.+i&1rɰ3myIEkgAVe;ԍas]y18<txD.v5n,hv\ >G@S8TײhGߥ\̒^*01:`y{ה"Ⱥh--%I,,) cg<8tf!kDDcƏ!xԮ<\@AkrQ¬e:ul_ j'(k47@,mP<&ć‰a%>^΃8p}Ɣ (##h/A+|Bo{3c $:'7:CעօE 7 gاFʭ~ܨA}DI* .=[D:pZ_E-̣q" q?H1h<eB3m~"0-5|[9̛ޢ"3PajsRm|`0P)'ebE ]P1dHXd(Ӟӣq@ C8=Vqxy[ۆG K|޸_1|7z[Z wcևH�* T8@y?}5tn5 {~M o;B'Yx2>y9+ް<PDxs]_ET}8'pUN {~T^ [LCtz2QwJǝ}hWYYmu j(߫[ۂG%$�}N#ԔPwiC'CArh>ft{b==;4r4b3A{?Ge׭Pnws {VmTGp?M/뾠It:@7H9+@e<XDMZH;TF&25t wdO$I6h~AZPzTNZEFt?u3}2, [(;;2!IB}vbVo 5PvasI< =  BcE/$â3]oV|DdxүDʛ&t+a��.WJn=pW-B1#aTn7?X4QADΠ?Rx ?8X H~/: 'A [ p2mʣJJC!)OPLjƅrcl_*^;sr,?TzfD$Hē/rfM`~ vt�N@|g2kJ84~s \~ӇH՝VN %/{hʌѮOZuBiN~(A@,<1H|,y`Jl͡%7H$e:(vhS`n̚ `#tYH-^ Kނ�v%?WÄʮi/YUو+6Obm.H@QJeUUC] PT}A ü֓J>D*8LVѥ.˗5 Gvi\Ol@o4ѷsp\YX:άwE[bF,j;j@ͰЧ* %%}0QfVo,v$Nfi�T\84jkcRDT.iZet*h _ + nP"HHo=(>W4?ilPc*˰X!x!h0pT{dTrT*+%R|`K4OY. Q.4S#Jv)K*A(3SR}2$|LU&4mŻ"9t<K)7F}RO\ Z4ЈoP8YP@x�h>ѕS_SA?ȷ(57)#«d/"]djio7j- ;�s?0p/ݼ@B!uC<Ɖ4)x<4 9 $~Ld/u}Ac&mGI{fqAܾ7!H&&k3HZv S.خe hAwsR`@1bזO cZk1nZD̵d`>3PFai,*(qeB|*1F<}P:Q^\R1ӌ1PjC6F_VVGޝ2VBTEh>{OӊNӋr*E],T{^Ø*lgyټk!YiQ<% 0$ ʺ?DpEhl"0V~I0}xy Q<(߭Қz, c[BxA3 PxA?zһ,yK^GlUTuCI~όGyk7R6Ϟ&nAyEn:1R"0(^]8DhH&=YtHshS_&}܈P>=3a#Bwl9Tff&gye!܇QcV@,'ƾ0(q1NLD3RO:Ģ`H_;:Cm%D&+!(N0t3QisQ;1vePౄw4̡!1- BOV5 aԹ䃉{5sB^/ Bz8V/82%hDv-Rg3')@w/r r3h>[/?4idӫm-Di5 ٶ<"sO]u%*N.$ъߪ} yvDCZqR;I|w,ձȣ5ml>ΉOUs5PiAawֈa0 >ޣ9۞,-5e o1t-O.K:wIx, %@!V>'\{(V;?/{IS 3nϊ.QfL=&K3b1^sY,})J}=I*> 7B7#t񨝷 x W jS1 pP'y;ps{5<~1@¯n_;ۧ%g~' T4TꯎNM?~'mYL7ԽtbϔH/t>`i&hɫg4$J0r=kq^L,@ԯ�,L   o2N1I^fCkS_ʖ9}nM՟4$K7Pſ{`Qxs`!?6=[5q1%}.v.(~X4X\8#uӼG>�'Hַ]% 笓0sUGWF@ģ<jJYt`5-',![we܋ gv6q5,-Q=Ƕ�M0k8Q籾oY@}u9'8aCəGI}4>ZJ>j#Ȁ ] Ł�0\ sncI15ɣW*n(>)X�S!6;"K<qA2 :mk-�OTa銂1ʘScloCWy8e1|ra5#-++@U֤ 91SСm�8ի.,qqS&ԂA2ޫ\2Zs)Kķ�Ob>pJS|: Y<oS a>"no羠"nBۙR]JRb{EEHs%9><@=Ymѧ'h:î` t,_ˀDE8رOwA5 G,EΜ,šCot0K;s_ExyB#8&1j^*`n`e- !�pc.K啮od=;RH+D57Yd$"�NNjxHyόnreNXkXR ՙ CgAz MP_fqh)ٔ-y_j`P ~\>:vٳ8ZI?'/M摬GU7.̕f(<XY,yUd`~`aօsz""H3ߕhE‚d{!6P':Fhnj<YHJQP``x~(Z ;u=5A?Hi ͋AQ4]/oڡj/"%.SeGiSa#͏};ظy2(pr7 \SOX1+X; Vܨ? Tr}bn i[e[`Wʜ S<@&rRJu+d%Ź2AY;RO/·.?pB8{uf`:gNLgLvx" T2? [ Zmm}Gu$n8ŗGCFP|/1YFQ܆Y^w\jD+zhqؑΘj؈G8U\At <hŒ!^s ƒ`lsmmMJR $4Y;JR曍dסtt`q|}Unco!^hG Yifu6/ŮU8TE%Ch,S9.}]E W-!إtYd YG; n` f޴A(z}T nSD\f)awBs*y#E-/{W܅Ms4q0{ \#W\ +Iȥ9QI&їAw@q{+]>50>9 ѤpƟ$p`H`7(rWA]t}kbi]8G+h;0IJtTB&K Ax|WPi,tf+/L{՛V34t-,u==fS [ܔN�Ƽ&ތ,`ɻq0LJbrPկc?;NÖ<W88/dV!D==gl 3j72 _{ФkJmp;#6tYW9- rIL!xFD}N8c1ԯ/C=t>aO5NۺmyA6�C;kl_+d86ى T\UI ;"$߲R)~'ףܓ7CwG #-X|>BUIdF"۬<Fn\]_"mcX'a:4 W9il(xoyۢ΢0# <g iŘ͵I̭<J�fdٶ<jehh&lrgJK�@GlNc 5t#-2?wvӄxg%-|3㢘A.LJ=�%[K]' OLYg,= v8&5Y '"E&L3(18?YwD!/̉YDgP1l�(>Ɉa1j6Mr`cc @єp̬טl0%aG9R6F)-")'GTz8StS1Bio]|(S*QS/*K"Lu -пe޴̣CeKZX/Q՜2g!Y$s <AB7LluqY6>iϸ,zEvkÁrƎ6G<)G2 (ciu1_9 9ad}G^H"Qp<{}hk!wVJ98ƇA;j,@*"qe.ri cAOAv˶?DMJ57rK }2%8o(.:6Ɛlz(UrXkXE‚tt{ˬ#MpUVPHVb(Wt,eq"=䛗G5,u Z,'6̊9-$hruWa}Wb@g@w"VJC-8RޟQDT]~х!@b2 Zɉñ:d3o_g4ͤlYE_ ]42'c ¡FH֞~6a~`5,U#Kp.^M!�t4 ܾ8ly 1r=5 ATfQA8#m\"zt,�99{p,C� /&̄jZ#K| ^__Ϸy\z{�S !^qެ 5QS|<27a1mG^̦�f`K@j]nR5<a]cPhy2Pf?,жcW<5md�`3]hHԅ59r/nX4v sb>d+ü?ʮ(Gۢh?^ T2ȩΒ/iW6\-:?Hz./C@:F~E&ɟ$'Xp8Rc$!~߸-E!Ot5a0= }1:MD�c_[O]/_BX,<n75Fm>Dң:H'Bf׳B| ?qts{-\=Y)[kGR(6 5SVHB伊SZ/h~Y@s w˩YK̭/ N`.lV)y. V6sL̂\B;PI } !l͂30L*_ˢMVLsdy4"ɤ\$.Q&~@E`^[^"X3'0mndbTAֵ^MA6 Bsei '(@FJ`(\r:LNO o^]α< NXH_2buU1` z!<9Q]O +ƼawT,͒pʡo;ʴRTMM Nj*#\a'{+~l_FDOO;.+2Mއ<DL=Љr(f y'ꑴqp+.&6/)±~mqt&[՝A^�MݔdcJ<3!~Z;G{L ۂ pp55e֩H40_m9bFNr')t!x^I|jEO+# \7AA,Gq&Fӟ"I'*h[7�먐Ƌ" tڙM<x�Vy S%~}3fP@̙@yn gWuF9Msv *z._ͺ"|6"eLyĽtyxăq@/jkjv>Њ8s &Vs@4H|U`*J;rKuljjjXTZm{MoH5^i<e-y~ 8G[xDMM:)مݠPH~'u$n{*2(iZ֬/"|BkUy6*zi׋J-6\~b+c>pm(XT+䂫_*Ȃr@ *?mg\2Y~?,g 6h[K!ِ>/#A,fPT8޳HS*(}9]$5Wp6�Y#`QRT-Nń%ϭtb)MJf'"<LO4潼7a2?(_A@ {)>| G_Gz Qf2զM5Zδxh {O~j5mY1R #1uΦ97;]RM`~6�;: _wIO]Ge2ey6XCˏ~$-0)J3-L0\[~;nDU̢s6в GO؂2k@NQg/C:/ n"9CfKגx#CQ{$ç{ IO|!}/ށTt@/�ejk˖m8~CQҰ}UmHN X:((2m!=rOuC6xu=O1If|ah=@Z1cKc;rP*dQO <‰EaіxgwU6=r룒 v26X G xMltOu�ǿK&WGohSY6qdBg\m$'%[_+Ju">TLdOp\E)bbvPF0xt_rG]�Anp킇( y"FYqQ{qw w;̃cN^4T~G]CcX3wB)\y4`1�"}〈 '7h,d:.G\Qo8,mW8KR/e, /!/�2$T )NN/A<XR{̊{'@d3شt.EK~g"tk D"8}YU@=�]7I5? HФx4e{V,~B4ЂZ!IWr|*vF/-۱J lNR9ː_T%ձS;P0G{;\>y㛖f1\jad#tcf੯6MlRw6#{,K/lg%�]qQ=xBIU6- ӳup+n K[gcv C4v@N-mkaPY`kQ, 80DtF^LMf_ j T EKs؞OҒcUhPJy|=ID!Cȸp!ߨ*4K~JbEƍ/uxW}lT|+l/idO]&J�O{A d+<G|*c+tz+h`# Ht)M|]WKp{T'KqijzH譏/e?z}+aP�OGvk؞lGBTb|SMq:bг8;`~17gP|wiM[66s9}X$&~f) g/!;z!M1:s,Oрq_5<o`+PrzD829O隒H|xdS6']+ :X>'C6}_䝯I9VW~S_+>{3'٥41"ރJ˜Qextִzj6ofv/yV~ڢ bhʿF.ːE}- n;K <(wy6,yrny ֕D�띣σ҉;5t.Fl061ywDG&]^/(B(+^WC(1j<ژeX?u=Zow󸪰Xc¹=h6$ h-'2N^C hDIzM#ܴX,’y`Ze<pG;3xm{}ywhW Ht3COAd7$>+I! ,˧٨#9ӕHxSկؔ�XDA ,A',|^Q_uۇ@ones6LYՠ?zޅ 󢺬#Hmi (13 RN9W< '>H4B0gHs@%D<K=wYU//4ªOuh?x5__ 7j/X>3y9 MXu3AaךaEW0`,"8+@]" <B8uA!2 O7tuS*}nUt8RA J"prFv6mխ=kV4TX>S&fa~2 ܺ¶WL$$>vϭ=ΈޢGwe=3l"rz?ܲ HF�e ,[�g!Z?U_ U�%4AeǎJޛبg|9F:v {|,g7<q!Eх?E);VX(0: x>`VN)$}?LARH8ҷx4_vI}!?,**JFjضD }=p#|[Tbb'qdrasΔ!<ZB#W~7'@(g#pְ:#ҫzcuZGBEܭ`Fbj>j&`CZ95aɳ)|!J] /ۚp 85sgkXVFuSGdz](ed:_PսH*lJ*#IYO y$8Idl{gZbuV꧐rBI<1 D YնS; =vKݯa#DkϷH�.SF TIu͠^j}<:65dְqQAkʋ^NS+Of*ӁgVж.SfX*SyEesqL;}cDB2o΋R6CVr#?Ɔ Yq,<9Mb^p u% elϸy%H< j<R{e~'"�hXKvM%F], .kė9SaY_#Sƍw$WMۘpsw]kDpDSlBk#Qq 9RwMlr\+8e)_kgW(nWcduRc_avإ1tOw "XQifﺢ 0/noX ygu ;x<NߍhX0aW(Ș64/ H3cN!\xatUriw^R[9L#(t~UR' +[,SG"L zK7?tU,Xcq[Ui`8^7& ьFP0̵7�] M, 0u<p$FFW^H h/I[{[d1'֮`߲@M]r"&KY2kVՈ.A#Hvh2EҩYN5ZѰղb&vl4rjG E[6H/`t"R6v $@N:S}-޺1_1kn;GˏHؐ\bkmȥ *s^Nb-ǒ};5qH[dilf|y͗ ?E7hH�8M'ȽCۜ6M[1ry={iQ0GGĩ9S: 0[>x&Q�TEFؘ0NO*B&o k2c8:tz^δKscgH>,ef" )(477İZL6'\+%& NAԁJLb HJ9L^laEJ"<և7Go+ŴMLDgcTA9w kz";n�6$f}e 9ߑ}@iѯjnd& ~HmcK ۺް (I E_݅'5q}h@yAl(z_|lTPDYҫd6szj63@/e4zE6 m3�`8�CSȒNU{uRF!hFh 9W)pI`7`آ2PݾZ �-.ޞR濨nhJ{%NO1,k shl/9X۔hup|C&:u AF\O7.v<g�:w$ nCs7EGz7J87" @0kp[_NEa$?M+R/^ B8ʨD"4)j)SN6O0Z[&Xu_vehIb5WE(&D]{!Z08| k|d:hʵh޺;zN~ IC/C ޱZ"l1h#XWPk덇Q7 B5SyөW00a[ 4(颙Iڶ(rr�� R paTF^OT_TEd=򉭽("&&aftu"afўb dTED CJNj ޮ.T<#RZH- ;h=sь:7/w)B~|+J o ZdY oX#!iiX:K1),QK 1 յ""=un 6̺ .ӸFR#pe)kcV~#tI?A%`}}C'�&kܩCK' mr;+Nr2)!Z{ӊrz@1HZ&A3l5{@X\'Ah SkFּЋAsUy 57yO"v0s<` .^Tu@ۻ vK>sSxHH-RCWˏtA<J@ZJs^Z]= ZP11RLxP:ܓ/yAbA.T~'�ia8. gxS(gCRZݝ@\U_W@N@Rs 5}ui�b#A]6굉)vI=hLf΄ ?xN4{ͳRj.Cl {ccM0?Wl΄NQ_:AQ\+ԠO��_uԤ"Dpb|bl?׃6&AUm1y) `KIC"(sbǒ&'2ZffhH{@[u(1 1/QjfGpGCO Zl'#kR(X}Y}= 0:zH ]yqcH^L#3C+w/&o"%7o ,~F_ qvih~m𧉐*Ib+yh"DYD<y4JؔugG ,u#KH) Ђf]6 j ])}_K4Nm.DdMLD1A#DZ* ˑFԔUz=&a$H# 9_y1|d Y6kM$Ca?o}]oeR@*WNt.fԮ7li}_KFzȭ+語j4ףKϔl+K!=H1p)1X=TsIJxGӏ^y?kue7To|^SZ.ѓ:hƏSc,r)7@Ρ�c:\`Y}?*;=:q㡬 Z��s`$URMؚZ odF؞<('Kԑ[$ \Nu7{F~ʅ9Q) M-B5doֽmReVip`e^XW(M4 *F~*n4ގ(? Ί"4ǏAEbAVLC5 xkm?_C>0�]?ri QhtP|M3jVD(M]"CB*~6Ev<uuѿH8(ɪ{MȰмleR !ۮdtĚ#c#,)}m`ltJ&@"MѮPm մ z DɸV/q)36b0j ;6]\F ^\6M<J)L#px @ЈgݏGOJKZcgo:Az%,{RٿY-.(rT5g2;GbsVKVG 4 O~gZ 1aW 8>?UMo2[BJœ'a8by+aA5.YH!O=NvqoyY= j:tDqRL)}f^W XhPZSO/WԆ`Vd-4<fb�CAuu%g4`.R=Rj%d*$WpNNMyhH7 Y- zK$ҎN0�3h]a%cg%dD􈗡D0%\!Uf(_d GNWʴI5$u 2E\fǦD/m%;EہJT\�eZ!VB)J)~dg2(y׍d*%&s\i]9W]|hT[/{b)cQLG* kS~]AA~(%8e4ZQ LGE_ΘS]sP=`b]?ނ_ʹOfv:{<`v{Eޙ*y&qq\кﺼ'0Ef% cms9[ϲqibSc⍺�ѽV v+G-T1r7;嵈7d,Xmt0.,A-2xK{7 w~^jf8ȗt0yUE06*pVk*w֛}$j𒋐$Ѵ[E ܺ s50n֏5v _Lcr*)\<nΔYuE꺝3&. 0Ƥ`dwK&jAO47ݢ\qm6ᎀAtl¿ ~cQ߀2 c2{_*y @LrB'DzϙXگnaLEg݁]O]_θ4^hgE|zԮbfN 6([}zYGCaJL3~I.nh;ZAti,Im5[''0<Z$Rs\.D UO:L̈(>:$]N@w|0F]tD 4w76Lj=O{(MF' h0$rp*Zvh\1_MC(H@cv;=]抭ˊĽ_M&3Ut^`>z5}5jOU4^w(C"[G~8�?jZ.) cЊ>_6(}:?ʪŚW ,V'B'o2"OCe`o 78@û`dV"<?%%xu #j͵:頇`p-*ρ}Z%՜]OJ+J\}r˞*JhgW4 z"5}r/:.]]cE*IZ'/жY[LBi*2?{i507Z�gƀ^jt}?\�t>s0eքhBQU4?[~4IBN-8QYB.ZJJ_)dl3yc$"%^^\HVl{'A_e~/fB<yӳeoz[;ËsY Mk1 vp2r<(P/|_~d~/˜gˈɅqyf/WХKmN7H~eã襙|Y}[ƒr Ymw0K`y.."\4˅eH^ȋ&`;.$ڮ%%tzPuLmS4(7dJ0-i/,# Yn\:G Y2!1 3tB(; MvH<ų))o :Iַg 5b~@\6V֑[r?uq ?#z5BCwgJ}NM>q[Bxr@ 0p9eܥ\)<%y5 S lᔞzqC�!_4>le~֗!ͣw֒ݑfa11bK(+|3*T82f1gI~Ζ o 7;g^UЕ 3樟IB nJ? HƧS]֗mD>ZDO27Oz6�Jr+ʉM5c]gHli* P nt&6$'-K۝^0τa<pFecUO|` U<t<)!HBojRqu'4Ѫny ֪=N%0y8 VWZP/O7ί,cVsUmjKk$?q$!F )8 r3##̃txHz3\]93!ȭ(BBFWu=wSߨ @{S''d!ϯO^;)tCZՂzwzƵy3̞OȦntFq Ȩ (VąܽU}QWJ9ĜXXTr sdp"T))G}mW"I)l<.?vnr.$6s7nz"OxHEBȠCE1 }sd ȑ99P~!66<).j%|\24' nȬɹŴ\wžL9zvWf~$KOI>/X0 $DZq'(_u|vF u\[j/.@xqЧB~deAs0O쵳4!ȹZm^uNr_JO|@:7QJT tDpA#r#Qk ɚXS޶Q*f^og@o?>Rtg7 aWøFTO)jm\}K0B$$6RhV(tRek 7fLWy!Z=Q 'Y�]=};--pkpuC?D `֩ rb:꒔֣!<y^/WL>~MցVD/ܐ5<kWj5-]=&f�o‘M5 8VW158^l:;Vx:�!\Siz Bjr�R p,BEZ8; g]'m-oj=xϮo]H`S8flʋ3ۊ C Qd-E٨kP.[۝)rae^@K G @nz| jٱr\ӟE M(aBNl]) 8Zj!}̟F+Apn<Ŷ!m.'1ոEضV>C?CfeVlPr/v:t;Tc~<kq}+lme;t" n#iN3DnwAlr[W6=IW4!øh-މjDX9Xxm@nd4ޤ+F` 3{r9=^VOug:/!ڣ]ھSoXô3#~lJ.5v]yb E=9%NxD7x/s>_=$/#Nj:fG/t[Fc,і mDEv ;#& {UБR53+w )brO:nCT k(Ÿ$Ouˆ_^"AlK Y SM G٠=<i8D뙰 32H12_~HK![D Ilb{TuA=�?篫W;O[<& Ul)yz<6vr~=yѦǟ?Jt,͟xh:{=23/Ҷ̙~˧*@롢:h;@wROoص je\aI&Iw Ξjo#3ھ'cg/cF,MYTm8P8q6́}5| kri@Ng4Jڎ\YU@nOһ"8Z rkКљ3;F;Bm$`_FOvcbWN\ڮ}y._ @KGm&Y;AN}'ZUO8nErV^!f~06ua/�])4#&jt"mmPVs-ADߒI/.6/49g7GpL٧Գ00սbyF$G$}RtdH}IHU <<6 yz./(d Hv žӶ# p0 4-=Kqxߠi3#_WݹPxQ!fl8;.Ct^/|*&֒P% ͵dHsuRlJTd#23;1)X*$[q>aלE^؂\{ X>�92vA`ݓ4Yw:oQ1;HEh:B6yP`UóH3<}H= Ur#Ǣ3%IfR]~QKm kSA<z"p_OLcMo!5 oNޅe?+s=ފu[T8t.L5I`6ICIwla &YQ~feVq" k4X7 ZgB|&'#I78θDo/d7 0$MlF}Κn#xjg`\sqpϕp?W5 ܎2x 4HB^a Wi+g5n$ ֕zW{< NbXM l4t4g (8w,u_1 m_jH@ ם�,]k:bf/@--/cLҼ�YbKJ8S@>XQ~<a5(02p9 KMLUVP*=1U1Wuk ~A�!A6@yr(AlC4ضŅ,>!1V7?~J 5b-}Hb1/oDR”Fnj˔rc̓{}FeulhcU^|McoQ"8" a|N\{wWLAƢ^d3.}k+=61d}bg68l ד5:p5+(xir;~ Y(ؑvrJx(f˦{Hpeܙ*ip/VU'M*3?JH`I@ݾ+>./(F-)t 6Epmi{ٷaWU#,m߇T­ 1鉟%z3xq6[fkmdU3c +$QtY cQ,=-΁IC!Ѵ@>[@s1�'Sj[bP&]?Dڵx 6\JI -p}֣bwx5"O{^@/l~PF粒fxrM<03pW1#MMUg eaE\Uogf/hv>@ps@~O 򁱾8Ij.a!LF;S.=l*O΍E iߦjڹex^1qޯ~!t$*}qF%)b̞W58&rYhƖ&s]|Y(hIS2hz <윓݌̎`#e>= TiŷME pvx4S! X0Io6q ũ@6UP\d2g<أu s7oV1%<�:10u/Ɨ`,oWBf+|Y_m% eAAw_yצ?=#ۗ GD&/ vPcnEG2)T?ai =ԥ~Q)ogNE]2ᅲI1I OQuEd0PE^ȌTꢾq~??3)XSxIJQ/&nqPtLz:b&oNn>AƏ )ćAl^>7F`#X,!jM餏Q.U43&ʝ~3\M2SOgp,5#i'FqjUu,&i,MpGص)a'OoŞ6m 1tc˅iB[Wx.k<*�T X:9BؓJ1 M+/ H 15!8`jZ)-A|8GF i*=caZA~m{Wlq bڙ h1 FUXKEF]RXK> ϖ_/,>| V:i1Aae$OɶRPIPX,F 7F}x벇[6Ӭ)CW"4U@hz3Tk] /kkG9b{dvjX!$WIX/02kg#^$hD&D>>h^ ?S[rV91 wh%7Iё9evwp](n)lk_)?_/m"wgM12`@xt]H./f62"L#vַ3>llnٳ xB<_  }Ow+|Fc]^[z}?}1w'? T+6KZ dX>v[6DqS\2iZ?çk`0e>kv[<(?Q^Cٲ>sKp`,-qee͇e[ۃ[K^YpjsAK[[ˊM͗.&feEU7i,"ee&2eԺb2P5>[+aDlGCW�>\4ux=.*<k݈.Fb rG۽h˭=git+r{.<5 []r@Xr\ke#+ l񖋘z;|Ftbn~${YG-L,m+=aC-m"fN;MSx.OrH9IRD~%JF\9# KyD @]rR-_h:-ݮնWuO[`?òoK[g沎ÕIWel  lO!E' q58�9~7{ޠdH23~{m~'P~5X}w*v�>Gz u;cDU50LOiQ WW._9_a][d;ࣀYr+UիU4V]\*ӫWpd)ŽuiUWWJ_ViUU+++VB).tUWU+V[ʫ��1i+1ʝ+qv$FpW//UWWWW>V_ʯWWRZ~c|I@pjᕡW쫝V_ȯWV]z%qJjUջ( *< + _©rYd?v*+";%aWUF`:S7uF%0(>5S?Wy5zm�D?pGWzZBg@z8Yo#|&ᎎfh-,58%K}DT{9":H)tg%YyJ[ ,\'M8u 3йv]S H{Gk\f]v>J&URKS^mޏ!gA0m?ȃ=%)cnAPUĊӴ:jmYZPTr #/ D[8%lSL4A �- \6p"!eD+pdC8 Fkͳџ339D+C83 <Ȇ_`vy7mWWM} z6-6ȨY&mQ6Ie쳐wMZQedz`m0}׮wwB8|!. !hy8}U<Ri @!# h%[<MFAJ5uʜqO;_{8(sF(�XUwpvE@k>ʪԆdm182D؁Rm!Sڧt\ևI(x}\'\Ƿ>eQ<.głP H@7yۗ=좘tta70tI'; g7MłӴGB`#sU8M% m}ꊱ|1\`ĩ؏įXA ś*#`͏ \"\%dqMo'P%81 .6*w5? &:ձJ%ikel<YCdr ĬyrGxD-gɋYrvQLkYp#],tθ L3wc @=CWii4}/XtF I% 3 tul/~rf<k 2=#n_"u88=3q,L 4);eٚR#bsθ`?-~5^-Nv8<!GaKN8ҏ np@`eA HmǃeɅ pY1<o$6nuj.K62Æ&�<_W[fynvAn\6!Ǘ&vI7K1$Y^F wQ._YÂf;i!G�PHF&1w0>+xRn!n|iRj{?s/0zu{b ~nP3mLoJ/!^] %ff .E5r)ƫ?n)5׽@,cSD*k=38GpƵ=?Gޯ(8z6_qXzrY]CHpUsw$ߐ*ę*ja~0fy =qDa?3Q4X7p$k$XD0nH!WEswTь;{CZVV>Oz4SoYzGίhζ/ZV$z%"Ww*~'aPʲ<(:[zLs/+EtT@q)$&=?Q2|u"<5O9_&" G;&H&lVN F񱆢G;Tgew2:[KZqL6r/֓7>y묚qV$ hlgJ}. uNk|Cv~ DYEiv%g}}Qk5Zv-rf!u/h8`D?4z* b~5D5K&I] l�x=v`ܱ0WkQ+͹EBrO37sX;4OL`x+dqv.fb�FQ}q{dř4{ HeY`+Acl u噜$Z2y G#X P`}S3 (΢7O\)J0bH2N4Etܬ⇇l{$\fQU||*%BMЁ#S,#. ѩ~3x@^~H:VVn]e)ĪS)Y|IP焉|j: gHJ!woS+$;Qk֨!" Bt�ԻSLyu @LWBar{FY >]\՛UJ@A1o?B`,isrؾ1DR)㠷ä@(Y+9P5e˅dAJ=){PY1|?T|ghr�M(_kש =X2kQ7|@]roduݝg˸ v* M?'p#‡hjG 4Cf I YEjH.#qQ)2Ύ4DV A S1Av< taމzeRX5u%:M0V ];DqQ7 Uih^:OбSf9ͫh]4>EOvvȓUo]9sI9W:tl=jĤX9I;wXj[wot -Y]%w,dٛ|P:*pA$FнV;"vh6~Ӄ·~Jܧs,HHvGw-k'0wS\bQއ#yl+/&] m$Q$sPVgby>K4fx_>B+|=Ʃ}Gz~rg7=bdx.DM L $Ov j[g~ωfgyh;Z+mpF '3>VA(XJ%nV ),ݘޏDyT[.W8&~cD@GYMGa۱cl؝6wʧHʿ'M0|kFUQJl:;brpځǗ'^u"au3;4ۃ?- :L q)t)jϲRd3%X8s48לY3+HUV>njͽ{0Ɯ}(N׽䙁0:!CՕJdXvY̷}8bۛk0j)#?'~)5w.sK 8Ѣ>5̣;ɨ̵vxhY2i^1w_`lL*/(l2͞>m[ fXpZVo 9{PI<;8!/gD^) dV9S˿,eG+1q)j#2] n$wt2^37.b`_ջ g٣;^Z@;CB\U̘ WV<&.բ/ǀPfli|q;ۻcnSbSNxUN^#|Oۼ +)aM[p}kyrk{#O}\S}Rp +$0ndF\_[zbeA5YUI rQ ZN.W:yf7s W)97|0:-5ޢhnMG *Qыk�U7G8ߔt^sGim 9k˽C)x/ /J0 #pPJ2Js\3S;a6Nu eH ۼu:je8͏2 @`[S!kRơ,(q\þAtumaʹ7I~iT'*|a.)NX3w1'O&r` 7LJ.i\O.WhN=ޠbء5ĵ IH[{;.~FXep|'`FFa8b{n]ҞSO�o�r|VGJˤ0z# {M=V+^- eRgy<FO(9sfX94z:*e0_Ow.% /#:Yb_Z&o0mܚN'WR#j&,t11%JܞHd>/pN@H[j2楂< F zUY@Qj#@Pz^YGB3ྒྷ._WDnczP"E+~@PE)n4y`Z|E�,  10L�N#W;xU-ՃE ($N9@h6PrKj*På ~28p"|FĪOpj9緤͒*^hȋVØ`{n,'e4M5 C=1|N]j"DmbũosvEA&\{f]H-֥E|C;NYwvD]W$\(Yӥ]V}05Q]K8 p5'�?G Ë^i~0Գ >eiIt\CjâQ0()c<ZM_!Jkl$j]]Z:w:ImJ=V"wl ֱM6RN:}MA 6%&r>W*fl/;URAepw.uWa>)2#&:kcG/�?$WX|m @#I~6wcAy֏ Qb?K _) Ǘ> KAе;qKՖVɃ~VqX@?iCNX2&%8%fcW?n2Y?JfvFo>jO MQZ3eqO煅>u3g RkEu}A`ohxGe2*yN䍊Jӡc~.78dѱfM|2%pE sI5!@2] gMC׵h wh(-ʭ)甚H�x/fJKfW6L;PZD!7BJ !FB(@HZ^M.tW+3m&ud[4sz4R!`-^J&dh+'G𫔡K"^rArUhUo$44d�i9=0l5DSd!cΫE#> J/)&8>cu&ELfF„'@tOD;-~V g!ag!;9J%0r.[ XdZwNHG[Ʉ&%IC]C܋ri7ܓ\wOҼ}~& KOL-6�2 ?cZQ.>J`x]*/,~Tn0*'<5!-zޅkPfk}i] yA37$S�(!z -OPc("q(@J?yXr"GN%" kef l,"3 TZicMPi5'o/>5B+(<6v.mxRde󓿢=1.+I]VSk^GZc]]kRnjD៬[?AmxVﭯ: D taǧ!zA&Ǟ UJt]QtM:ӐjsY8 !$ '"4hfSxVcF4pݾvlM[Ƅ/ (NklY|S+~>:Hi1^G?S*,p-8 ^9m;&Q,b{/4$j 9-%juO*IpOL[vK6K'Ď?/Zcq{3-$ƞcَ*3AlJunL<{1_.RfHVaٚpuf%S\Z0DP_~*{XkbԠk^* ҆a<3B>#JOa!O߰^iGBSZ! <8sh|/qItՀ<%cv:w;'4zvɪvDJ ~yC_KV:lW3*Ҥ s</Sj{CY5|ՠE貢BP,ajNymLlܪ+,bΠ̇.@�G_nD'ߖ+;fmZbxYMm�~Ӽspj;Eq0Q$aR3Ayqsgzޫ, tO-6w)6*mVqM;8]w4=+*.⒠h /ae%{I{^Zi^߰ZFBҰb`|^`@SNZ_�kVݰA~:4OtX*QZ xA ڶN>"o{C6O"ͤ^Y .Or?b,IW`yע6o*V>(/B;6tl qhwd`cΟN+Bd?L\Dѭ[8}@}< 9C3Huy@'BOWh`tFcs-{dp,$"�XwLV&"Ga<$"EQ,25$/T0 'gRr}C#؆EwE z pO%$QJi05g"IvHCnVyz^h-DA'Rh}I_Q-Ǹ9Я H2.O8d62`MU;P8PMT .݅SKNJ:I/}c;צƶ"D_}i]UEv<t-4S1B-5 51z|өB0vFU'mL$7]'vړLm-xNJJxx-~y2 .(wB.TsaQ/Nz=Nh{'3jOnH{ Y/ S3@Bj٦71%@ѨGcU9/֩*!g/3j_wK }a4b2.MV"0ۺ-DTQ2 ]d2lҰ<q}嶱7Lrcѹ$[^ސ;t�Q4F& AKɎY:E,2h7H_uh:_ֹijS~URer |$5mW(_m1!ORi.4E *40Awk,Ӊ\K[Jh:j-;Ν=')#Ӌ0]ވE/Ыڝp?,NpQ2,}?#6P:wҢft q<I]#>+{N/|ēپ0áG|~$wqv*OlG?.)Pi-4ഴSOEQlum؞DE=>[-Hv(I20b;AY U=aToyjU:)1FmȊz+|MhݗAmM41CcZږ?X`-RA?WlO_!yW=]6 R" iFuJ00�2bx:uNOeukB9$bJD$j^H(\m8~_؞ϰ;7mӎ�aPk\V - Ffn1m3`o {xq6<= .zB΁$8YgRe pO-]wuϯç۸N=݌Dm:[RTHIo^tۄ d8p(lHMOG*"tHXXF/ l1ʰ�0Iaݷ>y5遴"pHeWo1IJ,Qa ZPn>0}(lu[Mև w|}N]VYX_kځr^uy^4Sd_ۊ '`+x=FS DFd1;m]l"L70B໮]Ip{'@b{$#$辻27eҹxKM2� bx-ew_aE0X \(#C6C)c|1 KCpGRwÍm̯HKLk eO2fQ)߫9SGm92F(oD]m_c]Mȿgw vv #|$h+HF`r5XGv (IXǤt*ρ_W,U1pŴzB}0jU�ۄxHJ~߆hzT1")*TCߧ|,8t|#;g<?B�}�'ynIKȜqU,u<7uYk*{: r.CRPTt/ MtH" CVN_ZX� 2V4VםZ \|%W82)5$lޏXZs�!c<AŐtwbE$0+O� dw\: spH:jwqp3~j Ʉv$_ΠrI7{]8wHÛ;`1>W.7Keƅ+&Oh>t)c=."HdxeFna.`sJ1>z SB_R &l3^ct3?I@4 KX)"nOW?Iz&Db:J9yXxW$} &05:PoM34a#HW!#Lxa%#p/?!ъ71TQqJy9[tZ,&tV F6 }ƲBKbS\.4Ui-VUS Pף C`8kw/[@ņ>;re]Gh 0߁EOl{x,=O0Ā#g&\Ԭ_ f:7+/4ȩR.ݑ1:j1? 9g=z=n%)QPP9=(jh ǚ/Cö<`\V"%W:()&3y^}8"lJۊY2耐*~oyΖ\[lSV7+=qchc> F>b8i'xxxŏ'cV�L ) [2sV ;/;t+U6ýf!.b vo܋c"r`ȩ]aMuIpcVl٫Z?Uʋ^z9, 0߁U1ܴ>?k3BUb9N];x@03y7:n-u*Tf+wcj^x2./'TGJyޱsxC>’6 }z \ z$vX_s?Y%pJ~5uͷT{ ÚFs.SWPj>qMlUGl'>f- w/DSߗʋ`BC+V.Ppa3٧:Fy`Xb-Aw~N(*zWDwץ,/dq9h?gwȴfꧧL|E<qI:aF)gB+7pZL4$9Ңv3RGz@G}#Pq9!b^1r+W^R,k=ި)AGGWmnLM_:v\\:MU)L_4v<a|[`98<R*HE 勁*j-`tϾ$h_Un4aѪ:yՖ׹xIuV7XD!Nd<Ԏ=xDhLR( _~qbm :騕1XMl"n"#=�v;F]6gq'`G@ _!gַmJ7XGBl0 pE,7+ETc7W{#uះFi(i2T $b][k8`hνp=^;˾i"V4UiE+p\<[X1.Iy) �c[;*�{X>xxgF1}"%is3>H<hOz1bmUc B{*qיz;S=jxR^߈F>yvO!wI[6GRTO*ruv8Y9#,Yr_<c9nT&>j1yT7G.utgJ%{%ؘ:́w =EO$e98R5GL[y-uLE+&5WS9\;=<оN#IOn ]]g(KpЖaQ~` <E o1]PYk<O Â7I6 G e4�RH~S;`,Vүgl_̑.Yx1 JB=\%pSIYcqTyijW:L(]*-OD/"6O}\*<K& j/wsMrb8ws_O\NzZ構I|\Srp V<>xO Rx.+Uf}M<5P-f6M^96vEUkDlr|Xx@@FM%.ZJ;bk YҵR3n/-z1_y@:hD=2УJ`HM4ݹZG}t{9-ZD60snndp ϽLM ]:<]fuq/:"@aM1S&RxSFPoqMoc6pT/w5nSJ/xf9#r]Conc YyOFa ()|&:yM2ص_7hqP}~{;t^`aU}|a~i#M)֐oLl?oGg:?+b "m焿Ob!1a^3w\`>~.ҬpS\`HǶx9nJus{0=/8xn+ɨUHGãݶ11{|�%"'HO)^b kho81ncbI+;qy2'JO6ӈ^ ă ^ ""Uosp\[hp^IDp׃hXXj""7jϗpSKs_xsﭭClDo>¹s7h /d~8]: fE-~+ͷc'�.N �ƒ�L�#CQ>~ !-F+d{=);Β(Jt/+PwD(ʛs(?N® {p˖Kh7T 8Ҳ",fCW%] ,CԡB=O=={@#^z?`pU)bBڎi;i!IUݤ)]*`Eyi`̄Y +5-%?WRJnEڽ W{pWi*(i9#c M-`YKEʂP2Mnշ킗,3EXqyx+w!lLgԮ(yr"<gJ]67{4SޔDƧF,eV^'ݍV/*_4-rՙyƴhF{ t�mvl^A!ڶ>Ұm_𡔮tD)yBeDig[&vWh\~M@+'t_*󦨒jcLnqV+y[._[@KFٺ:oQ)WI-cBXڢ.;'++ YhH4ӨՏ~+~Z v={t\ rV3i*$9ʷ^cc!4#X˂ǰʧD9L#y[X(T7]C Nmɕ||<-INQJНOR'-f" kWP1[- ?MqZx`6<&4v2mnmt4$3 M gt0uG@`*|+m`bҡJ<R.#T2\QOY1me$Vť+,$c.$^/xI4g>F[oM2TkGFкhk:Pnlg F>10t @RB0}xt|w"Ž .gHz?~J ^?[g/1iȂn4{\xRHwDAksgjY^@+_=ue늎!G}dT3$xt_k-76ڥ Gl5 ׏rGx bEcB>)r (vJ(y)9TCe*+G'h!U2M3Ie5I_b^5͇(bYçq]ȄǦBh'<jpr_s̐%oIڢ,WbXArTt?<(nl8W6_M6yOI=Z�slW*Ƌ|NXQRfW#oɸS$}aăPupg6)!Jq=<@.}UA꼬р\e3 a@GD!T[Gtɮ[*)l\~X8 gNXdm)>eFK!(=AO';1kBT^V(0Qwa j&r@'SNEޮs:QӛUϷ5Q܁#ǝ^, ߬NK5g$i#~`2UR?+F%A hmgqR,k0+ Az=78]OjּMd<0z^S|־6w$Mftʷ:j1Ǎ$s!޽2fF1Z^`/Ȱ2S \+OrEFQh !jW1I@~C^ck]:kZЊ ! |ͳuyHj h(qƶ 7iMN6dWvm`Ћe$x0߰f o k .U(̰.7-?凌>G_٤-guO(br4P2e BPspkOwpQ&Jaq^Pd9O�Q:<'3V&3vmM~uΆK NP^ԩSߎ"l)$ .]Mѡkn@Vp/*p8<U%c "Qjc2I_.?qYA?2ܔ "P/l,uǹ c]vpЯev246%B܃{W#~дp%o$QVm:0P4Jܮ=k :"/맲nh\`aA78(_fvpL?/6FFe=xe>d8/0M2bJe]pιZhe6)StF<<ݤfejM/(bFP =o}YE6F^MFEy$WauG,bM[Uj\l|\MD:e@S,-!:ڼ."e4pldV?4#; ƞކBP:(=% ՝(g lR4 NryѤ kƌ"1Pvo.4B&'Q6֑jkFKx )U.iob0m٬mM#1+ۨY%MFaئZ\X$lzD�ᬗij1VoVFN'|6%p?@DuaM9?Λr/7Ǒ~uTWVQ`ZKNQuGOӅ x72(mt)ktd#z`먷6 r,OZ5kI. 'mExĺDb vڽ^] JJ/c v/\YD+Bus9�eu+#Qi%ʸEv=gMh kff-5-3:旹۷/SpCn-z7p2仉HurBQ[9N&r7>f4~mڠ]|w _X˧>8�@AU(skNAՠ.P\c-ސg"z䩎͟M^őp>@א[; 1< \mdrwy(fE?h4|c(xQ6V_ܧ-~w+ Kޝ"䉻vAz'<k׉HIcUn.q2%/q+)i7!H^Ԓ9gKWqR~]'^՟H? AB̮гOH32jj,/tC׿nwZNk7٪4խBg9F;B y#!: qpTٳhid8 ac(W h](A*_RؔC*s[)HbG/48Gx=iaC?-(iAm4 c"Dpӛ7oT3 q6?q=)&[0ף-h p5qH/wZtv[+7("s:ˆ9KF;OP/)͢ZUc]@aNJT:(wk) k�0]YD+ Q1v~RrLpKZ��k[x;(%6 ǝ@J֘v]T[.: 8ͬl�!&w"~׵+ei$Ucr~V{RGY'0�vcp%�ΏS8<@>!vv DG1G'/'k3w.OZu^=tu^AOmAR=N'b&f ^¤kp o>I|`Zo y_y q;M<n{6Ӫ(Bf9fDbt9r:I<l) 8IR:deɸ^}r2 +]؞#$S S)\pV "y N ~^ǟq_1Ny閦E\K3&qRZp$چqJ`-PT.* n2J}"R4+DMKH/5߃;Rdh"x:SG= VmYYCJH41 0ԅ G<PpR'ήx0mXyBBzga͛?\Vb!cwjً&[SeHdND4S4zo�WVM~ >!Opͮ $t9Kps7BlMlGrMΝ ځ0jV¯[pW&(^ڝZ]:rEK˴xƒ|� vU ✁\ '3I([s0ng)R-FRnA i"FbvEO<s�wc-N4m=x S׆s͟E9r$u&u~Sp#Ve]YV%O {f=pX~K56T7ޓ X"rҸt(^x›F wN] Aew2$Acu+n)w%_F-s6޴WJ3n˯( @k'GPMFi7(aSc�hU#阤M:v*snQ] =r=v<- }#[0|E2ֿ}m6D#oJc{@_grfEˆF0睜:Nce@K8ɓ! YoR[sEK @ "Gzjk /27 [` s|.�ItG:xTq|(4yqAT82gPi9oͧ ׂ_11(HO2iJE.Hmmo& �SdxL39~!jܳqM&)sЋpΏ b."=jJ؞ÛҷWwsEKzj{ -MBɎn-gL.-KeyqKP8ݔ[>KL:bX@/垴8Բ[B,=A=,:`IO*(H/2օ5  ?sQSNYS۰y[3Qk4my#uܮ ۘBcwE\j!p*UEb`PtG8ՃzA4GP<R+_ ɄGZm_:QafwI X^J~R9tGmI֐tMqY3hO;v($L":T֘ňV5Qln*{lhI<[df -|Sۢa; B _n^4U$tUL;EP5^8R&vl93hb9�QetxZ׸VeCt?Qj8)x2GLY0KlP\;L #ͤsr�\b<x*_kh6Z0yN~ewQ\wk0i2s�aƓlZR;ԃ7 68/,r uu9-qdXN[}FS HCq}ƪoಣ[DAhv)=HwzqOc٣ds :_׳;+Uיx3Mmwd5f7EIz8gRGy .PLo0ɖv9)ѡ${g3wșu :ᰣ�VFG{&U,y`,M<Ɛ:[upT.h"&Ԕr<iyt~I6MV>?HqZDEFG#ETGy5Ny5^GkQ ᄅ ;\+pp@v>X/E\0lDTOC>03oӿ$<KNiBԽ@67j~, gXN'sgU Gv?B ߹-gDPMP^sLqG_!3GkNX"hvFS~yk`b_6)Rɷ800.h,,T&f 'T{ξB0G"GcdN i<d¢Ƅ(6'xU80|O ifc~{ފð'4M FSHdt*6XVwc1Rӟ|UnyUA%/:zH& ̧0KFg%Uvg; {' R=/cfxP uw oMGtD$oN(.瓊FTe%bw5+p?J, j5BGZF*5hFAr,`&]<^ԭˊ̲iC5vj1>O mic,Dxlg6cf;;ʠ~E~4.-AG sy!xX!Gw2mɯBzA Cu]I?cb?$`J]8D%`#N$͵eVEͤ+-i^/Zh!̫΢n<Od_~i1< gQ۹\}&7;| 8 DwtR Hr#Gz2>f5bۦPE  FfP~^=]U.! ( zXp</~T<_*xڟk^0ܖľJϻ^ˌ[ S^6˛1蔟D)_8ezGoe �?*!X"v 4qz "j3ԭ1A '|HL>;f1.lQ .(M/&p7B.DZ})!8#2FD|=$0QJc.^y^Aye]}~ҺY*ipGd>:S'w%r{׌�o4f|\-m΢Kء3>rDŽ]doJ}+qD~99Erώy:S _CXQ2nELlg;aE铒eDcU2b D ͥi;`%짙'gN+(^&ĻIOo fQ{Z8e?5hypkoaiNV.˙$2Y{:ٔKj3}odY64@51<`%\Oc^m!;B{!kT|rvɞ,].93㕼 VBX)&OU&}P.g|Y1kD|BX.g}G`ԩ>hC?!le�Z|ufvKk*ʢ�$-CTjcgK@9!uwv%xX}푸l)7 nt)rƅr74ҡS 70I}r9e86�/s<GHo.֊!o  AI#~} C܀k6:u8 ^?;\@9/${Պ]|#]Q[oީ G@g6dydڪ6^̄G)hWʉ4/ͯD/'|k  t�BwD5$&p]}v<&ᨃ4ބ7!;�> __it3}ӐJܝ|6Wz}CrRJ,x!h7<YA ֿ5u0;OcNy~@ 󎴋WerzҶ@ۅT.x=3#wà(Z|;\s`B_Vm%*2a9e倍vk;Ot=%d`v0$f,:4n/A9%qy8c�2N4LN&ިl[V-[ΦTYys8f# KΊq5vxYԣ@gwq>{E!{wnXTz_C$P?BFXV)G˼%{Ȁ+~cꚥ^ ̹U|@3J/hNU˽h+7IN2SojQ.$}ӊfjȏKDmXuBۈ-bl+ /u6 e ~{ys}|WPE\ֹ :#WC,X}"sedT2S `|')ӹ}2gANPw3,|!@Yys+F硱:ie\h&cf-6~"A @ܯH?+)/&l9g`Kɼ*<ɦkN]F7 !@ 56🌨 2QC�KWɗS]j~oW[^a i]*³w&HLxBβ8Vmd>o1WDžH5S賤l?$"h]F2fEb2U�lѪ(8>"̩y^2׽<ԍgG7Y"Nw i"fp /( <\PgQMt"e9YCshq(qgTի7qR]az)V$b <FEߎKs)bͬ~ɫ7`b9 6I '0:(S/P]7;Hі7tVNV&OX/i{CN^2 bTFJ^�@urh`J~j>v:QUS ۤxzs7eZVC4^_ThW㋊Nl̫A=񅪋DܽWw[ݑXZ`lQ)#,T]Y@%<I}vXW7[-�Gi]QmabRy,L{/aݗr㸅!>'Xne|롟{ S;N={Xޥ \SKnBfmr\ـ6ݱnG#*,p(\j)\Zrbs .g{sK8vu(`ilcjz#G]Mw@Ȑ(LŵDN.K7s*:I7 N-.b%-Ġyx e 9aiΔ/ `v' K+[,Mbz>e@1 {jQ)4z=8vT 8c '~fQsؿZP *b+g`ڜP7&H'DN96Z/o|$q܋1_֞1Hƃŷd,`Eϛ< Ԋ\Ϸ&nu+xf !VfO#o[&\Yg-2h Sn׬NP 1u<l<$yUґQ@.19atsךG{+zJEAsB뢀n l_"kT*V'U2B$FJD+7T"NIh4h6lO*_m+?&l,`}:{v;3D a"qbz:V-Մ%V'�(\$ έ@V[у $%.(RuPuLW7/(cRnK:c&|N3: ,Y�K/qQHaF<h>_?8=Q,!փg((fLZF)-<ʻNdkyL1l {2aHN7V/ʄ|ɜbA[dm+0f5S!C˕}9F7bƾm Zp]E n%ifuOgrl>?7m DN' b,h렸 KvRa(+k"M[*�SȄT ZUWEWnTSU\l!(ARtH(@VH!O UK?׫"c\GMXaH*_Q˫ϩ6] kdƞBBbBԋIvD9 ""7xknx! +œ e$z{h$2CX$-NiI۹R Փ$^5FC@fl>?8,z54ѧqZG@P&# P\#5Ji./elɕLsܡPhwS *V6,辷^ yBm?.g(& ֎{ Ӹ}} -fISsCI oeYG=}`֓pyn=C7gw!]q7 -C�6a[4h zdCr֗ɇXpϑj7~ +ܰtuZD IuH,/$*·s'r46BÀn$l yi0d`Kܳ͏H!!]`ueƎ^;|F!<oGf9X5gl.<]^!4aq=*qƃyt`5ֆ_x}la RrHb4b騎l`/ƲN4*q- Bdjk,)2_f%ޛՓQc!K+XP޲Edύ!Ry}8Ht2q]F(BŝktT FGk8jǎ "n=ҀD`fY^$voS%NKn9{�y%ՉhG$#W#.u DlmV�dZH1S/n@"S@46- d:zVq`4w8ͣF@Fn@U37Y.X+~&;ZK󹿙<P+ ,3zǿHs.=| ߸ں~ؒ{*|p ]!&Zk'o"#+eM-͎.Vl AK6{d�o^Y?"X2<O%{+Z` .0֣=;˸a`zFˋoC~Xu;͗`ǫj=6(*PoV_QQ*<9Sʍ}zΩJﴓA/>sH-(2S=Yx{GjbЌHt)Xb4+kdinX䏎3w;GnF:M+iƏFWSK?&i e g]VczbtaVɃ킖0)>b.sWmi[Jq+vOHzLÀV14jӹ(oרZmKrcs^)d_WVɚJ`: K|άAU曾V1XxLB.Yi+� F?1Jc[ɸDsғz"g)jHY9bђ^jF-�cYiU?ăɤ>PA˾N)2aY ߿7Q^sÊ&XgA iga2 ,u"} ,eT. ͌M\/Op^>7"-ڜ'sв87p(}&o=Fl[grRћM6Zy!=A ^]oEhWdQ^&MzQjeAz?S@~ RhykBGG(R . nM{o*`*~k.]g~qklMƋyy4Oa{,\ �*`8S~]#:^y IQt擨)k3,i!s@ڳQ!tfU]W]ũVwap[[?i 'BYߦ{,8 8,><FՆ ᔭj?]/ddxr:5* 2t]AKhIdR2+P*$<.!Bz�l(lN=%~g|R oB{H/_'Q"GGFʂTSi-7DN(zpؽ9_Vb/'o8ZNHR�n4@Y|be(4(YBmI,'I~E̢@jw1QNM}zbJڎsg{^43vD|eQof%ٮUV B#-UX/ *>IwWn-x<:6Sij(_^@3ff]\65ى,Zkk^!vatVq!/@�3p#&;\E82JA'7UFOI{χsZ BۢA1vN5Hx.lsucNԹlCM߈%snvFt#cȻƷEȍ>lD.>|y&`U)5ۅ64L4~=՗-m_kbցD�jjA:E{nļ/d?Š5A ,A)Z^%xf[ }$[S>-}cQ0jx.*;lYU&=wĩ~^P.-UZUzIc SW~סoHr(I!yrK6A7hꍝ<I:6:e˗YZSDL!&h՟2nRd}r)M SkcL-eQ@:9M }eP`Fh#5BPk5$b]t,Zdkg'xb6X",^P+:o:FTYE;#}q FWKi^83OcTd~?9yOJR1˧�4fnڎ$d8Yג4d]|wD'Tneoow߰l5mKܠ% }{Xr,HV)Ozfa}ȗuŤ7] di=UGSfUpk5q \Y6k\Q(V-Aa ϦK/mOT^lsԳC\{z@ G 2/quϼ!=яi%g<ꔈ?,oui51wAmj%J[ V-j-XO)JzdVrk}%J喞#PAS!ۏAryBV-JuJ=Hvٯ,C̜olA=U+ʠ[3?5*K <ͣ_lT(& �//*ןsmߑSԞo�H縫 ^1\W_y{S6>l*Iئlu&HsvY=dr&86e+KRFvv|jRv]pB|1L 0i`*l Ji>WI# F7/KYrp+D\ENIp=.~gGST#J+G Xx<<4?'AE^@'/4H^9ML,M#Vy~ �«J3+Qwzٵ6M#aGP SK$|QAUJ**Pc+lgYkf(hA30~ <a!w  OSD>wf7d %#MTƪvYɠ1'OXO}ӗg*ϿNCS5]|<V^G<ˋJKKBY=^"6jVǬz3CXÉ/EF`d ᙀz"1S;IRҡ  PoKA/1d͉"= 1X 0`DGly! 橍" ־-ldj^AFFT^#*}_n3QWVaZ#Z5875N +/ZǷH31);qv vb.#"c?f=D`NӱO7MC vI嗨PM+h:>N1D;4wݟ5^ICCYPG82\B=8g!4['<YD4rӓ|Xa:ӯy )wo;C˄C4R'(_W%$2@i@va{5zs rUI:ct$u.ֹ0iVŎ?k.�:̚=vɢ X(/b)2t n<sT2<B#"5"]Ӏh_sLܿ3U)~#,ϰ`ԫP*B`áGJ2Pݑ/>36]ڻĦ\f߄0_n b^pU#4 29v Oe]j.x֏[#/ yIv\vTe2Jyc5k0Ayr lrގN鬤WD**q`pLW;,,qʟ(j#]I i]tf! .#%|B]sK[Stb.[7ScQI Ȟ2dS`}w!,4.]APMSҙl! oKQ+<I B"V|Hww&AA!1Nh96"eU(?m)~e\"]4lEMZQDo%>nSkڠzn:Ј`! y43r#fȘi@vnϽI&7K˲i` KHh8֔Ҩ ne%vD_Q[QLN'蕻kZY{9I(�~kZ[€t5Iξu, < sx{tT7^UĒStf'6K`9?O jH?q`=0&%ZkRT T@zoʇHn)픓GtA=wDO"PeJ0tAfb M[2 v$tQ0n V𢛵&�DAHGʒ7U"k(x_}q+xMf˗;Wȓ?(7ۍ'MǹeNQaxhs$vVsFc|.UE旃ވ>| T dG6P{M89 x4Ӎ'LF[Qοug4ѣq5(LW g帉{B1GHO,wpvΌ3_<8ẃZq 9;asnqky&AO달?Db XAj=iQl)Fڎ5LoEQ:?kT#D|̸$mC]s.̬!&xPLk1a^<RK\;|i=%ӿ`HF5' ڦCMı ۟ v]p懼|彌uid'LdSzoŊFVZt޾<픯*ă?e" ~mN \K/鑾s2 <E0DcX]YvkŰGFVISC/ABWTt|")h$<,8+q=OD#<\ܒ-!CDOc!H( 60n 4pgr9ۀ1}L8.8@3J*qy\ OQX#Y=X$ s>QR=Rb}7gCY[D0oX—o'>mU(ff,p1~#q{i <>|͔qH j9Y c} [m:}gɁKlbug[#etMv^㙩gugOp('7N7;lVR U· b\K5܆ҙh6ӵ<F܌r\o]*$ Ho+<Smj#KMd,n$boj!%(Qݎ?ǻCK6\ug } d~1{b!p΂#_9An̖Lf XtBKyC_v"s7 dr7u].P/ېߋ>)0h[nbB/&I_;;R^8j& $Ȼ9h__ӟL{ mA!`� 8(xK9 /:lr[Mo2-lp۪ʋݯ>y.6}rnBY1ǡa鄝-_P^.JM1 % e cꊟxXҴsBO] CNITK,<ެjnct? vbKy366 \OK*[~o�<W�KѼ0O([=taz'toG<]p1tTH[.4s+~u«G[\+_wr:g7zWF5Y-\v7 _tp0Xs2>Ax=pAAɶ$yp(W*Gr:nbď}t8Vg.rB41 7CXL1%mINJK0蟡 ', {޳CH$tYyHI Dȱ-ꠚcp2/mjPrLeP+CH;+>4l8:4�YB{@xPj." G-|߶ %<捌P^x~  dd(~XBpBW V1X7 @1K:NH=}-liإ;0\z1VT1'f- qpf�m7\nl[:Æ8ؤ c!ILIeQfW> vyp�ܙ_ա>JGuоd{.rsQ6y C_4zQaUuOY`ݲ~՛^G|H,.'xPwQ`<UsdscouJ83m Obs/ZIx�=$Q԰wk[)O8t`O'4(^ DezD/ˊ?Gi6 GŠ1OI$~Z\2HWj8tJ ?yERL Ŷ,%fK.#kM6/_e} cʀ,H*89+3~##9@-8tCvGJl&+z7IXbޓۨD c+EϬ9~/ _ULTkMIf� µW^`F'폠٤}Iߐns-;â67cj\9s%m*9-ZO׼5ŔXAdS,&Y>\Rl.%9/;GiW T2^yNJƪ<+i(5F絆™xB+̧͑P|Sc.B:}򯧎t5<"b,E> rj!?:PH%""sÍ(TܗpًY�au;/4$,}"'ژ;g:"%[ gt̷lr"d_*˜L6Q>T _K{1 A[}`?Ȅۚ=jؖd>> ? @�[\x-zńCd S7Q`KJ_a^aN.ygN`((!u_ml&k.j&1 eMzϏ^h%J1#{#=!U=*lQs3_U3s|AjgL%]zoi)^|˦}y;/<G: RߏS8�EH1/NGV'lDZ)fȸ;_^,ؤ�͓TiEEEGgW#:{Hsvg'U IAWZm%8Cϯ>Nar d\ㄡ `̸p0EWXņބ^,$#LOtaO{{-cς6}e) gxRO/d_к/`xwa@>V` J [gٌZ^w $7j&^88i2ˢ/D\wmш›sx`6'#ߎ1]MgX)!1I @Ӿ/g[e?tȱf�KjT[Ϯhțw.q40u0tΥJP P�llH <({l*7Be_YtZekCP1c5MSgX, ;b36E-)[w&N�'E[EC:Յ7jHSs,qLHg<62:j, 4n>$6РB g5x éM^acB5_'~TT짼bU 8H"k~Q�{xX}yp;H:/޶Qu1PEۇ*4f?FцP޼1 4Pl=(lBٞ"vHDPu ف%4pD7/DN= iJBue64:Ձ9"mZWs(f �}y/zxfᤵT"ALAaߞ>E̅ǟJ'>Xxs AqSO8%XH4p޷z`nHzcFuDЏZ?^sx޶_QV\p*6 LV>̰*uyMF5uڍ zpHc]ׅٽt9*8tĴ3صCLw�u}qdL:Ot gŽ MiƒjPr G: 'Wh}X#/'k<.b.zuAW aTlt`uA#zUs:N &&k O=r* -ڮ<dq?qPv%?-Q)_ ߷$(* 9`Z/qo?^*?? xrſt,tgE? JGIE2\}q(fMozq7] b %'5u,=)YNZ:Fb5^C"о( &,!c1`~C.P�0u,DjFmstf d[ST'2GWnCBM.a  S*h̽m\&F׽̵UlӣG`kOn\ޢ GL5!2!`351o޴vBPPR:>Ft0F F /Z8/{wiDOYGR*"8Q^z|%Io׫Q?ҝZ?tbKa%ڹg# A^eGw9Z7 6:*mɖM�Diy".D[dH}XK1& @(PՇǾM-5N hQB=2kYr_ Y|XwʗEf\@1Yz-;!-42䳌І(U0F.<u/Ƕ#7G?q[󝈻SL^եaRIB9Pu+ew XAJ1h%- q=;+Y]mY >)ɹ̔74i߱*jGgLt7 cx˪`DVAPA/a{Ƌ~aM`98 g.i. g  7Rq!*?%Pg:5 i2BjРKϿ[^]D ty*<Vy~"պ_ |712*Hn7J 律(;NVWsd1#̮~ƈ_|?hWM[=#ԎWl βJ^d_)Ktfbn{ԥ< CQ$q;WNڀ&& h{`; @5ie1I'|6[˴=J Vs`BXbxDĿ$f.Ҹ57׃&'Q!pP'2"D4Pڛa(l@WϖPIsPÚR d-Z }]b.h:>Xp9<6q!ײF YԴӃCJ}lh;}d-weQKqܩЭ1$!U Ѽ B!j}(m[lӆɧX+؎ F" )կ7>42aipB}326Ss1W`OEK\]GMe3'j$H7KnVn}8WI(qc!@t\CD_lREw['M m)Bԓ`Jjyff]{bp>>\~է>@z],ֆ k3 ސF3ݽm鞥<&cYS]УPu,s5EFq˼QNzZx7rr{b* ۿg2�SrϽT;f{ {Gd!@@=1='ˣhd] Yn4L>,R 8.by?,S�CsO^8='ݴRzI5Vai֗/,9;vybS45t lqhѪEݪ'P#(g j+�O͞ RrO`ϩ-OK\|=Lu,hܵ6@⅊,ȈlwLnܓ,iƥlt2֎I֣EAW\K!>B&j!e.Ic1"DH84F6l';Pc LB^FߐXڽOv[Siǃ�l ͭ?dӎDC {3"Mۼp.o3iz_ܙ 7ep�=ɶ�HD{},d˩:>ld=?d&D5/DvigrQ& ]r&st>}ͳMUu QQdV?X^0d2jJ՚W?HfcNjs G3:2{#2Wt a{OTW{t PA2ayvD,VGazS XD6C=چ}̰x!2l0Et{[j*Pq`L&ozA7KB|}lik'7r:k-^u@vT<SYJϼ)~tDbJ#{lYV_eiiqw]J�ڤ`QoO`>:WhN۝ɤNړ}M Gbѫ brͩgf1#x }<SΒ:orkHiǦgbtԅP%k$V=DeL<` A%/v��[xKܦQŻQ_C3+x(_5fF<F:UDjZi?kHӜ˵eW&JI:h# Mʴdh65 muYZk�ww<mJ'ӽr7co+S65O{˙u0| :cv{Ihc@txL[[:(N&Hӑ=~:5᭦%FPA"o4[qqohSw)m;eڱ:(gGyJ-QBacǶlѷ+gV9c�y݅lSIVM wH#9xl:oQPSt`7|kK5K lf|'+~3wfϓީveŷ.*9yNP|t{O 'vA0L@sD:-TDA0;̨yY~zv~˴SD~Phmu{m|::YݫS[c׋0L1s'ͪOej\|A]_pqL@pH=B[͉cT?ZavQ“2ڀpٍaய!JY -EA֑UΖ*TX( sB׃ohV'Jhefn%OL|@uU`6_1q1O>j ckV@Ţ8~kG[1Çuy-G qR=zKB)w3QG%U!EE 5  mbh/먷jOGgmn?)0W;Qo vً\Y Q]Q)@t]. (g-uS ECwм)Ad3D)ONOtF ۸lTt^ *'IqmG;:|՛zmiwib9֍X4vX51jG=Dåp_:b=v EC@vFC:'nbv&mF&v>`[ޖ ,65M!)x! vDc2RVJ~5WQSxz13"ovY;T;;ixQ2VcD ^;a5hC =-ЬM!�hɓ=:~XUQcOd ipLO,ʠ%Ԣ񫲤7J7QA~t'2Yhtgfb p :USXY;eCϟ*stA):8vrYõ&WXY>x&Pvz1UxʪE<[XJōafԘ |Ft$QfwS.T$שr[1b?g!SV3,͜W:кݪM䇧 */us ī~b|lqdC_PrYnP}H*'24.~d\$ 1eVpb@h9:>\r{`?9u΃eYIt ЄFբxT HZ L!JB&$i924Mhb2bA=is)|p}ǒD=n5XX BdBZ+'RN7?a?^$1Zȑޅߦ"s; `5S)'u,Zj*M+۪Qè񈩡r◜#[ƔM`ؐ'h#e>Zj ש9xr)g +slAU_fVz^d=PkiO@]zj7  }}$6cpe{Z) TVxG9"+a5o`"d@ Ў*Hr q79jAœX7(Ug"2ِm=.V wߪl8N�6+Au-)0U_\QR̃�5<:o(=RjDMU. 9QJj+P0Sr�;=SzOn%,qXֹp޷&Je88vB96#hֵ~)׫@P[QNRdנ[ֵ26kZAKG&$}^gDbm#b2VlX8dž/7zt"�5h &ɽ:;HݬG峞GƔ5,oqs'n$:. ۆQ+mtW9nF诫:Н@_.`+ a2+O{m5!Ͱ`I45Dq}4h`ҙ8{:. ?N^T1ZG df!^do*M=&Fe3nw@ZzN㞙2䝧jm1XDXkXƜ&FUI| }4q&=ٙI K�i;T/LaCe2N# ]?7-Hx+3jڃ+bMM" {\¸PUu(~#mו\3$G)Hkykt> n= )} GyP7Q_2A3ӊq=2=N&˱s0s(XɍpU9kpG{gNzPa|ĢItW$#{@F>5KQopR1\><V|m 9qCBXyx7$a�LW ]W iXŖH Pn/Ê97  URTn-@Yu2hʛ;"^K-y_ a~i3bJÎD/̊>ȥj8x(v_lŖ`ji< U176&{7X",뷏 om+AqnG TN6[Hx]-ak 9}b_iCsyB]Y:ϤDK4Q6)Abzae zVl|.c`|NaG#9A, 0uNK:( rAkP"_$O":a}I+F%i763S.QkHQwO43Oe2|¹bo♞4*:eAswP?Xg,F?#x*MI�J-?+~pM,޾)gFA[:}U4%aBSPާ#u _jy2-4f*.#| {yDMk.du#-üa /|rbxw+d D/Aw!|%y,BQM=db)G^Ϻ e,h*QaiV*`cUـꞛf:@$Xe #SvZ_kO¥qxϠs"u+bIbm 3hRD&NZ3֫T' *JzxzCb{ Zqrzy 9dEq]ʔ\ȎO|%;fLoVQЀzHpZ/`%WBȚNUՉJF#WSn;N89-"F76kSlg'Yj(a J:7I ]p9 ի6`=UDN)| v!Lvm.OWZ0{/XQkk*c[ >�J!|9E8奫ӑ<fo'\(|x[eׅbtXXq$A8^vU90!NK@#~/{)-؞'EPu7T\moV|+'TFl@l ܳ &|(/ )S%ųG|`_􃦚Zx>Ȑ M,HK'<>5dVaWa<>E BΊ3.R" "6-3LC魔Zo{ӡL5 æfƣShm1{E5H3(#_*j1>0V4ؙjY%Su W2KF!qp]:7P5nKުPpq?8Ft*&ai+4ki]o>095e>)^k&@P>�>? npB.ljw$go7$fgs:5 &5kSȮG-odҳ!Gײ?<,Q0}r&5jOe跅,~jD9/xUR-Ϡ@7hmld4D4s'g{.CrXRxs{1iY݉s8m]l7 dK~�ɡ-}+8KSpv<?롮6=¤=f.t�$g~AcT6+] ؈i{ܒ8FSS6Gs8!G] �Yހ3:{93>-q~>R97H j̓2ŰA RB22*Qѯʟp<W>h&:ٳGˆI"X/i,ܘ` HYdj/)6MANLՕqMI^p #iG F[|E+F9[#F{sUR6TqF9 )`BfJ Z{0X{>9N .2;Q '+LVݿ1-Oe!zV9�XFj_j :`~noS|_ !օJuf}j/[Tz k׋!ZJ" @Z8H*-: o"I߯r.bLʞ2m e6V>\Ұͦ 49@5aehhܡoQ Ƀ<+`?LLqQ;S)pP#(XK2‰)ƸXR!;8}s' G:mI;+]뛇._%o \(~Y7]2E4U\ @ пQZ 95z`@ xDXn>.¨C?C>AbRY' _B0+9d_br ΦPDEI*rCi,ҘTeILI: <b؅5![rg$@ԭyNBv<ɭ{c%Me6<cPY",9yڌK6xti5uVHm :c?ugkdC[a)0mRi6tJ\Y)G8d-ϻfq*z~ Uf!׃ .QMTC"h}&f]OFq*w:XOb&Y3NՋ7Jg[;,?h 9ᬛQ7 :m}PHSzjk#z h@z+L>D)ϴ@jհHf`zr $`g43S's>&~\aHu5̆Xbev@vt\u+*,N[YnEyzM{nkV6߃aa`]Z]XmFzopG|`WgʬiW3YWUwf�(9FkxCG!n[~tl1=3SC~*XAs ŠEf:g6AHP J,UޗSm~҂yh?vJ</yE6V%"<je!!$uYg-Y'1Wµ8|`Ǒa (4xyĴ^ ~9CXuK5 |(eMV?_~E$ 6-#ܳvx)Hs|A=Ί|Ҳ 4`8⦑JU]^(l6rJ0-$e" :NlY1k NU-L+~06hT\(9ZM%x穇]'Q =p2fFs)L$*c"$wB-Tq-QB}5FLTG1wCunL_;q3/d_j֪:9-x Cx47a']hZCGFy͑FVZ,zDQꘘ>:vts#5/"VI㵃L� -YdY ^M?& /rlG&,.sʡf^S,>hjζ`!|7> x80 3AT"Lэ]+tQy9p_dIxb*iTld/:܁m J 'ָy!]՘B(aR'/HrcFs{`Je#R<f˪'\2JeV2:qb $ #-b q¸װEvS<#ټ8/?b}\B=rl67o-+w6ć :[=`^Y]y)`WusGGC%M\ڨ\80e5t?_0uAxafzR._XĜ&S ,t}H�3!T f?O04#.egt9YIkޭlPPܚ̾9~,%tp񠽖G2E(#&#ݫ^}&.t=c9ۧ^+^g$UauQJ[Tݏeɇjfope hs9⤕&ΦRu1tnqpAr97هŧ,JF3�]XyȚǮ-HSfLftRkR'BoR/8d.t*Eҟ7>QV{RS(~ni7v3?RWJ}g#[. OwtVdp򱼘CWrI \h2#mȚ)Qc%*t0,@Ud"(!t/۳kMYiT(7^[Ɇi:䯣`UUzUsE 8ץ! ,H !yM$%'Q 3}cwf/ݬg0/�:)`HYpC=Ro2\2b3%9$Fa;,嫙C 9)4n1MBi.YH߳՘ ϶)%/A85h}ϩ_Gm˦(& Ȉ}MЦ/M]Wݽ">(t\uP)+"y=QF ijC24R q/Wxdӌ]2 j# r~] Hi[9d &v1ġ>򗹃 yhbGge%…`dw,ՠ#B<0ץܒJVۊXu6.oxF$ ؾhRwtadT6? p?a276GR$Oψ#^vD"C]Z:7 Z]I `0ڔ�|~"Lf J* ^uTQ-&-Ҧ4=o xw?eEwu&/kQ4' &2i)?1 "nJK�}F;3zq]%[Q,HJ{*I n(o\rsVЉĈJNMXaY(ޗÛd,,EK#[HH}o}]<ueyK?]"Y䵴ዩo^-~bq.D0 /ϻߊpvEv+<Qz=G](`}3Fy- eHQG7H�~++A,_ʛ˦s <{vCZuWe/)f7hDð;Q-)wM̞sp|r[ao* +u \9)'6?`pX742wZ�CM$V(9̼8nA-^Џ?x-!UAF\/fVۧS*XAjd 谓#U )WEvu K]|�xVwˈzQJ|as4gU.w@SfU  AиRvYIYu?odg8F3\}!Ӂ|^N3�RIiQ<1Zsپ蹅*R=tO&C><Y&LVi4s{zR_ N?%tuƟ8io}#;NGڋ|0T'ѩ0'(vj#e>WDqE`bY.[0eHp4@y3xY%,c4^Ϋ8z]<ScIuESrѵ1uTsLۊTy A%h5ُ=&bHv Q,Ri4yRC:d>؍P⎯7 ֕܀ܖ9\t40K(SHƊv' }s8&|xW9Gab̊ ='1I�ҿ,HC \R QnTo!F} *8gi”ȮAY6C.sd�Vn4%໿eVQWEKݚMÙ.D%y-m�$%Lr2cRIsmAjFgDN1InMks�Lkp(.b-[^vfWC[ئo0Vtd9x_2Ɯoo/#lkze>&Ra$ף-K D rh FUG\|fYas3#D鉳 iZ?<'m"4<ЈV%i3skRNi-j;C?UQkpPSti(w 6H*r296~ Q2;,Qxx*5-+Cg0tȮwop <A6ʠkmK5ф8S2CH?HJ̏R7)}reȨޫ^GBZsP"j% G5Ε5sH}8`% R(7?e9TLR> KgWRMO)ҁa|[UϏz,)FݮL�iqs8 WIIT.# ̦;<9^ulةP]E]'SzpW$$&JxU.-W8::0i2eiKu43lWoY*яCH8'!NHCo'2-?ˍONXXU +G&˺WhBΔ|!zP=sef^jra4W̄m\Xt<`6p(1wa#*�Wt]m|35n1܎ g$vdYȝhW~&eY fE9BU̯!d ~(Bm<s*EQeDj ;1AɠK N/,Cp}٪F"`X_Gҕ]_iwuуHZ) aRy-T]s*Πח,xTն^ zOFȪsI1iCV4)?s)�OG\8W)6+77y ވoa@< %Rm7>˜&oKywWN5(xZ uDtV|˶#}J}+e�5Xa!e'<GA}XLĠga2V;.q*G=;,hUJBlWcUAm@F(NIj)J'5h?Ob"ܛې瑱}s^FjdSؕ eC}J\Qh3S#ЃA9agZ2hLnt%]48g1d˷iWi}z][mP|5VEj9uJԲF!YTjo}Qxu%bT*7$~ipȯFVE55ShwoϦyKJeV䂫=9/< HVyMa_(5ǬV)襳AH3>I"vm+fmO&?( GtU3Ѩe Wfۀe?ARiPir!}ltkw-;`l\@{i1S(SDĀ*NAG1J.ZK_b8-|hF&ux ;ABX:-3G!-).Ҫ0v$H0UMUEZfi_sԎݼZ0j `Oftzq]'e5#<Zf} E# ?jKHNFnj( ȋ<(\޻+fEilM((!>o'{JRݟ0A2R5{_OD qgDȥ1qSƃGcoK8U\9Gen+NC3~BhJ\9,(kKgYfwU3r4#�1 {Z<~ i7O4DyG~L(4WԘj5y|uM4s{/!f|@ 19AOE0=2NݻL7u ֔0؜s>`#9˹\y\e\W5 \u-_F)s p;Bø.`X`ZX|^4Z=YEY&ŮCxPLhÚЍV`9mfx8._?lc (+Fg Yw e0==,qIz7eKܼl2.F;2<wPylW"&^K"\,Ůd~:ׇ;)4; 8m ";_zŏ\A].ɧn_m?BDcs\bH5YdYL`IB 5Lۋ7}{ۙgw*?qW~BB�+^ ʇVƄ9FSo}|3-Nn9uwS*Kѓw6 {%Aoi||&w36n?hGY_!#Tb龘痕O?h^!7fm衏%(g3\Λf0\^]Gs;,jEhcbQ�"u#w#ԗYbU&]vJў"R4Rn~-dZ=:{cR  ێ/O&Vtf L{?re $޸DA9a}8  #Kt9X L"+R`6 i?T%dYdP^S8R\.jXkI#<bڨDޔ^8N'3 ;}z=Uzi|Ko4vHi4ar8l7hEu{iuGF#xa,`H2MVm]1|No~6ZR-W ~6Y}@7ܷǩ͙.& 9ބge>ߋ%\<G,㴁p4jK'zY:_9]rb&zMt<Nt aQ?r~)n{5C[$2Z? ZRef@[oGȽbn/1Yt4[{k}yNPo`)rܭ^ W2RՄFGnQ crIv>نH+0/k}b^!+xu΀$=p;Z2Jy^cX Ћ;a}5x=#U\EA"C`ASے9˃@ww1C#OazZB]ů[ fjVy˕x\;^1C= E?l@yYqH[҂}欓>e| Aԕ 8egv({XkƐ*1+@,qG 11捬}hZP}0-, puIG`i-~kv|+ţRZQL_꣟q(B]]>ל wsNlΒI-p'=jQOr/?m~CG3s3_7HPgyODF{7_GŪ.+$ųP8 W'~79ޟא�t҉`. - ңV�0t q^щ 4\[ctq{Zgێ]v% Pg�;nzsV,=9F8PМYI[RsBHHMjV:hfŚP3Am'/=Q ZJ#{<1xA�EbyV4=O*#6^fiʵOCBFrVx׽ZE )lAǡLǀ@j}s]%m\VIH</'2jsq(G <$4=qep@W+sJexV8˫;v,o:l3<^"Nyd$qx: DFs58G>vg ==%[>04<D!E2<T}Xg08cKd:?CU3r&' S_QRUvV:}Z::*Hǂ Mj)5a)C7Z2-q ̼f&#&P&p5D *2:�F^즆st_}ΰFdLmY9< 7)Ag"]>M'4NzI #?�앲UгL Ŏ) YIk*Y p/ Qn�=gtͬK0{ԯ[LԶ1VWJd VWF�_&}CC΍|sT(/kEc{7d֝m e#A;pC; :!@ABv6L.8d7Dok821Աß^%tZhkw~c&=4dk/Jq%Bs,&}(Ud<VEλƪ ġ%*:P,TPd{&KA&tAAÒ@B=uC$ؿqRfTP= D�lo^]>~(+"ދ-)ic1,NaNAO֧\y}j5s]YucJTv?+oyH^>7v^ԏ�* ˬdo?DxrJ f<ZYY5cď X`UAi5Į U֞WK`%U|M~9kPQ>ioѢE09E_B7o$K  7쬀ѝMR2~@~ ʋ77#672J/S]O1AZjB"H~*b8u'uj&ִ Z~R\ OMu@^V*VÜ &MNz_8=#înMx07Z%tIfu| ~FSծ1?#5Pp>˟i.ү1W_vx[; QH;꺉)![0h{嗦QTAQ=y(Uύ;¢p"͘Xy~|A_O)/?ghGwrOW }7pwOS6(N83B?3[f(;= D]J5FU^w`ڳ0vՑ ]""%P܁]FO(͟],Unڏy3ڇi/ KZÛ3J>EirSn1:*'<+Arc<J&/̩*iaN넄r}$em~\y:di0őy֔um<_ǝu[+_'N8T0{CPB.ʼùX>1M vF:FR-ȹn3-ܨN*s]K:O&n*piOjD|w8X^vbRͮ ü߿ -m0cEcf}&ԡ-G G0fg;�#ـ,S7�79Dwڮ#,*$)\k6W]$ho &o7}Jr@3}5|;F9ˈ7|SCBҝ(鏲ZYrDZ?m㺑ғ,!~HgjSɺ-*xl#=;i(ٷD [%5Uƙ)jVz@nAUv.b cE B<(k䨶>a#%}oF(G3h7'E4=<V;<K\�Ҿy!vKփ�ϣ_f"ϙzxrbeظřYfdX7!$STS|Dtn|׃¢k?06Vs:KRҖR, Ҷ\%?;t }3+&CE>١*(t0x9 S7{[-2 _Gf%"[Voi QJUr5zMD渫)4],eKَ ŒlEX;7JB!,~;%jԯUԕ=̒uP .gb]%;!n7S)Aל S#'y.oo~Ep�H֤یjxq!RkEWی$MDC=DV{kxCOE8h-�}1�;=O`-Ix9gF"o`rDnmҍԪcRT~'*zDJoyY?N2Do/;s3疿+x+q*dvAʖ!6$(Dʲ Vz=+rwFҝ! <|$ۃ\5vtY|xJCEMŨ[u;?s\;LT4𝐭=q۾ 3kZeSf|69߯baw?.,2*'^!sVC{z+-H&9LsD toIt>\)2{#K,KZFhgq#oC0͟E*>{+O)s QdFiD5ՂG}B0>m]N"(׿}!~*˂: +S<nW6s[}iZaj봲_5nkW澨boa{mmh boӏ!pg G 6{0(\z@MhyS`å_֚nrOy/]֯[xs]<bf/kt^K*ǭjK#4CL [tn ^f!J1|2s1:dGĊ@GGI+ P B,3qѝ5/kCEfq1CI'>;+'p_2[qG[䎤d1M 2<媆3E2S ?b wyЦ",2N?qI87\) E٠+l3Ѡ YQ^_&߾ yut-g:煞RoQjGxG7 3F<‡ s/VIKia9[%�bI5D["/CZ:(8+ϐ|yCZٺ`!*%{eqd?}gvky%¨I HxP# o׉yVX֍*=}»rb@h1"A(?Ch$*!~'ڏ i_d3L8&6 ?8 ;3yod�OQ%ɰ|`YI fF{->@)c%btO9 lOzDE12Ne} `BܸR)zWHAg9 peBbAgdE'$g FlڷIP{�&H[zC9Vt~Ht?w4$1a |wgC Gf2�| P4] 2Ӭ`J2hhQ}ֺTXR+^<Rnu/m}NhTkw�X‰1|b.O縄D;H"J@S33RH-u{]s ޙˢ( ,{Flemu njDh9B9oѴw@Rq$`暨(hBѝbfM%:ɖ4neEXυN%i F!Lg(NxOR AvoFꝬw+Yt5R-Aze !* CΘYkvU &':A-[%~N_1bҸ]cXU^r :b[>WbTbEolеJjbA2C=ZiyRQzѵd~*�6,\lwKl"9輵}H4egST7 l>XDbi\.ˇ勚 Ÿ'^^Pt$.|e` Dل 2uE;4`pmn4<)[o"kN)N(E_+AKG#jMbNm-iVZ*8OYnvu/4ms2qά>QAfS5Kgt,~p%]s<(B_l\^Ulbc*AF#*%(0'q5Cnũ>`%5 @iH**3)dҲ/`}}2 +\ӟL/s=CK+4^vam�TWNo2 'M E@m3)#DNI/оˆVpI| C<dS4l4e壓†y- "|,F(NXc0zQ5@r7/$D3am 8lj6HD_U#) N\�  Q̳%`/;t٬bW-)@$ؠ@Ƹ40Bu LKZ lū_'W0ՊhvPV N ޼Ћ̲'[9}zŽB<I$ AIffB9hmX$&~* Kt@3ѹE="oH1WOoؑ4? T$ 4Mb}f^i2A6X\ 6(GM#f+޺Pꍻ</|LӅ"B%:âiS.8Bo6R87>~ja ONh9? E]x9(VKb%k1+p)Asa/AY$ifLS  Qe<ㆄ|8?ET<`dH&ED�gH$ͭ7$qj2."%8`.~a˦ 3o`NǒU$a7JUE FBHvT~ڠB$R?S;߾cSv;I̚aB%xIf2Ǘ3ÝGv=Ī5 ɗ<lဗ]s: 4V8v_h ~J7Tю<wU *CN " R%L7٨/nt'F_LnBp9ENi_|^ 54/6iBWR:>2dmJ%{Ihjb]<rѷ\/\e!SB6Á4#mH(Dc-?GXQ\9$ul<$Lm#F=bUdv/ iHoIo,;)58w#ZSVpl6Dh)C&cyg  z^!cٟ車]8B1qȇ,-,.)Z'͋_dKY=w&+OV~VEбSK@%OW+^|C~NSnQ=#q%E ElNDF8Γ=+ƭc 7YX2gq,l9I_#AfF+["!*(qvQJ*3R.93 ӣ궣6 P1Wz` 3t5!!$ʴ+*w|"l)K# <ttd-AszBC-#ԞLlP樊% Z,PYX9V4 OEf[/�`:-+(6JGXA<]=( p d+KQA&ϲ]ľȔ3ڠ H{̻R6EgJ@ _`{"tFCx%}0T1w$QJ;[s\KOA[ syybKdM_c^jTH9f +RLP9 LL UN$雉 yWj+Ұu&hKOD/K۶B[ՏmPɥERԤPƄ1M oH$Z-q ]L<8b&Cc""ѦĢlXUkft6?)|6wԍZtP{<|oEQ)Z2 z6Rϑ^YfʘC&s,D, b`D:4x^& >.T 1^lGҒ�q,qn{˩wπQS_Uߪϲ&&u ɂ/9cs r�W4ߡT(2Q6~d=@"@i AR\%}b$v�il=&C 9\뒠B_Ndѝ6b~y%,?L9GUVAMmq5$޿ mAeW& _KVnID~9d7#C)* fHSVR$R i#C۩ ?\S q3Fki`N$k O">Y.Xy+QS1/@iQK q08Ab9S8l`=qw,}*B2lkc(]0)>EPS; ȉ`Y]mmA^Pq <p))\6:}0�7LkiZ0M,ӣ1DD6SMݯ̍]9@'Iu𑱿`5%PuF9r+1n!BB |.+ @σ{ 亘}2~t(=HRU`5+Zs!eJǼ Cjh ֿUf-CТؿum @OH*"{ k7}4%v8 @Ρw8Q%ڜ|~IXu<ãض4 aX%e ewcܠ Tj;i +䦞| g;wl> Jպ,$ϱfAU$m"<FKp6,iUo2�X{o%<Q_P5y;P2OvR$SGy  Kl&(G <=/z)٭X[\dfPIv"I*Fw|~İ|- : {g-]AQe'R]N`+\0(GuK.Xݰ ]fk/�gOvM<QChR|+1;KwHH DѾ3o ֙c8m<@gHy5\?64YLCF8dP<y4aΘ * T A 컽Ʈ5wK֋.Y|R̮fPҰA4'_`xÇIδ%Җɨ6j>tQHC e瀓U;' #=Nj#WfqO3!\ S2 7v䧠f|y+hQ@`Ǽ�BvHPGG3hȋpof1*kX$ig"ݴl #CP/> =6 aZIaU/zVeX԰S*괿�FXXϒh:_-ztQČo�<+ ]2hU44hw4A4UWF ^o/wk.e~fW W9<`fyF"|>d's ΰ҉u8V C]CRUXY3 sT1<P."S \?lߢ>X\n sEw(@@<kX ;3 fAR旋a;`IJ' Phe&(Ģ:k{Oelԕ#O2# L0QQCgCq0JԶ-~T0KX3M(+Su V+J'I.&|P e߼Fuߕ8tǰ H=N009p4LW{MYfX-uVm{s8E 4l4ٗl3P9C"8XA7{N-,1"5l|NŸg!Ҋ t}"_+s CٗW~ߗe7O�fl`zTR]SS}({p[Xt,A9;ܲ*| =˲z`Ӭue1݉B_b:g15t0w)R-3E\Bdҵ)TڂHd@-jx2lbt2ZVQ|@z}$BID8p{hCD{-;=!,!s`8>ʙU&hZȣW}ah)b=/%Sȧ^cF&A` `YE#‘*۬']߰'<X B?Cu<MM~WEHV+E4%~7;Rӟ*e4Vd1e4֟Z#YEN %L>qk�7lJҚt]Kؔ >4_2]9b/!:?ks^(~΍7s5t ͹7䧳Zb^eǶxgސ[SeWey%_}D/?WuVjKͺJeC� eI%MrZ&cI!;:8@_Fj ʠ="SFiqOꌟYvtZqG;x2"_m )ѐ^KOHR<</J{ot(<LpNh|R 8uS(~ }v8 WGsb?%Y9:9`wa|OK}<u.!3 *Y3Sqaq{tlvKM{-ͨ*�!dIy67 !A ~ hH}kjBg .d5N#e)7۴w#}#SC=USI6!KЄvHEAgڰ#(njcZɐ|+NQ`,GG/! n!r+IJ]Q;Da\&ThrMĘ2%2 3"j@fs{w1'K 8l3�o=} �q.q@Y<O2ݢ@W[Gmp6`fB߈91ȉw,٠4{ֶJ +xL:*2N2 n(@ ̰X%Tgyi-S9NF%o"NI-m!Q ]Tkc)tP$X-lICf,Yn?Be\n~Z`ttrۑ(s}�o5 7vOg[LsaSS JnEv!�Q&obi~*H _)AQ0)wj19ఞ=Eq#| |8<(j!)rGF2f䩒zg"_ڪlNuB d~D Jc-QC t0)XMRY=\V_#fנc}L9Xh8iRgIW+1M;qOX 6t<AԼ鄶]R-S&ҍ2z؟3^%w%@{:ơ5;F%p"*usJ/o oDIy_#mywpUv7X5nT{[DWuiZP^>EP"xmH[竦4~>PJΩg]%;V }xy ? !bqaUP,F�B/Jkb&YnZ%zijǫ_ sXfі+\<=B?�V\M〨KT6y'6eE@OM3>B m+'B8~ ^שK-  1Ke5Z| Q{ա a%jWoOZ@1p]KB]i5R3ZSC< a^kiӰŲ (fd"6s5si*tҦDWYA\/L8Yu0 �ię"&]]Ltը_"h.}&wVMS'ޞ"-w{kA8yA2tQ<{uP3t0cv<>ȸo-]s5rbZ)|=F}g@`;LhJ'J�DRq}iUڎzTE>jD~n"=-6ŏ=գ2e{ׇCR8~84<3jV(2YeUpoq{6ue:0ʔ_:]5cW95c{+h4_| \W9b͎9).{?w#,Z60"K_*)Z3{Np|D ~Ec8yiͿAgicGk7iEᓴ`X:k´])hobRK5٪F.1zҌdo =#coqXm~;=ipLOzYd*KNE{+c 4W)z*{qy2޴ML*z]p<ڛ4KR iҝJz)x }a"hV͞ ~7z_b=&MsKR/1/cV;9?l r B0j.6ҷ.NsnC)Іkh9׭:"lsDQ@%1C`geiXٽ~{=uo o d<={_$)Et^Ƿ0sb7^snLk@XF̼cfI,Ia�+`u4M{·| -F\OդBCG@W_w'[eހĝ-t&s}]~EJIp~oxLD(&=;jΜ|I&٭R7\B�X6-f-<3GLi�?B6$2J ҆P?Ho<:X$gESԉs%!:p{41<^`¨^ y yFmK)Ye�sӹ LdgOx *vHɶ(8202U8꽣%D~^3:WbN,yU'W/8wQyN9;ustr q*jOa9%Ԥ(~ة`\4CǍ]eKC ^dG cbqCdfIt7h.w-BdԜ"+i6:UdbKzo=@ӋwP{`AϞ蝚u9.5#©~ʛ{6iU&Ҷ GloC LJP!’pq*ʎ<Cǣ"a 㔇;WQlK֓Nƥ[!`RYekx _IԁTH,orZH׻RRy㝩]*9Ps_x^_Z't{K630ES!`92n&\w9' 3(W'͆Z{RXDz@b[$H-A}&BJB;@ʻid:)7n}Y ^ltM$ouQ&a*hjz]D>8j[OY->!4",&3^ +p:>GB|\h;e ]r:(?'y@d TnjoQc]}Mp3N=5 UeGAYFK-W,( RU킅,{w@Z& |-ɩm{4yN1I;~UQ Y@$ݸ:3Ra?4F RCY:T$yGdH&?b-vūl Q60#Yr-fa~|ױyꑪ!Qig7hlP9O$,~ءb(eF\!!D s`Ic%'%V[ hg1{aw9K \9|K?!p?8hTa+'aV,PORY$TEZxl0ʭ: nj2l>sąo0&pcTn:瑆ϩA+Pxzʲg;mAu p?Pt8ߏV 0b+R,5p/$Racx @H$06oC=y?Bu~"*x#F""M P΀r野 %vNYԽ+$\J^܋.wQbIIc7\ˑavu ?DpEBk${Oix+nѥڀrXsD'5Ez*)*(D6y (Dp-+lw-MΜX?ʯ0<.ѳ橯a40hqדAִ YLy/@do0'#Q�<C/U_#  f��-3(;o9H`Є2we Ìy)RBrh LMIrY CriyмOF#oX{)ѩ3kmk:Dռh/Z?:E;+<*f~ ߃46"%Д>'r56q!E\ 6V$eZ)[8$n;+Ye7#{f͂GZi &}_qY2wࢹ%M_xPPp'' ?㴌<Ý'=a?T'I2p+?6odFբi#~n}AȂf(6g;P&_Q1fyS@?4KHeVfcޕu( K>Q1nD5 [zCrV>lu&4 x#wSww~y * _X1b$g][dї"on"䋃{Y%1'>9z%K#wm. )o$&U/f?9Q6#daq ɯrb o-Fقb қ2=qha_}iWlLãf_HZ03DWJO(|bkv%TU/N-#][zigHeHScCNg52;_7*W,`NL2ņ~+Ɋ4jyݺh=<[Bjq0r6{6@|)|Ӻ?_Bѷ"l{>M+1lG9a.#_opC۽szxSYRFXOhBT4&[+2"M/g8AxrzU;TYW[۲i]-zD5t.u_p3uqZYĭ#ftd w *]j?rt`#v̛ XK3+<صצ*t^4j%XH>9 NCRK"eU-7?IfYK 5\k9Ktdk<lmTS6b7 Ow?` ;obY[DNh liʝ T{Q]dk5(;l ]O1Ԑ_bɥyrsfwG^e4Y51 ۜY/t |s{)X58+״ll`%T@[v3֓Eθ ԑn8=еv0ƇP5 O+o@6 �SAMĉqe oD3r|Z 'NAl +ژ-?4x༾#< -S88,2HuDxT0}&B@U�a0 s@,Tj]!9;νتr|L -4,EP~0|3*NotR4L[;\&T`+y?_EN0hqeRu2)'_i TպdB^#ťg\F!,ND[+ XG۟~tg{#mZq,~_5Eێ=r>W1 $>F fx_s߀P#~{yiSM9ٸ߼qi~O5Iu;]Bz9JlcUvrvQ&_ bY D~| 5$ˇAM4Wq%;^7/Cz@Lrux21Ndt~>S'E *YؗD09yP]S餜[?QrzS >`58}g�.jy™~\?ÜCK+T WD&,?ɠ)]}IWZ ƸV4"J/#^8"2 [=U[yT8a憖PNFۼ^~DA*оӒ!na8)*ѽf\uL9MA%2)]M1#E[D@rl[dkvLstAA88K=ӐЇ|2 &6uHT7e!BjOOč۴lh;^2[vuKs, D p o@|cD\Oj/k'd@OX cXzG!j Xp8_^TX6oMx_B$>BuO#:U=ϲct*N?Zu M{qY<Ky<\S|]m ,HN?4vZljt2/h�L< ,'YR20X_9dj!ÚK!K2瑬I!d`Rɬj&}Ycj`paWΩا3o9ܡ(ȥ0|sE.(vkBa_XJPHԡː|v޿`*w2KS%6ELn.`;" ̧j.T+S\.o?|T{Xkد=ꅌu< >6r nVVjQZFf1e+@Yuz OL.ū0ueٛ;ǎ,5\.2S~~aaδJb̟?"by$ϞtQUB7hZxD>ň?)7EEn5v`)mOP PIh~Iq_]�sa2,:DeR9رI4Xʀ@N`73憹4-b+/'.\/%E{jQ(B_EwKA^*&*h4j!DIS82sNSgx,; {>yfJJFh3b-րFfe&0N}$hCSS: P: "oB-L)C~2f6־ ֿ@k&a$[#TZҩ 8sn>Y8ozHxr?SIϧ77̹p\CU+wrp3úÇQm>n>ZMq]I O"6xѤ_P"av<j2&#)q3)^*'q}oS|~yAOAp'3lnK3]CZlT ӦۚL|USCx9o>_ņ�lw!{@4/plfGcN_;-1\rx og&9w[Ig9,̚uHD3zN}D5Р[ Xެ,ч.c̩# ά<!ծ mիQ8X ۉr̴\Mpֳ䤅 Xa2wVc6�9{)ajhtt7*߁X)ņCܳNAKaoj + 寗,WrH;@]|45� Kc`QW'.gY]"1j䐴+Ÿ1@X69>}x6dOos|ZQ պYq . 4| t CZ612~|ԀTsQ{bQInT՛n e6rŔJ$R>k(StLx.5c5>ל5+B_)7n$y5eoȧȖV!yf$eixj `7Xehqo=o@cZŞi,[[D>wjgYaXc*!V܄>ܻ?E ;-@X]0H}P˔Պ0p^6#w�~B-plL?>RA=vJ:,qAWQ.Ϥ|BtΕ3ǝ WV _-(k7[Ҙ8zg<m̸`C ^o0+,\5*e]]^b0 u9nD~jhkj[P2MEY WXg TpZqյ_ێ!2\A),TBxi\#rB D?X-շKKfۿ,)j {,oj0j0_q1C" ~du^hlNDJVb *ҫAq㌢'V:Gnl[DBckkr:r>r(aB &8 mώt|@Z[{2�u" qǜ}Or n2G =mךMO"{4t -MFlw֜5hrş2aWJQVGXy]$ξaPSuq ͩOq9ׯs [sPjK68jcАoV(v~/gVЭ_.Z![L3OH _%IoY-ᔮ8k6d՟KKb'̕&\Anž"iΚC[%$eg H4U8Lð܅q4wsVz!8{9@N*Ry$CFY-66"VriGm{B Q1O<џknDŃ DXg|a^uV.?DV#{s2ѣXɉ}#N`J T[SRG<aKiY9~TNDT ;39n"xԇAct;t#uټ5�˴`cKm>8^AMYSR9h[U!`?ϴ)}RNçis!IM;6{C( /xrk}m?dukMB>xop+Ǜ\֯Q%sFR>JqiIN\";`9>X݋yf'w)7FB8/ P^@+DKdl:$ r KAiSZi;71IrhAdaE)L(}F':[Roa^JR" dƳ0NCYDi>_ ~!O( .'áFY7@BGuy6B!j/:YѲ8 ?j*,7Z<њ߯EϼDV31QxliWڣT!-'$WUhAiٙfvNXYNx4F3{LC,'tbL$p#݄ÝcG<3FY"P{xT-2} \Z~t6sN)hMk䈅8ZMb;7ϰEϱ Ϲ"z` ~ˮݖYNBlA ⫿2Uy@c^w(S(q9-<QWG`WO:]Pߑ98|2%e/(Q'Bz%*2dx,s&OhUIL=tйЕ_rY_H)\Ԅoe8*oLA"n݀4GΨo#/4 Ci.x&b4VJ|o`;8V@³ތ4K?ck9MOToNX*&s c`ݧkKb å|R{F;N3 =}L]q0N#Y[9nOi�'7=iN!j-K}scCVf9> U){Jp-x5%^U#/+R^ښjZW_v?gf%}=%E>J>/t7rs5x@DkUɥXe1 էK@KTem/=Cws/p3$fGӯ*N BEP*s',h Aa'C{&w|(@F= f|2v,sz{Z=+uˡTF\%}=؃/!Smď!dUg> rݧzb}N)]Diܟr%/^s ].>W~O%6{|>X'ݚo(cw+ 5׬_YIA ./ vRKRK Va2O4S'_]E%;M"Ϳ3 (bٽ)4ݗ̓dW( Gۛyk$#zEj,ɻset>b0Jku%GW9B$<�?q ſ|42)pA/N',�T1KvQ㳋3e3(f3UB瘮poUO�1A53d敿 #V(_+U{&Y; p>S z_݆^�\wxPYl 0X A{9hgDvTq%K/k'J)9_-nd~JQ`Y3LKv R%AڻhY9:xt;ZG~ VHlb yn@=-';cN;RƩj@HMsuzBBA?/0MZ']No0!2vx"]1sHŬ3ը:nR] "9WLPr;L&89|a[MX9e±-Z @s átiMYИ(pKʐ *ɓ1'@ �5H w!Ž'wF^Rew1)!j+gJgsD\�?'GsRשTé;'.楀;x;H\Iqq54p\aϟu[&8j~RZw_WqP *: fVi0+㏓! ne|"N9*7rT!' QF[C|/L 5 }P^Y yLt *|6]P0o`8aCDMX[Rk_q8p^ >ZZ{K+lh?qZƇ^lt|Xݫ'mw UAgo2C+�uXܫōq Bӵcxnj좶4ڴ܀eDpuaZ+xN mjǂ][)W`m*8>WnzEpQ�WBÇ" [ew5pZ!W9@ZL-UIJ%rv~to=̫dLu.켃 *T(33օaڟګR}-Tt1ԄzBtq@k*  0,t�]B?PB҆yӺ'j.tLaL$vʎhcߣĖP 2h**WM}0{g} l=0\{i n2>K\?M)tlxw ;hvx?oނ~?ۈ E[yn>uɰ~aQ#[dB#s‚HKhz*}~'=tr�Z؝$eT@gٰl -ppx@p@D>nTф+a\lzم4tͳsij'@gtYZ#<>;dÁa3e63Ǘ0p>IQ 9ǟkHLŽFK$(ji\_ JPvg5 WCEÏRZB{y7L�ŝAp_q\�[hӟV0b*ǣe9N7TPNxcr $@gTlA(R:mXp^8|k!ֽX8YU]tNDjVfwLXeBX9j: >7 7Hy1@:ik37[MqP2pHGb9^0>ەulWRJrJq$a+!7( vcq7k:;(!9VJ֏zeY K_$SMŸd_rt nn (gjh8tzq2e΀n ^F{G/t,2cIP'ת Z#38W8%!]Ejݴ}ںŽϭEܬ+hIA#UeX zΝ szzs;ՉUoy~H-ҢZ+|Rc܃r|@ tO=>b˕K_ db!?fhxcؿ;QĔ WƙMf<=CjoT*K$˝xI33.pg[,X;6\Pq&7tGa/v(!pӄGvmNAUvC}]_4KGp�0rĹ;-ۣt;*f+=^{!b.?z5p@xӃ=X~b/SYOY0w@4ݫU5WZZO4mI9Ү~u59?M>^>w%8% 0R�rtd]7bS6f8U1/Ec_Hdsc׋`WS2HR= ym/ӹ_]h6)!B.Jݿh /}Z2BijN_k1^Ոx 0CbwUz}T,;z?{h\[}ma~MaLG?�g 8({p (?�K,%WS4micBٳd|<Wc,1k _o`/�$Z7oN?Q;烾xG \, hnxJ+E ^x7ݍ,Ou؅iL#$>#F $6%?tǟGB%M ˗T yBZD}S٨0S#o!i]Kھqd.(Y]ߴ릑gZ8:n`w|`!rycwL_hIQ)Μݣ=�ϊCR߹@Uaq<^Ưveˆ:9RҲmyl@blYOr<Գ^%W4^ő(c Q_E*3}>;.v* ZȶK @D ,^kA3FH [~v0Z:Dd%蒌<ܽZ~Ԟ"KβDB5o;y@("q;'D1JPH^=)VUCDOGC4gAH).PF3.RR{԰0 )IQFoChȭw"O~zÞEu};&f^zdj4o[8H'?&B*EliICHSwEjqiZc=.}*L[ HVoE&n]ppozp%ϼ{9=n^_Oi>�Yq!et3a{%oɕ/XJx ŕS~<VXIy~Jf/dUHblx QL^o__˾ Լ'v|xW-C,K]O<jZ[pmn&a1{LAv'ŠƔׯ(Dx,[ eܸ>cDxs .HL{Z Ro-0Ps("~. 64AX2YUNZNJ@(j{\&9yh4_f$!kTNRb(e�zhmq}gWMAHXRioT~끰Gdη <G1aLo d'7E/cr]�|40bɪdߙE,p\hpΚ`|D2;^s$!C CN1k\~Jcrc 㗄U<"swTm`q# nP3uزG 3Yؔ~_+^+TQE:X!԰CaMuө ?h Ӈ\ҙu' (r\LrˇY&Tp:̩mR ?1*�:d x-U53t>Y<l7%zUiьrU)Ѝ0ъqwUޫWWz] **֌rMQb".*[ ^2\G8S^}7 koMuv\UT#d W;|B#O}u-V"l>guD]a7Ȍ&}@H>r7£ƑtO9̴Yy !LS8!$D\0 w�^EX?g!s;2PN۾἟9k\5ӗV/LB-uő]Z3SQ{1+X9h?#%dT^GZuM@5uaXg! (3U? {O-+zħܬ=sX'.~Dp)4|ѽܺ~cHy.Kac[L=ts$f?,򣃀-ӂOmG _ioeSZbiuZ\FN%uCH0e!d@q'4р5 *qkdye߅e0T+ f?-{fn^JdSy>8q/׭&k3u4(* F5LޥϠ9]4pDK/ЈHi\ѧt\a9V&\쒂r8d9m[?`(CswߔR]63betK怦dQN-ʢ]=gg5Cf)�ʬ&Sc 5xTy($Y*cڝ:8$J 0[H;7&$d|?[f( 4 ?b ppΡ,q T((a\mK" ' 67VV cQju\:%%!jY`Wb?ٚffU+eFA#S&1‰wfAǣ\2 JyDSĆCMr+ `Ax($(˦QZ\\~]jJ}t&�׉-bVE!KQ}%jd2N_ۭGT@5 q9,F2B]i_#V(mrZnp XBD"3v=|b}>+gwZa7G�5#l(Q[\Q'N!|R`}cE*$>9(2Gq<΁I{ !u.vѲb%yBxx7T�Ɵ^AKO*io["tnTyC͖PZ'A3'd:�cKG0Ӕd+{lOv0z^ n I˃9:1e7oRzs ϣ;r~+W%X(oZ{*9G?a-!:JrU�5Ljp{,lέk & PBX:sI4ⴔgUG^YoQ}@6W1x3z}œkv-e͐ CB@!ܒ&|W/#FS2[IfC l\p\h8PdQE _ZO79c1wUP'C !KnfDyK~Ȅ2t x-*XWnHA4 PڂaĮY:Bug.: 9tkHeP}n%UE5!\?ZNS_?XL9=^喡P5HY<nacMXru dq -ODue Íj "/iVSPrk!;<u*vә :="u'BUpJt}VUg?|η))T_97@(2Gj�haB" S+ n`TG{דdՓ!޽"iJQ\ODaVB)l v GM8Ęń$HK\mn`5(6uWFl?5.qɤMN2"#ЀWC 6\jaǴn5A\7g<޲?%f K] nSl7IZn"CsPk7Ͱ$XSh_.ݙ-ܫe8:.a.E3]$A~bX* rwA+M z/DK~)Y.ŅTDi Yɍl(;"WOgyʝqwi' HJ=쀩| lvaJ %ļ5 / S93 *?MPr?c扸t%T`}RH>:A'ӽNV"蕑4O0- Y۽dfWqG$F)bpWl@MAB-VqWZ:N;ig1GOiS:Cz4%mREeQ8Kn'ݤ2 +4 :dmVΒHCAgOɌ_dk[c6TZe(Pt0Sypj S:oܻQB.eqmAL9#5t.. 6 R#B,mט֐[SH΁jENK&UHRٵ8V H;i4@}J.wk hح}FбJ\zx^u͟M_}a4ȉEU.c+X( ,( 7MϒzL"ͼzc&׋* u{ͲIx1iZgq.U/bg'AM=L31×&r<ɕWK f98ĺG61k)x*hsE51VRvB(͢>M-Fy9#rVG_E}E|lZp~P7uT8mu78vQ'!bLÝB HG7FQېk3gRQEp|JakVvPB-4Ymն^ڹlݫzǯ[m; FdyVXaZ-t-Kݘ0jُx</ʟi>§3*&NȐ]v1y$lgr5Rg!>>& O[1,;˲�^)H-[4 #am *c(X({9&楿L|]-RMkzØD}Lj%7U ]NSxhUU:gم9&rzLj-yJߨw3{10kAl+cL@@'rn|QHڜM^rFa�3V7{xvkhF䰣u|^6ӯya"7׷㟰,J~`u\>(3iAc8ٖLߙw!N+dQ4yE2ڑ: )p:,#TO6=YiM,%'V{{a.m6st \t/<:�T!S~Tw*jR1Dg@n 1ۘPM<~kh( (]3ђfSR~�Hk-#fC&2/\xyPY^,lL@v\j*mNJ$7r 1d;M$\T611CX&>tbQ$s ;k5[8Pt&]JZc1ٮZ/?A+�IT{غ5`Q'Z@K7Hp|4hxX*C:o _γ@Fy?q1uh޸D%oF aR'HɆLcs$'Jپr$I"3M3g<i'V=qCPrVP֩AVJVX<n#/7 LL|DM<!~"Y76ϯF 畹 gT$aQṋ2ա癳-7؉u,V̀#pO˶k^MQtg,vhshMOБ#AMOШd=eZP8c�K``g,̟_/r.Pa@ UKq~68<*h5GMFr3itPP 1SB<9JvD&̼҉9$p# (Tq;$oItMyЂFq[}<4^DxD貝(ZC)mЍh?Ģ{p)^~}ř9C,s1޵K1tɥ [g|6Q=GvH^;f91J<h[q2qkQ%ep;jT?t^x蜾z#Đ 0P~VֹiK(s$_Fe 7RPRG'd4t<"k:$gⶽOD*»,(~a zW/!81q :%=u;Ws&]G5i2vA Ǜ!B29Qz*M{z$ UPGɑmHƻ(cCR( ^Ґ:K}lSK "Y n./R+ ʴCfk\@ʢ㧖v==D[lښF',ZhfzaasR�\65=> `ߎiwZmC֦fdA yO;)jnRE+ !|k:@>. qzJY-ҘG^d1ttrzvslRl->;C"!"͇4O7w y`" {)I`Kw!+ږZPI۪YszAojZGŪIZ8MlL]$bY+k|+,DO1%ͱD70e·f2ƈ9/=I,KB3RHW$լhuU@Z\"PD\`9)7njuKTw=`.c RҘw0U7lmY.p1ژJ]Y\I4 9j/R5TK OuVBE�䈣%_q>LW"qԕ?N]K^˚X Ui];G<s:\Hp6ӟνlR˨9 εNdo)4`֯!4c7!gZJ|RUo5D[X#_``IBAĜNCbz8H^ݳ~đGY(E,e0S=?ߌ*B;[TŲT gLZDl8_S;ip,aipX; j?IA%-_B=-'Mn`6!ٓP() raoJy)Wܱrĵ5NPm h9kDR<c1W0Nݷy x(09=r֩#UAk iEZcQ#Fe1I�zGRQ]ðtlti-Brp</X<s9 DlN4VTTGf? o}Bm:ڎ#T#[A[S{iH)a d-jaN–VDH*�KB='kzދ{hU_y|49:1g/ 0_�| y{늟 3ͦ]^Q;&2 :ӸVۈ)Ix"ӿrUSX"+O.=1-d,ArӋf+uzae>ek_LXU/4%cg( ޲}Wim?J]H51cb]-4t+{j9G_Ŵbb|<dV+cSz02%[ȮHl^71RQ撒LBΪb\m0p@g %T0I^0 @Wx(JxrsSm:i!E#5܄o[]qM1D[QwMr*-f&RKY2aevܘaַ=*�׮ɱ{ *`qN֥R.DzZ�z'U-@h$L_2Ӣ"Ik=A[&!嶾<`.wI'K%6$~˻8G7s�CU0GWwvQX@s*gz\B*'Ad5TC ׬mo�\BO}n尒=IE-ns7Hq.ؼ>l(*͒w 4İFE>j0U-M%�v=D=r9߲\;z2/]?nfyI*Bح#^YiQ[3TG6Scq-c J_dy(b2),.]N&Gd"6XWޅ c!> GS#ɲi (:5U#[to\uZ|\%RZ ARR?U挺V⵻cAޑ?R6hB 5խU?qtZ]鴀;NYbچ<xp6GJ c]Y;tLzwcYA#2]~Q@FʤH~[Hz녥qi<C]-8J]]?0|k/փ":IȣB;c2�7JyQdf#nEOms+OC(%j?s-+f<2CzvT$~5s7QhPQLPÔӭ%dEW� o!dYڢam8U6(ϟ |^4ҷ f;.o e2ύkdbZEM~+~m6(Vt'\NW ٶf)6x}. ';i8R/38k8X.Njcko47?[w,P\]qt™-ؒ."saLR`b.n.{G& YlbhII^t!,@c6Թ(T'{|^>@M6n#UWu=uY˜GNqs+=[W42VVsP @w1buZra O@#Rܟ w;&6XmrՈA\d>@ Ms`abJPfA �}=LJoko*\ThblL׷r[Ì0ȑx5H#Է=eJ9 [VXWȏElFд>c؝Ǹ@XŨEX Yf _ Gӣl $>SKo]aRBl͉C#ѱ=Rs�@i4t)Ud L.u'DCD`lE :"iH mߣFy:ōx%�A;P zU\~`k\m?޾X[㦷70{xRKQk5fl@~bbaV-L1kH7E!zu:?y5Yy>HBxI`6aQ7hW6rAyB2K+$(`/H,M^Xe|fE}P)"6‚UW3ƩZYVaUr[O?$r6FmڱqVqJp8Ç�z xeLiGP�,s9X&@ ɧIb_IRFIWWF,RT"䃨o� l;ygxe6r$K#q?kj$J=X?'Sp� yһ tG3D2;|X,*-p=Ms[d|Ahᱽ.=ivGmK/ /t_]Q?lRn2>$q$b" s %n֝ 8'"FEImtjr/R*/>I>EdTTȞdG@ Wo~Ȑ9:9:hà\-OVafx|T,� V{Ի),րm�u ,GJG  sn,u+8n|g%Q%7#^͞hdykʜ$()qGP۩ZntR$;7cϢcK ˘ĥ6ygK,r=!>@Sr6?#^O sr 3-(RIuP8TICf' b�u2PGjHsD~gQA !j=Գ} ͥVlU�JP UIyUq�bA&Pe3e U f7SJ<v6ߥ\e,8"2F<xj@^$4u [1(QdCv Vo̮~$pR' l׌#W%nG\X $dѕq=FC\!E[t8ԙ)��$-Z:#ZϷh2CntI7mڞIGaˉu9Qs;NFBEgdHR#*4Q~h9$HP;u ^z`^Lݳi U]EWdWVBxPn<}FWfAKe2BgDue9gUy BF!)HHAҗڭ$8&JTn]jUe3ׁp'ΗPkm[+Lt 4 ГaSC)|ϥB8,!ׇO:Wܯ\s*~�G c+| [p^+H?oӰTUYoJūMۢT,fY]\isV25*L`Mzr9>,Ut՚ ***+|&yC[0i_oFY8S�z s,ĻP!s{zELhy>&$? .MWf_.'CwѪ)GbKh!OҖJ \(Kؕqxgf3_j6$)lή6shfj&_I3?h~vf'Px``u_vIsc) ̲(tf e=NٙWdسʸriI]M/l˼)gHL5&N?4^w߄[~nMMwd ITk( )ULTW Pn-K>I'?hBe`䭯S)JvRbe7%8 Ow*^FRU #I\FaIK籖LEN |6FnQ٧Š2P%r #)89 qO2B9;h6Nr+2rwrK9b+!uXZrM<3Ԯ:ZD~qob\sww '\cS{Ml¹ն覟QbxKGQӅH5aakWs^ PGdrfK.lC쾝?г:zG_~(\*?>v:?SVrmԆlU6Ǜ72t,`8j^|Q-A;z{@,=׏jC YHU!�h%0oX2# ~8#MP*F=QoRޤ9Pq5' \,|jK1;&/gRo@A ZoD9{<8 Odw ]Ujc8[PwDžvFR> p!& v CLS7lxaR\<e`1VL98`r0vpN⩯гcΜ9G4or[(a>๋畠}tՌi}$TP(W{}%\�xrV124/6r!WA$:n@:@;@d1\Hc!>ƟB(}vi?ư?~Ay U"SU0|Hl$S U'8m>[H7M!WĆ Q! '�H7: x�80XoeLf -ʉ Q%BSel*0 ,}6 Q\̂iT`9-m*Er`m΂`U� 'Mp3. )MTW,0,6 Q@(�ͪ9ui3QEeE7y0J`)S☵Rt?O@uOpXq_ߞk-e֪oQ;V9!1OUrݶ$*+ dRAI$uC܍6L5LF-6[.^ ^m h]'j;wݻ5%;ze3y7ؚpuh6Е/rwymT?cs9z^պ7ku3 Cjdr< +xvuާĩt/IUL&Zx73=AJy>OMˢ{ ղ}➇gSR""S%dwҗ+r6x+{ˠl=}fK{ =>eNw,:ĵ)?s>LW>ιHg+k3ܻRt&+S%}Zgy2 ,Zy%K{e<(>߶~. 6oSKKUںW]$ꕚ}fnu {lI<7;UJgS'l>MOc{5:굷|TTVVn;0}/WSMi?zCw)ߥHhnb>Y)=c]ŵ*NfgﰊJץn.<˛oZKo x]&Z:e8\-7 ;snlPwG5;涚~O{湬5sҗ}}O,zKu߷87͢RWlOc};-4Q86==s,$$4;L._$#HHZxFcSv~_M%_I[:)^aNRbb1Jl6{]b\}M_l}E:+_ÜS->\GyIjTZ<kE噭)pi.8oOotwߧRz~D$,x5n)2^*;b~]5EuwkQknbǛiS}~f;lﶻa:ηt?/tvV:]L?cĩ_eS{fmv`0X"jT|w䲊Y,k#_Z_S u0o7Mƺ֦7R]m]unIIKAe{e4i)J*+eL]KC6>&cךS_;:U.oi{m"/x}RV U+fjxlRv}spp{S_X, ~>Dn~ SnjjTb> F?JMSy־nKx7M7"CoxOaM[|t]j/K1[F~F+ةwh^KF_u;w;0*=CCiWzuyE,6]e9#Sx;TMto#S1eu(ƕ}pT.jwwxՏeOwF|ߦO[w;MNo^S>U>n}S<Rp<N~Sy=SC/Y^)NwwVjc5ϋTv]wߌ۩33n:SxJd2L?H__/YSY4^)>ϣ+ZT/kyuoO{ޥNsFqS3|/K!c{%ODB"T (ptPqM0rUUΑ\XQFzS RUpzqQOm7 0?O.DqpMqƹfc[w`iPP(x_У>u|gkV[G1o1|JEc W#Zx.Nwm+1}"W)do[[}\TvBNڷ_֕4jyœ¹\Wa#*nm I.U9nG"fwVQvhMEOOPOMEr~^^*Tqk06%Y;6_a{v*RS)ۇ|M O[WGl;Ҕז7΂ڰXp>(j-[6lt*dwA\oobՊE\,NU-ϴ~d T+݊VbJX|EJJee~8=Hugs>Tbjwʫ].j- 17PKvkR͵WǶߛ<\ª[Wfܕmzh'yxl@UUV=Mv;p%ry>NOvƕ%%szZSNb;T|}Z=Z Scbe{+Y8v{1[}n)fu~)e???egnn,l~ۥs'nQ_-jE]K;g}Kg_|:LGևuz0 gTx增 Г=y_߮EɿAֺ6&q⎏WGt�<ONks'ռbA$=Ol}^s {>9c oQv;3\M&:-Z,KHă#˵4yQ`=45 k<w,y{9%iur&%{YZėfW߭TU #Ji"p4RfGi!Z-j4t>y`aEsV]>? o\ ^b~3Ca u)`\ 4Pek%)L xFd1۲#45 [F(j1t61,� l5]i)=Y&"!rbO VÙ@k7�Í<pJ?A 5$ 8Bt�e <,q:~Ӡ?i9S-,`ieb NIB.Xji˽ƋbOAh=`ٽݚ>-q0>B4Ab'A#pc*z!U9(Bf\aq[C/5O4EEZ%v>HU2O?͢hz4\-$id= @y^lO=3A%qd,k_}y>1@GΓ 轌5nR[_X-8өP"$b ( e҆9pY>:OaS8ayE0 {) - 6R�[BHU|eFHGED,Nz5ohv닜`H�=+֟\fOAj\N.'wۚ)ۈNj OJ y(!M A:%]0wO(] Q2r5)#`\$-[P&  jG2kɬ?kZďR&f HC3nQ&L(`TNVfcb9UR| :Y$[;m@wOU+�̸b}@~`#k@,N[H:wӎqİ7%vE兴QZo5*">JhmjM0>aA<^q'NeTJ~8ơ[Ab1.Rم7-p50�SSm8<%'?>0e#<k!?Ҹy)}GN+a0@e.R +Ull+g뿦\& \$rW$4uMLc_̓|<{!YcͲCit' ãk9J--6̹bQT()z{J3Fo`&:o9Lys; xnX]ӘT~Cy(\ڊ4J.=R/p.e`6ƅ b:,|H$_YD){a�!e,ufA>/`F2/'V< "[XKA5'FDiҨ @xeAE)~(4ZGR尿ϙW$?Z*8d CZE%KvSl69l: Vw/(k{",Y![{FDNcEl)}|J}=f>U ?]/|`HC|ܒ 3BA>,8Z\/*<DNR"�UI )r"fj/.:!g>u sNyIbZ6֏P�NhiR +OBVS$WyP!@ j|G^%Buie[1 I%0Z'Cф`{+Qo Ҵ6~ q.'8ϭ rG?H62B` B�>`n[!dr:Z "xI<)r#uOjRf6Qa$QрC c�t}D-.(<�*% !?_h|M@+`́5Bqޕg/(D!m^�U}MEa\>݇2da( E1,p | �6M BaxQVEO.u;/#9bWbh˃.e]_ǐƥn8%$*i9F(M}oyԩ@).},S[/]Qc&ݹ$1ߺySGä2.ߌaG%-p8sN =˚2q yӄ=K8\&S>j/u~S7%6@2xFR4 Oƶ[&&rZdU8@:g8]J\Aggj|$Z\=+2tvO`)s:^|rxP'!=6}TffO6X~_ W }6Mx~6]fkT ۾`86JGNJWbXm9%.h١R zX$Z`T ?5>U@!B@Ry &)Oe>,JzWT$>y$sCt >Pi*<@^VJ({tp>-:>+]B NB?v*pVc7Ȃ)wۑ W5lP_ ß\p*{xSuo:e"9o&̪|`9K\ʑ*]"aSiZC1o#SY C "tk̠A2@{,d- U�EwA>|˖R@?b%ޥ#e ୘4{%!|\Q|Azh˅l)U#Ӿ~ڸgGݬä<pD* 5iQ ~ X;@9/WgE31d-}MV$m,K*^K$͏ߜd/U dOnd;(Bħdz,EPݛЇm99ZΞLw8~pd~WP)͘[ 9fwdG6r1D gl̠M@x+FL Z I+EAјvl( Z->hHN9bg `eUHt/}M Έ$"ͬf^fXW1AwqrWn_uhpjN(!ABR!@xol4F2]L1.uFN'Ku7Oڐ@n,X$!Ģ|)}4(2(:Pn |9\ek̎Yͩi:J=Ě/nQNij:tN(fP˕roT 9< ޑ&. Y,2saTMV'"[x{)F%^SAѷ 0d]Ƨؚ\+Ɓ- IC_63$ 4Q )FYKeTsdB1,] m=+V-&�)k*$BvZsԁIAN JSVu)uF7;l3m ᇿfP�ʚ0IOH؟7 }ˌ躭J~T1z}!kXJjJ*VwIOf I%P(e.?*‍a2.~آ2~yJAS=N3 f gxʑɭ;}֠7m]:JT q" ?矤 )q X-1*4z0mVgz/>KL`c4J@."P8/;AKF`0R -Pgpn"TKvI}q)P)L8\CєA�}4A8_$A k\4}3'1W_pfnɠ1A5otW$]bѓJ+@hJ+h/8 +!#'O=#H/a&rYdZb7^;аifv+[;k =1vUQfܚ*] I4-,]PD ՘FX9SW~^WoX[k| 8P dxgJH #uH!W4\=8^k +.mS5V6A-ЭكcבF_ �~Rb[L#rhcP$^t0/#Cş0"d7 ZSR̕T]9'߫Bkj6cI؈*Ћ(%ݨK r ICp.a^D7(ǼͨPdf"cf.Yٽ "pQ^/^]ug>2tF1딁w$`緊E:RS2pa]ʭ(2+ 12jk sx 9$D=kf+KK1UU tOS'08'bŁ I`b@L2 ܳV7`=Z@Bt~u. @E쐘ce`]vャMK!t -NmJDaԛ'1%~KsB(C7MbQ W@^&lv$.'�00<c13rZx?4A閱PI>w glϨHxr[fjf^v{G]]7%]bᒵSv!80O{$=:ѿ-TP?VjyhH;b IQ[)' >( %;Ou Si? CH`=?gֺ&Ɔs%"g9-$1BaN>r iu fzrCP Yrxc9jH&'+XH>'~e@2^-h8<#c 7s݄ˆ*з#toz. !, [|I?Z'SBG8]ѠlȨ-m~`,EI04K6',ґ,. =;bQr 1  $Ak_.^^F8A 5*I(P|A[Y9~f,@( 9w^M`DC\.93q̠hM{D (t#PhwX!]AZp狖\s^3j3 <_r;U/H̓C}XK"a Qu23ĉ2v~b/ٍ0KENOG]Գ Ui; n_9[$9 oI,'}>~X'mD'4s/b"UoQ\%.H.Ć/ -cg%mw8tsf C˘ yĥA3M>*dhb|McgVJ.n]A`>;A,zTQŊ 0 !h>/2?D*xdi5gh&_A_x<] 7 a'K Hg\ w'Eh Mq` Xy M\4E?twR,X +d;PVCcd}X\ 5�aГ1}8Ҽ]N<Mgm<݂OE\r̾=DSR X`s)x _a bMtAi~WC&<`1}VIIotڱpJn8Lz ETz&fp]!F{@3 ~Ep|0+ QR�$MMb }-߮4P+Z>�c+X3t4\Iq*8E"p3+H,!3ۡ4Z;efkiT4F˒Z<ST`ԝUۧCC=!Si\\kzՓGk S\$̴G0CTss)̧2i�\TT_T2Beѯxnf@Rn(/F '>:M1Wm|߮/Q@_Pl7Xoc!K'dRLXPD>޵ yQdMx\\" :XOtj&^:IZ..Pd] @0SN2+H)bx+@T m dv1D@7V2P1K+5%,4 o!) ]3 ̢qϓjBE+ 6׎4B�y'tgC3&\|pYi~: )#y5|OA-")8[>2\~>A94ttf9h�A:@vl/SDlϤgLq4CT[m#2 @dۥ%Jsnr!W/SMΦ>ҟa6:c3=}B5�f$4:\8GX`G,z] I4qq,z~nBox�FI1;}_La1b `.kCPLщb'ɱ[ tLx?6⤍[9rAQ/̡'??nMJ0梻z(LsLg6RpI]Cu B縤H0nQF*Hюi;]tex8c&er" 9„!⮮tM~1RY`L~4/bː(N;M~ L5XX77GmMW/:b>`^|P9-v‡HhdF%Ib(\tR*6#}-=<S_.FI^v$iM3,@9"}.Z׎]q| p,") M a;^hŘ088$8,0%x 08Ő& MAuF֖mJ i )p+^Ƚ,wnP\9@mvurCLu v䢼-x4Y $R/692Dd e g15JrA~À -- oCn%0Mx!tGuoP/uVc+ZA  ?K\IY.@$.~Q)b],zPJ(3YMnI_7ixK)f3>7t~(�]IX1b"A(+8 bsDq,ͩ a'}M z/DPWLbapPWY{"A1xJ&Ԇ m]�Pf0/ǹ8R)�9sX,(OJPw9a[) K.Dp+1|FDMUkT9OT0JEڎVT9G\�epi=$!n˅ n+^ni?@q*m�TJ~F)kY*7wO_BÀҟqU!*SpG>;Urc>-ꯘyYS5@Uk۔g(*(zq2T(x{sE &0|W+"C}bW,>iT'Χ[D] S:yb;Uq vy♴~ 6xe ~?7 v0~pʆlpawOt{qEipND.'`1)`Lq̩O ІeB)RF bO$~aѬ֔,R#WL3X…jsX|ī1JM2t,|e)ŖVdET'EPh9@qU".("LY d)&Qpc˜_T,`ﱃϖ ))B<},`@iN 7фz]Wx72DqSC a7}ݫO^]9 SŜdܝ[Ü*\ &P8cƃ(Uhx_]ıwEDxV�;2ϛ/zʹ8r'&aep 90"~>}͹Et=@ Iwk6NFo#v5p0WZiO*?uUv riCgsd ]K8 S2ttз~@?qϐpۀ3bj~^::ɩ\gBvЩҶYϩ\i%5e)+4h2CqԺ{BRbuar^٨qz'4EsbS_׈k;/1z,[נdls~ ;ke|P/zDaU)gh7bU饈TVՆV&G~#Gd~h DLdSXXnO XQǶ/R[ 0CaSߩA7=av\/#gMĚ71ʘ2&+u J匧\tN �_Ψ)bQTȟLȅy&I$5OK4DvMFEre}/O~:A%U2ͥ/>Ai/ݿxAX5EW/X3 W3ZQJ_nOu ;6ZRclѤ|@*rJ`E|nO&&�84�ţz9-MZgH8k‚2CxTD`S} agWl)-C{[܆֪eDxD s%|LMfaMgS.a:P`D >N@.p?V:$/:<δ:WX4HmF$:1  @ËA/mrD Vdqk)A/iS; gLkˏ#H@a+ Fشu^y<(4ƎIq=9|IA KyO#9g^)0󓞡 Z%y*ami!c(xh/UwO;7=ͨ0"TީzKK:L!-) G% Uɥx2p\uB`:gw9b 2ݢB%٪1M`?^FwNftfS2 9~ $~MCrCvyn?Qg 8 ҧP =񳃇%+c"q@[_ iE{ bەP+?+= F'6EC# ;1kP!A"MaÎg1u30@k\1qc#j]8_M6:8&X[V7;^ߘ-4ޘ^}:9&W^\e1/°GӉ6"fTօ^Q)!ÿBS`tYEC~riLe5 U )R�JfhG#h(lg$fkcme\hRpџ\OQq4˲ԭQG-"3QX?:2& s4OIzųKϡ[pV[QM}ҺvͰWԅ1K;&p+`*eqM5%Tk8/fYeiX2D-@ A|$JQ+y#{L]x"W W/smC|B~p҇MQfplAû.Ji\ɽI{ W^ ,s [&"_ "A^N#$uF_,:|n3%ca}$M hDH~cSJ&m/F:4C$"C.&a(Wutk5$ 1#$:# W_ 1WousD[-^4L3\7t^36D5EE˙:β;ǘáE QAYRs] X:OJp4(5CfSZ:0;:rp9jlW>5ßOߴ9[tѷIsjDCk~+�*V߫:uŀ'(%7HAx� = ͜<^/ӱ)ܕ?/WwԎT:|#;G7p9ɇHάQUeH?ӻ&5݊x2-ԚYuM6D]+[I= h)NU+K}jx<͌y~i"b:nx˓2$lMC2%!e?>ır+%Ǩf0nO[t.!LΕXG2mp̊uDh! ͛B^uј<SI1;c8H'c2|t"qA( d?aP;!.Ax1 j΋f9Zz݆.#GxtrXc^p <'{A%v=w txOqጼ(#ّ Dky,=gSK^Eh*;�Oe_PҥcsߖJ$[dRW4>MSn81.i_�qWmE0}y!4+*Xw<5\"۠t%GGT7;V7`ʝrGrwoac,1{z M@ 3EqNlh`bÇLm o~Gҡ`FyLBRYp:Xe7V_S<BG'd;)؊+当> ,wmi� 蜧ytLU[Mpƀ5x h=I }ϧ5B^B4 "/}O}MKVs5;n<C˫}7|MGmMdŖ_7-.y2e6GZ %GO];U[RFK(wūbB^ed !; ?wVf*D2 `̈3Rs%TK b9,BY?]ʐ*8hP♙b=e&/aUҤ!r\FuР'i"F(Y+)IԷ2+`^rde{V�@h4KpkKBM":\(5GGK ~"hM33Ƚ f0~(LH^vf%i~UjmBԮ,_"u7?_%=Ϸrif h98;amQ:c%#gahr@pwRBF)Zw :['&̨E否JDYIG~ HQaL1~=)u#dzĨb>3[aN) k aybph~4\ "RP|-TjcB[!(>;E|T_J"TA^K~os *O!$UM뀥‡Twtn4wI#b,�R ;PfAkl| \oZEC3f"Q̞&h-Yp2oւ96ba~ 9s%ÖI|sB> >{3:S  *`o.kwnr y\ԑ=ϱGLU"Ł}x޴$[ >y'Ȑ7~A#EL ]8sp˛{lʋU8j'k׸MQ%o$XUT5P%*P\uFf\(JEy>Gxr &Wߓ9ρT~ L] 0`|xLoi  p V:4Glr 59,m̾Cl X_B2B>WdDu¬u C*+&>SZ[)*B<(MJ–*@Q @Kb5KיW'T?S¹+LAfMd+`PbB,< A,gR <d)O\B^m(V<E B-&҂"8Buos rHgFYE';s"!󇥟$&|%bg{l.;4fji?I%1.�b+F<{=]C[:PyECAw\%0(kLyrip|uQ5LVWϸky_;!*]\Ha.y+CR wh ej ٕ*,ʜ(B*a)W̊E,3(I'ʓGOe3XWqRTj:lނXKNOEF~O<(VM!Ps[GJE,O,eTR%TJRGJQªc<RXҪZJG$Zbܕ+TI]2+TF[TSL6U䧢E +0TZbe>¢M\ f*UTrg^bJ+T9\2%l +6VTXR%8S9LE/X)\:Ntƚ+"((u*,%`qGD*T;�"|Rtx2SyW�Vt![2eC*Hrqs$ME#.Z(L%2n))TjK uJm;@>>ebdbfǟ>} FVs_sځwokQgfZȊ-LLa4ZUcKf`K:"QԹX-.x2 '$'gq-AiBJGμf& Y'Ez+K8i Y$4Oz)$΃hgrmeFͩ)9Q;R,,,=T.jzbZWkwX,  dYll֛Mo. MW+suu:;;]{߯`x\.#1vG"?r s9BBh4GڍFWk46iwp8r9O/DDt:QQq}twOuRRo//_ף=oOOOP}>TDC4Q]�T^ҾO]CutIgR"RɹtG }Y� $-5�/(|5O yHA A"F#Fс'Ha|$b0$JH$$b$F$ψ44A RJ*�tHa҃ |҆脉"Z$"^s$H$ OR4//'5?$|NpV_I"F#^|$LaF}L&Ȅh�)@(h_4x>*i�ן(A,>? y򏔐H0^lg!Q[}"EkHRD+) S/vLR)H H5H$Đ �@mRh *R0_{G@LR(>JF#^#n<E6["Rg!,kul6sGJ#O>8;O<KL6x:z$ A:PLB_1HV2ZkRHKaRF#[_dWh>jE xLp zG)fF|>TrHyh}zA /m @kD"D"d%g{64i al &lh%b4B05 H2n~Ƞ_^p�jd)"#_k y‘t}:Via48bB>N6K" yƒTua!p5V WH$NPk �̨J!YUH� T! l$E#JĂ@>%h0+E2,Ю56Q|aD"` lc[-Ѧa+hс'4 jcVILjhM'F:PQa^AL> he) SH)0 $ zAk[N86B^F ѨjH>9Iϔ|ףHam9$!Llo_5Z SvԌF/BR4F @|‚NA 1Ac#|l೶;TϢ^sJInEEQSFYhN-Y3@ 9G/fRX$ LJ)1-""q`FG % _P#%?Pp!΍KeGB%%e!!6C"ce,i(ѣl*)!YJc2J" h23Cm5cdKeTLrGp8 6BX4gGElhىBThA1S&_ D#؆bIE:]dajJM%VB1>sXX<:ȅFFL ]åPU)(a5eLsT3 �->E]m†:HT cY ITtz҈64EG,*[>ZkKjre P >O:!EjHρT5DP28UvjLukHFi>KS>,GIlVt_;@ZK1$ j4I-ʠD%Q>?^IMk]#U* iQIa$ЃFHEkLͥF (T*- ͢E=Wp͖ƄU4T 9F8yGP%`G%>^5I L Q29hO@J'GcEY')vK_71癚M}^d|gg_: oiu ˷yqvV^+5r~_/ؘlvK-hڭvvkMp5\S¯n.g'7GWkz/, 8[12(Y<Vr/w)S 볕-.IEqյώT7c!UsYvnvo=T5?8<㷆=qkYJCߺ֞omܛ7޹j7\tˇcó> =7,UUXW\]RXL\[ӷZ=Ku|1 lRߘ5l{Yi*+C3(jbG a*7$&aYZ(||/b{実aVܟ{pxݴTmy&]Yb;阯0dL8{=^jʱ|NGk;q*9WMYԙ{GY-1U/W XqMHf3f5E/6vC?b\Xo4'EwUooxr/ض&¨X8} _W-WHVa. +&ܱ]y>Q1<opzRxY-/1y zd =|k$F7 o,* ?s;|'ӻ6W'԰Ѵwl]fgטp겸-.@of;?AM)X,=:o5ptO~7fjLGvYΞ'6=׵ϓS-"rS}'v=%XwKZ|R>rGYƞfAύLEܳu|Cc[7ܿ?�U/?m5nqQWQΡ**ͽK^ؿܒ7դ= RkS QVu2 a֋KjMWEd /,m!7hc}7v2ͩd׶fy//?uxj,+X~5يzVtۚ05)9j N_:%YkiY6Xv~kqKx^ Ӯ:"n~o2F6C^slM[;lFQcYæbbzw6!|{ȡߥ;w3 ?ɈpI5tnf:vf7!q衳\zޖ4N?ElZ|\cE%.c[\C;j~<jqcIp+Q7/Gly:>WTGGo߿^!$%7|~TSiww| <>UT`W21|b?|?e:FձWup eᘮpl,lyi ^W뜵Yޗ(e߲\K$ao$u87Mmsks-w4Y]7ߚ7_۽YM r1õ٪{{ONO'*Zh.wh[m|UF k6܆%Wk_xװ}Z<~{飫k/|pH•cq|-mvql[/ߑ4x{[QI>,>Ɇ{;Us<agcfxL}qJ{U{9]ib{ɳ;9Vʋx>ϥ/UoV8rZR|U<Tu+`W{*:Ǽk]Ӓt^~m,-\#~[g1vf^5y /覰ٍVT „DWrz ~Oqr7~-cXu%䚷xv#CM[}9_Oη-*$0kwlix*ȵҦYj|kmRŏxse=Zym+v]1|=7C n]c&6kЭYq kPkoϭ\ X:x{SŊsWcr&CYի9u[XZ*OusߓSO>p&F#˜=fgG73Fn/* =n$=m:9n_dαߘy5v c~x='vX&M}SUM(*r8E=#hjPݥ7`xU8^:6n-ݩfYzM^xvxc[==t'g:RjUږ{uوê/yMwzd+8UsMqF'3wF{~8N E@z[\l\|F{]t|t|> ܎n+[it*WpX(,*v:Vv#s߶y:&:*1}w3AԴۤMy5п*[Lᥜ݂ pp+x,uZx_oۖi_-͓w0γw_dͫWowX]A_C9}jP,YVl1Su!2nryp֞JUᏆa{|v^YrYojj+VM>=R1bfz+~\,V)֊͹VҼ[ԹpTnc*-_9NK̜2SzуV2? ~z̭A`;-ͼJ߮ib\]4< B_CX ӁJkvI&- Dﻍ.u6Ry^]pkW YWS+WƢZZeo1tWmNJ#xvK>-nMɁZ|0 ="b8́٘Ub5doTo疣}OEjqntj>ݰ,݈kGږ9L⬾a+|z37K.Y}M\-:MxZՎdƅ_!a۲9/g>1|no_Merk]Qkwϸm?zs ,y-lb1=7$̗~9bQ-4r*^M-e*R:]�݃csWn-7iq-Ÿ_gebn m6\Tl{Nb[*x;1Tpeغ[0[?%۞T՟}*'}sp{5Fyz&zr-zrzSz>ut'CkZ1m~9kp&k[.o&+CG~s?/ ah7sݡ3y\gjp:]玽q^;Z Sǿr3|nxW{}htTٝ>qUg}Njo-{LO9w |iw ~yʆRؤ,Zs^z㓨8Fr*V9/ooFy~'rao gj<n\]y1M^o%[H*1f.lB{,X<^=\ H |Ek:'0\NTv|v?Cd:q K6S4/"\UA#[2q{͟}p[-gFnStK}܊C1ZQغ·v>xﶼSmzqno\Ӿ_ sd{QRN2֋ϙw<|k;Y^M _p3K-sql9(*k^hw/3嵰{SM`=8{9q+|k4 ?UM餚-0T JۿjGgHlw!\~0w~/17;Be&cM,6<?j}7<=?zVuST]c>l-:s q[֒XvJy\k?A|jxf7>m[ɻ0UVrwwK?e}kBt<cĻ[f*Sx;U.3bpꊪ]Dad|/Lk=Ͽ5B9rq/m| wkj7r7;jxx[6yp;g'aaVP^>>GzMQN;*'iMvf7d3m7no|~v ز.# qo9hݟ]Ff>2tRųr1ٝIXs;=ozIڲF4)-zX_+/ʾCO~ ܨvbW} % >Joaɐawq}2rUJ\3ͺYe.-z,QS]xҒ[NR5Vm;k?*͒ZLLz}R|WW$_rï/UU+voJOG'o^fܲڷzu.}&߯]U?#'2NgHyf2 /v-;zx?'A;'ε*bjx,[ed7yO+UU띾g]6) Kiɽ=?sAJ8-W18ŷ: /6*07t? qLf9LţLd#-ܞ{PejdQL}N/+`kG#[Mép=G;jS?j<# 1v5kK K3Qp99F˕<m =n_ZsV j_s옺{m^kMr^T;ciFV+Wu6gÑYnr{]ʪdٶ/IxWFevy0v|WLߛEǿhQmK%;f^8^'ki;uW{l·oߝn7åxr7>}x/uHZ[hZs{ec;x`rKo#gw5|Q̯kW3 C:tjZ;:}Y,K\/OvM,zr,?<Xa~wg|\26~كo,܊Os!1QB:1seK>kb{w޶K[ّX^uyןrf Ii{Lk 5lqPM{ ^-Fc^.޹[dk\ +u_ta\Y{Gom{'(-Yⲿn<m賩9߰s|gY qYj~Wjܵ,-%k*vڿ}\{lqP@J*jj/0՞<Pc]NDžaK~ UtF-s_+.T}*E"!Zt*ۥkF߉bʴKW\jY6=gj{5:U[Y} D ծ$7YμV&չ"ӌxo+ev?i/3 ;߶sV oz[2ճڕ\ѝH=q`oo8 9,'^GT_Gk üs,s}gOM6}c\g$tSS�|;̅e['wg7 6yϭםr?UG59pX X7ǩ?3f«lp_M-h 6iPxv{3>\L ѕQeOzõB p-Y ۜZx}nw׽,٪ZoW%mu4~sA׌5K"LWWHn% ߽3]т?=Ѯ}z7+)dfPuw'MlkSǜ5߰Z{zʹ]+owf[m>I bW^sX*G3hβW-m76 {vEfΧWqk˳9LE+?1T4-;_i9] |S6}d.jгh0(_[ ţ3S͹u0>=RƬ!Wxkxrgrf|-\r%W)K9x|1}clt"by{bƙ7<O2JSro|'56_&�f/9S5jarwN9n*gx[$z֦Mb5KoQm8o"*2+p,|Y˚FUfx۬xM뀳ss,=r4ݧߩmYNjZww呾k,;Fל/y6>]Z˳y8݇uqa +7L=4곝v,Y_;pY-8R{G:o3YgS-Wirβ^=?>7Ϲ]^7~-Wf~XIk\˭ZEBއad?t^Q<|#Zś,#vV"ZC1U2?4ط>>l?wo⚸QX{o떳WcU[}}kGgIMWM7W؈cb!)<UH]!T�H~1&�L.Q(QG1bԶ`Vndwߞs `Kmuo Yb%VI<'}6Yfk?ɎVao}ۂ#].v_ ZfK\>,ߐ3AL|l-fjg1$8KjΙdMJc6 (y~VIZXe}7yvy8./Λ3#,YF/:O&~fDyU|&Q>'f ㌾_a`$XdAE]y #/Cx~ tId ƁwX1hT7F;Z8VB#߮w4H!S' ъ]t5stTDeM7IG>.t֚Ϳξ*~{Hx}]X(3*d΢R{ڨ:?⒯">RՍU gH)!oWaRw^և.+~Y8ޕ<8Nɢ۟m||ܻu<2or8ng`^n){1=l3iס' Ž=@@=E;zË<a$$UD 37NE=/Hs=pExnT.nyōQ5^qip%&﷬ʉ!Yז\e)n}y&6CDjȯp…؅H^aGzN<.I:cKN0`$Kj+a }VJ-t YUܫhJ~3LZv(m4I2ˎu qzA-N&L,k㎖}(S&v;@#o07gm <*Tk1: |q{wLI55qG3tMݶ^eELR/qX^nQKU)yUfHtK6˭V#lꪲ @B2lH>lX״,e| Ԗt*8kQJB/hmoƥQ9Lduc#'\7 @J?É?`�!#3H0.ͺ}H+k(-)�?@�B`� .RL"cƷDr@oY}Z<3[ zvwS϶2ylٲ egm;&~Ke '\\vLLnjqٸ;D_p Y6 EX~=i"Q9N-F C 1=U5"vTnNac G2aA%$ N(~"Ւ+Ԩ4 dH1=}i%I$&gyM&YWSCQ|JFH6 ]:_@#2!QɁ:3ca*n |6aREX<b<l$l@7/yƞgSt;XQP~10ξ᥯*ziۜ;W7)5_w)㰲wI频1 . IݻL5Ż^$1hؽt!1St|{5Q6\xʞku{'<OO!;om9 wNPb mc=(`q@?4pX{rX;tD^qnG;DYC#(iA_jݸୠuD0UD h{+# !սO|EͮiQm;-CÆAɊ"neo/g*޼9 Rѽ)2!Ъ7gI3)1x>!Y6̞xAWy16[4-\7w`s"H|K G u}[ i>mޣ:o;6קj[q\$;7? \⷏J_f)LI}NOfJRu*Y.rv͙Qq74 >w/NDuӖHjД_~CW4ʶޙwUےj!"TףQ͎|})bGƟKsRK#S'rb,/s h HUFҝ8g}5՟oWl9H\"#kb"WyKFyy);}_qe6y`ǨYcy/1ۑ><;w闻ùzm/S=?P+3Uyny*gF9ȃoN^f c�jgflƱNt4<$,ʆI;#{ vHG4y Bi+JjE 7r*$Nq? n- djňŹ߈q?�Aݘ ӿt/dsQ?`J׊d,,%ku7Vu$ tk<@J.mEw992u+wlE>WrCϦT4xK>nߠEʛ'aL_n|]+涑C|~ρ~6E1FoW&))dMq/pS,3Xs Rx,^']}xoxiJ1:*| QJ?]5Ӑ-2x w`<5}ZtuVCaN6Wy+/,fLϪfK#lQ*|?Ljq)sܿx֯M܊y^7߁|3QmӞ#NS]{Vv2wqb%9aJezsǽ!n^޿)+[ID 3n{d̨Ψ&Wh <N Ńѷ{*[rM!+z rAZxǗ|NŵA[hߙir5V["m!K>f"{WxGEBo!s4{dz9XU[rw&>rg6u☲w;i޹o@bXMʠm;{ގZXӓb~Nk%E<QLͦ|-p<5nYV{.4x9[vF%ʍS]7v+e2A1vҳ0]Q:D.4'[x'|fW/)-skzgq> fiw"9}sIܖ5"6ԸFۂfTtcfps Eov;?|1h+70''0{e^{-gͩ]b]!kg2tS[:i6юt}ftJDb/|D}e/+0̏[{13.;(-|W{W*mQM ..'e`?ѤŻdȂbu' (|fR\<;:ϵ(>Z/dpkռ&IEYTjGjZU(]'ꃓsXڳKwr7-bZOdn({%V!-gTzPn?x߃_iFBJXU~[Qzj (zތjŇetO==J~H_|wshz)1~X\ A+~ w]">dxX8rWMJ5ہ~OR{&$۹Q gcHuC7Ho`:u&Aғ!@H e0Hs?0i/bē<N^\zV/EB#<5x*]x﹒ˑgij2NdwJrouG\LiqegtCL1bI>&a'Wx@Jw:nXFx$^gO)cbM;k8?ܜ$0__IV/h|aE?|VSy@O)rFу\l Wt~m@؅%6R("Q֒lR<v4fİE]QkBusZ6dU)4e\72񡛇ǰWUN|{4MԪao;U_ri<?M6E`mݸI"@Qqp֪(㾄EG*}7#E >򨴾3~ƺy.#5A#Q۔|H]\<#vDtXUڹ`*KTQKSpΔ? /NuO'63GIb*yꃹo9쎽# <YIw-_Y UjƆ/#'ܽL"yw@Nt_{sѤ[M^o6&cw~{?j}*'1EߣhJ"UewغGgɋ{0^s@GҤBklߢ*݉Aks_I 1>z .ûح[s(w~*#e/jCl>cʩh%}eqIR,;QX|b)w[WZb5Qf)=8ýx٨θ٢M) H brKe]1lT%\s0 >64y(V/=3ʴ]*]ρ45H}J8{58bY/N鳠R`=LVJ|7}E-ӓajugmY=OٴK*οw4.W6C iqϷ@gKq]AjڱGT/sbu;:o6w8 o!T~M7c}ɔӆtY VS}.=~j8b!u! y\MG&Xomkd;fŎO%K>U"jN3xhRQ4cy'Os ZwR~\q'$O'zKpL8k69? t-aWR]= g,OP_'d>7/|[Ҩ,4<%p+E 顣'1CD,ywCj&8m"(٥ CIg2ŻSvۗmcqN}'v'S$8bMɕ-6z0R~:Ǥ6(i;BB NM%ͺCi$@GL/l%7[M׺Ly G"5^|s ;^?}#޴ {R[;˩v fWY4sMDm7į23s2/xRL,Vnߴһ1C>ʸPYl~FR,Ldu Bnp0:ZLxI}>_ W'璴-#E,8}^SRLl;ىE5ÒN ŇX|A#eƏ2S?'zcLiS6t"B582]~*o#7Jn*xMh8,Tb}ñ;':Əl 5Ye13daFz7} G2]4.כ<[T g3ֺC<W&3s[qܝY3<6]F?2H)3}l, yi</QD΋+)F[9Xft6u珦[l>ݟ9/6^\n[%~yU{65hzn%!ixՉzY ihfS##|d ts= bv͚�=2|$71Z}TPCw"7trG=ɦLy:3 +xE㬒7sSGbuSHgH9pܬ&/iV5sٷRmdj"[=xp%wrl<Hi(அ?52yCċ a8հtF&"/};X;k OMjm򿇻d(y",}$[.m_h›JŽT?e6UTqNTꡓ2%NVsցpsz)l7 o`K{9?zPTx0r|eײqiv,HfJrGrf#@Pյ8yrc8tcm= d;>"`r1ZI[ Ar*;ۏC?j35L\nٚ1zfx9=QaLB%d`@p0n(뒙+Bs.K=;%jzL׶A%r cIx#>ϭy٠zƨ)k$3dP" _CqeFik@zsQyѪU*3Gu|Kn6wO' QI=)_~+-e!Ϡ!l%6,KFDf}8aV5EAa"CE"|zfCCǪ*_X "niE\ӛR! D #=5LR2ScgNQwCttQE"NG%P=E l-|;ETKO"xd\}lp´cC3 OPɑ1<l710jZ,}ʬQ O`3!cceLOffQM'-qyZD$ojijsP[O,%xdhK[*fu#jZ4%!+e2+|TY"SYD8lƄ /xnM *!,4I !$H| Bl|Jڒk:m8xH b%&FUB?n th?'dzjfU9 !*-  6lҴѴ;1mJLlt D4 A")$~+Ɣ*+cŗU'G&o!H+kKY9HdTQ]^:FsbTN6V(`-y//#Җ<URV["uV}5ɏ-HFI!'"'::#'Txa!UsrS|uI|2{ ǂ5`>>ҮyK]Q`Kki-K"%%( 88@3-+LzRpg)IdeZzqDb4b4%f$E'RS ?lISmkYxأ/=Qržԁm,xwWJu^I=8!@jgV:ɬ\TOLæLL#s Yv˦ڴۿ vA(7u L+Ʒ>TZj8ga⢁Ľp]kc*fhS7=6>EGG=.)!167uYL&mhڟGD$X A ӤV ܞ I T'�| S0`"$bRL�+@XQ0K@2I4K6b �_%* 2 ԕPD\j�18"]$�<=a �is42 �zPNLA0@N"A۵bIj 0*ya<vB}? BA˄ a FP\a-1��)�20ng) R#!&БS�( X{th'89�j$"{([hM;`�q&Ip[,ADH%P b\uP(A{䁷I0>ف (E<ꀐ.}a8D"S-9 (TX :ٚ H$†��G.@6V �U�  PeOLB5KBH֢ B C`; t xd*ET\ #(-SL@ 2PؿWU*0xB9 5�rl+Щ9<@dAI6%p*1 a@mAQ]6^APQbPAaP^p.ž?ag\X M&(�%,Qh ' '`�jI08E(08H6O�HPː^]H(2 d%2)n0flmYɒL r2L5B,H6�TL ۸�&ɂU҄ T 2 * *`3ؾ- 2!wBuGFMͰKpNIJ(.X& M 0F{`YA@E <M2pV1A{Bq;�$ y0Gc�Ku* @F#4R$[OB2Jh +J,'!0 f(XT !Fn4P^RG�w >Mv�2 `*�]L#p ?(e�8Ba*^pŠ"Ő-*A0@4N'%#pj&]8OPB*��P2 5(N ̠  Fm/d�JZ.L�d(Dj`- fjI08B{AtQ 1N.#B�HQ^)j` *`>@i :S `8v b3�8УK2� &��aRS!H�3$ K1g$G \vWt()`A3h�KdSMIw�|)+@VPXVR8WK�H @qE>n8!!ಪN`vX񄂂r'`H T%5* � #P HK"PI1KA6X _! <SJ")R&J.  0�]�S/MlH@w*c# ` }BxtS�.EbIW(8TA<E(u a& �NBxuՁ(JRGjU�_�Td!q; `�J PڄE0ZVZ h BpXp")ㄜ& 6; \@ ) e((��a�LJ.\�`/|`6ր[.�}C<u@H @�D�0 ͨ@P �Ӯ�@-@j Vx�8 ĪEP.@U`CLV>E2 !REʰ(LH#TI t)@@J �b($H9Ԁ PNO �:?) Q(+M**l#aCkP]6ׂ`(-L( ~}x6B�Q0.^~rka@dI 6pp*0` a@k!AP@]6xƀdhQbPB�PU`]< Ì PMmۛ.oݿXo@4G~k?~>`~4ȁDR AQB D!4BxA D/aN~vfvwP xg?.NvhugCO,7q�]:/o'0?AX[y9z/N ]us~s/[0 ǜ/~C^x//?n|m[h~~Lfޫ> wW6#d G#G ;4^hzsh{<^?0pwjHa/񅳯xA_ԏna-YڭqH[ouyrŸq~l\!pe{~fd~E rpf}9b;Vx`0:"~}q/3A? 0glp{w}Q?Xaֱp?&l }xe[aMpSxuǀybxy.~3f;;V cjs~.W˝XZɰy [WbҽkaqއGVw W_-;!_\׷~h]?gmBڲ!mo([Z:\R\f\\\\\\\\\\\\]]]..v˩EEbAuuvw@ĽXdv_///ȗ%}@dl$@pÈ`a aaa0v&L'*, <c Cc#s3Ɏżǐc$c1111 q}#E&EGHHFHIJKFKLfNPQ&QfR&R]3.YіQ|$0@Hḧ́xffffg3|333șLf}S99:?1g3h:hBhRhZhthhhhhhhhiii44w)*M<FKLsOyR3RSSTUUVVW^!! טk"k$k5{涆FfFFE<|)R8qKo4ߊn)T8A]S"T x+�V(q_ZB͊MMM&۳m񳹳!(ۘm(m66Sx޳koam677%71767:7@7F7L7Z7^7i7l7w7y7~777MMFFqÃCscIya(q88888z/12>g$'%%')*G*+;Ö!8Ps9Ԝ֜ל}>qϼr$t<Phx�,<u$u:LQWXz_Só㴓ӵw�www;N~sqiyIQ y<<w&')*O,/1OGOHJOLOMOMQSTVOXwgsדaD{D{L{=nqO}'gq)a8P}>>>yاGOOΏ׏s#sa|x?Q@<@F@G@O@P@Z@^@c@n@q@s@ Es$P%:hd $  4 � * j " J b "=AAAAA qtGPЍPPPзNPRHR]d).J Jz:Rb" CCC顯 *5ոiw7./0^hzzsZ?]Uu#�л EP!|켻lv4T=5۰?z^ X5fO`k-cjFZ݋cc5BWZq+ ^ ^ @l^%ﶴ_Óz}i �/ ;zs><y x --:'԰c尻 ìu_o<x!o6N -gdu~&_^u?w֞ky, :Vxxgގc[pm_!pf_:~2^Gm.|B?k?C_w:B?*UO'_^o_ƎjPΆh;vi~P_u߿i ={ sDO_3:?g^545#_;o?㯽 r?-o[辳kߚ_1WgCqwk?sQ~~KQ"ݟZ?`>hjuٝ>xl&M8sR|{U.w=jYE{?_R—mJ_`ZRm>P{yj}2ʹ DKCes Q4nqx*N)z%łZѽ}孩:-/oWԬV&Y̱\dNIF'l06vN#=(H7!Xؙ1s[%l7[Ŵkdѕ <î[aJֆ@k=Xpyg]nhtK8<)\AXN!omWn[&rx\]tp1[u曽ii.mظ2j n=XN'ɮa,'RvCcHMKy ډ9j ; [cT .k' x? KA]]I_v=[n: γ<Ѱd⎬-ךMEA;<.eݧr[R' }'P^UW~5o!ʍh:]ʺ}.GQ*p)`b:x[ѳ 1GHEzSѽJX̴i{ 5v|WCk[n1ޭ>*7K90_zD8 8tbau]9X7 |T\t)X:M` v&Fg.rxo]6P=uh.ŃqkLէtQ^1bU]%J yׇHڟK׹kI_]3,Sey{3ph1Aa vB kNh/e7שo|Yζ+GwFMNEZx5Dg=fGZ]~ڐq6FVIoЯ4'=c]!(N$G!= j ΒZ~6{!tԯ~SpIrlU22g[f*!ð_}Q>.;e7XJ2z1#+Nhnh?&2ZYyS<a_W۽:U&o>VŴ_f~WlL<N#O_sz}KV?"M51inGvk>uGQfMgMD~j?͘?6,mJ} LkD;94{[bG~>]c~o4!Pؾi31Tu_5:6it?_%i:kFD_>Zϭ!/nP:lRi%ߐ3vʟnG[Kml1P.kojf/uzr7ߍ5-?ՍCa~e_(5.֜륦_?_bצ5~6OiZo'u)#9/QJX_9i[[XbnwzY~LҶ65Q]mnj駥jwnq}uٯx cQd?j*#[_-*zrS|~OgRpV{=A1ߙ=O/_DZj 311ksɻ:GL}̢uqzbORgXꗽvNkfj*Q~YD_]ge6cu-EC_5s~;^_ w5̗eO37Hj/j4VP\~wYh_*5oЖ7,_e_fl?ۭs20 :a3ǘB#KL ( kfQֻ W[j\۷ΡGxGk|ksLMzſ}ؿf͎?A 3kbmP{UUcpHE7TG0JRnjW]%g~i? E|i ̼֩Óqηnom~i \*ƻwfgMVIp9aύFmżm_q37٣|7-!\.=Kw]&,Dp C6QܯQ5܎J6?iO:\bl`$iknivvU~_, Fg[„ %o̕lSAļ/\kZ7)UԻ+SYm+;}3]j?V,$!sƊo]g|j<[N5{IK!tF*l+?!GxR*BCТlaCȎ J 3ԑO7p֓'X =|ZҊ~km�ԓx(O_sbS%8)og_s ֻ]9SZ+r IYs[CLˢzޕ.Es]q[&:47P.s޼IF3~4cÍ޴=m26XWD|r mQd]ᅫ,YxtHsvRrt7mkޯfxIGښaUZ:)ۣĉy3s7q8/;n8'~vԋ$;בԟ&]/4lgT?C%yB^(pZfyt>4} 3۬|]JAaYj?g=oI܏,;Ȫʐ3NKA6.ZM=Jv̾PMV5 _*6z]L:ۖv:Ti$BKfl;ԬN=(w`*]=K̯ȥi3r4nԟ?vĤySǙ7+ݯVY( EA8e ~:ǿ:Ր#TAdؑfcEHK.s\ٝ.JS!`xq`bZY+sI2#`ZQ*64tŶ@ؿ%b\wRf ܬq$YY>*m ]ODP6PkznI CLWqtG xp<+_, DCD\h|ӗd; E7w~*45)*e]eF!qW6okޢcB ,uV9dUmb} s{4i5hK>tded^UcU=lP :Գh QZdVo<bLJb eOe-j=\[呦TV5!g[f>Q_2ؙ2k[u]nO.[>4kZ|aMfV'kc( fsR?3-lI2Z1??fujy_Yߨݷ:4FVNQ�+n_:_=lKvQVtg)%rZAXj24 tK9ZU^ I1>+y(iX'F7bTW37fz閙uHWx핻igS_'h9B!ǹKa_URySI1QkM99FNfmD |V/dCJH A_N32Y+)E21 b^~cJ_whkKS#"unxq">{@PbL.÷LC?Ŵ?čq|FBOFi=^tޥs~1c>p1oRݞ'v%^Y !Il}gD{*=(=Ri PϋIor-) p`GX1 '?rF0)]sajf'j`l\Xi"4w#4W=7GB͵-l K2z GXս}Ck W6ug>{T`ڇx4޸A({ܞJKۣMSBpj{&%ɇ56i#}6c*s[K{E6f3,F~|Jhu%9Ӎ*N Gz538аT+ozzΚrڇv1h4ğg":MfaWn'[ίym-]+$͔coVgna쫇v79 wFmӘ6 7cvܯTKg| ͪ6\/[rh~7C'Ӧn:ivnA�Gtg)J,E"vsxZ_Xݥ)ifsUDV=,u&>XU()sq u3iٶl*ZY͛1|~ӿ|P{%6cb*yuz;i\&xJ~J .w-:^¹y7QidOP<&Ox7 mEOh4]7oLϭ {{9z;_6HY3bKFk_d.z5=wnÿ#9cn'֤bx+qPH)}D)�nv}-ddЅE݉:ax8L@l:=;w,c(@ǛQԪ,ڇp)wYG4%ҒWKOho8g.g_":1k! [+8{|ru^O6WXafM_{7EC&lhw4; ؗ(9u+Wy5)9Pi߰||[6�tS$w;}w?ʵm~~“&ޤ8;1Ɋv͙i&M_62�'(琧^)?s{^)/@Ǝލ(R0{l6wk[Ѓʟi:kŪIqqɱ坁iۂ34^oZިBf6@4YoNn>#7)$%SY]!/FX{q߳4kNnj|RHmtќlo* Iow^3<R黦+2jiCJWr9s67<sŔb6tc.UcO>17 -?s",5aDG^aL0iPcx8!e,Fc(W)6~QHFϿMr_(|Fs]Τv';}#ytC+ë_Ly9ClG4_ J<r8Sޖ^zn˸O0մwHOAc>G|Q-[x% ߪ?g\v9_KRf/.nVZ›֫?~<A2=`-m{U;^_yw=57CDϔ86_76eG \:>OB'.y۴y7dڿ~?}s"n"É2,5n06 "wUi/IW#Gx˹u#H mT.iƗ.ʔoGݡnO1j{}_dZANg 󜈈۞`ԚlJ 0=xoFK疒m8ziL_7W"?6"Q[v#p{(l^<_w䓓&QW8Ϗx_菱-zY3bml2:ί]Y>*6߅&sH^3F&vY[ x7Η<z_@mc_WZ~9uA۶,IYbv*JZR_݁t0};o@HT.ZY0�X@0!0 XL 10,Щ@WmwdWlwsO{¡*+}H} �k?w^]m|Ͷ�D?:y�˽^g"י~"/_։}q5ߥ)Gs |/~gZ߭~?]LO D'1ط# ڸihc0P^OS}, z>3yq:\w8vq[Nع"v'6]0s&] x˯jRܤzؑ5bj@NQđT>9x�v?WCLsAe!/d+]Wx^DF{mnR,τ|ꯜ:0B<`My4& Z �m0O>_mĜ/Ӥ?~ 73u^|d.H TLʃj<ڏ CQK0`,naChyf Z$I66I;>T:r_ir~ҹ�h |u':V'Bq- * %~3אs\C{̙l+x15siQ)(8.EZ!"ktl~Su:VHr ONnN)rhi#$:t8Ys6QB$Pc!5W)B[")MȦ @2\Gy8j ٨ Av0[O-I?_[|J\c O(-Fqx/�"y~sLdlt= g:HDճsVu0BzZEngj\y-t�FC ^pNF/Tl`[o=ah SM}J\J5`dx;^U;1 ޲E\H⣛;R?2 in P�Ȩv-bw{L4 \w2Q )Ⱥ'"GͿgQ�'yAxu*P+<5o.[<B+6La ;IZ5< Vw[19"*?=Yo/ Z6MvwwOKy(fA+ g¾dVGXBtdtA|~Zvλ|!8߬oZ`8slu(zB-M>ASWFN)tn.d"&�?T;T~:͆и yO5=Sy[P6j|vP |#IRŵKvrU:l̀rӻ' FP9]y w5IT\ş謧 A/2M$L!!uڵ1j&~%Ov( pI;"<%sHDײ TщPYzXA@F0ˊFz!2˨)|!1فמW2CؕE[KT={Q'1 {upɍ\@'/=w% i q삆V*uݟ 䡟M?M~3-0BXϜ6>#_s:Z-HήҨwA4]ROgc܋R)!,sTYW55<|`>RaCp*ǖdciԹd>0tkԃ5YY\nIl{[Ν1Ows>qtg|G5 ԤA4E5 TFnzߐs5}u"XR,,WyLQ-S<S@(ڜ>MW_}p "|)bPr2Q٫՚_y#FwdK'..|z_6ȕ6֢K%�暙OYkQ0|X,L5G0Gte >IzE5gƬ â3҄.uo&9DyxJ6JEf]D$bAI[th+DOy(&_5]AӤو1}  %8-t&0^ӥʇx>7/F87ͦWq^uLH`B5>S/r00X;AD<9-<8}p{wȾщuwe֟bQi)EUrMH8u<yA@(Xax=Ɏ! BC+ e7YYR6l)p_-MpO,tm?^hcÀyN8!י}?;@R]AN.~Li# !ЍX~UРx27|Aaݏcv+KavJӤ_촧Zx'm %A@M3"ro14M?rH7F Hj dAd<mU`Dd#j3!_MԐ7TBr"ǹ}'=#y>O/%ݼ*EҌ+uL1OlФvP%= �$&iIh Hzɛ2Bd3_moI}&?FwJSW"FUL(wyҭwk-Uݼ&`vK*&$UN /o7άײKs::$j7];"$=L.A�gdPX.)W=v8tkFع �_XPlVctgp�1FT�M碩F�jN,ūv\5Ѳ|6K )FCo:ɧz@$N<^P.'0:11&2'/򦮱wT951Q Dd'J?mJspFR GÛp\"N8+kRn>A#v * g qO7KI;O័*z6a:T`&A�4!Emp-A$|hDžvє.lU>P"s^".]h[!9;s@va)ipuRLMzraeKbrhs8 J\983ӎmc\xJeNE茁]se}$k,/Up1=T]r)Ib1R4ե >iI#+z\WA hlgn$pWuHK| fr>Ty^ѧgDmo9_9($|f(Skzp@\dB_ 9m/ %_:Y9Ioab$v#c t�^_ፄ(N]6{+h;^ JA.G(5APJ<hpBJNSp` ̞])q~[~Њv YKEau+5qب3;_vW1l674,ےg'B HV4/5ES1ߥLNN~^4#Qn^%N a&_Ԩ%|^,QKO9S_b_J1G>L0K)7> x m6"<:?L~Cdsغ잝i"w2Pj(~%0A$M,!-_c9w�B7V'W-W HvWdb\j@LLwڧ>>fl`$Gzbݏq+Rce-+"`j!\&~%)A,cxLz?g5GgA!i/8YBE  YZE]?cφJ w@=A媄o%ޡ(½Wx vtĎV>&Ot8Gٙ�FݑHY{ukpg{jgc6@?>14)?^sIXtt]8NUd0DLy ~6wZ,L �n(yr5Uz]0 @2f\rt6Ӆ߀@՘\_esUG]+6g!BSpa0 /KHtbcYDv𠉌kq(0j|X߮3V"Wy+ BӮdƋy{c7tDB ׶ -3`,LL F3*.,J ;*2h"X$s*= ӌ*3 DmTCSn:ڈa59+i0TSwxX!fKqbagGek9QEcgGqR8f2ܘԴ 4|ꧭ% C\Os jVA5" tpҞ% Mї"%i(EBz\1K*S#Jtt ᘆCyJK3#F~SsidN: B2~oNz˼ұPsoXY=Ң#6,Z;@*C:캵Lz@x(ײ@xӟ/a3W&lx%.C$XL,Q>"dA,a'&_D|t;ߑl_m :{w#GgeX~8V#g+*\rQlƄ`D3|WR4baDr)GoHm=gmsTU]hIKms]7 &X1NHh.`u5!)$?pLZ0Y!QecwjH0(`Agle~7j1eAV\˺*r7m DžUOI�S?#Ӄ,B? X{9/dؿ%#./d.jx<)_fW~W_Bm>jٳK 2 �i�A.;ӿb᷀Bͳ߬@{`��v~oɕ$HAW4?*kZZuM.8H聘{vr%b/_~?3J,ډbYSbP|R}h&*չVbWhNc^3~t#lJTK)=[+j  ΉeiӮa/4qgQ{'{ LnSWQѷDۜ >ﰨjY񄩅BhЛ]e=pЏ80?Xg[{J7PRl02W*߈QM}v]:՞z0] 8kR\UZC(Dq<Bat;2{i=c_'rccͦ:4Yt1yv5 <E՜GE~F^N%Ǣr+"#b{$ڝJ\[K_\LI}Cg) (7{9Rq˜Yđz bK$WeH& U/ݜ4:|_(mEH]ypJNuGaj$I$4Fp^^DgZ6Zbk%7 Q׮|DpZ%FZ=/%/aQKXm'7 lcPF!9x8qhi)sK*Srr2AuGL@P@&:>ҜV^^|٭bMϰ/uε/*יca5}ۺZ2wKM4CJȝ]1]Ow4ɴA\qmSˁ" &yafrп&_iS_ٴ.D%ezKko[HX(ek|>yHu0~"w3VB-!%mFi8v -ûPYB 5J9,gsqnzN^͢1*=Rs Z.g͜6êYA>=>K}dqL!Z>3=cj<>3OeyNifP+ I5J^�Co`SFPm qƈGSC˴9q=<8vmSN3̶I_!oC Rňe=D:=0ks<d{n⅔@&3;U0}OMDf VH;vDz3 ݻ1 v)rJUװen$8ϟIHk XyVl_~cvtSRoܑL0c3�K7o J 7j RpA ߿I:xԺ@'/d�>`ew֘ssSG'/U6'RZYO]}}rl3\TM,:/y=Ϫ&5v4iMB<+=~ |MNC,ijW5,b'P=f9%&HWMeLCA{vmQ ä Ӥٷ}ES*f"|G Ӕ9%.HzUeZO.> %.&J P෪<{\Ӻb,!ɛդTJ?Q@Y[=Z+JZ[U dgZ:]ŏvj*g(|.E,=Ed'XFlZY6Js([sSx<k<XQa]J^a@]rȷ)v9nB lz;/nI ZƘws�/t>壁ct{ݖZЏYVX&Aub'lu|W�_(IA0^ LDU5klx"uׄoy<!x@+B3Zڹ<0pexEv )c'2)>p'NεAϝKH6Hvvk3Ey@?pdylS `FTĜ5avS=uoϤvmxUg\fbWeZ)Ipƙ*ؑ<t"fw Ēc;}�-GB͌;'/ihTFT�1ʡa=C@ : c#<,;Aw,�%m=D ex C[N@KhN&\.@z}/=k^0$oeܞ@ח* zg#@?AC`d< /Hz�0$l|/~pUq}#c/w0f�>D0{O}T0 � 0q�V":b3p&7ҢX, d}*0 2{R@fPEL8)l @ fHV�Ir}x ?N0>P}GJ - ET?G#.U);p�%?l4@T~2=@RV� N\Oi@BWH`L*�) C(|Gy/d]O;J_qہ@ M@;~BWmPM`M{H߮b.H{@\`; G\I , U(IvP�I>UPS� J(` U R_rrL} + Phj-\D\vg/]Ro??7iK߻n~0Et Owu�F_)nZ.>W_Xy?NFAT/%`\E"}9;V1G"Cwg}n组gh~;U ^:%т}y?ΥkQJX}nc﻽~ 3?M-݊?@\%B>/o]wr>+8C}trL >H o�aa}g#K@c=y] F2 _>I;+O}r<wCn ?'7? g)F~;x_:;_@x/P`A?-„{E)Ob^BbظGݞvw91G_ ?oe/oooh?mq~{}~{}=#0G ٔ,D0 (9iLƳcCไj]GwV+,MA+&8ڹOvt=;"FVݿ8ϰvT2 f.G膺Ў[FOnA7,ؗ!MͶ$vs)h<:=az#5)uޚ?Qb/ͱt\3S4՝zUq^҂oCw0'i".AnDRc|0:vcn󇦂 6Vd#ӽs4 auaFRD`4m7"/e8dw<$Iĵs.t/&hł'VNNĬS*$ 3&V88آO\rνAD"(Y؏>:sU9R 7I^V4(q K!bt䴇\b$%@M r}74_q+fдy/V2Zsq_mPQ{A|1OW!WR/G<b i*)[l))"ㄎcˑ<79Ԏq`,vZE:O9iWC Y 1!:rSЂ#gp 1ǍI`/~Zt;%#ccqd2U3,nH`(>]h$+Vd Ow͔`n0CZ3`pdEPDi.oxŨĶMǑF:J׍�o y kt3sq]N#B+ L[*H3}xmQm͙Mb6؉EDᕬTv3X7:[N*[S[FwQ#k=i7n Z>/%&˟0EA8Oz-X}/,Žgjhon۸u >,TTQDa6Y:3E JN]%\[dA#agY[yJ8bn؈>?\`9$͸ĘKer}F0h ҋ)->!pL켵 *X|AP*Hnobd>ES>bJsS@Վxĉ,]?/[`Բs!N*'J9ePIp. / *U`dF$+un|tV�>n]v abg -W!3tB ,vT])4ΏYʚ:WXx>[^OF&|@n\y,sp/j.4[{JrW>:lYu3-w~eJ~4R9ȮHăvL!ߝ/L9Û|G^jِNZUi�]WC8#. $RO/ը]<'Cjaqtc|(|7h44I GyL:KK9ѩ&t >^�Fa#mͪ¤<̴6܍5UlNiRQBU7]"2Y�VMʤ�@o*$CSٌ};5ίG#ͭЏG4h UW8)n[/y\ы*+m?eJ ٹDe-FkY Sj:Gr ŖfcޕԝzK.vS/ BxY6%<sR3Ϳ<O|Ɗ䚦zyM8cvL9oIbkhj:1 9QDPK' PCz'EEB4cҌ Tȉ2׮v7V.x2 a;DXsl,_0e9Aˣ.^[rALGi c0ױP*9,m|N\8V6sxnX$Z+El#YSAވXThbw>5/e0]3( ﱣ:_?{(-~M6=-Qυїw L*xh]f Gu TH>[LM]DB176+/a=ܶs,t?D([m*nٯU.dke[gޠIc@j.0!"k|aF%$sNxjcfT|ou*JX"7za~4\FvCC;؊ A>OM3F3M0љ C tA�.5qZKg?/lDrb1]JӾI� { VepW{i\%OK5\}F0czJYOV+rE{͔AF<7SYU|נY؎"{`ki]jF폢�5hZ8蓡_B $d԰ i sD| (p$< c8 %r =ưzʈk2$߈ ,9n j"B@KU>~sSaq)p)(0F2u^ZW& pZQ}:bl�  ?ۿWZһP./GTѲ@_@ǯl;0h|Fpnհ:W|!DG _6jWFxi/Sx<T\ަ_7 b[V`FO2%)k΄>յ#IE@ 9Jf'^t#3v$s8*t7]ٯ^i 4SxBRςr1{h3vJE]~OxyY<]k|B}\lmJ:vڹ?iy/7X8S,^yNw<Ua@>rXR\)0sT؛xb殄EK T$ ^ؤ`R�!;A?fd1?VcCO5|py4.=aK$p<D�*x9T]K7IA6n\bu {|6$--9ÕR ,z_U݅ O\7$_LFмA5Nwhcۚ;!U_`^dky'"͕(pkqX+CPig#v8c#(�aF٤f7ib?摆02Mad-(o1U?3xuc_S)s]4"-# #ɸ? "<C뉽Il= |! � kQuW/B/B5S&S:JԬ&ZZωhKQbpMwk`]Zgњ˸xbb~G*O%]UmК KPG|ĝM7ʚdEIrcQ卖ˋ|\QF&~lQz1yVUVF!egOES+{RBN‹=cc{u/XٽVE)|aVW�_r8! H:ějLɓ�C);i5bּEt{fS+gi3b\ F!#:^�BjԧfA (G?ɷ'g7PNTKB b"LC]D Ii+WxV5tXi)BW>E&l%>\ hcX x 5j{8B O|z4|"ƲGl |0T|HRl/9^qrFMI5=f)X w1q:cC*VbI^XCsa3 0/>xӲmPH# oԙ<&G]x&ծ-%=G _k=ey4e{d fb:"KD<^׺_{7N\E?@RUTwjػ=wD6A+0h:s3r55SⷴN@=� 72|Z&. b0g7rOcE۫1!eR :G>}Ȝ q{ihD5mP༙H*F(۟=+ΫJ>OZ)DCgB)",W EKOF:jBAFw ~?eG([CuqF+^B u ]vvɲV/asg jEA Uw9+geD<r LRAwϊ4o(R.lw1i-={9OH2^o}GV^3>s^6ޜC4p4slI2LoDN]N,yhZ2r}E5w":$F/c؂^wlÛ&ZUS̿;i! 8d#|M(!s@tQ`op:d7Q|yЇQM\ʯTIcO6k x`-٣qo+sSZzסI;Bև'8CȼU^T_(@BuCK`+9Yv )^w_xؚ>#WjC֢->nr V#JzxYiPhއnFg 1O$Y zNau-w>ȑÁiaCJd$C5 /S4L$ :U!) ݹwP-Η߱~j캼UCKmjhe}X ngvrK}%P|1JB$ ]hUtCs�C0`3r՞d˥gzGhVJնL%Y=ږ}ifnϳ$>|t18]|ۉtѨ0cUӇR?6BhĮ wϩdH<6?VKb s*8ڃؼXᯧuDA KO ^MMz)(*29[m=Q)Կ=~NtZ]O.}* rzW oyJi O(4EM.WWOW(雄:+(ZN F]AByA&҅.Hث(("FraǸ+G�e(d{u j>\aɒ% S"5ֻ<tl; z]3(F=/a\*̰|i_5 0F6/w_NmbSp4jsiU`G_P[9wϬglCTmm+BĢ̡, �&A+*f3ucGVoQH8WɬSLjrkTIs R]b"ݑ33)byҠʬ7,HuTMT'Pvg-((…& '-"Ohh 3셻C�Pɗ<Mxm03 7s:ɥn?05&I>[5 =j4n̿bk&^MIohŹWj(*Uw9H\atw\Şpf}J 9E+Nl"P?t3<w~sw;B��ZP,@�b %1bii<:|k ڵ`sG.x<zlRmjNEG,Ury9T`M(n ר>1K喷j` QӨ[1vHй)}`nˀ]%ڎ2UbӨok5hڧ\x.F*Y$^&@$B4W%hi�͗3]aJ#{(W`~טo>/%lTi+ ]J}/j3/G"<O{$„$~R}_u='2wSjn?z*?A `I9`Ke050^֙^UmrQ!s=K:Z}2 2AdSE ->dj ]y8l&+o9)D2/Šz:oz6fXx6ldދq6!p*Bƛ=/DbCKYC0h5aq&�^iy{䛑4UAxw%:߱>AƓc8 9Fq^Ɨ <X|, 9p-h{#'2UVzAD0ZІ&T>ϕ2*mmP6ܻA>R�vDF90U_N=j LctJ�]oGH|+)^3l@)n PmJKwǿwFf֓sʲJ*QTђs=U*Ԭcl @sn+鐟&g*J)BDÚ>OG{+W3BtO,fDeZmer)K&2է2HϹ˫ DZ[3%UGK/THksaB[38ȰDG&ڑ:H֓"ɇ\gH1kh6YRFA5/6W1LS ɦED5 U gŰqDlЖoxVF1lnF>E>9+3C"Y;d4}AG^Ⱥ GW_&у/ɍD SoZ epnk 0:f}P,2 ?;Biu+m]E)0[g}J\gҗ򵵔}z^bG߫? }8&^B|Ӱhֈľ*]WTM ;pDkʷxW]r xp՜McJ U]<֔7T~Mmړur1C_a^dE$Ce0uܦ0j)˩t' Vf XN7|i%8uǻa?<W::y/ TZٰ;>~Sfx3EƈlrL<:2j/@`wY4H*pzM:z4rD+3ZUK�o+# 9pdd+x+7mrnÞBQgS]I$nmy벢S. 7$ɭMDxg3)>,jx2܋w[]!l\Og>K<5]yǏfyM{/i]0$4~nŠq̞V^�z^f:NMz@:%d�y&tGG4nśr鍇"!6v-  72h_וէU}Ϛ,6(>^Xmql@3+K4cBJHt0e. Wj)UN[Z"- Fì,=(!K̉8gC^QߌՓԭ%r֭TRPjo<@] Jo ",|5'Dct5ħr+ܣ\'#|bc [3ۛK K=S[6lV$h}pXʀ`G`~ /Yyǎ"fC�~e/|O|.0J,!fvEz@* zZ/SEkK3ZRrvq:�A-0'qn#[U8H^!hPc-4su\_�+[smt-RCog4 ͅ6[zzidyd3O)P@n,:la/Ѽal~iчj>#lv0ܦ~^Uo'Z }jYĘQi}y`ZaJӬ%Mq$;Hh.Ec>CLP!v\lg*|^_K-{<ma0^F%7נ95:]Ihu'n) 6rJTEb_*[N̬pk |`<KXfe6bAߖ@jLmhj %. &|Mu]$iD-᷂^"Fp!JEKBEaA?=$Wv\|evy 65jg{G Tt [wOLoMR|UFFAfy/e(ѻ~±,KmB6 S*Zs0{YfrȣI"6?J:jll'oQ}}LBh_yΰT/3 fR HŁM O2 EF/<nYuAW V'uk:3Pk%i=53 uAa6Ba `6l13"")D=i~]OOhX!< `!� s@0 o$bDM7u#H}^yZ1MV i,aBskOǏ�vπ�@K Ht/)>tobI.㜝2=#O%?'c[%6^[j\bnSx'y1]KB {m)/�*.>U?|JGbrzޤtɺ'f;ۓC9ļCP$Yg_J* }jbs oLxCwS5{nH-$hCH;w3ߞuq5Qg&D@4K]OH*s$h Fh*(K0MV舮D= ԯ.}i~?[pr0% Z\J`javp<J~ǃAWg%Wp{>vxQ.3XLIbE7dC+/9;n2mZEä%!?=siY%8 /#bnD0պFwmUe՚*0t䫜EgV)T|JI茱倬!%.rf쇛\(5"4iapmc )pWA$wlvӶ+wb!Pg$xܽ7p4kĸTcy2߸CrwhQd̈́ݍ o.J(o> C\Зg'n $'s[=<|:eӕmE悔>a›;]3u ԀEji{$Gt&E8w'f_NGrH^7EL̉~x1GAg!x \K/axp%_Rc”{`ٲ)„i[4>&"җ-ĩE!v%<1B;T@hRq'bZ50c_gcMQdLbS=X<(&63਱̦O!Ar�|)Mƒa TpxDC7R |Srըq4ZtZr%vNU e76e=U<oYӫ hhͶg|LlGOy)~UZ0O;× -JS0;�z%h sA [Sq ˫˻oL5jƞ0N6#G^MqCzNTFJD t\~G?Ct/2 zliߛk"/OiRycHmkCꤪ':;ȒE; S }05zTgs2՝r#77Nkͣ(4g'q]A<xKC$o 0X(<X �)!oԷJ<u|H=lYO_T6;^T uО2C `rc01oG=]Άk?�4K/BGцP4!3S3Kg>Xam'HOZ_o=ͩK uvE#ڞib:Jr\?q_-I]5P\PÁZ8Z7e((!/!gzSQ~zIrODua"NKԩW߸jd8ec;1 Hb|ڷ*%o2.^4!FB̀EOL4<Cb; kС=t j)}4\b'oƳ41p^7n]-T>I䪟B�_f2rH+,I@Id0wF6JzAzBmlIdOWw@x/]&$@ +]観;ʶ̹EX^?FV¸iPDdTg-5Z';c+E(ǺY䇌$10b&Zy (QU@8Gl{lG#+{pK{v[&}gxc9Γ@G1_,zղIyu/f8Sdp9�*(|#AǓ|T5bRe|h_WԮ#ڌmm(""UrTohh1XG4'`Εr/5RVJB[69o|) ;}xE/*T-Frtr M` I$S5H;ST(<¸//.&_j){9IZ8-_=AFA DPFt&]Cc<t󠮇D|bo]{ *t70Sm_wMFOT /?0Kq6c OE/kmnx2ݹ_V72MQ~b1xneiE OOjߓZ2f*d IĜ8J[ae{mGef(MG"6SA v@ID89Yʨ=%KN:z;/tR7hLN}pNKh!7mC [F \yF>2O$X$.ڞB*`wh(pQ)yheWL}Z~Q2(k:&2#h͓/{�I]FҜetVȺx ,9Zji4ZZyҷS+-[d}$8e&lAQoL%L 8 4n8ЋE+}S&F>){Kuo%ᐅWI H[[]wC$wj_ZU0v6j#@V7ؿǹJ\*l`cv]F-<ǣ$ *@a٫s;f̽�=͖]{  [_k/St꼵3pVbmvt^{1Y�hx݇:z#䈒c)gSz<nV󠸡f"4<ƸǔJFȠōQ <(!Qǡ2Voe;Cw_; ΀fv㉦y/(e\S`L qV]܏i-O.湃6^qb6  kuӭ Qf 6*E 0 2`mp%gԌk83.Lp-أ[_Xfݭt$[(,Jp# M-nӐp nՉ a5v(AW @1$k =pSCCK>&bH\BP0b]jD(^(;/(:CZ^ U-p XF,�31g:\-dlOxf3h668^'l }+Sbum-;4ņJsW iKS,R8ƬݤPDhoF<+g"PoL_1=!:[O^nxhT /TʌL/<_մ?1Fx{ז;rY|0Y iO>-ռ|Dz#RbABPV0a#1ӱ`no ^AfYܮHA|y@jib%G?c/5 i SOɗLsY~ 4ʙqƢi?~a`0^ (@Z})x0woG[ kM%OpW) ubz 5jl,fbMgB) (y}%,t eX+K9%IOܕ|e 8{dT$<X>Ҧn|FtCl?T-3lDx?wϕ'q*W 4e ネ)P^WN]E\2հʖG$aU]wAE18 rÅPK5S-ǦJ8TA#>\N4Z5l1?8�>{%;Ĉ-:˚|=R,7P\oϗH>Pxnٌtj`!HRN�H v@G<&^^h0Hy1xo_Fc柖} bIA/T&u\#\d{̣Lh'b)?0z1>WZ i?ϳa̞@Ɛ.cI<Y*W>'EsCscc\5^S'=PYހ"C&Y-~J )vIU.q]n"y,4Tbe׭$śJ{fpx΋u]0s^Wu#3a˦|*^q<Y. ;,ujn$bh|UY&B%Qv݈Y*Q&ubvl4T30i[j6僡vX; :qW1~D/ĻEmGxP#'o<l}<wbcGE~-k$vV?D -**DτhI?;tZ~oGoƤor+QEO\'jAnW"Q)t/ɢ2'M#Jt~e8=,~7$aŴc0tD›nls}\uvX4~7 $N wU;.="]I0_ĭ]^,D#B|VI.N;l珊øp[ b57fjl'^dVk{䴠"r[6E< 8W.ꠒ0͹mg`n#%c61];FFG%$ubm4RjZ ]^#}G<�2v 1x? &SER<-V1 zw Yci;e*i/XpJ 9'Ey<f]7< M-١ک2w@B Ѓ_xS7@ r*j#Dk w$Q DZ!Ҝ|s$@φ2:z�,tk@rD]/%.T)^ۿg+UD-ƥCM SHp Xia*7{}p>6EkcTN'sc䣇MlꨙSpSXyOV F:,Գ[lK//cfg@hdY=lv#=s02:ܨcb+>`WYA?w6p4 ǨwhoPl0Ϥ9 @41ik&`ˑcpvNvf_ Gnidz'\qXQ9Ny=QZ 0jKA+!RAzͼF'v![ݕuTT{4)rG/ |T41 &*t3_/̉G9+&hQ2gf4lu�vULyy iKVؾ8>'&phGGl<\GU RBVESg뙮rvP'IfϒkQ%�Q oO1'n<קu I?B9˽oߓQrWpE%|#gk;j)L>tYΤ�*ii359GXc8H=fa#UC߁x.>;G$@SotkG[7r&? rZ^. f!p k; d{Q8M{R׿CyLv;2gI4ut Q쿬ioR,ч(>wm89C]Ilq<)4X3b]&V+ysB@_@9Wt۾GlMU]VGU7|tU$F FW(`cue;jjy4L= Z y() [@QB|iYNJnn#+[{.<smKvkֲL@Z³Uq3XA{rkpa g}P ókMC1Őnr>Ihq@nKWj)?~¾˄O)BLrնLI 9ʰ\e 7pA Չя5'.'GiH  1;E+#Z!~3DqzD8NUqHajo yxfP=y$!YV4m0`)fk_-j_3nkCv Zuq!BO]]*U`٩{s -H:I@.70w%0i]TeXJ, nGbfG47 a̱\D9Ծa<[ʮg!AҤN"뫏SZ -t xE,¼"ץr3qMi/ĕ]vLض5F? ~X:vSua-,)\չ>S41C2_ �ڧtb%]Y` uP(xժ=wx<odăRP0;5YY~]sP'~{iO'Oc܆^եK^2v2Fm8ȹ+h*/N$ʟT-}7tmdԽ޾|#ogPpQ:nAe LyXbUj[*TYLw/GۡE?ܹvЎlD!Sn"aa3C\CL=w &OԞ7@Pcr}a,nʲ)izrM%ۮ 8~`ȬOV.dֱ:塬`mz<=ՒNR] =bpGB@ئw?v@dNC+r(G?XZ:_om]?w9;GdA1Z}$=X4`VGa$#9]Y|g8=ud8}BlcH`u5O8yq~ugUTg!Bˌ,`OU43{ arz>"918JXCb܍R +OMUvK̷ -#kU2gP:k dwYn9g&R8ڼd8HjM"fB{{Xf[WܴM86E'9F ø? ^jAyu0e7ѓpybW>E&[ʱ_QPz2+r0. ;2~,~4Ŵ&ycǍ<nh^|@YZhxv&@iFT[nz( _X {x̆mS`C}^-z,VjEH_䭊we*8|(I?<?Zv žain#OBzV[MrZ=VL?]g \<tu;ҕK[f 8 zfgSD͈MEckgA߮. kfd}#6.N`4-pXq8Tص=̯ah]5]A\Hs{9c39ҘDg*x ~\yKݝm׷O~MeۜSCAʥ<v`_nTћUHJV,C^D:ČJ#DlwYMuK/ Ljs=je_jF6=+cUkKNX 7>mZ?~CuQ!"VX]zO2g[+;YƇʿND%Hh[r$۫WS:zfNu\]EЁtS6 h)D Ib <: >oḾ"Vl"Gw6 -i ŎpjhW~J3`.4$$.0W̤LN/k_Zӑ;~3+ikC{]�W L't܅.vܬU7p}g+4/dxM1!<Tq7-;$A7%YE..n'xK+c'F _C=ivrLwxDJA7N 5v,~4`7Á{::[=\Q9Z\ፄ(1?|cas֩1F)uf MA&>\alUZt8Iӌp2=I:�M!-5 n{q_80H6ڡ5U<P$_ 1`gOR,cGO2?Ih (U߁<C1 niE ̚zc;"Jcwd7O^<=g)t_ȈD îe<v} nܰir.Ҿ<,DĠ}'fua 1G.Weāb> h% TC f\{%R}\`a5to^nO4ɚ&hd 2#i`9�}f#9i O>u+ {10LIZJry�c,�BYQFarIux5J'B۽&"}BٞZ0I!E67d4>,QjG8or#BA8l>rJR#88|*rF; Vd1w'[l.`6Og L~SoHW ~=У ba 03T F7wV9SC^-`W&"�@iM:ݏ3۠+G�~ LMOt m@SWi)䭸'X@?i?=L.3v 9V]SYB' BClr7h;Ou# <27'�\A`vpJM55x9ֻ=o> ?M ``ɭI(|(P[<'Ҝ;z[Vhd�ǓBUZ!>e5d(z<XdW߄5&KP{$R,9t R Y &|z-=Kqvfbc귿t#/.)`59dVJm'l]}=\X{DnB�y1:uh"eym覆 tt,snu<BW󶂖$ 3#X._C\!A,³+ig?Do)UJRgc|k?BC,.H[c2ο#jå^ oPEwK7Ǹr i=9k0Et':g.@Ju^nhK^&Ay?ƾPI3@^kǗYR^\~=ll<Eʞ+l?u }"BKǗ<]@JpwKM@\ RwS~ 58[T"WfqnM=xo(>74W|5z"1I T'j%i- y̨%7욳-*0D9Oy7D]8_Yjr&;k{Is` v>I$P)4Y{ntO_7#Tʄʘ P cIs-aK\{[q'5/'%&<*~S P,)Tqe>\0OI/ bz7֟⅖I{ȫ?z 5n>!`kv ̹'{P({[cU|'Ck[:O;Dbie.+Ȱ ҨOl?$ ݜwW?"%BS4JmUa%e93!8{RTf 2 }f7ixZkOVXINn'vrsLԉymdyLFrZ1VwGf5%quki/ŴkR~P2T 2^sg@#]覜[)t |ྦྷv0JȝB(Asz"R&ÑuRۛ&[Li3Ubgjmϫ$jHly, T @"eMB|]zZATD*{;sg* z%BP$zWLkR:!2k_hj%@.PiD}7|#["O~== kO'?^Ezr}  W)vB?1La᧹i gVٴ4N-i .k+aׂ ]Rϕn5]nFuCَtY5[[>< �՟.T_G%o0$<ɄQl �W8=Q|O?=0:p|8Xeb`1gX h yHnedh9M\=ܟSn`_D|z2v"j/>:~:+X4.ќp,G뢔׆\59 @oW,LPɘ7<WU E玌7b]H:F6w^#z^Q2*�&N, 2ۧo@ѥu -w(zv_AHs@iMƒM|:^ݼ01Q%Y1bpbP-" (6KO੘z t&e@nyYڎhpcN?#)ēh,}NDz` H<WfRzNgL#}*%cYʊCD|gc1t{77_/J*IafwYҁQ~čgc5~}rJ*`<T23^-IB)e F5O{p~ ̿Y=ォo+@^GA<X<H.7[ [~j8#_J~R'󮔿clw> t,L7F{ rqh{тSiOmD3 Yxei@IJc|xw}:odOJ!" QOdyЩs$4dA'4諙`1bs�$�-b%] M3~]7x9Ľy�� h+ @S7VX!nr9!v$3KOJ8{Gvut�q&3e/'kH>?Wuv|mtcqD)H! qPINT$Wÿ7* :0.% ƩHu*}@;`5RO#6H֕qeZ1u&)KiwK*r!@$?M^TQ!E7 !mpGg%ʵZ"T!R#/g*w{-*y,J#GF{{lP\ewmj:=5١+ψ&Qqeum6X0cܵV4S4F:4s#[cZ3l#CNhU'89bԎm'`9z0ӺBAzk 5?}<_oF Hı�ѮbHMU WR1yN4ۮ6-ч Q vG)sK/%{^1#r ._!SpK}͓A ʨq˒W)/0.]@p7"D;5_S4Zh|JE[bE7j D՜jX]s\Wg@#nnU~#hxP2 WÌ(o.٦*K{wFZRSv}!N,_Ee%'J^4]/)ӡ"vQ`uuwD,&}JQ,�r@gF� }j.""ɜ#91h=w!4DȻbjYFW>zu!"saəCHr{o7O9X4Sh8[-Ue&G 8z&ϵrerT&1S N3k9RP:5U&Ұp�l:F82zݹfCGe,f=5sRLXSȐo) Jk7-@tpU�󤿹 W~65Y4T DJr]lŵXa5.$ͲV �gwK)B%I<_ֵ)^䙆Q-staHP5[p||$;8jxO`Εo=j~?hq Qñ=;+<n<MARr {ʅԵ͎(_8  :AE2OU &C,v[S:O;:NŶf[:ZN!oHe ndR*4`?yFgn a0w\Mw狽DQz ɹܱ%Lfvoxm<0 fr1,<]^Qq} {IR}%nK}\cc#d`g18, b55vX ёezuY# =a&_͞h֣D*P`V?4�R2 p<ng4_"X;2n6-ǁCo.l1-Lv2RY @fORb,> o_uNk5KD{Ww'\gzsd|AZ 1Ώ^@F^^ ƪf{QDGvXX}7L}Fx ھ {$Mܓ|Cit6@)hC褊h=5`/C~.H 0uŷ-JJ/b)\E}n}#< I]0Bw,.x$h5q`guܴ$N%a^܍?T %HHܕ"enq7B_񭢗Oy<eYp]- 'ф#@Ez^2BA=-W�sU hL< kga[ D|[%1u+@A!!#U-h5[͞^qo'HN ~< h ōslpq߯tD+Sa4;*\aspLٞI gЏDŽ?bK>Sem.XqgA+ g%L u}W6*^PR$"=|..X/+L)+o7�$?F(5A;g0pU4buи&Y kjy g4[԰T F]xǗaBSxMq0!!<7Y_ 2LuG7b`n+OkLMy#>)v噫=ˡO>et[5[U"<zp^݁PueGH8v%Vy m5do\_U?g}6gnuNA3~zf[c׻^0td ’F`7x] '?THږWɫP1*7(nCdUd^7cBMF/ܟ6f~jjl+C fH۹NQulX1"~RCu*C)`Ś "qS{oRy'9^m0v2&ҽ8w{n<7ZR5ZR♧o|{.0 .Vn#op *1]8҂7KZp٩tW_]hdm:ٮy: ,rB/%|X_)oK0 qz@pVck2)'zsx2 :P"?7 Z`"Gh"m^ň`[7,~O_ **, \ .dzeyai\e*  $憢Z}`bve\j0n7\q _I!BŹ n�+ZOs_J%!>c|!k^&J*Zќ2mir޳HgL&N wPޥY2Kܠ׹JY1Y/"߾T!2n Tϔ`�*')B7jާ&2v%:#a!ppބhK&knqWAܕv+iMI_j}yхO[M d5eA.&A7ϛLi3 hOia|ߏpo@f?$qNv %K>x|ݘN{wfZ8qy.C WM/W;^y(7@œ+Ak ¥Qrfb3kəT.R%0TJ; >GUu+9Q"ByF^a*!XO�ץh�'6↾M3wxj87ʺ|� 凉pDK/UͷU*3ϯS#;B,5{)l:>yJJME8G,M4pVJo:̀6y )}H$y?6i;t 66|G`g An+$?RzIux^(f]_7*z%8S|vqf-8 9OZfR$u�F`[^$U8zv5~kehQ':cQH? n)`㷏7Ij"@5B1Y+1M4[�b+s*fZU.swMŽTG�퀿<&WPIDϾNK}#͔lQS«+x?p,-{rcQ`tN^ĠO䘃b҅Ȼq덁ða\78'efťeg_$@%\sxW[jIkv> ϛBsI^If?8 @/m͝E\R iL1F|,, ;mKDȊ_AX<6403\=ґD^I~LoJ>ewc*R-AmBpt: \%{W 3l<l9TJWw+P?JG݈QR&̭zPiڮoD4-6ҥZI{m2[+>*:7ZGu"v.SK)?0Qm~{ETp$Fn(-2 RX>Wj/q*=BWzht_V'jQ¥Ad~ c<K�ʀKg xHX%L+ྨYʎ* :,x oE͖C*IQ Rl6_">-+۷0ZĐPYO͎re5sΟ _qR:,2 @wM/r^>t" 'du8aȄ&p2oo<TkSݪ!J8g_ hD13`Bn7A=ZC >1LoE?P&{ 1dT𓥙4]\1#4Aώpg'r JFH,.Jᦛh A.uB_zP灲5mcDBS|�ArҒ9/Z1.rjÃU4Js�xHQP j[>R+MDH@tпqGl"54^kӎ['6z\%7Fa|DZ?Q%fX ky҄?뷍F2|H:Y]ov%9-PͪF(;L�>V^gl&-͈>uņBOCPH +Btw]9V#R%K/yJ͑Lnf)ywݕԒ2!/.9>Է%H 7>:?`׻3#*eAī-Z:$bĿ%gچ; L FUi[˲%I@{-5|@Xq׳B�vK asZr|Qo*^AFH2(&J3VjvLLDCIPEYeP|}b B5IeY+vCk m¬ QRrFaƼ�NH"rҘ c(O75 Ba&V?󎧓,Q$iqŢw!Ò[`B(## ]Js 鰆y= 74=0Ӊ-\De’,ڮ ȡBUd7ԭRal)\х/Gz= h&X`X鐥KyF/< `#bUX4Z:n##AR-{&mbغ.<Hdm;ee:ٶ/0p}LXbbJu% ;&!.38B_wX=%DJF$N#yKw(Ps0 'SQ�I^%fװ kx֤w+mhg]. Y9xf[,q c>}@<z$%X1 :L ۟Y.=Ic*K9ݔ%P}cJ"hfe5ZJܛN3C7 5sgV>tdRUS&#-nyo:,) Q Nܣ(xoHV1o%r_\<l$yrOs#pde5hDº{p{3ւQ6> S+2/Nn! )Eځ<$ ZQ~rCZzL'�o)RN O: 13De>Ɇ!&Ș|Ji*J,ҿ#v2p4,Ѡ`KOņ13dځOp#!q:jG4DEy^XV͢tŁxGJ>%,#M.G+5K׻cm[z-aw69 VxXM%z5ɾh5{vM,C(y ]t\ NӆBԙN W K2e\DuUJ Q0>U NòQX/r}|3<2oK8O,1*1>( XL.)Rؘ節PN c\AdrMM՛vU|aqv¤c[ WDFVO5tڜx3?Ve7s1Ѿ1ϙUshi؏=W/Ŗ Fgdl,nD Vj Vc8D8߁*__sOO(�EËT0MU81b96{G-Cհ 'r8=DŮineԊ[8`ĂTd_+ O|\}ElZ`N#f}?.S"Hd0Lً~.N5dZi{ɏ<I8HcU-a7Fp 4 ^V0s @M1Ȳ-iC_9v.u;+_X#�{t"V19gN>~]ڈw_j@StçHW 54u̫aN6'uiEz&C٪?6GYi1vDSHRsnR �'ӎBC0lA!$]"8"ca;O@ޞ~~]^k]UZ,#1tiZ_* M5ZȭJ@3949Hά:.M(AY:$'8JQ(cFMMwhf p]ypC z@*OY ^po V/g<&ueAzfV-)'}4;v'|Z<h$4//Q$}ʾ'XNt7ccie ˕e:?JLI=51U&hm^oNPTAsDǏp ,RphK56u@^yͯO;),$<+avVsIO GP�"0[ܶs5{F ZWyUm|c׸^ Z' aE\ڧQ,eN@ *<#Xe-ͻԕGL<awTteMun쇜E04'r'a;p @w|`HߧeO|U�6FkȼG١:ɤ^%V6 U"]qJ)q⟉jz&3ܙ+ ;(Q @8,^X/=Dt;KY! 0>^ϓ.r tNJ%eRv" 0nnȉį[Y-8.UY*4Z]wdaqTqȴuioMPZ( l˩_n8}FR:ׅ]s&Zsi~U է-cm b ~\2c% XXd1%$O!W quW<Xj~o8 ^3f7'Tnɥ}<wmڲM<QiOwnP[ZOoK?p4@ކ(+I&1AY<[irq3‚{ D #_2 ) I080G h (;Y^6!E16g\ DŸ�@:]{*a͐/uPfMy> ؖpʯ\!ulbźBBf9gخGZ"o\{4YfqZB+~-qxcr+I$qn-TuQ/5`c7U'Lr"ϖ" H9ʔ>~(l9ƖW<GAߣٙ~sfqb23T4L~;ƴTC+(k&TM~S都.I%C((pt<-~(:LJfҡ^uV8 D{s�<ĮFPL奋Qs%']3 إHy7?rл*RE},S8aP&ݹCнGLW~rTxNCCb!<,SZ>9dnѼdu֡ھYi|0QF^F,GVD\h7Nt:dL y3&1 vߔe4Z3K!Hпq?yYjS%mmT#'Q!ͮ+24uM݇(Ocd�M8煉X0^[?m8'{%nIJZ gY`\ 옆_&SMDnQAk5 6k[*l�w+AZ5K�${=8{lHasƬ wu{o`f<lI#Χ\<SsɢTb-RlJ8,Loʽ}J#-zآRH+6%<T$uƖpg{0J KzA 6p c&Է_?Kڹ+HV9{\xA:XuʰNk4W[b y' 3cmC�t<6;:6PLPQvǛX&|Vq 7� iLTB4 h0f;45>?!;8 r<T:.uI*raNNI9\h9s6tW^dJi[> uh3 KFUT-yiNVǹQAyo,<rOf tSffs6a2#�ELQo槞^2&#:`6}~ٚLӕ'Bj)~z|kgp /itݻA/ j=%px~nzf.v8A!/V?FsʀVL=34zk~}.ل6@X=DtaTK]ǩ hSr "qgf*e:WХ9l&Pᇐ~ɯ⅍c7;D0ybkNzɜ&Yi4^Xۆ{_[X{V1%!:SZ4EhC-~ ɓ-/ܠRfrp$D ?1'Bc%} rYһ[Qm mN6 IOYMVb7,+%p]n%-yXxHhڍtPvW>ucԈ=aG5J`Uz[!y S$,�4_hǔ :xJc{LC1h(:53Pp kF.N1I/<lY>!iCZj!Lm 6@9_fX�O[ ùXyI2A&v$Ql*c?9uJ;W*5[:s<Qǂank$7#qJ*/)p]f8ld}7]ډJ_.'Ȧ;q2f A5#YbSR^z#b]-]֜T|Y!ǁJ{/l,|1F?m%YoutLint:Sy#UsY̝+.k3t??{rNH*u6ۘøߵQKc<NP&swuOy.$iN=];a<JLKJZQaFxYatLsQDŽdvXrt@Hj#(VGM1GL?x^o;ioea43 lA[W֮8`ۍ1Y̍@DExPNע@U}iqKY�P IhKM%�c %NBtw["eRDA`m}؊e,sho.Daǁ5g�'dzb_k.RW3|{i<3.E.@H]Q4x?'kerz.ZPX ̚ /ZJSlF]FFsET L7s!ձfTz7)M/% 8e!80Wd *7bLUt?\}mA3|c�mPq>Ej(rFH|53gCah\ZY%5^ wrq=M^. ]Ke *j=m~Yb2»ɁЕ,Ϩ&&Vn)alwH~~z!q�,rVNUԷNi82BȽm/~&74#?lrVbB Ѷ)) ZLRL"l}<kv]nE} E5q0'),cS+ H֞< Mf ~nZ3a[9p3 \YjcՏ-:GHi b4;%Wmmo5]07,[IDwRsĥ:Ge)�x7})VMO# $iEg Cߺ:IjڔLmH jlC,+>?zViKaCunk`88hKK< " ۷Pyd3_2roT=7:ĐKQ"^$雱GB2sTi$-iX/ANx2ш@C pQR>8ʏs:|rJaqHo\fwr-#gQk)6[Of T+W8Ɗ BW}eע˝kGQ16"~bYYǏ1jphMJ$ൡ\aaB욋uD%[K,L XEG`Fވ4UepKtŐЌ 1̔Awo" \ڄ8C[v}oaBbE1"!HI1wLW6A[XBI9}5aMz<VK�  lOD$ E~%v/4V23;%ø%j24'S'X+5vWNE+cb0n`V8! E¢p>I//jR;vԸhz]u&dJ}!݆x9)[ sFB|+5c"o׀n0W0.ۦ-#hڧ^ϗ?B 0XYq_ NWGuy20 ء1bF?LK:?mOOtcβl#hšT'- &KzZ~lMp;ƬP7h!]E\5,C=R�oixIRO V$F,\/TUe2xEA&*L 1vmZqWVE&_Z8˷C񫫀f(#-8[&o׮}-}eYljS`Hu׏!7.HF;� ~0pe[d?�f;u/?T{W991�gQͨ`SC_#chO' ߹{k i .u6$)@R<Pu3,ȴ~c^b1qhM W4rOcxmVMVC'�FUl{nD4vp16o"ӫ!Z|J YhZm_.o'Uo8Gi=q*fz\Q<|M5F!IV-@d{N/ຨ U,aM /4誴r{K ɠ57C ,_JqeJo-q7I(7Hc²H|ih2 H>f/9E0q F.T!to4[]t7T6f 3 \i!vϙW_wAjBwz- #oG*o;i1$3:ρ1~r@ێLM;~& 6}gb %{y3fuuӐhӴac Yj :ߑā4.Q֛4buX]PGkG}C!]@<̬,ʻǓ{-I\הquq6~A3an01%aH|c"ϟ+Ndch:)Bzs<UxPg)à-Ś0;K1̱CH8+!,]�kO"$7Mbk-Kl 9 ~_g՛e&t�6?E^.MH>_CKP@r6|�w&ڛrwڟGRLGa@s` L!R$<rCVp5vq֦պ `9m섏m$Ŋ *F6*ܑ Js @~AHq68k O^MM\@8ڇ#&H2)"p^ra-rtlZE׌\jʥSr&9竩R%U&UMdŸ̳M naG 1}x|dxE60$x+%>r*;sIE75 J+/f }f=~Y~D ~.=ȶea`sx�cH _TྙGR�c/>!O^71&}|w]ĽU)\|.ɰgD6?f؉}9xc+2f3d02:)'pi*s]& 'p+́=4 (-vJ cZ v%U J+tUvQa*?ЛiS[F;榻) b~dܢڦs/zq( 2 2}^jA[B6x<b[!sSG;#cxnc@fއEz%p8RkLAI6XpòRq@h?2SJfZiLV@=5Hg[%_ѶH رl<I?#?ogxಐx-IR h< XԮ"�7:wγd RnegQZA N T@vM`pk|)2s xĀ6G<ϟpuK WB Ӓztam[Dƌɦ%0ހ/F@shOIg)ጻu| %>FR|hY֡R2W9Oj,d7Cng} R"@<ծH{d*FgUppM*GqoA]UhKM 1P޽eA .O!dujN,}7 !'N2꥗B:*s{Bż{ǑRQ*Y[V_ ^k 1]~LDyWkcLW) <"ə[V­'rK6{??:RswYS(WJ$VJmQ֊Po*bQDtxf7w`̷yELuOKn uC_p"^\ Bc܆@n{^ߒPJ jxLHaS,X3~HrLGLr 'm0# q^� ɦB)ۤLF|)1R m&EVeMEƏ„GY[!'e=ߙFc%%L71ſFSF=V́ 4vN9DB#ҪeCNGggSMQ7TBy|d>-܉ JY@<e>rڡXppJ`4Y[*2S={9H˵rlw#w{LjjgX#]=QqxQW%(IT?pz J=;zU}CpI}VLRF#uꀶ=hcJV) $ھo ) _({񂚑?ahw(a3P%e׍.q{ Hܯƙe䈜j!ɶJ@ WT|pgSb#pvh}6A LiíQ.+WI7#+O94i4gӎ48i!:1Vk|/9*S=1ɤHIAi{nM(T-YUHzWT .&D|';ipzMc%R*;{Pc\.BPl6m9,B)j'߹umHaܦ湔ik+g|,'&-O<|MT!M͐SٹNTc{v^p#U25F4$*pi{XNo cNWa6EI^FA. 4_5tVf'.`"44Ƃy = { !:HK:U&(I\H"eh$%t4 c^8н@RC`s}eo;:4w“H2etZ nq ./H  "cH5VA~B?eg\~`K/�Q�J,SaTK_ćJPRkA}fD$ E]g.?wh=02u.Fa_I!:JCrODHE sKX]l_51oW,!ϗ7}iKQFZd TD*FG51#{R(5e)[Ċ`c*nUeXX>@@ |F%7y+po[uBsGsuH 6 E|Q"缿,ZvKbrnQjEY6ȥ[N/~aq[rxdh "5NC 'nw^oٳx�2A4_ޝSU3,Ěbʹ83\2é׊=TKqGxQ<>tYU y,}%nzPi^Wx6e n-鋕8C+KlsQM^ %7hM!"ⶑs>21nV:xFѧ (k3\-N{=β#QvT3=^Y| j! ௰qU+AG1jޱ(ZD!ki>GVl~6lt֒e<z 6ggWلF;[;]<|Np`&)0^06mt56ӡcKeiSGyߩX0i͎sqa6Dmbv1qCHA? Hpǂ Bcl}m@5JD;0-R2KG bB[_;�K!bkWɝa:ƀz@~xX<@(jtӜ3f{j ,9 J{1p3Q&w["Kh#Z>x|I)ĂhJ촒�7Ͽ� st]6Ǘ_e?R� )m',=;N{Cʅ]DE|5ʛW3IoS|=8_Pz'7`94Ѣ/rs܌L@gnhgNߞ'jvұ.$נi0/q5okp%2wTcנ<CC0#o@{X3␿CjH gojGһj~6f?-O(Uȅo>eiN"yX& ӗ˄-+MRv`8pPuL >4.YoW}ZxsTg]>YB"<'q= {4,+FHcMlcfA<|  ̋;jJ,�?F٧ ׹ƊK~oY�\e4DMb}V'iJ":r%0EӚp~]N䠑R6pOu;(ďw*lV{A ޫlS/gJ�N6ϛUIu>+]"0f2׀Ws"5к],-?("(f>x<l5 +]WѯQ Is;ZV"#~MHVfG &jhW29oþH}| c:L'H\EKK:YAWj" JUo*t%A:K [ {t[ 0TӖV팠XZ"m/>Wά_,H <R&[ݴJ?<"u]<_72wR. \ �.^?Am#koLI%L}9w[v!pZGl*9I.؉(A*#ч^5ʑu&[Ն*BP4�Yy.Fz[|0HEޖ_4r}{eKZ;⓱$CS1ԿU^f:5/IW*Cc4͢)lSiX 4oOf{f~: 4D\A9v/.=~~"j'v~!<m߰HE]u}x!ςpfT_ }Yo!zU Ц91$O4rM>CMW]+M]"MzǸrQ*u7$ S傋bq+͆"Xt<f2{bJ 3˿.@,ɤn XksvT<>ُt[mMH]f<͕3!`veH$G:ge̴TM#-5_`)JO(8 an] Rz1W"2:x{4ѷ#gQ҉mxPdrPK;L qIO{WIDסN5x[-zVN}r\"UUv.1r)da{)f`}?tM-HH@@xzύ9xĎ "5su*&Btb;ɚpp fŇd@ B@ch}j𭩤%n' qRGVHe!RrMTFOgҍC٤ê.2ƒCc[g4w+ml,,K;4>h힌ҳ>?Umgu[~78քa3HjZ\jH'0�DrJ_v| yERGƋ[�=޼ 8@fr'0\F)?YyvGvXsC-''|}TxM (SS5WSAsifY ˗'aĬ+]t%T JCox1˳zZUq/@fV5VoCO[N'T>X4pW| eo*1 )iMWb@ꡏW3l{Foj+rķIXM;ĵɸ8n 4�k='E"KTY*Ok5澟+=C["_ˇiaYoLeՅRdUvB%:^r@Uh|Qg7ղȷ n: UnyGv9yN'ϱYN(LF8I $)y3@ؐeA 8.U(mF1c8´Ӱ01]<oxx`Hn|"(8H}1lXρrzW^xЋ&^sBE cE|$~K$Hl+Xd6H=yJw5@kj;ǯL{:˯9ۤ.�$ !œ_媴xW<@lQ.X^>!GKFu7rYb҃S'h]Fu7Ƭ܈.@r00MBkȐjӓyN0u Bd}L@qw[[2*oєzt|7.rH:dck\r %ٽ*5~ /AI#]= iC&B#k1lI_6xK\')CR(зZO_aFL>_gQѝBXbU-]@nFol.`+'%-~_ΓظJ3K4ErWZ^liw@6B^E^¶y'tlT KDz+"|>/~W^Nb𝮬 {~(p+>e>)6w4%EZP#g>:̡:uFtP;f:&x,,h(�0Cf/C3甦i M*~b^4$pL>}_gVS f'Cg7A¿c½mlDGJMrJ`F=w7!w%1 "XD3e*TRn!#"+M.eXS>cy|F3xrѪ}lw0!vbYCkFBQb 9Ŀ+C&Ǎգw!W >ԘS<L9Hཔ =^QՃȊ-iڪ>r*݈]$qa$͑Cva}&mQ뉱W%Ȳw`b^lQvPmc'3Ŗl ܯHchL:5"&P$.[T$w'B9ui `k™afɏچ;,#t}0"UN*a꽎Dw a>Pj#zb$k2H>č#2 c)Iӝ`0K-3_-,b8?@Im6Vyi_ w*r˺Њ@mYv*eI/ YAD(dtBL"e"Lމ1hlq҇ɲV~x):HGkRn;*PbK/Y^L奆Hayp<9%%&:nc! Vi,QyRDo I[3Av=,P#& sNLx udr.�h\1=VDS:ZZcVJ;t \{SNЮJxDbp fڠvq5PH- d@=\3hAW�SfIg?>^%;0ՋuPtނ~:y]gYDGY@T� ţ+TAOw1n2r70uq>6P g � o~\~>;lT׾4%Aܗ\ ,ґ.e",E9߀Et7ppKceF@ݙ&?gtc3-e]QpǨ?Bɿt%#̟1a-FfU#dmsг>wSZc%tQ'.mPa*+}' N 8rmΠ:0[-,8c0m[NrXpz89[UJ~tƓȱ ,g4>VNYV*Q[ͥnvPY˼FU| [ A<R婒yL7Y tloh=nT͙^T#LZ-<\C#5j n[גF,O7W ĺTD+Џza,`$ER'> B'FuQ\g ;6~\G<TZ%⚟;|,"R{'-"[͏4OqI6;)'6/nҕFK, cL9Pp~* ^Do8-hc0.o]:8 }NLT"�CSo'VbGY ^K1oQڵ]Dƺ5sﵗwpzGsgW?dM| '/:P4Zh5eI:\L<"4Jt2bMR ^Լo2[uPRvBd 엛tb4zu*� e pT O;I5"fۍvv6Àa/|Xwvfƴ < Sٿ 1{fiq7V""5hRjQ"\O&̂l&e0@6!Š_k?_輺@>1 IY@W۾u9~-ԄŨr#>Ij.y`N]>5;� .F,9ylqXuSzsa=ƣ͗!ј>Zd;'e~}0ffr|82B<Et c9*E W }N gs.]##7[/? ]i=/gڥ+\#Cp*3Ւ?&YR@. mpћ҅I_ǰ[GY;Ar^l)&ee`ŢW32m$2Jz!]I~3lw'w=H=  DɒJiWg8V; xnrPYNsW͘,z!. 9̐ŦUiYc] (+ݨ\|ɘ8$k^} t\&P p [ҳX1 .m(C ey~�tYsc�brw3t3K?4.h#MRW{ Q: .';ڹ<*(:V;<'Q6*!yj]زX)PAm-;UwNxY_0$jS{96(r~ zt ~ l]LN1KBZRcd43Y ~_`{9<�vWS ~Xw) 3NCjk\*֞(Bt (HM1{3R+SnyKM {w! G+;6US`'Nw%'.b , ȅUuNO:a.w:S<$yD42$]snLeEŭIfVV!nf_Ih[ãXכ`s0`-@koB_y<_m7-&IZ<Rb-&}&,bp쬻._Ad-^l""N@=}+3̡l/71Pח<pݮT^6důآ><7DTP}4:G9NSTd!,0H8ǀ#1 nKf~ŞYc<gb?Ścc˼V;SRtV&Tlo#./IOOK\ DLxX,HiC0G*{U4Tr <RzN >%q"wE"6<ӪXVp%vrX ,=c%/M9E`1Qatɋ�9qv Źi5n V&F"_hLSKSxNh�zeH/&3#ܸQsF!ʖŠY1,*ʨ,DcO4鞯UNRɩʥ-Y 6j]Z_ON} ۢgK7!>A;v΋e=YulfkwhlU-4�vwaE-/C.p&%~D" oLZB><y=THsf9O h@%6^ÿkSVZߠQ]k\ʆ$Sݔ{C{)be:ʸ`>B,!.cЋ{e>yhȮԢYEnj>,ړ7]:Ή';X;Sz{y?F\U-˚QsՐzL|#%:"[&}hP_58'w HFG$1٘ɡX_XfA+ vL`Za¨fp#>1u_O;JA$LM.d*)zjZCn!uof֥ƥ{%xg>#Fn`@/H $LF\m fN6P{ fv}و"}FBym 7n8ϠH3 @rb^hvRkD4IW#(N,PKf< Ty?Α$ն06lI ud$u!aGH6Ͻ?lm޶3W{>,yTg46>|E{YKl8 45!+y) ;],gC<jLٖL%Ei�PϪR'ÞEtm-{{020Pff슠CZ*zׂY߅D,F *5N\hM֠=nj 0ĐzZE_+-ܢ+=뼁Gr<6{5#iN,m6h}0O;r&] uUlju|s铁'_[[XrҸ ץ0&gDp`֙,pe5;DwmYMosH:x֭<.!N/t>u]=h8lBMNbL7Wέ=GE3D,L-~B<;0!*/,jzַw?YDƗ,<�N;C*HN߯py%4+1Λ/1n낔/Ŕgٳc"@mm q +\!\3YV\*eSn߆jd׳ձSJh[xvDv=K;Dޓ~z&d^d]0NzX(r]dqI@-F3]S1,s3 f|ly:3 rzbڂVq=5虁%Tj  ]$G[(C̍ g=wl#+q`_fN.AOk; H>|Ҭ� (΀h=vatc܊璔X̤K@g0ӈܬ4^Nuc:<FiH-.aCeWYD\J gcD2zVaX: 3EV{ E\t3wDmnLyq)5dx?Grɤ-,_L% RI}sd×UAmo1%(Eu0 ( /B5w -Ao< V4.w Qj<o/Ϣbvm,ދ$ˏ:sH3CXYa9љbDŲIP[s xE׶r-C(Dk:ӳtm*I]”4?nK7iyٲ`  *1ks9\C7ˢ\ }1ᐑ`K]Fc<lr}|`1 d+vrOWae|S'{+}^$i=$0X/Ϥo xy 4 Yh4qr>0(!9h{pIkKN,yLP*mJ*s]oI%KIzPG84(1;uϼ5LIlx#pWGR(i9{*\F^<y:}>$<`p j ן~%I!\rTrW!,2Ė.%Kk_őr{I)fWw�<[f9pBqb.?)v+[�0Yw[w!_]NO@O &~P@\YPƶ>}1&uDžNJb(IÃB7Qh."@ )L})9%Zpm:|jel)ϐ,W@I%[hh.iPʭ &-ԐDٿ`q ".ZT؄\Fck,\$Sk{_XhrS5TlSJ!/LIv)HU \âeRR(8`,rkp(. v;9]T-h%n.DJF|5Jw:JwV+y`z)S,=AvCF;bS KT6&k=V#NkPdDJ/{M&_FƉQ <Ե0쟜Ԏ-2XbQ+Pɢɡ' vBr3~Ndf$8;&AQQ\!c隀T2|1]*٧gCn 6\ GH;F)]ؒ uQP%3/n}H})˟-g3g}m>apl_40t-%F;.wDGegdJx 4-UUSkⷕ|E0IW-d8j֯ìf&orEo9U]'%)>ᏠB𤷍F~6ɪH҉~U$kQFwzD<ĮNzodP,(cD<~}݁A@{Լ})n(zbc:yOJt)ߧ4tymŦ4<ې+1%aHN|vb`T+�^{}w  MaAI�HCZKG02|Gw]j(G.<Ղy 5 9nڇ0,FC bL&&�ޙ>nbن34=35 [ dw}oϔPK,b)+lc B%f 7#VuzM<3P2^6!%&*:}j5r* fGCJoy_A1װH/lXzA' H2S BRkoR pJMLogW 닇&9i*Hc46SԸjr L2Cp>(&ފg\T"sՊ9p eU6s!d2vK wXW<g`y*<(jUUAu8 ?A~X.[ &Ey]ԮܹWI*%TP ;DڍCpRY8#i;ò{ ܓO'^|f =Zyinu3Y]MH֎"ŒgE-mۈtH=ׁye LZ~jǘ+ɳg$,[\bq5>L?Ff站<4$?l SE�6d.d;tV$(mw N5N|Pw-ܔY^)-NISY᝼ۣ ? \FL] s,w d}�]F#*y0VFU ┥GOP#+4:F׮f#WN ݛ†}qD>+J9/0"7V%* Db3ءV~u#͵k9e6dim;bJ#%�?vMteX|߱96<vV}E7YMc4'cjVYjPQi0gs3NDxU`ӰA)jH_QBa?\[<g̻u\0ӠC­8xlМYПN(i g EF- F|NP9"$ŖeY'z8 _ZѕjNN/MH&M{C&9X{_qos#wT y˺<-?$m6離%#MktO:'UfPSLcbKd)81!7& 3^c6Rz ξW~b+oC=<sL�wQr󏢼𹉾Dkl$NR8\/ш</̸"Q39LQ.[V/C7b"o:Ly fբ=2TC, ~&ggX C1mpv/uH ;<h7}L!xvʈKjCtfEk(n _Lځ5!GoRǨMƟ$ɏ#?h-5J3 `.<ڃgDyC &:je v>'xll.� ۭ3"I|2 K9@u[ݚ'ؔcMSy46io3Q+G]ZR;Yz${֔<՟8QʃxC0~#a8Q0ra DRIJF^4|+93֤io(Pw?Ql(0\L൸+cvgL @IRhbӰ/7jdQƞ^{څ&FǜV.=墶&NWD0۝/F i+Nnj[rT~$U2O�(2ajL�9%Q]aqKrRo bozFUsxd\*Y %%e ܇;G H m&zщqO,oQ]{2ъVy._AvW]0>#l(}8kMT1+ |9jSpWd&-6 C$sQ;FR20UQՉɦE7$>4+Zume/WϜL͎F$jC :W{֖ %dEIqJߋxO֏AU#Fj%nB "<„a:6}@ 2X%:ǷpfO`[[*#A6e-jW2{2R~|[&vth^؏ɮ{LAVJG{M,Ⱥ%rE U4pp4.^kN#@Cܝ;?< Ѹ@㱑~!#GΈpKZJfy*DÆ!DM[Hp x5?I=Y\L1ϫ'"e 68d%G~W i=W⡑.0x,cI<rJ Qπ}]buTbv^<Bb5!˦"monHaRSE Ng cڲUwC*/cAK^m}50 O*D1uzyUP20,ъl W|&Փ>Qڼq[uIǴ];V񤋇4gd[[B+BY[af/V&)6S mmQ Ur,RVGjúi"V~\qgMmPUnkڄ8L=v[T ֟ډn&&ho]soTf4S&ũdE|FiݓFoHc2h40PAƧMo DWWuQ gOSk2!_ef(WI5F7 zGGEz~dyn#!ʊMa$6TDDb?~ʻ51G4 )%.- -UnE`!P6s;l,=q_j(iH Ԇ?|S#= do&'LW$ZNa=Xm`߰]+BJ2t,96%<ЙpGEjucieɟz7p a6 o"\$2~y}T]Pe Mh|C@j1qzz1*!а8Z[&LRR (GP0a[C;^•MzEOf):Zݲe:yj($EֱΣ)%c5iĭ O6JoyQ*<^&6|zf.j^Y|MQ|%LYi;k> Ŝu3^j."Rit,ssߦUi¶9Ż;9ڷޛ=΅>bu%FxmMbэB/ =_pYos1+*uaD RhyfSaaZ^_P/`'ͨK̽9n0 'C&E2�+`6z5ػ`p񘓋! p΃H^K&۵HLΓ̠W ,HdF>VEn1s˸aol]^i .Z<;d&rҖ[U/m}%XjK\t J5`KeЗ ثh9JYYb—wuC7~n$䰅5VWḧ́,ptf>,hT#YnK3 LCfur€]wHjp)Rl=@$>.'N%?g^2"L�Ű QٞYmn Pg4zwc[ 0bV#nXIł_CW! IymX!1hŕ@> :s \Gc>0't/g͙䐍ϥ3 7!8Ԛ$:eJ.1#wHe]9|MدLئ/tGYq{B}Kݑ}3ҰWd"!̬B|!�E( LQ&J!z=j=O+Y(Z*ioM7jle$y{#+jxٶ6 g:d}MĽQװ~c,L*^jo}ɡ>ԙAͻ@Vb&| *`Ӳ͆X$z>txҞme>\2 v/DXܿ TJqՀ3hǟ\%|)WYߜ#~!fLڤ3X\X:H~B&{=li=_6uq+B(=<}VǮr*CY$9d�a)s I{ |Y\4ܐURos{&HS͹)xipwg7K׹} ,K@E=um E3P3  ?,[)BPB �X3l^砕(܍gz/zf#CV58f<Wo TiŻBy:Q(#PvMl/3JZ ( $dI%$qh$9 L疯ymeCOrp~xEt3`?dZ͂O4 4-N4wt?Yl=D±goYDs.d3gŗq;ۢch%o/٘ÿ5ߘ|-ll_o1z<Uk#]OU$+ H2Y y>i\T={Ã.xt) ow# +Y34Z$ t" L5<ա̊b0|[Oa^y8'+F T#9 p6l{lk  {/ݜ2N5/RY<RYjq썻 Fi;0 ⶘%/9e-1\=tH)*nuơ买ixXRkB,i~" CvXV^l^$Ț4n:dF)__L,p(DlCG<\)df� u$tR2ȧz`:uWM)ÑLY TDܩb1=Y_@r :`'B]/z lk,.hŦL‡},}pWy~_z(ALŻ(rMI4R̳gǙ,곅>4s43K V=*k;>[ ;݌α.�N7Gk6/fhAJDUg'%İmJ8ꝘSl(Fo ]43ri\ SOV'`p ]mjJ "< LHϞiXq'Xc/(<js8"Q_ ꦐ[X垂듈p`5zd,Abut}m8lxa_hNB1t>lG*pԋؔ7%rY{ΗZu݅HfÙ8Aq)z5!GsXb|p8]ҾE$=JA/z.mnkYx(;y=$5GG<ۙ  8RwK˚= Gb^Xµa' rgAH"ҕ<&z>1̾GK/;8aq]N'ndFx G!#h(.l?nXks;ϫg]9;ӗ' ۸!-'G#f[9%]K&5` .S|_ Ȟ+@av(&!դ@yOORkҚѢalgiiTl۞+[nR"^kD&N g/uC !ĭ8P!;v`x30pP F*cLo˺ܶH;y)6 Nwp!kՓ-D8xW .[6sbsEAfM^n(twzhV#Lq;/}N 2ɲ6fKu aTvTM) B{4F G-�2~A߽XQkfFo?ᆭ va~S.$n~![h9E/0X%Ů "#k yB #`q^*WN|ƫ,5(lҳ;e&�.ZbKc5M-k[t{uKZj\~ wݙK9Ji9Oױj*xJ![iA3$]fqcވF7% 8tb@`6'\PGPoHGx5o_78L:6}kkX,2J(Oe )M"UHMpWr&,r)DAr{�1LqWZT4ǘ7 0&I?FߊJS^ި#[КR6 F&LbW·$ ʃ2Ж"ӔM:t Gx5!$톽jF&0udCV=ٷܜ Q?sd2~.]^Ut3<.^R,Ù{='2GE4,|/B]ך?] �fqT#lOc4H"R/J~xB78ԍ|SKS6h^?8=g䇏.1XҟPI"і|Lo, lAD(>on\,rjjp7vdc>SЭ& {=C˸'ľ)56sko޶F�ߣIh5PY+MtFr)zih!fv yD{0_&;/t̴OKϖUj <)Kgd'eը{hs]4cQgSDٺTW%qS!e}y#=٫t)aQ;qHe}$/G<JY 'o#^(Zwo4"7q3-}q sq;TO>~uoc\z'^,w'! O84z+�?b MEN]h0dKve]K' D,aEr~UQ=(v<oåsJ`o1Jް=]~6}- IψQZcIQ`"c=}Ѻy:rН X^`yS@蟍Hx|Dy3ͯ,0kjb+] 6#wajPNaҹ%|"6DGf8G̚j?ܾ H<oX]Ke.3ޛ O)Lu :a�1=G |V J5*J [;φ᝷G`6C46pfMK~sbիr6!|20_z3uX^~&FÊ6;볾_NM nlkWPbgH>Z(Y)PE�yҋbHEr5eCIt3/ҟ'?Q3bqn O!>Fo3}oo7|�j{™@ycq׉ ms5@NEwzZGH'}^vO,m&K^4jOߌuNSS05GCOH 'Y<)F%'�GBsg6iLq6s9^Z2w+U!'a׺aWKvhK}\Bu;A NsXmoG h=Y6-&.wcp#"~`el>c^JsIJ eZYD~ ;!Pp* `a{yoiJ;[pk^D_Bd<{z Fhy 35Vk|d<{b"x*~3urowp `/4yh]QL) g; A)}jmV|<]0O]S KE` (axOe9 \>􎐢#Z@{Cn`E zyG,:PM=4fO@;C2RǾQs+DD?~.UL^IٵbBs>.A͏s6ȩd.&aP r4[!o (ԇjwֻڰ8Mop lp"^ |sjG&^}t,llhw9 ,G/ zrsw3m]T�ܰ7l%t? _N˓')p*:fė'GIuʿEy|"GoS>rP�N b Dg10(A@l0pOn|A,#jH1kr蔈6srcŅ5ԓKqc̔R]T-YHՋ/LٓG`cN3@OW)6VUQ1!aX\ 5ZIs^K~RU.!t(%7h¿n_AUo4+ߺ051PiGO"v@Hu!A΢2?Ԗ#fб^u!B?.c.?`)jر-? $¬:oF{*AW& .Yh0'&n+۔\Py^G:b"|: 6M57#tx|b#>Q  D~7!=Ex2P2KPzÔC4Q# 41L}PS7 k%DLfj2+{n9}Q/H2 :%[zІN6|$Ek"Fj{ZeȟPLCeɤjhzd!vǓOĒ $Skgo YrI9:ހ˽ yEA9}8-_I YXĕvR^#'xWnQ0ץѧ8qgR%y]1>VCqzR #X*( LB_O8'0ReT!#E8 B-P?a _@?PsyGIꏐ1ާ͘q-MڛʟZjd&sKf2XU<D_s 󹯼>[Eb؁~{,J~=�(\)(;Wƚ‰/>( "zHFI)EJnY\J7"tQTWEtYuꒆj6̑[=gpP{OYxd$2u0Vd\6z+ˌs'{m 4v_ g#\8>s v YH%E?:Akp}g`8@ !H:ܰ `Ek<A~S'W(ac%`EIT�y.-產{*f5 *fNR 7.Gw2ffiN >LS(keqpϗeV~{ YNBWI{U5K8 yU!c\:bK 7pX(2b6-Z8%vp�' kMjW,EpxeNTX9R/(g(RRy`Ϻh r*[²Q s^-ސH Idž!337n>AZ(%ɠPi1ˊӞ\ZUH B,H|n?3d-CN+2+ԟfFDxE<.hcR &^*X$!o""zLz|=%Ḋc8g2t[ҳO#2*<vR;_4TQZ2>V&CN^d;Y':W~"oPГbg8B痕knІp#n>~Ommw s'QnfYͱyl'Y玦^ FAQ);lfM([eɑV;f`ՀL tZp ce\QdelSt lN+qVVdVU?.AtRJƢ[]q +cPLY@ΞkΟ~ܟ4/@0PbJ( [&`׎wfhwSa?NG.l΅| &VK ߯QtoOXkڭ zͩB1Ly2 Q/:s#gk_73xTx}[rVqyӺEH dwlAA "^2x\kYoO<%_阑Y|WUQIYȬ>_<R�~+G`΅Hiʬs hn, nˉ c~@^ԣ�5&LM]忘Pn@HS>-7UƖWc9()v"P嘁-]ON/\q] y b4%+gaϝ gWŪV)3JUc5+²rӔG&,y ?Uڤgt;Ny% YWncɐ<I,(L vO~ݍ^3 жRM~>\:e9UZE)o d4X<?;!Ǜ?&OQɿB%mc9{/2?&RWB<c)x$FDwK:+@/Zxh2i0;-Dǽ!Ts VY/-<hፕQj JGMOn?` RZ^! :_wgKL�>MÑNpDin? :ZMܷFo:sij~*``#(L 뷃nyݸvKv_IS X_oZeկ}H0դ soAe ;j]by8=O ФmH sĂXF7vgu)o$REd)Xqϔ$.&owlӱ-&Ѫ͒=6v䱡.,EĒT9(O5M$-U(/&OcFtZxk*Y&/.]Ru㓬k܄|?\[ Xƥ'|XR[~  n 7h#HܑcPeefnO;#exlUV#m#xbBc:  ;_nKEv(I!\׿VY+)!S )pڹq`*8t{#MɘL;"OMעV Z ~ 2a Ō<<>�5bVx(#)l@~sfhՊ,a'#/Ax+w숉_ Ȕqj.]+jA  =1 (v ӡ1v#kZnnEb C@8,<4]poBP4CՔ'k:f)H=%Ԉ4�~15(QrA7~b g"T^к~=l}W^�3 u՘;]&܋u ,` W(Vh+*�k\_a�Ƀh8~fz :U8 3;k#r%A|,AZZqy0k/)[v`E(L/jhz{>LA�݆f͏5tFL=):.К`Ǩ,6sНRpܜg~W{m7V(% WF::nZ,..= !bۧJGYQ@v+ƱNa Թ@#w{9'A[}R3ԚQ>>HI5Tc-%> AFGV CF@f]3fD[ZRtrh1Ym\!tL6q fc։ un[Zƪ g嚶5 OuQb)9,xcnyvm<G &^d1xJ qÞ-d4JlڲeG踆zۖgI^0. -W'5dgh2U|XQ+ݓ,~(_6pR9%nj..\3 kBAl0~̀ŭ?X%XƔHiM�܋Dȣ/fxg-|\0[ZmB*49�oIF',;υi¸< Ko`lMyq#Jcץ'C@ekV?O-AoAFp<b3mw\J )0B F@ ‚ςߖ_}M=b?i(FU" }`KIW7E4\8v5a`: ڲ*/a%8w^}n);?<4n;a#wwF~b`iSWASmd)\oүXjFj_T.)G'YǍS4qrG6(連ݘ&N]6A'>o:G>A"3;iI3]1[tJ`aGLNL;ѓiR>/sjb,H;H"3fuZ_0\elU#:1 5D> j;pZ{gLD,&*=nȚq#{tm?9M2jZi'UTJ7}^?#f[(|FA wP*(Ÿի,Ӓƕ,#,nx௼J8uW)!=<|-F?m3:PZKܯ HA=u|=~.F۷iu3GEnpxP|nb{I01F%ԺNs%| Z(O?-@6[q\W,WP5< rĈ!C½H ߎ%(vTуm483ȧ:31<o6'юdg0SW>`-JM|rB.%%DvHS#r4T7`f<Ҋ6T$d3yZx!%ɚD'Ww\56 fc!3UB;`W !+i�7";ݰ|g$?-u2z47q=Ho Z/4eE^QkG{njQ %oʰcNJIh%J ^q,\xUSysJxV3l/۱ a[M E*6ԟk?#ˣ2Y#&ӹ/.^^<jkx,+3.#]©udÓA#P5R+(:C'rJtz}W|5"QCO"LJ+((I;z+%jQ n9khPӋAK/eN)&ݓG\q6L_1.Y,ۣKһ@V9R JV/#;/ 1iGKx$0bhP.=7Xqe: :Pn/+EXl JO |..3.i'-l. N  ӂ;QԒݟ)g |LUq4 xO"7V彠E\7M0#0yW"ˠ'6Bp9]n0jxL*J/5vR{$8*oM]Ǜ r79T9z wk71J v'BYeݝM(} 69 "oø y9W`bt:|ˌҿ[O = r*7SyUExrhG"/RgRTG;po h6$/H=}kTC?MQҸgkE,_ oc}.Z8B:=ٞ2Qim{=<Iw%vdgyϺV3 FԾk�EzF>�`}l{w]J[9n^n0HM�|&Raȣti*\iq1ʺo �F " w\ڋ^k[645S| +Hosxuz|_c]ء("$'չc?y.FZga@)5?<Ħ@3zE/$ޫeia /{GhNg+² L+le8l-wM^^gS{ES~ȇj!L WB\�bja|'p4EJcdZE9<Yy?ݼ!36ѿG~łCX}ٛ?l�ZFT?f<ھ\rm0EBꆱ`=V/ʕ#cM~~Js%2ԳltCu'Pt;`:;,lvtkމȘ#-]ɱw齚߅`*20^hݲV-h {% JRuٲs_*SW] ^D' lkOm$_({M2+UsF/o< '!%zҴy_鼈P:LmDbByڈ0Ѯ7^` ryZtV 2ruN l>|pUb83yS ʼ}5Prkg0k =tq蝇jzNCxG�*#yFuIT067@1'R8nf U o9BYVkwȶ2qzǾv+>E.V)c6) FS4klO_LQ'bt Cfk1+A-5EO\KFWxzkaOk!MaG;_1&O[ (S~$EDİe6f}kM:$6r @FKnnamj ?cJa\Uz$#J,=S~@!0 RQ(Ѥ&_jr05-KgP :WXɦ1j̘bت>3d�Tif4q4ޗފXR{"|煹 qԫ;D #6]| 4) >oHK2G1vziC|̠}%o8sZBlh7UOb5b5, �?Z<q="!LɅNg�\bJt0!;VS Oa -i:Cfo) E0嚽eE- ŧ/Q9]wO%O+6wIo!@Tl{mEu 8@џ~LL=Vsh'opYb=ː<[ڬz~mucLf(fPEҬ[~i%w4*VF9hj*aHJWLQoXGM+/lMT/mE oh V 'C{9;"kՐK ,d<f m &U"ew&",p�u^-wc>߁? t :т`u1Y$*fٜfQ3ilݬ h {Rs-gnmGFzˬsepFA$6}FU%% ѧ<t~SrS{P0<+ytJߏ9 ?ھARzk8`6LO8 NM2hH0C_N*0DGی;DD�`Ͽ~~ zḨI:+q 9>3xR/ӻ5Fa5+57O@gnR-_xF.G,A DvÊ`m ctÐK`N%?QlƏ\ Y\v }�~~=ǞG<3ܸo PTK Ոy@$1wuMÔ] P9*}̰jJ Ԃau t-Y-o5?)9X|y"ʬqo2*h3i2n-a*L4tyD{_dn͐amԐ|[q2Fs{{�;O ;Aj`_N5=4DK-N/8\`#`X>mȑy]jb%h \rkl-%Ub\hX5b 6pjT Պ� }x9t)Z82gТP۩0 ;$"{ͭm})ݽa#>ʟ,()f\Gg+nXQq<͟f=\p%_ k?Iul2[c wQ,%n� *K uTwtٱN vdF{)YE`^{9Yf >$mA)z# P4Ie3<= qbZ,N^c.`b ZzfߩEǼv <=,e]p%BeڈY8UQ!IvZZ]NJfB`gAij_xFZ q9#) mh$aݷ'Máv�*ϼĸ  ʊW٤7"ݑfeM0_* SǙFXMjdLމ9@)�85,*HE^m_h~O?Y Z[0̰?f8},,+\߯l﫪EgjC Fzmz)1ݞt^ɀǵyD:Xm݈'.U꽽:Si�'gZCM2Df6_FEepW% hs 0iA/Eqq% y=Fz3A,rp/~}gHO39HgMX^݃᜖rEn8e ~(@wҨe�wS^+P'ՠD'#&Jkp 3.Xi8@|b)ɎBpca<gZ)smv3' <NB6YnGh 6_4ev+ nieK;C!YDg"+/'΃l�ot*cf/|(7�zBs,h.3\B /Ţ¿ΐ)xkca fs$ڳt9nR࿦D'p>A`OuH6^5j b{xKxgmypckdb6@F. ~M$z QEZ_Z!Xe ,c*( 1KtC&"*~rl4g L�酯8Lj%KS7Oݧz)`unwa_OمP!Kl95 pkōp?؝5*{) ̖ϱ[~gj48ѭ�m�a+*āR#a�oC)owsV>Wn8aL(u;ii<>'n˼L.Y2!)ȱOjT.[95N-mh/e- }1Ej!x do@z")D@Š'Ԍ\'~9fj+Xl_m` RL^jDQIj� QDʀYFsO"% jJ'τNI PRB?w ~׊n%zCi^ﵪp&\-i/9nzL˝uǘ*\thѴab묛n@@CHCix;An }v OQe9G.вG0m_C+!kw4S{uBfIHa9>/KWK2ѼO#Uz JY.BP\VwӮar;oP?�Gh~6qki:Ǥm ,$f*G AgTǍKpV�IJ#Т ,p H࣢DطC:`^^=L1Q񁖢à " ܋߀'7=<^u e=pRхڿs3yвF0g1n8ٯb;l$ﲖx}6J[>ܡZ|U:4 K"D \WF�]Z :"}Cgș@қs-W|K=CNpBEǍ/o*yAut 4ͅWJO@'F[z$"#[9}: �?hdK??kp2kfTIƓ`;&o&['K,Sf^hK.`l ~)iNΆA޵Rr'*m  j:fGzHQmqӓr%]$gyW-H&H;u'5$1osg6&[md {o⾫VYR#`iM#n lOTdLaENgӞ-edQAYWqL9xWſCx<6@d5+?p㡟 飯fi`mCZ{�"1mE :DS[ Ca{O)aa+*y NKr (,5UǽBKƖ#4L|v Y9SX}7; ƱOV9˷Foqġߠf,jHϖ!vMVx@Z[#p∴pLCVq:oʄ#*Y_˭gy[r, Sewm|" Lo?r@2졕Ț2aH,҅"hd 6$-H,Djd*9r)3W<1 ate˧r/ԣ)I0,PΌ3'9ᷧ,_+ӑp/ƣ|[e`j܎DZ]*S7nl"^0ԞZEYLEͅ,a@c'f^/جZi:h1Ju0hbH!Y Yt#*eF珲5~"kgMk{ \"ƀ:J ‘N*Vxa4=0٢r.s^;6{;տY4D_5/=ã]-(zܽx'J[Wĕa) $QHU;cj?Ԧo4Et4L|r#,R:Y <f,<JFQ.5y$i yVOSwd!�D.bY�炯s"xtY_2_ZI(ZK*c. kIJ"\J:YiW.2;,Lh5gFdI2k=Wlch9"pTmhӀ\DK7%̈5�CQ.-<OR1MJ9 ho~~9$06ǝ4�hQ{]vA4NsZF٬(17"TF>+>*%|82`9Pa~7,=`~Ba0KolȾ 1b;LU4eE(�Аf?|76=7u> oc<I C]~{F7RLkPxV&+`lj=V0jEIkP:c']hbX{t EVrرn6u G' OOlr˞ъz>W)SzG<�&q/\AT, ~F(B�!eE']Ded* Asu1ϟ1SVϘB2עeAqb}?bR\{;P}x69̇A%fSm?<S6OV]%n ΰ23ydT˅c)"b6(ϔ`)<FDOF[/9_2eȿneWl;Gt5ovKToƕ|i, }aJά`?wUafFcv&vܸTg%Π{]*HǯrIP {:3sjG~֠t쇣dVAH 䑋5\Mn~rVc F7yj_ ˵>Ŵ #" `vN79e唅}Y$STQ؟7G6~W.AqJE)cћO9̅3GL5<YQ-^`Ǹ>2,yPOo4:Lǖ~>"`;E67;~Rh>抺~GBI([`2TyPIh_otaic#')8K:NyMf\^{�K)SNcw·Af 3sTN6Dլ'>�,!c/];ϛtsQ&8>gc`f*vaEQaDc4c{R0;Fj1eOˬ|@! f*n|+F*ZaJyCzJȝq U"`Uii_X//dҴ̓ᠶ»|pE&b&Z b{!NBD^$C >}1`vm7c8N4~dC|:wi͇1:DgD|Yզ׊?:Uvb$\ D=',gz(r(c3ʯw3a6&N> %9p-)kFm0/ z Y,PqUՆg Jn}1E^|b6N lw̕/~ʄG-�?mD։!v?4b/}�l$RxF 5n FKZu< v;_@NZ|),r]Q>n7MGzW6ǵ0m=4WMTEpz?5䞮iYm*k,8GSql/38 ?p`I|3=='&G[ EsL[z|O/cD`�W C&AV68( M3z+cYdPC3 h +$_d/:SD{PX]<)3p!2 W*+Aa&!9(g'r8B7>߶DZ=?a2"[ FO6_7![:<,&Pf}2Fzg庣1bE+9ڂYڋ-lrT;�Gv`1VC\1K]C/ǹ^P(1V]Jm;b:jmYgk ŗ%iqW[ cwObBĕ,W#'S/)A+vC.d,A{^Nя1Dq2t=Z'IN!-B; Ź~5Pb,T ?h^ 3u 2NA_%p,H_! W>'@7F0L78r?կeuHvԳ?ĵxeR|HgcEr sg�iSa9= QB赲"d4$_`YϬN~^(Oj"^ u+gM1CE\[Xxvś:TȫɠjlQ{g,_/MM7qu\O 86vx1Btl*M? nړ Rr$4E Ɔ K.K]r|)ۤA/vcycf qZ<Vft|CD(awn.vj/8 0ňx,}fq [z /MYG(v"*mBHKfʀ6ꗚrW*g},a2dn~G. |!]vs|Vi7PUzoAMᙎ1<}РuUGht{�/ |(pt -Np�ˈ!`$-W};-0IFWh06ܑ?9�;]X_E0! 1Dԏ\FOR,nM_Sr7@Fq̇KXʶ  xHS@O@q:+IFDTQIU_Vxbԡzg{21<cHEu.ZFQG1x40(:_KDop#ctDVITs)Z&閐3Yj(}@ɴB1,LGGԅA#-=?,/J)":4 3+gpUVW8aG]TƎۿwMxhl`#1uV~Ӛgke7(KxւpX$XF5MWW|i.a ҁI܄syg9-ХxWHPʁ5⛼kD yEwnԊ5-b.jh HBq6*p@TK7*MrMRZ|?纝:g(PD᝷ȦuĜz*p6HM!EڛV�2vŖ$1\Uj@ڍpJ xfwQf])"~3xHZWj,o;SamP"zFU[r|qCbZ2957e.so~ZSSޗ74sx,mS(H "YojK&ȮAP~yeѡ(qAc\T;U5HNO8P]dLnRTU kAVGgq*fѢj{b}<:E r*&i*1f͸;ۡNʼ" Az[ULwҔ'A+_()WdېQUU'sQ[”.sߥe>œ=I6eM? 4ER~9qua@VH "T;v=1bN#ȮuHoKnL])J;(Ca`2w5@!Z788,idzxE͏W:"EXxjM�WT(RXCJ]QJ?| X3u$VTEhxE2I2fN6Wv?-ݝ�%:|n! XI- P$[D)(ZHyk ~>܁=،)NM)( OOyhƴ/mgMBP`&T0&l:2ljá{V-HB9J5{K({ɉl("Dg~xY8i]EUBR>^w^g SC~zYLl^fw$FIib6RZ6$ 4ʚV~lhCGŞ]TFQTL,?U\ZʌBu b&JFMð?s~m4/Pe"RpL,h(X72AK6?w0/Ëm|4:,'M=: Ū2^B!L5x.İz[)ק#UKSգm'%1]yV+3^�X-dPH;v?2cI:Kl?^>T=Xf1n=IC_'~3,[Z~& VmYMJ\;:-D}BAfWIR+BP]R*S웙:5mG^6o]:S6?Uaʺp:+Ċ%>^D##6̫jRj{̧ld#c[5(䝙ZORo`n>R}iI幓;݊Rё`7cMg{@,~W/0B C`w)DKE/=6< 8uqy&ǽM\ OE"Fv~{J<hRE鈑өEͼ �s 5;YGM1n=  fͱo{F熥o8*LC )ph>A iK!ACwOSq\S$`i&2>f tcYȢ1zjUU.0d#7+9_ ճ�U b"[x&B;JTl)&s ٠MtSnG@<t'VXTq` ؚɖ<k{>ϐ;tU@9sXv W ~ ՒJ/_:lxܚf<)g{SxG27qSmaH*"0; ] l?MJs*N%fDWwG|/áQ8w+XJF1FĎQTQ�Ǯ#۪!Ĩe*gG3q8�zN/̮40veϱdD]еvZ>yTR3 ll%*I$i4r{l} ? 3r';VC2y,a2W:E$\͕g'.m {mJ[[E0^tP/v+Z,*9:@"b'�=Ra @iih 8"4Wh0p:.%C}vDg$&_l:!!P_l㊑Xe>v?Us5%!YY;ݻZ:F�a8ď{{y"�} `h?<s!" YRtcN}L v"ZGyЈƘp^*:Gb8ub~0ZiMUsL�l:siS脒!.x|v?M,grsE.X:)QsЪbۃ\t_O 5.@gTo$""H_An3f; Y I7v5bfxS;@k*n$V ;d;S/be 8SJ�C#yRA`#%CrGAS|O=Ci:PiX*`(ryv\~-IdE R%+* $¾ɈElsOdB^ifc˺>V?&.W|7�~#f)_\!!~"oC. MW$bSPXL\h.P@ ~Q1}ަ z Nl%$Lňc]txushV4l.Wjg7\q}r,u6a^үI1Kv;yWEy9k|N4qrHHыr 9a\1(SGc 'p)[8ʮϽ;T]ɕ[Ʊ/' hS頦 aD$( dʺgu{,Ț"vY]|Wv1:�*;KͩMhݽqߖO*bݳ BD* <H 2˱DJѴJH ZSBoBv=�ŴwGeb.|i Wvo>Ԏ9;gP~ޝt}L B�!ۨ2 ? E 1! >@Y/U޷IVoFɸ+1 tB&Ё_N*'2GYIϋֳv BVY-E Y1z;0q C3%cmCAa Jȃaj p QƄ<$9׈k;EIAbQ]〷TKU6[;_hHBD NMCڻqsN(Pnc[+ ^�xZKJY lO:(fVNkL~S^F4&ĉasH8x2h<x5*5?5*%^mL-P7G1cHy1MefnίFm6>2lxMg~:f3}+l8T0qWޱw'}k(-AgRԷpAM%Tbh˭llԅfN Qc_`.n(-ÙtkY kx=y- V׉у>+* T`>]vr 6I|6C)0sVsq^lA�GSW& ;X3kVEf =(ٛp5T>=D(X�j%} 5~S6_zH o͑5|,ӋO_Veм*26~F+l)Ƶ5ݡˈf˘:VqTRƦV11yLXRϚ,hnz^]8@(s2wi*pQ[O@sh ?(<Jt-JQ_nkbO&-b@ < fnm&}:9UB= (m6' '^fHe w2#+A?`QxoGZs;.u�w\ 2 ? 7"_'Skd"gytzlC_ 8/ oὢ{R\ 4g0&sO@P2en.em?~Z.Fu͝E+N뜉44մDW M+۱dR&0l+%(n*S:VQr, MG_H?D W貭?Hi2Ar8*7`nc5V1$P ګkowa)CY%}h:9f j0Z- ̠Ģȟ0t}q!/Rݚ[P>F!C0Z1u䘥rV<.ă2[dMT]z/pǻWq{3 2ngH 3Gk#L#hgE[*08{r1}9d|L6|_'#v`Z�_Q5&?$J倄a۾S4=#8,SZS~bCeI=0'U!cVE!ۧPT"VB BzսDPJX>ǡ%+nhLxV;ㆈlp4IzKi10 ةJ1[C67 1 x¹{5>q}~b[1-}ZZcI5A"ow3(>,`R8bRH.I+55( J(/w?Q[8ORF0ɤkHg]m]{Y8B T!j0� LSA9у[nݭzQέ3/'˦5 8/M|;|YAQ1%#DeIZ„M`(`Qx @ 򐪁@0ĵͤT/Jj8actv@ȇ/E5Sg]@DŽ( 唠@N?dQ$'/o(0hQ>k\-kKg}O1Mwfsd,m=*+ufdWOc셟r0*Y⏓Kչ Ōy?D(߸##4+E:x ^JG "MS 0TSlȎ:It::),Į2hċKe'* U^.m}a}3S1(i+ Zyˠ*N,k晔g {LnE>{"!ฟ>lWmF+;@\w!� 6҇wTy ڲwqɪwӄxW$En,^`eN율w)(d߱]/kк!@CD_sj*2]Ձ{&됺o~dA�Oާ)g>BIc7r_Psd /çt9KvU3v\ݣ)GdO,p_XMS]|!T`h8US3x7/:et0Q_2V,Y)\ڗ&9ULx# ·'u6KK3Fk-TD_}8>~Z\%4Tٔ@DZ[#JqTP9W`oN i9u!Akej�gakH ii믯DVt0sw8;FH *xwQpi @vmLi ~jbj;nt0UŌ(/)9\?w`.p؎po\ {@Q|Ϛz+gDzuOaOx&YM*6Ɩ[ +&ғ mRCF]V %a+Bwbs)$TcTg FH,^&&* ƋQf*?e"g;e,3bP(qpFj̙�vP/!7%)Zc@XҽR^ 7cvumB#3(("E (0~T E^C#K-e35)[<eAPGh|-P pB9L#Ic͊ i#dw IýRC:iلrxFꃨp&s` 4%ƴF6S_o`nui i!iǛwzAO 0T "CZM $ڻ4DD\`C?)=X>xjc<ހnWGSGp="uJ-w9!ދ ];TzPu(P5=NB; Лz]}$%g͍I_7"6E3g7  A `r-PD9Z!'w "Ҟ.!P |U%"+fD]9^ ͞ѿx)p_ Lp0vw <+vRF&[H .듏[h zm)k@9K cLڑEAf+!�_> Fm| _x*^Ʀl4Þ5SΞ)Ci AHNףƒp;ܝ CU5~s+^؟r AaYjqD0n)cu(Uhᡫq{m#:S(2X W]C8R 9Gōv}טH*;6iA^TG:Ptq+4"wڷsCwhCK @a!!W 0 ˭8)q\ⷓVv*B9̜>Y4E;MI, #4*9MHJaf/#pį icIMNK*(Ofx(TP|ZQ:k�x<_8e,񮴣ڲAF._:R >Ƞauxu 63Aa1rU<iäx#yPP&"UaY<5g0ħZ~tC0j p2P %aA[~W.x"$<!WUΉh?RʝޢqÄ / <ud H Uǔ3KJ20$ٍC@ERX7:$a>%%�6B{L$O[W#KF&Ok;!] B^%F](^<O 5&kk:4PGJZHSNiǯ 뾹IRN0ȹ6Z;B D&"ӼmbYO G_w扣xѥ?d"|8 ;^x$BQ?00E*/D<bxcqXW";yX˜DR<M]ǛI1Ď3 :!0-1ͬ0VnȬ,=e+5SPHqsQ!CV6R#i E'hęEiH ^MYu16ۆ#њ5䴲-UtzW ꍇ῏oiz+%ߞ1B$P &b6D'ML`m$ԅUOsYnżŭ,&'0d.)̟9cQ௔#B,,v< Jέo6!5Y*uVT3 `]IgDިIP~]ɯ3O#KV-Í$sIqդ+oDZ\bd0Q/ai^t⷗`/,,_Q}<aG)F$uacKx7#i\[I'r|%.mLX4 BVUQz/yIX@rqBp{BMQ` 31f4#0`�♀|zRoBD ^or Na3KcOéYN!"& $UV?S*8ն x2mDԔ%3X$ԥEuҏnv8^/�WN"?5i`~$:UXsK-RVJ_UVRgVS̓#f7(KL0~P]_↥+; E wZĨpQP'M;N f=[Kfo,ҡ \h[r[ۂ&$b:,6\"iZ0]',2P9FX�!Nem>z8td>&wZ9d%"1- Na 恠~e,)uު6.1غ^uj0jnl%4ϧ?_YS%tj-rD Z;ay`g 1]{Uerh;Y P%U& $}:;g?K/ABD<VhQrLI/~&U+⥇jo4Q+>mPT�XWWVKLcYߙhB R6I'<1=?kZ<&l-v#R;|nho2NN+<ul9zpԒA l:Ϡʻ;Sq(CŪ,?Jx\Iyv ;::bԣ/UGvh^hp5~o !ki`\J{N,YM# ]4t`i)0tp{wSX[uHHzXݺpemOe&KfB%�h;6%k8m.D(%Mcv쨯 ( ϳB:wS%t;ѣ.H(z2`66n\߼%?_s Ԡ5E8Tkkhxg5M.1j�1LR۱ٖ~>|~u*ט 9.b @<9*ngE" َybpXDTW)VY}Ǒ0 Zʞ�B+%~Ccr:+.Ծ[+dzf) '0ߦfiI!`]#v**ȎssÑ.O1#@%2(р@#2صj>}pOjy\"z҅_.kp wЭh}MOvcFGN*TҾKt!#t]@ݔZK|]k6Ԫrӳ881j{[ BT+BEbb(CKU d䐒9<nEnS_ȕCٌj3-]|NTՍ3D` aX-r}<Q zݸ ]S qϧkUSު)W)G3f?&´[t cͪ\ g1b{)RCOOD=lg=uIqlY:85~)h*K = ;UbDgBA{Bl>dhP~1&s-h@& D~o7{St0jH*dr7 2Fĩ2#D:v.hkˉ|pb6"b,Ҝ"xoGJA"@d?Vo3D+* }'h[ 9YRl췈4aU�؉!ݯ]P|hOVSu-uWYkpE1%? h#ĨnuovotdàLH|or0n3oy=ɗ%?i~HF>.'>^PY0~]r"adayn+!) kMGc7H —&jl5j dg,<C>&V#|;/ew/(Xl{+P2j O47>_Kb ;Q*QW|47Js|W2BEA.>&K|\BjZ6/Oe۝迡 bK=^cr 9.܌zg�}b!kMj1wNI͚3&f+I5(g^Ii<1V"8fɨ6X0=>3)oQOV&5WtcIf C Z3)S�W^I�+:q1gbIsy@s"У!5<bFF`ŷ@btFx48VM`sIB8#;Y-Ybq}J5-zfXqׯ$M3gL0b2#:Zї'{MFAcZ%G]Rt`OژdV@ΎqXkyyhg]#hr1#쬞:-(BE~N 4{r¶}:G(v*�Shʊ\-[#l(OgJm5º 5CDJdo*F q33oV00έ*]ߖ=jftA׉P¨O䒄U=BDOTzmcRF+k3L@,u-8x-}(.aE9E`*u4^%uv|qd#b!HKGtᝀQ@;'׶^yYYc#g ,zYӘQN)c6_.<3$Nd} >tm(򓅨v1#EOy!fr\"&iBa==,z~C!󢵬.ne5PՈCG:;IeZ|ּڗ5yjb_c"c[r͠‚'2_2Zh}y (%g ۪$@CPܔ ?^yպ3߷u`oٕ�ہyXQ[s<S{T6v_v ,N_ѫ7H!�i!%d6 JFXՂizewÄBsw4g�Z ޺pȎ՟`wPRXpA˔W9<&Pj<ɥڣ~v*v{àu cI#=H5''Kq -יƻt̄CM~MJ|#u L;&m)DkLalހ$ӡVulu8:V2:[Dd&LPID56 Ur#N1(;OyX<i"@7:r �XbJE< 0GmcN9zzĎAL03+=iemT?}GN7>G_N Vӥ)BgE j&j%oA0ɂZÞ,Z͜LZՙ{chs?:}X:g&TNv&Bpy7э abלּ(ᦄ`@Fo.d Ifff覌VANCĈH׿iӮ #ISZM1=n/52rz(cǣ c0}YcmQ˄)|` v0dϬ"X_,[Q ]UEٍiƍ']eӋ챙�$}A,^Jcl+b_~AGmu /yRUe&svΗd a=[Y ӑm|,OS^;_~0iF͠BA "i▚S3a7i`cx$NE&qD&)8 ,7ඤ㲉HNI5ec%.҉h=iЈ-c9+yaZ7w3;2:VeYv6Ә$%exHcGO-|ͺF1M f'%yGAVx n4.DZ \5Ls1=ɷ ( =~<Ӊ+4F+"C=ƓS#-G0\q"SagW2 9jGN^�IK+Tȧ +㨸?|y 1&ȶ`c^`0Jhx\ #m>䣜,)aj8Sϭ[ֆ17Vʾ"o_>y8 V�8j$-LpmvP喢*nͦCC}_ė<XR3ϿL`E)^5q~d f8FɼʚޣMkیF-I{ҎDy S V!syS*SΉſYw;H3i)O青!OEt?eve]}c9=:n(,_D7X\$qIDq"*:S# "1D_:$ۑ]' &Qol}zcJ-1s -KW'p_CAJبf>J0e`1 B.⩆uf|Q#Je_WExZE?]q1(煬gl̒k5T-|l=Y\J ՐOاj­�W0T$SOj*KNܣ9hM_͵ b^#C+ ç٫QQUMzStG^d�1M9FӕG^w"cpUuIfKQYa5rgDIp9pkZ( F2xZ+C<wlT>|ĩ m,-US~{5s9x@~sWѠl+z yy{li5^zx<~BQICky;KÖXYzbÉqI$ύ|D�[\T�C]AvNiφ4mG#H?<Y2<wz 4mÍp%#1rܘO&w@w܃=~BfbE9ΤG%ah-]ӝ%}qn(yďMbQ# Ly[<!fS@6rо x;w} p)r gIt1)TVjj.ߠxgr . J{\q=DR@XUY[A n3[Ԁzd}>UXEQg] sKI^5%s_*2 |N5Eo@_H_Z [p/&%&aodG5B!\:3#olВD$ʉ,GGզWF7y(1Eib'S7;Ve:>_�B8,7C�ʘTcf_?Cr6 ]u\c<zYΨ=~v:;P/zcͿ3Bg:ߋ 59ϫ%P7s@PeQDu%[ECsf)6\]~ٖA9Ż4e ۤ5513߉%<ڨCY'  --|CDLɖN2l%mZǗ#m� aT0թaa�!چ xZM6wܐV4R8d>_ـN$lm}7{ k<&γ5Y'WǦ)e }q=.s4S TU>6gyǶSAI Eu{ D懔w%Aj6m%$wlkT,Hs-�/;byspqkȻk/8_ll< �nxZϋ.U`6#1 -0 F,(T-\kw 5U_0:w0rӤEl?αJeB:(<x<5\-ܾѤV(򀎡xaw:d?~Wd &)x5ݗ鍍 ׻N!6U7REa0,QtuTA3=Ȝ"C"Tg!}79~^ipAH:]N? zƈ ןgW?u{G\H󱿂{cv.%x�|G "8UHH}䀩ѫQoRM9 9U_.y9zxnZI蜨%;g<Z0~7KE9[b3ڀC>AÆ揝_G z�DZ1Z!n:WKs)evktlB}޹ܴ賒Hz\{E: :l=29Ÿ&I6n1:>ݧf#SZp= rt}-OiC]TVxXcc*z|/۝ [J!A^KWJP+[,^&.S@Pe7\BG7Fvq^KpՈHEno\ea}Rrc$ˀvDk5M< n@l!\(+¢֞zכ{:=FKZC44ҝݠtsk"@6o"Gj,d\W 0R yX}qtѮ)Ã#ԂTM1out09VB80oӓ ;{ԹWfJ<DˌwAض (9 \ҋ`92wd'cei]rXR ?Bw\RUݣ +I4 Q`~F> *> *"™6)){vt"خue ' #@Hzp=KTJ*;);jX'hX'=�2%|i=rxBj3O T,>݌EHVц\j-Knm QROJ̓6� Na<qݴ}F ]&02K*R?'pJpWD`/ _=!Ga[%N/gs֥$Rj; }r=uնȠ@ipsk5'G0Cnv f{g}54W):dwgp" rhoR\ kNZ{߸VL:q I,8S5u[DĶeXIﶡ__U.b=}wPB#-epDixΰMv愔tz߮-fa{nnjQ2U^Hx&p /˼]P6ލ&S}D1¿o'[~@\ m(Zy#,d@zҏ{j>uzk{W CL\9՘�g׾&|N>1j@60B]͞TTD֋m#Z-jxO<tIUrŊ<zFJrXYYiSȫnբ].UǴU]ʪ1~roO 7= xij=ϗ팰mKtyaH3ӏ'aLYtMfHU9:H[^2d6XIDޥ6.aWM%?~POhi2sY vccb^ J*S#fkÚ &*nr#%"jK/a1  0ۿ(;լSRM3^QKmxZ1O*k. B^Ԉ@�W,L/_k7q?lkt&HuiS{y+Wܸ/+*RZ;x UY}hq91_݄M 3'ى<GuڮOxASx^7:bۭc�FNrk[D5w yӠq9~"s66-HʼnE:]PvEt#~xo@5C遐]}9ُ9,^u 5F<:~2h!NYk곽H~uB'^X.wbK/mG2hbpFyOfԎoz_lz8c9bO2B 6;e!5܏pu4::q7km8S('IE{}j  5!{U1�HcKT"ҙl4s>EX7Wc>lẗ́% ;pzg6S2Nmⶲ ~u&pr3 $fs?M^8+& rH)Ѷjr@@hQy7oLJv7>X\3UcoO*//nڝ5H$Vu|ඟv> lgdZ̺zf2Ai>gW|Z@>*|\B OXxl cndU q\aۓd acU;胣nemb}  ]`ck`zCZNnQ/j)D% ?yx<t'7V"ke8aܠ6#\Gu^l}·1 њ�z X>6-fI'.z駸*s\|wE I:MSV"6FmPB[ #xXۢ=9<+aY ؚm I˟q+b}i+&݃i``\dbꝾb0DvwQΎInF!M$s|Gl=v!ktVD3d<#< C#GXv+ҳ5Ӵf mq~Яo[K1x8rDcG.nί!Ơ<]_/idzNllt1odY1o9<R"u ROdpVqQ_ MQa ߚV:MVR8ܲb+0{kcT^PAoX5kwdШ9]6'{T|GٴWZ.@@ h *䜗u]p D>={*s,O- =I`ũYo9Do(>A j2Ƒ1\b�`#) !Sc\==tl6u8; hpH,b7O4w8C{GG`?&uUI F9MIZ23Sw;SaUTE욎[abB@Ǧ͆Ȉ ۛ|--= 1j`ܫ)iR<ʪ.E6uZ­  o2!0}mjuoHO($;pk1$~b<*˦´cQGK Ii{LSmN8ʼH] DHkqrO|i3YŪ䬨]5v޷e+ݜlQ Nmۆ(}6[ { YFpv#Aw@9y=x�ә~*<+)W?G ]>(Hj$$eR^buJQyDhtX,AbeWk^(j91KdU>HX^Hd|E)璞n”$>ike,HLcDJT. gn K?S%{Ֆ+V@z:v- <%yK/gkVK(lMc-[CC\wlzT'a*8W hF�G4P4%Mnm�4{CN)"a뻪( ?EL5_<WUьٸ)E aPWF)Scr+9A*J0ڝLE�}"2|Vn>Ꭻ (s_.U!;#u>> ]A!/E\ ՔRbmIk6I[-6F]|MFd=> r[\L 1,' =-=a@v#Rϼ~8Kz8jW;b?,QX} }ʣ9iTq(p->LFGBό D֍!=egGևJT.?lm@^DpeiQ*S^ϝZ]k^Ä0WQxo3/yvMqK 0�i{uuy7Sd7WmBAfME-#(ˏ.I zѮ&!f&/0|am8iЬ %;Pa}ۄ6gl?cn X nSmqT27|44ߩͶ:f$�6;r)2؞XںXQV1Lؚo!7$ھU6JU˺u.&`y6qB9a܉/RX|@Y^1\z{t)2紜7W'&kRM*RoNή[eBR%<GdEuh|ډnw 8$waȹ1�!}^4KMwDM0RBBqCrJ]r08B�^;buG]7dceҬY( ;�Q6M<.^^b3"XBVjE�u9Czejd\sNTXĔ V,pߎ(}}+>0tZ½b?s ]Cw/w /)'+DޗvEx|VNG(Nay~aFovD~,fx ^'sgkQ<-YEϘ*_t>:u"4%C` rɣZܖ׾{pOZEm陝֥cAI6lq_U{=]up.2d!-5sXXR/y5irvl@|^(m@j o՝1[AgP̊OozhAoNV#DB_i? őh2;" b_ED$SL^<0;;?a#qM&p"Kſ<f<Fye 2OvxTrjf5+C'f|0 ]WuPoAA3UC g%Mmmʠ\9BC|6K `^8(SplA q@89ʫ,"+%\a| `Nw$ ;Ul•^j�V׶ÞQ4=c,߻k aDYQ Za�e،NAHۂS_4U1ZQK$dF8}zb.~5*aX[ѶjwILӍAJʝ8*QD(y r4 3V~E]1k;GD뱓~G7 _gc%}=*ls;a$?er,vIV d-md'B2 ꕓ=mڜʢݒWr5xXUO+8}w9WAňBR�B,RӪzY:5L7Enψ^WԲL>_D†.WjM. 2.m ª Mƣ>bw`x:q/i@'R.1[WfE &*xRge ,o mzWtZ$T>a5K P/1)g9_ݲPߓt#TI$0꺵ާT;I!|JbEخK-d<3DɠÐ:4Y :ʢ;�1{]i Mw(&aB?|ФFZޒs]c&vQ74+P5Ў*hTmge{e8ukI0X쮹b>UkM4efPO;5=5Q0zdǯf8G1<sd9d{AՄ @=ƔsuD Կ=?-$rYCwUD`I>ap'؋ݚ2< :(\& ᐪ-^3 4Bᡓ>>#PasZVo=rgrJ\г-l+L]9);Z-eRf,4ru1ۥc\|Hnx7gzLHT 8nB5+qLO Wkh_?PJ!V.XޫڞI֭"'<]@""W 34A$]L,9/ DC�v ZEH Fi뵡e| '7 t+YhA}iOg0R޴nssԋZ)iMZt(1Rz:gqy\[$0+TaT?-$p qhf �68!,܉M 1vO1bqTҌ{$oaȿ�?3r⑶2[-JCmJWI9с<~/EMj$B6hHn~7hj4ć)G hTD,'z#ǓXiK[_,5{:>Nl`64HKj!d$`/-�WjP{4v @Ϸhey吂C_W@<pwI4V#^BdX9"Ǒ1g͹;5N/01_48x5<֗|)H1.@mwMܟ͟3P E:ck5] fYs_﬈4:%(qpskq㧙`Xz18*}"%]Q[�$b Vrm(ˠ4TG9DҔV5k..\"{BqJ=`_ûNpJ"pFs,w+Z_z!Mq|sc' q#VvPcIJVQ/ɱHfa4r;Mwcb9OhB2x# n IY}kyC3<MLa}6+]-$HJh~In*Ms)KGg<a/^r 0+Me $xyNҔ/'Krxa5|Ϗʁ[)jV+H٦6 ϱύ{;NgW_EOu<6b+פ%֡UM8 LIM;EҫB;EE8N//I{5TnZ|L-L|s~F䉾wb- K;Wϼ -I{ㆬĊvt0jޝ.%1(a:#҆<m- fR:t=WϰGn XQ/6hE9LLoEnPTgyCp%l-Ʌ=/񵜿s>(/PmAï Bb~9|y+b#CfhPA˃$"9"~QR+y*2-DALH장Qy, lgLvtW!qݬ ׭(ۙi?UII1pup}TQP̻);"\1*}+? :Yi/8 9w@ MR77&c"]55[ 뎌LG3цB9vl"gRqtLX4fK|^F[C7FɄ�<)2#(Cqr7RŎEv= XC阄i.�+gs3HUbCk CvՖ# iv߆̤q~͌M& |π1TМtΠ^opxGbnM&9+#l�hV7I̘R{Ţܩ/^F!w(b6>M%lUG^:j:d< V+Ai/5)ђ[1!}{VZ_J&z1K azWd7z1 @Gʇӓ[O~!Qz%8XH5Ҁ?}Σu2O8z)tgyRd!~?b: ɹݻH- >Ogl#OC̯tF*/Q XDHݨA7љ0*tܪkF 4)!23�{\5/Cݚ{hA%@\W hYlxӆKi6O)>,<|%]�Ѱnh*l#и}/2M7IҲS.4G7'6d:(g>ݨchhza5,[jZ#N=vklmy_iRWSxj耎xm.&Uk{WsE< ƌi38 {7_*އ"4cRSb0ĉ|@d"_Fcw Vȥ/}m1bFUF'Gr ס?k F$ed[+>O _|qJ`)�p2BX:-I; L>?3^`TPUGuB `?zFN+%sxG~VC][F{P6e8)uCEB#A89֜Il.R T9BҦoR@8+U!Ctkd�"­#q}'QQ/FJ1J&bU3ngLnNϞq V45Ğ]aQH=!s h0\jRVn((ʑU0q G6 C(E[: [f`%%;Y؋孆VHNSݿbScu͸lb8 aSz/"*3Tt7oK^ܖEĵ@n_c/U!ɰ.*>Tq*otRC{qƩܦk ;'Q>/Sʊ�i0ZGx>YGq@UՍ. 5J^&rŊp߬~E*YaYHF̷2b+M#Qc\"UiEb81( ?țzN*{4Egv/n!R̡ j_KU;_Sm ڝZJ):( {X@?U gEO 򞀚9'UG)Y@{bH-Fy+k\ȁ9ǿ:JH/̹ɛ<Ve܆lrN,<Vy};(+$$; 91VI2&Ktp&>rAgFZk MB9kM u<!wK茏FN=3ڮoHR/.a-q"hi"h"vC]2zC |�Rkl�:,h<N *;rk_{7$6fĔQ!rV݇6T#ΙxDcW|)"=\*5_wԒ~[ŠE]6 \"Q*w´|p>=5kn'BY-$~l5knY<фDLx],!Mdk!Yf(f[F=ѰS4ewmK7 1f6G|lO&:x)oV5 D2ۋsOԕ[_mk/'b*?h|%I񻍶Ac-἞0(+r bQ+�kR_E+;Ix#itCşp(}AeŎWf{<^݃E$7*)4|SbJܤHHQf3HԞZtweOSw~?E8Cͱg@kwXB#߹ QnD$_=\rRrtH:J �E'oXjtR1(@a_l]*]c\q,^G7yffumbkag: #T5'HxwTk_,x ,3*zۼh4AGȠWZ_E(Ա}o(N Di+XP6VZPi4a&Pz/KA"h{$.ɽQr XbYk|Tc5' 8);ת /:*냪Xiţg 1;Sl7ČöMÖ{(w};cP"Ţ ~겣9dgXhUZR< 3�gpc1G!\?;|Mo+}Ʉ/Y=['5I .4G2U(yj@3)ei-d੤S(xd$Ic15(M1+P]"#+S7juG` H5y�Dq)x\=;zõ,pgM"#}UY+]!sUw,Tـ~Cv,QM3Yz:Rc�ypBd�PAt$@rJ5Q$/G05yv$Ƣ9وf[fI~BVVm6I$ВxF}$=iےr0t:rUL$r -("Mma6_r?ߩHp&Ow&EZ|cH4aJl >o?7wcjJ KNBoʺ'"a-(D� >xϲ># Kd?G&ȃ_@gwS z̉Aw57} 6n|n)ՖMYO RD*,6cPJU3] (>9uDhN ;k7$@/I8މ\=*@mrZm8 n4_kjTԨYR}5qZ+RĬc VWbX^LĖ!/<ﴑ1^zKr3hqG]iO[ΫS*DV= CdϜOT3c<i\M`-�Hd/Rg9yK5ҧe5Һt'l ʞj Gz+ڷ!aw +@ZIT2+A}V:鳁dkD^JFJԼRM6Vʬ)`m/^6O HJOBnrFRy;Z7G]p\eyvM]EBm&;8|ܟnhGӍ,bJTgD(EǑJr+?ew2ƇڵaPft.Hvr)kч$nW7^1P�U<r3uHB~Otqj oЫD۬aK[ڼ?q1b4lL$'5$ S4W.(A�⭵BbWqejRQ MC*xwbOvye ѻGc%}9 5;^ =  'Iy1+_钍cS[6>ūC՝wtItsZ +^nڡ9<֒:zא؉QWD{)E-hKK,YXosub_^$%@cCǜ^nTDaaTL7&;/|lۭ2qG+d_O{G1folȏwClV7-oFCfF?{q6c~1j8FDIDZ#UhpU1GTNg%t')" 5f@f &DAb$ LK^<")ԈȡH6ޑ٥ =7:H(5PIC TW�:6R)5dWt+w@} #O/^>F/|9Q-Ѳ-#4ʉ+As=tbY%Td|ybTlΝ6%GQzEF7kլNw 2.8hVr BWhjGj8N0ABlQxWR9[=PVJ(ߙʄ<W+*ySAOj-wM2de&{'͢�}O_Ĉ+ jkā\:At,pW%iΤa2K|9^[I KeVHח'Mxo|TK W$C?sFГ/ÂsKwse蟿EfCmRʀYM؇㺵{Pś,;1P"0&*v^r)>UO94Ƀ~HLWu,x> NNGH,-ŢKsW\d_DYp'N5ֶO4ܿ7<c?U${UA.>d ~M%y,P UnNҷnHɹq1DrcmP$<)$7j LK NCS$D1HA> yMT0_Kq]"�Qviv>+e XǑ°dsz1"ʚҙٶz?iC*߀1Y1d+n4f8rЁ.EK?)�MzӃqTÑn޵1ƳJwvݙ]L,mrO>s(BG`;Ala/ !H&WoCXxxE\#QTyQ}=-:s 6w�=pY}jdJcCINzJ?}9ON,?bEY*G&rޑ"L?{Tҍޜ3)"Ż e뺀M&R?zٴ&+>c.9 W`@ 4 =EV45,Ō*>]ց!(uwDY]EtXMZk}.Jz׻IYEdCtNÕd8 Ήv8Fb>L̈^U{CoXQ!cOb2NO⶚Cl94~`C訇9-R*C&3VC8jp:$8v}2FkSD{q[\,n%)G^o}N8GГH{)h UMjyT*OubE 3[UsYR"e(`O?8ZB_@HYd9<>˼IeK^ ,>JIKfA:IdnA_N60AYq j_ w"v 4YXC}by:v'<a΁e 8ԩv- k)/cm^:k'V�UgǃG27aRmZ%w'%޽UrhaCE?T`!GvQHk [S)"nM5{OR8aј(C̬z/7xC<6Y3*kq,|"*k/ϻ( i;)K\=G3y�vU0(WWei fW9Te%8b?2åwy ѣTB92Yw?oj]~._ꝭB <lN9C{X- Vz 8swrW+mx .nPlaߢ^A~mBvj=mSχG`{A(s›V歸3"z�w~#q̠fi0Hi`rHI"I-YCuN^xzitUҸcaΏ [m={[ta?6ld IbkA8,)+,<՟'=dAt.̐ol~�?F ,2幗DRZMRoƚJt`RPKə|e|yY-+D[$$P3 -,1nLL  WqUfFC^J+zTnXC;+ȉtǶ&(>3}UOjOPz`[.?àtT ,"vu{7j3K"PK(OTreWɨW2T̄L!95ܢ}M5F/qd&\ Y"_I;֣lzm44[jb90 n@"ӷtuyM5 =9?;inmϭ.3$GxoXjeZܵiQ<栊ud)/HVV|k̫Fj6v )>P{c8=z{[XsO%(U4�Ô{SKb 1~F$jv!oҩ⒤Nrdgq#L: t2Or nqm,Z̮Gpv p|<oC]~5`qhz#v{*O'$a6⊊I,yJ6-r ɭ7-% :jBb,*�0y@[2pA-F [%ʗrI*bJDI0[Y.گT\(es7j$W!jRqۀZ-iφDp[D?n|�w_b+qȸZ($l{ȥ$i@ ( ҂ N߉ Z#lm_2h+?-(L]Q=-vbLėZ\s)e벷GxImٔQk=O;NhaW^IkRIj*0=bfv~^O3E}Hc㸱9LW)jU!M"tbpkydJ^9: Z 5{9paN+25kJY8^b 5h"}n#gGgLL |&, M7R<mR_4kA@"$_�<UI*ymG8OL*<\= W@r^<Jf&vpW:]6146V|hXTM�}sp`s XyXcn(WP3׏z1@8ŋ̓QNk|)*K%'VNkv/z\&x9xPf YbbhRm ty6DՋ+3ܤ(rj93,-|n ^_:]f#lS`{yi 0k |MC„!~EJ1[;w=y1N~J IUT˜S1K~ =hrJ',1O([} ϗ(r_^v>zڻW#VϷtK#<_wV9h4|?Wq_JV[%G(a3y6_ę+D2+(,QhI(C=W@^RXXzX1XǮJ{X oC_ ֟M]%uNDOf~W[>a (;yܓz�0*$><mqs]&/$Rvi\Z~;E7})T:|t9 rT_B0hfq%v1F2<'o\,JK0_Xoe14_M7|).@PňddRe_Y?l&x|څ27ʷۆO-$k%gkk(;7 ɨ!ۉz> 9Dil2ks nU$6h i̕2c4LFI{Yk` e{y x*?o ݿ�k2۱lnWllz_(g'd޻*;rCUơ+b5ٴL  %<ChZC9Ot�.Fx@QeL&wnQN9:[q@uqzJ5Juxx4pyjgAbY͍A }YZV2##L�j/u$K\b }hD; Φ^2Qd5 3ϒ1R"d1K;ef) an1C▞K'Ȟ A#m^U;g*4)-]V',Q!znL料gq^G>gWz4pAwP֏Y0& Tk iR47^86!Ë4Q DŽR|L׬JeqXopoj999:HH (,|?α >bPnwqR&w/$Kh.@B?N1ʜ{<~oha. hƚfCO\W>N󢘦f&"g;_ `xىX>\E,}L/bk= n! 쒊b) 2�VҤ!Îfh^6fɜp3Gvl 3s"@RcP|M0 2NZ/nކk�%@mR%+łS qcylUM䑻FU'jB55sDti|)tqN;I2 NA&,)_5FR9 DxK]g<4̅Iy*;'b oùnd(W5_!M$wqܤ` HD0)ƕug/Gm^>U6'_{<B81^Y^]޲A 7W*|vE(XnĖ746 2w jyWXD9RxBH27V9/0n6XO_82s0^Ɏu 1Leƀ9 Wzb5glJD"cf :V+-\j뻲?vPO *ι1:/6MJOt,˚ ܺs<Oډjsd'M5qd !P/z鶘,l:sw΅Y$obw"O<qjχDSg6.3&ڸJ=9 dzk lA?lQncQ'a|E"{Clv=uˡW`hWTr6%1Ǔ +1 IEOi>EBЅ9LT\`&OKD% |{ 4%Z3쉜X1-4b4?N٪7+ >e$ӿeAGmvP9LJ|>Ͽ*Ga4wŦl$1{ϮMnKEF7®DTTQ %٨Jk5<OIi<s.r)t6oZ%'i .s s E26K+4ƻ^ظ><htg cgȘ<#Is%: ahIA5*{l|-٭Y zW|m/1� UtsIw30-AʂY_-[j@�^gD`ܟvc5y_,Salwj �՟LE}h&ޤ;޴/9H8 Md? ?F :m8;=15;Ơ<ӊ&&F{=OJk:R>^SũMd; "rL& w$r4{55BtFu-_ FIczG9G֏< \퐕^j'r|JJkA1btrfQ< syh&7o$ni4 If[Z_ˍ>^okߌD8DXhqs&g2k[1/ MlszZֳ1 ~m],=Ic!'EIPHOm' W"ڷ3*-v(aM)LJ^ɇtT^b-Aࣴ\Wzaܲqc舖q&i=[O.u4AP>!Yg\;fo-ea4ӝ~^ jh>3iQ60JDk?*v>[zSCeA ܕHh/T])s+"Vhoo^[fZ?{HdfQo?y<.l!(>UN,P'i_[W-!62R;LG$bj:ZZ< /#T/"N~n8 GJ~4&Tgdyk֌<:o48X amC5",&d1wPw`UX p*8 nsȽy^: Ix g5eO @?}sM{5)]lR2/FL޸:R *>q@{rT0{~T5GE/g9~EXKԂnW�q`3 j>-/hJ57%$Y={9zs:yC-qt,j\E4(i5O#3X,1E ۵[D/6겷40TֲdULS�HߐA*7>�9CyPX41!?Lp+(^)͡-c.CG?GH5`NM]@0tŊ/9[ҰsbԠMw+VA4!yҶ;(21CtOe1/⇅^A`)h3.V߄ȯ@&8OLܭHn()\v4S `qÙAY,z *0keO&WpDя屮GƒyC[`Wxӭ鄓!ij%3[�pQ C?Faw@sڧ'/M^T|%n3Av%0Ĝ@$ZAimVmDBkW۩JZ<c`@B1+g&T~ :`Tg$ 03–/ꄯPbF(τǝ-ٵ裹nWړ=p:M3k^nԷl3x BδwͫRoj^zR05’P&4F۟51E"`@[#bPDɕ>]TXa)[7=y5u}|"-+b;&H[$j+rz]d>07AûY?yؒO̱m!>PŤBB/e|Z`$\16J|qEȴ[ĀV*MNNxR3%f#<9 @3K7@嬨?+�A'#4De(g$[04/$}4ۻ qca} >qnԋpn/t^QA =,mQ b"Z;R?K@GP衖7h6k5%l<_Xn2b2f]qeZ~�5~əWdG볻WԊsnɨ>5V'i)tƘl?1H|_DlP$gP.3[a<u0s$oH!9jH�Ӭ9�RϜ+uj=?X+Lp�e[ ݚLGAD{YSx%߳+0ΖG?rAQ[!7[�ᙚ>H _e |M1I<x/4ox>)6%5FJ@8pj'ӿn%!}pVtWw9g{=; AL- I x`&I_mR)&acV9w {iI{z#Q , SX. {46d1|u|={5'տ*M7ߥQE#{ k p]'nu?=cx*5Eod5xY|aC 8LБ>*.RSk*ʧSך Vo,M%u7�+֌@㭴(M&D<U쇉Ѥ_<ʐGB)Pޜs%E 砻Ĝ Z'eZIO~vt~"^'8efa?1Fk@%vh4n ֆĬ?|f@HQ؜9C9r WIB 2 C9 6d` s>}Hv8,Qi͘'úo-W8<VR`,v9 y<|޲Ⴢc3|<f1f%UL/4l>@I:68bfSZ쯚c:BmY!rυS |VBO^w҇>#hfP.C8AEK�dH~`-^F6BH1!5EFlsVd%aj\Um<Lem9,J8> 5_5dxNy|E#Dأ{m7̚5hM7s=LMHȔWVcXfٷ֊,�ijFJV ͽ1z݌'nwg&3G,R�/",bhܷyV1۝u(cҫTZsGLmp)%9VN](u!F,<ST:Jh7DytwAϗX@&Kp^D)㇉BZC b[h#2ݨvŪ +HlDY -IT W'0ROU G5Ft[�x|ɫ߭ʃMXʰrENtդq�1o [I js7J OIWwH2vZPDȸ]'gJbϷׇNhS2Th�F Kn饡3AFv@�?i0Ќk qBVI"!|wn1qJ7|�b.iDTd2xapezjM%G0E8PN>zLӱd66n=B?_4y l^ H.:k z.:,!E�NOa uȦpaVIX; ](R]RJcz?Gfow[ɋ1 `;ӝU[_$x/xoɦ9;E˨UDO Vd]o"ِv^^\܀ ,Vˈ >}ǘ+$%VD]чßX _  &!~}_:[Zm}F-\:[C.!\C;/g/qW^='CR$W>9GZ.g+"6CUf"eҬ+Q;Lj4=)yn3umÎvlMBg|?~73 %+0PHu-bU}yZ_?iPb֟t^P+gk}A`8E[l#،9ukYAi %" |5_c n=q@l3 1:��AĂ98;v a;qD5B~G;$nMwrN/ )qA{IxJH0V}𾣀\?];h o .?άg\͠ȷR3V054;`&.MeŨ_֒X>Ό}]뙚rFc9) 4nUhLAϣf&N^SE X�SkW] !},hň~hȄ@%$A?!NqꝔ&ۧ_=1?TB/_B!Q刍/̒i$ >aNr'> O|H} PdEZ>7y#^<8S;itOp]P^zR xNhJ !>1eǭE%ZUߒNE7Ab`Wt^pZD�n-:xV7s gyUmʎY4k3c?+*|qJz6/ZOL5Ӝddg<78b;`0[Z=T2?S{74od62/mrjq EhED߲h iIZ9t)P30Θ BKHt@R 07 '$" '7#%#eU<M AչpL3GA8C:q']z,&mdwǤy]$copa�J Cz/zP4N31AR5 8�Q*e-trJAIk[gb癬VѤ%2XĞpQ+|Ռ)O Fڭ]9_;a:]6q1)BqbzAl{ҲbȧRE,+SG/hq҂-9|xCm$ͬm$c]qM)na )J0>q׈N-Jn�@=cv 9 KY=$6嶑Sz2$(/zT1m BH #͒y<aSaԦ'ΔTskM]ƃE!bx(kB/Oq{j^X󩰫TF[Y#25Q`Egΐw_T/GӔl}p#$?A:mc}\5L sr a>x͉"Oc \"jSETʯh0."KxL�)7"\z\гf#faV\cz[ e /Xz =l.q^RI @ZZ%]}~Jv5RZfv+]j<hyDƛaKr7Oxg.Y-m�RxJ0/ym^e޸˦Q|"Mw+FeVXA#ߩ[uf(́L2+J6S:e.zM$Tgf\iY,h }nZ~9QF"ьAJTS�Ӏ.>m7`*5J1a~w Knk+QN@AWuE{@I�/7=B?ZcΌonwpt_ %Wvz 1:W3VfZCevj@DXKWb{Ie:^jyݮa2K+VD^+(fT"B:ԤWdr RnjZ`u);l;k#RY0m/1`e+ #\TR|Z.]@zw28D¥4դrݬ[GT.>$bImy:WBP!l#T:Eڗmo!%<c84TM Xq#)/!l8]$~^4]l?xOpTd=&D汕GCcu#k ' ӟ=[P=T56/VHYҬw/YpU_޶Te[ʟ2Ώ_& ==t$s4vlC֋w3_Ƶ;uG|°.ٮ+'գem$PO7슈+tI,jqyQGB<DZxG>|ho#} n ;(mEF*wgOcO҃dc_:6d嗢'ib^Q}mQeDEu{ lu Ax&k-&(96P)JZSHOwѢN2b?\b;A Bٷ˜ ~Β5{7sԲG=jmpvĒX}wrq053]?s0<ځ+R|U9T> tw_K ՖT  ^_R剫phd6K%}RV_v"~O/&D-KԈj^Xn7PgOT(& lj4W}B.޸c24OЮ:VMjPnuf{f(fMmV"lxO#Ҕn^y72FyI.Lw!`wGۻĢcsQ:�a2b0 8##+]rVBe h&nĖ ۢ-#h xeY(h/\U 3k3QvG7OU>~uSzӌ@ϒRoTls=nQob"XeiA߭La5]� ϟ<0h(p*nتɏ?9ƩM.XY;6 xDQvrĆ{!s `y#|p3Xˏjo5"MM Y=!vޱ3?nTׄE%O%&(3foG * }F0J;l iNsyT7U|\Gɑ uSR#_VixW{#~yOXjUln_Fƌj8b:S.BwYX]ؾzW2 'Gπy͍1:X686`={&{#SN&G&.",Y'ZpZX;Uh*'rH۱fZf]Cόp W4&ƼP6 FR+w^#} / j%̰_N/p)㺖X!A?-b[<`3"`./Z?\ #*zBONUPDŽ,|qzRҞ֝" D͙eKyȆ&Xv1.y<(!D%G+ #]IX lpwI (< KڣKEOk`qRU8UvN.}5E!o>Gct�`Y%11O1sN.jp2kT)3"($lKHWE@j5No|mm,U21?fěXf^`D}[d̶JySlJc7�_!tFYy+1(㱯"\2G%5u82P؆v&a[ܒ�m2%6SR1 dǠF9 O]*.]Q> 9ѧhƕz;@c3K$FC:Vi܎:'4˔5=ţq7a -n,>depޢE8涞5yu #?7P_5fEN57)Wz- vf! 0680LzSf#į\Rnxu}i&a7%3kgQ[])~%*{ڏ3(9@ه:zkBWk'{K`CͷF !@5tSg\zBS:9`V4("_~~k31 -=oL {ӵphF\MS!4qemZccPBp$?IפЖ_'*e0P9r>]٭= s;vu m;v{ElK% D/&ꋂoI3|W�_R9xmv5˅|P, V 427>2 xfBTKC3 : K-<$X*wUXA:y }5,!PgUYP5ßeB{:vi\ޒaQxWd0s`:>c22#N ϻ;G\]i;R!lFHZfp4i#7p;DM('8AlRQX^\ø;)Tj :oe%<&Q6^5cESDTXyo`yM @.n&ʸ|z8c,[AWDzQ]ږAp4 ^w z9\ILB-zJIgk(raT"Ȟ gZjC(Al#RV5/U,s<\$sYBB(fZhԛ}jϲTJ;S&tZ~h|\Q___SE4d/).w(q;]'qҢF=8μnԛC~M(4Lq 8dPF̔+< 'X-SEOs6+ =YP3ttd|uqDhSJsioL'ߟ9Dž;[x}{:A7ɲ}xѣVu )` c%F'c߭g2|�^ڰP�qtQ_kLt$G#j|Jq^# P2#Aӷ0 IP JbSi;~Qo!>PP4Tm /(r1%ncf\EbYD6M)bp&G[UUN&(J `vˣs,a, )`L…=?H.M?pFz(5ۦ4% 6cuӠ MwέU$y~f0ʷhkNzo" ;B,'" `ɷw ɔ~ -ϭ= In2 )O/2!;^MbNk-t*=g]-=E5 J5]2Lwk,29/pU, XS lJ M>v6cCeU!vc|ϩh`zz Qd624(q3]֌J [=gB+c}nNh%OTbqDn$Jg4%e@ؖ!ht%x鏪}ѿ#{(,s\f=E<ٳKOj97J6dlf0Af+ϭa+aJݣ C.}>%& F2hoS$25영8 ']̦ %eC7?uo?M$<4<O*^FZ_#7؏s$t? qY^ndskӍ>R薝}}HH md/|" B[ YFL * #IgGy,Rd%<"4DBJ|~9rxqA#nl%%8AkE!\#C Y_AR.H5ngtu>TWK=U8-_T˜ W-;r9u6  *ûQio 'ξ }VHU=\ӵ kU2^Hz{ҵm1 -L[mL!�_Uȑ5f&%)At^gMj{`&Wq4NSE`> eӨ:Va @*Dl@Cu/ , �Fϓln5v "@yځqqh:R^!͙Դgs, 6M*a 13&mWuxԇ,VW."tvF ր`20="{18 yM /9siDiHc#n:4.̥#?4el- ^άY3gJN39XgU΍ XVh%9@ag,JF:cռ?Ȱ8PŲWzZ?[aabi?Vw$Ju 饡F@Y@I%<8.nC;uUh~PȱA)xL<%@fdz{ ə!'v'c5h K;>X+EkPNz7^\<#6GO4<iBr5zS=,CA~cye}+!. v!H#n142^]+dT#TMOUJ<h+\&FsVDL"RơOL2DvFPF�:$[ܱL݂~H>FIv`bUh{.$id_F~6wCaHS!3 kQT~' V�!'S%X&NW|j52Kd\\{!mV졠ŕcIyyQ~6 ÷sUuy-sWIhﺮB8מWpQO29]˽exW6kyY*XDQ)ChTmZ\]\oAMWG̖F1Li??T `15$Ǐ}܌ùpNhP{μ 8K ˇ%7)pw8p5IITJ])WUӶ"i( 5ΕNjr$N"N)sAu=UܥE֚HOS1ǘG֤JY4v3.(2_^`tg.h (ָz\QJt2bLvCFOXOlRۛŚTf7Ĥc0>W3'*"0]_DjgP-Mj~fu(4|3]?]Yx+؊DMm΄{HރD#~>D1BNM6$+^N͚3POWp8gn5q_VgOG 8ok/LD~ ʺ)PpɊ$wTK1B9|i!} ;{xx_*[W@,&mH!/s7ā 8H ^!,]8MHv*G ʂ9�Z}1xC+;}r_<; 4gF k؂(Z)S+e[nF9t-Qxenغ<gp8M呴GFWUPSqwAE2|8W]c,gvjVto:ETa'ҞV%5^}7OPjӸTr$n Nj6I]Op)uk/} V>;7//ކDO40zSb/װLnCE(^5y?=f)f w�!}wrU�ePb|,XJѽCHdtJcCy9ρj3t-vR-HBa8Lbޢem$e^_3'oy='"1|Efï/v0j7nzZ<hW !}{QF1ioiHȴVGIw.G2"}?*waa J]57zCqܐU5Y: AYXAn9Wb#zHoUbt7ӹ(AU7,FRes{ҾBZ#vSȂIԐC"fp )dzc@zܿZt2% W>ҋ%k7pAȋI!E9 e-q�nPZ<NjLY%FѼo6[&tY#?wwQAYܣ#A;J:,\eY,1]![BH\AZ nsYVsQ4hQqMqLRWY MUZɛĜ~p^5L&S%'y4cd` f$ϠOp;}{1 UUSSQ7W"cC)4%mzk $Q x�FJuqF˷2C?ABSv{ 24KyH{=,p..bL%ddzgkZܶ:ߺ?F9"[Wu`:~jSA3&6kn4IkXv^_T,W˛M ~>q2vZ`Cج/v! w,Sc:_L%b%NeVAQd4~nzyW-4cv5D|KY08&wcNչ/v!b EF:N؞Ю.Ky8i*O8UT~RUBtPҡcO K;G Y0$BѤ#Q1dw�] <YJ#ؕdGX 3AwĊ% Kx# f`sp>:J' ٴ)P &.=E&24c9%2AgG0ӸNk Q!~�Dc+˻\y"T dTLEmZ~JmHܒʑz7|S6.%|K6",s3v!v"mh`@n*۠!Uw7sІ넀v\#J[ |i6&p MJA5 ^A"$u.9ZD]sxZaDLrz1f XekF͠_G"%ZHӼ^"k Bv@t{)L"'ijf)h}7宅CS#Q~(< kI}Sf ->O:LC>;H}v29 oОt@,C+*r\1 ~8j8vu|EAmVxCKYT'}ޡE<G֌<{QhE9OLPw +XL^$K.4 kqע\cm}[̈́ơ֖"Q(@F噮&:w]G!JM0`:LTϋŁkӌ[wDV<}8OTu^4*li6/s4\DBd& r絆{m5{kì}؛0"KYNJ'CSoM'&4H󃗲a<[lD>x-B')j'Q%*_g} q.8b;R@A^A`T*v>إx=fTȹO-)4c1j-c[gi#\Nt$h{|7R!p1Hҋs3kw֧tK߉qs@qfq] -b& BE >?�H C ̊<D}$a\toGmΈlZ;Y <:#qշI]L/e^$T~-߬ 8Y,(�ErK$Z0Î UJ, 6{Apya6tZ fʫ+Ny䔨J!'.rj籤Ev,$C1vp̴v-ond.)CT6Hsfi"<GGs}G/Ez otXdmЕgg>Pدg'*ש^o;6x#:_ `t9.9^tE*y-YDPT;?Suj_oi�SAh<_9'S[]!Y;œ9y?O0Ct2H'b7SO4g=%y4d,Za֟&`![xVC\w!҂-u_Ы^ԺGepDp1-$%cpǷ]N]' Rį'y[c aejvmX]\H|̚69PCuEq^5Le^8x_\f/:ng2bPcJ'(2{weE IPEJ,uݡ<`&_۳=!] UW$h.{`fD>a׸>)�܅Қs`,psa (�fB'¼K|\i jՇ+>*CӖ6@-O 3zO̚[SIRj"Hܬ_@T.ݴZ)'9|\gl  qv}E(`>З\u үAW&#Cظw7�HGqx [:|8Zd euP؀8.ZYyoB.BLzDTCbUNܙV3W9moMX,-/MQ3cI†I)ڇ5/>-32"$ļS*ؐz=DILj RJwwGhhp*0Ļ*u"dqj?'t{َLJL- 7|ZJi-2|Ę+ WwN޲i w]<Y[|Or49λ_<CH�T4MDbkdDݐQ\廲Vhc?[V\4%O)-.b"E"PAsCٗ� ] heS[mI#R=x ׸qu!l(;ِ½Ad.gKC(iFG b�Hϟ,]MM-$J 3#x=M$0< &/*S]Y%ovj@ šPMUTIć,T=vW^MjL Փ!Դx|g.Xz~k  ${ \K㕇sh%f0Ē_jVtωM]r>[}N&Ӓ(D|?b*κC^6^r=InbKG) f(zvl<�P]uJ̔^z,?;]g] ImQXAb8ܶ�hCc9‘y!"0dh%b{_0T\ei!5dFo8l mO6}5$*q; LWKO5~Xc$o%)& yD k\ t2 ~{Ƹ9`Ee,4&~Nږ("9ZG0lm0+aJ3;ul{O\#L6OFFt {^j4UkB�mqz )ㆋDݟ$[[akYhs Aބ#3ߤL-uO`6vxt>RUghVdyodѪ5:rnbj?qj/`_<UsmQbΖ; q_"D3z0 eo(*X-vm^H?GlW"f+h ~ǘšZ76vVro D*l)|SZF(0ْ]*:pЗHBpbrs/xߞz WGFO2ݣ\C2[zJZ`4X`t{_~Bhr%Iq<8eca.TdU^d q| i=ϭ`SJϛB*mn4EX8v? GdMM~׌&Ww`=Q8u#x'=_z~6 3\djb">mG\n4|hNdm״A);=>YP'Â5H}$ў<\%#Vo' v[8<$%Bf 636p~Un+?󀭆gI\pV7ωloP˖�ZU:S8dp[(-;LT(!qW(OzdrM(3 o&69`LW"r$(g D wH[n B6:"" Tu8Ӵ a<ci2(iB]@aiJٞrbǒd."<BVvjD .~^EM>1qzI$lK,&- /z1A# mm==x圢\ͽ){pe�9 ;nf#x:," bfG{gd$?r~]=AėTP(*hrm't:%Cl!Lh@]dHzGq{ ^vxIH}&Q¦<Si"F {j/;!fE *g{d,:Y l`b#orcӲ5NB+ CckC +K@ 0[qxNygd*Gh >Iv|Bbl I.=Eh)>y oL]""lo,A_V9t:p]UYŒ1Sc58D͕44p'ʏT,_a8~FY2smElMTCX̃H/p~ DGA�w>k{:O+ظKJ< !04. KHu!rQ>a*Vlj TIU ǕX)V۳;N|o?v#leul}} |3vU,tDxxq"|�ϚM4˳d$W~�,!�#5`řQZ#աJ|F{ ڏBRm}N=[q̊XE8u7aeo7P:p/tR@@.?{S6HC]YR>u7{oahZ̆KTFO,:&b(MB/Ƹgv5zzVnW`޻~ -6)R=%`/b` 5RI/Ύ{8f·v53W^{2)65,a*l#9+h 4|o$7D%^eMI\ 'ެ�Kၷ O6ȅ૭m ܱ8fzCI`7Ӈdbl:Y{9x27Xf`B17AQhmvȕAz1R&+>9Did%i=B}f<;eNzcqzD!44pӯ桽@ s7\KZҾQq{QTzXpηppf̊5o�Dԣjl/iQŀV)QzXg, -|cE›|(ݱRJRLoVj u$t-+x%5w`lVX_ph3BCƙQbRhHXqhǝn?b@!?0023</&.)ەs^xPr?z7RC R}`xq`;_>v)`Gldɞ;0O͜nEZ1[O'w@_6a XxI aFY 0@ 8 tyaI@U_z5oH yW1BerVluA` ɖI̥x Fݢ܎yڋI+!6\LpIRQbxbƒ v!YpNs܍P}\"W \*L 1έ14s4Z]Mq\H|<gc=ߤF&wu*3&8Pסy[thH#^J踟3|}E$S%[eYӹ0b'K3y*KIYId~*[=LiF?h@ia%ьQ --&P2wc 9HvJvEB|K-"^m* |"i4)P*btM=TC*B "k !�5Yr+צ!5GCTtyڞ$p}vU оyan>WXJ^A}D< ̪'<)c >f)NO <[\%q/ٜ- :pou+GX*F> wFgφcVeSyMp{*XgdcQ\wQAV :??H(-Л WOXZ_f'gp_jWg;[TA~a+ .WOOˊ|D"&E!>|HgMJ(-X951^:T,lKeŰi7_kҼxkV `AFح i3]-1L@zՏ HTm'f?\nl2]β\ ̃u~ C {2&YYR!CS2u ۟A'F@Bke+uSfIxg)KlIuZzP݆N, N^1EN ʘ*AfZ*SJ`E>Zr4e<s"4֧+wդr.V֍N,jU{AGnwY|Zvc?נI2WyWT�[T=!4F9WУg!2%M;& A Q8MD TmW^Bs�)E9}oeoHII53)Ao%<g zB~jn̲r3~?>KZFJ/.MQ!HЁ?9uPyVDڮb<+_l980R b X.\W?ۦ-12tT^#VNVa+0dvyH˯6.X�]xK8*ez;0P⨞^ Ҷ4m;3Lp y9zD :h#.ie[4E"89]&/;рZhDʅ6[:?S~]{՜#K=pOR L=rg^`nŢϹ�csIubyݱb+W'e 5BNyG D]q$1["${8v3f#",wA? Oulz` S꘻mZiaE3M2 ^%V`ǽ!ڡFLV8 [UV/*r")o�7d'1|wwY&tr R*V걏Ƴ(.-P(.V OEvf)wRG9{Al:J1_&76]G^\;('mȊChT/ߊ> zXX[ ! Ni6o#o{f;s"w7ּ< (@ ;?j?+?aX;*i3产n56YŰ+ 79ܓg -y" # \bU�P8<vE]4)lŶN )( z1(>./N3 q1j. [tt SD6XXpui0YxkZ<-qZ# h %P1"r͔ NYa_LӢi3׶vSy˽vvҋz_|F%]fFM$2v}=ֵ"jTa_@Yr7!֣Xa� Y!`0X,Tl㷬-%SoGH0TDsWod>ۅ%@gO8Xau1rk9GH=TOO 495@ yv ͜nF~0SL,\8u+'e닲1 ~=GTctJJ{[Z3:z*nNџxGA2.~(/7,!.}O4Qt G+ܥ<jIn{M\"`[T`\%<0pWx>Jb%!n1-~˻EMzJ,ҞuiClՁt'6pP=3uTk+vh#2rEm0 T;pn=`<!Bz_qrdeYŪ…]P#Bc(o"/?k\RX׋F& PɈJJQV͉g*߆v +oRM(A1y, "aq=zeEl7' kQHRBԗ_;�Ds[;6yI6;A [xvW 3w`&{5Kr9඙(3R5/4CvXR7GPA`'D#Y64|c|W$'<MrP_B~li5,~N,J3Þyƅa!ٿcCj"j%A>UO2 @" JʆsOp%ÆiLZ R׈8[!K,?E_&MHOpæ3wN"~U&&{xZ}Z63_iǴY^אŞ|bNh9WgKlˋew毬EsuTo(ǙUl3'cFAO Dj/x&pY}Bu"c,Չ3M#{1@�Hr'jjIZhKOnI|X_q\h,B7Ʀ6+A@Mz[1ox(n.dŏg):~eP s{|06H'UC潳k.z #R y~XW(sҖ)J~q[C1:1?U|/Ɂ#19V4L{r+G孝p6Q&!@إt�/3"k؇!'/{~f+ᒪ2-'̅/un?Ec"`(>t'Gb<*Trrƶx r*p~W[(4#%{,Ӆ8ysluZTY/WS#xc=_s[Q2Cm63Y*^_+`9x~@>g#Q g�D_sjs7SN#~ri3JkA$WESՔx|\F X0icl>0 (扺9 5(*qB@!G\Z:Z򷚘},F#hQM|O}eK41T[ } e r1sjRk9�2VF E +.DЗI5P;M\=ף?o^R[60> Zm6Iؾp{D!�ctjlnԋ-_h8iO6i Ukڠn0LbF0a*`pdoK(m&Fӻc;{enscn_C)1f3�K'tV|D+Fsu�0ƙz c;gʇ0 M$CVH8Tbi)(V I} QS*$UPhytOekb]0cuip?E J$woiM\.Оr8sI~6E5D\zx'jQ Cņ{|[X&l`қoKyşg fm%|h)!NO)d^jN^^Ti 5NkXS >uj]`k[*Wq [ѓ3c *>XbV՟7 Hf]!;sld]l7B2"<B[uxʏ$EOʾ_iC2YLS<^Ygri'u~ƻ�:Y4*ZBJ^Tݶ)E1 Ibw^‹^@*IWazU*go:Z�-1l o0&ax-gIp+!(QiQLZmpREWa\ =y"J? bEon.<X׎`F_UyY30oOVTb[17]u_Q?OsID|>{H1cd˷5)%ʣc]mu]c}c! )=ӵUC !2bbw6/>mADs(=Sܳ6|"zVx ZY4.;Մ8R~*:mⶫ ]13­MZu :{$]Yۇa `PŁ0Q\LN )ͳiۆ$fkyujXlKa� pRN?{+ ~FaEs*^5RǶI!03j[(m9kU*oQ9\0C_�4+j5{EwMM{ x%!B@]YdNuuS$$ef{M7j8\hλdf;FL"4MTi7)\l< -7Bf7hE?'nM1<~q4ޮ^멥= ak?9 +_ޱ 49w.ET7s&N#[G$FȬXp*Bs'#~S\#j bQ>;bmBpq?B(2J]M*Bj$*go_g]j''4 [<kӧ)TA2C4Uݏ(U6IRH@=FszfԿKD9vvJh-[>�uo7qzV9ߞSyoG('!$rS1i_7a ҠepYP=P*bѨhxd体F2YeP w1r {D,Qlc=af?(M 0f4"d!Mg텹UkӧS|v0L] dB <90)Hyo\Z>Xl"<~:Gx0mU`7H̎`wqn{`™؅^Be}GHTϠoEgl@8Quydxڅ4"g[U^]vA`ًo=:]ȓRkY:bMD$r{GmGXM/j5,(BGZ ?wbjoȴ8m1 kgo^~bL~o}y!Q`M Ya愙BMW~kmQ8nv+¯ XWY#eW:)뮩j_f#ZhY1,Vj'hII9hZ8=Q)Mhc4򲗂,MELhc}`uu nnIFA GoU 0kAyj~{8NM\UGgۻu/)FPmsbpQ)A.^h7ԇc٦iNVzW/6&{}4CrI( .*iȪX'6s1~+8#5rĂjVx-Pޒn[GI)b:in]J5vX4OFCö|KP?'bs�\ޝySPo` (|VVvith6ܻkzI͏'\_PѺ.dFK+ #"A.Ďk(rezf ?1c,pV̉ǃg2*<՘Orǽo2WLК!彆9گ\<<pha[Mre]NƺOWpm%,W1Jw#gS: w\ qP$5K:^/aLHFEOvF�1c{Cp*k /?uv7Xyrܻ{¾ح&a7:^ "mOY=,8 Fgk@4MOâJQ_q@DĬM[ CGq1*=< "YAXN0]%i]ϮP9;+d(M +s'Q4`))lY c&tyw6Q�\{n;M.Xz~oMTMd}L<ŊնPQk˂x&Q n_R`<ONA ][w]׼ozW^vRTe|pJ$)[E {?ciQƦ>8nH 19>~b.~l`< sVa'|8ĈOU֞ENF_P&Ix+Nq�p@ʋ7bKJY̿3XԻܨ5h͓3"D<Eu 1\["5` د(Qw rwЊ ծDǗ599KJROjjKSУ7AjB.C6, Q[=^ s^ɡTi8y&>-RTb O~[u~JPhCҽ<IKӳl34aH]9z@41v[f ͩ a[M|om86v"ԙ`.`f^F@ AD2Ϻy[pjQfICRT?q8F# F0rTx 1pĭt jvfBsgI+B<_]wB r*:tOD 胘s jw&;ZijEF9% 퉟ы{0La*w\9)CĽi4o�3WρQpGEFYh6lm] c%! hŸh"5R+UMNh^q6#F�*) _6jN1$` kV"\pK8U7zoԼ܌UR$Rbt=߆N]1 vs0KkLܮ NďFT(Z=WJ,MӍ,~z?A)QC񌣂fc`䈈B}a#df?R'װ}3n+[ :yBhS/ֈ7w8xBk! q"zqؓK7Y+!t&*Hu}{){bd{&Q79XIqjW9H∇Lӹ~d׉00kk6�Wк20s4{S\y'mWNV?Mpg$a _t.q"Ȳ�TlûNvW++0D C< b3I f倅{Dk_m=zg0J,sLåm*^{k!]`Ї,1^g"g_Zu<XE /aj%Q =JC/]fh5" K]9EOz]rǥL?28ވ-Q^w7ۺpNI:3i k!A0_Lt\VX+=ҋG&:ƹڮ죋xߘC{I(f2/xdSQ%&1EU=3U=ԯ31ĕu"ē�An6j­ Lˇd9t|'ʡ +܀hvEYj[ڟ܁yqf_6v J)!QJB1OȚ s hA �h=t,{[̦Ⱥ:I=Z!k&56k>M#=#zNU L*gbKj@:׋[P:/9خv@U4&Y$6u""5\1nAZh(K{!5u=8n+xNspC_;XqI'򇛩у{Kx^diεkp`Ǿ݆ЂSߍdn]hąM,(+ߠ~E\@($m{lys;dVu/ĕ;+鉶NcV[UX7qZ*|F[-!D�+cR cW᳾V8I1#4iw$ 0 KsoCc+UZ*AIbi%ʍ^`p5 AzEkUQc'SE?9?*zꦴI# h3DQ 2<�_;bZhE!Ïլ;}�=]75p�RH7Ka' w|Q˖)tݵc`F=h0`V6Zx.FϻS0nqgNs6yz#kMjPcy|EVvxύCgT)R[EcZ32I24 Ќ܋˶FX#zriOzd섵)sLEPD22l. QXYq{~ iM pv>R(Z#6Z\awnSc s6>磵A{ZO${2,[.9LFUD,>[~wR/ r|=󍊻>RdRf+)Dﳧ)69Ɨ(4-FHy uE^{buu}eL(Zl7@:z7%;@زξw`opG?[stTD)أJ*k4JLv3Fޚ|.xu*UyllDJ> ZA+v,ưl[M~:-OW1l)D,/?^\q._|}/I47yWoe+WB(*[ .Bf{5 D$"J:Kw/4xi j)�PTv|7OxRy<UU�"}^?�(Ea_0v!jQTDyїJnY} x\b¼S4xo?qcTCn!گI-zl^h{�?b- nHOөpu\kMXI Y\24B]48ׂ#dq16^DZcHW.i.ԥWǖ@ Ku˼ v\U x/ؽQ+Њ`nqk4<,Z51!_ E@M)D V^vt~2g?'JxÁ NqZKsީf%}j'RQ(<Ui^[B}'Tg+~3wIV.Xx|x-X;\AY" ir>8zhhKIfh$g5<{SOGYy$3j9B.|bJ y.6A҄KpET]u|z$L#2*Tj;8^&XuHإ'be9ʚ[Lsm3]DB~MKuh\~I�aQ׵L\ڳ犯:Z,1Ü7(GKJ0O铹}/EWoz()Z<G@@A-ud^/V7f>kr~ۺ9]h~Uae S u-FP�YmYGus]]v[lYbvs"NjG3$:r,*ĉY^^c|y17>[+խA� 'NK}C!}Jk Q@nt^xO=ݯؙi LuAS!0~=8 v ϖ! w;]؆rxM `FQ˔1d fhmIXpU˳St&L[9-68o]HʹCqd]Ur6A]fx" 0q'[(ԑeVjv\mgyp.3ՎyŮR=coq5SGXc[H x[cղ3p?.F&6* -7;犹w#WxuT}e&ޝ˪;ʔa VqA|m\_E3ӳГJ3?7y!?81x YPzrKڿ< =R1bǹ,Ph; 8y79y@Q09^)M[&Y>!ۂSs&@мu'vhDF@T[YTG/Q?(W HHlyvL7E %._<@թ$+ku)do֢KxߣqIR]5,X:u/@Wב716&彉0-f%E[k\ClH Bbӫl7g,E'\k3+I7`,ܧOsV]⏴ yp:ᙜug>=Ԋmc0kIlKt B>[nm 8}4=<9Ȅ5;8~xkt64!_ ?XTӞ"wO6FY:~L$<#P U1QW)ʛܧcor*V "WqrGޓ0x){ kg0i-B- V3w6<y߰KޫzkR'<W!O<Udg7L ] =̵;vy^wQi p:U{O-?^{DMH[wb5YVDuR'm򐡃H"mzꝌ!oky>rF7S"K�u8UB<\g1l&I98{5<]ڨL550"8A mT?[X @Ȳ{,Ǔ^*k"ԧ@!kyrw=g wSKkɕe\ZVM ߑƉD">q9 4Q�|r"?[Dr"]O�T!E[("qW?/0]?]?>yXFA~%7\;䔶Qu* \(Lo,ZN y#񲊭Zu<i&nb@|roAA;vZeݲ-4pH5V҄KH=z>,-+\IRe -xL2sb^÷<\e}#S0 .DSZ׊)*>&sA[M&Ɵ~BN߽F3;^A{̠e.;YФ9.%p2st=b] X^-Yœ(a>Uh>4~ߦ*ܵJ&VNnx}7mQxv#5NM}U<@Xn Ԧ58!7VlNRe|+{V5??'!.@PF" 'ĭ#49x'=>R> 3sFlsw 0xe~!P8c(F"׈DI[Ox8Aϧ蕿puǃ ǭ(+ucrbzqqC:q[ SweG΢$h]w ) ~4>A oyt3�B骋&SP<pgIFE+Bv(NQ(: A[az|v졺cse ˊ:fS{d; -݇參z$/^Is(\bx-vƾJKȧ8g$e>EU'p'č@0ܹuh_ލVL*OU 1 /&J$N$>nyGjUgʽYӴ )#f3a5gp O2D.Ŗ/iflSEo>yWylUцozhx%4)"LG 7$:n/h;{[Myӡ`Ri<K<JnHd(RsiiJqbQ"܇֧ `(S5RBP,|+TOˋr !I/@ WCa'n6! �>*kx0llhJt ^Kxv!̸weo1" I=tNS^e$螡軥!šdVJz!Y~Pd8lJY?2:d :b+DHL"ֵBF}mұN.U5adKGZ&:b+�nar;%r=C�tKݯ76I_zrg:3SnO2 UkR|}铋g2{`揿maɛìO/[ XY|0E9{Up>5'|&M#Wkc L)N1̙5UY>[G1x'u.Nbyy eiLE 5[ܽ&G1F*Q%3l.>RtW6 VP5N sڊP!cx䁲܇ސWDy5%*cH?FFWϵbP),& C&[n^Sb$7Wc�cH%q L#ݏ֜*ZŘvڮ;1˯gj5GŹ="rmp*bRѤ{kƝDOrگy r2 W!!vt�Xܔ Ww*\2͕F$(\ya [հ2 LqU)k+ CgϬ @s->Hk1UUwaJtI*`)Z;g\trL~]"]svM.C ^"Q\5:k}vAg˫|vʑ")˃ӝNх*y3-:$ɂ['{rRk,Ԃ+~18:LTUqDDF.1kE`K8�c{1TrX.K,DaXQ"�R}ƛ<)$PiWZN'9o9hIKT^-~I 뼵:~>0d]HQaom8m/S^Hsr/j3DдяseeIy kJrBпSܚr}%k;?7I{ӡm'1,(amqFeլ"J3͌14,1ws6<k{X;*|:ŗiP;[0oxP֏׍B bDPsL{yVc~ EѼ*9D@~ja03x*IX8v鏤lA>4GzdHe( ?9x;-$|*?gD2/t}Yؤ{SY}~# X`0vn-T9/?$YܥY<i0c`z]>l҉~{2"KhNI:-h�F%' lw (tz<=|2gBrðHp C}P\wi7T__$+.굿،t8聳3;i;s]nR ƚ=)N}W [4f WO[,Pk[z|Ha4aV;P9qE3f > jX6_0n<I ' `5gttP8h( %<ƈm8lTOAr@!bd@286˰&8w΁ku1Y1X:HQXlm*#ũ`OLHQǃj{ \ƞ.&R2"?{8~ē&#ïiQe-Ӳ&}xeXj_sfj }:j Q{˩E$!*\_LR|0~~marze)9>&V| /JuؙaRXjy&G7"E$�}Y/ Z>/M 5Aѵ@`fTo \ٶwsb*k$]CG;G1}&[{ǹ,]zh܋�w^HhX*xqU΢7@Ղ4y:%_⟘Ol=ՊKb@)n0ql5] jLԌ4UBKv~CK*OL�?(@#tAZ"U=.TXP ֖=.1˨85hPGP֩xcz軸T<,#{W >6 `Rn-ϺΉ/@Y@q dj<xc*YB]B묖A0Ʋ1<{C )t50[4f4?{\֥_ oUTEx߼(EY`"++hf?f~+w+}Qn�Őf nfu}]lxe̙11&|wXy³ NS8)+*| McQI>q6"_!o{:+7cgiս9c^« *s[x zE-e.W%*Pĥ3wIo7 IqtEUF57R#(KUUZOg1<dR:LI2Sxu-T ڂ: dGNid6+cT>1?sje}kVff^:S#7'+RWJL}7 Ov¹Kd0RWLc6u:`۷Nl̋6}gD_;Q|4G[nN:yx{D:B[;ll0~@|&oӏ:xGR[Pp0#:fsyTExd+s%P?#H5vP)'p ij6K 䡶lEm35xShV`?׵wQǠfxsI/gQ6suLHzoxE=f` 7 b}q-C %:12.}hn3gLNnPDaevyՎm_ ަo;R0L5Ë%~OstQuH_ D^$RC'0efpLfOƒ>y]Dpt~ڒmr!?;/Stn\r4J3%ۍ&&5ĝ( `_'aPJQz:="^.ŬJt)CZd6#�Y[ױ*h?@ȏ ׈4H)br ObJ$:XNlBcۆֽMyHy7H濊(_uv Y`"GрIU xaC9ɥ̒9Z>Qm "?LuT7Cا.j@OIlZCGT@*@xet>z(1Q=\`9N˸Y՗�Wzfs渹ځ1 0:=dM~Xsj% 9ORU'vidY%.?Ҹ_"'=}#isت%m)3{6)̙chcꝩss:wRހiPc/"Zjb- ց4eY*:zn~q`k"`HXeXa^ьR*W' \Zj"O:(؎] 8g"Xփx<r/l,A<Sc$yOU9[w*R4r7\If9l@Ԟ2vH<kgc"]6 (ڴA�ǴS)qXogGf?Mgg6ڎo/atsHrk<wHC Mq\ں2T#oqha䉋ٽ呐d _9Z$:(>1O9`c oǩuB�=y$U?cUf9Q) W ~)LQ38b?anBq_z. cS>?Q!sP3=!.XaycY$VQ&[)yq;U[sw10"`pt)?=s 8#vU2p'N z Cfku6x >vkU* ~pOF4x#NM, g^ʏf(_boyL~`]ՐzC ?"q̊;}H}2J F\l\1SC)G[9z]趶/7$ z?.jZH2??oqՆq>B<R/"gWY"*cT㱬P�=,r [5xqv&�=( þߧɇ%9H0?pY2SVfIXZCWG78t]<y8$a vSK$ZX5b�X6rֽӁ; mht6xI"z%J�(=e&VNx/ xՖr!g?^"Uj=W�\. ׺Q{1C|7/8fȚZ=AJ6礌8"s[d .ځ$fOGjorj=y9Z40GG:+{Twpo j8H e@~t%ߏD䐊2}z3Yyɲ›TW3BGME.؀98fecKKiR[;U<]cT_ub88`vgg >ۥ.&QGY207BQuRЮ#W<*پʯSУŔ)guNꐱ{"ć [\#2? y{&1Yp:�V@uXs'IMֿQ3iUJqr{-W)5!rZa%@ h7S.f;Z~̹}<.Y~;9M` ak� \nEL.#t!Ura#^7pւyR KM G)濔XЩxϘ:AmBیZfTqJϓHۿ'Ic3y,*q-QKR*]/DMP*cs5*-Lښ,%F '`QѴ<T<7OgpVDp,Z,$l;$UYnlZ݂\ d % 124$$ uȓ@HZMF $,�0@ ( (B *"("�0(b{wf믆7E]]]]U]\{o>ν=~w]sMsqf_u3w`׉!ij$gFC˳fٹEMrm%)&)TV6Zkǖ +Wӟ*IvR=Y%F"*΂E>1w."8hwϚ-qm<MѪ&D6/E񀯧gBr#.qiKalYx'އNn͈`{[`Mqd`қ~6=;abbjnKo_^߳έlYf*]g/kv'qL>(Xn!_M;wuyϦ{ta9캓ۘ}'SwXotS]۔Os'Sb6kbƧ+OWE;=r(b;WWLU>s'O\}u[aZ~Ne2LKi[/e6] qiLacNc guVw_E'!9<Y>h~H\7˕=-o]1N%$s"i1.<U=R).p9> *i95ϛz8o9ԿҁOrxh8~m>Ob0KwM[uX57WaY'WcVロbbөsle3zZg}8[ȊOM8�~B< ӯ}2j%PusLNs+Gw3=:3ɽ|sF֝RbZWḭ vC8ꬓc]杻{ʽ+gcf?u >g[ȩU-3=ݮct7FuM zd] t[5y&,w1~WHzWC584u/ TWK8 Oj8,j}= +g٠W7l÷ݷpzo*id ^ks₯a2+Kl\ȇ.ͼDOŝ DA%:BEy,%4^<`~ٷMw6oU>ynjtW aC_.0%@^fV9j}΅/? C,h5W [+o vϟICj\~}u9Ҟ/AwXm&wq>+8KW>Ýmj|[w;.6;RvփuӀ k >n\ 7CkqExGSO\^m1EDTBvȿD-~%">^S @Rzm_-}9KVfq ]LVkYYsL)xm ǺgJ&WX=]1rm7M=>]ۜ;m3~C_LwLi,*gEҋ"x]w=]dySSj~];#g2δO aW:NQo}Oٕ=sCg{ecm0q x*N_T;joh`iΘZ!]4s\szlӼ\FT$5]Ei~g:o/6H'ti$S/J)q6G_\̞n.}+\!qUzӃfv'| :\#Fr? =Caޓ4ð:m7$g*S[ef\/"RYL/o㖔TP?ۧ^ZxT}R%ގ/d蔴&n.I 6T߽L"hx#Nk%{á>s4ӵ/v:< dY>gWj3zLYt([\Ujlw,37_AG,cY ЦЧ &]O?j빀:i3FsbjSwLIk'6zCr35G=aiMzZ# v*}:o쭣q<*F=}j]!ͪm*w ,w2/'oVSP8nat.;7[iy-ݒWAE_YE`l,S q 2C;ʹ]Hد1Y_Nw^cNݱGtû|&a*ԡXqf!"ݳKN`X4̝]}_Yƾ qSnu'] Pq&wwzJ<ZuIcFؙzژfi_!V' ~ڥ\HU>j\KxR#az/Y>M mA5 1Qں==ݽ|ծnٿe#\哓'ᑖAz kP38ToeWjW:>8)wd* t,zwCǯFEx{w~9"=Pn}NN}woehS!| +GeZf:y)x.&jqrH#GPoeRzLOuS9uәL*U*τܯoϨd;޾Jw *wG,q~>'zrs~451>~̕v.nwD~Ҝt^ݱnUkUYEjIl8{o}#5?Fμ\W[sX ݯ& ų4hHTcKyiG0RFxfG3wŮsw:n/{=u`SΗ:yފy9ͽSe߷h߼INmDt^9/x.qe-"ᨼ.i]+H56W7˵dXiN}Wweɿ@b.~fZL7bin8;N[{ۦ TM6&-}MW23<lևv}7[{'${EzǮOM� ݱdhJQ&N4'ZwWKp^P#oGVR8PU"d>lSD3bqP&l?u"ΖRv ,Gݙ~_yY}тߝQWV2r_M¡oWU#̒әٙjo a!, gzs -:'=f㣿ӝ,y{aҟOhWs%$_Xؑ5v)s3Z),ԫk"~5?'Vr҅N"vu犧fW=uq}<Q p~X'y[Y]9sT65Ou]])p)\ӌ>xu>J C&8XRHdZ X*-VA7XmO<nV6ީOgFtKe^eg/}Nۼ߁̲)+2qK-3Ϸxf2;n)^ꪣ5*-G)</D}r /3/L=ω*=ܲS_kk;-iCuiy| [p?τVzd~%1Bk;RDvS3u4l|l؞fezȵ1P9 k U:>XgW-P~7{Idbnd杞W*d78H*G6i5?Z޽~<|[[3m`6's�hV?Se!{U=DV ˀ<{`9vw&<~#Hqٖ\OsMQ"糾/҉;wW􂇁F#CuKNO7u4:e󇃔T-OO֋2lz|m*-}TZ2s?[^s8_dYVNݮP٣A[w>*ǡTy||)aG[M4 T47){} 8oE,Pn_[.[ou[4mmZng{38[>^{XOU/s{e'^b۵S?N\E88,(|e!2aL/eXdF/*=h(Swv]AS'8]~DIj:h94/b=+%&\.+zt D#J]rmnCm*Ӵ6o1?z%ٵoyG溴P-n2H$3gK4[x`*u4S+54}g岿o`}woRoT|^y4ކdіSv9l- Fb~MԒ6Eq}98w1PTIOFn]2XN0{lTSM̫wY3:uG1 QSG.̏^9ߏgCqHZ!b1riQwQ~:ԥN꺯#3e"rQrZir<MvJ9ǝ'%$PtwQoĻ8nWn~%}axh ҙ^.N aσ@Î鰷mVicrlt?3%Gayk1)[ֳn] ; }q,oOmoj.+3j_v<7;p;|ѳ4/<|`j53ߗKN'˺z(QU:h_!KU-w[)\73[ZOWqm.Q;o6{/Sݪo;| OqXZ^mnb)0t3l^ au^VwEu 8Zi[ j͡yN } +isʨɚ&ՏѰl8ʷ /bh'[-Lզc=tjf4Xŝ_K gMig/9z.5FnHg[tzkk +ghܰù=uN5E?'oYG|}":G(yN7=~i#1iz|o_2kUJqkMת.3tܩ6cLc1kioHCl^R-gɊaj^1, X_⽵{I{teN7OvdW:oײkmL^|X]j>[ w9FoeeV4JMr&7~0MvBCwmTih68{ lzjTV-#y3^ꩱo!jW$Vٶl=t75~q4VK[yssl\JЪE{\3/ edF*m%75r龫(W-Ɍ=]4ɷrȔBqVB5 3D*I?|I :ю)Wo^3ȖhNԁ7?0ݔItq{- ey-:@ڊgJ]78gp؛67KFp8 ) Ͳ!O=9=ŏ)gtQΝ[RUcjGY9S[Fldv|˄fvf-pVo2c�}⪙OTdSuY]O.œNI{AS=zj{OrNJ\ .5,T܌lJt<c:VN-H+:gӚf|p\-}A1k8NMwKRp:xd~:·3KX7 K̎H\\=;qcw!dp% !UQy( :A>I.\^? m;7kuJSELTXD:[<ğ&3Ϧĕt+O]( t9^YHk*EޥT L~y(<SOGYAm .K74 khC_Лu32os/.k|/go#SEB2Ƴ5d=.ӿ}xK\x:eҷ>QΨ\┾HŹ%hz3j,KYZeV}uQ'y0Xhͬ{?NoMtWOwh T*^g{j&NiIYu_Uo+oʹuմh5o Ywqrʦ;?_5,fC\"e¯CG^$c <p3^fvuK 3qw#g6kFmb;Dӭz7%v@_n<ؑPI̘ղV ׁ5=9?E%Ó'[I9Km] ݃Yrtl^՗l%^|$iN^3Oki:?WMme[WQQq}&/bpz?8)it֦�mYk8pُEԎwUZ]' +/@td d.5U6$oW"eo0+KϜi>* ~ǚJz{W{{Y^H?ל*JŶVr.]t^pm&=5v7&~3 R r>*JST鞃=ٍ4>?uB4j֩i(`X:)Lm9)ODN&c3yi̙ED'pYc#v"}"K=JO[gKus)ȴy: othh}2`n C,oo'w|m~vVPzE]>ʭ;j휼bn^#*%λEgƥT8w}M5=<n}&FR'x%=w*fy] cVVºcKᴒ0> Q{^tnXUm;n3,mK_xkR]Gu7fgKܼ;eNj68`μۺY^;]REz,)Slʦ6=ۘ0v^h#, z+?&$k;C_IʂGQ !U[0y9gۃ\d8ޚ&X﹇Rs]_|C*{bWX1qlE*=kDeM)Wf2>gG.atԱY/RL졦L;IVMa"~?ӺY)syS\Z(+ScҿnȫEr>JwxE ~Q?=*ߓg<|{ jWd>B[.,ܼUymj_Q\,*+%yV|K?-gϩ1Pos/sg fYםW!Y꺥ؓFP8 hv[3W,yjTh4K]&U8Fou.ٰu:İ9z-k5ڲGy[m͍~GƳUд(X>2o.r>dmk'y`zϛ+u\tգMiSdb_U/܅ߋOy5V_%9{4jSV%f=+S:77`U)OZs8ގhaR 0(;eFyj!Rq#K1}=ֽ`$<˹j=gV(괿y]/D;a"Yg׽)o67־x1g`ˍqQBo%52޻֪\ߤo@3hf^DVQ׺%`jjO4QJ 37ҷU=Irp_^Fvx3eۮtnfchV:kqq_ӖnַI\asW'{Ժ,eίN1rqo$oR4~Of 1A6'9}Tag:.f+d,kABv`!]IeM|iec~I_Wt^Nt(lϛJo25;}IXYBh"l cֻImwY[N.wc'vYuhuIrџ4\D2~}nVi@`f[X{6 Giu}(鑻=>V1ZhLq0ޘ;d wR["0jg18qoFH̹FSKxP+#7Mc*|:p>IE 6S![~y*G.)>e L^t bݧ[޲1goet>m~m-+·e+-θ lEM礴m6v@K$*mf'<t}vKsmF#cC \WM#\%>sgi̕}m7[aMZ4<.z2*^ ɛMwk{춛8O}$zո,ѹ΃/!ZJGafmx;'U# 7IؾhE;3 +x-jsZd|^a}`,ԥo_I ΣSm;7g,tqFZַ?<o|Gl{dk =ο6 ~wЯ{l<0>'貉R3( I7*N$e=mS9>J {Z$s%ܵ ,>Bݸ_4 uwu믹o/2:W g&UԹ:~:1CNw/6藑v]q<5 :2> mU/&aڝgvfZO3ьLbŦu^)[Hziy9);_wV )˧ꌃ䳶i֘DjEzgyL.f'{/!|[9]ow[q5avE]p`u+:o{:+D+/|Vѕt`aRcQ/;otQTI~ e WÚnq:3slǜ RؿL^2l3܌<ɓ,?DBEM!m]cwl9tӫ6՘vlZC 1h3,\IL\ 3`)0@"5>8dJT\y6&X{gS6'|>Vlm'16sO2S5~ W w{إs|*xmנjWُy"}'Ѯ8X{ o;h4,\yGM\4*{fzjzSN:*K1*sgstҳvgm?wլc0^m{[,^UQǹ&Q̳txQiK+̒2|DgGbvme1U4MlI޷/ ?[YěfhqjSa`ǘnS| 4kdieO*y>))][o򻘰>iv/,Kaoƻ?|YܸWDL_c?+IydGN0[]['϶E'֍1WyZ7&9|yL&@|FjzۿBOz?Rdj24b]03:nq!v[.-!6bFM8iݓ5+V3Yt; 1 |qֵѺJoDR>85:zO;_ɑ#рw8sD_uPrSruD:1O7=꺿LM? .7s 7/hɲѝac}ie̚go)گӬ Y57ܚ}(-| 5ҿRnnʷ`]L^n'W'3CUCZ30>t,C-(l,1*D9_'>o/Fxޤq8P>Td'Isr\maSM{Q2mw_%}'E39;:r $fzncO 9;ީr:}63os4{ AG9sgSg&ϥ[7=:tH$"ZIU4ޏè=%j|g8wܳ:I\6SآqKh1LARϊ:ϥrJ`ú2(❦4(~x+M6_uɸZAcHlƄ F?RkăOQIl`;6~|-[܄]UAuGȮk狫D:dË$oakr-%ʚl5t\;_g2*hnK<OgS3t4~(}?"בW̝ty Ū/Ϳif/k NR.Ng8qo9)O+7_<syO6p?TDngQuPT >Fp6ozkY0#av tZm_�rO<Y9q97U*Ԩ) Io}ުF3sۃd'E[O@ζZ,Lmb{ݛ^C2늗eC8:2lxMձ{ukŲAo=NּI~TM#g1_$LTd޳6K)zPv}_|~۷6ɵxc/f+۱c|[/[scy<}lv 7a) (imE}BY8S^qDr}fxH쨞KMl -X.$_mkpƖ(Z[g`f@$Pn^ }tlM4{Y;wmW5݇}Qz%=S^Jʮ}Uֺ0Rfj-y^K_5rՕV_VY3˽&>ݩYw.y4̈ߥww [6>vuBpi>^bo<.OgNJ F=gN<{_mGebW#gs*'N_19xæ~qszqcѲs"E �Sx~i³1Jq~氋+r _BRp}X; ^c+ERQ4o>&@P¥ū(Bʪ/y]F�@4n@P@\TZMHC`1ڑ8e<rXdYgyBe)2if0&n|'d,eRQ2D1S5Y*&-(. l|_G9x(oùj?5E]~ߎ?bJbOGb>~ 1d4 Q#Rˇb 2PʉD>o//1T @e. eZkP4*L?)/ IԙvRlOp `4-Be?B\:~ceB v&X?AQ�2UJŨRV ?߉Z]?n%B?p?`FIP�EHe+$&ex#3< ٮ � � ɘ�7@t�?�@0"G\*/Pw*`%E�0m+_lBa fdF6,,* ^@ 2 �j �r2&`&`&`)dBƕRʅw%H��p Y.y2 '"T:\e[IkdU2DejANVb@NT2&'%t�@ELҁX3 ,a �hP,j\|S(B�1 h_ Pݯ>}~<k9ڦM(R}Gg[AEi=h#l~h'p `[[$R(*� B@?\(O*gu΁2O(B.H.�1e \p ;@| ~d~(*03"?6fψ^ P# �Ihx� *T+4pf-l Ov&S9bE?TGI  2%&H ^�pfG �j`@;@| @C @p$$ @K`2ˁ4 < �"8@*2`f �-p.x `t b(3f8�h05@iC0>`&bG>1a@?gbb.IϾ4?%#\K_OO?^L_aLd.}~d\G ;״W+Xm_' ~}%|8-H`tr6 j(LpPnQ(o/BA)'権"cQrn  3 @lp�@;@}cd>3�% �@ @0"@tef>Ϭ\L@\�@3 @m4ZQ2}ObX,(* n#m ɕ,c|WO?-rܛj>rKCQO Lre-}(jY>*O(BI-gr~Hz� r @H?~J$$ .x �bA€@JY20?'XL2ˀߋfL%B,\jeK_MbrGF_m;n~@| @C @p$$ @K`2ˁ4 <+4pf-{<Meb "1 Yy*Ss|x'/m}ut ^�`4 n;z^uN/"W(T?Np~{R ~ W' PmbߟA*X?e-_6!28` =o_s1oNuq[a/4Xt'݈3#ԡ bc!<>f& lPb >% `C Tvl/1Aa"$ CPJCՁ;7B#`!hZA}�cЊ; 4xeeƤ�E0Q0Ad4`q( k!2 ́a9B"rjgƨgݤkg#`;x6� "H" D7BJ1[3P萢eQI[ˉ6"q!OH&`*<-D@i�ۑ/QiH~C'Y*#&CZmT^=l6�HdY1'3\%ȊT &lNipE-SbdOkh- ~$ba r"G3&0 2_< !l(/ğ*:?[a,AI@F"j>W2 Y pk`M3ŌR } )kaY0ϐͅHAFAZDgW"R"Ƃ EiV#hB9 &Gq'Јr6mn0\fMjP5#'償FJ4e i M8\ y A ցDԉ <MP*2 8r& ڱ'N0 ] 6+D#BxMy/�HQ (Hs֛ RAė\%ȎD|&�e1: ^K,:,Q,CYrm[Fxl�B<p& �ٰ=rAk\�. GDz'CdG@NF (MnCděhH~W -c r#k̐�?B^LÈBmt\+C4 `@A )PMf n}+>pe"BS$)lU\TˊB8*@ a@ @DՆڅxCx[iMAA6  @0ooj![C8"c Z J~$! p qm LHT Cr \`Q րpw?vI C[<_ r'7,bd2IK qHBPjLD%H#CZ(O} Ibq>Eg¨A6+4a` 0YUW,a9$Cá&KiNU(%a9D66!�QY/LI97aZ4Xn�XsHpNĢ49b>8$@Qt iPVL)'HuzAuOJqZD!Xr!BR!(wRV!BCa0kN(O@ -~bpJB1P'PqElBY 6+.zD-~ -%1 SP p A l(Q;eŸ!RA6+RD4c-SHq<N` HVنB<.@+W"Z%\BoUKPڐ!d `\1lį VKA-v$؝0j'}MK8#‰.'xD�ځ/,4,8Bj\$xgĵ&7C.`#hjPB]$(!eĨMmŞ1"?uQ8} 7iA5@QĹѧC_ J>5`kcc.p5j` }<L=Z'7D.x!czD= lOPc @5*p8C kb$RjNA6z } (6\*!o!!N&0AtALrP|tj!!HJx8C WAO 0dڅCB5*|8@23 5'jg+�PW 3 8@m U j@@mW H&@Ȃn0D$a ij ] B(CQSVF7- 11'96K̦q2 B<C6H̓>mlci�N  x7#`d!hƞ DA(kJp1F4ˤYtDq-S\ KցDI$�Byb,L0ٱ*Lr& a>TEˈb3@"p!G$6\I@Lm(KB A5XFg p�EAcěTMPm@"fDo ʌX#jPBf~B&6\JA3bBډ"1E4'= �"؜&\P%'otJ?ݧ=zS/25Hωj&tO�n ]QcB1 D �#�&d$6KQ3Zhx&0ӪQx̓3G\z;4ځFi e5GR\@=lmvi1CяGoz:u- =EFG_FJ=CK#W GISԏGUhT=p�flmXvkS !Zh\%z�Mx ,>jQTGH̓9G_Fz;.5 ΃e:c1%;GNOz:3`Fy&6z;>5@Cۑ{ Jy-c% #hjlq hG6E j&$؛A7!Z$7�La :!! J<M1 #A�Уn9"lj.$PRj o\vk%ډr&|+" 4f܁ǐV$(5F7bwC]{K7"D LHدvljAKڱދsEH>!b &KR ,ߖ .$X߱8 Yv�h vLiDC Hq<J*WlDLkpDWCKنMH$hudvky] eZ<GS\Lz:3hQJGbF͍H7z;\5GLBrzoCЍLen��nH} &4} H7(z>hlacR V.\lk/LBՙT -8 "Q@l  UE`<5I+�1 AC)THD]5kv{Zu72k BIl޳3/*(KHAٓt2d 337C+̶7C,LיylĽ#_Ge\P?" l)Zs*~IК>'%�M !M.,C<1S!mK5M $̈́ӑ,H&ג4ؙjgM Mz4VuR& ɧ %I?a:sĀN& %<kBlIfO@RC%<^iMI&'`HIlhKRzDa.BZzz)ܞ(jIVO\�uLMq+'\My?8P@'&&̐hN<&=r#R'8LJrl XRGd'T` +.� \c=+lIfON&Ԗɬ #X%p M!)H&Iԑ=YĞ-BljOOlKrlZ{vؓ %9?B*H&k^O6KbcmI )ZV&d&$$Ւ"pc>C̟ؒ蜑lgePM"2t4pO5$vOiϠIfeM=}$|lKQ0M y&s*LF7Vc>´%6dlIC,(iF{!5$%ٞHՈx(U){|')$J"W %%I iI,O&ė'䎉0O%f/Cizc% h0Id D|΄5#bNX%):F.2N%y'%,Ԕ0pL!(YZO pJaH%�|L1) 30e˃177Oh%)t2IeqFg_Ę8 Kbbɞ K q7S2h]9 zGlJ%*BaiZazAc%*I%PKW"Jı&HL[&Ga){zR %)ɔ%hKVy'PʑLZ,N&R\-LL5!.IVMB^ɫ ~K2od KfI k%)5.\M/bM$L#OxLO$%`,B\<З'�H/fL,a ,Z $%+/bN0IlNJ^^B nGbdϒ%&ɝa&pC7C-2? NfːD&g"K%84 Fܯp%)őKU(^2P%8bai؅P,KT% K='L:&r7 FJ܎ ILRJrD%y928gR�!$NP K5S4A4$',G!4rGD #̩ 946`25B@ 2\ҕa4t-*Mhͨ&PEV`MhM SgRk^.yN&V"Ԯ 1t jBZ|CzqH%).6Ռ,'v߄%:BxA0pJXE%I>?0KWߤepM!'pF䯧'HGԑ:_\GLlIjN՝JcMՙВ ia> VEgXeyt]>sM }FvGlK~ O/H.lW>QLtJZlm,3 & %  HDͦE}IijF Kr8'jZ\;b#jK@'nZ`; գ8,Oס3D(' L;i34՘e^7YEKapgz jr83D&d#xBlؒ<t6dMi:RB'N&؉|}r馄C<4YPM13Y~#;K` ݄%y<Rx!/'O%$+` 5$2yYړ lF pG$~Op%bI |~r[2 <\$2~Kp }v8؍I@IbLXK;'LK='&X%%(LA'LL"C'LJVvb#r~T#@C4]N\%&%':�IdGa0 (J_H]x-ܟXK9%:DvODzOHK?'N& %xL"C'N%/.^-ܞ?K9$k]=~PzOO(% dd)}avE#rl 넸#Z%'I #{d0 -a?>@E lJb{\rȟdĘ Kr`ZzBlH%*I vJ| |K|$Ƅ%`�ez|Dg712JԙVgCR̚^^fțM,Hq$"i"[BV ShLnHfgBi18='΋&  XZKriZ\ #}DjY:?%ĂfHD n2HG;%i#]A%ٚb^�׈f&JV4vNJ&Vx#/Hڒ%IG月k ^V6l<o�/(7D? p$DK;$ #`f8H!0  K`JÌKx_K*Hߜdža zG++reRNEKBil %-%+ELC/A`*o0j,J B`i(Wαbф%Y1dB^7r/i&cLa JUd P;st1ٙ+ozixc22Wi|c2H`ؙ4S|sKY`1)YԢvLIty7y/�YQz6,`\^KIpGHJboF0$#q{a/^-^KY2/&L HQߐ#ܙJKpdzMFb3}2S ݱ3b peY)%,Ic[2!/eLk4k&f% 'n45NnTśpq0IpL9@"93Ī vJg΄%8bta-gË rJSKY'b 3};PvM ;t 3X q$[NN(0KV' zK9%LZFԳv+iL.4^MH [�/x%PqqBt! <%JKQ S!hpFB&)]�E #ۓHYrT$MY+Iʒp&<fKR:$M. ˓ |HN`, 33Υ2ʣ16Nha6M)25͙ #Uy #i %97 'Nt6D牾_&BF %1:pa4#p5d'DLMqNb U:E4!7�k gXcthjD_yJu)BYNH&V Ѝp}9B8'N2]BPVFD45z.ApX%c2c,xR] b% oB=i;ct2θr:'^O& ג&ĐIؓ %Ԥ!zqH%iL.tӁл4?pMiR(!6�.^M!>Rv|e4 #}4@FԒp^Վ0Br:n E~">ːrT _BVJwhqrw]豁6`Y0`\ po4.&"|-MX+E&֋ !iBlj-p`\ hKLX^^ @S X xʛgRx5akBi9,k~0R%+y!4''Κe:(q %j8Rz6'搪'-6I_-4$nO #yE%i42İgjHd+''LJryF+LHD^Ky„BڹXN/`Sjq}PV/aNc.Bݧv tO6Yjg5Ĭ~[xѦg~ GHWMw}_p[ONZ~db_ah>? lQL}iΟִfg.;Q~Kt3)7yunܸyB/uoD{8gsK+oF8rkn5ֳ3=e/}ݧy)] 4҂gi|ҷ?|D⬵'>bxikm|9{J7z]_xJ$4J^?z?T2<o8ox?._ofM?,kYxnf&\}_7q%i}b_-4m0W{П]}/e0'ė~4r޴{U몹h];NjLFR&9YkmsRwG^pfeU9O3ړmm@riq Q޶ْ?:ޢ_뼞<#{XRrQiaa~ ]=wI1b:/ DԷ7SKCN;?;~#x̿wz玙{8#zn7;g0'b3vcGm._9KMM>uMn <s1zBf&F#O_!9{2!wv٧>xH`ޚ^ !vr6 ")rrmn;i] %yN^:Oﵵ퇺bf 1|cgijAO>?ݾ}s[^Wշ^rϫ1y=k9wym9u&.R%+{#J"_NRVw)sN~):[>' uU9p|9O\G?'3)~wjy8= ]Ko ETrOTEEݺI\[gϽ:\tSOIj3T}T2侟A^>lex{|VGO͆o\T<~|yz<k;{UJ1J몽+z)T?WeJ&|}ޗ:W>޾(73-wo6nӄxIYl9}~|W/M׹K|:]"uU+p!w/;࿴y4{_%.^)/fz_KmV}] ֝/İq@Rc)hrLKKa'}SG};+v:g7<ᠻ7t]m#r~iN&55^#Q;xܶR4t[tOnU幉,ǵny}Noq6x#srڛ_Eo~cm:Y;'*$}4kW;7_u DD8{yH 甩߽?ok}dpiQ\7'^?/*5{)ZMH-R|Q)rr?EE特k4[,N`+K,|kLm7<؋w ]W_Z?T:g 9o߽|o"JD*jXF.Ã?.Mͅy}Wr~xܞe#|O5Jt:~iuassi{ڻg7s|5}_uZvNkzn&V%ծWau}>VMbn?KO|R{<*ܿk6Y5(mhm̅5Km-J9tw/9.Q7G7_qx4<D<^XM篹( y N.M^C}.pky;vV/<#"x<?i2m{A;޳ݴw=]ANUj_g!"-OqgԢ%y:~]O)*cSXOǣr nlv^Q __y/G.;|yTˋk򩖋LzViIE)C�7 }{"qe1q,DE_?&_'ܥҶ_nTЩMza "EE')^ntӸP5"R%\_StH|Fo xyE}FQv}ΒelQ$"``[rҕ.aܮQT+<^Pyԕ,r"p{<ƩHS;)_F(HT*GT.NCyAFcn"*uQҾE72Q||Q}ҫ>buKZsċmS.)Ex%yURn)cϲ)'Ug:-|ZrŦEXdLl+wJ6Fw:O)I# "KOyA]EYWf&Gj>_1_фAE1^wJߵO}w"Qؑ|cT"%H=k16"Ku~tϕXJ=]laV-8we|0ynX%I((?"C}EQEQEpR`*#^ZU)ntJԱTYۿ_AB4L_pQ>x'BԿ1W~ w=?_.iE,߁`I0}$fyU`BZA˄3ɌSrpc$!wiڎ EK:T&qH9i2.Z.!9EFQt03,?\DZ?`eYOWG5yX㳌˙=[Cz qb�x xF1{k`{ݼlkŗs ܇]n[g@>I XzY@JM `r!ܻP|KH;HLûp{ɇsh[v-T? Af?J"/|zr;G~f?IR<&B_\1>m愒a]rw[\R|$r#GTdh{z)a͝>ҏs\}seeF^{1"úv!WJKNp~w'iVb>79CX&šZFGCvr>1j$wk$ooPè|o ꎡa~^GP@è|mL-Cvڑ}R&Y&8ծkSoAf zG<Nu8.-Cj*?:piKO8<N GP"k\$xhs P<N(qjZƠaVeօ̧Go},8՚ Gم#ݷ`e*Tpw&eEK(;Yl9awohNޙ~蕅ۖ,r'D^;&;Eq.PxKKB-9tV΄tw!H s.;/'Kқޥ;^(#y^b7 o<?@PQHvč%ڼJG8z'A7”0v,IwhGJ |(6l?w w7!-E7dZз)L<@FNp:GC�7/ahjUIX^HrDwGJ*JzGA/Qg``~J Zdqpϓ'AAHtyZ}Ro5ZM&,C-\ T@8U/66 xӸաӹC4 聕*d/`D<RšPN0F4[ 'yQ䘯2ZDo"@EwD\kkmWzj4'9M}TkYyZR?6,A7BcQZG;>s&ͣ5YθVajw5X}�H\ߝǣQ0%# 8H:w^* }X~OA?g9w>V;<!aj#GUݚ_Umt8Gʩlד)n۠(t)b+`30?ZxۀJ2@,΅ (ysQ0-ei:b%+AgV}rCԑerv]uc0GN$">%'$qD; :a60 ?0qA SkQK9 gqXqI S yk;$^r'=HH&Ujkf,~-_xSܡS~+btz.b#ҏVZrU[ǬP$Ë21[1+ţlw7蘦@fQOo%/2P8L Tu~e}nd*]IѕYK 3U ZŐc8 7 99GLP+ZG"7D{~fLɠfDk(-?GLPm!֥�"G!5X\xD8.d+Q:F+31ȏu2W9 (m8:!v!kN\wtzF*r-GHCuHX,@PoS'YX2@0?[ҿKt ܢ[{ i tKP=7B9$? 8Þ!):t9vH~ ΄>�Ή! {Qj9ɪFSdybysHone 0M~Us'W8E(tY�mʆRnҲócsz#UnՏg|$>KLB]8GF6D;:܎&c3jg(tTU3:2Utñl-Z):+wZL!W�׮^A.,G5D S]@$Җ˂U{nTdZiJ%0.[ˇ�E\eJ'~Zf\V. -ZØ^|[L(u) 0,~6eŨf'9ÈK.6CchkDŽfYg2 ́TS#y}9 zqtZW(Jf\(^RL:*UZrT| )HJCSxΡG\\[\XOJA#OM슬ro͆f2%C=Қe–.Թ{#ߍtNRw:WZuO_g^6;֝idVtp<qrPiJ?,Ki Jť19:l-6t=a%6BD]!^]UCEbswIGCCS۰N7'a9V5eݐNEHi[%(c||7kw_ta:@ڰʒ\sc$NXbW5׿?Tꁉwa:7~2Q6k%TRs|]1$[>gX?zZgE)SD5 Ow)u=owBv"wPC`jGAX@Jsor%7ػ/G25N"ڦSE1S)< {�kRQ4^"uD;i\פ t۲^l-a+*>!n0[ s̄`d =?ۙN4zA#~Ts|45e8҆ȝ͓rw5Jn؍nxkݺ,. cFc34Ϸp,YahW$hK3G:b8DMf 3-? Z MZc/X;\GY$Ჽ5`,�2$h6r X�LNIm%֫d@ gSa#΢>a;�y"m�yėrLih༌Nq(87 Q߈l!XIfDlB%j@WlEINMƺ,&K}*Ԑ;&xLDoԱ#ިkgE6lwZ,$y\"=lv-b2uqu-?͑D0�a30uT>T.Tolz$EIJXLM7܊ɉ3JJqA܇aFj99*Ug߆R/٣ݒʂ=s4ӛO8Ѳ T8Z[*tc!tC: h}}#6rwEuH?hgn7m&K}4iqܮKYrO ܞj3v CƱe1ex8Bmw#7xG]W*YGUv%كH6=&OY :әCc6[Q09=DxXuwڝ'_b<Q'@>Dh:$y%fR�B7A'GvAۏb'^A}(6DXѪ\w?Lf,4^l~OE. HlvnzNp|Fzz(? X+onP9<rT"y0ߴwL>rdCab$GeZ'Y.ɪhf2 1aGr ,@n.KÙ�XDmٲ6!֜f_wIC1l 9:nbN \hxvґ:Xܔ=U~cG ' tzEs!vZc L\ۙ208 fNٝbC ׀f:WX2teK6CfǡX4QTڨ4>e%T~R`VN֪N Ct $3Yl~ A2qkU08FGKKNj>nPMޑ"0sQl9/*,!u0F|)[_X-E@Xi䲪6, &^$.4~>-4tFL2M,D֊tGed,9 k[ %;W0 6چHW买݆ƨE-Jcۇ7D{h2T~'*qARTSTuu_7'1vfJňL މլ}طk1{7$ KPRb c ZՎJޮ>LqOV:$R+BY<z8/X("^ iŕVA[P۾nԎWOjI֦f5}]fLfT;z"m^y -/�7:^=i|z?*,Fnm1BH-Ф�_GTCEZ: sל-OPË:@Nc6!5%5?el}6tZmEu!} *p NvNݛ2d=qΆ<f_<YPcr|#lwmY9jkK5{Y},}l4c+b= ><ǥxazj/ 0oDRR ^WzZVd>娓4hD{]lm?GZ=Ţu<f::g̐ȏa f:.>mJ1k#qCOI\sDGգdOHt/� CuXRkOKDxs"#xa?Qc4; :N f*YpZ) j9<GZu삪ǓR >4ZC[=\ 14 u*^NkԤ׆~3uLyhsT kͲtֆג+bz3ȇz^<gY�rhʏU&yԢ=y$T4WϽ^z)xU{T@X_rV !k' 0!F5/ZN"=C'JPjOX# 4M-2EjjQ+-| 7S 5=i fشU=K#@RU=h,ud Yy\dVC@R?0lKm}Q!|uч6Zꄻܬ<>@Ie-| 4= ,RGBZoLU|Scd$1`ajI^)duTrmrBJz;dw1 fPGʠA6L3'cTw Y'{jW2ؼ:53sG/J/`z i. 尛lo;6RM (l[[�uNV 6-Ȅ[ Yk*{(=-/װ We80qGQ*e;456b,)X6V>M}ܲH1T[c3Z96%W"=} R`(CLAb^�h{6hؠ:Z>\Zjif6&zq,ĸ<O-&b35ZtkeZ'sAY}^wowh)=#Gt]/5VNͭ+n9=#ctwV>34lK f6M ֬iFDu)N8e#(x%X)�'1tTZzL$[-Q:bG[(qq Pnκfw @܍!`Q"zhW #ʸ ,CVGswRu6p! COm >xlmm 0k6ԊBt!#ir[Zba0COr̂QW-N>7$`>Zd^XBulD7[p|j#6A CcdG r2豜d/pu8j0l5X#6ITbl2܂9.o߾O{+"`7͐lYpqA Vܱk Cd2l,[nb,gGEum L{}g'S"vB:هz.鍁a5Cu,�͐?ѳd/bȠpѓ$vBvvmIgzE,8cdN#qoԩq6qcGNJuT3;#mi*9}ޒ/r.غZf紜~j[?Щ゚?U6"jwΞ_hߚHWQcrR)%RR͠jQk֒@5AY5@i.0|4c U<5=ozZY)_ëZ 8#`Ww=:Xyq=JEaF-6Q4-"ܜJr|G(u_ ZqgbK'j'*VumN*-7*xt՟oTLMl䪯=mVkRPr#Ʌ7=ݚYcZ3(<}󘱕M16Sj9Tk҅t=Qy! n#?Y`S)<Ȑ{5rّYV, N@-U-S3!Ve&B:,?(ݜfK;޽_KĠVu^)xJ7=pR[KUO`0'SJhxn%yjtXNw=; Q~ p$'A7O%?xVy<(zu Na"Y,Efa V{SVqv7ž@8W)*5E=kު)d^F+)9tE* WŤa>0W^3S.z:q|2)Y:uIȪ{&H5#\BoFiF(xuL?!B`{ ʲK1ɜyokǶ9Y=fe-m.e$T n?FVX7bь@}ezd铌&NhmҘ0.ip*DM9U5h3W6xe R}KlcTOyyu(U5l{}(%kb =Z0A5#gq3[nd1m-Nbl{%cv;Xʰ\h=RGƉU`PVǭ0!E^W/"g}bNapsvJ^ׂa(gmy Y谎BPYR:a:xѬiΔG?a&XMfeR$h|βU갷- u Y2b9vMU˥xyvhR0ip8$USej@+)[/ς/AFVwb._?Ix%ۚ[ ӃO.mIzꊗ2UmS <VNkSh"c/;ڬ, oOlF@k1e d)rdcjWT.-SxWwG>f6ͧGM\ԹWÚwrÖK.) sXo^Pe7΅tZpϧ 5!Ghp^! /6ڎ^'W6c Qjc]N xˏ A8nۻʼ1~sҦ9kJ40O'-.T{KF)a('Y*͵ՖŽN!߯VvC^O{۟KXZ1Q,gx-D{�86όY  JTo7Vof.~x DכR# Κj'Fk02B<:-JXF%ǩ~{~{܌b.`VÃK%ZY7, Qiɦ w(7Bdr<-XþNd_\)e5& }t1KMR UUhD6s۟\ǩT n+m|P[9}#06fL&+/WrSFnvyUicPk'w^0I)pqkA6GjviX4VkI#j÷iKa-mcolߜߘg|ݾbk>Ln }n^JQ_-0%z0y>�#|}-ϚψJ=} (ч^<jK;;OLҦ@cT=TWF: Ly)<ALjKb p*S)R;DRgŽK%KBϘiΤ 0Ʒbh#z#o{ e@vBo 1!njqCj6@ٕSm{v| MF4 M7uĞ=yN}[w?wퟰة)Y^oS6ߔ85=;*؛ڪq:Xy eT IvO&KbKe6;Κ^/gNX<̱)Q=vۆcҟ!eC)SqT`65o5\CApZfRZia?8�E3qf%d@f-TcNacNǛc5cVQ0O~_~lZjosT^M`pLzԌeѝ ){WGU6R1Q5rm{PT NR-<H-F1M{=2ZoF&5FǍXd!vc錢yѬͭ2SalNg;[4VՒ؝쥙2Vh}c{9iU8nVݍ\M=zsU98)BFZdbU1pV\~_}Eݪ&A^Of))RmIph[?>r9:}9O ܜzО>Uֲfn`ߴ٘L%:l pmlV}0'+RY,9Ѧ1ϥ=T)S𲥺E[g.V/{ʱql策`ٜ> 2 WM.ufŞ R5?YxyYp-dj>x4-b1)SR;6 KMu89W5\R Ïp iŃ~VSyMd++ﵘ㞱(d؋L~ ]kłx,3T!q987nIxWGj%akejCPiq pW{l ӴUj\!ڝJveEh%|g+}׉o |!gWVpc s??rlލ1 ^6j826tr!˺opqy5r9}Xݿrp1S_N9g:suwevKc~6*W 9xhR^x])t5l;S+?!/.?(n$ ¨0ѷ\0+KDH]~ߠ -תˍ]mƻa-" qO%؅h s㽿ҋSҝ*MKanMN MFeTƩEΝd$]ԩˬ <Y͠Dl(íWK:hTS4VdгҷgU̡ m !k wO,JR]C+cvNaFbN_fٷZySڠATAiҲy|Y+&]낵{\^y:z-#u}ίol^ycUiחF*FoG#Euu z~rUy߀@e4l>O_:hL£5Y"?w/0cu>8k޿aCCCTkݐ֠iFO0f%>-؟|Qk=Ipm<xveT.Ȍ߷:oWކ'2lgJ'4 =YSq6!3+FY.�}~&q Dk<>}``KS f΃ FDz퟉:oWJ YxV9ͳRw쾅tY1s(=~Wߞ>Wg*n^&s4R0 O'{LFZYkޞ߮E^8`k) T غIgܸ9q?wc?+ C [1O/OG3ft&d߀|b= -g S$ךЬO+メɄa3j/O*$ߏFQ}Y0sjKF{}ߪw<},mFEf%[՞/<i. #= h]yKݨKPu$ѝIΣ{S(uefӔQ NV+rlZ o=;ï({hpg oeÅk_~x~|o'OF†KG+;#[Ey,keU`_<{lf<-FnEC~O1MG]ϞQPR>z̭dow~xhQ`6_pk8{ 9v`dR>_d^LiV  Y=wJ[ -fRY}lO dk\|VD<&7WCll6>]]m[e0mZmXl{"rTm6S}YhڅLAp>Ŵna �Ck>^�G cϢ @=Cg^}̫\F ԨU䏯ky*c#mfQBw!OFxXCeJ|gva֪ULkf65KL6߇_m#+ϦLh0l`ϋ:]<p՜9͜Tcwgܮ cDxQ͋>AM,uV0&oO&)G1ji᫃(WmJlzsZhSeE1O?9SZ``22ђ o+PPeRkQ")yreE/%3j]Z,B0synrjyF4<Ur*eJ'=KzS&z.6Z2Xg}8ǫ&zhy9@#(4ec1u#\nr7;뮑6 Ѳ}tZ90iӚVԁPbZɭB\*! }ax< OQ\]d V)_M8)mk;ìޘE]b1usY_m̩z7ýD68N y+ٮXWJY[ǰ;B<<Js[se/2NZw1128yuAܩٌ~| Z%k1$iYooiQ-Qɬ*%I墏m:fƻs\-dlWC¬r< ~y̰LhLd=]Sqt0LE-Z Q1q: P^XFbIWe$W JکjZ6s^8ܑvEN8PlQE:ռƩQJx [b5#ն|8wf[R~-<Y#&Q4>ql7Ub_}Uڎ*rrw;*tK|6u<'ZbT=gmDɵ'hWwWeP{-x |y}sL}T2ԅe;/40d|{mE\fPlwyS{w(3(tn 067y8V'RY-D4^]ҪYa9~ky}\$({L~?1<(sSl?c|Uq[]9߲EFMmtv0qom:ER\%]cY혃Ծ@I0 bKu3cdv47+v-/Fr̝cNK 67敌[)l V,.WG#5#-܌W|wFؐI:%G>|BALmV r.EV;ٚ%AXA.Qm\vEgd7Pijv&s^LҊ6|Tf_+y~TבT62Ƴ n=FEҨ2J/?Jwhyc<j-hŝ N.{t![)&QN RL0Nq}R3"be@xz"LZziU>8fiQX2(gtcP/b*.Hwa俾:"T`VQq>S5K43-9ߜ:}w xRZLx tWUMu3FC#-wjl"T\eVeo' >}uTQ;0P :MgZ|~٢S<qJU2dYvxYe%>"H h=VIꓓi8uEX2setfcH!@À8ː8c" ۙ"X@�HTC&1xQ�DpTJFFT`0Q s '3#AU�ps:n Ъ0=zGU#w|>Z<ӣM[7u䔕= mhe$q\:5cI!/ &_x^ːdpX:\H<ֱ9T~KCX)B>lšsxwq }ظ+9M෕SY! ]ǵ=Ϸ]:�&h5RedBȅJƋcU9q_PNh>,C⾐.QSM7L :V.8.*ȍDc8ˇ!9 03KQM Q#*afq1k0?>h6i,}cOFdq7]+$6 PhZU n�'d|q~ay?B0u/n+$V|Id{(DC\p#"&n:o(8ȶ#:zF~9IVWʐC=Gb>on@6tٸ2qlGׅ#XG2HScHU$=_H_nW?Wm=Qmq;X&Ch}sr_}m6ID8Ÿi-r %`%q1v:0Ƌ $fd=혏ɌBM:1vvĘc~)>/Df3 a/+x_]$KM)N1M20 }X{;:&6q{/7rƚt~~cg w+ruϑC̶'[,g[_Tjhd+W liLt?!x.tgBk3U?TVb U0::;zP*e% deo0˩E\6|ѪOQ.ǎm7ɨsˏ>@g֖g4C- PC20+%^%yIO+p*Sql*SFJ/ <~!ǠE6 CDɻyyc>oRU_,-đ!(U]]�y&CU QbJɂU9AnmRpXT"n#S #M UCn 3.bB]a3Y}@Rãa]{ (FDơsJ^:=6[; 5@F@e4R[�j؏|U_<J͌ށ5Q1 ,X2X)H_vXbu_-WdM@ZXi0vR'UJ1` zz +D3e]%e r4E- Ո+2r7!yhy&׵H2 Bp'Іh`gS܍N{5!րpM7r{ҝa P³'d(V1B?f99ݫ[4QgѦeB9$ȀD21cĕiFaoZn?Wifre2a UOE],÷�l7Jٲ ĈoBn*Mt+ݐW#[2M816~=i -;En"D6d,PtpH6O$~rЌD6soG+BeeaC,u\HVX f vCDp=S(#B4g9&V.|Ro/E38QLE#ep"3G|1dTTXT$)SkG-K<t둩[RO5s3s2Â`g�YX5$tΟ(fyDZi0g,$9) $j#{\ Pedʇ] [& ~EQ1J[CY!uMnhrπV :gť5u)֕4SGMѶ -P P 2 �1b}!_Ez-a8ifs3ܸ\{& i +R:&?xw6) XvJΛY|-Z�eB˫݇"n?hy(=",FX[^ đgVf́)h%vXp zxQ¯XX Bw/`[\R)&�ho} 82f#SyDbPT?e)\,GfZZ3>{da<_Cz!leLy @TT[?PzV+ *9*Sc4H{ѧX[:T :,VI�Wc q'>5Ťg9r N94nhOG}ZDrRGEmI"qIeEʅ 'RVnRNgқ TS?G7x)Rn$HhnrVnfX,-DfslfZ{$qF@8{7 BI/Mω{27J6.Zi؉KZ9~νcV �Pdg ־45HQ(1,d(n.Npqq:!#.L@,Ç TGb]4u# a{Arz\Gqdռ\YxȸRsd& l;r#yPbV8�cpXN|s#7fO<}xgKXΆv\grč+5O~C,3]cۭgcsG PZo_JX;S|4L2JnSCXރ31njJdo#fZϩ) 0"n>(Gl] <Vt#>#ήƨѡFƴ˫k8]꤇~͚)yǭ4R`r)Eezn[e 3NbeGJP[u�gMBT|.8CM{%gx͵J:ʋ50g$|d\W<+\xM g C ڱ3 M\n><!\anŠ^I$iǮ{HܓHA?Ɣ5L`}/gv.Ɔ (fu%5Av:QhE ̒5G̩X>gC+l!h+(k> A_3i?kP5T Qks%1.ZҳV,>u qச~=0o1`H05!C� eRqPA:-808o<S�j,, <BsDrԴ9Յ8ςBg,=^eZ6EظVIgf.H &,*,>AhlGv'qVEHy*fX~Ϡf֌ Io8=]#4}P|eT[8 5|ac.yެY>t.O=Unw; n]NTZNwZeV -V'㑦ePɥ/v;. >_wO,, W %ԦW9Vތ0m ˁrpTbpbmmG?0/)V׊&h2͆[rB\+05 ;?.,q = I"qKGfXY"s:Y1BA)Pj=&qc!i_ ļ] l gP̦hd}0u)G-Ft"P= S\s9ȃY/Cs!P𬋥x �I>z0Ql9" ͎MHDJ|33#S6HE!Z "RAt(,Rt#^a~VǕɁiK{B0z|lM #xC+/o@rgo3�hM.?838ҳq yPoSJ2v9fօ"an;X.=7ZK996!vۓŜG+ 8UBn!1�B`γlnyBY9q3ݛi7F"n1.4 1ȋbka0!oo�sn:&9,%V 59“.n0gY`Xǁ@tp[y@v,gOp-qyZ1L[lĊ# |*P^ ާqBr RC=˟UuVn` h0~p.$,`ĕm^x@X~0:X\ % 袱 Y RkF.:m{p4C m .4(& 2:}i('*Bk{x3�ߓ'FX^Ε䌲H~@n b)ݴMUQeYyolU׺ а!ErG.r Ta7m9Xv%"D1˛TTW<\"aGJ&sI /)ohꛏ8SٵnԺi,ht5Sz3k?Fnv*-$�X9@,c[%+[NsPn ;#i<T[: fq&\*NpNbC�4Xtm~w4wqKs({gz9bkE=9fkA ƕ*ZSb =r0A OT73>0m^*(ŁNTy6q4L8"`,HEIB{ßX*D<tv�anӶD<]2<eEݟN#eu5EQj24m[1?tGU*TdU Ayo{yabh/ B%/7\=v,_p37Aԣb :Z՝ "i+>sP`>w6Cp:WoYpg�%LO-l tk Z_�cTKhFOmh+ΐ0=Zb:!ZXcnp ^bJ3 GfЕZog<I%.ـBDʦw �!5*$T`NRe1WPi�^&n?}!x<X !v$*2JFUVXTM`^fSE~wkj=cLhOi,lf.u|qJ(=7m/BLc*Xb޻?/|'n?H:32eeI(D~}*-ؐ�8 蛏+GhTR#²f v)\i$ٌ�Q7WUC, >F+3җe3g!v`~v,X*~KR@]swQl?O{&}YD% Y U)z.fmkEu*<S? Ű\@ sf XZjyY,g\k#J탽?\C,ˆ Ӵax`]4$.-WC6nm m@Sdm(Z`|<<YrTz8LK_@ {d }>lKX?e ɍŸWSi>]z*ɸ ~rĠ^J73k vm!J  X-ALd3,@~٫ЩX[<`xjrq%y w] ˋJoᲺ%,x{_GD0XS$U*i+Dʗ:nEwd< ס\[4ChjSgn{)] Z`l࿳]4YoÅj-Us e{jᵍ/wf O,,ڰV-GZoCyEMrbc38IZv5ݰ\b}{AlO8vkgIwp;=Wu}3D\:îsqopϻe œZa&,;Xm4DT~<j6V8W~ ۂFt*b;P ׈DE͏qg^ 5IRGd8<̡v X߯&چ?ǦF|QpY,鹚Gy ?^Y5tB4q: y)bn#|@SՄ_)g,:YXY(ANWQh|g�n3yJ`=~ W{,gR?cuL_~V/1?ݐn?8:EY8B[S<n<~rΠo*}6\9hr' fV&oKsnrk-Dh튭H/?8f\z<?ppl賤Y(fk M+%րA>p,u$={ǐM2n"& dBJUzM ^GP~y[Duq`L#&JUǺ FWoftX%ُf@٥ c,=6`0VZ-&ehѓxiXٴ`Ş:s3+,>~SUHt1dz6Ae?y0tGi34B-ysy^B,rֆUq;G7^V+,lm*z&u$ Sĥ>SV?NM14Ǫ3Mşp-Be&zK눖4s}lIff&rW4IL(Tʋ:XUF@�+z J-= )r.c\i,," 3+s*,/Z KY-̔ ,=!(ǨИ;*&,ݱBÄ>Hhq-k;5h8 �ʗEނ(oGXW* p|%{Н(TSoG ~0>ѵ aS="(#ZHG&J0J^a&b|F®2Ū mzA�Yrn"%E}.+1Y8ES)�nydGUsad1܋h#6a{%097ϖ)tW q4΋Qc)9[̋IB{ +o|ш)?7jYd<L7Dlm`*?Vmcp &k@|Bʏg/E)kpք`ݝ?.K)O9g+dXt.3p�YpJVh8?�V ["03{΀kyl|Ft%l }Bϯ$7J3 PQ1ly͒8Q'%>6ƺ6-<\c3 Ɍd |\lyrMNdŒE6$mTSrx mRJg8¨޴93S{ ̌Lء�g}g$6n#71:mLY q"+ˣZJ9cz y8bgxV bKLv,1 o0 DE}L=(p0Ǿr+aP�Vc<><uѣyrҨ/ f{lsF;p.+%1amXzo3|6EuЏt)Qfs%p1 !ߺ3Elˋq['Jn}6 \ҙxRZ:mZ[h4,i1holib6/[F]{::]=n-><INt,]5#& �]SH%߷0QM�?+Ś`xU[y�!mm6ŰD #u2T~ɯ6ݚXYfu@zb>,<$W7XY(?po+P+ %T,P_9;Rhik"ziŅ:{V�n*,o3ΎRB-?,3'V�0ypvT[9yˍɸm<PYFz0V+o" %s!-T@Njv[QeAhlФ`V"yMmG'hr" hy!gIh r�k+zjAq~mOS`#ʮf`zD3?V|xBcy n2 n"$%ֿ ZJ𓋋3RYUmG+ Q*H콏 oQK8w "wPʋ5,DQk;5*M3tD( ! vDZ'=6fT[[e$1VB'qOkBF?W|Ń$QMUϳTyx\JfrGS12h[�f w갲Q,yo88qQ 'HT{x2*t|䰪b Ts�ϗE wjE- <Lg_QM7 y(oh0e:qX (g_jD}fp͙ ϝd}@|WG݀n>i*-UC[ {I&z-M֯; @ѱf*; AzQǣnA^v*S5`+դp- ^ \q/eaDže›+AcDi,W6@J0'l9@b޾qGkEd/S -L vpŏ[yPX@^Tł8t`pʁq IaTw ɔ\p PzŽfJ^)5$D~x9�ns5~8Qgh+Ux>uB9ivqp*fpFez�2ʦe-ɦO}tEj5⃼-cDֱc/^ė탻qnq|QϠ艳qRt.YPOĴ"t{=k|}%E.gfw2Yߦϱݔn]=l ~mH#k'[q̷}<X|Q_ d`,:ZY5`5|P!ס}j-I[ 7&ZҹKLI.-&8)vlej?ύ�%(^lZ(ck$}w2mҷYʋgctlQSiiK}gFSO,=GV1, r{a6}3eu]eR=Yr]nr g/t# :KM eR[+۞J7 yьiEwʚ9CR(9tp^V~/wɿѴBdygz./7GTB'G[ >"2Oj䷣)�g*:&El+yt.^7z�7i7.W,M>LYg qR;tl<t.OJmIl@ 7.ԕκEY'&VQ)FaU7==Ю3{0LC ɂP+*nwa#�5#jufy+]ry6V)8uަ8 Nߗ*,lK7$.lʋ^LEpYo4)#U1ūc0+OsUsiQ15t`/ڔԬ1nw({AX|Vj5@pKHbE;^ >C2qE[V](VJn}/tSt]0\'0>R]ozɚ7�a v.&i&x E EK}|n?WMSѺK$ZX"h"I^b *HcG,#&:S՝BW?\g"f=ɥBOϲ�:y8[;�q[&VmϲoԢp{!�'v1VZ.!ð yAkdӱ:v8cO{@΂5"3L2+5(GDž!l}#ϟܮ y^cbM ~O~ێaOEu#Lq}X/}75s02,rϨ\oEocx}&c qB-{;g²~oo7\}dY QbÇ#=碥QnG<@5[z/Rpyh꒚gBN&6WM Y{�>!̬9tŭ&~VN'cBO 4LHuz0:Y ,bOhdBKc s77zĪ w8EGFEI=FRyuajaQlo?+1Zc31#Yyk_ ynzzVjCo?tsubv>k[5"EUWh�ȯqel[,2.Ms?#>@јO3\4Sqnۡp(IJ{W!]Q,KaJҐ}N',Y$ו;Fv1qS~0DZȩÛ N+ PVzz|D쫏+w>l=a^=z7"*=iD_^Gq{^DTYm~Mfؕ*,i*3>ۘc16l]dB5 m>,nFH{opBv}5QjhF+1WY+ñqHF 2v%VQݵ'bDuuR+o.hH4Z#VUwiU&/Mu9UHj?䕽eZ} DnQz HrgVf9ե X2ԏMiL7MqG$z7y_)\\Ses H@!Jv.#夝q9!k!KP54uT{=4<of$<kbTX^\{ z*~[wFseH:B ړ '!W|K{YD·7r8j1[Pjab-=-4f1 +vrH8B4җɫZK٣kM>VO"suŮc$o[˳qBDz.fVY;8thܿoq= J2Ɩ"U%NXg$gh y 69Ϗ5uV hs3D{RAh`HfD,&(,qg3ԻܥsإEˌ&eX,H=), 7=~Qfں Y#p�{$lZ% h5UsT# *rqɩJ'0$�ْ h2xmE@|B�ܜ)K!љ;ƨ3Wyһ2(*'w:AT|˓̀n7]Y9+.H͒g-;0 TjHf@!|L&&7TC}3`s2ei M1`g)Qg;\Ӊ{ f'o50 Ӳ9/o=ks!8ad5E ]`.I�ӄ`?׌@,]ށ2P)N"'EJ@/Z3iM*6A%5"'0u)sJu ЏQ0I[ Sиӷ<pv"޶UOk Ƙ1j`zդnǀ :5+(y-BeȌѺCʰleY7p91Fc,=B܇I+{*3�Ԉ+ QMQ<C<ZF�}Dz?;IҢk¾OjOE`E .ʰR j<3�7Ok-leG5nãMJ7ɟ/gI\{gfu$S|5`7۷VO\]<"f`Yȸ{R<.axhˬ H {Q$nlwFE/{zO]"$� orLãXy<D.n%JMAhϨYQq[X\3PgX2}0%txT| Fɵ^=5-9#,KG|겢oB/X>-P1>x˿3*-VO "]ƤcG/j:v1/ F! h^# Dɖ]K>W<+n&dvg m<M>۽OW[b돨hxYrgm %*vU2J“,�h#q{),cQ"Oy$"}3b54}31PÜ@ cĞ[Gæm5 λ-ռ2V_Q,zGWa9&8elg<R)Ic }+O:Mo1n>j5n"!l}/J_r~k=~~XkNKhxƽ�n@X\~m]ӫ rTp?| y#VY&0H1E7ƞ!a($ ȴ:7̹]6svQ 4ì=菛PAFP~xO+=X`6)<ffX`M Yu'; bN~<q%{¸KrUG>)/#:CӉGCbXTFf1Lg:EL50- e P�Գ q;.3.7' hnN.9.%؁"Ŝ 0drC"rl^zqzç<c!p-v-ə@,lclCVE,ڰn?}gVڦ5PZag}1Оێ6&UW6;<ZvJ|[oZ5alfݎ8N.QX%')2]W2IrG~NWҢx_a7p[數K4pGD2hV |OF+L1'xsWĬ-$+6+AY'Dd lSM/ok tY_ߒq3$/V7y&9Ս\_L,d?Po/],3?c# X>\OziHYg[_:mBewTy�4JP멣B8z25z!ɅGsj3%=,߷jⳀIJq dSaT$.@!T+οc aE1k*{Ъa!2~~]CJxhZ9̱{Ty>-k,Jm$?e gjbRh_lmmr<_+`)af/'s?io`;͹ Vx'hom{<<&%*'{។ K"DŽ_,|Ӹ. k[g@#}}uڇ�x7-îsqb;2CpXb ЖלG0t.qj">O`|Qk85@ }uMO)aKɷb>ZK>~�x\{*lDlG9/`'FDK^m7}ugEGYR:$q#HVxڣ)w#+̎TfhT+)R X,n@V"K5>3�'B1c)*r(غ=y�f`?;}w++�Q=aH&Mai=zRoj-FJՐ(󁝁>^NzOyZލ^9�'bZ땃=Em='fĎ<b5*7L.J|@zI,rBUCNHsۛ.\n>X%lY!h0(&&#P8DyaYG5)OrL7 qakA&l[w؝!�u !ʁX3N.qG4%KO;%J|d1_uDaFBۖuz?]s*8,3PPPdz\-iHl$xHT{Mk= R2"[9ԿcS{Hw j+5G?%N4 C]J7B,Ѓ|W^o ]XFKwǶ oKwBIDvIdtJ` 3p iaM>Yzc+.zTY͖]Ax!^v)gf{p+Pرġt<X<U6b:LRrx S%τC\s>N+>sʉFd?X t /0i"mYq8$?RѐydE5sصiw*_m2'7dDQ,᱙=Be5,N4B_\׃]�zTY>\T4|m t""{s@!:TY>į,2cJelzrj�ER y,vBlOGv=CeÈ؟E*zb|3iR2/0%I~\�ڶ|j6f%�YMMUG)8X.xZpNT[#sm ՅG9g}x4@r} # #n( h|VQ{:wy |bbsNPX3m#9Kn}0& *-Gc^gx smR<r̭Γ>-,]4!Bo*-[= g8YrL()e;m&6@v̐ĸsߐmvl cijh6{+.SeK?Hܝ:+11_۱pg馛›$ p_ p U.0qP~t%?yA8XCgCebQkHxsŒG2~1t2[/<8d$݀^tTdk9&<n$VF-!dF+΋�}32\UEI)D6i|lL'򴡺҆b XuY:Y@ntA!#%$?TM)_9KjV3 (٩@;lݬT~+}yѰ B=znH2>RS8;Ѫdy/44˱`E ʳI/6@G ]zX:h{UXrJu9кY1f2Mkׅ#tB8hoϗyÂH&^Jh�.JY<r3(B'n4r@6J;3sqݱhgJCd:$+,MC:uy) 6-Wr02aF;A!ߩ<QQqv yRUɎN+hO;fs/S VӀySn·^Ck<[ t-}ǭx8ї|q{co-vj-Ϥ} ١Z?.m@7{�6CW$ǰ~=H& pV{_䊻7lrᮔA`y Q(]q$lb[9:9tVt4sB ԬMc`*x*Fd<UkRowfk3q" 2>g ~D921=,<â T ^wХm9=W5-s寿d*C 6 kX 9g0 ?* 󅈈2?sZ-smoWnsgeFy1D %<#7'!�5d@+MԬ>=M!~%*ts~d[Ś6<*,̈k{{ؾ/g(8AhX(к7ksK7DoE׆C�7-Δo*MЂE2Nj& N_pKT|c|.C9cccEbvS�lpSuaX suҭmv@O>sn*0g&CC+fn]̍.L.ׄK/M~PantQgGs aܝ.a5ԽUlNU;*q.bK㴌7~dģ͡ zrR#>_ؕu![,= w{ądֱ1%ŋ`.0 zᐸa:Xʷh{'2*p=;:PŨE>m(Ոa=`&rߖ!y(B+:FbVx20,lQֲ^,T(;\] Hh};Ky|%: VvDZ�祎ih3ZĞ;Err Vso�xRc~<1_#Z ,<'&J@`? ɷe(v+k&@\y{KF!R9Uy4gr=fg( QfR?X� !|Ao; V;STN.zѺX.tys�T22/ LzpNo3�9Qg4iOZXS/.AGK&4n"'=ű eGٳ#BӺ.^&ynpSLygqځ@Sg6)pްgMJL! dՋF"G2ǡMX~+#un?nL=% \P0M^13RfeQL`M0*YQ  A5!߀B$�d*<SKvkoR9<ϖBJg>8PMĆc5ՇeΤKI:@ E7C|k$5: 0e ݧ܀o=:! f_]!z(e¨uK¥BYl ik;ݓ^6kP5G89讅}&;Sqc'pVVv.+`MAB9љ>>)ǍxS$P?JYD˝]#5XvPGt~Ҕ*c~]uMٷmЉ?<wиkI9ѩECQJ6KJʥ-ڍD,=o_BO߬BbD\PX6AR݇&=X^F,>ZE] C HcT2eG@9vKTrQ xwk񬨳̻Fyb8.5)#{sBF0Z5bűc>Y?ё6Nhg*]ѝ;/2ky#C|C<cV.10íkسoUC#:++a A%E DB@Tw+-@ =4\sZ2MD˲H%\>+41-v)Q<1� =:Ub>Jţ'jnߟ�Kh27j|V{`p/p.]з8]|xѬEfK(H|e4 ~Ґ//ki@5=8Ӌ)N>2Sc`+HH Fa>}V>J> z-h; >Xp-CSIhhXDYZR:vLtk/=Y7/}Rͅ vC^� G[me1TYJ[|=vұ1F>-3\JpÚTLcKPb tlO+g~4Rn"QO9D3�ݩATY?Gs q=rungW'^|Q#_mýaX9:Pnb2"Ewz + h[]{h]|sO`'Dş(D}b 2"8bBܟtDX|6<j& >( ͥxs7RvBGɽް]h廃L\ocx:g$ڄ*Hr!Uamt,mJ. *agY)wfkI-�la ,Ӭbf>8LAXXՁt/'CjK4hN_lN�{?Υ\ i5_q2qpeGxK Z6~D�-a`|%5[gIHgWa2sH3sg `hy(\AT~AXh~ i;]@qyi~B *ҍ}׸-F\(靴p# Qkb M YB�{8%~v RJۄR!b L' FB{>j\ jL߾F3ug; ~X,ִtZ}iFl;Hw0DL�^,Ա2yϖrO=jFH6ߺ /n_١v,{V`M`DB#(0T6bx䊸F;"[ rHMCyNܚ‰Aa�@5e@gkHQ,>Œݘb/H.AOgC֙My6[\tO~(NZ̖hA=wB޹ j>(IX/=﷚M-iqtk1VQLIU_*"c]7!a6SjTeaUBmBn.m:y֖XY(k㞗[RV<9+ݚ"qSnr4n#|v-_"O=|6X:i־'ItLa%~sJ|'9 |XajW9 x+7JD3IO\G[ H?j>ѵ0ю,d[vIp7: q`WwQU;lZ0x94f޸]�YCX{>n L[ VvC+ '|?VLs&d֝i�[PsbћAҭ/occd.j>tNNY5s#׹Np6p#s<͋Øu ßakv{/!IqX6囨g j=h3s)py?| 41UExB;Xx<IM?5_؂)%ITE~qBY+ Wl@<6 ᚨ럄?稜dlʋxpa:0x=ZOݧ:V`TY=W|ήm0e۝i4>ʷ:r<%,#7m0cXMG,!!p#6T]DWf]sde({:tu~qW3f2UJN͏ŋso�oQU 婘:.K?`2(JSV):bV e5pQ9p(K67A业(< c~{?Hd<AfAO�N=A"Ub~'ϵdLܪrdx)@"{Nn9t~/q τ-d@~z2,労 s¢ G | 3w`~sJh{j>-=F?r e%WWzgѿ;!/3 �f`H7oTZCn|ub/ntQg","2>Xߘ3x>+N(,�yJ<m[�=jcmiwK5mS7յʼn_K}r+Jgdx JAVSd`޹g>M':70f#zCd:$ؑ(+$^|HmqCEr嶥v%s%>Ѯl%=Ut3�#c<Y6ҢuHrdMJ9Āx |=b.[(S/^)B@ŭ :>8kG%UF1A "} m-6grCRv&5+%I$d@5X %D+I#LTd tȀHi1oqԖ4;`A#L2|u\7ۃ(% dat k\!+->\ � X ; ICm8<:V8y_(SS58b"tIo�bQߖ6Q#T)%5&3s"!RT[^ }Gڣi- K24/a3_ ͸Em3d:PC}G|{iq~� Q*Qr1/5,Si6XY(S O[@C Pӭ`hv&-"Ŝ8-4k F+둪c1\0x+amjOnUwcɏo֬-GX@9ZHq^P [x8-l<PxY9?�Lki9T`b<y@5lIZ?rlUo;P l+*ii ܡ]sn!�kqb`#pDrF&6EDb"NnS8^(8TKt!jsgMBo=O-H6exBkHSթ +N,6q7<E`QfтNGvSGFm{$0W۫ʷd-UPͻ6,jls!JbMd^p-]m>⥄j xiQf/[/׿l̏M_}>=~l4g&-q c!3K^Y9KCTSp5NXZ$|To쬂p󹵭& ~-ȡE0;@ˬ=,ۼ+:nja)) pګJl�=YU9PV Oj 諯[4VgU|"}SմՑ |44| b#܍`\,㺺Č؋V` ,eUsNJ$w8 l;~*<GH0P([<hq?9Qfqg#B<[3�rM\ή34af0 B(~|FxD MvsdFX{vܘɬrma \(KSFF(QP!tL4r4J- `jԨk 73SŃ�hcq2]IpgVQr‰q7rޗ1b!F , P߀iQiٛ<sj3�۩,,1yŴ<S,-W+E_+1Owfq?,934<hFviSxb/k. *OD(g˒Ѭ-d6ߟĦ^S[4e�oYGBЯ%g}F7닎 5%G\YNZ{{ZF㫞x/жI?A{ybǁӱa XEavۆg%zh((F[ 4D a\9XyM.6y9np#LX{�!fSMGm)�sD3q\MZ΢3&s:@ e$ܟ׹8P=n҂lZv4*0cRULY*c[ayX>{oE[~'8пQBCWx r{ٝ(g葚1nA6dK FUk ,X'PSտJC�i!BOSY3ӌ[ ,7 q?EGƅ>5fW Jg$t3[n�PV>v1iMV֫f> Ex*y| c9¿K4tM@< QsVMQ3H5 mFsxi 6P)OtVTm\'<{eթWMC4>]@rḺDJ,<BxSBZ`lTS  .|u!hk, c@, F:a4 _)dSpLg6H'+Q~k5f@lȬͺ<tRˬ׽O9 4EA~?;Bif{ee#LLf'rDX`F4-:�pqc;3BPI*=Go i# -ˁEdŏ,M:?gwVg]>a~D(n;_BDj9.P-);�>8<e`x53�&P֩Āa`={Bo9Xtb?Fv_vqr'G㝝Yhzu_F-CL:RYd-N2^f{i14j}wr(cQd |AѷomW0)+*'ß`֒�4-𕢎CM|xo 1_wzDXCqҾIY]??&WmeEN]XYZYJ,K-6xdÿ~N+ n)9E4lfxI6?e#aiҠH^"P & L1ΉUQG{dAD^gA.;iU@�葅.h.\ջs?ݪqs1�qoo魻qzy{?Ȅ8p|l}}4wf r JIŹ 9ոܥ Ԧ^ ۫jRS`h<7Wc\ r1˄ cP%خ3%؎b)"lf-(c031`mZA<3lʰ;'pE3Ʋ 򦾻{TJY+&F.В%7v%B~qvU<\K+p<-ԙ񱌳)%¯pX guϝp�gG\C LcK 3]|6#,I;zu6vbx:2lfgbY7lqQ)OFs8@t17e&5"3K~, 4q\3b6Il JF` NG.X{0#UK d8]NY`T l*OQr7#xUYW�7U~jWh8VG6Čoo}h<%39c^{]XqozkqpS8t#diG?I*^u8Ƚ1juT:r0qFO0Rҋcb56�B6@3 ӠԙزY.wBnb<+UcJv+geLv_d0,FbT'˪cILS'ACG¾L3;?9Gd=XQ3At|3HlyQ"tH$jfHbLIܜZ~.J[ SC7bp9z3gsW57Պv桏#(bOX\f2r9 & K5&)W =Iʃ2C<d9tRDv.ɱl^)wbd)cb^qTL,KNdN#gHIƒyG(.ޑNX鿝G)%`/;`h2"q1]g3?$g]}J %ri .|4490e> ? SPr 'G;3;96jɘHI6Y+u<u3 ܙz]Hv BMC]:xLD7 +oH}20m ^z. ^qnDؒl]eAxXK$Y>;T ~Gl*]qq*+88wO'wb`1giFTtZ>3dV`Cb$0"ǒ>,I0dwX*SsP H3>v-ٙ�dP7}ꄍU.Ћ! p�R\z}Q;RD8Wc9C^I"JG;y(m-8$cbju#_Qv{$$h5;C+3NTi!i3=ιb}@<iJ;.xXl&cԂswt@ L1"HaR3:ITu<נ͊%v=H83}W)GE3a&c`,ΌW!/"*HҤڭ#+,p'h6ˠUP701 &},S9=]CvK,<gzDJF:fG"n=%OTilVcFcCم$u"j:b]6j_>+%dpD1tq_"G?21~b9 [1k6?=J tg3W{_dה7ГI:8,GYcEd2=r}6Mx-"B3\_Pz@WՏh$hZ9dp OjI�oˀ f͚Zq>W.S/d&4ΐt7s9j|" 'CN"Q.w vP䏼%f.Mteҫ} 7\ϭ+{},BR@[,~ ? (0tz#蜞:bc=p QIJ-KLJRì7  P,$F30åNlK˳>͇[ ]-Ӂ>#̡E^Rkm^c8<V98mGU +%T'ނ?\<Nsd#3Lxu{ʨsZo-o V|T-dֵ=YǧW$!n Z9!d揩nd89bBAjn^[Re(>xb5z| h5vdv_Yc.y;~Z Ɉ4ܶb.䚻fmX'yI/GiE%1 K1 X|.dfܜ㣻/%7| ڴq`YZ f# (ANM (N:9 42Oaolw8{mzt#*b`ap“,Lbd^CsVx󸓱q '` W pj1maLp2T'XRĶ[b${_eOe-~UɎ֤}i v'1D7ep06F]oZrr ؘP()DЖ&(}*NopIv&< DfFzqˎ�$3a g9Huoǜy8qv>E u]BCx"H2 =bQ2!whZXd�b@d^Uc$H=8A\KVvG;GsFͣ6.r<:AUpcWb#VYDV�ޯWS ɰ/虪x،F|-ѡ#iK̆}zFzqYÈ1=G7;0j^ƃSNMaeޟ"1?#Yi >͒QK"aHUl!/yblKkvIf ;$T|t mBNGW;;9s1- 8o@{%НNTG/٣Ae4s*Ci6W*b3e=GGE#rH4].lك3t2_qhVHt$R{B/ffޠ$ L(�f1l_59fX;LHs=yK97"\e=i Hy7i׈j~c4DzHzT4Gd?3zS7a=̣JXjP~lƃy]q=zk ؞՝;J~lU+#ٷ$30,sٞڃ7CXh#S4:F^d6{Q?<bu$sa/2B=06N7UXc )3Iu#uI1u\T�v'fty3PeM iDzE)h ]<.gMlf\ftMm$&Ջ=亭ȶ7F?o[Nzln%hr9"{"}WZJ<!+j=LZG8eߛ3N!KMɵd Wg3,o[.4_T\*a;akⓀ�j>vj$6%0dg=ayU$hQ5)Md]qVMRJIRe/vggg /%|M`Ԭrmخ( (2\?\&R;$B }5^i _HπI2%6ag63m�ԝ2.9@UCR I<Z,b=BdJNt*r3N6?&b+y}ZviP]hb. ܉@SJs+pI7R,t�>>Q5N%9̵hFF~Y'qO ' %>bZ U. ~֛#[XCG @<Bc˾8>glxAb.8.DUW ]K%(^uTP1;T.vħӝR^@$^vLFN>9*K z(U=ӝ?Ѓk"u"3Dpy6XޱʪƮTU 3T%JC8 3q Pe;eG>­K5ȹ&RX{hn8"-kZ{;ՌmCţ27}I!hMcb{t4!iT}G4X /$ L cY<`)%Qܑ2,)=cuH8*lܸmLΓH O)ⵒZbc1 FRgHe=Pn3UJ}SZ6rxE3P͓aʈΝ˝G,hd{&P贠<FB#IN(g͏4/H 5F!OF9(:FQ^rˌFyM Xihx៷L 8>"Xθ艍14^$}t?Qkpd41w\ e<8&/ OV QfYXP{ XL`ګҟQ_#)냃W^}/Ebq)gB"8>៪;F`Ȱ!)WGGFE({lϱ8joDd_[z%Tn}>!;!eǞ쑵jz>9^Zwz;>8Hu^6{uiJ Ǔ=־cmp-ӃGyQG!`#uyA`B1 a{t0zOf (VbHI%$)WKLnc8T>s8XRNcr<2ӿh5 q@nL}?K>2\п,wk3/:*qq<bf$\&Tb 7 %. alz,S?P@fmT%HLW X6I.ٝ!la [[RPjQ-=-ܷ?1a޵;@Ӿ2;.Kǡ5 X}CthmP EGcˣ8bL9N"9J]wz&}QqCܧ\wD4Ɛh#NOP"C~/ك4e k:# <\[ʇ  �i io=zazNdr8߼O\LC5r24̱c3F݊gUЎCIc;XВMwx{_X4Vm_BCSrl9]g& O`h5# { ,c0֬`cP軪k;&FM1vL-O{Wf;BZw/#d .γHlE<G '4v끑w&`O � A`�D݀#O �?۰#19R/y3ʫ g2q_P`<gu_<ZG*`z5Bc&翨6*IjX#g#o8v`FX89o- +Z<$TDnƃӟtf=>0gG&,3y1hGS̓'!y:o&uBISqLr 1V4RQ45R$KlzMP#qmCXx~TG9O/ ?VN#C_+{sDžZe䎖``-JfH]y4X3<#2xp!0)|A6ffs@綀μ8)c" X(9̬^;IYQs,GAb?Qpg)n$O]Dofu CO#LGPx"L'Z Gb|ZPPSt)ys ::|=ifwaY,)9UJ>YfC)]bBG<itkV){wNE2ʖ+ *H3R �IeDŸ_XC8{D&G0eM87> >Cߍ 6P7/EH|C?Bk4 |bϗ"꾴Qוh!=?@C|ys'q9>EA hgYr̮LO@2it䓖u/NBzsEMC:W%/Tt:dj4:^sIҤRnyM&@a{6G~{emBVwLg4}Bau:*-.+iGIn+r{vHơsLLXTs1bx:m6RJT@ao[su$)qN…&|H!`E GQn? E&No~:b~tCK% >~[it1=h/ 8GC4D U8O5A+MQl@cSC$:b}jtMh%iǪ~qܪ[$y!zmJFX3 Cԁ&T"=+]|}%;(ܳ;M8zb5u=@Nj7BD<hn5Θ4zp8_OAA^i dz3&YTm�-GOV,?A A.#e4Mgt$!>Rbvx>hz~uHeB} g֡N }Eϟ0SV {Ati8k魊[g:<҈S&cO>+RJP.?ͅQ g -sG󀃦(\zم[j|q:2]Rz9 &-g'gBrS]=󔴊КUt(AcAר!5�'Ԡ/vy]=)t;Ԁppk;'0;lNP|QZ'\j(^s|g}P[F y*=R4Di41ϚEH@�wڈoe+L,RÖ&d֏MO@-=` $xuшI³ K)~IB<(ܑHgF^gtNN3 <Ps zGH^'I}٘IѦZarَogbƔOfsv/'ShwrP]#;ТZ Üu'/>qcޜOo [Uu3\Jig5Bo`S~0;`/@9JΗ-vɬ!:ݓ5dŋ%6Z2w5^פ'nAnk Fm71ÖXm v8֡lE^F 7Md�͜fG8hѻflH#'tVdmY:Xr壆 ֬ Y)6E0pP7!2^Nfڶ#E@) 5LQ3ݘk3B`hip^PM|*2K8峣^z|ڷ ɼv9n8E^Ę,0a9g;o\%c�h�vF3-y^b&ғyp'tk؎jr'f6! yz`Xn6dc,AP/1 ,ݻfHV rq ,15xiÖ t틶/v̀'ˠ4^囔~?ak4˞z} n.#o+6Zޗ1{o|v^4_7W[L} i_sZ~Km/8>'}c֬=b3tk@*3ҷyxN5Bf{,N\MYʒ\l^M}5w3_qY;ήLO=策-qM{?6EkwŶ)em'&H]g&I3dL#d)o-O~}:>ս_*m_9J[)˝N=xof V`T-1K>TaWڗr?4RRn^vxۛ,t/ stDafaxkɍX̞YigGg<Ue'k9n5s^=[钘Ee?+ j׵b{>S59nMN[ݸ';g@>C"v;zTUq/v_#~V\˘%n\޿E33ZV72 `ׄTi>x9ih~פ;#R)v?LR3=D Tl:~ޖX}ڔJҒ}y1䌱eO kg&q \#1dՆqae76989M`7>sL.af >i!W`1j'Ѕ@MJ tsR #49Ϧ|>\6F?J2?@CO1^s@r x99<F Ǎ�xkBg(a07,Q7\ψ0FHo?SxU r"_Nuoc-13%o>vN՞lZsi m@nQ^Gdg>t:g}Бyߤsԍ;@  {Ɔ$P=YAv?bR y+-QƬ#7B؞r�o%gF8*7(:Jҡ-/\kA7u8`6!hI*=5rs^$|Ҙl,)֗oo JeghvOmcty뺣I^CcvC^Jr6- 5G69 ք;Blq!89fs &';8x794X2ƊӶ-D&O ?ɋ `l(,O;nkH.LCiۊZ5dOnK6ƃm }8jМ#dnc'l1r ע. 6ƻMw(?.[100U :fSL7 �#G0Y6^7,ݲ~"-bvQA9DȡK&bUlP=^bp X%L6n^Q 1FÓw 0b\g1CZr8WhQ $4lZLWrѢ_03-SYbJMBۧ(L+i;`!uG `BihVf3n)^Ꮣ~%l(".g+fW7+咒ŗ"kw)y),%=~wٍU<J{qrH4 %]֨e:i_'V-'k 7uҳKizog[)e o/MWpYKr(oofԞϩV=)-KoM M$b6`s' /3oV&?ByYz|?NC^jfW|9Xi4=o9JOJ-:*]g%IKD˯]c3__<19}6/|kw;`k+AQ]{n{=^JLbuiUJ`ߵq{e{6}E7/[`gv?0.Ai?+â G|/p7Ч~h}[/$JH|?Es,^^_ &!FSEhT9Bx/f.1eTpvsA/|͔{'OXN`&ġn+j%R«kVK8lO]T$R|J HeVP])WlХfG "wA{V$iRLv[ hB<OHyVFw`L7>μbõJZ?cf?cOG}!ٺ%̺1V"w?8\{f/gO2gK+ O[8C{ )CӤu {P'|*1GkpdT�0<&0*0޿N$uŇЊ^4'5GjQB{lvу[ kbQjQ񃭢$&G +*iLJӠh[wS0+C<iޘĴeIWB+9Vb|o#' vЬ `{oG!I63'&B렆Urҝ!c7!0uឺd1Q;TAdV%@ 5A[**Ӷ |\t Vu8xK/e_aո\]~kDR(iO`*dMh#ֱM34gbAK�G/yeQ>BD@ڻSĵc.1B4cnxEqU0Ew.O:HhCcu.UG$-C狰 2h#UuܹFR0|G5ֱ^d &hCtn<gǠil.Rz7M oEjO ;iUKw+U{ÐcGz\RBx[kR(.2Z!Z9C;W.z=z] NW -ULqŇ+_@!Owa.HőLbAV[aӶnEMZ9fųvoƘp94U&$3n/oJ x\F.\ Unź&nDNfU,/r+# 4j;7Oɉc̼;.',%<F9ݫ[Ͻf:`jY\+&ҍg)Qx_{ Ǒyps?%ook4ğt]G5|3׉v}2"tc^<&6jQ[^UARǫ"TOrJ3Q.g/SY!N_\lWT~ v?Ldoc G\@Oj$i ˈݖ0axb, g/Lg }l~+g':889qvLͅAO3VZv͍Q ﴬoB]zA8W#U0�6̡4<gNx:L>ZA0 (w�K#W*w˨}ކ\### ní#3 `]g=ȍܰ<Y_@2t$Ө|.sL?Z V:xCM BÜC"FÛG8o\9 =Uu%1X %ryqډZ\)&s 3؂Y<a^ *~3 IG҄00-Ŧ;l*zG0Ul505lJa <;󏅜G]3yCύ=E'?[\Kp3 Y0 <uF0o9D]>PPMK΀c�hVcS<F'Հ|!gϐ̹Ԁd~rypA%jd攢@|XHK{pPOڷ@Q0+ ɻ!A@NF_�#|x @@KZIbEjR4|Qo q(—CA9(]q4m.+ ƉUm@4EF^SZ;.Ɂo:hۯ@aZP-Nl0hzVhH=0jIוfRrpXN栻P%BǙ-H$7}<-HZ! & -g9  }S,heiݺ&a{,ш 7!uϪߐQ(-R+I"1F zG*8t(5X?hw4K?`j8 l }&,"^ cK;\јrqщ! x\`*f70w�L5E!n@r,`>-u񏞬K\!" v"IrC`)\#dxAn_!bèXj ;}L?R;WvZKr⦋Ed(RP?c]iC0D"B1zZ|B4œj)d,6I U`І 2�5]q 1EM!u [qPIbZu�هb5E&\ 'Y0c.$Ų,^,g<BKi#E~-IτAZe&KĽ2IMذy@ve/ a\;<ܹ}%5:WB&hLxz+Jއx˝ eň60ެ.D @8&=t+#M·"i`G@}38Ӆ U }}"5[о�`"5 Xsh9,W<)9xS80tPo˾ C{�|Q}*Ca-@1ƠͅVhر"%|¸Ai⋃ 4M 4/qyCBcw? ,Iu#'%5^2ߣ(˾xwDf:A']Gӡ~@B; 3?Z a" xg'XXWpFA/ YLϚıl,CB@UiM6b1).u*DQTP4KQܲL<< -"YDG GND7pQFbVy R\U䯈% ,J@ӡ<k':ee<[cR1 OpJ!k"Qؘ#qG" ],ol@TMǟO`pfp"sv$@Fq唍(u^8 F g,G֍4`+[@C+n@D+*%ț "Ed@}pKVD%LR5Ǿ a\8۞в/D[?w eBWB SȢ:Ԡ_ͨhF3iD*x|/_osn0kN@-OZa֪=17HEH`S%DƱ ViK=$!鏀%u30}J iQ%k_䂵< }]q3$wDS֖;Jz !0]8q>CYr7ht$4PȿWP-@kum޳ ÜT;orSEmI'PMa#3 4_C/ٿ0Ԉ?lH*ТUwFr,{P^"X<XDu<7ѽw B/)81 U{ʁ'{AuVvX40#( ։-ׇ[E_Ϩf|K / b9VC*|[Uˌ  -֕s(@U^S=/|A <pňDdj=keG߂cw"L"V/KÀJ|s솯JB=*<GYڪ(f"j<iKN_ޫ#H+f'@-^O_ǡ0_X2R;$bnYύ5eM-H;ٟTϻ4]57SAxE p*w`G md{)?i#uڊ\M7~=9T{8.¿Ǯ /9`QH#8Y*=n"uE9[5p 7G%xF%q9)c萺Fk�~p"ȃH~WF"q[=`I?X#On1!`*eh)TpG ?Q?*5ةoDDK jZv0 W/`0.HǵPLcϗzJC;S `.nNk2ǚ/XLU Z{Se%"Xz`Lq,\.V[ M=Me`vuqb;O`L$AlIlѶ6hZXf E#@@jPmTHd$q&h^B߱YHbrt*!2Bΐlњ^K98YeID;SQ09Nps;8ΔGӉx1~ɑ/5ۃQG#-C1FIbbR:'" YC!9ZDqG9dG %.A8C7£@ʾ1Id`48K tAO>1ýс.d#sFHG M1iP*BZxAԺ/cSr}͵s8vP/dMdx`J%;`pߙ` q.оs1G2څ@eBljǜf#;VEUu7B\ѵd&X/n"M-MلYn�xx \(J|A%e mzN@.b8@d&@/h }Eore@c +7n*J;/ %-Z!n*}jDlU^@1~gyMacs% 2}ATtK=BfZ# BV"p;<A7*4C遤R由ǜψ e_k؉R"p"(Lr$e<z,7 {C(X~W3I;狁4Zcܵ�oʁe.025bpJfsO>fXo1iOkc>FXAk`ߊ d#PRlgh&%5at:yu:Llp2N %sk _6 ;:֥3]i0<{%іT!'͞#QhRp ތTiL 093A 'ʅ) ",` դl@фuh-;""yG3=fWNC<4v@?hI20<%$МA j9a<c~9W P&R:{�3HieوwkVVjض8w`ևOMz� np3՟mDrh#@de/b5iZJ;,..y@25䑳4JZ Xt7'>BVU~۽|Do <_5r 5`邱A#qPxkL./eTu:aqq\rZ˺ .4ȩH :K tR _ +O<Kf%3P7KCiQؑ$d#D*�ib9OV@|"1,Ŋ0 ux.4KkIhX +*"TIZd~1W ,[.}U1j�ڻ E8"#,<,; WRh;x1*JV:but!-�P.-Q9֡5?v aCxU3[ TfϿ\\šU9pjD2|"100�j5ALAq[#Fcϝ5{V,r6lg C] 816NںvٻMWl 3$d(p+tmS$5R5R3\- 콛m٫%6ћ͚2J[8NWL;-  6�[Gݼ1k5|Nn vÈ@lɛ]{n⮶ ++~Wڼ@VʪT+d6Fe&@vfZU}bTSI_\``MSX_)�VSmk쫊vم6ҺoSi~߁Z&]үo w T>eOpv0;UeokjV/琮 @vvk{jlTYSS(\Zî ܼ `&w -\[x1p)B?�%o KtՅi[X1Y'r~>ⲡj ]Mu8MTucso _UŵhHobpFڶ1 >)BP[Z"[k <S.$U@x RVl{-j9t6noO*eSkq�0񱱄T4,SV=:߉&no[MMOm`kn-o}фEmL:jmPzbƲ5`W>֚(Sjnӿ@:Q[N%{ ʫ "WP~g x)lF/-+2,!�&O"sif{H&[f?e%߀PQ啝q'h(' :۔ɩl-.R*$@j+ ͜['-_;k-+ZY/k;P&B.ʦ@ X?*A{ :z7V()|UXmu{ ZA۱bwۇaY&XnwBN %[ _wU[iccZ!>%+:t7V5I WT8D+5F]mNoQ]OZn <p *Ri[`oYiT|,MІMNҚ¼H�'J⯑NDI+:G*,p1hG~وUa$Ӥ(Ou:H;JD>و_T �VZ$>42+`vXCXgB,A4"?!hKF5 GׁY`,'*-=U=McEwZ]0x jX0F/оsV6$ 7Pᵀ^\'<ͲgVg"8|G+JS @y dY"V)^0SP"@_ioOSPjAZ-/ڳ,S%.k- gLؓ8|wR>TUؠ{:z"_ ?5J�+mn#LÈIHEx%쩪�+`J O;| ukk7<B2uch FHi2SC%F]XU;) Z!Bj%%CDAD'}BxDhYi b,HPUSAcj{Yk;{i;[2{gcr) ½ _ZzNJQWx[NKxcdau?Z5}פO NUe f7dʎݳ>-.Ugm&eqW^ohg_IyNL^_<m~g??W׋n;=?p'~{oQjBuvρq t!Yz}\75>gN?y[t~+؟?V~wCi=;W8Gb,[ALg ~Eߗk<e쟯u?U0t=6508=pćttɊ{ ْ<_0/NƷ@NbX 1-u7 'xt~Q~ >7]I%o[kMJ^\Umܽ ,eu~RLFX,~W?ZYy;{(uZy5Eh)rW3*\\^>ٛG`Mni�)sOeb-^q7i4_\B6U5n2:km1 !oe%f/||rpqqqq?٠�v�0�"�no�@tqa]fauѥe{%VޮZmholŧ-Kv5b7eZ-a_)jk[_E<ZT6ŷҚxS&ŹA;d֡\ڸ a0v‹ .-n],mk>oU׏ ajHZ/i10mO9_LZdخm/{Z{5@M]R-of56o*.?+l [ acugklϫp5 H,Ű-WbՔTLh] ʮUuFV4ZᚢTVKi6y0'V-È'd?OD [H mkC5ȷ-xJiR$ LN7E2!^af4+Fª)*JیS_%XLVŠAǪr[5m*<?HVAw" pJFM [iSP= =ؖݻvv-]=Er~Of}HgڧPRXqY;ۂjYw;eV76pU*h~zСz~\^,5<wNۗ60m\.-BB&7m]o lᰑ'<Cw(sSr [{Z}ʚ1D+ͼ8R5d(v|[TL#k7Z.u5nSMLD @O4,`{k+'YB4#3ν9l!�<IC&\*^ WW%X"OaeQXZ~ 0E^SGo9iQ홅*/lC +:!r \&'JƓLҴ![X͂0KVas`}6?)!`rEM ;[\$qiJ4*W6F@@R\?LJZmteq+NIg zĶΧ9zBO,k3mN_'=so6Yے{{ݎNugg_|܏{^swT%e?S=O.eϿyrAnO࣯.70 eyETsR_u~$Õ{o>[7}_?LW<l8W%R۹K]r_ˊ)ߣ5x&g|?/_C5j~opV߻N6ԟM{Ny=-t~=u-}/h?󢫚e56{}5YsGn9.qОfשn8W]寁Y]a<cd/x|߭s~z gu[E?7g O“lG<>췂rYutm X}qRxIuLkg0m*uEc1uc-oœ=AazpuqLi3P {tB8joUʣI�ntC=-ZuqJo&.ߥLܗ% ܷn5}teIt(C�l?LO׷RbIrA6./RMa?b2hm/ݮ %A*%8SKps]L>1O%BSБ,Ni*d$X7za\W͸^_1¿hw2\Ts;t쒩kMZ?!s++C(nN\q,1J%~ĸSX΅ Crn5Ť)Ž08ήd^,^SD|/ >{a$o?Ggoro#rco_;3Oӫl&Gszn_Nk9cftEoRRW6Vw,G1ר]/31>}8\l ^]*Wբc?r] ur.oo)vg]wQ}2_k?R-e4V_w w(czT~)p0E[Ma7ZdϊS¬sW37?qs+^]vg!91nx_e8;#g S_oZ~tݞBIz+S46~/9w7ew{)t?W_@v[ўO*:dT?ܿ]/o_G+r=w5LS{rY9NK_Jկ|;<>kxnFWJ_ݪ%O~ց98P쬣:7% R^<lR Q9 O$ݤɋŗ gC@ v%^K숶|S:* JĨu7BO9yL[W"~eos-,J^jUEx*|e@8GkkJa ж/'^')t~LRً'76d". ի 8sW\ p87W6* xI%PۂSi.xbT9}xW#SLlZZS;}&uބz|9sivu{]Ǯ্.]Oo++*Stvzz]SMfm'5rsL7Ots39ͺgxβro&M˲pV{7ήg9ZP+9NhٮwޚNi\ZoY5Mv59ow5潩k]|ZvmlپrjsњfYϲk֚fS~cP[ƙf}ɻIskMo?D5&It}L$E9gsW3v+yټ7|f/3a5H"!LE#I%CUI%- %NIv@M BbUhŠ7`֬Zť<o1<zCiߦPR38-5Q!y {=|!;%w}ׯlNb/mU׵ֿ,o:/vɵȉFZ{NηQQ7r=,_ vOO}D0{Gݫ}۾Q}>g=[NUouգz.7tCzGFjCkz?<ߴc{~oܾ[;ߥ;W>wqjSϼ[O}>Gz7ǺkqtO.w_sϭltn姒u}M_:q|oupqi;Í_8^ٮō#˵>ρ4.EbOr/+>^/?up+ZxO>hWd/®6?_x/'#*_~5wZp8G ] Càpxb1l$ZX%NFx!❿Qtk=/3wu=GU:.$oa~?~1dASW}LEjyw>Wn.KOG>O9,nSN]kmfw{ ??z=~# Oo`"^s}8 x:hCdVKX{;m=8# +;{ac}߁ozt1YWvZ<:_ |) ߑ9u!D$ߗonra>tO wtO YGGf[ն|N?Љc}?^ XF'?7‹"j#tQ;x/ЋD"_Eq?/~_ĕbO<nZ/Gk-}U6???ۿ2-moomӸ74OiZ+Oi;Oa as"y,?@qgvmY'xtU#{HXp2&$.n,)P?c?s |Z~D6=/k1F'ًą1}Osu ]j@7_Eɋė5_F"EDMm~q?T_Hĸss6嫜˚?NFd]Oq_j|,^7LOO|_Su1zbHbE|K/ىE"zq"rŋ},JX1h.<^J7'8J7D"q:xQ1yϢr1;\[W}m|g$f^GIso?=Ν7?Gt]zhi/#xO7_uϋ!aI7Ug//OSѿ+:7ճ-k+oB/ÃfYɃfM?-J׿۸^˺}$dZn>ٿw ϷEo^YCiwC+rm=ֆdnn: Snݿ{]Om!{?se ε{eiv~Lohb‡o{4? { !#6.[oBiRq,H8^:  }lM^�pgȝ.Ap�} 'payh&'7ojgD"'n_o~6oV'_x|oxs>kyG"H7/}BpjBAпl.ƒh/e_ϴ ,]d9I9 ߣw y~Gtr:Cy|t? Cb~8_ƋCŶPmC[H7oF#wк{O&Z;OWOxx_KOl/ D.:./>ym ,N]g 8Z>vjgp7u 4i k w1!ElWp Ygۉ?pdI/<iq?_]m[rtI-ͿOo[c[Vڋ~vo:6ӭq26CiH;)G6ֽ#dv?#H6UKj؇aۇ!r9Gp$D~?W#?5f1tGR:t3"lxR:-cۑcux#cG~ ^1{$S,yqh4cf><"?ϑG3$x`#$vt^Gŏ=dQH?@:&?##]#G$u2<Q&Gc7z}Q<)G3dr19#i{i GY``?`z7IegZ#v<|Nj7E65<NV6/FQ<_z?Oil^-h/Ү//}y8Ѷy辘:~/ۋ݌:6yz1H;(_.UOk BY\E=/8Y_0Tlk_u TBe3~v4qm8P6DHp9ˈ7;OQ Z{;OiaY@ӥ"Y51; ?g~ i8-`DqǹbȋDh&\mn GHz`@ xtGȹH:߅r:6/YE5<N>@<%-]@#?#9(f98V-QS@@]_#]?R H˕|S/[ ,֟Ud÷]~?o*:g){/߷:#hg׏Џ<GCpĉg/r"wz{?|?=w<W|8>W>7ۿh귝>Os?{_nck:iz\}w}qSվ$W;o-cw.v@lûҲ]0{., -qCt=C �x/] [_{O( C8@y< �KZPIqT�etۃ Ã-a) zl.hwohL~l69_{v?y{~__P6~v߱Ǒghա~}_p~/dwϯryƕG| Kx?wOUdM'7ǿ?+mW Hk~[z'۲츛oăse|-W1|{{ vQ=s8=]mp~7{# <e/;x]U{>A 8 n6~+38cZՇ|%` pp74/ xz I?:!ya?e76^vi/ oGc K~*G @_FU֖bP;{&L\T ~}pʻ!ȫ8<׽ 1T_7p<='<88vp?@ v?o@3m:+O-,/˰x7mIk-Ui;`9V痹βϔ2?K>'"t ?GQzHCwp9ѳ-4 w< k Jq~dK(?Joշj#B`u}Gkk50o]0$.Ai1,.b|?k#Aa|h_zU_qn)G}e>v++K/; AV`n[z;m6ϭdpcchBօi"Ȼ(27ˋ"py?6'/KD<ODD'qYCpóXw &`mp`AÃCi=5V\/ 6;(_v}e<rȃϵnyϯZrpct$YHduHq<|7G0v} ;U8.=" 3Q*\whÃy;n/[o!}xT`҃NAՃZl;= GAz(>a0}DSB.[o;o6D~G#F![˟U6$]Fte>F;/eG/g³0,/#oy'!*T},\mUb-+q<>\3jnSr&lM޼\5j.= !CnxI?H\1~'.ZIR]hLp1cpR&F�ӄ\ ̗1 wk m(DחTEL<=#cżƓ~ҐS޶:lUiiAv+Įk@j09sBN٘Jt4 x %;sfʁh(}*:iy<xUW,i:)˛MP'Vr?\o Vp=xXMP jDýo- P$;UT)I=MpPLЪάCig·q'e ljp̚2X2SI'% Am[snymB/v^%̵U0zb諺<ʓ¾ɇ�c*$R#2t͡>e=Z6j%"ץiOt*gOəZ̘C2`)Ĕ7Ls w%^F^R5s�Wת(,+ebdO ڽC.sY9)"jݠتt?DZ(5Ϝ.aC|I(8J#`.xM*@:$� p* & k'S 2Vc/`(H'Y0 Ņ,I]UGJ.h&_/>& @Z5luPzj p%`1%QڪSw1<)ȱ@fHy.(ȉVvuAiIDR5$]Bn-Ȁ@bF`5II`Up%dOYwNf1�8n# mKYʬNde"qXy}{3nrAVś?D<㙐J]x!¢4z>JSۊ Y噣Z;$m:tP %YWg˲"|Ӡ*>| "<דz^K%|m.688rʡ#Uّ3] UxwK`_K 6XfoE"+'#[L 5Ԥ+:;h90̛6}2n,$KYʆl* 6e @IxӆXimj3pyt~F2.p;5TG'0ڎ* 7bzw)gOȭx@^ rUZ7U8(g-hF(Gr˙A4VZJi՘` Srs'!.pKBYTA'̥�Fo.%4q11 JQgC'8%}L?8,5&&8Lc8-άh'#t%bf˟kRS6`)gC=e`;1g9;ZDjr75P5 pC&OA:Q -)bHU(CA_i*՟D!4S'w_H7VOM6;4Xtِ3h@[rzJFb"-K4(|15f)`)Ve  cZyZJ-"}d+RjQ5HY—{¿&}Z!ZÜQX-f(`@e!"-\۔ !!(!=0 IYLVFe5ٺ !Vtz;dmC:.ҡ8h(\\Ɯ`2ej�2ޗ#V:3@-:�Q$iv`c :S4M5͙n}W1.ɾQ8� Am}Prhps'{v&-/sJ6"i � 73)7xxz> Jbp�j($@ň}fffh,WFHSOU4 A%DA&]Qu<noֹ^ɻԂ hf$Ҍ)Ĩ0(,h69Y3L@+sqRoQOo-b85[Edٵ7p` 2us]Y <2da @ޅ);v6r 'RՏPfY-F :+㤶Zɳ3%`m~ ֠stJ9eYrx$D#Wfg^\,۟Zu#*B3&8$ Sk(SpŢ͸b` l} [u}S iXdV+雥iT^$HZjARa8C }TpiH T&tN)4C(\ ((SBje P}'ci8{N$F7Ąo/x9 \^rHrc#;jeVHq* +f'@>X4Ux C%H$|DW.zfϡJLl1Hu MM8hUb)�Fw=&cijrtZA@Xom0çO&Tk?<7e >0qS9,I-ޣ44bh+SGoW:oC"v@KggG YIɍ;pl'ٺƦlCJ˙R|Pʔ(JAT\dIsB#CD֩>u ;z!e%:z f[\>{h7?6vbxyOMJ"OMVs.*B"\I;08ͦT8/fTXZ[D@ t!8孱NbV޵Q dΩ;NOF*E : |J 9y p3iR i˪D9~Je KHp'% fUQXM=R/i¼GCgpMobfHgNgD>6\RRL Cft A+:x%vv8֣cEUxD<4KZ4R!ne,H h5(W&,9%SKkwrZ"*{? e]E%#'E=൛9zdxpW)d,ɖ*ؠblV4Z`hƘjP"sCҘ@_b%-&5W(M~8=`^6MoɄp~Ҩx:zeo- hsYI{N+WR"%agr}L+]6 $ŌAft3t,sk LhƔg "Wh6HfZ+^{kU;#(9bu$1=5' ȩKuTE 8+S]jPDew(YO)�PAuEV`nٓy("t(IXPjq /JP լy_*|.044񖟋@u<^ܠY} C988d pRnOk7`iXmZ{3NM SD!J1Eiܶ,_kBV8 -R,46�<n*W 7-AA/VlHk+_೤+Ym&VS~M*Y,haJ%(1fe,㸵73\smɷmͶuo۟n|[smϓn|[st%JI#9jD) CzcmLtSC;VmuValÒfSDa(XWuC 1T9 2y&c^E _JO[|F=YdKI =rIΕĄ[ZQMt57Κl6Ԅxltƻ2v)9>%$ Jt紙vkh 9Irwb 2v jU$6CĀ/SlF9c`TJٌѩ]fPbxPtk[Z)C/B 9d回Cq42#M Y7xt%j0%bm/6vsQ[/ j5UK:s*Y4Lx^"g+�Ҹ _"#Utqyb=RyxˆS<Oħ$6 m˧FWA`#{x.N$]"eaÿ>i:{d͢ݍWR~ 71Gs`d$� `dt%X�c`EtbJ᳜R LSesܫlV" 8?nZ),m$mYm7=2 G&nQ&km@qGE:+vsna) &T,jTPDtA%�nBg UEmP"=̥ D--dJ4L_A^JiV3<C#܌M"-WRo6|.hE&߅Pz&EsCzQFFϺ@y ;E:FrI\CR&r 6#6MO`WHlW}ļc6x+16ugO^E` E.yD@:4@cԚ4~&D5pz%E.O\o;,=IѸ@DK#LRclQ s݂lSŒkm;9;tff8Li&bYuL4 U J5 3XCBSVr  2:@ j4?Xd0}3TU q0%nlۘ %31%Ec$+ㅂ5Rwh2} DzŪ r2(ݎ[XHMWZ5x|R55R{)OXOj$~Y2%rDN@7 SVI^(1p7smϤM24GYI}mil\juذ1&!lwjV8-%.6۔9xJ+%׿0飴˪nr' ʢ`YOf&R.I#1K zʼLd XZWધGe!C(sn 2pTAKS.L *f]�+ 4 o$PSP$+ rP%CEbn@ NPk:hVȰ%  -Xy3,j� o 2?52¥6uL6-&RͨƙMf"jS(t&fhܠfT: )a1ς ANZ]Vc"ҚE* )WNwF ,8ؿ3U!E˜8FG^ŭuToŬP݂/ZlXb'b_v1 Z%//rܸTmnzIRS�,/m+c04悖 xұW K|b粉+^ݎV׽Q*۞[s9ymnL, fambJ`*tqTfM7:CHT?@[!]uAv<@N3Q6'K0\|GƥB`R$ߦ=*.m C0xwsC$Q}(:k NS [ 6a0b ߳0 =CLxFTM^7%ޏM ]{灭 I8 gM1Fu W0,|_kf=} ] N~K`YMucp،$R%#Y*nXc [-�;z|&dnt6(؆y ;1j*$R#"ԋ�<UxR(̨v*1 c7 PQU 5-ʾIH-t2K eGF:ō lR,I, Tذli;ys3&F0.ijz,3LXè2<iaY~e AE*0).^AGԁk51'frd8('3 I"ҥqW,*'aѮ>I"D$R[ʣ(i-fo$o0R�os·j=~$4UId,�y'aQJo+(@\t˃~)g |~%^NLl9c_뿃~voW_WyU<ÎY:eĽZrDӭv"6'nRayy)iDszj J{ 5P,ef= d/u_<8u 3F0%9PسOv(ۚ`Xj�ց32pOj151gk*2|)@C�IFm,uLawk-:!ܠ$B7h+HX'AZ6NLCPʉ㗳.5pwϢ'+4⠒8jUb5@v&FrAZ^|7>2Xk#*ZT!Y aDaWˊ{e<-X]=00:34jm\KbLtږ&K2xm ۞snzmσnxmm?&mf#ToM 7XHqW8-r[bܶͯgne6m̉`~pmRV/7-g9J$(#92į|:r(I)Sg MȚrBjlFCҧ(nnbj^× թ^g-RT `gUmb #x'oVzר: : +k \(3`Z �)Bvv�K@y&9"d=KՉ4x-޽‚=IQ;A\v*K?Lw+OBSpqġy!hx+)_xؤkui> jGcf:[Ў8%xi<=MoRHMxaњ>DDqOa o/Or)fZ8< BQw4f̝/=7ݍJZ,3<,"M jY.YB4HZ.�‰j >!3OB*z2koxm7I[#[U(SH)#m' M9V"P OCGb b{SYug.'vSaLbl}9A։/b@5g蹖V=6,j|!lo/(� &@J "a,̺dtZvQg{y77{~UUUлWM|m5mUQ'JBUks!}9X)8UV�]ꆓ'rӐxU)`ڪ'tc`MR5y;fϴ`kՋZ` j68-/X/KGp]}vf^;]4Sч& WQ fq>ʫėz$VM7`Qx˦XZK.āe�;T% $< H�F4mUQ𕉳Y mU\Y`b}N�Aa q:a{ĠE` gcMUXĬ0N,PE"li:I LM<6 0A䟡8Cٟ åv((M?Y T&n\ ԚdW8-$ >ܰy BT2;>wţ vm`wMv`pe! EFc}mœ+S9w9\bW02Hc_(uL be3_ڍUjl4V8GM/~IHKBU Q+R2W!׋V mUL0kAkΡFD"Pr <v8YXS~S-*QЀHD0-UTXec0HD]#u!$$e%06t UII4żC\!~XsZϨ ٓMC9ujT]I�׼i8xeL"B�0${1ɹ\r:䈰ޓ^ �ʤproTwD]oq"NԄj氃fn*rUpRtas[I6 8#o^N$GT'f=fZ0iZ#y:ۧJsHp{ ߭VNJddXtG[ <P\P#OĶ"xŐ!c)b6>@;@!빈v3ɴPN(fxSJ:!%1: 7iBCi"iqAFGx'5F,EJk_TUF<T;Vn YHT(\h :]HDM{=M@a3wCv?R w86m SHbI•(=^[JS xrhx4h6XRj IuNՖ`{ c4jflaA1 P?b('֫Ϝ;yy]-ȼz U*tlQR?hʗOk�p \S)A$5U"A1[t9㗧5ĽwyxUy()($M[gU@ UP'/$u[8#*v&'�4/9U21(l(Dhc�eb@z$E[S䟽 -Do� p8WI jQ4y=z-ƗzBaS:(;M͚$LԩZ.%{QS*0nˊ*HWmroqv9 VrM<Ea⛰@'Cx -{gmCd.-"L;AVG ohlCB7&#ǁ Na aJ ׹PrD]s(^3ql  3SGrA+Bb”%5s kI/\'RTʴ^(,L(A`H,,P'HVc&iԛV̕fGgvE7Ln3i2M2zĊQ+Mml-,AcP7;uj E˥&Ċ4UtI!a=\5UJ:rE7a|VQ1/IґAӍk4;") i(JEVC YjR/ENچřX BRJrb3&z`r&e]CR"“:x(҈i @PQ:d`NNq34<*%~ oA0� pEM3$SAe(or-=p1^7<dOu"Z`VE@EB"aOUg0?ʍ/FXSjLrôXzk=xg(rb־Oj50gq;%75x1Fmdlv@GP&G$ 0MUu chf7KͦxbUpP'b¿7b3 byYhx)| -Uz'yU(y+˜MbSh%*aHI v|k oD3Y{RR`Ó̈́IM 3Zm٧󭩋RDk1 |`y^F�`KM4BBLJFB } d$F`'qS"If9XM;8%(9* #Nd. {"W 4wF EcY<B??.!mΓvt^3D$Ф mMJk$ FE'o>KA0iA1]l5UKb �tdשC%av&jE m{LjrjZ5U!;t jdmp6 70; `bbVm6BQ0oZzpresdQSUx?%{ UU,N,Q+i>fņlKmIRte qva72ҡ@G~CStr9ϢVs3C>]@&l2DtAD"3^Bte:I;X:z!&T}.qIC'� xwq%I@\F qф! 8֐mU\=">a"׋[!My+De #bh]?ڸ?H"YZ'`Q�fHr+FPU*Oi9 Y.1Ǝ]ϾmީœQF{$"Jcm=v# <$ X6;*"TG<uU@jΓ-vz3Ԭ qK_BI4N&En:pfd!'T7[ @ӄDR`5AP/Ƥml!6(eгNOD:ABfwY/YqPC==a=A&hn'"�DH0@;Vx"(dklRǦ*Ahy$P}|FDE'Z4,PiO7Ae{N 90auϨ VC,k{x]r ӋuмJVNP%0a^- ki*tC{1( 1hY0Kmth1 U;!ȁ3mN79PA-EP !t[(H~<ePCE㩼z810|SjRm(4捇>ʎ,7ռܺ8 n/PLtfxǠhT0Ν6mj1QsvbR* :kK O3!͇K@qҨhTTÞf4&t^?Wb& FFr#!tf)M{+.aRj8&bA.b>cyKZ/Lv=!Ҏ$9L̂)䰋MQhxa^z(c�561cCd U D K1dcHCZ:P3d*m6͹"BrlAb1U8ErO(BNx"R"}�b.=V꽈'Ge-{#0{$delPh9>sr%laeSCP,lK/<h |q,yqZ"#*G4#W+͚s^;g?zz(ZRtUY^FɆX^HS-NӆH5 NÈ С'14[MAv<>{O-9CgMASC Y⡒V%¨468堁g@3Xmnzmm6mVnzi<QNk lUb@ lVXC$Fexm,ff=>Yc`mM/`GlT1Y@ !TVK1@-jԭ6{<>TQ�&IgV:0\V9.�1$tbW @UbjUFS*zpPBU,T̙5W BFRjc'u,/l  k_$P6 )tcsvٷ?& I4'd)m7=s\8Q iCxD1Y, ]&ė{@dUƫO /}7b=+ 8"vqquc�Im Ρ-*AREk,31^ ]#}0ax�lK=T\Dd ŗG%鄤 0iM9T$%vm # R] _"ૄ8L'QA0*P  άVvU({ Kpr |i%Zkb8,vW:D8IKsn<7#CʽxB<8B##0 aqyJ<&i 8(KC T=aTCgh\EBj(K ."r?ڜ$�@noH\h!,H =`DkrEIܬ 27DQRLuauf;" 63ÉVU1hQtD!&,$W3ArRl!&`m؆%C`v8#dL,[X&@i':d:BʹaE' ,N@:OՃݫ?BTttOj'dsn]k iF k- RWQ�2` i Ԟ关[Ez^FhNYԨt T,l]:zs=R 5!:T4#$n6÷_:#W"PҨ|UkS Z~dW}=Wi\b2 |%' Y[XvoB=%. ;9ih<%XWJWӚCw]y|M}B"nR> Lfj !mqt.P&qނj !M0:^@Qmfpiv9w,R Ar_7kϞ$fɊ .sIx[9E#zP5uS[# !wnEݹ;qNwt rcI7"l![2ʨF";�Oq;s iD- ^Z'@Yd"TUAJ*h a O�"ϲ%;L0 u鸮Q4^+BXd3;NʩCGɊYI+y^Y\4Ība]fΤB�mb'3y|z2#:lg%hp?L(ijF:tbW'D.d).ƥRY`۰6iPv&t_d <kfzWN7ܭ9":-*8֢ AL\3D<ޜZuYL$zY)X&ݔͰ|l\q$RѲ+-+"x�\@JT` \jOM\Љi#'r @"Ɣ1zt|AH^j1ԣ"c $I}QkӍ|G`fTiC$ تU`<YONX͵Nd[[@n$FaHj%+-zi9P钭t';* )u213 ](htuhV 934nsf&JT9 Lɖ5IEJ)�<ːQy:�>MA+O0La໴F]0.Cn82P^hى J [[=qa̰:&&B6u hYf4) )9%2f)]) o21_9 KӜܡCӔ,) 7;[H!EL+ ,JJ<p FmV\v҅2b!aJHpkaSiɨ&"xl dt;`AZetaԫҘs+ w[Nc~T$%<\lә;At7j!tV&{?$T>B5F/QJQXI' *XEM /b0zLIru@駤mYlM̪򝬋kZ-WZ2`+F)/7T.WAIJhDRԍ%Zy  R,Xq 2axmL72TdV$h%6y хz;7|yˠ/\S'hʏFƅ̰b:Ec0g ֦�̫1F,5^fz3ᰝzg(^cuMv>|-pխ v 5JT�_Wv| VE@?CepCpAه!lhNs3k.;6^ʫ P-ӪP` 2!TkO%2r(D"2{DؙfV@ -l"i}5z ,yV�#kύxԴs SW}j{_N^I� KS{Klb(BMRWm'W< Q�@`j`9BSvl=ʴZ$TPa/QڂOi5}jaUQSC g&JެLY^%# .ԨEɦq `&ȵbyAj|Rˬ3J5,E?|PkGdJ^傧..A/v<8,P|2A͟ Cd_5A �dg@@ D Ͽ5(h^`X ,`&}V̦/00(RG| �Ad[ � 7D1;CydH2tĪxyHw נ aRWQ'yH�B(A/96HAbc(u { ,6JKQUsJ@ H<r`_I� k`UkyأK^]mGQCVN;ĕ)HBoUuA,b[1Z;3��1`QM$&Ib&V̬DH=x2'k 3XI^1 tzzK4R'hjip2ijpIGiS}\EM2v6񑵼I(Z6VEٓ:&k ]Lja]V]wɭnr#]cһ)!.^\|`A ,8JY3u4Bu#)*g;s N;;'$sP#ЗmZ댡 I^뜕 ! ' 8{qA 2]c.aJN:/PAH@!KT ܘ@I@TwT)DT<Y_/,Eu%'ڽ]p)(*1W� wZT2P*<א2LvT4�X u �\,(^@S�P"N>qGTq� @\"@uX�:H#U1:1t�(!DRY !` NXkp @W;b6aqX[ZuڽaWz`"A@h:YkոAkXKq^_=3]j :C($!wn:Ķe;B = SZRmr^Ӵ(@Mv 齳R-@@H:@ "]В'd-:HlJ.Q+P]@1ҖR;l3�< ՠ2-U;!@C!RZY*[;r� buțű8踔2ɵS(P;{2X T2Uhet/Aqx*#/zA؆vly5 Y*7|�RiIȈ>K*Y?N$#!HJa" &&=RxR<J qrR xaBsD?kߜ)v748&1z ;vChL[/op4&OAxh1 �FE_ANPF"MH']L:!igh<cح4 O_[~CvvyFv^1M<u~?a�FP(}K'҃oS}AO> y0zoϼ`stQgHͯyH,E_9n]bMZkμe}M(·Q/qqp| 0cRD'>K,>:R ٵiղ@:G*E=LN9;Pap'^qzܞ9~)Po/7-v9gHωbVj/I`/aG2jf4}�=4fù(DנXZ:諊*e#յ_pJ f!frV93/qSdrh>66WmEKy}JeB[N`p ƨO2Ip?/y32~g+6¤o?.s u+]y; Q qwh|s<fkm/nx9y;;t=][q>pZ7ZZḟ<^).uJ1u_RZkYX``'Ķ27<<Rve]+XcρfyNQ)jOl,99F YTxm -=Q�  |@NE8ZDL+ŤDоA& CJsY*]cуz,q(,ExYAMۑC;YJ,?ڼPM=ecs£P: xVU#!B:WkI X>-�[ic\9,LI*tJk/5[P3ͭpM'9j`+Unfԡvgy.-WAz=z@<^/=܈2rYKs~*'xlR^_)v.6 BiHWm,'�B O8W�n�B#|3Ѹ9'p x8z[ptn?[Ժ&CfSEѸ saёRys'@R p~~s7\q^*5g)C@`3+rX,ZYd6. L\ٲ鸂Μ:C^k4`3?(yōͩXU ÏAL#(Ǡ/Qb{ԍ[d9#XB?F:hTUe^CJ<=VnzOIt1^4󏌨r7Bt^[89>dNEct?z?C%-v`9osPՆ19ȿNx+8Sˉ(O@aRogijk+4x֥!=|C;l^ ڕͬ_ O݄Z=>>v|A-d�r=ϐ57C qYf O ![_\ck, 7qYҪR< >/^j`W0ee2%/_ ls%V6i}<dn/Qol{>8?9M=ptF\t]�AMӃ#=ydFC:;`;È\<ppv'7ۂךOڸ�yD@`H߲68o7nrK5=mq�it\prN [p I%Өte2UW0U]&NN e{ZT*2[XW78_ <(_)VA+й u.ɢ-4G ۢQ2/#<zJw( <dAf F'gAi 76[S=d?Zc6}>/68?*_ fhצNb|#N xH h+ePJO^>~?7??'?yg3cogϴݸ7GC?ϫϧ3[8Cf+ΛCpbd;Vں$ {zUyڛk}n?i{tb;\2<\2 :kE}L۟7кxSS\ᏢDmAq�>`qpmE/c=p_cb,;ı5=1eC�8 1]>K�ԑd.@y7qi6!9|p;y�Ea8L>%xPy eRep�_N0īˋ 8NyUWx cqU27\U}d┌RϟX8?⭏ȧei#_x$7^M^*dS9rpIRP`FVOxr{?8il-D$sRÊGNyu8x'T2G wNY8[PC8zG|{0 өv�x$P`ٸgf$o 2׸wn{z}xWѲ߶8)q<\4q|!#Tv?t =xqٸ>szG;pnDrDK p8:G <Pv-'i7FEӆPѺ6�;րS;}Ѹq+punnwxbjη.l~ZA ϺKbZ ߡw-!sc}8ُ] S-`j_3wpP4sҚ`8 p( gƺ+gXxvUڞ0oA%]ީlxԧ:!q:Bnp=>ٔ#pM#Mg0Gu=G"оAz*1}6WDlk)g=Eu]$DЙ>MW_n+dfᇌ9c@Ww;] (U5 ]" Qիw/88%J3)b zb@Άt; yh.pp:a4'Ɂ+_Su/$?j۷F{I"7>o=]_rHZbP\&{nMUʫk)YFB$HDRU0�*==1\=#mrZqirUSVn_VkZ֡̒éI?3=)Hu"' }Ϟ\}QLV뙜~{L&MDHs2мK"*YIԪChבX;2#tCMdWsX+Ytt^N5SI~m4{Χݕ\ӶHz0bJ )X^scbR<zty lXD.zVSW͐{|~F*q]M"{e<_O556amSg\ޱ 7d6MP|>!U5AonYM7ٱh1n'恰,x((zl~AM,\ Pl71x1"}?!} f7כ,ڢ}͞nm}ю`kono5�7\ߎmkoŀ7nڊ1\f6YF? F16,_l~)v 7da)en̔V/\4In2 {Q6*!)Vjy'3b ko"(?2~z?χD`?]/QPZ q PKi w𬘫!NdP\c\o0FAvSXEddžp):=VvWO~ߎR^~ofبˏUd`C˘؎\`p~`E33(10_. ɝ{ 8f2ComWoo59ҋ0 S&GCKjJR'^X *u'ꔖ0&ؑ�r/J]i|ݓH?f@[PyݤdW+ZDmt Vd:2#yxKt 2Yz2v~+J`!i&Qz9{n(zA+<a9פ7 ɐ0BR"!$ Qr*k,2i03ܹسZEi&G(O4{R}*PpuvbР6 Z >xS!2;*>BTĹ]j CJ}B6^w<l.e g x ov`RfpMQu?\Ybl |3, vj;`=Vh,/) 1:NPTTϞ'ufvwdqeRMK a5ݝuH25>!-$Џƫs%9C SimcR6oXFn٩t٦t  4g8#u k/_օj㫬ēm$x?u*Yh~iM })!G$A$@6=xT"RL}?@⯯,2*C!Aez "Gm6-@?J#n/hD}BNbbس]?3ޜrx>--0⸜|f &UQqO89>9dk`d`}6ۚ4}2^p:d/АL?''tɚL4&$ϗ/<>'QO.>74QfiN%6=AXE,üwP|LofRr:+\K;/ ?ڏow<}<XX� y>3탖 ϸϺ ?t"|]`%;�OY̡vdGl wdh@Eǿx8rX_ l,(%`vu| p;@Ղ3 8abq;Ax.A39:vuƋbAA1<ҫЩI*_V}O(z5‡ϧSN<~yr]7vp,> -:֡$*B﫜BѪ|^72 %H}%A#FNOMPt`jl,-b4c~PnH*46cM\#RllRH"{6 ?n5񴍔jf6aM\sfd&횩MgpG՘cbcn hr HKs?U͈rS27~ A7ȥ*MoWWxqdkG 6 `ԒC,UohIa$lO<yS|EǮS=9wK=t뽂_co'ȲjΧ[9(VWN@nŽRBbVUiu`0p|TUª'gt@q i0Jj&HAYöX7Yoesg5 <"hʅ:qqG@u0ť%|`R/,;(C|تGN9c|-|ON+ڙX22j.>{FNPc *(ha}B>``Mw%=:6_F(',/P/X`k|:Pd w�t vlcN[XX/lAc*7Pó'A1U(Yd5Ҩ%{ ^nDzPH@uN_!xz "Ņ0%wQ IʻFA6᳍l=3hY٦5SV7DƤnͲnBXy6t}p/zO|l9>fIHϚBԄQQ *oK?_xT |*̡EA*qQ#Haj-TZԺx.;-v Ő>e^r&>$0; wχgC>Oe#R~RK2ʸy2& ˵N&!:C~~""Yy|0[_FR_Cu#jأS.(?>cXl RטS$1oU-<<X]ۃ1IrNKt{t,mҔ"L;1f;b6`p C"mXPR:P}(C2RB}:;އUБz0"u:(u`gvݯׯp4wuï&rFceTej<ɼNqbN``1Wrq`bKOǕ_o쵇LN7o_+ ofN$goa;_5Hj<$*D۪2j&ꟴ2zYȮmS:Tb՘}:اdXBi窼5 ? gxI{./+v DqyI4B.<$#^eY=CAܑc$[[dbsg'I86YI.hLdӦc9֤G(x|ԉ.=7XE p{rJM2yryoB{DcKm`^:EZWOu>bX5~pz~8lY}H]Vy}z~쬜{)2zwař^p{9c|fլC$?E6eM]^ձJowPEiM]?>*4ݣHZ5t>6ǜҢ/3}Fl1M?|J<Yq*eȈ=Fb-w 7)63髰B+R#*[pMl_+u<aOd`;@;~'qIN">Q +Xld6ǮQ8,X` v 6P;@q?xv�d `v= 6!8|, ;M@'p-Q.X "@m'޸q?锨v 0_8:u#aj T]p5ڀN3偺 p^X5X:l(v<Z>*8]sqS9d' s5@O  avְ-)ښ ']/=kNUavԗX(&N6Fد,9`[$"_XWҗ l\,55b 8Fĕ9-`+E).싰; vBnZ}tQnP[;31P%/TYjh(s`; )U7 gx.XOtPv�1kr3rًW,,Uf�̼v5%C-XLڍn4뗉Q'dmg$"(uQ[u-!JΞJ_L . pU\UܥhJSEHfČ>(:p\[c5W$'O pNHw=Tmk>"3jR٦0<e5H^foT =;JC/4jI+֓X :7v#KtߍeAt*kY),FSR4G^Ħ]1VĺLqҮI[؏Bb [Mgͮnh|nٵ 7ݛt-5fV6h1LݣV6 1/B}D~ni6qMlk`dnɾIfcn XrS,fSemS}yn͋7hhm~ P'nnF6mck 1cEF>h͑:o/2y {b=w|Ar@adY" “/ʏFyvM5wiRuʽV$F-uz^Ǥ"'(iuX\R.us ]gOuY.Q>5֯n12:<U ě&24DB=|bqǶ$Hn^܇̗xWۺ ˻MUuɴW"E#˯j2I2ujU<{z_ 7OȧGy::RfK޾*dh&!RtY2:1#Q@R> k|Qï"{0>ޡ|/9ww3ŧJ3cSc`2", 3^n!2p@4Z.ŚW,wdۻK*šYv,ηwfUkwYjۻZ]kwkۻnQ\Q oC'U=?PnGDtI=`65|ع7Eծ*ZL:u`rɍe&ɝPؓy>*bQ%ZqJRQ5T/=XN*2$=-fN {%pү 4*.#5٧Jkݙ)η´[evĒym6=7/1c)v0f2َ#َӄ&\*5T^yi &V*;! G<8K/Agt"{,?H?[M&HY%ekןm11jJ lY^yh ;ؘ%s`Y NHW$`NDJ&O)uSL zEW0EݳW|UqZ6k/X抑[VgفƆ:P/)g컎qJ%|r�ΑybD&->uꍜ;͗|UE :7:&c1*MITYR3 acAz_ nj1Fsxice]eFdG+y|<i|=(}InmD:Tmo3#a'd;@|lW ; tJq . U;FZ;]v"􆭧ӗ΢@Nމbk|Qş6ɳMoXݳtMl=xCh(e}Y|Xwdm&wvWE"gweOԥo3 [=uxr탬 3=?B_yZh011[aiSbTjCK/nYJ479"`�QqWpfIVtB}^h5;Rd$HJD:16a^qv111ך›Q; v`ku AxO=a3R{zwxfFzKzKJۛ<{_•"J?f�0cҋ-ńϹX<Wy,<tx&'2s(&8LYΫH}!M##ȿ%E><k$,|@5?,]ot.pv�d P냹܂8;�^1w@3Tu`6ghL9E{X>.X14mXF74Z{yV3:Ayԋ-T866Y?[=UuoayLl""ӏ5&S ʺH?i5-:O8Pbg KQe˓.X!s~}q>M)kz߇2=ʕTUi1G9>5ӧC5r[MhU8#Zʡ =EnS59eY>9yBiVCT؏.O5V}PO|vMnѾݳgtωgش7\$6mV3HW|1\ͦljfmjx1c9?? XrEU4-u=٥mlL4XVt'>̈2ؠMQ[/] -ZY$.!-l-`+25MKu~I LiYXb!c{48wy>C)i^ꬤt״=oI徖}#; -Mx+>v_X~$C zJlZ_@ mY*ưb(�yxe$?iAǥpr#Nj_o}:묳�*}w?d#qa"=fǵݭ3hۿ󬏪~聵qKo"2`Ct4 zp熈$bLUUvH7iUd/R*K:)#D,O#$"r}K=`W}<5 Nn zF=Eufa3j4 }XȬ‰ fxmhtD:ף2^EIx .4)ԸYtԮ@RR|&Ey5ǯ(_Ô/ {щz�?m~yv/ bb^8Gv9G|>iR+kul l/r[eפ01ߢv:7khZCZ1Zִ`.Z^Bd/c34.{FtKx+䞰Pªp0_pѩ4JfS4`=CiY=GUɇ0U :kIϬjʓ4?WѭRt2jSN T\F*]g'Q_ٮ !Zp2+wr##j\g/s' z!o6,>X]aP}]K͋U};K^ ]){|_O`o7o?2JxZ,v޴K稿 Y|B|7K֒tkz G?6.n;#@$eI YGMQ7vHJt_#73b}IB".,/NVD,ȸʢS~>/-W#V'3Mjf5#l9{/{ؒ8[ 9< R94jQ˧{ Sk{4 bE?S'*.t9%R?vjg0/~Cǩgb<}7Iz 3G՞%/g#@x;U'8|蚹W\}niWV"- _0L19U ;z՛#/, PzW0-KPa<Ĉh(1JR<`/.ҼJQ]\4Dۭ88w'#}HVq[/ N !�Ҍ- t ]h*oZvB=N?B26XCU-ZSa4Lš&V S\l>^) N!C \̄4*UTnD;kF@НP-sO< |a>g''p5' x5y+ JUZRqʃWxd5{ЖU/\*RT s85}C!S _^f5}[#R}9/<<^%#".VTj=Q##bMp"@] !IEw( JU:evZkeZ?OK⪊帪? U_Us@Ur{<T]9b]͜է)=@4/~01[N~8j;ӟ9I덁 I%jYU[h R&%RJ")M]ށ %´ K,ND!'^hhWyhZqцУ$?BW ] Y5R;-:QQPVrqm?TS )k~UʄkCHw]w6U5Zq <e9z?f3' / Xa| /z _,' ^_$[c FϮ0g-хs߉Wa_@-82z_ 2h ]k]p¿k +Ag\avF 0tbG@^P^A>0]*,atU#Xa#qGun]m۞~oϥ:ՃWA+H~)yT?O, So{-u$ Ibj~Tс(f? |rP*f V7Z|ĩF,<˛1S ٮѰpTyR'3/uMJZ+W8DN< A+rpH_) MvI.PۮU RQzb5xR~Qk#d+ t.B~BH%LlDcsCR(i4i=ye3>ӱ7CsćeI"n֘=ë0– ],ZhM,JVXZi^oGG0#h *#K`swIlA)LAXvg@-4.BǛ1)ޕOH> Ira*%9:$C[Xq ŠmHU%ƌUΧ59l[؟ԨtI>#PaPfD:}||D`+ r\"'NQ& uqG֋L Cڛn=zY_%.}Na5dHwR];!QJ{?(0=H !XXvg@/ : zɑ1eu=`l#6 "VDG $$ 3$&JG<A'瓥PZ*WdnC^ cwefX@g~IxT"_FRRi =PSJ+d#a5%}׈$1>a2VCdVsL|cT\RsM@oϐt{C*p: ?{iBB(OkUYa`u6:JF"C!]F,)@^"7@L}:Zo)dC27eօ~ ]3z@%l`Fݲ##poKz9r%**>̰t>i7r}Dusm r^cO\oN}^bD=l_i3?f7:XS۞<q>x #G0}PHM@,(|ޙ8 >HhɬU*`b/z\7pBCGdQSo}PSg? My<4Qpfy;D́ғ{&Su'O QyQ^RA:NŮH㖯}\BX<�^fo-)H�TdKd"s$B}5ОC6bew y<PZ^}iQdτjWR o?#6!%?,R}Nv@Z iHoRiY<Fz`2^̡=E%XAWitk5؍>@de`>03:Bݔ& 9qk4XBFvb)qwetqB+Q$P=Dƣ[e`,|`P͇#-^dg:"#޺Z4Oi鰽 ~b0]Om&HA\ǩ$ih76xk͹ G*>QӕF .^N?"Z8/F.u?*'XryFru~t3NhdHo%vΙ) DYW2^Spb57uT5ɺ-δ)$,EFF$ C v;֍C3W@$i>bdcAE�t*꼰R �9={*xepEJknb" .´aJB<FW%hե*zP IW1@/_o6zuW>x͕Ӻ{<I%^^x@=U=t{:rO=iC f>|zKxY98P;x!}7!oX@zv6eߡA '\?GBr*ze pyڻSN^V˦o Rgŗ?kTI1G离s]ReyOah1VW++ƩB.fX ƹaȏƐ_Wz#c]dubcJG< ?OEW?;%Ud}!o"<dآiy2II֫pf8tE޼Ag%x. AժI[7X?^<8}.0d`r\Gdž]КF3ځ$Bzo7!yCسw R #()dHl{dC( iU;f?VR%^G<K!ۭ/X6S{^<IeInV.CDOՁ%<s W R᮵*m !wJp3!qs)w2b�!jJvƃޘ-Ǹ4^7FwUd| 8{hn}z<bS0><gÇguhL\V }ӃMdrN}]I|Q\x ҢUtQТR N?}Pϼ,(* hMN`}/%~miYN[=h)<ԮSEZC_=(> -?H׼R\iaMdR}\%RD g!o{>Q*NX!ƨg" x;3n(coz:7(~䖓9wyroCCl0kyz 5đ!GEM"+$ X;&xpd{:^Tfo}7Lex;ˇy_AoAߓ6k.y3qtuuAB<7 ܤÖp*=q3JY᫠PRex?ځoDLzT%UȉKrho6 Sޑ?GD` v� A!e FgMgq)fbEթDQY ?m T:2?{óJy44-\4pG)s˞0tuWI n;]كzICd"{*8ޢMiW* A<%O3}-<6fT eL<N;<7 8ڇ$PXTzR4fLŅ)MQLs7!+s)� 9(~>Хlbxj@a&?=1 =kJ>,}inCʎX sЦĴhx|Ȗ*,0b$@FXo+-\ʫI,}[J4$S)E*C,*0YXǪ%4 *"@w Qk>66?,`&L.2Dn TpniiCl% U<=}Y=4Čש[0g!J$1'(ٟ;**h `jRm]ht _UhNoMq ^({쪞_'Gʚ8B!gQr-KRK^B`}tvuaQi]HDĪFBK;e"uŪP}~K k>VUJkwǬ>65>tz)(T"}Upe>in@]XJΚ)A2r tW|hEW)eRF[4IY{L2BtI_ K (@{腗"^06#h6#i{a6Xڃ`l !d6%as>U5x1 &1�t#PM(YDN%1Ѱ%]|kWtuq*kL:zN&Dh;h9$>!00| xX*{,a*7 =Ū~zb}zS:ҫEۺ,),tyA"K mɈR|ib3&>)9O@@bO5Q>l&DM:l A݂ګ(5?BԈ~qC-ĤImςxkP+ODAUCqLeT3<rb}m_<{gUEN~gT |&t6?x=T"GdJe>J Ytu&í`ڍeN'i<�tԥ"IE=>$4XL,ձ>R5t7#rG)h9_ ‰hq'۫G=MZ9vu$cFC?BA(zsb=˜|~7(c}^U.9X]+ؤѫ<~b֎~ESǞޑ0;&-s{ݟ;j;I�ibdT}OLΓ_:T!s _=C"^zGG+Kɵ*DhVRHޖN γ2*7 = vڬ.:w?N {:|[ɀ{H7RqY0̮+2WurdukřZ7A|TL\ɟTPQR"]G)L W:x4:lEc~#W<8|<l}%*;<Z!~` ɴOdh g,7%ddpڈ ^Grz9Aj[?c KCGޭ*Hͯ}[YRCq1KV8Cjհ;r *tW#;c#c4SB`Sϑ+l}F%+|R;9A?E/RаwX5wû^ȒN%#> ϗZQ8ó‚N êz9A18vs ܄~֥v}=2ŸgcPmW e<9FdI,aO x4e= H+_> ;Z?~PxToUI~w}X=q,}TXe-*?tvqҞ!-YʇHّr JV2kSV{[9tfE I };~S[E/|ӑ?5 I^]6 dv֢�tT.Tmt +Tc> 0\(ySQdo=>ܓpZI9ٓ*w^m`rh [UKSߎ "ArЖZX'Of)sƄIa*w4`ъeLT3f<2|ZFS1Ik2r1j)ϥ-㢋d :N}Hě6p!a{O i]R'v!)V%M$QZv~靫Yɤ-qnϯ@:8GE)ŢORYk0%$[Rkx9Zj:m>ȝJG?ORR-}+1>Zԥx )D꺩+rSY5# tkhh+U͆ph4~;OŰ$LŠnZ'+HW&D%rk/52e}W *>/9ore^2(;:zl Ed*|!"]T("}iu4T:cl_p +l}ݭNRg+Aך ڨrJ([3:%_J?#`Pyl[JZy!J<)J'bp6R3ZQV(+3+_5I'|(h:(љZBtM+1t^)@&s{r5Ua%u.GVrZ!{5j�9PЙԹ|nzcro:y]\k<}seQm荣H;U΍tݤw|7^ Åːӹu ruG!xz{(6LZ9/`o=n|ۿBm~Jϥ+EЯs5ٹ&^<kL e NT(Y(UhJ(]9FOL#CSΥN3URWQC<GjM|)dI~a"`h9^]H~RDCRΟr> ' &aIq*4ܘ)v8|sOdMxj0>g*(eim۹au`O)DxwxHȗR-&z C6ڣ}%t"j,tsat$;ᤏsnyfX3�瀋8ۥ2IZ4)m;mIz^ڗ 6}uF{X`O#eejȐՓC6R+YN&߿6)MGf%ZO~Z94t S.9IVuݔG d;tY9isi]CƙS#܌1݋)0z!֕JV8\G)F> 뭥Tzä,+\W7;�˕2\<ddy.I:=l.p!9K<P3Iuę uK`^uVyz/.yEO28m,H*ud8)y&?`F b,rux6|v<TV,Z2{Ϧ:/!5 5qdP֯y,�{٦65z!īW>,>le?Eqesμ`9q9Tsi1}>=:&ߐI Q{QF�{p>xD{hk!_X:2&u13Kj7 lvO>pl5RveLQ!{k9fgc zH^=(9پ.F>i==_)<3#oHjW,'^iIBy"SKpC.BCӋ_Hms/4"vB}HX6nf\dZ.|]/YozN52ܽ 5ŎU2܅~Ba5=7SWQ*hTӑ>R+oR`s^$O*4o:҆e},ܕ0O>kmCp!#<J Kñ(R%(o||Y"毼'a|!qTP̐lwVة>$Jw`}{)*V/P!G h(* OZ!f:{00yfYPfD(*Aѹ�Fn<NhiZ3cd񍽵)� �_#zȿȿz5bжY9nxCBv`<D NChS{d: |!ʚkAej1;W$v@oSEpG<inu=zfnu]Lay0껹a~Dq0'*j2$K}YG:}ZEG]-Cݓu&djA#%wt}g飽D"}e!9 @q2!2*)ppܗ0j*:J\X,HPud+~QG7_[GTS ~.JFFIldY_&SIl0qӳ^({E4#'U'8Pݥ14C6ׂgux;�e`k4lFR<t5hm5JH[s#i*ՃFd67N8}bN<. D3v?GF= - 22_{ 6u z?%}\QK`N 5Im 䶑�>;ny> Y8R[y^ ]CS3y ԂEG %?T9d^^NnS?5FlVK}smݘ{Kxp<T i bD}*iQV]h8HJ V("!@7GyQ<Ǿ|íW> K(\2~oҦd ɯ)nZ]j?J|-2M--"d#YdC~ѓ=T#[}fZHDI{ ]R\Qi/8vMfgNԵXm֤ѬƁOW /oq/wlya?^GkX~'am 8YQD DQg,qNIS*FdOPv,Efv{5ޜu99@R45и]sqxψ5Hqlec[C2zw=iq]PRt1~>7b7oYl:}Yb*idKF7c$㌴uR؛(v&<q=Xq sC9!:c3L{㤕8U!6yK6vkG<qp,|O;eq:į>R3im,6D옑ڒ=;3:](ɌEs;f9/׉4 )VB:"ߙ|dZ.f{rC: 䇻kDD4*1e~?' }CqvE]v|/&`O-w-Ku&Ϻ U'P#�q<]3Qk 닖e5jwYK8EYk(\v Xe#`];-LM] d kNK;&2Ŭ?yp_9XMQE )=Ѥ׬^c-Ş;Be p;k/).m5vTu{%�> `/x:V\ `w�냶[m|'+&mn i,c5f94Ct(RVl'CaА͎NL .TZIo[ ../[Hf#inuٲ$蛭$*n}l̃Di$1D`˻ . gĚHJ}C,2ݘ-= "z>@Y 7V6ӣa,C2RWSvG2zͦiLuNk AӉBC=YMdĘ3W;ءӻ2ZHx&*,$}yTD1v 䊚t=PvB ٵJ"I 1Afѵfˉ4:cz>@^dWWg6zTmØ 244DWN|f{v̳2(3dclaڢNli ?_KX;YZC *ȉzTrmsujF5cv7o7p5 "Yf&/>Q7\F53mlZ ~QGߘks|_l}77`tݛo6IU|s^l3~MX߀n mSlF5cE8K6786xtcF5 m8bc<ޱ6v 웪nѾۆ7ɁF6,Q^m~yf6ۖs9GD9c!=!}7Rx |8rBf9T/ l~#1zn?7ܥQ!rƻC7I l]#_+V&of4كd6*2A5ak@+xKLW$/fZ6-1 $1zUZ@2?t 6yڃ!FcL>E!8Xcx�{(f=*U_,fsa_Oo/׀cʳMTI2s̢B6WmMŗN:hC(|TvYupBz2͔:%B?:׮!g`(A]d\%YD$ѬvFNA+S~L:8[84>?SҫCKO2w{ /N*B$g1_Gxe1^(̩`<cFh~[<tt7PmԷېRP?Jȼ{@[|@,t㆏#L Ye_s* #Os{Ȫˑ쇑hh֓r4Q,ؑ}m /ǎ@uAiǨad)צRԬ2~On(İiTypYG?}V"^+n.WÑCT6t\WFa~q$VzoOV⍘?՟K򕙾}YS|90s>X'ѱE& 8=S7héb3et�OYUpeu/LHg�Btcwo�Oƕ>,p?qPj &fV}u@/ +9bW?\#qg%=xpf,/Nz_Z~-Ϯ(ïE^Ѹ>.CC|g |M;b+kE2:3YȌX_ZU=#aM2DY"} ի<FF~WVɶf3+#_IE.Bɫhx/E`P^lH=iK36#3a}{I[XCĘZe.I`FUCyqܨ @t91qD}? בx {_[B,S([n)EY,>W^^r$�Dx7}D}mA B8b\IOn&qSՉȋ@g6/W5ShonR3T`۔\qfWp[x[9.4Z _+FW$Pʗ/R5F$hmqdI h{9LYL8]y#!j ^9V9أڗ+1rܤ|4r*wxuŒ>O{Q;_Tݾ#1όܩLq g}#yB{Q.cES.2=CIIo$L~*+F?�3|J§{CIE׫=C{wfN�[Mp^ߪly,܃^&70͒g|ܕYl;Dgq7W`pHKD<{j%:}h,ZX⼠ȘQ D^jCu87zMzdyG13ݹ@򸱞e|G#eA:sF-=PsTJr'uAaj>KZ;b*ጕON2k%m/yxKkȫɾn5w8A@L[bz>+=AaR*/?([ZK9~bШu(ݲϘ0{9/NR*;Jyp ?pYu'j'84 ѸN? 7JzDžS&ܑGNi�KG˅Pɶ1O9I"7 ˎ!@ ubqspX 9zLAz|+ qr~cUl;x%vq|u: +!hΨ4헽զ1aa甄Q'D.(+t? w6}OjX!soheOaT9~u*#EoI^Y9rM*K'TSkD /Dہ:}UG5S6OYn% X{EH̓:=y-/fkКEfLI~3Qi3q3~Z~ߑô8ى##x^ pHYIJ_=VPWiAD 6uG?ًNj(L^G[:ǜ7ξ]d]gF%߮m|YzoV<&5 =GU?l ܼLR[I,!b jt:�Vq¼' Ńc`ÅJҕF2)8vX`2FsKl=ĴJlcPyn~~[z>z-O GEz / _o'zbq9Vs)MzXU)&׊*-nѰ1=XuvB9 OJT\wq#֌%>K^k 0^,TWXy*~4ey�wIKE W"qt|~(yIƣ"=!ʊ#vvU{zH| xSx4,Ry+ G7Ȫ](k~m \h[Tl{)_nڽx:H~DLAIh?;)⒬s122}UoKIL$$ϋDL"N8y0^d_#G23W$Mp͒ È>X{ :l~&ɿ}Z?Q^{PQ:+A XZ5ZC@2DeOGvsgM>ǿBA煍2^_3pO")\KlYA"Y.+ 8i9ZM.r ǻfLS;CD@>s}QIgQO{d$XTJ tWI}qz_s?)0yeRc% ؝6'LJ k?i,Cq]__l.<:7 3\t}+? 6#+–}?## e1Yn>mN˕ +5~fezzmT=և;"7>v,<~'&/8d7b6#z\#f4:|?, BSn_Nq bN};K^'H}Fg{XXi. s"^xM;8˾I^J.N0֡ϨȟQVhOްY2gsR77s.q,RN/<Tu6?Nʣqw>ߨ| $;NFaGuY:6O}+ /*ğD_P.O0 0ߌO%9 B&i'A~F#?P*qO!O.!gѩߧ-Cw%<GrYʍşe|kR)1 DLSPYxinqb詳TPЖ8xhwxIPsϘzJ"qDG#>aX*!8 v<JQf/mf <KauN$jQYB8{"ha6÷)_-Nrx(嶯%ۦi[R\ά;8vʈ+kM~1>X9`aX ^:&6uR?\ v�l7AbjSwpKqw@t"҄Zδ@dW 7Eߖ|3|%YkRwD^.^R6DX~`FҚ-n,/؀d -fx ͡w�탺 @pjj|-9En+_|P3 :l Sr6:=\)/vTXal3x Po:PN;pRQ;Bq; A0;Kul{݈-X`l|3,5jÜO^v@˂J;Bk4zP24pT~xCuqmzXb g5�pGCvȻ k6E vF9m X:K\ veJ+k4z;@l1]=yW䄴KRC\#Lʩٍ ,XeE+Da7i˵'Q:b 6[vOԪ}9/*vMXzty>EYwwf|rJL6%+5W* !~z[/F{ b/m=+�qz ب1sL"CM'{2s\MXFo?U$=ӶKÝNnk@8AZ=l!ّSb={[C:p[DYKht^m](v9++%&<fx떭'Q$}SIGf!dӤyjeIa֗>&7㷤_e\@fiׁDQCz.K]Еo+lX`z|u-)|;ٌxRW% onr2Y*_s1H?bMu֛hv81V8OV]8ia΋nV:?^#{2KΐHeOiubaS{23W(^Ұc\RPѕ43BwK1;CN/No6Whچz<Q,A2qC!|T ދB'>1bӠ=$Vv`-/Y+2܋M4;>}=Y$%y<ܸ\i%6FImv:5[~dbC|S_S8kT<2*J:=,bY;l~o7hԍjf6a 3B84kg$ޱ6 o1x1(CvT޹7p7�Vc_7HՍqF46lZ u m`j14|eTmv 77Ό~MF~~7כ8ߞmc}m&X dOxoŀУ7\ݳb( 1f7 }E\ ~^ ~lc} 7ocEq?7Y\Q6Yc7oͮgc}яc͜olhF#n&7~LQ6Y7\ߊmPQo1ƶ`?"ŀ7`ߔnɿlfF?g\:1o(暱dnŒG4Z% Ǹ`hwIt*UE~ "/&#Gl NҲYx}: ]":Vke=VS8ɳ${״B ,j} `>r9Y+=<0yFP!][?X#X~ Z?K=plxvK!`&Cm PV T&lMz̵{Z /[}]#":d 77P'Pk*j;1VWWtW_ T,%\I'_ 7W>W<igzRkK>UK_y^ޞv@;D9jF G;t9�!ƥgGt{Sy ɣH7>zw[l^N/խw^6 |`MpD�/u*XY/hWּh=T|$ʲAs?ߛA$=6!ac1#@|,ՆN~FC:TO_ONŇ ;Ws1յTdc`.2AW? xA/q־x1$�wwH6{zoD_uQ!ο?:׃9ֿ(>}ST7k%uie~uD VspپΒ7HHw@P^#Mh96S/ jE&ǝ=&IM}׻B2Q"O n,:Hkn  28]5A'X]`:T#O0';cA7F=&1H� P ”5213 @bEB@^EI$�(899q8>=vkq]w9>ۻn}xbI^� ��1pI%.�^߅ HTA!%U΅ra/DT% rY"2B(0Z`\oq* lV~fBdQ+rrAfѻ9&9Ze +^eV `Nq0X ˺[wJqHW]�|t)  8plW dݯ: Z"t&SSò[d=왕Lґ]L2>ʞ`Eiу^^m'?;JvgI(Gjf++tЈԦLDM(2T6\v p$ P^L S`@ P&2<k` `R$R�()2$SV QI"E0�t (:GBE/ HFzL~Ȝu~n+kFzTK>&a,+[6fvvzՐDꌣ/. 7됻�I]'WҼցƄEy,,|咰x~׉c Q<۠a !gGYBƑ_I۫vDⅦB4 sku%l(8vY݆WF$+B9'mLs.Iv+V:FHS2BFzN "8S}1γ6Tzn~|<U2bTN1Z ev>4x+QcYbZa\)$ObaXEX5]SFykr+Xhz]z aƗJȲR:̳=`H:o x[*8(#qeڌ]9꩎>iC.gx|VܐqDɃщtd!aV "!xe/LB8KЖI~+T L  eJBG}ZȜ@L8*r!Vn,BY0z#HrD+a^ A/b_~JpB [q2 \B`\*R &bʬ=\R$Ȝo$x/IVaxKm*<,S W<# 4<i֟8 K0޴Ǵ6p+ocL󘅴F>YCEpzQ*k1˔'n$ 4s1nVՄCrˑ;#b\H(t$@zRv5d|@r*QۮQ$I]6; Q震>]a[((|ݧ2 elˬ$?�fFYidXմZ^l*_m4h,sB OPIp`q~ F )}w �v OMKdp& 0E0t ")A0;AvKI7PHl``@x R p34_' :WEVJ^(zkDqHo_/)p�>DB#w)$)Բ&nmJ$tu1ʗZԎomډqn^3/D9"Dϖ{`Y3sH[ L镬Zƴz lݗ"KB|R(u^ֺQ&TVWW71-Uí\aɈLA#49I۾|lm-u-X^ɂЛ)2DӴ7E\I23^Hp?,wLi˔^ڸdb,|-ϩYbME 9"תr:[*~crM`^39+dq3޲R/s-eyYJ>FSz0N;׫؞u/֜1ĉ sjEd1oEƠ\w}Pq|jCfp麎KcDt5`ϸmɰְކ,r^ YW n'A,l8,Se^Y=d0M(go3SFԋ&Ob;(v7IPx[>l0^7 uٚVfdZNQ6d[ɜM%b'WhK.ch$m ' 5铗T YED6g:~9DW024?-Cb$f*ϗO3 d^y89bscHO*۵s?,I;.P& AiNjX" XAi <�Ȃ(-,LRj�:Ke?<+s.I?gĦTemG_�(gDb!_Y<w )2J~%"Қ3gbC=%F{o6shGIkicJR飓xtQ)FCO=_n%*T$(իup(zn}^;Ir+D7D^ͳP@ձFFO)X>9j[6DuݕĖ*U,[J؜K*n]:]&|_ɯ=ub$9ʱ}gU%b8򄬆GUJ,r|qrHm7VH+ƕYsV5Dj~g2x<p|o3..ĔCcasA]/#,&y;5|{(B'!$9O!nl?r^$˱,ZS;9V0`QiF()QiR*-/ܰVZai"(Q&ӕcdfb?'4(x_!^V CG}W #B}l?~2]rÌ_m@|WBe:{Dt_"O @J\N o:2O%9/#"Oc{;*j!O`":I:D>`Ϸ :L)Gd$ `@u*hwM^l-ѿEGV쩈l%(Z|:iUN OyZ#_ԌqŕsV,O@},I] ̤1vUМ"^8/,.`Gѧ%˶3=j(>mտçjq[n[˵FCܤ߷5ymX)r,GWe´BWu˥tBYZeB-A.W u aiչY \Iivgrb -ZT.Y'Ie�]o [ qËuv4VnJHnMC&ZT]e$J4gXwD3 ZK)BcI f@|d)Q^TvEhѫRuWc,=\|FLLZzLdѫY^MlT5I⨩# [D7FUtׂ3!58@wm.nJˆT+.~d@QJW"\&|@HYc3׽Ne H6AҟHV,_1"G~NH8`b]Xɢ"e| SzeĸB̶pD,G\w"[=&L3،�T@YeJ ,! s9VHHL**Q3."_0D8*+0 ĺ0y�!qUpX'axJ@)B �+`_C7L #R%/9 #Qpf Er&L)L&0TQK8dHO"eRF𷗐Ozt&U?:ZpO]?$(=$6œ' eHYfMy<EKPkJ7ݭAEUtqEg4Qf@Q2% L17Kin#$?ha3\9x]YK,GQDafLQ㫈NCd]W|e8_G\a$椶ǃ Q-qoEoOKҚyY\> OWW>헕e0sUDNq44&f&MR7쳣&\%M$N%`Y>ʎ8M`ʫ~>=448t.|@>hs <4y1Te딺,w(f& ï:+:hGWJf;J6= M_Uܙa^xy~ZqNxe\Nxj7geG2-+e-D]$Q&x;) Bn_N}% PB: x;H$@0)()y@/@ =PKJA""I>)z�Zwa{&q)HRMG"(A~(0@ � ʲ0"EDIȈb> `y<.'k!RtAwJ�CF1748q!mi1"IhόO'} tˍ +ik V 9-hDtT% ve[PNLIo GjYYtFS3,di@<Yw4:ȿv7kЂO4t[-c 8noE,ܭ[#0f avDi: h[R؛g`:̚8TµfOR(3`$Z!.BW㒿_`ſㅣ)K|9+/3Dv{[H)_C]9hR}Z\,A _CJȭkƺ=olnz- n$<g9RgkkvGޥuuMr0NR�p$e#wn̵o-_UIˌFw-яS3&~u};嫠+HGbݓ][ ʏ}V- ?ŤJZCSF‘ZHIvSGDjqYNN]:/6 w[L;2 ܤ%Iیj5h&CUZ/vqdW֩__ }mTJ^!t|0r-:*ۖbG"X[&yMӬqֺe-%9)Qv_ד<S28_TX!rߜ[IXJ ?X?^M]izX!\L>NR +Ÿ_*K'G?W:rmP :X2]x3csɢ<}.|r>Rfc@45hnm ѵۉ=4FԲT$!Q碌Po26S"A)4fDTS=+BP))pVMj Ju$T"4姌ָf;N H;LIuҮE&4MӰWIe!Ci;MެdMekHQbv'+%ʩ,o0"̗W "Ɣg.$&)/{0JW_e`FJ_noULSv?|(vY-ZtvA#& yDde|DXI ?8&Vz1#ǁ׎0Ǡ{l))ï{JaՏn-@R:r,#u2\ ^H!գ~C./C6Lrz}#ʦQ:6q!/\`|=,*XD C<y /DutD_LF\4 UنgŦW$vqRLr-,bϥCby'N.n|Z >-0ťXVvp>}${J7dOߥRE!Ւ2FQpC,d;K�%HdM.N-,",#t-'\JOSV"'w,mS;]hh^+J0<dV>4WAgFN_H}ά%B\STO|aq|CpeJj]#0Xv`PkGIjwhM-\ |�-qO8,k-pX#9oMVZŪ,S :*JLR+6LT./rڇ]Lp!I^&>@QuB=kC !£!~J [̵4K5fnrtù..Al\`&J[@@(ikDKjZ\![y_\`\$:;k:=4i.e`d-YxpE[GchrCtr(dlbX(h;TEjB[,#[` v2СYpp sWiyUE#ܥ] _-*慇G0.:QIt'Q_K|i.hqD/G [b8rYlCԡW~K#j7~'[C˚`g:ozXRoqBt[/a:K/Įil Hod"r**e.m s_L~t"NJuG Yw%,z҈ۙI1 ]`cc&(u@lnRUg!h(olk@A0|ϩXZU_4#,J/ Zmh^Z7n"Fv4@ح(>Hэ!q| dAK 'RGrHVWd!{xߚ0Dbr sh GɒiyYaLTe$[*""E":"T{ZRɗU3DEi1PN(CyX) bm_9_bG k%#ڿWڶ8ajjo c\b׬xO !!^6EUK;zB.+ls$]uXc(l E(K{ (1x7øܴå&TL%r̤_0 . %3d/Lĝ6^rcCg* 7(Ij)aۋwsu XI :eJxN͇e"wBxp6&u&Ɨ[G;*,0)^|p -)5izFVL`R^q<zJ.Czs|ܑd94Qzd/u l"i~DB#\V'%>ilYi괨Qy :Q'ɣ݊(o4am,[OmH[Y!oF%S89 A6>4ԍ&&�KarAPd+ %++8߉,B ,0©ȇ _lɛGo,m\| ,]D!xqgCpH~qPL!E( PJ!:pZpD$W(d*4 1 /U,S[#a\D 0�Ga B"dCpH~XXA v]mB^p%$YAU0V q2*BȄR#`BGtG!^ % Y_A�$ BC Ò'o3Q/liktB<8kx> W +5na[jB՚gpa#>n,(d(9^%uU^7N`+ZZ\bH9 Y֔&w&3uG<eF(cİ X)z⩱|y 8\%3 0Cz7\Gjč}Kq"R>6-ɑ.p}ݥYtnƍa.4 i{ȧq2 G8㈚̚:ktt7DVB񔼯0Qi,zVZ[Umft#PVa鯉{04Rȋ| :"ѯdvP1N&OXy}J&&GZT.mWz;_3/uQ\0OSJ]cʂuw9ybiThH#9>(y(/@ T`@z#)݂D"BE&ĊN�'P(( LIv '�x| S)D _G" h$z`~ x$S" `� ' #ނ =L(wh { ~ `aOTO|# l� )A" AJ1"QO a"*) xxLH�yBE1BE)� � ) 1 <C \/KP& �=2:]?'NJ‚W@L>  I!>R_=l=|%{JTH6v%Wa]lvtWHQ^]1+^ G] !yQ1\rGK$EHJPBS NJTRUK cTT!qA-L( j\ /'#:ׄdOŀB{11Z|._LK# xʩzvѷWo};G#5.ImKd}behP@!G+egf/G t:00XvLnPؖYs3#^M<;90K%@*yP&Abń �O `Rhz_�)ƷǨo__Up 9=W1 ӲjڗI(zՂ\j'XFqyUƜq+ +y'iZ2άwXV?Z>[]DPz& 96ם ta Y!k%ǡ$`~Es_XJ6iar]�˶;ᄄy.؈F#X0A< U_%Y;Z'8tC)i5!raaW>EqȆZحQibD̲TɝWt}_8[~ i3ľ78'.f {v)aiHq QB9ckNDEy"=y G3KaEzy`agmQ"j5Q5em^2`X$R`-i w*u",&/~CI/BpO+ds&Uj#"4eԚ^"M%ЁhפC zodR3r fcg8�U軶Ÿ>ްQ%MV5XˇN|bV-#EbaWKo;ܾiPt,g++lDc0A$?lJ?eC[}$cLcK&nm"QLV #: j,?8',[8sv5B#Ɍ梱)UZ<fT'3,}9%>+p,�a]|ɔ@# TA/l2@]*He1/(%A>DS z"eJTn!Oq  dN8&@$DL80Qn` �,#(b8Ƞ$B &ЇB\ %"dn#r`%+$Y/] ^�FWn3H$az$ #br̀{7ZҖ4N-*=K˩+_C~8UNľ6H.諾f1\EtԔZ7:Tl d:.ȧ(:R4 (N%|XjedBuiDb'Q4[p(�THGwi1 5m&RE#*<w,wv2hQ`Lg̦8Gq4v=9@PuI`T M$" $ _F01` !L# Zx r R<"` p; x2<($A)0 `�X@� ÆG �LL�B$0TUʈ7-`)8$Rt`t�'PfhE-;2&8���ܝn<k_Xrw8'hv>mWI▕CZˋ,ZTR.Ẩ28D./,al_? cvFGHi"iVi>[(a1!^}*&DZ;AAkuǵp'c"Q'i_Tt/̖/MlWA:|$T؟cK}ݮW [<q-ʂ-BQnO#_.|r$ŸsEu 4[xr> EP%ZIxʒyD'+#[EIn.TR,hԄ:skkq?`\O "X|qk ļ DG_|G_�J L#}T $fV #@ %@W ,ZD09V@$XB."`rJ K¡ tKUׇ<$pL,dlx76:Jd }8+}m.Drt"F4D:sfS 9'挘YW*J;mJ9h&LezwZS@Kт\y^�@ Ud wD$BĈdlA8 NpQZTV+B0d'%�cpP $2:%M:dfC;[ˬu>Ja@9ȷ *@+:$L}WrVF&UKKf3~%Qgؓ0l%~ŪZ 1`Bp0Tb*t<UVgtX['r. &] y4SD$(^1kp T"b$ԽobzC"B`n+%)o[mnf̽4ƋYWޙLfL (隺9JIw"o{"h_po+XEQLs=lYI(à_Kkܿm-1B ʑt WkeqtNx.|!>t>.dQDӪg04' EaȅrL+^=laబA�̷D2a *B`BC&SuV-a_pC0'WAT HDC.@ $+J k+a`L#ί]QWTdT kC 8YG~D,bYd"Wc3|W]SPO#N>+S29&&&Q!SQbSF+ bSvz~CFiHwx׷%3IydUD<1S- )~P7=-}X[j3-gWg$e:WNp2H qna-m_倢G 2PL +*.x,b^Y9)٤Q5"2yЪe*ўOš\SK>iH']E z-nf&fDž%0h׃960 08�<0>a ^Ab؄  0hĊ^@'�& 28$U D �Q)D P=�`A*A> wT7 X<p8 K<`>3-!mcbo0wRw�?DrzTzrI2kޡX)W) \0-άOIU̷UepRJ'#Е}+3԰},y]m?PC1JMq,b}^Zds ֧&Qcml?)Jز+nȽL+6,[tneRSFHyJSBE}n$"jɨl:`oqӼzƏ遑jDx?s?NG ĬǕ*@ׄyaOP^Ys=:ZT"Z K"vcYReY+ve&4?RH򏎔$|ߝ;/Vr&Z}m]+/*k#uK3E& NQ՞}A*f+&nκT!*/CFPN֘s1TEuWz.']x;#eQẠoks򂳢=cR°mefe]̬ǮJuW2a}:Q>Nֵ 0`pXl&Ʌ?A]q|=jB9H!ED.H1nJ8~ ڑJbSL'ֶkC$}gh5$S/]:\LW$"aZ*y:{4se%c&Sbv[nTU읦S%\.=XX9_Aس`SP"0糭Ċz<$AVS>3)ꓘ˗dϭk 7MgEYBCh+12FQOZQO+:k=)Eeͧ:v</nIbP>.i<kb- hAdT-1eE G>68]*Ư#B=C Фd_>-r jp~eu+5h |+o"I-"f݂8Y\2ȼ#͑[;o' SuЛNͭ0y?լ(!+=zvxT8 Nm(ſz[[LJi,621\SzcxrqUӹn9ـOH) cLAY%)dpiyՉ #$X. t.GRp~{lt k[b#qC47=3G4k&c|GЎ#و'˺j-Oњ nXhsKc]IOͻ fuc3 ;\{Wm$<K~C ?%޺:=&)Q4_^1)Q#p.7{nc蔣ޏɮ<?Y(º 0G^zJP@ %@X*Br!Ÿ2 n"@L# T C*z%JPB@ %@VFUs@xc9ф6O؇'+0ϋfPZ[/Io(13<r6ݏ7ru0\m*Ljeك*9dIOc.2s,,ĐKf3CE@.h-^v>2_TwG\4NjQc!AxAʉ(<׊0bDs/Z66Ȃ ;=z80�,_$cpwh&()6 NNt` ';�TS PwA} Q4 =pxOi5uj=i S"݌Q|m %%3I|w/ģ/ #vd "L,0 DGa $�T~W +#S\od cI'"ˌUƹ#7aV.H$7C^N}.B &A `\A.  A̴(&G_q8~ԸIE \ƌxJ,ѰN꺋IWIK*/e/GJp(lUXǵc< w%Fz2=}o#R<NF4l1B[|=0\bHާ#xCa\ԟϕ|Q44AYer+3"nERUS+jaXy#MDhPZ5/~Nؑ];JK3),4;nTI *83=Fr*pdu[(s3+ڌCGi> >vX!TrDj\F i†ҋϥl>;o.RDS%palaCS;!:M}QDxL=|(_׶CCdlTj9z>I.|"YMI)$VãccQC 8ZѓߡEVк]E,Bk',rמݨ_uQr8ж&azSF 5[ТطOswGWqn-rTJIjqB9>s%z2F=!:  ~k]ˬzPВ|؇?Iڸ~iJ?%>,0Bȇ FG\r�%RsHP"<,$beRL3� 9 0J = RKs zd\FE"/BH|L+ FJP@ %@U,AHV,\ "D#< % WA ,eBHb_S?+$|LYD�G`~JpBYA*K8b^*s1 Vb"Nv^"K"=ǫvݻG[F tjB_||=NG2:S<l�IR;KuhJ_UdGgbXƭS$4>˹y�U n'r4d`ass;tA5+ϽlpDIX롏<$KN/N, Q,y,<JBz-_Uʏ6:R7a \w\9`N (*>uN 8�&z@I@v ^R )0HhAD@h8/ꢝ|G~ GҨx�`QC)|)<Ff[^('VʜGᮨu6Z>0PUv4rZ<JkRy2U!\-~1pREBͮtb0XyeuFU|GMBӲ|jP{}X>Y)ۀ`!i A8<~@p٧ , ҋ#'&XH"1qwݟxaVT`KMcV% ?yQFjK_ZXC_IO+4^N|>9Cq݋+Ŵ룬gX)a?1|1'|Gͧ|1Ry[O6 ! !7qFWƒJܑNM7knb5tQb./3QpP)$5.J_]- <Hr`mFc8 Us}%47Ov,0)NRq)a,3hk®8c޲RYh4\Cr^ EFXA{~AEZH /3Tc*{A~- +RRz/bS?Z(l*?ԷF6Fy Uz4'EGKJYRn><HLm  ]tD69mg$R: e-Un&hb颾uO3)zSu A WRGChC1 gΊ1$e"\dqݲ3&i99Њc~(o>W<<X)" _=kep2ڰU;<2O(W9E*4k13K2tGg7\Iյq~$$ʳyA;;#l^_9 hz-3x:FW%F˻W4v}Q7 j-ѹˠk&J#'L\Qc\ vq쬌6K{2Yvb434y'K22!o-& `eRMǢ%P'32R1j:SLa3QEad9%̲!ZY##D'?#(6?'[{_a1sEi5=[vyyw/]Ƿ3n|\Kd4xNy?yƶG m>iO{62c|OVPx2j~<Gc鱟G۾*R%M%}]C<r?lw+:wak97sm 1`;g'þ_M`m֋3zOg]Oj>>3+y.(wǧ~e5ܟd?jz`0nQS̯cyny_; Vr9.=|;o<^^Oo͑3j;w5_xF{]/.|櫧:#n:پwو4Nˠf;/sY97Rݴ}E~m 8w#\.Uǥ{ncGx9iuC<̆+%ϫ4v=Ξ?v+m_]7|tw?S4{^}g-rKOlU.7~qg_Iu4}WzB0O!.zOo9eSզOΪt][ʹo|At6sV[On=m뮶ŭtH|k|+79xKwt[6Zņ<=gK7擦gZg~W9㳾m0?O'R˫Ɨ_/{g|YU)#vߓ\;~Cݮs#;log__|wKG[ܽpwbLtor<ݼ㺲^ǣ;~wߖ>~.:jO՗) |]WmvǚO]׷r|%rw6}eswuC5^x&} [3~Ojo/<_ty˨y_&fLsx7?Q#?кf}@2u_S)6#ڿnB 뛡*okIϺ9ev_C_+]`#O欛Ѻu\~nz.m7'Sckw=u1ݶSm_({,\? b{<vo7X??_T}/Z6پM_uXmz?CbͿ+au?n*5{7އt]d(ӽNkf]e4m.W?9w۞;]Km'_C84Yi:ðoulǮ`+&ɋmt^;p_d!m%{&2UPf]o<hyC3q_n {xG'Vi5/3noʞ˚{*k;]vO8oe)Q&Hzyn3};ߧ7[um%˩\?wO&zMXw!lOL_|_i}Ci5-wjC9^k9ql&97]ogc_Zy}+ߑPپy?dZ=ps?FWX _??~�{{&x-_-weC$G_ԘQEmf D/fD/hVM҇=!$U@ڪVH£k�S <B\p SH~Vy>H~5 ~g&-&[- ?agΊAH<d('< G>W{`wy>+l кI;71=^17|vG޲\wIA8z=DxցQ?r|Lgm<=ПYj2v?�/Mn^V~kl1oM]x\U I zԑs mպoV^ :5!m4/Wh;_oDMi/m /g5]D\o7Cp~f~cu[w-?l)f WC! }O!?m{ [ &lH㆝hWIo>߽!9"\(E=҃|3W۸PpM$6eR K\<$yds <k*K\'>NX?*}GO<di]V[!Am~F{'O@֏g;>^~/?^6:2Ҿα|?#ݼH=Fq/[w<m6ATY2=׮Ǚx17zܿi8\Qa/B}.C4TگFjt]֞wWMg]~sTbp#NezӪr4aK} <6q>7}|>Y6j޹[(Mk{ڞ[~MVC$5yT3)6m#1?e~=l:<o|O6:^{HG�It0ޗ˞7I yr/+N>7o@mݳBsy<G6sޑzoqx]% yPn)f+Ѽm|GfꍻoIU1 Ć3%R{JocNԾj&v_FgsJo虨{ME;崪@懏-n9vqym[x_4/z1ӄN>(sa nm<^yü$_3n3Ml!1ybmBAtMݙO"+אe=Qq;I>xz)mEkFӖm2g9x'6½V|5"68A{})k2s|u#:[7 &zhP®͞ޟtq(q |׫U[ Ezr`Na?n궮^ocuhxg=+ੳI{pqe>CTd1o>9xyNbOig ?T11#g|mws\.ޅ]#c/t֭5t?@>_6vvv?2 ΍v/s?= ž!VV Ș!TKoG+✬ /!|!ق~[ub^%*b͹(gEf^fk*a:=֪A:ʬТ`ގU䛗¾zUzFk7Ja> ?FWJކѵPʮn&7K.c![8oHZ7Ы6w,17cTinpϿoWӰn_qqUø⮯zrV'ձ~UhM0cV}o{̬ݮ(To4 |cb'JZ-֗T)!Xv;0-k.kJ WjR,3ɶoDpDO~ubwWU}m_߹o8mo [Ξ*ҰI{( amp7,$i>uC:RԚf~Hm=lnwh;},$쐲2H&αVnm7Qx E7wQ` ".Hf*$4q:9Iqx'lgVk*n"-jEЈ~,UC͖#a!<]k:!v]Q?|7W7j8/lJ +p_ě˿��?ȱ Csv#x=b278I+Y 2۔)>/ }6^`oFW-_n7=j]+}\  8Z7,Si鼇a//koKglؗ>>qc3>ܴJ k04=wwv<ip3ג-/?n%;n!NZ3O畓rS .u7y_S9 5z<Aeϋ9O}ZcOya6uayst_ӛ̼luO0Mr cp8^gZ}\-op!=g)@|oENg459:>ǝJh7 qtjRRڳ\ )GE~BU\r>։ ^/ӳ)7ڵ[1gUeu3>ux:V_-lo5Q+3C5,q[+a5x ߎ]4}~v >=me6;+WM m 2:?"p?zz> y!Ɨ fWZ[22ܞo`frc6.өs; jsQai]}6sz_uB j~ONį2%Yxm uS`yT/Þ*6CYLl2zs"9e홌?_'|Gއfo;ł+η!끤ڄ~/ #n]qq/!|c$ gg<]Nwk|.EG$3kOŇrg .?5|P6=Xkc˿ Í>C[<l6>anj3҇ 7Sa~񾴯;i+=\}H7nx[A}x7{CxuAcM|m- Q={^݆e1ҿ{9{GhyM%}^@Wo3Y:1WMh+>#eBFM-bcBtSg8kr~ƗS]xwϗK-5:^ncIm(q,~f1ؽ_}=|h<9Ll_?Iaa2uogc08u^n߽{m]|obj :펢[0g yۿ:3)߭i}yCC'WUBv2JjV'[oIжW]뇶m6?>U}rFm_!{oʦ;*.{ 탋S R;w?֤NyMol_z:ŭUM> W3YC3oG" \}UQ}R>2;5b>5_jzVgTG.{꾭e`}+#mdex%ڏ'_{?"ڥ`|n\bcx/Jd`<Q^.zE*i��?=UWd6FuBŒM[mXOJ=MMUNrOG7L턉g[mO:TA\dbtzN aUR'SUfycfjs10?>0 z:*a謃�Dzc5T0WX40;M]lsqm234sh%m~{%i͒6j|Dqu ԶV\fڡ\\7+VZ*w<5F׳n 'ZPcUߝ>~' b=o**4Q+} 4LQZ?@3Zfp:>?PUm- &a>-!ζLI4e:ZG]mm̟glE "v{!]w(U9k)Zщp85u[VH'jOGG@eG XAǵT3<#GDooe^co,G(JVUnCQ[ܰOqoeo6]6Yzl!x%iGb1CegG w!#3R7t#~"z8xx HGsN+@o31u9Ԝ|i_u}gExUJBn3:+a+U>+VRG--۝_>"{j+8>f{c5&[~@#)$x7 "#5 ;Lݳo6E#Z$q`] (H4VGgrmbi=u܌E`R= jbtjmb>܋=S#j"Zb aokǿՒ/c*n�#LRdZ}Q޾dA,UEb@ 5?C\ƌd& uT8lg ՃD\m26*= ݶBq2ARXӊٓnrHl6n~$Z4s'߫Ti~D>U,@ā讐M۝U| p*hR5cQؾ,48=g|U9dz@f`2&1vqϚܮhR5gqzx EbPZD&`_ZV^?8u&E[o&'Mb[Bq^7B9%VHdl3F<żqqmׂCzqՃq] b6P~ҍ&ksr기Qn{Ga|FجHi˜dR YJ-N3k-uq.�����@(��& <@ulbڡ>C6Y[?챙 cgM[g @qgS'ɮuAg?ۯ?KM=BRKk!@V 8mӤSOS}{aC_.zZɜ%wAp(1<wskQv9MZn1=yZo6J'm}}6o67e!<msXo+>}Kz=W<3;Nwx;[ |ߺBej=jqín\AZ1)hn7}\3Fb2=Efu; aeB>v~j<#=+q}lN0o߳9ܜ~;sM|l~ݾǻv9 o<|Chdd$[H0:{vw0ap>Uc7:ʝӄo <qn1|AyzTLo'yO${g]zSIɸS+fY" RM> ??<Ԏ8 c]q35{-=j%MMN__Oz4=/{}['7/iyvUo@H#f s@$i@lp\ W"x0'\s18 �bo:A[ȪJ6" JP *�{Nq4??|um3on<wIB*bDc"NZUڸp6#z??J+,KBCσۛ7J`S99Jq<HAMwvZ^ U2yG2nZ6f4`C,V:uq;UbG7im)S|v>Qn5* Vءl#|o翴{2^'s*J~Eq_"NF鞣iqxi?iƪp +Qy,cOs`0,Np`JwʔfTls_amKϯ?FwRJ)j{EV䫰'%_ÞQM %ں r I,|Ҋȍ/eK{TT n:z,Pqܕg1ye ҂9QmӀd MwvЭv»U>@lE,%bؤlGA;m>gJ0s4UP@b;z'YE}Z^ώg+d2}V +1%Fo+4’nӰ~4%: S Ay zMOsu>u+wO;&<UZ,G h�tu\Ć51IEC+XY[NWTo,ٱ$A/Z z%JEn+{_k*vrG)KsW+޻솢yxo"Zp)>[QesE`,X~A+,y$ZEzI)j~OCh* >DivsPFWK[Ö1_wwm,kɬ`w)x[a3BS4摮TVc{`="ƵG]F](LEi8V\a-qQbu:4~b)쾶kުɒC o$grYW1R/S(U&XE'q9k©e=0a'姤hQ t]D9O1RG[B][646{VjLªRX.j,GeR$ lO|`GRZ0D)Q{mwW>;I3}M_u[tۂSJ O™*笸 i )d.)~Vaøst}b?JۑLE EvK,Dm2#O?<#z7"\Z9JeZWȐ#n#7*FVf'q7og"+mlB6o xcxͮ8$TJZTgv Ejbw;M0Tmp!}Ns՛&I}Qūy8ftD(di2nwZTG6xVhiC|&^/(+6)0ߛfկʹ:e\m]N}frjو @}ضAnqs9=龎"ت63 ͟Ř9![}3WH𲃓|0C]ˣW r"!{;)]x|C'17r'=̆$gvqOrx}Լ.!.*!HR)8O)C);}S !{(6];@nѝ|?+ozhf|rxcb]RW<b6*B>^grW]Se_j8nʶ@к "}xtE#B>,E0Rֺ?ܖ@ugEzEz[oN:%޽~YW%i+x:Tq求E.:*4"ȥϹA p﯑ Tz `U_:P;ϟx2l|z\Cǁ/E'#'zԉ!:o.d3r:1ԘJނ )'K?}njt2( tr7oPe D -l=Lj--Y{~=_!._=~F�~2wP/@~c]"g7ΑMBӄXj0f'h'7n'鞽A' j@/ө1*cU4;*ԭe < d~}@kQ ]YA Kwz>bt_" 1G{@Ϣc<ST:>'rQDY/YeYeg1t%Q5Tm$n_q.ۏAC1ip={{A_s6G^bsgE |JBVʢr2]ĻδkAR9nj~4Y);Է~{zaS鸴{fVVI[ڟo[Gki{vo.nsфgM5m̆ژ=tU#uzm9ڙ>Mi #*c=(?[ok3O9TOOr-xSńnRUf52+0` (H 7[8վGgMFҜHe6]ݯVB~fnviro~%g`zQKi62-tW n?Gd^ucxQՖfZ[U_Bjʶ\/I; K*5#)}ɻᵢ]K_{+�/"n">*oWoC=ҵS<\_ɈR{6z]mbS_a]Jʳf/ofu\Z,[o1W%LXd2T#XOw.=ՌvXw.SoT\&~Mnd^l?W*+3S9u IwJf([?rwv/q2t;@/uew9ܬo˶XJٓMF5ޟk|JGTdmG>68D.5|ŧfw#{oQ,_`],1[ {O||apH|s8ɤx[Y7|RB͕mu3WS*fqy2ieJ~<g}Yj%'*{\a˱y7Zzj'c򍻟YO?kmb,{:OkORd.)XYv926z^ݮzs|=|񱽵U.1w~ݮȧ͓bzmwMe_D{Ӕ{e=AG)u |6km9VEFD4>Ǽމ#r{a&Mr[++q2544Lwkm#uT=o%vt:r}�]94;W5}͞m<]zr | l|Z?&JDNE"3S =BsV?aǶWoUL|6j#c@c}u*[n7̹cx]7sCB] /ԵlxfF$Z<j,͆L& uV|hA[{ *iOc1>+jX}XOY)WӛB{K1+qn/ aoak-%udmɇY3}9[K~/{ yKњ%Hi1 c\us]s2Q_Kh?SmG6]x i_O}mջ]^:6ޛyN]溾|N\NG{5.};([#?R,ݲћngFiKLsB: v{=e#ǽNӁ9uoa{VM]&vu< t '$f&B;o0C|*nOxUj~&@s$ӓmVlQ^mIm?}Op<Zzoa騻kz4k¸.zY(՞XiF6i\Ȱd^}fa[r7N>^,DgZGb~jخ<|J>kgAy=ժA9mn;<5u>gj}2L[l+X_#sJqhli?knmZ0?/fFp<EVVS:ꟍ$ۃ)V�R\Sh;S^k{Z: cmdܴ}3-:7-M_K0xh}I)ZKR&I[AD_~+ỽqu՛]/OLG.S:M}s@vɺdRsmr&ϛ!KH3wc6AJO4wE !0_FOhΌќ3{w'hf`_gFwtg7|e.D́`DL ) hΌ@#:2 Wgq7@:P7?j"3u #6vP6WξRC{whN9xkќGB;{0m:<IH�l|̉nUIŠ?w#:33.Kǵ; pztWN{IﺾFϻtoNyzڪOp0bhqo(ΌπgFV-`'6㼞֑$7}(R'3|Q]|\&|Q÷ ;Qym~'q��Zw7t|Of=}GĉXn~YeYeY`%Hl]�u`�:?}:+a˧8;w~>&F0Q*u\=AԸp:wiZlR R+|Nw,EM&Jd \:^ <fSaP}j`GXjop4Nx�.dt5N\ԠM!GvlDρ^*0=~(]ϰGʀBVau4]h(}aD<-$T^^)qd6 E7HPd-\ {d/<QЄr! '牃Ha @avm\/?4g AkFbb|�nkf']?3 kawJ30&l�7 d^| vɨ+G &L@7ω&B GF%AOrbyBD<ږqBj fx p&2;n \a5qĉW4yAA REB`Ps۳.4@*r 3Î-0^06KЙNDMO[NJ3�<@;O1v�AyFX2�0AtDiAo!w >ep}jLm'd,x 7:; "; |36`I. EI"D悕j o(U4X'1H ]pv sDpMQ8p;0{}ڸ �2ŕxs`"]zj0I,6w(<1+F YPeÐ<J8dAC"`8UVCE>z.C iLC�uZGT/(i 6[K �Ae ^P<p'X)μ=x+0 qof4zo�zN(ֈ2X ep(w@\(rT#-`od ihdG-EbL8Kf}UU*f05VQ|dl a*/f ]CG5h 9h#1zZzSհdv93 PT4�uurssRqyLx"S <KnAa {f{yhO'Nc"Y)B|Y7nx6){tB�V =)0$F[=&=ԅq!>Z* 2D2J:cXbfgB(J/o~ڵB:$jTR % gֽgMdZQ)ts_T;G{]+ -FTl7C<͑tCl~x(^P#sż3[С[9P.18k@·x6@S[{6;<8t<@ R?È6'b$Bm!08gXG>?/=f6s.: C@Po F2WBЇAd1yЏr#]t9y:ѻ@|2~yD2_1._+=5t/cڐW3Duc`uG}p91ʠc]�'Gi=t'8=Pww$:5q:]c]Qu1=' {@ŖYeYeYeYeYf}?4w�`j-[jSK qJZO�h[:X/ѥ O2܊4=dHIҁHX95gkRdG�}Mfe~4 Ä0k)�9h۸9Y b=Q pQӀi_\11(^CMAj9j?"7d� 0IWVDܨ^<Kp۟n ! *Xѽ yb8;sdp=h^ < R �^4Py'& \a]w3j˛Q]lՖ$ \\5:(Śk} 4D-<E!&\a;-`5ṃ >,G k.qp"Ŷp Ʋo5;v-jз8|^ 4P ]ÜcfM:@5YsgyH9MZxA(xBEha%5BO&L慢򗌂ZD7sPdT+R$U M e/a+hJP,^kp)#qFjn"%K[*C;$Mǣ'ڣ�JH!J@ @hdQ楀cm ]Y l-H@&Tcd#g & v M�gk(ہM@AJ Gun tX  (>MW%qホ04 ɓF< Sk< rHß tmvX 9O]y笚 LHˈf9}\I⁦w803UHϗ &3pॡ#Q`ӱܠ7- /h +Vf�CXӵȃ1@&ڝr\8~zX \Д[=oG3[BBAT @1 &s�\]p)[kMugn,+`yPj-b~$0zBGB�9׋ΌKbvX ;kX=vpsF0!I(!pu&5pqCoL@(Wl(xHX {4 erJ+ 0"-A0*B? PXu` '=`n&ܬJy�_LA�2ycGCIè4h[x))C/~>nzo2q|4|Ɵǻx [W Cb(O8s%*,l;O/ ֋N2Eg9 tC=G8jCqe9Ǻ8/X;2@MRf51LciCN4=?c)2ElZ1Nrko]Op ]Mγ F@@6=ܬ'qƈs i_b;%sς#| ?ㅺ:Dpx $C1>FQ X@]-#;U qZ|⟹z-@1h>BL5󙟖YeYf}/jA� n_|,,?°Y履'C[5$PReUQc9>7Q#ƪ'Sp;i!J$b-$ӋXIGJ۱ |*(_|{v*uVy~|gj}H۹" O O4X);;5}VJ}+jv6,$jY+ZwZPYv|nJLh[✒g\G=OR.�B}rp!iLO˩RjV <@n�h^BGitIڄD 2m~w}G64l1bKG;'qܬ*HF;# rTBE2E`6KCK!f<o:ck?@+y/N3ɹy ,ce߳l&nۻn7b2O2MJetz $ޅ. m9V2t=Ts߶ bJ[٧LΤ)5jLj5NT%;NNůuZ!ձ{MH"N?gWnqЖk =kf*t}ذlPR#v_Z=I>}Z+`ӈlzi8zv#VСcchMaRCDL#6uTrOdˌalf>P_p LC-c-]& t-<6Jmb,I"5)TRwEgV#tU^~WA]riQ+S* c۶N>go EU_ζ2px/1 +zJ}¨HV#IuFNQ:֏ԼbUl[S!2Fܵ+\$!@9ٵW?y>Ӆ'[{bE*;ӳ*x>'āqʆ>{mwVZp{ 3ӓsHNMYYwnfVqf+vhK)li#(@,V쭘TW5(R\)0VaO$Iu+qsqk=OJ~ϥsЏ16pYxOs^+60 N4"Yh@U??/f"-Rh࢓EEޥfxv)W3m5ow Vdlx55'd< jS';|VLQ<�ShA”*=V73%<-<G<NFRW876IZٽ?[6 )RO#)L>%pyMuCȠYsg+TNڜJ@ mqc]p#<UilɩʇRS ^gl8E|Ӫ?Ry6$qӫI|ъOÕNt2AT+{�Kp1A Xus]|vbN7]Wƨ Z_Z1p;Nùb62=W;RَH?"-xzj ~(UC\g^J@ ʹeK՛ n;*(e.y@XMmJ+niis2XNb"˚8HnV&*/5}yx;)e'vu,bUw _}g?JOθ+ jtտ>y jyf?ʈ8P:fz:<j>NGw{_u+5^Dq6#{ jfב:݇ͻsSE]Swō*8LJgvGUz^�܎u5='N^_^F|C$bRy#2(>oOQ<9�wNZ7`yO$( 痔p=7ǿ :A=x|hMϏsӦg1~C("gwtC?yX Cq $^tsv ] �¯5G8􆩗~-yS57p_>t-=~f^ti޾K0맲0pt:^5>2Fn:~t2'5맳ul�!P}3>NЅԸ| J0 d`Aj x8')J"[ >_*_?89^8mON ~p]^=Ο>!p|u=:E:>Wc|eRtE#%#="FHx`|#.tznP|'{}:@w__==Qh>:t-R@OoD-(t3*|aUs"t:~�SNBxq"קhSX}zGˈq#עm�җLP">H]tpބ݌d^tؿg|as?7?37ҋ Tr8~c](9_g,,?:}=q?n~/Aac�gmµgs(8v^pmj?WޖRg?VK}븂j.4p0$:oJ2$~OS{;Ww+YCYgH|Zs~Vjl_σck]4[ߣM,Wj7a7em[8~}_ZV^J`ڵkt;c_de,0"r=I𚗳!jrx[s۲!FQƏ{H˫*+N :)_ AgBz_OcղGf ;ayW<)EǨ'nPͯ}|Rum,XWBf-얆5z ^1u7Rhl+yV;ޟ噜m-w{M- ?mE05Y [Ĩ{vٷSs6mM6cTxѺ}UM)8?WBc~oh{?&+~Cö+T&gNzY]ϱyoQy{n;HQ>3dVKQmw>k{ھF{ ]~_am[|\/)K-yugǫ6lkih,}͖qlIWۏa(tE}s CmirgZ˴o+J˯2i4&{'uuL[G͞FlNX26yKjCTVOEh%SE)%mn |Sg6xv6E"¯Ek7=,}r_ɨ`b/V[oߘRl/3\Z^j:nk53䥰?QK[TE;/9ک6P>M\nKjmi;>˶#}3߻?'1EA78̭߳,U}X:j"rO̯d6]³{uwճs_jdGuw#͍^oEf-rƻy/u~FRFStBĪ:O ?m9e/'oǽ]bd]{ާ/2?%H6;<,ԇPپW|M[}_XoZc35y4Ea~CE4փ<t_Wuއ~ޯO79^ֿCl$8sW#p+yCh=S[%MK~ݯ}1x숸k帞U[h&H݇إm=Qwќuؐb NИTy^xҺW;}gnJG^ݦnθɟpatfFS!ߡ8z:CgHI~ 8W6RƺvUoaK\ً?w_aJCq.޿[-3|FƵvyƬY.ѻ++[1ÕN ̓eg[,7;nG n=?oIwX˻S;LHoHc7 =Kh>[ܕ3kf@|~_I`Q)N}f{)>w}?.Mr޿4WgI|^׷{\+j;ݣJ[nUFYUxWp( QsBa#U. 훭nr|j?5mw<UT%r }:?광^uE5Qy/.";>.ȷeWwwwV]O1Kyڎ.v&ikX&˼Yp+W!H~yk_:j`L5]*dr2MXmۮFdc~]n;َpWtZ&/;g}cЫ;OcF0zXMcL05,F;"'Cl{,p38Ηؼ|wWo~xEk \_Bg87gFp2}mF}~. vg F~4㤗tїEK@2AvP1>FCo Ό; 0t23JmC:3 0cut&u?�N7}'\肻_ϟoh=:2e3ütAIE7ͱ7g] ]Vw3.2svSd.y:ݘGtگGTkk8D"wtx\wCsǨߨ=M~jc>ؾ8o>+Ώ|g̛~NWWkق~>YeYfx?/s F͍ 惔_ > L%7;Cm烧47Z2`A@/4 }pٓ`\Xo7H6Dlـ@CeK _~ȵg PdLޡ_tRՃ>)38<v f!-6`S Ct ˻'>=1}Âۮ}c_@̚<yR< 6xce܈+uy:nd9`ecWp7]~xʂ!^A{jHa'A,juL⍐eH\o}-}4D &"`|JC -Ӛvc&D5n p=@#^%h87w8q`STEPyȦTdǎcd0/ltRuaA +H ,03ob`[ 1\ִ0uÎx:X<XG\;v#َH(vFFK65<l4jx1V.i>=<|4|Dz#ǤK BB*@2HHȪc"Dd|@`y)P ㇎eLsx҂K2#{ 3بձXƲ&5k1#BCGCDS8悒(7={(cGs! BALD` ,g LI8�D%[$II4i$dɲ&M72i^|2+į_�%{E^Q,,4<HEr/"QIG2eTJJʮq.\i) fLB'Q10b"aTL¹s fL2"aIf UL"eS-FWx!Ҁ¡`0cv p%"6(CQ9ƎL֜@1ʀNy ؐr=8r!10r&=XX ==DHD8,[*TVK&W-,Z.Yla1e,D9beK,Z F X&a ;f *as/`Ń&0f  ^ ]$Yxiue%K˫[.]|vRɗi.Ty|t{?a#+AUg/c 'C b Q`_0$ffff"f$X B&9FCD�2-nG/] ?$�? ���؉;v/-m˂3X!TTtXy+*v!c2ۘ҈8 ._ V̄P'(iy'\T\O,ZDQDhL4%&B"ɑ&M BFk֖yKۯR Q1"Q\T`Q(G%Rʧv#`̪Id塥Dٯ P jCaiMHM0&/ 4xub4pЯbzZ$ LLL2.axt׋^Hh), SzZ<xW0`XdXH0h,BDPX碠ID! X"D!-d!)ӵs+&VArDpNkH:aU!B)p9-2A«px  [aV X*JJ1 RXE +c= ([iޫiX*LZz zM"$E\!RV8K̈IL%fLdCI= IT,-l(`U2"AT%jt8*(`Q<U" `J":F@DDKJLz%JV$PU"DvЮye&3aaKa`QpE+=h #ΎZR@D3d3084)d3,޵ks;8MqТ>uJ>csO~3}Sa_o[nAϜrf "oA3ǓҒ4w*~O>-V;z\;v&U�tȌg V~_W'R-O_+ǻn+37Ce9Y9D̂[̘#r%K+1piD ֎X6C(Z;ɛnD@ؾNJp0G~69O9,RfP ~`϶t1ΌIreKW>PG@Ig2hS b݈/czEv K՗qlW vFp t0eJ) ]1JVp�UIaUh0$eRbYkߌe"L, +Z$kZAmH\1j-m daI(fYJJ,TĮ%b-9a<W,Az/8T+:EΠlEgl3SL'? J@`mcC0f,(A; &9Xi '0; o/eAH$8od/b,=BD.Eh0)-Č,q^2&"kJ *dj$iJVpQ@/J 8 PFnL,8V¤pV [pydIY ",6?"cUBvn`444hh`a|f&MX/ɓ C1Ub<YdtptCxA p`p*T?RPMpEƭ�DGE-#CipXqńXA~ILPȴ X/ř #Pȁ_~2n tNX(W)uX Feb+(XRb#7G`$)Q 0PH*:Opw`՝8[5;8;5>E�] ~6;`;40L#t1@a Y~1�(ԚBuٰX& JU-~K; P}IE!r/nXb@*QbA+<ʡ*p?H?C�1ÅUkBQcccPL6sI݊Lqb '@ E ,H P)RZ֙yN!m0;Kԙ+`J; K% Zܗ["Ҁ{4.Ŕx5kE]#TpKZ뀝ؤ-4 BƔ~`*ʀW5 � L~ڠ+ % ae=,,ᶬ ĶMqd I]zc-3Cc#zJu#b`I(0=FB}G\W/+Ny,_PYh�䯩 [t|wKؽX0V\tR ^2 #HVyJ#^?'%hpE𢫜8Y$&+8Hcn`4`[44b "Zih!]@C, j J%R%E44D=bKjL}x]-=b9EcXp '|~t48AdTGBPᬔ5=@ HÉ:H8n �Mi ̀MjX)`F܆.vAJ[q.W8 !u p0[ [C6uݻ@ { ġŽH?` 4:ˌ!);e }H.^B|+ 335 ;Ј P n~:[11b@Dk<VNg{Z2c+ b)FDv ֖YtJ= 1 +s0{ڡ!%_QNHlx![ "(*^)<[xӊ:6Q֢Xl4X*175 "pVx8 )d;T`gh׹l&{ؚb2iic. ڡHcx͕( Npv !J݋ W$| H>Q=CҀ5!ih5 2ǘpzR>8Q7_#[ɢi<Ǫ�v{/hּЬ`6ID@dU[+;??g'nDʒ:DUF LL8Y]2FneQe�f"B(Ib%t HF#ULLif:>g9.25_Vng h+IRB K?cvEk1⏹1`֔o4˞is; ١[OJ U_EiiVaqLVV<B(GXdb^N9\(Pps+{Ta,> Tg{&h*ц΅"hI �01pǷz 'Nhvu �yiV>=LS7܄p4ʌ  ۧb"sj(9|! ԉkχF&o~o3�,WB<d:1)!pqYe *q6<:h+6=ⷮ&u,-_o[2jT}~FXzcf}+Qɿ?j z 9?0/!Mפ0' BQ@Ta n~_`)b0(Py +{J" ɾኃn \(4sZ<%F j(Vgm#td_ĝ((S)|^8]i1wc`OB2@uDbB epreM>RiМЩ`LXpj?.43L>œqV490CH5* "Pp Lvek\0/?9`X>C0 ![(j;Q< ?W2|2e!tHY')Ega=]n -Ym)&PRz.&)xC% VzW?}c,L,z?m (ZVqs sG@3iӧc~CS> #97(G_9G!Wj'} 0}pfbf=`?ˊi� ~l qGسJ%q_30fvxddہ2GX"e03Rd/.]za͕,0 ŖYf{3,,,<={�@����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/astap_linux_qt5.lpi�����������������������������������������������������������0000644�0001751�0001751�00000012274�14614535560�017333� 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_2024.05.01.orig/astap_icon.ico����������������������������������������������������������������0000644�0001751�0001751�00000001376�14614535560�016322� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������� ����������(��� ���@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/astap_w64.lpi�����������������������������������������������������������������0000644�0001751�0001751�00000024671�14614535560�016027� 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"/> <MajorVersionNr Value="1"/> <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="23"> <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"/> <ComponentName Value="form_inspection1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </Unit10> <Unit11> <Filename Value="unit_hjd.pas"/> <IsPartOfProject Value="True"/> </Unit11> <Unit12> <Filename Value="unit_monitoring.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> <Unit20> <Filename Value="unit1.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Form2"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit1"/> </Unit20> <Unit21> <Filename Value="unit2.pas"/> <IsPartOfProject Value="True"/> <ComponentName Value="Form3"/> <ResourceBaseClass Value="Form"/> <UnitName Value="Unit2"/> </Unit21> <Unit22> <Filename Value="unit_raster_rotate.pas"/> <IsPartOfProject Value="True"/> </Unit22> </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_2024.05.01.orig/unit_dss.pas������������������������������������������������������������������0000644�0001751�0001751�00000012023�14614535560�016032� 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_2024.05.01.orig/unit_astrometry_net.lfm�������������������������������������������������������0000644�0001751�0001751�00000007206�14614535560�020322� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object form_astrometry_net1: Tform_astrometry_net1 Left = 686 Height = 164 Top = 156 Width = 795 Caption = 'Solving using local astrometry.net. ' ClientHeight = 164 ClientWidth = 795 KeyPreview = True OnKeyPress = FormKeyPress OnShow = FormShow LCLVersion = '2.2.4.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' OnChange = keep_console_open1Change 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 = 93 BorderSpacing.Around = 5 Caption = 'Show console' OnChange = show_console1Change ParentFont = False ParentShowHint = False ShowHint = True 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 = 544 Height = 15 Top = 128 Width = 47 Caption = 'Solved: 0' ParentColor = False end object failed1: TLabel Left = 672 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 object Button2: TButton Left = 384 Height = 25 Hint = 'Stop after finishing current image' Top = 128 Width = 50 AutoSize = True Caption = 'Stop' OnClick = Button2Click ParentShowHint = False ShowHint = True TabOrder = 5 end end ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/unit_avi.pas������������������������������������������������������������������0000644�0001751�0001751�00000026712�14614535560�016032� 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_2024.05.01.orig/unit_thumbnail.pas������������������������������������������������������������0000644�0001751�0001751�00000023317�14614535560�017234� 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,mainwindow.memo1.lines,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_2024.05.01.orig/unit_tiff.pas�����������������������������������������������������������������0000644�0001751�0001751�00000066110�14614535560�016177� 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,0]); {width} height2:=length(img[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,k,m]; 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,0]);{width} height2:=length(img[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,k,m]/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,0]);{width} height2:=length(img[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,k,m]; 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,k,m]; 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,k,m]; 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,0]);{width} height2:=length(img[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,k,m]/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,k,m]/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,k,m]/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_2024.05.01.orig/unit_ephemerides.pas����������������������������������������������������������0000644�0001751�0001751�00001006343�14614535560�017544� 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. * Release date Pascal version 2021-09-03 * * 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_2024.05.01.orig/astap_linux_amd64.lpi���������������������������������������������������������0000644�0001751�0001751�00000012244�14614535560�017532� 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"/> <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"/> <ComponentName Value="form_inspection1"/> <HasResources Value="True"/> <ResourceBaseClass Value="Form"/> </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"/> <RunWithoutDebug Value="True"/> <DebugInfoType Value="dsDwarf2Set"/> <UseExternalDbgSyms Value="True"/> </Debugging> <Options> <Win32> <GraphicApplication Value="True"/> </Win32> </Options> </Linking> <Other> <ConfigFile> <WriteConfigFilePath Value="$(ProjOutDir)\fpclaz.cfg"/> </ConfigFile> <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_2024.05.01.orig/unit_inspector_plot.pas�������������������������������������������������������0000644�0001751�0001751�00000170167�14614535560�020323� 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, ExtCtrls,{for copy to clipboard} unit_gaussian_blur ; type { Tform_inspection1 } Tform_inspection1 = class(TForm) background_contour1: TBitBtn; bayer_label1: TLabel; bin_factor1: TComboBox; gradations1: TComboBox; GroupBox4: TGroupBox; Label1: TLabel; grid_size1: TComboBox; Label2: TLabel; Label3: 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 background_values1Click(Sender: TObject); procedure background_contour1Click(Sender: TObject); procedure bin_factor1Change(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 gradations1Change(Sender: TObject); procedure grid_size1Change(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; inspector_binning: integer=1; //index inspector_grid_size: integer=30; inspector_gradations: integer=10; 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)} toClipboard1: boolean=false; 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{;x1,y1,x2,y2 : integer}); 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, oldNaxis3, dummy : 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,raM,decM, fwhm_median, hfd_median, median_outer_ring, median_11, median_21, median_31, median_12, median_22, median_32, median_13, median_23, median_33 : double; hfd_list, hfdlist_outer_ring, hfdlist_11,hfdlist_21,hfdlist_31, hfdlist_12,hfdlist_22,hfdlist_32, hfdlist_13,hfdlist_23,hfdlist_33, fwhm_list : array of double; starlistXY :array of array of double; mess1,mess2,hfd_value,hfd_arcsec,report,rastr,decstr,magstr,fwhm_value,fwhm_arcsec : string; Fliph, Flipv,restore_req : boolean; img_bk,img_sa : image_array; style: TTextStyle; data_max: single; begin if head.naxis=0 then exit; {file loaded?} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key restore_req:=false; oldNaxis3:=head.naxis3;//for case it is converted to mono if head.naxis3>1 then {colour image} begin img_bk:=duplicate(img_loaded);//fastest way to duplicate an 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; end else if (bayerpat<>'') then {raw Bayer image} begin img_bk:=duplicate(img_loaded);//fastest way to duplicate an 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; 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(hfd_list,len);{set array length on a starting value} SetLength(fwhm_list,len);{set array length on a starting value} SetLength(starlistXY,3,len);{x,y positions} setlength(img_sa,1,head.height,head.width);{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},{out}bck);{calculate background level from peek histogram} data_max:=head.datamax_org-1; retries:=3; {try up to four times to get enough stars from the image} repeat if retries=3 then begin if bck.star_level >30*bck.noise_level then detection_level:=bck.star_level else retries:=2;{skip} end;//stars are dominant if retries=2 then begin if bck.star_level2>30*bck.noise_level then detection_level:=bck.star_level2 else retries:=1;{skip} end;//stars are dominant if retries=1 then begin detection_level:=30*bck.noise_level; end; if retries=0 then begin detection_level:= 7*bck.noise_level; end; 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,fitsY,fitsX]:=-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,fitsY,fitsX]<=0){area not occupied by a star} and (img_loaded[0,fitsY,fitsX]- bck.backgr>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,j,i]:=1; end; if ((img_loaded[0,yci, xci ]<data_max) and (img_loaded[0,yci, xci-1]<data_max) and (img_loaded[0,yci, xci+1]<data_max) and (img_loaded[0,yci-1,xci ]<data_max) and (img_loaded[0,yci+1,xci ]<data_max) and (img_loaded[0,yci-1,xci-1]<data_max) and (img_loaded[0,yci+1,xci-1]<data_max) and (img_loaded[0,yci-1,xci+1]<data_max) and (img_loaded[0,yci+1,xci+1]<data_max) ) then {not saturated} begin {store values} hfd_list[nhfd]:=hfd1; fwhm_list[nhfd]:=star_fwhm; starlistXY[0,nhfd]:=xc; {store star position in image coordinates, not FITS coordinates} starlistXY[1,nhfd]:=yc; starlistXY[2,nhfd]:=flux; inc(nhfd); if nhfd>=length(hfd_list) then begin SetLength(hfd_list,nhfd+max_stars); {adapt length if required and store hfd value} SetLength(fwhm_list,nhfd+max_stars); {adapt length if required and store hfd value} SetLength(starlistXY,3,nhfd+max_stars);{adapt array size if required} end; end; end; end; end; end; dec(retries);{prepare for trying with lower detection level} 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:=duplicate(img_bk);//fastest way to duplicate an image img_bk:=nil; head.naxis3:=oldNaxis3; 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:=hfd_list[i]; size:=round(5*hfd1); starX:=round(starlistXY[0,i]); starY:=round(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+1000);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+1000);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+1000);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(hfd_List,nhfd {use length}); fwhm_median:=SMedian(fwhm_List,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_22:=head.width div 2; y_22:=head.height div 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 x_22, y_22 is not required since they are in the middle. 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)); end else begin mess2:=''; end; str(hfd_median:0:1,hfd_value); str(fwhm_median:0:1,fwhm_value); if head.cdelt2<>0 then begin str(hfd_median*abs(head.cdelt2)*3600:0:1,hfd_arcsec); hfd_arcsec:=' ('+hfd_arcsec+'")'; str(fwhm_median*abs(head.cdelt2)*3600:0:1,fwhm_arcsec); fwhm_arcsec:=' ('+fwhm_arcsec+'")'; end else begin hfd_arcsec:=''; fwhm_arcsec:=''; end; 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:=min(60,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} mess2:=mess2+'. Median FWHM='+fwhm_value+fwhm_arcsec; 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} hfd_list:=nil;{release memory} fwhm_list:=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: star_list); {filter array of hfd values} var i,j,nr_closest,nr_second_closest : integer; closest_distance,second_closest_distance,distance_sqr : single; a,b,c,dummy : double; 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 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: star_list); var i,size,fitsx,fitsY,x,y,x2,y2,w,h,scaledown: integer; img_hfd: image_array; zeros_left : boolean; col : double; begin scaledown:=1+ head.width div 1000; w:=(head.width div scaledown)+1; h:=(head.height div scaledown)+1; setlength(img_hfd,1,h,w);{set length of image array} for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do img_hfd[0,fitsY,fitsX]:=0;{clear array} size:=0; repeat zeros_left:=false; for i:=0 to nr-1 do begin col:=hfd_values[2,i]; for y:=-size to size do for x:=-size to size do if round(sqrt(sqr(x)+sqr(y)))=size then begin x2:=round(hfd_values[0,i]/scaledown) + x; y2:=round(hfd_values[1,i]/scaledown) + y; if ((x2>=0) and (x2<w) and (y2>=0) and (y2<h)) then if img_hfd[0,y2,x2]=0 then {not used yet} begin img_hfd[0,y2,x2]:=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.height,head.width); head.naxis3:=1; for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_loaded[0,fitsY,fitsX]:={img_loaded[0,fitsY,fitsX]}+img_hfd[0,fitsY div scaledown,fitsX div scaledown]; img_hfd:=nil;{free memory} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} bck.backgr:=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: star_list); 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,h,w);{set length of image array} for fitsY:=0 to h-1 do for fitsX:=0 to w-1 do img_hfd[0,fitsY,fitsX]:=0;{clear array} max_value:=0; min_value:=65535; pixels_per_star:=w*h/nr;// average surface per star in pixels factor:=2*sqrt(pixels_per_star); //take the square root to get calculate the average distance in pixels between the stars/measuring points for y:=0 to h-1 do //move in y for x:=0 to w-1 do //move in x begin cols:=mean; // background value sum_influence:=0; for i:=0 to nr-1 do //go through all HFD points and adapt the local luminance depending on all HFD values of the stars. The closer HFD points have more influence begin x2:=round(hfd_values[0,i]/ scaledown); y2:=round(hfd_values[1,i]/ scaledown); distance:=sqrt(sqr(x2-x)+sqr(y2-y)); influence:=factor/(factor+distance); sum_influence:=sum_influence+influence;// sum of all influences for position x,y. cols:=cols+hfd_values[2,i]*influence; //adapt the luminance at position x, y by the HFD value at position i in list. end; cols:=cols/sum_influence; //scale the luminance value. if max_value<cols then max_value:=cols; if min_value>cols then min_value:=cols; img_hfd[0,y,x]:=cols; //set the pixel in the contour plot end; if head.naxis>1 then setlength(img_loaded,1,head.height,head.width); 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,fitsY,fitsX]:=(1/step_adjust)*round(step_adjust*img_hfd[0,fitsY div scaledown,fitsX div scaledown]); img_hfd:=nil;{free memory} use_histogram(img_loaded,true {update}); {plot histogram, set sliders} bck.backgr:=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,y_trunc ,x_trunc ]) * (1-x_frac)*(1-y_frac);{pixel left top, 1} result:=result + (img[0,y_trunc ,x_trunc+1 ]) * ( x_frac)*(1-y_frac);{pixel right top, 2} result:=result + (img[0,y_trunc+1,x_trunc ]) * (1-x_frac)*( y_frac);{pixel left bottom, 3} result:=result + (img[0,y_trunc+1,x_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.mode:=pmXor; 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,data_max : single; hfd_values : star_list; {array of aray of doubles} 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.height,head.width);{set length of image array} get_background(0,img_loaded,false{ calculate histogram},true {calculate noise level},{out}bck);{calculate background level from peek histogram} data_max:=head.datamax_org-1; retries:=3; {try up to four times to get enough stars from the image} repeat if retries=3 then begin if bck.star_level >30*bck.noise_level then detection_level:=bck.star_level else retries:=2;{skip} end;//stars are dominant if retries=2 then begin if bck.star_level2>30*bck.noise_level then detection_level:=bck.star_level2 else retries:=1;{skip} end;//stars are dominant if retries=1 then begin detection_level:=30*bck.noise_level; end; if retries=0 then begin detection_level:= 7*bck.noise_level; end; 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,fitsY,fitsX]:=-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,fitsY,fitsX]<=0){area not occupied by a star} and (img_loaded[0,fitsY,fitsX]- bck.backgr>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,j,i]:=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(yc),round(xc)]<data_max) and (img_loaded[0,round(yc-1),round(xc)]<data_max) and (img_loaded[0,round(yc+1),round(xc)]<data_max) and (img_loaded[0,round(yc),round(xc-1)]<data_max) and (img_loaded[0,round(yc),round(xc+1)]<data_max) and (img_loaded[0,round(yc-1),round(xc-1)]<data_max) and (img_loaded[0,round(yc-1),round(xc+1)]<data_max) and (img_loaded[0,round(yc+1),round(xc-1)]<data_max) and (img_loaded[0,round(yc+1),round(xc+1)]<data_max)){not saturated} or ((aspect)) ) then begin if nhfd>=length(hfd_values)-1 then SetLength(hfd_values,4,nhfd+2000);{adapt length if required} hfd_values[0,nhfd]:=xc; hfd_values[1,nhfd]:=yc; hfd_values[2,nhfd]:=hfd1*1000;{hfd or star aspect * 1000} 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} 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-bck.backgr)/4+bck.backgr); 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-round(hfd_values[0,i]) else starX:=round(hfd_values[0,i]); if Flipvertical then starY:=head.height-round(hfd_values[1,i]) else starY:=round(hfd_values[1,i]); annotation_to_array(floattostrf(hfd_values[2,i]/1000 {aspect}, ffgeneral, 3,2){text},true{transparent},round(img_loaded[0,starY,starX]+font_luminance){luminance},size,starX+round(hfd_values[2,i]/300),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/1000 , 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]/1000-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 form_inspection1.undo_button1Click(nil);{undo if required} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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 * 1000'); 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 toClipboard1:=to_Clipboard1.checked; form_inspection1.undo_button1Click(nil);{undo if required} executed:=1;{only refresh required to undo} // if calculate_undisturbed_image_scale then measure_distortion(stars_measured);{measure andor plot distortion} if toClipboard1 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 if executed<>0 then 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 ((executed=2) and (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; toclipboard1:=to_clipboard1.checked; end; procedure Tform_inspection1.background_values1Click(Sender: TObject); var tx,ty,fontsize,halfstepX,halfstepY,stepX,stepY,fx,fy: 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key restore_req:=false; if head.naxis3>1 then {colour image} begin img_bk:=duplicate(img_loaded); 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:=duplicate(img_loaded); 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:=duplicate(img_bk);//fastest way to duplicate an image get_hist(0,img_loaded);{get histogram of img_loaded and his_total} img_bk:=nil;//free mem end; end; Screen.Cursor:=crDefault; end; procedure Tform_inspection1.background_contour1Click(Sender: TObject); var fx,fy : integer; high_level,low_level,srange : double; img_bk : image_array; begin if head.naxis=0 then exit; {file loaded?} form_inspection1.undo_button1Click(nil);{undo if required} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; case inspector_binning of 1: bin_X2X3X4(2); 2: bin_X2X3X4(3); 3: bin_X2X3X4(4); end; img_bk:=duplicate(img_loaded); apply_most_common(img_bk, img_loaded,head.datamax_org,inspector_grid_size); {apply most common filter on first array and place result in second array} gaussian_blur2(img_loaded, inspector_grid_size *2 {4 * strtofloat2(most_common_filter_radius1.Text)}); use_histogram(img_loaded,true {update}); {plot histogram, set sliders} //find low and high level high_level:=0; low_level:=9999999; for fy:=0 to (head.height-1) div 50 do for fx:=0 to (head.width-1) div 50 do begin high_level:=max(high_level,img_loaded[0,fy*50,fx*50]); low_level:=min(low_level,img_loaded[0,fy*50,fx*50]); end; for fy:=0 to head.height-1 do for fx:=0 to head.width-1 do img_loaded[0,fy,fx]:= low_level + ((high_level-low_level)/inspector_gradations)*round( (img_loaded[0,fy,fx]-low_level)*inspector_gradations/(high_level-low_level)); srange:=high_level-low_level; mainwindow.maximum1.position:=round(high_level+0.1*srange); //set sliders again since use_histogram doesn't work that well for blurred image. mainwindow.minimum1.position:=round(low_level-0.05*srange); plot_fits(mainwindow.image1, False, True);{plot real} img_bk:=nil;//free mem Screen.Cursor:=crDefault; end; procedure Tform_inspection1.bin_factor1Change(Sender: TObject); begin inspector_binning:=bin_factor1.itemindex; end; procedure Tform_inspection1.aberration_inspector1Click(Sender: TObject); var fitsX,fitsY,col, widthN,heightN : integer; img_temp : image_array; var {################# initialised variables #########################} side :integer=250; const gap=4; begin if head.naxis<>0 then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,heightN,widthN);{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,fitsY,fitsX]:=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,fitsY,fitsX]:=img_loaded[col,fitsY,fitsX]; 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,fitsY,fitsX+side+gap]:=img_loaded[col,fitsY,fitsX+(head.width 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,fitsY,fitsX+2*(side+gap)]:=img_loaded[col,fitsY,fitsX+head.width-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,fitsY+(side+gap),fitsX]:=img_loaded[col,fitsY +(head.height div 2) - (side div 2) ,fitsX]; 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,fitsY+(side+gap),fitsX+side+gap]:=img_loaded[col,fitsY +(head.height div 2) - (side div 2) ,fitsX+(head.width 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,fitsY+(side+gap),fitsX+2*(side+gap)]:=img_loaded[col,fitsY +(head.height div 2) - (side div 2) ,fitsX+head.width-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,fitsY+2*(side+gap),fitsX]:=img_loaded[col,fitsY + head.height - side,fitsX]; 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,fitsY+2*(side+gap),fitsX+side+gap]:=img_loaded[col,fitsY + head.height - side,fitsX+(head.width 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,fitsY+2*(side+gap),fitsX+2*(side+gap)]:=img_loaded[col,fitsY + head.height - side,fitsX+head.width-side]; // setlength(img_loaded,head.naxis3,head.height,head.width);{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} remove_solution(false {keep wcs}); 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.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; to_clipboard1.checked:=toclipboard1; bin_factor1.itemindex:=inspector_binning; grid_size1.text:=inttostr(inspector_grid_size); gradations1.text:=inttostr(inspector_gradations); end; procedure Tform_inspection1.gradations1Change(Sender: TObject); begin inspector_gradations:=strtoint(gradations1.Text); end; procedure Tform_inspection1.grid_size1Change(Sender: TObject); begin inspector_grid_size:=strtoint(grid_size1.Text); end; procedure Tform_inspection1.help_uncheck_outliers1Click(Sender: TObject); begin openurl('http://www.hnsky.org/astap.htm#inspector'); end; end. ���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/unit_listbox.pas��������������������������������������������������������������0000644�0001751�0001751�00000014014�14614535560�016727� 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, 2024 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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_2024.05.01.orig/unit_online_gaia.pas����������������������������������������������������������0000644�0001751�0001751�00000025163�14614535560�017517� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_online_gaia; {Copyright (C) 2017, 2023 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,strutils,forms,math,astap_main,unit_download,unit_star_align,unit_stack; function read_stars_online(telescope_ra,telescope_dec,search_field, magli: double): boolean;{read star from star database} procedure convert_magnitudes(filter : string); //convert gaia magnitude to a new magnitude function transform_gaia(filter : string; magG,magBP,magRP: double):double;//transformation of Gaia magnitudes procedure report_one_star_magnitudes(ra,dec : double; out b,v,r,sg,sr,si,g,bp,rp :double); //report the database magnitudes for a specfic position. Not efficient but simple var online_database : star_list;//The output. Filled with ra,dec,magn gaia_ra: double=0; gaia_dec: double=0; implementation uses unit_astrometric_solving; function transform_gaia(filter : string; magG,magBP,magRP: double):double;//transformation of Gaia magnitudes var Gflux,BPflux,RPflux,c,BminR,Bt,Vt,V : double; begin if filter='BP' then result:=magBP else begin result:=0;//assume failure if ((magG<>0) and (magBP<>0) and (magRP<>0))then begin {quality check by flux ratio} //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. Gflux:=power(10,(22-magG)/2.5); BPflux:=power(10,(22-magBP)/2.5); RPflux:=power(10,(22-magRP)/2.5); c:=(BPflux+RPflux)/Gflux; if ((c>4) and (magG>magBP))=false then {no straylight do not rely on BP and RP. C is normally a little above 2} begin BminR:=magBP-magRP; if filter='V' then //Johnson-Cousins-V. See https://gea.esac.esa.int/archive/documentation/GDR3/Data_processing/chap_cu5pho/cu5pho_sec_photSystem/cu5pho_ssec_photRelations.html begin if ((BminR>=-0.5) and (BminR<=5.0)) then {formula valid edr3, about 99% of stars} result:=magG + 0.02704 - 0.01424*(BminR) + 0.2156*sqr(BminR) -0.01426*sqr(BminR)*(BminR) ; {edr3} end else if filter='R' then //Johnson-Cousins R begin if ((BminR>0 {remark J, could be 0.2}) and (BminR<4.0)) then result:=magG + 0.02275 - 0.3961*(BminR) + 0.1243*sqr(BminR)+ 0.01396*sqr(BminR)*(BminR) - 0.003775*sqr(sqr(BminR)) ; {edr3} end else if filter='B' then //Johnson-B begin if ((BminR>-0.3) and (BminR<3.0)) then begin Vt:=magG + 0.01077 + 0.0682*(BminR) + 0.2387*sqr(BminR) -0.02342*sqr(BminR)*(BminR) ; Bt:=magG + 0.004288 + 0.8547*(BminR) -0.1244*sqr(BminR)+ 0.9085*sqr(BminR)*(BminR) - 0.4843*sqr(sqr(BminR))+ 0.06814*sqr(sqr(BminR))*BminR ; V:=magG + 0.02704 - 0.01424*(BminR) + 0.2156*sqr(BminR) -0.01426*sqr(BminR)*(BminR) ; result:=V + 0.850*(Bt-Vt); //from Tycho catalog, B - V = 0.850 * (BT - VT) end; end else if filter='SR' then //SDSS-r begin if ((BminR>0.0) and (BminR<3.0)) then result:=magG + 0.09837 - 0.08592*(BminR) - 0.1907*sqr(BminR) + 0.1701*sqr(BminR)*(BminR) - 0.02263*sqr(sqr(BminR)) ; {dr3} end else if filter='SI' then //SDSS-i begin if ((BminR>0.5) and (BminR<2.0)) then result:=magG + 0.293 - 0.6404*(BminR) + 0.09609*sqr(BminR) + 0.002104*sqr(BminR)*(BminR); {dr3} end else if filter='SG' then //SDSS-g begin if ((BminR>0.3) and (BminR<3.0)) then result:=magG - 0.2199 + 0.6365*(BminR) + 0.1548*sqr(BminR) - 0.0064*sqr(BminR)*(BminR); {dr3} end; end; end; end; end; procedure convert_magnitudes(filter : string); //convert gaia magnitude to a new magnitude var i : integer; begin if filter=passband_active then exit;//no action. Already the correct type for i:=0 to length(online_database[0])-1 do online_database[5,i]:=transform_gaia(filter,online_database[2,i]{G},online_database[3,i]{BP},online_database[4,i]{RP}); passband_active:=filter;//remember last transformation end; procedure report_one_star_magnitudes(ra,dec : double; out b,v,r,sg,sr,si,g,bp,rp :double); //report the database magnitudes for a specfic position. Not efficient but simple var i : integer; sep : double; begin b:=0; v:=0; r:=0; sg:=0; sr:=0; si:=0; g:=0; bp:=0; rp:=0; if online_database=nil then begin exit; end; for i:=0 to length(online_database[0])-1 do begin ang_sep(ra,dec,online_database[0,i],online_database[1,i],sep); if sep<5*pi/(180*60*60) then //within 5 arcsec begin b:=transform_gaia('B',online_database[2,i]{G},online_database[3,i]{BP},online_database[4,i]{RP});//BVR Johnson-Cousins v:=transform_gaia('V',online_database[2,i]{G},online_database[3,i]{BP},online_database[4,i]{RP}); r:=transform_gaia('R',online_database[2,i]{G},online_database[3,i]{BP},online_database[4,i]{RP}); sg:=transform_gaia('SG',online_database[2,i]{G},online_database[3,i]{BP},online_database[4,i]{RP});//sloan mangitudes sr:=transform_gaia('SR',online_database[2,i]{G},online_database[3,i]{BP},online_database[4,i]{RP}); si:=transform_gaia('SI',online_database[2,i]{G},online_database[3,i]{BP},online_database[4,i]{RP}); g:=online_database[2,i]{G}; bp:=online_database[3,i]{BP}; rp:=online_database[4,i]{RP}; break; end; end; end; procedure extract_stars(slist:Tstringlist); //extract stars var regel : string; p1,p2,p3,p4,count,count2,err : integer; g,bp,rp,ra,dec : double; datalines : boolean; // thestars : array of array of double; // magn_histogram : array [0..23*40] of integer;//contains magnitude count from 0.0 to magnitude 23.0 in steps of 0.025 magnitude begin //--------------- --------------- --------- --------- // G BP //RA_ICRS (deg) DE_ICRS (deg) mag (mag) mag (mag) //--------------- --------------- --------- --------- //086.58690478866 -10.38175731298 20.486355 20.757553 //086.57689784801 -10.37081756215 20.496525 21.346535 //086.57543967588 -10.36071651144 20.726021 21.413324 datalines:=false; count2:=0; setlength(online_database,6,slist.count);//position 5 will contain later the converted magnitude count:=35;{skip first part} while count<slist.count-2 do begin regel:=slist[count]; inc(count); if datalines then //Data from Vizier begin {magnitude} p1:=pos(' ',regel);{first column changes in width} p2:=posex(' ',regel,p1+3);//there could be two spaces so skip at least 3 p3:=posex(' ',regel,p2+3); p4:=posex(' ',regel,p3+3); if ((p3>0) and (ord(regel[1])>=48) and (ord(regel[1])<=57)) then //this is a real line of the star list. number lines between char(48) and char(57) begin val(copy(regel,1,p1-1),ra,err);//ra online_database[0,count2]:=ra*pi/180; val(copy(regel,p1+1,p2-p1-1),dec,err);//dec online_database[1,count2]:=dec*pi/180; val(copy(regel,p2+1,p3-p2-1),g,err);//G online_database[2,count2]:=g; val(copy(regel,p3+1,p4-p3-1),bp,err);//Bp online_database[3,count2]:=bp; val(copy(regel,p4+1,99),rp,err);//Rp online_database[4,count2]:=rp; online_database[5,count2]:=bp;//store default the BP magnitude here. Could be calculated V, B or R later inc(count2);//stars read end; end {correct line of star list} else if copy(regel,1,7)='RA_ICRS' then //data begins begin datalines:=true; inc(count);//skip one more line containing --------------- --------------- --------- --------- end; end; SetLength(online_database,6,count2);{set array length} end; function read_stars_online(telescope_ra,telescope_dec,search_field, magli : double): boolean;{read star from star database} var ra8,dec8,sgn,window_size,field,url,mag_lim : string; slist: TStringList; begin result:=false; str(abs(telescope_dec*180/pi) :3:10,dec8); if telescope_dec>=0 then sgn:='+' else sgn:='-'; if telescope_dec>=0 then sgn:='%2B'{+} else sgn:='%2D'{-} ; str(abs(telescope_ra*180/pi) :3:10,ra8); esc_pressed:=false; field:=floattostr6(search_field*3600*180/pi); window_size:='&-c.bs='+ field+'/'+field;{square box} {-c.geom=b square box, -c.bs=10 box size 10arc else radius} try slist := TStringList.Create; mag_lim:=floattostrF(magli,ffGeneral,3,1); {BP~GP+0.5} memo2_message('Downloading Gaia stars from Vizier down to magnitude '+mag_lim+'. This can take 60 seconds or more ......'); if search_field*180/pi>=3.5 then memo2_message('Warning, for this large FOV the star retrieval from Vizier will likely take minutes or fail!!!'); url:='http://vizier.u-strasbg.fr/viz-bin/asu-txt?-source=I/355/Gaiadr3&-out=RA_ICRS,DE_ICRS,Gmag,BPmag,RPmag&-c='+ra8+sgn+dec8+window_size+'&-out.max=200000&Gmag=<'+mag_lim; // http://vizier.u-strasbg.fr/viz-bin/asu-txt?-source=I/355/Gaiadr3&-out=RA_ICRS,DE_ICRS,Gmag,BPmag,RPmag&-c=10.6722703144%2B41.2237647285&-c.bs=7862.054205/7862.054205&-out.max=200000&Gmag=<12.6 slist.Text := get_http(url);//move info to Tstringlist application.processmessages; if esc_pressed then begin slist.Free; exit; end; if slist.count<=31 then memo2_message('List received is empthy! url: '+url) else begin memo2_message('Stars list received'); gaia_ra:=telescope_ra; //store to test if data is still valid gaia_dec:=telescope_dec; extract_stars(slist ); result:=true;{no errors} end; finally slist.Free; end; end; end. �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/astap_main.pas����������������������������������������������������������������0000644�0001751�0001751�00002546640�14614535560�016341� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit astap_main; {Copyright (C) 2017, 2024 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: https://forum.lazarus.freepascal.org/index.php/topic,63511.0.html 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 https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/40065 } 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} LCLVersion, InterfaceBase, LCLPlatformDef, SysUtils, Graphics, Forms, strutils, math, clipbrd, {for copy to clipboard} Buttons, PopupNotifier, PairSplitter, simpleipc, CustApp, Types, fileutil, IniFiles;{for saving and loading settings} const astap_version='2024.05.01'; // astap_version := {$I %DATE%} + ' ' + {$I %TIME%}); type { Tmainwindow } Tmainwindow = class(TForm) add_marker_position1: TMenuItem; bin3x3: TMenuItem; BitBtn1: TBitBtn; boxshape1: TShape; data_range_groupBox1: TGroupBox; dec1: TEdit; dec_label: TLabel; error_label1: TLabel; flip_indication1: TLabel; FontDialog1: TFontDialog; histogram1: TImage; Image1: TImage; image_north_arrow1: TImage; inversemousewheel1: TCheckBox; Label1: TLabel; Label12: TLabel; Label13: TLabel; Label2: TLabel; Label5: TLabel; LabelCheck1: TLabel; LabelThree1: TLabel; LabelVar1: TLabel; max2: TEdit; maximum1: TScrollBar; 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; grid_ra_dec1: TMenuItem; freetext1: TMenuItem; MenuItem21: TMenuItem; localcoloursmooth2: TMenuItem; fittowindow1: TMenuItem; flipVH1: TMenuItem; dust_spot_removal1: TMenuItem; export_star_info1: TMenuItem; grid_az_alt1: TMenuItem; az_alt1: TMenuItem; cal_batch1: TMenuItem; mpcreport1: TMenuItem; min2: TEdit; minimum1: TScrollBar; PageControl1: TPageControl; PairSplitter1: TPairSplitter; PairSplitterSide1: TPairSplitterSide; PairSplitterSide2: TPairSplitterSide; Panel1: TPanel; Panel_top_menu1: TPanel; Polynomial1: TComboBox; ra1: TEdit; range1: TComboBox; ra_label: TLabel; rotation1: TLabel; saturation_factor_plot1: TTrackBar; save1: TButton; Separator3: TMenuItem; Shape_alignment_marker1: TShape; Shape_alignment_marker2: TShape; Shape_alignment_marker3: TShape; shape_histogram1: TShape; shape_manual_alignment1: TShape; shape_marker1: TShape; shape_marker2: TShape; shape_marker3: TShape; shape_marker4: TShape; shape_paste1: TShape; solve_button1: TButton; SpeedButton1: TSpeedButton; star_profile1: TMenuItem; Separator2: TMenuItem; stretch1: TComboBox; TabSheet1: TTabSheet; TabSheet2: TTabSheet; UpDown1: TUpDown; vizier_gaia_annotation1: TMenuItem; simbad_annotation_deepsky_filtered1: 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; 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_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; simbad_query1: TMenuItem; positionanddate1: TMenuItem; removegreenpurple1: TMenuItem; zoomfactorone1: TMenuItem; extractred1: TMenuItem; extractblue1: TMenuItem; extractgreen1: TMenuItem; MenuItem24: TMenuItem; writepositionshort1: TMenuItem; 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; 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; 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; submenurotate1: TMenuItem; MenuItem19: TMenuItem; solvebytwopositions1: TMenuItem; enterposition1: TMenuItem; save_settings_as1: TMenuItem; settings_menu1: TMenuItem; variable_star_annotation1: TMenuItem; clean_up1: TMenuItem; preview_demosaic1: TMenuItem; PopupNotifier1: TPopupNotifier; remove_colour1: TMenuItem; Returntodefaultsettings1: TMenuItem; 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; 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; MainMenu1: TMainMenu; Help: TMenuItem; Exit1: TMenuItem; About1: TMenuItem; File1: TMenuItem; OpenDialog1: TOpenDialog; N1: TMenuItem; N2: TMenuItem; ShowFITSheader1: TMenuItem; SaveDialog1: TSaveDialog; error_get_it: TLabel; 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; 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; N3: TMenuItem; StatusBar1: TStatusBar; procedure add_marker_position1Click(Sender: TObject); procedure annotate_with_measured_magnitudes1Click(Sender: TObject); procedure annotations_visible1Click(Sender: TObject); procedure autocorrectcolours1Click(Sender: TObject); procedure az_alt1Click(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 export_star_info1Click(Sender: TObject); procedure flip_H1Click(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure freetext1Click(Sender: TObject); procedure grid_az_alt1Click(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 annotate_unknown_stars1Click(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 grid_ra_dec1Click(Sender: TObject); procedure bin_2x2menu1Click(Sender: TObject); procedure MenuItem22Click(Sender: TObject); procedure electron_to_adu_factors1Click(Sender: TObject); procedure localcoloursmooth2Click(Sender: TObject); procedure fittowindow1Click(Sender: TObject); procedure flipVH1Click(Sender: TObject); procedure dust_spot_removal1Click(Sender: TObject); procedure mpcreport1Click(Sender: TObject); procedure simbad_annotation_deepsky_filtered1Click(Sender: TObject); procedure move_images1Click(Sender: TObject); procedure Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure set_modified_date1Click(Sender: TObject); procedure positionanddate1Click(Sender: TObject); procedure inspection1click(Sender: TObject); procedure removegreenpurple1Click(Sender: TObject); procedure roundness1Click(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 stretch1Exit(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 stretch1CloseUp(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;// note fasted processing is achieved if both access loop and memory storage are organised in rows. So as array[nrcolours,height,width] 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) mzero : double;//flux calibration factor for all flux mzero_radius : double;//mzero diameter (aperture) pedestal : double;//pedestal added during calibration or stacking 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; date_avg : string; calstat : string; filter_name: string; passband_database: string; end; type timgbackup = record head_val: Theader;{most important header values} header : string; {full header text} filen : string; {filename} img : image_array; end; Tbackground = record backgr : double;//background value star_level : double;//star level star_level2: double;//star level noise_level: double;///noise level background end; theauid = record auid: string; ra : double; dec : double; Vmag: string; Verr: string; Bmag: string; Berr: string; Rmag: string; Rerr: string; SGmag: string; SGerr: string; SRmag: string; SRerr: string; SImag: string; SIerr: 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_dark,img_flat : image_array; head, {for lights} head_ref, {for reference light in stacking} head_flat, head_dark : Theader;{contains the most important header info} bck : Tbackground; 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,extend_type,r_aperture : integer; {histogram number of values} his_mean : 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,magn_limit_str: string; focus_temp,{cblack,}cwhite,sqmfloat,altitudefloat, pressure :double; {from FITS} subsamp, focus_pos : integer;{not always available. For normal DSS =1} 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; 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} annulus_radius : integer=14;{inner of square where background is measured. Square has width and height twice annulus_radius} copy_paste :boolean=false; copy_paste_shape :integer=0;//rectangle 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=''; maintype : 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; passband_active: string=''; //Indicates current Gaia conversion active star_profile_plotted: boolean=false; minor_planet_at_cursor:string=''; 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;const memo : tstrings; out head: Theader; out img_loaded2: image_array): boolean;{load a fits or Astro-TIFF 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;preserve_comment:boolean;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 fnmodulo (x,range: double):double; function strtoint2(s: string;default:integer):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;//always with dot decimal seperator function floattostr4(x:double):string;//always with dot decimal seperator function floattostr2(x:double):string;//always with dot decimal seperator 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;ellipse: boolean; colorm, xmin,xmax,ymin,ymax,max1 {maximum background expected}:integer; out greylevels: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(var 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 back : Tbackground); {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,x1,y1,x2,y2: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 pixel_to_celestial(head : theader; fitsx,fitsy : double; formalism : integer; out ra,dec : double) {fitsX, Y to ra,dec}; procedure celestial_to_pixel(head: theader;ra,dec: 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 :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, sd : double): string;//reports noise in ADU's (adu_e=0) or electrons procedure calibrate_photometry; procedure measure_hotpixels(x1,y1, x2,y2,col : integer; sd,mean: double; img : image_array; out hotpixel_perc, hotpixel_adu :double);{calculate the hotpixels ratio and average value} function duplicate(img:image_array) :image_array;//fastest way to duplicate an image procedure annotation_position(aname:string;var ra,dec : double);// calculate ra,dec position of one annotation procedure remove_photometric_calibration;//from header procedure remove_solution(keep_wcs:boolean);//remove all solution key words efficient 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 qword 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, unit_online_gaia,unit_contour ; {$R astap_cursor.res} {FOR CURSORS} {$IFDEF fpc} {$R *.lfm} {$else} {delphi} {$R *.dfm} {$endif} var recent_files : tstringlist; export_index : integer; object_xc,object_yc, object_raM,object_decM,object_hfd : 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} {$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=''; annotation_magn: string='12'; magn_type : string='BP'; const crMyCursor = 5; ctrlbutton: boolean=false; 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} 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; head.mzero:=0;{factor to calculate magnitude from full flux, new file so set to zero} head.mzero_radius:=99;{circle where flux is measured} head.pedestal:=0; {value added during calibration or stacking} 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} site_lat_radians:=999; sqm_value:=''; equinox:=2000; end; head.date_obs:=''; head.date_avg:=''; 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:='CV';//none 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} head.passband_database:='';//used to measure MZERO bayerpat:='';{reset bayer pattern} 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;const memo: tstrings;out head: Theader; out img_loaded2: image_array): boolean;{load a fits or Astro-TIFF 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; tempval, ccd_temperature, jd2,jd_obs, PC1_1,PC1_2, PC2_1,PC2_2 : 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, validate_double_error : integer; ttype,tform,tunit : array of string; tbcol,tform_nr : array of integer; simple,image,bintable,asciitable : boolean; abyte : byte; dummy : dword; 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[21]; r : integer; begin t:=''; r:=I+10;{position 11 equals 10} while ((header[r]<>'/') and (r<=I+30) {pos 31}) do {'/' check is strictly not necessary but safer. Read up to position 31 so one more then fits standard since CFITSIO could write for minus values up to position 31. A violation of FITS standard 4} begin {read 20 characters max, position 11 to 31 in string, position 10 to 30 in pchar} if header[r]<>' ' then t:=t+header[r]; inc(r); end; val(t,result,validate_double_error); 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:=header[i+10]; //This position could be the minus sign of a number -3.000000000000E+001 if result=#39 then result:='';//Ignore the #39 character indication a string 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} memo.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; PC1_1:=0; header_count:=0; bintable:=false; asciitable:=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 memo.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]='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, read for flats} bayerpat:=get_string {BAYERPAT, bayer pattern such as RGGB} else 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 tempval:=validate_double; if tempval>2147483647 then bzero:=-2147483648 else bzero:=round(tempval); {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]='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]='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} begin head.egain:=trim(get_as_string)//Do not crop anymore since it doesn't work for scientific notation, e-/adu gain end 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]='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 begin if length(head.date_obs)=10 then head.date_obs:=head.date_obs+'T'+get_string; end; if ((header[i]='J') and (header[i+1]='D')) then begin if ((header[i+2]=' ') and (header[i+3]=' ') and (header[i+4]=' ')) then //julian day begin if head.date_obs='' then {DATE-OBS overrules any JD value} begin jd2:=validate_double; head.date_obs:=JdToDate(jd2); end; end else if ((header[i+2]='-') and (header[i+3]='A') and (header[i+4]='G')) then //JD_AVG begin if head.date_avg='' then {DATE-AVG overrules any JD value} begin jd2:=validate_double; head.date_avg:=JdToDate(jd2); end; end 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 //date-obs else if ((header[i+5]='A') and (header[i+6]='V')) then head.date_avg:=get_string; //date-avg 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]='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} if ((header[i+1]='M') and (header[i+2]='D')) then begin if 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+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; end;//AMD 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; //A_ if ((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; //AP_ end; //A if (header[i]='B') then {B} begin 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; if 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;//B_ if ((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;//BP_ end;//B 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; 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')) then//CENT begin if ((header[i+4]='A') and (header[i+5]='L') and (header[i+6]='T')) then {CENTALT, SBIG 1.0 standard} centalt:=get_as_string {universal for string and floats} else if ((header[i+4]='A') and (header[i+5]='Z')) then {CENTAZ, SBIG 1.0 standard} centaz:=get_as_string; {universal for string and floats} end;//CENT if ((header[i+1]='N') and (header[i+2]='P') and (header[i+3]='I') and (header[i+4]='X')) then begin if (header[i+5]='1') then x_pixel_offset:=round(validate_double){rotation, read double value} else if (header[i+5]='2') then y_pixel_offset:=round(validate_double);{rotation, read double value} end;//CNPIX end; {C} if ((header[i]='D') and (header[i+1]='E') and (header[i+2]='C') and (header[i+3]=' ')) then {dec} begin tempval:=validate_double*pi/180; if validate_double_error=0 then //not a string value behind keyword DEC begin dec_mount:=tempval; if head.dec0=0 then head.dec0:=tempval; {dec telescope, read double value only if crval is not available} end; end; if header[i]='E' then begin if ((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+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 } end;//E 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 {secpix1/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]='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;//FOC 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]='M') and (header[i+1]='Z') and (header[i+2]='E') and (header[i+3]='R') and (header[i+4]='O')) then begin if (header[i+5]='R') then head.mzero:=validate_double;//ZEROR photometry calibration for restricted aperture if (header[i+5]='A') then head.mzero_radius:=validate_double;//MZEROAPT photometry calibration if (header[i+5]='P') then head.passband_database:=get_string; //MZEROPAS end; //MZERO if header[i]='O' then begin if ((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;//OBS if ((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+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 //OBJCTALT 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} end;//O if (header[i]='P') then begin if ((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+1]='E') and (header[i+2]='D') and (header[i+3]='E') and (header[i+4]='S') and (header[i+5]='T') and (header[i+6]='A') and (header[i+7]='L')) then //full keyword since it is also written by raw to fits as pedestal, pedesta1.... head.pedestal:=abs(validate_double);{read double value. Make value positive to make it compatible with MaximDL files which writes it negative} if ((header[i+1]='L') and (header[i+2]='T')) then begin if ((header[i+3]='R') and (header[i+4]='A')) then //PLTRA 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 else if ((header[i+3]='D') and (header[i+4]='E')) then //PLTDE 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; end;//PLT if ((header[i+1]='P') and (header[i+2]='O')) then //PPO begin if (header[i+3]='3') then ppo_coeff[2]:=validate_double; //DSS polynome if (header[i+3]='6') then ppo_coeff[5]:=validate_double; end;//PPO if (header[i+1]='C') then //PC begin if ((header[i+2]='1') and (header[i+3]='_') and (header[i+4]='1')) then pc1_1:=validate_double; if ((header[i+2]='1') and (header[i+3]='_') and (header[i+4]='2')) then pc1_2:=validate_double; if ((header[i+2]='2') and (header[i+3]='_') and (header[i+4]='1')) then pc2_1:=validate_double; if ((header[i+2]='2') and (header[i+3]='_') and (header[i+4]='2')) then pc2_2:=validate_double; end;//PC end;//P if header[i]='R' then begin if ((header[i+1]='A') and (header[i+2]=' ')) then {ra} begin tempval:=validate_double*pi/180; if validate_double_error=0 then //not a string value behind keyword RA begin ra_mount:=tempval; if head.ra0=0 then head.ra0:=tempval; {ra telescope, read double value only if crval is not available} end; end; if ((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; end;//R if (header[i]='S') then begin if ((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+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, DSS polynome plate fit} end;//S 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; {adjustable keyword} 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]='X' then begin if ((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+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+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} end; if header[i]='Y' then begin if ((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+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+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} end;//Y 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 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 begin //formalism 3 new_to_old_WCS(head);{ convert old WCS to new} end else if ((head.cd1_1=0) and (head.cdelt2<>0)) then {new style missing but valid old style solution} begin if PC1_1<>0 then //formalism 2 begin head.CD1_1:=PC1_1* head.cdelt1; head.CD1_2:=PC1_2* head.cdelt1; head.CD2_1:=PC2_1* head.cdelt2; head.CD2_2:=PC2_2* head.cdelt2; new_to_old_WCS(head);{ convert old WCS to new} end else if head.crota2<999 then {new style missing but valid old style solution} begin //formalism 1 if head.crota1=999 then head.crota1:=head.crota2; {for case head.crota1 is not specified} old_to_new_WCS(head);{ convert old WCS to new} end; 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.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} sip:=(ap_order>0); if sip then mainwindow.Polynomial1.itemindex:=1//switch to sip else if x_coeff[0]<>0 then mainwindow.Polynomial1.itemindex:=2//switch to DSS else mainwindow.Polynomial1.itemindex:=0;//switch to DSS 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.height,head.width); 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,j,i]:=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,j,i]:=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,j,i]:=(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,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; 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:=dword(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 !!} {Dword is required for high values} img_loaded2[k,j,i]:=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,j,i]:=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,j,i]:= img_loaded2[k,j,i]*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} bck.backgr:=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 fnmodulo(x,range: double):double; begin {range should be 2*pi or 24 hours or 0 .. 360} if ((x>=0) and (x<range)) then // avoid division. A very tiny amount faster result:=x else begin result:=x - range*int(x/range);// this is twice a fast as: x mod range if result<0 then result:=result+range;// avoid negative numbers end; end; function duplicate(img:image_array) :image_array;//fastest way to duplicate an image var c,w,h,k,i: integer; begin c:=length(img); h:=length(img[0]); w:=length(img[0,0]); setlength(result,c,h,w); for k:=0 to c-1 do for i:=0 to h-1 do result[k,i]:=copy(img[k,i],0,w); // alternative solution slower. Takes about 75% more time. // result:=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(result,c,h,w);{force a duplication} 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; var {var because it is set at default values} head : theader);{for tiff header in the describtion decoding} var key : string; count1,index : integer; 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; annotated:=false; index:=1; while index<=count1 do {read keys} begin key:=copy(mainwindow.Memo1.Lines[index],1,9); //should in this sequence available. If not fix. 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.naxis3>1)) then if key<>'NAXIS3 =' then begin mainwindow.Memo1.Lines.insert(index,'NAXIS3 = 3 / length of z axis (mostly colors) ');inc(count1); end; 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='PEDESTAL=' then head.pedestal:=round(read_float) 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='ROWORDER=' then roworder:=read_string; if key='XBAYROFF=' then Xbayroff:=round(read_float) else if key='YBAYROFF=' then Ybayroff:=round(read_float) else 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='MZEROR =' then head.mzero:=read_float else if key='MZEROAPT=' then head.mzero_radius:=read_float else if key='MZEROPAS=' then head.passband_database:=read_string else if key='ANNOTATE=' then annotated:=true else if key='TELESCOP=' then telescop:=read_string else if key='INSTRUME=' then instrum:=read_string else if key='CENTALT =' then centalt:=read_string else if key='SITELAT =' then sitelat:=read_string else if key='SITELONG=' then sitelong:=read_string; {adjustable keywords} if key=sqm_key+'=' then sqm_value:=read_string; 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; bck.backgr:=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.height,head.width); 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,i,j]:=fitsbuffer[j]{RGB fits with naxis1=3, treated as 48 bits coded pixels} else if nrbits=16 then {big endian integer} img_loaded2[0,i,j]:=swap(fitsbuffer2[j]) else {PFM 32 bits grayscale} if pfm then begin if range<0 then {little endian floats} img_loaded2[0,i,j]:=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,i,j]:=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,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 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,i,j]:=swap(rgb16dummy[0]);{store in memory array} img_loaded2[1,i,j]:=swap(rgb16dummy[1]);{store in memory array} img_loaded2[2,i,j]:=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,i,j]:=(rgb32dummy[0])*65535/(-range);{store in memory array} img_loaded2[1,i,j]:=(rgb32dummy[1])*65535/(-range);{store in memory array} img_loaded2[2,i,j]:=(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,i,j]:=x_single*65535/(range); x_longword:=swapendian(fitsbuffer4[j*3+1]); img_loaded2[1,i,j]:=x_single*65535/(range); x_longword:=swapendian(fitsbuffer4[j*3+2]); img_loaded2[2,i,j]:=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 ',false ,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; bck.backgr:=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.height,head.width); 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,head.height-1-i,j]:=image.Colors[j,i].red; img_loaded2[1,head.height-1-i,j]:=image.Colors[j,i].green; img_loaded2[2,head.height-1-i,j]:=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,head.height-1-i,j]:=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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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 back : Tbackground); {get background and star level from peek histogram} var i, pixels,max_range,above, fitsX, fitsY,counter,stepsize,width5,height5, iterations : integer; value,sd, sd_old,factor,factor2 : double; begin if calc_hist then get_hist(colour,img);{get histogram of img_loaded and his_total} back.backgr:=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]; back.backgr:=i; end; {check alternative mean value} if his_mean[colour]>1.5*back.backgr {1.5* most common} then begin memo2_message(Filename2+', will use mean value '+inttostr(round(his_mean[colour]))+' as background rather then most common value '+inttostr(round(back.backgr))); back.backgr:=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 noise level} width5:=Length(img[0,0]); {width} height5:=Length(img[0]); {height} stepsize:=round(height5/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} 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,fitsY,fitsX]; if ((value<back.backgr*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-back.backgr)<=3*sd_old)) then {ignore outliers after first run} begin sd:=sd+sqr(value-back.backgr); {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} back.noise_level:= sd; {this noise level could be too high if no flat is applied. So for images where center is brighter then the corners.} {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} back.star_level:=0; back.star_level2:=0; i:=max_range; factor:= 6*strtoint2(stackmenu1.max_stars1.text,500);// Number of pixels to test. This produces about 700 stars at hfd=2.25 factor2:=24*strtoint2(stackmenu1.max_stars1.text,500);// Number of pixels to test. This produces about 700 stars at hfd=4.5. above:=0; while ((back.star_level=0) and (i>back.backgr+1)) do {Assuming stars are dominant. Find star level. Level where factor pixels are above. If there a no stars this should be all pixels with a value 3.0 * sigma (SD noise) above background} begin dec(i); above:=above+histogram[colour,i];//sum of pixels above pixel level i if above>=factor then back.star_level:=i;//level found for stars with HFD=2.25. end; while ((back.star_level2=0) and (i>back.backgr+1)) do {Assuming stars are dominant. Find star level. Level where factor pixels are above. If there a no stars this should be all pixels with a value 3.0 * sigma (SD noise) above background} begin dec(i); above:=above+histogram[colour,i];//sum of pixels above pixel level i if above>=factor2 then back.star_level2:=i;//level found for stars with HFD=4.5. end; //memo2_message('Above count [pixels]'+inttostr(above)); // Clip calculated star level: // 1) above 3.5*noise minimum, but also above background value when there is no noise so minimum is 1 // 2) Below saturated level. So subtract 1 for saturated images. Otherwise no stars are detected} back.star_level:= max(max(3.5*sd,1 {1}) ,back.star_level-back.backgr-1 {2) below saturation}); //star_level is relative to background back.star_level2:=max(max(3.5*sd,1 {1}) ,back.star_level2-back.backgr-1 {2) below saturation}); //star_level is relative to background 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;preserve_comment:boolean;x:double);{update keyword of fits header in memo} var s,aline,buf : string; cnt,line_end,i,count,len : integer; begin //note this method is not used in astap_cli. There is no speed benefit there str(x:20,s); cnt:=pos(inpt,mainwindow.Memo1.text); if cnt>0 then begin //insert; line_end:=posex(LineEnding,mainwindow.Memo1.text,cnt+1);//lines length could be different then 80 due to editing aline:=copy(mainwindow.Memo1.text,cnt,line_End - cnt ); if ((preserve_comment) and (copy(aline,32,1)='/')) then begin delete(aline,11,20); //preserve comment insert(s,aline,11); end else begin delete(aline,11,120); //delete all including above position 80 aline:=aline+s+comment1; //line length correction will be done during saving FITS end; //replace, this is much faster then insert buf:=mainwindow.Memo1.text; for i:=0 to line_end-cnt-1 do begin if i<length(aline) then buf[cnt+i]:=aline[i+1] else buf[cnt+i]:=' '; end; mainwindow.Memo1.text:=buf; exit; 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,buf : string; cnt,line_end,i,count,len : integer; begin str(x:20,s); cnt:=pos(inpt,mainwindow.Memo1.text); if cnt>0 then begin //insert; line_end:=posex(LineEnding,mainwindow.Memo1.text,cnt+1);//lines length could be different then 80 due to editing aline:=copy(mainwindow.Memo1.text,cnt,line_End - cnt ); delete(aline,11,120); //delete all including above position 80 aline:=aline+s+comment1; //line length correction will be done during saving FITS //replace, this is much faster then insert buf:=mainwindow.Memo1.text; for i:=0 to line_end-cnt-1 do begin if i<length(aline) then buf[cnt+i]:=aline[i+1] else buf[cnt+i]:=' '; end; mainwindow.Memo1.text:=buf; exit; 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 history 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: 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_solution(keep_wcs:boolean);//remove all solution key words efficient var cnt,line_end : integer; buf : string; procedure remove(inpt : string); begin cnt:=pos(inpt,buf); if cnt>0 then begin //remove; line_end:=posex(LineEnding,mainwindow.Memo1.text,cnt+1);//lines length could be different then 80 due to editing delete(buf,cnt,line_end-cnt+length(LineEnding));//delete the line end; end; begin buf:=mainwindow.Memo1.text; if keep_wcs=false then begin head.cd1_1:=0;//no WCS remove ('CD1_1 ='); remove ('CD1_2 ='); remove ('CD2_1 ='); remove ('CD2_2 ='); end; A_ORDER:=0;//no SIP remove ('A_ORDER ='); remove ('A_0_0 ='); remove ('A_0_1 ='); remove ('A_0_2 ='); remove ('A_0_3 ='); remove ('A_1_0 ='); remove ('A_1_1 ='); remove ('A_1_2 ='); remove ('A_2_0 ='); remove ('A_2_1 ='); remove ('A_3_0 ='); remove ('B_ORDER ='); remove ('B_0_0 ='); remove ('B_0_1 ='); remove ('B_0_2 ='); remove ('B_0_3 ='); remove ('B_1_0 ='); remove ('B_1_1 ='); remove ('B_1_2 ='); remove ('B_2_0 ='); remove ('B_2_1 ='); remove ('B_3_0 ='); remove ('AP_ORDER='); remove ('AP_0_0 ='); remove ('AP_0_1 ='); remove ('AP_0_2 ='); remove ('AP_0_3 ='); remove ('AP_1_0 ='); remove ('AP_1_1 ='); remove ('AP_1_2 ='); remove ('AP_2_0 ='); remove ('AP_2_1 ='); remove ('AP_3_0 ='); remove ('BP_ORDER='); remove ('BP_0_0 ='); remove ('BP_0_1 ='); remove ('BP_0_2 ='); remove ('BP_0_3 ='); remove ('BP_1_0 ='); remove ('BP_1_1 ='); remove ('BP_1_2 ='); remove ('BP_2_0 ='); remove ('BP_2_1 ='); remove ('BP_3_0 ='); remove ('CROTA1 ='); remove ('CROTA2 ='); mainwindow.Memo1.text:=buf; 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,t:double; begin sincos(dec1,sin_dec1,cos_dec1);{use sincos function for speed} sincos(dec2,sin_dec2,cos_dec2); cos_sep:=min(1.0,sin_dec1*sin_dec2+ cos_dec1*cos_dec2*cos(ra1-ra2));{min function to prevent run time errors for 1.000000000002. For correct compiling use 1.0 instead of 1. See https://forum.lazarus.freepascal.org/index.php/topic,63511.0.html} sep:=arccos(cos_sep); end; function mode(img :image_array;ellipse: boolean; colorm, xmin,xmax,ymin,ymax,max1 {maximum background expected}:integer; out greylevels: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; centerX,centerY,a,b : double; begin height3:=length(img[0]);{height} width3:=length(img[0,0]);{width} max1:=max1-10; //do not measure saturated pixels 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} centerX:=(xmax+xmin)/2; centerY:=(ymax+ymin)/2; a:=(xmax-xmin-1)/2; b:=(ymax-ymin-1)/2; for i:=ymin to ymax do begin for j:=xmin to xmax do begin if ((ellipse=false {use no ellipse}) or (sqr(j-centerX)/sqr(a) +sqr(i-centerY)/sqr(b)<1)) then // standard equation of the ellipse begin val:=round(img[colorM,i,j]);{get one color value} if ((val>=1) and (val<max1)) then {ignore black areas and bright stars} inc(histogram[val],1);{calculate histogram} end; end;{j} end; {i} result:=0; {for case histogram is empthy due to black area} greylevels:=0; value_count:=0; for i := 1 to max1 do {get most common but ignore 0} begin val:=histogram[i]; if val<>0 then inc(greylevels); 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,i,j]);{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:=duplicate(img_loaded);//duplicate image fast mainwindow.Undo1.Enabled:=true; end; end; procedure restore_img; var resized :boolean; old_width2,old_height2 : integer; fitsx,fitsy: integer; begin if mainwindow.Undo1.Enabled=true then begin if img_backup=nil then exit;{for some rare cases} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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:=duplicate(img_backup[index_backup].img);//duplicate image fast use_histogram(img_loaded,true {update}); {plot histogram, set sliders} plot_fits(mainwindow.image1,resized,true);{restore image1} 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 MacOS:'; {$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]+'.'+ #13+#10+ #13+#10+ 'Application path '+application_path; {$ELSE} {delphi} about_message5:=''; {$ENDIF} if ord(database2[0])<>0 then about_message5:=about_message5+ #13+#10+ #13+#10+ 'Active star database:'+copy(database2,1,108)+ {primary star database. Do not display last byte (110) used for record type. Byte 109 is used for maximum magnitude} #13+#10; 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, 2024 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(false); 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,h,w); 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,fitsY,fitsX]:=(img_loaded[k,fitsY*2,fitsX*2]+ img_loaded[k,fitsY*2 +1,fitsX*2]+ img_loaded[k,fitsY*2 ,fitsX*2+1]+ img_loaded[k,fitsY*2 +1,fitsX*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,fitsY,fitsX]:=(img_loaded[k,fitsY*3 ,fitsX*3 ]+ img_loaded[k,fitsY*3 ,fitsX*3+1]+ img_loaded[k,fitsY*3 ,fitsX*3+2]+ img_loaded[k,fitsY*3 +1,fitsX*3 ]+ img_loaded[k,fitsY*3 +1,fitsX*3+1]+ img_loaded[k,fitsY*3 +1,fitsX*3+2]+ img_loaded[k,fitsY*3 +2,fitsX*3 ]+ img_loaded[k,fitsY*3 +2,fitsX*3+1]+ img_loaded[k,fitsY*3 +2,fitsX*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,fitsY,fitsX]:=(img_loaded[k,fitsY*4 ,fitsX*4 ]+ img_loaded[k,fitsY*4 ,fitsX*4+1]+ img_loaded[k,fitsY*4 ,fitsX*4+2]+ img_loaded[k,fitsY*4 ,fitsX*4+3]+ img_loaded[k,fitsY*4 +1,fitsX*4 ]+ img_loaded[k,fitsY*4 +1,fitsX*4+1]+ img_loaded[k,fitsY*4 +1,fitsX*4+2]+ img_loaded[k,fitsY*4 +1,fitsX*4+3]+ img_loaded[k,fitsY*4 +2,fitsX*4 ]+ img_loaded[k,fitsY*4 +2,fitsX*4+1]+ img_loaded[k,fitsY*4 +2,fitsX*4+2]+ img_loaded[k,fitsY*4 +2,fitsX*4+3]+ img_loaded[k,fitsY*4 +3,fitsX*4 ]+ img_loaded[k,fitsY*4 +3,fitsX*4+1]+ img_loaded[k,fitsY*4 +3,fitsX*4+2]+ img_loaded[k,fitsY*4 +3,fitsX*4+3])/16; end; end; img_loaded:=img_temp2; head.width:=w; head.height:=h; img_temp2:=nil; mainwindow.Memo1.Lines.BeginUpdate; 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 ',false ,head.crpix1);end; if head.crpix2<>0 then begin head.crpix2:=head.crpix2/binfactor; update_float ('CRPIX2 =',' / Y of reference pixel ',false ,head.crpix2);end; if head.cdelt1<>0 then begin head.cdelt1:=head.cdelt1*binfactor; update_float ('CDELT1 =',' / X pixel size (deg) ',false ,head.cdelt1);end; if head.cdelt2<>0 then begin head.cdelt2:=head.cdelt2*binfactor; update_float ('CDELT2 =',' / Y pixel size (deg) ',false ,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) ',false ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,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) ' ,false,head.XPIXSZ); update_float('YPIXSZ =',' / Pixel height in microns (after binning) ' ,false,head.YPIXSZ); update_float('PIXSIZE1=',' / Pixel width in microns (after binning) ' ,false,head.XPIXSZ); update_float('PIXSIZE2=',' / Pixel height in microns (after binning) ' ,false,head.YPIXSZ); end; fact:=inttostr(binfactor); fact:=fact+'x'+fact; add_text ('HISTORY ','BIN'+fact+' version of '+filename2); mainwindow.Memo1.Lines.EndUpdate; 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 for naxis1,...},0,mainwindow.memo1.lines,head,img_loaded)=false then exit; bin_X2X3X4(binfactor);{bin img_loaded 2x or 3x} remove_key('BAYERPAT=',false{all});//do not allow debayer anymore 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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),' Binning');{show progress} 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} progress_indicator(-100,'');{progresss done} 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; img_temp : image_array; begin if head.naxis=0 then exit; if ((abs(stopX-startX)>2)and (abs(stopY-starty)>2)) then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,stopY-startY,stopX-startX); 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,fitsY-startY,fitsX-startX]:=img_loaded[k,fitsY,fitsX];{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,fitsY,fitsX]:=img_temp[k,fitsY-startY,fitsX-startX];{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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key load_hyperleda; { Load the database once. If loaded no action} plot_deepsky(false);{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 : 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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 if sqr(fitsX-center_X)/sqr(a) +sqr(fitsY-center_Y)/sqr(b)<1 then // standard equation of the ellipse begin val:=(img_loaded[0,fitsY,fitsX]+img_loaded[1,fitsY,fitsX]+img_loaded[2,fitsY,fitsX])/3; img_loaded[0,fitsY,fitsX]:=val; img_loaded[1,fitsY,fitsX]:=val; img_loaded[2,fitsY,fitsX]:=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(head: theader;ra,dec: double; out fitsX,fitsY: double);{ra,dec to fitsX,fitsY} var SIN_dec,COS_dec, SIN_dec_ref,COS_dec_ref,det,SIN_delta_ra,COS_delta_ra, H, xi,eta,u0,v0 : double; begin {5. Conversion (RA,DEC) -> x,y image} sincos(dec,SIN_dec,COS_dec);{sincos is faster then separate sin and cos functions} sincos(head.dec0,SIN_dec_ref,COS_dec_ref);{} sincos(ra-head.ra0,SIN_delta_ra,COS_delta_ra); H := SIN_dec*sin_dec_ref + COS_dec*COS_dec_ref*COS_delta_ra; xi := (COS_dec*SIN_delta_ra / H)*180/pi; eta:= ((SIN_dec*COS_dec_ref - COS_dec*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*eta - head.cd2_2*xi) / det; v0:= + (head.cd1_1*eta - head.cd2_1*xi) / 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; {procedure pixel_to_celestial_astap(head : theader; fitsx,fitsy : double; out ra,dec : double); var u2,v2,xi,eta,delta, gamma, sindec0,cosdec0 : double; begin u2:=fitsx-head.crpix1; v2:=fitsy-head.crpix2; xi :=(head.cd1_1*(u2)+head.cd1_2*(v2))*pi/180; eta:=(head.cd2_1*(u2)+head.cd2_2*(v2))*pi/180; sincos(head.dec0,sindec0,cosdec0); delta:=cosdec0-eta*sindec0; ra:=head.ra0+arctan2(xi,delta); //atan2 is required for images containing celestial pole dec:=arctan((sindec0+eta*cosdec0)/sqrt(sqr(xi)+sqr(delta))); if ra<0 then ra:=ra+pi*2; if ra>pi*2 then ra:=ra-pi*2; end; } {procedure pixel_to_celestial_siril(head : theader; fitsx,fitsy : double; out ra,dec : double); var u2,v2,xi,eta,delta,gamma,delta_ra,sindec0,cosdec0 : double; begin u2:=fitsx-head.crpix1; v2:=fitsy-head.crpix2; xi :=(head.cd1_1*(u2)+head.cd1_2*(v2))*pi/180; eta:=(head.cd2_1*(u2)+head.cd2_2*(v2))*pi/180; sincos(head.dec0,sindec0,cosdec0); ra:=head.ra0 + arctan2(xi,cosdec0-eta*sindec0); dec:=arcSIN((sindec0 + eta * cosdec0) / SQRT( 1 + sqr(xi) + sqr(eta))); if ra<0 then ra:=ra+pi*2; if ra>pi*2 then ra:=ra-pi*2; end; } {procedure pixel_to_celestial_tatum(head : theader; fitsx,fitsy : double; out ra,dec : double); var u2,v2,xi,eta,delta_ra, gamma,sindec0,cosdec0 : double; begin u2:=fitsx-head.crpix1; v2:=fitsy-head.crpix2; xi :=(head.cd1_1*(u2)+head.cd1_2*(v2))*pi/180; eta:=(head.cd2_1*(u2)+head.cd2_2*(v2))*pi/180; sincos(head.dec0,sindec0,cosdec0); delta_ra:= arctan2(xi,COSdec0-eta*SINdec0); ra:=head.ra0+delta_ra; dec:=arctan2((eta*cosdec0+cosdec0)*SIN( delta_ra),xi); if ra<0 then ra:=ra+pi*2; if ra>pi*2 then ra:=ra-pi*2; end; } procedure pixel_to_celestial(head : theader; fitsx,fitsy : double; formalism : integer; out ra,dec : double) {fitsX, Y to ra,dec}; var fits_unsampledX, fits_unsampledY, sindec0,cosdec0 :double; u,v,u2,v2 : double; xi,eta,delta,gamma : double; // ra1,dec1,ra2,dec2,ra3,dec3 : double; // i : integer; begin RA:=0;DEC:=0;{for case wrong index or head.cd1_1=0} {DSS polynom solution} if formalism=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, ra, dec ); end else if head.cd1_1<>0 then begin //wcs if ((formalism=1) and (a_order>=2)) then {SIP, Simple Imaging Polynomial} begin //apply SIP correction to pixels. 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} end else begin u2:=fitsx-head.crpix1; v2:=fitsy-head.crpix2; end; {mainwindow.Polynomial1.itemindex=0} //for formalism 0 and 1 xi :=(head.cd1_1*(u2)+head.cd1_2*(v2))*pi/180; eta:=(head.cd2_1*(u2)+head.cd2_2*(v2))*pi/180; sincos(head.dec0,sindec0,cosdec0); delta:=cosdec0-eta*sindec0; ra:=head.ra0+arctan2(xi,delta); {atan2 is required for images containing celestial pole} dec:=arctan((sindec0+eta*cosdec0)/sqrt(sqr(xi)+sqr(delta))); if ra<0 then ra:=ra+pi*2; if ra>pi*2 then ra:=ra-pi*2; end; //WCS { memo2_message('start'); for i:=0 to 180000000 do pixel_to_celestial_astap(head,fitsx,fitsy, ra1,dec1 ); memo2_message('existing ready'); for i:=0 to 180000000 do pixel_to_celestial_astap(head,fitsx,fitsy, ra1,dec1 ); memo2_message('existing atan2 ready'); for i:=0 to 180000000 do pixel_to_celestial_siril(head,fitsx,fitsy, ra2,dec2 ); memo2_message('Siril method ready '); for i:=0 to 180000000 do pixel_to_celestial_tatum(head,fitsx,fitsy, ra3,dec3 ); memo2_message('Tatum method ready '); beep;} 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 pixel_to_celestial(head,(head.width+1)/2,(head.height+1)/2,mainwindow.Polynomial1.itemindex,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(head, 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} var dra,ddec, cdelt1_a, det,x,y :double; flipV, flipH,xpos,ypos,leng : integer; begin with mainwindow.image_north_arrow1 do begin {clear} canvas.brush.color:=clmenu; Canvas.FillRect(rect(0,0,width,height)); xpos:=width div 2;{position arrow} ypos:=height div 2; leng:=xpos-1;{half of length} if ((head.naxis=0) or (head.cd1_1=0)) then {No solution, remove rotation and flipped indication and exit} begin mainwindow.rotation1.caption:='';// clear rotation indication mainwindow.flip_indication1.Visible:=false;// remove any flipped indication exit; end; mainwindow.rotation1.caption:=floattostrf(head.crota2, FFfixed, 0, 2)+'°';{show rotation} mainwindow.flip_indication1.Visible:=head.cd1_1*head.cd2_2 - head.cd1_2*head.cd2_1 >0;// flipped image? 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-8); 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-8); 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-8*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-8*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(head, 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-16*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-16*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_star_profile(cX,cY : integer); const resolution=6; rs=68 div 2;//half size image_north qrs=rs div resolution; var i, j,distance,hh,diam1,diam2 : integer; val,valmax,valmin : double; profile: array[0..1,-rs..rs] of double; begin with mainwindow.image_north_arrow1 do begin {clear} canvas.brush.color:=clmenu; Canvas.FillRect(rect(0,0,width,height)); Canvas.Pen.Color := clred; Canvas.Pen.style := psSolid; canvas.pen.mode:=pmmask; // Build profile valmax:=0; valmin:=65535; for i:=-rs to rs do begin profile[0,i]:=0;{clear profile} profile[1,i]:=0;{clear profile} end; for i:=-qrs to qrs do begin for j:=-qrs to qrs do begin distance:=round(resolution*sqrt(i*i + j*j)); {distance in resolution 1/6 pixel} if distance<=rs then {build histogram for circel with radius qrs} begin if ((i<0) or ((i=0) and (j<0)) ) then distance:=-distance;//split star in two equal areas. val:=img_loaded[0,cY+j,cX+i]; profile[0,distance]:=profile[0,distance]+val;{sum flux at distance} profile[1,distance]:=profile[1,distance]+1;{calculate the number of counts} if val>valmax then valmax:=val;{record the peak value of the star} if val<valmin then valmin:=val;{record the min value of the star} end; end; end; if valmax>valmin then //prevent runtime errors for i:=-rs to rs do begin if profile[1,i]<>0 then begin hh:=height-round((height/(valmax-valmin))*(-valmin+profile[0,i]/profile[1,i]) );//height if i=-rs then moveToex(Canvas.handle,(width div 2)+i,hh,nil) else lineTo(Canvas.handle,(width div 2)+i,hh); end; end; diam1:=round((width/2 + (resolution/4) * object_hfd*strtofloat2(stackmenu1.flux_aperture1.text)));//in 1/6 pixel resolution diam2:=round((width/2 - (resolution/4) * object_hfd*strtofloat2(stackmenu1.flux_aperture1.text))); if diam2>=0 then //show aperture begin Canvas.Pen.style := psdot; Canvas.Pen.Color := clGreen; moveToex(Canvas.handle,diam1,0,nil); lineto(Canvas.handle,diam1,2*rs); moveToex(Canvas.handle,diam2,0,nil); lineto(Canvas.handle,diam2,2*rs); Canvas.Pen.style := psSolid; end; canvas.pen.mode:=pmcopy; //back to default end; end; procedure plot_text; var fontsize : double; letter_height,letter_width: integer; 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); letter_height:=mainwindow.image1.Canvas.textheight('M'); letter_width:=mainwindow.image1.Canvas.textwidth('M'); 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.3*letter_width),head.height-2*letter_height,'Position[α,δ]: '+mainwindow.ra1.text+' '+mainwindow.dec1.text);{} date_to_jd(head.date_obs,head.date_avg, head.exposure);{convert jd_start and jd_mid} mainwindow.image1.Canvas.textout(round(0.3*letter_width),head.height-letter_height,'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(0.3*letter_width) -mainwindow.image1.canvas.textwidth(freetext),head.height-letter_height,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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key {$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(head, 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(head, 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(radec: boolean); //plot ra,dec or az,alt grid var fitsX,fitsY,step,stepA,stepB,stepRA,i,j,centra,centdec,range,ra,dcr,ra0,dec0,r1,r2,d1,d2, fX1,fY1,fX2,fY2,angle,az,alt,sep: 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)) then exit; if ((radec) and (mainwindow.grid_ra_dec1.checked=false)) then exit; if ((radec=false) and (mainwindow.grid_az_alt1.checked=false)) then exit; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key {$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)); if radec then mainwindow.image1.Canvas.Pen.color:= $909000 else mainwindow.image1.Canvas.Pen.color:= $009090; mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.font.color:= $909090; range:=head.cdelt2*sqrt(sqr(head.width/2)+sqr(head.height/2));{range in degrees, FROM CENTER} dec0:=head.dec0; ra0:=head.ra0; if radec=false then begin calculate_az_alt_basic(ra0,dec0,{out} az,alt);{calculate azimuth, altitude and initialize wtime2actual/sidereal time} {angle} az_ra(az-0.01*pi/180,alt,site_lat_radians,0,wtime2actual,{out} r1,d1);{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]} celestial_to_pixel(head, r1,d1, fX1,fY1);{ra,dec to fitsX,fitsY} az_ra(az+0.01*pi/180,alt,site_lat_radians,0,wtime2actual,{out} r2,d2);{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]} celestial_to_pixel(head, r2,d2, fX2,fY2);{ra,dec to fitsX,fitsY} angle:=arctan2(fy2-fy1,fx2-fx1)*180/pi; mainwindow.image1.Canvas.font.size:=14; mainwindow.image1.Canvas.textout(10,head.height-25,'Angle: '+floattostrF(angle,FFfixed,0,2)+ '° ('+head.date_obs+', '+sitelong+', '+sitelat+')'); ra0:=az;//make az,alt grid dec0:=alt; end; mainwindow.image1.Canvas.font.size:=8; {calculate DEC step size} if range>20 then begin step:=10;{step DEC 10:00} end else if range>10 then begin step:=5;{step DEC 05: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; sep:=pi/2 - abs(dec0);//approximation for closed distance to celestial pole either north south. Ignore sphere rounding if ((radec) and (sep<range*pi/180)) then //celestial pole in the image begin stepRA:=30; end else begin {calculate RA step size} stepA:=min(45,step/(cos(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<=stepA) or (k>=length(ra_values)));{repeat until comparible value is found in ra_values} end; {round image centers} centra:=stepRA*round(ra0*180/(pi*stepRA)); {rounded image centers} centdec:=step*round(dec0*180/(pi*step)); {plot DEC grid} i:=centRA-6*stepRA; repeat{dec lines} j:=max(centDEC-6*step,-90); repeat ra:=i*pi/180; dcr:=j*pi/180; if radec=false then begin az_ra(ra,dcr,site_lat_radians,0,wtime2actual,{out} ra,dcr);{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]} precession3(jd_mid,2451545 {J2000},ra,dcr); {from Jnow mean to J2000, precession only. without refraction} end; celestial_to_pixel(head, ra,dcr, 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); ra:=i*pi/180; dcr:=(j+step)*pi/180; if radec=false then begin az_ra(ra,dcr,site_lat_radians,0,wtime2actual,{out} ra,dcr);{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]} precession3(jd_mid,2451545 {J2000},ra,dcr); {from Jnow mean to J2000, precession only. without refraction} end; celestial_to_pixel(head, ra,dcr, 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 if radec 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} end else ra_text:=inttostr(round(fnmodulo(i,360)));//az, alt grid 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 ra:=i*pi/180; dcr:=j*pi/180; if radec=false then begin az_ra(ra,dcr,site_lat_radians,0,wtime2actual,{out} ra,dcr);{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]} precession3(jd_mid,2451545 {J2000},ra,dcr); {from Jnow mean to J2000, precession only. without refraction} end; celestial_to_pixel(head, ra,dcr, 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); ra:=(i+step)*pi/180; dcr:=j*pi/180; if radec=false then begin az_ra(ra,dcr,site_lat_radians,0,wtime2actual,{out} ra,dcr);{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]} precession3(jd_mid,2451545 {J2000},ra,dcr); {from Jnow mean to J2000, precession only. without refraction} end; celestial_to_pixel(head, ra,dcr, 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)) {DSS polynomial selected but no data} ) then mainwindow.Polynomial1.color:=clred else mainwindow.Polynomial1.color:=cldefault; sip:=((ap_order>0) 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; 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; // shape:=stellipse; 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,copy_paste_shape {rectangle or ellipse},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,band,flux_counter,greylevels,greylevels2 : integer; value,stepsize,median_position, most_common,mc_1,mc_2,mc_3,mc_4, sd,mean,median,bg_median,minimum, maximum,max_counter,saturated,mad,minstep,delta,range,total_flux,adu_e,center_x,center_y,a,b,hotpixel_adu,hotpixel_perc : double; info_message,shapeform,shapeform2 : string; median_array : array of double; full_image : boolean; const median_max_size=5000; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key if ((abs(stopX-startX)>1)and (abs(stopY-starty)>1))=false then {do statistics on whole image} begin startx:=0;stopX:=head.width-1; starty:=0;stopY:=head.height-1; full_image:=true end else full_image:=false; 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} measure_hotpixels(startX+1 ,startY+1, stopX-1,stopY-1{within rectangle},col,sd,mean,img_loaded,{out}hotpixel_perc,hotpixel_adu);{calculate the hotpixel_adu ratio and average value} most_common:=mode(img_loaded,CtrlButton {ellipse},col,startx,stopX,starty,stopY,65535,greylevels); {median sampling and min , max} max_counter:=1; median:=0; saturated:=0; minimum:=999999999; maximum:=0; counter:=0; flux_counter:=0; counter_median:=0; total_flux:=0; center_x:=(startx+stopX-1)/2; center_y:=(startY+stopY-1)/2; a:=(stopX-1-startx)/2; b:=(stopY-1-startY)/2; for fitsY:=startY+1 to stopY-1 do {within rectangle. StartX,StopX are in 0...width-1,0..height-1 range} for fitsX:=startX+1 to stopX-1 do begin if ((CtrlButton=false {use no ellipse}) or (sqr(fitsX-center_X)/sqr(a) +sqr(fitsY-center_Y)/sqr(b)<1)) then // standard equation of the ellipse begin value:=img_loaded[col,fitsY,fitsX]; median_position:=flux_counter*stepsize; total_flux:=total_flux+value; {total flux} inc(flux_counter); if trunc(median_position)>=counter_median then {pixels will be skippped. Limit sampling to median_max_size} begin median_array[counter_median]:=value; {fill array with sampling data. Smedian will be applied later} inc(counter_median); end; if value=maximum then max_counter:=max_counter+1; {counter at max. Not an exact counter since maximum is adjusted} if value>maximum then begin maximum:=value; //max max_counter:=1;//reset end; 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; end;{filter outliers} median:=smedian(median_array,counter_median); for i:=0 to counter_median-1 do median_array[i]:=abs(median_array[i] - median);{fill median_array with offsets} mad:=smedian(median_array,counter_median); //median absolute deviation (MAD) {measure the median of the suroundings} median_array:=nil;{free mem} setlength(median_array,(5+5+1+stopY-startY)*5*2+(5+5+1+stopX-startX)*5*2);//surface used for background. Overlap not counted for simplicity counter:=0; if full_image then band:=+5 //measure inside box so at the boundaries of the image else band:=0;//measure only outside box for fitsY:=startY+ 1-5 to stopY-1+5 do {calculate mean at square boundaries of detection box. StartX,StopX are in 0...width-1,0..height-1 range} for fitsX:=startX+1-5 to stopX-1+5 do begin if ( (fitsX<startX+band) or (fitsX>stopX-band) or (fitsY<startY+band) or (fitsY>stopY-band) ) then {measure only outside the box unless band>0 for full image} if ( (fitsX>=0) and (fitsX<head.width) and (fitsY>=0) and (fitsY<head.height) ) then {do not measure outside the image} begin if counter>=length(median_array) then SetLength(median_array,counter+5000);{increase length} median_array[counter]:=img_loaded[0,fitsY,fitsX]; inc(counter); end; end; if counter>0 then begin bg_median:=Smedian(median_array,counter); total_flux:=total_flux-bg_median*flux_counter; {total flux above background} end else begin bg_median:=9999999;{something went wrong} total_flux:=0; end; 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,ffFixed, 0, 2)+' (sigma-clip iterations='+inttostr(iterations)+')'+#10+ {mean} 'x̃ : '+floattostrf(median,ffFixed, 0, 2)+#10+ {median} 'Mo : '+floattostrf(most_common,ffgeneral, 5, 5)+#10+ 'σ : '+noise_to_electrons(adu_e,sd)+' (sigma-clip iterations='+inttostr(iterations)+')'+#10+ {standard deviation} 'σ_2: '+noise_to_electrons(adu_e,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, 4, 2)+ ' (Counts '+inttostr(flux_counter)+ ', Average '+inttostr(round(total_flux/flux_counter))+'/px)'+#10+ 'BG : '+floattostrf(bg_median,ffgeneral, 5, 5)+#10+ {median} 'Hot pixels: '+floattostrf(100*hotpixel_perc,FFfixed, 0, 1)+'%'+#10+ 'Hot pixels RMS: '+noise_to_electrons(adu_e,hotpixel_adu)+#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,false{ellipse shape},0, 0{x1}, 50{x2}, 0{y1}, 50{y2},32000,greylevels2);{for this area get most common value equals peak in histogram} mc_2:=mode(img_loaded,false{ellipse shape},0, 0{x1}, 50{x2},head.height-1-50{y1},head.height-1{y2},32000,greylevels2); mc_3:=mode(img_loaded,false{ellipse shape},0,head.width-1-50{x1},head.width-1{x2},head.height-1-50{y1},head.height-1{y2},32000,greylevels2); mc_4:=mode(img_loaded,false{ellipse shape},0,head.width-1-50{x1},head.width-1{x2}, 0{y1},50 {y2},32000,greylevels2); 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; if range>0 then begin if max_counter>50 then info_message:=info_message+#10+#10+'Bit depth data: '+inttostr(round(ln(range/minstep)/ln(2))){bit range, calculate 2log} else info_message:=info_message+#10+#10+'Bit depth data: ?? Image is not saturated.'; end; if ((nrbits=16) or (nrbits=8)) then info_message:=info_message+#10+'Greyscale levels: '+ inttostr(greylevels); if head.Xbinning<>1 then info_message:=info_message+#10+'Binning: '+ floattostrf(head.Xbinning,ffgeneral,0,0)+'x'+floattostrf(head.Ybinning,ffgeneral,0,0); if CTRLbutton=false then begin shapeform:='Rectangle: ';shapeform2:='rectangle'; end else begin shapeform:='Ellipse: '; shapeform2:='ellipse'; end; info_message:=info_message+#10+shapeform+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 inside shape above BG | '+ 'BG = median background outside the shape | '+ 'Hot pixels = percentage of pixels with a value above 3 sigma Gaussian noise | '+ 'Hot pixels RMS = the root mean square value of the hotpixels | '+ '≥64E3 = number of values equal or above 64000'; case QuestionDlg (pchar('Statistics within '+shapeform2+' '+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.writepositionshort1.enabled:=yes;{enable popup menu} mainwindow.Copyposition1.enabled:=yes;{enable popup menu} mainwindow.Copypositionindeg1.enabled:=yes;{enable popup menu} mainwindow.export_star_info1.enabled:=yes;{enable popup menu} mainwindow.online_query1.enabled:=yes;{enable popup menu} mainwindow.Polynomial1Change(nil);{update color for SIP} stackmenu1.focallength1Exit(nil); {update output calculator after a SOLVE} 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 after an image LOAD} 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key {solve internal} mainwindow.caption:='Solving.......'; save1.Enabled:=solve_image(img_loaded,head,false {get hist, is already available},false {check filter});{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(true);//ra,dec plot_grid(false);//az,alt 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 result:=''; if load_fits(filename7,true {light},true,true {update memo},0,mainwindow.memo1.lines,head,img_loaded)=false then begin beep; 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,h,w); 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,fitsY*2+yp-1,fitsx*2+xp-1]; if get_green then val:=(val+img_loaded[0,fitsY*2+yp2-1,fitsx*2+xp2-1])/2; {add second green pixel} img_temp11[0,fitsY,fitsX]:=val; end; head.width:=w; head.height:=h; mainwindow.Memo1.Lines.BeginUpdate; 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 ',false ,head.crpix1);end; if head.crpix2<>0 then begin head.crpix2:=head.crpix2*ratio; update_float ('CRPIX2 =',' / Y of reference pixel ',false ,head.crpix2);end; if head.cdelt1<>0 then begin head.cdelt1:=head.cdelt1/ratio; update_float ('CDELT1 =',' / X pixel size (deg) ',false ,head.cdelt1);end; if head.cdelt2<>0 then begin head.cdelt2:=head.cdelt2/ratio; update_float ('CDELT2 =',' / Y pixel size (deg) ',false ,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) ',false ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_2); end; head.XBINNING:=head.XBINNING/ratio; head.YBINNING:=head.YBINNING/ratio; update_float ('XBINNING=',' / Binning factor in width ',false ,head.XBINNING); update_float ('YBINNING=',' / Binning factor in height ',false ,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) ',false ,head.XPIXSZ);{note: comment will be never used since it is an existing keyword} update_float('YPIXSZ =',' / Pixel height in microns (after binning) ',false ,head.YPIXSZ); update_float('PIXSIZE1=',' / Pixel width in microns (after binning) ',false ,head.XPIXSZ); update_float('PIXSIZE2=',' / Pixel height in microns (after binning) ',false ,head.YPIXSZ); end; add_text ('HISTORY ','One raw colour extracted.'); update_text ('FILTER =',copy(#39+filtern+#39+' ',1,21)+'/ Filter name'); mainwindow.Memo1.Lines.EndUpdate; 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 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 := dialog_filter_fits_tif; // fits_file:=true; esc_pressed:=false; if OpenDialog1.Execute then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,mainwindow.memo1.lines,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 Image1MouseMove(Sender,Shift, X-image1.Left, Y-image1.top);// transfer mouse move to image1 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,greylevels : 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,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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,false{ellipse shape},k,startx-bsize,startx+bsize,starty-bsize,starty+bsize,32000,greylevels);{for this area get most common value equals peak in histogram} mode_left_top:= mode(img_loaded,false{ellipse shape},k,startx-bsize,startx+bsize,stopY-bsize,stopY+bsize,32000,greylevels);{for this area get most common value equals peak in histogram} mode_right_bottom:=mode(img_loaded,false{ellipse shape},k,stopX-bsize,stopX+bsize,starty-bsize,starty+bsize,32000,greylevels);{for this area get most common value equals peak in histogram} mode_right_top:= mode(img_loaded,false{ellipse shape},k,stopX-bsize,stopX+bsize,stopY-bsize,stopY+bsize,32000,greylevels);{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 if sqr(fitsX-center_X)/sqr(a) +sqr(fitsY-center_Y)/sqr(b)<1 then // standard equation of 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);{expected value based on the four corners measurements} 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,fitsY,fitsX]:=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;//always with dot decimal seperator. Float to string with 6 decimals begin str(x:0:6,result); end; function floattostr4(x:double):string;//always with dot decimal seperator begin str(x:0:4,result); end; function floattostr2(x:double):string;//always with dot decimal seperator begin str(x:0:2,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;default:integer):integer; {str to integer, fault tolerant} var error1 : integer; value : double; begin val(s,value,error1); if error1<>0 then result:=default 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 string. 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)+copy(' ',1,length(sep))+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 string. 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)+copy(' ',1,length(sep))+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)+copy(' ',1,length(sep))+leadingzero(s)+'.'+ds2; end; procedure old_to_new_WCS(var head:theader);{ convert old WCS to new, revision 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 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} var crota_1, crota_2 : double; 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 crota_1:=arctan2(-head.cd2_1,-head.cd1_1) else if head.cd2_1<0 then crota_1:=arctan2(+head.cd2_1,+head.cd1_1) else crota_1:=0; if head.cd1_2>0 then crota_2:=arctan2(-head.cd1_2,head.cd2_2) //arctan2 returns arctangent of (y/x) else if head.cd1_2<0 then crota_2:=arctan2(head.cd1_2,-head.cd2_2) //arctan2 returns arctangent of (y/x) else crota_2:=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(crota_1);//Note crota_1, 2 are in radians head.cdelt2:=+head.cd2_2/cos(crota_2); end else begin head.cdelt1:=+head.cd2_1/sin(crota_1);//Note crota_1, 2 are in radians head.cdelt2:=-head.cd1_2/sin(crota_2); end; head.crota1:=crota_1*180/pi;//Note crota1, 2 are now in degrees head.crota2:=crota_2*180/pi; //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.height,head.width);{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,y,x]:= (img[0,y-1,x ] + img[0 ,y+1,x])/2; {red neighbor pixels }; img_temp2[1,y,x]:= (img[0,y ,x ] ); img_temp2[2,y,x]:= (img[0,y ,x-1 ] + img[0,y,x+1 ])/2; {blue neighbor pixels }end else if green_even then begin img_temp2[0,y,x]:= (img[0,y ,x-1] + img[0,y,x+1 ])/2; {red neighbor pixels }; img_temp2[1,y,x]:= (img[0,y ,x ] ); img_temp2[2,y,x]:= (img[0,y-1,x ] + img[0,y+1,x ])/2; {blue neighbor pixels }end else if red then begin img_temp2[0,y,x]:= (img[0,y ,x ]); img_temp2[1,y,x]:= (img[0,y ,x-1 ] + img[0,y,x+1 ] + img[0,y-1,x ]+ img[0,y+1,x])/4;{green neighbours} img_temp2[2,y,x]:= (img[0,y-1,x-1] + img[0,y+1,x-1] + img[0,y-1,x+1]+ img[0,y+1,x+1])/4 ; end {blue neighbor pixels } else if blue then begin img_temp2[0,y,x]:= (img[0,y-1,x-1] + img[0,y+1,x-1]+ img[0,y-1,x+1]+ img[0,y+1,x+1])/4; img_temp2[1,y,x]:= (img[0,y ,x-1] + img[0,y ,x+1]+ img[0,y-1,x ]+ img[0,y+1,x])/4; img_temp2[2,y,x]:= (img[0,y ,x ] ); 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.height,head.width);{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,y+1,x ]; {near red pixel}; img_temp2[1,y,x]:= img[0,y ,x ] ; blue := img[0,y ,x+1 ]; {near blue pixel} end else if ((xpos=3) and (ypos=1)) then {green}begin red := img[0,y+1,x ]; {near red pixel}; img_temp2[1,y,x]:= img[0,y ,x ] ; blue := img[0,y, x-1]; {near blue pixel} end else if ((xpos=2) and (ypos=2)) then {green}begin red := img[0,y,x+1 ]; {near red pixel}; img_temp2[1,y,x]:= img[0,y,x ] ; blue:= img[0,y+1,x ]; {near blue pixel} end else if ((xpos=1) and (ypos=3)) then {green}begin red := img[0,y-1,x ]; {near red pixel}; img_temp2[1,y,x]:= img[0,y, x ] ; blue:= img[0,y, x+1 ]; {near blue pixel} end else if ((xpos=3) and (ypos=3)) then {green}begin red := img[0,y-1,x ]; {near red pixel}; img_temp2[1,y,x]:= img[0,y ,x ] ; blue := img[0,y ,x-1]; {near blue pixel} end else if ((xpos=2) and (ypos=1)) then {blue}begin red := img[0,y-1,x ] ; {near red pixel}; img_temp2[1,y,x]:= img[0,y ,x+1]; {near green pixel}; blue := img[0,y ,x ]; end else if ((xpos=2) and (ypos=3)) then {blue}begin red := img[0,y+1,x ]; {near red pixel}; img_temp2[1,y,x]:= img[0,y ,x+1]; {near green pixel}; blue := img[0,y ,x ]; end else if ((xpos=1) and (ypos=2)) then {red}begin red := img[0,y,x ]; img_temp2[1,y,x]:= img[0,y,x+1 ];{near green pixel(s)}; blue := img[0,y,x-1 ]; {near blue pixel(s)} end else if ((xpos=3) and (ypos=2)) then {red}begin red := img[0,y ,x ]; img_temp2[1,y,x]:= img[0,y+1,x ]; {near green pixel(s)}; blue := img[0,y ,x+1]; {near blue pixel(s)} end; {fix red and green swap} if ((xpos6<=3) and (ypos6<=3)) then begin img_temp2[0,y,x]:=red; img_temp2[2,y,x]:=blue;end else if ((xpos6> 3) and (ypos6<=3)) then begin img_temp2[0,y,x]:=blue; img_temp2[2,y,x]:=red;end else if ((xpos6<=3) and (ypos6> 3)) then begin img_temp2[0,y,x]:=blue; img_temp2[2,y,x]:=red;end else if ((xpos6> 3) and (ypos6> 3)) then begin img_temp2[0,y,x]:=red; img_temp2[2,y,x]:=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.height,head.width);{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,y,x]:=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,y,x]; if ((green_odd) or (green_even)) then begin value:=value/2; img_temp2[1,y ,x] :=img_temp2[1,y ,x]+value; img_temp2[1,y+1,x] :=img_temp2[1,y+1,x]+value; img_temp2[1,y ,x+1]:=img_temp2[1,y ,x+1]+value; img_temp2[1,y+1,x+1]:=img_temp2[1,y+1,x+1]+value; end else if red then begin img_temp2[0,y ,x]:=value; img_temp2[0,y ,x+1]:=value; img_temp2[0,y+1,x]:=value; img_temp2[0,y+1,x+1]:=value; end else if blue then begin img_temp2[2,y ,x]:=value; img_temp2[2,y ,x+1]:=value; img_temp2[2,y+1,x]:=value; img_temp2[2,y+1,x+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.height,head.width);{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,y,x]:=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, y, x ]; if green_even then begin value:=value/2; img_temp2[1,y ,x ]:=img_temp2[1,y,x]+value; img_temp2[1,y ,x-1]:=img_temp2[1,y,x-1]+value; img_temp2[1,y-1,x ]:=img_temp2[1,y-1,x]+value; img_temp2[1,y-1,x-1]:=img_temp2[1,y-1,x-1]+value; end else if green_odd then begin value:=value/2; img_temp2[1,y ,x ]:=img_temp2[1,y,x]+value; img_temp2[1,y ,x+1]:=img_temp2[1,y,x+1]+value; img_temp2[1,y+1,x ]:=img_temp2[1,y+1,x]+value; img_temp2[1,y+1,x+1]:=img_temp2[1,y+1,x+1]+value; end else if red then begin img_temp2[0,y ,x ]:=value; img_temp2[0,y ,x+1]:=value; img_temp2[0,y-1,x ]:=value; img_temp2[0,y-1,x+1]:=value; end else if blue then begin img_temp2[2,y ,x ]:=value; img_temp2[2,y ,x-1]:=value; img_temp2[2,y+1,x ]:=value; img_temp2[2,y+1,x-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.height,head.width);{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,y,x]+ img[0,y ,x+1 ]+ img[0,y+1,x ]+ img[0,y+1,x+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,y-1,x ]; a2:=img[0,y+1,x ]; average1:=(a1+a2)/2;{red neighbor pixels }; average2:=(img[0, y ,x] ); a3:=img[0,y ,x-1]; a4:=img[0,y ,x+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 magnitude_slope} then begin luminance:=(average1+average2+average3)/3; img_temp2[0,y,x]:=luminance;{remove color info, keep luminace} img_temp2[1,y,x]:=luminance; img_temp2[2,y,x]:=luminance; end else begin img_temp2[0,y,x]:=average1; img_temp2[1,y,x]:=average2; img_temp2[2,y,x]:=average3; end; end else if green_even then begin a1:=img[0,y ,x-1]; a2:=img[0,y ,x+1]; average1:=(a1+a2)/2;{red neighbor pixels }; average2:= (img[0, y ,x] ); a3:=img[0,y-1,x ]; a4:=img[0,y+1,x ]; average3:=(a3+a4)/2; {blue neighbor pixels }; if ((a1>average1+signal) or (a2>average1+signal) or (a3>average2+signal) or (a4>average2+signal)) {severe magnitude_slope} then begin luminance:=(average1+average2+average3)/3; img_temp2[0,y,x]:=luminance;{remove color info, keep luminace} img_temp2[1,y,x]:=luminance; img_temp2[2,y,x]:=luminance; end else begin img_temp2[0,y,x]:=average1; img_temp2[1,y,x]:=average2; img_temp2[2,y,x]:=average3; end; end else if red then begin average1:=(img[0, y ,x]); a1:= img[0,y ,x-1]; a2:= img[0,y ,x+1]; a3:= img[0,y-1,x ]; a4:= img[0,y+1,x ];{green neighbours} average2:=(a1+a2+a3+a4)/4; a5:= img[0,y-1,x-1]; a6:= img[0,y+1,x-1]; a7:= img[0,y-1,x+1]; a8:= img[0,y+1,x+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 magnitude_slope} begin luminance:=(average1+average2+average3)/3; img_temp2[0,y,x]:=luminance;{remove color info, keep luminace} img_temp2[1,y,x]:=luminance; img_temp2[2,y,x]:=luminance; end else begin img_temp2[0,y,x]:=average1; img_temp2[1,y,x]:=average2; img_temp2[2,y,x]:=average3; end; end else if blue then begin average1:=(img[0, y ,x]); a1:= img[0,y-1,x-1]; a2:= img[0,y+1,x-1]; a3:= img[0,y-1,x+1]; a4:= img[0,y+1,x+1];{red neighbours} average1:=(a1+a2+a3+a4)/4; a5:= img[0,y ,x-1]; a6:= img[0,y ,x+1]; a7:= img[0,y-1,x ]; a8:= img[0,y+1,x ];{green neighbours} average2:=(a5+a6+a7+a8)/4; average3:=img[0, y ,x]; 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 magnitude_slope} begin luminance:=(average1+average2+average3)/3; img_temp2[0,y,x]:=luminance;{remove color info, keep luminace} img_temp2[1,y,x]:=luminance; img_temp2[2,y,x]:=luminance; end else begin img_temp2[0,y,x]:=average1; img_temp2[1,y,x]:=average2; img_temp2[2,y,x]:=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.height,head.width);{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,y-1,x ]; a2:=img[0,y+1,x ]; average1:=(a1+a2)/2;{red neighbor pixels }; average2:=(img[0, y ,x] ); a3:=img[0,y ,x-1]; a4:=img[0,y ,x+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,y,x]:=(average1+average2+average3)/3;{store luminance} img_temp2[1,y,x]:=$FFFFFF;{marker pixel as saturated} end else begin img_temp2[0,y,x]:=average1; img_temp2[1,y,x]:=average2; img_temp2[2,y,x]:=average3; end; end else if green_even then begin a1:=img[0,y ,x-1]; a2:=img[0,y ,x+1]; average1:=(a1+a2)/2;{red neighbor pixels }; average2:= (img[0, y ,x] ); a3:=img[0,y-1,x ]; a4:=img[0,y+1,x ]; 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,y,x]:=(average1+average2+average3)/3;{store luminance} img_temp2[1,y,x]:=$FFFFFF;{marker pixel as saturated} end else begin img_temp2[0,y,x]:=average1; img_temp2[1,y,x]:=average2; img_temp2[2,y,x]:=average3; end; end else if red then begin average1:=(img[0, y ,x]); a1:= img[0,y ,x-1]; a2:= img[0,y ,x+1]; a3:= img[0,y-1,x ]; a4:= img[0,y+1,x ];{green neighbours} average2:=(a1+a2+a3+a4)/4; a5:= img[0,y-1,x-1]; a6:= img[0,y+1,x-1]; a7:= img[0,y-1,x+1]; a8:= img[0,y+1,x+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,y,x]:=(average1+average2+average3)/3;{store luminance} img_temp2[1,y,x]:=$FFFFFF;{marker pixel as saturated} end else begin img_temp2[0,y,x]:=average1; img_temp2[1,y,x]:=average2; img_temp2[2,y,x]:=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, y ,x]); a1:= img[0,y-1,x-1]; a2:= img[0,y+1,x-1]; a3:= img[0,y-1,x+1]; a4:= img[0,y+1,x+1];{red neighbours} average1:=(a1+a2+a3+a4)/4; a5:= img[0,y ,x-1]; a6:= img[0,y ,x+1]; a7:= img[0,y-1,x ]; a8:= img[0,y+1,x ];{green neighbours} average2:=(a5+a6+a7+a8)/4; average3:=img[0, y ,x]; 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,y,x]:=(average1+average2+average3)/3;{store luminance} img_temp2[1,y,x]:=$FFFFFF;{marker pixel as saturated} end else begin img_temp2[0,y,x]:=average1; img_temp2[1,y,x]:=average2; img_temp2[2,y,x]:=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,fitsY,fitsX]=$FFFFFF {marker saturated} then begin colred:=0; colgreen:=0; colblue:=0; counter:=0; inc(sat_counter); luminance:=img_temp2[0,fitsY,fitsX]; 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,y2,x2]; if g<>$FFFFFF {not saturated pixel} then begin r:= img_temp2[0,y2,x2]; B:= img_temp2[2,y2,x2]; 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, fitsY ,fitsX ]:=bg+ luminance*colred/rgb; img[1, fitsY ,fitsX ]:=bg+ luminance*colgreen/rgb; img[2, fitsY ,fitsX ]:=bg+ luminance*colblue/rgb; end else begin img[1, fitsY ,fitsX ]:=img_temp2[0, fitsY ,fitsX ]; img[2, fitsY ,fitsX ]:=img_temp2[0, fitsY ,fitsX ]; 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, fitsY ,fitsX ]:=saturation; img[1, fitsY ,fitsX ]:=saturation; img[2, fitsY ,fitsX ]:=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,h,w);{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,y,x]:= img[0,y2 ,x2+1]; img_temp2[1,y,x]:=(img[0,y2 ,x2 ] + img[0,y2+1 ,x2+1])/2; img_temp2[2,y,x]:= img[0,y2+1,x2 ]; 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,y,x]:= img[0,y2+1,x2+1]; img_temp2[1,y,x]:=(img[0,y2 ,x2+1] + img[0,y2+1 ,x2])/2; img_temp2[2,y,x]:= img[0,y2 ,x2 ]; 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,y,x]:= img[0,y2 ,x2]; img_temp2[1,y,x]:=(img[0,y2 ,x2+1] + img[0,y2+1 ,x2])/2; img_temp2[2,y,x]:= img[0,y2+1,x2+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,y,x]:= img[0,y2+1,x2]; img_temp2[1,y,x]:=(img[0,y2 ,x2 ] + img[0,y2+1 ,x2+1])/2; img_temp2[2,y,x]:= img[0,y2 ,x2+1]; 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,fitsY*2 ,fitsx*2 ]>65500) or (img[0,fitsY*2 ,fitsx*2+1]>65500) or (img[0,fitsY*2+1,fitsx*2 ]>65500) or (img[0,fitsY*2+1,fitsx*2+1]>65500) ) then {saturation} begin img[0,fitsY*2 ,fitsx*2 ]:=img[0,fitsY*2 ,(fitsx-1)*2 ]; img[0,fitsY*2 ,fitsx*2+1]:=img[0,fitsY*2 ,(fitsx-1)*2+1]; img[0,fitsY*2+1,fitsx*2 ]:=img[0,fitsY*2+1,(fitsx-1)*2 ]; img[0,fitsY*2+1,fitsx*2+1]:=img[0,fitsY*2+1,(fitsx-1)*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,linenr,columnr :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} flipv, fliph : boolean; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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; bck.backgr:=mainwindow.minimum1.position; cwhite:=mainwindow.maximum1.position; if cwhite<=bck.backgr then cwhite:=bck.backgr+1; flipv:=mainwindow.flip_vertical1.Checked; fliph:=mainwindow.Flip_horizontal1.Checked; for i:=0 to head.height-1 do begin if flipv then linenr:=i else linenr:=(head.height-1)-i;{flip vertical?. Note FITS count from bottom, windows from top} xLine := Bitmap.ScanLine[linenr]; for j:=0 to head.width-1 do begin if fliph then columnr:=(head.width-1)-j else columnr:=j;{flip horizontal?} col:=round(img_loaded[0,i,columnr]); colrr:=(col-bck.backgr)/(cwhite-bck.backgr);{scale to 1} if head.naxis3>=2 then {at least two colours} begin col:=round(img_loaded[1,i,columnr]); colgg:=(col-bck.backgr)/(cwhite-bck.backgr);{scale to 1} end else colgg:=colrr; if head.naxis3>=3 then {at least three colours} begin col:=round(img_loaded[2,i,columnr]); colbb:=(col-bck.backgr)/(cwhite-bck.backgr);{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:=(mainwindow.width - round(mainwindow.panel1.height*head.width/head.height)) div 2; 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 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(true); plot_grid(false);//az,alt 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,0]); {width} height5:=Length(img[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,i,j]);{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; 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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:=min(65535,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 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; 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(filen2) then result:=renamefile(filename_tmp,filen2); 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; procedure close_fits_files; begin Reader.free; TheFile.free; TheFile_new.free; 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; begin tmpProgram := trim(aCommando); FillChar(tmpStartupInfo, SizeOf(tmpStartupInfo), 0); with tmpStartupInfo do begin cb := SizeOf(TStartupInfo); if show_console=false then begin dwFlags := STARTF_USESHOWWINDOW; wShowWindow := SW_SHOWMINIMIZED; end else wShowWindow := SW_HIDE; end; if CreateProcess(nil, pchar(tmpProgram), nil, nil, true,CREATE_DEFAULT_ERROR_MODE or CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS, nil, nil, tmpStartupInfo, tmpProcessInformation) then begin // loop every 100 ms while WaitForSingleObject(tmpProcessInformation.hProcess, 100) > 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_visible2.checked:=bool;{set both indicators} northeast1.checked:=Sett.ReadBool('main','north_east',false); star_profile1.checked:=Sett.ReadBool('main','star_profile',false); mountposition1.checked:=Sett.ReadBool('main','mount_position',false); Constellations1.checked:=Sett.ReadBool('main','constellations',false); grid_ra_dec1.checked:=Sett.ReadBool('main','grid',false); grid_az_alt1.checked:=Sett.ReadBool('main','grid_az',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.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} export_index:=Sett.ReadInteger('main','export_index',3);{tiff stretched} annotation_magn:=Sett.ReadString('main', 'anno_magn',annotation_magn); cal_batch1.Checked:=Sett.ReadBool('main','cal_batch',false); 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','splitter',987654321); if c<>987654321 then stackmenu1.pairsplitter1.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','box_blur_factor',987654321);if c<>987654321 then stackmenu1.box_blur_factor1.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.limit_background_correction1.checked:= Sett.ReadBool('stack','limit_back_corr',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_temp',false); stackmenu1.delta_temp1.caption:=Sett.ReadString('stack','delta_temp','1'); stackmenu1.classify_dark_gain1.checked:= Sett.ReadBool('stack','classify_dark_gain',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_alignment1.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.use_triples1.Checked:=Sett.ReadBool('stack','use_triples',false); stackmenu1.add_sip1.Checked:=Sett.ReadBool('stack','sip',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; 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',0); stackmenu1.annotate_mode1.itemindex:=c; c:=Sett.ReadInteger('stack','reference_d',0); stackmenu1.reference_database1.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.blend1.checked:= Sett.ReadBool('stack','blend',true); c:=Sett.ReadInteger('stack','sample_size',987654321);if c<>987654321 then stackmenu1.sample_size1.itemindex:=c; dum:=Sett.ReadString('stack','usm_amount',''); if dum<>'' then stackmenu1.unsharp_edit_amount1.text:=dum; dum:=Sett.ReadString('stack','usm_radius',''); if dum<>'' then stackmenu1.unsharp_edit_radius1.text:=dum; dum:=Sett.ReadString('stack','usm_thresh',''); if dum<>'' then stackmenu1.unsharp_edit_threshold1.text:=dum; stackmenu1.mount_write_wcs1.Checked:=Sett.ReadBool('stack','wcs',true);{use wcs files for mount} 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; dum:=Sett.ReadString('stack','contour_gaus',''); if dum<>'' then stackmenu1.contour_gaussian1.text:=dum; dum:=Sett.ReadString('stack','contour_sd',''); if dum<>'' then stackmenu1.contour_sigma1.text:=dum; dum:=Sett.ReadString('stack','contour_grid',''); if dum<>'' then stackmenu1.detection_grid1.text:=dum; groupsizeStr:=Sett.ReadString('stack','groupsize',''); // stackmenu1.streak_filter1.Checked:=Sett.ReadBool('stack','streak_filter',false); obscode:=Sett.ReadString('aavso','obscode',''); {photometry} delim_pos:=Sett.ReadInteger('aavso','delim_pos',0); baa_style:=Sett.ReadBool('aavso','baa_style',false);{aavso report} hjd_date:=Sett.ReadBool('aavso','hjd_date',false);{aavso report} aavso_filter_index:=Sett.ReadInteger('aavso','pfilter',0); magnitude_slope:=Sett.ReadFloat('aavso','slope',0); 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); c:=Sett.ReadInteger('insp','insp_binning',987654321);if c<>987654321 then inspector_binning:=c; c:=Sett.ReadInteger('insp','insp_grid',987654321);if c<>987654321 then inspector_grid_size:=c; c:=Sett.ReadInteger('insp','insp_grad',987654321);if c<>987654321 then inspector_gradations:=c; 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; //with mainwindow 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','star_profile',star_profile1.checked); sett.writeBool('main','mount_position',mountposition1.checked); sett.writeBool('main','constellations',constellations1.checked); sett.writeBool('main','grid',grid_ra_dec1.checked); sett.writeBool('main','grid_az',grid_az_alt1.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','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.writeInteger('main','export_index',export_index); sett.writestring('main','anno_magn',annotation_magn); sett.writeBool('main','cal_batch',cal_batch1.checked); 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','splitter',stackmenu1.pairsplitter1.position); sett.writeInteger('stack','stack_method',stackmenu1.stack_method1.itemindex); sett.writeInteger('stack','mosaic_crop',stackmenu1.mosaic_crop1.position); sett.writeInteger('stack','box_blur_factor',stackmenu1.box_blur_factor1.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.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','limit_back_corr',stackmenu1.limit_background_correction1.Checked); sett.writeBool('stack','classify_object',stackmenu1.classify_object1.Checked); sett.writeBool('stack','classify_filter',stackmenu1.classify_filter1.Checked); sett.writeBool('stack','classify_dark_temp',stackmenu1.classify_dark_temperature1.Checked); sett.writeString('stack','delta_temp',stackmenu1.delta_temp1.caption); sett.writeBool('stack','classify_dark_gain',stackmenu1.classify_dark_gain1.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','use_triples',stackmenu1.use_triples1.checked); sett.writeBool('stack','sip',stackmenu1.add_sip1.checked); if stackmenu1.use_manual_alignment1.checked then sett.writestring('stack','align_method','4') else if stackmenu1.use_astrometry_alignment1.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','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.writeInteger('stack','reference_d',stackmenu1.reference_database1.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','blend', stackmenu1.blend1.checked); sett.writestring('stack','usm_amount',stackmenu1.unsharp_edit_amount1.text); sett.writestring('stack','usm_radius',stackmenu1.unsharp_edit_radius1.text); sett.writestring('stack','usm_thresh',stackmenu1.unsharp_edit_threshold1.text); sett.writeInteger('stack','sample_size',stackmenu1.sample_size1.itemindex); 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('stack','contour_gaus',stackmenu1.contour_gaussian1.text); sett.writestring('stack','contour_sd',stackmenu1.contour_sigma1.text); sett.writestring('stack','contour_grid',stackmenu1.detection_grid1.text); sett.writestring('stack','groupsize',groupsizeStr);//stacking in tab photmetry sett.writestring('aavso','obscode',obscode); sett.writeInteger('aavso','delim_pos',delim_pos); sett.writeBool('aavso','baa_style',baa_style);{AAVSO report} sett.writeBool('aavso','hjd_date',hjd_date);{AAVSO report} sett.writeInteger('aavso','pfilter',aavso_filter_index); sett.writeFloat('aavso','slope', magnitude_slope); 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); sett.writeInteger('insp','insp_binning',inspector_binning); sett.writeInteger('insp','insp_grid',inspector_grid_size); sett.writeInteger('insp','insp_grad',inspector_gradations); {### 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; plot_north; {draw arrow or clear indication position north depending on value head.cd1_1} 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; pixelrow1,pixelrow2 : 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} pixelrow1:=image1.Picture.Bitmap.ScanLine[h-1-y]; pixelrow2:=bmp.ScanLine[y]; {$ifdef mswindows} Move(pixelrow1[0], pixelrow2[0],w*3); {$else} {unix, Darwin} Move(pixelrow1[0], pixelrow2[0],w*4); {4 bytes per pixel} {$endif} end; image1.Picture.Bitmap.Canvas.Draw(0,0, bmp);// move bmp to source bmp.Free; plot_north; {draw arrow or clear indication position north depending on value head.cd1_1} end; procedure Tmainwindow.flipVH1Click(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[h-1-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; flip_vertical1.checked:=flip_vertical1.checked=false; flip_horizontal1.checked:=flip_horizontal1.checked=false; plot_north; {draw arrow or clear indication position north depending on value head.cd1_1} end; procedure Tmainwindow.dust_spot_removal1Click(Sender: TObject); var fitsX,fitsY,dum,k,w,h,greylevels : integer; center_X, center_Y, line_bottom,line_top,expected_value, mode_left_bottom,mode_left_top, mode_right_top, mode_right_bottom,a,b : double; img_delta : image_array; begin if head.naxis=0 then exit; if ((abs(stopX-startX)>3)and (abs(stopY-starty)>3)) then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key Randomize; {initialise} 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; {ellipse parameters} center_x:=(startx+stopX)/2; center_y:=(startY+stopY)/2; a:=(stopX-1-startx)/2; b:=(stopY-1-startY)/2; w:=stopX-startX; h:=StopY-startY; setlength(img_delta,1,h,w); for k:=0 to head.naxis3-1 do {do all colors} begin mode_left_bottom:=mode(img_loaded,false{ellipse shape},k,startX-20,startX,startY-20,startY,32000,greylevels);{for this area get most common value equals peak in histogram} mode_left_top:=mode(img_loaded,false{ellipse shape},k,startX-20,startX,stopY,stopY+20,32000,greylevels);{for this area get most common value equals peak in histogram} mode_right_bottom:=mode(img_loaded,false{ellipse shape},k,stopX,stopX+20,startY-20,startY,32000,greylevels);{for this area get most common value equals peak in histogram} mode_right_top:=mode(img_loaded,false{ellipse shape},k,stopX,stopX+20,stopY,stopY+20,32000,greylevels);{for this area get most common value equals peak in histogram} for fitsY:=startY to stopY-1 do begin for fitsX:=startX to stopX-1 do 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} expected_value:=line_bottom*(stopY-fitsY)/(stopY-startY)+line_top*(fitsY-startY)/(stopY-startY);{expected value based on the four corners measurements} img_delta[0,fitsY-startY,fitsX-startX]:=max(0,expected_value-img_loaded[k,fitsY,fitsX]);//max for star ignorance end; end;{fits loop} gaussian_blur2(img_delta,5); for fitsY:=startY to stopY-1 do begin for fitsX:=startX to stopX-1 do begin if ((CtrlButton=false {use no ellipse}) or (sqr(fitsX-center_X)/sqr(a) +sqr(fitsY-center_Y)/sqr(b)<1)) then // standard equation of the ellipse img_loaded[k,fitsY,fitsX]:= img_loaded[k,fitsY,fitsX]+img_delta[0,fitsY-startY,fitsX-startX]; end; end;{fits loop} end; plot_fits(mainwindow.image1,false,true); Screen.Cursor:=crDefault; end {usefull area} else application.messagebox(pchar('No area selected! Hold the right mouse button down while selecting an area.'),'',MB_OK); end; function Jd_To_MPCDate(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; year3,day: string; begin 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; 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; str(trunc(J): 4, year3); str(trunc(T)+F:8: 5, day); //probably could use T only if day[1]=' ' then day[1]:='0'; Result := year3 + ' ' + leadingzero(trunc(M)) + ' ' + day; end; procedure Tmainwindow.mpcreport1Click(Sender: TObject); var line,mag_str : string; hfd2,fwhm_star2,snr,flux,object_xc,object_yc,object_raM,object_decM : double; begin if sip=false then memo2_message('Warning image not solved with SIP polynomial correction! See settings tab alignment'); Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key calibrate_photometry;//calibrate photometry if required minor_planet_at_cursor:=''; //clear last found // plot_mpcorb(strtoint(maxcount_asteroid),strtofloat2(maxmag_asteroid),true {add annotations}); plot_annotations(false {use solution vectors},false); Screen.Cursor:=crDefault; { https://www.minorplanetcenter.net/iau/info/OpticalObs.html Columns Format Use 1 - 5 A5 Packed minor planet number 6 - 12 A7 Packed provisional designation, or a temporary designation 13 A1 Discovery asterisk 14 A1 Note 1 15 A1 Note 2 16 - 32 Date of observation 33 - 44 Observed RA (J2000.0) 45 - 56 Observed Decl. (J2000.0) 57 - 65 9X Must be blank 66 - 71 F5.2,A1 Observed magnitude and band (or nuclear/total flag for comets) 72 - 77 X Must be blank 78 - 80 A3 Observatory code } if minor_planet_at_cursor='' then begin memo2_message('Warning minor planet designation not found! First annotate image with option "Asteroid & comet annotation" (Ctrl+R) with option "Annotation to the FITS header".'); minor_planet_at_cursor:=' ';//no name found end; if length(minor_planet_at_cursor)<=5 then line:=minor_planet_at_cursor {5} +' '{7}+' B'{3, B for CMOS} else line:=' '{5}+minor_planet_at_cursor {7}+' B'{3}; HFD(img_loaded,round((startX+stopX)/2-1),round((startY+stopY)/2-1),annulus_radius {annulus radius},head.mzero_radius,0 {adu_e unbinned},hfd2,fwhm_star2,snr,flux,object_xc,object_yc);{input coordinates in array[0..] output coordinates in array [0..]} if ((hfd2<99) and (hfd2>0)) then //star detected begin date_to_jd(head.date_obs,head.date_avg,head.exposure);{convert date-obs to jd_start, jd_mid} line:=line+Jd_To_MPCDate(jd_mid)+' '; {centered coordinates} pixel_to_celestial(head,object_xc+1,object_yc+1,mainwindow.Polynomial1.itemindex,object_raM,object_decM);{input in FITS coordinates} if ((object_raM<>0) and (object_decM<>0)) then begin line:=line+prepare_ra8(object_raM,' ')+' '+prepare_dec2(object_decM,' ');{object position in RA,DEC} if line[33]=' ' then line[33]:='0';// add the missing zero for ra e.g. " 7 39 33.03" if line[46]=' ' then line[46]:='0';// add the missing zero for dec e.g. "- 7 39 33.03" line:=line+' '; if head.mzero<>0 then {offset calculated in star annotation call} begin str(head.mzero -ln(flux)*2.5/ln(10):5:2,mag_str); end else begin mag_str:=' '; end; line:=line+mag_str; end; line:=line+'B XXX'; plot_the_annotation(stopX+1,stopY+1,startX+1,startY+1,0,' 📋');{rectangle, +1 to fits coordinates} stackmenu1.memo2.Lines.add(line); clipboard.AsText:=line;//copy to the clipboard end else begin memo2_message('No object detection at this image location.'); clipboard.AsText:=('ASTAP: No object detected!');; end; // InputBox('This line to clipboard?','Format 24 00 00.0, 90 00 00.0 or 24 00, 90 00',line); end; procedure Tmainwindow.simbad_annotation_deepsky_filtered1Click(Sender: TObject); begin maintype:=InputBox('Simbad search by criteria.','Enter the object main type (E.g. star=*, galaxy=G, quasar=QSO):',maintype); gaia_star_position1Click(sender); 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(var filename3: string): boolean; {convert .fz to .fits using funpack} var commando :string; newfilename : string; begin result:=false; commando:='-D'; if pos('(',filename3)>0 then //this character "(" is not processed by fpunpack begin newfilename:=extractfilepath(filename3)+stringreplace(extractfilename(filename3),'(','_',[rfReplaceAll]); if renamefile(filename3,newfilename) then filename3:=newfilename; if pos('(',newfilename)>0 then begin memo2_message('Error!. Can not process a path with the "(" character');exit; end; end; {$ifdef mswindows} if fileexists(application_path+'funpack.exe')=false then begin 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 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 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} filename3:=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,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,mainwindow.memo1.lines,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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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} 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,mainwindow.memo1.lines,head,img_loaded); if head.naxis<2 then result:=false; {no image} end else if (ext1='.FZ') then {CFITSIO format} begin if unpack_cfitsio(filename2) then {successful conversion using funpack} result:=load_fits(filename2,true {light},true {load data},true {update memo},0,mainwindow.memo1.lines,head,img_loaded); {load new fits file} end {fz} else if check_raw_file_extension(ext1) then {raw format} begin result:=convert_raw(true{load},false{save},filename2,head,img_loaded); if result then {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} result:=load_PPM_PGM_PFM(filename2,head,img_loaded) else if ext1='.XISF' then {XISF} result:=load_xisf(filename2,head,img_loaded) else if ((ext1='.TIF') or (ext1='.TIFF') or (ext1='.PNG') or (ext1='.JPG') or (ext1='.JPEG') or (ext1='.BMP')) then {tif, png, bmp, jpeg} result:=load_tiffpngJPEG(filename2,true {light},head,img_loaded); if result=false then begin update_menu(false);exit; end; 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.height,head.width);{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,fitsY,fitsX]:=(img[0,fitsY,fitsX]+img[1,fitsY,fitsX]+img[2,fitsY,fitsX])/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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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.grid_ra_dec1Click(Sender: TObject); begin if head.naxis=0 then exit; if grid_ra_dec1.checked=false then {clear screen} begin plot_fits(mainwindow.image1,false,true); end else plot_grid(true); end; procedure remove_photometric_calibration;//from header begin head.mzero:=0;//clear photometric calibration remove_key('MZERO =',false{all}); remove_key('MZEROR =',false{all}); remove_key('MZEROAPT=',false{all}); end; procedure Tmainwindow.bin_2x2menu1Click(Sender: TObject); begin if head.naxis<>0 then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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; remove_photometric_calibration;//from header 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,url : string; val,val2 : char; count,i,j,k,fov : 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 if fov>180 {arcmin} then begin limiting_mag:=12; ////Required by AAVSO memo2_message('FOV is larger then 3 degrees. Downloading from AAVSO VSX, VSP is then limited to magnitude 12.'); end; url:='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);{+'&special=std_field'} s:=get_http(url);{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].Bmag:='?'; vsp[count].Berr:=''; vsp[count].Vmag:='?'; vsp[count].Verr:=''; vsp[count].Rmag:='?'; vsp[count].Rerr:=''; vsp[count].SGmag:='?'; vsp[count].SGerr:=''; vsp[count].SRmag:='?'; vsp[count].SRerr:=''; vsp[count].SImag:='?'; vsp[count].SIerr:=''; k:=0; repeat //read optional "bands" val:=s[j]; inc(j); val2:=s[j]; if ((val='"') and (val2='B')) then //B mag found, could be missing begin i:=posex('"mag":',s,j); i:=i+length('"mag":'); k:=posex(',',s,i); vsp[count].Bmag:=copy(s,i,k-i); i:=posex('error":',s,k); i:=i+length('error":'); k:=posex('}',s,i); vsp[count].Berr:=copy(s,i,k-i); end else if ((val='"') and (val2='V')) then //V mag found, could be missing begin i:=posex('"mag":',s,j); i:=i+length('"mag":'); k:=posex(',',s,i); vsp[count].Vmag:=copy(s,i,k-i); i:=posex('error":',s,k); i:=i+length('error":'); k:=posex('}',s,i); vsp[count].Verr:=copy(s,i,k-i); end else if ((val='"') and (val2='R')) then //R mag found, could be missing begin i:=posex('"mag":',s,j); i:=i+length('"mag":'); k:=posex(',',s,i); vsp[count].Rmag:=copy(s,i,k-i); i:=posex('error":',s,k); i:=i+length('error":'); k:=posex('}',s,i); vsp[count].Rerr:=copy(s,i,k-i); end; if ((val='S') and (val2='G')) then //Sloan green begin i:=posex('"mag":',s,j); i:=i+length('"mag":'); k:=posex(',',s,i); vsp[count].SGmag:=copy(s,i,k-i); i:=posex('error":',s,k); i:=i+length('error":'); k:=posex('}',s,i); vsp[count].SGerr:=copy(s,i,k-i); end; if ((val='S') and (val2='R')) then //Sloan red begin i:=posex('"mag":',s,j); i:=i+length('"mag":'); k:=posex(',',s,i); vsp[count].SRmag:=copy(s,i,k-i); i:=posex('error":',s,k); i:=i+length('error":'); k:=posex('}',s,i); vsp[count].SRerr:=copy(s,i,k-i); end; if ((val='S') and (val2='I')) then //Sloan i begin i:=posex('"mag":',s,j); i:=i+length('"mag":'); k:=posex(',',s,i); vsp[count].SImag:=copy(s,i,k-i); i:=posex('error":',s,k); i:=i+length('error":'); k:=posex('}',s,i); vsp[count].SIerr:=copy(s,i,k-i); end; if j<k then j:=k;// for the case k is zero due to nothing found 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,k,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 if radius>3 {degrees} then limiting_mag:=12; ////Required by AAVSO 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); //optional field // if s[j+3]='A' then // begin // i:=posex('"AUID":"',s,j); //AUID will NOT always available !!! // if i=0 then // break;//no more data // i:=i+length('"AUID":"'); // j:=posex('"',s,i); // vsx[count].auid:=copy(s,i,j-i); // end // else // vsx[count].auid:=''; 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:='?'; k:=0;// for case no optional fields repeat //read optional fields 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":"'); k:=posex('"',s,i); vsx[count].maxmag:=copy(s,i,k-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":"'); k:=posex('"',s,i); vsx[count].minmag:=copy(s,i,k-i); end else if ((s[j]='C') and (s[j+1]='a') and (s[j+2]='t')) then begin i:=j+length('Category":"'); k:=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":"'); k:=posex('"',s,i); vsx[count].period:=copy(s,i,k-i); end; if j<k then j:=k; //k could be in very rare cases 0 resulting in an endless loop until ((s[j]='}') or (j=length(s)-1)); 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 lim_magn : double; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key //0, No annotation //1, Annotation local DB mag 13 //2, Annotation local DB mag 15 //3, Annotation online DB mag 13 //4, Annotation online DB mag 15 //5, Annotation online DB mag 99 //6, Annotation local DB mag 13 & measure all //7, Annotation local DB mag 15 & measure all //8, Annotation online DB mag 13 & measure all //9, Annotation online DB mag 15 & measure all //10,Annotation online DB mag 99 & measure all case stackmenu1.annotate_mode1.itemindex of 0,1,7: begin lim_magn:=-99; load_variable;{Load the local database once. If loaded no action} end;//use local database. Selection zero the viewer plot deepsky should still work 2,8: begin lim_magn:=-99; load_variable_13;{Load the local database once. If loaded no action} end;//use local database 3,9: begin lim_magn:=-99; load_variable_15;{Load the local database once. If loaded no action} end;//use local database 4,10: lim_magn:=13; 5,11: lim_magn:=15; 6,12:lim_magn:=99; else lim_magn:=99; end; //case if lim_magn>0 then //online version begin repeat if aavso_update_required then begin memo2_message('Downloading online data from AAVSO as set in tab Photometry.'); 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; if sender<>stackmenu1.photometry_button1 then plot_vsx_vsp; until true;//allow breaks to skip and go to cursor statement end else begin //local version memo2_message('Using local variable database. Online version can be set in tab Photometry'); plot_deepsky(sender=stackmenu1.photometry_button1); {Plot the variables on the image. If photmetry_button then only fill variable_list} 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.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.measuretotalmagnitude1Click(Sender: TObject); var fitsX,fitsY,dum,font_height,counter,tx,ty,saturation_counter : integer; flux,bg_median,value,center_x,center_y,a,b : double; 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 ((head.mzero=0) or (head.mzero_radius<>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} head.mzero_radius:=99;{calibrate for extended objects} plot_and_measure_stars(true {calibration},false {plot stars},false{report lim magnitude}); end; if head.mzero=0 then begin beep; exit;end; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,(5+5+1+stopY-startY)*5*2+(5+5+1+stopX-startX)*5*2);//surface used for background. Overlap not counted for simplicity {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. StartX,StopX are in 0...width-1,0..height-1 range} for fitsX:=startX+1-5 to stopX-1+5 do begin if ( (fitsX<startX) or (fitsX>stopX) or (fitsY<startY) or (fitsY>stopY) ) then {measure only outside the box} begin bg_array[counter]:=img_loaded[0,fitsY,fitsX]; 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; {ellipse parameters} center_x:=(startx+stopX-1)/2; center_y:=(startY+stopY-1)/2; a:=(stopX-1-startx)/2; b:=(stopY-1-startY)/2; for fitsY:=startY+1 to stopY-1 do {within rectangle. StartX,StopX are in 0...width-1,0..height-1 range} for fitsX:=startX+1 to stopX-1 do begin if ((CtrlButton=false {use no ellipse}) or (sqr(fitsX-center_X)/sqr(a) +sqr(fitsY-center_Y)/sqr(b)<1)) then // standard equation of the ellipse begin value:=img_loaded[0,fitsY,fitsX]; if value>65000 then inc(saturation_counter);{keep track of number of saturated pixels} flux:=flux+(value-bg_median);{add all flux. Without stars it should average zero. Detecting flux using >3*sd misses too much signal comets} end; end; if flux<1 then flux:=1; str(head.MZERO - ln(flux)*2.5/ln(10):0:1,mag_str); if (saturation_counter*65500/flux)<0.03 then mag_str:='MAGN='+mag_str {allow about 3% 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; if CTRLbutton then copy_paste_shape:=1 //ellipse else copy_paste_shape:=0;//rectangle end {fits file} else application.messagebox(pchar('No area selected! Hold the right mouse button down while selecting an area.'),'',MB_OK); end; procedure ang_sep_two_positions(fitsx1,fitsy1,fitsx2,fitsy2 : double; out seperation, pa : string); var ra1,dec1,ra2,dec2,sep : double; begin if head.cdelt2<>0 then begin pixel_to_celestial(head,fitsX1,fitsY1,mainwindow.Polynomial1.itemindex,ra1,dec1);{calculate the ra,dec position} pixel_to_celestial(head,fitsX2,fitsY2,mainwindow.Polynomial1.itemindex,ra2,dec2);{calculate the ra,dec position} ang_sep(ra1,dec1,ra2,dec2, sep); sep:=sep*180/pi; //convert to degrees if sep<1/60 then seperation:=inttostr(round(sep*3600))+'"' else if sep<1 then seperation:=floattostrF(sep*60,FFfixed,0,2)+#39 else seperation:=floattostrF(sep,FFfixed,0,2)+'°'; pa:=FloattostrF(position_angle(ra2,dec2,ra1,dec1)*180/pi,FFfixed,0,0)+'°';; //Position angle between a line from ra0,dec0 to ra1,dec1 and a line from ra0, dec0 to the celestial north . Rigorous method end else begin //no astrometric solution available seperation:=floattostrf(sqrt(sqr(fitsX2-fitsX1)+sqr(fitsY2-fitsY1)),ffFixed,0,2)+' pixels'; pa:=FloattostrF(arctan2(fitsY2-fitsY1,fitsX2-fitsX1)*180/pi,FFfixed,0,0)+'°'; end; end; procedure Tmainwindow.angular_distance1Click(Sender: TObject); var shapetype : integer; hfd1,star_fwhm,snr,flux,xc,yc, hfd2, star_fwhm2,snr2,flux2,xc2,yc2 : double; info_message,info_message1, info_message2 : string; begin if head.naxis=0 then exit; if ((abs(stopX-startX)>2) or (abs(stopY-starty)>2)) then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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)) then {star detected in img_loaded} begin //lock shapetype:=1;{circle} shape_marker1_fitsX:=xc+1;{store fits value for zoom} shape_marker1_fitsY:=yc+1; end else begin //no lock 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 //lock shapetype:=1;{circle} shape_marker2_fitsX:=xc2+1;{store fits value for zoom} shape_marker2_fitsY:=yc2+1; end else begin //no lock 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; boxshape1.visible:=true;//show box show_marker_shape(mainwindow.shape_marker2,shapetype,20,20,10{minimum},shape_marker2_fitsX,shape_marker2_fitsY); ang_sep_two_positions(shape_marker1_fitsX,shape_marker1_fitsY, shape_marker2_fitsX,shape_marker2_fitsY,info_message2,info_message1); info_message2:=info_message2+#9+' ∠ '+info_message1; 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; boxshape1.visible:=false; //remove info box 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; az_alt1.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; az_alt1.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; az_alt1.checked:=false; end; end; procedure Tmainwindow.az_alt1Click(Sender: TObject); begin if az_alt1.checked then begin coord_frame:=3; j2000_1.checked:=false; j2000d1.checked:=false; galactic1.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,greylevels : 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; bsize:=20; colrr1:=mode(img_loaded,false{ellipse shape},0,startX-bsize,startX+bsize,startY-bsize,startY+bsize,65535,greylevels);{find most common colour of a local area} if head.naxis3>1 then colgg1:=mode(img_loaded,false{ellipse shape},1,startX-bsize,startX+bsize,startY-bsize,startY+bsize,65535,greylevels);{find most common colour of a local area} if head.naxis3>2 then colbb1:=mode(img_loaded,false{ellipse shape},2,startX-bsize,startX+bsize,startY-bsize,startY+bsize,65535,greylevels);{find most common colour of a local area} colrr2:=mode(img_loaded,false{ellipse shape},0,stopX-bsize,stopX+bsize,stopY-bsize,stopY+bsize,65535,greylevels);{find most common colour of a local area} if head.naxis3>1 then colgg2:=mode(img_loaded,false{ellipse shape},0,stopX-bsize,stopX+bsize,stopY-bsize,stopY+bsize,65535,greylevels);{find most common colour of a local area} if head.naxis3>2 then colbb2:=mode(img_loaded,false{ellipse shape},0,stopX-bsize,stopX+bsize,stopY-bsize,stopY+bsize,65535,greylevels);{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,fitsY,fitsX]:=img_loaded[0,fitsY,fitsX]-(colrr2-colrr1)*(a-p)/a; if head.naxis3>1 then img_loaded[1,fitsY,fitsX]:=img_loaded[1,fitsY,fitsX]-(colgg2-colgg1)*(a-p)/a; if head.naxis3>2 then img_loaded[2,fitsY,fitsX]:=img_loaded[2,fitsY,fitsX]-(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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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; /// form_asteroids1.close; {normal this form is not loaded} mainwindow.setfocus; 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,x1,y1,x2,y2:integer; deep: boolean; var stars :star_list);{find stars and return, x,y, hfd, flux. x1,y1,x2,y2 are a subsection if required} 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; data_max : single; begin SetLength(stars,5,5000);{set array length} setlength(img_sa,1,head.height,head.width);{set length of image array} get_background(0,img_loaded,false{histogram is already available},true {calculate noise level},{out}bck);{calculate background level from peek histogram} if deep then detection_level:=5*bck.noise_level else detection_level:=bck.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} data_max:=head.datamax_org-1; for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_sa[0,fitsY,fitsX]:=-1;{mark as star free area} for fitsY:=y1 to y2-1 do begin for fitsX:=x1 to x2-1 do begin if (( img_sa[0,fitsY,fitsX]<=0){area not occupied by a star} and (img_loaded[0,fitsY,fitsX]- bck.backgr> detection_level)) then {new star} begin HFD(img_loaded,fitsX,fitsY,annulus_rad {typical 14, annulus radius},head.mzero_radius,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)) 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,j,i]:=1; end; if ((img_loaded[0,round(yc),round(xc)]<data_max) and (img_loaded[0,round(yc),round(xc-1)]<data_max) and (img_loaded[0,round(yc),round(xc+1)]<data_max) and (img_loaded[0,round(yc-1),round(xc)]<data_max) and (img_loaded[0,round(yc+1),round(xc)]<data_max) and (img_loaded[0,round(yc-1),round(xc-1)]<data_max) and (img_loaded[0,round(yc+1),round(xc-1)]<data_max) and (img_loaded[0,round(yc-1),round(xc+1)]<data_max) and (img_loaded[0,round(yc+1),round(xc+1)]<data_max) ) then {not saturated} begin {store values} inc(nrstars); if nrstars>=length(stars[0]) then begin SetLength(stars,5,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; stars[4,nrstars-1]:=snr; end;{not saturated} end;{HFD good} end; end; end; img_sa:=nil;{free mem} SetLength(stars,5,nrstars);{set length correct} end; procedure calibrate_photometry; var apert,annul,hfd_med : double; hfd_counter : integer; begin if ((head.naxis=0) or (head.cd1_1=0)) then exit; apert:=strtofloat2(stackmenu1.flux_aperture1.text); {text "max" will generate a zero} if ((head.mzero=0) or (aperture_ratio<>apert){new calibration required} or (passband_active<>head.passband_database)) then begin memo2_message('Photometric calibration of the measured stellar flux.'); annulus_radius:=14;{calibrate for extended objects} head.mzero_radius:=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,0 {report nr stars and hfd only}, hfd_counter,bck,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.');; head.mzero_radius:=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; end; procedure Tmainwindow.annotate_unknown_stars1Click(Sender: TObject); var size,radius, i,j, starX, starY,fitsX,fitsY,n,m,xci,yci,hfd_counter,search_radius,countN,countO : integer; Fliphorizontal, Flipvertical,saturated : boolean; hfd1,star_fwhm,snr,flux,xc,yc,measured_magn,magnd,magn_database, delta_magn,magn_limit_database, sqr_radius, hfd_median : double; messg : string; img_temp3,img_sa :image_array; data_max: single; const default=1000; begin if head.naxis=0 then exit; {file loaded?} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key calibrate_photometry; if head.mzero=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_database:=10*21;//magn, Online Gaia via Vizier image1.Canvas.Pen.Mode := pmMerge; image1.Canvas.Pen.width :=1; image1.Canvas.brush.Style:=bsClear; image1.Canvas.font.color:=clyellow; image1.Canvas.font.name:='default'; image1.Canvas.font.size:=10; mainwindow.image1.Canvas.Pen.Color := clred; setlength(img_temp3,1,head.height,head.width);{set size of image array} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_temp3[0,fitsY,fitsX]:=default;{clear} plot_artificial_stars(img_temp3,head,magn_limit {measured});{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},0 {report nr stars and hfd only},hfd_counter,bck, hfd_median); {find background, number of stars, median HFD} search_radius:=max(3,round(hfd_median)); setlength(img_sa,1,head.height,head.width);{set length of image array} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_sa[0,fitsY,fitsX]:=-1;{mark as star free area} countN:=0; countO:=0; data_max:=head.datamax_org-1; for fitsY:=0 to head.height-1 do begin for fitsX:=0 to head.width-1 do begin if (( img_sa[0,fitsY,fitsX]<=0){area not occupied by a star} and (img_loaded[0,fitsY,fitsX]- bck.backgr>5*bck.noise_level {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,yci,xci]<data_max) and (img_loaded[0,yci,xci-1]<data_max) and (img_loaded[0,yci,xci+1]<data_max) and (img_loaded[0,yci-1,xci]<data_max) and (img_loaded[0,yci+1,xci]<data_max) and (img_loaded[0,yci-1,xci-1]<data_max) and (img_loaded[0,yci+1,xci-1]<data_max) and (img_loaded[0,yci-1,xci+1]<data_max) and (img_loaded[0,yci+1,xci+1]<data_max) ) else saturated:=false; if (((hfd1<hfd_median*1.3) or (saturated){larger then normal}) and (hfd1>=hfd_median*0.75) and (snr>10)) 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,j,i]:=+1;{mark as star area} end; measured_magn:=round(10*(head.MZERO - ln(flux)*2.5/ln(10)));{magnitude x 10} if measured_magn<magn_limit_database-10 then {bright enough to be in the database} begin magn_database:=default;{1000} for i:=-search_radius to search_radius do //search for database star within circle with a diameter of 5 pixels for j:=-search_radius to search_radius do if sqr(i)+sqr(j)<=sqr(search_radius) then //circle tolerance area begin {database star available?} magnd:=img_temp3[0,round(yc)+j,round(xc)+i]; if magnd<default then {a star from the database} if magn_database=default then //empthy magn_database:=magnd //no star at this location else magn_database:=-2.5*ln(power(10,-0.4*magn_database) + power(10,-0.4*magnd))/ln(10);//combine magnitudes of the stars 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 begin messg:=''; {unknown star} inc(countN); end else begin messg:=' Δ'+inttostr(round(delta_magn)); {star but wrong magnitude} inc(countO); end; 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} mainwindow.image1.Canvas.font.size:=10; mainwindow.image1.Canvas.brush.Style:=bsClear; mainwindow.image1.Canvas.textout(20,head.height-20,inttostr(countN)+' unknown stars, '+inttostr(countO)+' magnitude offsets.' ); Screen.Cursor:=crDefault; 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,magn,fontsize,text_height,text_width,dum,formalism : integer; Fliphorizontal, Flipvertical : boolean; magnitude,raM,decM,v,b,r,sg,sr,si,g,bp,rp : double; stars : star_list; subframe : boolean; report,rastr,decstr : string; begin if head.naxis=0 then exit; {file loaded?} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key subframe:=(sender=export_star_info1); //full frame or sub section formalism:=mainwindow.Polynomial1.itemindex; calibrate_photometry; if head.mzero=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; mainwindow.image1.Canvas.Pen.mode := pmXor; if subframe then 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; measure_magnitudes(14,startX,startY,stopX,stopY,true {deep},stars); report:=magn_limit_str+#10; report:=report+'Passband filter used: '+head.filter_name+#10; report:=report+'Passband database='+head.passband_database+#10; report:=report+'Magnitudes are only valid if passband filter and passband database are compatible. E.g. CV=BP, G=V, R=R, B=B.'+#10; report:=report+'Option 1) Select in tab photometry a local database and in tab alignment the local database (standard=BP or V50=V)'+#10; report:=report+'Option 2) Select an online database in tab photometry.'+#10+#10; report:=report+'Saturated stars are excluded to avoid photometric errors. For photometry purposes ignore stars with a low SNR value (SNR<30).'+#10+#10; report:=report+'fitsX'+#9+'fitsY'+#9+'HFD'+#9+'α[°]'+#9+'δ[°]'+#9+'ADU'+#9+'SNR'+#9+'Magn_measured'+#9+'|'+#9+'Gaia-V'+#9+'Gaia-B'+#9+'Gaia-R'+#9+'Gaia-SG'+#9+'Gaia-SR'+#9+'Gaia-SI'+#9+'Gaia-G'+#9+'Gaia-BP'+#9+'Gaia-RP'+#10; end else measure_magnitudes(14,0,0,head.width-1,head.height-1,true {deep},stars); if length(stars[0])>0 then begin for i:=0 to length(stars[0])-1 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); magnitude:=(head.mzero - ln(stars[3,i]{flux})*2.5/ln(10));//flux to magnitude magn:=round(10*magnitude); image1.Canvas.textout(starX,starY-text_height,inttostr(magn) );{add magnitude as text} if subframe then begin pixel_to_celestial(head,1+stars[0,i],1+stars[1,i],formalism,raM,decM);//+1 to get fits coordinated rastr:=floattostrF(raM*180/pi,FFfixed,9,6); decstr:=floattostrF(decM*180/pi,FFfixed,9,6); report_one_star_magnitudes(raM,decM, {out} b,v,r,sg,sr,si,g,bp,rp ); //report the database magnitudes for a specfic position. Not efficient but simple report:=report+floattostrF(1+stars[0,i],FFfixed,6,2)+#9+floattostrF(1+stars[1,i],FFfixed,6,2)+#9+floattostrF(stars[2,i],FFfixed,5,3)+#9+rastr+#9+decstr+#9+floattostrF(1+stars[3,i],FFfixed,8,0)+#9+floattostrF(stars[4,i]{SNR},FFfixed,5,0)+#9+floattostrF(magnitude,FFfixed,5,3)+#9+'|' +#9+floattostrF(v,FFfixed,5,3)+#9+floattostrF(b,FFfixed,5,3)+#9+floattostrF(r,FFfixed,5,3)+#9+floattostrF(sg,FFfixed,5,3)+#9+floattostrF(sr,FFfixed,5,3)+#9+floattostrF(si,FFfixed,5,3) +#9+floattostrF(g,FFfixed,5,3)+#9+floattostrF(bp,FFfixed,5,3)+#9+floattostrF(rp,FFfixed,5,3)+ #10; end; end; end else memo2_message('No stars found!'); if subframe=false then begin 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,magn_limit_str); {magn_limit global variable calculate in plot_and_measure_stars} end else begin// to Clipboard Clipboard.AsText:=report; end; stars:=nil; Screen.Cursor:=crDefault; end; procedure Tmainwindow.annotations_visible1Click(Sender: TObject); begin // annotations_visible1.checked:= annotations_visible1.checked=false; stackmenu1.annotations_visible2.checked:=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); // stackmenu1.annotations_visible2.checked:=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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,mainwindow.memo1.lines,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},false); 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; {type adata = array of word; function rice_encoding(inp : adata; k,bitdepth : integer; out outp : adata ; out compressedSize : integer) : boolean; var i,j,m,m2,s,r,r2, q,x,bitpointer,len : longword; res,res_sum : longword; procedure put_bit( value : byte); var y,rest : longint; val : word; begin y:=bitpointer div bitdepth; rest:=bitpointer - y * bitdepth; if y>compressedSize then begin inc(compressedSize);//compressedSize:=y outp[y]:=0; //clear the byte end; outp[y]:=outp[y] or (value shl rest); //store right to left. Else use shl (bitdepth-1-rest) inc(bitpointer); end; begin result:=true; len:=length(inp); setlength(outp,len);//allow maximum same size as input m := 1 shl k;//calculate 2^k dec(m);//special. See remark 1 compressedSize:=0; bitpointer:=0; for j:=0 to len-1 do begin q:= inp[j] shr k; // quotient part, equivalent as inp[j]/2^k r:=inp[j] and m; // remainder part, fast way. Remark 1, Other solution would be r:=inp[j] - q*m if dec(m) is not applied. for i:=1 to q do put_bit(1); put_bit(0); for i:=k-1 downto 0 do put_bit( (r shr i) and 1 ); // remainder part if compressedSize>=len-1 then begin result:=false; break; end;//compression larger then orginal end;//for loop inc(compressedSize); end; } //procedure Tmainwindow.Button1Click(Sender: TObject); //var // inp,outp : array of word; // i,j,k,bestK,compressedSize: integer; // com,bestcompression : double; //begin // setlength(inp,head.Width*head.height); // setlength(inp,head.Width); // for i:=0 to head.Width-1 do // inp[i]:=round(img_loaded[0,i,(head.height div 3)]{/16}); // bestcompression:=999; // bestK:=0; // for k:=1 to 15 do //find best K factor for one line // begin // if rice_encoding(inp, k,16,outp,compressedSize) = true then // if compressedSize/head.Width<bestcompression then begin bestk:=k; bestcompression:=compressedSize/head.Width; end; // end; // if bestk=0 then exit; // inp:=nil; // setlength(inp,head.Width*head.height); // for i:=0 to head.Width-1 do // for j:=0 to head.height-1 do // begin // inp[i*j]:=round(img_loaded[0,i,j]{/16}); // img_loaded[0,i,j]:=inp[i*j]; // end; // if rice_encoding(inp, bestk,16,outp,compressedSize) = false then // beep; // com:=compressedSize/(head.Width*head.height); // beep; // inp:=nil; // outp:=nil; //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); begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key calibrate_photometry; 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.grid_az_alt1Click(Sender: TObject); begin if head.naxis=0 then exit; if grid_az_alt1.checked=false then {clear screen} begin plot_fits(mainwindow.image1,false,true); end else plot_grid(false);//az,alt grid 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.stretch1Exit(Sender: TObject); begin do_stretching; 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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.height,head.width); 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,y2,x2]:=xLine^[x*3];{red} if head.naxis3>1 then img_loaded[1,y2,x2]:=xLine^[x*3+1];{green} if head.naxis3>2 then img_loaded[2,y2,x2]:=xLine^[x*3+2];{blue} end; end; mainwindow.Memo1.Lines.BeginUpdate; 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 ',false ,head.crpix1);end; if head.crpix2<>0 then begin head.crpix2:=head.crpix2*ratio; update_float ('CRPIX2 =',' / Y of reference pixel ',false ,head.crpix2);end; if head.cdelt1<>0 then begin head.cdelt1:=head.cdelt1/ratio; update_float ('CDELT1 =',' / X pixel size (deg) ',false ,head.cdelt1);end; if head.cdelt2<>0 then begin head.cdelt2:=head.cdelt2/ratio; update_float ('CDELT2 =',' / Y pixel size (deg) ',false ,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) ',false ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_2); end; head.XBINNING:=head.XBINNING/ratio; head.YBINNING:=head.YBINNING/ratio; update_float ('XBINNING=',' / Binning factor in width ',false ,head.XBINNING); update_float ('YBINNING=',' / Binning factor in height ',false ,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) ',false ,head.XPIXSZ); update_float('YPIXSZ =',' / Pixel height in microns (after stretching) ',false ,head.YPIXSZ); update_float('PIXSIZE1=',' / Pixel width in microns (after stretching) ',false ,head.XPIXSZ); update_float('PIXSIZE2=',' / Pixel height in microns (after stretching) ',false ,head.YPIXSZ); end; add_text ('HISTORY ','Image stretched with factor '+ floattostr6(ratio)); mainwindow.Memo1.Lines.EndUpdate; remove_photometric_calibration;//from header {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,mainwindow.memo1.lines,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 undo1 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:=menus.ShortCut(VK_H,[ssMeta,ssShift]);//note Macs universally use Cmd-H for "Hide App so add shift" with flip_vertical1 do shortcut:=menus.ShortCut(VK_V,[ssMeta,ssShift]); with fittowindow1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with zoomfactorone1 do shortcut:=(shortcut and $BFFF) or $1000;//replace Ctrl equals $4000 by Meta equals $1000 with grid_ra_dec1 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} if DirectoryExists('/opt/astap')=false then 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; load_deep;{load the deepsky database once. If loaded no action} plot_deepsky(false);{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} recent_files.free; // arrays and string are automatic deallocated // wide_field_stars:=nil; {free wide_field_database} // vsp:=nil; // vsx:=nil; // online_database:=nil; // free mem // streak_lines:=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 :string);{plot annotation from header in ASTAP format} var {typ >0 line, value defines thickness line} size,xcenter,ycenter,text_height,text_width,fontsize,left,top :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; if head.height<512 then fontsize:=8 else fontsize:=12; mainwindow.image1.Canvas.Pen.width:=max(1,round(1*abs(typ))); ; mainwindow.image1.Canvas.font.size:=max(fontsize,round(fontsize*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 left:=x2 else left:=x2-text_width; left:=min(left, head.width-text_width);{stay away from the right side} if y2>=y1 then top:=y2 - (text_height div 3) else top:=y2- text_height; top:=min(top, head.height-text_height);{stay away from the bottom} mainwindow.image1.Canvas.textout( left,top ,name{name}); 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 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 ( ( abs(shape_fitsX-(x1+x2)/2) <30) and (abs(shape_fitsY-(y1+y2)/2)<30)) then begin var_lock:=list[5]; end; 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 ((list.count>7) and (abs( (x1+x2)/2 - (startx+stopx)/2)<15 ) and (abs((y1+y2)/2 - (starty+stopy)/2)<15)) then minor_planet_at_cursor:=list[7];//for mpc1992 report line 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 annotation_position(aname:string;var ra,dec : double);// calculate ra,dec position of one annotation var count1,x1,y1,x2,y2,formalism : integer; List: TStrings; // dummy : string; begin if head.naxis=0 then exit; {file loaded?} if head.cd1_1=0 then exit; List := TStringList.Create; list.StrictDelimiter:=true; formalism:=mainwindow.Polynomial1.itemindex; 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,posex(#39,mainwindow.Memo1.Lines[count1],20)-12)),List); if list.count>=6 then {correct annotation} begin // dummy:=list[5]; if aname=list[5] then //object found begin x1:=round(strtofloat2(list[0])); y1:=round(strtofloat2(list[1])); x2:=round(strtofloat2(list[2])); y2:=round(strtofloat2(list[3])); pixel_to_celestial(head,(x1+x2)/2,(y1+y2)/2,formalism, ra,dec {RA, DEC position annotation}); count1:=-1; //stop end; 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,startY+round(i*deltaY/len) ,startX+round(i*deltaX/len)]:=round((cwhite+bck.backgr)/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+bck.backgr)/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,mainwindow.memo1.lines,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+ 'Filter: '+head.filter_name+#13+#10+ 'Calibration-status: '+head.calstat+#13+#10+ 'Date-obs: '+head.date_obs+#13+#10+ 'Exposure-time: '+floattostr(head.exposure)); messagebox(mainwindow.handle,bericht,'Basic fits header',MB_OK); end; function position_to_string(sep:string; ra,dec:double):string; var l, b,az,alt : 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)+'°'+sep+floattostrF(dec*180/pi, FFfixed, 0, 8)+'°' else if coord_frame=2 then 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 else if coord_frame=3 then begin calculate_az_alt_basic(ra,dec,{out} az,alt);{calculate azimuth, altitude including refraction} result:=floattostrF(az*180/pi, FFfixed, 0, 1)+'°'+sep+floattostrF(alt*180/pi, FFfixed, 0, 1)+'°'; end else result:='Error'; end; function seperation : string; begin if DefaultFormatSettings.DecimalSeparator<>'.' then result:=' ' else result:=', '; 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(seperation,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(seperation,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} h:=panel1.height; w:=round(h*head.width/head.height); mainwindow.image1.height:=h; mainwindow.image1.width:=w; mainwindow.image1.top:=0; mw:=mainwindow.width; 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; 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(false);{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},false {check filter}) )) 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,extractspecified,extractspecified2,focusrequest,checkfilter : boolean; snr_min : double; binning,focus_count,report : integer; bck : Tbackground; 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}'+#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 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+ '-D abbreviation {Specify a star database [d80,d50,..]}'+#10+ '-o file {Name the output files with this base path & file name}'+#10+ '-sip {Add SIP (Simple Image Polynomial) coefficients}'+#10+ '-speed mode[auto/slow] {Slow is forcing reading a larger area from the star database (more overlap) to improve detection}'+#10+ '-wcs {Write a .wcs file in similar format as Astrometry.net. Else text style.}' +#10+ '-log {Write the solver log to file}'+#10+ '-update {update the FITS/TIFF header with the found solution. Jpeg, png will be written as fits}' +#10+ #10+ 'Analyse options:' +#10+ '-analyse snr_min {Analyse only and report median HFD and number of stars used}'+#10+ '-extract snr_min {As -analyse but additionally export info of all detectable stars to a .csv file}'+#10+ '-extract2 snr_min {Solve and export info of all detectable stars to a .csv file including ra, dec.}'+#10+ #10+ 'Extra options:' +#10+ '-annotate {Produce deepsky annotated jpg file}' +#10+ '-debug {Show GUI and stop prior to solving}' +#10+ '-tofits binning[1,2,3,4] {Make new fits file from PNG/JPG file input}'+#10+ '-sqm pedestal {add measured sqm value to the solution}'+#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('sip') then stackmenu1.add_sip1.checked:='n'<>GetOptionValue('sip'); if hasoption('speed') then stackmenu1.force_oversize1.checked:=('slow'=GetOptionValue('speed')); if hasoption('check') then checkfilter:=true else checkfilter:=false; 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'); extractspecified2:=hasoption('extract2'); if extractspecified2 then stackmenu1.add_sip1.checked:=true;//force sip for high accuracy analysespecified:=hasoption('analyse'); if ((file_loaded) and ((analysespecified) or (extractspecified)) ) then {analyse fits and report HFD value in errorlevel } begin if analysespecified then begin snr_min:=strtofloat2(getoptionvalue('analyse')); report:=0; {report nr stars and hfd only} end; if extractspecified then begin snr_min:=strtofloat2(getoptionvalue('extract')); report:=2; {report nr stars and hfd and export csv file} end; if snr_min=0 then snr_min:=30; analyse_image(img_loaded,head,snr_min,report, hfd_counter,bck,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; {$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;{analyse fits and report HFD value} if hasoption('d') then database_path:=GetOptionValue('d')+DirectorySeparator; {specify a different database path} if hasoption('D') then stackmenu1.star_database1.text:=GetOptionValue('D'); {specify a different database} if ((file_loaded) and (solve_image(img_loaded,head,true {get hist},checkfilter) )) 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 if centalt='' then //no old altitude begin centalt:=floattostr2(altitudefloat); update_text ('CENTALT =',#39+centalt+#39+' / [deg] Nominal altitude of center of image '); update_text ('OBJCTALT=',#39+centalt+#39+' / [deg] Nominal altitude of center of image '); end; update_text('SQM = ',floattostr2(sqmfloat)+' / Sky background [magn/arcsec^2]');//two decimals only for nice reporting update_text('COMMENT SQM',', used '+inttostr(pedestal)+' as pedestal value'); end else update_text('SQM =',char(39)+'Error calculating SQM value! Check in the SQM menu (ctrl+Q) first.'+char(39)); 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,false {update, already done for solving}); {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,false {update, already done for solving}); {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; if ((file_loaded) and (extractspecified2)) then begin snr_min:=strtofloat2(getoptionvalue('extract2')); if snr_min=0 then snr_min:=30; analyse_image(img_loaded,head,snr_min,2{export CSV only}, hfd_counter,bck,hfd_median); {find background, number of stars, median HFD} 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; do_stretching; ;{create gamma curve} exit; end; end;{-f option} end;{with application} {filename as parameter 1} do_stretching; ;{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 do_stretching; {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} pairsplitter1.position:=image_north_arrow1.top+image_north_arrow1.height+8;//set correct for 4k screens with hiDPI settings. Works only in show. Not in create //The thing is that the LCL scales the form on the Show method, because that any scaling produced before showing the form is not applied. end; procedure Tmainwindow.batch_add_solution1Click(Sender: TObject); var i,nrskipped, nrsolved,nrfailed,file_age,pedestal2,oldnrbits : integer; dobackup,add_lim_magn,solution_overwrite,solved,maintain_date,success,image_changed : 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_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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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 begin memo2_message('█ █ █ █ █ █ Skipping non FITS/TIFF file '+filename2+' █ █ █ █ █ █ '); continue; //skip wrong file types in case somebody typed *.* end; Application.ProcessMessages; if esc_pressed then break; {load image and solve image} if load_fits(filename2,true {light},true,true {update memo},0,mainwindow.memo1.lines,head,img_loaded) then {load image success} begin image_changed:=false; 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 if cal_batch1.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} if apply_dark_and_flat(img_loaded,head){apply dark, flat if required, renew if different hd.exposure or ccd temp. This will clear the header in load_fits} then begin //dark or flat or both applied update_text ('CALSTAT =',#39+head.calstat+#39); {calibration status} image_changed:=true; //get_hist:=true; {update required} end; end; memo2_message('Solving '+inttostr(i+1)+'-'+inttostr(Count)+': '+filename2); oldnrbits:=nrbits; solved:=solve_image(img_loaded,head,true {get hist}, false {check filter}); 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_lim_magn)) ) then {time to save} begin if add_lim_magn then begin calibrate_photometry; update_float('LIM_MAGN=',' / estimated limiting magnitude for point sources',false ,magn_limit); mess:=''; if ((pedestal<>0) or (pos('D',head.calstat)>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_text('SQM = ',floattostr2(sqmfloat)+' / Sky background [magn/arcsec^2]');//two decimals only for nice reporting update_text('COMMENT SQM',', used '+inttostr(pedestal2)+' as pedestal value'); mess:=', SQM'; if centalt='' then //no old altitude begin centalt:=floattostr2(altitudefloat); update_text ('CENTALT =',#39+centalt+#39+' / [deg] Nominal altitude of center of image '); update_text ('OBJCTALT=',#39+centalt+#39+' / [deg] Nominal altitude of center of image '); mess:=mess+', CENT-ALT'; end; end else begin update_text('SQM =',char(39)+'Error calculating SQM value! Check in the SQM menu (ctrl+Q) first.'+char(39)); memo2_message('Error calculating SQM value! Check in the SQM menu (ctrl+Q) first.'); 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 begin if image_changed=false then success:=savefits_update_header(filename2) else success:=save_fits(img_loaded,filename2,oldnrbits,true);//image was updated by calibration. end else success:=save_tiff16_secure(img_loaded,filename2);{guarantee no file is lost} if success=false then begin ShowMessage('Write error !!'+#10+#10 + filename2);Screen.Cursor:=crDefault; exit;end; if ((maintain_date) and (file_age>-1)) then FileSetDate(filename2,file_age); 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.stretch1CloseUp(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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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 // annotation_magn :=inputbox('Annotate stars','Annotate up to magnitude:' ,annotation_magn); // annotation_magn:=StringReplace(annotation_magn,',','.',[]); {replaces komma by dot} calibrate_photometry; 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 Tmainwindow.CropFITSimage1Click(Sender: TObject); var fitsX,fitsY,col,dum, formalism : integer; fxc,fyc, ra_c,dec_c, ra_n,dec_n,ra_m, dec_m, delta_ra : double; img_temp : image_array; begin if ((head.naxis<>0) and (abs(stopX-startX)>3)and (abs(stopY-starty)>3)) then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; formalism:=mainwindow.Polynomial1.itemindex; 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; inc(startX);//take only inside of rectangle inc(startY); dec(stopX); dec(stopY); startx:=max(startX,0); // prevent runtime errors. Box can be outside image startY:=max(startY,0); stopX:=min(stopX,head.width-1); stopY:=min(stopY,head.height-1); head.width:=stopX-startx+1; head.height:=stopY-starty+1; setlength(img_temp,head.naxis3,head.height,head.width);{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 EXCLUDING rectangle.} img_temp[col,fitsY-startY,fitsX-startX]:=img_loaded[col,fitsY,fitsX]; 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.} fxc:=1+(startX+stopX)/2;//position of new center fyc:=1+(startY+stopY)/2; pixel_to_celestial(head,fxc,fyc, formalism, 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. pixel_to_celestial(head,1+fxc,fyc, formalism, ra_n,dec_n {RA, DEC position, one pixel moved in head.crpix1}); //make 1 step in direction head.crpix2 pixel_to_celestial(head,fxc,fyc+1 , formalism, 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) ',false ,head.ra0*180/pi); update_float ('CRVAL2 =',' / DEC of reference pixel (deg) ',false ,head.dec0*180/pi); update_float ('CRPIX1 =',' / X of reference pixel ',false ,head.crpix1);{adapt reference pixel of plate solution. Is no longer in the middle} update_float ('CRPIX2 =',' / Y of reference pixel ',false ,head.crpix2); update_float ('CROTA1 =',' / Image twist X axis (deg) ',false ,head.crota1); update_float ('CROTA2 =',' / Image twist Y axis (deg) E of N if not flipped.',false ,head.crota2); update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,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 val(inp,ra,error1); //try easy conversion if error1<>0 then begin //do compilcated conversion 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 else begin errorRA:=false; ra:=ra*pi/12; //convert to radians end; 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 val(inp,dec,error1);//try easy decode including scientific 6.704750E-01 if error1<>0 then begin //try dificult decode such as '+53 20 52.510' 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//end of difficult decode else begin errorDec:=false; dec:=dec*pi/180;//convert to radians end; 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 find_star_center(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,y_trunc ,x_trunc ]) * (1-x_frac)*(1-y_frac);{pixel left top, 1} result:=result + (img[0,y_trunc ,x_trunc+1]) * ( x_frac)*(1-y_frac);{pixel right top, 2} result:=result + (img[0,y_trunc+1,x_trunc ]) * (1-x_frac)*( y_frac);{pixel left bottom, 3} result:=result + (img[0,y_trunc+1,x_trunc+1]) * ( x_frac)*( y_frac);{pixel right bottom, 4} except end; end; begin w:=Length(img[0,0]); {width} h:=Length(img[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,j,i]; 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 Tmainwindow.enterposition1Click(Sender: TObject); var ra2,dec2,pixeldistance,distance,angle,angle2,angle3,xc,yc : double; kommapos : integer; error2,flipped : boolean; begin if sender=enterposition1 then begin find_star_center(img_loaded,10,startX,startY,xc,yc);//find center of gravity shape_marker1_fitsX:=xc+1;//array to fits coordinates shape_marker1_fitsY:=yc+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 find_star_center(img_loaded,10,startX,startY,xc,yc);//find center of gravity shape_marker2_fitsX:=xc+1;//array to fits coordinates shape_marker2_fitsY:=yc+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} angle2:= position_angle(ra2,dec2,head.ra0,head.dec0);//Position angle between a line from ra0,dec0 to ra1,dec1 and a line from ra0, dec0 to the celestial north . Rigorous method 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){swapped n-s or e-w image} else angle:=(-angle2-angle3); 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.crota1:=head.crota2; old_to_new_WCS(head);{new WCS missing, convert old WCS to new} mainwindow.Memo1.Lines.BeginUpdate; 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 ',false ,head.crpix1); update_float ('CRPIX2 =',' / Y of reference pixel ',false ,head.crpix2); update_float ('CRVAL1 =',' / RA of reference pixel (deg) ',false ,head.ra0*180/pi); update_float ('CRVAL2 =',' / DEC of reference pixel (deg) ',false ,head.dec0*180/pi); update_float ('CDELT1 =',' / X pixel size (deg) ',false ,head.cdelt1); update_float ('CDELT2 =',' / Y pixel size (deg) ',false ,head.cdelt2); update_float ('CROTA1 =',' / Image twist X axis (deg) ',false ,head.crota1); update_float ('CROTA2 =',' / Image twist Y axis (deg) E of N if not flipped.',false ,head.crota2); update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_2); update_text ('PLTSOLVD=',' T / ASTAP manual with two positions'); mainwindow.Memo1.Lines.EndUpdate; update_menu_related_to_solver(true); {update menu section related to solver succesfull} plot_fits(mainwindow.image1,false,true); end; end; procedure Tmainwindow.inversimage1Click(Sender: TObject); var max_range, col,fitsX,fitsY : integer; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,fitsY,fitsX]:=max_range-img_loaded[col,fitsY,fitsX] 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.area_set1.caption:='['+inttostr(areax1)+','+inttostr(areay1)+'], ['+inttostr(areax2)+','+inttostr(areay2)+']'; stackmenu1.center_position1.caption:='Center: '+inttostr((startX+stopX) div 2)+', '+inttostr((startY+stopY) div 2); end; procedure rotate_arbitrary(angle,flipped_view, flipped_image: double); var centerxs,centerys : double; begin centerxs:=head.width/2; centerys:=head.height/2; raster_rotate(flipped_view*angle,centerxs,centerys ,img_loaded); head.width:=length(img_loaded[0,0]);{update width} ; head.height:=length(img_loaded[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_solution(true {keep wcs}); end; head.crota2:=fnmodulo(head.crota2+angle*flipped_image*flipped_view,360); head.crota1:=fnmodulo(head.crota1+angle*flipped_image*flipped_view,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) ',false ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_2); update_float ('CRPIX1 =',' / X of reference pixel ',false ,head.crpix1); update_float ('CRPIX2 =',' / Y of reference pixel ',false ,head.crpix2); update_float ('CROTA1 =',' / Image twist X axis (deg) ',false ,head.crota1); update_float ('CROTA2 =',' / Image twist Y axis (deg) E of N if not flipped.',false ,head.crota2); end; remove_key('ANNOTATE',true{all});{remove annotations. They would be otherwise invalid} add_text ('HISTORY ','Rotated CCW by angle '+floattostrF(angle,fffixed, 0, 2)); end; procedure Tmainwindow.rotate_arbitrary1Click(Sender: TObject); var angle,flipped_view,flipped_image : double; valueI : string; begin flipped_view:=+1;//not flipped if head.cd1_1*head.cd2_2 - head.cd1_2*head.cd2_1 >0 then // flipped? flipped_image:=-1 //change rotation for flipped image, {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} else flipped_image:=+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 angle:=angle*flipped_image 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_view:=-flipped_view;{change rotation if flipped} if mainwindow.flip_vertical1.checked then flipped_view:=-flipped_view;{change rotation if flipped} end; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key memo2_message('Start rotation. This takes some time due to subsampling 10x10.'); backup_img; rotate_arbitrary(angle,flipped_view,flipped_image); 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; flipped_image : double; 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 Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,mainwindow.memo1.lines,head,img_loaded)=false)) then begin break;end; if head.cd1_1*head.cd2_2 - head.cd1_2*head.cd2_1 >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_image:=-1 // change rotation for flipped image else flipped_image:=+1; // not flipped if sender=mainwindow.batch_rotate_left1 then rotate_arbitrary(90,1,flipped_image) else if sender=mainwindow.batch_rotate_right1 then rotate_arbitrary(-90,1,flipped_image) else if sender=mainwindow.batch_rotate_1801 then rotate_arbitrary(180,1,flipped_image); 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 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:=6;{1 is deepsky, 2 is hyperleda, 3 is variable magn 11 loaded, 4 is variable magn 13 loaded, 5 is variable magn 15 loaded, 6=simbad} plot_deepsky(false); end; procedure plot_vizier(info,filter:string); //plot online info Gaia from Vizier var regel,simobject : string; p1,p2,p3,p4,count : integer; rad,decd,G,Bp,Rp,themagn : double; datalines : boolean; slist: TStringList; begin //--------------- --------------- --------- --------- // G BP RP //RA_ICRS (deg) DE_ICRS (deg) mag (mag) mag (mag) //--------------- --------------- --------- --------- ------- //086.58690478866 -10.38175731298 20.486355 20.757553 ....... //086.57689784801 -10.37081756215 20.496525 21.346535 ....... //086.57543967588 -10.36071651144 20.726021 21.413324 ....... slist := TStringList.Create; deepstring.clear; deepstring.add('');//add two lines as blank comments deepstring.add(''); datalines:=false; try slist.Text := info; count:=35;{skip first part} while count+1<=slist.count do begin regel:=ansistring(slist[count]); inc(count); if ((datalines) and (length(regel)>10)) then //Data from Vizier begin {magnitude} p1:=pos(' ',regel);{first column changes in width} p2:=posex(' ',regel,p1+3);//there could be two spaces instead of one p3:=posex(' ',regel,p2+3); p4:=posex(' ',regel,p3+3); if p3>0 then //this is a real line of the object list begin rad:=strtofloat1(copy(regel,1,p1-1)); decd:=strtofloat1(copy(regel,p1+1,p2-p1-1)); g:=strtofloat1(copy(regel,p2+1,p3-p2-1)); Bp:=strtofloat1(copy(regel,p3+1,p4-p3-1)); Rp:=strtofloat1(copy(regel,p4+1,99)); themagn:=transform_gaia(filter,g,bp,rp);//transformation of Gaia magnitudes if themagn<>0 then //valid value begin simobject:=inttostr(round(rad*864000/360))+','+inttostr(round(decd*324000/90))+','+inttostr(round(10*themagn)); //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; end {correct line of object list} else if copy(regel,1,7)='RA_ICRS' then //data begins begin datalines:=true; inc(count);//skip one more line containing --------------- --------------- --------- --------- end; end; finally slist.Free; end; database_nr:=6;{1 is deepsky, 2 is hyperleda, 3 is variable magn 11 loaded, 4 is variable magn 13 loaded, 5 is variable magn 15 loaded, 6=simbad} plot_deepsky(false); end; procedure Tmainwindow.gaia_star_position1Click(Sender: TObject); var url,ra8,dec8,sgn,window_size,dec_degrees : string; ang_h,ang_w,ra1,ra2,dec1,dec2 : double; radius,x1,y1,formalism : integer; begin formalism:=mainwindow.Polynomial1.itemindex; 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 //vizier 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);{square box} {-c.geom=b square box, -c.bs=10 box size 10arc else radius} pixel_to_celestial(head,startX+1,startY+1, formalism,ra1,dec1);{first position} pixel_to_celestial(head,stopX+1,stopY+1,formalism,ra2,dec2);{first position} object_raM:=(ra1+ra2)/2; {center position} object_decM:=(dec1+dec2)/2; end; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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=vizier_gaia_annotation1 then //Plot Gaia stars begin annotation_magn:=inputbox('Chart request','Limiting magnitude chart:' ,annotation_magn); annotation_magn:=StringReplace(annotation_magn,',','.',[]); {replaces komma by dot} magn_type:=uppercase(inputbox('Chart request','Magnitude type [G, BP, V, B, R]:' , magn_type)); x1:=(stopX+startX) div 2; y1:=(stopY+startY) div 2; url:='http://vizier.u-strasbg.fr/viz-bin/asu-txt?-source=I/355/Gaiadr3&-out=RA_ICRS,DE_ICRS,Gmag,BPmag,RPmag&-c='+ra8+sgn+dec8+window_size+'&-out.max=10000&Gmag=<'+trim(annotation_magn); // url:='http://vizier.u-strasbg.fr/viz-bin/asu-txt?-source=I/355/Gaiadr3&-out=RA_ICRS,DE_ICRS,Gmag,BPmag,RPmag&-c='+ra8+sgn+dec8+'&-c.bs=533.293551/368.996043&-out.max=1000&Gmag=%3C23 plot_vizier(get_http(url),magn_type); Screen.Cursor:=crDefault; exit; end else if sender=simbad_annotation_deepsky_filtered1 then //Simbad deepsky with maintype filter 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='+maintype+')'+'%26+region(box,'+ra8+sgn+dec8+',+'+floattostr4(ang_w)+'s+'+floattostr4(ang_h)+'s)&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 //Browser 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+'&-out.max=300&Gmag=<23'; //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 //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=2x2&-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 ellipse 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://atlas.obs-hp.fr/hyperleda/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 // http://atlas.obs-hp.fr/hyperleda/fG.cgi?n=a000&ob=ra&c=o&p=J161.7415593981d%2C%2B11.8948545867d&f=17.877745 end else if sender=mainwindow.ned_query1 then begin {sender ned_query1} radius:=max(abs(stopX-startX),abs(stopY-startY)) div 2; {convert ellipse 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} annotation_magn:=inputbox('Chart request','Limiting magnitude chart:' ,annotation_magn); annotation_magn:=StringReplace(annotation_magn,',','.',[]); {replaces komma by dot} radius:=max(abs(stopX-startX),abs(stopY-startY)) div 2; {convert ellipse 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(annotation_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_star_center(img,10,startX,startY,xc,yc); end else if pos('medium',stackmenu1.manual_centering1.text)<>0 then {comet} begin find_star_center(img,20,startX,startY,xc,yc); end else if pos('large',stackmenu1.manual_centering1.text)<>0 then {comet} begin find_star_center(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,c : integer; hfd2,fwhm_star2,snr,flux,xc,yc,xcf,ycf,center_x,center_y,a,b : double; begin if head.naxis=0 then exit; 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} with stackmenu1 do for c := 0 to listview1.Items.Count - 1 do if listview1.Items[c].Selected then begin listview_add_xy(c,shape_fitsX,shape_fitsY);{add to list of listview1} {$ifdef darwin} {MacOS} {bugfix darwin green red colouring} stackmenu1.ListView1.Items.item[c].Subitems.strings[L_result]:='✓ star'; {$endif} break; end; 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:='?';//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; //check if Var is within an annotation var_lock:='';//clear name if ((annotated) and (mainwindow.annotations_visible1.checked)) then begin plot_annotations(false {use solution vectors},false); if var_lock<>'' then begin memo2_message('Var locked on object: '+var_lock); mainwindow.Shape_alignment_marker1.HINT:=var_lock; end; end; 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; ctrlbutton :=((ssCtrl in shift) or ((ssShift in shift)));//generic variable for rectangle shape 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,0]); {width} height5:=Length(img_loaded[0]); {height} {ellipse parameters} center_x:=(copy_paste_x + copy_paste_x+copy_paste_w-1)/2; center_y:=(copy_paste_y + copy_paste_y+copy_paste_h-1)/2; a:=(copy_paste_w-1)/2; b:=(copy_paste_h-1)/2; 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 if ((copy_paste_shape=0 {use no ellipse}) or (sqr(fx-center_X)/sqr(a) +sqr(fy-center_Y)/sqr(b)<1)) then // standard equation of the ellipse img_loaded[k ,max(0,min(height5-1,round(startY+(fy-copy_paste_y) - (copy_paste_h div 2)))),max(0,min(width5-1,round(startX+(fx-copy_paste_x)- (copy_paste_w div 2)))) ]:=img_backup[index_backup].img[k,fy,fx];{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,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,y_trunc ,x_trunc ]) * (1-x_frac)*(1-y_frac);{pixel left top, 1} result:=result + (img[0,y_trunc ,x_trunc+1]) * ( x_frac)*(1-y_frac);{pixel right top, 2} result:=result + (img[0,y_trunc+1,x_trunc ]) * (1-x_frac)*( y_frac);{pixel left bottom, 3} result:=result + (img[0,y_trunc+1,x_trunc+1]) * ( x_frac)*( y_frac);{pixel right bottom,4} except end; end; begin width5:=Length(img[0,0]);{width} height5:=Length(img[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,y1+j,x1+i]; //for testing: mainwindow.image1.canvas.pixels[y1+j,x1+i]:=$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,y1+j,x1+i])- 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 //adu to e- correction flux:=flux*adu_e*sqr(head.xbinning);// if an image is binned the adu's are averaged. So bin2x2 result in four times less adu. Star flux should be independend of binning sd_bg:=sd_bg*adu_e*head.xbinning;//noise is sqrt of signal. So electron noise reduces linear with binning value end; if flux>=1 then snr:=flux /sqrt(flux +sqr(radius)*pi*sqr(sd_bg)) else snr:=0;//rare but happens. Prevent runtime errors by /flux {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.s2014/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 measure_hotpixels(x1,y1, x2,y2,col : integer; sd,mean: double; img : image_array; out hotpixel_perc, hotpixel_adu :double);{calculate the hotpixels percentage and RMS value} var i,j,counter,counter2,w,h : integer; value : double; begin w:=Length(img[0,0]); {width} h:=Length(img[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); if ((y1>y2) or (x1>x2)) then exit; hotpixel_adu:=0; counter:=0; counter2:=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:=abs(img[col,j,i]-mean); if value<=3*sd then {ignore outliers} inc(counter) else begin hotpixel_adu:=hotpixel_adu+sqr(value); inc(counter2); end; end; if counter2>0 then hotpixel_adu:=sqrt(hotpixel_adu/counter2) else hotpixel_adu:=0; hotpixel_perc:=0.997 - counter/(counter+counter2);//percentage hot pixels. Within sigma 3.0, 99.73% remains. 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,0]); {width} h:=Length(img[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,j,i]; 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,j,i]-mean; if ((value<mean {not a large outlier}) and ((iterations=0) or (abs(value)<=3*sd_old)) ) then {ignore outliers after first run} begin sd:=sd+sqr(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; 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, sd : double): string; begin // CMOS camera/software binning. Sky noise dominant. Software binning is sum pixels divide by four. // // e- / pixel received Gain ADU EGAIN σ ADU (noise) σ e- (noise) // bin 1x1 100 e- 1 (unity gain) 100 ADU 1 e-/ADU (bin1x1) sqrt(100)=10 ADU sqrt(100 e-)=10 e- // bin 2x2 400 e- 1 (unity gain) 100 ADU 1 e-/ADU (bin1x1) sqrt(10ADU^2+10ADU^2+10ADU^2+10ADU^2)/4=5 ADU sqrt(400 e-)/4=5 e- // e- / pixel received Gain ADU EGAIN σ ADU (noise) σ e- (noise) // bin 1x1 100 e- 2 200 ADU 0.5 e-/ADU (bin1x1) 2*sqrt(100)=20 ADU sqrt(100 e-)=10 e- // bin 2x2 400 e- 2 200 ADU=2*sqrt(400)/4 0.5 e-/ADU (bin1x1) sqrt(20ADU^2+20ADU^2+20ADU^2+20ADU^2)/4=10 ADU sqrt(400 e-)/4=5 e- // // Ik ga er vanuit dat het ontvangen licht in de pixels totaal 100 electrons (e-) in een echte pixel vrijmaakt. De ruis (σ) ofwel shot noise is dan ongeveer de wortel van het aantal electrons. // Bij software binning halveert de pixelruis met een factor 2 voor zowel de ruis uitgedrukt in ADU als electrons. Ruis sommeer je als σ_tot:=sqrt(σ1^2+ σ2^2) result:=floattostrF(sd,FFGeneral,3,3); if adu_e<>0 then result:=result+' e-' // in electrons end; procedure Tmainwindow.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var hfd2,fwhm_star2,snr,flux,xf,yf, raM,decM,sd,dummy,conv_factor, adu_e : double; s1,s2, hfd_str, fwhm_str,snr_str,mag_str,dist_str,pa_str : string; width5,height5,box_SX,box_SY,flipH,flipV,iterations, box_LX,box_LY : 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,0]); {width} height5:=Length(img_loaded[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 if ssright in shift then {rubber rectangle} begin 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 flipH>0 then box_SX:=min(startX,stopX) else box_SX:=width5-1-max(startX,stopX);//box left position if flipV<0 then box_SY:=min(startY,stopY) else box_SY:=height5-1-max(startY,stopY);// box top position box_LX:=abs(startX-stopX);//box width box_LY:=abs(startY-stopY);// box height boxshape1.Left:=image1.left + trunc((image1.width/width5)*box_SX); boxshape1.top:= image1.top+trunc((image1.height/height5)* box_SY); boxshape1.width:= trunc( (image1.width/width5)* (box_LX+1) ); boxshape1.height:=trunc( (image1.height/height5)* (box_LY+1) ); boxshape1.Pen.width :=max(1,round(image1.width/width5)); boxshape1.visible:=true; if ctrlbutton then boxshape1.shape:=STellipse else boxshape1.shape:=STrectangle; ang_sep_two_positions(startX+1,startY+1,mouse_fitsX,mouse_fitsY,dist_str,pa_str); mainwindow.statusbar1.panels[7].text:=inttostr(box_LX)+' x '+inttostr(box_LY)+' '+dist_str+' ∠ '+pa_str;{indicate rectangle size} end else begin mainwindow.statusbar1.panels[7].text:='';{remove crop size} 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,copy_paste_shape {rectangle or ellipse},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_fitsy)-1,round(mouse_fitsx)-1]-bck.backgr; b:=img_loaded[2,round(mouse_fitsy)-1,round(mouse_fitsx)-1]-bck.backgr; 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_fitsY)-1,round(mouse_fitsX)-1],ffgeneral,5,0)+']' else if head.naxis3=3 then mainwindow.statusbar1.panels[3].text:=s1+', '+s2+' = ['+floattostrF(img_loaded[0,round(mouse_fitsY)-1,round(mouse_fitsX)-1],ffgeneral,5,0)+'/'+ {color} floattostrF(img_loaded[1,round(mouse_fitsY)-1,round(mouse_fitsX)-1],ffgeneral,5,0)+'/'+ floattostrF(img_loaded[2,round(mouse_fitsY)-1,round(mouse_fitsX)-1],ffgeneral,5,0)+' '+']' else mainwindow.statusbar1.panels[3].text:=''; except end; pixel_to_celestial(head,mouse_fitsx,mouse_fitsy,mainwindow.Polynomial1.itemindex,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},head.mzero_radius,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 //star detected begin object_hfd:=hfd2; 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. No unit if head.mzero<>0 then {offset calculated in star annotation call} begin str(head.mzero -ln(flux)*2.5/ln(10):0:2,mag_str); mag_str:=', '+head.passband_database+'='+mag_str end else mag_str:=''; {centered coordinates} pixel_to_celestial(head,object_xc+1,object_yc+1,mainwindow.Polynomial1.itemindex,object_raM,object_decM);{input in FITS coordinates} if ((object_raM<>0) and (object_decM<>0)) then mainwindow.statusbar1.panels[1].text:=position_to_string(' ',object_raM,object_decM) //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; {+', '+floattostrF(flux,ffFixed,0,0)}; if adu_e<>0 then mainwindow.statusbar1.panels[7].text:=floattostrF(flux,ffFixed,0,0)+' e-' else mainwindow.statusbar1.panels[7].text:=floattostrF(flux,ffFixed,0,0)+' ADU'; if star_profile1.checked then begin plot_star_profile(round(object_xc),round(object_yc)); star_profile_plotted:=true; end; 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, sd); //reports noise in ADU's (adu_e=0) or electrons if star_profile_plotted then plot_north; star_profile_plotted:=false; end; end; procedure Tmainwindow.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button=mbright then begin if abs(stopX-startX)>2 then boxshape1.visible:=true;//extra for case it is invisible PopupMenu1.PopUp;{call popup manually if right key is released, not when clicked. Set in popupmenu autopopup off !!!} boxshape1.visible:=false; 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,''); filename3:=stringreplace(filename3,'_stacked','',[]); //remove stacked mark 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,0]);{width} height5:=length(img[0]);{height} setlength(result,colours5,height5,width5); 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,fitsY,fitsX]; col_g:=img[1,fitsY,fitsX]; col_b:=img[2,fitsY,fitsX]; colrr:=(col_r-bck.backgr)/(cwhite-bck.backgr);{scale to 0..1} colgg:=(col_g-bck.backgr)/(cwhite-bck.backgr);{scale to 0..1} colbb:=(col_b-bck.backgr)/(cwhite-bck.backgr);{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,fitsY,fitsX]:=col_r; result[1,fitsY,fitsX]:=col_g; result[2,fitsY,fitsX]:=col_b; end {RGB fits with naxis3=3} else begin {mono, naxis3=1} col_r:=img[0,fitsY,fitsX]; colrr:=(col_r-bck.backgr)/(cwhite-bck.backgr);{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,fitsY,fitsX] :=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,0]);{width} height2:=length(img[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,k,m]; 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,k,m]; 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,k,m]; 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,k,m]; 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,k,m]/65535; ppmbuffer32[m*3]:=lw; value1:=img[1,k,m]/65535; ppmbuffer32[m*3+1]:=lw; value1:=img[2,k,m]/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,k,m]/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,0]);{width} height5:=length(img[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,k,m]), $FFFF); if colours5>1 then thecolor.green:=min(round(img[1,k,m]), $FFFF) else thecolor.green:=thecolor.red; if colours5>2 then thecolor.blue:=min(round(img[2,k,m]), $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,0]);{width} height5:=length(img[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,k,m]*factor), $FFFF); if colours5>1 then thecolor.green:=min(round(img[1,k,m]*factor), $FFFF) else thecolor.green:=thecolor.red; if colours5>2 then thecolor.blue:=min(round(img[2,k,m]*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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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 // if head.height*head.cdelt2<=0.2 then //remove !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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.export_star_info1Click(Sender: TObject); var dum : integer; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key //form_inspection1.undo_button1Click(nil);{undo if required} backup_img; if ((abs(stopX-startX)>1)and (abs(stopY-starty)>1))=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; mainwindow.annotate_with_measured_magnitudes1Click(Sender); Screen.Cursor:=crDefault; { Always restore to normal } end; procedure Tmainwindow.flip_H1Click(Sender: TObject); var col,fitsX,fitsY : integer; vertical : boolean; img_temp : image_array; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; vertical:= (sender=flip_V1); setlength(img_temp,head.naxis3,head.height,head.width); 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,(head.height-1)-fitsY, fitsX]:=img_loaded[col,fitsY,fitsX] else img_temp[col,fitsY,(head.width-1)-fitsX]:=img_loaded[col,fitsY,fitsX]; 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} mainwindow.Memo1.Lines.BeginUpdate; remove_solution(true {keep wcs}); update_float ('CD1_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd1_1); update_float ('CD1_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd1_2); update_float ('CD2_1 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_1); update_float ('CD2_2 =',' / CD matrix to convert (x,y) to (Ra, Dec) ',false ,head.cd2_2); update_float ('CDELT1 =',' / X pixel size (deg) ',false ,head.cdelt1); update_float ('CDELT2 =',' / Y pixel size (deg) ',false ,head.cdelt2); update_float ('CROTA1 =',' / Image twist of X axis (deg) ',false ,head.crota1); update_float ('CROTA2 =',' / Image twist of Y axis E of N (deg) ',false ,head.crota2); remove_key('ROWORDER',false{all});{just remove to be sure no debayer confusion} mainwindow.Memo1.Lines.EndUpdate; 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.localcoloursmooth2Click(Sender: TObject); var fitsX,fitsY,dum,k,counter : integer; flux,center_x,center_y,a,b,rgb, lumr : 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; center_x:=(startx+stopX)/2; center_y:=(startY+stopY)/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 if sqr(fitsX-center_X)/sqr(a) +sqr(fitsY-center_Y)/sqr(b)>1 then // standard equation of the ellipse, out side ellipse begin for k:=0 to head.naxis3-1 do {do all colors} mean[k]:=mean[k]+img_loaded[k,fitsY,fitsX]; 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 if sqr(fitsX-center_X)/sqr(a) +sqr(fitsY-center_Y)/sqr(b)<1 then // standard equation of the ellipse, within the ellipse begin for k:=0 to head.naxis3-1 do {do all colors} begin colour[k]:=colour[k]+img_loaded[k,fitsY,fitsX]-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 if sqr(fitsX-center_X)/sqr(a) +sqr(fitsY-center_Y)/sqr(b)<1 then // standard equation of the ellipse, within the ellipse begin flux:=(img_loaded[0,fitsY,fitsX]-mean[0] +img_loaded[1,fitsY,fitsX]-mean[1] +img_loaded[2,fitsY,fitsX]-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,fitsY,fitsX]:={new_noise[k]}+ mean[0]+colour[0]*lumr; img_loaded[1,fitsY,fitsX]:={new_noise[k]}+ mean[1]+colour[1]*lumr; img_loaded[2,fitsY,fitsX]:={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.fittowindow1Click(Sender: TObject); begin mainwindow.FormResize(nil); end; procedure Tmainwindow.move_images1Click(Sender: TObject); var I : integer; succ,err : boolean; thepath:string; head_2 : theader; img_temp : image_array; 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,mainwindow.memo1.lines,head_2,img_temp) then {load image success} begin date_to_jd(head_2.date_obs,head_2.date_avg,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)+', '+head_2.filter_name;// 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; end; procedure Tmainwindow.Panel1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Image1MouseDown(Sender,Button,Shift, X-image1.left, Y-image1.top);//transfer mouse down to image1 end; procedure Tmainwindow.set_modified_date1Click(Sender: TObject); var I : integer; err : boolean; head_2 : theader; img_temp : image_array; 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,mainwindow.memo1.lines,head_2,img_temp) then {load image success} begin date_to_jd(head_2.date_obs,head_2.date_avg,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; 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; img_temp : image_array; 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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; if img=nil then begin memo2_message('Error, no image'); exit; end; {get dimensions directly from array} colours5:=length(img);{nr colours} width5:=length(img[0,0]);{width} height5:=length(img[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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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(bck.backgr) ); {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,i,j];{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,i,j];{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,i,j]))) - 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,i,j]);{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.windowstate:=wsNormal; 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.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_2024.05.01.orig/unit_stars_wide_field.pas�����������������������������������������������������0000644�0001751�0001751�00006142522�14614535560�020566� 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_2024.05.01.orig/unit_star_align.pas�����������������������������������������������������������0000644�0001751�0001751�00000121755�14614535560�017401� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_star_align; {Copyright (C) 2017, 2024 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 solution_vector = array[0..2] of double; var //starlist2, 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} function solution_str: string; implementation uses unit_annotation; function floattostr6b(x:double):string;//always with dot decimal seperator. Float to string with 6 decimals begin str(x:5:5,result); end; function solution_str: string; begin result:='Solution[px] 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; { 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_columns-1,0..nr_equations-1]:=solution_vector[0..2] * A_XYpositions[0..nr_columns-1,0..nr_equations-1]} { } { see also Montenbruck & Pfleger, Astronomy on the personal computer} function lsq_fit( A_matrix: star_list; {[, 0..3,0..nr_equations-1]} b_matrix : array of double;{equations result, b=A*s} out x_matrix: solution_vector ): boolean; 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[0]); nr_columns:=length(A_matrix);{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_columns,nr_equations);{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[j,i]<>0 then begin{calculate p, q and new temp_matrix[j,j]; set temp_matrix[j,i]=0} if abs(temp_matrix[j,j])<tiny*abs(temp_matrix[j,i]) then begin p:=0; q:=1; temp_matrix[j,j]:=-temp_matrix[j,i]; temp_matrix[j,i]:=0; end else begin // Notes: // Zero the left bottom corner of the matrix // Residuals are r1..rn // The sum of the sqr(residuals) should be minimised. // Take two numbers where (p^2+q^2) = 1. // Then (r1^2+r2^2) = (p^2+q^2)*(r1^2+r2^2) // Choose p and h as follows: // p = +A11/h // q = -A21/h // where h= +-sqrt(A11^2+A21^2) // A21=q*A11+p*A21 = (-A21*A11 + A21*A11)/h=0 h:=sqrt(temp_matrix[j,j]*temp_matrix[j,j]+temp_matrix[j,i]*temp_matrix[j,i]); if temp_matrix[j,j]<0 then h:=-h; p:=temp_matrix[j,j]/h; q:=-temp_matrix[j,i]/h; temp_matrix[j,j]:=h; temp_matrix[j,i]:=0; end; {calculate the rest of the line} for k:=j+1 to nr_columns-1 do begin h:= p*temp_matrix[k,j] - q*temp_matrix[k,i]; temp_matrix[k,i] := q*temp_matrix[k,j] + p*temp_matrix[k,i]; temp_matrix[k,j] := 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[k,i]*x_matrix[k]; if abs(temp_matrix[i,i])>1E-30 then x_matrix[i] := h/temp_matrix[i,i] else exit(false);//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; result:=true; 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; mainwindow.image1.Canvas.Pen.mode:=pmXor; 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_distance1,j_distance2,j_distance3,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));{resulting tolerance band will be about twice the average star distance assuming the stars are equally distributed} 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_distance1:=0;{give it a default value} j_distance2:=0; j_distance3:=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_distance3:=j_distance2;{remember the star position in the list} distance2:=distance1;{distance second closest star} j_distance2:=j_distance1;{remember the star position in the list} distance1:=distance;{distance closest star} j_distance1:=j;{mark later as used} end else if distance<distance2 then begin distance3:=distance2;{distance third closest star} j_distance3:=j_distance2;{remember the star position in the list} distance2:=distance;{distance second closest star} j_distance2:=j; end else if distance<distance3 then begin distance3:=distance;{third closest star} j_distance3:=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_distance1]; {copy the second star position to the quad array} y2:=starlist[1,j_distance1]; x3:=starlist[0,j_distance2]; y3:=starlist[1,j_distance2]; x4:=starlist[0,j_distance3]; y4:=starlist[1,j_distance3]; xt:=(x1+x2+x3+x4)/4; {mean x position quad} yt:=(y1+y2+y3+y4)/4; {mean y position quad} identical_quad:=false; for k:=0 to nrquads-1 do // check for an identical quad begin 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; break;//stop searching end; 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_distance1,j_distance2,j_distance3,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,k : 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; for k:=0 to nrquads-1 do // check for an identical quad begin 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; break;//stop searching end; 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));{resulting tolerance band will be about twice the average star distance assuming the stars are equally distributed} 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_distance1:=0;{give it a default value} j_distance2:=0; j_distance3:=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_distance3:=j_distance2;{remember the star position in the list} distance2:=distance1;{distance second closest star} j_distance2:=j_distance1;{remember the star position in the list} distance1:=distance;{distance closest star} j_distance1:=j;{mark later as used} end else if distance<distance2 then begin distance3:=distance2;{distance third closest star} j_distance3:=j_distance2;{remember the star position in the list} distance2:=distance;{distance second closest star} j_distance2:=j; end else if distance<distance3 then begin distance3:=distance;{third closest star} j_distance3:=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_distance1]; {copy the second star position to the quad array} y2a:=starlist[1,j_distance1]; x3a:=starlist[0,j_distance2]; y3a:=starlist[1,j_distance2]; x4a:=starlist[0,j_distance3]; y4a:=starlist[1,j_distance3]; 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; for k:=0 to nrrealquads-1 do // check for an identical quad begin 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; break;//stop searching end; 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_distance1,j_distance2,j_distance3,nrquads : integer; distance,distance1,distance2,distance3,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_distance1:=0;{give it a default value} j_distance2:=0; j_distance3:=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 // note the use of continue slows down loop begin distance:=sqr(starlist[0,j]-starlist[0,i])+ sqr(starlist[1,j]-starlist[1,i]); if distance<distance1 then begin distance3:=distance2;{distance third closest star} j_distance3:=j_distance2; distance2:=distance1;{distance second closest star} j_distance2:=j_distance1; distance1:=distance;{distance closest star} j_distance1:=j;{mark later as used} end else if distance<distance2 then begin distance3:=distance2;{distance third closest star} j_distance3:=j_distance2; distance2:=distance;{distance second closest star} j_distance2:=j; end else if distance<distance3 then begin distance3:=distance;{third closest star} j_distance3:=j; end; end; end;{j} x1:=starlist[0,i]; {1e star position} y1:=starlist[1,i]; x2:=starlist[0,j_distance1]; {2e star position} y2:=starlist[1,j_distance1]; x3:=starlist[0,j_distance2]; y3:=starlist[1,j_distance2]; x4:=starlist[0,j_distance3]; y4:=starlist[1,j_distance3]; xt:=(x1+x2+x3+x4)/4; {mean x position quad} yt:=(y1+y2+y3+y4)/4; {mean y position quad} identical_quad:=false; for k:=0 to nrquads-1 do // check for an identical quad begin if ( (abs(xt-starlistquads[8,k])<1) and (abs(yt-starlistquads[9,k])<1) ) then // same center position, found an identical quad already in the list begin identical_quad:=true; break;//stop searching end; 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]; 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,3,nr_references); setlength(b_Xrefpositions,nr_references); setlength(b_Yrefpositions,nr_references); for k:=0 to nr_references-1 do begin A_XYpositions[0,k]:=quad_star_distances2[6,matchlist1[1,k]]; {average x position of quad} A_XYpositions[1,k]:=quad_star_distances2[7,matchlist1[1,k]]; {average y position of quad} A_XYpositions[2,k]:=1; 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..2,0..nr_equations-1]:=solution_vectorX[0..2] * A_XYpositions[0..2,0..nr_equations-1]} { b_refpositionY[0..2,0..nr_equations-1]:=solution_matrixY[0..2] * A_XYpositions[0..2,0..nr_equations-1]} 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,k : 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,0]);{width} height2:=length(img[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,height2,width2);{set length of image array} retries:=3; {try up to four times to get enough stars from the image} repeat if retries=3 then begin if bck.star_level >30*bck.noise_level then detection_level:=bck.star_level else retries:=2;{skip} end;//stars are dominant if retries=2 then begin if bck.star_level2>30*bck.noise_level then detection_level:=bck.star_level2 else retries:=1;{skip} end;//stars are dominant if retries=1 then begin detection_level:=30*bck.noise_level; end; if retries=0 then begin detection_level:= 7*bck.noise_level; end; 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,fitsY,fitsX]:=-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,fitsY,fitsX]<=0){star free area} and (img[0,fitsY,fitsX]- bck.backgr{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,j,i]:=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(bck.backgr))+ '. Detection level used '+inttostr( round(detection_level)) +' above background. Star level is '+inttostr(round(bck.star_level))+' above background. Noise level is '+floattostrF(bck.noise_level,ffFixed,0,0)); dec(retries);{Try again with lower detection level} 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 result:=false; //assume failure {3 quads required giving 3 center quad references} if find_fit(minimum_quads, tolerance)=false then begin reset_solution_vectors(0.001);{nullify} exit; end; {in matrix calculations, b_refpositionX[0..2,0..nr_equations-1]:=solution_vectorX[0..2] * A_XYpositions[0..2,0..nr_equations-1]} { b_refpositionY[0..2,0..nr_equations-1]:=solution_matrixY[0..2] * A_XYpositions[0..2,0..nr_equations-1]} {find solution vector for X:=ax+by+c / b_Xref:=solution[0]x+solution[1]y+solution[2]} if (lsq_fit( A_XYpositions {[0..2,0..nr_equations-1]},b_Xrefpositions, solution_vectorX {[0..2]}))=false then begin reset_solution_vectors(0.001);exit; end; {find solution vector for Y:=ax+by+c / b_Yref:=solution[0]x+solution[1]y+solution[2]} if (lsq_fit( A_XYpositions {0..2,[0..nr_equations-1]},b_Yrefpositions, solution_vectorY {[0..2]}))=false then begin reset_solution_vectors(0.001);exit; end; xy_sqr_ratio:=(sqr(solution_vectorX[0])+sqr(solution_vectorX[1]) ) / (0.00000001+ sqr(solution_vectorY[0])+sqr(solution_vectorY[1]) ); //last check if ((xy_sqr_ratio<0.9) or (xy_sqr_ratio>1.1)) then {dimensions x, y are not the same, something wrong.} begin 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 else result:=true; end; end. �������������������astap_2024.05.01.orig/unit_hjd.pas������������������������������������������������������������������0000644�0001751�0001751�00000044163�14614535560�016020� 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, 2024 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; site_lat_radians, site_long_radians,wtime2actual : double; 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 calculate_az_alt_basic(ra,dec : double; out az,alt : double);{calculate azimuth, altitude and initialize wtime2actual/sidereal time if site_lat_radians>999. For mouse pointer} procedure polar2(x,y,z:double;out r,theta,phi:double); function get_lat_long(out site_lat_radians, site_long_radians : double): boolean;//retrieve latitude and longitude procedure az_ra(az,alt,lat,long,t:double;out ra,dcr: double);{conversion az,alt to ra,dec} procedure ra_az(ra,de,LAT,LONG,t:double;out azimuth2,altitude2: double);{conversion ra & dec to altitude,azimuth} 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 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 and 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; function get_lat_long(out site_lat_radians, site_long_radians : double): boolean;//retrieve latitude and longitude var errordecode : boolean; err : integer; begin result:=false; 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 result:=true; end; if errordecode then memo2_message('Error decoding site longitude or latitude!'); 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 get_lat_long(site_lat_radians, site_long_radians) then begin date_to_jd(head.date_obs,head.date_avg,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; end; procedure calculate_az_alt_basic(ra,dec : double; out az,alt : double);{calculate azimuth, altitude and initialize wtime2actual/sidereal time if site_lat_radians>999. For mouse pointer} 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} var temperature : double; begin if site_lat_radians>998 then //initialize wtime2actual/sidereal time begin if get_lat_long(site_lat_radians, site_long_radians)=false then exit;//retrieve latitude and longitude date_to_jd(head.date_obs,head.date_avg,head.exposure);{convert date-obs to jd_start, jd_mid} if jd_mid>2400000 then {valid JD} begin 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} end else memo2_message('Error decoding Julian day!'); end; precession3(2451545 {J2000},jd_mid,ra,dec); {from J2000 to Jnow mean, precession only. without refraction} ra_az(ra,dec,site_lat_radians,0,wtime2actual,{out} az,alt);{conversion ra & dec to altitude,azimuth} if focus_temp>=100 {999} then temperature:=10 {default temperature celsius} else temperature:=focus_temp; alt:=alt*180/pi; alt:=(alt+atmospheric_refraction(alt,pressure {mbar},temperature {celsius}))*pi/180;{astrometric to apparant altitude} 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_2024.05.01.orig/macOS_packages_projects/������������������������������������������������������0000755�0001751�0001751�00000000000�14614535560�020250� 5����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/macOS_packages_projects/macOS_projects.zip������������������������������������0000644�0001751�0001751�00000116274�14614535560�023722� 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_2024.05.01.orig/unit_asteroid.pas�������������������������������������������������������������0000644�0001751�0001751�00000116441�14614535560�017064� 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; download_mpcorb1: TBitBtn; cancel_button1: TButton; ColorBox1: TColorBox; date_label1: TLabel; date_obs1: TEdit; 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; type Tasteroid =record yy,mm,dd, a_e,a_or_q ,a_i,a_ohm,a_w,a_M,H, a_g : double; desn: string[9]; //fixed size otherwise problems with resizing. 7 charactor are required for asteroids and 9 for comets. So 9 will fit both. name: string[28];//fixed size otherwise problems with resizing end; var form_asteroids1: Tform_asteroids1; asteroid_buffer : array of Tasteroid; const maxcount_asteroid : string='10000'; maxmag_asteroid : string='17'; mpcorb_path : string='MPCORB.DAT'; cometels_path : string='*.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,use_buffer :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;out RA3,DEC3,DELTA,sun_delta:double; out outdated : boolean); { 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; 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} begin 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. outdated:=abs(epoch - mjd)>120;//more then 120 days from epoch database end else begin 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. outdated:=false;//epoch is when the comet is nearest end; 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 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; //A brief header is given below: //Des'n H G Epoch M Peri. Node 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 procedure convert_MPCORB_line(txt : string; out desn,name: string; out yy,mm : integer; out dd,a_e,a_a,a_i,a_ohm,a_w,a_M,h,g: double);{read asteroid, han.k} var code2 : integer; centuryA : string[2]; begin desn:='';{assume failure} // Epoch (in packed form, .0 TT), see http://www.minorplanetcenter.net/iau/info/MPOrbitFormat.html} // 1996 Jan. 1 = J9611 // 1996 Jan. 10 = J961A // 1996 Sept.30 = J969U // 1996 Oct. 1 = J96A1 // 2001 Oct. 22 = K01AM str(Ord(txt[21])-55:2,centuryA); // 'A'=65 if ((centuryA='19') or (centuryA='20') or (centuryA='21')) then {do only data} begin name:=copy(txt,167,194-167+1); //28 charaters desn:=trimRight(copy(txt,1,7));//7 characters 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:=strtoint(centuryA+txt[22]+txt[23]);{epoch year} code2:=Ord(txt[24]); if code2<65 then mm:=code2-48 {1..9} else mm:=code2-55; {A..Z} code2:=Ord(txt[25]); if code2<65 then dd:=code2-48 {1..9} else dd:=code2-55; {A..Z} 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; out desn,name: string; out yy,mm :integer; out dd, ecc,q,inc2,lan,aop,M_anom,H,k: double); {han.k} var error1,error2 : integer; g : double; begin desn:='';{assume failure} val(copy(txt,15,4),yy,error2);//epoch year. if ((error2=0) and (yy>1900) and (yy<2200)) then {do only data} begin mm:=strtoint(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} H:=strtofloat(copy(txt,91,5)); { Absolute magnitude, H} val(copy(txt,97,4),g,error1); k:=g*2.5; { Comet activity} name:=copy(txt,103,28);//could be 56 charactor long. Limit to 28 as used for asteroids desn:=copy(txt,160,9); //9 charactors long. The record size of asteroid_buffer.name should match {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,use_buffer: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,counter,yy,mm : integer; 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; form_existing, errordecode,outdated : 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>0) and (x<head.width) and (y>0) and (y<head.height)) then {within image1} begin {annotate} if showfullnames then thetext1:=trim(name) else thetext1:=desn{+'('+floattostrF(mag,ffgeneral,3,1)+')'}; if showmagnitude then thetext2:='{'+inttostr(round(mag*10))+'}' {add magnitude in next field} else thetext2:=''; if outdated then thetext2:=thetext2+'⚠ ' +'obsolete'; if add_annot then begin {store annotation. Fractions are for ephemeride alignment stacking} add_text ('ANNOTATE=',#39+copy(floattostrF(x-sizebox,FFFixed,0,2)+';'+floattostrF(y-sizebox,FFFixed,0,2)+';'+floattostrF(x+sizebox,fffixed,0,2)+';'+floattostrF(y+sizebox,FFFixed,0,2)+';-'+fontsize_str {-1 or larger}+';'{boldness}+thetext1+';'+thetext2+';'+desn+';',1,68)+#39); {store in FITS coordinates 1..} annotated:=true;{header contains annotations} end; plot_the_annotation(round(x-sizebox) {x1},round(y-sizebox) {y1},round(x+sizebox){x2},round(y+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 count:=0; 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, {out} 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},yy,mm,dd,a_e,a_or_q,a_i,a_ohm,a_w,a_M,{var} ra2,dec2,delta,sun_delta, outdated); 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); if counter>=length(asteroid_buffer) then setlength(asteroid_buffer,length(asteroid_buffer)+1000);//increase buffer asteroid_buffer[counter].yy:=yy; asteroid_buffer[counter].mm:=mm; asteroid_buffer[counter].dd:=dd; asteroid_buffer[counter].a_e:=a_e; asteroid_buffer[counter].a_or_q :=a_or_q; asteroid_buffer[counter].a_i:=a_i; asteroid_buffer[counter].a_ohm:=a_ohm; asteroid_buffer[counter].a_w:=a_w; asteroid_buffer[counter].a_M:=a_M; //1E99 if comet asteroid_buffer[counter].h:=h; if asteroid then asteroid_buffer[counter].a_g:=a_g else asteroid_buffer[counter].a_g:=c_k; asteroid_buffer[counter].desn:=desn; asteroid_buffer[counter].name:=name; inc(counter); 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); setlength(asteroid_buffer,counter); end; end; procedure replot; //plot for the second image in a series using the existing data in the asteroid_buffer var cc : integer; begin try for cc:=0 to length(asteroid_buffer)-1 do begin {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(asteroid_buffer[cc].yy), round(asteroid_buffer[cc].mm), asteroid_buffer[cc].dd, asteroid_buffer[cc].a_e, asteroid_buffer[cc].a_or_q, asteroid_buffer[cc].a_i, asteroid_buffer[cc].a_ohm, asteroid_buffer[cc].a_w, asteroid_buffer[cc].a_M, {out} ra2,dec2,delta,sun_delta,outdated); if sqr( (ra2-head.ra0)*cos_telescope_dec) + sqr(dec2-head.dec0)< sqr(fov) then {within the image FOV} begin desn:=asteroid_buffer[cc].desn; name:=asteroid_buffer[cc].name; if asteroid_buffer[cc].a_M<1E98 {asteroid} then begin mag:=asteroid_buffer[cc].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} plot_asteroid(annotation_diameter) end else begin {comet magnitude} mag:=asteroid_buffer[cc].H+ ln(delta)*5/ln(10)+ a_g{c_k}*ln(sun_delta)/ln(10) ; plot_asteroid(annotation_diameter*5); end; end;{within FOV} end;// for loop except end; end;//procedure replot 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} date_to_jd(head.date_obs,head.date_avg,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 file header!'); mainwindow.error_label1.visible:=true; memo2_message(filename2+ ' Error converting DATE-OBS or DATE-AVG from the file 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; 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 use_buffer then replot //use asteroid_buffer information else begin counter:=0;//counter for asteroid_buffer. Count both asteroids and comets. asteroid_buffer:=nil;//remove old data; setlength(asteroid_buffer,1000); 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; if cometels_path<>'' then begin if fileexists(cometels_path) then read_and_plot(false,cometels_path); // Do not warn for missing comet file. // else // memo2_message('CometEls.txt file not found: '+ cometels_path+' Set path in Asteroid & Comet annotation menu, CTRL+R' ); end; end;//not replot {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 head.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; 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; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key plot_mpcorb(maxcount,maxmag,add_annotations,false); 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, NEA(*.DAT*;*.txt)|*.dat;*.DAT;*.txt'; 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 AllCometEls.txt to use'; OpenDialog1.Options := [ofFileMustExist,ofHideReadOnly]; opendialog1.Filter := 'AllCometEls.txt file (A*.txt)|A*.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 head.date_avg<>'' then begin date_label1.caption:='DATE_AVG'; label_start_mid1.caption:='Midpoint of the observation'; date_obs1.Text:=head.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_2024.05.01.orig/astap_linux_armhf_qt5.lpi�����������������������������������������������������0000644�0001751�0001751�00000012405�14614535560�020504� 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"/> <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="557380203511" 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> <CodeGeneration> <TargetCPU Value="arm"/> <TargetOS Value="linux"/> </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_2024.05.01.orig/unit_raster_rotate.pas��������������������������������������������������������0000644�0001751�0001751�00000122545�14614535560�020132� 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} 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,0]);{width} sheight := length(img[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, 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,i, sheight - 1 - j] := img[k, j,i]; end; 2:begin //180° 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, swidth - 1 - i] := img[k, j, i]; end; 3:begin //270° 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, j] := img[k, j, i]; 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, rh, rw);{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 exit; 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].Y,x[k].X];// 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].Y,x[k].X];// summation of the source flux blue := blue + x[k].S * img[2,x[k].Y,x[k].X];// summation of the source flux end; end; end; temp_img[0,i - yd, j - xd] := red; {store flux in destination} if scolours > 2 then {colour image} begin temp_img[1, i - yd,j - xd] := green; temp_img[2, i - yd,j - xd] := blue; end; end; end; img := nil; {release memory} img := temp_img; {swap arrays} end; end. �����������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/unit_thumbnail.lfm������������������������������������������������������������0000644�0001751�0001751�00000007174�14614535560�017232� 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_2024.05.01.orig/readme how to compile.txt�����������������������������������������������������0000644�0001751�0001751�00000001766�14614535560�020301� 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 To include package Synape, just load ./synapse/laz_synapse.lpk packagein the editor of Lazarus. The astap.lpi and compile. ----------------------------------------------------------------------------------------------------------------------------------- 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_2024.05.01.orig/unit_stack.pas����������������������������������������������������������������0000644�0001751�0001751�00002001135�14614535560�016352� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_stack; {Copyright (C) 2017, 2023 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, PairSplitter, Types, strutils, unit_star_database, astap_main; type { Tstackmenu1 } Tstackmenu1 = class(TForm) aavso_button1: TButton; actual_search_distance1: TLabel; add_bias1: TCheckBox; add_noise1: TButton; add_substract1: TComboBox; add_time1: TCheckBox; add_valueB1: TEdit; add_valueG1: TEdit; add_valueR1: TEdit; alignment1: TTabSheet; align_blink1: TCheckBox; Analyse1: TButton; analyseblink1: TButton; analysedarksButton2: TButton; analyseflatdarksButton1: TButton; analyseflatsButton3: TButton; analysephotometry1: TButton; analysephotometrymore1: TButton; analyse_inspector1: TButton; analyse_lights_extra1: TButton; analyse_objects_visible1: TButton; annotate_mode1: TComboBox; Annotations_visible2: TCheckBox; annulus_radius1: TComboBox; apply_artificial_flat_correction1: TButton; apply_artificial_flat_correctionV2: TButton; apply_background_noise_filter1: TButton; apply_box_filter2: 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; auto_rotate1: TCheckBox; bayer_pattern1: TComboBox; bb1: TEdit; bg1: TEdit; Bias: TTabSheet; binning_for_solving_label3: TLabel; binning_for_solving_label4: TLabel; bin_factor1: TComboBox; bin_image1: TButton; bin_image2: TButton; blend1: TCheckBox; blink_button1: TButton; blink_button_contB1: TButton; blink_button_contF1: TButton; blink_stop1: TButton; blink_unaligned_multi_step1: TButton; blink_unaligned_multi_step_backwards1: TButton; blue_filter1: TEdit; blue_filter2: TEdit; blue_filter_add1: TEdit; blur_factor1: TComboBox; box_blur_factor1: TComboBox; br1: TEdit; browse1: TBitBtn; browse_bias1: TBitBtn; browse_blink1: TBitBtn; browse_dark1: TBitBtn; browse_flats1: TBitBtn; browse_inspector1: TBitBtn; browse_live_stacking1: TBitBtn; browse_monitoring1: TBitBtn; browse_mount1: TBitBtn; browse_photometry1: TBitBtn; Button1: TButton; blink_stack_selected1: TMenuItem; blink_annotate_and_solve1: TButton; apply_unsharp_mask1: TButton; unsharp_edit_amount1: TEdit; unsharp_edit_radius1: TEdit; unsharp_edit_threshold1: TEdit; GroupBox22: TGroupBox; Label37: TLabel; Label6: TLabel; Button_free_resize_fits1: TButton; calculated_scale1: TLabel; calculated_sensor_size1: TLabel; calculator_binning1: TLabel; calc_polar_alignment_error1: TButton; center_position1: TLabel; classify_dark_date1: TCheckBox; classify_dark_exposure1: TCheckBox; classify_dark_gain1: TCheckBox; classify_dark_temperature1: TCheckBox; classify_filter1: TCheckBox; classify_flat_date1: TCheckBox; classify_flat_exposure1: TCheckBox; classify_flat_filter1: TCheckBox; classify_groupbox1: TGroupBox; classify_object1: TCheckBox; ClearButton1: TButton; clear_blink_alignment1: TButton; clear_blink_list1: TButton; clear_dark_list1: TButton; clear_image_list1: TButton; clear_inspector_list1: TButton; clear_mount_list1: TButton; clear_photometry_list1: TButton; clear_result_list1: TButton; clear_selection2: TButton; clear_selection3: TButton; colournebula1: TButton; colourShape1: TShape; colourShape2: TShape; colourShape3: TShape; contour_gaussian1: TComboBox; contour_sigma1: TComboBox; correct_gradient_label1: TLabel; create_test_image_stars1: TButton; curve_fitting1: TButton; Darks: TTabSheet; dark_areas_box_size1: TComboBox; dark_spot_filter1: TButton; ddp_filter1: TRadioButton; ddp_filter2: TRadioButton; DECposition1: TLabel; delta_dec1: TLabel; delta_ra1: TLabel; delta_temp1: TEdit; delta_temp_updown1: TUpDown; demosaic_method1: TComboBox; detection_grid1: TComboBox; detect_contour1: TBitBtn; direction_arrow1: TImage; donutstars1: TCheckBox; 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; ephemeris_centering1: TComboBox; Equalise_background1: TCheckBox; export_aligned_files1: TButton; extract_background_box_size1: TComboBox; files_live_stacked1: TLabel; file_to_add1: TBitBtn; filter_artificial_colouring1: TComboBox; filter_groupbox1: TGroupBox; Flats: TTabSheet; flux_aperture1: TComboBox; focallength1: TEdit; force_oversize1: TCheckBox; gb1: TEdit; gg1: TEdit; go_step_two1: TBitBtn; gr1: TEdit; gradient_filter_factor1: TEdit; green_filter1: TEdit; green_filter2: TEdit; green_filter_add1: TEdit; green_purple_filter1: TCheckBox; GroupBox1: TGroupBox; GroupBox10: TGroupBox; GroupBox11: TGroupBox; GroupBox12: TGroupBox; GroupBox13: TGroupBox; GroupBox14: TGroupBox; GroupBox15: TGroupBox; GroupBox16: TGroupBox; GroupBox17: TGroupBox; GroupBox18: TGroupBox; GroupBox19: TGroupBox; GroupBox2: TGroupBox; GroupBox20: TGroupBox; GroupBox21: TGroupBox; GroupBox3: TGroupBox; GroupBox4: TGroupBox; GroupBox5: TGroupBox; GroupBox6: TGroupBox; GroupBox7: TGroupBox; GroupBox8: 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_inspector_tab1: TLabel; help_live_stacking1: TLabel; help_monitoring1: TLabel; help_mount_tab1: TLabel; help_osc_menu1: TLabel; help_photometry1: TLabel; help_pixel_math1: TLabel; help_pixel_math2: TLabel; help_stack_menu1: TLabel; help_stack_menu2: TLabel; help_stack_menu3: TLabel; help_uncheck_outliers1: TLabel; hfd_simulation1: TComboBox; hours_and_minutes1: TCheckBox; HueRadioButton1: TRadioButton; HueRadioButton2: TRadioButton; hue_fuzziness1: TTrackBar; ignorezero1: TCheckBox; ignore_header_solution1: TCheckBox; image_to_add1: TLabel; increase_nebulosity1: TBitBtn; increase_nebulosity3: TEdit; interim_to_clipboard1: TCheckBox; Label1: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Label16: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label2: TLabel; Label20: TLabel; Label21: TLabel; Label22: TLabel; Label23: TLabel; Label24: TLabel; Label25: TLabel; Label26: TLabel; Label27: TLabel; Label28: TLabel; Label29: TLabel; Label3: TLabel; Label30: TLabel; Label31: TLabel; Label32: TLabel; Label33: TLabel; Label34: TLabel; Label35: TLabel; Label36: TLabel; Label38: TLabel; Label39: TLabel; Label4: TLabel; Label40: TLabel; Label41: TLabel; Label42: TLabel; Label43: TLabel; Label44: TLabel; Label45: TLabel; Label46: TLabel; Label47: TLabel; Label48: TLabel; Label49: TLabel; Label5: TLabel; Label50: TLabel; Label51: TLabel; Label52: TLabel; Label53: TLabel; Label54: TLabel; Label55: TLabel; Label56: TLabel; Label57: TLabel; Label58: TLabel; Label59: TLabel; Label60: TLabel; Label61: TLabel; Label62: TLabel; Label63: TLabel; Label64: TLabel; Label65: TLabel; Label66: TLabel; Label67: TLabel; Label68: TLabel; Label69: TLabel; Label7: TLabel; Label70: TLabel; Label71: TLabel; Label8: TLabel; Label9: TLabel; label_gaussian1: TLabel; label_latitude1: TLabel; label_longitude1: TLabel; Label_masterflat1: TLabel; Label_results1: TLabel; lights: TTabSheet; lights_blink_pause1: TButton; limit_background_correction1: TCheckBox; listview1: TListView; listview2: TListView; listview3: TListView; listview4: TListView; listview5: TListView; listview6: TListView; listview7: TListView; listview8: TListView; listview9: TListView; live_monitoring1: TButton; live_stacking1: TButton; live_stacking_path1: TLabel; live_stacking_pause1: TButton; live_stacking_restart1: TButton; lrgb_auto_level1: TCheckBox; lrgb_colour_smooth1: TCheckBox; lrgb_preserve_r_nebula1: TCheckBox; lrgb_smart_colour_sd1: TComboBox; lrgb_smart_smooth_width1: TComboBox; luminance_filter1: TEdit; luminance_filter2: TEdit; make_osc_color1: TCheckBox; manual_centering1: TComboBox; mark_outliers_upto1: TComboBox; max_stars1: TComboBox; memo2: TMemo; MenuItem14: TMenuItem; merge_overlap1: TCheckBox; min_star_size1: TComboBox; min_star_size_stacking1: TComboBox; monitoring_path1: TLabel; monitoring_stop1: TButton; monitor_action1: TComboBox; monitor_applydarkflat1: TCheckBox; monitor_date1: TLabel; monitor_latitude1: TEdit; monitor_longitude1: TEdit; mosaic_box1: TGroupBox; mosaic_crop1: TUpDown; mosaic_crop2: TEdit; most_common_filter_radius1: TEdit; most_common_filter_tool1: TButton; most_common_mono1: TButton; most_right1: TStaticText; most_right10: TStaticText; most_right11: TStaticText; most_right12: TStaticText; most_right13: TStaticText; most_right14: TStaticText; most_right15: TStaticText; most_right2: TStaticText; most_right3: TStaticText; most_right4: TStaticText; most_right5: TStaticText; most_right6: TStaticText; most_right7: TStaticText; most_right8: TStaticText; most_right9: TStaticText; mount1: TTabSheet; mount_add_solutions1: TButton; mount_analyse1: TButton; mount_ignore_solutions1: TCheckBox; mount_write_wcs1: TCheckBox; multiply_blue1: TEdit; multiply_green1: TEdit; multiply_red1: TEdit; new_colour_luminance1: TTrackBar; new_height1: TLabel; new_height2: TLabel; new_saturation1: TTrackBar; undo_button22: TBitBtn; unsharp_amount1: TTrackBar; noisefilter_blur1: TComboBox; noisefilter_sd1: TComboBox; nr_selected1: TLabel; nr_total1: TLabel; nr_total_bias1: TLabel; nr_total_blink1: TLabel; nr_total_darks1: TLabel; nr_total_flats1: TLabel; nr_total_inspector1: TLabel; nr_total_photometry1: TLabel; osc_auto_level1: TCheckBox; osc_colour_smooth1: TCheckBox; osc_preserve_r_nebula1: TCheckBox; osc_smart_colour_sd1: TComboBox; osc_smart_smooth_width1: TComboBox; pagecontrol1: TPageControl; PairSplitter1: TPairSplitter; PairSplitterSide1: TPairSplitterSide; PairSplitterSide2: TPairSplitterSide; Panel_stack_button1: TPanel; panel_ephemeris1: TPanel; panel_manual1: TPanel; Panel_solver1: TPanel; Panel_star_detection1: TPanel; photometry_binx2: TButton; blink_binx2: TButton; photometry_button1: TButton; photometry_repeat1: TButton; photometry_stop1: TButton; pixelsize1: TEdit; planetary_image1: TCheckBox; powerdown_enabled1: TCheckBox; preserve_red_nebula1: TCheckBox; press_esc_to_abort1: TLabel; quad_tolerance1: TComboBox; radius_search1: TComboBox; rainbow_Panel1: TPanel; RAposition1: TLabel; raw_box1: TGroupBox; raw_conversion_program1: TComboBox; rb1: TEdit; red_filter1: TEdit; red_filter2: TEdit; red_filter_add1: TEdit; reference_database1: TComboBox; remove_deepsky_label1: TLabel; remove_stars1: TBitBtn; replace_by_master_dark1: TButton; replace_by_master_flat1: TButton; reset_factors1: TButton; resize_factor1: TComboBox; restore_file_ext1: TButton; Result1: TTabSheet; rg1: TEdit; ring_equalise_factor1: TComboBox; rr1: TEdit; sample_size1: TComboBox; saturation_tolerance1: TTrackBar; saved1: TLabel; save_as_new_file1: TButton; save_result1: TButton; save_settings_extra_button1: TButton; save_settings_image_path1: TCheckBox; scale_calc1: TLabel; sd_factor1: TComboBox; sd_factor_list1: TComboBox; search_fov1: TComboBox; Separator4: TMenuItem; Separator5: TMenuItem; Separator6: TMenuItem; show_quads1: TBitBtn; sigma_decolour1: TComboBox; smart_colour_sd1: TComboBox; smart_colour_smooth_button1: TButton; smart_smooth_width1: TComboBox; solve1: TButton; solve_show_log1: TCheckBox; SpeedButton1: TSpeedButton; speedButton_location1: TSpeedButton; splitRGB1: TButton; stack_button1: TBitBtn; stack_groups1: TMenuItem; refresh_astrometric_solutions1: TMenuItem; photometric_calibration1: TMenuItem; photom_blue1: TMenuItem; photom_red1: TMenuItem; Separator2: TMenuItem; Separator3: TMenuItem; column_fov1: TMenuItem; column_sqm1: TMenuItem; column_lim_magn1: TMenuItem; auto_select1: TMenuItem; photom_stack1: TMenuItem; photom_calibrate1: TMenuItem; photom_green1: TMenuItem; Separator1: TMenuItem; MenuItem33: TMenuItem; removeselected5: TMenuItem; menukeywordchange1: TMenuItem; MenuItem32: TMenuItem; keywordchangelast1: TMenuItem; changekeyword9: TMenuItem; keyword9: TMenuItem; list_to_clipboard9: TMenuItem; MenuItem29: TMenuItem; MenuItem30: TMenuItem; MenuItem31: TMenuItem; changekeyword6: TMenuItem; changekeyword7: TMenuItem; keyword8: TMenuItem; changekeyword8: TMenuItem; keyword6: TMenuItem; keyword7: TMenuItem; copy_to_photometry1: TMenuItem; copy_to_blink1: TMenuItem; MenuItem28: TMenuItem; PopupMenu9: TPopupMenu; removeselected9: TMenuItem; renametobak9: TMenuItem; select9: TMenuItem; selectall5: TMenuItem; selectall9: TMenuItem; stack_method1: TComboBox; star_database1: TComboBox; star_level_colouring1: TComboBox; subtract_background1: TButton; tab_blink1: TTabSheet; tab_inspector1: TTabSheet; tab_live_stacking1: TTabSheet; tab_monitoring1: TTabSheet; tab_mount1: TTabSheet; tab_photometry1: TTabSheet; tab_Pixelmath1: TTabSheet; tab_Pixelmath2: TTabSheet; tab_stackmethod1: TTabSheet; target1: TLabel; target_altitude1: TLabel; target_azimuth1: TLabel; target_distance1: TLabel; target_group1: TGroupBox; test_osc_normalise_filter2: TButton; test_pattern1: TButton; timestamp1: TCheckBox; transformation1: TButton; uncheck_outliers1: TCheckBox; undo_button1: TBitBtn; undo_button10: TBitBtn; undo_button11: TBitBtn; undo_button12: TBitBtn; undo_button13: TBitBtn; undo_button14: TBitBtn; undo_button15: TBitBtn; undo_button16: TBitBtn; undo_button17: TBitBtn; undo_button18: TBitBtn; undo_button19: TBitBtn; undo_button2: TBitBtn; undo_button20: TBitBtn; undo_button21: TBitBtn; undo_button3: TBitBtn; undo_button4: TBitBtn; undo_button5: TBitBtn; undo_button6: TBitBtn; undo_button7: TBitBtn; undo_button8: TBitBtn; undo_button9: TBitBtn; undo_button_equalise_background1: TBitBtn; unselect9: TMenuItem; unselect_area1: TButton; unsharp_radius1: TTrackBar; unsharp_threshold1: TTrackBar; update_annotations1: TCheckBox; update_solution1: TCheckBox; UpDown1: TUpDown; UpDown_nebulosity1: TUpDown; use_astrometry_alignment1: TRadioButton; use_ephemeris_alignment1: TRadioButton; use_manual_alignment1: TRadioButton; use_star_alignment1: TRadioButton; use_triples1: TCheckBox; add_sip1: TCheckBox; Viewimage9: TMenuItem; copy_files_to_clipboard1: TMenuItem; list_to_clipboard8: TMenuItem; MenuItem23: TMenuItem; MenuItem26: TMenuItem; MenuItem27: TMenuItem; PopupMenu8: TPopupMenu; removeselected8: TMenuItem; renametobak8: TMenuItem; result_compress1: TMenuItem; MenuItem25: TMenuItem; rename_result1: TMenuItem; MenuItem24: TMenuItem; list_to_clipboard7: TMenuItem; MenuItem20: TMenuItem; MenuItem21: TMenuItem; MenuItem22: TMenuItem; ColorDialog1: TColorDialog; MenuItem19: TMenuItem; list_to_clipboard6: TMenuItem; PopupMenu7: TPopupMenu; removeselected7: TMenuItem; renametobak7: TMenuItem; select7: TMenuItem; select8: TMenuItem; selectall3: TMenuItem; selectall4: TMenuItem; selectall6: TMenuItem; selectall2: TMenuItem; selectall1: TMenuItem; selectall7: TMenuItem; list_to_clipboard1: TMenuItem; selectall8: TMenuItem; MenuItem16: TMenuItem; MenuItem17: TMenuItem; MenuItem18: TMenuItem; MenuItem15: TMenuItem; PopupMenu6: TPopupMenu; removeselected6: TMenuItem; renametobak6: TMenuItem; select6: TMenuItem; unselect6: TMenuItem; unselect7: TMenuItem; unselect8: TMenuItem; Viewimage6: TMenuItem; Viewimage7: TMenuItem; Viewimage8: TMenuItem; width_UpDown1: TUpDown; write_jpeg1: TCheckBox; keyword1: TMenuItem; changekeyword1: TMenuItem; changekeyword2: TMenuItem; changekeyword3: TMenuItem; changekeyword4: TMenuItem; keyword2: TMenuItem; keyword3: TMenuItem; keyword4: TMenuItem; copy_to_images1: TMenuItem; 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; MenuItem1: TMenuItem; MenuItem2: TMenuItem; MenuItem3: TMenuItem; removeselected1: TMenuItem; green_filter_factor2: TEdit; blue_filter_factor2: TEdit; ImageList_colors: TImageList; unselect2: TMenuItem; unselect3: TMenuItem; unselect4: TMenuItem; unselect1: TMenuItem; select1: TMenuItem; OpenDialog1: TOpenDialog; ImageList2: TImageList; PopupMenu1: TPopupMenu; renametobak1: TMenuItem; Viewimage1: TMenuItem; Viewimage2: TMenuItem; Viewimage3: TMenuItem; Viewimage4: TMenuItem; Viewimage5: TMenuItem; write_log1: TCheckBox; write_video1: TButton; procedure add_noise1Click(Sender: TObject); procedure alignment1Show(Sender: TObject); procedure analyseblink1Click(Sender: TObject); procedure annotate_mode1Change(Sender: TObject); procedure Annotations_visible2Click(Sender: TObject); procedure blend1Change(Sender: TObject); procedure blink_annotate_and_solve1Click(Sender: TObject); procedure apply_unsharp_mask1Click(Sender: TObject); procedure classify_dark_temperature1Change(Sender: TObject); procedure contour_gaussian1Change(Sender: TObject); procedure detect_contour1Click(Sender: TObject); procedure ClearButton1Click(Sender: TObject); procedure unsharp_edit_amount1Change(Sender: TObject); procedure unsharp_edit_radius1Change(Sender: TObject); procedure unsharp_edit_threshold1Change(Sender: TObject); procedure MenuItem14Click(Sender: TObject); procedure photometric_calibration1Click(Sender: TObject); procedure pixelsize1Change(Sender: TObject); procedure refresh_astrometric_solutions1Click(Sender: TObject); procedure browse_monitoring1Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure clear_result_list1Click(Sender: TObject); procedure column_fov1Click(Sender: TObject); procedure column_lim_magn1Click(Sender: TObject); procedure column_sqm1Click(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure help_monitoring1Click(Sender: TObject); procedure help_mount_tab1Click(Sender: TObject); procedure lightsShow(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 manipulate1Click(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_visible1Click(Sender: TObject); procedure browse_photometry1Click(Sender: TObject); procedure aavso_button1Click(Sender: TObject); procedure clear_mount_list1Click(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_colour_luminance1Change(Sender: TObject); procedure new_saturation1Change(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 reference_database1Change(Sender: TObject); procedure remove_luminance1Change(Sender: TObject); procedure remove_stars1Click(Sender: TObject); procedure result_compress1Click(Sender: TObject); procedure rename_result1Click(Sender: TObject); procedure restore_file_ext1Click(Sender: TObject); procedure colournebula1Click(Sender: TObject); procedure clear_photometry_list1Click(Sender: TObject); procedure export_aligned_files1Click(Sender: TObject); procedure FormDropFiles(Sender: TObject; const FileNames: array of string); 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 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 speedButton_location1Click(Sender: TObject); procedure stack_groups1Click(Sender: TObject); procedure stack_method1DropDown(Sender: TObject); procedure blink_stack_selected1Click(Sender: TObject); procedure star_database1Change(Sender: TObject); procedure star_database1DropDown(Sender: TObject); procedure apply_box_filter2Click(Sender: TObject); procedure tab_blink1Show(Sender: TObject); procedure tab_monitoring1Show(Sender: TObject); procedure tab_photometry1Show(Sender: TObject); procedure tab_Pixelmath1Show(Sender: TObject); procedure tab_Pixelmath2Show(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 transformation1Click(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 unsharp_amount1Change(Sender: TObject); procedure unsharp_radius1Change(Sender: TObject); procedure unsharp_threshold1Change(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_alignment1Change(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; mzero: double; apr : double; anr : 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_mid_reference :double; { julian day of mid head.exposure for reference image} jd_sum: double;{sum of julian days} jd_end: double;{end observation in julian days} jd_start_first: double;{begin of observation in julian days} jd_end_last: double;{end of observations in julian days} files_to_process, files_to_process_LRGB: array of TfileToDo;{contains names to process and index to listview1} 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; light_exposure: integer = 987654321;{not done indication} light_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} groupsizeStr : string=''; images_selected: integer=0; dark_norm_value: double=0; const dialog_filter = 'FITS, RAW, TIFF |*.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(c:integer;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_tab_alignment;{update stackmenu1 menus} procedure box_blur(colors, range : integer; var img: image_array);{blur by combining 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 update_solution_and_save(img: image_array; var 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; var hd : theader): 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_obs,date_avg: 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_type: integer; out star_counter: integer; out bck :Tbackground;out 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; datamax : double;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_streaks = 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_issues=11; D_nr = 12;{number of fields} F_exposure = 0; {flats} F_filter = 10; F_jd = 11; F_calibration = 12; F_issues = 13; F_nr = 14;{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_norm = 23; //standard end of the columns P_nr : integer = 23;{adapted end with extra columns} I_date = 6;//inspector tab I_nr_stars = 7; I_focus_pos = 8; I_nr = 20; 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'; var_lock:string=''; 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, unit_online_gaia, unit_disk, unit_contour; type blink_solution = record solution_vectorX: solution_vector {array[0..2] of double}; solution_vectorY: solution_vector; end; var bsolutions: array of blink_solution; blink_width,blink_height,blink_naxis3 : integer; {$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_tab_alignment;{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_alignment1.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.EndUpdate; is set after calling this procedure} end; end; procedure listview7_add_column( s0: string); var Li: TListItem; i,fwidth: integer; begin with stackmenu1.listview7 do begin columns.add; Column[ColumnCount - 1].Caption :=s0;//title // Column[ColumnCount - 1].autosize:=true; fwidth:= Round((- GetFontData(stackmenu1.listview7.Font.Handle).height * 72*0.66 / stackmenu1.listview7.Font.PixelsPerInch));//approximate font width of column caption. Autosize works on the data not on caption Column[ColumnCount - 1].width:=20+length(s0)*fwidth; inc(p_nr); for i:=0 to Items.Count - 1 do begin li:=Items.Item[i]; li.SubItems.Add('');// add cells end; end; end; procedure listview_add_xy(c:integer; fitsX, fitsY: double);{add x,y position to listview} var i: integer; begin with stackmenu1 do begin ListView1.Items.item[c].subitems.Strings[L_X] := floattostrF(fitsX, ffFixed, 0, 2); ListView1.Items.item[c].subitems.Strings[L_Y] := floattostrF(fitsY, ffFixed, 0, 2); 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: 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} {temporary fix for CustomDraw not called} {$ifdef darwin} {MacOS} stackmenu1.nr_total1.caption:=inttostr(stackmenu1.listview1.items.count);{update counting info} {$endif} 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*binning))=' + 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_type: integer; out star_counter: integer; out bck:Tbackground; out 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, formalism: integer; hfd1, star_fwhm, snr, flux, xc, yc, detection_level, hfd_min, min_background,ra,decl: double; hfd_list: array of double; img_sa : image_array; startext: string; var f: textfile; var {################# initialised variables #########################} len: integer = 1000; begin //report_type=0, report hfd_median //report_type=1, report hfd_median and write csv file //report_type=2, write csv file width5 := Length(img[0,0]); {width} height5 := Length(img[0]); {height} max_stars := strtoint2(stackmenu1.max_stars1.Text,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},{out}bck); detection_level:=bck.star_level; {level above background. Start with a potential high value but with a minimum of 3.5 times noise as defined in procedure get_background} if ap_order>0 then formalism:=1{sip} else formalism:=0{1th order}; retries:=3; {try up to four 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 ((bck.backgr < 60000) and (bck.backgr > min_background)) then {not an abnormal file} begin repeat {try three time to find enough stars} if retries=3 then begin if bck.star_level >30*bck.noise_level then detection_level:=bck.star_level else retries:=2;{skip} end;//stars are dominant if retries=2 then begin if bck.star_level2>30*bck.noise_level then detection_level:=bck.star_level2 else retries:=1;{skip} end;//stars are dominant if retries=1 then begin detection_level:=30*bck.noise_level; end; if retries=0 then begin detection_level:= 7*bck.noise_level; end; star_counter := 0; if report_type>0 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,ra[0..360],dec[0..360]'); startext:='x,y,hfd,snr,flux,ra[0..360],dec[0..360]'+LineEnding; end; setlength(img_sa, 1, height5, width5);{set length of image array} for fitsY := 0 to height5 - 1 do for fitsX := 0 to width5 - 1 do img_sa[0, fitsY, fitsX] := -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, fitsY, fitsX] <= 0){area not occupied by a star} and (img[0, fitsY, fitsX] - bck.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, j, i] := 1; end; if report_type>0 then begin if head.cd1_1=0 then // writeln(f, floattostr4(xc + 1) + ',' + floattostr4(yc + 1) + ',' + floattostr4(hfd1) + ',' + IntToStr(round(snr)) + ',' + IntToStr(round(flux))) {+1 to convert 0... to FITS 1... coordinates} startext:=startext+floattostr4(xc + 1) + ',' + floattostr4(yc + 1) + ',' + floattostr4(hfd1) + ',' + IntToStr(round(snr)) + ',' + IntToStr(round(flux))+LineEnding {+1 to convert 0... to FITS 1... coordinates} else begin pixel_to_celestial(head,xc + 1,yc + 1, formalism, ra,decl); //writeln(f, floattostr4(xc + 1) + ',' + floattostr4(yc + 1) + ',' + floattostr4(hfd1) + ',' + IntToStr(round(snr)) + ',' + IntToStr(round(flux))+','+floattostr(ra*180/pi) + ',' + floattostr(decl*180/pi) ) {+1 to convert 0... to FITS 1... coordinates} startext:=startext+floattostr4(xc + 1) + ',' + floattostr4(yc + 1) + ',' + floattostr4(hfd1) + ',' + IntToStr(round(snr)) + ',' + IntToStr(round(flux))+','+floattostr(ra*180/pi) + ',' + floattostr(decl*180/pi)+LineEnding {+1 to convert 0... to FITS 1... coordinates} end; end; end; end; end; end; Dec(retries);{Try again with lower detection level} //if report_type>0 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) and (report_type<=1)) 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.} if report_type>0 then 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,startext); closefile(f); end; img_sa := nil;{free m} 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 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, 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; bck : tbackground; 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.Height, head.Width);{set length of image array} get_background(0, img, True, True {calculate background and also star level end noise level},{out}bck); retries:=3; {try up to four times to get enough stars from the image} repeat if retries=3 then begin if bck.star_level >30*bck.noise_level then detection_level:=bck.star_level else retries:=2;{skip} end;//stars are dominant if retries=2 then begin if bck.star_level2>30*bck.noise_level then detection_level:=bck.star_level2 else retries:=1;{skip} end;//stars are dominant if retries=1 then begin detection_level:=30*bck.noise_level; end; if retries=0 then begin detection_level:= 7*bck.noise_level; end; nhfd := 0;{set counter at zero} if bck.backgr > 8 then begin for fitsY := 0 to head.Height - 1 do for fitsX := 0 to head.Width - 1 do img_sa[0,fitsY, fitsX] := -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, fitsY, fitsX] <= 0){area not occupied by a star} and (img[0, fitsY, fitsX] - bck.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, j, i] := 1; end; if ((img[0, yci, xci] < head.datamax_org - 1) and (img[0, yci - 1, xci] < head.datamax_org - 1) and (img[0, yci + 1, xci] < head.datamax_org - 1) and (img[0, yci, xci - 1] < head.datamax_org - 1) and (img[0, yci, xci + 1] < head.datamax_org - 1) and (img[0, yci - 1, xci - 1] < head.datamax_org - 1) and (img[0, yci - 1, xci + 1] < head.datamax_org - 1) and (img[0, yci + 1, xci - 1] < head.datamax_org - 1) and (img[0, yci + 1, xci + 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);{Try again with lower detection level} 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 - (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 ((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 m} end; procedure get_annotation_position(c:integer; const memo : tstrings); {find the position of the specified asteroid annotation} var count1: integer; x1, y1, x2, y2: double; Name,dummy: string; List: TStrings; begin List := TStringList.Create; list.StrictDelimiter := True; Name := stackmenu1.ephemeris_centering1.Text;{asteroid to center on} count1 := memo.Count - 1; try while count1 >= 0 do {plot annotations} begin if copy(memo[count1], 1, 8) = 'ANNOTATE' then {found} begin dummy:=memo[count1]; List.Clear; ExtractStrings([';'], [], PChar(copy(memo[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(c,(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; function get_filter_icon(filter_name: string; out red,green, blue : boolean): integer; begin red := False; green := False; blue := False; {filter name, without spaces} if AnsiCompareText(stackmenu1.red_filter1.Text, filter_name) = 0 then begin result := 0; red := True; end else if AnsiCompareText(stackmenu1.red_filter2.Text, filter_name) = 0 then begin result := 0; red := True; end else if AnsiCompareText(stackmenu1.green_filter1.Text, filter_name) = 0 then begin result := 1; green := True; end else if AnsiCompareText(stackmenu1.green_filter2.Text, filter_name) = 0 then begin result := 1; green := True; end else if AnsiCompareText(stackmenu1.blue_filter1.Text, filter_name) = 0 then begin result := 2; blue := True; end else if AnsiCompareText(stackmenu1.blue_filter2.Text, filter_name) = 0 then begin result := 2; blue := True; end else if AnsiCompareText(stackmenu1.luminance_filter1.Text, filter_name) = 0 then result := 4 else if AnsiCompareText(stackmenu1.luminance_filter2.Text, filter_name) = 0 then result := 4 else if filter_name <> '' then begin result := 7; {question mark} end else result := -1;{blank} end; procedure analyse_tab_lights(analyse_level : integer); var c, star_counter, i, counts : integer; hfd_median, alt, az : double; red, green, blue, planetary : boolean; key, filename1, rawstr : string; img : image_array; head_2 : theader; bck : Tbackground; header_2 : tstrings; {extra header} procedure cleanup; begin img := nil; {free memo2} if stackmenu1.use_ephemeris_alignment1.Checked then header_2.free; Screen.Cursor := crDefault; { back to normal } end; 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; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key esc_pressed := False; if ((process_as_osc=2) and (make_osc_color1.Checked=false)) then process_as_osc:=0 else if ((process_as_osc=0) and (make_osc_color1.Checked)) then process_as_osc:=2; //else it is set automatically below during analysing. if classify_filter1.checked then process_as_osc:=0; jd_sum:= 0;{for sigma clip advanced average} planetary:= planetary_image1.Checked; if analyse_level=2 then begin listview1.columns[9].caption:='Streaks'; memo2_message('Streak detection active. Detection settings are in tab pixel math 2'); end else begin if planetary then listview1.columns[9].caption:='Sharpness' else listview1.columns[9].caption:='-'; end; 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 cleanup; { release memory, set cursor 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; if use_ephemeris_alignment1.Checked then header_2:=tstringlist.create; counts := ListView1.items.Count - 1; c := 0; repeat {check all files, remove darks, bias} if ((ListView1.Items.item[c].Checked) and ( ((analyse_level<=1) and (length(ListView1.Items.item[c].subitems.Strings[L_hfd]) <= 0){hfd empthy}) or ((analyse_level=2) and (length(ListView1.Items.item[c].subitems.Strings[L_streaks]) <= 0){streak/sharpness}) or (new_analyse_required)) ) then 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 cleanup; { release memory, set cursor back to normal} exit; end; if load_fits(filename2, True { update head_2.ra0..}, True, use_ephemeris_alignment1.Checked {update memo}, 0,header_2, 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 (analyse_level>0)) then analyse_image(img, head_2, 10 {snr_min}, 0, star_counter, bck, hfd_median) {find background, number of stars, median HFD} else begin star_counter := 0; bck.backgr := 0; bck.star_level:= 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 begin ListView1.Items.item[c].subitems.Strings[L_filter] := 'colour'; ListView1.Items.item[c].SubitemImages[L_filter] := 3 {RGB colour} end else if ((bayerpat<> '') and (bayerpat[1]<>'N' {ZWO NONE})) then ListView1.Items.item[c].SubitemImages[L_filter] :=25 //raw OSC file else ListView1.Items.item[c].SubitemImages[L_filter] :=get_filter_icon(head_2.filter_name,{out} red,green, blue); 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*head_2.Xbinning))); {quality number of stars divided by hfd, binning neutral} 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(bck.backgr)); if planetary then ListView1.Items.item[c].subitems.Strings[L_streaks] :=floattostrF(image_sharpness(img), ffFixed, 0, 3) {sharpness test} else if analyse_level>1 then begin contour(false,img, head_2,strtofloat2(contour_gaussian1.text),strtofloat2(contour_sigma1.text));//find contour and satellite lines in an image if nr_streak_lines>0 then ListView1.Items.item[c].subitems.Strings[L_streaks]:=inttostr(nr_streak_lines) else ListView1.Items.item[c].subitems.Strings[L_streaks]:='-'; end else ListView1.Items.item[c].subitems.Strings[L_streaks]:=''; 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 raw_box1.enabled=false then process_as_osc:=0 //classify_filter1 is checked else 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<> '') and (bayerpat[1]<>'N' {ZWO NONE})) 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 A_ORDER>0 then stackmenu1.ListView1.Items.item[c].subitems.Strings[L_solution]:='✓✓' else 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; if SQM_key='FOV ' then begin if head_2.cdelt2<>0 then begin ListView1.Items.item[c].subitems.Strings[L_sqm]:=floattostrF(head_2.height*abs(head_2.cdelt2),ffFixed,0,2); end else ListView1.Items.item[c].subitems.Strings[L_sqm]:=''; end else ListView1.Items.item[c].subitems.Strings[L_sqm] := sqm_value; if use_ephemeris_alignment1.Checked then {ephemeride based stacking} get_annotation_position(c,header_2);{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 cleanup; { release memory, set cursor 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} cleanup; progress_indicator(-100, '');{progresss done} end; end; procedure Tstackmenu1.Analyse1Click(Sender: TObject); begin memo2_message('Analysing lights'); if sender=analyse_lights_extra1 then begin listview1.columns[9].caption:='Streaks'; analyse_tab_lights(2 {full}); end else begin if planetary_image1.Checked then listview1.columns[9].caption:='Sharpness' else listview1.columns[9].caption:='-'; analyse_tab_lights(1 {medium}); end; {temporary fix for CustomDraw not called} {$ifdef darwin} {MacOS} stackmenu1.nr_total1.caption:=inttostr(listview1.items.count);{update counting info} {$endif} memo2_message('Analysing lights done.'); 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; img_temp : image_array; begin if head.naxis = 0 then exit; Screen.Cursor := crHourglass; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; if load_fits(filename2, True {light}, True, True {update memo}, 0,mainwindow.memo1.lines, 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, fitsY, fitsX] := img_temp[col, fitsY, fitsX] - img_loaded[col2, fitsY, fitsX] + 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,i: integer; starlistquads: star_list; warning_downsample: string; starlist1 : star_list; 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key max_stars := strtoint2(stackmenu1.max_stars1.Text,500); {maximum star to process, if so filter out brightest stars later} 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_alignment1.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 begin listview_removeselect(listview1);{from popup menu} //temporary till MACOS customdraw is fixed {$ifdef darwin} {MacOS} count_selected; {$endif} end; 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 esc_pressed:=true; //stop any scrolling and prevent run time errors ListView1.Clear; stackmenu1.ephemeris_centering1.Clear; //temporary till MACOS customdraw is fixed {$ifdef darwin} {MacOS} count_selected; {$endif} 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); begin if head.naxis = 0 then exit; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; gaussian_blur2(img_loaded, 2 * 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,0]); {width} h := Length(img[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, j, i]; 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,greylevels: integer; offset: single; bg: double; img_temp2: image_array; begin colors := Length(img); {colors} w := Length(img[0,0]); {width} h := Length(img[0]); {height} {prepare img_temp2} setlength(img_temp2, colors, h, w); 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, fitsY, fitsX] := 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,true{ellipse shape}, col, round(0.2 * head.Width), round(0.8 * head.Width), round(0.2 * head.Height), round(0.8 * head.Height), 32000,greylevels) - 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, fitsY, fitsX] := 0; if ((frac(fitsX / box_size) = 0) and (frac(fitsy / box_size) = 0)) then begin offset := mode(img_loaded,false{ellipse shape}, col, fitsX - step, fitsX + step, fitsY - step, fitsY + step, 32000,greylevels) - 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, j, i] := -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, fitsY, fitsX] := img[col, fitsY, fitsX] + img_temp2[col, fitsY, fitsX]; 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; sn, cs: double; median, test: array of double; bck : Tbackground; begin colors := Length(img); {colors} w := Length(img[0,0]); {width} h := Length(img[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}, bck); {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, fitsY, fitsX] - bck.backgr; if oldoffset <> 0 then offset := 0.1 * offset + 0.9 * oldoffset;{smoothing} oldoffset := offset; test[Count] := img[col, fitsY, fitsX] - bck.backgr; 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, fitsY, fitsX] := img[col, fitsY, fitsX] - offset; end; end; end;{all colors} test := nil; median := nil; end; procedure Tstackmenu1.apply_artificial_flat_correction1Click(Sender: TObject); var box_size: integer; begin if head.naxis <> 0 then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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, fitsY, fitsX]; if ((acceptzero) or (dum > 0)) then {signal} begin dum := (dum + add_valueR) * multiply_red / largest; if dum < 0 then dum := 0; img_loaded[0, fitsY, fitsX] := dum; end; if head.naxis3 > 1 then {colour} begin dum := img_loaded[1, fitsY, fitsX]; if ((acceptzero) or (dum > 0)) then {signal} begin dum := (dum + add_valueG) * multiply_green / largest; if dum < 0 then dum := 0; img_loaded[1, fitsY, fitsX] := dum; end; end; if head.naxis3 > 2 then {colour} begin dum := img_loaded[2, fitsY, fitsX]; if ((acceptzero) or (dum > 0)) then {signal} begin dum := (dum + add_valueB) * multiply_blue / largest; if dum < 0 then dum := 0; img_loaded[2, fitsY, fitsX] := 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,factor: single; idx : integer; value : string=''; img_temp : image_array; head_2 : theader; begin if head.naxis <> 0 then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; {move viewer data to img_backup} 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}, False {update memo}, 0,mainwindow.memo1.lines, head_2, img_temp) then {succes load} begin if ((length(img_temp)=length(img_loaded)) and (length(img_temp[0])=length(img_loaded[0])) ) then //equal format begin if idx >= 3 then //with norm factor begin if idx=3 then value:=InputBox('Scaled dark application','Enter the scale factor:',value ); 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, fitsY + (head.Height div 2), fitsX + (head.Width div 2)]; flat_norm_value := round(flat_norm_value / (30 * 30)); 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 {do all colors. Viewer colours are stored in old_naxis3 by backup} begin if idx = 3 then {scaled dark } begin factor:=strtofloat2(value); img_loaded[col, fitsY, fitsX] := img_loaded[col, fitsY, fitsX]{viewer} - factor*(img_temp[col, fitsY, fitsX]{file}- flat_norm_value); end else begin //flat routines if idx = 4 then {as flat=divide} begin flat_factor :=flat_norm_value / (img_temp[min(col, head.naxis3) , fitsY - 1, fitsX] + 0.0001); {This works both for color and mono flats. Bias should be combined in flat} end else if idx = 5 then {as flat=divide} begin {multiply} flat_factor := img_temp[min(col, head.naxis3 - 1), fitsY, fitsX ] / flat_norm_value; {This works both for color and mono flats. Bias should be combined in flat} end; img_loaded[col, fitsY, fitsX] := img_loaded[col, fitsY, fitsX] * flat_factor; end; end; end; end {idx>=3} 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, fitsY, fitsX] := img_temp[col, fitsY, fitsX] + img_loaded[col, fitsY, fitsX] else if idx = 1 then {viewer minus file} img_loaded[col, fitsY, fitsX] := img_loaded[col, fitsY, fitsX]{viewer} - img_temp[col, fitsY, fitsX]{file} else if idx = 2 then {viewer minus file +1000} img_loaded[col, fitsY, fitsX] := img_loaded[col, fitsY, fitsX]{viewer} - img_temp[col, fitsY, fitsX]{file} + 1000 end; end else memo2_message('Error, files of different format!'); end;{file loaded} end; 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; bck : tbackground; begin if head.naxis <> 0 then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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}, bck); min := bck.backgr * 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, fitsY, fitsX] := img_loaded[col, fitsY, fitsX] - 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, fitsY, fitsX] + a_factor); if bf < 0.00001 then colr := 0 else begin colr := k_factor * a_factor * (img_backup[index_backup].img[col, fitsY, fitsX] - min) / bf; if colr > 65535 then colr := 65535; if colr < 0 then colr := 0; end; img_loaded[col, fitsY, fitsX] := 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; datamax: double; 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,greylevels: integer; begin diameter := radius * 2; colors3 := length(sourc);{nr colours} height3 := length(sourc[0]);{height} width3 := length(sourc[0,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,false{ellipse shape}, k, x - radius, x + radius - 1, y - radius, y + radius - 1, trunc(datamax),greylevels); 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, y2, x2] := most_common; end; end; end;{K} end; procedure Tstackmenu1.most_common_filter_tool1Click(Sender: TObject); var radius: integer; begin if Length(img_loaded) = 0 then begin memo2_message('Error, no image in viewer loaded!'); exit; end; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,head.datamax_org, 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.transformation1Click(Sender: TObject); var i, countxy,formalism : integer; magnitude,raM,decM,v,b,r,sg,sr,si,g,bp,rp : double; stars,xylist : star_list; slope, intercept, sd : double; begin if head.naxis=0 then begin memo2_message('Abort, no image in the viewer! Load an image first by double clicking on one of the files in the list.'); exit; {file loaded?} end; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key calibrate_photometry; if head.passband_database='V'=false then begin memo2_message('Abort, transformation is only possible using online Gaia database=V (filter V of TG). Select "Online Gaia -> auto" or "Online Gaia -> V"'); Screen.Cursor:=crDefault; exit; end; if head.mzero=0 then begin beep; Screen.Cursor:=crDefault; exit; end; measure_magnitudes(14,0,0,head.width-1,head.height-1,true {deep},stars); formalism:=mainwindow.Polynomial1.itemindex; setlength(xylist,2, length(stars[0])); countxy:=0; if length(stars[0])>9 then begin for i:=0 to length(stars[0])-1 do begin if stars[4,i]{SNR}>40 then begin magnitude:=(head.mzero - ln(stars[3,i]{flux})*2.5/ln(10));//flux to magnitude pixel_to_celestial(head,1+stars[0,i],1+stars[1,i],formalism,raM,decM);//+1 to get fits coordinated report_one_star_magnitudes(raM,decM, {out} b,v,r,sg,sr,si,g,bp,rp ); //report the database magnitudes for a specfic position. Not efficient but simple routine if ((v>0) and (b>0)) then begin xylist[0,countxy]:=b-v; //gaiaB-gaiaV, star colour xylist[1,countxy]:=magnitude-v; //V- gaiaV, delta magnitude inc(countXY); // memo2_message(#9+floattostr(b-v)+#9+floattostr(magnitude-v)); end; end; end; {Test for y=1.75*x+ 67.5 setlength(xylist,2, 189); for countxy:=0 to 188 do begin xylist[0,countxy]:=countxy-10; //V- gaiaV xylist[1,countxy]:=50+countxy*1.75; //gaiaB-gaiaV end; // x y slope 1.75, intercept=67.5 //-10 50 // -9 51.75 // -8 53.50 // xylist[0,1]:=100; //outlier y=100 instead of 51.75} memo2_message('Using '+inttostr(countXY)+' detected stars.'); trendline_without_outliers(xylist,countXY,slope, intercept,sd); memo2_message('Slope is '+floattostrF(slope,FFfixed,5,3)+ '. Calculated required absolute transformation correction ∆ V = '+floattostrF(intercept,FFfixed,5,3)+' + '+floattostrF(slope,FFfixed,5,3)+'*(B-V). Standard deviation of measured magnitude vs Gaia transformed for stars with SNR>40 and without B-V correction is '+floattostrF(sd,FFfixed,5,3)+ #10); end else memo2_message('Not enough stars found!'); stars:=nil; xylist:=nil; Screen.Cursor:=crDefault; 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; function now_time_str: string; //reporte current time in 6 digit format as 235959 var hh,mm, ss,ms: Word; begin decodetime(now, hh, mm, ss, ms); result:= 'TT'+LeadingZero(hh)+LeadingZero(mm)+LeadingZero(ss); end; procedure listview_update_keyword(tl: tlistview; keyw, Value: string); {update key word of multiple files} var index, counter, error2: integer; waarde,jd: double; filename_old,new_date,keywOldTime: string; success,dateObs: boolean; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key index := 0; dateObs:=(keyw='DATE-OBS'); if dateObs then keywOldTime:=now_time_str; 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 if dateObs then //keyw is DATE-OBS begin date_to_jd(head.date_obs,'',0); if jd_start=0 then exit; jd:=jd_start+strtofloat2(value)/24; new_date:=jdtodate(jd); update_text(keyw + '=', #39 + new_date + #39);//new date update_text(keywOldTime+'=', #39 + head.date_obs + #39+'/ Backup of previous DATE-OBS'); //backup date in unused keyword memo2_message('Old date is stored in '+keywOldTime+'. To recover delete keyword DATE-OBS and rename '+keywOldTime+' to DATE-OBS.'); if tl = stackmenu1.listview1 then tl.Items.item[index].subitems.Strings[L_datetime] := new_date;{update light} if tl = stackmenu1.listview7 then tl.Items.item[index].subitems.Strings[p_date] := new_date;{update photometry} end 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 + '=', ' / ',true , 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 update_stackmenu_scrollbar; var scroll : boolean; w : integer; begin with stackmenu1 do begin case pagecontrol1.pageindex of 0: scroll:=stackmenu1.width<most_right1.left;//marker for indication most right controls 1: scroll:=stackmenu1.width<most_right2.left; 2: scroll:=stackmenu1.width<most_right3.left; 3: scroll:=stackmenu1.width<most_right4.left; 4: scroll:=stackmenu1.width<most_right5.left; 5: scroll:=stackmenu1.width<most_right6.left; 6: scroll:=stackmenu1.width<most_right7.left; 7: scroll:=stackmenu1.width<most_right8.left; 8: scroll:=stackmenu1.width<most_right9.left; 9: scroll:=stackmenu1.width<most_right10.left; 10: scroll:=stackmenu1.width<most_right11.left; 11: scroll:=stackmenu1.width<most_right12.left; 12: scroll:=stackmenu1.width<most_right13.left; 13: scroll:=stackmenu1.width<most_right14.left; 14: scroll:=stackmenu1.width<most_right15.left; end; stackmenu1.horzScrollbar.visible:=scroll;//show scrollbar; if scroll=false then horzScrollbar.position:=0; if scroll then w := GetSystemMetrics(SM_CXVSCROLL) //horz scroll bar width else w:=0; memo2.top := classify_groupbox1.top + classify_groupbox1.Height + 4; {make it High-DPI robust} memo2.Height := stackmenu1.Height - memo2.top-w;{make it High-DPI robust} memo2.width:=stackmenu1.width-2; 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; { listview1.Width:=stackmenu1.width-6; listview2.Width:=stackmenu1.width-6; listview3.Width:=stackmenu1.width-6; listview4.Width:=stackmenu1.width-6; listview5.Width:=stackmenu1.width-6; listview6.Width:=stackmenu1.width-6; listview7.Width:=stackmenu1.width-6; listview8.Width:=stackmenu1.width-6; listview9.Width:=stackmenu1.width-6;} listview1.constraints.maxWidth:=stackmenu1.width-6; listview2.constraints.maxWidth:=stackmenu1.width-6; listview3.constraints.maxWidth:=stackmenu1.width-6; listview4.constraints.maxWidth:=stackmenu1.width-6; listview5.constraints.maxWidth:=stackmenu1.width-6; listview6.constraints.maxWidth:=stackmenu1.width-6; listview7.constraints.maxWidth:=stackmenu1.width-6; listview8.constraints.maxWidth:=stackmenu1.width-6; listview9.constraints.maxWidth:=stackmenu1.width-6; update_stackmenu_scrollbar; end; procedure set_icon_stackbutton; //update glyph stack button to colour or gray var bmp: tbitmap; begin bmp := TBitmap.Create; with stackmenu1 do begin if stackmenu1.stack_method1.ItemIndex>1 then ImageList2.GetBitmap(6, bmp){gray stack} else if classify_filter1.checked then ImageList2.GetBitmap(12, bmp){colour stack} else if ((process_as_osc > 0) or (make_osc_color1.Checked)) then ImageList2.GetBitmap(30, bmp){OSC colour stack} else ImageList2.GetBitmap(6, bmp);{gray stack} stack_button1.glyph.Assign(bmp); end; FreeAndNil(bmp); end; procedure delta_dark_temperature_visibility; var showc: boolean; begin with stackmenu1 do begin showc:=classify_dark_temperature1.checked; delta_temp1.visible:=showc; Label63.visible:=showc; Label60.visible:=showc; end; end; procedure Tstackmenu1.FormShow(Sender: TObject); begin // set_icon_stackbutton;//update glyph stack button stackmenu1.stack_method1Change(nil); stackmenu1.pagecontrol1Change(Sender);//update stackbutton1.enabled delta_dark_temperature_visibility;//update visibility 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,mainwindow.memo1.lines, 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.unsharp_amount1Change(Sender: TObject); begin unsharp_edit_amount1.text:=inttostr(unsharp_amount1.position div 10); end; procedure Tstackmenu1.unsharp_radius1Change(Sender: TObject); begin unsharp_edit_radius1.text:=floattostrF(unsharp_radius1.position/10,ffgeneral,4,1); end; procedure Tstackmenu1.unsharp_threshold1Change(Sender: TObject); begin unsharp_edit_threshold1.text:=floattostrF(unsharp_threshold1.position/10,ffgeneral,4,1); end; procedure Tstackmenu1.apply_gaussian_blur_button1Click(Sender: TObject); begin if head.naxis = 0 then exit; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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; 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} begin show_shape_manual_alignment(index){show the marker on the reference star} end 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; Screen.Cursor:=crDefault;//required sometimes for MacOS 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 Screen.Cursor := crDefault;;//just to be sure for Mac. 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; hfd_median, hjd, sd, dummy, alt, az, ra_jnow, dec_jnow, ra_mount_jnow, dec_mount_jnow, ram, decm, adu_e :double; filename1,filterstr,filterstrUP,issue : string; loaded, red, green, blue: boolean; img: image_array; head_2 : theader; nr_stars, hfd_outer_ring, median_11, median_21, median_31, median_12, median_22, median_32, median_13, median_23, median_33: double; bck : Tbackground; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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(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,mainwindow.memo1.lines, 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} bck); lv.Items.item[c].subitems.Strings[D_background] := inttostr5(round(bck.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, 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.date_avg, head_2.exposure); {convert to julian days} lv.Items.item[c].subitems.Strings[D_jd] := floattostrF(jd_start, ffFixed, 0, 1);{julian day, 1/10 day accuracy} lv.Items.item[c].subitems.Strings[D_issues]:='';//clear issues end else if tabnr = 3 then {flat tab} begin issue:='';//clear old issues lv.Items.item[c].subitems.Strings[F_filter] := head_2.filter_name; if head_2.naxis3 = 3 then lv.Items.item[c].SubitemImages[F_filter] := 3 {RGB colour} else if ((bayerpat<> '') and (bayerpat[1]<>'N' {ZWO NONE})) then Lv.Items.item[c].SubitemImages[F_filter] :=25 //raw OSC file else begin Lv.Items.item[c].SubitemImages[F_filter] :=get_filter_icon(head_2.filter_name,{out} red,green, blue); if Lv.Items.item[c].SubitemImages[F_filter]=7 then lv.Items.item[c].subitems.Strings[F_issues]:='Filter=?';//display issue end; {$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.date_avg, 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} //Remark. Do not fill [B_solution]. Will contain numbers instead of ✓ used by the blink routine if annotated then lv.Items.item[c].subitems.Strings[B_annotated] := '✓' else lv.Items.item[c].subitems.Strings[B_annotated] := ''; blink_width:=head_2.width;//remember for avi writing blink_height:=head_2.height; blink_naxis3:=head_2.naxis3; 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; filterstr:=head_2.filter_name;// R, G or V, B or TG filterstrUP:=uppercase(filterstr); if ((length(filterstr)=0) or (pos('CV',filterstrUP)>0)) then begin if ((bayerpat<> '') and (bayerpat[1]<>'N' {ZWO NONE})) then Lv.Items.item[c].SubitemImages[P_filter] :=25 //raw OSC file else lv.Items.item[c].SubitemImages[P_filter]:=-1 //unknown end else if pos('S',filterstrUP)>0 then //sloan begin if pos('I',filterstrUP)>0 then lv.Items.item[c].SubitemImages[P_filter]:=21 //SDSS-i else if pos('R',filterstrUP)>0 then lv.Items.item[c].SubitemImages[P_filter]:=22 //SDSS-r else if pos('G',filterstrUP)>0 then lv.Items.item[c].SubitemImages[P_filter]:=23 //SDSS-g else lv.Items.item[c].SubitemImages[P_filter]:=-1; //unknown end else //Johnson-Cousins if pos('TR',filterstrUP)>0 then lv.Items.item[c].SubitemImages[P_filter]:=0 //Red else if pos('R',filterstrUP)>0 then lv.Items.item[c].SubitemImages[P_filter]:=24 //Cousins-red else if pos('V',filterstrUP)>0 then lv.Items.item[c].SubitemImages[P_filter]:=1 //green else if pos('G',filterstrUP)>0 then lv.Items.item[c].SubitemImages[P_filter]:=1 //green else if pos('B',filterstrUP)>0 then lv.Items.item[c].SubitemImages[P_filter]:=2 //blue else lv.Items.item[c].SubitemImages[P_filter]:=-1; //unknown date_to_jd(head_2.date_obs,head_2.date_avg, 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 alt <> 0 then begin centalt := floattostrf(alt, ffGeneral, 3, 1); {altitude} lv.Items.item[c].subitems.Strings[P_centalt] := centalt; {altitude} lv.Items.item[c].subitems.Strings[P_airmass] := floattostrf(AirMass_calc(alt), ffFixed, 0, 3); {airmass} end; {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 a_order>0 then lv.Items.item[c].subitems.Strings[P_astrometric] := '✓✓' //SIP solution else 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}, 0 {report nr stars and hfd only}, hfd_counter, bck, hfd_median); {find background, number of stars, median HFD} lv.Items.item[c].subitems.Strings[P_background]:= inttostr5(round(bck.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.date_avg, 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&memo2 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} pixel_to_celestial(head_2,head_2.crpix1, head_2.crpix2 + 1,1 {wcs and sip is available}, 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; out 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key {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,mainwindow.memo1.lines, head, img_tmp1) = False)) then begin Screen.Cursor := crDefault; exit; end; if c = 0 then {init} begin setlength(img2, 1, head.Height, head.Width);{set length of image array mono} for fitsY := 0 to head.Height - 1 do for fitsX := 0 to head.Width - 1 do img2[0, fitsY, fitsX] := 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, fitsY, fitsX] := img2[0, fitsY, fitsX] + (img_tmp1[0, fitsY, fitsX] + img_tmp1[1, fitsY, fitsX] + img_tmp1[2, fitsY, fitsX]) / 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, fitsY, fitsX] := img2[0, fitsY, fitsX] + img_tmp1[0, fitsY, fitsX]; {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, fitsY, fitsX] := img2[0, fitsY, fitsX] / file_count;{scale to one image} img_tmp1 := nil;{free memo2} Screen.Cursor := crDefault; { Always restore to normal } end; function average_flatdarks(exposure: double; out w,h : integer; out img_bias: image_array): boolean; var c, file_count: integer; file_list: array of string; begin result:=false;{just in case no flat-dark are found} 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; 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 := true; w:=head.Width; {width of the flat-dark} h:=head.height; {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);{blur by combining values of pixels, ignore value above max_value and 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]);{height} w := length(img[0,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 := - range div 2; maximum := + range div 2; end; {if range is 5 then combine values of 25 pixels total} setlength(img_temp2,col, h, w);{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, y1, x1]; if value2 <> 0 then begin Value := Value + value2; Inc(counter); end;{ignore zeros} end; end; if counter <> 0 then img_temp2[k, fitsY, fitsX] := Value / counter else img_temp2[k, fitsY, fitsX] := 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, fitsY, fitsX] := (img_temp2[0, fitsY, fitsX] + img_temp2[1, fitsY, fitsX] + img_temp2[2, fitsY, fitsX]) / 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]);{height} w := length(img[0,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, fitsY, fitsX]; Inc(counter1); end else {separate counters for case odd() dimensions are used} if ((oddX = True) and (oddY = False)) then begin value2 := value2 + img[0, fitsY, fitsX]; Inc(counter2); end else if ((oddX = False) and (oddY = True)) then begin value3 := value3 + img[0, fitsY, fitsX]; Inc(counter3); end else if ((oddX = True) and (oddY = True)) then begin value4 := value4 + img[0, fitsY, fitsX]; 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, fitsY, fitsX] := round(img[0, fitsY, fitsX] * value1) else if ((value2 <> 1) and (oddX = True) and (oddY = False)) then img[0, fitsY, fitsX] := round(img[0, fitsY, fitsX] * value2) else if ((value3 <> 1) and (oddX = False) and (oddY = True)) then img[0, fitsY, fitsX] := round(img[0, fitsY, fitsX] * value3) else if ((value4 <> 1) and (oddX = True) and (oddY = True)) then img[0, fitsY, fitsX] := round(img[0, fitsY, fitsX] * value4); end; 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]);{height} w := length(img[0,0]);{width} range := 1; setlength(img_temp2, col,h, w);{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, h div 2, left] = 0; until ((black = False) or (left >= w - 1)); right := w; repeat Dec(right); black := img[k, h div 2, right] = 0; until ((black = False) or (right <= 0)); bottom := -1; repeat Inc(bottom); black := img[k, bottom, w div 2] = 0; until ((black = False) or (bottom >= h - 1)); top := h; repeat Dec(top); black := img[k, top, w div 2] = 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, fitsY, fitsX]; 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, y1, x1]; 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 >= 10));{try till 10 pixels away} end; img_temp2[k, fitsY, fitsX] := 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} {temporary fix for CustomDraw not called} {$ifdef darwin} {MacOS} stackmenu1.nr_total_bias1.caption:=inttostr(listview3.items.count);{update counting info} {$endif} end; procedure Tstackmenu1.analyseflatdarksButton1Click(Sender: TObject); begin analyse_listview(listview4, False {light}, True {full fits, include background and noise}, False{refresh}); {temporary fix for CustomDraw not called} {$ifdef darwin} {MacOS} stackmenu1.nr_total_flats1.caption:=inttostr(listview4.items.count);{update counting info} {$endif} 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; keyw:=uppercase(keyw); if keyw='DATE-OBS' then Value := InputBox('Shift in hours:', '', '') else Value := InputBox('New value header keyword (Type DELETE to remove keyword):', '', ''); if length(Value) <= 0 then exit; listview_update_keyword(lv, keyw, Value);{update key word} end; procedure Tstackmenu1.dark_spot_filter1Click(Sender: TObject); var fitsx, fitsy, i, j, k, x2, y2, radius, most_common, progress_value,greylevels: integer; neg_noise_level: double; bck : tbackground; begin if head.naxis <> 0 then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key get_background(0, img_loaded, True, False{do not calculate noise_level}, bck); {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,false{ellipse shape}, k, fitsX - radius, fitsX + radius - 1, fitsY - radius, fitsY + radius - 1, 32000,greylevels); 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, y2, x2] < bck.backgr then {below global most common level} if img_loaded[k, y2, x2] < most_common - neg_noise_level then {local dark spot} img_loaded[k, y2, x2] := 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, y_trunc, x_trunc]) * (1 - x_frac) * (1 - y_frac); {pixel left top, 1} Result := Result + (img_loaded[k2, y_trunc, x_trunc + 1]) * (x_frac) * (1 - y_frac);{pixel right top, 2} Result := Result + (img_loaded[k2, y_trunc + 1, x_trunc]) * (1 - x_frac) * (y_frac);{pixel left bottom, 3} Result := Result + (img_loaded[k2, y_trunc + 1, x_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,fitsY-1,fitsX-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,h,w); ; 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, fitsY, fitsX] := 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; mainwindow.Memo1.Lines.BeginUpdate; 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) ',false, head.cdelt1); end; if head.cdelt2 <> 0 then begin head.cdelt2 := head.cdelt2 / ratio; update_float('CDELT2 =', ' / Y pixel size (deg) ',false, head.cdelt2); end; if head.cd1_1 <> 0 then begin head.crpix1 := head.crpix1 * ratio; update_float('CRPIX1 =', ' / X of reference pixel ',false, head.crpix1); head.crpix2 := head.crpix2 * ratio; update_float('CRPIX2 =', ' / Y of reference pixel ',false, 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) ',false, head.cd1_1); update_float('CD1_2 =', ' / CD matrix to convert (x,y) to (Ra, Dec) ',false, head.cd1_2); update_float('CD2_1 =', ' / CD matrix to convert (x,y) to (Ra, Dec) ',false, head.cd2_1); update_float('CD2_2 =', ' / CD matrix to convert (x,y) to (Ra, Dec) ',false, head.cd2_2); end; head.XBINNING := head.XBINNING / ratio; head.YBINNING := head.YBINNING / ratio; update_float('XBINNING=', ' / Binning factor in width ',false, head.XBINNING); update_float('YBINNING=', ' / Binning factor in height ',false, 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) ',false, head.XPIXSZ); update_float('YPIXSZ =', ' / Pixel height in microns (after stretching) ',false, head.YPIXSZ); update_float('PIXSIZE1=', ' / Pixel width in microns (after stretching) ',false, head.XPIXSZ); update_float('PIXSIZE2=', ' / Pixel height in microns (after stretching) ',false, head.YPIXSZ); end; add_text('HISTORY ', 'Image resized with factor ' + floattostr6(ratio)); mainwindow.Memo1.Lines.EndUpdate; end; procedure Tstackmenu1.free_resize_fits1Click(Sender: TObject);{free resize FITS image} begin if head.naxis = 0 then exit; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; resize_img_loaded(width_UpDown1.position / head.Width {ratio}); use_histogram(img_loaded, True {update}); {plot histogram, set sliders} remove_photometric_calibration;//from header 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; 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 scroll_up_down(lv:tlistview; up: boolean); var c, step,watchdog: integer; checkf : boolean; begin watchdog:=0; if lv.items.Count <= 1 then exit; {no files} if up=False then step := -1 else step := 1;{forward/ backwards} c := listview_find_selection(lv); {find the row selected} repeat // find checked file Inc(c, step); if c >= lv.items.Count then c := 0; if c < 0 then c := lv.items.Count - 1; checkf:=lv.Items.item[c].Checked; if checkf then begin lv.Selected := nil;//remove any selection lv.ItemIndex := c;// mark where we are. lv.ItemIndex := c; {mark where we are. Important set in object inspector lv.HideSelection := false; lv.Rowselect := true} lv.Items[c].MakeVisible(False);{scroll to selected item} filename2 := lv.items[c].Caption; mainwindow.Caption := filename2; {load image} if load_fits(filename2, True {light}, True, True {update memo}, 0,mainwindow.memo1.lines, head,img_loaded) = False then begin memo2_message('repeat exit'); Screen.Cursor:=crDefault; exit; 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; //checkf=true inc(watchdog); until ((checkf) or (esc_pressed) or (watchdog>300)); end; procedure Tstackmenu1.listview1KeyDown(Sender: TObject; var Key: word; Shift: TShiftState); // for all listviexX begin if key = vk_delete then listview_removeselect(TListView(Sender)); if key = vk_left then scroll_up_down(tlistview(sender), false); if key = vk_right then scroll_up_down(tlistview(sender), true ); 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; img_buffer : image_array; 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.Height, head.Width);{create a new mono image} for fitsY := 0 to head.Height - 1 do for fitsX := 0 to head.Width - 1 do img_buffer[0, fitsY, fitsX] := img_loaded[0, fitsY, fitsX]; filename2 := StringReplace(filename1, '.fit', '_red.fit', []);{give new file name } update_text('FILTER =',copy(#39+'Red '+#39+' ',1,21)+'/ 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, fitsY, fitsX] := img_loaded[1, fitsY, fitsX]; filename2 := StringReplace(filename1, '.fit', '_green.fit', []);{give new file name } update_text('FILTER =',copy(#39+'Green '+#39+' ',1,21)+'/ 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, fitsY, fitsX] := img_loaded[2, fitsY, fitsX]; filename2 := StringReplace(filename1, '.fit', '_blue.fit', []);{give new file name } update_text('FILTER =',copy(#39+'Blue '+#39+' ',1,21)+'/ 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 Memo3 will not be modified} {temporary fix for CustomDraw not called} {$ifdef darwin} {MacOS} stackmenu1.nr_total_darks1.caption:=inttostr(listview2.items.count);{update counting info} {$endif} 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 head.mzero <> 0 then begin memo2_message('Flux calibration cleared. For magnitude measurements in viewer recalibrate by ctrl-U. See viewer tool menu. '); head.mzero := 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; 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 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 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 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; 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,buffer_loaded: boolean; st : string; starlist1,starlist2 : star_list; img_temp : image_array; begin if listview6.items.Count <= 1 then exit; {no files} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,500); {maximum star to process, if so filter out brightest stars later} mainwindow.image1.Canvas.brush.Style := bsClear; mainwindow.image1.canvas.font.color := $00B0FF;{orange} esc_pressed := False; buffer_loaded:=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 (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,mainwindow.memo1.lines, 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); {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}, {out} bck); 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........'; get_background(0, img_loaded, False {no histogram already done}, True {unknown, calculate also noise_level}, {out} bck); 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_str); 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.Height, head.Width);{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, y_new, x_new] := img_loaded[col, fitsY, fitsX]; end; img_loaded :=nil; 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 head.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: ' + head.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 Memo3 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; bck.backgr := 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 Memo3} 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.Height, head.Width);{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, i, j] := randg(1000, 100 {noise}){default background is 1000} else img_loaded[0, i, j] := -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 := 10; 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, i, j] := 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, i + round(shiftY + m / subsampling), j + round(shiftX + n / subsampling)] := img_loaded[0, i + round(shiftY + m / subsampling), j + round(shiftX + n / subsampling)] + flux; {gaussian shaped stars} if frac(starcounter / 20) = 0 then begin img_loaded[0, 130 + starcounter + round(shiftY + m / subsampling),180 + starcounter + round(shiftX + n / subsampling)] := img_loaded[0, 130 + starcounter + round(shiftY + m / subsampling), 180 + starcounter + round(shiftX + n / 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, i + m, j + n] := img_loaded[0, i + m, j + n] + 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 analyse_objects_visible(lv :tlistview); //analyse the the first selected image or the first image begin esc_pressed:=false; stackmenu1.ephemeris_centering1.items.clear;//clear the list if lv.items.Count = 0 then begin memo2_message('Abort, No files in the listview.'); exit; end;{no files in list, exit} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key if lv.selected = nil then lv.ItemIndex := 0;{show wich file is processed} filename2 := lv.selected.Caption; if load_fits(filename2, True {light}, True, True {update memo}, 0,mainwindow.memo1.lines, 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 update_solution_and_save(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},false); 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 the image. Increase the limiting count and/or limiting magnitude in Asteroid & Comet annotation menu, shortcut CTRL+R'); memo2_message('Completed. Select the object to align on.'); Screen.Cursor := crDefault; { back to normal } end; procedure Tstackmenu1.analyse_objects_visible1Click(Sender: TObject); begin analyse_objects_visible(listview1); ;//file ephemeris_centering1 tCombobox in tab alignment with asteroids using one image 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.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 m, 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, m, a, b); {input data[n,1]=position,data[n,2]=hfd, output: bestfocusposition=m, a, b of hyperbola} if i = 1 then memo2_message(#9+'full image ' + #9 + 'Focus=' + floattostrf(m, 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(#9+'area 2,2 (center) ' + #9 + 'Focus=' + floattostrf(m, 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 := m; end; if i = 3 then memo2_message(#9+'outer ring ' + #9 + 'Focus=' + floattostrf(m, ffFixed, 0, 0) + #9 + 'a=' + floattostrf(a, ffFixed, 0, 5) + #9 + ' b=' + floattostrf(b, ffFixed, 9, 5) + #9 + 'offset=' + floattostrf( m - 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(#9+'area 1,1 (Bottom Left) ' + #9 + 'Focus=' + floattostrf(m, ffFixed, 0, 0) + #9 + 'a=' + floattostrf(a, ffFixed, 0, 5) + #9 + ' b=' + floattostrf(b, ffFixed, 9, 5) + #9 + 'offset=' + floattostrf( m - 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(#9+'area 2,1 (Bottom Middle)' + #9 + 'Focus=' + floattostrf(m, ffFixed, 0, 0) + #9 + 'a=' + floattostrf(a, ffFixed, 0, 5) + #9 + ' b=' + floattostrf(b, ffFixed, 9, 5) + #9 + 'offset=' + floattostrf( m - 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(#9+'area 3,1 (Bottom Right) ' + #9 + 'Focus=' + floattostrf(m, ffFixed, 0, 0) + #9 + 'a=' + floattostrf(a, ffFixed, 0, 5) + #9 + ' b=' + floattostrf(b, ffFixed, 9, 5) + #9 + 'offset=' + floattostrf( m - 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(#9+'area 1,2 (Middle left) ' + #9 + 'Focus=' + floattostrf(m, ffFixed, 0, 0) + #9 + 'a=' + floattostrf(a, ffFixed, 0, 5) + #9 + ' b=' + floattostrf(b, ffFixed, 9, 5) + #9 + 'offset=' + floattostrf( m - 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(#9+'area 3,2 (Middle Right) ' + #9 + 'Focus=' + floattostrf(m, ffFixed, 0, 0) + #9 + 'a=' + floattostrf(a, ffFixed, 0, 5) + #9 + ' b=' + floattostrf(b, ffFixed, 9, 5) + #9 + 'offset=' + floattostrf( m - 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(#9+'area 1,3 (Top left) ' + #9 + 'Focus=' + floattostrf(m, ffFixed, 0, 0) + #9 + 'a=' + floattostrf(a, ffFixed, 0, 5) + #9 + ' b=' + floattostrf(b, ffFixed, 9, 5) + #9 + 'offset=' + floattostrf( m - 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(#9+'area 2,3 (Top Middle) ' + #9 + 'Focus=' + floattostrf(m, ffFixed, 0, 0) + #9 + 'a=' + floattostrf(a, ffFixed, 0, 5) + #9 + ' b=' + floattostrf(b, ffFixed, 9, 5) + #9 + 'offset=' + floattostrf( m - 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(#9+'area 3,3 (Top Right) ' + #9 + 'Focus=' + floattostrf(m, ffFixed, 0, 0) + #9 + 'a=' + floattostrf(a, ffFixed, 0, 5) + #9 + ' b=' + floattostrf(b, ffFixed, 9, 5) + #9 + 'offset=' + floattostrf( m - 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; red,green, blue : boolean; c : integer; begin 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 := []; //fast update listview icons for c:=0 to ListView1.items.Count - 1 do ListView1.Items.item[c].SubitemImages[L_filter] :=get_filter_icon(ListView1.Items.item[c].subitems.Strings[L_filter],{out} red,green, blue); for c:=0 to ListView3.items.Count - 1 do ListView3.Items.item[c].SubitemImages[F_filter] :=get_filter_icon(ListView3.Items.item[c].subitems.Strings[F_filter],{out} red,green, blue); 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); saturation := stackmenu1.new_saturation1.position / 100; v:=v * stackmenu1.new_colour_luminance1.position/100;// adjust luminance 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, sY, sX]; colgg := colgg + img_loaded[1, sY, sX]; colbb := colbb + img_loaded[2, sY, sX]; end; end; if counter = 0 then exit; colrr := ((colrr / counter) - bck.backgr) / (cwhite - bck.backgr);{scale to 0..1} colgg := ((colgg / counter) - bck.backgr) / (cwhite - bck.backgr);{scale to 0..1} colbb := ((colbb / counter) - bck.backgr) / (cwhite - bck.backgr);{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(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; refresh_solutions, success: boolean; thefile, filename1: string; head_2 : theader; img_temp : image_array; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,mainwindow.memo1.lines, 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},false) 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 Memo3 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_colour_luminance1Change(Sender: TObject); begin update_replacement_colour; end; procedure Tstackmenu1.new_saturation1Change(Sender: TObject); begin update_replacement_colour; 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)); if theindex=9 then stackmenu1.Memo2.Font.name :='Courier New' else stackmenu1.Memo2.Font.name :='default'; update_stackmenu_scrollbar; 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; fn, ff: string; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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 {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; 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; if sender=photom_blue1 then fn := extract_raw_colour_to_file(ff, 'TB', 1, 1) {extract green red or blue channel} else if sender=photom_red1 then fn := extract_raw_colour_to_file(ff, 'TR', 1, 1) {extract green red or blue channel} else 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; end; end; analyse_listview(listview7, True {light}, False {full fits}, True{refresh}); {refresh list} Screen.Cursor := crDefault; { Always restore to normal } end; procedure stack_group(lv : tlistview; Sender: TObject); var index, counter, oldindex, position, i,referenceX,referenceY: integer; ListItem : TListItem; blinktab : boolean; begin // blinktab:=lv=tlistview(stackmenu1.listview6);//sender is blink tab blinktab:=(sender=stackmenu1.blink_stack_selected1);//sender is blink tab position := -1; index := 0; stackmenu1.listview1.Items.beginUpdate; stackmenu1.listview1.Clear; counter := lv.Items.Count; while index < counter do begin if lv.Items[index].Selected then begin if position < 0 then begin position := index;//store first position end; listview_add(stackmenu1.listview1, lv.items[index].Caption, True, L_nr); // add to tab light end; Inc(index); {go to next file} end; stackmenu1.listview1.Items.endUpdate; analyse_tab_lights(0 {analyse_level});//update also process_as_osc if ((blinktab=false) and (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 := stackmenu1.stack_method1.ItemIndex; stackmenu1.stack_method1.ItemIndex := 0; //average filename2:=''; stackmenu1.stack_button1Click(Sender);// stack the files in tab lights if filename2<>'' then begin // move calibrated files back if blinktab=false then listview_removeselect(lv); lv.Items.BeginUpdate; with lv do begin ListItem := Items.insert(position); ListItem.Caption := filename2; // contains the stack file name ListItem.Checked := blinktab=false;//do not check the new files in tab blink for i := 1 to P_nr do ListItem.SubItems.Add(''); // add the other columns Dec(index); {go to next file} end; lv.Items.EndUpdate; stackmenu1.listview1.Clear; memo2_message('Stacking successfull'); end //stack success else memo2_message('Stack failure! Check stack settings'); stackmenu1.stack_method1.ItemIndex := oldindex;//return old setting save_settings2; if blinktab=false then analyse_listview(lv, True {light}, False {full fits}, True{refresh}); {refresh list} end; procedure Tstackmenu1.photom_stack1Click(Sender: TObject); begin stack_group(listview7,Sender); 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.reference_database1Change(Sender: TObject); begin if head.mzero <> 0 then begin memo2_message('Flux calibration cleared. For magnitude measurements in viewer recalibrate by ctrl-U. See viewer tool menu. '); head.mzero := 0; 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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; img_temp : image_array; begin if Length(img_loaded) = 0 then begin memo2_message('Error, no image in viewer loaded!'); exit; end; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; {move copy to img_backup} get_background(0, img_loaded, False {do not calculate hist}, False {do not calculate noise_level}, {out} bck); 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.Height, head.Width);{new size} apply_most_common(img_backup[index_backup].img, img_temp,head.datamax_org, 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.Height, head.Width);{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, fitsY, fitsX]; {stars+nebula} {smooth nebula} Value := org_value - img_temp[0, fitsY, fitsX]; if Value > star_level_colouring then {star} begin img_loaded[0, fitsY, fitsX] := org_value; if head.naxis3 > 1 then img_loaded[1, fitsY, fitsX] := img_backup[index_backup].img[1, fitsY, fitsX] else img_loaded[1, fitsY, fitsX] := org_value; if head.naxis3 > 2 then img_loaded[2, fitsY, fitsX] := img_backup[index_backup].img[2, fitsY, fitsX] else img_loaded[2, fitsY, fitsX] := org_value; end else {nebula} begin img_loaded[0, fitsY, fitsX] := org_value; img_loaded[1, fitsY, fitsX] := bck.backgr + (org_value - bck.backgr) * Value / star_level_colouring; img_loaded[2, fitsY, fitsX] := bck.backgr + (org_value - bck.backgr) * 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 clear_added_AAVSO_columns; var i: integer; begin //clear added AAVSO columns with stackmenu1.listview7 do for i:=p_nr-1 downto p_nr_norm do columns.Delete(ColumnCount-1); p_nr:=p_nr_norm;//set variable for the number of columns correct; end; procedure Tstackmenu1.clear_photometry_list1Click(Sender: TObject); begin esc_pressed := True; {stop any running action} listview7.Items.BeginUpdate; listview7.Clear; clear_added_AAVSO_columns; listview7.Items.EndUpdate; end; procedure Tstackmenu1.export_aligned_files1Click(Sender: TObject); var c, fitsX, fitsY, x_new, y_new, col, ps: integer; st: string; img_temp : image_array; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,mainwindow.memo1.lines, 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.Height, head.Width);{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, fitsY, fitsX] := 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, y_new, x_new] := img_loaded[col, fitsY, fitsX]; 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 head.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: ' + head.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; 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_obs,date_avg: 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; jd_end:=0; jd_mid:=0; if date_obs<>'' then begin val(copy(date_obs, 18, 7), ss, error2); if error2 <> 0 then exit; {read also milliseconds} val(copy(date_obs, 15, 2), min, error2); if error2 <> 0 then exit; val(copy(date_obs, 12, 2), hh, error2); if error2 <> 0 then exit; val(copy(date_obs, 09, 2), dd, error2); if error2 <> 0 then exit; val(copy(date_obs, 06, 2), mm, error2); if error2 <> 0 then exit; val(copy(date_obs, 01, 4), yy, error2); if error2 <> 0 then exit; jd_start := julian_calc(yy, mm, dd, hh, min, ss);{calculate julian date} jd_end := jd_start + exp / (24 * 3600);{Add head.exposure in days to get end date} end; if date_avg='' then begin jd_mid := jd_start + exp / (2 * 24 * 3600);{Add half head.exposure in days to get midpoint} end else begin val(copy(date_avg, 18, 7), ss, error2); if error2 <> 0 then exit; {read also milliseconds} val(copy(date_avg, 15, 2), min, error2); if error2 <> 0 then exit; val(copy(date_avg, 12, 2), hh, error2); if error2 <> 0 then exit; val(copy(date_avg, 09, 2), dd, error2); if error2 <> 0 then exit; val(copy(date_avg, 06, 2), mm, error2); if error2 <> 0 then exit; val(copy(date_avg, 01, 4), yy, error2); if error2 <> 0 then exit; jd_mid := julian_calc(yy, mm, dd, hh, min, ss);{calculate julian date} 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, I_nr); {inspector} 10: listview_add( listview9, FileNames[i], True, M_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.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 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.photometry_binx2Click(Sender: TObject); var c,columns: integer; lv: tlistview; begin if sender=blink_binx2 then begin lv:=stackmenu1.listview6; columns:=b_nr; end else begin lv:=stackmenu1.listview7; columns:=p_nr end; 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; lv.Items.beginUpdate; for c := 0 to lv.items.Count - 1 do begin if ((esc_pressed = False) and (lv.Items.item[c].Checked)) then begin filename2 := lv.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; lv.Items[c].Checked := False; listview_add(lv, filename2, True, columns);{add binx2 file} end; end;{for loop} lv.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; head_2 : theader; img_temp : image_array; 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,mainwindow.memo1.lines, 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 magnitude of the stars} stars_mean[x_new, y_new] := stars_mean[x_new, y_new] + (head.MZERO - ln(starlistpack[c].starlist[3, i]{flux})*2.5/ln(10));{magnitude} //ln(starlistpack[c].flux_ratio/starlistpack[c].starlist[3, i]{flux})/ln(2.511886432); {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 begin 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]) - (head.MZERO - ln(starlistpack[c].starlist[3, i]{flux})*2.5/ln(10)) );{sd calculate by sqr magnitude difference from mean} // ln( starlistpack[c].flux_ratio/starlistpack[c].starlist[3, i]{flux})/ln(2.511886432) ); {sd calculate by sqr magnitude difference from mean} end; 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 magn, hfd1, star_fwhm, snr, flux, xc, yc, madVar, madCheck, madThree, medianVar, medianCheck, medianThree, hfd_med, apert, annul, rax1, decx1, rax2, decx2, rax3, decx3, xn, yn, adu_e,sep,az,alt : double; saturation_level: single; c, i, x_new, y_new, fitsX, fitsY, col,{first_image,}size, starX, starY, stepnr, countVar, countCheck, countThree, database_col,j, lvsx,lvsp,nrvars,formalism : integer; flipvertical, fliphorizontal, init, refresh_solutions, analysedP, store_annotated, warned, success,new_object: boolean; starlistx: star_list; starVar, starCheck, starThree: array of double; outliers: array of array of double; astr, memo2_text, filename1 : string; bck :tbackground; oldra0 : double=0; olddec0: double=-pi/2; head_2 : theader; img_temp : image_array; function measure_star(deX, deY: double): string;{measure position and flux} begin HFD(img_loaded, round(deX - 1), round(deY - 1), annulus_radius {14, annulus radius}, head.mzero_radius, 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(yc) , round(xc)] < saturation_level) and (img_loaded[0, round(yc - 1), round(xc)] < saturation_level) and (img_loaded[0, round(yc + 1), round(xc)] < saturation_level) and (img_loaded[0, round(yc) , round(xc - 1)] < saturation_level) and (img_loaded[0, round(yc) , round(xc + 1)] < saturation_level) and (img_loaded[0, round(yc - 1), round(xc - 1)] < saturation_level) and (img_loaded[0, round(yc - 1), round(xc + 1)] < saturation_level) and (img_loaded[0, round(yc + 1), round(xc - 1)] < saturation_level) and (img_loaded[0, round(yc + 1), round(xc + 1)] < saturation_level)) then {not saturated star} begin magn:=starlistpack[c].MZERO - ln(flux)*2.5/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_ratio, 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; apr,anr :double); {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 apr < 99 {<>max setting} then mainwindow.image1.canvas.ellipse(round(starX - apr - 1), round(starY - apr - 1), round( starX +apr + 1), round(starY + apr + 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 - anr), round(starY - anr), round(starX + anr), round(starY + anr)); {three pixels, 1,2,3} mainwindow.image1.canvas.ellipse(round(starX - anr - 4), round(starY - anr - 4), round(starX + anr + 4), round( starY + anr + 4)); end; procedure plot_outliers;{plot up to 4 yellow circles around the outliers} var k: integer; begin mainwindow.image1.Canvas.Pen.Color := clyellow; mainwindow.image1.Canvas.Pen.mode := pmXor; 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 variable_list:=nil;//clear every time. In case the images are changed then the columns are correct. //remove following line at the end of 2025 if ((pos('V5', uppercase(star_database1.Text)) <> 0) and (length(database2)>107) and (database2[107]<>'.')) then memo2_message(' █ █ █ █ █ █ Upgrade adviced! There is a newer V50 database available with a tiny correction of typically 0.0005 magnitude. Download and install. █ █ █ █ █ █'); Screen.Cursor := crDefault;{back to normal } end; begin if listview7.items.Count <= 0 then exit; {no files} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key save_settings2;{too many lost selected files . so first save settings} if pos('V', uppercase(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); formalism:=mainwindow.Polynomial1.itemindex; 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,mainwindow.memo1.lines, head_2, img_temp) = False)) then begin listview7.Items.EndUpdate; 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},false {check filter}) 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] := '✓'; calculate_az_alt(1 {calculate}, head_2,{out}az, alt); {try to get a value for alt} if alt > 0 then begin listview7.Items.item[c].subitems.Strings[P_centalt] := floattostrf(alt, ffGeneral, 3, 1); {altitude} listview7.Items.item[c].subitems.Strings[P_airmass] := floattostrf(AirMass_calc(alt), ffFixed, 0, 3); {airmass} end; 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; listview7.Items.BeginUpdate; 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,mainwindow.memo1.lines, 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, 0 {report nr stars and hfd only}, hfd_counter, bck, hfd_med); {find background, number of stars, median HFD} if hfd_med <> 0 then begin head.mzero_radius := 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 head.mzero_radius := 99;{radius for measuring aperture} end else{auto} begin head.mzero_radius := 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}); {calibrate. Downloaded database will be reused if in same area} //icon for used database passband. Database selection could be in auto mode so do this after calibration if head.passband_database='BP' then database_col:=4 //gray else if head.passband_database='R' then database_col:=24 //Cousins-R else if head.passband_database='V' then database_col:=1 //green else if head.passband_database='B' then database_col:=2 //blue icon else if head.passband_database='SI' then database_col:=21 //SDSS-i red/infrared else if head.passband_database='SR' then database_col:=22 //SDSS-r red/orange else if head.passband_database='SG' then database_col:=23 //SDSS-g blue/green else database_col:=-1; // unknown. Should not happen ListView7.Items.item[c].SubitemImages[P_magn1]:= database_col ; //show selected database passband listview7.Items.item[c].subitems.Strings[p_limmagn]:= floattostrF(magn_limit, FFgeneral, 4, 2); if head.mzero <> 0 then begin measure_magnitudes(annulus_radius,0,0,head.width-1,head.height-1, 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].mzero :=head.mzero; starlistpack[c].apr:=head.mzero_radius; starlistpack[c].anr:=annulus_radius; end else starlistpack[c].Height := 0; {mark as not valid measurement} end; setlength(img_temp,head.naxis3, head.Height, head.Width);{new size} {standard aligned blink} if init = False then {init} begin initialise_calc_sincos_dec0; {set variables correct for astrometric solution calculation. Use first file as reference and header "head"} head_ref := head;{backup solution for deepsky annotation} pixel_to_celestial(head,shape_fitsX, shape_fitsY, formalism,rax1, decx1 {fitsX, Y to ra,dec}); abbreviation_var_IAU := prepare_IAU_designation(rax1, decx1); pixel_to_celestial(head,shape_fitsX2, shape_fitsY2,formalism,{var} rax2, decx2 {position}); name_check_iau := prepare_IAU_designation(rax2, decx2); pixel_to_celestial(head,shape_fitsX3, shape_fitsY3,formalism,rax3, decx3 {fitsX, Y to ra,dec}); init:=true;//after measure the frist image end; if var_lock<>'' then annotation_position(var_lock, rax1, decx1 );// convert fitsX, fitsY to ra,dec 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].mzero <> 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(head, rax1, decx1, xn, yn); {ra,dec to fitsX,fitsY} astr := measure_star(xn, yn); {var star #####################################################################################################################} // memo2_message('measuring star1 '+astr +'at '+floattostr(xn)+','+floattostr(yn)); 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(head, 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(head, 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; //measure all AAVSO objects case stackmenu1.annotate_mode1.itemindex of 7,8,9 : //measure all AAVSO stars using the position from the local database begin // if pos('V645',filename2)>0 then // beep; if length(variable_list)=0 then begin // clear_added_AAVSO_columns; setlength(variable_list,1000);// make space in variable list. Array is filled in plot_deepsky; mainwindow.variable_star_annotation1Click(sender {load local database and fill variable_list}); end else begin ang_sep(oldra0,olddec0,head.ra0,head.dec0,sep); if sep>head.width*head.cdelt2*2*pi/180 then //different area of the sky, update variable_list mainwindow.variable_star_annotation1Click(sender {new position, update variable list}); end; oldra0:=head.ra0; olddec0:=head.dec0; if variable_list_length>0 then begin // obj_count:=0; for j:=0 to variable_list_length do begin celestial_to_pixel(head, variable_list[j].ra, variable_list[j].dec, xn, yn); if ((xn>0) and (xn<head.width-1) and (yn>0) and (yn<head.height-1)) then {within image1} begin astr := measure_star(xn, yn); if snr>0 then begin new_object:=true; for i:=p_nr_norm+1 to p_nr-1 do if ((odd(i+1)){not a snr column} and (stackmenu1.listview7.Column[i].Caption=variable_list[j].abbr)) then //find the correct column. If image share not 100% aligned there could be more or less objects begin //existing object column listview7.Items.item[c].subitems.Strings[i-1]:= astr; listview7.Items.item[c].subitems.Strings[i]:= IntToStr(round(snr)); new_object:=false; break; end; if new_object then begin with listview7 do begin //add column listview7_add_column(variable_list[j].abbr); listview7_add_column('SNR'); memo2_message('Added a column for '+variable_list[j].abbr); end; listview7.Items.item[c].subitems.Strings[P_nr-2]:= astr; listview7.Items.item[c].subitems.Strings[P_nr-1]:= IntToStr(round(snr)); end;//new object end;//enough snr end; end; end; end; 10,11,12 : //measure all AAVSO using the online vsx, vsp begin mainwindow.variable_star_annotation1Click(sender {photometry_button1Click, Result in load vsp,vsx and skip plotting. That will happen later}); //vsp & vsx lvsx:=length(vsx); if lvsx>0 then //database is loaded begin for j:=0 to lvsx-1 do begin celestial_to_pixel(head, vsx[j].ra, vsx[j].dec, xn, yn); if ((xn>0) and (xn<head.width-1) and (yn>0) and (yn<head.height-1)) then {within image1} begin astr := measure_star(xn, yn); if snr>0 then begin new_object:=true; for i:=p_nr_norm+1 to p_nr-1 do if ((odd(i+1)){not a snr column} and (stackmenu1.listview7.Column[i].Caption=vsx[j].name)) then //find the correct column. If image share not 100% aligned there could be more or less objects begin //existing object column listview7.Items.item[c].subitems.Strings[i-1]:= astr; //add magnitude listview7.Items.item[c].subitems.Strings[i]:= IntToStr(round(snr)); new_object:=false; break; end;//test new object if new_object then begin with listview7 do begin //add column listview7_add_column(vsx[j].name); listview7_add_column('SNR'); memo2_message('Added a column for '+vsx[j].name); end; listview7.Items.item[c].subitems.Strings[p_nr-2] := astr;//add magnitude listview7.Items.item[c].subitems.Strings[p_nr-1] := IntToStr(round(snr)); end;//new object end;//enough snr end; end; lvsp:=length(vsp); if lvsp>0 then begin for j:=0 to lvsp-1 do begin celestial_to_pixel(head, vsp[j].ra, vsp[j].dec, xn, yn); if ((xn>0) and (xn<head.width-1) and (yn>0) and (yn<head.height-1)) then {within image1} begin astr := measure_star(xn, yn); if snr>0 then begin new_object:=true; for i:=p_nr_norm+1 to p_nr-1 do if ((odd(i+1)){not a snr column} and (stackmenu1.listview7.Column[i].Caption=vsp[j].auid)) then //find the correct column. If image share not 100% aligned there could be more or less objects begin //existing object column listview7.Items.item[c].subitems.Strings[i-1]:= astr; //add magnitude listview7.Items.item[c].subitems.Strings[i]:= IntToStr(round(snr)); new_object:=false; break; end; if new_object then begin with listview7 do begin //add column listview7_add_column(vsp[j].auid); listview7_add_column('SNR'); memo2_message('Added a column for '+vsp[j].auid); end; listview7.Items.item[c].subitems.Strings[p_nr-2] := astr;//add magnitude listview7.Items.item[c].subitems.Strings[p_nr-1] := IntToStr(round(snr)); end;//new object end;//enough snr end;//within the image end; end; end;//vsx end; else if p_nr>p_nr_norm then clear_added_AAVSO_columns; end; //case measure AAVSO 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, y_new, x_new] := img_loaded[col, fitsY - 1, fitsX - 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 routine} 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].mzero <> 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; celestial_to_pixel(head, rax1, decx1, xn, yn); {ra,dec to fitsX,fitsY. Use this rather then shape_FitsX, Y since users can try to move the the shape while it is cycling} plot_annulus(round(xn), round(yn),starlistpack[c].apr,starlistpack[c].anr); end; if mainwindow.shape_alignment_marker2.Visible then begin mainwindow.image1.Canvas.Pen.Color := clGreen; //plot_annulus(round(shape_fitsX2), round(shape_fitsY2),starlistpack[c].apr,starlistpack[c].anr); celestial_to_pixel(head, rax2, decx2, xn, yn); {ra,dec to fitsX,fitsY. Use this rather then shape_FitsX, Y since users can try to move the the shape while it is cycling} plot_annulus(round(xn), round(yn),starlistpack[c].apr,starlistpack[c].anr); 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),starlistpack[c].apr,starlistpack[c].anr); celestial_to_pixel(head, rax3, decx3, xn, yn); {ra,dec to fitsX,fitsY. Use this rather then shape_FitsX, Y since users can try to move the the shape while it is cycling} plot_annulus(round(xn), round(yn),starlistpack[c].apr,starlistpack[c].anr); 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].MZERO - ln(starlistpack[c].starlist[3, i]{flux})*2.5/ln(10); mainwindow.image1.Canvas.textout(starX + size, starY - size,inttostr(round(magn * 10)) );{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); //vsp & vsx listview7.Items.EndUpdate; 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} if form_aavso1 <> nil then form_aavso1.FormShow(nil);{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_not_used(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; img_temp : image_array; 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, y1 + j, x1 + i]; 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, y1 + j, x1 + i]; 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, y1 + k, x1 + i]; val := val + img[col, y1 - k, x1 + i]; val := val + img[col, y1 + i, x1 + k]; val := val + img[col, y1 + i, x1 - k]; 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, y2, x2] - bg[col]; if val < 60000 {not saturated} then color[col] := color[col] + img[col, y2, x2] - 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, y2, x2] - bg[0] + img[1, y2, x2] - bg[1] + img[2, y2, x2] - bg[2]) / 3; img[0, y2, x2] := bg[0] + luminance * color[0] / rgb; img[1, y2, x2] := bg[1] + luminance * color[1] / rgb; img[2, y2, x2] := bg[2] + luminance * color[2] / rgb; // img_temp[0, y2, x2] := 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, star_level: double; copydata, red_nebula: boolean; bckR,bckG,bckB : Tbackground; begin if length(img) < 3 then exit;{not a three colour image} width5 := Length(img[0,0]);{width} height5 := Length(img[0]); {height} setlength(img_temp2, 3, height5, width5);{set length of image array} step := round(wide) div 2; get_background(0, img, measurehist {hist}, True {noise level},bckR);{calculate red background, noise_level and star_level} bgR:=bckR.backgr; get_background(1, img, measurehist {hist}, True{noise level},bckG);{calculate green background, noise_level and star_level} bgG:=bckG.backgr; get_background(2, img, measurehist {hist}, True {noise level},bckB);{calculate blue background, noise_level and star_level} bgB:=bckB.backgr; // star_level:=max(bckR.star_level,max(bckG.star_level,bckB.star_level)); // star_level:=max(bckR.star_level2,max(bckG.star_level2,bckB.star_level2)); star_level:=30*max(bckR.noise_level,max(bckG.noise_level,bckB.noise_level)); 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, fitsY, fitsX] - bgR; g2 := img[1, fitsY, fitsX] - bgG; b2 := img[2, fitsY, fitsX] - bgB; if ((r2 > sd * bckR.noise_level) or (g2 > sd * bckG.noise_level) or (b2 > sd * bckB.noise_level)) 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, y2, x2]; G := img[1, y2, x2]; B := img[2, y2, x2]; {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 * bckR.noise_level)) 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, fitsY, fitsX] := bg + red * lumr; //use average bg and not bgR. See "if copydata" below. img_temp2[1, fitsY, fitsX] := bg + green * lumr; img_temp2[2, fitsY, fitsX] := 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, fitsY, fitsX] := max(0, bg + r2); {copy data, but equalise background levels by using the same background value} img_temp2[1, fitsY, fitsX] := max(0, bg + g2); img_temp2[2, fitsY, fitsX] := 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, fitsY, fitsX]; g2 := img[1, fitsY, fitsX]; b2 := img[2, fitsY, fitsX]; 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, fitsY, fitsX] := r2; img[1, fitsY, fitsX] := g2; img[2, fitsY, fitsX] := 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, fitsY, fitsX] := r2; img[1, fitsY, fitsX] := g2; img[2, fitsY, fitsX] := 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; memo2_message('Start colour smooth.'); Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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; memo2_message('Ready colour smooth.'); 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 radius: integer; begin if head.naxis <> 0 then begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,head.datamax_org, 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 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, fitsY, fitsX]; green := img[1, fitsY, fitsX]; blue := img[2, fitsY, fitsX]; luminance := red + blue + green + 0.00001; {0.00001, prevent dividing by zero} img[0, fitsY, fitsX] := red / luminance; img[1, fitsY, fitsX] := green / luminance; img[2, fitsY, fitsX] := blue / luminance; end; end; procedure Tstackmenu1.apply_remove_background_colour1Click(Sender: TObject); var fitsX, fitsY: integer; red, green, blue, signal_R, signal_G, signal_B, sigma, lumn: double; bckR,bckG,bckB : Tbackground; begin if head.naxis3 < 3 then exit;{prevent run time error mono lights} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; sigma := strtofloat2(sigma_decolour1.Text);{standard deviation factor used} get_background(1, img_loaded, True {hist}, True {noise level},bckG);{calculate background and noise_level} get_background(2, img_loaded, True {hist}, True {noise level},bckB);{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}, bckR);{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, fitsY, fitsX]; green := img_loaded[1, fitsY, fitsX]; blue := img_loaded[2, fitsY, fitsX]; if ((red - bckR.backgr < sigma * bckR.noise_level) and (green - bckG.backgr < sigma * bckG.noise_level) and (blue - bckB.backgr < sigma * bckB.noise_level)) then {low luminance signal} begin {distribute the colour to luminance} signal_R := red - bckR.backgr; signal_G := green - bckG.backgr; signal_B := blue - bckB.backgr; lumn := (signal_R + signal_G + signal_B) / 3;{make mono} red := bckR.backgr + lumn; green := bckG.backgr + lumn; blue := bckB.backgr + lumn; end; img_loaded[0, fitsY, fitsX] := red; img_loaded[1, fitsY, fitsX] := green; img_loaded[2, fitsY, fitsX] := 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.speedButton_location1Click(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.stack_groups1Click(Sender: TObject); var index, counter, oldindex, position, i,groupsize,count: integer; ListItem: TListItem; begin groupsizeStr:=InputBox('Stack selected file in groups, mode average', 'The selected files should be sorted on date.'+#10+#10+ 'How many images per stack?:',groupsizeStr); if groupsizeStr='' then exit; {cancel used} groupsize:=strtoint2(groupsizeStr,0); if groupsize=0 then exit; esc_pressed:=false; position := -1; index := 0; listview1.Clear; counter := listview7.Items.Count; repeat listview1.Items.beginUpdate; count:=0; 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 inc(count); if count>=groupsize then begin Inc(index); break;//group is ready end; end; Inc(index); {go to next file} end; listview1.Items.endUpdate; analyse_tab_lights(0 {analyse_level});//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 if esc_pressed then break; // add calibrated files listview7.Items.BeginUpdate; with listview7 do begin ListItem := Items.add; 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 end; listview7.Items.EndUpdate; listview1.Clear; application.processmessages; until index >=counter; //ready ?? listview_removeselect(listview7); stack_method1.ItemIndex := oldindex;//return old setting save_settings2; analyse_listview(listview7, True {light}, False {full fits}, True{refresh}); {refresh list} end; procedure Tstackmenu1.stack_method1DropDown(Sender: TObject); begin tcombobox(sender).ItemWidth:=round(stack_method1.width*1.5); end; procedure Tstackmenu1.blink_stack_selected1Click(Sender: TObject); var i : integer; success : boolean; begin esc_pressed:=false; analyse_objects_visible(listview6);//file ephemeris_centering1 tCombobox in tab alignment with asteroids using one image memo2_message('Loading first image to calibrate photometry for the stack'); listview_view(stackmenu1.listview6);//show first selected image calibrate_photometry; 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 memo2_message('Abort. Could not save photometric updated file: '+filename2); exit; end; memo2_message(filename2+' photometric calibrated (MZERO)'); use_ephemeris_alignment1.Checked:=true; if ephemeris_centering1.text='' then begin memo2_message('No objects found. Adapt the settings in viewer tools menu "Annotate asteroids and comets" shortcut ctrl+R'); end; for i:=0 to ephemeris_centering1.items.count-1 do begin application.processmessages; if esc_pressed then exit; ephemeris_centering1.itemindex:=i; //select the asteroid if ephemeris_centering1.text<>'' then begin memo2_message('Track & stack for '+ephemeris_centering1.text); stack_group(listview6,Sender); //stack aligned on this asteroid; end; end; memo2_message('Track & stack is complete. Resulting files are inserted at the top of the selection!'); memo2_message('Use the viewer popup menu "MPC1992 report line" to compile a MPC1992 report or to check the object at "https://www.minorplanetcenter.net/cgi-bin/checkmp.cgi"'); end; procedure Tstackmenu1.star_database1Change(Sender: TObject); begin close_star_database;{Close the tfilestream. Otherwise the first search doesn't work always for D databasee. 2023} 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; head.mzero := 0;{reset flux calibration. Required if V50 is selected instead of D50} end; procedure Tstackmenu1.apply_box_filter2Click(Sender: TObject); var blur_factor : integer; begin if Length(img_loaded) = 0 then begin memo2_message('Error, no image in viewer loaded!'); exit; end; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; blur_factor:=2+box_blur_factor1.ItemIndex;//box blur factor box_blur(1 {nr of colors}, blur_factor, 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_blink1Show(Sender: TObject); begin stackmenu1.annotations_visible2.checked:=mainwindow.annotations_visible1.checked; {follow in stack menu} end; procedure Tstackmenu1.tab_monitoring1Show(Sender: TObject); begin target_group1.Enabled := stackmenu1.monitor_action1.ItemIndex = 4; {latitude, longitude} stackmenu1.monitor_latitude1.Text := lat_default; stackmenu1.monitor_longitude1.Text := long_default; end; procedure Tstackmenu1.tab_photometry1Show(Sender: TObject); begin stackmenu1.flux_aperture1change(nil);{photometry, disable annulus_radius1 if mode max flux} end; procedure Tstackmenu1.tab_Pixelmath1Show(Sender: TObject); begin hue_fuzziness1Change(nil);{pixelmath 1, show position} HueRadioButton2.Enabled:=blend1.checked=false; new_saturation1.Enabled:=blend1.checked=false; new_colour_luminance1.Enabled:=blend1.checked=false; stackmenu1.unsharp_amount1Change(sender);//update edit value stackmenu1.unsharp_radius1Change(Sender); stackmenu1.unsharp_threshold1Change(Sender); end; procedure Tstackmenu1.tab_Pixelmath2Show(Sender: TObject); begin stackmenu1.width_UpDown1.position := round(head.Width * strtofloat2(stackmenu1.resize_factor1.Caption)); 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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} {$ifdef mswindows} {$else} {unix} {temporary fix for CustomDraw not called} stackmenu1.nr_total_blink1.Caption := IntToStr(listview6.items.Count); {$endif} {update counting info} end; procedure Tstackmenu1.annotate_mode1Change(Sender: TObject); begin vsx := nil;//clear downloaded database vsp := nil; end; procedure Tstackmenu1.Annotations_visible2Click(Sender: TObject); begin mainwindow.annotations_visible1.checked:=annotations_visible2.checked; {follow in main menu viewer} if head.naxis=0 then exit; if annotations_visible2.checked=false then {clear screen} plot_fits(mainwindow.image1,false,true) else if annotated then plot_annotations(false {use solution vectors},false); end; procedure Tstackmenu1.blend1Change(Sender: TObject); begin HueRadioButton2.Enabled:=blend1.checked=false; new_saturation1.Enabled:=blend1.checked=false; new_colour_luminance1.Enabled:=blend1.checked=false; end; procedure Tstackmenu1.blink_annotate_and_solve1Click(Sender: TObject); var c: integer; buffer_loaded,success : boolean; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key esc_pressed:=false; buffer_loaded:=false;//astro_buffer for c:=0 to listview6.Items.count-1 do begin if ((esc_pressed = False) and (listview6.Items.item[c].Checked)) then 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} filename2 := listview6.items[c].Caption; mainwindow.Caption := filename2; memo2_message('Annotating '+filename2); Application.ProcessMessages; if esc_pressed then break; {load image} if load_fits(filename2, True {light}, True, True {update memo}, 0,mainwindow.memo1.lines, head, img_loaded) = False then begin esc_pressed := True; break; end; use_histogram(img_loaded, True {update}); {plot histogram, set sliders} 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},false {check filter}) then begin{match between loaded image and star database} 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 plot_mpcorb(StrToInt(maxcount_asteroid), strtofloat2(maxmag_asteroid), True {add annotations},buffer_loaded); buffer_loaded:=true;//asteroids are in the buffer ready to be reused listview6.Items.item[c].subitems.Strings[B_annotated] := '✓'; 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); break; end; end; end;//checked item end;//for loop Screen.Cursor:=crDefault; memo2_message('Annotating ready'); end; procedure Tstackmenu1.apply_unsharp_mask1Click(Sender: TObject); var tmp : image_array; fitsX,fitsY,dum,k,threshold: integer; factor1,factor2 : double; value,threshold_value : single; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; get_background(0,img_loaded, false{histogram is already available},true {calculate noise level},{out}bck);{calculate background level from peek histogram} tmp:=duplicate(img_loaded);//fastest way to duplicate an image gaussian_blur2(tmp,unsharp_radius1.position/10); threshold:=unsharp_threshold1.position; //expressed in sigma factor1:=1/(1-(unsharp_amount1.position/1000)); factor2:=factor1-1; memo2_message('Applying unsharp mask. Amount='+unsharp_edit_amount1.text+' %, Gaussian blur radius='+unsharp_edit_radius1.text+' px, threshold='+unsharp_edit_threshold1.text+' σ'); if threshold=0 then begin 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,fitsY,fitsX]:=factor1*img_loaded[k,fitsY,fitsX] - factor2* tmp[k,fitsY,fitsX]; end; end;{k color} end else begin //use threshold threshold_value:=threshold*bck.noise_level;//express in ADU 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 value:=factor1*img_loaded[k,fitsY,fitsX] - factor2* tmp[k,fitsY,fitsX]; if abs(value- img_loaded[k,fitsY,fitsX])>threshold_value then img_loaded[k,fitsY,fitsX]:=value; end; end;{k color} end; plot_fits(mainwindow.image1,false,true); Screen.Cursor:=crDefault; { Sharpening with Unsharp Mask (USM) is a popular method for enhancing the apparent sharpness and detail in images, including astronomical images where clarity and detail are crucial for observation and analysis. The method is particularly effective for bringing out subtle features in celestial bodies or deep-sky objects. Here’s a simplified explanation of how it works: 1) Create a Blurred Copy of the Original Image: First, a blurred (or "unsharp") version of the original image is created. The blurring is typically done using a Gaussian blur, which smoothly averages pixel values with their neighbors, effectively removing high-frequency details (like edges and fine textures). 2) Subtract the Blurred Image from the Original: Next, this blurred image is subtracted from the original image. The idea here is that by subtracting the low-frequency details, you're left with just the high-frequency details—essentially, the edges and textures that define sharpness. 3) Add the Result Back to the Original Image: The resulting difference image, which contains the enhanced edges and details, is then added back to the original image. This step amplifies the original details, making the image appear sharper. 4) Adjustment of the Strength of the Effect: Typically, the process includes a parameter to adjust the strength of the sharpening effect. This can involve scaling the difference image before adding it back to the original, allowing for finer control over how pronounced the sharpening is. 5) Thresholding (Optional): Some implementations of Unsharp Masking allow for a threshold parameter, which prevents sharpening from being applied to areas where the difference between the original and blurred images is below a certain value. This helps to avoid amplifying noise in relatively flat or smooth regions of the image. } end; procedure Tstackmenu1.classify_dark_temperature1Change(Sender: TObject); begin delta_dark_temperature_visibility; end; procedure Tstackmenu1.contour_gaussian1Change(Sender: TObject); begin new_analyse_required:=true; end; procedure Tstackmenu1.detect_contour1Click(Sender: TObject); //var // img_bk : image_array; // oldNaxis3 : integer; // restore_req : boolean; begin if head.naxis=0 then exit; {file loaded?} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key plot_fits(mainwindow.image1,false,true);//clear // 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.height,head.width);{force a duplication} // oldNaxis3:=head.naxis3;//for case it is converted to mono memo2_message('Satellite streak detection started.'); contour(true {plot}, img_loaded,head,strtofloat2(contour_gaussian1.text),strtofloat2(contour_sigma1.text)); // img_bk:=nil; // if restore_req then {raw Bayer image or colour image} // begin // head.naxis3:=oldNaxis3; // get_hist(0,img_loaded);{get histogram of img and his_total} // end; Screen.Cursor:=crDefault; memo2_message('Satellite streak detection completed.'); end; procedure Tstackmenu1.ClearButton1Click(Sender: TObject); begin memo2_message('Removing streak annotations from header'); plot_fits(mainwindow.image1,false,true); end; procedure Tstackmenu1.unsharp_edit_amount1Change(Sender: TObject); begin unsharp_amount1.position:=round(strtofloat2(unsharp_edit_amount1.text)*10); end; procedure Tstackmenu1.unsharp_edit_radius1Change(Sender: TObject); begin unsharp_radius1.position:=round(strtofloat2(unsharp_edit_radius1.text)*10); end; procedure Tstackmenu1.unsharp_edit_threshold1Change(Sender: TObject); begin unsharp_threshold1.position:=round(strtofloat2(unsharp_edit_threshold1.text)*10); end; procedure solve_selected_files(lv: tlistview; refresh_solutions :boolean); var c: integer; success : boolean; filename1 : string; img_temp : image_array; head_2 : theader; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key update_menu(False); //do not allow to save fits. img_load is still valid but Memo3 is cleared. Could be recovered but is not done esc_pressed := False; {solve lights first to allow flux to magnitude calibration} with stackmenu1 do for c := 0 to lv.items.Count - 1 do {check for astrometric solutions} begin if lv.Items[c].Selected then begin filename1 := lv.items[c].Caption; mainwindow.Caption := filename1; Application.ProcessMessages; {load image} if ((esc_pressed) or (load_fits(filename1, True {light}, True, True {update memo}, 0,mainwindow.memo1.lines, head_2, img_temp) = False)) then begin Screen.Cursor := crDefault;{back to normal } exit; end; if ((head_2.cd1_1 = 0) or (refresh_solutions)) then begin 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} memo2_message(filename1 + ' Adding astrometric solution to file.'); Application.ProcessMessages; if solve_image(img_temp, head_2, True {get hist},false {check filter}) 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 !!' + filename1); Screen.Cursor := crDefault; exit; end; end else begin lv.Items[c].Checked := False; memo2_message(filename1 + 'No astrometric solution found for this file!!'); end; end; end; end; Screen.Cursor := crDefault;{back to normal } end; procedure Tstackmenu1.MenuItem14Click(Sender: TObject); begin solve_selected_files(listview1,true {refresh solutions}); stackmenu1.Analyse1Click(Sender);{refresh positions} end; procedure Tstackmenu1.photometric_calibration1Click(Sender: TObject); var c : integer; ff : string; success : boolean; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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 {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; ff := ListView7.items[c].Caption; if fits_tiff_file_name(ff) = False then begin memo2_message('█ █ █ █ █ █ Can' + #39 +'t process this file type. First analyse file list to convert to FITS !! █ █ █ █ █ █'); beep; exit; end; filename2:=ff; if load_fits(filename2,true {light},true,true {update memo},0,mainwindow.memo1.lines,head,img_loaded) then {load a fits or Astro-TIFF file} begin head.mzero:=0; //force a new calibration if head.cd1_1<>0 then begin calibrate_photometry; 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 memo2_message('Can not calibrate '+filename2+'. Add first an astrometrical solution.'); 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.pixelsize1Change(Sender: TObject); begin new_analyse_required:=true; end; procedure Tstackmenu1.refresh_astrometric_solutions1Click(Sender: TObject); var c: integer; begin Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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 {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; listview7.Items.item[c].subitems.Strings[P_astrometric] := ''; {clear astrometry marks} listview7.Items.item[c].subitems.Strings[P_photometric] := ''; {clear photometry marks} end; end; Screen.Cursor := crDefault; { Always restore to normal } stackmenu1.photometry_button1Click(Sender);{refresh astrometric solutions} end; procedure remove_stars; var fitsX,fitsY,hfd_counter,position,x,y,x1,y1,counter_noflux : integer; flux,magnd, hfd_median,max_radius, backgrR,backgrG,backgrB,delta : double; img_temp3 :image_array; old_aperture : string; const default=1000; procedure star_background(rs {radius},x1,y1 :integer); var backgroundR,backgroundG,backgroundB : array [0..1000] of double; {size =3*(2*PI()*(50+3)) assuming rs<=50} r1_square,r2_square,distance : double; r2,i,j,counter : integer; begin r1_square:=rs*rs;{square radius} r2:=rs+3 {annulus_width}; r2_square:=r2*r2; try counter:=0; for i:=-r2 to r2 do {calculate the mean outside the the detection area} for j:=-r2 to r2 do begin if ((x1-r2>=0) and (x1+r2<=head.width-1) and (y1-r2>=0) and (y1+r2<=head.height-1) ) then 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 backgroundR[counter]:=img_loaded[0,y1+j,x1+i]; if head.naxis3>1 then backgroundG[counter]:=img_loaded[1,y1+j,x1+i]; if head.naxis3>2 then backgroundB[counter]:=img_loaded[2,y1+j,x1+i]; inc(counter); end; end; end; if counter>2 then begin backgrR:=Smedian(backgroundR,counter); if head.naxis3>1 then backgrG:=Smedian(backgroundG,counter); if head.naxis3>2 then backgrB:=Smedian(backgroundB,counter); end; finally end; end; begin old_aperture:=stackmenu1.flux_aperture1.text; stackmenu1.flux_aperture1.text:='max';//full flux is here required calibrate_photometry; stackmenu1.flux_aperture1.text:=old_aperture; if head.mzero=0 then begin beep; img_temp3:=nil; Screen.Cursor:=crDefault; exit; end; memo2_message('Passband setting: '+stackmenu1.reference_database1.text); // image1.Canvas.Pen.Mode := pmMerge; // image1.Canvas.Pen.width :=1; // image1.Canvas.brush.Style:=bsClear; // image1.Canvas.font.color:=clyellow; // image1.Canvas.font.name:='default'; // image1.Canvas.font.size:=10; // mainwindow.image1.Canvas.Pen.Color := clred; setlength(img_temp3,1,head.height,head.width);{set size of image array} for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do img_temp3[0,fitsY,fitsX]:=default;{clear} plot_artificial_stars(img_temp3,head,magn_limit {measured});{create artificial image with database stars as pixels} analyse_image(img_loaded,head,10 {snr_min},0 {report nr stars and hfd only},hfd_counter,bck, hfd_median); {find background, number of stars, median HFD} backgrR:=bck.backgr;//defaults backgrG:=bck.backgr; backgrB:=bck.backgr; for fitsY:=0 to head.height-1 do for fitsX:=0 to head.width-1 do begin magnd:=img_temp3[0,fitsY,fitsX]; if magnd<default then {a star from the database} begin // if ((abs(fitsX-2602)<5) and (abs(fitsY-1224)<5)) then // beep; star_background(round(4*hfd_median) {radius},fitsX,fitsY);//calculate background(s) // flux:=power(10,0.4*(head.mzero-magnd/10)); // flux:=flux*1.1;//compensate for flux errors // max_radius:=99999; counter_noflux:=0; for position:=0 to length(disk)-1 do //remove star flux begin begin x1:=disk[position,0]; // disk, disk positions starting from center moving outwards y1:=disk[position,1]; x:=fitsX+x1; // disk, disk positions starting from center moving outwards y:=fitsY+y1; if ((x>=0) and (x<head.width) and (y>=0) and (y<head.height)) then //within image begin // if max_radius>100 then // begin // if img_loaded[0,y,x]-backgrR<=0 then //reached outside of star // max_radius:=1+sqrt(sqr(x1)+sqr(y1));//allow to continue for one pixel ring max // end // else if sqrt(sqr(x1)+sqr(y1))>=hfd_median*4 then break; // delta:=min(flux,(img_loaded[0,y,x]-backgrR));//all photometry is only done in the red channel if counter_noflux>0.5*2*pi*sqrt(sqr(x1)+sqr(y1)) then //2*pi*r is circumference break; delta:=img_loaded[0,y,x]-backgrR;//all photometry is only done in the red channel // flux:=flux-delta; // if flux<-1000 then break; if delta>0 then //follow the red channel begin img_loaded[0,y,x]:=img_loaded[0,y,x]-delta; if head.naxis3>1 then img_loaded[1,y,x]:=img_loaded[0,y,x]*backgrG/backgrR; if head.naxis3>2 then img_loaded[2,y,x]:=img_loaded[0,y,x]*backgrB/backgrR; end else inc(counter_noflux); end; end; end; end; end; img_temp3:=nil;{free memo2} end; procedure Tstackmenu1.remove_stars1Click(Sender: TObject); var gain: single; fitsX,fitsY,col,letter_height : integer; begin if head.naxis=0 then exit; {file loaded?} if head.cd1_1=0 then begin memo2_message('Abort, solve the image first!');exit; end; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img;{preserve img array and fits header of the viewer} bck.backgr:=0; remove_stars; memo2_message('Stars removed.'); gain:=UpDown_nebulosity1.position; if sender=increase_nebulosity1 then begin for col:=0 to head.naxis3-1 do //all colour for fitsX:=0 to head.width-1 do for fitsY:=0 to head.height-1 do img_loaded[col, fitsY, fitsX]:=img_backup[index_backup].img[col, fitsY, fitsX] + (img_loaded[col, fitsY, fitsX]-bck.backgr {reduce background})*gain; memo2_message('Nebulosity signal increased.'); end; mainwindow.image1.Canvas.font.size:=10; mainwindow.image1.Canvas.brush.Style:=bsClear; letter_height:=mainwindow.image1.Canvas.textheight('M'); mainwindow.image1.Canvas.textout(20,head.height-letter_height,stackmenu1.reference_database1.text);//show which database was used plot_fits(mainwindow.image1,false,true);//refresh screen Screen.Cursor:=crDefault; 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.clear_result_list1Click(Sender: TObject); begin ListView5.Clear; end; procedure Tstackmenu1.column_fov1Click(Sender: TObject); begin stackmenu1.listview1.columns.Items[l_sqm + 1].Caption := 'FOV'; sqm_key:='FOV ';//does not exist, but will be calculated end; procedure Tstackmenu1.column_lim_magn1Click(Sender: TObject); begin stackmenu1.listview1.columns.Items[l_sqm + 1].Caption := 'LIM_MAGN'; sqm_key:='LIM_MAGN'; end; procedure Tstackmenu1.column_sqm1Click(Sender: TObject); begin stackmenu1.listview1.columns.Items[l_sqm + 1].Caption := 'SQM'; sqm_key:='SQM '; 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.lightsShow(Sender: TObject); begin with stackmenu1 do begin listview1.columns.Items[l_centaz + 1].Caption := centaz_key; {lv.items[l_sqm].caption:=sqm_key; doesn't work} listview1.columns.Items[l_sqm + 1].Caption := sqm_key; {lv.items[l_sqm].caption:=sqm_key; doesn't work} analyse_lights_extra1.left:=Analyse1.left+analyse1.width;//align button analyse_lights_extra1 to analyse1 end; 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.manipulate1Click(Sender: TObject); begin 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 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] :={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; 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.'); Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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); //var // c: integer; 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; {$ifdef mswindows} {$else} {unix} {temporary fix for CustomDraw not called} stackmenu1.nr_total_photometry1.Caption := IntToStr(listview7.items.Count); {$endif} {update counting info} 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,col,i,j : integer; r, g, b, h, s, s_new, v, oldhue, newhue, dhue, saturation_factor, s_old, saturation_tol, v_adjust : single; colour: tcolor; blend : boolean; close,close2 : double; function colour_close(y,x : integer) : boolean; begin RGB2HSV(max(0, img_loaded[0, Y, X] - bck.backgr), max(0, img_loaded[1, Y, X] - bck.backgr), max(0, img_loaded[2, Y, X] - bck.backgr), h, s, v); {RGB to HSVB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} dhue := min(360-abs(oldhue - h),abs(oldhue - h)); //angular distance result:=(((dhue <= fuzziness) or (dhue >= 360 - fuzziness)) and (abs(s - s_old) < saturation_tol {saturation speed_tolerance1})) {colour close enough, replace colour} end; function colour_closeness(y,x : integer) : double;//calcualte how far the colour of pixel x,y differs from the reference colour begin RGB2HSV(max(0, img_loaded[0, Y, X] - bck.backgr), max(0, img_loaded[1, Y, X] - bck.backgr), max(0, img_loaded[2, Y, X] - bck.backgr), h, s, v); {RGB to HSVB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} dhue := min(360-abs(oldhue - h),abs(oldhue - h)); result:=sqrt( sqr(dhue/360) + sqr(s - s_old)); end; begin if ((head.naxis = 0) or (head.naxis3 <> 3)) then exit; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; fuzziness := hue_fuzziness1.position; saturation_tol := saturation_tolerance1.position / 100; saturation_factor := new_saturation1.position / 100; 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); blend:=blend1.checked; if length(stackmenu1.area_set1.Caption)<=3 then {no area selected} begin areax1 := 1; areay1 := 1; areax2 := head.Width - 1-1; areaY2 := head.Height - 1-1; end; {else set in astap_main} v_adjust:=stackmenu1.new_colour_luminance1.position/100; for fitsY := areay1 to areay2 do for fitsX := areax1 to areax2 do begin if colour_close(fitsY,fitsX) then begin if blend=false then begin HSV2RGB(newhue, min(1, s_new * saturation_factor) {s 0..1}, v * v_adjust{v 0..1}, r, g, b); {HSV to RGB using hexcone model, https://en.wikipedia.org/wiki/HSL_and_HSV} img_loaded[0, fitsY, fitsX] := r + bck.backgr; img_loaded[1, fitsY, fitsX] := g + bck.backgr; img_loaded[2, fitsY, fitsX] := b + bck.backgr; end else begin //use nearby colour which differs the most. close:=0; for i:=-1 to 1 do for j:=-1 to 1 do if ((i<>0) or (j<>0)) then //test all 8 neighbour pixels for the largest colour offset and use this to replace the pixel colour begin close2:=colour_closeness(fitsY+i,fitsX+j); if close2>close then //larger colour offset begin for col:=0 to 2 do img_loaded[col, fitsY, fitsX] :=img_loaded[col, fitsY+i, fitsX+j];//use new found colour close:=close2;//record the largest colour offset end; end; end; end; end; 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 bckR,bckG,bckB : tbackground; 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} bckG); get_background(2, img_loaded, True {get hist}, True {get noise},{var} bckB); get_background(0, img_loaded, True {get hist}, True {get noise},{var} bckR); {Do red last to maintain current histogram} add_valueR1.Text := floattostrf(0, ffgeneral, 5, 0); add_valueG1.Text := floattostrf(bckR.backgr * (bckG.star_level / bckR.star_level) - bckG.backgr, ffgeneral, 5, 0); add_valueB1.Text := floattostrf(bckR.backgr * (bckB.star_level / bckR.star_level) - bckB.backgr, ffgeneral, 5, 0); multiply_green1.Text := floattostrf(bckR.star_level / bckG.star_level, ffgeneral, 5, 0); {make stars white} multiply_blue1.Text := floattostrf(bckR.star_level / bckB.star_level, 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.Height, head.Width); {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, fitsY * step, fitsX * 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, fitsY * step, fitsX * 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, fitsY, fitsX]; 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, fitsY, fitsX]; 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, fitsY, fitsX] - average) > maxoffs then {signal} img_outliers[col, fitsY, fitsX] := img[col, fitsY, fitsX] {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, fitsY + j, fitsX + i] - average) > maxoffs then {signal} begin Inc(Count); end; end; if Count > 0 then {signal} begin img_outliers[col, fitsY, fitsX] := img[col, fitsY, fitsX]; {store outlier for possible restoring} img[col, fitsY, fitsX] := average;{change hot pixel to average} end else img_outliers[col, fitsY, fitsX] := 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, fitsY, fitsX] <> 0 then img[col, fitsY, fitsX] := img_outliers[col, fitsY, fitsX]; 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key backup_img; {move viewer data to img_backup} case bin_factor1.ItemIndex of 0: bin_X2X3X4(2); 1: bin_X2X3X4(3); 2: bin_X2X3X4(4); end; remove_photometric_calibration;//from header plot_fits(mainwindow.image1, True, True);{plot real} Screen.Cursor := crDefault; end; 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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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, fitsY, fitsX] := max(0, img_loaded[col, fitsY, fitsX] + 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.alignment1Show(Sender: TObject); begin update_tab_alignment; end; procedure Tstackmenu1.blink_stop1Click(Sender: TObject); begin esc_pressed := True; end; procedure Tstackmenu1.blink_unaligned_multi_step1Click(Sender: TObject); var c, step: integer; init : boolean; begin if listview1.items.Count <= 1 then exit; {no files} Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,mainwindow.memo1.lines, 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 load_master_dark(jd_int: integer; hd: theader); var c: integer; d, day_offset: double; filen : string; begin // analyse_listview(stackmenu1.listview2,false {light},false {full fits},false{refresh});{find dimensions, head_dark.exposure and temperature} c := 0; day_offset := 99999999; filen := ''; light_exposure := round(hd.exposure);{remember the requested hd.exposure time} light_temperature := hd.set_temperature; if hd.egain <> '' then dark_gain := hd.egain else dark_gain := hd.gain; with stackmenu1 do while c < listview2.items.Count do begin if listview2.items[c].Checked = True then if ((classify_dark_exposure1.Checked = False) or (light_exposure = round(strtofloat2(listview2.Items.item[c].subitems.Strings[D_exposure])))) then {head_dark.exposure correct} begin if ((classify_dark_temperature1.Checked = False) or (abs(light_temperature - StrToInt(listview2.Items.item[c].subitems.Strings[D_temperature])) <= delta_temp_updown1.position)) then {temperature correct within one degree} begin if ((classify_dark_gain1.Checked = False) or (dark_gain = listview2.Items.item[c].subitems.Strings[D_gain])) then {gain correct} begin if hd.Width = StrToInt(listview2.Items.item[c].subitems.Strings[D_width]) then {width correct} begin if hd.height = StrToInt(listview2.Items.item[c].subitems.Strings[D_height]) then {height correct} begin d := strtofloat(listview2.Items.item[c].subitems.Strings[D_jd]); if abs(d - jd_int) < day_offset then {find dark with closest date} begin filen := ListView2.items[c].Caption; day_offset := abs(d - jd_int); end; listview2.Items.item[c].subitems.Strings[D_issues]:='';//clear issue end else listview2.Items.item[c].subitems.Strings[D_issues]:='height<>'+inttostr(hd.height); end else listview2.Items.item[c].subitems.Strings[D_issues]:='width<>'+inttostr(hd.width); end else listview2.Items.item[c].subitems.Strings[D_issues]:='gain<>'+dark_gain; end else listview2.Items.item[c].subitems.Strings[D_issues]:='temperature<>'+floattostrF(light_temperature,FFfixed,0,0); end else listview2.Items.item[c].subitems.Strings[D_issues]:='exposure time<>'+floattostrF(light_exposure,FFfixed,0,0); 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,mainwindow.memo1.lines, head_dark, 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_dark.exposure) <> 0 {dark exposure is measured}) and (round(hd.exposure){request} <> round(head_dark.exposure))) then memo2_message('█ █ █ █ █ █ Warning dark exposure time (' + floattostrF(head_dark.exposure, ffFixed, 0, 0) + ') is different then the light exposure time (' + floattostrF(hd.exposure, ffFixed, 0, 0) + ')! █ █ █ █ █ █ '); if ((head_dark.set_temperature <> 999 {dark temperature is measured}) and (hd.set_temperature{request} <> head_dark.set_temperature)) then memo2_message('█ █ █ █ █ █ Warning dark sensor temperature (' + floattostrF(head_dark.set_temperature, ffFixed, 0, 0) +') is different then the light sensor temperature (' + floattostrF(hd.set_temperature, ffFixed, 0, 0) + ')! █ █ █ █ █ █ '); if ((head_dark.gain <> '' {gain in header}) and (hd.gain{request} <> head_dark.gain)) then memo2_message('█ █ █ █ █ █ Warning dark gain (' + head_dark.gain + ') is different then the light gain (' + hd.gain +')! █ █ █ █ █ █ '); if ((head_dark.egain <> '' {gain in header}) and (hd.egain{request} <> head_dark.egain)) then memo2_message('█ █ █ █ █ █ Warning dark egain (' + head_dark.egain + ') is different then the light egain (' + hd.egain +')! █ █ █ █ █ █ '); last_dark_loaded := filen; {required for for change in light_jd} if head_dark.dark_count = 0 then head_dark.dark_count := 1; {store in head of reference file} end; end else begin memo2_message('█ █ █ █ █ █ Warning, could not find a suitable dark for ' + IntToStr(round(hd.exposure)) + ' sec, temperature ' + IntToStr( hd.set_temperature) + '°, gain ' + hd.gain+' and width '+inttostr(hd.width)+'! De-classify temperature or exposure time or add correct darks. See report in column ISSUES in tab dark.█ █ █ █ █ █ '); head_dark.dark_count := 0;{set back to zero} end; end; procedure load_master_flat(jd_int: integer;hd: theader); 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(hd.filter_name, stackmenu1.listview3.Items.item[c].subitems.Strings[F_filter]) = 0)) then {filter correct? ignoring case} begin if hd.Width = StrToInt( stackmenu1.listview3.Items.item[c].subitems.Strings[D_width]) then {width correct, matches with the light width} begin if hd.height = StrToInt( stackmenu1.listview3.Items.item[c].subitems.Strings[D_height]) then 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; stackmenu1.listview3.Items.item[c].subitems.Strings[F_issues]:='';//clear issues end else stackmenu1.listview3.Items.item[c].subitems.Strings[F_issues]:='height<>'+inttostr(hd.height); end else stackmenu1.listview3.Items.item[c].subitems.Strings[F_issues]:='width<>'+inttostr(hd.width); end; // else, filter issues are handled in analyse_listview 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); if load_fits(filen, False {light}, True, False {update memo}, 0,mainwindow.memo1.lines, head_flat, img_flat) = False then begin memo2_message('Error'); head_flat.flat_count := 0; exit; end; {load master in memory img_flat} last_flat_loaded := filen; {required for for change in light_jd} flat_filter := hd.filter_name; {mark as loaded} if pos('B', head_flat.calstat) = 0 then begin memo2_message('█ █ █ █ █ █ Warning: Flat not calibrated with a flat-dark/bias (keywords CALSTAT or BIAS_CNT). █ █ █ █ █ █') end; if head_flat.flat_count = 0 then head_flat.flat_count := 1; {not required for astap master} end; end else begin memo2_message('█ █ █ █ █ █ Warning, could not find a suitable flat for "' + hd.filter_name + '"! De-classify flat filter or add correct flat. See report in column ISSUES in tab flats. █ █ █ █ █ █ '); head_flat.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,temperatureRound: integer; specified: boolean; exposure, temperature, width1: integer; day,temperature_avg: 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; temperature_avg:=0; 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 (abs(temperature - StrToInt(stackmenu1.listview2.Items.item[c].subitems.Strings[D_temperature]))<=delta_temp_updown1.position)) then {temperature correct} if ((stackmenu1.classify_dark_gain1.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; temperature_avg:=temperature_avg+StrToInt(stackmenu1.listview2.Items.item[c].subitems.Strings[D_temperature]); 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} 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} temperatureRound:=round(temperature_avg/file_count); path1 := extractfilepath(file_list[0]) + 'master_dark_' + IntToStr(head.dark_count) + 'x' + IntToStr(round(exposure)) + 's_at_' + IntToStr( temperatureRound) + 'C_' + copy(head.date_obs, 1, 10) + '.fit'; update_integer('DARK_CNT=', ' / Number of dark image combined ' , head.dark_count); update_integer('CCD-TEMP=', ' / Average sensor temperature (Celsius) ' , temperatureRound); add_text('COMMENT 8', ' Dark temperature tolerance setting was ' + IntToStr(stackmenu1.delta_temp_updown1.position)+ ' degrees Celsius' ); { 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_height, flat_dark_width,flat_dark_height: integer; flatdark_used: boolean; file_list: array of string; img_bias : image_array; begin with stackmenu1 do begin save_settings2; memo2_message('Analysing flats'); 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]); flat_height := StrToInt(stackmenu1.listview3.Items.item[c].subitems.Strings[D_height]); 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 flat_height = StrToInt( stackmenu1.listview3.Items.item[c].subitems.Strings[D_height]) then {height 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; if average_flatdarks(flat_exposure,flat_dark_width,flat_dark_height,img_bias) then {average of bias frames. Convert to FITS if required} begin //falt darks found flatdark_exposure := flat_exposure; {store this head.exposure for next time} if ((flat_width <> flat_dark_width) or (flat_height <> flat_dark_height)) then begin memo2_message('Abort, the width or height of the flat and flat-dark do not match!!'); exit; end; end else {head.flatdark_count will be zero} memo2_message('█ █ █ █ █ █ Warning no flat-dark/bias found!! █ █ █ █ █ █ '); 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, fitsY, fitsX] := img_flat[0, fitsY, fitsX] - img_bias[0, fitsY, fitsX]; {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 update_solution_and_save(img: image_array; var hd: theader): boolean; {plate solving, image should be already loaded create internal solution using the internal solver} begin if solve_image(img, hd, True,false) 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; var hd : theader): boolean; inline; {apply dark and flat if required, renew if different head.exposure or ccd temp} var fitsX, fitsY, k: integer; Value, flat_factor, flatNorm11, flatNorm12, flatNorm21, flatNorm22, flat_norm_value: double; begin Result := False; date_to_jd(hd.date_obs,'', hd.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', hd.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),hd); {will only be renewed if different hd.exposure or hd.set_temperature.} if head_dark.dark_count > 0 then {dark and flat use head_2 for status} begin dark_norm_value := 0; for fitsY := (hd.Width div 2)-7 to (hd.Width div 2)+8 do {do even times, 16x16 for bayer matrix} for fitsX := (hd.Height div 2)-7 to (hd.Height div 2)+8 do dark_norm_value := dark_norm_value + img_dark[0, fitsY,fitsX]; dark_norm_value := dark_norm_value /(16*16); {scale factor to apply flat. The norm value will result in a factor one for the center.} for fitsY := 0 to hd.Height - 1 do {apply the dark} for fitsX := 0 to hd.Width - 1 do begin Value := img_dark[0, fitsY, fitsX];{Darks are always made mono when making master dark} for k := 0 to hd.naxis3 - 1 do {do all colors} img[k, fitsY, fitsX] := img[k, fitsY, fitsX] - 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_dark.dark_count; head_ref.datamax_org := hd.datamax_org - dark_norm_value;{adapt light datamax_org} {for SQM measurement, live stacking} hd.calstat := 'D'; {dark applied, store in header of reference file} hd.dark_count := head_dark.dark_count; hd.datamax_org := hd.datamax_org - dark_norm_value;{adapt light datamax_org} Result := True; end; end;{apply dark} if pos('F', hd.calstat) <> 0 then memo2_message('Skipping flat calibration, already applied. See header keyword CALSTAT') else begin load_master_flat(round(jd_start), hd); {will only be renewed if different filter name. Note load will overwrite hd.calstat} last_light_jd := round(jd_start); if head_flat.flat_count <> 0 then begin flat_norm_value := 0; flatNorm11 := 0; flatNorm12 := 0; flatNorm21 := 0; flatNorm22 := 0; for fitsY:=(head_flat.Width div 2)-7 to (head_flat.Width div 2)+8 do {do even times, 16x16 for Bay matrix. For OSC 8x8 pixels for each colour} for fitsX:=(head_flat.Height div 2)-7 to (head_flat.Height div 2)+8 do begin Value := img_flat[0,fitsY, fitsX]; flat_norm_value := flat_norm_value + Value; if odd(fitsX) then begin if odd(fitsY) then flatNorm11 := flatNorm11 + Value else flatNorm12 := flatNorm12 + Value end else begin if odd(fitsY) then flatNorm21 := flatNorm21 + Value else flatNorm22 := flatNorm22 + Value end; end; flat_norm_value := flat_norm_value/(16*16); {scale factor to apply flat. The norm value will result in a factor one for the center.} if process_as_osc > 0 then begin {give only warning when converting to colour. Not when calibrating for green channel and used for photometry} if max(max(flatNorm11, flatNorm12), max(flatNorm21, flatNorm22)) / min( min(flatNorm11, flatNorm12), min(flatNorm21, flatNorm22)) > 2.0 then memo2_message('█ █ █ █ █ █ Warning flat pixel colour values differ too much. Use white light for OSC flats!!. Will compensate accordingly." █ █ █ █ █ █ '); flatNorm11 :={flat_norm_value/ }(flatNorm11 /(8*8));//calculate average norm factor for each colour. flatNorm12 :={flat_norm_value/} (flatNorm12 /(8*8)); flatNorm21 :={flat_norm_value/} (flatNorm21 /(8*8)); flatNorm22 :={flat_norm_value/} (flatNorm22 /(8*8)); for fitsY := 0 to hd.Height-1 do {apply the OSC flat} for fitsX := 0 to hd.Width-1 do begin //thread the red, green and blue pixels seperately //bias is already combined in flat in combine_flat if odd(fitsX) then begin if odd(fitsY) then flat_factor := flatNorm11 / (img_flat[0, fitsY , fitsX] + 0.001) //normalise flat for colour 11 else flat_factor := flatNorm12 / (img_flat[0, fitsY , fitsX] + 0.001) //normalise flat for colour 12 end else begin if odd(fitsY) then flat_factor := flatNorm21 / (img_flat[0, fitsY , fitsX] + 0.001) //normalise flat for colour 21 else flat_factor := flatNorm22 / (img_flat[0, fitsY , fitsX] + 0.001) //normalise flat for colour 22 end; flat_factor:=min(4,max(flat_factor,-4)); {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} img[0, fitsY, fitsX] := img[0, fitsY, fitsX] * flat_factor; end; end else //monochrome images (or weird images already in colour) begin for k := 0 to hd.naxis3 - 1 do {do all colors} for fitsY := 0 to hd.Height-1 do {apply the flat} for fitsX := 0 to hd.Width-1 do begin flat_factor := flat_norm_value / (img_flat[0, fitsY, fitsX] + 0.001); {bias is already combined in flat in combine_flat} flat_factor:=min(4,max(flat_factor,-4)); {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} img[k, fitsY, fitsX] := img[k, fitsY, fitsX] * flat_factor; end; end; {for stacking} head_ref.calstat := head_ref.calstat + 'F' + head_flat.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_flat.flat_count; head_ref.flatdark_count := head_flat.flatdark_count; {for SQM measurement, live stacking} hd.calstat := hd.calstat + 'F' + head_flat.calstat{B from flat}; {mark that flat and bias have been applied. Store in the header of the reference file} hd.flat_count := head_flat.flat_count; hd.flatdark_count := head_flat.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;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,mainwindow.memo1.lines, head, img_loaded) = False)) then begin memo2_message('Error loading file ' + filename2); Screen.Cursor := crDefault; exit; end; if apply_dark_and_flat(img_loaded,head) {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) + ' "' + 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, Y, X] := img_loaded[col, Y, X] + 500; {add pedestal to prevent values around zero for very dark skies} end; head.pedestal:=500; 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_float('PEDESTAL=',' / Value added during calibration or stacking ',false ,head.pedestal);//pedestal value added during calibration or stacking 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 compatible 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 Memo3} 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/sqr(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,long_date, 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 begin if long_date=false then Result := Result + ', ' + copy(head.date_obs, 1, 10) else Result := Result + ', ' + head.date_obs; end; 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 stackmenu1.use_ephemeris_alignment1.Checked then result:=result + RemoveSpecialChars(stackmenu1.ephemeris_centering1.text); 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, nrfiles, image_counter, object_counter, first_file, total_counter, counter_colours,analyse_level, referenceX,referenceY : integer; filter_name1, filter_name2, defilter, filename3, extra1, extra2, object_to_process, stack_info, thefilters : string; lrgb, solution, monofile, ignore, cal_and_align, stitching_mode, sigma_clip, calibration_mode, calibration_mode2, skip_combine, success, classify_filter, classify_object, sender_photometry, sender_stack_groups,comet : boolean; startTick: qword;{for timing/speed purposes} min_background, max_background,back_gr : 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); stitching_mode := pos('stitch', stackmenu1.stack_method1.Text) > 0; sigma_clip := pos('Sigma', stackmenu1.stack_method1.Text) > 0; comet:=pos('Comet', 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? sender_stack_groups := (Sender =stack_groups1);//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_clip) 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 analyse_objects_visible1Click(nil); //try to fill with one object if ephemeris_centering1.items.count>1 then ephemeris_centering1.itemindex:=-1;//more then one object. Can not take decision end; 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 lights.'); if calibration_mode then analyse_level:=0 // almost none else analyse_level:=1; //medium analyse_tab_lights(analyse_level); {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 then begin memo2_message('■■■■■■■■■■■■■ OSC images. Will uncheck "Classify by filter" ! ■■■■■■■■■■■■■'); classify_filter := False; end; end else if classify_filter then memo2_message('LRGB colour stack (classify by light filter checked)') else memo2_message('Grayscale stack (classify by light filter unchecked)'); set_icon_stackbutton; //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; light_exposure := 987654321;{not done indication} light_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('Completed. Resulting files are available in tab Results and can be copied to the Blink, Photometry or Lights tab.'); exit; end; Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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_alignment1.Checked) or (use_ephemeris_alignment1.Checked) or (stitching_mode)) 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 then if ((ignore) or (pos('✓',stackmenu1.ListView1.Items.item[c].subitems.Strings[L_solution])=0)) then //no internal solution 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,mainwindow.memo1.lines, 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; solution := update_solution_and_save(img_loaded, head);//solve and save 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 if A_ORDER>0 then stackmenu1.ListView1.Items.item[c].subitems.Strings[L_solution]:='✓✓' else 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 stitching_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 (pos('✓',ListView1.Items.item[c].subitems.Strings[L_solution])>0 {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,mainwindow.memo1.lines, 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°'); 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 if ((ListView1.items[c].Checked = True) and (pos('✓',stackmenu1.ListView1.Items.item[c].subitems.Strings[L_solution])>0 {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,mainwindow.memo1.lines, 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},true {use asteroid buffer. Was loaded by analyse_objects_visible}); 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(c,mainwindow.Memo1.lines);{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) and (cal_and_align = False)); {ignore lrgb for calibration and alignment is true} 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 = False) 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 stitching_mode then begin if stackmenu1.limit_background_correction1.checked then begin back_gr := strtofloat2(ListView1.Items.item[c].subitems.Strings[L_background]); min_background := min(back_gr, min_background); max_background := max(back_gr, max_background); end; end; end; end; end; if nrfiles > 1 then {need at least two files to sort} begin if stitching_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_clip 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( process_as_osc,{var}files_to_process, counterL); {sigma clip combining} end else if stitching_mode then stack_mosaic(process_as_osc,{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(process_as_osc, {var}files_to_process, counterL);{saturation clip average} end else if comet then begin stackmenu1.use_ephemeris_alignment1.Checked := True; //force ephemeris alignment stack_comet( process_as_osc,{var}files_to_process, counterL); end else stack_average(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 = False) 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 stitching_mode then begin if stackmenu1.limit_background_correction1.checked then begin back_gr := strtofloat2( ListView1.Items.item[c].subitems.Strings[L_background]); min_background := min(back_gr, min_background); max_background := max(back_gr, max_background); end; end; end; end; end; end; if nrfiles > 0 then begin if nrfiles > 1 then {more than one file} begin if stitching_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_clip then stack_sigmaclip( process_as_osc,{var}files_to_process, counterL) {sigma clip combining} else if stitching_mode then stack_mosaic(process_as_osc,{var}files_to_process, abs(max_background - min_background), counterL){mosaic combining} else stack_average(process_as_osc,{var}files_to_process, counterL);{average} if esc_pressed then begin progress_indicator(-2, 'ESC'); restore_img; Screen.Cursor := crDefault;{ back to normal } exit; 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_clip 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' + RemoveSpecialChars(head.filter_name);//filter filter_name for e.g. G/Oiii 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; 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 memo2_message('Combine method '+extra2); 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(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.'); 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 sender=stackmenu1.blink_stack_selected1 then //blinktab, crop stack begin referenceX:=round(strtofloat2(stackmenu1.ListView1.Items.item[files_to_process[0].listviewindex].subitems.Strings[L_X])); {reference offset} referenceY:=round(strtofloat2(stackmenu1.ListView1.Items.item[files_to_process[0].listviewindex].subitems.Strings[L_Y])); {reference offset} startX:=referenceX-150; stopX:=referenceX+150; startY:=referenceY-150; stopY:=referenceY+150; mainwindow.CropFITSimage1Click(Sender); plot_mpcorb(StrToInt(maxcount_asteroid), strtofloat2(maxmag_asteroid), True {add annotations},true {buffer_loaded});//removes also the old keywords end; 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} mainwindow.Memo1.Lines.BeginUpdate; //remove_solution(false {keep wcs});//fast and efficient 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_float('PEDESTAL=',' / Value added during calibration or stacking ',false ,head.pedestal);//pedestal value added during calibration or stacking update_text('CALSTAT =', #39 + head.calstat + #39); {calibration status} head.date_obs := jdToDate(jd_start_first); update_text('DATE-OBS=', #39 + head.date_obs + #39 + '/ Date and time of the start of the observation.'); //add_text update_text('DATE-END=', #39 + jdToDate(jd_end_last) + #39 + '/ Date and time of the end of the observation.'); //add_text if (((head.naxis3 = 1) or (process_as_osc>0)) and (counterL > 0)) then {works only for mono} begin if use_ephemeris_alignment1.Checked=false then jd_mid:=jd_sum / counterL //average of jd_mid else jd_mid:=jd_mid_reference;//stacked aligned to the minor planet of the reference image. update_float('JD-AVG =',' / Julian Day of the observation mid-point. ',false, jd_mid);{give midpoint of exposures} head.date_avg := JdToDate(jd_mid); {update date_avg for asteroid annotation} update_text('DATE-AVG=', #39 + head.date_avg + #39);{give midpoint of exposures} head.date_obs := JdToDate((jd_mid) - head.exposure / (2 * 24 * 60 * 60));{Estimate for date obs for stack. Accuracy could vary due to lost time between exposures}; end; head.exposure := sum_exp; update_integer('EXPTIME =', ' / Total exposure time in seconds. ', round(head.exposure)); 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_clip 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} 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} 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; mainwindow.Memo1.Lines.EndUpdate; filename2 := extractfilepath(filename2) + propose_file_name(stitching_mode,sender_stack_groups{long date} ,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; inc(total_counter); 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 then {somehow nothing was stacked} begin memo2.Lines.add('No images in tab lights to stack.'); if classify_filter then memo2.Lines.add('Hint: remove check mark from classify by "light filter" if required or check filter names in tab stack method.'); if classify_object then memo2.Lines.add('Hint: remove check mark from classify by "light object" if required.'); if use_astrometry_alignment1.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); 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 stitching 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 := classify_filter1.Checked = False; 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 begin filter_groupbox1.Caption := 'LRGB stacking (Disabled by stack method)'; add_sip1.checked:=true; memo2_message('Activated SIP for accurate astrometric stitching. Deactive SIP for normal stacking '); end 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_alignment1.Checked = False) and (mosa)) then begin use_astrometry_alignment1.Checked := True; memo2_message('Switched to ASTROMETRIC alignment.'); 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_filter1.Enabled := ((cal_and_align = False) and (cal_only = False) and (mosa = False)); classify_object1.Enabled := (cal_only = 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 (method <=7) and (classify_filter1.Checked = False)) then memo2_message( '█ █ █ █ █ █ Warning, classify on Light Filter is not check marked !!! █ █ █ █ █ █ '); if method=8 then begin memo2_message( 'Method Comet & Stars sharp. Will switch to ephemeris alignment!! Check your comet or asteroid database. See menu CTRL+R'); end; set_icon_stackbutton; //update glyph stack button to colour or gray end; procedure Tstackmenu1.use_astrometry_alignment1Change(Sender: TObject); begin update_tab_alignment; end; procedure Tstackmenu1.use_ephemeris_alignment1Change(Sender: TObject); begin update_tab_alignment; end; procedure Tstackmenu1.use_manual_alignment1Change(Sender: TObject); begin update_tab_alignment; end; procedure Tstackmenu1.use_star_alignment1Change(Sender: TObject); begin update_tab_alignment; end; procedure Tstackmenu1.apply_vertical_gradient1Click(Sender: TObject); var fitsX, fitsY, i, k, most_common, y1, y2, x1, x2, counter, step,greylevels: integer; mean: double; begin if head.naxis = 0 then exit; memo2_message('Remove gradient started.'); Screen.Cursor:=crHourglass;{$IfDef Darwin}{$else}application.processmessages;{$endif}// Show hourglass cursor, processmessages is for Linux. Note in MacOS processmessages disturbs events keypress for lv_left, lv_right key 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,false{ellipse shape}, k, 0, head.Width - 1, y1, y2, 32000,greylevels); 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, i, fitsX] := 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,false{ellipse shape}, k, x1, x2, 0, head.Height - 1, 32000,greylevels); 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, fitsY, i] := 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, fitsY, fitsX] := mean + img_backup[index_backup].img[k, fitsY, fitsX] - img_loaded[k, fitsY, fitsX]; 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, cpos: integer; begin crop := False; case QuestionDlg('Crop', 'Crop of full size video?', mtCustom, [20, 'Crop', 21, 'Cancel', 22, 'Full size', 'IsDefault'], '') of 20: begin crop := True; if areaX1 = areaX2 then begin application.messagebox(PChar('Abort!'+#10+#10+ 'Set first the area with the mouse and mouse popup menu "Set area" !'), PChar('Missing crop area'), MB_OK); exit; end; end; 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 begin Inc(nrframes); {for AVI, count frames} cpos:=c; end; 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, blink_Width, blink_Height) {open/create file. Result is false if failure} else res := write_YUV4MPEG2_header(filen, frame_rate,((blink_naxis3 > 1) or (mainwindow.preview_demosaic1.Checked)), blink_Width, blink_Height); end else {crop is set by the mouse} begin if areaX1 = areaX2 then // Abort, set first the area with the mouse and mouse popup menu exit; 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_2024.05.01.orig/unit_sqm.lfm������������������������������������������������������������������0000644�0001751�0001751�00000015463�14614535560�016047� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������object form_sqm1: Tform_sqm1 Left = 735 Height = 633 Top = 81 Width = 653 Caption = 'SQM measurement' ClientHeight = 633 ClientWidth = 653 KeyPreview = True OnClose = FormClose OnKeyPress = FormKeyPress OnShow = FormShow Position = poScreenCenter LCLVersion = '3.2.0.0' object help_sqm_measurement1: TLabel Cursor = crHandPoint Left = 544 Height = 30 Hint = 'Help asteroid annotation' Top = 584 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 = 176 Height = 23 Hint = 'Format YYYY-MM-DDTHH:MM:SS.SSS. Timezone 0, universal time' Top = 24 Width = 249 BorderSpacing.Around = 5 ParentShowHint = False ShowHint = True TabOrder = 1 Text = '2020-02-11T22:10:41.222' OnExit = date_obs1Exit end object date_label1: TLabel Left = 78 Height = 15 Top = 24 Width = 82 Caption = 'DATE_OBS [UT]:' ParentColor = False end object label_start_mid1: TLabel Left = 448 Height = 15 Top = 24 Width = 123 Caption = 'Start of the observation' ParentColor = False end object latitude1: TEdit Left = 176 Height = 23 Hint = 'The latitude of the observatory in degrees.' Top = 56 Width = 113 ParentShowHint = False ShowHint = True TabOrder = 2 Text = '0' OnChange = latitude1Change OnExit = latitude1Exit end object Label2: TLabel Left = 114 Height = 15 Top = 56 Width = 46 Caption = 'Latitude:' ParentColor = False end object Label3: TLabel Left = 103 Height = 15 Top = 88 Width = 57 Caption = 'Longitude:' ParentColor = False end object longitude1: TEdit Left = 176 Height = 23 Hint = 'The longitude of the observatory in degrees. For east enter positive, for west enter negative values.' Top = 88 Width = 113 ParentShowHint = False ShowHint = True TabOrder = 3 Text = '0' OnChange = longitude1Change OnExit = longitude1Exit end object ok1: TButton Left = 280 Height = 30 Hint = 'Ok' Top = 584 Width = 86 Caption = '✔' Default = True ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 0 OnClick = ok1Click end object altitude_label1: TLabel Left = 42 Height = 15 Top = 248 Width = 118 Caption = 'Altitude calculated [°]:' ParentColor = False end object sqm_label1: TLabel Left = 43 Height = 15 Top = 280 Width = 117 Caption = 'SQM [magn/arcsec²]:' Font.Style = [fsBold] ParentColor = False ParentFont = False end object Label1: TLabel Left = 8 Height = 180 Top = 370 Width = 544 Caption = 'Pre-conditions'#13#10'1) Image is astrometrical solved. (For flux-calibration against the star database)'#13#10'2) The image background value has measurable increased above the pedestal value or mean dark value.'#13#10' If not expose longer. This increase is caused by the sky glow.'#13#10'3) Apply on a single unprocessed raw image 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. Calibrated images are also fine.'#13#10'5) DSLR/OSC raw images require 2x2 binning. For DSLR images this is done automatically.'#13#10'6) No very large bright nebula is visible. Most of the image shall contain empty sky filled with stars.'#13#10'7) The calculated altitude is correct. The altitude will be used for an atmospheric extinction'#13#10' correction of the star light. The altitude is calculated based on time, latitude, longitude'#13#10' Note that poor transparency will result in lower values compared with handheld meters.' ParentColor = False end object Label4: TLabel Left = 30 Height = 15 Top = 216 Width = 130 Caption = 'Background (measured):' ParentColor = False end object Label5: TLabel Left = 62 Height = 15 Top = 120 Width = 98 Caption = 'Pedestal (manual):' ParentColor = False end object pedestal1: TEdit Left = 176 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 = 120 Width = 113 ParentShowHint = False ShowHint = True TabOrder = 4 Text = '0' OnExit = pedestal1Exit end object background1: TEdit Left = 176 Height = 23 Hint = 'Automatically measured from the light frame' Top = 216 Width = 113 Color = clMenu ParentShowHint = False ReadOnly = True ShowHint = True TabOrder = 5 Text = '0' OnChange = longitude1Change end object altitude1: TEdit Left = 176 Height = 23 Hint = 'Calculated from light frame time, geographic location and celestial position' Top = 248 Width = 113 Color = clMenu ParentShowHint = False ReadOnly = True ShowHint = True TabOrder = 6 Text = '0' OnChange = longitude1Change end object sqm1: TEdit Left = 176 Height = 23 Hint = 'The measured sky background expressed in magnitudes per square arcseconds.' Top = 280 Width = 113 Color = clMenu Font.Style = [fsBold] ParentFont = False ParentShowHint = False ReadOnly = True ShowHint = True TabOrder = 7 Text = '0' OnChange = longitude1Change 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 = 312 Height = 19 Hint = 'Use the darks & flats in the stack menu' Top = 120 Width = 111 Caption = 'Apply dark && flat ' TabOrder = 8 OnChange = sqm_applydf1Change end object green_message1: TLabel Left = 176 Height = 48 Top = 160 Width = 460 AutoSize = False Caption = 'Message: none' Font.Color = clGreen ParentColor = False ParentFont = False WordWrap = True end object bortle1: TLabel Left = 312 Height = 15 Hint = 'The Bortle scale is a nine-level numeric scale of the night sky''s brightness.' Top = 280 Width = 15 Caption = '---' ParentColor = False ParentShowHint = False ShowHint = True end end �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/unit_disk.pas�����������������������������������������������������������������0000644�0001751�0001751�00000132144�14614535560�016202� 0����������������������������������������������������������������������������������������������������ustar �debian��������������������������debian�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������unit unit_disk; //draw disk in x,y starting from center moving outwards interface const disk :array[0..1344,0..1] of shortint= // Disk positions starting from center moving outwards. Shortint range is -128..127 and should be one byte ((0,0), //0, distance=0 (1,0), //1, distance=1 (0,1), //2, distance=1 (-1,0), //3, distance=1 (0,-1), //4, distance=1 (1,1), //5, distance=1.414 (-1,1), //6, distance=1.414 (-1,-1), //7, distance=1.414 (1,-1), //8, distance=1.414 (2,0), //9, distance=2 (0,2), //10, distance=2 (-2,0), //11, distance=2 (0,-2), //12, distance=2 (2,1), //13, distance=2.236 (1,2), //14, distance=2.236 (-1,2), //15, distance=2.236 (-2,1), //16, distance=2.236 (-2,-1), //17, distance=2.236 (-1,-2), //18, distance=2.236 (1,-2), //19, distance=2.236 (2,-1), //20, distance=2.236 (2,2), //21, distance=2.828 (-2,2), //22, distance=2.828 (-2,-2), //23, distance=2.828 (2,-2), //24, distance=2.828 (3,0), //25, distance=3 (0,3), //26, distance=3 (-3,0), //27, distance=3 (0,-3), //28, distance=3 (3,1), //29, distance=3.162 (1,3), //30, distance=3.162 (-1,3), //31, distance=3.162 (-3,1), //32, distance=3.162 (-3,-1), //33, distance=3.162 (-1,-3), //34, distance=3.162 (1,-3), //35, distance=3.162 (3,-1), //36, distance=3.162 (3,2), //37, distance=3.606 (2,3), //38, distance=3.606 (-2,3), //39, distance=3.606 (-3,2), //40, distance=3.606 (-3,-2), //41, distance=3.606 (-2,-3), //42, distance=3.606 (2,-3), //43, distance=3.606 (3,-2), //44, distance=3.606 (4,0), //45, distance=4 (0,4), //46, distance=4 (-4,0), //47, distance=4 (0,-4), //48, distance=4 (4,1), //49, distance=4.123 (3,3), //50, distance=4.243 (1,4), //51, distance=4.123 (-1,4), //52, distance=4.123 (-3,3), //53, distance=4.243 (-4,1), //54, distance=4.123 (-4,-1), //55, distance=4.123 (-3,-3), //56, distance=4.243 (-1,-4), //57, distance=4.123 (1,-4), //58, distance=4.123 (3,-3), //59, distance=4.243 (4,-1), //60, distance=4.123 (4,2), //61, distance=4.472 (2,4), //62, distance=4.472 (-2,4), //63, distance=4.472 (-4,2), //64, distance=4.472 (-4,-2), //65, distance=4.472 (-2,-4), //66, distance=4.472 (2,-4), //67, distance=4.472 (4,-2), //68, distance=4.472 (4,3), //69, distance=5 (3,4), //70, distance=5 (-3,4), //71, distance=5 (-4,3), //72, distance=5 (-4,-3), //73, distance=5 (-3,-4), //74, distance=5 (3,-4), //75, distance=5 (4,-3), //76, distance=5 (5,0), //77, distance=5 (0,5), //78, distance=5 (-5,0), //79, distance=5 (0,-5), //80, distance=5 (5,1), //81, distance=5.099 (1,5), //82, distance=5.099 (-1,5), //83, distance=5.099 (-5,1), //84, distance=5.099 (-5,-1), //85, distance=5.099 (-1,-5), //86, distance=5.099 (1,-5), //87, distance=5.099 (5,-1), //88, distance=5.099 (5,2), //89, distance=5.385 (2,5), //90, distance=5.385 (-2,5), //91, distance=5.385 (-5,2), //92, distance=5.385 (-5,-2), //93, distance=5.385 (-2,-5), //94, distance=5.385 (2,-5), //95, distance=5.385 (5,-2), //96, distance=5.385 (4,4), //97, distance=5.657 (-4,4), //98, distance=5.657 (-4,-4), //99, distance=5.657 (4,-4), //100, distance=5.657 (5,3), //101, distance=5.831 (3,5), //102, distance=5.831 (-3,5), //103, distance=5.831 (-5,3), //104, distance=5.831 (-5,-3), //105, distance=5.831 (-3,-5), //106, distance=5.831 (3,-5), //107, distance=5.831 (5,-3), //108, distance=5.831 (6,0), //109, distance=6 (0,6), //110, distance=6 (-6,0), //111, distance=6 (0,-6), //112, distance=6 (6,1), //113, distance=6.083 (1,6), //114, distance=6.083 (-1,6), //115, distance=6.083 (-6,1), //116, distance=6.083 (-6,-1), //117, distance=6.083 (-1,-6), //118, distance=6.083 (1,-6), //119, distance=6.083 (6,-1), //120, distance=6.083 (6,2), //121, distance=6.325 (5,4), //122, distance=6.403 (4,5), //123, distance=6.403 (2,6), //124, distance=6.325 (-2,6), //125, distance=6.325 (-4,5), //126, distance=6.403 (-5,4), //127, distance=6.403 (-6,2), //128, distance=6.325 (-6,-2), //129, distance=6.325 (-5,-4), //130, distance=6.403 (-4,-5), //131, distance=6.403 (-2,-6), //132, distance=6.325 (2,-6), //133, distance=6.325 (4,-5), //134, distance=6.403 (5,-4), //135, distance=6.403 (6,-2), //136, distance=6.325 (6,3), //137, distance=6.708 (3,6), //138, distance=6.708 (-3,6), //139, distance=6.708 (-6,3), //140, distance=6.708 (-6,-3), //141, distance=6.708 (-3,-6), //142, distance=6.708 (3,-6), //143, distance=6.708 (6,-3), //144, distance=6.708 (5,5), //145, distance=7.071 (-5,5), //146, distance=7.071 (-5,-5), //147, distance=7.071 (5,-5), //148, distance=7.071 (7,0), //149, distance=7 (0,7), //150, distance=7 (-7,0), //151, distance=7 (0,-7), //152, distance=7 (7,1), //153, distance=7.071 (1,7), //154, distance=7.071 (-1,7), //155, distance=7.071 (-7,1), //156, distance=7.071 (-7,-1), //157, distance=7.071 (-1,-7), //158, distance=7.071 (1,-7), //159, distance=7.071 (7,-1), //160, distance=7.071 (6,4), //161, distance=7.211 (4,6), //162, distance=7.211 (-4,6), //163, distance=7.211 (-6,4), //164, distance=7.211 (-6,-4), //165, distance=7.211 (-4,-6), //166, distance=7.211 (4,-6), //167, distance=7.211 (6,-4), //168, distance=7.211 (7,2), //169, distance=7.28 (2,7), //170, distance=7.28 (-2,7), //171, distance=7.28 (-7,2), //172, distance=7.28 (-7,-2), //173, distance=7.28 (-2,-7), //174, distance=7.28 (2,-7), //175, distance=7.28 (7,-2), //176, distance=7.28 (7,3), //177, distance=7.616 (3,7), //178, distance=7.616 (-3,7), //179, distance=7.616 (-7,3), //180, distance=7.616 (-7,-3), //181, distance=7.616 (-3,-7), //182, distance=7.616 (3,-7), //183, distance=7.616 (7,-3), //184, distance=7.616 (6,5), //185, distance=7.81 (5,6), //186, distance=7.81 (-5,6), //187, distance=7.81 (-6,5), //188, distance=7.81 (-6,-5), //189, distance=7.81 (-5,-6), //190, distance=7.81 (5,-6), //191, distance=7.81 (6,-5), //192, distance=7.81 (7,4), //193, distance=8.062 (4,7), //194, distance=8.062 (-4,7), //195, distance=8.062 (-7,4), //196, distance=8.062 (-7,-4), //197, distance=8.062 (-4,-7), //198, distance=8.062 (4,-7), //199, distance=8.062 (7,-4), //200, distance=8.062 (8,0), //201, distance=8 (0,8), //202, distance=8 (-8,0), //203, distance=8 (0,-8), //204, distance=8 (8,1), //205, distance=8.062 (1,8), //206, distance=8.062 (-1,8), //207, distance=8.062 (-8,1), //208, distance=8.062 (-8,-1), //209, distance=8.062 (-1,-8), //210, distance=8.062 (1,-8), //211, distance=8.062 (8,-1), //212, distance=8.062 (8,2), //213, distance=8.246 (2,8), //214, distance=8.246 (-2,8), //215, distance=8.246 (-8,2), //216, distance=8.246 (-8,-2), //217, distance=8.246 (-2,-8), //218, distance=8.246 (2,-8), //219, distance=8.246 (8,-2), //220, distance=8.246 (6,6), //221, distance=8.485 (-6,6), //222, distance=8.485 (-6,-6), //223, distance=8.485 (6,-6), //224, distance=8.485 (8,3), //225, distance=8.544 (7,5), //226, distance=8.602 (5,7), //227, distance=8.602 (3,8), //228, distance=8.544 (-3,8), //229, distance=8.544 (-5,7), //230, distance=8.602 (-7,5), //231, distance=8.602 (-8,3), //232, distance=8.544 (-8,-3), //233, distance=8.544 (-7,-5), //234, distance=8.602 (-5,-7), //235, distance=8.602 (-3,-8), //236, distance=8.544 (3,-8), //237, distance=8.544 (5,-7), //238, distance=8.602 (7,-5), //239, distance=8.602 (8,-3), //240, distance=8.544 (8,4), //241, distance=8.944 (4,8), //242, distance=8.944 (-4,8), //243, distance=8.944 (-8,4), //244, distance=8.944 (-8,-4), //245, distance=8.944 (-4,-8), //246, distance=8.944 (4,-8), //247, distance=8.944 (8,-4), //248, distance=8.944 (9,0), //249, distance=9 (0,9), //250, distance=9 (-9,0), //251, distance=9 (0,-9), //252, distance=9 (9,1), //253, distance=9.055 (1,9), //254, distance=9.055 (-1,9), //255, distance=9.055 (-9,1), //256, distance=9.055 (-9,-1), //257, distance=9.055 (-1,-9), //258, distance=9.055 (1,-9), //259, distance=9.055 (9,-1), //260, distance=9.055 (7,6), //261, distance=9.22 (6,7), //262, distance=9.22 (-6,7), //263, distance=9.22 (-7,6), //264, distance=9.22 (-7,-6), //265, distance=9.22 (-6,-7), //266, distance=9.22 (6,-7), //267, distance=9.22 (7,-6), //268, distance=9.22 (9,2), //269, distance=9.22 (2,9), //270, distance=9.22 (-2,9), //271, distance=9.22 (-9,2), //272, distance=9.22 (-9,-2), //273, distance=9.22 (-2,-9), //274, distance=9.22 (2,-9), //275, distance=9.22 (9,-2), //276, distance=9.22 (8,5), //277, distance=9.434 (5,8), //278, distance=9.434 (-5,8), //279, distance=9.434 (-8,5), //280, distance=9.434 (-8,-5), //281, distance=9.434 (-5,-8), //282, distance=9.434 (5,-8), //283, distance=9.434 (8,-5), //284, distance=9.434 (9,3), //285, distance=9.487 (3,9), //286, distance=9.487 (-3,9), //287, distance=9.487 (-9,3), //288, distance=9.487 (-9,-3), //289, distance=9.487 (-3,-9), //290, distance=9.487 (3,-9), //291, distance=9.487 (9,-3), //292, distance=9.487 (9,4), //293, distance=9.849 (7,7), //294, distance=9.899 (4,9), //295, distance=9.849 (-4,9), //296, distance=9.849 (-7,7), //297, distance=9.899 (-9,4), //298, distance=9.849 (-9,-4), //299, distance=9.849 (-7,-7), //300, distance=9.899 (-4,-9), //301, distance=9.849 (4,-9), //302, distance=9.849 (7,-7), //303, distance=9.899 (9,-4), //304, distance=9.849 (8,6), //305, distance=10 (6,8), //306, distance=10 (-6,8), //307, distance=10 (-8,6), //308, distance=10 (-8,-6), //309, distance=10 (-6,-8), //310, distance=10 (6,-8), //311, distance=10 (8,-6), //312, distance=10 (10,0), //313, distance=10 (0,10), //314, distance=10 (-10,0), //315, distance=10 (0,-10), //316, distance=10 (10,1), //317, distance=10.05 (1,10), //318, distance=10.05 (-1,10), //319, distance=10.05 (-10,1), //320, distance=10.05 (-10,-1), //321, distance=10.05 (-1,-10), //322, distance=10.05 (1,-10), //323, distance=10.05 (10,-1), //324, distance=10.05 (10,2), //325, distance=10.2 (9,5), //326, distance=10.3 (5,9), //327, distance=10.3 (2,10), //328, distance=10.2 (-2,10), //329, distance=10.2 (-5,9), //330, distance=10.3 (-9,5), //331, distance=10.3 (-10,2), //332, distance=10.2 (-10,-2), //333, distance=10.2 (-9,-5), //334, distance=10.3 (-5,-9), //335, distance=10.3 (-2,-10), //336, distance=10.2 (2,-10), //337, distance=10.2 (5,-9), //338, distance=10.3 (9,-5), //339, distance=10.3 (10,-2), //340, distance=10.2 (10,3), //341, distance=10.44 (3,10), //342, distance=10.44 (-3,10), //343, distance=10.44 (-10,3), //344, distance=10.44 (-10,-3), //345, distance=10.44 (-3,-10), //346, distance=10.44 (3,-10), //347, distance=10.44 (10,-3), //348, distance=10.44 (8,7), //349, distance=10.63 (7,8), //350, distance=10.63 (-7,8), //351, distance=10.63 (-8,7), //352, distance=10.63 (-8,-7), //353, distance=10.63 (-7,-8), //354, distance=10.63 (7,-8), //355, distance=10.63 (8,-7), //356, distance=10.63 (10,4), //357, distance=10.77 (9,6), //358, distance=10.82 (6,9), //359, distance=10.82 (4,10), //360, distance=10.77 (-4,10), //361, distance=10.77 (-6,9), //362, distance=10.82 (-9,6), //363, distance=10.82 (-10,4), //364, distance=10.77 (-10,-4), //365, distance=10.77 (-9,-6), //366, distance=10.82 (-6,-9), //367, distance=10.82 (-4,-10), //368, distance=10.77 (4,-10), //369, distance=10.77 (6,-9), //370, distance=10.82 (9,-6), //371, distance=10.82 (10,-4), //372, distance=10.77 (11,0), //373, distance=11 (0,11), //374, distance=11 (-11,0), //375, distance=11 (0,-11), //376, distance=11 (11,1), //377, distance=11.05 (10,5), //378, distance=11.18 (5,10), //379, distance=11.18 (1,11), //380, distance=11.05 (-1,11), //381, distance=11.05 (-5,10), //382, distance=11.18 (-10,5), //383, distance=11.18 (-11,1), //384, distance=11.05 (-11,-1), //385, distance=11.05 (-10,-5), //386, distance=11.18 (-5,-10), //387, distance=11.18 (-1,-11), //388, distance=11.05 (1,-11), //389, distance=11.05 (5,-10), //390, distance=11.18 (10,-5), //391, distance=11.18 (11,-1), //392, distance=11.05 (11,2), //393, distance=11.18 (8,8), //394, distance=11.31 (2,11), //395, distance=11.18 (-2,11), //396, distance=11.18 (-8,8), //397, distance=11.31 (-11,2), //398, distance=11.18 (-11,-2), //399, distance=11.18 (-8,-8), //400, distance=11.31 (-2,-11), //401, distance=11.18 (2,-11), //402, distance=11.18 (8,-8), //403, distance=11.31 (11,-2), //404, distance=11.18 (9,7), //405, distance=11.4 (7,9), //406, distance=11.4 (-7,9), //407, distance=11.4 (-9,7), //408, distance=11.4 (-9,-7), //409, distance=11.4 (-7,-9), //410, distance=11.4 (7,-9), //411, distance=11.4 (9,-7), //412, distance=11.4 (11,3), //413, distance=11.4 (3,11), //414, distance=11.4 (-3,11), //415, distance=11.4 (-11,3), //416, distance=11.4 (-11,-3), //417, distance=11.4 (-3,-11), //418, distance=11.4 (3,-11), //419, distance=11.4 (11,-3), //420, distance=11.4 (10,6), //421, distance=11.66 (6,10), //422, distance=11.66 (-6,10), //423, distance=11.66 (-10,6), //424, distance=11.66 (-10,-6), //425, distance=11.66 (-6,-10), //426, distance=11.66 (6,-10), //427, distance=11.66 (10,-6), //428, distance=11.66 (11,4), //429, distance=11.7 (4,11), //430, distance=11.7 (-4,11), //431, distance=11.7 (-11,4), //432, distance=11.7 (-11,-4), //433, distance=11.7 (-4,-11), //434, distance=11.7 (4,-11), //435, distance=11.7 (11,-4), //436, distance=11.7 (9,8), //437, distance=12.04 (8,9), //438, distance=12.04 (-8,9), //439, distance=12.04 (-9,8), //440, distance=12.04 (-9,-8), //441, distance=12.04 (-8,-9), //442, distance=12.04 (8,-9), //443, distance=12.04 (9,-8), //444, distance=12.04 (11,5), //445, distance=12.08 (5,11), //446, distance=12.08 (-5,11), //447, distance=12.08 (-11,5), //448, distance=12.08 (-11,-5), //449, distance=12.08 (-5,-11), //450, distance=12.08 (5,-11), //451, distance=12.08 (11,-5), //452, distance=12.08 (12,0), //453, distance=12 (0,12), //454, distance=12 (-12,0), //455, distance=12 (0,-12), //456, distance=12 (12,1), //457, distance=12.04 (10,7), //458, distance=12.21 (7,10), //459, distance=12.21 (1,12), //460, distance=12.04 (-1,12), //461, distance=12.04 (-7,10), //462, distance=12.21 (-10,7), //463, distance=12.21 (-12,1), //464, distance=12.04 (-12,-1), //465, distance=12.04 (-10,-7), //466, distance=12.21 (-7,-10), //467, distance=12.21 (-1,-12), //468, distance=12.04 (1,-12), //469, distance=12.04 (7,-10), //470, distance=12.21 (10,-7), //471, distance=12.21 (12,-1), //472, distance=12.04 (12,2), //473, distance=12.17 (2,12), //474, distance=12.17 (-2,12), //475, distance=12.17 (-12,2), //476, distance=12.17 (-12,-2), //477, distance=12.17 (-2,-12), //478, distance=12.17 (2,-12), //479, distance=12.17 (12,-2), //480, distance=12.17 (12,3), //481, distance=12.37 (3,12), //482, distance=12.37 (-3,12), //483, distance=12.37 (-12,3), //484, distance=12.37 (-12,-3), //485, distance=12.37 (-3,-12), //486, distance=12.37 (3,-12), //487, distance=12.37 (12,-3), //488, distance=12.37 (11,6), //489, distance=12.53 (6,11), //490, distance=12.53 (-6,11), //491, distance=12.53 (-11,6), //492, distance=12.53 (-11,-6), //493, distance=12.53 (-6,-11), //494, distance=12.53 (6,-11), //495, distance=12.53 (11,-6), //496, distance=12.53 (12,4), //497, distance=12.65 (9,9), //498, distance=12.73 (4,12), //499, distance=12.65 (-4,12), //500, distance=12.65 (-9,9), //501, distance=12.73 (-12,4), //502, distance=12.65 (-12,-4), //503, distance=12.65 (-9,-9), //504, distance=12.73 (-4,-12), //505, distance=12.65 (4,-12), //506, distance=12.65 (9,-9), //507, distance=12.73 (12,-4), //508, distance=12.65 (10,8), //509, distance=12.81 (8,10), //510, distance=12.81 (-8,10), //511, distance=12.81 (-10,8), //512, distance=12.81 (-10,-8), //513, distance=12.81 (-8,-10), //514, distance=12.81 (8,-10), //515, distance=12.81 (10,-8), //516, distance=12.81 (12,5), //517, distance=13 (11,7), //518, distance=13.04 (7,11), //519, distance=13.04 (5,12), //520, distance=13 (-5,12), //521, distance=13 (-7,11), //522, distance=13.04 (-11,7), //523, distance=13.04 (-12,5), //524, distance=13 (-12,-5), //525, distance=13 (-11,-7), //526, distance=13.04 (-7,-11), //527, distance=13.04 (-5,-12), //528, distance=13 (5,-12), //529, distance=13 (7,-11), //530, distance=13.04 (11,-7), //531, distance=13.04 (12,-5), //532, distance=13 (13,0), //533, distance=13 (0,13), //534, distance=13 (-13,0), //535, distance=13 (0,-13), //536, distance=13 (13,1), //537, distance=13.04 (1,13), //538, distance=13.04 (-1,13), //539, distance=13.04 (-13,1), //540, distance=13.04 (-13,-1), //541, distance=13.04 (-1,-13), //542, distance=13.04 (1,-13), //543, distance=13.04 (13,-1), //544, distance=13.04 (13,2), //545, distance=13.15 (2,13), //546, distance=13.15 (-2,13), //547, distance=13.15 (-13,2), //548, distance=13.15 (-13,-2), //549, distance=13.15 (-2,-13), //550, distance=13.15 (2,-13), //551, distance=13.15 (13,-2), //552, distance=13.15 (13,3), //553, distance=13.34 (12,6), //554, distance=13.42 (10,9), //555, distance=13.45 (9,10), //556, distance=13.45 (6,12), //557, distance=13.42 (3,13), //558, distance=13.34 (-3,13), //559, distance=13.34 (-6,12), //560, distance=13.42 (-9,10), //561, distance=13.45 (-10,9), //562, distance=13.45 (-12,6), //563, distance=13.42 (-13,3), //564, distance=13.34 (-13,-3), //565, distance=13.34 (-12,-6), //566, distance=13.42 (-10,-9), //567, distance=13.45 (-9,-10), //568, distance=13.45 (-6,-12), //569, distance=13.42 (-3,-13), //570, distance=13.34 (3,-13), //571, distance=13.34 (6,-12), //572, distance=13.42 (9,-10), //573, distance=13.45 (10,-9), //574, distance=13.45 (12,-6), //575, distance=13.42 (13,-3), //576, distance=13.34 (11,8), //577, distance=13.6 (8,11), //578, distance=13.6 (-8,11), //579, distance=13.6 (-11,8), //580, distance=13.6 (-11,-8), //581, distance=13.6 (-8,-11), //582, distance=13.6 (8,-11), //583, distance=13.6 (11,-8), //584, distance=13.6 (13,4), //585, distance=13.6 (4,13), //586, distance=13.6 (-4,13), //587, distance=13.6 (-13,4), //588, distance=13.6 (-13,-4), //589, distance=13.6 (-4,-13), //590, distance=13.6 (4,-13), //591, distance=13.6 (13,-4), //592, distance=13.6 (12,7), //593, distance=13.89 (7,12), //594, distance=13.89 (-7,12), //595, distance=13.89 (-12,7), //596, distance=13.89 (-12,-7), //597, distance=13.89 (-7,-12), //598, distance=13.89 (7,-12), //599, distance=13.89 (12,-7), //600, distance=13.89 (13,5), //601, distance=13.93 (5,13), //602, distance=13.93 (-5,13), //603, distance=13.93 (-13,5), //604, distance=13.93 (-13,-5), //605, distance=13.93 (-5,-13), //606, distance=13.93 (5,-13), //607, distance=13.93 (13,-5), //608, distance=13.93 (10,10), //609, distance=14.14 (-10,10), //610, distance=14.14 (-10,-10), //611, distance=14.14 (10,-10), //612, distance=14.14 (14,0), //613, distance=14 (0,14), //614, distance=14 (-14,0), //615, distance=14 (0,-14), //616, distance=14 (14,1), //617, distance=14.04 (1,14), //618, distance=14.04 (-1,14), //619, distance=14.04 (-14,1), //620, distance=14.04 (-14,-1), //621, distance=14.04 (-1,-14), //622, distance=14.04 (1,-14), //623, distance=14.04 (14,-1), //624, distance=14.04 (11,9), //625, distance=14.21 (9,11), //626, distance=14.21 (-9,11), //627, distance=14.21 (-11,9), //628, distance=14.21 (-11,-9), //629, distance=14.21 (-9,-11), //630, distance=14.21 (9,-11), //631, distance=14.21 (11,-9), //632, distance=14.21 (14,2), //633, distance=14.14 (2,14), //634, distance=14.14 (-2,14), //635, distance=14.14 (-14,2), //636, distance=14.14 (-14,-2), //637, distance=14.14 (-2,-14), //638, distance=14.14 (2,-14), //639, distance=14.14 (14,-2), //640, distance=14.14 (13,6), //641, distance=14.32 (6,13), //642, distance=14.32 (-6,13), //643, distance=14.32 (-13,6), //644, distance=14.32 (-13,-6), //645, distance=14.32 (-6,-13), //646, distance=14.32 (6,-13), //647, distance=14.32 (13,-6), //648, distance=14.32 (14,3), //649, distance=14.32 (3,14), //650, distance=14.32 (-3,14), //651, distance=14.32 (-14,3), //652, distance=14.32 (-14,-3), //653, distance=14.32 (-3,-14), //654, distance=14.32 (3,-14), //655, distance=14.32 (14,-3), //656, distance=14.32 (12,8), //657, distance=14.42 (8,12), //658, distance=14.42 (-8,12), //659, distance=14.42 (-12,8), //660, distance=14.42 (-12,-8), //661, distance=14.42 (-8,-12), //662, distance=14.42 (8,-12), //663, distance=14.42 (12,-8), //664, distance=14.42 (14,4), //665, distance=14.56 (4,14), //666, distance=14.56 (-4,14), //667, distance=14.56 (-14,4), //668, distance=14.56 (-14,-4), //669, distance=14.56 (-4,-14), //670, distance=14.56 (4,-14), //671, distance=14.56 (14,-4), //672, distance=14.56 (13,7), //673, distance=14.76 (7,13), //674, distance=14.76 (-7,13), //675, distance=14.76 (-13,7), //676, distance=14.76 (-13,-7), //677, distance=14.76 (-7,-13), //678, distance=14.76 (7,-13), //679, distance=14.76 (13,-7), //680, distance=14.76 (11,10), //681, distance=14.87 (10,11), //682, distance=14.87 (-10,11), //683, distance=14.87 (-11,10), //684, distance=14.87 (-11,-10), //685, distance=14.87 (-10,-11), //686, distance=14.87 (10,-11), //687, distance=14.87 (11,-10), //688, distance=14.87 (14,5), //689, distance=14.87 (5,14), //690, distance=14.87 (-5,14), //691, distance=14.87 (-14,5), //692, distance=14.87 (-14,-5), //693, distance=14.87 (-5,-14), //694, distance=14.87 (5,-14), //695, distance=14.87 (14,-5), //696, distance=14.87 (12,9), //697, distance=15 (9,12), //698, distance=15 (-9,12), //699, distance=15 (-12,9), //700, distance=15 (-12,-9), //701, distance=15 (-9,-12), //702, distance=15 (9,-12), //703, distance=15 (12,-9), //704, distance=15 (15,0), //705, distance=15 (15,1), //706, distance=15.03 (1,15), //707, distance=15.03 (0,15), //708, distance=15 (-1,15), //709, distance=15.03 (-15,1), //710, distance=15.03 (-15,0), //711, distance=15 (-15,-1), //712, distance=15.03 (-1,-15), //713, distance=15.03 (0,-15), //714, distance=15 (1,-15), //715, distance=15.03 (15,-1), //716, distance=15.03 (15,2), //717, distance=15.13 (2,15), //718, distance=15.13 (-2,15), //719, distance=15.13 (-15,2), //720, distance=15.13 (-15,-2), //721, distance=15.13 (-2,-15), //722, distance=15.13 (2,-15), //723, distance=15.13 (15,-2), //724, distance=15.13 (14,6), //725, distance=15.23 (13,8), //726, distance=15.26 (8,13), //727, distance=15.26 (6,14), //728, distance=15.23 (-6,14), //729, distance=15.23 (-8,13), //730, distance=15.26 (-13,8), //731, distance=15.26 (-14,6), //732, distance=15.23 (-14,-6), //733, distance=15.23 (-13,-8), //734, distance=15.26 (-8,-13), //735, distance=15.26 (-6,-14), //736, distance=15.23 (6,-14), //737, distance=15.23 (8,-13), //738, distance=15.26 (13,-8), //739, distance=15.26 (14,-6), //740, distance=15.23 (15,3), //741, distance=15.3 (3,15), //742, distance=15.3 (-3,15), //743, distance=15.3 (-15,3), //744, distance=15.3 (-15,-3), //745, distance=15.3 (-3,-15), //746, distance=15.3 (3,-15), //747, distance=15.3 (15,-3), //748, distance=15.3 (11,11), //749, distance=15.56 (-11,11), //750, distance=15.56 (-11,-11), //751, distance=15.56 (11,-11), //752, distance=15.56 (15,4), //753, distance=15.52 (4,15), //754, distance=15.52 (-4,15), //755, distance=15.52 (-15,4), //756, distance=15.52 (-15,-4), //757, distance=15.52 (-4,-15), //758, distance=15.52 (4,-15), //759, distance=15.52 (15,-4), //760, distance=15.52 (12,10), //761, distance=15.62 (10,12), //762, distance=15.62 (-10,12), //763, distance=15.62 (-12,10), //764, distance=15.62 (-12,-10), //765, distance=15.62 (-10,-12), //766, distance=15.62 (10,-12), //767, distance=15.62 (12,-10), //768, distance=15.62 (14,7), //769, distance=15.65 (7,14), //770, distance=15.65 (-7,14), //771, distance=15.65 (-14,7), //772, distance=15.65 (-14,-7), //773, distance=15.65 (-7,-14), //774, distance=15.65 (7,-14), //775, distance=15.65 (14,-7), //776, distance=15.65 (13,9), //777, distance=15.81 (9,13), //778, distance=15.81 (-9,13), //779, distance=15.81 (-13,9), //780, distance=15.81 (-13,-9), //781, distance=15.81 (-9,-13), //782, distance=15.81 (9,-13), //783, distance=15.81 (13,-9), //784, distance=15.81 (15,5), //785, distance=15.81 (5,15), //786, distance=15.81 (-5,15), //787, distance=15.81 (-15,5), //788, distance=15.81 (-15,-5), //789, distance=15.81 (-5,-15), //790, distance=15.81 (5,-15), //791, distance=15.81 (15,-5), //792, distance=15.81 (14,8), //793, distance=16.12 (8,14), //794, distance=16.12 (-8,14), //795, distance=16.12 (-14,8), //796, distance=16.12 (-14,-8), //797, distance=16.12 (-8,-14), //798, distance=16.12 (8,-14), //799, distance=16.12 (14,-8), //800, distance=16.12 (16,0), //801, distance=16 (0,16), //802, distance=16 (-16,0), //803, distance=16 (0,-16), //804, distance=16 (16,1), //805, distance=16.03 (1,16), //806, distance=16.03 (-1,16), //807, distance=16.03 (-16,1), //808, distance=16.03 (-16,-1), //809, distance=16.03 (-1,-16), //810, distance=16.03 (1,-16), //811, distance=16.03 (16,-1), //812, distance=16.03 (15,6), //813, distance=16.16 (6,15), //814, distance=16.16 (-6,15), //815, distance=16.16 (-15,6), //816, distance=16.16 (-15,-6), //817, distance=16.16 (-6,-15), //818, distance=16.16 (6,-15), //819, distance=16.16 (15,-6), //820, distance=16.16 (16,2), //821, distance=16.12 (12,11), //822, distance=16.28 (11,12), //823, distance=16.28 (2,16), //824, distance=16.12 (-2,16), //825, distance=16.12 (-11,12), //826, distance=16.28 (-12,11), //827, distance=16.28 (-16,2), //828, distance=16.12 (-16,-2), //829, distance=16.12 (-12,-11), //830, distance=16.28 (-11,-12), //831, distance=16.28 (-2,-16), //832, distance=16.12 (2,-16), //833, distance=16.12 (11,-12), //834, distance=16.28 (12,-11), //835, distance=16.28 (16,-2), //836, distance=16.12 (16,3), //837, distance=16.28 (3,16), //838, distance=16.28 (-3,16), //839, distance=16.28 (-16,3), //840, distance=16.28 (-16,-3), //841, distance=16.28 (-3,-16), //842, distance=16.28 (3,-16), //843, distance=16.28 (16,-3), //844, distance=16.28 (13,10), //845, distance=16.4 (10,13), //846, distance=16.4 (-10,13), //847, distance=16.4 (-13,10), //848, distance=16.4 (-13,-10), //849, distance=16.4 (-10,-13), //850, distance=16.4 (10,-13), //851, distance=16.4 (13,-10), //852, distance=16.4 (16,4), //853, distance=16.49 (15,7), //854, distance=16.55 (7,15), //855, distance=16.55 (4,16), //856, distance=16.49 (-4,16), //857, distance=16.49 (-7,15), //858, distance=16.55 (-15,7), //859, distance=16.55 (-16,4), //860, distance=16.49 (-16,-4), //861, distance=16.49 (-15,-7), //862, distance=16.55 (-7,-15), //863, distance=16.55 (-4,-16), //864, distance=16.49 (4,-16), //865, distance=16.49 (7,-15), //866, distance=16.55 (15,-7), //867, distance=16.55 (16,-4), //868, distance=16.49 (14,9), //869, distance=16.64 (9,14), //870, distance=16.64 (-9,14), //871, distance=16.64 (-14,9), //872, distance=16.64 (-14,-9), //873, distance=16.64 (-9,-14), //874, distance=16.64 (9,-14), //875, distance=16.64 (14,-9), //876, distance=16.64 (16,5), //877, distance=16.76 (5,16), //878, distance=16.76 (-5,16), //879, distance=16.76 (-16,5), //880, distance=16.76 (-16,-5), //881, distance=16.76 (-5,-16), //882, distance=16.76 (5,-16), //883, distance=16.76 (16,-5), //884, distance=16.76 (12,12), //885, distance=16.97 (-12,12), //886, distance=16.97 (-12,-12), //887, distance=16.97 (12,-12), //888, distance=16.97 (15,8), //889, distance=17 (13,11), //890, distance=17.03 (11,13), //891, distance=17.03 (8,15), //892, distance=17 (-8,15), //893, distance=17 (-11,13), //894, distance=17.03 (-13,11), //895, distance=17.03 (-15,8), //896, distance=17 (-15,-8), //897, distance=17 (-13,-11), //898, distance=17.03 (-11,-13), //899, distance=17.03 (-8,-15), //900, distance=17 (8,-15), //901, distance=17 (11,-13), //902, distance=17.03 (13,-11), //903, distance=17.03 (15,-8), //904, distance=17 (16,6), //905, distance=17.09 (6,16), //906, distance=17.09 (-6,16), //907, distance=17.09 (-16,6), //908, distance=17.09 (-16,-6), //909, distance=17.09 (-6,-16), //910, distance=17.09 (6,-16), //911, distance=17.09 (16,-6), //912, distance=17.09 (17,0), //913, distance=17 (17,1), //914, distance=17.03 (1,17), //915, distance=17.03 (0,17), //916, distance=17 (-1,17), //917, distance=17.03 (-17,1), //918, distance=17.03 (-17,0), //919, distance=17 (-17,-1), //920, distance=17.03 (-1,-17), //921, distance=17.03 (0,-17), //922, distance=17 (1,-17), //923, distance=17.03 (17,-1), //924, distance=17.03 (14,10), //925, distance=17.2 (10,14), //926, distance=17.2 (-10,14), //927, distance=17.2 (-14,10), //928, distance=17.2 (-14,-10), //929, distance=17.2 (-10,-14), //930, distance=17.2 (10,-14), //931, distance=17.2 (14,-10), //932, distance=17.2 (17,2), //933, distance=17.12 (2,17), //934, distance=17.12 (-2,17), //935, distance=17.12 (-17,2), //936, distance=17.12 (-17,-2), //937, distance=17.12 (-2,-17), //938, distance=17.12 (2,-17), //939, distance=17.12 (17,-2), //940, distance=17.12 (17,3), //941, distance=17.26 (3,17), //942, distance=17.26 (-3,17), //943, distance=17.26 (-17,3), //944, distance=17.26 (-17,-3), //945, distance=17.26 (-3,-17), //946, distance=17.26 (3,-17), //947, distance=17.26 (17,-3), //948, distance=17.26 (16,7), //949, distance=17.46 (15,9), //950, distance=17.49 (9,15), //951, distance=17.49 (7,16), //952, distance=17.46 (-7,16), //953, distance=17.46 (-9,15), //954, distance=17.49 (-15,9), //955, distance=17.49 (-16,7), //956, distance=17.46 (-16,-7), //957, distance=17.46 (-15,-9), //958, distance=17.49 (-9,-15), //959, distance=17.49 (-7,-16), //960, distance=17.46 (7,-16), //961, distance=17.46 (9,-15), //962, distance=17.49 (15,-9), //963, distance=17.49 (16,-7), //964, distance=17.46 (17,4), //965, distance=17.46 (4,17), //966, distance=17.46 (-4,17), //967, distance=17.46 (-17,4), //968, distance=17.46 (-17,-4), //969, distance=17.46 (-4,-17), //970, distance=17.46 (4,-17), //971, distance=17.46 (17,-4), //972, distance=17.46 (13,12), //973, distance=17.69 (12,13), //974, distance=17.69 (-12,13), //975, distance=17.69 (-13,12), //976, distance=17.69 (-13,-12), //977, distance=17.69 (-12,-13), //978, distance=17.69 (12,-13), //979, distance=17.69 (13,-12), //980, distance=17.69 (17,5), //981, distance=17.72 (14,11), //982, distance=17.8 (11,14), //983, distance=17.8 (5,17), //984, distance=17.72 (-5,17), //985, distance=17.72 (-11,14), //986, distance=17.8 (-14,11), //987, distance=17.8 (-17,5), //988, distance=17.72 (-17,-5), //989, distance=17.72 (-14,-11), //990, distance=17.8 (-11,-14), //991, distance=17.8 (-5,-17), //992, distance=17.72 (5,-17), //993, distance=17.72 (11,-14), //994, distance=17.8 (14,-11), //995, distance=17.8 (17,-5), //996, distance=17.72 (16,8), //997, distance=17.89 (8,16), //998, distance=17.89 (-8,16), //999, distance=17.89 (-16,8), //1000, distance=17.89 (-16,-8), //1001, distance=17.89 (-8,-16), //1002, distance=17.89 (8,-16), //1003, distance=17.89 (16,-8), //1004, distance=17.89 (15,10), //1005, distance=18.03 (10,15), //1006, distance=18.03 (-10,15), //1007, distance=18.03 (-15,10), //1008, distance=18.03 (-15,-10), //1009, distance=18.03 (-10,-15), //1010, distance=18.03 (10,-15), //1011, distance=18.03 (15,-10), //1012, distance=18.03 (17,6), //1013, distance=18.03 (6,17), //1014, distance=18.03 (-6,17), //1015, distance=18.03 (-17,6), //1016, distance=18.03 (-17,-6), //1017, distance=18.03 (-6,-17), //1018, distance=18.03 (6,-17), //1019, distance=18.03 (17,-6), //1020, distance=18.03 (18,0), //1021, distance=18 (0,18), //1022, distance=18 (-18,0), //1023, distance=18 (0,-18), //1024, distance=18 (18,1), //1025, distance=18.03 (1,18), //1026, distance=18.03 (-1,18), //1027, distance=18.03 (-18,1), //1028, distance=18.03 (-18,-1), //1029, distance=18.03 (-1,-18), //1030, distance=18.03 (1,-18), //1031, distance=18.03 (18,-1), //1032, distance=18.03 (18,2), //1033, distance=18.11 (2,18), //1034, distance=18.11 (-2,18), //1035, distance=18.11 (-18,2), //1036, distance=18.11 (-18,-2), //1037, distance=18.11 (-2,-18), //1038, distance=18.11 (2,-18), //1039, distance=18.11 (18,-2), //1040, distance=18.11 (13,13), //1041, distance=18.38 (-13,13), //1042, distance=18.38 (-13,-13), //1043, distance=18.38 (13,-13), //1044, distance=18.38 (18,3), //1045, distance=18.25 (16,9), //1046, distance=18.36 (9,16), //1047, distance=18.36 (3,18), //1048, distance=18.25 (-3,18), //1049, distance=18.25 (-9,16), //1050, distance=18.36 (-16,9), //1051, distance=18.36 (-18,3), //1052, distance=18.25 (-18,-3), //1053, distance=18.25 (-16,-9), //1054, distance=18.36 (-9,-16), //1055, distance=18.36 (-3,-18), //1056, distance=18.25 (3,-18), //1057, distance=18.25 (9,-16), //1058, distance=18.36 (16,-9), //1059, distance=18.36 (18,-3), //1060, distance=18.25 (17,7), //1061, distance=18.38 (7,17), //1062, distance=18.38 (-7,17), //1063, distance=18.38 (-17,7), //1064, distance=18.38 (-17,-7), //1065, distance=18.38 (-7,-17), //1066, distance=18.38 (7,-17), //1067, distance=18.38 (17,-7), //1068, distance=18.38 (14,12), //1069, distance=18.44 (12,14), //1070, distance=18.44 (-12,14), //1071, distance=18.44 (-14,12), //1072, distance=18.44 (-14,-12), //1073, distance=18.44 (-12,-14), //1074, distance=18.44 (12,-14), //1075, distance=18.44 (14,-12), //1076, distance=18.44 (18,4), //1077, distance=18.44 (4,18), //1078, distance=18.44 (-4,18), //1079, distance=18.44 (-18,4), //1080, distance=18.44 (-18,-4), //1081, distance=18.44 (-4,-18), //1082, distance=18.44 (4,-18), //1083, distance=18.44 (18,-4), //1084, distance=18.44 (15,11), //1085, distance=18.6 (11,15), //1086, distance=18.6 (-11,15), //1087, distance=18.6 (-15,11), //1088, distance=18.6 (-15,-11), //1089, distance=18.6 (-11,-15), //1090, distance=18.6 (11,-15), //1091, distance=18.6 (15,-11), //1092, distance=18.6 (18,5), //1093, distance=18.68 (5,18), //1094, distance=18.68 (-5,18), //1095, distance=18.68 (-18,5), //1096, distance=18.68 (-18,-5), //1097, distance=18.68 (-5,-18), //1098, distance=18.68 (5,-18), //1099, distance=18.68 (18,-5), //1100, distance=18.68 (17,8), //1101, distance=18.79 (8,17), //1102, distance=18.79 (-8,17), //1103, distance=18.79 (-17,8), //1104, distance=18.79 (-17,-8), //1105, distance=18.79 (-8,-17), //1106, distance=18.79 (8,-17), //1107, distance=18.79 (17,-8), //1108, distance=18.79 (16,10), //1109, distance=18.87 (10,16), //1110, distance=18.87 (-10,16), //1111, distance=18.87 (-16,10), //1112, distance=18.87 (-16,-10), //1113, distance=18.87 (-10,-16), //1114, distance=18.87 (10,-16), //1115, distance=18.87 (16,-10), //1116, distance=18.87 (18,6), //1117, distance=18.97 (6,18), //1118, distance=18.97 (-6,18), //1119, distance=18.97 (-18,6), //1120, distance=18.97 (-18,-6), //1121, distance=18.97 (-6,-18), //1122, distance=18.97 (6,-18), //1123, distance=18.97 (18,-6), //1124, distance=18.97 (14,13), //1125, distance=19.1 (13,14), //1126, distance=19.1 (-13,14), //1127, distance=19.1 (-14,13), //1128, distance=19.1 (-14,-13), //1129, distance=19.1 (-13,-14), //1130, distance=19.1 (13,-14), //1131, distance=19.1 (14,-13), //1132, distance=19.1 (19,0), //1133, distance=19 (19,1), //1134, distance=19.03 (1,19), //1135, distance=19.03 (0,19), //1136, distance=19 (-1,19), //1137, distance=19.03 (-19,1), //1138, distance=19.03 (-19,0), //1139, distance=19 (-19,-1), //1140, distance=19.03 (-1,-19), //1141, distance=19.03 (0,-19), //1142, distance=19 (1,-19), //1143, distance=19.03 (19,-1), //1144, distance=19.03 (15,12), //1145, distance=19.21 (12,15), //1146, distance=19.21 (-12,15), //1147, distance=19.21 (-15,12), //1148, distance=19.21 (-15,-12), //1149, distance=19.21 (-12,-15), //1150, distance=19.21 (12,-15), //1151, distance=19.21 (15,-12), //1152, distance=19.21 (19,2), //1153, distance=19.1 (17,9), //1154, distance=19.24 (9,17), //1155, distance=19.24 (2,19), //1156, distance=19.1 (-2,19), //1157, distance=19.1 (-9,17), //1158, distance=19.24 (-17,9), //1159, distance=19.24 (-19,2), //1160, distance=19.1 (-19,-2), //1161, distance=19.1 (-17,-9), //1162, distance=19.24 (-9,-17), //1163, distance=19.24 (-2,-19), //1164, distance=19.1 (2,-19), //1165, distance=19.1 (9,-17), //1166, distance=19.24 (17,-9), //1167, distance=19.24 (19,-2), //1168, distance=19.1 (19,3), //1169, distance=19.24 (3,19), //1170, distance=19.24 (-3,19), //1171, distance=19.24 (-19,3), //1172, distance=19.24 (-19,-3), //1173, distance=19.24 (-3,-19), //1174, distance=19.24 (3,-19), //1175, distance=19.24 (19,-3), //1176, distance=19.24 (18,7), //1177, distance=19.31 (7,18), //1178, distance=19.31 (-7,18), //1179, distance=19.31 (-18,7), //1180, distance=19.31 (-18,-7), //1181, distance=19.31 (-7,-18), //1182, distance=19.31 (7,-18), //1183, distance=19.31 (18,-7), //1184, distance=19.31 (16,11), //1185, distance=19.42 (11,16), //1186, distance=19.42 (-11,16), //1187, distance=19.42 (-16,11), //1188, distance=19.42 (-16,-11), //1189, distance=19.42 (-11,-16), //1190, distance=19.42 (11,-16), //1191, distance=19.42 (16,-11), //1192, distance=19.42 (19,4), //1193, distance=19.42 (4,19), //1194, distance=19.42 (-4,19), //1195, distance=19.42 (-19,4), //1196, distance=19.42 (-19,-4), //1197, distance=19.42 (-4,-19), //1198, distance=19.42 (4,-19), //1199, distance=19.42 (19,-4), //1200, distance=19.42 (18,8), //1201, distance=19.7 (8,18), //1202, distance=19.7 (-8,18), //1203, distance=19.7 (-18,8), //1204, distance=19.7 (-18,-8), //1205, distance=19.7 (-8,-18), //1206, distance=19.7 (8,-18), //1207, distance=19.7 (18,-8), //1208, distance=19.7 (19,5), //1209, distance=19.65 (5,19), //1210, distance=19.65 (-5,19), //1211, distance=19.65 (-19,5), //1212, distance=19.65 (-19,-5), //1213, distance=19.65 (-5,-19), //1214, distance=19.65 (5,-19), //1215, distance=19.65 (19,-5), //1216, distance=19.65 (17,10), //1217, distance=19.72 (10,17), //1218, distance=19.72 (-10,17), //1219, distance=19.72 (-17,10), //1220, distance=19.72 (-17,-10), //1221, distance=19.72 (-10,-17), //1222, distance=19.72 (10,-17), //1223, distance=19.72 (17,-10), //1224, distance=19.72 (14,14), //1225, distance=19.8 (-14,14), //1226, distance=19.8 (-14,-14), //1227, distance=19.8 (14,-14), //1228, distance=19.8 (15,13), //1229, distance=19.85 (13,15), //1230, distance=19.85 (-13,15), //1231, distance=19.85 (-15,13), //1232, distance=19.85 (-15,-13), //1233, distance=19.85 (-13,-15), //1234, distance=19.85 (13,-15), //1235, distance=19.85 (15,-13), //1236, distance=19.85 (19,6), //1237, distance=19.92 (16,12), //1238, distance=20 (12,16), //1239, distance=20 (6,19), //1240, distance=19.92 (-6,19), //1241, distance=19.92 (-12,16), //1242, distance=20 (-16,12), //1243, distance=20 (-19,6), //1244, distance=19.92 (-19,-6), //1245, distance=19.92 (-16,-12), //1246, distance=20 (-12,-16), //1247, distance=20 (-6,-19), //1248, distance=19.92 (6,-19), //1249, distance=19.92 (12,-16), //1250, distance=20 (16,-12), //1251, distance=20 (19,-6), //1252, distance=19.92 (18,9), //1253, distance=20.12 (9,18), //1254, distance=20.12 (-9,18), //1255, distance=20.12 (-18,9), //1256, distance=20.12 (-18,-9), //1257, distance=20.12 (-9,-18), //1258, distance=20.12 (9,-18), //1259, distance=20.12 (18,-9), //1260, distance=20.12 (20,0), //1261, distance=20 (0,20), //1262, distance=20 (-20,0), //1263, distance=20 (0,-20), //1264, distance=20 (20,1), //1265, distance=20.02 (1,20), //1266, distance=20.02 (-1,20), //1267, distance=20.02 (-20,1), //1268, distance=20.02 (-20,-1), //1269, distance=20.02 (-1,-20), //1270, distance=20.02 (1,-20), //1271, distance=20.02 (20,-1), //1272, distance=20.02 (20,2), //1273, distance=20.1 (2,20), //1274, distance=20.1 (-2,20), //1275, distance=20.1 (-20,2), //1276, distance=20.1 (-20,-2), //1277, distance=20.1 (-2,-20), //1278, distance=20.1 (2,-20), //1279, distance=20.1 (20,-2), //1280, distance=20.1 (17,11), //1281, distance=20.25 (11,17), //1282, distance=20.25 (-11,17), //1283, distance=20.25 (-17,11), //1284, distance=20.25 (-17,-11), //1285, distance=20.25 (-11,-17), //1286, distance=20.25 (11,-17), //1287, distance=20.25 (17,-11), //1288, distance=20.25 (19,7), //1289, distance=20.25 (7,19), //1290, distance=20.25 (-7,19), //1291, distance=20.25 (-19,7), //1292, distance=20.25 (-19,-7), //1293, distance=20.25 (-7,-19), //1294, distance=20.25 (7,-19), //1295, distance=20.25 (19,-7), //1296, distance=20.25 (20,3), //1297, distance=20.22 (3,20), //1298, distance=20.22 (-3,20), //1299, distance=20.22 (-20,3), //1300, distance=20.22 (-20,-3), //1301, distance=20.22 (-3,-20), //1302, distance=20.22 (3,-20), //1303, distance=20.22 (20,-3), //1304, distance=20.22 (20,4), //1305, distance=20.4 (4,20), //1306, distance=20.4 (-4,20), //1307, distance=20.4 (-20,4), //1308, distance=20.4 (-20,-4), //1309, distance=20.4 (-4,-20), //1310, distance=20.4 (4,-20), //1311, distance=20.4 (20,-4), //1312, distance=20.4 (15,14), //1313, distance=20.52 (14,15), //1314, distance=20.52 (-14,15), //1315, distance=20.52 (-15,14), //1316, distance=20.52 (-15,-14), //1317, distance=20.52 (-14,-15), //1318, distance=20.52 (14,-15), //1319, distance=20.52 (15,-14), //1320, distance=20.52 (18,10), //1321, distance=20.59 (16,13), //1322, distance=20.62 (13,16), //1323, distance=20.62 (10,18), //1324, distance=20.59 (-10,18), //1325, distance=20.59 (-13,16), //1326, distance=20.62 (-16,13), //1327, distance=20.62 (-18,10), //1328, distance=20.59 (-18,-10), //1329, distance=20.59 (-16,-13), //1330, distance=20.62 (-13,-16), //1331, distance=20.62 (-10,-18), //1332, distance=20.59 (10,-18), //1333, distance=20.59 (13,-16), //1334, distance=20.62 (16,-13), //1335, distance=20.62 (18,-10), //1336, distance=20.59 (19,8), //1337, distance=20.62 (8,19), //1338, distance=20.62 (-8,19), //1339, distance=20.62 (-19,8), //1340, distance=20.62 (-19,-8), //1341, distance=20.62 (-8,-19), //1342, distance=20.62 (8,-19), //1343, distance=20.62 (19,-8)); //1344, distance=20.62 implementation {uses unit_stack; procedure create_disk;//draw disk in x,y starting from center var spiral : array[-30..30,-30..30] of integer; x,x2,y2,y,i,j,counter : integer; begin for i:=-30 to 30 do for j:=-30 to 30 do spiral[i,j]:=-1;//mark as empthy counter:=0; for j:=0 to 2000 do //distance for i:=0 to 3600 do//angle begin x:=round((j/100)*cos(2*pi*i/3600)); y:=round((j/100)*sin(2*pi*i/3600)); if spiral[x,y]<0 then begin spiral[x,y]:=counter; //mark as used memo2_message(char(9)+'('+inttostr(x)+','+inttostr(y)+'), //'+inttostr(counter)+', distance='+floattostrF( sqrt(sqr(x)+sqr(y)),ffgeneral,4,2));//use spreadsheet to make array inc(counter); end; end; end;} end. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������astap_2024.05.01.orig/readme.txt��������������������������������������������������������������������0000644�0001751�0001751�00000001177�14614535560�015503� 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_2024.05.01.orig/astap_cursor.res��������������������������������������������������������������0000644�0001751�0001751�00000003270�14614535560�016721� 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_2024.05.01.orig/unit_download.pas�������������������������������������������������������������0000644�0001751�0001751�00000003114�14614535560�017051� 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. ����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������